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 295DE476E5 for ; Wed, 20 Sep 2023 00:41:57 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 98B5D68C920; Wed, 20 Sep 2023 03:41:56 +0300 (EEST) Received: from mail-lf1-f44.google.com (mail-lf1-f44.google.com [209.85.167.44]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 9017168C90C for ; Wed, 20 Sep 2023 03:41:50 +0300 (EEST) Received: by mail-lf1-f44.google.com with SMTP id 2adb3069b0e04-501eec0a373so10259859e87.3 for ; Tue, 19 Sep 2023 17:41:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1695170509; x=1695775309; darn=ffmpeg.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=CHcyIExrH1nIHjb8c3Z5VERDcE0Ub5NrJxiK3mjUtUc=; b=JeQAYzb6lPINXyiTWkpPxAo1qHVJVLKCdYduzoEzi0LbvlS/TPe8buaAuOYkjxRcJx UUyD57j9UvxSfjgJRMrHVlkCeDuHKmP6V6s/+r5OhUED3rwdHhGMDqWfXJogXErYT9rA Sw2NycK53KPyu8MLHztmcYMIil4w08RiWA7G6TF6r3ScEDakmDP0xDQtCtc5pkQrZXXI Pt4Ucz2R40L3RFT3QpMGffC8fq6oCL9bhRe+fL9AVuT7STRDFqHTLhDPzc57C90nq2jD bAMq9Y0bzlwsGve4l+Gequh+4ySlIR2P0OpdGxo+U5c5aML52SHh8CMuBiLWOuwm/RdP QsfA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1695170509; x=1695775309; h=content-transfer-encoding:cc: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=CHcyIExrH1nIHjb8c3Z5VERDcE0Ub5NrJxiK3mjUtUc=; b=eTDZZHaw3DTpNVjMGo0JDdayjEVV0lFN97L8aoI7hqHg7CVKRiKcNmkk7eOxESZp98 TVF0tUitEcTHsIPtg8vhSMxE599iU8Ik2HkjSVu288THgQPdVwBIK2rB64KdsKgf3Ite Z17JWQ/06p2Nmck5ZVUIj023nfYjqx/WEbW7LTtQ4h6Lv+qUsplbpcyf0psY07+48KCc RnjQeCaliXxYQPRw4NQeVe65cM9MTE9h0zgLirlJ3nKpQ1uuCOPCNUVxqHnP7MUsrRUa hYLyQRlsgCFUq8PSNaWyZCKbcRWXSQ+1N6zPZmYaXMSiJXfTv13qbG+afwLrt4wJskSY uW3w== X-Gm-Message-State: AOJu0Yz9UaCvy4/+WOQ1uCzWa59nhZ5qYBOwStuxgPwxzTCDH72CqS92 gpiFXn1gwZmPysM+jtSM1k68f+EERIPXLd24o7Ge+ygLuzolqA== X-Google-Smtp-Source: AGHT+IEdwbF1M1hvZc3hveMl80n6pZeYaegdTlhyoYd7W5kxW0+rEwvFFxqSARJ4ZmqvtLOlro1UC/oKrFACLMFxHwY= X-Received: by 2002:a19:9159:0:b0:503:367c:49c6 with SMTP id y25-20020a199159000000b00503367c49c6mr848693lfj.45.1695170508337; Tue, 19 Sep 2023 17:41:48 -0700 (PDT) MIME-Version: 1.0 References: <20230911075232.797886-1-fei.w.wang@intel.com> <20230911075232.797886-2-fei.w.wang@intel.com> In-Reply-To: <20230911075232.797886-2-fei.w.wang@intel.com> From: Neal Gompa Date: Tue, 19 Sep 2023 20:41:11 -0400 Message-ID: To: FFmpeg development discussions and patches Subject: Re: [FFmpeg-devel] [PATCH v5 2/8] cbs: Make tracing more general 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 Cc: fei.w.wang@intel.com 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: T24gTW9uLCBTZXAgMTEsIDIwMjMgYXQgMzo1M+KAr0FNIDxmZWkudy53YW5nLWF0LWludGVsLmNv bUBmZm1wZWcub3JnPiB3cm90ZToKPgo+IEZyb206IE1hcmsgVGhvbXBzb24gPHN3QGprcXh6Lm5l dD4KPgo+IFR1cm4gdHJhY2luZyBpbnRvIGNhbGxiYWNrcyBmb3IgZWFjaCBzeW50YXggZWxlbWVu dCwgd2l0aCBkZWZhdWx0Cj4gY2FsbGJhY2tzIHRvIG1hdGNoIGN1cnJlbnQgdHJhY2VfaGVhZGVy cyBiZWhhdmlvdXIgZm9yIGRlYnVnLiAgTW92ZQo+IHRoZSBjb25zdHJ1Y3Rpb24gb2YgYml0IHN0 cmluZ3MgaW50byB0aGUgdHJhY2UgY2FsbGJhY2ssIHdoaWNoCj4gc2ltcGxpZmllcyBhbGwgb2Yg dGhlIHJlYWQgYW5kIHdyaXRlIGZ1bmN0aW9ucy4KPgo+IFNpZ25lZC1vZmYtYnk6IEZlaSBXYW5n IDxmZWkudy53YW5nQGludGVsLmNvbT4KPiAtLS0KPiAgbGliYXZjb2RlYy9jYnMuYyAgICAgICAg ICAgICAgIHwgMTIxICsrKysrKysrKy0tLS0tLS0tLS0KPiAgbGliYXZjb2RlYy9jYnMuaCAgICAg ICAgICAgICAgIHwgIDg4ICsrKysrKysrKysrKystCj4gIGxpYmF2Y29kZWMvY2JzX2F2MS5jICAg ICAgICAgICB8IDIwNiArKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiAgbGliYXZj b2RlYy9jYnNfYnNmLmMgICAgICAgICAgIHwgICA1ICsKPiAgbGliYXZjb2RlYy9jYnNfaDI2NDUu YyAgICAgICAgIHwgMTM0ICsrKysrKysrKy0tLS0tLS0tLS0tLQo+ICBsaWJhdmNvZGVjL2Nic19p bnRlcm5hbC5oICAgICAgfCAgODUgKysrKysrKysrKysrKy0KPiAgbGliYXZjb2RlYy9jYnNfdnA5 LmMgICAgICAgICAgIHwgMTA4ICsrKysrLS0tLS0tLS0tLS0tCj4gIGxpYmF2Y29kZWMvdHJhY2Vf aGVhZGVyc19ic2YuYyB8ICAgMiArCj4gIDggZmlsZXMgY2hhbmdlZCwgMzczIGluc2VydGlvbnMo KyksIDM3NiBkZWxldGlvbnMoLSkKPgo+IGRpZmYgLS1naXQgYS9saWJhdmNvZGVjL2Nicy5jIGIv bGliYXZjb2RlYy9jYnMuYwo+IGluZGV4IDNlYzgyODVlMjEuLmRhZjdmNjY0MjcgMTAwNjQ0Cj4g LS0tIGEvbGliYXZjb2RlYy9jYnMuYwo+ICsrKyBiL2xpYmF2Y29kZWMvY2JzLmMKPiBAQCAtMTE3 LDggKzExNyw5IEBAIGF2X2NvbGQgaW50IGZmX2Nic19pbml0KENvZGVkQml0c3RyZWFtQ29udGV4 dCAqKmN0eF9wdHIsCj4KPiAgICAgIGN0eC0+ZGVjb21wb3NlX3VuaXRfdHlwZXMgPSBOVUxMOwo+ Cj4gLSAgICBjdHgtPnRyYWNlX2VuYWJsZSA9IDA7Cj4gLSAgICBjdHgtPnRyYWNlX2xldmVsICA9 IEFWX0xPR19UUkFDRTsKPiArICAgIGN0eC0+dHJhY2VfZW5hYmxlICA9IDA7Cj4gKyAgICBjdHgt PnRyYWNlX2xldmVsICAgPSBBVl9MT0dfVFJBQ0U7Cj4gKyAgICBjdHgtPnRyYWNlX2NvbnRleHQg PSBjdHg7Cj4KPiAgICAgICpjdHhfcHRyID0gY3R4Owo+ICAgICAgcmV0dXJuIDA7Cj4gQEAgLTQ5 NiwxOSArNDk3LDI3IEBAIHZvaWQgZmZfY2JzX3RyYWNlX2hlYWRlcihDb2RlZEJpdHN0cmVhbUNv bnRleHQgKmN0eCwKPiAgICAgIGF2X2xvZyhjdHgtPmxvZ19jdHgsIGN0eC0+dHJhY2VfbGV2ZWws ICIlc1xuIiwgbmFtZSk7Cj4gIH0KPgo+IC12b2lkIGZmX2Nic190cmFjZV9zeW50YXhfZWxlbWVu dChDb2RlZEJpdHN0cmVhbUNvbnRleHQgKmN0eCwgaW50IHBvc2l0aW9uLAo+IC0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpzdHIsIGNvbnN0IGludCAqc3Vic2Ny aXB0cywKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqYml0 cywgaW50NjRfdCB2YWx1ZSkKPiArdm9pZCBmZl9jYnNfdHJhY2VfcmVhZF9sb2codm9pZCAqdHJh Y2VfY29udGV4dCwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgR2V0Qml0Q29udGV4dCAq Z2JjLCBpbnQgbGVuZ3RoLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFy ICpzdHIsIGNvbnN0IGludCAqc3Vic2NyaXB0cywKPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgaW50NjRfdCB2YWx1ZSkKPiAgewo+ICsgICAgQ29kZWRCaXRzdHJlYW1Db250ZXh0ICpjdHgg PSB0cmFjZV9jb250ZXh0Owo+ICAgICAgY2hhciBuYW1lWzI1Nl07Cj4gKyAgICBjaGFyIGJpdHNb MjU2XTsKPiAgICAgIHNpemVfdCBuYW1lX2xlbiwgYml0c19sZW47Cj4gICAgICBpbnQgcGFkLCBz dWJzLCBpLCBqLCBrLCBuOwo+IC0KPiAtICAgIGlmICghY3R4LT50cmFjZV9lbmFibGUpCj4gLSAg ICAgICAgcmV0dXJuOwo+ICsgICAgaW50IHBvc2l0aW9uOwo+Cj4gICAgICBhdl9hc3NlcnQwKHZh bHVlID49IElOVF9NSU4gJiYgdmFsdWUgPD0gVUlOVDMyX01BWCk7Cj4KPiArICAgIHBvc2l0aW9u ID0gZ2V0X2JpdHNfY291bnQoZ2JjKTsKPiArCj4gKyAgICBhdl9hc3NlcnQwKGxlbmd0aCA8IDI1 Nik7Cj4gKyAgICBmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspCj4gKyAgICAgICAgYml0c1tp XSA9IGdldF9iaXRzMShnYmMpID8gJzEnIDogJzAnOwo+ICsgICAgYml0c1tsZW5ndGhdID0gMDsK PiArCj4gICAgICBzdWJzID0gc3Vic2NyaXB0cyA/IHN1YnNjcmlwdHNbMF0gOiAwOwo+ICAgICAg biA9IDA7Cj4gICAgICBmb3IgKGkgPSBqID0gMDsgc3RyW2ldOykgewo+IEBAIC01MzUsNyArNTQ0 LDcgQEAgdm9pZCBmZl9jYnNfdHJhY2Vfc3ludGF4X2VsZW1lbnQoQ29kZWRCaXRzdHJlYW1Db250 ZXh0ICpjdHgsIGludCBwb3NpdGlvbiwKPiAgICAgIGF2X2Fzc2VydDAobiA9PSBzdWJzKTsKPgo+ ICAgICAgbmFtZV9sZW4gPSBzdHJsZW4obmFtZSk7Cj4gLSAgICBiaXRzX2xlbiA9IHN0cmxlbihi aXRzKTsKPiArICAgIGJpdHNfbGVuID0gbGVuZ3RoOwo+Cj4gICAgICBpZiAobmFtZV9sZW4gKyBi aXRzX2xlbiA+IDYwKQo+ICAgICAgICAgIHBhZCA9IGJpdHNfbGVuICsgMjsKPiBAQCAtNTQ2LDYg KzU1NSwzNiBAQCB2b2lkIGZmX2Nic190cmFjZV9zeW50YXhfZWxlbWVudChDb2RlZEJpdHN0cmVh bUNvbnRleHQgKmN0eCwgaW50IHBvc2l0aW9uLAo+ICAgICAgICAgICAgIHBvc2l0aW9uLCBuYW1l LCBwYWQsIGJpdHMsIHZhbHVlKTsKPiAgfQo+Cj4gK3ZvaWQgZmZfY2JzX3RyYWNlX3dyaXRlX2xv Zyh2b2lkICp0cmFjZV9jb250ZXh0LAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHV0 Qml0Q29udGV4dCAqcGJjLCBpbnQgbGVuZ3RoLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29uc3QgY2hhciAqc3RyLCBjb25zdCBpbnQgKnN1YnNjcmlwdHMsCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICBpbnQ2NF90IHZhbHVlKQo+ICt7Cj4gKyAgICBDb2RlZEJpdHN0cmVh bUNvbnRleHQgKmN0eCA9IHRyYWNlX2NvbnRleHQ7Cj4gKwo+ICsgICAgLy8gRW5zdXJlIHRoYXQg dGhlIHN5bnRheCBlbGVtZW50IGlzIHdyaXR0ZW4gdG8gdGhlIG91dHB1dCBidWZmZXIsCj4gKyAg ICAvLyBtYWtlIGEgR2V0Qml0Q29udGV4dCBwb2ludGVkIGF0IHRoZSBzdGFydCBwb3NpdGlvbiwg dGhlbiBjYWxsIHRoZQo+ICsgICAgLy8gcmVhZCBsb2cgZnVuY3Rpb24gd2hpY2ggY2FuIHJlYWQg dGhlIGJpdHMgYmFjayB0byBsb2cgdGhlbS4KPiArCj4gKyAgICBHZXRCaXRDb250ZXh0IGdiYzsK PiArICAgIGludCBwb3NpdGlvbjsKPiArCj4gKyAgICBpZiAobGVuZ3RoID4gMCkgewo+ICsgICAg ICAgIFB1dEJpdENvbnRleHQgZmx1c2g7Cj4gKyAgICAgICAgZmx1c2ggPSAqcGJjOwo+ICsgICAg ICAgIGZsdXNoX3B1dF9iaXRzKCZmbHVzaCk7Cj4gKyAgICB9Cj4gKwo+ICsgICAgcG9zaXRpb24g PSBwdXRfYml0c19jb3VudChwYmMpOwo+ICsgICAgYXZfYXNzZXJ0MChwb3NpdGlvbiA+PSBsZW5n dGgpOwo+ICsKPiArICAgIGluaXRfZ2V0X2JpdHMoJmdiYywgcGJjLT5idWYsIHBvc2l0aW9uKTsK PiArCj4gKyAgICBza2lwX2JpdHNfbG9uZygmZ2JjLCBwb3NpdGlvbiAtIGxlbmd0aCk7Cj4gKwo+ ICsgICAgZmZfY2JzX3RyYWNlX3JlYWRfbG9nKGN0eCwgJmdiYywgbGVuZ3RoLCBzdHIsIHN1YnNj cmlwdHMsIHZhbHVlKTsKPiArfQo+ICsKPiAgc3RhdGljIGF2X2Fsd2F5c19pbmxpbmUgaW50IGNi c19yZWFkX3Vuc2lnbmVkKENvZGVkQml0c3RyZWFtQ29udGV4dCAqY3R4LAo+ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2V0Qml0Q29udGV4dCAqZ2JjLAo+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHdpZHRo LCBjb25zdCBjaGFyICpuYW1lLAo+IEBAIC01NTUsNyArNTk0LDggQEAgc3RhdGljIGF2X2Fsd2F5 c19pbmxpbmUgaW50IGNic19yZWFkX3Vuc2lnbmVkKENvZGVkQml0c3RyZWFtQ29udGV4dCAqY3R4 LAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMy X3QgcmFuZ2VfbWF4KQo+ICB7Cj4gICAgICB1aW50MzJfdCB2YWx1ZTsKPiAtICAgIGludCBwb3Np dGlvbjsKPiArCj4gKyAgICBDQlNfVFJBQ0VfUkVBRF9TVEFSVCgpOwo+Cj4gICAgICBhdl9hc3Nl cnQwKHdpZHRoID4gMCAmJiB3aWR0aCA8PSAzMik7Cj4KPiBAQCAtNTY1LDIxICs2MDUsOSBAQCBz dGF0aWMgYXZfYWx3YXlzX2lubGluZSBpbnQgY2JzX3JlYWRfdW5zaWduZWQoQ29kZWRCaXRzdHJl YW1Db250ZXh0ICpjdHgsCj4gICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Cj4g ICAgICB9Cj4KPiAtICAgIGlmIChjdHgtPnRyYWNlX2VuYWJsZSkKPiAtICAgICAgICBwb3NpdGlv biA9IGdldF9iaXRzX2NvdW50KGdiYyk7Cj4gLQo+ICAgICAgdmFsdWUgPSBnZXRfYml0c19sb25n KGdiYywgd2lkdGgpOwo+Cj4gLSAgICBpZiAoY3R4LT50cmFjZV9lbmFibGUpIHsKPiAtICAgICAg ICBjaGFyIGJpdHNbMzNdOwo+IC0gICAgICAgIGludCBpOwo+IC0gICAgICAgIGZvciAoaSA9IDA7 IGkgPCB3aWR0aDsgaSsrKQo+IC0gICAgICAgICAgICBiaXRzW2ldID0gdmFsdWUgPj4gKHdpZHRo IC0gaSAtIDEpICYgMSA/ICcxJyA6ICcwJzsKPiAtICAgICAgICBiaXRzW2ldID0gMDsKPiAtCj4g LSAgICAgICAgZmZfY2JzX3RyYWNlX3N5bnRheF9lbGVtZW50KGN0eCwgcG9zaXRpb24sIG5hbWUs IHN1YnNjcmlwdHMsCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpdHMs IHZhbHVlKTsKPiAtICAgIH0KPiArICAgIENCU19UUkFDRV9SRUFEX0VORCgpOwo+Cj4gICAgICBp ZiAodmFsdWUgPCByYW5nZV9taW4gfHwgdmFsdWUgPiByYW5nZV9tYXgpIHsKPiAgICAgICAgICBh dl9sb2coY3R4LT5sb2dfY3R4LCBBVl9MT0dfRVJST1IsICIlcyBvdXQgb2YgcmFuZ2U6ICIKPiBA QCAtNjEzLDYgKzY0MSw4IEBAIGludCBmZl9jYnNfd3JpdGVfdW5zaWduZWQoQ29kZWRCaXRzdHJl YW1Db250ZXh0ICpjdHgsIFB1dEJpdENvbnRleHQgKnBiYywKPiAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb25zdCBpbnQgKnN1YnNjcmlwdHMsIHVpbnQzMl90IHZhbHVlLAo+ICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHJhbmdlX21pbiwgdWludDMyX3QgcmFuZ2VfbWF4 KQo+ICB7Cj4gKyAgICBDQlNfVFJBQ0VfV1JJVEVfU1RBUlQoKTsKPiArCj4gICAgICBhdl9hc3Nl cnQwKHdpZHRoID4gMCAmJiB3aWR0aCA8PSAzMik7Cj4KPiAgICAgIGlmICh2YWx1ZSA8IHJhbmdl X21pbiB8fCB2YWx1ZSA+IHJhbmdlX21heCkgewo+IEBAIC02MjUsMjIgKzY1NSwxMyBAQCBpbnQg ZmZfY2JzX3dyaXRlX3Vuc2lnbmVkKENvZGVkQml0c3RyZWFtQ29udGV4dCAqY3R4LCBQdXRCaXRD b250ZXh0ICpwYmMsCj4gICAgICBpZiAocHV0X2JpdHNfbGVmdChwYmMpIDwgd2lkdGgpCj4gICAg ICAgICAgcmV0dXJuIEFWRVJST1IoRU5PU1BDKTsKPgo+IC0gICAgaWYgKGN0eC0+dHJhY2VfZW5h YmxlKSB7Cj4gLSAgICAgICAgY2hhciBiaXRzWzMzXTsKPiAtICAgICAgICBpbnQgaTsKPiAtICAg ICAgICBmb3IgKGkgPSAwOyBpIDwgd2lkdGg7IGkrKykKPiAtICAgICAgICAgICAgYml0c1tpXSA9 IHZhbHVlID4+ICh3aWR0aCAtIGkgLSAxKSAmIDEgPyAnMScgOiAnMCc7Cj4gLSAgICAgICAgYml0 c1tpXSA9IDA7Cj4gLQo+IC0gICAgICAgIGZmX2Nic190cmFjZV9zeW50YXhfZWxlbWVudChjdHgs IHB1dF9iaXRzX2NvdW50KHBiYyksCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIG5hbWUsIHN1YnNjcmlwdHMsIGJpdHMsIHZhbHVlKTsKPiAtICAgIH0KPiAtCj4gICAgICBp ZiAod2lkdGggPCAzMikKPiAgICAgICAgICBwdXRfYml0cyhwYmMsIHdpZHRoLCB2YWx1ZSk7Cj4g ICAgICBlbHNlCj4gICAgICAgICAgcHV0X2JpdHMzMihwYmMsIHZhbHVlKTsKPgo+ICsgICAgQ0JT X1RSQUNFX1dSSVRFX0VORCgpOwo+ICsKPiAgICAgIHJldHVybiAwOwo+ICB9Cj4KPiBAQCAtNjU3 LDcgKzY3OCw4IEBAIGludCBmZl9jYnNfcmVhZF9zaWduZWQoQ29kZWRCaXRzdHJlYW1Db250ZXh0 ICpjdHgsIEdldEJpdENvbnRleHQgKmdiYywKPiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQz Ml90IHJhbmdlX21pbiwgaW50MzJfdCByYW5nZV9tYXgpCj4gIHsKPiAgICAgIGludDMyX3QgdmFs dWU7Cj4gLSAgICBpbnQgcG9zaXRpb247Cj4gKwo+ICsgICAgQ0JTX1RSQUNFX1JFQURfU1RBUlQo KTsKPgo+ICAgICAgYXZfYXNzZXJ0MCh3aWR0aCA+IDAgJiYgd2lkdGggPD0gMzIpOwo+Cj4gQEAg LTY2NywyMSArNjg5LDkgQEAgaW50IGZmX2Nic19yZWFkX3NpZ25lZChDb2RlZEJpdHN0cmVhbUNv bnRleHQgKmN0eCwgR2V0Qml0Q29udGV4dCAqZ2JjLAo+ICAgICAgICAgIHJldHVybiBBVkVSUk9S X0lOVkFMSUREQVRBOwo+ICAgICAgfQo+Cj4gLSAgICBpZiAoY3R4LT50cmFjZV9lbmFibGUpCj4g LSAgICAgICAgcG9zaXRpb24gPSBnZXRfYml0c19jb3VudChnYmMpOwo+IC0KPiAgICAgIHZhbHVl ID0gZ2V0X3NiaXRzX2xvbmcoZ2JjLCB3aWR0aCk7Cj4KPiAtICAgIGlmIChjdHgtPnRyYWNlX2Vu YWJsZSkgewo+IC0gICAgICAgIGNoYXIgYml0c1szM107Cj4gLSAgICAgICAgaW50IGk7Cj4gLSAg ICAgICAgZm9yIChpID0gMDsgaSA8IHdpZHRoOyBpKyspCj4gLSAgICAgICAgICAgIGJpdHNbaV0g PSB2YWx1ZSAmICgxVSA8PCAod2lkdGggLSBpIC0gMSkpID8gJzEnIDogJzAnOwo+IC0gICAgICAg IGJpdHNbaV0gPSAwOwo+IC0KPiAtICAgICAgICBmZl9jYnNfdHJhY2Vfc3ludGF4X2VsZW1lbnQo Y3R4LCBwb3NpdGlvbiwgbmFtZSwgc3Vic2NyaXB0cywKPiAtICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgYml0cywgdmFsdWUpOwo+IC0gICAgfQo+ICsgICAgQ0JTX1RSQUNFX1JF QURfRU5EKCk7Cj4KPiAgICAgIGlmICh2YWx1ZSA8IHJhbmdlX21pbiB8fCB2YWx1ZSA+IHJhbmdl X21heCkgewo+ICAgICAgICAgIGF2X2xvZyhjdHgtPmxvZ19jdHgsIEFWX0xPR19FUlJPUiwgIiVz IG91dCBvZiByYW5nZTogIgo+IEBAIC02OTksNiArNzA5LDggQEAgaW50IGZmX2Nic193cml0ZV9z aWduZWQoQ29kZWRCaXRzdHJlYW1Db250ZXh0ICpjdHgsIFB1dEJpdENvbnRleHQgKnBiYywKPiAg ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50ICpzdWJzY3JpcHRzLCBpbnQzMl90IHZh bHVlLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IHJhbmdlX21pbiwgaW50MzJf dCByYW5nZV9tYXgpCj4gIHsKPiArICAgIENCU19UUkFDRV9XUklURV9TVEFSVCgpOwo+ICsKPiAg ICAgIGF2X2Fzc2VydDAod2lkdGggPiAwICYmIHdpZHRoIDw9IDMyKTsKPgo+ICAgICAgaWYgKHZh bHVlIDwgcmFuZ2VfbWluIHx8IHZhbHVlID4gcmFuZ2VfbWF4KSB7Cj4gQEAgLTcxMSwyMiArNzIz LDEzIEBAIGludCBmZl9jYnNfd3JpdGVfc2lnbmVkKENvZGVkQml0c3RyZWFtQ29udGV4dCAqY3R4 LCBQdXRCaXRDb250ZXh0ICpwYmMsCj4gICAgICBpZiAocHV0X2JpdHNfbGVmdChwYmMpIDwgd2lk dGgpCj4gICAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5PU1BDKTsKPgo+IC0gICAgaWYgKGN0eC0+ dHJhY2VfZW5hYmxlKSB7Cj4gLSAgICAgICAgY2hhciBiaXRzWzMzXTsKPiAtICAgICAgICBpbnQg aTsKPiAtICAgICAgICBmb3IgKGkgPSAwOyBpIDwgd2lkdGg7IGkrKykKPiAtICAgICAgICAgICAg Yml0c1tpXSA9IHZhbHVlICYgKDFVIDw8ICh3aWR0aCAtIGkgLSAxKSkgPyAnMScgOiAnMCc7Cj4g LSAgICAgICAgYml0c1tpXSA9IDA7Cj4gLQo+IC0gICAgICAgIGZmX2Nic190cmFjZV9zeW50YXhf ZWxlbWVudChjdHgsIHB1dF9iaXRzX2NvdW50KHBiYyksCj4gLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIG5hbWUsIHN1YnNjcmlwdHMsIGJpdHMsIHZhbHVlKTsKPiAtICAgIH0K PiAtCj4gICAgICBpZiAod2lkdGggPCAzMikKPiAgICAgICAgICBwdXRfc2JpdHMocGJjLCB3aWR0 aCwgdmFsdWUpOwo+ICAgICAgZWxzZQo+ICAgICAgICAgIHB1dF9iaXRzMzIocGJjLCB2YWx1ZSk7 Cj4KPiArICAgIENCU19UUkFDRV9XUklURV9FTkQoKTsKPiArCj4gICAgICByZXR1cm4gMDsKPiAg fQo+Cj4gZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvY2JzLmggYi9saWJhdmNvZGVjL2Nicy5oCj4g aW5kZXggYjQxMzFkYjVmZS4uZmZiMjc5Nzc2MSAxMDA2NDQKPiAtLS0gYS9saWJhdmNvZGVjL2Ni cy5oCj4gKysrIGIvbGliYXZjb2RlYy9jYnMuaAo+IEBAIC0xNjgsNiArMTY4LDUxIEBAIHR5cGVk ZWYgc3RydWN0IENvZGVkQml0c3RyZWFtRnJhZ21lbnQgewo+ICAgICAgQ29kZWRCaXRzdHJlYW1V bml0ICp1bml0czsKPiAgfSBDb2RlZEJpdHN0cmVhbUZyYWdtZW50Owo+Cj4gKwo+ICtzdHJ1Y3Qg Q29kZWRCaXRzdHJlYW1Db250ZXh0Owo+ICtzdHJ1Y3QgR2V0Qml0Q29udGV4dDsKPiArc3RydWN0 IFB1dEJpdENvbnRleHQ7Cj4gKwo+ICsvKioKPiArICogQ2FsbGJhY2sgdHlwZSBmb3IgcmVhZCB0 cmFjaW5nLgo+ICsgKgo+ICsgKiBAcGFyYW0gY3R4ICAgICAgICAgVXNlci1zZXQgdHJhY2UgY29u dGV4dC4KPiArICogQHBhcmFtIGdiYyAgICAgICAgIEEgR2V0Qml0Q29udGV4dCBzZXQgYXQgdGhl IHN0YXJ0IG9mIHRoZSBzeW50YXgKPiArICogICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuICBU aGlzIGlzIGEgY29weSwgdGhlIGNhbGxlZSBkb2VzIG5vdAo+ICsgKiAgICAgICAgICAgICAgICAg ICAgbmVlZCB0byBwcmVzZXJ2ZSBpdC4KPiArICogQHBhcmFtIGxlbmd0aCAgICAgIExlbmd0aCBp biBiaXRzIG9mIHRoZSBzeW50YXggZWxlbWVudC4KPiArICogQHBhcmFtIG5hbWUgICAgICAgIFN0 cmluZyBuYW1lIG9mIHRoZSBzeW50YXggZWxlbWVudHMuCj4gKyAqIEBwYXJhbSBzdWJzY3JpcHRz ICBJZiB0aGUgc3ludGF4IGVsZW1lbnQgaXMgYW4gYXJyYXksIGEgcG9pbnRlciB0bwo+ICsgKiAg ICAgICAgICAgICAgICAgICAgYW4gYXJyYXkgb2Ygc3Vic2NyaXB0cyBpbnRvIHRoZSBhcnJheS4K PiArICogQHBhcmFtIHZhbHVlICAgICAgIFBhcnNlZCB2YWx1ZSBvZiB0aGUgc3ludGF4IGVsZW1l bnQuCj4gKyAqLwo+ICt0eXBlZGVmIHZvaWQgKCpDQlNUcmFjZVJlYWRDYWxsYmFjaykodm9pZCAq dHJhY2VfY29udGV4dCwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0 cnVjdCBHZXRCaXRDb250ZXh0ICpnYmMsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBpbnQgc3RhcnRfcG9zaXRpb24sCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY29uc3QgaW50ICpzdWJzY3JpcHRzLAo+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgaW50NjRfdCB2YWx1ZSk7Cj4gKwo+ICsvKioKPiArICogQ2FsbGJh Y2sgdHlwZSBmb3Igd3JpdGUgdHJhY2luZy4KPiArICoKPiArICogQHBhcmFtIGN0eCAgICAgICAg IFVzZXItc2V0IHRyYWNlIGNvbnRleHQuCj4gKyAqIEBwYXJhbSBwYmMgICAgICAgICBBIFB1dEJp dENvbnRleHQgc2V0IGF0IHRoZSBlbmQgb2YgdGhlIHN5bnRheAo+ICsgKiAgICAgICAgICAgICAg ICAgICAgZWxlbWVudC4gIFRoZSB1c2VyIG11c3Qgbm90IG1vZGlmeSB0aGlzLCBidXQgbWF5Cj4g KyAqICAgICAgICAgICAgICAgICAgICBpbnNwZWN0IGl0IHRvIGRldGVybWluZSBzdGF0ZS4KPiAr ICogQHBhcmFtIGxlbmd0aCAgICAgIExlbmd0aCBpbiBiaXRzIG9mIHRoZSBzeW50YXggZWxlbWVu dC4KPiArICogQHBhcmFtIG5hbWUgICAgICAgIFN0cmluZyBuYW1lIG9mIHRoZSBzeW50YXggZWxl bWVudHMuCj4gKyAqIEBwYXJhbSBzdWJzY3JpcHRzICBJZiB0aGUgc3ludGF4IGVsZW1lbnQgaXMg YW4gYXJyYXksIGEgcG9pbnRlciB0bwo+ICsgKiAgICAgICAgICAgICAgICAgICAgYW4gYXJyYXkg b2Ygc3Vic2NyaXB0cyBpbnRvIHRoZSBhcnJheS4KPiArICogQHBhcmFtIHZhbHVlICAgICAgIFdy aXR0ZW4gdmFsdWUgb2YgdGhlIHN5bnRheCBlbGVtZW50Lgo+ICsgKi8KPiArdHlwZWRlZiB2b2lk ICgqQ0JTVHJhY2VXcml0ZUNhbGxiYWNrKSh2b2lkICp0cmFjZV9jb250ZXh0LAo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBQdXRCaXRDb250ZXh0ICpwYmMs Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHN0YXJ0X3Bvc2l0 aW9uLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIg Km5hbWUsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50 ICpzdWJzY3JpcHRzLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu dDY0X3QgdmFsdWUpOwo+ICsKPiAgLyoqCj4gICAqIENvbnRleHQgc3RydWN0dXJlIGZvciBjb2Rl ZCBiaXRzdHJlYW0gb3BlcmF0aW9ucy4KPiAgICovCj4gQEAgLTIxMSwxMSArMjU2LDI5IEBAIHR5 cGVkZWYgc3RydWN0IENvZGVkQml0c3RyZWFtQ29udGV4dCB7Cj4gICAgICAgKi8KPiAgICAgIGlu dCB0cmFjZV9lbmFibGU7Cj4gICAgICAvKioKPiAtICAgICAqIExvZyBsZXZlbCB0byB1c2UgZm9y IHRyYWNlIG91dHB1dC4KPiArICAgICAqIExvZyBsZXZlbCB0byB1c2UgZm9yIGRlZmF1bHQgdHJh Y2Ugb3V0cHV0Lgo+ICAgICAgICoKPiAgICAgICAqIEZyb20gQVZfTE9HXyo7IGRlZmF1bHRzIHRv IEFWX0xPR19UUkFDRS4KPiAgICAgICAqLwo+ICAgICAgaW50IHRyYWNlX2xldmVsOwo+ICsgICAg LyoqCj4gKyAgICAgKiBVc2VyIGNvbnRleHQgcG9pbnRlciB0byBwYXNzIHRvIHRyYWNlIGNhbGxi YWNrcy4KPiArICAgICAqLwo+ICsgICAgdm9pZCAqdHJhY2VfY29udGV4dDsKPiArICAgIC8qKgo+ ICsgICAgICogQ2FsbGJhY2sgZm9yIHJlYWQgdHJhY2luZy4KPiArICAgICAqCj4gKyAgICAgKiBJ ZiB0cmFjaW5nIGlzIGVuYWJsZWQgdGhlbiB0aGlzIGlzIGNhbGxlZCBvbmNlIGZvciBlYWNoIHN5 bnRheAo+ICsgICAgICogZWxlbWVudCBwYXJzZWQuCj4gKyAgICAgKi8KPiArICAgIENCU1RyYWNl UmVhZENhbGxiYWNrICB0cmFjZV9yZWFkX2NhbGxiYWNrOwo+ICsgICAgLyoqCj4gKyAgICAgKiBD YWxsYmFjayBmb3Igd3JpdGUgdHJhY2luZy4KPiArICAgICAqCj4gKyAgICAgKiBJZiB0cmFjaW5n IGlzIGVuYWJsZWQgdGhlbiB0aGlzIGlzIGNhbGxlZCBvbmNlIGZvciBlYWNoIHN5bnRheAo+ICsg ICAgICogZWxlbWVudCB3cml0dGVuLgo+ICsgICAgICovCj4gKyAgICBDQlNUcmFjZVdyaXRlQ2Fs bGJhY2sgdHJhY2Vfd3JpdGVfY2FsbGJhY2s7Cj4KPiAgICAgIC8qKgo+ICAgICAgICogV3JpdGUg YnVmZmVyLiBVc2VkIGFzIGludGVybWVkaWF0ZSBidWZmZXIgd2hlbiB3cml0aW5nIHVuaXRzLgo+ IEBAIC00NTAsNCArNTEzLDI3IEBAIHZvaWQgZmZfY2JzX2Rpc2NhcmRfdW5pdHMoQ29kZWRCaXRz dHJlYW1Db250ZXh0ICpjdHgsCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bSBBVkRp c2NhcmQgc2tpcCwKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZmxhZ3MpOwo+Cj4g Kwo+ICsvKioKPiArICogSGVscGVyIGZ1bmN0aW9uIGZvciByZWFkIHRyYWNpbmcgd2hpY2ggZm9y bWF0cyB0aGUgc3ludGF4IGVsZW1lbnQKPiArICogYW5kIGxvZ3MgdGhlIHJlc3VsdC4KPiArICoK PiArICogVHJhY2UgY29udGV4dCBzaG91bGQgYmUgc2V0IHRvIHRoZSBDb2RlZEJpdHN0cmVhbUNv bnRleHQuCj4gKyAqLwo+ICt2b2lkIGZmX2Nic190cmFjZV9yZWFkX2xvZyh2b2lkICp0cmFjZV9j b250ZXh0LAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgR2V0Qml0Q29udGV4 dCAqZ2JjLCBpbnQgbGVuZ3RoLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBj aGFyICpzdHIsIGNvbnN0IGludCAqc3Vic2NyaXB0cywKPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgaW50NjRfdCB2YWx1ZSk7Cj4gKwo+ICsvKioKPiArICogSGVscGVyIGZ1bmN0aW9uIGZv ciB3cml0ZSB0cmFjaW5nIHdoaWNoIGZvcm1hdHMgdGhlIHN5bnRheCBlbGVtZW50Cj4gKyAqIGFu ZCBsb2dzIHRoZSByZXN1bHQuCj4gKyAqCj4gKyAqIFRyYWNlIGNvbnRleHQgc2hvdWxkIGJlIHNl dCB0byB0aGUgQ29kZWRCaXRzdHJlYW1Db250ZXh0Lgo+ICsgKi8KPiArdm9pZCBmZl9jYnNfdHJh Y2Vfd3JpdGVfbG9nKHZvaWQgKnRyYWNlX2NvbnRleHQsCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzdHJ1Y3QgUHV0Qml0Q29udGV4dCAqcGJjLCBpbnQgbGVuZ3RoLAo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqc3RyLCBjb25zdCBpbnQgKnN1YnNjcmlw dHMsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IHZhbHVlKTsKPiArCj4g ICNlbmRpZiAvKiBBVkNPREVDX0NCU19IICovCj4gZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvY2Jz X2F2MS5jIGIvbGliYXZjb2RlYy9jYnNfYXYxLmMKPiBpbmRleCA3ZmI1YmQ4YjQyLi42YzQ3ODYw M2YxIDEwMDY0NAo+IC0tLSBhL2xpYmF2Y29kZWMvY2JzX2F2MS5jCj4gKysrIGIvbGliYXZjb2Rl Yy9jYnNfYXYxLmMKPiBAQCAtMzEsMTAgKzMxLDggQEAgc3RhdGljIGludCBjYnNfYXYxX3JlYWRf dXZsYyhDb2RlZEJpdHN0cmVhbUNvbnRleHQgKmN0eCwgR2V0Qml0Q29udGV4dCAqZ2JjLAo+ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHJhbmdlX21pbiwgdWludDMyX3Qg cmFuZ2VfbWF4KQo+ICB7Cj4gICAgICB1aW50MzJfdCB6ZXJvZXMsIGJpdHNfdmFsdWUsIHZhbHVl Owo+IC0gICAgaW50IHBvc2l0aW9uOwo+Cj4gLSAgICBpZiAoY3R4LT50cmFjZV9lbmFibGUpCj4g LSAgICAgICAgcG9zaXRpb24gPSBnZXRfYml0c19jb3VudChnYmMpOwo+ICsgICAgQ0JTX1RSQUNF X1JFQURfU1RBUlQoKTsKPgo+ICAgICAgemVyb2VzID0gMDsKPiAgICAgIHdoaWxlICgxKSB7Cj4g QEAgLTUwLDYgKzQ4LDkgQEAgc3RhdGljIGludCBjYnNfYXYxX3JlYWRfdXZsYyhDb2RlZEJpdHN0 cmVhbUNvbnRleHQgKmN0eCwgR2V0Qml0Q29udGV4dCAqZ2JjLAo+ICAgICAgfQo+Cj4gICAgICBp ZiAoemVyb2VzID49IDMyKSB7Cj4gKyAgICAgICAgLy8gTm90ZSB0aGF0IHRoZSBzcGVjIGFsbG93 cyBhbiBhcmJpdHJhcmlseSBsYXJnZSBudW1iZXIgb2YKPiArICAgICAgICAvLyB6ZXJvIGJpdHMg Zm9sbG93ZWQgYnkgYSBvbmUgYml0IGluIHRoaXMgY2FzZSwgYnV0IHRoZQo+ICsgICAgICAgIC8v IGxpYmFvbSBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdCBzdXBwb3J0IGl0Lgo+ICAgICAgICAgIHZh bHVlID0gTUFYX1VJTlRfQklUUygzMik7Cj4gICAgICB9IGVsc2Ugewo+ICAgICAgICAgIGlmIChn ZXRfYml0c19sZWZ0KGdiYykgPCB6ZXJvZXMpIHsKPiBAQCAtNjIsMzYgKzYzLDcgQEAgc3RhdGlj IGludCBjYnNfYXYxX3JlYWRfdXZsYyhDb2RlZEJpdHN0cmVhbUNvbnRleHQgKmN0eCwgR2V0Qml0 Q29udGV4dCAqZ2JjLAo+ICAgICAgICAgIHZhbHVlID0gYml0c192YWx1ZSArIChVSU5UMzJfQygx KSA8PCB6ZXJvZXMpIC0gMTsKPiAgICAgIH0KPgo+IC0gICAgaWYgKGN0eC0+dHJhY2VfZW5hYmxl KSB7Cj4gLSAgICAgICAgY2hhciBiaXRzWzY1XTsKPiAtICAgICAgICBpbnQgaSwgaiwgazsKPiAt Cj4gLSAgICAgICAgaWYgKHplcm9lcyA+PSAzMikgewo+IC0gICAgICAgICAgICB3aGlsZSAoemVy b2VzID4gMzIpIHsKPiAtICAgICAgICAgICAgICAgIGsgPSBGRk1JTih6ZXJvZXMgLSAzMiwgMzIp Owo+IC0gICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGs7IGkrKykKPiAtICAgICAgICAg ICAgICAgICAgICBiaXRzW2ldID0gJzAnOwo+IC0gICAgICAgICAgICAgICAgYml0c1tpXSA9IDA7 Cj4gLSAgICAgICAgICAgICAgICBmZl9jYnNfdHJhY2Vfc3ludGF4X2VsZW1lbnQoY3R4LCBwb3Np dGlvbiwgbmFtZSwKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBOVUxMLCBiaXRzLCAwKTsKPiAtICAgICAgICAgICAgICAgIHplcm9lcyAtPSBrOwo+IC0gICAg ICAgICAgICAgICAgcG9zaXRpb24gKz0gazsKPiAtICAgICAgICAgICAgfQo+IC0gICAgICAgIH0K PiAtCj4gLSAgICAgICAgZm9yIChpID0gMDsgaSA8IHplcm9lczsgaSsrKQo+IC0gICAgICAgICAg ICBiaXRzW2ldID0gJzAnOwo+IC0gICAgICAgIGJpdHNbaSsrXSA9ICcxJzsKPiAtCj4gLSAgICAg ICAgaWYgKHplcm9lcyA8IDMyKSB7Cj4gLSAgICAgICAgICAgIGZvciAoaiA9IDA7IGogPCB6ZXJv ZXM7IGorKykKPiAtICAgICAgICAgICAgICAgIGJpdHNbaSsrXSA9IChiaXRzX3ZhbHVlID4+ICh6 ZXJvZXMgLSBqIC0gMSkgJiAxKSA/ICcxJyA6ICcwJzsKPiAtICAgICAgICB9Cj4gLQo+IC0gICAg ICAgIGJpdHNbaV0gPSAwOwo+IC0gICAgICAgIGZmX2Nic190cmFjZV9zeW50YXhfZWxlbWVudChj dHgsIHBvc2l0aW9uLCBuYW1lLAo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBOVUxMLCBiaXRzLCB2YWx1ZSk7Cj4gLSAgICB9Cj4gKyAgICBDQlNfVFJBQ0VfUkVBRF9FTkRf Tk9fU1VCU0NSSVBUUygpOwo+Cj4gICAgICBpZiAodmFsdWUgPCByYW5nZV9taW4gfHwgdmFsdWUg PiByYW5nZV9tYXgpIHsKPiAgICAgICAgICBhdl9sb2coY3R4LT5sb2dfY3R4LCBBVl9MT0dfRVJS T1IsICIlcyBvdXQgb2YgcmFuZ2U6ICIKPiBAQCAtMTA5LDcgKzgxLDkgQEAgc3RhdGljIGludCBj YnNfYXYxX3dyaXRlX3V2bGMoQ29kZWRCaXRzdHJlYW1Db250ZXh0ICpjdHgsIFB1dEJpdENvbnRl eHQgKnBiYywKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgcmFuZ2Vf bWluLCB1aW50MzJfdCByYW5nZV9tYXgpCj4gIHsKPiAgICAgIHVpbnQzMl90IHY7Cj4gLSAgICBp bnQgcG9zaXRpb24sIHplcm9lczsKPiArICAgIGludCB6ZXJvZXM7Cj4gKwo+ICsgICAgQ0JTX1RS QUNFX1dSSVRFX1NUQVJUKCk7Cj4KPiAgICAgIGlmICh2YWx1ZSA8IHJhbmdlX21pbiB8fCB2YWx1 ZSA+IHJhbmdlX21heCkgewo+ICAgICAgICAgIGF2X2xvZyhjdHgtPmxvZ19jdHgsIEFWX0xPR19F UlJPUiwgIiVzIG91dCBvZiByYW5nZTogIgo+IEBAIC0xMTgsMjggKzkyLDE3IEBAIHN0YXRpYyBp bnQgY2JzX2F2MV93cml0ZV91dmxjKENvZGVkQml0c3RyZWFtQ29udGV4dCAqY3R4LCBQdXRCaXRD b250ZXh0ICpwYmMsCj4gICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Cj4gICAg ICB9Cj4KPiAtICAgIGlmIChjdHgtPnRyYWNlX2VuYWJsZSkKPiAtICAgICAgICBwb3NpdGlvbiA9 IHB1dF9iaXRzX2NvdW50KHBiYyk7Cj4gLQo+ICAgICAgemVyb2VzID0gYXZfbG9nMih2YWx1ZSAr IDEpOwo+ICAgICAgdiA9IHZhbHVlIC0gKDFVIDw8IHplcm9lcykgKyAxOwo+ICsKPiArICAgIGlm IChwdXRfYml0c19sZWZ0KHBiYykgPCAyICogemVyb2VzICsgMSkKPiArICAgICAgICByZXR1cm4g QVZFUlJPUihFTk9TUEMpOwo+ICsKPiAgICAgIHB1dF9iaXRzKHBiYywgemVyb2VzLCAwKTsKPiAg ICAgIHB1dF9iaXRzKHBiYywgMSwgMSk7Cj4gICAgICBwdXRfYml0cyhwYmMsIHplcm9lcywgdik7 Cj4KPiAtICAgIGlmIChjdHgtPnRyYWNlX2VuYWJsZSkgewo+IC0gICAgICAgIGNoYXIgYml0c1s2 NV07Cj4gLSAgICAgICAgaW50IGksIGo7Cj4gLSAgICAgICAgaSA9IDA7Cj4gLSAgICAgICAgZm9y IChqID0gMDsgaiA8IHplcm9lczsgaisrKQo+IC0gICAgICAgICAgICBiaXRzW2krK10gPSAnMCc7 Cj4gLSAgICAgICAgYml0c1tpKytdID0gJzEnOwo+IC0gICAgICAgIGZvciAoaiA9IDA7IGogPCB6 ZXJvZXM7IGorKykKPiAtICAgICAgICAgICAgYml0c1tpKytdID0gKHYgPj4gKHplcm9lcyAtIGog LSAxKSAmIDEpID8gJzEnIDogJzAnOwo+IC0gICAgICAgIGJpdHNbaSsrXSA9IDA7Cj4gLSAgICAg ICAgZmZfY2JzX3RyYWNlX3N5bnRheF9lbGVtZW50KGN0eCwgcG9zaXRpb24sIG5hbWUsIE5VTEws Cj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpdHMsIHZhbHVlKTsKPiAt ICAgIH0KPiArICAgIENCU19UUkFDRV9XUklURV9FTkRfTk9fU1VCU0NSSVBUUygpOwo+Cj4gICAg ICByZXR1cm4gMDsKPiAgfQo+IEBAIC0xNDgsMjAgKzExMSwxOSBAQCBzdGF0aWMgaW50IGNic19h djFfcmVhZF9sZWIxMjgoQ29kZWRCaXRzdHJlYW1Db250ZXh0ICpjdHgsIEdldEJpdENvbnRleHQg KmdiYywKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUs IHVpbnQ2NF90ICp3cml0ZV90bykKPiAgewo+ICAgICAgdWludDY0X3QgdmFsdWU7Cj4gLSAgICBp bnQgcG9zaXRpb24sIGVyciwgaTsKPiArICAgIHVpbnQzMl90IGJ5dGU7Cj4gKyAgICBpbnQgaTsK Pgo+IC0gICAgaWYgKGN0eC0+dHJhY2VfZW5hYmxlKQo+IC0gICAgICAgIHBvc2l0aW9uID0gZ2V0 X2JpdHNfY291bnQoZ2JjKTsKPiArICAgIENCU19UUkFDRV9SRUFEX1NUQVJUKCk7Cj4KPiAgICAg IHZhbHVlID0gMDsKPiAgICAgIGZvciAoaSA9IDA7IGkgPCA4OyBpKyspIHsKPiAtICAgICAgICBp bnQgc3Vic2NyaXB0WzJdID0geyAxLCBpIH07Cj4gLSAgICAgICAgdWludDMyX3QgYnl0ZTsKPiAt ICAgICAgICBlcnIgPSBmZl9jYnNfcmVhZF91bnNpZ25lZChjdHgsIGdiYywgOCwgImxlYjEyOF9i eXRlW2ldIiwgc3Vic2NyaXB0LAo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICZieXRlLCAweDAwLCAweGZmKTsKPiAtICAgICAgICBpZiAoZXJyIDwgMCkKPiAtICAgICAgICAg ICAgcmV0dXJuIGVycjsKPiAtCj4gKyAgICAgICAgaWYgKGdldF9iaXRzX2xlZnQoZ2JjKSA8IDgp IHsKPiArICAgICAgICAgICAgYXZfbG9nKGN0eC0+bG9nX2N0eCwgQVZfTE9HX0VSUk9SLCAiSW52 YWxpZCBsZWIxMjggYXQgIgo+ICsgICAgICAgICAgICAgICAgICAgIiVzOiBiaXRzdHJlYW0gZW5k ZWQuXG4iLCBuYW1lKTsKPiArICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7 Cj4gKyAgICAgICAgfQo+ICsgICAgICAgIGJ5dGUgPSBnZXRfYml0cyhnYmMsIDgpOwo+ICAgICAg ICAgIHZhbHVlIHw9ICh1aW50NjRfdCkoYnl0ZSAmIDB4N2YpIDw8IChpICogNyk7Cj4gICAgICAg ICAgaWYgKCEoYnl0ZSAmIDB4ODApKQo+ICAgICAgICAgICAgICBicmVhazsKPiBAQCAtMTcwLDgg KzEzMiw3IEBAIHN0YXRpYyBpbnQgY2JzX2F2MV9yZWFkX2xlYjEyOChDb2RlZEJpdHN0cmVhbUNv bnRleHQgKmN0eCwgR2V0Qml0Q29udGV4dCAqZ2JjLAo+ICAgICAgaWYgKHZhbHVlID4gVUlOVDMy X01BWCkKPiAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKPgo+IC0gICAgaWYg KGN0eC0+dHJhY2VfZW5hYmxlKQo+IC0gICAgICAgIGZmX2Nic190cmFjZV9zeW50YXhfZWxlbWVu dChjdHgsIHBvc2l0aW9uLCBuYW1lLCBOVUxMLCAiIiwgdmFsdWUpOwo+ICsgICAgQ0JTX1RSQUNF X1JFQURfRU5EX05PX1NVQlNDUklQVFMoKTsKPgo+ICAgICAgKndyaXRlX3RvID0gdmFsdWU7Cj4g ICAgICByZXR1cm4gMDsKPiBAQCAtMTgwLDI5ICsxNDEsMjUgQEAgc3RhdGljIGludCBjYnNfYXYx X3JlYWRfbGViMTI4KENvZGVkQml0c3RyZWFtQ29udGV4dCAqY3R4LCBHZXRCaXRDb250ZXh0ICpn YmMsCj4gIHN0YXRpYyBpbnQgY2JzX2F2MV93cml0ZV9sZWIxMjgoQ29kZWRCaXRzdHJlYW1Db250 ZXh0ICpjdHgsIFB1dEJpdENvbnRleHQgKnBiYywKPiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb25zdCBjaGFyICpuYW1lLCB1aW50NjRfdCB2YWx1ZSkKPiAgewo+IC0gICAgaW50 IHBvc2l0aW9uLCBlcnIsIGxlbiwgaTsKPiArICAgIGludCBsZW4sIGk7Cj4gICAgICB1aW50OF90 IGJ5dGU7Cj4KPiAtICAgIGxlbiA9IChhdl9sb2cyKHZhbHVlKSArIDcpIC8gNzsKPiArICAgIENC U19UUkFDRV9XUklURV9TVEFSVCgpOwo+Cj4gLSAgICBpZiAoY3R4LT50cmFjZV9lbmFibGUpCj4g LSAgICAgICAgcG9zaXRpb24gPSBwdXRfYml0c19jb3VudChwYmMpOwo+ICsgICAgbGVuID0gKGF2 X2xvZzIodmFsdWUpICsgNykgLyA3Owo+Cj4gICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKysp IHsKPiAtICAgICAgICBpbnQgc3Vic2NyaXB0WzJdID0geyAxLCBpIH07Cj4gKyAgICAgICAgaWYg KHB1dF9iaXRzX2xlZnQocGJjKSA8IDgpCj4gKyAgICAgICAgICAgIHJldHVybiBBVkVSUk9SKEVO T1NQQyk7Cj4KPiAgICAgICAgICBieXRlID0gdmFsdWUgPj4gKDcgKiBpKSAmIDB4N2Y7Cj4gICAg ICAgICAgaWYgKGkgPCBsZW4gLSAxKQo+ICAgICAgICAgICAgICBieXRlIHw9IDB4ODA7Cj4KPiAt ICAgICAgICBlcnIgPSBmZl9jYnNfd3JpdGVfdW5zaWduZWQoY3R4LCBwYmMsIDgsICJsZWIxMjhf Ynl0ZVtpXSIsIHN1YnNjcmlwdCwKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgYnl0ZSwgMHgwMCwgMHhmZik7Cj4gLSAgICAgICAgaWYgKGVyciA8IDApCj4gLSAgICAgICAg ICAgIHJldHVybiBlcnI7Cj4gKyAgICAgICAgcHV0X2JpdHMocGJjLCA4LCBieXRlKTsKPiAgICAg IH0KPgo+IC0gICAgaWYgKGN0eC0+dHJhY2VfZW5hYmxlKQo+IC0gICAgICAgIGZmX2Nic190cmFj ZV9zeW50YXhfZWxlbWVudChjdHgsIHBvc2l0aW9uLCBuYW1lLCBOVUxMLCAiIiwgdmFsdWUpOwo+ ICsgICAgQ0JTX1RSQUNFX1dSSVRFX0VORF9OT19TVUJTQ1JJUFRTKCk7Cj4KPiAgICAgIHJldHVy biAwOwo+ICB9Cj4gQEAgLTIxMiwxMiArMTY5LDExIEBAIHN0YXRpYyBpbnQgY2JzX2F2MV9yZWFk X25zKENvZGVkQml0c3RyZWFtQ29udGV4dCAqY3R4LCBHZXRCaXRDb250ZXh0ICpnYmMsCj4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludCAqc3Vic2NyaXB0cywgdWludDMyX3Qg KndyaXRlX3RvKQo+ICB7Cj4gICAgICB1aW50MzJfdCBtLCB2LCBleHRyYV9iaXQsIHZhbHVlOwo+ IC0gICAgaW50IHBvc2l0aW9uLCB3Owo+ICsgICAgaW50IHc7Cj4KPiAtICAgIGF2X2Fzc2VydDAo biA+IDApOwo+ICsgICAgQ0JTX1RSQUNFX1JFQURfU1RBUlQoKTsKPgo+IC0gICAgaWYgKGN0eC0+ dHJhY2VfZW5hYmxlKQo+IC0gICAgICAgIHBvc2l0aW9uID0gZ2V0X2JpdHNfY291bnQoZ2JjKTsK PiArICAgIGF2X2Fzc2VydDAobiA+IDApOwo+Cj4gICAgICB3ID0gYXZfbG9nMihuKSArIDE7Cj4g ICAgICBtID0gKDEgPDwgdykgLSBuOwo+IEBAIC0yNDAsMTggKzE5Niw3IEBAIHN0YXRpYyBpbnQg Y2JzX2F2MV9yZWFkX25zKENvZGVkQml0c3RyZWFtQ29udGV4dCAqY3R4LCBHZXRCaXRDb250ZXh0 ICpnYmMsCj4gICAgICAgICAgdmFsdWUgPSAodiA8PCAxKSAtIG0gKyBleHRyYV9iaXQ7Cj4gICAg ICB9Cj4KPiAtICAgIGlmIChjdHgtPnRyYWNlX2VuYWJsZSkgewo+IC0gICAgICAgIGNoYXIgYml0 c1szM107Cj4gLSAgICAgICAgaW50IGk7Cj4gLSAgICAgICAgZm9yIChpID0gMDsgaSA8IHcgLSAx OyBpKyspCj4gLSAgICAgICAgICAgIGJpdHNbaV0gPSAodiA+PiBpICYgMSkgPyAnMScgOiAnMCc7 Cj4gLSAgICAgICAgaWYgKHYgPj0gbSkKPiAtICAgICAgICAgICAgYml0c1tpKytdID0gZXh0cmFf Yml0ID8gJzEnIDogJzAnOwo+IC0gICAgICAgIGJpdHNbaV0gPSAwOwo+IC0KPiAtICAgICAgICBm Zl9jYnNfdHJhY2Vfc3ludGF4X2VsZW1lbnQoY3R4LCBwb3NpdGlvbiwKPiAtICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSwgc3Vic2NyaXB0cywgYml0cywgdmFsdWUpOwo+ IC0gICAgfQo+ICsgICAgQ0JTX1RSQUNFX1JFQURfRU5EKCk7Cj4KPiAgICAgICp3cml0ZV90byA9 IHZhbHVlOwo+ICAgICAgcmV0dXJuIDA7Cj4gQEAgLTI2Miw3ICsyMDcsOCBAQCBzdGF0aWMgaW50 IGNic19hdjFfd3JpdGVfbnMoQ29kZWRCaXRzdHJlYW1Db250ZXh0ICpjdHgsIFB1dEJpdENvbnRl eHQgKnBiYywKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludCAqc3Vic2Ny aXB0cywgdWludDMyX3QgdmFsdWUpCj4gIHsKPiAgICAgIHVpbnQzMl90IHcsIG0sIHYsIGV4dHJh X2JpdDsKPiAtICAgIGludCBwb3NpdGlvbjsKPiArCj4gKyAgICBDQlNfVFJBQ0VfV1JJVEVfU1RB UlQoKTsKPgo+ICAgICAgaWYgKHZhbHVlID4gbikgewo+ICAgICAgICAgIGF2X2xvZyhjdHgtPmxv Z19jdHgsIEFWX0xPR19FUlJPUiwgIiVzIG91dCBvZiByYW5nZTogIgo+IEBAIC0yNzEsOSArMjE3 LDYgQEAgc3RhdGljIGludCBjYnNfYXYxX3dyaXRlX25zKENvZGVkQml0c3RyZWFtQ29udGV4dCAq Y3R4LCBQdXRCaXRDb250ZXh0ICpwYmMsCj4gICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJ RERBVEE7Cj4gICAgICB9Cj4KPiAtICAgIGlmIChjdHgtPnRyYWNlX2VuYWJsZSkKPiAtICAgICAg ICBwb3NpdGlvbiA9IHB1dF9iaXRzX2NvdW50KHBiYyk7Cj4gLQo+ICAgICAgdyA9IGF2X2xvZzIo bikgKyAxOwo+ICAgICAgbSA9ICgxIDw8IHcpIC0gbjsKPgo+IEBAIC0yOTAsMTggKzIzMyw3IEBA IHN0YXRpYyBpbnQgY2JzX2F2MV93cml0ZV9ucyhDb2RlZEJpdHN0cmVhbUNvbnRleHQgKmN0eCwg UHV0Qml0Q29udGV4dCAqcGJjLAo+ICAgICAgICAgIHB1dF9iaXRzKHBiYywgMSwgZXh0cmFfYml0 KTsKPiAgICAgIH0KPgo+IC0gICAgaWYgKGN0eC0+dHJhY2VfZW5hYmxlKSB7Cj4gLSAgICAgICAg Y2hhciBiaXRzWzMzXTsKPiAtICAgICAgICBpbnQgaTsKPiAtICAgICAgICBmb3IgKGkgPSAwOyBp IDwgdyAtIDE7IGkrKykKPiAtICAgICAgICAgICAgYml0c1tpXSA9ICh2ID4+IGkgJiAxKSA/ICcx JyA6ICcwJzsKPiAtICAgICAgICBpZiAodmFsdWUgPj0gbSkKPiAtICAgICAgICAgICAgYml0c1tp KytdID0gZXh0cmFfYml0ID8gJzEnIDogJzAnOwo+IC0gICAgICAgIGJpdHNbaV0gPSAwOwo+IC0K PiAtICAgICAgICBmZl9jYnNfdHJhY2Vfc3ludGF4X2VsZW1lbnQoY3R4LCBwb3NpdGlvbiwKPiAt ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSwgc3Vic2NyaXB0cywgYml0 cywgdmFsdWUpOwo+IC0gICAgfQo+ICsgICAgQ0JTX1RSQUNFX1dSSVRFX0VORCgpOwo+Cj4gICAg ICByZXR1cm4gMDsKPiAgfQo+IEBAIC0zMTEsMzMgKzI0MywyNCBAQCBzdGF0aWMgaW50IGNic19h djFfcmVhZF9pbmNyZW1lbnQoQ29kZWRCaXRzdHJlYW1Db250ZXh0ICpjdHgsIEdldEJpdENvbnRl eHQgKmdiYwo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAq bmFtZSwgdWludDMyX3QgKndyaXRlX3RvKQo+ICB7Cj4gICAgICB1aW50MzJfdCB2YWx1ZTsKPiAt ICAgIGludCBwb3NpdGlvbiwgaTsKPiAtICAgIGNoYXIgYml0c1szM107Cj4KPiAtICAgIGF2X2Fz c2VydDAocmFuZ2VfbWluIDw9IHJhbmdlX21heCAmJiByYW5nZV9tYXggLSByYW5nZV9taW4gPCBz aXplb2YoYml0cykgLSAxKTsKPiAtICAgIGlmIChjdHgtPnRyYWNlX2VuYWJsZSkKPiAtICAgICAg ICBwb3NpdGlvbiA9IGdldF9iaXRzX2NvdW50KGdiYyk7Cj4gKyAgICBDQlNfVFJBQ0VfUkVBRF9T VEFSVCgpOwo+Cj4gLSAgICBmb3IgKGkgPSAwLCB2YWx1ZSA9IHJhbmdlX21pbjsgdmFsdWUgPCBy YW5nZV9tYXg7KSB7Cj4gKyAgICBhdl9hc3NlcnQwKHJhbmdlX21pbiA8PSByYW5nZV9tYXggJiYg cmFuZ2VfbWF4IC0gcmFuZ2VfbWluIDwgMzIpOwo+ICsKPiArICAgIGZvciAodmFsdWUgPSByYW5n ZV9taW47IHZhbHVlIDwgcmFuZ2VfbWF4Oykgewo+ICAgICAgICAgIGlmIChnZXRfYml0c19sZWZ0 KGdiYykgPCAxKSB7Cj4gICAgICAgICAgICAgIGF2X2xvZyhjdHgtPmxvZ19jdHgsIEFWX0xPR19F UlJPUiwgIkludmFsaWQgaW5jcmVtZW50IHZhbHVlIGF0ICIKPiAgICAgICAgICAgICAgICAgICAg ICIlczogYml0c3RyZWFtIGVuZGVkLlxuIiwgbmFtZSk7Cj4gICAgICAgICAgICAgIHJldHVybiBB VkVSUk9SX0lOVkFMSUREQVRBOwo+ICAgICAgICAgIH0KPiAtICAgICAgICBpZiAoZ2V0X2JpdHMx KGdiYykpIHsKPiAtICAgICAgICAgICAgYml0c1tpKytdID0gJzEnOwo+ICsgICAgICAgIGlmIChn ZXRfYml0czEoZ2JjKSkKPiAgICAgICAgICAgICAgKyt2YWx1ZTsKPiAtICAgICAgICB9IGVsc2Ug ewo+IC0gICAgICAgICAgICBiaXRzW2krK10gPSAnMCc7Cj4gKyAgICAgICAgZWxzZQo+ICAgICAg ICAgICAgICBicmVhazsKPiAtICAgICAgICB9Cj4gICAgICB9Cj4KPiAtICAgIGlmIChjdHgtPnRy YWNlX2VuYWJsZSkgewo+IC0gICAgICAgIGJpdHNbaV0gPSAwOwo+IC0gICAgICAgIGZmX2Nic190 cmFjZV9zeW50YXhfZWxlbWVudChjdHgsIHBvc2l0aW9uLAo+IC0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBuYW1lLCBOVUxMLCBiaXRzLCB2YWx1ZSk7Cj4gLSAgICB9Cj4gKyAg ICBDQlNfVFJBQ0VfUkVBRF9FTkRfTk9fU1VCU0NSSVBUUygpOwo+Cj4gICAgICAqd3JpdGVfdG8g PSB2YWx1ZTsKPiAgICAgIHJldHVybiAwOwo+IEBAIC0zNDksNiArMjcyLDggQEAgc3RhdGljIGlu dCBjYnNfYXYxX3dyaXRlX2luY3JlbWVudChDb2RlZEJpdHN0cmVhbUNvbnRleHQgKmN0eCwgUHV0 Qml0Q29udGV4dCAqcGIKPiAgewo+ICAgICAgaW50IGxlbjsKPgo+ICsgICAgQ0JTX1RSQUNFX1dS SVRFX1NUQVJUKCk7Cj4gKwo+ICAgICAgYXZfYXNzZXJ0MChyYW5nZV9taW4gPD0gcmFuZ2VfbWF4 ICYmIHJhbmdlX21heCAtIHJhbmdlX21pbiA8IDMyKTsKPiAgICAgIGlmICh2YWx1ZSA8IHJhbmdl X21pbiB8fCB2YWx1ZSA+IHJhbmdlX21heCkgewo+ICAgICAgICAgIGF2X2xvZyhjdHgtPmxvZ19j dHgsIEFWX0xPR19FUlJPUiwgIiVzIG91dCBvZiByYW5nZTogIgo+IEBAIC0zNjQsMjMgKzI4OSwx MSBAQCBzdGF0aWMgaW50IGNic19hdjFfd3JpdGVfaW5jcmVtZW50KENvZGVkQml0c3RyZWFtQ29u dGV4dCAqY3R4LCBQdXRCaXRDb250ZXh0ICpwYgo+ICAgICAgaWYgKHB1dF9iaXRzX2xlZnQocGJj KSA8IGxlbikKPiAgICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9TUEMpOwo+Cj4gLSAgICBpZiAo Y3R4LT50cmFjZV9lbmFibGUpIHsKPiAtICAgICAgICBjaGFyIGJpdHNbMzNdOwo+IC0gICAgICAg IGludCBpOwo+IC0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgewo+IC0gICAgICAg ICAgICBpZiAocmFuZ2VfbWluICsgaSA9PSB2YWx1ZSkKPiAtICAgICAgICAgICAgICAgIGJpdHNb aV0gPSAnMCc7Cj4gLSAgICAgICAgICAgIGVsc2UKPiAtICAgICAgICAgICAgICAgIGJpdHNbaV0g PSAnMSc7Cj4gLSAgICAgICAgfQo+IC0gICAgICAgIGJpdHNbaV0gPSAwOwo+IC0gICAgICAgIGZm X2Nic190cmFjZV9zeW50YXhfZWxlbWVudChjdHgsIHB1dF9iaXRzX2NvdW50KHBiYyksCj4gLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUsIE5VTEwsIGJpdHMsIHZhbHVl KTsKPiAtICAgIH0KPiAtCj4gICAgICBpZiAobGVuID4gMCkKPiAgICAgICAgICBwdXRfYml0cyhw YmMsIGxlbiwgKDEgPDwgbGVuKSAtIDEgLSAodmFsdWUgIT0gcmFuZ2VfbWF4KSk7Cj4KPiArICAg IENCU19UUkFDRV9XUklURV9FTkRfTk9fU1VCU0NSSVBUUygpOwo+ICsKPiAgICAgIHJldHVybiAw Owo+ICB9Cj4KPiBAQCAtMzg4LDEyICszMDEsMTAgQEAgc3RhdGljIGludCBjYnNfYXYxX3JlYWRf c3ViZXhwKENvZGVkQml0c3RyZWFtQ29udGV4dCAqY3R4LCBHZXRCaXRDb250ZXh0ICpnYmMsCj4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCByYW5nZV9tYXgsIGNvbnN0 IGNoYXIgKm5hbWUsCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQg KnN1YnNjcmlwdHMsIHVpbnQzMl90ICp3cml0ZV90bykKPiAgewo+IC0gICAgdWludDMyX3QgdmFs dWU7Cj4gLSAgICBpbnQgcG9zaXRpb24sIGVycjsKPiAtICAgIHVpbnQzMl90IG1heF9sZW4sIGxl biwgcmFuZ2Vfb2Zmc2V0LCByYW5nZV9iaXRzOwo+ICsgICAgdWludDMyX3QgdmFsdWUsIG1heF9s ZW4sIGxlbiwgcmFuZ2Vfb2Zmc2V0LCByYW5nZV9iaXRzOwo+ICsgICAgaW50IGVycjsKPgo+IC0g ICAgaWYgKGN0eC0+dHJhY2VfZW5hYmxlKQo+IC0gICAgICAgIHBvc2l0aW9uID0gZ2V0X2JpdHNf Y291bnQoZ2JjKTsKPiArICAgIENCU19UUkFDRV9SRUFEX1NUQVJUKCk7Cj4KPiAgICAgIGF2X2Fz c2VydDAocmFuZ2VfbWF4ID4gMCk7Cj4gICAgICBtYXhfbGVuID0gYXZfbG9nMihyYW5nZV9tYXgg LSAxKSAtIDM7Cj4gQEAgLTQyNSw5ICszMzYsNyBAQCBzdGF0aWMgaW50IGNic19hdjFfcmVhZF9z dWJleHAoQ29kZWRCaXRzdHJlYW1Db250ZXh0ICpjdHgsIEdldEJpdENvbnRleHQgKmdiYywKPiAg ICAgIH0KPiAgICAgIHZhbHVlICs9IHJhbmdlX29mZnNldDsKPgo+IC0gICAgaWYgKGN0eC0+dHJh Y2VfZW5hYmxlKQo+IC0gICAgICAgIGZmX2Nic190cmFjZV9zeW50YXhfZWxlbWVudChjdHgsIHBv c2l0aW9uLAo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lLCBzdWJz Y3JpcHRzLCAiIiwgdmFsdWUpOwo+ICsgICAgQ0JTX1RSQUNFX1JFQURfRU5EX1ZBTFVFX09OTFko KTsKPgo+ICAgICAgKndyaXRlX3RvID0gdmFsdWU7Cj4gICAgICByZXR1cm4gZXJyOwo+IEBAIC00 MzcsOSArMzQ2LDExIEBAIHN0YXRpYyBpbnQgY2JzX2F2MV93cml0ZV9zdWJleHAoQ29kZWRCaXRz dHJlYW1Db250ZXh0ICpjdHgsIFB1dEJpdENvbnRleHQgKnBiYywKPiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB1aW50MzJfdCByYW5nZV9tYXgsIGNvbnN0IGNoYXIgKm5hbWUsCj4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50ICpzdWJzY3JpcHRzLCB1 aW50MzJfdCB2YWx1ZSkKPiAgewo+IC0gICAgaW50IHBvc2l0aW9uLCBlcnI7Cj4gKyAgICBpbnQg ZXJyOwo+ICAgICAgdWludDMyX3QgbWF4X2xlbiwgbGVuLCByYW5nZV9vZmZzZXQsIHJhbmdlX2Jp dHM7Cj4KPiArICAgIENCU19UUkFDRV9XUklURV9TVEFSVCgpOwo+ICsKPiAgICAgIGlmICh2YWx1 ZSA+IHJhbmdlX21heCkgewo+ICAgICAgICAgIGF2X2xvZyhjdHgtPmxvZ19jdHgsIEFWX0xPR19F UlJPUiwgIiVzIG91dCBvZiByYW5nZTogIgo+ICAgICAgICAgICAgICAgICAiJSJQUkl1MzIiLCBi dXQgbXVzdCBiZSBpbiBbMCwlIlBSSXUzMiJdLlxuIiwKPiBAQCAtNDQ3LDkgKzM1OCw2IEBAIHN0 YXRpYyBpbnQgY2JzX2F2MV93cml0ZV9zdWJleHAoQ29kZWRCaXRzdHJlYW1Db250ZXh0ICpjdHgs IFB1dEJpdENvbnRleHQgKnBiYywKPiAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFU QTsKPiAgICAgIH0KPgo+IC0gICAgaWYgKGN0eC0+dHJhY2VfZW5hYmxlKQo+IC0gICAgICAgIHBv c2l0aW9uID0gcHV0X2JpdHNfY291bnQocGJjKTsKPiAtCj4gICAgICBhdl9hc3NlcnQwKHJhbmdl X21heCA+IDApOwo+ICAgICAgbWF4X2xlbiA9IGF2X2xvZzIocmFuZ2VfbWF4IC0gMSkgLSAzOwo+ Cj4gQEAgLTQ4OSw5ICszOTcsNyBAQCBzdGF0aWMgaW50IGNic19hdjFfd3JpdGVfc3ViZXhwKENv ZGVkQml0c3RyZWFtQ29udGV4dCAqY3R4LCBQdXRCaXRDb250ZXh0ICpwYmMsCj4gICAgICAgICAg ICAgIHJldHVybiBlcnI7Cj4gICAgICB9Cj4KPiAtICAgIGlmIChjdHgtPnRyYWNlX2VuYWJsZSkK PiAtICAgICAgICBmZl9jYnNfdHJhY2Vfc3ludGF4X2VsZW1lbnQoY3R4LCBwb3NpdGlvbiwKPiAt ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSwgc3Vic2NyaXB0cywgIiIs IHZhbHVlKTsKPiArICAgIENCU19UUkFDRV9XUklURV9FTkRfVkFMVUVfT05MWSgpOwo+Cj4gICAg ICByZXR1cm4gZXJyOwo+ICB9Cj4gZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvY2JzX2JzZi5jIGIv bGliYXZjb2RlYy9jYnNfYnNmLmMKPiBpbmRleCAwNjlmNmU5OTE4Li5iMjUyODU0ODNiIDEwMDY0 NAo+IC0tLSBhL2xpYmF2Y29kZWMvY2JzX2JzZi5jCj4gKysrIGIvbGliYXZjb2RlYy9jYnNfYnNm LmMKPiBAQCAtMTIzLDYgKzEyMywxMSBAQCBpbnQgZmZfY2JzX2JzZl9nZW5lcmljX2luaXQoQVZC U0ZDb250ZXh0ICpic2YsIGNvbnN0IENCU0JTRlR5cGUgKnR5cGUpCj4gICAgICBpZiAoZXJyIDwg MCkKPiAgICAgICAgICByZXR1cm4gZXJyOwo+Cj4gKyAgICBjdHgtPm91dHB1dC0+dHJhY2VfZW5h YmxlID0gMTsKPiArICAgIGN0eC0+b3V0cHV0LT50cmFjZV9sZXZlbCAgPSBBVl9MT0dfVFJBQ0U7 Cj4gKyAgICBjdHgtPm91dHB1dC0+dHJhY2VfY29udGV4dCA9IGN0eC0+b3V0cHV0Owo+ICsgICAg Y3R4LT5vdXRwdXQtPnRyYWNlX3dyaXRlX2NhbGxiYWNrID0gZmZfY2JzX3RyYWNlX3dyaXRlX2xv ZzsKPiArCj4gICAgICBpZiAoYnNmLT5wYXJfaW4tPmV4dHJhZGF0YSkgewo+ICAgICAgICAgIGVy ciA9IGZmX2Nic19yZWFkX2V4dHJhZGF0YShjdHgtPmlucHV0LCBmcmFnLCBic2YtPnBhcl9pbik7 Cj4gICAgICAgICAgaWYgKGVyciA8IDApIHsKPiBkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9jYnNf aDI2NDUuYyBiL2xpYmF2Y29kZWMvY2JzX2gyNjQ1LmMKPiBpbmRleCAzMThjOTk3ZDk0Li4wYTFj OGVhNDI2IDEwMDY0NAo+IC0tLSBhL2xpYmF2Y29kZWMvY2JzX2gyNjQ1LmMKPiArKysgYi9saWJh dmNvZGVjL2Nic19oMjY0NS5jCj4gQEAgLTM2LDQxICszNiwzOCBAQCBzdGF0aWMgaW50IGNic19y ZWFkX3VlX2dvbG9tYihDb2RlZEJpdHN0cmVhbUNvbnRleHQgKmN0eCwgR2V0Qml0Q29udGV4dCAq Z2JjLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCAqd3JpdGVfdG8s Cj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHJhbmdlX21pbiwgdWlu dDMyX3QgcmFuZ2VfbWF4KQo+ICB7Cj4gLSAgICB1aW50MzJfdCB2YWx1ZTsKPiAtICAgIGludCBw b3NpdGlvbiwgaSwgajsKPiAtICAgIHVuc2lnbmVkIGludCBrOwo+IC0gICAgY2hhciBiaXRzWzY1 XTsKPiArICAgIHVpbnQzMl90IGxlYWRpbmdfYml0cywgdmFsdWU7Cj4gKyAgICBpbnQgbWF4X2xl bmd0aCwgbGVhZGluZ196ZXJvZXM7Cj4KPiAtICAgIHBvc2l0aW9uID0gZ2V0X2JpdHNfY291bnQo Z2JjKTsKPiArICAgIENCU19UUkFDRV9SRUFEX1NUQVJUKCk7Cj4KPiAtICAgIGZvciAoaSA9IDA7 IGkgPCAzMjsgaSsrKSB7Cj4gLSAgICAgICAgaWYgKGdldF9iaXRzX2xlZnQoZ2JjKSA8IGkgKyAx KSB7Cj4gKyAgICBtYXhfbGVuZ3RoID0gRkZNSU4oZ2V0X2JpdHNfbGVmdChnYmMpLCAzMik7Cj4g Kwo+ICsgICAgbGVhZGluZ19iaXRzID0gc2hvd19iaXRzX2xvbmcoZ2JjLCBtYXhfbGVuZ3RoKTsK PiArICAgIGlmIChsZWFkaW5nX2JpdHMgPT0gMCkgewo+ICsgICAgICAgIGlmIChtYXhfbGVuZ3Ro ID49IDMyKSB7Cj4gKyAgICAgICAgICAgIGF2X2xvZyhjdHgtPmxvZ19jdHgsIEFWX0xPR19FUlJP UiwgIkludmFsaWQgdWUtZ29sb21iIGNvZGUgYXQgIgo+ICsgICAgICAgICAgICAgICAgICAgIiVz OiBtb3JlIHRoYW4gMzEgemVyb2VzLlxuIiwgbmFtZSk7Cj4gKyAgICAgICAgICAgIHJldHVybiBB VkVSUk9SX0lOVkFMSUREQVRBOwo+ICsgICAgICAgIH0gZWxzZSB7Cj4gICAgICAgICAgICAgIGF2 X2xvZyhjdHgtPmxvZ19jdHgsIEFWX0xPR19FUlJPUiwgIkludmFsaWQgdWUtZ29sb21iIGNvZGUg YXQgIgo+ICAgICAgICAgICAgICAgICAgICAgIiVzOiBiaXRzdHJlYW0gZW5kZWQuXG4iLCBuYW1l KTsKPiAgICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Cj4gICAgICAgICAg fQo+IC0gICAgICAgIGsgPSBnZXRfYml0czEoZ2JjKTsKPiAtICAgICAgICBiaXRzW2ldID0gayA/ ICcxJyA6ICcwJzsKPiAtICAgICAgICBpZiAoaykKPiAtICAgICAgICAgICAgYnJlYWs7Cj4gICAg ICB9Cj4gLSAgICBpZiAoaSA+PSAzMikgewo+ICsKPiArICAgIGxlYWRpbmdfemVyb2VzID0gbWF4 X2xlbmd0aCAtIDEgLSBhdl9sb2cyKGxlYWRpbmdfYml0cyk7Cj4gKyAgICBza2lwX2JpdHNfbG9u ZyhnYmMsIGxlYWRpbmdfemVyb2VzKTsKPiArCj4gKyAgICBpZiAoZ2V0X2JpdHNfbGVmdChnYmMp IDwgbGVhZGluZ196ZXJvZXMgKyAxKSB7Cj4gICAgICAgICAgYXZfbG9nKGN0eC0+bG9nX2N0eCwg QVZfTE9HX0VSUk9SLCAiSW52YWxpZCB1ZS1nb2xvbWIgY29kZSBhdCAiCj4gLSAgICAgICAgICAg ICAgICIlczogbW9yZSB0aGFuIDMxIHplcm9lcy5cbiIsIG5hbWUpOwo+ICsgICAgICAgICAgICAg ICAiJXM6IGJpdHN0cmVhbSBlbmRlZC5cbiIsIG5hbWUpOwo+ICAgICAgICAgIHJldHVybiBBVkVS Uk9SX0lOVkFMSUREQVRBOwo+ICAgICAgfQo+IC0gICAgdmFsdWUgPSAxOwo+IC0gICAgZm9yIChq ID0gMDsgaiA8IGk7IGorKykgewo+IC0gICAgICAgIGsgPSBnZXRfYml0czEoZ2JjKTsKPiAtICAg ICAgICBiaXRzW2kgKyBqICsgMV0gPSBrID8gJzEnIDogJzAnOwo+IC0gICAgICAgIHZhbHVlID0g dmFsdWUgPDwgMSB8IGs7Cj4gLSAgICB9Cj4gLSAgICBiaXRzW2kgKyBqICsgMV0gPSAwOwo+IC0g ICAgLS12YWx1ZTsKPgo+IC0gICAgaWYgKGN0eC0+dHJhY2VfZW5hYmxlKQo+IC0gICAgICAgIGZm X2Nic190cmFjZV9zeW50YXhfZWxlbWVudChjdHgsIHBvc2l0aW9uLCBuYW1lLCBzdWJzY3JpcHRz LAo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaXRzLCB2YWx1ZSk7Cj4g KyAgICB2YWx1ZSA9IGdldF9iaXRzX2xvbmcoZ2JjLCBsZWFkaW5nX3plcm9lcyArIDEpIC0gMTsK PiArCj4gKyAgICBDQlNfVFJBQ0VfUkVBRF9FTkQoKTsKPgo+ICAgICAgaWYgKHZhbHVlIDwgcmFu Z2VfbWluIHx8IHZhbHVlID4gcmFuZ2VfbWF4KSB7Cj4gICAgICAgICAgYXZfbG9nKGN0eC0+bG9n X2N0eCwgQVZfTE9HX0VSUk9SLCAiJXMgb3V0IG9mIHJhbmdlOiAiCj4gQEAgLTg4LDQ1ICs4NSw0 NCBAQCBzdGF0aWMgaW50IGNic19yZWFkX3NlX2dvbG9tYihDb2RlZEJpdHN0cmVhbUNvbnRleHQg KmN0eCwgR2V0Qml0Q29udGV4dCAqZ2JjLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBpbnQzMl90ICp3cml0ZV90bywKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50 MzJfdCByYW5nZV9taW4sIGludDMyX3QgcmFuZ2VfbWF4KQo+ICB7Cj4gKyAgICB1aW50MzJfdCBs ZWFkaW5nX2JpdHMsIHVuc2lnbmVkX3ZhbHVlOwo+ICsgICAgaW50IG1heF9sZW5ndGgsIGxlYWRp bmdfemVyb2VzOwo+ICAgICAgaW50MzJfdCB2YWx1ZTsKPiAtICAgIGludCBwb3NpdGlvbiwgaSwg ajsKPiAtICAgIHVuc2lnbmVkIGludCBrOwo+IC0gICAgdWludDMyX3QgdjsKPiAtICAgIGNoYXIg Yml0c1s2NV07Cj4KPiAtICAgIHBvc2l0aW9uID0gZ2V0X2JpdHNfY291bnQoZ2JjKTsKPiArICAg IENCU19UUkFDRV9SRUFEX1NUQVJUKCk7Cj4KPiAtICAgIGZvciAoaSA9IDA7IGkgPCAzMjsgaSsr KSB7Cj4gLSAgICAgICAgaWYgKGdldF9iaXRzX2xlZnQoZ2JjKSA8IGkgKyAxKSB7Cj4gKyAgICBt YXhfbGVuZ3RoID0gRkZNSU4oZ2V0X2JpdHNfbGVmdChnYmMpLCAzMik7Cj4gKwo+ICsgICAgbGVh ZGluZ19iaXRzID0gc2hvd19iaXRzX2xvbmcoZ2JjLCBtYXhfbGVuZ3RoKTsKPiArICAgIGlmIChs ZWFkaW5nX2JpdHMgPT0gMCkgewo+ICsgICAgICAgIGlmIChtYXhfbGVuZ3RoID49IDMyKSB7Cj4g KyAgICAgICAgICAgIGF2X2xvZyhjdHgtPmxvZ19jdHgsIEFWX0xPR19FUlJPUiwgIkludmFsaWQg c2UtZ29sb21iIGNvZGUgYXQgIgo+ICsgICAgICAgICAgICAgICAgICAgIiVzOiBtb3JlIHRoYW4g MzEgemVyb2VzLlxuIiwgbmFtZSk7Cj4gKyAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFM SUREQVRBOwo+ICsgICAgICAgIH0gZWxzZSB7Cj4gICAgICAgICAgICAgIGF2X2xvZyhjdHgtPmxv Z19jdHgsIEFWX0xPR19FUlJPUiwgIkludmFsaWQgc2UtZ29sb21iIGNvZGUgYXQgIgo+ICAgICAg ICAgICAgICAgICAgICAgIiVzOiBiaXRzdHJlYW0gZW5kZWQuXG4iLCBuYW1lKTsKPiAgICAgICAg ICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Cj4gICAgICAgICAgfQo+IC0gICAgICAg IGsgPSBnZXRfYml0czEoZ2JjKTsKPiAtICAgICAgICBiaXRzW2ldID0gayA/ICcxJyA6ICcwJzsK PiAtICAgICAgICBpZiAoaykKPiAtICAgICAgICAgICAgYnJlYWs7Cj4gICAgICB9Cj4gLSAgICBp ZiAoaSA+PSAzMikgewo+ICsKPiArICAgIGxlYWRpbmdfemVyb2VzID0gbWF4X2xlbmd0aCAtIDEg LSBhdl9sb2cyKGxlYWRpbmdfYml0cyk7Cj4gKyAgICBza2lwX2JpdHNfbG9uZyhnYmMsIGxlYWRp bmdfemVyb2VzKTsKPiArCj4gKyAgICBpZiAoZ2V0X2JpdHNfbGVmdChnYmMpIDwgbGVhZGluZ196 ZXJvZXMgKyAxKSB7Cj4gICAgICAgICAgYXZfbG9nKGN0eC0+bG9nX2N0eCwgQVZfTE9HX0VSUk9S LCAiSW52YWxpZCBzZS1nb2xvbWIgY29kZSBhdCAiCj4gLSAgICAgICAgICAgICAgICIlczogbW9y ZSB0aGFuIDMxIHplcm9lcy5cbiIsIG5hbWUpOwo+ICsgICAgICAgICAgICAgICAiJXM6IGJpdHN0 cmVhbSBlbmRlZC5cbiIsIG5hbWUpOwo+ICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSURE QVRBOwo+ICAgICAgfQo+IC0gICAgdiA9IDE7Cj4gLSAgICBmb3IgKGogPSAwOyBqIDwgaTsgaisr KSB7Cj4gLSAgICAgICAgayA9IGdldF9iaXRzMShnYmMpOwo+IC0gICAgICAgIGJpdHNbaSArIGog KyAxXSA9IGsgPyAnMScgOiAnMCc7Cj4gLSAgICAgICAgdiA9IHYgPDwgMSB8IGs7Cj4gLSAgICB9 Cj4gLSAgICBiaXRzW2kgKyBqICsgMV0gPSAwOwo+IC0gICAgaWYgKHYgJiAxKQo+IC0gICAgICAg IHZhbHVlID0gLShpbnQzMl90KSh2IC8gMik7Cj4gKwo+ICsgICAgdW5zaWduZWRfdmFsdWUgPSBn ZXRfYml0c19sb25nKGdiYywgbGVhZGluZ196ZXJvZXMgKyAxKTsKPiArCj4gKyAgICBpZiAodW5z aWduZWRfdmFsdWUgJiAxKQo+ICsgICAgICAgIHZhbHVlID0gLShpbnQzMl90KSh1bnNpZ25lZF92 YWx1ZSAvIDIpOwo+ICAgICAgZWxzZQo+IC0gICAgICAgIHZhbHVlID0gdiAvIDI7Cj4gKyAgICAg ICAgdmFsdWUgPSB1bnNpZ25lZF92YWx1ZSAvIDI7Cj4KPiAtICAgIGlmIChjdHgtPnRyYWNlX2Vu YWJsZSkKPiAtICAgICAgICBmZl9jYnNfdHJhY2Vfc3ludGF4X2VsZW1lbnQoY3R4LCBwb3NpdGlv biwgbmFtZSwgc3Vic2NyaXB0cywKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgYml0cywgdmFsdWUpOwo+ICsgICAgQ0JTX1RSQUNFX1JFQURfRU5EKCk7Cj4KPiAgICAgIGlm ICh2YWx1ZSA8IHJhbmdlX21pbiB8fCB2YWx1ZSA+IHJhbmdlX21heCkgewo+ICAgICAgICAgIGF2 X2xvZyhjdHgtPmxvZ19jdHgsIEFWX0xPR19FUlJPUiwgIiVzIG91dCBvZiByYW5nZTogIgo+IEBA IC0xNDYsNiArMTQyLDggQEAgc3RhdGljIGludCBjYnNfd3JpdGVfdWVfZ29sb21iKENvZGVkQml0 c3RyZWFtQ29udGV4dCAqY3R4LCBQdXRCaXRDb250ZXh0ICpwYmMsCj4gIHsKPiAgICAgIGludCBs ZW47Cj4KPiArICAgIENCU19UUkFDRV9XUklURV9TVEFSVCgpOwo+ICsKPiAgICAgIGlmICh2YWx1 ZSA8IHJhbmdlX21pbiB8fCB2YWx1ZSA+IHJhbmdlX21heCkgewo+ICAgICAgICAgIGF2X2xvZyhj dHgtPmxvZ19jdHgsIEFWX0xPR19FUlJPUiwgIiVzIG91dCBvZiByYW5nZTogIgo+ICAgICAgICAg ICAgICAgICAiJSJQUkl1MzIiLCBidXQgbXVzdCBiZSBpbiBbJSJQUkl1MzIiLCUiUFJJdTMyIl0u XG4iLAo+IEBAIC0xNTgsMjcgKzE1NiwxNCBAQCBzdGF0aWMgaW50IGNic193cml0ZV91ZV9nb2xv bWIoQ29kZWRCaXRzdHJlYW1Db250ZXh0ICpjdHgsIFB1dEJpdENvbnRleHQgKnBiYywKPiAgICAg IGlmIChwdXRfYml0c19sZWZ0KHBiYykgPCAyICogbGVuICsgMSkKPiAgICAgICAgICByZXR1cm4g QVZFUlJPUihFTk9TUEMpOwo+Cj4gLSAgICBpZiAoY3R4LT50cmFjZV9lbmFibGUpIHsKPiAtICAg ICAgICBjaGFyIGJpdHNbNjVdOwo+IC0gICAgICAgIGludCBpOwo+IC0KPiAtICAgICAgICBmb3Ig KGkgPSAwOyBpIDwgbGVuOyBpKyspCj4gLSAgICAgICAgICAgIGJpdHNbaV0gPSAnMCc7Cj4gLSAg ICAgICAgYml0c1tsZW5dID0gJzEnOwo+IC0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkr KykKPiAtICAgICAgICAgICAgYml0c1tsZW4gKyBpICsgMV0gPSAodmFsdWUgKyAxKSA+PiAobGVu IC0gaSAtIDEpICYgMSA/ICcxJyA6ICcwJzsKPiAtICAgICAgICBiaXRzW2xlbiArIGxlbiArIDFd ID0gMDsKPiAtCj4gLSAgICAgICAgZmZfY2JzX3RyYWNlX3N5bnRheF9lbGVtZW50KGN0eCwgcHV0 X2JpdHNfY291bnQocGJjKSwKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg bmFtZSwgc3Vic2NyaXB0cywgYml0cywgdmFsdWUpOwo+IC0gICAgfQo+IC0KPiAgICAgIHB1dF9i aXRzKHBiYywgbGVuLCAwKTsKPiAgICAgIGlmIChsZW4gKyAxIDwgMzIpCj4gICAgICAgICAgcHV0 X2JpdHMocGJjLCBsZW4gKyAxLCB2YWx1ZSArIDEpOwo+ICAgICAgZWxzZQo+ICAgICAgICAgIHB1 dF9iaXRzMzIocGJjLCB2YWx1ZSArIDEpOwo+Cj4gKyAgICBDQlNfVFJBQ0VfV1JJVEVfRU5EKCk7 Cj4gKwo+ICAgICAgcmV0dXJuIDA7Cj4gIH0KPgo+IEBAIC0xOTAsNiArMTc1LDggQEAgc3RhdGlj IGludCBjYnNfd3JpdGVfc2VfZ29sb21iKENvZGVkQml0c3RyZWFtQ29udGV4dCAqY3R4LCBQdXRC aXRDb250ZXh0ICpwYmMsCj4gICAgICBpbnQgbGVuOwo+ICAgICAgdWludDMyX3QgdXZhbHVlOwo+ Cj4gKyAgICBDQlNfVFJBQ0VfV1JJVEVfU1RBUlQoKTsKPiArCj4gICAgICBpZiAodmFsdWUgPCBy YW5nZV9taW4gfHwgdmFsdWUgPiByYW5nZV9tYXgpIHsKPiAgICAgICAgICBhdl9sb2coY3R4LT5s b2dfY3R4LCBBVl9MT0dfRVJST1IsICIlcyBvdXQgb2YgcmFuZ2U6ICIKPiAgICAgICAgICAgICAg ICAgIiUiUFJJZDMyIiwgYnV0IG11c3QgYmUgaW4gWyUiUFJJZDMyIiwlIlBSSWQzMiJdLlxuIiwK PiBAQCAtMjA5LDI3ICsxOTYsMTQgQEAgc3RhdGljIGludCBjYnNfd3JpdGVfc2VfZ29sb21iKENv ZGVkQml0c3RyZWFtQ29udGV4dCAqY3R4LCBQdXRCaXRDb250ZXh0ICpwYmMsCj4gICAgICBpZiAo cHV0X2JpdHNfbGVmdChwYmMpIDwgMiAqIGxlbiArIDEpCj4gICAgICAgICAgcmV0dXJuIEFWRVJS T1IoRU5PU1BDKTsKPgo+IC0gICAgaWYgKGN0eC0+dHJhY2VfZW5hYmxlKSB7Cj4gLSAgICAgICAg Y2hhciBiaXRzWzY1XTsKPiAtICAgICAgICBpbnQgaTsKPiAtCj4gLSAgICAgICAgZm9yIChpID0g MDsgaSA8IGxlbjsgaSsrKQo+IC0gICAgICAgICAgICBiaXRzW2ldID0gJzAnOwo+IC0gICAgICAg IGJpdHNbbGVuXSA9ICcxJzsKPiAtICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspCj4g LSAgICAgICAgICAgIGJpdHNbbGVuICsgaSArIDFdID0gKHV2YWx1ZSArIDEpID4+IChsZW4gLSBp IC0gMSkgJiAxID8gJzEnIDogJzAnOwo+IC0gICAgICAgIGJpdHNbbGVuICsgbGVuICsgMV0gPSAw Owo+IC0KPiAtICAgICAgICBmZl9jYnNfdHJhY2Vfc3ludGF4X2VsZW1lbnQoY3R4LCBwdXRfYml0 c19jb3VudChwYmMpLAo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1l LCBzdWJzY3JpcHRzLCBiaXRzLCB2YWx1ZSk7Cj4gLSAgICB9Cj4gLQo+ICAgICAgcHV0X2JpdHMo cGJjLCBsZW4sIDApOwo+ICAgICAgaWYgKGxlbiArIDEgPCAzMikKPiAgICAgICAgICBwdXRfYml0 cyhwYmMsIGxlbiArIDEsIHV2YWx1ZSArIDEpOwo+ICAgICAgZWxzZQo+ICAgICAgICAgIHB1dF9i aXRzMzIocGJjLCB1dmFsdWUgKyAxKTsKPgo+ICsgICAgQ0JTX1RSQUNFX1dSSVRFX0VORCgpOwo+ ICsKPiAgICAgIHJldHVybiAwOwo+ICB9Cj4KPiBkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9jYnNf aW50ZXJuYWwuaCBiL2xpYmF2Y29kZWMvY2JzX2ludGVybmFsLmgKPiBpbmRleCBkYTg0Njk3YTI5 Li4yODVkZWI0MGQ1IDEwMDY0NAo+IC0tLSBhL2xpYmF2Y29kZWMvY2JzX2ludGVybmFsLmgKPiAr KysgYi9saWJhdmNvZGVjL2Nic19pbnRlcm5hbC5oCj4gQEAgLTE1NywxMCArMTU3LDYgQEAgdHlw ZWRlZiBzdHJ1Y3QgQ29kZWRCaXRzdHJlYW1UeXBlIHsKPiAgdm9pZCBmZl9jYnNfdHJhY2VfaGVh ZGVyKENvZGVkQml0c3RyZWFtQ29udGV4dCAqY3R4LAo+ICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29uc3QgY2hhciAqbmFtZSk7Cj4KPiAtdm9pZCBmZl9jYnNfdHJhY2Vfc3ludGF4X2VsZW1l bnQoQ29kZWRCaXRzdHJlYW1Db250ZXh0ICpjdHgsIGludCBwb3NpdGlvbiwKPiAtICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZSwgY29uc3QgaW50ICpzdWJz Y3JpcHRzLAo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpi aXRzdHJpbmcsIGludDY0X3QgdmFsdWUpOwo+IC0KPgo+ICAvLyBIZWxwZXIgZnVuY3Rpb25zIGZv ciByZWFkL3dyaXRlIG9mIGNvbW1vbiBiaXRzdHJlYW0gZWxlbWVudHMsIGluY2x1ZGluZwo+ICAv LyBnZW5lcmF0aW9uIG9mIHRyYWNlIG91dHB1dC4gVGhlIHNpbXBsZSBmdW5jdGlvbnMgYXJlIGVx dWl2YWxlbnQgdG8KPiBAQCAtMjA2LDYgKzIwMiw4NyBAQCBpbnQgZmZfY2JzX3dyaXRlX3NpZ25l ZChDb2RlZEJpdHN0cmVhbUNvbnRleHQgKmN0eCwgUHV0Qml0Q29udGV4dCAqcGJjLAo+ICAvLyBy YW5nZV9taW4gaW4gdGhlIGFib3ZlIGZ1bmN0aW9ucy4KPiAgI2RlZmluZSBNSU5fSU5UX0JJVFMo bGVuZ3RoKSAoLShJTlQ2NF9DKDEpIDw8ICgobGVuZ3RoKSAtIDEpKSkKPgo+ICsKPiArLy8gU3Rh cnQgb2YgYSBzeW50YXggZWxlbWVudCBkdXJpbmcgcmVhZCB0cmFjaW5nLgo+ICsjZGVmaW5lIENC U19UUkFDRV9SRUFEX1NUQVJUKCkgXAo+ICsgICAgR2V0Qml0Q29udGV4dCB0cmFjZV9zdGFydDsg XAo+ICsgICAgZG8geyBcCj4gKyAgICAgICAgaWYgKGN0eC0+dHJhY2VfZW5hYmxlKSBcCj4gKyAg ICAgICAgICAgIHRyYWNlX3N0YXJ0ID0gKmdiYzsgXAo+ICsgICAgfSB3aGlsZSAoMCkKPiArCj4g Ky8vIEVuZCBvZiBhIHN5bnRheCBlbGVtZW50IGZvciB0cmFjaW5nLCBtYWtlIGNhbGxiYWNrLgo+ ICsjZGVmaW5lIENCU19UUkFDRV9SRUFEX0VORCgpIFwKPiArICAgIGRvIHsgXAo+ICsgICAgICAg IGlmIChjdHgtPnRyYWNlX2VuYWJsZSkgeyBcCj4gKyAgICAgICAgICAgIGludCBzdGFydF9wb3Np dGlvbiA9IGdldF9iaXRzX2NvdW50KCZ0cmFjZV9zdGFydCk7IFwKPiArICAgICAgICAgICAgaW50 IGVuZF9wb3NpdGlvbiAgID0gZ2V0X2JpdHNfY291bnQoZ2JjKTsgXAo+ICsgICAgICAgICAgICBh dl9hc3NlcnQwKHN0YXJ0X3Bvc2l0aW9uIDw9IGVuZF9wb3NpdGlvbik7IFwKPiArICAgICAgICAg ICAgY3R4LT50cmFjZV9yZWFkX2NhbGxiYWNrKGN0eC0+dHJhY2VfY29udGV4dCwgJnRyYWNlX3N0 YXJ0LCBcCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfcG9zaXRp b24gLSBzdGFydF9wb3NpdGlvbiwgXAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbmFtZSwgc3Vic2NyaXB0cywgdmFsdWUpOyBcCj4gKyAgICAgICAgfSBcCj4gKyAgICB9 IHdoaWxlICgwKQo+ICsKPiArLy8gRW5kIG9mIGEgc3ludGF4IGVsZW1lbnQgd2l0aCBubyBzdWJz Y3JpcHQgZW50cmllcy4KPiArI2RlZmluZSBDQlNfVFJBQ0VfUkVBRF9FTkRfTk9fU1VCU0NSSVBU UygpIFwKPiArICAgIGRvIHsgXAo+ICsgICAgICAgIGNvbnN0IGludCAqc3Vic2NyaXB0cyA9IE5V TEw7IFwKPiArICAgICAgICBDQlNfVFJBQ0VfUkVBRF9FTkQoKTsgXAo+ICsgICAgfSB3aGlsZSAo MCkKPiArCj4gKy8vIEVuZCBvZiBhIHN5bnRheCBlbGVtZW50IHdoaWNoIGlzIG1hZGUgdXAgb2Yg c3ViZWxlbWVudHMgd2hpY2gKPiArLy8gYXJlIGFsZWFkeSB0cmFjZWQsIHNvIHdlIGFyZSBvbmx5 IHNob3dpbmcgdGhlIHZhbHVlLgo+ICsjZGVmaW5lIENCU19UUkFDRV9SRUFEX0VORF9WQUxVRV9P TkxZKCkgXAo+ICsgICAgZG8geyBcCj4gKyAgICAgICAgaWYgKGN0eC0+dHJhY2VfZW5hYmxlKSB7 IFwKPiArICAgICAgICAgICAgY3R4LT50cmFjZV9yZWFkX2NhbGxiYWNrKGN0eC0+dHJhY2VfY29u dGV4dCwgJnRyYWNlX3N0YXJ0LCAwLCBcCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBuYW1lLCBzdWJzY3JpcHRzLCB2YWx1ZSk7IFwKPiArICAgICAgICB9IFwKPiArICAg IH0gd2hpbGUgKDApCj4gKwo+ICsvLyBTdGFydCBvZiBhIHN5bnRheCBlbGVtZW50IGR1cmluZyB3 cml0ZSB0cmFjaW5nLgo+ICsjZGVmaW5lIENCU19UUkFDRV9XUklURV9TVEFSVCgpIFwKPiArICAg IGludCBzdGFydF9wb3NpdGlvbjsgXAo+ICsgICAgZG8geyBcCj4gKyAgICAgICAgaWYgKGN0eC0+ dHJhY2VfZW5hYmxlKSBcCj4gKyAgICAgICAgICAgIHN0YXJ0X3Bvc2l0aW9uID0gcHV0X2JpdHNf Y291bnQocGJjKTs7IFwKPiArICAgIH0gd2hpbGUgKDApCj4gKwo+ICsvLyBFbmQgb2YgYSBzeW50 YXggZWxlbWVudCBmb3IgdHJhY2luZywgbWFrZSBjYWxsYmFjay4KPiArI2RlZmluZSBDQlNfVFJB Q0VfV1JJVEVfRU5EKCkgXAo+ICsgICAgZG8geyBcCj4gKyAgICAgICAgaWYgKGN0eC0+dHJhY2Vf ZW5hYmxlKSB7IFwKPiArICAgICAgICAgICAgaW50IGVuZF9wb3NpdGlvbiAgID0gcHV0X2JpdHNf Y291bnQocGJjKTsgXAo+ICsgICAgICAgICAgICBhdl9hc3NlcnQwKHN0YXJ0X3Bvc2l0aW9uIDw9 IGVuZF9wb3NpdGlvbik7IFwKPiArICAgICAgICAgICAgY3R4LT50cmFjZV93cml0ZV9jYWxsYmFj ayhjdHgtPnRyYWNlX2NvbnRleHQsIHBiYywgXAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGVuZF9wb3NpdGlvbiAtIHN0YXJ0X3Bvc2l0aW9uLCBcCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSwgc3Vic2NyaXB0cywgdmFsdWUpOyBc Cj4gKyAgICAgICAgfSBcCj4gKyAgICB9IHdoaWxlICgwKQo+ICsKPiArLy8gRW5kIG9mIGEgc3lu dGF4IGVsZW1lbnQgd2l0aCBubyBzdWJzY3JpcHQgZW50cmllcy4KPiArI2RlZmluZSBDQlNfVFJB Q0VfV1JJVEVfRU5EX05PX1NVQlNDUklQVFMoKSBcCj4gKyAgICBkbyB7IFwKPiArICAgICAgICBj b25zdCBpbnQgKnN1YnNjcmlwdHMgPSBOVUxMOyBcCj4gKyAgICAgICAgQ0JTX1RSQUNFX1dSSVRF X0VORCgpOyBcCj4gKyAgICB9IHdoaWxlICgwKQo+ICsKPiArLy8gRW5kIG9mIGEgc3ludGF4IGVs ZW1lbnQgd2hpY2ggaXMgbWFkZSB1cCBvZiBzdWJlbGVtZW50cyB3aGljaCBhcmUKPiArLy8gYWxl YWR5IHRyYWNlZCwgc28gd2UgYXJlIG9ubHkgc2hvd2luZyB0aGUgdmFsdWUuICBUaGlzIGZvcmdl cyBhCj4gKy8vIFB1dEJpdENvbnRleHQgdG8gcG9pbnQgdG8gdGhlIHBvc2l0aW9uIG9mIHRoZSBz dGFydCBvZiB0aGUgc3ludGF4Cj4gKy8vIGVsZW1lbnQsIGJ1dCB0aGUgb3RoZXIgc3RhdGUgZG9l c24ndCBtYXR0ZXIgYmVjYXVzZSBsZW5ndGggaXMgemVyby4KPiArI2RlZmluZSBDQlNfVFJBQ0Vf V1JJVEVfRU5EX1ZBTFVFX09OTFkoKSBcCj4gKyAgICBkbyB7IFwKPiArICAgICAgICBpZiAoY3R4 LT50cmFjZV9lbmFibGUpIHsgXAo+ICsgICAgICAgICAgICBQdXRCaXRDb250ZXh0IHRtcDsgXAo+ ICsgICAgICAgICAgICBpbml0X3B1dF9iaXRzKCZ0bXAsIHBiYy0+YnVmLCBzdGFydF9wb3NpdGlv bik7IFwKPiArICAgICAgICAgICAgc2tpcF9wdXRfYml0cygmdG1wLCBzdGFydF9wb3NpdGlvbik7 IFwKPiArICAgICAgICAgICAgY3R4LT50cmFjZV93cml0ZV9jYWxsYmFjayhjdHgtPnRyYWNlX2Nv bnRleHQsICZ0bXAsIDAsIFwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBuYW1lLCBzdWJzY3JpcHRzLCB2YWx1ZSk7IFwKPiArICAgICAgICB9IFwKPiArICAgIH0gd2hp bGUgKDApCj4gKwo+ICAjZGVmaW5lIFRZUEVfTElTVCguLi4pIHsgX19WQV9BUkdTX18gfQo+ICAj ZGVmaW5lIENCU19VTklUX1RZUEVfUE9EKHR5cGVfLCBzdHJ1Y3R1cmUpIHsgXAo+ICAgICAgICAg IC5uYl91bml0X3R5cGVzICA9IDEsIFwKPiBkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9jYnNfdnA5 LmMgYi9saWJhdmNvZGVjL2Nic192cDkuYwo+IGluZGV4IGIwZDViZDg3NjMuLjgxNmQwNmRhMDQg MTAwNjQ0Cj4gLS0tIGEvbGliYXZjb2RlYy9jYnNfdnA5LmMKPiArKysgYi9saWJhdmNvZGVjL2Ni c192cDkuYwo+IEBAIC0yOCwxMSArMjgsMTAgQEAgc3RhdGljIGludCBjYnNfdnA5X3JlYWRfcyhD b2RlZEJpdHN0cmVhbUNvbnRleHQgKmN0eCwgR2V0Qml0Q29udGV4dCAqZ2JjLAo+ICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNvbnN0IGludCAqc3Vic2NyaXB0cywgaW50MzJfdCAqd3JpdGVf dG8pCj4gIHsKPiAgICAgIHVpbnQzMl90IG1hZ25pdHVkZTsKPiAtICAgIGludCBwb3NpdGlvbiwg c2lnbjsKPiArICAgIGludCBzaWduOwo+ICAgICAgaW50MzJfdCB2YWx1ZTsKPgo+IC0gICAgaWYg KGN0eC0+dHJhY2VfZW5hYmxlKQo+IC0gICAgICAgIHBvc2l0aW9uID0gZ2V0X2JpdHNfY291bnQo Z2JjKTsKPiArICAgIENCU19UUkFDRV9SRUFEX1NUQVJUKCk7Cj4KPiAgICAgIGlmIChnZXRfYml0 c19sZWZ0KGdiYykgPCB3aWR0aCArIDEpIHsKPiAgICAgICAgICBhdl9sb2coY3R4LT5sb2dfY3R4 LCBBVl9MT0dfRVJST1IsICJJbnZhbGlkIHNpZ25lZCB2YWx1ZSBhdCAiCj4gQEAgLTQ0LDE3ICs0 Myw3IEBAIHN0YXRpYyBpbnQgY2JzX3ZwOV9yZWFkX3MoQ29kZWRCaXRzdHJlYW1Db250ZXh0ICpj dHgsIEdldEJpdENvbnRleHQgKmdiYywKPiAgICAgIHNpZ24gICAgICA9IGdldF9iaXRzMShnYmMp Owo+ICAgICAgdmFsdWUgICAgID0gc2lnbiA/IC0oaW50MzJfdCltYWduaXR1ZGUgOiBtYWduaXR1 ZGU7Cj4KPiAtICAgIGlmIChjdHgtPnRyYWNlX2VuYWJsZSkgewo+IC0gICAgICAgIGNoYXIgYml0 c1szM107Cj4gLSAgICAgICAgaW50IGk7Cj4gLSAgICAgICAgZm9yIChpID0gMDsgaSA8IHdpZHRo OyBpKyspCj4gLSAgICAgICAgICAgIGJpdHNbaV0gPSBtYWduaXR1ZGUgPj4gKHdpZHRoIC0gaSAt IDEpICYgMSA/ICcxJyA6ICcwJzsKPiAtICAgICAgICBiaXRzW2ldID0gc2lnbiA/ICcxJyA6ICcw JzsKPiAtICAgICAgICBiaXRzW2kgKyAxXSA9IDA7Cj4gLQo+IC0gICAgICAgIGZmX2Nic190cmFj ZV9zeW50YXhfZWxlbWVudChjdHgsIHBvc2l0aW9uLCBuYW1lLCBzdWJzY3JpcHRzLAo+IC0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaXRzLCB2YWx1ZSk7Cj4gLSAgICB9Cj4g KyAgICBDQlNfVFJBQ0VfUkVBRF9FTkQoKTsKPgo+ICAgICAgKndyaXRlX3RvID0gdmFsdWU7Cj4g ICAgICByZXR1cm4gMDsKPiBAQCAtNjcsMjcgKzU2LDE5IEBAIHN0YXRpYyBpbnQgY2JzX3ZwOV93 cml0ZV9zKENvZGVkQml0c3RyZWFtQ29udGV4dCAqY3R4LCBQdXRCaXRDb250ZXh0ICpwYmMsCj4g ICAgICB1aW50MzJfdCBtYWduaXR1ZGU7Cj4gICAgICBpbnQgc2lnbjsKPgo+ICsgICAgQ0JTX1RS QUNFX1dSSVRFX1NUQVJUKCk7Cj4gKwo+ICAgICAgaWYgKHB1dF9iaXRzX2xlZnQocGJjKSA8IHdp ZHRoICsgMSkKPiAgICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9TUEMpOwo+Cj4gICAgICBzaWdu ICAgICAgPSB2YWx1ZSA8IDA7Cj4gICAgICBtYWduaXR1ZGUgPSBzaWduID8gLXZhbHVlIDogdmFs dWU7Cj4KPiAtICAgIGlmIChjdHgtPnRyYWNlX2VuYWJsZSkgewo+IC0gICAgICAgIGNoYXIgYml0 c1szM107Cj4gLSAgICAgICAgaW50IGk7Cj4gLSAgICAgICAgZm9yIChpID0gMDsgaSA8IHdpZHRo OyBpKyspCj4gLSAgICAgICAgICAgIGJpdHNbaV0gPSBtYWduaXR1ZGUgPj4gKHdpZHRoIC0gaSAt IDEpICYgMSA/ICcxJyA6ICcwJzsKPiAtICAgICAgICBiaXRzW2ldID0gc2lnbiA/ICcxJyA6ICcw JzsKPiAtICAgICAgICBiaXRzW2kgKyAxXSA9IDA7Cj4gLQo+IC0gICAgICAgIGZmX2Nic190cmFj ZV9zeW50YXhfZWxlbWVudChjdHgsIHB1dF9iaXRzX2NvdW50KHBiYyksCj4gLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUsIHN1YnNjcmlwdHMsIGJpdHMsIHZhbHVlKTsK PiAtICAgIH0KPiAtCj4gICAgICBwdXRfYml0cyhwYmMsIHdpZHRoLCBtYWduaXR1ZGUpOwo+ICAg ICAgcHV0X2JpdHMocGJjLCAxLCBzaWduKTsKPgo+ICsgICAgQ0JTX1RSQUNFX1dSSVRFX0VORCgp Owo+ICsKPiAgICAgIHJldHVybiAwOwo+ICB9Cj4KPiBAQCAtOTYsMzIgKzc3LDI0IEBAIHN0YXRp YyBpbnQgY2JzX3ZwOV9yZWFkX2luY3JlbWVudChDb2RlZEJpdHN0cmVhbUNvbnRleHQgKmN0eCwg R2V0Qml0Q29udGV4dCAqZ2JjCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj b25zdCBjaGFyICpuYW1lLCB1aW50MzJfdCAqd3JpdGVfdG8pCj4gIHsKPiAgICAgIHVpbnQzMl90 IHZhbHVlOwo+IC0gICAgaW50IHBvc2l0aW9uLCBpOwo+IC0gICAgY2hhciBiaXRzWzhdOwo+Cj4g LSAgICBhdl9hc3NlcnQwKHJhbmdlX21pbiA8PSByYW5nZV9tYXggJiYgcmFuZ2VfbWF4IC0gcmFu Z2VfbWluIDwgc2l6ZW9mKGJpdHMpIC0gMSk7Cj4gLSAgICBpZiAoY3R4LT50cmFjZV9lbmFibGUp Cj4gLSAgICAgICAgcG9zaXRpb24gPSBnZXRfYml0c19jb3VudChnYmMpOwo+ICsgICAgQ0JTX1RS QUNFX1JFQURfU1RBUlQoKTsKPgo+IC0gICAgZm9yIChpID0gMCwgdmFsdWUgPSByYW5nZV9taW47 IHZhbHVlIDwgcmFuZ2VfbWF4Oykgewo+ICsgICAgYXZfYXNzZXJ0MChyYW5nZV9taW4gPD0gcmFu Z2VfbWF4ICYmIHJhbmdlX21heCAtIHJhbmdlX21pbiA8IDMyKTsKPiArCj4gKyAgICBmb3IgKHZh bHVlID0gcmFuZ2VfbWluOyB2YWx1ZSA8IHJhbmdlX21heDspIHsKPiAgICAgICAgICBpZiAoZ2V0 X2JpdHNfbGVmdChnYmMpIDwgMSkgewo+ICAgICAgICAgICAgICBhdl9sb2coY3R4LT5sb2dfY3R4 LCBBVl9MT0dfRVJST1IsICJJbnZhbGlkIGluY3JlbWVudCB2YWx1ZSBhdCAiCj4gICAgICAgICAg ICAgICAgICAgICAiJXM6IGJpdHN0cmVhbSBlbmRlZC5cbiIsIG5hbWUpOwo+ICAgICAgICAgICAg ICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKPiAgICAgICAgICB9Cj4gLSAgICAgICAgaWYg KGdldF9iaXRzMShnYmMpKSB7Cj4gLSAgICAgICAgICAgIGJpdHNbaSsrXSA9ICcxJzsKPiArICAg ICAgICBpZiAoZ2V0X2JpdHMxKGdiYykpCj4gICAgICAgICAgICAgICsrdmFsdWU7Cj4gLSAgICAg ICAgfSBlbHNlIHsKPiAtICAgICAgICAgICAgYml0c1tpKytdID0gJzAnOwo+ICsgICAgICAgIGVs c2UKPiAgICAgICAgICAgICAgYnJlYWs7Cj4gLSAgICAgICAgfQo+ICAgICAgfQo+Cj4gLSAgICBp ZiAoY3R4LT50cmFjZV9lbmFibGUpIHsKPiAtICAgICAgICBiaXRzW2ldID0gMDsKPiAtICAgICAg ICBmZl9jYnNfdHJhY2Vfc3ludGF4X2VsZW1lbnQoY3R4LCBwb3NpdGlvbiwgbmFtZSwgTlVMTCwg Yml0cywgdmFsdWUpOwo+IC0gICAgfQo+ICsgICAgQ0JTX1RSQUNFX1JFQURfRU5EX05PX1NVQlND UklQVFMoKTsKPgo+ICAgICAgKndyaXRlX3RvID0gdmFsdWU7Cj4gICAgICByZXR1cm4gMDsKPiBA QCAtMTMzLDYgKzEwNiw4IEBAIHN0YXRpYyBpbnQgY2JzX3ZwOV93cml0ZV9pbmNyZW1lbnQoQ29k ZWRCaXRzdHJlYW1Db250ZXh0ICpjdHgsIFB1dEJpdENvbnRleHQgKnBiCj4gIHsKPiAgICAgIGlu dCBsZW47Cj4KPiArICAgIENCU19UUkFDRV9XUklURV9TVEFSVCgpOwo+ICsKPiAgICAgIGF2X2Fz c2VydDAocmFuZ2VfbWluIDw9IHJhbmdlX21heCAmJiByYW5nZV9tYXggLSByYW5nZV9taW4gPCA4 KTsKPiAgICAgIGlmICh2YWx1ZSA8IHJhbmdlX21pbiB8fCB2YWx1ZSA+IHJhbmdlX21heCkgewo+ ICAgICAgICAgIGF2X2xvZyhjdHgtPmxvZ19jdHgsIEFWX0xPR19FUlJPUiwgIiVzIG91dCBvZiBy YW5nZTogIgo+IEBAIC0xNDgsMjMgKzEyMywxMSBAQCBzdGF0aWMgaW50IGNic192cDlfd3JpdGVf aW5jcmVtZW50KENvZGVkQml0c3RyZWFtQ29udGV4dCAqY3R4LCBQdXRCaXRDb250ZXh0ICpwYgo+ ICAgICAgaWYgKHB1dF9iaXRzX2xlZnQocGJjKSA8IGxlbikKPiAgICAgICAgICByZXR1cm4gQVZF UlJPUihFTk9TUEMpOwo+Cj4gLSAgICBpZiAoY3R4LT50cmFjZV9lbmFibGUpIHsKPiAtICAgICAg ICBjaGFyIGJpdHNbOF07Cj4gLSAgICAgICAgaW50IGk7Cj4gLSAgICAgICAgZm9yIChpID0gMDsg aSA8IGxlbjsgaSsrKSB7Cj4gLSAgICAgICAgICAgIGlmIChyYW5nZV9taW4gKyBpID09IHZhbHVl KQo+IC0gICAgICAgICAgICAgICAgYml0c1tpXSA9ICcwJzsKPiAtICAgICAgICAgICAgZWxzZQo+ IC0gICAgICAgICAgICAgICAgYml0c1tpXSA9ICcxJzsKPiAtICAgICAgICB9Cj4gLSAgICAgICAg Yml0c1tpXSA9IDA7Cj4gLSAgICAgICAgZmZfY2JzX3RyYWNlX3N5bnRheF9lbGVtZW50KGN0eCwg cHV0X2JpdHNfY291bnQocGJjKSwKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgbmFtZSwgTlVMTCwgYml0cywgdmFsdWUpOwo+IC0gICAgfQo+IC0KPiAgICAgIGlmIChsZW4g PiAwKQo+ICAgICAgICAgIHB1dF9iaXRzKHBiYywgbGVuLCAoMSA8PCBsZW4pIC0gMSAtICh2YWx1 ZSAhPSByYW5nZV9tYXgpKTsKPgo+ICsgICAgQ0JTX1RSQUNFX1dSSVRFX0VORF9OT19TVUJTQ1JJ UFRTKCk7Cj4gKwo+ICAgICAgcmV0dXJuIDA7Cj4gIH0KPgo+IEBAIC0xNzMsMTIgKzEzNiwxMSBA QCBzdGF0aWMgaW50IGNic192cDlfcmVhZF9sZShDb2RlZEJpdHN0cmVhbUNvbnRleHQgKmN0eCwg R2V0Qml0Q29udGV4dCAqZ2JjLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBp bnQgKnN1YnNjcmlwdHMsIHVpbnQzMl90ICp3cml0ZV90bykKPiAgewo+ICAgICAgdWludDMyX3Qg dmFsdWU7Cj4gLSAgICBpbnQgcG9zaXRpb24sIGI7Cj4gKyAgICBpbnQgYjsKPgo+IC0gICAgYXZf YXNzZXJ0MCh3aWR0aCAlIDggPT0gMCk7Cj4gKyAgICBDQlNfVFJBQ0VfUkVBRF9TVEFSVCgpOwo+ Cj4gLSAgICBpZiAoY3R4LT50cmFjZV9lbmFibGUpCj4gLSAgICAgICAgcG9zaXRpb24gPSBnZXRf Yml0c19jb3VudChnYmMpOwo+ICsgICAgYXZfYXNzZXJ0MCh3aWR0aCAlIDggPT0gMCk7Cj4KPiAg ICAgIGlmIChnZXRfYml0c19sZWZ0KGdiYykgPCB3aWR0aCkgewo+ICAgICAgICAgIGF2X2xvZyhj dHgtPmxvZ19jdHgsIEFWX0xPR19FUlJPUiwgIkludmFsaWQgbGUgdmFsdWUgYXQgIgo+IEBAIC0x OTAsMTcgKzE1Miw3IEBAIHN0YXRpYyBpbnQgY2JzX3ZwOV9yZWFkX2xlKENvZGVkQml0c3RyZWFt Q29udGV4dCAqY3R4LCBHZXRCaXRDb250ZXh0ICpnYmMsCj4gICAgICBmb3IgKGIgPSAwOyBiIDwg d2lkdGg7IGIgKz0gOCkKPiAgICAgICAgICB2YWx1ZSB8PSBnZXRfYml0cyhnYmMsIDgpIDw8IGI7 Cj4KPiAtICAgIGlmIChjdHgtPnRyYWNlX2VuYWJsZSkgewo+IC0gICAgICAgIGNoYXIgYml0c1sz M107Cj4gLSAgICAgICAgaW50IGk7Cj4gLSAgICAgICAgZm9yIChiID0gMDsgYiA8IHdpZHRoOyBi ICs9IDgpCj4gLSAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCA4OyBpKyspCj4gLSAgICAgICAg ICAgICAgICBiaXRzW2IgKyBpXSA9IHZhbHVlID4+IChiICsgaSkgJiAxID8gJzEnIDogJzAnOwo+ IC0gICAgICAgIGJpdHNbYl0gPSAwOwo+IC0KPiAtICAgICAgICBmZl9jYnNfdHJhY2Vfc3ludGF4 X2VsZW1lbnQoY3R4LCBwb3NpdGlvbiwgbmFtZSwgc3Vic2NyaXB0cywKPiAtICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgYml0cywgdmFsdWUpOwo+IC0gICAgfQo+ICsgICAgQ0JT X1RSQUNFX1JFQURfRU5EKCk7Cj4KPiAgICAgICp3cml0ZV90byA9IHZhbHVlOwo+ICAgICAgcmV0 dXJuIDA7Cj4gQEAgLTIxMiwyNiArMTY0LDE4IEBAIHN0YXRpYyBpbnQgY2JzX3ZwOV93cml0ZV9s ZShDb2RlZEJpdHN0cmVhbUNvbnRleHQgKmN0eCwgUHV0Qml0Q29udGV4dCAqcGJjLAo+ICB7Cj4g ICAgICBpbnQgYjsKPgo+ICsgICAgQ0JTX1RSQUNFX1dSSVRFX1NUQVJUKCk7Cj4gKwo+ICAgICAg YXZfYXNzZXJ0MCh3aWR0aCAlIDggPT0gMCk7Cj4KPiAgICAgIGlmIChwdXRfYml0c19sZWZ0KHBi YykgPCB3aWR0aCkKPiAgICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9TUEMpOwo+Cj4gLSAgICBp ZiAoY3R4LT50cmFjZV9lbmFibGUpIHsKPiAtICAgICAgICBjaGFyIGJpdHNbMzNdOwo+IC0gICAg ICAgIGludCBpOwo+IC0gICAgICAgIGZvciAoYiA9IDA7IGIgPCB3aWR0aDsgYiArPSA4KQo+IC0g ICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgODsgaSsrKQo+IC0gICAgICAgICAgICAgICAgYml0 c1tiICsgaV0gPSB2YWx1ZSA+PiAoYiArIGkpICYgMSA/ICcxJyA6ICcwJzsKPiAtICAgICAgICBi aXRzW2JdID0gMDsKPiAtCj4gLSAgICAgICAgZmZfY2JzX3RyYWNlX3N5bnRheF9lbGVtZW50KGN0 eCwgcHV0X2JpdHNfY291bnQocGJjKSwKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbmFtZSwgc3Vic2NyaXB0cywgYml0cywgdmFsdWUpOwo+IC0gICAgfQo+IC0KPiAgICAg IGZvciAoYiA9IDA7IGIgPCB3aWR0aDsgYiArPSA4KQo+ICAgICAgICAgIHB1dF9iaXRzKHBiYywg OCwgdmFsdWUgPj4gYiAmIDB4ZmYpOwo+Cj4gKyAgICBDQlNfVFJBQ0VfV1JJVEVfRU5EKCk7Cj4g Kwo+ICAgICAgcmV0dXJuIDA7Cj4gIH0KPgo+IGRpZmYgLS1naXQgYS9saWJhdmNvZGVjL3RyYWNl X2hlYWRlcnNfYnNmLmMgYi9saWJhdmNvZGVjL3RyYWNlX2hlYWRlcnNfYnNmLmMKPiBpbmRleCAw MjhiMGExZTU5Li44NzgxZjVmMTAwIDEwMDY0NAo+IC0tLSBhL2xpYmF2Y29kZWMvdHJhY2VfaGVh ZGVyc19ic2YuYwo+ICsrKyBiL2xpYmF2Y29kZWMvdHJhY2VfaGVhZGVyc19ic2YuYwo+IEBAIC00 NCw2ICs0NCw4IEBAIHN0YXRpYyBpbnQgdHJhY2VfaGVhZGVyc19pbml0KEFWQlNGQ29udGV4dCAq YnNmKQo+Cj4gICAgICBjdHgtPmNiYy0+dHJhY2VfZW5hYmxlID0gMTsKPiAgICAgIGN0eC0+Y2Jj LT50cmFjZV9sZXZlbCAgPSBBVl9MT0dfSU5GTzsKPiArICAgIGN0eC0+Y2JjLT50cmFjZV9jb250 ZXh0ID0gY3R4LT5jYmM7Cj4gKyAgICBjdHgtPmNiYy0+dHJhY2VfcmVhZF9jYWxsYmFjayA9IGZm X2Nic190cmFjZV9yZWFkX2xvZzsKPgo+ICAgICAgaWYgKGJzZi0+cGFyX2luLT5leHRyYWRhdGEp IHsKPiAgICAgICAgICBDb2RlZEJpdHN0cmVhbUZyYWdtZW50ICpmcmFnID0gJmN0eC0+ZnJhZ21l bnQ7Cj4gLS0KPiAyLjI1LjEKPgoKQ29kZSBsb29rcyBnb29kIHRvIG1lLCB0aGUgcGFydHMgSSBj YW4gZXhlcmNpc2Ugd29ya3Mgd2l0aCBteSBoYXJkd2FyZS4KClJldmlld2VkLWJ5OiBOZWFsIEdv bXBhIDxuZ29tcGExM0BnbWFpbC5jb20+CgoKCgotLQrnnJ/lrp/jga/jgYTjgaTjgoLkuIDjgaTv vIEvIEFsd2F5cywgdGhlcmUncyBvbmx5IG9uZSB0cnV0aCEKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KZmZtcGVnLWRldmVsIG1haWxpbmcgbGlzdApmZm1w ZWctZGV2ZWxAZmZtcGVnLm9yZwpodHRwczovL2ZmbXBlZy5vcmcvbWFpbG1hbi9saXN0aW5mby9m Zm1wZWctZGV2ZWwKClRvIHVuc3Vic2NyaWJlLCB2aXNpdCBsaW5rIGFib3ZlLCBvciBlbWFpbApm Zm1wZWctZGV2ZWwtcmVxdWVzdEBmZm1wZWcub3JnIHdpdGggc3ViamVjdCAidW5zdWJzY3JpYmUi Lgo=