From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.10]) by sourceware.org (Postfix) with ESMTPS id 3026E3858D39 for ; Mon, 20 Nov 2023 03:29:05 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 3026E3858D39 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=intel.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 3026E3858D39 Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=198.175.65.10 ARC-Seal: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1700450947; cv=pass; b=KJqkZMUek3rvKHHdvC0aQjllmghXm0qVI3IQBM1iJBQgtUAn65vgO9PF9gW2Qj7/9ktDEz9sYtZtJVGvtj5Y/NyQgfZcdFgvHPDppVKKZkml7Rifpd87oYFM2VbP7QrYh8C1aX6t02tJOc9rTyaV9FZWcxV3bC4BNogknN4Vy8Y= ARC-Message-Signature: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1700450947; c=relaxed/simple; bh=udHckX/gcOiugx20VWbsuVVfAyYywqk5Q+ynm6BPCw8=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=WT7AQxLdSMrDFm0ClJkpIRIOizdVnHLpFdwrjuIbf6sOdf7m1+XgRuYfEjwyjixdbVlBzDG5TSZXQKFCvzyVmFRXnq7mDaGIUgiLGuHY4BJe+qdCcblFH+zN99RrnAFfAxecMcyjpgOSzo1f1WaI71oByeUS5Ws76QGXW+Ss10s= ARC-Authentication-Results: i=2; server2.sourceware.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1700450945; x=1731986945; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=udHckX/gcOiugx20VWbsuVVfAyYywqk5Q+ynm6BPCw8=; b=WxWc9Rf/m4NSqvdMXZjgoKhjAKJqsBYIr/UM40+OnYzIWAd+BRHeHDGG pUWP6L4UD4k+UrqXI9SknRgRQWr2dIQi8aZy/NGz8+q3SpF49A+GSajxQ 3GI6Hzdg6oevri0CqZZvsKD1508uRzhREF54Ma0hFYb8SvJvsMf6WD7fN Z3JacfMVEXVir1q5axXW/UTgp1KsqMV0bZCGVXREo8EUiu3C54O8HBhUh u8uwAsEG+rVRdPuFPAS72yOhIRNaTbwiNBZZrjGcjfsZOwa/IiFwqi6PM nFxUXuf03YVwIqYlgg4mI3dv/gradoifkER7kvgXRoY2ynwpnC0wWvKhw w==; X-IronPort-AV: E=McAfee;i="6600,9927,10899"; a="4718979" X-IronPort-AV: E=Sophos;i="6.04,212,1695711600"; d="scan'208";a="4718979" Received: from fmviesa002.fm.intel.com ([10.60.135.142]) by orvoesa102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 19 Nov 2023 19:29:04 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.04,212,1695711600"; d="scan'208";a="7567868" Received: from orsmsx602.amr.corp.intel.com ([10.22.229.15]) by fmviesa002.fm.intel.com with ESMTP/TLS/AES256-GCM-SHA384; 19 Nov 2023 19:29:04 -0800 Received: from orsmsx610.amr.corp.intel.com (10.22.229.23) by ORSMSX602.amr.corp.intel.com (10.22.229.15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Sun, 19 Nov 2023 19:29:02 -0800 Received: from ORSEDG602.ED.cps.intel.com (10.7.248.7) by orsmsx610.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34 via Frontend Transport; Sun, 19 Nov 2023 19:29:02 -0800 Received: from NAM10-MW2-obe.outbound.protection.outlook.com (104.47.55.100) by edgegateway.intel.com (134.134.137.103) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.34; Sun, 19 Nov 2023 19:29:02 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=XsalEuWph42Augfc1ykGec4KPAB3jNWkxYUpep1SM51HpVkyfYt5reFhZTkng2CgQ1ieWqaoS2t5Gg1Hfc0L90FmkUoGJg5LGBKXQbNMUPgH32FBTihmrsSTg/Y2jPSnT0EE/DGe9WlxOfy7H9gPHiWITQpRxgjPQQZi4ERgkldwR9NobYBECZNT4PL5kv5DyNAT/xpe3C+RzdU5wg9BHWFc23/oAyH5CTjKqB13OcQaPvS2ggHvpqLNGP3Hbr9FjTHpyw7wWyclp9U/CIBZZK11BWaNCQUHI1vG31Yz9Vdz0z6BYYaXz5dO/nzUZhEUFunw13ZDO6oYTWzjEBnsWg== 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=udHckX/gcOiugx20VWbsuVVfAyYywqk5Q+ynm6BPCw8=; b=YEyjVt4jiBf0jka4HDAvCp5ACfFvPZdJak/sa86MSByhlAGD+MVIANZL99Y59ZCarpaQXAeG3asMyjJN41pHC8Ff8EB4YYNKcJUvAbRUO8jHKZFA3LsrO5ekFOa+vPDYLtsqCBVhuEC+mDUYcni+dn0bssvkhnu3LBkDVFJDnYrEHBYZdohBjD75wW0TpWKhMs8lki6apG40GshxkUwsjBXor8+tfAbJdHGCXh776uF+v2g/mQcok4nyLkDPZRIAB+Pm5dzGXkusttCjHNV5Xt7E2bsZ9otNvF9b2ALqxsDeDTB1hSHUFR8pz0tPSRfluYG6lUK0UY0kIRlw6UkcdA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from SJ0PR11MB5940.namprd11.prod.outlook.com (2603:10b6:a03:42f::18) by SJ2PR11MB8298.namprd11.prod.outlook.com (2603:10b6:a03:545::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7002.26; Mon, 20 Nov 2023 03:28:56 +0000 Received: from SJ0PR11MB5940.namprd11.prod.outlook.com ([fe80::8a10:338f:c17e:dd7f]) by SJ0PR11MB5940.namprd11.prod.outlook.com ([fe80::8a10:338f:c17e:dd7f%7]) with mapi id 15.20.7002.027; Mon, 20 Nov 2023 03:28:56 +0000 From: "Hu, Lin1" To: "Beulich, Jan" CC: "Lu, Hongjiu" , "binutils@sourceware.org" Subject: RE: [PATCH][v3] Support APX NDD optimized encoding. Thread-Topic: [PATCH][v3] Support APX NDD optimized encoding. Thread-Index: AQHaF6b6BIRnh1ekOUSAs7kytKEh2LB8i8xggAG7JACABDKMIA== Date: Mon, 20 Nov 2023 03:28:55 +0000 Message-ID: References: <8ed3b7a2-8cba-6428-1c01-5b6c28ca4a89@suse.com> <20231115025925.2891038-1-lin1.hu@intel.com> <4c7a8e8c-de67-4d40-9cba-8fc04de1e309@suse.com> <018bb6c6-9f01-4723-bf32-1944758d695c@suse.com> In-Reply-To: <018bb6c6-9f01-4723-bf32-1944758d695c@suse.com> Accept-Language: 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=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: SJ0PR11MB5940:EE_|SJ2PR11MB8298:EE_ x-ms-office365-filtering-correlation-id: 554f66f8-d98c-4501-e85b-08dbe978d3a8 x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: l79PiEyRKmL1d/KY3WwwEWAbL9Haa1Fo4rlQ2L8U2iRtbHx8zvoCfo1ahNYRyq+IVT33PeYQiRM9gw/UXr6MojQDTFRsXRgH7Y5zebkaHYPuVxGeZ6dn30lFVtMDWknyr9NEegeCepvCdIRUoqqN2dIFi8BP71pOowJ6JuOuygXUgNfElQpw1V/q31GsuHwG2OXlmXyFQd6qbTb3VYCst0IbzKcQkvI09HSg0R//i7ava1byM2zdcQFh2NsNvG5ObIvp/FcnUvycmE5p16XE0wQaY6q9TDp1QjJf7DhNdsT6cOdSuUXDYHh6X/UnzG32R12N2v+J8QgErna0rfA4JiMungor6+YgkJtIJQJbmuc4eMYGtzXsv7+ZCOMN8W5g7ayJ4cyCGek0MefTtB0SsTwFhbYFZwTSEglvbvnWq3dKkvrbumylhtpDwHpQDLRVjZu5V+Ujh8uD/8aJLI1DXHujWGRu3ty8WNeb37EHun7WPoYcaE5MniBi9aBl7GscxfjtrjG4JOczcVA9OcP7gxEOaHH3meVQ3QhnajLQpK+KYB2SJuK4ZAS1f8AgvyA0fMf4k5HfnA1+oUAE948H6ed/fvJhTETA2PL8xFCO3uSYeYjMkfPb6HADlNzlZ9sG x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SJ0PR11MB5940.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(376002)(396003)(366004)(136003)(346002)(39860400002)(230922051799003)(451199024)(1800799012)(64100799003)(186009)(30864003)(5660300002)(2906002)(52536014)(316002)(4326008)(8676002)(8936002)(41300700001)(6916009)(66476007)(66556008)(54906003)(64756008)(66446008)(76116006)(66946007)(55016003)(71200400001)(26005)(478600001)(6506007)(7696005)(9686003)(53546011)(66899024)(33656002)(86362001)(83380400001)(82960400001)(122000001)(38070700009)(38100700002);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?MnZDalFWUURrdnhpMkhJNUZHbGRvb2ZTSlI2QzZxbW9sVjZETGN1ZWZCYkVp?= =?utf-8?B?RGNoY0xLcWMxdU1lRnNzaVdBU0VWa01oNWhOaXdibGtOSVgrVVBzbzREakdG?= =?utf-8?B?RHU0QXYvSTJKUDR5SXhIM2dYZFg0R2hRYXF0eXk2Q0dQSG9yTkE4ZlJIdGt1?= =?utf-8?B?bWtLT2kzNEVxcGFRT3AyTnB3ZmZsRld3VVJ0L1grVnMrY0F1aEovcS9MbTBq?= =?utf-8?B?Q01TOUxJdklSQldETDIyNkZXUEd6THZsOWM2c3J3aGZtVGN0MXNyWmdtUGdZ?= =?utf-8?B?VnZGYVdUYzlKa24vUDdPeHkzcUY0WFNiN0lZeGdoUWxGeWY5bS9Rdm40Yndq?= =?utf-8?B?WERJMnlzVmM0aWQ3WUt1UWlNQkJkVnJ0Rzc5Z085VzdQNTI4V1NLcFEzVmdV?= =?utf-8?B?aUI1bXlyWjhxSmpSRzFnbW1MTEtHaHYvSm1Db1RNNzJEbVlYajBwWVlkN29Q?= =?utf-8?B?MytiR2FQb3VCUmtuSE5qbjYxRDlIWERac2d0Mjh0WUxadjc1OFJxS2hJRXdB?= =?utf-8?B?WktBNkwxSHBxTHlmYjJPSFhPaWpTa2dKazFIdkJQd2YzSC9uQ1l0dklYNi9I?= =?utf-8?B?d2pMd2xab2creWJ6UDk5bGp1ZXdVTG02TTRISXdjR00rZGNKdkRFRC9kcjZK?= =?utf-8?B?cm8zcmlOMyt0dTl0dFZiMHdGQmtJSGR2NnJBZkZxNDlrRHJMUWlLK05JUXV6?= =?utf-8?B?d1lMYnBDdi9rRVJ6OGcxbkJjdUhkY1c5OTgzTGx4REMwUVByNTUxcGJrTDRT?= =?utf-8?B?OFh3aGpnUFlNazlETEhFNjhmZkxOWWp3cU5IdzQzL1ZoNWZLRXZwUnZaaWFT?= =?utf-8?B?cTluTGZ2QWsvcld5WDE1bUJXUCtDTVJEVGJ0NTVEd0lNdUMxbm5wbzZxdk9H?= =?utf-8?B?QnFobXZiVUtycUdNSUJjbmdvOU5zeTVkOThLTnZ1U0w0em5FZDRDSUxRZ2hB?= =?utf-8?B?dFRyTlZJUVlPbkwveFZobUhqalZTV21qZVRFUHNjOU8yT1ZPWVl1ZVY5TnlJ?= =?utf-8?B?NElBVTZVNnhIaHdGQzM4cElaakVUWWFkZ1lMRnJtZkxyQzhuT3ZYUDNrWFFq?= =?utf-8?B?dEIxT1dqNjc2WDJwYkovbHZrMnZiV1lvSWpVUUUxaGtKVFJOKzVMdzJWRkN2?= =?utf-8?B?U0dxMzBKY3FQZUMxcDB6bUE4UW9DL0tzU0xrT0p1UEdaVFkzNUJZQm9KVWFV?= =?utf-8?B?NkRuanlMU0Y5bTNvcTY3eW5ydk1sVlhuM1pRdmVmaThBN0lqM0RuODQ0TGpD?= =?utf-8?B?Ri9YWUJvOUhJeEFpY3g0ZXlzK2xLc1l5NjBUMTcyMVZVUWNIakdvVTdabE1R?= =?utf-8?B?K0NvRjJlRjlkNHFBZkxQbDZlUmJSZmpqRlNlT1pDa3c5ZGxQcTRUT0JwZnFh?= =?utf-8?B?UHdVZjlGdDNsRmppU3BmRDJjT0toNzlkRjVQODJEV0pHZXYzK2U5KzI1d3Rr?= =?utf-8?B?WnlicGx3bisraEJSTDc4akVvLzlCNGxUUHFPbXRhMVFURG5XRnZzVERhQXJi?= =?utf-8?B?OG5MUzdXU0kwTHpQbDBwa2llWEprS0w1Y1VBTE1FUm1paDJ6Z1JPb1FNd2Fh?= =?utf-8?B?Q0RVMVFYL1hWaFg5cWppeUJCVEd3ZEs2VWhmV0llb0FuK2hSaE9BNGV0S3RH?= =?utf-8?B?a0hIdHl5YS9lM3NOTnR3R3gyNzQzK0VoU2J0cmNCRzY2V2FnOVUwQzhuRzNR?= =?utf-8?B?aGtkS0ljYUxxRW1IS0dGSDMvTVBCTUs0dU9GNVF0RGF4L2dMRWYxeEN1aTBB?= =?utf-8?B?dmc5UXMzdU9GdHM1bDRJL25GbzBqMUFLaitVaW1DM3M5d0JsanAyRno0UDI3?= =?utf-8?B?OTA2TUQ4N1pkanlmcGtHV0dvQ0pyRTZEZmw5Sm9VVmpGb1NtRGRkMzJSTkpN?= =?utf-8?B?bnJScFkyb2ZOS1dZVTNSdGNlcXY1U2l5SEZiVTV4WlFzRVNIbkV1dUgzNXJ5?= =?utf-8?B?WjVzQnNGMG1DSGhuMnpKWlNVeTc1MkthQ1F6bTNTV0prdUZVbExSa0tDc2p5?= =?utf-8?B?NzNxVFpmQjNxS3hlaG1TN3N0S1VFelFZdTVleUlVZ1c4ZWFGMDZDSzd4NjlW?= =?utf-8?B?Q2FHclBsbGdnbFVDRzJTQVR6T05rTmJQVTZ1ZVIzREdvN2U3ZXNldms0MmFz?= =?utf-8?Q?vhF8=3D?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SJ0PR11MB5940.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 554f66f8-d98c-4501-e85b-08dbe978d3a8 X-MS-Exchange-CrossTenant-originalarrivaltime: 20 Nov 2023 03:28:55.9076 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: S9eJRAfItn5ynycOyvvNlWGteq6QFaY6TGQ0yoEJcCxD5PpjBKctzIBEYW1bZD9UPkyoJ0zYBVlOAjyRdECsQA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ2PR11MB8298 X-OriginatorOrg: intel.com X-Spam-Status: No, score=-4.8 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_NONE,SPF_NONE,TXREP,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBKYW4gQmV1bGljaCA8amJldWxp Y2hAc3VzZS5jb20+DQo+IFNlbnQ6IEZyaWRheSwgTm92ZW1iZXIgMTcsIDIwMjMgNTo0OCBQTQ0K PiBUbzogSHUsIExpbjEgPGxpbjEuaHVAaW50ZWwuY29tPg0KPiBDYzogTHUsIEhvbmdqaXUgPGhv bmdqaXUubHVAaW50ZWwuY29tPjsgYmludXRpbHNAc291cmNld2FyZS5vcmcNCj4gU3ViamVjdDog UmU6IFtQQVRDSF1bdjNdIFN1cHBvcnQgQVBYIE5ERCBvcHRpbWl6ZWQgZW5jb2RpbmcuDQo+IA0K PiBPbiAxNy4xMS4yMDIzIDA4OjI0LCBIdSwgTGluMSB3cm90ZToNCj4gPj4gLS0tLS1PcmlnaW5h bCBNZXNzYWdlLS0tLS0NCj4gPj4gRnJvbTogSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29t Pg0KPiA+PiBTZW50OiBXZWRuZXNkYXksIE5vdmVtYmVyIDE1LCAyMDIzIDU6MzUgUE0NCj4gPj4N Cj4gPj4gT24gMTUuMTEuMjAyMyAwMzo1OSwgSHUsIExpbjEgd3JvdGU6DQo+ID4+PiAtLS0gYS9n YXMvY29uZmlnL3RjLWkzODYuYw0KPiA+Pj4gKysrIGIvZ2FzL2NvbmZpZy90Yy1pMzg2LmMNCj4g Pj4+IEBAIC03MjA4LDYgKzcyMDgsNDMgQEAgY2hlY2tfRWdwck9wZXJhbmRzIChjb25zdCBpbnNu X3RlbXBsYXRlICp0KQ0KPiA+Pj4gICAgcmV0dXJuIDA7DQo+ID4+PiAgfQ0KPiA+Pj4NCj4gPj4+ ICsvKiBPcHRpbWl6ZSBBUFggTkREIGluc25zIHRvIGxlZ2FjeSBpbnNucy4gICovIHN0YXRpYyBi b29sDQo+ID4+PiArY29udmVydF9ORERfdG9fUkVYMiAoY29uc3QgaW5zbl90ZW1wbGF0ZSAqdCkg ew0KPiA+Pj4gKyAgaWYgKHQtPm9wY29kZV9tb2RpZmllci52ZXh2dnZ2ID09IFZleFZWVlZfRFNU DQo+ID4+PiArICAgICAgJiYgdC0+b3Bjb2RlX3NwYWNlID09IFNQQUNFX0VWRVhNQVA0DQo+ID4+ PiArICAgICAgJiYgIWkuaGFzX25mDQo+ID4+PiArICAgICAgJiYgaS5yZWdfb3BlcmFuZHMgPj0g MikNCj4gPj4+ICsgICAgew0KPiA+Pj4gKyAgICAgIHVuc2lnbmVkIGludCByZWFkb25seV92YXIg PSB+MDsNCj4gPj4+ICsgICAgICB1bnNpZ25lZCBpbnQgZGVzdCA9IGkub3BlcmFuZHMgLSAxOw0K PiA+Pj4gKyAgICAgIHVuc2lnbmVkIGludCBzcmMxID0gaS5vcGVyYW5kcyAtIDI7DQo+ID4+PiAr ICAgICAgdW5zaWduZWQgaW50IHNyYzIgPSAoaS5vcGVyYW5kcyA+IDMpID8gaS5vcGVyYW5kcyAt IDMgOiAwOw0KPiA+Pj4gKw0KPiA+Pj4gKyAgICAgIGlmIChpLnR5cGVzW3NyYzFdLmJpdGZpZWxk LmNsYXNzID09IFJlZw0KPiA+Pj4gKwkgICYmIGkub3Bbc3JjMV0ucmVncyA9PSBpLm9wW2Rlc3Rd LnJlZ3MpDQo+ID4+PiArCXJlYWRvbmx5X3ZhciA9IHNyYzI7DQo+ID4+PiArICAgICAgLyogYWRj eCwgYWRveCBhbmQgaW11bCBjYW4ndCBzdXBwb3J0IHRvIHN3YXAgdGhlIHNvdXJjZSBvcGVyYW5k cy4NCj4gKi8NCj4gPj4+ICsgICAgICBlbHNlIGlmIChpLnR5cGVzW3NyYzJdLmJpdGZpZWxkLmNs YXNzID09IFJlZw0KPiA+Pj4gKwkgICAgICAgJiYgaS5vcFtzcmMyXS5yZWdzID09IGkub3BbZGVz dF0ucmVncw0KPiA+Pj4gKwkgICAgICAgJiYgb3B0aW1pemUgPiAxDQo+ID4+PiArCSAgICAgICAm JiB0LT5vcGNvZGVfbW9kaWZpZXIuY29tbXV0YXRpdmUpDQo+ID4+DQo+ID4+IENvbW1lbnQgYW5k IGNvZGUgc3RpbGwgYXJlbid0IGluIGxpbmU6ICJzdXBwb3J0IHRvIHN3YXAgdGhlIHNvdXJjZQ0K PiA+PiBvcGVyYW5kcyINCj4gPj4gcmVhbGx5IGlzIHRoZSBEIGF0dHJpYnV0ZSBpbiB0aGUgb3Bj b2RlIHRhYmxlLCB3aGVyZWFzDQo+ID4+IHQtPm9wY29kZV9tb2RpZmllci5jb21tdXRhdGl2ZSBp cyByZWxhdGVkIHRvIHRoZSBDIGF0dHJpYnV0ZSAoYW5kIGFsbA0KPiA+PiB0LT50aHJlZQ0KPiA+ PiBpbnNucyBuYW1lZCByZWFsbHkgYXJlIGNvbW11dGF0aXZlKS4gSXQgbG9va3MgdG8gbWUgdGhh dCB0aGUgY29kZSBpcw0KPiA+PiBjb3JyZWN0LCBzbyBpdCB3b3VsZCB0aGVuIGJlIHRoZSBjb21t ZW50IHRoYXQgbWF5IG5lZWQgdXBkYXRpbmcuIEJ1dA0KPiA+PiBpdCBtYXkgYWxzbyBiZSBiZXR0 ZXIgdG8gYWRkaXRpb25hbGx5IGNoZWNrIC5kIGhlcmUgKG1ha2luZyB0aGUgY29kZQ0KPiA+PiBy b2J1c3QgYWdhaW5zdCBDIGJlaW5nIGFkZGVkIHRvIHRoZSB0cnVseSBjb21tdXRhdGl2ZSB5ZXQg bm90IGVsaWdpYmxlIHRvDQo+IGJlIG9wdGltaXplZCBpbnNucykuDQo+ID4+IEluIHdoaWNoIGNh c2UgdGhlIGNvbW1lbnQgbWlnaHQgc2F5ICJhZGN4LCBhZG94LCBhbmQgaW11bCwgd2hpbGUNCj4g Pj4gY29tbXV0YXRpdmUsIGRvbid0IHN1cHBvcnQgdG8gc3dhcCB0aGUgc291cmNlIG9wZXJhbmRz Ii4NCj4gPj4NCj4gPg0KPiA+IEkgdGhpbmsgd2UgZG9uJ3QgbmVlZCB0byB3b3JyeSBhYm91dCBp dCBmb3Igbm93LCBiZWNhdXNlIHdlJ3ZlIGNvbnN0cmFpbmVkDQo+IHRoZSBmdW5jdGlvbiB3aXRo IHZleHZ2dnZ2dmRlc3QsIGFuZCB0aGVzZSBpbnN0cnVjdGlvbnMgbXVzdCBiZSBOREQNCj4gaW5z dHJ1Y3Rpb25zLiBBbmQgYWRjeCwgYWRveCBhbmQgaW11bCBkb24ndCBoYXZlIEQgYXR0cmlidXRl Lg0KPiANCj4gUmlnaHQsIGFuZCBJIHRob3VnaHQgdG8gbGV2ZXJhZ2UgdGhpcy4gSU9XIC4uLg0K PiANCj4gPiBJZiBJIGFkZCBjaGVjayAuZCBoZXJlLCBJIHdpbGwgbmVlZCB0byBleGNsdWRlIHRo ZW0uDQo+IA0KPiAuLi4gSSBkb24ndCB0aGluayBJIHVuZGVyc3RhbmQgdGhpcy4NCj4NCg0KSSBt ZWFuIHRoaXMgcGxhY2UgaXMgdG8gY2hlY2sgaWYgd2UgY2FuIG9wdGltaXplIHNvbWV0aGluZyBs aWtlICJhZGN4ICVlYXgsICVlYngsICVlYXggLT4gYWRjeCAlZWJ4LCAlZWF4Ii4gIEFkY3ggZG9l c24ndCBzdXBwb3J0IEQgYXR0cmlidXRlLCBpZiB3ZSB3YW50IHRvIGFkZCBhIGNvbnN0cmFpbnQg dC0+b3Bjb2RlX21vZGlmaWVyLmQuIFRoZSBjb25zdHJhaW50cyBzaG91bGQgYmUgJiYgKHQtPm9w Y29kZV9tb2RpZmllci5kIHx8IHQtPm1uZW1fb2ZmID09IE1OX2FkY3gpICYmIHQtPm9wY29kZV9t b2RpZmllci5jb21tdXRhdGl2ZSwgYmVjYXVzZSwgYWRjeCBkb2Vzbid0IHN1cHBvcnQgRCBhdHRy aWJ1dGUuIElmIHdlIGRvZXNuJ3QgZXhjbHVkZSBpdCwgaXQgd2lsbCBiZSBzdG9wcGVkIGJ5IHQt Pm9wY29kZV9tb2RpZmllci5kLg0KIA0KPg0KPiA+IEJhc2VkIG9uIG91ciBwcmV2aW91cyBkaXNj dXNzaW9uLCBJIG1vZGlmaWVkIHRjLWkzODYuYyBhcyBmb2xsb3dzDQo+ID4NCj4gPiArLyogQ2hl Y2sgaWYgdGhlIGluc3RydWN0aW9uIHVzZSB0aGUgUkVYIHJlZ2lzdGVycy4gICovIHN0YXRpYyBi b29sDQo+ID4gK2NoZWNrX1JleE9wZXJhbmRzIChjb25zdCBpbnNuX3RlbXBsYXRlICp0KQ0KPiAN Cj4gSSBkb24ndCB0aGluayBJIGNhbiBzcG90IGEgdXNlIG9mIHRoZSBwYXJhbWV0ZXIgaW4gdGhl IGZ1bmN0aW9uLg0KPg0KDQpJIG1lcmVseSBtaW1pY2tlZCBDaGVja19FZ3ByT3BlcmFuZHMsIGFu ZCBkaWRuJ3QgcGF5IGF0dGVudGlvbiB0byB5b3VyIGNvbW1lbnRzIGFib3V0IGl0LiBJIHdpbGwg cmVtb3ZlIHRoZSBwYXJhbWV0ZXIuDQoNCj4gDQo+ID4gK3sNCj4gPiArICBmb3IgKHVuc2lnbmVk IGludCBvcCA9IDA7IG9wIDwgaS5vcGVyYW5kczsgb3ArKykNCj4gPiArICAgIHsNCj4gPiArICAg ICAgaWYgKGkudHlwZXNbb3BdLmJpdGZpZWxkLmNsYXNzICE9IFJlZw0KPiA+ICsgICAgICAgICAv KiBTcGVjaWFsIGNhc2UgZm9yICglZHgpIHdoaWxlIGRvaW5nIGlucHV0L291dHB1dCBvcCAqLw0K PiA+ICsgICAgICAgICB8fCBpLmlucHV0X291dHB1dF9vcGVyYW5kKQ0KPiANCj4gT25jZSBhZ2Fp bjogSXMgdGhpcyBuZWVkZWQ/IFJlc3BlY3RpdmUgaW5zbnMgc2hvdWxkbid0IGV2ZW4gbWFrZSBp dCBoZXJlLg0KPiBQbHVzIGlmIHRoZXkgZGlkLCAuLi4NCj4NCg0KSSBtb2RpZmllZCB0aGUgY29u c3RyYWludCBiZQ0KDQoJSWYgKGkudHlwZXNbb3BdLmJpdGZpZWxkLmNsYXNzICE9IFJlZykNCgkg IGNvbnRpbnVlOw0KIA0KPg0KPiA+ICsgICAgICAgY29udGludWU7DQo+ID4gKw0KPiA+ICsgICAg ICBpZiAoaS5vcFtvcF0ucmVncy0+cmVnX2ZsYWdzICYgKFJlZ1JleCB8IFJlZ1JleDY0KSkNCj4g PiArICAgICAgIHJldHVybiB0cnVlOw0KPiANCj4gLi4uIHRoZSBsb29wIHdvdWxkIGNvbnRpbnVl IGZvciAoJWR4KSBraW5kIG9wZXJhbmRzIGFueXdheS4NCj4NCj4NCj4gPiArICAgIH0NCj4gPiAr DQo+ID4gKyAgaWYgKChpLmluZGV4X3JlZyAmJiAoaS5pbmRleF9yZWctPnJlZ19mbGFncyAmIChS ZWdSZXggfCBSZWdSZXg2NCkpKQ0KPiA+ICsgICAgICB8fCAoaS5iYXNlX3JlZyAmJiAoaS5iYXNl X3JlZy0+cmVnX2ZsYWdzICYgKFJlZ1JleCB8IFJlZ1JleDY0KSkpKQ0KPiA+ICsgICAgcmV0dXJu IHRydWU7DQo+ID4gKw0KPiA+ICsgIC8qIENoZWNrIHBzZXVkbyBwcmVmaXgge3JleH0gYXJlIHZh bGlkLiAgKi8gIGlmIChpLnJleF9lbmNvZGluZykNCj4gPiArICAgIHJldHVybiB0cnVlOw0KPiA+ ICsgIHJldHVybiBmYWxzZTsNCj4gDQo+IEp1c3QgInJldHVybiBpLnJleF9lbmNvZGluZzsiPw0K Pg0KDQpJbmRlZWQsIGl0J3MgbW9yZSBzaW1wbGlmaWVkLg0KIA0KPg0KPiA+ICt9DQo+ID4gKw0K PiA+ICsvKiBPcHRpbWl6ZSBBUFggTkREIGluc25zIHRvIGxlZ2FjeSBpbnNucy4gICovIHN0YXRp YyB1bnNpZ25lZCBpbnQNCj4gPiArY29udmVydF9ORERfdG9fbGVnYWN5IChjb25zdCBpbnNuX3Rl bXBsYXRlICp0KSB7DQo+ID4gKyAgdW5zaWduZWQgaW50IHJlYWRvbmx5X3ZhciA9IH4wOw0KPiAN Cj4gT25lIGlzc3VlIEkgY29udGludWUgdG8gaGF2ZSBpcyB0aGUgbmFtZSBvZiB0aGlzIHZhcmlh YmxlLiBHb29kIG5hbWVzIGhlbHANCj4gdW5kZXJzdGFuZGluZyB3aGF0IGNvZGUgaXMgZG9pbmcu IEFuZCBpbiAzLW9wZXJhbmQgTkREIGluc25zIHRoZXJlIGFyZQ0KPiB1bmlmb3JtbHkgMiBvcGVy YW5kcyB3aGljaCBhcmUgb25seSByZWFkLg0KPg0KDQpNYXliZSBJIHNob3VsZCBjaGFuZ2UgdGhl IHZhcmlhYmxlIHRvIGJlIGNhbGxlZCByZWFkb25seV9yZWdfcG9zLg0KDQo+IA0KPiA+ICsgIGlm ICh0LT5vcGNvZGVfbW9kaWZpZXIudmV4dnZ2diA9PSBWZXhWVlZWX0RTVA0KPiA+ICsgICAgICAm JiB0LT5vcGNvZGVfc3BhY2UgPT0gU1BBQ0VfRVZFWE1BUDQNCj4gPiArICAgICAgJiYgIWkuaGFz X25mDQo+ID4gKyAgICAgICYmIGkucmVnX29wZXJhbmRzID49IDIpDQo+ID4gKyAgICB7DQo+ID4g KyAgICAgIHVuc2lnbmVkIGludCBkZXN0ID0gaS5vcGVyYW5kcyAtIDE7DQo+ID4gKyAgICAgIHVu c2lnbmVkIGludCBzcmMxID0gaS5vcGVyYW5kcyAtIDI7DQo+ID4gKyAgICAgIHVuc2lnbmVkIGlu dCBzcmMyID0gKGkub3BlcmFuZHMgPiAzKSA/IGkub3BlcmFuZHMgLSAzIDogMDsNCj4gPiArDQo+ ID4gKyAgICAgIGlmIChpLnR5cGVzW3NyYzFdLmJpdGZpZWxkLmNsYXNzID09IFJlZw0KPiA+ICsg ICAgICAgICAmJiBpLm9wW3NyYzFdLnJlZ3MgPT0gaS5vcFtkZXN0XS5yZWdzKQ0KPiA+ICsgICAg ICAgcmVhZG9ubHlfdmFyID0gc3JjMjsNCj4gPiArICAgICAgLyogYWRjeCwgYWRveCwgYW5kIGlt dWwsIHdoaWxlIGNvbW11dGF0aXZlLCBkb24ndCBzdXBwb3J0IHRvIHN3YXANCj4gPiArICAgICAg ICB0aGUgc291cmNlIG9wZXJhbmRzLiAgKi8NCj4gPiArICAgICAgZWxzZSBpZiAoaS50eXBlc1tz cmMyXS5iaXRmaWVsZC5jbGFzcyA9PSBSZWcNCj4gPiArICAgICAgICAgICAgICAmJiBpLm9wW3Ny YzJdLnJlZ3MgPT0gaS5vcFtkZXN0XS5yZWdzDQo+ID4gKyAgICAgICAgICAgICAgJiYgb3B0aW1p emUgPiAxDQo+ID4gKyAgICAgICAgICAgICAgJiYgdC0+b3Bjb2RlX21vZGlmaWVyLmNvbW11dGF0 aXZlKQ0KPiA+ICsgICAgICAgcmVhZG9ubHlfdmFyID0gc3JjMTsNCj4gPiArICAgIH0NCj4gPiAr ICByZXR1cm4gcmVhZG9ubHlfdmFyOw0KPiA+ICt9DQo+IA0KPiBZb3UncmUgbm8gbG9uZ2VyIGNv bnZlcnRpbmcgYW55dGhpbmcgaW4gdGhpcyBmdW5jdGlvbiwgd2hpY2ggLSBJJ20gc29ycnkgdG8g c2F5DQo+IHRoYXQgLSBvbmNlIGFnYWluIG1ha2VzIGl0cyBuYW1lIHVuc3VpdGFibGUuDQo+DQoN ClRydWUsIGJ1dCBJIHRoaW5rIHRoZSBmdW5jdGlvbidzIG5hbWUgY2FuIGJlIGNoYW5nZWQgbGF0 ZXIsIHJlbW92aW5nIHNvbWUgb3BlcmF0aW9ucyBvbiBpIHByZXZlbnRzIG1lIGZyb20gZG9pbmcg dW5uZWNlc3NhcnkgYmFja3RyYWNraW5nLg0KDQpJIHRoaW5rIHRoZSBmdW5jdGlvbiBtYXliZSBj YW4gYmUgbmFtZWQgYXMgY2FuX2NvbnZlcnRfTkREX3RvX2xlZ2FjeS4gUmV0dXJuIDAgbWVhbnMg Y2FuJ3QsIG90aGVycyBtZWFuIGNhbi4NCg0KPiANCj4gPiBAQCAtNzcyOCw2ICs3NzgyLDU1IEBA IG1hdGNoX3RlbXBsYXRlIChjaGFyIG1uZW1fc3VmZml4KQ0KPiA+ICAgICAgICAgICBpLm1lbXNo aWZ0ID0gbWVtc2hpZnQ7DQo+ID4gICAgICAgICB9DQo+ID4NCj4gPiArICAgICAgLyogSWYgd2Ug Y2FuIG9wdGltaXplIGEgTkREIGluc24gdG8gbGVnYWN5IGluc24sIGxpa2UNCj4gPiArICAgICAg ICBhZGQgJXIxNiwgJXI4LCAlcjggLT4gYWRkICVyMTYsICVyOCwNCj4gPiArICAgICAgICBhZGQg ICVyOCwgJXIxNiwgJXI4IC0+IGFkZCAlcjE2LCAlcjgsIHRoZW4gcmVtYXRjaCB0ZW1wbGF0ZS4N Cj4gPiArICAgICAgICBOb3RlIHRoYXQgdGhlIHNlbWFudGljcyBoYXZlIG5vdCBiZWVuIGNoYW5n ZWQuICAqLw0KPiA+ICsgICAgICBpZiAob3B0aW1pemUNCj4gPiArICAgICAgICAgJiYgIWkubm9f b3B0aW1pemUNCj4gPiArICAgICAgICAgJiYgaS52ZWNfZW5jb2RpbmcgIT0gdmV4X2VuY29kaW5n X2V2ZXgNCj4gPiArICAgICAgICAgJiYgdCArIDEgPCBjdXJyZW50X3RlbXBsYXRlcy0+ZW5kDQo+ ID4gKyAgICAgICAgICYmICF0WzFdLm9wY29kZV9tb2RpZmllci5ldmV4DQo+ID4gKyAgICAgICAg ICYmIHRbMV0ub3Bjb2RlX3NwYWNlIDw9IFNQQUNFXzBGMzgpDQo+IA0KPiBJbiBhbGwgb2YgdGhl c2UgY2hlY2tzIHdoYXQgSSdtIG1pc3NpbmcgaXMgYSBjaGVjayB0aGF0IHdlJ3JlIGFjdHVhbGx5 IGRlYWxpbmcNCj4gd2l0aCBhbiBOREQgdGVtcGxhdGUuDQo+DQoNCk9mIGNvdXJzZSBJIGNhbiBh ZGQgaXQgaGVyZSwgdGhlbiBJJ2xsIHJlbW92ZSBpdCBmcm9tIGNvbnZlcnRfTkREX3RvX2xlZ2Fj eS4NCiANCj4NCj4gPiArICAgICAgIHsNCj4gPiArICAgICAgICAgdW5zaWduZWQgaW50IHJlYWRv bmx5X3ZhciA9IGNvbnZlcnRfTkREX3RvX2xlZ2FjeSAodCk7DQo+ID4gKyAgICAgICAgIHNpemVf bWF0Y2ggPSB0cnVlOw0KPiA+ICsNCj4gPiArICAgICAgICAgaWYgKHJlYWRvbmx5X3ZhciAhPSAo dW5zaWduZWQgaW50KSB+MCkNCj4gPiArICAgICAgICAgICB7DQo+ID4gKyAgICAgICAgICAgICBm b3IgKGogPSAwOyBqIDwgaS5vcGVyYW5kcyAtIDI7IGorKykNCj4gPiArICAgICAgICAgICAgICAg ew0KPiA+ICsgICAgICAgICAgICAgICAgIGNoZWNrX3JlZ2lzdGVyID0gajsNCj4gPiArICAgICAg ICAgICAgICAgICBpZiAodC0+b3Bjb2RlX21vZGlmaWVyLmQpDQo+ID4gKyAgICAgICAgICAgICAg ICAgICBjaGVja19yZWdpc3RlciBePSAxOw0KPiA+ICsgICAgICAgICAgICAgICAgIG92ZXJsYXAw ID0gb3BlcmFuZF90eXBlX2FuZCAoaS50eXBlc1tjaGVja19yZWdpc3Rlcl0sDQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0WzFdLm9wZXJhbmRfdHlw ZXNbY2hlY2tfcmVnaXN0ZXJdKTsNCj4gPiArICAgICAgICAgICAgICAgICBpZiAoIW9wZXJhbmRf dHlwZV9tYXRjaCAob3ZlcmxhcDAsIGkudHlwZXNbY2hlY2tfcmVnaXN0ZXJdKSkNCj4gPiArICAg ICAgICAgICAgICAgICAgIHNpemVfbWF0Y2ggPSBmYWxzZTsNCj4gPiArICAgICAgICAgICAgICAg fQ0KPiANCj4gSSdtIGFmcmFpZCB0aGF0IHdpdGhvdXQgYSBjb21tZW50IEkgZG9uJ3QgdW5kZXJz dGFuZCB3aGF0IHRoaXMgaXMgYWJvdXQuDQo+IA0KDQpJIHdhbnQgdG8gbWFrZSBzdXJlIHRoYXQg dGhlIHR3byBuZWlnaGJvcmluZyB0ZW1wbGF0ZXMgaGF2ZSB0aGUgc2FtZSBpbnB1dC4gSSB0cmll ZCBiYXNlX2NvZGUgYnV0IGl0IG1pc3NlcyBzb21lIHNwZWNpYWwgY2FzZXMsIHNvIEkgd2FudCB0 byBzdGFydCB3aXRoIHRoZSBmaXJzdCBwYXJhbWV0ZXIgKEFUVCksIGxpa2Ugc2hsZCBJbW04IGFu ZCBzaGxkIHNoaWZ0Q291bnQuIEJ1dCBzb21lIGluc25zIHdpdGggLmQuIFNvIEkgbmVlZCB0byBj aGVjayBpZiB0aGUgZmlyc3Qgb3BlcmFuZCBjYW4gbWF0Y2ggdGhlIHNlY29uZCB0eXBlLiAgU2Vl bXMgbGlrZSBpdCBsb29rcyBsaWtlIE5ERCBjYW4gc2ltcGx5IG1hdGNoIHRoYXQgd2F5IG5vdy4N Cg0KSSdtIGhhdmluZyBzb21lIHByb2JsZW1zIHdpdGggdGhpcyBjdXJyZW50IHZlcnNpb24sIEkn dmUgbW9kaWZpZWQgaXQuIEFuZCBkZWxldGUgdGhpcyBwYXJ0IG9mIHRoZSBjb2RlIG5vdyB3b24n dCBoYXZlIGFueSBlZmZlY3QgYmVjYXVzZSB0aGUgb3JpZ2luYWwgdmVyc2lvbiBvZiB0aGUgTkRE IGluc3RydWN0aW9uIGlzIHNvcnRlZCBieSB1cywgYW5kIEkgdGhpbmsgdGhhdCB0aGlzIHBhcnQg d2lsbCBvbmx5IGJlIHVzZWQgaW4gdGhlIGNhc2UgdGhhdCBzb21lb25lIGhhcyBzb3J0ZWQgLnRi bCBpbmNvcnJlY3RseS4NCg0KVGhlIGN1cnJlbnQgdmVyc2lvbiBpcw0KDQorICAgICAgICAgaWYg KHJlYWRvbmx5X3ZhciAhPSAodW5zaWduZWQgaW50KSB+MCkNCisgICAgICAgICAgIHsNCisgICAg ICAgICAgICAgb3ZlcmxhcDAgPSBvcGVyYW5kX3R5cGVfYW5kIChpLnR5cGVzWzBdLA0KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRbMV0ub3BlcmFuZF90eXBlc1sw XSk7DQorICAgICAgICAgICAgIGlmICh0LT5vcGNvZGVfbW9kaWZpZXIuZCkNCisgICAgICAgICAg ICAgICBvdmVybGFwMSA9IG9wZXJhbmRfdHlwZV9hbmQgKGkudHlwZXNbMF0sDQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0WzFdLm9wZXJhbmRfdHlwZXNbMV0p Ow0KKyAgICAgICAgICAgICBpZiAoIW9wZXJhbmRfdHlwZV9tYXRjaCAob3ZlcmxhcDAsIGkudHlw ZXNbMF0pDQorICAgICAgICAgICAgICAgICAmJiAoIXQtPm9wY29kZV9tb2RpZmllci5kDQorICAg ICAgICAgICAgICAgICAgICAgfHwgKHQtPm9wY29kZV9tb2RpZmllci5kDQorICAgICAgICAgICAg ICAgICAgICAgICAgICYmICFvcGVyYW5kX3R5cGVfbWF0Y2ggKG92ZXJsYXAxLCBpLnR5cGVzWzBd KSkpKQ0KKyAgICAgICAgICAgICAgIHNpemVfbWF0Y2ggPSBmYWxzZTsNCisNCg0KPg0KPiA+ICsg ICAgICAgICAgICAgaWYgKHNpemVfbWF0Y2gNCj4gPiArICAgICAgICAgICAgICAgICAmJiAodFsx XS5vcGNvZGVfc3BhY2UgPD0gU1BBQ0VfMEYNCj4gPiArICAgICAgICAgICAgICAgICAgICAgfHwg KCFjaGVja19FZ3ByT3BlcmFuZHMgKHQgKyAxKQkgLy8gVGhlc2UgY29uZGl0aW9ucyBhcmUNCj4g ZXhjbHVkZSBhZGN4L2Fkb3ggd2l0aCBpbmFwcHJvcHJpYXRlIHJlZ2lzdGVycy4NCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICYmICFjaGVja19SZXhPcGVyYW5kcyAodCArIDEpDQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAmJiAhaS5vcFtpLm9wZXJhbmRzIC0NCj4gPiArIDFd LnJlZ3MtPnJlZ190eXBlLmJpdGZpZWxkLnF3b3JkKSkpDQo+IA0KPiBTYXlpbmcgImluYXBwcm9w cmlhdGUiIGluIHN1Y2ggYSBjb21tZW50IGRvZXNuJ3QgcmVhbGx5IGhlbHAsIGFzIGl0J3MgdGhl bg0KPiBzdGlsbCB1bmNsZWFyIHdoYXQgaXMgImFwcHJvcHJpYXRlIi4gQnV0IHRoZSBjb21tZW50 IHdpbGwgbmVlZCByZS1mb3JtYXR0aW5nDQo+IGFueXdheS4NCj4NCg0KSSBtb2RpZmVkIHRoZSBj b21tZW50IGFzICJPcHRpbWl6aW5nIHNvbWUgbm9uLWxlZ2FjeS1tYXAwLzEgd2l0aG91dCBSRVgv UkVYMiBwcmVmaXggd2lsbCBiZSB2YWx1YWJsZS4iDQogDQo+DQo+ID4gKyAgICAgICAgICAgICAg IHsNCj4gPiArICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgc3JjMSA9IGkub3BlcmFuZHMg LSAyOw0KPiANCj4gTG9va3MgbGlrZSB0aGlzIHZhcmlhYmxlIGlzIG5vIGxvbmdlciB1c2VkPw0K Pg0KDQpZZXMsIEkgcmVtb3ZlZCBpdC4NCg0KPiANCj4gPiArICAgICAgICAgICAgICAgICB1bnNp Z25lZCBpbnQgc3JjMiA9IChpLm9wZXJhbmRzID4gMykgPyBpLm9wZXJhbmRzIC0NCj4gPiArIDMg OiAwOw0KPiA+ICsNCj4gPiArICAgICAgICAgICAgICAgICBpZiAocmVhZG9ubHlfdmFyICE9IHNy YzIpDQo+ID4gKyAgICAgICAgICAgICAgICAgICBzd2FwXzJfb3BlcmFuZHMgKHJlYWRvbmx5X3Zh ciwgc3JjMik7DQo+ID4gKw0KPiA+ICsgICAgICAgICAgICAgICAgIC0taS5vcGVyYW5kczsNCj4g PiArICAgICAgICAgICAgICAgICAtLWkucmVnX29wZXJhbmRzOw0KPiA+ICsNCj4gPiArICAgICAg ICAgICAgICAgICBzcGVjaWZpY19lcnJvciA9IHByb2dyZXNzIChpbnRlcm5hbF9lcnJvcik7DQo+ ID4gKyAgICAgICAgICAgICAgICAgY29udGludWU7DQo+ID4gKyAgICAgICAgICAgICAgIH0NCj4g PiArDQo+ID4gKyAgICAgICAgICAgfQ0KPiA+ICsgICAgICAgfQ0KPiA+ICsNCj4gPiAgICAgICAg LyogV2UndmUgZm91bmQgYSBtYXRjaDsgYnJlYWsgb3V0IG9mIGxvb3AuICAqLw0KPiA+ICAgICAg ICBicmVhazsNCj4gPg0KPiA+IFdoYXQncyB5b3VyIG9waW5pb24/DQo+IA0KPiBJIG5lZWQgc29t ZSBmdXJ0aGVyIGNsYXJpZmljYXRpb24gZmlyc3QsIGFzIHBlciBhYm92ZS4gSSBhbHNvIGRvbid0 IHRoaW5rIEkgY2FuDQo+IHByb3Blcmx5IGlkZW50aWZ5ICh5ZXQpIHdoaWNoIHBhcnRzIG9mIHRo ZSBjb2RlIGFyZSBzb2xlbHkgcmVsYXRlZCB0byB0aGUNCj4gQURDWC9BRE9YIHNwZWNpYWwgY2Fz ZS4gVGhlIG1vcmUgY29kZSB0aGF0J3Mgc3BlY2lhbCBmb3IgdGhlc2UsIHRoZSBtb3JlIEknZA0K PiBiZSBpbmNsaW5lZCB0byBhc2sgdGhhdCBkZWFsaW5nIHdpdGggdGhlbSBiZSBhIHNlcGFyYXRl IHBhdGNoLCBmb3IgdXMgdG8NCj4ganVkZ2Ugd2hldGhlciBlZmZvcnQgYW5kIGVmZmVjdCBhcmUg aW4gcmVhc29uYWJsZSBiYWxhbmNlLg0KPiANCg0KQ3VycmVudGx5IG9ubHkgdGhpcyBwYXJ0IG9m IHRoZSBjb2RlIA0KDQorICAgICAgICAgICAgICAgICAvKiBPcHRpbWl6aW5nIHNvbWUgbm9uLWxl Z2FjeS1tYXAwLzEgd2l0aG91dCBSRVgvUkVYMiBwcmVmaXggd2lsbCBiZSB2YWx1YWJsZS4gICov DQorICAgICAgICAgICAgICAgICAmJiAodFsxXS5vcGNvZGVfc3BhY2UgPD0gU1BBQ0VfMEYNCisg ICAgICAgICAgICAgICAgICAgICB8fCAoIWNoZWNrX0VncHJPcGVyYW5kcyAodCArIDEpDQorICAg ICAgICAgICAgICAgICAgICAgICAgICYmICFjaGVja19SZXhPcGVyYW5kcyAoKQ0KKyAgICAgICAg ICAgICAgICAgICAgICAgICAmJiAhaS5vcFtpLm9wZXJhbmRzIC0gMV0ucmVncy0+cmVnX3R5cGUu Yml0ZmllbGQucXdvcmQpKSkNCg0KaXMgcmVsYXRlZCB0byBhZGN4L2Fkb3ggKEluY2x1ZGUgY2hl Y2tfUmV4T3BlcmFuZHMpLCBhbGwgb3RoZXIga2luZHMgb2YgY29uc3RyYWludHMgYXJlIGp1c3Qg dG8gbWFrZSB0aGUgY29kZSBtb3JlIHJvYnVzdC4gSWYgeW91IHN0aWxsIHRoaW5rIHRoaXMgcGFy dCBpcyB0b28gY29tcGxpY2F0ZWQsIEkgd291bGQgY29uc2lkZXIgaG9sZGluZyBvZmYgb24gb3B0 aW1pemluZyBhZGN4L2Fkb3gsIGFmdGVyIGFsbCwgdGhlcmUgYXJlbid0IG1hbnkgb2YgdGhlc2Ug dHlwZXMgb2YgY29tbWFuZHMgYXQgdGhlIG1vbWVudC4NCg0KQlJzLA0KTGluDQo=