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 84B8748A6A for ; Mon, 27 May 2024 17:13:16 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id E0EC268D4BE; Mon, 27 May 2024 20:13:13 +0300 (EEST) Received: from mail-vs1-f51.google.com (mail-vs1-f51.google.com [209.85.217.51]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 9AD3A68C8F2 for ; Mon, 27 May 2024 20:13:07 +0300 (EEST) Received: by mail-vs1-f51.google.com with SMTP id ada2fe7eead31-48a39b54e22so877970137.3 for ; Mon, 27 May 2024 10:13:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sandflow-com.20230601.gappssmtp.com; s=20230601; t=1716829986; x=1717434786; darn=ffmpeg.org; h=content-transfer-encoding:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=0zMBSPmgTF7lahwK87KmGcWjYNujcmYQeyAxOdcvCDw=; b=RirwJwTzIETwPy4Xc6dpwVZM5CA9JwgT1k7Ol200T+4MatuYIa1kYffqeO4H7Yaw2y A3l26tRW4F6Fbv68p0a8Y62VbKZwrAX4yQ9XGi4kCxI8ewmztvNt9NyPhv4+Vu871mmq /zhy/vLZkTSQ3nXOB82CsRI9TtBjXL6ahJtEcfz2GUaCX3tt8Plypwr/MA2+nFifagzg Wh6XVkCC4eZg5QvXYrQzfLBaFV1j4lajkd52hFf62S2BP7Kva+TWmPOV3U49XqhWb438 sAx8rhjPMYDCZI6hN6C2wxVgg6VE18Yy3FB8HjCHcgNAJBW82cE7wCz8xu+mF0Ki1QHK mseA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1716829986; x=1717434786; h=content-transfer-encoding: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=0zMBSPmgTF7lahwK87KmGcWjYNujcmYQeyAxOdcvCDw=; b=btHK/jCqy9DjKpGURkN+F4B93PFFmUwGiIY8L0OHkhwvcXgg+Cm7pRZkU/CWyQhzcr tBdTBuYjCa1LgkdIt/G3w5Y1RxvmQ9bBaoQdtBHmZYXDsCY4LPF2yFnWvYgKVMyfMVvj zT+HRqIqKa6QWu99ckMIkqEMlGYsh/+DVMi5pBHlWLM51Vd02b/KCTkZWgmXNYTJPXRh AbuwAbbxmJlGKmHIDC5vjuenh2tF5rbYTw8vJguMSXMoIZ9y3CS3tvjpbYVuh2B24+j+ obXhvHKTm+wNlOeipnCzNlc+unQGIhgCZAVGxm9Dr/dWMg80dageGrT87uUKquw93De0 1UZw== X-Gm-Message-State: AOJu0YyWTJnk0jqEUJ65g64XS11GywXO18jgXuuq/8NNFj3q4Wyjc9sk W1sP0rrYbjuhnSpZCq+8w789la3ciVwQIEa+iEdcAh41NWQiJYQy0w5RZAM10SIocB9IfSr/JKu p X-Google-Smtp-Source: AGHT+IENSGuQI8V30BarkS2fSsmWyWTEQBu2AUyWies8RmF5dOeQeO/iv8ebLxu315pgyW9myUNPGQ== X-Received: by 2002:a67:ed42:0:b0:48a:370c:deb6 with SMTP id ada2fe7eead31-48a385138b3mr8821134137.6.1716829984771; Mon, 27 May 2024 10:13:04 -0700 (PDT) Received: from mail-ua1-f42.google.com (mail-ua1-f42.google.com. [209.85.222.42]) by smtp.gmail.com with ESMTPSA id a1e0cc1a2514c-804cc11d124sm1183889241.32.2024.05.27.10.13.04 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 27 May 2024 10:13:04 -0700 (PDT) Received: by mail-ua1-f42.google.com with SMTP id a1e0cc1a2514c-804e8616951so236241.3 for ; Mon, 27 May 2024 10:13:04 -0700 (PDT) X-Received: by 2002:a05:6102:2242:b0:48a:4f2c:cc94 with SMTP id ada2fe7eead31-48a4f2ccd3cmr4652122137.20.1716829983239; Mon, 27 May 2024 10:13:03 -0700 (PDT) MIME-Version: 1.0 References: <20240527162450.27756-1-pal@sandflow.com> In-Reply-To: <20240527162450.27756-1-pal@sandflow.com> From: Pierre-Anthony Lemieux Date: Mon, 27 May 2024 10:12:53 -0700 X-Gmail-Original-Message-ID: Message-ID: To: ffmpeg-devel@ffmpeg.org Subject: Re: [FFmpeg-devel] [PATCH v3] avcodec/jpeg2000dec: fix HT block decoder 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: V2lsbCBhcHBseSBvbiA1LzMwIHVubGVzcyBJIGhlYXIgb3RoZXJ3aXNlLgoKT24gTW9uLCBNYXkg MjcsIDIwMjQgYXQgOToyNeKAr0FNIDxwYWxAc2FuZGZsb3cuY29tPiB3cm90ZToKPgo+IEZyb206 IFBpZXJyZS1BbnRob255IExlbWlldXggPHBhbEBwYWxlbWlldXguY29tPgo+Cj4gQWRkcmVzc2Vz IGh0dHBzOi8vdHJhYy5mZm1wZWcub3JnL3RpY2tldC8xMDkwNQo+Cj4gQ28tYXV0aG9yZWQtYnk6 IE9zYW11IFdhdGFuYWJlIDxvd2F0YW5hYkBlcy50YWt1c2hva3UtdS5hYy5qcD4KPiBTaWduZWQt b2ZmLWJ5OiBQaWVycmUtQW50aG9ueSBMZW1pZXV4IDxwYWxAc2FuZGZsb3cuY29tPgo+IC0tLQo+ ICBsaWJhdmNvZGVjL2pwZWcyMDAwaHRkZWMuYyAgICAgICAgICAgICAgIHwgMTIyICsrKysrKysr KysrKy0tLS0tLS0tLS0tCj4gIHRlc3RzL3JlZi9mYXRlL2pwZWcyMDAwZGVjLWRzMF9odF8wMV9i MTEgfCAgIDIgKy0KPiAgMiBmaWxlcyBjaGFuZ2VkLCA2MyBpbnNlcnRpb25zKCspLCA2MSBkZWxl dGlvbnMoLSkKPgo+IGRpZmYgLS1naXQgYS9saWJhdmNvZGVjL2pwZWcyMDAwaHRkZWMuYyBiL2xp YmF2Y29kZWMvanBlZzIwMDBodGRlYy5jCj4gaW5kZXggZmE3MDRiNjY1ZS4uZWJhMDkzNjA4OSAx MDA2NDQKPiAtLS0gYS9saWJhdmNvZGVjL2pwZWcyMDAwaHRkZWMuYwo+ICsrKyBiL2xpYmF2Y29k ZWMvanBlZzIwMDBodGRlYy5jCj4gQEAgLTE5Niw3ICsxOTYsNyBAQCBzdGF0aWMgdm9pZCBqcGVn MjAwMF9iaXRidWZfcmVmaWxsX2ZvcndhcmQoU3RhdGVWYXJzICpidWZmZXIsIGNvbnN0IHVpbnQ4 X3QgKmFycgo+ICAgICAgd2hpbGUgKGJ1ZmZlci0+Yml0c19sZWZ0IDwgMzIpIHsKPiAgICAgICAg ICBidWZmZXItPnRtcCA9IDB4RkY7Cj4gICAgICAgICAgYnVmZmVyLT5iaXRzID0gKGJ1ZmZlci0+ bGFzdCA9PSAweEZGKSA/IDcgOiA4Owo+IC0gICAgICAgIGlmIChidWZmZXItPnBvcyA8PSBsZW5n dGgpIHsKPiArICAgICAgICBpZiAoYnVmZmVyLT5wb3MgPCBsZW5ndGgpIHsKPiAgICAgICAgICAg ICAgYnVmZmVyLT50bXAgPSBhcnJheVtidWZmZXItPnBvc107Cj4gICAgICAgICAgICAgIGJ1ZmZl ci0+cG9zICs9IDE7Cj4gICAgICAgICAgICAgIGJ1ZmZlci0+bGFzdCA9IGJ1ZmZlci0+dG1wOwo+ IEBAIC00MTMsNyArNDEzLDcgQEAgc3RhdGljIHZvaWQgcmVjb3Zlcl9tYWdfc2duKFN0YXRlVmFy cyAqbWFnX3NnbiwgdWludDhfdCBwb3MsIHVpbnQxNl90IHEsIGludDMyX3QKPgo+ICBzdGF0aWMg aW50IGpwZWcyMDAwX2ltcG9ydF9iaXQoU3RhdGVWYXJzICpzdHJlYW0sIGNvbnN0IHVpbnQ4X3Qg KmFycmF5LCB1aW50MzJfdCBsZW5ndGgpCj4gIHsKPiAtICAgIGludCBjb25kID0gc3RyZWFtLT5w b3MgPD0gbGVuZ3RoOwo+ICsgICAgaW50IGNvbmQgPSBzdHJlYW0tPnBvcyA8IGxlbmd0aDsKPiAg ICAgIGludCBwb3MgPSBGRk1JTihzdHJlYW0tPnBvcywgbGVuZ3RoKTsKPiAgICAgIGlmIChzdHJl YW0tPmJpdHMgPT0gMCkgewo+ICAgICAgICAgIHN0cmVhbS0+Yml0cyA9IChzdHJlYW0tPnRtcCA9 PSAweEZGKSA/IDcgOiA4Owo+IEBAIC00MjcsNyArNDI3LDcgQEAgc3RhdGljIGludCBqcGVnMjAw MF9pbXBvcnRfYml0KFN0YXRlVmFycyAqc3RyZWFtLCBjb25zdCB1aW50OF90ICphcnJheSwgdWlu dDMyX3QKPiAgc3RhdGljIGludCBqcGVnMjAwMF9wZWVrX2JpdChTdGF0ZVZhcnMgKnN0cmVhbSwg Y29uc3QgdWludDhfdCAqYXJyYXksIHVpbnQzMl90IGxlbmd0aCkKPiAgewo+ICAgICAgaWYgKHN0 cmVhbS0+Yml0cyA9PSAwKSB7Cj4gLSAgICAgICAgaW50IGNvbmQgPSBzdHJlYW0tPnBvcyA8PSBs ZW5ndGg7Cj4gKyAgICAgICAgaW50IGNvbmQgPSBzdHJlYW0tPnBvcyA8IGxlbmd0aDsKPiAgICAg ICAgICBpbnQgcG9zID0gRkZNSU4oc3RyZWFtLT5wb3MsIGxlbmd0aCk7Cj4gICAgICAgICAgc3Ry ZWFtLT5iaXRzID0gKHN0cmVhbS0+dG1wID09IDB4RkYpID8gNyA6IDg7Cj4gICAgICAgICAgc3Ry ZWFtLT5wb3MgKz0gY29uZDsKPiBAQCAtNTA4LDE3ICs1MDgsMTcgQEAgc3RhdGljIGludCBqcGVn MjAwMF9kZWNvZGVfc2lnX2VtYihjb25zdCBKcGVnMjAwMERlY29kZXJDb250ZXh0ICpzLCBNZWxE ZWNvZGVyU3QKPiAgfQo+Cj4gIGF2X2Fsd2F5c19pbmxpbmUKPiAtc3RhdGljIGludCBqcGVnMjAw MF9nZXRfc3RhdGUoaW50IHgxLCBpbnQgeDIsIGludCB3aWR0aCwgaW50IHNoaWZ0X2J5LAo+ICtz dGF0aWMgaW50IGpwZWcyMDAwX2dldF9zdGF0ZShpbnQgeDEsIGludCB4MiwgaW50IHN0cmlkZSwg aW50IHNoaWZ0X2J5LAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50 OF90ICpibG9ja19zdGF0ZXMpCj4gIHsKPiAtICAgIHJldHVybiAoYmxvY2tfc3RhdGVzWyh4MSAr IDEpICogKHdpZHRoICsgMikgKyAoeDIgKyAxKV0gPj4gc2hpZnRfYnkpICYgMTsKPiArICAgIHJl dHVybiAoYmxvY2tfc3RhdGVzWyh4MSArIDEpICogc3RyaWRlICsgKHgyICsgMSldID4+IHNoaWZ0 X2J5KSAmIDE7Cj4gIH0KPgo+ICBhdl9hbHdheXNfaW5saW5lCj4gLXN0YXRpYyB2b2lkIGpwZWcy MDAwX21vZGlmeV9zdGF0ZShpbnQgeDEsIGludCB4MiwgaW50IHdpZHRoLAo+IC0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBpbnQgdmFsdWUsIHVpbnQ4X3QgKmJsb2NrX3N0YXRlcykK PiArc3RhdGljIHZvaWQganBlZzIwMDBfbW9kaWZ5X3N0YXRlKGludCB4MSwgaW50IHgyLCBpbnQg c3RyaWRlLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHZhbHVlLCB1 aW50OF90ICpibG9ja19zdGF0ZXMpCj4gIHsKPiAtICAgIGJsb2NrX3N0YXRlc1soeDEgKyAxKSAq ICh3aWR0aCArIDIpICsgKHgyICsgMSldIHw9IHZhbHVlOwo+ICsgICAgYmxvY2tfc3RhdGVzWyh4 MSArIDEpICogc3RyaWRlICsgKHgyICsgMSldIHw9IHZhbHVlOwo+ICB9Cj4KPiAgYXZfYWx3YXlz X2lubGluZQo+IEBAIC01MjgsOCArNTI4LDggQEAgc3RhdGljIGludCBqcGVnMjAwMF9kZWNvZGVf aHRfY2xlYW51cF9zZWdtZW50KGNvbnN0IEpwZWcyMDAwRGVjb2RlckNvbnRleHQgKnMsCj4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0ZVZhcnMgKm1l bF9zdHJlYW0sIFN0YXRlVmFycyAqdmxjX3N0cmVhbSwKPiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFN0YXRlVmFycyAqbWFnX3Nnbl9zdHJlYW0sIGNvbnN0 IHVpbnQ4X3QgKkRjdXAsCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB1aW50MzJfdCBMY3VwLCB1aW50MzJfdCBQY3VwLCB1aW50OF90IHBMU0IsCj4gLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgd2lkdGgsIGlu dCBoZWlnaHQsIGludDMyX3QgKnNhbXBsZV9idWYsCj4gLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpibG9ja19zdGF0ZXMpCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgd2lkdGgsIGludCBoZWln aHQsIGNvbnN0IGludCBzdHJpZGUsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBpbnQzMl90ICpzYW1wbGVfYnVmLCB1aW50OF90ICpibG9ja19zdGF0ZXMp Cj4gIHsKPiAgICAgIHVpbnQxNl90IHEgICAgICAgICAgICAgICAgICAgICAgPSAwOyAgICAgLy8g UmVwcmVzZW50cyBjdXJyZW50IHF1YWQgcG9zaXRpb24KPiAgICAgIHVpbnQxNl90IHExLCBxMjsK PiBAQCAtOTU4LDI2ICs5NTgsMjYgQEAgc3RhdGljIGludCBqcGVnMjAwMF9kZWNvZGVfaHRfY2xl YW51cF9zZWdtZW50KGNvbnN0IEpwZWcyMDAwRGVjb2RlckNvbnRleHQgKnMsCj4gICAgICAgICAg ICAgIGoxID0gMiAqIHk7Cj4gICAgICAgICAgICAgIGoyID0gMiAqIHg7Cj4KPiAtICAgICAgICAg ICAgc2FtcGxlX2J1ZltqMiArIChqMSAqIHdpZHRoKV0gPSAoaW50MzJfdCkqbXU7Cj4gLSAgICAg ICAgICAgIGpwZWcyMDAwX21vZGlmeV9zdGF0ZShqMSwgajIsIHdpZHRoLCAqc2lnbWEsIGJsb2Nr X3N0YXRlcyk7Cj4gKyAgICAgICAgICAgIHNhbXBsZV9idWZbajIgKyAoajEgKiBzdHJpZGUpXSA9 IChpbnQzMl90KSptdTsKPiArICAgICAgICAgICAganBlZzIwMDBfbW9kaWZ5X3N0YXRlKGoxLCBq Miwgc3RyaWRlLCAqc2lnbWEsIGJsb2NrX3N0YXRlcyk7Cj4gICAgICAgICAgICAgIHNpZ21hICs9 IDE7Cj4gICAgICAgICAgICAgIG11ICs9IDE7Cj4KPiAgICAgICAgICAgICAgeDEgPSB5ICE9IHF1 YWRfaGVpZ2h0IC0gMSB8fCBpc19ib3JkZXJfeSA9PSAwOwo+IC0gICAgICAgICAgICBzYW1wbGVf YnVmW2oyICsgKChqMSArIDEpICogd2lkdGgpXSA9ICgoaW50MzJfdCkqbXUpICogeDE7Cj4gLSAg ICAgICAgICAgIGpwZWcyMDAwX21vZGlmeV9zdGF0ZShqMSArIDEsIGoyLCB3aWR0aCwgKCpzaWdt YSkgKiB4MSwgYmxvY2tfc3RhdGVzKTsKPiArICAgICAgICAgICAgc2FtcGxlX2J1ZltqMiArICgo ajEgKyAxKSAqIHN0cmlkZSldID0gKChpbnQzMl90KSptdSkgKiB4MTsKPiArICAgICAgICAgICAg anBlZzIwMDBfbW9kaWZ5X3N0YXRlKGoxICsgMSwgajIsIHN0cmlkZSwgKCpzaWdtYSkgKiB4MSwg YmxvY2tfc3RhdGVzKTsKPiAgICAgICAgICAgICAgc2lnbWEgKz0gMTsKPiAgICAgICAgICAgICAg bXUgKz0gMTsKPgo+ICAgICAgICAgICAgICB4MiA9IHggIT0gcXVhZF93aWR0aCAtIDEgfHwgaXNf Ym9yZGVyX3ggPT0gMDsKPiAtICAgICAgICAgICAgc2FtcGxlX2J1ZlsoajIgKyAxKSArIChqMSAq IHdpZHRoKV0gPSAoKGludDMyX3QpKm11KSAqIHgyOwo+IC0gICAgICAgICAgICBqcGVnMjAwMF9t b2RpZnlfc3RhdGUoajEsIGoyICsgMSwgd2lkdGgsICgqc2lnbWEpICogeDIsIGJsb2NrX3N0YXRl cyk7Cj4gKyAgICAgICAgICAgIHNhbXBsZV9idWZbKGoyICsgMSkgKyAoajEgKiBzdHJpZGUpXSA9 ICgoaW50MzJfdCkqbXUpICogeDI7Cj4gKyAgICAgICAgICAgIGpwZWcyMDAwX21vZGlmeV9zdGF0 ZShqMSwgajIgKyAxLCBzdHJpZGUsICgqc2lnbWEpICogeDIsIGJsb2NrX3N0YXRlcyk7Cj4gICAg ICAgICAgICAgIHNpZ21hICs9IDE7Cj4gICAgICAgICAgICAgIG11ICs9IDE7Cj4KPiAgICAgICAg ICAgICAgeDMgPSB4MSB8IHgyOwo+IC0gICAgICAgICAgICBzYW1wbGVfYnVmWyhqMiArIDEpICsg KGoxICsgMSkgKiB3aWR0aF0gPSAoKGludDMyX3QpKm11KSAqIHgzOwo+IC0gICAgICAgICAgICBq cGVnMjAwMF9tb2RpZnlfc3RhdGUoajEgKyAxLCBqMiArIDEsIHdpZHRoLCAoKnNpZ21hKSAqIHgz LCBibG9ja19zdGF0ZXMpOwo+ICsgICAgICAgICAgICBzYW1wbGVfYnVmWyhqMiArIDEpICsgKGox ICsgMSkgKiBzdHJpZGVdID0gKChpbnQzMl90KSptdSkgKiB4MzsKPiArICAgICAgICAgICAganBl ZzIwMDBfbW9kaWZ5X3N0YXRlKGoxICsgMSwgajIgKyAxLCBzdHJpZGUsICgqc2lnbWEpICogeDMs IGJsb2NrX3N0YXRlcyk7Cj4gICAgICAgICAgICAgIHNpZ21hICs9IDE7Cj4gICAgICAgICAgICAg IG11ICs9IDE7Cj4gICAgICAgICAgfQo+IEBAIC05OTIsMzkgKzk5MiwzOSBAQCBmcmVlOgo+Cj4g IHN0YXRpYyB2b2lkIGpwZWcyMDAwX2NhbGNfbWJyKHVpbnQ4X3QgKm1iciwgY29uc3QgdWludDE2 X3QgaSwgY29uc3QgdWludDE2X3QgaiwKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y29uc3QgdWludDMyX3QgbWJyX2luZm8sIHVpbnQ4X3QgY2F1c2FsX2NvbmQsCj4gLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKmJsb2NrX3N0YXRlcywgaW50IHdpZHRoKQo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpibG9ja19zdGF0ZXMsIGlu dCBzdHJpZGUpCj4gIHsKPiAgICAgIGludCBsb2NhbF9tYnIgPSAwOwo+Cj4gLSAgICBsb2NhbF9t YnIgfD0ganBlZzIwMDBfZ2V0X3N0YXRlKGkgLSAxLCBqIC0gMSwgd2lkdGgsIEhUX1NISUZUX1NJ R01BLCBibG9ja19zdGF0ZXMpOwo+IC0gICAgbG9jYWxfbWJyIHw9IGpwZWcyMDAwX2dldF9zdGF0 ZShpIC0gMSwgaiArIDAsIHdpZHRoLCBIVF9TSElGVF9TSUdNQSwgYmxvY2tfc3RhdGVzKTsKPiAt ICAgIGxvY2FsX21iciB8PSBqcGVnMjAwMF9nZXRfc3RhdGUoaSAtIDEsIGogKyAxLCB3aWR0aCwg SFRfU0hJRlRfU0lHTUEsIGJsb2NrX3N0YXRlcyk7Cj4gKyAgICBsb2NhbF9tYnIgfD0ganBlZzIw MDBfZ2V0X3N0YXRlKGkgLSAxLCBqIC0gMSwgc3RyaWRlLCBIVF9TSElGVF9TSUdNQSwgYmxvY2tf c3RhdGVzKTsKPiArICAgIGxvY2FsX21iciB8PSBqcGVnMjAwMF9nZXRfc3RhdGUoaSAtIDEsIGog KyAwLCBzdHJpZGUsIEhUX1NISUZUX1NJR01BLCBibG9ja19zdGF0ZXMpOwo+ICsgICAgbG9jYWxf bWJyIHw9IGpwZWcyMDAwX2dldF9zdGF0ZShpIC0gMSwgaiArIDEsIHN0cmlkZSwgSFRfU0hJRlRf U0lHTUEsIGJsb2NrX3N0YXRlcyk7Cj4KPiAtICAgIGxvY2FsX21iciB8PSBqcGVnMjAwMF9nZXRf c3RhdGUoaSArIDAsIGogLSAxLCB3aWR0aCwgSFRfU0hJRlRfU0lHTUEsIGJsb2NrX3N0YXRlcyk7 Cj4gLSAgICBsb2NhbF9tYnIgfD0ganBlZzIwMDBfZ2V0X3N0YXRlKGkgKyAwLCBqICsgMSwgd2lk dGgsIEhUX1NISUZUX1NJR01BLCBibG9ja19zdGF0ZXMpOwo+ICsgICAgbG9jYWxfbWJyIHw9IGpw ZWcyMDAwX2dldF9zdGF0ZShpICsgMCwgaiAtIDEsIHN0cmlkZSwgSFRfU0hJRlRfU0lHTUEsIGJs b2NrX3N0YXRlcyk7Cj4gKyAgICBsb2NhbF9tYnIgfD0ganBlZzIwMDBfZ2V0X3N0YXRlKGkgKyAw LCBqICsgMSwgc3RyaWRlLCBIVF9TSElGVF9TSUdNQSwgYmxvY2tfc3RhdGVzKTsKPgo+IC0gICAg bG9jYWxfbWJyIHw9IGpwZWcyMDAwX2dldF9zdGF0ZShpICsgMSwgaiAtIDEsIHdpZHRoLCBIVF9T SElGVF9TSUdNQSwgYmxvY2tfc3RhdGVzKSAqIGNhdXNhbF9jb25kOwo+IC0gICAgbG9jYWxfbWJy IHw9IGpwZWcyMDAwX2dldF9zdGF0ZShpICsgMSwgaiArIDAsIHdpZHRoLCBIVF9TSElGVF9TSUdN QSwgYmxvY2tfc3RhdGVzKSAqIGNhdXNhbF9jb25kOwo+IC0gICAgbG9jYWxfbWJyIHw9IGpwZWcy MDAwX2dldF9zdGF0ZShpICsgMSwgaiArIDEsIHdpZHRoLCBIVF9TSElGVF9TSUdNQSwgYmxvY2tf c3RhdGVzKSAqIGNhdXNhbF9jb25kOwo+ICsgICAgbG9jYWxfbWJyIHw9IGpwZWcyMDAwX2dldF9z dGF0ZShpICsgMSwgaiAtIDEsIHN0cmlkZSwgSFRfU0hJRlRfU0lHTUEsIGJsb2NrX3N0YXRlcykg KiBjYXVzYWxfY29uZDsKPiArICAgIGxvY2FsX21iciB8PSBqcGVnMjAwMF9nZXRfc3RhdGUoaSAr IDEsIGogKyAwLCBzdHJpZGUsIEhUX1NISUZUX1NJR01BLCBibG9ja19zdGF0ZXMpICogY2F1c2Fs X2NvbmQ7Cj4gKyAgICBsb2NhbF9tYnIgfD0ganBlZzIwMDBfZ2V0X3N0YXRlKGkgKyAxLCBqICsg MSwgc3RyaWRlLCBIVF9TSElGVF9TSUdNQSwgYmxvY2tfc3RhdGVzKSAqIGNhdXNhbF9jb25kOwo+ Cj4gLSAgICBsb2NhbF9tYnIgfD0ganBlZzIwMDBfZ2V0X3N0YXRlKGkgLSAxLCBqIC0gMSwgd2lk dGgsIEhUX1NISUZUX1JFRiwgICBibG9ja19zdGF0ZXMpICoKPiAtICAgICAgICAgICAgICAgICBq cGVnMjAwMF9nZXRfc3RhdGUoaSAtIDEsIGogLSAxLCB3aWR0aCwgSFRfU0hJRlRfU0NBTiwgIGJs b2NrX3N0YXRlcyk7Cj4gLSAgICBsb2NhbF9tYnIgfD0ganBlZzIwMDBfZ2V0X3N0YXRlKGkgLSAx LCBqICsgMCwgd2lkdGgsIEhUX1NISUZUX1JFRiwgICBibG9ja19zdGF0ZXMpICoKPiAtICAgICAg ICAgICAgICAgICBqcGVnMjAwMF9nZXRfc3RhdGUoaSAtIDEsIGogLSAxLCB3aWR0aCwgSFRfU0hJ RlRfU0NBTiwgIGJsb2NrX3N0YXRlcyk7Cj4gLSAgICBsb2NhbF9tYnIgfD0ganBlZzIwMDBfZ2V0 X3N0YXRlKGkgLSAxLCBqICsgMSwgd2lkdGgsIEhUX1NISUZUX1JFRiwgICBibG9ja19zdGF0ZXMp ICoKPiAtICAgICAgICAgICAgICAgICBqcGVnMjAwMF9nZXRfc3RhdGUoaSAtIDEsIGogKyAxLCB3 aWR0aCwgSFRfU0hJRlRfU0NBTiwgIGJsb2NrX3N0YXRlcyk7Cj4gKyAgICBsb2NhbF9tYnIgfD0g anBlZzIwMDBfZ2V0X3N0YXRlKGkgLSAxLCBqIC0gMSwgc3RyaWRlLCBIVF9TSElGVF9SRUYsIGJs b2NrX3N0YXRlcykgKgo+ICsgICAgICAgICAgICAgICAgIGpwZWcyMDAwX2dldF9zdGF0ZShpIC0g MSwgaiAtIDEsIHN0cmlkZSwgSFRfU0hJRlRfU0NBTiwgYmxvY2tfc3RhdGVzKTsKPiArICAgIGxv Y2FsX21iciB8PSBqcGVnMjAwMF9nZXRfc3RhdGUoaSAtIDEsIGogKyAwLCBzdHJpZGUsIEhUX1NI SUZUX1JFRiwgYmxvY2tfc3RhdGVzKSAqCj4gKyAgICAgICAgICAgICAgICAganBlZzIwMDBfZ2V0 X3N0YXRlKGkgLSAxLCBqIC0gMSwgc3RyaWRlLCBIVF9TSElGVF9TQ0FOLCBibG9ja19zdGF0ZXMp Owo+ICsgICAgbG9jYWxfbWJyIHw9IGpwZWcyMDAwX2dldF9zdGF0ZShpIC0gMSwgaiArIDEsIHN0 cmlkZSwgSFRfU0hJRlRfUkVGLCBibG9ja19zdGF0ZXMpICoKPiArICAgICAgICAgICAgICAgICBq cGVnMjAwMF9nZXRfc3RhdGUoaSAtIDEsIGogKyAxLCBzdHJpZGUsIEhUX1NISUZUX1NDQU4sIGJs b2NrX3N0YXRlcyk7Cj4KPiAtICAgIGxvY2FsX21iciB8PSBqcGVnMjAwMF9nZXRfc3RhdGUoaSAr IDAsIGogLSAxLCB3aWR0aCwgSFRfU0hJRlRfUkVGLCAgIGJsb2NrX3N0YXRlcykgKgo+IC0gICAg ICAgICAgICAgICAgIGpwZWcyMDAwX2dldF9zdGF0ZShpICsgMCwgaiAtIDEsIHdpZHRoLCBIVF9T SElGVF9TQ0FOLCAgYmxvY2tfc3RhdGVzKTsKPiAtICAgIGxvY2FsX21iciB8PSBqcGVnMjAwMF9n ZXRfc3RhdGUoaSArIDAsIGogKyAxLCB3aWR0aCwgSFRfU0hJRlRfUkVGLCAgIGJsb2NrX3N0YXRl cykgKgo+IC0gICAgICAgICAgICAgICAgIGpwZWcyMDAwX2dldF9zdGF0ZShpICsgMCwgaiArIDEs IHdpZHRoLCBIVF9TSElGVF9TQ0FOLCAgYmxvY2tfc3RhdGVzKTsKPiArICAgIGxvY2FsX21iciB8 PSBqcGVnMjAwMF9nZXRfc3RhdGUoaSArIDAsIGogLSAxLCBzdHJpZGUsIEhUX1NISUZUX1JFRiwg YmxvY2tfc3RhdGVzKSAqCj4gKyAgICAgICAgICAgICAgICAganBlZzIwMDBfZ2V0X3N0YXRlKGkg KyAwLCBqIC0gMSwgc3RyaWRlLCBIVF9TSElGVF9TQ0FOLCBibG9ja19zdGF0ZXMpOwo+ICsgICAg bG9jYWxfbWJyIHw9IGpwZWcyMDAwX2dldF9zdGF0ZShpICsgMCwgaiArIDEsIHN0cmlkZSwgSFRf U0hJRlRfUkVGLCBibG9ja19zdGF0ZXMpICoKPiArICAgICAgICAgICAgICAgICBqcGVnMjAwMF9n ZXRfc3RhdGUoaSArIDAsIGogKyAxLCBzdHJpZGUsIEhUX1NISUZUX1NDQU4sIGJsb2NrX3N0YXRl cyk7Cj4KPiAtICAgIGxvY2FsX21iciB8PSBqcGVnMjAwMF9nZXRfc3RhdGUoaSArIDEsIGogLSAx LCB3aWR0aCwgSFRfU0hJRlRfUkVGLCAgYmxvY2tfc3RhdGVzKSAqCj4gLSAgICAgICAgICAgICAg ICAganBlZzIwMDBfZ2V0X3N0YXRlKGkgKyAxLCBqIC0gMSwgd2lkdGgsIEhUX1NISUZUX1NDQU4s IGJsb2NrX3N0YXRlcykgKiBjYXVzYWxfY29uZDsKPiAtICAgIGxvY2FsX21iciB8PSBqcGVnMjAw MF9nZXRfc3RhdGUoaSArIDEsIGogKyAwLCB3aWR0aCwgSFRfU0hJRlRfUkVGLCAgYmxvY2tfc3Rh dGVzKSAqCj4gLSAgICAgICAgICAgICAgICAganBlZzIwMDBfZ2V0X3N0YXRlKGkgKyAxLCBqICsg MCwgd2lkdGgsIEhUX1NISUZUX1NDQU4sIGJsb2NrX3N0YXRlcykgKiBjYXVzYWxfY29uZDsKPiAt ICAgIGxvY2FsX21iciB8PSBqcGVnMjAwMF9nZXRfc3RhdGUoaSArIDEsIGogKyAxLCB3aWR0aCwg SFRfU0hJRlRfUkVGLCAgYmxvY2tfc3RhdGVzKSAqCj4gLSAgICAgICAgICAgICAgICAganBlZzIw MDBfZ2V0X3N0YXRlKGkgKyAxLCBqICsgMSwgd2lkdGgsIEhUX1NISUZUX1NDQU4sIGJsb2NrX3N0 YXRlcykgKiBjYXVzYWxfY29uZDsKPiArICAgIGxvY2FsX21iciB8PSBqcGVnMjAwMF9nZXRfc3Rh dGUoaSArIDEsIGogLSAxLCBzdHJpZGUsIEhUX1NISUZUX1JFRiwgYmxvY2tfc3RhdGVzKSAqCj4g KyAgICAgICAgICAgICAgICAganBlZzIwMDBfZ2V0X3N0YXRlKGkgKyAxLCBqIC0gMSwgc3RyaWRl LCBIVF9TSElGVF9TQ0FOLCBibG9ja19zdGF0ZXMpICogY2F1c2FsX2NvbmQ7Cj4gKyAgICBsb2Nh bF9tYnIgfD0ganBlZzIwMDBfZ2V0X3N0YXRlKGkgKyAxLCBqICsgMCwgc3RyaWRlLCBIVF9TSElG VF9SRUYsIGJsb2NrX3N0YXRlcykgKgo+ICsgICAgICAgICAgICAgICAgIGpwZWcyMDAwX2dldF9z dGF0ZShpICsgMSwgaiArIDAsIHN0cmlkZSwgSFRfU0hJRlRfU0NBTiwgYmxvY2tfc3RhdGVzKSAq IGNhdXNhbF9jb25kOwo+ICsgICAgbG9jYWxfbWJyIHw9IGpwZWcyMDAwX2dldF9zdGF0ZShpICsg MSwgaiArIDEsIHN0cmlkZSwgSFRfU0hJRlRfUkVGLCBibG9ja19zdGF0ZXMpICoKPiArICAgICAg ICAgICAgICAgICBqcGVnMjAwMF9nZXRfc3RhdGUoaSArIDEsIGogKyAxLCBzdHJpZGUsIEhUX1NI SUZUX1NDQU4sIGJsb2NrX3N0YXRlcykgKiBjYXVzYWxfY29uZDsKPgo+ICAgICAgKm1iciB8PSBs b2NhbF9tYnI7Cj4gIH0KPiBAQCAtMTA0MCwxOCArMTA0MCwxOCBAQCBzdGF0aWMgdm9pZCBqcGVn MjAwMF9wcm9jZXNzX3N0cmlwZXNfYmxvY2soU3RhdGVWYXJzICpzaWdfcHJvcCwgaW50IGlfcywg aW50IGpfcwo+ICAgICAgICAgICAgICBpbnQgbW9kaWZ5X3N0YXRlLCBjb25kOwo+ICAgICAgICAg ICAgICB1aW50OF90IGJpdDsKPiAgICAgICAgICAgICAgdWludDhfdCBjYXVzYWxfY29uZCA9IGkg IT0gKGlfcyArIGhlaWdodCAtIDEpOwo+IC0gICAgICAgICAgICBpbnQzMl90ICpzcCA9ICZzYW1w bGVfYnVmW2ogKyAoaSAqIChzdHJpZGUgLSAyKSldOwo+ICsgICAgICAgICAgICBpbnQzMl90ICpz cCA9ICZzYW1wbGVfYnVmW2ogKyAoaSAqIChzdHJpZGUpKV07Cj4gICAgICAgICAgICAgIHVpbnQ4 X3QgbWJyID0gMDsKPgo+ICAgICAgICAgICAgICBpZiAoanBlZzIwMDBfZ2V0X3N0YXRlKGksIGos IHN0cmlkZSAtIDIsIEhUX1NISUZUX1NJR01BLCBibG9ja19zdGF0ZXMpID09IDApCj4gLSAgICAg ICAgICAgICAgICBqcGVnMjAwMF9jYWxjX21icigmbWJyLCBpLCBqLCBtYnJfaW5mbyAmIDB4MUVG LCBjYXVzYWxfY29uZCwgYmxvY2tfc3RhdGVzLCBzdHJpZGUgLSAyKTsKPiArICAgICAgICAgICAg ICAgIGpwZWcyMDAwX2NhbGNfbWJyKCZtYnIsIGksIGosIG1icl9pbmZvICYgMHgxRUYsIGNhdXNh bF9jb25kLCBibG9ja19zdGF0ZXMsIHN0cmlkZSk7Cj4gICAgICAgICAgICAgIG1icl9pbmZvID4+ PSAzOwo+ICAgICAgICAgICAgICBjb25kID0gbWJyICE9IDA7Cj4gICAgICAgICAgICAgIGJpdCA9 IGpwZWcyMDAwX3BlZWtfYml0KHNpZ19wcm9wLCBtYWdyZWZfc2VnbWVudCwgbWFncmVmX2xlbmd0 aCk7Cj4gICAgICAgICAgICAgICpzcCB8PSAoYml0ICogY29uZCkgPDwgcExTQjsKPiAgICAgICAg ICAgICAgc2lnX3Byb3AtPmJpdHMgLT0gY29uZDsKPiAgICAgICAgICAgICAgbW9kaWZ5X3N0YXRl ID0gKCgoMSA8PCBIVF9TSElGVF9SRUZfSU5EKSB8ICgxIDw8IEhUX1NISUZUX1JFRikpICogY29u ZCkgfCAxIDw8IEhUX1NISUZUX1NDQU47Cj4gLSAgICAgICAgICAgIGpwZWcyMDAwX21vZGlmeV9z dGF0ZShpLCBqLCBzdHJpZGUgLSAyLCBtb2RpZnlfc3RhdGUsIGJsb2NrX3N0YXRlcyk7Cj4gKyAg ICAgICAgICAgIGpwZWcyMDAwX21vZGlmeV9zdGF0ZShpLCBqLCBzdHJpZGUsIG1vZGlmeV9zdGF0 ZSwgYmxvY2tfc3RhdGVzKTsKPiAgICAgICAgICB9Cj4gICAgICB9Cj4gIH0KPiBAQCAtMTA2MCw4 ICsxMDYwLDggQEAgc3RhdGljIHZvaWQganBlZzIwMDBfcHJvY2Vzc19zdHJpcGVzX2Jsb2NrKFN0 YXRlVmFycyAqc2lnX3Byb3AsIGludCBpX3MsIGludCBqX3MKPiAgICogU2VlIHByb2NlZHVyZSBk ZWNvZGVTaWdQcm9wTWFnIGF0IFJlYy4gSVRVLVQgVC44MTQsIDcuNC4KPiAgKi8KPiAgYXZfbm9p bmxpbmUKPiAtc3RhdGljIHZvaWQganBlZzIwMDBfZGVjb2RlX3NpZ3Byb3Bfc2VnbWVudChKcGVn MjAwMENibGsgKmNibGssIHVpbnQxNl90IHdpZHRoLAo+IC0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHVpbnQxNl90IGhlaWdodCwgdWludDhfdCAqbWFncmVmX3Nl Z21lbnQsCj4gK3N0YXRpYyB2b2lkIGpwZWcyMDAwX2RlY29kZV9zaWdwcm9wX3NlZ21lbnQoSnBl ZzIwMDBDYmxrICpjYmxrLCB1aW50MTZfdCB3aWR0aCwgdWludDE2X3QgaGVpZ2h0LAo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludCBzdHJpZGUs IHVpbnQ4X3QgKm1hZ3JlZl9zZWdtZW50LAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHVpbnQzMl90IG1hZ3JlZl9sZW5ndGgsIHVpbnQ4X3QgcExTQiwKPiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90ICpzYW1w bGVfYnVmLCB1aW50OF90ICpibG9ja19zdGF0ZXMpCj4gIHsKPiBAQCAtMTA3MSw3ICsxMDcxLDYg QEAgc3RhdGljIHZvaWQganBlZzIwMDBfZGVjb2RlX3NpZ3Byb3Bfc2VnbWVudChKcGVnMjAwMENi bGsgKmNibGssIHVpbnQxNl90IHdpZHRoLAo+ICAgICAgY29uc3QgdWludDE2X3QgbnVtX2hfc3Ry aXBlID0gd2lkdGggLyA0Owo+ICAgICAgaW50IGJfd2lkdGggICAgICAgICAgICAgICAgID0gNDsK PiAgICAgIGludCBiX2hlaWdodCAgICAgICAgICAgICAgICA9IDQ7Cj4gLSAgICBpbnQgc3RyaWRl ICAgICAgICAgICAgICAgICAgPSB3aWR0aCArIDI7Cj4KPiAgICAgIGludCBsYXN0X3dpZHRoOwo+ ICAgICAgdWludDE2X3QgaSA9IDAsIGogPSAwOwo+IEBAIC0xMTE0LDcgKzExMTMsNyBAQCBzdGF0 aWMgdm9pZCBqcGVnMjAwMF9kZWNvZGVfc2lncHJvcF9zZWdtZW50KEpwZWcyMDAwQ2JsayAqY2Js aywgdWludDE2X3Qgd2lkdGgsCj4gICAqIFNlZSBwcm9jZWR1cmUgZGVjb2RlU2lnUHJvcE1hZyBh dCBSZWMuIElUVS1UIFQuODE0LCA3LjUuCj4gICovCj4gIHN0YXRpYyBpbnQKPiAtanBlZzIwMDBf ZGVjb2RlX21hZ3JlZl9zZWdtZW50KCB1aW50MTZfdCB3aWR0aCwgdWludDE2X3QgYmxvY2tfaGVp Z2h0LAo+ICtqcGVnMjAwMF9kZWNvZGVfbWFncmVmX3NlZ21lbnQoIHVpbnQxNl90IHdpZHRoLCB1 aW50MTZfdCBibG9ja19oZWlnaHQsIGNvbnN0IGludCBzdHJpZGUsCj4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdWludDhfdCAqbWFncmVmX3NlZ21lbnQsdWludDMyX3QgbWFncmVm X2xlbmd0aCwKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90IHBMU0Is IGludDMyX3QgKnNhbXBsZV9idWYsIHVpbnQ4X3QgKmJsb2NrX3N0YXRlcykKPiAgewo+IEBAIC0x MTM0LDcgKzExMzMsNyBAQCBqcGVnMjAwMF9kZWNvZGVfbWFncmVmX3NlZ21lbnQoIHVpbnQxNl90 IHdpZHRoLCB1aW50MTZfdCBibG9ja19oZWlnaHQsCj4gICAgICAgICAgICAgICAgICAgKiAgV2Ug bW92ZSBjb2x1bW4gd2lzZSwgZ29pbmcgZnJvbSBvbmUgcXVhZCB0byBhbm90aGVyLiBTZWUKPiAg ICAgICAgICAgICAgICAgICAqICBSZWMuIElUVS1UIFQuODE0LCBGaWd1cmUgNy4KPiAgICAgICAg ICAgICAgICAgICAqLwo+IC0gICAgICAgICAgICAgICAgc3AgPSAmc2FtcGxlX2J1ZltqICsgaSAq IHdpZHRoXTsKPiArICAgICAgICAgICAgICAgIHNwID0gJnNhbXBsZV9idWZbaiArIGkgKiBzdHJp ZGVdOwo+ICAgICAgICAgICAgICAgICAgaWYgKGpwZWcyMDAwX2dldF9zdGF0ZShpLCBqLCB3aWR0 aCwgSFRfU0hJRlRfU0lHTUEsIGJsb2NrX3N0YXRlcykgIT0gMCkgewo+ICAgICAgICAgICAgICAg ICAgICAgIGpwZWcyMDAwX21vZGlmeV9zdGF0ZShpLCBqLCB3aWR0aCwgMSA8PCBIVF9TSElGVF9S RUZfSU5ELCBibG9ja19zdGF0ZXMpOwo+ICAgICAgICAgICAgICAgICAgICAgICpzcCB8PSBqcGVn MjAwMF9pbXBvcnRfbWFncmVmX2JpdCgmbWFnX3JlZiwgbWFncmVmX3NlZ21lbnQsIG1hZ3JlZl9s ZW5ndGgpIDw8IHBMU0I7Cj4gQEAgLTExNDYsNyArMTE0NSw3IEBAIGpwZWcyMDAwX2RlY29kZV9t YWdyZWZfc2VnbWVudCggdWludDE2X3Qgd2lkdGgsIHVpbnQxNl90IGJsb2NrX2hlaWdodCwKPiAg ICAgIGhlaWdodCA9IGJsb2NrX2hlaWdodCAlIDQ7Cj4gICAgICBmb3IgKGludCBqID0gMDsgaiA8 IHdpZHRoOyBqKyspIHsKPiAgICAgICAgICBmb3IgKGludCBpID0gaV9zdGFydDsgaSA8IGlfc3Rh cnQgKyBoZWlnaHQ7IGkrKykgewo+IC0gICAgICAgICAgICBzcCA9ICZzYW1wbGVfYnVmW2ogKyBp ICogd2lkdGhdOwo+ICsgICAgICAgICAgICBzcCA9ICZzYW1wbGVfYnVmW2ogKyBpICogc3RyaWRl XTsKPiAgICAgICAgICAgICAgaWYgKGpwZWcyMDAwX2dldF9zdGF0ZShpLCBqLCB3aWR0aCwgSFRf U0hJRlRfU0lHTUEsIGJsb2NrX3N0YXRlcykgIT0gMCkgewo+ICAgICAgICAgICAgICAgICAganBl ZzIwMDBfbW9kaWZ5X3N0YXRlKGksIGosIHdpZHRoLCAxIDw8IEhUX1NISUZUX1JFRl9JTkQsIGJs b2NrX3N0YXRlcyk7Cj4gICAgICAgICAgICAgICAgICAqc3AgfD0ganBlZzIwMDBfaW1wb3J0X21h Z3JlZl9iaXQoJm1hZ19yZWYsIG1hZ3JlZl9zZWdtZW50LCBtYWdyZWZfbGVuZ3RoKSA8PCBwTFNC Owo+IEBAIC0xMTk0LDYgKzExOTMsOSBAQCBmZl9qcGVnMjAwMF9kZWNvZGVfaHRqMmsoY29uc3Qg SnBlZzIwMDBEZWNvZGVyQ29udGV4dCAqcywgSnBlZzIwMDBDb2RpbmdTdHlsZSAqYwo+Cj4gICAg ICBpbnQzMl90IE1fYiA9IG1hZ3A7Cj4KPiArICAgIGNvbnN0IGludCBxdWFkX2J1Zl93aWR0aCA9 IHdpZHRoICsgNDsKPiArICAgIGNvbnN0IGludCBxdWFkX2J1Zl9oZWlnaHQgPSBoZWlnaHQgKyA0 Owo+ICsKPiAgICAgIC8qIGNvZGVibG9jayBzaXplIGFzIGNvbnN0cmFpbmVkIGJ5IFJlYy4gSVRV LVQgVC44MDAsIFRhYmxlIEEuMTggKi8KPiAgICAgIGF2X2Fzc2VydDAod2lkdGggPD0gMTAyNFUg JiYgaGVpZ2h0IDw9IDEwMjRVKTsKPiAgICAgIGF2X2Fzc2VydDAod2lkdGggKiBoZWlnaHQgPD0g NDA5Nik7Cj4gQEAgLTEyNjEsMjMgKzEyNjMsMjMgQEAgZmZfanBlZzIwMDBfZGVjb2RlX2h0ajJr KGNvbnN0IEpwZWcyMDAwRGVjb2RlckNvbnRleHQgKnMsIEpwZWcyMDAwQ29kaW5nU3R5bGUgKmMK Pgo+ICAgICAganBlZzIwMDBfaW5pdF9tZWxfZGVjb2RlcigmbWVsX3N0YXRlKTsKPgo+IC0gICAg c2FtcGxlX2J1ZiA9IGF2X2NhbGxvYygod2lkdGggKyA0KSAqIChoZWlnaHQgKyA0KSwgc2l6ZW9m KGludDMyX3QpKTsKPiAtICAgIGJsb2NrX3N0YXRlcyA9IGF2X2NhbGxvYygod2lkdGggKyA0KSAq IChoZWlnaHQgKyA0KSwgc2l6ZW9mKHVpbnQ4X3QpKTsKPiArICAgIHNhbXBsZV9idWYgPSBhdl9j YWxsb2MocXVhZF9idWZfd2lkdGggKiBxdWFkX2J1Zl9oZWlnaHQsIHNpemVvZihpbnQzMl90KSk7 Cj4gKyAgICBibG9ja19zdGF0ZXMgPSBhdl9jYWxsb2MocXVhZF9idWZfd2lkdGggKiBxdWFkX2J1 Zl9oZWlnaHQsIHNpemVvZih1aW50OF90KSk7Cj4KPiAgICAgIGlmICghc2FtcGxlX2J1ZiB8fCAh YmxvY2tfc3RhdGVzKSB7Cj4gICAgICAgICAgcmV0ID0gQVZFUlJPUihFTk9NRU0pOwo+ICAgICAg ICAgIGdvdG8gZnJlZTsKPiAgICAgIH0KPiAgICAgIGlmICgocmV0ID0ganBlZzIwMDBfZGVjb2Rl X2h0X2NsZWFudXBfc2VnbWVudChzLCBjYmxrLCB0MSwgJm1lbF9zdGF0ZSwgJm1lbCwgJnZsYywK PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm1hZ19zZ24sIERj dXAsIExjdXAsIFBjdXAsIHBMU0IsIHdpZHRoLAo+IC0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBoZWlnaHQsIHNhbXBsZV9idWYsIGJsb2NrX3N0YXRlcykpIDwgMCkg ewo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZt YWdfc2duLCBEY3VwLCBMY3VwLCBQY3VwLCBwTFNCLCB3aWR0aCwKPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQsIHF1YWRfYnVmX3dpZHRo LCBzYW1wbGVfYnVmLCBibG9ja19zdGF0ZXMpKSA8IDApIHsKPiAgICAgICAgICBhdl9sb2cocy0+ YXZjdHgsIEFWX0xPR19FUlJPUiwgIkJhZCBIVCBjbGVhbnVwIHNlZ21lbnRcbiIpOwo+ICAgICAg ICAgIGdvdG8gZnJlZTsKPiAgICAgIH0KPgo+ICAgICAgaWYgKGNibGstPm5wYXNzZXMgPiAxKQo+ IC0gICAgICAgIGpwZWcyMDAwX2RlY29kZV9zaWdwcm9wX3NlZ21lbnQoY2Jsaywgd2lkdGgsIGhl aWdodCwgRHJlZiwgTHJlZiwKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwTFNC IC0gMSwgc2FtcGxlX2J1ZiwgYmxvY2tfc3RhdGVzKTsKPiArICAgICAgICBqcGVnMjAwMF9kZWNv ZGVfc2lncHJvcF9zZWdtZW50KGNibGssIHdpZHRoLCBoZWlnaHQsIHF1YWRfYnVmX3dpZHRoLCBE cmVmLCBMcmVmLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcExT QiAtIDEsIHNhbXBsZV9idWYsIGJsb2NrX3N0YXRlcyk7Cj4KPiAgICAgIGlmIChjYmxrLT5ucGFz c2VzID4gMikgewo+Cj4gQEAgLTEyODYsNyArMTI4OCw3IEBAIGZmX2pwZWcyMDAwX2RlY29kZV9o dGoyayhjb25zdCBKcGVnMjAwMERlY29kZXJDb250ZXh0ICpzLCBKcGVnMjAwMENvZGluZ1N0eWxl ICpjCj4gICAgICAgICAgICAgIHJldCA9IEFWRVJST1JfSU5WQUxJRERBVEE7Cj4gICAgICAgICAg ICAgIGdvdG8gZnJlZTsKPiAgICAgICAgICB9Cj4gLSAgICAgICAgaWYgKChyZXQgPSBqcGVnMjAw MF9kZWNvZGVfbWFncmVmX3NlZ21lbnQod2lkdGgsIGhlaWdodCwgRHJlZiwgTHJlZiwKPiArICAg ICAgICBpZiAoKHJldCA9IGpwZWcyMDAwX2RlY29kZV9tYWdyZWZfc2VnbWVudCh3aWR0aCwgaGVp Z2h0LCBxdWFkX2J1Zl93aWR0aCwgRHJlZiwgTHJlZiwKPiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwTFNCIC0gMSwgc2FtcGxlX2J1ZiwgYmxvY2tf c3RhdGVzKSkgPCAwKQo+ICAgICAgICAgICAgICBnb3RvIGZyZWU7Cj4gICAgICB9Cj4gQEAgLTEy OTcsNyArMTI5OSw3IEBAIGZmX2pwZWcyMDAwX2RlY29kZV9odGoyayhjb25zdCBKcGVnMjAwMERl Y29kZXJDb250ZXh0ICpzLCBKcGVnMjAwMENvZGluZ1N0eWxlICpjCj4gICAgICBmb3IgKGludCB5 ID0gMDsgeSA8IGhlaWdodDsgeSsrKSB7Cj4gICAgICAgICAgZm9yIChpbnQgeCA9IDA7IHggPCB3 aWR0aDsgeCsrKSB7Cj4gICAgICAgICAgICAgIG4gPSB4ICsgKHkgKiB0MS0+c3RyaWRlKTsKPiAt ICAgICAgICAgICAgdmFsID0gc2FtcGxlX2J1Zlt4ICsgKHkgKiB3aWR0aCldOwo+ICsgICAgICAg ICAgICB2YWwgPSBzYW1wbGVfYnVmW3ggKyAoeSAqIHF1YWRfYnVmX3dpZHRoKV07Cj4gICAgICAg ICAgICAgIC8qIENvbnZlcnQgc2lnbi1tYWduaXR1ZGUgdG8gdHdvJ3MgY29tcGxlbWVudC4gKi8K PiAgICAgICAgICAgICAgdmFsID0gdmFsID4+IDMxID8gMHg4MDAwMDAwMCAtIHZhbCA6IHZhbDsK PiAgICAgICAgICAgICAgdmFsID4+PSAocExTQiAtIDEpOwo+IGRpZmYgLS1naXQgYS90ZXN0cy9y ZWYvZmF0ZS9qcGVnMjAwMGRlYy1kczBfaHRfMDFfYjExIGIvdGVzdHMvcmVmL2ZhdGUvanBlZzIw MDBkZWMtZHMwX2h0XzAxX2IxMQo+IGluZGV4IGFmM2VhYTA4NmQuLmQ5MjNjYzIxMDkgMTAwNjQ0 Cj4gLS0tIGEvdGVzdHMvcmVmL2ZhdGUvanBlZzIwMDBkZWMtZHMwX2h0XzAxX2IxMQo+ICsrKyBi L3Rlc3RzL3JlZi9mYXRlL2pwZWcyMDAwZGVjLWRzMF9odF8wMV9iMTEKPiBAQCAtMyw0ICszLDQg QEAKPiAgI2NvZGVjX2lkIDA6IHJhd3ZpZGVvCj4gICNkaW1lbnNpb25zIDA6IDEyOHgxMjgKPiAg I3NhciAwOiAwLzEKPiAtMCwgICAgICAgICAgMCwgICAgICAgICAgMCwgICAgICAgIDEsICAgIDE2 Mzg0LCAweDQ0NDI2MzI0Cj4gKzAsICAgICAgICAgIDAsICAgICAgICAgIDAsICAgICAgICAxLCAg ICAxNjM4NCwgMHgwNGEzNjQ3ZQo+IC0tCj4gMi4yNS4xCj4KX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KZmZtcGVnLWRldmVsIG1haWxpbmcgbGlzdApmZm1w ZWctZGV2ZWxAZmZtcGVnLm9yZwpodHRwczovL2ZmbXBlZy5vcmcvbWFpbG1hbi9saXN0aW5mby9m Zm1wZWctZGV2ZWwKClRvIHVuc3Vic2NyaWJlLCB2aXNpdCBsaW5rIGFib3ZlLCBvciBlbWFpbApm Zm1wZWctZGV2ZWwtcmVxdWVzdEBmZm1wZWcub3JnIHdpdGggc3ViamVjdCAidW5zdWJzY3JpYmUi Lgo=