From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id C4EF940333 for ; Sat, 19 Nov 2022 18:14:47 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 67CDE68B3C7; Sat, 19 Nov 2022 20:14:43 +0200 (EET) Received: from mail-yw1-f178.google.com (mail-yw1-f178.google.com [209.85.128.178]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 12C5D6883DD for ; Sat, 19 Nov 2022 20:14:37 +0200 (EET) Received: by mail-yw1-f178.google.com with SMTP id 00721157ae682-3876f88d320so78453337b3.6 for ; Sat, 19 Nov 2022 10:14:37 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :from:to:cc:subject:date:message-id:reply-to; bh=UydkxlGHZ8RtD7MiBP2EHIfE7d5iLlDXGvpbxOJqD5o=; b=f6mLlamdLAlRjv/7AUgxIgv3SXxjkNxNduJkM102luY9SDnpXK2TOqqy7OZeqanr8P awUAY/xsZmF5GKvlT47L0suBkZ9VW3simgwbLxPZWJSg2SCDXMXsAPSG1eYuqC/rTuQF vvisrFCs1qC6pWlr9KdPAN4jB4pbcdx91PdqeuMC+hASyEbl3FaeC7/zxnGnzbNvIjLb jtMWcY27GOVSr8+9MyOnsoes2jhlPu5Ry2r3GqWOY/fGKH6W2E9s+LbXy6wjSP0YHFqK OZrDVJon1R00SR3YhT6hJ2eBT2GDeetBoKkHlhAuGR9mMpPh51L8xnbw0JCJw0d0CC0x daPg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=UydkxlGHZ8RtD7MiBP2EHIfE7d5iLlDXGvpbxOJqD5o=; b=aU+Njbi3fo+jDwBTwyOjMF5PWI2N/wk8sjXN77araqKOUl3wmTZ3NJyjbrn3/qXkej Wd3bkMW7QcHBfBaYqdLdyRgGZQ51wNchKtrTZnjgsfKkDf+/W3AJ2WqNCStp4wGrQd5V Gt4EaeipYq2EknROrtsfy8Sz+/QiagtuDqe/rkNIJj5UFasXu7X9XusfePn8aoBwY7rn BaB3PT/py0gf9qLhlmXWrZFzP5G2u23oYlsi4DrUleKKlHHdHqPxjoqYK2e6PmH5uBt0 yNMtkBpuVmTX7NSqjnElyHG1IFFQe2Na79LLhUaMJPsZqPldGO7Xydw2Bv2kEVC2XFv4 7evg== X-Gm-Message-State: ANoB5pl+kZBS787lUQZW8NfG5If5+tWawCpG9U7/2XOSj8JdVzo42IRs tYqqsA2kkOw4jIbbn36FWt1l8iTcL06HHBTxY7+KdiVBROOG6w== X-Google-Smtp-Source: AA0mqf4EEekuesTVtiarwFIb7PmSY2eYbXgMvJ92fNRSH3xQS0Niq5PM/j4FQUFbbjhbUk3m5POTer2RORNzkly0vTA= X-Received: by 2002:a81:1d16:0:b0:385:2f5d:22 with SMTP id d22-20020a811d16000000b003852f5d0022mr11263626ywd.99.1668881675093; Sat, 19 Nov 2022 10:14:35 -0800 (PST) MIME-Version: 1.0 References: <20221024031658.1026118-1-quinkblack@foxmail.com> In-Reply-To: From: Olivier Ayache Date: Sat, 19 Nov 2022 19:14:25 +0100 Message-ID: To: FFmpeg development discussions and patches X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: Re: [FFmpeg-devel] [PATCH 10/12] avcodec: add MediaCodec encoder X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: PlRoYXTigJlzIHRoZSBjYXNlIGZyb20gbXkgdGVzdCBvbiBHb29nbGUgUGl4ZWwgMy4gVGhlcmUg aXMgbm8g4oCYY3Nk4oCZIGluc2lkZQo+TWVkaWFGb3JtYXQgcmV0dXJuZWQgYnkgZmZfQU1lZGlh Q29kZWNfZ2V0T3V0cHV0Rm9ybWF0KCksIHVudGlsIGEgZnJhbWUKPmhhcyBiZWVuIHNlbnQuIEl0 IG1heSBkZXBlbmRzIG9uIHRoZSBkZXZpY2UgYW5kIE9TLgoKSGVsbG8gdGhlcmUsIGlmIGl0IGNh biBoZWxwIGNvbmNlcm5pbmcgdGhlIGNzZCB5b3VyIGFzdW1wdGlvbiBpcyByaWdodCBhbmQKbm90 IG9ubHkgb24gUGl4ZWwgMy4gV2hlbiBJIHdyb3RlIG15IGVuY29kZXIgKG9ubHkgdXNpbmcgdGhl IE5ESykgSSBoYXZlIHRvCm1hbnVhbGx5IGFkZCBjc2QgaW4gZXh0cmFkYXRhIGFmdGVyIGVuY29k aW5nIHRoZSBmaXJzdCBmcmFtZS4gSSBzdHVkeSBhIGxvdAp0aGUgQW5kcm9pZCBBT1NQIHNvdXJj ZSBjb2RlIGVzcGVjaWFsbHkgbWVkaWEgZnJhbWV3b3JrIGFuZCBsaWJzdGFnZWZyaWdodC4KCkhl cmUgaXMgd2hhdCBJIGRpZCBpbiBvbmUgb2YgbXkgcHJvamVjdCB0aGF0IHVzZSB0aGUgZW5jb2Rl cgpodHRwczovL2dpdGh1Yi5jb20vb2xpdmllcmF5YWNoZS94dWdnbGUteHVnZ2xlci1hbmRyb2lk L2Jsb2IvZGJjOGVhY2E3MzQ2ODRiMTc2MzM5OWRhMTJlY2RmZmEyNTA4Y2M4OS94dWdnbGVyLWFu ZHJvaWQtZXh0ZW5zaW9ucy9zcmMvbWFpbi9qYXZhL2NvbS94dWdnbGUveHVnZ2xlci9yZWNvcmQv TWVkaWFSZWNvcmRlci5rdCNMNDIwCgpBdCB0aGUgdGltZSBJIHdvcmtlZCBvbiB0aGF0IEkgZGlk bid0IGRvIGl0IGRpcmVjdGx5IGluIEZGbXBlZyBidXQgaXQgc2VlbXMKaW50ZXJlc3RpbmcgdG8g c3RvcmUgdGhlIENTRCB3aGVuIHRoZSBmaXJzdCBmcmFtZSBpcyBlbmNvZGVkLgoKT2xpdmllciBB eWFjaGUKCgpPbiBTYXQsIE5vdiAxOSwgMjAyMiBhdCA2OjEzIFBNICJ6aGlsaXpoYW8o6LW15b+X 56uLKSIgPHF1aW5rYmxhY2tAZm94bWFpbC5jb20+Cndyb3RlOgoKPgo+Cj4gPiBPbiBOb3YgMTks IDIwMjIsIGF0IDE3OjE1LCBBbWFuIEthcm1hbmkgPGFtYW5AdG1tMS5uZXQ+IHdyb3RlOgo+ID4K PiA+Cj4gPgo+ID4gT24gU3VuLCBPY3QgMjMsIDIwMjIgYXQgODoxNyBQTSBaaGFvIFpoaWxpIDxx dWlua2JsYWNrQGZveG1haWwuY29tPgo+IHdyb3RlOgo+ID4gRnJvbTogWmhhbyBaaGlsaSA8emhp bGl6aGFvQHRlbmNlbnQuY29tPgo+ID4KPiA+IFNpZ25lZC1vZmYtYnk6IFpoYW8gWmhpbGkgPHpo aWxpemhhb0B0ZW5jZW50LmNvbT4KPiA+IC0tLQo+ID4gIENoYW5nZWxvZyAgICAgICAgICAgICAg ICAgICAgICAgfCAgIDEgKwo+ID4gIGNvbmZpZ3VyZSAgICAgICAgICAgICAgICAgICAgICAgfCAg IDQgKwo+ID4gIGxpYmF2Y29kZWMvTWFrZWZpbGUgICAgICAgICAgICAgfCAgIDIgKwo+ID4gIGxp YmF2Y29kZWMvYWxsY29kZWNzLmMgICAgICAgICAgfCAgIDIgKwo+ID4gIGxpYmF2Y29kZWMvbWVk aWFjb2RlY193cmFwcGVyLmMgfCAxMDIgKysrKysrLQo+ID4gIGxpYmF2Y29kZWMvbWVkaWFjb2Rl Y193cmFwcGVyLmggfCAgIDggKwo+ID4gIGxpYmF2Y29kZWMvbWVkaWFjb2RlY2VuYy5jICAgICAg fCA0OTUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiA+ICBsaWJhdmNvZGVjL3Zl cnNpb24uaCAgICAgICAgICAgIHwgICA0ICstCj4gPiAgOCBmaWxlcyBjaGFuZ2VkLCA2MTEgaW5z ZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgbGliYXZj b2RlYy9tZWRpYWNvZGVjZW5jLmMKPiA+Cj4gPiBkaWZmIC0tZ2l0IGEvQ2hhbmdlbG9nIGIvQ2hh bmdlbG9nCj4gPiBpbmRleCA5ZTIwMzgzM2FhLi45ZTM5YTM1OTcyIDEwMDY0NAo+ID4gLS0tIGEv Q2hhbmdlbG9nCj4gPiArKysgYi9DaGFuZ2Vsb2cKPiA+IEBAIC0xOSw2ICsxOSw3IEBAIHZlcnNp b24gPG5leHQ+Ogo+ID4gIC0gRFRTIHRvIFBUUyByZW9yZGVyIGJzZgo+ID4gIC0gVmlld1F1ZXN0 IFZRQyBkZWNvZGVyCj4gPiAgLSBNZWRpYUNvZGVjIGRlY29kZXIgdmlhIE5ES01lZGlhQ29kZWMK PiA+ICstIE1lZGlhQ29kZWMgZW5jb2Rlcgo+ID4KPiA+Cj4gPgo+ID4gIHZlcnNpb24gNS4xOgo+ ID4gZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQo+ID4gaW5kZXggZWUyZTNiYTZh Yy4uNTExNGNkYTEzZiAxMDA3NTUKPiA+IC0tLSBhL2NvbmZpZ3VyZQo+ID4gKysrIGIvY29uZmln dXJlCj4gPiBAQCAtMzE5Myw2ICszMTkzLDggQEAgaDI2NF9jdXZpZF9kZWNvZGVyX3NlbGVjdD0i aDI2NF9tcDR0b2FubmV4Yl9ic2YiCj4gPiAgaDI2NF9tZWRpYWNvZGVjX2RlY29kZXJfZGVwcz0i bWVkaWFjb2RlYyIKPiA+ICBoMjY0X21lZGlhY29kZWNfZGVjb2Rlcl9leHRyYWxpYnM9Ii1sYW5k cm9pZCIKPiA+ICBoMjY0X21lZGlhY29kZWNfZGVjb2Rlcl9zZWxlY3Q9ImgyNjRfbXA0dG9hbm5l eGJfYnNmIGgyNjRfcGFyc2VyIgo+ID4gK2gyNjRfbWVkaWFjb2RlY19lbmNvZGVyX2RlcHM9Im1l ZGlhY29kZWMiCj4gPiAraDI2NF9tZWRpYWNvZGVjX2VuY29kZXJfZXh0cmFsaWJzPSItbGFuZHJv aWQiCj4gPiAgaDI2NF9tZl9lbmNvZGVyX2RlcHM9Im1lZGlhZm91bmRhdGlvbiIKPiA+ICBoMjY0 X21tYWxfZGVjb2Rlcl9kZXBzPSJtbWFsIgo+ID4gIGgyNjRfbnZlbmNfZW5jb2Rlcl9kZXBzPSJu dmVuYyIKPiA+IEBAIC0zMjEyLDYgKzMyMTQsOCBAQCBoZXZjX2N1dmlkX2RlY29kZXJfc2VsZWN0 PSJoZXZjX21wNHRvYW5uZXhiX2JzZiIKPiA+ICBoZXZjX21lZGlhY29kZWNfZGVjb2Rlcl9kZXBz PSJtZWRpYWNvZGVjIgo+ID4gIGhldmNfbWVkaWFjb2RlY19kZWNvZGVyX2V4dHJhbGlicz0iLWxh bmRyb2lkIgo+ID4gIGhldmNfbWVkaWFjb2RlY19kZWNvZGVyX3NlbGVjdD0iaGV2Y19tcDR0b2Fu bmV4Yl9ic2YgaGV2Y19wYXJzZXIiCj4gPiAraGV2Y19tZWRpYWNvZGVjX2VuY29kZXJfZGVwcz0i bWVkaWFjb2RlYyIKPiA+ICtoZXZjX21lZGlhY29kZWNfZW5jb2Rlcl9leHRyYWxpYnM9Ii1sYW5k cm9pZCIKPiA+ICBoZXZjX21mX2VuY29kZXJfZGVwcz0ibWVkaWFmb3VuZGF0aW9uIgo+ID4gIGhl dmNfbnZlbmNfZW5jb2Rlcl9kZXBzPSJudmVuYyIKPiA+ICBoZXZjX252ZW5jX2VuY29kZXJfc2Vs ZWN0PSJhdHNjX2E1MyIKPiA+IGRpZmYgLS1naXQgYS9saWJhdmNvZGVjL01ha2VmaWxlIGIvbGli YXZjb2RlYy9NYWtlZmlsZQo+ID4gaW5kZXggOTBjN2YxMTNhMy4uN2QwYjUxM2VlYyAxMDA2NDQK PiA+IC0tLSBhL2xpYmF2Y29kZWMvTWFrZWZpbGUKPiA+ICsrKyBiL2xpYmF2Y29kZWMvTWFrZWZp bGUKPiA+IEBAIC0zOTMsNiArMzkzLDcgQEAgT0JKUy0kKENPTkZJR19IMjY0X0RFQ09ERVIpICAg ICAgICAgICAgKz0gaDI2NGRlYy5vCj4gaDI2NF9jYWJhYy5vIGgyNjRfY2F2bGMubyBcCj4gPiAg T0JKUy0kKENPTkZJR19IMjY0X0FNRl9FTkNPREVSKSAgICAgICAgKz0gYW1mZW5jX2gyNjQubwo+ ID4gIE9CSlMtJChDT05GSUdfSDI2NF9DVVZJRF9ERUNPREVSKSAgICAgICs9IGN1dmlkZGVjLm8K PiA+ICBPQkpTLSQoQ09ORklHX0gyNjRfTUVESUFDT0RFQ19ERUNPREVSKSArPSBtZWRpYWNvZGVj ZGVjLm8KPiA+ICtPQkpTLSQoQ09ORklHX0gyNjRfTUVESUFDT0RFQ19FTkNPREVSKSArPSBtZWRp YWNvZGVjZW5jLm8KPiA+ICBPQkpTLSQoQ09ORklHX0gyNjRfTUZfRU5DT0RFUikgICAgICAgICAr PSBtZmVuYy5vIG1mX3V0aWxzLm8KPiA+ICBPQkpTLSQoQ09ORklHX0gyNjRfTU1BTF9ERUNPREVS KSAgICAgICArPSBtbWFsZGVjLm8KPiA+ICBPQkpTLSQoQ09ORklHX0gyNjRfTlZFTkNfRU5DT0RF UikgICAgICArPSBudmVuY19oMjY0Lm8gbnZlbmMubwo+ID4gQEAgLTQxNyw2ICs0MTgsNyBAQCBP QkpTLSQoQ09ORklHX0hFVkNfREVDT0RFUikgICAgICAgICAgICArPSBoZXZjZGVjLm8KPiBoZXZj X212cy5vIFwKPiA+ICBPQkpTLSQoQ09ORklHX0hFVkNfQU1GX0VOQ09ERVIpICAgICAgICArPSBh bWZlbmNfaGV2Yy5vCj4gPiAgT0JKUy0kKENPTkZJR19IRVZDX0NVVklEX0RFQ09ERVIpICAgICAg Kz0gY3V2aWRkZWMubwo+ID4gIE9CSlMtJChDT05GSUdfSEVWQ19NRURJQUNPREVDX0RFQ09ERVIp ICs9IG1lZGlhY29kZWNkZWMubwo+ID4gK09CSlMtJChDT05GSUdfSEVWQ19NRURJQUNPREVDX0VO Q09ERVIpICs9IG1lZGlhY29kZWNlbmMubwo+ID4gIE9CSlMtJChDT05GSUdfSEVWQ19NRl9FTkNP REVSKSAgICAgICAgICs9IG1mZW5jLm8gbWZfdXRpbHMubwo+ID4gIE9CSlMtJChDT05GSUdfSEVW Q19OVkVOQ19FTkNPREVSKSAgICAgICs9IG52ZW5jX2hldmMubyBudmVuYy5vCj4gPiAgT0JKUy0k KENPTkZJR19IRVZDX1FTVl9ERUNPREVSKSAgICAgICAgKz0gcXN2ZGVjLm8KPiA+IGRpZmYgLS1n aXQgYS9saWJhdmNvZGVjL2FsbGNvZGVjcy5jIGIvbGliYXZjb2RlYy9hbGxjb2RlY3MuYwo+ID4g aW5kZXggNDZhZDNiNWEyNS4uNGMzM2E5ZWMzYyAxMDA2NDQKPiA+IC0tLSBhL2xpYmF2Y29kZWMv YWxsY29kZWNzLmMKPiA+ICsrKyBiL2xpYmF2Y29kZWMvYWxsY29kZWNzLmMKPiA+IEBAIC0xNTQs NiArMTU0LDcgQEAgZXh0ZXJuIGNvbnN0IEZGQ29kZWMgZmZfaDI2NF9kZWNvZGVyOwo+ID4gIGV4 dGVybiBjb25zdCBGRkNvZGVjIGZmX2gyNjRfY3J5c3RhbGhkX2RlY29kZXI7Cj4gPiAgZXh0ZXJu IGNvbnN0IEZGQ29kZWMgZmZfaDI2NF92NGwybTJtX2RlY29kZXI7Cj4gPiAgZXh0ZXJuIGNvbnN0 IEZGQ29kZWMgZmZfaDI2NF9tZWRpYWNvZGVjX2RlY29kZXI7Cj4gPiArZXh0ZXJuIGNvbnN0IEZG Q29kZWMgZmZfaDI2NF9tZWRpYWNvZGVjX2VuY29kZXI7Cj4gPiAgZXh0ZXJuIGNvbnN0IEZGQ29k ZWMgZmZfaDI2NF9tbWFsX2RlY29kZXI7Cj4gPiAgZXh0ZXJuIGNvbnN0IEZGQ29kZWMgZmZfaDI2 NF9xc3ZfZGVjb2RlcjsKPiA+ICBleHRlcm4gY29uc3QgRkZDb2RlYyBmZl9oMjY0X3JrbXBwX2Rl Y29kZXI7Cj4gPiBAQCAtODQyLDYgKzg0Myw3IEBAIGV4dGVybiBjb25zdCBGRkNvZGVjIGZmX2gy NjRfdmlkZW90b29sYm94X2VuY29kZXI7Cj4gPiAgZXh0ZXJuIGNvbnN0IEZGQ29kZWMgZmZfaGV2 Y19hbWZfZW5jb2RlcjsKPiA+ICBleHRlcm4gY29uc3QgRkZDb2RlYyBmZl9oZXZjX2N1dmlkX2Rl Y29kZXI7Cj4gPiAgZXh0ZXJuIGNvbnN0IEZGQ29kZWMgZmZfaGV2Y19tZWRpYWNvZGVjX2RlY29k ZXI7Cj4gPiArZXh0ZXJuIGNvbnN0IEZGQ29kZWMgZmZfaGV2Y19tZWRpYWNvZGVjX2VuY29kZXI7 Cj4gPiAgZXh0ZXJuIGNvbnN0IEZGQ29kZWMgZmZfaGV2Y19tZl9lbmNvZGVyOwo+ID4gIGV4dGVy biBjb25zdCBGRkNvZGVjIGZmX2hldmNfbnZlbmNfZW5jb2RlcjsKPiA+ICBleHRlcm4gY29uc3Qg RkZDb2RlYyBmZl9oZXZjX3Fzdl9lbmNvZGVyOwo+ID4gZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMv bWVkaWFjb2RlY193cmFwcGVyLmMKPiBiL2xpYmF2Y29kZWMvbWVkaWFjb2RlY193cmFwcGVyLmMK PiA+IGluZGV4IDI4NGQ2MTU5ODAuLjVkMWEzMjAzMWQgMTAwNjQ0Cj4gPiAtLS0gYS9saWJhdmNv ZGVjL21lZGlhY29kZWNfd3JhcHBlci5jCj4gPiArKysgYi9saWJhdmNvZGVjL21lZGlhY29kZWNf d3JhcHBlci5jCj4gPiBAQCAtMjEyLDYgKzIxMiw5IEBAIHN0cnVjdCBKTklBTWVkaWFDb2RlY0Zp ZWxkcyB7Cj4gPiAgICAgIGptZXRob2RJRCByZWxlYXNlX291dHB1dF9idWZmZXJfaWQ7Cj4gPiAg ICAgIGptZXRob2RJRCByZWxlYXNlX291dHB1dF9idWZmZXJfYXRfdGltZV9pZDsKPiA+Cj4gPiAr ICAgIGptZXRob2RJRCBzZXRfaW5wdXRfc3VyZmFjZV9pZDsKPiA+ICsgICAgam1ldGhvZElEIHNp Z25hbF9lbmRfb2ZfaW5wdXRfc3RyZWFtX2lkOwo+ID4gKwo+ID4gICAgICBqY2xhc3MgbWVkaWFp bmZvX2NsYXNzOwo+ID4KPiA+ICAgICAgam1ldGhvZElEIGluaXRfaWQ7Cj4gPiBAQCAtMjYxLDYg KzI2NCw5IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgRkZKbmlGaWVsZAo+IGpuaV9hbWVkaWFjb2Rl Y19tYXBwaW5nW10gPSB7Cj4gPiAgICAgICAgICB7ICJhbmRyb2lkL21lZGlhL01lZGlhQ29kZWMi LCAicmVsZWFzZU91dHB1dEJ1ZmZlciIsICIoSVopViIsCj4gRkZfSk5JX01FVEhPRCwgb2Zmc2V0 b2Yoc3RydWN0IEpOSUFNZWRpYUNvZGVjRmllbGRzLAo+IHJlbGVhc2Vfb3V0cHV0X2J1ZmZlcl9p ZCksIDEgfSwKPiA+ICAgICAgICAgIHsgImFuZHJvaWQvbWVkaWEvTWVkaWFDb2RlYyIsICJyZWxl YXNlT3V0cHV0QnVmZmVyIiwgIihJSilWIiwKPiBGRl9KTklfTUVUSE9ELCBvZmZzZXRvZihzdHJ1 Y3QgSk5JQU1lZGlhQ29kZWNGaWVsZHMsCj4gcmVsZWFzZV9vdXRwdXRfYnVmZmVyX2F0X3RpbWVf aWQpLCAwIH0sCj4gPgo+ID4gKyAgICAgICAgeyAiYW5kcm9pZC9tZWRpYS9NZWRpYUNvZGVjIiwg InNldElucHV0U3VyZmFjZSIsCj4gIihMYW5kcm9pZC92aWV3L1N1cmZhY2U7KVYiLCBGRl9KTklf TUVUSE9ELCBvZmZzZXRvZihzdHJ1Y3QKPiBKTklBTWVkaWFDb2RlY0ZpZWxkcywgc2V0X2lucHV0 X3N1cmZhY2VfaWQpLCAwIH0sCj4gPiArICAgICAgICB7ICJhbmRyb2lkL21lZGlhL01lZGlhQ29k ZWMiLCAic2lnbmFsRW5kT2ZJbnB1dFN0cmVhbSIsICIoKVYiLAo+IEZGX0pOSV9NRVRIT0QsIG9m ZnNldG9mKHN0cnVjdCBKTklBTWVkaWFDb2RlY0ZpZWxkcywKPiBzaWduYWxfZW5kX29mX2lucHV0 X3N0cmVhbV9pZCksIDAgfSwKPiA+ICsKPiA+ICAgICAgeyAiYW5kcm9pZC9tZWRpYS9NZWRpYUNv ZGVjJEJ1ZmZlckluZm8iLCBOVUxMLCBOVUxMLCBGRl9KTklfQ0xBU1MsCj4gb2Zmc2V0b2Yoc3Ry dWN0IEpOSUFNZWRpYUNvZGVjRmllbGRzLCBtZWRpYWluZm9fY2xhc3MpLCAxIH0sCj4gPgo+ID4g ICAgICAgICAgeyAiYW5kcm9pZC9tZWRpYS9NZWRpYUNvZGVjLkJ1ZmZlckluZm8iLCAiPGluaXQ+ IiwgIigpViIsCj4gRkZfSk5JX01FVEhPRCwgb2Zmc2V0b2Yoc3RydWN0IEpOSUFNZWRpYUNvZGVj RmllbGRzLCBpbml0X2lkKSwgMSB9LAo+ID4gQEAgLTEzODUsNyArMTM5MSwyNiBAQCBzdGF0aWMg aW50IG1lZGlhY29kZWNfam5pX2NvbmZpZ3VyZShGRkFNZWRpYUNvZGVjCj4gKmN0eCwKPiA+Cj4g PiAgICAgIEpOSV9HRVRfRU5WX09SX1JFVFVSTihlbnYsIGNvZGVjLCBBVkVSUk9SX0VYVEVSTkFM KTsKPiA+Cj4gPiAtICAgICgqZW52KS0+Q2FsbFZvaWRNZXRob2QoZW52LCBjb2RlYy0+b2JqZWN0 LAo+IGNvZGVjLT5qZmllbGRzLmNvbmZpZ3VyZV9pZCwgZm9ybWF0LT5vYmplY3QsIHN1cmZhY2Us IE5VTEwsIGZsYWdzKTsKPiA+ICsgICAgaWYgKGZsYWdzICYgY29kZWMtPkNPTkZJR1VSRV9GTEFH X0VOQ09ERSkgewo+ID4gKyAgICAgICAgaWYgKHN1cmZhY2UgJiYgIWNvZGVjLT5qZmllbGRzLnNl dF9pbnB1dF9zdXJmYWNlX2lkKSB7Cj4gPiArICAgICAgICAgICAgYXZfbG9nKGN0eCwgQVZfTE9H X0VSUk9SLCAiU3lzdGVtIGRvZXNuJ3Qgc3VwcG9ydAo+IHNldElucHV0U3VyZmFjZVxuIik7Cj4g PiArICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfRVhURVJOQUw7Cj4gPiArICAgICAgICB9Cj4g PiArCj4gPiArICAgICAgICAoKmVudiktPkNhbGxWb2lkTWV0aG9kKGVudiwgY29kZWMtPm9iamVj dCwKPiBjb2RlYy0+amZpZWxkcy5jb25maWd1cmVfaWQsIGZvcm1hdC0+b2JqZWN0LCBOVUxMLCBO VUxMLCBmbGFncyk7Cj4gPiArICAgICAgICBpZiAoZmZfam5pX2V4Y2VwdGlvbl9jaGVjayhlbnYs IDEsIGNvZGVjKSA8IDApCj4gPiArICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfRVhURVJOQUw7 Cj4gPiArCj4gPiArICAgICAgICBpZiAoIXN1cmZhY2UpCj4gPiArICAgICAgICAgICAgcmV0dXJu IDA7Cj4gPiArCj4gPiArICAgICAgICAoKmVudiktPkNhbGxWb2lkTWV0aG9kKGVudiwgY29kZWMt Pm9iamVjdCwKPiBjb2RlYy0+amZpZWxkcy5zZXRfaW5wdXRfc3VyZmFjZV9pZCwgc3VyZmFjZSk7 Cj4gPiArICAgICAgICBpZiAoZmZfam5pX2V4Y2VwdGlvbl9jaGVjayhlbnYsIDEsIGNvZGVjKSA8 IDApCj4gPiArICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfRVhURVJOQUw7Cj4gPiArICAgICAg ICByZXR1cm4gMDsKPiA+ICsgICAgfSBlbHNlIHsKPiA+ICsgICAgICAgICgqZW52KS0+Q2FsbFZv aWRNZXRob2QoZW52LCBjb2RlYy0+b2JqZWN0LAo+IGNvZGVjLT5qZmllbGRzLmNvbmZpZ3VyZV9p ZCwgZm9ybWF0LT5vYmplY3QsIHN1cmZhY2UsIE5VTEwsIGZsYWdzKTsKPiA+ICsgICAgfQo+ID4g ICAgICBpZiAoZmZfam5pX2V4Y2VwdGlvbl9jaGVjayhlbnYsIDEsIGNvZGVjKSA8IDApIHsKPiA+ ICAgICAgICAgIHJldCA9IEFWRVJST1JfRVhURVJOQUw7Cj4gPiAgICAgICAgICBnb3RvIGZhaWw7 Cj4gPiBAQCAtMTc0Myw2ICsxNzY4LDIyIEBAIGZhaWw6Cj4gPiAgICAgIHJldHVybiByZXQ7Cj4g PiAgfQo+ID4KPiA+ICtzdGF0aWMgaW50IG1lZGlhY29kZWNfam5pX3NpZ25hbEVuZE9mSW5wdXRT dHJlYW0oRkZBTWVkaWFDb2RlYyAqY3R4KQo+ID4gK3sKPiA+ICsgICAgaW50IHJldCA9IDA7Cj4g PiArICAgIEpOSUVudiAqZW52ID0gTlVMTDsKPiA+ICsgICAgRkZBTWVkaWFDb2RlY0puaSAqY29k ZWMgPSAoRkZBTWVkaWFDb2RlY0puaSAqKWN0eDsKPiA+ICsKPiA+ICsgICAgSk5JX0dFVF9FTlZf T1JfUkVUVVJOKGVudiwgY29kZWMsIEFWRVJST1JfRVhURVJOQUwpOwo+ID4gKwo+ID4gKyAgICAo KmVudiktPkNhbGxWb2lkTWV0aG9kKGVudiwgY29kZWMtPm9iamVjdCwKPiBjb2RlYy0+amZpZWxk cy5zaWduYWxfZW5kX29mX2lucHV0X3N0cmVhbV9pZCk7Cj4gPiArICAgIGlmIChmZl9qbmlfZXhj ZXB0aW9uX2NoZWNrKGVudiwgMSwgY29kZWMpIDwgMCkgewo+ID4gKyAgICAgICAgcmV0dXJuIEFW RVJST1JfRVhURVJOQUw7Cj4gPiArICAgIH0KPiA+ICsKPiA+ICsgICAgcmV0dXJuIDA7Cj4gPiAr fQo+ID4gKwo+ID4gIHN0YXRpYyBjb25zdCBGRkFNZWRpYUZvcm1hdCBtZWRpYV9mb3JtYXRfam5p ID0gewo+ID4gICAgICAuY2xhc3MgPSAmYW1lZGlhZm9ybWF0X2NsYXNzLAo+ID4KPiA+IEBAIC0x ODAxLDYgKzE4NDIsNyBAQCBzdGF0aWMgY29uc3QgRkZBTWVkaWFDb2RlYyBtZWRpYV9jb2RlY19q bmkgPSB7Cj4gPgo+ID4gICAgICAuZ2V0Q29uZmlndXJlRmxhZ0VuY29kZSA9IG1lZGlhY29kZWNf am5pX2dldENvbmZpZ3VyZUZsYWdFbmNvZGUsCj4gPiAgICAgIC5jbGVhbk91dHB1dEJ1ZmZlcnMg PSBtZWRpYWNvZGVjX2puaV9jbGVhbk91dHB1dEJ1ZmZlcnMsCj4gPiArICAgIC5zaWduYWxFbmRP ZklucHV0U3RyZWFtID0gbWVkaWFjb2RlY19qbmlfc2lnbmFsRW5kT2ZJbnB1dFN0cmVhbSwKPiA+ ICB9Owo+ID4KPiA+ICB0eXBlZGVmIHN0cnVjdCBGRkFNZWRpYUZvcm1hdE5kayB7Cj4gPiBAQCAt MTg2Niw2ICsxOTA4LDEwIEBAIHR5cGVkZWYgc3RydWN0IEZGQU1lZGlhQ29kZWNOZGsgewo+ID4g ICAgICAvLyBBdmFpbGFibGUgc2luY2UgQVBJIGxldmVsIDI4Lgo+ID4gICAgICBtZWRpYV9zdGF0 dXNfdCAoKmdldE5hbWUpKEFNZWRpYUNvZGVjKiwgY2hhcioqIG91dF9uYW1lKTsKPiA+ICAgICAg dm9pZCAoKnJlbGVhc2VOYW1lKShBTWVkaWFDb2RlYyosIGNoYXIqIG5hbWUpOwo+ID4gKwo+ID4g KyAgICAvLyBBdmFpbGFibGUgc2luY2UgQVBJIGxldmVsIDI2Lgo+ID4gKyAgICBtZWRpYV9zdGF0 dXNfdCAoKnNldElucHV0U3VyZmFjZSkoQU1lZGlhQ29kZWMqLCBBTmF0aXZlV2luZG93ICopOwo+ ID4gKyAgICBtZWRpYV9zdGF0dXNfdCAoKnNpZ25hbEVuZE9mSW5wdXRTdHJlYW0pKEFNZWRpYUNv ZGVjICopOwo+ID4gIH0gRkZBTWVkaWFDb2RlY05kazsKPiA+Cj4gPiAgc3RhdGljIGNvbnN0IEZG QU1lZGlhRm9ybWF0IG1lZGlhX2Zvcm1hdF9uZGs7Cj4gPiBAQCAtMjA5OCw2ICsyMTQ0LDkgQEAg c3RhdGljIGlubGluZSBGRkFNZWRpYUNvZGVjICpuZGtfY29kZWNfY3JlYXRlKGludAo+IG1ldGhv ZCwgY29uc3QgY2hhciAqYXJnKSB7Cj4gPiAgICAgIEdFVF9TWU1CT0woZ2V0TmFtZSwgMCkKPiA+ ICAgICAgR0VUX1NZTUJPTChyZWxlYXNlTmFtZSwgMCkKPiA+Cj4gPiArICAgIEdFVF9TWU1CT0wo c2V0SW5wdXRTdXJmYWNlLCAwKQo+ID4gKyAgICBHRVRfU1lNQk9MKHNpZ25hbEVuZE9mSW5wdXRT dHJlYW0sIDApCj4gPiArCj4gPiAgI3VuZGVmIEdFVF9TWU1CT0wKPiA+Cj4gPiAgICAgIHN3aXRj aCAobWV0aG9kKSB7Cj4gPiBAQCAtMjE4NCwxMCArMjIzMywzMiBAQCBzdGF0aWMgaW50Cj4gbWVk aWFjb2RlY19uZGtfY29uZmlndXJlKEZGQU1lZGlhQ29kZWMqIGN0eCwKPiA+ICAgICAgICAgIHJl dHVybiBBVkVSUk9SKEVJTlZBTCk7Cj4gPiAgICAgIH0KPiA+Cj4gPiAtICAgIHN0YXR1cyA9IGNv ZGVjLT5jb25maWd1cmUoY29kZWMtPmltcGwsIGZvcm1hdC0+aW1wbCwgbmF0aXZlX3dpbmRvdywK PiBOVUxMLCBmbGFncyk7Cj4gPiAtICAgIGlmIChzdGF0dXMgIT0gQU1FRElBX09LKSB7Cj4gPiAt ICAgICAgICBhdl9sb2coY29kZWMsIEFWX0xPR19FUlJPUiwgImNvbmZpZ3VyZSBmYWlsZWQsICVk XG4iLCBzdGF0dXMpOwo+ID4gLSAgICAgICAgcmV0dXJuIEFWRVJST1JfRVhURVJOQUw7Cj4gPiAr ICAgIGlmIChmbGFncyAmIEFNRURJQUNPREVDX0NPTkZJR1VSRV9GTEFHX0VOQ09ERSkgewo+ID4g KyAgICAgICAgaWYgKG5hdGl2ZV93aW5kb3cgJiYgIWNvZGVjLT5zZXRJbnB1dFN1cmZhY2UpIHsK PiA+ICsgICAgICAgICAgICBhdl9sb2coY3R4LCBBVl9MT0dfRVJST1IsICJTeXN0ZW0gZG9lc24n dCBzdXBwb3J0Cj4gc2V0SW5wdXRTdXJmYWNlXG4iKTsKPiA+ICsgICAgICAgICAgICByZXR1cm4g QVZFUlJPUl9FWFRFUk5BTDsKPiA+ICsgICAgICAgIH0KPiA+ICsKPiA+ICsgICAgICAgIHN0YXR1 cyA9IGNvZGVjLT5jb25maWd1cmUoY29kZWMtPmltcGwsIGZvcm1hdC0+aW1wbCwgTlVMTCwKPiBO VUxMLCBmbGFncyk7Cj4gPiArICAgICAgICBpZiAoc3RhdHVzICE9IEFNRURJQV9PSykgewo+ID4g KyAgICAgICAgICAgIGF2X2xvZyhjb2RlYywgQVZfTE9HX0VSUk9SLCAiRW5jb2RlciBjb25maWd1 cmUgZmFpbGVkLAo+ICVkXG4iLCBzdGF0dXMpOwo+ID4gKyAgICAgICAgICAgIHJldHVybiBBVkVS Uk9SX0VYVEVSTkFMOwo+ID4gKyAgICAgICAgfQo+ID4gKwo+ID4gKyAgICAgICAgaWYgKCFuYXRp dmVfd2luZG93KQo+ID4gKyAgICAgICAgICAgIHJldHVybiAwOwo+ID4gKwo+ID4gKyAgICAgICAg c3RhdHVzID0gY29kZWMtPnNldElucHV0U3VyZmFjZShjb2RlYy0+aW1wbCwgbmF0aXZlX3dpbmRv dyk7Cj4gPiArICAgICAgICBpZiAoc3RhdHVzICE9IEFNRURJQV9PSykgewo+ID4gKyAgICAgICAg ICAgIGF2X2xvZyhjb2RlYywgQVZfTE9HX0VSUk9SLCAiRW5jb2RlciBzZXQgaW5wdXQgc3VyZmFj ZQo+IGZhaWxlZCwgJWRcbiIsIHN0YXR1cyk7Cj4gPiArICAgICAgICAgICAgcmV0dXJuIEFWRVJS T1JfRVhURVJOQUw7Cj4gPiArICAgICAgICB9Cj4gPiArICAgIH0gZWxzZSB7Cj4gPiArICAgICAg ICBzdGF0dXMgPSBjb2RlYy0+Y29uZmlndXJlKGNvZGVjLT5pbXBsLCBmb3JtYXQtPmltcGwsCj4g bmF0aXZlX3dpbmRvdywgTlVMTCwgZmxhZ3MpOwo+ID4gKyAgICAgICAgaWYgKHN0YXR1cyAhPSBB TUVESUFfT0spIHsKPiA+ICsgICAgICAgICAgICBhdl9sb2coY29kZWMsIEFWX0xPR19FUlJPUiwg IkRlY29kZXIgY29uZmlndXJlIGZhaWxlZCwKPiAlZFxuIiwgc3RhdHVzKTsKPiA+ICsgICAgICAg ICAgICByZXR1cm4gQVZFUlJPUl9FWFRFUk5BTDsKPiA+ICsgICAgICAgIH0KPiA+ICAgICAgfQo+ ID4KPiA+ICAgICAgcmV0dXJuIDA7Cj4gPiBAQCAtMjMzMCw2ICsyNDAxLDI2IEBAIHN0YXRpYyBp bnQKPiBtZWRpYWNvZGVjX25ka19jbGVhbk91dHB1dEJ1ZmZlcnMoRkZBTWVkaWFDb2RlYyAqY3R4 KQo+ID4gICAgICByZXR1cm4gMDsKPiA+ICB9Cj4gPgo+ID4gK3N0YXRpYyBpbnQgbWVkaWFjb2Rl Y19uZGtfc2lnbmFsRW5kT2ZJbnB1dFN0cmVhbShGRkFNZWRpYUNvZGVjICpjdHgpCj4gPiArewo+ ID4gKyAgICBGRkFNZWRpYUNvZGVjTmRrICpjb2RlYyA9IChGRkFNZWRpYUNvZGVjTmRrICopY3R4 Owo+ID4gKyAgICBtZWRpYV9zdGF0dXNfdCBzdGF0dXM7Cj4gPiArCj4gPiArICAgIGlmICghY29k ZWMtPnNpZ25hbEVuZE9mSW5wdXRTdHJlYW0pIHsKPiA+ICsgICAgICAgIGF2X2xvZyhjb2RlYywg QVZfTE9HX0VSUk9SLCAic2lnbmFsRW5kT2ZJbnB1dFN0cmVhbQo+IHVuYXZhaWxhYmxlXG4iKTsK PiA+ICsgICAgICAgIHJldHVybiBBVkVSUk9SX0VYVEVSTkFMOwo+ID4gKyAgICB9Cj4gPiArCj4g PiArICAgIHN0YXR1cyA9IGNvZGVjLT5zaWduYWxFbmRPZklucHV0U3RyZWFtKGNvZGVjLT5pbXBs KTsKPiA+ICsgICAgaWYgKHN0YXR1cyAhPSBBTUVESUFfT0spIHsKPiA+ICsgICAgICAgIGF2X2xv Zyhjb2RlYywgQVZfTE9HX0VSUk9SLCAic2lnbmFsRW5kT2ZJbnB1dFN0cmVhbSBmYWlsZWQsCj4g JWRcbiIsIHN0YXR1cyk7Cj4gPiArICAgICAgICByZXR1cm4gQVZFUlJPUl9FWFRFUk5BTDsKPiA+ ICsgICAgfQo+ID4gKyAgICBhdl9sb2coY29kZWMsIEFWX0xPR19ERUJVRywgInNpZ25hbEVuZE9m SW5wdXRTdHJlYW0gc3VjY2Vzc1xuIik7Cj4gPiArCj4gPiArICAgIHJldHVybiAwOwo+ID4gK30K PiA+ICsKPiA+ICBzdGF0aWMgY29uc3QgRkZBTWVkaWFGb3JtYXQgbWVkaWFfZm9ybWF0X25kayA9 IHsKPiA+ICAgICAgLmNsYXNzID0gJmFtZWRpYWZvcm1hdF9uZGtfY2xhc3MsCj4gPgo+ID4gQEAg LTIzODgsNiArMjQ3OSw3IEBAIHN0YXRpYyBjb25zdCBGRkFNZWRpYUNvZGVjIG1lZGlhX2NvZGVj X25kayA9IHsKPiA+Cj4gPiAgICAgIC5nZXRDb25maWd1cmVGbGFnRW5jb2RlID0gbWVkaWFjb2Rl Y19uZGtfZ2V0Q29uZmlndXJlRmxhZ0VuY29kZSwKPiA+ICAgICAgLmNsZWFuT3V0cHV0QnVmZmVy cyA9IG1lZGlhY29kZWNfbmRrX2NsZWFuT3V0cHV0QnVmZmVycywKPiA+ICsgICAgLnNpZ25hbEVu ZE9mSW5wdXRTdHJlYW0gPSBtZWRpYWNvZGVjX25ka19zaWduYWxFbmRPZklucHV0U3RyZWFtLAo+ ID4gIH07Cj4gPgo+ID4gIEZGQU1lZGlhRm9ybWF0ICpmZl9BTWVkaWFGb3JtYXRfbmV3KGludCBu ZGspCj4gPiBkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9tZWRpYWNvZGVjX3dyYXBwZXIuaAo+IGIv bGliYXZjb2RlYy9tZWRpYWNvZGVjX3dyYXBwZXIuaAo+ID4gaW5kZXggN2NmM2Y0YWVjZC4uZjE1 YWQ2NmQ4MyAxMDA2NDQKPiA+IC0tLSBhL2xpYmF2Y29kZWMvbWVkaWFjb2RlY193cmFwcGVyLmgK PiA+ICsrKyBiL2xpYmF2Y29kZWMvbWVkaWFjb2RlY193cmFwcGVyLmgKPiA+IEBAIC0xOTIsNiAr MTkyLDkgQEAgc3RydWN0IEZGQU1lZGlhQ29kZWMgewo+ID4gICAgICBpbnQgKCpnZXRDb25maWd1 cmVGbGFnRW5jb2RlKShGRkFNZWRpYUNvZGVjICpjb2RlYyk7Cj4gPgo+ID4gICAgICBpbnQgKCpj bGVhbk91dHB1dEJ1ZmZlcnMpKEZGQU1lZGlhQ29kZWMgKmNvZGVjKTsKPiA+ICsKPiA+ICsgICAg Ly8gRm9yIGVuY29kZXIgd2l0aCBGRkFOYXRpdmVXaW5kb3cgYXMgaW5wdXQuCj4gPiArICAgIGlu dCAoKnNpZ25hbEVuZE9mSW5wdXRTdHJlYW0pKEZGQU1lZGlhQ29kZWMgKik7Cj4gPiAgfTsKPiA+ Cj4gPiAgc3RhdGljIGlubGluZSBjaGFyICpmZl9BTWVkaWFDb2RlY19nZXROYW1lKEZGQU1lZGlh Q29kZWMgKmNvZGVjKQo+ID4gQEAgLTMxMSw2ICszMTQsMTEgQEAgc3RhdGljIGlubGluZSBpbnQK PiBmZl9BTWVkaWFDb2RlY19jbGVhbk91dHB1dEJ1ZmZlcnMoRkZBTWVkaWFDb2RlYyAqY29kZWMp Cj4gPiAgICAgIHJldHVybiBjb2RlYy0+Y2xlYW5PdXRwdXRCdWZmZXJzKGNvZGVjKTsKPiA+ICB9 Cj4gPgo+ID4gK3N0YXRpYyBpbmxpbmUgaW50IGZmX0FNZWRpYUNvZGVjX3NpZ25hbEVuZE9mSW5w dXRTdHJlYW0oRkZBTWVkaWFDb2RlYwo+ICpjb2RlYykKPiA+ICt7Cj4gPiArICAgIHJldHVybiBj b2RlYy0+c2lnbmFsRW5kT2ZJbnB1dFN0cmVhbShjb2RlYyk7Cj4gPiArfQo+ID4gKwo+ID4gIGlu dCBmZl9CdWlsZF9TREtfSU5UKEFWQ29kZWNDb250ZXh0ICphdmN0eCk7Cj4gPgo+ID4gICNlbmRp ZiAvKiBBVkNPREVDX01FRElBQ09ERUNfV1JBUFBFUl9IICovCj4gPiBkaWZmIC0tZ2l0IGEvbGli YXZjb2RlYy9tZWRpYWNvZGVjZW5jLmMgYi9saWJhdmNvZGVjL21lZGlhY29kZWNlbmMuYwo+ID4g bmV3IGZpbGUgbW9kZSAxMDA2NDQKPiA+IGluZGV4IDAwMDAwMDAwMDAuLmM4MTA1MGVjODAKPiA+ IC0tLSAvZGV2L251bGwKPiA+ICsrKyBiL2xpYmF2Y29kZWMvbWVkaWFjb2RlY2VuYy5jCj4gPiBA QCAtMCwwICsxLDQ5NSBAQAo+ID4gKy8qCj4gPiArICogQW5kcm9pZCBNZWRpYUNvZGVjIGVuY29k ZXJzCj4gPiArICoKPiA+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMjIgWmhhbyBaaGlsaSA8emhpbGl6 aGFvQHRlbmNlbnQuY29tPgo+ID4gKyAqCj4gPiArICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgRkZt cGVnLgo+ID4gKyAqCj4gPiArICogRkZtcGVnIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk aXN0cmlidXRlIGl0IGFuZC9vcgo+ID4gKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg dGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKPiA+ICsgKiBMaWNlbnNlIGFzIHB1Ymxpc2hl ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKPiA+ICsgKiB2ZXJzaW9u IDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv bi4KPiA+ICsgKgo+ID4gKyAqIEZGbXBlZyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0 IGl0IHdpbGwgYmUgdXNlZnVsLAo+ID4gKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0 aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCj4gPiArICogTUVSQ0hBTlRBQklMSVRZ IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKPiA+ICsg KiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgo+ID4gKyAq Cj4gPiArICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3Nl ciBHZW5lcmFsIFB1YmxpYwo+ID4gKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCBGRm1wZWc7IGlmIG5v dCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKPiA+ICsgKiBGb3VuZGF0aW9uLCBJbmMuLCA1 MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BCj4gMDIxMTAtMTMwMSBV U0EKPiA+ICsgKi8KPiA+ICsKPiA+ICsjaW5jbHVkZSAiY29uZmlnX2NvbXBvbmVudHMuaCIKPiA+ ICsKPiA+ICsjaW5jbHVkZSAibGliYXZ1dGlsL2F2YXNzZXJ0LmgiCj4gPiArI2luY2x1ZGUgImxp YmF2dXRpbC9od2NvbnRleHRfbWVkaWFjb2RlYy5oIgo+ID4gKyNpbmNsdWRlICJsaWJhdnV0aWwv aW1ndXRpbHMuaCIKPiA+ICsjaW5jbHVkZSAibGliYXZ1dGlsL29wdC5oIgo+ID4gKwo+ID4gKyNp bmNsdWRlICJhdmNvZGVjLmgiCj4gPiArI2luY2x1ZGUgImNvZGVjX2ludGVybmFsLmgiCj4gPiAr I2luY2x1ZGUgImVuY29kZS5oIgo+ID4gKyNpbmNsdWRlICJod2NvbmZpZy5oIgo+ID4gKyNpbmNs dWRlICJqbmkuaCIKPiA+ICsjaW5jbHVkZSAibWVkaWFjb2RlYy5oIgo+ID4gKyNpbmNsdWRlICJt ZWRpYWNvZGVjX3dyYXBwZXIuaCIKPiA+ICsjaW5jbHVkZSAibWVkaWFjb2RlY2RlY19jb21tb24u aCIKPiA+ICsKPiA+ICsjZGVmaW5lIElOUFVUX0RFUVVFVUVfVElNRU9VVF9VUyA4MDAwCj4gPiAr I2RlZmluZSBPVVRQVVRfREVRVUVVRV9USU1FT1VUX1VTIDgwMDAKPiA+ICsKPiA+ICt0eXBlZGVm IHN0cnVjdCBNZWRpYUNvZGVjRW5jQ29udGV4dCB7Cj4gPiArICAgIEFWQ2xhc3MgKmF2Y2xhc3M7 Cj4gPiArICAgIEZGQU1lZGlhQ29kZWMgKmNvZGVjOwo+ID4gKyAgICBpbnQgdXNlX25ka19jb2Rl YzsKPiA+ICsgICAgRkZBTmF0aXZlV2luZG93ICp3aW5kb3c7Cj4gPiArCj4gPiArICAgIGludCBm cHM7Cj4gPiArICAgIGludCB3aWR0aDsKPiA+ICsgICAgaW50IGhlaWdodDsKPiA+ICsKPiA+ICsg ICAgdWludDhfdCAqZXh0cmFkYXRhOwo+ID4gKyAgICBpbnQgZXh0cmFkYXRhX3NpemU7Cj4gPiAr Cj4gPiArICAgIC8vIFNpbmNlIE1lZGlhQ29kZWMgZG9lc24ndCBvdXRwdXQgRFRTLCB1c2UgYSB0 aW1lc3RhbXAgcXVldWUgdG8KPiBzYXZlIHB0cwo+ID4gKyAgICAvLyBvZiBBVkZyYW1lIGFuZCBn ZW5lcmF0ZSBEVFMgZm9yIEFWUGFja2V0Lgo+ID4gKyAgICAvLwo+ID4gKyAgICAvLyBUaGlzIGRv ZXNuJ3Qgd29yayB3aGVuIHVzZSBTdXJmYWNlIGFzIGlucHV0LCBpbiB0aGF0IGNhc2UgZnJhbWVz Cj4gY2FuIGJlCj4gPiArICAgIC8vIHNlbnQgdG8gZW5jb2RlciB3aXRob3V0IG91ciBub3RpY2Uu IE9uZSBleGNlcHRpb24gaXMgZnJhbWVzIGNvbWUKPiBmcm9tCj4gPiArICAgIC8vIG91ciBNZWRp YUNvZGVjIGRlY29kZXIgd3JhcHBlciwgc2luY2Ugd2UgY2FuIGNvbnRyb2wgaXQncyByZW5kZXIK PiBieQo+ID4gKyAgICAvLyBhdl9tZWRpYWNvZGVjX3JlbGVhc2VfYnVmZmVyLgo+ID4gKyAgICBp bnQ2NF90IHRpbWVzdGFtcHNbMzJdOwo+ID4gKyAgICBpbnQgdHNfaGVhZDsKPiA+ICsgICAgaW50 IHRzX3RhaWw7Cj4gPiArCj4gPiArICAgIGludCBlb2Zfc2VudDsKPiA+ICsKPiA+ICsgICAgQVZG cmFtZSAqZnJhbWU7Cj4gPiArfSBNZWRpYUNvZGVjRW5jQ29udGV4dDsKPiA+ICsKPiA+ICtlbnVt IHsKPiA+ICsgICAgQ09MT1JfRm9ybWF0WVVWNDIwUGxhbmFyICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgPSAweDEzLAo+ID4gKyAgICBDT0xPUl9Gb3JtYXRZVVY0MjBTZW1pUGxhbmFyICAg ICAgICAgICAgICAgICAgICAgICAgICA9IDB4MTUsCj4gPiArICAgIENPTE9SX0Zvcm1hdFN1cmZh Y2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg3RjAwMDc4OSwKPiA+ICt9 Owo+ID4gKwo+ID4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgewo+ID4gKyAgICBpbnQgY29sb3JfZm9y bWF0Owo+ID4gKyAgICBlbnVtIEFWUGl4ZWxGb3JtYXQgcGl4X2ZtdDsKPiA+ICt9IGNvbG9yX2Zv cm1hdHNbXSA9IHsKPiA+ICsgICAgeyBDT0xPUl9Gb3JtYXRZVVY0MjBQbGFuYXIsICAgICAgICAg QVZfUElYX0ZNVF9ZVVY0MjBQIH0sCj4gPiArICAgIHsgQ09MT1JfRm9ybWF0WVVWNDIwU2VtaVBs YW5hciwgICAgIEFWX1BJWF9GTVRfTlYxMiAgICB9LAo+ID4gKyAgICB7IENPTE9SX0Zvcm1hdFN1 cmZhY2UsICAgICAgICAgICAgICBBVl9QSVhfRk1UX01FRElBQ09ERUMgfSwKPiA+ICt9Owo+ID4g Kwo+ID4gK3N0YXRpYyBjb25zdCBlbnVtIEFWUGl4ZWxGb3JtYXQgYXZjX3BpeF9mbXRzW10gPSB7 Cj4gPiArICAgIEFWX1BJWF9GTVRfTUVESUFDT0RFQywKPiA+ICsgICAgQVZfUElYX0ZNVF9ZVVY0 MjBQLAo+ID4gKyAgICBBVl9QSVhfRk1UX05WMTIsCj4gPiArICAgIEFWX1BJWF9GTVRfTk9ORQo+ ID4gK307Cj4gPiArCj4gPiArc3RhdGljIHZvaWQgbWVkaWFjb2RlY19vdXRwdXRfZm9ybWF0KEFW Q29kZWNDb250ZXh0ICphdmN0eCkKPiA+ICt7Cj4gPiArICAgIE1lZGlhQ29kZWNFbmNDb250ZXh0 ICpzID0gYXZjdHgtPnByaXZfZGF0YTsKPiA+ICsgICAgY2hhciAqbmFtZSA9IGZmX0FNZWRpYUNv ZGVjX2dldE5hbWUocy0+Y29kZWMpOwo+ID4gKyAgICBGRkFNZWRpYUZvcm1hdCAqb3V0X2Zvcm1h dCA9Cj4gZmZfQU1lZGlhQ29kZWNfZ2V0T3V0cHV0Rm9ybWF0KHMtPmNvZGVjKTsKPiA+ICsgICAg Y2hhciAqc3RyID0gZmZfQU1lZGlhRm9ybWF0X3RvU3RyaW5nKG91dF9mb3JtYXQpOwo+ID4gKwo+ ID4gKyAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19ERUJVRywgIk1lZGlhQ29kZWMgZW5jb2RlciAl cyBvdXRwdXQgZm9ybWF0Cj4gJXNcbiIsCj4gPiArICAgICAgICAgICBuYW1lID8gbmFtZSA6ICJ1 bmtub3duIiwgc3RyKTsKPiA+ICsgICAgYXZfZnJlZShuYW1lKTsKPiA+ICsgICAgYXZfZnJlZShz dHIpOwo+ID4gKyAgICBmZl9BTWVkaWFGb3JtYXRfZGVsZXRlKG91dF9mb3JtYXQpOwo+ID4gK30K PiA+ICsKPiA+ICtzdGF0aWMgYXZfY29sZCBpbnQgbWVkaWFjb2RlY19pbml0KEFWQ29kZWNDb250 ZXh0ICphdmN0eCkKPiA+ICt7Cj4gPiArICAgIGNvbnN0IGNoYXIgKmNvZGVjX21pbWUgPSBOVUxM Owo+ID4gKyAgICBNZWRpYUNvZGVjRW5jQ29udGV4dCAqcyA9IGF2Y3R4LT5wcml2X2RhdGE7Cj4g PiArICAgIEZGQU1lZGlhRm9ybWF0ICpmb3JtYXQgPSBOVUxMOwo+ID4gKyAgICBpbnQgcmV0Owo+ ID4gKyAgICBpbnQgZ29wOwo+ID4gKwo+ID4gKyAgICBpZiAocy0+dXNlX25ka19jb2RlYyA8IDAp Cj4gPiArICAgICAgICBzLT51c2VfbmRrX2NvZGVjID0gIWF2X2puaV9nZXRfamF2YV92bShhdmN0 eCk7Cj4gPiArCj4gPiArICAgIHN3aXRjaCAoYXZjdHgtPmNvZGVjX2lkKSB7Cj4gPiArICAgIGNh c2UgQVZfQ09ERUNfSURfSDI2NDoKPiA+ICsgICAgICAgIGNvZGVjX21pbWUgPSAidmlkZW8vYXZj IjsKPiA+ICsgICAgICAgIGJyZWFrOwo+ID4gKyAgICBjYXNlIEFWX0NPREVDX0lEX0hFVkM6Cj4g PiArICAgICAgICBjb2RlY19taW1lID0gInZpZGVvL2hldmMiOwo+ID4gKyAgICAgICAgYnJlYWs7 Cj4gPiArICAgIGRlZmF1bHQ6Cj4gPiArICAgICAgICBhdl9hc3NlcnQwKDApOwo+ID4gKyAgICB9 Cj4gPiArCj4gPiArICAgIHMtPmNvZGVjID0gZmZfQU1lZGlhQ29kZWNfY3JlYXRlRW5jb2RlckJ5 VHlwZShjb2RlY19taW1lLAo+IHMtPnVzZV9uZGtfY29kZWMpOwo+ID4gKyAgICBpZiAoIXMtPmNv ZGVjKSB7Cj4gPiArICAgICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19FUlJPUiwgIkZhaWxlZCB0 byBjcmVhdGUgZW5jb2RlciBmb3IgdHlwZQo+ICVzXG4iLAo+ID4gKyAgICAgICAgICAgICAgIGNv ZGVjX21pbWUpOwo+ID4gKyAgICAgICAgcmV0dXJuIEFWRVJST1JfRVhURVJOQUw7Cj4gPiArICAg IH0KPiA+ICsKPiA+ICsgICAgZm9ybWF0ID0gZmZfQU1lZGlhRm9ybWF0X25ldyhzLT51c2VfbmRr X2NvZGVjKTsKPiA+ICsgICAgaWYgKCFmb3JtYXQpIHsKPiA+ICsgICAgICAgIGF2X2xvZyhhdmN0 eCwgQVZfTE9HX0VSUk9SLCAiRmFpbGVkIHRvIGNyZWF0ZSBtZWRpYSBmb3JtYXRcbiIpOwo+ID4g KyAgICAgICAgcmV0dXJuIEFWRVJST1JfRVhURVJOQUw7Cj4gPiArICAgIH0KPiA+ICsKPiA+ICsg ICAgZmZfQU1lZGlhRm9ybWF0X3NldFN0cmluZyhmb3JtYXQsICJtaW1lIiwgY29kZWNfbWltZSk7 Cj4gPiArICAgIHMtPndpZHRoID0gRkZBTElHTihhdmN0eC0+d2lkdGgsIDE2KTsKPiA+ICsgICAg cy0+aGVpZ2h0ID0gYXZjdHgtPmhlaWdodDsKPiA+ICsgICAgZmZfQU1lZGlhRm9ybWF0X3NldElu dDMyKGZvcm1hdCwgIndpZHRoIiwgcy0+d2lkdGgpOwo+ID4gKyAgICBmZl9BTWVkaWFGb3JtYXRf c2V0SW50MzIoZm9ybWF0LCAiaGVpZ2h0Iiwgcy0+aGVpZ2h0KTsKPiA+Cj4gPiBJcyBpdCBwcmVm ZXJhYmxlIHRvIHVzZSBjb25zdGFudHMgbGlrZSBBTUVESUFGT1JNQVRfS0VZX0hFSUdIVCBoZXJl Pwo+ID4KPiA+IEkgZG9uJ3QgaGF2ZSBhIHByZWZlcmVuY2UgZWl0aGVyIHdheS4KPgo+IFRoZXNl IEtFWXMgYXJlbuKAmXQgc3RyaW5nIGxpdGVyYWwsIHRoZXkgYXJlIGdsb2JhbCB2YXJpYWJsZXMu Cj4KPiBleHRlcm4gY29uc3QgY2hhciogQU1FRElBRk9STUFUX0tFWV9IRUlHSFQgX19JTlRST0RV Q0VEX0lOKDIxKTsKPgo+IFNvbWUgYmFzaWMgb25lcyBhcmUgaW50cm9kdWNlZCB2ZXJ5IGxhdGUs IGUuZy4sCj4KPiBleHRlcm4gY29uc3QgY2hhciogQU1FRElBRk9STUFUX0tFWV9DU0QgX19JTlRS T0RVQ0VEX0lOKDI4KTsKPiBleHRlcm4gY29uc3QgY2hhciogQU1FRElBRk9STUFUX0tFWV9DU0Rf MCBfX0lOVFJPRFVDRURfSU4oMjgpOwo+IGV4dGVybiBjb25zdCBjaGFyKiBBTUVESUFGT1JNQVRf S0VZX0NTRF8xIF9fSU5UUk9EVUNFRF9JTigyOCk7Cj4gZXh0ZXJuIGNvbnN0IGNoYXIqIEFNRURJ QUZPUk1BVF9LRVlfQ1NEXzIgX19JTlRST0RVQ0VEX0lOKDI4KTsKPiBleHRlcm4gY29uc3QgY2hh ciogQU1FRElBRk9STUFUX0tFWV9ESVNQTEFZX0NST1AgX19JTlRST0RVQ0VEX0lOKDI4KTsKPgo+ IFNvIHdlIGNhbuKAmXQgdXNlIHRoZXNlIEFNRURJQUZPUk1BVF9LRVlfIGRpcmVjdGx5LiBkbHN5 bSgpIHRoZXNlIGdsb2JhbAo+IHZhcmlhYmxlcyBhbmQgd2l0aCBhIGZhbGxiYWNrIHZhbHVlIGlz IHBvc3NpYmxlLCBqdXN0IG92ZXItZW5naW5lZXJpbmcuCj4KPiBHb29nbGXigJlzIEFQSSBkZXNp Z24gZm9yY2VkIHVzIHRvIHVzZSBzdHJpbmcgbGl0ZXJhbCBkaXJlY3RseS4KPgo+ID4KPiA+IEl0 IG1heSBiZSB3b3J0aCBhbHNvIHBhc3NpbmcgaW4gdGhlIHNhbWUgdmFsdWVzIHRvCj4gQU1FRElB Rk9STUFUX0tFWV9NQVhfV0lEVEggYW5kIEFNRURJQUZPUk1BVF9LRVlfTUFYX0hFSUdIVAo+Cj4g VGhlIGRvY3VtZW50YXRpb24gaGludHMgdGhleSBhcmUgZm9yIGRlY29kZXIgb25seToKPgo+ID4g QSBrZXkgZGVzY3JpYmluZyB0aGUgbWF4aW11bSBleHBlY3RlZCB3aWR0aCBvZiB0aGUgY29udGVu dCBpbiBhIHZpZGVvCj4gZGVjb2RlciBmb3JtYXQsIGluIGNhc2UgdGhlcmUgYXJlIHJlc29sdXRp b24gY2hhbmdlcyBpbiB0aGUgdmlkZW8gY29udGVudC4KPgo+IGh0dHBzOi8vZGV2ZWxvcGVyLmFu ZHJvaWQuY29tL3JlZmVyZW5jZS9hbmRyb2lkL21lZGlhL01lZGlhRm9ybWF0Cj4KPiA+Cj4gPiBB bmQgSSB0aGluayB0aGUgdW5hbGlnbmVkIHdpZHRoIHNob3VsZCBiZSBzZXQgaW50bwo+IEFNRURJ QUZPUk1BVF9LRVlfU1RSSURFCj4KPiBUZWNobmljYWxseSwgS0VZX1dJRFRIIHNob3VsZCBiZSB1 bmFsaWduZWQgd2lkdGgsIGFuZCBLRVlfU1RSSURFIHNob3VsZAo+IGJlIGFsaWduZWQgd2lkdGgu IEhvd2V2ZXIsCj4KPiAxLiBJdOKAmXMgd2VsbCBrbm93biB0aGF0IGEgbG90IG9mIGRldmljZXMg Y2Fu4oCZdCBoYW5kbGUgd2lkdGggZG9lc27igJl0IGFsaWduZWQKPiB0byAxNiwgdGhleSB3aWxs IGNyYXNoLCByZXBvcnQgZXJyb3Igb3IgcHJvZHVjZSBicm9rZW4gZmlsZXMuCj4KPiAyLiBDVFMg dGVzdHMgb25seSB2ZXJpZnkgdGhhdCAxNiBhbGlnbmVkIHJlc29sdXRpb25zIGFyZSBzdXBwb3J0 ZWQuCj4KPiAzLiBUaGVyZSBhcmUgYWxpZ25tZW50IGluZm8gaW4gT01YIGFuZCBleHBvcnRlZCB2 aWEgTWVkaWFDb2RlY0luZm8sIGxpa2UKPgo+ICAgICAgICAgPE1lZGlhQ29kZWMgbmFtZT0iYzIu cXRpLmF2Yy5lbmNvZGVyIiB0eXBlPSJ2aWRlby9hdmMiPgo+ICAgICAgICAgICAgIDxBbGlhcyBu YW1lPSJPTVgucWNvbS52aWRlby5lbmNvZGVyLmF2YyIgLz4KPiAgICAgICAgICAgICA8TGltaXQg bmFtZT0ic2l6ZSIgbWluPSI5Nng5NiIgbWF4PSI0MDk2eDIzMDQiIC8+Cj4gICAgICAgICAgICAg PExpbWl0IG5hbWU9ImFsaWdubWVudCIgdmFsdWU9IjJ4MiIgLz4KPiAgICAgICAgICAgICA8TGlt aXQgbmFtZT0iYmxvY2stc2l6ZSIgdmFsdWU9IjE2eDE2IiAvPgo+Cj4gSXQgY2FuIGJlIG1pc3Np bmcgb24gb2xkIGRldmljZXMsIG9yIHdvcnNlLCB0aGUgaW5mbyBkb2VzbuKAmXQgcmVmbGVjdCB0 aGUKPiByZWFsIHJlcXVpcmVtZW50IChNYXliZSBpdCB3YXMganVzdCBhIGNvcHktcGFzdGUgZnJv bSBzb21lIHBsYWNlcykuCj4KPiBJIGhhdmUgYW4gaWRlYSB0byBmaXggdGhlIGlzc3VlOiBhbHdh eXMgZW5jb2RpbmcgaW4gYWxpZ25lZCByZXNvbHV0aW9uLAo+IHRoZW4gZml4IHRoZSBjcm9wIHNl dHRpbmcgYnkgYXBwbHkgQlNGIChlLmcuLCBoMjY0X21ldGFkYXRhKSBvbiB0aGUKPiBiaXRzdHJl YW0uCj4KPiA+Cj4gPiBGaW5hbGx5LCBhdmN0eC0+c2FtcGxlX2FzcGVjdF9yYXRpbyBzaG91bGQg YmUgcHJvcGFnYXRlZCBpbnRvCj4gYXNwZWN0LXdpZHRoIGFuZCBhc3BlY3QtaGVpZ2h0LiBTb21l dGhpbmcgbGlrZSB0aGlzOgo+ID4KPiA+ICAgICBBVlJhdGlvbmFsIHNhciA9IGF2Y3R4LT5zYW1w bGVfYXNwZWN0X3JhdGlvOwo+ID4gICAgIGlmICghc2FyLm51bSB8fCAhc2FyLmRlbikKPiA+ICAg ICAgICAgc2FyLm51bSA9IHNhci5kZW4gPSAxOwo+ID4gICAgIGF2X3JlZHVjZSgmc2FyLm51bSwg JnNhci5kZW4sIHNhci5udW0sIHNhci5kZW4sIDQwOTYpOwo+ID4gICAgIEFNZWRpYUZvcm1hdF9z ZXRJbnQzMihmb3JtYXQsICJhc3BlY3Qtd2lkdGgiLCBzYXIubnVtKTsKPiA+ICAgICBBTWVkaWFG b3JtYXRfc2V0SW50MzIoZm9ybWF0LCAiYXNwZWN0LWhlaWdodCIsIHNhci5kZW4pOwo+ID4KPgo+ IFlvdSBtZWFuIHNhci13aWR0aC9zYXItaGVpZ2h0Pwo+Cj4gRVhQT1JUIGNvbnN0IGNoYXIqIEFN RURJQUZPUk1BVF9LRVlfU0FSX0hFSUdIVCA9ICJzYXItaGVpZ2h0IjsKPiBFWFBPUlQgY29uc3Qg Y2hhciogQU1FRElBRk9STUFUX0tFWV9TQVJfV0lEVEggPSAic2FyLXdpZHRoIjsKPgo+IFRoZXkg YXJlIGF2YWlsYWJsZSBpbiBOREsgc2luY2UgQVBJIGxldmVsIDI5IChBbmRyb2lkIDEwKQo+Cj4g ZXh0ZXJuIGNvbnN0IGNoYXIqIEFNRURJQUZPUk1BVF9LRVlfU0FSX0hFSUdIVCBfX0lOVFJPRFVD RURfSU4oMjkpOwo+IGV4dGVybiBjb25zdCBjaGFyKiBBTUVESUFGT1JNQVRfS0VZX1NBUl9XSURU SCBfX0lOVFJPRFVDRURfSU4oMjkpOwo+Cj4gQW5kIHRoZXkgd2VyZSBhZGRlZCB0byBKYXZhIE1l ZGlhRm9ybWF0IHNpbmNlIEFQSSBsZXZlbCAzMC4KPgo+Cj4gaHR0cHM6Ly9kZXZlbG9wZXIuYW5k cm9pZC5jb20vcmVmZXJlbmNlL2FuZHJvaWQvbWVkaWEvTWVkaWFGb3JtYXQjS0VZX1BJWEVMX0FT UEVDVF9SQVRJT19XSURUSAo+Cj4gSXTigJlzIHVuY29tbW9uIGZvciBKYXZhIEFQSSBnb3QgYSBm ZWF0dXJlIGxhdGUgdGhhbiBOREsuIEkgd2lsbCBrZWVwCj4gYSBub3RlIGFuZCBkbyBtb3JlIHRl c3QgYmVmb3JlIHNldHRpbmcgdGhlbS4KPgo+ID4KPiA+ICsKPiA+ICsgICAgaWYgKGF2Y3R4LT5w aXhfZm10ID09IEFWX1BJWF9GTVRfTUVESUFDT0RFQykgewo+ID4gKyAgICAgICAgQVZNZWRpYUNv ZGVjQ29udGV4dCAqdXNlcl9jdHggPSBhdmN0eC0+aHdhY2NlbF9jb250ZXh0Owo+ID4gKyAgICAg ICAgaWYgKGF2Y3R4LT5od19kZXZpY2VfY3R4KSB7Cj4gPiArICAgICAgICAgICAgQVZIV0Rldmlj ZUNvbnRleHQgKmRldmljZV9jdHggPQo+IChBVkhXRGV2aWNlQ29udGV4dCopKGF2Y3R4LT5od19k ZXZpY2VfY3R4LT5kYXRhKTsKPiA+ICsgICAgICAgICAgICBBVk1lZGlhQ29kZWNEZXZpY2VDb250 ZXh0ICpkZXZfY3R4Owo+ID4gKwo+ID4gKyAgICAgICAgICAgIGlmIChkZXZpY2VfY3R4LT50eXBl ICE9IEFWX0hXREVWSUNFX1RZUEVfTUVESUFDT0RFQyB8fAo+ICFkZXZpY2VfY3R4LT5od2N0eCkg ewo+ID4gKyAgICAgICAgICAgICAgICByZXQgPSBBVkVSUk9SKEVJTlZBTCk7Cj4gPiArICAgICAg ICAgICAgICAgIGdvdG8gYmFpbG91dDsKPiA+ICsgICAgICAgICAgICB9Cj4gPiArICAgICAgICAg ICAgZGV2X2N0eCA9IGRldmljZV9jdHgtPmh3Y3R4Owo+ID4gKyAgICAgICAgICAgIHMtPndpbmRv dyA9IGZmX21lZGlhY29kZWNfc3VyZmFjZV9yZWYoZGV2X2N0eC0+c3VyZmFjZSwKPiBkZXZfY3R4 LT5uYXRpdmVfd2luZG93LCBhdmN0eCk7Cj4gPiArICAgICAgICB9Cj4gPiArCj4gPiArICAgICAg ICBpZiAoIXMtPndpbmRvdyAmJiB1c2VyX2N0eCAmJiB1c2VyX2N0eC0+c3VyZmFjZSkKPiA+ICsg ICAgICAgICAgICBzLT53aW5kb3cgPSBmZl9tZWRpYWNvZGVjX3N1cmZhY2VfcmVmKHVzZXJfY3R4 LT5zdXJmYWNlLAo+IE5VTEwsIGF2Y3R4KTsKPiA+ICsKPiA+ICsgICAgICAgIGlmICghcy0+d2lu ZG93KSB7Cj4gPiArICAgICAgICAgICAgcmV0ID0gQVZFUlJPUihFSU5WQUwpOwo+ID4gKyAgICAg ICAgICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX0VSUk9SLCAiTWlzc2luZyBod19kZXZpY2VfY3R4 IG9yCj4gaHdhY2NlbF9jb250ZXh0IGZvciBBVl9QSVhfRk1UX01FRElBQ09ERUNcbiIpOwo+ID4g KyAgICAgICAgICAgIGdvdG8gYmFpbG91dDsKPiA+ICsgICAgICAgIH0KPiA+ICsgICAgfQo+ID4g Kwo+ID4gKyAgICBmb3IgKGludCBpID0gMDsgaSA8IEZGX0FSUkFZX0VMRU1TKGNvbG9yX2Zvcm1h dHMpOyBpKyspIHsKPiA+ICsgICAgICAgIGlmIChhdmN0eC0+cGl4X2ZtdCA9PSBjb2xvcl9mb3Jt YXRzW2ldLnBpeF9mbXQpIHsKPiA+ICsgICAgICAgICAgICBmZl9BTWVkaWFGb3JtYXRfc2V0SW50 MzIoZm9ybWF0LCAiY29sb3ItZm9ybWF0IiwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY29sb3JfZm9ybWF0c1tpXS5jb2xvcl9mb3JtYXQpOwo+ID4gKyAgICAgICAg ICAgIGJyZWFrOwo+ID4KPiA+IGRvIHdlIG5lZWQgZXJyb3IvZmFsbGJhY2sgaWYgbm8gbWF0Y2gg aXMgZm91bmQ/Cj4KPiBUaGUgc3VwcG9ydGVkIHBpeF9mbXRzIGlzIHNwZWNpZmllZAo+Cj4gICAg IC5wcml2X2RhdGFfc2l6ZSAgID0gc2l6ZW9mKE1lZGlhQ29kZWNFbmNDb250ZXh0KSwgICAgICAg ICAgICAgICAgICAgXAo+ICAgICAucC5waXhfZm10cyAgICAgICA9IGF2Y19waXhfZm10cywgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiAgICAgLmluaXQgICAgICAgICAgICAg PSBtZWRpYWNvZGVjX2luaXQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4KPiBJ dCBoYXMgYmVlbiBjaGVja2VkIGluIGVuY29kZXIuYyBlbmNvZGVfcHJlaW5pdF92aWRlbygpLCBz byBjaGVjayBpdCBhZ2Fpbgo+IGlzCj4gb3B0aW9uYWwgYnV0IG5vdCBuZWNlc3NhcnkgaW4gbXkg b3Bpbmlvbi4KPgo+ID4KPiA+Cj4gPiArICAgICAgICB9Cj4gPiArICAgIH0KPiA+ICsKPiA+ICsg ICAgaWYgKGF2Y3R4LT5iaXRfcmF0ZSkKPiA+ICsgICAgICAgIGZmX0FNZWRpYUZvcm1hdF9zZXRJ bnQzMihmb3JtYXQsICJiaXRyYXRlIiwgYXZjdHgtPmJpdF9yYXRlKTsKPiA+ICsgICAgLy8gZnJh bWUtcmF0ZSBhbmQgaS1mcmFtZS1pbnRlcnZhbCBhcmUgcmVxdWlyZWQgdG8gY29uZmlndXJlIGNv ZGVjCj4gPiArICAgIGlmIChhdmN0eC0+ZnJhbWVyYXRlLm51bSA+PSBhdmN0eC0+ZnJhbWVyYXRl LmRlbiAmJgo+IGF2Y3R4LT5mcmFtZXJhdGUuZGVuID4gMCkKPiA+ICsgICAgICAgIHMtPmZwcyA9 IGF2Y3R4LT5mcmFtZXJhdGUubnVtIC8gYXZjdHgtPmZyYW1lcmF0ZS5kZW47Cj4gPiArICAgIGVs c2UKPiA+ICsgICAgICAgIHMtPmZwcyA9IDMwOwo+ID4gKyAgICBnb3AgPSByb3VuZChhdmN0eC0+ Z29wX3NpemUgLyBzLT5mcHMpOwo+ID4gKyAgICBpZiAoZ29wID09IDApCj4gPiArICAgICAgICBn b3AgPSAyOwo+ID4KPiA+IGNhbiB3ZSByZWFkIGdvcCBmcm9tIGF2Y3R4PyBpbiBvdGhlciBpbXBs ZW1lbnRhdGlvbnMgaSBoYXZlIHNlZW4gZ29wCj4gaGFyZGNvZGVkIHRvIDEKPgo+IEkgdGhpbmsg d2Ugc2hvdWxkIHJlc3BlY3QgZ29wX3NpemUgc2V0dGluZy4KPgo+IEkgd2lsbCBhZGQgc29tZSBs b2cgbWVzc2FnZSBhbmQgY2hhbmdlIGRlZmF1bHQgZ29wIHRvIDEgaW4gcGF0Y2ggdjIuCj4KPiA+ Cj4gPiBmb3IgZnBzIHZhbHVlLCBjYW4gd2UgdXNlIGF2X3EyZChhdmN0eC0+ZnJhbWVyYXRlKQo+ Cj4gcTJkKCkgaXMgZm9yIGRvdWJsZSwgZnBzIGlzIGludGVnZXIgaGVyZS4KPgo+ID4KPiA+Cj4g PiArICAgIGZmX0FNZWRpYUZvcm1hdF9zZXRJbnQzMihmb3JtYXQsICJmcmFtZS1yYXRlIiwgcy0+ ZnBzKTsKPiA+ICsgICAgZmZfQU1lZGlhRm9ybWF0X3NldEludDMyKGZvcm1hdCwgImktZnJhbWUt aW50ZXJ2YWwiLCBnb3ApOwo+ID4gKwo+ID4KPiA+IGZvciBIMjY0IGVuY29kaW5nLCB5b3UgY2Fu IHBhc3MgInByb2ZpbGUiIGFuZCAibGV2ZWwiLiBmb3IgZXhhbXBsZQo+IHByb2ZpbGU9MHgwOCBm b3IgSGlnaCBhbmQgbGV2ZWw9MHg0MDAwIGZvciA1LjAKPiA+Cj4gPiBodHRwczovL3N0YWNrb3Zl cmZsb3cuY29tL2EvMzg5OTk0MTIvMzMyNzk4Cj4KPiBJ4oCZbSBwbGFubmluZyB0byBhZGQgcHJv ZmlsZS9sZXZlbCBzdXBwb3J0IGFmdGVyIHRoZSBiYXNpYyBwYXRjaCBpcyBhcHBsaWVkLgo+IFRo ZXJlIGFyZSBzb21lIHVucmVzb2x2ZWQgaXNzdWUgaGVyZToKPgo+IDEuIEkgaGF2ZSBhIGRldmlj ZSB3aGljaCBmYWlsZWQgYXQgY29uZmlndXJlKCkgd2hlbiBwcm9maWxlIGhhcyBiZWVuIHNldCwK PiBldmVuIGZvciBiYXNlbGluZS4KPgo+IDIuIERUUyBpcyBtaXNzaW5nIGluIE1lZGlhQ29kZWMg QVBJLiBGb3IgdGhlIGRlZmF1bHQgYmFzZWxpbmUgcHJvZmlsZSwKPiB0aGVyZQo+IGlzIG5vIHBy b2JsZW0uIFRyb3VibGUgY29tZXMgd2hlbiB3ZSBzZXQgcHJvZmlsZSB0byBtYWlubGluZSBvciBo aWdoLiBJZgo+IFN1cmZhY2UvQU5hdGl2ZVdpbmRvdyBpcyB1c2VkLCBhbmQgdGhlIGZyYW1lcyBj b21lIGZyb20gb3VyIE1lZGlhQ29kZWMKPiBkZWNvZGVyCj4gd3JhcHBlciwgd2UgY2FuIGNvbnRy b2wgaXTigJlzICdyZW5kZXInIChzZW5kIHRvIGVuY29kZXIncyBzdXJmYWNlKSB2aWEKPiBhdl9t ZWRpYWNvZGVjX3JlbGVhc2VfYnVmZmVyKCkuIEEgRFRTIGdlbmVyYXRpb24gc3RyYXRlZ3kgd29y a3MgaW4gdGhpcwo+IGNhc2UuCj4gSG93ZXZlciwgaWYgZnJhbWVzIGNvbWVzIGZyb20gb3RoZXIg c291cmNlcywgbGlrZSBhIGNhbWVyYSwgdGhlcmUgaXMgbm8gd2F5Cj4gdG8gY29udHJvbCB0aGUg J3JlbmRlcicgeWV0LCBzbyBEVFMgaXMgbWlzc2luZyBpbiB0aGlzIGNhc2UuCj4KPiBDb25maWd1 cmUgcHJvZmlsZS9sZXZlbCBhbmQgQiBmcmFtZXMgc2hvdWxkIGNvbWUgdG9nZXRoZXIuCj4KPiA+ Cj4gPgo+ID4gKwo+ID4gKyAgICByZXQgPSBmZl9BTWVkaWFDb2RlY19nZXRDb25maWd1cmVGbGFn RW5jb2RlKHMtPmNvZGVjKTsKPiA+ICsgICAgcmV0ID0gZmZfQU1lZGlhQ29kZWNfY29uZmlndXJl KHMtPmNvZGVjLCBmb3JtYXQsIHMtPndpbmRvdywgTlVMTCwKPiByZXQpOwo+ID4gKyAgICBpZiAo cmV0KSB7Cj4gPiArICAgICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19FUlJPUiwgIk1lZGlhQ29k ZWMgY29uZmlndXJlIGZhaWxlZCwKPiAlc1xuIiwgYXZfZXJyMnN0cihyZXQpKTsKPiA+ICsgICAg ICAgIGdvdG8gYmFpbG91dDsKPiA+ICsgICAgfQo+ID4gKwo+ID4gKyAgICByZXQgPSBmZl9BTWVk aWFDb2RlY19zdGFydChzLT5jb2RlYyk7Cj4gPiArICAgIGlmIChyZXQpIHsKPiA+ICsgICAgICAg IGF2X2xvZyhhdmN0eCwgQVZfTE9HX0VSUk9SLCAiTWVkaWFDb2RlYyBmYWlsZWQgdG8gc3RhcnQs ICVzXG4iLAo+IGF2X2VycjJzdHIocmV0KSk7Cj4gPiArICAgICAgICBnb3RvIGJhaWxvdXQ7Cj4g PiArICAgIH0KPiA+ICsKPiA+ICsgICAgbWVkaWFjb2RlY19vdXRwdXRfZm9ybWF0KGF2Y3R4KTsK PiA+ICsKPiA+ICsgICAgcy0+ZnJhbWUgPSBhdl9mcmFtZV9hbGxvYygpOwo+ID4gKyAgICBpZiAo IXMtPmZyYW1lKQo+ID4gKyAgICAgICAgcmV0ID0gQVZFUlJPUihFTk9NRU0pOwo+ID4gKwo+ID4g K2JhaWxvdXQ6Cj4gPiArICAgIGlmIChmb3JtYXQpCj4gPiArICAgICAgICBmZl9BTWVkaWFGb3Jt YXRfZGVsZXRlKGZvcm1hdCk7Cj4gPiArICAgIHJldHVybiByZXQ7Cj4gPiArfQo+ID4gKwo+ID4g K3N0YXRpYyBpbnQgbWVkaWFjb2RlY19yZWNlaXZlKEFWQ29kZWNDb250ZXh0ICphdmN0eCwKPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVZQYWNrZXQgKnBrdCwKPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpnb3RfcGFja2V0KQo+ID4gK3sKPiA+ICsg ICAgTWVkaWFDb2RlY0VuY0NvbnRleHQgKnMgPSBhdmN0eC0+cHJpdl9kYXRhOwo+ID4gKyAgICBG RkFNZWRpYUNvZGVjICpjb2RlYyA9IHMtPmNvZGVjOwo+ID4gKyAgICBGRkFNZWRpYUNvZGVjQnVm ZmVySW5mbyBvdXRfaW5mbyA9IHswfTsKPiA+ICsgICAgdWludDhfdCAqb3V0X2J1ZjsKPiA+ICsg ICAgc2l6ZV90IG91dF9zaXplID0gMDsKPiA+ICsgICAgaW50IHJldDsKPiA+ICsgICAgaW50IGV4 dHJhZGF0YV9zaXplID0gMDsKPiA+ICsgICAgaW50NjRfdCB0aW1lb3V0X3VzID0gcy0+ZW9mX3Nl bnQgPyBPVVRQVVRfREVRVUVVRV9USU1FT1VUX1VTIDogMDsKPiA+ICsgICAgc3NpemVfdCBpbmRl eCA9IGZmX0FNZWRpYUNvZGVjX2RlcXVldWVPdXRwdXRCdWZmZXIoY29kZWMsCj4gJm91dF9pbmZv LCB0aW1lb3V0X3VzKTsKPiA+ICsKPiA+ICsgICAgaWYgKGZmX0FNZWRpYUNvZGVjX2luZm9UcnlB Z2FpbkxhdGVyKGNvZGVjLCBpbmRleCkpCj4gPiArICAgICAgICByZXR1cm4gQVZFUlJPUihFQUdB SU4pOwo+ID4gKwo+ID4gKyAgICBpZiAoZmZfQU1lZGlhQ29kZWNfaW5mb091dHB1dEZvcm1hdENo YW5nZWQoY29kZWMsIGluZGV4KSkgewo+ID4gKyAgICAgICAgbWVkaWFjb2RlY19vdXRwdXRfZm9y bWF0KGF2Y3R4KTsKPiA+ICsgICAgICAgIHJldHVybiBBVkVSUk9SKEVBR0FJTik7Cj4gPiArICAg IH0KPiA+ICsKPiA+ICsgICAgaWYgKGZmX0FNZWRpYUNvZGVjX2luZm9PdXRwdXRCdWZmZXJzQ2hh bmdlZChjb2RlYywgaW5kZXgpKSB7Cj4gPiArICAgICAgICBmZl9BTWVkaWFDb2RlY19jbGVhbk91 dHB1dEJ1ZmZlcnMoY29kZWMpOwo+ID4gKyAgICAgICAgcmV0dXJuIEFWRVJST1IoRUFHQUlOKTsK PiA+ICsgICAgfQo+ID4gKwo+ID4gKyAgICBpZiAoaW5kZXggPCAwKQo+ID4gKyAgICAgICAgcmV0 dXJuIEFWRVJST1JfRVhURVJOQUw7Cj4gPiArCj4gPiArICAgIGlmIChvdXRfaW5mby5mbGFncyAm IGZmX0FNZWRpYUNvZGVjX2dldEJ1ZmZlckZsYWdFbmRPZlN0cmVhbShjb2RlYykpCj4gPiArICAg ICAgICByZXR1cm4gQVZFUlJPUl9FT0Y7Cj4gPiArCj4gPiArICAgIG91dF9idWYgPSBmZl9BTWVk aWFDb2RlY19nZXRPdXRwdXRCdWZmZXIoY29kZWMsIGluZGV4LCAmb3V0X3NpemUpOwo+ID4gKyAg ICBpZiAoIW91dF9idWYpIHsKPiA+ICsgICAgICAgIHJldCA9IEFWRVJST1JfRVhURVJOQUw7Cj4g PiArICAgICAgICBnb3RvIGJhaWxvdXQ7Cj4gPiArICAgIH0KPiA+ICsKPiA+ICsgICAgaWYgKG91 dF9pbmZvLmZsYWdzICYKPiBmZl9BTWVkaWFDb2RlY19nZXRCdWZmZXJGbGFnQ29kZWNDb25maWco Y29kZWMpKSB7Cj4gPiArICAgICAgICByZXQgPSBhdl9yZWFsbG9jcCgmcy0+ZXh0cmFkYXRhLCBv dXRfaW5mby5zaXplKTsKPiA+ICsgICAgICAgIGlmIChyZXQpCj4gPiArICAgICAgICAgICAgZ290 byBiYWlsb3V0Owo+ID4gKwo+ID4gKyAgICAgICAgcy0+ZXh0cmFkYXRhX3NpemUgPSBvdXRfaW5m by5zaXplOwo+ID4gKyAgICAgICAgbWVtY3B5KHMtPmV4dHJhZGF0YSwgb3V0X2J1ZiArIG91dF9p bmZvLm9mZnNldCwgb3V0X2luZm8uc2l6ZSk7Cj4gPiArICAgICAgICBmZl9BTWVkaWFDb2RlY19y ZWxlYXNlT3V0cHV0QnVmZmVyKGNvZGVjLCBpbmRleCwgZmFsc2UpOwo+ID4gKyAgICAgICAgLy8g dHJ5IGltbWVkaWF0ZWx5Cj4gPiArICAgICAgICByZXR1cm4gbWVkaWFjb2RlY19yZWNlaXZlKGF2 Y3R4LCBwa3QsIGdvdF9wYWNrZXQpOwo+ID4gKyAgICB9Cj4gPiArCj4gPiArICAgIHJldCA9IGZm X2dldF9lbmNvZGVfYnVmZmVyKGF2Y3R4LCBwa3QsIG91dF9pbmZvLnNpemUgKwo+IHMtPmV4dHJh ZGF0YV9zaXplLCAwKTsKPiA+ICsgICAgaWYgKHJldCA8IDApCj4gPiArICAgICAgZ290byBiYWls b3V0Owo+ID4gKwo+ID4gKyAgICBpZiAocy0+ZXh0cmFkYXRhX3NpemUpIHsKPiA+ICsgICAgICAg IGV4dHJhZGF0YV9zaXplID0gcy0+ZXh0cmFkYXRhX3NpemU7Cj4gPiArICAgICAgICBzLT5leHRy YWRhdGFfc2l6ZSA9IDA7Cj4gPiArICAgICAgICBtZW1jcHkocGt0LT5kYXRhLCBzLT5leHRyYWRh dGEsIGV4dHJhZGF0YV9zaXplKTsKPiA+ICsgICAgfQo+ID4gKyAgICBtZW1jcHkocGt0LT5kYXRh ICsgZXh0cmFkYXRhX3NpemUsIG91dF9idWYgKyBvdXRfaW5mby5vZmZzZXQsCj4gb3V0X2luZm8u c2l6ZSk7Cj4gPiArICAgIHBrdC0+cHRzID0gYXZfcmVzY2FsZV9xKG91dF9pbmZvLnByZXNlbnRh dGlvblRpbWVVcywKPiBBVl9USU1FX0JBU0VfUSwgYXZjdHgtPnRpbWVfYmFzZSk7Cj4gPiArICAg IGlmIChzLT50c190YWlsICE9IHMtPnRzX2hlYWQpIHsKPiA+ICsgICAgICAgIHBrdC0+ZHRzID0g cy0+dGltZXN0YW1wc1tzLT50c190YWlsXTsKPiA+ICsgICAgICAgIHMtPnRzX3RhaWwgPSAocy0+ dHNfdGFpbCArIDEpICUgRkZfQVJSQVlfRUxFTVMocy0+dGltZXN0YW1wcyk7Cj4gPiArICAgIH0K PiA+ICsKPiA+ICsgICAgaWYgKG91dF9pbmZvLmZsYWdzICYgZmZfQU1lZGlhQ29kZWNfZ2V0QnVm ZmVyRmxhZ0tleUZyYW1lKGNvZGVjKSkKPiA+ICsgICAgICAgIHBrdC0+ZmxhZ3MgfD0gQVZfUEtU X0ZMQUdfS0VZOwo+ID4gKyAgICByZXQgPSAwOwo+ID4gKyAgICAqZ290X3BhY2tldCA9IDE7Cj4g PiArCj4gPiArICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX1RSQUNFLCAicmVjZWl2ZSBwYWNrZXQg cHRzICUiIFBSSWQ2NCAiIGR0cyAlIgo+IFBSSWQ2NAo+ID4gKyAgICAgICAgICAgIiBmbGFncyAl ZCBleHRyYWRhdGEgJWRcbiIsCj4gPiArICAgICAgICAgICBwa3QtPnB0cywgcGt0LT5kdHMsIHBr dC0+ZmxhZ3MsIGV4dHJhZGF0YV9zaXplKTsKPiA+ICsKPiA+ICtiYWlsb3V0Ogo+ID4gKyAgICBm Zl9BTWVkaWFDb2RlY19yZWxlYXNlT3V0cHV0QnVmZmVyKGNvZGVjLCBpbmRleCwgZmFsc2UpOwo+ ID4gKyAgICByZXR1cm4gcmV0Owo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgdm9pZCBjb3B5X2Zy YW1lX3RvX2J1ZmZlcihBVkNvZGVjQ29udGV4dCAqYXZjdHgsIGNvbnN0IEFWRnJhbWUKPiAqZnJh bWUsIHVpbnQ4X3QgKmRzdCwgc2l6ZV90IHNpemUpCj4gPiArewo+ID4gKyAgICBNZWRpYUNvZGVj RW5jQ29udGV4dCAqcyA9IGF2Y3R4LT5wcml2X2RhdGE7Cj4gPiArICAgIHVpbnQ4X3QgKmRzdF9k YXRhWzRdID0ge307Cj4gPiArICAgIGludCBkc3RfbGluZXNpemVbNF0gPSB7fTsKPiA+ICsgICAg Y29uc3QgdWludDhfdCAqc3JjX2RhdGFbNF0gPSB7Cj4gPiArICAgICAgICAgICAgZnJhbWUtPmRh dGFbMF0sIGZyYW1lLT5kYXRhWzFdLCBmcmFtZS0+ZGF0YVsyXSwKPiBmcmFtZS0+ZGF0YVszXQo+ ID4gKyAgICB9Owo+ID4gKwo+ID4gKyAgICBpZiAoYXZjdHgtPnBpeF9mbXQgPT0gQVZfUElYX0ZN VF9ZVVY0MjBQKSB7Cj4gPiArICAgICAgICBkc3RfZGF0YVswXSA9IGRzdDsKPiA+ICsgICAgICAg IGRzdF9kYXRhWzFdID0gZHN0ICsgcy0+d2lkdGggKiBzLT5oZWlnaHQ7Cj4gPiArICAgICAgICBk c3RfZGF0YVsyXSA9IGRzdF9kYXRhWzFdICsgcy0+d2lkdGggKiBzLT5oZWlnaHQgLyA0Owo+ID4g Kwo+ID4gKyAgICAgICAgZHN0X2xpbmVzaXplWzBdID0gcy0+d2lkdGg7Cj4gPiArICAgICAgICBk c3RfbGluZXNpemVbMV0gPSBkc3RfbGluZXNpemVbMl0gPSBzLT53aWR0aCAvIDI7Cj4gPiArICAg IH0gZWxzZSBpZiAoYXZjdHgtPnBpeF9mbXQgPT0gQVZfUElYX0ZNVF9OVjEyKSB7Cj4gPiArICAg ICAgICBkc3RfZGF0YVswXSA9IGRzdDsKPiA+ICsgICAgICAgIGRzdF9kYXRhWzFdID0gZHN0ICsg cy0+d2lkdGggKiBzLT5oZWlnaHQ7Cj4gPiArCj4gPiArICAgICAgICBkc3RfbGluZXNpemVbMF0g PSBzLT53aWR0aDsKPiA+ICsgICAgICAgIGRzdF9saW5lc2l6ZVsxXSA9IHMtPndpZHRoOwo+ID4g KyAgICB9IGVsc2Ugewo+ID4gKyAgICAgICAgYXZfYXNzZXJ0MCgwKTsKPiA+ICsgICAgfQo+ID4g Kwo+ID4gKyAgICBhdl9pbWFnZV9jb3B5KGRzdF9kYXRhLCBkc3RfbGluZXNpemUsIHNyY19kYXRh LCBmcmFtZS0+bGluZXNpemUsCj4gPiArICAgICAgICAgICAgICAgICAgYXZjdHgtPnBpeF9mbXQs IGF2Y3R4LT53aWR0aCwgYXZjdHgtPmhlaWdodCk7Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyBp bnQgbWVkaWFjb2RlY19zZW5kKEFWQ29kZWNDb250ZXh0ICphdmN0eCwKPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICBjb25zdCBBVkZyYW1lICpmcmFtZSkgewo+ID4gKyAgICBNZWRpYUNv ZGVjRW5jQ29udGV4dCAqcyA9IGF2Y3R4LT5wcml2X2RhdGE7Cj4gPiArICAgIEZGQU1lZGlhQ29k ZWMgKmNvZGVjID0gcy0+Y29kZWM7Cj4gPiArICAgIHNzaXplX3QgaW5kZXg7Cj4gPiArICAgIHVp bnQ4X3QgKmlucHV0X2J1ZiA9IE5VTEw7Cj4gPiArICAgIHNpemVfdCBpbnB1dF9zaXplID0gMDsK PiA+ICsgICAgaW50NjRfdCBwdHMgPSAwOwo+ID4gKyAgICB1aW50MzJfdCBmbGFncyA9IDA7Cj4g PiArICAgIGludDY0X3QgdGltZW91dF91czsKPiA+ICsKPiA+ICsgICAgaWYgKHMtPmVvZl9zZW50 KQo+ID4gKyAgICAgICAgcmV0dXJuIDA7Cj4gPiArCj4gPiArICAgIGlmIChzLT53aW5kb3cpIHsK PiA+ICsgICAgICAgIGlmICghZnJhbWUpIHsKPiA+ICsgICAgICAgICAgICBzLT5lb2Zfc2VudCA9 IDE7Cj4gPiArICAgICAgICAgICAgcmV0dXJuIGZmX0FNZWRpYUNvZGVjX3NpZ25hbEVuZE9mSW5w dXRTdHJlYW0oY29kZWMpOwo+ID4gKyAgICAgICAgfQo+ID4gKwo+ID4gKwo+ID4gKyAgICAgICAg aWYgKGZyYW1lLT5kYXRhWzNdKSB7Cj4gPiArICAgICAgICAgICAgcHRzID0gYXZfcmVzY2FsZV9x KGZyYW1lLT5wdHMsIGF2Y3R4LT50aW1lX2Jhc2UsCj4gQVZfVElNRV9CQVNFX1EpOwo+ID4gKyAg ICAgICAgICAgIHMtPnRpbWVzdGFtcHNbcy0+dHNfaGVhZF0gPSBmcmFtZS0+cHRzOwo+ID4gKyAg ICAgICAgICAgIHMtPnRzX2hlYWQgPSAocy0+dHNfaGVhZCArIDEpICUKPiBGRl9BUlJBWV9FTEVN UyhzLT50aW1lc3RhbXBzKTsKPiA+ICsKPiA+ICsgICAgICAgICAgICBhdl9tZWRpYWNvZGVjX3Jl bGVhc2VfYnVmZmVyKChBVk1lZGlhQ29kZWNCdWZmZXIKPiAqKWZyYW1lLT5kYXRhWzNdLCAxKTsK PiA+ICsgICAgICAgIH0KPiA+ICsgICAgICAgIHJldHVybiAwOwo+ID4gKyAgICB9Cj4gPiArCj4g PiArICAgIHRpbWVvdXRfdXMgPSBJTlBVVF9ERVFVRVVFX1RJTUVPVVRfVVM7Cj4gPiArICAgIGlu ZGV4ID0gZmZfQU1lZGlhQ29kZWNfZGVxdWV1ZUlucHV0QnVmZmVyKGNvZGVjLCB0aW1lb3V0X3Vz KTsKPiA+ICsgICAgaWYgKGZmX0FNZWRpYUNvZGVjX2luZm9UcnlBZ2FpbkxhdGVyKGNvZGVjLCBp bmRleCkpCj4gPiArICAgICAgICByZXR1cm4gQVZFUlJPUihFQUdBSU4pOwo+ID4gKwo+ID4gKyAg ICBpZiAoaW5kZXggPCAwKSB7Cj4gPiArICAgICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19FUlJP UiwgImRlcXVldWUgaW5wdXQgYnVmZmVyIGZhaWxlZCwgJXpkIiwKPiBpbmRleCk7Cj4gPiArICAg ICAgICByZXR1cm4gQVZFUlJPUl9FWFRFUk5BTDsKPiA+ICsgICAgfQo+ID4gKwo+ID4gKyAgICBp ZiAoZnJhbWUpIHsKPiA+ICsgICAgICAgIGlucHV0X2J1ZiA9IGZmX0FNZWRpYUNvZGVjX2dldElu cHV0QnVmZmVyKGNvZGVjLCBpbmRleCwKPiAmaW5wdXRfc2l6ZSk7Cj4gPiArICAgICAgICBjb3B5 X2ZyYW1lX3RvX2J1ZmZlcihhdmN0eCwgZnJhbWUsIGlucHV0X2J1ZiwgaW5wdXRfc2l6ZSk7Cj4g PiArCj4gPiArICAgICAgICBwdHMgPSBhdl9yZXNjYWxlX3EoZnJhbWUtPnB0cywgYXZjdHgtPnRp bWVfYmFzZSwKPiBBVl9USU1FX0JBU0VfUSk7Cj4gPiArCj4gPiArICAgICAgICBzLT50aW1lc3Rh bXBzW3MtPnRzX2hlYWRdID0gZnJhbWUtPnB0czsKPiA+ICsgICAgICAgIHMtPnRzX2hlYWQgPSAo cy0+dHNfaGVhZCArIDEpICUgRkZfQVJSQVlfRUxFTVMocy0+dGltZXN0YW1wcyk7Cj4gPiArICAg IH0gZWxzZSB7Cj4gPiArICAgICAgICBmbGFncyB8PSBmZl9BTWVkaWFDb2RlY19nZXRCdWZmZXJG bGFnRW5kT2ZTdHJlYW0oY29kZWMpOwo+ID4gKyAgICAgICAgcy0+ZW9mX3NlbnQgPSAxOwo+ID4g KyAgICB9Cj4gPiArCj4gPgo+ID4gaXQgd291bGQgYmUgbmljZSB0byBwcm9wYWdhdGUga2V5ZnJh bWVzIGhlcmUgKGZyYW1lLT5waWN0X3R5cGUgPT0KPiBBVl9QSUNUVVJFX1RZUEVfSSkuIGl0IGlz IG9ubHkgcG9zc2libGUgb24gQVBJMjYgd2l0aAo+IEFNZWRpYUNvZGVjX3NldFBhcmFtZXRlcnMg YW5kIFBBUkFNRVRFUl9LRVlfUkVRVUVTVF9TWU5DX0ZSQU1FCj4KPiBJdOKAmXMgYSBuaWNlIGZl YXR1cmUuIEnigJltIHBsYW5uaW5nIHRvIGFkZCBzdXBwb3J0IGFmdGVyIHRoZSBiYXNpYyBmdW5j dGlvbgo+IGlzIHdvcmtpbmcuCj4KPiA+Cj4gPgo+ID4gKyAgICBmZl9BTWVkaWFDb2RlY19xdWV1 ZUlucHV0QnVmZmVyKGNvZGVjLCBpbmRleCwgMCwgaW5wdXRfc2l6ZSwgcHRzLAo+IGZsYWdzKTsK PiA+ICsgICAgcmV0dXJuIDA7Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyBpbnQgbWVkaWFjb2Rl Y19lbmNvZGUoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LCBBVlBhY2tldCAqcGt0KQo+ID4gK3sKPiA+ ICsgICAgTWVkaWFDb2RlY0VuY0NvbnRleHQgKnMgPSBhdmN0eC0+cHJpdl9kYXRhOwo+ID4gKyAg ICBpbnQgcmV0Owo+ID4gKyAgICBpbnQgZ290X3BhY2tldCA9IDA7Cj4gPiArCj4gPiArICAgIC8v IFJldHVybiBvbiB0aHJlZSBjYXNlOgo+ID4gKyAgICAvLyAxLiBTZXJpb3VzIGVycm9yCj4gPiAr ICAgIC8vIDIuIEdvdCBhIHBhY2tldCBzdWNjZXNzCj4gPiArICAgIC8vIDMuIE5vIEFWRnJhbWUg aXMgYXZhaWxhYmxlIHlldCAoZG9uJ3QgcmV0dXJuIGlmIGdldF9mcmFtZSByZXR1cm4KPiBFT0Yp Cj4gPiArICAgIHdoaWxlICgxKSB7Cj4gPiArICAgICAgICByZXQgPSBtZWRpYWNvZGVjX3JlY2Vp dmUoYXZjdHgsIHBrdCwgJmdvdF9wYWNrZXQpOwo+ID4gKyAgICAgICAgaWYgKCFyZXQpCj4gPiAr ICAgICAgICAgICAgcmV0dXJuIDA7Cj4gPiArICAgICAgICBlbHNlIGlmIChyZXQgIT0gQVZFUlJP UihFQUdBSU4pKQo+ID4gKyAgICAgICAgICAgIHJldHVybiByZXQ7Cj4gPiArCj4gPiArICAgICAg ICBpZiAoIXMtPmZyYW1lLT5idWZbMF0pIHsKPiA+ICsgICAgICAgICAgICByZXQgPSBmZl9lbmNv ZGVfZ2V0X2ZyYW1lKGF2Y3R4LCBzLT5mcmFtZSk7Cj4gPiArICAgICAgICAgICAgaWYgKHJldCAm JiByZXQgIT0gQVZFUlJPUl9FT0YpCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4g PiArICAgICAgICB9Cj4gPiArCj4gPiArICAgICAgICByZXQgPSBtZWRpYWNvZGVjX3NlbmQoYXZj dHgsIHMtPmZyYW1lLT5idWZbMF0gPyBzLT5mcmFtZSA6Cj4gTlVMTCk7Cj4gPiArICAgICAgICBp ZiAoIXJldCkKPiA+ICsgICAgICAgICAgICBhdl9mcmFtZV91bnJlZihzLT5mcmFtZSk7Cj4gPiAr ICAgICAgICBlbHNlIGlmIChyZXQgIT0gQVZFUlJPUihFQUdBSU4pKQo+ID4gKyAgICAgICAgICAg IHJldHVybiByZXQ7Cj4gPiArICAgIH0KPiA+ICsKPiA+ICsgICAgcmV0dXJuIDA7Cj4gPiArfQo+ ID4gKwo+ID4gK3N0YXRpYyBhdl9jb2xkIGludCBtZWRpYWNvZGVjX2Nsb3NlKEFWQ29kZWNDb250 ZXh0ICphdmN0eCkKPiA+ICt7Cj4gPiArICAgIE1lZGlhQ29kZWNFbmNDb250ZXh0ICpzID0gYXZj dHgtPnByaXZfZGF0YTsKPiA+ICsgICAgaWYgKHMtPmNvZGVjKSB7Cj4gPiArICAgICAgICBmZl9B TWVkaWFDb2RlY19zdG9wKHMtPmNvZGVjKTsKPiA+ICsgICAgICAgIGZmX0FNZWRpYUNvZGVjX2Rl bGV0ZShzLT5jb2RlYyk7Cj4gPiArICAgICAgICBzLT5jb2RlYyA9IE5VTEw7Cj4gPiArICAgIH0K PiA+ICsKPiA+ICsgICAgaWYgKHMtPndpbmRvdykgewo+ID4gKyAgICAgICAgZmZfbWVkaWFjb2Rl Y19zdXJmYWNlX3VucmVmKHMtPndpbmRvdywgYXZjdHgpOwo+ID4gKyAgICAgICAgcy0+d2luZG93 ID0gTlVMTDsKPiA+ICsgICAgfQo+ID4gKwo+ID4gKyAgICBhdl9mcmFtZV9mcmVlKCZzLT5mcmFt ZSk7Cj4gPiArCj4gPiArICAgIHJldHVybiAwOwo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgY29u c3QgQVZDb2RlY0hXQ29uZmlnSW50ZXJuYWwgKmNvbnN0IG1lZGlhY29kZWNfaHdfY29uZmlnc1td ID0gewo+ID4gKyAgICAmKGNvbnN0IEFWQ29kZWNIV0NvbmZpZ0ludGVybmFsKSB7Cj4gPiArICAg ICAgICAucHVibGljICAgICAgICAgID0gewo+ID4gKyAgICAgICAgICAgIC5waXhfZm10ICAgICA9 IEFWX1BJWF9GTVRfTUVESUFDT0RFQywKPiA+ICsgICAgICAgICAgICAubWV0aG9kcyAgICAgPSBB Vl9DT0RFQ19IV19DT05GSUdfTUVUSE9EX0FEX0hPQyB8Cj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgQVZfQ09ERUNfSFdfQ09ORklHX01FVEhPRF9IV19ERVZJQ0VfQ1RYLAo+ID4gKyAg ICAgICAgICAgIC5kZXZpY2VfdHlwZSA9IEFWX0hXREVWSUNFX1RZUEVfTUVESUFDT0RFQywKPiA+ ICsgICAgICAgIH0sCj4gPiArICAgICAgICAuaHdhY2NlbCAgICAgICAgID0gTlVMTCwKPiA+ICsg ICAgfSwKPiA+ICsgICAgTlVMTAo+ID4gK307Cj4gPiArCj4gPiArI2RlZmluZSBPRkZTRVQoeCkg b2Zmc2V0b2YoTWVkaWFDb2RlY0VuY0NvbnRleHQsIHgpCj4gPiArI2RlZmluZSBWRSBBVl9PUFRf RkxBR19WSURFT19QQVJBTSB8IEFWX09QVF9GTEFHX0VOQ09ESU5HX1BBUkFNCj4gPiArc3RhdGlj IGNvbnN0IEFWT3B0aW9uIGNvbW1vbl9vcHRpb25zW10gPSB7Cj4gPiArICAgIHsgIm5ka19jb2Rl YyIsICJVc2UgTWVkaWFDb2RlYyBmcm9tIE5ESyIsCj4gPiArICAgICAgICAgICAgICAgICAgICBP RkZTRVQodXNlX25ka19jb2RlYyksIEFWX09QVF9UWVBFX0JPT0wsIHsuaTY0ID0KPiAtMX0sIC0x LCAxLCBWRSB9LAo+ID4gKyAgICB7IE5VTEwgfSwKPiA+ICt9Owo+ID4gKwo+ID4gKyNkZWZpbmUg TUVESUFDT0RFQ19FTkNPREVSX0NMQVNTKG5hbWUpICAgICAgICAgICAgICBcCj4gPiArc3RhdGlj IGNvbnN0IEFWQ2xhc3MgbmFtZSAjIyBfbWVkaWFjb2RlY19jbGFzcyA9IHsgIFwKPiA+ICsgICAg LmNsYXNzX25hbWUgPSAjbmFtZSAiX21lZGlhY29kZWMiLCAgICAgICAgICAgICAgXAo+ID4gKyAg ICAuaXRlbV9uYW1lICA9IGF2X2RlZmF1bHRfaXRlbV9uYW1lLCAgICAgICAgICAgICBcCj4gPiAr ICAgIC5vcHRpb24gICAgID0gY29tbW9uX29wdGlvbnMsICAgICAgICAgICAgICAgICAgIFwKPiA+ ICsgICAgLnZlcnNpb24gICAgPSBMSUJBVlVUSUxfVkVSU0lPTl9JTlQsICAgICAgICAgICAgXAo+ ID4gK307ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc Cj4gPiArCj4gPiArI2RlZmluZSBERUNMQVJFX01FRElBQ09ERUNfRU5DT0RFUihzaG9ydF9uYW1l LCBsb25nX25hbWUsIGNvZGVjX2lkKQo+ICBcCj4gPiArTUVESUFDT0RFQ19FTkNPREVSX0NMQVNT KHNob3J0X25hbWUpCj4gXAo+ID4gK2NvbnN0IEZGQ29kZWMgZmZfICMjIHNob3J0X25hbWUgIyMg X21lZGlhY29kZWNfZW5jb2RlciA9IHsKPiBcCj4gPiArICAgIC5wLm5hbWUgICAgICAgICAgID0g I3Nob3J0X25hbWUgIl9tZWRpYWNvZGVjIiwKPiAgIFwKPiA+ICsgICAgQ09ERUNfTE9OR19OQU1F KGxvbmdfbmFtZSAiIEFuZHJvaWQgTWVkaWFDb2RlYyBlbmNvZGVyIiksCj4gIFwKPiA+ICsgICAg LnAudHlwZSAgICAgICAgICAgPSBBVk1FRElBX1RZUEVfVklERU8sCj4gIFwKPiA+ICsgICAgLnAu aWQgICAgICAgICAgICAgPSBjb2RlY19pZCwKPiAgXAo+ID4gKyAgICAucC5jYXBhYmlsaXRpZXMg ICA9IEFWX0NPREVDX0NBUF9EUjEgfCBBVl9DT0RFQ19DQVBfREVMQVkKPiAgXAo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgIHwgQVZfQ09ERUNfQ0FQX0hBUkRXQVJFLAo+IFwKPiA+ICsgICAg LnByaXZfZGF0YV9zaXplICAgPSBzaXplb2YoTWVkaWFDb2RlY0VuY0NvbnRleHQpLAo+ICBcCj4g PiArICAgIC5wLnBpeF9mbXRzICAgICAgID0gYXZjX3BpeF9mbXRzLAo+ICBcCj4gPiArICAgIC5p bml0ICAgICAgICAgICAgID0gbWVkaWFjb2RlY19pbml0LAo+IFwKPiA+ICsgICAgRkZfQ09ERUNf UkVDRUlWRV9QQUNLRVRfQ0IobWVkaWFjb2RlY19lbmNvZGUpLAo+IFwKPiA+ICsgICAgLmNsb3Nl ICAgICAgICAgICAgPSBtZWRpYWNvZGVjX2Nsb3NlLAo+ICBcCj4gPiArICAgIC5wLnByaXZfY2xh c3MgICAgID0gJnNob3J0X25hbWUgIyMgX21lZGlhY29kZWNfY2xhc3MsCj4gIFwKPiA+ICsgICAg LmNhcHNfaW50ZXJuYWwgICAgPSBGRl9DT0RFQ19DQVBfSU5JVF9DTEVBTlVQLAo+IFwKPiA+ICsg ICAgLnAud3JhcHBlcl9uYW1lID0gIm1lZGlhY29kZWMiLAo+ICBcCj4gPiArICAgIC5od19jb25m aWdzICAgICA9IG1lZGlhY29kZWNfaHdfY29uZmlncywKPiBcCj4gPiArfTsKPiBcCj4gPiArCj4g PiArI2lmIENPTkZJR19IMjY0X01FRElBQ09ERUNfRU5DT0RFUgo+ID4gK0RFQ0xBUkVfTUVESUFD T0RFQ19FTkNPREVSKGgyNjQsICJILjI2NCIsIEFWX0NPREVDX0lEX0gyNjQpCj4gPiArI2VuZGlm Cj4gPiArCj4gPiArI2lmIENPTkZJR19IRVZDX01FRElBQ09ERUNfRU5DT0RFUgo+ID4gK0RFQ0xB UkVfTUVESUFDT0RFQ19FTkNPREVSKGhldmMsICJILjI2NSIsIEFWX0NPREVDX0lEX0hFVkMpCj4g PiArI2VuZGlmCj4gPiBkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy92ZXJzaW9uLmggYi9saWJhdmNv ZGVjL3ZlcnNpb24uaAo+ID4gaW5kZXggNDNkMGQ5YTlmYy4uODZhYzBmMzg3MSAxMDA2NDQKPiA+ IC0tLSBhL2xpYmF2Y29kZWMvdmVyc2lvbi5oCj4gPiArKysgYi9saWJhdmNvZGVjL3ZlcnNpb24u aAo+ID4gQEAgLTI5LDggKzI5LDggQEAKPiA+Cj4gPiAgI2luY2x1ZGUgInZlcnNpb25fbWFqb3Iu aCIKPiA+Cj4gPiAtI2RlZmluZSBMSUJBVkNPREVDX1ZFUlNJT05fTUlOT1IgIDUxCj4gPiAtI2Rl ZmluZSBMSUJBVkNPREVDX1ZFUlNJT05fTUlDUk8gMTAxCj4gPiArI2RlZmluZSBMSUJBVkNPREVD X1ZFUlNJT05fTUlOT1IgIDUyCj4gPiArI2RlZmluZSBMSUJBVkNPREVDX1ZFUlNJT05fTUlDUk8g MTAwCj4gPgo+ID4gICNkZWZpbmUgTElCQVZDT0RFQ19WRVJTSU9OX0lOVAo+IEFWX1ZFUlNJT05f SU5UKExJQkFWQ09ERUNfVkVSU0lPTl9NQUpPUiwgXAo+ID4KPiAgTElCQVZDT0RFQ19WRVJTSU9O X01JTk9SLCBcCj4gPiAtLQo+ID4gMi4yNS4xCj4gPgo+Cj4gX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KPiBmZm1wZWctZGV2ZWwgbWFpbGluZyBsaXN0Cj4g ZmZtcGVnLWRldmVsQGZmbXBlZy5vcmcKPiBodHRwczovL2ZmbXBlZy5vcmcvbWFpbG1hbi9saXN0 aW5mby9mZm1wZWctZGV2ZWwKPgo+IFRvIHVuc3Vic2NyaWJlLCB2aXNpdCBsaW5rIGFib3ZlLCBv ciBlbWFpbAo+IGZmbXBlZy1kZXZlbC1yZXF1ZXN0QGZmbXBlZy5vcmcgd2l0aCBzdWJqZWN0ICJ1 bnN1YnNjcmliZSIuCj4KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KZmZtcGVnLWRldmVsIG1haWxpbmcgbGlzdApmZm1wZWctZGV2ZWxAZmZtcGVnLm9yZwpo dHRwczovL2ZmbXBlZy5vcmcvbWFpbG1hbi9saXN0aW5mby9mZm1wZWctZGV2ZWwKClRvIHVuc3Vi c2NyaWJlLCB2aXNpdCBsaW5rIGFib3ZlLCBvciBlbWFpbApmZm1wZWctZGV2ZWwtcmVxdWVzdEBm Zm1wZWcub3JnIHdpdGggc3ViamVjdCAidW5zdWJzY3JpYmUiLgo=