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 DD38D42BF1; Mon, 5 Jun 2023 14:53:41 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 6EE114021F; Mon, 5 Jun 2023 14:53:41 +0200 (CEST) Received: from forward502c.mail.yandex.net (forward502c.mail.yandex.net [178.154.239.210]) by mails.dpdk.org (Postfix) with ESMTP id 6C03E4003C for ; Mon, 5 Jun 2023 14:53:39 +0200 (CEST) Received: from mail-nwsmtp-mxback-production-main-11.myt.yp-c.yandex.net (mail-nwsmtp-mxback-production-main-11.myt.yp-c.yandex.net [IPv6:2a02:6b8:c12:37af:0:640:84dd:0]) by forward502c.mail.yandex.net (Yandex) with ESMTP id 0E82C5E738; Mon, 5 Jun 2023 15:53:39 +0300 (MSK) Received: from mail.yandex.ru (2a02:6b8:c12:622e:0:640:2871:0 [2a02:6b8:c12:622e:0:640:2871:0]) by mail-nwsmtp-mxback-production-main-11.myt.yp-c.yandex.net (mxback/Yandex) with HTTP id WrRPmq2W6iE0-jioOxklZ; Mon, 05 Jun 2023 15:53:38 +0300 X-Yandex-Fwd: 1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex.ru; s=mail; t=1685969618; bh=7X7GhN+6KSsVd263V9DHD0mGyN1vnNzrygHulmfb8/Q=; h=References:Date:Message-Id:Cc:Subject:To:From:In-Reply-To; b=wR2PCLf5Qqgti6otnmR1qWfmKZCToekdwuENW0BiMQgYA5rm+Pbawl9Spl8heneaa 6JbL5ZL+qTn8O7n05eLdg1HANSe2MmW5GTjJWj/VbXPU9PgvMOCdjfMGR48oqaD4gL Dj69xg+Yb+kVdT4X6vK2RyJlL8hCMbhNr2nF9+pc= Authentication-Results: mail-nwsmtp-mxback-production-main-11.myt.yp-c.yandex.net; dkim=pass header.i=@yandex.ru Received: by eygtfx7sgzpkpabs.myt.yp-c.yandex.net with HTTP; Mon, 05 Jun 2023 15:53:38 +0300 From: =?utf-8?B?0JrQvtC90YHRgtCw0L3RgtC40L0g0JDQvdCw0L3RjNC10LI=?= Envelope-From: konstantin-v-ananyev@yandex.ru To: Feifei Wang , Thomas Monjalon , Ferruh Yigit , Andrew Rybchenko Cc: "dev@dpdk.org" , "nd@arm.com" , Honnappa Nagarahalli , Ruifeng Wang In-Reply-To: <20230525094541.331338-2-feifei.wang2@arm.com> References: <20211224164613.32569-1-feifei.wang2@arm.com> <20230525094541.331338-1-feifei.wang2@arm.com> <20230525094541.331338-2-feifei.wang2@arm.com> Subject: Re: [PATCH v6 1/4] ethdev: add API for mbufs recycle mode MIME-Version: 1.0 X-Mailer: Yamail [ http://yandex.ru ] 5.0 Date: Mon, 05 Jun 2023 13:53:38 +0100 Message-Id: <658741685969010@mail.yandex.ru> Content-Transfer-Encoding: base64 Content-Type: text/html; charset=utf-8 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 PGRpdj7CoDwvZGl2PjxkaXY+wqA8L2Rpdj48ZGl2PkhpIEZlaWZlaSw8L2Rpdj48ZGl2PsKgPC9k aXY+PGRpdj5mZXcgbW9yZSBjb21tZW50cyBmcm9tIG1lLCBzZWUgYmVsb3cuPC9kaXY+PGJsb2Nr cXVvdGU+PHA+QWRkICdydGVfZXRoX3JlY3ljbGVfcnhfcXVldWVfaW5mb19nZXQnIGFuZCAncnRl X2V0aF9yZWN5Y2xlX21idWZzJzxiciAvPkFQSXMgdG8gcmVjeWNsZSB1c2VkIG1idWZzIGZyb20g YSB0cmFuc21pdCBxdWV1ZSBvZiBhbiBFdGhlcm5ldCBkZXZpY2UsPGJyIC8+YW5kIG1vdmUgdGhl c2UgbWJ1ZnMgaW50byBhIG1idWYgcmluZyBmb3IgYSByZWNlaXZlIHF1ZXVlIG9mIGFuIEV0aGVy bmV0PGJyIC8+ZGV2aWNlLiBUaGlzIGNhbiBieXBhc3MgbWVtcG9vbCAncHV0L2dldCcgb3BlcmF0 aW9ucyBoZW5jZSBzYXZpbmcgQ1BVPGJyIC8+Y3ljbGVzLjxiciAvPjxiciAvPkZvciBlYWNoIHJl Y3ljbGluZyBtYnVmcywgdGhlIHJ0ZV9ldGhfcmVjeWNsZV9tYnVmcygpIGZ1bmN0aW9uIHBlcmZv cm1zPGJyIC8+dGhlIGZvbGxvd2luZyBvcGVyYXRpb25zOjxiciAvPi0gQ29weSB1c2VkICpydGVf bWJ1ZiogYnVmZmVyIHBvaW50ZXJzIGZyb20gVHggbWJ1ZiByaW5nIGludG8gUnggbWJ1ZjxiciAv PnJpbmcuPGJyIC8+LSBSZXBsZW5pc2ggdGhlIFJ4IGRlc2NyaXB0b3JzIHdpdGggdGhlIHJlY3lj bGluZyAqcnRlX21idWYqIG1idWZzIGZyZWVkPGJyIC8+ZnJvbSB0aGUgVHggbWJ1ZiByaW5nLjxi ciAvPjxiciAvPlN1Z2dlc3RlZC1ieTogSG9ubmFwcGEgTmFnYXJhaGFsbGkgJmx0OzxhIGhyZWY9 Im1haWx0bzpob25uYXBwYS5uYWdhcmFoYWxsaUBhcm0uY29tIiByZWw9Im5vb3BlbmVyIG5vcmVm ZXJyZXIiPmhvbm5hcHBhLm5hZ2FyYWhhbGxpQGFybS5jb208L2E+Jmd0OzxiciAvPlN1Z2dlc3Rl ZC1ieTogUnVpZmVuZyBXYW5nICZsdDs8YSBocmVmPSJtYWlsdG86cnVpZmVuZy53YW5nQGFybS5j b20iIHJlbD0ibm9vcGVuZXIgbm9yZWZlcnJlciI+cnVpZmVuZy53YW5nQGFybS5jb208L2E+Jmd0 OzxiciAvPlNpZ25lZC1vZmYtYnk6IEZlaWZlaSBXYW5nICZsdDs8YSBocmVmPSJtYWlsdG86ZmVp ZmVpLndhbmcyQGFybS5jb20iIHJlbD0ibm9vcGVuZXIgbm9yZWZlcnJlciI+ZmVpZmVpLndhbmcy QGFybS5jb208L2E+Jmd0OzxiciAvPlJldmlld2VkLWJ5OiBSdWlmZW5nIFdhbmcgJmx0OzxhIGhy ZWY9Im1haWx0bzpydWlmZW5nLndhbmdAYXJtLmNvbSIgcmVsPSJub29wZW5lciBub3JlZmVycmVy Ij5ydWlmZW5nLndhbmdAYXJtLmNvbTwvYT4mZ3Q7PGJyIC8+UmV2aWV3ZWQtYnk6IEhvbm5hcHBh IE5hZ2FyYWhhbGxpICZsdDs8YSBocmVmPSJtYWlsdG86aG9ubmFwcGEubmFnYXJhaGFsbGlAYXJt LmNvbSIgcmVsPSJub29wZW5lciBub3JlZmVycmVyIj5ob25uYXBwYS5uYWdhcmFoYWxsaUBhcm0u Y29tPC9hPiZndDs8YnIgLz4tLS08YnIgLz7CoGRvYy9ndWlkZXMvcmVsX25vdGVzL3JlbGVhc2Vf MjNfMDcucnN0IHwgNyArPGJyIC8+wqBsaWIvZXRoZGV2L2V0aGRldl9kcml2ZXIuaCB8IDEwICsr PGJyIC8+wqBsaWIvZXRoZGV2L2V0aGRldl9wcml2YXRlLmMgfCAyICs8YnIgLz7CoGxpYi9ldGhk ZXYvcnRlX2V0aGRldi5jIHwgMzEgKysrKys8YnIgLz7CoGxpYi9ldGhkZXYvcnRlX2V0aGRldi5o IHwgMTgyICsrKysrKysrKysrKysrKysrKysrKysrKys8YnIgLz7CoGxpYi9ldGhkZXYvcnRlX2V0 aGRldl9jb3JlLmggfCAxNSArLTxiciAvPsKgbGliL2V0aGRldi92ZXJzaW9uLm1hcCB8IDQgKzxi ciAvPsKgNyBmaWxlcyBjaGFuZ2VkLCAyNDkgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSk8 YnIgLz48YnIgLz5kaWZmIC0tZ2l0IGEvZG9jL2d1aWRlcy9yZWxfbm90ZXMvcmVsZWFzZV8yM18w Ny5yc3QgYi9kb2MvZ3VpZGVzL3JlbF9ub3Rlcy9yZWxlYXNlXzIzXzA3LnJzdDxiciAvPmluZGV4 IGE5YjEyOTM2ODkuLmYyNzkwMzZjYjkgMTAwNjQ0PGJyIC8+LS0tIGEvZG9jL2d1aWRlcy9yZWxf bm90ZXMvcmVsZWFzZV8yM18wNy5yc3Q8YnIgLz4rKysgYi9kb2MvZ3VpZGVzL3JlbF9ub3Rlcy9y ZWxlYXNlXzIzXzA3LnJzdDxiciAvPkBAIC01NSw2ICs1NSwxMyBAQCBOZXcgRmVhdHVyZXM8YnIg Lz7CoMKgwqDCoMKgwqBBbHNvLCBtYWtlIHN1cmUgdG8gc3RhcnQgdGhlIGFjdHVhbCB0ZXh0IGF0 IHRoZSBtYXJnaW4uPGJyIC8+wqDCoMKgwqDCoMKgPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PTxiciAvPsKgPGJyIC8+KyogKipBZGQgbWJ1ZnMg cmVjeWNsaW5nIHN1cHBvcnQuICoqPGJyIC8+KyBBZGRlZCBgYHJ0ZV9ldGhfcmVjeWNsZV9yeF9x dWV1ZV9pbmZvX2dldGBgIGFuZCBgYHJ0ZV9ldGhfcmVjeWNsZV9tYnVmc2BgPGJyIC8+KyBBUElz IHdoaWNoIGFsbG93IHRoZSB1c2VyIHRvIGNvcHkgdXNlZCBtYnVmcyBmcm9tIHRoZSBUeCBtYnVm IHJpbmc8YnIgLz4rIGludG8gdGhlIFJ4IG1idWYgcmluZy4gVGhpcyBmZWF0dXJlIHN1cHBvcnRz IHRoZSBjYXNlIHRoYXQgdGhlIFJ4IEV0aGVybmV0PGJyIC8+KyBkZXZpY2UgaXMgZGlmZmVyZW50 IGZyb20gdGhlIFR4IEV0aGVybmV0IGRldmljZSB3aXRoIHJlc3BlY3RpdmUgZHJpdmVyPGJyIC8+ KyBjYWxsYmFjayBmdW5jdGlvbnMgaW4gYGBydGVfZXRoX3JlY3ljbGVfbWJ1ZnNgYC48YnIgLz4r PGJyIC8+wqA8YnIgLz7CoFJlbW92ZWQgSXRlbXM8YnIgLz7CoC0tLS0tLS0tLS0tLS08YnIgLz5k aWZmIC0tZ2l0IGEvbGliL2V0aGRldi9ldGhkZXZfZHJpdmVyLmggYi9saWIvZXRoZGV2L2V0aGRl dl9kcml2ZXIuaDxiciAvPmluZGV4IDJjOWQ2MTVmYjUuLmM2NzIzZDUyNzcgMTAwNjQ0PGJyIC8+ LS0tIGEvbGliL2V0aGRldi9ldGhkZXZfZHJpdmVyLmg8YnIgLz4rKysgYi9saWIvZXRoZGV2L2V0 aGRldl9kcml2ZXIuaDxiciAvPkBAIC01OSw2ICs1OSwxMCBAQCBzdHJ1Y3QgcnRlX2V0aF9kZXYg ezwhLS0gLS0+PGJyIC8+wqDCoMKgwqDCoMKgwqDCoMKgZXRoX3J4X2Rlc2NyaXB0b3Jfc3RhdHVz X3QgcnhfZGVzY3JpcHRvcl9zdGF0dXM7PGJyIC8+wqDCoMKgwqDCoMKgwqDCoMKgLyoqIENoZWNr IHRoZSBzdGF0dXMgb2YgYSBUeCBkZXNjcmlwdG9yICovPGJyIC8+wqDCoMKgwqDCoMKgwqDCoMKg ZXRoX3R4X2Rlc2NyaXB0b3Jfc3RhdHVzX3QgdHhfZGVzY3JpcHRvcl9zdGF0dXM7PGJyIC8+KyAv KiogUG9pbnRlciB0byBQTUQgdHJhbnNtaXQgbWJ1ZnMgcmV1c2UgZnVuY3Rpb24gKi88YnIgLz4r IGV0aF9yZWN5Y2xlX3R4X21idWZzX3JldXNlX3QgcmVjeWNsZV90eF9tYnVmc19yZXVzZTs8YnIg Lz4rIC8qKiBQb2ludGVyIHRvIFBNRCByZWNlaXZlIGRlc2NyaXB0b3JzIHJlZmlsbCBmdW5jdGlv biAqLzxiciAvPisgZXRoX3JlY3ljbGVfcnhfZGVzY3JpcHRvcnNfcmVmaWxsX3QgcmVjeWNsZV9y eF9kZXNjcmlwdG9yc19yZWZpbGw7PGJyIC8+wqA8YnIgLz7CoMKgwqDCoMKgwqDCoMKgwqAvKio8 YnIgLz7CoMKgwqDCoMKgwqDCoMKgwqDCoCogRGV2aWNlIGRhdGEgdGhhdCBpcyBzaGFyZWQgYmV0 d2VlbiBwcmltYXJ5IGFuZCBzZWNvbmRhcnkgcHJvY2Vzc2VzPGJyIC8+QEAgLTUwNCw2ICs1MDgs MTAgQEAgdHlwZWRlZiB2b2lkICgqZXRoX3J4cV9pbmZvX2dldF90KShzdHJ1Y3QgcnRlX2V0aF9k ZXYgKmRldiw8YnIgLz7CoHR5cGVkZWYgdm9pZCAoKmV0aF90eHFfaW5mb19nZXRfdCkoc3RydWN0 IHJ0ZV9ldGhfZGV2ICpkZXYsPGJyIC8+wqDCoMKgwqDCoMKgwqDCoMKgdWludDE2X3QgdHhfcXVl dWVfaWQsIHN0cnVjdCBydGVfZXRoX3R4cV9pbmZvICpxaW5mbyk7PGJyIC8+wqA8YnIgLz4rdHlw ZWRlZiB2b2lkICgqZXRoX3JlY3ljbGVfcnhxX2luZm9fZ2V0X3QpKHN0cnVjdCBydGVfZXRoX2Rl diAqZGV2LDxiciAvPisgdWludDE2X3QgcnhfcXVldWVfaWQsPGJyIC8+KyBzdHJ1Y3QgcnRlX2V0 aF9yZWN5Y2xlX3J4cV9pbmZvICpyZWN5Y2xlX3J4cV9pbmZvKTs8YnIgLz4rPGJyIC8+wqB0eXBl ZGVmIGludCAoKmV0aF9idXJzdF9tb2RlX2dldF90KShzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiw8 YnIgLz7CoMKgwqDCoMKgwqDCoMKgwqB1aW50MTZfdCBxdWV1ZV9pZCwgc3RydWN0IHJ0ZV9ldGhf YnVyc3RfbW9kZSAqbW9kZSk7PGJyIC8+wqA8YnIgLz5AQCAtMTI0Nyw2ICsxMjU1LDggQEAgc3Ry dWN0IGV0aF9kZXZfb3BzIHs8IS0tIC0tPjxiciAvPsKgwqDCoMKgwqDCoMKgwqDCoGV0aF9yeHFf aW5mb19nZXRfdCByeHFfaW5mb19nZXQ7PGJyIC8+wqDCoMKgwqDCoMKgwqDCoMKgLyoqIFJldHJp ZXZlIFR4IHF1ZXVlIGluZm9ybWF0aW9uICovPGJyIC8+wqDCoMKgwqDCoMKgwqDCoMKgZXRoX3R4 cV9pbmZvX2dldF90IHR4cV9pbmZvX2dldDs8YnIgLz4rIC8qKiBSZXRyaWV2ZSBtYnVmcyByZWN5 Y2xlIFJ4IHF1ZXVlIGluZm9ybWF0aW9uICovPGJyIC8+KyBldGhfcmVjeWNsZV9yeHFfaW5mb19n ZXRfdCByZWN5Y2xlX3J4cV9pbmZvX2dldDs8YnIgLz7CoMKgwqDCoMKgwqDCoMKgwqBldGhfYnVy c3RfbW9kZV9nZXRfdCByeF9idXJzdF9tb2RlX2dldDsgLyoqJmx0OyBHZXQgUnggYnVyc3QgbW9k ZSAqLzxiciAvPsKgwqDCoMKgwqDCoMKgwqDCoGV0aF9idXJzdF9tb2RlX2dldF90IHR4X2J1cnN0 X21vZGVfZ2V0OyAvKiombHQ7IEdldCBUeCBidXJzdCBtb2RlICovPGJyIC8+wqDCoMKgwqDCoMKg wqDCoMKgZXRoX2Z3X3ZlcnNpb25fZ2V0X3QgZndfdmVyc2lvbl9nZXQ7IC8qKiZsdDsgR2V0IGZp cm13YXJlIHZlcnNpb24gKi88YnIgLz5kaWZmIC0tZ2l0IGEvbGliL2V0aGRldi9ldGhkZXZfcHJp dmF0ZS5jIGIvbGliL2V0aGRldi9ldGhkZXZfcHJpdmF0ZS5jPGJyIC8+aW5kZXggMTRlYzhjNmNj Zi4uZjhhYjY0ZjE5NSAxMDA2NDQ8YnIgLz4tLS0gYS9saWIvZXRoZGV2L2V0aGRldl9wcml2YXRl LmM8YnIgLz4rKysgYi9saWIvZXRoZGV2L2V0aGRldl9wcml2YXRlLmM8YnIgLz5AQCAtMjc3LDYg KzI3Nyw4IEBAIGV0aF9kZXZfZnBfb3BzX3NldHVwKHN0cnVjdCBydGVfZXRoX2ZwX29wcyAqZnBv LDxiciAvPsKgwqDCoMKgwqDCoMKgwqDCoGZwby0mZ3Q7cnhfcXVldWVfY291bnQgPSBkZXYtJmd0 O3J4X3F1ZXVlX2NvdW50OzxiciAvPsKgwqDCoMKgwqDCoMKgwqDCoGZwby0mZ3Q7cnhfZGVzY3Jp cHRvcl9zdGF0dXMgPSBkZXYtJmd0O3J4X2Rlc2NyaXB0b3Jfc3RhdHVzOzxiciAvPsKgwqDCoMKg wqDCoMKgwqDCoGZwby0mZ3Q7dHhfZGVzY3JpcHRvcl9zdGF0dXMgPSBkZXYtJmd0O3R4X2Rlc2Ny aXB0b3Jfc3RhdHVzOzxiciAvPisgZnBvLSZndDtyZWN5Y2xlX3R4X21idWZzX3JldXNlID0gZGV2 LSZndDtyZWN5Y2xlX3R4X21idWZzX3JldXNlOzxiciAvPisgZnBvLSZndDtyZWN5Y2xlX3J4X2Rl c2NyaXB0b3JzX3JlZmlsbCA9IGRldi0mZ3Q7cmVjeWNsZV9yeF9kZXNjcmlwdG9yc19yZWZpbGw7 PGJyIC8+wqA8YnIgLz7CoMKgwqDCoMKgwqDCoMKgwqBmcG8tJmd0O3J4cS5kYXRhID0gZGV2LSZn dDtkYXRhLSZndDtyeF9xdWV1ZXM7PGJyIC8+wqDCoMKgwqDCoMKgwqDCoMKgZnBvLSZndDtyeHEu Y2xiayA9ICh2b2lkICoqKSh1aW50cHRyX3QpZGV2LSZndDtwb3N0X3J4X2J1cnN0X2Niczs8YnIg Lz5kaWZmIC0tZ2l0IGEvbGliL2V0aGRldi9ydGVfZXRoZGV2LmMgYi9saWIvZXRoZGV2L3J0ZV9l dGhkZXYuYzxiciAvPmluZGV4IDRkMDMyNTU2ODMuLjdjMjdkY2ZlYTQgMTAwNjQ0PGJyIC8+LS0t IGEvbGliL2V0aGRldi9ydGVfZXRoZGV2LmM8YnIgLz4rKysgYi9saWIvZXRoZGV2L3J0ZV9ldGhk ZXYuYzxiciAvPkBAIC01Nzg0LDYgKzU3ODQsMzcgQEAgcnRlX2V0aF90eF9xdWV1ZV9pbmZvX2dl dCh1aW50MTZfdCBwb3J0X2lkLCB1aW50MTZfdCBxdWV1ZV9pZCw8YnIgLz7CoMKgwqDCoMKgwqDC oMKgwqByZXR1cm4gMDs8YnIgLz7CoH08YnIgLz7CoDxiciAvPitpbnQ8YnIgLz4rcnRlX2V0aF9y ZWN5Y2xlX3J4X3F1ZXVlX2luZm9fZ2V0KHVpbnQxNl90IHBvcnRfaWQsIHVpbnQxNl90IHF1ZXVl X2lkLDxiciAvPisgc3RydWN0IHJ0ZV9ldGhfcmVjeWNsZV9yeHFfaW5mbyAqcmVjeWNsZV9yeHFf aW5mbyk8YnIgLz4rezwhLS0gLS0+PGJyIC8+KyBzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldjs8YnIg Lz4rPGJyIC8+KyBSVEVfRVRIX1ZBTElEX1BPUlRJRF9PUl9FUlJfUkVUKHBvcnRfaWQsIC1FTk9E RVYpOzxiciAvPisgZGV2ID0gJmFtcDtydGVfZXRoX2RldmljZXNbcG9ydF9pZF07PGJyIC8+Kzxi ciAvPisgaWYgKHF1ZXVlX2lkICZndDs9IGRldi0mZ3Q7ZGF0YS0mZ3Q7bmJfcnhfcXVldWVzKSB7 PCEtLSAtLT48YnIgLz4rIFJURV9FVEhERVZfTE9HKEVSUiwgIkludmFsaWQgUnggcXVldWVfaWQ9 JXVcbiIsIHF1ZXVlX2lkKTs8YnIgLz4rIHJldHVybiAtRUlOVkFMOzxiciAvPisgfTxiciAvPis8 YnIgLz4rIGlmIChkZXYtJmd0O2RhdGEtJmd0O3J4X3F1ZXVlcyA9PSBOVUxMIHx8PGJyIC8+KyBk ZXYtJmd0O2RhdGEtJmd0O3J4X3F1ZXVlc1txdWV1ZV9pZF0gPT0gTlVMTCkgezwhLS0gLS0+PGJy IC8+KyBSVEVfRVRIREVWX0xPRyhFUlIsPGJyIC8+KyAiUnggcXVldWUgJSJQUkl1MTYiIG9mIGRl dmljZSB3aXRoIHBvcnRfaWQ9JSI8YnIgLz4rIFBSSXUxNiIgaGFzIG5vdCBiZWVuIHNldHVwXG4i LDxiciAvPisgcXVldWVfaWQsIHBvcnRfaWQpOzxiciAvPisgcmV0dXJuIC1FSU5WQUw7PGJyIC8+ KyB9PGJyIC8+KzxiciAvPisgaWYgKCpkZXYtJmd0O2Rldl9vcHMtJmd0O3JlY3ljbGVfcnhxX2lu Zm9fZ2V0ID09IE5VTEwpPGJyIC8+KyByZXR1cm4gLUVOT1RTVVA7PGJyIC8+KzxiciAvPisgZGV2 LSZndDtkZXZfb3BzLSZndDtyZWN5Y2xlX3J4cV9pbmZvX2dldChkZXYsIHF1ZXVlX2lkLCByZWN5 Y2xlX3J4cV9pbmZvKTs8YnIgLz4rPGJyIC8+KyByZXR1cm4gMDs8YnIgLz4rfTxiciAvPis8YnIg Lz7CoGludDxiciAvPsKgcnRlX2V0aF9yeF9idXJzdF9tb2RlX2dldCh1aW50MTZfdCBwb3J0X2lk LCB1aW50MTZfdCBxdWV1ZV9pZCw8YnIgLz7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgcnRlX2V0aF9idXJzdF9tb2RlICptb2RlKTxi ciAvPmRpZmYgLS1naXQgYS9saWIvZXRoZGV2L3J0ZV9ldGhkZXYuaCBiL2xpYi9ldGhkZXYvcnRl X2V0aGRldi5oPGJyIC8+aW5kZXggOTlmZTllMjM4Yi4uNzQzNGFhMjQ4MyAxMDA2NDQ8YnIgLz4t LS0gYS9saWIvZXRoZGV2L3J0ZV9ldGhkZXYuaDxiciAvPisrKyBiL2xpYi9ldGhkZXYvcnRlX2V0 aGRldi5oPGJyIC8+QEAgLTE4MjAsNiArMTgyMCwzMCBAQCBzdHJ1Y3QgcnRlX2V0aF90eHFfaW5m byB7PCEtLSAtLT48YnIgLz7CoMKgwqDCoMKgwqDCoMKgwqB1aW50OF90IHF1ZXVlX3N0YXRlOyAv KiombHQ7IG9uZSBvZiBSVEVfRVRIX1FVRVVFX1NUQVRFXyouICovPGJyIC8+wqB9IF9fcnRlX2Nh Y2hlX21pbl9hbGlnbmVkOzxiciAvPsKgPGJyIC8+Ky8qKjxiciAvPisgKiBAd2FybmluZzxiciAv PisgKiBAYiBFWFBFUklNRU5UQUw6IHRoaXMgc3RydWN0dXJlIG1heSBjaGFuZ2Ugd2l0aG91dCBw cmlvciBub3RpY2UuPGJyIC8+KyAqPGJyIC8+KyAqIEV0aGVybmV0IGRldmljZSBSeCBxdWV1ZSBp bmZvcm1hdGlvbiBzdHJ1Y3R1cmUgZm9yIHJlY3ljbGluZyBtYnVmcy48YnIgLz4rICogVXNlZCB0 byByZXRyaWV2ZSBSeCBxdWV1ZSBpbmZvcm1hdGlvbiB3aGVuIFR4IHF1ZXVlIHJldXNpbmcgbWJ1 ZnMgYW5kIG1vdmluZzxiciAvPisgKiB0aGVtIGludG8gUnggbWJ1ZiByaW5nLjxiciAvPisgKi88 YnIgLz4rc3RydWN0IHJ0ZV9ldGhfcmVjeWNsZV9yeHFfaW5mbyB7PCEtLSAtLT48YnIgLz4rIHN0 cnVjdCBydGVfbWJ1ZiAqKm1idWZfcmluZzsgLyoqJmx0OyBtYnVmIHJpbmcgb2YgUnggcXVldWUu ICovPGJyIC8+KyBzdHJ1Y3QgcnRlX21lbXBvb2wgKm1wOyAvKiombHQ7IG1lbXBvb2wgb2YgUngg cXVldWUuICovPGJyIC8+KyB1aW50MTZfdCAqcmVmaWxsX2hlYWQ7IC8qKiZsdDsgaGVhZCBvZiBS eCBxdWV1ZSByZWZpbGxpbmcgbWJ1ZnMuICovPGJyIC8+KyB1aW50MTZfdCAqcmVjZWl2ZV90YWls OyAvKiombHQ7IHRhaWwgb2YgUnggcXVldWUgcmVjZWl2aW5nIHBrdHMuICovPGJyIC8+KyB1aW50 MTZfdCBtYnVmX3Jpbmdfc2l6ZTsgLyoqJmx0OyBjb25maWd1cmVkIG51bWJlciBvZiBtYnVmIHJp bmcgc2l6ZS4gKi88YnIgLz4rIC8qKjxiciAvPisgKiBSZXF1aXJlbWVudCBvbiBtYnVmIHJlZmls bGluZyBiYXRjaCBzaXplIG9mIFJ4IG1idWYgcmluZy48YnIgLz4rICogRm9yIHNvbWUgUE1EIGRy aXZlcnMsIHRoZSBudW1iZXIgb2YgUnggbWJ1ZiByaW5nIHJlZmlsbGluZyBtYnVmczxiciAvPisg KiBzaG91bGQgYmUgYWxpZ25lZCB3aXRoIG1idWYgcmluZyBzaXplLCBpbiBvcmRlciB0byBzaW1w bGlmeTxiciAvPisgKiByaW5nIHdyYXBwaW5nIGFyb3VuZC48YnIgLz4rICogVmFsdWUgMCBtZWFu cyB0aGF0IFBNRCBkcml2ZXJzIGhhdmUgbm8gcmVxdWlyZW1lbnQgZm9yIHRoaXMuPGJyIC8+KyAq LzxiciAvPisgdWludDE2X3QgcmVmaWxsX3JlcXVpcmVtZW50OzxiciAvPit9IF9fcnRlX2NhY2hl X21pbl9hbGlnbmVkOzxiciAvPis8YnIgLz7CoC8qIEdlbmVyaWMgQnVyc3QgbW9kZSBmbGFnIGRl ZmluaXRpb24sIHZhbHVlcyBjYW4gYmUgT1JlZC4gKi88YnIgLz7CoDxiciAvPsKgLyoqPGJyIC8+ QEAgLTQ4MDksNiArNDgzMywzMSBAQCBpbnQgcnRlX2V0aF9yeF9xdWV1ZV9pbmZvX2dldCh1aW50 MTZfdCBwb3J0X2lkLCB1aW50MTZfdCBxdWV1ZV9pZCw8YnIgLz7CoGludCBydGVfZXRoX3R4X3F1 ZXVlX2luZm9fZ2V0KHVpbnQxNl90IHBvcnRfaWQsIHVpbnQxNl90IHF1ZXVlX2lkLDxiciAvPsKg wqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBydGVfZXRoX3R4cV9pbmZvICpxaW5mbyk7PGJyIC8+wqA8 YnIgLz4rLyoqPGJyIC8+KyAqIEB3YXJuaW5nPGJyIC8+KyAqIEBiIEVYUEVSSU1FTlRBTDogdGhp cyBBUEkgbWF5IGNoYW5nZSwgb3IgYmUgcmVtb3ZlZCwgd2l0aG91dCBwcmlvciBub3RpY2U8YnIg Lz4rICo8YnIgLz4rICogUmV0cmlldmUgaW5mb3JtYXRpb24gYWJvdXQgZ2l2ZW4gcG9ydHMncyBS eCBxdWV1ZSBmb3IgcmVjeWNsaW5nIG1idWZzLjxiciAvPisgKjxiciAvPisgKiBAcGFyYW0gcG9y dF9pZDxiciAvPisgKiBUaGUgcG9ydCBpZGVudGlmaWVyIG9mIHRoZSBFdGhlcm5ldCBkZXZpY2Uu PGJyIC8+KyAqIEBwYXJhbSBxdWV1ZV9pZDxiciAvPisgKiBUaGUgUnggcXVldWUgb24gdGhlIEV0 aGVybmV0IGRldmljZWZvciB3aGljaCBpbmZvcm1hdGlvbjxiciAvPisgKiB3aWxsIGJlIHJldHJp ZXZlZC48YnIgLz4rICogQHBhcmFtIHJlY3ljbGVfcnhxX2luZm88YnIgLz4rICogQSBwb2ludGVy IHRvIGEgc3RydWN0dXJlIG9mIHR5cGUgKnJ0ZV9ldGhfcmVjeWNsZV9yeHFfaW5mbyogdG8gYmUg ZmlsbGVkLjxiciAvPisgKjxiciAvPisgKiBAcmV0dXJuPGJyIC8+KyAqIC0gMDogU3VjY2Vzczxi ciAvPisgKiAtIC1FTk9ERVY6IElmICpwb3J0X2lkKiBpcyBpbnZhbGlkLjxiciAvPisgKiAtIC1F Tk9UU1VQOiByb3V0aW5lIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGRldmljZSBQTUQuPGJyIC8+ KyAqIC0gLUVJTlZBTDogVGhlIHF1ZXVlX2lkIGlzIG91dCBvZiByYW5nZS48YnIgLz4rICovPGJy IC8+K19fcnRlX2V4cGVyaW1lbnRhbDxiciAvPitpbnQgcnRlX2V0aF9yZWN5Y2xlX3J4X3F1ZXVl X2luZm9fZ2V0KHVpbnQxNl90IHBvcnRfaWQsPGJyIC8+KyB1aW50MTZfdCBxdWV1ZV9pZCw8YnIg Lz4rIHN0cnVjdCBydGVfZXRoX3JlY3ljbGVfcnhxX2luZm8gKnJlY3ljbGVfcnhxX2luZm8pOzxi ciAvPis8YnIgLz7CoC8qKjxiciAvPsKgwqAqIFJldHJpZXZlIGluZm9ybWF0aW9uIGFib3V0IHRo ZSBSeCBwYWNrZXQgYnVyc3QgbW9kZS48YnIgLz7CoMKgKjxiciAvPkBAIC02NDgzLDYgKzY1MzIs MTM5IEBAIHJ0ZV9ldGhfdHhfYnVmZmVyKHVpbnQxNl90IHBvcnRfaWQsIHVpbnQxNl90IHF1ZXVl X2lkLDxiciAvPsKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiBydGVfZXRoX3R4X2J1ZmZlcl9mbHVz aChwb3J0X2lkLCBxdWV1ZV9pZCwgYnVmZmVyKTs8YnIgLz7CoH08YnIgLz7CoDxiciAvPisvKio8 YnIgLz4rICogQHdhcm5pbmc8YnIgLz4rICogQGIgRVhQRVJJTUVOVEFMOiB0aGlzIEFQSSBtYXkg Y2hhbmdlLCBvciBiZSByZW1vdmVkLCB3aXRob3V0IHByaW9yIG5vdGljZTxiciAvPisgKjxiciAv PisgKiBSZWN5Y2xlIHVzZWQgbWJ1ZnMgZnJvbSBhIHRyYW5zbWl0IHF1ZXVlIG9mIGFuIEV0aGVy bmV0IGRldmljZSwgYW5kIG1vdmU8YnIgLz4rICogdGhlc2UgbWJ1ZnMgaW50byBhIG1idWYgcmlu ZyBmb3IgYSByZWNlaXZlIHF1ZXVlIG9mIGFuIEV0aGVybmV0IGRldmljZS48YnIgLz4rICogVGhp cyBjYW4gYnlwYXNzIG1lbXBvb2wgcGF0aCB0byBzYXZlIENQVSBjeWNsZXMuPGJyIC8+KyAqPGJy IC8+KyAqIFRoZSBydGVfZXRoX3JlY3ljbGVfbWJ1ZnMoKSBmdW5jdGlvbiBsb29wcywgd2l0aCBy dGVfZXRoX3J4X2J1cnN0KCkgYW5kPGJyIC8+KyAqIHJ0ZV9ldGhfdHhfYnVyc3QoKSBmdW5jdGlv bnMsIGZyZWVpbmcgVHggdXNlZCBtYnVmcyBhbmQgcmVwbGVuaXNoaW5nIFJ4PGJyIC8+KyAqIGRl c2NyaXB0b3JzLiBUaGUgbnVtYmVyIG9mIHJlY3ljbGluZyBtYnVmcyBkZXBlbmRzIG9uIHRoZSBy ZXF1ZXN0IG9mIFJ4IG1idWY8YnIgLz4rICogcmluZywgd2l0aCB0aGUgY29uc3RyYWludCBvZiBl bm91Z2ggdXNlZCBtYnVmcyBmcm9tIFR4IG1idWYgcmluZy48YnIgLz4rICo8YnIgLz4rICogRm9y IGVhY2ggcmVjeWNsaW5nIG1idWZzLCB0aGUgcnRlX2V0aF9yZWN5Y2xlX21idWZzKCkgZnVuY3Rp b24gcGVyZm9ybXMgdGhlPGJyIC8+KyAqIGZvbGxvd2luZyBvcGVyYXRpb25zOjxiciAvPisgKjxi ciAvPisgKiAtIENvcHkgdXNlZCAqcnRlX21idWYqIGJ1ZmZlciBwb2ludGVycyBmcm9tIFR4IG1i dWYgcmluZyBpbnRvIFJ4IG1idWYgcmluZy48YnIgLz4rICo8YnIgLz4rICogLSBSZXBsZW5pc2gg dGhlIFJ4IGRlc2NyaXB0b3JzIHdpdGggdGhlIHJlY3ljbGluZyAqcnRlX21idWYqIG1idWZzIGZy ZWVkPGJyIC8+KyAqIGZyb20gdGhlIFR4IG1idWYgcmluZy48YnIgLz4rICo8YnIgLz4rICogVGhp cyBmdW5jdGlvbiBzcGlsdHMgUnggYW5kIFR4IHBhdGggd2l0aCBkaWZmZXJlbnQgY2FsbGJhY2sg ZnVuY3Rpb25zLiBUaGU8YnIgLz4rICogY2FsbGJhY2sgZnVuY3Rpb24gcmVjeWNsZV90eF9tYnVm c19yZXVzZSBpcyBmb3IgVHggZHJpdmVyLiBUaGUgY2FsbGJhY2s8YnIgLz4rICogZnVuY3Rpb24g cmVjeWNsZV9yeF9kZXNjcmlwdG9yc19yZWZpbGwgaXMgZm9yIFJ4IGRyaXZlci4gcnRlX2V0aF9y ZWN5Y2xlX21idWZzKCk8YnIgLz4rICogY2FuIHN1cHBvcnQgdGhlIGNhc2UgdGhhdCBSeCBFdGhl cm5ldCBkZXZpY2UgaXMgZGlmZmVyZW50IGZyb20gVHggRXRoZXJuZXQgZGV2aWNlLjxiciAvPisg KjxiciAvPisgKiBJdCBpcyB0aGUgcmVzcG9uc2liaWxpdHkgb2YgdXNlcnMgdG8gc2VsZWN0IHRo ZSBSeC9UeCBxdWV1ZSBwYWlyIHRvIHJlY3ljbGU8YnIgLz4rICogbWJ1ZnMuIEJlZm9yZSBjYWxs IHRoaXMgZnVuY3Rpb24sIHVzZXJzIG11c3QgY2FsbCBydGVfZXRoX3JlY3ljbGVfcnhxX2luZm9f Z2V0PGJyIC8+KyAqIGZ1bmN0aW9uIHRvIHJldHJpZXZlIHNlbGVjdGVkIFJ4IHF1ZXVlIGluZm9y bWF0aW9uLjxiciAvPisgKiBAc2VlIHJ0ZV9ldGhfcmVjeWNsZV9yeHFfaW5mb19nZXQsIHN0cnVj dCBydGVfZXRoX3JlY3ljbGVfcnhxX2luZm88YnIgLz4rICo8YnIgLz4rICogQ3VycmVudGx5LCB0 aGUgcnRlX2V0aF9yZWN5Y2xlX21idWZzKCkgZnVuY3Rpb24gY2FuIG9ubHkgc3VwcG9ydCBvbmUt dGltZSBwYWlyaW5nPGJyIC8+KyAqIGJldHdlZW4gdGhlIHJlY2VpdmUgcXVldWUgYW5kIHRyYW5z bWl0IHF1ZXVlLiBEbyBub3QgcGFpciBvbmUgcmVjZWl2ZSBxdWV1ZSB3aXRoPGJyIC8+KyAqIG11 bHRpcGxlIHRyYW5zbWl0IHF1ZXVlcyBvciBwYWlyIG9uZSB0cmFuc21pdCBxdWV1ZSB3aXRoIG11 bHRpcGxlIHJlY2VpdmUgcXVldWVzLDxiciAvPisgKiBpbiBvcmRlciB0byBhdm9pZCBtZW1vcnkg ZXJyb3IgcmV3cml0aW5nLjwvcD48L2Jsb2NrcXVvdGU+PGRpdj5Qcm9iYWJseSBJIGFtIG1pc3Np bmcgc29tZXRoaW5nLCBidXQgd2h5IGl0IGlzIG5vdCBwb3NzaWJsZSB0byBkbyBzb21ldGhpbmcg bGlrZSB0aGF0OjwvZGl2PjxkaXY+wqA8L2Rpdj48ZGl2PjxkaXY+cnRlX2V0aF9yZWN5Y2xlX21i dWZzKHJ4X3BvcnRfaWQ9WCwgcnhfcXVldWVfaWQ9WSwgdHhfcG9ydF9pZD1OLCB0eF9xdWV1ZV9p ZD1NLCAuLi4pOzwvZGl2PjxkaXY+Li4uLjwvZGl2PjxkaXY+PGRpdj5ydGVfZXRoX3JlY3ljbGVf bWJ1ZnMocnhfcG9ydF9pZD1YLCByeF9xdWV1ZV9pZD1ZLCB0eF9wb3J0X2lkPU4sIHR4X3F1ZXVl X2lkPUssIC4uLik7PC9kaXY+PC9kaXY+PC9kaXY+PGRpdj7CoDwvZGl2PjxkaXY+SS5FLiBmZWVk IHJ4IHF1ZXVlIGZyb20gMiB0eCBxdWV1ZXM/PC9kaXY+PGRpdj7CoDwvZGl2PjxibG9ja3F1b3Rl PjxwPisgKjxiciAvPisgKiBAcGFyYW0gcnhfcG9ydF9pZDxiciAvPisgKiBQb3J0IGlkZW50aWZ5 aW5nIHRoZSByZWNlaXZlIHNpZGUuPGJyIC8+KyAqIEBwYXJhbSByeF9xdWV1ZV9pZDxiciAvPisg KiBUaGUgaW5kZXggb2YgdGhlIHJlY2VpdmUgcXVldWUgaWRlbnRpZnlpbmcgdGhlIHJlY2VpdmUg c2lkZS48YnIgLz4rICogVGhlIHZhbHVlIG11c3QgYmUgaW4gdGhlIHJhbmdlIFswLCBuYl9yeF9x dWV1ZSAtIDFdIHByZXZpb3VzbHkgc3VwcGxpZWQ8YnIgLz4rICogdG8gcnRlX2V0aF9kZXZfY29u ZmlndXJlKCkuPGJyIC8+KyAqIEBwYXJhbSB0eF9wb3J0X2lkPGJyIC8+KyAqIFBvcnQgaWRlbnRp ZnlpbmcgdGhlIHRyYW5zbWl0IHNpZGUuPGJyIC8+KyAqIEBwYXJhbSB0eF9xdWV1ZV9pZDxiciAv PisgKiBUaGUgaW5kZXggb2YgdGhlIHRyYW5zbWl0IHF1ZXVlIGlkZW50aWZ5aW5nIHRoZSB0cmFu c21pdCBzaWRlLjxiciAvPisgKiBUaGUgdmFsdWUgbXVzdCBiZSBpbiB0aGUgcmFuZ2UgWzAsIG5i X3R4X3F1ZXVlIC0gMV0gcHJldmlvdXNseSBzdXBwbGllZDxiciAvPisgKiB0byBydGVfZXRoX2Rl dl9jb25maWd1cmUoKS48YnIgLz4rICogQHBhcmFtIHJlY3ljbGVfcnhxX2luZm88YnIgLz4rICog QSBwb2ludGVyIHRvIGEgc3RydWN0dXJlIG9mIHR5cGUgKnJ0ZV9ldGhfcmVjeWNsZV9yeHFfaW5m byogd2hpY2ggY29udGFpbnM8YnIgLz4rICogdGhlIGluZm9ybWF0aW9uIG9mIHRoZSBSeCBxdWV1 ZSBtYnVmIHJpbmcuPGJyIC8+KyAqIEByZXR1cm48YnIgLz4rICogVGhlIG51bWJlciBvZiByZWN5 Y2xpbmcgbWJ1ZnMuPGJyIC8+KyAqLzxiciAvPitfX3J0ZV9leHBlcmltZW50YWw8YnIgLz4rc3Rh dGljIGlubGluZSB1aW50MTZfdDxiciAvPitydGVfZXRoX3JlY3ljbGVfbWJ1ZnModWludDE2X3Qg cnhfcG9ydF9pZCwgdWludDE2X3QgcnhfcXVldWVfaWQsPGJyIC8+KyB1aW50MTZfdCB0eF9wb3J0 X2lkLCB1aW50MTZfdCB0eF9xdWV1ZV9pZCw8YnIgLz4rIHN0cnVjdCBydGVfZXRoX3JlY3ljbGVf cnhxX2luZm8gKnJlY3ljbGVfcnhxX2luZm8pPGJyIC8+K3s8IS0tIC0tPjxiciAvPisgc3RydWN0 IHJ0ZV9ldGhfZnBfb3BzICpwOzxiciAvPisgdm9pZCAqcWQ7PGJyIC8+KyB1aW50MTZfdCBuYl9t YnVmczs8YnIgLz4rPGJyIC8+KyNpZmRlZiBSVEVfRVRIREVWX0RFQlVHX1RYPGJyIC8+KyBpZiAo dHhfcG9ydF9pZCAmZ3Q7PSBSVEVfTUFYX0VUSFBPUlRTIHx8PGJyIC8+KyB0eF9xdWV1ZV9pZCAm Z3Q7PSBSVEVfTUFYX1FVRVVFU19QRVJfUE9SVCkgezwhLS0gLS0+PGJyIC8+KyBSVEVfRVRIREVW X0xPRyhFUlIsPGJyIC8+KyAiSW52YWxpZCB0eF9wb3J0X2lkPSV1IG9yIHR4X3F1ZXVlX2lkPSV1 XG4iLDxiciAvPisgdHhfcG9ydF9pZCwgdHhfcXVldWVfaWQpOzxiciAvPisgcmV0dXJuIDA7PGJy IC8+KyB9PGJyIC8+KyNlbmRpZjxiciAvPis8YnIgLz4rIC8qIGZldGNoIHBvaW50ZXIgdG8gcXVl dWUgZGF0YSAqLzxiciAvPisgcCA9ICZhbXA7cnRlX2V0aF9mcF9vcHNbdHhfcG9ydF9pZF07PGJy IC8+KyBxZCA9IHAtJmd0O3R4cS5kYXRhW3R4X3F1ZXVlX2lkXTs8YnIgLz4rPGJyIC8+KyNpZmRl ZiBSVEVfRVRIREVWX0RFQlVHX1RYPGJyIC8+KyBSVEVfRVRIX1ZBTElEX1BPUlRJRF9PUl9FUlJf UkVUKHR4X3BvcnRfaWQsIDApOzxiciAvPis8YnIgLz4rIGlmIChxZCA9PSBOVUxMKSB7PCEtLSAt LT48YnIgLz4rIFJURV9FVEhERVZfTE9HKEVSUiwgIkludmFsaWQgVHggcXVldWVfaWQ9JXUgZm9y IHBvcnRfaWQ9JXVcbiIsPGJyIC8+KyB0eF9xdWV1ZV9pZCwgdHhfcG9ydF9pZCk7PGJyIC8+KyBy ZXR1cm4gMDs8YnIgLz4rIH08YnIgLz4rI2VuZGlmPGJyIC8+KyBpZiAocC0mZ3Q7cmVjeWNsZV90 eF9tYnVmc19yZXVzZSA9PSBOVUxMKTxiciAvPisgcmV0dXJuIDA7PGJyIC8+KzxiciAvPisgLyog Q29weSB1c2VkICpydGVfbWJ1ZiogYnVmZmVyIHBvaW50ZXJzIGZyb20gVHggbWJ1ZiByaW5nPGJy IC8+KyAqIGludG8gUnggbWJ1ZiByaW5nLjxiciAvPisgKi88YnIgLz4rIG5iX21idWZzID0gcC0m Z3Q7cmVjeWNsZV90eF9tYnVmc19yZXVzZShxZCwgcmVjeWNsZV9yeHFfaW5mbyk7PGJyIC8+Kzxi ciAvPisgLyogSWYgbm8gcmVjeWNsaW5nIG1idWZzLCByZXR1cm4gMC4gKi88YnIgLz4rIGlmIChu Yl9tYnVmcyA9PSAwKTxiciAvPisgcmV0dXJuIDA7PGJyIC8+KzxiciAvPisjaWZkZWYgUlRFX0VU SERFVl9ERUJVR19SWDxiciAvPisgaWYgKHJ4X3BvcnRfaWQgJmd0Oz0gUlRFX01BWF9FVEhQT1JU UyB8fDxiciAvPisgcnhfcXVldWVfaWQgJmd0Oz0gUlRFX01BWF9RVUVVRVNfUEVSX1BPUlQpIHs8 IS0tIC0tPjxiciAvPisgUlRFX0VUSERFVl9MT0coRVJSLCAiSW52YWxpZCByeF9wb3J0X2lkPSV1 IG9yIHJ4X3F1ZXVlX2lkPSV1XG4iLDxiciAvPisgcnhfcG9ydF9pZCwgcnhfcXVldWVfaWQpOzxi ciAvPisgcmV0dXJuIDA7PGJyIC8+KyB9PGJyIC8+KyNlbmRpZjxiciAvPis8YnIgLz4rIC8qIGZl dGNoIHBvaW50ZXIgdG8gcXVldWUgZGF0YSAqLzxiciAvPisgcCA9ICZhbXA7cnRlX2V0aF9mcF9v cHNbcnhfcG9ydF9pZF07PGJyIC8+KyBxZCA9IHAtJmd0O3J4cS5kYXRhW3J4X3F1ZXVlX2lkXTs8 YnIgLz4rPGJyIC8+KyNpZmRlZiBSVEVfRVRIREVWX0RFQlVHX1JYPGJyIC8+KyBSVEVfRVRIX1ZB TElEX1BPUlRJRF9PUl9FUlJfUkVUKHJ4X3BvcnRfaWQsIDApOzxiciAvPis8YnIgLz4rIGlmIChx ZCA9PSBOVUxMKSB7PCEtLSAtLT48YnIgLz4rIFJURV9FVEhERVZfTE9HKEVSUiwgIkludmFsaWQg UnggcXVldWVfaWQ9JXUgZm9yIHBvcnRfaWQ9JXVcbiIsPGJyIC8+KyByeF9xdWV1ZV9pZCwgcnhf cG9ydF9pZCk7PGJyIC8+KyByZXR1cm4gMDs8YnIgLz4rIH08YnIgLz4rI2VuZGlmPGJyIC8+Kzxi ciAvPisgaWYgKHAtJmd0O3JlY3ljbGVfcnhfZGVzY3JpcHRvcnNfcmVmaWxsID09IE5VTEwpPGJy IC8+KyByZXR1cm4gMDs8YnIgLz4rPGJyIC8+KyAvKiBSZXBsZW5pc2ggdGhlIFJ4IGRlc2NyaXB0 b3JzIHdpdGggdGhlIHJlY3ljbGluZzxiciAvPisgKiBpbnRvIFJ4IG1idWYgcmluZy48YnIgLz4r ICovPGJyIC8+KyBwLSZndDtyZWN5Y2xlX3J4X2Rlc2NyaXB0b3JzX3JlZmlsbChxZCwgbmJfbWJ1 ZnMpOzxiciAvPis8YnIgLz4rIHJldHVybiBuYl9tYnVmczs8YnIgLz4rfTxiciAvPis8YnIgLz7C oC8qKjxiciAvPsKgwqAqIEB3YXJuaW5nPGJyIC8+wqDCoCogQGIgRVhQRVJJTUVOVEFMOiB0aGlz IEFQSSBtYXkgY2hhbmdlIHdpdGhvdXQgcHJpb3Igbm90aWNlPGJyIC8+ZGlmZiAtLWdpdCBhL2xp Yi9ldGhkZXYvcnRlX2V0aGRldl9jb3JlLmggYi9saWIvZXRoZGV2L3J0ZV9ldGhkZXZfY29yZS5o PGJyIC8+aW5kZXggZGNmOGFkYWI5Mi4uYTJlNmVhNmI2YyAxMDA2NDQ8YnIgLz4tLS0gYS9saWIv ZXRoZGV2L3J0ZV9ldGhkZXZfY29yZS5oPGJyIC8+KysrIGIvbGliL2V0aGRldi9ydGVfZXRoZGV2 X2NvcmUuaDxiciAvPkBAIC01Niw2ICs1NiwxMyBAQCB0eXBlZGVmIGludCAoKmV0aF9yeF9kZXNj cmlwdG9yX3N0YXR1c190KSh2b2lkICpyeHEsIHVpbnQxNl90IG9mZnNldCk7PGJyIC8+wqAvKiog QGludGVybmFsIENoZWNrIHRoZSBzdGF0dXMgb2YgYSBUeCBkZXNjcmlwdG9yICovPGJyIC8+wqB0 eXBlZGVmIGludCAoKmV0aF90eF9kZXNjcmlwdG9yX3N0YXR1c190KSh2b2lkICp0eHEsIHVpbnQx Nl90IG9mZnNldCk7PGJyIC8+wqA8YnIgLz4rLyoqIEBpbnRlcm5hbCBDb3B5IHVzZWQgbWJ1ZnMg ZnJvbSBUeCBtYnVmIHJpbmcgaW50byBSeCBtYnVmIHJpbmcgKi88YnIgLz4rdHlwZWRlZiB1aW50 MTZfdCAoKmV0aF9yZWN5Y2xlX3R4X21idWZzX3JldXNlX3QpKHZvaWQgKnR4cSw8YnIgLz4rIHN0 cnVjdCBydGVfZXRoX3JlY3ljbGVfcnhxX2luZm8gKnJlY3ljbGVfcnhxX2luZm8pOzxiciAvPis8 YnIgLz4rLyoqIEBpbnRlcm5hbCBSZWZpbGwgUnggZGVzY3JpcHRvcnMgd2l0aCB0aGUgcmVjeWNs aW5nIG1idWZzICovPGJyIC8+K3R5cGVkZWYgdm9pZCAoKmV0aF9yZWN5Y2xlX3J4X2Rlc2NyaXB0 b3JzX3JlZmlsbF90KSh2b2lkICpyeHEsIHVpbnQxNl90IG5iKTs8YnIgLz4rPGJyIC8+wqAvKio8 YnIgLz7CoMKgKiBAaW50ZXJuYWw8YnIgLz7CoMKgKiBTdHJ1Y3R1cmUgdXNlZCB0byBob2xkIG9w YXF1ZSBwb2ludGVycyB0byBpbnRlcm5hbCBldGhkZXYgUngvVHg8YnIgLz5AQCAtOTAsOSArOTcs MTEgQEAgc3RydWN0IHJ0ZV9ldGhfZnBfb3BzIHs8IS0tIC0tPjxiciAvPsKgwqDCoMKgwqDCoMKg wqDCoGV0aF9yeF9xdWV1ZV9jb3VudF90IHJ4X3F1ZXVlX2NvdW50OzxiciAvPsKgwqDCoMKgwqDC oMKgwqDCoC8qKiBDaGVjayB0aGUgc3RhdHVzIG9mIGEgUnggZGVzY3JpcHRvci4gKi88YnIgLz7C oMKgwqDCoMKgwqDCoMKgwqBldGhfcnhfZGVzY3JpcHRvcl9zdGF0dXNfdCByeF9kZXNjcmlwdG9y X3N0YXR1czs8YnIgLz4rIC8qKiBSZWZpbGwgUnggZGVzY3JpcHRvcnMgd2l0aCB0aGUgcmVjeWNs aW5nIG1idWZzLiAqLzxiciAvPisgZXRoX3JlY3ljbGVfcnhfZGVzY3JpcHRvcnNfcmVmaWxsX3Qg cmVjeWNsZV9yeF9kZXNjcmlwdG9yc19yZWZpbGw7PC9wPjwvYmxvY2txdW90ZT48ZGl2PkkgYW0g YWZyYWlkIHdlIGNhbid0IHB1dCBuZXcgZmllbGRzIGhlcmUgd2l0aG91dCBBQkkgYnJlYWthZ2Uu PC9kaXY+PGRpdj5JdCBoYXMgdG8gYmUgYmVsb3cgcnhxLjwvZGl2PjxkaXY+Tm93IHRoaW5raW5n IGFib3V0IGN1cnJlbnQgbGF5b3V0IHByb2JhYmx5IG5vdCB0aGUgYmVzdCBvbmUsPC9kaXY+PGRp dj5hbmQgd2hlbiBpbnRyb2R1Y2luZyB0aGlzIHN0cnVjdCwgSSBzaG91bGQgcHJvYmFibHkgcHV0 IHJ4cSBlaXRoZXI8L2Rpdj48ZGl2Pm9uIHRoZSB0b3Agb2YgdGhlIHN0cnVjdCwgb3Igb24gdGhl IG5leHQgY2FjaGUgbGluZS48L2Rpdj48ZGl2PkJ1dCBzdWNoIGNoYW5nZSBpcyBub3QgcG9zc2li bGUgcmlnaHQgbm93IGFueXdheS48L2Rpdj48ZGl2PlNhbWUgc3RvcnkgZm9yIHR4cS48L2Rpdj48 ZGl2PsKgPC9kaXY+PGJsb2NrcXVvdGU+PHA+wqDCoMKgwqDCoMKgwqDCoMKgLyoqIFJ4IHF1ZXVl cyBkYXRhLiAqLzxiciAvPsKgwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBydGVfZXRoZGV2X3FkYXRh IHJ4cTs8YnIgLz4tIHVpbnRwdHJfdCByZXNlcnZlZDFbM107PGJyIC8+KyB1aW50cHRyX3QgcmVz ZXJ2ZWQxWzJdOzxiciAvPsKgwqDCoMKgwqDCoMKgwqDCoC8qKkB9Ki88YnIgLz7CoDxiciAvPsKg wqDCoMKgwqDCoMKgwqDCoC8qKkB7Ki88YnIgLz5AQCAtMTA2LDkgKzExNSwxMSBAQCBzdHJ1Y3Qg cnRlX2V0aF9mcF9vcHMgezwhLS0gLS0+PGJyIC8+wqDCoMKgwqDCoMKgwqDCoMKgZXRoX3R4X3By ZXBfdCB0eF9wa3RfcHJlcGFyZTs8YnIgLz7CoMKgwqDCoMKgwqDCoMKgwqAvKiogQ2hlY2sgdGhl IHN0YXR1cyBvZiBhIFR4IGRlc2NyaXB0b3IuICovPGJyIC8+wqDCoMKgwqDCoMKgwqDCoMKgZXRo X3R4X2Rlc2NyaXB0b3Jfc3RhdHVzX3QgdHhfZGVzY3JpcHRvcl9zdGF0dXM7PGJyIC8+KyAvKiog Q29weSB1c2VkIG1idWZzIGZyb20gVHggbWJ1ZiByaW5nIGludG8gUnguICovPGJyIC8+KyBldGhf cmVjeWNsZV90eF9tYnVmc19yZXVzZV90IHJlY3ljbGVfdHhfbWJ1ZnNfcmV1c2U7PGJyIC8+wqDC oMKgwqDCoMKgwqDCoMKgLyoqIFR4IHF1ZXVlcyBkYXRhLiAqLzxiciAvPsKgwqDCoMKgwqDCoMKg wqDCoHN0cnVjdCBydGVfZXRoZGV2X3FkYXRhIHR4cTs8YnIgLz4tIHVpbnRwdHJfdCByZXNlcnZl ZDJbM107PGJyIC8+KyB1aW50cHRyX3QgcmVzZXJ2ZWQyWzJdOzxiciAvPsKgwqDCoMKgwqDCoMKg wqDCoC8qKkB9Ki88YnIgLz7CoDxiciAvPsKgfSBfX3J0ZV9jYWNoZV9hbGlnbmVkOzxiciAvPmRp ZmYgLS1naXQgYS9saWIvZXRoZGV2L3ZlcnNpb24ubWFwIGIvbGliL2V0aGRldi92ZXJzaW9uLm1h cDxiciAvPmluZGV4IDM1N2QxYTg4YzAuLjQ1YzQxN2Y2YmQgMTAwNjQ0PGJyIC8+LS0tIGEvbGli L2V0aGRldi92ZXJzaW9uLm1hcDxiciAvPisrKyBiL2xpYi9ldGhkZXYvdmVyc2lvbi5tYXA8YnIg Lz5AQCAtMjk5LDYgKzI5OSwxMCBAQCBFWFBFUklNRU5UQUwgezwhLS0gLS0+PGJyIC8+wqDCoMKg wqDCoMKgwqDCoMKgcnRlX2Zsb3dfYWN0aW9uX2hhbmRsZV9xdWVyeV91cGRhdGU7PGJyIC8+wqDC oMKgwqDCoMKgwqDCoMKgcnRlX2Zsb3dfYXN5bmNfYWN0aW9uX2hhbmRsZV9xdWVyeV91cGRhdGU7 PGJyIC8+wqDCoMKgwqDCoMKgwqDCoMKgcnRlX2Zsb3dfYXN5bmNfY3JlYXRlX2J5X2luZGV4Ozxi ciAvPis8YnIgLz4rICMgYWRkZWQgaW4gMjMuMDc8YnIgLz4rIHJ0ZV9ldGhfcmVjeWNsZV9tYnVm czs8YnIgLz4rIHJ0ZV9ldGhfcmVjeWNsZV9yeF9xdWV1ZV9pbmZvX2dldDs8YnIgLz7CoH07PGJy IC8+wqA8YnIgLz7CoElOVEVSTkFMIHs8IS0tIC0tPjwvcD4tLTxiciAvPjIuMjUuMTxiciAvPsKg PC9ibG9ja3F1b3RlPg==