From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 2DF83C25B77 for ; Wed, 15 May 2024 07:17:13 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1s78rf-0005VB-Ec; Wed, 15 May 2024 03:15:53 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1s78r5-00050U-BZ for qemu-devel@nongnu.org; Wed, 15 May 2024 03:15:19 -0400 Received: from smarthost3.eviden.com ([80.78.11.84]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1s78qp-0000oi-Ik for qemu-devel@nongnu.org; Wed, 15 May 2024 03:15:14 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=eviden.com; i=@eviden.com; q=dns/txt; s=mail; t=1715757299; x=1747293299; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=fz6Qde44pAZARZPh4pD4Y74QvPWq0AhDSjUgpnKMgWE=; b=m8iT7pRwb+camtFGdUQzSusE1cvA3qxRDpINDHZoJDc05GpkHQ51qOKS gg03k80BIPcwdeR3M4oO/B65kf/cWJBEQZedJBVLvixs7Blso3CE1MdG+ 5cw0UkiFKiXfkT5z1DKHr6PAGOMoYYDeWBMKBGTu/xHduklKDzrpZTvij +GGnWazcS431Hl7WoF/kvPQBhR+ebuV17H6lgrWpU8XjrDuQdHoLYrGSp lg0FNctgESuNUesoXSQ/ykjKB3yc/5304jOQCHPNh3Aj3LgsJbMoYNNPN iBYfPbNL/i7t7fQcfSVIwkE7kVTdznsF5hDNfi+tVmDrO4vlMg/AtsTUt g==; X-IronPort-AV: E=Sophos;i="6.08,161,1712613600"; d="scan'208";a="12581813" X-MGA-submission: =?us-ascii?q?MDGz5Ud06yXhBtlayaMxGpDwPvnv0ijZdf/UkF?= =?us-ascii?q?ndBExENWIkj346+Iqkejq8PuSHPym7vhlNmFIWVa5emb38Melj8QchX5?= =?us-ascii?q?IeLrrHXrmju6J3Oomcy2QKHatnKHr2cvT9OSf2/KqoYCw6vSk/K9JaY3?= =?us-ascii?q?wxZzd3A9bRWIwgx+1r+/59Tw=3D=3D?= Received: from mail-vi1eur03lp2105.outbound.protection.outlook.com (HELO EUR03-VI1-obe.outbound.protection.outlook.com) ([104.47.30.105]) by smarthost3.eviden.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 May 2024 09:14:22 +0200 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=KEWNxJ41ElHHBfA8G5nptXZp+7FKDYQV5NMxH/pBoaUE8Q4yTw1/tMqCgLCPUbsWLXVXL0fxiToyFhDnRLSHkOOYXvaslKqqFVk2vNATajOiKYrNDpyokgbJKEG1Mgn/2OavmFnPmn6Pv0mb2vaJlYwupDme8rl6/7DoZiyZ/cVAeLB16ZhmYlkS78xkXvqQHmKlBl++tTbA7tcFTsWGtS7mMkyPAEZ99f4TI2vFf//X2q8oH9VIGOmn7YxqDEMQLv7RPIExlKwBoaGUUH1OWcPH6saNob+tLR1GKMbZ3XX/K07PCROp16ToI0zL28pG/0VaVFkWJgvw2WbGdlVhog== 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=fz6Qde44pAZARZPh4pD4Y74QvPWq0AhDSjUgpnKMgWE=; b=XMXeFfKJ9F4YM1HfuPwHTjYk53gj9yc+8CGD5+Zrk/wSyuGuj8avgcb7FGPVOIWx1u5YGETQFusp1tjYuWDJLLqCg4IKPjVf1u9dSd4NlNbJeEaprj6YiLK9MrUz1111DRZnVAG2nyrgQmlSjiMLH0qbINyUWRH5TgmKb+U5mSxHFOSrkpa1W8ADMhtxlrhXYKCHfm4LuHMCt+m3Hiq9ld/HcSC3ihCyRk1+AfEG/lL6Nw/Mo1w+tzlDpdGFMlDWsrHI/Dez/BN8+i0aUZzeRMgAoRZO06ZH1IjyD0puqhAmyBoEiZCqdeHn3Ps02+JnR25bWM4HKoLweWvcu2p5hg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=eviden.com; dmarc=pass action=none header.from=eviden.com; dkim=pass header.d=eviden.com; arc=none Received: from AM8PR07MB7602.eurprd07.prod.outlook.com (2603:10a6:20b:24b::7) by PAXPR07MB8496.eurprd07.prod.outlook.com (2603:10a6:102:2b5::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7544.55; Wed, 15 May 2024 07:14:20 +0000 Received: from AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d]) by AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d%5]) with mapi id 15.20.7544.056; Wed, 15 May 2024 07:14:20 +0000 From: CLEMENT MATHIEU--DRIF To: "qemu-devel@nongnu.org" CC: "jasowang@redhat.com" , "zhenzhong.duan@intel.com" , "kevin.tian@intel.com" , "yi.l.liu@intel.com" , "joao.m.martins@oracle.com" , "peterx@redhat.com" , CLEMENT MATHIEU--DRIF Subject: [PATCH ats_vtd v2 21/25] atc: generic ATC that can be used by PCIe devices that support SVM Thread-Topic: [PATCH ats_vtd v2 21/25] atc: generic ATC that can be used by PCIe devices that support SVM Thread-Index: AQHappeAjUdU2werkUaJiYxy8FgLhA== Date: Wed, 15 May 2024 07:14:20 +0000 Message-ID: <20240515071057.33990-22-clement.mathieu--drif@eviden.com> References: <20240515071057.33990-1-clement.mathieu--drif@eviden.com> In-Reply-To: <20240515071057.33990-1-clement.mathieu--drif@eviden.com> Accept-Language: en-GB, fr-FR, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=eviden.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: AM8PR07MB7602:EE_|PAXPR07MB8496:EE_ x-ms-office365-filtering-correlation-id: 5992b2fc-2973-425e-5339-08dc74aea414 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230031|366007|1800799015|376005|38070700009; x-microsoft-antispam-message-info: =?utf-8?B?WEgxVEdPYVB4cW1YYytHbHNmTVkyTmJRd2xldXZvTStxakNMUnUwdm9XeEJh?= =?utf-8?B?N3dmV0d3MkVNTjA5cmZaUkRyTGRFTTF3Vzdkcy9LT0tUVlhScnZzRmZydC9X?= =?utf-8?B?R21yR1lTVGNycXdOU3Vxend1YWtORUxvQjlaVnZ1YmdmSlY4UHRzVlpPc2Vn?= =?utf-8?B?OVBjd1VSdCtQMFBvTlNPK2FSZHR1eU42alJualE2ejFHMllzZ2MyT0NWaXFU?= =?utf-8?B?ci8wcHZTQXZIa25nM0hpWWMvNUxKN0l5bENlQnN4MmFXaEhPT28yUjY5dXl6?= =?utf-8?B?WlAxZzFvSnBDb1RZUmI0dVZTR1lDSHZFL29pSHd3STVSc1d5NHJEamVEZER2?= =?utf-8?B?ck4zYUx2b0FEOUl2QldXK2ZKK0tGTHdtQWhyMEhHY3ZXTitDWUU4V1d5d0Mz?= =?utf-8?B?OTJkOUFudmFkRWtDYmZxMEI3Rm9XTmQzaUE0aTN6K2VqdHVvR0Y5MWZVT0xt?= =?utf-8?B?YXd5Qkpac1JGdSs3dlQvWWF3ZS9DMDQrMElPRmJiUlJDNlFKdDU3dUZ6dWV5?= =?utf-8?B?aDBlMms0YVE0U1JTNWhFYUcxYUJnQS9wR0ZXMVlCeGJWc2laM0VYQ1FrL2Q1?= =?utf-8?B?MGRUL0V4c2JYelBiZ2p2cVJqc3pQcC9rRGUrVTRLMDBFdTVMN29peElzRFNG?= =?utf-8?B?ZGtiZmwxREtoNHZ6SlQ2QmpOdENLa1ZUUzJ2RDF1b0pYeFVlc3pvMm8xVU5o?= =?utf-8?B?L1BzazYzMUpzeE9WVnVuQWJyYkp0czI1RDFMSXY3Y081SEI5bFUzT1RxZkox?= =?utf-8?B?S01hb1kxcEpHVFRUNjVKZ0V2V1FUd3NvMTYyeEUzY0IxV2tsYldRa0lCZGx4?= =?utf-8?B?U0cvSDVqa2Z3N1BVZ2hLTFBDYlRUNGJ3V3VoQm1UbWt1THh6RWpJNXVZb0t0?= =?utf-8?B?SjZtNlF1dnNycTV5cVhmR1dYckFRdm4rNEw3LzYra3VLRVZiY2pDVWovZ0tR?= =?utf-8?B?UVd5WGV5MXdLQ0o0T3gzZkpGdXpXYUZjdTlBUjhyVEFaR09Oa0hsbEQ1cHJv?= =?utf-8?B?U0hxUDcyM29hVTlNY2NmY3VuREl0MEpma2xrOC84eU9ZVlpHaFIzZGtDQndJ?= =?utf-8?B?VXp0YUtwS3hBSGZKaEFMcmF1cmI1d09jOEN6NlR0RFBDRlUwWjI3L0hYYndj?= =?utf-8?B?SlVTSDd6SllJdExrZXpIYXhVTkRwSHZpMnNKRDlqS0s2SnQvQmRJbWxZZXdh?= =?utf-8?B?cHJPeW8vVGI1YngzMktuYVRWdGc5SmNKK1FuUFRmSlNxeHBUTmkzVng4UkRo?= =?utf-8?B?UHpzMHl5Z2JtK3crcUxQRDRXQXB4S2o1TEl0TXNWazhEWVZOZjZJMEltSXpY?= =?utf-8?B?L2ptOGlPbVQ2dUc5K0p3aGwzcFRINmFXci9heXFEWC9NOFlDZEdoY0JOaTlp?= =?utf-8?B?d043R25ma0lkb09oVlFyU1JZWVVRQnlkRnFwZkk2MmNPZHljNis0YjFMMjB1?= =?utf-8?B?RlpIUW9tYVJtZlNUb091bU96QTJFeEoybUlQd0w4ZU5BOUdQdm9Qdno2YUt0?= =?utf-8?B?OUNybm9jdHNBRjdNMGdkTG9ncGVQSU85T3R2S280RnBmSUZWYW1pYlF0QzFJ?= =?utf-8?B?UGN6L2tUdXdLdzJHTFVtSUM1Wk5zcjI3K2QvTnUwNHRRakk5R3p5RVFGNnlK?= =?utf-8?B?QnByL3NKSFE0alJ5MEZFL1U2S0dCQXkzby9JSExJTDNqNmllM3pUclJqK09K?= =?utf-8?B?NmJ5cTN6RTJHb1pyRy90TFREMC9YZWZhdWxsTmlZZWZoZ0RDcUxHaFZBPT0=?= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM8PR07MB7602.eurprd07.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(366007)(1800799015)(376005)(38070700009); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?Um1Bdnh4WGwwZ0RSbVgvd3VwandGcFBza3MxSVpISnR4cjNpWXRSUEI4MGFS?= =?utf-8?B?MU9zcnZxVkI0SGFadEpLbm9xZzRXTjRxc1FDbHVUTXNVd2gvdTNVZnZYS2hr?= =?utf-8?B?dGhLSjF0Z0hTVEFRTTFkNzZSaXBwWjVIOU1MTDVSYlVGcitrMFJ2NDJxQ0dq?= =?utf-8?B?WTlMNjN4OER5d1BtSW5pbWlCb3I3WEFtSk5JSkYwdE9MaDJlRk9hU2o4MWpq?= =?utf-8?B?d1FsRnd4N29nQjFBaHJCaFlTc0YwYnRNcDA2T3FmaWZxSUxRc2xzR2RIYmFv?= =?utf-8?B?UmZnanFGaXYwM2pmZlBzc1MwTytaRmxLdGxIUHVlQ2tBRm5sc0dlbmhWZHhN?= =?utf-8?B?YXBHMDF1SzBneTFMM0h3OFVrMVVTMUxhZlhkLzhaR3hEQmsweHJRdkplc0R4?= =?utf-8?B?MjVMMnEwZSttTDRwYUluVDl3em5KcjVVdjlvVlI3NHU3RW40QmMyWENibE85?= =?utf-8?B?Zk5rd2dIOEVDeWEwZ1Q5bVovOXpZWEZISVlrWVpFbmlqYWVwM3E4Ui8rcXcw?= =?utf-8?B?dXJ2TXZ0RnRhemxlOVhzQkF1cUFMb2tydGJtbzdsWVM4QmE4U0dsWW9oMXFU?= =?utf-8?B?NzdHa3p1M1c4T0xkdVIxVTdCNy9DazlhYnVEcFRMckRoSHhXY2JaNkNaY2VW?= =?utf-8?B?WlNybHRGYkVYSUZ3elVOaWY3bWRqQnlhTWFRSEtOZE1sZXd3b0ZoVG9pQnNz?= =?utf-8?B?ZDNVN1NkbTB2bkJTRWs5dndVWnY2dDJxeDAwZXA3R1ZiVnBhUDN4WmpHWTRV?= =?utf-8?B?dzg5WWFMbGVTc0YvY0I4QkVGcmtZWndHYnNodW5yaUZLWnIwYW1rOTFzK2hR?= =?utf-8?B?VVZHcmsyK25yTzJUZk9NL1ZkQTBJd3FKdTlZRGJzVllWSVZ0bU5JcGpWUy9B?= =?utf-8?B?ZkxqYWFLTDlaSXJPMTc4ME4rclJUSHBHOStSeWNtYnV6NmRFVy9VOUVRU1lY?= =?utf-8?B?eFI3M0c5d2FYSzJZVmlGWHI5YTFJVjQrMnBDQWd1ZkxGQVp2TVhVbmt4K1Fn?= =?utf-8?B?YnB3TU5DY1VxUjlzdmtPQmh2bUlxRTlWdmNsWjdyUWhtK0hndWx5dUZKbG8r?= =?utf-8?B?ejBpNWllcElJL2x0dlQyTjFiMUlYRk9PdndDQVhrL1MxeDlNcEt4WGRFaGJU?= =?utf-8?B?N2h6cmdYdWNkL0xjUlJmc0lvZnBHK2U2aFYvZkpPZEdUbzJJZmNZanYxenVp?= =?utf-8?B?YWNzdWZ1MFAwbjg1RHpnbkxWU2FpcHNJZUd1VnF4NkJXVW1sL2NIL3B6QXRG?= =?utf-8?B?YzVuTVhpM2ZTU3ZIUi84Um5ITTl5dzlLNERhKzNyUk9EejM4YUZqMXBySkY4?= =?utf-8?B?Z0FLOWVyZmN6bEQrMWR2TUJiY0V4N2hXQUZmYTc1dVJ1bHpWNkJKNldudDAz?= =?utf-8?B?TEtGR3puSUtNM1VZQnA4ZlhtZ1JHakgvOHN5cCtIRTMvNFoxNnh6ZUdadzZN?= =?utf-8?B?bXhOeUN6ZHBCb2c0Q3VqMHdMUU4vZWZUUDN4cStGSjFaMkljWjVETER6SWNU?= =?utf-8?B?NStaV1JyVmppOWxoc2NQQzU0TVVIdzFVNUQyU09WY0lFcXVjY1NSNUMwQVhE?= =?utf-8?B?cUc5aUJ5ZkkxRVhRZkZlZmlYTEtzZ05wK3J4UWdRSFNhVDJaL1g4OHIxMzRL?= =?utf-8?B?WkFVbkNyT3RPSTVrNDBWTXpRSkdnQVVXZUxldjZrTWZqUVEyUjdscmhZdWJU?= =?utf-8?B?SG5MaFRPVitVcWxOWEJvNkIvVHBWZFM4SDBNRElVSVppbkpFZDFxN0Zha295?= =?utf-8?B?cnUyaU1nNkNmNkR3UnZWaGI5SFNQekpUN3UxZHVmYkFqMVFLV0tScmJkZDBo?= =?utf-8?B?YlpmaUFacEI5TTN3ZHdlNTVsNEhKWUtNSElNZFZxeGxyMTBvMWpyWjJvUGZI?= =?utf-8?B?dG82QzVZM3JmTlNCNGxSNVBleXVhaTYwYVpzS3EvK0ZoWDFUeEd0QU9RMElS?= =?utf-8?B?VVB5MFVpN202b1ZTcnRBbFJaT3l1YlFFbTBUN1k3Mm92SEYyVFNpSkRKUnRH?= =?utf-8?B?Z0tuYTNlVHI3L1lCeWFLdzB1NlNrTHZqYWxlRENsSWdPSktNeXZ1aDg3Sy9o?= =?utf-8?B?dG11cTBoYnk3dVNLNUJmMzNWV0xMdjVpZUQ4bDdFWnJIMzNIcHczNDVzN2pp?= =?utf-8?B?MFhyVlpsZDRBL1NHWnJrRmlRNE9TS0lJY2xhNkRPc1dweEwzR01ZWkl4alpP?= =?utf-8?Q?OstOSaPhvPNQ18mw+pVM81U=3D?= Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: eviden.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: AM8PR07MB7602.eurprd07.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5992b2fc-2973-425e-5339-08dc74aea414 X-MS-Exchange-CrossTenant-originalarrivaltime: 15 May 2024 07:14:20.5619 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 7d1c7785-2d8a-437d-b842-1ed5d8fbe00a X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: Xuge6VfKB2ljl4YTZQ/E/xZ8T5gRIVk0l43YQ07Io8PHZ7Y9M9+Oep++v/t0NeghCDVY7h1ASVtboaz2hBpC82RJIVzQactkFG658EeVFJA9Yz00EhKa+aEjuIFYgiD5 X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR07MB8496 Received-SPF: pass client-ip=80.78.11.84; envelope-from=clement.mathieu--drif@eviden.com; helo=smarthost3.eviden.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org QXMgdGhlIFNWTS1jYXBhYmxlIGRldmljZXMgd2lsbCBuZWVkIHRvIGNhY2hlIHRyYW5zbGF0aW9u cywgd2UgcHJvdmlkZQ0KYW4gZmlyc3QgaW1wbGVtZW50YXRpb24uDQoNClRoaXMgY2FjaGUgdXNl cyBhIHR3by1sZXZlbCBkZXNpZ24gYmFzZWQgb24gaGFzaCB0YWJsZXMuDQpUaGUgZmlyc3QgbGV2 ZWwgaXMgaW5kZXhlZCBieSBhIFBBU0lEIGFuZCB0aGUgc2Vjb25kIGJ5IGEgdmlydHVhbCBhZGRy ZXNzZS4NCg0KU2lnbmVkLW9mZi1ieTogQ2zDqW1lbnQgTWF0aGlldS0tRHJpZiA8Y2xlbWVudC5t YXRoaWV1LS1kcmlmQGV2aWRlbi5jb20+DQotLS0NCiB0ZXN0cy91bml0L21lc29uLmJ1aWxkIHwg ICAxICsNCiB0ZXN0cy91bml0L3Rlc3QtYXRjLmMgIHwgNTAyICsrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrDQogdXRpbC9hdGMuYyAgICAgICAgICAgICB8IDIxMSArKysr KysrKysrKysrKysrKw0KIHV0aWwvYXRjLmggICAgICAgICAgICAgfCAxMTcgKysrKysrKysrKw0K IHV0aWwvbWVzb24uYnVpbGQgICAgICAgfCAgIDEgKw0KIDUgZmlsZXMgY2hhbmdlZCwgODMyIGlu c2VydGlvbnMoKykNCiBjcmVhdGUgbW9kZSAxMDA2NDQgdGVzdHMvdW5pdC90ZXN0LWF0Yy5jDQog Y3JlYXRlIG1vZGUgMTAwNjQ0IHV0aWwvYXRjLmMNCiBjcmVhdGUgbW9kZSAxMDA2NDQgdXRpbC9h dGMuaA0KDQpkaWZmIC0tZ2l0IGEvdGVzdHMvdW5pdC9tZXNvbi5idWlsZCBiL3Rlc3RzL3VuaXQv bWVzb24uYnVpbGQNCmluZGV4IDIyOGEyMWQwM2MuLjVjOWE2ZmU5ZjQgMTAwNjQ0DQotLS0gYS90 ZXN0cy91bml0L21lc29uLmJ1aWxkDQorKysgYi90ZXN0cy91bml0L21lc29uLmJ1aWxkDQpAQCAt NTIsNiArNTIsNyBAQCB0ZXN0cyA9IHsNCiAgICd0ZXN0LWludGVydmFsLXRyZWUnOiBbXSwNCiAg ICd0ZXN0LXhzLW5vZGUnOiBbcW9tXSwNCiAgICd0ZXN0LXZpcnRpby1kbWFidWYnOiBbbWVzb24u cHJvamVjdF9zb3VyY2Vfcm9vdCgpIC8gJ2h3L2Rpc3BsYXkvdmlydGlvLWRtYWJ1Zi5jJ10sDQor ICAndGVzdC1hdGMnOiBbXQ0KIH0NCiANCiBpZiBoYXZlX3N5c3RlbSBvciBoYXZlX3Rvb2xzDQpk aWZmIC0tZ2l0IGEvdGVzdHMvdW5pdC90ZXN0LWF0Yy5jIGIvdGVzdHMvdW5pdC90ZXN0LWF0Yy5j DQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwMC4uNjBmYTYwOTI0YQ0KLS0t IC9kZXYvbnVsbA0KKysrIGIvdGVzdHMvdW5pdC90ZXN0LWF0Yy5jDQpAQCAtMCwwICsxLDUwMiBA QA0KKy8qDQorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0 cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQ0KKyAqIHRoZSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yDQor ICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCisNCisgKiBUaGlzIHByb2dy YW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCisg KiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy YW50eSBvZg0KKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg UFVSUE9TRS4gIFNlZSB0aGUNCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y ZSBkZXRhaWxzLg0KKw0KKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nDQorICogd2l0aCB0aGlzIHByb2dyYW07 IGlmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4NCisgKi8NCisNCisj aW5jbHVkZSAidXRpbC9hdGMuaCINCisNCitzdGF0aWMgaW5saW5lIGJvb2wgdGxiX2VudHJ5X2Vx dWFsKElPTU1VVExCRW50cnkgKmUxLCBJT01NVVRMQkVudHJ5ICplMikNCit7DQorICAgIGlmICgh ZTEgfHwgIWUyKSB7DQorICAgICAgICByZXR1cm4gIWUxICYmICFlMjsNCisgICAgfQ0KKyAgICBy ZXR1cm4gZTEtPmlvdmEgPT0gZTItPmlvdmEgJiYNCisgICAgICAgICAgICBlMS0+YWRkcl9tYXNr ID09IGUyLT5hZGRyX21hc2sgJiYNCisgICAgICAgICAgICBlMS0+cGFzaWQgPT0gZTItPnBhc2lk ICYmDQorICAgICAgICAgICAgZTEtPnBlcm0gPT0gZTItPnBlcm0gJiYNCisgICAgICAgICAgICBl MS0+dGFyZ2V0X2FzID09IGUyLT50YXJnZXRfYXMgJiYNCisgICAgICAgICAgICBlMS0+dHJhbnNs YXRlZF9hZGRyID09IGUyLT50cmFuc2xhdGVkX2FkZHI7DQorfQ0KKw0KK3N0YXRpYyB2b2lkIGFz c2VydF9sb29rdXBfZXF1YWxzKEFUQyAqYXRjLCBJT01NVVRMQkVudHJ5ICp0YXJnZXQsDQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgcGFzaWQsIGh3YWRkciBpb3Zh KQ0KK3sNCisgICAgSU9NTVVUTEJFbnRyeSAqcmVzdWx0Ow0KKyAgICByZXN1bHQgPSBhdGNfbG9v a3VwKGF0YywgcGFzaWQsIGlvdmEpOw0KKyAgICBnX2Fzc2VydCh0bGJfZW50cnlfZXF1YWwocmVz dWx0LCB0YXJnZXQpKTsNCit9DQorDQorc3RhdGljIHZvaWQgY2hlY2tfY3JlYXRpb24odWludDY0 X3QgcGFnZV9zaXplLCB1aW50OF90IGFkZHJlc3Nfd2lkdGgsDQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgdWludDhfdCBsZXZlbHMsIHVpbnQ4X3QgbGV2ZWxfb2Zmc2V0LA0KKyAgICAgICAg ICAgICAgICAgICAgICAgICAgIGJvb2wgc2hvdWxkX3dvcmspIHsNCisgICAgQVRDICphdGMgPSBh dGNfbmV3KHBhZ2Vfc2l6ZSwgYWRkcmVzc193aWR0aCk7DQorICAgIGlmIChhdGMpIHsNCisgICAg ICAgIGlmIChhdGMtPmxldmVscyAhPSBsZXZlbHMgfHwgYXRjLT5sZXZlbF9vZmZzZXQgIT0gbGV2 ZWxfb2Zmc2V0KSB7DQorICAgICAgICAgICAgZ19hc3NlcnQoZmFsc2UpOyAvKiBBVEMgY3JlYXRl ZCBidXQgaW52YWxpZCBjb25maWd1cmF0aW9uIDogZmFpbCAqLw0KKyAgICAgICAgfQ0KKyAgICAg ICAgYXRjX2Rlc3Ryb3koYXRjKTsNCisgICAgICAgIGdfYXNzZXJ0KHNob3VsZF93b3JrKTsNCisg ICAgfSBlbHNlIHsNCisgICAgICAgIGdfYXNzZXJ0KCFzaG91bGRfd29yayk7DQorICAgIH0NCit9 DQorDQorc3RhdGljIHZvaWQgdGVzdF9jcmVhdGlvbl9wYXJhbWV0ZXJzKHZvaWQpDQorew0KKyAg ICBjaGVja19jcmVhdGlvbig4LCAzOSwgMywgOSwgZmFsc2UpOw0KKyAgICBjaGVja19jcmVhdGlv big0MDk1LCAzOSwgMywgOSwgZmFsc2UpOw0KKyAgICBjaGVja19jcmVhdGlvbig0MDk3LCAzOSwg MywgOSwgZmFsc2UpOw0KKyAgICBjaGVja19jcmVhdGlvbig4MTkyLCA0OCwgMCwgMCwgZmFsc2Up Ow0KKw0KKyAgICBjaGVja19jcmVhdGlvbig0MDk2LCAzOCwgMCwgMCwgZmFsc2UpOw0KKyAgICBj aGVja19jcmVhdGlvbig0MDk2LCAzOSwgMywgOSwgdHJ1ZSk7DQorICAgIGNoZWNrX2NyZWF0aW9u KDQwOTYsIDQwLCAwLCAwLCBmYWxzZSk7DQorICAgIGNoZWNrX2NyZWF0aW9uKDQwOTYsIDQ3LCAw LCAwLCBmYWxzZSk7DQorICAgIGNoZWNrX2NyZWF0aW9uKDQwOTYsIDQ4LCA0LCA5LCB0cnVlKTsN CisgICAgY2hlY2tfY3JlYXRpb24oNDA5NiwgNDksIDAsIDAsIGZhbHNlKTsNCisgICAgY2hlY2tf Y3JlYXRpb24oNDA5NiwgNTYsIDAsIDAsIGZhbHNlKTsNCisgICAgY2hlY2tfY3JlYXRpb24oNDA5 NiwgNTcsIDUsIDksIHRydWUpOw0KKyAgICBjaGVja19jcmVhdGlvbig0MDk2LCA1OCwgMCwgMCwg ZmFsc2UpOw0KKw0KKyAgICBjaGVja19jcmVhdGlvbigxNjM4NCwgMzUsIDAsIDAsIGZhbHNlKTsN CisgICAgY2hlY2tfY3JlYXRpb24oMTYzODQsIDM2LCAyLCAxMSwgdHJ1ZSk7DQorICAgIGNoZWNr X2NyZWF0aW9uKDE2Mzg0LCAzNywgMCwgMCwgZmFsc2UpOw0KKyAgICBjaGVja19jcmVhdGlvbigx NjM4NCwgNDYsIDAsIDAsIGZhbHNlKTsNCisgICAgY2hlY2tfY3JlYXRpb24oMTYzODQsIDQ3LCAz LCAxMSwgdHJ1ZSk7DQorICAgIGNoZWNrX2NyZWF0aW9uKDE2Mzg0LCA0OCwgMCwgMCwgZmFsc2Up Ow0KKyAgICBjaGVja19jcmVhdGlvbigxNjM4NCwgNTcsIDAsIDAsIGZhbHNlKTsNCisgICAgY2hl Y2tfY3JlYXRpb24oMTYzODQsIDU4LCA0LCAxMSwgdHJ1ZSk7DQorICAgIGNoZWNrX2NyZWF0aW9u KDE2Mzg0LCA1OSwgMCwgMCwgZmFsc2UpOw0KK30NCisNCitzdGF0aWMgdm9pZCB0ZXN0X3Npbmds ZV9lbnRyeSh2b2lkKQ0KK3sNCisgICAgSU9NTVVUTEJFbnRyeSBlbnRyeSA9IHsNCisgICAgICAg IC5pb3ZhID0gMHgxMjM0NTY3ODkwMDBVTEwsDQorICAgICAgICAuYWRkcl9tYXNrID0gMHhmZmZV TEwsDQorICAgICAgICAucGFzaWQgPSA1LA0KKyAgICAgICAgLnBlcm0gPSBJT01NVV9SVywNCisg ICAgICAgIC50cmFuc2xhdGVkX2FkZHIgPSAweGRlYWRiZWVmVUxMLA0KKyAgICB9Ow0KKw0KKyAg ICBBVEMgKmF0YyA9IGF0Y19uZXcoNDA5NiwgNDgpOw0KKyAgICBnX2Fzc2VydChhdGMpOw0KKw0K KyAgICBhc3NlcnRfbG9va3VwX2VxdWFscyhhdGMsIE5VTEwsIGVudHJ5LnBhc2lkLA0KKyAgICAg ICAgICAgICAgICAgICAgICAgICBlbnRyeS5pb3ZhICsgKGVudHJ5LmFkZHJfbWFzayAvIDIpKTsN CisNCisgICAgYXRjX2NyZWF0ZV9hZGRyZXNzX3NwYWNlX2NhY2hlKGF0YywgZW50cnkucGFzaWQp Ow0KKyAgICBnX2Fzc2VydChhdGNfdXBkYXRlKGF0YywgJmVudHJ5KSA9PSAwKTsNCisNCisgICAg YXNzZXJ0X2xvb2t1cF9lcXVhbHMoYXRjLCBOVUxMLCBlbnRyeS5wYXNpZCArIDEsDQorICAgICAg ICAgICAgICAgICAgICAgICAgIGVudHJ5LmlvdmEgKyAoZW50cnkuYWRkcl9tYXNrIC8gMikpOw0K KyAgICBhc3NlcnRfbG9va3VwX2VxdWFscyhhdGMsICZlbnRyeSwgZW50cnkucGFzaWQsDQorICAg ICAgICAgICAgICAgICAgICAgICAgIGVudHJ5LmlvdmEgKyAoZW50cnkuYWRkcl9tYXNrIC8gMikp Ow0KKw0KKyAgICBhdGNfZGVzdHJveShhdGMpOw0KK30NCisNCitzdGF0aWMgdm9pZCB0ZXN0X3Bh Z2VfYm91bmRhcmllcyh2b2lkKQ0KK3sNCisgICAgc3RhdGljIGNvbnN0IHVpbnQzMl90IHBhc2lk ID0gNTsNCisgICAgc3RhdGljIGNvbnN0IGh3YWRkciBwYWdlX3NpemUgPSA0MDk2Ow0KKw0KKyAg ICAvKiAyIGNvbnNlY3V0aXZlIGVudHJpZXMgKi8NCisgICAgSU9NTVVUTEJFbnRyeSBlMSA9IHsN CisgICAgICAgIC5pb3ZhID0gMHgxMjM0NTY3ODkwMDBVTEwsDQorICAgICAgICAuYWRkcl9tYXNr ID0gcGFnZV9zaXplIC0gMSwNCisgICAgICAgIC5wYXNpZCA9IHBhc2lkLA0KKyAgICAgICAgLnBl cm0gPSBJT01NVV9SVywNCisgICAgICAgIC50cmFuc2xhdGVkX2FkZHIgPSAweGRlYWRiZWVmVUxM LA0KKyAgICB9Ow0KKyAgICBJT01NVVRMQkVudHJ5IGUyID0gew0KKyAgICAgICAgLmlvdmEgPSBl MS5pb3ZhICsgcGFnZV9zaXplLA0KKyAgICAgICAgLmFkZHJfbWFzayA9IHBhZ2Vfc2l6ZSAtIDEs DQorICAgICAgICAucGFzaWQgPSBwYXNpZCwNCisgICAgICAgIC5wZXJtID0gSU9NTVVfUlcsDQor ICAgICAgICAudHJhbnNsYXRlZF9hZGRyID0gMHg5MDBkZjAwZFVMTCwNCisgICAgfTsNCisNCisg ICAgQVRDICphdGMgPSBhdGNfbmV3KHBhZ2Vfc2l6ZSwgNDgpOw0KKw0KKyAgICBhdGNfY3JlYXRl X2FkZHJlc3Nfc3BhY2VfY2FjaGUoYXRjLCBlMS5wYXNpZCk7DQorICAgIC8qIGNyZWF0aW5nIHRo ZSBhZGRyZXNzIHNwYWNlIHR3aWNlIHNob3VsZCBub3QgYmUgYSBwcm9ibGVtICovDQorICAgIGF0 Y19jcmVhdGVfYWRkcmVzc19zcGFjZV9jYWNoZShhdGMsIGUxLnBhc2lkKTsNCisNCisgICAgYXRj X3VwZGF0ZShhdGMsICZlMSk7DQorICAgIGF0Y191cGRhdGUoYXRjLCAmZTIpOw0KKw0KKyAgICBh c3NlcnRfbG9va3VwX2VxdWFscyhhdGMsIE5VTEwsIGUxLnBhc2lkLCBlMS5pb3ZhIC0gMSk7DQor ICAgIGFzc2VydF9sb29rdXBfZXF1YWxzKGF0YywgJmUxLCBlMS5wYXNpZCwgZTEuaW92YSk7DQor ICAgIGFzc2VydF9sb29rdXBfZXF1YWxzKGF0YywgJmUxLCBlMS5wYXNpZCwgZTEuaW92YSArIGUx LmFkZHJfbWFzayk7DQorICAgIGdfYXNzZXJ0KChlMS5pb3ZhICsgZTEuYWRkcl9tYXNrICsgMSkg PT0gZTIuaW92YSk7DQorICAgIGFzc2VydF9sb29rdXBfZXF1YWxzKGF0YywgJmUyLCBlMi5wYXNp ZCwgZTIuaW92YSk7DQorICAgIGFzc2VydF9sb29rdXBfZXF1YWxzKGF0YywgJmUyLCBlMi5wYXNp ZCwgZTIuaW92YSArIGUyLmFkZHJfbWFzayk7DQorICAgIGFzc2VydF9sb29rdXBfZXF1YWxzKGF0 YywgTlVMTCwgZTIucGFzaWQsIGUyLmlvdmEgKyBlMi5hZGRyX21hc2sgKyAxKTsNCisNCisgICAg YXNzZXJ0X2xvb2t1cF9lcXVhbHMoYXRjLCBOVUxMLCBlMS5wYXNpZCArIDEwLCBlMS5pb3ZhKTsN CisgICAgYXNzZXJ0X2xvb2t1cF9lcXVhbHMoYXRjLCBOVUxMLCBlMi5wYXNpZCArIDEwLCBlMi5p b3ZhKTsNCisgICAgYXRjX2Rlc3Ryb3koYXRjKTsNCit9DQorDQorc3RhdGljIHZvaWQgdGVzdF9o dWdlX3BhZ2Uodm9pZCkNCit7DQorICAgIHN0YXRpYyBjb25zdCB1aW50MzJfdCBwYXNpZCA9IDU7 DQorICAgIHN0YXRpYyBjb25zdCBod2FkZHIgcGFnZV9zaXplID0gNDA5NjsNCisgICAgSU9NTVVU TEJFbnRyeSBlMSA9IHsNCisgICAgICAgIC5pb3ZhID0gMHgxMjM0NTY2MDAwMDBVTEwsDQorICAg ICAgICAuYWRkcl9tYXNrID0gMHgxZmZmZmZVTEwsDQorICAgICAgICAucGFzaWQgPSBwYXNpZCwN CisgICAgICAgIC5wZXJtID0gSU9NTVVfUlcsDQorICAgICAgICAudHJhbnNsYXRlZF9hZGRyID0g MHhkZWFkYmVlZlVMTCwNCisgICAgfTsNCisgICAgaHdhZGRyIGFkZHI7DQorDQorICAgIEFUQyAq YXRjID0gYXRjX25ldyhwYWdlX3NpemUsIDQ4KTsNCisNCisgICAgYXRjX2NyZWF0ZV9hZGRyZXNz X3NwYWNlX2NhY2hlKGF0YywgZTEucGFzaWQpOw0KKyAgICBhdGNfdXBkYXRlKGF0YywgJmUxKTsN CisNCisgICAgZm9yIChhZGRyID0gZTEuaW92YTsgYWRkciA8PSBlMS5pb3ZhICsgZTEuYWRkcl9t YXNrOyBhZGRyICs9IHBhZ2Vfc2l6ZSkgew0KKyAgICAgICAgYXNzZXJ0X2xvb2t1cF9lcXVhbHMo YXRjLCAmZTEsIGUxLnBhc2lkLCBhZGRyKTsNCisgICAgfQ0KKyAgICAvKiBhZGRyIGlzIG5vdyBv dXQgb2YgdGhlIGh1Z2UgcGFnZSAqLw0KKyAgICBhc3NlcnRfbG9va3VwX2VxdWFscyhhdGMsIE5V TEwsIGUxLnBhc2lkLCBhZGRyKTsNCisgICAgYXRjX2Rlc3Ryb3koYXRjKTsNCit9DQorDQorc3Rh dGljIHZvaWQgdGVzdF9wYXNpZCh2b2lkKQ0KK3sNCisgICAgaHdhZGRyIGFkZHIgPSAweGFhYWFh YWFhYTAwMFVMTDsNCisgICAgSU9NTVVUTEJFbnRyeSBlMSA9IHsNCisgICAgICAgIC5pb3ZhID0g YWRkciwNCisgICAgICAgIC5hZGRyX21hc2sgPSAweGZmZlVMTCwNCisgICAgICAgIC5wYXNpZCA9 IDgsDQorICAgICAgICAucGVybSA9IElPTU1VX1JXLA0KKyAgICAgICAgLnRyYW5zbGF0ZWRfYWRk ciA9IDB4ZGVhZGJlZWZVTEwsDQorICAgIH07DQorICAgIElPTU1VVExCRW50cnkgZTIgPSB7DQor ICAgICAgICAuaW92YSA9IGFkZHIsDQorICAgICAgICAuYWRkcl9tYXNrID0gMHhmZmZVTEwsDQor ICAgICAgICAucGFzaWQgPSAyLA0KKyAgICAgICAgLnBlcm0gPSBJT01NVV9SVywNCisgICAgICAg IC50cmFuc2xhdGVkX2FkZHIgPSAweGIwMDFVTEwsDQorICAgIH07DQorICAgIHVpbnQxNl90IGk7 DQorDQorICAgIEFUQyAqYXRjID0gYXRjX25ldyg0MDk2LCA0OCk7DQorDQorICAgIGF0Y19jcmVh dGVfYWRkcmVzc19zcGFjZV9jYWNoZShhdGMsIGUxLnBhc2lkKTsNCisgICAgYXRjX2NyZWF0ZV9h ZGRyZXNzX3NwYWNlX2NhY2hlKGF0YywgZTIucGFzaWQpOw0KKyAgICBhdGNfdXBkYXRlKGF0Yywg JmUxKTsNCisgICAgYXRjX3VwZGF0ZShhdGMsICZlMik7DQorDQorICAgIGZvciAoaSA9IDA7IGkg PD0gTUFYKGUxLnBhc2lkLCBlMi5wYXNpZCkgKyAxOyArK2kpIHsNCisgICAgICAgIGlmIChpID09 IGUxLnBhc2lkIHx8IGkgPT0gZTIucGFzaWQpIHsNCisgICAgICAgICAgICBjb250aW51ZTsNCisg ICAgICAgIH0NCisgICAgICAgIGFzc2VydF9sb29rdXBfZXF1YWxzKGF0YywgTlVMTCwgaSwgYWRk cik7DQorICAgIH0NCisgICAgYXNzZXJ0X2xvb2t1cF9lcXVhbHMoYXRjLCAmZTEsIGUxLnBhc2lk LCBhZGRyKTsNCisgICAgYXNzZXJ0X2xvb2t1cF9lcXVhbHMoYXRjLCAmZTEsIGUxLnBhc2lkLCBh ZGRyKTsNCisgICAgYXRjX2Rlc3Ryb3koYXRjKTsNCit9DQorDQorc3RhdGljIHZvaWQgdGVzdF9s YXJnZV9hZGRyZXNzKHZvaWQpDQorew0KKyAgICBJT01NVVRMQkVudHJ5IGUxID0gew0KKyAgICAg ICAgLmlvdmEgPSAweGFhYWFhYWFhYTAwMFVMTCwNCisgICAgICAgIC5hZGRyX21hc2sgPSAweGZm ZlVMTCwNCisgICAgICAgIC5wYXNpZCA9IDgsDQorICAgICAgICAucGVybSA9IElPTU1VX1JXLA0K KyAgICAgICAgLnRyYW5zbGF0ZWRfYWRkciA9IDB4NWVlZWVlZWRVTEwsDQorICAgIH07DQorICAg IElPTU1VVExCRW50cnkgZTIgPSB7DQorICAgICAgICAuaW92YSA9IDB4MWYwMGJhYWFhYWJmMDAw VUxMLA0KKyAgICAgICAgLmFkZHJfbWFzayA9IDB4ZmZmVUxMLA0KKyAgICAgICAgLnBhc2lkID0g ZTEucGFzaWQsDQorICAgICAgICAucGVybSA9IElPTU1VX1JXLA0KKyAgICAgICAgLnRyYW5zbGF0 ZWRfYWRkciA9IDB4ZGVhZGJlZWZVTEwsDQorICAgIH07DQorDQorICAgIEFUQyAqYXRjID0gYXRj X25ldyg0MDk2LCA1Nyk7DQorDQorICAgIGF0Y19jcmVhdGVfYWRkcmVzc19zcGFjZV9jYWNoZShh dGMsIGUxLnBhc2lkKTsNCisgICAgYXRjX3VwZGF0ZShhdGMsICZlMSk7DQorICAgIGF0Y191cGRh dGUoYXRjLCAmZTIpOw0KKw0KKyAgICBhc3NlcnRfbG9va3VwX2VxdWFscyhhdGMsICZlMSwgZTEu cGFzaWQsIGUxLmlvdmEpOw0KKyAgICBhc3NlcnRfbG9va3VwX2VxdWFscyhhdGMsICZlMiwgZTIu cGFzaWQsIGUyLmlvdmEpOw0KKyAgICBhdGNfZGVzdHJveShhdGMpOw0KK30NCisNCitzdGF0aWMg dm9pZCB0ZXN0X2JpZ2dlcl9wYWdlKHZvaWQpDQorew0KKyAgICBJT01NVVRMQkVudHJ5IGUxID0g ew0KKyAgICAgICAgLmlvdmEgPSAweGFhYmJjY2RkZTAwMFVMTCwNCisgICAgICAgIC5hZGRyX21h c2sgPSAweDFmZmZVTEwsDQorICAgICAgICAucGFzaWQgPSAxLA0KKyAgICAgICAgLnBlcm0gPSBJ T01NVV9SVywNCisgICAgICAgIC50cmFuc2xhdGVkX2FkZHIgPSAweDVlZWVlZWVkVUxMLA0KKyAg ICB9Ow0KKyAgICBod2FkZHIgaTsNCisNCisgICAgQVRDICphdGMgPSBhdGNfbmV3KDgxOTIsIDQz KTsNCisNCisgICAgYXRjX2NyZWF0ZV9hZGRyZXNzX3NwYWNlX2NhY2hlKGF0YywgZTEucGFzaWQp Ow0KKyAgICBhdGNfdXBkYXRlKGF0YywgJmUxKTsNCisNCisgICAgaSA9IGUxLmlvdmEgJiAofmUx LmFkZHJfbWFzayk7DQorICAgIGFzc2VydF9sb29rdXBfZXF1YWxzKGF0YywgTlVMTCwgZTEucGFz aWQsIGkgLSAxKTsNCisgICAgd2hpbGUgKGkgPD0gZTEuaW92YSArIGUxLmFkZHJfbWFzaykgew0K KyAgICAgICAgYXNzZXJ0X2xvb2t1cF9lcXVhbHMoYXRjLCAmZTEsIGUxLnBhc2lkLCBpKTsNCisg ICAgICAgICsraTsNCisgICAgfQ0KKyAgICBhc3NlcnRfbG9va3VwX2VxdWFscyhhdGMsIE5VTEws IGUxLnBhc2lkLCBpKTsNCisgICAgYXRjX2Rlc3Ryb3koYXRjKTsNCit9DQorDQorc3RhdGljIHZv aWQgdGVzdF91bmtub3duX3Bhc2lkKHZvaWQpDQorew0KKyAgICBJT01NVVRMQkVudHJ5IGUxID0g ew0KKyAgICAgICAgLmlvdmEgPSAweGFhYmJjY2ZmZjAwMFVMTCwNCisgICAgICAgIC5hZGRyX21h c2sgPSAweGZmZlVMTCwNCisgICAgICAgIC5wYXNpZCA9IDEsDQorICAgICAgICAucGVybSA9IElP TU1VX1JXLA0KKyAgICAgICAgLnRyYW5zbGF0ZWRfYWRkciA9IDB4NWVlZWVlZWRVTEwsDQorICAg IH07DQorDQorICAgIEFUQyAqYXRjID0gYXRjX25ldyg0MDk2LCA0OCk7DQorICAgIGdfYXNzZXJ0 KGF0Y191cGRhdGUoYXRjLCAmZTEpICE9IDApOw0KKyAgICBhc3NlcnRfbG9va3VwX2VxdWFscyhh dGMsIE5VTEwsIGUxLnBhc2lkLCBlMS5pb3ZhKTsNCit9DQorDQorc3RhdGljIHZvaWQgdGVzdF9p bnZhbGlkYXRpb24odm9pZCkNCit7DQorICAgIHN0YXRpYyB1aW50NjRfdCBwYWdlX3NpemUgPSA0 MDk2Ow0KKyAgICBJT01NVVRMQkVudHJ5IGUxID0gew0KKyAgICAgICAgLmlvdmEgPSAweGFhYmJj Y2RkZjAwMFVMTCwNCisgICAgICAgIC5hZGRyX21hc2sgPSAweGZmZlVMTCwNCisgICAgICAgIC5w YXNpZCA9IDEsDQorICAgICAgICAucGVybSA9IElPTU1VX1JXLA0KKyAgICAgICAgLnRyYW5zbGF0 ZWRfYWRkciA9IDB4NWVlZWVlZWRVTEwsDQorICAgIH07DQorICAgIElPTU1VVExCRW50cnkgZTIg PSB7DQorICAgICAgICAuaW92YSA9IDB4ZmZlMDAwMDBVTEwsDQorICAgICAgICAuYWRkcl9tYXNr ID0gMHgxZmZmZmZVTEwsDQorICAgICAgICAucGFzaWQgPSAxLA0KKyAgICAgICAgLnBlcm0gPSBJ T01NVV9SVywNCisgICAgICAgIC50cmFuc2xhdGVkX2FkZHIgPSAweGIwMDAwMDFVTEwsDQorICAg IH07DQorICAgIElPTU1VVExCRW50cnkgZTM7DQorDQorICAgIEFUQyAqYXRjID0gYXRjX25ldyhw YWdlX3NpemUgLCA0OCk7DQorICAgIGF0Y19jcmVhdGVfYWRkcmVzc19zcGFjZV9jYWNoZShhdGMs IGUxLnBhc2lkKTsNCisNCisgICAgYXRjX3VwZGF0ZShhdGMsICZlMSk7DQorICAgIGFzc2VydF9s b29rdXBfZXF1YWxzKGF0YywgJmUxLCBlMS5wYXNpZCwgZTEuaW92YSk7DQorICAgIGF0Y19pbnZh bGlkYXRlKGF0YywgJmUxKTsNCisgICAgYXNzZXJ0X2xvb2t1cF9lcXVhbHMoYXRjLCBOVUxMLCBl MS5wYXNpZCwgZTEuaW92YSk7DQorDQorICAgIGF0Y191cGRhdGUoYXRjLCAmZTEpOw0KKyAgICBh dGNfdXBkYXRlKGF0YywgJmUyKTsNCisgICAgYXNzZXJ0X2xvb2t1cF9lcXVhbHMoYXRjLCAmZTEs IGUxLnBhc2lkLCBlMS5pb3ZhKTsNCisgICAgYXNzZXJ0X2xvb2t1cF9lcXVhbHMoYXRjLCAmZTIs IGUyLnBhc2lkLCBlMi5pb3ZhKTsNCisgICAgYXRjX2ludmFsaWRhdGUoYXRjLCAmZTIpOw0KKyAg ICBhc3NlcnRfbG9va3VwX2VxdWFscyhhdGMsICZlMSwgZTEucGFzaWQsIGUxLmlvdmEpOw0KKyAg ICBhc3NlcnRfbG9va3VwX2VxdWFscyhhdGMsIE5VTEwsIGUyLnBhc2lkLCBlMi5pb3ZhKTsNCisN CisgICAgLyogaW52YWxpZGF0ZSBhIGh1Z2UgcGFnZSBieSBpbnZhbGlkYXRpbmcgYSBzbWFsbCBy ZWdpb24gKi8NCisgICAgZm9yIChod2FkZHIgYWRkciA9IGUyLmlvdmE7IGFkZHIgPD0gKGUyLmlv dmEgKyBlMi5hZGRyX21hc2spOw0KKyAgICAgICAgIGFkZHIgKz0gcGFnZV9zaXplKSB7DQorICAg ICAgICBhdGNfdXBkYXRlKGF0YywgJmUyKTsNCisgICAgICAgIGFzc2VydF9sb29rdXBfZXF1YWxz KGF0YywgJmUyLCBlMi5wYXNpZCwgZTIuaW92YSk7DQorICAgICAgICBlMyA9IChJT01NVVRMQkVu dHJ5KXsNCisgICAgICAgICAgICAuaW92YSA9IGFkZHIsDQorICAgICAgICAgICAgLmFkZHJfbWFz ayA9IHBhZ2Vfc2l6ZSAtIDEsDQorICAgICAgICAgICAgLnBhc2lkID0gZTIucGFzaWQsDQorICAg ICAgICAgICAgLnBlcm0gPSBJT01NVV9SVywNCisgICAgICAgICAgICAudHJhbnNsYXRlZF9hZGRy ID0gMCwNCisgICAgICAgIH07DQorICAgICAgICBhdGNfaW52YWxpZGF0ZShhdGMsICZlMyk7DQor ICAgICAgICBhc3NlcnRfbG9va3VwX2VxdWFscyhhdGMsIE5VTEwsIGUyLnBhc2lkLCBlMi5pb3Zh KTsNCisgICAgfQ0KK30NCisNCitzdGF0aWMgdm9pZCB0ZXN0X2RlbGV0ZV9hZGRyZXNzX3NwYWNl X2NhY2hlKHZvaWQpDQorew0KKyAgICBzdGF0aWMgdWludDY0X3QgcGFnZV9zaXplID0gNDA5NjsN CisgICAgSU9NTVVUTEJFbnRyeSBlMSA9IHsNCisgICAgICAgIC5pb3ZhID0gMHhhYWJiY2NkZGYw MDBVTEwsDQorICAgICAgICAuYWRkcl9tYXNrID0gMHhmZmZVTEwsDQorICAgICAgICAucGFzaWQg PSAxLA0KKyAgICAgICAgLnBlcm0gPSBJT01NVV9SVywNCisgICAgICAgIC50cmFuc2xhdGVkX2Fk ZHIgPSAweDVlZWVlZWVkVUxMLA0KKyAgICB9Ow0KKyAgICBJT01NVVRMQkVudHJ5IGUyID0gew0K KyAgICAgICAgLmlvdmEgPSBlMS5pb3ZhLA0KKyAgICAgICAgLmFkZHJfbWFzayA9IDB4ZmZmVUxM LA0KKyAgICAgICAgLnBhc2lkID0gMiwNCisgICAgICAgIC5wZXJtID0gSU9NTVVfUlcsDQorICAg ICAgICAudHJhbnNsYXRlZF9hZGRyID0gMHg1ZWVlZWVlZFVMTCwNCisgICAgfTsNCisNCisgICAg QVRDICphdGMgPSBhdGNfbmV3KHBhZ2Vfc2l6ZSAsIDQ4KTsNCisgICAgYXRjX2NyZWF0ZV9hZGRy ZXNzX3NwYWNlX2NhY2hlKGF0YywgZTEucGFzaWQpOw0KKw0KKyAgICBhdGNfdXBkYXRlKGF0Yywg JmUxKTsNCisgICAgYXNzZXJ0X2xvb2t1cF9lcXVhbHMoYXRjLCAmZTEsIGUxLnBhc2lkLCBlMS5p b3ZhKTsNCisgICAgYXRjX2ludmFsaWRhdGUoYXRjLCAmZTIpOyAvKiB1bmtvd24gcGFzaWQgOiBp cyBhIG5vcCovDQorICAgIGFzc2VydF9sb29rdXBfZXF1YWxzKGF0YywgJmUxLCBlMS5wYXNpZCwg ZTEuaW92YSk7DQorDQorICAgIGF0Y19jcmVhdGVfYWRkcmVzc19zcGFjZV9jYWNoZShhdGMsIGUy LnBhc2lkKTsNCisgICAgYXRjX3VwZGF0ZShhdGMsICZlMik7DQorICAgIGFzc2VydF9sb29rdXBf ZXF1YWxzKGF0YywgJmUxLCBlMS5wYXNpZCwgZTEuaW92YSk7DQorICAgIGFzc2VydF9sb29rdXBf ZXF1YWxzKGF0YywgJmUyLCBlMi5wYXNpZCwgZTIuaW92YSk7DQorICAgIGF0Y19pbnZhbGlkYXRl KGF0YywgJmUxKTsNCisgICAgLyogZTEgaGFzIGJlZW4gcmVtb3ZlZCBidXQgZTIgaXMgc3RpbGwg dGhlcmUgKi8NCisgICAgYXNzZXJ0X2xvb2t1cF9lcXVhbHMoYXRjLCBOVUxMLCBlMS5wYXNpZCwg ZTEuaW92YSk7DQorICAgIGFzc2VydF9sb29rdXBfZXF1YWxzKGF0YywgJmUyLCBlMi5wYXNpZCwg ZTIuaW92YSk7DQorDQorICAgIGF0Y191cGRhdGUoYXRjLCAmZTEpOw0KKyAgICBhc3NlcnRfbG9v a3VwX2VxdWFscyhhdGMsICZlMSwgZTEucGFzaWQsIGUxLmlvdmEpOw0KKyAgICBhc3NlcnRfbG9v a3VwX2VxdWFscyhhdGMsICZlMiwgZTIucGFzaWQsIGUyLmlvdmEpOw0KKw0KKyAgICBhdGNfZGVs ZXRlX2FkZHJlc3Nfc3BhY2VfY2FjaGUoYXRjLCBlMi5wYXNpZCk7DQorICAgIGFzc2VydF9sb29r dXBfZXF1YWxzKGF0YywgJmUxLCBlMS5wYXNpZCwgZTEuaW92YSk7DQorICAgIGFzc2VydF9sb29r dXBfZXF1YWxzKGF0YywgTlVMTCwgZTIucGFzaWQsIGUyLmlvdmEpOw0KK30NCisNCitzdGF0aWMg dm9pZCB0ZXN0X2ludmFsaWRhdGVfZW50aXJlX2FkZHJlc3Nfc3BhY2Uodm9pZCkNCit7DQorICAg IHN0YXRpYyB1aW50NjRfdCBwYWdlX3NpemUgPSA0MDk2Ow0KKyAgICBJT01NVVRMQkVudHJ5IGUx ID0gew0KKyAgICAgICAgLmlvdmEgPSAweDEwMDBVTEwsDQorICAgICAgICAuYWRkcl9tYXNrID0g MHhmZmZVTEwsDQorICAgICAgICAucGFzaWQgPSAxLA0KKyAgICAgICAgLnBlcm0gPSBJT01NVV9S VywNCisgICAgICAgIC50cmFuc2xhdGVkX2FkZHIgPSAweDVlZWRVTEwsDQorICAgIH07DQorICAg IElPTU1VVExCRW50cnkgZTIgPSB7DQorICAgICAgICAuaW92YSA9IDB4ZmZmZmZmZmZmMDAwVUxM LA0KKyAgICAgICAgLmFkZHJfbWFzayA9IDB4ZmZmVUxMLA0KKyAgICAgICAgLnBhc2lkID0gMSwN CisgICAgICAgIC5wZXJtID0gSU9NTVVfUlcsDQorICAgICAgICAudHJhbnNsYXRlZF9hZGRyID0g MHhiZWVmVUxMLA0KKyAgICB9Ow0KKyAgICBJT01NVVRMQkVudHJ5IGUzID0gew0KKyAgICAgICAg LmlvdmEgPSAwLA0KKyAgICAgICAgLmFkZHJfbWFzayA9IDB4ZmZmZmZmZmZmZmZmZmZmZlVMTCwN CisgICAgICAgIC5wYXNpZCA9IDEsDQorICAgICAgICAucGVybSA9IElPTU1VX1JXLA0KKyAgICAg ICAgLnRyYW5zbGF0ZWRfYWRkciA9IDAsDQorICAgIH07DQorDQorICAgIEFUQyAqYXRjID0gYXRj X25ldyhwYWdlX3NpemUgLCA0OCk7DQorICAgIGF0Y19jcmVhdGVfYWRkcmVzc19zcGFjZV9jYWNo ZShhdGMsIGUxLnBhc2lkKTsNCisNCisgICAgYXRjX3VwZGF0ZShhdGMsICZlMSk7DQorICAgIGF0 Y191cGRhdGUoYXRjLCAmZTIpOw0KKyAgICBhc3NlcnRfbG9va3VwX2VxdWFscyhhdGMsICZlMSwg ZTEucGFzaWQsIGUxLmlvdmEpOw0KKyAgICBhc3NlcnRfbG9va3VwX2VxdWFscyhhdGMsICZlMiwg ZTIucGFzaWQsIGUyLmlvdmEpOw0KKyAgICBhdGNfaW52YWxpZGF0ZShhdGMsICZlMyk7DQorICAg IC8qIGUxIGhhcyBiZWVuIHJlbW92ZWQgYnV0IGUyIGlzIHN0aWxsIHRoZXJlICovDQorICAgIGFz c2VydF9sb29rdXBfZXF1YWxzKGF0YywgTlVMTCwgZTEucGFzaWQsIGUxLmlvdmEpOw0KKyAgICBh c3NlcnRfbG9va3VwX2VxdWFscyhhdGMsIE5VTEwsIGUyLnBhc2lkLCBlMi5pb3ZhKTsNCisNCisg ICAgYXRjX2Rlc3Ryb3koYXRjKTsNCit9DQorDQorc3RhdGljIHZvaWQgdGVzdF9yZXNldCh2b2lk KQ0KK3sNCisgICAgc3RhdGljIHVpbnQ2NF90IHBhZ2Vfc2l6ZSA9IDQwOTY7DQorICAgIElPTU1V VExCRW50cnkgZTEgPSB7DQorICAgICAgICAuaW92YSA9IDB4MTAwMFVMTCwNCisgICAgICAgIC5h ZGRyX21hc2sgPSAweGZmZlVMTCwNCisgICAgICAgIC5wYXNpZCA9IDEsDQorICAgICAgICAucGVy bSA9IElPTU1VX1JXLA0KKyAgICAgICAgLnRyYW5zbGF0ZWRfYWRkciA9IDB4NWVlZFVMTCwNCisg ICAgfTsNCisgICAgSU9NTVVUTEJFbnRyeSBlMiA9IHsNCisgICAgICAgIC5pb3ZhID0gMHhmZmZm ZmZmZmYwMDBVTEwsDQorICAgICAgICAuYWRkcl9tYXNrID0gMHhmZmZVTEwsDQorICAgICAgICAu cGFzaWQgPSAyLA0KKyAgICAgICAgLnBlcm0gPSBJT01NVV9SVywNCisgICAgICAgIC50cmFuc2xh dGVkX2FkZHIgPSAweGJlZWZVTEwsDQorICAgIH07DQorDQorICAgIEFUQyAqYXRjID0gYXRjX25l dyhwYWdlX3NpemUgLCA0OCk7DQorICAgIGF0Y19jcmVhdGVfYWRkcmVzc19zcGFjZV9jYWNoZShh dGMsIGUxLnBhc2lkKTsNCisgICAgYXRjX2NyZWF0ZV9hZGRyZXNzX3NwYWNlX2NhY2hlKGF0Yywg ZTIucGFzaWQpOw0KKyAgICBhdGNfdXBkYXRlKGF0YywgJmUxKTsNCisgICAgYXRjX3VwZGF0ZShh dGMsICZlMik7DQorDQorICAgIGFzc2VydF9sb29rdXBfZXF1YWxzKGF0YywgJmUxLCBlMS5wYXNp ZCwgZTEuaW92YSk7DQorICAgIGFzc2VydF9sb29rdXBfZXF1YWxzKGF0YywgJmUyLCBlMi5wYXNp ZCwgZTIuaW92YSk7DQorDQorICAgIGF0Y19yZXNldChhdGMpOw0KKw0KKyAgICBhc3NlcnRfbG9v a3VwX2VxdWFscyhhdGMsIE5VTEwsIGUxLnBhc2lkLCBlMS5pb3ZhKTsNCisgICAgYXNzZXJ0X2xv b2t1cF9lcXVhbHMoYXRjLCBOVUxMLCBlMi5wYXNpZCwgZTIuaW92YSk7DQorfQ0KKw0KK3N0YXRp YyB2b2lkIHRlc3RfZ2V0X21heF9udW1iZXJfb2ZfcGFnZXModm9pZCkNCit7DQorICAgIHN0YXRp YyB1aW50NjRfdCBwYWdlX3NpemUgPSA0MDk2Ow0KKyAgICBod2FkZHIgYmFzZSA9IDB4YzBmZWUw MDA7IC8qIGFsaWduZWQgKi8NCisgICAgQVRDICphdGMgPSBhdGNfbmV3KHBhZ2Vfc2l6ZSAsIDQ4 KTsNCisgICAgZ19hc3NlcnQoYXRjX2dldF9tYXhfbnVtYmVyX29mX3BhZ2VzKGF0YywgYmFzZSwg cGFnZV9zaXplIC8gMikgPT0gMSk7DQorICAgIGdfYXNzZXJ0KGF0Y19nZXRfbWF4X251bWJlcl9v Zl9wYWdlcyhhdGMsIGJhc2UsIHBhZ2Vfc2l6ZSkgPT0gMSk7DQorICAgIGdfYXNzZXJ0KGF0Y19n ZXRfbWF4X251bWJlcl9vZl9wYWdlcyhhdGMsIGJhc2UsIHBhZ2Vfc2l6ZSArIDEpID09IDIpOw0K Kw0KKyAgICBnX2Fzc2VydChhdGNfZ2V0X21heF9udW1iZXJfb2ZfcGFnZXMoYXRjLCBiYXNlICsg MTAsIDEpID09IDEpOw0KKyAgICBnX2Fzc2VydChhdGNfZ2V0X21heF9udW1iZXJfb2ZfcGFnZXMo YXRjLCBiYXNlICsgMTAsIHBhZ2Vfc2l6ZSAtIDEwKSA9PSAxKTsNCisgICAgZ19hc3NlcnQoYXRj X2dldF9tYXhfbnVtYmVyX29mX3BhZ2VzKGF0YywgYmFzZSArIDEwLA0KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFnZV9zaXplIC0gMTAgKyAxKSA9PSAyKTsNCisg ICAgZ19hc3NlcnQoYXRjX2dldF9tYXhfbnVtYmVyX29mX3BhZ2VzKGF0YywgYmFzZSArIDEwLA0K KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFnZV9zaXplIC0gMTAg KyAyKSA9PSAyKTsNCisNCisgICAgZ19hc3NlcnQoYXRjX2dldF9tYXhfbnVtYmVyX29mX3BhZ2Vz KGF0YywgYmFzZSArIHBhZ2Vfc2l6ZSAtIDEsIDEpID09IDEpOw0KKyAgICBnX2Fzc2VydChhdGNf Z2V0X21heF9udW1iZXJfb2ZfcGFnZXMoYXRjLCBiYXNlICsgcGFnZV9zaXplIC0gMSwgMikgPT0g Mik7DQorICAgIGdfYXNzZXJ0KGF0Y19nZXRfbWF4X251bWJlcl9vZl9wYWdlcyhhdGMsIGJhc2Ug KyBwYWdlX3NpemUgLSAxLCAzKSA9PSAyKTsNCisNCisgICAgZ19hc3NlcnQoYXRjX2dldF9tYXhf bnVtYmVyX29mX3BhZ2VzKGF0YywgYmFzZSArIDEwLCBwYWdlX3NpemUgKiAyMCkgPT0gMjEpOw0K KyAgICBnX2Fzc2VydChhdGNfZ2V0X21heF9udW1iZXJfb2ZfcGFnZXMoYXRjLCBiYXNlICsgMTAs DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFnZV9zaXplICog MjApICsgKHBhZ2Vfc2l6ZSAtIDEwKSkNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICA9PSAyMSk7DQorICAgIGdfYXNzZXJ0KGF0Y19nZXRfbWF4X251bWJlcl9vZl9w YWdlcyhhdGMsIGJhc2UgKyAxMCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChwYWdlX3NpemUgKiAyMCkgKw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKHBhZ2Vfc2l6ZSAtIDEwICsgMSkpID09IDIyKTsNCit9DQorDQoraW50IG1h aW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQ0KK3sNCisgICAgZ190ZXN0X2luaXQoJmFyZ2MsICZh cmd2LCBOVUxMKTsNCisgICAgZ190ZXN0X2FkZF9mdW5jKCIvYXRjL3Rlc3RfY3JlYXRpb25fcGFy YW1ldGVycyIsIHRlc3RfY3JlYXRpb25fcGFyYW1ldGVycyk7DQorICAgIGdfdGVzdF9hZGRfZnVu YygiL2F0Yy90ZXN0X3NpbmdsZV9lbnRyeSIsIHRlc3Rfc2luZ2xlX2VudHJ5KTsNCisgICAgZ190 ZXN0X2FkZF9mdW5jKCIvYXRjL3Rlc3RfcGFnZV9ib3VuZGFyaWVzIiwgdGVzdF9wYWdlX2JvdW5k YXJpZXMpOw0KKyAgICBnX3Rlc3RfYWRkX2Z1bmMoIi9hdGMvdGVzdF9odWdlX3BhZ2UiLCB0ZXN0 X2h1Z2VfcGFnZSk7DQorICAgIGdfdGVzdF9hZGRfZnVuYygiL2F0Yy90ZXN0X3Bhc2lkIiwgdGVz dF9wYXNpZCk7DQorICAgIGdfdGVzdF9hZGRfZnVuYygiL2F0Yy90ZXN0X2xhcmdlX2FkZHJlc3Mi LCB0ZXN0X2xhcmdlX2FkZHJlc3MpOw0KKyAgICBnX3Rlc3RfYWRkX2Z1bmMoIi9hdGMvdGVzdF9i aWdnZXJfcGFnZSIsIHRlc3RfYmlnZ2VyX3BhZ2UpOw0KKyAgICBnX3Rlc3RfYWRkX2Z1bmMoIi9h dGMvdGVzdF91bmtub3duX3Bhc2lkIiwgdGVzdF91bmtub3duX3Bhc2lkKTsNCisgICAgZ190ZXN0 X2FkZF9mdW5jKCIvYXRjL3Rlc3RfaW52YWxpZGF0aW9uIiwgdGVzdF9pbnZhbGlkYXRpb24pOw0K KyAgICBnX3Rlc3RfYWRkX2Z1bmMoIi9hdGMvdGVzdF9kZWxldGVfYWRkcmVzc19zcGFjZV9jYWNo ZSIsDQorICAgICAgICAgICAgICAgICAgICB0ZXN0X2RlbGV0ZV9hZGRyZXNzX3NwYWNlX2NhY2hl KTsNCisgICAgZ190ZXN0X2FkZF9mdW5jKCIvYXRjL3Rlc3RfaW52YWxpZGF0ZV9lbnRpcmVfYWRk cmVzc19zcGFjZSIsDQorICAgICAgICAgICAgICAgICAgICB0ZXN0X2ludmFsaWRhdGVfZW50aXJl X2FkZHJlc3Nfc3BhY2UpOw0KKyAgICBnX3Rlc3RfYWRkX2Z1bmMoIi9hdGMvdGVzdF9yZXNldCIs IHRlc3RfcmVzZXQpOw0KKyAgICBnX3Rlc3RfYWRkX2Z1bmMoIi9hdGMvdGVzdF9nZXRfbWF4X251 bWJlcl9vZl9wYWdlcyIsDQorICAgICAgICAgICAgICAgICAgICB0ZXN0X2dldF9tYXhfbnVtYmVy X29mX3BhZ2VzKTsNCisgICAgcmV0dXJuIGdfdGVzdF9ydW4oKTsNCit9DQpkaWZmIC0tZ2l0IGEv dXRpbC9hdGMuYyBiL3V0aWwvYXRjLmMNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAw MDAwMDAwLi5kOTUxNTMyZTI2DQotLS0gL2Rldi9udWxsDQorKysgYi91dGlsL2F0Yy5jDQpAQCAt MCwwICsxLDIxMSBAQA0KKy8qDQorICogUUVNVSBlbXVsYXRpb24gb2YgYW4gQVRDDQorICoNCisg KiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg YW5kL29yIG1vZGlmeQ0KKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5DQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCisgKiAoYXQgeW91 ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLg0KKw0KKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0 cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLA0KKyAqIGJ1dCBXSVRI T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mDQor ICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg U2VlIHRoZQ0KKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu DQorDQorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgYWxvbmcNCisgKiB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCBz ZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+Lg0KKyAqLw0KKw0KKyNpbmNsdWRlICJ1 dGlsL2F0Yy5oIg0KKw0KKw0KKyNkZWZpbmUgUEFHRV9UQUJMRV9FTlRSWV9TSVpFIDgNCisNCisv KiBhIHBhc2lkIGlzIGhhc2hlZCB1c2luZyB0aGUgaWRlbnRpdHkgZnVuY3Rpb24gKi8NCitzdGF0 aWMgZ3VpbnQgYXRjX3Bhc2lkX2tleV9oYXNoKGdjb25zdHBvaW50ZXIgdikNCit7DQorICAgIHJl dHVybiAoZ3VpbnQpKHVpbnRwdHJfdCl2OyAvKiBwYXNpZCAqLw0KK30NCisNCisvKiBwYXNpZCBl cXVhbGl0eSAqLw0KK3N0YXRpYyBnYm9vbGVhbiBhdGNfcGFzaWRfa2V5X2VxdWFsKGdjb25zdHBv aW50ZXIgdjEsIGdjb25zdHBvaW50ZXIgdjIpDQorew0KKyAgICByZXR1cm4gdjEgPT0gdjI7DQor fQ0KKw0KKy8qIEhhc2ggZnVuY3Rpb24gZm9yIElPVExCIGVudHJpZXMgKi8NCitzdGF0aWMgZ3Vp bnQgYXRjX2FkZHJfa2V5X2hhc2goZ2NvbnN0cG9pbnRlciB2KQ0KK3sNCisgICAgaHdhZGRyIGFk ZHIgPSAoaHdhZGRyKXY7DQorICAgIHJldHVybiAoZ3VpbnQpKChhZGRyID4+IDMyKSBeIChhZGRy ICYgMHhmZmZmZmZmZlUpKTsNCit9DQorDQorLyogRXF1YWxpdHkgdGVzdCBmb3IgSU9UTEIgZW50 cmllcyAqLw0KK3N0YXRpYyBnYm9vbGVhbiBhdGNfYWRkcl9rZXlfZXF1YWwoZ2NvbnN0cG9pbnRl ciB2MSwgZ2NvbnN0cG9pbnRlciB2MikNCit7DQorICAgIHJldHVybiAoaHdhZGRyKXYxID09ICho d2FkZHIpdjI7DQorfQ0KKw0KK3N0YXRpYyB2b2lkIGF0Y19hZGRyZXNzX3NwYWNlX2ZyZWUodm9p ZCAqYXMpDQorew0KKyAgICBnX2hhc2hfdGFibGVfdW5yZWYoYXMpOw0KK30NCisNCisvKiByZXR1 cm4gbG9nMih2YWwpLCBvciBVSU5UOF9NQVggaWYgdmFsIGlzIG5vdCBhIHBvd2VyIG9mIDIgKi8N CitzdGF0aWMgdWludDhfdCBpbG9nMih1aW50NjRfdCB2YWwpDQorew0KKyAgICB1aW50OF90IHJl c3VsdCA9IDA7DQorICAgIHdoaWxlICh2YWwgIT0gMSkgew0KKyAgICAgICAgaWYgKHZhbCAmIDEp IHsNCisgICAgICAgICAgICByZXR1cm4gVUlOVDhfTUFYOw0KKyAgICAgICAgfQ0KKw0KKyAgICAg ICAgdmFsID4+PSAxOw0KKyAgICAgICAgcmVzdWx0ICs9IDE7DQorICAgIH0NCisgICAgcmV0dXJu IHJlc3VsdDsNCit9DQorDQorQVRDICphdGNfbmV3KHVpbnQ2NF90IHBhZ2Vfc2l6ZSwgdWludDhf dCBhZGRyZXNzX3dpZHRoKQ0KK3sNCisgICAgQVRDICphdGM7DQorICAgIHVpbnQ4X3QgbG9nX3Bh Z2Vfc2l6ZSA9IGlsb2cyKHBhZ2Vfc2l6ZSk7DQorICAgIC8qIG51bWJlciBvZiBiaXRzIGVhY2gg dXNlZCB0byBzdG9yZSBhbGwgdGhlIGludGVybWVkaWF0ZSBpbmRleGVzICovDQorICAgIHVpbnQ2 NF90IGFkZHJfbG9va3VwX2luZGV4ZXNfc2l6ZTsNCisNCisgICAgaWYgKGxvZ19wYWdlX3NpemUg PT0gVUlOVDhfTUFYKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICAvKg0K KyAgICAgKiBXZSBvbmx5IHN1cHBvcnQgcGFnZSB0YWJsZSBlbnRyaWVzIG9mIDggKFBBR0VfVEFC TEVfRU5UUllfU0laRSkgYnl0ZXMNCisgICAgICogbG9nMihwYWdlX3NpemUgLyA4KSA9IGxvZzIo cGFnZV9zaXplKSAtIDMNCisgICAgICogaXMgdGhlIGxldmVsIG9mZnNldA0KKyAgICAgKi8NCisg ICAgaWYgKGxvZ19wYWdlX3NpemUgPD0gMykgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAg IH0NCisNCisgICAgYXRjID0gZ19uZXcwKEFUQywgMSk7DQorICAgIGF0Yy0+YWRkcmVzc19zcGFj ZXMgPSBnX2hhc2hfdGFibGVfbmV3X2Z1bGwoYXRjX3Bhc2lkX2tleV9oYXNoLA0KKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0Y19wYXNpZF9rZXlfZXF1 YWwsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVM TCwgYXRjX2FkZHJlc3Nfc3BhY2VfZnJlZSk7DQorICAgIGF0Yy0+bGV2ZWxfb2Zmc2V0ID0gbG9n X3BhZ2Vfc2l6ZSAtIDM7DQorICAgIC8qIGF0IHRoaXMgcG9pbnQsIHdlIGtub3cgdGhhdCBwYWdl X3NpemUgaXMgYSBwb3dlciBvZiAyICovDQorICAgIGF0Yy0+bWluX2FkZHJfbWFzayA9IHBhZ2Vf c2l6ZSAtIDE7DQorICAgIGFkZHJfbG9va3VwX2luZGV4ZXNfc2l6ZSA9IGFkZHJlc3Nfd2lkdGgg LSBsb2dfcGFnZV9zaXplOw0KKyAgICBpZiAoKGFkZHJfbG9va3VwX2luZGV4ZXNfc2l6ZSAlIGF0 Yy0+bGV2ZWxfb2Zmc2V0KSAhPSAwKSB7DQorICAgICAgICBnb3RvIGVycm9yOw0KKyAgICB9DQor ICAgIGF0Yy0+bGV2ZWxzID0gYWRkcl9sb29rdXBfaW5kZXhlc19zaXplIC8gYXRjLT5sZXZlbF9v ZmZzZXQ7DQorICAgIGF0Yy0+cGFnZV9zaXplID0gcGFnZV9zaXplOw0KKyAgICByZXR1cm4gYXRj Ow0KKw0KK2Vycm9yOg0KKyAgICBnX2ZyZWUoYXRjKTsNCisgICAgcmV0dXJuIE5VTEw7DQorfQ0K Kw0KK3N0YXRpYyBpbmxpbmUgR0hhc2hUYWJsZSAqYXRjX2dldF9hZGRyZXNzX3NwYWNlX2NhY2hl KEFUQyAqYXRjLCB1aW50MzJfdCBwYXNpZCkNCit7DQorICAgIHJldHVybiBnX2hhc2hfdGFibGVf bG9va3VwKGF0Yy0+YWRkcmVzc19zcGFjZXMsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChnY29uc3Rwb2ludGVyKSh1aW50cHRyX3QpcGFzaWQpOw0KK30NCisNCit2b2lkIGF0Y19j cmVhdGVfYWRkcmVzc19zcGFjZV9jYWNoZShBVEMgKmF0YywgdWludDMyX3QgcGFzaWQpDQorew0K KyAgICBHSGFzaFRhYmxlICphc19jYWNoZTsNCisNCisgICAgYXNfY2FjaGUgPSBhdGNfZ2V0X2Fk ZHJlc3Nfc3BhY2VfY2FjaGUoYXRjLCBwYXNpZCk7DQorICAgIGlmICghYXNfY2FjaGUpIHsNCisg ICAgICAgIGFzX2NhY2hlID0gZ19oYXNoX3RhYmxlX25ld19mdWxsKGF0Y19hZGRyX2tleV9oYXNo LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXRjX2FkZHJfa2V5 X2VxdWFsLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwg Z19mcmVlKTsNCisgICAgICAgIGdfaGFzaF90YWJsZV9yZXBsYWNlKGF0Yy0+YWRkcmVzc19zcGFj ZXMsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ3BvaW50ZXIpKHVpbnRwdHJfdClw YXNpZCwgYXNfY2FjaGUpOw0KKyAgICB9DQorfQ0KKw0KK3ZvaWQgYXRjX2RlbGV0ZV9hZGRyZXNz X3NwYWNlX2NhY2hlKEFUQyAqYXRjLCB1aW50MzJfdCBwYXNpZCkNCit7DQorICAgIGdfaGFzaF90 YWJsZV9yZW1vdmUoYXRjLT5hZGRyZXNzX3NwYWNlcywgKGdwb2ludGVyKSh1aW50cHRyX3QpcGFz aWQpOw0KK30NCisNCitpbnQgYXRjX3VwZGF0ZShBVEMgKmF0YywgSU9NTVVUTEJFbnRyeSAqZW50 cnkpDQorew0KKyAgICBJT01NVVRMQkVudHJ5ICp2YWx1ZTsNCisgICAgR0hhc2hUYWJsZSAqYXNf Y2FjaGUgPSBhdGNfZ2V0X2FkZHJlc3Nfc3BhY2VfY2FjaGUoYXRjLCBlbnRyeS0+cGFzaWQpOw0K KyAgICBpZiAoIWFzX2NhY2hlKSB7DQorICAgICAgICByZXR1cm4gLUVOT0RFVjsNCisgICAgfQ0K KyAgICB2YWx1ZSA9IGdfbWVtZHVwMihlbnRyeSwgc2l6ZW9mKCp2YWx1ZSkpOw0KKyAgICBnX2hh c2hfdGFibGVfcmVwbGFjZShhc19jYWNoZSwgKGdwb2ludGVyKShlbnRyeS0+aW92YSksIHZhbHVl KTsNCisgICAgcmV0dXJuIDA7DQorfQ0KKw0KK0lPTU1VVExCRW50cnkgKmF0Y19sb29rdXAoQVRD ICphdGMsIHVpbnQzMl90IHBhc2lkLCBod2FkZHIgYWRkcikNCit7DQorICAgIElPTU1VVExCRW50 cnkgKmVudHJ5Ow0KKyAgICBod2FkZHIgbWFzayA9IGF0Yy0+bWluX2FkZHJfbWFzazsNCisgICAg aHdhZGRyIGtleSA9IGFkZHIgJiAofm1hc2spOw0KKyAgICBHSGFzaFRhYmxlICphc19jYWNoZSA9 IGF0Y19nZXRfYWRkcmVzc19zcGFjZV9jYWNoZShhdGMsIHBhc2lkKTsNCisNCisgICAgaWYgKCFh c19jYWNoZSkgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisNCisgICAgLyoNCisg ICAgICogSXRlcmF0ZSBvdmVyIHRoZSBwb3NzaWJsZSBwYWdlIHNpemVzIGFuZCB0cnkgdG8gZmlu ZCBhIGhpdA0KKyAgICAqLw0KKyAgICBmb3IgKHVpbnQ4X3QgbGV2ZWwgPSAwOyBsZXZlbCA8IGF0 Yy0+bGV2ZWxzOyArK2xldmVsKSB7DQorICAgICAgICBlbnRyeSA9IGdfaGFzaF90YWJsZV9sb29r dXAoYXNfY2FjaGUsIChnY29uc3Rwb2ludGVyKWtleSk7DQorICAgICAgICBpZiAoZW50cnkpIHsN CisgICAgICAgICAgICByZXR1cm4gZW50cnk7DQorICAgICAgICB9DQorICAgICAgICBtYXNrID0g KG1hc2sgPDwgYXRjLT5sZXZlbF9vZmZzZXQpIHwgKCgxIDw8IGF0Yy0+bGV2ZWxfb2Zmc2V0KSAt IDEpOw0KKyAgICAgICAga2V5ID0gYWRkciAmICh+bWFzayk7DQorICAgIH0NCisNCisgICAgcmV0 dXJuIE5VTEw7DQorfQ0KKw0KK3N0YXRpYyBnYm9vbGVhbiBhdGNfaW52YWxpZGF0ZV9lbnRyeV9w cmVkaWNhdGUoZ3BvaW50ZXIga2V5LCBncG9pbnRlciB2YWx1ZSwNCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwb2ludGVyIHVzZXJfZGF0YSkNCit7DQor ICAgIElPTU1VVExCRW50cnkgKmVudHJ5ID0gKElPTU1VVExCRW50cnkgKil2YWx1ZTsNCisgICAg SU9NTVVUTEJFbnRyeSAqdGFyZ2V0ID0gKElPTU1VVExCRW50cnkgKil1c2VyX2RhdGE7DQorICAg IGh3YWRkciB0YXJnZXRfbWFzayA9IH50YXJnZXQtPmFkZHJfbWFzazsNCisgICAgaHdhZGRyIGVu dHJ5X21hc2sgPSB+ZW50cnktPmFkZHJfbWFzazsNCisgICAgcmV0dXJuICgodGFyZ2V0LT5pb3Zh ICYgdGFyZ2V0X21hc2spID09IChlbnRyeS0+aW92YSAmIHRhcmdldF9tYXNrKSkgfHwNCisgICAg ICAgICAgICgodGFyZ2V0LT5pb3ZhICYgZW50cnlfbWFzaykgPT0gKGVudHJ5LT5pb3ZhICYgZW50 cnlfbWFzaykpOw0KK30NCisNCit2b2lkIGF0Y19pbnZhbGlkYXRlKEFUQyAqYXRjLCBJT01NVVRM QkVudHJ5ICplbnRyeSkNCit7DQorICAgIEdIYXNoVGFibGUgKmFzX2NhY2hlID0gYXRjX2dldF9h ZGRyZXNzX3NwYWNlX2NhY2hlKGF0YywgZW50cnktPnBhc2lkKTsNCisgICAgaWYgKCFhc19jYWNo ZSkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIGdfaGFzaF90YWJsZV9mb3JlYWNo X3JlbW92ZShhc19jYWNoZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0Y19p bnZhbGlkYXRlX2VudHJ5X3ByZWRpY2F0ZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGVudHJ5KTsNCit9DQorDQordm9pZCBhdGNfZGVzdHJveShBVEMgKmF0YykNCit7DQorICAg IGdfaGFzaF90YWJsZV91bnJlZihhdGMtPmFkZHJlc3Nfc3BhY2VzKTsNCit9DQorDQorc2l6ZV90 IGF0Y19nZXRfbWF4X251bWJlcl9vZl9wYWdlcyhBVEMgKmF0YywgaHdhZGRyIGFkZHIsIHNpemVf dCBsZW5ndGgpDQorew0KKyAgICBod2FkZHIgcGFnZV9tYXNrID0gfihhdGMtPm1pbl9hZGRyX21h c2spOw0KKyAgICBzaXplX3QgcmVzdWx0ID0gKGxlbmd0aCAvIGF0Yy0+cGFnZV9zaXplKTsNCisg ICAgaWYgKCgoKGFkZHIgJiBwYWdlX21hc2spICsgbGVuZ3RoIC0gMSkgJiBwYWdlX21hc2spICE9 DQorICAgICAgICAoKGFkZHIgKyBsZW5ndGggLSAxKSAmIHBhZ2VfbWFzaykpIHsNCisgICAgICAg IHJlc3VsdCArPSAxOw0KKyAgICB9DQorICAgIHJldHVybiByZXN1bHQgKyAobGVuZ3RoICUgYXRj LT5wYWdlX3NpemUgIT0gMCA/IDEgOiAwKTsNCit9DQorDQordm9pZCBhdGNfcmVzZXQoQVRDICph dGMpDQorew0KKyAgICBnX2hhc2hfdGFibGVfcmVtb3ZlX2FsbChhdGMtPmFkZHJlc3Nfc3BhY2Vz KTsNCit9DQpkaWZmIC0tZ2l0IGEvdXRpbC9hdGMuaCBiL3V0aWwvYXRjLmgNCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAwLi44YmU5NWY1Y2NhDQotLS0gL2Rldi9udWxsDQor KysgYi91dGlsL2F0Yy5oDQpAQCAtMCwwICsxLDExNyBAQA0KKy8qDQorICogUUVNVSBlbXVsYXRp b24gb2YgYW4gQVRDDQorICoNCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91 IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQ0KKyAqIGl0IHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5DQorICog dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGlj ZW5zZSwgb3INCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLg0KKw0KKyAq IFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg dXNlZnVsLA0KKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp bXBsaWVkIHdhcnJhbnR5IG9mDQorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGZvciBtb3JlIGRldGFpbHMuDQorDQorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg Y29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcNCisgKiB3aXRoIHRo aXMgcHJvZ3JhbTsgaWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+Lg0K KyAqLw0KKw0KKyNpZm5kZWYgVVRJTF9BVENfSA0KKyNkZWZpbmUgVVRJTF9BVENfSA0KKw0KKyNp bmNsdWRlICJxZW11L29zZGVwLmgiDQorI2luY2x1ZGUgImV4ZWMvbWVtb3J5LmgiDQorDQordHlw ZWRlZiBzdHJ1Y3QgQVRDIHsNCisgICAgR0hhc2hUYWJsZSAqYWRkcmVzc19zcGFjZXM7IC8qIEtl eSA6IHBhc2lkLCB2YWx1ZSA6IEdIYXNoVGFibGUgKi8NCisgICAgaHdhZGRyIG1pbl9hZGRyX21h c2s7DQorICAgIHVpbnQ2NF90IHBhZ2Vfc2l6ZTsNCisgICAgdWludDhfdCBsZXZlbHM7DQorICAg IHVpbnQ4X3QgbGV2ZWxfb2Zmc2V0Ow0KK30gQVRDOw0KKw0KKy8qDQorICogYXRjX25ldzogQ3Jl YXRlIGFuIEFUQy4NCisgKg0KKyAqIFJldHVybiBhbiBBVEMgb3IgTlVMTCBpZiB0aGUgY3JlYXRp b24gZmFpbGVkDQorICoNCisgKiBAcGFnZV9zaXplOiAjUENJRGV2aWNlIGRvaW5nIHRoZSBtZW1v cnkgYWNjZXNzDQorICogQGFkZHJlc3Nfd2lkdGg6IHdpZHRoIG9mIHRoZSB2aXJ0dWFsIGFkZHJl c3NlcyB1c2VkIGJ5IHRoZSBJT01NVSAoaW4gYml0cykNCisgKi8NCitBVEMgKmF0Y19uZXcodWlu dDY0X3QgcGFnZV9zaXplLCB1aW50OF90IGFkZHJlc3Nfd2lkdGgpOw0KKw0KKy8qDQorICogYXRj X3VwZGF0ZTogSW5zZXJ0IG9yIHVwZGF0ZSBhbiBlbnRyeSBpbiB0aGUgY2FjaGUNCisgKg0KKyAq IFJldHVybiAwIGlmIHRoZSBvcGVyYXRpb24gc3VjY2VlZHMsIGEgbmVnYXRpdmUgZXJyb3IgY29k ZSBvdGhlcndpc2UNCisgKg0KKyAqIFRoZSBpbnNlcnRpb24gd2lsbCBmYWlsIGlmIHRoZSBhZGRy ZXNzIHNwYWNlIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHBhc2lkDQorICogaGFzIG5vdCBiZWVuIGNy ZWF0ZWQgd2l0aCBhdGNfY3JlYXRlX2FkZHJlc3Nfc3BhY2VfY2FjaGUNCisgKg0KKyAqIEBhdGM6 IHRoZSBBVEMgdG8gdXBkYXRlDQorICogQGVudHJ5OiB0aGUgdGxiIGVudHJ5IHRvIGluc2VydCBp bnRvIHRoZSBjYWNoZQ0KKyAqLw0KK2ludCBhdGNfdXBkYXRlKEFUQyAqYXRjLCBJT01NVVRMQkVu dHJ5ICplbnRyeSk7DQorDQorLyoNCisgKiBhdGNfY3JlYXRlX2FkZHJlc3Nfc3BhY2VfY2FjaGU6 IGRlbGFyZSBhIG5ldyBhZGRyZXNzIHNwYWNlDQorICogaWRlbnRpZmllZCBieSBhIFBBU0lEDQor ICoNCisgKiBAYXRjOiB0aGUgQVRDIHRvIHVwZGF0ZQ0KKyAqIEBwYXNpZDogdGhlIHBhc2lkIG9m IHRoZSBhZGRyZXNzIHNwYWNlIHRvIGJlIGNyZWF0ZWQNCisgKi8NCit2b2lkIGF0Y19jcmVhdGVf YWRkcmVzc19zcGFjZV9jYWNoZShBVEMgKmF0YywgdWludDMyX3QgcGFzaWQpOw0KKw0KKy8qDQor ICogYXRjX2RlbGV0ZV9hZGRyZXNzX3NwYWNlX2NhY2hlOiBkZWxldGUgYW4gYWRkcmVzcyBzcGFj ZQ0KKyAqIGlkZW50aWZpZWQgYnkgYSBQQVNJRA0KKyAqDQorICogQGF0YzogdGhlIEFUQyB0byB1 cGRhdGUNCisgKiBAcGFzaWQ6IHRoZSBwYXNpZCBvZiB0aGUgYWRkcmVzcyBzcGFjZSB0byBiZSBk ZWxldGVkDQorICovDQordm9pZCBhdGNfZGVsZXRlX2FkZHJlc3Nfc3BhY2VfY2FjaGUoQVRDICph dGMsIHVpbnQzMl90IHBhc2lkKTsNCisNCisvKg0KKyAqIGF0Y19sb29rdXA6IHF1ZXJ5IHRoZSBj YWNoZSBpbiBhIGdpdmVuIGFkZHJlc3Mgc3BhY2UNCisgKg0KKyAqIEBhdGM6IHRoZSBBVEMgdG8g cXVlcnkNCisgKiBAcGFzaWQ6IHRoZSBwYXNpZCBvZiB0aGUgYWRkcmVzcyBzcGFjZSB0byBxdWVy eQ0KKyAqIEBhZGRyOiB0aGUgdmlydHVhbCBhZGRyZXNzIHRvIHRyYW5zbGF0ZQ0KKyAqLw0KK0lP TU1VVExCRW50cnkgKmF0Y19sb29rdXAoQVRDICphdGMsIHVpbnQzMl90IHBhc2lkLCBod2FkZHIg YWRkcik7DQorDQorLyoNCisgKiBhdGNfaW52YWxpZGF0ZTogaW52YWxpZGF0ZSBhbiBlbnRyeSBp biB0aGUgY2FjaGUNCisgKg0KKyAqIEBhdGM6IHRoZSBBVEMgdG8gdXBkYXRlDQorICogQGVudHJ5 OiB0aGUgZW50cnkgdG8gaW52YWxpZGF0ZQ0KKyAqLw0KK3ZvaWQgYXRjX2ludmFsaWRhdGUoQVRD ICphdGMsIElPTU1VVExCRW50cnkgKmVudHJ5KTsNCisNCisvKg0KKyAqIGF0Y19kZXN0cm95OiBk ZWxldGUgYW4gQVRDDQorICoNCisgKiBAYXRjOiB0aGUgY2FjaGUgdG8gYmUgZGVsZXRlZA0KKyAq Lw0KK3ZvaWQgYXRjX2Rlc3Ryb3koQVRDICphdGMpOw0KKw0KKy8qDQorICogYXRjX2dldF9tYXhf bnVtYmVyX29mX3BhZ2VzOiBnZXQgdGhlIG51bWJlciBvZiBwYWdlcyBhIG1lbW9yeSBvcGVyYXRp b24NCisgKiB3aWxsIGFjY2VzcyBpZiBhbGwgdGhlIHBhZ2VzIGNvbmNlcm5lZCBoYXZlIHRoZSBt aW5pbXVtIHNpemUuDQorICoNCisgKiBUaGlzIGZ1bmN0aW9uIGNhbiBiZSB1c2VkIHRvIGRldGVy bWluZSB0aGUgc2l6ZSBvZiB0aGUgcmVzdWx0IGFycmF5IHRvIGJlDQorICogYWxsb2NhdGVkIHdo ZW4gaXNzdWluZyBhbiBBVFMgcmVxdWVzdC4NCisgKg0KKyAqIEBhdGM6IHRoZSBjYWNoZQ0KKyAq IEBhZGRyOiBzdGFydCBhZGRyZXNzDQorICogQGxlbmd0aDogbnVtYmVyIG9mIGJ5dGVzIGFjY2Vz c2VkIGZyb20gYWRkcg0KKyAqLw0KK3NpemVfdCBhdGNfZ2V0X21heF9udW1iZXJfb2ZfcGFnZXMo QVRDICphdGMsIGh3YWRkciBhZGRyLCBzaXplX3QgbGVuZ3RoKTsNCisNCisvKg0KKyAqIGF0Y19y ZXNldDogaW52YWxpZGF0ZXMgYWxsIHRoZSBlbnRyaWVzIHN0b3JlZCBpbiB0aGUgQVRDDQorICoN CisgKiBAYXRjOiB0aGUgY2FjaGUNCisgKi8NCit2b2lkIGF0Y19yZXNldChBVEMgKmF0Yyk7DQor DQorI2VuZGlmDQpkaWZmIC0tZ2l0IGEvdXRpbC9tZXNvbi5idWlsZCBiL3V0aWwvbWVzb24uYnVp bGQNCmluZGV4IDBlZjk4ODZiZTAuLmEyZTBlOWU1ZDcgMTAwNjQ0DQotLS0gYS91dGlsL21lc29u LmJ1aWxkDQorKysgYi91dGlsL21lc29uLmJ1aWxkDQpAQCAtOTQsNiArOTQsNyBAQCBpZiBoYXZl X2Jsb2NrDQogICB1dGlsX3NzLmFkZChmaWxlcygnaGJpdG1hcC5jJykpDQogICB1dGlsX3NzLmFk ZChmaWxlcygnaGV4ZHVtcC5jJykpDQogICB1dGlsX3NzLmFkZChmaWxlcygnaW92YS10cmVlLmMn KSkNCisgIHV0aWxfc3MuYWRkKGZpbGVzKCdhdGMuYycpKQ0KICAgdXRpbF9zcy5hZGQoZmlsZXMo J2lvdi5jJywgJ3VyaS5jJykpDQogICB1dGlsX3NzLmFkZChmaWxlcygnbnZkaW1tLXV0aWxzLmMn KSkNCiAgIHV0aWxfc3MuYWRkKGZpbGVzKCdibG9jay1oZWxwZXJzLmMnKSkNCi0tIA0KMi40NC4w DQo=