From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 18F9FC4332F for ; Thu, 2 Nov 2023 13:54:54 +0000 (UTC) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id DA42287702; Thu, 2 Nov 2023 14:54:51 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="M5/Dru+F"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id C4901877A0; Thu, 2 Nov 2023 14:54:48 +0100 (CET) Received: from mail-ot1-x32d.google.com (mail-ot1-x32d.google.com [IPv6:2607:f8b0:4864:20::32d]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id 533D6876B3 for ; Thu, 2 Nov 2023 14:54:43 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=seanga2@gmail.com Received: by mail-ot1-x32d.google.com with SMTP id 46e09a7af769-6ce327458a6so484505a34.1 for ; Thu, 02 Nov 2023 06:54:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1698933282; x=1699538082; darn=lists.denx.de; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=oosQyxB+WVOdhxhmcbt0GIS5Jc5ANNJwcCziI+6hYJE=; b=M5/Dru+FRWLLtu2uv5H1rUnWJXouHdJuvnMKKZFV7LgNBz+Ts8UsUPDxQq+MU/8SrR eP4J07CGBnZ5Q5nuJloef26AaiPsWFHC8n3SZA8jSXpMg0d9SnxL0iKKd3StW0yMUukV EYI0dp12DSeOdwt5+kVbRPngZXzJHuMtGDKgvPIxm+PdhclKEuJWinoT1aT6dt6Bz0d6 C/XWztV0HMxChWlEk4fgsnluogvOVYAHpqnQT3FMh5fddzW39B3zd4fhxFXGvXWL7ivg AKdJorHBqLtJBV6PFxBwN/gOKfs9E/CTTchrpEekA8uhDlT8SMnx1vLJ2Dvrdpmr+XOk 5igQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1698933282; x=1699538082; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=oosQyxB+WVOdhxhmcbt0GIS5Jc5ANNJwcCziI+6hYJE=; b=DFl50KDyCT7xI66GIHdFK9+w7uDcPIPMsD5GKw4txnhcfBhNqsYghKptketWac9my3 xbUPY5MwGGg2shaHZKKFnLgKCc19HUaR1sQJW24zR3qXWvEMrM3TIklzRopBLbe/r7qA 96mXhDJhnyTRfBfuViZpizESbwstbBl+/MLAGHyEmrF6NTPCTwiVFQiRf9pQrNpW+2VM Y71jLJ0HUTIjTEagYp4iFNKlVJYSBTwNQ2/NpRy6CfyL+7GMKMOfXMGG5BAmwa1+ao68 EDnFPARA/YszZ5D1NXATt4e/PKG2uqyLYPWYyqu4Oor+lskkRMQzirrLMBv6FsSP4yiv CcLQ== X-Gm-Message-State: AOJu0YwvRRufcE3/vWTYGK/14Ku5foLYi6XGP7vhWCIcVCyyFg6A46l5 G/Hfi6JM6MaU96zCsh3yOFw= X-Google-Smtp-Source: AGHT+IGx5Q6O29eqgk4QH/ohA5nCvUXRbjgu/69DzCstEltr1PnT8dDsHvq4OnB6UlFF1VWE3/aiVQ== X-Received: by 2002:a9d:550a:0:b0:6cd:a4a:181f with SMTP id l10-20020a9d550a000000b006cd0a4a181fmr3781004oth.17.1698933281548; Thu, 02 Nov 2023 06:54:41 -0700 (PDT) Received: from [192.168.1.201] (pool-108-48-157-169.washdc.fios.verizon.net. [108.48.157.169]) by smtp.gmail.com with ESMTPSA id n22-20020a0568300a9600b006b9cc67386fsm485184otu.66.2023.11.02.06.54.40 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 02 Nov 2023 06:54:41 -0700 (PDT) Message-ID: <01909398-992e-2dc7-929f-010cce4f5004@gmail.com> Date: Thu, 2 Nov 2023 09:54:39 -0400 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.11.0 Subject: Re: [PATCH 14/15] nand: Add sandbox driver Content-Language: en-US To: Dario Binacchi Cc: u-boot@lists.denx.de, Michael Trimarchi , Tom Rini References: <20231029034845.1169614-1-seanga2@gmail.com> <20231029034845.1169614-15-seanga2@gmail.com> From: Sean Anderson In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.103.8 at phobos.denx.de X-Virus-Status: Clean T24gMTEvMi8yMyAwNzoxNSwgRGFyaW8gQmluYWNjaGkgd3JvdGU6DQo+IFNlYW4sIEFsbA0K PiANCj4gT24gU3VuLCBPY3QgMjksIDIwMjMgYXQgNDo0OeKAr0FNIFNlYW4gQW5kZXJzb24g PHNlYW5nYTJAZ21haWwuY29tPiB3cm90ZToNCj4+DQo+PiBBZGQgYSBzYW5kYm94IE5BTkQg Zmxhc2ggZHJpdmVyIHRvIGZhY2lsaXRhdGUgdGVzdGluZy4gVGhpcyBkcml2ZXIgc3VwcG9y dHMNCj4+IGFueSBudW1iZXIgb2YgZGV2aWNlcywgZWFjaCB1c2luZyBhIHNpbmdsZSBjaGlw LXNlbGVjdC4gVGhlIE9PQiBkYXRhIGlzDQo+PiBzdG9yZWQgaW4tYmFuZCwgd2l0aCB0aGUg c2VwYXJhdGlvbiBlbmZvcmNlZCB0aHJvdWdoIHRoZSBBUEkuDQo+Pg0KPj4gRm9yIG5vdywg Y3JlYXRlIHR3byBkZXZpY2VzIHRvIHRlc3Qgd2l0aC4gVGhlIGZpcnN0IGlzIGEgdmVyeSBz bWFsbCBkZXZpY2UNCj4+IHdpdGggYmFzaWMgRUNDLiBUaGUgc2Vjb25kIGlzIGFuIDhHIGRl dmljZSAoY2hvc2VuIHRvIGJlIGxhcmdlciB0aGFuIDMyDQo+PiBiaXRzKS4gSXQgdXNlcyBP TkZJLCB3aXRoIHRoZSB2YWx1ZXMgY29waWVkIGZyb20gdGhlIGRhdGFzaGVldC4gSXQgYWxz bw0KPj4gZG9lc24ndCBuZWVkIHRvbyBzdHJvbmcgRUNDLCB3aGljaCBzcGVlZHMgdGhpbmdz IHVwLg0KPj4NCj4+IEFsdGhvdWdoIHRoZSBuYW5kIHN1YnN5c3RlbSBkZXRlcm1pbmVzIHRo ZSBwYXJhbWV0ZXJzIG9mIGEgY2hpcCBiYXNlZCBvbg0KPj4gdGhlIElELCB0aGUgZHJpdmVy IGl0c2VsZiByZXF1aXJlcyBkZXZpY2V0cmVlIHByb3BlcnRpZXMgZm9yIGVhY2gNCj4+IHBh cmFtZXRlci4gV2UgZG8gbm90IGRlcml2ZSBwYXJhbWV0ZXJzIGZyb20gdGhlIElEIGJlY2F1 c2UgcGFyc2luZyB0aGUgSUQNCj4+IGlzIG5vbi10cml2aWFsLiBXZSBkbyBub3QganVzdCB1 c2UgdGhlIHBhcmFtZXRlcnMgdGhhdCB0aGUgbmFuZCBzdWJzeXN0ZW0NCj4+IGhhcyBjYWxj dWxhdGVkIHNpbmNlIHRoYXQgaXMgc29tZXRoaW5nIHdlIHNob3VsZCBiZSB0ZXN0aW5nLg0K Pj4NCj4+IERlc3BpdGUgdXNpbmcgZmlsZSBJL08gdG8gYWNjZXNzIHRoZSBiYWNraW5nIGRh dGEsIHdlIGRvIG5vdCBzdXBwb3J0IHVzaW5nDQo+PiBleHRlcm5hbCBmaWxlcy4gSW4gbXkg ZXhwZXJpZW5jZSwgdGhlc2UgYXJlIHVubmVjZXNzYXJ5IGZvciB0ZXN0aW5nIHNpbmNlDQo+ PiB0ZXN0cyBjYW4gZ2VuZXJhbGx5IGJlIHdyaXR0ZW4gdG8gd3JpdGUgdGhlaXIgZXhwZWN0 ZWQgZGF0YSBiZWZvcmVoYW5kLg0KPj4gQWRkaXRpb25hbGx5LCB3ZSB3b3VsZCBuZWVkIHRv IHN0b3JlIHRoZSAicHJvZ3JhbW1lZCIgaW5mb3JtYXRpb24gc29tZXdoZXJlDQo+PiAoY29t cGxpY2F0aW5nIHRoZSBmb3JtYXQgYW5kIHRoZSBwcm9ncmFtbWluZyBwcm9jZXNzKSBvciB0 cnkgdG8gZGV0ZWN0DQo+PiB3aGV0aGVyIGJsb2NrIGFyZSBlcmFzZWQgYXQgcnVudGltZSAo ZGVncmFkaW5nIHByb2JlIHNwZWVkcykuDQo+Pg0KPj4gSW5mb3JtYXRpb24gYWJvdXQgd2hl dGhlciBlYWNoIHBhZ2UgaGFzIGJlZW4gcHJvZ3JhbW1lZCBpcyBzdG9yZWQgaW4gYW4NCj4+ IGluLW1lbW9yeSBidWZmZXIuIFRvIHNpbXBsaWZ5IHRoZSBpbXBsZW1lbnRhdGlvbiwgd2Ug b25seSBzdXBwb3J0IGEgc2luZ2xlDQo+PiBwcm9ncmFtIHBlciBlcmFzZS4gV2hpbGUgdGhp cyBpcyBhY2N1cmF0ZSBmb3IgbWFueSBsYXJnZXIgZmxhc2hlcywgc29tZQ0KPj4gc21hbGxl ciBmbGFzaGVzICg1MTIgYnl0ZSkgc3VwcG9ydCBtdWx0aXBsZSBwcm9ncmFtcyBhbmQvb3Ig c3VicGFnZQ0KPj4gcHJvZ3JhbXMuIFN1cHBvcnQgZm9yIHRoaXMgY291bGQgYmUgYWRkZWQg bGF0ZXIgYXMgSSBiZWxpZXZlIHNvbWUNCj4+IGZpbGVzeXN0ZW1zIGV4cGVjdCB0aGlzLg0K Pj4NCj4+IFRvIHRlc3QgRUNDLCB3ZSBzdXBwb3J0IGVycm9yLWluamVjdGlvbi4gU3VycHJp c2luZ2x5LCBvbmx5IEVDQyBieXRlcyBpbg0KPj4gdGhlIE9PQiBhcmVhIGFyZSBwcm90ZWN0 ZWQsIGV2ZW4gdGhvdWdoIGFsbCBieXRlcyBhcmUgZXF1YWxseSBzdXNjZXB0aWJsZQ0KPj4g dG8gZXJyb3IuIEJlY2F1c2Ugb2YgdGhpcywgd2UgdGFrZSBjYXJlIHRvIG9ubHkgY29ycnVw dCBFQ0MgYnl0ZXMuDQo+PiBTaW1pbGFybHksIGJlY2F1c2UgRUNDIGNvdmVycyAic3RlcHMi IGFuZCBub3QgdGhlIHdob2xlIHBhZ2UsIHdlIG11c3QgdGFrZQ0KPj4gY2FyZSB0byBjb3Jy dXB0IGRhdGEgaW4gdGhlIHNhbWUgd2F5Lg0KPj4NCj4+IFNpZ25lZC1vZmYtYnk6IFNlYW4g QW5kZXJzb24gPHNlYW5nYTJAZ21haWwuY29tPg0KPj4gLS0tDQo+Pg0KPj4gICBhcmNoL3Nh bmRib3gvZHRzL3Rlc3QuZHRzICAgICAgICB8ICA2NyArKysNCj4+ICAgY29uZmlncy9zYW5k Ym94NjRfZGVmY29uZmlnICAgICAgfCAgMTAgKy0NCj4+ICAgY29uZmlncy9zYW5kYm94X2Rl ZmNvbmZpZyAgICAgICAgfCAgIDkgKw0KPj4gICBjb25maWdzL3NhbmRib3hfbm9pbnN0X2Rl ZmNvbmZpZyB8ICAxMCArLQ0KPj4gICBkcml2ZXJzL210ZC9uYW5kL3Jhdy9LY29uZmlnICAg ICB8ICAxNCArDQo+PiAgIGRyaXZlcnMvbXRkL25hbmQvcmF3L01ha2VmaWxlICAgIHwgICAx ICsNCj4+ICAgZHJpdmVycy9tdGQvbmFuZC9yYXcvc2FuZF9uYW5kLmMgfCA2ODIgKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKw0KPj4gICB0ZXN0L2RtL01ha2VmaWxlICAgICAg ICAgICAgICAgICB8ICAgMSArDQo+PiAgIHRlc3QvZG0vbmFuZC5jICAgICAgICAgICAgICAg ICAgIHwgMTA2ICsrKysrDQo+PiAgIDkgZmlsZXMgY2hhbmdlZCwgODk4IGluc2VydGlvbnMo KyksIDIgZGVsZXRpb25zKC0pDQo+PiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL210 ZC9uYW5kL3Jhdy9zYW5kX25hbmQuYw0KPj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgdGVzdC9k bS9uYW5kLmMNCj4+DQo+PiBkaWZmIC0tZ2l0IGEvYXJjaC9zYW5kYm94L2R0cy90ZXN0LmR0 cyBiL2FyY2gvc2FuZGJveC9kdHMvdGVzdC5kdHMNCj4+IGluZGV4IDViNTQ2NTFhMWRhLi41 ZmJhMjk0M2ZhZCAxMDA2NDQNCj4+IC0tLSBhL2FyY2gvc2FuZGJveC9kdHMvdGVzdC5kdHMN Cj4+ICsrKyBiL2FyY2gvc2FuZGJveC9kdHMvdGVzdC5kdHMNCj4+IEBAIC0xOTAwLDYgKzE5 MDAsNzMgQEANCj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBhdGli bGUgPSAic2FuZGJveCxhcm0tZmZhIjsNCj4+ICAgICAgICAgICAgICAgICAgfTsNCj4+ICAg ICAgICAgIH07DQo+PiArDQo+PiArICAgICAgIG5hbmQtY29udHJvbGxlciB7DQo+PiArICAg ICAgICAgICAgICAgI2FkZHJlc3MtY2VsbHMgPSA8MT47DQo+PiArICAgICAgICAgICAgICAg I3NpemUtY2VsbHMgPSA8MD47DQo+PiArICAgICAgICAgICAgICAgY29tcGF0aWJsZSA9ICJz YW5kYm94LG5hbmQiOw0KPj4gKw0KPj4gKyAgICAgICAgICAgICAgIG5hbmRAMCB7DQo+PiAr ICAgICAgICAgICAgICAgICAgICAgICByZWcgPSA8MD47DQo+PiArICAgICAgICAgICAgICAg ICAgICAgICBuYW5kLWVjYy1tb2RlID0gInNvZnQiOw0KPj4gKyAgICAgICAgICAgICAgICAg ICAgICAgc2FuZGJveCxpZCA9IFswMCBlM107DQo+PiArICAgICAgICAgICAgICAgICAgICAg ICBzYW5kYm94LGVyYXNlc2l6ZSA9IDwoOCAqIDEwMjQpPjsNCj4+ICsgICAgICAgICAgICAg ICAgICAgICAgIHNhbmRib3gsb29ic2l6ZSA9IDwxNj47DQo+PiArICAgICAgICAgICAgICAg ICAgICAgICBzYW5kYm94LHBhZ2VzaXplID0gPDUxMj47DQo+PiArICAgICAgICAgICAgICAg ICAgICAgICBzYW5kYm94LHBhZ2VzID0gPDB4MjAwMD47DQo+PiArICAgICAgICAgICAgICAg ICAgICAgICBzYW5kYm94LGVyci1jb3VudCA9IDwxPjsNCj4+ICsgICAgICAgICAgICAgICAg ICAgICAgIHNhbmRib3gsZXJyLXN0ZXAtc2l6ZSA9IDw1MTI+Ow0KPj4gKyAgICAgICAgICAg ICAgICAgICAgICAgc2FuZGJveCxlY2MtYnl0ZXMgPSA8Nj47DQo+PiArICAgICAgICAgICAg ICAgfTsNCj4+ICsNCj4+ICsgICAgICAgICAgICAgICAvKiBNVDI5RjY0RzA4QUtBQkEgKi8N Cj4+ICsgICAgICAgICAgICAgICBuYW5kQDEgew0KPj4gKyAgICAgICAgICAgICAgICAgICAg ICAgcmVnID0gPDE+Ow0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgbmFuZC1lY2MtbW9k ZSA9ICJzb2Z0X2JjaCI7DQo+PiArICAgICAgICAgICAgICAgICAgICAgICBzYW5kYm94LGlk ID0gWzJDIDQ4IDAwIDI2IDg5IDAwIDAwIDAwXTsNCj4+ICsgICAgICAgICAgICAgICAgICAg ICAgIHNhbmRib3gsb25maSA9IFsNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgNGYgNGUgNDYgNDkgMGUgMDAgNWEgMDANCj4+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZmYgMDEgMDAgMDAgMDAgMDAgMDMgMDANCj4+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDANCj4+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDANCj4+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgNGQgNDkgNDMgNTIgNGYgNGUgMjAgMjANCj4+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAgMjAgMjAgMjAgNGQgNTQgMzIg MzkNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDYgMzYgMzQgNDcgMzAg MzggNDEgNGINCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDEgNDIgNDEg NDMgMzUgMjAgMjAgMjANCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMmMg MDAgMDAgMDAgMDAgMDAgMDAgMDANCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDANCj4+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgMDAgMTAgMDAgMDAgZTAgMDAgMDAgMDINCj4+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgMDAgMDAgMWMgMDAgODAgMDAgMDAgMDANCj4+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgMDAgMTAgMDAgMDAgMDIgMjMgMDEgNTANCj4+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgMDAgMDEgMDUgMDEgMDAgMDAgMDQgMDANCj4+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDQgMDEgMWUgMDAgMDAgMDAgMDAg MDANCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDAgMDAgMDAgMDAgMDAg MDAgMDAgMDANCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMGUgMWYgMDAg MWYgMDAgZjQgMDEgYWMNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMGQg MTkgMDAgYzggMDAgMDAgMDAgMDANCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgMDAgMDAgMDAgMDAgMDAgMDAgMGEgMDcNCj4+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgMTkgMDAgMDAgMDAgMDAgMDAgMDAgMDANCj4+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgMDAgMDAgMDAgMDAgMDEgMDAgMDEgMDANCj4+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgMDAgMDAgMDQgMTAgMDEgODEgMDQgMDINCj4+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgMDIgMDEgMWUgOTAgMDAgMDAgMDAgMDANCj4+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDAgMDAgMDAgMDAgMDAgMDAgMDAg MDANCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDAgMDAgMDAgMDAgMDAg MDAgMDAgMDANCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDAgMDAgMDAg MDAgMDAgMDAgMDAgMDANCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDAg MDAgMDAgMDAgMDAgMDAgMDAgMDANCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDANCj4+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDANCj4+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDANCj4+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDANCj4+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgMDAgMDAgMDAgMDAgMDAgMDMgMjAgN2QNCj4+ ICsgICAgICAgICAgICAgICAgICAgICAgIF07DQo+PiArICAgICAgICAgICAgICAgICAgICAg ICBzYW5kYm94LGVyYXNlc2l6ZSA9IDwoNTEyICogMTAyNCk+Ow0KPj4gKyAgICAgICAgICAg ICAgICAgICAgICAgc2FuZGJveCxvb2JzaXplID0gPDIyND47DQo+PiArICAgICAgICAgICAg ICAgICAgICAgICBzYW5kYm94LHBhZ2VzaXplID0gPDQwOTY+Ow0KPj4gKyAgICAgICAgICAg ICAgICAgICAgICAgc2FuZGJveCxwYWdlcyA9IDwweDIwMDAwMD47DQo+PiArICAgICAgICAg ICAgICAgICAgICAgICBzYW5kYm94LGVyci1jb3VudCA9IDwzPjsNCj4+ICsgICAgICAgICAg ICAgICAgICAgICAgIHNhbmRib3gsZXJyLXN0ZXAtc2l6ZSA9IDw1MTI+Ow0KPj4gKyAgICAg ICAgICAgICAgICAgICAgICAgc2FuZGJveCxlY2MtYnl0ZXMgPSA8Nz47DQo+PiArICAgICAg ICAgICAgICAgfTsNCj4+ICsgICAgICAgfTsNCj4+ICAgfTsNCj4+DQo+PiAgICNpbmNsdWRl ICJzYW5kYm94X3BtaWMuZHRzaSINCj4+IGRpZmYgLS1naXQgYS9jb25maWdzL3NhbmRib3g2 NF9kZWZjb25maWcgYi9jb25maWdzL3NhbmRib3g2NF9kZWZjb25maWcNCj4+IGluZGV4IDFh MDFmNTFhMGI3Li5kNGU1ZWIzMDAwYiAxMDA2NDQNCj4+IC0tLSBhL2NvbmZpZ3Mvc2FuZGJv eDY0X2RlZmNvbmZpZw0KPj4gKysrIGIvY29uZmlncy9zYW5kYm94NjRfZGVmY29uZmlnDQo+ PiBAQCAtMSw0ICsxLDUgQEANCj4+ICAgQ09ORklHX1RFWFRfQkFTRT0wDQo+PiArQ09ORklH X1NZU19NQUxMT0NfTEVOPTB4NjAwMDAwMA0KPj4gICBDT05GSUdfTlJfRFJBTV9CQU5LUz0x DQo+PiAgIENPTkZJR19FTlZfU0laRT0weDIwMDANCj4+ICAgQ09ORklHX0RFRkFVTFRfREVW SUNFX1RSRUU9InNhbmRib3g2NCINCj4+IEBAIC01MCw3ICs1MSw3IEBAIENPTkZJR19DTURf R1BUX1JFTkFNRT15DQo+PiAgIENPTkZJR19DTURfSURFPXkNCj4+ICAgQ09ORklHX0NNRF9J MkM9eQ0KPj4gICBDT05GSUdfQ01EX0xPQURNPXkNCj4+IC1DT05GSUdfQ01EX01CUj15DQo+ PiArQ09ORklHX0NNRF9NVEQ9eQ0KPj4gICBDT05GSUdfQ01EX09TRD15DQo+PiAgIENPTkZJ R19DTURfUENJPXkNCj4+ICAgQ09ORklHX0NNRF9SRUFEPXkNCj4+IEBAIC0xNjgsNiArMTY5 LDEzIEBAIENPTkZJR19QV1JTRVE9eQ0KPj4gICBDT05GSUdfSTJDX0VFUFJPTT15DQo+PiAg IENPTkZJR19NTUNfU0FOREJPWD15DQo+PiAgIENPTkZJR19NVEQ9eQ0KPj4gK0NPTkZJR19E TV9NVEQ9eQ0KPj4gK0NPTkZJR19NVERfUkFXX05BTkQ9eQ0KPj4gK0NPTkZJR19TWVNfTUFY X05BTkRfREVWSUNFPTgNCj4+ICtDT05GSUdfU1lTX05BTkRfVVNFX0ZMQVNIX0JCVD15DQo+ PiArQ09ORklHX05BTkRfU0FOREJPWD15DQo+PiArQ09ORklHX1NZU19OQU5EX09ORklfREVU RUNUSU9OPXkNCj4+ICtDT05GSUdfU1lTX05BTkRfUEFHRV9TSVpFPTB4MjAwDQo+PiAgIENP TkZJR19TUElfRkxBU0hfU0FOREJPWD15DQo+PiAgIENPTkZJR19CT09UREVWX1NQSV9GTEFT SD15DQo+PiAgIENPTkZJR19TUElfRkxBU0hfQVRNRUw9eQ0KPj4gZGlmZiAtLWdpdCBhL2Nv bmZpZ3Mvc2FuZGJveF9kZWZjb25maWcgYi9jb25maWdzL3NhbmRib3hfZGVmY29uZmlnDQo+ PiBpbmRleCBlM2EyZjllYjE3MC4uMWM3MWYwNTQyYTMgMTAwNjQ0DQo+PiAtLS0gYS9jb25m aWdzL3NhbmRib3hfZGVmY29uZmlnDQo+PiArKysgYi9jb25maWdzL3NhbmRib3hfZGVmY29u ZmlnDQo+PiBAQCAtMSw0ICsxLDUgQEANCj4+ICAgQ09ORklHX1RFWFRfQkFTRT0wDQo+PiAr Q09ORklHX1NZU19NQUxMT0NfTEVOPTB4NjAwMDAwMA0KPj4gICBDT05GSUdfTlJfRFJBTV9C QU5LUz0xDQo+PiAgIENPTkZJR19FTlZfU0laRT0weDIwMDANCj4+ICAgQ09ORklHX0RFRkFV TFRfREVWSUNFX1RSRUU9InNhbmRib3giDQo+PiBAQCAtNzMsNiArNzQsNyBAQCBDT05GSUdf Q01EX0lERT15DQo+PiAgIENPTkZJR19DTURfSTJDPXkNCj4+ICAgQ09ORklHX0NNRF9MT0FE TT15DQo+PiAgIENPTkZJR19DTURfTFNCTEs9eQ0KPj4gK0NPTkZJR19DTURfTVREPXkNCj4+ ICAgQ09ORklHX0NNRF9NVVg9eQ0KPj4gICBDT05GSUdfQ01EX09TRD15DQo+PiAgIENPTkZJ R19DTURfUENJPXkNCj4+IEBAIC0yMTUsNiArMjE3LDEzIEBAIENPTkZJR19NTUNfUENJPXkN Cj4+ICAgQ09ORklHX01NQ19TQU5EQk9YPXkNCj4+ICAgQ09ORklHX01NQ19TREhDST15DQo+ PiAgIENPTkZJR19NVEQ9eQ0KPj4gK0NPTkZJR19ETV9NVEQ9eQ0KPj4gK0NPTkZJR19NVERf UkFXX05BTkQ9eQ0KPj4gK0NPTkZJR19TWVNfTUFYX05BTkRfREVWSUNFPTgNCj4+ICtDT05G SUdfU1lTX05BTkRfVVNFX0ZMQVNIX0JCVD15DQo+PiArQ09ORklHX05BTkRfU0FOREJPWD15 DQo+PiArQ09ORklHX1NZU19OQU5EX09ORklfREVURUNUSU9OPXkNCj4+ICtDT05GSUdfU1lT X05BTkRfUEFHRV9TSVpFPTB4MjAwDQo+PiAgIENPTkZJR19TUElfRkxBU0hfU0FOREJPWD15 DQo+PiAgIENPTkZJR19CT09UREVWX1NQSV9GTEFTSD15DQo+PiAgIENPTkZJR19TUElfRkxB U0hfQVRNRUw9eQ0KPj4gZGlmZiAtLWdpdCBhL2NvbmZpZ3Mvc2FuZGJveF9ub2luc3RfZGVm Y29uZmlnIGIvY29uZmlncy9zYW5kYm94X25vaW5zdF9kZWZjb25maWcNCj4+IGluZGV4IGRi MDVlNjMwODMyLi4wOWViYWZlY2NjYSAxMDA2NDQNCj4+IC0tLSBhL2NvbmZpZ3Mvc2FuZGJv eF9ub2luc3RfZGVmY29uZmlnDQo+PiArKysgYi9jb25maWdzL3NhbmRib3hfbm9pbnN0X2Rl ZmNvbmZpZw0KPj4gQEAgLTgwLDcgKzgwLDcgQEAgQ09ORklHX0NNRF9HUElPPXkNCj4+ICAg Q09ORklHX0NNRF9HUFQ9eQ0KPj4gICBDT05GSUdfQ01EX0lERT15DQo+PiAgIENPTkZJR19D TURfSTJDPXkNCj4+IC1DT05GSUdfQ01EX01CUj15DQo+PiArQ09ORklHX0NNRF9NVEQ9eQ0K Pj4gICBDT05GSUdfQ01EX09TRD15DQo+PiAgIENPTkZJR19DTURfUENJPXkNCj4+ICAgQ09O RklHX0NNRF9SRU1PVEVQUk9DPXkNCj4+IEBAIC0xODEsNiArMTgxLDE0IEBAIENPTkZJR19Q V1JTRVE9eQ0KPj4gICBDT05GSUdfU1BMX1BXUlNFUT15DQo+PiAgIENPTkZJR19GU19MT0FE RVI9eQ0KPj4gICBDT05GSUdfTU1DX1NBTkRCT1g9eQ0KPj4gK0NPTkZJR19NVEQ9eQ0KPj4g K0NPTkZJR19ETV9NVEQ9eQ0KPj4gK0NPTkZJR19NVERfUkFXX05BTkQ9eQ0KPj4gK0NPTkZJ R19TWVNfTUFYX05BTkRfREVWSUNFPTgNCj4+ICtDT05GSUdfU1lTX05BTkRfVVNFX0ZMQVNI X0JCVD15DQo+PiArQ09ORklHX05BTkRfU0FOREJPWD15DQo+PiArQ09ORklHX1NZU19OQU5E X09ORklfREVURUNUSU9OPXkNCj4+ICtDT05GSUdfU1lTX05BTkRfUEFHRV9TSVpFPTB4MjAw DQo+PiAgIENPTkZJR19TUElfRkxBU0hfU0FOREJPWD15DQo+PiAgIENPTkZJR19TUElfRkxB U0hfQVRNRUw9eQ0KPj4gICBDT05GSUdfU1BJX0ZMQVNIX0VPTj15DQo+PiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9tdGQvbmFuZC9yYXcvS2NvbmZpZyBiL2RyaXZlcnMvbXRkL25hbmQvcmF3 L0tjb25maWcNCj4+IGluZGV4IGVlNDg0ZGMwZjUxLi42YjM0YWE2NzgyYyAxMDA2NDQNCj4+ IC0tLSBhL2RyaXZlcnMvbXRkL25hbmQvcmF3L0tjb25maWcNCj4+ICsrKyBiL2RyaXZlcnMv bXRkL25hbmQvcmF3L0tjb25maWcNCj4+IEBAIC00NDcsNiArNDQ3LDIwIEBAIGNvbmZpZyBO QU5EX1BYQTNYWA0KPj4gICAgICAgICAgICBUaGlzIGVuYWJsZXMgdGhlIGRyaXZlciBmb3Ig dGhlIE5BTkQgZmxhc2ggZGV2aWNlIGZvdW5kIG9uDQo+PiAgICAgICAgICAgIFBYQTN4eCBw cm9jZXNzb3JzIChORkN2MSkgYW5kIGFsc28gb24gQXJtYWRhIDM3MC9YUCAoTkZDdjIpLg0K Pj4NCj4+ICtjb25maWcgTkFORF9TQU5EQk9YDQo+PiArICAgICAgIGJvb2wgIlN1cHBvcnQg Zm9yIE5BTkQgaW4gc2FuZGJveCINCj4+ICsgICAgICAgZGVwZW5kcyBvbiBTQU5EQk9YDQo+ PiArICAgICAgIHNlbGVjdCBTWVNfTkFORF9TRUxGX0lOSVQNCj4+ICsgICAgICAgc2VsZWN0 IFNZU19OQU5EX1NPRlRfRUNDDQo+PiArICAgICAgIHNlbGVjdCBCQ0gNCj4+ICsgICAgICAg c2VsZWN0IE5BTkRfRUNDX0JDSA0KPj4gKyAgICAgICBpbXBseSBDTURfTkFORA0KPj4gKyAg ICAgICBoZWxwDQo+PiArICAgICAgICAgRW5hYmxlIGEgZHVtbXkgTkFORCBkcml2ZXIgZm9y IHNhbmRib3guIEl0IHNpbXVsYXRlcyBhbnkgbnVtYmVyIG9mDQo+PiArICAgICAgICAgYXJi aXRyYXJ5IE5BTkQgY2hpcHMgd2l0aCBhIFJBTSBidWZmZXIuIEl0IHdpbGwgYWxzbyBpbmpl Y3QgZXJyb3JzIHRvDQo+PiArICAgICAgICAgdGVzdCBFQ0MuIEF0IHRoZSBtb21lbnQsIG9u bHkgOC1iaXQgYnVzc2VzIGFuZCBzaW5nbGUtY2hpcCBkZXZpY2VzIGFyZQ0KPj4gKyAgICAg ICAgIHN1cHBvcnRlZC4NCj4+ICsNCj4+ICAgY29uZmlnIE5BTkRfU1VOWEkNCj4+ICAgICAg ICAgIGJvb2wgIlN1cHBvcnQgZm9yIE5BTkQgb24gQWxsd2lubmVyIFNvQ3MiDQo+PiAgICAg ICAgICBkZWZhdWx0IEFSQ0hfU1VOWEkNCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL210ZC9u YW5kL3Jhdy9NYWtlZmlsZSBiL2RyaXZlcnMvbXRkL25hbmQvcmF3L01ha2VmaWxlDQo+PiBp bmRleCBhZGQyYjRjZjY1NS4uZGRiYmE4OTllNTggMTAwNjQ0DQo+PiAtLS0gYS9kcml2ZXJz L210ZC9uYW5kL3Jhdy9NYWtlZmlsZQ0KPj4gKysrIGIvZHJpdmVycy9tdGQvbmFuZC9yYXcv TWFrZWZpbGUNCj4+IEBAIC03MCw2ICs3MCw3IEBAIG9iai0kKENPTkZJR19OQU5EX1BYQTNY WCkgKz0gcHhhM3h4X25hbmQubw0KPj4gICBvYmotJChDT05GSUdfVEVHUkFfTkFORCkgKz0g dGVncmFfbmFuZC5vDQo+PiAgIG9iai0kKENPTkZJR19OQU5EX09NQVBfR1BNQykgKz0gb21h cF9ncG1jLm8NCj4+ICAgb2JqLSQoQ09ORklHX05BTkRfT01BUF9FTE0pICs9IG9tYXBfZWxt Lm8NCj4+ICtvYmotJChDT05GSUdfTkFORF9TQU5EQk9YKSArPSBzYW5kX25hbmQubw0KPj4g ICBvYmotJChDT05GSUdfTkFORF9TVU5YSSkgKz0gc3VueGlfbmFuZC5vDQo+PiAgIG9iai0k KENPTkZJR19OQU5EX01YSUMpICs9IG14aWNfbmFuZC5vDQo+PiAgIG9iai0kKENPTkZJR19O QU5EX1pZTlEpICs9IHp5bnFfbmFuZC5vDQo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tdGQv bmFuZC9yYXcvc2FuZF9uYW5kLmMgYi9kcml2ZXJzL210ZC9uYW5kL3Jhdy9zYW5kX25hbmQu Yw0KPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4+IGluZGV4IDAwMDAwMDAwMDAwLi5mMTg1 NTg3NzYzMA0KPj4gLS0tIC9kZXYvbnVsbA0KPj4gKysrIGIvZHJpdmVycy9tdGQvbmFuZC9y YXcvc2FuZF9uYW5kLmMNCj4+IEBAIC0wLDAgKzEsNjgyIEBADQo+PiArLy8gU1BEWC1MaWNl bnNlLUlkZW50aWZpZXI6IEdQTC0yLjArDQo+PiArLyoNCj4+ICsgKiBDb3B5cmlnaHQgKEMp IFNlYW4gQW5kZXJzb24gPHNlYW5nYTJAZ21haWwuY29tPg0KPj4gKyAqLw0KPj4gKw0KPj4g KyNkZWZpbmUgTE9HX0NBVEVHT1JZIFVDTEFTU19NVEQNCj4+ICsjaW5jbHVkZSA8ZXJybm8u aD4NCj4+ICsjaW5jbHVkZSA8aGV4ZHVtcC5oPg0KPj4gKyNpbmNsdWRlIDxsb2cuaD4NCj4+ ICsjaW5jbHVkZSA8bmFuZC5oPg0KPj4gKyNpbmNsdWRlIDxvcy5oPg0KPj4gKyNpbmNsdWRl IDxyYW5kLmg+DQo+PiArI2luY2x1ZGUgPGRtL2RldmljZV9jb21wYXQuaD4NCj4+ICsjaW5j bHVkZSA8ZG0vcmVhZC5oPg0KPj4gKyNpbmNsdWRlIDxkbS91Y2xhc3MuaD4NCj4+ICsjaW5j bHVkZSA8YXNtL2JpdG9wcy5oPg0KPj4gKyNpbmNsdWRlIDxsaW51eC9iaXRtYXAuaD4NCj4+ ICsjaW5jbHVkZSA8bGludXgvbXRkL3Jhd25hbmQuaD4NCj4+ICsjaW5jbHVkZSA8bGludXgv c2l6ZXMuaD4NCj4+ICsNCj4+ICtlbnVtIHNhbmRfbmFuZF9zdGF0ZSB7DQo+PiArICAgICAg IFNUQVRFX1JFQURZLA0KPj4gKyAgICAgICBTVEFURV9JRExFLA0KPj4gKyAgICAgICBTVEFU RV9SRUFELA0KPj4gKyAgICAgICBTVEFURV9SRUFEX0lELA0KPj4gKyAgICAgICBTVEFURV9S RUFEX09ORkksDQo+PiArICAgICAgIFNUQVRFX1BBUkFNX09ORkksDQo+PiArICAgICAgIFNU QVRFX1NUQVRVUywNCj4+ICsgICAgICAgU1RBVEVfUFJPRywNCj4+ICsgICAgICAgU1RBVEVf RVJBU0UsDQo+PiArfTsNCj4+ICsNCj4+ICtzdGF0aWMgY29uc3QgY2hhciAqY29uc3Qgc3Rh dGVfbmFtZVtdID0gew0KPj4gKyAgICAgICBbU1RBVEVfUkVBRFldID0gIlJFQURZIiwNCj4+ ICsgICAgICAgW1NUQVRFX0lETEVdID0gIklETEUiLA0KPj4gKyAgICAgICBbU1RBVEVfUkVB RF0gPSAiUkVBRCIsDQo+PiArICAgICAgIFtTVEFURV9SRUFEX0lEXSA9ICJSRUFEX0lEIiwN Cj4+ICsgICAgICAgW1NUQVRFX1JFQURfT05GSV0gPSAiUkVBRF9PTkZJIiwNCj4+ICsgICAg ICAgW1NUQVRFX1BBUkFNX09ORkldID0gIlBBUkFNX09ORkkiLA0KPj4gKyAgICAgICBbU1RB VEVfU1RBVFVTXSA9ICJTVEFUVVMiLA0KPj4gKyAgICAgICBbU1RBVEVfUFJPR10gPSAiUFJP RyIsDQo+PiArICAgICAgIFtTVEFURV9FUkFTRV0gPSAiRVJBU0UiLA0KPj4gK307DQo+PiAr DQo+PiArLyoqDQo+PiArICogc3RydWN0IHNhbmRfbmFuZF9jaGlwIC0gUGVyLWRldmljZSBw cml2YXRlIGRhdGENCj4+ICsgKiBAbmFuZDogVGhlIG5hbmQgY2hpcA0KPj4gKyAqIEBub2Rl OiBUaGUgbmV4dCBkZXZpY2UgaW4gdGhpcyBjb250cm9sbGVyDQo+PiArICogQHByb2dyYW1t ZWQ6IEJpdG1hcCBvZiB3aGV0aGVyIHNlY3RvcnMgYXJlIHByb2dyYW1tZWQNCj4+ICsgKiBA aWQ6IElEIHRvIHJlcG9ydCBmb3IgTkFORF9DTURfUkVBRElEDQo+PiArICogQGlkX2xlbjog TGVuZ3RoIG9mIEBpZA0KPj4gKyAqIEBvbmZpOiBUaHJlZSBjb3BpZXMgb2YgT05GSSBwYXJh bWV0ZXIgcGFnZQ0KPj4gKyAqIEBzdGF0dXM6IFN0YXR1cyB0byByZXBvcnQgZm9yIE5BTkRf Q01EX1NUQVRVUw0KPj4gKyAqIEBjaHVua3NpemU6IFNpemUgb2Ygb25lICJjaHVuayIgKHBh Z2UgKyBvb2IpIGluIGJ5dGVzDQo+PiArICogQHBhZ2VpemU6IFNpemUgb2Ygb25lIHBhZ2Ug aW4gYnl0ZXMNCj4+ICsgKiBAcGFnZXM6IFRvdGFsIG51bWJlciBvZiBwYWdlcw0KPj4gKyAq IEBwYWdlc19wZXJfZXJhc2U6IE51bWJlciBvZiBwYWdlcyBwZXIgZXJhc2VibG9jaw0KPj4g KyAqIEBlcnJfY291bnQ6IE51bWJlciBvZiBlcnJvcnMgdG8gaW5qZWN0IHBlciBAZXJyX3N0 ZXBfYml0cyBvZiBkYXRhDQo+PiArICogQGVycl9zdGVwX2JpdHM6IE51bWJlciBvZiBkYXRh IGJpdHMgcGVyIGVycm9yICJzdGVwIg0KPj4gKyAqIEBlcnJfc3RlcHM6IE51bWJlciBvZiBl cnIgc3RlcHMgaW4gYSBwYWdlDQo+PiArICogQGVjY19iaXRzOiBOdW1iZXIgb2YgRUNDIGJp dHMgdXBlciBAZXJyX3N0ZXBfYml0cw0KPj4gKyAqIEBjczogQ2hpcCBzZWxlY3QgZm9yIHRo aXMgZGV2aWNlDQo+PiArICogQHN0YXRlOiBDdXJyZW50IHN0YXRlIG9mIHRoZSBkZXZpY2UN Cj4+ICsgKiBAY29sdW1uOiBDb2x1bW4gb2YgdGhlIG1vc3QtcmVjZW50IGNvbW1hbmQNCj4+ ICsgKiBAcGFnZV9hZGRyOiBQYWdlIGFkZHJlc3Mgb2YgdGhlIG1vc3QtcmVjZW50IGNvbW1h bmQNCj4+ICsgKiBAZmQ6IEZpbGUgZGVzY3JpcHRvciBmb3IgdGhlIGJhY2tpbmcgZGF0YQ0K Pj4gKyAqIEBmZF9wYWdlX2FkZHI6IFBhZ2UgYWRkcmVzcyB0aGF0IEBmZCBpcyBzZWVrJ2Qg dG8NCj4+ICsgKiBAc2VsZWN0ZWQ6IFdoZXRoZXIgdGhpcyBkZXZpY2UgaXMgc2VsZWN0ZWQN Cj4+ICsgKiBAdG1wOiAiQ2FjaGUiIGJ1ZmZlciB1c2VkIHRvIHN0b3JlIHRyYW5zZmVycmVk IGRhdGEgYmVmb3JlIGNvbW1pdHRpbmcgaXQNCj4+ICsgKiBAdG1wX2RpcnR5OiBXaGV0aGVy IEB0bXAgaXMgZGlydHkgKG1vZGlmaWVkKSBvciBjbGVhbiAoYWxsIG9uZXMpDQo+PiArICov DQo+PiArc3RydWN0IHNhbmRfbmFuZF9jaGlwIHsNCj4+ICsgICAgICAgc3RydWN0IG5hbmRf Y2hpcCBuYW5kOw0KPj4gKyAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIG5vZGU7DQo+PiArICAg ICAgIGxvbmcgKnByb2dyYW1tZWQ7DQo+PiArICAgICAgIGNvbnN0IHU4ICppZDsNCj4+ICsg ICAgICAgdTMyIGNodW5rc2l6ZSwgcGFnZXNpemUsIHBhZ2VzLCBwYWdlc19wZXJfZXJhc2U7 DQo+PiArICAgICAgIHUzMiBlcnJfY291bnQsIGVycl9zdGVwX2JpdHMsIGVycl9zdGVwcywg ZWNjX2JpdHM7DQo+PiArICAgICAgIHVuc2lnbmVkIGludCBjczsNCj4+ICsgICAgICAgZW51 bSBzYW5kX25hbmRfc3RhdGUgc3RhdGU7DQo+PiArICAgICAgIGludCBjb2x1bW4sIHBhZ2Vf YWRkciwgZmQsIGZkX3BhZ2VfYWRkcjsNCj4+ICsgICAgICAgYm9vbCBzZWxlY3RlZCwgdG1w X2RpcnR5Ow0KPj4gKyAgICAgICB1OCBzdGF0dXM7DQo+IA0KPiBJIHNlZSBhIGNoYXJhY3Rl ciAiXkwiLg0KPiBQbGVhc2UgcmVtb3ZlIGl0Lg0KDQpHb29kIGNhdGNoLiBJdCBibGVuZHMg aW4gd2l0aCB0aGUgYmFja2dyb3VuZCBpbiBteSBlZGl0b3IuLi4NCg0KLS1TZWFuDQoNCj4+ ICsgICAgICAgdTggaWRfbGVuOw0KPj4gKyAgICAgICB1OCB0bXBbTkFORF9NQVhfUEFHRVNJ WkUgKyBOQU5EX01BWF9PT0JTSVpFXTsNCj4+ICsgICAgICAgdTggb25maVtzaXplb2Yoc3Ry dWN0IG5hbmRfb25maV9wYXJhbXMpICogM107DQo+PiArfTsNCj4+ICsNCj4+ICsjZGVmaW5l IFNBTkRfREVCVUcoY2hpcCwgZm10LCAuLi4pIFwNCj4+ICsgICAgICAgZGV2X2RiZygoY2hp cCktPm5hbmQubXRkLmRldiwgIiV1ICglcyk6ICIgZm10LCAoY2hpcCktPmNzLCBcDQo+PiAr ICAgICAgICAgICAgICAgc3RhdGVfbmFtZVsoY2hpcCktPnN0YXRlXSwgIyNfX1ZBX0FSR1Nf XykNCj4+ICsNCj4+ICtzdGF0aWMgaW5saW5lIHZvaWQgdG9fc3RhdGUoc3RydWN0IHNhbmRf bmFuZF9jaGlwICpjaGlwLA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW0g c2FuZF9uYW5kX3N0YXRlIG5ld19zdGF0ZSkNCj4+ICt7DQo+PiArICAgICAgIGlmIChuZXdf c3RhdGUgIT0gY2hpcC0+c3RhdGUpDQo+PiArICAgICAgICAgICAgICAgU0FORF9ERUJVRyhj aGlwLCAidG8gc3RhdGUgJXNcbiIsIHN0YXRlX25hbWVbbmV3X3N0YXRlXSk7DQo+PiArICAg ICAgIGNoaXAtPnN0YXRlID0gbmV3X3N0YXRlOw0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMg aW5saW5lIHN0cnVjdCBzYW5kX25hbmRfY2hpcCAqdG9fc2FuZF9uYW5kKHN0cnVjdCBuYW5k X2NoaXAgKm5hbmQpDQo+PiArew0KPj4gKyAgICAgICByZXR1cm4gY29udGFpbmVyX29mKG5h bmQsIHN0cnVjdCBzYW5kX25hbmRfY2hpcCwgbmFuZCk7DQo+PiArfQ0KPj4gKw0KPj4gK3N0 cnVjdCBzYW5kX25hbmRfcHJpdiB7DQo+PiArICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgY2hp cHM7DQo+PiArfTsNCj4+ICsNCj4+ICtzdGF0aWMgaW50IHNhbmRfbmFuZF9kZXZfcmVhZHko c3RydWN0IG10ZF9pbmZvICptdGQpDQo+PiArew0KPj4gKyAgICAgICByZXR1cm4gMTsNCj4+ ICt9DQo+PiArDQo+PiArc3RhdGljIGludCBzYW5kX25hbmRfd2FpdChzdHJ1Y3QgbXRkX2lu Zm8gKm10ZCwgc3RydWN0IG5hbmRfY2hpcCAqY2hpcCkNCj4+ICt7DQo+PiArICAgICAgIHU4 IHN0YXR1czsNCj4+ICsNCj4+ICsgICAgICAgcmV0dXJuIG5hbmRfc3RhdHVzX29wKGNoaXAs ICZzdGF0dXMpID86IHN0YXR1czsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIGludCBzYW5k X25hbmRfc2VlayhzdHJ1Y3Qgc2FuZF9uYW5kX2NoaXAgKmNoaXApDQo+PiArew0KPj4gKyAg ICAgICBpZiAoY2hpcC0+ZmRfcGFnZV9hZGRyID09IGNoaXAtPnBhZ2VfYWRkcikNCj4+ICsg ICAgICAgICAgICAgICByZXR1cm4gMDsNCj4+ICsNCj4+ICsgICAgICAgaWYgKG9zX2xzZWVr KGNoaXAtPmZkLCAob2ZmX3QpY2hpcC0+cGFnZV9hZGRyICogY2hpcC0+Y2h1bmtzaXplLA0K Pj4gKyAgICAgICAgICAgICAgICAgICAgT1NfU0VFS19TRVQpIDwgMCkgew0KPj4gKyAgICAg ICAgICAgICAgIFNBTkRfREVCVUcoY2hpcCwgImNvdWxkIG5vdCBzZWVrOiAlZFxuIiwgZXJy bm8pOw0KPj4gKyAgICAgICAgICAgICAgIHJldHVybiAtRUlPOw0KPj4gKyAgICAgICB9DQo+ PiArDQo+PiArICAgICAgIGNoaXAtPmZkX3BhZ2VfYWRkciA9IGNoaXAtPnBhZ2VfYWRkcjsN Cj4+ICsgICAgICAgcmV0dXJuIDA7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyB2b2lkIHNh bmRfbmFuZF9pbmplY3RfZXJyb3Ioc3RydWN0IHNhbmRfbmFuZF9jaGlwICpjaGlwLA0KPj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgc3RlcCwg dW5zaWduZWQgaW50IHBvcykNCj4+ICt7DQo+PiArICAgICAgIGludCBieXRlLCBpbmRleDsN Cj4+ICsNCj4+ICsgICAgICAgaWYgKHBvcyA8IGNoaXAtPmVycl9zdGVwX2JpdHMpIHsNCj4+ ICsgICAgICAgICAgICAgICBfX2NoYW5nZV9iaXQoc3RlcCAqIGNoaXAtPmVycl9zdGVwX2Jp dHMgKyBwb3MsIGNoaXAtPnRtcCk7DQo+PiArICAgICAgICAgICAgICAgcmV0dXJuOw0KPj4g KyAgICAgICB9DQo+PiArDQo+PiArICAgICAgIC8qDQo+PiArICAgICAgICAqIE9ubHkgRUND IGJ5dGVzIGFyZSBjb3ZlcmVkIGluIHRoZSBPT0IgYXJlYSwgc28NCj4+ICsgICAgICAgICog cHJldGVuZCB0aGF0IHRob3NlIGFyZSB0aGUgb25seSBieXRlcyB3aGljaCBjYW4gaGF2ZQ0K Pj4gKyAgICAgICAgKiBlcnJvcnMuDQo+PiArICAgICAgICAqLw0KPj4gKyAgICAgICBieXRl ID0gKHBvcyAtIGNoaXAtPmVycl9zdGVwX2JpdHMgKyBzdGVwICogY2hpcC0+ZWNjX2JpdHMp IC8gODsNCj4+ICsgICAgICAgaW5kZXggPSBjaGlwLT5uYW5kLmVjYy5sYXlvdXQtPmVjY3Bv c1tieXRlXTsNCj4+ICsgICAgICAgLyogQXZvaWQgZW5kaWFubmVzcyBpc3N1ZXMgYnkgd29y a2luZyB3aXRoIGJ5dGVzICovDQo+PiArICAgICAgIGNoaXAtPnRtcFtjaGlwLT5wYWdlc2l6 ZSArIGluZGV4XSBePSBCSVQocG9zICYgMHg3KTsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGlj IGludCBzYW5kX25hbmRfcmVhZChzdHJ1Y3Qgc2FuZF9uYW5kX2NoaXAgKmNoaXApDQo+PiAr ew0KPj4gKyAgICAgICB1bnNpZ25lZCBpbnQgaSwgc3RvcCA9IDA7DQo+PiArDQo+PiArICAg ICAgIGlmIChjaGlwLT5jb2x1bW4gPT0gY2hpcC0+cGFnZXNpemUpDQo+PiArICAgICAgICAg ICAgICAgc3RvcCA9IGNoaXAtPmVycl9zdGVwX2JpdHM7DQo+PiArDQo+PiArICAgICAgIGlm ICh0ZXN0X2JpdChjaGlwLT5wYWdlX2FkZHIsIGNoaXAtPnByb2dyYW1tZWQpKSB7DQo+PiAr ICAgICAgICAgICAgICAgaWYgKHNhbmRfbmFuZF9zZWVrKGNoaXApKQ0KPj4gKyAgICAgICAg ICAgICAgICAgICAgICAgcmV0dXJuIC1FSU87DQo+PiArDQo+PiArICAgICAgICAgICAgICAg aWYgKG9zX3JlYWQoY2hpcC0+ZmQsIGNoaXAtPnRtcCwgY2hpcC0+Y2h1bmtzaXplKSAhPQ0K Pj4gKyAgICAgICAgICAgICAgICAgICBjaGlwLT5jaHVua3NpemUpIHsNCj4+ICsgICAgICAg ICAgICAgICAgICAgICAgIFNBTkRfREVCVUcoY2hpcCwgImNvdWxkIG5vdCByZWFkOiAlZFxu IiwgZXJybm8pOw0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC1FSU87DQo+ PiArICAgICAgICAgICAgICAgfQ0KPj4gKyAgICAgICAgICAgICAgIGNoaXAtPmZkX3BhZ2Vf YWRkcisrOw0KPj4gKyAgICAgICB9IGVsc2UgaWYgKGNoaXAtPnRtcF9kaXJ0eSkgew0KPj4g KyAgICAgICAgICAgICAgIG1lbXNldChjaGlwLT50bXAgKyBjaGlwLT5jb2x1bW4sIDB4ZmYs DQo+PiArICAgICAgICAgICAgICAgICAgICAgIGNoaXAtPmNodW5rc2l6ZSAtIGNoaXAtPmNv bHVtbik7DQo+PiArICAgICAgIH0NCj4+ICsNCj4+ICsgICAgICAgLyoNCj4+ICsgICAgICAg ICogSW5qZWN0IHNvbWUgZXJyb3JzOyB0aGlzIGlzIE1ldGhvZCBBIGZyb20gIkFuIEVmZmlj aWVudCBBbGdvcml0aG0gZm9yDQo+PiArICAgICAgICAqIFNlcXVlbnRpYWwgUmFuZG9tIFNh bXBsaW5nIiAoVml0dGVyIDg3KS4gVGhpcyBpcyBzdGlsbCBzbG93IHdoZW4NCj4+ICsgICAg ICAgICogZ2VuZXJhdGluZyBhIGxvdCAoZG96ZW5zKSBvZiBFQ0MgZXJyb3JzLg0KPj4gKyAg ICAgICAgKg0KPj4gKyAgICAgICAgKiBUbyBhdm9pZCBnZW5lcmF0aW5nIHRvbyBtYW55IGVy cm9ycyBpbiBhbnkgb25lIEVDQyBzdGVwLCB3ZSBzZXBhcmF0ZQ0KPj4gKyAgICAgICAgKiBv dXIgZXJyb3IgZ2VuZXJhdGlvbiBieSBFQ0Mgc3RlcC4NCj4+ICsgICAgICAgICovDQo+PiAr ICAgICAgIGNoaXAtPnRtcF9kaXJ0eSA9IHRydWU7DQo+PiArICAgICAgIGZvciAoaSA9IDA7 IGkgPCBjaGlwLT5lcnJfc3RlcHM7IGkrKykgew0KPj4gKyAgICAgICAgICAgICAgIHUzMiBi aXRfZXJyb3JzID0gY2hpcC0+ZXJyX2NvdW50Ow0KPj4gKyAgICAgICAgICAgICAgIHVuc2ln bmVkIGludCBqID0gY2hpcC0+ZXJyX3N0ZXBfYml0cyArIGNoaXAtPmVjY19iaXRzOw0KPj4g Kw0KPj4gKyAgICAgICAgICAgICAgIHdoaWxlIChiaXRfZXJyb3JzKSB7DQo+PiArICAgICAg ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgdSA9IHJhbmQoKTsNCj4+ICsgICAgICAg ICAgICAgICAgICAgICAgIGZsb2F0IHF1b3QgPSAxVUxMIDw8IDMyOw0KPj4gKw0KPj4gKyAg ICAgICAgICAgICAgICAgICAgICAgZG8gew0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBxdW90ICo9IGogLSBiaXRfZXJyb3JzOw0KPj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBxdW90IC89IGo7DQo+PiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGotLTsNCj4+ICsNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg aWYgKGogPCBzdG9wKQ0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGdvdG8gbmV4dDsNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgIH0gd2hpbGUgKHUg PCBxdW90KTsNCj4+ICsNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgIHNhbmRfbmFuZF9p bmplY3RfZXJyb3IoY2hpcCwgaSwgaik7DQo+PiArICAgICAgICAgICAgICAgICAgICAgICBi aXRfZXJyb3JzLS07DQo+PiArICAgICAgICAgICAgICAgfQ0KPj4gK25leHQ6DQo+PiArICAg ICAgICAgICAgICAgOw0KPj4gKyAgICAgICB9DQo+PiArDQo+PiArICAgICAgIHJldHVybiAw Ow0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgdm9pZCBzYW5kX25hbmRfY29tbWFuZChzdHJ1 Y3QgbXRkX2luZm8gKm10ZCwgdW5zaWduZWQgaW50IGNvbW1hbmQsDQo+PiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBpbnQgY29sdW1uLCBpbnQgcGFnZV9hZGRyKQ0KPj4gK3sN Cj4+ICsgICAgICAgc3RydWN0IG5hbmRfY2hpcCAqbmFuZCA9IG10ZF90b19uYW5kKG10ZCk7 DQo+PiArICAgICAgIHN0cnVjdCBzYW5kX25hbmRfY2hpcCAqY2hpcCA9IHRvX3NhbmRfbmFu ZChuYW5kKTsNCj4+ICsgICAgICAgZW51bSBzYW5kX25hbmRfc3RhdGUgbmV3X3N0YXRlID0g Y2hpcC0+c3RhdGU7DQo+PiArDQo+PiArICAgICAgIFNBTkRfREVCVUcoY2hpcCwgImNvbW1h bmQ9JTAyeCBjb2x1bW49JWQgcGFnZV9hZGRyPSVkXG4iLCBjb21tYW5kLA0KPj4gKyAgICAg ICAgICAgICAgICAgIGNvbHVtbiwgcGFnZV9hZGRyKTsNCj4+ICsNCj4+ICsgICAgICAgaWYg KCFjaGlwLT5zZWxlY3RlZCkNCj4+ICsgICAgICAgICAgICAgICByZXR1cm47DQo+PiArDQo+ PiArICAgICAgIHN3aXRjaCAoY2hpcC0+c3RhdGUpIHsNCj4+ICsgICAgICAgY2FzZSBTVEFU RV9SRUFEWToNCj4+ICsgICAgICAgICAgICAgICBpZiAoY29tbWFuZCA9PSBOQU5EX0NNRF9S RVNFVCkNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcmVzZXQ7DQo+PiArICAg ICAgICAgICAgICAgYnJlYWs7DQo+PiArICAgICAgIGNhc2UgU1RBVEVfUFJPRzoNCj4+ICsg ICAgICAgICAgICAgICBuZXdfc3RhdGUgPSBTVEFURV9JRExFOw0KPj4gKyAgICAgICAgICAg ICAgIGlmIChjb21tYW5kICE9IE5BTkRfQ01EX1BBR0VQUk9HIHx8DQo+PiArICAgICAgICAg ICAgICAgICAgIHRlc3RfYW5kX3NldF9iaXQoY2hpcC0+cGFnZV9hZGRyLCBjaGlwLT5wcm9n cmFtbWVkKSkgew0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgY2hpcC0+c3RhdHVzIHw9 IE5BTkRfU1RBVFVTX0ZBSUw7DQo+PiArICAgICAgICAgICAgICAgICAgICAgICBicmVhazsN Cj4+ICsgICAgICAgICAgICAgICB9DQo+PiArDQo+PiArICAgICAgICAgICAgICAgaWYgKHNh bmRfbmFuZF9zZWVrKGNoaXApKSB7DQo+PiArICAgICAgICAgICAgICAgICAgICAgICBjaGlw LT5zdGF0dXMgfD0gTkFORF9TVEFUVVNfRkFJTDsNCj4+ICsgICAgICAgICAgICAgICAgICAg ICAgIGJyZWFrOw0KPj4gKyAgICAgICAgICAgICAgIH0NCj4+ICsNCj4+ICsgICAgICAgICAg ICAgICBpZiAob3Nfd3JpdGUoY2hpcC0+ZmQsIGNoaXAtPnRtcCwgY2hpcC0+Y2h1bmtzaXpl KSAhPQ0KPj4gKyAgICAgICAgICAgICAgICAgICBjaGlwLT5jaHVua3NpemUpIHsNCj4+ICsg ICAgICAgICAgICAgICAgICAgICAgIFNBTkRfREVCVUcoY2hpcCwgImNvdWxkIG5vdCB3cml0 ZTogJWRcbiIsIGVycm5vKTsNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgIGNoaXAtPnN0 YXR1cyB8PSBOQU5EX1NUQVRVU19GQUlMOw0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAg YnJlYWs7DQo+PiArICAgICAgICAgICAgICAgfQ0KPj4gKw0KPj4gKyAgICAgICAgICAgICAg IGNoaXAtPmZkX3BhZ2VfYWRkcisrOw0KPj4gKyAgICAgICAgICAgICAgIGJyZWFrOw0KPj4g KyAgICAgICBjYXNlIFNUQVRFX0VSQVNFOg0KPj4gKyAgICAgICAgICAgICAgIG5ld19zdGF0 ZSA9IFNUQVRFX0lETEU7DQo+PiArICAgICAgICAgICAgICAgaWYgKGNvbW1hbmQgIT0gTkFO RF9DTURfRVJBU0UyKSB7DQo+PiArICAgICAgICAgICAgICAgICAgICAgICBjaGlwLT5zdGF0 dXMgfD0gTkFORF9TVEFUVVNfRkFJTDsNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgIGJy ZWFrOw0KPj4gKyAgICAgICAgICAgICAgIH0NCj4+ICsNCj4+ICsgICAgICAgICAgICAgICBp ZiAoY2hpcC0+cGFnZV9hZGRyIDwgMCB8fA0KPj4gKyAgICAgICAgICAgICAgICAgICBjaGlw LT5wYWdlX2FkZHIgPj0gY2hpcC0+cGFnZXMgfHwNCj4+ICsgICAgICAgICAgICAgICAgICAg Y2hpcC0+cGFnZV9hZGRyICUgY2hpcC0+cGFnZXNfcGVyX2VyYXNlKQ0KPj4gKyAgICAgICAg ICAgICAgICAgICAgICAgY2hpcC0+c3RhdHVzIHw9IE5BTkRfU1RBVFVTX0ZBSUw7DQo+PiAr ICAgICAgICAgICAgICAgZWxzZQ0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgYml0bWFw X2NsZWFyKGNoaXAtPnByb2dyYW1tZWQsIGNoaXAtPnBhZ2VfYWRkciwNCj4+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlwLT5wYWdlc19wZXJfZXJhc2UpOw0K Pj4gKyAgICAgICAgICAgICAgIGJyZWFrOw0KPj4gKyAgICAgICBkZWZhdWx0Og0KPj4gKyAg ICAgICAgICAgICAgIGNoaXAtPmNvbHVtbiA9IGNvbHVtbjsNCj4+ICsgICAgICAgICAgICAg ICBjaGlwLT5wYWdlX2FkZHIgPSBwYWdlX2FkZHI7DQo+PiArICAgICAgICAgICAgICAgc3dp dGNoIChjb21tYW5kKSB7DQo+PiArICAgICAgICAgICAgICAgY2FzZSBOQU5EX0NNRF9SRUFE T09COg0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbHVtbiA+PSAwKQ0KPj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlwLT5jb2x1bW4gKz0gY2hpcC0+ cGFnZXNpemU7DQo+PiArICAgICAgICAgICAgICAgICAgICAgICBmYWxsdGhyb3VnaDsNCj4+ ICsgICAgICAgICAgICAgICBjYXNlIE5BTkRfQ01EX1JFQUQwOg0KPj4gKyAgICAgICAgICAg ICAgICAgICAgICAgbmV3X3N0YXRlID0gU1RBVEVfSURMRTsNCj4+ICsgICAgICAgICAgICAg ICAgICAgICAgIGlmIChwYWdlX2FkZHIgPCAwIHx8IHBhZ2VfYWRkciA+PSBjaGlwLT5wYWdl cykNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQo+PiArDQo+ PiArICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2hpcC0+Y29sdW1uIDwgMCB8fCBjaGlw LT5jb2x1bW4gPj0gY2hpcC0+Y2h1bmtzaXplKQ0KPj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBicmVhazsNCj4+ICsNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgIGlm IChzYW5kX25hbmRfcmVhZChjaGlwKSkNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgYnJlYWs7DQo+PiArDQo+PiArICAgICAgICAgICAgICAgICAgICAgICBjaGlwLT5w YWdlX2FkZHIgPSBwYWdlX2FkZHI7DQo+PiArICAgICAgICAgICAgICAgICAgICAgICBuZXdf c3RhdGUgPSBTVEFURV9SRUFEOw0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7 DQo+PiArICAgICAgICAgICAgICAgY2FzZSBOQU5EX0NNRF9FUkFTRTE6DQo+PiArICAgICAg ICAgICAgICAgICAgICAgICBuZXdfc3RhdGUgPSBTVEFURV9FUkFTRTsNCj4+ICsgICAgICAg ICAgICAgICAgICAgICAgIGNoaXAtPnN0YXR1cyA9IH5OQU5EX1NUQVRVU19GQUlMOw0KPj4g KyAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQo+PiArICAgICAgICAgICAgICAgY2Fz ZSBOQU5EX0NNRF9TVEFUVVM6DQo+PiArICAgICAgICAgICAgICAgICAgICAgICBuZXdfc3Rh dGUgPSBTVEFURV9TVEFUVVM7DQo+PiArICAgICAgICAgICAgICAgICAgICAgICBjaGlwLT5j b2x1bW4gPSAwOw0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQo+PiArICAg ICAgICAgICAgICAgY2FzZSBOQU5EX0NNRF9TRVFJTjoNCj4+ICsgICAgICAgICAgICAgICAg ICAgICAgIG5ld19zdGF0ZSA9IFNUQVRFX1BST0c7DQo+PiArICAgICAgICAgICAgICAgICAg ICAgICBjaGlwLT5zdGF0dXMgPSB+TkFORF9TVEFUVVNfRkFJTDsNCj4+ICsgICAgICAgICAg ICAgICAgICAgICAgIGlmIChwYWdlX2FkZHIgPCAwIHx8IHBhZ2VfYWRkciA+PSBjaGlwLT5w YWdlcyB8fA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaXAtPmNvbHVtbiA8 IDAgfHwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlwLT5jb2x1bW4gPj0g Y2hpcC0+Y2h1bmtzaXplKSB7DQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGNoaXAtPnN0YXR1cyB8PSBOQU5EX1NUQVRVU19GQUlMOw0KPj4gKyAgICAgICAgICAgICAg ICAgICAgICAgfSBlbHNlIGlmIChjaGlwLT50bXBfZGlydHkpIHsNCj4+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgbWVtc2V0KGNoaXAtPnRtcCwgMHhmZiwgY2hpcC0+Y2h1 bmtzaXplKTsNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpcC0+dG1w X2RpcnR5ID0gZmFsc2U7DQo+PiArICAgICAgICAgICAgICAgICAgICAgICB9DQo+PiArICAg ICAgICAgICAgICAgICAgICAgICBicmVhazsNCj4+ICsgICAgICAgICAgICAgICBjYXNlIE5B TkRfQ01EX1JFQURJRDoNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgIGlmIChjaGlwLT5v bmZpWzBdICYmIGNvbHVtbiA9PSAweDIwKQ0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBuZXdfc3RhdGUgPSBTVEFURV9SRUFEX09ORkk7DQo+PiArICAgICAgICAgICAg ICAgICAgICAgICBlbHNlDQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5l d19zdGF0ZSA9IFNUQVRFX1JFQURfSUQ7DQo+PiArICAgICAgICAgICAgICAgICAgICAgICBj aGlwLT5jb2x1bW4gPSAwOw0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQo+ PiArICAgICAgICAgICAgICAgY2FzZSBOQU5EX0NNRF9QQVJBTToNCj4+ICsgICAgICAgICAg ICAgICAgICAgICAgIGlmIChjaGlwLT5vbmZpWzBdICYmICFjb2x1bW4pDQo+PiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIG5ld19zdGF0ZSA9IFNUQVRFX1BBUkFNX09ORkk7 DQo+PiArICAgICAgICAgICAgICAgICAgICAgICBlbHNlDQo+PiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIG5ld19zdGF0ZSA9IFNUQVRFX0lETEU7DQo+PiArICAgICAgICAg ICAgICAgICAgICAgICBicmVhazsNCj4+ICsgICAgICAgICAgICAgICBjYXNlIE5BTkRfQ01E X1JFU0VUOg0KPj4gK3Jlc2V0Og0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgbmV3X3N0 YXRlID0gU1RBVEVfSURMRTsNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgIGNoaXAtPmNv bHVtbiA9IC0xOw0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgY2hpcC0+cGFnZV9hZGRy ID0gLTE7DQo+PiArICAgICAgICAgICAgICAgICAgICAgICBjaGlwLT5zdGF0dXMgPSB+TkFO RF9TVEFUVVNfRkFJTDsNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KPj4g KyAgICAgICAgICAgICAgIGRlZmF1bHQ6DQo+PiArICAgICAgICAgICAgICAgICAgICAgICBu ZXdfc3RhdGUgPSBTVEFURV9JRExFOw0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgU0FO RF9ERUJVRyhjaGlwLCAiVW5zdXBwb3J0ZWQgY29tbWFuZCAlMDJ4XG4iLCBjb21tYW5kKTsN Cj4+ICsgICAgICAgICAgICAgICB9DQo+PiArICAgICAgIH0NCj4+ICsNCj4+ICsgICAgICAg dG9fc3RhdGUoY2hpcCwgbmV3X3N0YXRlKTsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIHZv aWQgc2FuZF9uYW5kX3NlbGVjdF9jaGlwKHN0cnVjdCBtdGRfaW5mbyAqbXRkLCBpbnQgbikN Cj4+ICt7DQo+PiArICAgICAgIHN0cnVjdCBuYW5kX2NoaXAgKm5hbmQgPSBtdGRfdG9fbmFu ZChtdGQpOw0KPj4gKyAgICAgICBzdHJ1Y3Qgc2FuZF9uYW5kX2NoaXAgKmNoaXAgPSB0b19z YW5kX25hbmQobmFuZCk7DQo+PiArDQo+PiArICAgICAgIGNoaXAtPnNlbGVjdGVkID0gIW47 DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyB2b2lkIHNhbmRfbmFuZF9yZWFkX2J1ZihzdHJ1 Y3QgbXRkX2luZm8gKm10ZCwgdTggKmJ1ZiwgaW50IGxlbikNCj4+ICt7DQo+PiArICAgICAg IHN0cnVjdCBuYW5kX2NoaXAgKm5hbmQgPSBtdGRfdG9fbmFuZChtdGQpOw0KPj4gKyAgICAg ICBzdHJ1Y3Qgc2FuZF9uYW5kX2NoaXAgKmNoaXAgPSB0b19zYW5kX25hbmQobmFuZCk7DQo+ PiArICAgICAgIHVuc2lnbmVkIGludCB0b19jb3B5Ow0KPj4gKyAgICAgICBpbnQgc3JjX2xl biA9IDA7DQo+PiArICAgICAgIGNvbnN0IHU4ICpzcmMgPSBOVUxMOw0KPj4gKw0KPj4gKyAg ICAgICBpZiAoIWNoaXAtPnNlbGVjdGVkKQ0KPj4gKyAgICAgICAgICAgICAgIGdvdG8gY29w eTsNCj4+ICsNCj4+ICsgICAgICAgc3dpdGNoIChjaGlwLT5zdGF0ZSkgew0KPj4gKyAgICAg ICBjYXNlIFNUQVRFX1JFQUQ6DQo+PiArICAgICAgICAgICAgICAgc3JjID0gY2hpcC0+dG1w Ow0KPj4gKyAgICAgICAgICAgICAgIHNyY19sZW4gPSBjaGlwLT5jaHVua3NpemU7DQo+PiAr ICAgICAgICAgICAgICAgYnJlYWs7DQo+PiArICAgICAgIGNhc2UgU1RBVEVfUkVBRF9JRDoN Cj4+ICsgICAgICAgICAgICAgICBzcmMgPSBjaGlwLT5pZDsNCj4+ICsgICAgICAgICAgICAg ICBzcmNfbGVuID0gY2hpcC0+aWRfbGVuOw0KPj4gKyAgICAgICAgICAgICAgIGJyZWFrOw0K Pj4gKyAgICAgICBjYXNlIFNUQVRFX1JFQURfT05GSToNCj4+ICsgICAgICAgICAgICAgICBz cmMgPSAiT05GSSI7DQo+PiArICAgICAgICAgICAgICAgc3JjX2xlbiA9IDQ7DQo+PiArICAg ICAgICAgICAgICAgYnJlYWs7DQo+PiArICAgICAgIGNhc2UgU1RBVEVfUEFSQU1fT05GSToN Cj4+ICsgICAgICAgICAgICAgICBzcmMgPSBjaGlwLT5vbmZpOw0KPj4gKyAgICAgICAgICAg ICAgIHNyY19sZW4gPSBzaXplb2YoY2hpcC0+b25maSk7DQo+PiArICAgICAgICAgICAgICAg YnJlYWs7DQo+PiArICAgICAgIGNhc2UgU1RBVEVfU1RBVFVTOg0KPj4gKyAgICAgICAgICAg ICAgIHNyYyA9ICZjaGlwLT5zdGF0dXM7DQo+PiArICAgICAgICAgICAgICAgc3JjX2xlbiA9 IDE7DQo+PiArICAgICAgICAgICAgICAgYnJlYWs7DQo+PiArICAgICAgIGRlZmF1bHQ6DQo+ PiArICAgICAgICAgICAgICAgYnJlYWs7DQo+PiArICAgICAgIH0NCj4+ICsNCj4+ICtjb3B5 Og0KPj4gKyAgICAgICBpZiAoY2hpcC0+Y29sdW1uID49IDApDQo+PiArICAgICAgICAgICAg ICAgdG9fY29weSA9IG1heChtaW4obGVuLCBzcmNfbGVuIC0gY2hpcC0+Y29sdW1uKSwgMCk7 DQo+PiArICAgICAgIGVsc2UNCj4+ICsgICAgICAgICAgICAgICB0b19jb3B5ID0gMDsNCj4+ ICsgICAgICAgbWVtY3B5KGJ1Ziwgc3JjICsgY2hpcC0+Y29sdW1uLCB0b19jb3B5KTsNCj4+ ICsgICAgICAgbWVtc2V0KGJ1ZiArIHRvX2NvcHksIDB4ZmYsIGxlbiAtIHRvX2NvcHkpOw0K Pj4gKyAgICAgICBjaGlwLT5jb2x1bW4gKz0gdG9fY29weTsNCj4+ICsNCj4+ICsgICAgICAg aWYgKGxlbiA9PSAxKSB7DQo+PiArICAgICAgICAgICAgICAgU0FORF9ERUJVRyhjaGlwLCAi cmVhZCBbICUwMnggXVxuIiwgYnVmWzBdKTsNCj4+ICsgICAgICAgfSBlbHNlIGlmIChzcmNf bGVuKSB7DQo+PiArICAgICAgICAgICAgICAgU0FORF9ERUJVRyhjaGlwLCAicmVhZCAlZCBi eXRlc1xuIiwgbGVuKTsNCj4+ICsjaWZkZWYgVkVSQk9TRV9ERUJVRw0KPj4gKyAgICAgICAg ICAgICAgIHByaW50X2hleF9kdW1wX2J5dGVzKCIiLCBEVU1QX1BSRUZJWF9PRkZTRVQsIGJ1 ZiwgbGVuKTsNCj4+ICsjZW5kaWYNCj4+ICsgICAgICAgfQ0KPj4gKw0KPj4gKyAgICAgICBp ZiAoc3JjX2xlbiAmJiBjaGlwLT5jb2x1bW4gPT0gc3JjX2xlbikNCj4+ICsgICAgICAgICAg ICAgICB0b19zdGF0ZShjaGlwLCBTVEFURV9JRExFKTsNCj4+ICt9DQo+PiArDQo+PiArc3Rh dGljIHU4IHNhbmRfbmFuZF9yZWFkX2J5dGUoc3RydWN0IG10ZF9pbmZvICptdGQpDQo+PiAr ew0KPj4gKyAgICAgICB1OCByZXQ7DQo+PiArDQo+PiArICAgICAgIHNhbmRfbmFuZF9yZWFk X2J1ZihtdGQsICZyZXQsIDEpOw0KPj4gKyAgICAgICByZXR1cm4gcmV0Ow0KPj4gK30NCj4+ ICsNCj4+ICtzdGF0aWMgdTE2IHNhbmRfbmFuZF9yZWFkX3dvcmQoc3RydWN0IG10ZF9pbmZv ICptdGQpDQo+PiArew0KPj4gKyAgICAgICBzdHJ1Y3QgbmFuZF9jaGlwICpuYW5kID0gbXRk X3RvX25hbmQobXRkKTsNCj4+ICsgICAgICAgc3RydWN0IHNhbmRfbmFuZF9jaGlwICpjaGlw ID0gdG9fc2FuZF9uYW5kKG5hbmQpOw0KPj4gKw0KPj4gKyAgICAgICBTQU5EX0RFQlVHKGNo aXAsICIxNi1iaXQgYWNjZXNzIHVuc3VwcG9ydGVkXG4iKTsNCj4+ICsgICAgICAgcmV0dXJu IHNhbmRfbmFuZF9yZWFkX2J5dGUobXRkKSB8IDB4ZmYwMDsNCj4+ICt9DQo+PiArDQo+PiAr c3RhdGljIHZvaWQgc2FuZF9uYW5kX3dyaXRlX2J1ZihzdHJ1Y3QgbXRkX2luZm8gKm10ZCwg Y29uc3QgdTggKmJ1ZiwgaW50IGxlbikNCj4+ICt7DQo+PiArICAgICAgIHN0cnVjdCBuYW5k X2NoaXAgKm5hbmQgPSBtdGRfdG9fbmFuZChtdGQpOw0KPj4gKyAgICAgICBzdHJ1Y3Qgc2Fu ZF9uYW5kX2NoaXAgKmNoaXAgPSB0b19zYW5kX25hbmQobmFuZCk7DQo+PiArDQo+PiArICAg ICAgIFNBTkRfREVCVUcoY2hpcCwgIndyaXRlICVkIGJ5dGVzXG4iLCBsZW4pOw0KPj4gKyNp ZmRlZiBWRVJCT1NFX0RFQlVHDQo+PiArICAgICAgIHByaW50X2hleF9kdW1wX2J5dGVzKCIi LCBEVU1QX1BSRUZJWF9PRkZTRVQsIGJ1ZiwgbGVuKTsNCj4+ICsjZW5kaWYNCj4+ICsNCj4+ ICsgICAgICAgaWYgKGNoaXAtPnN0YXRlICE9IFNUQVRFX1BST0cgfHwgY2hpcC0+c3RhdHVz ICYgTkFORF9TVEFUVVNfRkFJTCkNCj4+ICsgICAgICAgICAgICAgICByZXR1cm47DQo+PiAr DQo+PiArICAgICAgIGNoaXAtPnRtcF9kaXJ0eSA9IHRydWU7DQo+PiArICAgICAgIGxlbiA9 IG1pbigodW5zaWduZWQgaW50KWxlbiwgY2hpcC0+Y2h1bmtzaXplIC0gY2hpcC0+Y29sdW1u KTsNCj4+ICsgICAgICAgbWVtY3B5KGNoaXAtPnRtcCArIGNoaXAtPmNvbHVtbiwgYnVmLCBs ZW4pOw0KPj4gKyAgICAgICBjaGlwLT5jb2x1bW4gKz0gbGVuOw0KPj4gK30NCj4+ICsNCj4+ ICtzdGF0aWMgc3RydWN0IG5hbmRfY2hpcCAqbmFuZF9jaGlwOw0KPj4gKw0KPj4gK2ludCBz YW5kX25hbmRfcmVtb3ZlKHN0cnVjdCB1ZGV2aWNlICpkZXYpDQo+PiArew0KPj4gKyAgICAg ICBzdHJ1Y3Qgc2FuZF9uYW5kX3ByaXYgKnByaXYgPSBkZXZfZ2V0X3ByaXYoZGV2KTsNCj4+ ICsgICAgICAgc3RydWN0IHNhbmRfbmFuZF9jaGlwICpjaGlwOw0KPj4gKw0KPj4gKyAgICAg ICBsaXN0X2Zvcl9lYWNoX2VudHJ5KGNoaXAsICZwcml2LT5jaGlwcywgbm9kZSkgew0KPj4g KyAgICAgICAgICAgICAgIHN0cnVjdCBuYW5kX2NoaXAgKm5hbmQgPSAmY2hpcC0+bmFuZDsN Cj4+ICsNCj4+ICsgICAgICAgICAgICAgICBpZiAobmFuZF9jaGlwID09IG5hbmQpDQo+PiAr ICAgICAgICAgICAgICAgICAgICAgICBuYW5kX2NoaXAgPSBOVUxMOw0KPj4gKw0KPj4gKyAg ICAgICAgICAgICAgIG5hbmRfdW5yZWdpc3RlcihuYW5kX3RvX210ZChuYW5kKSk7DQo+PiAr ICAgICAgICAgICAgICAgZnJlZShjaGlwLT5wcm9ncmFtbWVkKTsNCj4+ICsgICAgICAgICAg ICAgICBvc19jbG9zZShjaGlwLT5mZCk7DQo+PiArICAgICAgICAgICAgICAgZnJlZShjaGlw KTsNCj4+ICsgICAgICAgfQ0KPj4gKw0KPj4gKyAgICAgICByZXR1cm4gMDsNCj4+ICt9DQo+ PiArDQo+PiArc3RhdGljIGludCBzYW5kX25hbmRfcHJvYmUoc3RydWN0IHVkZXZpY2UgKmRl dikNCj4+ICt7DQo+PiArICAgICAgIHN0cnVjdCBzYW5kX25hbmRfcHJpdiAqcHJpdiA9IGRl dl9nZXRfcHJpdihkZXYpOw0KPj4gKyAgICAgICBzdHJ1Y3Qgc2FuZF9uYW5kX2NoaXAgKmNo aXA7DQo+PiArICAgICAgIGludCByZXQsIGRldm51bSA9IDA7DQo+PiArICAgICAgIG9mbm9k ZSBucDsNCj4+ICsNCj4+ICsgICAgICAgSU5JVF9MSVNUX0hFQUQoJnByaXYtPmNoaXBzKTsN Cj4+ICsNCj4+ICsgICAgICAgZGV2X2Zvcl9lYWNoX3N1Ym5vZGUobnAsIGRldikgew0KPj4g KyAgICAgICAgICAgICAgIHN0cnVjdCBuYW5kX2NoaXAgKm5hbmQ7DQo+PiArICAgICAgICAg ICAgICAgc3RydWN0IG10ZF9pbmZvICptdGQ7DQo+PiArICAgICAgICAgICAgICAgdTMyIGVy YXNlc2l6ZSwgb29ic2l6ZSwgcGFnZXNpemUsIHBhZ2VzOw0KPj4gKyAgICAgICAgICAgICAg IHUzMiBlcnJfY291bnQsIGVycl9zdGVwX3NpemUsIGVjY19ieXRlczsNCj4+ICsgICAgICAg ICAgICAgICBvZmZfdCBleHBlY3RlZF9zaXplOw0KPj4gKyAgICAgICAgICAgICAgIGNoYXIg ZmlsZW5hbWVbMzBdOw0KPj4gKyAgICAgICAgICAgICAgIGZkdF9hZGRyX3QgY3M7DQo+PiAr ICAgICAgICAgICAgICAgY29uc3QgdTggKmlkLCAqb25maTsNCj4+ICsgICAgICAgICAgICAg ICBpbnQgaWRfbGVuLCBvbmZpX2xlbjsNCj4+ICsNCj4+ICsgICAgICAgICAgICAgICBjcyA9 IG9mbm9kZV9nZXRfYWRkcl9zaXplX2luZGV4X25vdHJhbnMobnAsIDAsIE5VTEwpOw0KPj4g KyAgICAgICAgICAgICAgIGlmIChjcyA9PSBGRFRfQUREUl9UX05PTkUpIHsNCj4+ICsgICAg ICAgICAgICAgICAgICAgICAgIGRldl9kYmcoZGV2LCAiSW52YWxpZCBjcyBmb3IgY2hpcCAl c1xuIiwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zub2RlX2dldF9u YW1lKG5wKSk7DQo+PiArICAgICAgICAgICAgICAgICAgICAgICByZXQgPSAtRU5PRU5UOw0K Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnI7DQo+PiArICAgICAgICAgICAg ICAgfQ0KPj4gKw0KPj4gKyAgICAgICAgICAgICAgIGlkID0gb2Zub2RlX3JlYWRfcHJvcChu cCwgInNhbmRib3gsaWQiLCAmaWRfbGVuKTsNCj4+ICsgICAgICAgICAgICAgICBpZiAoIWlk KSB7DQo+PiArICAgICAgICAgICAgICAgICAgICAgICBkZXZfZGJnKGRldiwgIk5vIHNhbmRi b3gsaWQgcHJvcGVydHkgZm9yIGNoaXAgJXNcbiIsDQo+PiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIG9mbm9kZV9nZXRfbmFtZShucCkpOw0KPj4gKyAgICAgICAgICAgICAg ICAgICAgICAgcmV0ID0gLUVJTlZBTDsNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgIGdv dG8gZXJyOw0KPj4gKyAgICAgICAgICAgICAgIH0NCj4+ICsNCj4+ICsgICAgICAgICAgICAg ICBvbmZpID0gb2Zub2RlX3JlYWRfcHJvcChucCwgInNhbmRib3gsb25maSIsICZvbmZpX2xl bik7DQo+PiArICAgICAgICAgICAgICAgaWYgKG9uZmkgJiYgb25maV9sZW4gIT0gc2l6ZW9m KHN0cnVjdCBuYW5kX29uZmlfcGFyYW1zKSkgew0KPj4gKyAgICAgICAgICAgICAgICAgICAg ICAgZGV2X2RiZyhkZXYsICJJbnZhbGlkIGxlbmd0aCAlZCBmb3Igb25maSBwYXJhbXNcbiIs DQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uZmlfbGVuKTsNCj4+ICsg ICAgICAgICAgICAgICAgICAgICAgIHJldCA9IC1FSU5WQUw7DQo+PiArICAgICAgICAgICAg ICAgICAgICAgICBnb3RvIGVycjsNCj4+ICsgICAgICAgICAgICAgICB9DQo+PiArDQo+PiAr ICAgICAgICAgICAgICAgcmV0ID0gb2Zub2RlX3JlYWRfdTMyKG5wLCAic2FuZGJveCxlcmFz ZXNpemUiLCAmZXJhc2VzaXplKTsNCj4+ICsgICAgICAgICAgICAgICBpZiAocmV0KSB7DQo+ PiArICAgICAgICAgICAgICAgICAgICAgICBkZXZfZGJnKGRldiwgIk5vIHNhbmRib3gsZXJh c2VzaXplIHByb3BlcnR5IGZvciBjaGlwICVzIiwNCj4+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgb2Zub2RlX2dldF9uYW1lKG5wKSk7DQo+PiArICAgICAgICAgICAgICAg ICAgICAgICBnb3RvIGVycjsNCj4+ICsgICAgICAgICAgICAgICB9DQo+PiArDQo+PiArICAg ICAgICAgICAgICAgcmV0ID0gb2Zub2RlX3JlYWRfdTMyKG5wLCAic2FuZGJveCxvb2JzaXpl IiwgJm9vYnNpemUpOw0KPj4gKyAgICAgICAgICAgICAgIGlmIChyZXQpIHsNCj4+ICsgICAg ICAgICAgICAgICAgICAgICAgIGRldl9kYmcoZGV2LCAiTm8gc2FuZGJveCxvb2JzaXplIHBy b3BlcnR5IGZvciBjaGlwICVzIiwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgb2Zub2RlX2dldF9uYW1lKG5wKSk7DQo+PiArICAgICAgICAgICAgICAgICAgICAgICBn b3RvIGVycjsNCj4+ICsgICAgICAgICAgICAgICB9DQo+PiArDQo+PiArICAgICAgICAgICAg ICAgcmV0ID0gb2Zub2RlX3JlYWRfdTMyKG5wLCAic2FuZGJveCxwYWdlc2l6ZSIsICZwYWdl c2l6ZSk7DQo+PiArICAgICAgICAgICAgICAgaWYgKHJldCkgew0KPj4gKyAgICAgICAgICAg ICAgICAgICAgICAgZGV2X2RiZyhkZXYsICJObyBzYW5kYm94LHBhZ2VzaXplIHByb3BlcnR5 IGZvciBjaGlwICVzIiwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zu b2RlX2dldF9uYW1lKG5wKSk7DQo+PiArICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVy cjsNCj4+ICsgICAgICAgICAgICAgICB9DQo+PiArDQo+PiArICAgICAgICAgICAgICAgcmV0 ID0gb2Zub2RlX3JlYWRfdTMyKG5wLCAic2FuZGJveCxwYWdlcyIsICZwYWdlcyk7DQo+PiAr ICAgICAgICAgICAgICAgaWYgKHJldCkgew0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAg ZGV2X2RiZyhkZXYsICJObyBzYW5kYm94LHBhZ2VzIHByb3BlcnR5IGZvciBjaGlwICVzIiwN Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zub2RlX2dldF9uYW1lKG5w KSk7DQo+PiArICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycjsNCj4+ICsgICAgICAg ICAgICAgICB9DQo+PiArDQo+PiArICAgICAgICAgICAgICAgcmV0ID0gb2Zub2RlX3JlYWRf dTMyKG5wLCAic2FuZGJveCxlcnItY291bnQiLCAmZXJyX2NvdW50KTsNCj4+ICsgICAgICAg ICAgICAgICBpZiAocmV0KSB7DQo+PiArICAgICAgICAgICAgICAgICAgICAgICBkZXZfZGJn KGRldiwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vIHNhbmRib3gs ZXJyLWNvdW50IHByb3BlcnR5IGZvciBjaGlwICVzIiwNCj4+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgb2Zub2RlX2dldF9uYW1lKG5wKSk7DQo+PiArICAgICAgICAgICAg ICAgICAgICAgICBnb3RvIGVycjsNCj4+ICsgICAgICAgICAgICAgICB9DQo+PiArDQo+PiAr ICAgICAgICAgICAgICAgcmV0ID0gb2Zub2RlX3JlYWRfdTMyKG5wLCAic2FuZGJveCxlcnIt c3RlcC1zaXplIiwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg JmVycl9zdGVwX3NpemUpOw0KPj4gKyAgICAgICAgICAgICAgIGlmIChyZXQpIHsNCj4+ICsg ICAgICAgICAgICAgICAgICAgICAgIGRldl9kYmcoZGV2LA0KPj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAiTm8gc2FuZGJveCxlcnItc3RlcC1zaXplIHByb3BlcnR5IGZv ciBjaGlwICVzIiwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zub2Rl X2dldF9uYW1lKG5wKSk7DQo+PiArICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycjsN Cj4+ICsgICAgICAgICAgICAgICB9DQo+PiArDQo+PiArICAgICAgICAgICAgICAgcmV0ID0g b2Zub2RlX3JlYWRfdTMyKG5wLCAic2FuZGJveCxlY2MtYnl0ZXMiLCAmZWNjX2J5dGVzKTsN Cj4+ICsgICAgICAgICAgICAgICBpZiAocmV0KSB7DQo+PiArICAgICAgICAgICAgICAgICAg ICAgICBkZXZfZGJnKGRldiwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Ik5vIHNhbmRib3gsZWNjLWJ5dGVzIHByb3BlcnR5IGZvciBjaGlwICVzIiwNCj4+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zub2RlX2dldF9uYW1lKG5wKSk7DQo+PiAr ICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycjsNCj4+ICsgICAgICAgICAgICAgICB9 DQo+PiArDQo+PiArICAgICAgICAgICAgICAgY2hpcCA9IGNhbGxvYyhzaXplb2YoKmNoaXAp LCAxKTsNCj4+ICsgICAgICAgICAgICAgICBpZiAoIWNoaXApIHsNCj4+ICsgICAgICAgICAg ICAgICAgICAgICAgIHJldCA9IC1FTk9NRU07DQo+PiArICAgICAgICAgICAgICAgICAgICAg ICBnb3RvIGVycjsNCj4+ICsgICAgICAgICAgICAgICB9DQo+PiArDQo+PiArICAgICAgICAg ICAgICAgY2hpcC0+Y3MgPSBjczsNCj4+ICsgICAgICAgICAgICAgICBjaGlwLT5pZCA9IGlk Ow0KPj4gKyAgICAgICAgICAgICAgIGNoaXAtPmlkX2xlbiA9IGlkX2xlbjsNCj4+ICsgICAg ICAgICAgICAgICBjaGlwLT5jaHVua3NpemUgPSBwYWdlc2l6ZSArIG9vYnNpemU7DQo+PiAr ICAgICAgICAgICAgICAgY2hpcC0+cGFnZXNpemUgPSBwYWdlc2l6ZTsNCj4+ICsgICAgICAg ICAgICAgICBjaGlwLT5wYWdlcyA9IHBhZ2VzOw0KPj4gKyAgICAgICAgICAgICAgIGNoaXAt PnBhZ2VzX3Blcl9lcmFzZSA9IGVyYXNlc2l6ZSAvIHBhZ2VzaXplOw0KPj4gKyAgICAgICAg ICAgICAgIG1lbXNldChjaGlwLT50bXAsIDB4ZmYsIGNoaXAtPmNodW5rc2l6ZSk7DQo+PiAr DQo+PiArICAgICAgICAgICAgICAgY2hpcC0+ZXJyX2NvdW50ID0gZXJyX2NvdW50Ow0KPj4g KyAgICAgICAgICAgICAgIGNoaXAtPmVycl9zdGVwX2JpdHMgPSBlcnJfc3RlcF9zaXplICog ODsNCj4+ICsgICAgICAgICAgICAgICBjaGlwLT5lcnJfc3RlcHMgPSBwYWdlc2l6ZSAvIGVy cl9zdGVwX3NpemU7DQo+PiArICAgICAgICAgICAgICAgY2hpcC0+ZWNjX2JpdHMgPSBlY2Nf Ynl0ZXMgKiA4Ow0KPj4gKw0KPj4gKyAgICAgICAgICAgICAgIGV4cGVjdGVkX3NpemUgPSAo b2ZmX3QpcGFnZXMgKiBjaGlwLT5jaHVua3NpemU7DQo+PiArICAgICAgICAgICAgICAgc25w cmludGYoZmlsZW5hbWUsIHNpemVvZihmaWxlbmFtZSksDQo+PiArICAgICAgICAgICAgICAg ICAgICAgICAgIi90bXAvdS1ib290Lm5hbmQlZC5YWFhYWFgiLCBkZXZudW0pOw0KPj4gKyAg ICAgICAgICAgICAgIGNoaXAtPmZkID0gb3NfbWt0ZW1wKGZpbGVuYW1lLCBleHBlY3RlZF9z aXplKTsNCj4+ICsgICAgICAgICAgICAgICBpZiAoY2hpcC0+ZmQgPCAwKSB7DQo+PiArICAg ICAgICAgICAgICAgICAgICAgICBkZXZfZGJnKGRldiwgIkNvdWxkIG5vdCBjcmVhdGUgdGVt cCBmaWxlICVzXG4iLA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxl bmFtZSk7DQo+PiArICAgICAgICAgICAgICAgICAgICAgICByZXQgPSBjaGlwLT5mZDsNCj4+ ICsgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyX2NoaXA7DQo+PiArICAgICAgICAg ICAgICAgfQ0KPj4gKw0KPj4gKyAgICAgICAgICAgICAgIGNoaXAtPnByb2dyYW1tZWQgPSBj YWxsb2Moc2l6ZW9mKGxvbmcpLA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgQklUU19UT19MT05HUyhwYWdlcykpOw0KPj4gKyAgICAgICAgICAgICAg IGlmICghY2hpcC0+cHJvZ3JhbW1lZCkgew0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAg cmV0ID0gLUVOT01FTTsNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyX2Zk Ow0KPj4gKyAgICAgICAgICAgICAgIH0NCj4+ICsNCj4+ICsgICAgICAgICAgICAgICBpZiAo b25maSkgew0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgbWVtY3B5KGNoaXAtPm9uZmks IG9uZmksIG9uZmlfbGVuKTsNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgIG1lbWNweShj aGlwLT5vbmZpICsgb25maV9sZW4sIG9uZmksIG9uZmlfbGVuKTsNCj4+ICsgICAgICAgICAg ICAgICAgICAgICAgIG1lbWNweShjaGlwLT5vbmZpICsgMiAqIG9uZmlfbGVuLCBvbmZpLCBv bmZpX2xlbik7DQo+PiArICAgICAgICAgICAgICAgfQ0KPj4gKw0KPj4gKyAgICAgICAgICAg ICAgIG5hbmQgPSAmY2hpcC0+bmFuZDsNCj4+ICsgICAgICAgICAgICAgICBuYW5kLT5mbGFz aF9ub2RlID0gbnA7DQo+PiArICAgICAgICAgICAgICAgbmFuZC0+ZGV2X3JlYWR5ID0gc2Fu ZF9uYW5kX2Rldl9yZWFkeTsNCj4+ICsgICAgICAgICAgICAgICBuYW5kLT5jbWRmdW5jID0g c2FuZF9uYW5kX2NvbW1hbmQ7DQo+PiArICAgICAgICAgICAgICAgbmFuZC0+d2FpdGZ1bmMg PSBzYW5kX25hbmRfd2FpdDsNCj4+ICsgICAgICAgICAgICAgICBuYW5kLT5zZWxlY3RfY2hp cCA9IHNhbmRfbmFuZF9zZWxlY3RfY2hpcDsNCj4+ICsgICAgICAgICAgICAgICBuYW5kLT5y ZWFkX2J5dGUgPSBzYW5kX25hbmRfcmVhZF9ieXRlOw0KPj4gKyAgICAgICAgICAgICAgIG5h bmQtPnJlYWRfd29yZCA9IHNhbmRfbmFuZF9yZWFkX3dvcmQ7DQo+PiArICAgICAgICAgICAg ICAgbmFuZC0+cmVhZF9idWYgPSBzYW5kX25hbmRfcmVhZF9idWY7DQo+PiArICAgICAgICAg ICAgICAgbmFuZC0+d3JpdGVfYnVmID0gc2FuZF9uYW5kX3dyaXRlX2J1ZjsNCj4+ICsgICAg ICAgICAgICAgICBuYW5kLT5lY2Mub3B0aW9ucyA9IE5BTkRfRUNDX0dFTkVSSUNfRVJBU0VE X0NIRUNLOw0KPj4gKw0KPj4gKyAgICAgICAgICAgICAgIG10ZCA9IG5hbmRfdG9fbXRkKG5h bmQpOw0KPj4gKyAgICAgICAgICAgICAgIG10ZC0+ZGV2ID0gZGV2Ow0KPj4gKw0KPj4gKyAg ICAgICAgICAgICAgIHJldCA9IG5hbmRfc2NhbihtdGQsIENPTkZJR19TWVNfTkFORF9NQVhf Q0hJUFMpOw0KPj4gKyAgICAgICAgICAgICAgIGlmIChyZXQpIHsNCj4+ICsgICAgICAgICAg ICAgICAgICAgICAgIGRldl9kYmcoZGV2LCAiQ291bGQgbm90IHNjYW4gY2hpcCAlczogJWRc biIsDQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mbm9kZV9nZXRfbmFt ZShucCksIHJldCk7DQo+PiArICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycl9wcm9n Ow0KPj4gKyAgICAgICAgICAgICAgIH0NCj4+ICsNCj4+ICsgICAgICAgICAgICAgICByZXQg PSBuYW5kX3JlZ2lzdGVyKGRldm51bSwgbXRkKTsNCj4+ICsgICAgICAgICAgICAgICBpZiAo cmV0KSB7DQo+PiArICAgICAgICAgICAgICAgICAgICAgICBkZXZfZGJnKGRldiwgIkNvdWxk IG5vdCByZWdpc3RlciBuYW5kICVkOiAlZFxuIiwgZGV2bnVtLA0KPj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICByZXQpOw0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAg Z290byBlcnJfcHJvZzsNCj4+ICsgICAgICAgICAgICAgICB9DQo+PiArDQo+PiArICAgICAg ICAgICAgICAgaWYgKCFuYW5kX2NoaXApDQo+PiArICAgICAgICAgICAgICAgICAgICAgICBu YW5kX2NoaXAgPSBuYW5kOw0KPj4gKw0KPj4gKyAgICAgICAgICAgICAgIGxpc3RfYWRkX3Rh aWwoJmNoaXAtPm5vZGUsICZwcml2LT5jaGlwcyk7DQo+PiArICAgICAgICAgICAgICAgZGV2 bnVtKys7DQo+PiArICAgICAgICAgICAgICAgY29udGludWU7DQo+PiArDQo+PiArZXJyX3By b2c6DQo+PiArICAgICAgICAgICAgICAgZnJlZShjaGlwLT5wcm9ncmFtbWVkKTsNCj4+ICtl cnJfZmQ6DQo+PiArICAgICAgICAgICAgICAgb3NfY2xvc2UoY2hpcC0+ZmQpOw0KPj4gK2Vy cl9jaGlwOg0KPj4gKyAgICAgICAgICAgICAgIGZyZWUoY2hpcCk7DQo+PiArICAgICAgICAg ICAgICAgZ290byBlcnI7DQo+PiArICAgICAgIH0NCj4+ICsNCj4+ICsgICAgICAgcmV0dXJu IDA7DQo+PiArDQo+PiArZXJyOg0KPj4gKyAgICAgICBzYW5kX25hbmRfcmVtb3ZlKGRldik7 DQo+PiArICAgICAgIHJldHVybiByZXQ7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyBjb25z dCBzdHJ1Y3QgdWRldmljZV9pZCBzYW5kX25hbmRfaWRzW10gPSB7DQo+PiArICAgICAgIHsg LmNvbXBhdGlibGUgPSAic2FuZGJveCxuYW5kIiB9LA0KPj4gKyAgICAgICB7IH0NCj4+ICt9 Ow0KPj4gKw0KPj4gK1VfQk9PVF9EUklWRVIoc2FuZF9uYW5kKSA9IHsNCj4+ICsgICAgICAg Lm5hbWUgICAgICAgICAgID0gInNhbmQtbmFuZCIsDQo+PiArICAgICAgIC5pZCAgICAgICAg ICAgICA9IFVDTEFTU19NVEQsDQo+PiArICAgICAgIC5vZl9tYXRjaCAgICAgICA9IHNhbmRf bmFuZF9pZHMsDQo+PiArICAgICAgIC5wcm9iZSAgICAgICAgICA9IHNhbmRfbmFuZF9wcm9i ZSwNCj4+ICsgICAgICAgLnJlbW92ZSAgICAgICAgID0gc2FuZF9uYW5kX3JlbW92ZSwNCj4+ ICsgICAgICAgLnByaXZfYXV0byAgICAgID0gc2l6ZW9mKHN0cnVjdCBzYW5kX25hbmRfcHJp diksDQo+PiArfTsNCj4+ICsNCj4+ICt2b2lkIGJvYXJkX25hbmRfaW5pdCh2b2lkKQ0KPj4g K3sNCj4+ICsgICAgICAgc3RydWN0IHVkZXZpY2UgKmRldjsNCj4+ICsgICAgICAgaW50IGVy cjsNCj4+ICsNCj4+ICsgICAgICAgZXJyID0gdWNsYXNzX2dldF9kZXZpY2VfYnlfZHJpdmVy KFVDTEFTU19NVEQsIERNX0RSSVZFUl9SRUYoc2FuZF9uYW5kKSwNCj4+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZkZXYpOw0KPj4gKyAgICAgICBpZiAo ZXJyICYmIGVyciAhPSAtRU5PREVWKQ0KPj4gKyAgICAgICAgICAgICAgIGxvZ19pbmZvKCJG YWlsZWQgdG8gZ2V0IHNhbmRib3ggTkFORDogJWRcbiIsIGVycik7DQo+PiArfQ0KPj4gZGlm ZiAtLWdpdCBhL3Rlc3QvZG0vTWFrZWZpbGUgYi90ZXN0L2RtL01ha2VmaWxlDQo+PiBpbmRl eCBjYjgyZDgzOWY4YS4uYTNjZTdiMzg4OWYgMTAwNjQ0DQo+PiAtLS0gYS90ZXN0L2RtL01h a2VmaWxlDQo+PiArKysgYi90ZXN0L2RtL01ha2VmaWxlDQo+PiBAQCAtNzMsNiArNzMsNyBA QCBvYmotJChDT05GSUdfQ01EX01VWCkgKz0gbXV4LWNtZC5vDQo+PiAgIG9iai0kKENPTkZJ R19NVUxUSVBMRVhFUikgKz0gbXV4LWVtdWwubw0KPj4gICBvYmotJChDT05GSUdfTVVYX01N SU8pICs9IG11eC1tbWlvLm8NCj4+ICAgb2JqLXkgKz0gZmR0ZGVjLm8NCj4+ICtvYmotJChD T05GSUdfTVREX1JBV19OQU5EKSArPSBuYW5kLm8NCj4+ICAgb2JqLSQoQ09ORklHX1VUX0RN KSArPSBub3Aubw0KPj4gICBvYmoteSArPSBvZm5vZGUubw0KPj4gICBvYmoteSArPSBvZnJl YWQubw0KPj4gZGlmZiAtLWdpdCBhL3Rlc3QvZG0vbmFuZC5jIGIvdGVzdC9kbS9uYW5kLmMN Cj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+PiBpbmRleCAwMDAwMDAwMDAwMC4uYTEzMDQ5 NjUwNzINCj4+IC0tLSAvZGV2L251bGwNCj4+ICsrKyBiL3Rlc3QvZG0vbmFuZC5jDQo+PiBA QCAtMCwwICsxLDEwNiBAQA0KPj4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwt Mi4wKw0KPj4gKy8qDQo+PiArICogQ29weXJpZ2h0IChDKSAyMDIzIFNlYW4gQW5kZXJzb24g PHNlYW5nYTJAZ21haWwuY29tPg0KPj4gKyAqLw0KPj4gKw0KPj4gKyNpbmNsdWRlIDxuYW5k Lmg+DQo+PiArI2luY2x1ZGUgPHBhcnQuaD4NCj4+ICsjaW5jbHVkZSA8cmFuZC5oPg0KPj4g KyNpbmNsdWRlIDxkbS90ZXN0Lmg+DQo+PiArI2luY2x1ZGUgPHRlc3QvdGVzdC5oPg0KPj4g KyNpbmNsdWRlIDx0ZXN0L3V0Lmg+DQo+PiArI2luY2x1ZGUgPGxpbnV4L210ZC9tdGQuaD4N Cj4+ICsjaW5jbHVkZSA8bGludXgvbXRkL3Jhd25hbmQuaD4NCj4+ICsNCj4+ICtzdGF0aWMg aW50IGRtX3Rlc3RfbmFuZChzdHJ1Y3QgdW5pdF90ZXN0X3N0YXRlICp1dHMsIGludCBkZXYs IGJvb2wgZW5kKQ0KPj4gK3sNCj4+ICsgICAgICAgbmFuZF9lcmFzZV9vcHRpb25zX3Qgb3B0 cyA9IHsgfTsNCj4+ICsgICAgICAgc3RydWN0IG10ZF9pbmZvICptdGQ7DQo+PiArICAgICAg IHNpemVfdCBsZW5ndGg7DQo+PiArICAgICAgIGxvZmZfdCBzaXplOw0KPj4gKyAgICAgICBj aGFyICpidWY7DQo+PiArICAgICAgIGludCAqZ29sZDsNCj4+ICsgICAgICAgdTggb29iW05B TkRfTUFYX09PQlNJWkVdOw0KPj4gKyAgICAgICBpbnQgaTsNCj4+ICsgICAgICAgbG9mZl90 IG9mZiA9IDA7DQo+PiArICAgICAgIG10ZF9vb2Jfb3BzX3Qgb3BzID0geyB9Ow0KPj4gKw0K Pj4gKyAgICAgICAvKiBTZWVkIFJORyBmb3IgYml0IGVycm9ycyAqLw0KPj4gKyAgICAgICBz cmFuZCgob2ZmID4+IDMyKSBeIG9mZiBeIH5kZXYpOw0KPj4gKw0KPj4gKyAgICAgICBtdGQg PSBnZXRfbmFuZF9kZXZfYnlfaW5kZXgoZGV2KTsNCj4+ICsgICAgICAgdXRfYXNzZXJ0bm9u bnVsbChtdGQpOw0KPj4gKyAgICAgICBzaXplID0gbXRkLT5lcmFzZXNpemUgKiA0Ow0KPj4g KyAgICAgICBsZW5ndGggPSBzaXplOw0KPj4gKw0KPj4gKyAgICAgICBidWYgPSBtYWxsb2Mo c2l6ZSk7DQo+PiArICAgICAgIHV0X2Fzc2VydG5vbm51bGwoYnVmKTsNCj4+ICsgICAgICAg Z29sZCA9IG1hbGxvYyhzaXplKTsNCj4+ICsgICAgICAgdXRfYXNzZXJ0bm9ubnVsbChnb2xk KTsNCj4+ICsNCj4+ICsgICAgICAgLyogTWFyayBhIGJsb2NrIGFzIGJhZCAqLw0KPj4gKyAg ICAgICB1dF9hc3NlcnRvayhtdGRfYmxvY2tfbWFya2JhZChtdGQsIG9mZiArIG10ZC0+ZXJh c2VzaXplKSk7DQo+PiArICAgICAgIC8qIFNhdmUgdGhlIE9PQiBmb3IgbGF0ZXIgKi8NCj4+ ICsgICAgICAgdXRfYXNzZXJ0b2sobXRkX3JlYWRfb29iKG10ZCwgbXRkLT5lcmFzZXNpemUs ICZvcHMpKTsNCj4+ICsNCj4+ICsgICAgICAgLyogRXJhc2Ugc29tZSBzdHVmZiAqLw0KPj4g KyAgICAgICBpZiAoZW5kKQ0KPj4gKyAgICAgICAgICAgICAgIG9mZiA9IG10ZC0+c2l6ZSAt IHNpemUgLSBtdGQtPmVyYXNlc2l6ZTsNCj4+ICsgICAgICAgb3B0cy5vZmZzZXQgPSBvZmY7 DQo+PiArICAgICAgIG9wdHMubGVuZ3RoID0gc2l6ZTsNCj4+ICsgICAgICAgb3B0cy5zcHJl YWQgPSAxOw0KPj4gKyAgICAgICBvcHRzLmxpbSA9IFUzMl9NQVg7DQo+PiArICAgICAgIHV0 X2Fzc2VydG9rKG5hbmRfZXJhc2Vfb3B0cyhtdGQsICZvcHRzKSk7DQo+PiArDQo+PiArICAg ICAgIC8qIE1ha2Ugc3VyZSBldmVyeXRoaW5nIGlzIGVyYXNlZCAqLw0KPj4gKyAgICAgICBt ZW1zZXQoZ29sZCwgMHhmZiwgc2l6ZSk7DQo+PiArICAgICAgIHV0X2Fzc2VydG9rKG5hbmRf cmVhZF9za2lwX2JhZChtdGQsIG9mZiwgJmxlbmd0aCwgTlVMTCwgVTY0X01BWCwgYnVmKSk7 DQo+PiArICAgICAgIHV0X2Fzc2VydGVxKHNpemUsIGxlbmd0aCk7DQo+PiArICAgICAgIHV0 X2Fzc2VydGVxX21lbShnb2xkLCBidWYsIHNpemUpOw0KPj4gKw0KPj4gKyAgICAgICAvKiAu Li5idXQgb3VyIGJhZCBibG9jayBtYXJrZXIgaXMgc3RpbGwgdGhlcmUgKi8NCj4+ICsgICAg ICAgb3BzLm9vYmJ1ZiA9IG9vYjsNCj4+ICsgICAgICAgb3BzLm9vYmxlbiA9IG10ZC0+b29i c2l6ZTsNCj4+ICsgICAgICAgdXRfYXNzZXJ0b2sobXRkX3JlYWRfb29iKG10ZCwgbXRkLT5l cmFzZXNpemUsICZvcHMpKTsNCj4+ICsgICAgICAgdXRfYXNzZXJ0ZXEoMCwgb29iW210ZF90 b19uYW5kKG10ZCktPmJhZGJsb2NrcG9zXSk7DQo+PiArDQo+PiArICAgICAgIC8qIEdlbmVy YXRlIHNvbWUgZGF0YSBhbmQgd3JpdGUgaXQgKi8NCj4+ICsgICAgICAgZm9yIChpID0gMDsg aSA8IHNpemUgLyBzaXplb2YoaW50KTsgaSsrKQ0KPj4gKyAgICAgICAgICAgICAgIGdvbGRb aV0gPSAwOy8vcmFuZCgpOw0KPj4gKyAgICAgICB1dF9hc3NlcnRvayhuYW5kX3dyaXRlX3Nr aXBfYmFkKG10ZCwgb2ZmLCAmbGVuZ3RoLCBOVUxMLCBVNjRfTUFYLA0KPj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkICopZ29sZCwgMCkpOw0KPj4g KyAgICAgICB1dF9hc3NlcnRlcShzaXplLCBsZW5ndGgpOw0KPj4gKw0KPj4gKyAgICAgICAv KiBWZXJpZnkgKi8NCj4+ICsgICAgICAgdXRfYXNzZXJ0b2sobmFuZF9yZWFkX3NraXBfYmFk KG10ZCwgb2ZmLCAmbGVuZ3RoLCBOVUxMLCBVNjRfTUFYLCBidWYpKTsNCj4+ICsgICAgICAg dXRfYXNzZXJ0ZXEoc2l6ZSwgbGVuZ3RoKTsNCj4+ICsgICAgICAgdXRfYXNzZXJ0ZXFfbWVt KGdvbGQsIGJ1Ziwgc2l6ZSk7DQo+PiArDQo+PiArICAgICAgIC8qIEVyYXNlIHNvbWUgYmxv Y2tzICovDQo+PiArICAgICAgIG1lbXNldCgoKGNoYXIgKilnb2xkKSArIG10ZC0+ZXJhc2Vz aXplLCAweGZmLCBtdGQtPmVyYXNlc2l6ZSAqIDIpOw0KPj4gKyAgICAgICBvcHRzLm9mZnNl dCA9IG9mZiArIG10ZC0+ZXJhc2VzaXplOw0KPj4gKyAgICAgICBvcHRzLmxlbmd0aCA9IG10 ZC0+ZXJhc2VzaXplICogMiwNCj4+ICsgICAgICAgdXRfYXNzZXJ0b2sobmFuZF9lcmFzZV9v cHRzKG10ZCwgJm9wdHMpKTsNCj4+ICsNCj4+ICsgICAgICAgLyogVmVyaWZ5ICovDQo+PiAr ICAgICAgIHV0X2Fzc2VydG9rKG5hbmRfcmVhZF9za2lwX2JhZChtdGQsIG9mZiwgJmxlbmd0 aCwgTlVMTCwgVTY0X01BWCwgYnVmKSk7DQo+PiArICAgICAgIHV0X2Fzc2VydGVxKHNpemUs IGxlbmd0aCk7DQo+PiArICAgICAgIHV0X2Fzc2VydGVxX21lbShnb2xkLCBidWYsIHNpemUp Ow0KPj4gKw0KPj4gKyAgICAgICByZXR1cm4gMDsNCj4+ICt9DQo+PiArDQo+PiArI2RlZmlu ZSBETV9OQU5EX1RFU1QoZGV2KSBcDQo+PiArc3RhdGljIGludCBkbV90ZXN0X25hbmQjI2Rl diMjX3N0YXJ0KHN0cnVjdCB1bml0X3Rlc3Rfc3RhdGUgKnV0cykgXA0KPj4gK3sgXA0KPj4g KyAgICAgICByZXR1cm4gZG1fdGVzdF9uYW5kKHV0cywgZGV2LCBmYWxzZSk7IFwNCj4+ICt9 IFwNCj4+ICtETV9URVNUKGRtX3Rlc3RfbmFuZCMjZGV2IyNfc3RhcnQsIFVUX1RFU1RGX1ND QU5fRkRUKTsgXA0KPj4gK3N0YXRpYyBpbnQgZG1fdGVzdF9uYW5kIyNkZXYjI19lbmQoc3Ry dWN0IHVuaXRfdGVzdF9zdGF0ZSAqdXRzKSBcDQo+PiAreyBcDQo+PiArICAgICAgIHJldHVy biBkbV90ZXN0X25hbmQodXRzLCBkZXYsIHRydWUpOyBcDQo+PiArfSBcDQo+PiArRE1fVEVT VChkbV90ZXN0X25hbmQjI2RldiMjX2VuZCwgVVRfVEVTVEZfU0NBTl9GRFQpDQo+PiArDQo+ PiArRE1fTkFORF9URVNUKDApOw0KPj4gK0RNX05BTkRfVEVTVCgxKTsNCj4+IC0tDQo+PiAy LjM3LjENCj4+DQo+IA0KPiANCg0K