From nobody Mon Feb 9 01:51:43 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1714938060684265.54032750297836; Sun, 5 May 2024 12:41:00 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1s3hib-0006zw-TL; Sun, 05 May 2024 15:40:17 -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 1s3g91-0001Kp-IS for qemu-devel@nongnu.org; Sun, 05 May 2024 13:59:27 -0400 Received: from mail.nppct.ru ([195.133.245.4]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1s3g8w-00015b-Dl for qemu-devel@nongnu.org; Sun, 05 May 2024 13:59:27 -0400 Received: from mail.nppct.ru (localhost [127.0.0.1]) by mail.nppct.ru (Postfix) with ESMTP id BAB491C21EE for ; Sun, 5 May 2024 20:59:05 +0300 (MSK) Received: from mail.nppct.ru ([127.0.0.1]) by mail.nppct.ru (mail.nppct.ru [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id UJM-yckjos70 for ; Sun, 5 May 2024 20:59:00 +0300 (MSK) Received: from [10.66.66.2] (unknown [176.222.55.70]) by mail.nppct.ru (Postfix) with ESMTPSA id E0ADF1C21CA; Sun, 5 May 2024 20:58:59 +0300 (MSK) Authentication-Results: mail.nppct.ru (amavisd-new); dkim=pass (1024-bit key) reason="pass (just generated, assumed good)" header.d=nppct.ru DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=nppct.ru; h= subject:subject:from:from:to:content-language:user-agent :mime-version:date:date:message-id:content-type:content-type; s= dkim; t=1714931940; x=1715795941; bh=HOnnFmCGWnyDiLRNiOX1E6aIF9V xjlASbO8gZu593GY=; b=g59hJPApxbCrKKa0hp0wvWQRcyE6UQs3WP5YpWMGAyP pz7svs/xd/FotQiYDFqqghHNN1oGmiILb4vj4nQXi8ufgT0XCZkpr/5aq4GzR19f SbKx9wBHPZu4pb92P5pibBlFpR+fNRQoUx3TVAwS8VuzsdYNFI/KVA0FnUV8PQRc = X-Virus-Scanned: Debian amavisd-new at mail.nppct.ru Content-Type: multipart/alternative; boundary="------------HgWSsB0QfRhUjR1G53jvsJpC" Message-ID: Date: Sun, 5 May 2024 20:58:59 +0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Content-Language: ru To: qemu-devel@nongnu.org Cc: sdl.qemu@linuxtesting.org From: Andrey Shumilin Subject: [sdl-qemu] [PATCH v1] /hw/intc/arm_gic WRONG ARGUMENTS Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=195.133.245.4; envelope-from=shum.sdl@nppct.ru; helo=mail.nppct.ru 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, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Mailman-Approved-At: Sun, 05 May 2024 15:40:12 -0400 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZM-MESSAGEID: 1714938066529100001 This is a multi-part message in MIME format. --------------HgWSsB0QfRhUjR1G53jvsJpC Content-Type: text/plain; charset="utf-8"; format="flowed" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 1. Possibly mismatched call arguments in function 'gic_apr_ns_view': 'cpu' and 'regno' passed in place of 'int regno' and 'int cpu'. 2. Possibly mismatched call arguments in function 'gic_apr_write_ns_view': 'cpu' and 'regno' passed in place of 'int regno' and 'int cpu'. Found by Linux Verification Center (linuxtesting.org) with SVACE. From 23b142f5046ba9d3aec57217f6d8f3127f9bff69 Mon Sep 17 00:00:00 2001 From: Andrey Shumilin Date: Sun, 5 May 2024 20:13:40 +0300 Subject: [PATCH] Patch hw/intc/arm_gic.c Signed-off-by: Andrey Shumilin Reviewed-by: Alex Benn=C3=A9e Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- =C2=A0hw/intc/arm_gic.c | 4 ++-- =C2=A01 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hw/intc/arm_gic.c b/hw/intc/arm_gic.c index 7a34bc0998..47f01e45e3 100644 --- a/hw/intc/arm_gic.c +++ b/hw/intc/arm_gic.c @@ -1658,7 +1658,7 @@ static MemTxResult gic_cpu_read(GICState *s, int=20 cpu, int offset, =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 *= data =3D s->h_apr[gic_get_vcpu_real_id(cpu)]; =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 } else if (gic_cpu_ns_acc= ess(s, cpu, attrs)) { =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 /= * NS view of GICC_APR is the top half of GIC_NSAPR */ -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 *data = =3D gic_apr_ns_view(s, regno, cpu); +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 *data = =3D gic_apr_ns_view(s, cpu, regno); =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 } else { =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 *= data =3D s->apr[regno][cpu]; =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 } @@ -1746,7 +1746,7 @@ static MemTxResult gic_cpu_write(GICState *s, int=20 cpu, int offset, =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 s= ->h_apr[gic_get_vcpu_real_id(cpu)] =3D value; =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 } else if (gic_cpu_ns_acc= ess(s, cpu, attrs)) { =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 /= * NS view of GICC_APR is the top half of GIC_NSAPR */ -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 gic_apr= _write_ns_view(s, regno, cpu, value); +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 gic_apr= _write_ns_view(s, cpu, regno, value); =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 } else { =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 s= ->apr[regno][cpu] =3D value; =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 } --------------HgWSsB0QfRhUjR1G53jvsJpC Content-Type: text/html; charset="utf-8" Content-Transfer-Encoding: base64 PCFET0NUWVBFIGh0bWw+CjxodG1sPgogIDxoZWFkPgoKICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNv bnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KICA8L2hlYWQ+ CiAgPGJvZHk+CiAgICA8b2w+CiAgICAgIDxsaT48c3BhbgpzdHlsZT0iY29sb3I6IHJnYigyNDYs IDI0NywgMjQ5KTsgZm9udC1mYW1pbHk6IFNlcmdvZS1VSTsgZm9udC1zaXplOiAxNHB4OyBmb250 LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgZm9udC12YXJp YW50LWNhcHM6IG5vcm1hbDsgZm9udC13ZWlnaHQ6IDQwMDsgbGV0dGVyLXNwYWNpbmc6IG5vcm1h bDsgb3JwaGFuczogMjsgdGV4dC1hbGlnbjogc3RhcnQ7IHRleHQtaW5kZW50OiAwcHg7IHRleHQt dHJhbnNmb3JtOiBub25lOyB3aWRvd3M6IDI7IHdvcmQtc3BhY2luZzogMHB4OyAtd2Via2l0LXRl eHQtc3Ryb2tlLXdpZHRoOiAwcHg7IHdoaXRlLXNwYWNlOiBub3JtYWw7IGJhY2tncm91bmQtY29s b3I6IHJnYig0NywgNTIsIDYwKTsgdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzczogaW5pdGlhbDsg dGV4dC1kZWNvcmF0aW9uLXN0eWxlOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tY29sb3I6IGlu aXRpYWw7IGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50OyBmbG9hdDogbm9uZTsiPlBvc3NpYmx5 CiAgICAgICAgICBtaXNtYXRjaGVkIGNhbGwgYXJndW1lbnRzIGluIGZ1bmN0aW9uICdnaWNfYXBy X25zX3ZpZXcnOiAnY3B1JwogICAgICAgICAgYW5kICdyZWdubycgcGFzc2VkIGluIHBsYWNlIG9m ICdpbnQgcmVnbm8nIGFuZCAnaW50IGNwdScuwqA8L3NwYW4+PC9saT4KICAgICAgPGxpPjxzcGFu CnN0eWxlPSJjb2xvcjogcmdiKDI0NiwgMjQ3LCAyNDkpOyBmb250LWZhbWlseTogU2VyZ29lLVVJ OyBmb250LXNpemU6IDE0cHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50LWxpZ2F0 dXJlczogbm9ybWFsOyBmb250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBmb250LXdlaWdodDogNDAw OyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyBvcnBoYW5zOiAyOyB0ZXh0LWFsaWduOiBzdGFydDsg dGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHdpZG93czogMjsgd29yZC1z cGFjaW5nOiAwcHg7IC13ZWJraXQtdGV4dC1zdHJva2Utd2lkdGg6IDBweDsgd2hpdGUtc3BhY2U6 IG5vcm1hbDsgYmFja2dyb3VuZC1jb2xvcjogcmdiKDQ3LCA1MiwgNjApOyB0ZXh0LWRlY29yYXRp b24tdGhpY2tuZXNzOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tc3R5bGU6IGluaXRpYWw7IHRl eHQtZGVjb3JhdGlvbi1jb2xvcjogaW5pdGlhbDsgZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnQ7 IGZsb2F0OiBub25lOyI+UG9zc2libHkKICAgICAgICAgIG1pc21hdGNoZWQgY2FsbCBhcmd1bWVu dHMgaW4gZnVuY3Rpb24gJ2dpY19hcHJfd3JpdGVfbnNfdmlldyc6CiAgICAgICAgICAnY3B1JyBh bmQgJ3JlZ25vJyBwYXNzZWQgaW4gcGxhY2Ugb2YgJ2ludCByZWdubycgYW5kICdpbnQKICAgICAg ICAgIGNwdScuPC9zcGFuPjwvbGk+CiAgICA8L29sPgogICAgPHByZSBjbGFzcz0ibW96LXF1b3Rl LXByZSIgd3JhcD0iIj5Gb3VuZCBieSBMaW51eCBWZXJpZmljYXRpb24gQ2VudGVyIChsaW51eHRl c3Rpbmcub3JnKSB3aXRoIFNWQUNFLgo8L3ByZT4KICAgIDxwPjwvcD4KICAgIDxwPjxzcGFuCnN0 eWxlPSJjb2xvcjogcmdiKDI0NiwgMjQ3LCAyNDkpOyBmb250LWZhbWlseTogU2VyZ29lLVVJOyBm b250LXNpemU6IDE0cHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50LWxpZ2F0dXJl czogbm9ybWFsOyBmb250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBmb250LXdlaWdodDogNDAwOyBs ZXR0ZXItc3BhY2luZzogbm9ybWFsOyBvcnBoYW5zOiAyOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4 dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHdpZG93czogMjsgd29yZC1zcGFj aW5nOiAwcHg7IC13ZWJraXQtdGV4dC1zdHJva2Utd2lkdGg6IDBweDsgd2hpdGUtc3BhY2U6IG5v cm1hbDsgYmFja2dyb3VuZC1jb2xvcjogcmdiKDQ3LCA1MiwgNjApOyB0ZXh0LWRlY29yYXRpb24t dGhpY2tuZXNzOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tc3R5bGU6IGluaXRpYWw7IHRleHQt ZGVjb3JhdGlvbi1jb2xvcjogaW5pdGlhbDsgZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnQ7IGZs b2F0OiBub25lOyI+RnJvbQogICAgICAgIDIzYjE0MmY1MDQ2YmE5ZDNhZWM1NzIxN2Y2ZDhmMzEy N2Y5YmZmNjkgTW9uIFNlcCAxNyAwMDowMDowMAogICAgICAgIDIwMDE8L3NwYW4+PC9wPgogICAg PHA+PHNwYW4Kc3R5bGU9ImNvbG9yOiByZ2IoMjQ2LCAyNDcsIDI0OSk7IGZvbnQtZmFtaWx5OiBT ZXJnb2UtVUk7IGZvbnQtc2l6ZTogMTRweDsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlh bnQtbGlnYXR1cmVzOiBub3JtYWw7IGZvbnQtdmFyaWFudC1jYXBzOiBub3JtYWw7IGZvbnQtd2Vp Z2h0OiA0MDA7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IG9ycGhhbnM6IDI7IHRleHQtYWxpZ246 IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd2lkb3dzOiAy OyB3b3JkLXNwYWNpbmc6IDBweDsgLXdlYmtpdC10ZXh0LXN0cm9rZS13aWR0aDogMHB4OyB3aGl0 ZS1zcGFjZTogbm9ybWFsOyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoNDcsIDUyLCA2MCk7IHRleHQt ZGVjb3JhdGlvbi10aGlja25lc3M6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTogaW5p dGlhbDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyBkaXNwbGF5OiBpbmxpbmUgIWlt cG9ydGFudDsgZmxvYXQ6IG5vbmU7Ij48L3NwYW4+PC9wPgogICAgPHNwYW4Kc3R5bGU9ImNvbG9y OiByZ2IoMjQ2LCAyNDcsIDI0OSk7IGZvbnQtZmFtaWx5OiBTZXJnb2UtVUk7IGZvbnQtc2l6ZTog MTRweDsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7 IGZvbnQtdmFyaWFudC1jYXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7IGxldHRlci1zcGFj aW5nOiBub3JtYWw7IG9ycGhhbnM6IDI7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDog MHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd2lkb3dzOiAyOyB3b3JkLXNwYWNpbmc6IDBweDsg LXdlYmtpdC10ZXh0LXN0cm9rZS13aWR0aDogMHB4OyB3aGl0ZS1zcGFjZTogbm9ybWFsOyBiYWNr Z3JvdW5kLWNvbG9yOiByZ2IoNDcsIDUyLCA2MCk7IHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6 IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9u LWNvbG9yOiBpbml0aWFsOyBkaXNwbGF5OiBpbmxpbmUgIWltcG9ydGFudDsgZmxvYXQ6IG5vbmU7 Ij5Gcm9tOgogICAgICBBbmRyZXkgU2h1bWlsaW4gPGEgY2xhc3M9Im1vei10eHQtbGluay1yZmMy Mzk2RSIgaHJlZj0ibWFpbHRvOnNodW0uc2RsQG5wcGN0LnJ1Ij4mbHQ7c2h1bS5zZGxAbnBwY3Qu cnUmZ3Q7PC9hPjxicj4KICAgICAgRGF0ZTogU3VuLCA1IE1heSAyMDI0IDIwOjEzOjQwICswMzAw PGJyPgogICAgICBTdWJqZWN0OiBbUEFUQ0hdIFBhdGNoIGh3L2ludGMvYXJtX2dpYy5jPGJyPgog ICAgICA8YnI+CiAgICAgIFNpZ25lZC1vZmYtYnk6IEFuZHJleSBTaHVtaWxpbiA8YSBjbGFzcz0i bW96LXR4dC1saW5rLXJmYzIzOTZFIiBocmVmPSJtYWlsdG86c2h1bS5zZGxAbnBwY3QucnUiPiZs dDtzaHVtLnNkbEBucHBjdC5ydSZndDs8L2E+PGJyPgogICAgICAtLS08YnI+CiAgICAgIMKgaHcv aW50Yy9hcm1fZ2ljLmMgfCA0ICsrLS08YnI+CiAgICAgIMKgMSBmaWxlIGNoYW5nZWQsIDIgaW5z ZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSk8YnI+CiAgICAgIDxicj4KICAgICAgZGlmZiAtLWdp dCBhL2h3L2ludGMvYXJtX2dpYy5jIGIvaHcvaW50Yy9hcm1fZ2ljLmM8YnI+CiAgICAgIGluZGV4 IDdhMzRiYzA5OTguLjQ3ZjAxZTQ1ZTMgMTAwNjQ0PGJyPgogICAgICAtLS0gYS9ody9pbnRjL2Fy bV9naWMuYzxicj4KICAgICAgKysrIGIvaHcvaW50Yy9hcm1fZ2ljLmM8YnI+CiAgICAgIEBAIC0x NjU4LDcgKzE2NTgsNyBAQCBzdGF0aWMgTWVtVHhSZXN1bHQgZ2ljX2NwdV9yZWFkKEdJQ1N0YXRl ICpzLAogICAgICBpbnQgY3B1LCBpbnQgb2Zmc2V0LDxicj4KICAgICAgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgICpkYXRhID0gcy0mZ3Q7aF9hcHJbZ2ljX2dldF92Y3B1X3JlYWxfaWQoY3B1KV07 PGJyPgogICAgICDCoMKgwqDCoMKgwqDCoMKgIH0gZWxzZSBpZiAoZ2ljX2NwdV9uc19hY2Nlc3Mo cywgY3B1LCBhdHRycykpIHs8YnI+CiAgICAgIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAvKiBO UyB2aWV3IG9mIEdJQ0NfQVBSJmx0O24mZ3Q7IGlzIHRoZSB0b3AgaGFsZiBvZgogICAgICBHSUNf TlNBUFImbHQ7biZndDsgKi88YnI+CiAgICAgIC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgICpkYXRh ID0gZ2ljX2Fwcl9uc192aWV3KHMsIHJlZ25vLCBjcHUpOzxicj4KICAgICAgK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqAgKmRhdGEgPSBnaWNfYXByX25zX3ZpZXcocywgY3B1LCByZWdubyk7PGJyPgog ICAgICDCoMKgwqDCoMKgwqDCoMKgIH0gZWxzZSB7PGJyPgogICAgICDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgKmRhdGEgPSBzLSZndDthcHJbcmVnbm9dW2NwdV07PGJyPgogICAgICDCoMKgwqDC oMKgwqDCoMKgIH08YnI+CiAgICAgIEBAIC0xNzQ2LDcgKzE3NDYsNyBAQCBzdGF0aWMgTWVtVHhS ZXN1bHQgZ2ljX2NwdV93cml0ZShHSUNTdGF0ZQogICAgICAqcywgaW50IGNwdSwgaW50IG9mZnNl dCw8YnI+CiAgICAgIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzLSZndDtoX2FwcltnaWNfZ2V0 X3ZjcHVfcmVhbF9pZChjcHUpXSA9IHZhbHVlOzxicj4KICAgICAgwqDCoMKgwqDCoMKgwqDCoCB9 IGVsc2UgaWYgKGdpY19jcHVfbnNfYWNjZXNzKHMsIGNwdSwgYXR0cnMpKSB7PGJyPgogICAgICDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLyogTlMgdmlldyBvZiBHSUNDX0FQUiZsdDtuJmd0OyBp cyB0aGUgdG9wIGhhbGYgb2YKICAgICAgR0lDX05TQVBSJmx0O24mZ3Q7ICovPGJyPgogICAgICAt wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBnaWNfYXByX3dyaXRlX25zX3ZpZXcocywgcmVnbm8sIGNw dSwgdmFsdWUpOzxicj4KICAgICAgK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZ2ljX2Fwcl93cml0 ZV9uc192aWV3KHMsIGNwdSwgcmVnbm8sIHZhbHVlKTs8YnI+CiAgICAgIMKgwqDCoMKgwqDCoMKg wqAgfSBlbHNlIHs8YnI+CiAgICAgIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzLSZndDthcHJb cmVnbm9dW2NwdV0gPSB2YWx1ZTs8YnI+CiAgICAgIMKgwqDCoMKgwqDCoMKgwqAgfTxicj4KICAg IDwvc3Bhbj4KICA8L2JvZHk+CjwvaHRtbD4K --------------HgWSsB0QfRhUjR1G53jvsJpC--