From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 9C74EA0524; Sun, 23 Feb 2020 13:34:00 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 5B7B81BE85; Sun, 23 Feb 2020 13:33:59 +0100 (CET) Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-eopbgr80075.outbound.protection.outlook.com [40.107.8.75]) by dpdk.org (Postfix) with ESMTP id 84C7A1F1C for ; Sun, 23 Feb 2020 13:33:58 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=T7tfzQ2FAVCN1NBgo/QhhLGqUjaHwzAsoiroyulB3/tCWyDJonzGLxrX1QS5W8QbkiCJEXb73i51hGBqzEjht7PwuMAITqJSHbW6+Gp4FOpWmQeLqQ26bB33uMlARh1XKPECCduUusWnMbZZtGCJMqsxgZI3pOTUE+A1ppQl7p8MPRsQ79TfFTbJFKFgyDiwc4tXbJ/7wlqAeIne0fNp7892PidGublUEClZlKhUVivQ3E7h++nljNHkeEsyeBEyZhN/G+IMtjA28sLX54szWNd7lp7pL/DYKL5iejyEd6wfyw3Kml8+QSD78nsRPAsO5AwSb8oD8x53ZnqPVaxp9A== 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-SenderADCheck; bh=oA6vcjUu5RiHWJpKjymP95nF5ivO+4Qbw3IlhshaVBw=; b=MInaqGP1dcGu1sS48fb2g9TSUAHPs5w06NizgYrZMpk1f50+JRgQg1jkGmNUSjaXfyAmceo1nYDfNR1CR41506/St8aDnS3wsU4NeQpJ7fu1vkBfFSitCWywE/+zBoAGPfhWmAGJMKvAs7W7hP3tMJE6FeukNd4X/SoCAS1NhwOqZY4BRlB2bM2Kh1RGKLvEHkXwOCiAcCpB6aOZ6YqEFAII5YT/GuBlNgRsLARUCyeT6bI203tyBzfs2mKd6yfDoa83TwyM7A8HuUv4MLQRmWH4MgA0QyAvm4FBwsvxdOOBphME9JM3W5S/VUS7wUJVDo8U+6YigyTjm2macjE1eg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=mellanox.com; dmarc=pass action=none header.from=mellanox.com; dkim=pass header.d=mellanox.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=oA6vcjUu5RiHWJpKjymP95nF5ivO+4Qbw3IlhshaVBw=; b=rWLVKmMbs+C2l3VGtWpwIKho4KHcl2YINTLzkqvlA7kBh5Tlr2XNXJ3qCoXds1EcFiA5wXJBNxTUYbjspnk6H845IgYEuvKjokD7HgAvWTjsJA7Rh+Hr7UOU+s0dBAwK+8SO5JEkLfJw+VTrCTjx82f1UtyyAdHgVLItXO24MkY= Received: from AM0PR05MB5172.eurprd05.prod.outlook.com (20.178.19.10) by AM0PR05MB6594.eurprd05.prod.outlook.com (20.178.203.87) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2750.21; Sun, 23 Feb 2020 12:33:57 +0000 Received: from AM0PR05MB5172.eurprd05.prod.outlook.com ([fe80::5d2a:1894:58f4:afbf]) by AM0PR05MB5172.eurprd05.prod.outlook.com ([fe80::5d2a:1894:58f4:afbf%3]) with mapi id 15.20.2750.021; Sun, 23 Feb 2020 12:33:56 +0000 From: Ori Kam To: Jerin Jacob CC: Jerin Jacob , "xiang.w.wang@intel.com" , dpdk-dev , Pavan Nikhilesh , Shahaf Shuler , Hemant Agrawal , Opher Reviv , Alex Rosenbaum , "dovrat@marvell.com" , Prasun Kapoor , Nipun Gupta , "Richardson, Bruce" , "yang.a.hong@intel.com" , "harry.chang@intel.com" , "gu.jian1@zte.com.cn" , "shanjiangh@chinatelecom.cn" , "zhangy.yun@chinatelecom.cn" , "lixingfu@huachentel.com" , "wushuai@inspur.com" , "yuyingxia@yxlink.com" , "fanchenggang@sunyainfo.com" , "davidfgao@tencent.com" , "liuzhong1@chinaunicom.cn" , "zhaoyong11@huawei.com" , "oc@yunify.com" , "jim@netgate.com" , "hongjun.ni@intel.com" , "j.bromhead@titan-ic.com" , "deri@ntop.org" , "fc@napatech.com" , "arthur.su@lionic.com" , Thomas Monjalon Thread-Topic: [dpdk-dev] [PATCH v3] regexdev: introduce regexdev subsystem Thread-Index: AQHV1blwgq+qOSqUJECwZj1bGQPyTagnlXOAgADvWOCAAC4BgIAAD5mQ Date: Sun, 23 Feb 2020 12:33:56 +0000 Message-ID: References: <20190627155036.56940-1-jerinj@marvell.com> <1580202029-37096-1-git-send-email-orika@mellanox.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=orika@mellanox.com; x-originating-ip: [193.47.165.251] x-ms-publictraffictype: Email x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: c934f08b-3c16-4210-78e2-08d7b85ca6b6 x-ms-traffictypediagnostic: AM0PR05MB6594:|AM0PR05MB6594: x-ld-processed: a652971c-7d2e-4d9b-a6a4-d149256f461b,ExtAddr x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:6108; x-forefront-prvs: 0322B4EDE1 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(4636009)(366004)(346002)(39860400002)(376002)(396003)(136003)(189003)(199004)(7696005)(6506007)(8676002)(33656002)(86362001)(186003)(26005)(4326008)(53546011)(81166006)(81156014)(8936002)(64756008)(66556008)(9686003)(66446008)(71200400001)(66476007)(6916009)(7406005)(30864003)(5660300002)(478600001)(54906003)(55016002)(76116006)(7416002)(52536014)(66946007)(2906002)(316002); DIR:OUT; SFP:1101; SCL:1; SRVR:AM0PR05MB6594; H:AM0PR05MB5172.eurprd05.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; received-spf: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: dFPqHq2an3P4nl9XbeeD3oLjT3zk1QXmupAnHpyalf5J1fHDYwMk7OznRIF7J3f+a6tJ8fIsJX78sxrtSZ5gkXb/kbAH64H/Sgm6uRU0XCEKirksVVhixx1bqdTT1C2p4EyLA1HFZ40UnN+lPi+Zpc+06VYjsQfrPZOPIvlSheIg4K4DFx2QRpDfFoeQN6aXaF4qgQo7ShfvzWnh8QhWZ1yjPpbJp8ZPxfsl3MmtzfjC1gTErUQXxviQHj0S/enufASv/YXJas/Dwka8NufNJBJIxPLYE6q+DcyG+GAu5qQibiUtLwXu/7RBdkD33N3r1Ev0681FGq90RFeedCwsDxfkSkwzsHUCTgpJf3cpgOnT0a4dAU1DTGu6COgHBYZ+32B1RsLDj5fOD9tAxEkqsOVae+/9rKqf9BPpVh4TfHTNFhV1kRLKleyHgfFpsvSF x-ms-exchange-antispam-messagedata: S8/uMIxZD3phohmUqA2/gZI4q51Qe1FGuF3VOzAW4J/uhB592SRj1SjvCJqnuo7NNAo3qQMUUDaJ8uqL72eAPROOfKV+P+UwbQUAiEKR55fNrGgiGOQUCQhmzn8X2195OFABUol5+9A8ORcPRHwcGQ== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: c934f08b-3c16-4210-78e2-08d7b85ca6b6 X-MS-Exchange-CrossTenant-originalarrivaltime: 23 Feb 2020 12:33:56.7843 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: uV2Hv33qhOfwYsLslAKKIsQ0Gpk4eovN/tcf0yXd8pLKWlj68FIjpCXyTsyBYuWEqMtp+7nkLQL/4be5FQ17vQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR05MB6594 Subject: Re: [dpdk-dev] [PATCH v3] regexdev: introduce regexdev subsystem X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" SGkgSmVyaW4sDQoNCkJlc3QsDQpPcmkNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4g RnJvbTogSmVyaW4gSmFjb2IgPGplcmluamFjb2JrQGdtYWlsLmNvbT4NCj4gU2VudDogU3VuZGF5 LCBGZWJydWFyeSAyMywgMjAyMCAxMTo1NCBBTQ0KPiBUbzogT3JpIEthbSA8b3Jpa2FAbWVsbGFu b3guY29tPg0KPiBDYzogSmVyaW4gSmFjb2IgPGplcmluakBtYXJ2ZWxsLmNvbT47IHhpYW5nLncu d2FuZ0BpbnRlbC5jb207IGRwZGstZGV2DQo+IDxkZXZAZHBkay5vcmc+OyBQYXZhbiBOaWtoaWxl c2ggPHBiaGFnYXZhdHVsYUBtYXJ2ZWxsLmNvbT47IFNoYWhhZg0KPiBTaHVsZXIgPHNoYWhhZnNA bWVsbGFub3guY29tPjsgSGVtYW50IEFncmF3YWwNCj4gPGhlbWFudC5hZ3Jhd2FsQG54cC5jb20+ OyBPcGhlciBSZXZpdiA8b3BoZXJAbWVsbGFub3guY29tPjsgQWxleA0KPiBSb3NlbmJhdW0gPGFs ZXhyQG1lbGxhbm94LmNvbT47IGRvdnJhdEBtYXJ2ZWxsLmNvbTsgUHJhc3VuIEthcG9vcg0KPiA8 cGthcG9vckBtYXJ2ZWxsLmNvbT47IE5pcHVuIEd1cHRhIDxuaXB1bi5ndXB0YUBueHAuY29tPjsg UmljaGFyZHNvbiwNCj4gQnJ1Y2UgPGJydWNlLnJpY2hhcmRzb25AaW50ZWwuY29tPjsgeWFuZy5h LmhvbmdAaW50ZWwuY29tOw0KPiBoYXJyeS5jaGFuZ0BpbnRlbC5jb207IGd1LmppYW4xQHp0ZS5j b20uY247IHNoYW5qaWFuZ2hAY2hpbmF0ZWxlY29tLmNuOw0KPiB6aGFuZ3kueXVuQGNoaW5hdGVs ZWNvbS5jbjsgbGl4aW5nZnVAaHVhY2hlbnRlbC5jb207IHd1c2h1YWlAaW5zcHVyLmNvbTsNCj4g eXV5aW5neGlhQHl4bGluay5jb207IGZhbmNoZW5nZ2FuZ0BzdW55YWluZm8uY29tOw0KPiBkYXZp ZGZnYW9AdGVuY2VudC5jb207IGxpdXpob25nMUBjaGluYXVuaWNvbS5jbjsNCj4gemhhb3lvbmcx MUBodWF3ZWkuY29tOyBvY0B5dW5pZnkuY29tOyBqaW1AbmV0Z2F0ZS5jb207DQo+IGhvbmdqdW4u bmlAaW50ZWwuY29tOyBqLmJyb21oZWFkQHRpdGFuLWljLmNvbTsgZGVyaUBudG9wLm9yZzsNCj4g ZmNAbmFwYXRlY2guY29tOyBhcnRodXIuc3VAbGlvbmljLmNvbTsgVGhvbWFzIE1vbmphbG9uDQo+ IDx0aG9tYXNAbW9uamFsb24ubmV0Pg0KPiBTdWJqZWN0OiBSZTogW2RwZGstZGV2XSBbUEFUQ0gg djNdIHJlZ2V4ZGV2OiBpbnRyb2R1Y2UgcmVnZXhkZXYgc3Vic3lzdGVtDQo+IA0KPiBPbiBTdW4s IEZlYiAyMywgMjAyMCBhdCAyOjEyIFBNIE9yaSBLYW0gPG9yaWthQG1lbGxhbm94LmNvbT4gd3Jv dGU6DQo+ID4NCj4gPiBIaSBKZXJpbiwNCj4gPg0KPiA+IFRoYW5rcywgZm9yIHRoZSByZXZpZXcu DQo+ID4gUFNCDQo+IA0KPiANCj4gSGkgT3JpDQo+IA0KPiBTaW5jZSB3ZSBhcmUgZmluYWxpemlu ZyB0aGUgc3BlY2lmaWNhdGlvbiBwYXJ0LCBJIHRob3VnaHQgb2YNCj4gZW51bWVyYXRpbmcgdGhl IGxpc3Qgb2Ygd29yayBuZWVkcyB0byBiZQ0KPiBjb21wbGV0ZWQgZm9yIGEgbmV3IHN1YnN5c3Rl bSBpbiBEUERLLg0KPiANCj4gMCkgRmluYWxpemUgdGhlIGZpcnN0IHZlcnNpb24gb2YgdGhlIHNw ZWMuIEhvcGUgdjQgd2lsbCBkbyB0aGF0Lg0KPiAxKSBJbnRyb2R1Y2UgY29tbW9uIGxpYnJhcnkg Y29kZSBmb3IgYmFzZWQgb24gdGhlICBzcGVjaWZpY2F0aW9uDQo+IDIpIE9uZSBIVyBiYXNlZCBk cml2ZXIgaW1wbGVtZW50YXRpb24NCj4gMykgT25lIFNXIHJlZmVyZW5jZSBkcml2ZXI6IGxpYnBj cmUgbGlicmFyeSBwcm92aWRlcyBjb21wbGV0ZSBQQ1JFDQo+IGZ1bmN0aW9uYWxpdHkuDQo+IDQp IGFwcC90ZXN0L3Rlc3RfcmVnZXhkZXYuYyBsaWtlIGFwcC90ZXN0L3Rlc3RfZXZlbnRkZXYuYw0K PiA1KSBOZWVkIGEgbWFpbnRhaW5lciBmb3IgbWFpbnRhaW5pbmcgdGhlIHJlZ2V4IHN1YnN5c3Rl bQ0KPiA2KSBUaGUgZmlyc3QgdmVyc2lvbiBwcm9ncmFtbWluZyBndWlkZSBkb2N1bWVudGF0aW9u DQo+IDcpIEFkZCBhcHAvdGVzdC1yZWdleGRldiBsaWtlIGFwcC90ZXN0LWV2ZW50ZGV2DQo+IDgp IEFkZCBhbiBleGFtcGxlcy94eHh4eHggcHJvZ3JhbQ0KPiANCg0KPiBJTU8gVGhlIGZvbGxvd2lu ZyBpdGVtcyBuZWVkIHRvIGJlIGNvbXBsZXRlZCB0byBhY2NlcHQgYSBzdWJzeXN0ZW0gaW4NCj4g ZHBkayhOZWVkIGF0IGxlYXN0IG9uIEhXIGFuZCBTVyBkcml2ZXIpLg0KPiANCj4gMCkgRmluYWxp emUgdGhlIGZpcnN0IHZlcnNpb24gb2YgdGhlIHNwZWMuIEhvcGUgdjQgd2lsbCBkbyB0aGF0Lg0K DQpJIGhvcGUgc28gdG8g8J+Yig0KDQo+IDEpIEludHJvZHVjZSBjb21tb24gbGlicmFyeSBjb2Rl IGZvciBiYXNlZCBvbiB0aGUgIHNwZWNpZmljYXRpb24NCg0KSSdtIHdvcmtpbmcgb24gaXQuIGFz IHNvb24gYXMgd2UgYWdyZWUgb24gdGhlIEFQSSAodGhpcyBSRkMgd2lsbCBnZXQgYWNrZWQgKSBJ IGNhbiB3b3JrIG9uIHRoaXMgY29kZS4NCkkgd2lsbCBzZW5kIHRoZSBlbnRpcmUgY29kZSBmb3Ig YWNrIHdoZW4gd2UgZGVjaWRlIGlmIGl0IHdpbGwgYmUgcGFydCBvZiANCjIwLjA1IG9yIDIwLjA4 Lg0KDQo+IDIpIE9uZSBIVyBiYXNlZCBkcml2ZXIgaW1wbGVtZW50YXRpb24NCg0KSnVzdCBsaWtl IHlvdSwgb3VyIGRyaXZlciB3aWxsIGJlIHJlYWR5IGJ5IDIwLjA1IG9yIDIwLjA4DQoNCj4gMykg T25lIFNXIHJlZmVyZW5jZSBkcml2ZXI6IGxpYnBjcmUgbGlicmFyeSBwcm92aWRlcyBjb21wbGV0 ZSBQQ1JFDQo+IGZ1bmN0aW9uYWxpdHkuDQoNCk8uSy4gV2UgYXJlIG5vdCB3b3JraW5nIG9uIHRo aXMgcGFydC4NCg0KPiA0KSBhcHAvdGVzdC90ZXN0X3JlZ2V4ZGV2LmMgbGlrZSBhcHAvdGVzdC90 ZXN0X2V2ZW50ZGV2LmMNCg0KV2Ugc3RhcnRlZCB0byBjcmVhdGUgYSBzdXBlciBiYXNpYyBhcHAs IGFmdGVyIHRoZSBBUEkgd2lsbCBiZSBmaW5hbGl6ZWQgYW5kIHdlIHdpbGwgaGF2ZSBIVw0Kd2Ug Y2FuIHB1c2ggaXQuIChpZiB5b3UgbmVlZCBpdCBmYXN0ZXIgdGhhbiBmZWVsIGZyZWUpDQoNCj4g NSkgTmVlZCBhIG1haW50YWluZXIgZm9yIG1haW50YWluaW5nIHRoZSByZWdleCBzdWJzeXN0ZW0N Cj4gDQpXZSB3aXNoIHRvIG1haW50YWluIGl0IGlmIHlvdSBhZ3JlZS4NCg0KPiBXZSBoYXZlIGl0 ZW0gKDMpIHNvIE1hcnZlbGwgd291bGQgbGlrZSB0byB3b3JrIG9uIGl0ZW0gKDMpLiBPdXIgSFcN Cj4gZHJpdmVyIG1heSByZWFkeSBieSB2MjAuMDUgb3IgdGhlIHdvcnN0IGNhc2UgYnkgMjAuMDgu DQo+IExldCB1cyBrbm93IHdoYXQgb3RoZXIgaXRlbXMgTWVsbGFub3ggb3IgY29tbXVuaXR5IHdv dWxkIGxpa2UgdG8gd29yaw0KPiBvbi4gVGhpcyBpcyB0byBhdm9pZCBkdXBsaWNhdGlvbiBvZiB3 b3JrDQo+IHRvIGdldCBjbGFyaXR5IG9uIHRoZSBuZXh0IHN0ZXBzLg0KPiANCg0KU2VlIG15IGNv bW1lbnRzIGFib3ZlLg0KRnJvbSBNZWxsYW5veCB0aGUgYmVzdCBkYXRlIGlzIDIwLjA4IGJ1dCB3 ZSBhcmUgdHJ5aW5nIHRvIG1ha2UgaXQgdG8gMjAuMDUsIA0KZGVwZW5kZWQgb24gSFcuDQoNCg0K PiBQU0INCj4gDQo+IA0KPiA+DQo+ID4NCj4gPiBPcmkgS2FtDQo+ID4NCj4gPiA+IC0tLS0tT3Jp Z2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gPiBGcm9tOiBKZXJpbiBKYWNvYiA8amVyaW5qYWNvYmtA Z21haWwuY29tPg0KPiA+ID4gU2VudDogU2F0dXJkYXksIEZlYnJ1YXJ5IDIyLCAyMDIwIDY6NTIg UE0NCj4gPiA+IFRvOiBPcmkgS2FtIDxvcmlrYUBtZWxsYW5veC5jb20+DQo+ID4gPiBDYzogSmVy aW4gSmFjb2IgPGplcmluakBtYXJ2ZWxsLmNvbT47IHhpYW5nLncud2FuZ0BpbnRlbC5jb207IGRw ZGstZGV2DQo+ID4gPiA8ZGV2QGRwZGsub3JnPjsgUGF2YW4gTmlraGlsZXNoIDxwYmhhZ2F2YXR1 bGFAbWFydmVsbC5jb20+OyBTaGFoYWYNCj4gPiA+IFNodWxlciA8c2hhaGFmc0BtZWxsYW5veC5j b20+OyBIZW1hbnQgQWdyYXdhbA0KPiA+ID4gPGhlbWFudC5hZ3Jhd2FsQG54cC5jb20+OyBPcGhl ciBSZXZpdiA8b3BoZXJAbWVsbGFub3guY29tPjsgQWxleA0KPiA+ID4gUm9zZW5iYXVtIDxhbGV4 ckBtZWxsYW5veC5jb20+OyBkb3ZyYXRAbWFydmVsbC5jb207IFByYXN1biBLYXBvb3INCj4gPiA+ IDxwa2Fwb29yQG1hcnZlbGwuY29tPjsgTmlwdW4gR3VwdGEgPG5pcHVuLmd1cHRhQG54cC5jb20+ Ow0KPiBSaWNoYXJkc29uLA0KPiA+ID4gQnJ1Y2UgPGJydWNlLnJpY2hhcmRzb25AaW50ZWwuY29t PjsgeWFuZy5hLmhvbmdAaW50ZWwuY29tOw0KPiA+ID4gaGFycnkuY2hhbmdAaW50ZWwuY29tOyBn dS5qaWFuMUB6dGUuY29tLmNuOw0KPiBzaGFuamlhbmdoQGNoaW5hdGVsZWNvbS5jbjsNCj4gPiA+ IHpoYW5neS55dW5AY2hpbmF0ZWxlY29tLmNuOyBsaXhpbmdmdUBodWFjaGVudGVsLmNvbTsNCj4g d3VzaHVhaUBpbnNwdXIuY29tOw0KPiA+ID4geXV5aW5neGlhQHl4bGluay5jb207IGZhbmNoZW5n Z2FuZ0BzdW55YWluZm8uY29tOw0KPiA+ID4gZGF2aWRmZ2FvQHRlbmNlbnQuY29tOyBsaXV6aG9u ZzFAY2hpbmF1bmljb20uY247DQo+ID4gPiB6aGFveW9uZzExQGh1YXdlaS5jb207IG9jQHl1bmlm eS5jb207IGppbUBuZXRnYXRlLmNvbTsNCj4gPiA+IGhvbmdqdW4ubmlAaW50ZWwuY29tOyBqLmJy b21oZWFkQHRpdGFuLWljLmNvbTsgZGVyaUBudG9wLm9yZzsNCj4gPiA+IGZjQG5hcGF0ZWNoLmNv bTsgYXJ0aHVyLnN1QGxpb25pYy5jb207IFRob21hcyBNb25qYWxvbg0KPiA+ID4gPHRob21hc0Bt b25qYWxvbi5uZXQ+DQo+ID4gPiBTdWJqZWN0OiBSZTogW2RwZGstZGV2XSBbUEFUQ0ggdjNdIHJl Z2V4ZGV2OiBpbnRyb2R1Y2UgcmVnZXhkZXYgc3Vic3lzdGVtDQo+ID4gPg0KPiA+ID4gPiBkaWZm IC0tZ2l0IGEvbGliL2xpYnJ0ZV9yZWdleGRldi9ydGVfcmVnZXhkZXYuaA0KPiA+ID4gYi9saWIv bGlicnRlX3JlZ2V4ZGV2L3J0ZV9yZWdleGRldi5oDQo+ID4gPiA+IG5ldyBmaWxlIG1vZGUgMTAw NjQ0DQo+ID4gPiA+IGluZGV4IDAwMDAwMDAuLmM0MjEyOGINCj4gPiA+ID4gLS0tIC9kZXYvbnVs bA0KPiA+ID4gPiArKysgYi9saWIvbGlicnRlX3JlZ2V4ZGV2L3J0ZV9yZWdleGRldi5oDQo+ID4g PiA+IEBAIC0wLDAgKzEsMTQxMSBAQA0KPiA+ID4gPiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZp ZXI6IEJTRC0zLUNsYXVzZQ0KPiA+ID4gPiArICogQ29weXJpZ2h0KEMpIDIwMTkgTWFydmVsbCBJ bnRlcm5hdGlvbmFsIEx0ZC4NCj4gPiA+ID4gKyAqIENvcHlyaWdodChDKSAyMDIwIE1lbGxhbm94 IEludGVybmF0aW9uYWwgTHRkLg0KPiA+ID4NCj4gPiA+IFRoZXJlIGFyZSBhIGZldyBjb21tZW50 cyBmcm9tIFhpYW5nIGFzIHdlbGwuIFNvIGxldCdzIGFkZCBJbnRlbCBhbHNvDQo+ID4gPiB0byB0 aGUgbGlzdC4NCj4gPiA+DQo+ID4NCj4gPiBTdXJlIG5vIHByb2JsZW0uDQo+IA0KPiBUaGFua3MN Cj4gDQo+ID4NCj4gPiA+ID4gKyAqLw0KPiA+ID4gPiArDQo+ID4gPiA+ICsjaWZuZGVmIF9SVEVf UkVHRVhERVZfSF8NCj4gPiA+ID4gKyNkZWZpbmUgX1JURV9SRUdFWERFVl9IXw0KPiA+ID4NCj4g PiA+ID4gKw0KPiA+ID4gPiArLyoqDQo+ID4gPiA+ICsgKiBSZWdFeCBkZXZpY2UgaW5mb3JtYXRp b24NCj4gPiA+ID4gKyAqLw0KPiA+ID4gPiArc3RydWN0IHJ0ZV9yZWdleF9kZXZfaW5mbyB7DQo+ ID4gPiA+ICsgICAgICAgY29uc3QgY2hhciAqZHJpdmVyX25hbWU7IC8qKjwgUmVnRXggZHJpdmVy IG5hbWUuICovDQo+ID4gPiA+ICsgICAgICAgc3RydWN0IHJ0ZV9kZXZpY2UgKmRldjsgLyoqPCBE ZXZpY2UgaW5mb3JtYXRpb24uICovDQo+ID4gPiA+ICsgICAgICAgdWludDE2X3QgbWF4X21hdGNo ZXM7DQo+ID4gPiA+ICsgICAgICAgLyoqPCBNYXhpbXVtIG1hdGNoZXMgcGVyIHNjYW4gc3VwcG9y dGVkIGJ5IHRoaXMgZGV2aWNlLiAqLw0KPiA+ID4gPiArICAgICAgIHVpbnQxNl90IG1heF9xdWV1 ZV9wYWlyczsNCj4gPiA+ID4gKyAgICAgICAvKio8IE1heGltdW0gcXVldWUgcGFpcnMgc3VwcG9y dGVkIGJ5IHRoaXMgZGV2aWNlLiAqLw0KPiA+ID4gPiArICAgICAgIHVpbnQxNl90IG1heF9wYXls b2FkX3NpemU7DQo+ID4gPiA+ICsgICAgICAgLyoqPCBNYXhpbXVtIHBheWxvYWQgc2l6ZSBmb3Ig YSBwYXR0ZXJuIG1hdGNoIHJlcXVlc3Qgb3Igc2Nhbi4NCj4gPiA+ID4gKyAgICAgICAgKiBAc2Vl IFJURV9SRUdFWF9ERVZfQ0ZHX0NST1NTX0JVRkZFUl9TQ0FOX0YNCj4gPiA+ID4gKyAgICAgICAg Ki8NCj4gPiA+ID4gKyAgICAgICB1aW50MzJfdCBtYXhfcnVsZXNfcGVyX2dyb3VwOw0KPiA+ID4g PiArICAgICAgIC8qKjwgTWF4aW11bSBydWxlcyBzdXBwb3J0ZWQgcGVyIGdyb3VwIGJ5IHRoaXMg ZGV2aWNlLg0KPiA+ID4gPiArICAgICAgICAqIFRoaXMgbnVtYmVyIGNhbid0IGJlIGxhcmdlciB0 aGVuIDIwIGJpdHMuDQo+ID4gPg0KPiA+ID4gcy90aGVuL3RoYW4NCj4gPiA+DQo+ID4gPiBJIHRo aW5rLCB3ZSBkb24ndCBuZWVkIHRvIHNheSB0aGlzICIgVGhpcyBudW1iZXIgY2FuJ3QgYmUgbGFy Z2VyIHRoYW4gMjAgYml0cy4iDQo+ID4gPiBJdCBtYXkgaGVscCBTVyBkcml2ZXJzLg0KPiA+ID4N Cj4gPg0KPiA+IEFncmVlIEkgd2lsbCByZW1vdmUgdGhlIDIwIGJpdHMgcGFydC4NCj4gPg0KPiA+ ID4NCj4gPiA+DQo+ID4gPiA+ICsgICAgICAgICovDQo+ID4gPiA+ICsgICAgICAgdWludDE2X3Qg bWF4X2dyb3VwczsNCj4gPiA+ID4gKyAgICAgICAvKio8IE1heGltdW0gZ3JvdXAgc3VwcG9ydGVk IGJ5IHRoaXMgZGV2aWNlLg0KPiA+ID4gPiArICAgICAgICAqIFRoaXMgbnVtYmVyIGNhbid0IGJl IGxhcmdlciB0aGVuIDEyIGJpdHMuDQo+ID4gPiBzL3RoZW4vdGhhbg0KPiA+ID4gSSB0aGluaywg d2UgZG9uJ3QgbmVlZCB0byBzYXkgdGhpcyAiIFRoaXMgbnVtYmVyIGNhbid0IGJlIGxhcmdlciB0 aGFuIDEyIGJpdHMuIg0KPiA+ID4gSXQgbWF5IGhlbHAgU1cgZHJpdmVycy4NCj4gPiA+DQo+ID4N Cj4gPiBBZ3JlZSB3aWxsIHJlbW92ZSB0aGUgMTIgYml0cyBwYXJ0Lg0KPiA+DQo+ID4gPiA+ICsg ICAgICAgICovDQo+ID4gPiA+ICsgICAgICAgdWludDMyX3QgcmVnZXhfZGV2X2NhcGE7DQo+ID4g PiA+ICsgICAgICAgLyoqPCBSZWdFeCBkZXZpY2UgY2FwYWJpbGl0aWVzLiBAc2VlIFJURV9SRUdF WF9ERVZfQ0FQQV8qICovDQo+ID4gPiA+ICsgICAgICAgdWludDY0X3QgcnVsZV9mbGFnczsNCj4g PiA+ID4gKyAgICAgICAvKio8IFN1cHBvcnRlZCBjb21waWxlciBydWxlIGZsYWdzLg0KPiA+ID4g PiArICAgICAgICAqIEBzZWUgUlRFX1JFR0VYX1BDUkVfUlVMRV8qLCBzdHJ1Y3QNCj4gcnRlX3Jl Z2V4X3J1bGU6OnJ1bGVfZmxhZ3MNCj4gPiA+ID4gKyAgICAgICAgKi8NCj4gPiA+ID4gKyAgICAg ICB1aW50OF90IG1heF9zY2F0dGVyX2dhdGhlcjsNCj4gPiA+ID4gKyAgICAgICAvKio8IFRoZSBt YXggc3VwcG9ydGVkIG51bWJlciBvZiBidWZmZXJzIHRoYXQgY2FuDQo+ID4gPiA+ICsgICAgICAg ICogYmUgdXNlZCBpbiBhIHNpbmdsZSBvcHMuIFRoZSB0b3RhbCBzaXplIG9mIGFsbCBlbGVtZW50 cw0KPiA+ID4gPiArICAgICAgICAqIG11c3QgYmUgbGVzcyB0aGVuIG1heF9wYXlsb2FkX3NpemUu DQo+ID4gPiA+ICsgICAgICAgICovDQo+ID4gPiA+ICt9Ow0KPiA+ID4gPHNuaXA+DQo+ID4gPg0K PiA+ID4gPiAraW50DQo+ID4gPiA+ICtydGVfcmVnZXhfcnVsZV9kYl9jb21waWxlKHVpbnQ4X3Qg ZGV2X2lkKTsNCj4gPiA+ID4gKw0KPiA+ID4NCj4gPiA+IEkgdGhpbmsgeW91ciAicnRlX3JlZ2V4 X3J1bGVfZGJfY29tcGlsZV9hY3RpdmF0ZSgpIC0gY29tcGlsZSBhbmQNCj4gPiA+IGFjdGl2YXRl IHRoZSBuZXcgcnVsZSBzZXQiDQo+ID4gPiBBUEkgbmFtZSBsb29rcyBnb29kLiBJIGFtIGZvciBy dGVfcmVnZXhfcnVsZV9kYl9jb21waWxlX2FjdGl2YXRlKCkuDQo+ID4gPg0KPiA+DQo+ID4gSSBs aWtlIHlvdXIgbmFtZSwgd2lsbCBjaGFuZ2UgdG8gY29tcGlsZV9hY3RpdmF0ZS4NCj4gDQo+IEFj ay4NCj4gDQo+ID4NCj4gPiA+DQo+ID4gPiA+ICsvKiBGYXN0IHBhdGggQVBJcyAqLw0KPiA+ID4g PiArDQo+ID4gPiA+ICsvKioNCj4gPiA+ID4gKyAqIFRoZSBnZW5lcmljICpydGVfcmVnZXhfbWF0 Y2gqIHN0cnVjdHVyZSB0byBob2xkIHRoZSBSZWdFeCBtYXRjaA0KPiA+ID4gYXR0cmlidXRlcy4N Cj4gPiA+ID4gKyAqIEBzZWUgc3RydWN0IHJ0ZV9yZWdleF9vcHM6Om1hdGNoZXMNCj4gPiA+ID4g KyAqLw0KPiA+ID4gPiArc3RydWN0IHJ0ZV9yZWdleF9tYXRjaCB7DQo+ID4gPiA+ICsgICAgICAg UlRFX1NURF9DMTENCj4gPiA+ID4gKyAgICAgICB1bmlvbiB7DQo+ID4gPiA+ICsgICAgICAgICAg ICAgICB1aW50NjRfdCB1NjQ7DQo+ID4gPiA+ICsgICAgICAgICAgICAgICBzdHJ1Y3Qgew0KPiA+ ID4gPiArICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBydWxlX2lkOjIwOw0KPiA+ID4g PiArICAgICAgICAgICAgICAgICAgICAgICAvKio8IFJ1bGUgaWRlbnRpZmllciB0byB3aGljaCB0 aGUgcGF0dGVybiBtYXRjaGVkLg0KPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgKiBA c2VlIHN0cnVjdCBydGVfcmVnZXhfcnVsZTo6cnVsZV9pZA0KPiA+ID4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgKi8NCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qg Z3JvdXBfaWQ6MTI7DQo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIC8qKjwgR3JvdXAg aWRlbnRpZmllciBvZiB0aGUgcnVsZSB3aGljaCB0aGUgcGF0dGVybg0KPiA+ID4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgKiBtYXRjaGVkLiBAc2VlIHN0cnVjdCBydGVfcmVnZXhfcnVsZTo6 Z3JvdXBfaWQNCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICovDQo+ID4gPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgIHVpbnQxNl90IG9mZnNldDsNCj4gPiA+DQo+ID4gPiBTaW5j ZSB3ZSBoYXZlIGVuZF9vZmZzZXQgbm93LCBJTU8sIGl0IGlzIGJldHRlciB0byBjaGFuZ2UgdGhp cyBvZmZzZXQNCj4gPiA+IHRvICJzdGFydF9vZmZzZXQiLg0KPiA+ID4NCj4gPg0KPiA+IEFncmVl LCB3aWxsIGNoYW5nZS4NCj4gPg0KPiA+ID4NCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgLyoqPCBTdGFydGluZyBCeXRlIFBvc2l0aW9uIGZvciBtYXRjaGVkIHJ1bGUuICovDQo+ID4g PiA+ICsgICAgICAgICAgICAgICAgICAgICAgIFJURV9TVERfQzExDQo+ID4gPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgIHVuaW9uIHsNCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB1aW50MTZfdCBsZW47DQo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgLyoqPCBMZW5ndGggb2YgbWF0Y2ggaW4gYnl0ZXMgKi8NCj4gPiA+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB1aW50MTZfdCBlbmRfb2Zmc2V0Ow0KPiA+ID4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qKjwgVGhlIGVuZCBvZmZzZXQgb2YgdGhlIG1h dGNoLiBJbiBjYXNlDQo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICog TUFUQ0hfQVNfU1RBUlQgY29uZmlndXJhdGlvbiBpcyBkaXNhYmxlZC4NCj4gPiA+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBAc2VlIFJURV9SRUdFWF9ERVZfQ0ZHX01BVENI X0FTX1NUQVJUDQo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQo+ ID4gPg0KPiA+ID4gV2UgaGF2ZSBub3QgY29uY2x1ZGVkIG9uIHRoaXMgc2NoZW1lLiBIYXZlIG9u ZSBmaWVsZCB3aGljaCBoYXMNCj4gPiA+IGRpZmZlcmVudCBtZWFuaW5nIHdpbGwgYmUgZGlmZmlj dWx0DQo+ID4gPiBmb3IgYXBwbGljYXRpb24uIGkuZSBmYXN0IHBhdGggd2UgbmVlZCB0byBoYXZl IGEgY2hlY2sgZm9yIHRoaXMuDQo+ID4gPg0KPiA+DQo+ID4gVGhpcyBpcyB0aGUgdGltZSB0byBj b25jbHVkZSAuIGF0IGxlYXN0IGZvciB0aGUgZmlyc3QgdmVyc2lvbi4NCj4gPiBXaHkgZG8gd2Ug aGF2ZSBvbmUgZmllbGQgd2l0aCBkaWZmZXJlbnQgbWVhbmluZz8NCj4gPiBUaGUgcmVzdWx0IGNh biBiZSBldGhlciBsZW4gb3IgZW5kX29mZnNldC4NCj4gPg0KPiA+ID4gSSB0aGluaywgQmFzZWQg b24gdGhlIG1ham9yaXR5IG9mIEhXL1NXIGltcGxlbWVudGF0aW9uLCB3ZSBuZWVkIHRvDQo+ID4g PiBlaXRoZXIgZ28gd2l0aCBsZW4gb3INCj4gPiA+IGVuZF9vZmZzZXQuIFdoYXQgTWVsbGFub3gg SFcgcmV0dXJucz8gbGVuIG9yIGVuZF9vZmZzZXQ/DQo+ID4gPg0KPiA+DQo+ID4gRnJvbSBNZWxs YW5veCBwZXJzcGVjdGl2ZSB3ZSBwcmVmZXIgdGhlIGxlbiBhcHByb2FjaC4gV2UgYWxzbyB0aGlu aw0KPiA+IGl0IGlzIG11Y2ggbW9yZSB1c2VyIG9yaWVudGVkLg0KPiA+DQo+ID4gPiBvciBXZSBj YW4ga2VlcCBpdCBhcyBsZW4gb3IgZW5kX29mZnNldCBiYXNlZCBvbiB3aGljaCBkcml2ZXJzIHVw c3RyZWFtDQo+IGZpcnN0LA0KPiA+ID4gb3RoZXIgZHJpdmVycyB3aGVuIGl0IGNvbWVzLCB3ZSBj YW4gc2VlIGhvdyB0byBhYnN0cmFjdCBpdD8NCj4gPiA+DQo+ID4NCj4gPiBJIGNhbiBleGNlcHQg dGhhdCBhc3N1bWluZyB3ZSBjaG9vc2UgdGhlIHN0YXJ0IGFuZCBsZW4gYXBwcm9hY2gNCj4gDQo+ IEkgdGhpbmssIHdlIGNhbiBoYXZlIGZpcnN0IHZlcnNpb24gd2l0aCAic3RhcnQgYW5kIGxlbiIg YnkgcmVtb3ZpbmcNCj4gUlRFX1JFR0VYX0RFVl9DRkdfTUFUQ0hfQVNfU1RBUlQuDQo+IFdoZW4g Y2FuIHRoaW5rLCBob3cgdG8gYWJzdHJhY3QgbmV3IGRyaXZlcnMgd2hlbiBpdCB1cHN0cmVhbSBi YXNlZCBvbg0KPiB0aGUgb3ZlcmhlYWQuDQo+IA0KDQpQZXJmZWN0DQoNCj4gDQo+ID4NCj4gPiA+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgfTsNCj4gPiA+ID4gKyAgICAgICAgICAgICAgIH07 DQo+ID4gPiA+ICsgICAgICAgfTsNCj4gPiA+ID4gK307DQo+ID4gPg0KPiA+ID4gPiArLyoqDQo+ ID4gPiA+ICsgKiBUaGUgZ2VuZXJpYyAqcnRlX3JlZ2V4X29wcyogc3RydWN0dXJlIHRvIGhvbGQg dGhlIFJlZ0V4IGF0dHJpYnV0ZXMNCj4gPiA+ID4gKyAqIGZvciBlbnF1ZXVlIGFuZCBkZXF1ZXVl IG9wZXJhdGlvbi4NCj4gPiA+ID4gKyAqLw0KPiA+ID4gPiArc3RydWN0IHJ0ZV9yZWdleF9vcHMg ew0KPiA+ID4gPiArICAgICAgIC8qIFcwICovDQo+ID4gPiA+ICsgICAgICAgdWludDE2X3QgcmVx X2ZsYWdzOw0KPiA+ID4gPiArICAgICAgIC8qKjwgUmVxdWVzdCBmbGFncyBmb3IgdGhlIFJlZ0V4 IG9wcy4NCj4gPiA+ID4gKyAgICAgICAgKiBAc2VlIFJURV9SRUdFWF9PUFNfUkVRXyoNCj4gPiA+ ID4gKyAgICAgICAgKi8NCj4gPiA+ID4gKyAgICAgICB1aW50MTZfdCByc3BfZmxhZ3M7DQo+ID4g PiA+ICsgICAgICAgLyoqPCBSZXNwb25zZSBmbGFncyBmb3IgdGhlIFJlZ0V4IG9wcy4NCj4gPiA+ ID4gKyAgICAgICAgKiBAc2VlIFJURV9SRUdFWF9PUFNfUlNQXyoNCj4gPiA+ID4gKyAgICAgICAg Ki8NCj4gPiA+ID4gKyAgICAgICB1aW50MTZfdCBuYl9hY3R1YWxfbWF0Y2hlczsNCj4gPiA+ID4g KyAgICAgICAvKio8IFRoZSB0b3RhbCBudW1iZXIgb2YgYWN0dWFsIG1hdGNoZXMgZGV0ZWN0ZWQg YnkgdGhlIFJlZ2V4DQo+ID4gPiBkZXZpY2UuKi8NCj4gPiA+ID4gKyAgICAgICB1aW50MTZfdCBu Yl9tYXRjaGVzOw0KPiA+ID4gPiArICAgICAgIC8qKjwgVGhlIHRvdGFsIG51bWJlciBvZiBtYXRj aGVzIHJldHVybmVkIGJ5IHRoZSBSZWdFeCBkZXZpY2UgZm9yDQo+IHRoaXMNCj4gPiA+ID4gKyAg ICAgICAgKiBzY2FuLiBUaGUgc2l6ZSBvZiAqcnRlX3JlZ2V4X29wczo6bWF0Y2hlcyogemVybyBs ZW5ndGggYXJyYXkgd2lsbA0KPiBiZQ0KPiA+ID4gPiArICAgICAgICAqIHRoaXMgdmFsdWUuDQo+ ID4gPiA+ICsgICAgICAgICoNCj4gPiA+ID4gKyAgICAgICAgKiBAc2VlIHN0cnVjdCBydGVfcmVn ZXhfb3BzOjptYXRjaGVzLCBzdHJ1Y3QgcnRlX3JlZ2V4X21hdGNoDQo+ID4gPiA+ICsgICAgICAg ICovDQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgICAgICAvKiBXMSAqLw0KPiA+ID4gPiArICAgICAg IHVpbnQxNl90IG51bV9vZl9idWZzOw0KPiA+ID4gPiArICAgICAgIC8qKjwgVGhlIG51bWJlciBv ZiBidWZzIHRoYXQgYXJlIHBhcnQgb2YgdGhpcyBvcHMuIFRoZSB0b3RhbCBzaXplIG9mDQo+ID4g PiA+ICsgICAgICAgICogdGhlIGxlbmd0aCBvZiBhbGwgdGhlIGJ1ZmZlciBtdXN0IGJlIHNtYWxs ZXIgdGhlbiB0aGUgbWF4IGJ1ZmZlcg0KPiA+ID4gPiArICAgICAgICAqIGxlbi4NCj4gPiA+ID4g KyAgICAgICAgKi8NCj4gPiA+ID4gKyAgICAgICB1aW50MTZfdCByZXN2MTsNCj4gPiA+ID4gKyAg ICAgICB1aW50MzJfdCByZXN2MjsNCj4gPiA+DQo+ID4gPiBPbmUgb2YgdGhlIHBvaW50IGNhbWUg dXAgaW4gb3VyIGltcGxlbWVudGF0aW9uIGlzIHRoYXQuDQo+ID4gPiBIVyBjYW4gcmV0dXJuIGFu IGVycm9yIGR1ZSB0byB2YXJpb3VzIHJlYXNvbnMuDQo+ID4gPg0KPiA+ID4gT25lIG9wdGlvbiBj b3VsZCBiZSB0byBtYWtlIG5iX21hdGNoZXMgYXMgemVybz8gYW5kIHVwZGF0ZSBzb21lIGZsYWc/ DQo+ID4gPg0KPiA+ID4gV2hhdCBhcmUgeW91ciB0aG91Z2h0cz8gdXBkYXRpbmcgdGhlIGZsYWcg bWF5IGJlIG92ZXJraWxsLg0KPiA+ID4NCj4gPg0KPiA+IEkgdGhpbmsgd2UgY2FuIHJldHVybiBq dXN0IHplcm8gbWF0Y2hlcyBmb3Igbm93Lg0KPiANCj4gQWNrLg0KPiANCj4gPg0KPiA+ID4NCj4g PiA+ID4gKw0KPiA+ID4gPiArICAgICAgIC8qIFcyICovDQo+ID4gPiA+ICsgICAgICAgc3RydWN0 IHJ0ZV9yZWdleF9pb3YgKigqYnVmcylbXTsNCj4gPiA+ID4gKyAgICAgICAvKio8IEhvbGRzIGEg cG9pbnRlciB0byB0aGUgYnVmZmVycyBsaXN0LiovDQo+ID4gPg0KPiA+ID4gVGhpcyBtZW1vcnkg Z2V0cyBzdWJtaXR0ZWQgdG8gSFcgc28gaXQgY2FuIG5vdCBiZSBmcm9tIHRoZSBoZWFwLg0KPiA+ ID4gQ3J5cHRvZGV2IGhhZCBhIHNpbWlsYXIgZGlsZW1tYSB0byB1c2UgdGhlIGNvbnRhaW5lciBm b3JtYXQgZm9yDQo+ID4gPiBtdWx0aS1zZWdtZW50IGNhc2UsIEZpbmFsbHkgdGhleSBjaG9vc2Ug dG8gd2l0aCBtYnVmLg0KPiA+ID4NCj4gPiA+IFRoZSBmb2xsb3dpbmcgZWxlbWVudHMgYXJlIGlu IG1idWYuIENvbnNpZGVyaW5nIHRvIGF2b2lkIGR1cGxpY2F0aW9uIGFuZA0KPiA+ID4gYXZvaWQg b3ZlcmhlYWQgbW9zdCBjb21tb24gdXNlY2FzZSBEUEkoQXNzdW1lIGlmIGl0IGlzIHJ0ZV9yZWdl eF9pb3YsDQo+ID4gPiBvbmUgbmVlZCB0byBjb3B5IGFsbCB0aGUgZWxlbWVudHMgZnJvbSBtYnVm IG9uIGZhc3RwYXRoKS4NCj4gPiA+IEkgcHJvcG9zZSB0byBoYXZlIG1idWYgaGVyZSBpbnN0ZWFk IG9mIHJ0ZV9yZWdleF9pb3YuDQo+ID4gPg0KPiA+DQo+ID4gVGhlIGFwcGxpY2F0aW9uIG9ubHkg bmVlZHMgdG8gc2V0IHRoZSBkYXRhIHBvaW50ZXJzLiAobm8gY29weSBpcyByZXF1aXJlZC4gKQ0K PiA+IEkgYWdyZWUgdGhhdCB0aGVyZSBhcmUgYWR2YW50YWdlcyB0byB0aGUgbWJ1ZiBhcHByb2Fj aC4NCj4gPiBUaGUgbWFpbiBsaW1pdGF0aW9uIGZvciB0aGUgbWJ1ZnMgYXBwcm9hY2ggaXMgdGhh dCB0aGUgdXNlciB3aWxsIG5lZWQgdG8gcGxheQ0KPiB3aXRoIHRoZSBvZmZzZXQNCj4gPiBwb2lu dGVycyBhbmQgcG9pbnRlcnMgdG8gdGhlIG5leHQgbWJ1ZiwgaW4gb3JkZXIgdG8gc3VwcG9ydCBj cm9zcyBidWZmZXIuDQo+ID4gRm9yIGV4YW1wbGUgd2UgaGF2ZSBhIHBhY2tldCBhbmQgd2Ugd2Fu dCB0byBhZGQgdG8gdGhlIHNjYW4gYWxzbyB0aGUgbGFzdA0KPiBwYXJ0IG9mIHRoZSBwcmV2aW91 cyBwYWNrZXQsDQo+ID4gdGhpcyBtZWFucyB0aGF0IHRoZSBhcHBsaWNhdGlvbiBtdXN0IG1vZGlm eSB0aGUgZGF0YSBvZmZzZXQgaW4gdGhlIHByZXZpb3VzDQo+IHBhY2tldCBtYnVmIGluY2x1ZGlu Zw0KPiA+IGNoYW5naW5nIHRoZSBuZXh0IHBvaW50ZXIgdG8gcG9pbnQgdG8gdGhlIGhlYWQgb2Yg dGhlIG5ldyBwYWNrZXQsIGFuZCB0aGVuDQo+IHJldHVybiB0aGUgdmFsdWVzIHRvIHRoZSBvcmln aW5hbCBwb3NpdGlvbi4NCj4gPg0KPiA+IFdoYXQgZG8geW91IHRoaW5rPw0KPiA+IFdlIGNhbiBz dGFydCB3aXRoIG1idWZzIGFuZCBzZWUgaG93IGl0IHdvcmtzLCBvciBzdGFydCB3aXRoIHRoZSBi dWZmZXIgYW5kDQo+IHNlZSBob3cgaXQgd29ya3MuDQo+IA0KPiBJIHRoaW5rLCB3ZSBjYW4gc3Rh cnQgd2l0aCBtYnVmIHRvIGFsaWduIHdpdGggb3RoZXIgc3Vic3lzdGVtcy4gV2UNCj4gd2lsbCBz ZWUgbGF0ZXIgdGhlIHVzZSBjYXNlIGZvciBzdHJ1Y3QgcnRlX3JlZ2V4X2lvdi4NCj4NCg0KQWdy ZWUuDQogDQo+IA0KPiA+DQo+ID4NCj4gPg0KPiA+DQo+ID4gPiBzdHJ1Y3QgcnRlX3JlZ2V4X2lv diB7DQo+ID4gPiBSVEVfU1REX0MxMQ0KPiA+ID4gdW5pb24gew0KPiA+ID4gdWludDY0X3QgdTY0 Ow0KPiA+ID4gLyoqPCAgQWxsb3cgOC1ieXRlIHJlc2VydmVkIG9uIDMyLWJpdCBzeXN0ZW0gKi8N Cj4gPiA+IHZvaWQgKmJ1Zl9hZGRyOw0KPiA+ID4gLyoqPCBWaXJ0dWFsIGFkZHJlc3Mgb2YgdGhl IHBhdHRlcm4gdG8gYmUgbWF0Y2hlZC4gKi8NCj4gPiA+IH07DQo+ID4gPiBydGVfaW92YV90IGJ1 Zl9pb3ZhOw0KPiA+ID4gLyoqPCBJT1ZBIGFkZHJlc3Mgb2YgdGhlIHBhdHRlcm4gdG8gYmUgbWF0 Y2hlZC4gKi8NCj4gPiA+IHVpbnQxNl90IGJ1Zl9zaXplOyAvKio8IFRoZSBidWYgc2l6ZS4gKi8N Cj4gPiA+IH07DQo+ID4gPg0KPiA+ID4NCj4gPiA+ID4gKw0KPiA+ID4gPiArICAgICAgIC8qIFc1 ICovDQo+ID4gPiA+ICsgICAgICAgUlRFX1NURF9DMTENCj4gPiA+ID4gKyAgICAgICB1bmlvbiB7 DQo+ID4gPiA+ICsgICAgICAgICAgICAgICB1aW50NjRfdCBjcm9zc19idWZfaWQ7DQo+ID4gPiA+ ICsgICAgICAgICAgICAgICAvKio8IElEIHVzZWQgYnkgdGhlIFJlZ0V4IGRldmljZSBpbiBvcmRl ciB0byBoYW5kbGUgY3Jvc3MNCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAqIGJ1ZmZlciBkZXRl Y3Rpb24uDQo+ID4gPiA+ICsgICAgICAgICAgICAgICAgKiBUaGlzIElEIGlzIGdpdmVuIGJ5IHRo ZSBSZWdFeCBkZXZpY2Ugb24gZGVxdWV1ZSwgYW5kDQo+ID4gPiA+ICsgICAgICAgICAgICAgICAg KiB0aGUgYXBwbGljYXRpb24gbXVzdCBzZW5kIGl0IG9uIHRoZSBmb2xsb3dpbmcgZW5xdWUuDQo+ ID4gPiA+ICsgICAgICAgICAgICAgICAgKi8NCj4gPiA+ID4gKyAgICAgICAgICAgICAgIHZvaWQg KmNyb3NzX2J1Zl9wdHI7DQo+ID4gPiA+ICsgICAgICAgICAgICAgICAvKio8IFBvaW50ZXIgcmVw cmVzZW50YXRpb24gb2YgKmNyb3NzX2J1Zl9pZCogKi8NCj4gPiA+DQo+ID4gPiBDb3VsZCB5b3Ug aGF2ZSBzb21lIGV4YW1wbGUgb2YgaG93IHRvIHVzZSBjcm9zc19idWZfaWQ/DQo+ID4gPiBNYXJ2 ZWxsIEhXIGRvZXMgbm90IHN1cHBvcnQgY3Jvc3NfYnVmX2lkLCBzbyB3ZSBuZWVkIHRvIGFkZCB0 aGlzDQo+ID4gPiBmZWF0dXJlIGFzIGNhcGFiaWxpdHkuDQo+ID4gPg0KPiA+DQo+ID4gVGhlIGlk ZWEgaXMgdGhhdCB0aGlzIGJ1ZmZlciB3aWxsIGJlIHVzZWQgdG8ga2VlcCBzb21lIGludGVybmFs IGRhdGEgZm9yIHRoZQ0KPiBlbmdpbmUuDQo+ID4gRm9yIGV4YW1wbGUgdGhlIGN1cnJlbnQgc3Rh dGUgYW5kIHdoYXQgd2FzIGZvdW5kIHVudGlsIG5vdywgYW5kIHRoZW4gcmV1c2UNCj4gdGhpcw0K PiA+IGZvciB0aGUgbmV4dCBidWZmZXIuDQo+ID4gV2UgY2FuIHJlbW92ZSBpdCBmb3Igbm93IGlm IHdlIGFncmVlIHRoYXQgd2UgY2FuIGFkZCBpdCBsYXRlci4NCj4gDQo+IEkgdGhpbmssIGFkZGlu ZyBpdCBsYXRlciB3b3VsZCBiZSBiZXR0ZXIgc28gdGhhdCB3ZSBjYW4gc2VlIGhvdyB0bw0KPiBh YnN0cmFjdCBpdCB3ZWxsLg0KPiANCg0KQWdyZWUuDQoNCj4gPg0KPiA+DQo+ID4NCj4gPiBPbmUg bW9yZSB0aGluZywgcmVnYXJkaW5nIHRoZSBvcHMgc3RydWN0dXJlLCBJIHRoaW5rIGl0IGlzIGJl dHRlciB0byBzcGxpdCBpdCB0byAyDQo+IGRpZmZlcmVudA0KPiA+IHN0cnVjdHVyZXMgb25lIGVu cXVlIGFuZCBvbmUgZm9yIGRlcXVldWUsIHNpbmNlIHRoZXJlIGFyZSBubyByZWFsIHNoYXJlZA0K PiBkYXRhIGFuZCB3ZSB3aWxsDQo+ID4gYmUgYWJsZSB0byBzYXZlIG1lbW9yeSwgd2hhdCBkbyB5 b3UgdGhpbms/DQo+IA0KPiBPcHMgYXJlIGFsbG9jYXRlZCBmcm9tIG1lbXBvb2wgc28gaXQgd2ls bCBiZSBvdmVyaGVhZCB0byBtYW5hZ2UgYm90aC4NCj4gbW9yZW92ZXIsIHNvbWUNCj4gb2YgdGhl IGZpZWxkcyBhZGRlZCBpbiByZXEgY2FuIGJlIHVzZWQgZm9yIHJlc3AgYXMgaW5mby4gY3J5cHRv ZGV2DQo+IGZvbGxvd3MgdGhlIHNpbWlsYXIgY29uY2VwdCwNCj4gSSB0aGluaywgd2UgY2FuIGhh dmUgc3ltbWV0cnkgd2l0aCBjcnlwdG9kZXYgd2hlcmV2ZXIgaXMgcG9zc2libGUgdG8gYXZvaWQN Cj4gZW5kLXVzZXIgdG8gbGVhcm4gbmV3IEFQSSBtb2RlbHMuDQoNClRydWUgdGhhdCB0aGVyZSB3 aWxsIGJlIG92ZXJoZWFkIHdpdGggMiBtZW1wb29scyAoc21hbGwgb25lKQ0KYnV0IGxldHMgYXNz dW1lIDI1NSByZXN1bHRzLiBUaGlzIG1lYW5zIHRoYXQgdGhlIGJ1ZmZlciBzaG91bGQgYmUgMjU1 ICogc2l6ZW9mKHJ0ZV9yZWdleF9tYXRjaCkgPSAySw0KYWxzbyB0aGlzIHdpbGwgZW5hYmxlIHVz IHRvIHJlcGxhY2UgZ3JvdXBYIHdpdGggZ3JvdXBbXSB3aGljaCB3aWxsIGFsbG93IGV2ZW4gbW9y ZSBncm91cHMuDQpJbiBhZGRpdGlvbiBkb24ndCB0aGluayB0aGF0IGNyeXB0byBpcyBhIGdvb2Qg ZXhhbXBsZS4NClRoZSBtYWluIGRpZmZlcmVuY2UgaXMgdGhhdCBpbiBSZWdFeCB0aGUgb3V0cHV0 IGlzIGRpZmZlcmVudCBmb3JtYXQgdGhlbiB0aGUgaW5wdXQuDQoNCg0KPiANCj4gDQo+IA0KPiA+ DQo+ID4gPg0KPiA+ID4NCj4gPiA+IFJlZ2FyZGluZyB0aGUgcnVsZSBhdHRyaWJ1dGVzLCBXZSB0 aGluaywgZm9sbG93aW5nIG5lZWRzIHRvIGJlIGFkZGVkIHRvDQo+IGNvbnRyb2wNCj4gPiA+IHRo ZSBydWxlIGNvbXBpbGF0aW9uIGJlaGF2aW9yLiBJZiBpdCBub3QgY29udmVyZ2luZyBpbiBmaXJz dCBsb29rLCBJDQo+ID4gPiB0aGluaywgd2UgY2FuIG1ha2UNCj4gPiA+IGJlbG93IGFzIHNlcGFy YXRlIHBhdGNoIG9uY2Ugd2UgaGF2ZSBiYXNpYyB0aGluZ3MuDQo+ID4gPg0KPiA+DQo+ID4gUmVn YXJkaW5nIHRoZSBuZXcgY29kZSwgd2UgbmVlZCBhbHNvIHRvIGFkZCBhIGZ1bmN0aW9uIHRvIGdl dCB0aGUNCj4gY2FwYWJpbGl0aWVzIGZvciB0aGUgY29tcGlsZXIgb3INCj4gPiBhZGQgYSBuZXcg ZmllbGQgaW4gdGhlIGRldl9pbmZvIHdoaWNoIHdpbGwgcmVwb3J0IHRoZSBjb21wbGllciBzdXBw b3J0ZWQNCj4gZmVhdHVyZXMuDQo+IA0KPiBJIGFncmVlLiBMZXRzIHJlbW92ZSB0aGlzIG5ldyBj b2RlIGZyb20gdGhlIGZpcnN0IHZlcnNpb24uIFdlIGNhbiBhZGQNCj4gaXQgbGF0ZXIgd2l0aCBj YXBhYmlsaXR5IGFzDQo+IGEgbmV3IHBhdGNoLg0KPiANCg0KQWdyZWUNCg0KPiBJIGFzc3VtZSB5 b3Ugd2lsbCBzZW5kIHRoZSB2NCB3aXRoIHRoZXNlIGNvbW1lbnRzLiBJIHRoaW5rLCB3aXRoIHY0 IHdlDQo+IGNhbiBzdGFydCBpbXBsZW1lbnRpbmcgY29tbW9uIGxpYnJhcnkgY29kZS4NCg0KSnVz dCBuZWVkIHRvIGFncmVlIG9uIHRoZSBzcGxpdCAob25lIG1vcmUgaXRlcmF0aW9uIPCfmIopDQph bmQgSSB3aWxsIHN0YXJ0IHdvcmtpbmcgb24gdGhlIGNvbW1vbiBjb2RlLg0KDQo=