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 B47A74283F for ; Wed, 4 May 2022 16:45:36 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 8248868B26C; Wed, 4 May 2022 19:45:33 +0300 (EEST) Received: from mail-yw1-f170.google.com (mail-yw1-f170.google.com [209.85.128.170]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 9877668B0B9 for ; Wed, 4 May 2022 19:45:26 +0300 (EEST) Received: by mail-yw1-f170.google.com with SMTP id 00721157ae682-2f7ca2ce255so21869747b3.7 for ; Wed, 04 May 2022 09:45:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :content-transfer-encoding; bh=QaxX4ggBFHB/T6c28eBONZnsJLLbqNskfD3+4tRu7jo=; b=AxyOrOLysrPCOZzNnO03JZzU7t8sLLUbC0h2cqZoaQFXF+bCQQbjelFtgzmeOTux9w biqtO6lmFTjGIdiyqwAwOoR8FND59ThYqPgm1BF/kNVsyqhe2ZcDICmO3neSDyyvDxOF NwVJaLkvkzUzFS2SOYplcIDefKeV/UolgCjYSE+FtcVfaSLu/54yKzKXMk+811qBnAtB LN8o2HR3DstcgOwJwlSsQHtiRl/u8uqHd2ags0MFoIgpbVETIbOXzRrbvo9vAVxoBKYj w5lGSP/YTKDXC/6zJkDEXBv4HOXjgiu2yai80JncFLMRe/MEedoo25HgV51IcHLQEIXw GK/w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:content-transfer-encoding; bh=QaxX4ggBFHB/T6c28eBONZnsJLLbqNskfD3+4tRu7jo=; b=8MgMabNX00cKVaD73C0m/AqdgLq1SKmKHvhN5l4qfmsVjHtECf8ZaY7E3m8zycLw/m sSgwIEu7t2cU75j83X/tLE22v7yKGSgpdNBNjnjtBzOZEsIj5+LAgg0qAZSKwkT99E3q afYuaPdICdSbFzhqQcqEZLOS5SbRkM3AvU8RZ2jYNkgc/dipUpcB8TYlpyaLXZozGzMn +XSI0Tkl4PlP8aV/wHnZO8Si32XAo/z2alkn8t3VMH/8g2CYtRacGOXQGPNpKbla+3FL CRcSnRbJMYOLwbhmaHgXSg4jdqmucysWkQjTJ4H4N7l7M9cEa49zCn8crscnqRa/cIbw YhBQ== X-Gm-Message-State: AOAM531nPJUgLL6uLYIRHS9L2/+77bc3U0xJm8v1znGAicUNh8M4pMEb xDQHTCFzSZRfymDvPfW0+Bx7ABpePLw+tH3fy8f3ZF1YC0VyFw== X-Google-Smtp-Source: ABdhPJyMakZj/KQ4QSZ8y0as11Wpz6MzENnxDSLJVpijlDuN6S57MR2Llr8nMMLSlfRJe5KNUbHWgsYWowvLOSd8OQY= X-Received: by 2002:a81:16cf:0:b0:2f7:cc18:7bd1 with SMTP id 198-20020a8116cf000000b002f7cc187bd1mr20592741yww.155.1651682724356; Wed, 04 May 2022 09:45:24 -0700 (PDT) MIME-Version: 1.0 References: <20220502213535.2461249-1-vigneshv@google.com> In-Reply-To: From: Vignesh Venkatasubramanian Date: Wed, 4 May 2022 09:45:12 -0700 Message-ID: To: FFmpeg development discussions and patches Subject: Re: [FFmpeg-devel] [PATCH 3/3] avformat/movenc: Add support for AVIF muxing 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: T24gVHVlLCBNYXkgMywgMjAyMiBhdCA3OjQ2IFBNICJ6aGlsaXpoYW8o6LW15b+X56uLKSIgPHF1 aW5rYmxhY2tAZm94bWFpbC5jb20+IHdyb3RlOgo+Cj4KClRoYW5rcyBmb3IgdGhlIHJldmlldyEK Cj4KPiA+IE9uIE1heSAzLCAyMDIyLCBhdCA1OjM1IEFNLCBWaWduZXNoIFZlbmthdGFzdWJyYW1h bmlhbiA8dmlnbmVzaHYtYXQtZ29vZ2xlLmNvbUBmZm1wZWcub3JnPiB3cm90ZToKPiA+Cj4gPiBB ZGQgYW4gQVZJRiBtdXhlciBieSByZS11c2luZyB0aGUgZXhpc3RpbmcgdGhlIG1vdi9tcDQgbXV4 ZXIuCj4gPgo+ID4gQVZJRiBTcGVjaWZpY2F0aW9uOiBodHRwczovL2FvbWVkaWFjb2RlYy5naXRo dWIuaW8vYXYxLWF2aWYKPiA+Cj4gPiBTYW1wbGUgdXNhZ2UgZm9yIHN0aWxsIGltYWdlOgo+ID4g ZmZtcGVnIC1pIGltYWdlLnBuZyAtYzp2IGxpYmFvbS1hdjEgLWF2aWYtaW1hZ2UgMSBpbWFnZS5h dmlmCj4gPgo+ID4gU2FtcGxlIHVzYWdlIGZvciBhbmltYXRlZCBBVklGIGltYWdlOgo+ID4gZmZt cGVnIC1pIHZpZGVvLm1wNCBhbmltYXRlZC5hdmlmCj4gPgo+ID4gV2UgY2FuIHJlLXVzZSBhbnkg b2YgdGhlIEFWMSBlbmNvZGluZyBvcHRpb25zIHRoYXQgd2lsbCBtYWtlCj4gPiBzZW5zZSBmb3Ig aW1hZ2UgZW5jb2RpbmcgKGxpa2UgYml0cmF0ZSwgdGlsZXMsIGVuY29kaW5nIHNwZWVkLAo+ID4g ZXRjKS4KPiA+Cj4gPiBUaGUgZmlsZXMgZ2VuZXJhdGVkIGJ5IHRoaXMgbXV4ZXIgaGFzIGJlZW4g dmVyaWZpZWQgdG8gYmUgdmFsaWQKPiA+IEFWSUYgZmlsZXMgYnkgdGhlIGZvbGxvd2luZzoKPiA+ IDEpIERpc3BsYXlzIG9uIENocm9tZSAoYm90aCBzdGlsbCBhbmQgYW5pbWF0ZWQgaW1hZ2VzKS4K PiA+IDIpIERpc3BsYXlzIG9uIEZpcmVmb3ggKG9ubHkgc3RpbGwgaW1hZ2VzLCBmaXJlZm94IGRv ZXMgbm90IHN1cHBvcnQKPiA+ICAgYW5pbWF0ZWQgQVZJRiB5ZXQpLgo+ID4gMykgVmVyaWZpZWQg dG8gYmUgdmFsaWQgYnkgQ29tcGxpYW5jZSBXYXJkZW46Cj4gPiAgIGh0dHBzOi8vZ2l0aHViLmNv bS9ncGFjL0NvbXBsaWFuY2VXYXJkZW4KPiA+Cj4gPiBGaXhlcyB0aGUgZW5jb2Rlci9tdXhlciBw YXJ0IG9mIFRyYWMgVGlja2V0ICM3NjIxCj4gPgo+ID4gU2lnbmVkLW9mZi1ieTogVmlnbmVzaCBW ZW5rYXRhc3VicmFtYW5pYW4gPHZpZ25lc2h2QGdvb2dsZS5jb20+Cj4gPiAtLS0KPiA+IGNvbmZp Z3VyZSAgICAgICAgICAgICAgICB8ICAgMSArCj4gPiBsaWJhdmZvcm1hdC9hbGxmb3JtYXRzLmMg fCAgIDEgKwo+ID4gbGliYXZmb3JtYXQvbW92ZW5jLmMgICAgIHwgMzM1ICsrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKy0tLQo+ID4gbGliYXZmb3JtYXQvbW92ZW5jLmggICAgIHwg ICA1ICsKPiA+IDQgZmlsZXMgY2hhbmdlZCwgMzE3IGluc2VydGlvbnMoKyksIDI1IGRlbGV0aW9u cygtKQo+ID4KPiA+Cj4KPiBb4oCmXQo+Cj4gPiBzdGF0aWMgaW50IG1vdl93cml0ZV92aWRlb190 YWcoQVZGb3JtYXRDb250ZXh0ICpzLCBBVklPQ29udGV4dCAqcGIsIE1PVk11eENvbnRleHQgKm1v diwgTU9WVHJhY2sgKnRyYWNrKQo+ID4gewo+ID4gICAgIGludCByZXQgPSBBVkVSUk9SX0JVRzsK PiA+IEBAIC0yMTU2LDYgKzIxNzYsOCBAQCBzdGF0aWMgaW50IG1vdl93cml0ZV92aWRlb190YWco QVZGb3JtYXRDb250ZXh0ICpzLCBBVklPQ29udGV4dCAqcGIsIE1PVk11eENvbnRleAo+ID4gICAg IGF2aW9fd2IzMihwYiwgMCk7IC8qIHNpemUgKi8KPiA+ICAgICBpZiAobW92LT5lbmNyeXB0aW9u X3NjaGVtZSAhPSBNT1ZfRU5DX05PTkUpIHsKPiA+ICAgICAgICAgZmZpb193Zm91cmNjKHBiLCAi ZW5jdiIpOwo+ID4gKyAgICB9IGVsc2UgaWYgKHRyYWNrLT5tb2RlID09IE1PREVfQVZJRikgewo+ ID4gKyAgICAgICAgZmZpb193Zm91cmNjKHBiLCAiYXYwMSIpOwo+Cj4gQ2FuIHRoZSDigJhlbHNl 4oCZIHBhdGggaGFuZGxlIHRoZSBjYXNlPwo+CgpZb3UgYXJlIHJpZ2h0LiBSZW1vdmVkIHRoZSAi ZWxzZSBpZiIgY2FzZS4KCj4gPiAgICAgfSBlbHNlIHsKPiA+ICAgICAgICAgYXZpb193bDMyKHBi LCB0cmFjay0+dGFnKTsgLy8gc3RvcmUgaXQgYnl0ZXN3YXBwZWQKPiA+ICAgICB9Cj4gPiBAQCAt MjI3Miw3ICsyMjk0LDcgQEAgc3RhdGljIGludCBtb3Zfd3JpdGVfdmlkZW9fdGFnKEFWRm9ybWF0 Q29udGV4dCAqcywgQVZJT0NvbnRleHQgKnBiLCBNT1ZNdXhDb250ZXgKPiA+ICAgICAgICAgZWxz ZQo+ID4gICAgICAgICAgICAgYXZfbG9nKG1vdi0+ZmMsIEFWX0xPR19XQVJOSU5HLCAiTm90IHdy aXRpbmcgJ2dhbWEnIGF0b20uIEZvcm1hdCBpcyBub3QgTU9WLlxuIik7Cj4gPiAgICAgfQo+ID4g LSAgICBpZiAodHJhY2stPm1vZGUgPT0gTU9ERV9NT1YgfHwgdHJhY2stPm1vZGUgPT0gTU9ERV9N UDQpIHsKPiA+ICsgICAgaWYgKHRyYWNrLT5tb2RlID09IE1PREVfTU9WIHx8IHRyYWNrLT5tb2Rl ID09IE1PREVfTVA0IHx8IHRyYWNrLT5tb2RlID09IE1PREVfQVZJRikgewo+ID4gICAgICAgICBp bnQgaGFzX2NvbG9yX2luZm8gPSB0cmFjay0+cGFyLT5jb2xvcl9wcmltYXJpZXMgIT0gQVZDT0xf UFJJX1VOU1BFQ0lGSUVEICYmCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNr LT5wYXItPmNvbG9yX3RyYyAhPSBBVkNPTF9UUkNfVU5TUEVDSUZJRUQgJiYKPiA+ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdHJhY2stPnBhci0+Y29sb3Jfc3BhY2UgIT0gQVZDT0xfU1BD X1VOU1BFQ0lGSUVEOwo+ID4gQEAgLTIzMjQsNiArMjM0Niw5IEBAIHN0YXRpYyBpbnQgbW92X3dy aXRlX3ZpZGVvX3RhZyhBVkZvcm1hdENvbnRleHQgKnMsIEFWSU9Db250ZXh0ICpwYiwgTU9WTXV4 Q29udGV4Cj4gPiAgICAgaWYgKGF2aWQpCj4gPiAgICAgICAgIGF2aW9fd2IzMihwYiwgMCk7Cj4g Pgo+ID4gKyAgICBpZiAodHJhY2stPm1vZGUgPT0gTU9ERV9BVklGKQo+ID4gKyAgICAgICAgbW92 X3dyaXRlX2Njc3RfdGFnKHBiKTsKPiA+ICsKPiA+ICAgICByZXR1cm4gdXBkYXRlX3NpemUocGIs IHBvcyk7Cj4gPiB9Cj4gPgo+ID4gQEAgLTI4MjUsNyArMjg1MCwxMCBAQCBzdGF0aWMgaW50IG1v dl93cml0ZV9oZGxyX3RhZyhBVkZvcm1hdENvbnRleHQgKnMsIEFWSU9Db250ZXh0ICpwYiwgTU9W VHJhY2sgKnRyYQo+ID4KPiA+ICAgICBpZiAodHJhY2spIHsKPiA+ICAgICAgICAgaGRsciA9ICh0 cmFjay0+bW9kZSA9PSBNT0RFX01PVikgPyAibWhsciIgOiAiXDBcMFwwXDAiOwo+ID4gLSAgICAg ICAgaWYgKHRyYWNrLT5wYXItPmNvZGVjX3R5cGUgPT0gQVZNRURJQV9UWVBFX1ZJREVPKSB7Cj4g PiArICAgICAgICBpZiAodHJhY2stPm1vZGUgPT0gTU9ERV9BVklGKSB7Cj4gPiArICAgICAgICAg ICAgaGRscl90eXBlID0gInBpY3QiOwo+ID4gKyAgICAgICAgICAgIGRlc2NyID0gIlBpY3R1cmVI YW5kbGVyIjsKPiA+ICsgICAgICAgIH0gZWxzZSBpZiAodHJhY2stPnBhci0+Y29kZWNfdHlwZSA9 PSBBVk1FRElBX1RZUEVfVklERU8pIHsKPgo+IEkgcHJlZmVyIHB1dCBjaGVjayBpbnNpZGUgdGhl IOKAmGlmICh0cmFjay0+cGFyLT5jb2RlY190eXBlID09IEFWTUVESUFfVFlQRV9WSURFTynigJku Cj4gSXTigJlzIGEgc3BlY2lhbCBjYXNlIG9mIOKAmEFWTUVESUFfVFlQRV9WSURFT+KAmS4KPgoK RG9uZS4KCj4gPiAgICAgICAgICAgICBoZGxyX3R5cGUgPSAidmlkZSI7Cj4gPiAgICAgICAgICAg ICBkZXNjciAgICAgPSAiVmlkZW9IYW5kbGVyIjsKPiA+ICAgICAgICAgfSBlbHNlIGlmICh0cmFj ay0+cGFyLT5jb2RlY190eXBlID09IEFWTUVESUFfVFlQRV9BVURJTykgewo+ID4gQEAgLTI4OTIs NiArMjkyMCwxMjggQEAgc3RhdGljIGludCBtb3Zfd3JpdGVfaGRscl90YWcoQVZGb3JtYXRDb250 ZXh0ICpzLCBBVklPQ29udGV4dCAqcGIsIE1PVlRyYWNrICp0cmEKPiA+ICAgICByZXR1cm4gdXBk YXRlX3NpemUocGIsIHBvcyk7Cj4gPiB9Cj4gPgo+ID4gK3N0YXRpYyBpbnQgbW92X3dyaXRlX3Bp dG1fdGFnKEFWSU9Db250ZXh0ICpwYiwgaW50IGl0ZW1faWQpCj4gPiArewo+ID4gKyAgICBpbnQ2 NF90IHBvcyA9IGF2aW9fdGVsbChwYik7Cj4gPiArICAgIGF2aW9fd2IzMihwYiwgMCk7IC8qIHNp emUgKi8KPiA+ICsgICAgZmZpb193Zm91cmNjKHBiLCAicGl0bSIpOwo+ID4gKyAgICBhdmlvX3di MzIocGIsIDApOyAvKiBWZXJzaW9uICYgZmxhZ3MgKi8KPiA+ICsgICAgYXZpb193YjE2KHBiLCBp dGVtX2lkKTsgLyogaXRlbV9pZCAqLwo+ID4gKyAgICByZXR1cm4gdXBkYXRlX3NpemUocGIsIHBv cyk7Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyBpbnQgbW92X3dyaXRlX2lsb2NfdGFnKEFWSU9D b250ZXh0ICpwYiwgTU9WTXV4Q29udGV4dCAqbW92LCBBVkZvcm1hdENvbnRleHQgKnMpCj4gPiAr ewo+ID4gKyAgICBpbnQ2NF90IHBvcyA9IGF2aW9fdGVsbChwYik7Cj4gPiArICAgIGF2aW9fd2Iz MihwYiwgMCk7IC8qIHNpemUgKi8KPiA+ICsgICAgZmZpb193Zm91cmNjKHBiLCAiaWxvYyIpOwo+ ID4gKyAgICBhdmlvX3diMzIocGIsIDApOyAvKiBWZXJzaW9uICYgZmxhZ3MgKi8KPiA+ICsgICAg YXZpb193OChwYiwgKDQgPDwgNCkgKyA0KTsgLyogb2Zmc2V0X3NpemUoNCkgYW5kIGxlbmd0aF9z aXplKDQpICovCj4gPiArICAgIGF2aW9fdzgocGIsIDApOyAvKiBiYXNlX29mZnNldF9zaXplKDQp IGFuZCByZXNlcnZlZCg0KSAqLwo+ID4gKyAgICBhdmlvX3diMTYocGIsIDEpOyAvKiBpdGVtX2Nv dW50ICovCj4gPiArCj4gPiArICAgIGF2aW9fd2IxNihwYiwgMSk7IC8qIGl0ZW1faWQgKi8KPiA+ ICsgICAgYXZpb193YjE2KHBiLCAwKTsgLyogZGF0YV9yZWZlcmVuY2VfaW5kZXggKi8KPiA+ICsg ICAgYXZpb193YjE2KHBiLCAxKTsgLyogZXh0ZW50X2NvdW50ICovCj4gPiArICAgIG1vdi0+YXZp Zl9leHRlbnRfcG9zID0gYXZpb190ZWxsKHBiKTsKPiA+ICsgICAgYXZpb193YjMyKHBiLCAwKTsg LyogZXh0ZW50X29mZnNldCAod3JpdHRlbiBsYXRlcikgKi8KPiA+ICsgICAgLy8gRm9yIGFuaW1h dGVkIEFWSUYsIHdlIHNpbXBseSB3cml0ZSB0aGUgZmlyc3QgcGFja2V0J3Mgc2l6ZS4KPiA+ICsg ICAgYXZpb193YjMyKHBiLCBtb3YtPmF2aWZfZXh0ZW50X2xlbmd0aCk7IC8qIGV4dGVudF9sZW5n dGggKi8KPiA+ICsKPiA+ICsgICAgcmV0dXJuIHVwZGF0ZV9zaXplKHBiLCBwb3MpOwo+ID4gK30K PiA+ICsKPiA+ICtzdGF0aWMgaW50IG1vdl93cml0ZV9paW5mX3RhZyhBVklPQ29udGV4dCAqcGIs IE1PVk11eENvbnRleHQgKm1vdiwgQVZGb3JtYXRDb250ZXh0ICpzKQo+ID4gK3sKPiA+ICsgICAg aW50NjRfdCBpbmZlX3BvczsKPiA+ICsgICAgaW50NjRfdCBpaW5mX3BvcyA9IGF2aW9fdGVsbChw Yik7Cj4gPiArICAgIGF2aW9fd2IzMihwYiwgMCk7IC8qIHNpemUgKi8KPiA+ICsgICAgZmZpb193 Zm91cmNjKHBiLCAiaWluZiIpOwo+ID4gKyAgICBhdmlvX3diMzIocGIsIDApOyAvKiBWZXJzaW9u ICYgZmxhZ3MgKi8KPiA+ICsgICAgYXZpb193YjE2KHBiLCAxKTsgLyogZW50cnlfY291bnQgKi8K PiA+ICsKPiA+ICsgICAgaW5mZV9wb3MgPSBhdmlvX3RlbGwocGIpOwo+ID4gKyAgICBhdmlvX3di MzIocGIsIDApOyAvKiBzaXplICovCj4gPiArICAgIGZmaW9fd2ZvdXJjYyhwYiwgImluZmUiKTsK PiA+ICsgICAgYXZpb193OChwYiwgMHgyKTsgLyogVmVyc2lvbiAqLwo+ID4gKyAgICBhdmlvX3di MjQocGIsIDApOyAvKiBmbGFncyAqLwo+ID4gKyAgICBhdmlvX3diMTYocGIsIDEpOyAvKiBpdGVt X2lkICovCj4gPiArICAgIGF2aW9fd2IxNihwYiwgMCk7IC8qIGl0ZW1fcHJvdGVjdGlvbl9pbmRl eCAqLwo+ID4gKyAgICBhdmlvX3dyaXRlKHBiLCAiYXYwMSIsIDQpOyAvKiBpdGVtX3R5cGUgKi8K PiA+ICsgICAgYXZpb193cml0ZShwYiwgIkNvbG9yXDAiLCA2KTsgLyogaXRlbV9uYW1lICovCj4g PiArICAgIHVwZGF0ZV9zaXplKHBiLCBpbmZlX3Bvcyk7Cj4gPiArCj4gPiArICAgIHJldHVybiB1 cGRhdGVfc2l6ZShwYiwgaWluZl9wb3MpOwo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgaW50IG1v dl93cml0ZV9pc3BlX3RhZyhBVklPQ29udGV4dCAqcGIsIE1PVk11eENvbnRleHQgKm1vdiwgQVZG b3JtYXRDb250ZXh0ICpzKQo+ID4gK3sKPiA+ICsgICAgaW50NjRfdCBwb3MgPSBhdmlvX3RlbGwo cGIpOwo+ID4gKyAgICBhdmlvX3diMzIocGIsIDApOyAvKiBzaXplICovCj4gPiArICAgIGZmaW9f d2ZvdXJjYyhwYiwgImlzcGUiKTsKPiA+ICsgICAgYXZpb193YjMyKHBiLCAwKTsgLyogVmVyc2lv biAmIGZsYWdzICovCj4gPiArICAgIGF2aW9fd2IzMihwYiwgcy0+c3RyZWFtc1swXS0+Y29kZWNw YXItPndpZHRoKTsgLyogaW1hZ2Vfd2lkdGggKi8KPiA+ICsgICAgYXZpb193YjMyKHBiLCBzLT5z dHJlYW1zWzBdLT5jb2RlY3Bhci0+aGVpZ2h0KTsgLyogaW1hZ2VfaGVpZ2h0ICovCj4gPiArICAg IHJldHVybiB1cGRhdGVfc2l6ZShwYiwgcG9zKTsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIGlu dCBtb3Zfd3JpdGVfcGl4aV90YWcoQVZJT0NvbnRleHQgKnBiLCBNT1ZNdXhDb250ZXh0ICptb3Ys IEFWRm9ybWF0Q29udGV4dCAqcykKPiA+ICt7Cj4gPiArICAgIGludDY0X3QgcG9zID0gYXZpb190 ZWxsKHBiKTsKPiA+ICsgICAgY29uc3QgQVZQaXhGbXREZXNjcmlwdG9yICpwaXhkZXNjID0gYXZf cGl4X2ZtdF9kZXNjX2dldChzLT5zdHJlYW1zWzBdLT5jb2RlY3Bhci0+Zm9ybWF0KTsKPiA+ICsg ICAgYXZpb193YjMyKHBiLCAwKTsgLyogc2l6ZSAqLwo+ID4gKyAgICBmZmlvX3dmb3VyY2MocGIs ICJwaXhpIik7Cj4gPiArICAgIGF2aW9fd2IzMihwYiwgMCk7IC8qIFZlcnNpb24gJiBmbGFncyAq Lwo+ID4gKyAgICBhdmlvX3c4KHBiLCBwaXhkZXNjLT5uYl9jb21wb25lbnRzKTsgLyogbnVtX2No YW5uZWxzICovCj4gPiArICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcGl4ZGVzYy0+bmJfY29tcG9u ZW50czsgKytpKSB7Cj4gPiArICAgICAgYXZpb193OChwYiwgcGl4ZGVzYy0+Y29tcFtpXS5kZXB0 aCk7IC8qIGJpdHNfcGVyX2NoYW5uZWwgKi8KPiA+ICsgICAgfQo+ID4gKyAgICByZXR1cm4gdXBk YXRlX3NpemUocGIsIHBvcyk7Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyBpbnQgbW92X3dyaXRl X2lwY29fdGFnKEFWSU9Db250ZXh0ICpwYiwgTU9WTXV4Q29udGV4dCAqbW92LCBBVkZvcm1hdENv bnRleHQgKnMpCj4gPiArewo+ID4gKyAgICBpbnQ2NF90IHBvcyA9IGF2aW9fdGVsbChwYik7Cj4g PiArICAgIGF2aW9fd2IzMihwYiwgMCk7IC8qIHNpemUgKi8KPiA+ICsgICAgZmZpb193Zm91cmNj KHBiLCAiaXBjbyIpOwo+ID4gKyAgICBtb3Zfd3JpdGVfaXNwZV90YWcocGIsIG1vdiwgcyk7Cj4g PiArICAgIG1vdl93cml0ZV9waXhpX3RhZyhwYiwgbW92LCBzKTsKPiA+ICsgICAgbW92X3dyaXRl X2F2MWNfdGFnKHBiLCAmbW92LT50cmFja3NbMF0pOwo+ID4gKyAgICBtb3Zfd3JpdGVfY29scl90 YWcocGIsICZtb3YtPnRyYWNrc1swXSwgMCk7Cj4gPiArICAgIHJldHVybiB1cGRhdGVfc2l6ZShw YiwgcG9zKTsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIGludCBtb3Zfd3JpdGVfaXBtYV90YWco QVZJT0NvbnRleHQgKnBiLCBNT1ZNdXhDb250ZXh0ICptb3YsIEFWRm9ybWF0Q29udGV4dCAqcykK PiA+ICt7Cj4gPiArICAgIGludDY0X3QgcG9zID0gYXZpb190ZWxsKHBiKTsKPiA+ICsgICAgYXZp b193YjMyKHBiLCAwKTsgLyogc2l6ZSAqLwo+ID4gKyAgICBmZmlvX3dmb3VyY2MocGIsICJpcG1h Iik7Cj4gPiArICAgIGF2aW9fd2IzMihwYiwgMCk7IC8qIFZlcnNpb24gJiBmbGFncyAqLwo+ID4g KyAgICBhdmlvX3diMzIocGIsIDEpOyAvKiBlbnRyeV9jb3VudCAqLwo+ID4gKyAgICBhdmlvX3di MTYocGIsIDEpOyAvKiBpdGVtX0lEICovCj4gPiArICAgIGF2aW9fdzgocGIsIDQpOyAvKiBhc3Nv Y2lhdGlvbl9jb3VudCAqLwo+ID4gKwo+ID4gKyAgICAvLyBpc3BlIGFzc29jaWF0aW9uLgo+ID4g KyAgICBhdmlvX3c4KHBiLCAxKTsgLyogZXNzZW50aWFsIGFuZCBwcm9wZXJ0eV9pbmRleCAqLwo+ ID4gKyAgICAvLyBwaXhpIGFzc29jaWF0aW9uLgo+ID4gKyAgICBhdmlvX3c4KHBiLCAyKTsgLyog ZXNzZW50aWFsIGFuZCBwcm9wZXJ0eV9pbmRleCAqLwo+ID4gKyAgICAvLyBhdjFDIGFzc29jaWF0 aW9uLgo+ID4gKyAgICBhdmlvX3c4KHBiLCAweDgwIHwgMyk7IC8qIGVzc2VudGlhbCBhbmQgcHJv cGVydHlfaW5kZXggKi8KPiA+ICsgICAgLy8gY29sciBhc3NvY2lhdGlvbi4KPiA+ICsgICAgYXZp b193OChwYiwgNCk7IC8qIGVzc2VudGlhbCBhbmQgcHJvcGVydHlfaW5kZXggKi8KPiA+ICsgICAg cmV0dXJuIHVwZGF0ZV9zaXplKHBiLCBwb3MpOwo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgaW50 IG1vdl93cml0ZV9pcHJwX3RhZyhBVklPQ29udGV4dCAqcGIsIE1PVk11eENvbnRleHQgKm1vdiwg QVZGb3JtYXRDb250ZXh0ICpzKQo+ID4gK3sKPiA+ICsgICAgaW50NjRfdCBwb3MgPSBhdmlvX3Rl bGwocGIpOwo+ID4gKyAgICBhdmlvX3diMzIocGIsIDApOyAvKiBzaXplICovCj4gPiArICAgIGZm aW9fd2ZvdXJjYyhwYiwgImlwcnAiKTsKPiA+ICsgICAgbW92X3dyaXRlX2lwY29fdGFnKHBiLCBt b3YsIHMpOwo+ID4gKyAgICBtb3Zfd3JpdGVfaXBtYV90YWcocGIsIG1vdiwgcyk7Cj4gPiArICAg IHJldHVybiB1cGRhdGVfc2l6ZShwYiwgcG9zKTsKPiA+ICt9Cj4gPiArCj4gPiBzdGF0aWMgaW50 IG1vdl93cml0ZV9obWhkX3RhZyhBVklPQ29udGV4dCAqcGIpCj4gPiB7Cj4gPiAgICAgLyogVGhp cyBhdG9tIG11c3QgYmUgcHJlc2VudCwgYnV0IGxlYXZpbmcgdGhlIHZhbHVlcyBhdCB6ZXJvCj4g PiBAQCAtMzA4OSw3ICszMjM5LDcgQEAgc3RhdGljIGludCBtb3Zfd3JpdGVfdGtoZF90YWcoQVZJ T0NvbnRleHQgKnBiLCBNT1ZNdXhDb250ZXh0ICptb3YsCj4gPiAgICAgICAgICAgICBkaXNwbGF5 X21hdHJpeCA9IE5VTEw7Cj4gPiAgICAgfQo+ID4KPiA+IC0gICAgaWYgKHRyYWNrLT5mbGFncyAm IE1PVl9UUkFDS19FTkFCTEVEKQo+ID4gKyAgICBpZiAodHJhY2stPmZsYWdzICYgTU9WX1RSQUNL X0VOQUJMRUQgfHwgdHJhY2stPm1vZGUgPT0gTU9ERV9BVklGKQo+ID4gICAgICAgICBmbGFncyB8 PSBNT1ZfVEtIRF9GTEFHX0VOQUJMRUQ7Cj4KPiBTZXQgdHJhY2stPmZsYWdzIHByb3Blcmx5IHRv IGF2b2lkIGFkZGluZyB0aGUgbW9kZSBjaGVjayBldmVyeXdoZXJlLgo+CgpEb25lLiBJIGhhdmUg c2V0IHRoZSBkaXNwb3NpdGlvbiBmaWVsZCBpbiBtb3ZfaW5pdCB3aGljaCB3aWxsIGluLXR1cm4K c2V0IHRoZSB0cmFjay0+ZmxhZ3MgcHJvcGVybHkuCgo+ID4KPiA+ICAgICBpZiAodHJhY2stPm1v ZGUgPT0gTU9ERV9JU00pCj4gPiBAQCAtMzEzNyw3ICszMjg3LDcgQEAgc3RhdGljIGludCBtb3Zf d3JpdGVfdGtoZF90YWcoQVZJT0NvbnRleHQgKnBiLCBNT1ZNdXhDb250ZXh0ICptb3YsCj4gPiAg ICAgaWYgKHN0ICYmICh0cmFjay0+cGFyLT5jb2RlY190eXBlID09IEFWTUVESUFfVFlQRV9WSURF TyB8fAo+ID4gICAgICAgICAgICAgICAgdHJhY2stPnBhci0+Y29kZWNfdHlwZSA9PSBBVk1FRElB X1RZUEVfU1VCVElUTEUpKSB7Cj4gPiAgICAgICAgIGludDY0X3QgdHJhY2tfd2lkdGhfMTYxNjsK PiA+IC0gICAgICAgIGlmICh0cmFjay0+bW9kZSA9PSBNT0RFX01PVikgewo+ID4gKyAgICAgICAg aWYgKHRyYWNrLT5tb2RlID09IE1PREVfTU9WIHx8IHRyYWNrLT5tb2RlID09IE1PREVfQVZJRikg ewo+ID4gICAgICAgICAgICAgdHJhY2tfd2lkdGhfMTYxNiA9IHRyYWNrLT5wYXItPndpZHRoICog MHgxMDAwMFVMTDsKPiA+ICAgICAgICAgfSBlbHNlIHsKPiA+ICAgICAgICAgICAgIHRyYWNrX3dp ZHRoXzE2MTYgPSBhdl9yZXNjYWxlKHN0LT5zYW1wbGVfYXNwZWN0X3JhdGlvLm51bSwKPiA+IEBA IC0zNDcyLDcgKzM2MjIsOCBAQCBzdGF0aWMgaW50IG1vdl93cml0ZV90cmFrX3RhZyhBVkZvcm1h dENvbnRleHQgKnMsIEFWSU9Db250ZXh0ICpwYiwgTU9WTXV4Q29udGV4dAo+ID4gICAgICAgICAg ICAgbW92X3dyaXRlX3RhcHRfdGFnKHBiLCB0cmFjayk7Cj4gPiAgICAgICAgIH0KPiA+ICAgICB9 Cj4gPiAtICAgIG1vdl93cml0ZV90cmFja191ZHRhX3RhZyhwYiwgbW92LCBzdCk7Cj4gPiArICAg IGlmICh0cmFjay0+bW9kZSAhPSBNT0RFX0FWSUYpCj4gPiArICAgICAgICBtb3Zfd3JpdGVfdHJh Y2tfdWR0YV90YWcocGIsIG1vdiwgc3QpOwo+Cj4gUGxlYXNlIGNoZWNrIGlmIHRoZSBjaGVjayBj YW4gYmUgcmVtb3ZlZC4gbW92X3dyaXRlX3RyYWNrX3VkdGFfdGFnKCkgZG9lcyBub3RoaW5nCj4g Zm9yIG1vZGUgb3RoZXIgdGhhbiBNT1YvTVA0Lgo+Cgptb3Zfd3JpdGVfdHJhY2tfdWR0YV90YWco KSB3cml0ZXMgaXR1bmVzIG1ldGEgYW5kIGxvY2kgdGFncyB3aGVuIG1vZGUKaXMgbm90IE1PVi9N UDQuIFNvIHRoaXMgY2hlY2sgaXMgbmVjZXNzYXJ5LgoKPiA+ICAgICB0cmFjay0+ZW50cnkgPSBl bnRyeV9iYWNrdXA7Cj4gPiAgICAgdHJhY2stPmNodW5rQ291bnQgPSBjaHVua19iYWNrdXA7Cj4g PiAgICAgcmV0dXJuIHVwZGF0ZV9zaXplKHBiLCBwb3MpOwo+ID4gQEAgLTM5NDcsOCArNDA5OCwx NSBAQCBzdGF0aWMgaW50IG1vdl93cml0ZV9tZXRhX3RhZyhBVklPQ29udGV4dCAqcGIsIE1PVk11 eENvbnRleHQgKm1vdiwKPiA+ICAgICAgICAgbW92X3dyaXRlX21kdGFfaGRscl90YWcocGIsIG1v diwgcyk7Cj4gPiAgICAgICAgIG1vdl93cml0ZV9tZHRhX2tleXNfdGFnKHBiLCBtb3YsIHMpOwo+ ID4gICAgICAgICBtb3Zfd3JpdGVfbWR0YV9pbHN0X3RhZyhwYiwgbW92LCBzKTsKPiA+IC0gICAg fQo+ID4gLSAgICBlbHNlIHsKPiA+ICsgICAgfSBlbHNlIGlmIChtb3YtPm1vZGUgPT0gTU9ERV9B VklGKSB7Cj4gPiArICAgICAgICBtb3Zfd3JpdGVfaGRscl90YWcocywgcGIsICZtb3YtPnRyYWNr c1swXSk7Cj4gPiArICAgICAgICAvLyBXZSBhbHdheXMgd3JpdGUgdGhlIHByaW1hcnkgaXRlbSBp ZCBhcyAxIHNpbmNlIG9ubHkgb25lIHRyYWNrIGlzCj4gPiArICAgICAgICAvLyBzdXBwb3J0ZWQg Zm9yIEFWSUYuCj4gPiArICAgICAgICBtb3Zfd3JpdGVfcGl0bV90YWcocGIsIDEpOwo+ID4gKyAg ICAgICAgbW92X3dyaXRlX2lsb2NfdGFnKHBiLCBtb3YsIHMpOwo+ID4gKyAgICAgICAgbW92X3dy aXRlX2lpbmZfdGFnKHBiLCBtb3YsIHMpOwo+ID4gKyAgICAgICAgbW92X3dyaXRlX2lwcnBfdGFn KHBiLCBtb3YsIHMpOwo+ID4gKyAgICB9IGVsc2Ugewo+ID4gICAgICAgICAvKiBpVHVuZXMgbWV0 YWRhdGEgdGFnICovCj4gPiAgICAgICAgIG1vdl93cml0ZV9pdHVuZXNfaGRscl90YWcocGIsIG1v diwgcyk7Cj4gPiAgICAgICAgIG1vdl93cml0ZV9pbHN0X3RhZyhwYiwgbW92LCBzKTsKPiA+IEBA IC00Mjc4LDEwICs0NDM2LDExIEBAIHN0YXRpYyBpbnQgbW92X3dyaXRlX21vb3ZfdGFnKEFWSU9D b250ZXh0ICpwYiwgTU9WTXV4Q29udGV4dCAqbW92LAo+ID4gICAgIH0KPiA+Cj4gPiAgICAgbW92 X3dyaXRlX212aGRfdGFnKHBiLCBtb3YpOwo+ID4gLSAgICBpZiAobW92LT5tb2RlICE9IE1PREVf TU9WICYmICFtb3YtPmlvZHNfc2tpcCkKPiA+ICsgICAgaWYgKG1vdi0+bW9kZSAhPSBNT0RFX01P ViAmJiBtb3YtPm1vZGUgIT0gTU9ERV9BVklGICYmICFtb3YtPmlvZHNfc2tpcCkKPiA+ICAgICAg ICAgbW92X3dyaXRlX2lvZHNfdGFnKHBiLCBtb3YpOwo+ID4gICAgIGZvciAoaSA9IDA7IGkgPCBt b3YtPm5iX3N0cmVhbXM7IGkrKykgewo+ID4gLSAgICAgICAgaWYgKG1vdi0+dHJhY2tzW2ldLmVu dHJ5ID4gMCB8fCBtb3YtPmZsYWdzICYgRkZfTU9WX0ZMQUdfRlJBR01FTlQpIHsKPiA+ICsgICAg ICAgIGlmIChtb3YtPnRyYWNrc1tpXS5lbnRyeSA+IDAgfHwgbW92LT5mbGFncyAmIEZGX01PVl9G TEFHX0ZSQUdNRU5UIHx8Cj4gPiArICAgICAgICAgICAgbW92LT5tb2RlID09IE1PREVfQVZJRikg ewo+ID4gICAgICAgICAgICAgaW50IHJldCA9IG1vdl93cml0ZV90cmFrX3RhZyhzLCBwYiwgbW92 LCAmKG1vdi0+dHJhY2tzW2ldKSwgaSA8IHMtPm5iX3N0cmVhbXMgPyBzLT5zdHJlYW1zW2ldIDog TlVMTCk7Cj4gPiAgICAgICAgICAgICBpZiAocmV0IDwgMCkKPiA+ICAgICAgICAgICAgICAgICBy ZXR1cm4gcmV0Owo+ID4gQEAgLTQyOTIsNyArNDQ1MSw3IEBAIHN0YXRpYyBpbnQgbW92X3dyaXRl X21vb3ZfdGFnKEFWSU9Db250ZXh0ICpwYiwgTU9WTXV4Q29udGV4dCAqbW92LAo+ID4KPiA+ICAg ICBpZiAobW92LT5tb2RlID09IE1PREVfUFNQKQo+ID4gICAgICAgICBtb3Zfd3JpdGVfdXVpZHVz bXRfdGFnKHBiLCBzKTsKPiA+IC0gICAgZWxzZQo+ID4gKyAgICBlbHNlIGlmIChtb3YtPm1vZGUg IT0gTU9ERV9BVklGKQo+ID4gICAgICAgICBtb3Zfd3JpdGVfdWR0YV90YWcocGIsIG1vdiwgcyk7 Cj4gPgo+ID4gICAgIHJldHVybiB1cGRhdGVfc2l6ZShwYiwgcG9zKTsKPiA+IEBAIC01MDM5LDYg KzUxOTgsOSBAQCBzdGF0aWMgdm9pZCBtb3Zfd3JpdGVfZnR5cF90YWdfaW50ZXJuYWwoQVZJT0Nv bnRleHQgKnBiLCBBVkZvcm1hdENvbnRleHQgKnMsCj4gPiAgICAgZWxzZSBpZiAobW92LT5tb2Rl ID09IE1PREVfM0dQKSB7Cj4gPiAgICAgICAgIGZmaW9fd2ZvdXJjYyhwYiwgaGFzX2gyNjQgPyAi M2dwNiIgIDogIjNncDQiKTsKPiA+ICAgICAgICAgbWlub3IgPSAgICAgaGFzX2gyNjQgPyAgIDB4 MTAwIDogICAweDIwMDsKPiA+ICsgICAgfSBlbHNlIGlmIChtb3YtPm1vZGUgPT0gTU9ERV9BVklG KSB7Cj4gPiArICAgICAgICBmZmlvX3dmb3VyY2MocGIsIG1vdi0+aXNfYW5pbWF0ZWRfYXZpZiA/ ICJhdmlzIiA6ICJhdmlmIik7Cj4gPiArICAgICAgICBtaW5vciA9IDA7Cj4gPiAgICAgfSBlbHNl IGlmIChtb3YtPm1vZGUgJiBNT0RFXzNHMikgewo+ID4gICAgICAgICBmZmlvX3dmb3VyY2MocGIs IGhhc19oMjY0ID8gIjNnMmIiICA6ICIzZzJhIik7Cj4gPiAgICAgICAgIG1pbm9yID0gICAgIGhh c19oMjY0ID8gMHgyMDAwMCA6IDB4MTAwMDA7Cj4gPiBAQCAtNTEwMiw2ICs1MjY0LDMxIEBAIHN0 YXRpYyBpbnQgbW92X3dyaXRlX2Z0eXBfdGFnKEFWSU9Db250ZXh0ICpwYiwgQVZGb3JtYXRDb250 ZXh0ICpzKQo+ID4gICAgIC8vIGNvbXBhdGlibGUgYnJhbmQgYSBzZWNvbmQgdGltZS4KPiA+ICAg ICBpZiAobW92LT5tb2RlID09IE1PREVfSVNNKSB7Cj4gPiAgICAgICAgIGZmaW9fd2ZvdXJjYyhw YiwgInBpZmYiKTsKPiA+ICsgICAgfSBlbHNlIGlmIChtb3YtPm1vZGUgPT0gTU9ERV9BVklGKSB7 Cj4gPiArICAgICAgICBjb25zdCBBVlBpeEZtdERlc2NyaXB0b3IgKnBpeF9mbXRfZGVzYyA9Cj4g PiArICAgICAgICAgICAgYXZfcGl4X2ZtdF9kZXNjX2dldChzLT5zdHJlYW1zWzBdLT5jb2RlY3Bh ci0+Zm9ybWF0KTsKPiA+ICsgICAgICAgIGNvbnN0IGludCBkZXB0aCA9IHBpeF9mbXRfZGVzYy0+ Y29tcFswXS5kZXB0aDsKPiA+ICsgICAgICAgIGlmIChtb3YtPmlzX2FuaW1hdGVkX2F2aWYpIHsK PiA+ICsgICAgICAgICAgICAvLyBGb3IgYW5pbWF0ZWQgQVZJRiwgbWFqb3IgYnJhbmQgaXMgImF2 aXMiLiBBZGQgImF2aWYiIGFzIGEKPiA+ICsgICAgICAgICAgICAvLyBjb21wYXRpYmxlIGJyYW5k Lgo+ID4gKyAgICAgICAgICAgIGZmaW9fd2ZvdXJjYyhwYiwgImF2aWYiKTsKPiA+ICsgICAgICAg ICAgICBmZmlvX3dmb3VyY2MocGIsICJtc2YxIik7Cj4gPiArICAgICAgICAgICAgZmZpb193Zm91 cmNjKHBiLCAiaXNvOCIpOwo+ID4gKyAgICAgICAgfQo+ID4gKyAgICAgICAgZmZpb193Zm91cmNj KHBiLCAibWlmMSIpOwo+ID4gKyAgICAgICAgZmZpb193Zm91cmNjKHBiLCAibWlhZiIpOwo+ID4g KyAgICAgICAgaWYgKGRlcHRoID09IDggfHwgZGVwdGggPT0gMTApIHsKPiA+ICsgICAgICAgICAg ICAvLyBNQTFCIGFuZCBNQTFBIGJyYW5kcyBhcmUgYmFzZWQgb24gQVYxIHByb2ZpbGUuIFNob3J0 IGhhbmQgZm9yCj4gPiArICAgICAgICAgICAgLy8gY29tcHV0aW5nIHRoYXQgaXMgYmFzZWQgb24g Y2hyb21hIHN1YnNhbXBsaW5nIHR5cGUuIDQyMCBjaHJvbWEKPiA+ICsgICAgICAgICAgICAvLyBz dWJzYW1wbGluZyBpcyBNQTFCLiAgNDQ0IGNocm9tYSBzdWJzYW1wbGluZyBpcyBNQTFBLgo+ID4g KyAgICAgICAgICAgIGlmICghcGl4X2ZtdF9kZXNjLT5sb2cyX2Nocm9tYV93ICYmICFwaXhfZm10 X2Rlc2MtPmxvZzJfY2hyb21hX2gpIHsKPiA+ICsgICAgICAgICAgICAgICAgLy8gNDQ0IGNocm9t YSBzdWJzYW1wbGluZy4KPiA+ICsgICAgICAgICAgICAgICAgZmZpb193Zm91cmNjKHBiLCAiTUEx QSIpOwo+ID4gKyAgICAgICAgICAgIH0gZWxzZSB7Cj4gPiArICAgICAgICAgICAgICAgIC8vIDQy MCBjaHJvbWEgc3Vic2FtcGxpbmcuCj4gPiArICAgICAgICAgICAgICAgIGZmaW9fd2ZvdXJjYyhw YiwgIk1BMUIiKTsKPiA+ICsgICAgICAgICAgICB9Cj4gPiArICAgICAgICB9Cj4gPiAgICAgfSBl bHNlIGlmIChtb3YtPm1vZGUgIT0gTU9ERV9NT1YpIHsKPiA+ICAgICAgICAgLy8gV2UgYWRkIHRm ZHQgYXRvbXMgd2hlbiBmcmFnbWVudGluZywgc2lnbmFsIHRoaXMgd2l0aCB0aGUgaXNvNiBjb21w YXRpYmxlCj4gPiAgICAgICAgIC8vIGJyYW5kLCBpZiBub3QgYWxyZWFkeSB0aGUgbWFqb3IgYnJh bmQuIFRoaXMgaXMgY29tcGF0aWJsZSB3aXRoIHVzZXJzIHRoYXQKPiA+IEBAIC01NzA1LDcgKzU4 OTIsNyBAQCBpbnQgZmZfbW92X3dyaXRlX3BhY2tldChBVkZvcm1hdENvbnRleHQgKnMsIEFWUGFj a2V0ICpwa3QpCj4gPiAgICAgaWYgKHJldCA8IDApCj4gPiAgICAgICAgIHJldHVybiByZXQ7Cj4g Pgo+ID4gLSAgICBpZiAobW92LT5mbGFncyAmIEZGX01PVl9GTEFHX0ZSQUdNRU5UKSB7Cj4gPiAr ICAgIGlmIChtb3YtPmZsYWdzICYgRkZfTU9WX0ZMQUdfRlJBR01FTlQgfHwgbW92LT5tb2RlID09 IE1PREVfQVZJRikgewo+ID4gICAgICAgICBpbnQgcmV0Owo+ID4gICAgICAgICBpZiAobW92LT5t b292X3dyaXR0ZW4gfHwgbW92LT5mbGFncyAmIEZGX01PVl9GTEFHX0VNUFRZX01PT1YpIHsKPiA+ ICAgICAgICAgICAgIGlmIChtb3YtPmZyYWdfaW50ZXJsZWF2ZSAmJiBtb3YtPmZyYWdtZW50cyA+ IDApIHsKPiA+IEBAIC01ODQ2LDcgKzYwMzMsMTEgQEAgaW50IGZmX21vdl93cml0ZV9wYWNrZXQo QVZGb3JtYXRDb250ZXh0ICpzLCBBVlBhY2tldCAqcGt0KQo+ID4gICAgICAgICAgICAgYXZpb193 cml0ZShwYiwgcmVmb3JtYXR0ZWRfZGF0YSwgc2l6ZSk7Cj4gPiAgICAgICAgIH0gZWxzZSB7Cj4g PiAgICAgICAgICAgICBzaXplID0gZmZfYXYxX2ZpbHRlcl9vYnVzKHBiLCBwa3QtPmRhdGEsIHBr dC0+c2l6ZSk7Cj4gPiArICAgICAgICAgICAgaWYgKHRyay0+bW9kZSA9PSBNT0RFX0FWSUYgJiYg IW1vdi0+YXZpZl9leHRlbnRfbGVuZ3RoKSB7Cj4gPiArICAgICAgICAgICAgICAgIG1vdi0+YXZp Zl9leHRlbnRfbGVuZ3RoID0gc2l6ZTsKPiA+ICsgICAgICAgICAgICB9Cj4gPiAgICAgICAgIH0K PiA+ICsKPiA+ICNpZiBDT05GSUdfQUMzX1BBUlNFUgo+ID4gICAgIH0gZWxzZSBpZiAocGFyLT5j b2RlY19pZCA9PSBBVl9DT0RFQ19JRF9FQUMzKSB7Cj4gPiAgICAgICAgIHNpemUgPSBoYW5kbGVf ZWFjMyhtb3YsIHBrdCwgdHJrKTsKPiA+IEBAIC02NTc5LDExICs2NzcwLDE1IEBAIHN0YXRpYyBp bnQgbW92X2luaXQoQVZGb3JtYXRDb250ZXh0ICpzKQo+ID4gICAgIGVsc2UgaWYgKElTX01PREUo aXBvZCwgSVBPRCkpIG1vdi0+bW9kZSA9IE1PREVfSVBPRDsKPiA+ICAgICBlbHNlIGlmIChJU19N T0RFKGlzbXYsIElTTVYpKSBtb3YtPm1vZGUgPSBNT0RFX0lTTTsKPiA+ICAgICBlbHNlIGlmIChJ U19NT0RFKGY0diwgICBGNFYpKSBtb3YtPm1vZGUgPSBNT0RFX0Y0VjsKPiA+ICsgICAgZWxzZSBp ZiAoSVNfTU9ERShhdmlmLCBBVklGKSkgbW92LT5tb2RlID0gTU9ERV9BVklGOwo+ID4gI3VuZGVm IElTX01PREUKPiA+Cj4gPiAgICAgaWYgKG1vdi0+ZmxhZ3MgJiBGRl9NT1ZfRkxBR19ERUxBWV9N T09WKQo+ID4gICAgICAgICBtb3YtPmZsYWdzIHw9IEZGX01PVl9GTEFHX0VNUFRZX01PT1Y7Cj4g Pgo+ID4gKyAgICBpZiAobW92LT5tb2RlID09IE1PREVfQVZJRikKPiA+ICsgICAgICAgIG1vdi0+ ZmxhZ3MgfD0gRkZfTU9WX0ZMQUdfREVMQVlfTU9PVjsKPiA+ICsKPiA+ICAgICAvKiBTZXQgdGhl IEZSQUdNRU5UIGZsYWcgaWYgYW55IG9mIHRoZSBmcmFnbWVudGF0aW9uIG1ldGhvZHMgYXJlCj4g PiAgICAgICogZW5hYmxlZC4gKi8KPiA+ICAgICBpZiAobW92LT5tYXhfZnJhZ21lbnRfZHVyYXRp b24gfHwgbW92LT5tYXhfZnJhZ21lbnRfc2l6ZSB8fAo+ID4gQEAgLTY2NjQsMTEgKzY4NTksMjQg QEAgc3RhdGljIGludCBtb3ZfaW5pdChBVkZvcm1hdENvbnRleHQgKnMpCj4gPiAgICAgLyogTm9u LXNlZWthYmxlIG91dHB1dCBpcyBvayBpZiB1c2luZyBmcmFnbWVudGF0aW9uLiBJZiBpc21fbG9v a2FoZWFkCj4gPiAgICAgICogaXMgZW5hYmxlZCwgd2UgZG9uJ3Qgc3VwcG9ydCBub24tc2Vla2Fi bGUgb3V0cHV0IGF0IGFsbC4gKi8KPiA+ICAgICBpZiAoIShzLT5wYi0+c2Vla2FibGUgJiBBVklP X1NFRUtBQkxFX05PUk1BTCkgJiYKPiA+IC0gICAgICAgICghKG1vdi0+ZmxhZ3MgJiBGRl9NT1Zf RkxBR19GUkFHTUVOVCkgfHwgbW92LT5pc21fbG9va2FoZWFkKSkgewo+ID4gKyAgICAgICAgKCEo bW92LT5mbGFncyAmIEZGX01PVl9GTEFHX0ZSQUdNRU5UKSB8fCBtb3YtPmlzbV9sb29rYWhlYWQg fHwKPiA+ICsgICAgICAgICBtb3YtPm1vZGUgPT0gTU9ERV9BVklGKSkgewo+ID4gICAgICAgICBh dl9sb2cocywgQVZfTE9HX0VSUk9SLCAibXV4ZXIgZG9lcyBub3Qgc3VwcG9ydCBub24gc2Vla2Fi bGUgb3V0cHV0XG4iKTsKPiA+ICAgICAgICAgcmV0dXJuIEFWRVJST1IoRUlOVkFMKTsKPiA+ICAg ICB9Cj4gPgo+ID4gKyAgICAvKiBBVklGIG91dHB1dCBtdXN0IGhhdmUgZXhhY3RseSBvbmUgdmlk ZW8gc3RyZWFtICovCj4gPiArICAgIGlmIChtb3YtPm1vZGUgPT0gTU9ERV9BVklGKSB7Cj4gPiAr ICAgICAgICBpZiAocy0+bmJfc3RyZWFtcyA+IDEpIHsKPiA+ICsgICAgICAgICAgICBhdl9sb2co cywgQVZfTE9HX0VSUk9SLCAiQVZJRiBvdXRwdXQgcmVxdWlyZXMgZXhhY3RseSBvbmUgc3RyZWFt XG4iKTsKPiA+ICsgICAgICAgICAgICByZXR1cm4gQVZFUlJPUihFSU5WQUwpOwo+ID4gKyAgICAg ICAgfQo+ID4gKyAgICAgICAgaWYgKHMtPnN0cmVhbXNbMF0tPmNvZGVjcGFyLT5jb2RlY190eXBl ICE9IEFWTUVESUFfVFlQRV9WSURFTykgewo+ID4gKyAgICAgICAgICAgIGF2X2xvZyhzLCBBVl9M T0dfRVJST1IsICJBVklGIG91dHB1dCByZXF1aXJlcyBvbmUgdmlkZW8gc3RyZWFtXG4iKTsKPiA+ ICsgICAgICAgICAgICByZXR1cm4gQVZFUlJPUihFSU5WQUwpOwo+ID4gKyAgICAgICAgfQo+ID4g KyAgICB9Cj4gPiArCj4gPiAgICAgbW92LT5uYl9zdHJlYW1zID0gcy0+bmJfc3RyZWFtczsKPiA+ ICAgICBpZiAobW92LT5tb2RlICYgKE1PREVfTVA0fE1PREVfTU9WfE1PREVfSVBPRCkgJiYgcy0+ bmJfY2hhcHRlcnMpCj4gPiAgICAgICAgIG1vdi0+Y2hhcHRlcl90cmFjayA9IG1vdi0+bmJfc3Ry ZWFtcysrOwo+ID4gQEAgLTY4MTEsMTIgKzcwMTksMTMgQEAgc3RhdGljIGludCBtb3ZfaW5pdChB VkZvcm1hdENvbnRleHQgKnMpCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICBwaXhfZm10ID09 IEFWX1BJWF9GTVRfTU9OT1dISVRFIHx8Cj4gPiAgICAgICAgICAgICAgICAgICAgICAgICBwaXhf Zm10ID09IEFWX1BJWF9GTVRfTU9OT0JMQUNLOwo+ID4gICAgICAgICAgICAgfQo+ID4gLSAgICAg ICAgICAgIGlmICh0cmFjay0+cGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9WUDkgfHwKPiA+ IC0gICAgICAgICAgICAgICAgdHJhY2stPnBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfQVYx KSB7Cj4gPiAtICAgICAgICAgICAgICAgIGlmICh0cmFjay0+bW9kZSAhPSBNT0RFX01QNCkgewo+ ID4gLSAgICAgICAgICAgICAgICAgICAgYXZfbG9nKHMsIEFWX0xPR19FUlJPUiwgIiVzIG9ubHkg c3VwcG9ydGVkIGluIE1QNC5cbiIsIGF2Y29kZWNfZ2V0X25hbWUodHJhY2stPnBhci0+Y29kZWNf aWQpKTsKPiA+IC0gICAgICAgICAgICAgICAgICAgIHJldHVybiBBVkVSUk9SKEVJTlZBTCk7Cj4g PiAtICAgICAgICAgICAgICAgIH0KPiA+ICsgICAgICAgICAgICBpZiAodHJhY2stPnBhci0+Y29k ZWNfaWQgPT0gQVZfQ09ERUNfSURfVlA5ICYmIHRyYWNrLT5tb2RlICE9IE1PREVfTVA0KSB7Cj4g PiArICAgICAgICAgICAgICAgIGF2X2xvZyhzLCBBVl9MT0dfRVJST1IsICIlcyBvbmx5IHN1cHBv cnRlZCBpbiBNUDQuXG4iLCBhdmNvZGVjX2dldF9uYW1lKHRyYWNrLT5wYXItPmNvZGVjX2lkKSk7 Cj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBBVkVSUk9SKEVJTlZBTCk7Cj4gPiArICAgICAg ICAgICAgfSBlbHNlIGlmICh0cmFjay0+cGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9BVjEg JiYKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHRyYWNrLT5tb2RlICE9IE1PREVfTVA0ICYm IHRyYWNrLT5tb2RlICE9IE1PREVfQVZJRikgewo+ID4gKyAgICAgICAgICAgICAgICBhdl9sb2co cywgQVZfTE9HX0VSUk9SLCAiJXMgb25seSBzdXBwb3J0ZWQgaW4gTVA0IGFuZCBBVklGLlxuIiwg YXZjb2RlY19nZXRfbmFtZSh0cmFjay0+cGFyLT5jb2RlY19pZCkpOwo+ID4gKyAgICAgICAgICAg ICAgICByZXR1cm4gQVZFUlJPUihFSU5WQUwpOwo+ID4gICAgICAgICAgICAgfSBlbHNlIGlmICh0 cmFjay0+cGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9WUDgpIHsKPiA+ICAgICAgICAgICAg ICAgICAvKiBhbHRyZWYgZnJhbWVzIGhhbmRsaW5nIGlzIG5vdCBkZWZpbmVkIGluIHRoZSBzcGVj IGFzIG9mIHZlcnNpb24gdjEuMCwKPiA+ICAgICAgICAgICAgICAgICAgKiBzbyBqdXN0IGZvcmJp ZCBtdXhpbmcgVlA4IHN0cmVhbXMgYWx0b2dldGhlciB1bnRpbCBhIG5ldyB2ZXJzaW9uIGRvZXMg Ki8KPiA+IEBAIC03MDM0LDcgKzcyNDMsNyBAQCBzdGF0aWMgaW50IG1vdl93cml0ZV9oZWFkZXIo QVZGb3JtYXRDb250ZXh0ICpzKQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZGX01P Vl9GTEFHX0ZSQUdfRVZFUllfRlJBTUUpKSAmJgo+ID4gICAgICAgICAgICAgIW1vdi0+bWF4X2Zy YWdtZW50X2R1cmF0aW9uICYmICFtb3YtPm1heF9mcmFnbWVudF9zaXplKQo+ID4gICAgICAgICAg ICAgbW92LT5mbGFncyB8PSBGRl9NT1ZfRkxBR19GUkFHX0tFWUZSQU1FOwo+ID4gLSAgICB9IGVs c2Ugewo+ID4gKyAgICB9IGVsc2UgaWYgKG1vdi0+bW9kZSAhPSBNT0RFX0FWSUYpIHsKPiA+ICAg ICAgICAgaWYgKG1vdi0+ZmxhZ3MgJiBGRl9NT1ZfRkxBR19GQVNUU1RBUlQpCj4gPiAgICAgICAg ICAgICBtb3YtPnJlc2VydmVkX2hlYWRlcl9wb3MgPSBhdmlvX3RlbGwocGIpOwo+ID4gICAgICAg ICBtb3Zfd3JpdGVfbWRhdF90YWcocGIsIG1vdik7Cj4gPiBAQCAtNzMyMiw2ICs3NTMxLDUwIEBA IHN0YXRpYyBpbnQgbW92X2NoZWNrX2JpdHN0cmVhbShBVkZvcm1hdENvbnRleHQgKnMsIEFWU3Ry ZWFtICpzdCwKPiA+ICAgICByZXR1cm4gcmV0Owo+ID4gfQo+ID4KPiA+ICtzdGF0aWMgaW50IGF2 aWZfd3JpdGVfdHJhaWxlcihBVkZvcm1hdENvbnRleHQgKnMpCj4gPiArewo+ID4gKyAgICBBVklP Q29udGV4dCAqcGIgPSBzLT5wYjsKPiA+ICsgICAgTU9WTXV4Q29udGV4dCAqbW92ID0gcy0+cHJp dl9kYXRhOwo+ID4gKyAgICBpbnQ2NF90IHBvc19iYWNrdXAsIG1kYXRfcG9zOwo+ID4gKyAgICB1 aW50OF90ICpidWY7Cj4gPiArICAgIGludCBidWZfc2l6ZSwgbW9vdl9zaXplOwo+ID4gKwo+ID4g KyAgICBpZiAobW92LT5tb292X3dyaXR0ZW4pIHJldHVybiAwOwo+ID4gKwo+ID4gKyAgICBtb3Yt PmlzX2FuaW1hdGVkX2F2aWYgPSBzLT5zdHJlYW1zWzBdLT5uYl9mcmFtZXMgPiAxOwo+ID4gKyAg ICBtb3Zfd3JpdGVfaWRlbnRpZmljYXRpb24ocGIsIHMpOwo+ID4gKyAgICBtb3Zfd3JpdGVfbWV0 YV90YWcocGIsIG1vdiwgcyk7Cj4gPiArCj4gPiArICAgIG1vb3Zfc2l6ZSA9IGdldF9tb292X3Np emUocyk7Cj4gPiArICAgIG1vdi0+dHJhY2tzWzBdLmRhdGFfb2Zmc2V0ID0gYXZpb190ZWxsKHBi KSArIG1vb3Zfc2l6ZSArIDg7Cj4gPiArCj4gPiArICAgIGlmIChtb3YtPmlzX2FuaW1hdGVkX2F2 aWYpIHsKPiA+ICsgICAgICAgIGludCByZXQ7Cj4gPiArICAgICAgICBpZiAoKHJldCA9IG1vdl93 cml0ZV9tb292X3RhZyhwYiwgbW92LCBzKSkgPCAwKQo+ID4gKyAgICAgICAgICAgIHJldHVybiBy ZXQ7Cj4gPiArICAgIH0KPiA+ICsKPiA+ICsgICAgYnVmX3NpemUgPSBhdmlvX2dldF9keW5fYnVm KG1vdi0+bWRhdF9idWYsICZidWYpOwo+ID4gKyAgICBhdmlvX3diMzIocGIsIGJ1Zl9zaXplICsg OCk7Cj4gPiArICAgIGZmaW9fd2ZvdXJjYyhwYiwgIm1kYXQiKTsKPiA+ICsgICAgbWRhdF9wb3Mg PSBhdmlvX3RlbGwocGIpOwo+ID4gKwo+ID4gKyAgICBpZiAobWRhdF9wb3MgIT0gKHVpbnQzMl90 KW1kYXRfcG9zKSB7Cj4gPiArICAgICAgICBhdl9sb2cocywgQVZfTE9HX0VSUk9SLCAibWRhdCBv ZmZzZXQgZG9lcyBub3QgZml0IGluIDMyIGJpdHNcbiIpOwo+ID4gKyAgICAgICAgcmV0dXJuIEFW RVJST1JfSU5WQUxJRERBVEE7Cj4gPiArICAgIH0KPiA+ICsKPiA+ICsgICAgYXZpb193cml0ZShw YiwgYnVmLCBidWZfc2l6ZSk7Cj4gPiArCj4gPiArICAgIC8vIHdyaXRlIGV4dGVudCBvZmZzZXQu Cj4gPiArICAgIHBvc19iYWNrdXAgPSBhdmlvX3RlbGwocGIpOwo+ID4gKyAgICBhdmlvX3NlZWso cGIsIG1vdi0+YXZpZl9leHRlbnRfcG9zLCBTRUVLX1NFVCk7Cj4gPiArICAgIGF2aW9fd2IzMihw YiwgbWRhdF9wb3MpOyAvKiByZXdyaXRlIG9mZnNldCAqLwo+ID4gKyAgICBhdmlvX3NlZWsocGIs IHBvc19iYWNrdXAsIFNFRUtfU0VUKTsKPiA+ICsKPiA+ICsgICAgcmV0dXJuIDA7Cj4gPiArfQo+ ID4gKwo+ID4gI2lmIENPTkZJR19UR1BfTVVYRVIgfHwgQ09ORklHX1RHMl9NVVhFUgo+ID4gc3Rh dGljIGNvbnN0IEFWQ29kZWNUYWcgY29kZWNfM2dwX3RhZ3NbXSA9IHsKPiA+ICAgICB7IEFWX0NP REVDX0lEX0gyNjMsICAgICBNS1RBRygncycsJzInLCc2JywnMycpIH0sCj4gPiBAQCAtNzQwNCw2 ICs3NjU3LDIwIEBAIHN0YXRpYyBjb25zdCBBVkNvZGVjVGFnIGNvZGVjX2Y0dl90YWdzW10gPSB7 Cj4gPiAgICAgeyBBVl9DT0RFQ19JRF9OT05FLCAwIH0sCj4gPiB9Owo+ID4KPiA+ICsjaWYgQ09O RklHX0FWSUZfTVVYRVIKPiA+ICtzdGF0aWMgY29uc3QgQVZDb2RlY1RhZyBjb2RlY19hdmlmX3Rh Z3NbXSA9IHsKPiA+ICsgICAgeyBBVl9DT0RFQ19JRF9BVjEsICAgICBNS1RBRygnYScsJ3YnLCcw JywnMScpIH0sCj4gPiArICAgIHsgQVZfQ09ERUNfSURfTk9ORSwgMCB9LAo+ID4gK307Cj4gPiAr c3RhdGljIGNvbnN0IEFWQ29kZWNUYWcgKmNvbnN0IGNvZGVjX2F2aWZfdGFnc19saXN0W10gPSB7 IGNvZGVjX2F2aWZfdGFncywgTlVMTCB9Owo+ID4gKwo+ID4gK3N0YXRpYyBjb25zdCBBVkNsYXNz IG1vdl9hdmlmX211eGVyX2NsYXNzID0gewo+ID4gKyAgICAuY2xhc3NfbmFtZSA9ICJhdmlmIG11 eGVyIiwKPiA+ICsgICAgLml0ZW1fbmFtZSAgPSBhdl9kZWZhdWx0X2l0ZW1fbmFtZSwKPiA+ICsg ICAgLnZlcnNpb24gICAgPSBMSUJBVlVUSUxfVkVSU0lPTl9JTlQsCj4gPiArfTsKPiA+ICsjZW5k aWYKPiA+ICsKPiA+ICNpZiBDT05GSUdfTU9WX01VWEVSCj4gPiBjb25zdCBBVk91dHB1dEZvcm1h dCBmZl9tb3ZfbXV4ZXIgPSB7Cj4gPiAgICAgLm5hbWUgICAgICAgICAgICAgID0gIm1vdiIsCj4g PiBAQCAtNzU2NiwzICs3ODMzLDIxIEBAIGNvbnN0IEFWT3V0cHV0Rm9ybWF0IGZmX2Y0dl9tdXhl ciA9IHsKPiA+ICAgICAucHJpdl9jbGFzcyAgICAgICAgPSAmbW92X2lzb2JtZmZfbXV4ZXJfY2xh c3MsCj4gPiB9Owo+ID4gI2VuZGlmCj4gPiArI2lmIENPTkZJR19BVklGX01VWEVSCj4gPiArY29u c3QgQVZPdXRwdXRGb3JtYXQgZmZfYXZpZl9tdXhlciA9IHsKPiA+ICsgICAgLm5hbWUgICAgICAg ICAgICAgID0gImF2aWYiLAo+ID4gKyAgICAubG9uZ19uYW1lICAgICAgICAgPSBOVUxMX0lGX0NP TkZJR19TTUFMTCgiQVZJRiIpLAo+ID4gKyAgICAubWltZV90eXBlICAgICAgICAgPSAiaW1hZ2Uv YXZpZiIsCj4gPiArICAgIC5leHRlbnNpb25zICAgICAgICA9ICJhdmlmIiwKPiA+ICsgICAgLnBy aXZfZGF0YV9zaXplICAgID0gc2l6ZW9mKE1PVk11eENvbnRleHQpLAo+ID4gKyAgICAudmlkZW9f Y29kZWMgICAgICAgPSBBVl9DT0RFQ19JRF9BVjEsCj4gPiArICAgIC5pbml0ICAgICAgICAgICAg ICA9IG1vdl9pbml0LAo+ID4gKyAgICAud3JpdGVfaGVhZGVyICAgICAgPSBtb3Zfd3JpdGVfaGVh ZGVyLAo+ID4gKyAgICAud3JpdGVfcGFja2V0ICAgICAgPSBtb3Zfd3JpdGVfcGFja2V0LAo+ID4g KyAgICAud3JpdGVfdHJhaWxlciAgICAgPSBhdmlmX3dyaXRlX3RyYWlsZXIsCj4gPiArICAgIC5k ZWluaXQgICAgICAgICAgICA9IG1vdl9mcmVlLAo+ID4gKyAgICAuZmxhZ3MgICAgICAgICAgICAg PSBBVkZNVF9HTE9CQUxIRUFERVIgfCBBVkZNVF9BTExPV19GTFVTSCwKPiA+ICsgICAgLmNvZGVj X3RhZyAgICAgICAgID0gY29kZWNfYXZpZl90YWdzX2xpc3QsCj4gPiArICAgIC5wcml2X2NsYXNz ICAgICAgICA9ICZtb3ZfYXZpZl9tdXhlcl9jbGFzcywKPiA+ICt9Owo+ID4gKyNlbmRpZgo+ID4g ZGlmZiAtLWdpdCBhL2xpYmF2Zm9ybWF0L21vdmVuYy5oIGIvbGliYXZmb3JtYXQvbW92ZW5jLmgK PiA+IGluZGV4IGNhNTA3ZTBlMDQuLjI4MTU3NmNjNjYgMTAwNjQ0Cj4gPiAtLS0gYS9saWJhdmZv cm1hdC9tb3ZlbmMuaAo+ID4gKysrIGIvbGliYXZmb3JtYXQvbW92ZW5jLmgKPiA+IEBAIC00Myw2 ICs0Myw3IEBACj4gPiAjZGVmaW5lIE1PREVfSVBPRCAweDIwCj4gPiAjZGVmaW5lIE1PREVfSVNN ICAweDQwCj4gPiAjZGVmaW5lIE1PREVfRjRWICAweDgwCj4gPiArI2RlZmluZSBNT0RFX0FWSUYg MHgxMDAKPiA+Cj4gPiB0eXBlZGVmIHN0cnVjdCBNT1ZJZW50cnkgewo+ID4gICAgIHVpbnQ2NF90 ICAgICBwb3M7Cj4gPiBAQCAtMjQ0LDYgKzI0NSwxMCBAQCB0eXBlZGVmIHN0cnVjdCBNT1ZNdXhD b250ZXh0IHsKPiA+ICAgICBNT1ZQcmZ0Qm94IHdyaXRlX3ByZnQ7Cj4gPiAgICAgaW50IGVtcHR5 X2hkbHJfbmFtZTsKPiA+ICAgICBpbnQgbW92aWVfdGltZXNjYWxlOwo+ID4gKwo+ID4gKyAgICBp bnQ2NF90IGF2aWZfZXh0ZW50X3BvczsKPiA+ICsgICAgaW50IGF2aWZfZXh0ZW50X2xlbmd0aDsK PiA+ICsgICAgaW50IGlzX2FuaW1hdGVkX2F2aWY7Cj4gPiB9IE1PVk11eENvbnRleHQ7Cj4gPgo+ ID4gI2RlZmluZSBGRl9NT1ZfRkxBR19SVFBfSElOVCAgICAgICAgICAgICAgKDEgPDwgIDApCj4g PiAtLQo+ID4gMi4zNi4wLjQ2NC5nYjljOGI0NmU5NC1nb29nCj4gPgo+ID4gX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiA+IGZmbXBlZy1kZXZlbCBtYWls aW5nIGxpc3QKPiA+IGZmbXBlZy1kZXZlbEBmZm1wZWcub3JnCj4gPiBodHRwczovL2ZmbXBlZy5v cmcvbWFpbG1hbi9saXN0aW5mby9mZm1wZWctZGV2ZWwKPiA+Cj4gPiBUbyB1bnN1YnNjcmliZSwg dmlzaXQgbGluayBhYm92ZSwgb3IgZW1haWwKPiA+IGZmbXBlZy1kZXZlbC1yZXF1ZXN0QGZmbXBl Zy5vcmcgd2l0aCBzdWJqZWN0ICJ1bnN1YnNjcmliZSIuCj4KPiBfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IGZmbXBlZy1kZXZlbCBtYWlsaW5nIGxpc3QK PiBmZm1wZWctZGV2ZWxAZmZtcGVnLm9yZwo+IGh0dHBzOi8vZmZtcGVnLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2ZmbXBlZy1kZXZlbAo+Cj4gVG8gdW5zdWJzY3JpYmUsIHZpc2l0IGxpbmsgYWJvdmUs IG9yIGVtYWlsCj4gZmZtcGVnLWRldmVsLXJlcXVlc3RAZmZtcGVnLm9yZyB3aXRoIHN1YmplY3Qg InVuc3Vic2NyaWJlIi4KCgoKLS0gClZpZ25lc2gKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KZmZtcGVnLWRldmVsIG1haWxpbmcgbGlzdApmZm1wZWctZGV2 ZWxAZmZtcGVnLm9yZwpodHRwczovL2ZmbXBlZy5vcmcvbWFpbG1hbi9saXN0aW5mby9mZm1wZWct ZGV2ZWwKClRvIHVuc3Vic2NyaWJlLCB2aXNpdCBsaW5rIGFib3ZlLCBvciBlbWFpbApmZm1wZWct ZGV2ZWwtcmVxdWVzdEBmZm1wZWcub3JnIHdpdGggc3ViamVjdCAidW5zdWJzY3JpYmUiLgo=