Received: by 10.223.185.116 with SMTP id b49csp8206822wrg; Thu, 1 Mar 2018 19:58:37 -0800 (PST) X-Google-Smtp-Source: AG47ELusC4k9V0o22we74LWe/+4swuBG7Cww4UtqP//gxeN+xObqtr880grWOaZm+nnhlAVQW3pT X-Received: by 2002:a17:902:a5c2:: with SMTP id t2-v6mr1037813plq.244.1519963117660; Thu, 01 Mar 2018 19:58:37 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1519963117; cv=none; d=google.com; s=arc-20160816; b=Y+3J+tiQ2dd49uD5lbvCJoOd356OK8AvkzF0jtDzG3K3kjV0HQC2Igm2hMNSmJqIlw x+gZHOUFPZZRV+DvgjWGDfM87O+6YyU3ozNYc538Cnmfph5hnpklUmJTjaBN6jKZhSzX YTWrNVg1HnPU+m0Jz7PkTutm+BCwQq8QGoLztl5lFnYh2ZoPmpBONA5mv6JZS/5yatYU h5XWFeA9OsliIEHtZO+v6FIvZJskSmaYo1+rEnZtqLm4tm/p2JnlmM+SR76BV7BDdQuo g9ROT+xrDtbnGhQ0w/IzKInLqi4mfv+5Xy/uuY4LhIrH+3puMiWvSi52gUfmus2FUnWp +g3A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:msscp.transfermailtomossagent :mime-version:content-transfer-encoding:spamdiagnosticmetadata :spamdiagnosticoutput:content-language:accept-language:in-reply-to :references:message-id:date:thread-index:thread-topic:subject:to :from:dkim-signature:arc-authentication-results; bh=DHxjrTtP+MRR8khGrap8RCiHxsWkFUy4vuyf8Vn/yF4=; b=mIX/Vc8Gdi8YrmlUtZ8krVVy3ef+x8o6PjRYbkmWFW4l+yj0FRlgG62ZWRuXpuLACM 7aYqxudoYn3qlN1FnXvaA2UaREiuQJXviGe81HI2gRj0yxj0kfG4DEGNRCKNC/ZR4qGl Abe9Xdf7hfdfoYkbaBhQbztf4fYIdDvlGFiliTQW6HGZ2lVPJEl7UGUAnyR89Fv6ItN4 VBE5DCZOUup5W2OEVNrL7Ak0eq/YX3NdC07h1p38C2H2hNxRwTm6shFDzqVSdIiFNPLv pOwitZqZBJpKVjNDsT6+d9KpF6C1mxRrgqO8HUUwhO6AgXcwalnEikG7r+vy3+KPPvD8 wZqQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@toshibaap.onmicrosoft.com header.s=selector1-toshiba-co-jp header.b=2RF2xruy; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=toshiba.co.jp Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id n18si4148199pfj.58.2018.03.01.19.58.23; Thu, 01 Mar 2018 19:58:37 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@toshibaap.onmicrosoft.com header.s=selector1-toshiba-co-jp header.b=2RF2xruy; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=toshiba.co.jp Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1164610AbeCBD5o (ORCPT + 99 others); Thu, 1 Mar 2018 22:57:44 -0500 Received: from mo1501.tsb.2iij.net ([210.149.48.173]:42464 "EHLO mo.tsb.2iij.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1164329AbeCBD5h (ORCPT ); Thu, 1 Mar 2018 22:57:37 -0500 Received: by mo.tsb.2iij.net (tsb-mo1501) id w223vNU7011036; Fri, 2 Mar 2018 12:57:23 +0900 Received: from unknown [172.27.153.190] (EHLO tsb-mr1502.hop.2iij.net) by mas1511.tsb.2iij.net(mxl_mta-7.2.4-7) with ESMTP id 3abc89a5.0.103990.00-539.208805.mas1511.tsb.2iij.net (envelope-from ); Fri, 02 Mar 2018 12:57:23 +0900 (JST) X-MXL-Hash: 5a98cba36ae190ee-d572c1c5cd65ef5b83a72174a98571147f3117d8 Received: from imx12.toshiba.co.jp (imx12.toshiba.co.jp [61.202.160.132]) by relay.tsb.2iij.net (tsb-mr1502) with ESMTP id w223vMHh005832; Fri, 2 Mar 2018 12:57:22 +0900 Received: from tsbmgw-mgw01.tsbmgw-mgw01.toshiba.co.jp ([133.199.232.103]) by imx12.toshiba.co.jp with ESMTP id w223vMeW023289 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Fri, 2 Mar 2018 12:57:22 +0900 (JST) Received: from tsbmgw-mgw01 (localhost [127.0.0.1]) by tsbmgw-mgw01.tsbmgw-mgw01.toshiba.co.jp (8.13.8/8.14.5) with ESMTP id w223vMYh031015; Fri, 2 Mar 2018 12:57:22 +0900 Received: from localhost ([127.0.0.1]) by tsbmgw-mgw01 (JAMES SMTP Server 2.3.1) with SMTP ID 635; Fri, 2 Mar 2018 12:57:22 +0900 (JST) Received: from arc11.toshiba.co.jp ([133.199.90.127]) by tsbmgw-mgw01.tsbmgw-mgw01.toshiba.co.jp (8.13.8/8.14.5) with ESMTP id w223vLq0031012; Fri, 2 Mar 2018 12:57:21 +0900 Received: (from root@localhost) by arc11.toshiba.co.jp id w223vLrh010003; Fri, 2 Mar 2018 12:57:21 +0900 (JST) Received: from ovp11.toshiba.co.jp [133.199.90.148] by arc11.toshiba.co.jp with ESMTP id NAA10000; Fri, 2 Mar 2018 12:57:21 +0900 Received: from mx12.toshiba.co.jp (mx12.toshiba.co.jp [133.199.90.142]) by ovp11.toshiba.co.jp with ESMTP id w223vLf3001406; Fri, 2 Mar 2018 12:57:21 +0900 (JST) Received: from tgxml230.toshiba.local by toshiba.co.jp id w223vLmM020433; Fri, 2 Mar 2018 12:57:21 +0900 (JST) Received: from TGXML379.toshiba.local (10.51.120.10) by tgxml230.toshiba.local (133.199.62.21) with Microsoft SMTP Server (TLS) id 14.3.352.0; Fri, 2 Mar 2018 12:57:20 +0900 Received: from TGXML363.toshiba.local (133.199.130.69) by TGXML379.toshiba.local (10.51.120.10) with Microsoft SMTP Server (TLS) id 15.0.1347.2; Fri, 2 Mar 2018 12:57:20 +0900 Received: from JPN01-OS2-obe.outbound.protection.outlook.com (23.103.139.146) by stsap1.toshiba.co.jp (106.186.93.92) with Microsoft SMTP Server (TLS) id 15.0.1347.2; Fri, 2 Mar 2018 12:57:20 +0900 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=toshibaap.onmicrosoft.com; s=selector1-toshiba-co-jp; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=DHxjrTtP+MRR8khGrap8RCiHxsWkFUy4vuyf8Vn/yF4=; b=2RF2xruyJMnbJlqq+KPZ/Ws66/21kQlTso3gpcnH5oTanZPKY6xYMSHVgENnRZ3bQPcrVpoQUK8QmPRWrgFeJHi1SkNdnsBfn3IhuQyYxv3PxQoDmSkFJcOUfwlKq6lYwkMSxP8D73UdeTJQrCydz8nJPvCdqzqyLFPW9HOUpgQ= Received: from TYXPR01MB1854.jpnprd01.prod.outlook.com (52.133.165.147) by TYXPR01MB1616.jpnprd01.prod.outlook.com (52.133.167.15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.548.13; Fri, 2 Mar 2018 03:57:19 +0000 Received: from TYXPR01MB1854.jpnprd01.prod.outlook.com ([fe80::ac24:4f62:7706:ea14]) by TYXPR01MB1854.jpnprd01.prod.outlook.com ([fe80::ac24:4f62:7706:ea14%13]) with mapi id 15.20.0548.014; Fri, 2 Mar 2018 03:57:19 +0000 From: To: , , , , Subject: RE: [RFC v2 1/2] WhiteEgret: Add WhiteEgret core functions. Thread-Topic: [RFC v2 1/2] WhiteEgret: Add WhiteEgret core functions. Thread-Index: AQHTsXQMYobdO7JaGkut+ZrsdYcRG6O8QdAg Date: Fri, 2 Mar 2018 03:57:19 +0000 Message-ID: References: <20180301073830.2551-1-masanobu2.koike@toshiba.co.jp> <458a466a-78bc-80d4-4d52-64b92d39f416@schaufler-ca.com> In-Reply-To: <458a466a-78bc-80d4-4d52-64b92d39f416@schaufler-ca.com> Accept-Language: ja-JP, en-US Content-Language: ja-JP authentication-results: spf=none (sender IP is ) smtp.mailfrom=masanobu2.koike@toshiba.co.jp; x-originating-ip: [103.91.184.161] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1;TYXPR01MB1616;7:NZ3nmtMLu0lNV+AwegkPrDUkmqaBQSNXNx+/EYiqArJQ/IawMBqHOGlTjBcCHtFTtUr+pmVItYwbZthXgV5qXpgF+n9R45bLQ1NjhIac2WNVRyIwZBe0AL8eKAbBKV+UuQzkr/RfsLU7tPoylW2eXnpOdaetrXCEEVxSekeoM5AA/dgc/oR6kgKaWWyOcOBRS/MEhLg0SEeon2XjYurrUwYAVfUApMKd97k82cKAPIfuZCjB9WWtGwx6KWyMwZAd x-ms-exchange-antispam-srfa-diagnostics: SSOS; x-ms-office365-filtering-correlation-id: 021df98f-3b33-47b4-1f0b-08d57ff1b1f2 x-microsoft-antispam: UriScan:;BCL:0;PCL:0;RULEID:(7020095)(4652020)(5600026)(4604075)(3008032)(4534165)(4627221)(201703031133081)(201702281549075)(2017052603307)(7153060)(7193020);SRVR:TYXPR01MB1616; x-ms-traffictypediagnostic: TYXPR01MB1616: x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(192374486261705)(9452136761055); x-exchange-antispam-report-cfa-test: BCL:0;PCL:0;RULEID:(8211001083)(6040501)(2401047)(5005006)(8121501046)(10201501046)(3002001)(3231220)(944501235)(52105095)(93006095)(93001095)(6041288)(20161123564045)(20161123562045)(20161123558120)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011);SRVR:TYXPR01MB1616;BCL:0;PCL:0;RULEID:;SRVR:TYXPR01MB1616; x-forefront-prvs: 05991796DF x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(39860400002)(396003)(39380400002)(376002)(366004)(346002)(51234002)(189003)(199004)(53546011)(478600001)(105586002)(81166006)(316002)(2201001)(8676002)(86362001)(6436002)(305945005)(7696005)(102836004)(3660700001)(33656002)(14454004)(966005)(81156014)(59450400001)(76176011)(97736004)(110136005)(9686003)(6506007)(25786009)(106356001)(6246003)(74316002)(66066001)(74482002)(3280700002)(5250100002)(2950100002)(229853002)(2501003)(2906002)(6116002)(16200700003)(8936002)(6306002)(3846002)(345774005)(53946003)(26005)(53936002)(68736007)(5660300001)(186003)(99286004)(55016002)(7736002)(2900100001)(2004002)(559001)(579004)(569006);DIR:OUT;SFP:1101;SCL:1;SRVR:TYXPR01MB1616;H:TYXPR01MB1854.jpnprd01.prod.outlook.com;FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; received-spf: None (protection.outlook.com: toshiba.co.jp does not designate permitted sender hosts) x-microsoft-antispam-message-info: SNekNt+vOSU1VBbAxT7RM8bHFtjVbfUyAjI48Zfy8T9baYgErOv56XRwCtkFtxIkiIQ0EH2fgFcJDe3x5k3p6ywMOIW4ablbb0ZRIin+dpn91rKrR6tJMNBt3imAjryK5P0dD6SHdj+gh3UK8sCR9Mhhcav1I5KrAL4xmhcjO68= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-Network-Message-Id: 021df98f-3b33-47b4-1f0b-08d57ff1b1f2 X-MS-Exchange-CrossTenant-originalarrivaltime: 02 Mar 2018 03:57:19.1292 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: f109924e-fb71-4ba0-b2cc-65dcdf6fbe4f X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYXPR01MB1616 MSSCP.TransferMailToMossAgent: 103 X-OriginatorOrg: toshiba.co.jp X-MAIL-FROM: X-SOURCE-IP: [172.27.153.190] X-Spam: exempt Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org DQpPbiBGcmlkYXksIE1hcmNoIDAyLCAyMDE4IDEyOjQzIEFNLCBDYXNleSBTY2hhdWZsZXIgd3Jv dGU6DQo+IE9uIDIvMjgvMjAxOCAxMTozOCBQTSwgTWFzYW5vYnUgS29pa2Ugd3JvdGU6DQo+ID4g VGhpcyBSRkMgcHJvdmlkZXMgaW1wbGVtZW50YXRpb24gb2YgV2hpdGVFZ3JldC4NCj4gPg0KPiA+ IFNpZ25lZC1vZmYtYnk6IE1hc2Fub2J1IEtvaWtlIDxtYXNhbm9idTIua29pa2VAdG9zaGliYS5j by5qcD4NCj4gPiAtLS0NCj4gPiAgc2VjdXJpdHkvS2NvbmZpZyAgICAgICAgICAgICAgICAgICB8 ICAgNiArDQo+ID4gIHNlY3VyaXR5L01ha2VmaWxlICAgICAgICAgICAgICAgICAgfCAgIDIgKw0K PiA+ICBzZWN1cml0eS93aGl0ZWVncmV0L0tjb25maWcgICAgICAgIHwgIDExICsrDQo+ID4gIHNl Y3VyaXR5L3doaXRlZWdyZXQvTWFrZWZpbGUgICAgICAgfCAgIDIgKw0KPiA+ICBzZWN1cml0eS93 aGl0ZWVncmV0L2luaXQuYyAgICAgICAgIHwgIDc1ICsrKysrKysrKysNCj4gPiAgc2VjdXJpdHkv d2hpdGVlZ3JldC9tYWluLmMgICAgICAgICB8IDI1MQ0KPiArKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysNCj4gPiAgc2VjdXJpdHkvd2hpdGVlZ3JldC9yZXF1ZXN0LmMgICAgICB8IDE1 MSArKysrKysrKysrKysrKysrKysrKw0KPiA+ICBzZWN1cml0eS93aGl0ZWVncmV0L3JlcXVlc3Qu aCAgICAgIHwgIDUyICsrKysrKysNCj4gPiAgc2VjdXJpdHkvd2hpdGVlZ3JldC93ZS5oICAgICAg ICAgICB8ICA2NiArKysrKysrKysNCj4gPiAgc2VjdXJpdHkvd2hpdGVlZ3JldC93ZV9mcy5jICAg ICAgICB8IDI4MA0KPiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQo+ID4g IHNlY3VyaXR5L3doaXRlZWdyZXQvd2VfZnMuaCAgICAgICAgfCAgMjMgKysrDQo+ID4gIHNlY3Vy aXR5L3doaXRlZWdyZXQvd2VfZnNfY29tbW9uLmggfCAgMzYgKysrKysNCj4gPiAgMTIgZmlsZXMg Y2hhbmdlZCwgOTU1IGluc2VydGlvbnMoKykNCj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHNlY3Vy aXR5L3doaXRlZWdyZXQvS2NvbmZpZw0KPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgc2VjdXJpdHkv d2hpdGVlZ3JldC9NYWtlZmlsZQ0KPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgc2VjdXJpdHkvd2hp dGVlZ3JldC9pbml0LmMNCj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHNlY3VyaXR5L3doaXRlZWdy ZXQvbWFpbi5jDQo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBzZWN1cml0eS93aGl0ZWVncmV0L3Jl cXVlc3QuYw0KPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgc2VjdXJpdHkvd2hpdGVlZ3JldC9yZXF1 ZXN0LmgNCj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHNlY3VyaXR5L3doaXRlZWdyZXQvd2UuaA0K PiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgc2VjdXJpdHkvd2hpdGVlZ3JldC93ZV9mcy5jDQo+ID4g IGNyZWF0ZSBtb2RlIDEwMDY0NCBzZWN1cml0eS93aGl0ZWVncmV0L3dlX2ZzLmgNCj4gPiAgY3Jl YXRlIG1vZGUgMTAwNjQ0IHNlY3VyaXR5L3doaXRlZWdyZXQvd2VfZnNfY29tbW9uLmgNCj4gPg0K PiA+IGRpZmYgLS1naXQgYS9zZWN1cml0eS9LY29uZmlnIGIvc2VjdXJpdHkvS2NvbmZpZw0KPiA+ IGluZGV4IGM0MzAyMDY3YTNhZC4uZjE3ZmVmZWNhZjg0IDEwMDY0NA0KPiA+IC0tLSBhL3NlY3Vy aXR5L0tjb25maWcNCj4gPiArKysgYi9zZWN1cml0eS9LY29uZmlnDQo+ID4gQEAgLTIzNyw2ICsy MzcsNyBAQCBzb3VyY2Ugc2VjdXJpdHkvdG9tb3lvL0tjb25maWcNCj4gPiAgc291cmNlIHNlY3Vy aXR5L2FwcGFybW9yL0tjb25maWcNCj4gPiAgc291cmNlIHNlY3VyaXR5L2xvYWRwaW4vS2NvbmZp Zw0KPiA+ICBzb3VyY2Ugc2VjdXJpdHkveWFtYS9LY29uZmlnDQo+ID4gK3NvdXJjZSBzZWN1cml0 eS93aGl0ZWVncmV0L0tjb25maWcNCj4gPg0KPiA+ICBzb3VyY2Ugc2VjdXJpdHkvaW50ZWdyaXR5 L0tjb25maWcNCj4gPg0KPiA+IEBAIC0yNDYsNiArMjQ3LDcgQEAgY2hvaWNlDQo+ID4gIAlkZWZh dWx0IERFRkFVTFRfU0VDVVJJVFlfU01BQ0sgaWYgU0VDVVJJVFlfU01BQ0sNCj4gPiAgCWRlZmF1 bHQgREVGQVVMVF9TRUNVUklUWV9UT01PWU8gaWYgU0VDVVJJVFlfVE9NT1lPDQo+ID4gIAlkZWZh dWx0IERFRkFVTFRfU0VDVVJJVFlfQVBQQVJNT1IgaWYgU0VDVVJJVFlfQVBQQVJNT1INCj4gPiAr CWRlZmF1bHQgREVGQVVMVF9TRUNVUklUWV9XSElURUVHUkVUIGlmIFNFQ1VSSVRZX1dISVRFRUdS RVQNCj4gPiAgCWRlZmF1bHQgREVGQVVMVF9TRUNVUklUWV9EQUMNCj4gPg0KPiA+ICAJaGVscA0K PiA+IEBAIC0yNjQsNiArMjY2LDkgQEAgY2hvaWNlDQo+ID4gIAljb25maWcgREVGQVVMVF9TRUNV UklUWV9BUFBBUk1PUg0KPiA+ICAJCWJvb2wgIkFwcEFybW9yIiBpZiBTRUNVUklUWV9BUFBBUk1P Uj15DQo+ID4NCj4gPiArCWNvbmZpZyBERUZBVUxUX1NFQ1VSSVRZX1dISVRFRUdSRVQNCj4gPiAr CQlib29sICJXaGl0ZUVncmV0IiBpZiBTRUNVUklUWV9XSElURUVHUkVUPXkNCj4gPiArDQo+IA0K PiBJIGRvbid0IHNlZSB0aGlzIG1vZHVsZSB1c2luZyBhbnkgc2VjdXJpdHkgYmxvYnMuIElzIHRo ZXJlDQo+IGEgcmVhc29uIHlvdSdyZSBub3QgbWFraW5nIHRoaXMgYSBtaW5vciAobGlrZSB5YW1h KSBtb2R1bGUNCj4gaW5zdGVhZCBvZiBhIG1ham9yIChsaWtlIEFwcEFybW9yKSBtb2R1bGU/DQoN ClRoYW5rIHlvdSBmb3IgeW91ciBzdWdnZXN0aW9uLg0KV2UgYXJlIG5vdyBkZXZlbG9waW5nIFdo aXRlRWdyZXQgb24gdGhlIGVudmlyb25tZW50DQppdCB3b3JrcyBjZXJ0YWlubHkuDQoNCk1hc2Fu b2J1IEtvaWtlDQoNCj4gDQo+ID4gIAljb25maWcgREVGQVVMVF9TRUNVUklUWV9EQUMNCj4gPiAg CQlib29sICJVbml4IERpc2NyZXRpb25hcnkgQWNjZXNzIENvbnRyb2xzIg0KPiA+DQo+ID4gQEAg LTI3NSw2ICsyODAsNyBAQCBjb25maWcgREVGQVVMVF9TRUNVUklUWQ0KPiA+ICAJZGVmYXVsdCAi c21hY2siIGlmIERFRkFVTFRfU0VDVVJJVFlfU01BQ0sNCj4gPiAgCWRlZmF1bHQgInRvbW95byIg aWYgREVGQVVMVF9TRUNVUklUWV9UT01PWU8NCj4gPiAgCWRlZmF1bHQgImFwcGFybW9yIiBpZiBE RUZBVUxUX1NFQ1VSSVRZX0FQUEFSTU9SDQo+ID4gKwlkZWZhdWx0ICJ3aGl0ZWVncmV0IiBpZiBE RUZBVUxUX1NFQ1VSSVRZX1dISVRFRUdSRVQNCj4gPiAgCWRlZmF1bHQgIiIgaWYgREVGQVVMVF9T RUNVUklUWV9EQUMNCj4gPg0KPiA+ICBlbmRtZW51DQo+ID4gZGlmZiAtLWdpdCBhL3NlY3VyaXR5 L01ha2VmaWxlIGIvc2VjdXJpdHkvTWFrZWZpbGUNCj4gPiBpbmRleCA0ZDJkMzc4MmRkZWYuLjNh ODI0OWM3NzI4OCAxMDA2NDQNCj4gPiAtLS0gYS9zZWN1cml0eS9NYWtlZmlsZQ0KPiA+ICsrKyBi L3NlY3VyaXR5L01ha2VmaWxlDQo+ID4gQEAgLTEwLDYgKzEwLDcgQEAgc3ViZGlyLSQoQ09ORklH X1NFQ1VSSVRZX1RPTU9ZTykgICAgICAgICs9IHRvbW95bw0KPiA+ICBzdWJkaXItJChDT05GSUdf U0VDVVJJVFlfQVBQQVJNT1IpCSs9IGFwcGFybW9yDQo+ID4gIHN1YmRpci0kKENPTkZJR19TRUNV UklUWV9ZQU1BKQkJKz0geWFtYQ0KPiA+ICBzdWJkaXItJChDT05GSUdfU0VDVVJJVFlfTE9BRFBJ TikJKz0gbG9hZHBpbg0KPiA+ICtzdWJkaXItJChDT05GSUdfU0VDVVJJVFlfV0hJVEVFR1JFVCkJ Kz0gd2hpdGVlZ3JldA0KPiA+DQo+ID4gICMgYWx3YXlzIGVuYWJsZSBkZWZhdWx0IGNhcGFiaWxp dGllcw0KPiA+ICBvYmoteQkJCQkJKz0gY29tbW9uY2FwLm8NCj4gPiBAQCAtMjUsNiArMjYsNyBA QCBvYmotJChDT05GSUdfU0VDVVJJVFlfVE9NT1lPKQkJKz0NCj4gdG9tb3lvLw0KPiA+ICBvYmot JChDT05GSUdfU0VDVVJJVFlfQVBQQVJNT1IpCQkrPSBhcHBhcm1vci8NCj4gPiAgb2JqLSQoQ09O RklHX1NFQ1VSSVRZX1lBTUEpCQkrPSB5YW1hLw0KPiA+ICBvYmotJChDT05GSUdfU0VDVVJJVFlf TE9BRFBJTikJCSs9IGxvYWRwaW4vDQo+ID4gK29iai0kKENPTkZJR19TRUNVUklUWV9XSElURUVH UkVUKQkrPSB3aGl0ZWVncmV0Lw0KPiA+ICBvYmotJChDT05GSUdfQ0dST1VQX0RFVklDRSkJCSs9 IGRldmljZV9jZ3JvdXAubw0KPiA+DQo+ID4gICMgT2JqZWN0IGludGVncml0eSBmaWxlIGxpc3Rz DQo+ID4gZGlmZiAtLWdpdCBhL3NlY3VyaXR5L3doaXRlZWdyZXQvS2NvbmZpZyBiL3NlY3VyaXR5 L3doaXRlZWdyZXQvS2NvbmZpZw0KPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXgg MDAwMDAwMDAwMDAwLi4zMjg0NTk3Nzc0NWYNCj4gPiAtLS0gL2Rldi9udWxsDQo+ID4gKysrIGIv c2VjdXJpdHkvd2hpdGVlZ3JldC9LY29uZmlnDQo+ID4gQEAgLTAsMCArMSwxMSBAQA0KPiA+ICtj b25maWcgU0VDVVJJVFlfV0hJVEVFR1JFVA0KPiA+ICsgICAgICAgIGJvb2wgIldoaXRlRWdyZXQg c3VwcG9ydCINCj4gPiArICAgICAgICBkZXBlbmRzIG9uIFNFQ1VSSVRZDQo+ID4gKyAgICAgICAg ZGVmYXVsdCBuDQo+ID4gKyAgICAgICAgaGVscA0KPiA+ICsJICBUaGlzIGVuYWJsZXMgdGhlIFdo aXRlRWdyZXQgc2VjdXJpdHkgbW9kdWxlLg0KPiA+ICsJICBXaGl0ZUVncmV0IHByb3ZpZGVzIGEg d2hpdGVsaXN0aW5nIGV4ZWN1dGlvbiBjb250cm9sDQo+IGNhcGFiaWxpdHksDQo+ID4gKwkgIHdo aWNoIGhlbHBzIHN0b3AgdGhlIGV4ZWN1dGlvbiBvZiB1bmF1dGhvcml6ZWQgc29mdHdhcmUNCj4g PiArCSAgc3VjaCBhcyBtYWx3YXJlLg0KPiA+ICsJICBZb3Ugd2lsbCBhbHNvIG5lZWQgYSB1c2Vy IGFwcGxpY2F0aW9uIGFuZCBhbiBleGVjdXRpb24gd2hpdGVsaXN0Lg0KPiA+ICsgICAgICAgICAg SWYgeW91IGFyZSB1bnN1cmUgaG93IHRvIGFuc3dlciB0aGlzIHF1ZXN0aW9uLCBhbnN3ZXIgTi4N Cj4gPiBkaWZmIC0tZ2l0IGEvc2VjdXJpdHkvd2hpdGVlZ3JldC9NYWtlZmlsZQ0KPiBiL3NlY3Vy aXR5L3doaXRlZWdyZXQvTWFrZWZpbGUNCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGlu ZGV4IDAwMDAwMDAwMDAwMC4uMTZiZDNhZmQ5MzI0DQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsr KyBiL3NlY3VyaXR5L3doaXRlZWdyZXQvTWFrZWZpbGUNCj4gPiBAQCAtMCwwICsxLDIgQEANCj4g PiArb2JqLSQoQ09ORklHX1NFQ1VSSVRZX1dISVRFRUdSRVQpICs9IHdoaXRlZWdyZXQubw0KPiA+ ICt3aGl0ZWVncmV0LXkgOj0gaW5pdC5vIG1haW4ubyByZXF1ZXN0Lm8gd2VfZnMubw0KPiA+IGRp ZmYgLS1naXQgYS9zZWN1cml0eS93aGl0ZWVncmV0L2luaXQuYyBiL3NlY3VyaXR5L3doaXRlZWdy ZXQvaW5pdC5jDQo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiBpbmRleCAwMDAwMDAwMDAw MDAuLjM2OTFjY2E2YmMyNw0KPiA+IC0tLSAvZGV2L251bGwNCj4gPiArKysgYi9zZWN1cml0eS93 aGl0ZWVncmV0L2luaXQuYw0KPiA+IEBAIC0wLDAgKzEsNzUgQEANCj4gPiArLyoNCj4gPiArICog V2hpdGVFZ3JldCBMaW51eCBTZWN1cml0eSBNb2R1bGUNCj4gPiArICoNCj4gPiArICogQ29weXJp Z2h0IChDKSAyMDE3LTIwMTggVG9zaGliYSBDb3Jwb3JhdGlvbg0KPiA+ICsgKg0KPiA+ICsgKiBU aGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k L29yDQo+ID4gKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlDQo+ID4gKyAqIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uLCB2ZXJzaW9uIDIuDQo+ID4gKyAqLw0KPiA+ICsNCj4gPiArI2RlZmluZSBw cl9mbXQoZm10KSAiV2hpdGVFZ3JldDogIiBmbXQNCj4gPiArDQo+ID4gKyNpbmNsdWRlIDxsaW51 eC9rZXJuZWwuaD4NCj4gPiArI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPg0KPiA+ICsjaW5jbHVk ZSA8bGludXgvc2NoZWQuaD4NCj4gPiArI2luY2x1ZGUgPGxpbnV4L3NlY3VyaXR5Lmg+DQo+ID4g KyNpbmNsdWRlIDxsaW51eC9mcy5oPg0KPiA+ICsjaW5jbHVkZSAid2UuaCINCj4gPiArDQo+ID4g KyNpbmNsdWRlIDxsaW51eC9sc21faG9va3MuaD4NCj4gPiArDQo+ID4gK01PRFVMRV9MSUNFTlNF KCJHUEwiKTsNCj4gPiArTU9EVUxFX0RFU0NSSVBUSU9OKCJXaGl0ZUVncmV0IExpbnV4IFNlY3Vy aXR5IE1vZHVsZSIpOw0KPiA+ICsNCj4gPiArc3RhdGljIGludCB3ZV9zZWN1cml0eV9icHJtX2No ZWNrKHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0pDQo+ID4gK3sNCj4gPiArCWlmICh3ZV9zZWN1 cml0eV9icHJtX2NoZWNrX21haW4oYnBybSkgPT0gLUVBQ0NFUykNCj4gPiArCQlyZXR1cm4gLUVB Q0NFUzsNCj4gPiArDQo+ID4gKwlyZXR1cm4gMDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGlj IGludCB3ZV9zZWN1cml0eV9tbWFwX2NoZWNrKHN0cnVjdCBmaWxlICpmaWxlLCB1bnNpZ25lZCBs b25nDQo+IHJlcXByb3QsDQo+ID4gKwkJdW5zaWduZWQgbG9uZyBwcm90LCB1bnNpZ25lZCBsb25n IGZsYWdzKQ0KPiA+ICt7DQo+ID4gKwlpZiAod2Vfc2VjdXJpdHlfbW1hcF9jaGVja19tYWluKGZp bGUsIHJlcXByb3QsIGZsYWdzKSA9PSAtRUFDQ0VTKQ0KPiA+ICsJCXJldHVybiAtRUFDQ0VTOw0K PiA+ICsNCj4gPiArCXJldHVybiAwOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgc3RydWN0 IHNlY3VyaXR5X2hvb2tfbGlzdCB3ZV9ob29rc1tdID0gew0KPiA+ICsJTFNNX0hPT0tfSU5JVChi cHJtX2NoZWNrX3NlY3VyaXR5LCB3ZV9zZWN1cml0eV9icHJtX2NoZWNrKSwNCj4gPiArCUxTTV9I T09LX0lOSVQobW1hcF9maWxlLCB3ZV9zZWN1cml0eV9tbWFwX2NoZWNrKSwNCj4gPiArfTsNCj4g PiArDQo+ID4gK3N0YXRpYyBpbnQgX19pbml0IHdlX2luaXQodm9pZCkNCj4gPiArew0KPiA+ICsJ aW50IHJjOw0KPiA+ICsNCj4gPiArCWlmICghc2VjdXJpdHlfbW9kdWxlX2VuYWJsZSgid2hpdGVl Z3JldCIpKQ0KPiA+ICsJCXJldHVybiAwOw0KPiA+ICsNCj4gPiArCXNlY3VyaXR5X2FkZF9ob29r cyh3ZV9ob29rcywgQVJSQVlfU0laRSh3ZV9ob29rcyksDQo+ICJ3aGl0ZWVncmV0Iik7DQo+ID4g Kw0KPiA+ICsJcmMgPSB3ZV9zcGVjaWZpY19pbml0KCk7DQo+ID4gKwlpZiAocmMpIHsNCj4gPiAr CQlwcl9lcnIoImVycm9yICVkIGF0ICVkIGluICVzXG4iLCByYywgX19MSU5FX18sIF9fRklMRV9f KTsNCj4gPiArCQlyZXR1cm4gcmM7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJcHJfd2FybigiV2hp dGVFZ3JldCAoTFNNKSBpbml0aWFsaXplZC5cbiIpOw0KPiA+ICsNCj4gPiArCXJldHVybiAwOw0K PiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgdm9pZCBfX2V4aXQgd2VfZXhpdCh2b2lkKQ0KPiA+ ICt7DQo+ID4gKwl3ZV9zcGVjaWZpY19leGl0KCk7DQo+ID4gKw0KPiA+ICsJcHJfd2FybigiV2hp dGVFZ3JldCAoTFNNKSBleGl0ZWQuXG4iKTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArbW9kdWxlX2lu aXQod2VfaW5pdCk7DQo+ID4gK21vZHVsZV9leGl0KHdlX2V4aXQpOw0KPiA+IGRpZmYgLS1naXQg YS9zZWN1cml0eS93aGl0ZWVncmV0L21haW4uYyBiL3NlY3VyaXR5L3doaXRlZWdyZXQvbWFpbi5j DQo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiBpbmRleCAwMDAwMDAwMDAwMDAuLmY2MGUx ZDMyNTAxMQ0KPiA+IC0tLSAvZGV2L251bGwNCj4gPiArKysgYi9zZWN1cml0eS93aGl0ZWVncmV0 L21haW4uYw0KPiA+IEBAIC0wLDAgKzEsMjUxIEBADQo+ID4gKy8qDQo+ID4gKyAqIFdoaXRlRWdy ZXQgTGludXggU2VjdXJpdHkgTW9kdWxlDQo+ID4gKyAqDQo+ID4gKyAqIENvcHlyaWdodCAoQykg MjAxNy0yMDE4IFRvc2hpYmEgQ29ycG9yYXRpb24NCj4gPiArICoNCj4gPiArICogVGhpcyBwcm9n cmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcg0KPiA+ ICsgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZQ0KPiA+ICsgKiBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwgdmVyc2lvbiAyLg0KPiA+ICsgKi8NCj4gPiArDQo+ID4gKyNkZWZpbmUgcHJfZm10KGZt dCkgIldoaXRlRWdyZXQ6ICIgZm10DQo+ID4gKw0KPiA+ICsjaW5jbHVkZSA8bGludXgva2VybmVs Lmg+DQo+ID4gKyNpbmNsdWRlIDxsaW51eC9zZW1hcGhvcmUuaD4NCj4gPiArI2luY2x1ZGUgPGxp bnV4L2JpbmZtdHMuaD4NCj4gPiArI2luY2x1ZGUgPGxpbnV4L2RjYWNoZS5oPg0KPiA+ICsjaW5j bHVkZSA8bGludXgvZnMuaD4NCj4gPiArI2luY2x1ZGUgPGxpbnV4L21tYW4uaD4NCj4gPiArI2lu Y2x1ZGUgIndlLmgiDQo+ID4gKyNpbmNsdWRlICJyZXF1ZXN0LmgiDQo+ID4gKw0KPiA+ICsjaW5j bHVkZSA8bGludXgvc2NoZWQuaD4NCj4gPiArI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPg0KPiA+ ICsjaW5jbHVkZSA8bGludXgvc2xhYi5oPg0KPiA+ICsjaW5jbHVkZSAid2VfZnMuaCINCj4gPiAr DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50IHNlbmRfcmVjZWl2ZV93ZV9vYmpfaW5mbygNCj4gPiAr CQlzdHJ1Y3Qgd2Vfb2JqX2luZm8gKndlX29ial9pbmZvLCBpbnQgKmNoZWNrcmVzdWx0KTsNCj4g PiArDQo+ID4gKy8qKg0KPiA+ICsgKiB3ZV9zcGVjaWZpY19pbml0IC0gSW5pdGlhbGl6ZSBmcy4N Cj4gPiArICoNCj4gPiArICogUmV0dXJucyAwLg0KPiA+ICsgKi8NCj4gPiAraW50IHdlX3NwZWNp ZmljX2luaXQodm9pZCkNCj4gPiArew0KPiA+ICsJaW50IHJjID0gMDsNCj4gPiArDQo+ID4gKwly YyA9IHdlX2ZzX2luaXQoKTsNCj4gPiArCWlmIChyYyA8IDApIHsNCj4gPiArCQlwcl9lcnIoImVy cm9yICVkIGF0ICVkIGluICVzXG4iLCByYywgX19MSU5FX18sIF9fRklMRV9fKTsNCj4gPiArCQly ZXR1cm4gcmM7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJd2VfcmVxX3FfaGVhZF9pbml0KCk7DQo+ ID4gKw0KPiA+ICsJcmV0dXJuIDA7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiB3 ZV9zcGVjaWZpY19leGl0IC0gTm90aGluZyB0byBkbyBpbiB0aGUgaW1wbGVtZW50YXRpb24uDQo+ ID4gKyAqDQo+ID4gKyAqIFJldHVybnMgMC4NCj4gPiArICovDQo+ID4gK2ludCB3ZV9zcGVjaWZp Y19leGl0KHZvaWQpDQo+ID4gK3sNCj4gPiArCXJldHVybiAwOw0KPiA+ICt9DQo+ID4gKw0KPiA+ ICsvKioNCj4gPiArICogd2VfY2hlY2tfbWFpbiAtIENvbW1vbiBmdW5jdGlvbiBmb3Igc2VjdXJp dHlfYnBybV9jaGVjayBhbmQgbW1hcF9maWxlLg0KPiA+ICsgKg0KPiA+ICsgKiBAZmlsZTogUG9p bnRlciB0byBzdHJ1Y3QgZmlsZS4NCj4gPiArICoNCj4gPiArICogUmV0dXJucyAwIGlmIHN1Y2Nl ZWRlZCwgPCAwIG90aGVyd2lzZS4NCj4gPiArICovDQo+ID4gK2ludCB3ZV9jaGVja19tYWluKHN0 cnVjdCBmaWxlICpmaWxlKQ0KPiA+ICt7DQo+ID4gKwlzdHJ1Y3QgaW5vZGUgKmlub2RlOw0KPiA+ ICsJc3RydWN0IHdlX29ial9pbmZvIHdlX29ial9pbmZvOw0KPiA+ICsJY2hhciAqcGF0aG5hbWVi dWY7DQo+ID4gKwljaGFyICpuZXdfcGF0aG5hbWVidWY7DQo+ID4gKwljaGFyICpwYXRobmFtZTsN Cj4gPiArCWNoYXIgKnNob3J0bmFtZWJ1ZjsNCj4gPiArCWludCBwYXRoc2l6ZTsNCj4gPiArCWlu dCByYzsNCj4gPiArCWludCBpOw0KPiA+ICsJaW50IGNoZWNrcmVzdWx0Ow0KPiA+ICsNCj4gPiAr CWlmICh1bmxpa2VseShmaWxlID09IE5VTEwpKQ0KPiA+ICsJCXJldHVybiAwOw0KPiA+ICsNCj4g PiArCXBhdGhzaXplID0gRVhQRUNUUEFUSFNJWkU7DQo+ID4gKwlwYXRobmFtZWJ1ZiA9IGttYWxs b2MocGF0aHNpemUsIEdGUF9LRVJORUwpOw0KPiA+ICsJaWYgKHVubGlrZWx5KCFwYXRobmFtZWJ1 ZikpIHsNCj4gPiArCQlyYyA9IC1FTk9NRU07DQo+ID4gKwkJcHJfZXJyKCJlcnJvciAlZCBhdCAl ZCBpbiAlc1xuIiwgcmMsIF9fTElORV9fLCBfX0ZJTEVfXyk7DQo+ID4gKwkJZ290byBmYWlsdXJl Ow0KPiA+ICsJfQ0KPiA+ICsJd2hpbGUgKHBhdGhzaXplIDw9IE1BWFBBVEhTSVpFKSB7DQo+ID4g KwkJcGF0aG5hbWUgPSBkX2Fic29sdXRlX3BhdGgoJmZpbGUtPmZfcGF0aCwgcGF0aG5hbWVidWYs DQo+ID4gKwkJCQlwYXRoc2l6ZS0xKTsNCj4gPiArCQlpZiAoIUlTX0VSUihwYXRobmFtZSkpDQo+ ID4gKwkJCWJyZWFrOw0KPiA+ICsNCj4gPiArCQlwYXRoc2l6ZSArPSBBRERFREVYUEVDVFBBVEhT SVpFOw0KPiA+ICsJCW5ld19wYXRobmFtZWJ1ZiA9IGtyZWFsbG9jKHBhdGhuYW1lYnVmLCBwYXRo c2l6ZSwNCj4gPiArCQkJCUdGUF9LRVJORUwpOw0KPiA+ICsJCWlmICh1bmxpa2VseSghbmV3X3Bh dGhuYW1lYnVmKSkgew0KPiA+ICsJCQlyYyA9IC1FTk9NRU07DQo+ID4gKwkJCXByX2VycigiZXJy b3IgJWQgYXQgJWQgaW4gJXNcbiIsIHJjLA0KPiA+ICsJCQkJCV9fTElORV9fLCBfX0ZJTEVfXyk7 DQo+ID4gKwkJCWdvdG8gZmFpbHVyZTsNCj4gPiArCQl9DQo+ID4gKwkJcGF0aG5hbWVidWYgPSBu ZXdfcGF0aG5hbWVidWY7DQo+ID4gKwl9DQo+ID4gKwlpZiAodW5saWtlbHkocGF0aHNpemUgPj0g TUFYUEFUSFNJWkUpKSB7DQo+ID4gKwkJcmMgPSAtRU5PTUVNOw0KPiA+ICsJCXByX2VycigiZXJy b3IgJWQgYXQgJWQgaW4gJXNcbiIsIHJjLCBfX0xJTkVfXywgX19GSUxFX18pOw0KPiA+ICsJCWdv dG8gZmFpbHVyZTsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwlzaG9ydG5hbWVidWYgPSBwYXRobmFt ZTsNCj4gPiArCWZvciAoaSA9IDA7IGkgPCBwYXRoc2l6ZTsgaSsrKSB7DQo+ID4gKwkJaWYgKHBh dGhuYW1lW2ldID09ICdcMCcpDQo+ID4gKwkJCWJyZWFrOw0KPiA+ICsJCWlmIChwYXRobmFtZVtp XSA9PSAnLycpDQo+ID4gKwkJCXNob3J0bmFtZWJ1ZiA9IHBhdGhuYW1lICsgKGkgKyAxKTsNCj4g PiArCX0NCj4gPiArCXN0cm5jcHkod2Vfb2JqX2luZm8uc2hvcnRuYW1lLCBzaG9ydG5hbWVidWYs IFNIT1JUTkFNRUxFTkdUSCk7DQo+ID4gKwl3ZV9vYmpfaW5mby5wYXRoID0gcGF0aG5hbWU7DQo+ ID4gKwlpbm9kZSA9IGZpbGVfaW5vZGUoZmlsZSk7DQo+ID4gKwl3ZV9vYmpfaW5mby5pbm8gPSBp bm9kZS0+aV9pbm87DQo+ID4gKwl3ZV9vYmpfaW5mby5kbWFqb3IgPSBNQUpPUihpbm9kZS0+aV9z Yi0+c19kZXYpOw0KPiA+ICsJd2Vfb2JqX2luZm8uZG1pbm9yID0gTUlOT1IoaW5vZGUtPmlfc2It PnNfZGV2KTsNCj4gPiArCXdlX29ial9pbmZvLnBpZCA9IGN1cnJlbnQtPnBpZDsNCj4gPiArCXdl X29ial9pbmZvLnBhdGhzaXplID0gc3RybGVuKHBhdGhuYW1lKTsNCj4gPiArCXdlX29ial9pbmZv LnBwaWQgPSBjdXJyZW50LT50Z2lkOw0KPiA+ICsNCj4gPiArCXJjID0gc2VuZF9yZWNlaXZlX3dl X29ial9pbmZvKCZ3ZV9vYmpfaW5mbywgJmNoZWNrcmVzdWx0KTsNCj4gPiArCWlmIChyYyA8IDAp DQo+ID4gKwkJZ290byBmYWlsdXJlOw0KPiA+ICsNCj4gPiArCXJjID0gY2hlY2tyZXN1bHQ7DQo+ ID4gKw0KPiA+ICsJaWYgKHJjID09IC1FQUNDRVMpDQo+ID4gKwkJcHJfd2FybigiYmxvY2sgJXMs IGlubz0lbGQsIGRldm5vPTB4JXguXG4iLA0KPiA+ICsJCQlwYXRobmFtZSwgd2Vfb2JqX2luZm8u aW5vLA0KPiA+ICsJCQlNS0RFVih3ZV9vYmpfaW5mby5kbWFqb3IsIHdlX29ial9pbmZvLmRtaW5v cikpOw0KPiA+ICsJZWxzZQ0KPiA+ICsJCXByX2luZm8oInBlcm1pdCAlcywgaW5vPSVsZCwgZGV2 bm89MHgleC5cbiIsDQo+ID4gKwkJCXBhdGhuYW1lLCB3ZV9vYmpfaW5mby5pbm8sDQo+ID4gKwkJ CU1LREVWKHdlX29ial9pbmZvLmRtYWpvciwgd2Vfb2JqX2luZm8uZG1pbm9yKSk7DQo+ID4gKw0K PiA+ICtmYWlsdXJlOg0KPiA+ICsJaWYgKHBhdGhuYW1lYnVmICE9IE5VTEwpIHsNCj4gPiArCQlr ZnJlZShwYXRobmFtZWJ1Zik7DQo+ID4gKwkJcGF0aG5hbWVidWYgPSBOVUxMOw0KPiA+ICsJfQ0K PiA+ICsNCj4gPiArCWlmICgocmMgIT0gMCkgJiYgKHJjICE9IC1FQUNDRVMpKQ0KPiA+ICsJCXBy X3dhcm4oIkNoZWNraW5nIHdoaXRlIGxpc3QgZG9lcyBub3Qgd29yay5cbiIpOw0KPiA+ICsNCj4g PiArCXJldHVybiByYzsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIHNlbmRfcmVj ZWl2ZV93ZV9vYmpfaW5mbyAtIFNlbmQgbWVzc2FnZSBhbmQgd2FpdC4NCj4gPiArICoNCj4gPiAr ICogQHdlX29ial9pbmZvOiBQb2ludGVyIHRvIHN0cnVjdCB3ZV9vYmpfaW5mby4NCj4gPiArICog QHJlc3VsdDogUG9pbnRlciB0byByZXN1bHQgb2YgbWF0Y2hpbmcgdG8gd2hpdGUgbGlzdC4NCj4g PiArICoNCj4gPiArICogUmV0dXJucyAwIGlmIHN1Y2NlZWRlZCwgPCAwIG90aGVyd2lzZS4NCj4g PiArICovDQo+ID4gK3N0YXRpYyBpbnQgc2VuZF9yZWNlaXZlX3dlX29ial9pbmZvKA0KPiA+ICsJ CXN0cnVjdCB3ZV9vYmpfaW5mbyAqd2Vfb2JqX2luZm8sIGludCAqY2hlY2tyZXN1bHQpDQo+ID4g K3sNCj4gPiArCWludCBpOw0KPiA+ICsJaW50IHJjOw0KPiA+ICsJc3RydWN0IHdlX3JlcV9xIHJl cTsNCj4gPiArDQo+ID4gKwl3ZV9yZXFfcV9pbml0KCZyZXEsIHdlX29ial9pbmZvKTsNCj4gPiAr DQo+ID4gKwlpZiAoKHdlX3JlcV9xX3NlYXJjaCgmKHJlcS5kYXRhKSkpID09IE5VTEwpIHsNCj4g PiArCQlyYyA9IHdlX3JlcV9xX3B1c2goJnJlcSk7DQo+ID4gKwkJaWYgKHJjIDwgMCkgew0KPiA+ ICsJCQlwcl9lcnIoImVycm9yICVkIGF0ICVkIGluICVzXG4iLCByYywNCj4gPiArCQkJCQlfX0xJ TkVfXywgX19GSUxFX18pOw0KPiA+ICsJCQlnb3RvIGZhaWx1cmU7DQo+ID4gKwkJfQ0KPiA+ICsJ fQ0KPiA+ICsNCj4gPiArCWZvciAoaSA9IDA7IGkgPCBNQVhDT01SRVRSWTsgaSsrKSB7DQo+ID4g KwkJcmMgPSBzZW5kX3dlX29ial9pbmZvKCZyZXEpOw0KPiA+ICsNCj4gPiArCQlpZiAobGlrZWx5 KHJlcS5maW5pc2hfZmxhZyA9PSBTVEFSVF9FWEVDKSkgew0KPiA+ICsJCQlicmVhazsNCj4gPiAr CQl9IGVsc2UgaWYgKHVubGlrZWx5KHJjID09IC1FUkVTVEFSVFNZUykpIHsNCj4gPiArCQkJcHJf aW5mbygiU2lnbmFsIGRldGVjdGVkICglZClcbiIsIHJjKTsNCj4gPiArCQkJYnJlYWs7DQo+ID4g KwkJfQ0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCXdlX3JlcV9xX3BvcCgmcmVxKTsNCj4gPiArDQo+ ID4gKwlpZiAodW5saWtlbHkoaSA+PSBNQVhDT01SRVRSWSkgJiYgcmVxLmZpbmlzaF9mbGFnICE9 IFNUQVJUX0VYRUMpDQo+IHsNCj4gPiArCQlyYyA9IC1FSU5WQUw7DQo+ID4gKwkJcHJfZXJyKCJl cnJvciAlZCBhdCAlZCBpbiAlc1xuIiwgcmMsIF9fTElORV9fLCBfX0ZJTEVfXyk7DQo+ID4gKwl9 DQo+ID4gKw0KPiA+ICsJKmNoZWNrcmVzdWx0ID0gcmVxLnBlcm1pdDsNCj4gPiArDQo+ID4gK2Zh aWx1cmU6DQo+ID4gKwlyZXR1cm4gcmM7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsg KiB3ZV9zZWN1cml0eV9icHJtX2NoZWNrX21haW4gLSBUYXJnZXQgZm9yIHNlY3VyaXR5X2Jwcm1f Y2hlY2suDQo+ID4gKyAqDQo+ID4gKyAqIEBicHJtOiBQb2ludGVyIHRvIHN0cnVjdCBsaW51eF9i aW5wcm0uDQo+ID4gKyAqDQo+ID4gKyAqIFJldHVybnMgMCBpZiBzdWNjZWVkZWQsIDwgMCBvdGhl cndpc2UuDQo+ID4gKyAqLw0KPiA+ICtpbnQgd2Vfc2VjdXJpdHlfYnBybV9jaGVja19tYWluKHN0 cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0pDQo+ID4gK3sNCj4gPiArCWlmICh1bmxpa2VseSghZnJv bV90YXNrKSkNCj4gPiArCQlyZXR1cm4gMDsNCj4gPiArDQo+ID4gKwlyZXR1cm4gd2VfY2hlY2tf bWFpbihicHJtLT5maWxlKTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIHdlX3Nl Y3VyaXR5X21tYXBfY2hlY2tfbWFpbiAtIFRhcmdldCBmb3IgbW1hcF9maWxlLg0KPiA+ICsgKg0K PiA+ICsgKiBAZmlsZTogUG9pbnRlciB0byBzdHJ1Y3QgZmlsZSB0byBtYXAuDQo+ID4gKyAqIEBy ZXFwcm90OiBQcm90ZWN0aW9uIHJlcXVlc3RlZCBieSB0aGUgYXBwbGljYXRpb24uDQo+ID4gKyAq IEBmbGFnczogT3BlcmF0aW9uYWwgZmxhZ3MuDQo+ID4gKyAqDQo+ID4gKyAqIFJldHVybnMgMCBp ZiBzdWNjZWVkZWQsIDwgMCBvdGhlcndpc2UuDQo+ID4gKyAqLw0KPiA+ICtpbnQgd2Vfc2VjdXJp dHlfbW1hcF9jaGVja19tYWluKHN0cnVjdCBmaWxlICpmaWxlLA0KPiA+ICsJCXVuc2lnbmVkIGxv bmcgcmVxcHJvdCwgdW5zaWduZWQgbG9uZyBmbGFncykNCj4gPiArew0KPiA+ICsJaWYgKHVubGlr ZWx5KCFmcm9tX3Rhc2spKQ0KPiA+ICsJCXJldHVybiAwOw0KPiA+ICsNCj4gPiArCWlmICghKHJl cXByb3QgJiBQUk9UX0VYRUMpKQ0KPiA+ICsJCXJldHVybiAwOw0KPiA+ICsNCj4gPiArCWlmICgo ZmxhZ3MgJiBNQVBfRVhFQ1VUQUJMRSkpDQo+ID4gKwkJcmV0dXJuIDA7DQo+ID4gKw0KPiA+ICsJ aWYgKCFmaWxlKQ0KPiA+ICsJCXJldHVybiAwOw0KPiA+ICsNCj4gPiArCWlmICghZmlsZS0+Zl9w YXRoLmRlbnRyeSkNCj4gPiArCQlyZXR1cm4gMDsNCj4gPiArDQo+ID4gKwlyZXR1cm4gd2VfY2hl Y2tfbWFpbihmaWxlKTsNCj4gPiArfQ0KPiA+IGRpZmYgLS1naXQgYS9zZWN1cml0eS93aGl0ZWVn cmV0L3JlcXVlc3QuYw0KPiBiL3NlY3VyaXR5L3doaXRlZWdyZXQvcmVxdWVzdC5jDQo+ID4gbmV3 IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiBpbmRleCAwMDAwMDAwMDAwMDAuLjdkMjhlMTMzZWJkNg0K PiA+IC0tLSAvZGV2L251bGwNCj4gPiArKysgYi9zZWN1cml0eS93aGl0ZWVncmV0L3JlcXVlc3Qu Yw0KPiA+IEBAIC0wLDAgKzEsMTUxIEBADQo+ID4gKy8qDQo+ID4gKyAqIFdoaXRlRWdyZXQgTGlu dXggU2VjdXJpdHkgTW9kdWxlDQo+ID4gKyAqDQo+ID4gKyAqIENvcHlyaWdodCAoQykgMjAxNy0y MDE4IFRvc2hpYmEgQ29ycG9yYXRpb24NCj4gPiArICoNCj4gPiArICogVGhpcyBwcm9ncmFtIGlz IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcg0KPiA+ICsgKiBt b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZQ0KPiA+ICsgKiBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg dmVyc2lvbiAyLg0KPiA+ICsgKi8NCj4gPiArDQo+ID4gKyNpbmNsdWRlIDxsaW51eC9saXN0Lmg+ DQo+ID4gKyNpbmNsdWRlIDxsaW51eC9zcGlubG9jay5oPg0KPiA+ICsjaW5jbHVkZSA8bGludXgv cndsb2NrX3R5cGVzLmg+DQo+ID4gKyNpbmNsdWRlIDxsaW51eC9zbGFiLmg+DQo+ID4gKyNpbmNs dWRlIDxsaW51eC9zdHJpbmcuaD4NCj4gPiArI2luY2x1ZGUgInJlcXVlc3QuaCINCj4gPiArDQo+ ID4gK3N0cnVjdCB3ZV9yZXFfcV9oZWFkIHdlX3FfaGVhZDsNCj4gPiArDQo+ID4gK3N0YXRpYyBp bnQgbWF0Y2hfd2VfcmVxX2RhdGEoc3RydWN0IHdlX3JlcV9kYXRhICpkYXRhMSwNCj4gPiArCQlz dHJ1Y3Qgd2VfcmVxX2RhdGEgKmRhdGEyKTsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiB3ZV9y ZXFfcV9pbml0IC0gSW5pdGlhbGl6ZSB0aGUgZ2xvYmFsIHZhcmlhYmxlIHdlX3FfaGVhZC4NCj4g PiArICoNCj4gPiArICogUmV0dXJucyAwLg0KPiA+ICsgKi8NCj4gPiAraW50IHdlX3JlcV9xX2hl YWRfaW5pdCh2b2lkKQ0KPiA+ICt7DQo+ID4gKwlyd2xvY2tfaW5pdCgmKHdlX3FfaGVhZC5sb2Nr KSk7DQo+ID4gKwlJTklUX0xJU1RfSEVBRCgmKHdlX3FfaGVhZC5oZWFkKSk7DQo+ID4gKwlpbml0 X3dhaXRxdWV1ZV9oZWFkKCYod2VfcV9oZWFkLndhaXRxKSk7DQo+ID4gKw0KPiA+ICsJcmV0dXJu IDA7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiB3ZV9yZXFfcV9wdXNoIC0gQWRk IHF1ZXVlIHRvIHRhaWwgb2YgdGhlIGxpc3QuDQo+ID4gKyAqDQo+ID4gKyAqIEBxdWV1ZTogUG9p bnRlciB0byB3ZV9yZXFfcSB0byBiZSBhZGRlZCB0byB0aGUgbGlzdC4NCj4gPiArICoNCj4gPiAr ICogUmV0dXJucyAwLg0KPiA+ICsgKi8NCj4gPiAraW50IHdlX3JlcV9xX3B1c2goc3RydWN0IHdl X3JlcV9xICpxdWV1ZSkNCj4gPiArew0KPiA+ICsJd3JpdGVfbG9jaygmKHdlX3FfaGVhZC5sb2Nr KSk7DQo+ID4gKwlsaXN0X2FkZF90YWlsKCYocXVldWUtPnF1ZXVlKSwgJndlX3FfaGVhZC5oZWFk KTsNCj4gPiArCXdyaXRlX3VubG9jaygmKHdlX3FfaGVhZC5sb2NrKSk7DQo+ID4gKw0KPiA+ICsJ cmV0dXJuIDA7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiB3ZV9yZXFfcV9zZWFy Y2ggLSBTZWFyY2ggZGF0YSBpbiB0aGUgbGlzdC4NCj4gPiArICoNCj4gPiArICogQGRhdGE6IFBv aW50ZXIgdG8gd2VfcmVxX2RhdGEgdG8gYmUgc2VhcmNoZWQgaW4gdGhlIGxpc3QuDQo+ID4gKyAq DQo+ID4gKyAqIFJldHVybnMgcG9pbnRlciB0byBkYXRhIGlmIGRhdGEgaXMgZm91bmQgaW4gdGhl IGxpc3QsDQo+ID4gKyAqIE5VTEwgb3RoZXJ3aXNlLg0KPiA+ICsgKi8NCj4gPiArc3RydWN0IHdl X3JlcV9xICp3ZV9yZXFfcV9zZWFyY2goc3RydWN0IHdlX3JlcV9kYXRhICpkYXRhKQ0KPiA+ICt7 DQo+ID4gKwlzdHJ1Y3QgbGlzdF9oZWFkICpwOw0KPiA+ICsJc3RydWN0IHdlX3JlcV9xICpyZXE7 DQo+ID4gKw0KPiA+ICsJcmVhZF9sb2NrKCYod2VfcV9oZWFkLmxvY2spKTsNCj4gPiArDQo+ID4g KwlsaXN0X2Zvcl9lYWNoKHAsICYod2VfcV9oZWFkLmhlYWQpKSB7DQo+ID4gKwkJcmVxID0gbGlz dF9lbnRyeShwLCBzdHJ1Y3Qgd2VfcmVxX3EsIHF1ZXVlKTsNCj4gPiArDQo+ID4gKwkJaWYgKG1h dGNoX3dlX3JlcV9kYXRhKGRhdGEsICYocmVxLT5kYXRhKSkpIHsNCj4gPiArCQkJcmVhZF91bmxv Y2soJih3ZV9xX2hlYWQubG9jaykpOw0KPiA+ICsJCQlyZXR1cm4gcmVxOw0KPiA+ICsJCX0NCj4g PiArCX0NCj4gPiArDQo+ID4gKwlyZWFkX3VubG9jaygmKHdlX3FfaGVhZC5sb2NrKSk7DQo+ID4g Kw0KPiA+ICsJcmV0dXJuIE5VTEw7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiB3 ZV9yZXFfcV9pbml0IC0gSW5pdGlhbGl6ZSBxdWV1ZS4NCj4gPiArICoNCj4gPiArICogQHJlcTog UG9pbnRlciB0byB3ZV9yZXFfcSB0byBiZSBpbml0aWFsaXplZC4NCj4gPiArICogQGluZm86IFBv aW50ZXIgdG8gd2Vfb2JqX2luZm8uDQo+ID4gKyAqDQo+ID4gKyAqIFJldHVybnMgMC4NCj4gPiAr ICovDQo+ID4gK2ludCB3ZV9yZXFfcV9pbml0KHN0cnVjdCB3ZV9yZXFfcSAqcmVxLCBzdHJ1Y3Qg d2Vfb2JqX2luZm8gKmluZm8pDQo+ID4gK3sNCj4gPiArCXJlcS0+ZmluaXNoX2ZsYWcgPSBTVE9Q X0VYRUM7DQo+ID4gKwlyZXEtPmRhdGEud2Vfb2JqX2luZm8gPSBpbmZvOw0KPiA+ICsJcmVxLT5w ZXJtaXQgPSAtRUFDQ0VTOw0KPiA+ICsJaW5pdF93YWl0cXVldWVfaGVhZCgmcmVxLT53YWl0cSk7 DQo+ID4gKw0KPiA+ICsJcmV0dXJuIDA7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsg KiB3ZV9yZXFfcV9wb3AgLSBEZWxldGUgcXVldWUgaW4gdGhlIGxpc3QuDQo+ID4gKyAqDQo+ID4g KyAqIFJldHVybnMgMC4NCj4gPiArICovDQo+ID4gK2ludCB3ZV9yZXFfcV9wb3Aoc3RydWN0IHdl X3JlcV9xICpxdWV1ZSkNCj4gPiArew0KPiA+ICsJd3JpdGVfbG9jaygmKHdlX3FfaGVhZC5sb2Nr KSk7DQo+ID4gKwlsaXN0X2RlbCgmcXVldWUtPnF1ZXVlKTsNCj4gPiArCXdyaXRlX3VubG9jaygm KHdlX3FfaGVhZC5sb2NrKSk7DQo+ID4gKw0KPiA+ICsJcmV0dXJuIDA7DQo+ID4gK30NCj4gPiAr DQo+ID4gKy8qKg0KPiA+ICsgKiBtYXRjaF93ZV9yZXFfZGF0YSAtIENvbXBhcmUgdHdvIHdlX3Jl cV9kYXRhIGRhdGEuDQo+ID4gKyAqDQo+ID4gKyAqIEBkYXRhMTogUG9pbnRlciB0byB3ZV9yZXFf ZGF0YQ0KPiA+ICsgKiBAZGF0YTI6IFBvaW50ZXIgdG8gd2VfcmVxX2RhdGENCj4gPiArICoNCj4g PiArICogUmV0dXJucyAxIGlmIHBwaWQgb2YgYm90aCB3ZV9yZXFfZGF0YSBkYXRhIGFyZSBlcXVh bCwNCj4gPiArICogMCBvdGhlcndpc2UuDQo+ID4gKyAqLw0KPiA+ICtzdGF0aWMgaW50IG1hdGNo X3dlX3JlcV9kYXRhKHN0cnVjdCB3ZV9yZXFfZGF0YSAqZGF0YTEsDQo+ID4gKwkJc3RydWN0IHdl X3JlcV9kYXRhICpkYXRhMikNCj4gPiArew0KPiA+ICsJaWYgKGRhdGExLT53ZV9vYmpfaW5mby0+ cHBpZCA9PSBkYXRhMi0+d2Vfb2JqX2luZm8tPnBwaWQpDQo+ID4gKwkJcmV0dXJuIDE7DQo+ID4g Kw0KPiA+ICsJcmV0dXJuIDA7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiB3ZV9y ZXFfcV9jbGVhbnVwIC0gQ2xlYW5pbmcgdXAgcXVldWVzLg0KPiA+ICsgKg0KPiA+ICsgKiBSZXR1 cm5zIDAuDQo+ID4gKyAqLw0KPiA+ICtpbnQgd2VfcmVxX3FfY2xlYW51cCh2b2lkKQ0KPiA+ICt7 DQo+ID4gKwlzdHJ1Y3QgbGlzdF9oZWFkICpwOw0KPiA+ICsJc3RydWN0IHdlX3JlcV9xICpyZXE7 DQo+ID4gKw0KPiA+ICsJd3JpdGVfbG9jaygmKHdlX3FfaGVhZC5sb2NrKSk7DQo+ID4gKwlsaXN0 X2Zvcl9lYWNoKHAsICZ3ZV9xX2hlYWQuaGVhZCkgew0KPiA+ICsJCXJlcSA9IGxpc3RfZW50cnko cCwgc3RydWN0IHdlX3JlcV9xLCBxdWV1ZSk7DQo+ID4gKwkJcmVxLT5maW5pc2hfZmxhZyA9IFNU QVJUX0VYRUM7DQo+ID4gKwkJcmVxLT5wZXJtaXQgPSAtRUlOVkFMOw0KPiA+ICsJfQ0KPiA+ICsJ d3JpdGVfdW5sb2NrKCYod2VfcV9oZWFkLmxvY2spKTsNCj4gPiArDQo+ID4gKwlyZXR1cm4gMDsN Cj4gPiArfQ0KPiA+IGRpZmYgLS1naXQgYS9zZWN1cml0eS93aGl0ZWVncmV0L3JlcXVlc3QuaA0K PiBiL3NlY3VyaXR5L3doaXRlZWdyZXQvcmVxdWVzdC5oDQo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2 NDQNCj4gPiBpbmRleCAwMDAwMDAwMDAwMDAuLjRhNzM1ZmM3MGM2Mw0KPiA+IC0tLSAvZGV2L251 bGwNCj4gPiArKysgYi9zZWN1cml0eS93aGl0ZWVncmV0L3JlcXVlc3QuaA0KPiA+IEBAIC0wLDAg KzEsNTIgQEANCj4gPiArLyoNCj4gPiArICogV2hpdGVFZ3JldCBMaW51eCBTZWN1cml0eSBNb2R1 bGUNCj4gPiArICoNCj4gPiArICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTggVG9zaGliYSBDb3Jw b3JhdGlvbg0KPiA+ICsgKg0KPiA+ICsgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsg eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yDQo+ID4gKyAqIG1vZGlmeSBpdCB1bmRlciB0 aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlDQo+ID4gKyAqIGFzIHB1 Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB2ZXJzaW9uIDIuDQo+ID4g KyAqLw0KPiA+ICsNCj4gPiArI2lmbmRlZiBfUkVRVUVTVF9IDQo+ID4gKyNkZWZpbmUgX1JFUVVF U1RfSA0KPiA+ICsNCj4gPiArI2luY2x1ZGUgPGxpbnV4L3NjaGVkLmg+DQo+ID4gKyNpbmNsdWRl IDxsaW51eC93YWl0Lmg+DQo+ID4gKw0KPiA+ICsjaW5jbHVkZSAid2UuaCINCj4gPiArDQo+ID4g K3N0cnVjdCB3ZV9yZXFfcV9oZWFkIHsNCj4gPiArCXN0cnVjdCBsaXN0X2hlYWQgaGVhZDsNCj4g PiArCXJ3bG9ja190IGxvY2s7DQo+ID4gKwl3YWl0X3F1ZXVlX2hlYWRfdCB3YWl0cTsNCj4gPiAr fTsNCj4gPiArDQo+ID4gKw0KPiA+ICsjZGVmaW5lIFNUT1BfRVhFQyAgMA0KPiA+ICsjZGVmaW5l IFNUQVJUX0VYRUMgMQ0KPiA+ICsNCj4gPiArZXh0ZXJuIHN0cnVjdCB3ZV9yZXFfcV9oZWFkIHdl X3FfaGVhZDsNCj4gPiArDQo+ID4gKy8qIFN0cnVjdHVyZSBmb3IgaW5mb3JtYXRpb24gb2YgcmVx dWVzdCBmcm9tIGtlcm5lbCBzcGFjZSB0byB1c2VyIHNwYWNlDQo+ICovDQo+ID4gK3N0cnVjdCB3 ZV9yZXFfZGF0YSB7DQo+ID4gKwlzdHJ1Y3Qgd2Vfb2JqX2luZm8gKndlX29ial9pbmZvOw0KPiA+ ICt9Ow0KPiA+ICsNCj4gPiArc3RydWN0IHdlX3JlcV9xIHsNCj4gPiArCXN0cnVjdCBsaXN0X2hl YWQgcXVldWU7DQo+ID4gKwlpbnQgZmluaXNoX2ZsYWc7DQo+ID4gKwlzdHJ1Y3Qgd2VfcmVxX2Rh dGEgZGF0YTsNCj4gPiArCWludCBwZXJtaXQ7DQo+ID4gKwl3YWl0X3F1ZXVlX2hlYWRfdCB3YWl0 cTsNCj4gPiArfTsNCj4gPiArDQo+ID4gK2ludCB3ZV9yZXFfcV9wb3Aoc3RydWN0IHdlX3JlcV9x ICpxdWV1ZSk7DQo+ID4gK2ludCB3ZV9yZXFfcV9jbGVhbnVwKHZvaWQpOw0KPiA+ICsNCj4gPiAr aW50IHdlX3JlcV9xX2hlYWRfaW5pdCh2b2lkKTsNCj4gPiAraW50IHdlX3JlcV9xX2luaXQoc3Ry dWN0IHdlX3JlcV9xICpyZXEsIHN0cnVjdCB3ZV9vYmpfaW5mbyAqaW5mbyk7DQo+ID4gK2ludCB3 ZV9yZXFfcV9wdXNoKHN0cnVjdCB3ZV9yZXFfcSAqcXVldWUpOw0KPiA+ICtzdHJ1Y3Qgd2VfcmVx X3EgKndlX3JlcV9xX3NlYXJjaChzdHJ1Y3Qgd2VfcmVxX2RhdGEgKmRhdGEpOw0KPiA+ICsNCj4g PiArI2VuZGlmICAvKiBfUkVRVUVTVF9IICovDQo+ID4gZGlmZiAtLWdpdCBhL3NlY3VyaXR5L3do aXRlZWdyZXQvd2UuaCBiL3NlY3VyaXR5L3doaXRlZWdyZXQvd2UuaA0KPiA+IG5ldyBmaWxlIG1v ZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAwMDAwMDAwLi5mYzE0ZTY3ZDRmN2QNCj4gPiAtLS0g L2Rldi9udWxsDQo+ID4gKysrIGIvc2VjdXJpdHkvd2hpdGVlZ3JldC93ZS5oDQo+ID4gQEAgLTAs MCArMSw2NiBAQA0KPiA+ICsvKg0KPiA+ICsgKiBXaGl0ZUVncmV0IExpbnV4IFNlY3VyaXR5IE1v ZHVsZQ0KPiA+ICsgKg0KPiA+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOCBUb3NoaWJhIENv cnBvcmF0aW9uDQo+ID4gKyAqDQo+ID4gKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJl OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3INCj4gPiArICogbW9kaWZ5IGl0IHVuZGVy IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UNCj4gPiArICogYXMg cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHZlcnNpb24gMi4NCj4g PiArICovDQo+ID4gKw0KPiA+ICsjaWZuZGVmIF9XRV9IDQo+ID4gKyNkZWZpbmUgX1dFX0gNCj4g PiArDQo+ID4gKyNpbmNsdWRlIDxsaW51eC9iaW5mbXRzLmg+DQo+ID4gKw0KPiA+ICsvKg0KPiA+ ICsgKiBJbml0aWFsIHNpemUgaW4gYnl0ZSBvZiBtZW1vcnkgYWxsb2NhdGlvbiB0byBzdG9yZSB0 aGUgcGF0aA0KPiA+ICsgKiBvZiBhbiBvYmplY3QgZmlsZQ0KPiA+ICsgKi8NCj4gPiArI2RlZmlu ZSBFWFBFQ1RQQVRIU0laRSAxMDIzDQo+ID4gKw0KPiA+ICsvKg0KPiA+ICsgKiBEZWZhdWx0IHNp emUgaW4gYnl0ZSB0byBleHBhbmQgYmxvY2sgdGhhdCBzdG9yZXMgdGhlIHBhdGgNCj4gPiArICog b2YgYW4gb2JqZWN0IGZpbGUgd2hlbiB0aGUgbWVtb3J5IGJsb2NrIGlzIHRvbyBzbWFsbA0KPiA+ ICsgKiB0byBzdG9yZSB0aGUgcGF0aA0KPiA+ICsgKi8NCj4gPiArI2RlZmluZSBBRERFREVYUEVD VFBBVEhTSVpFIDEwMjMNCj4gPiArDQo+ID4gKy8qIE1heGltdW0gbGVuZ3RoIGluIGJ5dGUgb2Yg cGF0aCBvZiBvYmplY3QgZmlsZSAqLw0KPiA+ICsjZGVmaW5lIE1BWFBBVEhTSVpFIDgxODQNCj4g PiArDQo+ID4gKy8qIE1heGltdW0gbGVuZ3RoIGluIGJ5dGUgb2YgbmFtZSBvZiBleGVjdXRhYmxl IGZpbGUgKi8NCj4gPiArI2RlZmluZSBTSE9SVE5BTUVMRU5HVEggMjU2DQo+ID4gKw0KPiA+ICsv Kg0KPiA+ICsgKiBNYXhpbXVtIG51bWJlciBvZiByZXRyeSBmb3Igc2VuZGluZyB0aGUgc2FtZSBt ZXNzYWdlDQo+ID4gKyAqIHRvIHVzZXIgd2hpdGVsaXN0aW5nIGFwcGxpY2F0aW9uDQo+ID4gKyAq Lw0KPiA+ICsjZGVmaW5lIE1BWENPTVJFVFJZIDEwDQo+ID4gKw0KPiA+ICsvKiBUaW1lb3V0IHZh bHVlIGluIG1pbGxpc2Vjb25kIHRvIGFxdWlyZSB0aGUgc2VtYXBob3JlICovDQo+ID4gKyNkZWZp bmUgV0VSRVNVTFRUSU1FT1VUIDEwMDANCj4gPiArDQo+ID4gKy8qDQo+ID4gKyAqIFN0cnVjdHVy ZSBmb3IgYW4gb2JqZWN0IHRvIGJlIHRlc3RlZCB3aGV0aGVyIGl0IGlzIGNvbnRhaW5lZA0KPiA+ ICsgKiBpbiB0aGUgd2hpdGVsaXN0IG9yIG5vdA0KPiA+ICsgKi8NCj4gPiArc3RydWN0IHdlX29i al9pbmZvIHsNCj4gPiArCXVuc2lnbmVkIGxvbmcgaW5vOyAgICAgICAgICAgICAgICAvKiBpbm9k ZSBudW1iZXIgKi8NCj4gPiArCXVuc2lnbmVkIGludCBkbWFqb3I7ICAgICAgICAgICAgICAvKiBt YWpvciB2ZXJzaW9uIG9mIGRldmljZQ0KPiBudW1iZXIgKi8NCj4gPiArCXVuc2lnbmVkIGludCBk bWlub3I7ICAgICAgICAgICAgICAvKiBtaW5vciB2ZXJzaW9uIG9mIGRldmljZQ0KPiBudW1iZXIg Ki8NCj4gPiArCWNoYXIgc2hvcnRuYW1lW1NIT1JUTkFNRUxFTkdUSF07ICAvKiBzaG9ydCBuYW1l IGZvciB0aGUgb2JqZWN0ICovDQo+ID4gKwlpbnQgcGF0aHNpemU7DQo+ID4gKwljaGFyICpwYXRo OyAgICAgICAgICAgICAgICAgICAgICAgLyogZnVsbCBwYXRoIHRvIHRoZSBvYmplY3QgKi8NCj4g PiArCXBpZF90IHBpZDsNCj4gPiArCXBpZF90IHBwaWQ7DQo+ID4gK307DQo+ID4gKw0KPiA+ICtp bnQgd2Vfc2VjdXJpdHlfYnBybV9jaGVja19tYWluKHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0p Ow0KPiA+ICtpbnQgd2Vfc2VjdXJpdHlfbW1hcF9jaGVja19tYWluKHN0cnVjdCBmaWxlICpmaWxl LA0KPiA+ICsJCXVuc2lnbmVkIGxvbmcgcmVxcHJvdCwgdW5zaWduZWQgbG9uZyBmbGFncyk7DQo+ ID4gKw0KPiA+ICtpbnQgd2Vfc3BlY2lmaWNfaW5pdCh2b2lkKTsNCj4gPiAraW50IHdlX3NwZWNp ZmljX2V4aXQodm9pZCk7DQo+ID4gKw0KPiA+ICsjZW5kaWYgIC8qIF9XRV9IICovDQo+ID4gZGlm ZiAtLWdpdCBhL3NlY3VyaXR5L3doaXRlZWdyZXQvd2VfZnMuYyBiL3NlY3VyaXR5L3doaXRlZWdy ZXQvd2VfZnMuYw0KPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAwMDAw MDAwLi4yN2I3NmYwOTM4MTQNCj4gPiAtLS0gL2Rldi9udWxsDQo+ID4gKysrIGIvc2VjdXJpdHkv d2hpdGVlZ3JldC93ZV9mcy5jDQo+ID4gQEAgLTAsMCArMSwyODAgQEANCj4gPiArLyoNCj4gPiAr ICogV2hpdGVFZ3JldCBMaW51eCBTZWN1cml0eSBNb2R1bGUNCj4gPiArICoNCj4gPiArICogQ29w eXJpZ2h0IChDKSAyMDE3LTIwMTggVG9zaGliYSBDb3Jwb3JhdGlvbg0KPiA+ICsgKg0KPiA+ICsg KiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg YW5kL29yDQo+ID4gKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlDQo+ID4gKyAqIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCB2ZXJzaW9uIDIuDQo+ID4gKyAqLw0KPiA+ICsNCj4gPiArI2RlZmlu ZSBwcl9mbXQoZm10KSAiV2hpdGVFZ3JldDogIiBmbXQNCj4gPiArDQo+ID4gKyNpbmNsdWRlIDxs aW51eC9tb2R1bGUuaD4NCj4gPiArI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPg0KPiA+ICsjaW5j bHVkZSA8bGludXgvc2VjdXJpdHkuaD4NCj4gPiArI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4NCj4g PiArI2luY2x1ZGUgPGxpbnV4L2ZzLmg+DQo+ID4gKyNpbmNsdWRlIDxsaW51eC93YWl0Lmg+DQo+ ID4gKyNpbmNsdWRlIDxsaW51eC9zY2hlZC5oPg0KPiA+ICsjaW5jbHVkZSA8bGludXgvdWFjY2Vz cy5oPg0KPiA+ICsjaW5jbHVkZSA8bGludXgvY2Rldi5oPg0KPiA+ICsNCj4gPiArI2luY2x1ZGUg IndlX2ZzLmgiDQo+ID4gKw0KPiA+ICsjZGVmaW5lIHN0YXRpY19hc3NlcnQoY29uc3RleHByKSBc DQo+ID4gKwljaGFyIGR1bW15Wyhjb25zdGV4cHIpID8gMSA6IC0xXSBfX2F0dHJpYnV0ZV9fKCh1 bnVzZWQpKQ0KPiA+ICsNCj4gPiArI2RlZmluZSBXRV9DT1BZX1RPX1VTRVIodG8sIGZyb20sIHJl dCkgXA0KPiA+ICsJZG8geyBcDQo+ID4gKwkJc3RhdGljX2Fzc2VydChzaXplb2YoKHRvKSkgPT0g c2l6ZW9mKChmcm9tKSkpOyBcDQo+ID4gKwkJKHJldCkgPSBjb3B5X3RvX3VzZXIoJih0byksICYo ZnJvbSksIHNpemVvZih0bykpOyBcDQo+ID4gKwl9IHdoaWxlICgwKQ0KPiA+ICsNCj4gPiArI2Rl ZmluZSBXRV9DT1BZX0ZST01fVVNFUih0bywgZnJvbSwgcmV0KSBcDQo+ID4gKwlkbyB7IFwNCj4g PiArCQlzdGF0aWNfYXNzZXJ0KHNpemVvZigodG8pKSA9PSBzaXplb2YoKGZyb20pKSk7IFwNCj4g PiArCQkocmV0KSA9IGNvcHlfZnJvbV91c2VyKCYodG8pLCAmKGZyb20pLCBzaXplb2YodG8pKTsg XA0KPiA+ICsJfSB3aGlsZSAoMCkNCj4gPiArDQo+ID4gK3N0YXRpYyBzdHJ1Y3Qgd2VfcmVxX3Ff aGVhZCAqcm9vdDsNCj4gPiArc3RydWN0IHRhc2tfc3RydWN0ICpmcm9tX3Rhc2s7DQo+ID4gK3N0 YXRpYyBERUZJTkVfUldMT0NLKGZyb21fdGFza19sb2NrKTsNCj4gPiArDQo+ID4gK3N0YXRpYyBp bnQgY2hlY2tfd2VfcGF0aHNpemUoc3RydWN0IHdlX3JlcV9xICp3ZV9yZXEsIGludCBzaXplKQ0K PiA+ICt7DQo+ID4gKwlpZiAoc2l6ZSAtIHNpemVvZigqd2VfcmVxKQ0KPiA+ICsJCQk+IHdlX3Jl cS0+ZGF0YS53ZV9vYmpfaW5mby0+cGF0aHNpemUpDQo+ID4gKwkJcmV0dXJuIDA7DQo+ID4gKwll bHNlDQo+ID4gKwkJcmV0dXJuIC0xOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50IHNl dF93ZV9yZXFfaW5mbyhzdHJ1Y3Qgd2VfcmVxX3VzZXIgKnVzZXIsDQo+ID4gKwkJc3RydWN0IHdl X29ial9pbmZvICppbmZvKQ0KPiA+ICt7DQo+ID4gKwl1bnNpZ25lZCBsb25nIHJldDsNCj4gPiAr DQo+ID4gKwlXRV9DT1BZX1RPX1VTRVIodXNlci0+aW5vLCBpbmZvLT5pbm8sIHJldCk7DQo+ID4g KwlpZiAocmV0ICE9IDApDQo+ID4gKwkJcmV0dXJuIC1FRkFVTFQ7DQo+ID4gKwlXRV9DT1BZX1RP X1VTRVIodXNlci0+ZG1ham9yLCBpbmZvLT5kbWFqb3IsIHJldCk7DQo+ID4gKwlpZiAocmV0ICE9 IDApDQo+ID4gKwkJcmV0dXJuIC1FRkFVTFQ7DQo+ID4gKwlXRV9DT1BZX1RPX1VTRVIodXNlci0+ ZG1pbm9yLCBpbmZvLT5kbWlub3IsIHJldCk7DQo+ID4gKwlpZiAocmV0ICE9IDApDQo+ID4gKwkJ cmV0dXJuIC1FRkFVTFQ7DQo+ID4gKwlXRV9DT1BZX1RPX1VTRVIodXNlci0+cGlkLCBpbmZvLT5w aWQsIHJldCk7DQo+ID4gKwlpZiAocmV0ICE9IDApDQo+ID4gKwkJcmV0dXJuIC1FRkFVTFQ7DQo+ ID4gKwlXRV9DT1BZX1RPX1VTRVIodXNlci0+cHBpZCwgaW5mby0+cHBpZCwgcmV0KTsNCj4gPiAr CWlmIChyZXQgIT0gMCkNCj4gPiArCQlyZXR1cm4gLUVGQVVMVDsNCj4gPiArCVdFX0NPUFlfVE9f VVNFUih1c2VyLT5zaG9ydG5hbWUsIGluZm8tPnNob3J0bmFtZSwgcmV0KTsNCj4gPiArCWlmIChy ZXQgIT0gMCkNCj4gPiArCQlyZXR1cm4gLUVGQVVMVDsNCj4gPiArCVdFX0NPUFlfVE9fVVNFUih1 c2VyLT5wYXRoc2l6ZSwgaW5mby0+cGF0aHNpemUsIHJldCk7DQo+ID4gKwlpZiAocmV0ICE9IDAp DQo+ID4gKwkJcmV0dXJuIC1FRkFVTFQ7DQo+ID4gKwlyZXQgPSBjb3B5X3RvX3VzZXIodXNlci0+ cGF0aCwgaW5mby0+cGF0aCwgaW5mby0+cGF0aHNpemUgKyAxKTsNCj4gPiArCWlmIChyZXQgIT0g MCkNCj4gPiArCQlyZXR1cm4gLUVGQVVMVDsNCj4gPiArDQo+ID4gKwlyZXR1cm4gMDsNCj4gPiAr fQ0KPiA+ICsNCj4gPiArc3RhdGljIGludCBzZXRfd2VfYWNrKHN0cnVjdCB3ZV9hY2sgKnRvLCBz dHJ1Y3Qgd2VfYWNrICpmcm9tKQ0KPiA+ICt7DQo+ID4gKwl1bnNpZ25lZCBsb25nIHJldDsNCj4g PiArDQo+ID4gKwlXRV9DT1BZX0ZST01fVVNFUih0by0+cGlkLCBmcm9tLT5waWQsIHJldCk7DQo+ ID4gKwlpZiAocmV0ICE9IDApDQo+ID4gKwkJcmV0dXJuIC1FRkFVTFQ7DQo+ID4gKwlXRV9DT1BZ X0ZST01fVVNFUih0by0+cGVybWl0LCBmcm9tLT5wZXJtaXQsIHJldCk7DQo+ID4gKwlpZiAocmV0 ICE9IDApDQo+ID4gKwkJcmV0dXJuIC1FRkFVTFQ7DQo+ID4gKw0KPiA+ICsJcmV0dXJuIDA7DQo+ ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBzdHJ1Y3Qgd2VfcmVxX3VzZXIgKmdldF9hbGl2ZV93 ZV9yZXEoc3RydWN0IHdlX3JlcV9xX2hlYWQNCj4gKnJvb3QsDQo+ID4gKwkJdm9pZCAqYnVmLCBp bnQgc2l6ZSkNCj4gPiArew0KPiA+ICsJaW50IHBhdGhzaXplOw0KPiA+ICsJc3RydWN0IGxpc3Rf aGVhZCAqcDsNCj4gPiArCXN0cnVjdCB3ZV9yZXFfcSAqcmVxOw0KPiA+ICsJc3RydWN0IHdlX3Jl cV91c2VyICp1c2VyID0gTlVMTDsNCj4gPiArDQo+ID4gKwl3cml0ZV9sb2NrKCZyb290LT5sb2Nr KTsNCj4gPiArCWxpc3RfZm9yX2VhY2gocCwgJnJvb3QtPmhlYWQpIHsNCj4gPiArCQlyZXEgPSBs aXN0X2VudHJ5KHAsIHN0cnVjdCB3ZV9yZXFfcSwgcXVldWUpOw0KPiA+ICsJCWlmIChyZXEtPmZp bmlzaF9mbGFnID09IFNUT1BfRVhFQykgew0KPiA+ICsJCQlpZiAodW5saWtlbHkoY2hlY2tfd2Vf cGF0aHNpemUocmVxLCBzaXplKSkpDQo+ID4gKwkJCQlnb3RvIFNJWkVfRVJST1I7DQo+ID4gKwkJ CXVzZXIgPSAoc3RydWN0IHdlX3JlcV91c2VyICopYnVmOw0KPiA+ICsJCQlzZXRfd2VfcmVxX2lu Zm8odXNlciwgcmVxLT5kYXRhLndlX29ial9pbmZvKTsNCj4gPiArCQkJYnJlYWs7DQo+ID4gKwkJ fQ0KPiA+ICsJfQ0KPiA+ICsJd3JpdGVfdW5sb2NrKCZyb290LT5sb2NrKTsNCj4gPiArDQo+ID4g KwlyZXR1cm4gdXNlcjsNCj4gPiArU0laRV9FUlJPUjoNCj4gPiArCXBhdGhzaXplID0gcmVxLT5k YXRhLndlX29ial9pbmZvLT5wYXRoc2l6ZTsNCj4gPiArCXJlcS0+cGVybWl0ID0gLUVBQ0NFUzsN Cj4gPiArCXJlcS0+ZmluaXNoX2ZsYWcgPSBTVEFSVF9FWEVDOw0KPiA+ICsJd3JpdGVfdW5sb2Nr KCZyb290LT5sb2NrKTsNCj4gPiArCXByX2VycigiUGF0aCBsZW5ndGggb2YgZXhlYyBpcyB0b28g bG9uZyAoJWQpLlxuIiwgcGF0aHNpemUpOw0KPiA+ICsJcmV0dXJuIE5VTEw7DQo+ID4gK30NCj4g PiArDQo+ID4gK3N0YXRpYyBzc2l6ZV90IHNlbmRfYWNrKHN0cnVjdCB3ZV9yZXFfcV9oZWFkICpy b290LCBzdHJ1Y3Qgd2VfYWNrICphY2spDQo+ID4gK3sNCj4gPiArCXN0cnVjdCBsaXN0X2hlYWQg KnA7DQo+ID4gKwlzdHJ1Y3Qgd2VfcmVxX3EgKnJlcSA9IE5VTEwsICp0ZW1wOw0KPiA+ICsNCj4g PiArCXdyaXRlX2xvY2soJnJvb3QtPmxvY2spOw0KPiA+ICsJbGlzdF9mb3JfZWFjaChwLCAmcm9v dC0+aGVhZCkgew0KPiA+ICsJCXRlbXAgPSBsaXN0X2VudHJ5KHAsIHN0cnVjdCB3ZV9yZXFfcSwg cXVldWUpOw0KPiA+ICsJCWlmICh0ZW1wLT5kYXRhLndlX29ial9pbmZvLT5waWQgPT0gYWNrLT5w aWQpIHsNCj4gPiArCQkJcmVxID0gdGVtcDsNCj4gPiArCQkJcmVxLT5wZXJtaXQgPSBhY2stPnBl cm1pdDsNCj4gPiArCQkJd2FrZV91cF9pbnRlcnJ1cHRpYmxlX3N5bmMoJnJlcS0+d2FpdHEpOw0K PiA+ICsJCQlyZXEtPmZpbmlzaF9mbGFnID0gU1RBUlRfRVhFQzsNCj4gPiArCQl9DQo+ID4gKwl9 DQo+ID4gKwl3cml0ZV91bmxvY2soJnJvb3QtPmxvY2spOw0KPiA+ICsNCj4gPiArCWlmICh1bmxp a2VseSghcmVxKSkgew0KPiA+ICsJCXByX3dhcm4oIiVzOiBjYW4gbm90IGZpbmQgd2VfcmVxLiBw aWQoJWQpXG4iLA0KPiA+ICsJCQlfX2Z1bmNfXywgYWNrLT5waWQpOw0KPiA+ICsJCXJldHVybiAt RUFDQ0VTOw0KPiA+ICsJfQ0KPiA+ICsJcmV0dXJuIHNpemVvZigqYWNrKTsNCj4gPiArfQ0KPiA+ ICsNCj4gPiArc3RhdGljIHNzaXplX3Qgd2VfZHJpdmVyX3JlYWQoc3RydWN0IGZpbGUgKmZpbGUs IGNoYXIgKmJ1ZiwNCj4gPiArCQlzaXplX3Qgc2l6ZSwgbG9mZl90ICpvZmYpDQo+ID4gK3sNCj4g PiArCWludCByZXQ7DQo+ID4gKwlzdHJ1Y3Qgd2VfcmVxX3VzZXIgKnVzZXI7DQo+ID4gKw0KPiA+ ICsJd2hpbGUgKDEpIHsNCj4gPiArCQlyZXQgPSB3YWl0X2V2ZW50X2ludGVycnVwdGlibGUocm9v dC0+d2FpdHEsDQo+ID4gKwkJCQkodXNlciA9IGdldF9hbGl2ZV93ZV9yZXEocm9vdCwgYnVmLA0K PiBzaXplKSkpOw0KPiA+ICsJCWlmICh1bmxpa2VseShyZXQgPCAwKSkgew0KPiA+ICsJCQlwcl9p bmZvKCIlczogc2lnbmFsICglZCkiLCBfX2Z1bmNfXywgcmV0KTsNCj4gPiArCQkJcmV0dXJuIDA7 DQo+ID4gKwkJfQ0KPiA+ICsJCWlmIChsaWtlbHkodXNlcikpDQo+ID4gKwkJCWJyZWFrOw0KPiA+ ICsJfQ0KPiA+ICsNCj4gPiArCXJldHVybiBzaXplb2YoKnVzZXIpICsgdXNlci0+cGF0aHNpemUg KyAxOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgc3NpemVfdCB3ZV9kcml2ZXJfd3JpdGUo c3RydWN0IGZpbGUgKmZpbGUsIGNvbnN0IGNoYXIgKmJ1ZiwNCj4gPiArCQlzaXplX3Qgc2l6ZSwg bG9mZl90ICpvZmYpDQo+ID4gK3sNCj4gPiArCWludCByYzsNCj4gPiArCXNzaXplX3QgcmV0Ow0K PiA+ICsJc3RydWN0IHdlX2FjayBhY2s7DQo+ID4gKw0KPiA+ICsJcmMgPSBzZXRfd2VfYWNrKCZh Y2ssIChzdHJ1Y3Qgd2VfYWNrICopKCh2b2lkICopYnVmKSk7DQo+ID4gKwlpZiAocmMgPCAwKQ0K PiA+ICsJCXJldHVybiAoc3NpemVfdClyYzsNCj4gPiArCXJldCA9IHNlbmRfYWNrKHJvb3QsICZh Y2spOw0KPiA+ICsNCj4gPiArCXJldHVybiByZXQ7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRp YyBsb25nIHdlX2RyaXZlcl9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlsZSwNCj4gPiArCQl1bnNpZ25l ZCBpbnQgYXJnMCwgdW5zaWduZWQgbG9uZyBhcmcxKQ0KPiA+ICt7DQo+ID4gKwlyZXR1cm4gMDsN Cj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIGludCB3ZV9kcml2ZXJfcmVsZWFzZShzdHJ1Y3Qg aW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlscCkNCj4gPiArew0KPiA+ICsJaW50IHJldCA9 IDA7DQo+ID4gKw0KPiA+ICsJd3JpdGVfbG9jaygmZnJvbV90YXNrX2xvY2spOw0KPiA+ICsJaWYg KCFmcm9tX3Rhc2spIHsNCj4gPiArCQlwcl93YXJuKCJXaGl0ZUVncmV0IGhhcyBub3Qgc3RhcnRl ZC5cbiIpOw0KPiA+ICsJCXJldCA9ICAtRUFDQ0VTOw0KPiA+ICsJCWdvdG8gRU5EOw0KPiA+ICsJ fQ0KPiA+ICsJaWYgKGZyb21fdGFzayAhPSBjdXJyZW50KSB7DQo+ID4gKwkJcHJfd2FybigiVGhp cyB0YXNrIGlzIG5vdCByZWdpc3RlcmVkIHRvIFdoaXRlRWdyZXQuXG4iKTsNCj4gPiArCQlyZXQg PSAtRUFDQ0VTOw0KPiA+ICsJCWdvdG8gRU5EOw0KPiA+ICsJfQ0KPiA+ICsJZnJvbV90YXNrID0g TlVMTDsNCj4gPiArCXdlX3JlcV9xX2NsZWFudXAoKTsNCj4gPiArRU5EOg0KPiA+ICsJd3JpdGVf dW5sb2NrKCZmcm9tX3Rhc2tfbG9jayk7DQo+ID4gKwlyZXR1cm4gcmV0Ow0KPiA+ICt9DQo+ID4g Kw0KPiA+ICtzdGF0aWMgaW50IHdlX2RyaXZlcl9vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0 cnVjdCBmaWxlICpmaWxwKQ0KPiA+ICt7DQo+ID4gKwl3cml0ZV9sb2NrKCZmcm9tX3Rhc2tfbG9j ayk7DQo+ID4gKwlpZiAoZnJvbV90YXNrKSB7DQo+ID4gKwkJd3JpdGVfdW5sb2NrKCYoZnJvbV90 YXNrX2xvY2spKTsNCj4gPiArCQlwcl93YXJuKCJXaGl0ZUVncmV0IGhhcyBhbHJlYWR5IHN0YXJ0 ZWQuXG4iKTsNCj4gPiArCQlyZXR1cm4gLUVBQ0NFUzsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwlm cm9tX3Rhc2sgPSBjdXJyZW50Ow0KPiA+ICsJcm9vdCA9ICZ3ZV9xX2hlYWQ7DQo+ID4gKwl3cml0 ZV91bmxvY2soJmZyb21fdGFza19sb2NrKTsNCj4gPiArDQo+ID4gKwlyZXR1cm4gMDsNCj4gPiAr fQ0KPiA+ICsNCj4gPiArc3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgd2VfZHJp dmVyX2ZvcHMgPSB7DQo+ID4gKwkub3duZXIgPSBUSElTX01PRFVMRSwNCj4gPiArCS5yZWFkID0g d2VfZHJpdmVyX3JlYWQsDQo+ID4gKwkud3JpdGUgPSB3ZV9kcml2ZXJfd3JpdGUsDQo+ID4gKwku dW5sb2NrZWRfaW9jdGwgPSB3ZV9kcml2ZXJfaW9jdGwsDQo+ID4gKwkub3BlbiA9ICB3ZV9kcml2 ZXJfb3BlbiwNCj4gPiArCS5yZWxlYXNlID0gd2VfZHJpdmVyX3JlbGVhc2UsDQo+ID4gK307DQo+ ID4gKw0KPiA+ICtpbnQgd2VfZnNfaW5pdCh2b2lkKQ0KPiA+ICt7DQo+ID4gKwlzdHJ1Y3QgZGVu dHJ5ICp3ZV9kaXI7DQo+ID4gKwlzdHJ1Y3QgZGVudHJ5ICp3ZWNvbTsNCj4gPiArDQo+ID4gKwl3 ZV9kaXIgPSBzZWN1cml0eWZzX2NyZWF0ZV9kaXIoV0VfRlNfRElSX05BTUUsIE5VTEwpOw0KPiA+ ICsJaWYgKElTX0VSUih3ZV9kaXIpKQ0KPiA+ICsJCXJldHVybiBQVFJfRVJSKHdlX2Rpcik7DQo+ ID4gKw0KPiA+ICsJd2Vjb20gPSBzZWN1cml0eWZzX2NyZWF0ZV9maWxlKFdFX0RFVl9OQU1FLCAw NjAwLCB3ZV9kaXIsIE5VTEwsDQo+ICZ3ZV9kcml2ZXJfZm9wcyk7DQo+ID4gKwlpZiAoSVNfRVJS KHdlY29tKSkgew0KPiA+ICsJCXNlY3VyaXR5ZnNfcmVtb3ZlKHdlX2Rpcik7DQo+ID4gKwkJcmV0 dXJuIFBUUl9FUlIod2Vjb20pOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCXJldHVybiAwOw0KPiA+ ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogc2VuZF93ZV9vYmpfaW5mbyAtIFdhaXQgcmVz cG9uc2UgZnJvbSB1c2VyJ3Mgd2hpdGVsaXN0aW5nIGFwcGxpY2F0aW9uLg0KPiA+ICsgKg0KPiA+ ICsgKiBAcmVxOiBQb2ludGVyIHRvIHN0cnVjdCB3ZV9yZXFfcS4NCj4gPiArICoNCj4gPiArICog UmV0dXJucyAwIGlmIHN1Y2NlZWRlZCwgPCAwIG90aGVyd2lzZS4NCj4gPiArICovDQo+ID4gK2lu dCBzZW5kX3dlX29ial9pbmZvKHN0cnVjdCB3ZV9yZXFfcSAqcmVxKQ0KPiA+ICt7DQo+ID4gKwkv KiBJZiB0aGVyZSBleGlzdHMgcXVldWUgd2FpdGluZyBmb3IgdGhpcyByZXF1ZXN0IHJlcSBkb25l LA0KPiA+ICsJICogdGhlbiB3YWtlIGl0IHVwLg0KPiA+ICsJICovDQo+ID4gKwlpZiAod2FpdHF1 ZXVlX2FjdGl2ZSgmKHdlX3FfaGVhZC53YWl0cSkpKQ0KPiA+ICsJCXdha2VfdXAoJih3ZV9xX2hl YWQud2FpdHEpKTsNCj4gPiArDQo+ID4gKwlyZXR1cm4gd2FpdF9ldmVudF9pbnRlcnJ1cHRpYmxl X3RpbWVvdXQocmVxLT53YWl0cSwNCj4gPiArCQkJKHJlcS0+ZmluaXNoX2ZsYWcgPT0gU1RBUlRf RVhFQyksDQo+ID4gKwkJCVdFUkVTVUxUVElNRU9VVCk7DQo+ID4gK30NCj4gPiBkaWZmIC0tZ2l0 IGEvc2VjdXJpdHkvd2hpdGVlZ3JldC93ZV9mcy5oIGIvc2VjdXJpdHkvd2hpdGVlZ3JldC93ZV9m cy5oDQo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiBpbmRleCAwMDAwMDAwMDAwMDAuLjlh ZjI0NWQ3YWNhNA0KPiA+IC0tLSAvZGV2L251bGwNCj4gPiArKysgYi9zZWN1cml0eS93aGl0ZWVn cmV0L3dlX2ZzLmgNCj4gPiBAQCAtMCwwICsxLDIzIEBADQo+ID4gKy8qDQo+ID4gKyAqIFdoaXRl RWdyZXQgTGludXggU2VjdXJpdHkgTW9kdWxlDQo+ID4gKyAqDQo+ID4gKyAqIENvcHlyaWdodCAo QykgMjAxNy0yMDE4IFRvc2hpYmEgQ29ycG9yYXRpb24NCj4gPiArICoNCj4gPiArICogVGhpcyBw cm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcg0K PiA+ICsgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZQ0KPiA+ICsgKiBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbiwgdmVyc2lvbiAyLg0KPiA+ICsgKi8NCj4gPiArDQo+ID4gKyNpZm5kZWYgX1dFX0ZT X0gNCj4gPiArI2RlZmluZSBfV0VfRlNfSA0KPiA+ICsNCj4gPiArI2luY2x1ZGUgInJlcXVlc3Qu aCINCj4gPiArI2luY2x1ZGUgIndlX2ZzX2NvbW1vbi5oIg0KPiA+ICsNCj4gPiArZXh0ZXJuIHN0 cnVjdCB0YXNrX3N0cnVjdCAqZnJvbV90YXNrOw0KPiA+ICsNCj4gPiAraW50IHdlX2ZzX2luaXQo dm9pZCk7DQo+ID4gKw0KPiA+ICtpbnQgc2VuZF93ZV9vYmpfaW5mbyhzdHJ1Y3Qgd2VfcmVxX3Eg KnJlcSk7DQo+ID4gKw0KPiA+ICsjZW5kaWYgIC8qIF9XRV9GU19IICovDQo+ID4gZGlmZiAtLWdp dCBhL3NlY3VyaXR5L3doaXRlZWdyZXQvd2VfZnNfY29tbW9uLmgNCj4gYi9zZWN1cml0eS93aGl0 ZWVncmV0L3dlX2ZzX2NvbW1vbi5oDQo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiBpbmRl eCAwMDAwMDAwMDAwMDAuLjI1OWYzMDBkOTczOA0KPiA+IC0tLSAvZGV2L251bGwNCj4gPiArKysg Yi9zZWN1cml0eS93aGl0ZWVncmV0L3dlX2ZzX2NvbW1vbi5oDQo+ID4gQEAgLTAsMCArMSwzNiBA QA0KPiA+ICsvKg0KPiA+ICsgKiBXaGl0ZUVncmV0IExpbnV4IFNlY3VyaXR5IE1vZHVsZQ0KPiA+ ICsgKg0KPiA+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOCBUb3NoaWJhIENvcnBvcmF0aW9u DQo+ID4gKyAqDQo+ID4gKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3INCj4gPiArICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UNCj4gPiArICogYXMgcHVibGlzaGVk IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHZlcnNpb24gMi4NCj4gPiArICovDQo+ ID4gKw0KPiA+ICsjaWZuZGVmIF9XRV9GU19DT01NT05fSA0KPiA+ICsjZGVmaW5lIF9XRV9GU19D T01NT05fSA0KPiA+ICsNCj4gPiArI2RlZmluZSBXRV9GU19ESVJfTkFNRSAid2hpdGVlZ3JldCIN Cj4gPiArI2RlZmluZSBXRV9ERVZfTkFNRSAid2Vjb20iDQo+ID4gKyNkZWZpbmUgV0VfREVWX1BB VEgNCj4gIi9zeXMva2VybmVsL3NlY3VyaXR5LyJXRV9GU19ESVJfTkFNRSIvIldFX0RFVl9OQU1F DQo+ID4gKw0KPiA+ICsjZGVmaW5lIFNIT1JUTkFNRUxFTkdUSCAyNTYNCj4gPiArDQo+ID4gK3N0 cnVjdCB3ZV9yZXFfdXNlciB7DQo+ID4gKwl1bnNpZ25lZCBsb25nIGlubzsNCj4gPiArCXVuc2ln bmVkIGludCBkbWFqb3I7DQo+ID4gKwl1bnNpZ25lZCBpbnQgZG1pbm9yOw0KPiA+ICsJcGlkX3Qg cGlkOw0KPiA+ICsJcGlkX3QgcHBpZDsNCj4gPiArCWNoYXIgc2hvcnRuYW1lW1NIT1JUTkFNRUxF TkdUSF07DQo+ID4gKwlpbnQgcGF0aHNpemU7DQo+ID4gKwljaGFyIHBhdGhbMF07DQo+ID4gK307 DQo+ID4gKw0KPiA+ICtzdHJ1Y3Qgd2VfYWNrIHsNCj4gPiArCWludCBwZXJtaXQ7DQo+ID4gKwlw aWRfdCBwaWQ7DQo+ID4gK307DQo+ID4gKw0KPiA+ICsjZW5kaWYgIC8qIF9XRV9GU19DT01NT05f SCAqLw0KPiANCj4gLS0NCj4gVG8gdW5zdWJzY3JpYmUgZnJvbSB0aGlzIGxpc3Q6IHNlbmQgdGhl IGxpbmUgInVuc3Vic2NyaWJlDQo+IGxpbnV4LXNlY3VyaXR5LW1vZHVsZSIgaW4NCj4gdGhlIGJv ZHkgb2YgYSBtZXNzYWdlIHRvIG1ham9yZG9tb0B2Z2VyLmtlcm5lbC5vcmcNCj4gTW9yZSBtYWpv cmRvbW8gaW5mbyBhdCAgaHR0cDovL3ZnZXIua2VybmVsLm9yZy9tYWpvcmRvbW8taW5mby5odG1s DQoNCg==