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 0DD6442D24 for ; Wed, 4 May 2022 02:46:45 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id CC06968B28D; Wed, 4 May 2022 05:46:42 +0300 (EEST) Received: from out203-205-251-80.mail.qq.com (out203-205-251-80.mail.qq.com [203.205.251.80]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 068A768AC91 for ; Wed, 4 May 2022 05:46:35 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foxmail.com; s=s201512; t=1651632391; bh=KNJ6Pu7IZPNtMYztuOJEt83491fKUMBHaG6tl/YG4uM=; h=From:Subject:Date:References:To:In-Reply-To; b=HSjpfzFuDDfLLPZmkKeUg8BYai3gKHKcxdxOAyd8VjawqXsrQEkP5XciV/Z+1s415 9AbumweRwB70hm+V1ZOMRkl82iRADaQsnXSdOXu9917liV83llnymgq8hs/d9RFeBa wF/KIvij+0Iz8vl/BLC62OgBhuqJ5BW4vQvTraek= Received: from [192.168.255.10] ([14.153.76.36]) by newxmesmtplogicsvrszc8.qq.com (NewEsmtp) with SMTP id B9DAEC77; Wed, 04 May 2022 10:46:29 +0800 X-QQ-mid: xmsmtpt1651632389t8kjwrcj7 Message-ID: X-QQ-XMAILINFO: MZ4XH1L85f1rGwNStPxluGCPKQvKXUJ5XFhAs/iSDzc1wAhLNSUWdomi6zIShA JAlCPkusCJ4HHkUpzILlap0qDm7+vS4w0ms2bgwDCu/TVZeUyWpSi+mR238LR1Ysy+6pILfZrP4X 5kNsdtB4fl30EabQtz9pkhHYLEXkotVlce7hH16+8vkrUnrTAFhYH/jM7NJ4NDpLdtCsT6iAR5q+ yEJ5RdalMMeKNakPl1NlFRqZuz0hRwFxaabnz30Dl8qv6GS6pbD9TSkrkgPq1jQkNf4ewZXxGIV5 IhSHAp2BpaPVDlKZGrofqcpKMn6YV3Z0HmEWIE5GQPbRGLQP93/fHQpca46R6EStEwni7lbXwWE7 YKMjg8KSBjDTXq/FVJhqSybcvHsKyuuc1WXBK58dQXYulMb/ATbCbWBiFcJJX1LdUt+R7stbcIMh ZLMHEIjWNHy5ir+CS93mR/us0Cf9tbMpIstdXs2GVewJ/PxmA35kIeTRLozRMfqr+XlHMWuLXkmk +RqQec9QmFrTKIbzs16oHXcx9yUhhcQmEQqAURdBrzDtE1Tjpn2TBxWITNj4ODh5KxWCEQ1pux9g jevzJSbVR/H7W1uNKQgX37f36wP9FunU92h8K6wGQCaE7fnDffF+HoiQo07CJJFAGWwR3HYSNg8m LbE9enDUxugf5Zfcp6z32UHepi/Z6IiqQEk2Q5/8Q9JxiuW4ORRErpFkFmshilNCbYOFBeDrQZ3g iCemRYGy2kf4MLDEAMVWdWWKDcVv4dpGhStajNhiZ/Iy83G4dTnvCFYmcWtacY92NRhvla4z1GOP TR3bIq9gT40sZb4pXeUStbgu0J0zKJW09EktQwlExzLZ2lBA2cUBiBcySfq6eoQfiFV0lue0Jl1i vFaR3EJ49KoH7tZD8y8AHrpUk8V2Bb+EplbbTySQsouNlVtbbPWCQ= From: =?utf-8?B?InpoaWxpemhhbyjotbXlv5fnq4spIg==?= Mime-Version: 1.0 (Mac OS X Mail 14.0 \(3654.60.0.2.21\)) Date: Wed, 4 May 2022 10:46:29 +0800 References: <20220502213535.2461249-1-vigneshv@google.com> To: FFmpeg development discussions and patches In-Reply-To: <20220502213535.2461249-1-vigneshv@google.com> X-OQ-MSGID: X-Mailer: Apple Mail (2.3654.60.0.2.21) 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: Cgo+IE9uIE1heSAzLCAyMDIyLCBhdCA1OjM1IEFNLCBWaWduZXNoIFZlbmthdGFzdWJyYW1hbmlh biA8dmlnbmVzaHYtYXQtZ29vZ2xlLmNvbUBmZm1wZWcub3JnPiB3cm90ZToKPiAKPiBBZGQgYW4g QVZJRiBtdXhlciBieSByZS11c2luZyB0aGUgZXhpc3RpbmcgdGhlIG1vdi9tcDQgbXV4ZXIuCj4g Cj4gQVZJRiBTcGVjaWZpY2F0aW9uOiBodHRwczovL2FvbWVkaWFjb2RlYy5naXRodWIuaW8vYXYx LWF2aWYKPiAKPiBTYW1wbGUgdXNhZ2UgZm9yIHN0aWxsIGltYWdlOgo+IGZmbXBlZyAtaSBpbWFn ZS5wbmcgLWM6diBsaWJhb20tYXYxIC1hdmlmLWltYWdlIDEgaW1hZ2UuYXZpZgo+IAo+IFNhbXBs ZSB1c2FnZSBmb3IgYW5pbWF0ZWQgQVZJRiBpbWFnZToKPiBmZm1wZWcgLWkgdmlkZW8ubXA0IGFu aW1hdGVkLmF2aWYKPiAKPiBXZSBjYW4gcmUtdXNlIGFueSBvZiB0aGUgQVYxIGVuY29kaW5nIG9w dGlvbnMgdGhhdCB3aWxsIG1ha2UKPiBzZW5zZSBmb3IgaW1hZ2UgZW5jb2RpbmcgKGxpa2UgYml0 cmF0ZSwgdGlsZXMsIGVuY29kaW5nIHNwZWVkLAo+IGV0YykuCj4gCj4gVGhlIGZpbGVzIGdlbmVy YXRlZCBieSB0aGlzIG11eGVyIGhhcyBiZWVuIHZlcmlmaWVkIHRvIGJlIHZhbGlkCj4gQVZJRiBm aWxlcyBieSB0aGUgZm9sbG93aW5nOgo+IDEpIERpc3BsYXlzIG9uIENocm9tZSAoYm90aCBzdGls bCBhbmQgYW5pbWF0ZWQgaW1hZ2VzKS4KPiAyKSBEaXNwbGF5cyBvbiBGaXJlZm94IChvbmx5IHN0 aWxsIGltYWdlcywgZmlyZWZveCBkb2VzIG5vdCBzdXBwb3J0Cj4gICBhbmltYXRlZCBBVklGIHll dCkuCj4gMykgVmVyaWZpZWQgdG8gYmUgdmFsaWQgYnkgQ29tcGxpYW5jZSBXYXJkZW46Cj4gICBo dHRwczovL2dpdGh1Yi5jb20vZ3BhYy9Db21wbGlhbmNlV2FyZGVuCj4gCj4gRml4ZXMgdGhlIGVu Y29kZXIvbXV4ZXIgcGFydCBvZiBUcmFjIFRpY2tldCAjNzYyMQo+IAo+IFNpZ25lZC1vZmYtYnk6 IFZpZ25lc2ggVmVua2F0YXN1YnJhbWFuaWFuIDx2aWduZXNodkBnb29nbGUuY29tPgo+IC0tLQo+ IGNvbmZpZ3VyZSAgICAgICAgICAgICAgICB8ICAgMSArCj4gbGliYXZmb3JtYXQvYWxsZm9ybWF0 cy5jIHwgICAxICsKPiBsaWJhdmZvcm1hdC9tb3ZlbmMuYyAgICAgfCAzMzUgKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrLS0tCj4gbGliYXZmb3JtYXQvbW92ZW5jLmggICAgIHwg ICA1ICsKPiA0IGZpbGVzIGNoYW5nZWQsIDMxNyBpbnNlcnRpb25zKCspLCAyNSBkZWxldGlvbnMo LSkKPiAKPiAKClvigKZdCgo+IHN0YXRpYyBpbnQgbW92X3dyaXRlX3ZpZGVvX3RhZyhBVkZvcm1h dENvbnRleHQgKnMsIEFWSU9Db250ZXh0ICpwYiwgTU9WTXV4Q29udGV4dCAqbW92LCBNT1ZUcmFj ayAqdHJhY2spCj4gewo+ICAgICBpbnQgcmV0ID0gQVZFUlJPUl9CVUc7Cj4gQEAgLTIxNTYsNiAr MjE3Niw4IEBAIHN0YXRpYyBpbnQgbW92X3dyaXRlX3ZpZGVvX3RhZyhBVkZvcm1hdENvbnRleHQg KnMsIEFWSU9Db250ZXh0ICpwYiwgTU9WTXV4Q29udGV4Cj4gICAgIGF2aW9fd2IzMihwYiwgMCk7 IC8qIHNpemUgKi8KPiAgICAgaWYgKG1vdi0+ZW5jcnlwdGlvbl9zY2hlbWUgIT0gTU9WX0VOQ19O T05FKSB7Cj4gICAgICAgICBmZmlvX3dmb3VyY2MocGIsICJlbmN2Iik7Cj4gKyAgICB9IGVsc2Ug aWYgKHRyYWNrLT5tb2RlID09IE1PREVfQVZJRikgewo+ICsgICAgICAgIGZmaW9fd2ZvdXJjYyhw YiwgImF2MDEiKTsKCkNhbiB0aGUg4oCYZWxzZeKAmSBwYXRoIGhhbmRsZSB0aGUgY2FzZT8KCj4g ICAgIH0gZWxzZSB7Cj4gICAgICAgICBhdmlvX3dsMzIocGIsIHRyYWNrLT50YWcpOyAvLyBzdG9y ZSBpdCBieXRlc3dhcHBlZAo+ICAgICB9Cj4gQEAgLTIyNzIsNyArMjI5NCw3IEBAIHN0YXRpYyBp bnQgbW92X3dyaXRlX3ZpZGVvX3RhZyhBVkZvcm1hdENvbnRleHQgKnMsIEFWSU9Db250ZXh0ICpw YiwgTU9WTXV4Q29udGV4Cj4gICAgICAgICBlbHNlCj4gICAgICAgICAgICAgYXZfbG9nKG1vdi0+ ZmMsIEFWX0xPR19XQVJOSU5HLCAiTm90IHdyaXRpbmcgJ2dhbWEnIGF0b20uIEZvcm1hdCBpcyBu b3QgTU9WLlxuIik7Cj4gICAgIH0KPiAtICAgIGlmICh0cmFjay0+bW9kZSA9PSBNT0RFX01PViB8 fCB0cmFjay0+bW9kZSA9PSBNT0RFX01QNCkgewo+ICsgICAgaWYgKHRyYWNrLT5tb2RlID09IE1P REVfTU9WIHx8IHRyYWNrLT5tb2RlID09IE1PREVfTVA0IHx8IHRyYWNrLT5tb2RlID09IE1PREVf QVZJRikgewo+ICAgICAgICAgaW50IGhhc19jb2xvcl9pbmZvID0gdHJhY2stPnBhci0+Y29sb3Jf cHJpbWFyaWVzICE9IEFWQ09MX1BSSV9VTlNQRUNJRklFRCAmJgo+ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdHJhY2stPnBhci0+Y29sb3JfdHJjICE9IEFWQ09MX1RSQ19VTlNQRUNJRklF RCAmJgo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2stPnBhci0+Y29sb3Jfc3Bh Y2UgIT0gQVZDT0xfU1BDX1VOU1BFQ0lGSUVEOwo+IEBAIC0yMzI0LDYgKzIzNDYsOSBAQCBzdGF0 aWMgaW50IG1vdl93cml0ZV92aWRlb190YWcoQVZGb3JtYXRDb250ZXh0ICpzLCBBVklPQ29udGV4 dCAqcGIsIE1PVk11eENvbnRleAo+ICAgICBpZiAoYXZpZCkKPiAgICAgICAgIGF2aW9fd2IzMihw YiwgMCk7Cj4gCj4gKyAgICBpZiAodHJhY2stPm1vZGUgPT0gTU9ERV9BVklGKQo+ICsgICAgICAg IG1vdl93cml0ZV9jY3N0X3RhZyhwYik7Cj4gKwo+ICAgICByZXR1cm4gdXBkYXRlX3NpemUocGIs IHBvcyk7Cj4gfQo+IAo+IEBAIC0yODI1LDcgKzI4NTAsMTAgQEAgc3RhdGljIGludCBtb3Zfd3Jp dGVfaGRscl90YWcoQVZGb3JtYXRDb250ZXh0ICpzLCBBVklPQ29udGV4dCAqcGIsIE1PVlRyYWNr ICp0cmEKPiAKPiAgICAgaWYgKHRyYWNrKSB7Cj4gICAgICAgICBoZGxyID0gKHRyYWNrLT5tb2Rl ID09IE1PREVfTU9WKSA/ICJtaGxyIiA6ICJcMFwwXDBcMCI7Cj4gLSAgICAgICAgaWYgKHRyYWNr LT5wYXItPmNvZGVjX3R5cGUgPT0gQVZNRURJQV9UWVBFX1ZJREVPKSB7Cj4gKyAgICAgICAgaWYg KHRyYWNrLT5tb2RlID09IE1PREVfQVZJRikgewo+ICsgICAgICAgICAgICBoZGxyX3R5cGUgPSAi cGljdCI7Cj4gKyAgICAgICAgICAgIGRlc2NyID0gIlBpY3R1cmVIYW5kbGVyIjsKPiArICAgICAg ICB9IGVsc2UgaWYgKHRyYWNrLT5wYXItPmNvZGVjX3R5cGUgPT0gQVZNRURJQV9UWVBFX1ZJREVP KSB7CgpJIHByZWZlciBwdXQgY2hlY2sgaW5zaWRlIHRoZSDigJhpZiAodHJhY2stPnBhci0+Y29k ZWNfdHlwZSA9PSBBVk1FRElBX1RZUEVfVklERU8p4oCZLgpJdOKAmXMgYSBzcGVjaWFsIGNhc2Ug b2Yg4oCYQVZNRURJQV9UWVBFX1ZJREVP4oCZLgoKPiAgICAgICAgICAgICBoZGxyX3R5cGUgPSAi dmlkZSI7Cj4gICAgICAgICAgICAgZGVzY3IgICAgID0gIlZpZGVvSGFuZGxlciI7Cj4gICAgICAg ICB9IGVsc2UgaWYgKHRyYWNrLT5wYXItPmNvZGVjX3R5cGUgPT0gQVZNRURJQV9UWVBFX0FVRElP KSB7Cj4gQEAgLTI4OTIsNiArMjkyMCwxMjggQEAgc3RhdGljIGludCBtb3Zfd3JpdGVfaGRscl90 YWcoQVZGb3JtYXRDb250ZXh0ICpzLCBBVklPQ29udGV4dCAqcGIsIE1PVlRyYWNrICp0cmEKPiAg ICAgcmV0dXJuIHVwZGF0ZV9zaXplKHBiLCBwb3MpOwo+IH0KPiAKPiArc3RhdGljIGludCBtb3Zf d3JpdGVfcGl0bV90YWcoQVZJT0NvbnRleHQgKnBiLCBpbnQgaXRlbV9pZCkKPiArewo+ICsgICAg aW50NjRfdCBwb3MgPSBhdmlvX3RlbGwocGIpOwo+ICsgICAgYXZpb193YjMyKHBiLCAwKTsgLyog c2l6ZSAqLwo+ICsgICAgZmZpb193Zm91cmNjKHBiLCAicGl0bSIpOwo+ICsgICAgYXZpb193YjMy KHBiLCAwKTsgLyogVmVyc2lvbiAmIGZsYWdzICovCj4gKyAgICBhdmlvX3diMTYocGIsIGl0ZW1f aWQpOyAvKiBpdGVtX2lkICovCj4gKyAgICByZXR1cm4gdXBkYXRlX3NpemUocGIsIHBvcyk7Cj4g K30KPiArCj4gK3N0YXRpYyBpbnQgbW92X3dyaXRlX2lsb2NfdGFnKEFWSU9Db250ZXh0ICpwYiwg TU9WTXV4Q29udGV4dCAqbW92LCBBVkZvcm1hdENvbnRleHQgKnMpCj4gK3sKPiArICAgIGludDY0 X3QgcG9zID0gYXZpb190ZWxsKHBiKTsKPiArICAgIGF2aW9fd2IzMihwYiwgMCk7IC8qIHNpemUg Ki8KPiArICAgIGZmaW9fd2ZvdXJjYyhwYiwgImlsb2MiKTsKPiArICAgIGF2aW9fd2IzMihwYiwg MCk7IC8qIFZlcnNpb24gJiBmbGFncyAqLwo+ICsgICAgYXZpb193OChwYiwgKDQgPDwgNCkgKyA0 KTsgLyogb2Zmc2V0X3NpemUoNCkgYW5kIGxlbmd0aF9zaXplKDQpICovCj4gKyAgICBhdmlvX3c4 KHBiLCAwKTsgLyogYmFzZV9vZmZzZXRfc2l6ZSg0KSBhbmQgcmVzZXJ2ZWQoNCkgKi8KPiArICAg IGF2aW9fd2IxNihwYiwgMSk7IC8qIGl0ZW1fY291bnQgKi8KPiArCj4gKyAgICBhdmlvX3diMTYo cGIsIDEpOyAvKiBpdGVtX2lkICovCj4gKyAgICBhdmlvX3diMTYocGIsIDApOyAvKiBkYXRhX3Jl ZmVyZW5jZV9pbmRleCAqLwo+ICsgICAgYXZpb193YjE2KHBiLCAxKTsgLyogZXh0ZW50X2NvdW50 ICovCj4gKyAgICBtb3YtPmF2aWZfZXh0ZW50X3BvcyA9IGF2aW9fdGVsbChwYik7Cj4gKyAgICBh dmlvX3diMzIocGIsIDApOyAvKiBleHRlbnRfb2Zmc2V0ICh3cml0dGVuIGxhdGVyKSAqLwo+ICsg ICAgLy8gRm9yIGFuaW1hdGVkIEFWSUYsIHdlIHNpbXBseSB3cml0ZSB0aGUgZmlyc3QgcGFja2V0 J3Mgc2l6ZS4KPiArICAgIGF2aW9fd2IzMihwYiwgbW92LT5hdmlmX2V4dGVudF9sZW5ndGgpOyAv KiBleHRlbnRfbGVuZ3RoICovCj4gKwo+ICsgICAgcmV0dXJuIHVwZGF0ZV9zaXplKHBiLCBwb3Mp Owo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IG1vdl93cml0ZV9paW5mX3RhZyhBVklPQ29udGV4dCAq cGIsIE1PVk11eENvbnRleHQgKm1vdiwgQVZGb3JtYXRDb250ZXh0ICpzKQo+ICt7Cj4gKyAgICBp bnQ2NF90IGluZmVfcG9zOwo+ICsgICAgaW50NjRfdCBpaW5mX3BvcyA9IGF2aW9fdGVsbChwYik7 Cj4gKyAgICBhdmlvX3diMzIocGIsIDApOyAvKiBzaXplICovCj4gKyAgICBmZmlvX3dmb3VyY2Mo cGIsICJpaW5mIik7Cj4gKyAgICBhdmlvX3diMzIocGIsIDApOyAvKiBWZXJzaW9uICYgZmxhZ3Mg Ki8KPiArICAgIGF2aW9fd2IxNihwYiwgMSk7IC8qIGVudHJ5X2NvdW50ICovCj4gKwo+ICsgICAg aW5mZV9wb3MgPSBhdmlvX3RlbGwocGIpOwo+ICsgICAgYXZpb193YjMyKHBiLCAwKTsgLyogc2l6 ZSAqLwo+ICsgICAgZmZpb193Zm91cmNjKHBiLCAiaW5mZSIpOwo+ICsgICAgYXZpb193OChwYiwg MHgyKTsgLyogVmVyc2lvbiAqLwo+ICsgICAgYXZpb193YjI0KHBiLCAwKTsgLyogZmxhZ3MgKi8K PiArICAgIGF2aW9fd2IxNihwYiwgMSk7IC8qIGl0ZW1faWQgKi8KPiArICAgIGF2aW9fd2IxNihw YiwgMCk7IC8qIGl0ZW1fcHJvdGVjdGlvbl9pbmRleCAqLwo+ICsgICAgYXZpb193cml0ZShwYiwg ImF2MDEiLCA0KTsgLyogaXRlbV90eXBlICovCj4gKyAgICBhdmlvX3dyaXRlKHBiLCAiQ29sb3Jc MCIsIDYpOyAvKiBpdGVtX25hbWUgKi8KPiArICAgIHVwZGF0ZV9zaXplKHBiLCBpbmZlX3Bvcyk7 Cj4gKwo+ICsgICAgcmV0dXJuIHVwZGF0ZV9zaXplKHBiLCBpaW5mX3Bvcyk7Cj4gK30KPiArCj4g K3N0YXRpYyBpbnQgbW92X3dyaXRlX2lzcGVfdGFnKEFWSU9Db250ZXh0ICpwYiwgTU9WTXV4Q29u dGV4dCAqbW92LCBBVkZvcm1hdENvbnRleHQgKnMpCj4gK3sKPiArICAgIGludDY0X3QgcG9zID0g YXZpb190ZWxsKHBiKTsKPiArICAgIGF2aW9fd2IzMihwYiwgMCk7IC8qIHNpemUgKi8KPiArICAg IGZmaW9fd2ZvdXJjYyhwYiwgImlzcGUiKTsKPiArICAgIGF2aW9fd2IzMihwYiwgMCk7IC8qIFZl cnNpb24gJiBmbGFncyAqLwo+ICsgICAgYXZpb193YjMyKHBiLCBzLT5zdHJlYW1zWzBdLT5jb2Rl Y3Bhci0+d2lkdGgpOyAvKiBpbWFnZV93aWR0aCAqLwo+ICsgICAgYXZpb193YjMyKHBiLCBzLT5z dHJlYW1zWzBdLT5jb2RlY3Bhci0+aGVpZ2h0KTsgLyogaW1hZ2VfaGVpZ2h0ICovCj4gKyAgICBy ZXR1cm4gdXBkYXRlX3NpemUocGIsIHBvcyk7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgbW92X3dy aXRlX3BpeGlfdGFnKEFWSU9Db250ZXh0ICpwYiwgTU9WTXV4Q29udGV4dCAqbW92LCBBVkZvcm1h dENvbnRleHQgKnMpCj4gK3sKPiArICAgIGludDY0X3QgcG9zID0gYXZpb190ZWxsKHBiKTsKPiAr ICAgIGNvbnN0IEFWUGl4Rm10RGVzY3JpcHRvciAqcGl4ZGVzYyA9IGF2X3BpeF9mbXRfZGVzY19n ZXQocy0+c3RyZWFtc1swXS0+Y29kZWNwYXItPmZvcm1hdCk7Cj4gKyAgICBhdmlvX3diMzIocGIs IDApOyAvKiBzaXplICovCj4gKyAgICBmZmlvX3dmb3VyY2MocGIsICJwaXhpIik7Cj4gKyAgICBh dmlvX3diMzIocGIsIDApOyAvKiBWZXJzaW9uICYgZmxhZ3MgKi8KPiArICAgIGF2aW9fdzgocGIs IHBpeGRlc2MtPm5iX2NvbXBvbmVudHMpOyAvKiBudW1fY2hhbm5lbHMgKi8KPiArICAgIGZvciAo aW50IGkgPSAwOyBpIDwgcGl4ZGVzYy0+bmJfY29tcG9uZW50czsgKytpKSB7Cj4gKyAgICAgIGF2 aW9fdzgocGIsIHBpeGRlc2MtPmNvbXBbaV0uZGVwdGgpOyAvKiBiaXRzX3Blcl9jaGFubmVsICov Cj4gKyAgICB9Cj4gKyAgICByZXR1cm4gdXBkYXRlX3NpemUocGIsIHBvcyk7Cj4gK30KPiArCj4g K3N0YXRpYyBpbnQgbW92X3dyaXRlX2lwY29fdGFnKEFWSU9Db250ZXh0ICpwYiwgTU9WTXV4Q29u dGV4dCAqbW92LCBBVkZvcm1hdENvbnRleHQgKnMpCj4gK3sKPiArICAgIGludDY0X3QgcG9zID0g YXZpb190ZWxsKHBiKTsKPiArICAgIGF2aW9fd2IzMihwYiwgMCk7IC8qIHNpemUgKi8KPiArICAg IGZmaW9fd2ZvdXJjYyhwYiwgImlwY28iKTsKPiArICAgIG1vdl93cml0ZV9pc3BlX3RhZyhwYiwg bW92LCBzKTsKPiArICAgIG1vdl93cml0ZV9waXhpX3RhZyhwYiwgbW92LCBzKTsKPiArICAgIG1v dl93cml0ZV9hdjFjX3RhZyhwYiwgJm1vdi0+dHJhY2tzWzBdKTsKPiArICAgIG1vdl93cml0ZV9j b2xyX3RhZyhwYiwgJm1vdi0+dHJhY2tzWzBdLCAwKTsKPiArICAgIHJldHVybiB1cGRhdGVfc2l6 ZShwYiwgcG9zKTsKPiArfQo+ICsKPiArc3RhdGljIGludCBtb3Zfd3JpdGVfaXBtYV90YWcoQVZJ T0NvbnRleHQgKnBiLCBNT1ZNdXhDb250ZXh0ICptb3YsIEFWRm9ybWF0Q29udGV4dCAqcykKPiAr ewo+ICsgICAgaW50NjRfdCBwb3MgPSBhdmlvX3RlbGwocGIpOwo+ICsgICAgYXZpb193YjMyKHBi LCAwKTsgLyogc2l6ZSAqLwo+ICsgICAgZmZpb193Zm91cmNjKHBiLCAiaXBtYSIpOwo+ICsgICAg YXZpb193YjMyKHBiLCAwKTsgLyogVmVyc2lvbiAmIGZsYWdzICovCj4gKyAgICBhdmlvX3diMzIo cGIsIDEpOyAvKiBlbnRyeV9jb3VudCAqLwo+ICsgICAgYXZpb193YjE2KHBiLCAxKTsgLyogaXRl bV9JRCAqLwo+ICsgICAgYXZpb193OChwYiwgNCk7IC8qIGFzc29jaWF0aW9uX2NvdW50ICovCj4g Kwo+ICsgICAgLy8gaXNwZSBhc3NvY2lhdGlvbi4KPiArICAgIGF2aW9fdzgocGIsIDEpOyAvKiBl c3NlbnRpYWwgYW5kIHByb3BlcnR5X2luZGV4ICovCj4gKyAgICAvLyBwaXhpIGFzc29jaWF0aW9u Lgo+ICsgICAgYXZpb193OChwYiwgMik7IC8qIGVzc2VudGlhbCBhbmQgcHJvcGVydHlfaW5kZXgg Ki8KPiArICAgIC8vIGF2MUMgYXNzb2NpYXRpb24uCj4gKyAgICBhdmlvX3c4KHBiLCAweDgwIHwg Myk7IC8qIGVzc2VudGlhbCBhbmQgcHJvcGVydHlfaW5kZXggKi8KPiArICAgIC8vIGNvbHIgYXNz b2NpYXRpb24uCj4gKyAgICBhdmlvX3c4KHBiLCA0KTsgLyogZXNzZW50aWFsIGFuZCBwcm9wZXJ0 eV9pbmRleCAqLwo+ICsgICAgcmV0dXJuIHVwZGF0ZV9zaXplKHBiLCBwb3MpOwo+ICt9Cj4gKwo+ ICtzdGF0aWMgaW50IG1vdl93cml0ZV9pcHJwX3RhZyhBVklPQ29udGV4dCAqcGIsIE1PVk11eENv bnRleHQgKm1vdiwgQVZGb3JtYXRDb250ZXh0ICpzKQo+ICt7Cj4gKyAgICBpbnQ2NF90IHBvcyA9 IGF2aW9fdGVsbChwYik7Cj4gKyAgICBhdmlvX3diMzIocGIsIDApOyAvKiBzaXplICovCj4gKyAg ICBmZmlvX3dmb3VyY2MocGIsICJpcHJwIik7Cj4gKyAgICBtb3Zfd3JpdGVfaXBjb190YWcocGIs IG1vdiwgcyk7Cj4gKyAgICBtb3Zfd3JpdGVfaXBtYV90YWcocGIsIG1vdiwgcyk7Cj4gKyAgICBy ZXR1cm4gdXBkYXRlX3NpemUocGIsIHBvcyk7Cj4gK30KPiArCj4gc3RhdGljIGludCBtb3Zfd3Jp dGVfaG1oZF90YWcoQVZJT0NvbnRleHQgKnBiKQo+IHsKPiAgICAgLyogVGhpcyBhdG9tIG11c3Qg YmUgcHJlc2VudCwgYnV0IGxlYXZpbmcgdGhlIHZhbHVlcyBhdCB6ZXJvCj4gQEAgLTMwODksNyAr MzIzOSw3IEBAIHN0YXRpYyBpbnQgbW92X3dyaXRlX3RraGRfdGFnKEFWSU9Db250ZXh0ICpwYiwg TU9WTXV4Q29udGV4dCAqbW92LAo+ICAgICAgICAgICAgIGRpc3BsYXlfbWF0cml4ID0gTlVMTDsK PiAgICAgfQo+IAo+IC0gICAgaWYgKHRyYWNrLT5mbGFncyAmIE1PVl9UUkFDS19FTkFCTEVEKQo+ ICsgICAgaWYgKHRyYWNrLT5mbGFncyAmIE1PVl9UUkFDS19FTkFCTEVEIHx8IHRyYWNrLT5tb2Rl ID09IE1PREVfQVZJRikKPiAgICAgICAgIGZsYWdzIHw9IE1PVl9US0hEX0ZMQUdfRU5BQkxFRDsK ClNldCB0cmFjay0+ZmxhZ3MgcHJvcGVybHkgdG8gYXZvaWQgYWRkaW5nIHRoZSBtb2RlIGNoZWNr IGV2ZXJ5d2hlcmUuCgo+IAo+ICAgICBpZiAodHJhY2stPm1vZGUgPT0gTU9ERV9JU00pCj4gQEAg LTMxMzcsNyArMzI4Nyw3IEBAIHN0YXRpYyBpbnQgbW92X3dyaXRlX3RraGRfdGFnKEFWSU9Db250 ZXh0ICpwYiwgTU9WTXV4Q29udGV4dCAqbW92LAo+ICAgICBpZiAoc3QgJiYgKHRyYWNrLT5wYXIt PmNvZGVjX3R5cGUgPT0gQVZNRURJQV9UWVBFX1ZJREVPIHx8Cj4gICAgICAgICAgICAgICAgdHJh Y2stPnBhci0+Y29kZWNfdHlwZSA9PSBBVk1FRElBX1RZUEVfU1VCVElUTEUpKSB7Cj4gICAgICAg ICBpbnQ2NF90IHRyYWNrX3dpZHRoXzE2MTY7Cj4gLSAgICAgICAgaWYgKHRyYWNrLT5tb2RlID09 IE1PREVfTU9WKSB7Cj4gKyAgICAgICAgaWYgKHRyYWNrLT5tb2RlID09IE1PREVfTU9WIHx8IHRy YWNrLT5tb2RlID09IE1PREVfQVZJRikgewo+ICAgICAgICAgICAgIHRyYWNrX3dpZHRoXzE2MTYg PSB0cmFjay0+cGFyLT53aWR0aCAqIDB4MTAwMDBVTEw7Cj4gICAgICAgICB9IGVsc2Ugewo+ICAg ICAgICAgICAgIHRyYWNrX3dpZHRoXzE2MTYgPSBhdl9yZXNjYWxlKHN0LT5zYW1wbGVfYXNwZWN0 X3JhdGlvLm51bSwKPiBAQCAtMzQ3Miw3ICszNjIyLDggQEAgc3RhdGljIGludCBtb3Zfd3JpdGVf dHJha190YWcoQVZGb3JtYXRDb250ZXh0ICpzLCBBVklPQ29udGV4dCAqcGIsIE1PVk11eENvbnRl eHQKPiAgICAgICAgICAgICBtb3Zfd3JpdGVfdGFwdF90YWcocGIsIHRyYWNrKTsKPiAgICAgICAg IH0KPiAgICAgfQo+IC0gICAgbW92X3dyaXRlX3RyYWNrX3VkdGFfdGFnKHBiLCBtb3YsIHN0KTsK PiArICAgIGlmICh0cmFjay0+bW9kZSAhPSBNT0RFX0FWSUYpCj4gKyAgICAgICAgbW92X3dyaXRl X3RyYWNrX3VkdGFfdGFnKHBiLCBtb3YsIHN0KTsKClBsZWFzZSBjaGVjayBpZiB0aGUgY2hlY2sg Y2FuIGJlIHJlbW92ZWQuIG1vdl93cml0ZV90cmFja191ZHRhX3RhZygpIGRvZXMgbm90aGluZwpm b3IgbW9kZSBvdGhlciB0aGFuIE1PVi9NUDQuCgo+ICAgICB0cmFjay0+ZW50cnkgPSBlbnRyeV9i YWNrdXA7Cj4gICAgIHRyYWNrLT5jaHVua0NvdW50ID0gY2h1bmtfYmFja3VwOwo+ICAgICByZXR1 cm4gdXBkYXRlX3NpemUocGIsIHBvcyk7Cj4gQEAgLTM5NDcsOCArNDA5OCwxNSBAQCBzdGF0aWMg aW50IG1vdl93cml0ZV9tZXRhX3RhZyhBVklPQ29udGV4dCAqcGIsIE1PVk11eENvbnRleHQgKm1v diwKPiAgICAgICAgIG1vdl93cml0ZV9tZHRhX2hkbHJfdGFnKHBiLCBtb3YsIHMpOwo+ICAgICAg ICAgbW92X3dyaXRlX21kdGFfa2V5c190YWcocGIsIG1vdiwgcyk7Cj4gICAgICAgICBtb3Zfd3Jp dGVfbWR0YV9pbHN0X3RhZyhwYiwgbW92LCBzKTsKPiAtICAgIH0KPiAtICAgIGVsc2Ugewo+ICsg ICAgfSBlbHNlIGlmIChtb3YtPm1vZGUgPT0gTU9ERV9BVklGKSB7Cj4gKyAgICAgICAgbW92X3dy aXRlX2hkbHJfdGFnKHMsIHBiLCAmbW92LT50cmFja3NbMF0pOwo+ICsgICAgICAgIC8vIFdlIGFs d2F5cyB3cml0ZSB0aGUgcHJpbWFyeSBpdGVtIGlkIGFzIDEgc2luY2Ugb25seSBvbmUgdHJhY2sg aXMKPiArICAgICAgICAvLyBzdXBwb3J0ZWQgZm9yIEFWSUYuCj4gKyAgICAgICAgbW92X3dyaXRl X3BpdG1fdGFnKHBiLCAxKTsKPiArICAgICAgICBtb3Zfd3JpdGVfaWxvY190YWcocGIsIG1vdiwg cyk7Cj4gKyAgICAgICAgbW92X3dyaXRlX2lpbmZfdGFnKHBiLCBtb3YsIHMpOwo+ICsgICAgICAg IG1vdl93cml0ZV9pcHJwX3RhZyhwYiwgbW92LCBzKTsKPiArICAgIH0gZWxzZSB7Cj4gICAgICAg ICAvKiBpVHVuZXMgbWV0YWRhdGEgdGFnICovCj4gICAgICAgICBtb3Zfd3JpdGVfaXR1bmVzX2hk bHJfdGFnKHBiLCBtb3YsIHMpOwo+ICAgICAgICAgbW92X3dyaXRlX2lsc3RfdGFnKHBiLCBtb3Ys IHMpOwo+IEBAIC00Mjc4LDEwICs0NDM2LDExIEBAIHN0YXRpYyBpbnQgbW92X3dyaXRlX21vb3Zf dGFnKEFWSU9Db250ZXh0ICpwYiwgTU9WTXV4Q29udGV4dCAqbW92LAo+ICAgICB9Cj4gCj4gICAg IG1vdl93cml0ZV9tdmhkX3RhZyhwYiwgbW92KTsKPiAtICAgIGlmIChtb3YtPm1vZGUgIT0gTU9E RV9NT1YgJiYgIW1vdi0+aW9kc19za2lwKQo+ICsgICAgaWYgKG1vdi0+bW9kZSAhPSBNT0RFX01P ViAmJiBtb3YtPm1vZGUgIT0gTU9ERV9BVklGICYmICFtb3YtPmlvZHNfc2tpcCkKPiAgICAgICAg IG1vdl93cml0ZV9pb2RzX3RhZyhwYiwgbW92KTsKPiAgICAgZm9yIChpID0gMDsgaSA8IG1vdi0+ bmJfc3RyZWFtczsgaSsrKSB7Cj4gLSAgICAgICAgaWYgKG1vdi0+dHJhY2tzW2ldLmVudHJ5ID4g MCB8fCBtb3YtPmZsYWdzICYgRkZfTU9WX0ZMQUdfRlJBR01FTlQpIHsKPiArICAgICAgICBpZiAo bW92LT50cmFja3NbaV0uZW50cnkgPiAwIHx8IG1vdi0+ZmxhZ3MgJiBGRl9NT1ZfRkxBR19GUkFH TUVOVCB8fAo+ICsgICAgICAgICAgICBtb3YtPm1vZGUgPT0gTU9ERV9BVklGKSB7Cj4gICAgICAg ICAgICAgaW50IHJldCA9IG1vdl93cml0ZV90cmFrX3RhZyhzLCBwYiwgbW92LCAmKG1vdi0+dHJh Y2tzW2ldKSwgaSA8IHMtPm5iX3N0cmVhbXMgPyBzLT5zdHJlYW1zW2ldIDogTlVMTCk7Cj4gICAg ICAgICAgICAgaWYgKHJldCA8IDApCj4gICAgICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4gQEAg LTQyOTIsNyArNDQ1MSw3IEBAIHN0YXRpYyBpbnQgbW92X3dyaXRlX21vb3ZfdGFnKEFWSU9Db250 ZXh0ICpwYiwgTU9WTXV4Q29udGV4dCAqbW92LAo+IAo+ICAgICBpZiAobW92LT5tb2RlID09IE1P REVfUFNQKQo+ICAgICAgICAgbW92X3dyaXRlX3V1aWR1c210X3RhZyhwYiwgcyk7Cj4gLSAgICBl bHNlCj4gKyAgICBlbHNlIGlmIChtb3YtPm1vZGUgIT0gTU9ERV9BVklGKQo+ICAgICAgICAgbW92 X3dyaXRlX3VkdGFfdGFnKHBiLCBtb3YsIHMpOwo+IAo+ICAgICByZXR1cm4gdXBkYXRlX3NpemUo cGIsIHBvcyk7Cj4gQEAgLTUwMzksNiArNTE5OCw5IEBAIHN0YXRpYyB2b2lkIG1vdl93cml0ZV9m dHlwX3RhZ19pbnRlcm5hbChBVklPQ29udGV4dCAqcGIsIEFWRm9ybWF0Q29udGV4dCAqcywKPiAg ICAgZWxzZSBpZiAobW92LT5tb2RlID09IE1PREVfM0dQKSB7Cj4gICAgICAgICBmZmlvX3dmb3Vy Y2MocGIsIGhhc19oMjY0ID8gIjNncDYiICA6ICIzZ3A0Iik7Cj4gICAgICAgICBtaW5vciA9ICAg ICBoYXNfaDI2NCA/ICAgMHgxMDAgOiAgIDB4MjAwOwo+ICsgICAgfSBlbHNlIGlmIChtb3YtPm1v ZGUgPT0gTU9ERV9BVklGKSB7Cj4gKyAgICAgICAgZmZpb193Zm91cmNjKHBiLCBtb3YtPmlzX2Fu aW1hdGVkX2F2aWYgPyAiYXZpcyIgOiAiYXZpZiIpOwo+ICsgICAgICAgIG1pbm9yID0gMDsKPiAg ICAgfSBlbHNlIGlmIChtb3YtPm1vZGUgJiBNT0RFXzNHMikgewo+ICAgICAgICAgZmZpb193Zm91 cmNjKHBiLCBoYXNfaDI2NCA/ICIzZzJiIiAgOiAiM2cyYSIpOwo+ICAgICAgICAgbWlub3IgPSAg ICAgaGFzX2gyNjQgPyAweDIwMDAwIDogMHgxMDAwMDsKPiBAQCAtNTEwMiw2ICs1MjY0LDMxIEBA IHN0YXRpYyBpbnQgbW92X3dyaXRlX2Z0eXBfdGFnKEFWSU9Db250ZXh0ICpwYiwgQVZGb3JtYXRD b250ZXh0ICpzKQo+ICAgICAvLyBjb21wYXRpYmxlIGJyYW5kIGEgc2Vjb25kIHRpbWUuCj4gICAg IGlmIChtb3YtPm1vZGUgPT0gTU9ERV9JU00pIHsKPiAgICAgICAgIGZmaW9fd2ZvdXJjYyhwYiwg InBpZmYiKTsKPiArICAgIH0gZWxzZSBpZiAobW92LT5tb2RlID09IE1PREVfQVZJRikgewo+ICsg ICAgICAgIGNvbnN0IEFWUGl4Rm10RGVzY3JpcHRvciAqcGl4X2ZtdF9kZXNjID0KPiArICAgICAg ICAgICAgYXZfcGl4X2ZtdF9kZXNjX2dldChzLT5zdHJlYW1zWzBdLT5jb2RlY3Bhci0+Zm9ybWF0 KTsKPiArICAgICAgICBjb25zdCBpbnQgZGVwdGggPSBwaXhfZm10X2Rlc2MtPmNvbXBbMF0uZGVw dGg7Cj4gKyAgICAgICAgaWYgKG1vdi0+aXNfYW5pbWF0ZWRfYXZpZikgewo+ICsgICAgICAgICAg ICAvLyBGb3IgYW5pbWF0ZWQgQVZJRiwgbWFqb3IgYnJhbmQgaXMgImF2aXMiLiBBZGQgImF2aWYi IGFzIGEKPiArICAgICAgICAgICAgLy8gY29tcGF0aWJsZSBicmFuZC4KPiArICAgICAgICAgICAg ZmZpb193Zm91cmNjKHBiLCAiYXZpZiIpOwo+ICsgICAgICAgICAgICBmZmlvX3dmb3VyY2MocGIs ICJtc2YxIik7Cj4gKyAgICAgICAgICAgIGZmaW9fd2ZvdXJjYyhwYiwgImlzbzgiKTsKPiArICAg ICAgICB9Cj4gKyAgICAgICAgZmZpb193Zm91cmNjKHBiLCAibWlmMSIpOwo+ICsgICAgICAgIGZm aW9fd2ZvdXJjYyhwYiwgIm1pYWYiKTsKPiArICAgICAgICBpZiAoZGVwdGggPT0gOCB8fCBkZXB0 aCA9PSAxMCkgewo+ICsgICAgICAgICAgICAvLyBNQTFCIGFuZCBNQTFBIGJyYW5kcyBhcmUgYmFz ZWQgb24gQVYxIHByb2ZpbGUuIFNob3J0IGhhbmQgZm9yCj4gKyAgICAgICAgICAgIC8vIGNvbXB1 dGluZyB0aGF0IGlzIGJhc2VkIG9uIGNocm9tYSBzdWJzYW1wbGluZyB0eXBlLiA0MjAgY2hyb21h Cj4gKyAgICAgICAgICAgIC8vIHN1YnNhbXBsaW5nIGlzIE1BMUIuICA0NDQgY2hyb21hIHN1YnNh bXBsaW5nIGlzIE1BMUEuCj4gKyAgICAgICAgICAgIGlmICghcGl4X2ZtdF9kZXNjLT5sb2cyX2No cm9tYV93ICYmICFwaXhfZm10X2Rlc2MtPmxvZzJfY2hyb21hX2gpIHsKPiArICAgICAgICAgICAg ICAgIC8vIDQ0NCBjaHJvbWEgc3Vic2FtcGxpbmcuCj4gKyAgICAgICAgICAgICAgICBmZmlvX3dm b3VyY2MocGIsICJNQTFBIik7Cj4gKyAgICAgICAgICAgIH0gZWxzZSB7Cj4gKyAgICAgICAgICAg ICAgICAvLyA0MjAgY2hyb21hIHN1YnNhbXBsaW5nLgo+ICsgICAgICAgICAgICAgICAgZmZpb193 Zm91cmNjKHBiLCAiTUExQiIpOwo+ICsgICAgICAgICAgICB9Cj4gKyAgICAgICAgfQo+ICAgICB9 IGVsc2UgaWYgKG1vdi0+bW9kZSAhPSBNT0RFX01PVikgewo+ICAgICAgICAgLy8gV2UgYWRkIHRm ZHQgYXRvbXMgd2hlbiBmcmFnbWVudGluZywgc2lnbmFsIHRoaXMgd2l0aCB0aGUgaXNvNiBjb21w YXRpYmxlCj4gICAgICAgICAvLyBicmFuZCwgaWYgbm90IGFscmVhZHkgdGhlIG1ham9yIGJyYW5k LiBUaGlzIGlzIGNvbXBhdGlibGUgd2l0aCB1c2VycyB0aGF0Cj4gQEAgLTU3MDUsNyArNTg5Miw3 IEBAIGludCBmZl9tb3Zfd3JpdGVfcGFja2V0KEFWRm9ybWF0Q29udGV4dCAqcywgQVZQYWNrZXQg KnBrdCkKPiAgICAgaWYgKHJldCA8IDApCj4gICAgICAgICByZXR1cm4gcmV0Owo+IAo+IC0gICAg aWYgKG1vdi0+ZmxhZ3MgJiBGRl9NT1ZfRkxBR19GUkFHTUVOVCkgewo+ICsgICAgaWYgKG1vdi0+ ZmxhZ3MgJiBGRl9NT1ZfRkxBR19GUkFHTUVOVCB8fCBtb3YtPm1vZGUgPT0gTU9ERV9BVklGKSB7 Cj4gICAgICAgICBpbnQgcmV0Owo+ICAgICAgICAgaWYgKG1vdi0+bW9vdl93cml0dGVuIHx8IG1v di0+ZmxhZ3MgJiBGRl9NT1ZfRkxBR19FTVBUWV9NT09WKSB7Cj4gICAgICAgICAgICAgaWYgKG1v di0+ZnJhZ19pbnRlcmxlYXZlICYmIG1vdi0+ZnJhZ21lbnRzID4gMCkgewo+IEBAIC01ODQ2LDcg KzYwMzMsMTEgQEAgaW50IGZmX21vdl93cml0ZV9wYWNrZXQoQVZGb3JtYXRDb250ZXh0ICpzLCBB VlBhY2tldCAqcGt0KQo+ICAgICAgICAgICAgIGF2aW9fd3JpdGUocGIsIHJlZm9ybWF0dGVkX2Rh dGEsIHNpemUpOwo+ICAgICAgICAgfSBlbHNlIHsKPiAgICAgICAgICAgICBzaXplID0gZmZfYXYx X2ZpbHRlcl9vYnVzKHBiLCBwa3QtPmRhdGEsIHBrdC0+c2l6ZSk7Cj4gKyAgICAgICAgICAgIGlm ICh0cmstPm1vZGUgPT0gTU9ERV9BVklGICYmICFtb3YtPmF2aWZfZXh0ZW50X2xlbmd0aCkgewo+ ICsgICAgICAgICAgICAgICAgbW92LT5hdmlmX2V4dGVudF9sZW5ndGggPSBzaXplOwo+ICsgICAg ICAgICAgICB9Cj4gICAgICAgICB9Cj4gKwo+ICNpZiBDT05GSUdfQUMzX1BBUlNFUgo+ICAgICB9 IGVsc2UgaWYgKHBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfRUFDMykgewo+ICAgICAgICAg c2l6ZSA9IGhhbmRsZV9lYWMzKG1vdiwgcGt0LCB0cmspOwo+IEBAIC02NTc5LDExICs2NzcwLDE1 IEBAIHN0YXRpYyBpbnQgbW92X2luaXQoQVZGb3JtYXRDb250ZXh0ICpzKQo+ICAgICBlbHNlIGlm IChJU19NT0RFKGlwb2QsIElQT0QpKSBtb3YtPm1vZGUgPSBNT0RFX0lQT0Q7Cj4gICAgIGVsc2Ug aWYgKElTX01PREUoaXNtdiwgSVNNVikpIG1vdi0+bW9kZSA9IE1PREVfSVNNOwo+ICAgICBlbHNl IGlmIChJU19NT0RFKGY0diwgICBGNFYpKSBtb3YtPm1vZGUgPSBNT0RFX0Y0VjsKPiArICAgIGVs c2UgaWYgKElTX01PREUoYXZpZiwgQVZJRikpIG1vdi0+bW9kZSA9IE1PREVfQVZJRjsKPiAjdW5k ZWYgSVNfTU9ERQo+IAo+ICAgICBpZiAobW92LT5mbGFncyAmIEZGX01PVl9GTEFHX0RFTEFZX01P T1YpCj4gICAgICAgICBtb3YtPmZsYWdzIHw9IEZGX01PVl9GTEFHX0VNUFRZX01PT1Y7Cj4gCj4g KyAgICBpZiAobW92LT5tb2RlID09IE1PREVfQVZJRikKPiArICAgICAgICBtb3YtPmZsYWdzIHw9 IEZGX01PVl9GTEFHX0RFTEFZX01PT1Y7Cj4gKwo+ICAgICAvKiBTZXQgdGhlIEZSQUdNRU5UIGZs YWcgaWYgYW55IG9mIHRoZSBmcmFnbWVudGF0aW9uIG1ldGhvZHMgYXJlCj4gICAgICAqIGVuYWJs ZWQuICovCj4gICAgIGlmIChtb3YtPm1heF9mcmFnbWVudF9kdXJhdGlvbiB8fCBtb3YtPm1heF9m cmFnbWVudF9zaXplIHx8Cj4gQEAgLTY2NjQsMTEgKzY4NTksMjQgQEAgc3RhdGljIGludCBtb3Zf aW5pdChBVkZvcm1hdENvbnRleHQgKnMpCj4gICAgIC8qIE5vbi1zZWVrYWJsZSBvdXRwdXQgaXMg b2sgaWYgdXNpbmcgZnJhZ21lbnRhdGlvbi4gSWYgaXNtX2xvb2thaGVhZAo+ICAgICAgKiBpcyBl bmFibGVkLCB3ZSBkb24ndCBzdXBwb3J0IG5vbi1zZWVrYWJsZSBvdXRwdXQgYXQgYWxsLiAqLwo+ ICAgICBpZiAoIShzLT5wYi0+c2Vla2FibGUgJiBBVklPX1NFRUtBQkxFX05PUk1BTCkgJiYKPiAt ICAgICAgICAoIShtb3YtPmZsYWdzICYgRkZfTU9WX0ZMQUdfRlJBR01FTlQpIHx8IG1vdi0+aXNt X2xvb2thaGVhZCkpIHsKPiArICAgICAgICAoIShtb3YtPmZsYWdzICYgRkZfTU9WX0ZMQUdfRlJB R01FTlQpIHx8IG1vdi0+aXNtX2xvb2thaGVhZCB8fAo+ICsgICAgICAgICBtb3YtPm1vZGUgPT0g TU9ERV9BVklGKSkgewo+ICAgICAgICAgYXZfbG9nKHMsIEFWX0xPR19FUlJPUiwgIm11eGVyIGRv ZXMgbm90IHN1cHBvcnQgbm9uIHNlZWthYmxlIG91dHB1dFxuIik7Cj4gICAgICAgICByZXR1cm4g QVZFUlJPUihFSU5WQUwpOwo+ICAgICB9Cj4gCj4gKyAgICAvKiBBVklGIG91dHB1dCBtdXN0IGhh dmUgZXhhY3RseSBvbmUgdmlkZW8gc3RyZWFtICovCj4gKyAgICBpZiAobW92LT5tb2RlID09IE1P REVfQVZJRikgewo+ICsgICAgICAgIGlmIChzLT5uYl9zdHJlYW1zID4gMSkgewo+ICsgICAgICAg ICAgICBhdl9sb2cocywgQVZfTE9HX0VSUk9SLCAiQVZJRiBvdXRwdXQgcmVxdWlyZXMgZXhhY3Rs eSBvbmUgc3RyZWFtXG4iKTsKPiArICAgICAgICAgICAgcmV0dXJuIEFWRVJST1IoRUlOVkFMKTsK PiArICAgICAgICB9Cj4gKyAgICAgICAgaWYgKHMtPnN0cmVhbXNbMF0tPmNvZGVjcGFyLT5jb2Rl Y190eXBlICE9IEFWTUVESUFfVFlQRV9WSURFTykgewo+ICsgICAgICAgICAgICBhdl9sb2cocywg QVZfTE9HX0VSUk9SLCAiQVZJRiBvdXRwdXQgcmVxdWlyZXMgb25lIHZpZGVvIHN0cmVhbVxuIik7 Cj4gKyAgICAgICAgICAgIHJldHVybiBBVkVSUk9SKEVJTlZBTCk7Cj4gKyAgICAgICAgfQo+ICsg ICAgfQo+ICsKPiAgICAgbW92LT5uYl9zdHJlYW1zID0gcy0+bmJfc3RyZWFtczsKPiAgICAgaWYg KG1vdi0+bW9kZSAmIChNT0RFX01QNHxNT0RFX01PVnxNT0RFX0lQT0QpICYmIHMtPm5iX2NoYXB0 ZXJzKQo+ICAgICAgICAgbW92LT5jaGFwdGVyX3RyYWNrID0gbW92LT5uYl9zdHJlYW1zKys7Cj4g QEAgLTY4MTEsMTIgKzcwMTksMTMgQEAgc3RhdGljIGludCBtb3ZfaW5pdChBVkZvcm1hdENvbnRl eHQgKnMpCj4gICAgICAgICAgICAgICAgICAgICAgICAgcGl4X2ZtdCA9PSBBVl9QSVhfRk1UX01P Tk9XSElURSB8fAo+ICAgICAgICAgICAgICAgICAgICAgICAgIHBpeF9mbXQgPT0gQVZfUElYX0ZN VF9NT05PQkxBQ0s7Cj4gICAgICAgICAgICAgfQo+IC0gICAgICAgICAgICBpZiAodHJhY2stPnBh ci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfVlA5IHx8Cj4gLSAgICAgICAgICAgICAgICB0cmFj ay0+cGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9BVjEpIHsKPiAtICAgICAgICAgICAgICAg IGlmICh0cmFjay0+bW9kZSAhPSBNT0RFX01QNCkgewo+IC0gICAgICAgICAgICAgICAgICAgIGF2 X2xvZyhzLCBBVl9MT0dfRVJST1IsICIlcyBvbmx5IHN1cHBvcnRlZCBpbiBNUDQuXG4iLCBhdmNv ZGVjX2dldF9uYW1lKHRyYWNrLT5wYXItPmNvZGVjX2lkKSk7Cj4gLSAgICAgICAgICAgICAgICAg ICAgcmV0dXJuIEFWRVJST1IoRUlOVkFMKTsKPiAtICAgICAgICAgICAgICAgIH0KPiArICAgICAg ICAgICAgaWYgKHRyYWNrLT5wYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX1ZQOSAmJiB0cmFj ay0+bW9kZSAhPSBNT0RFX01QNCkgewo+ICsgICAgICAgICAgICAgICAgYXZfbG9nKHMsIEFWX0xP R19FUlJPUiwgIiVzIG9ubHkgc3VwcG9ydGVkIGluIE1QNC5cbiIsIGF2Y29kZWNfZ2V0X25hbWUo dHJhY2stPnBhci0+Y29kZWNfaWQpKTsKPiArICAgICAgICAgICAgICAgIHJldHVybiBBVkVSUk9S KEVJTlZBTCk7Cj4gKyAgICAgICAgICAgIH0gZWxzZSBpZiAodHJhY2stPnBhci0+Y29kZWNfaWQg PT0gQVZfQ09ERUNfSURfQVYxICYmCj4gKyAgICAgICAgICAgICAgICAgICAgICAgdHJhY2stPm1v ZGUgIT0gTU9ERV9NUDQgJiYgdHJhY2stPm1vZGUgIT0gTU9ERV9BVklGKSB7Cj4gKyAgICAgICAg ICAgICAgICBhdl9sb2cocywgQVZfTE9HX0VSUk9SLCAiJXMgb25seSBzdXBwb3J0ZWQgaW4gTVA0 IGFuZCBBVklGLlxuIiwgYXZjb2RlY19nZXRfbmFtZSh0cmFjay0+cGFyLT5jb2RlY19pZCkpOwo+ ICsgICAgICAgICAgICAgICAgcmV0dXJuIEFWRVJST1IoRUlOVkFMKTsKPiAgICAgICAgICAgICB9 IGVsc2UgaWYgKHRyYWNrLT5wYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX1ZQOCkgewo+ICAg ICAgICAgICAgICAgICAvKiBhbHRyZWYgZnJhbWVzIGhhbmRsaW5nIGlzIG5vdCBkZWZpbmVkIGlu IHRoZSBzcGVjIGFzIG9mIHZlcnNpb24gdjEuMCwKPiAgICAgICAgICAgICAgICAgICogc28ganVz dCBmb3JiaWQgbXV4aW5nIFZQOCBzdHJlYW1zIGFsdG9nZXRoZXIgdW50aWwgYSBuZXcgdmVyc2lv biBkb2VzICovCj4gQEAgLTcwMzQsNyArNzI0Myw3IEBAIHN0YXRpYyBpbnQgbW92X3dyaXRlX2hl YWRlcihBVkZvcm1hdENvbnRleHQgKnMpCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZG X01PVl9GTEFHX0ZSQUdfRVZFUllfRlJBTUUpKSAmJgo+ICAgICAgICAgICAgICFtb3YtPm1heF9m cmFnbWVudF9kdXJhdGlvbiAmJiAhbW92LT5tYXhfZnJhZ21lbnRfc2l6ZSkKPiAgICAgICAgICAg ICBtb3YtPmZsYWdzIHw9IEZGX01PVl9GTEFHX0ZSQUdfS0VZRlJBTUU7Cj4gLSAgICB9IGVsc2Ug ewo+ICsgICAgfSBlbHNlIGlmIChtb3YtPm1vZGUgIT0gTU9ERV9BVklGKSB7Cj4gICAgICAgICBp ZiAobW92LT5mbGFncyAmIEZGX01PVl9GTEFHX0ZBU1RTVEFSVCkKPiAgICAgICAgICAgICBtb3Yt PnJlc2VydmVkX2hlYWRlcl9wb3MgPSBhdmlvX3RlbGwocGIpOwo+ICAgICAgICAgbW92X3dyaXRl X21kYXRfdGFnKHBiLCBtb3YpOwo+IEBAIC03MzIyLDYgKzc1MzEsNTAgQEAgc3RhdGljIGludCBt b3ZfY2hlY2tfYml0c3RyZWFtKEFWRm9ybWF0Q29udGV4dCAqcywgQVZTdHJlYW0gKnN0LAo+ICAg ICByZXR1cm4gcmV0Owo+IH0KPiAKPiArc3RhdGljIGludCBhdmlmX3dyaXRlX3RyYWlsZXIoQVZG b3JtYXRDb250ZXh0ICpzKQo+ICt7Cj4gKyAgICBBVklPQ29udGV4dCAqcGIgPSBzLT5wYjsKPiAr ICAgIE1PVk11eENvbnRleHQgKm1vdiA9IHMtPnByaXZfZGF0YTsKPiArICAgIGludDY0X3QgcG9z X2JhY2t1cCwgbWRhdF9wb3M7Cj4gKyAgICB1aW50OF90ICpidWY7Cj4gKyAgICBpbnQgYnVmX3Np emUsIG1vb3Zfc2l6ZTsKPiArCj4gKyAgICBpZiAobW92LT5tb292X3dyaXR0ZW4pIHJldHVybiAw Owo+ICsKPiArICAgIG1vdi0+aXNfYW5pbWF0ZWRfYXZpZiA9IHMtPnN0cmVhbXNbMF0tPm5iX2Zy YW1lcyA+IDE7Cj4gKyAgICBtb3Zfd3JpdGVfaWRlbnRpZmljYXRpb24ocGIsIHMpOwo+ICsgICAg bW92X3dyaXRlX21ldGFfdGFnKHBiLCBtb3YsIHMpOwo+ICsKPiArICAgIG1vb3Zfc2l6ZSA9IGdl dF9tb292X3NpemUocyk7Cj4gKyAgICBtb3YtPnRyYWNrc1swXS5kYXRhX29mZnNldCA9IGF2aW9f dGVsbChwYikgKyBtb292X3NpemUgKyA4Owo+ICsKPiArICAgIGlmIChtb3YtPmlzX2FuaW1hdGVk X2F2aWYpIHsKPiArICAgICAgICBpbnQgcmV0Owo+ICsgICAgICAgIGlmICgocmV0ID0gbW92X3dy aXRlX21vb3ZfdGFnKHBiLCBtb3YsIHMpKSA8IDApCj4gKyAgICAgICAgICAgIHJldHVybiByZXQ7 Cj4gKyAgICB9Cj4gKwo+ICsgICAgYnVmX3NpemUgPSBhdmlvX2dldF9keW5fYnVmKG1vdi0+bWRh dF9idWYsICZidWYpOwo+ICsgICAgYXZpb193YjMyKHBiLCBidWZfc2l6ZSArIDgpOwo+ICsgICAg ZmZpb193Zm91cmNjKHBiLCAibWRhdCIpOwo+ICsgICAgbWRhdF9wb3MgPSBhdmlvX3RlbGwocGIp Owo+ICsKPiArICAgIGlmIChtZGF0X3BvcyAhPSAodWludDMyX3QpbWRhdF9wb3MpIHsKPiArICAg ICAgICBhdl9sb2cocywgQVZfTE9HX0VSUk9SLCAibWRhdCBvZmZzZXQgZG9lcyBub3QgZml0IGlu IDMyIGJpdHNcbiIpOwo+ICsgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwo+ICsg ICAgfQo+ICsKPiArICAgIGF2aW9fd3JpdGUocGIsIGJ1ZiwgYnVmX3NpemUpOwo+ICsKPiArICAg IC8vIHdyaXRlIGV4dGVudCBvZmZzZXQuCj4gKyAgICBwb3NfYmFja3VwID0gYXZpb190ZWxsKHBi KTsKPiArICAgIGF2aW9fc2VlayhwYiwgbW92LT5hdmlmX2V4dGVudF9wb3MsIFNFRUtfU0VUKTsK PiArICAgIGF2aW9fd2IzMihwYiwgbWRhdF9wb3MpOyAvKiByZXdyaXRlIG9mZnNldCAqLwo+ICsg ICAgYXZpb19zZWVrKHBiLCBwb3NfYmFja3VwLCBTRUVLX1NFVCk7Cj4gKwo+ICsgICAgcmV0dXJu IDA7Cj4gK30KPiArCj4gI2lmIENPTkZJR19UR1BfTVVYRVIgfHwgQ09ORklHX1RHMl9NVVhFUgo+ IHN0YXRpYyBjb25zdCBBVkNvZGVjVGFnIGNvZGVjXzNncF90YWdzW10gPSB7Cj4gICAgIHsgQVZf Q09ERUNfSURfSDI2MywgICAgIE1LVEFHKCdzJywnMicsJzYnLCczJykgfSwKPiBAQCAtNzQwNCw2 ICs3NjU3LDIwIEBAIHN0YXRpYyBjb25zdCBBVkNvZGVjVGFnIGNvZGVjX2Y0dl90YWdzW10gPSB7 Cj4gICAgIHsgQVZfQ09ERUNfSURfTk9ORSwgMCB9LAo+IH07Cj4gCj4gKyNpZiBDT05GSUdfQVZJ Rl9NVVhFUgo+ICtzdGF0aWMgY29uc3QgQVZDb2RlY1RhZyBjb2RlY19hdmlmX3RhZ3NbXSA9IHsK PiArICAgIHsgQVZfQ09ERUNfSURfQVYxLCAgICAgTUtUQUcoJ2EnLCd2JywnMCcsJzEnKSB9LAo+ ICsgICAgeyBBVl9DT0RFQ19JRF9OT05FLCAwIH0sCj4gK307Cj4gK3N0YXRpYyBjb25zdCBBVkNv ZGVjVGFnICpjb25zdCBjb2RlY19hdmlmX3RhZ3NfbGlzdFtdID0geyBjb2RlY19hdmlmX3RhZ3Ms IE5VTEwgfTsKPiArCj4gK3N0YXRpYyBjb25zdCBBVkNsYXNzIG1vdl9hdmlmX211eGVyX2NsYXNz ID0gewo+ICsgICAgLmNsYXNzX25hbWUgPSAiYXZpZiBtdXhlciIsCj4gKyAgICAuaXRlbV9uYW1l ICA9IGF2X2RlZmF1bHRfaXRlbV9uYW1lLAo+ICsgICAgLnZlcnNpb24gICAgPSBMSUJBVlVUSUxf VkVSU0lPTl9JTlQsCj4gK307Cj4gKyNlbmRpZgo+ICsKPiAjaWYgQ09ORklHX01PVl9NVVhFUgo+ IGNvbnN0IEFWT3V0cHV0Rm9ybWF0IGZmX21vdl9tdXhlciA9IHsKPiAgICAgLm5hbWUgICAgICAg ICAgICAgID0gIm1vdiIsCj4gQEAgLTc1NjYsMyArNzgzMywyMSBAQCBjb25zdCBBVk91dHB1dEZv cm1hdCBmZl9mNHZfbXV4ZXIgPSB7Cj4gICAgIC5wcml2X2NsYXNzICAgICAgICA9ICZtb3ZfaXNv Ym1mZl9tdXhlcl9jbGFzcywKPiB9Owo+ICNlbmRpZgo+ICsjaWYgQ09ORklHX0FWSUZfTVVYRVIK PiArY29uc3QgQVZPdXRwdXRGb3JtYXQgZmZfYXZpZl9tdXhlciA9IHsKPiArICAgIC5uYW1lICAg ICAgICAgICAgICA9ICJhdmlmIiwKPiArICAgIC5sb25nX25hbWUgICAgICAgICA9IE5VTExfSUZf Q09ORklHX1NNQUxMKCJBVklGIiksCj4gKyAgICAubWltZV90eXBlICAgICAgICAgPSAiaW1hZ2Uv YXZpZiIsCj4gKyAgICAuZXh0ZW5zaW9ucyAgICAgICAgPSAiYXZpZiIsCj4gKyAgICAucHJpdl9k YXRhX3NpemUgICAgPSBzaXplb2YoTU9WTXV4Q29udGV4dCksCj4gKyAgICAudmlkZW9fY29kZWMg ICAgICAgPSBBVl9DT0RFQ19JRF9BVjEsCj4gKyAgICAuaW5pdCAgICAgICAgICAgICAgPSBtb3Zf aW5pdCwKPiArICAgIC53cml0ZV9oZWFkZXIgICAgICA9IG1vdl93cml0ZV9oZWFkZXIsCj4gKyAg ICAud3JpdGVfcGFja2V0ICAgICAgPSBtb3Zfd3JpdGVfcGFja2V0LAo+ICsgICAgLndyaXRlX3Ry YWlsZXIgICAgID0gYXZpZl93cml0ZV90cmFpbGVyLAo+ICsgICAgLmRlaW5pdCAgICAgICAgICAg ID0gbW92X2ZyZWUsCj4gKyAgICAuZmxhZ3MgICAgICAgICAgICAgPSBBVkZNVF9HTE9CQUxIRUFE RVIgfCBBVkZNVF9BTExPV19GTFVTSCwKPiArICAgIC5jb2RlY190YWcgICAgICAgICA9IGNvZGVj X2F2aWZfdGFnc19saXN0LAo+ICsgICAgLnByaXZfY2xhc3MgICAgICAgID0gJm1vdl9hdmlmX211 eGVyX2NsYXNzLAo+ICt9Owo+ICsjZW5kaWYKPiBkaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQvbW92 ZW5jLmggYi9saWJhdmZvcm1hdC9tb3ZlbmMuaAo+IGluZGV4IGNhNTA3ZTBlMDQuLjI4MTU3NmNj NjYgMTAwNjQ0Cj4gLS0tIGEvbGliYXZmb3JtYXQvbW92ZW5jLmgKPiArKysgYi9saWJhdmZvcm1h dC9tb3ZlbmMuaAo+IEBAIC00Myw2ICs0Myw3IEBACj4gI2RlZmluZSBNT0RFX0lQT0QgMHgyMAo+ ICNkZWZpbmUgTU9ERV9JU00gIDB4NDAKPiAjZGVmaW5lIE1PREVfRjRWICAweDgwCj4gKyNkZWZp bmUgTU9ERV9BVklGIDB4MTAwCj4gCj4gdHlwZWRlZiBzdHJ1Y3QgTU9WSWVudHJ5IHsKPiAgICAg dWludDY0X3QgICAgIHBvczsKPiBAQCAtMjQ0LDYgKzI0NSwxMCBAQCB0eXBlZGVmIHN0cnVjdCBN T1ZNdXhDb250ZXh0IHsKPiAgICAgTU9WUHJmdEJveCB3cml0ZV9wcmZ0Owo+ICAgICBpbnQgZW1w dHlfaGRscl9uYW1lOwo+ICAgICBpbnQgbW92aWVfdGltZXNjYWxlOwo+ICsKPiArICAgIGludDY0 X3QgYXZpZl9leHRlbnRfcG9zOwo+ICsgICAgaW50IGF2aWZfZXh0ZW50X2xlbmd0aDsKPiArICAg IGludCBpc19hbmltYXRlZF9hdmlmOwo+IH0gTU9WTXV4Q29udGV4dDsKPiAKPiAjZGVmaW5lIEZG X01PVl9GTEFHX1JUUF9ISU5UICAgICAgICAgICAgICAoMSA8PCAgMCkKPiAtLSAKPiAyLjM2LjAu NDY0LmdiOWM4YjQ2ZTk0LWdvb2cKPiAKPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwo+IGZmbXBlZy1kZXZlbCBtYWlsaW5nIGxpc3QKPiBmZm1wZWctZGV2 ZWxAZmZtcGVnLm9yZwo+IGh0dHBzOi8vZmZtcGVnLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZmbXBl Zy1kZXZlbAo+IAo+IFRvIHVuc3Vic2NyaWJlLCB2aXNpdCBsaW5rIGFib3ZlLCBvciBlbWFpbAo+ IGZmbXBlZy1kZXZlbC1yZXF1ZXN0QGZmbXBlZy5vcmcgd2l0aCBzdWJqZWN0ICJ1bnN1YnNjcmli ZSIuCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpmZm1w ZWctZGV2ZWwgbWFpbGluZyBsaXN0CmZmbXBlZy1kZXZlbEBmZm1wZWcub3JnCmh0dHBzOi8vZmZt cGVnLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZmbXBlZy1kZXZlbAoKVG8gdW5zdWJzY3JpYmUsIHZp c2l0IGxpbmsgYWJvdmUsIG9yIGVtYWlsCmZmbXBlZy1kZXZlbC1yZXF1ZXN0QGZmbXBlZy5vcmcg d2l0aCBzdWJqZWN0ICJ1bnN1YnNjcmliZSIuCg==