From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 750BA42FB8; Wed, 2 Aug 2023 19:22:49 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 2DF1A40DDB; Wed, 2 Aug 2023 19:22:49 +0200 (CEST) Received: from mgamail.intel.com (unknown [192.55.52.151]) by mails.dpdk.org (Postfix) with ESMTP id 3487A4021D; Wed, 2 Aug 2023 19:22:45 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1690996966; x=1722532966; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=ZdUbFnbLUgdUDx7rvuP3OHUE/IuOcwFmNjbGXOJJs30=; b=TkURk3uzKNn1K6ExHwrt0agS/jLTFOE2glbMiZjNAFEAmbV30s00ceFP RXQG5Er4kWydXhIDjcf7qS5VwGZaFAgjXJXwHPvcSFSA1DDwKzYRVKnZS IlIbnu4sjdrIrxIr4K5KFX/uv/uRICffrDmhSvNZ9raNSjwbRSUkEMySQ 5lzIstQ/vdLm9gtR6WNM3g9ielQrQs5STpSrg0AUABDlfsM+6yvZPRwaJ 2078jUwi1iXsj7eXcjF0ZBqjy/3yKn703IHFzBApn8qVHwOZMp4knK/0A GkE60jpAJSS0czUv19SpGH6sO6W32mWd51fJyH6Qr0E2oAY01d1Ir6SdG Q==; X-IronPort-AV: E=McAfee;i="6600,9927,10790"; a="349950230" X-IronPort-AV: E=Sophos;i="6.01,249,1684825200"; d="scan'208";a="349950230" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 Aug 2023 10:22:44 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10790"; a="758825347" X-IronPort-AV: E=Sophos;i="6.01,249,1684825200"; d="scan'208";a="758825347" Received: from orsmsx603.amr.corp.intel.com ([10.22.229.16]) by orsmga008.jf.intel.com with ESMTP; 02 Aug 2023 10:22:43 -0700 Received: from orsmsx610.amr.corp.intel.com (10.22.229.23) by ORSMSX603.amr.corp.intel.com (10.22.229.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.27; Wed, 2 Aug 2023 10:22:43 -0700 Received: from orsedg603.ED.cps.intel.com (10.7.248.4) 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.27 via Frontend Transport; Wed, 2 Aug 2023 10:22:43 -0700 Received: from NAM11-DM6-obe.outbound.protection.outlook.com (104.47.57.168) by edgegateway.intel.com (134.134.137.100) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.27; Wed, 2 Aug 2023 10:22:43 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=oVZplgJApR6yHZnDcVyzVSaOzQaFhPS4IAUirLnU05tA4DgSEKjLgncK2p27VzJT0FYt9hXsiPxoSq5Uj6QsKKlP6DO78U02MQ3POQ5G7g5HgjXEoQUuwXtyLpJ69zT4kFY9MBfrVzMN+LQB6V1x21JLZktgQgGHjdJTWO9cXMkOX9IJHDNefB4OmRvasGNqenG2mDrkCKCdCuDWxuUwke5Y+GT2sjbln8PAv3aKNGwEeTUr2bypoMmN6NrkoDDJm+ANx1KlvYItMpO4f9Po04bO+Xhl/S9moomubMohC4vkKpS2m8KLlubFGM1W42fXFURsblEdwSA+BceNqKl7kw== 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=ZdUbFnbLUgdUDx7rvuP3OHUE/IuOcwFmNjbGXOJJs30=; b=c4VMAWffagSZ5pJz2fGW1b1H5bHNAfAjSYXVvzJdOLdelN6V7mR1GHm34ZMHHNgGB5jX2NMHGtxBefGutFhS3iNxhQs230CbUt7EsuLNnyWEsw1Qqr5pjo57gRrs+wJVcn5PPdtPttYDxZm0ly3AMZYdxnUMOdM8whRm1MBjO2w8jpaaa/kNSuKhtMRi3nE/wlVSizPmH//GKGAGTTCcxkG/JBSuPMIES4VyhMoEOaMRMROhFg5JWHHUJd6yeaDoljzBdz+TmNPZV8XJik/AiU11TAIkGnFZMncqLNEVWNsnV7c1bCst0Qk70R8kX8T94dO33f2Pz9/B2hABULEUWg== 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 PH7PR11MB7450.namprd11.prod.outlook.com (2603:10b6:510:27e::17) by PH0PR11MB5016.namprd11.prod.outlook.com (2603:10b6:510:32::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6631.45; Wed, 2 Aug 2023 17:22:41 +0000 Received: from PH7PR11MB7450.namprd11.prod.outlook.com ([fe80::a4d0:c163:16c4:aaa2]) by PH7PR11MB7450.namprd11.prod.outlook.com ([fe80::a4d0:c163:16c4:aaa2%4]) with mapi id 15.20.6631.045; Wed, 2 Aug 2023 17:22:40 +0000 From: "Dumitrescu, Cristian" To: Ori Kam , =?utf-8?B?TW9ydGVuIEJyw7hydXA=?= , Jerin Jacob CC: "Zhang, Qi Z" , "NBU-Contact-Thomas Monjalon (EXTERNAL)" , "david.marchand@redhat.com" , "Richardson, Bruce" , "jerinj@marvell.com" , "ferruh.yigit@amd.com" , "techboard@dpdk.org" , "Mcnamara, John" , "Zhang, Helin" , "dev@dpdk.org" Subject: RE: [PATCH] ethdev: introduce generic flow item and action Thread-Topic: [PATCH] ethdev: introduce generic flow item and action Thread-Index: AQHZxSHaq6JEAAy13km0+kJQgl6M8q/WzPOAgAAKDYCAAAW8gIAAKMlQgAASn4CAAA7fAIAABToAgAAOQRA= Date: Wed, 2 Aug 2023 17:22:40 +0000 Message-ID: References: <20230802173451.3151646-1-qi.z.zhang@intel.com> <98CBD80474FA8B44BF855DF32C47DC35D87AB8@smartserver.smartshare.dk> <98CBD80474FA8B44BF855DF32C47DC35D87AB9@smartserver.smartshare.dk> <98CBD80474FA8B44BF855DF32C47DC35D87ABF@smartserver.smartshare.dk> In-Reply-To: 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: PH7PR11MB7450:EE_|PH0PR11MB5016:EE_ x-ms-office365-filtering-correlation-id: 8c064a5c-dff1-4167-1ce3-08db937d1356 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: Y0cT7xAXrX2ekDWsWA/3K95xzvsRMDL5GjinD2CeER+MFfJr1Dtd+llCW2ltXoVfCPYpDnsjbjbs48+LYl3EF67FCOpjfhdMYfPMgGVuFQFT8yZKOW4I07B74DrB4uufhV3EkjfNBJjXlYcGOmvEAtcOkmvLpABGZB7zW0KniduxMmOuvTrIrkolB0p7Qi09hJMukzOshS7jhI25HkBtX5b3ZCyNP4KzcLS4iinD9INTBCPwfWAMUC9fJZglvwKtReiYqiDIxFAszUSmwFelm+bLFfU+OIMvJlYtJw1nEP84qBhtsOLFw8/EHCtoYR/Jy5tdkSGUFRcR4ql8tHxwWe4S/RwmARsbwXeDeY3P8FMagmw4l43c8kmCQAH3qLcBvVBIF0IuW0RS9H1N3JV6j8yhbxQxLMsGnEEK5Al1mRfQw72CfYCpcavj4cwu0fg+0ipCZdnNt81aZO2iU2LMICwh+WFltxc/CxxdldxTv5nPByGUc3yAcISZn2y4Gq1FvRPifo981Nm3mD+lGNiDUMkYqs0Fb1GcEmeW5glYMA6j42uNE/X92d2rJAJsP0PiCZfM3DfG+aDrETOeERK6CtiQZGn77+pfynhBDvxFa1gBmwDx+2RX4t+sltQbkNktJ2DmQKAKiM13soBVzn+eQPhOoAaDd2K1A0qTWSsPtYo= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PH7PR11MB7450.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230028)(39860400002)(346002)(396003)(366004)(136003)(376002)(451199021)(55016003)(186003)(966005)(9686003)(316002)(86362001)(478600001)(54906003)(122000001)(110136005)(38100700002)(66476007)(66556008)(66446008)(33656002)(66946007)(45080400002)(7696005)(71200400001)(76116006)(4326008)(82960400001)(64756008)(53546011)(6506007)(41300700001)(26005)(8676002)(52536014)(66574015)(5660300002)(8936002)(30864003)(2906002)(38070700005)(83380400001)(41533002); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?UyttOG9GVkJPM1prTlB3RDhodzhnRlo5ZEtkK00vNWZSM3l4dmE1aDhEREhN?= =?utf-8?B?VXFla1RiTEVFamtwNWlJeWJCZEhvcTRHb2JUSnJxRXVrLzc1UXRmeTMrS3k0?= =?utf-8?B?MzZBS3VwZXREbTkybkRUcTQ1MGtwTzQ5OFBiK3gwUTJFcHdYVytlc3puNzdZ?= =?utf-8?B?cktNaWRlQjR0VXlKRVhVcjQrZnYyTWgrak5SMll5NUx3cldWZUxwSnlaRkkv?= =?utf-8?B?Ti91Rm5wbE1KbEt2cWZIRllCMFY3OVJnSmVpOTZBNjUyS294aGtCNzFiVnQr?= =?utf-8?B?YXB0cXVCc1JhbHdNQUlPY1dWQzBuVlVyM0lacjZ1VzZTcENEbkVCVFNXU2lw?= =?utf-8?B?YjNpb0s3RXE5WGFTRWtSaWNBVmd6WERUcCsrNUU4MDF5SWV3SGZGMUNFUkZ5?= =?utf-8?B?SCtjRXMyRFVDajd6amJGRitHdE1sT3R5UE9PYmlIVks0UnBsWXdGdkwzM2dX?= =?utf-8?B?b2ZrNFFMeThCUFJKcE11aUlrTllNZG1EQ0hBcWZNWUF6WDIyOFVibzdnaGx1?= =?utf-8?B?Ni95cXNTck0xZjlLblduUzdlbUZ4N0ZSbldzN2RQOVFyclUxYlREY29ZV3Ru?= =?utf-8?B?N1kvYmtiWWlwaXZLU0FBcThvM01NUjRqVGdpbEV3NVRCQURLVVZwZVU4Zzdw?= =?utf-8?B?ZWsxbFZic1kwSDV4WDdMWnNhcWVaeU1ZZGFYTnAyMFdOaFZYM1hQV0R6QW5y?= =?utf-8?B?NWFVTG83M2ltOUU4S3g0OXZ3WFRBVS9TeUFLbXhnMEY4aG43RjlrcHV0NXhi?= =?utf-8?B?Z3RSenVRS2ZwU1gxa0x3MWVVdjBGK3Nic2ExMjdtQlN0UWR5UjcrN0RSdVEx?= =?utf-8?B?dm8zZ2RQOTdEeVlWT1ByNmpBa08xeks5akQ0QkJQVXVQQlBYWDM1RGRtTXJ1?= =?utf-8?B?alZyS3VtTm96N2R2aGhkYUhEamNXbUV1QkluS2FNQ3FrbC93KzlKdk5kd3FJ?= =?utf-8?B?VWF4SmNLcW9GUFppNmdlbThlcllOcUZQL0xtajBabTVleXJvcnRrTnhucFJa?= =?utf-8?B?MGtORnRMK3JZSjRTdmdnMDYzSjl5eXVia2lJeDZlSHQ1YVFvcU9lQ0RFb04z?= =?utf-8?B?bVJFTTZuODc0RndGdjM2b1YwZFNoUnROZWFOMDJ2MXVNVXZxM0hHQndTM2JB?= =?utf-8?B?YnFPTDhYYXZVd2hGTkVtTHQvVVdpdnVGOVJqMnpFYzVINlBGdmpadkhOV29F?= =?utf-8?B?NEVvbEIvNUQrUEhHL2pwTUE2am81Y1dxc3RSNFlNa0h3bVgrdGRzdSt3ZkNx?= =?utf-8?B?d29YMU5tMEYyZGpSVW5ZWmkrWm5kQXVPcDdrd3YvSFcveE5USHd4QW1hOGhj?= =?utf-8?B?UzJqV0NPekVoM3RkNUcxaXRMK0ZNdllsUDZreVhCMlhqWEZqbjdYZjJUVzEx?= =?utf-8?B?RldJT1JhSEF1T2JVTWhXNWFjNjAwNGFqa1hZTDdLbE04VXdLd1JObVVGSHMx?= =?utf-8?B?SGZab1Z6R3BaYXQzc3N1UkFrYUhYRXFJMDdBdFBLbUxLNkNjSnlIZVN4blE5?= =?utf-8?B?dGVpYnY1aGJYT3NBN3ZMWUVpSG1raHhIU1V4TXgrLzhCVVovZTFIVUJyR1ZY?= =?utf-8?B?OERWS3U3eHZleUtmYlV6N2szakhlUmpwTDI2b29KaFIyeFRJR1hqRzN6TSs5?= =?utf-8?B?YWNqV0VHVEdpbWpKZ1ZpSHdMSHY0WEtZWC84M1k1Y0JScnBmVXRUd3FZQ2M2?= =?utf-8?B?a3VJditnbEZ4dVVtcWpUQ0JQREMzVWNMdUdQZXlRbEZyb3R6SFBEbVA4Q3Fp?= =?utf-8?B?dmhFNS9DVnh2TWd1b3lUWWlPbnplUzJkc0U1VHhOakhwRStpVmY4Z2UzU0Zt?= =?utf-8?B?QnpEZFhYNm1sMjJCUWtWVlhMUW9UUEhOTEs5SWc0L1VBc0FqNUF2WVE4dUpP?= =?utf-8?B?TUREYWFpVDhmMERNRmp2bnhkYU44cUdoYStZYnZuNlZuYklOUkQ0ejFWTmpN?= =?utf-8?B?WWdUZzg2TE9OaVhZb1ozNGtvakowcGhqbWhwRUF0L2V3b3FCczlHQkRwRlA4?= =?utf-8?B?cjRZUVNZTDRpb0VJU1hVWUVBNW1wMUhZcXM5a1hmWG9VSnZKUzUzZGZOWk9h?= =?utf-8?B?Lyt3ZDJwL3grd0dhMHlIeHMzR1Ird2w2VnNUNlc3SnUwZERGellBZzBmbGRa?= =?utf-8?B?Y1JsNk1idUE2MjdUa3R5VzBkemNGOUprbUZYYjVOOTRmQmVUbDR1N2kvMmZ4?= =?utf-8?B?VkE9PQ==?= 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: PH7PR11MB7450.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8c064a5c-dff1-4167-1ce3-08db937d1356 X-MS-Exchange-CrossTenant-originalarrivaltime: 02 Aug 2023 17:22:40.7208 (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: NCbG952hWjwI/fYIgTyebc1HiiL+dKfy6Pk0mnB3jxxdMHxV7X2WobcwfJf/vT+qSHrXfKf7W9bcrWjFHHYfnLjwY/oDPykCstJXVuA7xPk= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR11MB5016 X-OriginatorOrg: intel.com X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogT3JpIEthbSA8b3Jpa2FA bnZpZGlhLmNvbT4NCj4gU2VudDogV2VkbmVzZGF5LCBBdWd1c3QgMiwgMjAyMyA1OjA2IFBNDQo+ IFRvOiBPcmkgS2FtIDxvcmlrYUBudmlkaWEuY29tPjsgTW9ydGVuIEJyw7hydXANCj4gPG1iQHNt YXJ0c2hhcmVzeXN0ZW1zLmNvbT47IER1bWl0cmVzY3UsIENyaXN0aWFuDQo+IDxjcmlzdGlhbi5k dW1pdHJlc2N1QGludGVsLmNvbT47IEplcmluIEphY29iIDxqZXJpbmphY29ia0BnbWFpbC5jb20+ DQo+IENjOiBaaGFuZywgUWkgWiA8cWkuei56aGFuZ0BpbnRlbC5jb20+OyBOQlUtQ29udGFjdC1U aG9tYXMgTW9uamFsb24NCj4gKEVYVEVSTkFMKSA8dGhvbWFzQG1vbmphbG9uLm5ldD47IGRhdmlk Lm1hcmNoYW5kQHJlZGhhdC5jb207DQo+IFJpY2hhcmRzb24sIEJydWNlIDxicnVjZS5yaWNoYXJk c29uQGludGVsLmNvbT47IGplcmluakBtYXJ2ZWxsLmNvbTsNCj4gZmVycnVoLnlpZ2l0QGFtZC5j b207IHRlY2hib2FyZEBkcGRrLm9yZzsgTWNuYW1hcmEsIEpvaG4NCj4gPGpvaG4ubWNuYW1hcmFA aW50ZWwuY29tPjsgWmhhbmcsIEhlbGluIDxoZWxpbi56aGFuZ0BpbnRlbC5jb20+Ow0KPiBkZXZA ZHBkay5vcmcNCj4gU3ViamVjdDogUkU6IFtQQVRDSF0gZXRoZGV2OiBpbnRyb2R1Y2UgZ2VuZXJp YyBmbG93IGl0ZW0gYW5kIGFjdGlvbg0KPiANCj4gSGkgUWksDQo+IA0KPiBJbiBhZGRpdGlvbiB0 byBteSBwcmV2aW91cyBlbWFpbCwNCj4gSSBmdWxseSBzdXBwb3J0IHlvdeKAmXJlIHlvdXIgaWRl YSB0byB1cGRhdGUgdGhlIHJ0ZV9mbG93IEFQSQ0KPiBzbyBpdCB3aWxsIGJlIGVhc2llciBmb3Ig UDQgaW50ZWdyYXRpb24sIEkganVzdCB0aGluayB0aGUgc3VnZ2VzdGVkIGFwcHJvYWNoIGlzIG5v dA0KPiB0aGUgY29ycmVjdCBvbmUgYXQgbGVhc3Qgbm90IGFzIGFwcGVhcnMgaW4gdGhlIFJGQy4N Cj4gDQo+IEkgdGhpbmsgaXQgd2lsbCBiZSBnb29kIGlmIHdlIGNhbiBkaXNjdXNzIHNvbWUgdXNl cyBjYXNlcyB5b3UgYXJlIGhhdmluZw0KPiB3aXRoIHRoZSBBUEkvaW1wbGVtZW50YXRpb24gYW5k IHNlZSB3aGF0IGlzIHRoZSBiZXN0IHdheSB0byBzb2x2ZSB0aGVtLg0KPiBUaGUgbWFpbiBpZGVh IGlzIG5vdCB0byByZS1pbnZlbnQgdGhlIHdoZWVsLCBidXQgdG8gc29sdmUgaXNzdWVzLg0KDQpZ ZXMsIGZ1bGx5IGFncmVlLCBpdCB3b3VsZCBiZSBncmVhdCBtZWV0IGFuZCB0YWxrIHRocm91Z2gg dGhpcywgYXMgd2UgZGlkIGl0IGluIHRoZQ0KcGFzdCBmb3Igb3RoZXIgaXNzdWVzLiBXaGF0IGRh eXMgJiB0aW1lIG5leHQgd2VlayB3b3VsZCBiZSBnb29kIGZvciBwZW9wbGU/DQoNCk1lYW53aGls ZSwgc29tZSBhbnN3ZXJzIGJlbG93Lg0KDQo+IA0KPiBUbyBzdW1tYXJpemUsIGFzIEkgc2VlIGl0 IHRoZXJlIGFyZSBzZXZlcmFsIGlzc3VlczoNCj4gMS4gbm8gcHJvdG9jb2wgaXMgZGVmaW5lZCBz byBkaWZmZXJlbnQgUE1EIGNhbid0IHRyYW5zbGF0ZSBpdC4NCg0KVGhlIGZvcm1hdCBvZiB0aGUg ZmxvdyBpdGVtcyBpcyBkZWZpbmVkIGJ5IHRoZSBQNCBwcm9ncmFtLCBzbyBhbGwgdGhlIEhXIGRl dmljZXMNCihmcm9tIHRoZSBzYW1lIG9yIGZyb20gZGlmZmVyZW50IHZlbmRvcnMpIHRoYXQgYXJl IGFibGUgdG8gc3VjY2Vzc2Z1bGx5IGxvYWQgdGhlDQpnaXZlbiBQNCBwcm9ncmFtIHdpbGwgaGF2 ZSB0aGUgc2FtZSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBmbG93IGl0ZW1zLg0KDQo+IDIuIGV2ZW4g dGhlIHNhbWUgUE1EIGRvZXNuJ3Qga25vdyB3aGF0IGlzIHRoZSBhY3Rpb24sIHVubGVzcyB5b3Ug cGxhbiB0aGF0DQo+IHRoaXMgd2lsbCBtb3ZlDQo+IGRpcmVjdGx5IHRvIHRoZSBIVywgaW4gdGhp cyBjYXNlLCB0aGUgYWN0aW9uIHdpbGwgYmUgSFcgZGVwZW5kZW50Lg0KDQpUaGUgcHJvY2Vzc2lu ZyBvZiBlYWNoIGZsb3cgYWN0aW9uLCBhcyB3ZWxsIGFzIHRoZSBudW1iZXIgb2YgYXJndW1lbnRz IGFuZCB0aGUNCmZvcm1hdCBvZiBlYWNoIGFjdGlvbiBhcmd1bWVudCwgaXMgZGVmaW5lZCBieSB0 aGUgUDQgcHJvZ3JhbSwgc28gYWxsIHRoZSBIVw0KZGV2aWNlcyAoZnJvbSB0aGUgc2FtZSBvciBm cm9tIGRpZmZlcmVudCB2ZW5kb3JzKSB0aGF0IGFyZSBhYmxlIHRvIHN1Y2Nlc3NmdWxseQ0KbG9h ZCB0aGUgZ2l2ZW4gUDQgcHJvZ3JhbSB3aWxsIGhhdmUgdGhlIHNhbWUgdW5kZXJzdGFuZGluZyBv ZiB0aGUgZmxvdyBhY3Rpb25zLg0KDQo+IDMuIHdoZW4gYXBwbGljYXRpb24gc2hvdWxkIHVzZSB0 aGlzIG5ldyBhY3Rpb24gb3IgdGhlIG9sZCBvbmVzLg0KDQpJIGd1ZXNzIGl0IGlzIGdvb2QgdG8g Y2xhcmlmeSB0aGF0IHRoZXJlIGFyZSB0d28gYXBwbGljYXRpb246IGEgZGF0YSBwYXRoIGFwcGxp Y2F0aW9uDQoodGhlIFA0IHByb2dyYW0pIHRoYXQgZGVmaW5lcyB0aGUgcGFja2V0IHByb2Nlc3Np bmcgcGlwZWxpbmUsIGFuZCBhIGNvbnRyb2wgcGF0aA0KYXBwbGljYXRpb24gdGhhdCBpbnZva2Vz IFJURV9GTE9XIHRvIGFkZC9kZWxldGUgdGhlIGZsb3dzIG9uIHRoZSBkZXZpY2UuIEkgZ3Vlc3MN CndlIGFyZSBub3cgcmVmZXJyaW5nIHRvIHRoZSBjb250cm9sIHBhdGggYXBwLg0KDQpXaGVuZXZl ciB0aGUgUDQgcHJvZ3JhbSAodGhlIGRhdGEgcGF0aCBhcHApIHRoYXQgaXMgY3VycmVudGx5IGxv YWRlZCBvbiB0aGUNCmRldmljZSBpcyBkZWZpbmluZyBhbmQgdXNpbmcgZmxvdyBhY3Rpb25zIHRo YXQgcGVyZm9ybSBpZGVudGljYWwgcHJvY2Vzc2luZyB0byBvbmUNCm9mIHRoZSBleGlzdGluZyBw cmUtZGVmaW5lZCBSVEVfRkxPVyBhY3Rpb25zIChzdWNoIGFzIHBhY2tldCBkcm9wLCBwYWNrZXQN CnJlZGlyZWN0aW9uIHRvIGEgZ2l2ZW4gb3V0cHV0IHF1ZXVlLCBwYWNrZXQgbW9kaWZpY2F0aW9u cywgZXRjKSwgdGhlbiB0aGUgYXBwDQoodGhlIGNvbnRyb2wgcGF0aCBhcHApIGNhbiBhY2NlcHQg dGhlc2UgYWN0aW9ucyBhcyB3ZWxsLg0KDQpCdXQgaW4gdGhlIChmcmVxdWVudCkgY2FzZSB0aGF0 IHRoZSB1c2VyJ3MgUDQgcHJvZ3JhbSBkZWZpbmVzIGFjdGlvbnMgdGhhdCBkbyBub3QNCm1hcCB0 byBhbiBSVEVfRkxPVyBhY3Rpb24gZnJvbSB0aGUgcHJlLWRlZmluZWQgbGlzdCwgdGhlbiB0aGUg YXBwIGhhcyBubyBvdGhlcg0Kb3B0aW9uIGJ1dCB0byB1c2UgdGhlIG5ld2x5IHByb3Bvc2VkIGdl bmVyaWMgZmxvdyBhY3Rpb24gaW4gb3JkZXIgdG8gc3BlY2lmeQ0KKHRocm91Z2ggdGhlIGFjdGlv bl9pZCBmaWVsZCkgdGhlIGV4YWN0IGZsb3cgYWN0aW9uIGZyb20gdGhlIFA0IHByb2dyYW0uDQoN Ck1ha2VzIHNlbnNlPw0KDQo+IA0KPiANCj4gVGhhbmtzLA0KPiBPcmkNCj4gDQoNClJlZ2FyZHMs DQpDcmlzdGlhbg0KDQo+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiBGcm9tOiBP cmkgS2FtIDxvcmlrYUBudmlkaWEuY29tPg0KPiA+IFNlbnQ6IFdlZG5lc2RheSwgQXVndXN0IDIs IDIwMjMgNjo0NyBQTQ0KPiA+DQo+ID4gSGkgUWkNCj4gPg0KPiA+ID4gLS0tLS1PcmlnaW5hbCBN ZXNzYWdlLS0tLS0NCj4gPiA+IEZyb206IE1vcnRlbiBCcsO4cnVwIDxtYkBzbWFydHNoYXJlc3lz dGVtcy5jb20+DQo+ID4gPiBTZW50OiBXZWRuZXNkYXksIEF1Z3VzdCAyLCAyMDIzIDY6MjUgUE0N Cj4gPiA+DQo+ID4gPiA+IEZyb206IER1bWl0cmVzY3UsIENyaXN0aWFuIFttYWlsdG86Y3Jpc3Rp YW4uZHVtaXRyZXNjdUBpbnRlbC5jb21dDQo+ID4gPiA+IFNlbnQ6IFdlZG5lc2RheSwgMiBBdWd1 c3QgMjAyMyAxNi4wNg0KPiA+ID4gPg0KPiA+ID4gPiA+IEZyb206IEplcmluIEphY29iIDxqZXJp bmphY29ia0BnbWFpbC5jb20+DQo+ID4gPiA+ID4gU2VudDogV2VkbmVzZGF5LCBBdWd1c3QgMiwg MjAyMyAxMjoyMiBQTQ0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gT24gV2VkLCBBdWcgMiwgMjAyMyBh dCA0OjMx4oCvUE0gTW9ydGVuIEJyw7hydXANCj4gPiA+ID4gPiA8bWJAc21hcnRzaGFyZXN5c3Rl bXMuY29tPiB3cm90ZToNCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+IEZyb206IE1vcnRlbiBC csO4cnVwIFttYWlsdG86bWJAc21hcnRzaGFyZXN5c3RlbXMuY29tXQ0KPiA+ID4gPiA+ID4gPiBT ZW50OiBXZWRuZXNkYXksIDIgQXVndXN0IDIwMjMgMTIuMjUNCj4gPiA+ID4gPiA+ID4NCj4gPiA+ ID4gPiA+ID4gPiBGcm9tOiBRaSBaaGFuZyBbbWFpbHRvOnFpLnouemhhbmdAaW50ZWwuY29tXQ0K PiA+ID4gPiA+ID4gPiA+IFNlbnQ6IFdlZG5lc2RheSwgMiBBdWd1c3QgMjAyMyAxOS4zNQ0KPiA+ ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gRnJvbTogQ3Jpc3RpYW4gRHVtaXRyZXNjdSA8 Y3Jpc3RpYW4uZHVtaXRyZXNjdUBpbnRlbC5jb20+DQo+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4g PiA+ID4gPiBGb3IgbmV0d29yayBkZXZpY2VzIHRoYXQgYXJlIHByb2dyYW1tYWJsZSB0aHJvdWdo IGxhbmd1YWdlcw0KPiBzdWNoDQo+ID4gYXMNCj4gPiA+ID4gPiA+ID4gPiB0aGUgUDQgbGFuZ3Vh Z2UsIHRoZXJlIGFyZSBubyBwcmUtZGVmaW5lZCBmbG93IGl0ZW1zIGFuZCBhY3Rpb25zLg0KPiA+ ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gVGhlIGZvcm1hdCBvZiB0aGUgcHJvdG9jb2wg aGVhZGVyIGFuZCBtZXRhZGF0YSBmaWVsZHMgdGhhdCBhcmUNCj4gdXNlZA0KPiA+IHRvDQo+ID4g PiA+ID4gPiA+ID4gc3BlY2lmeSB0aGUgZmxvdyBpdGVtcyB0aGF0IG1ha2UgdXAgdGhlIGZsb3cg cGF0dGVybiwgYXMgd2VsbCBhcw0KPiB0aGUNCj4gPiA+ID4gPiA+ID4gPiBmbG93IGFjdGlvbnMs IGFyZSBhbGwgZGVmaW5lZCBieSB0aGUgcHJvZ3JhbSwgd2l0aCBhbiBpbmZpbml0eSBvZg0KPiA+ ID4gPiA+ID4gPiA+IHBvc3NpYmxlIGNvbWJpbmF0aW9ucywgYXMgb3Bwb3NlZCB0byBiZWluZyBz ZWxlY3RlZCBmcm9tIGENCj4gZmluaXRlDQo+ID4gPiA+ID4gPiA+ID4gcHJlLWRlZmluZWQgbGlz dC4NCj4gPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+IEl0IGlzIHZpcnR1YWxseSBpbXBv c3NpYmxlIHRvIHByZS1kZWZpbmUgYWxsIHRoZSBmbG93IGl0ZW1zIGFuZCB0aGUNCj4gPiA+ID4g PiA+ID4gPiBmbG93IGFjdGlvbnMgdGhhdCBwcm9ncmFtcyBtaWdodCBldmVyIHVzZSwgYXMgdGhl c2UgYXJlIG9ubHkNCj4gbGltaXRlZA0KPiA+ID4gPiA+ID4gPiA+IGJ5IHRoZSBzZXQgb2YgSFcg cmVzb3VyY2VzIGFuZCB0aGUgcHJvZ3JhbSBkZXZlbG9wZXIncw0KPiA+IGltYWdpbmF0aW9uLg0K PiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gVG8gc3VwcG9ydCB0aGUgcHJvZ3JhbW1h YmxlIG5ldHdvcmsgZGV2aWNlcywgd2UgYXJlDQo+IGludHJvZHVjaW5nOg0KPiA+ID4gPiA+ID4g PiA+DQo+ID4gPiA+ID4gPiA+ID4gKiBBIGdlbmVyaWMgZmxvdyBpdGVtOiBUaGUgZmxvdyBpdGVt IGlzIGV4cHJlc3NlZCBhcyBhbiBhcnJheSBvZg0KPiBieXRlcw0KPiA+ID4gPiA+ID4gPiA+IG9m IGEgZ2l2ZW4gbGVuZ3RoLCB3aG9zZSBtZWFuaW5nIGlzIGRlZmluZWQgYnkgdGhlIHByb2dyYW0N Cj4gbG9hZGVkDQo+ID4gYnkNCj4gPiA+ID4gPiA+ID4gPiB0aGUgbmV0d29yayBkZXZpY2UuDQo+ ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+IFRoZSBmbG93IGl0ZW0gaXMgbm90ICJnZW5lcmlj IiwgaXQgaXMgIm9wYXF1ZSI6IE9ubHkgdGhlIGFwcGxpY2F0aW9uDQo+ID4gPiA+IGtub3dzDQo+ ID4gPiA+ID4gPiA+IHdoYXQgdGhpcyBmbG93IGl0ZW0gZG9lcy4NCj4gPiA+ID4gPiA+ID4NCj4g PiA+ID4gPiA+ID4gSSBoYXRlIHRoZSBjb25jZXB0IGZvciB0d28gcmVhc29uczoNCj4gPiA+ID4g PiA+ID4gMS4gVGhlIGluYWJpbGl0eSBmb3IgYXBwbGljYXRpb25zIHRvIGRldGVjdCB3aGljaCBm bG93IGl0ZW1zIHRoZQ0KPiA+ID4gPiB1bmRlcmx5aW5nDQo+ID4gPiA+ID4gPiA+IGhhcmR3YXJl IHN1cHBvcnRzLg0KPiA+ID4gPiA+ID4gPiAyLiBUaGUgcmlzayB0aGF0IHZlbmRvcnMgd2lsbCB1 c2UgdGhpcyBpbnN0ZWFkIG9mIGludHJvZHVjaW5nIG5ldw0KPiBmbG93DQo+ID4gPiA+IGl0ZW0N Cj4gPiA+ID4gPiA+ID4gdHlwZXMsIGF2YWlsYWJsZSBmb3IgYW55b25lIHRvIGltcGxlbWVudC4N Cj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiBBZnRlciBmdXJ0aGVyIGNvbnNpZGVyYXRpb24sIHRo ZXJlIG1pZ2h0IGJlIGEgbWlkZGxlIGdyb3VuZC4NCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiBD b25zaWRlciBWZW5kb3ItU3BlY2lmaWMgYXR0cmlidXRlcyBmb3IgREhDUCBhbmQgUkFESVVTLCBv ciBTTk1QDQo+ID4gPiBNSUJzLi4uDQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gQW55IHZlbmRv ciBpcyBmcmVlIHRvIGFkZCBoaXMgb3duLCBwcm9wcmlldGFyeSBzcGVjaWFsLXB1cnBvc2UNCj4g PiBhdHRyaWJ1dGVzLA0KPiA+ID4gPiA+IHdpdGhvdXQgZ29pbmcgdGhyb3VnaCB0aGUgc3RhbmRh cmRpemF0aW9uIHByb2Nlc3MuIChUaGlzIGlzIHRoZSBrZXkNCj4gPiA+ID4gY2hhbGxlbmdlDQo+ ID4gPiA+ID4gdGhpcyBwYXRjaCBzZWVtcyB0byBiZSBhaW1pbmcgYXQuKQ0KPiA+ID4gPiA+ID4N Cj4gPiA+ID4gPiA+IFRoZSB2ZW5kb3IgbWlnaHQgcHVibGlzaCB0aGVzZSBhdHRyaWJ1dGVzLCBh bmQgb3RoZXIgdmVuZG9ycyBtYXkNCj4gPiA+ID4gPiBpbXBsZW1lbnQgdGhlbSB0b28uDQo+ID4g PiA+ID4gPg0KPiA+ID4gPiA+ID4gQW5kIGluIG9yZGVyIHRvIHByZXZlbnQgY29sbGlzaW9ucywg dGhlIFZlbmRvci1TcGVjaWZpYyBhdHRyaWJ1dGVzDQo+IGNvbnRhaW4NCj4gPiA+ID4gYQ0KPiA+ ID4gPiA+IGdsb2JhbGx5IHVuaXF1ZSB2ZW5kb3IgSUQsIHN1Y2ggYXMgdGhlIFByaXZhdGUgRW50 ZXJwcmlzZSBOdW1iZXIgWzFdDQo+ID4gPiA+ID4gbWFuYWdlZCBieSBJQU5BLg0KPiA+ID4gPiA+ ID4NCj4gPiA+ID4gPiA+IElmIHNpbWlsYXIgcHJpbmNpcGxlcyBjYW4gYmUgd29ya2VkIGludG8g dGhlIHBhdGNoLCBJIGNhbiBzdXBwb3J0IGl0Lg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gKzENCj4g PiA+ID4gPg0KPiA+ICsxIEkgdW5kZXJzdGFuZCB0aGF0IHRoaXMgaXMgc3VwcG9zZWQgdG8gYmUg Z2VuZXJpYywgYnV0IGhvdyBjYW4gaXQ/DQo+ID4gaG93IGRvIHlvdSBrbm93IGlmIFBNRCBzdXBw b3J0cyB0aGlzPw0KPiA+IHdoYXQgaWYgZWFjaCBQTUQgbmVlZHMgZGlmZmVyZW50IGNvbmZpZ3Vy YXRpb25zPw0KPiA+DQo+ID4gSW4gYWRkaXRpb24gaG93IGNhbiB5b3UgaGFuZGxlIG51bWJlciBv ZiB0aG9zZSBhY3Rpb24gYW5kIGl0ZW1zPw0KPiA+IEZvciBleGFtcGxlIGlmIEkgaGF2ZSBtYXRj aCBvbiBwcm90b2NvbCBYIGFuZCBZIGFuZCBkbyBhY3Rpb25zIFogYW5kIFcNCj4gPiBlYWNoIG9u ZSBvZiB0aG9zZSBjYW4gYmUgZ2VuZXJpYyBpdGVtLg0KPiA+IGlmIHlvdSBoYXZlIGEgd2F5IHRv IGRlZmluZSBhIHN0YW5kYXJkIHdoeSB0byByZWFkIHN1Y2ggYWN0aW9ucyB0aGVuIHdlDQo+IGhh dmUNCj4gPiBzb21ldGhpbmcgdG8gdGFsayBhYm91dC4NCj4gPg0KPiA+DQo+ID4gPiA+DQo+ID4g PiA+IE1vcnRlbiwgSmVyaW4sDQo+ID4gPiA+DQo+ID4gPiA+IEkgdGhpbmsgdGhlcmUgaXMgYSBm dW5kYW1lbnRhbCBtaXN1bmRlcnN0YW5kaW5nIGhlcmU6IHdlIGFyZSBub3QgdHJ5aW5nDQo+IHRv DQo+ID4gPiA+IHByb3ZpZGUgc3VwcG9ydCBmb3Igc29tZSBub24tc3RhbmRhcmQgdmVuZG9yLXNw ZWNpZmljIGZlYXR1cmVzIGhlcmUuDQo+IFdoYXQNCj4gPiA+ID4gd2UgYXJlIHRyeWluZyB0byBk byBpcyBhZGQgZ2VuZXJpYyBtdWx0aS12ZW5kb3Igc3VwcG9ydCBpbiBSVEVfRkxPVw0KPiBmb3IN Cj4gPiA+ID4gUDQgcHJvZ3JhbW1hYmxlIG5ldHdvcmsgZGV2aWNlcywgd2hpY2ggcmVxdWlyZXMg c3VwcG9ydGluZyBmbG93DQo+IGl0ZW1zDQo+ID4gPiA+IGFuZCBhY3Rpb25zIHRoYXQgYXJlIGRl ZmluZWQgZGlyZWN0bHkgYnkgdGhlIHVzZXIgdGhyb3VnaCB0aGVpciBQNA0KPiBwcm9ncmFtcw0K PiA+ID4gPiBhcyBvcHBvc2VkIHRvIGJlaW5nIHNlbGVjdGVkIGZyb20gYSBwcmUtZGVmaW5lZCBs aXN0Lg0KPiA+ID4gPg0KPiA+ID4gPiBUaGVyZSBhcmUgYW4gaW5maW5pdHkgb2YgZmxvdyBpdGVt cyBhbmQgYWN0aW9ucyB0aGF0IHRoZSB1c2VycyBjYW4gZGVmaW5lDQo+ID4gPiA+IHRocm91Z2gN Cj4gPiA+ID4gdGhlaXIgUDQgcHJvZ3JhbXMsIGFuZCB0aGV5IGNhbm5vdCBiZSBzdXBwb3J0ZWQg d2l0aCBhIGZpbml0ZSBsaXN0IG9mDQo+ID4gPiBSVEVfRkxPVw0KPiA+ID4gPiBpdGVtcyBhbmQg YWN0aW9uczoNCj4gPiA+ID4NCj4gPiA+ID4gMS8gU29tZSBmbG93IGl0ZW1zIG1hcCBkaXJlY3Rs eSB0byB0aGUgSUVURiBkZWZpbmVkIHByb3RvY29scywgd2hpbGUNCj4gc29tZQ0KPiA+ID4gPiBv dGhlcnMgZG8gbm90LCBhbmQgb25seSB0aGUgdXNlciB3cml0aW5nIHRoZSBwcm9ncmFtIGtub3dz IHRoZSBleGFjdA0KPiA+IGFuc3dlcjsNCj4gPiA+ID4NCj4gPiA+ID4gMi8gU29tZSBmbG93IGl0 ZW1zIGFyZSBzaW1wbHkgYXBwbGljYXRpb24tc3BlY2lmaWMgKG5vdCB2ZW5kb3Igc3BlY2lmaWMp DQo+ID4gPiA+IG1ldGEtZGF0YSB0aGF0IChJIGhvcGUgd2UgYWxsIGFjY2VwdCkgaXMgb3V0c2lk ZSBvZiB0aGUgc3RhbmRhcmRpemF0aW9uDQo+ID4gPiA+IHByb2Nlc3MuDQo+ID4gPg0KPiA+ID4g U3VjaCBpdGVtcyBjYW4gdXNlIGEgc3BlY2lhbCAicmVzZXJ2ZWQiIHZlbmRvci1pZC4NCj4gPiA+ DQo+ID4NCj4gPiBDYW4geW91IHNob3cgbWUgd2hhdCBpdGVtcy9hY3Rpb25zIGFyZSBtaXNzaW5n IGluIHJ0ZV9mbG93Pw0KPiA+DQo+ID4gPiA+DQo+ID4gPiA+IDMvIFNvbWUgZmxvdyBhY3Rpb25z IG1hcCBkaXJlY3RseSB0byB0aGUgZXhpc3RpbmcgUlRFX0ZMT1cgYWN0aW9ucw0KPiA+ID4gKGVz cGVjaWFsbHkNCj4gPiA+ID4gdGhlIG1vcmUgc3RyYWlnaHRmb3J3YXJkIGFjdGlvbnMgc3VjaCBh czogcGFja2V0IGRyb3AsIHBhY2tldCByZWRpcmVjdGlvbg0KPiB0bw0KPiA+ID4gPiBhbg0KPiA+ ID4gPiBvdXRwdXQgcXVldWUsIHNvbWUgc3BlY2lmaWMgcGFja2V0IG1vZGlmaWNhdGlvbnMsIGV0 YyksIHdoaWxlIHRoZSB2YXN0DQo+ID4gPiA+IG1ham9yaXR5DQo+ID4gPiA+IG9mIHBvc3NpYmxl IGFjdGlvbnMgZG8gbm90Lg0KPiA+ID4gPg0KPiA+ID4gPiBBcmUgeW91IHNheWluZyB0aGF0IHRo ZSBQNCBwcm9ncmFtbWFibGUgbmV0d29yayBkZXZpY2VzIHNob3VsZCBOT1QNCj4gYmUNCj4gPiA+ ID4gc3VwcG9ydGVkIGJ5IERQREsgYW5kIFJURV9GTE9XPw0KPiA+ID4NCj4gPiA+IE5vLCBJIGdl dCB0aGUgbmVlZCBmb3IgdGhpcy4gQW5kIEkgdW5kZXJzdGFuZCB0aGF0IHNpbmNlIFA0IGlzIGNv bXBpbGVkIHRvDQo+ID4gPiBoYXJkd2FyZS1zcGVjaWZpYyBiaW5hcnkgYmxvYnMsIHRoZXJlIGlz IGEgbmVlZCB0byBwdXQgc3VjaCBibG9icyBpbnRvDQo+IERQREsgYXMNCj4gPiA+IGZsb3cgaXRl bXMgYW5kIGFjdGlvbnMsIGluc3RlYWQgb2YgdGhlICJ1bmNvbXBpbGVkIiBQNCBwcm9ncmFtLg0K PiA+ID4NCj4gPiA+IEkgYW0gc3VnZ2VzdGluZyB0aGF0IGluc3RlYWQgb2YgYWRkaW5nIGEgY29t cGxldGVseSBvcGFxdWUgZGF0YSB0eXBlOg0KPiA+ID4NCj4gPiA+IFN0cnVjdCBpdGVtIHsNCj4g PiA+IEludCBsZW47ICAgICAgLy8gTGVuZ3RoIG9mIHZhbHVlIGluIGJ5dGVzLg0KPiA+ID4gQ2hh ciB2YWx1ZVtdOyAvLyBBcHBsaWNhdGlvbiBzcGVjaWZpYyBtZWFuaW5nLg0KPiA+ID4gfTsNCj4g PiA+DQo+ID4NCj4gPiBCdXQgc2luY2UgeW91IGRpZG4ndCBkZWZpbmUgYSBrbm93biBwcm90b2Nv bCBmb3IgUE1EIHRvIHJlYWQgdGhlIGRhdGEgaG93DQo+ID4gMiBwbWRzIGNhbiB1c2UgdGhlIHNh bWUgYWN0aW9uPw0KPiA+DQo+ID4gPiAuLi5hZGQgYSBzZW1pLW9wYXF1ZSBkYXRhIHR5cGU6DQo+ ID4gPg0KPiA+ID4gU3RydWN0IHRsdiB7DQo+ID4gPiBJbnQgdHlwZTsgICAgIC8vIFZlbmRvciBz cGVjaWZpYyB0eXBlLg0KPiA+ID4gSW50IGxlbjsgICAgICAvLyBMZW5ndGggb2YgdmFsdWUgaW4g Ynl0ZXMuDQo+ID4gPiBDaGFyIHZhbHVlW107IC8vIChWZW5kb3IsIFR5cGUpIHNwZWNpZmljIG1l YW5pbmcuDQo+ID4gPiB9Ow0KPiA+ID4NCj4gPiA+IFN0cnVjdCBpdGVtIHsNCj4gPiA+IEludCB2 ZW5kb3I7ICAgICAgICAgIC8vIFZlbmRvciBJRC4NCj4gPiA+IEludCBsZW47ICAgICAgICAgICAg IC8vIExlbmd0aCBvZiB2YWx1ZXMgaW4gYnl0ZXMuDQo+ID4gPiBTdHJ1Y3QgdGx2IHZhbHVlc1td OyAvLyBBcnJheSBvZiBUTFZzLg0KPiA+ID4gfTsNCj4gPiA+DQo+ID4gPiBMaWtlIFJBRElVUyBW ZW5kb3ItU3BlY2lmaWMgYXR0cmlidXRlczoNCj4gPiA+IGh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0 Zi5vcmcvZG9jL2h0bWwvcmZjMjEzOCNzZWN0aW9uLTUuMjYNCj4gPiA+DQo+ID4gPiBUaGVuIHNv bWUgKFZlbmRvciwgVHlwZSkgZmllbGRzIGNhbiBiZSBkb2N1bWVudGVkIChhbmQgdGh1cyBnZW5l cmFsbHkNCj4gPiA+IHVuZGVyc3Rvb2QgYnkgRFBESyksIGFuZCBzb21lIHVuZG9jdW1lbnRlZC4N Cj4gPiA+DQo+ID4gPiBFLmcuIGxpa2UgTWljcm9zb2Z0IGRvY3VtZW50ZWQgc29tZSBvZiB0aGVp cnMgaW4gUkZDIDI1NDg6DQo+ID4gPiBodHRwczovL2RhdGF0cmFja2VyLmlldGYub3JnL2RvYy9o dG1sL3JmYzI1NDgNCj4gPiA+DQo+ID4gPg0KPiA+ID4gQW5vdGhlciBiZW5lZml0IGlzIHRoYXQg dGhlc2UgbmV3ICJWRU5ET1ItU1BFQ0lGSUMiIGZsb3cgdHlwZXMgY2FuIGJlDQo+ID4gcmV1c2Vk DQo+ID4gPiBmb3Igb3RoZXIgcHVycG9zZXMgdGhhbiBjb21waWxlZCBQNCBwcm9ncmFtcy4NCj4g PiA+DQo+ID4gPiA+DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiBQcmVmZXJh Ymx5LCB0aGVyZSBzaG91bGQgYWxzbyBiZSBhIG1lYW5zIGZvciBhcHBsaWNhdGlvbnMgdG8gcXVl cnkgaWYNCj4gPiA+ID4gc3BlY2lmaWMNCj4gPiA+ID4gPiBWZW5kb3ItU3BlY2lmaWMgZmxvdyBp dGVtcyBhbmQgYWN0aW9ucyBhcmUgc3VwcG9ydGVkIG9yIG5vdC4NCj4gPiA+ID4gPiA+DQo+ID4g PiA+ID4gPg0KPiA+ID4gPiA+ID4gWzFdOiBodHRwczovL3d3dy5pYW5hLm9yZy9hc3NpZ25tZW50 cy9lbnRlcnByaXNlLW51bWJlcnMvDQo+ID4gPiA+ID4gPg0KPiA+ID4gPg0KPiA+ID4gPiBSZWdh cmRzLA0KPiA+ID4gPiBDcmlzdGlhbg0K