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 8917D476EE for ; Wed, 20 Sep 2023 00:46:15 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 9076568C971; Wed, 20 Sep 2023 03:46:14 +0300 (EEST) Received: from mail-lf1-f42.google.com (mail-lf1-f42.google.com [209.85.167.42]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 70C2B68C301 for ; Wed, 20 Sep 2023 03:46:08 +0300 (EEST) Received: by mail-lf1-f42.google.com with SMTP id 2adb3069b0e04-50300141a64so6345267e87.0 for ; Tue, 19 Sep 2023 17:46:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1695170767; x=1695775567; 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=v9qBS/0H+cJWnyjPNoH4hj0ckKQKsE78l7GDokSNZb0=; b=JpUn47SdW5JKJY+lot7GUwFLubwBNHAoR1m6h7dnrWHASr2kr07vXLcTqJ5+588gbk yRIiEj15IzcpVZAZ/V8Vv+X6ijsdW4X5XrvIR+5DgJFN0TWgzGp80/5sjm2LkyvNIhT9 cznbKqhcPOxVA0q0oxDOpFkYD4wb9cTOnX/7fOfF1IrK708jdrQexjTwUvG2JfXF0JxR 6gTXvDHLTMqqVyZr/lONwtk2XwLFuE9WFnDx40TQyPyYR7YR5RiL8RIJEw4T//7UCosW basdsUEs7OB2Wl1R9bgxPXl/VG7LzNy8PYjeewlZG+lHFJzOez1mLBG+2ONUPDbfFf3p 9/qA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1695170767; x=1695775567; 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=v9qBS/0H+cJWnyjPNoH4hj0ckKQKsE78l7GDokSNZb0=; b=kL7Ff4bSoqAV9TbpJ66DYXhy6fWVIqxhtdgSHONujAUd/Y3903YhNPVLrj5MTZr/cX x5+Da+40iUIRTO3pW1tYS1+b8kbFiYW+QKOqqh6142fKnsGGRzY7VWu+kqrmuhqrO9rx EGqmlnn9qGsuh9TFTHbRzRBbIZzTEsS23Ke+ElRqSEXpyvD0svVjEDJW3Var/HwMgQ0p T8rngQknO7h/cQYtadirSYnRPUJk2VgrJXTSEHlxv1AjCHhyApTf6WWTLxqhmHY6ato1 MpKmYWpgAnhx1SGkleNzoQt1P3wYVG9N1wkdRSAVlPzBtKAiygAMggrHnMQ8H+YSVUMn 22GQ== X-Gm-Message-State: AOJu0Yw0pc2up8Vjshvm2LWVSwFDe29qohP02ohvqKWzb4oAVVx+KUFC TjrnzCtVDCVYZJlVKriyBRvml7lEba30B+HXzdnWbt52Nm9Q6w== X-Google-Smtp-Source: AGHT+IFhWBe2d2YOYfDYk+gZ4PfHfYcWQwY5fsKgxdQ+Dr0kcD6xlb03PPCbumd0+kSVrB39ZpRUrNuglQ2Pe2c/OOw= X-Received: by 2002:a05:6512:3702:b0:503:93c:246d with SMTP id z2-20020a056512370200b00503093c246dmr917900lfr.25.1695170767011; Tue, 19 Sep 2023 17:46:07 -0700 (PDT) MIME-Version: 1.0 References: <20230911075232.797886-1-fei.w.wang@intel.com> <20230911075232.797886-6-fei.w.wang@intel.com> In-Reply-To: <20230911075232.797886-6-fei.w.wang@intel.com> From: Neal Gompa Date: Tue, 19 Sep 2023 20:45:30 -0400 Message-ID: To: FFmpeg development discussions and patches Subject: Re: [FFmpeg-devel] [PATCH v5 6/8] lavc/vaapi_encode: Separate reference frame into previous/future list 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: T24gTW9uLCBTZXAgMTEsIDIwMjMgYXQgMzo1NOKAr0FNIDxmZWkudy53YW5nLWF0LWludGVsLmNv bUBmZm1wZWcub3JnPiB3cm90ZToKPgo+IEZyb206IEZlaSBXYW5nIDxmZWkudy53YW5nQGludGVs LmNvbT4KPgo+IFRvIHN1cHBvcnQgbW9yZSByZWZlcmVuY2UgZnJhbWVzIGZyb20gZGlmZmVyZW50 IGRpcmVjdGlvbnMuCj4KPiBTaWduZWQtb2ZmLWJ5OiBGZWkgV2FuZyA8ZmVpLncud2FuZ0BpbnRl bC5jb20+Cj4gLS0tCj4gIGxpYmF2Y29kZWMvdmFhcGlfZW5jb2RlLmMgICAgICAgfCAxMTIgKysr KysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0KPiAgbGliYXZjb2RlYy92YWFwaV9lbmNvZGUu aCAgICAgICB8ICAxNSArKystLQo+ICBsaWJhdmNvZGVjL3ZhYXBpX2VuY29kZV9oMjY0LmMgIHwg IDk0ICsrKysrKysrKysrKystLS0tLS0tLS0tLS0tLQo+ICBsaWJhdmNvZGVjL3ZhYXBpX2VuY29k ZV9oMjY1LmMgIHwgIDc2ICsrKysrKysrKysrKystLS0tLS0tLS0KPiAgbGliYXZjb2RlYy92YWFw aV9lbmNvZGVfbXBlZzIuYyB8ICAgNiArLQo+ICBsaWJhdmNvZGVjL3ZhYXBpX2VuY29kZV92cDgu YyAgIHwgICA2ICstCj4gIGxpYmF2Y29kZWMvdmFhcGlfZW5jb2RlX3ZwOS5jICAgfCAgMjYgKysr Ky0tLS0KPiAgNyBmaWxlcyBjaGFuZ2VkLCAyMDggaW5zZXJ0aW9ucygrKSwgMTI3IGRlbGV0aW9u cygtKQo+Cj4gZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvdmFhcGlfZW5jb2RlLmMgYi9saWJhdmNv ZGVjL3ZhYXBpX2VuY29kZS5jCj4gaW5kZXggNDY3NjIzNDJlYi4uNzkwMzY2NzNlNyAxMDA2NDQK PiAtLS0gYS9saWJhdmNvZGVjL3ZhYXBpX2VuY29kZS5jCj4gKysrIGIvbGliYXZjb2RlYy92YWFw aV9lbmNvZGUuYwo+IEBAIC0yNzYsMjEgKzI3NiwzNCBAQCBzdGF0aWMgaW50IHZhYXBpX2VuY29k ZV9pc3N1ZShBVkNvZGVjQ29udGV4dCAqYXZjdHgsCj4gICAgICBhdl9sb2coYXZjdHgsIEFWX0xP R19ERUJVRywgIklzc3VpbmcgZW5jb2RlIGZvciBwaWMgJSJQUklkNjQiLyUiUFJJZDY0IiAiCj4g ICAgICAgICAgICAgImFzIHR5cGUgJXMuXG4iLCBwaWMtPmRpc3BsYXlfb3JkZXIsIHBpYy0+ZW5j b2RlX29yZGVyLAo+ICAgICAgICAgICAgIHBpY3R1cmVfdHlwZV9uYW1lW3BpYy0+dHlwZV0pOwo+ IC0gICAgaWYgKHBpYy0+bmJfcmVmcyA9PSAwKSB7Cj4gKyAgICBpZiAocGljLT5uYl9yZWZzWzBd ID09IDAgJiYgcGljLT5uYl9yZWZzWzFdID09IDApIHsKPiAgICAgICAgICBhdl9sb2coYXZjdHgs IEFWX0xPR19ERUJVRywgIk5vIHJlZmVyZW5jZSBwaWN0dXJlcy5cbiIpOwo+ICAgICAgfSBlbHNl IHsKPiAtICAgICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19ERUJVRywgIlJlZmVycyB0bzoiKTsK PiAtICAgICAgICBmb3IgKGkgPSAwOyBpIDwgcGljLT5uYl9yZWZzOyBpKyspIHsKPiArICAgICAg ICBhdl9sb2coYXZjdHgsIEFWX0xPR19ERUJVRywgIkwwIHJlZmVycyB0byIpOwo+ICsgICAgICAg IGZvciAoaSA9IDA7IGkgPCBwaWMtPm5iX3JlZnNbMF07IGkrKykgewo+ICAgICAgICAgICAgICBh dl9sb2coYXZjdHgsIEFWX0xPR19ERUJVRywgIiAlIlBSSWQ2NCIvJSJQUklkNjQsCj4gLSAgICAg ICAgICAgICAgICAgICBwaWMtPnJlZnNbaV0tPmRpc3BsYXlfb3JkZXIsIHBpYy0+cmVmc1tpXS0+ ZW5jb2RlX29yZGVyKTsKPiArICAgICAgICAgICAgICAgICAgIHBpYy0+cmVmc1swXVtpXS0+ZGlz cGxheV9vcmRlciwgcGljLT5yZWZzWzBdW2ldLT5lbmNvZGVfb3JkZXIpOwo+ICAgICAgICAgIH0K PiAgICAgICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19ERUJVRywgIi5cbiIpOwo+ICsKPiArICAg ICAgICBpZiAocGljLT5uYl9yZWZzWzFdKSB7Cj4gKyAgICAgICAgICAgIGF2X2xvZyhhdmN0eCwg QVZfTE9HX0RFQlVHLCAiTDEgcmVmZXJzIHRvIik7Cj4gKyAgICAgICAgICAgIGZvciAoaSA9IDA7 IGkgPCBwaWMtPm5iX3JlZnNbMV07IGkrKykgewo+ICsgICAgICAgICAgICAgICAgYXZfbG9nKGF2 Y3R4LCBBVl9MT0dfREVCVUcsICIgJSJQUklkNjQiLyUiUFJJZDY0LAo+ICsgICAgICAgICAgICAg ICAgICAgICAgIHBpYy0+cmVmc1sxXVtpXS0+ZGlzcGxheV9vcmRlciwgcGljLT5yZWZzWzFdW2ld LT5lbmNvZGVfb3JkZXIpOwo+ICsgICAgICAgICAgICB9Cj4gKyAgICAgICAgICAgIGF2X2xvZyhh dmN0eCwgQVZfTE9HX0RFQlVHLCAiLlxuIik7Cj4gKyAgICAgICAgfQo+ICAgICAgfQo+Cj4gICAg ICBhdl9hc3NlcnQwKCFwaWMtPmVuY29kZV9pc3N1ZWQpOwo+IC0gICAgZm9yIChpID0gMDsgaSA8 IHBpYy0+bmJfcmVmczsgaSsrKSB7Cj4gLSAgICAgICAgYXZfYXNzZXJ0MChwaWMtPnJlZnNbaV0p Owo+IC0gICAgICAgIGF2X2Fzc2VydDAocGljLT5yZWZzW2ldLT5lbmNvZGVfaXNzdWVkKTsKPiAr ICAgIGZvciAoaSA9IDA7IGkgPCBwaWMtPm5iX3JlZnNbMF07IGkrKykgewo+ICsgICAgICAgIGF2 X2Fzc2VydDAocGljLT5yZWZzWzBdW2ldKTsKPiArICAgICAgICBhdl9hc3NlcnQwKHBpYy0+cmVm c1swXVtpXS0+ZW5jb2RlX2lzc3VlZCk7Cj4gKyAgICB9Cj4gKyAgICBmb3IgKGkgPSAwOyBpIDwg cGljLT5uYl9yZWZzWzFdOyBpKyspIHsKPiArICAgICAgICBhdl9hc3NlcnQwKHBpYy0+cmVmc1sx XVtpXSk7Cj4gKyAgICAgICAgYXZfYXNzZXJ0MChwaWMtPnJlZnNbMV1baV0tPmVuY29kZV9pc3N1 ZWQpOwo+ICAgICAgfQo+Cj4gICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19ERUJVRywgIklucHV0 IHN1cmZhY2UgaXMgJSN4LlxuIiwgcGljLT5pbnB1dF9zdXJmYWNlKTsKPiBAQCAtODMyLDggKzg0 NSwxMiBAQCBzdGF0aWMgdm9pZCB2YWFwaV9lbmNvZGVfYWRkX3JlZihBVkNvZGVjQ29udGV4dCAq YXZjdHgsCj4KPiAgICAgIGlmIChpc19yZWYpIHsKPiAgICAgICAgICBhdl9hc3NlcnQwKHBpYyAh PSB0YXJnZXQpOwo+IC0gICAgICAgIGF2X2Fzc2VydDAocGljLT5uYl9yZWZzIDwgTUFYX1BJQ1RV UkVfUkVGRVJFTkNFUyk7Cj4gLSAgICAgICAgcGljLT5yZWZzW3BpYy0+bmJfcmVmcysrXSA9IHRh cmdldDsKPiArICAgICAgICBhdl9hc3NlcnQwKHBpYy0+bmJfcmVmc1swXSA8IE1BWF9QSUNUVVJF X1JFRkVSRU5DRVMgJiYKPiArICAgICAgICAgICAgICAgICAgIHBpYy0+bmJfcmVmc1sxXSA8IE1B WF9QSUNUVVJFX1JFRkVSRU5DRVMpOwo+ICsgICAgICAgIGlmICh0YXJnZXQtPmRpc3BsYXlfb3Jk ZXIgPCBwaWMtPmRpc3BsYXlfb3JkZXIpCj4gKyAgICAgICAgICAgIHBpYy0+cmVmc1swXVtwaWMt Pm5iX3JlZnNbMF0rK10gPSB0YXJnZXQ7Cj4gKyAgICAgICAgZWxzZQo+ICsgICAgICAgICAgICBw aWMtPnJlZnNbMV1bcGljLT5uYl9yZWZzWzFdKytdID0gdGFyZ2V0Owo+ICAgICAgICAgICsrcmVm czsKPiAgICAgIH0KPgo+IEBAIC04NjIsMTAgKzg3OSwxNiBAQCBzdGF0aWMgdm9pZCB2YWFwaV9l bmNvZGVfcmVtb3ZlX3JlZnMoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LAo+ICAgICAgaWYgKHBpYy0+ cmVmX3JlbW92ZWRbbGV2ZWxdKQo+ICAgICAgICAgIHJldHVybjsKPgo+IC0gICAgZm9yIChpID0g MDsgaSA8IHBpYy0+bmJfcmVmczsgaSsrKSB7Cj4gLSAgICAgICAgYXZfYXNzZXJ0MChwaWMtPnJl ZnNbaV0pOwo+IC0gICAgICAgIC0tcGljLT5yZWZzW2ldLT5yZWZfY291bnRbbGV2ZWxdOwo+IC0g ICAgICAgIGF2X2Fzc2VydDAocGljLT5yZWZzW2ldLT5yZWZfY291bnRbbGV2ZWxdID49IDApOwo+ ICsgICAgZm9yIChpID0gMDsgaSA8IHBpYy0+bmJfcmVmc1swXTsgaSsrKSB7Cj4gKyAgICAgICAg YXZfYXNzZXJ0MChwaWMtPnJlZnNbMF1baV0pOwo+ICsgICAgICAgIC0tcGljLT5yZWZzWzBdW2ld LT5yZWZfY291bnRbbGV2ZWxdOwo+ICsgICAgICAgIGF2X2Fzc2VydDAocGljLT5yZWZzWzBdW2ld LT5yZWZfY291bnRbbGV2ZWxdID49IDApOwo+ICsgICAgfQo+ICsKPiArICAgIGZvciAoaSA9IDA7 IGkgPCBwaWMtPm5iX3JlZnNbMV07IGkrKykgewo+ICsgICAgICAgIGF2X2Fzc2VydDAocGljLT5y ZWZzWzFdW2ldKTsKPiArICAgICAgICAtLXBpYy0+cmVmc1sxXVtpXS0+cmVmX2NvdW50W2xldmVs XTsKPiArICAgICAgICBhdl9hc3NlcnQwKHBpYy0+cmVmc1sxXVtpXS0+cmVmX2NvdW50W2xldmVs XSA+PSAwKTsKPiAgICAgIH0KPgo+ICAgICAgZm9yIChpID0gMDsgaSA8IHBpYy0+bmJfZHBiX3Bp Y3M7IGkrKykgewo+IEBAIC05MTAsNyArOTMzLDcgQEAgc3RhdGljIHZvaWQgdmFhcGlfZW5jb2Rl X3NldF9iX3BpY3R1cmVzKEFWQ29kZWNDb250ZXh0ICphdmN0eCwKPiAgICAgICAgICAgICAgdmFh cGlfZW5jb2RlX2FkZF9yZWYoYXZjdHgsIHBpYywgZW5kLCAgIDEsIDEsIDApOwo+ICAgICAgICAg ICAgICB2YWFwaV9lbmNvZGVfYWRkX3JlZihhdmN0eCwgcGljLCBwcmV2LCAgMCwgMCwgMSk7Cj4K PiAtICAgICAgICAgICAgZm9yIChyZWYgPSBlbmQtPnJlZnNbMV07IHJlZjsgcmVmID0gcmVmLT5y ZWZzWzFdKQo+ICsgICAgICAgICAgICBmb3IgKHJlZiA9IGVuZC0+cmVmc1sxXVswXTsgcmVmOyBy ZWYgPSByZWYtPnJlZnNbMV1bMF0pCj4gICAgICAgICAgICAgICAgICB2YWFwaV9lbmNvZGVfYWRk X3JlZihhdmN0eCwgcGljLCByZWYsIDAsIDEsIDApOwo+ICAgICAgICAgIH0KPiAgICAgICAgICAq bGFzdCA9IHByZXY7Cj4gQEAgLTkzMyw3ICs5NTYsNyBAQCBzdGF0aWMgdm9pZCB2YWFwaV9lbmNv ZGVfc2V0X2JfcGljdHVyZXMoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LAo+ICAgICAgICAgIHZhYXBp X2VuY29kZV9hZGRfcmVmKGF2Y3R4LCBwaWMsIGVuZCwgICAxLCAxLCAwKTsKPiAgICAgICAgICB2 YWFwaV9lbmNvZGVfYWRkX3JlZihhdmN0eCwgcGljLCBwcmV2LCAgMCwgMCwgMSk7Cj4KPiAtICAg ICAgICBmb3IgKHJlZiA9IGVuZC0+cmVmc1sxXTsgcmVmOyByZWYgPSByZWYtPnJlZnNbMV0pCj4g KyAgICAgICAgZm9yIChyZWYgPSBlbmQtPnJlZnNbMV1bMF07IHJlZjsgcmVmID0gcmVmLT5yZWZz WzFdWzBdKQo+ICAgICAgICAgICAgICB2YWFwaV9lbmNvZGVfYWRkX3JlZihhdmN0eCwgcGljLCBy ZWYsIDAsIDEsIDApOwo+Cj4gICAgICAgICAgaWYgKGkgPiAxKQo+IEBAIC05NDcsMTEgKzk3MCw0 NCBAQCBzdGF0aWMgdm9pZCB2YWFwaV9lbmNvZGVfc2V0X2JfcGljdHVyZXMoQVZDb2RlY0NvbnRl eHQgKmF2Y3R4LAo+ICAgICAgfQo+ICB9Cj4KPiArc3RhdGljIHZvaWQgdmFhcGlfZW5jb2RlX2Fk ZF9uZXh0X3ByZXYoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LAo+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBWQUFQSUVuY29kZVBpY3R1cmUgKnBpYykKPiArewo+ICsgICAg VkFBUElFbmNvZGVDb250ZXh0ICpjdHggPSBhdmN0eC0+cHJpdl9kYXRhOwo+ICsgICAgaW50IGk7 Cj4gKwo+ICsgICAgaWYgKCFwaWMpCj4gKyAgICAgICAgcmV0dXJuOwo+ICsKPiArICAgIGlmIChw aWMtPnR5cGUgPT0gUElDVFVSRV9UWVBFX0lEUikgewo+ICsgICAgICAgIGZvciAoaSA9IDA7IGkg PCBjdHgtPm5iX25leHRfcHJldjsgaSsrKSB7Cj4gKyAgICAgICAgICAgIC0tY3R4LT5uZXh0X3By ZXZbaV0tPnJlZl9jb3VudFswXTsKPiArICAgICAgICAgICAgY3R4LT5uZXh0X3ByZXZbaV0gPSBO VUxMOwo+ICsgICAgICAgIH0KPiArICAgICAgICBjdHgtPm5leHRfcHJldlswXSA9IHBpYzsKPiAr ICAgICAgICArK3BpYy0+cmVmX2NvdW50WzBdOwo+ICsgICAgICAgIGN0eC0+bmJfbmV4dF9wcmV2 ID0gMTsKPiArCj4gKyAgICAgICAgcmV0dXJuOwo+ICsgICAgfQo+ICsKPiArICAgIGlmIChjdHgt Pm5iX25leHRfcHJldiA8IE1BWF9QSUNUVVJFX1JFRkVSRU5DRVMpIHsKPiArICAgICAgICBjdHgt Pm5leHRfcHJldltjdHgtPm5iX25leHRfcHJldisrXSA9IHBpYzsKPiArICAgICAgICArK3BpYy0+ cmVmX2NvdW50WzBdOwo+ICsgICAgfSBlbHNlIHsKPiArICAgICAgICAtLWN0eC0+bmV4dF9wcmV2 WzBdLT5yZWZfY291bnRbMF07Cj4gKyAgICAgICAgZm9yIChpID0gMDsgaSA8IE1BWF9QSUNUVVJF X1JFRkVSRU5DRVMgLSAxOyBpKyspCj4gKyAgICAgICAgICAgIGN0eC0+bmV4dF9wcmV2W2ldID0g Y3R4LT5uZXh0X3ByZXZbaSArIDFdOwo+ICsgICAgICAgIGN0eC0+bmV4dF9wcmV2W2ldID0gcGlj Owo+ICsgICAgICAgICsrcGljLT5yZWZfY291bnRbMF07Cj4gKyAgICB9Cj4gK30KPiArCj4gIHN0 YXRpYyBpbnQgdmFhcGlfZW5jb2RlX3BpY2tfbmV4dChBVkNvZGVjQ29udGV4dCAqYXZjdHgsCj4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWQUFQSUVuY29kZVBpY3R1cmUgKipw aWNfb3V0KQo+ICB7Cj4gICAgICBWQUFQSUVuY29kZUNvbnRleHQgKmN0eCA9IGF2Y3R4LT5wcml2 X2RhdGE7Cj4gLSAgICBWQUFQSUVuY29kZVBpY3R1cmUgKnBpYyA9IE5VTEwsICpuZXh0LCAqc3Rh cnQ7Cj4gKyAgICBWQUFQSUVuY29kZVBpY3R1cmUgKnBpYyA9IE5VTEwsICpwcmV2ID0gTlVMTCwg Km5leHQsICpzdGFydDsKPiAgICAgIGludCBpLCBiX2NvdW50ZXIsIGNsb3NlZF9nb3BfZW5kOwo+ Cj4gICAgICAvLyBJZiB0aGVyZSBhcmUgYW55IEItZnJhbWVzIGFscmVhZHkgcXVldWVkLCB0aGUg bmV4dCBvbmUgdG8gZW5jb2RlCj4gQEAgLTk2MiwxMSArMTAxOCwxOCBAQCBzdGF0aWMgaW50IHZh YXBpX2VuY29kZV9waWNrX25leHQoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LAo+ICAgICAgICAgICAg ICBjb250aW51ZTsKPiAgICAgICAgICBpZiAocGljLT50eXBlICE9IFBJQ1RVUkVfVFlQRV9CKQo+ ICAgICAgICAgICAgICBjb250aW51ZTsKPiAtICAgICAgICBmb3IgKGkgPSAwOyBpIDwgcGljLT5u Yl9yZWZzOyBpKyspIHsKPiAtICAgICAgICAgICAgaWYgKCFwaWMtPnJlZnNbaV0tPmVuY29kZV9p c3N1ZWQpCj4gKyAgICAgICAgZm9yIChpID0gMDsgaSA8IHBpYy0+bmJfcmVmc1swXTsgaSsrKSB7 Cj4gKyAgICAgICAgICAgIGlmICghcGljLT5yZWZzWzBdW2ldLT5lbmNvZGVfaXNzdWVkKQo+ICAg ICAgICAgICAgICAgICAgYnJlYWs7Cj4gICAgICAgICAgfQo+IC0gICAgICAgIGlmIChpID09IHBp Yy0+bmJfcmVmcykKPiArICAgICAgICBpZiAoaSAhPSBwaWMtPm5iX3JlZnNbMF0pCj4gKyAgICAg ICAgICAgIGNvbnRpbnVlOwo+ICsKPiArICAgICAgICBmb3IgKGkgPSAwOyBpIDwgcGljLT5uYl9y ZWZzWzFdOyBpKyspIHsKPiArICAgICAgICAgICAgaWYgKCFwaWMtPnJlZnNbMV1baV0tPmVuY29k ZV9pc3N1ZWQpCj4gKyAgICAgICAgICAgICAgICBicmVhazsKPiArICAgICAgICB9Cj4gKyAgICAg ICAgaWYgKGkgPT0gcGljLT5uYl9yZWZzWzFdKQo+ICAgICAgICAgICAgICBicmVhazsKPiAgICAg IH0KPgo+IEBAIC0xMDY4LDE4ICsxMTMxLDE3IEBAIHN0YXRpYyBpbnQgdmFhcGlfZW5jb2RlX3Bp Y2tfbmV4dChBVkNvZGVjQ29udGV4dCAqYXZjdHgsCj4gICAgICAgICAgdmFhcGlfZW5jb2RlX2Fk ZF9yZWYoYXZjdHgsIHBpYywgc3RhcnQsCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg cGljLT50eXBlID09IFBJQ1RVUkVfVFlQRV9QLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGJfY291bnRlciA+IDAsIDApOwo+IC0gICAgICAgIHZhYXBpX2VuY29kZV9hZGRfcmVmKGF2 Y3R4LCBwaWMsIGN0eC0+bmV4dF9wcmV2LCAwLCAwLCAxKTsKPiArICAgICAgICB2YWFwaV9lbmNv ZGVfYWRkX3JlZihhdmN0eCwgcGljLCBjdHgtPm5leHRfcHJldltjdHgtPm5iX25leHRfcHJldiAt IDFdLCAwLCAwLCAxKTsKPiAgICAgIH0KPiAtICAgIGlmIChjdHgtPm5leHRfcHJldikKPiAtICAg ICAgICAtLWN0eC0+bmV4dF9wcmV2LT5yZWZfY291bnRbMF07Cj4KPiAgICAgIGlmIChiX2NvdW50 ZXIgPiAwKSB7Cj4gICAgICAgICAgdmFhcGlfZW5jb2RlX3NldF9iX3BpY3R1cmVzKGF2Y3R4LCBz dGFydCwgcGljLCBwaWMsIDEsCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICZjdHgtPm5leHRfcHJldik7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICZwcmV2KTsKPiAgICAgIH0gZWxzZSB7Cj4gLSAgICAgICAgY3R4LT5uZXh0X3ByZXYgPSBwaWM7 Cj4gKyAgICAgICAgcHJldiA9IHBpYzsKPiAgICAgIH0KPiAtICAgICsrY3R4LT5uZXh0X3ByZXYt PnJlZl9jb3VudFswXTsKPiArICAgIHZhYXBpX2VuY29kZV9hZGRfbmV4dF9wcmV2KGF2Y3R4LCBw cmV2KTsKPiArCj4gICAgICByZXR1cm4gMDsKPiAgfQo+Cj4gZGlmZiAtLWdpdCBhL2xpYmF2Y29k ZWMvdmFhcGlfZW5jb2RlLmggYi9saWJhdmNvZGVjL3ZhYXBpX2VuY29kZS5oCj4gaW5kZXggYmQy NWNkNWM5NS4uOTc3YmMyZDk0NiAxMDA2NDQKPiAtLS0gYS9saWJhdmNvZGVjL3ZhYXBpX2VuY29k ZS5oCj4gKysrIGIvbGliYXZjb2RlYy92YWFwaV9lbmNvZGUuaAo+IEBAIC00OSw2ICs0OSw3IEBA IGVudW0gewo+ICAgICAgLy8gQS40LjE6IHRhYmxlIEEuNiBhbGxvd3MgYXQgbW9zdCAyMCB0aWxl IGNvbHVtbnMgZm9yIGFueSBsZXZlbC4KPiAgICAgIE1BWF9USUxFX0NPTFMgICAgICAgICAgPSAy MCwKPiAgICAgIE1BWF9BU1lOQ19ERVBUSCAgICAgICAgPSA2NCwKPiArICAgIE1BWF9SRUZFUkVO Q0VfTElTVF9OVU0gPSAyLAo+ICB9Owo+Cj4gIGV4dGVybiBjb25zdCBBVkNvZGVjSFdDb25maWdJ bnRlcm5hbCAqY29uc3QgZmZfdmFhcGlfZW5jb2RlX2h3X2NvbmZpZ3NbXTsKPiBAQCAtMTE2LDEw ICsxMTcsMTEgQEAgdHlwZWRlZiBzdHJ1Y3QgVkFBUElFbmNvZGVQaWN0dXJlIHsKPiAgICAgIC8v IGJ1dCBub3QgaWYgaXQgaXNuJ3QuCj4gICAgICBpbnQgICAgICAgICAgICAgICAgICAgICBuYl9k cGJfcGljczsKPiAgICAgIHN0cnVjdCBWQUFQSUVuY29kZVBpY3R1cmUgKmRwYltNQVhfRFBCX1NJ WkVdOwo+IC0gICAgLy8gVGhlIHJlZmVyZW5jZSBwaWN0dXJlcyB1c2VkIGluIGRlY29kaW5nIHRo aXMgcGljdHVyZS4gIElmIHRoZXkgYXJlCj4gLSAgICAvLyB1c2VkIGJ5IGxhdGVyIHBpY3R1cmVz IHRoZXkgd2lsbCBhbHNvIGFwcGVhciBpbiB0aGUgRFBCLgo+IC0gICAgaW50ICAgICAgICAgICAg ICAgICAgICAgbmJfcmVmczsKPiAtICAgIHN0cnVjdCBWQUFQSUVuY29kZVBpY3R1cmUgKnJlZnNb TUFYX1BJQ1RVUkVfUkVGRVJFTkNFU107Cj4gKyAgICAvLyBUaGUgcmVmZXJlbmNlIHBpY3R1cmVz IHVzZWQgaW4gZGVjb2RpbmcgdGhpcyBwaWN0dXJlLiBJZiB0aGV5IGFyZQo+ICsgICAgLy8gdXNl ZCBieSBsYXRlciBwaWN0dXJlcyB0aGV5IHdpbGwgYWxzbyBhcHBlYXIgaW4gdGhlIERQQi4gcmVm WzBdW10gZm9yCj4gKyAgICAvLyBwcmV2aW91cyByZWZlcmVuY2UgZnJhbWVzLiByZWZbMV1bXSBm b3IgZnV0dXJlIHJlZmVyZW5jZSBmcmFtZXMuCj4gKyAgICBpbnQgICAgICAgICAgICAgICAgICAg ICBuYl9yZWZzW01BWF9SRUZFUkVOQ0VfTElTVF9OVU1dOwo+ICsgICAgc3RydWN0IFZBQVBJRW5j b2RlUGljdHVyZSAqcmVmc1tNQVhfUkVGRVJFTkNFX0xJU1RfTlVNXVtNQVhfUElDVFVSRV9SRUZF UkVOQ0VTXTsKPiAgICAgIC8vIFRoZSBwcmV2aW91cyByZWZlcmVuY2UgcGljdHVyZSBpbiBlbmNv ZGUgb3JkZXIuICBNdXN0IGJlIGluIGF0IGxlYXN0Cj4gICAgICAvLyBvbmUgb2YgdGhlIHJlZmVy ZW5jZSBsaXN0IGFuZCBEUEIgbGlzdC4KPiAgICAgIHN0cnVjdCBWQUFQSUVuY29kZVBpY3R1cmUg KnByZXY7Cj4gQEAgLTI5MCw4ICsyOTIsOSBAQCB0eXBlZGVmIHN0cnVjdCBWQUFQSUVuY29kZUNv bnRleHQgewo+ICAgICAgLy8gQ3VycmVudCBlbmNvZGluZyB3aW5kb3csIGluIGRpc3BsYXkgKGlu cHV0KSBvcmRlci4KPiAgICAgIFZBQVBJRW5jb2RlUGljdHVyZSAqcGljX3N0YXJ0LCAqcGljX2Vu ZDsKPiAgICAgIC8vIFRoZSBuZXh0IHBpY3R1cmUgdG8gdXNlIGFzIHRoZSBwcmV2aW91cyByZWZl cmVuY2UgcGljdHVyZSBpbgo+IC0gICAgLy8gZW5jb2Rpbmcgb3JkZXIuCj4gLSAgICBWQUFQSUVu Y29kZVBpY3R1cmUgKm5leHRfcHJldjsKPiArICAgIC8vIGVuY29kaW5nIG9yZGVyLiBPcmRlciBm cm9tIHNtYWxsIHRvIGxhcmdlIGluIGVuY29kaW5nIG9yZGVyLgo+ICsgICAgVkFBUElFbmNvZGVQ aWN0dXJlICpuZXh0X3ByZXZbTUFYX1BJQ1RVUkVfUkVGRVJFTkNFU107Cj4gKyAgICBpbnQgICAg ICAgICAgICAgICAgIG5iX25leHRfcHJldjsKPgo+ICAgICAgLy8gTmV4dCBpbnB1dCBvcmRlciBp bmRleCAoZGlzcGxheSBvcmRlcikuCj4gICAgICBpbnQ2NF90ICAgICAgICAgaW5wdXRfb3JkZXI7 Cj4gZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvdmFhcGlfZW5jb2RlX2gyNjQuYyBiL2xpYmF2Y29k ZWMvdmFhcGlfZW5jb2RlX2gyNjQuYwo+IGluZGV4IDA5ZTEzMDAxMTMuLjU3YjVlYTJiYWIgMTAw NjQ0Cj4gLS0tIGEvbGliYXZjb2RlYy92YWFwaV9lbmNvZGVfaDI2NC5jCj4gKysrIGIvbGliYXZj b2RlYy92YWFwaV9lbmNvZGVfaDI2NC5jCj4gQEAgLTYyOCw3ICs2MjgsNyBAQCBzdGF0aWMgaW50 IHZhYXBpX2VuY29kZV9oMjY0X2luaXRfcGljdHVyZV9wYXJhbXMoQVZDb2RlY0NvbnRleHQgKmF2 Y3R4LAo+ICAgICAgVkFBUElFbmNvZGVQaWN0dXJlICAgICAgICAgICAgICAqcHJldiA9IHBpYy0+ cHJldjsKPiAgICAgIFZBQVBJRW5jb2RlSDI2NFBpY3R1cmUgICAgICAgICAqaHByZXYgPSBwcmV2 ID8gcHJldi0+cHJpdl9kYXRhIDogTlVMTDsKPiAgICAgIFZBRW5jUGljdHVyZVBhcmFtZXRlckJ1 ZmZlckgyNjQgKnZwaWMgPSBwaWMtPmNvZGVjX3BpY3R1cmVfcGFyYW1zOwo+IC0gICAgaW50IGk7 Cj4gKyAgICBpbnQgaSwgaiA9IDA7Cj4KPiAgICAgIGlmIChwaWMtPnR5cGUgPT0gUElDVFVSRV9U WVBFX0lEUikgewo+ICAgICAgICAgIGF2X2Fzc2VydDAocGljLT5kaXNwbGF5X29yZGVyID09IHBp Yy0+ZW5jb2RlX29yZGVyKTsKPiBAQCAtNzI5LDI0ICs3MjksMjYgQEAgc3RhdGljIGludCB2YWFw aV9lbmNvZGVfaDI2NF9pbml0X3BpY3R1cmVfcGFyYW1zKEFWQ29kZWNDb250ZXh0ICphdmN0eCwK PiAgICAgICAgICAuVG9wRmllbGRPcmRlckNudCAgICA9IGhwaWMtPnBpY19vcmRlcl9jbnQsCj4g ICAgICAgICAgLkJvdHRvbUZpZWxkT3JkZXJDbnQgPSBocGljLT5waWNfb3JkZXJfY250LAo+ICAg ICAgfTsKPiAtCj4gLSAgICBmb3IgKGkgPSAwOyBpIDwgcGljLT5uYl9yZWZzOyBpKyspIHsKPiAt ICAgICAgICBWQUFQSUVuY29kZVBpY3R1cmUgICAgICAqcmVmID0gcGljLT5yZWZzW2ldOwo+IC0g ICAgICAgIFZBQVBJRW5jb2RlSDI2NFBpY3R1cmUgKmhyZWY7Cj4gLQo+IC0gICAgICAgIGF2X2Fz c2VydDAocmVmICYmIHJlZi0+ZW5jb2RlX29yZGVyIDwgcGljLT5lbmNvZGVfb3JkZXIpOwo+IC0g ICAgICAgIGhyZWYgPSByZWYtPnByaXZfZGF0YTsKPiAtCj4gLSAgICAgICAgdnBpYy0+UmVmZXJl bmNlRnJhbWVzW2ldID0gKFZBUGljdHVyZUgyNjQpIHsKPiAtICAgICAgICAgICAgLnBpY3R1cmVf aWQgICAgICAgICAgPSByZWYtPnJlY29uX3N1cmZhY2UsCj4gLSAgICAgICAgICAgIC5mcmFtZV9p ZHggICAgICAgICAgID0gaHJlZi0+ZnJhbWVfbnVtLAo+IC0gICAgICAgICAgICAuZmxhZ3MgICAg ICAgICAgICAgICA9IFZBX1BJQ1RVUkVfSDI2NF9TSE9SVF9URVJNX1JFRkVSRU5DRSwKPiAtICAg ICAgICAgICAgLlRvcEZpZWxkT3JkZXJDbnQgICAgPSBocmVmLT5waWNfb3JkZXJfY250LAo+IC0g ICAgICAgICAgICAuQm90dG9tRmllbGRPcmRlckNudCA9IGhyZWYtPnBpY19vcmRlcl9jbnQsCj4g LSAgICAgICAgfTsKPiArICAgIGZvciAoaW50IGsgPSAwOyBrIDwgTUFYX1JFRkVSRU5DRV9MSVNU X05VTTsgaysrKSB7Cj4gKyAgICAgICAgZm9yIChpID0gMDsgaSA8IHBpYy0+bmJfcmVmc1trXTsg aSsrKSB7Cj4gKyAgICAgICAgICAgIFZBQVBJRW5jb2RlUGljdHVyZSAgICAgICpyZWYgPSBwaWMt PnJlZnNba11baV07Cj4gKyAgICAgICAgICAgIFZBQVBJRW5jb2RlSDI2NFBpY3R1cmUgKmhyZWY7 Cj4gKwo+ICsgICAgICAgICAgICBhdl9hc3NlcnQwKHJlZiAmJiByZWYtPmVuY29kZV9vcmRlciA8 IHBpYy0+ZW5jb2RlX29yZGVyKTsKPiArICAgICAgICAgICAgaHJlZiA9IHJlZi0+cHJpdl9kYXRh Owo+ICsKPiArICAgICAgICAgICAgdnBpYy0+UmVmZXJlbmNlRnJhbWVzW2orK10gPSAoVkFQaWN0 dXJlSDI2NCkgewo+ICsgICAgICAgICAgICAgICAgLnBpY3R1cmVfaWQgICAgICAgICAgPSByZWYt PnJlY29uX3N1cmZhY2UsCj4gKyAgICAgICAgICAgICAgICAuZnJhbWVfaWR4ICAgICAgICAgICA9 IGhyZWYtPmZyYW1lX251bSwKPiArICAgICAgICAgICAgICAgIC5mbGFncyAgICAgICAgICAgICAg ID0gVkFfUElDVFVSRV9IMjY0X1NIT1JUX1RFUk1fUkVGRVJFTkNFLAo+ICsgICAgICAgICAgICAg ICAgLlRvcEZpZWxkT3JkZXJDbnQgICAgPSBocmVmLT5waWNfb3JkZXJfY250LAo+ICsgICAgICAg ICAgICAgICAgLkJvdHRvbUZpZWxkT3JkZXJDbnQgPSBocmVmLT5waWNfb3JkZXJfY250LAo+ICsg ICAgICAgICAgICB9Owo+ICsgICAgICAgIH0KPiAgICAgIH0KPiAtICAgIGZvciAoOyBpIDwgRkZf QVJSQVlfRUxFTVModnBpYy0+UmVmZXJlbmNlRnJhbWVzKTsgaSsrKSB7Cj4gLSAgICAgICAgdnBp Yy0+UmVmZXJlbmNlRnJhbWVzW2ldID0gKFZBUGljdHVyZUgyNjQpIHsKPiArCj4gKyAgICBmb3Ig KDsgaiA8IEZGX0FSUkFZX0VMRU1TKHZwaWMtPlJlZmVyZW5jZUZyYW1lcyk7IGorKykgewo+ICsg ICAgICAgIHZwaWMtPlJlZmVyZW5jZUZyYW1lc1tqXSA9IChWQVBpY3R1cmVIMjY0KSB7Cj4gICAg ICAgICAgICAgIC5waWN0dXJlX2lkID0gVkFfSU5WQUxJRF9JRCwKPiAgICAgICAgICAgICAgLmZs YWdzICAgICAgPSBWQV9QSUNUVVJFX0gyNjRfSU5WQUxJRCwKPiAgICAgICAgICB9Owo+IEBAIC05 NDgsMTcgKzk1MCwxNyBAQCBzdGF0aWMgaW50IHZhYXBpX2VuY29kZV9oMjY0X2luaXRfc2xpY2Vf cGFyYW1zKEFWQ29kZWNDb250ZXh0ICphdmN0eCwKPgo+ICAgICAgICAgIGlmIChwaWMtPnR5cGUg PT0gUElDVFVSRV9UWVBFX1ApIHsKPiAgICAgICAgICAgICAgaW50IG5lZWRfcnBsbSA9IDA7Cj4g LSAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBwaWMtPm5iX3JlZnM7IGkrKykgewo+IC0gICAg ICAgICAgICAgICAgYXZfYXNzZXJ0MChwaWMtPnJlZnNbaV0pOwo+IC0gICAgICAgICAgICAgICAg aWYgKHBpYy0+cmVmc1tpXSAhPSBkZWZfbDBbaV0pCj4gKyAgICAgICAgICAgIGZvciAoaSA9IDA7 IGkgPCBwaWMtPm5iX3JlZnNbMF07IGkrKykgewo+ICsgICAgICAgICAgICAgICAgYXZfYXNzZXJ0 MChwaWMtPnJlZnNbMF1baV0pOwo+ICsgICAgICAgICAgICAgICAgaWYgKHBpYy0+cmVmc1swXVtp XSAhPSBkZWZfbDBbaV0pCj4gICAgICAgICAgICAgICAgICAgICAgbmVlZF9ycGxtID0gMTsKPiAg ICAgICAgICAgICAgfQo+Cj4gICAgICAgICAgICAgIHNoLT5yZWZfcGljX2xpc3RfbW9kaWZpY2F0 aW9uX2ZsYWdfbDAgPSBuZWVkX3JwbG07Cj4gICAgICAgICAgICAgIGlmIChuZWVkX3JwbG0pIHsK PiAgICAgICAgICAgICAgICAgIGludCBwaWNfbnVtID0gaHBpYy0+ZnJhbWVfbnVtOwo+IC0gICAg ICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IHBpYy0+bmJfcmVmczsgaSsrKSB7Cj4gLSAgICAg ICAgICAgICAgICAgICAgaHJlZiA9IHBpYy0+cmVmc1tpXS0+cHJpdl9kYXRhOwo+ICsgICAgICAg ICAgICAgICAgZm9yIChpID0gMDsgaSA8IHBpYy0+bmJfcmVmc1swXTsgaSsrKSB7Cj4gKyAgICAg ICAgICAgICAgICAgICAgaHJlZiA9IHBpYy0+cmVmc1swXVtpXS0+cHJpdl9kYXRhOwo+ICAgICAg ICAgICAgICAgICAgICAgIGF2X2Fzc2VydDAoaHJlZi0+ZnJhbWVfbnVtICE9IHBpY19udW0pOwo+ ICAgICAgICAgICAgICAgICAgICAgIGlmIChocmVmLT5mcmFtZV9udW0gPCBwaWNfbnVtKSB7Cj4g ICAgICAgICAgICAgICAgICAgICAgICAgIHNoLT5ycGxtX2wwW2ldLm1vZGlmaWNhdGlvbl9vZl9w aWNfbnVtc19pZGMgPSAwOwo+IEBAIC05NzcsMjggKzk3OSwyOSBAQCBzdGF0aWMgaW50IHZhYXBp X2VuY29kZV9oMjY0X2luaXRfc2xpY2VfcGFyYW1zKEFWQ29kZWNDb250ZXh0ICphdmN0eCwKPiAg ICAgICAgICB9IGVsc2Ugewo+ICAgICAgICAgICAgICBpbnQgbmVlZF9ycGxtX2wwID0gMCwgbmVl ZF9ycGxtX2wxID0gMDsKPiAgICAgICAgICAgICAgaW50IG4wID0gMCwgbjEgPSAwOwo+IC0gICAg ICAgICAgICBmb3IgKGkgPSAwOyBpIDwgcGljLT5uYl9yZWZzOyBpKyspIHsKPiAtICAgICAgICAg ICAgICAgIGF2X2Fzc2VydDAocGljLT5yZWZzW2ldKTsKPiAtICAgICAgICAgICAgICAgIGhyZWYg PSBwaWMtPnJlZnNbaV0tPnByaXZfZGF0YTsKPiAtICAgICAgICAgICAgICAgIGF2X2Fzc2VydDAo aHJlZi0+cGljX29yZGVyX2NudCAhPSBocGljLT5waWNfb3JkZXJfY250KTsKPiAtICAgICAgICAg ICAgICAgIGlmIChocmVmLT5waWNfb3JkZXJfY250IDwgaHBpYy0+cGljX29yZGVyX2NudCkgewo+ IC0gICAgICAgICAgICAgICAgICAgIGlmIChwaWMtPnJlZnNbaV0gIT0gZGVmX2wwW24wXSkKPiAt ICAgICAgICAgICAgICAgICAgICAgICAgbmVlZF9ycGxtX2wwID0gMTsKPiAtICAgICAgICAgICAg ICAgICAgICArK24wOwo+IC0gICAgICAgICAgICAgICAgfSBlbHNlIHsKPiAtICAgICAgICAgICAg ICAgICAgICBpZiAocGljLT5yZWZzW2ldICE9IGRlZl9sMVtuMV0pCj4gLSAgICAgICAgICAgICAg ICAgICAgICAgIG5lZWRfcnBsbV9sMSA9IDE7Cj4gLSAgICAgICAgICAgICAgICAgICAgKytuMTsK PiAtICAgICAgICAgICAgICAgIH0KPiArICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IHBpYy0+ bmJfcmVmc1swXTsgaSsrKSB7Cj4gKyAgICAgICAgICAgICAgICBhdl9hc3NlcnQwKHBpYy0+cmVm c1swXVtpXSk7Cj4gKyAgICAgICAgICAgICAgICBocmVmID0gcGljLT5yZWZzWzBdW2ldLT5wcml2 X2RhdGE7Cj4gKyAgICAgICAgICAgICAgICBhdl9hc3NlcnQwKGhyZWYtPnBpY19vcmRlcl9jbnQg PCBocGljLT5waWNfb3JkZXJfY250KTsKPiArICAgICAgICAgICAgICAgIGlmIChwaWMtPnJlZnNb MF1baV0gIT0gZGVmX2wwW24wXSkKPiArICAgICAgICAgICAgICAgICAgICBuZWVkX3JwbG1fbDAg PSAxOwo+ICsgICAgICAgICAgICAgICAgKytuMDsKPiArICAgICAgICAgICAgfQo+ICsKPiArICAg ICAgICAgICAgZm9yIChpID0gMDsgaSA8IHBpYy0+bmJfcmVmc1sxXTsgaSsrKSB7Cj4gKyAgICAg ICAgICAgICAgICBhdl9hc3NlcnQwKHBpYy0+cmVmc1sxXVtpXSk7Cj4gKyAgICAgICAgICAgICAg ICBocmVmID0gcGljLT5yZWZzWzFdW2ldLT5wcml2X2RhdGE7Cj4gKyAgICAgICAgICAgICAgICBh dl9hc3NlcnQwKGhyZWYtPnBpY19vcmRlcl9jbnQgPiBocGljLT5waWNfb3JkZXJfY250KTsKPiAr ICAgICAgICAgICAgICAgIGlmIChwaWMtPnJlZnNbMV1baV0gIT0gZGVmX2wxW24xXSkKPiArICAg ICAgICAgICAgICAgICAgICBuZWVkX3JwbG1fbDEgPSAxOwo+ICsgICAgICAgICAgICAgICAgKytu MTsKPiAgICAgICAgICAgICAgfQo+Cj4gICAgICAgICAgICAgIHNoLT5yZWZfcGljX2xpc3RfbW9k aWZpY2F0aW9uX2ZsYWdfbDAgPSBuZWVkX3JwbG1fbDA7Cj4gICAgICAgICAgICAgIGlmIChuZWVk X3JwbG1fbDApIHsKPiAgICAgICAgICAgICAgICAgIGludCBwaWNfbnVtID0gaHBpYy0+ZnJhbWVf bnVtOwo+IC0gICAgICAgICAgICAgICAgZm9yIChpID0gaiA9IDA7IGkgPCBwaWMtPm5iX3JlZnM7 IGkrKykgewo+IC0gICAgICAgICAgICAgICAgICAgIGhyZWYgPSBwaWMtPnJlZnNbaV0tPnByaXZf ZGF0YTsKPiAtICAgICAgICAgICAgICAgICAgICBpZiAoaHJlZi0+cGljX29yZGVyX2NudCA+IGhw aWMtPnBpY19vcmRlcl9jbnQpCj4gLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwo+ ICsgICAgICAgICAgICAgICAgZm9yIChpID0gaiA9IDA7IGkgPCBwaWMtPm5iX3JlZnNbMF07IGkr Kykgewo+ICsgICAgICAgICAgICAgICAgICAgIGhyZWYgPSBwaWMtPnJlZnNbMF1baV0tPnByaXZf ZGF0YTsKPiAgICAgICAgICAgICAgICAgICAgICBhdl9hc3NlcnQwKGhyZWYtPmZyYW1lX251bSAh PSBwaWNfbnVtKTsKPiAgICAgICAgICAgICAgICAgICAgICBpZiAoaHJlZi0+ZnJhbWVfbnVtIDwg cGljX251bSkgewo+ICAgICAgICAgICAgICAgICAgICAgICAgICBzaC0+cnBsbV9sMFtqXS5tb2Rp ZmljYXRpb25fb2ZfcGljX251bXNfaWRjID0gMDsKPiBAQCAtMTAxOSwxMCArMTAyMiw4IEBAIHN0 YXRpYyBpbnQgdmFhcGlfZW5jb2RlX2gyNjRfaW5pdF9zbGljZV9wYXJhbXMoQVZDb2RlY0NvbnRl eHQgKmF2Y3R4LAo+ICAgICAgICAgICAgICBzaC0+cmVmX3BpY19saXN0X21vZGlmaWNhdGlvbl9m bGFnX2wxID0gbmVlZF9ycGxtX2wxOwo+ICAgICAgICAgICAgICBpZiAobmVlZF9ycGxtX2wxKSB7 Cj4gICAgICAgICAgICAgICAgICBpbnQgcGljX251bSA9IGhwaWMtPmZyYW1lX251bTsKPiAtICAg ICAgICAgICAgICAgIGZvciAoaSA9IGogPSAwOyBpIDwgcGljLT5uYl9yZWZzOyBpKyspIHsKPiAt ICAgICAgICAgICAgICAgICAgICBocmVmID0gcGljLT5yZWZzW2ldLT5wcml2X2RhdGE7Cj4gLSAg ICAgICAgICAgICAgICAgICAgaWYgKGhyZWYtPnBpY19vcmRlcl9jbnQgPCBocGljLT5waWNfb3Jk ZXJfY250KQo+IC0gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKPiArICAgICAgICAg ICAgICAgIGZvciAoaSA9IGogPSAwOyBpIDwgcGljLT5uYl9yZWZzWzFdOyBpKyspIHsKPiArICAg ICAgICAgICAgICAgICAgICBocmVmID0gcGljLT5yZWZzWzFdW2ldLT5wcml2X2RhdGE7Cj4gICAg ICAgICAgICAgICAgICAgICAgYXZfYXNzZXJ0MChocmVmLT5mcmFtZV9udW0gIT0gcGljX251bSk7 Cj4gICAgICAgICAgICAgICAgICAgICAgaWYgKGhyZWYtPmZyYW1lX251bSA8IHBpY19udW0pIHsK PiAgICAgICAgICAgICAgICAgICAgICAgICAgc2gtPnJwbG1fbDFbal0ubW9kaWZpY2F0aW9uX29m X3BpY19udW1zX2lkYyA9IDA7Cj4gQEAgLTEwNjIsMTQgKzEwNjMsMTMgQEAgc3RhdGljIGludCB2 YWFwaV9lbmNvZGVfaDI2NF9pbml0X3NsaWNlX3BhcmFtcyhBVkNvZGVjQ29udGV4dCAqYXZjdHgs Cj4gICAgICAgICAgdnNsaWNlLT5SZWZQaWNMaXN0MVtpXS5mbGFncyAgICAgID0gVkFfUElDVFVS RV9IMjY0X0lOVkFMSUQ7Cj4gICAgICB9Cj4KPiAtICAgIGF2X2Fzc2VydDAocGljLT5uYl9yZWZz IDw9IDIpOwo+IC0gICAgaWYgKHBpYy0+bmJfcmVmcyA+PSAxKSB7Cj4gKyAgICBpZiAocGljLT5u Yl9yZWZzWzBdKSB7Cj4gICAgICAgICAgLy8gQmFja3dhcmQgcmVmZXJlbmNlIGZvciBQLSBvciBC LWZyYW1lLgo+ICAgICAgICAgIGF2X2Fzc2VydDAocGljLT50eXBlID09IFBJQ1RVUkVfVFlQRV9Q IHx8Cj4gICAgICAgICAgICAgICAgICAgICBwaWMtPnR5cGUgPT0gUElDVFVSRV9UWVBFX0IpOwo+ ICAgICAgICAgIHZzbGljZS0+UmVmUGljTGlzdDBbMF0gPSB2cGljLT5SZWZlcmVuY2VGcmFtZXNb MF07Cj4gICAgICB9Cj4gLSAgICBpZiAocGljLT5uYl9yZWZzID49IDIpIHsKPiArICAgIGlmIChw aWMtPm5iX3JlZnNbMV0pIHsKPiAgICAgICAgICAvLyBGb3J3YXJkIHJlZmVyZW5jZSBmb3IgQi1m cmFtZS4KPiAgICAgICAgICBhdl9hc3NlcnQwKHBpYy0+dHlwZSA9PSBQSUNUVVJFX1RZUEVfQik7 Cj4gICAgICAgICAgdnNsaWNlLT5SZWZQaWNMaXN0MVswXSA9IHZwaWMtPlJlZmVyZW5jZUZyYW1l c1sxXTsKPiBkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy92YWFwaV9lbmNvZGVfaDI2NS5jIGIvbGli YXZjb2RlYy92YWFwaV9lbmNvZGVfaDI2NS5jCj4gaW5kZXggZWZhNTlhZWNmNS4uMjM5ZWYyMzU5 YSAxMDA2NDQKPiAtLS0gYS9saWJhdmNvZGVjL3ZhYXBpX2VuY29kZV9oMjY1LmMKPiArKysgYi9s aWJhdmNvZGVjL3ZhYXBpX2VuY29kZV9oMjY1LmMKPiBAQCAtNzY0LDcgKzc2NCw3IEBAIHN0YXRp YyBpbnQgdmFhcGlfZW5jb2RlX2gyNjVfaW5pdF9waWN0dXJlX3BhcmFtcyhBVkNvZGVjQ29udGV4 dCAqYXZjdHgsCj4gICAgICBWQUFQSUVuY29kZVBpY3R1cmUgICAgICAgICAgICAgICpwcmV2ID0g cGljLT5wcmV2Owo+ICAgICAgVkFBUElFbmNvZGVIMjY1UGljdHVyZSAgICAgICAgICpocHJldiA9 IHByZXYgPyBwcmV2LT5wcml2X2RhdGEgOiBOVUxMOwo+ICAgICAgVkFFbmNQaWN0dXJlUGFyYW1l dGVyQnVmZmVySEVWQyAqdnBpYyA9IHBpYy0+Y29kZWNfcGljdHVyZV9wYXJhbXM7Cj4gLSAgICBp bnQgaTsKPiArICAgIGludCBpLCBqID0gMDsKPgo+ICAgICAgaWYgKHBpYy0+dHlwZSA9PSBQSUNU VVJFX1RZUEVfSURSKSB7Cj4gICAgICAgICAgYXZfYXNzZXJ0MChwaWMtPmRpc3BsYXlfb3JkZXIg PT0gcGljLT5lbmNvZGVfb3JkZXIpOwo+IEBAIC03ODksOCArNzg5LDggQEAgc3RhdGljIGludCB2 YWFwaV9lbmNvZGVfaDI2NV9pbml0X3BpY3R1cmVfcGFyYW1zKEFWQ29kZWNDb250ZXh0ICphdmN0 eCwKPiAgICAgICAgICAgICAgaHBpYy0+cGljX3R5cGUgICAgICAgPSAxOwo+ICAgICAgICAgIH0g ZWxzZSB7Cj4gICAgICAgICAgICAgIFZBQVBJRW5jb2RlUGljdHVyZSAqaXJhcF9yZWY7Cj4gLSAg ICAgICAgICAgIGF2X2Fzc2VydDAocGljLT5yZWZzWzBdICYmIHBpYy0+cmVmc1sxXSk7Cj4gLSAg ICAgICAgICAgIGZvciAoaXJhcF9yZWYgPSBwaWM7IGlyYXBfcmVmOyBpcmFwX3JlZiA9IGlyYXBf cmVmLT5yZWZzWzFdKSB7Cj4gKyAgICAgICAgICAgIGF2X2Fzc2VydDAocGljLT5yZWZzWzBdWzBd ICYmIHBpYy0+cmVmc1sxXVswXSk7Cj4gKyAgICAgICAgICAgIGZvciAoaXJhcF9yZWYgPSBwaWM7 IGlyYXBfcmVmOyBpcmFwX3JlZiA9IGlyYXBfcmVmLT5yZWZzWzFdWzBdKSB7Cj4gICAgICAgICAg ICAgICAgICBpZiAoaXJhcF9yZWYtPnR5cGUgPT0gUElDVFVSRV9UWVBFX0kpCj4gICAgICAgICAg ICAgICAgICAgICAgYnJlYWs7Cj4gICAgICAgICAgICAgIH0KPiBAQCAtOTE1LDI0ICs5MTUsMjcg QEAgc3RhdGljIGludCB2YWFwaV9lbmNvZGVfaDI2NV9pbml0X3BpY3R1cmVfcGFyYW1zKEFWQ29k ZWNDb250ZXh0ICphdmN0eCwKPiAgICAgICAgICAuZmxhZ3MgICAgICAgICA9IDAsCj4gICAgICB9 Owo+Cj4gLSAgICBmb3IgKGkgPSAwOyBpIDwgcGljLT5uYl9yZWZzOyBpKyspIHsKPiAtICAgICAg ICBWQUFQSUVuY29kZVBpY3R1cmUgICAgICAqcmVmID0gcGljLT5yZWZzW2ldOwo+IC0gICAgICAg IFZBQVBJRW5jb2RlSDI2NVBpY3R1cmUgKmhyZWY7Cj4gLQo+IC0gICAgICAgIGF2X2Fzc2VydDAo cmVmICYmIHJlZi0+ZW5jb2RlX29yZGVyIDwgcGljLT5lbmNvZGVfb3JkZXIpOwo+IC0gICAgICAg IGhyZWYgPSByZWYtPnByaXZfZGF0YTsKPiAtCj4gLSAgICAgICAgdnBpYy0+cmVmZXJlbmNlX2Zy YW1lc1tpXSA9IChWQVBpY3R1cmVIRVZDKSB7Cj4gLSAgICAgICAgICAgIC5waWN0dXJlX2lkICAg ID0gcmVmLT5yZWNvbl9zdXJmYWNlLAo+IC0gICAgICAgICAgICAucGljX29yZGVyX2NudCA9IGhy ZWYtPnBpY19vcmRlcl9jbnQsCj4gLSAgICAgICAgICAgIC5mbGFncyA9IChyZWYtPmRpc3BsYXlf b3JkZXIgPCBwaWMtPmRpc3BsYXlfb3JkZXIgPwo+IC0gICAgICAgICAgICAgICAgICAgICAgVkFf UElDVFVSRV9IRVZDX1JQU19TVF9DVVJSX0JFRk9SRSA6IDApIHwKPiAtICAgICAgICAgICAgICAg ICAgICAgKHJlZi0+ZGlzcGxheV9vcmRlciA+IHBpYy0+ZGlzcGxheV9vcmRlciA/Cj4gLSAgICAg ICAgICAgICAgICAgICAgICBWQV9QSUNUVVJFX0hFVkNfUlBTX1NUX0NVUlJfQUZURVIgIDogMCks Cj4gLSAgICAgICAgfTsKPiArICAgIGZvciAoaW50IGsgPSAwOyBrIDwgTUFYX1JFRkVSRU5DRV9M SVNUX05VTTsgaysrKSB7Cj4gKyAgICAgICAgZm9yIChpID0gMDsgaSA8IHBpYy0+bmJfcmVmc1tr XTsgaSsrKSB7Cj4gKyAgICAgICAgICAgIFZBQVBJRW5jb2RlUGljdHVyZSAgICAgICpyZWYgPSBw aWMtPnJlZnNba11baV07Cj4gKyAgICAgICAgICAgIFZBQVBJRW5jb2RlSDI2NVBpY3R1cmUgKmhy ZWY7Cj4gKwo+ICsgICAgICAgICAgICBhdl9hc3NlcnQwKHJlZiAmJiByZWYtPmVuY29kZV9vcmRl ciA8IHBpYy0+ZW5jb2RlX29yZGVyKTsKPiArICAgICAgICAgICAgaHJlZiA9IHJlZi0+cHJpdl9k YXRhOwo+ICsKPiArICAgICAgICAgICAgdnBpYy0+cmVmZXJlbmNlX2ZyYW1lc1tqKytdID0gKFZB UGljdHVyZUhFVkMpIHsKPiArICAgICAgICAgICAgICAgIC5waWN0dXJlX2lkICAgID0gcmVmLT5y ZWNvbl9zdXJmYWNlLAo+ICsgICAgICAgICAgICAgICAgLnBpY19vcmRlcl9jbnQgPSBocmVmLT5w aWNfb3JkZXJfY250LAo+ICsgICAgICAgICAgICAgICAgLmZsYWdzID0gKHJlZi0+ZGlzcGxheV9v cmRlciA8IHBpYy0+ZGlzcGxheV9vcmRlciA/Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg VkFfUElDVFVSRV9IRVZDX1JQU19TVF9DVVJSX0JFRk9SRSA6IDApIHwKPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAocmVmLT5kaXNwbGF5X29yZGVyID4gcGljLT5kaXNwbGF5X29yZGVyID8K PiArICAgICAgICAgICAgICAgICAgICAgICAgICBWQV9QSUNUVVJFX0hFVkNfUlBTX1NUX0NVUlJf QUZURVIgIDogMCksCj4gKyAgICAgICAgICAgIH07Cj4gKyAgICAgICAgfQo+ICAgICAgfQo+IC0g ICAgZm9yICg7IGkgPCBGRl9BUlJBWV9FTEVNUyh2cGljLT5yZWZlcmVuY2VfZnJhbWVzKTsgaSsr KSB7Cj4gLSAgICAgICAgdnBpYy0+cmVmZXJlbmNlX2ZyYW1lc1tpXSA9IChWQVBpY3R1cmVIRVZD KSB7Cj4gKwo+ICsgICAgZm9yICg7IGogPCBGRl9BUlJBWV9FTEVNUyh2cGljLT5yZWZlcmVuY2Vf ZnJhbWVzKTsgaisrKSB7Cj4gKyAgICAgICAgdnBpYy0+cmVmZXJlbmNlX2ZyYW1lc1tqXSA9IChW QVBpY3R1cmVIRVZDKSB7Cj4gICAgICAgICAgICAgIC5waWN0dXJlX2lkID0gVkFfSU5WQUxJRF9J RCwKPiAgICAgICAgICAgICAgLmZsYWdzICAgICAgPSBWQV9QSUNUVVJFX0hFVkNfSU5WQUxJRCwK PiAgICAgICAgICB9Owo+IEBAIC0xMDE2LDIxICsxMDE5LDMzIEBAIHN0YXRpYyBpbnQgdmFhcGlf ZW5jb2RlX2gyNjVfaW5pdF9zbGljZV9wYXJhbXMoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LAo+ICAg ICAgICAgIG1lbXNldChycHMsIDAsIHNpemVvZigqcnBzKSk7Cj4KPiAgICAgICAgICBycHNfcGlj cyA9IDA7Cj4gLSAgICAgICAgZm9yIChpID0gMDsgaSA8IHBpYy0+bmJfcmVmczsgaSsrKSB7Cj4g LSAgICAgICAgICAgIHN0cnAgPSBwaWMtPnJlZnNbaV0tPnByaXZfZGF0YTsKPiAtICAgICAgICAg ICAgcnBzX3BvY1tycHNfcGljc10gID0gc3RycC0+cGljX29yZGVyX2NudDsKPiAtICAgICAgICAg ICAgcnBzX3VzZWRbcnBzX3BpY3NdID0gMTsKPiAtICAgICAgICAgICAgKytycHNfcGljczsKPiAr ICAgICAgICBmb3IgKGkgPSAwOyBpIDwgTUFYX1JFRkVSRU5DRV9MSVNUX05VTTsgaSsrKSB7Cj4g KyAgICAgICAgICAgIGZvciAoaiA9IDA7IGogPCBwaWMtPm5iX3JlZnNbaV07IGorKykgewo+ICsg ICAgICAgICAgICAgICAgc3RycCA9IHBpYy0+cmVmc1tpXVtqXS0+cHJpdl9kYXRhOwo+ICsgICAg ICAgICAgICAgICAgcnBzX3BvY1tycHNfcGljc10gID0gc3RycC0+cGljX29yZGVyX2NudDsKPiAr ICAgICAgICAgICAgICAgIHJwc191c2VkW3Jwc19waWNzXSA9IDE7Cj4gKyAgICAgICAgICAgICAg ICArK3Jwc19waWNzOwo+ICsgICAgICAgICAgICB9Cj4gICAgICAgICAgfQo+ICsKPiAgICAgICAg ICBmb3IgKGkgPSAwOyBpIDwgcGljLT5uYl9kcGJfcGljczsgaSsrKSB7Cj4gICAgICAgICAgICAg IGlmIChwaWMtPmRwYltpXSA9PSBwaWMpCj4gICAgICAgICAgICAgICAgICBjb250aW51ZTsKPiAt ICAgICAgICAgICAgZm9yIChqID0gMDsgaiA8IHBpYy0+bmJfcmVmczsgaisrKSB7Cj4gLSAgICAg ICAgICAgICAgICBpZiAocGljLT5kcGJbaV0gPT0gcGljLT5yZWZzW2pdKQo+ICsKPiArICAgICAg ICAgICAgZm9yIChqID0gMDsgaiA8IHBpYy0+bmJfcmVmc1swXTsgaisrKSB7Cj4gKyAgICAgICAg ICAgICAgICBpZiAocGljLT5kcGJbaV0gPT0gcGljLT5yZWZzWzBdW2pdKQo+ICsgICAgICAgICAg ICAgICAgICAgIGJyZWFrOwo+ICsgICAgICAgICAgICB9Cj4gKyAgICAgICAgICAgIGlmIChqIDwg cGljLT5uYl9yZWZzWzBdKQo+ICsgICAgICAgICAgICAgICAgY29udGludWU7Cj4gKwo+ICsgICAg ICAgICAgICBmb3IgKGogPSAwOyBqIDwgcGljLT5uYl9yZWZzWzFdOyBqKyspIHsKPiArICAgICAg ICAgICAgICAgIGlmIChwaWMtPmRwYltpXSA9PSBwaWMtPnJlZnNbMV1bal0pCj4gICAgICAgICAg ICAgICAgICAgICAgYnJlYWs7Cj4gICAgICAgICAgICAgIH0KPiAtICAgICAgICAgICAgaWYgKGog PCBwaWMtPm5iX3JlZnMpCj4gKyAgICAgICAgICAgIGlmIChqIDwgcGljLT5uYl9yZWZzWzFdKQo+ ICAgICAgICAgICAgICAgICAgY29udGludWU7Cj4gKwo+ICAgICAgICAgICAgICBzdHJwID0gcGlj LT5kcGJbaV0tPnByaXZfZGF0YTsKPiAgICAgICAgICAgICAgcnBzX3BvY1tycHNfcGljc10gID0g c3RycC0+cGljX29yZGVyX2NudDsKPiAgICAgICAgICAgICAgcnBzX3VzZWRbcnBzX3BpY3NdID0g MDsKPiBAQCAtMTE1NSw4ICsxMTcwLDcgQEAgc3RhdGljIGludCB2YWFwaV9lbmNvZGVfaDI2NV9p bml0X3NsaWNlX3BhcmFtcyhBVkNvZGVjQ29udGV4dCAqYXZjdHgsCj4gICAgICAgICAgdnNsaWNl LT5yZWZfcGljX2xpc3QxW2ldLmZsYWdzICAgICAgPSBWQV9QSUNUVVJFX0hFVkNfSU5WQUxJRDsK PiAgICAgIH0KPgo+IC0gICAgYXZfYXNzZXJ0MChwaWMtPm5iX3JlZnMgPD0gMik7Cj4gLSAgICBp ZiAocGljLT5uYl9yZWZzID49IDEpIHsKPiArICAgIGlmIChwaWMtPm5iX3JlZnNbMF0pIHsKPiAg ICAgICAgICAvLyBCYWNrd2FyZCByZWZlcmVuY2UgZm9yIFAtIG9yIEItZnJhbWUuCj4gICAgICAg ICAgYXZfYXNzZXJ0MChwaWMtPnR5cGUgPT0gUElDVFVSRV9UWVBFX1AgfHwKPiAgICAgICAgICAg ICAgICAgICAgIHBpYy0+dHlwZSA9PSBQSUNUVVJFX1RZUEVfQik7Cj4gQEAgLTExNjUsNyArMTE3 OSw3IEBAIHN0YXRpYyBpbnQgdmFhcGlfZW5jb2RlX2gyNjVfaW5pdF9zbGljZV9wYXJhbXMoQVZD b2RlY0NvbnRleHQgKmF2Y3R4LAo+ICAgICAgICAgICAgICAvLyBSZWZlcmVuY2UgZm9yIEdQQiBC LWZyYW1lLCBMMCA9PSBMMQo+ICAgICAgICAgICAgICB2c2xpY2UtPnJlZl9waWNfbGlzdDFbMF0g PSB2cGljLT5yZWZlcmVuY2VfZnJhbWVzWzBdOwo+ICAgICAgfQo+IC0gICAgaWYgKHBpYy0+bmJf cmVmcyA+PSAyKSB7Cj4gKyAgICBpZiAocGljLT5uYl9yZWZzWzFdKSB7Cj4gICAgICAgICAgLy8g Rm9yd2FyZCByZWZlcmVuY2UgZm9yIEItZnJhbWUuCj4gICAgICAgICAgYXZfYXNzZXJ0MChwaWMt PnR5cGUgPT0gUElDVFVSRV9UWVBFX0IpOwo+ICAgICAgICAgIHZzbGljZS0+cmVmX3BpY19saXN0 MVswXSA9IHZwaWMtPnJlZmVyZW5jZV9mcmFtZXNbMV07Cj4gZGlmZiAtLWdpdCBhL2xpYmF2Y29k ZWMvdmFhcGlfZW5jb2RlX21wZWcyLmMgYi9saWJhdmNvZGVjL3ZhYXBpX2VuY29kZV9tcGVnMi5j Cj4gaW5kZXggMmVkYjBjMzU4Ni4uZDE5MDRiZjRmNSAxMDA2NDQKPiAtLS0gYS9saWJhdmNvZGVj L3ZhYXBpX2VuY29kZV9tcGVnMi5jCj4gKysrIGIvbGliYXZjb2RlYy92YWFwaV9lbmNvZGVfbXBl ZzIuYwo+IEBAIC00NTgsMTIgKzQ1OCwxMiBAQCBzdGF0aWMgaW50IHZhYXBpX2VuY29kZV9tcGVn Ml9pbml0X3BpY3R1cmVfcGFyYW1zKEFWQ29kZWNDb250ZXh0ICphdmN0eCwKPiAgICAgICAgICBi cmVhazsKPiAgICAgIGNhc2UgUElDVFVSRV9UWVBFX1A6Cj4gICAgICAgICAgdnBpYy0+cGljdHVy ZV90eXBlID0gVkFFbmNQaWN0dXJlVHlwZVByZWRpY3RpdmU7Cj4gLSAgICAgICAgdnBpYy0+Zm9y d2FyZF9yZWZlcmVuY2VfcGljdHVyZSA9IHBpYy0+cmVmc1swXS0+cmVjb25fc3VyZmFjZTsKPiAr ICAgICAgICB2cGljLT5mb3J3YXJkX3JlZmVyZW5jZV9waWN0dXJlID0gcGljLT5yZWZzWzBdWzBd LT5yZWNvbl9zdXJmYWNlOwo+ICAgICAgICAgIGJyZWFrOwo+ICAgICAgY2FzZSBQSUNUVVJFX1RZ UEVfQjoKPiAgICAgICAgICB2cGljLT5waWN0dXJlX3R5cGUgPSBWQUVuY1BpY3R1cmVUeXBlQmlk aXJlY3Rpb25hbDsKPiAtICAgICAgICB2cGljLT5mb3J3YXJkX3JlZmVyZW5jZV9waWN0dXJlICA9 IHBpYy0+cmVmc1swXS0+cmVjb25fc3VyZmFjZTsKPiAtICAgICAgICB2cGljLT5iYWNrd2FyZF9y ZWZlcmVuY2VfcGljdHVyZSA9IHBpYy0+cmVmc1sxXS0+cmVjb25fc3VyZmFjZTsKPiArICAgICAg ICB2cGljLT5mb3J3YXJkX3JlZmVyZW5jZV9waWN0dXJlICA9IHBpYy0+cmVmc1swXVswXS0+cmVj b25fc3VyZmFjZTsKPiArICAgICAgICB2cGljLT5iYWNrd2FyZF9yZWZlcmVuY2VfcGljdHVyZSA9 IHBpYy0+cmVmc1sxXVswXS0+cmVjb25fc3VyZmFjZTsKPiAgICAgICAgICBicmVhazsKPiAgICAg IGRlZmF1bHQ6Cj4gICAgICAgICAgYXZfYXNzZXJ0MCgwICYmICJpbnZhbGlkIHBpY3R1cmUgdHlw ZSIpOwo+IGRpZmYgLS1naXQgYS9saWJhdmNvZGVjL3ZhYXBpX2VuY29kZV92cDguYyBiL2xpYmF2 Y29kZWMvdmFhcGlfZW5jb2RlX3ZwOC5jCj4gaW5kZXggZWE4YWJiMjQxOC4uOGE1NTdiOTY3ZSAx MDA2NDQKPiAtLS0gYS9saWJhdmNvZGVjL3ZhYXBpX2VuY29kZV92cDguYwo+ICsrKyBiL2xpYmF2 Y29kZWMvdmFhcGlfZW5jb2RlX3ZwOC5jCj4gQEAgLTg2LDcgKzg2LDcgQEAgc3RhdGljIGludCB2 YWFwaV9lbmNvZGVfdnA4X2luaXRfcGljdHVyZV9wYXJhbXMoQVZDb2RlY0NvbnRleHQgKmF2Y3R4 LAo+ICAgICAgc3dpdGNoIChwaWMtPnR5cGUpIHsKPiAgICAgIGNhc2UgUElDVFVSRV9UWVBFX0lE UjoKPiAgICAgIGNhc2UgUElDVFVSRV9UWVBFX0k6Cj4gLSAgICAgICAgYXZfYXNzZXJ0MChwaWMt Pm5iX3JlZnMgPT0gMCk7Cj4gKyAgICAgICAgYXZfYXNzZXJ0MChwaWMtPm5iX3JlZnNbMF0gPT0g MCAmJiBwaWMtPm5iX3JlZnNbMV0gPT0gMCk7Cj4gICAgICAgICAgdnBpYy0+cmVmX2ZsYWdzLmJp dHMuZm9yY2Vfa2YgPSAxOwo+ICAgICAgICAgIHZwaWMtPnJlZl9sYXN0X2ZyYW1lID0KPiAgICAg ICAgICB2cGljLT5yZWZfZ2ZfZnJhbWUgICA9Cj4gQEAgLTk0LDE0ICs5NCwxNCBAQCBzdGF0aWMg aW50IHZhYXBpX2VuY29kZV92cDhfaW5pdF9waWN0dXJlX3BhcmFtcyhBVkNvZGVjQ29udGV4dCAq YXZjdHgsCj4gICAgICAgICAgICAgIFZBX0lOVkFMSURfU1VSRkFDRTsKPiAgICAgICAgICBicmVh azsKPiAgICAgIGNhc2UgUElDVFVSRV9UWVBFX1A6Cj4gLSAgICAgICAgYXZfYXNzZXJ0MChwaWMt Pm5iX3JlZnMgPT0gMSk7Cj4gKyAgICAgICAgYXZfYXNzZXJ0MCghcGljLT5uYl9yZWZzWzFdKTsK PiAgICAgICAgICB2cGljLT5yZWZfZmxhZ3MuYml0cy5ub19yZWZfbGFzdCA9IDA7Cj4gICAgICAg ICAgdnBpYy0+cmVmX2ZsYWdzLmJpdHMubm9fcmVmX2dmICAgPSAxOwo+ICAgICAgICAgIHZwaWMt PnJlZl9mbGFncy5iaXRzLm5vX3JlZl9hcmYgID0gMTsKPiAgICAgICAgICB2cGljLT5yZWZfbGFz dF9mcmFtZSA9Cj4gICAgICAgICAgdnBpYy0+cmVmX2dmX2ZyYW1lICAgPQo+ICAgICAgICAgIHZw aWMtPnJlZl9hcmZfZnJhbWUgID0KPiAtICAgICAgICAgICAgcGljLT5yZWZzWzBdLT5yZWNvbl9z dXJmYWNlOwo+ICsgICAgICAgICAgICBwaWMtPnJlZnNbMF1bMF0tPnJlY29uX3N1cmZhY2U7Cj4g ICAgICAgICAgYnJlYWs7Cj4gICAgICBkZWZhdWx0Ogo+ICAgICAgICAgIGF2X2Fzc2VydDAoMCAm JiAiaW52YWxpZCBwaWN0dXJlIHR5cGUiKTsKPiBkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy92YWFw aV9lbmNvZGVfdnA5LmMgYi9saWJhdmNvZGVjL3ZhYXBpX2VuY29kZV92cDkuYwo+IGluZGV4IDg3 NDI5ODgxZjEuLmMyYThkZWM3MWIgMTAwNjQ0Cj4gLS0tIGEvbGliYXZjb2RlYy92YWFwaV9lbmNv ZGVfdnA5LmMKPiArKysgYi9saWJhdmNvZGVjL3ZhYXBpX2VuY29kZV92cDkuYwo+IEBAIC05Niwx NSArOTYsMTUgQEAgc3RhdGljIGludCB2YWFwaV9lbmNvZGVfdnA5X2luaXRfcGljdHVyZV9wYXJh bXMoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LAo+Cj4gICAgICBzd2l0Y2ggKHBpYy0+dHlwZSkgewo+ ICAgICAgY2FzZSBQSUNUVVJFX1RZUEVfSURSOgo+IC0gICAgICAgIGF2X2Fzc2VydDAocGljLT5u Yl9yZWZzID09IDApOwo+ICsgICAgICAgIGF2X2Fzc2VydDAocGljLT5uYl9yZWZzWzBdID09IDAg JiYgcGljLT5uYl9yZWZzWzFdID09IDApOwo+ICAgICAgICAgIHZwaWMtPnJlZl9mbGFncy5iaXRz LmZvcmNlX2tmID0gMTsKPiAgICAgICAgICB2cGljLT5yZWZyZXNoX2ZyYW1lX2ZsYWdzID0gMHhm ZjsKPiAgICAgICAgICBocGljLT5zbG90ID0gMDsKPiAgICAgICAgICBicmVhazsKPiAgICAgIGNh c2UgUElDVFVSRV9UWVBFX1A6Cj4gLSAgICAgICAgYXZfYXNzZXJ0MChwaWMtPm5iX3JlZnMgPT0g MSk7Cj4gKyAgICAgICAgYXZfYXNzZXJ0MCghcGljLT5uYl9yZWZzWzFdKTsKPiAgICAgICAgICB7 Cj4gLSAgICAgICAgICAgIFZBQVBJRW5jb2RlVlA5UGljdHVyZSAqaHJlZiA9IHBpYy0+cmVmc1sw XS0+cHJpdl9kYXRhOwo+ICsgICAgICAgICAgICBWQUFQSUVuY29kZVZQOVBpY3R1cmUgKmhyZWYg PSBwaWMtPnJlZnNbMF1bMF0tPnByaXZfZGF0YTsKPiAgICAgICAgICAgICAgYXZfYXNzZXJ0MCho cmVmLT5zbG90ID09IDAgfHwgaHJlZi0+c2xvdCA9PSAxKTsKPgo+ICAgICAgICAgICAgICBpZiAo Y3R4LT5tYXhfYl9kZXB0aCA+IDApIHsKPiBAQCAtMTIwLDEwICsxMjAsMTAgQEAgc3RhdGljIGlu dCB2YWFwaV9lbmNvZGVfdnA5X2luaXRfcGljdHVyZV9wYXJhbXMoQVZDb2RlY0NvbnRleHQgKmF2 Y3R4LAo+ICAgICAgICAgIH0KPiAgICAgICAgICBicmVhazsKPiAgICAgIGNhc2UgUElDVFVSRV9U WVBFX0I6Cj4gLSAgICAgICAgYXZfYXNzZXJ0MChwaWMtPm5iX3JlZnMgPT0gMik7Cj4gKyAgICAg ICAgYXZfYXNzZXJ0MChwaWMtPm5iX3JlZnNbMF0gJiYgcGljLT5uYl9yZWZzWzFdKTsKPiAgICAg ICAgICB7Cj4gLSAgICAgICAgICAgIFZBQVBJRW5jb2RlVlA5UGljdHVyZSAqaHJlZjAgPSBwaWMt PnJlZnNbMF0tPnByaXZfZGF0YSwKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICpocmVmMSA9IHBpYy0+cmVmc1sxXS0+cHJpdl9kYXRhOwo+ICsgICAgICAgICAgICBWQUFQSUVu Y29kZVZQOVBpY3R1cmUgKmhyZWYwID0gcGljLT5yZWZzWzBdWzBdLT5wcml2X2RhdGEsCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqaHJlZjEgPSBwaWMtPnJlZnNbMV1bMF0t PnByaXZfZGF0YTsKPiAgICAgICAgICAgICAgYXZfYXNzZXJ0MChocmVmMC0+c2xvdCA8IHBpYy0+ Yl9kZXB0aCArIDEgJiYKPiAgICAgICAgICAgICAgICAgICAgICAgICBocmVmMS0+c2xvdCA8IHBp Yy0+Yl9kZXB0aCArIDEpOwo+Cj4gQEAgLTE1NywxMiArMTU3LDE0IEBAIHN0YXRpYyBpbnQgdmFh cGlfZW5jb2RlX3ZwOV9pbml0X3BpY3R1cmVfcGFyYW1zKEFWQ29kZWNDb250ZXh0ICphdmN0eCwK PiAgICAgIGZvciAoaSA9IDA7IGkgPCBGRl9BUlJBWV9FTEVNUyh2cGljLT5yZWZlcmVuY2VfZnJh bWVzKTsgaSsrKQo+ICAgICAgICAgIHZwaWMtPnJlZmVyZW5jZV9mcmFtZXNbaV0gPSBWQV9JTlZB TElEX1NVUkZBQ0U7Cj4KPiAtICAgIGZvciAoaSA9IDA7IGkgPCBwaWMtPm5iX3JlZnM7IGkrKykg ewo+IC0gICAgICAgIFZBQVBJRW5jb2RlUGljdHVyZSAqcmVmX3BpYyA9IHBpYy0+cmVmc1tpXTsK PiAtICAgICAgICBpbnQgc2xvdDsKPiAtICAgICAgICBzbG90ID0gKChWQUFQSUVuY29kZVZQOVBp Y3R1cmUqKXJlZl9waWMtPnByaXZfZGF0YSktPnNsb3Q7Cj4gLSAgICAgICAgYXZfYXNzZXJ0MCh2 cGljLT5yZWZlcmVuY2VfZnJhbWVzW3Nsb3RdID09IFZBX0lOVkFMSURfU1VSRkFDRSk7Cj4gLSAg ICAgICAgdnBpYy0+cmVmZXJlbmNlX2ZyYW1lc1tzbG90XSA9IHJlZl9waWMtPnJlY29uX3N1cmZh Y2U7Cj4gKyAgICBmb3IgKGkgPSAwOyBpIDwgTUFYX1JFRkVSRU5DRV9MSVNUX05VTTsgaSsrKSB7 Cj4gKyAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBwaWMtPm5iX3JlZnNbaV07IGorKykgewo+ ICsgICAgICAgICAgICBWQUFQSUVuY29kZVBpY3R1cmUgKnJlZl9waWMgPSBwaWMtPnJlZnNbaV1b al07Cj4gKyAgICAgICAgICAgIGludCBzbG90Owo+ICsgICAgICAgICAgICBzbG90ID0gKChWQUFQ SUVuY29kZVZQOVBpY3R1cmUqKXJlZl9waWMtPnByaXZfZGF0YSktPnNsb3Q7Cj4gKyAgICAgICAg ICAgIGF2X2Fzc2VydDAodnBpYy0+cmVmZXJlbmNlX2ZyYW1lc1tzbG90XSA9PSBWQV9JTlZBTElE X1NVUkZBQ0UpOwo+ICsgICAgICAgICAgICB2cGljLT5yZWZlcmVuY2VfZnJhbWVzW3Nsb3RdID0g cmVmX3BpYy0+cmVjb25fc3VyZmFjZTsKPiArICAgICAgICB9Cj4gICAgICB9Cj4KPiAgICAgIHZw aWMtPnBpY19mbGFncy5iaXRzLmZyYW1lX3R5cGUgPSAocGljLT50eXBlICE9IFBJQ1RVUkVfVFlQ RV9JRFIpOwo+IC0tCj4gMi4yNS4xCj4KCkNvZGUgbG9va3MgcmVhc29uYWJsZSBhbmQgdGhpbmdz IHN0aWxsIHdvcmsgZm9yIG1lLgoKUmV2aWV3ZWQtYnk6IE5lYWwgR29tcGEgPG5nb21wYTEzQGdt YWlsLmNvbT4KCgoKLS0gCuecn+Wun+OBr+OBhOOBpOOCguS4gOOBpO+8gS8gQWx3YXlzLCB0aGVy ZSdzIG9ubHkgb25lIHRydXRoIQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpmZm1wZWctZGV2ZWwgbWFpbGluZyBsaXN0CmZmbXBlZy1kZXZlbEBmZm1wZWcu b3JnCmh0dHBzOi8vZmZtcGVnLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZmbXBlZy1kZXZlbAoKVG8g dW5zdWJzY3JpYmUsIHZpc2l0IGxpbmsgYWJvdmUsIG9yIGVtYWlsCmZmbXBlZy1kZXZlbC1yZXF1 ZXN0QGZmbXBlZy5vcmcgd2l0aCBzdWJqZWN0ICJ1bnN1YnNjcmliZSIuCg==