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 1o0xMm-0004qv-IP for pgsql-hackers@arkaria.postgresql.org; Tue, 14 Jun 2022 03:37:21 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1o0xMk-0005XK-RE for pgsql-hackers@arkaria.postgresql.org; Tue, 14 Jun 2022 03:37:18 +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 1o0xMj-0005XB-LB for pgsql-hackers@lists.postgresql.org; Tue, 14 Jun 2022 03:37:18 +0000 Received: from esa2.fujitsucc.c3s2.iphmx.com ([68.232.152.246]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1o0xMe-0000pu-QW for pgsql-hackers@lists.postgresql.org; Tue, 14 Jun 2022 03:37:16 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=fujitsu.com; i=@fujitsu.com; q=dns/txt; s=fj1; t=1655177833; x=1686713833; h=from:to:cc:subject:date:message-id:references: in-reply-to:mime-version; bh=qBrWK+0Ml/v5oisCisn2Ow/5/3rR/oYZj/1s8i2nQVA=; b=WARTv0X7ox+joIau7zBCp2vcUUmONrKKQGxi+Qs+uIi4evX+QTSjk6qg LQHmpuDA+VomLd6CDzqWWfeQJoSH+8IYTHjmILhNPoF4ifQRtXIqJT2Nd lC0EuJPJ+9zIeCHuH5SuB6lgOKbtSUEinrABvRwrIrbGlGvT6ywpOEq7F SlIgB7UVzCOA7Fk7MQ3/7BVz4qCyv0sCxf0Y6kDOizStxWPaal4O2F2i/ 2F3d1TGf8TCdUpnEFWo2rkqcdYTNp7recWtH8U54R5HfxIQR1NMNnAs1U q84THq4qdiA0wiIlYFJdCGLUvesngP4CyciDK2lCrU3sTCTPPSGChf32t A==; X-IronPort-AV: E=McAfee;i="6400,9594,10377"; a="66305528" X-IronPort-AV: E=Sophos;i="5.91,299,1647270000"; d="scan'208,223";a="66305528" Received: from mail-tycjpn01lp2172.outbound.protection.outlook.com (HELO JPN01-TYC-obe.outbound.protection.outlook.com) ([104.47.23.172]) by ob1.fujitsucc.c3s2.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 14 Jun 2022 12:37:08 +0900 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=NYOPCU0PBxxlqZNYA0lBo76Oj9WaBPZ/WRYQemPuPnOwXuZBTGdmZW3rcZenTLw1EktgqrmDFvg70lI05anHKQpJBmPT7KA7z6lCrccqfVWeQjCuyXgr+WT1ZG0sYJ8M1dUgdb7i4q9i++UVnvF7LRRseOVLN5lOHP8Y0eUbks/027CBp/znl+JbU4LmtqI31SS5rJfQnWto1BeDSVBkdSq1FWCCOOnXyCJrC39J36d7BgCTAbDjbHz7ZbiYapPTXlRKy/+tgqnI/o2Z70Ws+vIB4oFFJ1NlnccGAdTTKS+cmfn8ofVoedWMSLp6oEKtfHClpgGRAFALDTTfLehyng== 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=wF3qLRD0QgvR1T1tm+9iX8U2BFdbIyx0cgR6sqMc2GI=; b=UtmkhbPtY4cFT3B3gtovaDj4I4epuifwUT5+a5m3jyFfBj4B7hUEdOBl4xkcTsx+V5etKLXhiserAyDeEUGSIc7xXtArVyUUHX2n4gdIdXPHNnm/JoUBcInoSCmcpSyvpm27CotAuQagdcrWHxpSVKsUFLr8qkS3MF5cC1fYbFgYynJ0SX3SRlCP+MFmn6wNXZ3GiDHSAh/zEkXQPBf18/q6PY7whknsHy6ej9gkzD1qBUSYOKSaJZ1i3MoZ8ZWReaZe9Snwk015VF8NS1K4hKQMVVIqMJILVprF6csQ16RFXu198fQ6yp87qYVgbQskgBXsDLDTlwhNBnMnou6bwA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=fujitsu.com; dmarc=pass action=none header.from=fujitsu.com; dkim=pass header.d=fujitsu.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fujitsu.onmicrosoft.com; s=selector2-fujitsu-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=wF3qLRD0QgvR1T1tm+9iX8U2BFdbIyx0cgR6sqMc2GI=; b=ByhzhrFe17PgnarpCIRx6HWzs+P1Nff2KsihNxFKgmJjoIVw0w22uczN8YlNqEYj0QVrQpEJvcrfi7o7Qn7umX0QQ3OLa753kSa00B4eyGtVIJACcSkqEgGj+0mTXU1YTEME6sd6SkesSqZ87tPZ8C55AokqC2WZEsQQjs8O4KM= Received: from OS3PR01MB6275.jpnprd01.prod.outlook.com (2603:1096:604:f1::8) by OSZPR01MB8201.jpnprd01.prod.outlook.com (2603:1096:604:164::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5332.13; Tue, 14 Jun 2022 03:37:04 +0000 Received: from OS3PR01MB6275.jpnprd01.prod.outlook.com ([fe80::5d40:5c2d:b875:f813]) by OS3PR01MB6275.jpnprd01.prod.outlook.com ([fe80::5d40:5c2d:b875:f813%9]) with mapi id 15.20.5332.022; Tue, 14 Jun 2022 03:37:04 +0000 From: "wangw.fnst@fujitsu.com" To: Amit Kapila , Masahiko Sawada CC: Peter Smith , "shiy.fnst@fujitsu.com" , "houzj.fnst@fujitsu.com" , PostgreSQL Hackers Subject: RE: Perform streaming logical transactions by background workers and parallel apply Thread-Topic: Perform streaming logical transactions by background workers and parallel apply Thread-Index: AQHYSXX4/KZEbPJKjUy7J1pJS8eGYazlvxQAgAkRYICACBI2gIABs50AgAA5UwCAApvIgIAFAGuAgAXc1wCAADa7gIALO/aAgAsRZICAB606AIAS9tXQgAAv04CAAWQLgIABHxKAgAA3o4CAAd7v0IAJQDLggAkyO+A= Date: Tue, 14 Jun 2022 03:37:04 +0000 Message-ID: References: In-Reply-To: Accept-Language: ja-JP, en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=fujitsu.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 3c8f50df-b493-4a13-119b-08da4db72678 x-ms-traffictypediagnostic: OSZPR01MB8201:EE_ x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: JKjYm6P97lJTjK/N9+ec9eX1UwGypUgHcZulOpFQpXocPnCaJBcgyipybFy83E3yOBxmXSLDmOWIcA7QkjtOa2FOL3cdwh9urUZtSa/biea8NDsHLSig6rO5k9Z21WmrZ/iqolT3ZI8gDo81efw+86J5S6Mrf+d4c3rgIHpFx6us6JokC5qDVo6nwcHSBfERpKQNd4Dtmm+zy6H4DY64foHkOZ9g2LTaqE+VWWFMs20ZyOXIG4syjWnrl1Ze/ZXa+budUiXUOb2MuPEy6U0gN0wr+Jwsz6Z9CYK6JwstD8IDXlO7c8BRq+mevmTnTRIGdPSkV2faqvetZA585OVofIR9GJaBaLNzgTgfyJLqvgxkFauTtpHlJNTojkL0KtLEfM06APYLgvTkL5+UoIwz/c/rVYGvZqg4aNnW59wfhhJ2mqhWvuDydCe5PVpQ2oApx+FZTJvEvXBqJTw6Xp/o9fwT98b35GAG9nOzOZLXgWAjgynZYiuI7+mgahSZXzIg5bCCvTafNCldtD2XMOXE6T8LhkUgrUcb5ATvd2BlfydVRDCaK1mJQgj84Ik1z4fPPfQGrcORv5dmoSmPxDgW8baR8ulcfYa71H2iCPs4a2TPHQDpck/6GaHxa7eUjP+iJEg1VFziSVBhkXZm8D/xhRqqKkGeKfXaMhmFHQtPAZU7KtfQWxp1RV2moAoLLpQvV7USgSOEn6BLI3QauladGuROp+jtiQxtuxEkSsPU06rQqRr0wuCv+sL6jrrYlQKHdGBE/BkmtAoZWJNRd9rJXMyTChm62o2xefBwDpj0WtgyFrAgrHCCLARS1PYOQvkm9q2u4M8xyufgs+Hf23hSXA== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:OS3PR01MB6275.jpnprd01.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230016)(4636009)(366004)(8676002)(122000001)(38100700002)(85182001)(6506007)(5660300002)(52536014)(86362001)(66446008)(64756008)(26005)(66556008)(66946007)(76116006)(110136005)(9686003)(316002)(66476007)(8936002)(54906003)(38070700005)(83380400001)(99936003)(71200400001)(966005)(186003)(508600001)(53546011)(82960400001)(2906002)(33656002)(45080400002)(55016003)(7696005)(4326008);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?UEhRbmVVcUpoelB3c1ZkU2dHSlpjVERrV1pGKzQzUjFaOFp4VUJPN3NvYzA4?= =?utf-8?B?a1d4ak4wWFFpdDFIUjB0a2l2SzNvaEExM1VXQmpMS1czaXFVR3dsWUlrcmk4?= =?utf-8?B?cEdVWDVrd3AzVGdvajVPYnIwakhJZGFTdys5S2wzdExJOUlycDVDK3VDanhW?= =?utf-8?B?a212THVwcDJjOEIyekNuSVdQbjdvRllyc0FyZ0piRndFVXdCL1FSekFMYXpE?= =?utf-8?B?MWRiNUsxZ043SnZpRGhmTUt3Y0thdEhJenNRZHplYkR4TDczTGRHNDFISjY1?= =?utf-8?B?Y0ZXaE01eW1TUkpTdm1QbmswYkNCaHBxektiWTJHSWFZY3d2Ukc2c2pwcDdS?= =?utf-8?B?Q2ZWaTVRSUVIaE5pbnpkKzR5cmpvTGtqTWlvanpIMFBKOWlWaUZQUmN2SFlW?= =?utf-8?B?dklUcDJpMXhlWkhIbmlHbXVEY01ZOWw2V3hMYWd2d1Q2QW9CWjFJQjBpcVlP?= =?utf-8?B?WUMwcHhPK1JkNzkxMjU2d1JoYWtOdEhVMEhPcGRQYkxselM4N3dINmpYY2Ja?= =?utf-8?B?cGZHZ3RzYk9oVndodVVWaFoyY1crSXAyNnhIalFGTTRndEo3K3NLOXZvSVFk?= =?utf-8?B?dWtxNjR4aDZBcHJ2ckVKeGg3ZWJKeWo5VU93QXN3NGpGNWRBemdVcDFudTU5?= =?utf-8?B?enhlQjl1T2pNMnJlZVdWMkRkSjFpaUd4R3hkK1lTMEdpTUVNcE95dTFRKzFi?= =?utf-8?B?M3JvcGdEK3BsajdZREQyemw4Q3N2VkRQenV6V3RIY2trdXEzUGdlTVRYa2Jw?= =?utf-8?B?YkxZeU9xV25ML2wrc2N6dVJsVmEwMHorc3Z5NnFIL2gyaXQyV1RJRGtRRGw5?= =?utf-8?B?YmozaWhiV25KWDBVdDgvTUhGWXIyTG1nYlpRSHpPeFZiMEVYUWg5dTF6WXFQ?= =?utf-8?B?WHNCYS9CS3NsZWpYRkxkSjAya1JLOXRCc0dBWng3TUJZUTVmamNGK0piTVkw?= =?utf-8?B?eFh1YnI0eTNSUFQxWFRsR3B5akxvd2RXVTBZNDdxaW1EZ2d0MzJpeEJzZytO?= =?utf-8?B?TVQvZDViSG5VTjhaSUNlb0RHd3oxSm9uRVB4NXZDREVKZStsejFCdlVvMTFs?= =?utf-8?B?REJ5Y2NlRGRJMytDT0JiSXpKM2N0ZkN2cXJNaDZjYjlUNkZyQWFKSkk0ZWps?= =?utf-8?B?bmM2SlgxWW9kMmI1Z3p2TlltVUFoTGFJZmprTGgwV2YrSWU3dHk4V1ZVeURD?= =?utf-8?B?d0FvRkEwbUdUS3ZERVdVTW84UXdVMkF5R1BkOHYweVF0Mjl0a3lRbzVMSXBh?= =?utf-8?B?M2hPbi9NZWE5eS9xS1pWU1JHUHlJWHJpS2lpMUluMk9zMDVBdlNwQ3FiUmxT?= =?utf-8?B?VnByTmhlWUtWaU92SnJrMm5GM0ZNcUZLSlhZeEY3dDJnM0ZZYTFjZkZ2QlFo?= =?utf-8?B?Y09LQ2VidGRnQ3ZOVXUzTWJmMmxOaFlzMVE1ak9NdEFQR0JFL21RRG9STC9k?= =?utf-8?B?aDJRUDFUR0ZtZUFJL2R0Uy9hUGhuUFhxNmovQ0crY1EwaGtDeUFiVkQ4aFF1?= =?utf-8?B?V1BzVHhVbmJDMzE4emdLamVLYTN4b3VBd3Bud1RiMXBRUVdVUGY4ZitMejMy?= =?utf-8?B?Y091eCtSOVBHNTZ6NjhnUkJkbmh0Nlg4cG93L05WUXl2WGY1NjI5MG5BZmRv?= =?utf-8?B?RnpmU0p5VTFEaWVlSXVqNWpiLzB2OGhDeTM5anVRUVdNWFN1NnBEdkkvcnZN?= =?utf-8?B?RUVxVzYxQmIvTjA0VUZUNzJkejd1ZkhnWUg1YjI1eDcyck5FMGNVRytTRlFo?= =?utf-8?B?Vkl0WDdDSkZaM3Eva2tIVlJjV1JhQThrSzF4M0VORkh2SWZMNUUrL09kL29r?= =?utf-8?B?anE4b1N4WUVjZjJ1MjZaMThjK3UwelBXRDhqOUFmK2VYSzJaVmlDT0EwNUtX?= =?utf-8?B?aWtYRm9jb0tlWmFmMEUvZWdQWU1CWTF5L0RYV2NJbG92U2wxOTRkcERaOUFT?= =?utf-8?B?VktIZ3c4UHdMVHFRd2kvTlo1b2tsS2FjT0k0a21OZGQzdEk0UUFKc0dqYVYy?= =?utf-8?B?ci9DbVl5eXRDQ2hzdHNaYXVaMkZqdE5uSFhwdnI5OU5DZkY4dXdHMVBDOERX?= =?utf-8?B?dUFJK1hVZlU4NmtCeTluOS85QVU2MzlOWkdhVU15ZGhxWUdldHhWVTJXNSt3?= =?utf-8?B?RVBMQ20rNndTdmFFalVETVJjK0g5cDJrQURPeXUrNHY3c3BQSzdsY0hMbXVs?= =?utf-8?B?RVB4b21xaWV4RHp4bXhKME1PSGNqMnNFaVpCd01OdXV4MTA5YXdsWWpuRnNt?= =?utf-8?B?eUdkK3ZERTRVeVc0eVV4NzNWWkxDSlhnUlZUR3RLbnZyNzMwWUlFWkpncTNC?= =?utf-8?B?SlJNK2VhOXNqVWZJd2pKdDIwbDNBVjVoYkltL2lKV3FDdFF3Zlk0dz09?= Content-Type: multipart/mixed; boundary="_006_OS3PR01MB62756BD9482EB6BB1CA4CD4D9EAA9OS3PR01MB6275jpnp_" MIME-Version: 1.0 X-OriginatorOrg: fujitsu.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: OS3PR01MB6275.jpnprd01.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3c8f50df-b493-4a13-119b-08da4db72678 X-MS-Exchange-CrossTenant-originalarrivaltime: 14 Jun 2022 03:37:04.5634 (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: X9sFdyXcwW5SGWN4aaPL89Pt91VgvnfBkdRfvTyd9G9Pgxiv8FSoh8Xwsou9LUPjF03l3NXc7p+WK60S9x2XkA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: OSZPR01MB8201 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_006_OS3PR01MB62756BD9482EB6BB1CA4CD4D9EAA9OS3PR01MB6275jpnp_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 T24gV2VkLCBKdW4gOCwgMjAyMiAzOjEzIFBNIEkgd3JvdGU6DQo+IEF0dGFjaCB0aGUgbmV3IHBh dGNoZXMuKG9ubHkgY2hhbmdlZCAwMDAxIGFuZCAwMDAzKQ0KDQpJIHRyaWVkIHRvIGltcHJvdmUg dGhlIHBhdGNoZXMgYnkgZm9sbG93aW5nIHBvaW50czoNCg0KMS4gSW5pdGlhbGl6ZSB2YXJpYWJs ZSBpbmNsdWRlX2Fib3J0X2xzbiB0byBmYWxzZS4gSXQgcmVwb3J0cyBhIHdhcm5pbmcgaW4NCmNm Ym90LiAoc2VlIHBhdGNoIHYxMC0wMDAxKQ0KQlRXLCBJIG1lcmdlZCB0aGUgcGF0Y2ggdGhhdCBh ZGRlZCB0aGUgbmV3IEdVQyAoc2VlIHY5LTAwMDQpIGludG8gcGF0Y2ggMDAwMS4NCg0KMi4gQmVj YXVzZSBvZiB0aGUgaW1wcm92ZW1lbnQgIzIgaW4gWzFdLCB0aGUgZm9yZWlnbiBrZXkgY291bGQg bm90IGJlIGRldGVjdGVkDQp3aGVuIGNoZWNraW5nIHRyaWdnZXIgZnVuY3Rpb24uIFNvIGFkZGVk IGFkZGl0aW9uYWwgY2hlY2tzIGZvciB0aGUgZm9yZWlnbiBrZXkuDQooc2VlIHBhdGNoIDAwMDQp DQoNCjMuIEFkZGluZyBhIGNoZWNrIGZvciB0aGUgcGFydGl0aW9uIHRhYmxlIHdoZW4gdHJ5aW5n IHRvIGFwcGx5IGNoYW5nZXMgaW4gdGhlDQphcHBseSBiYWNrZ3JvdW5kIHdvcmtlci4gKHNlZSBw YXRjaCAwMDA0KQ0KSW4gYWRkaXRpb25hbCwgdGhlIHBhcnRpdGlvbiBjYWNoZSBtYXAgb24gc3Vi c2NyaWJlciBoYXZlIHNldmVyYWwgYnVncyAoc2VlDQp0aHJlYWQgWzJdKS4gQmVjYXVzZSBwYXRj aCAwMDA0IGlzIGRldmVsb3BlZCBiYXNlZCBvbiB0aGUgcGF0Y2hlcyBpbiBbMl0sIHNvIEkNCm1l cmdlZCB0aGUgcGF0Y2hlcyh2NC0wMDAxfnY0LTAwMDMpIGluIFsyXSBpbnRvIGEgdGVtcG9yYXJ5 IHBhdGNoIDAwMDMgaGVyZS4NCkFmdGVyIHRoZSBwYXRjaGVzIGluIFsyXSBpcyBjb21taXR0ZWQs IEkgd2lsbCBkZWxldGUgcGF0Y2ggMDAwMyBhbmQgcmViYXNlDQpwYXRjaCAwMDA0Lg0KDQo0LiBJ bXByb3ZlIGNvbnN0cmFpbnQgY2hlY2tpbmcgaW4gYSBzZXBhcmF0ZSBwYXRjaCBhcyBzdWdnZXN0 ZWQgYnkgQW1pdC1zYW4gaW4NClszXSAjNi4oc2VlIHBhdGNoIDAwMDUpDQpJIGFkZGVkIGEgbmV3 IGZpZWxkICJib29sIHN1YnJldHJ5IiBpbiBjYXRhbG9nIHBnX3N1YnNjcmlwdGlvbi4gSSB1c2Ug dGhpcw0KZmllbGQgdG8gaW5kaWNhdGUgd2hldGhlciB0aGUgdHJhbnNhY3Rpb24gdGhhdCB3ZSBh cmUgZ29pbmcgdG8gcHJvY2VzcyBoYXMNCmZhaWxlZCBiZWZvcmUuDQpJZiBhcHBseSB3b3JrZXIv Ymd3b3JrZXIgd2FzIGV4aXQgd2l0aCBhbiBlcnJvciwgdGhpcyBmaWVsZCB3aWxsIGJlIHNldCB0 bw0KdHJ1ZTsgSWYgd2Ugc3VjY2Vzc2Z1bGx5IGFwcGx5IGEgdHJhbnNhY3Rpb24sIHRoaXMgZmll bGQgd2lsbCBiZSBzZXQgdG8gZmFsc2UuDQpJZiB3ZSByZXRyeSB0byBhcHBseSBhIHN0cmVhbWlu ZyB0cmFuc2FjdGlvbiwgd2hldGhlciB0aGUgdXNlciBzZXRzIHRoZQ0Kc3RyZWFtaW5nIG9wdGlv biB0byAib24iIG9yICJhcHBseSIsIHdlIHdpbGwgYXBwbHkgdGhlIHRyYW5zYWN0aW9uIGluIHRo ZSBhcHBseQ0Kd29ya2VyLg0KDQpBdHRhY2ggdGhlIG5ldyBwYXRjaGVzLg0KT25seSBjaGFuZ2Vk IHBhdGNoZXMgMDAwMSwgMDAwNCBhbmQgYWRkZWQgbmV3IHNlcGFyYXRlIHBhdGNoIDAwMDUuDQoN ClsxXSAtIGh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL21lc3NhZ2UtaWQvT1MzUFIwMU1CNjI3 NTIwOEEyRjhFRDgzMjcxMEY2NUUwOUVBNDklNDBPUzNQUjAxTUI2Mjc1LmpwbnByZDAxLnByb2Qu b3V0bG9vay5jb20NClsyXSAtIGh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL21lc3NhZ2UtaWQv ZmxhdC9PU1pQUjAxTUI2MzEwRjQ2Q0Q0MjVBOTY3RTRBRUY3MzZGREE0OSU0ME9TWlBSMDFNQjYz MTAuanBucHJkMDEucHJvZC5vdXRsb29rLmNvbQ0KWzNdIC0gaHR0cHM6Ly93d3cucG9zdGdyZXNx bC5vcmcvbWVzc2FnZS1pZC9DQUE0ZUsxSnQwOFNZYlJ0Xy1yYlNXTmclM0RYOS1tOCUyQlJkUDVQ b3NmblFneUYtejhia3hRJTQwbWFpbC5nbWFpbC5jb20NCg0KUmVnYXJkcywNCldhbmcgd2VpDQo= --_006_OS3PR01MB62756BD9482EB6BB1CA4CD4D9EAA9OS3PR01MB6275jpnp_ Content-Type: application/octet-stream; name="v10-0001-Perform-streaming-logical-transactions-by-backgr.patch" Content-Description: v10-0001-Perform-streaming-logical-transactions-by-backgr.patch Content-Disposition: attachment; filename="v10-0001-Perform-streaming-logical-transactions-by-backgr.patch"; size=100553; creation-date="Tue, 14 Jun 2022 03:35:00 GMT"; modification-date="Tue, 14 Jun 2022 03:37:00 GMT" Content-Transfer-Encoding: base64 RnJvbSA5ZjQzZjE5M2Y0YzI2NDY5M2IxYmJlYTVmYTIxODg4ODhmZjBhMWJlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiaG91emouZm5zdCIgPGhvdXpqLmZuc3RAY24uZnVqaXRzdS5j b20+CkRhdGU6IFdlZCwgMjAgQXByIDIwMjIgMTY6NDU6MDcgKzA4MDAKU3ViamVjdDogW1BBVENI IHYxMCAxLzVdIFBlcmZvcm0gc3RyZWFtaW5nIGxvZ2ljYWwgdHJhbnNhY3Rpb25zIGJ5IGJhY2tn cm91bmQKIHdvcmtlcnMKCkN1cnJlbnRseSwgZm9yIGxhcmdlIHRyYW5zYWN0aW9ucywgdGhlIHB1 Ymxpc2hlciBzZW5kcyB0aGUgZGF0YSBpbiBtdWx0aXBsZQpzdHJlYW1zIChjaGFuZ2VzIGRpdmlk ZWQgaW50byBjaHVua3MgZGVwZW5kaW5nIHVwb24gbG9naWNhbF9kZWNvZGluZ193b3JrX21lbSks CmFuZCB0aGVuIG9uIHRoZSBzdWJzY3JpYmVyLXNpZGUsIHRoZSBhcHBseSB3b3JrZXIgd3JpdGVz IHRoZSBjaGFuZ2VzIGludG8KdGVtcG9yYXJ5IGZpbGVzIGFuZCBvbmNlIGl0IHJlY2VpdmVzIHRo ZSBjb21taXQsIGl0IHJlYWRzIGZyb20gdGhlIGZpbGUgYW5kCmFwcGxpZXMgdGhlIGVudGlyZSB0 cmFuc2FjdGlvbi4gVG8gaW1wcm92ZSB0aGUgcGVyZm9ybWFuY2Ugb2Ygc3VjaAp0cmFuc2FjdGlv bnMsIHdlIGNhbiBpbnN0ZWFkIGFsbG93IHRoZW0gdG8gYmUgYXBwbGllZCB2aWEgYmFja2dyb3Vu ZCB3b3JrZXJzLgoKSW4gdGhpcyBhcHByb2FjaCwgd2UgYXNzaWduIGEgbmV3IGFwcGx5IGJhY2tn cm91bmQgd29ya2VyIChpZiBhdmFpbGFibGUpIGFzCnNvb24gYXMgdGhlIHhhY3QncyBmaXJzdCBz dHJlYW0gaXMgcmVjZWl2ZWQgYW5kIHRoZSBtYWluIGFwcGx5IHdvcmtlciB3aWxsIHNlbmQKY2hh bmdlcyB0byB0aGlzIG5ldyB3b3JrZXIgdmlhIHNoYXJlZCBtZW1vcnkuIFRoZSBhcHBseSBiYWNr Z3JvdW5kIHdvcmtlciB3aWxsCmRpcmVjdGx5IGFwcGx5IHRoZSBjaGFuZ2UgaW5zdGVhZCBvZiB3 cml0aW5nIGl0IHRvIHRlbXBvcmFyeSBmaWxlcy4gV2Uga2VlcAp0aGlzIHdvcmtlciBhc3NpZ25l ZCB0aWxsIHRoZSB0cmFuc2FjdGlvbiBjb21taXQgaXMgcmVjZWl2ZWQgYW5kIGFsc28gd2FpdCBm b3IKdGhlIHdvcmtlciB0byBmaW5pc2ggYXQgY29tbWl0LiBUaGlzIHByZXNlcnZlcyBjb21taXQg b3JkZXJpbmcgYW5kIGF2b2lkcwp3cml0aW5nIHRvIGFuZCByZWFkaW5nIGZyb20gZmlsZSBpbiBt b3N0IGNhc2VzLiBXZSBzdGlsbCBuZWVkIHRvIHNwaWxsIGlmIHRoZXJlCmlzIG5vIHdvcmtlciBh dmFpbGFibGUuIFdlIGFsc28gbmVlZCB0byBhbGxvdyBzdHJlYW1fc3RvcCB0byBjb21wbGV0ZSBi eSB0aGUKYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIgdG8gYXZvaWQgZGVhZGxvY2tzIGJlY2F1c2Ug VC0xJ3MgY3VycmVudCBzdHJlYW0gb2YKY2hhbmdlcyBjYW4gdXBkYXRlIHJvd3MgaW4gY29uZmxp Y3Rpbmcgb3JkZXIgd2l0aCBULTIncyBuZXh0IHN0cmVhbSBvZiBjaGFuZ2VzLgoKVGhpcyBwYXRj aCBhbHNvIGV4dGVuZHMgdGhlIFNVQlNDUklQVElPTiAnc3RyZWFtaW5nJyBvcHRpb24gc28gdGhh dCB0aGUgdXNlcgpjYW4gY29udHJvbCB3aGV0aGVyIHRvIGFwcGx5IHRoZSBzdHJlYW1pbmcgdHJh bnNhY3Rpb24gaW4gYW4gYXBwbHkgYmFja2dyb3VuZAp3b3JrZXIgb3Igc3BpbGwgdGhlIGNoYW5n ZSB0byBkaXNrLiBVc2VyIGNhbiBzZXQgdGhlIHN0cmVhbWluZyBvcHRpb24gdG8KJ29uL29mZics ICdhcHBseScuIEZvciBub3csICdhcHBseScgbWVhbnMgdGhlIHN0cmVhbWluZyB3aWxsIGJlIGFw cGxpZWQgdmlhIGEKYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIgaWYgYXZhaWxhYmxlLiAnb24nIG1l YW5zIHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gd2lsbApiZSBzcGlsbGVkIHRvIGRpc2suCi0t LQogZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwgICAgICAgICAgICAgICAgICAgIHwgIDEwICst CiBkb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwgICAgICAgICAgICAgICAgICAgICAgfCAgMjUgKwog ZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbCAgICAgICAgIHwgICA3ICsKIGRv Yy9zcmMvc2dtbC9wcm90b2NvbC5zZ21sICAgICAgICAgICAgICAgICAgICB8ICAxOSArCiBkb2Mv c3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbCAgICAgfCAgMjQgKy0KIHNyYy9i YWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hhY3QuYyAgICAgICAgICAgICB8ICAxMyArCiBzcmMvYmFj a2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMgICAgICAgfCAgNjYgKy0KIHNyYy9iYWNr ZW5kL3Bvc3RtYXN0ZXIvYmd3b3JrZXIuYyAgICAgICAgICAgICB8ICAgMyArCiBzcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL01ha2VmaWxlICAgICAgfCAgIDMgKy0KIC4uLi9yZXBsaWNh dGlvbi9sb2dpY2FsL2FwcGx5Ymd3cm9rZXIuYyAgICAgICB8IDc2NSArKysrKysrKysrKysrKysr KysKIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMgICAgICB8ICAxMCAr LQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sYXVuY2hlci5jICAgIHwgMTEyICsr LQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9vcmlnaW4uYyAgICAgIHwgIDI2ICst CiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Byb3RvLmMgICAgICAgfCAgMzUgKy0K IC4uLi9yZXBsaWNhdGlvbi9sb2dpY2FsL3Jlb3JkZXJidWZmZXIuYyAgICAgICB8ICAxMCArLQog c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYyAgIHwgIDEwICstCiBz cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jICAgICAgfCA2NDUgKysrKysr KysrKystLS0tCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jICAg fCAgIDIgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnQuYyAgICAgICB8 ICAgMyArCiBzcmMvYmFja2VuZC91dGlscy9taXNjL2d1Yy5jICAgICAgICAgICAgICAgICAgfCAg MTIgKwogc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlIHwgICAx ICsKIHNyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMgICAgICAgICAgICAgICAgICAgICB8ICAgNiAr LQogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaCAgICAgICAgIHwgIDE3ICst CiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FsbGF1bmNoZXIuaCAgICAgfCAgIDEgKwog c3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHByb3RvLmggICAgICAgIHwgIDE5ICstCiBz cmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2Fsd29ya2VyLmggICAgICAgfCAgIDEgKwogc3Jj L2luY2x1ZGUvcmVwbGljYXRpb24vb3JpZ2luLmggICAgICAgICAgICAgIHwgICAyICstCiBzcmMv aW5jbHVkZS9yZXBsaWNhdGlvbi9yZW9yZGVyYnVmZmVyLmggICAgICAgfCAgIDcgKy0KIHNyYy9p bmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oICAgICB8IDEwNCArKy0KIHNyYy9p bmNsdWRlL3V0aWxzL3dhaXRfZXZlbnQuaCAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL3N1YnNjcmlwdGlvbi5vdXQgICAgfCAgIDIgKy0KIHNyYy90b29s cy9wZ2luZGVudC90eXBlZGVmcy5saXN0ICAgICAgICAgICAgICB8ICAgNSArCiAzMiBmaWxlcyBj aGFuZ2VkLCAxNzUxIGluc2VydGlvbnMoKyksIDIxNSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5Ymd3cm9rZXIuYwoK ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sIGIvZG9jL3NyYy9zZ21sL2Nh dGFsb2dzLnNnbWwKaW5kZXggYzAwYzkzZGQ3Yi4uNWNiMzliMThiZCAxMDA2NDQKLS0tIGEvZG9j L3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwK QEAgLTc4NzMsMTEgKzc4NzMsMTUgQEAgU0NSQU0tU0hBLTI1NiQ8cmVwbGFjZWFibGU+Jmx0O2l0 ZXJhdGlvbiBjb3VudCZndDs8L3JlcGxhY2VhYmxlPjo8cmVwbGFjZWFibGU+JmwKIAogICAgICA8 cm93PgogICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9 ImNvbHVtbl9kZWZpbml0aW9uIj4KLSAgICAgICA8c3RydWN0ZmllbGQ+c3Vic3RyZWFtPC9zdHJ1 Y3RmaWVsZD4gPHR5cGU+Ym9vbDwvdHlwZT4KKyAgICAgICA8c3RydWN0ZmllbGQ+c3Vic3RyZWFt PC9zdHJ1Y3RmaWVsZD4gPHR5cGU+Y2hhcjwvdHlwZT4KICAgICAgIDwvcGFyYT4KICAgICAgIDxw YXJhPgotICAgICAgIElmIHRydWUsIHRoZSBzdWJzY3JpcHRpb24gd2lsbCBhbGxvdyBzdHJlYW1p bmcgb2YgaW4tcHJvZ3Jlc3MKLSAgICAgICB0cmFuc2FjdGlvbnMKKyAgICAgICBDb250cm9scyBo b3cgdG8gaGFuZGxlIHRoZSBzdHJlYW1pbmcgb2YgaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25zOgor ICAgICAgIDxsaXRlcmFsPmY8L2xpdGVyYWw+ID0gZGlzYWxsb3cgc3RyZWFtaW5nIG9mIGluLXBy b2dyZXNzIHRyYW5zYWN0aW9ucywKKyAgICAgICA8bGl0ZXJhbD50PC9saXRlcmFsPiA9IHNwaWxs IHRoZSBjaGFuZ2VzIG9mIGluLXByb2dyZXNzIHRyYW5zYWN0aW9ucyB0bworICAgICAgIGRpc2sg YW5kIGFwcGx5IGF0IG9uY2UgYWZ0ZXIgdGhlIHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiB0 aGUKKyAgICAgICBwdWJsaXNoZXIsCisgICAgICAgPGxpdGVyYWw+YTwvbGl0ZXJhbD4gPSBhcHBs eSBjaGFuZ2VzIGRpcmVjdGx5IHVzaW5nIGEgYmFja2dyb3VuZCB3b3JrZXIKICAgICAgIDwvcGFy YT48L2VudHJ5PgogICAgICA8L3Jvdz4KIApkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2NvbmZp Zy5zZ21sIGIvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCmluZGV4IDViN2NlNjUzMWQuLmNlN2Y2 ODI3ZjIgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbAorKysgYi9kb2Mvc3Jj L3NnbWwvY29uZmlnLnNnbWwKQEAgLTQ5NzAsNiArNDk3MCwzMSBAQCBBTlkgPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPm51bV9zeW5jPC9yZXBsYWNlYWJsZT4gKCA8cmVwbGFjZWFibGUg Y2xhc3M9IgogICAgICAgPC9saXN0aXRlbT4KICAgICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgICAg PHZhcmxpc3RlbnRyeSBpZD0iZ3VjLW1heC1hcHBseS1iZ3dvcmtlcnMtcGVyLXN1YnNjcmlwdGlv biIgeHJlZmxhYmVsPSJtYXhfYXBwbHlfYmd3b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24iPgorICAg ICAgPHRlcm0+PHZhcm5hbWU+bWF4X2FwcGx5X2Jnd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uPC92 YXJuYW1lPiAoPHR5cGU+aW50ZWdlcjwvdHlwZT4pCisgICAgICA8aW5kZXh0ZXJtPgorICAgICAg IDxwcmltYXJ5Pjx2YXJuYW1lPm1heF9hcHBseV9iZ3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbjwv dmFybmFtZT4gY29uZmlndXJhdGlvbiBwYXJhbWV0ZXI8L3ByaW1hcnk+CisgICAgICA8L2luZGV4 dGVybT4KKyAgICAgIDwvdGVybT4KKyAgICAgIDxsaXN0aXRlbT4KKyAgICAgICA8cGFyYT4KKyAg ICAgICAgTWF4aW11bSBudW1iZXIgb2YgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXJzIHBlciBzdWJz Y3JpcHRpb24uIFRoaXMKKyAgICAgICAgcGFyYW1ldGVyIGNvbnRyb2xzIHRoZSBhbW91bnQgb2Yg cGFyYWxsZWxpc20gb2YgdGhlIHN0cmVhbWluZyBvZgorICAgICAgICBpbi1wcm9ncmVzcyB0cmFu c2FjdGlvbnMgaWYgd2Ugc2V0IHN1YnNjcmlwdGlvbiBvcHRpb24KKyAgICAgICAgPGxpdGVyYWw+ c3RyZWFtaW5nPC9saXRlcmFsPiB0byA8bGl0ZXJhbD5hcHBseTwvbGl0ZXJhbD4uCisgICAgICAg PC9wYXJhPgorICAgICAgIDxwYXJhPgorICAgICAgICBUaGUgYXBwbHkgYmFja2dyb3VuZCB3b3Jr ZXJzIGFyZSB0YWtlbiBmcm9tIHRoZSBwb29sIGRlZmluZWQgYnkKKyAgICAgICAgPHZhcm5hbWU+ bWF4X2xvZ2ljYWxfcmVwbGljYXRpb25fd29ya2VyczwvdmFybmFtZT4uCisgICAgICAgPC9wYXJh PgorICAgICAgIDxwYXJhPgorICAgICAgICBUaGUgZGVmYXVsdCB2YWx1ZSBpcyAzLiBUaGlzIHBh cmFtZXRlciBjYW4gb25seSBiZSBzZXQgaW4gdGhlCisgICAgICAgIDxmaWxlbmFtZT5wb3N0Z3Jl c3FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlIG9yIG9uIHRoZSBzZXJ2ZXIgY29tbWFuZAorICAgICAg ICBsaW5lLgorICAgICAgIDwvcGFyYT4KKyAgICAgIDwvbGlzdGl0ZW0+CisgICAgIDwvdmFybGlz dGVudHJ5PgorCiAgICAgIDwvdmFyaWFibGVsaXN0PgogICAgIDwvc2VjdDI+CiAKZGlmZiAtLWdp dCBhL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwgYi9kb2Mvc3JjL3NnbWwv bG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sCmluZGV4IDE0NWVhNzFkNjEuLmNjYTZjOTdkNzkgMTAw NjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwKKysrIGIvZG9j L3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbApAQCAtOTQ4LDYgKzk0OCwxMyBAQCBD T05URVhUOiAgcHJvY2Vzc2luZyByZW1vdGUgZGF0YSBmb3IgcmVwbGljYXRpb24gb3JpZ2luICJw Z18xNjM5NSIgZHVyaW5nICJJTlNFUgogICAgbWlnaHQgbm90IHZpb2xhdGUgYW55IGNvbnN0cmFp bnQuICBUaGlzIGNhbiBlYXNpbHkgbWFrZSB0aGUgc3Vic2NyaWJlcgogICAgaW5jb25zaXN0ZW50 LgogICA8L3BhcmE+CisKKyAgPHBhcmE+CisgICBTZXR0aW5nIHN0cmVhbWluZyBtb2RlIHRvIDxs aXRlcmFsPmFwcGx5PC9saXRlcmFsPiBjb3VsZCBleHBvcnQgaW52YWxpZCBMU04KKyAgIGFzIGZp bmlzaCBMU04gb2YgZmFpbGVkIHRyYW5zYWN0aW9uLiBDaGFuZ2luZyB0aGUgc3RyZWFtaW5nIG1v ZGUgYW5kIG1ha2luZworICAgdGhlIHNhbWUgY29uZmxpY3Qgd3JpdGVzIHRoZSBmaW5pc2ggTFNO IG9mIHRoZSBmYWlsZWQgdHJhbnNhY3Rpb24gaW4gdGhlCisgICBzZXJ2ZXIgbG9nIGlmIHJlcXVp cmVkLgorICA8L3BhcmE+CiAgPC9zZWN0MT4KIAogIDxzZWN0MSBpZD0ibG9naWNhbC1yZXBsaWNh dGlvbi1yZXN0cmljdGlvbnMiPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3Byb3RvY29sLnNn bWwgYi9kb2Mvc3JjL3NnbWwvcHJvdG9jb2wuc2dtbAppbmRleCBiYjMwMzQwODkyLi4zNGJlMWIy Njk4IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcHJvdG9jb2wuc2dtbAorKysgYi9kb2Mvc3Jj L3NnbWwvcHJvdG9jb2wuc2dtbApAQCAtNjgwOSw2ICs2ODA5LDI1IEBAIHBzcWwgImRibmFtZT1w b3N0Z3JlcyByZXBsaWNhdGlvbj1kYXRhYmFzZSIgLWMgIklERU5USUZZX1NZU1RFTTsiCiAgICAg ICAgPC9saXN0aXRlbT4KICAgICAgIDwvdmFybGlzdGVudHJ5PgogCisgICAgICA8dmFybGlzdGVu dHJ5PgorICAgICAgIDx0ZXJtPkludDY0IChYTG9nUmVjUHRyKTwvdGVybT4KKyAgICAgICA8bGlz dGl0ZW0+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgVGhlIExTTiBvZiB0aGUgYWJvcnQuCisg ICAgICAgIDwvcGFyYT4KKyAgICAgICA8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+ CisKKyAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgPHRlcm0+SW50NjQgKFRpbWVzdGFtcFR6 KTwvdGVybT4KKyAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgQWJv cnQgdGltZXN0YW1wIG9mIHRoZSB0cmFuc2FjdGlvbi4gVGhlIHZhbHVlIGlzIGluIG51bWJlcgor ICAgICAgICAgb2YgbWljcm9zZWNvbmRzIHNpbmNlIFBvc3RncmVTUUwgZXBvY2ggKDIwMDAtMDEt MDEpLgorICAgICAgICA8L3BhcmE+CisgICAgICAgPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlz dGVudHJ5PgorCiAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgIDx0ZXJtPkludDMyIChUcmFu c2FjdGlvbklkKTwvdGVybT4KICAgICAgICA8bGlzdGl0ZW0+CmRpZmYgLS1naXQgYS9kb2Mvc3Jj L3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvY3Jl YXRlX3N1YnNjcmlwdGlvbi5zZ21sCmluZGV4IDM1YjM5YzI4ZGEuLmQ0Y2FhZTAyMjIgMTAwNjQ0 Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sCisrKyBiL2Rv Yy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sCkBAIC0yMTcsMTMgKzIxNywy OSBAQCBDUkVBVEUgU1VCU0NSSVBUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5z dWJzY3JpcHRpb25fbmFtZTwvcmVwbGFjZWFibAogICAgICAgIDwvdmFybGlzdGVudHJ5PgogCiAg ICAgICAgPHZhcmxpc3RlbnRyeT4KLSAgICAgICAgPHRlcm0+PGxpdGVyYWw+c3RyZWFtaW5nPC9s aXRlcmFsPiAoPHR5cGU+Ym9vbGVhbjwvdHlwZT4pPC90ZXJtPgorICAgICAgICA8dGVybT48bGl0 ZXJhbD5zdHJlYW1pbmc8L2xpdGVyYWw+ICg8dHlwZT5lbnVtPC90eXBlPik8L3Rlcm0+CiAgICAg ICAgIDxsaXN0aXRlbT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgIFNwZWNpZmllcyB3aGV0 aGVyIHRvIGVuYWJsZSBzdHJlYW1pbmcgb2YgaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25zCi0gICAg ICAgICAgZm9yIHRoaXMgc3Vic2NyaXB0aW9uLiAgQnkgZGVmYXVsdCwgYWxsIHRyYW5zYWN0aW9u cwotICAgICAgICAgIGFyZSBmdWxseSBkZWNvZGVkIG9uIHRoZSBwdWJsaXNoZXIgYW5kIG9ubHkg dGhlbiBzZW50IHRvIHRoZQotICAgICAgICAgIHN1YnNjcmliZXIgYXMgYSB3aG9sZS4KKyAgICAg ICAgICBmb3IgdGhpcyBzdWJzY3JpcHRpb24uICBUaGUgZGVmYXVsdCB2YWx1ZSBpcyA8bGl0ZXJh bD5vZmY8L2xpdGVyYWw+LAorICAgICAgICAgIGFsbCB0cmFuc2FjdGlvbnMgYXJlIGZ1bGx5IGRl Y29kZWQgb24gdGhlIHB1Ymxpc2hlciBhbmQgb25seSB0aGVuCisgICAgICAgICAgc2VudCB0byB0 aGUgc3Vic2NyaWJlciBhcyBhIHdob2xlLgorICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICA8 cGFyYT4KKyAgICAgICAgICBJZiBzZXQgdG8gPGxpdGVyYWw+b248L2xpdGVyYWw+LCB0aGUgY2hh bmdlcyBvZiB0cmFuc2FjdGlvbiBhcmUKKyAgICAgICAgICB3cml0dGVuIHRvIHRlbXBvcmFyeSBm aWxlcyBhbmQgdGhlbiBhcHBsaWVkIGF0IG9uY2UgYWZ0ZXIgdGhlCisgICAgICAgICAgdHJhbnNh Y3Rpb24gaXMgY29tbWl0dGVkIG9uIHRoZSBwdWJsaXNoZXIuCisgICAgICAgICA8L3BhcmE+CisK KyAgICAgICAgIDxwYXJhPgorICAgICAgICAgIElmIHNldCB0byA8bGl0ZXJhbD5hcHBseTwvbGl0 ZXJhbD4gaW5jb21pbmcKKyAgICAgICAgICBjaGFuZ2VzIGFyZSBkaXJlY3RseSBhcHBsaWVkIHZp YSBvbmUgb2YgdGhlIGJhY2tncm91bmQgd29ya2VycywgaWYKKyAgICAgICAgICBhdmFpbGFibGUu IElmIG5vIGJhY2tncm91bmQgd29ya2VyIGlzIGZyZWUgdG8gaGFuZGxlIHN0cmVhbWluZworICAg ICAgICAgIHRyYW5zYWN0aW9uIHRoZW4gdGhlIGNoYW5nZXMgYXJlIHdyaXR0ZW4gdG8gYSBmaWxl IGFuZCBhcHBsaWVkIGFmdGVyCisgICAgICAgICAgdGhlIHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRl ZC4gTm90ZSB0aGF0IGlmIGFuIGVycm9yIGhhcHBlbnMgd2hlbgorICAgICAgICAgIGFwcGx5aW5n IGNoYW5nZXMgaW4gYSBiYWNrZ3JvdW5kIHdvcmtlciwgaXQgbWlnaHQgbm90IHJlcG9ydCB0aGUK KyAgICAgICAgICBmaW5pc2ggTFNOIG9mIHRoZSByZW1vdGUgdHJhbnNhY3Rpb24gaW4gdGhlIHNl cnZlciBsb2cuCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAg PC92YXJsaXN0ZW50cnk+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94 YWN0LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94YWN0LmMKaW5kZXggNDdkODBiMGQy NS4uNjc4NTQwYmEyNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGFj dC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hhY3QuYwpAQCAtMTcxMSw2ICsx NzExLDcgQEAgUmVjb3JkVHJhbnNhY3Rpb25BYm9ydChib29sIGlzU3ViWGFjdCkKIAlpbnQJCQlu Y2hpbGRyZW47CiAJVHJhbnNhY3Rpb25JZCAqY2hpbGRyZW47CiAJVGltZXN0YW1wVHogeGFjdF90 aW1lOworCWJvb2wJCXJlcGxvcmlnaW47CiAKIAkvKgogCSAqIElmIHdlIGhhdmVuJ3QgYmVlbiBh c3NpZ25lZCBhbiBYSUQsIG5vYm9keSB3aWxsIGNhcmUgd2hldGhlciB3ZSBhYm9ydGVkCkBAIC0x NzQxLDYgKzE3NDIsMTMgQEAgUmVjb3JkVHJhbnNhY3Rpb25BYm9ydChib29sIGlzU3ViWGFjdCkK IAkJZWxvZyhQQU5JQywgImNhbm5vdCBhYm9ydCB0cmFuc2FjdGlvbiAldSwgaXQgd2FzIGFscmVh ZHkgY29tbWl0dGVkIiwKIAkJCSB4aWQpOwogCisJLyoKKwkgKiBBcmUgd2UgdXNpbmcgdGhlIHJl cGxpY2F0aW9uIG9yaWdpbnMgZmVhdHVyZT8gIE9yLCBpbiBvdGhlciB3b3JkcywKKwkgKiBhcmUg d2UgcmVwbGF5aW5nIHJlbW90ZSBhY3Rpb25zPworCSAqLworCXJlcGxvcmlnaW4gPSAocmVwbG9y aWdpbl9zZXNzaW9uX29yaWdpbiAhPSBJbnZhbGlkUmVwT3JpZ2luSWQgJiYKKwkJCQkgIHJlcGxv cmlnaW5fc2Vzc2lvbl9vcmlnaW4gIT0gRG9Ob3RSZXBsaWNhdGVJZCk7CisKIAkvKiBGZXRjaCB0 aGUgZGF0YSB3ZSBuZWVkIGZvciB0aGUgYWJvcnQgcmVjb3JkICovCiAJbnJlbHMgPSBzbWdyR2V0 UGVuZGluZ0RlbGV0ZXMoZmFsc2UsICZyZWxzKTsKIAluY2hpbGRyZW4gPSB4YWN0R2V0Q29tbWl0 dGVkQ2hpbGRyZW4oJmNoaWxkcmVuKTsKQEAgLTE3NjUsNiArMTc3MywxMSBAQCBSZWNvcmRUcmFu c2FjdGlvbkFib3J0KGJvb2wgaXNTdWJYYWN0KQogCQkJCQkgICBNeVhhY3RGbGFncywgSW52YWxp ZFRyYW5zYWN0aW9uSWQsCiAJCQkJCSAgIE5VTEwpOwogCisJaWYgKHJlcGxvcmlnaW4pCisJCS8q IE1vdmUgTFNOcyBmb3J3YXJkIGZvciB0aGlzIHJlcGxpY2F0aW9uIG9yaWdpbiAqLworCQlyZXBs b3JpZ2luX3Nlc3Npb25fYWR2YW5jZShyZXBsb3JpZ2luX3Nlc3Npb25fb3JpZ2luX2xzbiwKKwkJ CQkJCQkJICAgWGFjdExhc3RSZWNFbmQpOworCiAJLyoKIAkgKiBSZXBvcnQgdGhlIGxhdGVzdCBh c3luYyBhYm9ydCBMU04sIHNvIHRoYXQgdGhlIFdBTCB3cml0ZXIga25vd3MgdG8KIAkgKiBmbHVz aCB0aGlzIGFib3J0LiBUaGVyZSdzIG5vdGhpbmcgdG8gYmUgZ2FpbmVkIGJ5IGRlbGF5aW5nIHRo aXMsIHNpbmNlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25j bWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMKaW5kZXggODNl NmVhZTg1NS4uNDA4MGJiYTk4NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vi c2NyaXB0aW9uY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNt ZHMuYwpAQCAtODMsNyArODMsNyBAQCB0eXBlZGVmIHN0cnVjdCBTdWJPcHRzCiAJYm9vbAkJY29w eV9kYXRhOwogCWJvb2wJCXJlZnJlc2g7CiAJYm9vbAkJYmluYXJ5OwotCWJvb2wJCXN0cmVhbWlu ZzsKKwljaGFyCQlzdHJlYW1pbmc7CiAJYm9vbAkJdHdvcGhhc2U7CiAJYm9vbAkJZGlzYWJsZW9u ZXJyOwogCVhMb2dSZWNQdHIJbHNuOwpAQCAtOTUsNiArOTUsNjIgQEAgc3RhdGljIExpc3QgKm1l cmdlX3B1YmxpY2F0aW9ucyhMaXN0ICpvbGRwdWJsaXN0LCBMaXN0ICpuZXdwdWJsaXN0LCBib29s IGFkZHB1YiwKIHN0YXRpYyB2b2lkIFJlcG9ydFNsb3RDb25uZWN0aW9uRXJyb3IoTGlzdCAqcnN0 YXRlcywgT2lkIHN1YmlkLCBjaGFyICpzbG90bmFtZSwgY2hhciAqZXJyKTsKIAogCisvKgorICog RXh0cmFjdCB0aGUgc3RyZWFtaW5nIG1vZGUgdmFsdWUgZnJvbSBhIERlZkVsZW0uICBUaGlzIGlz IGxpa2UKKyAqIGRlZkdldEJvb2xlYW4oKSBidXQgYWxzbyBhY2NlcHRzIHRoZSBzcGVjaWFsIHZh bHVlIG9mICJhcHBseSIuCisgKi8KK3N0YXRpYyBjaGFyCitkZWZHZXRTdHJlYW1pbmdNb2RlKERl ZkVsZW0gKmRlZikKK3sKKwkvKgorCSAqIElmIG5vIHBhcmFtZXRlciBnaXZlbiwgYXNzdW1lICJ0 cnVlIiBpcyBtZWFudC4KKwkgKi8KKwlpZiAoZGVmLT5hcmcgPT0gTlVMTCkKKwkJcmV0dXJuIFNV QlNUUkVBTV9PTjsKKworCS8qCisJICogQWxsb3cgMCwgMSwgInRydWUiLCAiZmFsc2UiLCAib24i LCAib2ZmIiBvciAiYXBwbHkiLgorCSAqLworCXN3aXRjaCAobm9kZVRhZyhkZWYtPmFyZykpCisJ eworCQljYXNlIFRfSW50ZWdlcjoKKwkJCXN3aXRjaCAoaW50VmFsKGRlZi0+YXJnKSkKKwkJCXsK KwkJCQljYXNlIDA6CisJCQkJCXJldHVybiBTVUJTVFJFQU1fT0ZGOworCQkJCWNhc2UgMToKKwkJ CQkJcmV0dXJuIFNVQlNUUkVBTV9PTjsKKwkJCQlkZWZhdWx0OgorCQkJCQkvKiBvdGhlcndpc2Us IGVycm9yIG91dCBiZWxvdyAqLworCQkJCQlicmVhazsKKwkJCX0KKwkJCWJyZWFrOworCQlkZWZh dWx0OgorCQkJeworCQkJCWNoYXIJICAgKnN2YWwgPSBkZWZHZXRTdHJpbmcoZGVmKTsKKworCQkJ CS8qCisJCQkJICogVGhlIHNldCBvZiBzdHJpbmdzIGFjY2VwdGVkIGhlcmUgc2hvdWxkIG1hdGNo IHVwIHdpdGggdGhlCisJCQkJICogZ3JhbW1hcidzIG9wdF9ib29sZWFuX29yX3N0cmluZyBwcm9k dWN0aW9uLgorCQkJCSAqLworCQkJCWlmIChwZ19zdHJjYXNlY21wKHN2YWwsICJmYWxzZSIpID09 IDAgfHwKKwkJCQkJcGdfc3RyY2FzZWNtcChzdmFsLCAib2ZmIikgPT0gMCkKKwkJCQkJcmV0dXJu IFNVQlNUUkVBTV9PRkY7CisJCQkJaWYgKHBnX3N0cmNhc2VjbXAoc3ZhbCwgInRydWUiKSA9PSAw IHx8CisJCQkJCXBnX3N0cmNhc2VjbXAoc3ZhbCwgIm9uIikgPT0gMCkKKwkJCQkJcmV0dXJuIFNV QlNUUkVBTV9PTjsKKwkJCQlpZiAocGdfc3RyY2FzZWNtcChzdmFsLCAiYXBwbHkiKSA9PSAwKQor CQkJCQlyZXR1cm4gU1VCU1RSRUFNX0FQUExZOworCQkJfQorCQkJYnJlYWs7CisJfQorCWVyZXBv cnQoRVJST1IsCisJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkgZXJybXNn KCIlcyByZXF1aXJlcyBhIEJvb2xlYW4gdmFsdWUgb3IgXCJhcHBseVwiIiwKKwkJCQkJZGVmLT5k ZWZuYW1lKSkpOworCXJldHVybiBTVUJTVFJFQU1fT0ZGOwkJLyoga2VlcCBjb21waWxlciBxdWll dCAqLworfQorCiAvKgogICogQ29tbW9uIG9wdGlvbiBwYXJzaW5nIGZ1bmN0aW9uIGZvciBDUkVB VEUgYW5kIEFMVEVSIFNVQlNDUklQVElPTiBjb21tYW5kcy4KICAqCkBAIC0xMzIsNyArMTg4LDcg QEAgcGFyc2Vfc3Vic2NyaXB0aW9uX29wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpz dG10X29wdGlvbnMsCiAJaWYgKElzU2V0KHN1cHBvcnRlZF9vcHRzLCBTVUJPUFRfQklOQVJZKSkK IAkJb3B0cy0+YmluYXJ5ID0gZmFsc2U7CiAJaWYgKElzU2V0KHN1cHBvcnRlZF9vcHRzLCBTVUJP UFRfU1RSRUFNSU5HKSkKLQkJb3B0cy0+c3RyZWFtaW5nID0gZmFsc2U7CisJCW9wdHMtPnN0cmVh bWluZyA9IFNVQlNUUkVBTV9PRkY7CiAJaWYgKElzU2V0KHN1cHBvcnRlZF9vcHRzLCBTVUJPUFRf VFdPUEhBU0VfQ09NTUlUKSkKIAkJb3B0cy0+dHdvcGhhc2UgPSBmYWxzZTsKIAlpZiAoSXNTZXQo c3VwcG9ydGVkX29wdHMsIFNVQk9QVF9ESVNBQkxFX09OX0VSUikpCkBAIC0yMzMsNyArMjg5LDcg QEAgcGFyc2Vfc3Vic2NyaXB0aW9uX29wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpz dG10X29wdGlvbnMsCiAJCQkJZXJyb3JDb25mbGljdGluZ0RlZkVsZW0oZGVmZWwsIHBzdGF0ZSk7 CiAKIAkJCW9wdHMtPnNwZWNpZmllZF9vcHRzIHw9IFNVQk9QVF9TVFJFQU1JTkc7Ci0JCQlvcHRz LT5zdHJlYW1pbmcgPSBkZWZHZXRCb29sZWFuKGRlZmVsKTsKKwkJCW9wdHMtPnN0cmVhbWluZyA9 IGRlZkdldFN0cmVhbWluZ01vZGUoZGVmZWwpOwogCQl9CiAJCWVsc2UgaWYgKHN0cmNtcChkZWZl bC0+ZGVmbmFtZSwgInR3b19waGFzZSIpID09IDApCiAJCXsKQEAgLTYwMSw3ICs2NTcsNyBAQCBD cmVhdGVTdWJzY3JpcHRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVTdWJzY3JpcHRpb25T dG10ICpzdG10LAogCXZhbHVlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJvd25lciAtIDFdID0g T2JqZWN0SWRHZXREYXR1bShvd25lcik7CiAJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1 YmVuYWJsZWQgLSAxXSA9IEJvb2xHZXREYXR1bShvcHRzLmVuYWJsZWQpOwogCXZhbHVlc1tBbnVt X3BnX3N1YnNjcmlwdGlvbl9zdWJiaW5hcnkgLSAxXSA9IEJvb2xHZXREYXR1bShvcHRzLmJpbmFy eSk7Ci0JdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YnN0cmVhbSAtIDFdID0gQm9vbEdl dERhdHVtKG9wdHMuc3RyZWFtaW5nKTsKKwl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3Vi c3RyZWFtIC0gMV0gPSBDaGFyR2V0RGF0dW0ob3B0cy5zdHJlYW1pbmcpOwogCXZhbHVlc1tBbnVt X3BnX3N1YnNjcmlwdGlvbl9zdWJ0d29waGFzZXN0YXRlIC0gMV0gPQogCQlDaGFyR2V0RGF0dW0o b3B0cy50d29waGFzZSA/CiAJCQkJCSBMT0dJQ0FMUkVQX1RXT1BIQVNFX1NUQVRFX1BFTkRJTkcg OgpAQCAtMTA2MCw3ICsxMTE2LDcgQEAgQWx0ZXJTdWJzY3JpcHRpb24oUGFyc2VTdGF0ZSAqcHN0 YXRlLCBBbHRlclN1YnNjcmlwdGlvblN0bXQgKnN0bXQsCiAJCQkJaWYgKElzU2V0KG9wdHMuc3Bl Y2lmaWVkX29wdHMsIFNVQk9QVF9TVFJFQU1JTkcpKQogCQkJCXsKIAkJCQkJdmFsdWVzW0FudW1f cGdfc3Vic2NyaXB0aW9uX3N1YnN0cmVhbSAtIDFdID0KLQkJCQkJCUJvb2xHZXREYXR1bShvcHRz LnN0cmVhbWluZyk7CisJCQkJCQlDaGFyR2V0RGF0dW0ob3B0cy5zdHJlYW1pbmcpOwogCQkJCQly ZXBsYWNlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJzdHJlYW0gLSAxXSA9IHRydWU7CiAJCQkJ fQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2Jnd29ya2VyLmMgYi9zcmMv YmFja2VuZC9wb3N0bWFzdGVyL2Jnd29ya2VyLmMKaW5kZXggNDA2MDFhZWZkOS4uNDBjY2I4OTkz YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dvcmtlci5jCisrKyBiL3Ny Yy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYmd3b3JrZXIuYwpAQCAtMTI4LDYgKzEyOCw5IEBAIHN0YXRp YyBjb25zdCBzdHJ1Y3QKIAl9LAogCXsKIAkJIkFwcGx5V29ya2VyTWFpbiIsIEFwcGx5V29ya2Vy TWFpbgorCX0sCisJeworCQkiQXBwbHlCZ3dvcmtlck1haW4iLCBBcHBseUJnd29ya2VyTWFpbgog CX0KIH07CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvTWFr ZWZpbGUgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL01ha2VmaWxlCmluZGV4IGM0 ZTJmZGViNzEuLmEyNGE0MTk2OWUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvTWFrZWZpbGUKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9N YWtlZmlsZQpAQCAtMjYsNiArMjYsNyBAQCBPQkpTID0gXAogCXJlb3JkZXJidWZmZXIubyBcCiAJ c25hcGJ1aWxkLm8gXAogCXRhYmxlc3luYy5vIFwKLQl3b3JrZXIubworCXdvcmtlci5vIFwKKwlh cHBseWJnd3Jva2VyLm8KIAogaW5jbHVkZSAkKHRvcF9zcmNkaXIpL3NyYy9iYWNrZW5kL2NvbW1v bi5tawpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseWJn d3Jva2VyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5Ymd3cm9rZXIu YwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4xZjUyYjE1NWQ3Ci0tLSAv ZGV2L251bGwKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseWJnd3Jv a2VyLmMKQEAgLTAsMCArMSw3NjUgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogYXBwbHliZ3dy b2tlci5jCisgKiAgICAgU3VwcG9ydCByb3V0aW5lcyBmb3IgYXBwbHlpbmcgeGFjdCBieSBhcHBs eSBiYWNrZ3JvdW5kIHdvcmtlcgorICoKKyAqIENvcHlyaWdodCAoYykgMjAxNi0yMDIyLCBQb3N0 Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICoKKyAqIElERU5USUZJQ0FUSU9OCisg KgkgIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHliZ3dyb2tlci5jCisgKgor ICogVGhpcyBmaWxlIGNvbnRhaW5zIHJvdXRpbmVzIHRoYXQgYXJlIGludGVuZGVkIHRvIHN1cHBv cnQgc2V0dGluZyB1cCwgdXNpbmcsCisgKiBhbmQgdGVhcmluZyBkb3duIGEgQXBwbHlCZ3dvcmtl clN0YXRlLgorICogUmVmZXIgdG8gdGhlIGNvbW1lbnRzIGluIGZpbGUgaGVhZGVyIG9mIGxvZ2lj YWwvd29ya2VyLmMgdG8gc2VlIG1vcmUKKyAqIGluZm9ybWF0aW9ucyBhYm91dCBhcHBseSBiYWNr Z3JvdW5kIHdvcmtlci4KKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworCisjaW5jbHVkZSAi cG9zdGdyZXMuaCIKKworI2luY2x1ZGUgImxpYnBxL3BxZm9ybWF0LmgiCisjaW5jbHVkZSAibWIv cGdfd2NoYXIuaCIKKyNpbmNsdWRlICJwZ3N0YXQuaCIKKyNpbmNsdWRlICJwb3N0bWFzdGVyL2lu dGVycnVwdC5oIgorI2luY2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWxsYXVuY2hlci5oIgorI2lu Y2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWx3b3JrZXIuaCIKKyNpbmNsdWRlICJyZXBsaWNhdGlv bi9vcmlnaW4uaCIKKyNpbmNsdWRlICJyZXBsaWNhdGlvbi93YWxyZWNlaXZlci5oIgorI2luY2x1 ZGUgInJlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oIgorI2luY2x1ZGUgInN0b3JhZ2UvaXBj LmgiCisjaW5jbHVkZSAic3RvcmFnZS9wcm9jYXJyYXkuaCIKKyNpbmNsdWRlICJ0Y29wL3Rjb3Bw cm90LmgiCisjaW5jbHVkZSAidXRpbHMvaW52YWwuaCIKKyNpbmNsdWRlICJ1dGlscy9tZW11dGls cy5oIgorI2luY2x1ZGUgInV0aWxzL3Jlc293bmVyLmgiCisjaW5jbHVkZSAidXRpbHMvc3lzY2Fj aGUuaCIKKworI2RlZmluZSBQR19MT0dJQ0FMX0FQUExZX1NITV9NQUdJQyAweDc5ZmIyNDQ3IC8v IFRPRE8gQ29uc2lkZXIgY2hhbmdlCisKKy8qCisgKiBEU00ga2V5cyBmb3IgYXBwbHkgYmFja2dy b3VuZCB3b3JrZXIuICBVbmxpa2Ugb3RoZXIgcGFyYWxsZWwgZXhlY3V0aW9uIGNvZGUsCisgKiBz aW5jZSB3ZSBkb24ndCBuZWVkIHRvIHdvcnJ5IGFib3V0IERTTSBrZXlzIGNvbmZsaWN0aW5nIHdp dGggcGxhbl9ub2RlX2lkIHdlCisgKiBjYW4gdXNlIHNtYWxsIGludGVnZXJzLgorICovCisjZGVm aW5lIEFQUExZX0JHV09SS0VSX0tFWV9TSEFSRUQJMQorI2RlZmluZSBBUFBMWV9CR1dPUktFUl9L RVlfTVEJCTIKKworLyoKKyAqIGVudHJ5IGZvciBhIGhhc2ggdGFibGUgd2UgdXNlIHRvIG1hcCBm cm9tIHhpZCB0byBvdXIgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIKKyAqIHN0YXRlLgorICovCit0 eXBlZGVmIHN0cnVjdCBBcHBseUJnd29ya2VyRW50cnkKK3sKKwlUcmFuc2FjdGlvbklkIHhpZDsK KwlBcHBseUJnd29ya2VyU3RhdGUgKndzdGF0ZTsKK30gQXBwbHlCZ3dvcmtlckVudHJ5OworCisv KiBBcHBseSBiYWNrZ3JvdW5kIHdvcmtlcnMgaGFzaCB0YWJsZSAoaW5pdGlhbGl6ZWQgb24gZmly c3QgdXNlKSAqLworc3RhdGljIEhUQUIgKkFwcGx5V29ya2Vyc0hhc2ggPSBOVUxMOworc3RhdGlj IExpc3QgKkFwcGx5V29ya2Vyc0ZyZWVMaXN0ID0gTklMOworc3RhdGljIExpc3QgKkFwcGx5V29y a2Vyc0xpc3QgPSBOSUw7CisKKy8qCisgKiBGaWVsZHMgdG8gcmVjb3JkIHRoZSBzaGFyZSBpbmZv cm1hdGlvbnMgYmV0d2VlbiBtYWluIGFwcGx5IHdvcmtlciBhbmQgYXBwbHkKKyAqIGJhY2tncm91 bmQgd29ya2VyLgorICovCit2b2xhdGlsZSBBcHBseUJnd29ya2VyU2hhcmVkICpNeVBhcmFsbGVs U3RhdGUgPSBOVUxMOworCitMaXN0CSAgICpzdWJ4YWN0bGlzdCA9IE5JTDsKKworLyogYXBwbHkg YmFja2dyb3VuZCB3b3JrZXIgc2V0dXAgKi8KK3N0YXRpYyBBcHBseUJnd29ya2VyU3RhdGUgKmFw cGx5X2Jnd29ya2VyX3NldHVwKHZvaWQpOworc3RhdGljIHZvaWQgYXBwbHlfYmd3b3JrZXJfc2V0 dXBfZHNtKEFwcGx5Qmd3b3JrZXJTdGF0ZSAqd3N0YXRlKTsKKworLyoKKyAqIExvb2sgdXAgd29y a2VyIGluc2lkZSBBcHBseVdvcmtlcnNIYXNoIGZvciByZXF1ZXN0ZWQgeGlkLgorICoKKyAqIElm IHN0YXJ0IGZsYWcgaXMgdHJ1ZSwgdHJ5IHRvIHN0YXJ0IGEgbmV3IHdvcmtlciBpZiBub3QgZm91 bmQgaW4gaGFzaCB0YWJsZS4KKyAqLworQXBwbHlCZ3dvcmtlclN0YXRlICoKK2FwcGx5X2Jnd29y a2VyX2ZpbmRfb3Jfc3RhcnQoVHJhbnNhY3Rpb25JZCB4aWQsIGJvb2wgc3RhcnQpCit7CisJYm9v bAkJZm91bmQ7CisJQXBwbHlCZ3dvcmtlclN0YXRlICp3c3RhdGU7CisJQXBwbHlCZ3dvcmtlckVu dHJ5ICplbnRyeSA9IE5VTEw7CisKKwlpZiAoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKHhpZCkpCisJ CXJldHVybiBOVUxMOworCisJLyoKKwkgKiBXZSBkb24ndCBzdGFydCBuZXcgYmFja2dyb3VuZCB3 b3JrZXIgaWYgd2UgYXJlIG5vdCBpbiBzdHJlYW1pbmcgYXBwbHkKKwkgKiBtb2RlLgorCSAqLwor CWlmIChNeVN1YnNjcmlwdGlvbi0+c3RyZWFtICE9IFNVQlNUUkVBTV9BUFBMWSkKKwkJcmV0dXJu IE5VTEw7CisKKwkvKgorCSAqIFdlIGRvbid0IHN0YXJ0IG5ldyBiYWNrZ3JvdW5kIHdvcmtlciBp ZiB1c2VyIGhhcyBzZXQgc2tpcGxzbiBhcyBpdCdzCisJICogcG9zc2libGUgdGhhdCB1c2VyIHdh bnQgdG8gc2tpcCB0aGUgc3RyZWFtaW5nIHRyYW5zYWN0aW9uLiBGb3IKKwkgKiBzdHJlYW1pbmcg dHJhbnNhY3Rpb24sIHdlIG5lZWQgdG8gc3BpbGwgdGhlIHRyYW5zYWN0aW9uIHRvIGRpc2sgc28g dGhhdAorCSAqIHdlIGNhbiBnZXQgdGhlIGxhc3QgTFNOIG9mIHRoZSB0cmFuc2FjdGlvbiB0byBq dWRnZSB3aGV0aGVyIHRvIHNraXAKKwkgKiBiZWZvcmUgc3RhcnRpbmcgdG8gYXBwbHkgdGhlIGNo YW5nZS4KKwkgKi8KKwlpZiAoc3RhcnQgJiYgIVhMb2dSZWNQdHJJc0ludmFsaWQoTXlTdWJzY3Jp cHRpb24tPnNraXBsc24pKQorCQlyZXR1cm4gTlVMTDsKKworCS8qCisJICogRm9yIHN0cmVhbWlu ZyB0cmFuc2FjdGlvbnMgdGhhdCBhcmUgYmVpbmcgYXBwbGllZCBpbiBhcHBseSBiYWNrZ3JvdW5k CisJICogd29ya2VyLCB3ZSBjYW5ub3QgZGVjaWRlIHdoZXRoZXIgdG8gYXBwbHkgdGhlIGNoYW5n ZSBmb3IgYSByZWxhdGlvbgorCSAqIHRoYXQgaXMgbm90IGluIHRoZSBSRUFEWSBzdGF0ZSAoc2Vl IHNob3VsZF9hcHBseV9jaGFuZ2VzX2Zvcl9yZWwpIGFzIHdlCisJICogd29uJ3Qga25vdyByZW1v dGVfZmluYWxfbHNuIGJ5IHRoYXQgdGltZS4gU28sIHdlIGRvbid0IHN0YXJ0IG5ldyBhcHBseQor CSAqIGJhY2tncm91bmQgd29ya2VyIGluIHRoaXMgY2FzZS4KKwkgKi8KKwlpZiAoc3RhcnQgJiYg IUFsbFRhYmxlc3luY3NSZWFkeSgpKQorCQlyZXR1cm4gTlVMTDsKKworCS8qIEZpcnN0IHRpbWUg dGhyb3VnaCwgaW5pdGlhbGl6ZSBhcHBseSB3b3JrZXJzIGhhc2h0YWJsZSAqLworCWlmIChBcHBs eVdvcmtlcnNIYXNoID09IE5VTEwpCisJeworCQlIQVNIQ1RMCQljdGw7CisKKwkJTWVtU2V0KCZj dGwsIDAsIHNpemVvZihjdGwpKTsKKwkJY3RsLmtleXNpemUgPSBzaXplb2YoVHJhbnNhY3Rpb25J ZCk7CisJCWN0bC5lbnRyeXNpemUgPSBzaXplb2YoQXBwbHlCZ3dvcmtlckVudHJ5KTsKKwkJY3Rs LmhjeHQgPSBBcHBseUNvbnRleHQ7CisKKwkJQXBwbHlXb3JrZXJzSGFzaCA9IGhhc2hfY3JlYXRl KCJsb2dpY2FsIGFwcGx5IHdvcmtlcnMgaGFzaCIsIDgsICZjdGwsCisJCQkJCQkJCQkgICBIQVNI X0VMRU0gfCBIQVNIX0JMT0JTIHwgSEFTSF9DT05URVhUKTsKKwl9CisKKwkvKgorCSAqIEZpbmQg ZW50cnkgZm9yIHJlcXVlc3RlZCB0cmFuc2FjdGlvbi4KKwkgKi8KKwllbnRyeSA9IGhhc2hfc2Vh cmNoKEFwcGx5V29ya2Vyc0hhc2gsICZ4aWQsIHN0YXJ0ID8gSEFTSF9FTlRFUiA6IEhBU0hfRklO RCwKKwkJCQkJCSZmb3VuZCk7CisJaWYgKGZvdW5kKQorCXsKKwkJZW50cnktPndzdGF0ZS0+cHN0 YXRlLT5zdGF0dXMgPSBBUFBMWV9CR1dPUktFUl9CVVNZOworCQlyZXR1cm4gZW50cnktPndzdGF0 ZTsKKwl9CisJZWxzZSBpZiAoIXN0YXJ0KQorCQlyZXR1cm4gTlVMTDsKKworCS8qCisJICogTm93 LCB3ZSB0cnkgdG8gZ2V0IGEgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIuIElmIHRoZXJlIGlzIGF0 IGxlYXN0IG9uZQorCSAqIHdvcmtlciBpbiB0aGUgaWRsZSBsaXN0LCB0aGVuIHRha2Ugb25lLiBP dGhlcndpc2UsIHdlIHRyeSB0byBzdGFydCBhCisJICogbmV3IGFwcGx5IGJhY2tncm91bmQgd29y a2VyLgorCSAqLworCWlmIChsaXN0X2xlbmd0aChBcHBseVdvcmtlcnNGcmVlTGlzdCkgPiAwKQor CXsKKwkJd3N0YXRlID0gKEFwcGx5Qmd3b3JrZXJTdGF0ZSAqKSBsbGFzdChBcHBseVdvcmtlcnNG cmVlTGlzdCk7CisJCUFwcGx5V29ya2Vyc0ZyZWVMaXN0ID0gbGlzdF9kZWxldGVfbGFzdChBcHBs eVdvcmtlcnNGcmVlTGlzdCk7CisJfQorCWVsc2UKKwl7CisJCXdzdGF0ZSA9IGFwcGx5X2Jnd29y a2VyX3NldHVwKCk7CisKKwkJaWYgKHdzdGF0ZSA9PSBOVUxMKQorCQl7CisJCQkvKgorCQkJICog SWYgdGhlIGFwcGx5IGJhY2tncm91bmQgd29ya2VyIGNhbm5vdCBiZSBsYXVuY2hlZCwgcmVtb3Zl IGVudHJ5CisJCQkgKiBpbiBoYXNoIHRhYmxlLgorCQkJICovCisJCQloYXNoX3NlYXJjaChBcHBs eVdvcmtlcnNIYXNoLCAmeGlkLCBIQVNIX1JFTU9WRSwgJmZvdW5kKTsKKwkJCXJldHVybiBOVUxM OworCQl9CisJfQorCisJLyogRmlsbCB1cCB0aGUgaGFzaCBlbnRyeSAqLworCXdzdGF0ZS0+cHN0 YXRlLT5zdGF0dXMgPSBBUFBMWV9CR1dPUktFUl9CVVNZOworCXdzdGF0ZS0+cHN0YXRlLT5zZXJ2 ZXJfdmVyc2lvbiA9IHdhbHJjdl9zZXJ2ZXJfdmVyc2lvbihMb2dSZXBXb3JrZXJXYWxSY3ZDb25u KTsKKwl3c3RhdGUtPnBzdGF0ZS0+c3RyZWFtX3hpZCA9IHhpZDsKKwllbnRyeS0+d3N0YXRlID0g d3N0YXRlOworCWVudHJ5LT54aWQgPSB4aWQ7CisKKwlyZXR1cm4gd3N0YXRlOworfQorCisvKgor ICogQWRkIHRoZSB3b3JrZXIgdG8gdGhlIGZyZWUgbGlzdCBhbmQgcmVtb3ZlIHRoZSBlbnRyeSBm cm9tIGhhc2ggdGFibGUuCisgKi8KK3ZvaWQKK2FwcGx5X2Jnd29ya2VyX2ZyZWUoQXBwbHlCZ3dv cmtlclN0YXRlICp3c3RhdGUpCit7CisJTWVtb3J5Q29udGV4dCBvbGRjdHg7CisJVHJhbnNhY3Rp b25JZCB4aWQgPSB3c3RhdGUtPnBzdGF0ZS0+c3RyZWFtX3hpZDsKKworCUFzc2VydCh3c3RhdGUt PnBzdGF0ZS0+c3RhdHVzID09IEFQUExZX0JHV09SS0VSX0ZJTklTSEVEKTsKKworCW9sZGN0eCA9 IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhBcHBseUNvbnRleHQpOworCisJaGFzaF9zZWFyY2goQXBw bHlXb3JrZXJzSGFzaCwgJnhpZCwgSEFTSF9SRU1PVkUsIE5VTEwpOworCisJZWxvZyhERUJVRzEs ICJhZGRpbmcgZmluaXNoZWQgYXBwbHkgd29ya2VyICMldSBmb3IgeGlkICV1IHRvIHRoZSBpZGxl IGxpc3QiLAorCQkgd3N0YXRlLT5wc3RhdGUtPm4sIHdzdGF0ZS0+cHN0YXRlLT5zdHJlYW1feGlk KTsKKworCUFwcGx5V29ya2Vyc0ZyZWVMaXN0ID0gbGFwcGVuZChBcHBseVdvcmtlcnNGcmVlTGlz dCwgd3N0YXRlKTsKKworCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjdHgpOworfQorCisvKiBB cHBseSBCYWNrZ3JvdW5kIFdvcmtlciBtYWluIGxvb3AgKi8KK3N0YXRpYyB2b2lkCitMb2dpY2Fs QXBwbHlCZ3dMb29wKHNobV9tcV9oYW5kbGUgKm1xaCwgdm9sYXRpbGUgQXBwbHlCZ3dvcmtlclNo YXJlZCAqcHN0KQoreworCXNobV9tcV9yZXN1bHQgc2htcV9yZXM7CisJUEdQUk9DCSAgICpyZWdp c3RyYW50OworCUVycm9yQ29udGV4dENhbGxiYWNrIGVycmNhbGxiYWNrOworCVhMb2dSZWNQdHIJ bGFzdF9yZWNlaXZlZCA9IEludmFsaWRYTG9nUmVjUHRyOworCisJcmVnaXN0cmFudCA9IEJhY2tl bmRQaWRHZXRQcm9jKE15Qmd3b3JrZXJFbnRyeS0+Ymd3X25vdGlmeV9waWQpOworCVNldExhdGNo KCZyZWdpc3RyYW50LT5wcm9jTGF0Y2gpOworCisJLyoKKwkgKiBQdXNoIGFwcGx5IGVycm9yIGNv bnRleHQgY2FsbGJhY2suIEZpZWxkcyB3aWxsIGJlIGZpbGxlZCBkdXJpbmcKKwkgKiBhcHBseWlu ZyBhIGNoYW5nZS4KKwkgKi8KKwllcnJjYWxsYmFjay5jYWxsYmFjayA9IGFwcGx5X2Vycm9yX2Nh bGxiYWNrOworCWVycmNhbGxiYWNrLnByZXZpb3VzID0gZXJyb3JfY29udGV4dF9zdGFjazsKKwll cnJvcl9jb250ZXh0X3N0YWNrID0gJmVycmNhbGxiYWNrOworCisJZm9yICg7OykKKwl7CisJCXZv aWQJICAgKmRhdGE7CisJCVNpemUJCWxlbjsKKwkJaW50CQkJYzsKKwkJU3RyaW5nSW5mb0RhdGEg czsKKwkJTWVtb3J5Q29udGV4dCBvbGRjdHg7CisJCVhMb2dSZWNQdHIJc3RhcnRfbHNuOworCQlY TG9nUmVjUHRyCWVuZF9sc247CisJCVRpbWVzdGFtcFR6IHNlbmRfdGltZTsKKworCQlDSEVDS19G T1JfSU5URVJSVVBUUygpOworCisJCS8qIEVuc3VyZSB3ZSBhcmUgcmVhZGluZyB0aGUgZGF0YSBp bnRvIG91ciBtZW1vcnkgY29udGV4dC4gKi8KKwkJb2xkY3R4ID0gTWVtb3J5Q29udGV4dFN3aXRj aFRvKEFwcGx5TWVzc2FnZUNvbnRleHQpOworCisJCXNobXFfcmVzID0gc2htX21xX3JlY2VpdmUo bXFoLCAmbGVuLCAmZGF0YSwgZmFsc2UpOworCisJCWlmIChzaG1xX3JlcyAhPSBTSE1fTVFfU1VD Q0VTUykKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX05P VF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCQkgZXJybXNnKCJsb3N0IGNvbm5lY3Rpb24g dG8gdGhlIG1haW4gYXBwbHkgd29ya2VyIikpKTsKKworCQlpZiAobGVuID09IDApCisJCQlicmVh azsKKworCQlzLmN1cnNvciA9IDA7CisJCXMubWF4bGVuID0gLTE7CisJCXMuZGF0YSA9IChjaGFy ICopIGRhdGE7CisJCXMubGVuID0gbGVuOworCisJCS8qCisJCSAqIFdlIHVzZSBmaXJzdCBieXRl IG9mIG1lc3NhZ2UgZm9yIGFkZGl0aW9uYWwgY29tbXVuaWNhdGlvbiBiZXR3ZWVuCisJCSAqIG1h aW4gTG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXIgYW5kIGFwcGx5IGJnd29ya2Vycywgc28gaWYg aXQKKwkJICogZGlmZmVycyBmcm9tICd3JywgdGhlbiBwcm9jZXNzIGl0IGZpcnN0LgorCQkgKi8K KwkJYyA9IHBxX2dldG1zZ2J5dGUoJnMpOworCQlzd2l0Y2ggKGMpCisJCXsKKwkJCQkvKiBFbmQg bWVzc2FnZSBvZiBzdHJlYW1pbmcgY2h1bmsgKi8KKwkJCWNhc2UgTE9HSUNBTF9SRVBfTVNHX1NU UkVBTV9TVE9QOgorCQkJCWVsb2coREVCVUcxLCAiW0FwcGx5IEJHVyAjJXVdIGVuZGVkIHByb2Nl c3Npbmcgc3RyZWFtaW5nIGNodW5rLCIKKwkJCQkJICJ3YWl0aW5nIG9uIHNobV9tcV9yZWNlaXZl IiwgcHN0LT5uKTsKKworCQkJCWFwcGx5X2Jnd29ya2VyX3NldF9zdGF0dXMoQVBQTFlfQkdXT1JL RVJfUkVBRFkpOworCisJCQkJU2V0TGF0Y2goJnJlZ2lzdHJhbnQtPnByb2NMYXRjaCk7CisKKwkJ CQlpbl9zdHJlYW1lZF90cmFuc2FjdGlvbiA9IGZhbHNlOworCQkJCXBnc3RhdF9yZXBvcnRfYWN0 aXZpdHkoU1RBVEVfSURMRSwgTlVMTCk7CisJCQkJY29udGludWU7CisJCQljYXNlICd3JzoKKwkJ CQlicmVhazsKKwkJCWRlZmF1bHQ6CisJCQkJZWxvZyhFUlJPUiwgIltBcHBseSBCR1cgIyV1XSB1 bmV4cGVjdGVkIG1lc3NhZ2UgXCIlY1wiIiwKKwkJCQkJIHBzdC0+biwgYyk7CisJCQkJYnJlYWs7 CisJCX0KKworCQlzdGFydF9sc24gPSBwcV9nZXRtc2dpbnQ2NCgmcyk7CisJCWVuZF9sc24gPSBw cV9nZXRtc2dpbnQ2NCgmcyk7CisJCXNlbmRfdGltZSA9IHBxX2dldG1zZ2ludDY0KCZzKTsKKwor CQlpZiAobGFzdF9yZWNlaXZlZCA8IHN0YXJ0X2xzbikKKwkJCWxhc3RfcmVjZWl2ZWQgPSBzdGFy dF9sc247CisKKwkJaWYgKGxhc3RfcmVjZWl2ZWQgPCBlbmRfbHNuKQorCQkJbGFzdF9yZWNlaXZl ZCA9IGVuZF9sc247CisKKwkJLyoKKwkJICogVE8gSU1QUk9WRTogRG8gd2UgbmVlZCB0byBkaXNw bGF5IHRoZSBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlcidzCisJCSAqIGluZm9ybWF0aW9uIGluIHBn X3N0YXRfcmVwbGljYXRpb24gPworCQkgKi8KKwkJVXBkYXRlV29ya2VyU3RhdHMobGFzdF9yZWNl aXZlZCwgc2VuZF90aW1lLCBmYWxzZSk7CisKKwkJYXBwbHlfZGlzcGF0Y2goJnMpOworCisJCWlm IChDb25maWdSZWxvYWRQZW5kaW5nKQorCQl7CisJCQlDb25maWdSZWxvYWRQZW5kaW5nID0gZmFs c2U7CisJCQlQcm9jZXNzQ29uZmlnRmlsZShQR0NfU0lHSFVQKTsKKwkJfQorCisJCU1lbW9yeUNv bnRleHRTd2l0Y2hUbyhvbGRjdHgpOworCQlNZW1vcnlDb250ZXh0UmVzZXQoQXBwbHlNZXNzYWdl Q29udGV4dCk7CisJfQorCisJTWVtb3J5Q29udGV4dFN3aXRjaFRvKFRvcE1lbW9yeUNvbnRleHQp OworCU1lbW9yeUNvbnRleHRSZXNldChBcHBseUNvbnRleHQpOworCisJLyogUG9wIHRoZSBlcnJv ciBjb250ZXh0IHN0YWNrICovCisJZXJyb3JfY29udGV4dF9zdGFjayA9IGVycmNhbGxiYWNrLnBy ZXZpb3VzOworCisJZWxvZyhERUJVRzEsICJbQXBwbHkgQkdXICMldV0gZXhpdGluZyIsIHBzdC0+ bik7CisKKwkvKiBTaWduYWwgbWFpbiBwcm9jZXNzIHRoYXQgd2UgYXJlIGRvbmUuICovCisJU2V0 TGF0Y2goJnJlZ2lzdHJhbnQtPnByb2NMYXRjaCk7Cit9CisKKy8qCisgKiBTZXQgdGhlIGV4aXQg c3RhdHVzIHNvIHRoYXQgdGhlIG1haW4gYXBwbHkgd29ya2VyIGNhbiByZWFsaXplIHdlIGhhdmUK KyAqIHNodXRkb3duLgorICovCitzdGF0aWMgdm9pZAorQXBwbHlCZ3dTaHV0ZG93bihpbnQgY29k ZSwgRGF0dW0gYXJnKQoreworCVNwaW5Mb2NrQWNxdWlyZSgmTXlQYXJhbGxlbFN0YXRlLT5tdXRl eCk7CisJTXlQYXJhbGxlbFN0YXRlLT5zdGF0dXMgPSBBUFBMWV9CR1dPUktFUl9FWElUOworCVNw aW5Mb2NrUmVsZWFzZSgmTXlQYXJhbGxlbFN0YXRlLT5tdXRleCk7CisKKwlkc21fZGV0YWNoKChk c21fc2VnbWVudCAqKSBEYXR1bUdldFBvaW50ZXIoYXJnKSk7Cit9CisKKy8qCisgKiBBcHBseSBC YWNrZ3JvdW5kIFdvcmtlciBlbnRyeSBwb2ludAorICovCit2b2lkCitBcHBseUJnd29ya2VyTWFp bihEYXR1bSBtYWluX2FyZykKK3sKKwl2b2xhdGlsZSBBcHBseUJnd29ya2VyU2hhcmVkICpwc3Q7 CisKKwlkc21faGFuZGxlCWhhbmRsZTsKKwlkc21fc2VnbWVudCAqc2VnOworCXNobV90b2MgICAg KnRvYzsKKwlzaG1fbXEJICAgKm1xOworCXNobV9tcV9oYW5kbGUgKm1xaDsKKwlNZW1vcnlDb250 ZXh0IG9sZGNvbnRleHQ7CisJUmVwT3JpZ2luSWQgb3JpZ2luaWQ7CisJaW50CQkJd29ya2VyX3Ns b3QgPSBEYXR1bUdldEludDMyKG1haW5fYXJnKTsKKwljaGFyCQlvcmlnaW5uYW1lW05BTUVEQVRB TEVOXTsKKworCS8qIEF0dGFjaCB0byBzbG90ICovCisJbG9naWNhbHJlcF93b3JrZXJfYXR0YWNo KHdvcmtlcl9zbG90KTsKKworCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhUb3BNZW1vcnlDb250ZXh0 KTsKKworCS8qIExvYWQgdGhlIHN1YnNjcmlwdGlvbiBpbnRvIHBlcnNpc3RlbnQgbWVtb3J5IGNv bnRleHQuICovCisJQXBwbHlDb250ZXh0ID0gQWxsb2NTZXRDb250ZXh0Q3JlYXRlKFRvcE1lbW9y eUNvbnRleHQsCisJCQkJCQkJCQkJICJBcHBseUNvbnRleHQiLAorCQkJCQkJCQkJCSBBTExPQ1NF VF9ERUZBVUxUX1NJWkVTKTsKKworCS8qCisJICogSW5pdCB0aGUgQXBwbHlNZXNzYWdlQ29udGV4 dCB3aGljaCB3ZSBjbGVhbiB1cCBhZnRlciBlYWNoIHJlcGxpY2F0aW9uCisJICogcHJvdG9jb2wg bWVzc2FnZS4KKwkgKi8KKwlBcHBseU1lc3NhZ2VDb250ZXh0ID0gQWxsb2NTZXRDb250ZXh0Q3Jl YXRlKEFwcGx5Q29udGV4dCwKKwkJCQkJCQkJCQkJCSJBcHBseU1lc3NhZ2VDb250ZXh0IiwKKwkJ CQkJCQkJCQkJCUFMTE9DU0VUX0RFRkFVTFRfU0laRVMpOworCisJLyogU2V0dXAgc2lnbmFsIGhh bmRsaW5nICovCisJcHFzaWduYWwoU0lHSFVQLCBTaWduYWxIYW5kbGVyRm9yQ29uZmlnUmVsb2Fk KTsKKwlwcXNpZ25hbChTSUdURVJNLCBkaWUpOworCUJhY2tncm91bmRXb3JrZXJVbmJsb2NrU2ln bmFscygpOworCisJLyoKKwkgKiBDb25uZWN0IHRvIHRoZSBkeW5hbWljIHNoYXJlZCBtZW1vcnkg c2VnbWVudC4KKwkgKgorCSAqIFRoZSBiYWNrZW5kIHRoYXQgcmVnaXN0ZXJlZCB0aGlzIHdvcmtl ciBwYXNzZWQgdXMgdGhlIElEIG9mIGEgc2hhcmVkCisJICogbWVtb3J5IHNlZ21lbnQgdG8gd2hp Y2ggd2UgbXVzdCBhdHRhY2ggZm9yIGZ1cnRoZXIgaW5zdHJ1Y3Rpb25zLiAgSW4KKwkgKiBvcmRl ciB0byBhdHRhY2ggdG8gZHluYW1pYyBzaGFyZWQgbWVtb3J5LCB3ZSBuZWVkIGEgcmVzb3VyY2Ug b3duZXIuCisJICogT25jZSB3ZSd2ZSBtYXBwZWQgdGhlIHNlZ21lbnQgaW4gb3VyIGFkZHJlc3Mg c3BhY2UsIGF0dGFjaCB0byB0aGUgdGFibGUKKwkgKiBvZiBjb250ZW50cyBzbyB3ZSBjYW4gbG9j YXRlIHRoZSB2YXJpb3VzIGRhdGEgc3RydWN0dXJlcyB3ZSdsbCBuZWVkIHRvCisJICogZmluZCB3 aXRoaW4gdGhlIHNlZ21lbnQuCisJICovCisJQ3VycmVudFJlc291cmNlT3duZXIgPSBSZXNvdXJj ZU93bmVyQ3JlYXRlKE5VTEwsICJMb2dpY2FsIGFwcGx5IHdvcmtlciIpOworCW1lbWNweSgmaGFu ZGxlLCBNeUJnd29ya2VyRW50cnktPmJnd19leHRyYSwgc2l6ZW9mKGRzbV9oYW5kbGUpKTsKKwlz ZWcgPSBkc21fYXR0YWNoKGhhbmRsZSk7CisJaWYgKHNlZyA9PSBOVUxMKQorCQllcmVwb3J0KEVS Uk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RB VEUpLAorCQkJCSBlcnJtc2coInVuYWJsZSB0byBtYXAgZHluYW1pYyBzaGFyZWQgbWVtb3J5IHNl Z21lbnQiKSkpOworCXRvYyA9IHNobV90b2NfYXR0YWNoKFBHX0xPR0lDQUxfQVBQTFlfU0hNX01B R0lDLCBkc21fc2VnbWVudF9hZGRyZXNzKHNlZykpOworCWlmICh0b2MgPT0gTlVMTCkKKwkJZXJl cG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlT SVRFX1NUQVRFKSwKKwkJCQkgZXJybXNnKCJiYWQgbWFnaWMgbnVtYmVyIGluIGR5bmFtaWMgc2hh cmVkIG1lbW9yeSBzZWdtZW50IikpKTsKKworCWJlZm9yZV9zaG1lbV9leGl0KEFwcGx5Qmd3U2h1 dGRvd24sIFBvaW50ZXJHZXREYXR1bShzZWcpKTsKKworCS8qIExvb2sgdXAgdGhlIHBhcmFsbGVs IHN0YXRlLiAqLworCXBzdCA9IHNobV90b2NfbG9va3VwKHRvYywgQVBQTFlfQkdXT1JLRVJfS0VZ X1NIQVJFRCwgZmFsc2UpOworCU15UGFyYWxsZWxTdGF0ZSA9IHBzdDsKKworCS8qCisJICogQXR0 YWNoIHRvIHRoZSBtZXNzYWdlIHF1ZXVlLgorCSAqLworCW1xID0gc2htX3RvY19sb29rdXAodG9j LCBBUFBMWV9CR1dPUktFUl9LRVlfTVEsIGZhbHNlKTsKKwlzaG1fbXFfc2V0X3JlY2VpdmVyKG1x LCBNeVByb2MpOworCW1xaCA9IHNobV9tcV9hdHRhY2gobXEsIHNlZywgTlVMTCk7CisKKwkvKiBS dW4gYXMgcmVwbGljYSBzZXNzaW9uIHJlcGxpY2F0aW9uIHJvbGUuICovCisJU2V0Q29uZmlnT3B0 aW9uKCJzZXNzaW9uX3JlcGxpY2F0aW9uX3JvbGUiLCAicmVwbGljYSIsCisJCQkJCVBHQ19TVVNF VCwgUEdDX1NfT1ZFUlJJREUpOworCisJLyogQ29ubmVjdCB0byBvdXIgZGF0YWJhc2UuICovCisJ QmFja2dyb3VuZFdvcmtlckluaXRpYWxpemVDb25uZWN0aW9uQnlPaWQoTXlMb2dpY2FsUmVwV29y a2VyLT5kYmlkLAorCQkJCQkJCQkJCQkgIE15TG9naWNhbFJlcFdvcmtlci0+dXNlcmlkLAorCQkJ CQkJCQkJCQkgIDApOworCisJLyoKKwkgKiBTZXQgYWx3YXlzLXNlY3VyZSBzZWFyY2ggcGF0aCwg c28gbWFsaWNpb3VzIHVzZXJzIGNhbid0IHJlZGlyZWN0IHVzZXIKKwkgKiBjb2RlIChlLmcuIHBn X2luZGV4LmluZGV4cHJzKS4KKwkgKi8KKwlTZXRDb25maWdPcHRpb24oInNlYXJjaF9wYXRoIiwg IiIsIFBHQ19TVVNFVCwgUEdDX1NfT1ZFUlJJREUpOworCisJLyoKKwkgKiBTZXQgdGhlIGNsaWVu dCBlbmNvZGluZyB0byB0aGUgZGF0YWJhc2UgZW5jb2RpbmcsIHNpbmNlIHRoYXQgaXMgd2hhdAor CSAqIHRoZSBsZWFkZXIgd2lsbCBleHBlY3QuCisJICovCisJU2V0Q2xpZW50RW5jb2RpbmcoR2V0 RGF0YWJhc2VFbmNvZGluZygpKTsKKworCXN0cmVhbV94aWQgPSBwc3QtPnN0cmVhbV94aWQ7CisK KwlTdGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCW9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0 U3dpdGNoVG8oQXBwbHlDb250ZXh0KTsKKworCU15U3Vic2NyaXB0aW9uID0gR2V0U3Vic2NyaXB0 aW9uKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHRydWUpOworCWlmICghTXlTdWJzY3JpcHRp b24pCisJeworCQllcmVwb3J0KExPRywKKwkJCQkoZXJybXNnKCJsb2dpY2FsIHJlcGxpY2F0aW9u IGFwcGx5IHdvcmtlciBmb3Igc3Vic2NyaXB0aW9uICV1IHdpbGwgbm90ICIKKwkJCQkJCSJzdGFy dCBiZWNhdXNlIHRoZSBzdWJzY3JpcHRpb24gd2FzIHJlbW92ZWQgZHVyaW5nIHN0YXJ0dXAiLAor CQkJCQkJTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCkpKTsKKwkJcHJvY19leGl0KDApOworCX0K KworCU15U3Vic2NyaXB0aW9uVmFsaWQgPSB0cnVlOworCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhv bGRjb250ZXh0KTsKKworCS8qIFNldHVwIHN5bmNocm9ub3VzIGNvbW1pdCBhY2NvcmRpbmcgdG8g dGhlIHVzZXIncyB3aXNoZXMgKi8KKwlTZXRDb25maWdPcHRpb24oInN5bmNocm9ub3VzX2NvbW1p dCIsIE15U3Vic2NyaXB0aW9uLT5zeW5jY29tbWl0LAorCQkJCQlQR0NfQkFDS0VORCwgUEdDX1Nf T1ZFUlJJREUpOworCisJLyogS2VlcCB1cyBpbmZvcm1lZCBhYm91dCBzdWJzY3JpcHRpb24gY2hh bmdlcy4gKi8KKwlDYWNoZVJlZ2lzdGVyU3lzY2FjaGVDYWxsYmFjayhTVUJTQ1JJUFRJT05PSUQs CisJCQkJCQkJCSAgc3Vic2NyaXB0aW9uX2NoYW5nZV9jYiwKKwkJCQkJCQkJICAoRGF0dW0pIDAp OworCisJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisKKwkvKiBTZXR1cCByZXBsaWNhdGlv biBvcmlnaW4gdHJhY2tpbmcuICovCisJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwlzbnBy aW50ZihvcmlnaW5uYW1lLCBzaXplb2Yob3JpZ2lubmFtZSksICJwZ18ldSIsIE15U3Vic2NyaXB0 aW9uLT5vaWQpOworCW9yaWdpbmlkID0gcmVwbG9yaWdpbl9ieV9uYW1lKG9yaWdpbm5hbWUsIHRy dWUpOworCWlmICghT2lkSXNWYWxpZChvcmlnaW5pZCkpCisJCW9yaWdpbmlkID0gcmVwbG9yaWdp bl9jcmVhdGUob3JpZ2lubmFtZSk7CisKKwkvKgorCSAqIFRoZSBhcHBseSBiYWNrZ3JvdW5kIHdv cmtlciBkb2Vzbid0IG5lZWQgdG8gbW9ub3BvbGl6ZSB0aGlzIHJlcGxpY2F0aW9uCisJICogb3Jp Z2luIHdoaWNoIHdhcyBhbHJlYWR5IGFjcXVpcmVkIGJ5IGl0cyBsZWFkZXIgcHJvY2Vzcy4KKwkg Ki8KKwlyZXBsb3JpZ2luX3Nlc3Npb25fc2V0dXAob3JpZ2luaWQsIGZhbHNlKTsKKwlyZXBsb3Jp Z2luX3Nlc3Npb25fb3JpZ2luID0gb3JpZ2luaWQ7CisJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5k KCk7CisKKwkvKgorCSAqIEFsbG9jYXRlIHRoZSBvcmlnaW4gbmFtZSBpbiBsb25nLWxpdmVkIGNv bnRleHQgZm9yIGVycm9yIGNvbnRleHQKKwkgKiBtZXNzYWdlLgorCSAqLworCWFwcGx5X2Vycm9y X2NhbGxiYWNrX2FyZy5vcmlnaW5fbmFtZSA9IE1lbW9yeUNvbnRleHRTdHJkdXAoQXBwbHlDb250 ZXh0LAorCQkJCQkJCQkJCQkJCQkJICAgb3JpZ2lubmFtZSk7CisKKwkvKgorCSAqIEluZGljYXRl IHRoYXQgd2UncmUgZnVsbHkgaW5pdGlhbGl6ZWQgYW5kIHJlYWR5IHRvIGJlZ2luIHRoZSBtYWlu IHBhcnQKKwkgKiBvZiB0aGUgYXBwbHkgb3BlcmF0aW9uLgorCSAqLworCWFwcGx5X2Jnd29ya2Vy X3NldF9zdGF0dXMoQVBQTFlfQkdXT1JLRVJfQVRUQUNIRUQpOworCisJZWxvZyhERUJVRzEsICJb QXBwbHkgQkdXICMldV0gc3RhcnRlZCIsIHBzdC0+bik7CisKKwlMb2dpY2FsQXBwbHlCZ3dMb29w KG1xaCwgcHN0KTsKKworCS8qCisJICogV2UncmUgZG9uZS4gIEV4cGxpY2l0bHkgZGV0YWNoIHRo ZSBzaGFyZWQgbWVtb3J5IHNlZ21lbnQgc28gdGhhdCB3ZQorCSAqIGRvbid0IGdldCBhIHJlc291 cmNlIGxlYWsgd2FybmluZyBhdCBjb21taXQgdGltZS4gIFRoaXMgd2lsbCBmaXJlIGFueQorCSAq IG9uX2RzbV9kZXRhY2ggY2FsbGJhY2tzIHdlJ3ZlIHJlZ2lzdGVyZWQsIGFzIHdlbGwuICBPbmNl IHRoYXQncyBkb25lLAorCSAqIHdlIGNhbiBnbyBhaGVhZCBhbmQgZXhpdC4KKwkgKi8KKwlkc21f ZGV0YWNoKHNlZyk7CisJcHJvY19leGl0KDApOworfQorCisvKgorICogU2V0IHVwIGEgZHluYW1p YyBzaGFyZWQgbWVtb3J5IHNlZ21lbnQuCisgKgorICogV2Ugc2V0IHVwIGEgY29udHJvbCByZWdp b24gdGhhdCBjb250YWlucyBhIEFwcGx5Qmd3b3JrZXJTaGFyZWQsCisgKiBwbHVzIG9uZSByZWdp b24gcGVyIG1lc3NhZ2UgcXVldWUuIFRoZXJlIGFyZSBhcyBtYW55IG1lc3NhZ2UgcXVldWVzIGFz CisgKiB0aGUgbnVtYmVyIG9mIHdvcmtlcnMuCisgKi8KK3N0YXRpYyB2b2lkCithcHBseV9iZ3dv cmtlcl9zZXR1cF9kc20oQXBwbHlCZ3dvcmtlclN0YXRlICp3c3RhdGUpCit7CisJc2htX3RvY19l c3RpbWF0b3IgZTsKKwlTaXplCQlzZWdzaXplOworCWRzbV9zZWdtZW50ICpzZWc7CisJc2htX3Rv YyAgICAqdG9jOworCUFwcGx5Qmd3b3JrZXJTaGFyZWQgKnBzdDsKKwlzaG1fbXEJICAgKm1xOwor CWludDY0CQlxdWV1ZV9zaXplID0gMTYwMDAwMDAwOyAvKiAxNiBNQiBmb3Igbm93ICovCisKKwkv KgorCSAqIEVzdGltYXRlIGhvdyBtdWNoIHNoYXJlZCBtZW1vcnkgd2UgbmVlZC4KKwkgKgorCSAq IEJlY2F1c2UgdGhlIFRPQyBtYWNoaW5lcnkgbWF5IGNob29zZSB0byBpbnNlcnQgcGFkZGluZyBv ZiBvZGRseS1zaXplZAorCSAqIHJlcXVlc3RzLCB3ZSBtdXN0IGVzdGltYXRlIGVhY2ggY2h1bmsg c2VwYXJhdGVseS4KKwkgKgorCSAqIFdlIG5lZWQgb25lIGtleSB0byByZWdpc3RlciB0aGUgbG9j YXRpb24gb2YgdGhlIGhlYWRlciwgYW5kIHdlIG5lZWQKKwkgKiBhbm90aGVyIGtleSB0byB0cmFj ayB0aGUgbG9jYXRpb24gb2YgdGhlIG1lc3NhZ2UgcXVldWUuCisJICovCisJc2htX3RvY19pbml0 aWFsaXplX2VzdGltYXRvcigmZSk7CisJc2htX3RvY19lc3RpbWF0ZV9jaHVuaygmZSwgc2l6ZW9m KEFwcGx5Qmd3b3JrZXJTaGFyZWQpKTsKKwlzaG1fdG9jX2VzdGltYXRlX2NodW5rKCZlLCAoU2l6 ZSkgcXVldWVfc2l6ZSk7CisKKwlzaG1fdG9jX2VzdGltYXRlX2tleXMoJmUsIDEgKyAxKTsKKwlz ZWdzaXplID0gc2htX3RvY19lc3RpbWF0ZSgmZSk7CisKKwkvKiBDcmVhdGUgdGhlIHNoYXJlZCBt ZW1vcnkgc2VnbWVudCBhbmQgZXN0YWJsaXNoIGEgdGFibGUgb2YgY29udGVudHMuICovCisJc2Vn ID0gZHNtX2NyZWF0ZShzaG1fdG9jX2VzdGltYXRlKCZlKSwgMCk7CisJdG9jID0gc2htX3RvY19j cmVhdGUoUEdfTE9HSUNBTF9BUFBMWV9TSE1fTUFHSUMsIGRzbV9zZWdtZW50X2FkZHJlc3Moc2Vn KSwKKwkJCQkJCSBzZWdzaXplKTsKKworCS8qIFNldCB1cCB0aGUgaGVhZGVyIHJlZ2lvbi4gKi8K Kwlwc3QgPSBzaG1fdG9jX2FsbG9jYXRlKHRvYywgc2l6ZW9mKEFwcGx5Qmd3b3JrZXJTaGFyZWQp KTsKKwlTcGluTG9ja0luaXQoJnBzdC0+bXV0ZXgpOworCXBzdC0+c3RhdHVzID0gQVBQTFlfQkdX T1JLRVJfQlVTWTsKKwlwc3QtPnNlcnZlcl92ZXJzaW9uID0gd2FscmN2X3NlcnZlcl92ZXJzaW9u KExvZ1JlcFdvcmtlcldhbFJjdkNvbm4pOworCXBzdC0+c3RyZWFtX3hpZCA9IHN0cmVhbV94aWQ7 CisJcHN0LT5uID0gbGlzdF9sZW5ndGgoQXBwbHlXb3JrZXJzTGlzdCkgKyAxOworCisJc2htX3Rv Y19pbnNlcnQodG9jLCBBUFBMWV9CR1dPUktFUl9LRVlfU0hBUkVELCBwc3QpOworCisJLyogU2V0 IHVwIG9uZSBtZXNzYWdlIHF1ZXVlIHBlciB3b3JrZXIsIHBsdXMgb25lLiAqLworCW1xID0gc2ht X21xX2NyZWF0ZShzaG1fdG9jX2FsbG9jYXRlKHRvYywgKFNpemUpIHF1ZXVlX3NpemUpLAorCQkJ CQkgICAoU2l6ZSkgcXVldWVfc2l6ZSk7CisJc2htX3RvY19pbnNlcnQodG9jLCBBUFBMWV9CR1dP UktFUl9LRVlfTVEsIG1xKTsKKwlzaG1fbXFfc2V0X3NlbmRlcihtcSwgTXlQcm9jKTsKKworCS8q IEF0dGFjaCB0aGUgcXVldWVzLiAqLworCXdzdGF0ZS0+bXFfaGFuZGxlID0gc2htX21xX2F0dGFj aChtcSwgc2VnLCBOVUxMKTsKKworCS8qIFJldHVybiByZXN1bHRzIHRvIGNhbGxlci4gKi8KKwl3 c3RhdGUtPmRzbV9zZWcgPSBzZWc7CisJd3N0YXRlLT5wc3RhdGUgPSBwc3Q7Cit9CisKKy8qCisg KiBTdGFydCBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlciBwcm9jZXNzIGFuZCBhbGxvY2F0ZSBzaGFy ZWQgbWVtb3J5IGZvciBpdC4KKyAqLworc3RhdGljIEFwcGx5Qmd3b3JrZXJTdGF0ZSAqCithcHBs eV9iZ3dvcmtlcl9zZXR1cCh2b2lkKQoreworCU1lbW9yeUNvbnRleHQgb2xkY29udGV4dDsKKwli b29sCQlsYXVuY2hlZDsKKwlBcHBseUJnd29ya2VyU3RhdGUgKndzdGF0ZTsKKwlpbnQJCQluYXBw bHl3b3JrZXJzOworCisJZWxvZyhERUJVRzEsICJzZXR0aW5nIHVwIGFwcGx5IHdvcmtlciAjJXUi LCBsaXN0X2xlbmd0aChBcHBseVdvcmtlcnNMaXN0KSArIDEpOworCisJLyogQ2hlY2sgSWYgdGhl cmUgYXJlIGZyZWUgd29ya2VyIHNsb3QocykgKi8KKwlMV0xvY2tBY3F1aXJlKExvZ2ljYWxSZXBX b3JrZXJMb2NrLCBMV19TSEFSRUQpOworCW5hcHBseXdvcmtlcnMgPSBsb2dpY2FscmVwX2FwcGx5 X2JhY2tncm91bmRfd29ya2VyX2NvdW50KE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQpOworCUxX TG9ja1JlbGVhc2UoTG9naWNhbFJlcFdvcmtlckxvY2spOworCWlmIChuYXBwbHl3b3JrZXJzID49 IG1heF9hcHBseV9iZ3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbikKKwkJcmV0dXJuIE5VTEw7CisK KwlvbGRjb250ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKEFwcGx5Q29udGV4dCk7CisKKwl3 c3RhdGUgPSAoQXBwbHlCZ3dvcmtlclN0YXRlICopIHBhbGxvYzAoc2l6ZW9mKEFwcGx5Qmd3b3Jr ZXJTdGF0ZSkpOworCisJLyogU2V0dXAgc2hhcmVkIG1lbW9yeSAqLworCWFwcGx5X2Jnd29ya2Vy X3NldHVwX2RzbSh3c3RhdGUpOworCisJbGF1bmNoZWQgPSBsb2dpY2FscmVwX3dvcmtlcl9sYXVu Y2goTXlMb2dpY2FsUmVwV29ya2VyLT5kYmlkLAorCQkJCQkJCQkJCU15U3Vic2NyaXB0aW9uLT5v aWQsCisJCQkJCQkJCQkJTXlTdWJzY3JpcHRpb24tPm5hbWUsCisJCQkJCQkJCQkJTXlMb2dpY2Fs UmVwV29ya2VyLT51c2VyaWQsCisJCQkJCQkJCQkJSW52YWxpZE9pZCwKKwkJCQkJCQkJCQlkc21f c2VnbWVudF9oYW5kbGUod3N0YXRlLT5kc21fc2VnKSk7CisKKwlpZiAobGF1bmNoZWQpCisJewor CQkvKiBXYWl0IGZvciB3b3JrZXIgdG8gYXR0YWNoLiAqLworCQlhcHBseV9iZ3dvcmtlcl93YWl0 X2Zvcih3c3RhdGUsIEFQUExZX0JHV09SS0VSX0FUVEFDSEVEKTsKKworCQlBcHBseVdvcmtlcnNM aXN0ID0gbGFwcGVuZChBcHBseVdvcmtlcnNMaXN0LCB3c3RhdGUpOworCX0KKwllbHNlCisJewor CQlwZnJlZSh3c3RhdGUpOworCQl3c3RhdGUgPSBOVUxMOworCX0KKworCU1lbW9yeUNvbnRleHRT d2l0Y2hUbyhvbGRjb250ZXh0KTsKKworCXJldHVybiB3c3RhdGU7Cit9CisKKy8qCisgKiBTZW5k IHRoZSBkYXRhIHRvIHRoZSBzcGVjaWZpZWQgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIgdmlhIHNo YXJlZC1tZW1vcnkgcXVldWUuCisgKi8KK3ZvaWQKK2FwcGx5X2Jnd29ya2VyX3NlbmRfZGF0YShB cHBseUJnd29ya2VyU3RhdGUgKndzdGF0ZSwgU2l6ZSBuYnl0ZXMsIGNvbnN0IHZvaWQgKmRhdGEp Cit7CisJc2htX21xX3Jlc3VsdCByZXN1bHQ7CisKKwlyZXN1bHQgPSBzaG1fbXFfc2VuZCh3c3Rh dGUtPm1xX2hhbmRsZSwgbmJ5dGVzLCBkYXRhLCBmYWxzZSwgdHJ1ZSk7CisKKwlpZiAocmVzdWx0 ICE9IFNITV9NUV9TVUNDRVNTKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNP REVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCSBlcnJtc2coImNvdWxk IG5vdCBzZW5kIHR1cGxlcyB0byBzaGFyZWQtbWVtb3J5IHF1ZXVlIikpKTsKK30KKworLyoKKyAq IFdhaXQgdW50aWwgdGhlIHN0YXR1cyBvZiBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlciByZWFjaGVz IHRoZQorICogJ3dhaXRfZm9yX3N0YXR1cycKKyAqLwordm9pZAorYXBwbHlfYmd3b3JrZXJfd2Fp dF9mb3IoQXBwbHlCZ3dvcmtlclN0YXRlICp3c3RhdGUsCisJCQkJCQlBcHBseUJnd29ya2VyU3Rh dHVzIHdhaXRfZm9yX3N0YXR1cykKK3sKKwlmb3IgKDs7KQorCXsKKwkJY2hhcgkJc3RhdHVzOwor CisJCVNwaW5Mb2NrQWNxdWlyZSgmd3N0YXRlLT5wc3RhdGUtPm11dGV4KTsKKwkJc3RhdHVzID0g d3N0YXRlLT5wc3RhdGUtPnN0YXR1czsKKwkJU3BpbkxvY2tSZWxlYXNlKCZ3c3RhdGUtPnBzdGF0 ZS0+bXV0ZXgpOworCisJCS8qIERvbmUgaWYgYWxyZWFkeSBpbiBjb3JyZWN0IHN0YXR1cy4gKi8K KwkJaWYgKHN0YXR1cyA9PSB3YWl0X2Zvcl9zdGF0dXMpCisJCQlicmVhazsKKworCQkvKiBJZiBh bnkgd29ya2VycyAob3IgdGhlIHBvc3RtYXN0ZXIpIGhhdmUgZGllZCwgd2UgaGF2ZSBmYWlsZWQu ICovCisJCWlmIChzdGF0dXMgPT0gQVBQTFlfQkdXT1JLRVJfRVhJVCkKKwkJCWVyZXBvcnQoRVJS T1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RB VEUpLAorCQkJCQkgZXJybXNnKCJiYWNrZ3JvdW5kIHdvcmtlciAldSBmYWlsZWQgdG8gYXBwbHkg dHJhbnNhY3Rpb24gJXUiLAorCQkJCQkJCXdzdGF0ZS0+cHN0YXRlLT5uLCB3c3RhdGUtPnBzdGF0 ZS0+c3RyZWFtX3hpZCkpKTsKKworCQkvKiBXYWl0IHRvIGJlIHNpZ25hbGxlZC4gKi8KKwkJV2Fp dExhdGNoKE15TGF0Y2gsIFdMX0xBVENIX1NFVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsIDAsCisJ CQkJICBXQUlUX0VWRU5UX0xPR0lDQUxfQVBQTFlfV09SS0VSX1NUQVRFX0NIQU5HRSk7CisKKwkJ LyogUmVzZXQgdGhlIGxhdGNoIHNvIHdlIGRvbid0IHNwaW4uICovCisJCVJlc2V0TGF0Y2goTXlM YXRjaCk7CisKKwkJLyogQW4gaW50ZXJydXB0IG1heSBoYXZlIG9jY3VycmVkIHdoaWxlIHdlIHdl cmUgd2FpdGluZy4gKi8KKwkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKKwl9Cit9CisKKy8qCisg KiBDaGVjayB0aGUgc3RhdHVzIG9mIHdvcmtlcnMgYW5kIHJlcG9ydCBhbiBlcnJvciBpZiBhbnkg YXBwbHkgYmFja2dyb3VuZAorICogd29ya2VyIGhhcyBleGl0ZWQgdW5leHBlY3RlZGx5LgorICoK KyAqIEV4aXQgaWYgYW55IHJlbGF0aW9uIGlzIG5vdCBpbiB0aGUgUkVBRFkgc3RhdGUgYW5kIGlm IGFueSB3b3JrZXIgaXMgaGFuZGxpbmcKKyAqIHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gYXQg dGhlIHNhbWUgdGltZS4gQmVjYXVzZSBmb3Igc3RyZWFtaW5nCisgKiB0cmFuc2FjdGlvbnMgdGhh dCBpcyBiZWluZyBhcHBsaWVkIGluIGFwcGx5IGJhY2tncm91bmQgd29ya2VyLCB3ZSBjYW5ub3QK KyAqIGRlY2lkZSB3aGV0aGVyIHRvIGFwcGx5IHRoZSBjaGFuZ2UgZm9yIGEgcmVsYXRpb24gdGhh dCBpcyBub3QgaW4gdGhlIFJFQURZCisgKiBzdGF0ZSAoc2VlIHNob3VsZF9hcHBseV9jaGFuZ2Vz X2Zvcl9yZWwpIGFzIHdlIHdvbid0IGtub3cgcmVtb3RlX2ZpbmFsX2xzbgorICogYnkgdGhhdCB0 aW1lLgorICovCit2b2lkCithcHBseV9iZ3dvcmtlcl9jaGVja19zdGF0dXModm9pZCkKK3sKKwlM aXN0Q2VsbCAgICpsYzsKKworCWlmIChhbV9hcHBseV9iZ3dvcmtlcigpIHx8IE15U3Vic2NyaXB0 aW9uLT5zdHJlYW0gIT0gU1VCU1RSRUFNX0FQUExZKQorCQlyZXR1cm47CisKKwlmb3JlYWNoKGxj LCBBcHBseVdvcmtlcnNMaXN0KQorCXsKKwkJQXBwbHlCZ3dvcmtlclN0YXRlICp3c3RhdGUgPSAo QXBwbHlCZ3dvcmtlclN0YXRlICopIGxmaXJzdChsYyk7CisKKwkJLyoKKwkJICogV2UgZG9uJ3Qg bG9jayBoZXJlIGFzIGluIHRoZSB3b3JzdCBjYXNlIHdlIHdpbGwganVzdCBkZXRlY3QgdGhlCisJ CSAqIGZhaWx1cmUgb2Ygd29ya2VyIGEgYml0IGxhdGVyLgorCQkgKi8KKwkJaWYgKHdzdGF0ZS0+ cHN0YXRlLT5zdGF0dXMgPT0gQVBQTFlfQkdXT1JLRVJfRVhJVCkKKwkJCWVyZXBvcnQoRVJST1Is CisJCQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUp LAorCQkJCQkgZXJybXNnKCJiYWNrZ3JvdW5kIHdvcmtlciAldSBleGl0ZWQgdW5leHBlY3RlZGx5 IiwKKwkJCQkJCQl3c3RhdGUtPnBzdGF0ZS0+bikpKTsKKwl9CisKKwlpZiAobGlzdF9sZW5ndGgo QXBwbHlXb3JrZXJzRnJlZUxpc3QpICE9IGxpc3RfbGVuZ3RoKEFwcGx5V29ya2Vyc0xpc3QpICYm CisJCSFBbGxUYWJsZXN5bmNzUmVhZHkoKSkKKwl7CisJCWVyZXBvcnQoTE9HLAorCQkJCShlcnJt c2coImxvZ2ljYWwgcmVwbGljYXRpb24gYXBwbHkgd29ya2VycyBmb3Igc3Vic2NyaXB0aW9uIFwi JXNcIiB3aWxsIHJlc3RhcnQiLAorCQkJCQkJTXlTdWJzY3JpcHRpb24tPm5hbWUpLAorCQkJCSBl cnJkZXRhaWwoIkNhbm5vdCBoYW5kbGUgc3RyZWFtZWQgcmVwbGljYXRpb24gdHJhbnNhY3Rpb24g YnkgYXBwbHkgIgorCQkJCQkJICAgImJnd29ya2VycyB1bnRpbCBhbGwgdGFibGVzIGFyZSBzeW5j aHJvbml6ZWQiKSkpOworCisJCXByb2NfZXhpdCgwKTsKKwl9Cit9CisKKy8qIFNldCB0aGUgYXBw bHkgYmFja2dyb3VuZCB3b3JrZXIgc3RhdHVzICovCit2b2lkCithcHBseV9iZ3dvcmtlcl9zZXRf c3RhdHVzKEFwcGx5Qmd3b3JrZXJTdGF0dXMgc3RhdHVzKQoreworCWlmICghYW1fYXBwbHlfYmd3 b3JrZXIoKSkKKwkJcmV0dXJuOworCisJZWxvZyhERUJVRzEsICJbQXBwbHkgQkdXICMldV0gc2V0 IHN0YXR1cyB0byAlZCIsIE15UGFyYWxsZWxTdGF0ZS0+biwgc3RhdHVzKTsKKworCVNwaW5Mb2Nr QWNxdWlyZSgmTXlQYXJhbGxlbFN0YXRlLT5tdXRleCk7CisJTXlQYXJhbGxlbFN0YXRlLT5zdGF0 dXMgPSBzdGF0dXM7CisJU3BpbkxvY2tSZWxlYXNlKCZNeVBhcmFsbGVsU3RhdGUtPm11dGV4KTsK K30KKworLyoKKyAqIERlZmluZSBhIHNhdmVwb2ludCBmb3IgYSBzdWJ4YWN0IGluIGFwcGx5IGJh Y2tncm91bmQgd29ya2VyIGlmIG5lZWRlZC4KKyAqCisgKiBJbnNpZGUgYXBwbHkgYmFja2dyb3Vu ZCB3b3JrZXIgd2UgY2FuIGZpZ3VyZSBvdXQgdGhhdCBuZXcgc3VidHJhbnNhY3Rpb24gd2FzCisg KiBzdGFydGVkIGlmIG5ldyBjaGFuZ2UgYXJyaXZlZCB3aXRoIGRpZmZlcmVudCB4aWQuIEluIHRo YXQgY2FzZSB3ZSBjYW4gZGVmaW5lCisgKiBuYW1lZCBzYXZlcG9pbnQsIHNvIHRoYXQgd2Ugd2Vy ZSBhYmxlIHRvIGNvbW1pdC9yb2xsYmFjayBpdCBzZXBhcmF0ZWx5CisgKiBsYXRlci4KKyAqIFNw ZWNpYWwgY2FzZSBpcyBpZiB0aGUgZmlyc3QgY2hhbmdlIGNvbWVzIGZyb20gc3VidHJhbnNhY3Rp b24sIHRoZW4KKyAqIHdlIGNoZWNrIHRoYXQgY3VycmVudF94aWQgZGlmZmVycyBmcm9tIHN0cmVh bV94aWQuCisgKi8KK3ZvaWQKK2FwcGx5X2Jnd29ya2VyX3N1YnhhY3RfaW5mb19hZGQoVHJhbnNh Y3Rpb25JZCBjdXJyZW50X3hpZCkKK3sKKwlpZiAoY3VycmVudF94aWQgIT0gc3RyZWFtX3hpZCAm JgorCQkhbGlzdF9tZW1iZXJfaW50KHN1YnhhY3RsaXN0LCAoaW50KSBjdXJyZW50X3hpZCkpCisJ eworCQlNZW1vcnlDb250ZXh0IG9sZGN0eDsKKwkJY2hhcgkJc3BuYW1lW01BWFBHUEFUSF07CisK KwkJc25wcmludGYoc3BuYW1lLCBNQVhQR1BBVEgsICJzYXZlcG9pbnRfZm9yX3hpZF8ldSIsIGN1 cnJlbnRfeGlkKTsKKworCQllbG9nKERFQlVHMSwgIltBcHBseSBCR1cgIyV1XSBkZWZpbmluZyBz YXZlcG9pbnQgJXMiLAorCQkJIE15UGFyYWxsZWxTdGF0ZS0+biwgc3BuYW1lKTsKKworCQlEZWZp bmVTYXZlcG9pbnQoc3BuYW1lKTsKKwkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisKKwkJ b2xkY3R4ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKEFwcGx5Q29udGV4dCk7CisJCXN1YnhhY3Rs aXN0ID0gbGFwcGVuZF9pbnQoc3VieGFjdGxpc3QsIChpbnQpIGN1cnJlbnRfeGlkKTsKKwkJTWVt b3J5Q29udGV4dFN3aXRjaFRvKG9sZGN0eCk7CisJfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbG9naWNhbC9kZWNvZGUuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvZGVjb2RlLmMKaW5kZXggYWEyNDI3YmE3My4uMDBmZGRlMDgzMCAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9kZWNvZGUuYworKysgYi9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RlY29kZS5jCkBAIC02NTEsOSArNjUxLDEwIEBAIERl Y29kZUNvbW1pdChMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIFhMb2dSZWNvcmRCdWZmZXIg KmJ1ZiwKIAl7CiAJCWZvciAoaSA9IDA7IGkgPCBwYXJzZWQtPm5zdWJ4YWN0czsgaSsrKQogCQl7 Ci0JCQlSZW9yZGVyQnVmZmVyRm9yZ2V0KGN0eC0+cmVvcmRlciwgcGFyc2VkLT5zdWJ4YWN0c1tp XSwgYnVmLT5vcmlncHRyKTsKKwkJCVJlb3JkZXJCdWZmZXJGb3JnZXQoY3R4LT5yZW9yZGVyLCBw YXJzZWQtPnN1YnhhY3RzW2ldLCBidWYtPm9yaWdwdHIsCisJCQkJCQkJCWNvbW1pdF90aW1lKTsK IAkJfQotCQlSZW9yZGVyQnVmZmVyRm9yZ2V0KGN0eC0+cmVvcmRlciwgeGlkLCBidWYtPm9yaWdw dHIpOworCQlSZW9yZGVyQnVmZmVyRm9yZ2V0KGN0eC0+cmVvcmRlciwgeGlkLCBidWYtPm9yaWdw dHIsIGNvbW1pdF90aW1lKTsKIAogCQlyZXR1cm47CiAJfQpAQCAtODIxLDEwICs4MjIsMTEgQEAg RGVjb2RlQWJvcnQoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LCBYTG9nUmVjb3JkQnVmZmVy ICpidWYsCiAJCWZvciAoaSA9IDA7IGkgPCBwYXJzZWQtPm5zdWJ4YWN0czsgaSsrKQogCQl7CiAJ CQlSZW9yZGVyQnVmZmVyQWJvcnQoY3R4LT5yZW9yZGVyLCBwYXJzZWQtPnN1YnhhY3RzW2ldLAot CQkJCQkJCSAgIGJ1Zi0+cmVjb3JkLT5FbmRSZWNQdHIpOworCQkJCQkJCSAgIGJ1Zi0+cmVjb3Jk LT5FbmRSZWNQdHIsIGFib3J0X3RpbWUpOwogCQl9CiAKLQkJUmVvcmRlckJ1ZmZlckFib3J0KGN0 eC0+cmVvcmRlciwgeGlkLCBidWYtPnJlY29yZC0+RW5kUmVjUHRyKTsKKwkJUmVvcmRlckJ1ZmZl ckFib3J0KGN0eC0+cmVvcmRlciwgeGlkLCBidWYtPnJlY29yZC0+RW5kUmVjUHRyLAorCQkJCQkJ ICAgYWJvcnRfdGltZSk7CiAJfQogCiAJLyogdXBkYXRlIHRoZSBkZWNvZGluZyBzdGF0cyAqLwpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sYXVuY2hlci5jIGIv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sYXVuY2hlci5jCmluZGV4IDJiZGFiNTNl MTkuLmRkNjg2NTEzMTQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvbGF1bmNoZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xhdW5j aGVyLmMKQEAgLTU0LDYgKzU0LDcgQEAKIAogaW50CQkJbWF4X2xvZ2ljYWxfcmVwbGljYXRpb25f d29ya2VycyA9IDQ7CiBpbnQJCQltYXhfc3luY193b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24gPSAy OworaW50CQkJbWF4X2FwcGx5X2Jnd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uID0gMzsKIAogTG9n aWNhbFJlcFdvcmtlciAqTXlMb2dpY2FsUmVwV29ya2VyID0gTlVMTDsKIApAQCAtNzMsNiArNzQs NyBAQCBzdGF0aWMgdm9pZCBsb2dpY2FscmVwX2xhdW5jaGVyX29uZXhpdChpbnQgY29kZSwgRGF0 dW0gYXJnKTsKIHN0YXRpYyB2b2lkIGxvZ2ljYWxyZXBfd29ya2VyX29uZXhpdChpbnQgY29kZSwg RGF0dW0gYXJnKTsKIHN0YXRpYyB2b2lkIGxvZ2ljYWxyZXBfd29ya2VyX2RldGFjaCh2b2lkKTsK IHN0YXRpYyB2b2lkIGxvZ2ljYWxyZXBfd29ya2VyX2NsZWFudXAoTG9naWNhbFJlcFdvcmtlciAq d29ya2VyKTsKK3N0YXRpYyB2b2lkIGxvZ2ljYWxyZXBfd29ya2VyX3N0b3BfaW50ZXJuYWwoTG9n aWNhbFJlcFdvcmtlciAqd29ya2VyKTsKIAogc3RhdGljIGJvb2wgb25fY29tbWl0X2xhdW5jaGVy X3dha2V1cCA9IGZhbHNlOwogCkBAIC0yMjMsNiArMjI1LDEwIEBAIGxvZ2ljYWxyZXBfd29ya2Vy X2ZpbmQoT2lkIHN1YmlkLCBPaWQgcmVsaWQsIGJvb2wgb25seV9ydW5uaW5nKQogCXsKIAkJTG9n aWNhbFJlcFdvcmtlciAqdyA9ICZMb2dpY2FsUmVwQ3R4LT53b3JrZXJzW2ldOwogCisJCS8qIFdl IG9ubHkgbmVlZCBtYWluIGFwcGx5IHdvcmtlciBvciB0YWJsZSBzeW5jIHdvcmtlciBoZXJlICov CisJCWlmICh3LT5zdWJ3b3JrZXIpCisJCQljb250aW51ZTsKKwogCQlpZiAody0+aW5fdXNlICYm IHctPnN1YmlkID09IHN1YmlkICYmIHctPnJlbGlkID09IHJlbGlkICYmCiAJCQkoIW9ubHlfcnVu bmluZyB8fCB3LT5wcm9jKSkKIAkJewpAQCAtMjU5LDExICsyNjUsMTEgQEAgbG9naWNhbHJlcF93 b3JrZXJzX2ZpbmQoT2lkIHN1YmlkLCBib29sIG9ubHlfcnVubmluZykKIH0KIAogLyoKLSAqIFN0 YXJ0IG5ldyBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlciwgaWYgcG9zc2libGUuCisgKiBTdGFydCBu ZXcgYmFja2dyb3VuZCB3b3JrZXIsIGlmIHBvc3NpYmxlLgogICovCi12b2lkCitib29sCiBsb2dp Y2FscmVwX3dvcmtlcl9sYXVuY2goT2lkIGRiaWQsIE9pZCBzdWJpZCwgY29uc3QgY2hhciAqc3Vi bmFtZSwgT2lkIHVzZXJpZCwKLQkJCQkJCSBPaWQgcmVsaWQpCisJCQkJCQkgT2lkIHJlbGlkLCBk c21faGFuZGxlIHN1Yndvcmtlcl9kc20pCiB7CiAJQmFja2dyb3VuZFdvcmtlciBiZ3c7CiAJQmFj a2dyb3VuZFdvcmtlckhhbmRsZSAqYmd3X2hhbmRsZTsKQEAgLTI3Myw2ICsyNzksMTAgQEAgbG9n aWNhbHJlcF93b3JrZXJfbGF1bmNoKE9pZCBkYmlkLCBPaWQgc3ViaWQsIGNvbnN0IGNoYXIgKnN1 Ym5hbWUsIE9pZCB1c2VyaWQsCiAJTG9naWNhbFJlcFdvcmtlciAqd29ya2VyID0gTlVMTDsKIAlp bnQJCQluc3luY3dvcmtlcnM7CiAJVGltZXN0YW1wVHogbm93OworCWJvb2wJCWlzX3N1Yndvcmtl ciA9IChzdWJ3b3JrZXJfZHNtICE9IERTTV9IQU5ETEVfSU5WQUxJRCk7CisKKwkvKiBXZSBkb24n dCBzdXBwb3J0IHRhYmxlIHN5bmMgaW4gc3Vid29ya2VyICovCisJQXNzZXJ0KCEoaXNfc3Vid29y a2VyICYmIE9pZElzVmFsaWQocmVsaWQpKSk7CiAKIAllcmVwb3J0KERFQlVHMSwKIAkJCShlcnJt c2dfaW50ZXJuYWwoInN0YXJ0aW5nIGxvZ2ljYWwgcmVwbGljYXRpb24gd29ya2VyIGZvciBzdWJz Y3JpcHRpb24gXCIlc1wiIiwKQEAgLTM1MCw3ICszNjAsNyBAQCByZXRyeToKIAlpZiAoT2lkSXNW YWxpZChyZWxpZCkgJiYgbnN5bmN3b3JrZXJzID49IG1heF9zeW5jX3dvcmtlcnNfcGVyX3N1YnNj cmlwdGlvbikKIAl7CiAJCUxXTG9ja1JlbGVhc2UoTG9naWNhbFJlcFdvcmtlckxvY2spOwotCQly ZXR1cm47CisJCXJldHVybiBmYWxzZTsKIAl9CiAKIAkvKgpAQCAtMzY0LDcgKzM3NCw3IEBAIHJl dHJ5OgogCQkJCShlcnJjb2RlKEVSUkNPREVfQ09ORklHVVJBVElPTl9MSU1JVF9FWENFRURFRCks CiAJCQkJIGVycm1zZygib3V0IG9mIGxvZ2ljYWwgcmVwbGljYXRpb24gd29ya2VyIHNsb3RzIiks CiAJCQkJIGVycmhpbnQoIllvdSBtaWdodCBuZWVkIHRvIGluY3JlYXNlIG1heF9sb2dpY2FsX3Jl cGxpY2F0aW9uX3dvcmtlcnMuIikpKTsKLQkJcmV0dXJuOworCQlyZXR1cm4gZmFsc2U7CiAJfQog CiAJLyogUHJlcGFyZSB0aGUgd29ya2VyIHNsb3QuICovCkBAIC0zNzksNiArMzg5LDcgQEAgcmV0 cnk6CiAJd29ya2VyLT5yZWxzdGF0ZSA9IFNVQlJFTF9TVEFURV9VTktOT1dOOwogCXdvcmtlci0+ cmVsc3RhdGVfbHNuID0gSW52YWxpZFhMb2dSZWNQdHI7CiAJd29ya2VyLT5zdHJlYW1fZmlsZXNl dCA9IE5VTEw7CisJd29ya2VyLT5zdWJ3b3JrZXIgPSBpc19zdWJ3b3JrZXI7CiAJd29ya2VyLT5s YXN0X2xzbiA9IEludmFsaWRYTG9nUmVjUHRyOwogCVRJTUVTVEFNUF9OT0JFR0lOKHdvcmtlci0+ bGFzdF9zZW5kX3RpbWUpOwogCVRJTUVTVEFNUF9OT0JFR0lOKHdvcmtlci0+bGFzdF9yZWN2X3Rp bWUpOwpAQCAtMzk2LDE5ICs0MDcsMzAgQEAgcmV0cnk6CiAJCUJHV09SS0VSX0JBQ0tFTkRfREFU QUJBU0VfQ09OTkVDVElPTjsKIAliZ3cuYmd3X3N0YXJ0X3RpbWUgPSBCZ1dvcmtlclN0YXJ0X1Jl Y292ZXJ5RmluaXNoZWQ7CiAJc25wcmludGYoYmd3LmJnd19saWJyYXJ5X25hbWUsIEJHV19NQVhM RU4sICJwb3N0Z3JlcyIpOwotCXNucHJpbnRmKGJndy5iZ3dfZnVuY3Rpb25fbmFtZSwgQkdXX01B WExFTiwgIkFwcGx5V29ya2VyTWFpbiIpOworCisJaWYgKCFpc19zdWJ3b3JrZXIpCisJCXNucHJp bnRmKGJndy5iZ3dfZnVuY3Rpb25fbmFtZSwgQkdXX01BWExFTiwgIkFwcGx5V29ya2VyTWFpbiIp OworCWVsc2UKKwkJc25wcmludGYoYmd3LmJnd19mdW5jdGlvbl9uYW1lLCBCR1dfTUFYTEVOLCAi QXBwbHlCZ3dvcmtlck1haW4iKTsKKwogCWlmIChPaWRJc1ZhbGlkKHJlbGlkKSkKIAkJc25wcmlu dGYoYmd3LmJnd19uYW1lLCBCR1dfTUFYTEVOLAogCQkJCSAibG9naWNhbCByZXBsaWNhdGlvbiB3 b3JrZXIgZm9yIHN1YnNjcmlwdGlvbiAldSBzeW5jICV1Iiwgc3ViaWQsIHJlbGlkKTsKLQllbHNl CisJZWxzZSBpZiAoIWlzX3N1YndvcmtlcikKIAkJc25wcmludGYoYmd3LmJnd19uYW1lLCBCR1df TUFYTEVOLAogCQkJCSAibG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXIgZm9yIHN1YnNjcmlwdGlv biAldSIsIHN1YmlkKTsKKwllbHNlCisJCXNucHJpbnRmKGJndy5iZ3dfbmFtZSwgQkdXX01BWExF TiwKKwkJCQkgImxvZ2ljYWwgcmVwbGljYXRpb24gYmFja2dyb3VuZCBhcHBseSB3b3JrZXIgZm9y IHN1YnNjcmlwdGlvbiAldSAiLCBzdWJpZCk7CiAJc25wcmludGYoYmd3LmJnd190eXBlLCBCR1df TUFYTEVOLCAibG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXIiKTsKIAogCWJndy5iZ3dfcmVzdGFy dF90aW1lID0gQkdXX05FVkVSX1JFU1RBUlQ7CiAJYmd3LmJnd19ub3RpZnlfcGlkID0gTXlQcm9j UGlkOwogCWJndy5iZ3dfbWFpbl9hcmcgPSBJbnQzMkdldERhdHVtKHNsb3QpOwogCisJaWYgKGlz X3N1YndvcmtlcikKKwkJbWVtY3B5KGJndy5iZ3dfZXh0cmEsICZzdWJ3b3JrZXJfZHNtLCBzaXpl b2YoZHNtX2hhbmRsZSkpOworCiAJaWYgKCFSZWdpc3RlckR5bmFtaWNCYWNrZ3JvdW5kV29ya2Vy KCZiZ3csICZiZ3dfaGFuZGxlKSkKIAl7CiAJCS8qIEZhaWxlZCB0byBzdGFydCB3b3JrZXIsIHNv IGNsZWFuIHVwIHRoZSB3b3JrZXIgc2xvdC4gKi8KQEAgLTQyMSwxMSArNDQzLDEzIEBAIHJldHJ5 OgogCQkJCShlcnJjb2RlKEVSUkNPREVfQ09ORklHVVJBVElPTl9MSU1JVF9FWENFRURFRCksCiAJ CQkJIGVycm1zZygib3V0IG9mIGJhY2tncm91bmQgd29ya2VyIHNsb3RzIiksCiAJCQkJIGVycmhp bnQoIllvdSBtaWdodCBuZWVkIHRvIGluY3JlYXNlIG1heF93b3JrZXJfcHJvY2Vzc2VzLiIpKSk7 Ci0JCXJldHVybjsKKwkJcmV0dXJuIGZhbHNlOwogCX0KIAogCS8qIE5vdyB3YWl0IHVudGlsIGl0 IGF0dGFjaGVzLiAqLwogCVdhaXRGb3JSZXBsaWNhdGlvbldvcmtlckF0dGFjaCh3b3JrZXIsIGdl bmVyYXRpb24sIGJnd19oYW5kbGUpOworCisJcmV0dXJuIHRydWU7CiB9CiAKIC8qCkBAIC00MzYs NyArNDYwLDYgQEAgdm9pZAogbG9naWNhbHJlcF93b3JrZXJfc3RvcChPaWQgc3ViaWQsIE9pZCBy ZWxpZCkKIHsKIAlMb2dpY2FsUmVwV29ya2VyICp3b3JrZXI7Ci0JdWludDE2CQlnZW5lcmF0aW9u OwogCiAJTFdMb2NrQWNxdWlyZShMb2dpY2FsUmVwV29ya2VyTG9jaywgTFdfU0hBUkVEKTsKIApA QCAtNDQ5LDYgKzQ3MiwyMiBAQCBsb2dpY2FscmVwX3dvcmtlcl9zdG9wKE9pZCBzdWJpZCwgT2lk IHJlbGlkKQogCQlyZXR1cm47CiAJfQogCisJbG9naWNhbHJlcF93b3JrZXJfc3RvcF9pbnRlcm5h bCh3b3JrZXIpOworCisJTFdMb2NrUmVsZWFzZShMb2dpY2FsUmVwV29ya2VyTG9jayk7Cit9CisK Ky8qCisgKiBXb3JraG9yc2UgZm9yIGxvZ2ljYWxyZXBfd29ya2VyX3N0b3AoKSBhbmQgbG9naWNh bHJlcF93b3JrZXJfZGV0YWNoKCkuIFN0b3AKKyAqIHRoZSB3b3JrZXIgYW5kIHdhaXQgZm9yIGl0 IHRvIGRpZS4KKyAqLworc3RhdGljIHZvaWQKK2xvZ2ljYWxyZXBfd29ya2VyX3N0b3BfaW50ZXJu YWwoTG9naWNhbFJlcFdvcmtlciAqd29ya2VyKQoreworCXVpbnQxNgkJZ2VuZXJhdGlvbjsKKwor CUFzc2VydChMV0xvY2tIZWxkQnlNZShMb2dpY2FsUmVwV29ya2VyTG9jaykpOworCiAJLyoKIAkg KiBSZW1lbWJlciB3aGljaCBnZW5lcmF0aW9uIHdhcyBvdXIgd29ya2VyIHNvIHdlIGNhbiBjaGVj ayBpZiB3aGF0IHdlIHNlZQogCSAqIGlzIHN0aWxsIHRoZSBzYW1lIG9uZS4KQEAgLTQ4NSwxMCAr NTI0LDcgQEAgbG9naWNhbHJlcF93b3JrZXJfc3RvcChPaWQgc3ViaWQsIE9pZCByZWxpZCkKIAkJ ICogZGlmZmVyZW50LCBtZWFuaW5nIHRoYXQgYSBkaWZmZXJlbnQgd29ya2VyIGhhcyB0YWtlbiB0 aGUgc2xvdC4KIAkJICovCiAJCWlmICghd29ya2VyLT5pbl91c2UgfHwgd29ya2VyLT5nZW5lcmF0 aW9uICE9IGdlbmVyYXRpb24pCi0JCXsKLQkJCUxXTG9ja1JlbGVhc2UoTG9naWNhbFJlcFdvcmtl ckxvY2spOwogCQkJcmV0dXJuOwotCQl9CiAKIAkJLyogV29ya2VyIGhhcyBhc3NpZ25lZCBwcm9j LCBzbyBpdCBoYXMgc3RhcnRlZC4gKi8KIAkJaWYgKHdvcmtlci0+cHJvYykKQEAgLTUyMiw4ICs1 NTgsNiBAQCBsb2dpY2FscmVwX3dvcmtlcl9zdG9wKE9pZCBzdWJpZCwgT2lkIHJlbGlkKQogCiAJ CUxXTG9ja0FjcXVpcmUoTG9naWNhbFJlcFdvcmtlckxvY2ssIExXX1NIQVJFRCk7CiAJfQotCi0J TFdMb2NrUmVsZWFzZShMb2dpY2FsUmVwV29ya2VyTG9jayk7CiB9CiAKIC8qCkBAIC01OTksNiAr NjMzLDI5IEBAIGxvZ2ljYWxyZXBfd29ya2VyX2F0dGFjaChpbnQgc2xvdCkKIHN0YXRpYyB2b2lk CiBsb2dpY2FscmVwX3dvcmtlcl9kZXRhY2godm9pZCkKIHsKKwkvKgorCSAqIElmIHdlIGFyZSB0 aGUgbWFpbiBhcHBseSB3b3JrZXIsIHN0b3AgYWxsIHRoZSBhcHBseSBiYWNrZ3JvdW5kIHdvcmtl cnMKKwkgKiB3ZSBzdGFydGVkIGJlZm9yZS4KKwkgKi8KKwlpZiAoIU15TG9naWNhbFJlcFdvcmtl ci0+c3Vid29ya2VyKQorCXsKKwkJTGlzdAkgICAqd29ya2VyczsKKwkJTGlzdENlbGwgICAqbGM7 CisKKwkJTFdMb2NrQWNxdWlyZShMb2dpY2FsUmVwV29ya2VyTG9jaywgTFdfU0hBUkVEKTsKKwor CQl3b3JrZXJzID0gbG9naWNhbHJlcF93b3JrZXJzX2ZpbmQoTXlMb2dpY2FsUmVwV29ya2VyLT5z dWJpZCwgdHJ1ZSk7CisJCWZvcmVhY2gobGMsIHdvcmtlcnMpCisJCXsKKwkJCUxvZ2ljYWxSZXBX b3JrZXIgKncgPSAoTG9naWNhbFJlcFdvcmtlciAqKSBsZmlyc3QobGMpOworCisJCQlpZiAody0+ c3Vid29ya2VyKQorCQkJCWxvZ2ljYWxyZXBfd29ya2VyX3N0b3BfaW50ZXJuYWwodyk7CisJCX0K KworCQlMV0xvY2tSZWxlYXNlKExvZ2ljYWxSZXBXb3JrZXJMb2NrKTsKKwl9CisKIAkvKiBCbG9j ayBjb25jdXJyZW50IGFjY2Vzcy4gKi8KIAlMV0xvY2tBY3F1aXJlKExvZ2ljYWxSZXBXb3JrZXJM b2NrLCBMV19FWENMVVNJVkUpOwogCkBAIC02MjEsNiArNjc4LDcgQEAgbG9naWNhbHJlcF93b3Jr ZXJfY2xlYW51cChMb2dpY2FsUmVwV29ya2VyICp3b3JrZXIpCiAJd29ya2VyLT51c2VyaWQgPSBJ bnZhbGlkT2lkOwogCXdvcmtlci0+c3ViaWQgPSBJbnZhbGlkT2lkOwogCXdvcmtlci0+cmVsaWQg PSBJbnZhbGlkT2lkOworCXdvcmtlci0+c3Vid29ya2VyID0gZmFsc2U7CiB9CiAKIC8qCkBAIC02 NzksNiArNzM3LDMwIEBAIGxvZ2ljYWxyZXBfc3luY193b3JrZXJfY291bnQoT2lkIHN1YmlkKQog CXJldHVybiByZXM7CiB9CiAKKy8qCisgKiBDb3VudCB0aGUgbnVtYmVyIG9mIHJlZ2lzdGVyZWQg KG5vdCBuZWNlc3NhcmlseSBydW5uaW5nKSBhcHBseSBiYWNrZ3JvdW5kCisgKiB3b3JrZXIgZm9y IGEgc3Vic2NyaXB0aW9uLgorICovCitpbnQKK2xvZ2ljYWxyZXBfYXBwbHlfYmFja2dyb3VuZF93 b3JrZXJfY291bnQoT2lkIHN1YmlkKQoreworCWludAkJCWk7CisJaW50CQkJcmVzID0gMDsKKwor CUFzc2VydChMV0xvY2tIZWxkQnlNZShMb2dpY2FsUmVwV29ya2VyTG9jaykpOworCisJLyogU2Vh cmNoIGZvciBhdHRhY2hlZCB3b3JrZXIgZm9yIGEgZ2l2ZW4gc3Vic2NyaXB0aW9uIGlkLiAqLwor CWZvciAoaSA9IDA7IGkgPCBtYXhfbG9naWNhbF9yZXBsaWNhdGlvbl93b3JrZXJzOyBpKyspCisJ eworCQlMb2dpY2FsUmVwV29ya2VyICp3ID0gJkxvZ2ljYWxSZXBDdHgtPndvcmtlcnNbaV07CisK KwkJaWYgKHctPnN1YmlkID09IHN1YmlkICYmIHctPnN1YndvcmtlcikKKwkJCXJlcysrOworCX0K KworCXJldHVybiByZXM7Cit9CisKIC8qCiAgKiBBcHBseUxhdW5jaGVyU2htZW1TaXplCiAgKgkJ Q29tcHV0ZSBzcGFjZSBuZWVkZWQgZm9yIHJlcGxpY2F0aW9uIGxhdW5jaGVyIHNoYXJlZCBtZW1v cnkKQEAgLTg2OCw3ICs5NTAsNyBAQCBBcHBseUxhdW5jaGVyTWFpbihEYXR1bSBtYWluX2FyZykK IAkJCQkJd2FpdF90aW1lID0gd2FsX3JldHJpZXZlX3JldHJ5X2ludGVydmFsOwogCiAJCQkJCWxv Z2ljYWxyZXBfd29ya2VyX2xhdW5jaChzdWItPmRiaWQsIHN1Yi0+b2lkLCBzdWItPm5hbWUsCi0J CQkJCQkJCQkJCSBzdWItPm93bmVyLCBJbnZhbGlkT2lkKTsKKwkJCQkJCQkJCQkJIHN1Yi0+b3du ZXIsIEludmFsaWRPaWQsIERTTV9IQU5ETEVfSU5WQUxJRCk7CiAJCQkJfQogCQkJfQogCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL29yaWdpbi5jIGIvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9vcmlnaW4uYwppbmRleCAyMTkzN2FiMmQzLi45Mjcz MDExYjBhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL29yaWdp bi5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvb3JpZ2luLmMKQEAgLTEw NjMsMTIgKzEwNjMsMjEgQEAgUmVwbGljYXRpb25PcmlnaW5FeGl0Q2xlYW51cChpbnQgY29kZSwg RGF0dW0gYXJnKQogICogYXJyYXkgZG9lc24ndCBoYXZlIHRvIGJlIHNlYXJjaGVkIHdoZW4gY2Fs bGluZwogICogcmVwbG9yaWdpbl9zZXNzaW9uX2FkdmFuY2UoKS4KICAqCi0gKiBPYnZpb3VzbHkg b25seSBvbmUgc3VjaCBjYWNoZWQgb3JpZ2luIGNhbiBleGlzdCBwZXIgcHJvY2VzcyBhbmQgdGhl IGN1cnJlbnQKKyAqIE5vcm1hbGx5IG9ubHkgb25lIHN1Y2ggY2FjaGVkIG9yaWdpbiBjYW4gZXhp c3QgcGVyIHByb2Nlc3MgYW5kIHRoZSBjdXJyZW50CiAgKiBjYWNoZWQgdmFsdWUgY2FuIG9ubHkg YmUgc2V0IGFnYWluIGFmdGVyIHRoZSBwcmV2aW91cyB2YWx1ZSBpcyB0b3JuIGRvd24KICAqIHdp dGggcmVwbG9yaWdpbl9zZXNzaW9uX3Jlc2V0KCkuCisgKgorICogSG93ZXZlciwgSWYgbXVzdF9h Y3F1aXJlIGlzIGZhbHNlLCB3ZSBhbGxvdyBwcm9jZXNzIHRvIGdldCB0aGUgc2xvdCB3aGljaCBp cworICogYWxyZWFkeSBhY3F1aXJlZCBieSBvdGhlciBwcm9jZXNzLiBJdCdzIHNhZmUgYmVjYXVz ZSAxKSBUaGUgb25seSBjYWxsZXIKKyAqIChhcHBseSBiYWNrZ3JvdW5kIHdvcmtlcnMpIHdpbGwg bWFpbnRhaW4gdGhlIGNvbW1pdCBvcmRlciBieSBhbGxvd2luZyBvbmx5CisgKiBvbmUgcHJvY2Vz cyB0byBjb21taXQgYXQgYSB0aW1lLCBzbyBubyB0d28gd29ya2VycyB3aWxsIGJlIG9wZXJhdGlu ZyBvbiB0aGUKKyAqIHNhbWUgb3JpZ2luIGF0IHRoZSBzYW1lIHRpbWUgKHNlZSBjb21tZW50cyBp biBsb2dpY2FsL3dvcmtlci5jKS4gMikgRXZlbgorICogdGhvdWdoIHdlIHRyeSB0byBhZHZhbmNl IHRoZSBzZXNzaW9uJ3Mgb3JpZ2luIGNvbmN1cnJlbnRseSwgaXQncyBzYWZlIHRvIGRvCisgKiBz byBhcyB3ZSBjaGFuZ2UvYWR2YW5jZSB0aGUgc2Vzc2lvbl9vcmlnaW4gTFNOcyB1bmRlciByZXBs aWNhdGVfc3RhdGUKKyAqIExXTG9jay4KICAqLwogdm9pZAotcmVwbG9yaWdpbl9zZXNzaW9uX3Nl dHVwKFJlcE9yaWdpbklkIG5vZGUpCityZXBsb3JpZ2luX3Nlc3Npb25fc2V0dXAoUmVwT3JpZ2lu SWQgbm9kZSwgYm9vbCBtdXN0X2FjcXVpcmUpCiB7CiAJc3RhdGljIGJvb2wgcmVnaXN0ZXJlZF9j bGVhbnVwOwogCWludAkJCWk7CkBAIC0xMTEwLDcgKzExMTksNyBAQCByZXBsb3JpZ2luX3Nlc3Np b25fc2V0dXAoUmVwT3JpZ2luSWQgbm9kZSkKIAkJaWYgKGN1cnN0YXRlLT5yb2lkZW50ICE9IG5v ZGUpCiAJCQljb250aW51ZTsKIAotCQllbHNlIGlmIChjdXJzdGF0ZS0+YWNxdWlyZWRfYnkgIT0g MCkKKwkJZWxzZSBpZiAoY3Vyc3RhdGUtPmFjcXVpcmVkX2J5ICE9IDAgJiYgbXVzdF9hY3F1aXJl KQogCQl7CiAJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9J Tl9VU0UpLApAQCAtMTE0MSw3ICsxMTUwLDE0IEBAIHJlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChS ZXBPcmlnaW5JZCBub2RlKQogCiAJQXNzZXJ0KHNlc3Npb25fcmVwbGljYXRpb25fc3RhdGUtPnJv aWRlbnQgIT0gSW52YWxpZFJlcE9yaWdpbklkKTsKIAotCXNlc3Npb25fcmVwbGljYXRpb25fc3Rh dGUtPmFjcXVpcmVkX2J5ID0gTXlQcm9jUGlkOworCWlmIChtdXN0X2FjcXVpcmUpCisJCXNlc3Np b25fcmVwbGljYXRpb25fc3RhdGUtPmFjcXVpcmVkX2J5ID0gTXlQcm9jUGlkOworCWVsc2UgaWYg KHNlc3Npb25fcmVwbGljYXRpb25fc3RhdGUtPmFjcXVpcmVkX2J5ID09IDApCisJCWVyZXBvcnQo RVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9DT05GSUdVUkFUSU9OX0xJTUlUX0VYQ0VFREVE KSwKKwkJCQkgZXJybXNnKCJjb3VsZCBub3QgZmluZCBjb3JyZWN0IHJlcGxpY2F0aW9uIHN0YXRl IHNsb3QgZm9yIHJlcGxpY2F0aW9uIG9yaWdpbiB3aXRoIE9JRCAldSBmb3IgYXBwbHkgYmFja2dy b3VuZCB3b3JrZXIiLAorCQkJCQkJbm9kZSksCisJCQkJIGVycmhpbnQoIlRoZXJlIGlzIG5vIHJl cGxpY2F0aW9uIHN0YXRlIHNsb3Qgc2V0IGJ5IGl0cyBtYWluIGFwcGx5IHdvcmtlci4iKSkpOwog CiAJTFdMb2NrUmVsZWFzZShSZXBsaWNhdGlvbk9yaWdpbkxvY2spOwogCkBAIC0xMzIxLDcgKzEz MzcsNyBAQCBwZ19yZXBsaWNhdGlvbl9vcmlnaW5fc2Vzc2lvbl9zZXR1cChQR19GVU5DVElPTl9B UkdTKQogCiAJbmFtZSA9IHRleHRfdG9fY3N0cmluZygodGV4dCAqKSBEYXR1bUdldFBvaW50ZXIo UEdfR0VUQVJHX0RBVFVNKDApKSk7CiAJb3JpZ2luID0gcmVwbG9yaWdpbl9ieV9uYW1lKG5hbWUs IGZhbHNlKTsKLQlyZXBsb3JpZ2luX3Nlc3Npb25fc2V0dXAob3JpZ2luKTsKKwlyZXBsb3JpZ2lu X3Nlc3Npb25fc2V0dXAob3JpZ2luLCB0cnVlKTsKIAogCXJlcGxvcmlnaW5fc2Vzc2lvbl9vcmln aW4gPSBvcmlnaW47CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvcHJvdG8uYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcHJvdG8uYwppbmRl eCBmZjg1MTNlMmQyLi5hODg4MDM4ZWI0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL3Byb3RvLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNh bC9wcm90by5jCkBAIC0xMTY2LDI4ICsxMTY2LDQ3IEBAIGxvZ2ljYWxyZXBfcmVhZF9zdHJlYW1f Y29tbWl0KFN0cmluZ0luZm8gaW4sIExvZ2ljYWxSZXBDb21taXREYXRhICpjb21taXRfZGF0YSkK ICAqLwogdm9pZAogbG9naWNhbHJlcF93cml0ZV9zdHJlYW1fYWJvcnQoU3RyaW5nSW5mbyBvdXQs IFRyYW5zYWN0aW9uSWQgeGlkLAotCQkJCQkJCSAgVHJhbnNhY3Rpb25JZCBzdWJ4aWQpCisJCQkJ CQkJICBSZW9yZGVyQnVmZmVyVFhOICp0eG4sIFhMb2dSZWNQdHIgYWJvcnRfbHNuKQogewogCXBx X3NlbmRieXRlKG91dCwgTE9HSUNBTF9SRVBfTVNHX1NUUkVBTV9BQk9SVCk7CiAKLQlBc3NlcnQo VHJhbnNhY3Rpb25JZElzVmFsaWQoeGlkKSAmJiBUcmFuc2FjdGlvbklkSXNWYWxpZChzdWJ4aWQp KTsKKwlBc3NlcnQoVHJhbnNhY3Rpb25JZElzVmFsaWQoeGlkKSAmJiBUcmFuc2FjdGlvbklkSXNW YWxpZCh0eG4tPnhpZCkpOwogCiAJLyogdHJhbnNhY3Rpb24gSUQgKi8KIAlwcV9zZW5kaW50MzIo b3V0LCB4aWQpOwotCXBxX3NlbmRpbnQzMihvdXQsIHN1YnhpZCk7CisJcHFfc2VuZGludDMyKG91 dCwgdHhuLT54aWQpOworCXBxX3NlbmRpbnQ2NChvdXQsIGFib3J0X2xzbik7CisJcHFfc2VuZGlu dDY0KG91dCwgdHhuLT54YWN0X3RpbWUuYWJvcnRfdGltZSk7CiB9CiAKIC8qCiAgKiBSZWFkIFNU UkVBTSBBQk9SVCBmcm9tIHRoZSBvdXRwdXQgc3RyZWFtLgogICovCiB2b2lkCi1sb2dpY2FscmVw X3JlYWRfc3RyZWFtX2Fib3J0KFN0cmluZ0luZm8gaW4sIFRyYW5zYWN0aW9uSWQgKnhpZCwKLQkJ CQkJCQkgVHJhbnNhY3Rpb25JZCAqc3VieGlkKQorbG9naWNhbHJlcF9yZWFkX3N0cmVhbV9hYm9y dChTdHJpbmdJbmZvIGluLAorCQkJCQkJCSBMb2dpY2FsUmVwU3RyZWFtQWJvcnREYXRhICphYm9y dF9kYXRhLAorCQkJCQkJCSBib29sIGluY2x1ZGVfYWJvcnRfbHNuKQogewotCUFzc2VydCh4aWQg JiYgc3VieGlkKTsKKwlBc3NlcnQoYWJvcnRfZGF0YSk7CisKKwlhYm9ydF9kYXRhLT54aWQgPSBw cV9nZXRtc2dpbnQoaW4sIDQpOworCWFib3J0X2RhdGEtPnN1YnhpZCA9IHBxX2dldG1zZ2ludChp biwgNCk7CiAKLQkqeGlkID0gcHFfZ2V0bXNnaW50KGluLCA0KTsKLQkqc3VieGlkID0gcHFfZ2V0 bXNnaW50KGluLCA0KTsKKwkvKgorCSAqIElmIHRoZSB2ZXJzaW9uIG9mIHRoZSBwdWJsaXNoZXIg aXMgbG93ZXIgdGhhbiB0aGUgdmVyc2lvbiBvZiB0aGUKKwkgKiBzdWJzY3JpYmVyLCBpdCBtYXkg bm90IHN1cHBvcnQgc2VuZGluZyB0aGVzZSB0d28gZmllbGRzLCBzbyBvbmx5IHRha2UKKwkgKiB0 aGVzZSBmaWVsZHMgd2hlbiBpbmNsdWRlX2Fib3J0X2xzbiBpcyB0cnVlLgorCSAqLworCWlmIChp bmNsdWRlX2Fib3J0X2xzbikKKwl7CisJCWFib3J0X2RhdGEtPmFib3J0X2xzbiA9IHBxX2dldG1z Z2ludDY0KGluKTsKKwkJYWJvcnRfZGF0YS0+YWJvcnRfdGltZSA9IHBxX2dldG1zZ2ludDY0KGlu KTsKKwl9CisJZWxzZQorCXsKKwkJYWJvcnRfZGF0YS0+YWJvcnRfbHNuID0gSW52YWxpZFhMb2dS ZWNQdHI7CisJCWFib3J0X2RhdGEtPmFib3J0X3RpbWUgPSAwOworCX0KIH0KIAogLyoKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5jIGIv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZW9yZGVyYnVmZmVyLmMKaW5kZXggOGRh NWY5MDg5Yy4uM2QyYmJkYjM4ZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC9yZW9yZGVyYnVmZmVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9n aWNhbC9yZW9yZGVyYnVmZmVyLmMKQEAgLTI4MjYsNyArMjgyNiw4IEBAIFJlb3JkZXJCdWZmZXJG aW5pc2hQcmVwYXJlZChSZW9yZGVyQnVmZmVyICpyYiwgVHJhbnNhY3Rpb25JZCB4aWQsCiAgKiBk aXNrLgogICovCiB2b2lkCi1SZW9yZGVyQnVmZmVyQWJvcnQoUmVvcmRlckJ1ZmZlciAqcmIsIFRy YW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRyIGxzbikKK1Jlb3JkZXJCdWZmZXJBYm9ydChSZW9y ZGVyQnVmZmVyICpyYiwgVHJhbnNhY3Rpb25JZCB4aWQsIFhMb2dSZWNQdHIgbHNuLAorCQkJCSAg IFRpbWVzdGFtcFR6IGFib3J0X3RpbWUpCiB7CiAJUmVvcmRlckJ1ZmZlclRYTiAqdHhuOwogCkBA IC0yODM3LDYgKzI4MzgsOCBAQCBSZW9yZGVyQnVmZmVyQWJvcnQoUmVvcmRlckJ1ZmZlciAqcmIs IFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRyIGxzbikKIAlpZiAodHhuID09IE5VTEwpCiAJ CXJldHVybjsKIAorCXR4bi0+eGFjdF90aW1lLmFib3J0X3RpbWUgPSBhYm9ydF90aW1lOworCiAJ LyogRm9yIHN0cmVhbWVkIHRyYW5zYWN0aW9ucyBub3RpZnkgdGhlIHJlbW90ZSBub2RlIGFib3V0 IHRoZSBhYm9ydC4gKi8KIAlpZiAocmJ0eG5faXNfc3RyZWFtZWQodHhuKSkKIAl7CkBAIC0yOTEx LDcgKzI5MTQsOCBAQCBSZW9yZGVyQnVmZmVyQWJvcnRPbGQoUmVvcmRlckJ1ZmZlciAqcmIsIFRy YW5zYWN0aW9uSWQgb2xkZXN0UnVubmluZ1hpZCkKICAqIHRvIHRoaXMgeGlkIG1pZ2h0IHJlLWNy ZWF0ZSB0aGUgdHJhbnNhY3Rpb24gaW5jb21wbGV0ZWx5LgogICovCiB2b2lkCi1SZW9yZGVyQnVm ZmVyRm9yZ2V0KFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFuc2FjdGlvbklkIHhpZCwgWExvZ1JlY1B0 ciBsc24pCitSZW9yZGVyQnVmZmVyRm9yZ2V0KFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFuc2FjdGlv bklkIHhpZCwgWExvZ1JlY1B0ciBsc24sCisJCQkJCVRpbWVzdGFtcFR6IGFib3J0X3RpbWUpCiB7 CiAJUmVvcmRlckJ1ZmZlclRYTiAqdHhuOwogCkBAIC0yOTIyLDYgKzI5MjYsOCBAQCBSZW9yZGVy QnVmZmVyRm9yZ2V0KFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFuc2FjdGlvbklkIHhpZCwgWExvZ1Jl Y1B0ciBsc24pCiAJaWYgKHR4biA9PSBOVUxMKQogCQlyZXR1cm47CiAKKwl0eG4tPnhhY3RfdGlt ZS5hYm9ydF90aW1lID0gYWJvcnRfdGltZTsKKwogCS8qIEZvciBzdHJlYW1lZCB0cmFuc2FjdGlv bnMgbm90aWZ5IHRoZSByZW1vdGUgbm9kZSBhYm91dCB0aGUgYWJvcnQuICovCiAJaWYgKHJidHhu X2lzX3N0cmVhbWVkKHR4bikpCiAJCXJiLT5zdHJlYW1fYWJvcnQocmIsIHR4biwgbHNuKTsKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMgYi9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jCmluZGV4IDY3MGM2ZmNh ZGEuLjhmZmJhN2UyZTUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvdGFibGVzeW5jLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJs ZXN5bmMuYwpAQCAtNTY4LDcgKzU2OCw4IEBAIHByb2Nlc3Nfc3luY2luZ190YWJsZXNfZm9yX2Fw cGx5KFhMb2dSZWNQdHIgY3VycmVudF9sc24pCiAJCQkJCQkJCQkJCQkgTXlTdWJzY3JpcHRpb24t Pm9pZCwKIAkJCQkJCQkJCQkJCSBNeVN1YnNjcmlwdGlvbi0+bmFtZSwKIAkJCQkJCQkJCQkJCSBN eUxvZ2ljYWxSZXBXb3JrZXItPnVzZXJpZCwKLQkJCQkJCQkJCQkJCSByc3RhdGUtPnJlbGlkKTsK KwkJCQkJCQkJCQkJCSByc3RhdGUtPnJlbGlkLAorCQkJCQkJCQkJCQkJIERTTV9IQU5ETEVfSU5W QUxJRCk7CiAJCQkJCQloZW50cnktPmxhc3Rfc3RhcnRfdGltZSA9IG5vdzsKIAkJCQkJfQogCQkJ CX0KQEAgLTU4OSw2ICs1OTAsOSBAQCBwcm9jZXNzX3N5bmNpbmdfdGFibGVzX2Zvcl9hcHBseShY TG9nUmVjUHRyIGN1cnJlbnRfbHNuKQogdm9pZAogcHJvY2Vzc19zeW5jaW5nX3RhYmxlcyhYTG9n UmVjUHRyIGN1cnJlbnRfbHNuKQogeworCWlmIChNeUxvZ2ljYWxSZXBXb3JrZXItPnN1Yndvcmtl cikKKwkJcmV0dXJuOworCiAJaWYgKGFtX3RhYmxlc3luY193b3JrZXIoKSkKIAkJcHJvY2Vzc19z eW5jaW5nX3RhYmxlc19mb3Jfc3luYyhjdXJyZW50X2xzbik7CiAJZWxzZQpAQCAtMTI3Myw3ICsx Mjc3LDcgQEAgTG9naWNhbFJlcFN5bmNUYWJsZVN0YXJ0KFhMb2dSZWNQdHIgKm9yaWdpbl9zdGFy dHBvcykKIAkJICogdGltZSB0aGlzIHRhYmxlc3luYyB3YXMgbGF1bmNoZWQuCiAJCSAqLwogCQlv cmlnaW5pZCA9IHJlcGxvcmlnaW5fYnlfbmFtZShvcmlnaW5uYW1lLCBmYWxzZSk7Ci0JCXJlcGxv cmlnaW5fc2Vzc2lvbl9zZXR1cChvcmlnaW5pZCk7CisJCXJlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1 cChvcmlnaW5pZCwgdHJ1ZSk7CiAJCXJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW4gPSBvcmlnaW5p ZDsKIAkJKm9yaWdpbl9zdGFydHBvcyA9IHJlcGxvcmlnaW5fc2Vzc2lvbl9nZXRfcHJvZ3Jlc3Mo ZmFsc2UpOwogCkBAIC0xMzg0LDcgKzEzODgsNyBAQCBMb2dpY2FsUmVwU3luY1RhYmxlU3RhcnQo WExvZ1JlY1B0ciAqb3JpZ2luX3N0YXJ0cG9zKQogCQkJCQkJICAgdHJ1ZSAvKiBnbyBiYWNrd2Fy ZCAqLyAsIHRydWUgLyogV0FMIGxvZyAqLyApOwogCQlVbmxvY2tSZWxhdGlvbk9pZChSZXBsaWNh dGlvbk9yaWdpblJlbGF0aW9uSWQsIFJvd0V4Y2x1c2l2ZUxvY2spOwogCi0JCXJlcGxvcmlnaW5f c2Vzc2lvbl9zZXR1cChvcmlnaW5pZCk7CisJCXJlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChvcmln aW5pZCwgdHJ1ZSk7CiAJCXJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW4gPSBvcmlnaW5pZDsKIAl9 CiAJZWxzZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3Jr ZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKaW5kZXggZmMy MTBhOWU3Yi4uM2Y4ZGVhMGZjMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC93b3JrZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dv cmtlci5jCkBAIC0yMiw4ICsyMiwyNSBAQAogICogU1RSRUFNRUQgVFJBTlNBQ1RJT05TCiAgKiAt LS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqIFN0cmVhbWVkIHRyYW5zYWN0aW9ucyAobGFyZ2UgdHJh bnNhY3Rpb25zIGV4Y2VlZGluZyBhIG1lbW9yeSBsaW1pdCBvbiB0aGUKLSAqIHVwc3RyZWFtKSBh cmUgbm90IGFwcGxpZWQgaW1tZWRpYXRlbHksIGJ1dCBpbnN0ZWFkLCB0aGUgZGF0YSBpcyB3cml0 dGVuCi0gKiB0byB0ZW1wb3JhcnkgZmlsZXMgYW5kIHRoZW4gYXBwbGllZCBhdCBvbmNlIHdoZW4g dGhlIGZpbmFsIGNvbW1pdCBhcnJpdmVzLgorICogdXBzdHJlYW0pIGFyZSBhcHBsaWVkIHZpYSBv bmUgb2YgdHdvIGFwcHJvYWNoZXMuCisgKgorICogMSkgU2VwYXJhdGUgYmFja2dyb3VuZCB3b3Jr ZXJzCisgKgorICogQXNzaWduIGEgbmV3IGFwcGx5IGJhY2tncm91bmQgd29ya2VyIChpZiBhdmFp bGFibGUpIGFzIHNvb24gYXMgdGhlIHhhY3QncworICogZmlyc3Qgc3RyZWFtIGlzIHJlY2VpdmVk IGFuZCB0aGUgbWFpbiBhcHBseSB3b3JrZXIgd2lsbCBzZW5kIGNoYW5nZXMgdG8gdGhpcworICog bmV3IHdvcmtlciB2aWEgc2hhcmVkIG1lbW9yeS4gV2Uga2VlcCB0aGlzIHdvcmtlciBhc3NpZ25l ZCB0aWxsIHRoZQorICogdHJhbnNhY3Rpb24gY29tbWl0IGlzIHJlY2VpdmVkIGFuZCBhbHNvIHdh aXQgZm9yIHRoZSB3b3JrZXIgdG8gZmluaXNoIGF0CisgKiBjb21taXQuIFRoaXMgcHJlc2VydmVz IGNvbW1pdCBvcmRlcmluZyBhbmQgYXZvaWRzIHdyaXRpbmcgdG8gYW5kIHJlYWRpbmcKKyAqIGZy b20gZmlsZSBpbiBtb3N0IGNhc2VzLiBXZSBzdGlsbCBuZWVkIHRvIHNwaWxsIGlmIHRoZXJlIGlz IG5vIHdvcmtlcgorICogYXZhaWxhYmxlLiBXZSBhbHNvIG5lZWQgdG8gYWxsb3cgc3RyZWFtX3N0 b3AgdG8gY29tcGxldGUgYnkgdGhlIGJhY2tncm91bmQKKyAqIHdvcmtlciB0byBhdm9pZCBkZWFk bG9ja3MgYmVjYXVzZSBULTEncyBjdXJyZW50IHN0cmVhbSBvZiBjaGFuZ2VzIGNhbiB1cGRhdGUK KyAqIHJvd3MgaW4gY29uZmxpY3Rpbmcgb3JkZXIgd2l0aCBULTIncyBuZXh0IHN0cmVhbSBvZiBj aGFuZ2VzLgorICoKKyAqIDIpIFdyaXRlIHRvIHRlbXBvcmFyeSBmaWxlcyBhbmQgYXBwbHkgd2hl biB0aGUgZmluYWwgY29tbWl0IGFycml2ZXMKKyAqCisgKiBJZiBubyB3b3JrZXIgaXMgYXZhaWxh YmxlIHRvIGhhbmRsZSBzdHJlYW1lZCB0cmFuc2FjdGlvbiwgdGhlIGRhdGEgaXMKKyAqIHdyaXR0 ZW4gdG8gdGVtcG9yYXJ5IGZpbGVzIGFuZCB0aGVuIGFwcGxpZWQgYXQgb25jZSB3aGVuIHRoZSBm aW5hbCBjb21taXQKKyAqIGFycml2ZXMuCiAgKgogICogVW5saWtlIHRoZSByZWd1bGFyIChub24t c3RyZWFtZWQpIGNhc2UsIGhhbmRsaW5nIHN0cmVhbWVkIHRyYW5zYWN0aW9ucyBoYXMKICAqIHRv IGhhbmRsZSBhYm9ydHMgb2YgYm90aCB0aGUgdG9wbGV2ZWwgdHJhbnNhY3Rpb24gYW5kIHN1YnRy YW5zYWN0aW9ucy4gVGhpcwpAQCAtMjE5LDIwICsyMzYsNyBAQCB0eXBlZGVmIHN0cnVjdCBBcHBs eUV4ZWN1dGlvbkRhdGEKIAlQYXJ0aXRpb25UdXBsZVJvdXRpbmcgKnByb3V0ZTsJLyogcGFydGl0 aW9uIHJvdXRpbmcgaW5mbyAqLwogfSBBcHBseUV4ZWN1dGlvbkRhdGE7CiAKLS8qIFN0cnVjdCBm b3Igc2F2aW5nIGFuZCByZXN0b3JpbmcgYXBwbHkgZXJyY29udGV4dCBpbmZvcm1hdGlvbiAqLwot dHlwZWRlZiBzdHJ1Y3QgQXBwbHlFcnJvckNhbGxiYWNrQXJnCi17Ci0JTG9naWNhbFJlcE1zZ1R5 cGUgY29tbWFuZDsJLyogMCBpZiBpbnZhbGlkICovCi0JTG9naWNhbFJlcFJlbE1hcEVudHJ5ICpy ZWw7Ci0KLQkvKiBSZW1vdGUgbm9kZSBpbmZvcm1hdGlvbiAqLwotCWludAkJCXJlbW90ZV9hdHRu dW07CS8qIC0xIGlmIGludmFsaWQgKi8KLQlUcmFuc2FjdGlvbklkIHJlbW90ZV94aWQ7Ci0JWExv Z1JlY1B0cglmaW5pc2hfbHNuOwotCWNoYXIJICAgKm9yaWdpbl9uYW1lOwotfSBBcHBseUVycm9y Q2FsbGJhY2tBcmc7Ci0KLXN0YXRpYyBBcHBseUVycm9yQ2FsbGJhY2tBcmcgYXBwbHlfZXJyb3Jf Y2FsbGJhY2tfYXJnID0KK0FwcGx5RXJyb3JDYWxsYmFja0FyZyBhcHBseV9lcnJvcl9jYWxsYmFj a19hcmcgPQogewogCS5jb21tYW5kID0gMCwKIAkucmVsID0gTlVMTCwKQEAgLTI0Miw3ICsyNDYs NyBAQCBzdGF0aWMgQXBwbHlFcnJvckNhbGxiYWNrQXJnIGFwcGx5X2Vycm9yX2NhbGxiYWNrX2Fy ZyA9CiAJLm9yaWdpbl9uYW1lID0gTlVMTCwKIH07CiAKLXN0YXRpYyBNZW1vcnlDb250ZXh0IEFw cGx5TWVzc2FnZUNvbnRleHQgPSBOVUxMOworTWVtb3J5Q29udGV4dCBBcHBseU1lc3NhZ2VDb250 ZXh0ID0gTlVMTDsKIE1lbW9yeUNvbnRleHQgQXBwbHlDb250ZXh0ID0gTlVMTDsKIAogLyogcGVy IHN0cmVhbSBjb250ZXh0IGZvciBzdHJlYW1pbmcgdHJhbnNhY3Rpb25zICovCkBAIC0yNTEsMjcg KzI1NSwzOCBAQCBzdGF0aWMgTWVtb3J5Q29udGV4dCBMb2dpY2FsU3RyZWFtaW5nQ29udGV4dCA9 IE5VTEw7CiBXYWxSZWNlaXZlckNvbm4gKkxvZ1JlcFdvcmtlcldhbFJjdkNvbm4gPSBOVUxMOwog CiBTdWJzY3JpcHRpb24gKk15U3Vic2NyaXB0aW9uID0gTlVMTDsKLXN0YXRpYyBib29sIE15U3Vi c2NyaXB0aW9uVmFsaWQgPSBmYWxzZTsKK2Jvb2wJCU15U3Vic2NyaXB0aW9uVmFsaWQgPSBmYWxz ZTsKIAogYm9vbAkJaW5fcmVtb3RlX3RyYW5zYWN0aW9uID0gZmFsc2U7CiBzdGF0aWMgWExvZ1Jl Y1B0ciByZW1vdGVfZmluYWxfbHNuID0gSW52YWxpZFhMb2dSZWNQdHI7CiAKIC8qIGZpZWxkcyB2 YWxpZCBvbmx5IHdoZW4gcHJvY2Vzc2luZyBzdHJlYW1lZCB0cmFuc2FjdGlvbiAqLwotc3RhdGlj IGJvb2wgaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24gPSBmYWxzZTsKK2Jvb2wJCWluX3N0cmVhbWVk X3RyYW5zYWN0aW9uID0gZmFsc2U7CisKK1RyYW5zYWN0aW9uSWQgc3RyZWFtX3hpZCA9IEludmFs aWRUcmFuc2FjdGlvbklkOworc3RhdGljIEFwcGx5Qmd3b3JrZXJTdGF0ZSAqc3RyZWFtX2FwcGx5 X3dvcmtlciA9IE5VTEw7CisKKy8qIGNoZWNrIGlmIHdlIGFyZSBhcHBseWluZyB0aGUgdHJhbnNh Y3Rpb24gaW4gYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIgKi8KKyNkZWZpbmUgYXBwbHlfYmd3b3Jr ZXJfYWN0aXZlKCkgKGluX3N0cmVhbWVkX3RyYW5zYWN0aW9uICYmIHN0cmVhbV9hcHBseV93b3Jr ZXIgIT0gTlVMTCkKIAotc3RhdGljIFRyYW5zYWN0aW9uSWQgc3RyZWFtX3hpZCA9IEludmFsaWRU cmFuc2FjdGlvbklkOworLyoKKyAqIFRoZSBudW1iZXIgb2YgY2hhbmdlcyBkdXJpbmcgb25lIHN0 cmVhbWluZyBibG9jayAob25seSBmb3IgYXBwbHkgYmFja2dyb3VuZAorICogd29ya2VycykKKyAq Lworc3RhdGljIHVpbnQzMiBuY2hhbmdlcyA9IDA7CiAKIC8qCiAgKiBXZSBlbmFibGUgc2tpcHBp bmcgYWxsIGRhdGEgbW9kaWZpY2F0aW9uIGNoYW5nZXMgKElOU0VSVCwgVVBEQVRFLCBldGMuKSBm b3IKICAqIHRoZSBzdWJzY3JpcHRpb24gaWYgdGhlIHJlbW90ZSB0cmFuc2FjdGlvbidzIGZpbmlz aCBMU04gbWF0Y2hlcyB0aGUgc3Vic2tpcGxzbi4KICAqIE9uY2Ugd2Ugc3RhcnQgc2tpcHBpbmcg Y2hhbmdlcywgd2UgZG9uJ3Qgc3RvcCBpdCB1bnRpbCB3ZSBza2lwIGFsbCBjaGFuZ2VzIG9mCiAg KiB0aGUgdHJhbnNhY3Rpb24gZXZlbiBpZiBwZ19zdWJzY3JpcHRpb24gaXMgdXBkYXRlZCBhbmQg TXlTdWJzY3JpcHRpb24tPnNraXBsc24KLSAqIGdldHMgY2hhbmdlZCBvciByZXNldCBkdXJpbmcg dGhhdC4gQWxzbywgaW4gc3RyZWFtaW5nIHRyYW5zYWN0aW9uIGNhc2VzLCB3ZQotICogZG9uJ3Qg c2tpcCByZWNlaXZpbmcgYW5kIHNwb29saW5nIHRoZSBjaGFuZ2VzIHNpbmNlIHdlIGRlY2lkZSB3 aGV0aGVyIG9yIG5vdAorICogZ2V0cyBjaGFuZ2VkIG9yIHJlc2V0IGR1cmluZyB0aGF0LiBBbHNv LCBpbiBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gY2FzZXMgKHN0cmVhbWluZyA9IG9uKSwKKyAqIHdl IGRvbid0IHNraXAgcmVjZWl2aW5nIGFuZCBzcG9vbGluZyB0aGUgY2hhbmdlcyBzaW5jZSB3ZSBk ZWNpZGUgd2hldGhlciBvciBub3QKICAqIHRvIHNraXAgYXBwbHlpbmcgdGhlIGNoYW5nZXMgd2hl biBzdGFydGluZyB0byBhcHBseSBjaGFuZ2VzLiBUaGUgc3Vic2tpcGxzbiBpcwogICogY2xlYXJl ZCBhZnRlciBzdWNjZXNzZnVsbHkgc2tpcHBpbmcgdGhlIHRyYW5zYWN0aW9uIG9yIGFwcGx5aW5n IG5vbi1lbXB0eQogICogdHJhbnNhY3Rpb24uIFRoZSBsYXR0ZXIgcHJldmVudHMgdGhlIG1pc3Rh a2VubHkgc3BlY2lmaWVkIHN1YnNraXBsc24gZnJvbQotICogYmVpbmcgbGVmdC4KKyAqIGJlaW5n IGxlZnQuIE5vdGUgdGhhdCB3ZSBjYW5ub3Qgc2tpcCB0aGUgc3RyZWFtaW5nIHRyYW5zYWN0aW9u IGluIGFwcGx5IG1vZGUsCisgKiBiZWNhdXNlIHdlIGNhbm5vdCBnZXQgdGhlIGZpbmlzaCBMU04g YmVmb3JlIGFwcGx5aW5nIHRoZSBjaGFuZ2VzLgogICovCiBzdGF0aWMgWExvZ1JlY1B0ciBza2lw X3hhY3RfZmluaXNoX2xzbiA9IEludmFsaWRYTG9nUmVjUHRyOwogI2RlZmluZSBpc19za2lwcGlu Z19jaGFuZ2VzKCkgKHVubGlrZWx5KCFYTG9nUmVjUHRySXNJbnZhbGlkKHNraXBfeGFjdF9maW5p c2hfbHNuKSkpCkBAIC0zMjQsOSArMzM5LDYgQEAgc3RhdGljIHZvaWQgbWF5YmVfcmVyZWFkX3N1 YnNjcmlwdGlvbih2b2lkKTsKIAogc3RhdGljIHZvaWQgRGlzYWJsZVN1YnNjcmlwdGlvbkFuZEV4 aXQodm9pZCk7CiAKLS8qIHByb3RvdHlwZSBuZWVkZWQgYmVjYXVzZSBvZiBzdHJlYW1fY29tbWl0 ICovCi1zdGF0aWMgdm9pZCBhcHBseV9kaXNwYXRjaChTdHJpbmdJbmZvIHMpOwotCiBzdGF0aWMg dm9pZCBhcHBseV9oYW5kbGVfY29tbWl0X2ludGVybmFsKExvZ2ljYWxSZXBDb21taXREYXRhICpj b21taXRfZGF0YSk7CiBzdGF0aWMgdm9pZCBhcHBseV9oYW5kbGVfaW5zZXJ0X2ludGVybmFsKEFw cGx5RXhlY3V0aW9uRGF0YSAqZWRhdGEsCiAJCQkJCQkJCQkJIFJlc3VsdFJlbEluZm8gKnJlbGlu Zm8sCkBAIC0zNTksNyArMzcxLDYgQEAgc3RhdGljIHZvaWQgc3RvcF9za2lwcGluZ19jaGFuZ2Vz KHZvaWQpOwogc3RhdGljIHZvaWQgY2xlYXJfc3Vic2NyaXB0aW9uX3NraXBfbHNuKFhMb2dSZWNQ dHIgZmluaXNoX2xzbik7CiAKIC8qIEZ1bmN0aW9ucyBmb3IgYXBwbHkgZXJyb3IgY2FsbGJhY2sg Ki8KLXN0YXRpYyB2b2lkIGFwcGx5X2Vycm9yX2NhbGxiYWNrKHZvaWQgKmFyZyk7CiBzdGF0aWMg aW5saW5lIHZvaWQgc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfeGFjdChUcmFuc2FjdGlvbklkIHhp ZCwgWExvZ1JlY1B0ciBsc24pOwogc3RhdGljIGlubGluZSB2b2lkIHJlc2V0X2FwcGx5X2Vycm9y X2NvbnRleHRfaW5mbyh2b2lkKTsKIApAQCAtNDI2LDQxICs0MzcsNzYgQEAgZW5kX3JlcGxpY2F0 aW9uX3N0ZXAodm9pZCkKIH0KIAogLyoKLSAqIEhhbmRsZSBzdHJlYW1lZCB0cmFuc2FjdGlvbnMu CisgKiBIYW5kbGUgc3RyZWFtZWQgdHJhbnNhY3Rpb25zIGZvciBib3RoIG1haW4gYXBwbHkgd29y a2VyIGFuZCBhcHBseSBiYWNrZ3JvdW5kCisgKiB3b3JrZXIuCiAgKgotICogSWYgaW4gc3RyZWFt aW5nIG1vZGUgKHJlY2VpdmluZyBhIGJsb2NrIG9mIHN0cmVhbWVkIHRyYW5zYWN0aW9uKSwgd2UK LSAqIHNpbXBseSByZWRpcmVjdCBpdCB0byBhIGZpbGUgZm9yIHRoZSBwcm9wZXIgdG9wbGV2ZWwg dHJhbnNhY3Rpb24uCisgKiBJbiBzdHJlYW1pbmcgY2FzZSAocmVjZWl2aW5nIGEgYmxvY2sgb2Yg c3RyZWFtZWQgdHJhbnNhY3Rpb24pLCBmb3IKKyAqIFNVQlNUUkVBTV9PTiBtb2RlLCB3ZSBzaW1w bHkgcmVkaXJlY3QgaXQgdG8gYSBmaWxlIGZvciB0aGUgcHJvcGVyIHRvcGxldmVsCisgKiB0cmFu c2FjdGlvbiwgYW5kIGZvciBTVUJTVFJFQU1fQVBQTFkgbW9kZSwgd2Ugc2VuZCB0aGUgY2hhbmdl cyB0byBiYWNrZ3JvdW5kCisgKiBhcHBseSB3b3JrZXIgKExPR0lDQUxfUkVQX01TR19SRUxBVElP TiBvciBMT0dJQ0FMX1JFUF9NU0dfVFlQRSBjaGFuZ2VzIHdpbGwKKyAqIGFsc28gYmUgYXBwbGll ZCBpbiBtYWluIGFwcGx5IHdvcmtlcikuCiAgKgotICogUmV0dXJucyB0cnVlIGZvciBzdHJlYW1l ZCB0cmFuc2FjdGlvbnMsIGZhbHNlIG90aGVyd2lzZSAocmVndWxhciBtb2RlKS4KKyAqIEZvciBu b24tc3RyZWFtZWQgdHJhbnNhY3Rpb25zLCByZXR1cm5zIGZhbHNlOworICogRm9yIHN0cmVhbWVk IHRyYW5zYWN0aW9ucywgcmV0dXJucyB0cnVlIGlmIGluIG1haW4gYXBwbHkgd29ya2VyIChleGNl cHQgd2UKKyAqIGFwcGx5IHN0cmVhbWVkIHRyYW5zYWN0aW9uIGluICJhcHBseSIgbW9kZSBhbmQg YWRkcmVzcworICogTE9HSUNBTF9SRVBfTVNHX1JFTEFUSU9OIG9yIExPR0lDQUxfUkVQX01TR19U WVBFIGNoYW5nZXMpLCBmYWxzZSBvdGhlcndpc2UuCiAgKi8KIHN0YXRpYyBib29sCiBoYW5kbGVf c3RyZWFtZWRfdHJhbnNhY3Rpb24oTG9naWNhbFJlcE1zZ1R5cGUgYWN0aW9uLCBTdHJpbmdJbmZv IHMpCiB7Ci0JVHJhbnNhY3Rpb25JZCB4aWQ7CisJVHJhbnNhY3Rpb25JZCBjdXJyZW50X3hpZCA9 IEludmFsaWRUcmFuc2FjdGlvbklkOwogCiAJLyogbm90IGluIHN0cmVhbWluZyBtb2RlICovCi0J aWYgKCFpbl9zdHJlYW1lZF90cmFuc2FjdGlvbikKKwlpZiAoIShpbl9zdHJlYW1lZF90cmFuc2Fj dGlvbiB8fCBhbV9hcHBseV9iZ3dvcmtlcigpKSkKIAkJcmV0dXJuIGZhbHNlOwogCi0JQXNzZXJ0 KHN0cmVhbV9mZCAhPSBOVUxMKTsKIAlBc3NlcnQoVHJhbnNhY3Rpb25JZElzVmFsaWQoc3RyZWFt X3hpZCkpOwogCiAJLyoKIAkgKiBXZSBzaG91bGQgaGF2ZSByZWNlaXZlZCBYSUQgb2YgdGhlIHN1 YnhhY3QgYXMgdGhlIGZpcnN0IHBhcnQgb2YgdGhlCiAJICogbWVzc2FnZSwgc28gZXh0cmFjdCBp dC4KIAkgKi8KLQl4aWQgPSBwcV9nZXRtc2dpbnQocywgNCk7CisJY3VycmVudF94aWQgPSBwcV9n ZXRtc2dpbnQocywgNCk7CiAKLQlpZiAoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKHhpZCkpCisJaWYg KCFUcmFuc2FjdGlvbklkSXNWYWxpZChjdXJyZW50X3hpZCkpCiAJCWVyZXBvcnQoRVJST1IsCiAJ CQkJKGVycmNvZGUoRVJSQ09ERV9QUk9UT0NPTF9WSU9MQVRJT04pLAogCQkJCSBlcnJtc2dfaW50 ZXJuYWwoImludmFsaWQgdHJhbnNhY3Rpb24gSUQgaW4gc3RyZWFtZWQgcmVwbGljYXRpb24gdHJh bnNhY3Rpb24iKSkpOwogCi0JLyogQWRkIHRoZSBuZXcgc3VieGFjdCB0byB0aGUgYXJyYXkgKHVu bGVzcyBhbHJlYWR5IHRoZXJlKS4gKi8KLQlzdWJ4YWN0X2luZm9fYWRkKHhpZCk7CisJaWYgKGFt X2FwcGx5X2Jnd29ya2VyKCkpCisJeworCQkvKiBkZWZpbmUgYSBzYXZlcG9pbnQgZm9yIGEgc3Vi eGFjdCBpZiBuZWVkZWQuICovCisJCWFwcGx5X2Jnd29ya2VyX3N1YnhhY3RfaW5mb19hZGQoY3Vy cmVudF94aWQpOwogCi0JLyogd3JpdGUgdGhlIGNoYW5nZSB0byB0aGUgY3VycmVudCBmaWxlICov Ci0Jc3RyZWFtX3dyaXRlX2NoYW5nZShhY3Rpb24sIHMpOworCQlyZXR1cm4gZmFsc2U7CisJfQor CWVsc2UgaWYgKGFwcGx5X2Jnd29ya2VyX2FjdGl2ZSgpKQorCXsKKwkJLyoKKwkJICogSWYgd2Ug ZGVjaWRlZCB0byBhcHBseSB0aGUgY2hhbmdlcyBvZiB0aGlzIHRyYW5zYWN0aW9uIGluIGFuIGFw cGx5CisJCSAqIGJhY2tncm91bmQgd29ya2VyLCBwYXNzIHRoZSBkYXRhIHRvIHRoZSB3b3JrZXIu CisJCSAqLworCQlhcHBseV9iZ3dvcmtlcl9zZW5kX2RhdGEoc3RyZWFtX2FwcGx5X3dvcmtlciwg cy0+bGVuLCBzLT5kYXRhKTsKKwkJbmNoYW5nZXMgKz0gMTsKKworCQkvKgorCQkgKiBYWFggVGhl IHB1Ymxpc2hlciBzaWRlIGRvZXNuJ3QgYWx3YXlzIHNlbmQgcmVsYXRpb24vdHlwZSB1cGRhdGUK KwkJICogbWVzc2FnZXMgYWZ0ZXIgdGhlIHN0cmVhbWluZyB0cmFuc2FjdGlvbiwgc28gYWxzbyB1 cGRhdGUgdGhlCisJCSAqIHJlbGF0aW9uL3R5cGUgaW4gbWFpbiBhcHBseSB3b3JrZXIgaGVyZS4g U2VlIGZ1bmN0aW9uCisJCSAqIGNsZWFudXBfcmVsX3N5bmNfY2FjaGUuCisJCSAqLworCQlpZiAo YWN0aW9uID09IExPR0lDQUxfUkVQX01TR19SRUxBVElPTiB8fAorCQkJYWN0aW9uID09IExPR0lD QUxfUkVQX01TR19UWVBFKQorCQkJcmV0dXJuIGZhbHNlOworCX0KKwllbHNlCisJeworCQkvKiBB ZGQgdGhlIG5ldyBzdWJ4YWN0IHRvIHRoZSBhcnJheSAodW5sZXNzIGFscmVhZHkgdGhlcmUpLiAq LworCQlzdWJ4YWN0X2luZm9fYWRkKGN1cnJlbnRfeGlkKTsKKworCQkvKiB3cml0ZSB0aGUgY2hh bmdlIHRvIHRoZSBjdXJyZW50IGZpbGUgKi8KKwkJc3RyZWFtX3dyaXRlX2NoYW5nZShhY3Rpb24s IHMpOworCX0KIAogCXJldHVybiB0cnVlOwogfQpAQCAtODQ0LDYgKzg5MCw5IEBAIGFwcGx5X2hh bmRsZV9jb21taXQoU3RyaW5nSW5mbyBzKQogCiAJYXBwbHlfaGFuZGxlX2NvbW1pdF9pbnRlcm5h bCgmY29tbWl0X2RhdGEpOwogCisJLyogQ2hlY2sgdGhlIHN0YXR1cyBvZiBhcHBseSBiYWNrZ3Jv dW5kIHdvcmtlciBpZiBhbnkuICovCisJYXBwbHlfYmd3b3JrZXJfY2hlY2tfc3RhdHVzKCk7CisK IAkvKiBQcm9jZXNzIGFueSB0YWJsZXMgdGhhdCBhcmUgYmVpbmcgc3luY2hyb25pemVkIGluIHBh cmFsbGVsLiAqLwogCXByb2Nlc3Nfc3luY2luZ190YWJsZXMoY29tbWl0X2RhdGEuZW5kX2xzbik7 CiAKQEAgLTg5OCw3ICs5NDcsOSBAQCBhcHBseV9oYW5kbGVfcHJlcGFyZV9pbnRlcm5hbChMb2dp Y2FsUmVwUHJlcGFyZWRUeG5EYXRhICpwcmVwYXJlX2RhdGEpCiAJICogQmVnaW5UcmFuc2FjdGlv bkJsb2NrIGlzIG5lY2Vzc2FyeSB0byBiYWxhbmNlIHRoZSBFbmRUcmFuc2FjdGlvbkJsb2NrCiAJ ICogY2FsbGVkIHdpdGhpbiB0aGUgUHJlcGFyZVRyYW5zYWN0aW9uQmxvY2sgYmVsb3cuCiAJICov Ci0JQmVnaW5UcmFuc2FjdGlvbkJsb2NrKCk7CisJaWYgKCFJc1RyYW5zYWN0aW9uQmxvY2soKSkK KwkJQmVnaW5UcmFuc2FjdGlvbkJsb2NrKCk7CisKIAlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQo KTsgLyogQ29tcGxldGVzIHRoZSBwcmVjZWRpbmcgQmVnaW4gY29tbWFuZC4gKi8KIAogCS8qCkBA IC05NTAsNiArMTAwMSw5IEBAIGFwcGx5X2hhbmRsZV9wcmVwYXJlKFN0cmluZ0luZm8gcykKIAog CWluX3JlbW90ZV90cmFuc2FjdGlvbiA9IGZhbHNlOwogCisJLyogQ2hlY2sgdGhlIHN0YXR1cyBv ZiBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlciBpZiBhbnkuICovCisJYXBwbHlfYmd3b3JrZXJfY2hl Y2tfc3RhdHVzKCk7CisKIAkvKiBQcm9jZXNzIGFueSB0YWJsZXMgdGhhdCBhcmUgYmVpbmcgc3lu Y2hyb25pemVkIGluIHBhcmFsbGVsLiAqLwogCXByb2Nlc3Nfc3luY2luZ190YWJsZXMocHJlcGFy ZV9kYXRhLmVuZF9sc24pOwogCkBAIC0xMDY0LDEwICsxMTE4LDYgQEAgYXBwbHlfaGFuZGxlX3Jv bGxiYWNrX3ByZXBhcmVkKFN0cmluZ0luZm8gcykKIAogLyoKICAqIEhhbmRsZSBTVFJFQU0gUFJF UEFSRS4KLSAqCi0gKiBMb2dpYyBpcyBpbiB0d28gcGFydHM6Ci0gKiAxLiBSZXBsYXkgYWxsIHRo ZSBzcG9vbGVkIG9wZXJhdGlvbnMKLSAqIDIuIE1hcmsgdGhlIHRyYW5zYWN0aW9uIGFzIHByZXBh cmVkCiAgKi8KIHN0YXRpYyB2b2lkCiBhcHBseV9oYW5kbGVfc3RyZWFtX3ByZXBhcmUoU3RyaW5n SW5mbyBzKQpAQCAtMTA4OCwyNCArMTEzOCw3MCBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX3ByZXBh cmUoU3RyaW5nSW5mbyBzKQogCWxvZ2ljYWxyZXBfcmVhZF9zdHJlYW1fcHJlcGFyZShzLCAmcHJl cGFyZV9kYXRhKTsKIAlzZXRfYXBwbHlfZXJyb3JfY29udGV4dF94YWN0KHByZXBhcmVfZGF0YS54 aWQsIHByZXBhcmVfZGF0YS5wcmVwYXJlX2xzbik7CiAKLQllbG9nKERFQlVHMSwgInJlY2VpdmVk IHByZXBhcmUgZm9yIHN0cmVhbWVkIHRyYW5zYWN0aW9uICV1IiwgcHJlcGFyZV9kYXRhLnhpZCk7 CisJaWYgKGFtX2FwcGx5X2Jnd29ya2VyKCkpCisJeworCQkvKiBNYXJrIHRoZSB0cmFuc2FjdGlv biBhcyBwcmVwYXJlZC4gKi8KKwkJYXBwbHlfaGFuZGxlX3ByZXBhcmVfaW50ZXJuYWwoJnByZXBh cmVfZGF0YSk7CiAKLQkvKiBSZXBsYXkgYWxsIHRoZSBzcG9vbGVkIG9wZXJhdGlvbnMuICovCi0J YXBwbHlfc3Bvb2xlZF9tZXNzYWdlcyhwcmVwYXJlX2RhdGEueGlkLCBwcmVwYXJlX2RhdGEucHJl cGFyZV9sc24pOworCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAotCS8qIE1hcmsgdGhl IHRyYW5zYWN0aW9uIGFzIHByZXBhcmVkLiAqLwotCWFwcGx5X2hhbmRsZV9wcmVwYXJlX2ludGVy bmFsKCZwcmVwYXJlX2RhdGEpOworCQlwZ3N0YXRfcmVwb3J0X3N0YXQoZmFsc2UpOwogCi0JQ29t bWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisJCWxpc3RfZnJlZShzdWJ4YWN0bGlzdCk7CisJCXN1 YnhhY3RsaXN0ID0gTklMOwogCi0JcGdzdGF0X3JlcG9ydF9zdGF0KGZhbHNlKTsKKwkJYXBwbHlf Ymd3b3JrZXJfc2V0X3N0YXR1cyhBUFBMWV9CR1dPUktFUl9GSU5JU0hFRCk7CisJfQorCWVsc2UK Kwl7CisJCUFwcGx5Qmd3b3JrZXJTdGF0ZSAqd3N0YXRlID0gYXBwbHlfYmd3b3JrZXJfZmluZF9v cl9zdGFydChwcmVwYXJlX2RhdGEueGlkLCBmYWxzZSk7CiAKLQlzdG9yZV9mbHVzaF9wb3NpdGlv bihwcmVwYXJlX2RhdGEuZW5kX2xzbik7CisJCWVsb2coREVCVUcxLCAicmVjZWl2ZWQgcHJlcGFy ZSBmb3Igc3RyZWFtZWQgdHJhbnNhY3Rpb24gJXUiLAorCQkJIHByZXBhcmVfZGF0YS54aWQpOwor CisJCS8qCisJCSAqIFRoaXMgaXMgdGhlIG1haW4gYXBwbHkgd29ya2VyLiBDaGVjayBpZiB3ZSBh cmUgcHJvY2Vzc2luZyB0aGlzCisJCSAqIHRyYW5zYWN0aW9uIGluIGEgYXBwbHkgYmFja2dyb3Vu ZCB3b3JrZXIuCisJCSAqLworCQlpZiAod3N0YXRlKQorCQl7CisJCQlhcHBseV9iZ3dvcmtlcl9z ZW5kX2RhdGEod3N0YXRlLCBzLT5sZW4sIHMtPmRhdGEpOworCisJCQlhcHBseV9iZ3dvcmtlcl93 YWl0X2Zvcih3c3RhdGUsIEFQUExZX0JHV09SS0VSX0ZJTklTSEVEKTsKKwkJCWFwcGx5X2Jnd29y a2VyX2ZyZWUod3N0YXRlKTsKKworCQkJcGdzdGF0X3JlcG9ydF9zdGF0KGZhbHNlKTsKKwkJCXN0 b3JlX2ZsdXNoX3Bvc2l0aW9uKHByZXBhcmVfZGF0YS5lbmRfbHNuKTsKKwkJfQorCQllbHNlCisJ CXsKKwkJCS8qCisJCQkgKiBUaGlzIGlzIHRoZSBtYWluIGFwcGx5IHdvcmtlciBhbmQgdGhlIHRy YW5zYWN0aW9uIGhhcyBiZWVuCisJCQkgKiBzZXJpYWxpemVkIHRvIGZpbGUsIHJlcGxheSBhbGwg dGhlIHNwb29sZWQgb3BlcmF0aW9ucy4KKwkJCSAqLworCQkJYXBwbHlfc3Bvb2xlZF9tZXNzYWdl cyhwcmVwYXJlX2RhdGEueGlkLCBwcmVwYXJlX2RhdGEucHJlcGFyZV9sc24pOworCisJCQkvKiBN YXJrIHRoZSB0cmFuc2FjdGlvbiBhcyBwcmVwYXJlZC4gKi8KKwkJCWFwcGx5X2hhbmRsZV9wcmVw YXJlX2ludGVybmFsKCZwcmVwYXJlX2RhdGEpOworCisJCQlDb21taXRUcmFuc2FjdGlvbkNvbW1h bmQoKTsKKworCQkJcGdzdGF0X3JlcG9ydF9zdGF0KGZhbHNlKTsKKworCQkJc3RvcmVfZmx1c2hf cG9zaXRpb24ocHJlcGFyZV9kYXRhLmVuZF9sc24pOworCisJCQlpbl9yZW1vdGVfdHJhbnNhY3Rp b24gPSBmYWxzZTsKKworCQkJLyogdW5saW5rIHRoZSBmaWxlcyB3aXRoIHNlcmlhbGl6ZWQgY2hh bmdlcyBhbmQgc3VieGFjdCBpbmZvLiAqLworCQkJc3RyZWFtX2NsZWFudXBfZmlsZXMoTXlMb2dp Y2FsUmVwV29ya2VyLT5zdWJpZCwgcHJlcGFyZV9kYXRhLnhpZCk7CisJCX0KKwl9CiAKIAlpbl9y ZW1vdGVfdHJhbnNhY3Rpb24gPSBmYWxzZTsKKwlzdHJlYW1fYXBwbHlfd29ya2VyID0gTlVMTDsK IAotCS8qIHVubGluayB0aGUgZmlsZXMgd2l0aCBzZXJpYWxpemVkIGNoYW5nZXMgYW5kIHN1Ynhh Y3QgaW5mby4gKi8KLQlzdHJlYW1fY2xlYW51cF9maWxlcyhNeUxvZ2ljYWxSZXBXb3JrZXItPnN1 YmlkLCBwcmVwYXJlX2RhdGEueGlkKTsKKwkvKiBDaGVjayB0aGUgc3RhdHVzIG9mIGFwcGx5IGJh Y2tncm91bmQgd29ya2VyIGlmIGFueS4gKi8KKwlhcHBseV9iZ3dvcmtlcl9jaGVja19zdGF0dXMo KTsKIAogCS8qIFByb2Nlc3MgYW55IHRhYmxlcyB0aGF0IGFyZSBiZWluZyBzeW5jaHJvbml6ZWQg aW4gcGFyYWxsZWwuICovCiAJcHJvY2Vzc19zeW5jaW5nX3RhYmxlcyhwcmVwYXJlX2RhdGEuZW5k X2xzbik7CkBAIC0xMTU1LDE1ICsxMjUxLDYgQEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9zdGFydChT dHJpbmdJbmZvIHMpCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9QUk9UT0NPTF9WSU9MQVRJT04pLAog CQkJCSBlcnJtc2dfaW50ZXJuYWwoImR1cGxpY2F0ZSBTVFJFQU0gU1RBUlQgbWVzc2FnZSIpKSk7 CiAKLQkvKgotCSAqIFN0YXJ0IGEgdHJhbnNhY3Rpb24gb24gc3RyZWFtIHN0YXJ0LCB0aGlzIHRy YW5zYWN0aW9uIHdpbGwgYmUgY29tbWl0dGVkCi0JICogb24gdGhlIHN0cmVhbSBzdG9wIHVubGVz cyBpdCBpcyBhIHRhYmxlc3luYyB3b3JrZXIgaW4gd2hpY2ggY2FzZSBpdAotCSAqIHdpbGwgYmUg Y29tbWl0dGVkIGFmdGVyIHByb2Nlc3NpbmcgYWxsIHRoZSBtZXNzYWdlcy4gV2UgbmVlZCB0aGUK LQkgKiB0cmFuc2FjdGlvbiBmb3IgaGFuZGxpbmcgdGhlIGJ1ZmZpbGUsIHVzZWQgZm9yIHNlcmlh bGl6aW5nIHRoZQotCSAqIHN0cmVhbWluZyBkYXRhIGFuZCBzdWJ4YWN0IGluZm8uCi0JICovCi0J YmVnaW5fcmVwbGljYXRpb25fc3RlcCgpOwotCiAJLyogbm90aWZ5IGhhbmRsZSBtZXRob2RzIHdl J3JlIHByb2Nlc3NpbmcgYSByZW1vdGUgdHJhbnNhY3Rpb24gKi8KIAlpbl9zdHJlYW1lZF90cmFu c2FjdGlvbiA9IHRydWU7CiAKQEAgLTExNzcsMzYgKzEyNjQsOTIgQEAgYXBwbHlfaGFuZGxlX3N0 cmVhbV9zdGFydChTdHJpbmdJbmZvIHMpCiAKIAlzZXRfYXBwbHlfZXJyb3JfY29udGV4dF94YWN0 KHN0cmVhbV94aWQsIEludmFsaWRYTG9nUmVjUHRyKTsKIAorCWlmIChhbV9hcHBseV9iZ3dvcmtl cigpKQorCXsKKwkJLyoKKwkJICogTWFrZSBzdXJlIHRoZSBoYW5kbGUgYXBwbHlfZGlzcGF0Y2gg bWV0aG9kcyBhcmUgYXdhcmUgd2UncmUgaW4gYQorCQkgKiByZW1vdGUgdHJhbnNhY3Rpb24uCisJ CSAqLworCQlpbl9yZW1vdGVfdHJhbnNhY3Rpb24gPSB0cnVlOworCisJCS8qIElmIHdlIGFyZSBp biBhIGFwcGx5IGJhY2tncm91bmQgd29ya2VyLCBiZWdpbiB0aGUgdHJhbnNhY3Rpb24gKi8KKwkJ QWNjZXB0SW52YWxpZGF0aW9uTWVzc2FnZXMoKTsKKwkJbWF5YmVfcmVyZWFkX3N1YnNjcmlwdGlv bigpOworCisJCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisJCUJlZ2luVHJhbnNhY3Rpb25C bG9jaygpOworCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKworCQlyZXR1cm47CisJfQor CiAJLyoKLQkgKiBJbml0aWFsaXplIHRoZSB3b3JrZXIncyBzdHJlYW1fZmlsZXNldCBpZiB3ZSBo YXZlbid0IHlldC4gVGhpcyB3aWxsIGJlCi0JICogdXNlZCBmb3IgdGhlIGVudGlyZSBkdXJhdGlv biBvZiB0aGUgd29ya2VyIHNvIGNyZWF0ZSBpdCBpbiBhIHBlcm1hbmVudAotCSAqIGNvbnRleHQu IFdlIGNyZWF0ZSB0aGlzIG9uIHRoZSB2ZXJ5IGZpcnN0IHN0cmVhbWluZyBtZXNzYWdlIGZyb20g YW55Ci0JICogdHJhbnNhY3Rpb24gYW5kIHRoZW4gdXNlIGl0IGZvciB0aGlzIGFuZCBvdGhlciBz dHJlYW1pbmcgdHJhbnNhY3Rpb25zLgotCSAqIE5vdywgd2UgY291bGQgY3JlYXRlIGEgZmlsZXNl dCBhdCB0aGUgc3RhcnQgb2YgdGhlIHdvcmtlciBhcyB3ZWxsIGJ1dAotCSAqIHRoZW4gd2Ugd29u J3QgYmUgc3VyZSB0aGF0IGl0IHdpbGwgZXZlciBiZSB1c2VkLgorCSAqIFRoaXMgaXMgdGhlIG1h aW4gYXBwbHkgd29ya2VyLiBDaGVjayBpZiB0aGVyZSBpcyBhbnkgZnJlZSBhcHBseQorCSAqIGJh Y2tncm91bmQgd29ya2VyIHdlIGNhbiB1c2UgdG8gcHJvY2VzcyB0aGlzIHRyYW5zYWN0aW9uLgog CSAqLwotCWlmIChNeUxvZ2ljYWxSZXBXb3JrZXItPnN0cmVhbV9maWxlc2V0ID09IE5VTEwpCisJ c3RyZWFtX2FwcGx5X3dvcmtlciA9IGFwcGx5X2Jnd29ya2VyX2ZpbmRfb3Jfc3RhcnQoc3RyZWFt X3hpZCwgZmlyc3Rfc2VnbWVudCk7CisKKwlpZiAoc3RyZWFtX2FwcGx5X3dvcmtlcikKIAl7Ci0J CU1lbW9yeUNvbnRleHQgb2xkY3R4OworCQkvKgorCQkgKiBJZiB3ZSBoYXZlIGZvdW5kIGEgZnJl ZSB3b3JrZXIgb3IgaWYgd2UgYXJlIGFscmVhZHkgYXBwbHlpbmcgdGhpcworCQkgKiB0cmFuc2Fj dGlvbiBpbiBhbiBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlciwgdGhlbiB3ZSBwYXNzIHRoZSBkYXRh IHRvCisJCSAqIHRoYXQgd29ya2VyLgorCQkgKi8KKwkJaWYgKGZpcnN0X3NlZ21lbnQpCisJCQlh cHBseV9iZ3dvcmtlcl9zZW5kX2RhdGEoc3RyZWFtX2FwcGx5X3dvcmtlciwgcy0+bGVuLCBzLT5k YXRhKTsKIAotCQlvbGRjdHggPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oQXBwbHlDb250ZXh0KTsK KwkJbmNoYW5nZXMgPSAwOworCQllbG9nKERFQlVHMSwgInN0YXJ0aW5nIHN0cmVhbWluZyBvZiB4 aWQgJXUiLCBzdHJlYW1feGlkKTsKKwl9CiAKLQkJTXlMb2dpY2FsUmVwV29ya2VyLT5zdHJlYW1f ZmlsZXNldCA9IHBhbGxvYyhzaXplb2YoRmlsZVNldCkpOwotCQlGaWxlU2V0SW5pdChNeUxvZ2lj YWxSZXBXb3JrZXItPnN0cmVhbV9maWxlc2V0KTsKKwkvKgorCSAqIElmIG5vIHdvcmtlciBpcyBh dmFpbGFibGUgZm9yIHRoZSBmaXJzdCBzdHJlYW0gc3RhcnQsIHdlIHN0YXJ0IHRvCisJICogc2Vy aWFsaXplIGFsbCB0aGUgY2hhbmdlcyBvZiB0aGUgdHJhbnNhY3Rpb24uCisJICovCisJZWxzZQor CXsKKwkJLyoKKwkJICogU3RhcnQgYSB0cmFuc2FjdGlvbiBvbiBzdHJlYW0gc3RhcnQsIHRoaXMg dHJhbnNhY3Rpb24gd2lsbCBiZQorCQkgKiBjb21taXR0ZWQgb24gdGhlIHN0cmVhbSBzdG9wIHVu bGVzcyBpdCBpcyBhIHRhYmxlc3luYyB3b3JrZXIgaW4KKwkJICogd2hpY2ggY2FzZSBpdCB3aWxs IGJlIGNvbW1pdHRlZCBhZnRlciBwcm9jZXNzaW5nIGFsbCB0aGUgbWVzc2FnZXMuCisJCSAqIFdl IG5lZWQgdGhlIHRyYW5zYWN0aW9uIGZvciBoYW5kbGluZyB0aGUgYnVmZmlsZSwgdXNlZCBmb3IK KwkJICogc2VyaWFsaXppbmcgdGhlIHN0cmVhbWluZyBkYXRhIGFuZCBzdWJ4YWN0IGluZm8uCisJ CSAqLworCQliZWdpbl9yZXBsaWNhdGlvbl9zdGVwKCk7CiAKLQkJTWVtb3J5Q29udGV4dFN3aXRj aFRvKG9sZGN0eCk7Ci0JfQorCQkvKgorCQkgKiBJbml0aWFsaXplIHRoZSB3b3JrZXIncyBzdHJl YW1fZmlsZXNldCBpZiB3ZSBoYXZlbid0IHlldC4gVGhpcyB3aWxsCisJCSAqIGJlIHVzZWQgZm9y IHRoZSBlbnRpcmUgZHVyYXRpb24gb2YgdGhlIHdvcmtlciBzbyBjcmVhdGUgaXQgaW4gYQorCQkg KiBwZXJtYW5lbnQgY29udGV4dC4gV2UgY3JlYXRlIHRoaXMgb24gdGhlIHZlcnkgZmlyc3Qgc3Ry ZWFtaW5nCisJCSAqIG1lc3NhZ2UgZnJvbSBhbnkgdHJhbnNhY3Rpb24gYW5kIHRoZW4gdXNlIGl0 IGZvciB0aGlzIGFuZCBvdGhlcgorCQkgKiBzdHJlYW1pbmcgdHJhbnNhY3Rpb25zLiBOb3csIHdl IGNvdWxkIGNyZWF0ZSBhIGZpbGVzZXQgYXQgdGhlIHN0YXJ0CisJCSAqIG9mIHRoZSB3b3JrZXIg YXMgd2VsbCBidXQgdGhlbiB3ZSB3b24ndCBiZSBzdXJlIHRoYXQgaXQgd2lsbCBldmVyCisJCSAq IGJlIHVzZWQuCisJCSAqLworCQlpZiAoTXlMb2dpY2FsUmVwV29ya2VyLT5zdHJlYW1fZmlsZXNl dCA9PSBOVUxMKQorCQl7CisJCQlNZW1vcnlDb250ZXh0IG9sZGN0eDsKIAotCS8qIG9wZW4gdGhl IHNwb29sIGZpbGUgZm9yIHRoaXMgdHJhbnNhY3Rpb24gKi8KLQlzdHJlYW1fb3Blbl9maWxlKE15 TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHN0cmVhbV94aWQsIGZpcnN0X3NlZ21lbnQpOworCQkJ b2xkY3R4ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKEFwcGx5Q29udGV4dCk7CiAKLQkvKiBpZiB0 aGlzIGlzIG5vdCB0aGUgZmlyc3Qgc2VnbWVudCwgb3BlbiBleGlzdGluZyBzdWJ4YWN0IGZpbGUg Ki8KLQlpZiAoIWZpcnN0X3NlZ21lbnQpCi0JCXN1YnhhY3RfaW5mb19yZWFkKE15TG9naWNhbFJl cFdvcmtlci0+c3ViaWQsIHN0cmVhbV94aWQpOworCQkJTXlMb2dpY2FsUmVwV29ya2VyLT5zdHJl YW1fZmlsZXNldCA9IHBhbGxvYyhzaXplb2YoRmlsZVNldCkpOworCQkJRmlsZVNldEluaXQoTXlM b2dpY2FsUmVwV29ya2VyLT5zdHJlYW1fZmlsZXNldCk7CiAKLQlwZ3N0YXRfcmVwb3J0X2FjdGl2 aXR5KFNUQVRFX1JVTk5JTkcsIE5VTEwpOworCQkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN0 eCk7CisJCX0KIAotCWVuZF9yZXBsaWNhdGlvbl9zdGVwKCk7CisJCS8qIG9wZW4gdGhlIHNwb29s IGZpbGUgZm9yIHRoaXMgdHJhbnNhY3Rpb24gKi8KKwkJc3RyZWFtX29wZW5fZmlsZShNeUxvZ2lj YWxSZXBXb3JrZXItPnN1YmlkLCBzdHJlYW1feGlkLCBmaXJzdF9zZWdtZW50KTsKKworCQkvKiBp ZiB0aGlzIGlzIG5vdCB0aGUgZmlyc3Qgc2VnbWVudCwgb3BlbiBleGlzdGluZyBzdWJ4YWN0IGZp bGUgKi8KKwkJaWYgKCFmaXJzdF9zZWdtZW50KQorCQkJc3VieGFjdF9pbmZvX3JlYWQoTXlMb2dp Y2FsUmVwV29ya2VyLT5zdWJpZCwgc3RyZWFtX3hpZCk7CisKKwkJZW5kX3JlcGxpY2F0aW9uX3N0 ZXAoKTsKKwl9CisKKwlwZ3N0YXRfcmVwb3J0X2FjdGl2aXR5KFNUQVRFX1JVTk5JTkcsIE5VTEwp OwogfQogCiAvKgpAQCAtMTIyMCw0NCArMTM2Myw0NyBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX3N0 b3AoU3RyaW5nSW5mbyBzKQogCQkJCShlcnJjb2RlKEVSUkNPREVfUFJPVE9DT0xfVklPTEFUSU9O KSwKIAkJCQkgZXJybXNnX2ludGVybmFsKCJTVFJFQU0gU1RPUCBtZXNzYWdlIHdpdGhvdXQgU1RS RUFNIFNUQVJUIikpKTsKIAotCS8qCi0JICogQ2xvc2UgdGhlIGZpbGUgd2l0aCBzZXJpYWxpemVk IGNoYW5nZXMsIGFuZCBzZXJpYWxpemUgaW5mb3JtYXRpb24gYWJvdXQKLQkgKiBzdWJ4YWN0cyBm b3IgdGhlIHRvcGxldmVsIHRyYW5zYWN0aW9uLgotCSAqLwotCXN1YnhhY3RfaW5mb193cml0ZShN eUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCBzdHJlYW1feGlkKTsKLQlzdHJlYW1fY2xvc2VfZmls ZSgpOworCWlmIChhcHBseV9iZ3dvcmtlcl9hY3RpdmUoKSkKKwl7CisJCWNoYXIJCWFjdGlvbiA9 IExPR0lDQUxfUkVQX01TR19TVFJFQU1fU1RPUDsKIAotCS8qIFdlIG11c3QgYmUgaW4gYSB2YWxp ZCB0cmFuc2FjdGlvbiBzdGF0ZSAqLwotCUFzc2VydChJc1RyYW5zYWN0aW9uU3RhdGUoKSk7CisJ CWFwcGx5X2Jnd29ya2VyX3NlbmRfZGF0YShzdHJlYW1fYXBwbHlfd29ya2VyLCAxLCAmYWN0aW9u KTsKKwkJYXBwbHlfYmd3b3JrZXJfd2FpdF9mb3Ioc3RyZWFtX2FwcGx5X3dvcmtlciwgQVBQTFlf QkdXT1JLRVJfUkVBRFkpOwogCi0JLyogQ29tbWl0IHRoZSBwZXItc3RyZWFtIHRyYW5zYWN0aW9u ICovCi0JQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisJCWVsb2coREVCVUcxLCAic3RvcHBl ZCBzdHJlYW1pbmcgb2YgeGlkICV1LCAldSBjaGFuZ2VzIHN0cmVhbWVkIiwgc3RyZWFtX3hpZCwg bmNoYW5nZXMpOworCX0KKwllbHNlCisJeworCQkvKgorCQkgKiBDbG9zZSB0aGUgZmlsZSB3aXRo IHNlcmlhbGl6ZWQgY2hhbmdlcywgYW5kIHNlcmlhbGl6ZSBpbmZvcm1hdGlvbgorCQkgKiBhYm91 dCBzdWJ4YWN0cyBmb3IgdGhlIHRvcGxldmVsIHRyYW5zYWN0aW9uLgorCQkgKi8KKwkJc3VieGFj dF9pbmZvX3dyaXRlKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHN0cmVhbV94aWQpOworCQlz dHJlYW1fY2xvc2VfZmlsZSgpOwogCi0JaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24gPSBmYWxzZTsK KwkJLyogV2UgbXVzdCBiZSBpbiBhIHZhbGlkIHRyYW5zYWN0aW9uIHN0YXRlICovCisJCUFzc2Vy dChJc1RyYW5zYWN0aW9uU3RhdGUoKSk7CisKKwkJLyogQ29tbWl0IHRoZSBwZXItc3RyZWFtIHRy YW5zYWN0aW9uICovCisJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCisJCS8qIFJlc2V0 IHBlci1zdHJlYW0gY29udGV4dCAqLworCQlNZW1vcnlDb250ZXh0UmVzZXQoTG9naWNhbFN0cmVh bWluZ0NvbnRleHQpOworCX0KIAotCS8qIFJlc2V0IHBlci1zdHJlYW0gY29udGV4dCAqLwotCU1l bW9yeUNvbnRleHRSZXNldChMb2dpY2FsU3RyZWFtaW5nQ29udGV4dCk7CisJaW5fc3RyZWFtZWRf dHJhbnNhY3Rpb24gPSBmYWxzZTsKKwlzdHJlYW1fYXBwbHlfd29ya2VyID0gTlVMTDsKIAogCXBn c3RhdF9yZXBvcnRfYWN0aXZpdHkoU1RBVEVfSURMRSwgTlVMTCk7CiAJcmVzZXRfYXBwbHlfZXJy b3JfY29udGV4dF9pbmZvKCk7CiB9CiAKIC8qCi0gKiBIYW5kbGUgU1RSRUFNIGFib3J0IG1lc3Nh Z2UuCisgKiBIYW5kbGUgU1RSRUFNIEFCT1JUIG1lc3NhZ2Ugd2hlbiB0aGUgdHJhbnNhY3Rpb24g d2FzIHNwaWxsZWQgdG8gZGlzay4KICAqLwogc3RhdGljIHZvaWQKLWFwcGx5X2hhbmRsZV9zdHJl YW1fYWJvcnQoU3RyaW5nSW5mbyBzKQorc2VyaWFsaXplX3N0cmVhbV9hYm9ydChUcmFuc2FjdGlv bklkIHhpZCwgVHJhbnNhY3Rpb25JZCBzdWJ4aWQpCiB7Ci0JVHJhbnNhY3Rpb25JZCB4aWQ7Ci0J VHJhbnNhY3Rpb25JZCBzdWJ4aWQ7Ci0KLQlpZiAoaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24pCi0J CWVyZXBvcnQoRVJST1IsCi0JCQkJKGVycmNvZGUoRVJSQ09ERV9QUk9UT0NPTF9WSU9MQVRJT04p LAotCQkJCSBlcnJtc2dfaW50ZXJuYWwoIlNUUkVBTSBBQk9SVCBtZXNzYWdlIHdpdGhvdXQgU1RS RUFNIFNUT1AiKSkpOwotCi0JbG9naWNhbHJlcF9yZWFkX3N0cmVhbV9hYm9ydChzLCAmeGlkLCAm c3VieGlkKTsKLQogCS8qCiAJICogSWYgdGhlIHR3byBYSURzIGFyZSB0aGUgc2FtZSwgaXQncyBp biBmYWN0IGFib3J0IG9mIHRvcGxldmVsIHhhY3QsIHNvCiAJICoganVzdCBkZWxldGUgdGhlIGZp bGVzIHdpdGggc2VyaWFsaXplZCBpbmZvLgpAQCAtMTMzOSw4ICsxNDg1LDEzNyBAQCBhcHBseV9o YW5kbGVfc3RyZWFtX2Fib3J0KFN0cmluZ0luZm8gcykKIAkJZW5kX3JlcGxpY2F0aW9uX3N0ZXAo KTsKIAkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAJfQorfQogCi0JcmVzZXRfYXBwbHlf ZXJyb3JfY29udGV4dF9pbmZvKCk7CisvKgorICogSGFuZGxlIFNUUkVBTSBBQk9SVCBtZXNzYWdl LgorICovCitzdGF0aWMgdm9pZAorYXBwbHlfaGFuZGxlX3N0cmVhbV9hYm9ydChTdHJpbmdJbmZv IHMpCit7CisJVHJhbnNhY3Rpb25JZCB4aWQ7CisJVHJhbnNhY3Rpb25JZCBzdWJ4aWQ7CisJTG9n aWNhbFJlcFN0cmVhbUFib3J0RGF0YSBhYm9ydF9kYXRhOworCWJvb2wgaW5jbHVkZV9hYm9ydF9s c24gPSBmYWxzZTsKKworCWlmIChpbl9zdHJlYW1lZF90cmFuc2FjdGlvbikKKwkJZXJlcG9ydChF UlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX1BST1RPQ09MX1ZJT0xBVElPTiksCisJCQkJIGVy cm1zZ19pbnRlcm5hbCgiU1RSRUFNIEFCT1JUIG1lc3NhZ2Ugd2l0aG91dCBTVFJFQU0gU1RPUCIp KSk7CisKKwkvKiBDaGVjayB3aGV0aGVyIHRoZSBwdWJsaXNoZXIgc2VuZHMgYWJvcnRfbHNuIGFu ZCBhYm9ydF90aW1lLiAqLworCWlmIChhbV9hcHBseV9iZ3dvcmtlcigpKQorCQlpbmNsdWRlX2Fi b3J0X2xzbiA9IE15UGFyYWxsZWxTdGF0ZS0+c2VydmVyX3ZlcnNpb24gPj0gMTUwMDAwOworCisJ bG9naWNhbHJlcF9yZWFkX3N0cmVhbV9hYm9ydChzLCAmYWJvcnRfZGF0YSwgaW5jbHVkZV9hYm9y dF9sc24pOworCisJeGlkID0gYWJvcnRfZGF0YS54aWQ7CisJc3VieGlkID0gYWJvcnRfZGF0YS5z dWJ4aWQ7CisKKwlpZiAoYW1fYXBwbHlfYmd3b3JrZXIoKSkKKwl7CisJCWVsb2coREVCVUcxLCAi W0FwcGx5IEJHVyAjJXVdIGFib3J0aW5nIGN1cnJlbnQgdHJhbnNhY3Rpb24geGlkPSV1LCBzdWJ4 aWQ9JXUiLAorCQkJIE15UGFyYWxsZWxTdGF0ZS0+biwgR2V0Q3VycmVudFRyYW5zYWN0aW9uSWRJ ZkFueSgpLAorCQkJIEdldEN1cnJlbnRTdWJUcmFuc2FjdGlvbklkKCkpOworCisJCS8qCisJCSAq IFVwZGF0ZSBvcmlnaW4gc3RhdGUgc28gd2UgY2FuIHJlc3RhcnQgc3RyZWFtaW5nIGZyb20gY29y cmVjdAorCQkgKiBwb3NpdGlvbiBpbiBjYXNlIG9mIGNyYXNoLgorCQkgKi8KKwkJaWYgKGluY2x1 ZGVfYWJvcnRfbHNuKQorCQl7CisJCQlyZXBsb3JpZ2luX3Nlc3Npb25fb3JpZ2luX2xzbiA9IGFi b3J0X2RhdGEuYWJvcnRfbHNuOworCQkJcmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbl90aW1lc3Rh bXAgPSBhYm9ydF9kYXRhLmFib3J0X3RpbWU7CisJCX0KKworCQkvKgorCQkgKiBJZiB0aGUgdHdv IFhJRHMgYXJlIHRoZSBzYW1lLCBpdCdzIGluIGZhY3QgYWJvcnQgb2YgdG9wbGV2ZWwgeGFjdCwK KwkJICogc28ganVzdCBmcmVlIHRoZSBzdWJ4YWN0bGlzdC4KKwkJICovCisJCWlmIChzdWJ4aWQg PT0geGlkKQorCQl7CisJCQlzZXRfYXBwbHlfZXJyb3JfY29udGV4dF94YWN0KHN1YnhpZCwgSW52 YWxpZFhMb2dSZWNQdHIpOworCisJCQlBYm9ydEN1cnJlbnRUcmFuc2FjdGlvbigpOworCisJCQlF bmRUcmFuc2FjdGlvbkJsb2NrKGZhbHNlKTsKKwkJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgp OworCisJCQlpbl9yZW1vdGVfdHJhbnNhY3Rpb24gPSBmYWxzZTsKKworCQkJbGlzdF9mcmVlKHN1 YnhhY3RsaXN0KTsKKwkJCXN1YnhhY3RsaXN0ID0gTklMOworCisJCQlhcHBseV9iZ3dvcmtlcl9z ZXRfc3RhdHVzKEFQUExZX0JHV09SS0VSX0ZJTklTSEVEKTsKKwkJfQorCQllbHNlCisJCXsKKwkJ CS8qCisJCQkgKiBPSywgc28gaXQncyBhIHN1YnhhY3QuIFJvbGxiYWNrIHRvIHRoZSBzYXZlcG9p bnQuCisJCQkgKgorCQkJICogV2UgYWxzbyBuZWVkIHRvIHJlYWQgdGhlIHN1YnhhY3RsaXN0LCBk ZXRlcm1pbmUgdGhlIG9mZnNldAorCQkJICogdHJhY2tlZCBmb3IgdGhlIHN1YnhhY3QsIGFuZCB0 cnVuY2F0ZSB0aGUgbGlzdC4KKwkJCSAqLworCQkJaW50CQkJaTsKKwkJCWJvb2wJCWZvdW5kID0g ZmFsc2U7CisJCQljaGFyCQlzcG5hbWVbTUFYUEdQQVRIXTsKKworCQkJc2V0X2FwcGx5X2Vycm9y X2NvbnRleHRfeGFjdChzdWJ4aWQsIEludmFsaWRYTG9nUmVjUHRyKTsKKwkJCXNucHJpbnRmKHNw bmFtZSwgTUFYUEdQQVRILCAic2F2ZXBvaW50X2Zvcl94aWRfJXUiLCBzdWJ4aWQpOworCisJCQll bG9nKERFQlVHMSwgIltBcHBseSBCR1cgIyV1XSByb2xsaW5nIGJhY2sgdG8gc2F2ZXBvaW50ICVz IiwKKwkJCQkgTXlQYXJhbGxlbFN0YXRlLT5uLCBzcG5hbWUpOworCisJCQlmb3IgKGkgPSBsaXN0 X2xlbmd0aChzdWJ4YWN0bGlzdCkgLSAxOyBpID49IDA7IGktLSkKKwkJCXsKKwkJCQl4aWQgPSAo VHJhbnNhY3Rpb25JZCkgbGlzdF9udGhfaW50KHN1YnhhY3RsaXN0LCBpKTsKKwkJCQlpZiAoeGlk ID09IHN1YnhpZCkKKwkJCQl7CisJCQkJCWZvdW5kID0gdHJ1ZTsKKwkJCQkJYnJlYWs7CisJCQkJ fQorCQkJfQorCisJCQlpZiAoZm91bmQpCisJCQl7CisJCQkJUm9sbGJhY2tUb1NhdmVwb2ludChz cG5hbWUpOworCQkJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCQkJCXN1YnhhY3RsaXN0 ID0gbGlzdF90cnVuY2F0ZShzdWJ4YWN0bGlzdCwgaSArIDEpOworCQkJfQorCisJCQlhcHBseV9i Z3dvcmtlcl9zZXRfc3RhdHVzKEFQUExZX0JHV09SS0VSX1JFQURZKTsKKwkJfQorCisJCXJlc2V0 X2FwcGx5X2Vycm9yX2NvbnRleHRfaW5mbygpOworCX0KKwllbHNlCisJeworCQlBcHBseUJnd29y a2VyU3RhdGUgKndzdGF0ZSA9IGFwcGx5X2Jnd29ya2VyX2ZpbmRfb3Jfc3RhcnQoeGlkLCBmYWxz ZSk7CisKKwkJLyoKKwkJICogVGhpcyBpcyB0aGUgbWFpbiBhcHBseSB3b3JrZXIuIENoZWNrIGlm IHdlIGFyZSBwcm9jZXNzaW5nIHRoaXMKKwkJICogdHJhbnNhY3Rpb24gaW4gYSBhcHBseSBiYWNr Z3JvdW5kIHdvcmtlci4KKwkJICovCisJCWlmICh3c3RhdGUpCisJCXsKKwkJCWFwcGx5X2Jnd29y a2VyX3NlbmRfZGF0YSh3c3RhdGUsIHMtPmxlbiwgcy0+ZGF0YSk7CisKKwkJCWlmIChzdWJ4aWQg PT0geGlkKQorCQkJeworCQkJCWFwcGx5X2Jnd29ya2VyX3dhaXRfZm9yKHdzdGF0ZSwgQVBQTFlf QkdXT1JLRVJfRklOSVNIRUQpOworCQkJCWFwcGx5X2Jnd29ya2VyX2ZyZWUod3N0YXRlKTsKKwkJ CX0KKwkJCWVsc2UKKwkJCQlhcHBseV9iZ3dvcmtlcl93YWl0X2Zvcih3c3RhdGUsIEFQUExZX0JH V09SS0VSX1JFQURZKTsKKwkJfQorCisJCS8qCisJCSAqIFdlIGFyZSBpbiBtYWluIGFwcGx5IHdv cmtlciBhbmQgdGhlIHRyYW5zYWN0aW9uIGhhcyBiZWVuIHNlcmlhbGl6ZWQKKwkJICogdG8gZmls ZS4KKwkJICovCisJCWVsc2UKKwkJCXNlcmlhbGl6ZV9zdHJlYW1fYWJvcnQoeGlkLCBzdWJ4aWQp OworCX0KIH0KIAogLyoKQEAgLTE0NjIsNDAgKzE3MzcsNiBAQCBhcHBseV9zcG9vbGVkX21lc3Nh Z2VzKFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRyIGxzbikKIAlyZXR1cm47CiB9CiAKLS8q Ci0gKiBIYW5kbGUgU1RSRUFNIENPTU1JVCBtZXNzYWdlLgotICovCi1zdGF0aWMgdm9pZAotYXBw bHlfaGFuZGxlX3N0cmVhbV9jb21taXQoU3RyaW5nSW5mbyBzKQotewotCVRyYW5zYWN0aW9uSWQg eGlkOwotCUxvZ2ljYWxSZXBDb21taXREYXRhIGNvbW1pdF9kYXRhOwotCi0JaWYgKGluX3N0cmVh bWVkX3RyYW5zYWN0aW9uKQotCQllcmVwb3J0KEVSUk9SLAotCQkJCShlcnJjb2RlKEVSUkNPREVf UFJPVE9DT0xfVklPTEFUSU9OKSwKLQkJCQkgZXJybXNnX2ludGVybmFsKCJTVFJFQU0gQ09NTUlU IG1lc3NhZ2Ugd2l0aG91dCBTVFJFQU0gU1RPUCIpKSk7Ci0KLQl4aWQgPSBsb2dpY2FscmVwX3Jl YWRfc3RyZWFtX2NvbW1pdChzLCAmY29tbWl0X2RhdGEpOwotCXNldF9hcHBseV9lcnJvcl9jb250 ZXh0X3hhY3QoeGlkLCBjb21taXRfZGF0YS5jb21taXRfbHNuKTsKLQotCWVsb2coREVCVUcxLCAi cmVjZWl2ZWQgY29tbWl0IGZvciBzdHJlYW1lZCB0cmFuc2FjdGlvbiAldSIsIHhpZCk7Ci0KLQlh cHBseV9zcG9vbGVkX21lc3NhZ2VzKHhpZCwgY29tbWl0X2RhdGEuY29tbWl0X2xzbik7Ci0KLQlh cHBseV9oYW5kbGVfY29tbWl0X2ludGVybmFsKCZjb21taXRfZGF0YSk7Ci0KLQkvKiB1bmxpbmsg dGhlIGZpbGVzIHdpdGggc2VyaWFsaXplZCBjaGFuZ2VzIGFuZCBzdWJ4YWN0IGluZm8gKi8KLQlz dHJlYW1fY2xlYW51cF9maWxlcyhNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCB4aWQpOwotCi0J LyogUHJvY2VzcyBhbnkgdGFibGVzIHRoYXQgYXJlIGJlaW5nIHN5bmNocm9uaXplZCBpbiBwYXJh bGxlbC4gKi8KLQlwcm9jZXNzX3N5bmNpbmdfdGFibGVzKGNvbW1pdF9kYXRhLmVuZF9sc24pOwot Ci0JcGdzdGF0X3JlcG9ydF9hY3Rpdml0eShTVEFURV9JRExFLCBOVUxMKTsKLQotCXJlc2V0X2Fw cGx5X2Vycm9yX2NvbnRleHRfaW5mbygpOwotfQotCiAvKgogICogSGVscGVyIGZ1bmN0aW9uIGZv ciBhcHBseV9oYW5kbGVfY29tbWl0IGFuZCBhcHBseV9oYW5kbGVfc3RyZWFtX2NvbW1pdC4KICAq LwpAQCAtMjQ0NSwxMSArMjY4NiwxMDUgQEAgYXBwbHlfaGFuZGxlX3RydW5jYXRlKFN0cmluZ0lu Zm8gcykKIAllbmRfcmVwbGljYXRpb25fc3RlcCgpOwogfQogCisvKgorICogSGFuZGxlIFNUUkVB TSBDT01NSVQgbWVzc2FnZS4KKyAqLworc3RhdGljIHZvaWQKK2FwcGx5X2hhbmRsZV9zdHJlYW1f Y29tbWl0KFN0cmluZ0luZm8gcykKK3sKKwlMb2dpY2FsUmVwQ29tbWl0RGF0YSBjb21taXRfZGF0 YTsKKwlUcmFuc2FjdGlvbklkIHhpZDsKKworCWlmIChpbl9zdHJlYW1lZF90cmFuc2FjdGlvbikK KwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX1BST1RPQ09MX1ZJT0xBVElP TiksCisJCQkJIGVycm1zZ19pbnRlcm5hbCgiU1RSRUFNIENPTU1JVCBtZXNzYWdlIHdpdGhvdXQg U1RSRUFNIFNUT1AiKSkpOworCisJeGlkID0gbG9naWNhbHJlcF9yZWFkX3N0cmVhbV9jb21taXQo cywgJmNvbW1pdF9kYXRhKTsKKwlzZXRfYXBwbHlfZXJyb3JfY29udGV4dF94YWN0KHhpZCwgY29t bWl0X2RhdGEuY29tbWl0X2xzbik7CisKKwlpZiAoYW1fYXBwbHlfYmd3b3JrZXIoKSkKKwl7CisJ CS8qCisJCSAqIFVwZGF0ZSBvcmlnaW4gc3RhdGUgc28gd2UgY2FuIHJlc3RhcnQgc3RyZWFtaW5n IGZyb20gY29ycmVjdAorCQkgKiBwb3NpdGlvbiBpbiBjYXNlIG9mIGNyYXNoLgorCQkgKi8KKwkJ cmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbl9sc24gPSBjb21taXRfZGF0YS5lbmRfbHNuOworCQly ZXBsb3JpZ2luX3Nlc3Npb25fb3JpZ2luX3RpbWVzdGFtcCA9IGNvbW1pdF9kYXRhLmNvbW1pdHRp bWU7CisKKwkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisJCUVuZFRyYW5zYWN0aW9uQmxv Y2soZmFsc2UpOworCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKworCQlpbl9yZW1vdGVf dHJhbnNhY3Rpb24gPSBmYWxzZTsKKworCQlwZ3N0YXRfcmVwb3J0X3N0YXQoZmFsc2UpOworCisJ CWxpc3RfZnJlZShzdWJ4YWN0bGlzdCk7CisJCXN1YnhhY3RsaXN0ID0gTklMOworCisJCWFwcGx5 X2Jnd29ya2VyX3NldF9zdGF0dXMoQVBQTFlfQkdXT1JLRVJfRklOSVNIRUQpOworCX0KKwllbHNl CisJeworCQkvKgorCQkgKiBUaGlzIGlzIHRoZSBtYWluIGFwcGx5IHdvcmtlci4gQ2hlY2sgaWYg d2UgYXJlIHByb2Nlc3NpbmcgdGhpcworCQkgKiB0cmFuc2FjdGlvbiBpbiBhbiBhcHBseSBiYWNr Z3JvdW5kIHdvcmtlci4KKwkJICovCisJCUFwcGx5Qmd3b3JrZXJTdGF0ZSAqd3N0YXRlID0gYXBw bHlfYmd3b3JrZXJfZmluZF9vcl9zdGFydCh4aWQsIGZhbHNlKTsKKworCQllbG9nKERFQlVHMSwg InJlY2VpdmVkIGNvbW1pdCBmb3Igc3RyZWFtZWQgdHJhbnNhY3Rpb24gJXUiLCB4aWQpOworCisJ CWlmICh3c3RhdGUpCisJCXsKKwkJCS8qIFNlbmQgY29tbWl0IG1lc3NhZ2UgKi8KKwkJCWFwcGx5 X2Jnd29ya2VyX3NlbmRfZGF0YSh3c3RhdGUsIHMtPmxlbiwgcy0+ZGF0YSk7CisKKwkJCS8qIFdh aXQgZm9yIGFwcGx5IGJhY2tncm91bmQgd29ya2VyIHRvIGZpbmlzaCAqLworCQkJYXBwbHlfYmd3 b3JrZXJfd2FpdF9mb3Iod3N0YXRlLCBBUFBMWV9CR1dPUktFUl9GSU5JU0hFRCk7CisKKwkJCXBn c3RhdF9yZXBvcnRfc3RhdChmYWxzZSk7CisJCQlzdG9yZV9mbHVzaF9wb3NpdGlvbihjb21taXRf ZGF0YS5lbmRfbHNuKTsKKwkJCXN0b3Bfc2tpcHBpbmdfY2hhbmdlcygpOworCisJCQlhcHBseV9i Z3dvcmtlcl9mcmVlKHdzdGF0ZSk7CisKKwkJCS8qCisJCQkgKiBUaGUgdHJhbnNhY3Rpb24gaXMg ZWl0aGVyIG5vbi1lbXB0eSBvciBza2lwcGVkLCBzbyB3ZSBjbGVhciB0aGUKKwkJCSAqIHN1YnNr aXBsc24uCisJCQkgKi8KKwkJCWNsZWFyX3N1YnNjcmlwdGlvbl9za2lwX2xzbihjb21taXRfZGF0 YS5jb21taXRfbHNuKTsKKwkJfQorCQllbHNlCisJCXsKKwkJCS8qCisJCQkgKiBUaGlzIGlzIHRo ZSBtYWluIGFwcGx5IHdvcmtlciBhbmQgdGhlIHRyYW5zYWN0aW9uIGhhcyBiZWVuCisJCQkgKiBz ZXJpYWxpemVkIHRvIGZpbGUsIHJlcGxheSBhbGwgdGhlIHNwb29sZWQgb3BlcmF0aW9ucy4KKwkJ CSAqLworCQkJYXBwbHlfc3Bvb2xlZF9tZXNzYWdlcyh4aWQsIGNvbW1pdF9kYXRhLmNvbW1pdF9s c24pOworCisJCQlhcHBseV9oYW5kbGVfY29tbWl0X2ludGVybmFsKCZjb21taXRfZGF0YSk7CisK KwkJCS8qIHVubGluayB0aGUgZmlsZXMgd2l0aCBzZXJpYWxpemVkIGNoYW5nZXMgYW5kIHN1Ynhh Y3QgaW5mbyAqLworCQkJc3RyZWFtX2NsZWFudXBfZmlsZXMoTXlMb2dpY2FsUmVwV29ya2VyLT5z dWJpZCwgeGlkKTsKKwkJfQorCX0KKworCS8qIENoZWNrIHRoZSBzdGF0dXMgb2YgYXBwbHkgYmFj a2dyb3VuZCB3b3JrZXIgaWYgYW55LiAqLworCWFwcGx5X2Jnd29ya2VyX2NoZWNrX3N0YXR1cygp OworCisJLyogUHJvY2VzcyBhbnkgdGFibGVzIHRoYXQgYXJlIGJlaW5nIHN5bmNocm9uaXplZCBp biBwYXJhbGxlbC4gKi8KKwlwcm9jZXNzX3N5bmNpbmdfdGFibGVzKGNvbW1pdF9kYXRhLmVuZF9s c24pOworCisJcGdzdGF0X3JlcG9ydF9hY3Rpdml0eShTVEFURV9JRExFLCBOVUxMKTsKKworCXJl c2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfaW5mbygpOworfQogCiAvKgogICogTG9naWNhbCByZXBs aWNhdGlvbiBwcm90b2NvbCBtZXNzYWdlIGRpc3BhdGNoZXIuCiAgKi8KLXN0YXRpYyB2b2lkCit2 b2lkCiBhcHBseV9kaXNwYXRjaChTdHJpbmdJbmZvIHMpCiB7CiAJTG9naWNhbFJlcE1zZ1R5cGUg YWN0aW9uID0gcHFfZ2V0bXNnYnl0ZShzKTsKQEAgLTI2MTgsNiArMjk1MywxMCBAQCBzdG9yZV9m bHVzaF9wb3NpdGlvbihYTG9nUmVjUHRyIHJlbW90ZV9sc24pCiB7CiAJRmx1c2hQb3NpdGlvbiAq Zmx1c2hwb3M7CiAKKwkvKiBXZSBvbmx5IG5lZWQgdG8gY29sbGVjdCB0aGUgTFNOIGluIG1haW4g YXBwbHkgd29ya2VyICovCisJaWYgKGFtX2FwcGx5X2Jnd29ya2VyKCkpCisJCXJldHVybjsKKwog CS8qIE5lZWQgdG8gZG8gdGhpcyBpbiBwZXJtYW5lbnQgY29udGV4dCAqLwogCU1lbW9yeUNvbnRl eHRTd2l0Y2hUbyhBcHBseUNvbnRleHQpOwogCkBAIC0yNjMyLDcgKzI5NzEsNyBAQCBzdG9yZV9m bHVzaF9wb3NpdGlvbihYTG9nUmVjUHRyIHJlbW90ZV9sc24pCiAKIAogLyogVXBkYXRlIHN0YXRp c3RpY3Mgb2YgdGhlIHdvcmtlci4gKi8KLXN0YXRpYyB2b2lkCit2b2lkCiBVcGRhdGVXb3JrZXJT dGF0cyhYTG9nUmVjUHRyIGxhc3RfbHNuLCBUaW1lc3RhbXBUeiBzZW5kX3RpbWUsIGJvb2wgcmVw bHkpCiB7CiAJTXlMb2dpY2FsUmVwV29ya2VyLT5sYXN0X2xzbiA9IGxhc3RfbHNuOwpAQCAtMjc5 NCw2ICszMTMzLDkgQEAgTG9naWNhbFJlcEFwcGx5TG9vcChYTG9nUmVjUHRyIGxhc3RfcmVjZWl2 ZWQpCiAJCQlBY2NlcHRJbnZhbGlkYXRpb25NZXNzYWdlcygpOwogCQkJbWF5YmVfcmVyZWFkX3N1 YnNjcmlwdGlvbigpOwogCisJCQkvKiBDaGVjayB0aGUgc3RhdHVzIG9mIGFwcGx5IGJhY2tncm91 bmQgd29ya2VyIGlmIGFueS4gKi8KKwkJCWFwcGx5X2Jnd29ya2VyX2NoZWNrX3N0YXR1cygpOwor CiAJCQkvKiBQcm9jZXNzIGFueSB0YWJsZSBzeW5jaHJvbml6YXRpb24gY2hhbmdlcy4gKi8KIAkJ CXByb2Nlc3Nfc3luY2luZ190YWJsZXMobGFzdF9yZWNlaXZlZCk7CiAJCX0KQEAgLTMwOTUsNyAr MzQzNyw3IEBAIG1heWJlX3JlcmVhZF9zdWJzY3JpcHRpb24odm9pZCkKIC8qCiAgKiBDYWxsYmFj ayBmcm9tIHN1YnNjcmlwdGlvbiBzeXNjYWNoZSBpbnZhbGlkYXRpb24uCiAgKi8KLXN0YXRpYyB2 b2lkCit2b2lkCiBzdWJzY3JpcHRpb25fY2hhbmdlX2NiKERhdHVtIGFyZywgaW50IGNhY2hlaWQs IHVpbnQzMiBoYXNodmFsdWUpCiB7CiAJTXlTdWJzY3JpcHRpb25WYWxpZCA9IGZhbHNlOwpAQCAt MzY5MSw3ICs0MDMzLDcgQEAgQXBwbHlXb3JrZXJNYWluKERhdHVtIG1haW5fYXJnKQogCQlvcmln aW5pZCA9IHJlcGxvcmlnaW5fYnlfbmFtZShvcmlnaW5uYW1lLCB0cnVlKTsKIAkJaWYgKCFPaWRJ c1ZhbGlkKG9yaWdpbmlkKSkKIAkJCW9yaWdpbmlkID0gcmVwbG9yaWdpbl9jcmVhdGUob3JpZ2lu bmFtZSk7Ci0JCXJlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChvcmlnaW5pZCk7CisJCXJlcGxvcmln aW5fc2Vzc2lvbl9zZXR1cChvcmlnaW5pZCwgdHJ1ZSk7CiAJCXJlcGxvcmlnaW5fc2Vzc2lvbl9v cmlnaW4gPSBvcmlnaW5pZDsKIAkJb3JpZ2luX3N0YXJ0cG9zID0gcmVwbG9yaWdpbl9zZXNzaW9u X2dldF9wcm9ncmVzcyhmYWxzZSk7CiAJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwpAQCAt MzczOCw3ICs0MDgwLDcgQEAgQXBwbHlXb3JrZXJNYWluKERhdHVtIG1haW5fYXJnKQogCiAJb3B0 aW9ucy5wcm90by5sb2dpY2FsLnB1YmxpY2F0aW9uX25hbWVzID0gTXlTdWJzY3JpcHRpb24tPnB1 YmxpY2F0aW9uczsKIAlvcHRpb25zLnByb3RvLmxvZ2ljYWwuYmluYXJ5ID0gTXlTdWJzY3JpcHRp b24tPmJpbmFyeTsKLQlvcHRpb25zLnByb3RvLmxvZ2ljYWwuc3RyZWFtaW5nID0gTXlTdWJzY3Jp cHRpb24tPnN0cmVhbTsKKwlvcHRpb25zLnByb3RvLmxvZ2ljYWwuc3RyZWFtaW5nID0gKE15U3Vi c2NyaXB0aW9uLT5zdHJlYW0gIT0gU1VCU1RSRUFNX09GRik7CiAJb3B0aW9ucy5wcm90by5sb2dp Y2FsLnR3b3BoYXNlID0gZmFsc2U7CiAKIAlpZiAoIWFtX3RhYmxlc3luY193b3JrZXIoKSkKQEAg LTM4OTYsNyArNDIzOCw4IEBAIGNsZWFyX3N1YnNjcmlwdGlvbl9za2lwX2xzbihYTG9nUmVjUHRy IGZpbmlzaF9sc24pCiAJWExvZ1JlY1B0cglteXNraXBsc24gPSBNeVN1YnNjcmlwdGlvbi0+c2tp cGxzbjsKIAlib29sCQlzdGFydGVkX3R4ID0gZmFsc2U7CiAKLQlpZiAobGlrZWx5KFhMb2dSZWNQ dHJJc0ludmFsaWQobXlza2lwbHNuKSkpCisJaWYgKGxpa2VseShYTG9nUmVjUHRySXNJbnZhbGlk KG15c2tpcGxzbikpIHx8CisJCWFtX2FwcGx5X2Jnd29ya2VyKCkpCiAJCXJldHVybjsKIAogCWlm ICghSXNUcmFuc2FjdGlvblN0YXRlKCkpCkBAIC0zOTY4LDcgKzQzMTEsNyBAQCBjbGVhcl9zdWJz Y3JpcHRpb25fc2tpcF9sc24oWExvZ1JlY1B0ciBmaW5pc2hfbHNuKQogfQogCiAvKiBFcnJvciBj YWxsYmFjayB0byBnaXZlIG1vcmUgY29udGV4dCBpbmZvIGFib3V0IHRoZSBjaGFuZ2UgYmVpbmcg YXBwbGllZCAqLwotc3RhdGljIHZvaWQKK3ZvaWQKIGFwcGx5X2Vycm9yX2NhbGxiYWNrKHZvaWQg KmFyZykKIHsKIAlBcHBseUVycm9yQ2FsbGJhY2tBcmcgKmVycmFyZyA9ICZhcHBseV9lcnJvcl9j YWxsYmFja19hcmc7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1 dC9wZ291dHB1dC5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQu YwppbmRleCA4ZGVhZTU3MTQzLi42ZWJmYTI0YmFmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMKQEAgLTE4MzMsNyArMTgzMyw3IEBAIHBnb3V0cHV0X3N0 cmVhbV9hYm9ydChzdHJ1Y3QgTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LAogCUFzc2VydChy YnR4bl9pc19zdHJlYW1lZCh0b3B0eG4pKTsKIAogCU91dHB1dFBsdWdpblByZXBhcmVXcml0ZShj dHgsIHRydWUpOwotCWxvZ2ljYWxyZXBfd3JpdGVfc3RyZWFtX2Fib3J0KGN0eC0+b3V0LCB0b3B0 eG4tPnhpZCwgdHhuLT54aWQpOworCWxvZ2ljYWxyZXBfd3JpdGVfc3RyZWFtX2Fib3J0KGN0eC0+ b3V0LCB0b3B0eG4tPnhpZCwgdHhuLCBhYm9ydF9sc24pOwogCU91dHB1dFBsdWdpbldyaXRlKGN0 eCwgdHJ1ZSk7CiAKIAljbGVhbnVwX3JlbF9zeW5jX2NhY2hlKHRvcHR4bi0+eGlkLCBmYWxzZSk7 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS93YWl0X2V2ZW50LmMgYi9z cmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS93YWl0X2V2ZW50LmMKaW5kZXggODdjMTViOWM2Zi4u YmE3ODFlNmYwOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9l dmVudC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnQuYwpAQCAt Mzg4LDYgKzM4OCw5IEBAIHBnc3RhdF9nZXRfd2FpdF9pcGMoV2FpdEV2ZW50SVBDIHcpCiAJCWNh c2UgV0FJVF9FVkVOVF9IQVNIX0dST1dfQlVDS0VUU19SRUlOU0VSVDoKIAkJCWV2ZW50X25hbWUg PSAiSGFzaEdyb3dCdWNrZXRzUmVpbnNlcnQiOwogCQkJYnJlYWs7CisJCWNhc2UgV0FJVF9FVkVO VF9MT0dJQ0FMX0FQUExZX1dPUktFUl9TVEFURV9DSEFOR0U6CisJCQlldmVudF9uYW1lID0gIkxv Z2ljYWxBcHBseVdvcmtlclN0YXRlQ2hhbmdlIjsKKwkJCWJyZWFrOwogCQljYXNlIFdBSVRfRVZF TlRfTE9HSUNBTF9TWU5DX0RBVEE6CiAJCQlldmVudF9uYW1lID0gIkxvZ2ljYWxTeW5jRGF0YSI7 CiAJCQlicmVhazsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjLmMgYi9z cmMvYmFja2VuZC91dGlscy9taXNjL2d1Yy5jCmluZGV4IGE3Y2M0OTg5OGIuLjUxOWVmZmYxZDIg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjLmMKKysrIGIvc3JjL2JhY2tl bmQvdXRpbHMvbWlzYy9ndWMuYwpAQCAtMzIyMCw2ICszMjIwLDE4IEBAIHN0YXRpYyBzdHJ1Y3Qg Y29uZmlnX2ludCBDb25maWd1cmVOYW1lc0ludFtdID0KIAkJTlVMTCwgTlVMTCwgTlVMTAogCX0s CiAKKwl7CisJCXsibWF4X2FwcGx5X2Jnd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uIiwKKwkJCVBH Q19TSUdIVVAsCisJCQlSRVBMSUNBVElPTl9TVUJTQ1JJQkVSUywKKwkJCWdldHRleHRfbm9vcCgi TWF4aW11bSBudW1iZXIgb2YgYXBwbHkgYmFja2dyYW5kIHdvcmtlcnMgcGVyIHN1YnNjcmlwdGlv bi4iKSwKKwkJCU5VTEwsCisJCX0sCisJCSZtYXhfYXBwbHlfYmd3b3JrZXJzX3Blcl9zdWJzY3Jp cHRpb24sCisJCTMsIDAsIE1BWF9CQUNLRU5EUywKKwkJTlVMTCwgTlVMTCwgTlVMTAorCX0sCisK IAl7CiAJCXsibG9nX3JvdGF0aW9uX2FnZSIsIFBHQ19TSUdIVVAsIExPR0dJTkdfV0hFUkUsCiAJ CQlnZXR0ZXh0X25vb3AoIlNldHMgdGhlIGFtb3VudCBvZiB0aW1lIHRvIHdhaXQgYmVmb3JlIGZv cmNpbmcgIgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNv bmYuc2FtcGxlIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxl CmluZGV4IDQ4YWQ4MGNmMmUuLmI3MTM0MDU0OWQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0 aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZQorKysgYi9zcmMvYmFja2VuZC91dGlscy9t aXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUKQEAgLTM2MCw2ICszNjAsNyBAQAogI21heF9sb2dp Y2FsX3JlcGxpY2F0aW9uX3dvcmtlcnMgPSA0CSMgdGFrZW4gZnJvbSBtYXhfd29ya2VyX3Byb2Nl c3NlcwogCQkJCQkjIChjaGFuZ2UgcmVxdWlyZXMgcmVzdGFydCkKICNtYXhfc3luY193b3JrZXJz X3Blcl9zdWJzY3JpcHRpb24gPSAyCSMgdGFrZW4gZnJvbSBtYXhfbG9naWNhbF9yZXBsaWNhdGlv bl93b3JrZXJzCisjbWF4X2FwcGx5X2Jnd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uID0gMwkjIHRh a2VuIGZyb20gbWF4X2xvZ2ljYWxfcmVwbGljYXRpb25fd29ya2VycwogCiAKICMtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMgYi9zcmMv YmluL3BnX2R1bXAvcGdfZHVtcC5jCmluZGV4IDdjYzljNzJlNDkuLjZmOGIzMGFiYjAgMTAwNjQ0 Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3Bn X2R1bXAuYwpAQCAtNDQ1MCw3ICs0NDUwLDcgQEAgZ2V0U3Vic2NyaXB0aW9ucyhBcmNoaXZlICpm b3V0KQogCWlmIChmb3V0LT5yZW1vdGVWZXJzaW9uID49IDE0MDAwMCkKIAkJYXBwZW5kUFFFeHBC dWZmZXJTdHIocXVlcnksICIgcy5zdWJzdHJlYW0sXG4iKTsKIAllbHNlCi0JCWFwcGVuZFBRRXhw QnVmZmVyU3RyKHF1ZXJ5LCAiIGZhbHNlIEFTIHN1YnN0cmVhbSxcbiIpOworCQlhcHBlbmRQUUV4 cEJ1ZmZlclN0cihxdWVyeSwgIiAnZicgQVMgc3Vic3RyZWFtLFxuIik7CiAKIAlpZiAoZm91dC0+ cmVtb3RlVmVyc2lvbiA+PSAxNTAwMDApCiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LApA QCAtNDU4MCw4ICs0NTgwLDEwIEBAIGR1bXBTdWJzY3JpcHRpb24oQXJjaGl2ZSAqZm91dCwgY29u c3QgU3Vic2NyaXB0aW9uSW5mbyAqc3ViaW5mbykKIAlpZiAoc3RyY21wKHN1YmluZm8tPnN1YmJp bmFyeSwgInQiKSA9PSAwKQogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiwgYmluYXJ5 ID0gdHJ1ZSIpOwogCi0JaWYgKHN0cmNtcChzdWJpbmZvLT5zdWJzdHJlYW0sICJmIikgIT0gMCkK KwlpZiAoc3RyY21wKHN1YmluZm8tPnN1YnN0cmVhbSwgInQiKSA9PSAwKQogCQlhcHBlbmRQUUV4 cEJ1ZmZlclN0cihxdWVyeSwgIiwgc3RyZWFtaW5nID0gb24iKTsKKwllbHNlIGlmIChzdHJjbXAo c3ViaW5mby0+c3Vic3RyZWFtLCAiYSIpID09IDApCisJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1 ZXJ5LCAiLCBzdHJlYW1pbmcgPSBhcHBseSIpOwogCiAJaWYgKHN0cmNtcChzdWJpbmZvLT5zdWJ0 d29waGFzZXN0YXRlLCB0d29fcGhhc2VfZGlzYWJsZWQpICE9IDApCiAJCWFwcGVuZFBRRXhwQnVm ZmVyU3RyKHF1ZXJ5LCAiLCB0d29fcGhhc2UgPSBvbiIpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfc3Vi c2NyaXB0aW9uLmgKaW5kZXggZDEyNjBmNTkwYy4uOWIzOTRhNDVmZSAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaAorKysgYi9zcmMvaW5jbHVkZS9jYXRh bG9nL3BnX3N1YnNjcmlwdGlvbi5oCkBAIC02OCw3ICs2OCw4IEBAIENBVEFMT0cocGdfc3Vic2Ny aXB0aW9uLDYxMDAsU3Vic2NyaXB0aW9uUmVsYXRpb25JZCkgQktJX1NIQVJFRF9SRUxBVElPTiBC S0lfUk9XCiAJYm9vbAkJc3ViYmluYXJ5OwkJLyogVHJ1ZSBpZiB0aGUgc3Vic2NyaXB0aW9uIHdh bnRzIHRoZQogCQkJCQkJCQkgKiBwdWJsaXNoZXIgdG8gc2VuZCBkYXRhIGluIGJpbmFyeSAqLwog Ci0JYm9vbAkJc3Vic3RyZWFtOwkJLyogU3RyZWFtIGluLXByb2dyZXNzIHRyYW5zYWN0aW9ucy4g Ki8KKwljaGFyCQlzdWJzdHJlYW07CQkvKiBTdHJlYW0gaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25z LgorCQkJCQkJCQkgKiBTZWUgU1VCU1RSRUFNX3h4eCBjb25zdGFudHMuICovCiAKIAljaGFyCQlz dWJ0d29waGFzZXN0YXRlOwkvKiBTdHJlYW0gdHdvLXBoYXNlIHRyYW5zYWN0aW9ucyAqLwogCkBA IC0xMDksNyArMTEwLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgU3Vic2NyaXB0aW9uCiAJYm9vbAkJZW5h YmxlZDsJCS8qIEluZGljYXRlcyBpZiB0aGUgc3Vic2NyaXB0aW9uIGlzIGVuYWJsZWQgKi8KIAli b29sCQliaW5hcnk7CQkJLyogSW5kaWNhdGVzIGlmIHRoZSBzdWJzY3JpcHRpb24gd2FudHMgZGF0 YSBpbgogCQkJCQkJCQkgKiBiaW5hcnkgZm9ybWF0ICovCi0JYm9vbAkJc3RyZWFtOwkJCS8qIEFs bG93IHN0cmVhbWluZyBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbnMuICovCisJY2hhcgkJc3RyZWFt OwkJCS8qIEFsbG93IHN0cmVhbWluZyBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbnMuICovCiAJY2hh cgkJdHdvcGhhc2VzdGF0ZTsJLyogQWxsb3cgc3RyZWFtaW5nIHR3by1waGFzZSB0cmFuc2FjdGlv bnMgKi8KIAlib29sCQlkaXNhYmxlb25lcnI7CS8qIEluZGljYXRlcyBpZiB0aGUgc3Vic2NyaXB0 aW9uIHNob3VsZCBiZQogCQkJCQkJCQkgKiBhdXRvbWF0aWNhbGx5IGRpc2FibGVkIGlmIGEgd29y a2VyIGVycm9yCkBAIC0xMjAsNiArMTIxLDE4IEBAIHR5cGVkZWYgc3RydWN0IFN1YnNjcmlwdGlv bgogCUxpc3QJICAgKnB1YmxpY2F0aW9uczsJLyogTGlzdCBvZiBwdWJsaWNhdGlvbiBuYW1lcyB0 byBzdWJzY3JpYmUgdG8gKi8KIH0gU3Vic2NyaXB0aW9uOwogCisvKiBEaXNhbGxvdyBzdHJlYW1p bmcgaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25zICovCisjZGVmaW5lIFNVQlNUUkVBTV9PRkYJJ2Yn CisKKy8qCisgKiBTdHJlYW1pbmcgdHJhbnNhY3Rpb25zIGFyZSB3cml0dGVuIHRvIGEgdGVtcG9y YXJ5IGZpbGUgYW5kIGFwcGxpZWQgb25seQorICogYWZ0ZXIgdGhlIHRyYW5zYWN0aW9uIGlzIGNv bW1pdHRlZCBvbiB1cHN0cmVhbS4KKyAqLworI2RlZmluZSBTVUJTVFJFQU1fT04JJ3QnCisKKy8q IFN0cmVhbWluZyB0cmFuc2FjdGlvbnMgYXJlIGFwcGxpZWQgaW1tZWRpYXRlbHkgdmlhIGEgYmFj a2dyb3VuZCB3b3JrZXIgKi8KKyNkZWZpbmUgU1VCU1RSRUFNX0FQUExZCSdhJworCiBleHRlcm4g U3Vic2NyaXB0aW9uICpHZXRTdWJzY3JpcHRpb24oT2lkIHN1YmlkLCBib29sIG1pc3Npbmdfb2sp OwogZXh0ZXJuIHZvaWQgRnJlZVN1YnNjcmlwdGlvbihTdWJzY3JpcHRpb24gKnN1Yik7CiBleHRl cm4gdm9pZCBEaXNhYmxlU3Vic2NyaXB0aW9uKE9pZCBzdWJpZCk7CmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FsbGF1bmNoZXIuaCBiL3NyYy9pbmNsdWRlL3JlcGxp Y2F0aW9uL2xvZ2ljYWxsYXVuY2hlci5oCmluZGV4IGYxZTI4MjFlMjUuLmFjOGVmOTQzODEgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxsYXVuY2hlci5oCisrKyBi L3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxsYXVuY2hlci5oCkBAIC0xNCw2ICsxNCw3 IEBACiAKIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgbWF4X2xvZ2ljYWxfcmVwbGljYXRpb25fd29y a2VyczsKIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgbWF4X3N5bmNfd29ya2Vyc19wZXJfc3Vic2Ny aXB0aW9uOworZXh0ZXJuIFBHRExMSU1QT1JUIGludCBtYXhfYXBwbHlfYmd3b3JrZXJzX3Blcl9z dWJzY3JpcHRpb247CiAKIGV4dGVybiB2b2lkIEFwcGx5TGF1bmNoZXJSZWdpc3Rlcih2b2lkKTsK IGV4dGVybiB2b2lkIEFwcGx5TGF1bmNoZXJNYWluKERhdHVtIG1haW5fYXJnKTsKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxwcm90by5oIGIvc3JjL2luY2x1ZGUv cmVwbGljYXRpb24vbG9naWNhbHByb3RvLmgKaW5kZXggYTc3MWFiOGZmMy4uN2JiYTc3YzllNyAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHByb3RvLmgKKysrIGIv c3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHByb3RvLmgKQEAgLTE3NSw2ICsxNzUsMTcg QEAgdHlwZWRlZiBzdHJ1Y3QgTG9naWNhbFJlcFJvbGxiYWNrUHJlcGFyZWRUeG5EYXRhCiAJY2hh cgkJZ2lkW0dJRFNJWkVdOwogfSBMb2dpY2FsUmVwUm9sbGJhY2tQcmVwYXJlZFR4bkRhdGE7CiAK Ky8qCisgKiBUcmFuc2FjdGlvbiBwcm90b2NvbCBpbmZvcm1hdGlvbiBmb3Igc3RyZWFtIGFib3J0 LgorICovCit0eXBlZGVmIHN0cnVjdCBMb2dpY2FsUmVwU3RyZWFtQWJvcnREYXRhCit7CisJVHJh bnNhY3Rpb25JZCB4aWQ7CisJVHJhbnNhY3Rpb25JZCBzdWJ4aWQ7CisJWExvZ1JlY1B0cglhYm9y dF9sc247CisJVGltZXN0YW1wVHogYWJvcnRfdGltZTsKK30gTG9naWNhbFJlcFN0cmVhbUFib3J0 RGF0YTsKKwogZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF93cml0ZV9iZWdpbihTdHJpbmdJbmZvIG91 dCwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuKTsKIGV4dGVybiB2b2lkIGxvZ2ljYWxyZXBfcmVhZF9i ZWdpbihTdHJpbmdJbmZvIGluLAogCQkJCQkJCQkgIExvZ2ljYWxSZXBCZWdpbkRhdGEgKmJlZ2lu X2RhdGEpOwpAQCAtMjQ2LDkgKzI1NywxMSBAQCBleHRlcm4gdm9pZCBsb2dpY2FscmVwX3dyaXRl X3N0cmVhbV9jb21taXQoU3RyaW5nSW5mbyBvdXQsIFJlb3JkZXJCdWZmZXJUWE4gKnR4bgogZXh0 ZXJuIFRyYW5zYWN0aW9uSWQgbG9naWNhbHJlcF9yZWFkX3N0cmVhbV9jb21taXQoU3RyaW5nSW5m byBvdXQsCiAJCQkJCQkJCQkJCQkgICBMb2dpY2FsUmVwQ29tbWl0RGF0YSAqY29tbWl0X2RhdGEp OwogZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF93cml0ZV9zdHJlYW1fYWJvcnQoU3RyaW5nSW5mbyBv dXQsIFRyYW5zYWN0aW9uSWQgeGlkLAotCQkJCQkJCQkJCSAgVHJhbnNhY3Rpb25JZCBzdWJ4aWQp OwotZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF9yZWFkX3N0cmVhbV9hYm9ydChTdHJpbmdJbmZvIGlu LCBUcmFuc2FjdGlvbklkICp4aWQsCi0JCQkJCQkJCQkJIFRyYW5zYWN0aW9uSWQgKnN1YnhpZCk7 CisJCQkJCQkJCQkJICBSZW9yZGVyQnVmZmVyVFhOICp0eG4sCisJCQkJCQkJCQkJICBYTG9nUmVj UHRyIGFib3J0X2xzbik7CitleHRlcm4gdm9pZCBsb2dpY2FscmVwX3JlYWRfc3RyZWFtX2Fib3J0 KFN0cmluZ0luZm8gaW4sCisJCQkJCQkJCQkJIExvZ2ljYWxSZXBTdHJlYW1BYm9ydERhdGEgKmFi b3J0X2RhdGEsCisJCQkJCQkJCQkJIGJvb2wgaW5jbHVkZV9hYm9ydF9sc24pOwogZXh0ZXJuIGNo YXIgKmxvZ2ljYWxyZXBfbWVzc2FnZV90eXBlKExvZ2ljYWxSZXBNc2dUeXBlIGFjdGlvbik7CiAK ICNlbmRpZgkJCQkJCQkvKiBMT0dJQ0FMX1BST1RPX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWx3b3JrZXIuaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9u L2xvZ2ljYWx3b3JrZXIuaAppbmRleCBjZDFiNmU4YWZjLi42YTFhZjdmMTNjIDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2Fsd29ya2VyLmgKKysrIGIvc3JjL2luY2x1 ZGUvcmVwbGljYXRpb24vbG9naWNhbHdvcmtlci5oCkBAIC0xMyw2ICsxMyw3IEBACiAjZGVmaW5l IExPR0lDQUxXT1JLRVJfSAogCiBleHRlcm4gdm9pZCBBcHBseVdvcmtlck1haW4oRGF0dW0gbWFp bl9hcmcpOworZXh0ZXJuIHZvaWQgQXBwbHlCZ3dvcmtlck1haW4oRGF0dW0gbWFpbl9hcmcpOwog CiBleHRlcm4gYm9vbCBJc0xvZ2ljYWxXb3JrZXIodm9pZCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL3JlcGxpY2F0aW9uL29yaWdpbi5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vb3Jp Z2luLmgKaW5kZXggMmQxYjVlNWMyOC4uYzczODliNDBhNyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvcmVwbGljYXRpb24vb3JpZ2luLmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vb3Jp Z2luLmgKQEAgLTUzLDcgKzUzLDcgQEAgZXh0ZXJuIFhMb2dSZWNQdHIgcmVwbG9yaWdpbl9nZXRf cHJvZ3Jlc3MoUmVwT3JpZ2luSWQgbm9kZSwgYm9vbCBmbHVzaCk7CiAKIGV4dGVybiB2b2lkIHJl cGxvcmlnaW5fc2Vzc2lvbl9hZHZhbmNlKFhMb2dSZWNQdHIgcmVtb3RlX2NvbW1pdCwKIAkJCQkJ CQkJCSAgIFhMb2dSZWNQdHIgbG9jYWxfY29tbWl0KTsKLWV4dGVybiB2b2lkIHJlcGxvcmlnaW5f c2Vzc2lvbl9zZXR1cChSZXBPcmlnaW5JZCBub2RlKTsKK2V4dGVybiB2b2lkIHJlcGxvcmlnaW5f c2Vzc2lvbl9zZXR1cChSZXBPcmlnaW5JZCBub2RlLCBib29sIG11c3RfYWNxdWlyZSk7CiBleHRl cm4gdm9pZCByZXBsb3JpZ2luX3Nlc3Npb25fcmVzZXQodm9pZCk7CiBleHRlcm4gWExvZ1JlY1B0 ciByZXBsb3JpZ2luX3Nlc3Npb25fZ2V0X3Byb2dyZXNzKGJvb2wgZmx1c2gpOwogCmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9yZW9yZGVyYnVmZmVyLmggYi9zcmMvaW5jbHVk ZS9yZXBsaWNhdGlvbi9yZW9yZGVyYnVmZmVyLmgKaW5kZXggNGEwMWY4NzdlNS4uYWJhMTY0MGY0 ZCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vcmVvcmRlcmJ1ZmZlci5oCisr KyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Jlb3JkZXJidWZmZXIuaApAQCAtMzAxLDYgKzMw MSw3IEBAIHR5cGVkZWYgc3RydWN0IFJlb3JkZXJCdWZmZXJUWE4KIAl7CiAJCVRpbWVzdGFtcFR6 IGNvbW1pdF90aW1lOwogCQlUaW1lc3RhbXBUeiBwcmVwYXJlX3RpbWU7CisJCVRpbWVzdGFtcFR6 IGFib3J0X3RpbWU7CiAJfQkJCXhhY3RfdGltZTsKIAogCS8qCkBAIC02NDcsOSArNjQ4LDExIEBA IGV4dGVybiB2b2lkIFJlb3JkZXJCdWZmZXJGaW5pc2hQcmVwYXJlZChSZW9yZGVyQnVmZmVyICpy YiwgVHJhbnNhY3Rpb25JZCB4aWQsCiBleHRlcm4gdm9pZCBSZW9yZGVyQnVmZmVyQXNzaWduQ2hp bGQoUmVvcmRlckJ1ZmZlciAqLCBUcmFuc2FjdGlvbklkLCBUcmFuc2FjdGlvbklkLCBYTG9nUmVj UHRyIGNvbW1pdF9sc24pOwogZXh0ZXJuIHZvaWQgUmVvcmRlckJ1ZmZlckNvbW1pdENoaWxkKFJl b3JkZXJCdWZmZXIgKiwgVHJhbnNhY3Rpb25JZCwgVHJhbnNhY3Rpb25JZCwKIAkJCQkJCQkJCSBY TG9nUmVjUHRyIGNvbW1pdF9sc24sIFhMb2dSZWNQdHIgZW5kX2xzbik7Ci1leHRlcm4gdm9pZCBS ZW9yZGVyQnVmZmVyQWJvcnQoUmVvcmRlckJ1ZmZlciAqLCBUcmFuc2FjdGlvbklkLCBYTG9nUmVj UHRyIGxzbik7CitleHRlcm4gdm9pZCBSZW9yZGVyQnVmZmVyQWJvcnQoUmVvcmRlckJ1ZmZlciAq LCBUcmFuc2FjdGlvbklkLCBYTG9nUmVjUHRyIGxzbiwKKwkJCQkJCQkgICBUaW1lc3RhbXBUeiBh Ym9ydF90aW1lKTsKIGV4dGVybiB2b2lkIFJlb3JkZXJCdWZmZXJBYm9ydE9sZChSZW9yZGVyQnVm ZmVyICosIFRyYW5zYWN0aW9uSWQgeGlkKTsKLWV4dGVybiB2b2lkIFJlb3JkZXJCdWZmZXJGb3Jn ZXQoUmVvcmRlckJ1ZmZlciAqLCBUcmFuc2FjdGlvbklkLCBYTG9nUmVjUHRyIGxzbik7CitleHRl cm4gdm9pZCBSZW9yZGVyQnVmZmVyRm9yZ2V0KFJlb3JkZXJCdWZmZXIgKiwgVHJhbnNhY3Rpb25J ZCwgWExvZ1JlY1B0ciBsc24sCisJCQkJCQkJCVRpbWVzdGFtcFR6IGFib3J0X3RpbWUpOwogZXh0 ZXJuIHZvaWQgUmVvcmRlckJ1ZmZlckludmFsaWRhdGUoUmVvcmRlckJ1ZmZlciAqLCBUcmFuc2Fj dGlvbklkLCBYTG9nUmVjUHRyIGxzbik7CiAKIGV4dGVybiB2b2lkIFJlb3JkZXJCdWZmZXJTZXRC YXNlU25hcHNob3QoUmVvcmRlckJ1ZmZlciAqLCBUcmFuc2FjdGlvbklkLCBYTG9nUmVjUHRyIGxz biwgc3RydWN0IFNuYXBzaG90RGF0YSAqc25hcCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9y ZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dv cmtlcl9pbnRlcm5hbC5oCmluZGV4IDkwMTg0NWFiYzIuLjA4ZTYzZGUwMTMgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oCisrKyBiL3NyYy9pbmNs dWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oCkBAIC0xNyw4ICsxNywxMSBAQAogI2lu Y2x1ZGUgImFjY2Vzcy94bG9nZGVmcy5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfc3Vic2NyaXB0 aW9uLmgiCiAjaW5jbHVkZSAiZGF0YXR5cGUvdGltZXN0YW1wLmgiCisjaW5jbHVkZSAicmVwbGlj YXRpb24vbG9naWNhbHJlbGF0aW9uLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9maWxlc2V0LmgiCiAj aW5jbHVkZSAic3RvcmFnZS9sb2NrLmgiCisjaW5jbHVkZSAic3RvcmFnZS9zaG1fbXEuaCIKKyNp bmNsdWRlICJzdG9yYWdlL3NobV90b2MuaCIKICNpbmNsdWRlICJzdG9yYWdlL3NwaW4uaCIKIAog CkBAIC02MCw2ICs2Myw5IEBAIHR5cGVkZWYgc3RydWN0IExvZ2ljYWxSZXBXb3JrZXIKIAkgKi8K IAlGaWxlU2V0ICAgICpzdHJlYW1fZmlsZXNldDsKIAorCS8qIEluZGljYXRlcyBpZiB0aGlzIHNs b3QgaXMgdXNlZCBmb3IgYW4gYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIuICovCisJYm9vbAkJc3Vi d29ya2VyOworCiAJLyogU3RhdHMuICovCiAJWExvZ1JlY1B0cglsYXN0X2xzbjsKIAlUaW1lc3Rh bXBUeiBsYXN0X3NlbmRfdGltZTsKQEAgLTY4LDkgKzc0LDcwIEBAIHR5cGVkZWYgc3RydWN0IExv Z2ljYWxSZXBXb3JrZXIKIAlUaW1lc3RhbXBUeiByZXBseV90aW1lOwogfSBMb2dpY2FsUmVwV29y a2VyOwogCisvKiBTdHJ1Y3QgZm9yIHNhdmluZyBhbmQgcmVzdG9yaW5nIGFwcGx5IGVycmNvbnRl eHQgaW5mb3JtYXRpb24gKi8KK3R5cGVkZWYgc3RydWN0IEFwcGx5RXJyb3JDYWxsYmFja0FyZwor eworCUxvZ2ljYWxSZXBNc2dUeXBlIGNvbW1hbmQ7CS8qIDAgaWYgaW52YWxpZCAqLworCUxvZ2lj YWxSZXBSZWxNYXBFbnRyeSAqcmVsOworCisJLyogUmVtb3RlIG5vZGUgaW5mb3JtYXRpb24gKi8K KwlpbnQJCQlyZW1vdGVfYXR0bnVtOwkvKiAtMSBpZiBpbnZhbGlkICovCisJVHJhbnNhY3Rpb25J ZCByZW1vdGVfeGlkOworCVhMb2dSZWNQdHIJZmluaXNoX2xzbjsKKwljaGFyCSAgICpvcmlnaW5f bmFtZTsKK30gQXBwbHlFcnJvckNhbGxiYWNrQXJnOworCisvKgorICogU3RhdHVzIGZvciBhcHBs eSBiYWNrZ3JvdW5kIHdvcmtlci4KKyAqLwordHlwZWRlZiBlbnVtIEFwcGx5Qmd3b3JrZXJTdGF0 dXMKK3sKKwlBUFBMWV9CR1dPUktFUl9BVFRBQ0hFRCA9IDAsCisJQVBQTFlfQkdXT1JLRVJfUkVB RFksCisJQVBQTFlfQkdXT1JLRVJfQlVTWSwKKwlBUFBMWV9CR1dPUktFUl9GSU5JU0hFRCwKKwlB UFBMWV9CR1dPUktFUl9FWElUCit9IEFwcGx5Qmd3b3JrZXJTdGF0dXM7CisKKy8qCisgKiBTaGFy ZWQgaW5mb3JtYXRpb24gYW1vbmcgYXBwbHkgd29ya2Vycy4KKyAqLwordHlwZWRlZiBzdHJ1Y3Qg QXBwbHlCZ3dvcmtlclNoYXJlZAoreworCXNsb2NrX3QJbXV0ZXg7CisKKwkvKiBTdGF0dXMgZm9y IGFwcGx5IGJhY2tncm91bmQgd29ya2VyLiAqLworCUFwcGx5Qmd3b3JrZXJTdGF0dXMJc3RhdHVz OworCisJLyogc2VydmVyIHZlcnNpb24gb2YgcHVibGlzaGVyLiAqLworCWludCBzZXJ2ZXJfdmVy c2lvbjsKKworCVRyYW5zYWN0aW9uSWQJc3RyZWFtX3hpZDsKKwl1aW50MzIJbjsJLyogaWQgb2Yg YXBwbHkgYmFja2dyb3VuZCB3b3JrZXIgKi8KK30gQXBwbHlCZ3dvcmtlclNoYXJlZDsKKworLyoK KyAqIFN0cnVjdCBmb3IgbWFpbnRhaW5pbmcgYW4gYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIuCisg Ki8KK3R5cGVkZWYgc3RydWN0IEFwcGx5Qmd3b3JrZXJTdGF0ZQoreworCXNobV9tcV9oYW5kbGUJ CQkqbXFfaGFuZGxlOworCWRzbV9zZWdtZW50CQkJCSpkc21fc2VnOworCUFwcGx5Qmd3b3JrZXJT aGFyZWQgdm9sYXRpbGUJKnBzdGF0ZTsKK30gQXBwbHlCZ3dvcmtlclN0YXRlOworCiAvKiBNYWlu IG1lbW9yeSBjb250ZXh0IGZvciBhcHBseSB3b3JrZXIuIFBlcm1hbmVudCBkdXJpbmcgd29ya2Vy IGxpZmV0aW1lLiAqLwogZXh0ZXJuIFBHRExMSU1QT1JUIE1lbW9yeUNvbnRleHQgQXBwbHlDb250 ZXh0OwogCitleHRlcm4gUEdETExJTVBPUlQgTWVtb3J5Q29udGV4dCBBcHBseU1lc3NhZ2VDb250 ZXh0OworCitleHRlcm4gUEdETExJTVBPUlQgQXBwbHlFcnJvckNhbGxiYWNrQXJnIGFwcGx5X2Vy cm9yX2NhbGxiYWNrX2FyZzsKKworZXh0ZXJuIFBHRExMSU1QT1JUIGJvb2wgTXlTdWJzY3JpcHRp b25WYWxpZDsKKworZXh0ZXJuIFBHRExMSU1QT1JUIHZvbGF0aWxlIEFwcGx5Qmd3b3JrZXJTaGFy ZWQgKk15UGFyYWxsZWxTdGF0ZTsKK2V4dGVybiBQR0RMTElNUE9SVCBMaXN0ICpzdWJ4YWN0bGlz dDsKKwogLyogbGlicHFyZWNlaXZlciBjb25uZWN0aW9uICovCiBleHRlcm4gUEdETExJTVBPUlQg c3RydWN0IFdhbFJlY2VpdmVyQ29ubiAqTG9nUmVwV29ya2VyV2FsUmN2Q29ubjsKIApAQCAtNzks MTggKzE0NiwyMiBAQCBleHRlcm4gUEdETExJTVBPUlQgU3Vic2NyaXB0aW9uICpNeVN1YnNjcmlw dGlvbjsKIGV4dGVybiBQR0RMTElNUE9SVCBMb2dpY2FsUmVwV29ya2VyICpNeUxvZ2ljYWxSZXBX b3JrZXI7CiAKIGV4dGVybiBQR0RMTElNUE9SVCBib29sIGluX3JlbW90ZV90cmFuc2FjdGlvbjsK K2V4dGVybiBQR0RMTElNUE9SVCBib29sIGluX3N0cmVhbWVkX3RyYW5zYWN0aW9uOworZXh0ZXJu IFBHRExMSU1QT1JUIFRyYW5zYWN0aW9uSWQgc3RyZWFtX3hpZDsKIAogZXh0ZXJuIHZvaWQgbG9n aWNhbHJlcF93b3JrZXJfYXR0YWNoKGludCBzbG90KTsKIGV4dGVybiBMb2dpY2FsUmVwV29ya2Vy ICpsb2dpY2FscmVwX3dvcmtlcl9maW5kKE9pZCBzdWJpZCwgT2lkIHJlbGlkLAogCQkJCQkJCQkJ CQkJYm9vbCBvbmx5X3J1bm5pbmcpOwogZXh0ZXJuIExpc3QgKmxvZ2ljYWxyZXBfd29ya2Vyc19m aW5kKE9pZCBzdWJpZCwgYm9vbCBvbmx5X3J1bm5pbmcpOwotZXh0ZXJuIHZvaWQgbG9naWNhbHJl cF93b3JrZXJfbGF1bmNoKE9pZCBkYmlkLCBPaWQgc3ViaWQsIGNvbnN0IGNoYXIgKnN1Ym5hbWUs Ci0JCQkJCQkJCQkgT2lkIHVzZXJpZCwgT2lkIHJlbGlkKTsKK2V4dGVybiBib29sIGxvZ2ljYWxy ZXBfd29ya2VyX2xhdW5jaChPaWQgZGJpZCwgT2lkIHN1YmlkLCBjb25zdCBjaGFyICpzdWJuYW1l LAorCQkJCQkJCQkJIE9pZCB1c2VyaWQsIE9pZCByZWxpZCwKKwkJCQkJCQkJCSBkc21faGFuZGxl IHN1Yndvcmtlcl9kc20pOwogZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF93b3JrZXJfc3RvcChPaWQg c3ViaWQsIE9pZCByZWxpZCk7CiBleHRlcm4gdm9pZCBsb2dpY2FscmVwX3dvcmtlcl93YWtldXAo T2lkIHN1YmlkLCBPaWQgcmVsaWQpOwogZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF93b3JrZXJfd2Fr ZXVwX3B0cihMb2dpY2FsUmVwV29ya2VyICp3b3JrZXIpOwogCiBleHRlcm4gaW50CWxvZ2ljYWxy ZXBfc3luY193b3JrZXJfY291bnQoT2lkIHN1YmlkKTsKK2V4dGVybiBpbnQJbG9naWNhbHJlcF9h cHBseV9iYWNrZ3JvdW5kX3dvcmtlcl9jb3VudChPaWQgc3ViaWQpOwogCiBleHRlcm4gdm9pZCBS ZXBsaWNhdGlvbk9yaWdpbk5hbWVGb3JUYWJsZXN5bmMoT2lkIHN1Ym9pZCwgT2lkIHJlbGlkLAog CQkJCQkJCQkJCQkgIGNoYXIgKm9yaWdpbm5hbWUsIGludCBzem9yZ25hbWUpOwpAQCAtMTAzLDEw ICsxNzQsMzkgQEAgZXh0ZXJuIHZvaWQgcHJvY2Vzc19zeW5jaW5nX3RhYmxlcyhYTG9nUmVjUHRy IGN1cnJlbnRfbHNuKTsKIGV4dGVybiB2b2lkIGludmFsaWRhdGVfc3luY2luZ190YWJsZV9zdGF0 ZXMoRGF0dW0gYXJnLCBpbnQgY2FjaGVpZCwKIAkJCQkJCQkJCQkJdWludDMyIGhhc2h2YWx1ZSk7 CiAKK2V4dGVybiB2b2lkIFVwZGF0ZVdvcmtlclN0YXRzKFhMb2dSZWNQdHIgbGFzdF9sc24sIFRp bWVzdGFtcFR6IHNlbmRfdGltZSwKKwkJCQkJCQkgIGJvb2wgcmVwbHkpOworCisvKiBwcm90b3R5 cGUgbmVlZGVkIGJlY2F1c2Ugb2Ygc3RyZWFtX2NvbW1pdCAqLworZXh0ZXJuIHZvaWQgYXBwbHlf ZGlzcGF0Y2goU3RyaW5nSW5mbyBzKTsKKworLyogRnVuY3Rpb24gZm9yIGFwcGx5IGVycm9yIGNh bGxiYWNrICovCitleHRlcm4gdm9pZCBhcHBseV9lcnJvcl9jYWxsYmFjayh2b2lkICphcmcpOwor CitleHRlcm4gdm9pZCBzdWJzY3JpcHRpb25fY2hhbmdlX2NiKERhdHVtIGFyZywgaW50IGNhY2hl aWQsIHVpbnQzMiBoYXNodmFsdWUpOworCisvKiBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlciBzZXR1 cCBhbmQgaW50ZXJhY3Rpb25zICovCitleHRlcm4gQXBwbHlCZ3dvcmtlclN0YXRlICphcHBseV9i Z3dvcmtlcl9maW5kX29yX3N0YXJ0KFRyYW5zYWN0aW9uSWQgeGlkLAorCQkJCQkJCQkJCQkJCQli b29sIHN0YXJ0KTsKK2V4dGVybiB2b2lkIGFwcGx5X2Jnd29ya2VyX3dhaXRfZm9yKEFwcGx5Qmd3 b3JrZXJTdGF0ZSAqd3N0YXRlLAorCQkJCQkJCQkJQXBwbHlCZ3dvcmtlclN0YXR1cyB3YWl0X2Zv cl9zdGF0dXMpOworZXh0ZXJuIHZvaWQgYXBwbHlfYmd3b3JrZXJfc2VuZF9kYXRhKEFwcGx5Qmd3 b3JrZXJTdGF0ZSAqd3N0YXRlLCBTaXplIG5ieXRlcywKKwkJCQkJCQkJCSBjb25zdCB2b2lkICpk YXRhKTsKK2V4dGVybiB2b2lkIGFwcGx5X2Jnd29ya2VyX2ZyZWUoQXBwbHlCZ3dvcmtlclN0YXRl ICp3c3RhdGUpOworZXh0ZXJuIHZvaWQgYXBwbHlfYmd3b3JrZXJfY2hlY2tfc3RhdHVzKHZvaWQp OworZXh0ZXJuIHZvaWQgYXBwbHlfYmd3b3JrZXJfc2V0X3N0YXR1cyhBcHBseUJnd29ya2VyU3Rh dHVzIHN0YXR1cyk7CitleHRlcm4gdm9pZCBhcHBseV9iZ3dvcmtlcl9zdWJ4YWN0X2luZm9fYWRk KFRyYW5zYWN0aW9uSWQgY3VycmVudF94aWQpOworCiBzdGF0aWMgaW5saW5lIGJvb2wKIGFtX3Rh Ymxlc3luY193b3JrZXIodm9pZCkKIHsKIAlyZXR1cm4gT2lkSXNWYWxpZChNeUxvZ2ljYWxSZXBX b3JrZXItPnJlbGlkKTsKIH0KIAorc3RhdGljIGlubGluZSBib29sCithbV9hcHBseV9iZ3dvcmtl cih2b2lkKQoreworCXJldHVybiBNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YndvcmtlcjsKK30KKwog I2VuZGlmCQkJCQkJCS8qIFdPUktFUl9JTlRFUk5BTF9IICovCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS91dGlscy93YWl0X2V2ZW50LmggYi9zcmMvaW5jbHVkZS91dGlscy93YWl0X2V2ZW50LmgK aW5kZXggYjU3OGUyZWM3NS4uYzJkMmExMTRkNyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRp bHMvd2FpdF9ldmVudC5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL3dhaXRfZXZlbnQuaApAQCAt MTA1LDYgKzEwNSw3IEBAIHR5cGVkZWYgZW51bQogCVdBSVRfRVZFTlRfSEFTSF9HUk9XX0JVQ0tF VFNfQUxMT0NBVEUsCiAJV0FJVF9FVkVOVF9IQVNIX0dST1dfQlVDS0VUU19FTEVDVCwKIAlXQUlU X0VWRU5UX0hBU0hfR1JPV19CVUNLRVRTX1JFSU5TRVJULAorCVdBSVRfRVZFTlRfTE9HSUNBTF9B UFBMWV9XT1JLRVJfU1RBVEVfQ0hBTkdFLAogCVdBSVRfRVZFTlRfTE9HSUNBTF9TWU5DX0RBVEEs CiAJV0FJVF9FVkVOVF9MT0dJQ0FMX1NZTkNfU1RBVEVfQ0hBTkdFLAogCVdBSVRfRVZFTlRfTVFf SU5URVJOQUwsCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N1YnNjcmlw dGlvbi5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N1YnNjcmlwdGlvbi5vdXQKaW5k ZXggN2ZjZmFkMTU5MS4uZjc2OTgzNWFmMCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9zdWJzY3JpcHRpb24ub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv c3Vic2NyaXB0aW9uLm91dApAQCAtMTk3LDcgKzE5Nyw3IEBAIEFMVEVSIFNVQlNDUklQVElPTiBy ZWdyZXNzX3Rlc3RzdWIgU0VUIChzbG90X25hbWUgPSBOT05FKTsKIERST1AgU1VCU0NSSVBUSU9O IHJlZ3Jlc3NfdGVzdHN1YjsKIC0tIGZhaWwgLSBzdHJlYW1pbmcgbXVzdCBiZSBib29sZWFuCiBD UkVBVEUgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBDT05ORUNUSU9OICdkYm5hbWU9cmVn cmVzc19kb2Vzbm90ZXhpc3QnIFBVQkxJQ0FUSU9OIHRlc3RwdWIgV0lUSCAoY29ubmVjdCA9IGZh bHNlLCBzdHJlYW1pbmcgPSBmb28pOwotRVJST1I6ICBzdHJlYW1pbmcgcmVxdWlyZXMgYSBCb29s ZWFuIHZhbHVlCitFUlJPUjogIHN0cmVhbWluZyByZXF1aXJlcyBhIEJvb2xlYW4gdmFsdWUgb3Ig ImFwcGx5IgogLS0gbm93IGl0IHdvcmtzCiBDUkVBVEUgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVz dHN1YiBDT05ORUNUSU9OICdkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QnIFBVQkxJQ0FUSU9O IHRlc3RwdWIgV0lUSCAoY29ubmVjdCA9IGZhbHNlLCBzdHJlYW1pbmcgPSB0cnVlKTsKIFdBUk5J Tkc6ICB0YWJsZXMgd2VyZSBub3Qgc3Vic2NyaWJlZCwgeW91IHdpbGwgaGF2ZSB0byBydW4gQUxU RVIgU1VCU0NSSVBUSU9OIC4uLiBSRUZSRVNIIFBVQkxJQ0FUSU9OIHRvIHN1YnNjcmliZSB0aGUg dGFibGVzCmRpZmYgLS1naXQgYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCBiL3Ny Yy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CmluZGV4IDRmYjc0NjkzMGEuLjY2NGQ0Yjhi MWEgMTAwNjQ0Ci0tLSBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CisrKyBiL3Ny Yy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CkBAIC0xMTYsNiArMTE2LDEwIEBAIEFwcGVu ZAogQXBwZW5kUGF0aAogQXBwZW5kUmVsSW5mbwogQXBwZW5kU3RhdGUKK0FwcGx5Qmd3b3JrZXJF bnRyeQorQXBwbHlCZ3dvcmtlclNoYXJlZAorQXBwbHlCZ3dvcmtlclN0YXRlCitBcHBseUJnd29y a2VyU3RhdHVzCiBBcHBseUVycm9yQ2FsbGJhY2tBcmcKIEFwcGx5RXhlY3V0aW9uRGF0YQogQXBw bHlTdWJYYWN0RGF0YQpAQCAtMTQ4Myw2ICsxNDg3LDcgQEAgTG9naWNhbFJlcFJlbElkCiBMb2dp Y2FsUmVwUmVsTWFwRW50cnkKIExvZ2ljYWxSZXBSZWxhdGlvbgogTG9naWNhbFJlcFJvbGxiYWNr UHJlcGFyZWRUeG5EYXRhCitMb2dpY2FsUmVwU3RyZWFtQWJvcnREYXRhCiBMb2dpY2FsUmVwVHVw bGVEYXRhCiBMb2dpY2FsUmVwVHlwCiBMb2dpY2FsUmVwV29ya2VyCi0tIAoyLjIzLjAud2luZG93 cy4xCgo= --_006_OS3PR01MB62756BD9482EB6BB1CA4CD4D9EAA9OS3PR01MB6275jpnp_ Content-Type: application/octet-stream; name="v10-0002-Test-streaming-apply-option-in-tap-test.patch" Content-Description: v10-0002-Test-streaming-apply-option-in-tap-test.patch Content-Disposition: attachment; filename="v10-0002-Test-streaming-apply-option-in-tap-test.patch"; size=70533; creation-date="Tue, 14 Jun 2022 03:35:00 GMT"; modification-date="Tue, 14 Jun 2022 03:37:01 GMT" Content-Transfer-Encoding: base64 RnJvbSBmZWFjOTYwOWIyNmRhMWRlYWVmMTQ4OThhYzM2NGRkOTFkMThhOTllIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAic2hpeS5mbnN0IiA8c2hpeS5mbnN0QGZ1aml0c3UuY29tPgpE YXRlOiBGcmksIDEzIE1heSAyMDIyIDE0OjUwOjMwICswODAwClN1YmplY3Q6IFtQQVRDSCB2MTAg Mi81XSBUZXN0IHN0cmVhbWluZyBhcHBseSBvcHRpb24gaW4gdGFwIHRlc3QKCkNoYW5nZSBhbGwg VEFQIHRlc3RzIHVzaW5nIHRoZSBTVUJTQ1JJUFRJT04gInN0cmVhbWluZyIgb3B0aW9uLCBzbyB0 aGV5Cm5vdyB0ZXN0IGJvdGggJ29uJyBhbmQgJ2FwcGx5JyB2YWx1ZXMuCi0tLQogc3JjL3Rlc3Qv c3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbCAgICAgICAgIHwgMTk5ICsrKystLS0KIHNyYy90 ZXN0L3N1YnNjcmlwdGlvbi90LzAxNl9zdHJlYW1fc3VieGFjdC5wbCB8IDExOSArKystLQogc3Jj L3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE3X3N0cmVhbV9kZGwucGwgICAgIHwgMTg4ICsrKystLS0K IC4uLi90LzAxOF9zdHJlYW1fc3VieGFjdF9hYm9ydC5wbCAgICAgICAgICAgICB8IDE5NSArKysr LS0tCiAuLi4vdC8wMTlfc3RyZWFtX3N1YnhhY3RfZGRsX2Fib3J0LnBsICAgICAgICAgfCAxMTAg KysrLQogLi4uL3N1YnNjcmlwdGlvbi90LzAyMl90d29waGFzZV9jYXNjYWRlLnBsICAgIHwgMzYz ICsrKysrKystLS0tLS0KIC4uLi9zdWJzY3JpcHRpb24vdC8wMjNfdHdvcGhhc2Vfc3RyZWFtLnBs ICAgICB8IDQ5OCArKysrKysrKysrLS0tLS0tLS0KIDcgZmlsZXMgY2hhbmdlZCwgMTAzNSBpbnNl cnRpb25zKCspLCA2MzcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2Ny aXB0aW9uL3QvMDE1X3N0cmVhbS5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNV9zdHJl YW0ucGwKaW5kZXggNjU2MWIxODlkZS4uYjNkODRiMWM3YyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qv c3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24v dC8wMTVfc3RyZWFtLnBsCkBAIC04LDYgKzgsMTE2IEBAIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpD bHVzdGVyOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRlc3Q6Ok1vcmU7CiAK KyMgRW5jYXBzdWxhdGUgYWxsIHRoZSBjb21tb24gdGVzdCBzdGVwcyB3aGljaCBhcmUgcmVsYXRl ZCB0byAic3RyZWFtaW5nIiBvcHRpb24KKyMgc28gdGhlIHNhbWUgY29kZSBjYW4gYmUgcnVuIGJv dGggZm9yIHRoZSBzdHJlYW1pbmc9b24gYW5kIHN0cmVhbWluZz1hcHBseQorIyBjYXNlcy4KK3N1 YiB0ZXN0X3N0cmVhbWluZworeworCW15ICgkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmli ZXIsICRhcHBuYW1lLCAkaXNfYXBwbHkpID0gQF87CisKKwkjIEludGVybGVhdmUgYSBwYWlyIG9m IHRyYW5zYWN0aW9ucywgZWFjaCBleGNlZWRpbmcgdGhlIDY0a0IgbGltaXQuCisJbXkgJGluICA9 ICcnOworCW15ICRvdXQgPSAnJzsKKworCW15ICR0aW1lciA9IElQQzo6UnVuOjp0aW1lb3V0KCRQ b3N0Z3JlU1FMOjpUZXN0OjpVdGlsczo6dGltZW91dF9kZWZhdWx0KTsKKworCW15ICRoID0gJG5v ZGVfcHVibGlzaGVyLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJywgXCRpbiwgXCRvdXQsICR0 aW1lciwKKwkJb25fZXJyb3Jfc3RvcCA9PiAwKTsKKworCSMgQ2hlY2sgdGhhdCBhIGJhY2tncm91 bmQgd29ya2VyIHN0YXJ0cyBpZiAic3RyZWFtaW5nIiBvcHRpb24gaXMKKwkjIHNwZWNpZmllZCBh cyAiYXBwbHkiLiAgV2UgaGF2ZSB0byBsb29rIGZvciB0aGUgREVCVUcxIGxvZyBtZXNzYWdlcwor CSMgYWJvdXQgdGhhdCwgc28gdGVtcG9yYXJpbHkgYnVtcCB1cCB0aGUgbG9nIHZlcmJvc2l0eS4K KwlpZiAoJGlzX2FwcGx5KQorCXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bv c3RncmVzcWwuY29uZicsCisJCQkibG9nX21pbl9tZXNzYWdlcyA9IGRlYnVnMSIpOworCQkkbm9k ZV9zdWJzY3JpYmVyLT5yZWxvYWQ7CisJfQorCisJJGluIC49IHF7CisJQkVHSU47CisJSU5TRVJU IElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmll cygzLCA1MDAwKSBzKGkpOworCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBt b2QoYSwyKSA9IDA7CisJREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwor CX07CisJJGgtPnB1bXBfbmI7CisKKwlpZiAoJGlzX2FwcGx5KQorCXsKKwkJJG5vZGVfc3Vic2Ny aWJlci0+d2FpdF9mb3JfbG9nKHFyL1xbQXBwbHkgQkdXICNcZCtcXSBzdGFydGVkLywgMCk7CisJ CSRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCQkJImxv Z19taW5fbWVzc2FnZXMgPSB3YXJuaW5nIik7CisJCSRub2RlX3N1YnNjcmliZXItPnJlbG9hZDsK Kwl9CisKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwlC RUdJTjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00g Z2VuZXJhdGVfc2VyaWVzKDUwMDEsIDk5OTkpIHMoaSk7CisJREVMRVRFIEZST00gdGVzdF90YWIg V0hFUkUgYSA+IDUwMDA7CisJQ09NTUlUOworCX0pOworCisJJGluIC49IHF7CisJQ09NTUlUOwor CVxxCisJfTsKKwkkaC0+ZmluaXNoOyAgICAjIGVycm9ycyBtYWtlIHRoZSBuZXh0IHRlc3QgZmFp bCwgc28gaWdub3JlIHRoZW0gaGVyZQorCisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRj aHVwKCRhcHBuYW1lKTsKKworCW15ICRyZXN1bHQgPQorCSAgJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChk ID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7CisJaXMoJHJlc3VsdCwgcXEoMzMzNHwzMzM0fDMzMzQp LAorCQknY2hlY2sgZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJyk7CisKKwkj IFRlc3QgdGhlIHN0cmVhbWluZyBpbiBiaW5hcnkgbW9kZQorCSRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiQUxURVIgU1VCU0NSSVBUSU9OIHRhcF9zdWIgU0VUIChi aW5hcnkgPSBvbikiKTsKKworCSMgSW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBlbm91Z2ggcm93 cyB0byBleGNlZWQgdGhlIDY0a0IgbGltaXQuCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwo CisJCSdwb3N0Z3JlcycsIHF7CisJQkVHSU47CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNU IGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1MDAxLCAxMDAwMCkgcyhpKTsK KwlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOworCURF TEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwlDT01NSVQ7CisJfSk7CisK Kwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJJHJlc3Vs dCA9CisJICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVD VCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKKwlp cygkcmVzdWx0LCBxcSg2NjY3fDY2Njd8NjY2NyksCisJCSdjaGVjayBleHRyYSBjb2x1bW5zIGNv bnRhaW4gbG9jYWwgZGVmYXVsdHMnKTsKKworCSMgQ2hhbmdlIHRoZSBsb2NhbCB2YWx1ZXMgb2Yg dGhlIGV4dHJhIGNvbHVtbnMgb24gdGhlIHN1YnNjcmliZXIsCisJIyB1cGRhdGUgcHVibGlzaGVy LCBhbmQgY2hlY2sgdGhhdCBzdWJzY3JpYmVyIHJldGFpbnMgdGhlIGV4cGVjdGVkCisJIyB2YWx1 ZXMuIFRoaXMgaXMgdG8gZW5zdXJlIHRoYXQgbm9uLXN0cmVhbWluZyB0cmFuc2FjdGlvbnMgYmVo YXZlCisJIyBwcm9wZXJseSBhZnRlciBhIHN0cmVhbWluZyB0cmFuc2FjdGlvbi4KKwkkbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlVQREFURSB0ZXN0X3RhYiBTRVQg YyA9ICdlcG9jaCc6OnRpbWVzdGFtcHR6ICsgOTg3NjU0MzIxICogaW50ZXJ2YWwgJzFzJyIKKwkp OworCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJVUERBVEUgdGVz dF90YWIgU0VUIGIgPSBtZDUoYTo6dGV4dCkiKTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9m b3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwkkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGV4dHJhY3QoZXBv Y2ggZnJvbSBjKSA9IDk4NzY1NDMyMSksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiCisJ KTsKKwlpcygkcmVzdWx0LCBxcSg2NjY3fDY2Njd8NjY2NyksCisJCSdjaGVjayBleHRyYSBjb2x1 bW5zIGNvbnRhaW4gbG9jYWxseSBjaGFuZ2VkIGRhdGEnKTsKKworCSMgQ2xlYW51cCB0aGUgdGVz dCBkYXRhCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIkRFTEVU RSBGUk9NIHRlc3RfdGFiIFdIRVJFIChhID4gMikiKTsKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRf Zm9yX2NhdGNodXAoJGFwcG5hbWUpOworfQorCiAjIENyZWF0ZSBwdWJsaXNoZXIgbm9kZQogbXkg JG5vZGVfcHVibGlzaGVyID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdwdWJsaXNo ZXInKTsKICRub2RlX3B1Ymxpc2hlci0+aW5pdChhbGxvd3Nfc3RyZWFtaW5nID0+ICdsb2dpY2Fs Jyk7CkBAIC0zNyw2ICsxNDcsMTAgQEAgJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKIAkiQ1JFQVRFIFBVQkxJQ0FUSU9OIHRhcF9wdWIgRk9SIFRBQkxFIHRlc3RfdGFiIik7 CiAKIG15ICRhcHBuYW1lID0gJ3RhcF9zdWInOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIworIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdvbicKKyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjCiAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKIAkiQ1JFQVRFIFNVQlNDUklQVElPTiB0YXBfc3ViIENPTk5FQ1RJT04gJyRwdWJsaXNoZXJf Y29ubnN0ciBhcHBsaWNhdGlvbl9uYW1lPSRhcHBuYW1lJyBQVUJMSUNBVElPTiB0YXBfcHViIFdJ VEggKHN0cmVhbWluZyA9IG9uKSIKICk7CkBAIC01NCw4MiArMTY4LDI1IEBAIG15ICRyZXN1bHQg PQogCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3Rf dGFiIik7CiBpcygkcmVzdWx0LCBxcSgyfDJ8MiksICdjaGVjayBpbml0aWFsIGRhdGEgd2FzIGNv cGllZCB0byBzdWJzY3JpYmVyJyk7CiAKLSMgSW50ZXJsZWF2ZSBhIHBhaXIgb2YgdHJhbnNhY3Rp b25zLCBlYWNoIGV4Y2VlZGluZyB0aGUgNjRrQiBsaW1pdC4KLW15ICRpbiAgPSAnJzsKLW15ICRv dXQgPSAnJzsKLQotbXkgJHRpbWVyID0gSVBDOjpSdW46OnRpbWVvdXQoJFBvc3RncmVTUUw6OlRl c3Q6OlV0aWxzOjp0aW1lb3V0X2RlZmF1bHQpOwotCi1teSAkaCA9ICRub2RlX3B1Ymxpc2hlci0+ YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycsIFwkaW4sIFwkb3V0LCAkdGltZXIsCi0Jb25fZXJy b3Jfc3RvcCA9PiAwKTsKLQotJGluIC49IHF7Ci1CRUdJTjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFi IFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMywgNTAwMCkgcyhp KTsKLVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci1E RUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7Ci19OwotJGgtPnB1bXBfbmI7 Ci0KLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci1CRUdJTjsK LUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0 ZV9zZXJpZXMoNTAwMSwgOTk5OSkgcyhpKTsKLURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEg PiA1MDAwOwotQ09NTUlUOwotfSk7Ci0KLSRpbiAuPSBxewotQ09NTUlUOwotXHEKLX07Ci0kaC0+ ZmluaXNoOyAgICAjIGVycm9ycyBtYWtlIHRoZSBuZXh0IHRlc3QgZmFpbCwgc28gaWdub3JlIHRo ZW0gaGVyZQotCi0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwot Ci0kcmVzdWx0ID0KLSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0J IlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIi KTsKLWlzKCRyZXN1bHQsIHFxKDMzMzR8MzMzNHwzMzM0KSwgJ2NoZWNrIGV4dHJhIGNvbHVtbnMg Y29udGFpbiBsb2NhbCBkZWZhdWx0cycpOwotCi0jIFRlc3QgdGhlIHN0cmVhbWluZyBpbiBiaW5h cnkgbW9kZQotJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIkFMVEVS IFNVQlNDUklQVElPTiB0YXBfc3ViIFNFVCAoYmluYXJ5ID0gb24pIik7Ci0KLSMgSW5zZXJ0LCB1 cGRhdGUgYW5kIGRlbGV0ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgdGhlIDY0a0IgbGltaXQuCi0k bm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxewotQkVHSU47Ci1JTlNF UlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2Vy aWVzKDUwMDEsIDEwMDAwKSBzKGkpOwotVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdI RVJFIG1vZChhLDIpID0gMDsKLURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0g MDsKLUNPTU1JVDsKLX0pOwotCi0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFw cG5hbWUpOwordGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVy LCAkYXBwbmFtZSwgMCk7CiAKLSRyZXN1bHQgPQotICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5 OSkgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwgcXEoNjY2N3w2NjY3fDY2NjcpLCAnY2hl Y2sgZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJyk7CisjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdhcHBs eScKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitteSAkb2xkcGlkID0gJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCBGUk9NIHBn X3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5E IHN0YXRlID0gJ3N0cmVhbWluZyc7IgorKTsKIAotIyBDaGFuZ2UgdGhlIGxvY2FsIHZhbHVlcyBv ZiB0aGUgZXh0cmEgY29sdW1ucyBvbiB0aGUgc3Vic2NyaWJlciwKLSMgdXBkYXRlIHB1Ymxpc2hl ciwgYW5kIGNoZWNrIHRoYXQgc3Vic2NyaWJlciByZXRhaW5zIHRoZSBleHBlY3RlZAotIyB2YWx1 ZXMuIFRoaXMgaXMgdG8gZW5zdXJlIHRoYXQgbm9uLXN0cmVhbWluZyB0cmFuc2FjdGlvbnMgYmVo YXZlCi0jIHByb3Blcmx5IGFmdGVyIGEgc3RyZWFtaW5nIHRyYW5zYWN0aW9uLgogJG5vZGVfc3Vi c2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlVQREFURSB0ZXN0X3RhYiBTRVQgYyA9 ICdlcG9jaCc6OnRpbWVzdGFtcHR6ICsgOTg3NjU0MzIxICogaW50ZXJ2YWwgJzFzJyIKLSk7Ci0k bm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJVUERBVEUgdGVzdF90YWIg U0VUIGIgPSBtZDUoYTo6dGV4dCkiKTsKKwkiQUxURVIgU1VCU0NSSVBUSU9OIHRhcF9zdWIgU0VU KHN0cmVhbWluZyA9IGFwcGx5LCBiaW5hcnkgPSBvZmYpIik7CiAKLSRub2RlX3B1Ymxpc2hlci0+ d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ciskbm9kZV9wdWJsaXNoZXItPnBvbGxfcXVlcnlf dW50aWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCAhPSAkb2xkcGlkIEZST00gcGdfc3RhdF9y ZXBsaWNhdGlvbiBXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUg PSAnc3RyZWFtaW5nJzsiCisgICkKKyAgb3IgZGllCisgICJUaW1lZCBvdXQgd2hpbGUgd2FpdGlu ZyBmb3IgYXBwbHkgdG8gcmVzdGFydCBhZnRlciBjaGFuZ2luZyBTVUJTQ1JJUFRJT04iOwogCi0k cmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVD VCBjb3VudCgqKSwgY291bnQoZXh0cmFjdChlcG9jaCBmcm9tIGMpID0gOTg3NjU0MzIxKSwgY291 bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIKLSk7Ci1pcygkcmVzdWx0LCBxcSg2NjY3fDY2Njd8 NjY2NyksCi0JJ2NoZWNrIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbGx5IGNoYW5nZWQgZGF0 YScpOwordGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAk YXBwbmFtZSwgMSk7CiAKICRub2RlX3N1YnNjcmliZXItPnN0b3A7CiAkbm9kZV9wdWJsaXNoZXIt PnN0b3A7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTZfc3RyZWFtX3N1 YnhhY3QucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTZfc3RyZWFtX3N1YnhhY3QucGwK aW5kZXggZjI3ZjE2OTRmMi4uYjViNmRjMzc5ZiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2Ny aXB0aW9uL3QvMDE2X3N0cmVhbV9zdWJ4YWN0LnBsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlv bi90LzAxNl9zdHJlYW1fc3VieGFjdC5wbApAQCAtOCw2ICs4LDcyIEBAIHVzZSBQb3N0Z3JlU1FM OjpUZXN0OjpDbHVzdGVyOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRlc3Q6 Ok1vcmU7CiAKKyMgRW5jYXBzdWxhdGUgYWxsIHRoZSBjb21tb24gdGVzdCBzdGVwcyB3aGljaCBh cmUgcmVsYXRlZCB0byAic3RyZWFtaW5nIiBvcHRpb24KKyMgc28gdGhlIHNhbWUgY29kZSBjYW4g YmUgcnVuIGJvdGggZm9yIHRoZSBzdHJlYW1pbmc9b24gYW5kIHN0cmVhbWluZz1hcHBseQorIyBj YXNlcy4KK3N1YiB0ZXN0X3N0cmVhbWluZworeworCW15ICgkbm9kZV9wdWJsaXNoZXIsICRub2Rl X3N1YnNjcmliZXIsICRhcHBuYW1lLCAkaXNfYXBwbHkpID0gQF87CisKKwkjIENoZWNrIHRoYXQg YSBiYWNrZ3JvdW5kIHdvcmtlciBzdGFydHMgaWYgInN0cmVhbWluZyIgb3B0aW9uIGlzCisJIyBz cGVjaWZpZWQgYXMgImFwcGx5Ii4gIFdlIGhhdmUgdG8gbG9vayBmb3IgdGhlIERFQlVHMSBsb2cg bWVzc2FnZXMKKwkjIGFib3V0IHRoYXQsIHNvIHRlbXBvcmFyaWx5IGJ1bXAgdXAgdGhlIGxvZyB2 ZXJib3NpdHkuCisJaWYgKCRpc19hcHBseSkKKwl7CisJCSRub2RlX3N1YnNjcmliZXItPmFwcGVu ZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCQkJImxvZ19taW5fbWVzc2FnZXMgPSBkZWJ1ZzEi KTsKKwkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOworCX0KKworCSMgSW5zZXJ0LCB1cGRhdGUg YW5kIGRlbGV0ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgNjRrQiBsaW1pdC4KKwkkbm9kZV9wdWJs aXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwlCRUdJTjsKKwlJTlNFUlQgSU5U TyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKCAg ICAzLCAgNTAwKSBzKGkpOworCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBt b2QoYSwyKSA9IDA7CisJREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwor CVNBVkVQT0lOVCBzMTsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRl eHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUwMSwgIDEwMDApIHMoaSk7CisJVVBEQVRFIHRlc3Rf dGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKKwlERUxFVEUgRlJPTSB0ZXN0 X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJU0FWRVBPSU5UIHMyOworCUlOU0VSVCBJTlRPIHRl c3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMTAwMSwg IDE1MDApIHMoaSk7CisJVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChh LDIpID0gMDsKKwlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJU0FW RVBPSU5UIHMzOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkg RlJPTSBnZW5lcmF0ZV9zZXJpZXMoMTUwMSwgIDIwMDApIHMoaSk7CisJVVBEQVRFIHRlc3RfdGFi IFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKKwlERUxFVEUgRlJPTSB0ZXN0X3Rh YiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJU0FWRVBPSU5UIHM0OworCUlOU0VSVCBJTlRPIHRlc3Rf dGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMjAwMSwgMjUw MCkgcyhpKTsKKwlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikg PSAwOworCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwlDT01NSVQ7 CisJfSk7CisKKwlpZiAoJGlzX2FwcGx5KQorCXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9m b3JfbG9nKHFyL1xbQXBwbHkgQkdXICNcZCtcXSBzdGFydGVkLywgMCk7CisJCSRub2RlX3N1YnNj cmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCQkJImxvZ19taW5fbWVzc2Fn ZXMgPSB3YXJuaW5nIik7CisJCSRub2RlX3N1YnNjcmliZXItPnJlbG9hZDsKKwl9CisKKwkkbm9k ZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJbXkgJHJlc3VsdCA9 CisJICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBj b3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKKwlpcygk cmVzdWx0LCBxcSgxNjY3fDE2Njd8MTY2NyksCisJCSdjaGVjayBkYXRhIHdhcyBjb3BpZWQgdG8g c3Vic2NyaWJlciBpbiBzdHJlYW1pbmcgbW9kZSBhbmQgZXh0cmEgY29sdW1ucyBjb250YWluIGxv Y2FsIGRlZmF1bHRzJworCSk7CisKKwkjIENsZWFudXAgdGhlIHRlc3QgZGF0YQorCSRub2RlX3B1 Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJERUxFVEUgRlJPTSB0ZXN0X3RhYiBX SEVSRSAoYSA+IDIpIik7CisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBu YW1lKTsKK30KKwogIyBDcmVhdGUgcHVibGlzaGVyIG5vZGUKIG15ICRub2RlX3B1Ymxpc2hlciA9 IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygncHVibGlzaGVyJyk7CiAkbm9kZV9wdWJs aXNoZXItPmluaXQoYWxsb3dzX3N0cmVhbWluZyA9PiAnbG9naWNhbCcpOwpAQCAtMzcsNiArMTAz LDEwIEBAICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIkNSRUFURSBQ VUJMSUNBVElPTiB0YXBfcHViIEZPUiBUQUJMRSB0ZXN0X3RhYiIpOwogCiBteSAkYXBwbmFtZSA9 ICd0YXBfc3ViJzsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVGVzdCB1 c2luZyBzdHJlYW1pbmcgbW9kZSAnb24nCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IwogJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIkNSRUFURSBTVUJT Q1JJUFRJT04gdGFwX3N1YiBDT05ORUNUSU9OICckcHVibGlzaGVyX2Nvbm5zdHIgYXBwbGljYXRp b25fbmFtZT0kYXBwbmFtZScgUFVCTElDQVRJT04gdGFwX3B1YiBXSVRIIChzdHJlYW1pbmcgPSBv bikiCiApOwpAQCAtNTQsNDEgKzEyNCwyNiBAQCBteSAkcmVzdWx0ID0KIAkiU0VMRUNUIGNvdW50 KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwogaXMoJHJlc3Vs dCwgcXEoMnwyfDIpLCAnY2hlY2sgaW5pdGlhbCBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJl cicpOwogCi0jIEluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVk IDY0a0IgbGltaXQuCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBx ewotQkVHSU47Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZS T00gZ2VuZXJhdGVfc2VyaWVzKCAgICAzLCAgNTAwKSBzKGkpOwotVVBEQVRFIHRlc3RfdGFiIFNF VCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKLURFTEVURSBGUk9NIHRlc3RfdGFiIFdI RVJFIG1vZChhLDMpID0gMDsKLVNBVkVQT0lOVCBzMTsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNF TEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNTAxLCAgMTAwMCkgcyhp KTsKLVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci1E RUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7Ci1TQVZFUE9JTlQgczI7Ci1J TlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVf c2VyaWVzKDEwMDEsICAxNTAwKSBzKGkpOwotVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIp IFdIRVJFIG1vZChhLDIpID0gMDsKLURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMp ID0gMDsKLVNBVkVQT0lOVCBzMzsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUo aTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMTUwMSwgIDIwMDApIHMoaSk7Ci1VUERBVEUg dGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOwotREVMRVRFIEZST00g dGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwotU0FWRVBPSU5UIHM0OwotSU5TRVJUIElOVE8g dGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygyMDAx LCAyNTAwKSBzKGkpOwotVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChh LDIpID0gMDsKLURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKLUNPTU1J VDsKLX0pOwordGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVy LCAkYXBwbmFtZSwgMCk7CiAKLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBw bmFtZSk7Ci0KLSRyZXN1bHQgPQotICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKLQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0 ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwgcXEoMTY2N3wxNjY3fDE2NjcpLAotCSdjaGVjayBkYXRh IHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlciBpbiBzdHJlYW1pbmcgbW9kZSBhbmQgZXh0cmEgY29s dW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMKKyMgVGVzdCB1c2luZyBzdHJlYW1pbmcgbW9kZSAnYXBwbHknCisjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworbXkgJG9sZHBpZCA9ICRub2RlX3B1Ymxpc2hlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwaWQgRlJPTSBwZ19zdGF0X3JlcGxpY2F0 aW9uIFdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWUnIEFORCBzdGF0ZSA9ICdzdHJl YW1pbmcnOyIKICk7CiAKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAor CSJBTFRFUiBTVUJTQ1JJUFRJT04gdGFwX3N1YiBTRVQoc3RyZWFtaW5nID0gYXBwbHkpIik7CisK KyRub2RlX3B1Ymxpc2hlci0+cG9sbF9xdWVyeV91bnRpbCgncG9zdGdyZXMnLAorCSJTRUxFQ1Qg cGlkICE9ICRvbGRwaWQgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uIFdIRVJFIGFwcGxpY2F0aW9u X25hbWUgPSAnJGFwcG5hbWUnIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIKKyAgKQorICBvciBk aWUKKyAgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBhcHBseSB0byByZXN0YXJ0IGFmdGVy IGNoYW5naW5nIFNVQlNDUklQVElPTiI7CisKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hl ciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDEpOworCiAkbm9kZV9zdWJzY3JpYmVyLT5z dG9wOwogJG5vZGVfcHVibGlzaGVyLT5zdG9wOwogCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJz Y3JpcHRpb24vdC8wMTdfc3RyZWFtX2RkbC5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAx N19zdHJlYW1fZGRsLnBsCmluZGV4IDBiY2U2M2I3MTYuLjdlNWRjMThjZDIgMTAwNjQ0Ci0tLSBh L3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxN19zdHJlYW1fZGRsLnBsCisrKyBiL3NyYy90ZXN0 L3N1YnNjcmlwdGlvbi90LzAxN19zdHJlYW1fZGRsLnBsCkBAIC04LDYgKzgsMTExIEBAIHVzZSBQ b3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwog dXNlIFRlc3Q6Ok1vcmU7CiAKKyMgRW5jYXBzdWxhdGUgYWxsIHRoZSBjb21tb24gdGVzdCBzdGVw cyB3aGljaCBhcmUgcmVsYXRlZCB0byAic3RyZWFtaW5nIiBvcHRpb24KKyMgc28gdGhlIHNhbWUg Y29kZSBjYW4gYmUgcnVuIGJvdGggZm9yIHRoZSBzdHJlYW1pbmc9b24gYW5kIHN0cmVhbWluZz1h cHBseQorIyBjYXNlcy4KK3N1YiB0ZXN0X3N0cmVhbWluZworeworCW15ICgkbm9kZV9wdWJsaXNo ZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAkaXNfYXBwbHkpID0gQF87CisKKwkjIGEg c21hbGwgKG5vbi1zdHJlYW1lZCkgdHJhbnNhY3Rpb24gd2l0aCBEREwgYW5kIERNTAorCSRub2Rl X3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCUJFR0lOOworCUlOU0VS VCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoMywgbWQ1KDM6OnRleHQpKTsKKwlBTFRFUiBUQUJMRSB0 ZXN0X3RhYiBBREQgQ09MVU1OIGMgSU5UOworCVNBVkVQT0lOVCBzMTsKKwlJTlNFUlQgSU5UTyB0 ZXN0X3RhYiBWQUxVRVMgKDQsIG1kNSg0Ojp0ZXh0KSwgLTQpOworCUNPTU1JVDsKKwl9KTsKKwor CSMgQ2hlY2sgdGhhdCBhIGJhY2tncm91bmQgd29ya2VyIHN0YXJ0cyBpZiAic3RyZWFtaW5nIiBv cHRpb24gaXMKKwkjIHNwZWNpZmllZCBhcyAiYXBwbHkiLiAgV2UgaGF2ZSB0byBsb29rIGZvciB0 aGUgREVCVUcxIGxvZyBtZXNzYWdlcworCSMgYWJvdXQgdGhhdCwgc28gdGVtcG9yYXJpbHkgYnVt cCB1cCB0aGUgbG9nIHZlcmJvc2l0eS4KKwlpZiAoJGlzX2FwcGx5KQorCXsKKwkJJG5vZGVfc3Vi c2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJCQkibG9nX21pbl9tZXNz YWdlcyA9IGRlYnVnMSIpOworCQkkbm9kZV9zdWJzY3JpYmVyLT5yZWxvYWQ7CisJfQorCisJIyBs YXJnZSAoc3RyZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGggRERMIGFuZCBETUwKKwkkbm9kZV9wdWJs aXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwlCRUdJTjsKKwlJTlNFUlQgSU5U TyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpLCAtaSBGUk9NIGdlbmVyYXRlX3Nlcmll cyg1LCAxMDAwKSBzKGkpOworCUFMVEVSIFRBQkxFIHRlc3RfdGFiIEFERCBDT0xVTU4gZCBJTlQ7 CisJU0FWRVBPSU5UIHMxOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6 dGV4dCksIC1pLCAyKmkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMTAwMSwgMjAwMCkgcyhpKTsKKwlD T01NSVQ7CisJfSk7CisKKwlpZiAoJGlzX2FwcGx5KQorCXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+ d2FpdF9mb3JfbG9nKHFyL1xbQXBwbHkgQkdXICNcZCtcXSBzdGFydGVkLywgMCk7CisJCSRub2Rl X3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCQkJImxvZ19taW5f bWVzc2FnZXMgPSB3YXJuaW5nIik7CisJCSRub2RlX3N1YnNjcmliZXItPnJlbG9hZDsKKwl9CisK KwkjIGEgc21hbGwgKG5vbi1zdHJlYW1lZCkgdHJhbnNhY3Rpb24gd2l0aCBEREwgYW5kIERNTAor CSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCUJFR0lOOwor CUlOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoMjAwMSwgbWQ1KDIwMDE6OnRleHQpLCAtMjAw MSwgMioyMDAxKTsKKwlBTFRFUiBUQUJMRSB0ZXN0X3RhYiBBREQgQ09MVU1OIGUgSU5UOworCVNB VkVQT0lOVCBzMTsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDIwMDIsIG1kNSgyMDAy Ojp0ZXh0KSwgLTIwMDIsIDIqMjAwMiwgLTMqMjAwMik7CisJQ09NTUlUOworCX0pOworCisJJG5v ZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCW15ICRyZXN1bHQg PQorCSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1Qg Y291bnQoKiksIGNvdW50KGMpLCBjb3VudChkKSwgY291bnQoZSkgRlJPTSB0ZXN0X3RhYiIpOwor CWlzKCRyZXN1bHQsIHFxKDIwMDJ8MTk5OXwxMDAyfDEpLAorCQknY2hlY2sgZGF0YSB3YXMgY29w aWVkIHRvIHN1YnNjcmliZXIgaW4gc3RyZWFtaW5nIG1vZGUgYW5kIGV4dHJhIGNvbHVtbnMgY29u dGFpbiBsb2NhbCBkZWZhdWx0cycKKwkpOworCisJIyBBIGxhcmdlIChzdHJlYW1lZCkgdHJhbnNh Y3Rpb24gd2l0aCBEREwgYW5kIERNTC4gT25lIG9mIHRoZSBEREwgaXMgcGVyZm9ybWVkCisJIyBh ZnRlciBETUwgdG8gZW5zdXJlIHRoYXQgd2UgaW52YWxpZGF0ZSB0aGUgc2NoZW1hIHNlbnQgZm9y IHRlc3RfdGFiIHNvIHRoYXQKKwkjIHRoZSBuZXh0IHRyYW5zYWN0aW9uIGhhcyB0byBzZW5kIHRo ZSBzY2hlbWEgYWdhaW4uCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3Jl cycsIHF7CisJQkVHSU47CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0 ZXh0KSwgLWksIDIqaSwgLTMqaSBGUk9NIGdlbmVyYXRlX3NlcmllcygyMDAzLDUwMDApIHMoaSk7 CisJQUxURVIgVEFCTEUgdGVzdF90YWIgQUREIENPTFVNTiBmIElOVDsKKwlDT01NSVQ7CisJfSk7 CisKKwkjIEEgc21hbGwgdHJhbnNhY3Rpb24gdGhhdCB3b24ndCBnZXQgc3RyZWFtZWQuIFRoaXMg aXMganVzdCB0byBlbnN1cmUgdGhhdCB3ZQorCSMgc2VuZCB0aGUgc2NoZW1hIGFnYWluIHRvIHJl ZmxlY3QgdGhlIGxhc3QgY29sdW1uIGFkZGVkIGluIHRoZSBwcmV2aW91cyB0ZXN0LgorCSRub2Rl X3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCUJFR0lOOworCUlOU0VS VCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCksIC1pLCAyKmksIC0zKmksIDQq aSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1MDAxLDUwMDUpIHMoaSk7CisJQ09NTUlUOworCX0pOwor CisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCSRyZXN1 bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBj b3VudCgqKSwgY291bnQoYyksIGNvdW50KGQpLCBjb3VudChlKSwgY291bnQoZikgRlJPTSB0ZXN0 X3RhYiIKKwkpOworCWlzKCRyZXN1bHQsIHFxKDUwMDV8NTAwMnw0MDA1fDMwMDR8NSksCisJCSdj aGVjayBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlciBmb3IgYm90aCBzdHJlYW1pbmcgYW5k IG5vbi1zdHJlYW1pbmcgdHJhbnNhY3Rpb25zJworCSk7CisKKwkjIENsZWFudXAgdGhlIHRlc3Qg ZGF0YQorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCURF TEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIChhID4gMik7CisJQUxURVIgVEFCTEUgdGVzdF90YWIg RFJPUCBDT0xVTU4gYywgRFJPUCBDT0xVTU4gZCwgRFJPUCBDT0xVTU4gZSwgRFJPUCBDT0xVTU4g ZjsKKwl9KTsKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwor fQorCiAjIENyZWF0ZSBwdWJsaXNoZXIgbm9kZQogbXkgJG5vZGVfcHVibGlzaGVyID0gUG9zdGdy ZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdwdWJsaXNoZXInKTsKICRub2RlX3B1Ymxpc2hlci0+ aW5pdChhbGxvd3Nfc3RyZWFtaW5nID0+ICdsb2dpY2FsJyk7CkBAIC0zNyw2ICsxNDIsMTAgQEAg JG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiQ1JFQVRFIFBVQkxJQ0FU SU9OIHRhcF9wdWIgRk9SIFRBQkxFIHRlc3RfdGFiIik7CiAKIG15ICRhcHBuYW1lID0gJ3RhcF9z dWInOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHVzaW5nIHN0 cmVhbWluZyBtb2RlICdvbicKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAkbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiQ1JFQVRFIFNVQlNDUklQVElP TiB0YXBfc3ViIENPTk5FQ1RJT04gJyRwdWJsaXNoZXJfY29ubnN0ciBhcHBsaWNhdGlvbl9uYW1l PSRhcHBuYW1lJyBQVUJMSUNBVElPTiB0YXBfcHViIFdJVEggKHN0cmVhbWluZyA9IG9uKSIKICk7 CkBAIC01NCw3NiArMTYzLDI1IEBAIG15ICRyZXN1bHQgPQogCSJTRUxFQ1QgY291bnQoKiksIGNv dW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7CiBpcygkcmVzdWx0LCBxcSgy fDB8MCksICdjaGVjayBpbml0aWFsIGRhdGEgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyJyk7CiAK LSMgYSBzbWFsbCAobm9uLXN0cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRoIERETCBhbmQgRE1MCi0k bm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxewotQkVHSU47Ci1JTlNF UlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDMsIG1kNSgzOjp0ZXh0KSk7Ci1BTFRFUiBUQUJMRSB0 ZXN0X3RhYiBBREQgQ09MVU1OIGMgSU5UOwotU0FWRVBPSU5UIHMxOwotSU5TRVJUIElOVE8gdGVz dF90YWIgVkFMVUVTICg0LCBtZDUoNDo6dGV4dCksIC00KTsKLUNPTU1JVDsKLX0pOwotCi0jIGxh cmdlIChzdHJlYW1lZCkgdHJhbnNhY3Rpb24gd2l0aCBEREwgYW5kIERNTAotJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLUJFR0lOOwotSU5TRVJUIElOVE8gdGVz dF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSwgLWkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNSwg MTAwMCkgcyhpKTsKLUFMVEVSIFRBQkxFIHRlc3RfdGFiIEFERCBDT0xVTU4gZCBJTlQ7Ci1TQVZF UE9JTlQgczE7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpLCAt aSwgMippIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEwMDEsIDIwMDApIHMoaSk7Ci1DT01NSVQ7Ci19 KTsKLQotIyBhIHNtYWxsIChub24tc3RyZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGggRERMIGFuZCBE TUwKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci1CRUdJTjsK LUlOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoMjAwMSwgbWQ1KDIwMDE6OnRleHQpLCAtMjAw MSwgMioyMDAxKTsKLUFMVEVSIFRBQkxFIHRlc3RfdGFiIEFERCBDT0xVTU4gZSBJTlQ7Ci1TQVZF UE9JTlQgczE7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDIwMDIsIG1kNSgyMDAyOjp0 ZXh0KSwgLTIwMDIsIDIqMjAwMiwgLTMqMjAwMik7Ci1DT01NSVQ7Ci19KTsKK3Rlc3Rfc3RyZWFt aW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDApOwogCi0k bm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0kcmVzdWx0ID0K LSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3Vu dCgqKSwgY291bnQoYyksIGNvdW50KGQpLCBjb3VudChlKSBGUk9NIHRlc3RfdGFiIik7Ci1pcygk cmVzdWx0LCBxcSgyMDAyfDE5OTl8MTAwMnwxKSwKLQknY2hlY2sgZGF0YSB3YXMgY29waWVkIHRv IHN1YnNjcmliZXIgaW4gc3RyZWFtaW5nIG1vZGUgYW5kIGV4dHJhIGNvbHVtbnMgY29udGFpbiBs b2NhbCBkZWZhdWx0cycKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFRl c3QgdXNpbmcgc3RyZWFtaW5nIG1vZGUgJ2FwcGx5JworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMKK215ICRvbGRwaWQgPSAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLAorCSJTRUxFQ1QgcGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVSRSBhcHBs aWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCiApOwog Ci0jIEEgbGFyZ2UgKHN0cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRoIERETCBhbmQgRE1MLiBPbmUg b2YgdGhlIERETCBpcyBwZXJmb3JtZWQKLSMgYWZ0ZXIgRE1MIHRvIGVuc3VyZSB0aGF0IHdlIGlu dmFsaWRhdGUgdGhlIHNjaGVtYSBzZW50IGZvciB0ZXN0X3RhYiBzbyB0aGF0Ci0jIHRoZSBuZXh0 IHRyYW5zYWN0aW9uIGhhcyB0byBzZW5kIHRoZSBzY2hlbWEgYWdhaW4uCi0kbm9kZV9wdWJsaXNo ZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxewotQkVHSU47Ci1JTlNFUlQgSU5UTyB0ZXN0 X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpLCAtaSwgMippLCAtMyppIEZST00gZ2VuZXJhdGVf c2VyaWVzKDIwMDMsNTAwMCkgcyhpKTsKLUFMVEVSIFRBQkxFIHRlc3RfdGFiIEFERCBDT0xVTU4g ZiBJTlQ7Ci1DT01NSVQ7Ci19KTsKLQotIyBBIHNtYWxsIHRyYW5zYWN0aW9uIHRoYXQgd29uJ3Qg Z2V0IHN0cmVhbWVkLiBUaGlzIGlzIGp1c3QgdG8gZW5zdXJlIHRoYXQgd2UKLSMgc2VuZCB0aGUg c2NoZW1hIGFnYWluIHRvIHJlZmxlY3QgdGhlIGxhc3QgY29sdW1uIGFkZGVkIGluIHRoZSBwcmV2 aW91cyB0ZXN0LgotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsK LUJFR0lOOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSwgLWks IDIqaSwgLTMqaSwgNCppIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUwMDEsNTAwNSkgcyhpKTsKLUNP TU1JVDsKLX0pOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFM VEVSIFNVQlNDUklQVElPTiB0YXBfc3ViIFNFVChzdHJlYW1pbmcgPSBhcHBseSkiKTsKIAotJG5v ZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKyRub2RlX3B1Ymxpc2hl ci0+cG9sbF9xdWVyeV91bnRpbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGlkICE9ICRvbGRwaWQg RlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uIFdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5h bWUnIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIKKyAgKQorICBvciBkaWUKKyAgIlRpbWVkIG91 dCB3aGlsZSB3YWl0aW5nIGZvciBhcHBseSB0byByZXN0YXJ0IGFmdGVyIGNoYW5naW5nIFNVQlND UklQVElPTiI7CiAKLSRyZXN1bHQgPQotICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCksIGNvdW50KGUp LCBjb3VudChmKSBGUk9NIHRlc3RfdGFiIik7Ci1pcygkcmVzdWx0LCBxcSg1MDA1fDUwMDJ8NDAw NXwzMDA0fDUpLAotCSdjaGVjayBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlciBmb3IgYm90 aCBzdHJlYW1pbmcgYW5kIG5vbi1zdHJlYW1pbmcgdHJhbnNhY3Rpb25zJwotKTsKK3Rlc3Rfc3Ry ZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDEpOwog CiAkbm9kZV9zdWJzY3JpYmVyLT5zdG9wOwogJG5vZGVfcHVibGlzaGVyLT5zdG9wOwpkaWZmIC0t Z2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE4X3N0cmVhbV9zdWJ4YWN0X2Fib3J0LnBs IGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE4X3N0cmVhbV9zdWJ4YWN0X2Fib3J0LnBsCmlu ZGV4IDcxNTU0NDJlNzYuLjcxZjhjMWRkMDUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlw dGlvbi90LzAxOF9zdHJlYW1fc3VieGFjdF9hYm9ydC5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3Jp cHRpb24vdC8wMThfc3RyZWFtX3N1YnhhY3RfYWJvcnQucGwKQEAgLTgsNiArOCwxMTMgQEAgdXNl IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7 CiB1c2UgVGVzdDo6TW9yZTsKIAorIyBFbmNhcHN1bGF0ZSBhbGwgdGhlIGNvbW1vbiB0ZXN0IHN0 ZXBzIHdoaWNoIGFyZSByZWxhdGVkIHRvICJzdHJlYW1pbmciIG9wdGlvbgorIyBzbyB0aGUgc2Ft ZSBjb2RlIGNhbiBiZSBydW4gYm90aCBmb3IgdGhlIHN0cmVhbWluZz1vbiBhbmQgc3RyZWFtaW5n PWFwcGx5CisjIGNhc2VzLgorc3ViIHRlc3Rfc3RyZWFtaW5nCit7CisJbXkgKCRub2RlX3B1Ymxp c2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsICRpc19hcHBseSkgPSBAXzsKKworCSMg Q2hlY2sgdGhhdCBhIGJhY2tncm91bmQgd29ya2VyIHN0YXJ0cyBpZiAic3RyZWFtaW5nIiBvcHRp b24gaXMKKwkjIHNwZWNpZmllZCBhcyAiYXBwbHkiLiAgV2UgaGF2ZSB0byBsb29rIGZvciB0aGUg REVCVUcxIGxvZyBtZXNzYWdlcworCSMgYWJvdXQgdGhhdCwgc28gdGVtcG9yYXJpbHkgYnVtcCB1 cCB0aGUgbG9nIHZlcmJvc2l0eS4KKwlpZiAoJGlzX2FwcGx5KQorCXsKKwkJJG5vZGVfc3Vic2Ny aWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJCQkibG9nX21pbl9tZXNzYWdl cyA9IGRlYnVnMSIpOworCQkkbm9kZV9zdWJzY3JpYmVyLT5yZWxvYWQ7CisJfQorCisJIyBsYXJn ZSAoc3RyZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGggRERMLCBETUwgYW5kIFJPTExCQUNLcworCSRu b2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCUJFR0lOOworCUlO U0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9z ZXJpZXMoMyw1MDApIHMoaSk7CisJU0FWRVBPSU5UIHMxOworCUlOU0VSVCBJTlRPIHRlc3RfdGFi IFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNTAxLDEwMDApIHMo aSk7CisJU0FWRVBPSU5UIHMyOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUo aTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMTAwMSwxNTAwKSBzKGkpOworCVNBVkVQT0lO VCBzMzsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00g Z2VuZXJhdGVfc2VyaWVzKDE1MDEsMjAwMCkgcyhpKTsKKwlST0xMQkFDSyBUTyBzMjsKKwlJTlNF UlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2Vy aWVzKDIwMDEsMjUwMCkgcyhpKTsKKwlST0xMQkFDSyBUTyBzMTsKKwlJTlNFUlQgSU5UTyB0ZXN0 X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDI1MDEsMzAw MCkgcyhpKTsKKwlTQVZFUE9JTlQgczQ7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGks IG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzMDAxLDM1MDApIHMoaSk7CisJU0FW RVBPSU5UIHM1OworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkg RlJPTSBnZW5lcmF0ZV9zZXJpZXMoMzUwMSw0MDAwKSBzKGkpOworCUNPTU1JVDsKKwl9KTsKKwor CWlmICgkaXNfYXBwbHkpCisJeworCQkkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2cocXIv XFtBcHBseSBCR1cgI1xkK1xdIHN0YXJ0ZWQvLCAwKTsKKwkJJG5vZGVfc3Vic2NyaWJlci0+YXBw ZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJCQkibG9nX21pbl9tZXNzYWdlcyA9IHdhcm5p bmciKTsKKwkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOworCX0KKworCSRub2RlX3B1Ymxpc2hl ci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwlteSAkcmVzdWx0ID0KKwkgICRub2Rl X3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopLCBj b3VudChjKSBGUk9NIHRlc3RfdGFiIik7CisJaXMoJHJlc3VsdCwgcXEoMjAwMHwwKSwKKwkJJ2No ZWNrIHJvbGxiYWNrIHRvIHNhdmVwb2ludCB3YXMgcmVmbGVjdGVkIG9uIHN1YnNjcmliZXIgYW5k IGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycKKwkpOworCisJIyBsYXJnZSAo c3RyZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGggc3Vic2NyaWJlciByZWNlaXZpbmcgb3V0IG9mIG9y ZGVyCisJIyBzdWJ0cmFuc2FjdGlvbiBST0xMQkFDS3MKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwlCRUdJTjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBT RUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDQwMDEsNDUwMCkgcyhp KTsKKwlTQVZFUE9JTlQgczE7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShp Ojp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1MDAxLDU1MDApIHMoaSk7CisJU0FWRVBPSU5U IHMyOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoNjAwMSw2NTAwKSBzKGkpOworCVNBVkVQT0lOVCBzMzsKKwlJTlNFUlQg SU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVz KDcwMDEsNzUwMCkgcyhpKTsKKwlSRUxFQVNFIHMyOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNF TEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoODAwMSw4NTAwKSBzKGkp OworCVJPTExCQUNLIFRPIHMxOworCUNPTU1JVDsKKwl9KTsKKworCSRub2RlX3B1Ymxpc2hlci0+ d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwkkcmVzdWx0ID0KKwkgICRub2RlX3N1YnNj cmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChj KSBGUk9NIHRlc3RfdGFiIik7CisJaXMoJHJlc3VsdCwgcXEoMjUwMHwwKSwKKwkJJ2NoZWNrIHJv bGxiYWNrIHRvIHNhdmVwb2ludCB3YXMgcmVmbGVjdGVkIG9uIHN1YnNjcmliZXInKTsKKworCSMg bGFyZ2UgKHN0cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRoIHN1YnNjcmliZXIgcmVjZWl2aW5nIHJv bGxiYWNrCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJ QkVHSU47CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9N IGdlbmVyYXRlX3Nlcmllcyg4NTAxLDkwMDApIHMoaSk7CisJU0FWRVBPSU5UIHMxOworCUlOU0VS VCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoOTAwMSw5NTAwKSBzKGkpOworCVNBVkVQT0lOVCBzMjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3Rh YiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDk1MDEsMTAwMDAp IHMoaSk7CisJUk9MTEJBQ0s7CisJfSk7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2Nh dGNodXAoJGFwcG5hbWUpOworCisJJHJlc3VsdCA9CisJICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYykgRlJPTSB0ZXN0 X3RhYiIpOworCWlzKCRyZXN1bHQsIHFxKDI1MDB8MCksICdjaGVjayByb2xsYmFjayB3YXMgcmVm bGVjdGVkIG9uIHN1YnNjcmliZXInKTsKKworCSMgQ2xlYW51cCB0aGUgdGVzdCBkYXRhCisJJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIkRFTEVURSBGUk9NIHRlc3Rf dGFiIFdIRVJFIChhID4gMikiKTsKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAo JGFwcG5hbWUpOworfQorCiAjIENyZWF0ZSBwdWJsaXNoZXIgbm9kZQogbXkgJG5vZGVfcHVibGlz aGVyID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdwdWJsaXNoZXInKTsKICRub2Rl X3B1Ymxpc2hlci0+aW5pdChhbGxvd3Nfc3RyZWFtaW5nID0+ICdsb2dpY2FsJyk7CkBAIC0zNiw2 ICsxNDMsMTAgQEAgJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiQ1JF QVRFIFBVQkxJQ0FUSU9OIHRhcF9wdWIgRk9SIFRBQkxFIHRlc3RfdGFiIik7CiAKIG15ICRhcHBu YW1lID0gJ3RhcF9zdWInOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBU ZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdvbicKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjCiAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiQ1JFQVRF IFNVQlNDUklQVElPTiB0YXBfc3ViIENPTk5FQ1RJT04gJyRwdWJsaXNoZXJfY29ubnN0ciBhcHBs aWNhdGlvbl9uYW1lPSRhcHBuYW1lJyBQVUJMSUNBVElPTiB0YXBfcHViIFdJVEggKHN0cmVhbWlu ZyA9IG9uKSIKICk7CkBAIC01Myw4MSArMTY0LDI1IEBAIG15ICRyZXN1bHQgPQogCSJTRUxFQ1Qg Y291bnQoKiksIGNvdW50KGMpIEZST00gdGVzdF90YWIiKTsKIGlzKCRyZXN1bHQsIHFxKDJ8MCks ICdjaGVjayBpbml0aWFsIGRhdGEgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyJyk7CiAKLSMgbGFy Z2UgKHN0cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRoIERETCwgRE1MIGFuZCBST0xMQkFDS3MKLSRu b2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci1CRUdJTjsKLUlOU0VS VCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoMyw1MDApIHMoaSk7Ci1TQVZFUE9JTlQgczE7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxF Q1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUwMSwxMDAwKSBzKGkpOwot U0FWRVBPSU5UIHMyOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0 KSBGUk9NIGdlbmVyYXRlX3NlcmllcygxMDAxLDE1MDApIHMoaSk7Ci1TQVZFUE9JTlQgczM7Ci1J TlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVf c2VyaWVzKDE1MDEsMjAwMCkgcyhpKTsKLVJPTExCQUNLIFRPIHMyOwotSU5TRVJUIElOVE8gdGVz dF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygyMDAxLDI1 MDApIHMoaSk7Ci1ST0xMQkFDSyBUTyBzMTsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBp LCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMjUwMSwzMDAwKSBzKGkpOwotU0FW RVBPSU5UIHM0OwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBG Uk9NIGdlbmVyYXRlX3NlcmllcygzMDAxLDM1MDApIHMoaSk7Ci1TQVZFUE9JTlQgczU7Ci1JTlNF UlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2Vy aWVzKDM1MDEsNDAwMCkgcyhpKTsKLUNPTU1JVDsKLX0pOwotCi0kbm9kZV9wdWJsaXNoZXItPndh aXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwordGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVy LCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgMCk7CiAKLSRyZXN1bHQgPQotICAkbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopLCBjb3Vu dChjKSBGUk9NIHRlc3RfdGFiIik7Ci1pcygkcmVzdWx0LCBxcSgyMDAwfDApLAotCSdjaGVjayBy b2xsYmFjayB0byBzYXZlcG9pbnQgd2FzIHJlZmxlY3RlZCBvbiBzdWJzY3JpYmVyIGFuZCBleHRy YSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIworIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdhcHBseScKKyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitteSAkb2xkcGlkID0gJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCBGUk9NIHBnX3N0YXRfcmVw bGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0g J3N0cmVhbWluZyc7IgogKTsKIAotIyBsYXJnZSAoc3RyZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGgg c3Vic2NyaWJlciByZWNlaXZpbmcgb3V0IG9mIG9yZGVyCi0jIHN1YnRyYW5zYWN0aW9uIFJPTExC QUNLcwotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLUJFR0lO OwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVy YXRlX3Nlcmllcyg0MDAxLDQ1MDApIHMoaSk7Ci1TQVZFUE9JTlQgczE7Ci1JTlNFUlQgSU5UTyB0 ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUwMDEs NTUwMCkgcyhpKTsKLVNBVkVQT0lOVCBzMjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBp LCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNjAwMSw2NTAwKSBzKGkpOwotU0FW RVBPSU5UIHMzOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBG Uk9NIGdlbmVyYXRlX3Nlcmllcyg3MDAxLDc1MDApIHMoaSk7Ci1SRUxFQVNFIHMyOwotSU5TRVJU IElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmll cyg4MDAxLDg1MDApIHMoaSk7Ci1ST0xMQkFDSyBUTyBzMTsKLUNPTU1JVDsKLX0pOwotCi0kbm9k ZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViIFNF VChzdHJlYW1pbmcgPSBhcHBseSkiKTsKIAotJHJlc3VsdCA9Ci0gICRub2RlX3N1YnNjcmliZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpIEZST00g dGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDI1MDB8MCksCi0JJ2NoZWNrIHJvbGxiYWNrIHRv IHNhdmVwb2ludCB3YXMgcmVmbGVjdGVkIG9uIHN1YnNjcmliZXInKTsKLQotIyBsYXJnZSAoc3Ry ZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGggc3Vic2NyaWJlciByZWNlaXZpbmcgcm9sbGJhY2sKLSRu b2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci1CRUdJTjsKLUlOU0VS VCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoODUwMSw5MDAwKSBzKGkpOwotU0FWRVBPSU5UIHMxOwotSU5TRVJUIElOVE8gdGVzdF90YWIg U0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg5MDAxLDk1MDApIHMo aSk7Ci1TQVZFUE9JTlQgczI7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6 OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDk1MDEsMTAwMDApIHMoaSk7Ci1ST0xMQkFDSzsK LX0pOworJG5vZGVfcHVibGlzaGVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsCisJIlNF TEVDVCBwaWQgIT0gJG9sZHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGlj YXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgorICApCisg IG9yIGRpZQorICAiVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIGFwcGx5IHRvIHJlc3RhcnQg YWZ0ZXIgY2hhbmdpbmcgU1VCU0NSSVBUSU9OIjsKIAotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zv cl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotJHJlc3VsdCA9Ci0gICRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpIEZST00gdGVz dF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDI1MDB8MCksICdjaGVjayByb2xsYmFjayB3YXMgcmVm bGVjdGVkIG9uIHN1YnNjcmliZXInKTsKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwg JG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDEpOwogCiAkbm9kZV9zdWJzY3JpYmVyLT5zdG9w OwogJG5vZGVfcHVibGlzaGVyLT5zdG9wOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0 aW9uL3QvMDE5X3N0cmVhbV9zdWJ4YWN0X2RkbF9hYm9ydC5wbCBiL3NyYy90ZXN0L3N1YnNjcmlw dGlvbi90LzAxOV9zdHJlYW1fc3VieGFjdF9kZGxfYWJvcnQucGwKaW5kZXggZGJkMGZjYTRkMS4u ZDBjZDg2OTQzMCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE5X3N0cmVh bV9zdWJ4YWN0X2RkbF9hYm9ydC5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTlf c3RyZWFtX3N1YnhhY3RfZGRsX2Fib3J0LnBsCkBAIC05LDYgKzksNjkgQEAgdXNlIFBvc3RncmVT UUw6OlRlc3Q6OkNsdXN0ZXI7CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7CiB1c2UgVGVz dDo6TW9yZTsKIAorIyBFbmNhcHN1bGF0ZSBhbGwgdGhlIGNvbW1vbiB0ZXN0IHN0ZXBzIHdoaWNo IGFyZSByZWxhdGVkIHRvICJzdHJlYW1pbmciIG9wdGlvbgorIyBzbyB0aGUgc2FtZSBjb2RlIGNh biBiZSBydW4gYm90aCBmb3IgdGhlIHN0cmVhbWluZz1vbiBhbmQgc3RyZWFtaW5nPWFwcGx5Cisj IGNhc2VzLgorc3ViIHRlc3Rfc3RyZWFtaW5nCit7CisJbXkgKCRub2RlX3B1Ymxpc2hlciwgJG5v ZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsICRpc19hcHBseSkgPSBAXzsKKworCSMgQ2hlY2sgdGhh dCBhIGJhY2tncm91bmQgd29ya2VyIHN0YXJ0cyBpZiAic3RyZWFtaW5nIiBvcHRpb24gaXMKKwkj IHNwZWNpZmllZCBhcyAiYXBwbHkiLiAgV2UgaGF2ZSB0byBsb29rIGZvciB0aGUgREVCVUcxIGxv ZyBtZXNzYWdlcworCSMgYWJvdXQgdGhhdCwgc28gdGVtcG9yYXJpbHkgYnVtcCB1cCB0aGUgbG9n IHZlcmJvc2l0eS4KKwlpZiAoJGlzX2FwcGx5KQorCXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+YXBw ZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJCQkibG9nX21pbl9tZXNzYWdlcyA9IGRlYnVn MSIpOworCQkkbm9kZV9zdWJzY3JpYmVyLT5yZWxvYWQ7CisJfQorCisJIyBsYXJnZSAoc3RyZWFt ZWQpIHRyYW5zYWN0aW9uIHdpdGggRERMLCBETUwgYW5kIFJPTExCQUNLcworCSRub2RlX3B1Ymxp c2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCUJFR0lOOworCUlOU0VSVCBJTlRP IHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMyw1 MDApIHMoaSk7CisJQUxURVIgVEFCTEUgdGVzdF90YWIgQUREIENPTFVNTiBjIElOVDsKKwlTQVZF UE9JTlQgczE7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSwg LWkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNTAxLDEwMDApIHMoaSk7CisJQUxURVIgVEFCTEUgdGVz dF90YWIgQUREIENPTFVNTiBkIElOVDsKKwlTQVZFUE9JTlQgczI7CisJSU5TRVJUIElOVE8gdGVz dF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSwgLWksIDIqaSBGUk9NIGdlbmVyYXRlX3Nlcmll cygxMDAxLDE1MDApIHMoaSk7CisJQUxURVIgVEFCTEUgdGVzdF90YWIgQUREIENPTFVNTiBlIElO VDsKKwlTQVZFUE9JTlQgczM7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShp Ojp0ZXh0KSwgLWksIDIqaSwgLTMqaSBGUk9NIGdlbmVyYXRlX3NlcmllcygxNTAxLDIwMDApIHMo aSk7CisJQUxURVIgVEFCTEUgdGVzdF90YWIgRFJPUCBDT0xVTU4gYzsKKwlST0xMQkFDSyBUTyBz MTsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpLCBpIEZST00g Z2VuZXJhdGVfc2VyaWVzKDUwMSwxMDAwKSBzKGkpOworCUNPTU1JVDsKKwl9KTsKKworCWlmICgk aXNfYXBwbHkpCisJeworCQkkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2cocXIvXFtBcHBs eSBCR1cgI1xkK1xdIHN0YXJ0ZWQvLCAwKTsKKwkJJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2Nv bmYoJ3Bvc3RncmVzcWwuY29uZicsCisJCQkibG9nX21pbl9tZXNzYWdlcyA9IHdhcm5pbmciKTsK KwkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOworCX0KKworCSRub2RlX3B1Ymxpc2hlci0+d2Fp dF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwlteSAkcmVzdWx0ID0KKwkgICRub2RlX3N1YnNj cmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChj KSBGUk9NIHRlc3RfdGFiIik7CisJaXMoJHJlc3VsdCwgcXEoMTAwMHw1MDApLAorCQknY2hlY2sg cm9sbGJhY2sgdG8gc2F2ZXBvaW50IHdhcyByZWZsZWN0ZWQgb24gc3Vic2NyaWJlciBhbmQgZXh0 cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJworCSk7CisKKwkjIENsZWFudXAgdGhl IHRlc3QgZGF0YQorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBx eworCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIChhID4gMik7CisJQUxURVIgVEFCTEUgdGVz dF90YWIgRFJPUCBDT0xVTU4gYzsKKwl9KTsKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2Nh dGNodXAoJGFwcG5hbWUpOworfQorCiAjIENyZWF0ZSBwdWJsaXNoZXIgbm9kZQogbXkgJG5vZGVf cHVibGlzaGVyID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdwdWJsaXNoZXInKTsK ICRub2RlX3B1Ymxpc2hlci0+aW5pdChhbGxvd3Nfc3RyZWFtaW5nID0+ICdsb2dpY2FsJyk7CkBA IC0zNyw2ICsxMDAsMTAgQEAgJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK IAkiQ1JFQVRFIFBVQkxJQ0FUSU9OIHRhcF9wdWIgRk9SIFRBQkxFIHRlc3RfdGFiIik7CiAKIG15 ICRhcHBuYW1lID0gJ3RhcF9zdWInOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IworIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdvbicKKyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjCiAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAki Q1JFQVRFIFNVQlNDUklQVElPTiB0YXBfc3ViIENPTk5FQ1RJT04gJyRwdWJsaXNoZXJfY29ubnN0 ciBhcHBsaWNhdGlvbl9uYW1lPSRhcHBuYW1lJyBQVUJMSUNBVElPTiB0YXBfcHViIFdJVEggKHN0 cmVhbWluZyA9IG9uKSIKICk7CkBAIC01NCwzNSArMTIxLDI2IEBAIG15ICRyZXN1bHQgPQogCSJT RUxFQ1QgY291bnQoKiksIGNvdW50KGMpIEZST00gdGVzdF90YWIiKTsKIGlzKCRyZXN1bHQsIHFx KDJ8MCksICdjaGVjayBpbml0aWFsIGRhdGEgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyJyk7CiAK LSMgbGFyZ2UgKHN0cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRoIERETCwgRE1MIGFuZCBST0xMQkFD S3MKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci1CRUdJTjsK LUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0 ZV9zZXJpZXMoMyw1MDApIHMoaSk7Ci1BTFRFUiBUQUJMRSB0ZXN0X3RhYiBBREQgQ09MVU1OIGMg SU5UOwotU0FWRVBPSU5UIHMxOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShp Ojp0ZXh0KSwgLWkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNTAxLDEwMDApIHMoaSk7Ci1BTFRFUiBU QUJMRSB0ZXN0X3RhYiBBREQgQ09MVU1OIGQgSU5UOwotU0FWRVBPSU5UIHMyOwotSU5TRVJUIElO VE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSwgLWksIDIqaSBGUk9NIGdlbmVyYXRl X3NlcmllcygxMDAxLDE1MDApIHMoaSk7Ci1BTFRFUiBUQUJMRSB0ZXN0X3RhYiBBREQgQ09MVU1O IGUgSU5UOwotU0FWRVBPSU5UIHMzOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1k NShpOjp0ZXh0KSwgLWksIDIqaSwgLTMqaSBGUk9NIGdlbmVyYXRlX3NlcmllcygxNTAxLDIwMDAp IHMoaSk7Ci1BTFRFUiBUQUJMRSB0ZXN0X3RhYiBEUk9QIENPTFVNTiBjOwotUk9MTEJBQ0sgVE8g czE7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpLCBpIEZST00g Z2VuZXJhdGVfc2VyaWVzKDUwMSwxMDAwKSBzKGkpOwotQ09NTUlUOwotfSk7Cit0ZXN0X3N0cmVh bWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAwKTsKIAot JG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotJHJlc3VsdCA9 Ci0gICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291 bnQoKiksIGNvdW50KGMpIEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDEwMDB8NTAw KSwKLQknY2hlY2sgcm9sbGJhY2sgdG8gc2F2ZXBvaW50IHdhcyByZWZsZWN0ZWQgb24gc3Vic2Ny aWJlciBhbmQgZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJworIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVGVzdCB1c2luZyBzdHJlYW1pbmcgbW9kZSAn YXBwbHknCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworbXkgJG9sZHBpZCA9 ICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwaWQgRlJP TSBwZ19zdGF0X3JlcGxpY2F0aW9uIFdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWUn IEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIKICk7CiAKKyRub2RlX3N1YnNjcmliZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBTVUJTQ1JJUFRJT04gdGFwX3N1YiBTRVQoc3RyZWFt aW5nID0gYXBwbHkpIik7CisKKyRub2RlX3B1Ymxpc2hlci0+cG9sbF9xdWVyeV91bnRpbCgncG9z dGdyZXMnLAorCSJTRUxFQ1QgcGlkICE9ICRvbGRwaWQgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9u IFdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWUnIEFORCBzdGF0ZSA9ICdzdHJlYW1p bmcnOyIKKyAgKQorICBvciBkaWUKKyAgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBhcHBs eSB0byByZXN0YXJ0IGFmdGVyIGNoYW5naW5nIFNVQlNDUklQVElPTiI7CisKK3Rlc3Rfc3RyZWFt aW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDEpOworCiAk bm9kZV9zdWJzY3JpYmVyLT5zdG9wOwogJG5vZGVfcHVibGlzaGVyLT5zdG9wOwogCmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjJfdHdvcGhhc2VfY2FzY2FkZS5wbCBiL3Ny Yy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyMl90d29waGFzZV9jYXNjYWRlLnBsCmluZGV4IDdhNzk3 ZjM3YmEuLmI1MmFmNzRlMzUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAy Ml90d29waGFzZV9jYXNjYWRlLnBsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyMl90 d29waGFzZV9jYXNjYWRlLnBsCkBAIC0xMSw2ICsxMSwyMDggQEAgdXNlIFBvc3RncmVTUUw6OlRl c3Q6OkNsdXN0ZXI7CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7CiB1c2UgVGVzdDo6TW9y ZTsKIAorIyBFbmNhcHN1bGF0ZSBhbGwgdGhlIGNvbW1vbiB0ZXN0IHN0ZXBzIHdoaWNoIGFyZSBy ZWxhdGVkIHRvICJzdHJlYW1pbmciIG9wdGlvbgorIyBzbyB0aGUgc2FtZSBjb2RlIGNhbiBiZSBy dW4gYm90aCBmb3IgdGhlIHN0cmVhbWluZz1vbiBhbmQgc3RyZWFtaW5nPWFwcGx5CisjIGNhc2Vz Lgorc3ViIHRlc3Rfc3RyZWFtaW5nCit7CisJbXkgKCRub2RlX0EsICRub2RlX0IsICRub2RlX0Ms ICRhcHBuYW1lX0IsICRhcHBuYW1lX0MsICRzdHJlYW1pbmdfbW9kZSkgPQorCSAgQF87CisKKwlt eSAkb2xkcGlkX0IgPSAkbm9kZV9BLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsICIKKwkJU0VM RUNUIHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24KKwkJV0hFUkUgYXBwbGljYXRpb25fbmFt ZSA9ICckYXBwbmFtZV9CJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiKTsKKwlteSAkb2xkcGlk X0MgPSAkbm9kZV9CLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsICIKKwkJU0VMRUNUIHBpZCBG Uk9NIHBnX3N0YXRfcmVwbGljYXRpb24KKwkJV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBw bmFtZV9DJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiKTsKKworCSMgU2V0dXAgbG9naWNhbCBy ZXBsaWNhdGlvbiBzdHJlYW1pbmcgbW9kZQorCisJJG5vZGVfQi0+c2FmZV9wc3FsKAorCQkncG9z dGdyZXMnLCAiCisJCUFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViX0IKKwkJU0VUIChzdHJlYW1p bmcgPSAkc3RyZWFtaW5nX21vZGUpOyIpOworCSRub2RlX0MtPnNhZmVfcHNxbCgKKwkJJ3Bvc3Rn cmVzJywgIgorCQlBTFRFUiBTVUJTQ1JJUFRJT04gdGFwX3N1Yl9DCisJCVNFVCAoc3RyZWFtaW5n ID0gJHN0cmVhbWluZ19tb2RlKSIpOworCisJIyBXYWl0IGZvciBzdWJzY3JpYmVycyB0byBmaW5p c2ggaW5pdGlhbGl6YXRpb24KKworCSRub2RlX0EtPnBvbGxfcXVlcnlfdW50aWwoCisJCSdwb3N0 Z3JlcycsICIKKwkJU0VMRUNUIHBpZCAhPSAkb2xkcGlkX0IgRlJPTSBwZ19zdGF0X3JlcGxpY2F0 aW9uCisJCVdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWVfQicgQU5EIHN0YXRlID0g J3N0cmVhbWluZyc7IgorCSkgb3IgZGllICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3IgYXBw bHkgdG8gcmVzdGFydCI7CisJJG5vZGVfQi0+cG9sbF9xdWVyeV91bnRpbCgKKwkJJ3Bvc3RncmVz JywgIgorCQlTRUxFQ1QgcGlkICE9ICRvbGRwaWRfQyBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24K KwkJV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZV9DJyBBTkQgc3RhdGUgPSAnc3Ry ZWFtaW5nJzsiCisJKSBvciBkaWUgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBhcHBseSB0 byByZXN0YXJ0IjsKKworCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKwkjIFRlc3Qg MlBDIFBSRVBBUkUgLyBDT01NSVQgUFJFUEFSRUQuCisJIyAxLiBEYXRhIGlzIHN0cmVhbWVkIGFz IGEgMlBDIHRyYW5zYWN0aW9uLgorCSMgMi4gVGhlbiBkbyBjb21taXQgcHJlcGFyZWQuCisJIwor CSMgRXhwZWN0IGFsbCBkYXRhIGlzIHJlcGxpY2F0ZWQgb24gc3Vic2NyaWJlcihzKSBhZnRlciB0 aGUgY29tbWl0LgorCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworCSMgQ2hlY2sg dGhhdCBhIGJhY2tncm91bmQgd29ya2VyIHN0YXJ0cyBpZiAic3RyZWFtaW5nIiBvcHRpb24gaXMK KwkjIHNwZWNpZmllZCBhcyAiYXBwbHkiLiAgV2UgaGF2ZSB0byBsb29rIGZvciB0aGUgREVCVUcx IGxvZyBtZXNzYWdlcworCSMgYWJvdXQgdGhhdCwgc28gdGVtcG9yYXJpbHkgYnVtcCB1cCB0aGUg bG9nIHZlcmJvc2l0eS4KKwlpZiAoJHN0cmVhbWluZ19tb2RlIGVxICdhcHBseScpCisJeworCQkk bm9kZV9CLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywgImxvZ19taW5fbWVzc2FnZXMg PSBkZWJ1ZzEiKTsKKwkJJG5vZGVfQi0+cmVsb2FkOworCisJCSRub2RlX0MtPmFwcGVuZF9jb25m KCdwb3N0Z3Jlc3FsLmNvbmYnLCAibG9nX21pbl9tZXNzYWdlcyA9IGRlYnVnMSIpOworCQkkbm9k ZV9DLT5yZWxvYWQ7CisJfQorCisJIyBJbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRlIGVub3VnaCBy b3dzIHRvIGV4Y2VlZCB0aGUgNjRrQiBsaW1pdC4KKwkjIFRoZW4gMlBDIFBSRVBBUkUKKwkkbm9k ZV9BLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJCUJFR0lOOworCQlJTlNFUlQgSU5U TyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMs IDUwMDApIHMoaSk7CisJCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2Qo YSwyKSA9IDA7CisJCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwkJ UFJFUEFSRSBUUkFOU0FDVElPTiAndGVzdF9wcmVwYXJlZF90YWInO30pOworCisJaWYgKCRzdHJl YW1pbmdfbW9kZSBlcSAnYXBwbHknKQorCXsKKwkJJG5vZGVfQi0+d2FpdF9mb3JfbG9nKHFyL1xb QXBwbHkgQkdXICNcZCtcXSBzdGFydGVkLywgMCk7CisJCSRub2RlX0ItPmFwcGVuZF9jb25mKCdw b3N0Z3Jlc3FsLmNvbmYnLCAibG9nX21pbl9tZXNzYWdlcyA9IHdhcm5pbmciKTsKKwkJJG5vZGVf Qi0+cmVsb2FkOworCisJCSRub2RlX0MtPndhaXRfZm9yX2xvZyhxci9cW0FwcGx5IEJHVyAjXGQr XF0gc3RhcnRlZC8sIDApOworCQkkbm9kZV9DLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25m JywgImxvZ19taW5fbWVzc2FnZXMgPSB3YXJuaW5nIik7CisJCSRub2RlX0MtPnJlbG9hZDsKKwl9 CisKKwkkbm9kZV9BLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0IpOworCSRub2RlX0ItPndh aXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQyk7CisKKwkjIGNoZWNrIHRoZSB0cmFuc2FjdGlvbiBz dGF0ZSBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyKHMpCisJbXkgJHJlc3VsdCA9CisJICAkbm9k ZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3By ZXBhcmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJl cGFyZWQgb24gc3Vic2NyaWJlciBCJyk7CisJJHJlc3VsdCA9CisJICAkbm9kZV9DLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3Rz OyIpOworCWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vi c2NyaWJlciBDJyk7CisKKwkjIDJQQyBDT01NSVQKKwkkbm9kZV9BLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywgIkNPTU1JVCBQUkVQQVJFRCAndGVzdF9wcmVwYXJlZF90YWInOyIpOworCisJJG5vZGVf QS0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9CKTsKKwkkbm9kZV9CLT53YWl0X2Zvcl9jYXRj aHVwKCRhcHBuYW1lX0MpOworCisJIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIHdhcyBjb21taXR0 ZWQgb24gc3Vic2NyaWJlcihzKQorCSRyZXN1bHQgPSAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00g dGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgzMzM0fDMzMzR8MzMzNCksCisJCSdSb3dzIGlu c2VydGVkIGJ5IDJQQyBoYXZlIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyIEIsIGFuZCBleHRyYSBj b2x1bW5zIGhhdmUgbG9jYWwgZGVmYXVsdHMnCisJKTsKKwkkcmVzdWx0ID0gJG5vZGVfQy0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChk ID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7CisJaXMoJHJlc3VsdCwgcXEoMzMzNHwzMzM0fDMzMzQp LAorCQknUm93cyBpbnNlcnRlZCBieSAyUEMgaGF2ZSBjb21taXR0ZWQgb24gc3Vic2NyaWJlciBD LCBhbmQgZXh0cmEgY29sdW1ucyBoYXZlIGxvY2FsIGRlZmF1bHRzJworCSk7CisKKwkjIGNoZWNr IHRoZSB0cmFuc2FjdGlvbiBzdGF0ZSBpcyBlbmRlZCBvbiBzdWJzY3JpYmVyKHMpCisJJHJlc3Vs dCA9CisJICAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgq KSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNh Y3Rpb24gaXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIgQicpOworCSRyZXN1bHQgPQorCSAgJG5v ZGVfQy0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19w cmVwYXJlZF94YWN0czsiKTsKKwlpcygkcmVzdWx0LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGNv bW1pdHRlZCBvbiBzdWJzY3JpYmVyIEMnKTsKKworCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMKKwkjIFRlc3QgMlBDIFBSRVBBUkUgd2l0aCBhIG5lc3RlZCBST0xMQkFDSyBUTyBTQVZF UE9JTlQuCisJIyAwLiBDbGVhbnVwIGZyb20gcHJldmlvdXMgdGVzdCBsZWF2aW5nIG9ubHkgMiBy b3dzLgorCSMgMS4gSW5zZXJ0IG9uZSBtb3JlIHJvdy4KKwkjIDIuIFJlY29yZCBhIFNBVkVQT0lO VC4KKwkjIDMuIERhdGEgaXMgc3RyZWFtZWQgdXNpbmcgMlBDLgorCSMgNC4gRG8gcm9sbGJhY2sg dG8gU0FWRVBPSU5UIHByaW9yIHRvIHRoZSBzdHJlYW1lZCBpbnNlcnRzLgorCSMgNS4gVGhlbiBD T01NSVQgUFJFUEFSRUQuCisJIworCSMgRXhwZWN0IGRhdGEgYWZ0ZXIgdGhlIFNBVkVQT0lOVCBp cyBhYm9ydGVkIGxlYXZpbmcgb25seSAzIHJvd3MgKD0gMiBvcmlnaW5hbCArIDEgZnJvbSBzdGVw IDEpLgorCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworCSMgRmlyc3QsIGRlbGV0 ZSB0aGUgZGF0YSBleGNlcHQgZm9yIDIgcm93cyAoZGVsZXRlIHdpbGwgYmUgcmVwbGljYXRlZCkK Kwkkbm9kZV9BLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdI RVJFIGEgPiAyOyIpOworCisJIyAyUEMgUFJFUEFSRSB3aXRoIGEgbmVzdGVkIFJPTExCQUNLIFRP IFNBVkVQT0lOVAorCSRub2RlX0EtPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgIgorCQlCRUdJ TjsKKwkJSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICg5OTk5LCAnZm9vYmFyJyk7CisJCVNB VkVQT0lOVCBzcF9pbm5lcjsKKwkJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShp Ojp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOworCQlVUERBVEUgdGVz dF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOworCQlERUxFVEUgRlJPTSB0 ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJCVJPTExCQUNLIFRPIFNBVkVQT0lOVCBzcF9p bm5lcjsKKwkJUFJFUEFSRSBUUkFOU0FDVElPTiAnb3V0ZXInOworCQkiKTsKKworCSRub2RlX0Et PndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQik7CisJJG5vZGVfQi0+d2FpdF9mb3JfY2F0Y2h1 cCgkYXBwbmFtZV9DKTsKKworCSMgY2hlY2sgdGhlIHRyYW5zYWN0aW9uIHN0YXRlIHByZXBhcmVk IG9uIHN1YnNjcmliZXIocykKKwkkcmVzdWx0ID0KKwkgICRub2RlX0ItPnNhZmVfcHNxbCgncG9z dGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJ aXMoJHJlc3VsdCwgcXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVy IEInKTsKKwkkcmVzdWx0ID0KKwkgICRub2RlX0MtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQki U0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwg cXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyIEMnKTsKKworCSMg MlBDIENPTU1JVAorCSRub2RlX0EtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQ09NTUlUIFBSRVBB UkVEICdvdXRlcic7Iik7CisKKwkkbm9kZV9BLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0Ip OworCSRub2RlX0ItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQyk7CisKKwkjIGNoZWNrIHRo ZSB0cmFuc2FjdGlvbiBzdGF0ZSBpcyBlbmRlZCBvbiBzdWJzY3JpYmVyCisJJHJlc3VsdCA9CisJ ICAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9N IHBnX3ByZXBhcmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rpb24g aXMgZW5kZWQgb24gc3Vic2NyaWJlciBCJyk7CisJJHJlc3VsdCA9CisJICAkbm9kZV9DLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hh Y3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rpb24gaXMgZW5kZWQgb24gc3Vi c2NyaWJlciBDJyk7CisKKwkjIGNoZWNrIGluc2VydHMgYXJlIHZpc2libGUgYXQgc3Vic2NyaWJl cihzKS4KKwkjIEFsbCB0aGUgc3RyZWFtZWQgZGF0YSAocHJpb3IgdG8gdGhlIFNBVkVQT0lOVCkg c2hvdWxkIGJlIHJvbGxlZCBiYWNrLgorCSMgKDk5OTksICdmb29iYXInKSBzaG91bGQgYmUgY29t bWl0dGVkLgorCSRyZXN1bHQgPSAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNF TEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiIHdoZXJlIGIgPSAnZm9vYmFyJzsiKTsKKwlpcygk cmVzdWx0LCBxcSgxKSwgJ1Jvd3MgY29tbWl0dGVkIGFyZSBwcmVzZW50IG9uIHN1YnNjcmliZXIg QicpOworCSRyZXN1bHQgPQorCSAgJG5vZGVfQi0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxF Q1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYjsiKTsKKwlpcygkcmVzdWx0LCBxcSgzKSwgJ1Jvd3Mg Y29tbWl0dGVkIGFyZSBwcmVzZW50IG9uIHN1YnNjcmliZXIgQicpOworCSRyZXN1bHQgPSAkbm9k ZV9DLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3Rf dGFiIHdoZXJlIGIgPSAnZm9vYmFyJzsiKTsKKwlpcygkcmVzdWx0LCBxcSgxKSwgJ1Jvd3MgY29t bWl0dGVkIGFyZSBwcmVzZW50IG9uIHN1YnNjcmliZXIgQycpOworCSRyZXN1bHQgPQorCSAgJG5v ZGVfQy0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3Rh YjsiKTsKKwlpcygkcmVzdWx0LCBxcSgzKSwgJ1Jvd3MgY29tbWl0dGVkIGFyZSBwcmVzZW50IG9u IHN1YnNjcmliZXIgQycpOworCisJIyBDbGVhbnVwIHRoZSB0ZXN0IGRhdGEKKwkkbm9kZV9BLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEgPiAyOyIp OworCSRub2RlX0EtPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQik7CisJJG5vZGVfQi0+d2Fp dF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9DKTsKK30KKwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIwogIyBTZXR1cCBhIGNhc2NhZGUgb2YgcHViL3N1YiBub2Rlcy4KICMgbm9kZV9BIC0+ IG5vZGVfQiAtPiBub2RlX0MKQEAgLTI2MCwxNjAgKzQ2MiwxNSBAQCBpcygkcmVzdWx0LCBxcSgy MSksICdSb3dzIGNvbW1pdHRlZCBhcmUgcHJlc2VudCBvbiBzdWJzY3JpYmVyIEMnKTsKICMgMlBD ICsgU1RSRUFNSU5HIFRFU1RTCiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1teSAkb2xkcGlk X0IgPSAkbm9kZV9BLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgIgotCVNFTEVDVCBwaWQgRlJP TSBwZ19zdGF0X3JlcGxpY2F0aW9uCi0JV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFt ZV9CJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiKTsKLW15ICRvbGRwaWRfQyA9ICRub2RlX0It PnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCAiCi0JU0VMRUNUIHBpZCBGUk9NIHBnX3N0YXRfcmVw bGljYXRpb24KLQlXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lX0MnIEFORCBzdGF0 ZSA9ICdzdHJlYW1pbmcnOyIpOwotCi0jIFNldHVwIGxvZ2ljYWwgcmVwbGljYXRpb24gKHN0cmVh bWluZyA9IG9uKQotCi0kbm9kZV9CLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgIgotCUFMVEVS IFNVQlNDUklQVElPTiB0YXBfc3ViX0IKLQlTRVQgKHN0cmVhbWluZyA9IG9uKTsiKTsKLSRub2Rl X0MtPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCAiCi0JQUxURVIgU1VCU0NSSVBUSU9OIHRhcF9z dWJfQwotCVNFVCAoc3RyZWFtaW5nID0gb24pIik7Ci0KLSMgV2FpdCBmb3Igc3Vic2NyaWJlcnMg dG8gZmluaXNoIGluaXRpYWxpemF0aW9uCi0KLSRub2RlX0EtPnBvbGxfcXVlcnlfdW50aWwoCi0J J3Bvc3RncmVzJywgIgotCVNFTEVDVCBwaWQgIT0gJG9sZHBpZF9CIEZST00gcGdfc3RhdF9yZXBs aWNhdGlvbgotCVdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWVfQicgQU5EIHN0YXRl ID0gJ3N0cmVhbWluZyc7IgotKSBvciBkaWUgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBh cHBseSB0byByZXN0YXJ0IjsKLSRub2RlX0ItPnBvbGxfcXVlcnlfdW50aWwoCi0JJ3Bvc3RncmVz JywgIgotCVNFTEVDVCBwaWQgIT0gJG9sZHBpZF9DIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbgot CVdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWVfQycgQU5EIHN0YXRlID0gJ3N0cmVh bWluZyc7IgotKSBvciBkaWUgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBhcHBseSB0byBy ZXN0YXJ0IjsKLQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBUZXN0IDJQQyBQ UkVQQVJFIC8gQ09NTUlUIFBSRVBBUkVELgotIyAxLiBEYXRhIGlzIHN0cmVhbWVkIGFzIGEgMlBD IHRyYW5zYWN0aW9uLgotIyAyLiBUaGVuIGRvIGNvbW1pdCBwcmVwYXJlZC4KLSMKLSMgRXhwZWN0 IGFsbCBkYXRhIGlzIHJlcGxpY2F0ZWQgb24gc3Vic2NyaWJlcihzKSBhZnRlciB0aGUgY29tbWl0 LgotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCi0jIEluc2VydCwgdXBkYXRlIGFu ZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxpbWl0LgotIyBUaGVuIDJQ QyBQUkVQQVJFCi0kbm9kZV9BLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLQlCRUdJTjsK LQlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJh dGVfc2VyaWVzKDMsIDUwMDApIHMoaSk7Ci0JVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIp IFdIRVJFIG1vZChhLDIpID0gMDsKLQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwz KSA9IDA7Ci0JUFJFUEFSRSBUUkFOU0FDVElPTiAndGVzdF9wcmVwYXJlZF90YWInO30pOwotCi0k bm9kZV9BLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0IpOwotJG5vZGVfQi0+d2FpdF9mb3Jf Y2F0Y2h1cCgkYXBwbmFtZV9DKTsKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisj IFRlc3QgdXNpbmcgc3RyZWFtaW5nIG1vZGUgJ29uJworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX0EsICRub2RlX0IsICRub2RlX0MsICRhcHBu YW1lX0IsICRhcHBuYW1lX0MsICdvbicpOwogCi0jIGNoZWNrIHRoZSB0cmFuc2FjdGlvbiBzdGF0 ZSBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyKHMpCi0kcmVzdWx0ID0KLSAgJG5vZGVfQi0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0 czsiKTsKLWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vi c2NyaWJlciBCJyk7Ci0kcmVzdWx0ID0KLSAgJG5vZGVfQy0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs ICJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQs IHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlciBDJyk7Ci0KLSMg MlBDIENPTU1JVAotJG5vZGVfQS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJDT01NSVQgUFJFUEFS RUQgJ3Rlc3RfcHJlcGFyZWRfdGFiJzsiKTsKLQotJG5vZGVfQS0+d2FpdF9mb3JfY2F0Y2h1cCgk YXBwbmFtZV9CKTsKLSRub2RlX0ItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQyk7Ci0KLSMg Y2hlY2sgdGhhdCB0cmFuc2FjdGlvbiB3YXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIocykKLSRy ZXN1bHQgPSAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCop LCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwg cXEoMzMzNHwzMzM0fDMzMzQpLAotCSdSb3dzIGluc2VydGVkIGJ5IDJQQyBoYXZlIGNvbW1pdHRl ZCBvbiBzdWJzY3JpYmVyIEIsIGFuZCBleHRyYSBjb2x1bW5zIGhhdmUgbG9jYWwgZGVmYXVsdHMn Ci0pOwotJHJlc3VsdCA9ICRub2RlX0MtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1Qg Y291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7Ci1pcygk cmVzdWx0LCBxcSgzMzM0fDMzMzR8MzMzNCksCi0JJ1Jvd3MgaW5zZXJ0ZWQgYnkgMlBDIGhhdmUg Y29tbWl0dGVkIG9uIHN1YnNjcmliZXIgQywgYW5kIGV4dHJhIGNvbHVtbnMgaGF2ZSBsb2NhbCBk ZWZhdWx0cycKLSk7Ci0KLSMgY2hlY2sgdGhlIHRyYW5zYWN0aW9uIHN0YXRlIGlzIGVuZGVkIG9u IHN1YnNjcmliZXIocykKLSRyZXN1bHQgPQotICAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJlc3Vs dCwgcXEoMCksICd0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQgb24gc3Vic2NyaWJlciBCJyk7Ci0k cmVzdWx0ID0KLSAgJG5vZGVfQy0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQo KikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNh Y3Rpb24gaXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIgQycpOwotCi0jIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjCi0jIFRlc3QgMlBDIFBSRVBBUkUgd2l0aCBhIG5lc3RlZCBST0xMQkFD SyBUTyBTQVZFUE9JTlQuCi0jIDAuIENsZWFudXAgZnJvbSBwcmV2aW91cyB0ZXN0IGxlYXZpbmcg b25seSAyIHJvd3MuCi0jIDEuIEluc2VydCBvbmUgbW9yZSByb3cuCi0jIDIuIFJlY29yZCBhIFNB VkVQT0lOVC4KLSMgMy4gRGF0YSBpcyBzdHJlYW1lZCB1c2luZyAyUEMuCi0jIDQuIERvIHJvbGxi YWNrIHRvIFNBVkVQT0lOVCBwcmlvciB0byB0aGUgc3RyZWFtZWQgaW5zZXJ0cy4KLSMgNS4gVGhl biBDT01NSVQgUFJFUEFSRUQuCi0jCi0jIEV4cGVjdCBkYXRhIGFmdGVyIHRoZSBTQVZFUE9JTlQg aXMgYWJvcnRlZCBsZWF2aW5nIG9ubHkgMyByb3dzICg9IDIgb3JpZ2luYWwgKyAxIGZyb20gc3Rl cCAxKS4KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotIyBGaXJzdCwgZGVsZXRl IHRoZSBkYXRhIGV4Y2VwdCBmb3IgMiByb3dzIChkZWxldGUgd2lsbCBiZSByZXBsaWNhdGVkKQot JG5vZGVfQS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVS RSBhID4gMjsiKTsKLQotIyAyUEMgUFJFUEFSRSB3aXRoIGEgbmVzdGVkIFJPTExCQUNLIFRPIFNB VkVQT0lOVAotJG5vZGVfQS0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsICIKLQlCRUdJTjsKLQlJ TlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDk5OTksICdmb29iYXInKTsKLQlTQVZFUE9JTlQg c3BfaW5uZXI7Ci0JSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBG Uk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOwotCVVQREFURSB0ZXN0X3RhYiBTRVQg YiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci0JREVMRVRFIEZST00gdGVzdF90YWIgV0hF UkUgbW9kKGEsMykgPSAwOwotCVJPTExCQUNLIFRPIFNBVkVQT0lOVCBzcF9pbm5lcjsKLQlQUkVQ QVJFIFRSQU5TQUNUSU9OICdvdXRlcic7Ci0JIik7Ci0KLSRub2RlX0EtPndhaXRfZm9yX2NhdGNo dXAoJGFwcG5hbWVfQik7Ci0kbm9kZV9CLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0MpOwot Ci0jIGNoZWNrIHRoZSB0cmFuc2FjdGlvbiBzdGF0ZSBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyKHMp Ci0kcmVzdWx0ID0KLSAgJG5vZGVfQi0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291 bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDEpLCAndHJh bnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlciBCJyk7Ci0kcmVzdWx0ID0KLSAgJG5v ZGVfQy0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVw YXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFy ZWQgb24gc3Vic2NyaWJlciBDJyk7Ci0KLSMgMlBDIENPTU1JVAotJG5vZGVfQS0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsICJDT01NSVQgUFJFUEFSRUQgJ291dGVyJzsiKTsKLQotJG5vZGVfQS0+d2Fp dF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9CKTsKLSRub2RlX0ItPndhaXRfZm9yX2NhdGNodXAoJGFw cG5hbWVfQyk7Ci0KLSMgY2hlY2sgdGhlIHRyYW5zYWN0aW9uIHN0YXRlIGlzIGVuZGVkIG9uIHN1 YnNjcmliZXIKLSRyZXN1bHQgPQotICAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNF TEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJlc3VsdCwgcXEo MCksICd0cmFuc2FjdGlvbiBpcyBlbmRlZCBvbiBzdWJzY3JpYmVyIEInKTsKLSRyZXN1bHQgPQot ICAkbm9kZV9DLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBn X3ByZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJlc3VsdCwgcXEoMCksICd0cmFuc2FjdGlvbiBpcyBl bmRlZCBvbiBzdWJzY3JpYmVyIEMnKTsKLQotIyBjaGVjayBpbnNlcnRzIGFyZSB2aXNpYmxlIGF0 IHN1YnNjcmliZXIocykuCi0jIEFsbCB0aGUgc3RyZWFtZWQgZGF0YSAocHJpb3IgdG8gdGhlIFNB VkVQT0lOVCkgc2hvdWxkIGJlIHJvbGxlZCBiYWNrLgotIyAoOTk5OSwgJ2Zvb2JhcicpIHNob3Vs ZCBiZSBjb21taXR0ZWQuCi0kcmVzdWx0ID0gJG5vZGVfQi0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs Ci0JIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiIHdoZXJlIGIgPSAnZm9vYmFyJzsiKTsK LWlzKCRyZXN1bHQsIHFxKDEpLCAnUm93cyBjb21taXR0ZWQgYXJlIHByZXNlbnQgb24gc3Vic2Ny aWJlciBCJyk7Ci0kcmVzdWx0ID0gJG5vZGVfQi0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxF Q1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYjsiKTsKLWlzKCRyZXN1bHQsIHFxKDMpLCAnUm93cyBj b21taXR0ZWQgYXJlIHByZXNlbnQgb24gc3Vic2NyaWJlciBCJyk7Ci0kcmVzdWx0ID0gJG5vZGVf Qy0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFi IHdoZXJlIGIgPSAnZm9vYmFyJzsiKTsKLWlzKCRyZXN1bHQsIHFxKDEpLCAnUm93cyBjb21taXR0 ZWQgYXJlIHByZXNlbnQgb24gc3Vic2NyaWJlciBDJyk7Ci0kcmVzdWx0ID0gJG5vZGVfQy0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYjsiKTsKLWlz KCRyZXN1bHQsIHFxKDMpLCAnUm93cyBjb21taXR0ZWQgYXJlIHByZXNlbnQgb24gc3Vic2NyaWJl ciBDJyk7CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHVzaW5n IHN0cmVhbWluZyBtb2RlICdhcHBseScKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjCit0ZXN0X3N0cmVhbWluZygkbm9kZV9BLCAkbm9kZV9CLCAkbm9kZV9DLCAkYXBwbmFtZV9C LCAkYXBwbmFtZV9DLCAnYXBwbHknKTsKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IwogIyBjaGVjayBhbGwgdGhlIGNsZWFudXAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlw dGlvbi90LzAyM190d29waGFzZV9zdHJlYW0ucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8w MjNfdHdvcGhhc2Vfc3RyZWFtLnBsCmluZGV4IGQ4NDc1ZDI1YTQuLmY1NWM1Yzk1ZTcgMTAwNjQ0 Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyM190d29waGFzZV9zdHJlYW0ucGwKKysr IGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIzX3R3b3BoYXNlX3N0cmVhbS5wbApAQCAtOCw2 ICs4LDI2NiBAQCB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKIHVzZSBQb3N0Z3JlU1FM OjpUZXN0OjpVdGlsczsKIHVzZSBUZXN0OjpNb3JlOwogCisjIEVuY2Fwc3VsYXRlIGFsbCB0aGUg Y29tbW9uIHRlc3Qgc3RlcHMgd2hpY2ggYXJlIHJlbGF0ZWQgdG8gInN0cmVhbWluZyIgb3B0aW9u CisjIHNvIHRoZSBzYW1lIGNvZGUgY2FuIGJlIHJ1biBib3RoIGZvciB0aGUgc3RyZWFtaW5nPW9u IGFuZCBzdHJlYW1pbmc9YXBwbHkKKyMgY2FzZXMuCitzdWIgdGVzdF9zdHJlYW1pbmcKK3sKKwlt eSAoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgJGlzX2FwcGx5 KSA9IEBfOworCisJIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCSMgVGVzdCAyUEMg UFJFUEFSRSAvIENPTU1JVCBQUkVQQVJFRC4KKwkjIDEuIERhdGEgaXMgc3RyZWFtZWQgYXMgYSAy UEMgdHJhbnNhY3Rpb24uCisJIyAyLiBUaGVuIGRvIGNvbW1pdCBwcmVwYXJlZC4KKwkjCisJIyBF eHBlY3QgYWxsIGRhdGEgaXMgcmVwbGljYXRlZCBvbiBzdWJzY3JpYmVyIHNpZGUgYWZ0ZXIgdGhl IGNvbW1pdC4KKwkjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKwkjIENoZWNrIHRo YXQgYSBiYWNrZ3JvdW5kIHdvcmtlciBzdGFydHMgaWYgInN0cmVhbWluZyIgb3B0aW9uIGlzCisJ IyBzcGVjaWZpZWQgYXMgImFwcGx5Ii4gIFdlIGhhdmUgdG8gbG9vayBmb3IgdGhlIERFQlVHMSBs b2cgbWVzc2FnZXMKKwkjIGFib3V0IHRoYXQsIHNvIHRlbXBvcmFyaWx5IGJ1bXAgdXAgdGhlIGxv ZyB2ZXJib3NpdHkuCisJaWYgKCRpc19hcHBseSkKKwl7CisJCSRub2RlX3N1YnNjcmliZXItPmFw cGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCQkJImxvZ19taW5fbWVzc2FnZXMgPSBkZWJ1 ZzEiKTsKKwkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOworCX0KKworCSMgY2hlY2sgdGhhdCAy UEMgZ2V0cyByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIKKwkjIEluc2VydCwgdXBkYXRlIGFuZCBk ZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxpbWl0LgorCSRub2RlX3B1Ymxp c2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCQlCRUdJTjsKKwkJSU5TRVJUIElO VE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcygz LCA1MDAwKSBzKGkpOworCQlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9k KGEsMikgPSAwOworCQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJ CVBSRVBBUkUgVFJBTlNBQ1RJT04gJ3Rlc3RfcHJlcGFyZWRfdGFiJzt9KTsKKworCWlmICgkaXNf YXBwbHkpCisJeworCQkkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2cocXIvXFtBcHBseSBC R1cgI1xkK1xdIHN0YXJ0ZWQvLCAwKTsKKwkJJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYo J3Bvc3RncmVzcWwuY29uZicsCisJCQkibG9nX21pbl9tZXNzYWdlcyA9IHdhcm5pbmciKTsKKwkJ JG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOworCX0KKworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9m b3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwkjIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgaW4g cHJlcGFyZWQgc3RhdGUgb24gc3Vic2NyaWJlcgorCW15ICRyZXN1bHQgPSAkbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3By ZXBhcmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJl cGFyZWQgb24gc3Vic2NyaWJlcicpOworCisJIyAyUEMgdHJhbnNhY3Rpb24gZ2V0cyBjb21taXR0 ZWQKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiQ09NTUlUIFBS RVBBUkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7Iik7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRf Zm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGNv bW1pdHRlZCBvbiBzdWJzY3JpYmVyCisJJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9 IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOworCWlzKCRyZXN1bHQsIHFxKDMzMzR8MzMzNHwzMzM0KSwK KwkJJ1Jvd3MgaW5zZXJ0ZWQgYnkgMlBDIGhhdmUgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIsIGFu ZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnCisJKTsKKwkkcmVzdWx0ID0g JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQo KikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKKwlpcygkcmVzdWx0LCBxcSgwKSwgJ3RyYW5z YWN0aW9uIGlzIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyJyk7CisKKwkjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjCisJIyBUZXN0IDJQQyBQUkVQQVJFIC8gUk9MTEJBQ0sgUFJFUEFSRUQu CisJIyAxLiBUYWJsZSBpcyBkZWxldGVkIGJhY2sgdG8gMiByb3dzIHdoaWNoIGFyZSByZXBsaWNh dGVkIG9uIHN1YnNjcmliZXIuCisJIyAyLiBEYXRhIGlzIHN0cmVhbWVkIHVzaW5nIDJQQy4KKwkj IDMuIERvIHJvbGxiYWNrIHByZXBhcmVkLgorCSMKKwkjIEV4cGVjdCBkYXRhIHJvbGxzIGJhY2sg bGVhdmluZyBvbmx5IHRoZSBvcmlnaW5hbCAyIHJvd3MuCisJIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIworCisJIyBGaXJzdCwgZGVsZXRlIHRoZSBkYXRhIGV4Y2VwdCBmb3IgMiByb3dz ICh3aWxsIGJlIHJlcGxpY2F0ZWQpCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKwkJIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEgPiAyOyIpOworCisJIyBUaGVu IGluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtC IGxpbWl0LgorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxewor CQlCRUdJTjsKKwkJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBG Uk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOworCQlVUERBVEUgdGVzdF90YWIgU0VU IGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOworCQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBX SEVSRSBtb2QoYSwzKSA9IDA7CisJCVBSRVBBUkUgVFJBTlNBQ1RJT04gJ3Rlc3RfcHJlcGFyZWRf dGFiJzt9KTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7 CisKKwkjIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgaW4gcHJlcGFyZWQgc3RhdGUgb24gc3Vi c2NyaWJlcgorCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOworCWlzKCRy ZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlcicpOwor CisJIyAyUEMgdHJhbnNhY3Rpb24gZ2V0cyBhYm9ydGVkCisJJG5vZGVfcHVibGlzaGVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwkJIlJPTExCQUNLIFBSRVBBUkVEICd0ZXN0X3ByZXBhcmVkX3Rh Yic7Iik7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwor CisJIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGFib3J0ZWQgb24gc3Vic2NyaWJlcgorCSRy ZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVD VCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKKwlp cygkcmVzdWx0LCBxcSgyfDJ8MiksCisJCSdSb3dzIGluc2VydGVkIGJ5IDJQQyBhcmUgcm9sbGVk IGJhY2ssIGxlYXZpbmcgb25seSB0aGUgb3JpZ2luYWwgMiByb3dzJworCSk7CisKKwkkcmVzdWx0 ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291 bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKKwlpcygkcmVzdWx0LCBxcSgwKSwgJ3Ry YW5zYWN0aW9uIGlzIGFib3J0ZWQgb24gc3Vic2NyaWJlcicpOworCisJIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIworCSMgQ2hlY2sgdGhhdCAyUEMgQ09NTUlUIFBSRVBBUkVEIGlzIGRl Y29kZWQgcHJvcGVybHkgb24gY3Jhc2ggcmVzdGFydC4KKwkjIDEuIGluc2VydCwgdXBkYXRlIGFu ZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxpbWl0LgorCSMgMi4gVGhl biBzZXJ2ZXIgY3Jhc2hlcyBiZWZvcmUgdGhlIDJQQyB0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQu CisJIyAzLiBBZnRlciBzZXJ2ZXJzIGFyZSByZXN0YXJ0ZWQgdGhlIHBlbmRpbmcgdHJhbnNhY3Rp b24gaXMgY29tbWl0dGVkLgorCSMKKwkjIEV4cGVjdCBhbGwgZGF0YSBpcyByZXBsaWNhdGVkIG9u IHN1YnNjcmliZXIgc2lkZSBhZnRlciB0aGUgY29tbWl0LgorCSMgTm90ZTogYm90aCBwdWJsaXNo ZXIgYW5kIHN1YnNjcmliZXIgZG8gY3Jhc2gvcmVzdGFydC4KKwkjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjCisKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVz JywgcXsKKwkJQkVHSU47CisJCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6 dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMywgNTAwMCkgcyhpKTsKKwkJVVBEQVRFIHRlc3Rf dGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKKwkJREVMRVRFIEZST00gdGVz dF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOworCQlQUkVQQVJFIFRSQU5TQUNUSU9OICd0ZXN0X3By ZXBhcmVkX3RhYic7fSk7CisKKwkkbm9kZV9zdWJzY3JpYmVyLT5zdG9wKCdpbW1lZGlhdGUnKTsK Kwkkbm9kZV9wdWJsaXNoZXItPnN0b3AoJ2ltbWVkaWF0ZScpOworCisJJG5vZGVfcHVibGlzaGVy LT5zdGFydDsKKwkkbm9kZV9zdWJzY3JpYmVyLT5zdGFydDsKKworCSMgY29tbWl0IHBvc3QgdGhl IHJlc3RhcnQKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiQ09N TUlUIFBSRVBBUkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7Iik7CisJJG5vZGVfcHVibGlzaGVyLT53 YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCSMgY2hlY2sgaW5zZXJ0cyBhcmUgdmlzaWJs ZQorCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJ IlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIi KTsKKwlpcygkcmVzdWx0LCBxcSgzMzM0fDMzMzR8MzMzNCksCisJCSdSb3dzIGluc2VydGVkIGJ5 IDJQQyBoYXZlIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyLCBhbmQgZXh0cmEgY29sdW1ucyBjb250 YWluIGxvY2FsIGRlZmF1bHRzJworCSk7CisKKwkjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjCisJIyBEbyBJTlNFUlQgYWZ0ZXIgdGhlIFBSRVBBUkUgYnV0IGJlZm9yZSBST0xMQkFDSyBQ UkVQQVJFRC4KKwkjIDEuIFRhYmxlIGlzIGRlbGV0ZWQgYmFjayB0byAyIHJvd3Mgd2hpY2ggYXJl IHJlcGxpY2F0ZWQgb24gc3Vic2NyaWJlci4KKwkjIDIuIERhdGEgaXMgc3RyZWFtZWQgdXNpbmcg MlBDLgorCSMgMy4gQSBzaW5nbGUgcm93IElOU0VSVCBpcyBkb25lIHdoaWNoIGlzIGFmdGVyIHRo ZSBQUkVQQVJFLgorCSMgNC4gVGhlbiBkbyBhIFJPTExCQUNLIFBSRVBBUkVELgorCSMKKwkjIEV4 cGVjdCB0aGUgMlBDIGRhdGEgcm9sbHMgYmFjayBsZWF2aW5nIG9ubHkgMyByb3dzIG9uIHRoZSBz dWJzY3JpYmVyCisJIyAodGhlIG9yaWdpbmFsIDIgKyBpbnNlcnRlZCAxKS4KKwkjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKwkjIEZpcnN0LCBkZWxldGUgdGhlIGRhdGEgZXhjZXB0 IGZvciAyIHJvd3MgKHdpbGwgYmUgcmVwbGljYXRlZCkKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCQkiREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgYSA+IDI7Iik7 CisKKwkjIFRoZW4gaW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBlbm91Z2ggcm93cyB0byBleGNl ZWQgdGhlIDY0a0IgbGltaXQuCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0 Z3JlcycsIHF7CisJCUJFR0lOOworCQlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1 KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUwMDApIHMoaSk7CisJCVVQREFURSB0 ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7CisJCURFTEVURSBGUk9N IHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwkJUFJFUEFSRSBUUkFOU0FDVElPTiAndGVz dF9wcmVwYXJlZF90YWInO30pOworCisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVw KCRhcHBuYW1lKTsKKworCSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBpbiBwcmVwYXJlZCBz dGF0ZSBvbiBzdWJzY3JpYmVyCisJJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7 Iik7CisJaXMoJHJlc3VsdCwgcXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJz Y3JpYmVyJyk7CisKKwkjIEluc2VydCBhIGRpZmZlcmVudCByZWNvcmQgKG5vdyB3ZSBhcmUgb3V0 c2lkZSBvZiB0aGUgMlBDIHRyYW5zYWN0aW9uKQorCSMgTm90ZTogdGhlIDJQQyB0cmFuc2FjdGlv biBzdGlsbCBob2xkcyByb3cgbG9ja3Mgc28gbWFrZSBzdXJlIHRoaXMgaW5zZXJ0IGlzIGZvciBh IHNlcGFyYXRlIHByaW1hcnkga2V5CisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKwkJIklOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoOTk5OTksICdmb29iYXInKSIp OworCisJIyAyUEMgdHJhbnNhY3Rpb24gZ2V0cyBhYm9ydGVkCisJJG5vZGVfcHVibGlzaGVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlJPTExCQUNLIFBSRVBBUkVEICd0ZXN0X3ByZXBhcmVk X3RhYic7Iik7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUp OworCisJIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGFib3J0ZWQgb24gc3Vic2NyaWJlciwK KwkjIGJ1dCB0aGUgZXh0cmEgSU5TRVJUIG91dHNpZGUgb2YgdGhlIDJQQyBzdGlsbCB3YXMgcmVw bGljYXRlZAorCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVz dF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgzfDN8MyksCisJCSdjaGVjayB0aGUgb3V0c2lkZSBp bnNlcnQgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyJyk7CisKKwkkcmVzdWx0ID0gJG5vZGVfc3Vi c2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKikgRlJPTSBw Z19wcmVwYXJlZF94YWN0czsiKTsKKwlpcygkcmVzdWx0LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlz IGFib3J0ZWQgb24gc3Vic2NyaWJlcicpOworCisJIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIworCSMgRG8gSU5TRVJUIGFmdGVyIHRoZSBQUkVQQVJFIGJ1dCBiZWZvcmUgQ09NTUlUIFBS RVBBUkVELgorCSMgMS4gVGFibGUgaXMgZGVsZXRlZCBiYWNrIHRvIDIgcm93cyB3aGljaCBhcmUg cmVwbGljYXRlZCBvbiBzdWJzY3JpYmVyLgorCSMgMi4gRGF0YSBpcyBzdHJlYW1lZCB1c2luZyAy UEMuCisJIyAzLiBBIHNpbmdsZSByb3cgSU5TRVJUIGlzIGRvbmUgd2hpY2ggaXMgYWZ0ZXIgdGhl IFBSRVBBUkUuCisJIyA0LiBUaGVuIGRvIGEgQ09NTUlUIFBSRVBBUkVELgorCSMKKwkjIEV4cGVj dCAyUEMgZGF0YSArIHRoZSBleHRyYSByb3cgYXJlIG9uIHRoZSBzdWJzY3JpYmVyCisJIyAodGhl IDMzMzQgKyBpbnNlcnRlZCAxID0gMzMzNSkuCisJIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIworCisJIyBGaXJzdCwgZGVsZXRlIHRoZSBkYXRhIGV4Y2VwdCBmb3IgMiByb3dzICh3aWxs IGJlIHJlcGxpY2F0ZWQpCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK KwkJIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEgPiAyOyIpOworCisJIyBUaGVuIGluc2Vy dCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxpbWl0 LgorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCQlCRUdJ TjsKKwkJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdl bmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOworCQlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBt ZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOworCQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBt b2QoYSwzKSA9IDA7CisJCVBSRVBBUkUgVFJBTlNBQ1RJT04gJ3Rlc3RfcHJlcGFyZWRfdGFiJzt9 KTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwkj IGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgaW4gcHJlcGFyZWQgc3RhdGUgb24gc3Vic2NyaWJl cgorCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJ IlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQs IHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlcicpOworCisJIyBJ bnNlcnQgYSBkaWZmZXJlbnQgcmVjb3JkIChub3cgd2UgYXJlIG91dHNpZGUgb2YgdGhlIDJQQyB0 cmFuc2FjdGlvbikKKwkjIE5vdGU6IHRoZSAyUEMgdHJhbnNhY3Rpb24gc3RpbGwgaG9sZHMgcm93 IGxvY2tzIHNvIG1ha2Ugc3VyZSB0aGlzIGluc2VydCBpcyBmb3IgYSBzZXBhcmFyZSBwcmltYXJ5 IGtleQorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJJTlNFUlQg SU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDk5OTk5LCAnZm9vYmFyJykiKTsKKworCSMgMlBDIHRyYW5z YWN0aW9uIGdldHMgY29tbWl0dGVkCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKwkJIkNPTU1JVCBQUkVQQVJFRCAndGVzdF9wcmVwYXJlZF90YWInOyIpOworCisJJG5v ZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCSMgY2hlY2sgdGhh dCB0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQgb24gc3Vic2NyaWJlcgorCSRyZXN1bHQgPSAkbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwg Y291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBx cSgzMzM1fDMzMzV8MzMzNSksCisJCSdSb3dzIGluc2VydGVkIGJ5IDJQQyAoYXMgd2VsbCBhcyBv dXRzaWRlIGluc2VydCkgaGF2ZSBjb21taXR0ZWQgb24gc3Vic2NyaWJlciwgYW5kIGV4dHJhIGNv bHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycKKwkpOworCisJJHJlc3VsdCA9ICRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZST00g cGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMCksICd0cmFuc2FjdGlvbiBp cyBjb21taXR0ZWQgb24gc3Vic2NyaWJlcicpOworCisJIyBDbGVhbnVwIHRoZSB0ZXN0IGRhdGEK Kwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiREVMRVRFIEZST00g dGVzdF90YWIgV0hFUkUgYSA+IDI7Iik7CisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRj aHVwKCRhcHBuYW1lKTsKK30KKwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyBT ZXR1cAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpAQCAtNDgsNiArMzA4LDEwIEBA ICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIkNSRUFURSBQVUJMSUNB VElPTiB0YXBfcHViIEZPUiBUQUJMRSB0ZXN0X3RhYiIpOwogCiBteSAkYXBwbmFtZSA9ICd0YXBf c3ViJzsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVGVzdCB1c2luZyBz dHJlYW1pbmcgbW9kZSAnb24nCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogJG5v ZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAogCSdwb3N0Z3JlcycsICIKIAlDUkVBVEUgU1VCU0NS SVBUSU9OIHRhcF9zdWIKQEAgLTcwLDIzNiArMzM0LDMwIEBAIG15ICR0d29waGFzZV9xdWVyeSA9 CiAkbm9kZV9zdWJzY3JpYmVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsICR0d29waGFz ZV9xdWVyeSkKICAgb3IgZGllICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3Igc3Vic2NyaWJl ciB0byBlbmFibGUgdHdvcGhhc2UiOwogCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj CiAjIENoZWNrIGluaXRpYWwgZGF0YSB3YXMgY29waWVkIHRvIHN1YnNjcmliZXIKLSMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIG15ICRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQo ZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwogaXMoJHJlc3VsdCwgcXEoMnwyfDIpLCAnY2hlY2sg aW5pdGlhbCBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlcicpOwogCi0jIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjCi0jIFRlc3QgMlBDIFBSRVBBUkUgLyBDT01NSVQgUFJFUEFSRUQu Ci0jIDEuIERhdGEgaXMgc3RyZWFtZWQgYXMgYSAyUEMgdHJhbnNhY3Rpb24uCi0jIDIuIFRoZW4g ZG8gY29tbWl0IHByZXBhcmVkLgotIwotIyBFeHBlY3QgYWxsIGRhdGEgaXMgcmVwbGljYXRlZCBv biBzdWJzY3JpYmVyIHNpZGUgYWZ0ZXIgdGhlIGNvbW1pdC4KLSMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMKLQotIyBjaGVjayB0aGF0IDJQQyBnZXRzIHJlcGxpY2F0ZWQgdG8gc3Vic2Ny aWJlcgotIyBJbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRlIGVub3VnaCByb3dzIHRvIGV4Y2VlZCB0 aGUgNjRrQiBsaW1pdC4KLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3Jlcycs IHF7Ci0JQkVHSU47Ci0JSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0 KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOwotCVVQREFURSB0ZXN0X3RhYiBT RVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci0JREVMRVRFIEZST00gdGVzdF90YWIg V0hFUkUgbW9kKGEsMykgPSAwOwotCVBSRVBBUkUgVFJBTlNBQ1RJT04gJ3Rlc3RfcHJlcGFyZWRf dGFiJzt9KTsKLQotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsK LQotIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGluIHByZXBhcmVkIHN0YXRlIG9uIHN1YnNj cmliZXIKLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK LQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7Ci1pcygkcmVzdWx0 LCBxcSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXInKTsKLQotIyAy UEMgdHJhbnNhY3Rpb24gZ2V0cyBjb21taXR0ZWQKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCi0JIkNPTU1JVCBQUkVQQVJFRCAndGVzdF9wcmVwYXJlZF90YWInOyIpOwot Ci0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0jIGNoZWNr IHRoYXQgdHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIKLSRyZXN1bHQgPSAk bm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCop LCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwg cXEoMzMzNHwzMzM0fDMzMzQpLAotCSdSb3dzIGluc2VydGVkIGJ5IDJQQyBoYXZlIGNvbW1pdHRl ZCBvbiBzdWJzY3JpYmVyLCBhbmQgZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRz JwotKTsKLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK LQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7Ci1pcygkcmVzdWx0 LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyJyk7Ci0KLSMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgVGVzdCAyUEMgUFJFUEFSRSAvIFJPTExC QUNLIFBSRVBBUkVELgotIyAxLiBUYWJsZSBpcyBkZWxldGVkIGJhY2sgdG8gMiByb3dzIHdoaWNo IGFyZSByZXBsaWNhdGVkIG9uIHN1YnNjcmliZXIuCi0jIDIuIERhdGEgaXMgc3RyZWFtZWQgdXNp bmcgMlBDLgotIyAzLiBEbyByb2xsYmFjayBwcmVwYXJlZC4KLSMKLSMgRXhwZWN0IGRhdGEgcm9s bHMgYmFjayBsZWF2aW5nIG9ubHkgdGhlIG9yaWdpbmFsIDIgcm93cy4KLSMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMKLQotIyBGaXJzdCwgZGVsZXRlIHRoZSBkYXRhIGV4Y2VwdCBmb3Ig MiByb3dzICh3aWxsIGJlIHJlcGxpY2F0ZWQpCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLCAiREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgYSA+IDI7Iik7Ci0KLSMgVGhl biBpbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRlIGVub3VnaCByb3dzIHRvIGV4Y2VlZCB0aGUgNjRr QiBsaW1pdC4KLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci0J QkVHSU47Ci0JSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9N IGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOwotCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9 IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci0JREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUg bW9kKGEsMykgPSAwOwotCVBSRVBBUkUgVFJBTlNBQ1RJT04gJ3Rlc3RfcHJlcGFyZWRfdGFiJzt9 KTsKLQotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotIyBj aGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGluIHByZXBhcmVkIHN0YXRlIG9uIHN1YnNjcmliZXIK LSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VM RUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7Ci1pcygkcmVzdWx0LCBxcSgx KSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXInKTsKLQotIyAyUEMgdHJh bnNhY3Rpb24gZ2V0cyBhYm9ydGVkCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAotCSJST0xMQkFDSyBQUkVQQVJFRCAndGVzdF9wcmVwYXJlZF90YWInOyIpOwotCi0kbm9k ZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0jIGNoZWNrIHRoYXQg dHJhbnNhY3Rpb24gaXMgYWJvcnRlZCBvbiBzdWJzY3JpYmVyCi0kcmVzdWx0ID0gJG5vZGVfc3Vi c2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwgY291bnQo YyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDJ8Mnwy KSwKLQknUm93cyBpbnNlcnRlZCBieSAyUEMgYXJlIHJvbGxlZCBiYWNrLCBsZWF2aW5nIG9ubHkg dGhlIG9yaWdpbmFsIDIgcm93cycpOwotCi0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hh Y3RzOyIpOwotaXMoJHJlc3VsdCwgcXEoMCksICd0cmFuc2FjdGlvbiBpcyBhYm9ydGVkIG9uIHN1 YnNjcmliZXInKTsKLQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBDaGVjayB0 aGF0IDJQQyBDT01NSVQgUFJFUEFSRUQgaXMgZGVjb2RlZCBwcm9wZXJseSBvbiBjcmFzaCByZXN0 YXJ0LgotIyAxLiBpbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRlIGVub3VnaCByb3dzIHRvIGV4Y2Vl ZCB0aGUgNjRrQiBsaW1pdC4KLSMgMi4gVGhlbiBzZXJ2ZXIgY3Jhc2hlcyBiZWZvcmUgdGhlIDJQ QyB0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQuCi0jIDMuIEFmdGVyIHNlcnZlcnMgYXJlIHJlc3Rh cnRlZCB0aGUgcGVuZGluZyB0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQuCi0jCi0jIEV4cGVjdCBh bGwgZGF0YSBpcyByZXBsaWNhdGVkIG9uIHN1YnNjcmliZXIgc2lkZSBhZnRlciB0aGUgY29tbWl0 LgotIyBOb3RlOiBib3RoIHB1Ymxpc2hlciBhbmQgc3Vic2NyaWJlciBkbyBjcmFzaC9yZXN0YXJ0 LgotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCi0kbm9kZV9wdWJsaXNoZXItPnNh ZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxewotCUJFR0lOOwotCUlOU0VSVCBJTlRPIHRlc3RfdGFi IFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMywgNTAwMCkgcyhp KTsKLQlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOwot CURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKLQlQUkVQQVJFIFRSQU5T QUNUSU9OICd0ZXN0X3ByZXBhcmVkX3RhYic7fSk7Ci0KLSRub2RlX3N1YnNjcmliZXItPnN0b3Ao J2ltbWVkaWF0ZScpOwotJG5vZGVfcHVibGlzaGVyLT5zdG9wKCdpbW1lZGlhdGUnKTsKLQotJG5v ZGVfcHVibGlzaGVyLT5zdGFydDsKLSRub2RlX3N1YnNjcmliZXItPnN0YXJ0OwotCi0jIGNvbW1p dCBwb3N0IHRoZSByZXN0YXJ0Ci0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAotCSJDT01NSVQgUFJFUEFSRUQgJ3Rlc3RfcHJlcGFyZWRfdGFiJzsiKTsKLSRub2RlX3B1Ymxp c2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Cit0ZXN0X3N0cmVhbWluZygkbm9kZV9w dWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAwKTsKIAotIyBjaGVjayBpbnNl cnRzIGFyZSB2aXNpYmxlCi0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZS T00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDMzMzR8MzMzNHwzMzM0KSwKLQknUm93cyBp bnNlcnRlZCBieSAyUEMgaGF2ZSBjb21taXR0ZWQgb24gc3Vic2NyaWJlciwgYW5kIGV4dHJhIGNv bHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjCisjIFRlc3QgdXNpbmcgc3RyZWFtaW5nIG1vZGUgJ2FwcGx5JworIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK215ICRvbGRwaWQgPSAkbm9kZV9wdWJsaXNoZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGlkIEZST00gcGdfc3RhdF9yZXBsaWNh dGlvbiBXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAnc3Ry ZWFtaW5nJzsiCiApOwogCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIERvIElO U0VSVCBhZnRlciB0aGUgUFJFUEFSRSBidXQgYmVmb3JlIFJPTExCQUNLIFBSRVBBUkVELgotIyAx LiBUYWJsZSBpcyBkZWxldGVkIGJhY2sgdG8gMiByb3dzIHdoaWNoIGFyZSByZXBsaWNhdGVkIG9u IHN1YnNjcmliZXIuCi0jIDIuIERhdGEgaXMgc3RyZWFtZWQgdXNpbmcgMlBDLgotIyAzLiBBIHNp bmdsZSByb3cgSU5TRVJUIGlzIGRvbmUgd2hpY2ggaXMgYWZ0ZXIgdGhlIFBSRVBBUkUuCi0jIDQu IFRoZW4gZG8gYSBST0xMQkFDSyBQUkVQQVJFRC4KLSMKLSMgRXhwZWN0IHRoZSAyUEMgZGF0YSBy b2xscyBiYWNrIGxlYXZpbmcgb25seSAzIHJvd3Mgb24gdGhlIHN1YnNjcmliZXIKLSMgKHRoZSBv cmlnaW5hbCAyICsgaW5zZXJ0ZWQgMSkuCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj Ci0KLSMgRmlyc3QsIGRlbGV0ZSB0aGUgZGF0YSBleGNlcHQgZm9yIDIgcm93cyAod2lsbCBiZSBy ZXBsaWNhdGVkKQotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRFTEVU RSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEgPiAyOyIpOwotCi0jIFRoZW4gaW5zZXJ0LCB1cGRhdGUg YW5kIGRlbGV0ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgdGhlIDY0a0IgbGltaXQuCi0kbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxewotCUJFR0lOOwotCUlOU0VSVCBJ TlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMo MywgNTAwMCkgcyhpKTsKLQlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9k KGEsMikgPSAwOwotCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKLQlQ UkVQQVJFIFRSQU5TQUNUSU9OICd0ZXN0X3ByZXBhcmVkX3RhYic7fSk7Ci0KLSRub2RlX3B1Ymxp c2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ci0KLSMgY2hlY2sgdGhhdCB0cmFuc2Fj dGlvbiBpcyBpbiBwcmVwYXJlZCBzdGF0ZSBvbiBzdWJzY3JpYmVyCi0kcmVzdWx0ID0gJG5vZGVf c3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSBGUk9N IHBnX3ByZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJlc3VsdCwgcXEoMSksICd0cmFuc2FjdGlvbiBp cyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyJyk7Ci0KLSMgSW5zZXJ0IGEgZGlmZmVyZW50IHJlY29y ZCAobm93IHdlIGFyZSBvdXRzaWRlIG9mIHRoZSAyUEMgdHJhbnNhY3Rpb24pCi0jIE5vdGU6IHRo ZSAyUEMgdHJhbnNhY3Rpb24gc3RpbGwgaG9sZHMgcm93IGxvY2tzIHNvIG1ha2Ugc3VyZSB0aGlz IGluc2VydCBpcyBmb3IgYSBzZXBhcmF0ZSBwcmltYXJ5IGtleQotJG5vZGVfcHVibGlzaGVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICg5OTk5 OSwgJ2Zvb2JhcicpIik7Ci0KLSMgMlBDIHRyYW5zYWN0aW9uIGdldHMgYWJvcnRlZAotJG5vZGVf cHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiUk9MTEJBQ0sgUFJFUEFSRUQgJ3Rl c3RfcHJlcGFyZWRfdGFiJzsiKTsKLQotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVw KCRhcHBuYW1lKTsKLQotIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGFib3J0ZWQgb24gc3Vi c2NyaWJlciwKLSMgYnV0IHRoZSBleHRyYSBJTlNFUlQgb3V0c2lkZSBvZiB0aGUgMlBDIHN0aWxs IHdhcyByZXBsaWNhdGVkCi0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZS T00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDN8M3wzKSwgJ2NoZWNrIHRoZSBvdXRzaWRl IGluc2VydCB3YXMgY29waWVkIHRvIHN1YnNjcmliZXInKTsKLQotJHJlc3VsdCA9ICRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKikgRlJPTSBw Z19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rpb24gaXMg YWJvcnRlZCBvbiBzdWJzY3JpYmVyJyk7Ci0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMKLSMgRG8gSU5TRVJUIGFmdGVyIHRoZSBQUkVQQVJFIGJ1dCBiZWZvcmUgQ09NTUlUIFBSRVBB UkVELgotIyAxLiBUYWJsZSBpcyBkZWxldGVkIGJhY2sgdG8gMiByb3dzIHdoaWNoIGFyZSByZXBs aWNhdGVkIG9uIHN1YnNjcmliZXIuCi0jIDIuIERhdGEgaXMgc3RyZWFtZWQgdXNpbmcgMlBDLgot IyAzLiBBIHNpbmdsZSByb3cgSU5TRVJUIGlzIGRvbmUgd2hpY2ggaXMgYWZ0ZXIgdGhlIFBSRVBB UkUuCi0jIDQuIFRoZW4gZG8gYSBDT01NSVQgUFJFUEFSRUQuCi0jCi0jIEV4cGVjdCAyUEMgZGF0 YSArIHRoZSBleHRyYSByb3cgYXJlIG9uIHRoZSBzdWJzY3JpYmVyCi0jICh0aGUgMzMzNCArIGlu c2VydGVkIDEgPSAzMzM1KS4KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotIyBG aXJzdCwgZGVsZXRlIHRoZSBkYXRhIGV4Y2VwdCBmb3IgMiByb3dzICh3aWxsIGJlIHJlcGxpY2F0 ZWQpCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiREVMRVRFIEZST00g dGVzdF90YWIgV0hFUkUgYSA+IDI7Iik7Ci0KLSMgVGhlbiBpbnNlcnQsIHVwZGF0ZSBhbmQgZGVs ZXRlIGVub3VnaCByb3dzIHRvIGV4Y2VlZCB0aGUgNjRrQiBsaW1pdC4KLSRub2RlX3B1Ymxpc2hl ci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci0JQkVHSU47Ci0JSU5TRVJUIElOVE8gdGVz dF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAw KSBzKGkpOwotCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9 IDA7Ci0JREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwotCVBSRVBBUkUg VFJBTlNBQ1RJT04gJ3Rlc3RfcHJlcGFyZWRfdGFiJzt9KTsKLQotJG5vZGVfcHVibGlzaGVyLT53 YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlz IGluIHByZXBhcmVkIHN0YXRlIG9uIHN1YnNjcmliZXIKLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJl cGFyZWRfeGFjdHM7Iik7Ci1pcygkcmVzdWx0LCBxcSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBh cmVkIG9uIHN1YnNjcmliZXInKTsKLQotIyBJbnNlcnQgYSBkaWZmZXJlbnQgcmVjb3JkIChub3cg d2UgYXJlIG91dHNpZGUgb2YgdGhlIDJQQyB0cmFuc2FjdGlvbikKLSMgTm90ZTogdGhlIDJQQyB0 cmFuc2FjdGlvbiBzdGlsbCBob2xkcyByb3cgbG9ja3Mgc28gbWFrZSBzdXJlIHRoaXMgaW5zZXJ0 IGlzIGZvciBhIHNlcGFyYXJlIHByaW1hcnkga2V5Ci0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAotCSJJTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDk5OTk5LCAnZm9v YmFyJykiKTsKLQotIyAyUEMgdHJhbnNhY3Rpb24gZ2V0cyBjb21taXR0ZWQKLSRub2RlX3B1Ymxp c2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIkNPTU1JVCBQUkVQQVJFRCAndGVzdF9wcmVw YXJlZF90YWInOyIpOwotCi0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5h bWUpOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFNV QlNDUklQVElPTiB0YXBfc3ViIFNFVChzdHJlYW1pbmcgPSBhcHBseSkiKTsKIAotIyBjaGVjayB0 aGF0IHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyCi0kcmVzdWx0ID0gJG5v ZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwg Y291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFx KDMzMzV8MzMzNXwzMzM1KSwKLQknUm93cyBpbnNlcnRlZCBieSAyUEMgKGFzIHdlbGwgYXMgb3V0 c2lkZSBpbnNlcnQpIGhhdmUgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIsIGFuZCBleHRyYSBjb2x1 bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnCi0pOworJG5vZGVfcHVibGlzaGVyLT5wb2xsX3F1 ZXJ5X3VudGlsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwaWQgIT0gJG9sZHBpZCBGUk9NIHBnX3N0 YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0 YXRlID0gJ3N0cmVhbWluZyc7IgorICApCisgIG9yIGRpZQorICAiVGltZWQgb3V0IHdoaWxlIHdh aXRpbmcgZm9yIGFwcGx5IHRvIHJlc3RhcnQgYWZ0ZXIgY2hhbmdpbmcgU1VCU0NSSVBUSU9OIjsK IAotJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJT RUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFx KDApLCAndHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXInKTsKK3Rlc3Rfc3Ry ZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDEpOwog CiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIGNoZWNrIGFsbCB0aGUgY2xlYW51 cAotLSAKMi4yMy4wLndpbmRvd3MuMQoK --_006_OS3PR01MB62756BD9482EB6BB1CA4CD4D9EAA9OS3PR01MB6275jpnp_ Content-Type: application/octet-stream; name="v10-0003-The-v4-patch-0001-0003-in-thread-1.patch" Content-Description: v10-0003-The-v4-patch-0001-0003-in-thread-1.patch Content-Disposition: attachment; filename="v10-0003-The-v4-patch-0001-0003-in-thread-1.patch"; size=17645; creation-date="Tue, 14 Jun 2022 03:35:00 GMT"; modification-date="Tue, 14 Jun 2022 03:37:01 GMT" Content-Transfer-Encoding: base64 RnJvbSBkNWZjZGU1YmNkNmNmMDkzMzc2YmRjNjcwYzM5Zjc0OTM2ZDE5MTlhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiB3YW5ndyA8d2FuZ3cuZm5zdEBmdWppdHN1LmNvbT4KRGF0ZTog VHVlLCAxNCBKdW4gMjAyMiAxMToyMToyNSArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjEwIDMvNV0g VGhlIHY0IHBhdGNoKDAwMDF+MDAwMykgaW4gdGhyZWFkIFsxXQoKWzFdIC0KaHR0cHM6Ly93d3cu cG9zdGdyZXNxbC5vcmcvbWVzc2FnZS1pZC9PUzBQUjAxTUI1NzE2Mzc3Qzg1RDRBMTY0RTZBN0Q0 NUY5NEFCOSU0ME9TMFBSMDFNQjU3MTYuanBucHJkMDEucHJvZC5vdXRsb29rLmNvbQotLS0KIHNy Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVsYXRpb24uYyB8IDIyNiArKysrKysrKysr KysrLS0tLS0tLS0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMgICB8 ICAyNSArKy0KIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxyZWxhdGlvbi5oICB8ICAg MSArCiBzcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTNfcGFydGl0aW9uLnBsICAgfCAgODUgKysr KysrKy0KIDQgZmlsZXMgY2hhbmdlZCwgMjQyIGluc2VydGlvbnMoKyksIDk1IGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVsYXRpb24u YyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVsYXRpb24uYwppbmRleCA4MGZi NTYxYTlhLi5mMzQyMzk2MzEwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9s b2dpY2FsL3JlbGF0aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9y ZWxhdGlvbi5jCkBAIC0yNDksNiArMjQ5LDcyIEBAIGxvZ2ljYWxyZXBfcmVwb3J0X21pc3Npbmdf YXR0cnMoTG9naWNhbFJlcFJlbGF0aW9uICpyZW1vdGVyZWwsCiAJfQogfQogCisvKgorICogQ2hl Y2sgaWYgcmVwbGljYSBpZGVudGl0eSBtYXRjaGVzIGFuZCBtYXJrIHRoZSB1cGRhdGFibGUgZmxh Zy4KKyAqCisgKiBXZSBhbGxvdyBmb3Igc3RyaWN0ZXIgcmVwbGljYSBpZGVudGl0eSAoZmV3ZXIg Y29sdW1ucykgb24gc3Vic2NyaWJlciBhcworICogdGhhdCB3aWxsIG5vdCBzdG9wIHVzIGZyb20g ZmluZGluZyB1bmlxdWUgdHVwbGUuIElFLCBpZiBwdWJsaXNoZXIgaGFzCisgKiBpZGVudGl0eSAo aWQsdGltZXN0YW1wKSBhbmQgc3Vic2NyaWJlciBqdXN0IChpZCkgdGhpcyB3aWxsIG5vdCBiZSBh CisgKiBwcm9ibGVtLCBidXQgaW4gdGhlIG9wcG9zaXRlIHNjZW5hcmlvIGl0IHdpbGwuCisgKgor ICogRG9uJ3QgdGhyb3cgYW55IGVycm9yIGhlcmUganVzdCBtYXJrIHRoZSByZWxhdGlvbiBlbnRy eSBhcyBub3QgdXBkYXRhYmxlLAorICogYXMgcmVwbGljYSBpZGVudGl0eSBpcyBvbmx5IGZvciB1 cGRhdGVzIGFuZCBkZWxldGVzIGJ1dCBpbnNlcnRzIGNhbiBiZQorICogcmVwbGljYXRlZCBldmVu IHdpdGhvdXQgaXQuCisgKi8KK3N0YXRpYyB2b2lkCitsb2dpY2FscmVwX3JlbF9tYXJrX3VwZGF0 YWJsZShMb2dpY2FsUmVwUmVsTWFwRW50cnkgKmVudHJ5KQoreworCUJpdG1hcHNldCAgKmlka2V5 OworCUxvZ2ljYWxSZXBSZWxhdGlvbiAqcmVtb3RlcmVsID0gJmVudHJ5LT5yZW1vdGVyZWw7CisJ aW50CQkJaTsKKworCWVudHJ5LT51cGRhdGFibGUgPSB0cnVlOworCisJLyoKKwkgKiBJZiBpdCBp cyBhIHBhcnRpdGlvbmVkIHRhYmxlLCB3ZSBkb24ndCBjaGVjayBpdCwgd2Ugd2lsbCBjaGVjayBp dHMKKwkgKiBwYXJ0aXRpb24gbGF0ZXIuCisJICovCisJaWYgKGVudHJ5LT5sb2NhbHJlbC0+cmRf cmVsLT5yZWxraW5kID09IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUpCisJCXJldHVybjsKKwor CWlka2V5ID0gUmVsYXRpb25HZXRJbmRleEF0dHJCaXRtYXAoZW50cnktPmxvY2FscmVsLAorCQkJ CQkJCQkJICAgSU5ERVhfQVRUUl9CSVRNQVBfSURFTlRJVFlfS0VZKTsKKwkvKiBmYWxsYmFjayB0 byBQSyBpZiBubyByZXBsaWNhIGlkZW50aXR5ICovCisJaWYgKGlka2V5ID09IE5VTEwpCisJewor CQlpZGtleSA9IFJlbGF0aW9uR2V0SW5kZXhBdHRyQml0bWFwKGVudHJ5LT5sb2NhbHJlbCwKKwkJ CQkJCQkJCQkgICBJTkRFWF9BVFRSX0JJVE1BUF9QUklNQVJZX0tFWSk7CisJCS8qCisJCSAqIElm IG5vIHJlcGxpY2EgaWRlbnRpdHkgaW5kZXggYW5kIG5vIFBLLCB0aGUgcHVibGlzaGVkIHRhYmxl CisJCSAqIG11c3QgaGF2ZSByZXBsaWNhIGlkZW50aXR5IEZVTEwuCisJCSAqLworCQlpZiAoaWRr ZXkgPT0gTlVMTCAmJiByZW1vdGVyZWwtPnJlcGxpZGVudCAhPSBSRVBMSUNBX0lERU5USVRZX0ZV TEwpCisJCQllbnRyeS0+dXBkYXRhYmxlID0gZmFsc2U7CisJfQorCisJaSA9IC0xOworCXdoaWxl ICgoaSA9IGJtc19uZXh0X21lbWJlcihpZGtleSwgaSkpID49IDApCisJeworCQlpbnQJCQlhdHRu dW0gPSBpICsgRmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0ZU51bWJlcjsKKworCQlpZiAoIUF0 dHJOdW1iZXJJc0ZvclVzZXJEZWZpbmVkQXR0cihhdHRudW0pKQorCQkJZXJlcG9ydChFUlJPUiwK KwkJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSks CisJCQkJCSBlcnJtc2coImxvZ2ljYWwgcmVwbGljYXRpb24gdGFyZ2V0IHJlbGF0aW9uIFwiJXMu JXNcIiB1c2VzICIKKwkJCQkJCQkic3lzdGVtIGNvbHVtbnMgaW4gUkVQTElDQSBJREVOVElUWSBp bmRleCIsCisJCQkJCQkJcmVtb3RlcmVsLT5uc3BuYW1lLCByZW1vdGVyZWwtPnJlbG5hbWUpKSk7 CisKKwkJYXR0bnVtID0gQXR0ck51bWJlckdldEF0dHJPZmZzZXQoYXR0bnVtKTsKKworCQlpZiAo ZW50cnktPmF0dHJtYXAtPmF0dG51bXNbYXR0bnVtXSA8IDAgfHwKKwkJCSFibXNfaXNfbWVtYmVy KGVudHJ5LT5hdHRybWFwLT5hdHRudW1zW2F0dG51bV0sIHJlbW90ZXJlbC0+YXR0a2V5cykpCisJ CXsKKwkJCWVudHJ5LT51cGRhdGFibGUgPSBmYWxzZTsKKwkJCWJyZWFrOworCQl9CisJfQorfQor CiAvKgogICogT3BlbiB0aGUgbG9jYWwgcmVsYXRpb24gYXNzb2NpYXRlZCB3aXRoIHRoZSByZW1v dGUgb25lLgogICoKQEAgLTMwNyw3ICszNzMsNiBAQCBsb2dpY2FscmVwX3JlbF9vcGVuKExvZ2lj YWxSZXBSZWxJZCByZW1vdGVpZCwgTE9DS01PREUgbG9ja21vZGUpCiAJaWYgKCFlbnRyeS0+bG9j YWxyZWx2YWxpZCkKIAl7CiAJCU9pZAkJCXJlbGlkOwotCQlCaXRtYXBzZXQgICppZGtleTsKIAkJ VHVwbGVEZXNjCWRlc2M7CiAJCU1lbW9yeUNvbnRleHQgb2xkY3R4OwogCQlpbnQJCQlpOwpAQCAt MzY1LDU1ICs0MzAsOCBAQCBsb2dpY2FscmVwX3JlbF9vcGVuKExvZ2ljYWxSZXBSZWxJZCByZW1v dGVpZCwgTE9DS01PREUgbG9ja21vZGUpCiAJCS8qIGJlIHRpZHkgKi8KIAkJYm1zX2ZyZWUobWlz c2luZ2F0dHMpOwogCi0JCS8qCi0JCSAqIENoZWNrIHRoYXQgcmVwbGljYSBpZGVudGl0eSBtYXRj aGVzLiBXZSBhbGxvdyBmb3Igc3RyaWN0ZXIgcmVwbGljYQotCQkgKiBpZGVudGl0eSAoZmV3ZXIg Y29sdW1ucykgb24gc3Vic2NyaWJlciBhcyB0aGF0IHdpbGwgbm90IHN0b3AgdXMKLQkJICogZnJv bSBmaW5kaW5nIHVuaXF1ZSB0dXBsZS4gSUUsIGlmIHB1Ymxpc2hlciBoYXMgaWRlbnRpdHkKLQkJ ICogKGlkLHRpbWVzdGFtcCkgYW5kIHN1YnNjcmliZXIganVzdCAoaWQpIHRoaXMgd2lsbCBub3Qg YmUgYSBwcm9ibGVtLAotCQkgKiBidXQgaW4gdGhlIG9wcG9zaXRlIHNjZW5hcmlvIGl0IHdpbGwu Ci0JCSAqCi0JCSAqIERvbid0IHRocm93IGFueSBlcnJvciBoZXJlIGp1c3QgbWFyayB0aGUgcmVs YXRpb24gZW50cnkgYXMgbm90Ci0JCSAqIHVwZGF0YWJsZSwgYXMgcmVwbGljYSBpZGVudGl0eSBp cyBvbmx5IGZvciB1cGRhdGVzIGFuZCBkZWxldGVzIGJ1dAotCQkgKiBpbnNlcnRzIGNhbiBiZSBy ZXBsaWNhdGVkIGV2ZW4gd2l0aG91dCBpdC4KLQkJICovCi0JCWVudHJ5LT51cGRhdGFibGUgPSB0 cnVlOwotCQlpZGtleSA9IFJlbGF0aW9uR2V0SW5kZXhBdHRyQml0bWFwKGVudHJ5LT5sb2NhbHJl bCwKLQkJCQkJCQkJCQkgICBJTkRFWF9BVFRSX0JJVE1BUF9JREVOVElUWV9LRVkpOwotCQkvKiBm YWxsYmFjayB0byBQSyBpZiBubyByZXBsaWNhIGlkZW50aXR5ICovCi0JCWlmIChpZGtleSA9PSBO VUxMKQotCQl7Ci0JCQlpZGtleSA9IFJlbGF0aW9uR2V0SW5kZXhBdHRyQml0bWFwKGVudHJ5LT5s b2NhbHJlbCwKLQkJCQkJCQkJCQkJICAgSU5ERVhfQVRUUl9CSVRNQVBfUFJJTUFSWV9LRVkpOwot Ci0JCQkvKgotCQkJICogSWYgbm8gcmVwbGljYSBpZGVudGl0eSBpbmRleCBhbmQgbm8gUEssIHRo ZSBwdWJsaXNoZWQgdGFibGUKLQkJCSAqIG11c3QgaGF2ZSByZXBsaWNhIGlkZW50aXR5IEZVTEwu Ci0JCQkgKi8KLQkJCWlmIChpZGtleSA9PSBOVUxMICYmIHJlbW90ZXJlbC0+cmVwbGlkZW50ICE9 IFJFUExJQ0FfSURFTlRJVFlfRlVMTCkKLQkJCQllbnRyeS0+dXBkYXRhYmxlID0gZmFsc2U7Ci0J CX0KLQotCQlpID0gLTE7Ci0JCXdoaWxlICgoaSA9IGJtc19uZXh0X21lbWJlcihpZGtleSwgaSkp ID49IDApCi0JCXsKLQkJCWludAkJCWF0dG51bSA9IGkgKyBGaXJzdExvd0ludmFsaWRIZWFwQXR0 cmlidXRlTnVtYmVyOwotCi0JCQlpZiAoIUF0dHJOdW1iZXJJc0ZvclVzZXJEZWZpbmVkQXR0cihh dHRudW0pKQotCQkJCWVyZXBvcnQoRVJST1IsCi0JCQkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVD VF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKLQkJCQkJCSBlcnJtc2coImxvZ2ljYWwgcmVw bGljYXRpb24gdGFyZ2V0IHJlbGF0aW9uIFwiJXMuJXNcIiB1c2VzICIKLQkJCQkJCQkJInN5c3Rl bSBjb2x1bW5zIGluIFJFUExJQ0EgSURFTlRJVFkgaW5kZXgiLAotCQkJCQkJCQlyZW1vdGVyZWwt Pm5zcG5hbWUsIHJlbW90ZXJlbC0+cmVsbmFtZSkpKTsKLQotCQkJYXR0bnVtID0gQXR0ck51bWJl ckdldEF0dHJPZmZzZXQoYXR0bnVtKTsKLQotCQkJaWYgKGVudHJ5LT5hdHRybWFwLT5hdHRudW1z W2F0dG51bV0gPCAwIHx8Ci0JCQkJIWJtc19pc19tZW1iZXIoZW50cnktPmF0dHJtYXAtPmF0dG51 bXNbYXR0bnVtXSwgcmVtb3RlcmVsLT5hdHRrZXlzKSkKLQkJCXsKLQkJCQllbnRyeS0+dXBkYXRh YmxlID0gZmFsc2U7Ci0JCQkJYnJlYWs7Ci0JCQl9Ci0JCX0KKwkJLyogQ2hlY2sgdGhhdCByZXBs aWNhIGlkZW50aXR5IG1hdGNoZXMuICovCisJCWxvZ2ljYWxyZXBfcmVsX21hcmtfdXBkYXRhYmxl KGVudHJ5KTsKIAogCQllbnRyeS0+bG9jYWxyZWx2YWxpZCA9IHRydWU7CiAJfQpAQCAtNDM2LDIy ICs0NTQsMTMgQEAgbG9naWNhbHJlcF9yZWxfY2xvc2UoTG9naWNhbFJlcFJlbE1hcEVudHJ5ICpy ZWwsIExPQ0tNT0RFIGxvY2ttb2RlKQogCXJlbC0+bG9jYWxyZWwgPSBOVUxMOwogfQogCi0vKgot ICogUGFydGl0aW9uIGNhY2hlOiBsb29rIHVwIHBhcnRpdGlvbiBMb2dpY2FsUmVwUmVsTWFwRW50 cnkncwotICoKLSAqIFVubGlrZSByZWxhdGlvbiBtYXAgY2FjaGUsIHRoaXMgaXMga2V5ZWQgYnkg cGFydGl0aW9uIE9JRCwgbm90IHJlbW90ZQotICogcmVsYXRpb24gT0lELCBiZWNhdXNlIHdlIG9u bHkgaGF2ZSB0byB1c2UgdGhpcyBjYWNoZSBpbiB0aGUgY2FzZSB3aGVyZQotICogcGFydGl0aW9u cyBhcmUgbm90IGRpcmVjdGx5IG1hcHBlZCB0byBhbnkgcmVtb3RlIHJlbGF0aW9uLCBzdWNoIGFz IHdoZW4KLSAqIHJlcGxpY2F0aW9uIGlzIG9jY3VycmluZyB3aXRoIG9uZSBvZiB0aGVpciBhbmNl c3RvcnMgYXMgdGFyZ2V0LgotICovCi0KIC8qCiAgKiBSZWxjYWNoZSBpbnZhbGlkYXRpb24gY2Fs bGJhY2sKICAqLwogc3RhdGljIHZvaWQKIGxvZ2ljYWxyZXBfcGFydG1hcF9pbnZhbGlkYXRlX2Ni KERhdHVtIGFyZywgT2lkIHJlbG9pZCkKIHsKLQlMb2dpY2FsUmVwUmVsTWFwRW50cnkgKmVudHJ5 OworCUxvZ2ljYWxSZXBQYXJ0TWFwRW50cnkgKmVudHJ5OwogCiAJLyogSnVzdCB0byBiZSBzdXJl LiAqLwogCWlmIChMb2dpY2FsUmVwUGFydE1hcCA9PSBOVUxMKQpAQCAtNDY0LDExICs0NzMsMTEg QEAgbG9naWNhbHJlcF9wYXJ0bWFwX2ludmFsaWRhdGVfY2IoRGF0dW0gYXJnLCBPaWQgcmVsb2lk KQogCQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIExvZ2ljYWxSZXBQYXJ0TWFwKTsKIAogCQkvKiBU T0RPLCB1c2UgaW52ZXJzZSBsb29rdXAgaGFzaHRhYmxlPyAqLwotCQl3aGlsZSAoKGVudHJ5ID0g KExvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqKSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykpICE9IE5V TEwpCisJCXdoaWxlICgoZW50cnkgPSAoTG9naWNhbFJlcFBhcnRNYXBFbnRyeSAqKSBoYXNoX3Nl cV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCiAJCXsKLQkJCWlmIChlbnRyeS0+bG9jYWxyZWxv aWQgPT0gcmVsb2lkKQorCQkJaWYgKGVudHJ5LT5yZWxtYXBlbnRyeS5sb2NhbHJlbG9pZCA9PSBy ZWxvaWQpCiAJCQl7Ci0JCQkJZW50cnktPmxvY2FscmVsdmFsaWQgPSBmYWxzZTsKKwkJCQllbnRy eS0+cmVsbWFwZW50cnkubG9jYWxyZWx2YWxpZCA9IGZhbHNlOwogCQkJCWhhc2hfc2VxX3Rlcm0o JnN0YXR1cyk7CiAJCQkJYnJlYWs7CiAJCQl9CkBAIC00ODEsOCArNDkwLDQyIEBAIGxvZ2ljYWxy ZXBfcGFydG1hcF9pbnZhbGlkYXRlX2NiKERhdHVtIGFyZywgT2lkIHJlbG9pZCkKIAogCQloYXNo X3NlcV9pbml0KCZzdGF0dXMsIExvZ2ljYWxSZXBQYXJ0TWFwKTsKIAotCQl3aGlsZSAoKGVudHJ5 ID0gKExvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqKSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykpICE9 IE5VTEwpCi0JCQllbnRyeS0+bG9jYWxyZWx2YWxpZCA9IGZhbHNlOworCQl3aGlsZSAoKGVudHJ5 ID0gKExvZ2ljYWxSZXBQYXJ0TWFwRW50cnkgKikgaGFzaF9zZXFfc2VhcmNoKCZzdGF0dXMpKSAh PSBOVUxMKQorCQkJZW50cnktPnJlbG1hcGVudHJ5LmxvY2FscmVsdmFsaWQgPSBmYWxzZTsKKwl9 Cit9CisKKy8qCisgKiBSZXNldCB0aGUgZW50cmllcyBpbiB0aGUgcGFydGl0aW9uIG1hcCB0aGF0 IHJlZmVyIHRvIHJlbW90ZXJlbAorICoKKyAqIENhbGxlZCB3aGVuIG5ldyByZWxhdGlvbiBtYXBw aW5nIGlzIHNlbnQgYnkgdGhlIHB1Ymxpc2hlciB0byB1cGRhdGUgb3VyCisgKiBleHBlY3RlZCB2 aWV3IG9mIGluY29taW5nIGRhdGEgZnJvbSBzYWlkIHB1Ymxpc2hlci4KKyAqCisgKiBOb3RlIHRo YXQgd2UgZG9uJ3QgdXBkYXRlIHRoZSByZW1vdGVyZWwgaW5mb3JtYXRpb24gaW4gdGhlIGVudHJ5 IGhlcmUsCisgKiB3ZSB3aWxsIHVwZGF0ZSB0aGUgaW5mb3JtYXRpb24gaW4gbG9naWNhbHJlcF9w YXJ0aXRpb25fb3BlbiB0byBhdm9pZAorICogdW5uZWNlc3Nhcnkgd29yay4KKyAqLwordm9pZAor bG9naWNhbHJlcF9wYXJ0bWFwX3Jlc2V0X3JlbG1hcChMb2dpY2FsUmVwUmVsYXRpb24gKnJlbW90 ZXJlbCkKK3sKKwlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOworCUxvZ2ljYWxSZXBQYXJ0TWFwRW50 cnkgKnBhcnRfZW50cnk7CisJTG9naWNhbFJlcFJlbE1hcEVudHJ5ICplbnRyeTsKKworCWlmIChM b2dpY2FsUmVwUGFydE1hcCA9PSBOVUxMKQorCQlyZXR1cm47CisKKwloYXNoX3NlcV9pbml0KCZz dGF0dXMsIExvZ2ljYWxSZXBQYXJ0TWFwKTsKKwl3aGlsZSAoKHBhcnRfZW50cnkgPSAoTG9naWNh bFJlcFBhcnRNYXBFbnRyeSAqKSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJ eworCQllbnRyeSA9ICZwYXJ0X2VudHJ5LT5yZWxtYXBlbnRyeTsKKworCQlpZiAoZW50cnktPnJl bW90ZXJlbC5yZW1vdGVpZCAhPSByZW1vdGVyZWwtPnJlbW90ZWlkKQorCQkJY29udGludWU7CisK KwkJbG9naWNhbHJlcF9yZWxtYXBfZnJlZV9lbnRyeShlbnRyeSk7CisKKwkJbWVtc2V0KGVudHJ5 LCAwLCBzaXplb2YoTG9naWNhbFJlcFJlbE1hcEVudHJ5KSk7CiAJfQogfQogCkBAIC01MzQsNyAr NTc3LDYgQEAgbG9naWNhbHJlcF9wYXJ0aXRpb25fb3BlbihMb2dpY2FsUmVwUmVsTWFwRW50cnkg KnJvb3QsCiAJT2lkCQkJcGFydE9pZCA9IFJlbGF0aW9uR2V0UmVsaWQocGFydHJlbCk7CiAJQXR0 ck1hcCAgICAqYXR0cm1hcCA9IHJvb3QtPmF0dHJtYXA7CiAJYm9vbAkJZm91bmQ7Ci0JaW50CQkJ aTsKIAlNZW1vcnlDb250ZXh0IG9sZGN0eDsKIAogCWlmIChMb2dpY2FsUmVwUGFydE1hcCA9PSBO VUxMKQpAQCAtNTQ1LDMxICs1ODcsNDAgQEAgbG9naWNhbHJlcF9wYXJ0aXRpb25fb3BlbihMb2dp Y2FsUmVwUmVsTWFwRW50cnkgKnJvb3QsCiAJCQkJCQkJCQkJCQkJCSh2b2lkICopICZwYXJ0T2lk LAogCQkJCQkJCQkJCQkJCQlIQVNIX0VOVEVSLCAmZm91bmQpOwogCi0JaWYgKGZvdW5kKQotCQly ZXR1cm4gJnBhcnRfZW50cnktPnJlbG1hcGVudHJ5OworCWVudHJ5ID0gJnBhcnRfZW50cnktPnJl bG1hcGVudHJ5OwogCi0JbWVtc2V0KHBhcnRfZW50cnksIDAsIHNpemVvZihMb2dpY2FsUmVwUGFy dE1hcEVudHJ5KSk7CisJaWYgKGZvdW5kICYmIGVudHJ5LT5sb2NhbHJlbHZhbGlkKQorCQlyZXR1 cm4gZW50cnk7CiAKIAkvKiBTd2l0Y2ggdG8gbG9uZ2VyLWxpdmVkIGNvbnRleHQuICovCiAJb2xk Y3R4ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKExvZ2ljYWxSZXBQYXJ0TWFwQ29udGV4dCk7CiAK LQlwYXJ0X2VudHJ5LT5wYXJ0b2lkID0gcGFydE9pZDsKKwlpZiAoIWZvdW5kKQorCXsKKwkJbWVt c2V0KHBhcnRfZW50cnksIDAsIHNpemVvZihMb2dpY2FsUmVwUGFydE1hcEVudHJ5KSk7CisJCXBh cnRfZW50cnktPnBhcnRvaWQgPSBwYXJ0T2lkOworCX0KIAotCS8qIFJlbW90ZSByZWxhdGlvbiBp cyBjb3BpZWQgYXMtaXMgZnJvbSB0aGUgcm9vdCBlbnRyeS4gKi8KLQllbnRyeSA9ICZwYXJ0X2Vu dHJ5LT5yZWxtYXBlbnRyeTsKLQllbnRyeS0+cmVtb3RlcmVsLnJlbW90ZWlkID0gcmVtb3RlcmVs LT5yZW1vdGVpZDsKLQllbnRyeS0+cmVtb3RlcmVsLm5zcG5hbWUgPSBwc3RyZHVwKHJlbW90ZXJl bC0+bnNwbmFtZSk7Ci0JZW50cnktPnJlbW90ZXJlbC5yZWxuYW1lID0gcHN0cmR1cChyZW1vdGVy ZWwtPnJlbG5hbWUpOwotCWVudHJ5LT5yZW1vdGVyZWwubmF0dHMgPSByZW1vdGVyZWwtPm5hdHRz OwotCWVudHJ5LT5yZW1vdGVyZWwuYXR0bmFtZXMgPSBwYWxsb2MocmVtb3RlcmVsLT5uYXR0cyAq IHNpemVvZihjaGFyICopKTsKLQllbnRyeS0+cmVtb3RlcmVsLmF0dHR5cHMgPSBwYWxsb2MocmVt b3RlcmVsLT5uYXR0cyAqIHNpemVvZihPaWQpKTsKLQlmb3IgKGkgPSAwOyBpIDwgcmVtb3RlcmVs LT5uYXR0czsgaSsrKQorCWlmICghZW50cnktPnJlbW90ZXJlbC5yZW1vdGVpZCkKIAl7Ci0JCWVu dHJ5LT5yZW1vdGVyZWwuYXR0bmFtZXNbaV0gPSBwc3RyZHVwKHJlbW90ZXJlbC0+YXR0bmFtZXNb aV0pOwotCQllbnRyeS0+cmVtb3RlcmVsLmF0dHR5cHNbaV0gPSByZW1vdGVyZWwtPmF0dHR5cHNb aV07CisJCWludAlpOworCisJCS8qIFJlbW90ZSByZWxhdGlvbiBpcyBjb3BpZWQgYXMtaXMgZnJv bSB0aGUgcm9vdCBlbnRyeS4gKi8KKwkJZW50cnkgPSAmcGFydF9lbnRyeS0+cmVsbWFwZW50cnk7 CisJCWVudHJ5LT5yZW1vdGVyZWwucmVtb3RlaWQgPSByZW1vdGVyZWwtPnJlbW90ZWlkOworCQll bnRyeS0+cmVtb3RlcmVsLm5zcG5hbWUgPSBwc3RyZHVwKHJlbW90ZXJlbC0+bnNwbmFtZSk7CisJ CWVudHJ5LT5yZW1vdGVyZWwucmVsbmFtZSA9IHBzdHJkdXAocmVtb3RlcmVsLT5yZWxuYW1lKTsK KwkJZW50cnktPnJlbW90ZXJlbC5uYXR0cyA9IHJlbW90ZXJlbC0+bmF0dHM7CisJCWVudHJ5LT5y ZW1vdGVyZWwuYXR0bmFtZXMgPSBwYWxsb2MocmVtb3RlcmVsLT5uYXR0cyAqIHNpemVvZihjaGFy ICopKTsKKwkJZW50cnktPnJlbW90ZXJlbC5hdHR0eXBzID0gcGFsbG9jKHJlbW90ZXJlbC0+bmF0 dHMgKiBzaXplb2YoT2lkKSk7CisJCWZvciAoaSA9IDA7IGkgPCByZW1vdGVyZWwtPm5hdHRzOyBp KyspCisJCXsKKwkJCWVudHJ5LT5yZW1vdGVyZWwuYXR0bmFtZXNbaV0gPSBwc3RyZHVwKHJlbW90 ZXJlbC0+YXR0bmFtZXNbaV0pOworCQkJZW50cnktPnJlbW90ZXJlbC5hdHR0eXBzW2ldID0gcmVt b3RlcmVsLT5hdHR0eXBzW2ldOworCQl9CisJCWVudHJ5LT5yZW1vdGVyZWwucmVwbGlkZW50ID0g cmVtb3RlcmVsLT5yZXBsaWRlbnQ7CisJCWVudHJ5LT5yZW1vdGVyZWwuYXR0a2V5cyA9IGJtc19j b3B5KHJlbW90ZXJlbC0+YXR0a2V5cyk7CiAJfQotCWVudHJ5LT5yZW1vdGVyZWwucmVwbGlkZW50 ID0gcmVtb3RlcmVsLT5yZXBsaWRlbnQ7Ci0JZW50cnktPnJlbW90ZXJlbC5hdHRrZXlzID0gYm1z X2NvcHkocmVtb3RlcmVsLT5hdHRrZXlzKTsKIAogCWVudHJ5LT5sb2NhbHJlbCA9IHBhcnRyZWw7 CiAJZW50cnktPmxvY2FscmVsb2lkID0gcGFydE9pZDsKQEAgLTU5NCw3ICs2NDUsMTEgQEAgbG9n aWNhbHJlcF9wYXJ0aXRpb25fb3BlbihMb2dpY2FsUmVwUmVsTWFwRW50cnkgKnJvb3QsCiAJCXsK IAkJCUF0dHJOdW1iZXIJcm9vdF9hdHRubyA9IG1hcC0+YXR0bnVtc1thdHRub107CiAKLQkJCWVu dHJ5LT5hdHRybWFwLT5hdHRudW1zW2F0dG5vXSA9IGF0dHJtYXAtPmF0dG51bXNbcm9vdF9hdHRu byAtIDFdOworCQkJLyogMCBtZWFucyBpdCdzIGEgZHJvcHBlZCBhdHRyaWJ1dGUgKi8KKwkJCWlm IChyb290X2F0dG5vID09IDApCisJCQkJZW50cnktPmF0dHJtYXAtPmF0dG51bXNbYXR0bm9dID0g LTE7CisJCQllbHNlCisJCQkJZW50cnktPmF0dHJtYXAtPmF0dG51bXNbYXR0bm9dID0gYXR0cm1h cC0+YXR0bnVtc1tyb290X2F0dG5vIC0gMV07CiAJCX0KIAl9CiAJZWxzZQpAQCAtNjA1LDcgKzY2 MCw4IEBAIGxvZ2ljYWxyZXBfcGFydGl0aW9uX29wZW4oTG9naWNhbFJlcFJlbE1hcEVudHJ5ICpy b290LAogCQkJICAgYXR0cm1hcC0+bWFwbGVuICogc2l6ZW9mKEF0dHJOdW1iZXIpKTsKIAl9CiAK LQllbnRyeS0+dXBkYXRhYmxlID0gcm9vdC0+dXBkYXRhYmxlOworCS8qIENoZWNrIHRoYXQgcmVw bGljYSBpZGVudGl0eSBtYXRjaGVzLiAqLworCWxvZ2ljYWxyZXBfcmVsX21hcmtfdXBkYXRhYmxl KGVudHJ5KTsKIAogCWVudHJ5LT5sb2NhbHJlbHZhbGlkID0gdHJ1ZTsKIApkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYyBiL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKaW5kZXggM2Y4ZGVhMGZjMS4uNGUzYmNmN2MyOCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYworKysg Yi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCkBAIC0xODAzLDYgKzE4 MDMsMTEgQEAgYXBwbHlfaGFuZGxlX3JlbGF0aW9uKFN0cmluZ0luZm8gcykKIAogCXJlbCA9IGxv Z2ljYWxyZXBfcmVhZF9yZWwocyk7CiAJbG9naWNhbHJlcF9yZWxtYXBfdXBkYXRlKHJlbCk7CisK KwkvKgorCSAqIEFsc28gcmVzZXQgYWxsIGVudHJpZXMgaW4gdGhlIHBhcnRpdGlvbiBtYXAgdGhh dCByZWZlciB0byByZW1vdGVyZWwuCisJICovCisJbG9naWNhbHJlcF9wYXJ0bWFwX3Jlc2V0X3Jl bG1hcChyZWwpOwogfQogCiAvKgpAQCAtMjM1OSw2ICsyMzY0LDggQEAgYXBwbHlfaGFuZGxlX3R1 cGxlX3JvdXRpbmcoQXBwbHlFeGVjdXRpb25EYXRhICplZGF0YSwKIAlUdXBsZVRhYmxlU2xvdCAq cmVtb3Rlc2xvdF9wYXJ0OwogCVR1cGxlQ29udmVyc2lvbk1hcCAqbWFwOwogCU1lbW9yeUNvbnRl eHQgb2xkY3R4OworCUxvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqcGFydF9lbnRyeTsKKwlBdHRyTWFw CSAgICphdHRybWFwID0gTlVMTDsKIAogCS8qIE1vZGlmeVRhYmxlU3RhdGUgaXMgbmVlZGVkIGZv ciBFeGVjRmluZFBhcnRpdGlvbigpLiAqLwogCWVkYXRhLT5tdHN0YXRlID0gbXRzdGF0ZSA9IG1h a2VOb2RlKE1vZGlmeVRhYmxlU3RhdGUpOwpAQCAtMjM5MCw4ICsyMzk3LDExIEBAIGFwcGx5X2hh bmRsZV90dXBsZV9yb3V0aW5nKEFwcGx5RXhlY3V0aW9uRGF0YSAqZWRhdGEsCiAJCXJlbW90ZXNs b3RfcGFydCA9IHRhYmxlX3Nsb3RfY3JlYXRlKHBhcnRyZWwsICZlc3RhdGUtPmVzX3R1cGxlVGFi bGUpOwogCW1hcCA9IHBhcnRyZWxpbmZvLT5yaV9Sb290VG9QYXJ0aXRpb25NYXA7CiAJaWYgKG1h cCAhPSBOVUxMKQotCQlyZW1vdGVzbG90X3BhcnQgPSBleGVjdXRlX2F0dHJfbWFwX3Nsb3QobWFw LT5hdHRyTWFwLCByZW1vdGVzbG90LAorCXsKKwkJYXR0cm1hcCA9IG1hcC0+YXR0ck1hcDsKKwkJ cmVtb3Rlc2xvdF9wYXJ0ID0gZXhlY3V0ZV9hdHRyX21hcF9zbG90KGF0dHJtYXAsIHJlbW90ZXNs b3QsCiAJCQkJCQkJCQkJCQlyZW1vdGVzbG90X3BhcnQpOworCX0KIAllbHNlCiAJewogCQlyZW1v dGVzbG90X3BhcnQgPSBFeGVjQ29weVNsb3QocmVtb3Rlc2xvdF9wYXJ0LCByZW1vdGVzbG90KTsK QEAgLTIzOTksNiArMjQwOSwxNCBAQCBhcHBseV9oYW5kbGVfdHVwbGVfcm91dGluZyhBcHBseUV4 ZWN1dGlvbkRhdGEgKmVkYXRhLAogCX0KIAlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3R4KTsK IAorCS8qIENoZWNrIGlmIHdlIGNhbiBkbyB0aGUgdXBkYXRlIG9yIGRlbGV0ZSBvbiB0aGUgbGVh ZiBwYXJ0aXRpb24uICovCisJaWYob3BlcmF0aW9uID09IENNRF9VUERBVEUgfHwgb3BlcmF0aW9u ID09IENNRF9ERUxFVEUpCisJeworCQlwYXJ0X2VudHJ5ID0gbG9naWNhbHJlcF9wYXJ0aXRpb25f b3BlbihyZWxtYXBlbnRyeSwgcGFydHJlbCwKKwkJCQkJCQkJCQkJICAgYXR0cm1hcCk7CisJCWNo ZWNrX3JlbGF0aW9uX3VwZGF0YWJsZShwYXJ0X2VudHJ5KTsKKwl9CisKIAlzd2l0Y2ggKG9wZXJh dGlvbikKIAl7CiAJCWNhc2UgQ01EX0lOU0VSVDoKQEAgLTI0MjAsMTUgKzI0MzgsMTAgQEAgYXBw bHlfaGFuZGxlX3R1cGxlX3JvdXRpbmcoQXBwbHlFeGVjdXRpb25EYXRhICplZGF0YSwKIAkJCSAq IHN1aXRhYmxlIHBhcnRpdGlvbi4KIAkJCSAqLwogCQkJewotCQkJCUF0dHJNYXAgICAgKmF0dHJt YXAgPSBtYXAgPyBtYXAtPmF0dHJNYXAgOiBOVUxMOwotCQkJCUxvZ2ljYWxSZXBSZWxNYXBFbnRy eSAqcGFydF9lbnRyeTsKIAkJCQlUdXBsZVRhYmxlU2xvdCAqbG9jYWxzbG90OwogCQkJCVJlc3Vs dFJlbEluZm8gKnBhcnRyZWxpbmZvX25ldzsKIAkJCQlib29sCQlmb3VuZDsKIAotCQkJCXBhcnRf ZW50cnkgPSBsb2dpY2FscmVwX3BhcnRpdGlvbl9vcGVuKHJlbG1hcGVudHJ5LCBwYXJ0cmVsLAot CQkJCQkJCQkJCQkJCSAgIGF0dHJtYXApOwotCiAJCQkJLyogR2V0IHRoZSBtYXRjaGluZyBsb2Nh bCB0dXBsZSBmcm9tIHRoZSBwYXJ0aXRpb24uICovCiAJCQkJZm91bmQgPSBGaW5kUmVwbFR1cGxl SW5Mb2NhbFJlbChlc3RhdGUsIHBhcnRyZWwsCiAJCQkJCQkJCQkJCQkmcGFydF9lbnRyeS0+cmVt b3RlcmVsLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHJlbGF0 aW9uLmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscmVsYXRpb24uaAppbmRleCA3 YmY4Y2QyMmJkLi43OGNkN2U3N2Y1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlv bi9sb2dpY2FscmVsYXRpb24uaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2Fs cmVsYXRpb24uaApAQCAtMzgsNiArMzgsNyBAQCB0eXBlZGVmIHN0cnVjdCBMb2dpY2FsUmVwUmVs TWFwRW50cnkKIH0gTG9naWNhbFJlcFJlbE1hcEVudHJ5OwogCiBleHRlcm4gdm9pZCBsb2dpY2Fs cmVwX3JlbG1hcF91cGRhdGUoTG9naWNhbFJlcFJlbGF0aW9uICpyZW1vdGVyZWwpOworZXh0ZXJu IHZvaWQgbG9naWNhbHJlcF9wYXJ0bWFwX3Jlc2V0X3JlbG1hcChMb2dpY2FsUmVwUmVsYXRpb24g KnJlbW90ZXJlbCk7CiAKIGV4dGVybiBMb2dpY2FsUmVwUmVsTWFwRW50cnkgKmxvZ2ljYWxyZXBf cmVsX29wZW4oTG9naWNhbFJlcFJlbElkIHJlbW90ZWlkLAogCQkJCQkJCQkJCQkJICBMT0NLTU9E RSBsb2NrbW9kZSk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTNfcGFy dGl0aW9uLnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDEzX3BhcnRpdGlvbi5wbAppbmRl eCBlN2Y0YTk0ZjE5Li5kZjg5N2M4NmRiIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRp b24vdC8wMTNfcGFydGl0aW9uLnBsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxM19w YXJ0aXRpb24ucGwKQEAgLTgwMCw5ICs4MDAsODYgQEAgb2soICRsb2dmaWxlID1+CiAJICBxci9s b2dpY2FsIHJlcGxpY2F0aW9uIGRpZCBub3QgZmluZCByb3cgdG8gYmUgZGVsZXRlZCBpbiByZXBs aWNhdGlvbiB0YXJnZXQgcmVsYXRpb24gInRhYjJfMSIvLAogCSdkZWxldGUgdGFyZ2V0IHJvdyBp cyBtaXNzaW5nIGluIHRhYjJfMScpOwogCi0jIE5vIG5lZWQgZm9yIHRoaXMgdW50aWwgbW9yZSB0 ZXN0cyBhcmUgYWRkZWQuCi0jICRub2RlX3N1YnNjcmliZXIxLT5hcHBlbmRfY29uZigncG9zdGdy ZXNxbC5jb25mJywKLSMgCSJsb2dfbWluX21lc3NhZ2VzID0gd2FybmluZyIpOwotIyAkbm9kZV9z dWJzY3JpYmVyMS0+cmVsb2FkOworJG5vZGVfc3Vic2NyaWJlcjEtPmFwcGVuZF9jb25mKCdwb3N0 Z3Jlc3FsLmNvbmYnLAorCSJsb2dfbWluX21lc3NhZ2VzID0gd2FybmluZyIpOworJG5vZGVfc3Vi c2NyaWJlcjEtPnJlbG9hZDsKKworIyBUZXN0IHRoZSBjYXNlIHRoYXQgdGFyZ2V0IHRhYmxlIG9u IHN1YnNjcmliZXIgaXMgYSBwYXJ0aXRpb25lZCB0YWJsZSBhbmQKKyMgY2hlY2sgdGhhdCB0aGUg Y2hhbmdlcyBhcmUgcmVwbGljYXRlZCBjb3JyZWN0bHkgYWZ0ZXIgY2hhbmdpbmcgdGhlIHNjaGVt YSBvZgorIyB0YWJsZSBvbiBzdWJjcmliZXIuCisKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3Fs KAorCSdwb3N0Z3JlcycsIHF7CisJQ1JFQVRFIFRBQkxFIHRhYjUgKGEgaW50IE5PVCBOVUxMLCBi IGludCk7CisJQ1JFQVRFIFVOSVFVRSBJTkRFWCB0YWI1X2FfaWR4IE9OIHRhYjUgKGEpOworCUFM VEVSIFRBQkxFIHRhYjUgUkVQTElDQSBJREVOVElUWSBVU0lORyBJTkRFWCB0YWI1X2FfaWR4O30p OworCiskbm9kZV9zdWJzY3JpYmVyMi0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHF7CisJQ1JF QVRFIFRBQkxFIHRhYjUgKGEgaW50IE5PVCBOVUxMLCBiIGludCwgYyBpbnQpIFBBUlRJVElPTiBC WSBMSVNUIChhKTsKKwlDUkVBVEUgVEFCTEUgdGFiNV8xIFBBUlRJVElPTiBPRiB0YWI1IERFRkFV TFQ7CisJQ1JFQVRFIFVOSVFVRSBJTkRFWCB0YWI1X2FfaWR4IE9OIHRhYjUgKGEpOworCUFMVEVS IFRBQkxFIHRhYjUgUkVQTElDQSBJREVOVElUWSBVU0lORyBJTkRFWCB0YWI1X2FfaWR4OworCUFM VEVSIFRBQkxFIHRhYjVfMSBSRVBMSUNBIElERU5USVRZIFVTSU5HIElOREVYIHRhYjVfMV9hX2lk eDt9KTsKKworJG5vZGVfc3Vic2NyaWJlcjItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRF UiBTVUJTQ1JJUFRJT04gc3ViMiBSRUZSRVNIIFBVQkxJQ0FUSU9OIik7CisKKyRub2RlX3N1YnNj cmliZXIyLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsICRzeW5jZWRfcXVlcnkpCisgIG9y IGRpZSAiVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIHN1YnNjcmliZXIgdG8gc3luY2hyb25p emUgZGF0YSI7CisKKyMgTWFrZSBwYXJ0aXRpb24gbWFwIGNhY2hlCiskbm9kZV9wdWJsaXNoZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiSU5TRVJUIElOVE8gdGFiNSBWQUxVRVMgKDEsIDEpIik7 Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiVVBEQVRFIHRhYjUgU0VU IGEgPSAyIFdIRVJFIGEgPSAxIik7CisKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1 cCgnc3ViMicpOworCiskcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlcjItPnNhZmVfcHNxbCgncG9z dGdyZXMnLAorCSJTRUxFQ1QgYSwgYiBGUk9NIHRhYjUgT1JERVIgQlkgMSIpOworaXMoJHJlc3Vs dCwgcXEoMnwxKSwgJ3VwZGF0ZXMgb2YgdGFiNSByZXBsaWNhdGVkIGNvcnJlY3RseScpOworCisj IENoYW5nZSB0aGUgY29sdW1uIG9yZGVyIG9mIHBhcnRpdGlvbiBvbiBzdWJzY3JpYmVyCiskbm9k ZV9zdWJzY3JpYmVyMi0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHF7CisJQUxURVIgVEFCTEUg dGFiNSBERVRBQ0ggUEFSVElUSU9OIHRhYjVfMTsKKwlBTFRFUiBUQUJMRSB0YWI1XzEgRFJPUCBD T0xVTU4gYjsKKwlBTFRFUiBUQUJMRSB0YWI1XzEgQUREIENPTFVNTiBiIGludDsKKwlBTFRFUiBU QUJMRSB0YWI1IEFUVEFDSCBQQVJUSVRJT04gdGFiNV8xIERFRkFVTFR9KTsKKworJG5vZGVfcHVi bGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlVQREFURSB0YWI1IFNFVCBhID0gMyBXSEVS RSBhID0gMiIpOworCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJ3N1YjInKTsK KworJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXIyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwki U0VMRUNUIGEsIGIsIGMgRlJPTSB0YWI1IE9SREVSIEJZIDEiKTsKK2lzKCRyZXN1bHQsIHFxKDN8 MXwpLCAndXBkYXRlcyBvZiB0YWI1IHJlcGxpY2F0ZWQgY29ycmVjdGx5IGFmdGVyIGFsdGVyaW5n IHRhYmxlIG9uIHN1YnNjcmliZXInKTsKKworIyBDaGFuZ2UgdGhlIGNvbHVtbiBvcmRlciBvZiB0 YWJsZSBvbiBwdWJsaXNoZXIKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3Jl cycsIHF7CisJQUxURVIgVEFCTEUgdGFiNSBEUk9QIENPTFVNTiBiLCBBREQgQ09MVU1OIGMgSU5U OworCUFMVEVSIFRBQkxFIHRhYjUgQUREIENPTFVNTiBiIElOVDt9KTsKKworJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlVQREFURSB0YWI1IFNFVCBjID0gMSBXSEVSRSBh ID0gMyIpOworCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJ3N1YjInKTsKKwor JHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXIyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VM RUNUIGEsIGIsIGMgRlJPTSB0YWI1IE9SREVSIEJZIDEiKTsKK2lzKCRyZXN1bHQsIHFxKDN8fDEp LCAndXBkYXRlcyBvZiB0YWI1IHJlcGxpY2F0ZWQgY29ycmVjdGx5IGFmdGVyIGFsdGVyaW5nIHRh YmxlIG9uIHB1Ymxpc2hlcicpOworCisjIEFsdGVyIFJFUExJQ0EgSURFTlRJVFkgb24gc3Vic2Ny aWJlci4KKyMgTm8gUkVQTElDQSBJREVOVElUWSBpbiB0aGUgcGFydGl0aW9uZWQgdGFibGUgb24g c3Vic2NyaWJlciwgYnV0IHdoYXQgd2UgY2hlY2sKKyMgaXMgdGhlIHBhcnRpdGlvbiwgc28gaXQg d29ya3MgZmluZS4KKyRub2RlX3N1YnNjcmliZXIyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwki QUxURVIgVEFCTEUgdGFiNSBSRVBMSUNBIElERU5USVRZIE5PVEhJTkciKTsKKworJG5vZGVfcHVi bGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlVQREFURSB0YWI1IFNFVCBhID0gNCBXSEVS RSBhID0gMyIpOworCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJ3N1YjInKTsK KworJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXIyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwki U0VMRUNUIGEsIGIsIGMgRlJPTSB0YWI1XzEgT1JERVIgQlkgMSIpOworaXMoJHJlc3VsdCwgcXEo NHx8MSksICd1cGRhdGVzIG9mIHRhYjUgcmVwbGljYXRlZCBjb3JyZWN0bHknKTsKIAogZG9uZV90 ZXN0aW5nKCk7Ci0tIAoyLjIzLjAud2luZG93cy4xCgo= --_006_OS3PR01MB62756BD9482EB6BB1CA4CD4D9EAA9OS3PR01MB6275jpnp_ Content-Type: application/octet-stream; name="v10-0004-Add-some-checks-before-using-apply-background-wo.patch" Content-Description: v10-0004-Add-some-checks-before-using-apply-background-wo.patch Content-Disposition: attachment; filename="v10-0004-Add-some-checks-before-using-apply-background-wo.patch"; size=29814; creation-date="Tue, 14 Jun 2022 03:35:00 GMT"; modification-date="Tue, 14 Jun 2022 03:37:03 GMT" Content-Transfer-Encoding: base64 RnJvbSAxYTU1YTRlMGJiMTc4OWE5MTczMmE4NzIwMTVmMTc0OTMwMzJhMzNmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiB3YW5ndyA8d2FuZ3cuZm5zdEBmdWppdHN1LmNvbT4KRGF0ZTog VHVlLCAxNCBKdW4gMjAyMiAxMToyMzo1MiArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjEwIDQvNV0g QWRkIHNvbWUgY2hlY2tzIGJlZm9yZSB1c2luZyBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlcgogdG8g YXBwbHkgY2hhbmdlcy4KCklmIGFueSBvZiB0aGUgZm9sbG93aW5nIGNoZWNrcyBhcmUgdmlvbGF0 ZWQsIGFuIGVycm9yIHdpbGwgYmUgcmVwb3J0ZWQuCjEuIFRoZSB1bmlxdWUgY29sdW1ucyBiZXR3 ZWVuIHB1Ymxpc2hlciBhbmQgc3Vic2NyaWJlciBhcmUgZGlmZmVyZW5jZS4KMi4gVGhlcmUgaXMg YW55IG5vbi1pbW11dGFibGUgZnVuY3Rpb24gcHJlc2VudCBpbiBleHByZXNzaW9uIGluCnN1YnNj cmliZXIncyByZWxhdGlvbi4gQ2hlY2sgZnJvbSB0aGUgZm9sbG93aW5nIDMgaXRlbXM6CiAgIGEu IFRoZSBmdW5jdGlvbiBpbiB0cmlnZ2VyczsKICAgYi4gQ29sdW1uIGRlZmF1bHQgdmFsdWUgZXhw cmVzc2lvbnMgYW5kIGRvbWFpbiBjb25zdHJhaW50czsKICAgYy4gQ29uc3RyYWludCBleHByZXNz aW9ucy4KLS0tCiBkb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbCAgICAg fCAgIDQgKwogLi4uL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHliZ3dyb2tlci5jICAgICAgIHwg IDQ1ICsrKysKIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcHJvdG8uYyAgICAgICB8 ICA2MiArKysrLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZWxhdGlvbi5jICAg IHwgMTk4ICsrKysrKysrKysrKysrKwogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90 YWJsZXN5bmMuYyAgIHwgICAxICsKIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29y a2VyLmMgICAgICB8ICAxNSArLQogc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvdHlwY2FjaGUuYyAg ICAgICAgICAgIHwgIDE3ICsrCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscHJvdG8u aCAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHJlbGF0aW9u LmggICAgIHwgIDE1ICsrCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwu aCAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvdXRpbHMvdHlwY2FjaGUuaCAgICAgICAgICAgICAg ICAgIHwgICAyICsKIC4uLi9zdWJzY3JpcHRpb24vdC8wMjJfdHdvcGhhc2VfY2FzY2FkZS5wbCAg ICB8ICAgNyArCiAuLi4vc3Vic2NyaXB0aW9uL3QvMDMyX3N0cmVhbWluZ19hcHBseS5wbCAgICAg fCAyMzggKysrKysrKysrKysrKysrKysrCiAxMyBmaWxlcyBjaGFuZ2VkLCA1OTggaW5zZXJ0aW9u cygrKSwgOCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9zdWJzY3Jp cHRpb24vdC8wMzJfc3RyZWFtaW5nX2FwcGx5LnBsCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21s L3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9z dWJzY3JpcHRpb24uc2dtbAppbmRleCBkNGNhYWUwMjIyLi44ZGUxYTIzY2U0IDEwMDY0NAotLS0g YS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbAorKysgYi9kb2Mvc3Jj L3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbApAQCAtMjQwLDYgKzI0MCwxMCBAQCBD UkVBVEUgU1VCU0NSSVBUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5zdWJzY3Jp cHRpb25fbmFtZTwvcmVwbGFjZWFibAogICAgICAgICAgIHRoZSB0cmFuc2FjdGlvbiBpcyBjb21t aXR0ZWQuIE5vdGUgdGhhdCBpZiBhbiBlcnJvciBoYXBwZW5zIHdoZW4KICAgICAgICAgICBhcHBs eWluZyBjaGFuZ2VzIGluIGEgYmFja2dyb3VuZCB3b3JrZXIsIGl0IG1pZ2h0IG5vdCByZXBvcnQg dGhlCiAgICAgICAgICAgZmluaXNoIExTTiBvZiB0aGUgcmVtb3RlIHRyYW5zYWN0aW9uIGluIHRo ZSBzZXJ2ZXIgbG9nLgorICAgICAgICAgIFRvIHJ1biBpbiB0aGlzIG1vZGUsIHRoZXJlIGFyZSBm b2xsb3dpbmcgdHdvIHJlcXVpcmVtZW50cy4gVGhlIGZpcnN0CisgICAgICAgICAgaXMgdGhhdCB0 aGUgdW5pcXVlIGNvbHVtbiBzaG91bGQgYmUgdGhlIHNhbWUgYmV0d2VlbiBwdWJsaXNoZXIgYW5k CisgICAgICAgICAgc3Vic2NyaWJlcjsgdGhlIHNlY29uZCBpcyB0aGF0IHRoZXJlIHNob3VsZCBu b3QgYmUgYW55IG5vbi1pbW11dGFibGUKKyAgICAgICAgICBmdW5jdGlvbiBpbiBzdWJzY3JpYmVy LXNpZGUgcmVwbGljYXRlZCB0YWJsZS4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgPC9saXN0 aXRlbT4KICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHliZ3dyb2tlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vbG9naWNhbC9hcHBseWJnd3Jva2VyLmMKaW5kZXggMWY1MmIxNTVkNy4uN2QzYzYxYzJlOSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseWJnd3Jva2Vy LmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseWJnd3Jva2VyLmMK QEAgLTc2MywzICs3NjMsNDggQEAgYXBwbHlfYmd3b3JrZXJfc3VieGFjdF9pbmZvX2FkZChUcmFu c2FjdGlvbklkIGN1cnJlbnRfeGlkKQogCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3R4KTsK IAl9CiB9CisKKy8qCisgKiBDaGVjayBpZiBjaGFuZ2VzIG9uIHRoaXMgbG9naWNhbCByZXBsaWNh dGlvbiByZWxhdGlvbiBjYW4gYmUgYXBwbGllZCBieQorICogYXBwbHkgYmFja2dyb3VuZCB3b3Jr ZXIuCisgKgorICogQWx0aG91Z2ggd2UgbWFpbnRhaW5zIHRoZSBjb21taXQgb3JkZXIgYnkgYWxs b3dpbmcgb25seSBvbmUgcHJvY2VzcyB0bworICogY29tbWl0IGF0IGEgdGltZSwgb3VyIGFjY2Vz cyBvcmRlciB0byB0aGUgcmVsYXRpb24gaGFzIGNoYW5nZWQuCisgKiBUaGlzIGNvdWxkIGNhdXNl IHVuZXhwZWN0ZWQgcHJvYmxlbXMgaWYgdGhlIHVuaXF1ZSBjb2x1bW4gb24gdGhlIHJlcGxpY2F0 ZWQKKyAqIHRhYmxlIGlzIGluY29uc2lzdGVudCB3aXRoIHRoZSBwdWJsaXNoZXItc2lkZSBvciBj b250YWlucyBub24taW1tdXRhYmxlCisgKiBmdW5jdGlvbnMgd2hlbiBhcHBseWluZyB0cmFuc2Fj dGlvbnMgaW4gdGhlIGFwcGx5IGJhY2tncm91bmQgd29ya2VyLgorICovCit2b2lkCithcHBseV9i Z3dvcmtlcl9yZWxhdGlvbl9jaGVjayhMb2dpY2FsUmVwUmVsTWFwRW50cnkgKnJlbCkKK3sKKwkv KiBDaGVjayBvbmx5IHdlIGFyZSBpbiBhcHBseSBiZ3dvcmtlci4gKi8KKwlpZiAoIWFtX2FwcGx5 X2Jnd29ya2VyKCkpCisJCXJldHVybjsKKworCS8qCisJICogSWYgaXQgaXMgYSBwYXJ0aXRpb25l ZCB0YWJsZSwgd2UgZG8gbm90IGNoZWNrIGl0LCB3ZSB3aWxsIGNoZWNrIGl0cworCSAqIHBhcnRp dGlvbiBsYXRlci4KKwkgKi8KKwlpZiAocmVsLT5sb2NhbHJlbC0+cmRfcmVsLT5yZWxraW5kID09 IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUpCisJCXJldHVybjsKKworCS8qCisJICogSWYgYW55 IHVuaXF1ZSBpbmRleCBleGlzdCwgY2hlY2sgdGhhdCB0aGV5IGFyZSBzYW1lIGFzIHJlbW90ZXJl bC4KKwkgKi8KKwlpZiAoIXJlbC0+c2FtZXVuaXF1ZSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQko ZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJIGVycm1zZygiY2Fu bm90IHJlcGxpY2F0ZSByZWxhdGlvbiB3aXRoIGRpZmZlcmVudCB1bmlxdWUgaW5kZXgiKSwKKwkJ CQkgZXJyaGludCgiUGxlYXNlIGNoYW5nZSB0aGUgc3RyZWFtaW5nIG9wdGlvbiB0byAnb24nIGlu c3RlYWQgb2YgJ2FwcGx5Jy4iKSkpOworCisJLyoKKwkgKiBDaGVjayBpZiB0aGVyZSBpcyBhbnkg bm9uLWltbXV0YWJsZSBmdW5jdGlvbiBwcmVzZW50IGluIGV4cHJlc3Npb24gaW4KKwkgKiB0aGlz IHJlbGF0aW9uLgorCSAqLworCWlmIChyZWwtPnZvbGF0aWxpdHkgPT0gRlVOQ1RJT05fTk9OSU1N VVRBQkxFKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9O T1RfU1VQUE9SVEVEKSwKKwkJCQkgZXJybXNnKCJjYW5ub3QgcmVwbGljYXRlIHJlbGF0aW9uLiBU aGVyZSBpcyBhdCBsZWFzdCBvbmUgbm9uLWltbXV0YWJsZSBmdW5jdGlvbiIpLAorCQkJCSBlcnJo aW50KCJQbGVhc2UgY2hhbmdlIHRoZSBzdHJlYW1pbmcgb3B0aW9uIHRvICdvbicgaW5zdGVhZCBv ZiAnYXBwbHknLiIpKSk7CisKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvcHJvdG8uYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcHJvdG8u YwppbmRleCBhODg4MDM4ZWI0Li42YWYzMzAyMjcwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL3Byb3RvLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC9wcm90by5jCkBAIC0yMyw3ICsyMyw4IEBACiAvKgogICogUHJvdG9jb2wgbWVzc2Fn ZSBmbGFncy4KICAqLwotI2RlZmluZSBMT0dJQ0FMUkVQX0lTX1JFUExJQ0FfSURFTlRJVFkgMQor I2RlZmluZSBMT0dJQ0FMUkVQX0lTX1JFUExJQ0FfSURFTlRJVFkJCTB4MDAwMQorI2RlZmluZSBM T0dJQ0FMUkVQX0lTX1VOSVFVRQkJCQkweDAwMDIKIAogI2RlZmluZSBNRVNTQUdFX1RSQU5TQUNU SU9OQUwgKDE8PDApCiAjZGVmaW5lIFRSVU5DQVRFX0NBU0NBREUJCSgxPDwwKQpAQCAtOTMzLDEx ICs5MzQsNTUgQEAgbG9naWNhbHJlcF93cml0ZV9hdHRycyhTdHJpbmdJbmZvIG91dCwgUmVsYXRp b24gcmVsLCBCaXRtYXBzZXQgKmNvbHVtbnMpCiAJVHVwbGVEZXNjCWRlc2M7CiAJaW50CQkJaTsK IAl1aW50MTYJCW5saXZlYXR0cyA9IDA7Ci0JQml0bWFwc2V0ICAqaWRhdHRycyA9IE5VTEw7CisJ Qml0bWFwc2V0ICAqaWRhdHRycyA9IE5VTEwsCisJCQkgICAqYXR0dW5pcXVlID0gTlVMTDsKIAli b29sCQlyZXBsaWRlbnRmdWxsOwogCiAJZGVzYyA9IFJlbGF0aW9uR2V0RGVzY3IocmVsKTsKIAor CWlmIChyZWwtPnJkX3JlbC0+cmVsaGFzaW5kZXgpCisJeworCQlMaXN0CSAgICppbmRleG9pZGxp c3QgPSBSZWxhdGlvbkdldEluZGV4TGlzdChyZWwpOworCQlMaXN0Q2VsbCAgICppbmRleG9pZHNj YW47CisKKwkJZm9yZWFjaChpbmRleG9pZHNjYW4sIGluZGV4b2lkbGlzdCkKKwkJeworCQkJT2lk CQkJaW5kZXhvaWQgPSBsZmlyc3Rfb2lkKGluZGV4b2lkc2Nhbik7CisJCQlSZWxhdGlvbglpbmRl eFJlbDsKKworCQkJLyogTG9vayB1cCB0aGUgZGVzY3JpcHRpb24gZm9yIGluZGV4ICovCisJCQlp bmRleFJlbCA9IFJlbGF0aW9uSWRHZXRSZWxhdGlvbihpbmRleG9pZCk7CisKKwkJCWlmICghUmVs YXRpb25Jc1ZhbGlkKGluZGV4UmVsKSkKKwkJCQllbG9nKEVSUk9SLCAiY291bGQgbm90IG9wZW4g cmVsYXRpb24gd2l0aCBPSUQgJXUiLCBpbmRleG9pZCk7CisKKwkJCWlmIChpbmRleFJlbC0+cmRf aW5kZXgtPmluZGlzdW5pcXVlKQorCQkJeworCQkJCWludAkJCWk7CisKKwkJCQkvKiBBZGQgcmVm ZXJlbmNlZCBhdHRyaWJ1dGVzIHRvIGlkaW5kZXhhdHRycyAqLworCQkJCWZvciAoaSA9IDA7IGkg PCBpbmRleFJlbC0+cmRfaW5kZXgtPmluZG5hdHRzOyBpKyspCisJCQkJeworCQkJCQlpbnQJCQlh dHRybnVtID0gaW5kZXhSZWwtPnJkX2luZGV4LT5pbmRrZXkudmFsdWVzW2ldOworCisJCQkJCS8q CisJCQkJCSAqIFdlIGRvbid0IGluY2x1ZGUgbm9uLWtleSBjb2x1bW5zIGludG8gaWRpbmRleGF0 dHJzCisJCQkJCSAqIGJpdG1hcHMuIFNlZSBSZWxhdGlvbkdldEluZGV4QXR0ckJpdG1hcC4KKwkJ CQkJICovCisJCQkJCWlmIChhdHRybnVtICE9IDApCisJCQkJCXsKKwkJCQkJCWlmIChpIDwgaW5k ZXhSZWwtPnJkX2luZGV4LT5pbmRua2V5YXR0cyAmJgorCQkJCQkJCSFibXNfaXNfbWVtYmVyKGF0 dHJudW0gLSBGaXJzdExvd0ludmFsaWRIZWFwQXR0cmlidXRlTnVtYmVyLCBhdHR1bmlxdWUpKQor CQkJCQkJCWF0dHVuaXF1ZSA9IGJtc19hZGRfbWVtYmVyKGF0dHVuaXF1ZSwKKwkJCQkJCQkJCQkJ CQkgICBhdHRybnVtIC0gRmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0ZU51bWJlcik7CisJCQkJ CX0KKwkJCQl9CisJCQl9CisJCQlSZWxhdGlvbkNsb3NlKGluZGV4UmVsKTsKKwkJfQorCQlsaXN0 X2ZyZWUoaW5kZXhvaWRsaXN0KTsKKwl9CisKIAkvKiBzZW5kIG51bWJlciBvZiBsaXZlIGF0dHJp YnV0ZXMgKi8KIAlmb3IgKGkgPSAwOyBpIDwgZGVzYy0+bmF0dHM7IGkrKykKIAl7CkBAIC05NzYs NiArMTAyMSwxMCBAQCBsb2dpY2FscmVwX3dyaXRlX2F0dHJzKFN0cmluZ0luZm8gb3V0LCBSZWxh dGlvbiByZWwsIEJpdG1hcHNldCAqY29sdW1ucykKIAkJCQkJCSAgaWRhdHRycykpCiAJCQlmbGFn cyB8PSBMT0dJQ0FMUkVQX0lTX1JFUExJQ0FfSURFTlRJVFk7CiAKKwkJaWYgKGJtc19pc19tZW1i ZXIoYXR0LT5hdHRudW0gLSBGaXJzdExvd0ludmFsaWRIZWFwQXR0cmlidXRlTnVtYmVyLAorCQkJ CQkJICBhdHR1bmlxdWUpKQorCQkJZmxhZ3MgfD0gTE9HSUNBTFJFUF9JU19VTklRVUU7CisKIAkJ cHFfc2VuZGJ5dGUob3V0LCBmbGFncyk7CiAKIAkJLyogYXR0cmlidXRlIG5hbWUgKi8KQEAgLTEw MDEsNyArMTA1MCw4IEBAIGxvZ2ljYWxyZXBfcmVhZF9hdHRycyhTdHJpbmdJbmZvIGluLCBMb2dp Y2FsUmVwUmVsYXRpb24gKnJlbCkKIAlpbnQJCQluYXR0czsKIAljaGFyCSAgKiphdHRuYW1lczsK IAlPaWQJCSAgICphdHR0eXBzOwotCUJpdG1hcHNldCAgKmF0dGtleXMgPSBOVUxMOworCUJpdG1h cHNldCAgKmF0dGtleXMgPSBOVUxMLAorCQkJICAgKmF0dHVuaXF1ZSA9IE5VTEw7CiAKIAluYXR0 cyA9IHBxX2dldG1zZ2ludChpbiwgMik7CiAJYXR0bmFtZXMgPSBwYWxsb2MobmF0dHMgKiBzaXpl b2YoY2hhciAqKSk7CkBAIC0xMDEyLDExICsxMDYyLDE0IEBAIGxvZ2ljYWxyZXBfcmVhZF9hdHRy cyhTdHJpbmdJbmZvIGluLCBMb2dpY2FsUmVwUmVsYXRpb24gKnJlbCkKIAl7CiAJCXVpbnQ4CQlm bGFnczsKIAotCQkvKiBDaGVjayBmb3IgcmVwbGljYSBpZGVudGl0eSBjb2x1bW4gKi8KKwkJLyog Q2hlY2sgZm9yIHJlcGxpY2EgaWRlbnRpdHkgYW5kIHVuaXF1ZSBjb2x1bW4gKi8KIAkJZmxhZ3Mg PSBwcV9nZXRtc2dieXRlKGluKTsKIAkJaWYgKGZsYWdzICYgTE9HSUNBTFJFUF9JU19SRVBMSUNB X0lERU5USVRZKQogCQkJYXR0a2V5cyA9IGJtc19hZGRfbWVtYmVyKGF0dGtleXMsIGkpOwogCisJ CWlmIChmbGFncyAmIExPR0lDQUxSRVBfSVNfVU5JUVVFKQorCQkJYXR0dW5pcXVlID0gYm1zX2Fk ZF9tZW1iZXIoYXR0dW5pcXVlLCBpKTsKKwogCQkvKiBhdHRyaWJ1dGUgbmFtZSAqLwogCQlhdHRu YW1lc1tpXSA9IHBzdHJkdXAocHFfZ2V0bXNnc3RyaW5nKGluKSk7CiAKQEAgLTEwMzAsNiArMTA4 Myw3IEBAIGxvZ2ljYWxyZXBfcmVhZF9hdHRycyhTdHJpbmdJbmZvIGluLCBMb2dpY2FsUmVwUmVs YXRpb24gKnJlbCkKIAlyZWwtPmF0dG5hbWVzID0gYXR0bmFtZXM7CiAJcmVsLT5hdHR0eXBzID0g YXR0dHlwczsKIAlyZWwtPmF0dGtleXMgPSBhdHRrZXlzOworCXJlbC0+YXR0dW5pcXVlID0gYXR0 dW5pcXVlOwogCXJlbC0+bmF0dHMgPSBuYXR0czsKIH0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbG9naWNhbC9yZWxhdGlvbi5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vbG9naWNhbC9yZWxhdGlvbi5jCmluZGV4IGYzNDIzOTYzMTAuLjAzZmJjNjEyMDkgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVsYXRpb24uYworKysgYi9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3JlbGF0aW9uLmMKQEAgLTE5LDEyICsxOSwx OSBAQAogCiAjaW5jbHVkZSAiYWNjZXNzL3RhYmxlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9uYW1l c3BhY2UuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3Byb2MuaCIKICNpbmNsdWRlICJjYXRhbG9n L3BnX3N1YnNjcmlwdGlvbl9yZWwuaCIKKyNpbmNsdWRlICJjb21tYW5kcy90cmlnZ2VyLmgiCiAj aW5jbHVkZSAiZXhlY3V0b3IvZXhlY3V0b3IuaCIKICNpbmNsdWRlICJub2Rlcy9tYWtlZnVuY3Mu aCIKKyNpbmNsdWRlICJvcHRpbWl6ZXIvb3B0aW1pemVyLmgiCiAjaW5jbHVkZSAicmVwbGljYXRp b24vbG9naWNhbHJlbGF0aW9uLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vd29ya2VyX2ludGVy bmFsLmgiCisjaW5jbHVkZSAicmV3cml0ZS9yZXdyaXRlSGFuZGxlci5oIgogI2luY2x1ZGUgInV0 aWxzL2ludmFsLmgiCisjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCisjaW5jbHVkZSAidXRp bHMvc3lzY2FjaGUuaCIKKyNpbmNsdWRlICJ1dGlscy90eXBjYWNoZS5oIgogCiAKIHN0YXRpYyBN ZW1vcnlDb250ZXh0IExvZ2ljYWxSZXBSZWxNYXBDb250ZXh0ID0gTlVMTDsKQEAgLTkxLDYgKzk4 LDIzIEBAIGxvZ2ljYWxyZXBfcmVsbWFwX2ludmFsaWRhdGVfY2IoRGF0dW0gYXJnLCBPaWQgcmVs b2lkKQogCX0KIH0KIAorLyoKKyAqIFJlc2V0IHRoZSBmbGFnIHZvbGF0aWxpdHkgb2YgYWxsIGV4 aXN0aW5nIGVudHJ5IGluIHRoZSByZWxhdGlvbiBtYXAgY2FjaGUuCisgKi8KK3N0YXRpYyB2b2lk Citsb2dpY2FscmVwX3JlbG1hcF9yZXNldF92b2xhdGlsaXR5X2NiKERhdHVtIGFyZywgaW50IGNh Y2hlaWQsIHVpbnQzMiBoYXNodmFsdWUpCit7CisJSEFTSF9TRVFfU1RBVFVTIGhhc2hfc2VxOwor CUxvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqZW50cnk7CisKKwlpZiAoTG9naWNhbFJlcFJlbE1hcCA9 PSBOVUxMKQorCQlyZXR1cm47CisKKwloYXNoX3NlcV9pbml0KCZoYXNoX3NlcSwgTG9naWNhbFJl cFJlbE1hcCk7CisJd2hpbGUgKChlbnRyeSA9IGhhc2hfc2VxX3NlYXJjaCgmaGFzaF9zZXEpKSAh PSBOVUxMKQorCQllbnRyeS0+dm9sYXRpbGl0eSA9IEZVTkNUSU9OX1VOS05PV047Cit9CisKIC8q CiAgKiBJbml0aWFsaXplIHRoZSByZWxhdGlvbiBtYXAgY2FjaGUuCiAgKi8KQEAgLTExNiw2ICsx NDAsOSBAQCBsb2dpY2FscmVwX3JlbG1hcF9pbml0KHZvaWQpCiAJLyogV2F0Y2ggZm9yIGludmFs aWRhdGlvbiBldmVudHMuICovCiAJQ2FjaGVSZWdpc3RlclJlbGNhY2hlQ2FsbGJhY2sobG9naWNh bHJlcF9yZWxtYXBfaW52YWxpZGF0ZV9jYiwKIAkJCQkJCQkJICAoRGF0dW0pIDApOworCUNhY2hl UmVnaXN0ZXJTeXNjYWNoZUNhbGxiYWNrKFBST0NPSUQsCisJCQkJCQkJCSAgbG9naWNhbHJlcF9y ZWxtYXBfcmVzZXRfdm9sYXRpbGl0eV9jYiwKKwkJCQkJCQkJICAoRGF0dW0pIDApOwogfQogCiAv KgpAQCAtMTQyLDYgKzE2OSw3IEBAIGxvZ2ljYWxyZXBfcmVsbWFwX2ZyZWVfZW50cnkoTG9naWNh bFJlcFJlbE1hcEVudHJ5ICplbnRyeSkKIAkJcGZyZWUocmVtb3RlcmVsLT5hdHR0eXBzKTsKIAl9 CiAJYm1zX2ZyZWUocmVtb3RlcmVsLT5hdHRrZXlzKTsKKwlibXNfZnJlZShyZW1vdGVyZWwtPmF0 dHVuaXF1ZSk7CiAKIAlpZiAoZW50cnktPmF0dHJtYXApCiAJCXBmcmVlKGVudHJ5LT5hdHRybWFw KTsKQEAgLTE5MCw2ICsyMTgsNyBAQCBsb2dpY2FscmVwX3JlbG1hcF91cGRhdGUoTG9naWNhbFJl cFJlbGF0aW9uICpyZW1vdGVyZWwpCiAJfQogCWVudHJ5LT5yZW1vdGVyZWwucmVwbGlkZW50ID0g cmVtb3RlcmVsLT5yZXBsaWRlbnQ7CiAJZW50cnktPnJlbW90ZXJlbC5hdHRrZXlzID0gYm1zX2Nv cHkocmVtb3RlcmVsLT5hdHRrZXlzKTsKKwllbnRyeS0+cmVtb3RlcmVsLmF0dHVuaXF1ZSA9IGJt c19jb3B5KHJlbW90ZXJlbC0+YXR0dW5pcXVlKTsKIAlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xk Y3R4KTsKIH0KIApAQCAtMzE1LDYgKzM0NCwxNjIgQEAgbG9naWNhbHJlcF9yZWxfbWFya191cGRh dGFibGUoTG9naWNhbFJlcFJlbE1hcEVudHJ5ICplbnRyeSkKIAl9CiB9CiAKKy8qCisgKiBIZWxw ZXIgZnVuY3Rpb24gdG8gbWFyayBmbGFncyBmb3IgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIgd2hl biBvcGVuaW5nIHRoZQorICogbG9jYWwgdGFibGUuCisgKi8KK3N0YXRpYyB2b2lkCitsb2dpY2Fs cmVwX3JlbF9tYXJrX2FwcGx5X2Jnd29ya2VyKExvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqZW50cnkp Cit7CisJQml0bWFwc2V0ICAgKnVrZXk7CisJaW50CQkJaTsKKwlUdXBsZURlc2MJdHVwZGVzYzsK KwlpbnQJCQlhdHRudW07CisJTGlzdAkgICAqZmtleXMgPSBOSUw7CisKKwkvKgorCSAqIENoZWNr IHdoZXRoZXIgdGhlIHVuaXF1ZSBpbmRleCBvZiBwdWJsaXNoZXIgYW5kIHN1YnNjcmliZXIgYXJl CisJICogY29uc2lzdGVudC4KKwkgKi8KKwllbnRyeS0+c2FtZXVuaXF1ZSA9IHRydWU7CisJdWtl eSA9IFJlbGF0aW9uR2V0SW5kZXhBdHRyQml0bWFwKGVudHJ5LT5sb2NhbHJlbCwKKwkJCQkJCQkJ CSAgSU5ERVhfQVRUUl9CSVRNQVBfS0VZKTsKKworCWlmICh1a2V5KQorCXsKKwkJaSA9IC0xOwor CQl3aGlsZSAoKGkgPSBibXNfbmV4dF9tZW1iZXIodWtleSwgaSkpID49IDApCisJCXsKKwkJCWlu dAkJCWF0dG51bSA9IGkgKyBGaXJzdExvd0ludmFsaWRIZWFwQXR0cmlidXRlTnVtYmVyOworCisJ CQlhdHRudW0gPSBBdHRyTnVtYmVyR2V0QXR0ck9mZnNldChhdHRudW0pOworCisJCQlpZiAoZW50 cnktPmF0dHJtYXAtPmF0dG51bXNbYXR0bnVtXSA8IDAgfHwKKwkJCQkhYm1zX2lzX21lbWJlcihl bnRyeS0+YXR0cm1hcC0+YXR0bnVtc1thdHRudW1dLCBlbnRyeS0+cmVtb3RlcmVsLmF0dHVuaXF1 ZSkpCisJCQl7CisJCQkJZW50cnktPnNhbWV1bmlxdWUgPSBmYWxzZTsKKwkJCQlicmVhazsKKwkJ CX0KKwkJfQorCX0KKworCS8qCisJICogQ2hlY2sgd2hldGhlciB0aGVyZSBpcyBhbnkgbm9uLWlt bXV0YWJsZSBmdW5jdGlvbiBpbiB0aGUgbG9jYWwgdGFibGUuCisJICoKKwkgKiBhLiBUaGUgZnVu Y3Rpb24gaW4gdHJpZ2dlcnM7CisJICogYi4gQ29sdW1uIGRlZmF1bHQgdmFsdWUgZXhwcmVzc2lv bnMgYW5kIGRvbWFpbiBjb25zdHJhaW50czsKKwkgKiBjLiBDb25zdHJhaW50IGV4cHJlc3Npb25z OworCSAqIGQuIEZvcmVpZ24ga2V5cy4KKwkgKi8KKwlpZiAoZW50cnktPnZvbGF0aWxpdHkgIT0g RlVOQ1RJT05fVU5LTk9XTikKKwkJcmV0dXJuOworCisJLyogSW5pdGlhbGl6ZSB0aGUgZmxhZy4g Ki8KKwllbnRyeS0+dm9sYXRpbGl0eSA9IEZVTkNUSU9OX0lNTVVUQUJMRTsKKworCS8qIENoZWNr IHRoZSB0cmlnZ2VyIGZ1bmN0aW9ucy4gKi8KKwlpZiAoZW50cnktPmxvY2FscmVsLT50cmlnZGVz YyAhPSBOVUxMKQorCXsKKwkJZm9yIChpID0gMDsgaSA8IGVudHJ5LT5sb2NhbHJlbC0+dHJpZ2Rl c2MtPm51bXRyaWdnZXJzOyBpKyspCisJCXsKKwkJCVRyaWdnZXIgICAgKnRyaWcgPSBlbnRyeS0+ bG9jYWxyZWwtPnRyaWdkZXNjLT50cmlnZ2VycyArIGk7CisKKwkJCWlmICh0cmlnLT50Z2VuYWJs ZWQgIT0gVFJJR0dFUl9GSVJFU19BTFdBWVMgJiYKKwkJCQl0cmlnLT50Z2VuYWJsZWQgIT0gVFJJ R0dFUl9GSVJFU19PTl9SRVBMSUNBKQorCQkJCWNvbnRpbnVlOworCisJCQlpZiAoZnVuY192b2xh dGlsZSh0cmlnLT50Z2ZvaWQpICE9IFBST1ZPTEFUSUxFX0lNTVVUQUJMRSkKKwkJCXsKKwkJCQll bnRyeS0+dm9sYXRpbGl0eSA9IEZVTkNUSU9OX05PTklNTVVUQUJMRTsKKwkJCQlyZXR1cm47CisJ CQl9CisJCX0KKwl9CisKKwkvKiBDaGVjayB0aGUgY29sdW1ucy4gKi8KKwl0dXBkZXNjID0gUmVs YXRpb25HZXREZXNjcihlbnRyeS0+bG9jYWxyZWwpOworCWZvciAoYXR0bnVtID0gMDsgYXR0bnVt IDwgdHVwZGVzYy0+bmF0dHM7IGF0dG51bSsrKQorCXsKKwkJRm9ybV9wZ19hdHRyaWJ1dGUgYXR0 ID0gVHVwbGVEZXNjQXR0cih0dXBkZXNjLCBhdHRudW0pOworCisJCS8qIFdlIGRvbid0IG5lZWQg aW5mbyBmb3IgZHJvcHBlZCBvciBnZW5lcmF0ZWQgYXR0cmlidXRlcyAqLworCQlpZiAoYXR0LT5h dHRpc2Ryb3BwZWQgfHwgYXR0LT5hdHRnZW5lcmF0ZWQpCisJCQljb250aW51ZTsKKworCQkvKgor CQkgKiBXZSBkb24ndCBuZWVkIHRvIGNoZWNrIGNvbHVtbnMgdGhhdCBvbmx5IGV4aXN0IG9uIHRo ZQorCQkgKiBzdWJzY3JpYmVyCisJCSAqLworCQlpZiAoZW50cnktPmF0dHJtYXAtPmF0dG51bXNb YXR0bnVtXSA8IDApCisJCQljb250aW51ZTsKKworCQlpZiAoYXR0LT5hdHRoYXNkZWYpCisJCXsK KwkJCU5vZGUJICAgKmRlZmF1bHRleHByOworCisJCQlkZWZhdWx0ZXhwciA9IGJ1aWxkX2NvbHVt bl9kZWZhdWx0KGVudHJ5LT5sb2NhbHJlbCwgYXR0bnVtICsgMSk7CisJCQlpZiAoY29udGFpbl9t dXRhYmxlX2Z1bmN0aW9ucyhkZWZhdWx0ZXhwcikpCisJCQl7CisJCQkJZW50cnktPnZvbGF0aWxp dHkgPSBGVU5DVElPTl9OT05JTU1VVEFCTEU7CisJCQkJcmV0dXJuOworCQkJfQorCQl9CisKKwkJ LyoKKwkJICogSWYgdGhlIGNvbHVtbiBpcyBvZiBhIERPTUFJTiB0eXBlLCBkZXRlcm1pbmUgd2hl dGhlcgorCQkgKiB0aGF0IGRvbWFpbiBoYXMgYW55IENIRUNLIGV4cHJlc3Npb25zIHRoYXQgYXJl IG5vdAorCQkgKiBpbW11dGFibGUuCisJCSAqLworCQlpZiAoZ2V0X3R5cHR5cGUoYXR0LT5hdHR0 eXBpZCkgPT0gVFlQVFlQRV9ET01BSU4pCisJCXsKKwkJCUxpc3QJICAgKmRvbWFpbl9jb25zdHJh aW50czsKKwkJCUxpc3RDZWxsICAgKmxjOworCisJCQlkb21haW5fY29uc3RyYWludHMgPSBHZXRE b21haW5Db25zdHJhaW50cyhhdHQtPmF0dHR5cGlkKTsKKworCQkJZm9yZWFjaChsYywgZG9tYWlu X2NvbnN0cmFpbnRzKQorCQkJeworCQkJCURvbWFpbkNvbnN0cmFpbnRTdGF0ZSAqY29uID0gKERv bWFpbkNvbnN0cmFpbnRTdGF0ZSAqKSBsZmlyc3QobGMpOworCisJCQkJaWYgKGNvbi0+Y2hlY2tf ZXhwciAmJiBjb250YWluX211dGFibGVfZnVuY3Rpb25zKChOb2RlICopIGNvbi0+Y2hlY2tfZXhw cikpCisJCQkJeworCQkJCQllbnRyeS0+dm9sYXRpbGl0eSA9IEZVTkNUSU9OX05PTklNTVVUQUJM RTsKKwkJCQkJcmV0dXJuOworCQkJCX0KKwkJCX0KKwkJfQorCX0KKworCisJLyogQ2hlY2sgdGhl IGNvbnN0cmFpbnRzLiAqLworCXR1cGRlc2MgPSBSZWxhdGlvbkdldERlc2NyKGVudHJ5LT5sb2Nh bHJlbCk7CisKKwlpZiAodHVwZGVzYy0+Y29uc3RyKQorCXsKKwkJQ29uc3RyQ2hlY2sgKmNoZWNr ID0gdHVwZGVzYy0+Y29uc3RyLT5jaGVjazsKKworCQkvKgorCQkgKiBEZXRlcm1pbmUgaWYgdGhl cmUgYXJlIGFueSBDSEVDSyBjb25zdHJhaW50cyB3aGljaAorCQkgKiBjb250YWlucyBub24taW1t dXRhYmxlIGZ1bmN0aW9uLgorCQkgKi8KKwkJZm9yIChpID0gMDsgaSA8IHR1cGRlc2MtPmNvbnN0 ci0+bnVtX2NoZWNrOyBpKyspCisJCXsKKwkJCUV4cHIJICAgKmNoZWNrX2V4cHIgPSBzdHJpbmdU b05vZGUoY2hlY2tbaV0uY2NiaW4pOworCisJCQlpZiAoY29udGFpbl9tdXRhYmxlX2Z1bmN0aW9u cygoTm9kZSAqKSBjaGVja19leHByKSkKKwkJCXsKKwkJCQllbnRyeS0+dm9sYXRpbGl0eSA9IEZV TkNUSU9OX05PTklNTVVUQUJMRTsKKwkJCQlyZXR1cm47CisJCQl9CisJCX0KKwl9CisKKwkvKiBD aGVjayB0aGUgZm9yZWlnbiBrZXlzLiAqLworCWZrZXlzID0gUmVsYXRpb25HZXRGS2V5TGlzdChl bnRyeS0+bG9jYWxyZWwpOworCWlmIChma2V5cykKKwkJZW50cnktPnZvbGF0aWxpdHkgPSBGVU5D VElPTl9OT05JTU1VVEFCTEU7Cit9CisKIC8qCiAgKiBPcGVuIHRoZSBsb2NhbCByZWxhdGlvbiBh c3NvY2lhdGVkIHdpdGggdGhlIHJlbW90ZSBvbmUuCiAgKgpAQCAtNDMzLDYgKzYxOCwxMiBAQCBs b2dpY2FscmVwX3JlbF9vcGVuKExvZ2ljYWxSZXBSZWxJZCByZW1vdGVpZCwgTE9DS01PREUgbG9j a21vZGUpCiAJCS8qIENoZWNrIHRoYXQgcmVwbGljYSBpZGVudGl0eSBtYXRjaGVzLiAqLwogCQls b2dpY2FscmVwX3JlbF9tYXJrX3VwZGF0YWJsZShlbnRyeSk7CiAKKwkJLyoKKwkJICogU2V0IGZs YWdzIHRvIGNoZWNrIGxhdGVyIHdoZXRoZXIgY2hhbmdlcyBjb3VsZCBiZSBhcHBsaWVkIGluIHRo ZQorCQkgKiBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlci4KKwkJICovCisJCWxvZ2ljYWxyZXBfcmVs X21hcmtfYXBwbHlfYmd3b3JrZXIoZW50cnkpOworCiAJCWVudHJ5LT5sb2NhbHJlbHZhbGlkID0g dHJ1ZTsKIAl9CiAKQEAgLTYyMCw2ICs4MTEsNyBAQCBsb2dpY2FscmVwX3BhcnRpdGlvbl9vcGVu KExvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqcm9vdCwKIAkJfQogCQllbnRyeS0+cmVtb3RlcmVsLnJl cGxpZGVudCA9IHJlbW90ZXJlbC0+cmVwbGlkZW50OwogCQllbnRyeS0+cmVtb3RlcmVsLmF0dGtl eXMgPSBibXNfY29weShyZW1vdGVyZWwtPmF0dGtleXMpOworCQllbnRyeS0+cmVtb3RlcmVsLmF0 dHVuaXF1ZSA9IGJtc19jb3B5KHJlbW90ZXJlbC0+YXR0dW5pcXVlKTsKIAl9CiAKIAllbnRyeS0+ bG9jYWxyZWwgPSBwYXJ0cmVsOwpAQCAtNjYzLDYgKzg1NSwxMiBAQCBsb2dpY2FscmVwX3BhcnRp dGlvbl9vcGVuKExvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqcm9vdCwKIAkvKiBDaGVjayB0aGF0IHJl cGxpY2EgaWRlbnRpdHkgbWF0Y2hlcy4gKi8KIAlsb2dpY2FscmVwX3JlbF9tYXJrX3VwZGF0YWJs ZShlbnRyeSk7CiAKKwkvKgorCSAqIFNldCBmbGFncyB0byBjaGVjayBsYXRlciB3aGV0aGVyIGNo YW5nZXMgY291bGQgYmUgYXBwbGllZCBpbiB0aGUgYXBwbHkKKwkgKiBiYWNrZ3JvdW5kIHdvcmtl ci4KKwkgKi8KKwlsb2dpY2FscmVwX3JlbF9tYXJrX2FwcGx5X2Jnd29ya2VyKGVudHJ5KTsKKwog CWVudHJ5LT5sb2NhbHJlbHZhbGlkID0gdHJ1ZTsKIAogCS8qIHN0YXRlIGFuZCBzdGF0ZWxzbiBh cmUgbGVmdCBzZXQgdG8gMC4gKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvdGFibGVzeW5jLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Rh Ymxlc3luYy5jCmluZGV4IDhmZmJhN2UyZTUuLjNjZGJmOGI0NTcgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMKKysrIGIvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYwpAQCAtODg0LDYgKzg4NCw3IEBAIGZldGNo X3JlbW90ZV90YWJsZV9pbmZvKGNoYXIgKm5zcG5hbWUsIGNoYXIgKnJlbG5hbWUsCiAJbHJlbC0+ YXR0bmFtZXMgPSBwYWxsb2MwKE1heFR1cGxlQXR0cmlidXRlTnVtYmVyICogc2l6ZW9mKGNoYXIg KikpOwogCWxyZWwtPmF0dHR5cHMgPSBwYWxsb2MwKE1heFR1cGxlQXR0cmlidXRlTnVtYmVyICog c2l6ZW9mKE9pZCkpOwogCWxyZWwtPmF0dGtleXMgPSBOVUxMOworCWxyZWwtPmF0dHVuaXF1ZSA9 IE5VTEw7CiAKIAkvKgogCSAqIFN0b3JlIHRoZSBjb2x1bW5zIGFzIGEgbGlzdCBvZiBuYW1lcy4g IElnbm9yZSB0aG9zZSB0aGF0IGFyZSBub3QKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2Fs L3dvcmtlci5jCmluZGV4IDRlM2JjZjdjMjguLjFiODNhNzQ2ODUgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC93b3JrZXIuYwpAQCAtMTkyMCw2ICsxOTIwLDggQEAgYXBwbHlfaGFu ZGxlX2luc2VydChTdHJpbmdJbmZvIHMpCiAJLyogU2V0IHJlbGF0aW9uIGZvciBlcnJvciBjYWxs YmFjayAqLwogCWFwcGx5X2Vycm9yX2NhbGxiYWNrX2FyZy5yZWwgPSByZWw7CiAKKwlhcHBseV9i Z3dvcmtlcl9yZWxhdGlvbl9jaGVjayhyZWwpOworCiAJLyogSW5pdGlhbGl6ZSB0aGUgZXhlY3V0 b3Igc3RhdGUuICovCiAJZWRhdGEgPSBjcmVhdGVfZWRhdGFfZm9yX3JlbGF0aW9uKHJlbCk7CiAJ ZXN0YXRlID0gZWRhdGEtPmVzdGF0ZTsKQEAgLTIwNTYsNiArMjA1OCw4IEBAIGFwcGx5X2hhbmRs ZV91cGRhdGUoU3RyaW5nSW5mbyBzKQogCS8qIENoZWNrIGlmIHdlIGNhbiBkbyB0aGUgdXBkYXRl LiAqLwogCWNoZWNrX3JlbGF0aW9uX3VwZGF0YWJsZShyZWwpOwogCisJYXBwbHlfYmd3b3JrZXJf cmVsYXRpb25fY2hlY2socmVsKTsKKwogCS8qIEluaXRpYWxpemUgdGhlIGV4ZWN1dG9yIHN0YXRl LiAqLwogCWVkYXRhID0gY3JlYXRlX2VkYXRhX2Zvcl9yZWxhdGlvbihyZWwpOwogCWVzdGF0ZSA9 IGVkYXRhLT5lc3RhdGU7CkBAIC0yMjI0LDYgKzIyMjgsOCBAQCBhcHBseV9oYW5kbGVfZGVsZXRl KFN0cmluZ0luZm8gcykKIAkvKiBDaGVjayBpZiB3ZSBjYW4gZG8gdGhlIGRlbGV0ZS4gKi8KIAlj aGVja19yZWxhdGlvbl91cGRhdGFibGUocmVsKTsKIAorCWFwcGx5X2Jnd29ya2VyX3JlbGF0aW9u X2NoZWNrKHJlbCk7CisKIAkvKiBJbml0aWFsaXplIHRoZSBleGVjdXRvciBzdGF0ZS4gKi8KIAll ZGF0YSA9IGNyZWF0ZV9lZGF0YV9mb3JfcmVsYXRpb24ocmVsKTsKIAllc3RhdGUgPSBlZGF0YS0+ ZXN0YXRlOwpAQCAtMjQwOSwxMyArMjQxNSwxNCBAQCBhcHBseV9oYW5kbGVfdHVwbGVfcm91dGlu ZyhBcHBseUV4ZWN1dGlvbkRhdGEgKmVkYXRhLAogCX0KIAlNZW1vcnlDb250ZXh0U3dpdGNoVG8o b2xkY3R4KTsKIAorCXBhcnRfZW50cnkgPSBsb2dpY2FscmVwX3BhcnRpdGlvbl9vcGVuKHJlbG1h cGVudHJ5LCBwYXJ0cmVsLAorCQkJCQkJCQkJCSAgIGF0dHJtYXApOworCisJYXBwbHlfYmd3b3Jr ZXJfcmVsYXRpb25fY2hlY2socGFydF9lbnRyeSk7CisKIAkvKiBDaGVjayBpZiB3ZSBjYW4gZG8g dGhlIHVwZGF0ZSBvciBkZWxldGUgb24gdGhlIGxlYWYgcGFydGl0aW9uLiAqLwogCWlmKG9wZXJh dGlvbiA9PSBDTURfVVBEQVRFIHx8IG9wZXJhdGlvbiA9PSBDTURfREVMRVRFKQotCXsKLQkJcGFy dF9lbnRyeSA9IGxvZ2ljYWxyZXBfcGFydGl0aW9uX29wZW4ocmVsbWFwZW50cnksIHBhcnRyZWws Ci0JCQkJCQkJCQkJCSAgIGF0dHJtYXApOwogCQljaGVja19yZWxhdGlvbl91cGRhdGFibGUocGFy dF9lbnRyeSk7Ci0JfQogCiAJc3dpdGNoIChvcGVyYXRpb24pCiAJewpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvdXRpbHMvY2FjaGUvdHlwY2FjaGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hl L3R5cGNhY2hlLmMKaW5kZXggODA4ZjllYmQwZC4uYjI0ODg5OWQ4MiAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvdXRpbHMvY2FjaGUvdHlwY2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9j YWNoZS90eXBjYWNoZS5jCkBAIC0yNTQwLDYgKzI1NDAsMjMgQEAgY29tcGFyZV92YWx1ZXNfb2Zf ZW51bShUeXBlQ2FjaGVFbnRyeSAqdGNhY2hlLCBPaWQgYXJnMSwgT2lkIGFyZzIpCiAJCXJldHVy biAwOwogfQogCisvKgorICogR2V0RG9tYWluQ29uc3RyYWludHMgLS0tIGdldCBEb21haW5Db25z dHJhaW50U3RhdGUgbGlzdCBvZiBzcGVjaWZpZWQgZG9tYWluIHR5cGUKKyAqLworTGlzdCAqCitH ZXREb21haW5Db25zdHJhaW50cyhPaWQgdHlwZV9pZCkKK3sKKwlUeXBlQ2FjaGVFbnRyeSAqdHlw ZW50cnk7CisJTGlzdAkJICAgKmNvbnN0cmFpbnRzID0gTklMOworCisJdHlwZW50cnkgPSBsb29r dXBfdHlwZV9jYWNoZSh0eXBlX2lkLCBUWVBFQ0FDSEVfRE9NQUlOX0NPTlNUUl9JTkZPKTsKKwor CWlmKHR5cGVudHJ5LT5kb21haW5EYXRhICE9IE5VTEwpCisJCWNvbnN0cmFpbnRzID0gdHlwZW50 cnktPmRvbWFpbkRhdGEtPmNvbnN0cmFpbnRzOworCisJcmV0dXJuIGNvbnN0cmFpbnRzOworfQor CiAvKgogICogTG9hZCAob3IgcmUtbG9hZCkgdGhlIGVudW1EYXRhIG1lbWJlciBvZiB0aGUgdHlw Y2FjaGUgZW50cnkuCiAgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xv Z2ljYWxwcm90by5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHByb3RvLmgKaW5k ZXggN2JiYTc3YzllNy4uYTUwM2ViNjJjMiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGlj YXRpb24vbG9naWNhbHByb3RvLmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNh bHByb3RvLmgKQEAgLTEwOCw2ICsxMDgsNyBAQCB0eXBlZGVmIHN0cnVjdCBMb2dpY2FsUmVwUmVs YXRpb24KIAljaGFyCQlyZXBsaWRlbnQ7CQkvKiByZXBsaWNhIGlkZW50aXR5ICovCiAJY2hhcgkJ cmVsa2luZDsJCS8qIHJlbW90ZSByZWxhdGlvbiBraW5kICovCiAJQml0bWFwc2V0ICAqYXR0a2V5 czsJCS8qIEJpdG1hcCBvZiBrZXkgY29sdW1ucyAqLworCUJpdG1hcHNldCAgKmF0dHVuaXF1ZTsJ CS8qIEJpdG1hcCBvZiB1bmlxdWUgY29sdW1ucyAqLwogfSBMb2dpY2FsUmVwUmVsYXRpb247CiAK IC8qIFR5cGUgbWFwcGluZyBpbmZvICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNh dGlvbi9sb2dpY2FscmVsYXRpb24uaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxy ZWxhdGlvbi5oCmluZGV4IDc4Y2Q3ZTc3ZjUuLjc1YjNhODZjN2QgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxyZWxhdGlvbi5oCisrKyBiL3NyYy9pbmNsdWRlL3Jl cGxpY2F0aW9uL2xvZ2ljYWxyZWxhdGlvbi5oCkBAIC0xNSw2ICsxNSwxNyBAQAogI2luY2x1ZGUg ImFjY2Vzcy9hdHRtYXAuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9sb2dpY2FscHJvdG8uaCIK IAorLyoKKyAqCVN0YXRlcyB0byBkZXRlcm1pbmUgdm9sYXRpbGl0eSBvZiB0aGUgZnVuY3Rpb24g aW4gZXhwcmVzc2lvbnMgaW4gb25lCisgKglyZWxhdGlvbi4KKyAqLwordHlwZWRlZiBlbnVtIFJl bEZ1bmNWb2xhdGlsaXR5Cit7CisJRlVOQ1RJT05fVU5LTk9XTiA9IDAsCS8qIGluaXRpYWxpemlu ZyAgKi8KKwlGVU5DVElPTl9JTU1VVEFCTEUsCQkvKiBhbGwgZnVuY3Rpb25zIGFyZSBpbW11dGFi bGUgZnVuY3Rpb24gKi8KKwlGVU5DVElPTl9OT05JTU1VVEFCTEUJLyogYXQgbGVhc3Qgb25lIG5v bi1pbW11dGFibGUgZnVuY3Rpb24gKi8KK30gUmVsRnVuY1ZvbGF0aWxpdHk7CisKIHR5cGVkZWYg c3RydWN0IExvZ2ljYWxSZXBSZWxNYXBFbnRyeQogewogCUxvZ2ljYWxSZXBSZWxhdGlvbiByZW1v dGVyZWw7CS8qIGtleSBpcyByZW1vdGVyZWwucmVtb3RlaWQgKi8KQEAgLTMxLDYgKzQyLDEwIEBA IHR5cGVkZWYgc3RydWN0IExvZ2ljYWxSZXBSZWxNYXBFbnRyeQogCVJlbGF0aW9uCWxvY2FscmVs OwkJLyogcmVsY2FjaGUgZW50cnkgKE5VTEwgd2hlbiBjbG9zZWQpICovCiAJQXR0ck1hcCAgICAq YXR0cm1hcDsJCS8qIG1hcCBvZiBsb2NhbCBhdHRyaWJ1dGVzIHRvIHJlbW90ZSBvbmVzICovCiAJ Ym9vbAkJdXBkYXRhYmxlOwkJLyogQ2FuIGFwcGx5IHVwZGF0ZXMvZGVsZXRlcz8gKi8KKwlib29s CQlzYW1ldW5pcXVlOwkJLyogSXMgdGhlIHVuaXF1ZSBjb2x1bW4gb2YgbG9jYWwgYW5kIHJlbW90 ZQorCQkJCQkJCQkgICBjb25zaXN0ZW50PyAqLworCVJlbEZ1bmNWb2xhdGlsaXR5CXZvbGF0aWxp dHk7CQkvKiBhbGwgZnVuY3Rpb25zIGluIGxvY2FscmVsIGFyZQorCQkJCQkJCQkgICBpbW11dGFi bGUgZnVuY3Rpb24/ICovCiAKIAkvKiBTeW5jIHN0YXRlLiAqLwogCWNoYXIJCXN0YXRlOwpkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmggYi9zcmMv aW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaAppbmRleCAwOGU2M2RlMDEzLi5k ZDQ5ZDhlMmVjIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50 ZXJuYWwuaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaApA QCAtMTk2LDYgKzE5Niw3IEBAIGV4dGVybiB2b2lkIGFwcGx5X2Jnd29ya2VyX2ZyZWUoQXBwbHlC Z3dvcmtlclN0YXRlICp3c3RhdGUpOwogZXh0ZXJuIHZvaWQgYXBwbHlfYmd3b3JrZXJfY2hlY2tf c3RhdHVzKHZvaWQpOwogZXh0ZXJuIHZvaWQgYXBwbHlfYmd3b3JrZXJfc2V0X3N0YXR1cyhBcHBs eUJnd29ya2VyU3RhdHVzIHN0YXR1cyk7CiBleHRlcm4gdm9pZCBhcHBseV9iZ3dvcmtlcl9zdWJ4 YWN0X2luZm9fYWRkKFRyYW5zYWN0aW9uSWQgY3VycmVudF94aWQpOworZXh0ZXJuIHZvaWQgYXBw bHlfYmd3b3JrZXJfcmVsYXRpb25fY2hlY2soTG9naWNhbFJlcFJlbE1hcEVudHJ5ICpyZWwpOwog CiBzdGF0aWMgaW5saW5lIGJvb2wKIGFtX3RhYmxlc3luY193b3JrZXIodm9pZCkKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL3V0aWxzL3R5cGNhY2hlLmggYi9zcmMvaW5jbHVkZS91dGlscy90eXBj YWNoZS5oCmluZGV4IDQzMWFkN2YxYjMuLmVkN2MyZTdmNDggMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL3V0aWxzL3R5cGNhY2hlLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvdHlwY2FjaGUuaApA QCAtMTk5LDYgKzE5OSw4IEBAIGV4dGVybiB1aW50NjQgYXNzaWduX3JlY29yZF90eXBlX2lkZW50 aWZpZXIoT2lkIHR5cGVfaWQsIGludDMyIHR5cG1vZCk7CiAKIGV4dGVybiBpbnQJY29tcGFyZV92 YWx1ZXNfb2ZfZW51bShUeXBlQ2FjaGVFbnRyeSAqdGNhY2hlLCBPaWQgYXJnMSwgT2lkIGFyZzIp OwogCitleHRlcm4gTGlzdCAqR2V0RG9tYWluQ29uc3RyYWludHMoT2lkIHR5cGVfaWQpOworCiBl eHRlcm4gc2l6ZV90IFNoYXJlZFJlY29yZFR5cG1vZFJlZ2lzdHJ5RXN0aW1hdGUodm9pZCk7CiAK IGV4dGVybiB2b2lkIFNoYXJlZFJlY29yZFR5cG1vZFJlZ2lzdHJ5SW5pdChTaGFyZWRSZWNvcmRU eXBtb2RSZWdpc3RyeSAqLApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIy X3R3b3BoYXNlX2Nhc2NhZGUucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjJfdHdvcGhh c2VfY2FzY2FkZS5wbAppbmRleCBiNTJhZjc0ZTM1Li44MTc5MWM4ZDNhIDEwMDY0NAotLS0gYS9z cmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjJfdHdvcGhhc2VfY2FzY2FkZS5wbAorKysgYi9zcmMv dGVzdC9zdWJzY3JpcHRpb24vdC8wMjJfdHdvcGhhc2VfY2FzY2FkZS5wbApAQCAtMzksNiArMzks MTMgQEAgc3ViIHRlc3Rfc3RyZWFtaW5nCiAJCUFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViX0MK IAkJU0VUIChzdHJlYW1pbmcgPSAkc3RyZWFtaW5nX21vZGUpIik7CiAKKwlpZiAoJHN0cmVhbWlu Z19tb2RlIGVxICdhcHBseScpCisJeworCQkkbm9kZV9DLT5zYWZlX3BzcWwoCisJCQkncG9zdGdy ZXMnLCAiCisJCUFMVEVSIFRBQkxFIHRlc3RfdGFiIEFMVEVSIGMgRFJPUCBERUZBVUxUIik7CisJ fQorCiAJIyBXYWl0IGZvciBzdWJzY3JpYmVycyB0byBmaW5pc2ggaW5pdGlhbGl6YXRpb24KIAog CSRub2RlX0EtPnBvbGxfcXVlcnlfdW50aWwoCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3Jp cHRpb24vdC8wMzJfc3RyZWFtaW5nX2FwcGx5LnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3Qv MDMyX3N0cmVhbWluZ19hcHBseS5wbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwLi43NzZmMTM5MGZhCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9u L3QvMDMyX3N0cmVhbWluZ19hcHBseS5wbApAQCAtMCwwICsxLDIzOCBAQAorIyBDb3B5cmlnaHQg KGMpIDIwMjIsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisKKyMgVGVzdCB0 aGUgcmVzdHJpY3Rpb25zIG9mIHN0cmVhbWluZyBtb2RlICJhcHBseSIgaW4gbG9naWNhbCByZXBs aWNhdGlvbgorCit1c2Ugc3RyaWN0OwordXNlIHdhcm5pbmdzOwordXNlIFBvc3RncmVTUUw6OlRl c3Q6OkNsdXN0ZXI7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7Cit1c2UgVGVzdDo6TW9y ZTsKKworbXkgJG9mZnNldCA9IDA7CisKKyMgQ3JlYXRlIHB1Ymxpc2hlciBub2RlCitteSAkbm9k ZV9wdWJsaXNoZXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3B1Ymxpc2hlcicp OworJG5vZGVfcHVibGlzaGVyLT5pbml0KGFsbG93c19zdHJlYW1pbmcgPT4gJ2xvZ2ljYWwnKTsK KyRub2RlX3B1Ymxpc2hlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJJ2xvZ2lj YWxfZGVjb2Rpbmdfd29ya19tZW0gPSA2NGtCJyk7Ciskbm9kZV9wdWJsaXNoZXItPnN0YXJ0Owor CisjIENyZWF0ZSBzdWJzY3JpYmVyIG5vZGUKK215ICRub2RlX3N1YnNjcmliZXIgPSBQb3N0Z3Jl U1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3N1YnNjcmliZXInKTsKKyRub2RlX3N1YnNjcmliZXIt PmluaXQ7Ciskbm9kZV9zdWJzY3JpYmVyLT5zdGFydDsKKworIyBTZXR1cCBzdHJ1Y3R1cmUgb24g cHVibGlzaGVyCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVB VEUgVEFCTEUgdGVzdF90YWIgKGEgaW50IHByaW1hcnkga2V5LCBiIHZhcmNoYXIpIik7CisKKyMg U2V0dXAgc3RydWN0dXJlIG9uIHN1YnNjcmliZXIKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAorCSJDUkVBVEUgVEFCTEUgdGVzdF90YWIgKGEgaW50IHByaW1hcnkga2V5 LCBiIHZhcmNoYXIpIik7CisKKyMgU2V0dXAgbG9naWNhbCByZXBsaWNhdGlvbgorbXkgJHB1Ymxp c2hlcl9jb25uc3RyID0gJG5vZGVfcHVibGlzaGVyLT5jb25uc3RyIC4gJyBkYm5hbWU9cG9zdGdy ZXMnOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFBV QkxJQ0FUSU9OIHRhcF9wdWIgRk9SIFRBQkxFIHRlc3RfdGFiIik7CisKK215ICRhcHBuYW1lID0g J3RhcF9zdWInOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsICIK KwlDUkVBVEUgU1VCU0NSSVBUSU9OIHRhcF9zdWIKKwlDT05ORUNUSU9OICckcHVibGlzaGVyX2Nv bm5zdHIgYXBwbGljYXRpb25fbmFtZT0kYXBwbmFtZScKKwlQVUJMSUNBVElPTiB0YXBfcHViCisJ V0lUSCAoc3RyZWFtaW5nID0gYXBwbHksIGNvcHlfZGF0YSA9IGZhbHNlKSIpOworCiskbm9kZV9w dWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisjIEl0IGlzIG5vdCBhbGxv d2VkIHRoYXQgdGhlIHVuaXF1ZSBpbmRleCBvbiB0aGUgcHVibGlzaGVyIGFuZCB0aGUgc3Vic2Ny aWJlcgorIyBpcyBkaWZmZXJlbnQuIENoZWNrIHRoZSBlcnJvciByZXBvcnRlZCBieSBiYWNrZ3Jv dW5kIHdvcmtlciBpbiB0aGlzIGNhc2UuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKKwkiQ1JFQVRFIFVOSVFVRSBJTkRFWCB0ZXN0X3RhYl9iX2lkeCBPTiB0ZXN0X3Rh YiAoYikiKTsKKworIyBDaGVjayB0aGF0IGEgYmFja2dyb3VuZCB3b3JrZXIgc3RhcnRzIGlmICJz dHJlYW1pbmciIG9wdGlvbiBpcworIyBzcGVjaWZpZWQgYXMgImFwcGx5Ii4gIFdlIGhhdmUgdG8g bG9vayBmb3IgdGhlIERFQlVHMSBsb2cgbWVzc2FnZXMKKyMgYWJvdXQgdGhhdCwgc28gdGVtcG9y YXJpbHkgYnVtcCB1cCB0aGUgbG9nIHZlcmJvc2l0eS4KKyRub2RlX3N1YnNjcmliZXItPmFwcGVu ZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCAibG9nX21pbl9tZXNzYWdlcyA9IGRlYnVnMSIpOwor JG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAorCSJJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQp IEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMDApIHMoaSkiCispOworCiskbm9kZV9zdWJzY3Jp YmVyLT53YWl0X2Zvcl9sb2cocXIvXFtBcHBseSBCR1cgI1xkK1xdIHN0YXJ0ZWQvLCAwKTsKKyRu b2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCSJsb2dfbWlu X21lc3NhZ2VzID0gd2FybmluZyIpOworJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOworCiskbm9k ZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCisJcXIvRVJST1I6ICBjYW5ub3QgcmVwbGljYXRl IHJlbGF0aW9uIHdpdGggZGlmZmVyZW50IHVuaXF1ZSBpbmRleC8sCisJJG9mZnNldCk7CisKKyMg RHJvcCB0aGUgdW5pcXVlIGluZGV4IG9uIHRoZSBzdWJzY3JpYmVyLCBub3cgaXQgd29ya3MuCisk bm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRST1AgSU5ERVggdGVzdF90 YWJfYl9pZHgiKTsKKworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1l KTsKKworbXkgJHJlc3VsdCA9CisgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWIiKTsKK2lzKCRyZXN1bHQsIHFxKDUw MDApLCAnZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIgZHJvcHBpbmcgaW5kZXgn KTsKKworIyBUcmlnZ2VycyB3aGljaCBleGVjdXRlIG5vbi1pbW11dGFibGUgZnVuY3Rpb24gYXJl IG5vdCBhbGxvd2VkIG9uIHRoZQorIyBzdWJzY3JpYmVyIHNpZGUuIENoZWNrIHRoZSBlcnJvciBy ZXBvcnRlZCBieSBiYWNrZ3JvdW5kIHdvcmtlciBpbiB0aGlzIGNhc2UuCiskbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXF7CitDUkVBVEUgRlVOQ1RJT04gdHJpZ2dl cl9mdW5jKCkgUkVUVVJOUyBUUklHR0VSIEFTIFwkXCQKKyAgQkVHSU4KKyAgICBSRVRVUk4gTlVM TDsKKyAgRU5ECitcJFwkIGxhbmd1YWdlIHBscGdzcWw7CitDUkVBVEUgVFJJR0dFUiBpbnNlcnRf dHJpZworQkVGT1JFIElOU0VSVCBPTiB0ZXN0X3RhYgorRk9SIEVBQ0ggUk9XIEVYRUNVVEUgUFJP Q0VEVVJFIHRyaWdnZXJfZnVuYygpOworQUxURVIgVEFCTEUgdGVzdF90YWIgRU5BQkxFIFJFUExJ Q0EgVFJJR0dFUiBpbnNlcnRfdHJpZzsKK30pOworCisjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxv ZyBmcm9tIG5vdyBvbi4KKyRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOwor Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiREVMRVRFIEZST00gdGVz dF90YWIiKTsKKworJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAorCXFyL0VSUk9SOiAg Y2Fubm90IHJlcGxpY2F0ZSByZWxhdGlvbi4gVGhlcmUgaXMgYXQgbGVhc3Qgb25lIG5vbi1pbW11 dGFibGUgZnVuY3Rpb24vLAorCSRvZmZzZXQpOworCisjIERyb3AgdGhlIHRyaWdnZXIgb24gdGhl IHN1YnNjcmliZXIsIG5vdyBpdCB3b3Jrcy4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAorCSJEUk9QIFRSSUdHRVIgaW5zZXJ0X3RyaWcgT04gdGVzdF90YWIiKTsKKwor JG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworJHJlc3VsdCA9 CisgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50 KCopIEZST00gdGVzdF90YWIiKTsKK2lzKCRyZXN1bHQsIHFxKDApLCAnZGF0YSByZXBsaWNhdGVk IHRvIHN1YnNjcmliZXIgYWZ0ZXIgZHJvcHBpbmcgdHJpZ2dlcicpOworCisjIEl0IGlzIG5vdCBh bGxvd2VkIHRoYXQgY29sdW1uIGRlZmF1bHQgdmFsdWUgZXhwcmVzc2lvbiBjb250YWlucyBhCisj IG5vbi1pbW11dGFibGUgZnVuY3Rpb24gb24gdGhlIHN1YnNjcmliZXIgc2lkZS4gQ2hlY2sgdGhl IGVycm9yIHJlcG9ydGVkIGJ5CisjIGJhY2tncm91bmQgd29ya2VyIGluIHRoaXMgY2FzZS4KKyRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBUQUJMRSB0ZXN0 X3RhYiBBTFRFUiBDT0xVTU4gYiBTRVQgREVGQVVMVCByYW5kb20oKSIpOworCisjIENoZWNrIHRo ZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKyRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3Jp YmVyLT5sb2dmaWxlOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAor CSJJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJh dGVfc2VyaWVzKDEsIDUwMDApIHMoaSkiCispOworCiskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zv cl9sb2coCisJcXIvRVJST1I6ICBjYW5ub3QgcmVwbGljYXRlIHJlbGF0aW9uLiBUaGVyZSBpcyBh dCBsZWFzdCBvbmUgbm9uLWltbXV0YWJsZSBmdW5jdGlvbi8sCisJJG9mZnNldCk7CisKKyMgRHJv cCBkZWZhdWx0IHZhbHVlIG9uIHRoZSBzdWJzY3JpYmVyLCBub3cgaXQgd29ya3MuCiskbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgVEFCTEUgdGVzdF90YWIg QUxURVIgQ09MVU1OIGIgRFJPUCBERUZBVUxUIik7CisKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9m b3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKyRyZXN1bHQgPQorICAkbm9kZV9zdWJzY3JpYmVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiIik7Citp cygkcmVzdWx0LCBxcSg1MDAwKSwKKwknZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgYWZ0 ZXIgZHJvcHBpbmcgZGVmYXVsdCB2YWx1ZSBleHByZXNzaW9uJyk7CisKKyMgSXQgaXMgbm90IGFs bG93ZWQgdGhhdCBkb21haW4gY29uc3RyYWludCBleHByZXNzaW9uIGNvbnRhaW5zIGEgbm9uLWlt bXV0YWJsZQorIyBmdW5jdGlvbiBvbiB0aGUgc3Vic2NyaWJlciBzaWRlLiBDaGVjayB0aGUgZXJy b3IgcmVwb3J0ZWQgYnkgYmFja2dyb3VuZAorIyB3b3JrZXIgaW4gdGhpcyBjYXNlLgorJG5vZGVf c3Vic2NyaWJlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxeworQ1JFQVRFIERPTUFJTiB0 ZXN0X2RvbWFpbiBBUyBpbnQgQ0hFQ0soVkFMVUUgPiByYW5kb20oKSk7CitBTFRFUiBUQUJMRSB0 ZXN0X3RhYiBBTFRFUiBDT0xVTU4gYSBUWVBFIHRlc3RfZG9tYWluOworfSk7CisKKyMgQ2hlY2sg dGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgorJG9mZnNldCA9IC1zICRub2RlX3N1YnNj cmliZXItPmxvZ2ZpbGU7CisKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs ICJERUxFVEUgRlJPTSB0ZXN0X3RhYiIpOworCiskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9s b2coCisJcXIvRVJST1I6ICBjYW5ub3QgcmVwbGljYXRlIHJlbGF0aW9uLiBUaGVyZSBpcyBhdCBs ZWFzdCBvbmUgbm9uLWltbXV0YWJsZSBmdW5jdGlvbi8sCisJJG9mZnNldCk7CisKKyMgRHJvcCBk b21haW4gY29uc3RyYWludCBleHByZXNzaW9uIG9uIHRoZSBzdWJzY3JpYmVyLCBub3cgaXQgd29y a3MuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgVEFC TEUgdGVzdF90YWIgQUxURVIgQ09MVU1OIGEgVFlQRSBpbnQiKTsKKworJG5vZGVfcHVibGlzaGVy LT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworJHJlc3VsdCA9CisgICRub2RlX3N1YnNj cmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90 YWIiKTsKK2lzKCRyZXN1bHQsIHFxKDApLAorCSdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJl ciBhZnRlciBkcm9wcGluZyBkb21haW4gY29uc3RyYWludCBleHByZXNzaW9uJworKTsKKworIyBJ dCBpcyBub3QgYWxsb3dlZCB0aGF0IGNvbnN0cmFpbnQgZXhwcmVzc2lvbiBjb250YWlucyBhIG5v bi1pbW11dGFibGUgZnVuY3Rpb24KKyMgb24gdGhlIHN1YnNjcmliZXIgc2lkZS4gQ2hlY2sgdGhl IGVycm9yIHJlcG9ydGVkIGJ5IGJhY2tncm91bmQgd29ya2VyIGluIHRoaXMKKyMgY2FzZS4KKyRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcXsKK0FMVEVSIFRBQkxF IHRlc3RfdGFiIEFERCBDT05TVFJBSU5UIHRlc3RfdGFiX2NvbiBjaGVjayAoYSA+IHJhbmRvbSgp KTsKK30pOworCisjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKyRvZmZz ZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCiskbm9kZV9wdWJsaXNoZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAorCSJJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1 KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMDApIHMoaSkiCispOworCiskbm9k ZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCisJcXIvRVJST1I6ICBjYW5ub3QgcmVwbGljYXRl IHJlbGF0aW9uLiBUaGVyZSBpcyBhdCBsZWFzdCBvbmUgbm9uLWltbXV0YWJsZSBmdW5jdGlvbi8s CisJJG9mZnNldCk7CisKKyMgRHJvcCBjb25zdHJhaW50IG9uIHRoZSBzdWJzY3JpYmVyLCBub3cg aXQgd29ya3MuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxU RVIgVEFCTEUgdGVzdF90YWIgRFJPUCBDT05TVFJBSU5UIHRlc3RfdGFiX2NvbiIpOworCiskbm9k ZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCiskcmVzdWx0ID0KKyAg JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikg RlJPTSB0ZXN0X3RhYiIpOworaXMoJHJlc3VsdCwgcXEoNTAwMCksCisJJ2RhdGEgcmVwbGljYXRl ZCB0byBzdWJzY3JpYmVyIGFmdGVyIGRyb3BwaW5nIGNvbnN0cmFpbnQgZXhwcmVzc2lvbicpOwor CisjIEl0IGlzIG5vdCBhbGxvd2VkIHRoYXQgZm9yZWlnbiBrZXkgb24gdGhlIHN1YnNjcmliZXIg c2lkZS4gQ2hlY2sgdGhlIGVycm9yCisjIHJlcG9ydGVkIGJ5IGJhY2tncm91bmQgd29ya2VyIGlu IHRoaXMgY2FzZS4KKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJERUxF VEUgRlJPTSB0ZXN0X3RhYiIpOworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRh cHBuYW1lKTsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcXsK K0NSRUFURSBUQUJMRSB0ZXN0X3RhYl9mIChhIGludCBwcmltYXJ5IGtleSk7CitBTFRFUiBUQUJM RSB0ZXN0X3RhYiBBREQgQ09OU1RSQUlOVCB0ZXN0X3RhYmZrIEZPUkVJR04gS0VZKGEpIFJFRkVS RU5DRVMgdGVzdF90YWJfZihhKTsKK30pOworCisjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBm cm9tIG5vdyBvbi4KKyRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCisk bm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJJTlNFUlQgSU5UTyB0ZXN0 X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMDAp IHMoaSkiCispOworCiskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCisJcXIvRVJST1I6 ICBjYW5ub3QgcmVwbGljYXRlIHJlbGF0aW9uLiBUaGVyZSBpcyBhdCBsZWFzdCBvbmUgbm9uLWlt bXV0YWJsZSBmdW5jdGlvbi8sCisJJG9mZnNldCk7CisKKyMgRHJvcCB0aGUgZm9yZWlnbiBrZXkg Y29uc3RyYWludCBvbiB0aGUgc3Vic2NyaWJlciwgbm93IGl0IHdvcmtzLgorJG5vZGVfc3Vic2Ny aWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFRBQkxFIHRlc3RfdGFiIERST1Ag Q09OU1RSQUlOVCB0ZXN0X3RhYmZrIik7CisKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0 Y2h1cCgkYXBwbmFtZSk7CisKKyRyZXN1bHQgPQorICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiIik7CitpcygkcmVz dWx0LCBxcSg1MDAwKSwKKwknZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIgZHJv cHBpbmcgdGhlIGZvcmVpZ24ga2V5Jyk7CisKKyRub2RlX3N1YnNjcmliZXItPnN0b3A7Ciskbm9k ZV9wdWJsaXNoZXItPnN0b3A7CisKK2RvbmVfdGVzdGluZygpOwotLSAKMi4yMy4wLndpbmRvd3Mu MQoK --_006_OS3PR01MB62756BD9482EB6BB1CA4CD4D9EAA9OS3PR01MB6275jpnp_ Content-Type: application/octet-stream; name="v10-0005-Retry-to-apply-streaming-xact-only-in-apply-work.patch" Content-Description: v10-0005-Retry-to-apply-streaming-xact-only-in-apply-work.patch Content-Disposition: attachment; filename="v10-0005-Retry-to-apply-streaming-xact-only-in-apply-work.patch"; size=20879; creation-date="Tue, 14 Jun 2022 03:35:00 GMT"; modification-date="Tue, 14 Jun 2022 03:37:04 GMT" Content-Transfer-Encoding: base64 RnJvbSA1NmM3NTM3ZTViOGU1MDQ0ODY2ZDdmZTdhMWE2ZDY5MWIyYWZhMzBkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiB3YW5ndyA8d2FuZ3cuZm5zdEBmdWppdHN1LmNvbT4KRGF0ZTog RnJpLCAxMCBKdW4gMjAyMiAxNTowNDo1MiArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjEwIDUvNV0g UmV0cnkgdG8gYXBwbHkgc3RyZWFtaW5nIHhhY3Qgb25seSBpbiBhcHBseSB3b3JrZXIuCgotLS0K IGRvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sICAgICAgICAgICAgICAgICAgICB8IDExICsrKwog ZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwgICAgIHwgIDQgKwogc3Jj L2JhY2tlbmQvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uYyAgICAgICAgIHwgIDEgKwogc3JjL2Jh Y2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsICAgICAgICAgIHwgIDQgKy0KIHNyYy9iYWNr ZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYyAgICAgICB8ICAxICsKIC4uLi9yZXBsaWNh dGlvbi9sb2dpY2FsL2FwcGx5Ymd3cm9rZXIuYyAgICAgICB8IDEzICsrLQogc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYyAgICAgIHwgODkgKysrKysrKysrKysrKysrKysr CiBzcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jICAgICAgICAgICAgICAgICAgICAgfCAgNSArLQog c3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaCAgICAgICAgIHwgIDQgKwogLi4u L3N1YnNjcmlwdGlvbi90LzAzMl9zdHJlYW1pbmdfYXBwbHkucGwgICAgIHwgOTEgKysrKysrKysr Ky0tLS0tLS0tLQogMTAgZmlsZXMgY2hhbmdlZCwgMTc0IGluc2VydGlvbnMoKyksIDQ5IGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sIGIvZG9jL3Ny Yy9zZ21sL2NhdGFsb2dzLnNnbWwKaW5kZXggNWNiMzliMThiZC4uOTI4YWQwMmFjZSAxMDA2NDQK LS0tIGEvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2NhdGFs b2dzLnNnbWwKQEAgLTc5MDcsNiArNzkwNywxNyBAQCBTQ1JBTS1TSEEtMjU2JDxyZXBsYWNlYWJs ZT4mbHQ7aXRlcmF0aW9uIGNvdW50Jmd0OzwvcmVwbGFjZWFibGU+OjxyZXBsYWNlYWJsZT4mbAog ICAgICAgPC9wYXJhPjwvZW50cnk+CiAgICAgIDwvcm93PgogCisgICAgIDxyb3c+CisgICAgICA8 ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmlu aXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5zdWJyZXRyeTwvc3RydWN0ZmllbGQ+IDx0eXBl PmJvb2w8L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBJZiB0cnVl LCB0aGUgc3Vic2NyaXB0aW9uIHdpbGwgbm90IHRyeSB0byBhcHBseSBzdHJlYW1pbmcgdHJhbnNh Y3Rpb24KKyAgICAgICBpbiA8bGl0ZXJhbD5hcHBseTwvbGl0ZXJhbD4gbW9kZS4gU2VlCisgICAg ICAgPHhyZWYgbGlua2VuZD0ic3FsLWNyZWF0ZXN1YnNjcmlwdGlvbiIvPiBmb3IgbW9yZSBpbmZv cm1hdGlvbi4KKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKwogICAgICA8cm93 PgogICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNv bHVtbl9kZWZpbml0aW9uIj4KICAgICAgICA8c3RydWN0ZmllbGQ+c3ViY29ubmluZm88L3N0cnVj dGZpZWxkPiA8dHlwZT50ZXh0PC90eXBlPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9j cmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3Jp cHRpb24uc2dtbAppbmRleCA4ZGUxYTIzY2U0Li43MGZiZjgxNjY4IDEwMDY0NAotLS0gYS9kb2Mv c3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwv cmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbApAQCAtMjQ0LDYgKzI0NCwxMCBAQCBDUkVBVEUg U1VCU0NSSVBUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5zdWJzY3JpcHRpb25f bmFtZTwvcmVwbGFjZWFibAogICAgICAgICAgIGlzIHRoYXQgdGhlIHVuaXF1ZSBjb2x1bW4gc2hv dWxkIGJlIHRoZSBzYW1lIGJldHdlZW4gcHVibGlzaGVyIGFuZAogICAgICAgICAgIHN1YnNjcmli ZXI7IHRoZSBzZWNvbmQgaXMgdGhhdCB0aGVyZSBzaG91bGQgbm90IGJlIGFueSBub24taW1tdXRh YmxlCiAgICAgICAgICAgZnVuY3Rpb24gaW4gc3Vic2NyaWJlci1zaWRlIHJlcGxpY2F0ZWQgdGFi bGUuCisgICAgICAgICAgV2hlbiBhcHBseWluZyBhIHN0cmVhbWluZyB0cmFuc2FjdGlvbiwgaWYg ZWl0aGVyIHJlcXVpcmVtZW50IGlzIG5vdAorICAgICAgICAgIG1ldCwgdGhlIGJhY2tncm91bmQg d29ya2VyIHdpbGwgZXhpdCB3aXRoIGFuIGVycm9yLiBBbmQgd2hlbiByZXRyeWluZworICAgICAg ICAgIGxhdGVyLCB3ZSB3aWxsIHRyeSB0byBhcHBseSB0aGlzIHRyYW5zYWN0aW9uIGluIDxsaXRl cmFsPm9uPC9saXRlcmFsPgorICAgICAgICAgIG1vZGUuCiAgICAgICAgICA8L3BhcmE+CiAgICAg ICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgPC92YXJsaXN0ZW50cnk+CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9w Z19zdWJzY3JpcHRpb24uYwppbmRleCBhZGQ1MWNhYWRmLi4xODI0MzkwZDdkIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5jCisrKyBiL3NyYy9iYWNrZW5k L2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmMKQEAgLTcxLDYgKzcxLDcgQEAgR2V0U3Vic2NyaXB0 aW9uKE9pZCBzdWJpZCwgYm9vbCBtaXNzaW5nX29rKQogCXN1Yi0+c3RyZWFtID0gc3ViZm9ybS0+ c3Vic3RyZWFtOwogCXN1Yi0+dHdvcGhhc2VzdGF0ZSA9IHN1YmZvcm0tPnN1YnR3b3BoYXNlc3Rh dGU7CiAJc3ViLT5kaXNhYmxlb25lcnIgPSBzdWJmb3JtLT5zdWJkaXNhYmxlb25lcnI7CisJc3Vi LT5yZXRyeSA9IHN1YmZvcm0tPnN1YnJldHJ5OwogCiAJLyogR2V0IGNvbm5pbmZvICovCiAJZGF0 dW0gPSBTeXNDYWNoZUdldEF0dHIoU1VCU0NSSVBUSU9OT0lELApkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0 ZW1fdmlld3Muc3FsCmluZGV4IGZlZGFlZDUzM2IuLjEwZjRkZDY3ODUgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbAorKysgYi9zcmMvYmFja2VuZC9jYXRh bG9nL3N5c3RlbV92aWV3cy5zcWwKQEAgLTEyOTgsOCArMTI5OCw4IEBAIFJFVk9LRSBBTEwgT04g cGdfcmVwbGljYXRpb25fb3JpZ2luX3N0YXR1cyBGUk9NIHB1YmxpYzsKIC0tIEFsbCBjb2x1bW5z IG9mIHBnX3N1YnNjcmlwdGlvbiBleGNlcHQgc3ViY29ubmluZm8gYXJlIHB1YmxpY2x5IHJlYWRh YmxlLgogUkVWT0tFIEFMTCBPTiBwZ19zdWJzY3JpcHRpb24gRlJPTSBwdWJsaWM7CiBHUkFOVCBT RUxFQ1QgKG9pZCwgc3ViZGJpZCwgc3Vic2tpcGxzbiwgc3VibmFtZSwgc3Vib3duZXIsIHN1YmVu YWJsZWQsCi0gICAgICAgICAgICAgIHN1YmJpbmFyeSwgc3Vic3RyZWFtLCBzdWJ0d29waGFzZXN0 YXRlLCBzdWJkaXNhYmxlb25lcnIsIHN1YnNsb3RuYW1lLAotICAgICAgICAgICAgICBzdWJzeW5j Y29tbWl0LCBzdWJwdWJsaWNhdGlvbnMpCisgICAgICAgICAgICAgIHN1YmJpbmFyeSwgc3Vic3Ry ZWFtLCBzdWJ0d29waGFzZXN0YXRlLCBzdWJkaXNhYmxlb25lcnIsCisgICAgICAgICAgICAgIHN1 YnJldHJ5LCBzdWJzbG90bmFtZSwgc3Vic3luY2NvbW1pdCwgc3VicHVibGljYXRpb25zKQogICAg IE9OIHBnX3N1YnNjcmlwdGlvbiBUTyBwdWJsaWM7CiAKIENSRUFURSBWSUVXIHBnX3N0YXRfc3Vi c2NyaXB0aW9uX3N0YXRzIEFTCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9zdWJz Y3JpcHRpb25jbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMK aW5kZXggNDA4MGJiYTk4Ny4uMzg2OTcxODRkOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29t bWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNj cmlwdGlvbmNtZHMuYwpAQCAtNjYzLDYgKzY2Myw3IEBAIENyZWF0ZVN1YnNjcmlwdGlvbihQYXJz ZVN0YXRlICpwc3RhdGUsIENyZWF0ZVN1YnNjcmlwdGlvblN0bXQgKnN0bXQsCiAJCQkJCSBMT0dJ Q0FMUkVQX1RXT1BIQVNFX1NUQVRFX1BFTkRJTkcgOgogCQkJCQkgTE9HSUNBTFJFUF9UV09QSEFT RV9TVEFURV9ESVNBQkxFRCk7CiAJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YmRpc2Fi bGVvbmVyciAtIDFdID0gQm9vbEdldERhdHVtKG9wdHMuZGlzYWJsZW9uZXJyKTsKKwl2YWx1ZXNb QW51bV9wZ19zdWJzY3JpcHRpb25fc3VicmV0cnkgLSAxXSA9IEJvb2xHZXREYXR1bShmYWxzZSk7 CiAJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YmNvbm5pbmZvIC0gMV0gPQogCQlDU3Ry aW5nR2V0VGV4dERhdHVtKGNvbm5pbmZvKTsKIAlpZiAob3B0cy5zbG90X25hbWUpCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5Ymd3cm9rZXIuYyBiL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHliZ3dyb2tlci5jCmluZGV4IDdkM2M2 MWMyZTkuLjAyYjFlZjVlNjIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvYXBwbHliZ3dyb2tlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvYXBwbHliZ3dyb2tlci5jCkBAIC0xMDMsNiArMTAzLDEzIEBAIGFwcGx5X2Jnd29ya2VyX2Zp bmRfb3Jfc3RhcnQoVHJhbnNhY3Rpb25JZCB4aWQsIGJvb2wgc3RhcnQpCiAJaWYgKHN0YXJ0ICYm ICFYTG9nUmVjUHRySXNJbnZhbGlkKE15U3Vic2NyaXB0aW9uLT5za2lwbHNuKSkKIAkJcmV0dXJu IE5VTEw7CiAKKwlpZiAoc3RhcnQgJiYgTXlTdWJzY3JpcHRpb24tPnJldHJ5KQorCXsKKwkJZWxv ZyhERUJVRzEsICJyZXRyeSB0byBhcHBseSBhbiBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gaW4gYXBw bHkgIgorCQkJICJiYWNrZ3JvdW5kIHdvcmtlciIpOworCQlyZXR1cm4gTlVMTDsKKwl9CisKIAkv KgogCSAqIEZvciBzdHJlYW1pbmcgdHJhbnNhY3Rpb25zIHRoYXQgYXJlIGJlaW5nIGFwcGxpZWQg aW4gYXBwbHkgYmFja2dyb3VuZAogCSAqIHdvcmtlciwgd2UgY2Fubm90IGRlY2lkZSB3aGV0aGVy IHRvIGFwcGx5IHRoZSBjaGFuZ2UgZm9yIGEgcmVsYXRpb24KQEAgLTc5NCw4ICs4MDEsNyBAQCBh cHBseV9iZ3dvcmtlcl9yZWxhdGlvbl9jaGVjayhMb2dpY2FsUmVwUmVsTWFwRW50cnkgKnJlbCkK IAlpZiAoIXJlbC0+c2FtZXVuaXF1ZSkKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShF UlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCi0JCQkJIGVycm1zZygiY2Fubm90IHJlcGxp Y2F0ZSByZWxhdGlvbiB3aXRoIGRpZmZlcmVudCB1bmlxdWUgaW5kZXgiKSwKLQkJCQkgZXJyaGlu dCgiUGxlYXNlIGNoYW5nZSB0aGUgc3RyZWFtaW5nIG9wdGlvbiB0byAnb24nIGluc3RlYWQgb2Yg J2FwcGx5Jy4iKSkpOworCQkJCSBlcnJtc2coImNhbm5vdCByZXBsaWNhdGUgcmVsYXRpb24gd2l0 aCBkaWZmZXJlbnQgdW5pcXVlIGluZGV4IikpKTsKIAogCS8qCiAJICogQ2hlY2sgaWYgdGhlcmUg aXMgYW55IG5vbi1pbW11dGFibGUgZnVuY3Rpb24gcHJlc2VudCBpbiBleHByZXNzaW9uIGluCkBA IC04MDQsNyArODEwLDYgQEAgYXBwbHlfYmd3b3JrZXJfcmVsYXRpb25fY2hlY2soTG9naWNhbFJl cFJlbE1hcEVudHJ5ICpyZWwpCiAJaWYgKHJlbC0+dm9sYXRpbGl0eSA9PSBGVU5DVElPTl9OT05J TU1VVEFCTEUpCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJF X05PVF9TVVBQT1JURUQpLAotCQkJCSBlcnJtc2coImNhbm5vdCByZXBsaWNhdGUgcmVsYXRpb24u IFRoZXJlIGlzIGF0IGxlYXN0IG9uZSBub24taW1tdXRhYmxlIGZ1bmN0aW9uIiksCi0JCQkJIGVy cmhpbnQoIlBsZWFzZSBjaGFuZ2UgdGhlIHN0cmVhbWluZyBvcHRpb24gdG8gJ29uJyBpbnN0ZWFk IG9mICdhcHBseScuIikpKTsKKwkJCQkgZXJybXNnKCJjYW5ub3QgcmVwbGljYXRlIHJlbGF0aW9u LiBUaGVyZSBpcyBhdCBsZWFzdCBvbmUgbm9uLWltbXV0YWJsZSBmdW5jdGlvbiIpKSk7CiAKIH0K ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMgYi9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCmluZGV4IDFiODNhNzQ2ODUu LmI4MmY5NzM2MjYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwv d29ya2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYwpA QCAtMzc0LDYgKzM3NCw4IEBAIHN0YXRpYyB2b2lkIGNsZWFyX3N1YnNjcmlwdGlvbl9za2lwX2xz bihYTG9nUmVjUHRyIGZpbmlzaF9sc24pOwogc3RhdGljIGlubGluZSB2b2lkIHNldF9hcHBseV9l cnJvcl9jb250ZXh0X3hhY3QoVHJhbnNhY3Rpb25JZCB4aWQsIFhMb2dSZWNQdHIgbHNuKTsKIHN0 YXRpYyBpbmxpbmUgdm9pZCByZXNldF9hcHBseV9lcnJvcl9jb250ZXh0X2luZm8odm9pZCk7CiAK K3N0YXRpYyB2b2lkIHNldF9zdWJzY3JpcHRpb25fcmV0cnkoYm9vbCByZXRyeSk7CisKIC8qCiAg KiBTaG91bGQgdGhpcyB3b3JrZXIgYXBwbHkgY2hhbmdlcyBmb3IgZ2l2ZW4gcmVsYXRpb24uCiAg KgpAQCAtODkwLDYgKzg5Miw5IEBAIGFwcGx5X2hhbmRsZV9jb21taXQoU3RyaW5nSW5mbyBzKQog CiAJYXBwbHlfaGFuZGxlX2NvbW1pdF9pbnRlcm5hbCgmY29tbWl0X2RhdGEpOwogCisJLyogU2V0 IHRoZSBmbGFnIHRoYXQgd2Ugd2lsbCBub3QgcmV0cnkgbGF0ZXIuICovCisJc2V0X3N1YnNjcmlw dGlvbl9yZXRyeShmYWxzZSk7CisKIAkvKiBDaGVjayB0aGUgc3RhdHVzIG9mIGFwcGx5IGJhY2tn cm91bmQgd29ya2VyIGlmIGFueS4gKi8KIAlhcHBseV9iZ3dvcmtlcl9jaGVja19zdGF0dXMoKTsK IApAQCAtMTAwMSw2ICsxMDA2LDkgQEAgYXBwbHlfaGFuZGxlX3ByZXBhcmUoU3RyaW5nSW5mbyBz KQogCiAJaW5fcmVtb3RlX3RyYW5zYWN0aW9uID0gZmFsc2U7CiAKKwkvKiBTZXQgdGhlIGZsYWcg dGhhdCB3ZSB3aWxsIG5vdCByZXRyeSBsYXRlci4gKi8KKwlzZXRfc3Vic2NyaXB0aW9uX3JldHJ5 KGZhbHNlKTsKKwogCS8qIENoZWNrIHRoZSBzdGF0dXMgb2YgYXBwbHkgYmFja2dyb3VuZCB3b3Jr ZXIgaWYgYW55LiAqLwogCWFwcGx5X2Jnd29ya2VyX2NoZWNrX3N0YXR1cygpOwogCkBAIC0xMDU0 LDYgKzEwNjIsOSBAQCBhcHBseV9oYW5kbGVfY29tbWl0X3ByZXBhcmVkKFN0cmluZ0luZm8gcykK IAlzdG9yZV9mbHVzaF9wb3NpdGlvbihwcmVwYXJlX2RhdGEuZW5kX2xzbik7CiAJaW5fcmVtb3Rl X3RyYW5zYWN0aW9uID0gZmFsc2U7CiAKKwkvKiBTZXQgdGhlIGZsYWcgdGhhdCB3ZSB3aWxsIG5v dCByZXRyeSBsYXRlci4gKi8KKwlzZXRfc3Vic2NyaXB0aW9uX3JldHJ5KGZhbHNlKTsKKwogCS8q IFByb2Nlc3MgYW55IHRhYmxlcyB0aGF0IGFyZSBiZWluZyBzeW5jaHJvbml6ZWQgaW4gcGFyYWxs ZWwuICovCiAJcHJvY2Vzc19zeW5jaW5nX3RhYmxlcyhwcmVwYXJlX2RhdGEuZW5kX2xzbik7CiAK QEAgLTExMDksNiArMTEyMCw5IEBAIGFwcGx5X2hhbmRsZV9yb2xsYmFja19wcmVwYXJlZChTdHJp bmdJbmZvIHMpCiAJc3RvcmVfZmx1c2hfcG9zaXRpb24ocm9sbGJhY2tfZGF0YS5yb2xsYmFja19l bmRfbHNuKTsKIAlpbl9yZW1vdGVfdHJhbnNhY3Rpb24gPSBmYWxzZTsKIAorCS8qIFNldCB0aGUg ZmxhZyB0aGF0IHdlIHdpbGwgbm90IHJldHJ5IGxhdGVyLiAqLworCXNldF9zdWJzY3JpcHRpb25f cmV0cnkoZmFsc2UpOworCiAJLyogUHJvY2VzcyBhbnkgdGFibGVzIHRoYXQgYXJlIGJlaW5nIHN5 bmNocm9uaXplZCBpbiBwYXJhbGxlbC4gKi8KIAlwcm9jZXNzX3N5bmNpbmdfdGFibGVzKHJvbGxi YWNrX2RhdGEucm9sbGJhY2tfZW5kX2xzbik7CiAKQEAgLTExOTUsNiArMTIwOSw5IEBAIGFwcGx5 X2hhbmRsZV9zdHJlYW1fcHJlcGFyZShTdHJpbmdJbmZvIHMpCiAJCQkvKiB1bmxpbmsgdGhlIGZp bGVzIHdpdGggc2VyaWFsaXplZCBjaGFuZ2VzIGFuZCBzdWJ4YWN0IGluZm8uICovCiAJCQlzdHJl YW1fY2xlYW51cF9maWxlcyhNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCBwcmVwYXJlX2RhdGEu eGlkKTsKIAkJfQorCisJCS8qIFNldCB0aGUgZmxhZyB0aGF0IHdlIHdpbGwgbm90IHJldHJ5IGxh dGVyLiAqLworCQlzZXRfc3Vic2NyaXB0aW9uX3JldHJ5KGZhbHNlKTsKIAl9CiAKIAlpbl9yZW1v dGVfdHJhbnNhY3Rpb24gPSBmYWxzZTsKQEAgLTE2MTUsNiArMTYzMiw5IEBAIGFwcGx5X2hhbmRs ZV9zdHJlYW1fYWJvcnQoU3RyaW5nSW5mbyBzKQogCQkgKi8KIAkJZWxzZQogCQkJc2VyaWFsaXpl X3N0cmVhbV9hYm9ydCh4aWQsIHN1YnhpZCk7CisKKwkJLyogU2V0IHRoZSBmbGFnIHRoYXQgd2Ug d2lsbCBub3QgcmV0cnkgbGF0ZXIuICovCisJCXNldF9zdWJzY3JpcHRpb25fcmV0cnkoZmFsc2Up OwogCX0KIH0KIApAQCAtMjc4OCw2ICsyODA4LDkgQEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9jb21t aXQoU3RyaW5nSW5mbyBzKQogCQkJLyogdW5saW5rIHRoZSBmaWxlcyB3aXRoIHNlcmlhbGl6ZWQg Y2hhbmdlcyBhbmQgc3VieGFjdCBpbmZvICovCiAJCQlzdHJlYW1fY2xlYW51cF9maWxlcyhNeUxv Z2ljYWxSZXBXb3JrZXItPnN1YmlkLCB4aWQpOwogCQl9CisKKwkJLyogU2V0IHRoZSBmbGFnIHRo YXQgd2Ugd2lsbCBub3QgcmV0cnkgbGF0ZXIuICovCisJCXNldF9zdWJzY3JpcHRpb25fcmV0cnko ZmFsc2UpOwogCX0KIAogCS8qIENoZWNrIHRoZSBzdGF0dXMgb2YgYXBwbHkgYmFja2dyb3VuZCB3 b3JrZXIgaWYgYW55LiAqLwpAQCAtMzg1Niw2ICszODc5LDkgQEAgc3RhcnRfdGFibGVfc3luYyhY TG9nUmVjUHRyICpvcmlnaW5fc3RhcnRwb3MsIGNoYXIgKipteXNsb3RuYW1lKQogCX0KIAlQR19D QVRDSCgpOwogCXsKKwkJLyogU2V0IHRoZSBmbGFnIHRoYXQgd2Ugd2lsbCByZXRyeSBsYXRlci4g Ki8KKwkJc2V0X3N1YnNjcmlwdGlvbl9yZXRyeSh0cnVlKTsKKwogCQlpZiAoTXlTdWJzY3JpcHRp b24tPmRpc2FibGVvbmVycikKIAkJCURpc2FibGVTdWJzY3JpcHRpb25BbmRFeGl0KCk7CiAJCWVs c2UKQEAgLTM4OTQsNiArMzkyMCw5IEBAIHN0YXJ0X2FwcGx5KFhMb2dSZWNQdHIgb3JpZ2luX3N0 YXJ0cG9zKQogCX0KIAlQR19DQVRDSCgpOwogCXsKKwkJLyogU2V0IHRoZSBmbGFnIHRoYXQgd2Ug d2lsbCByZXRyeSBsYXRlci4gKi8KKwkJc2V0X3N1YnNjcmlwdGlvbl9yZXRyeSh0cnVlKTsKKwog CQlpZiAoTXlTdWJzY3JpcHRpb24tPmRpc2FibGVvbmVycikKIAkJCURpc2FibGVTdWJzY3JpcHRp b25BbmRFeGl0KCk7CiAJCWVsc2UKQEAgLTQzOTUsMyArNDQyNCw2MyBAQCByZXNldF9hcHBseV9l cnJvcl9jb250ZXh0X2luZm8odm9pZCkKIAlhcHBseV9lcnJvcl9jYWxsYmFja19hcmcucmVtb3Rl X2F0dG51bSA9IC0xOwogCXNldF9hcHBseV9lcnJvcl9jb250ZXh0X3hhY3QoSW52YWxpZFRyYW5z YWN0aW9uSWQsIEludmFsaWRYTG9nUmVjUHRyKTsKIH0KKworLyoKKyAqIFNldCBzdWJyZXRyeSBv ZiBwZ19zdWJzY3JpcHRpb24gY2F0YWxvZy4KKyAqCisgKiBJZiByZXRyeSBpcyB0cnVlLCBzdWJz Y3JpYmVyIGlzIGFib3V0IHRvIGV4aXQgd2l0aCBhbiBlcnJvci4gT3RoZXJ3aXNlLCBpdAorICog bWVhbnMgdGhhdCB0aGUgY2hhbmdlcyB3YXMgYXBwbGllZCBzdWNjZXNzZnVsbHkuCisgKi8KK3N0 YXRpYyB2b2lkCitzZXRfc3Vic2NyaXB0aW9uX3JldHJ5KGJvb2wgcmV0cnkpCit7CisJUmVsYXRp b24JcmVsOworCUhlYXBUdXBsZQl0dXA7CisJYm9vbAkJc3RhcnRlZF90eCA9IGZhbHNlOworCWJv b2wJCW51bGxzW05hdHRzX3BnX3N1YnNjcmlwdGlvbl07CisJYm9vbAkJcmVwbGFjZXNbTmF0dHNf cGdfc3Vic2NyaXB0aW9uXTsKKwlEYXR1bQkJdmFsdWVzW05hdHRzX3BnX3N1YnNjcmlwdGlvbl07 CisKKwlpZiAoTXlTdWJzY3JpcHRpb24tPnJldHJ5ID09IHJldHJ5IHx8CisJCWFtX2FwcGx5X2Jn d29ya2VyKCkpCisJCXJldHVybjsKKworCWlmICghSXNUcmFuc2FjdGlvblN0YXRlKCkpCisJewor CQlTdGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCQlzdGFydGVkX3R4ID0gdHJ1ZTsKKwl9CisK KwkvKiBMb29rIHVwIHRoZSBzdWJzY3JpcHRpb24gaW4gdGhlIGNhdGFsb2cgKi8KKwlyZWwgPSB0 YWJsZV9vcGVuKFN1YnNjcmlwdGlvblJlbGF0aW9uSWQsIFJvd0V4Y2x1c2l2ZUxvY2spOworCXR1 cCA9IFNlYXJjaFN5c0NhY2hlQ29weTEoU1VCU0NSSVBUSU9OT0lELAorCQkJCQkJCSAgT2JqZWN0 SWRHZXREYXR1bShNeVN1YnNjcmlwdGlvbi0+b2lkKSk7CisKKwlpZiAoIUhlYXBUdXBsZUlzVmFs aWQodHVwKSkKKwkJZWxvZyhFUlJPUiwgInN1YnNjcmlwdGlvbiBcIiVzXCIgZG9lcyBub3QgZXhp c3QiLCBNeVN1YnNjcmlwdGlvbi0+bmFtZSk7CisKKwlMb2NrU2hhcmVkT2JqZWN0KFN1YnNjcmlw dGlvblJlbGF0aW9uSWQsIE15U3Vic2NyaXB0aW9uLT5vaWQsIDAsCisJCQkJCSBBY2Nlc3NTaGFy ZUxvY2spOworCisJLyogRm9ybSBhIG5ldyB0dXBsZS4gKi8KKwltZW1zZXQodmFsdWVzLCAwLCBz aXplb2YodmFsdWVzKSk7CisJbWVtc2V0KG51bGxzLCBmYWxzZSwgc2l6ZW9mKG51bGxzKSk7CisJ bWVtc2V0KHJlcGxhY2VzLCBmYWxzZSwgc2l6ZW9mKHJlcGxhY2VzKSk7CisKKwkvKiByZXNldCBz dWJyZXRyeSAqLworCXZhbHVlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJyZXRyeSAtIDFdID0g Qm9vbEdldERhdHVtKHJldHJ5KTsKKwlyZXBsYWNlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJy ZXRyeSAtIDFdID0gdHJ1ZTsKKworCXR1cCA9IGhlYXBfbW9kaWZ5X3R1cGxlKHR1cCwgUmVsYXRp b25HZXREZXNjcihyZWwpLCB2YWx1ZXMsIG51bGxzLAorCQkJCQkJCXJlcGxhY2VzKTsKKworCS8q IFVwZGF0ZSB0aGUgY2F0YWxvZy4gKi8KKwlDYXRhbG9nVHVwbGVVcGRhdGUocmVsLCAmdHVwLT50 X3NlbGYsIHR1cCk7CisKKwkvKiBDbGVhbnVwLiAqLworCWhlYXBfZnJlZXR1cGxlKHR1cCk7CisJ dGFibGVfY2xvc2UocmVsLCBOb0xvY2spOworCisJaWYgKHN0YXJ0ZWRfdHgpCisJCUNvbW1pdFRy YW5zYWN0aW9uQ29tbWFuZCgpOworfQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1 bXAuYyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKaW5kZXggNmY4YjMwYWJiMC4uOWIzZmZl MDg4OCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYworKysgYi9zcmMvYmlu L3BnX2R1bXAvcGdfZHVtcC5jCkBAIC00NDcyLDggKzQ0NzIsOSBAQCBnZXRTdWJzY3JpcHRpb25z KEFyY2hpdmUgKmZvdXQpCiAJbnR1cHMgPSBQUW50dXBsZXMocmVzKTsKIAogCS8qCi0JICogR2V0 IHN1YnNjcmlwdGlvbiBmaWVsZHMuIFdlIGRvbid0IGluY2x1ZGUgc3Vic2tpcGxzbiBpbiB0aGUg ZHVtcCBhcwotCSAqIGFmdGVyIHJlc3RvcmluZyB0aGUgZHVtcCB0aGlzIHZhbHVlIG1heSBubyBs b25nZXIgYmUgcmVsZXZhbnQuCisJICogR2V0IHN1YnNjcmlwdGlvbiBmaWVsZHMuIFdlIGRvbid0 IGluY2x1ZGUgc3Vic2tpcGxzbiBhbmQgc3VicmV0cnkgaW4KKwkgKiB0aGUgZHVtcCBhcyBhZnRl ciByZXN0b3JpbmcgdGhlIGR1bXAgdGhpcyB2YWx1ZSBtYXkgbm8gbG9uZ2VyIGJlCisJICogcmVs ZXZhbnQuCiAJICovCiAJaV90YWJsZW9pZCA9IFBRZm51bWJlcihyZXMsICJ0YWJsZW9pZCIpOwog CWlfb2lkID0gUFFmbnVtYmVyKHJlcywgIm9pZCIpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv Y2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfc3Vic2Ny aXB0aW9uLmgKaW5kZXggOWIzOTRhNDVmZS4uZGM3NTk3YmY4MCAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9n L3BnX3N1YnNjcmlwdGlvbi5oCkBAIC03Niw2ICs3Niw4IEBAIENBVEFMT0cocGdfc3Vic2NyaXB0 aW9uLDYxMDAsU3Vic2NyaXB0aW9uUmVsYXRpb25JZCkgQktJX1NIQVJFRF9SRUxBVElPTiBCS0lf Uk9XCiAJYm9vbAkJc3ViZGlzYWJsZW9uZXJyOwkvKiBUcnVlIGlmIGEgd29ya2VyIGVycm9yIHNo b3VsZCBjYXVzZSB0aGUKIAkJCQkJCQkJCSAqIHN1YnNjcmlwdGlvbiB0byBiZSBkaXNhYmxlZCAq LwogCisJYm9vbAkJc3VicmV0cnk7CQkvKiBUcnVlIGlmIHRoZSBwcmV2aW91cyBhcHBseSBjaGFu Z2UgZmFpbGVkLiAqLworCiAjaWZkZWYgQ0FUQUxPR19WQVJMRU4JCQkvKiB2YXJpYWJsZS1sZW5n dGggZmllbGRzIHN0YXJ0IGhlcmUgKi8KIAkvKiBDb25uZWN0aW9uIHN0cmluZyB0byB0aGUgcHVi bGlzaGVyICovCiAJdGV4dAkJc3ViY29ubmluZm8gQktJX0ZPUkNFX05PVF9OVUxMOwpAQCAtMTE1 LDYgKzExNyw4IEBAIHR5cGVkZWYgc3RydWN0IFN1YnNjcmlwdGlvbgogCWJvb2wJCWRpc2FibGVv bmVycjsJLyogSW5kaWNhdGVzIGlmIHRoZSBzdWJzY3JpcHRpb24gc2hvdWxkIGJlCiAJCQkJCQkJ CSAqIGF1dG9tYXRpY2FsbHkgZGlzYWJsZWQgaWYgYSB3b3JrZXIgZXJyb3IKIAkJCQkJCQkJICog b2NjdXJzICovCisJYm9vbAkJcmV0cnk7CQkJLyogSW5kaWNhdGVzIGlmIHRoZSBwcmV2aW91cyBh cHBseSBjaGFuZ2UKKwkJCQkJCQkJICogZmFpbGVkLiAqLwogCWNoYXIJICAgKmNvbm5pbmZvOwkJ LyogQ29ubmVjdGlvbiBzdHJpbmcgdG8gdGhlIHB1Ymxpc2hlciAqLwogCWNoYXIJICAgKnNsb3Ru YW1lOwkJLyogTmFtZSBvZiB0aGUgcmVwbGljYXRpb24gc2xvdCAqLwogCWNoYXIJICAgKnN5bmNj b21taXQ7CQkvKiBTeW5jaHJvbm91cyBjb21taXQgc2V0dGluZyBmb3Igd29ya2VyICovCmRpZmYg LS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzJfc3RyZWFtaW5nX2FwcGx5LnBsIGIv c3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDMyX3N0cmVhbWluZ19hcHBseS5wbAppbmRleCA3NzZm MTM5MGZhLi41MTQ4M2IwNGExIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8w MzJfc3RyZWFtaW5nX2FwcGx5LnBsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzMl9z dHJlYW1pbmdfYXBwbHkucGwKQEAgLTQ2LDcgKzQ2LDkgQEAgJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKAogJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKIAog IyBJdCBpcyBub3QgYWxsb3dlZCB0aGF0IHRoZSB1bmlxdWUgaW5kZXggb24gdGhlIHB1Ymxpc2hl ciBhbmQgdGhlIHN1YnNjcmliZXIKLSMgaXMgZGlmZmVyZW50LiBDaGVjayB0aGUgZXJyb3IgcmVw b3J0ZWQgYnkgYmFja2dyb3VuZCB3b3JrZXIgaW4gdGhpcyBjYXNlLgorIyBpcyBkaWZmZXJlbnQu IENoZWNrIHRoZSBlcnJvciByZXBvcnRlZCBieSBiYWNrZ3JvdW5kIHdvcmtlciBpbiB0aGlzIGNh c2UuIEFuZAorIyBhZnRlciByZXRyeWluZyBpbiBhcHBseSB3b3JrZXIsIHdlIGNoZWNrIGlmIHRo ZSBkYXRhIGlzIHJlcGxpY2F0ZWQKKyMgc3VjY2Vzc2Z1bGx5LgogJG5vZGVfc3Vic2NyaWJlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIkNSRUFURSBVTklRVUUgSU5ERVggdGVzdF90YWJfYl9p ZHggT04gdGVzdF90YWIgKGIpIik7CiAKQEAgLTY5LDE3ICs3MSwyMCBAQCAkbm9kZV9zdWJzY3Jp YmVyLT53YWl0X2Zvcl9sb2coCiAJcXIvRVJST1I6ICBjYW5ub3QgcmVwbGljYXRlIHJlbGF0aW9u IHdpdGggZGlmZmVyZW50IHVuaXF1ZSBpbmRleC8sCiAJJG9mZnNldCk7CiAKLSMgRHJvcCB0aGUg dW5pcXVlIGluZGV4IG9uIHRoZSBzdWJzY3JpYmVyLCBub3cgaXQgd29ya3MuCi0kbm9kZV9zdWJz Y3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRST1AgSU5ERVggdGVzdF90YWJfYl9pZHgi KTsKLQorIyBXYWl0IGZvciB0aGlzIHN0cmVhbWluZyB0cmFuc2FjdGlvbiB0byBiZSBhcHBsaWVk IGluIHRoZSBhcHBseSB3b3JrZXIuCiAkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAo JGFwcG5hbWUpOwogCiBteSAkcmVzdWx0ID0KICAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJlc3Vs dCwgcXEoNTAwMCksICdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBhZnRlciBkcm9wcGlu ZyBpbmRleCcpOworaXMoJHJlc3VsdCwgcXEoNTAwMCksICdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vi c2NyaWJlcnMgYWZ0ZXIgcmV0cnlpbmcnKTsKKworIyBEcm9wIHRoZSB1bmlxdWUgaW5kZXggb24g dGhlIHN1YnNjcmliZXIuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywg IkRST1AgSU5ERVggdGVzdF90YWJfYl9pZHgiKTsKIAogIyBUcmlnZ2VycyB3aGljaCBleGVjdXRl IG5vbi1pbW11dGFibGUgZnVuY3Rpb24gYXJlIG5vdCBhbGxvd2VkIG9uIHRoZQogIyBzdWJzY3Jp YmVyIHNpZGUuIENoZWNrIHRoZSBlcnJvciByZXBvcnRlZCBieSBiYWNrZ3JvdW5kIHdvcmtlciBp biB0aGlzIGNhc2UuCisjIEFuZCBhZnRlciByZXRyeWluZyBpbiBhcHBseSB3b3JrZXIsIHdlIGNo ZWNrIGlmIHRoZSBkYXRhIGlzIHJlcGxpY2F0ZWQKKyMgc3VjY2Vzc2Z1bGx5LgogJG5vZGVfc3Vi c2NyaWJlci0+c2FmZV9wc3FsKAogCSdwb3N0Z3JlcycsIHFxewogQ1JFQVRFIEZVTkNUSU9OIHRy aWdnZXJfZnVuYygpIFJFVFVSTlMgVFJJR0dFUiBBUyBcJFwkCkBAIC0xMDIsMTkgKzEwNywyMSBA QCAkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCiAJcXIvRVJST1I6ICBjYW5ub3QgcmVw bGljYXRlIHJlbGF0aW9uLiBUaGVyZSBpcyBhdCBsZWFzdCBvbmUgbm9uLWltbXV0YWJsZSBmdW5j dGlvbi8sCiAJJG9mZnNldCk7CiAKLSMgRHJvcCB0aGUgdHJpZ2dlciBvbiB0aGUgc3Vic2NyaWJl ciwgbm93IGl0IHdvcmtzLgotJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs Ci0JIkRST1AgVFJJR0dFUiBpbnNlcnRfdHJpZyBPTiB0ZXN0X3RhYiIpOwotCisjIFdhaXQgZm9y IHRoaXMgc3RyZWFtaW5nIHRyYW5zYWN0aW9uIHRvIGJlIGFwcGxpZWQgaW4gdGhlIGFwcGx5IHdv cmtlci4KICRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CiAKICRy ZXN1bHQgPQogICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVD VCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiIik7Ci1pcygkcmVzdWx0LCBxcSgwKSwgJ2RhdGEgcmVw bGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIGRyb3BwaW5nIHRyaWdnZXInKTsKK2lzKCRyZXN1 bHQsIHFxKDApLCAnZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXJzIGFmdGVyIHJldHJ5aW5n Jyk7CisKKyMgRHJvcCB0aGUgdHJpZ2dlciBvbiB0aGUgc3Vic2NyaWJlci4KKyRub2RlX3N1YnNj cmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJEUk9QIFRSSUdHRVIgaW5zZXJ0X3RyaWcg T04gdGVzdF90YWIiKTsKIAogIyBJdCBpcyBub3QgYWxsb3dlZCB0aGF0IGNvbHVtbiBkZWZhdWx0 IHZhbHVlIGV4cHJlc3Npb24gY29udGFpbnMgYQogIyBub24taW1tdXRhYmxlIGZ1bmN0aW9uIG9u IHRoZSBzdWJzY3JpYmVyIHNpZGUuIENoZWNrIHRoZSBlcnJvciByZXBvcnRlZCBieQotIyBiYWNr Z3JvdW5kIHdvcmtlciBpbiB0aGlzIGNhc2UuCisjIGJhY2tncm91bmQgd29ya2VyIGluIHRoaXMg Y2FzZS4gQW5kIGFmdGVyIHJldHJ5aW5nIGluIGFwcGx5IHdvcmtlciwgd2UgY2hlY2sKKyMgaWYg dGhlIGRhdGEgaXMgcmVwbGljYXRlZCBzdWNjZXNzZnVsbHkuCiAkbm9kZV9zdWJzY3JpYmVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiQUxURVIgVEFCTEUgdGVzdF90YWIgQUxURVIgQ09MVU1O IGIgU0VUIERFRkFVTFQgcmFuZG9tKCkiKTsKIApAQCAtMTI5LDIwICsxMzYsMjEgQEAgJG5vZGVf c3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAogCXFyL0VSUk9SOiAgY2Fubm90IHJlcGxpY2F0ZSBy ZWxhdGlvbi4gVGhlcmUgaXMgYXQgbGVhc3Qgb25lIG5vbi1pbW11dGFibGUgZnVuY3Rpb24vLAog CSRvZmZzZXQpOwogCi0jIERyb3AgZGVmYXVsdCB2YWx1ZSBvbiB0aGUgc3Vic2NyaWJlciwgbm93 IGl0IHdvcmtzLgotJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIkFM VEVSIFRBQkxFIHRlc3RfdGFiIEFMVEVSIENPTFVNTiBiIERST1AgREVGQVVMVCIpOwotCisjIFdh aXQgZm9yIHRoaXMgc3RyZWFtaW5nIHRyYW5zYWN0aW9uIHRvIGJlIGFwcGxpZWQgaW4gdGhlIGFw cGx5IHdvcmtlci4KICRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7 CiAKICRyZXN1bHQgPQogICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywg IlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiIik7Ci1pcygkcmVzdWx0LCBxcSg1MDAwKSwK LQknZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIgZHJvcHBpbmcgZGVmYXVsdCB2 YWx1ZSBleHByZXNzaW9uJyk7CitpcygkcmVzdWx0LCBxcSg1MDAwKSwgJ2RhdGEgcmVwbGljYXRl ZCB0byBzdWJzY3JpYmVycyBhZnRlciByZXRyeWluZycpOworCisjIERyb3AgZGVmYXVsdCB2YWx1 ZSBvbiB0aGUgc3Vic2NyaWJlci4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAorCSJBTFRFUiBUQUJMRSB0ZXN0X3RhYiBBTFRFUiBDT0xVTU4gYiBEUk9QIERFRkFVTFQi KTsKIAogIyBJdCBpcyBub3QgYWxsb3dlZCB0aGF0IGRvbWFpbiBjb25zdHJhaW50IGV4cHJlc3Np b24gY29udGFpbnMgYSBub24taW1tdXRhYmxlCiAjIGZ1bmN0aW9uIG9uIHRoZSBzdWJzY3JpYmVy IHNpZGUuIENoZWNrIHRoZSBlcnJvciByZXBvcnRlZCBieSBiYWNrZ3JvdW5kCi0jIHdvcmtlciBp biB0aGlzIGNhc2UuCisjIHdvcmtlciBpbiB0aGlzIGNhc2UuIEFuZCBhZnRlciByZXRyeWluZyBp biBhcHBseSB3b3JrZXIsIHdlIGNoZWNrIGlmIHRoZSBkYXRhCisjIGlzIHJlcGxpY2F0ZWQgc3Vj Y2Vzc2Z1bGx5LgogJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAogCSdwb3N0Z3JlcycsIHFx ewogQ1JFQVRFIERPTUFJTiB0ZXN0X2RvbWFpbiBBUyBpbnQgQ0hFQ0soVkFMVUUgPiByYW5kb20o KSk7CkBAIC0xNTgsMjEgKzE2NiwyMSBAQCAkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2co CiAJcXIvRVJST1I6ICBjYW5ub3QgcmVwbGljYXRlIHJlbGF0aW9uLiBUaGVyZSBpcyBhdCBsZWFz dCBvbmUgbm9uLWltbXV0YWJsZSBmdW5jdGlvbi8sCiAJJG9mZnNldCk7CiAKLSMgRHJvcCBkb21h aW4gY29uc3RyYWludCBleHByZXNzaW9uIG9uIHRoZSBzdWJzY3JpYmVyLCBub3cgaXQgd29ya3Mu Ci0kbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiQUxURVIgVEFCTEUg dGVzdF90YWIgQUxURVIgQ09MVU1OIGEgVFlQRSBpbnQiKTsKLQorIyBXYWl0IGZvciB0aGlzIHN0 cmVhbWluZyB0cmFuc2FjdGlvbiB0byBiZSBhcHBsaWVkIGluIHRoZSBhcHBseSB3b3JrZXIuCiAk bm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwogCiAkcmVzdWx0ID0K ICAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQo KikgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwgcXEoMCksCi0JJ2RhdGEgcmVwbGljYXRl ZCB0byBzdWJzY3JpYmVyIGFmdGVyIGRyb3BwaW5nIGRvbWFpbiBjb25zdHJhaW50IGV4cHJlc3Np b24nCi0pOworaXMoJHJlc3VsdCwgcXEoMCksICdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJl cnMgYWZ0ZXIgcmV0cnlpbmcnKTsKKworIyBEcm9wIGRvbWFpbiBjb25zdHJhaW50IGV4cHJlc3Np b24gb24gdGhlIHN1YnNjcmliZXIuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKwkiQUxURVIgVEFCTEUgdGVzdF90YWIgQUxURVIgQ09MVU1OIGEgVFlQRSBpbnQiKTsK IAotIyBJdCBpcyBub3QgYWxsb3dlZCB0aGF0IGNvbnN0cmFpbnQgZXhwcmVzc2lvbiBjb250YWlu cyBhIG5vbi1pbW11dGFibGUgZnVuY3Rpb24KLSMgb24gdGhlIHN1YnNjcmliZXIgc2lkZS4gQ2hl Y2sgdGhlIGVycm9yIHJlcG9ydGVkIGJ5IGJhY2tncm91bmQgd29ya2VyIGluIHRoaXMKLSMgY2Fz ZS4KKyMgSXQgaXMgbm90IGFsbG93ZWQgdGhhdCBjb25zdHJhaW50IGV4cHJlc3Npb24gY29udGFp bnMgYSBub24taW1tdXRhYmxlCisjIGZ1bmN0aW9uIG9uIHRoZSBzdWJzY3JpYmVyIHNpZGUuIENo ZWNrIHRoZSBlcnJvciByZXBvcnRlZCBieSBiYWNrZ3JvdW5kCisjIHdvcmtlciBpbiB0aGlzIGNh c2UuIEFuZCBhZnRlciByZXRyeWluZyBpbiBhcHBseSB3b3JrZXIsIHdlIGNoZWNrIGlmIHRoZSBk YXRhCisjIGlzIHJlcGxpY2F0ZWQgc3VjY2Vzc2Z1bGx5LgogJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKAogCSdwb3N0Z3JlcycsIHFxewogQUxURVIgVEFCTEUgdGVzdF90YWIgQUREIENPTlNU UkFJTlQgdGVzdF90YWJfY29uIGNoZWNrIChhID4gcmFuZG9tKCkpOwpAQCAtMTg5LDE5ICsxOTcs MjAgQEAgJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAogCXFyL0VSUk9SOiAgY2Fubm90 IHJlcGxpY2F0ZSByZWxhdGlvbi4gVGhlcmUgaXMgYXQgbGVhc3Qgb25lIG5vbi1pbW11dGFibGUg ZnVuY3Rpb24vLAogCSRvZmZzZXQpOwogCi0jIERyb3AgY29uc3RyYWludCBvbiB0aGUgc3Vic2Ny aWJlciwgbm93IGl0IHdvcmtzLgotJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCi0JIkFMVEVSIFRBQkxFIHRlc3RfdGFiIERST1AgQ09OU1RSQUlOVCB0ZXN0X3RhYl9jb24i KTsKLQorIyBXYWl0IGZvciB0aGlzIHN0cmVhbWluZyB0cmFuc2FjdGlvbiB0byBiZSBhcHBsaWVk IGluIHRoZSBhcHBseSB3b3JrZXIuCiAkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAo JGFwcG5hbWUpOwogCiAkcmVzdWx0ID0KICAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwg cXEoNTAwMCksCi0JJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIGRyb3BwaW5n IGNvbnN0cmFpbnQgZXhwcmVzc2lvbicpOworaXMoJHJlc3VsdCwgcXEoNTAwMCksICdkYXRhIHJl cGxpY2F0ZWQgdG8gc3Vic2NyaWJlcnMgYWZ0ZXIgcmV0cnlpbmcnKTsKKworIyBEcm9wIGNvbnN0 cmFpbnQgb24gdGhlIHN1YnNjcmliZXIuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKKwkiQUxURVIgVEFCTEUgdGVzdF90YWIgRFJPUCBDT05TVFJBSU5UIHRlc3RfdGFi X2NvbiIpOwogCiAjIEl0IGlzIG5vdCBhbGxvd2VkIHRoYXQgZm9yZWlnbiBrZXkgb24gdGhlIHN1 YnNjcmliZXIgc2lkZS4gQ2hlY2sgdGhlIGVycm9yCi0jIHJlcG9ydGVkIGJ5IGJhY2tncm91bmQg d29ya2VyIGluIHRoaXMgY2FzZS4KKyMgcmVwb3J0ZWQgYnkgYmFja2dyb3VuZCB3b3JrZXIgaW4g dGhpcyBjYXNlLiBBbmQgYWZ0ZXIgcmV0cnlpbmcgaW4gYXBwbHkKKyMgd29ya2VyLCB3ZSBjaGVj ayBpZiB0aGUgZGF0YSBpcyByZXBsaWNhdGVkIHN1Y2Nlc3NmdWxseS4KICRub2RlX3B1Ymxpc2hl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJERUxFVEUgRlJPTSB0ZXN0X3RhYiIpOwogJG5vZGVf cHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKICRub2RlX3N1YnNjcmliZXIt PnNhZmVfcHNxbCgKQEAgLTIyMSwxNiArMjMwLDE2IEBAICRub2RlX3N1YnNjcmliZXItPndhaXRf Zm9yX2xvZygKIAlxci9FUlJPUjogIGNhbm5vdCByZXBsaWNhdGUgcmVsYXRpb24uIFRoZXJlIGlz IGF0IGxlYXN0IG9uZSBub24taW1tdXRhYmxlIGZ1bmN0aW9uLywKIAkkb2Zmc2V0KTsKIAotIyBE cm9wIHRoZSBmb3JlaWduIGtleSBjb25zdHJhaW50IG9uIHRoZSBzdWJzY3JpYmVyLCBub3cgaXQg d29ya3MuCi0kbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiQUxURVIg VEFCTEUgdGVzdF90YWIgRFJPUCBDT05TVFJBSU5UIHRlc3RfdGFiZmsiKTsKLQorIyBXYWl0IGZv ciB0aGlzIHN0cmVhbWluZyB0cmFuc2FjdGlvbiB0byBiZSBhcHBsaWVkIGluIHRoZSBhcHBseSB3 b3JrZXIuCiAkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwogCiAk cmVzdWx0ID0KICAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxF Q1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwgcXEoNTAwMCksCi0JJ2Rh dGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIGRyb3BwaW5nIHRoZSBmb3JlaWduIGtl eScpOworaXMoJHJlc3VsdCwgcXEoNTAwMCksICdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJl cnMgYWZ0ZXIgcmV0cnlpbmcnKTsKKworIyBEcm9wIHRoZSBmb3JlaWduIGtleSBjb25zdHJhaW50 IG9uIHRoZSBzdWJzY3JpYmVyLgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCisJIkFMVEVSIFRBQkxFIHRlc3RfdGFiIERST1AgQ09OU1RSQUlOVCB0ZXN0X3RhYmZrIik7 CiAKICRub2RlX3N1YnNjcmliZXItPnN0b3A7CiAkbm9kZV9wdWJsaXNoZXItPnN0b3A7Ci0tIAoy LjIzLjAud2luZG93cy4xCgo= --_006_OS3PR01MB62756BD9482EB6BB1CA4CD4D9EAA9OS3PR01MB6275jpnp_--