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 3EC4240211 for ; Tue, 15 Aug 2023 14:49:32 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id E681D68C31B; Tue, 15 Aug 2023 17:49:28 +0300 (EEST) Received: from mail-vs1-f52.google.com (mail-vs1-f52.google.com [209.85.217.52]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id F289768C2B9 for ; Tue, 15 Aug 2023 17:49:21 +0300 (EEST) Received: by mail-vs1-f52.google.com with SMTP id ada2fe7eead31-4475fc33c8dso2201581137.0 for ; Tue, 15 Aug 2023 07:49:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1692110960; x=1692715760; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=ZTjeesreLie9i/O1kZ1BGIcpOKl8NIsT7cMReHyzRcc=; b=PCALlWQImLFXtKdUCFI61tmzL6Qa0eqNrcd4AOWqvaHthAIAL7hrLMFZIshyJYjDMw 6q/ZzmGNX6uaYYDeJPYUEQcokhU+mDkm+nVgdgLrYqau/2NhdQpP8ad1VTloEvoK7z7s 752WMxjn0q9Wu8Nrj3Mrg0FMvqPLVyT36uqkg/dZbIUGAE1uZ1eHz/XoMtwJP0mmAX9C ccWVEuRZJKeErpFLRgSIS8ExPAFC/exhYD3nFwTIuae7dpLirzOdwiyCZ7Nl3RI6nTnU nu/PnydRx3+nR61CidyhTI3CW1IXCFrXK2bVYyp/GS1wS86P7jHwBxdH9SXDJgXbyBcF 24aA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1692110960; x=1692715760; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=ZTjeesreLie9i/O1kZ1BGIcpOKl8NIsT7cMReHyzRcc=; b=UvBPUXaWYuIb1EdvLpogX9jbno2ktjnRtp8esJlYrPjpU+4xjOIWvNStyeBHFKdDRe u+zV1rOtHkjSs26bIccVvKOhCENc+KXzk+nG1xwJmJHTa+Kx0EOhPjWlxx6E2pWy+Q5l QDcPKY4uJQcFc1zEhSVM0TTIKmXvUBSeSmWYB6R7OPj005iiQHh6IjTlF9sv3CqnISac hdceEbujidCx8HxoewErrNvTwtzD2WEEoQMNtVN3pPl82kmfG+2KFGN2NOI/GshP1rnO JQjHTE1WgLw4mwYMXF0gTd9Pqd7dnbz1rKh7YvfV349hhHzU3emy2WgBc/s00VTwDnwP s8vw== X-Gm-Message-State: AOJu0Yzb1zZITv7/lyXiuZnCMFdmKKxTMtj74kFNzTt1+nS5cHa3L6Kf rxe0Ivxr/td/FPFCB1DeE199QrFDiT/K1AVZASUplBzg X-Google-Smtp-Source: AGHT+IFImuGW9j8iSXcokj5W3zFf7njtJAAtYVc9tiNQgQpRUclWljXYAFaVzNfaUQzZ3soHK6M3hAWYQRSxLoQO/qs= X-Received: by 2002:a67:e28d:0:b0:447:4665:b465 with SMTP id g13-20020a67e28d000000b004474665b465mr12736492vsf.19.1692110960203; Tue, 15 Aug 2023 07:49:20 -0700 (PDT) MIME-Version: 1.0 From: Paul B Mahol Date: Tue, 15 Aug 2023 16:49:05 +0200 Message-ID: To: FFmpeg development discussions and patches Content-Type: multipart/mixed; boundary="000000000000b440000602f74874" X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: [FFmpeg-devel] [PATCH] adpcm fixes and improvements 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: --000000000000b440000602f74874 Content-Type: text/plain; charset="UTF-8" Attached --000000000000b440000602f74874 Content-Type: text/x-patch; charset="US-ASCII"; name="0001-avcodec-adpcm-refactor-ADPCM_MS-decoder.patch" Content-Disposition: attachment; filename="0001-avcodec-adpcm-refactor-ADPCM_MS-decoder.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_llcf5qum3 RnJvbSBhYWIwY2ZiN2UzNzk5MmIxYzFlZjM0NzQwZDE5OWNjMmJkYzRjZTQwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBQYXVsIEIgTWFob2wgPG9uZW1kYUBnbWFpbC5jb20+CkRhdGU6 IFR1ZSwgMTUgQXVnIDIwMjMgMTI6MTg6MDIgKzAyMDAKU3ViamVjdDogW1BBVENIIDEvNF0gYXZj b2RlYy9hZHBjbTogcmVmYWN0b3IgQURQQ01fTVMgZGVjb2RlcgoKU2lnbmVkLW9mZi1ieTogUGF1 bCBCIE1haG9sIDxvbmVtZGFAZ21haWwuY29tPgotLS0KIGxpYmF2Y29kZWMvYWRwY20uYyB8IDYz ICsrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBj aGFuZ2VkLCAzMyBpbnNlcnRpb25zKCspLCAzMCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9s aWJhdmNvZGVjL2FkcGNtLmMgYi9saWJhdmNvZGVjL2FkcGNtLmMKaW5kZXggNTliOWVmMzQ5Ny4u YjBjM2I5MWEzYiAxMDA2NDQKLS0tIGEvbGliYXZjb2RlYy9hZHBjbS5jCisrKyBiL2xpYmF2Y29k ZWMvYWRwY20uYwpAQCAtNTM1LDEyICs1MzUsMTIgQEAgc3RhdGljIGlubGluZSBpbnQxNl90IGFk cGNtX21zX2V4cGFuZF9uaWJibGUoQURQQ01DaGFubmVsU3RhdHVzICpjLCBpbnQgbmliYmxlKQog ewogICAgIGludCBwcmVkaWN0b3I7CiAKLSAgICBwcmVkaWN0b3IgPSAoKChjLT5zYW1wbGUxKSAq IChjLT5jb2VmZjEpKSArICgoYy0+c2FtcGxlMikgKiAoYy0+Y29lZmYyKSkpIC8gNjQ7Ci0gICAg cHJlZGljdG9yICs9ICgobmliYmxlICYgMHgwOCk/KG5pYmJsZSAtIDB4MTApOihuaWJibGUpKSAq IGMtPmlkZWx0YTsKKyAgICBwcmVkaWN0b3IgPSAoKGMtPnNhbXBsZTEgKiBjLT5jb2VmZjEpICsg KGMtPnNhbXBsZTIgKiBjLT5jb2VmZjIpKSAvIDY0OworICAgIHByZWRpY3RvciArPSAoKG5pYmJs ZSAmIDB4MDgpPyhuaWJibGUgLSAweDEwKTpuaWJibGUpICogYy0+aWRlbHRhOwogCiAgICAgYy0+ c2FtcGxlMiA9IGMtPnNhbXBsZTE7CiAgICAgYy0+c2FtcGxlMSA9IGF2X2NsaXBfaW50MTYocHJl ZGljdG9yKTsKLSAgICBjLT5pZGVsdGEgPSAoZmZfYWRwY21fQWRhcHRhdGlvblRhYmxlWyhpbnQp bmliYmxlXSAqIGMtPmlkZWx0YSkgPj4gODsKKyAgICBjLT5pZGVsdGEgPSAoZmZfYWRwY21fQWRh cHRhdGlvblRhYmxlW25pYmJsZV0gKiBjLT5pZGVsdGEpID4+IDg7CiAgICAgaWYgKGMtPmlkZWx0 YSA8IDE2KSBjLT5pZGVsdGEgPSAxNjsKICAgICBpZiAoYy0+aWRlbHRhID4gSU5UX01BWC83Njgp IHsKICAgICAgICAgYXZfbG9nKE5VTEwsIEFWX0xPR19XQVJOSU5HLCAiaWRlbHRhIG92ZXJmbG93 XG4iKTsKQEAgLTEyMzYsNiArMTIzNiw3IEBAIHN0YXRpYyBpbnQgYWRwY21fZGVjb2RlX2ZyYW1l KEFWQ29kZWNDb250ZXh0ICphdmN0eCwgQVZGcmFtZSAqZnJhbWUsCiAKICAgICAgICAgaWYgKGF2 Y3R4LT5jaF9sYXlvdXQubmJfY2hhbm5lbHMgPiAyKSB7CiAgICAgICAgICAgICBmb3IgKGludCBj aGFubmVsID0gMDsgY2hhbm5lbCA8IGF2Y3R4LT5jaF9sYXlvdXQubmJfY2hhbm5lbHM7IGNoYW5u ZWwrKykgeworICAgICAgICAgICAgICAgIEFEUENNQ2hhbm5lbFN0YXR1cyAqc3RhdHVzID0gJmMt PnN0YXR1c1tjaGFubmVsXTsKICAgICAgICAgICAgICAgICBzYW1wbGVzID0gc2FtcGxlc19wW2No YW5uZWxdOwogICAgICAgICAgICAgICAgIGJsb2NrX3ByZWRpY3RvciA9IGJ5dGVzdHJlYW0yX2dl dF9ieXRldSgmZ2IpOwogICAgICAgICAgICAgICAgIGlmIChibG9ja19wcmVkaWN0b3IgPiA2KSB7 CkBAIC0xMjQzLDI4ICsxMjQ0LDMwIEBAIHN0YXRpYyBpbnQgYWRwY21fZGVjb2RlX2ZyYW1lKEFW Q29kZWNDb250ZXh0ICphdmN0eCwgQVZGcmFtZSAqZnJhbWUsCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjaGFubmVsLCBibG9ja19wcmVkaWN0b3IpOwogICAgICAgICAgICAgICAgICAgICBy ZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg ICAgICAgYy0+c3RhdHVzW2NoYW5uZWxdLmNvZWZmMSA9IGZmX2FkcGNtX0FkYXB0Q29lZmYxW2Js b2NrX3ByZWRpY3Rvcl07Ci0gICAgICAgICAgICAgICAgYy0+c3RhdHVzW2NoYW5uZWxdLmNvZWZm MiA9IGZmX2FkcGNtX0FkYXB0Q29lZmYyW2Jsb2NrX3ByZWRpY3Rvcl07Ci0gICAgICAgICAgICAg ICAgYy0+c3RhdHVzW2NoYW5uZWxdLmlkZWx0YSA9IHNpZ25fZXh0ZW5kKGJ5dGVzdHJlYW0yX2dl dF9sZTE2dSgmZ2IpLCAxNik7Ci0gICAgICAgICAgICAgICAgYy0+c3RhdHVzW2NoYW5uZWxdLnNh bXBsZTEgPSBzaWduX2V4dGVuZChieXRlc3RyZWFtMl9nZXRfbGUxNnUoJmdiKSwgMTYpOwotICAg ICAgICAgICAgICAgIGMtPnN0YXR1c1tjaGFubmVsXS5zYW1wbGUyID0gc2lnbl9leHRlbmQoYnl0 ZXN0cmVhbTJfZ2V0X2xlMTZ1KCZnYiksIDE2KTsKLSAgICAgICAgICAgICAgICAqc2FtcGxlcysr ID0gYy0+c3RhdHVzW2NoYW5uZWxdLnNhbXBsZTI7Ci0gICAgICAgICAgICAgICAgKnNhbXBsZXMr KyA9IGMtPnN0YXR1c1tjaGFubmVsXS5zYW1wbGUxOwotICAgICAgICAgICAgICAgIGZvciAoaW50 IG4gPSAobmJfc2FtcGxlcyAtIDIpID4+IDE7IG4gPiAwOyBuLS0pIHsKKyAgICAgICAgICAgICAg ICBzdGF0dXMtPmNvZWZmMSA9IGZmX2FkcGNtX0FkYXB0Q29lZmYxW2Jsb2NrX3ByZWRpY3Rvcl07 CisgICAgICAgICAgICAgICAgc3RhdHVzLT5jb2VmZjIgPSBmZl9hZHBjbV9BZGFwdENvZWZmMlti bG9ja19wcmVkaWN0b3JdOworICAgICAgICAgICAgICAgIHN0YXR1cy0+aWRlbHRhID0gc2lnbl9l eHRlbmQoYnl0ZXN0cmVhbTJfZ2V0X2xlMTZ1KCZnYiksIDE2KTsKKyAgICAgICAgICAgICAgICBz dGF0dXMtPnNhbXBsZTEgPSBzaWduX2V4dGVuZChieXRlc3RyZWFtMl9nZXRfbGUxNnUoJmdiKSwg MTYpOworICAgICAgICAgICAgICAgIHN0YXR1cy0+c2FtcGxlMiA9IHNpZ25fZXh0ZW5kKGJ5dGVz dHJlYW0yX2dldF9sZTE2dSgmZ2IpLCAxNik7CisgICAgICAgICAgICAgICAgc2FtcGxlc1swXSA9 IHN0YXR1cy0+c2FtcGxlMjsKKyAgICAgICAgICAgICAgICBzYW1wbGVzWzFdID0gc3RhdHVzLT5z YW1wbGUxOworICAgICAgICAgICAgICAgIGZvciAoaW50IG4gPSAyOyBuIDwgbmJfc2FtcGxlczsg biArPSAyKSB7CiAgICAgICAgICAgICAgICAgICAgIGludCBieXRlID0gYnl0ZXN0cmVhbTJfZ2V0 X2J5dGV1KCZnYik7Ci0gICAgICAgICAgICAgICAgICAgICpzYW1wbGVzKysgPSBhZHBjbV9tc19l eHBhbmRfbmliYmxlKCZjLT5zdGF0dXNbY2hhbm5lbF0sIGJ5dGUgPj4gNCAgKTsKLSAgICAgICAg ICAgICAgICAgICAgKnNhbXBsZXMrKyA9IGFkcGNtX21zX2V4cGFuZF9uaWJibGUoJmMtPnN0YXR1 c1tjaGFubmVsXSwgYnl0ZSAmIDB4MEYpOworICAgICAgICAgICAgICAgICAgICBzYW1wbGVzW24g IF0gPSBhZHBjbV9tc19leHBhbmRfbmliYmxlKHN0YXR1cywgYnl0ZSA+PiA0ICApOworICAgICAg ICAgICAgICAgICAgICBzYW1wbGVzW24rMV0gPSBhZHBjbV9tc19leHBhbmRfbmliYmxlKHN0YXR1 cywgYnl0ZSAmIDB4MEYpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAg ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIEFEUENNQ2hhbm5lbFN0YXR1cyAqc3RhdHVzMCA9ICZj LT5zdGF0dXNbMF07CisgICAgICAgICAgICBBRFBDTUNoYW5uZWxTdGF0dXMgKnN0YXR1czEgPSAm Yy0+c3RhdHVzW3N0XTsKICAgICAgICAgICAgIGJsb2NrX3ByZWRpY3RvciA9IGJ5dGVzdHJlYW0y X2dldF9ieXRldSgmZ2IpOwogICAgICAgICAgICAgaWYgKGJsb2NrX3ByZWRpY3RvciA+IDYpIHsK ICAgICAgICAgICAgICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19FUlJPUiwgIkVSUk9SOiBibG9j a19wcmVkaWN0b3JbMF0gPSAlZFxuIiwKICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2tfcHJl ZGljdG9yKTsKICAgICAgICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKICAg ICAgICAgICAgIH0KLSAgICAgICAgICAgIGMtPnN0YXR1c1swXS5jb2VmZjEgPSBmZl9hZHBjbV9B ZGFwdENvZWZmMVtibG9ja19wcmVkaWN0b3JdOwotICAgICAgICAgICAgYy0+c3RhdHVzWzBdLmNv ZWZmMiA9IGZmX2FkcGNtX0FkYXB0Q29lZmYyW2Jsb2NrX3ByZWRpY3Rvcl07CisgICAgICAgICAg ICBzdGF0dXMwLT5jb2VmZjEgPSBmZl9hZHBjbV9BZGFwdENvZWZmMVtibG9ja19wcmVkaWN0b3Jd OworICAgICAgICAgICAgc3RhdHVzMC0+Y29lZmYyID0gZmZfYWRwY21fQWRhcHRDb2VmZjJbYmxv Y2tfcHJlZGljdG9yXTsKICAgICAgICAgICAgIGlmIChzdCkgewogICAgICAgICAgICAgICAgIGJs b2NrX3ByZWRpY3RvciA9IGJ5dGVzdHJlYW0yX2dldF9ieXRldSgmZ2IpOwogICAgICAgICAgICAg ICAgIGlmIChibG9ja19wcmVkaWN0b3IgPiA2KSB7CkBAIC0xMjcyLDI3ICsxMjc1LDI3IEBAIHN0 YXRpYyBpbnQgYWRwY21fZGVjb2RlX2ZyYW1lKEFWQ29kZWNDb250ZXh0ICphdmN0eCwgQVZGcmFt ZSAqZnJhbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9ja19wcmVkaWN0b3IpOwog ICAgICAgICAgICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKICAgICAgICAg ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgYy0+c3RhdHVzWzFdLmNvZWZmMSA9IGZmX2FkcGNt X0FkYXB0Q29lZmYxW2Jsb2NrX3ByZWRpY3Rvcl07Ci0gICAgICAgICAgICAgICAgYy0+c3RhdHVz WzFdLmNvZWZmMiA9IGZmX2FkcGNtX0FkYXB0Q29lZmYyW2Jsb2NrX3ByZWRpY3Rvcl07CisgICAg ICAgICAgICAgICAgc3RhdHVzMS0+Y29lZmYxID0gZmZfYWRwY21fQWRhcHRDb2VmZjFbYmxvY2tf cHJlZGljdG9yXTsKKyAgICAgICAgICAgICAgICBzdGF0dXMxLT5jb2VmZjIgPSBmZl9hZHBjbV9B ZGFwdENvZWZmMltibG9ja19wcmVkaWN0b3JdOwogICAgICAgICAgICAgfQotICAgICAgICAgICAg Yy0+c3RhdHVzWzBdLmlkZWx0YSA9IHNpZ25fZXh0ZW5kKGJ5dGVzdHJlYW0yX2dldF9sZTE2dSgm Z2IpLCAxNik7CisgICAgICAgICAgICBzdGF0dXMwLT5pZGVsdGEgPSBzaWduX2V4dGVuZChieXRl c3RyZWFtMl9nZXRfbGUxNnUoJmdiKSwgMTYpOwogICAgICAgICAgICAgaWYgKHN0KXsKLSAgICAg ICAgICAgICAgICBjLT5zdGF0dXNbMV0uaWRlbHRhID0gc2lnbl9leHRlbmQoYnl0ZXN0cmVhbTJf Z2V0X2xlMTZ1KCZnYiksIDE2KTsKKyAgICAgICAgICAgICAgICBzdGF0dXMxLT5pZGVsdGEgPSBz aWduX2V4dGVuZChieXRlc3RyZWFtMl9nZXRfbGUxNnUoJmdiKSwgMTYpOwogICAgICAgICAgICAg fQogCi0gICAgICAgICAgICBjLT5zdGF0dXNbMF0uc2FtcGxlMSA9IHNpZ25fZXh0ZW5kKGJ5dGVz dHJlYW0yX2dldF9sZTE2dSgmZ2IpLCAxNik7Ci0gICAgICAgICAgICBpZiAoc3QpIGMtPnN0YXR1 c1sxXS5zYW1wbGUxID0gc2lnbl9leHRlbmQoYnl0ZXN0cmVhbTJfZ2V0X2xlMTZ1KCZnYiksIDE2 KTsKLSAgICAgICAgICAgIGMtPnN0YXR1c1swXS5zYW1wbGUyID0gc2lnbl9leHRlbmQoYnl0ZXN0 cmVhbTJfZ2V0X2xlMTZ1KCZnYiksIDE2KTsKLSAgICAgICAgICAgIGlmIChzdCkgYy0+c3RhdHVz WzFdLnNhbXBsZTIgPSBzaWduX2V4dGVuZChieXRlc3RyZWFtMl9nZXRfbGUxNnUoJmdiKSwgMTYp OworICAgICAgICAgICAgc3RhdHVzMC0+c2FtcGxlMSA9IHNpZ25fZXh0ZW5kKGJ5dGVzdHJlYW0y X2dldF9sZTE2dSgmZ2IpLCAxNik7CisgICAgICAgICAgICBpZiAoc3QpIHN0YXR1czEtPnNhbXBs ZTEgPSBzaWduX2V4dGVuZChieXRlc3RyZWFtMl9nZXRfbGUxNnUoJmdiKSwgMTYpOworICAgICAg ICAgICAgc3RhdHVzMC0+c2FtcGxlMiA9IHNpZ25fZXh0ZW5kKGJ5dGVzdHJlYW0yX2dldF9sZTE2 dSgmZ2IpLCAxNik7CisgICAgICAgICAgICBpZiAoc3QpIHN0YXR1czEtPnNhbXBsZTIgPSBzaWdu X2V4dGVuZChieXRlc3RyZWFtMl9nZXRfbGUxNnUoJmdiKSwgMTYpOwogCi0gICAgICAgICAgICAq c2FtcGxlcysrID0gYy0+c3RhdHVzWzBdLnNhbXBsZTI7Ci0gICAgICAgICAgICBpZiAoc3QpICpz YW1wbGVzKysgPSBjLT5zdGF0dXNbMV0uc2FtcGxlMjsKLSAgICAgICAgICAgICpzYW1wbGVzKysg PSBjLT5zdGF0dXNbMF0uc2FtcGxlMTsKLSAgICAgICAgICAgIGlmIChzdCkgKnNhbXBsZXMrKyA9 IGMtPnN0YXR1c1sxXS5zYW1wbGUxOwotICAgICAgICAgICAgZm9yIChpbnQgbiA9IChuYl9zYW1w bGVzIC0gMikgPj4gKDEgLSBzdCk7IG4gPiAwOyBuLS0pIHsKKyAgICAgICAgICAgICpzYW1wbGVz KysgPSBzdGF0dXMwLT5zYW1wbGUyOworICAgICAgICAgICAgaWYgKHN0KSAqc2FtcGxlcysrID0g c3RhdHVzMS0+c2FtcGxlMjsKKyAgICAgICAgICAgICpzYW1wbGVzKysgPSBzdGF0dXMwLT5zYW1w bGUxOworICAgICAgICAgICAgaWYgKHN0KSAqc2FtcGxlcysrID0gc3RhdHVzMS0+c2FtcGxlMTsK KyAgICAgICAgICAgIGZvciAoaW50IG4gPSAwOyBuIDwgKG5iX3NhbXBsZXMgLSAyKSAqIChzdCAr IDEpOyBuICs9IDIpIHsKICAgICAgICAgICAgICAgICBpbnQgYnl0ZSA9IGJ5dGVzdHJlYW0yX2dl dF9ieXRldSgmZ2IpOwotICAgICAgICAgICAgICAgICpzYW1wbGVzKysgPSBhZHBjbV9tc19leHBh bmRfbmliYmxlKCZjLT5zdGF0dXNbMCBdLCBieXRlID4+IDQgICk7Ci0gICAgICAgICAgICAgICAg KnNhbXBsZXMrKyA9IGFkcGNtX21zX2V4cGFuZF9uaWJibGUoJmMtPnN0YXR1c1tzdF0sIGJ5dGUg JiAweDBGKTsKKyAgICAgICAgICAgICAgICBzYW1wbGVzW24gIF0gPSBhZHBjbV9tc19leHBhbmRf bmliYmxlKHN0YXR1czAsIGJ5dGUgPj4gNCAgKTsKKyAgICAgICAgICAgICAgICBzYW1wbGVzW24r MV0gPSBhZHBjbV9tc19leHBhbmRfbmliYmxlKHN0YXR1czEsIGJ5dGUgJiAweDBGKTsKICAgICAg ICAgICAgIH0KICAgICAgICAgfQogICAgICAgICApIC8qIEVuZCBvZiBDQVNFICovCi0tIAoyLjM5 LjEKCg== --000000000000b440000602f74874 Content-Type: text/x-patch; charset="US-ASCII"; name="0003-avcodec-adpcm-use-already-existing-pointer-for-4xm-d.patch" Content-Disposition: attachment; filename="0003-avcodec-adpcm-use-already-existing-pointer-for-4xm-d.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_llcf5qrr1 RnJvbSBjNmFkNmRjN2I4NzI1ZDg5N2UzNjM5OWU1YzdiODE3NGNhZWI5MmU2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBQYXVsIEIgTWFob2wgPG9uZW1kYUBnbWFpbC5jb20+CkRhdGU6 IFR1ZSwgMTUgQXVnIDIwMjMgMTQ6MTg6NDcgKzAyMDAKU3ViamVjdDogW1BBVENIIDMvNF0gYXZj b2RlYy9hZHBjbTogdXNlIGFscmVhZHkgZXhpc3RpbmcgcG9pbnRlciBmb3IgNHhtCiBkZWNvZGVy CgpTaWduZWQtb2ZmLWJ5OiBQYXVsIEIgTWFob2wgPG9uZW1kYUBnbWFpbC5jb20+Ci0tLQogbGli YXZjb2RlYy9hZHBjbS5jIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAx IGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9hZHBjbS5jIGIvbGliYXZjb2Rl Yy9hZHBjbS5jCmluZGV4IGIwYzNiOTFhM2IuLjk5OTNjOWU1MzEgMTAwNjQ0Ci0tLSBhL2xpYmF2 Y29kZWMvYWRwY20uYworKysgYi9saWJhdmNvZGVjL2FkcGNtLmMKQEAgLTEyMTEsNyArMTIxMSw3 IEBAIHN0YXRpYyBpbnQgYWRwY21fZGVjb2RlX2ZyYW1lKEFWQ29kZWNDb250ZXh0ICphdmN0eCwg QVZGcmFtZSAqZnJhbWUsCiAKICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjaGFubmVsczsg aSsrKSB7CiAgICAgICAgICAgICBBRFBDTUNoYW5uZWxTdGF0dXMgKmNzID0gJmMtPnN0YXR1c1tp XTsKLSAgICAgICAgICAgIHNhbXBsZXMgPSAoaW50MTZfdCAqKWZyYW1lLT5kYXRhW2ldOworICAg ICAgICAgICAgc2FtcGxlcyA9IHNhbXBsZXNfcFtpXTsKICAgICAgICAgICAgIGZvciAoaW50IG4g PSBuYl9zYW1wbGVzID4+IDE7IG4gPiAwOyBuLS0pIHsKICAgICAgICAgICAgICAgICBpbnQgdiA9 IGJ5dGVzdHJlYW0yX2dldF9ieXRldSgmZ2IpOwogICAgICAgICAgICAgICAgICpzYW1wbGVzKysg PSBhZHBjbV9pbWFfZXhwYW5kX25pYmJsZShjcywgdiAmIDB4MEYsIDQpOwotLSAKMi4zOS4xCgo= --000000000000b440000602f74874 Content-Type: text/x-patch; charset="US-ASCII"; name="0004-avcodec-adpcm-consume-all-input-when-decoding.patch" Content-Disposition: attachment; filename="0004-avcodec-adpcm-consume-all-input-when-decoding.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_llcf5qmz0 RnJvbSAxOTc4OWJjYTUzNTQ4ZDY3MmJmZjMwYjg4YTg4MzhlZGFhODc2YmRiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBQYXVsIEIgTWFob2wgPG9uZW1kYUBnbWFpbC5jb20+CkRhdGU6 IFR1ZSwgMTUgQXVnIDIwMjMgMTU6MjU6MjIgKzAyMDAKU3ViamVjdDogW1BBVENIIDQvNF0gYXZj b2RlYy9hZHBjbTogY29uc3VtZSBhbGwgaW5wdXQgd2hlbiBkZWNvZGluZwoKU3RvcHMgbXVsdGlw bGUgZGVjb2RpbmcgY2FsbHMgZm9yIHNpbmdsZSBwYWNrZXQuCkFsc28gbWFrZXMgZGVjb2Rpbmcg ZmFzdGVyLgoKU2lnbmVkLW9mZi1ieTogUGF1bCBCIE1haG9sIDxvbmVtZGFAZ21haWwuY29tPgot LS0KIGxpYmF2Y29kZWMvYWRwY20uYyAgICAgICAgICAgICAgICAgICAgIHwgMzg4ICsrKysrKysr KysrKystLS0tLS0tLS0tLS0KIHRlc3RzL3JlZi9mYXRlL2FkcGNtLWNyZWF0aXZlLTgtMi42Yml0 IHwgICAyICstCiB0ZXN0cy9yZWYvZmF0ZS9hZHBjbS1jcmVhdGl2ZS04LTJiaXQgICB8ICAgMiAr LQogdGVzdHMvcmVmL2ZhdGUvYWRwY20tY3JlYXRpdmUtOC00Yml0ICAgfCAgIDIgKy0KIHRlc3Rz L3JlZi9mYXRlL2FkcGNtLW1zLW1vbm8gICAgICAgICAgIHwgIDYwICstLS0KIDUgZmlsZXMgY2hh bmdlZCwgMjI3IGluc2VydGlvbnMoKyksIDIyNyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9s aWJhdmNvZGVjL2FkcGNtLmMgYi9saWJhdmNvZGVjL2FkcGNtLmMKaW5kZXggOTk5M2M5ZTUzMS4u NTIwYzc2YTZiZSAxMDA2NDQKLS0tIGEvbGliYXZjb2RlYy9hZHBjbS5jCisrKyBiL2xpYmF2Y29k ZWMvYWRwY20uYwpAQCAtMTA2Niw0MyArMTA2NiwyOSBAQCBzdGF0aWMgaW50IGdldF9uYl9zYW1w bGVzKEFWQ29kZWNDb250ZXh0ICphdmN0eCwgR2V0Qnl0ZUNvbnRleHQgKmdiLAogICAgIHJldHVy biBuYl9zYW1wbGVzOwogfQogCi1zdGF0aWMgaW50IGFkcGNtX2RlY29kZV9mcmFtZShBVkNvZGVj Q29udGV4dCAqYXZjdHgsIEFWRnJhbWUgKmZyYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgaW50ICpnb3RfZnJhbWVfcHRyLCBBVlBhY2tldCAqYXZwa3QpCitzdGF0aWMgaW50IGFk cGNtX2RlY29kZV9ibG9jayhBVkNvZGVjQ29udGV4dCAqYXZjdHgsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBpbnQxNl90ICpzYW1wbGVzLCBpbnQxNl90ICoqc2FtcGxlc19wLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgR2V0Qnl0ZUNvbnRleHQgKmdiKQogewotICAgIGNv bnN0IHVpbnQ4X3QgKmJ1ZiA9IGF2cGt0LT5kYXRhOwotICAgIGludCBidWZfc2l6ZSA9IGF2cGt0 LT5zaXplOwogICAgIEFEUENNRGVjb2RlQ29udGV4dCAqYyA9IGF2Y3R4LT5wcml2X2RhdGE7CiAg ICAgaW50IGNoYW5uZWxzID0gYXZjdHgtPmNoX2xheW91dC5uYl9jaGFubmVsczsKLSAgICBpbnQx Nl90ICpzYW1wbGVzOwotICAgIGludDE2X3QgKipzYW1wbGVzX3A7Ci0gICAgaW50IHN0OyAvKiBz dGVyZW8gKi8KKyAgICBjb25zdCBpbnQgc3QgPSBjaGFubmVscyA9PSAyID8gMSA6IDA7ICAvKiBz dGVyZW8gKi8KICAgICBpbnQgbmJfc2FtcGxlcywgY29kZWRfc2FtcGxlcywgYXBwcm94X25iX3Nh bXBsZXMsIHJldDsKLSAgICBHZXRCeXRlQ29udGV4dCBnYjsKIAotICAgIGJ5dGVzdHJlYW0yX2lu aXQoJmdiLCBidWYsIGJ1Zl9zaXplKTsKLSAgICBuYl9zYW1wbGVzID0gZ2V0X25iX3NhbXBsZXMo YXZjdHgsICZnYiwgYnVmX3NpemUsICZjb2RlZF9zYW1wbGVzLCAmYXBwcm94X25iX3NhbXBsZXMp OworICAgIG5iX3NhbXBsZXMgPSBnZXRfbmJfc2FtcGxlcyhhdmN0eCwgZ2IsIGJ5dGVzdHJlYW0y X2dldF9ieXRlc19sZWZ0KGdiKSwgJmNvZGVkX3NhbXBsZXMsICZhcHByb3hfbmJfc2FtcGxlcyk7 CiAgICAgaWYgKG5iX3NhbXBsZXMgPD0gMCkgewogICAgICAgICBhdl9sb2coYXZjdHgsIEFWX0xP R19FUlJPUiwgImludmFsaWQgbnVtYmVyIG9mIHNhbXBsZXMgaW4gcGFja2V0XG4iKTsKICAgICAg ICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7CiAgICAgfQogCi0gICAgLyogZ2V0IG91dHB1 dCBidWZmZXIgKi8KLSAgICBmcmFtZS0+bmJfc2FtcGxlcyA9IG5iX3NhbXBsZXM7Ci0gICAgaWYg KChyZXQgPSBmZl9nZXRfYnVmZmVyKGF2Y3R4LCBmcmFtZSwgMCkpIDwgMCkKLSAgICAgICAgcmV0 dXJuIHJldDsKLSAgICBzYW1wbGVzID0gKGludDE2X3QgKilmcmFtZS0+ZGF0YVswXTsKLSAgICBz YW1wbGVzX3AgPSAoaW50MTZfdCAqKilmcmFtZS0+ZXh0ZW5kZWRfZGF0YTsKLQogICAgIC8qIHVz ZSBjb2RlZF9zYW1wbGVzIHdoZW4gYXBwbGljYWJsZSAqLwogICAgIC8qIGl0IGlzIGFsd2F5cyA8 PSBuYl9zYW1wbGVzLCBzbyB0aGUgb3V0cHV0IGJ1ZmZlciB3aWxsIGJlIGxhcmdlIGVub3VnaCAq LwogICAgIGlmIChjb2RlZF9zYW1wbGVzKSB7CiAgICAgICAgIGlmICghYXBwcm94X25iX3NhbXBs ZXMgJiYgY29kZWRfc2FtcGxlcyAhPSBuYl9zYW1wbGVzKQogICAgICAgICAgICAgYXZfbG9nKGF2 Y3R4LCBBVl9MT0dfV0FSTklORywgIm1pc21hdGNoIGluIGNvZGVkIHNhbXBsZSBjb3VudFxuIik7 Ci0gICAgICAgIGZyYW1lLT5uYl9zYW1wbGVzID0gbmJfc2FtcGxlcyA9IGNvZGVkX3NhbXBsZXM7 CisgICAgICAgIG5iX3NhbXBsZXMgPSBjb2RlZF9zYW1wbGVzOwogICAgIH0KIAotICAgIHN0ID0g Y2hhbm5lbHMgPT0gMiA/IDEgOiAwOwotCiAgICAgc3dpdGNoKGF2Y3R4LT5jb2RlYy0+aWQpIHsK ICAgICBDQVNFKEFEUENNX0lNQV9RVCwKICAgICAgICAgLyogSW4gUXVpY2tUaW1lLCBJTUEgaXMg ZW5jb2RlZCBieSBjaHVua3Mgb2YgMzQgYnl0ZXMgKD02NCBzYW1wbGVzKS4KQEAgLTExMTQsNyAr MTEwMCw3IEBAIHN0YXRpYyBpbnQgYWRwY21fZGVjb2RlX2ZyYW1lKEFWQ29kZWNDb250ZXh0ICph dmN0eCwgQVZGcmFtZSAqZnJhbWUsCiAgICAgICAgICAgICAvKiAocHBwcHBwKSAocGlpaWlpaWkp ICovCiAKICAgICAgICAgICAgIC8qIEJpdHMgMTUtNyBhcmUgdGhlIF90b3BfIDkgYml0cyBvZiB0 aGUgMTYtYml0IGluaXRpYWwgcHJlZGljdG9yIHZhbHVlICovCi0gICAgICAgICAgICBwcmVkaWN0 b3IgPSBzaWduX2V4dGVuZChieXRlc3RyZWFtMl9nZXRfYmUxNnUoJmdiKSwgMTYpOworICAgICAg ICAgICAgcHJlZGljdG9yID0gc2lnbl9leHRlbmQoYnl0ZXN0cmVhbTJfZ2V0X2JlMTZ1KGdiKSwg MTYpOwogICAgICAgICAgICAgc3RlcF9pbmRleCA9IHByZWRpY3RvciAmIDB4N0Y7CiAgICAgICAg ICAgICBwcmVkaWN0b3IgJj0gfjB4N0Y7CiAKQEAgLTExMzksNyArMTEyNSw3IEBAIHN0YXRpYyBp bnQgYWRwY21fZGVjb2RlX2ZyYW1lKEFWQ29kZWNDb250ZXh0ICphdmN0eCwgQVZGcmFtZSAqZnJh bWUsCiAgICAgICAgICAgICBzYW1wbGVzID0gc2FtcGxlc19wW2NoYW5uZWxdOwogCiAgICAgICAg ICAgICBmb3IgKGludCBtID0gMDsgbSA8IDY0OyBtICs9IDIpIHsKLSAgICAgICAgICAgICAgICBp bnQgYnl0ZSA9IGJ5dGVzdHJlYW0yX2dldF9ieXRldSgmZ2IpOworICAgICAgICAgICAgICAgIGlu dCBieXRlID0gYnl0ZXN0cmVhbTJfZ2V0X2J5dGV1KGdiKTsKICAgICAgICAgICAgICAgICBzYW1w bGVzW20gICAgXSA9IGFkcGNtX2ltYV9xdF9leHBhbmRfbmliYmxlKGNzLCBieXRlICYgMHgwRik7 CiAgICAgICAgICAgICAgICAgc2FtcGxlc1ttICsgMV0gPSBhZHBjbV9pbWFfcXRfZXhwYW5kX25p YmJsZShjcywgYnl0ZSA+PiA0ICApOwogICAgICAgICAgICAgfQpAQCAtMTE0OCw5ICsxMTM0LDkg QEAgc3RhdGljIGludCBhZHBjbV9kZWNvZGVfZnJhbWUoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LCBB VkZyYW1lICpmcmFtZSwKICAgICBDQVNFKEFEUENNX0lNQV9XQVYsCiAgICAgICAgIGZvciAoaW50 IGkgPSAwOyBpIDwgY2hhbm5lbHM7IGkrKykgewogICAgICAgICAgICAgQURQQ01DaGFubmVsU3Rh dHVzICpjcyA9ICZjLT5zdGF0dXNbaV07Ci0gICAgICAgICAgICBjcy0+cHJlZGljdG9yID0gc2Ft cGxlc19wW2ldWzBdID0gc2lnbl9leHRlbmQoYnl0ZXN0cmVhbTJfZ2V0X2xlMTZ1KCZnYiksIDE2 KTsKKyAgICAgICAgICAgIGNzLT5wcmVkaWN0b3IgPSBzYW1wbGVzX3BbaV1bMF0gPSBzaWduX2V4 dGVuZChieXRlc3RyZWFtMl9nZXRfbGUxNnUoZ2IpLCAxNik7CiAKLSAgICAgICAgICAgIGNzLT5z dGVwX2luZGV4ID0gc2lnbl9leHRlbmQoYnl0ZXN0cmVhbTJfZ2V0X2xlMTZ1KCZnYiksIDE2KTsK KyAgICAgICAgICAgIGNzLT5zdGVwX2luZGV4ID0gc2lnbl9leHRlbmQoYnl0ZXN0cmVhbTJfZ2V0 X2xlMTZ1KGdiKSwgMTYpOwogICAgICAgICAgICAgaWYgKGNzLT5zdGVwX2luZGV4ID4gODh1KXsK ICAgICAgICAgICAgICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19FUlJPUiwgIkVSUk9SOiBzdGVw X2luZGV4WyVkXSA9ICVpXG4iLAogICAgICAgICAgICAgICAgICAgICAgICBpLCBjcy0+c3RlcF9p bmRleCk7CkBAIC0xMTYyLDYgKzExNDgsNyBAQCBzdGF0aWMgaW50IGFkcGNtX2RlY29kZV9mcmFt ZShBVkNvZGVjQ29udGV4dCAqYXZjdHgsIEFWRnJhbWUgKmZyYW1lLAogICAgICAgICAgICAgaW50 IHNhbXBsZXNfcGVyX2Jsb2NrID0gZmZfYWRwY21faW1hX2Jsb2NrX3NhbXBsZXNbYXZjdHgtPmJp dHNfcGVyX2NvZGVkX3NhbXBsZSAtIDJdOwogICAgICAgICAgICAgaW50IGJsb2NrX3NpemUgPSBm Zl9hZHBjbV9pbWFfYmxvY2tfc2l6ZXNbYXZjdHgtPmJpdHNfcGVyX2NvZGVkX3NhbXBsZSAtIDJd OwogICAgICAgICAgICAgdWludDhfdCB0ZW1wWzIwICsgQVZfSU5QVVRfQlVGRkVSX1BBRERJTkdf U0laRV0gPSB7IDAgfTsKKyAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmJ1ZiA9IGdiLT5idWZm ZXI7CiAgICAgICAgICAgICBHZXRCaXRDb250ZXh0IGc7CiAKICAgICAgICAgICAgIGZvciAoaW50 IG4gPSAwOyBuIDwgKG5iX3NhbXBsZXMgLSAxKSAvIHNhbXBsZXNfcGVyX2Jsb2NrOyBuKyspIHsK QEAgLTExNjksNyArMTE1Niw3IEBAIHN0YXRpYyBpbnQgYWRwY21fZGVjb2RlX2ZyYW1lKEFWQ29k ZWNDb250ZXh0ICphdmN0eCwgQVZGcmFtZSAqZnJhbWUsCiAgICAgICAgICAgICAgICAgICAgIEFE UENNQ2hhbm5lbFN0YXR1cyAqY3MgPSAmYy0+c3RhdHVzW2ldOwogICAgICAgICAgICAgICAgICAg ICBzYW1wbGVzID0gJnNhbXBsZXNfcFtpXVsxICsgbiAqIHNhbXBsZXNfcGVyX2Jsb2NrXTsKICAg ICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBibG9ja19zaXplOyBqKyspIHsK LSAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBbal0gPSBidWZbNCAqIGNoYW5uZWxzICsgYmxv Y2tfc2l6ZSAqIG4gKiBjaGFubmVscyArCisgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wW2pd ID0gYnVmW2Jsb2NrX3NpemUgKiBuICogY2hhbm5lbHMgKwogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChqICUgNCkgKyAoaiAvIDQpICogKGNoYW5uZWxzICogNCkgKyBp ICogNF07CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgcmV0ID0g aW5pdF9nZXRfYml0czgoJmcsIChjb25zdCB1aW50OF90ICopJnRlbXAsIGJsb2NrX3NpemUpOwpA QCAtMTE4MSwxNCArMTE2OCwxNCBAQCBzdGF0aWMgaW50IGFkcGNtX2RlY29kZV9mcmFtZShBVkNv ZGVjQ29udGV4dCAqYXZjdHgsIEFWRnJhbWUgKmZyYW1lLAogICAgICAgICAgICAgICAgICAgICB9 CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQotICAgICAgICAgICAgYnl0ZXN0cmVh bTJfc2tpcCgmZ2IsIGF2Y3R4LT5ibG9ja19hbGlnbiAtIGNoYW5uZWxzICogNCk7CisgICAgICAg ICAgICBieXRlc3RyZWFtMl9za2lwKGdiLCBhdmN0eC0+YmxvY2tfYWxpZ24gLSBjaGFubmVscyAq IDQpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgZm9yIChpbnQgbiA9IDA7IG4gPCAo bmJfc2FtcGxlcyAtIDEpIC8gODsgbisrKSB7CiAgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9 IDA7IGkgPCBjaGFubmVsczsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgIEFEUENNQ2hhbm5l bFN0YXR1cyAqY3MgPSAmYy0+c3RhdHVzW2ldOwogICAgICAgICAgICAgICAgICAgICBzYW1wbGVz ID0gJnNhbXBsZXNfcFtpXVsxICsgbiAqIDhdOwogICAgICAgICAgICAgICAgICAgICBmb3IgKGlu dCBtID0gMDsgbSA8IDg7IG0gKz0gMikgewotICAgICAgICAgICAgICAgICAgICAgICAgaW50IHYg PSBieXRlc3RyZWFtMl9nZXRfYnl0ZXUoJmdiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlu dCB2ID0gYnl0ZXN0cmVhbTJfZ2V0X2J5dGV1KGdiKTsKICAgICAgICAgICAgICAgICAgICAgICAg IHNhbXBsZXNbbSAgICBdID0gYWRwY21faW1hX2V4cGFuZF9uaWJibGUoY3MsIHYgJiAweDBGLCAz KTsKICAgICAgICAgICAgICAgICAgICAgICAgIHNhbXBsZXNbbSArIDFdID0gYWRwY21faW1hX2V4 cGFuZF9uaWJibGUoY3MsIHYgPj4gNCAgLCAzKTsKICAgICAgICAgICAgICAgICAgICAgfQpAQCAt MTE5OCwxMCArMTE4NSwxMCBAQCBzdGF0aWMgaW50IGFkcGNtX2RlY29kZV9mcmFtZShBVkNvZGVj Q29udGV4dCAqYXZjdHgsIEFWRnJhbWUgKmZyYW1lLAogICAgICAgICApIC8qIEVuZCBvZiBDQVNF ICovCiAgICAgQ0FTRShBRFBDTV80WE0sCiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY2hh bm5lbHM7IGkrKykKLSAgICAgICAgICAgIGMtPnN0YXR1c1tpXS5wcmVkaWN0b3IgPSBzaWduX2V4 dGVuZChieXRlc3RyZWFtMl9nZXRfbGUxNnUoJmdiKSwgMTYpOworICAgICAgICAgICAgYy0+c3Rh dHVzW2ldLnByZWRpY3RvciA9IHNpZ25fZXh0ZW5kKGJ5dGVzdHJlYW0yX2dldF9sZTE2dShnYiks IDE2KTsKIAogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNoYW5uZWxzOyBpKyspIHsKLSAg ICAgICAgICAgIGMtPnN0YXR1c1tpXS5zdGVwX2luZGV4ID0gc2lnbl9leHRlbmQoYnl0ZXN0cmVh bTJfZ2V0X2xlMTZ1KCZnYiksIDE2KTsKKyAgICAgICAgICAgIGMtPnN0YXR1c1tpXS5zdGVwX2lu ZGV4ID0gc2lnbl9leHRlbmQoYnl0ZXN0cmVhbTJfZ2V0X2xlMTZ1KGdiKSwgMTYpOwogICAgICAg ICAgICAgaWYgKGMtPnN0YXR1c1tpXS5zdGVwX2luZGV4ID4gODh1KSB7CiAgICAgICAgICAgICAg ICAgYXZfbG9nKGF2Y3R4LCBBVl9MT0dfRVJST1IsICJFUlJPUjogc3RlcF9pbmRleFslZF0gPSAl aVxuIiwKICAgICAgICAgICAgICAgICAgICAgICAgaSwgYy0+c3RhdHVzW2ldLnN0ZXBfaW5kZXgp OwpAQCAtMTIxMyw3ICsxMjAwLDcgQEAgc3RhdGljIGludCBhZHBjbV9kZWNvZGVfZnJhbWUoQVZD b2RlY0NvbnRleHQgKmF2Y3R4LCBBVkZyYW1lICpmcmFtZSwKICAgICAgICAgICAgIEFEUENNQ2hh bm5lbFN0YXR1cyAqY3MgPSAmYy0+c3RhdHVzW2ldOwogICAgICAgICAgICAgc2FtcGxlcyA9IHNh bXBsZXNfcFtpXTsKICAgICAgICAgICAgIGZvciAoaW50IG4gPSBuYl9zYW1wbGVzID4+IDE7IG4g PiAwOyBuLS0pIHsKLSAgICAgICAgICAgICAgICBpbnQgdiA9IGJ5dGVzdHJlYW0yX2dldF9ieXRl dSgmZ2IpOworICAgICAgICAgICAgICAgIGludCB2ID0gYnl0ZXN0cmVhbTJfZ2V0X2J5dGV1KGdi KTsKICAgICAgICAgICAgICAgICAqc2FtcGxlcysrID0gYWRwY21faW1hX2V4cGFuZF9uaWJibGUo Y3MsIHYgJiAweDBGLCA0KTsKICAgICAgICAgICAgICAgICAqc2FtcGxlcysrID0gYWRwY21faW1h X2V4cGFuZF9uaWJibGUoY3MsIHYgPj4gNCAgLCA0KTsKICAgICAgICAgICAgIH0KQEAgLTEyMjEs MTIgKzEyMDgsMTIgQEAgc3RhdGljIGludCBhZHBjbV9kZWNvZGVfZnJhbWUoQVZDb2RlY0NvbnRl eHQgKmF2Y3R4LCBBVkZyYW1lICpmcmFtZSwKICAgICAgICAgKSAvKiBFbmQgb2YgQ0FTRSAqLwog ICAgIENBU0UoQURQQ01fQUdNLAogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNoYW5uZWxz OyBpKyspCi0gICAgICAgICAgICBjLT5zdGF0dXNbaV0ucHJlZGljdG9yID0gc2lnbl9leHRlbmQo Ynl0ZXN0cmVhbTJfZ2V0X2xlMTZ1KCZnYiksIDE2KTsKKyAgICAgICAgICAgIGMtPnN0YXR1c1tp XS5wcmVkaWN0b3IgPSBzaWduX2V4dGVuZChieXRlc3RyZWFtMl9nZXRfbGUxNnUoZ2IpLCAxNik7 CiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY2hhbm5lbHM7IGkrKykKLSAgICAgICAgICAg IGMtPnN0YXR1c1tpXS5zdGVwID0gc2lnbl9leHRlbmQoYnl0ZXN0cmVhbTJfZ2V0X2xlMTZ1KCZn YiksIDE2KTsKKyAgICAgICAgICAgIGMtPnN0YXR1c1tpXS5zdGVwID0gc2lnbl9leHRlbmQoYnl0 ZXN0cmVhbTJfZ2V0X2xlMTZ1KGdiKSwgMTYpOwogCiAgICAgICAgIGZvciAoaW50IG4gPSAwOyBu IDwgbmJfc2FtcGxlcyA+PiAoMSAtIHN0KTsgbisrKSB7Ci0gICAgICAgICAgICBpbnQgdiA9IGJ5 dGVzdHJlYW0yX2dldF9ieXRldSgmZ2IpOworICAgICAgICAgICAgaW50IHYgPSBieXRlc3RyZWFt Ml9nZXRfYnl0ZXUoZ2IpOwogICAgICAgICAgICAgKnNhbXBsZXMrKyA9IGFkcGNtX2FnbV9leHBh bmRfbmliYmxlKCZjLT5zdGF0dXNbMF0sIHYgJiAweEYpOwogICAgICAgICAgICAgKnNhbXBsZXMr KyA9IGFkcGNtX2FnbV9leHBhbmRfbmliYmxlKCZjLT5zdGF0dXNbc3RdLCB2ID4+IDQgKTsKICAg ICAgICAgfQpAQCAtMTIzOCw3ICsxMjI1LDcgQEAgc3RhdGljIGludCBhZHBjbV9kZWNvZGVfZnJh bWUoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LCBBVkZyYW1lICpmcmFtZSwKICAgICAgICAgICAgIGZv ciAoaW50IGNoYW5uZWwgPSAwOyBjaGFubmVsIDwgYXZjdHgtPmNoX2xheW91dC5uYl9jaGFubmVs czsgY2hhbm5lbCsrKSB7CiAgICAgICAgICAgICAgICAgQURQQ01DaGFubmVsU3RhdHVzICpzdGF0 dXMgPSAmYy0+c3RhdHVzW2NoYW5uZWxdOwogICAgICAgICAgICAgICAgIHNhbXBsZXMgPSBzYW1w bGVzX3BbY2hhbm5lbF07Ci0gICAgICAgICAgICAgICAgYmxvY2tfcHJlZGljdG9yID0gYnl0ZXN0 cmVhbTJfZ2V0X2J5dGV1KCZnYik7CisgICAgICAgICAgICAgICAgYmxvY2tfcHJlZGljdG9yID0g Ynl0ZXN0cmVhbTJfZ2V0X2J5dGV1KGdiKTsKICAgICAgICAgICAgICAgICBpZiAoYmxvY2tfcHJl ZGljdG9yID4gNikgewogICAgICAgICAgICAgICAgICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19F UlJPUiwgIkVSUk9SOiBibG9ja19wcmVkaWN0b3JbJWRdID0gJWRcbiIsCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjaGFubmVsLCBibG9ja19wcmVkaWN0b3IpOwpAQCAtMTI0NiwxMyArMTIz MywxMyBAQCBzdGF0aWMgaW50IGFkcGNtX2RlY29kZV9mcmFtZShBVkNvZGVjQ29udGV4dCAqYXZj dHgsIEFWRnJhbWUgKmZyYW1lLAogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBz dGF0dXMtPmNvZWZmMSA9IGZmX2FkcGNtX0FkYXB0Q29lZmYxW2Jsb2NrX3ByZWRpY3Rvcl07CiAg ICAgICAgICAgICAgICAgc3RhdHVzLT5jb2VmZjIgPSBmZl9hZHBjbV9BZGFwdENvZWZmMltibG9j a19wcmVkaWN0b3JdOwotICAgICAgICAgICAgICAgIHN0YXR1cy0+aWRlbHRhID0gc2lnbl9leHRl bmQoYnl0ZXN0cmVhbTJfZ2V0X2xlMTZ1KCZnYiksIDE2KTsKLSAgICAgICAgICAgICAgICBzdGF0 dXMtPnNhbXBsZTEgPSBzaWduX2V4dGVuZChieXRlc3RyZWFtMl9nZXRfbGUxNnUoJmdiKSwgMTYp OwotICAgICAgICAgICAgICAgIHN0YXR1cy0+c2FtcGxlMiA9IHNpZ25fZXh0ZW5kKGJ5dGVzdHJl YW0yX2dldF9sZTE2dSgmZ2IpLCAxNik7CisgICAgICAgICAgICAgICAgc3RhdHVzLT5pZGVsdGEg PSBzaWduX2V4dGVuZChieXRlc3RyZWFtMl9nZXRfbGUxNnUoZ2IpLCAxNik7CisgICAgICAgICAg ICAgICAgc3RhdHVzLT5zYW1wbGUxID0gc2lnbl9leHRlbmQoYnl0ZXN0cmVhbTJfZ2V0X2xlMTZ1 KGdiKSwgMTYpOworICAgICAgICAgICAgICAgIHN0YXR1cy0+c2FtcGxlMiA9IHNpZ25fZXh0ZW5k KGJ5dGVzdHJlYW0yX2dldF9sZTE2dShnYiksIDE2KTsKICAgICAgICAgICAgICAgICBzYW1wbGVz WzBdID0gc3RhdHVzLT5zYW1wbGUyOwogICAgICAgICAgICAgICAgIHNhbXBsZXNbMV0gPSBzdGF0 dXMtPnNhbXBsZTE7CiAgICAgICAgICAgICAgICAgZm9yIChpbnQgbiA9IDI7IG4gPCBuYl9zYW1w bGVzOyBuICs9IDIpIHsKLSAgICAgICAgICAgICAgICAgICAgaW50IGJ5dGUgPSBieXRlc3RyZWFt Ml9nZXRfYnl0ZXUoJmdiKTsKKyAgICAgICAgICAgICAgICAgICAgaW50IGJ5dGUgPSBieXRlc3Ry ZWFtMl9nZXRfYnl0ZXUoZ2IpOwogICAgICAgICAgICAgICAgICAgICBzYW1wbGVzW24gIF0gPSBh ZHBjbV9tc19leHBhbmRfbmliYmxlKHN0YXR1cywgYnl0ZSA+PiA0ICApOwogICAgICAgICAgICAg ICAgICAgICBzYW1wbGVzW24rMV0gPSBhZHBjbV9tc19leHBhbmRfbmliYmxlKHN0YXR1cywgYnl0 ZSAmIDB4MEYpOwogICAgICAgICAgICAgICAgIH0KQEAgLTEyNjAsNyArMTI0Nyw3IEBAIHN0YXRp YyBpbnQgYWRwY21fZGVjb2RlX2ZyYW1lKEFWQ29kZWNDb250ZXh0ICphdmN0eCwgQVZGcmFtZSAq ZnJhbWUsCiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBBRFBDTUNoYW5uZWxTdGF0dXMg KnN0YXR1czAgPSAmYy0+c3RhdHVzWzBdOwogICAgICAgICAgICAgQURQQ01DaGFubmVsU3RhdHVz ICpzdGF0dXMxID0gJmMtPnN0YXR1c1tzdF07Ci0gICAgICAgICAgICBibG9ja19wcmVkaWN0b3Ig PSBieXRlc3RyZWFtMl9nZXRfYnl0ZXUoJmdiKTsKKyAgICAgICAgICAgIGJsb2NrX3ByZWRpY3Rv ciA9IGJ5dGVzdHJlYW0yX2dldF9ieXRldShnYik7CiAgICAgICAgICAgICBpZiAoYmxvY2tfcHJl ZGljdG9yID4gNikgewogICAgICAgICAgICAgICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX0VSUk9S LCAiRVJST1I6IGJsb2NrX3ByZWRpY3RvclswXSA9ICVkXG4iLAogICAgICAgICAgICAgICAgICAg ICAgICBibG9ja19wcmVkaWN0b3IpOwpAQCAtMTI2OSw3ICsxMjU2LDcgQEAgc3RhdGljIGludCBh ZHBjbV9kZWNvZGVfZnJhbWUoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LCBBVkZyYW1lICpmcmFtZSwK ICAgICAgICAgICAgIHN0YXR1czAtPmNvZWZmMSA9IGZmX2FkcGNtX0FkYXB0Q29lZmYxW2Jsb2Nr X3ByZWRpY3Rvcl07CiAgICAgICAgICAgICBzdGF0dXMwLT5jb2VmZjIgPSBmZl9hZHBjbV9BZGFw dENvZWZmMltibG9ja19wcmVkaWN0b3JdOwogICAgICAgICAgICAgaWYgKHN0KSB7Ci0gICAgICAg ICAgICAgICAgYmxvY2tfcHJlZGljdG9yID0gYnl0ZXN0cmVhbTJfZ2V0X2J5dGV1KCZnYik7Cisg ICAgICAgICAgICAgICAgYmxvY2tfcHJlZGljdG9yID0gYnl0ZXN0cmVhbTJfZ2V0X2J5dGV1KGdi KTsKICAgICAgICAgICAgICAgICBpZiAoYmxvY2tfcHJlZGljdG9yID4gNikgewogICAgICAgICAg ICAgICAgICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19FUlJPUiwgIkVSUk9SOiBibG9ja19wcmVk aWN0b3JbMV0gPSAlZFxuIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrX3ByZWRp Y3Rvcik7CkBAIC0xMjc4LDIyICsxMjY1LDIyIEBAIHN0YXRpYyBpbnQgYWRwY21fZGVjb2RlX2Zy YW1lKEFWQ29kZWNDb250ZXh0ICphdmN0eCwgQVZGcmFtZSAqZnJhbWUsCiAgICAgICAgICAgICAg ICAgc3RhdHVzMS0+Y29lZmYxID0gZmZfYWRwY21fQWRhcHRDb2VmZjFbYmxvY2tfcHJlZGljdG9y XTsKICAgICAgICAgICAgICAgICBzdGF0dXMxLT5jb2VmZjIgPSBmZl9hZHBjbV9BZGFwdENvZWZm MltibG9ja19wcmVkaWN0b3JdOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgc3RhdHVzMC0+ aWRlbHRhID0gc2lnbl9leHRlbmQoYnl0ZXN0cmVhbTJfZ2V0X2xlMTZ1KCZnYiksIDE2KTsKKyAg ICAgICAgICAgIHN0YXR1czAtPmlkZWx0YSA9IHNpZ25fZXh0ZW5kKGJ5dGVzdHJlYW0yX2dldF9s ZTE2dShnYiksIDE2KTsKICAgICAgICAgICAgIGlmIChzdCl7Ci0gICAgICAgICAgICAgICAgc3Rh dHVzMS0+aWRlbHRhID0gc2lnbl9leHRlbmQoYnl0ZXN0cmVhbTJfZ2V0X2xlMTZ1KCZnYiksIDE2 KTsKKyAgICAgICAgICAgICAgICBzdGF0dXMxLT5pZGVsdGEgPSBzaWduX2V4dGVuZChieXRlc3Ry ZWFtMl9nZXRfbGUxNnUoZ2IpLCAxNik7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIHN0 YXR1czAtPnNhbXBsZTEgPSBzaWduX2V4dGVuZChieXRlc3RyZWFtMl9nZXRfbGUxNnUoJmdiKSwg MTYpOwotICAgICAgICAgICAgaWYgKHN0KSBzdGF0dXMxLT5zYW1wbGUxID0gc2lnbl9leHRlbmQo Ynl0ZXN0cmVhbTJfZ2V0X2xlMTZ1KCZnYiksIDE2KTsKLSAgICAgICAgICAgIHN0YXR1czAtPnNh bXBsZTIgPSBzaWduX2V4dGVuZChieXRlc3RyZWFtMl9nZXRfbGUxNnUoJmdiKSwgMTYpOwotICAg ICAgICAgICAgaWYgKHN0KSBzdGF0dXMxLT5zYW1wbGUyID0gc2lnbl9leHRlbmQoYnl0ZXN0cmVh bTJfZ2V0X2xlMTZ1KCZnYiksIDE2KTsKKyAgICAgICAgICAgIHN0YXR1czAtPnNhbXBsZTEgPSBz aWduX2V4dGVuZChieXRlc3RyZWFtMl9nZXRfbGUxNnUoZ2IpLCAxNik7CisgICAgICAgICAgICBp ZiAoc3QpIHN0YXR1czEtPnNhbXBsZTEgPSBzaWduX2V4dGVuZChieXRlc3RyZWFtMl9nZXRfbGUx NnUoZ2IpLCAxNik7CisgICAgICAgICAgICBzdGF0dXMwLT5zYW1wbGUyID0gc2lnbl9leHRlbmQo Ynl0ZXN0cmVhbTJfZ2V0X2xlMTZ1KGdiKSwgMTYpOworICAgICAgICAgICAgaWYgKHN0KSBzdGF0 dXMxLT5zYW1wbGUyID0gc2lnbl9leHRlbmQoYnl0ZXN0cmVhbTJfZ2V0X2xlMTZ1KGdiKSwgMTYp OwogCiAgICAgICAgICAgICAqc2FtcGxlcysrID0gc3RhdHVzMC0+c2FtcGxlMjsKICAgICAgICAg ICAgIGlmIChzdCkgKnNhbXBsZXMrKyA9IHN0YXR1czEtPnNhbXBsZTI7CiAgICAgICAgICAgICAq c2FtcGxlcysrID0gc3RhdHVzMC0+c2FtcGxlMTsKICAgICAgICAgICAgIGlmIChzdCkgKnNhbXBs ZXMrKyA9IHN0YXR1czEtPnNhbXBsZTE7CiAgICAgICAgICAgICBmb3IgKGludCBuID0gMDsgbiA8 IChuYl9zYW1wbGVzIC0gMikgKiAoc3QgKyAxKTsgbiArPSAyKSB7Ci0gICAgICAgICAgICAgICAg aW50IGJ5dGUgPSBieXRlc3RyZWFtMl9nZXRfYnl0ZXUoJmdiKTsKKyAgICAgICAgICAgICAgICBp bnQgYnl0ZSA9IGJ5dGVzdHJlYW0yX2dldF9ieXRldShnYik7CiAgICAgICAgICAgICAgICAgc2Ft cGxlc1tuICBdID0gYWRwY21fbXNfZXhwYW5kX25pYmJsZShzdGF0dXMwLCBieXRlID4+IDQgICk7 CiAgICAgICAgICAgICAgICAgc2FtcGxlc1tuKzFdID0gYWRwY21fbXNfZXhwYW5kX25pYmJsZShz dGF0dXMxLCBieXRlICYgMHgwRik7CiAgICAgICAgICAgICB9CkBAIC0xMzAxLDIwICsxMjg4LDIw IEBAIHN0YXRpYyBpbnQgYWRwY21fZGVjb2RlX2ZyYW1lKEFWQ29kZWNDb250ZXh0ICphdmN0eCwg QVZGcmFtZSAqZnJhbWUsCiAgICAgICAgICkgLyogRW5kIG9mIENBU0UgKi8KICAgICBDQVNFKEFE UENNX01UQUYsCiAgICAgICAgIGZvciAoaW50IGNoYW5uZWwgPSAwOyBjaGFubmVsIDwgY2hhbm5l bHM7IGNoYW5uZWwgKz0gMikgewotICAgICAgICAgICAgYnl0ZXN0cmVhbTJfc2tpcHUoJmdiLCA0 KTsKLSAgICAgICAgICAgIGMtPnN0YXR1c1tjaGFubmVsICAgIF0uc3RlcCAgICAgID0gYnl0ZXN0 cmVhbTJfZ2V0X2xlMTZ1KCZnYikgJiAweDFmOwotICAgICAgICAgICAgYy0+c3RhdHVzW2NoYW5u ZWwgKyAxXS5zdGVwICAgICAgPSBieXRlc3RyZWFtMl9nZXRfbGUxNnUoJmdiKSAmIDB4MWY7Ci0g ICAgICAgICAgICBjLT5zdGF0dXNbY2hhbm5lbCAgICBdLnByZWRpY3RvciA9IHNpZ25fZXh0ZW5k KGJ5dGVzdHJlYW0yX2dldF9sZTE2dSgmZ2IpLCAxNik7Ci0gICAgICAgICAgICBieXRlc3RyZWFt Ml9za2lwdSgmZ2IsIDIpOwotICAgICAgICAgICAgYy0+c3RhdHVzW2NoYW5uZWwgKyAxXS5wcmVk aWN0b3IgPSBzaWduX2V4dGVuZChieXRlc3RyZWFtMl9nZXRfbGUxNnUoJmdiKSwgMTYpOwotICAg ICAgICAgICAgYnl0ZXN0cmVhbTJfc2tpcHUoJmdiLCAyKTsKKyAgICAgICAgICAgIGJ5dGVzdHJl YW0yX3NraXB1KGdiLCA0KTsKKyAgICAgICAgICAgIGMtPnN0YXR1c1tjaGFubmVsICAgIF0uc3Rl cCAgICAgID0gYnl0ZXN0cmVhbTJfZ2V0X2xlMTZ1KGdiKSAmIDB4MWY7CisgICAgICAgICAgICBj LT5zdGF0dXNbY2hhbm5lbCArIDFdLnN0ZXAgICAgICA9IGJ5dGVzdHJlYW0yX2dldF9sZTE2dShn YikgJiAweDFmOworICAgICAgICAgICAgYy0+c3RhdHVzW2NoYW5uZWwgICAgXS5wcmVkaWN0b3Ig PSBzaWduX2V4dGVuZChieXRlc3RyZWFtMl9nZXRfbGUxNnUoZ2IpLCAxNik7CisgICAgICAgICAg ICBieXRlc3RyZWFtMl9za2lwdShnYiwgMik7CisgICAgICAgICAgICBjLT5zdGF0dXNbY2hhbm5l bCArIDFdLnByZWRpY3RvciA9IHNpZ25fZXh0ZW5kKGJ5dGVzdHJlYW0yX2dldF9sZTE2dShnYiks IDE2KTsKKyAgICAgICAgICAgIGJ5dGVzdHJlYW0yX3NraXB1KGdiLCAyKTsKICAgICAgICAgICAg IGZvciAoaW50IG4gPSAwOyBuIDwgbmJfc2FtcGxlczsgbiArPSAyKSB7Ci0gICAgICAgICAgICAg ICAgaW50IHYgPSBieXRlc3RyZWFtMl9nZXRfYnl0ZXUoJmdiKTsKKyAgICAgICAgICAgICAgICBp bnQgdiA9IGJ5dGVzdHJlYW0yX2dldF9ieXRldShnYik7CiAgICAgICAgICAgICAgICAgc2FtcGxl c19wW2NoYW5uZWxdW24gICAgXSA9IGFkcGNtX210YWZfZXhwYW5kX25pYmJsZSgmYy0+c3RhdHVz W2NoYW5uZWxdLCB2ICYgMHgwRik7CiAgICAgICAgICAgICAgICAgc2FtcGxlc19wW2NoYW5uZWxd W24gKyAxXSA9IGFkcGNtX210YWZfZXhwYW5kX25pYmJsZSgmYy0+c3RhdHVzW2NoYW5uZWxdLCB2 ID4+IDQgICk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBmb3IgKGludCBuID0gMDsgbiA8 IG5iX3NhbXBsZXM7IG4gKz0gMikgewotICAgICAgICAgICAgICAgIGludCB2ID0gYnl0ZXN0cmVh bTJfZ2V0X2J5dGV1KCZnYik7CisgICAgICAgICAgICAgICAgaW50IHYgPSBieXRlc3RyZWFtMl9n ZXRfYnl0ZXUoZ2IpOwogICAgICAgICAgICAgICAgIHNhbXBsZXNfcFtjaGFubmVsICsgMV1bbiAg ICBdID0gYWRwY21fbXRhZl9leHBhbmRfbmliYmxlKCZjLT5zdGF0dXNbY2hhbm5lbCArIDFdLCB2 ICYgMHgwRik7CiAgICAgICAgICAgICAgICAgc2FtcGxlc19wW2NoYW5uZWwgKyAxXVtuICsgMV0g PSBhZHBjbV9tdGFmX2V4cGFuZF9uaWJibGUoJmMtPnN0YXR1c1tjaGFubmVsICsgMV0sIHYgPj4g NCAgKTsKICAgICAgICAgICAgIH0KQEAgLTEzMjMsOCArMTMxMCw4IEBAIHN0YXRpYyBpbnQgYWRw Y21fZGVjb2RlX2ZyYW1lKEFWQ29kZWNDb250ZXh0ICphdmN0eCwgQVZGcmFtZSAqZnJhbWUsCiAg ICAgQ0FTRShBRFBDTV9JTUFfREs0LAogICAgICAgICBmb3IgKGludCBjaGFubmVsID0gMDsgY2hh bm5lbCA8IGNoYW5uZWxzOyBjaGFubmVsKyspIHsKICAgICAgICAgICAgIEFEUENNQ2hhbm5lbFN0 YXR1cyAqY3MgPSAmYy0+c3RhdHVzW2NoYW5uZWxdOwotICAgICAgICAgICAgY3MtPnByZWRpY3Rv ciAgPSAqc2FtcGxlcysrID0gc2lnbl9leHRlbmQoYnl0ZXN0cmVhbTJfZ2V0X2xlMTZ1KCZnYiks IDE2KTsKLSAgICAgICAgICAgIGNzLT5zdGVwX2luZGV4ID0gc2lnbl9leHRlbmQoYnl0ZXN0cmVh bTJfZ2V0X2xlMTZ1KCZnYiksIDE2KTsKKyAgICAgICAgICAgIGNzLT5wcmVkaWN0b3IgID0gKnNh bXBsZXMrKyA9IHNpZ25fZXh0ZW5kKGJ5dGVzdHJlYW0yX2dldF9sZTE2dShnYiksIDE2KTsKKyAg ICAgICAgICAgIGNzLT5zdGVwX2luZGV4ID0gc2lnbl9leHRlbmQoYnl0ZXN0cmVhbTJfZ2V0X2xl MTZ1KGdiKSwgMTYpOwogICAgICAgICAgICAgaWYgKGNzLT5zdGVwX2luZGV4ID4gODh1KXsKICAg ICAgICAgICAgICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19FUlJPUiwgIkVSUk9SOiBzdGVwX2lu ZGV4WyVkXSA9ICVpXG4iLAogICAgICAgICAgICAgICAgICAgICAgICBjaGFubmVsLCBjcy0+c3Rl cF9pbmRleCk7CkBAIC0xMzMyLDcgKzEzMTksNyBAQCBzdGF0aWMgaW50IGFkcGNtX2RlY29kZV9m cmFtZShBVkNvZGVjQ29udGV4dCAqYXZjdHgsIEFWRnJhbWUgKmZyYW1lLAogICAgICAgICAgICAg fQogICAgICAgICB9CiAgICAgICAgIGZvciAoaW50IG4gPSAobmJfc2FtcGxlcyAtIDEpID4+ICgx IC0gc3QpOyBuID4gMDsgbi0tKSB7Ci0gICAgICAgICAgICBpbnQgdiA9IGJ5dGVzdHJlYW0yX2dl dF9ieXRldSgmZ2IpOworICAgICAgICAgICAgaW50IHYgPSBieXRlc3RyZWFtMl9nZXRfYnl0ZXUo Z2IpOwogICAgICAgICAgICAgKnNhbXBsZXMrKyA9IGFkcGNtX2ltYV9leHBhbmRfbmliYmxlKCZj LT5zdGF0dXNbMCBdLCB2ID4+IDQgICwgMyk7CiAgICAgICAgICAgICAqc2FtcGxlcysrID0gYWRw Y21faW1hX2V4cGFuZF9uaWJibGUoJmMtPnN0YXR1c1tzdF0sIHYgJiAweDBGLCAzKTsKICAgICAg ICAgfQpAQCAtMTM0NCw3ICsxMzMxLDcgQEAgc3RhdGljIGludCBhZHBjbV9kZWNvZGVfZnJhbWUo QVZDb2RlY0NvbnRleHQgKmF2Y3R4LCBBVkZyYW1lICpmcmFtZSwKICAgICAgICAgbmliYmxlID0g bGFzdF9ieXRlID4+IDQ7IFwKICAgICAgICAgZGVjb2RlX3RvcF9uaWJibGVfbmV4dCA9IDA7IFwK ICAgICB9IGVsc2UgeyBcCi0gICAgICAgIGxhc3RfYnl0ZSA9IGJ5dGVzdHJlYW0yX2dldF9ieXRl dSgmZ2IpOyBcCisgICAgICAgIGxhc3RfYnl0ZSA9IGJ5dGVzdHJlYW0yX2dldF9ieXRldShnYik7 IFwKICAgICAgICAgbmliYmxlID0gbGFzdF9ieXRlICYgMHgwRjsgXAogICAgICAgICBkZWNvZGVf dG9wX25pYmJsZV9uZXh0ID0gMTsgXAogICAgIH0KQEAgLTEzNTUsMTEgKzEzNDIsMTEgQEAgc3Rh dGljIGludCBhZHBjbV9kZWNvZGVfZnJhbWUoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LCBBVkZyYW1l ICpmcmFtZSwKICAgICAgICAgaW50IGRpZmZfY2hhbm5lbDsKICAgICAgICAgY29uc3QgaW50MTZf dCAqc2FtcGxlc19lbmQgPSBzYW1wbGVzICsgY2hhbm5lbHMgKiBuYl9zYW1wbGVzOwogCi0gICAg ICAgIGJ5dGVzdHJlYW0yX3NraXB1KCZnYiwgMTApOwotICAgICAgICBjLT5zdGF0dXNbMF0ucHJl ZGljdG9yICA9IHNpZ25fZXh0ZW5kKGJ5dGVzdHJlYW0yX2dldF9sZTE2dSgmZ2IpLCAxNik7Ci0g ICAgICAgIGMtPnN0YXR1c1sxXS5wcmVkaWN0b3IgID0gc2lnbl9leHRlbmQoYnl0ZXN0cmVhbTJf Z2V0X2xlMTZ1KCZnYiksIDE2KTsKLSAgICAgICAgYy0+c3RhdHVzWzBdLnN0ZXBfaW5kZXggPSBi eXRlc3RyZWFtMl9nZXRfYnl0ZXUoJmdiKTsKLSAgICAgICAgYy0+c3RhdHVzWzFdLnN0ZXBfaW5k ZXggPSBieXRlc3RyZWFtMl9nZXRfYnl0ZXUoJmdiKTsKKyAgICAgICAgYnl0ZXN0cmVhbTJfc2tp cHUoZ2IsIDEwKTsKKyAgICAgICAgYy0+c3RhdHVzWzBdLnByZWRpY3RvciAgPSBzaWduX2V4dGVu ZChieXRlc3RyZWFtMl9nZXRfbGUxNnUoZ2IpLCAxNik7CisgICAgICAgIGMtPnN0YXR1c1sxXS5w cmVkaWN0b3IgID0gc2lnbl9leHRlbmQoYnl0ZXN0cmVhbTJfZ2V0X2xlMTZ1KGdiKSwgMTYpOwor ICAgICAgICBjLT5zdGF0dXNbMF0uc3RlcF9pbmRleCA9IGJ5dGVzdHJlYW0yX2dldF9ieXRldShn Yik7CisgICAgICAgIGMtPnN0YXR1c1sxXS5zdGVwX2luZGV4ID0gYnl0ZXN0cmVhbTJfZ2V0X2J5 dGV1KGdiKTsKICAgICAgICAgaWYgKGMtPnN0YXR1c1swXS5zdGVwX2luZGV4ID4gODh1IHx8IGMt PnN0YXR1c1sxXS5zdGVwX2luZGV4ID4gODh1KXsKICAgICAgICAgICAgIGF2X2xvZyhhdmN0eCwg QVZfTE9HX0VSUk9SLCAiRVJST1I6IHN0ZXBfaW5kZXggPSAlaS8laVxuIiwKICAgICAgICAgICAg ICAgICAgICBjLT5zdGF0dXNbMF0uc3RlcF9pbmRleCwgYy0+c3RhdHVzWzFdLnN0ZXBfaW5kZXgp OwpAQCAtMTM5NiwxNCArMTM4MywxNCBAQCBzdGF0aWMgaW50IGFkcGNtX2RlY29kZV9mcmFtZShB VkNvZGVjQ29udGV4dCAqYXZjdHgsIEFWRnJhbWUgKmZyYW1lLAogICAgICAgICAgICAgKnNhbXBs ZXMrKyA9IGMtPnN0YXR1c1swXS5wcmVkaWN0b3IgLSBjLT5zdGF0dXNbMV0ucHJlZGljdG9yOwog ICAgICAgICB9CiAKLSAgICAgICAgaWYgKChieXRlc3RyZWFtMl90ZWxsKCZnYikgJiAxKSkKLSAg ICAgICAgICAgIGJ5dGVzdHJlYW0yX3NraXAoJmdiLCAxKTsKKyAgICAgICAgaWYgKChieXRlc3Ry ZWFtMl90ZWxsKGdiKSAmIDEpKQorICAgICAgICAgICAgYnl0ZXN0cmVhbTJfc2tpcChnYiwgMSk7 CiAgICAgICAgICkgLyogRW5kIG9mIENBU0UgKi8KICAgICBDQVNFKEFEUENNX0lNQV9JU1MsCiAg ICAgICAgIGZvciAoaW50IGNoYW5uZWwgPSAwOyBjaGFubmVsIDwgY2hhbm5lbHM7IGNoYW5uZWwr KykgewogICAgICAgICAgICAgQURQQ01DaGFubmVsU3RhdHVzICpjcyA9ICZjLT5zdGF0dXNbY2hh bm5lbF07Ci0gICAgICAgICAgICBjcy0+cHJlZGljdG9yICA9IHNpZ25fZXh0ZW5kKGJ5dGVzdHJl YW0yX2dldF9sZTE2dSgmZ2IpLCAxNik7Ci0gICAgICAgICAgICBjcy0+c3RlcF9pbmRleCA9IHNp Z25fZXh0ZW5kKGJ5dGVzdHJlYW0yX2dldF9sZTE2dSgmZ2IpLCAxNik7CisgICAgICAgICAgICBj cy0+cHJlZGljdG9yICA9IHNpZ25fZXh0ZW5kKGJ5dGVzdHJlYW0yX2dldF9sZTE2dShnYiksIDE2 KTsKKyAgICAgICAgICAgIGNzLT5zdGVwX2luZGV4ID0gc2lnbl9leHRlbmQoYnl0ZXN0cmVhbTJf Z2V0X2xlMTZ1KGdiKSwgMTYpOwogICAgICAgICAgICAgaWYgKGNzLT5zdGVwX2luZGV4ID4gODh1 KXsKICAgICAgICAgICAgICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19FUlJPUiwgIkVSUk9SOiBz dGVwX2luZGV4WyVkXSA9ICVpXG4iLAogICAgICAgICAgICAgICAgICAgICAgICBjaGFubmVsLCBj cy0+c3RlcF9pbmRleCk7CkBAIC0xNDEzLDcgKzE0MDAsNyBAQCBzdGF0aWMgaW50IGFkcGNtX2Rl Y29kZV9mcmFtZShBVkNvZGVjQ29udGV4dCAqYXZjdHgsIEFWRnJhbWUgKmZyYW1lLAogCiAgICAg ICAgIGZvciAoaW50IG4gPSBuYl9zYW1wbGVzID4+ICgxIC0gc3QpOyBuID4gMDsgbi0tKSB7CiAg ICAgICAgICAgICBpbnQgdjEsIHYyOwotICAgICAgICAgICAgaW50IHYgPSBieXRlc3RyZWFtMl9n ZXRfYnl0ZXUoJmdiKTsKKyAgICAgICAgICAgIGludCB2ID0gYnl0ZXN0cmVhbTJfZ2V0X2J5dGV1 KGdiKTsKICAgICAgICAgICAgIC8qIG5pYmJsZXMgYXJlIHN3YXBwZWQgZm9yIG1vbm8gKi8KICAg ICAgICAgICAgIGlmIChzdCkgewogICAgICAgICAgICAgICAgIHYxID0gdiA+PiA0OwpAQCAtMTQy OSw4ICsxNDE2LDggQEAgc3RhdGljIGludCBhZHBjbV9kZWNvZGVfZnJhbWUoQVZDb2RlY0NvbnRl eHQgKmF2Y3R4LCBBVkZyYW1lICpmcmFtZSwKICAgICBDQVNFKEFEUENNX0lNQV9NT0ZMRVgsCiAg ICAgICAgIGZvciAoaW50IGNoYW5uZWwgPSAwOyBjaGFubmVsIDwgY2hhbm5lbHM7IGNoYW5uZWwr KykgewogICAgICAgICAgICAgQURQQ01DaGFubmVsU3RhdHVzICpjcyA9ICZjLT5zdGF0dXNbY2hh bm5lbF07Ci0gICAgICAgICAgICBjcy0+c3RlcF9pbmRleCA9IHNpZ25fZXh0ZW5kKGJ5dGVzdHJl YW0yX2dldF9sZTE2dSgmZ2IpLCAxNik7Ci0gICAgICAgICAgICBjcy0+cHJlZGljdG9yICA9IHNp Z25fZXh0ZW5kKGJ5dGVzdHJlYW0yX2dldF9sZTE2dSgmZ2IpLCAxNik7CisgICAgICAgICAgICBj cy0+c3RlcF9pbmRleCA9IHNpZ25fZXh0ZW5kKGJ5dGVzdHJlYW0yX2dldF9sZTE2dShnYiksIDE2 KTsKKyAgICAgICAgICAgIGNzLT5wcmVkaWN0b3IgID0gc2lnbl9leHRlbmQoYnl0ZXN0cmVhbTJf Z2V0X2xlMTZ1KGdiKSwgMTYpOwogICAgICAgICAgICAgaWYgKGNzLT5zdGVwX2luZGV4ID4gODh1 KXsKICAgICAgICAgICAgICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19FUlJPUiwgIkVSUk9SOiBz dGVwX2luZGV4WyVkXSA9ICVpXG4iLAogICAgICAgICAgICAgICAgICAgICAgICBjaGFubmVsLCBj cy0+c3RlcF9pbmRleCk7CkBAIC0xNDQyLDcgKzE0MjksNyBAQCBzdGF0aWMgaW50IGFkcGNtX2Rl Y29kZV9mcmFtZShBVkNvZGVjQ29udGV4dCAqYXZjdHgsIEFWRnJhbWUgKmZyYW1lLAogICAgICAg ICAgICAgZm9yIChpbnQgY2hhbm5lbCA9IDA7IGNoYW5uZWwgPCBjaGFubmVsczsgY2hhbm5lbCsr KSB7CiAgICAgICAgICAgICAgICAgc2FtcGxlcyA9IHNhbXBsZXNfcFtjaGFubmVsXSArIDI1NiAq IHN1YmZyYW1lOwogICAgICAgICAgICAgICAgIGZvciAoaW50IG4gPSAwOyBuIDwgMjU2OyBuICs9 IDIpIHsKLSAgICAgICAgICAgICAgICAgICAgaW50IHYgPSBieXRlc3RyZWFtMl9nZXRfYnl0ZXUo JmdiKTsKKyAgICAgICAgICAgICAgICAgICAgaW50IHYgPSBieXRlc3RyZWFtMl9nZXRfYnl0ZXUo Z2IpOwogICAgICAgICAgICAgICAgICAgICAqc2FtcGxlcysrID0gYWRwY21faW1hX2V4cGFuZF9u aWJibGUoJmMtPnN0YXR1c1tjaGFubmVsXSwgdiAmIDB4MEYsIDMpOwogICAgICAgICAgICAgICAg ICAgICAqc2FtcGxlcysrID0gYWRwY21faW1hX2V4cGFuZF9uaWJibGUoJmMtPnN0YXR1c1tjaGFu bmVsXSwgdiA+PiA0ICAsIDMpOwogICAgICAgICAgICAgICAgIH0KQEAgLTE0NTMsOSArMTQ0MCw5 IEBAIHN0YXRpYyBpbnQgYWRwY21fZGVjb2RlX2ZyYW1lKEFWQ29kZWNDb250ZXh0ICphdmN0eCwg QVZGcmFtZSAqZnJhbWUsCiAgICAgICAgIGZvciAoaW50IGNoYW5uZWwgPSAwOyBjaGFubmVsIDwg Y2hhbm5lbHM7IGNoYW5uZWwrKykgewogICAgICAgICAgICAgQURQQ01DaGFubmVsU3RhdHVzICpj cyA9ICZjLT5zdGF0dXNbY2hhbm5lbF07CiAgICAgICAgICAgICBzYW1wbGVzID0gc2FtcGxlc19w W2NoYW5uZWxdOwotICAgICAgICAgICAgYnl0ZXN0cmVhbTJfc2tpcCgmZ2IsIDQpOworICAgICAg ICAgICAgYnl0ZXN0cmVhbTJfc2tpcChnYiwgNCk7CiAgICAgICAgICAgICBmb3IgKGludCBuID0g MDsgbiA8IG5iX3NhbXBsZXM7IG4gKz0gMikgewotICAgICAgICAgICAgICAgIGludCB2ID0gYnl0 ZXN0cmVhbTJfZ2V0X2J5dGV1KCZnYik7CisgICAgICAgICAgICAgICAgaW50IHYgPSBieXRlc3Ry ZWFtMl9nZXRfYnl0ZXUoZ2IpOwogICAgICAgICAgICAgICAgICpzYW1wbGVzKysgPSBhZHBjbV9p bWFfZXhwYW5kX25pYmJsZShjcywgdiA+PiA0ICAsIDMpOwogICAgICAgICAgICAgICAgICpzYW1w bGVzKysgPSBhZHBjbV9pbWFfZXhwYW5kX25pYmJsZShjcywgdiAmIDB4MEYsIDMpOwogICAgICAg ICAgICAgfQpAQCAtMTQ2MywxNCArMTQ1MCwxNCBAQCBzdGF0aWMgaW50IGFkcGNtX2RlY29kZV9m cmFtZShBVkNvZGVjQ29udGV4dCAqYXZjdHgsIEFWRnJhbWUgKmZyYW1lLAogICAgICAgICApIC8q IEVuZCBvZiBDQVNFICovCiAgICAgQ0FTRShBRFBDTV9JTUFfQVBDLAogICAgICAgICBmb3IgKGlu dCBuID0gbmJfc2FtcGxlcyA+PiAoMSAtIHN0KTsgbiA+IDA7IG4tLSkgewotICAgICAgICAgICAg aW50IHYgPSBieXRlc3RyZWFtMl9nZXRfYnl0ZXUoJmdiKTsKKyAgICAgICAgICAgIGludCB2ID0g Ynl0ZXN0cmVhbTJfZ2V0X2J5dGV1KGdiKTsKICAgICAgICAgICAgICpzYW1wbGVzKysgPSBhZHBj bV9pbWFfZXhwYW5kX25pYmJsZSgmYy0+c3RhdHVzWzBdLCAgdiA+PiA0ICAsIDMpOwogICAgICAg ICAgICAgKnNhbXBsZXMrKyA9IGFkcGNtX2ltYV9leHBhbmRfbmliYmxlKCZjLT5zdGF0dXNbc3Rd LCB2ICYgMHgwRiwgMyk7CiAgICAgICAgIH0KICAgICAgICAgKSAvKiBFbmQgb2YgQ0FTRSAqLwog ICAgIENBU0UoQURQQ01fSU1BX1NTSSwKICAgICAgICAgZm9yIChpbnQgbiA9IG5iX3NhbXBsZXMg Pj4gKDEgLSBzdCk7IG4gPiAwOyBuLS0pIHsKLSAgICAgICAgICAgIGludCB2ID0gYnl0ZXN0cmVh bTJfZ2V0X2J5dGV1KCZnYik7CisgICAgICAgICAgICBpbnQgdiA9IGJ5dGVzdHJlYW0yX2dldF9i eXRldShnYik7CiAgICAgICAgICAgICAqc2FtcGxlcysrID0gYWRwY21faW1hX3F0X2V4cGFuZF9u aWJibGUoJmMtPnN0YXR1c1swXSwgIHYgPj4gNCAgKTsKICAgICAgICAgICAgICpzYW1wbGVzKysg PSBhZHBjbV9pbWFfcXRfZXhwYW5kX25pYmJsZSgmYy0+c3RhdHVzW3N0XSwgdiAmIDB4MEYpOwog ICAgICAgICB9CkBAIC0xNDc4LDcgKzE0NjUsNyBAQCBzdGF0aWMgaW50IGFkcGNtX2RlY29kZV9m cmFtZShBVkNvZGVjQ29udGV4dCAqYXZjdHgsIEFWRnJhbWUgKmZyYW1lLAogICAgIENBU0UoQURQ Q01fSU1BX0FQTSwKICAgICAgICAgZm9yIChpbnQgbiA9IG5iX3NhbXBsZXMgLyAyOyBuID4gMDsg bi0tKSB7CiAgICAgICAgICAgICBmb3IgKGludCBjaGFubmVsID0gMDsgY2hhbm5lbCA8IGNoYW5u ZWxzOyBjaGFubmVsKyspIHsKLSAgICAgICAgICAgICAgICBpbnQgdiA9IGJ5dGVzdHJlYW0yX2dl dF9ieXRldSgmZ2IpOworICAgICAgICAgICAgICAgIGludCB2ID0gYnl0ZXN0cmVhbTJfZ2V0X2J5 dGV1KGdiKTsKICAgICAgICAgICAgICAgICAqc2FtcGxlcysrICA9IGFkcGNtX2ltYV9xdF9leHBh bmRfbmliYmxlKCZjLT5zdGF0dXNbY2hhbm5lbF0sIHYgPj4gNCAgKTsKICAgICAgICAgICAgICAg ICBzYW1wbGVzW3N0XSA9IGFkcGNtX2ltYV9xdF9leHBhbmRfbmliYmxlKCZjLT5zdGF0dXNbY2hh bm5lbF0sIHYgJiAweDBGKTsKICAgICAgICAgICAgIH0KQEAgLTE0ODgsNyArMTQ3NSw3IEBAIHN0 YXRpYyBpbnQgYWRwY21fZGVjb2RlX2ZyYW1lKEFWQ29kZWNDb250ZXh0ICphdmN0eCwgQVZGcmFt ZSAqZnJhbWUsCiAgICAgQ0FTRShBRFBDTV9JTUFfQUxQLAogICAgICAgICBmb3IgKGludCBuID0g bmJfc2FtcGxlcyAvIDI7IG4gPiAwOyBuLS0pIHsKICAgICAgICAgICAgIGZvciAoaW50IGNoYW5u ZWwgPSAwOyBjaGFubmVsIDwgY2hhbm5lbHM7IGNoYW5uZWwrKykgewotICAgICAgICAgICAgICAg IGludCB2ID0gYnl0ZXN0cmVhbTJfZ2V0X2J5dGV1KCZnYik7CisgICAgICAgICAgICAgICAgaW50 IHYgPSBieXRlc3RyZWFtMl9nZXRfYnl0ZXUoZ2IpOwogICAgICAgICAgICAgICAgICpzYW1wbGVz KysgID0gYWRwY21faW1hX2FscF9leHBhbmRfbmliYmxlKCZjLT5zdGF0dXNbY2hhbm5lbF0sIHYg Pj4gNCAgLCAyKTsKICAgICAgICAgICAgICAgICBzYW1wbGVzW3N0XSA9IGFkcGNtX2ltYV9hbHBf ZXhwYW5kX25pYmJsZSgmYy0+c3RhdHVzW2NoYW5uZWxdLCB2ICYgMHgwRiwgMik7CiAgICAgICAg ICAgICB9CkBAIC0xNDk5LDcgKzE0ODYsNyBAQCBzdGF0aWMgaW50IGFkcGNtX2RlY29kZV9mcmFt ZShBVkNvZGVjQ29udGV4dCAqYXZjdHgsIEFWRnJhbWUgKmZyYW1lLAogICAgICAgICBmb3IgKGlu dCBjaGFubmVsID0gMDsgY2hhbm5lbCA8IGNoYW5uZWxzOyBjaGFubmVsKyspIHsKICAgICAgICAg ICAgIGludDE2X3QgKnNtcCA9IHNhbXBsZXNfcFtjaGFubmVsXTsKICAgICAgICAgICAgIGZvciAo aW50IG4gPSAwOyBuIDwgbmJfc2FtcGxlcyAvIDI7IG4rKykgewotICAgICAgICAgICAgICAgIGlu dCB2ID0gYnl0ZXN0cmVhbTJfZ2V0X2J5dGV1KCZnYik7CisgICAgICAgICAgICAgICAgaW50IHYg PSBieXRlc3RyZWFtMl9nZXRfYnl0ZXUoZ2IpOwogICAgICAgICAgICAgICAgICpzbXArKyA9IGFk cGNtX2ltYV9jdW5uaW5nX2V4cGFuZF9uaWJibGUoJmMtPnN0YXR1c1tjaGFubmVsXSwgdiAmIDB4 MEYpOwogICAgICAgICAgICAgICAgICpzbXArKyA9IGFkcGNtX2ltYV9jdW5uaW5nX2V4cGFuZF9u aWJibGUoJmMtPnN0YXR1c1tjaGFubmVsXSwgdiA+PiA0KTsKICAgICAgICAgICAgIH0KQEAgLTE1 MDcsNyArMTQ5NCw3IEBAIHN0YXRpYyBpbnQgYWRwY21fZGVjb2RlX2ZyYW1lKEFWQ29kZWNDb250 ZXh0ICphdmN0eCwgQVZGcmFtZSAqZnJhbWUsCiAgICAgICAgICkgLyogRW5kIG9mIENBU0UgKi8K ICAgICBDQVNFKEFEUENNX0lNQV9PS0ksCiAgICAgICAgIGZvciAoaW50IG4gPSBuYl9zYW1wbGVz ID4+ICgxIC0gc3QpOyBuID4gMDsgbi0tKSB7Ci0gICAgICAgICAgICBpbnQgdiA9IGJ5dGVzdHJl YW0yX2dldF9ieXRldSgmZ2IpOworICAgICAgICAgICAgaW50IHYgPSBieXRlc3RyZWFtMl9nZXRf Ynl0ZXUoZ2IpOwogICAgICAgICAgICAgKnNhbXBsZXMrKyA9IGFkcGNtX2ltYV9va2lfZXhwYW5k X25pYmJsZSgmYy0+c3RhdHVzWzBdLCAgdiA+PiA0ICApOwogICAgICAgICAgICAgKnNhbXBsZXMr KyA9IGFkcGNtX2ltYV9va2lfZXhwYW5kX25pYmJsZSgmYy0+c3RhdHVzW3N0XSwgdiAmIDB4MEYp OwogICAgICAgICB9CkBAIC0xNTE1LDggKzE1MDIsOCBAQCBzdGF0aWMgaW50IGFkcGNtX2RlY29k ZV9mcmFtZShBVkNvZGVjQ29udGV4dCAqYXZjdHgsIEFWRnJhbWUgKmZyYW1lLAogICAgIENBU0Uo QURQQ01fSU1BX1JBRCwKICAgICAgICAgZm9yIChpbnQgY2hhbm5lbCA9IDA7IGNoYW5uZWwgPCBj aGFubmVsczsgY2hhbm5lbCsrKSB7CiAgICAgICAgICAgICBBRFBDTUNoYW5uZWxTdGF0dXMgKmNz ID0gJmMtPnN0YXR1c1tjaGFubmVsXTsKLSAgICAgICAgICAgIGNzLT5zdGVwX2luZGV4ID0gc2ln bl9leHRlbmQoYnl0ZXN0cmVhbTJfZ2V0X2xlMTZ1KCZnYiksIDE2KTsKLSAgICAgICAgICAgIGNz LT5wcmVkaWN0b3IgID0gc2lnbl9leHRlbmQoYnl0ZXN0cmVhbTJfZ2V0X2xlMTZ1KCZnYiksIDE2 KTsKKyAgICAgICAgICAgIGNzLT5zdGVwX2luZGV4ID0gc2lnbl9leHRlbmQoYnl0ZXN0cmVhbTJf Z2V0X2xlMTZ1KGdiKSwgMTYpOworICAgICAgICAgICAgY3MtPnByZWRpY3RvciAgPSBzaWduX2V4 dGVuZChieXRlc3RyZWFtMl9nZXRfbGUxNnUoZ2IpLCAxNik7CiAgICAgICAgICAgICBpZiAoY3Mt PnN0ZXBfaW5kZXggPiA4OHUpewogICAgICAgICAgICAgICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9H X0VSUk9SLCAiRVJST1I6IHN0ZXBfaW5kZXhbJWRdID0gJWlcbiIsCiAgICAgICAgICAgICAgICAg ICAgICAgIGNoYW5uZWwsIGNzLT5zdGVwX2luZGV4KTsKQEAgLTE1MjYsOSArMTUxMyw5IEBAIHN0 YXRpYyBpbnQgYWRwY21fZGVjb2RlX2ZyYW1lKEFWQ29kZWNDb250ZXh0ICphdmN0eCwgQVZGcmFt ZSAqZnJhbWUsCiAgICAgICAgIGZvciAoaW50IG4gPSAwOyBuIDwgbmJfc2FtcGxlcyAvIDI7IG4r KykgewogICAgICAgICAgICAgaW50IGJ5dGVbMl07CiAKLSAgICAgICAgICAgIGJ5dGVbMF0gPSBi eXRlc3RyZWFtMl9nZXRfYnl0ZXUoJmdiKTsKKyAgICAgICAgICAgIGJ5dGVbMF0gPSBieXRlc3Ry ZWFtMl9nZXRfYnl0ZXUoZ2IpOwogICAgICAgICAgICAgaWYgKHN0KQotICAgICAgICAgICAgICAg IGJ5dGVbMV0gPSBieXRlc3RyZWFtMl9nZXRfYnl0ZXUoJmdiKTsKKyAgICAgICAgICAgICAgICBi eXRlWzFdID0gYnl0ZXN0cmVhbTJfZ2V0X2J5dGV1KGdiKTsKICAgICAgICAgICAgIGZvciAoaW50 IGNoYW5uZWwgPSAwOyBjaGFubmVsIDwgY2hhbm5lbHM7IGNoYW5uZWwrKykgewogICAgICAgICAg ICAgICAgICpzYW1wbGVzKysgPSBhZHBjbV9pbWFfZXhwYW5kX25pYmJsZSgmYy0+c3RhdHVzW2No YW5uZWxdLCBieXRlW2NoYW5uZWxdICYgMHgwRiwgMyk7CiAgICAgICAgICAgICB9CkBAIC0xNTQz LDcgKzE1MzAsNyBAQCBzdGF0aWMgaW50IGFkcGNtX2RlY29kZV9mcmFtZShBVkNvZGVjQ29udGV4 dCAqYXZjdHgsIEFWRnJhbWUgKmZyYW1lLAogICAgICAgICAgICAgICAgIGludDE2X3QgKnNtcCA9 IHNhbXBsZXNfcFtjaGFubmVsXTsKIAogICAgICAgICAgICAgICAgIGZvciAoaW50IG4gPSBuYl9z YW1wbGVzIC8gMjsgbiA+IDA7IG4tLSkgewotICAgICAgICAgICAgICAgICAgICBpbnQgdiA9IGJ5 dGVzdHJlYW0yX2dldF9ieXRldSgmZ2IpOworICAgICAgICAgICAgICAgICAgICBpbnQgdiA9IGJ5 dGVzdHJlYW0yX2dldF9ieXRldShnYik7CiAgICAgICAgICAgICAgICAgICAgICpzbXArKyA9IGFk cGNtX2ltYV9leHBhbmRfbmliYmxlKCZjLT5zdGF0dXNbY2hhbm5lbF0sIHYgJiAweDBGLCAzKTsK ICAgICAgICAgICAgICAgICAgICAgKnNtcCsrID0gYWRwY21faW1hX2V4cGFuZF9uaWJibGUoJmMt PnN0YXR1c1tjaGFubmVsXSwgdiA+PiA0ICAsIDMpOwogICAgICAgICAgICAgICAgIH0KQEAgLTE1 NTEsMzIgKzE1MzgsMzIgQEAgc3RhdGljIGludCBhZHBjbV9kZWNvZGVfZnJhbWUoQVZDb2RlY0Nv bnRleHQgKmF2Y3R4LCBBVkZyYW1lICpmcmFtZSwKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg ICAgIGZvciAoaW50IG4gPSBuYl9zYW1wbGVzIC8gMjsgbiA+IDA7IG4tLSkgewogICAgICAgICAg ICAgICAgIGZvciAoaW50IGNoYW5uZWwgPSAwOyBjaGFubmVsIDwgY2hhbm5lbHM7IGNoYW5uZWwr KykgewotICAgICAgICAgICAgICAgICAgICBpbnQgdiA9IGJ5dGVzdHJlYW0yX2dldF9ieXRldSgm Z2IpOworICAgICAgICAgICAgICAgICAgICBpbnQgdiA9IGJ5dGVzdHJlYW0yX2dldF9ieXRldShn Yik7CiAgICAgICAgICAgICAgICAgICAgICpzYW1wbGVzKysgID0gYWRwY21faW1hX2V4cGFuZF9u aWJibGUoJmMtPnN0YXR1c1tjaGFubmVsXSwgdiAmIDB4MEYsIDMpOwogICAgICAgICAgICAgICAg ICAgICBzYW1wbGVzW3N0XSA9IGFkcGNtX2ltYV9leHBhbmRfbmliYmxlKCZjLT5zdGF0dXNbY2hh bm5lbF0sIHYgPj4gNCAgLCAzKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg c2FtcGxlcyArPSBjaGFubmVsczsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBi eXRlc3RyZWFtMl9zZWVrKCZnYiwgMCwgU0VFS19FTkQpOworICAgICAgICBieXRlc3RyZWFtMl9z ZWVrKGdiLCAwLCBTRUVLX0VORCk7CiAgICAgICAgICkgLyogRW5kIG9mIENBU0UgKi8KICAgICBD QVNFKEFEUENNX1hNRCwKICAgICAgICAgaW50IGJ5dGVzX3JlbWFpbmluZywgYmxvY2sgPSAwOwot ICAgICAgICB3aGlsZSAoYnl0ZXN0cmVhbTJfZ2V0X2J5dGVzX2xlZnQoJmdiKSA+PSAyMSAqIGNo YW5uZWxzKSB7CisgICAgICAgIHdoaWxlIChieXRlc3RyZWFtMl9nZXRfYnl0ZXNfbGVmdChnYikg Pj0gMjEgKiBjaGFubmVscykgewogICAgICAgICAgICAgZm9yIChpbnQgY2hhbm5lbCA9IDA7IGNo YW5uZWwgPCBjaGFubmVsczsgY2hhbm5lbCsrKSB7CiAgICAgICAgICAgICAgICAgaW50MTZfdCAq b3V0ID0gc2FtcGxlc19wW2NoYW5uZWxdICsgYmxvY2sgKiAzMjsKICAgICAgICAgICAgICAgICBp bnQxNl90IGhpc3RvcnlbMl07CiAgICAgICAgICAgICAgICAgdWludDE2X3Qgc2NhbGU7CiAKLSAg ICAgICAgICAgICAgICBoaXN0b3J5WzFdID0gc2lnbl9leHRlbmQoYnl0ZXN0cmVhbTJfZ2V0X2xl MTYoJmdiKSwgMTYpOwotICAgICAgICAgICAgICAgIGhpc3RvcnlbMF0gPSBzaWduX2V4dGVuZChi eXRlc3RyZWFtMl9nZXRfbGUxNigmZ2IpLCAxNik7Ci0gICAgICAgICAgICAgICAgc2NhbGUgPSBi eXRlc3RyZWFtMl9nZXRfbGUxNigmZ2IpOworICAgICAgICAgICAgICAgIGhpc3RvcnlbMV0gPSBz aWduX2V4dGVuZChieXRlc3RyZWFtMl9nZXRfbGUxNihnYiksIDE2KTsKKyAgICAgICAgICAgICAg ICBoaXN0b3J5WzBdID0gc2lnbl9leHRlbmQoYnl0ZXN0cmVhbTJfZ2V0X2xlMTYoZ2IpLCAxNik7 CisgICAgICAgICAgICAgICAgc2NhbGUgPSBieXRlc3RyZWFtMl9nZXRfbGUxNihnYik7CiAKICAg ICAgICAgICAgICAgICBvdXRbMF0gPSBoaXN0b3J5WzFdOwogICAgICAgICAgICAgICAgIG91dFsx XSA9IGhpc3RvcnlbMF07CiAKICAgICAgICAgICAgICAgICBmb3IgKGludCBuID0gMDsgbiA8IDE1 OyBuKyspIHsKLSAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgYnl0ZSA9IGJ5dGVzdHJlYW0y X2dldF9ieXRlKCZnYik7CisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGJ5dGUgPSBieXRl c3RyZWFtMl9nZXRfYnl0ZShnYik7CiAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgbmliYmxl WzJdOwogCiAgICAgICAgICAgICAgICAgICAgIG5pYmJsZVswXSA9IHNpZ25fZXh0ZW5kKGJ5dGUg JiAxNSwgNCk7CkBAIC0xNTk0LDkgKzE1ODEsOSBAQCBzdGF0aWMgaW50IGFkcGNtX2RlY29kZV9m cmFtZShBVkNvZGVjQ29udGV4dCAqYXZjdHgsIEFWRnJhbWUgKmZyYW1lLAogCiAgICAgICAgICAg ICBibG9jaysrOwogICAgICAgICB9Ci0gICAgICAgIGJ5dGVzX3JlbWFpbmluZyA9IGJ5dGVzdHJl YW0yX2dldF9ieXRlc19sZWZ0KCZnYik7CisgICAgICAgIGJ5dGVzX3JlbWFpbmluZyA9IGJ5dGVz dHJlYW0yX2dldF9ieXRlc19sZWZ0KGdiKTsKICAgICAgICAgaWYgKGJ5dGVzX3JlbWFpbmluZyA+ IDApIHsKLSAgICAgICAgICAgIGJ5dGVzdHJlYW0yX3NraXAoJmdiLCBieXRlc19yZW1haW5pbmcp OworICAgICAgICAgICAgYnl0ZXN0cmVhbTJfc2tpcChnYiwgYnl0ZXNfcmVtYWluaW5nKTsKICAg ICAgICAgfQogICAgICAgICApIC8qIEVuZCBvZiBDQVNFICovCiAgICAgQ0FTRShBRFBDTV9YQSwK QEAgLTE2MDUsMjQgKzE1OTIsMjQgQEAgc3RhdGljIGludCBhZHBjbV9kZWNvZGVfZnJhbWUoQVZD b2RlY0NvbnRleHQgKmF2Y3R4LCBBVkZyYW1lICpmcmFtZSwKICAgICAgICAgaW50IHNhbXBsZXNf cGVyX2Jsb2NrID0gMjggKiAoMyAtIGNoYW5uZWxzKSAqIDQ7CiAgICAgICAgIGludCBzYW1wbGVf b2Zmc2V0ID0gMDsKICAgICAgICAgaW50IGJ5dGVzX3JlbWFpbmluZzsKLSAgICAgICAgd2hpbGUg KGJ5dGVzdHJlYW0yX2dldF9ieXRlc19sZWZ0KCZnYikgPj0gMTI4KSB7Ci0gICAgICAgICAgICBp ZiAoKHJldCA9IHhhX2RlY29kZShhdmN0eCwgb3V0MCwgb3V0MSwgYnVmICsgYnl0ZXN0cmVhbTJf dGVsbCgmZ2IpLAorICAgICAgICB3aGlsZSAoYnl0ZXN0cmVhbTJfZ2V0X2J5dGVzX2xlZnQoZ2Ip ID49IDEyOCkgeworICAgICAgICAgICAgaWYgKChyZXQgPSB4YV9kZWNvZGUoYXZjdHgsIG91dDAs IG91dDEsIGdiLT5idWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYy0+ c3RhdHVzWzBdLCAmYy0+c3RhdHVzWzFdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY2hhbm5lbHMsIHNhbXBsZV9vZmZzZXQpKSA8IDApCiAgICAgICAgICAgICAgICAgcmV0dXJu IHJldDsKLSAgICAgICAgICAgIGJ5dGVzdHJlYW0yX3NraXB1KCZnYiwgMTI4KTsKKyAgICAgICAg ICAgIGJ5dGVzdHJlYW0yX3NraXB1KGdiLCAxMjgpOwogICAgICAgICAgICAgc2FtcGxlX29mZnNl dCArPSBzYW1wbGVzX3Blcl9ibG9jazsKICAgICAgICAgfQogICAgICAgICAvKiBMZXNzIHRoYW4g YSBmdWxsIGJsb2NrIG9mIGRhdGEgbGVmdCwgZS5nLiB3aGVuIHJlYWRpbmcgZnJvbQogICAgICAg ICAgKiAyMzI0IGJ5dGUgcGVyIHNlY3RvciBYQTsgdGhlIHJlbWFpbmRlciBpcyBwYWRkaW5nICov Ci0gICAgICAgIGJ5dGVzX3JlbWFpbmluZyA9IGJ5dGVzdHJlYW0yX2dldF9ieXRlc19sZWZ0KCZn Yik7CisgICAgICAgIGJ5dGVzX3JlbWFpbmluZyA9IGJ5dGVzdHJlYW0yX2dldF9ieXRlc19sZWZ0 KGdiKTsKICAgICAgICAgaWYgKGJ5dGVzX3JlbWFpbmluZyA+IDApIHsKLSAgICAgICAgICAgIGJ5 dGVzdHJlYW0yX3NraXAoJmdiLCBieXRlc19yZW1haW5pbmcpOworICAgICAgICAgICAgYnl0ZXN0 cmVhbTJfc2tpcChnYiwgYnl0ZXNfcmVtYWluaW5nKTsKICAgICAgICAgfQogICAgICAgICApIC8q IEVuZCBvZiBDQVNFICovCiAgICAgQ0FTRShBRFBDTV9JTUFfRUFfRUFDUywKICAgICAgICAgZm9y IChpbnQgaSA9IDA7IGkgPD0gc3Q7IGkrKykgewotICAgICAgICAgICAgYy0+c3RhdHVzW2ldLnN0 ZXBfaW5kZXggPSBieXRlc3RyZWFtMl9nZXRfbGUzMnUoJmdiKTsKKyAgICAgICAgICAgIGMtPnN0 YXR1c1tpXS5zdGVwX2luZGV4ID0gYnl0ZXN0cmVhbTJfZ2V0X2xlMzJ1KGdiKTsKICAgICAgICAg ICAgIGlmIChjLT5zdGF0dXNbaV0uc3RlcF9pbmRleCA+IDg4dSkgewogICAgICAgICAgICAgICAg IGF2X2xvZyhhdmN0eCwgQVZfTE9HX0VSUk9SLCAiRVJST1I6IHN0ZXBfaW5kZXhbJWRdID0gJWlc biIsCiAgICAgICAgICAgICAgICAgICAgICAgIGksIGMtPnN0YXR1c1tpXS5zdGVwX2luZGV4KTsK QEAgLTE2MzAsMjAgKzE2MTcsMjAgQEAgc3RhdGljIGludCBhZHBjbV9kZWNvZGVfZnJhbWUoQVZD b2RlY0NvbnRleHQgKmF2Y3R4LCBBVkZyYW1lICpmcmFtZSwKICAgICAgICAgICAgIH0KICAgICAg ICAgfQogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8PSBzdDsgaSsrKSB7Ci0gICAgICAgICAg ICBjLT5zdGF0dXNbaV0ucHJlZGljdG9yICA9IGJ5dGVzdHJlYW0yX2dldF9sZTMydSgmZ2IpOwor ICAgICAgICAgICAgYy0+c3RhdHVzW2ldLnByZWRpY3RvciAgPSBieXRlc3RyZWFtMl9nZXRfbGUz MnUoZ2IpOwogICAgICAgICAgICAgaWYgKEZGQUJTKChpbnQ2NF90KWMtPnN0YXR1c1tpXS5wcmVk aWN0b3IpID4gKDE8PDE2KSkKICAgICAgICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElE REFUQTsKICAgICAgICAgfQogCiAgICAgICAgIGZvciAoaW50IG4gPSBuYl9zYW1wbGVzID4+ICgx IC0gc3QpOyBuID4gMDsgbi0tKSB7Ci0gICAgICAgICAgICBpbnQgYnl0ZSAgID0gYnl0ZXN0cmVh bTJfZ2V0X2J5dGV1KCZnYik7CisgICAgICAgICAgICBpbnQgYnl0ZSAgID0gYnl0ZXN0cmVhbTJf Z2V0X2J5dGV1KGdiKTsKICAgICAgICAgICAgICpzYW1wbGVzKysgPSBhZHBjbV9pbWFfZXhwYW5k X25pYmJsZSgmYy0+c3RhdHVzWzBdLCAgYnl0ZSA+PiA0LCAgIDMpOwogICAgICAgICAgICAgKnNh bXBsZXMrKyA9IGFkcGNtX2ltYV9leHBhbmRfbmliYmxlKCZjLT5zdGF0dXNbc3RdLCBieXRlICYg MHgwRiwgMyk7CiAgICAgICAgIH0KICAgICAgICAgKSAvKiBFbmQgb2YgQ0FTRSAqLwogICAgIENB U0UoQURQQ01fSU1BX0VBX1NFQUQsCiAgICAgICAgIGZvciAoaW50IG4gPSBuYl9zYW1wbGVzID4+ ICgxIC0gc3QpOyBuID4gMDsgbi0tKSB7Ci0gICAgICAgICAgICBpbnQgYnl0ZSA9IGJ5dGVzdHJl YW0yX2dldF9ieXRldSgmZ2IpOworICAgICAgICAgICAgaW50IGJ5dGUgPSBieXRlc3RyZWFtMl9n ZXRfYnl0ZXUoZ2IpOwogICAgICAgICAgICAgKnNhbXBsZXMrKyA9IGFkcGNtX2ltYV9leHBhbmRf bmliYmxlKCZjLT5zdGF0dXNbMF0sICBieXRlID4+IDQsICAgNik7CiAgICAgICAgICAgICAqc2Ft cGxlcysrID0gYWRwY21faW1hX2V4cGFuZF9uaWJibGUoJmMtPnN0YXR1c1tzdF0sIGJ5dGUgJiAw eDBGLCA2KTsKICAgICAgICAgfQpAQCAtMTY2MSwyNCArMTY0OCwyNCBAQCBzdGF0aWMgaW50IGFk cGNtX2RlY29kZV9mcmFtZShBVkNvZGVjQ29udGV4dCAqYXZjdHgsIEFWRnJhbWUgKmZyYW1lLAog ICAgICAgICBpZiAoY2hhbm5lbHMgIT0gMikKICAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lO VkFMSUREQVRBOwogCi0gICAgICAgIGN1cnJlbnRfbGVmdF9zYW1wbGUgICA9IHNpZ25fZXh0ZW5k KGJ5dGVzdHJlYW0yX2dldF9sZTE2dSgmZ2IpLCAxNik7Ci0gICAgICAgIHByZXZpb3VzX2xlZnRf c2FtcGxlICA9IHNpZ25fZXh0ZW5kKGJ5dGVzdHJlYW0yX2dldF9sZTE2dSgmZ2IpLCAxNik7Ci0g ICAgICAgIGN1cnJlbnRfcmlnaHRfc2FtcGxlICA9IHNpZ25fZXh0ZW5kKGJ5dGVzdHJlYW0yX2dl dF9sZTE2dSgmZ2IpLCAxNik7Ci0gICAgICAgIHByZXZpb3VzX3JpZ2h0X3NhbXBsZSA9IHNpZ25f ZXh0ZW5kKGJ5dGVzdHJlYW0yX2dldF9sZTE2dSgmZ2IpLCAxNik7CisgICAgICAgIGN1cnJlbnRf bGVmdF9zYW1wbGUgICA9IHNpZ25fZXh0ZW5kKGJ5dGVzdHJlYW0yX2dldF9sZTE2dShnYiksIDE2 KTsKKyAgICAgICAgcHJldmlvdXNfbGVmdF9zYW1wbGUgID0gc2lnbl9leHRlbmQoYnl0ZXN0cmVh bTJfZ2V0X2xlMTZ1KGdiKSwgMTYpOworICAgICAgICBjdXJyZW50X3JpZ2h0X3NhbXBsZSAgPSBz aWduX2V4dGVuZChieXRlc3RyZWFtMl9nZXRfbGUxNnUoZ2IpLCAxNik7CisgICAgICAgIHByZXZp b3VzX3JpZ2h0X3NhbXBsZSA9IHNpZ25fZXh0ZW5kKGJ5dGVzdHJlYW0yX2dldF9sZTE2dShnYiks IDE2KTsKIAogICAgICAgICBmb3IgKGludCBjb3VudDEgPSAwOyBjb3VudDEgPCBuYl9zYW1wbGVz IC8gMjg7IGNvdW50MSsrKSB7Ci0gICAgICAgICAgICBpbnQgYnl0ZSA9IGJ5dGVzdHJlYW0yX2dl dF9ieXRldSgmZ2IpOworICAgICAgICAgICAgaW50IGJ5dGUgPSBieXRlc3RyZWFtMl9nZXRfYnl0 ZXUoZ2IpOwogICAgICAgICAgICAgY29lZmYxbCA9IGVhX2FkcGNtX3RhYmxlWyBieXRlID4+IDQg ICAgICAgXTsKICAgICAgICAgICAgIGNvZWZmMmwgPSBlYV9hZHBjbV90YWJsZVsoYnl0ZSA+PiA0 ICApICsgNF07CiAgICAgICAgICAgICBjb2VmZjFyID0gZWFfYWRwY21fdGFibGVbIGJ5dGUgJiAw eDBGXTsKICAgICAgICAgICAgIGNvZWZmMnIgPSBlYV9hZHBjbV90YWJsZVsoYnl0ZSAmIDB4MEYp ICsgNF07CiAKLSAgICAgICAgICAgIGJ5dGUgPSBieXRlc3RyZWFtMl9nZXRfYnl0ZXUoJmdiKTsK KyAgICAgICAgICAgIGJ5dGUgPSBieXRlc3RyZWFtMl9nZXRfYnl0ZXUoZ2IpOwogICAgICAgICAg ICAgc2hpZnRfbGVmdCAgPSAyMCAtIChieXRlID4+IDQpOwogICAgICAgICAgICAgc2hpZnRfcmln aHQgPSAyMCAtIChieXRlICYgMHgwRik7CiAKICAgICAgICAgICAgIGZvciAoaW50IGNvdW50MiA9 IDA7IGNvdW50MiA8IDI4OyBjb3VudDIrKykgewotICAgICAgICAgICAgICAgIGJ5dGUgPSBieXRl c3RyZWFtMl9nZXRfYnl0ZXUoJmdiKTsKKyAgICAgICAgICAgICAgICBieXRlID0gYnl0ZXN0cmVh bTJfZ2V0X2J5dGV1KGdiKTsKICAgICAgICAgICAgICAgICBuZXh0X2xlZnRfc2FtcGxlICA9IHNp Z25fZXh0ZW5kKGJ5dGUgPj4gNCwgNCkgKiAoMSA8PCBzaGlmdF9sZWZ0KTsKICAgICAgICAgICAg ICAgICBuZXh0X3JpZ2h0X3NhbXBsZSA9IHNpZ25fZXh0ZW5kKGJ5dGUsICAgICAgNCkgKiAoMSA8 PCBzaGlmdF9yaWdodCk7CiAKQEAgLTE2OTgsMTMgKzE2ODUsMTMgQEAgc3RhdGljIGludCBhZHBj bV9kZWNvZGVfZnJhbWUoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LCBBVkZyYW1lICpmcmFtZSwKICAg ICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIGJ5dGVzdHJlYW0yX3NraXAoJmdiLCAy KTsgLy8gU2tpcCB0ZXJtaW5hdGluZyAweDAwMDAKKyAgICAgICAgYnl0ZXN0cmVhbTJfc2tpcChn YiwgMik7IC8vIFNraXAgdGVybWluYXRpbmcgMHgwMDAwCiAgICAgICAgICkgLyogRW5kIG9mIENB U0UgKi8KICAgICBDQVNFKEFEUENNX0VBX01BWElTX1hBLAogICAgICAgICBpbnQgY29lZmZbMl1b Ml0sIHNoaWZ0WzJdOwogCiAgICAgICAgIGZvciAoaW50IGNoYW5uZWwgPSAwOyBjaGFubmVsIDwg Y2hhbm5lbHM7IGNoYW5uZWwrKykgewotICAgICAgICAgICAgaW50IGJ5dGUgPSBieXRlc3RyZWFt Ml9nZXRfYnl0ZXUoJmdiKTsKKyAgICAgICAgICAgIGludCBieXRlID0gYnl0ZXN0cmVhbTJfZ2V0 X2J5dGV1KGdiKTsKICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMjsgaSsrKQogICAg ICAgICAgICAgICAgIGNvZWZmW2NoYW5uZWxdW2ldID0gZWFfYWRwY21fdGFibGVbKGJ5dGUgPj4g NCkgKyA0KmldOwogICAgICAgICAgICAgc2hpZnRbY2hhbm5lbF0gPSAyMCAtIChieXRlICYgMHgw Rik7CkBAIC0xNzEyLDggKzE2OTksOCBAQCBzdGF0aWMgaW50IGFkcGNtX2RlY29kZV9mcmFtZShB VkNvZGVjQ29udGV4dCAqYXZjdHgsIEFWRnJhbWUgKmZyYW1lLAogICAgICAgICBmb3IgKGludCBj b3VudDEgPSAwOyBjb3VudDEgPCBuYl9zYW1wbGVzIC8gMjsgY291bnQxKyspIHsKICAgICAgICAg ICAgIGludCBieXRlWzJdOwogCi0gICAgICAgICAgICBieXRlWzBdID0gYnl0ZXN0cmVhbTJfZ2V0 X2J5dGV1KCZnYik7Ci0gICAgICAgICAgICBpZiAoc3QpIGJ5dGVbMV0gPSBieXRlc3RyZWFtMl9n ZXRfYnl0ZXUoJmdiKTsKKyAgICAgICAgICAgIGJ5dGVbMF0gPSBieXRlc3RyZWFtMl9nZXRfYnl0 ZXUoZ2IpOworICAgICAgICAgICAgaWYgKHN0KSBieXRlWzFdID0gYnl0ZXN0cmVhbTJfZ2V0X2J5 dGV1KGdiKTsKICAgICAgICAgICAgIGZvciAoaW50IGkgPSA0OyBpID49IDA7IGktPTQpIHsgLyog UGFpcndpc2Ugc2FtcGxlcyBMTCBSUiAoc3QpIG9yIExMIExMIChtb25vKSAqLwogICAgICAgICAg ICAgICAgIGZvciAoaW50IGNoYW5uZWwgPSAwOyBjaGFubmVsIDwgY2hhbm5lbHM7IGNoYW5uZWwr KykgewogICAgICAgICAgICAgICAgICAgICBpbnQgc2FtcGxlID0gc2lnbl9leHRlbmQoYnl0ZVtj aGFubmVsXSA+PiBpLCA0KSAqICgxIDw8IHNoaWZ0W2NoYW5uZWxdKTsKQEAgLTE3MjYsNyArMTcx Myw3IEBAIHN0YXRpYyBpbnQgYWRwY21fZGVjb2RlX2ZyYW1lKEFWQ29kZWNDb250ZXh0ICphdmN0 eCwgQVZGcmFtZSAqZnJhbWUsCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAg ICAgICB9Ci0gICAgICAgIGJ5dGVzdHJlYW0yX3NlZWsoJmdiLCAwLCBTRUVLX0VORCk7CisgICAg ICAgIGJ5dGVzdHJlYW0yX3NlZWsoZ2IsIDAsIFNFRUtfRU5EKTsKICAgICAgICAgKSAvKiBFbmQg b2YgQ0FTRSAqLwogI2lmIENPTkZJR19BRFBDTV9FQV9SMV9ERUNPREVSIHx8IENPTkZJR19BRFBD TV9FQV9SMl9ERUNPREVSIHx8IENPTkZJR19BRFBDTV9FQV9SM19ERUNPREVSCiAgICAgY2FzZSBB Vl9DT0RFQ19JRF9BRFBDTV9FQV9SMToKQEAgLTE3NDUsMzIgKzE3MzIsMzIgQEAgc3RhdGljIGlu dCBhZHBjbV9kZWNvZGVfZnJhbWUoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LCBBVkZyYW1lICpmcmFt ZSwKICAgICAgICAgaW50IG9mZnNldHNbNl07CiAKICAgICAgICAgZm9yICh1bnNpZ25lZCBjaGFu bmVsID0gMDsgY2hhbm5lbCA8IGNoYW5uZWxzOyBjaGFubmVsKyspCi0gICAgICAgICAgICBvZmZz ZXRzW2NoYW5uZWxdID0gKGJpZ19lbmRpYW4gPyBieXRlc3RyZWFtMl9nZXRfYmUzMigmZ2IpIDoK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVzdHJlYW0y X2dldF9sZTMyKCZnYikpICsKKyAgICAgICAgICAgIG9mZnNldHNbY2hhbm5lbF0gPSAoYmlnX2Vu ZGlhbiA/IGJ5dGVzdHJlYW0yX2dldF9iZTMyKGdiKSA6CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBieXRlc3RyZWFtMl9nZXRfbGUzMihnYikpICsKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbm5lbHMgKyAxKSAqIDQ7CiAKICAgICAgICAg Zm9yICh1bnNpZ25lZCBjaGFubmVsID0gMDsgY2hhbm5lbCA8IGNoYW5uZWxzOyBjaGFubmVsKysp IHsKICAgICAgICAgICAgIGludCBjb3VudDE7CiAKLSAgICAgICAgICAgIGJ5dGVzdHJlYW0yX3Nl ZWsoJmdiLCBvZmZzZXRzW2NoYW5uZWxdLCBTRUVLX1NFVCk7CisgICAgICAgICAgICBieXRlc3Ry ZWFtMl9zZWVrKGdiLCBvZmZzZXRzW2NoYW5uZWxdLCBTRUVLX1NFVCk7CiAgICAgICAgICAgICBz YW1wbGVzQyA9IHNhbXBsZXNfcFtjaGFubmVsXTsKIAogICAgICAgICAgICAgaWYgKGF2Y3R4LT5j b2RlYy0+aWQgPT0gQVZfQ09ERUNfSURfQURQQ01fRUFfUjEpIHsKLSAgICAgICAgICAgICAgICBj dXJyZW50X3NhbXBsZSAgPSBzaWduX2V4dGVuZChieXRlc3RyZWFtMl9nZXRfbGUxNigmZ2IpLCAx Nik7Ci0gICAgICAgICAgICAgICAgcHJldmlvdXNfc2FtcGxlID0gc2lnbl9leHRlbmQoYnl0ZXN0 cmVhbTJfZ2V0X2xlMTYoJmdiKSwgMTYpOworICAgICAgICAgICAgICAgIGN1cnJlbnRfc2FtcGxl ICA9IHNpZ25fZXh0ZW5kKGJ5dGVzdHJlYW0yX2dldF9sZTE2KGdiKSwgMTYpOworICAgICAgICAg ICAgICAgIHByZXZpb3VzX3NhbXBsZSA9IHNpZ25fZXh0ZW5kKGJ5dGVzdHJlYW0yX2dldF9sZTE2 KGdiKSwgMTYpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBjdXJyZW50 X3NhbXBsZSAgPSBjLT5zdGF0dXNbY2hhbm5lbF0ucHJlZGljdG9yOwogICAgICAgICAgICAgICAg IHByZXZpb3VzX3NhbXBsZSA9IGMtPnN0YXR1c1tjaGFubmVsXS5wcmV2X3NhbXBsZTsKICAgICAg ICAgICAgIH0KIAogICAgICAgICAgICAgZm9yIChjb3VudDEgPSAwOyBjb3VudDEgPCBuYl9zYW1w bGVzIC8gMjg7IGNvdW50MSsrKSB7Ci0gICAgICAgICAgICAgICAgaW50IGJ5dGUgPSBieXRlc3Ry ZWFtMl9nZXRfYnl0ZSgmZ2IpOworICAgICAgICAgICAgICAgIGludCBieXRlID0gYnl0ZXN0cmVh bTJfZ2V0X2J5dGUoZ2IpOwogICAgICAgICAgICAgICAgIGlmIChieXRlID09IDB4RUUpIHsgIC8q IG9ubHkgc2VlbiBpbiBSMiBhbmQgUjMgKi8KLSAgICAgICAgICAgICAgICAgICAgY3VycmVudF9z YW1wbGUgID0gc2lnbl9leHRlbmQoYnl0ZXN0cmVhbTJfZ2V0X2JlMTYoJmdiKSwgMTYpOwotICAg ICAgICAgICAgICAgICAgICBwcmV2aW91c19zYW1wbGUgPSBzaWduX2V4dGVuZChieXRlc3RyZWFt Ml9nZXRfYmUxNigmZ2IpLCAxNik7CisgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRfc2FtcGxl ICA9IHNpZ25fZXh0ZW5kKGJ5dGVzdHJlYW0yX2dldF9iZTE2KGdiKSwgMTYpOworICAgICAgICAg ICAgICAgICAgICBwcmV2aW91c19zYW1wbGUgPSBzaWduX2V4dGVuZChieXRlc3RyZWFtMl9nZXRf YmUxNihnYiksIDE2KTsKIAogICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBjb3VudDIgPSAw OyBjb3VudDIgPCAyODsgY291bnQyKyspCi0gICAgICAgICAgICAgICAgICAgICAgICAqc2FtcGxl c0MrKyA9IHNpZ25fZXh0ZW5kKGJ5dGVzdHJlYW0yX2dldF9iZTE2KCZnYiksIDE2KTsKKyAgICAg ICAgICAgICAgICAgICAgICAgICpzYW1wbGVzQysrID0gc2lnbl9leHRlbmQoYnl0ZXN0cmVhbTJf Z2V0X2JlMTYoZ2IpLCAxNik7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg ICAgICAgICAgY29lZmYxID0gZWFfYWRwY21fdGFibGVbIGJ5dGUgPj4gNCAgICAgXTsKICAgICAg ICAgICAgICAgICAgICAgY29lZmYyID0gZWFfYWRwY21fdGFibGVbKGJ5dGUgPj4gNCkgKyA0XTsK QEAgLTE3ODAsNyArMTc2Nyw3IEBAIHN0YXRpYyBpbnQgYWRwY21fZGVjb2RlX2ZyYW1lKEFWQ29k ZWNDb250ZXh0ICphdmN0eCwgQVZGcmFtZSAqZnJhbWUsCiAgICAgICAgICAgICAgICAgICAgICAg ICBpZiAoY291bnQyICYgMSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0X3NhbXBs ZSA9ICh1bnNpZ25lZClzaWduX2V4dGVuZChieXRlLCAgICA0KSA8PCBzaGlmdDsKICAgICAgICAg ICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGUg PSBieXRlc3RyZWFtMl9nZXRfYnl0ZSgmZ2IpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg IGJ5dGUgPSBieXRlc3RyZWFtMl9nZXRfYnl0ZShnYik7CiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbmV4dF9zYW1wbGUgPSAodW5zaWduZWQpc2lnbl9leHRlbmQoYnl0ZSA+PiA0LCA0KSA8 PCBzaGlmdDsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KIApAQCAtMTgwNyw4ICsxNzk0LDgg QEAgc3RhdGljIGludCBhZHBjbV9kZWNvZGVfZnJhbWUoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LCBB VkZyYW1lICpmcmFtZSwKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIGZyYW1l LT5uYl9zYW1wbGVzID0gY291bnQgKiAyODsKLSAgICAgICAgYnl0ZXN0cmVhbTJfc2VlaygmZ2Is IDAsIFNFRUtfRU5EKTsKKyAgICAgICAgbmJfc2FtcGxlcyA9IGNvdW50ICogMjg7CisgICAgICAg IGJ5dGVzdHJlYW0yX3NlZWsoZ2IsIDAsIFNFRUtfRU5EKTsKICAgICAgICAgYnJlYWs7CiAgICAg fQogI2VuZGlmIC8qIENPTkZJR19BRFBDTV9FQV9SeF9ERUNPREVSICovCkBAIC0xODE3LDEyICsx ODA0LDEyIEBAIHN0YXRpYyBpbnQgYWRwY21fZGVjb2RlX2ZyYW1lKEFWQ29kZWNDb250ZXh0ICph dmN0eCwgQVZGcmFtZSAqZnJhbWUsCiAgICAgICAgICAgICBpbnQgY29lZmZbMl1bNF0sIHNoaWZ0 WzRdOwogICAgICAgICAgICAgaW50MTZfdCAqcyA9IHNhbXBsZXNfcFtjaGFubmVsXTsKICAgICAg ICAgICAgIGZvciAoaW50IG4gPSAwOyBuIDwgNDsgbisrLCBzICs9IDMyKSB7Ci0gICAgICAgICAg ICAgICAgaW50IHZhbCA9IHNpZ25fZXh0ZW5kKGJ5dGVzdHJlYW0yX2dldF9sZTE2dSgmZ2IpLCAx Nik7CisgICAgICAgICAgICAgICAgaW50IHZhbCA9IHNpZ25fZXh0ZW5kKGJ5dGVzdHJlYW0yX2dl dF9sZTE2dShnYiksIDE2KTsKICAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDI7 IGkrKykKICAgICAgICAgICAgICAgICAgICAgY29lZmZbaV1bbl0gPSBlYV9hZHBjbV90YWJsZVso dmFsJjB4MEYpKzQqaV07CiAgICAgICAgICAgICAgICAgc1swXSA9IHZhbCAmIH4weDBGOwogCi0g ICAgICAgICAgICAgICAgdmFsID0gc2lnbl9leHRlbmQoYnl0ZXN0cmVhbTJfZ2V0X2xlMTZ1KCZn YiksIDE2KTsKKyAgICAgICAgICAgICAgICB2YWwgPSBzaWduX2V4dGVuZChieXRlc3RyZWFtMl9n ZXRfbGUxNnUoZ2IpLCAxNik7CiAgICAgICAgICAgICAgICAgc2hpZnRbbl0gPSAyMCAtICh2YWwg JiAweDBGKTsKICAgICAgICAgICAgICAgICBzWzFdID0gdmFsICYgfjB4MEY7CiAgICAgICAgICAg ICB9CkBAIC0xODMxLDcgKzE4MTgsNyBAQCBzdGF0aWMgaW50IGFkcGNtX2RlY29kZV9mcmFtZShB VkNvZGVjQ29udGV4dCAqYXZjdHgsIEFWRnJhbWUgKmZyYW1lLAogICAgICAgICAgICAgICAgIHMg PSAmc2FtcGxlc19wW2NoYW5uZWxdW21dOwogICAgICAgICAgICAgICAgIGZvciAoaW50IG4gPSAw OyBuIDwgNDsgbisrLCBzICs9IDMyKSB7CiAgICAgICAgICAgICAgICAgICAgIGludCBsZXZlbCwg cHJlZDsKLSAgICAgICAgICAgICAgICAgICAgaW50IGJ5dGUgPSBieXRlc3RyZWFtMl9nZXRfYnl0 ZXUoJmdiKTsKKyAgICAgICAgICAgICAgICAgICAgaW50IGJ5dGUgPSBieXRlc3RyZWFtMl9nZXRf Ynl0ZXUoZ2IpOwogCiAgICAgICAgICAgICAgICAgICAgIGxldmVsID0gc2lnbl9leHRlbmQoYnl0 ZSA+PiA0LCA0KSAqICgxIDw8IHNoaWZ0W25dKTsKICAgICAgICAgICAgICAgICAgICAgcHJlZCAg PSBzWy0xXSAqIGNvZWZmWzBdW25dICsgc1stMl0gKiBjb2VmZlsxXVtuXTsKQEAgLTE4NDcsOCAr MTgzNCw4IEBAIHN0YXRpYyBpbnQgYWRwY21fZGVjb2RlX2ZyYW1lKEFWQ29kZWNDb250ZXh0ICph dmN0eCwgQVZGcmFtZSAqZnJhbWUsCiAgICAgQ0FTRShBRFBDTV9JTUFfQUNPUk4sCiAgICAgICAg IGZvciAoaW50IGNoYW5uZWwgPSAwOyBjaGFubmVsIDwgY2hhbm5lbHM7IGNoYW5uZWwrKykgewog ICAgICAgICAgICAgQURQQ01DaGFubmVsU3RhdHVzICpjcyA9ICZjLT5zdGF0dXNbY2hhbm5lbF07 Ci0gICAgICAgICAgICBjcy0+cHJlZGljdG9yICA9IHNpZ25fZXh0ZW5kKGJ5dGVzdHJlYW0yX2dl dF9sZTE2dSgmZ2IpLCAxNik7Ci0gICAgICAgICAgICBjcy0+c3RlcF9pbmRleCA9IGJ5dGVzdHJl YW0yX2dldF9sZTE2dSgmZ2IpICYgMHhGRjsKKyAgICAgICAgICAgIGNzLT5wcmVkaWN0b3IgID0g c2lnbl9leHRlbmQoYnl0ZXN0cmVhbTJfZ2V0X2xlMTZ1KGdiKSwgMTYpOworICAgICAgICAgICAg Y3MtPnN0ZXBfaW5kZXggPSBieXRlc3RyZWFtMl9nZXRfbGUxNnUoZ2IpICYgMHhGRjsKICAgICAg ICAgICAgIGlmIChjcy0+c3RlcF9pbmRleCA+IDg4dSl7CiAgICAgICAgICAgICAgICAgYXZfbG9n KGF2Y3R4LCBBVl9MT0dfRVJST1IsICJFUlJPUjogc3RlcF9pbmRleFslZF0gPSAlaVxuIiwKICAg ICAgICAgICAgICAgICAgICAgICAgY2hhbm5lbCwgY3MtPnN0ZXBfaW5kZXgpOwpAQCAtMTg1Niw3 ICsxODQzLDcgQEAgc3RhdGljIGludCBhZHBjbV9kZWNvZGVfZnJhbWUoQVZDb2RlY0NvbnRleHQg KmF2Y3R4LCBBVkZyYW1lICpmcmFtZSwKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAg ICBmb3IgKGludCBuID0gbmJfc2FtcGxlcyA+PiAoMSAtIHN0KTsgbiA+IDA7IG4tLSkgewotICAg ICAgICAgICAgaW50IGJ5dGUgPSBieXRlc3RyZWFtMl9nZXRfYnl0ZXUoJmdiKTsKKyAgICAgICAg ICAgIGludCBieXRlID0gYnl0ZXN0cmVhbTJfZ2V0X2J5dGV1KGdiKTsKICAgICAgICAgICAgICpz YW1wbGVzKysgPSBhZHBjbV9pbWFfZXhwYW5kX25pYmJsZSgmYy0+c3RhdHVzWzBdLCAgYnl0ZSAm IDB4MEYsIDMpOwogICAgICAgICAgICAgKnNhbXBsZXMrKyA9IGFkcGNtX2ltYV9leHBhbmRfbmli YmxlKCZjLT5zdGF0dXNbc3RdLCBieXRlID4+IDQsICAgMyk7CiAgICAgICAgIH0KQEAgLTE4NzQs OSArMTg2MSw5IEBAIHN0YXRpYyBpbnQgYWRwY21fZGVjb2RlX2ZyYW1lKEFWQ29kZWNDb250ZXh0 ICphdmN0eCwgQVZGcmFtZSAqZnJhbWUsCiAgICAgICAgICAqIFNvbWUgaW1wbGVtZW50YXRpb25z IGhhdmUgc3RlcF9pbmRleCBhcyAxNi1iaXRzLCBidXQgb3RoZXJzCiAgICAgICAgICAqIG9ubHkg dXNlIHRoZSBsb3dlciA4IGFuZCBzdG9yZSBnYXJiYWdlIGluIHRoZSB1cHBlciA4LgogICAgICAg ICAgKi8KLSAgICAgICAgYy0+c3RhdHVzWzBdLnByZWRpY3RvciA9IHNpZ25fZXh0ZW5kKGJ5dGVz dHJlYW0yX2dldF9sZTE2dSgmZ2IpLCAxNik7Ci0gICAgICAgIGMtPnN0YXR1c1swXS5zdGVwX2lu ZGV4ID0gYnl0ZXN0cmVhbTJfZ2V0X2J5dGV1KCZnYik7Ci0gICAgICAgIGJ5dGVzdHJlYW0yX3Nr aXB1KCZnYiwgNSk7CisgICAgICAgIGMtPnN0YXR1c1swXS5wcmVkaWN0b3IgPSBzaWduX2V4dGVu ZChieXRlc3RyZWFtMl9nZXRfbGUxNnUoZ2IpLCAxNik7CisgICAgICAgIGMtPnN0YXR1c1swXS5z dGVwX2luZGV4ID0gYnl0ZXN0cmVhbTJfZ2V0X2J5dGV1KGdiKTsKKyAgICAgICAgYnl0ZXN0cmVh bTJfc2tpcHUoZ2IsIDUpOwogICAgICAgICBpZiAoYy0+c3RhdHVzWzBdLnN0ZXBfaW5kZXggPiA4 OHUpIHsKICAgICAgICAgICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX0VSUk9SLCAiRVJST1I6IHN0 ZXBfaW5kZXggPSAlaVxuIiwKICAgICAgICAgICAgICAgICAgICBjLT5zdGF0dXNbMF0uc3RlcF9p bmRleCk7CkBAIC0xODg0LDE0ICsxODcxLDE0IEBAIHN0YXRpYyBpbnQgYWRwY21fZGVjb2RlX2Zy YW1lKEFWQ29kZWNDb250ZXh0ICphdmN0eCwgQVZGcmFtZSAqZnJhbWUsCiAgICAgICAgIH0KIAog ICAgICAgICBmb3IgKGludCBuID0gbmJfc2FtcGxlcyA+PiAxOyBuID4gMDsgbi0tKSB7Ci0gICAg ICAgICAgICBpbnQgdiA9IGJ5dGVzdHJlYW0yX2dldF9ieXRldSgmZ2IpOworICAgICAgICAgICAg aW50IHYgPSBieXRlc3RyZWFtMl9nZXRfYnl0ZXUoZ2IpOwogCiAgICAgICAgICAgICAqc2FtcGxl cysrID0gYWRwY21faW1hX2V4cGFuZF9uaWJibGUoJmMtPnN0YXR1c1swXSwgdiA+PiA0LCAzKTsK ICAgICAgICAgICAgICpzYW1wbGVzKysgPSBhZHBjbV9pbWFfZXhwYW5kX25pYmJsZSgmYy0+c3Rh dHVzWzBdLCB2ICYgMHhmLCAzKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChuYl9zYW1wbGVz ICYgMSkgewotICAgICAgICAgICAgaW50IHYgPSBieXRlc3RyZWFtMl9nZXRfYnl0ZXUoJmdiKTsK KyAgICAgICAgICAgIGludCB2ID0gYnl0ZXN0cmVhbTJfZ2V0X2J5dGV1KGdiKTsKICAgICAgICAg ICAgICpzYW1wbGVzKysgPSBhZHBjbV9pbWFfZXhwYW5kX25pYmJsZSgmYy0+c3RhdHVzWzBdLCB2 ID4+IDQsIDMpOwogCiAgICAgICAgICAgICBpZiAodiAmIDB4MEYpIHsKQEAgLTE5MDMsOSArMTg5 MCw5IEBAIHN0YXRpYyBpbnQgYWRwY21fZGVjb2RlX2ZyYW1lKEFWQ29kZWNDb250ZXh0ICphdmN0 eCwgQVZGcmFtZSAqZnJhbWUsCiAgICAgICAgICkgLyogRW5kIG9mIENBU0UgKi8KICAgICBDQVNF KEFEUENNX0lNQV9TTUpQRUcsCiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY2hhbm5lbHM7 IGkrKykgewotICAgICAgICAgICAgYy0+c3RhdHVzW2ldLnByZWRpY3RvciA9IHNpZ25fZXh0ZW5k KGJ5dGVzdHJlYW0yX2dldF9iZTE2dSgmZ2IpLCAxNik7Ci0gICAgICAgICAgICBjLT5zdGF0dXNb aV0uc3RlcF9pbmRleCA9IGJ5dGVzdHJlYW0yX2dldF9ieXRldSgmZ2IpOwotICAgICAgICAgICAg Ynl0ZXN0cmVhbTJfc2tpcHUoJmdiLCAxKTsKKyAgICAgICAgICAgIGMtPnN0YXR1c1tpXS5wcmVk aWN0b3IgPSBzaWduX2V4dGVuZChieXRlc3RyZWFtMl9nZXRfYmUxNnUoZ2IpLCAxNik7CisgICAg ICAgICAgICBjLT5zdGF0dXNbaV0uc3RlcF9pbmRleCA9IGJ5dGVzdHJlYW0yX2dldF9ieXRldShn Yik7CisgICAgICAgICAgICBieXRlc3RyZWFtMl9za2lwdShnYiwgMSk7CiAgICAgICAgICAgICBp ZiAoYy0+c3RhdHVzW2ldLnN0ZXBfaW5kZXggPiA4OHUpIHsKICAgICAgICAgICAgICAgICBhdl9s b2coYXZjdHgsIEFWX0xPR19FUlJPUiwgIkVSUk9SOiBzdGVwX2luZGV4ID0gJWlcbiIsCiAgICAg ICAgICAgICAgICAgICAgICAgIGMtPnN0YXR1c1tpXS5zdGVwX2luZGV4KTsKQEAgLTE5MTQsNyAr MTkwMSw3IEBAIHN0YXRpYyBpbnQgYWRwY21fZGVjb2RlX2ZyYW1lKEFWQ29kZWNDb250ZXh0ICph dmN0eCwgQVZGcmFtZSAqZnJhbWUsCiAgICAgICAgIH0KIAogICAgICAgICBmb3IgKGludCBuID0g bmJfc2FtcGxlcyA+PiAoMSAtIHN0KTsgbiA+IDA7IG4tLSkgewotICAgICAgICAgICAgaW50IHYg PSBieXRlc3RyZWFtMl9nZXRfYnl0ZXUoJmdiKTsKKyAgICAgICAgICAgIGludCB2ID0gYnl0ZXN0 cmVhbTJfZ2V0X2J5dGV1KGdiKTsKIAogICAgICAgICAgICAgKnNhbXBsZXMrKyA9IGFkcGNtX2lt YV9xdF9leHBhbmRfbmliYmxlKCZjLT5zdGF0dXNbMCBdLCB2ID4+IDQgKTsKICAgICAgICAgICAg ICpzYW1wbGVzKysgPSBhZHBjbV9pbWFfcXRfZXhwYW5kX25pYmJsZSgmYy0+c3RhdHVzW3N0XSwg diAmIDB4Zik7CkBAIC0xOTIyLDcgKzE5MDksNyBAQCBzdGF0aWMgaW50IGFkcGNtX2RlY29kZV9m cmFtZShBVkNvZGVjQ29udGV4dCAqYXZjdHgsIEFWRnJhbWUgKmZyYW1lLAogICAgICAgICApIC8q IEVuZCBvZiBDQVNFICovCiAgICAgQ0FTRShBRFBDTV9DVCwKICAgICAgICAgZm9yIChpbnQgbiA9 IG5iX3NhbXBsZXMgPj4gKDEgLSBzdCk7IG4gPiAwOyBuLS0pIHsKLSAgICAgICAgICAgIGludCB2 ID0gYnl0ZXN0cmVhbTJfZ2V0X2J5dGV1KCZnYik7CisgICAgICAgICAgICBpbnQgdiA9IGJ5dGVz dHJlYW0yX2dldF9ieXRldShnYik7CiAgICAgICAgICAgICAqc2FtcGxlcysrID0gYWRwY21fY3Rf ZXhwYW5kX25pYmJsZSgmYy0+c3RhdHVzWzAgXSwgdiA+PiA0ICApOwogICAgICAgICAgICAgKnNh bXBsZXMrKyA9IGFkcGNtX2N0X2V4cGFuZF9uaWJibGUoJmMtPnN0YXR1c1tzdF0sIHYgJiAweDBG KTsKICAgICAgICAgfQpAQCAtMTkzNCwxNSArMTkyMSwxNSBAQCBzdGF0aWMgaW50IGFkcGNtX2Rl Y29kZV9mcmFtZShBVkNvZGVjQ29udGV4dCAqYXZjdHgsIEFWRnJhbWUgKmZyYW1lLAogICAgIGNh c2UgQVZfQ09ERUNfSURfQURQQ01fU0JQUk9fMjoKICAgICAgICAgaWYgKCFjLT5zdGF0dXNbMF0u c3RlcF9pbmRleCkgewogICAgICAgICAgICAgLyogdGhlIGZpcnN0IGJ5dGUgaXMgYSByYXcgc2Ft cGxlICovCi0gICAgICAgICAgICAqc2FtcGxlcysrID0gMTI4ICogKGJ5dGVzdHJlYW0yX2dldF9i eXRldSgmZ2IpIC0gMHg4MCk7CisgICAgICAgICAgICAqc2FtcGxlcysrID0gMTI4ICogKGJ5dGVz dHJlYW0yX2dldF9ieXRldShnYikgLSAweDgwKTsKICAgICAgICAgICAgIGlmIChzdCkKLSAgICAg ICAgICAgICAgICAqc2FtcGxlcysrID0gMTI4ICogKGJ5dGVzdHJlYW0yX2dldF9ieXRldSgmZ2Ip IC0gMHg4MCk7CisgICAgICAgICAgICAgICAgKnNhbXBsZXMrKyA9IDEyOCAqIChieXRlc3RyZWFt Ml9nZXRfYnl0ZXUoZ2IpIC0gMHg4MCk7CiAgICAgICAgICAgICBjLT5zdGF0dXNbMF0uc3RlcF9p bmRleCA9IDE7CiAgICAgICAgICAgICBuYl9zYW1wbGVzLS07CiAgICAgICAgIH0KICAgICAgICAg aWYgKGF2Y3R4LT5jb2RlYy0+aWQgPT0gQVZfQ09ERUNfSURfQURQQ01fU0JQUk9fNCkgewogICAg ICAgICAgICAgZm9yIChpbnQgbiA9IG5iX3NhbXBsZXMgPj4gKDEgLSBzdCk7IG4gPiAwOyBuLS0p IHsKLSAgICAgICAgICAgICAgICBpbnQgYnl0ZSA9IGJ5dGVzdHJlYW0yX2dldF9ieXRldSgmZ2Ip OworICAgICAgICAgICAgICAgIGludCBieXRlID0gYnl0ZXN0cmVhbTJfZ2V0X2J5dGV1KGdiKTsK ICAgICAgICAgICAgICAgICAqc2FtcGxlcysrID0gYWRwY21fc2Jwcm9fZXhwYW5kX25pYmJsZSgm Yy0+c3RhdHVzWzBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGJ5dGUgPj4gNCwgICA0LCAwKTsKICAgICAgICAgICAgICAgICAqc2FtcGxl cysrID0gYWRwY21fc2Jwcm9fZXhwYW5kX25pYmJsZSgmYy0+c3RhdHVzW3N0XSwKQEAgLTE5NTAs NyArMTkzNyw3IEBAIHN0YXRpYyBpbnQgYWRwY21fZGVjb2RlX2ZyYW1lKEFWQ29kZWNDb250ZXh0 ICphdmN0eCwgQVZGcmFtZSAqZnJhbWUsCiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSBp ZiAoYXZjdHgtPmNvZGVjLT5pZCA9PSBBVl9DT0RFQ19JRF9BRFBDTV9TQlBST18zKSB7CiAgICAg ICAgICAgICBmb3IgKGludCBuID0gKG5iX3NhbXBsZXM8PHN0KSAvIDM7IG4gPiAwOyBuLS0pIHsK LSAgICAgICAgICAgICAgICBpbnQgYnl0ZSA9IGJ5dGVzdHJlYW0yX2dldF9ieXRldSgmZ2IpOwor ICAgICAgICAgICAgICAgIGludCBieXRlID0gYnl0ZXN0cmVhbTJfZ2V0X2J5dGV1KGdiKTsKICAg ICAgICAgICAgICAgICAqc2FtcGxlcysrID0gYWRwY21fc2Jwcm9fZXhwYW5kX25pYmJsZSgmYy0+ c3RhdHVzWzBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBieXRlID4+IDUgICAgICAgICwgMywgMCk7CiAgICAgICAgICAgICAgICAgKnNh bXBsZXMrKyA9IGFkcGNtX3NicHJvX2V4cGFuZF9uaWJibGUoJmMtPnN0YXR1c1swXSwKQEAgLTE5 NjAsNyArMTk0Nyw3IEBAIHN0YXRpYyBpbnQgYWRwY21fZGVjb2RlX2ZyYW1lKEFWQ29kZWNDb250 ZXh0ICphdmN0eCwgQVZGcmFtZSAqZnJhbWUsCiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxz ZSB7CiAgICAgICAgICAgICBmb3IgKGludCBuID0gbmJfc2FtcGxlcyA+PiAoMiAtIHN0KTsgbiA+ IDA7IG4tLSkgewotICAgICAgICAgICAgICAgIGludCBieXRlID0gYnl0ZXN0cmVhbTJfZ2V0X2J5 dGV1KCZnYik7CisgICAgICAgICAgICAgICAgaW50IGJ5dGUgPSBieXRlc3RyZWFtMl9nZXRfYnl0 ZXUoZ2IpOwogICAgICAgICAgICAgICAgICpzYW1wbGVzKysgPSBhZHBjbV9zYnByb19leHBhbmRf bmliYmxlKCZjLT5zdGF0dXNbMF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGJ5dGUgPj4gNiAgICAgICAgLCAyLCAyKTsKICAgICAgICAg ICAgICAgICAqc2FtcGxlcysrID0gYWRwY21fc2Jwcm9fZXhwYW5kX25pYmJsZSgmYy0+c3RhdHVz W3N0XSwKQEAgLTE5NzQsMTIgKzE5NjEsMTIgQEAgc3RhdGljIGludCBhZHBjbV9kZWNvZGVfZnJh bWUoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LCBBVkZyYW1lICpmcmFtZSwKICAgICAgICAgYnJlYWs7 CiAjZW5kaWYgLyogQ09ORklHX0FEUENNX1NCUFJPX3hfREVDT0RFUiAqLwogICAgIENBU0UoQURQ Q01fU1dGLAotICAgICAgICBhZHBjbV9zd2ZfZGVjb2RlKGF2Y3R4LCBidWYsIGJ1Zl9zaXplLCBz YW1wbGVzKTsKLSAgICAgICAgYnl0ZXN0cmVhbTJfc2VlaygmZ2IsIDAsIFNFRUtfRU5EKTsKKyAg ICAgICAgYWRwY21fc3dmX2RlY29kZShhdmN0eCwgZ2ItPmJ1ZmZlcl9zdGFydCwgYnl0ZXN0cmVh bTJfc2l6ZShnYiksIHNhbXBsZXMpOworICAgICAgICBieXRlc3RyZWFtMl9zZWVrKGdiLCAwLCBT RUVLX0VORCk7CiAgICAgICAgICkgLyogRW5kIG9mIENBU0UgKi8KICAgICBDQVNFKEFEUENNX1lB TUFIQSwKICAgICAgICAgZm9yIChpbnQgbiA9IG5iX3NhbXBsZXMgPj4gKDEgLSBzdCk7IG4gPiAw OyBuLS0pIHsKLSAgICAgICAgICAgIGludCB2ID0gYnl0ZXN0cmVhbTJfZ2V0X2J5dGV1KCZnYik7 CisgICAgICAgICAgICBpbnQgdiA9IGJ5dGVzdHJlYW0yX2dldF9ieXRldShnYik7CiAgICAgICAg ICAgICAqc2FtcGxlcysrID0gYWRwY21feWFtYWhhX2V4cGFuZF9uaWJibGUoJmMtPnN0YXR1c1sw IF0sIHYgJiAweDBGKTsKICAgICAgICAgICAgICpzYW1wbGVzKysgPSBhZHBjbV95YW1haGFfZXhw YW5kX25pYmJsZSgmYy0+c3RhdHVzW3N0XSwgdiA+PiA0ICApOwogICAgICAgICB9CkBAIC0xOTg4 LDcgKzE5NzUsNyBAQCBzdGF0aWMgaW50IGFkcGNtX2RlY29kZV9mcmFtZShBVkNvZGVjQ29udGV4 dCAqYXZjdHgsIEFWRnJhbWUgKmZyYW1lLAogICAgICAgICBmb3IgKGludCBjaGFubmVsID0gMDsg Y2hhbm5lbCA8IGNoYW5uZWxzOyBjaGFubmVsKyspIHsKICAgICAgICAgICAgIHNhbXBsZXMgPSBz YW1wbGVzX3BbY2hhbm5lbF07CiAgICAgICAgICAgICBmb3IgKGludCBuID0gbmJfc2FtcGxlcyA+ PiAxOyBuID4gMDsgbi0tKSB7Ci0gICAgICAgICAgICAgICAgaW50IHYgPSBieXRlc3RyZWFtMl9n ZXRfYnl0ZXUoJmdiKTsKKyAgICAgICAgICAgICAgICBpbnQgdiA9IGJ5dGVzdHJlYW0yX2dldF9i eXRldShnYik7CiAgICAgICAgICAgICAgICAgKnNhbXBsZXMrKyA9IGFkcGNtX3lhbWFoYV9leHBh bmRfbmliYmxlKCZjLT5zdGF0dXNbY2hhbm5lbF0sIHYgJiAweDBGKTsKICAgICAgICAgICAgICAg ICAqc2FtcGxlcysrID0gYWRwY21feWFtYWhhX2V4cGFuZF9uaWJibGUoJmMtPnN0YXR1c1tjaGFu bmVsXSwgdiA+PiA0ICApOwogICAgICAgICAgICAgfQpAQCAtMjAxNCw3ICsyMDAxLDcgQEAgc3Rh dGljIGludCBhZHBjbV9kZWNvZGVfZnJhbWUoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LCBBVkZyYW1l ICpmcmFtZSwKICAgICAgICAgICAgICAgICBzYW1wbGVzID0gc2FtcGxlc19wW2NoYW5uZWxdICsg bSAqIDE2OwogICAgICAgICAgICAgICAgIC8qIFJlYWQgaW4gZXZlcnkgc2FtcGxlIGZvciB0aGlz IGNoYW5uZWwuICAqLwogICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2FtcGxl c19wZXJfYmxvY2s7IGkrKykgewotICAgICAgICAgICAgICAgICAgICBpbnQgYnl0ZSA9IGJ5dGVz dHJlYW0yX2dldF9ieXRldSgmZ2IpOworICAgICAgICAgICAgICAgICAgICBpbnQgYnl0ZSA9IGJ5 dGVzdHJlYW0yX2dldF9ieXRldShnYik7CiAgICAgICAgICAgICAgICAgICAgIGludCBzY2FsZSA9 IDEgPDwgKGJ5dGUgPj4gNCk7CiAgICAgICAgICAgICAgICAgICAgIGludCBpbmRleCA9IGJ5dGUg JiAweGY7CiAgICAgICAgICAgICAgICAgICAgIGludCBmYWN0b3IxID0gYWZjX2NvZWZmc1swXVtp bmRleF07CkBAIC0yMDI3LDcgKzIwMTQsNyBAQCBzdGF0aWMgaW50IGFkcGNtX2RlY29kZV9mcmFt ZShBVkNvZGVjQ29udGV4dCAqYXZjdHgsIEFWRnJhbWUgKmZyYW1lLAogICAgICAgICAgICAgICAg ICAgICAgICAgaWYgKG4gJiAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FtcGxl ZGF0ID0gc2lnbl9leHRlbmQoYnl0ZSwgNCk7CiAgICAgICAgICAgICAgICAgICAgICAgICB9IGVs c2UgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGUgPSBieXRlc3RyZWFtMl9nZXRf Ynl0ZXUoJmdiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBieXRlID0gYnl0ZXN0cmVh bTJfZ2V0X2J5dGV1KGdiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYW1wbGVkYXQg PSBzaWduX2V4dGVuZChieXRlID4+IDQsIDQpOwogICAgICAgICAgICAgICAgICAgICAgICAgfQog CkBAIC0yMDQzLDcgKzIwMzAsNyBAQCBzdGF0aWMgaW50IGFkcGNtX2RlY29kZV9mcmFtZShBVkNv ZGVjQ29udGV4dCAqYXZjdHgsIEFWRnJhbWUgKmZyYW1lLAogICAgICAgICAgICAgICAgIGMtPnN0 YXR1c1tjaGFubmVsXS5zYW1wbGUyID0gcHJldjI7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K LSAgICAgICAgYnl0ZXN0cmVhbTJfc2VlaygmZ2IsIDAsIFNFRUtfRU5EKTsKKyAgICAgICAgYnl0 ZXN0cmVhbTJfc2VlayhnYiwgMCwgU0VFS19FTkQpOwogICAgICAgICApIC8qIEVuZCBvZiBDQVNF ICovCiAjaWYgQ09ORklHX0FEUENNX1RIUF9ERUNPREVSIHx8IENPTkZJR19BRFBDTV9USFBfTEVf REVDT0RFUgogICAgIGNhc2UgQVZfQ09ERUNfSURfQURQQ01fVEhQOgpAQCAtMjA1NCw4ICsyMDQx LDggQEAgc3RhdGljIGludCBhZHBjbV9kZWNvZGVfZnJhbWUoQVZDb2RlY0NvbnRleHQgKmF2Y3R4 LCBBVkZyYW1lICpmcmFtZSwKICNkZWZpbmUgVEhQX0dFVDE2KGcpIFwKICAgICBzaWduX2V4dGVu ZCggXAogICAgICAgICBhdmN0eC0+Y29kZWMtPmlkID09IEFWX0NPREVDX0lEX0FEUENNX1RIUF9M RSA/IFwKLSAgICAgICAgYnl0ZXN0cmVhbTJfZ2V0X2xlMTZ1KCYoZykpIDogXAotICAgICAgICBi eXRlc3RyZWFtMl9nZXRfYmUxNnUoJihnKSksIDE2KQorICAgICAgICBieXRlc3RyZWFtMl9nZXRf bGUxNnUoKGcpKSA6IFwKKyAgICAgICAgYnl0ZXN0cmVhbTJfZ2V0X2JlMTZ1KChnKSksIDE2KQog CiAgICAgICAgIGlmIChhdmN0eC0+ZXh0cmFkYXRhKSB7CiAgICAgICAgICAgICBHZXRCeXRlQ29u dGV4dCB0YjsKQEAgLTIwNjcsNyArMjA1NCw3IEBAIHN0YXRpYyBpbnQgYWRwY21fZGVjb2RlX2Zy YW1lKEFWQ29kZWNDb250ZXh0ICphdmN0eCwgQVZGcmFtZSAqZnJhbWUsCiAgICAgICAgICAgICBi eXRlc3RyZWFtMl9pbml0KCZ0YiwgYXZjdHgtPmV4dHJhZGF0YSwgYXZjdHgtPmV4dHJhZGF0YV9z aXplKTsKICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY2hhbm5lbHM7IGkrKykKICAg ICAgICAgICAgICAgICBmb3IgKGludCBuID0gMDsgbiA8IDE2OyBuKyspCi0gICAgICAgICAgICAg ICAgICAgIHRhYmxlW2ldW25dID0gVEhQX0dFVDE2KHRiKTsKKyAgICAgICAgICAgICAgICAgICAg dGFibGVbaV1bbl0gPSBUSFBfR0VUMTYoJnRiKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY2hhbm5lbHM7IGkrKykKICAgICAgICAgICAgICAgICBm b3IgKGludCBuID0gMDsgbiA8IDE2OyBuKyspCkBAIC0yMDgxLDcgKzIwNjgsNyBAQCBzdGF0aWMg aW50IGFkcGNtX2RlY29kZV9mcmFtZShBVkNvZGVjQ29udGV4dCAqYXZjdHgsIEFWRnJhbWUgKmZy YW1lLAogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBjLT5oYXNfc3RhdHVzID0g MTsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgYnl0ZXN0cmVhbTJfc2tp cCgmZ2IsIGNoYW5uZWxzICogNCk7CisgICAgICAgICAgICAgICAgYnl0ZXN0cmVhbTJfc2tpcChn YiwgY2hhbm5lbHMgKiA0KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCkBAIC0yMDkwLDcg KzIwNzcsNyBAQCBzdGF0aWMgaW50IGFkcGNtX2RlY29kZV9mcmFtZShBVkNvZGVjQ29udGV4dCAq YXZjdHgsIEFWRnJhbWUgKmZyYW1lLAogCiAgICAgICAgICAgICAvKiBSZWFkIGluIGV2ZXJ5IHNh bXBsZSBmb3IgdGhpcyBjaGFubmVsLiAgKi8KICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBp IDwgKG5iX3NhbXBsZXMgKyAxMykgLyAxNDsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgaW50IGJ5 dGUgPSBieXRlc3RyZWFtMl9nZXRfYnl0ZXUoJmdiKTsKKyAgICAgICAgICAgICAgICBpbnQgYnl0 ZSA9IGJ5dGVzdHJlYW0yX2dldF9ieXRldShnYik7CiAgICAgICAgICAgICAgICAgaW50IGluZGV4 ID0gKGJ5dGUgPj4gNCkgJiA3OwogICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBleHAgPSBi eXRlICYgMHgwRjsKICAgICAgICAgICAgICAgICBpbnQ2NF90IGZhY3RvcjEgPSB0YWJsZVtjaF1b aW5kZXggKiAyXTsKQEAgLTIxMDMsNyArMjA5MCw3IEBAIHN0YXRpYyBpbnQgYWRwY21fZGVjb2Rl X2ZyYW1lKEFWQ29kZWNDb250ZXh0ICphdmN0eCwgQVZGcmFtZSAqZnJhbWUsCiAgICAgICAgICAg ICAgICAgICAgIGlmIChuICYgMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgc2FtcGxlZGF0 ID0gc2lnbl9leHRlbmQoYnl0ZSwgNCk7CiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0g ICAgICAgICAgICAgICAgICAgICAgICBieXRlID0gYnl0ZXN0cmVhbTJfZ2V0X2J5dGV1KCZnYik7 CisgICAgICAgICAgICAgICAgICAgICAgICBieXRlID0gYnl0ZXN0cmVhbTJfZ2V0X2J5dGV1KGdi KTsKICAgICAgICAgICAgICAgICAgICAgICAgIHNhbXBsZWRhdCA9IHNpZ25fZXh0ZW5kKGJ5dGUg Pj4gNCwgNCk7CiAgICAgICAgICAgICAgICAgICAgIH0KIApAQCAtMjEyNiw5ICsyMTEzLDkgQEAg c3RhdGljIGludCBhZHBjbV9kZWNvZGVfZnJhbWUoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LCBBVkZy YW1lICpmcmFtZSwKICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbmJfc2FtcGxlcyAv IDI4OyBpKyspIHsKICAgICAgICAgICAgICAgICBpbnQgYnl0ZSwgaGVhZGVyOwogICAgICAgICAg ICAgICAgIGlmIChjaGFubmVsKQotICAgICAgICAgICAgICAgICAgICBieXRlc3RyZWFtMl9za2lw dSgmZ2IsIDEpOwotICAgICAgICAgICAgICAgIGhlYWRlciA9IGJ5dGVzdHJlYW0yX2dldF9ieXRl dSgmZ2IpOwotICAgICAgICAgICAgICAgIGJ5dGVzdHJlYW0yX3NraXB1KCZnYiwgMyAtIGNoYW5u ZWwpOworICAgICAgICAgICAgICAgICAgICBieXRlc3RyZWFtMl9za2lwdShnYiwgMSk7CisgICAg ICAgICAgICAgICAgaGVhZGVyID0gYnl0ZXN0cmVhbTJfZ2V0X2J5dGV1KGdiKTsKKyAgICAgICAg ICAgICAgICBieXRlc3RyZWFtMl9za2lwdShnYiwgMyAtIGNoYW5uZWwpOwogCiAgICAgICAgICAg ICAgICAgLyogRGVjb2RlIDI4IHNhbXBsZXMuICAqLwogICAgICAgICAgICAgICAgIGZvciAoaW50 IG4gPSAwOyBuIDwgMjg7IG4rKykgewpAQCAtMjE1MCw3ICsyMTM3LDcgQEAgc3RhdGljIGludCBh ZHBjbV9kZWNvZGVfZnJhbWUoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LCBBVkZyYW1lICpmcmFtZSwK IAogICAgICAgICAgICAgICAgICAgICBwcmV2ID0gYXZfY2xpcF9pbnRwMigocHJldiArIDB4MjAp ID4+IDYsIDIxKTsKIAotICAgICAgICAgICAgICAgICAgICBieXRlID0gYnl0ZXN0cmVhbTJfZ2V0 X2J5dGV1KCZnYik7CisgICAgICAgICAgICAgICAgICAgIGJ5dGUgPSBieXRlc3RyZWFtMl9nZXRf Ynl0ZXUoZ2IpOwogICAgICAgICAgICAgICAgICAgICBpZiAoIWNoYW5uZWwpCiAgICAgICAgICAg ICAgICAgICAgICAgICBzYW1wbGVkYXQgPSBzaWduX2V4dGVuZChieXRlLCA0KTsKICAgICAgICAg ICAgICAgICAgICAgZWxzZQpAQCAtMjE2MywxMSArMjE1MCwxMSBAQCBzdGF0aWMgaW50IGFkcGNt X2RlY29kZV9mcmFtZShBVkNvZGVjQ29udGV4dCAqYXZjdHgsIEFWRnJhbWUgKmZyYW1lLAogICAg ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICghY2hhbm5lbCkK LSAgICAgICAgICAgICAgICBieXRlc3RyZWFtMl9zZWVrKCZnYiwgMCwgU0VFS19TRVQpOworICAg ICAgICAgICAgICAgIGJ5dGVzdHJlYW0yX3NlZWsoZ2IsIDAsIFNFRUtfU0VUKTsKICAgICAgICAg fQogICAgICAgICApIC8qIEVuZCBvZiBDQVNFICovCiAgICAgQ0FTRShBRFBDTV9QU1gsCi0gICAg ICAgIGZvciAoaW50IGJsb2NrID0gMDsgYmxvY2sgPCBhdnBrdC0+c2l6ZSAvIEZGTUFYKGF2Y3R4 LT5ibG9ja19hbGlnbiwgMTYgKiBjaGFubmVscyk7IGJsb2NrKyspIHsKKyAgICAgICAgZm9yIChp bnQgYmxvY2sgPSAwOyBibG9jayA8IGJ5dGVzdHJlYW0yX3NpemUoZ2IpIC8gRkZNQVgoYXZjdHgt PmJsb2NrX2FsaWduLCAxNiAqIGNoYW5uZWxzKTsgYmxvY2srKykgewogICAgICAgICAgICAgaW50 IG5iX3NhbXBsZXNfcGVyX2Jsb2NrID0gMjggKiBGRk1BWChhdmN0eC0+YmxvY2tfYWxpZ24sIDE2 ICogY2hhbm5lbHMpIC8gKDE2ICogY2hhbm5lbHMpOwogICAgICAgICAgICAgZm9yIChpbnQgY2hh bm5lbCA9IDA7IGNoYW5uZWwgPCBjaGFubmVsczsgY2hhbm5lbCsrKSB7CiAgICAgICAgICAgICAg ICAgc2FtcGxlcyA9IHNhbXBsZXNfcFtjaGFubmVsXSArIGJsb2NrICogbmJfc2FtcGxlc19wZXJf YmxvY2s7CkBAIC0yMTc3LDEyICsyMTY0LDEyIEBAIHN0YXRpYyBpbnQgYWRwY21fZGVjb2RlX2Zy YW1lKEFWQ29kZWNDb250ZXh0ICphdmN0eCwgQVZGcmFtZSAqZnJhbWUsCiAgICAgICAgICAgICAg ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuYl9zYW1wbGVzX3Blcl9ibG9jayAvIDI4OyBpKyspIHsK ICAgICAgICAgICAgICAgICAgICAgaW50IGZpbHRlciwgc2hpZnQsIGZsYWcsIGJ5dGU7CiAKLSAg ICAgICAgICAgICAgICAgICAgZmlsdGVyID0gYnl0ZXN0cmVhbTJfZ2V0X2J5dGV1KCZnYik7Cisg ICAgICAgICAgICAgICAgICAgIGZpbHRlciA9IGJ5dGVzdHJlYW0yX2dldF9ieXRldShnYik7CiAg ICAgICAgICAgICAgICAgICAgIHNoaWZ0ICA9IGZpbHRlciAmIDB4ZjsKICAgICAgICAgICAgICAg ICAgICAgZmlsdGVyID0gZmlsdGVyID4+IDQ7CiAgICAgICAgICAgICAgICAgICAgIGlmIChmaWx0 ZXIgPj0gRkZfQVJSQVlfRUxFTVMoeGFfYWRwY21fdGFibGUpKQogICAgICAgICAgICAgICAgICAg ICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Ci0gICAgICAgICAgICAgICAgICAgIGZs YWcgICA9IGJ5dGVzdHJlYW0yX2dldF9ieXRldSgmZ2IpICYgMHg3OworICAgICAgICAgICAgICAg ICAgICBmbGFnICAgPSBieXRlc3RyZWFtMl9nZXRfYnl0ZXUoZ2IpICYgMHg3OwogCiAgICAgICAg ICAgICAgICAgICAgIC8qIERlY29kZSAyOCBzYW1wbGVzLiAgKi8KICAgICAgICAgICAgICAgICAg ICAgZm9yIChpbnQgbiA9IDA7IG4gPCAyODsgbisrKSB7CkBAIC0yMTkxLDcgKzIxNzgsNyBAQCBz dGF0aWMgaW50IGFkcGNtX2RlY29kZV9mcmFtZShBVkNvZGVjQ29udGV4dCAqYXZjdHgsIEFWRnJh bWUgKmZyYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4gJiAxKSB7CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc2NhbGUgPSBzaWduX2V4dGVuZChieXRlID4+IDQsIDQpOwog ICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICBieXRlICA9IGJ5dGVzdHJlYW0yX2dldF9ieXRldSgmZ2IpOworICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGJ5dGUgID0gYnl0ZXN0cmVhbTJfZ2V0X2J5dGV1KGdiKTsKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzY2FsZSA9IHNpZ25fZXh0ZW5kKGJ5dGUsIDQpOwogICAgICAg ICAgICAgICAgICAgICAgICAgfQogCkBAIC0yMjI1LDcgKzIyMTIsNyBAQCBzdGF0aWMgaW50IGFk cGNtX2RlY29kZV9mcmFtZShBVkNvZGVjQ29udGV4dCAqYXZjdHgsIEFWRnJhbWUgKmZyYW1lLAog ICAgICAgICAgKiBFYWNoIGJsb2NrIHJlbGllcyBvbiB0aGUgcHJldmlvdXMgdHdvIHNhbXBsZXMg b2YgZWFjaCBjaGFubmVsLgogICAgICAgICAgKiBUaGV5IHNob3VsZCBiZSAwIGluaXRpYWxseS4K ICAgICAgICAgICovCi0gICAgICAgIGZvciAoaW50IGJsb2NrID0gMDsgYmxvY2sgPCBhdnBrdC0+ c2l6ZSAvIGF2Y3R4LT5ibG9ja19hbGlnbjsgYmxvY2srKykgeworICAgICAgICBmb3IgKGludCBi bG9jayA9IDA7IGJsb2NrIDwgYnl0ZXN0cmVhbTJfc2l6ZShnYikgLyBhdmN0eC0+YmxvY2tfYWxp Z247IGJsb2NrKyspIHsKICAgICAgICAgICAgIGZvciAoaW50IGNoYW5uZWwgPSAwOyBjaGFubmVs IDwgYXZjdHgtPmNoX2xheW91dC5uYl9jaGFubmVsczsgY2hhbm5lbCsrKSB7CiAgICAgICAgICAg ICAgICAgQURQQ01DaGFubmVsU3RhdHVzICpjcyA9IGMtPnN0YXR1cyArIGNoYW5uZWw7CiAgICAg ICAgICAgICAgICAgaW50IGNvbnRyb2wsIHNoaWZ0OwpAQCAtMjIzMywxMSArMjIyMCwxMSBAQCBz dGF0aWMgaW50IGFkcGNtX2RlY29kZV9mcmFtZShBVkNvZGVjQ29udGV4dCAqYXZjdHgsIEFWRnJh bWUgKmZyYW1lLAogICAgICAgICAgICAgICAgIHNhbXBsZXMgPSBzYW1wbGVzX3BbY2hhbm5lbF0g KyBibG9jayAqIDMyOwogCiAgICAgICAgICAgICAgICAgLyogR2V0IHRoZSBjb250cm9sIGJ5dGUg YW5kIGRlY29kZSB0aGUgc2FtcGxlcywgMiBhdCBhIHRpbWUuICovCi0gICAgICAgICAgICAgICAg Y29udHJvbCA9IGJ5dGVzdHJlYW0yX2dldF9ieXRldSgmZ2IpOworICAgICAgICAgICAgICAgIGNv bnRyb2wgPSBieXRlc3RyZWFtMl9nZXRfYnl0ZXUoZ2IpOwogICAgICAgICAgICAgICAgIHNoaWZ0 ID0gKGNvbnRyb2wgPj4gNCkgKyAyOwogCiAgICAgICAgICAgICAgICAgZm9yIChpbnQgbiA9IDA7 IG4gPCAxNjsgbisrKSB7Ci0gICAgICAgICAgICAgICAgICAgIGludCBzYW1wbGUgPSBieXRlc3Ry ZWFtMl9nZXRfYnl0ZXUoJmdiKTsKKyAgICAgICAgICAgICAgICAgICAgaW50IHNhbXBsZSA9IGJ5 dGVzdHJlYW0yX2dldF9ieXRldShnYik7CiAgICAgICAgICAgICAgICAgICAgICpzYW1wbGVzKysg PSBmZl9hZHBjbV9hcmdvX2V4cGFuZF9uaWJibGUoY3MsIHNhbXBsZSA+PiA0LCBzaGlmdCwgY29u dHJvbCAmIDB4MDQpOwogICAgICAgICAgICAgICAgICAgICAqc2FtcGxlcysrID0gZmZfYWRwY21f YXJnb19leHBhbmRfbmliYmxlKGNzLCBzYW1wbGUgPj4gMCwgc2hpZnQsIGNvbnRyb2wgJiAweDA0 KTsKICAgICAgICAgICAgICAgICB9CkBAIC0yMjQ2LDE0ICsyMjMzLDE0IEBAIHN0YXRpYyBpbnQg YWRwY21fZGVjb2RlX2ZyYW1lKEFWQ29kZWNDb250ZXh0ICphdmN0eCwgQVZGcmFtZSAqZnJhbWUs CiAgICAgICAgICkgLyogRW5kIG9mIENBU0UgKi8KICAgICBDQVNFKEFEUENNX1pPUkssCiAgICAg ICAgIGZvciAoaW50IG4gPSAwOyBuIDwgbmJfc2FtcGxlcyAqIGNoYW5uZWxzOyBuKyspIHsKLSAg ICAgICAgICAgIGludCB2ID0gYnl0ZXN0cmVhbTJfZ2V0X2J5dGV1KCZnYik7CisgICAgICAgICAg ICBpbnQgdiA9IGJ5dGVzdHJlYW0yX2dldF9ieXRldShnYik7CiAgICAgICAgICAgICAqc2FtcGxl cysrID0gYWRwY21fem9ya19leHBhbmRfbmliYmxlKCZjLT5zdGF0dXNbbiAlIGNoYW5uZWxzXSwg dik7CiAgICAgICAgIH0KICAgICAgICAgKSAvKiBFbmQgb2YgQ0FTRSAqLwogICAgIENBU0UoQURQ Q01fSU1BX01URiwKICAgICAgICAgZm9yIChpbnQgbiA9IG5iX3NhbXBsZXMgLyAyOyBuID4gMDsg bi0tKSB7CiAgICAgICAgICAgICBmb3IgKGludCBjaGFubmVsID0gMDsgY2hhbm5lbCA8IGNoYW5u ZWxzOyBjaGFubmVsKyspIHsKLSAgICAgICAgICAgICAgICBpbnQgdiA9IGJ5dGVzdHJlYW0yX2dl dF9ieXRldSgmZ2IpOworICAgICAgICAgICAgICAgIGludCB2ID0gYnl0ZXN0cmVhbTJfZ2V0X2J5 dGV1KGdiKTsKICAgICAgICAgICAgICAgICAqc2FtcGxlcysrICA9IGFkcGNtX2ltYV9tdGZfZXhw YW5kX25pYmJsZSgmYy0+c3RhdHVzW2NoYW5uZWxdLCB2ID4+IDQpOwogICAgICAgICAgICAgICAg IHNhbXBsZXNbc3RdID0gYWRwY21faW1hX210Zl9leHBhbmRfbmliYmxlKCZjLT5zdGF0dXNbY2hh bm5lbF0sIHYgJiAweDBGKTsKICAgICAgICAgICAgIH0KQEAgLTIyNjQsNiArMjI1MSw1MSBAQCBz dGF0aWMgaW50IGFkcGNtX2RlY29kZV9mcmFtZShBVkNvZGVjQ29udGV4dCAqYXZjdHgsIEFWRnJh bWUgKmZyYW1lLAogICAgICAgICBhdl9hc3NlcnQwKDApOyAvLyB1bnN1cHBvcnRlZCBjb2RlY19p ZCBzaG91bGQgbm90IGhhcHBlbgogICAgIH0KIAorICAgIHJldHVybiBuYl9zYW1wbGVzOworfQor CitzdGF0aWMgaW50IGFkcGNtX2RlY29kZV9mcmFtZShBVkNvZGVjQ29udGV4dCAqYXZjdHgsIEFW RnJhbWUgKmZyYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpnb3RfZnJh bWVfcHRyLCBBVlBhY2tldCAqYXZwa3QpCit7CisgICAgY29uc3QgdWludDhfdCAqYnVmID0gYXZw a3QtPmRhdGE7CisgICAgY29uc3QgaW50IGNoYW5uZWxzID0gYXZjdHgtPmNoX2xheW91dC5uYl9j aGFubmVsczsKKyAgICBpbnQgbmJfc2FtcGxlcywgY29kZWRfc2FtcGxlcywgYXBwcm94X25iX3Nh bXBsZXMsIHJldDsKKyAgICBpbnQgYnVmX3NpemUgPSBhdnBrdC0+c2l6ZTsKKyAgICBpbnQgbmJf YmxvY2tzID0gYXZjdHgtPmJsb2NrX2FsaWduID4gMCA/IEZGTUFYKDEsIGJ1Zl9zaXplIC8gYXZj dHgtPmJsb2NrX2FsaWduKSA6IDE7CisgICAgaW50MTZfdCAqZXh0ZW5kZWRfZGF0YVsxNF07Cisg ICAgaW50IGZyYW1lX25iX3NhbXBsZXMgPSAwOworICAgIEdldEJ5dGVDb250ZXh0IGdiOworCisg ICAgYnl0ZXN0cmVhbTJfaW5pdCgmZ2IsIGJ1ZiwgYnVmX3NpemUpOworCisgICAgbmJfc2FtcGxl cyA9IGdldF9uYl9zYW1wbGVzKGF2Y3R4LCAmZ2IsIGJ5dGVzdHJlYW0yX2dldF9ieXRlc19sZWZ0 KCZnYiksICZjb2RlZF9zYW1wbGVzLCAmYXBwcm94X25iX3NhbXBsZXMpOworICAgIGlmIChuYl9z YW1wbGVzIDw9IDApIHsKKyAgICAgICAgYXZfbG9nKGF2Y3R4LCBBVl9MT0dfRVJST1IsICJpbnZh bGlkIG51bWJlciBvZiBzYW1wbGVzIGluIHBhY2tldFxuIik7CisgICAgICAgIHJldHVybiBBVkVS Uk9SX0lOVkFMSUREQVRBOworICAgIH0KKworICAgIC8qIGdldCBvdXRwdXQgYnVmZmVyICovCisg ICAgZnJhbWUtPm5iX3NhbXBsZXMgPSBuYl9zYW1wbGVzICogbmJfYmxvY2tzOworICAgIGlmICgo cmV0ID0gZmZfZ2V0X2J1ZmZlcihhdmN0eCwgZnJhbWUsIDApKSA8IDApCisgICAgICAgIHJldHVy biByZXQ7CisKKyAgICBieXRlc3RyZWFtMl9zZWVrKCZnYiwgMCwgU0VFS19TRVQpOworICAgIGZv ciAoaW50IGJsb2NrID0gMDsgYmxvY2sgPCBuYl9ibG9ja3M7IGJsb2NrKyspIHsKKyAgICAgICAg Zm9yIChpbnQgY2ggPSAwOyBjaCA8IGNoYW5uZWxzOyBjaCsrKQorICAgICAgICAgICAgZXh0ZW5k ZWRfZGF0YVtjaF0gPSAoKGludDE2X3QgKilmcmFtZS0+ZXh0ZW5kZWRfZGF0YVtjaF0pICsgZnJh bWVfbmJfc2FtcGxlczsKKworICAgICAgICByZXQgPSBhZHBjbV9kZWNvZGVfYmxvY2soYXZjdHgs ICgoaW50MTZfdCAqKWZyYW1lLT5kYXRhWzBdKSArIGZyYW1lX25iX3NhbXBsZXMgKiBjaGFubmVs cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dGVuZGVkX2RhdGEsICZnYik7 CisgICAgICAgIGlmIChyZXQgPCAwKQorICAgICAgICAgICAgcmV0dXJuIHJldDsKKyAgICAgICAg ZnJhbWVfbmJfc2FtcGxlcyArPSByZXQ7CisKKyAgICAgICAgaWYgKGJ5dGVzdHJlYW0yX2dldF9i eXRlc19sZWZ0KCZnYikgPD0gMCkKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGZy YW1lLT5uYl9zYW1wbGVzID0gZnJhbWVfbmJfc2FtcGxlczsKKwogICAgIGlmIChhdnBrdC0+c2l6 ZSAmJiBieXRlc3RyZWFtMl90ZWxsKCZnYikgPT0gMCkgewogICAgICAgICBhdl9sb2coYXZjdHgs IEFWX0xPR19FUlJPUiwgIk5vdGhpbmcgY29uc3VtZWRcbiIpOwogICAgICAgICByZXR1cm4gQVZF UlJPUl9JTlZBTElEREFUQTsKQEAgLTIyNzEsMTAgKzIzMDMsOCBAQCBzdGF0aWMgaW50IGFkcGNt X2RlY29kZV9mcmFtZShBVkNvZGVjQ29udGV4dCAqYXZjdHgsIEFWRnJhbWUgKmZyYW1lLAogCiAg ICAgKmdvdF9mcmFtZV9wdHIgPSAxOwogCi0gICAgaWYgKGF2cGt0LT5zaXplIDwgYnl0ZXN0cmVh bTJfdGVsbCgmZ2IpKSB7CisgICAgaWYgKGF2cGt0LT5zaXplIDwgYnl0ZXN0cmVhbTJfdGVsbCgm Z2IpKQogICAgICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19FUlJPUiwgIk92ZXJyZWFkIG9mICVk IDwgJWRcbiIsIGF2cGt0LT5zaXplLCBieXRlc3RyZWFtMl90ZWxsKCZnYikpOwotICAgICAgICBy ZXR1cm4gYXZwa3QtPnNpemU7Ci0gICAgfQogCiAgICAgcmV0dXJuIGJ5dGVzdHJlYW0yX3RlbGwo JmdiKTsKIH0KZGlmZiAtLWdpdCBhL3Rlc3RzL3JlZi9mYXRlL2FkcGNtLWNyZWF0aXZlLTgtMi42 Yml0IGIvdGVzdHMvcmVmL2ZhdGUvYWRwY20tY3JlYXRpdmUtOC0yLjZiaXQKaW5kZXggODM1NzYw NDQ4Yi4uZjQ2MTlkMWM3YSAxMDA2NDQKLS0tIGEvdGVzdHMvcmVmL2ZhdGUvYWRwY20tY3JlYXRp dmUtOC0yLjZiaXQKKysrIGIvdGVzdHMvcmVmL2ZhdGUvYWRwY20tY3JlYXRpdmUtOC0yLjZiaXQK QEAgLTEgKzEgQEAKLWRlZTQ0MTc1OTdhYmMyZGI3MGExNzVkNjgwOTg3MGU3CisxYTNmY2U4NzQw ZjJkM2Y3YjIyYmE3ZGYyMzY5MWE2MwpkaWZmIC0tZ2l0IGEvdGVzdHMvcmVmL2ZhdGUvYWRwY20t Y3JlYXRpdmUtOC0yYml0IGIvdGVzdHMvcmVmL2ZhdGUvYWRwY20tY3JlYXRpdmUtOC0yYml0Cmlu ZGV4IDQxNjY4NDZkY2IuLmM3NDdjYmE1ZmMgMTAwNjQ0Ci0tLSBhL3Rlc3RzL3JlZi9mYXRlL2Fk cGNtLWNyZWF0aXZlLTgtMmJpdAorKysgYi90ZXN0cy9yZWYvZmF0ZS9hZHBjbS1jcmVhdGl2ZS04 LTJiaXQKQEAgLTEgKzEgQEAKLTgzMjg0NjA2NmZiY2UyODgyMWI3ZjA3MTdjNGQzYTkwCitkODE1 NjNkMWM0OTYwZjA2MDAzOGU5YjYyMDM3ZWNiYgpkaWZmIC0tZ2l0IGEvdGVzdHMvcmVmL2ZhdGUv YWRwY20tY3JlYXRpdmUtOC00Yml0IGIvdGVzdHMvcmVmL2ZhdGUvYWRwY20tY3JlYXRpdmUtOC00 Yml0CmluZGV4IDJkNTc5YWE5MWIuLmY2NmM1OWVjNWIgMTAwNjQ0Ci0tLSBhL3Rlc3RzL3JlZi9m YXRlL2FkcGNtLWNyZWF0aXZlLTgtNGJpdAorKysgYi90ZXN0cy9yZWYvZmF0ZS9hZHBjbS1jcmVh dGl2ZS04LTRiaXQKQEAgLTEgKzEgQEAKLTE4MTNkMTk2Y2VmODNmNzAzMGJiMTUwMzk5YjI5MDNl CithODliMjkxYjhhNmEzM2VkZjQ1OWE1NjY1NTU4N2RhNwpkaWZmIC0tZ2l0IGEvdGVzdHMvcmVm L2ZhdGUvYWRwY20tbXMtbW9ubyBiL3Rlc3RzL3JlZi9mYXRlL2FkcGNtLW1zLW1vbm8KaW5kZXgg OTgyM2JhNzdiNS4uMTA1MjE1NDhlZiAxMDA2NDQKLS0tIGEvdGVzdHMvcmVmL2ZhdGUvYWRwY20t bXMtbW9ubworKysgYi90ZXN0cy9yZWYvZmF0ZS9hZHBjbS1tcy1tb25vCkBAIC0zLDQ4ICszLDE4 IEBACiAjY29kZWNfaWQgMDogcGNtX3MxNmxlCiAjc2FtcGxlX3JhdGUgMDogMTEwMjUKICNjaGFu bmVsX2xheW91dF9uYW1lIDA6IG1vbm8KLTAsICAgICAgICAgIDAsICAgICAgICAgIDAsICAgICAg NTAwLCAgICAgMTAwMCwgMHg2NGNkOTQwMwotMCwgICAgICAgIDUwMCwgICAgICAgIDUwMCwgICAg ICA1MDAsICAgICAxMDAwLCAweGE0ZWY4YTlkCi0wLCAgICAgICAxMDAwLCAgICAgICAxMDAwLCAg ICAgIDUwMCwgICAgIDEwMDAsIDB4NzVjMTk4NjgKLTAsICAgICAgIDE1MDAsICAgICAgIDE1MDAs ICAgICAgNTAwLCAgICAgMTAwMCwgMHg5M2RiNmY3OQotMCwgICAgICAgMjAwMCwgICAgICAgMjAw MCwgICAgICA1MDAsICAgICAxMDAwLCAweDY4MzU2MjVkCi0wLCAgICAgICAyNTAwLCAgICAgICAy NTAwLCAgICAgIDUwMCwgICAgIDEwMDAsIDB4YjNhZmZhOGYKLTAsICAgICAgIDMwMDAsICAgICAg IDMwMDAsICAgICAgNTAwLCAgICAgMTAwMCwgMHgxNTlmZGNjOAotMCwgICAgICAgMzUwMCwgICAg ICAgMzUwMCwgICAgICA1MDAsICAgICAxMDAwLCAweDc5ZjlmN2YxCi0wLCAgICAgICA0MDAwLCAg ICAgICA0MDAwLCAgICAgIDUwMCwgICAgIDEwMDAsIDB4ZDdkMTEzMWUKLTAsICAgICAgIDQ1MDAs ICAgICAgIDQ1MDAsICAgICAgNTAwLCAgICAgMTAwMCwgMHg1MmE2Zjc5NwotMCwgICAgICAgNTAw MCwgICAgICAgNTAwMCwgICAgICA1MDAsICAgICAxMDAwLCAweDc0ODIwMmNhCi0wLCAgICAgICA1 NTAwLCAgICAgICA1NTAwLCAgICAgIDUwMCwgICAgIDEwMDAsIDB4MGVmOTI0NDkKLTAsICAgICAg IDYwMDAsICAgICAgIDYwMDAsICAgICAgNTAwLCAgICAgMTAwMCwgMHg2YTM3NjBhYgotMCwgICAg ICAgNjUwMCwgICAgICAgNjUwMCwgICAgICA1MDAsICAgICAxMDAwLCAweGNlNWM1YWJmCi0wLCAg ICAgICA3MDAwLCAgICAgICA3MDAwLCAgICAgIDUwMCwgICAgIDEwMDAsIDB4MjMzOTY3OTIKLTAs ICAgICAgIDc1MDAsICAgICAgIDc1MDAsICAgICAgNTAwLCAgICAgMTAwMCwgMHhhNTI3NjIzOAot MCwgICAgICAgODAwMCwgICAgICAgODAwMCwgICAgICA1MDAsICAgICAxMDAwLCAweDI4OGFkZjFi Ci0wLCAgICAgICA4NTAwLCAgICAgICA4NTAwLCAgICAgIDUwMCwgICAgIDEwMDAsIDB4ZTdkZTZm YjIKLTAsICAgICAgIDkwMDAsICAgICAgIDkwMDAsICAgICAgNTAwLCAgICAgMTAwMCwgMHgyYzJj NzA3ZgotMCwgICAgICAgOTUwMCwgICAgICAgOTUwMCwgICAgICA1MDAsICAgICAxMDAwLCAweGQ2 NmQ2ZGFmCi0wLCAgICAgIDEwMDAwLCAgICAgIDEwMDAwLCAgICAgIDUwMCwgICAgIDEwMDAsIDB4 YmNlYTdkNjQKLTAsICAgICAgMTA1MDAsICAgICAgMTA1MDAsICAgICAgNTAwLCAgICAgMTAwMCwg MHg3NjZmZWVhNQotMCwgICAgICAxMTAwMCwgICAgICAxMTAwMCwgICAgICA1MDAsICAgICAxMDAw LCAweGQyZTFkNjNhCi0wLCAgICAgIDExNTAwLCAgICAgIDExNTAwLCAgICAgIDUwMCwgICAgIDEw MDAsIDB4MmY3ZWY0ZWQKLTAsICAgICAgMTIwMDAsICAgICAgMTIwMDAsICAgICAgNTAwLCAgICAg MTAwMCwgMHhiNjU1Y2JhNAotMCwgICAgICAxMjUwMCwgICAgICAxMjUwMCwgICAgICA1MDAsICAg ICAxMDAwLCAweDQ1MDdkMzdiCi0wLCAgICAgIDEzMDAwLCAgICAgIDEzMDAwLCAgICAgIDUwMCwg ICAgIDEwMDAsIDB4MGM1N2Y3OTQKLTAsICAgICAgMTM1MDAsICAgICAgMTM1MDAsICAgICAgNTAw LCAgICAgMTAwMCwgMHgwZWNiZTVjYwotMCwgICAgICAxNDAwMCwgICAgICAxNDAwMCwgICAgICA1 MDAsICAgICAxMDAwLCAweDliZjZlMzQ1Ci0wLCAgICAgIDE0NTAwLCAgICAgIDE0NTAwLCAgICAg IDUwMCwgICAgIDEwMDAsIDB4YzQ2MTQ0M2MKLTAsICAgICAgMTUwMDAsICAgICAgMTUwMDAsICAg ICAgNTAwLCAgICAgMTAwMCwgMHhhZDk2NTdiZgotMCwgICAgICAxNTUwMCwgICAgICAxNTUwMCwg ICAgICA1MDAsICAgICAxMDAwLCAweDQ2NmZlOTFjCi0wLCAgICAgIDE2MDAwLCAgICAgIDE2MDAw LCAgICAgIDUwMCwgICAgIDEwMDAsIDB4OWVlMzc3ZmUKLTAsICAgICAgMTY1MDAsICAgICAgMTY1 MDAsICAgICAgNTAwLCAgICAgMTAwMCwgMHgwOTk1NjQyOAotMCwgICAgICAxNzAwMCwgICAgICAx NzAwMCwgICAgICA1MDAsICAgICAxMDAwLCAweDliMjg1ZjBhCi0wLCAgICAgIDE3NTAwLCAgICAg IDE3NTAwLCAgICAgIDUwMCwgICAgIDEwMDAsIDB4MGEzZTYxYTYKLTAsICAgICAgMTgwMDAsICAg ICAgMTgwMDAsICAgICAgNTAwLCAgICAgMTAwMCwgMHhhY2MyNWQ2YgotMCwgICAgICAxODUwMCwg ICAgICAxODUwMCwgICAgICA1MDAsICAgICAxMDAwLCAweDM3N2JlMzE5Ci0wLCAgICAgIDE5MDAw LCAgICAgIDE5MDAwLCAgICAgIDUwMCwgICAgIDEwMDAsIDB4ZTQ4OTA1MDQKLTAsICAgICAgMTk1 MDAsICAgICAgMTk1MDAsICAgICAgNTAwLCAgICAgMTAwMCwgMHhlOTBhNjQ5NwotMCwgICAgICAy MDAwMCwgICAgICAyMDAwMCwgICAgICA1MDAsICAgICAxMDAwLCAweGQwMGZlOTUwCi0wLCAgICAg IDIwNTAwLCAgICAgIDIwNTAwLCAgICAgIDUwMCwgICAgIDEwMDAsIDB4ZjE5NWViNDQKLTAsICAg ICAgMjEwMDAsICAgICAgMjEwMDAsICAgICAgNTAwLCAgICAgMTAwMCwgMHhhNDkxZjNlZgotMCwg ICAgICAyMTUwMCwgICAgICAyMTUwMCwgICAgICA1MDAsICAgICAxMDAwLCAweDJjMDM2ZTE4Ci0w LCAgICAgIDIyMDAwLCAgICAgIDIyMDAwLCAgICAgICA1MCwgICAgICAxMDAsIDB4MGJkODFmMDUK KzAsICAgICAgICAgIDAsICAgICAgICAgIDAsICAgICAxNTAwLCAgICAgMzAwMCwgMHhhZmMyYjcx NworMCwgICAgICAgMTUwMCwgICAgICAgMTUwMCwgICAgIDE1MDAsICAgICAzMDAwLCAweDE1ZmVj Yzc0CiswLCAgICAgICAzMDAwLCAgICAgICAzMDAwLCAgICAgMTUwMCwgICAgIDMwMDAsIDB4NjUz YWU3ZTYKKzAsICAgICAgIDQ1MDAsICAgICAgIDQ1MDAsICAgICAxNTAwLCAgICAgMzAwMCwgMHg3 OGU3MWViOQorMCwgICAgICAgNjAwMCwgICAgICAgNjAwMCwgICAgIDE1MDAsICAgICAzMDAwLCAw eDRlZWQyMzBiCiswLCAgICAgICA3NTAwLCAgICAgICA3NTAwLCAgICAgMTUwMCwgICAgIDMwMDAs IDB4ZWM5ZmIxMTQKKzAsICAgICAgIDkwMDAsICAgICAgIDkwMDAsICAgICAxNTAwLCAgICAgMzAw MCwgMHg1ZmZlNWJhMQorMCwgICAgICAxMDUwMCwgICAgICAxMDUwMCwgICAgIDE1MDAsICAgICAz MDAwLCAweDUyY2ZiOWVhCiswLCAgICAgIDEyMDAwLCAgICAgIDEyMDAwLCAgICAgMTUwMCwgICAg IDMwMDAsIDB4OWYxOTk2ZDEKKzAsICAgICAgMTM1MDAsICAgICAgMTM1MDAsICAgICAxNTAwLCAg ICAgMzAwMCwgMHgxYmJkMGQ2YgorMCwgICAgICAxNTAwMCwgICAgICAxNTAwMCwgICAgIDE1MDAs ICAgICAzMDAwLCAweDBhMWFiOGU4CiswLCAgICAgIDE2NTAwLCAgICAgIDE2NTAwLCAgICAgMTUw MCwgICAgIDMwMDAsIDB4YWEyOTI0ZTcKKzAsICAgICAgMTgwMDAsICAgICAgMTgwMDAsICAgICAx NTAwLCAgICAgMzAwMCwgMHgxNTNiNDU5NworMCwgICAgICAxOTUwMCwgICAgICAxOTUwMCwgICAg IDE1MDAsICAgICAzMDAwLCAweDRhN2EzOTQ5CiswLCAgICAgIDIxMDAwLCAgICAgIDIxMDAwLCAg ICAgMTA1MCwgICAgIDIxMDAsIDB4NDRiYzgxMWIKLS0gCjIuMzkuMQoK --000000000000b440000602f74874 Content-Type: text/x-patch; charset="US-ASCII"; name="0002-avcodec-utils-fix-duration-for-ADPCM_MS.patch" Content-Disposition: attachment; filename="0002-avcodec-utils-fix-duration-for-ADPCM_MS.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_llcf5qt72 RnJvbSBmZjkxM2ZhNmY5MWRiZTE3OTcyZjM5MDE3Y2I3NjZkNTE3ZWNmMDQ0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBQYXVsIEIgTWFob2wgPG9uZW1kYUBnbWFpbC5jb20+CkRhdGU6 IFR1ZSwgMTUgQXVnIDIwMjMgMTU6NTE6MTAgKzAyMDAKU3ViamVjdDogW1BBVENIIDIvNF0gYXZj b2RlYy91dGlsczogZml4IGR1cmF0aW9uIGZvciBBRFBDTV9NUwoKU2lnbmVkLW9mZi1ieTogUGF1 bCBCIE1haG9sIDxvbmVtZGFAZ21haWwuY29tPgotLS0KIGxpYmF2Y29kZWMvdXRpbHMuYyB8IDIg Ky0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAt LWdpdCBhL2xpYmF2Y29kZWMvdXRpbHMuYyBiL2xpYmF2Y29kZWMvdXRpbHMuYwppbmRleCBiZDQx MzFkYjYyLi42MWUyOTQ2YzE2IDEwMDY0NAotLS0gYS9saWJhdmNvZGVjL3V0aWxzLmMKKysrIGIv bGliYXZjb2RlYy91dGlscy5jCkBAIC03NDAsNyArNzQwLDcgQEAgc3RhdGljIGludCBnZXRfYXVk aW9fZnJhbWVfZHVyYXRpb24oZW51bSBBVkNvZGVjSUQgaWQsIGludCBzciwgaW50IGNoLCBpbnQg YmEsCiAgICAgICAgICAgICAgICAgICAgIHRtcCA9IGJsb2NrcyAqICgoYmEgLSA0TEwgKiBjaCkg KiAyIC8gY2gpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBj YXNlIEFWX0NPREVDX0lEX0FEUENNX01TOgotICAgICAgICAgICAgICAgICAgICB0bXAgPSBibG9j a3MgKiAoMiArIChiYSAtIDdMTCAqIGNoKSAqIDJMTCAvIGNoKTsKKyAgICAgICAgICAgICAgICAg ICAgdG1wID0gYmxvY2tzICogKChiYSAtIDZMTCAqIGNoKSAqIDJMTCAvIGNoKTsKICAgICAgICAg ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgY2FzZSBBVl9DT0RFQ19JRF9BRFBD TV9NVEFGOgogICAgICAgICAgICAgICAgICAgICB0bXAgPSBibG9ja3MgKiAoYmEgLSAxNkxMKSAq IDIgLyBjaDsKLS0gCjIuMzkuMQoK --000000000000b440000602f74874 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". --000000000000b440000602f74874--