From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 73D7DC41513 for ; Fri, 24 May 2024 17:31:58 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1sAYlO-00019O-R3; Fri, 24 May 2024 13:31:30 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1sAYlA-00012a-J6 for grub-devel@gnu.org; Fri, 24 May 2024 13:31:19 -0400 Received: from mail-lj1-x234.google.com ([2a00:1450:4864:20::234]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1sAYl8-0003OE-4b for grub-devel@gnu.org; Fri, 24 May 2024 13:31:16 -0400 Received: by mail-lj1-x234.google.com with SMTP id 38308e7fff4ca-2e73359b979so57233871fa.1 for ; Fri, 24 May 2024 10:31:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1716571871; x=1717176671; darn=gnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=bdBTNN9bKdv6opGXgS4W96Jeo8JB9gKE72psMZz4NDU=; b=I3TQxXdHJ6SHCPjw2Ueu/q89gkBd0mKfVZ1cAQ2jWFdY8KUfVWLBwYA7JWymNfGzZz jKR6ehStVzA6wS56psZYTMZ8D0hfm0alpPOlLNQCU6w8LZnVXTHATgivIv+0mbQK6T00 kL90W3tzXMewkBzIcHOMvagvLnJ5G4FWPqUPkx23qApLJCFivo9By7tRf2oR7gle7ZIu JbZb3s1IJhrf7Ne/3yMTunLwMu2sCeWaFkNBHslL4y8nBiwJshUkN8jl28UwvfUAhGYJ eyC+rdZdoXuG0j+pWJEOlIkWzymWRwRwnhtm5yFRJu1FhQJV74FCJsBniNP7h8q2tkBw CM+A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1716571871; x=1717176671; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=bdBTNN9bKdv6opGXgS4W96Jeo8JB9gKE72psMZz4NDU=; b=YPUsOmVay5fKwQqBVYYXfKkqvK9dPwTw/LB0ncpKmWzHGwbZyvuvcRIwihfTNA3fVb kFXeylHqcs8Q4QiisEDHAlfnKirtTV/JhqGiC3/HfXfCBreqt2wp+/Ym9OMOwcdOJufL mRjX00Dk/2YOZT0tz8+zUiI0e/NnCsePwPrLLOrYWRQRp0tOpdRmrkYwU2rIv3d0mYkW aPGrO509dfL/1lNOTS9AvphVBVsqZdksZ/mEsRxAbc88dkuU7JSt4hoHe/5pcvXGtOMF GGKTQXKfxgMTuACEQ2E4WtM2BOGLBLiai/GEZUxMX9Tve++065/b0DgVwu3+6gfxzp2d 7UxQ== X-Gm-Message-State: AOJu0YwOvvO6iSBhBIBIY1GzUepEPQK57uGiNsq515jw0Y44mwFLUph+ bVKUsuisoV+Jx9JnT+iuq4OuYJLKoDzrisZ/5DK1q5H7A3a80exbneCZIvTPLiPxlA== X-Google-Smtp-Source: AGHT+IHYUi4DQv9SVL+JpJMOWiAG+IJnCfO5tDNYOu38+0teNWIz48V4gK1wkkUTN86GGNENJxfCzQ== X-Received: by 2002:a2e:8796:0:b0:2e9:5263:36e9 with SMTP id 38308e7fff4ca-2e95b276558mr19229251fa.43.1716571870228; Fri, 24 May 2024 10:31:10 -0700 (PDT) Received: from localhost ([188.170.77.95]) by smtp.gmail.com with ESMTPSA id 38308e7fff4ca-2e95bcc487fsm2743551fa.24.2024.05.24.10.31.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 24 May 2024 10:31:09 -0700 (PDT) From: Vladimir Serbinenko To: grub-devel@gnu.org Cc: Vladimir Serbinenko Subject: [PATCH v3 2/5] Import b64dec from gpg-error Date: Fri, 24 May 2024 20:30:03 +0300 Message-Id: <20240524173007.988-2-phcoder@gmail.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20240524173007.988-1-phcoder@gmail.com> References: <20240524173007.988-1-phcoder@gmail.com> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::234; envelope-from=phcoder@gmail.com; helo=mail-lj1-x234.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: grub-devel@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: The development of GNU GRUB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: The development of GNU GRUB Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: grub-devel-bounces+grub-devel=archiver.kernel.org@gnu.org Sender: grub-devel-bounces+grub-devel=archiver.kernel.org@gnu.org LS0tCiBncnViLWNvcmUvbGliL2I2NGRlYy5jIHwgMjkzICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrCiAxIGZpbGUgY2hhbmdlZCwgMjkzIGluc2VydGlvbnMoKykKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBncnViLWNvcmUvbGliL2I2NGRlYy5jCgpkaWZmIC0tZ2l0IGEvZ3J1 Yi1jb3JlL2xpYi9iNjRkZWMuYyBiL2dydWItY29yZS9saWIvYjY0ZGVjLmMKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwLi44YWFmYTk3MDAKLS0tIC9kZXYvbnVsbAorKysgYi9n cnViLWNvcmUvbGliL2I2NGRlYy5jCkBAIC0wLDAgKzEsMjkzIEBACisvKiBiNjRkZWMuYyAtIFNp bXBsZSBCYXNlNjQgZGVjb2Rlci4KKyAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAxMSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAxMSwgMjAx NiBnMTAgQ29kZSBHbWJICisgKgorICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTGliZ3BnLWVycm9y LgorICoKKyAqIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0 ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNz ZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIuMSBvZgorICogdGhlIExpY2Vuc2Us IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBmaWxl IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBi dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50 eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFLiAgU2VlIHRoZQorICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt b3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0 aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMg cHJvZ3JhbTsgaWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyAq IFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBMR1BMLTIuMS1vci1sYXRlcgorICoKKyAqIFRoaXMg ZmlsZSB3YXMgb3JpZ2luYWxseSBhIHBhcnQgb2YgR251UEcuCisgKi8KKworI2luY2x1ZGUgPGNv bmZpZy5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVk ZSA8c3RyaW5nLmg+CisKKyNpbmNsdWRlIDxncnViL2NyeXB0by5oPgorCitzdHJ1Y3QgX2dwZ3J0 X2I2NHN0YXRlCit7CisgIGludCBpZHg7CisgIGludCBxdWFkX2NvdW50OworICBjaGFyICp0aXRs ZTsKKyAgdW5zaWduZWQgY2hhciByYWRidWZbNF07CisgIHVuc2lnbmVkIGludCBjcmM7CisgIGdw Z19lcnJfY29kZV90IGxhc3RlcnI7CisgIHVuc2lnbmVkIGludCBmbGFnczsKKyAgdW5zaWduZWQg aW50IHN0b3Bfc2VlbjoxOworICB1bnNpZ25lZCBpbnQgaW52YWxpZF9lbmNvZGluZzoxOworICB1 bnNpZ25lZCBpbnQgdXNpbmdfZGVjb2RlcjoxOworfTsKKworCisvKiBUaGUgcmV2ZXJzZSBiYXNl LTY0IGxpc3QgdXNlZCBmb3IgYmFzZS02NCBkZWNvZGluZy4gKi8KK3N0YXRpYyB1bnNpZ25lZCBj aGFyIGNvbnN0IGFzY3RvYmluWzEyOF0gPQorICB7CisgICAgMHhmZiwgMHhmZiwgMHhmZiwgMHhm ZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwKKyAgICAweGZmLCAweGZmLCAweGZmLCAweGZmLCAw eGZmLCAweGZmLCAweGZmLCAweGZmLAorICAgIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYs IDB4ZmYsIDB4ZmYsIDB4ZmYsCisgICAgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhm ZiwgMHhmZiwgMHhmZiwKKyAgICAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAw eGZmLCAweGZmLAorICAgIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4M2UsIDB4ZmYsIDB4ZmYsIDB4ZmYs IDB4M2YsCisgICAgMHgzNCwgMHgzNSwgMHgzNiwgMHgzNywgMHgzOCwgMHgzOSwgMHgzYSwgMHgz YiwKKyAgICAweDNjLCAweDNkLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLAor ICAgIDB4ZmYsIDB4MDAsIDB4MDEsIDB4MDIsIDB4MDMsIDB4MDQsIDB4MDUsIDB4MDYsCisgICAg MHgwNywgMHgwOCwgMHgwOSwgMHgwYSwgMHgwYiwgMHgwYywgMHgwZCwgMHgwZSwKKyAgICAweDBm LCAweDEwLCAweDExLCAweDEyLCAweDEzLCAweDE0LCAweDE1LCAweDE2LAorICAgIDB4MTcsIDB4 MTgsIDB4MTksIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsCisgICAgMHhmZiwgMHgxYSwg MHgxYiwgMHgxYywgMHgxZCwgMHgxZSwgMHgxZiwgMHgyMCwKKyAgICAweDIxLCAweDIyLCAweDIz LCAweDI0LCAweDI1LCAweDI2LCAweDI3LCAweDI4LAorICAgIDB4MjksIDB4MmEsIDB4MmIsIDB4 MmMsIDB4MmQsIDB4MmUsIDB4MmYsIDB4MzAsCisgICAgMHgzMSwgMHgzMiwgMHgzMywgMHhmZiwg MHhmZiwgMHhmZiwgMHhmZiwgMHhmZgorICB9OworCitlbnVtIGRlY29kZXJfc3RhdGVzCisgIHsK KyAgICBzX2luaXQsIHNfaWRsZSwgc19sZnNlZW4sIHNfYmVnaW5zZWVuLCBzX3dhaXRoZWFkZXIs IHNfd2FpdGJsYW5rLCBzX2JlZ2luLAorICAgIHNfYjY0XzAsIHNfYjY0XzEsIHNfYjY0XzIsIHNf YjY0XzMsCisgICAgc193YWl0ZW5kdGl0bGUsIHNfd2FpdGVuZAorICB9OworCisKKworLyogQWxs b2NhdGUgYW5kIGluaXRpYWxpemUgdGhlIGNvbnRleHQgZm9yIHRoZSBiYXNlNjQgZGVjb2Rlci4g IElmCisgICBUSVRMRSBpcyBOVUxMIGEgcGxhaW4gYmFzZTY0IGRlY29kaW5nIGlzIGRvbmUuICBJ ZiBpdCBpcyB0aGUgZW1wdHkKKyAgIHN0cmluZyB0aGUgZGVjb2RlciB3aWxsIHNraXAgZXZlcnl0 aGluZyB1bnRpbCBhICItLS0tLUJFR0lOICIgbGluZQorICAgaGFzIGJlZW4gc2VlbiwgZGVjb2Rp bmcgZW5kcyBhdCBhICItLS0tRU5EICIgbGluZS4gICovCitncGdydF9iNjRzdGF0ZV90CitncGdy dF9iNjRkZWNfc3RhcnQgKGNvbnN0IGNoYXIgKnRpdGxlKQoreworICBncGdydF9iNjRzdGF0ZV90 IHN0YXRlOworICBjaGFyICp0ID0gTlVMTDsKKworICBpZiAodGl0bGUpCisgICAgeworICAgICAg dCA9IGdydWJfc3RyZHVwICh0aXRsZSk7CisgICAgICBpZiAoIXQpCisgICAgICAgIHJldHVybiBO VUxMOworICAgIH0KKworICBzdGF0ZSA9IGdydWJfY2FsbG9jICgxLCBzaXplb2YgKHN0cnVjdCBf Z3BncnRfYjY0c3RhdGUpKTsKKyAgaWYgKCFzdGF0ZSkKKyAgICB7CisgICAgICBncnViX2ZyZWUg KHQpOworICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgIGlmICh0KQorICAgIHsKKyAgICAg IHN0YXRlLT50aXRsZSA9IHQ7CisgICAgICBzdGF0ZS0+aWR4ID0gc19pbml0OworICAgIH0KKyAg ZWxzZQorICAgIHN0YXRlLT5pZHggPSBzX2I2NF8wOworCisgIHN0YXRlLT51c2luZ19kZWNvZGVy ID0gMTsKKworICByZXR1cm4gc3RhdGU7Cit9CisKKworLyogRG8gaW4tcGxhY2UgZGVjb2Rpbmcg b2YgYmFzZS02NCBkYXRhIG9mIExFTkdUSCBpbiBCVUZGRVIuICBTdG9yZXMgdGhlCisgICBuZXcg bGVuZ3RoIG9mIHRoZSBidWZmZXIgYXQgUl9OQllURVMuICovCitncGdfZXJyX2NvZGVfdAorZ3Bn cnRfYjY0ZGVjX3Byb2MgKGdwZ3J0X2I2NHN0YXRlX3Qgc3RhdGUsIHZvaWQgKmJ1ZmZlciwgc2l6 ZV90IGxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICpyX25ieXRlcykKK3sKKyAg ZW51bSBkZWNvZGVyX3N0YXRlcyBkcyA9IHN0YXRlLT5pZHg7CisgIHVuc2lnbmVkIGNoYXIgdmFs ID0gc3RhdGUtPnJhZGJ1ZlswXTsKKyAgaW50IHBvcyA9IHN0YXRlLT5xdWFkX2NvdW50OworICBj aGFyICpkLCAqczsKKworICBpZiAoc3RhdGUtPmxhc3RlcnIpCisgICAgcmV0dXJuIHN0YXRlLT5s YXN0ZXJyOworCisgIGlmIChzdGF0ZS0+c3RvcF9zZWVuKQorICAgIHsKKyAgICAgICpyX25ieXRl cyA9IDA7CisgICAgICBzdGF0ZS0+bGFzdGVyciA9IEdQR19FUlJfRU9GOworICAgICAgZ3J1Yl9m cmVlIChzdGF0ZS0+dGl0bGUpOworICAgICAgc3RhdGUtPnRpdGxlID0gTlVMTDsKKyAgICAgIHJl dHVybiBzdGF0ZS0+bGFzdGVycjsKKyAgICB9CisKKyAgZm9yIChzPWQ9YnVmZmVyOyBsZW5ndGgg JiYgIXN0YXRlLT5zdG9wX3NlZW47IGxlbmd0aC0tLCBzKyspCisgICAgeworICAgIGFnYWluOgor ICAgICAgc3dpdGNoIChkcykKKyAgICAgICAgeworICAgICAgICBjYXNlIHNfaWRsZToKKyAgICAg ICAgICBpZiAoKnMgPT0gJ1xuJykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgZHMgPSBz X2xmc2VlbjsKKyAgICAgICAgICAgICAgcG9zID0gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAg ICBicmVhazsKKyAgICAgICAgY2FzZSBzX2luaXQ6CisgICAgICAgICAgZHMgPSBzX2xmc2VlbjsK KyAgICAgICAgICAvKiBGYWxsIHRocm91Z2ggKi8KKyAgICAgICAgY2FzZSBzX2xmc2VlbjoKKyAg ICAgICAgICBpZiAoKnMgIT0gIi0tLS0tQkVHSU4gIltwb3NdKQorICAgICAgICAgICAgeworICAg ICAgICAgICAgICBkcyA9IHNfaWRsZTsKKyAgICAgICAgICAgICAgZ290byBhZ2FpbjsKKyAgICAg ICAgICAgIH0KKyAgICAgICAgICBlbHNlIGlmIChwb3MgPT0gMTApCisgICAgICAgICAgICB7Cisg ICAgICAgICAgICAgIHBvcyA9IDA7CisgICAgICAgICAgICAgIGRzID0gc19iZWdpbnNlZW47Cisg ICAgICAgICAgICB9CisgICAgICAgICAgZWxzZQorICAgICAgICAgICAgcG9zKys7CisgICAgICAg ICAgYnJlYWs7CisgICAgICAgIGNhc2Ugc19iZWdpbnNlZW46CisgICAgICAgICAgaWYgKCpzICE9 ICJQR1AgIltwb3NdKQorICAgICAgICAgICAgZHMgPSBzX2JlZ2luOyAvKiBOb3QgYSBQR1AgYXJt b3IuICAqLworICAgICAgICAgIGVsc2UgaWYgKHBvcyA9PSAzKQorICAgICAgICAgICAgZHMgPSBz X3dhaXRoZWFkZXI7CisgICAgICAgICAgZWxzZQorICAgICAgICAgICAgcG9zKys7CisgICAgICAg ICAgYnJlYWs7CisgICAgICAgIGNhc2Ugc193YWl0aGVhZGVyOgorICAgICAgICAgIGlmICgqcyA9 PSAnXG4nKQorICAgICAgICAgICAgZHMgPSBzX3dhaXRibGFuazsKKyAgICAgICAgICBicmVhazsK KyAgICAgICAgY2FzZSBzX3dhaXRibGFuazoKKyAgICAgICAgICBpZiAoKnMgPT0gJ1xuJykKKyAg ICAgICAgICAgIGRzID0gc19iNjRfMDsgLyogYmxhbmsgbGluZSBmb3VuZC4gICovCisgICAgICAg ICAgZWxzZSBpZiAoKnMgPT0gJyAnIHx8ICpzID09ICdccicgfHwgKnMgPT0gJ1x0JykKKyAgICAg ICAgICAgIDsgLyogSWdub3JlIHNwYWNlcy4gKi8KKyAgICAgICAgICBlbHNlCisgICAgICAgICAg ICB7CisgICAgICAgICAgICAgIC8qIEFybW9yIGhlYWRlciBsaW5lLiAgTm90ZSB0aGF0IHdlIGRv bid0IGNhcmUgdGhhdCBvdXIKKyAgICAgICAgICAgICAgICogRlNNIGFjY2VwdHMgYSBoZWFkZXIg cHJlZml4ZWQgd2l0aCBzcGFjZXMuICAqLworICAgICAgICAgICAgICBkcyA9IHNfd2FpdGhlYWRl cjsgLyogV2FpdCBmb3IgbmV4dCBoZWFkZXIuICAqLworICAgICAgICAgICAgfQorICAgICAgICAg IGJyZWFrOworICAgICAgICBjYXNlIHNfYmVnaW46CisgICAgICAgICAgaWYgKCpzID09ICdcbicp CisgICAgICAgICAgICBkcyA9IHNfYjY0XzA7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh c2Ugc19iNjRfMDoKKyAgICAgICAgY2FzZSBzX2I2NF8xOgorICAgICAgICBjYXNlIHNfYjY0XzI6 CisgICAgICAgIGNhc2Ugc19iNjRfMzoKKyAgICAgICAgICB7CisgICAgICAgICAgICBpbnQgYzsK KworICAgICAgICAgICAgaWYgKCpzID09ICctJyAmJiBzdGF0ZS0+dGl0bGUpCisgICAgICAgICAg ICAgIHsKKyAgICAgICAgICAgICAgICAvKiBOb3QgYSB2YWxpZCBCYXNlNjQgY2hhcmFjdGVyOiBh c3N1bWUgZW5kCisgICAgICAgICAgICAgICAgICAgaGVhZGVyLiAgKi8KKyAgICAgICAgICAgICAg ICBkcyA9IHNfd2FpdGVuZDsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAo KnMgPT0gJz0nKQorICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgLyogUGFkIGNoYXJh Y3Rlcjogc3RvcCAqLworICAgICAgICAgICAgICAgIGlmIChkcyA9PSBzX2I2NF8xKQorICAgICAg ICAgICAgICAgICAgKmQrKyA9IHZhbDsKKyAgICAgICAgICAgICAgICBkcyA9IHN0YXRlLT50aXRs ZT8gc193YWl0ZW5kdGl0bGUgOiBzX3dhaXRlbmQ7CisgICAgICAgICAgICAgIH0KKyAgICAgICAg ICAgIGVsc2UgaWYgKCpzID09ICdcbicgfHwgKnMgPT0gJyAnIHx8ICpzID09ICdccicgfHwgKnMg PT0gJ1x0JykKKyAgICAgICAgICAgICAgOyAvKiBTa2lwIHdoaXRlIHNwYWNlcy4gKi8KKyAgICAg ICAgICAgIGVsc2UgaWYgKCAoKnMgJiAweDgwKQorICAgICAgICAgICAgICAgICAgICAgIHx8IChj ID0gYXNjdG9iaW5bKih1bnNpZ25lZCBjaGFyICopc10pID09IDI1NSkKKyAgICAgICAgICAgICAg eworICAgICAgICAgICAgICAgIC8qIFNraXAgaW52YWxpZCBlbmNvZGluZ3MuICAqLworICAgICAg ICAgICAgICAgIHN0YXRlLT5pbnZhbGlkX2VuY29kaW5nID0gMTsKKyAgICAgICAgICAgICAgfQor ICAgICAgICAgICAgZWxzZSBpZiAoZHMgPT0gc19iNjRfMCkKKyAgICAgICAgICAgICAgeworICAg ICAgICAgICAgICAgIHZhbCA9IGMgPDwgMjsKKyAgICAgICAgICAgICAgICBkcyA9IHNfYjY0XzE7 CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKGRzID09IHNfYjY0XzEpCisg ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB2YWwgfD0gKGM+PjQpJjM7CisgICAgICAg ICAgICAgICAgKmQrKyA9IHZhbDsKKyAgICAgICAgICAgICAgICB2YWwgPSAoYzw8NCkmMHhmMDsK KyAgICAgICAgICAgICAgICBkcyA9IHNfYjY0XzI7CisgICAgICAgICAgICAgIH0KKyAgICAgICAg ICAgIGVsc2UgaWYgKGRzID09IHNfYjY0XzIpCisgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg ICAgICB2YWwgfD0gKGM+PjIpJjE1OworICAgICAgICAgICAgICAgICpkKysgPSB2YWw7CisgICAg ICAgICAgICAgICAgdmFsID0gKGM8PDYpJjB4YzA7CisgICAgICAgICAgICAgICAgZHMgPSBzX2I2 NF8zOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgIHsK KyAgICAgICAgICAgICAgICB2YWwgfD0gYyYweDNmOworICAgICAgICAgICAgICAgICpkKysgPSB2 YWw7CisgICAgICAgICAgICAgICAgZHMgPSBzX2I2NF8wOworICAgICAgICAgICAgICB9CisgICAg ICAgICAgfQorICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIHNfd2FpdGVuZHRpdGxlOgor ICAgICAgICAgIGlmICgqcyA9PSAnLScpCisgICAgICAgICAgICBkcyA9IHNfd2FpdGVuZDsKKyAg ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBzX3dhaXRlbmQ6CisgICAgICAgICAgaWYgKCAq cyA9PSAnXG4nKQorICAgICAgICAgICAgc3RhdGUtPnN0b3Bfc2VlbiA9IDE7CisgICAgICAgICAg YnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgZ3J1Yl9mYXRhbCAoImludmFsaWQg c3RhdGUiKTsKKyAgICAgICAgfQorICAgIH0KKworCisgIHN0YXRlLT5pZHggPSBkczsKKyAgc3Rh dGUtPnJhZGJ1ZlswXSA9IHZhbDsKKyAgc3RhdGUtPnF1YWRfY291bnQgPSBwb3M7CisgICpyX25i eXRlcyA9IChkIC0oY2hhciopIGJ1ZmZlcik7CisgIHJldHVybiAwOworfQorCisKKy8qIFJldHVy biBhbiBlcnJvciBjb2RlIGluIGNhc2UgYW4gZW5jb2RpbmcgZXJyb3IgaGFzIGJlZW4gZm91bmQK KyAgIGR1cmluZyBkZWNvZGluZy4gKi8KK2dwZ19lcnJfY29kZV90CitncGdydF9iNjRkZWNfZmlu aXNoIChncGdydF9iNjRzdGF0ZV90IHN0YXRlKQoreworICBncGdfZXJyb3JfdCBlcnI7CisKKyAg aWYgKCFzdGF0ZSkKKyAgICByZXR1cm4gMDsgIC8qIEFscmVhZHkgcmVsZWFzZWQuICAqLworCisg IGlmICghc3RhdGUtPnVzaW5nX2RlY29kZXIpCisgICAgZXJyID0gR1BHX0VSUl9DT05GTElDVDsg IC8qIFN0YXRlIHdhcyBhbGxvY2F0ZWQgZm9yIHRoZSBlbmNvZGVyLiAgKi8KKyAgZWxzZSBpZiAo c3RhdGUtPmxhc3RlcnIpCisgICAgZXJyID0gc3RhdGUtPmxhc3RlcnI7CisgIGVsc2UKKyAgICB7 CisgICAgICBncnViX2ZyZWUgKHN0YXRlLT50aXRsZSk7CisgICAgICBlcnIgPSBzdGF0ZS0+aW52 YWxpZF9lbmNvZGluZz8gR1BHX0VSUl9CQURfREFUQSA6IDA7CisgICAgfQorICBncnViX2ZyZWUg KHN0YXRlKTsKKworICByZXR1cm4gZXJyOworfQotLSAKMi4zOS4yCgoKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KR3J1Yi1kZXZlbCBtYWlsaW5nIGxpc3QK R3J1Yi1kZXZlbEBnbnUub3JnCmh0dHBzOi8vbGlzdHMuZ251Lm9yZy9tYWlsbWFuL2xpc3RpbmZv L2dydWItZGV2ZWwK