From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05on2059.outbound.protection.outlook.com [40.107.21.59]) by sourceware.org (Postfix) with ESMTPS id BF3123858C39 for ; Thu, 16 Sep 2021 13:40:07 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org BF3123858C39 Received: from AM6PR0502CA0040.eurprd05.prod.outlook.com (2603:10a6:20b:56::17) by VE1PR08MB5709.eurprd08.prod.outlook.com (2603:10a6:800:1a7::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4523.14; Thu, 16 Sep 2021 13:40:05 +0000 Received: from AM5EUR03FT041.eop-EUR03.prod.protection.outlook.com (2603:10a6:20b:56:cafe::23) by AM6PR0502CA0040.outlook.office365.com (2603:10a6:20b:56::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4523.14 via Frontend Transport; Thu, 16 Sep 2021 13:40:05 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; gcc.gnu.org; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;gcc.gnu.org; dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by AM5EUR03FT041.mail.protection.outlook.com (10.152.17.186) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4523.14 via Frontend Transport; Thu, 16 Sep 2021 13:40:04 +0000 Received: ("Tessian outbound 8e26f7114b75:v103"); Thu, 16 Sep 2021 13:40:04 +0000 X-CR-MTA-TID: 64aa7808 Received: from 42254e3510b3.2 by 64aa7808-outbound-1.mta.getcheckrecipient.com id BF84CDE3-309F-46EE-A854-A0977C067550.1; Thu, 16 Sep 2021 13:39:54 +0000 Received: from EUR04-HE1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 42254e3510b3.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Thu, 16 Sep 2021 13:39:54 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=oVRDTxCYEn7k6qWXVDss0h0t2Njn2mBi28o8F6lcyDrQDq+q/HPElC5d/mohjthwt9DoqJ9X8GUdplUkRPFDbmHlSyaMNaEZJkgMB6wuV0cskVjLMID2SGGSpXf8UapS0tB3jSsJtynDK79fM5wD3xUWA81oQw8EJuU/uA5EnBaZmw/MbK+GncUIni67l8akK/PU/smN8t7AgyTEcyI5CIo/dRdb3Lqdix11QqCscw2xlcOmbrzrat8Nsu594ENGTS3HqctzYgKnDw688Y2ASYRo8OHJhlip2/EH2VkjqGT7gvSmYLQtkiR+LqWeg1h2gVMYghVFtDqVPLbpYUfSJA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=6ON/264f7sj1TNiWO7UpxzTunVxTUPieFW2tskE7dxY=; b=E80AJorqXK455dd/Q/YeB4PZg+TpG0ErIquV6vm3sgsT3Al4zqRmGvFOelpqFrP4WRSZwj5up1HIniZjBOrTQORBtJqwc9EigqmZ5po9wsXTKxsTxyS8KDswvVajFnILcLMMRPUSSagmdKhPNtVhiEPOUHMGjJLUE0k5xI25j/gpFK0LDoWcGYt3lVpKUmfYo3EOGpjAM0FormUIO6TVFdMIPEg3kMUMRGAfRLn2psAbTVH4J+h2SbFpQ4OUHdpd1Lme5cRWwCfhSz8LiRbo6xg3yLC9s/Oe8uspp+9ohN4CDoHcDAOxGcdFuBGNvHuYwo783Y+AJ64LfMMRkhx0jQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none Received: from VE1PR08MB4896.eurprd08.prod.outlook.com (2603:10a6:802:b1::18) by VI1PR08MB5536.eurprd08.prod.outlook.com (2603:10a6:803:13b::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4523.14; Thu, 16 Sep 2021 13:39:43 +0000 Received: from VE1PR08MB4896.eurprd08.prod.outlook.com ([fe80::940f:a21:5d48:99ce]) by VE1PR08MB4896.eurprd08.prod.outlook.com ([fe80::940f:a21:5d48:99ce%7]) with mapi id 15.20.4523.016; Thu, 16 Sep 2021 13:39:43 +0000 From: Jirui Wu To: "gcc-patches@gcc.gnu.org" CC: "jeffreyalaw@gmail.com" , "ian@airs.com" , Richard Biener , Richard Sandiford Subject: [Patch][GCC][middle-end] - Lower store and load neon builtins to gimple Thread-Topic: [Patch][GCC][middle-end] - Lower store and load neon builtins to gimple Thread-Index: AderAByS/x9/leW3Rvq/YnZOYNfotg== Date: Thu, 16 Sep 2021 13:39:43 +0000 Message-ID: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: x-ts-tracking-id: 79C3918613089945B046B98EA1B80281.0 x-checkrecipientchecked: true Authentication-Results-Original: gcc.gnu.org; dkim=none (message not signed) header.d=none;gcc.gnu.org; dmarc=none action=none header.from=arm.com; x-ms-publictraffictype: Email X-MS-Office365-Filtering-Correlation-Id: f62686af-9ff5-4a88-78b1-08d979177db9 x-ms-traffictypediagnostic: VI1PR08MB5536:|VE1PR08MB5709: x-ms-exchange-transport-forked: True X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true nodisclaimer: true x-ms-oob-tlc-oobclassifiers: OLM:96;OLM:96; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: ZabsR+bJbf7Qv4qHGpt87oeL1pvDbRb7DO2EoJgCITacyQB9IB6Vu7tiNCjCcwyBLct35vsZO++LyQo06AaEK3zNrfPco/DHlHzlZbiGXBqE6DXvySSE7/wJyc21TRMmwMGgceAry23o75lIZ70ArGsF4+tR/3mqfqmK+6B+WbDImVHfwBu8Opfhnhhr6aEsHrBi29JxzwyOrnrm5Uvjtp89oJn4KOjCK/0tFnEOE3dqhYJ4sfuRY+SZ5eFhFlJfURaqw3Xr8uQq/JC7w2NpgDwxDqL6f7HsZtCPUfRiRLPg/wxiU61eF0LndlF+KoC4GQccKUk/9EcVGzoJl3diT67Y24TltV5bGSMJjswkhJakQvZlTSh0EQb/uBYTVncxTd8UnBNA+u1YEeZhmlKTjKZYMsEqF0n7yWpf3mjw0V8RxlQuYoFzpqs+faYWsQUCvDyHn6ClfoalLW43+1Yz2C1D8K7oZ4+NvDMkcDoZmgAYqb2bT0nRIC7ZsCDUpbnia96n+khCtvS1YawGzkz8UOvl2mYLvcpw+kTeHyiLW6Ak9ej3RcDO4jLrf79yp/2eHtmFIfPgBuNAs5qmcGTrj1/0Ge1f3PsiIyuNLIwMO5fsRcgGPyRAL5HCy5tQn1UqdYSde2ZzdxSnIvDPX6YtD5T3/tBnerWIN8Crc2nVTBBRE3FzrKzNa1R+WjlIb/z/od9r0xrQhFkjebIeO9t9E7QOeREGalKDK3P7gcQcH18VdxVeLgV49RES6HXvvNJhETJczRfFgL47PLoQMenDUsSWXiadahZ+rOf2ju/FKPAXrexsBMgtroNqJndVO57+3bMNW/fXzjls5YOELsuC2w== X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:VE1PR08MB4896.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(366004)(83380400001)(8676002)(186003)(33656002)(38070700005)(6506007)(86362001)(2906002)(8936002)(52536014)(99936003)(508600001)(71200400001)(66446008)(6916009)(122000001)(9686003)(7696005)(64756008)(4326008)(76116006)(55016002)(54906003)(26005)(38100700002)(66556008)(66946007)(66616009)(316002)(55236004)(66476007)(5660300002); DIR:OUT; SFP:1101; Content-Type: multipart/mixed; boundary="_004_VE1PR08MB4896ED647FEF8DA13E8620748ADC9VE1PR08MB4896eurp_" MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR08MB5536 Original-Authentication-Results: gcc.gnu.org; dkim=none (message not signed) header.d=none;gcc.gnu.org; dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: AM5EUR03FT041.eop-EUR03.prod.protection.outlook.com X-MS-Office365-Filtering-Correlation-Id-Prvs: 9566a134-d6d5-46b5-892f-08d9791770ff X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: cLDJJheZKq8shprMTFGWcxP0POiIK0mfz0pFzNxIr0tvUTs+01D8PCSyIFg2W1Xd47g9bB6+g6mpSQclUsIVvxAHaQOgV5iS26kJl/v5VmeThYTcJpDI3HmuyoXdUQ/c2FmfMdU2f1CJB2A1vJ31b1uypLdolkSzN3vmj5GG6BzOuzmh7U9egc/mpw207k/2OoOLE6BkQAvwyYKawzjzNiResZ1XhiUf5c10ILJhR05jD5qOl/bMLhmQ4ExPRxp9KWrAO9wMmreZwZ8QXeNc00IYe0fmVP/x6+VJOKfBsvnEnuKfRgm47JiDP0QEeJmE3Yg8q2WAt4AmwwjrT6uF/bVWCbT4PyCVd28hp2NawB+nTt1EGxZXSaGGby8QpHxLzGsaJ50x3XvlSKunHeeL+SdVuxXY0NHeIaDva8sGhlXyr2+fxk+DsC+2ZgnZqj08ZWkk4tGJIR/tAzua/+JLs/2r/lv289WJPWMKOT9Z5pVlHClEpXr63JOXwMt0Lpzxq+CGa/fVBZrTzlt9G4i0qevB2T99e1nRHimJ7P1eMBts3Txi+DWZA54pxBS1Vrchg3GNbFqsNmnDZLqm5OPs6ULXejVH9Qx+Nl+YpzOF4Op+H5UdnzA5de8Z5YAIeX204JEp1C97NfDZnnDnk2jXitMRtJlestxneDXs0sQgku4Qsl8W9BgAQX1ZJ4kso48wK9rwOw5WmTj+CnsDSXYxrvtmo4p3P4H+tqHQL5H9fQ6lOx3yi0f5wfWE78z/FNvldOfs/DXjYZM67P5rTrZx9w3pefZnedccIzTx7rSEUdJK+ryHytEfTXMqbSG113n+ X-Forefront-Antispam-Report: CIP:63.35.35.123; CTRY:IE; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:64aa7808-outbound-1.mta.getcheckrecipient.com; PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com; CAT:NONE; SFS:(4636009)(136003)(346002)(396003)(376002)(39860400002)(46966006)(36840700001)(2906002)(70586007)(82310400003)(55016002)(316002)(26005)(66616009)(4326008)(82740400003)(356005)(8676002)(6506007)(81166007)(36860700001)(99936003)(54906003)(186003)(86362001)(7696005)(336012)(5660300002)(9686003)(52536014)(83380400001)(47076005)(33656002)(21480400003)(6916009)(70206006)(235185007)(478600001)(8936002); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Sep 2021 13:40:04.9361 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: f62686af-9ff5-4a88-78b1-08d979177db9 X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[63.35.35.123]; Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com] X-MS-Exchange-CrossTenant-AuthSource: AM5EUR03FT041.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: VE1PR08MB5709 X-Spam-Status: No, score=-11.5 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, GIT_PATCH_0, HTML_MESSAGE, KAM_LOTSOFHASH, KAM_SHORT, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_PASS, TXREP, UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-Content-Filtered-By: Mailman/MimeDel 2.1.29 X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Sep 2021 13:40:13 -0000 --_004_VE1PR08MB4896ED647FEF8DA13E8620748ADC9VE1PR08MB4896eurp_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Hi all, This patch lowers the vld1 and vst1 variants of the store and load neon builtins functions to gimple. The changes in this patch covers: * Replaces calls to the vld1 and vst1 variants of the builtins * Uses MEM_REF gimple assignments to generate better code * Updates test cases to prevent over optimization Bootstrapped Regtested on aarch64-none-linux-gnu and no issues. Ok for master? If OK can it be committed for me, I have no commit rights. Thanks, Jirui gcc/ChangeLog: * config/aarch64/aarch64-builtins.c (aarch64_general_gimple_fold_bu= iltin): lower vld1 and vst1 variants of the neon builtins gcc/testsuite/ChangeLog: * gcc.target/aarch64/fmla_intrinsic_1.c: prevent over optimization * gcc.target/aarch64/fmls_intrinsic_1.c: prevent over optimization * gcc.target/aarch64/fmul_intrinsic_1.c: prevent over optimization * gcc.target/aarch64/mla_intrinsic_1.c: prevent over optimization * gcc.target/aarch64/mls_intrinsic_1.c: prevent over optimization * gcc.target/aarch64/mul_intrinsic_1.c: prevent over optimization * gcc.target/aarch64/simd/vmul_elem_1.c: prevent over optimization * gcc.target/aarch64/vclz.c: replace macro with function to prevent over optimization * gcc.target/aarch64/vneg_s.c: replace macro with function to prevent over optimization --_004_VE1PR08MB4896ED647FEF8DA13E8620748ADC9VE1PR08MB4896eurp_ Content-Type: text/plain; name="diff.txt" Content-Description: diff.txt Content-Disposition: attachment; filename="diff.txt"; size=43397; creation-date="Thu, 16 Sep 2021 13:39:00 GMT"; modification-date="Thu, 16 Sep 2021 13:39:00 GMT" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LWJ1aWx0aW5zLmMgYi9nY2Mv Y29uZmlnL2FhcmNoNjQvYWFyY2g2NC1idWlsdGlucy5jCmluZGV4IGVlZjlmYzBmNDQ0MGQ3ZGIz NTllNTNhN2I0ZTIxZTQ4Y2YyYTY1ZjQuLjAyNzQ5MTQxNGRhMTZiNjZhN2ZlOTIyYTFiOTc5ZDk3 ZjU1M2I3MjQgMTAwNjQ0Ci0tLSBhL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LWJ1aWx0aW5z LmMKKysrIGIvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtYnVpbHRpbnMuYwpAQCAtMjM4Miw2 ICsyMzgyLDMxIEBAIGFhcmNoNjRfZ2VuZXJhbF9naW1wbGVfZm9sZF9idWlsdGluICh1bnNpZ25l ZCBpbnQgZmNvZGUsIGdjYWxsICpzdG10KQogCQkJCQkgICAgICAgMSwgYXJnc1swXSk7CiAJZ2lt cGxlX2NhbGxfc2V0X2xocyAobmV3X3N0bXQsIGdpbXBsZV9jYWxsX2xocyAoc3RtdCkpOwogCWJy ZWFrOworICAgICAgLypMb3dlciBzdG9yZSBhbmQgbG9hZCBuZW9uIGJ1aWx0aW5zIHRvIGdpbXBs ZS4gICovCisgICAgICBCVUlMVElOX1ZBTExfRjE2IChMT0FEMSwgbGQxLCAwLCBMT0FEKQorCWlm ICghQllURVNfQklHX0VORElBTikKKwkgIHsKKwkgICAgbmV3X3N0bXQgPSBnaW1wbGVfYnVpbGRf YXNzaWduIChnaW1wbGVfY2FsbF9saHMgKHN0bXQpLAorCQkJCQkgICAgZm9sZF9idWlsZDIgKE1F TV9SRUYsCisJCQkJCSAgICBUUkVFX1RZUEUKKwkJCQkJICAgIChnaW1wbGVfY2FsbF9saHMgKHN0 bXQpKSwKKwkJCQkJICAgIGFyZ3NbMF0sIGJ1aWxkX2ludF9jc3QKKwkJCQkJICAgIChUUkVFX1RZ UEUgKGFyZ3NbMF0pLCAwKSkpOworCSAgfQorCWJyZWFrOworICAgICAgQlVJTFRJTl9WQUxMX0Yx NiAoU1RPUkUxLCBzdDEsIDAsIFNUT1JFKQorCWlmICghQllURVNfQklHX0VORElBTikKKwkgIHsK KwkgIG5ld19zdG10ID0gZ2ltcGxlX2J1aWxkX2Fzc2lnbiAoZm9sZF9idWlsZDIgKE1FTV9SRUYs CisJCQkJCQkgICBUUkVFX1RZUEUgKGdpbXBsZV9jYWxsX2FyZworCQkJCQkJCSAgICAgKHN0bXQs IDEpKSwKKwkJCQkJCSAgIGdpbXBsZV9jYWxsX2FyZyAoc3RtdCwgMCksCisJCQkJCQkgICBidWls ZF9pbnRfY3N0CisJCQkJCQkgICAoVFJFRV9UWVBFIChnaW1wbGVfY2FsbF9hcmcKKwkJCQkJCQkg ICAgICAoc3RtdCwgMCkpLCAwKSksCisJCQkJICAgICAgIGdpbXBsZV9jYWxsX2FyZyAoc3RtdCwg MSkpOworCSAgfQorCWJyZWFrOwogICAgICAgQlVJTFRJTl9WRFFJRiAoVU5PUCwgcmVkdWNfc21h eF9zY2FsXywgMTAsIEFMTCkKICAgICAgIEJVSUxUSU5fVkRRX0JIU0kgKFVOT1BVLCByZWR1Y191 bWF4X3NjYWxfLCAxMCwgQUxMKQogCW5ld19zdG10ID0gZ2ltcGxlX2J1aWxkX2NhbGxfaW50ZXJu YWwgKElGTl9SRURVQ19NQVgsCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQv YWFyY2g2NC9mbWxhX2ludHJpbnNpY18xLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFy Y2g2NC9mbWxhX2ludHJpbnNpY18xLmMKaW5kZXggNTlhZDQxZWQwNDcxYjE3NDE4YzM5NWYzMWZi ZTY2NmI2MGVjMzYyMy4uYmVmMzFjNDU2NTBkY2QwODhiMzhhNzU1MDgzZTZiZDlmZTUzMGM1MiAx MDA2NDQKLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvZm1sYV9pbnRyaW5z aWNfMS5jCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L2ZtbGFfaW50cmlu c2ljXzEuYwpAQCAtMTEsNiArMTEsNyBAQCBleHRlcm4gdm9pZCBhYm9ydCAodm9pZCk7CiAKICNk ZWZpbmUgVEVTVF9WTUxBKHExLCBxMiwgc2l6ZSwgaW4xX2xhbmVzLCBpbjJfbGFuZXMpCQkJXAog c3RhdGljIHZvaWQJCQkJCQkJCVwKK19fYXR0cmlidXRlX18oKG5vaXBhLG5vaW5saW5lKSkJCQkJ CQlcCiB0ZXN0X3ZmbWEjI3ExIyNfbGFuZSMjcTIjI19mIyNzaXplIChmbG9hdCMjc2l6ZSMjX3Qg KiByZXMsCQlcCiAJCQkJICAgY29uc3QgZmxvYXQjI3NpemUjI190ICppbjEsCQlcCiAJCQkJICAg Y29uc3QgZmxvYXQjI3NpemUjI190ICppbjIpCQlcCkBAIC0xMDQsMTIgKzEwNSwxMiBAQCBtYWlu IChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAgICB2Zm1hcV9sYW5lcV9mMzIuICAqLwogLyogeyBk Zy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJmbWxhXFx0dlxbMC05XF0rXC40cywgdlxb MC05XF0rXC40cywgdlxbMC05XF0rXC5zXFxcW1xbMC05XF0rXFxcXSIgMiB9IH0gKi8KIAotLyog dmZtYV9sYW5lX2Y2NC4gICovCi0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMg ImZtYWRkXFx0ZFxbMC05XF0rXCwgZFxbMC05XF0rXCwgZFxbMC05XF0rXCwgZFxbMC05XF0rIiAx IH0gfSAqLworLyogdmZtYV9sYW5lX2Y2NC4KKyAgIHZmbWFfbGFuZXFfZjY0LiAgKi8KKy8qIHsg ZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAiZm1hZGRcXHRkXFswLTlcXStcLCBkXFsw LTlcXStcLCBkXFswLTlcXStcLCBkXFswLTlcXSsiIDIgfSB9ICovCiAKIC8qIHZmbWFxX2xhbmVf ZjY0LgotICAgdmZtYV9sYW5lcV9mNjQuCiAgICB2Zm1hcV9sYW5lcV9mNjQuICAqLwotLyogeyBk Zy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJmbWxhXFx0dlxbMC05XF0rXC4yZCwgdlxb MC05XF0rXC4yZCwgdlxbMC05XF0rXC5kXFxcW1xbMC05XF0rXFxcXSIgMyB9IH0gKi8KKy8qIHsg ZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAiZm1sYVxcdHZcWzAtOVxdK1wuMmQsIHZc WzAtOVxdK1wuMmQsIHZcWzAtOVxdK1wuZFxcXFtcWzAtOVxdK1xcXF0iIDIgfSB9ICovCiAKIApk aWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvZm1sc19pbnRyaW5z aWNfMS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvZm1sc19pbnRyaW5zaWNf MS5jCmluZGV4IDJkNWEzZDMwNTM2MGEwOGE5NjYzY2ZkNDk3Y2IxYTUzNzRiNGIzMjcuLjg2NWRl ZjI4YzNmNGQwNDA0MmFiNDk1ZDIzMmJiODY1Y2FiYjJiNTAgMTAwNjQ0Ci0tLSBhL2djYy90ZXN0 c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L2ZtbHNfaW50cmluc2ljXzEuYworKysgYi9nY2MvdGVz dHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9mbWxzX2ludHJpbnNpY18xLmMKQEAgLTExLDYgKzEx LDcgQEAgZXh0ZXJuIHZvaWQgYWJvcnQgKHZvaWQpOwogCiAjZGVmaW5lIFRFU1RfVk1MUyhxMSwg cTIsIHNpemUsIGluMV9sYW5lcywgaW4yX2xhbmVzKQkJCVwKIHN0YXRpYyB2b2lkCQkJCQkJCQlc CitfX2F0dHJpYnV0ZV9fKChub2lwYSxub2lubGluZSkpCQkJCQkJXAogdGVzdF92Zm1zIyNxMSMj X2xhbmUjI3EyIyNfZiMjc2l6ZSAoZmxvYXQjI3NpemUjI190ICogcmVzLAkJXAogCQkJCSAgIGNv bnN0IGZsb2F0IyNzaXplIyNfdCAqaW4xLAkJXAogCQkJCSAgIGNvbnN0IGZsb2F0IyNzaXplIyNf dCAqaW4yKQkJXApAQCAtMTA1LDEyICsxMDYsMTIgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiph cmd2KQogICAgdmZtc3FfbGFuZXFfZjMyLiAgKi8KIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2Vt Ymxlci10aW1lcyAiZm1sc1xcdHZcWzAtOVxdK1wuNHMsIHZcWzAtOVxdK1wuNHMsIHZcWzAtOVxd K1wuc1xcXFtcWzAtOVxdK1xcXF0iIDIgfSB9ICovCiAKLS8qIHZmbXNfbGFuZV9mNjQuICAqLwot LyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJmbXN1YlxcdGRcWzAtOVxdK1ws IGRcWzAtOVxdK1wsIGRcWzAtOVxdK1wsIGRcWzAtOVxdKyIgMSB9IH0gKi8KKy8qIHZmbXNfbGFu ZV9mNjQuCisgICB2Zm1zX2xhbmVxX2Y2NC4gICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3Nl bWJsZXItdGltZXMgImZtc3ViXFx0ZFxbMC05XF0rXCwgZFxbMC05XF0rXCwgZFxbMC05XF0rXCwg ZFxbMC05XF0rIiAyIH0gfSAqLwogCiAvKiB2Zm1zcV9sYW5lX2Y2NC4KLSAgIHZmbXNfbGFuZXFf ZjY0LgogICAgdmZtc3FfbGFuZXFfZjY0LiAgKi8KLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2Vt Ymxlci10aW1lcyAiZm1sc1xcdHZcWzAtOVxdK1wuMmQsIHZcWzAtOVxdK1wuMmQsIHZcWzAtOVxd K1wuZFxcXFtcWzAtOVxdK1xcXF0iIDMgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3Nl bWJsZXItdGltZXMgImZtbHNcXHR2XFswLTlcXStcLjJkLCB2XFswLTlcXStcLjJkLCB2XFswLTlc XStcLmRcXFxbXFswLTlcXStcXFxdIiAyIH0gfSAqLwogCiAKZGlmZiAtLWdpdCBhL2djYy90ZXN0 c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L2ZtdWxfaW50cmluc2ljXzEuYyBiL2djYy90ZXN0c3Vp dGUvZ2NjLnRhcmdldC9hYXJjaDY0L2ZtdWxfaW50cmluc2ljXzEuYwppbmRleCA4YjA4ODBkODli MTM1OTZkZWE3ZGI3OWMxNGNiN2QxMjRjZjcwNzljLi42M2RjNTZjNzBhMjU3MmM2YTg3ODljNWE3 NTcxM2E3OTUyYWI5NzQ2IDEwMDY0NAotLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFy Y2g2NC9mbXVsX2ludHJpbnNpY18xLmMKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2Fh cmNoNjQvZm11bF9pbnRyaW5zaWNfMS5jCkBAIC05LDYgKzksNyBAQCBleHRlcm4gZG91YmxlIGZh YnMgKGRvdWJsZSk7CiAKICNkZWZpbmUgVEVTVF9WTVVMKHExLCBxMiwgc2l6ZSwgaW4xX2xhbmVz LCBpbjJfbGFuZXMpCQkJXAogc3RhdGljIHZvaWQJCQkJCQkJCVwKK19fYXR0cmlidXRlX18oKG5v aXBhLG5vaW5saW5lKSkJCQkJCQlcCiB0ZXN0X3ZtdWwjI3ExIyNfbGFuZSMjcTIjI19mIyNzaXpl IChmbG9hdCMjc2l6ZSMjX3QgKiByZXMsCQlcCiAJCQkJICAgY29uc3QgZmxvYXQjI3NpemUjI190 ICppbjEsCQlcCiAJCQkJICAgY29uc3QgZmxvYXQjI3NpemUjI190ICppbjIpCQlcCmRpZmYgLS1n aXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9tbGFfaW50cmluc2ljXzEuYyBi L2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L21sYV9pbnRyaW5zaWNfMS5jCmluZGV4 IDQ2YjNjNzhjMTMxZWE5MmVhZTIwOGQzOTllZjI1YzcxY2Q4NDQ2ZjcuLjg4NWJmYjM5Yjc5N2U2 ZDA5NWFhZWNhZmEwMjcxMDk0YzM0ZmJlYTUgMTAwNjQ0Ci0tLSBhL2djYy90ZXN0c3VpdGUvZ2Nj LnRhcmdldC9hYXJjaDY0L21sYV9pbnRyaW5zaWNfMS5jCisrKyBiL2djYy90ZXN0c3VpdGUvZ2Nj LnRhcmdldC9hYXJjaDY0L21sYV9pbnRyaW5zaWNfMS5jCkBAIC0xMSw2ICsxMSw3IEBAIGV4dGVy biB2b2lkIGFib3J0ICh2b2lkKTsKIAogI2RlZmluZSBURVNUX1ZNTEEocSwgc3UsIHNpemUsIGlu MV9sYW5lcywgaW4yX2xhbmVzKQkJXAogc3RhdGljIHZvaWQJCQkJCQkJXAorX19hdHRyaWJ1dGVf Xygobm9pcGEsbm9pbmxpbmUpKQkJCQkJXAogdGVzdF92bWxhcV9sYW5lIyNxIyNfIyNzdSMjc2l6 ZSAoTUFQIyNzdSAoc2l6ZSwgKSAqIHJlcywJXAogCQkJCSBjb25zdCBNQVAjI3N1KHNpemUsICkg KmluMSwJXAogCQkJCSBjb25zdCBNQVAjI3N1KHNpemUsICkgKmluMikJXApkaWZmIC0tZ2l0IGEv Z2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvbWxzX2ludHJpbnNpY18xLmMgYi9nY2Mv dGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9tbHNfaW50cmluc2ljXzEuYwppbmRleCBlMDFh NGY2ZDBlMWU4M2NhYzA0MmEyY2FkNGYwMjY2NGI4N2U4YzA1Li5kZjA0NmNlMzJjMDMyYmNlNzA1 NTlhODQyZDUyMDAxMjY0ZWNiY2JjIDEwMDY0NAotLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJn ZXQvYWFyY2g2NC9tbHNfaW50cmluc2ljXzEuYworKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJn ZXQvYWFyY2g2NC9tbHNfaW50cmluc2ljXzEuYwpAQCAtMTEsNiArMTEsNyBAQCBleHRlcm4gdm9p ZCBhYm9ydCAodm9pZCk7CiAKICNkZWZpbmUgVEVTVF9WTUxTKHEsIHN1LCBzaXplLCBpbjFfbGFu ZXMsIGluMl9sYW5lcykJCVwKIHN0YXRpYyB2b2lkCQkJCQkJCVwKK19fYXR0cmlidXRlX18oKG5v aXBhLG5vaW5saW5lKSkJCQkJCVwKIHRlc3Rfdm1sc3FfbGFuZSMjcSMjXyMjc3UjI3NpemUgKE1B UCMjc3UgKHNpemUsICkgKiByZXMsCVwKIAkJCQkgY29uc3QgTUFQIyNzdShzaXplLCApICppbjEs CVwKIAkJCQkgY29uc3QgTUFQIyNzdShzaXplLCApICppbjIpCVwKZGlmZiAtLWdpdCBhL2djYy90 ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L211bF9pbnRyaW5zaWNfMS5jIGIvZ2NjL3Rlc3Rz dWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvbXVsX2ludHJpbnNpY18xLmMKaW5kZXggMDBlZjRmMmRl NmM1NTEwNjM4YjdlMzE5OTBjMDc1NGY2MGQzZTRkMC4uNTE3YjkzN2YzZTFiNjEyZDVhOWMzYzJm NjhhNTI5YTYzMWQ4NDhlMCAxMDA2NDQKLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2Fh cmNoNjQvbXVsX2ludHJpbnNpY18xLmMKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2Fh cmNoNjQvbXVsX2ludHJpbnNpY18xLmMKQEAgLTExLDYgKzExLDcgQEAgZXh0ZXJuIHZvaWQgYWJv cnQgKHZvaWQpOwogCiAjZGVmaW5lIFRFU1RfVk1VTChxLCBzdSwgc2l6ZSwgaW4xX2xhbmVzLCBp bjJfbGFuZXMpCQlcCiBzdGF0aWMgdm9pZAkJCQkJCQlcCitfX2F0dHJpYnV0ZV9fKChub2lwYSxu b2lubGluZSkpCQkJCQlcCiB0ZXN0X3ZtdWxxX2xhbmUjI3EjI18jI3N1IyNzaXplIChNQVAjI3N1 IChzaXplLCApICogcmVzLAlcCiAJCQkJIGNvbnN0IE1BUCMjc3Uoc2l6ZSwgKSAqaW4xLAlcCiAJ CQkJIGNvbnN0IE1BUCMjc3Uoc2l6ZSwgKSAqaW4yKQlcCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1 aXRlL2djYy50YXJnZXQvYWFyY2g2NC9zaW1kL3ZtdWxfZWxlbV8xLmMgYi9nY2MvdGVzdHN1aXRl L2djYy50YXJnZXQvYWFyY2g2NC9zaW1kL3ZtdWxfZWxlbV8xLmMKaW5kZXggYTFmYWVmZDg4YmFj YWJhZGY0NWJmNWEyMmNhNTQ4MWRiMTNjNDFjYi4uZmZhMzkxYWVhZTFmYTBiNTJlZjRhZDdhZTA0 MGE4YmM0MGUxNjBkMiAxMDA2NDQKLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNo NjQvc2ltZC92bXVsX2VsZW1fMS5jCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJj aDY0L3NpbWQvdm11bF9lbGVtXzEuYwpAQCAtMTQ2LDEyICsxNDYsMTQgQEAgY2hlY2tfdjJzZiAo ZmxvYXQzMl90IGVsZW1BLCBmbG9hdDMyX3QgZWxlbUIpCiAKICAgdnN0MV9mMzIgKHZlYzMyeDJf cmVzLCB2bXVsX25fZjMyICh2ZWMzMngyX3NyYywgZWxlbUEpKTsKIAorICBhc20gdm9sYXRpbGUg KCIiIDogOiA6ICJtZW1vcnkiKTsKICAgZm9yIChpbmR4ID0gMDsgaW5keCA8IDI7IGluZHgrKykK ICAgICBpZiAoKiAodWludDMyX3QgKikgJnZlYzMyeDJfcmVzW2luZHhdICE9ICogKHVpbnQzMl90 ICopICZleHBlY3RlZDJfMVtpbmR4XSkKICAgICAgIGFib3J0ICgpOwogCiAgIHZzdDFfZjMyICh2 ZWMzMngyX3Jlcywgdm11bF9uX2YzMiAodmVjMzJ4Ml9zcmMsIGVsZW1CKSk7CiAKKyAgYXNtIHZv bGF0aWxlICgiIiA6IDogOiAibWVtb3J5Iik7CiAgIGZvciAoaW5keCA9IDA7IGluZHggPCAyOyBp bmR4KyspCiAgICAgaWYgKCogKHVpbnQzMl90ICopICZ2ZWMzMngyX3Jlc1tpbmR4XSAhPSAqICh1 aW50MzJfdCAqKSAmZXhwZWN0ZWQyXzJbaW5keF0pCiAgICAgICBhYm9ydCAoKTsKQEAgLTE2OSwy NCArMTcxLDI4IEBAIGNoZWNrX3Y0c2YgKGZsb2F0MzJfdCBlbGVtQSwgZmxvYXQzMl90IGVsZW1C LCBmbG9hdDMyX3QgZWxlbUMsIGZsb2F0MzJfdCBlbGVtRCkKIAogICB2c3QxcV9mMzIgKHZlYzMy eDRfcmVzLCB2bXVscV9uX2YzMiAodmVjMzJ4NF9zcmMsIGVsZW1BKSk7CiAKKyAgYXNtIHZvbGF0 aWxlICgiIiA6IDogOiAibWVtb3J5Iik7CiAgIGZvciAoaW5keCA9IDA7IGluZHggPCA0OyBpbmR4 KyspCiAgICAgaWYgKCogKHVpbnQzMl90ICopICZ2ZWMzMng0X3Jlc1tpbmR4XSAhPSAqICh1aW50 MzJfdCAqKSAmZXhwZWN0ZWQ0XzFbaW5keF0pCiAgICAgICBhYm9ydCAoKTsKIAogICB2c3QxcV9m MzIgKHZlYzMyeDRfcmVzLCB2bXVscV9uX2YzMiAodmVjMzJ4NF9zcmMsIGVsZW1CKSk7CiAKKyAg YXNtIHZvbGF0aWxlICgiIiA6IDogOiAibWVtb3J5Iik7CiAgIGZvciAoaW5keCA9IDA7IGluZHgg PCA0OyBpbmR4KyspCiAgICAgaWYgKCogKHVpbnQzMl90ICopICZ2ZWMzMng0X3Jlc1tpbmR4XSAh PSAqICh1aW50MzJfdCAqKSAmZXhwZWN0ZWQ0XzJbaW5keF0pCiAgICAgICBhYm9ydCAoKTsKIAog ICB2c3QxcV9mMzIgKHZlYzMyeDRfcmVzLCB2bXVscV9uX2YzMiAodmVjMzJ4NF9zcmMsIGVsZW1D KSk7CiAKKyAgYXNtIHZvbGF0aWxlICgiIiA6IDogOiAibWVtb3J5Iik7CiAgIGZvciAoaW5keCA9 IDA7IGluZHggPCA0OyBpbmR4KyspCiAgICAgaWYgKCogKHVpbnQzMl90ICopICZ2ZWMzMng0X3Jl c1tpbmR4XSAhPSAqICh1aW50MzJfdCAqKSAmZXhwZWN0ZWQ0XzNbaW5keF0pCiAgICAgICBhYm9y dCAoKTsKIAogICB2c3QxcV9mMzIgKHZlYzMyeDRfcmVzLCB2bXVscV9uX2YzMiAodmVjMzJ4NF9z cmMsIGVsZW1EKSk7CiAKKyAgYXNtIHZvbGF0aWxlICgiIiA6IDogOiAibWVtb3J5Iik7CiAgIGZv ciAoaW5keCA9IDA7IGluZHggPCA0OyBpbmR4KyspCiAgICAgaWYgKCogKHVpbnQzMl90ICopICZ2 ZWMzMng0X3Jlc1tpbmR4XSAhPSAqICh1aW50MzJfdCAqKSAmZXhwZWN0ZWQ0XzRbaW5keF0pCiAg ICAgICBhYm9ydCAoKTsKQEAgLTIwNCwxMiArMjEwLDE0IEBAIGNoZWNrX3YyZGYgKGZsb2F0NjRf dCBlbGVtZEMsIGZsb2F0NjRfdCBlbGVtZEQpCiAKICAgdnN0MXFfZjY0ICh2ZWM2NHgyX3Jlcywg dm11bHFfbl9mNjQgKHZlYzY0eDJfc3JjLCBlbGVtZEMpKTsKIAorICBhc20gdm9sYXRpbGUgKCIi IDogOiA6ICJtZW1vcnkiKTsKICAgZm9yIChpbmR4ID0gMDsgaW5keCA8IDI7IGluZHgrKykKICAg ICBpZiAoKiAodWludDY0X3QgKikgJnZlYzY0eDJfcmVzW2luZHhdICE9ICogKHVpbnQ2NF90ICop ICZleHBlY3RlZGQyXzFbaW5keF0pCiAgICAgICBhYm9ydCAoKTsKIAogICB2c3QxcV9mNjQgKHZl YzY0eDJfcmVzLCB2bXVscV9uX2Y2NCAodmVjNjR4Ml9zcmMsIGVsZW1kRCkpOwogCisgIGFzbSB2 b2xhdGlsZSAoIiIgOiA6IDogIm1lbW9yeSIpOwogICBmb3IgKGluZHggPSAwOyBpbmR4IDwgMjsg aW5keCsrKQogICAgIGlmICgqICh1aW50NjRfdCAqKSAmdmVjNjR4Ml9yZXNbaW5keF0gIT0gKiAo dWludDY0X3QgKikgJmV4cGVjdGVkZDJfMltpbmR4XSkKICAgICAgIGFib3J0ICgpOwpAQCAtMjI3 LDEyICsyMzUsMTQgQEAgY2hlY2tfdjJzaSAoaW50MzJfdCBlbGVtc0EsIGludDMyX3QgZWxlbXNC KQogCiAgIHZzdDFfczMyICh2ZWNzMzJ4Ml9yZXMsIHZtdWxfbl9zMzIgKHZlY3MzMngyX3NyYywg ZWxlbXNBKSk7CiAKKyAgYXNtIHZvbGF0aWxlICgiIiA6IDogOiAibWVtb3J5Iik7CiAgIGZvciAo aW5keCA9IDA7IGluZHggPCAyOyBpbmR4KyspCiAgICAgaWYgKHZlY3MzMngyX3Jlc1tpbmR4XSAh PSBleHBlY3RlZHMyXzFbaW5keF0pCiAgICAgICBhYm9ydCAoKTsKIAogICB2c3QxX3MzMiAodmVj czMyeDJfcmVzLCB2bXVsX25fczMyICh2ZWNzMzJ4Ml9zcmMsIGVsZW1zQikpOwogCisgIGFzbSB2 b2xhdGlsZSAoIiIgOiA6IDogIm1lbW9yeSIpOwogICBmb3IgKGluZHggPSAwOyBpbmR4IDwgMjsg aW5keCsrKQogICAgIGlmICh2ZWNzMzJ4Ml9yZXNbaW5keF0gIT0gZXhwZWN0ZWRzMl8yW2luZHhd KQogICAgICAgYWJvcnQgKCk7CkBAIC0yNDgsMTIgKzI1OCwxNCBAQCBjaGVja192MnNpX3Vuc2ln bmVkICh1aW50MzJfdCBlbGVtdXNBLCB1aW50MzJfdCBlbGVtdXNCKQogCiAgIHZzdDFfdTMyICh2 ZWN1czMyeDJfcmVzLCB2bXVsX25fdTMyICh2ZWN1czMyeDJfc3JjLCBlbGVtdXNBKSk7CiAKKyAg YXNtIHZvbGF0aWxlICgiIiA6IDogOiAibWVtb3J5Iik7CiAgIGZvciAoaW5keCA9IDA7IGluZHgg PCAyOyBpbmR4KyspCiAgICAgaWYgKHZlY3VzMzJ4Ml9yZXNbaW5keF0gIT0gZXhwZWN0ZWR1czJf MVtpbmR4XSkKICAgICAgIGFib3J0ICgpOwogCiAgIHZzdDFfdTMyICh2ZWN1czMyeDJfcmVzLCB2 bXVsX25fdTMyICh2ZWN1czMyeDJfc3JjLCBlbGVtdXNCKSk7CiAKKyAgYXNtIHZvbGF0aWxlICgi IiA6IDogOiAibWVtb3J5Iik7CiAgIGZvciAoaW5keCA9IDA7IGluZHggPCAyOyBpbmR4KyspCiAg ICAgaWYgKHZlY3VzMzJ4Ml9yZXNbaW5keF0gIT0gZXhwZWN0ZWR1czJfMltpbmR4XSkKICAgICAg IGFib3J0ICgpOwpAQCAtMjcxLDI0ICsyODMsMjggQEAgY2hlY2tfdjRzaSAoaW50MzJfdCBlbGVt c0EsIGludDMyX3QgZWxlbXNCLCBpbnQzMl90IGVsZW1zQywgaW50MzJfdCBlbGVtc0QpCiAKICAg dnN0MXFfczMyICh2ZWNzMzJ4NF9yZXMsIHZtdWxxX25fczMyICh2ZWNzMzJ4NF9zcmMsIGVsZW1z QSkpOwogCisgIGFzbSB2b2xhdGlsZSAoIiIgOiA6IDogIm1lbW9yeSIpOwogICBmb3IgKGluZHgg PSAwOyBpbmR4IDwgNDsgaW5keCsrKQogICAgIGlmICh2ZWNzMzJ4NF9yZXNbaW5keF0gIT0gZXhw ZWN0ZWRzNF8xW2luZHhdKQogICAgICAgYWJvcnQgKCk7CiAKICAgdnN0MXFfczMyICh2ZWNzMzJ4 NF9yZXMsIHZtdWxxX25fczMyICh2ZWNzMzJ4NF9zcmMsIGVsZW1zQikpOwogCisgIGFzbSB2b2xh dGlsZSAoIiIgOiA6IDogIm1lbW9yeSIpOwogICBmb3IgKGluZHggPSAwOyBpbmR4IDwgNDsgaW5k eCsrKQogICAgIGlmICh2ZWNzMzJ4NF9yZXNbaW5keF0gIT0gZXhwZWN0ZWRzNF8yW2luZHhdKQog ICAgICAgYWJvcnQgKCk7CiAKICAgdnN0MXFfczMyICh2ZWNzMzJ4NF9yZXMsIHZtdWxxX25fczMy ICh2ZWNzMzJ4NF9zcmMsIGVsZW1zQykpOwogCisgIGFzbSB2b2xhdGlsZSAoIiIgOiA6IDogIm1l bW9yeSIpOwogICBmb3IgKGluZHggPSAwOyBpbmR4IDwgNDsgaW5keCsrKQogICAgIGlmICh2ZWNz MzJ4NF9yZXNbaW5keF0gIT0gZXhwZWN0ZWRzNF8zW2luZHhdKQogICAgICAgYWJvcnQgKCk7CiAK ICAgdnN0MXFfczMyICh2ZWNzMzJ4NF9yZXMsIHZtdWxxX25fczMyICh2ZWNzMzJ4NF9zcmMsIGVs ZW1zRCkpOwogCisgIGFzbSB2b2xhdGlsZSAoIiIgOiA6IDogIm1lbW9yeSIpOwogICBmb3IgKGlu ZHggPSAwOyBpbmR4IDwgNDsgaW5keCsrKQogICAgIGlmICh2ZWNzMzJ4NF9yZXNbaW5keF0gIT0g ZXhwZWN0ZWRzNF80W2luZHhdKQogICAgICAgYWJvcnQgKCk7CkBAIC0zMDUsMjQgKzMyMSwyOCBA QCBjaGVja192NHNpX3Vuc2lnbmVkICh1aW50MzJfdCBlbGVtdXNBLCB1aW50MzJfdCBlbGVtdXNC LCB1aW50MzJfdCBlbGVtdXNDLAogCiAgIHZzdDFxX3UzMiAodmVjdXMzMng0X3Jlcywgdm11bHFf bl91MzIgKHZlY3VzMzJ4NF9zcmMsIGVsZW11c0EpKTsKIAorICBhc20gdm9sYXRpbGUgKCIiIDog OiA6ICJtZW1vcnkiKTsKICAgZm9yIChpbmR4ID0gMDsgaW5keCA8IDQ7IGluZHgrKykKICAgICBp ZiAodmVjdXMzMng0X3Jlc1tpbmR4XSAhPSBleHBlY3RlZHVzNF8xW2luZHhdKQogICAgICAgYWJv cnQgKCk7CiAKICAgdnN0MXFfdTMyICh2ZWN1czMyeDRfcmVzLCB2bXVscV9uX3UzMiAodmVjdXMz Mng0X3NyYywgZWxlbXVzQikpOwogCisgIGFzbSB2b2xhdGlsZSAoIiIgOiA6IDogIm1lbW9yeSIp OwogICBmb3IgKGluZHggPSAwOyBpbmR4IDwgNDsgaW5keCsrKQogICAgIGlmICh2ZWN1czMyeDRf cmVzW2luZHhdICE9IGV4cGVjdGVkdXM0XzJbaW5keF0pCiAgICAgICBhYm9ydCAoKTsKIAogICB2 c3QxcV91MzIgKHZlY3VzMzJ4NF9yZXMsIHZtdWxxX25fdTMyICh2ZWN1czMyeDRfc3JjLCBlbGVt dXNDKSk7CiAKKyAgYXNtIHZvbGF0aWxlICgiIiA6IDogOiAibWVtb3J5Iik7CiAgIGZvciAoaW5k eCA9IDA7IGluZHggPCA0OyBpbmR4KyspCiAgICAgaWYgKHZlY3VzMzJ4NF9yZXNbaW5keF0gIT0g ZXhwZWN0ZWR1czRfM1tpbmR4XSkKICAgICAgIGFib3J0ICgpOwogCiAgIHZzdDFxX3UzMiAodmVj dXMzMng0X3Jlcywgdm11bHFfbl91MzIgKHZlY3VzMzJ4NF9zcmMsIGVsZW11c0QpKTsKIAorICBh c20gdm9sYXRpbGUgKCIiIDogOiA6ICJtZW1vcnkiKTsKICAgZm9yIChpbmR4ID0gMDsgaW5keCA8 IDQ7IGluZHgrKykKICAgICBpZiAodmVjdXMzMng0X3Jlc1tpbmR4XSAhPSBleHBlY3RlZHVzNF80 W2luZHhdKQogICAgICAgYWJvcnQgKCk7CkBAIC0zNDEsMjQgKzM2MSwyOCBAQCBjaGVja192NGhp IChpbnQxNl90IGVsZW1oQSwgaW50MTZfdCBlbGVtaEIsIGludDE2X3QgZWxlbWhDLCBpbnQxNl90 IGVsZW1oRCkKIAogICB2c3QxX3MxNiAodmVjaDE2eDRfcmVzLCB2bXVsX25fczE2ICh2ZWNoMTZ4 NF9zcmMsIGVsZW1oQSkpOwogCisgIGFzbSB2b2xhdGlsZSAoIiIgOiA6IDogIm1lbW9yeSIpOwog ICBmb3IgKGluZHggPSAwOyBpbmR4IDwgNDsgaW5keCsrKQogICAgIGlmICh2ZWNoMTZ4NF9yZXNb aW5keF0gIT0gZXhwZWN0ZWRoNF8xW2luZHhdKQogICAgICAgYWJvcnQgKCk7CiAKICAgdnN0MV9z MTYgKHZlY2gxNng0X3Jlcywgdm11bF9uX3MxNiAodmVjaDE2eDRfc3JjLCBlbGVtaEIpKTsKIAor ICBhc20gdm9sYXRpbGUgKCIiIDogOiA6ICJtZW1vcnkiKTsKICAgZm9yIChpbmR4ID0gMDsgaW5k eCA8IDQ7IGluZHgrKykKICAgICBpZiAodmVjaDE2eDRfcmVzW2luZHhdICE9IGV4cGVjdGVkaDRf MltpbmR4XSkKICAgICAgIGFib3J0ICgpOwogCiAgIHZzdDFfczE2ICh2ZWNoMTZ4NF9yZXMsIHZt dWxfbl9zMTYgKHZlY2gxNng0X3NyYywgZWxlbWhDKSk7CiAKKyAgYXNtIHZvbGF0aWxlICgiIiA6 IDogOiAibWVtb3J5Iik7CiAgIGZvciAoaW5keCA9IDA7IGluZHggPCA0OyBpbmR4KyspCiAgICAg aWYgKHZlY2gxNng0X3Jlc1tpbmR4XSAhPSBleHBlY3RlZGg0XzNbaW5keF0pCiAgICAgICBhYm9y dCAoKTsKIAogICB2c3QxX3MxNiAodmVjaDE2eDRfcmVzLCB2bXVsX25fczE2ICh2ZWNoMTZ4NF9z cmMsIGVsZW1oRCkpOwogCisgIGFzbSB2b2xhdGlsZSAoIiIgOiA6IDogIm1lbW9yeSIpOwogICBm b3IgKGluZHggPSAwOyBpbmR4IDwgNDsgaW5keCsrKQogICAgIGlmICh2ZWNoMTZ4NF9yZXNbaW5k eF0gIT0gZXhwZWN0ZWRoNF80W2luZHhdKQogICAgICAgYWJvcnQgKCk7CkBAIC0zNzUsMjQgKzM5 OSwyOCBAQCBjaGVja192NGhpX3Vuc2lnbmVkICh1aW50MTZfdCBlbGVtdWhBLCB1aW50MTZfdCBl bGVtdWhCLCB1aW50MTZfdCBlbGVtdWhDLAogCiAgIHZzdDFfdTE2ICh2ZWN1aDE2eDRfcmVzLCB2 bXVsX25fdTE2ICh2ZWN1aDE2eDRfc3JjLCBlbGVtdWhBKSk7CiAKKyAgYXNtIHZvbGF0aWxlICgi IiA6IDogOiAibWVtb3J5Iik7CiAgIGZvciAoaW5keCA9IDA7IGluZHggPCA0OyBpbmR4KyspCiAg ICAgaWYgKHZlY3VoMTZ4NF9yZXNbaW5keF0gIT0gZXhwZWN0ZWR1aDRfMVtpbmR4XSkKICAgICAg IGFib3J0ICgpOwogCiAgIHZzdDFfdTE2ICh2ZWN1aDE2eDRfcmVzLCB2bXVsX25fdTE2ICh2ZWN1 aDE2eDRfc3JjLCBlbGVtdWhCKSk7CiAKKyAgYXNtIHZvbGF0aWxlICgiIiA6IDogOiAibWVtb3J5 Iik7CiAgIGZvciAoaW5keCA9IDA7IGluZHggPCA0OyBpbmR4KyspCiAgICAgaWYgKHZlY3VoMTZ4 NF9yZXNbaW5keF0gIT0gZXhwZWN0ZWR1aDRfMltpbmR4XSkKICAgICAgIGFib3J0ICgpOwogCiAg IHZzdDFfdTE2ICh2ZWN1aDE2eDRfcmVzLCB2bXVsX25fdTE2ICh2ZWN1aDE2eDRfc3JjLCBlbGVt dWhDKSk7CiAKKyAgYXNtIHZvbGF0aWxlICgiIiA6IDogOiAibWVtb3J5Iik7CiAgIGZvciAoaW5k eCA9IDA7IGluZHggPCA0OyBpbmR4KyspCiAgICAgaWYgKHZlY3VoMTZ4NF9yZXNbaW5keF0gIT0g ZXhwZWN0ZWR1aDRfM1tpbmR4XSkKICAgICAgIGFib3J0ICgpOwogCiAgIHZzdDFfdTE2ICh2ZWN1 aDE2eDRfcmVzLCB2bXVsX25fdTE2ICh2ZWN1aDE2eDRfc3JjLCBlbGVtdWhEKSk7CiAKKyAgYXNt IHZvbGF0aWxlICgiIiA6IDogOiAibWVtb3J5Iik7CiAgIGZvciAoaW5keCA9IDA7IGluZHggPCA0 OyBpbmR4KyspCiAgICAgaWYgKHZlY3VoMTZ4NF9yZXNbaW5keF0gIT0gZXhwZWN0ZWR1aDRfNFtp bmR4XSkKICAgICAgIGFib3J0ICgpOwpAQCAtNDExLDQ4ICs0MzksNTYgQEAgY2hlY2tfdjhoaSAo aW50MTZfdCBlbGVtaEEsIGludDE2X3QgZWxlbWhCLCBpbnQxNl90IGVsZW1oQywgaW50MTZfdCBl bGVtaEQsCiAKICAgdnN0MXFfczE2ICh2ZWNoMTZ4OF9yZXMsIHZtdWxxX25fczE2ICh2ZWNoMTZ4 OF9zcmMsIGVsZW1oQSkpOwogCisgIGFzbSB2b2xhdGlsZSAoIiIgOiA6IDogIm1lbW9yeSIpOwog ICBmb3IgKGluZHggPSAwOyBpbmR4IDwgODsgaW5keCsrKQogICAgIGlmICh2ZWNoMTZ4OF9yZXNb aW5keF0gIT0gZXhwZWN0ZWRoOF8xW2luZHhdKQogICAgICAgYWJvcnQgKCk7CiAKICAgdnN0MXFf czE2ICh2ZWNoMTZ4OF9yZXMsIHZtdWxxX25fczE2ICh2ZWNoMTZ4OF9zcmMsIGVsZW1oQikpOwog CisgIGFzbSB2b2xhdGlsZSAoIiIgOiA6IDogIm1lbW9yeSIpOwogICBmb3IgKGluZHggPSAwOyBp bmR4IDwgODsgaW5keCsrKQogICAgIGlmICh2ZWNoMTZ4OF9yZXNbaW5keF0gIT0gZXhwZWN0ZWRo OF8yW2luZHhdKQogICAgICAgYWJvcnQgKCk7CiAKICAgdnN0MXFfczE2ICh2ZWNoMTZ4OF9yZXMs IHZtdWxxX25fczE2ICh2ZWNoMTZ4OF9zcmMsIGVsZW1oQykpOwogCisgIGFzbSB2b2xhdGlsZSAo IiIgOiA6IDogIm1lbW9yeSIpOwogICBmb3IgKGluZHggPSAwOyBpbmR4IDwgODsgaW5keCsrKQog ICAgIGlmICh2ZWNoMTZ4OF9yZXNbaW5keF0gIT0gZXhwZWN0ZWRoOF8zW2luZHhdKQogICAgICAg YWJvcnQgKCk7CiAKICAgdnN0MXFfczE2ICh2ZWNoMTZ4OF9yZXMsIHZtdWxxX25fczE2ICh2ZWNo MTZ4OF9zcmMsIGVsZW1oRCkpOwogCisgIGFzbSB2b2xhdGlsZSAoIiIgOiA6IDogIm1lbW9yeSIp OwogICBmb3IgKGluZHggPSAwOyBpbmR4IDwgODsgaW5keCsrKQogICAgIGlmICh2ZWNoMTZ4OF9y ZXNbaW5keF0gIT0gZXhwZWN0ZWRoOF80W2luZHhdKQogICAgICAgYWJvcnQgKCk7CiAKICAgdnN0 MXFfczE2ICh2ZWNoMTZ4OF9yZXMsIHZtdWxxX25fczE2ICh2ZWNoMTZ4OF9zcmMsIGVsZW1oRSkp OwogCisgIGFzbSB2b2xhdGlsZSAoIiIgOiA6IDogIm1lbW9yeSIpOwogICBmb3IgKGluZHggPSAw OyBpbmR4IDwgODsgaW5keCsrKQogICAgIGlmICh2ZWNoMTZ4OF9yZXNbaW5keF0gIT0gZXhwZWN0 ZWRoOF81W2luZHhdKQogICAgICAgYWJvcnQgKCk7CiAKICAgdnN0MXFfczE2ICh2ZWNoMTZ4OF9y ZXMsIHZtdWxxX25fczE2ICh2ZWNoMTZ4OF9zcmMsIGVsZW1oRikpOwogCisgIGFzbSB2b2xhdGls ZSAoIiIgOiA6IDogIm1lbW9yeSIpOwogICBmb3IgKGluZHggPSAwOyBpbmR4IDwgODsgaW5keCsr KQogICAgIGlmICh2ZWNoMTZ4OF9yZXNbaW5keF0gIT0gZXhwZWN0ZWRoOF82W2luZHhdKQogICAg ICAgYWJvcnQgKCk7CiAKICAgdnN0MXFfczE2ICh2ZWNoMTZ4OF9yZXMsIHZtdWxxX25fczE2ICh2 ZWNoMTZ4OF9zcmMsIGVsZW1oRykpOwogCisgIGFzbSB2b2xhdGlsZSAoIiIgOiA6IDogIm1lbW9y eSIpOwogICBmb3IgKGluZHggPSAwOyBpbmR4IDwgODsgaW5keCsrKQogICAgIGlmICh2ZWNoMTZ4 OF9yZXNbaW5keF0gIT0gZXhwZWN0ZWRoOF83W2luZHhdKQogICAgICAgYWJvcnQgKCk7CiAKICAg dnN0MXFfczE2ICh2ZWNoMTZ4OF9yZXMsIHZtdWxxX25fczE2ICh2ZWNoMTZ4OF9zcmMsIGVsZW1o SCkpOwogCisgIGFzbSB2b2xhdGlsZSAoIiIgOiA6IDogIm1lbW9yeSIpOwogICBmb3IgKGluZHgg PSAwOyBpbmR4IDwgODsgaW5keCsrKQogICAgIGlmICh2ZWNoMTZ4OF9yZXNbaW5keF0gIT0gZXhw ZWN0ZWRoOF84W2luZHhdKQogICAgICAgYWJvcnQgKCk7CkBAIC00NzAsNDggKzUwNiw1NiBAQCBj aGVja192OGhpX3Vuc2lnbmVkICh1aW50MTZfdCBlbGVtdWhBLCB1aW50MTZfdCBlbGVtdWhCLCB1 aW50MTZfdCBlbGVtdWhDLAogCiAgIHZzdDFxX3UxNiAodmVjdWgxNng4X3Jlcywgdm11bHFfbl91 MTYgKHZlY3VoMTZ4OF9zcmMsIGVsZW11aEEpKTsKIAorICBhc20gdm9sYXRpbGUgKCIiIDogOiA6 ICJtZW1vcnkiKTsKICAgZm9yIChpbmR4ID0gMDsgaW5keCA8IDg7IGluZHgrKykKICAgICBpZiAo dmVjdWgxNng4X3Jlc1tpbmR4XSAhPSBleHBlY3RlZHVoOF8xW2luZHhdKQogICAgICAgYWJvcnQg KCk7CiAKICAgdnN0MXFfdTE2ICh2ZWN1aDE2eDhfcmVzLCB2bXVscV9uX3UxNiAodmVjdWgxNng4 X3NyYywgZWxlbXVoQikpOwogCisgIGFzbSB2b2xhdGlsZSAoIiIgOiA6IDogIm1lbW9yeSIpOwog ICBmb3IgKGluZHggPSAwOyBpbmR4IDwgODsgaW5keCsrKQogICAgIGlmICh2ZWN1aDE2eDhfcmVz W2luZHhdICE9IGV4cGVjdGVkdWg4XzJbaW5keF0pCiAgICAgICBhYm9ydCAoKTsKIAogICB2c3Qx cV91MTYgKHZlY3VoMTZ4OF9yZXMsIHZtdWxxX25fdTE2ICh2ZWN1aDE2eDhfc3JjLCBlbGVtdWhD KSk7CiAKKyAgYXNtIHZvbGF0aWxlICgiIiA6IDogOiAibWVtb3J5Iik7CiAgIGZvciAoaW5keCA9 IDA7IGluZHggPCA4OyBpbmR4KyspCiAgICAgaWYgKHZlY3VoMTZ4OF9yZXNbaW5keF0gIT0gZXhw ZWN0ZWR1aDhfM1tpbmR4XSkKICAgICAgIGFib3J0ICgpOwogCiAgIHZzdDFxX3UxNiAodmVjdWgx Nng4X3Jlcywgdm11bHFfbl91MTYgKHZlY3VoMTZ4OF9zcmMsIGVsZW11aEQpKTsKIAorICBhc20g dm9sYXRpbGUgKCIiIDogOiA6ICJtZW1vcnkiKTsKICAgZm9yIChpbmR4ID0gMDsgaW5keCA8IDg7 IGluZHgrKykKICAgICBpZiAodmVjdWgxNng4X3Jlc1tpbmR4XSAhPSBleHBlY3RlZHVoOF80W2lu ZHhdKQogICAgICAgYWJvcnQgKCk7CiAKICAgdnN0MXFfdTE2ICh2ZWN1aDE2eDhfcmVzLCB2bXVs cV9uX3UxNiAodmVjdWgxNng4X3NyYywgZWxlbXVoRSkpOwogCisgIGFzbSB2b2xhdGlsZSAoIiIg OiA6IDogIm1lbW9yeSIpOwogICBmb3IgKGluZHggPSAwOyBpbmR4IDwgODsgaW5keCsrKQogICAg IGlmICh2ZWN1aDE2eDhfcmVzW2luZHhdICE9IGV4cGVjdGVkdWg4XzVbaW5keF0pCiAgICAgICBh Ym9ydCAoKTsKIAogICB2c3QxcV91MTYgKHZlY3VoMTZ4OF9yZXMsIHZtdWxxX25fdTE2ICh2ZWN1 aDE2eDhfc3JjLCBlbGVtdWhGKSk7CiAKKyAgYXNtIHZvbGF0aWxlICgiIiA6IDogOiAibWVtb3J5 Iik7CiAgIGZvciAoaW5keCA9IDA7IGluZHggPCA4OyBpbmR4KyspCiAgICAgaWYgKHZlY3VoMTZ4 OF9yZXNbaW5keF0gIT0gZXhwZWN0ZWR1aDhfNltpbmR4XSkKICAgICAgIGFib3J0ICgpOwogCiAg IHZzdDFxX3UxNiAodmVjdWgxNng4X3Jlcywgdm11bHFfbl91MTYgKHZlY3VoMTZ4OF9zcmMsIGVs ZW11aEcpKTsKIAorICBhc20gdm9sYXRpbGUgKCIiIDogOiA6ICJtZW1vcnkiKTsKICAgZm9yIChp bmR4ID0gMDsgaW5keCA8IDg7IGluZHgrKykKICAgICBpZiAodmVjdWgxNng4X3Jlc1tpbmR4XSAh PSBleHBlY3RlZHVoOF83W2luZHhdKQogICAgICAgYWJvcnQgKCk7CiAKICAgdnN0MXFfdTE2ICh2 ZWN1aDE2eDhfcmVzLCB2bXVscV9uX3UxNiAodmVjdWgxNng4X3NyYywgZWxlbXVoSCkpOwogCisg IGFzbSB2b2xhdGlsZSAoIiIgOiA6IDogIm1lbW9yeSIpOwogICBmb3IgKGluZHggPSAwOyBpbmR4 IDwgODsgaW5keCsrKQogICAgIGlmICh2ZWN1aDE2eDhfcmVzW2luZHhdICE9IGV4cGVjdGVkdWg4 XzhbaW5keF0pCiAgICAgICBhYm9ydCAoKTsKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2Nj LnRhcmdldC9hYXJjaDY0L3ZjbHouYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0 L3ZjbHouYwppbmRleCBhMzZlZTQ0ZmMxNjU4ODg2ZjA0ZGZmMTliOTQ2YjkzM2Y5NjY4MDA4Li5j YTRkMTc0MjZlNjQ1YzBmOGJiZTNhNGNkZDk2Mjg0OGI0ZTFjYmVkIDEwMDY0NAotLS0gYS9nY2Mv dGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC92Y2x6LmMKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9n Y2MudGFyZ2V0L2FhcmNoNjQvdmNsei5jCkBAIC02NiwyMiArNjYsNjIgQEAgZXh0ZXJuIHZvaWQg YWJvcnQgKHZvaWQpOwogI2RlZmluZSBDTFpfSU5TVChyZWdfbGVuLCBkYXRhX2xlbiwgaXNfc2ln bmVkKSBcCiAgIENPTkNBVDEgKHZjbHosIFBPU1RGSVggKHJlZ19sZW4sIGRhdGFfbGVuLCBpc19z aWduZWQpKQogCi0jZGVmaW5lIFJVTl9URVNUKHRlc3Rfc2V0LCBhbnN3X3NldCwgcmVnX2xlbiwg ZGF0YV9sZW4sIGlzX3NpZ25lZCwgbikJXAotICBJTkhJQl9PUFRJTUlaQVRJT047CQkJCQkJCVwK LSAgYSA9IExPQURfSU5TVCAocmVnX2xlbiwgZGF0YV9sZW4sIGlzX3NpZ25lZCkgKHRlc3Rfc2V0 KTsJCVwKLSAgYiA9IExPQURfSU5TVCAocmVnX2xlbiwgZGF0YV9sZW4sIGlzX3NpZ25lZCkgKGFu c3dfc2V0KTsJICAgICAgICBcCi0gIGEgPSBDTFpfSU5TVCAocmVnX2xlbiwgZGF0YV9sZW4sIGlz X3NpZ25lZCkgKGEpOwkJCVwKLSAgZm9yIChpID0gMDsgaSA8IG47IGkrKykJCQkJCQlcCi0gICAg aWYgKGEgW2ldICE9IGIgW2ldKQkJCQkJCQlcCi0gICAgICByZXR1cm4gMTsKKyNkZWZpbmUgQlVJ TERfVEVTVCh0eXBlLCBzaXplLCBsYW5lcykJCQkgICAgXAoraW50IF9fYXR0cmlidXRlX18oKG5v aXBhLG5vaW5saW5lKSkJCQkgICAgXAorcnVuX3Rlc3QjI3R5cGUjI3NpemUjI3gjI2xhbmVzIChp bnQjI3NpemUjI190KiB0ZXN0X3NldCwgICAgXAorCQkJCWludCMjc2l6ZSMjX3QqIGFuc3dfc2V0 LCAgICBcCisJCQkJaW50IHJlZ19sZW4sIGludCBkYXRhX2xlbiwgIFwKKwkJCQlpbnQgbikJCQkg ICAgXAorewkJCQkJCQkgICAgXAorICBpbnQgaTsJCQkJCQkgICAgXAorICBJTkhJQl9PUFRJTUla QVRJT047CQkJCQkgICAgXAorICBpbnQjI3NpemUjI3gjI2xhbmVzIyNfdCBhID0gdmxkMSMjdHlw ZSMjc2l6ZSAodGVzdF9zZXQpOyAgXAorICBpbnQjI3NpemUjI3gjI2xhbmVzIyNfdCBiID0gdmxk MSMjdHlwZSMjc2l6ZSAoYW5zd19zZXQpOyAgXAorICBhID0gdmNseiMjdHlwZSMjc2l6ZSAoYSk7 CQkJCSAgICBcCisgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspewkJCQkgICAgXAorICAgIGlmIChh IFtpXSAhPSBiIFtpXSkJCQkJCSAgICBcCisgICAgICByZXR1cm4gMTsJCQkJCQkgICAgXAorICB9 CQkJCQkJCSAgICBcCisgIHJldHVybiAwOwkJCQkJCSAgICBcCit9CisKKy8qIHVuc2lnbmVkIGlu cHV0cyAgKi8KKyNkZWZpbmUgVV9CVUlMRF9URVNUKHR5cGUsIHNpemUsIGxhbmVzKQkJCSAgICBc CitpbnQgX19hdHRyaWJ1dGVfXygobm9pcGEsbm9pbmxpbmUpKQkJCSAgICBcCitydW5fdGVzdCMj dHlwZSMjc2l6ZSMjeCMjbGFuZXMgKHVpbnQjI3NpemUjI190KiB0ZXN0X3NldCwgICBcCisJCQkJ dWludCMjc2l6ZSMjX3QqIGFuc3dfc2V0LCAgIFwKKwkJCQlpbnQgcmVnX2xlbiwgaW50IGRhdGFf bGVuLCAgXAorCQkJCWludCBuKQkgICAgICAgICAgICAgICAgICAgIFwKK3sJCQkJCQkJICAgIFwK KyAgaW50IGk7CQkJCQkJICAgIFwKKyAgSU5ISUJfT1BUSU1JWkFUSU9OOwkJCQkJICAgIFwKKyAg dWludCMjc2l6ZSMjeCMjbGFuZXMjI190IGEgPSB2bGQxIyN0eXBlIyNzaXplICh0ZXN0X3NldCk7 IFwKKyAgdWludCMjc2l6ZSMjeCMjbGFuZXMjI190IGIgPSB2bGQxIyN0eXBlIyNzaXplIChhbnN3 X3NldCk7IFwKKyAgYSA9IHZjbHojI3R5cGUjI3NpemUgKGEpOwkJCQkgICAgXAorICBmb3IgKGkg PSAwOyBpIDwgbjsgaSsrKXsJCQkJICAgIFwKKyAgICBpZiAoYSBbaV0gIT0gYiBbaV0pCQkJCQkg ICAgXAorICAgICAgcmV0dXJuIDE7CQkJCQkJICAgIFwKKyAgfQkJCQkJCQkgICAgXAorICByZXR1 cm4gMDsJCQkJCQkgICAgXAorfQorCitCVUlMRF9URVNUIChfcywgOCwgOCkKK0JVSUxEX1RFU1Qg KF9zLCAxNiwgNCkKK0JVSUxEX1RFU1QgKF9zLCAzMiwgMikKK0JVSUxEX1RFU1QgKHFfcywgOCwg MTYpCitCVUlMRF9URVNUIChxX3MsIDE2LCA4KQorQlVJTERfVEVTVCAocV9zLCAzMiwgNCkKKwor VV9CVUlMRF9URVNUIChfdSwgOCwgOCkKK1VfQlVJTERfVEVTVCAoX3UsIDE2LCA0KQorVV9CVUlM RF9URVNUIChfdSwgMzIsIDIpCitVX0JVSUxEX1RFU1QgKHFfdSwgOCwgMTYpCitVX0JVSUxEX1RF U1QgKHFfdSwgMTYsIDgpCitVX0JVSUxEX1RFU1QgKHFfdSwgMzIsIDQpCiAKIGludCBfX2F0dHJp YnV0ZV9fICgobm9pbmxpbmUpKQogdGVzdF92Y2x6X3M4ICgpCiB7Ci0gIGludCBpOwotICBpbnQ4 eDhfdCBhOwotICBpbnQ4eDhfdCBiOwotCiAgIGludDhfdCB0ZXN0X3NldDBbOF0gPSB7CiAgICAg VEVTVDAsIFRFU1QxLCBURVNUMiwgVEVTVDMsCiAgICAgVEVTVDQsIFRFU1Q1LCBURVNUNiwgVEVT VDcKQEAgLTk4LDIyICsxMzgsMTggQEAgdGVzdF92Y2x6X3M4ICgpCiAgICAgMCwgMCwgMCwgMCwK ICAgICAwLCAwLCAwLCAwCiAgIH07Ci0gIFJVTl9URVNUICh0ZXN0X3NldDAsIGFuc3dfc2V0MCwg NjQsIDgsIDEsIDgpOwotICBSVU5fVEVTVCAodGVzdF9zZXQxLCBhbnN3X3NldDEsIDY0LCA4LCAx LCAxKTsKKyAgaW50IG8xID0gcnVuX3Rlc3Rfczh4OCAodGVzdF9zZXQwLCBhbnN3X3NldDAsIDY0 LCA4LCA4KTsKKyAgaW50IG8yID0gcnVuX3Rlc3Rfczh4OCAodGVzdF9zZXQxLCBhbnN3X3NldDEs IDY0LCA4LCAxKTsKIAotICByZXR1cm4gMDsKKyAgcmV0dXJuIG8xfHxvMjsKIH0KIAogLyogRG91 YmxlIHNjYW4tYXNzZW1ibGVyLXRpbWVzIHRvIHRha2UgYWNjb3VudCBvZiB1bnNpZ25lZCBmdW5j dGlvbnMuICAqLwotLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJjbHpcXHR2 XFswLTlcXStcLjhiLCB2XFswLTlcXStcLjhiIiA0IH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNj YW4tYXNzZW1ibGVyLXRpbWVzICJjbHpcXHR2XFswLTlcXStcLjhiLCB2XFswLTlcXStcLjhiIiAy IH0gfSAqLwogCiBpbnQgX19hdHRyaWJ1dGVfXyAoKG5vaW5saW5lKSkKIHRlc3RfdmNsel9zMTYg KCkKIHsKLSAgaW50IGk7Ci0gIGludDE2eDRfdCBhOwotICBpbnQxNng0X3QgYjsKLQogICBpbnQx Nl90IHRlc3Rfc2V0MFs0XSA9IHsgVEVTVDAsIFRFU1QxLCBURVNUMiwgVEVTVDMgfTsKICAgaW50 MTZfdCB0ZXN0X3NldDFbNF0gPSB7IFRFU1Q0LCBURVNUNSwgVEVTVDYsIFRFU1Q3IH07CiAgIGlu dDE2X3QgdGVzdF9zZXQyWzRdID0geyBURVNUOCwgVEVTVDksIFRFU1QxMCwgVEVTVDExIH07CkBA IC0xMjYsMjUgKzE2MiwyMSBAQCB0ZXN0X3ZjbHpfczE2ICgpCiAgIGludDE2X3QgYW5zd19zZXQz WzRdID0geyA0LCAzLCAyLCAxIH07CiAgIGludDE2X3QgYW5zd19zZXQ0WzRdID0geyAwLCAwLCAw LCAwIH07CiAKLSAgUlVOX1RFU1QgKHRlc3Rfc2V0MCwgYW5zd19zZXQwLCA2NCwgMTYsIDEsIDQp OwotICBSVU5fVEVTVCAodGVzdF9zZXQxLCBhbnN3X3NldDEsIDY0LCAxNiwgMSwgNCk7Ci0gIFJV Tl9URVNUICh0ZXN0X3NldDIsIGFuc3dfc2V0MiwgNjQsIDE2LCAxLCA0KTsKLSAgUlVOX1RFU1Qg KHRlc3Rfc2V0MywgYW5zd19zZXQzLCA2NCwgMTYsIDEsIDQpOwotICBSVU5fVEVTVCAodGVzdF9z ZXQ0LCBhbnN3X3NldDQsIDY0LCAxNiwgMSwgMSk7CisgIGludCBvMSA9IHJ1bl90ZXN0X3MxNng0 ICh0ZXN0X3NldDAsIGFuc3dfc2V0MCwgNjQsIDE2LCA0KTsKKyAgaW50IG8yID0gcnVuX3Rlc3Rf czE2eDQgKHRlc3Rfc2V0MSwgYW5zd19zZXQxLCA2NCwgMTYsIDQpOworICBpbnQgbzMgPSBydW5f dGVzdF9zMTZ4NCAodGVzdF9zZXQyLCBhbnN3X3NldDIsIDY0LCAxNiwgNCk7CisgIGludCBvNCA9 IHJ1bl90ZXN0X3MxNng0ICh0ZXN0X3NldDMsIGFuc3dfc2V0MywgNjQsIDE2LCA0KTsKKyAgaW50 IG81ID0gcnVuX3Rlc3RfczE2eDQgKHRlc3Rfc2V0NCwgYW5zd19zZXQ0LCA2NCwgMTYsIDEpOwog Ci0gIHJldHVybiAwOworICByZXR1cm4gbzF8fG8yfHxvM3x8bzR8fG81OwogfQogCiAvKiBEb3Vi bGUgc2Nhbi1hc3NlbWJsZXItdGltZXMgdG8gdGFrZSBhY2NvdW50IG9mIHVuc2lnbmVkIGZ1bmN0 aW9ucy4gICovCi0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImNselxcdHZc WzAtOVxdK1wuNGgsIHZcWzAtOVxdK1wuNGgiIDEwfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nh bi1hc3NlbWJsZXItdGltZXMgImNselxcdHZcWzAtOVxdK1wuNGgsIHZcWzAtOVxdK1wuNGgiIDJ9 IH0gKi8KIAogaW50IF9fYXR0cmlidXRlX18gKChub2lubGluZSkpCiB0ZXN0X3ZjbHpfczMyICgp CiB7Ci0gIGludCBpOwotICBpbnQzMngyX3QgYTsKLSAgaW50MzJ4Ml90IGI7Ci0KICAgaW50MzJf dCB0ZXN0X3NldDBbMl0gPSB7IFRFU1QwLCBURVNUMSB9OwogICBpbnQzMl90IHRlc3Rfc2V0MVsy XSA9IHsgVEVTVDIsIFRFU1QzIH07CiAgIGludDMyX3QgdGVzdF9zZXQyWzJdID0geyBURVNUNCwg VEVTVDUgfTsKQEAgLTE4MSwzNyArMjEzLDM0IEBAIHRlc3RfdmNsel9zMzIgKCkKICAgaW50MzJf dCBhbnN3X3NldDE1WzJdID0geyAyLCAxIH07CiAgIGludDMyX3QgYW5zd19zZXQxNlsyXSA9IHsg MCwgMCB9OwogCi0gIFJVTl9URVNUICh0ZXN0X3NldDAsIGFuc3dfc2V0MCwgNjQsIDMyLCAxLCAy KTsKLSAgUlVOX1RFU1QgKHRlc3Rfc2V0MSwgYW5zd19zZXQxLCA2NCwgMzIsIDEsIDIpOwotICBS VU5fVEVTVCAodGVzdF9zZXQyLCBhbnN3X3NldDIsIDY0LCAzMiwgMSwgMik7Ci0gIFJVTl9URVNU ICh0ZXN0X3NldDMsIGFuc3dfc2V0MywgNjQsIDMyLCAxLCAyKTsKLSAgUlVOX1RFU1QgKHRlc3Rf c2V0NCwgYW5zd19zZXQ0LCA2NCwgMzIsIDEsIDIpOwotICBSVU5fVEVTVCAodGVzdF9zZXQ1LCBh bnN3X3NldDUsIDY0LCAzMiwgMSwgMik7Ci0gIFJVTl9URVNUICh0ZXN0X3NldDYsIGFuc3dfc2V0 NiwgNjQsIDMyLCAxLCAyKTsKLSAgUlVOX1RFU1QgKHRlc3Rfc2V0NywgYW5zd19zZXQ3LCA2NCwg MzIsIDEsIDIpOwotICBSVU5fVEVTVCAodGVzdF9zZXQ4LCBhbnN3X3NldDgsIDY0LCAzMiwgMSwg Mik7Ci0gIFJVTl9URVNUICh0ZXN0X3NldDksIGFuc3dfc2V0OSwgNjQsIDMyLCAxLCAyKTsKLSAg UlVOX1RFU1QgKHRlc3Rfc2V0MTAsIGFuc3dfc2V0MTAsIDY0LCAzMiwgMSwgMik7Ci0gIFJVTl9U RVNUICh0ZXN0X3NldDExLCBhbnN3X3NldDExLCA2NCwgMzIsIDEsIDIpOwotICBSVU5fVEVTVCAo dGVzdF9zZXQxMiwgYW5zd19zZXQxMiwgNjQsIDMyLCAxLCAyKTsKLSAgUlVOX1RFU1QgKHRlc3Rf c2V0MTMsIGFuc3dfc2V0MTMsIDY0LCAzMiwgMSwgMik7Ci0gIFJVTl9URVNUICh0ZXN0X3NldDE0 LCBhbnN3X3NldDE0LCA2NCwgMzIsIDEsIDIpOwotICBSVU5fVEVTVCAodGVzdF9zZXQxNSwgYW5z d19zZXQxNSwgNjQsIDMyLCAxLCAyKTsKLSAgUlVOX1RFU1QgKHRlc3Rfc2V0MTYsIGFuc3dfc2V0 MTYsIDY0LCAzMiwgMSwgMSk7Ci0KLSAgcmV0dXJuIDA7CisgIGludCBvMSA9IHJ1bl90ZXN0X3Mz MngyICh0ZXN0X3NldDAsIGFuc3dfc2V0MCwgNjQsIDMyLCAyKTsKKyAgaW50IG8yID0gcnVuX3Rl c3RfczMyeDIgKHRlc3Rfc2V0MSwgYW5zd19zZXQxLCA2NCwgMzIsIDIpOworICBpbnQgbzMgPSBy dW5fdGVzdF9zMzJ4MiAodGVzdF9zZXQyLCBhbnN3X3NldDIsIDY0LCAzMiwgMik7CisgIGludCBv NCA9IHJ1bl90ZXN0X3MzMngyICh0ZXN0X3NldDMsIGFuc3dfc2V0MywgNjQsIDMyLCAyKTsKKyAg aW50IG81ID0gcnVuX3Rlc3RfczMyeDIgKHRlc3Rfc2V0NCwgYW5zd19zZXQ0LCA2NCwgMzIsIDIp OworICBpbnQgbzYgPSBydW5fdGVzdF9zMzJ4MiAodGVzdF9zZXQ1LCBhbnN3X3NldDUsIDY0LCAz MiwgMik7CisgIGludCBvNyA9IHJ1bl90ZXN0X3MzMngyICh0ZXN0X3NldDYsIGFuc3dfc2V0Niwg NjQsIDMyLCAyKTsKKyAgaW50IG84ID0gcnVuX3Rlc3RfczMyeDIgKHRlc3Rfc2V0NywgYW5zd19z ZXQ3LCA2NCwgMzIsIDIpOworICBpbnQgbzkgPSBydW5fdGVzdF9zMzJ4MiAodGVzdF9zZXQ4LCBh bnN3X3NldDgsIDY0LCAzMiwgMik7CisgIGludCBvMTAgPSBydW5fdGVzdF9zMzJ4MiAodGVzdF9z ZXQ5LCBhbnN3X3NldDksIDY0LCAzMiwgMik7CisgIGludCBvMTEgPSBydW5fdGVzdF9zMzJ4MiAo dGVzdF9zZXQxMCwgYW5zd19zZXQxMCwgNjQsIDMyLCAyKTsKKyAgaW50IG8xMiA9IHJ1bl90ZXN0 X3MzMngyICh0ZXN0X3NldDExLCBhbnN3X3NldDExLCA2NCwgMzIsIDIpOworICBpbnQgbzEzID0g cnVuX3Rlc3RfczMyeDIgKHRlc3Rfc2V0MTIsIGFuc3dfc2V0MTIsIDY0LCAzMiwgMik7CisgIGlu dCBvMTQgPSBydW5fdGVzdF9zMzJ4MiAodGVzdF9zZXQxMywgYW5zd19zZXQxMywgNjQsIDMyLCAy KTsKKyAgaW50IG8xNSA9IHJ1bl90ZXN0X3MzMngyICh0ZXN0X3NldDE0LCBhbnN3X3NldDE0LCA2 NCwgMzIsIDIpOworICBpbnQgbzE2ID0gcnVuX3Rlc3RfczMyeDIgKHRlc3Rfc2V0MTUsIGFuc3df c2V0MTUsIDY0LCAzMiwgMik7CisgIGludCBvMTcgPSBydW5fdGVzdF9zMzJ4MiAodGVzdF9zZXQx NiwgYW5zd19zZXQxNiwgNjQsIDMyLCAxKTsKKworICByZXR1cm4gbzF8fG8yfHxvM3x8bzR8fG81 fHxvNnx8bzd8fG84fHxvOXx8bzEwfHxvMTF8fG8xMnx8bzEzfHxvMTQKKyAgICB8fG8xNXx8bzE2 fHxvMTc7CiB9CiAKIC8qIERvdWJsZSBzY2FuLWFzc2VtYmxlci10aW1lcyB0byB0YWtlIGFjY291 bnQgb2YgdW5zaWduZWQgZnVuY3Rpb25zLiAgKi8KLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2Vt Ymxlci10aW1lcyAiY2x6XFx0dlxbMC05XF0rXC4ycywgdlxbMC05XF0rXC4ycyIgMzQgfSB9ICov CisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImNselxcdHZcWzAtOVxdK1wu MnMsIHZcWzAtOVxdK1wuMnMiICAyIH0gfSAqLwogCiBpbnQgX19hdHRyaWJ1dGVfXyAoKG5vaW5s aW5lKSkKIHRlc3RfdmNsenFfczggKCkKIHsKLSAgaW50IGk7Ci0gIGludDh4MTZfdCBhOwotICBp bnQ4eDE2X3QgYjsKLQogICBpbnQ4X3QgdGVzdF9zZXQwWzE2XSA9IHsKICAgICBURVNUMCwgVEVT VDEsIFRFU1QyLCBURVNUMywgVEVTVDQsIFRFU1Q1LCBURVNUNiwgVEVTVDcsCiAgICAgVEVTVDgs IFRFU1Q4LCBURVNUOCwgVEVTVDgsIFRFU1Q4LCBURVNUOCwgVEVTVDgsIFRFU1Q4CkBAIC0yMTks OCArMjQ4LDggQEAgdGVzdF92Y2x6cV9zOCAoKQogICBpbnQ4X3QgYW5zd19zZXQwWzE2XSA9IHsK ICAgICA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwCiAgIH07 Ci0gIFJVTl9URVNUICh0ZXN0X3NldDAsIGFuc3dfc2V0MCwgMTI4LCA4LCAxLCA5KTsKLSAgcmV0 dXJuIDA7CisgIGludCBvMSA9IHJ1bl90ZXN0cV9zOHgxNiAodGVzdF9zZXQwLCBhbnN3X3NldDAs IDEyOCwgOCwgOSk7CisgIHJldHVybiBvMTsKIH0KIAogLyogRG91YmxlIHNjYW4tYXNzZW1ibGVy LXRpbWVzIHRvIHRha2UgYWNjb3VudCBvZiB1bnNpZ25lZCBmdW5jdGlvbnMuICAqLwpAQCAtMjI5 LDEwICsyNTgsNiBAQCB0ZXN0X3ZjbHpxX3M4ICgpCiBpbnQgX19hdHRyaWJ1dGVfXyAoKG5vaW5s aW5lKSkKIHRlc3RfdmNsenFfczE2ICgpCiB7Ci0gIGludCBpOwotICBpbnQxNng4X3QgYTsKLSAg aW50MTZ4OF90IGI7Ci0KICAgaW50MTZfdCB0ZXN0X3NldDBbOF0gPSB7CiAgICAgVEVTVDAsIFRF U1QxLCBURVNUMiwgVEVTVDMsIFRFU1Q0LCBURVNUNSwgVEVTVDYsIFRFU1Q3CiAgIH07CkBAIC0y NTIsMjMgKzI3NywxOSBAQCB0ZXN0X3ZjbHpxX3MxNiAoKQogICBpbnQxNl90IGFuc3dfc2V0Mls4 XSA9IHsKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwCiAgIH07Ci0gIFJVTl9URVNUICh0ZXN0 X3NldDAsIGFuc3dfc2V0MCwgMTI4LCAxNiwgMSwgOCk7Ci0gIFJVTl9URVNUICh0ZXN0X3NldDEs IGFuc3dfc2V0MSwgMTI4LCAxNiwgMSwgOCk7Ci0gIFJVTl9URVNUICh0ZXN0X3NldDIsIGFuc3df c2V0MiwgMTI4LCAxNiwgMSwgMSk7CisgIGludCBvMSA9IHJ1bl90ZXN0cV9zMTZ4OCAodGVzdF9z ZXQwLCBhbnN3X3NldDAsIDEyOCwgMTYsIDgpOworICBpbnQgbzIgPSBydW5fdGVzdHFfczE2eDgg KHRlc3Rfc2V0MSwgYW5zd19zZXQxLCAxMjgsIDE2LCA4KTsKKyAgaW50IG8zID0gcnVuX3Rlc3Rx X3MxNng4ICh0ZXN0X3NldDIsIGFuc3dfc2V0MiwgMTI4LCAxNiwgMSk7CiAKLSAgcmV0dXJuIDA7 CisgIHJldHVybiBvMXx8bzJ8fG8zOwogfQogCiAvKiBEb3VibGUgc2Nhbi1hc3NlbWJsZXItdGlt ZXMgdG8gdGFrZSBhY2NvdW50IG9mIHVuc2lnbmVkIGZ1bmN0aW9ucy4gICovCi0vKiB7IGRnLWZp bmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImNselxcdHZcWzAtOVxdK1wuOGgsIHZcWzAtOVxd K1wuOGgiIDYgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImNs elxcdHZcWzAtOVxdK1wuOGgsIHZcWzAtOVxdK1wuOGgiIDIgfSB9ICovCiAKIGludCBfX2F0dHJp YnV0ZV9fICgobm9pbmxpbmUpKQogdGVzdF92Y2x6cV9zMzIgKCkKIHsKLSAgaW50IGk7Ci0gIGlu dDMyeDRfdCBhOwotICBpbnQzMng0X3QgYjsKLQogICBpbnQzMl90IHRlc3Rfc2V0MFs0XSA9IHsg VEVTVDAsIFRFU1QxLCBURVNUMiwgVEVTVDMgfTsKICAgaW50MzJfdCB0ZXN0X3NldDFbNF0gPSB7 IFRFU1Q0LCBURVNUNSwgVEVTVDYsIFRFU1Q3IH07CiAgIGludDMyX3QgdGVzdF9zZXQyWzRdID0g eyBURVNUOCwgVEVTVDksIFRFU1QxMCwgVEVTVDExIH07CkBAIC0yODksMjcgKzMxMCwyMyBAQCB0 ZXN0X3ZjbHpxX3MzMiAoKQogICBpbnQzMl90IGFuc3dfc2V0N1s0XSA9IHsgNCwgMywgMiwgMSB9 OwogICBpbnQzMl90IGFuc3dfc2V0OFs0XSA9IHsgMCwgMCwgMCwgMCB9OwogCi0gIFJVTl9URVNU ICh0ZXN0X3NldDAsIGFuc3dfc2V0MCwgMTI4LCAzMiwgMSwgNCk7Ci0gIFJVTl9URVNUICh0ZXN0 X3NldDEsIGFuc3dfc2V0MSwgMTI4LCAzMiwgMSwgNCk7Ci0gIFJVTl9URVNUICh0ZXN0X3NldDIs IGFuc3dfc2V0MiwgMTI4LCAzMiwgMSwgNCk7Ci0gIFJVTl9URVNUICh0ZXN0X3NldDMsIGFuc3df c2V0MywgMTI4LCAzMiwgMSwgNCk7Ci0gIFJVTl9URVNUICh0ZXN0X3NldDQsIGFuc3dfc2V0NCwg MTI4LCAzMiwgMSwgMSk7CisgIGludCBvMSA9IHJ1bl90ZXN0cV9zMzJ4NCAodGVzdF9zZXQwLCBh bnN3X3NldDAsIDEyOCwgMzIsIDQpOworICBpbnQgbzIgPSBydW5fdGVzdHFfczMyeDQgKHRlc3Rf c2V0MSwgYW5zd19zZXQxLCAxMjgsIDMyLCA0KTsKKyAgaW50IG8zID0gcnVuX3Rlc3RxX3MzMng0 ICh0ZXN0X3NldDIsIGFuc3dfc2V0MiwgMTI4LCAzMiwgNCk7CisgIGludCBvNCA9IHJ1bl90ZXN0 cV9zMzJ4NCAodGVzdF9zZXQzLCBhbnN3X3NldDMsIDEyOCwgMzIsIDQpOworICBpbnQgbzUgPSBy dW5fdGVzdHFfczMyeDQgKHRlc3Rfc2V0NCwgYW5zd19zZXQ0LCAxMjgsIDMyLCAxKTsKIAotICBy ZXR1cm4gMDsKKyAgcmV0dXJuIG8xfHxvMnx8bzN8fG80fHxvNTsKIH0KIAogLyogRG91YmxlIHNj YW4tYXNzZW1ibGVyLXRpbWVzIHRvIHRha2UgYWNjb3VudCBvZiB1bnNpZ25lZCBmdW5jdGlvbnMu ICAqLwotLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJjbHpcXHR2XFswLTlc XStcLjRzLCB2XFswLTlcXStcLjRzIiAxMCB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFz c2VtYmxlci10aW1lcyAiY2x6XFx0dlxbMC05XF0rXC40cywgdlxbMC05XF0rXC40cyIgMiB9IH0g Ki8KIAogLyogVW5zaWduZWQgdmVyc2lvbnMuICAqLwogCiBpbnQgX19hdHRyaWJ1dGVfXyAoKG5v aW5saW5lKSkKIHRlc3RfdmNsel91OCAoKQogewotICBpbnQgaTsKLSAgdWludDh4OF90IGE7Ci0g IHVpbnQ4eDhfdCBiOwotCiAgIHVpbnQ4X3QgdGVzdF9zZXQwWzhdID0gewogICAgIFRFU1QwLCBU RVNUMSwgVEVTVDIsIFRFU1QzLCBURVNUNCwgVEVTVDUsIFRFU1Q2LCBURVNUNwogICB9OwpAQCAt MzIzLDEwICszNDAsMTAgQEAgdGVzdF92Y2x6X3U4ICgpCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwg MCwgMAogICB9OwogCi0gIFJVTl9URVNUICh0ZXN0X3NldDAsIGFuc3dfc2V0MCwgNjQsIDgsIDAs IDgpOwotICBSVU5fVEVTVCAodGVzdF9zZXQxLCBhbnN3X3NldDEsIDY0LCA4LCAwLCAxKTsKKyAg aW50IG8xID0gcnVuX3Rlc3RfdTh4OCAodGVzdF9zZXQwLCBhbnN3X3NldDAsIDY0LCA4LCA4KTsK KyAgaW50IG8yID0gcnVuX3Rlc3RfdTh4OCAodGVzdF9zZXQxLCBhbnN3X3NldDEsIDY0LCA4LCAx KTsKIAotICByZXR1cm4gMDsKKyAgcmV0dXJuIG8xfHxvMjsKIH0KIAogLyogQVNNIHNjYW4gbmVh ciB0ZXN0IGZvciBzaWduZWQgdmVyc2lvbi4gICovCkBAIC0zMzQsMTAgKzM1MSw2IEBAIHRlc3Rf dmNsel91OCAoKQogaW50IF9fYXR0cmlidXRlX18gKChub2lubGluZSkpCiB0ZXN0X3ZjbHpfdTE2 ICgpCiB7Ci0gIGludCBpOwotICB1aW50MTZ4NF90IGE7Ci0gIHVpbnQxNng0X3QgYjsKLQogICB1 aW50MTZfdCB0ZXN0X3NldDBbNF0gPSB7IFRFU1QwLCBURVNUMSwgVEVTVDIsIFRFU1QzIH07CiAg IHVpbnQxNl90IHRlc3Rfc2V0MVs0XSA9IHsgVEVTVDQsIFRFU1Q1LCBURVNUNiwgVEVTVDcgfTsK ICAgdWludDE2X3QgdGVzdF9zZXQyWzRdID0geyBURVNUOCwgVEVTVDksIFRFU1QxMCwgVEVTVDEx IH07CkBAIC0zNTAsMTMgKzM2MywxMyBAQCB0ZXN0X3ZjbHpfdTE2ICgpCiAgIHVpbnQxNl90IGFu c3dfc2V0M1s0XSA9IHsgNCwgMywgMiwgMSB9OwogICB1aW50MTZfdCBhbnN3X3NldDRbNF0gPSB7 IDAsIDAsIDAsIDAgfTsKIAotICBSVU5fVEVTVCAodGVzdF9zZXQwLCBhbnN3X3NldDAsIDY0LCAx NiwgMCwgNCk7Ci0gIFJVTl9URVNUICh0ZXN0X3NldDEsIGFuc3dfc2V0MSwgNjQsIDE2LCAwLCA0 KTsKLSAgUlVOX1RFU1QgKHRlc3Rfc2V0MiwgYW5zd19zZXQyLCA2NCwgMTYsIDAsIDQpOwotICBS VU5fVEVTVCAodGVzdF9zZXQzLCBhbnN3X3NldDMsIDY0LCAxNiwgMCwgNCk7Ci0gIFJVTl9URVNU ICh0ZXN0X3NldDQsIGFuc3dfc2V0NCwgNjQsIDE2LCAwLCAxKTsKKyAgaW50IG8xID0gcnVuX3Rl c3RfdTE2eDQgKHRlc3Rfc2V0MCwgYW5zd19zZXQwLCA2NCwgMTYsIDQpOworICBpbnQgbzIgPSBy dW5fdGVzdF91MTZ4NCAodGVzdF9zZXQxLCBhbnN3X3NldDEsIDY0LCAxNiwgNCk7CisgIGludCBv MyA9IHJ1bl90ZXN0X3UxNng0ICh0ZXN0X3NldDIsIGFuc3dfc2V0MiwgNjQsIDE2LCA0KTsKKyAg aW50IG80ID0gcnVuX3Rlc3RfdTE2eDQgKHRlc3Rfc2V0MywgYW5zd19zZXQzLCA2NCwgMTYsIDQp OworICBpbnQgbzUgPSBydW5fdGVzdF91MTZ4NCAodGVzdF9zZXQ0LCBhbnN3X3NldDQsIDY0LCAx NiwgMSk7CiAKLSAgcmV0dXJuIDA7CisgIHJldHVybiBvMXx8bzJ8fG8zfHxvNHx8bzU7CiB9CiAK IC8qIEFTTSBzY2FuIG5lYXIgdGVzdCBmb3Igc2lnbmVkIHZlcnNpb24uICAqLwpAQCAtMzY0LDEw ICszNzcsNiBAQCB0ZXN0X3ZjbHpfdTE2ICgpCiBpbnQgX19hdHRyaWJ1dGVfXyAoKG5vaW5saW5l KSkKIHRlc3RfdmNsel91MzIgKCkKIHsKLSAgaW50IGk7Ci0gIHVpbnQzMngyX3QgYTsKLSAgdWlu dDMyeDJfdCBiOwotCiAgIHVpbnQzMl90IHRlc3Rfc2V0MFsyXSA9IHsgVEVTVDAsIFRFU1QxIH07 CiAgIHVpbnQzMl90IHRlc3Rfc2V0MVsyXSA9IHsgVEVTVDIsIFRFU1QzIH07CiAgIHVpbnQzMl90 IHRlc3Rfc2V0MlsyXSA9IHsgVEVTVDQsIFRFU1Q1IH07CkBAIC00MDQsMjUgKzQxMywyNiBAQCB0 ZXN0X3ZjbHpfdTMyICgpCiAgIHVpbnQzMl90IGFuc3dfc2V0MTVbMl0gPSB7IDIsIDEgfTsKICAg dWludDMyX3QgYW5zd19zZXQxNlsyXSA9IHsgMCwgMCB9OwogCi0gIFJVTl9URVNUICh0ZXN0X3Nl dDAsIGFuc3dfc2V0MCwgNjQsIDMyLCAwLCAyKTsKLSAgUlVOX1RFU1QgKHRlc3Rfc2V0MSwgYW5z d19zZXQxLCA2NCwgMzIsIDAsIDIpOwotICBSVU5fVEVTVCAodGVzdF9zZXQyLCBhbnN3X3NldDIs IDY0LCAzMiwgMCwgMik7Ci0gIFJVTl9URVNUICh0ZXN0X3NldDMsIGFuc3dfc2V0MywgNjQsIDMy LCAwLCAyKTsKLSAgUlVOX1RFU1QgKHRlc3Rfc2V0NCwgYW5zd19zZXQ0LCA2NCwgMzIsIDAsIDIp OwotICBSVU5fVEVTVCAodGVzdF9zZXQ1LCBhbnN3X3NldDUsIDY0LCAzMiwgMCwgMik7Ci0gIFJV Tl9URVNUICh0ZXN0X3NldDYsIGFuc3dfc2V0NiwgNjQsIDMyLCAwLCAyKTsKLSAgUlVOX1RFU1Qg KHRlc3Rfc2V0NywgYW5zd19zZXQ3LCA2NCwgMzIsIDAsIDIpOwotICBSVU5fVEVTVCAodGVzdF9z ZXQ4LCBhbnN3X3NldDgsIDY0LCAzMiwgMCwgMik7Ci0gIFJVTl9URVNUICh0ZXN0X3NldDksIGFu c3dfc2V0OSwgNjQsIDMyLCAwLCAyKTsKLSAgUlVOX1RFU1QgKHRlc3Rfc2V0MTAsIGFuc3dfc2V0 MTAsIDY0LCAzMiwgMCwgMik7Ci0gIFJVTl9URVNUICh0ZXN0X3NldDExLCBhbnN3X3NldDExLCA2 NCwgMzIsIDAsIDIpOwotICBSVU5fVEVTVCAodGVzdF9zZXQxMiwgYW5zd19zZXQxMiwgNjQsIDMy LCAwLCAyKTsKLSAgUlVOX1RFU1QgKHRlc3Rfc2V0MTMsIGFuc3dfc2V0MTMsIDY0LCAzMiwgMCwg Mik7Ci0gIFJVTl9URVNUICh0ZXN0X3NldDE0LCBhbnN3X3NldDE0LCA2NCwgMzIsIDAsIDIpOwot ICBSVU5fVEVTVCAodGVzdF9zZXQxNSwgYW5zd19zZXQxNSwgNjQsIDMyLCAwLCAyKTsKLSAgUlVO X1RFU1QgKHRlc3Rfc2V0MTYsIGFuc3dfc2V0MTYsIDY0LCAzMiwgMCwgMSk7Ci0KLSAgcmV0dXJu IDA7CisgIGludCBvMSA9IHJ1bl90ZXN0X3UzMngyICh0ZXN0X3NldDAsIGFuc3dfc2V0MCwgNjQs IDMyLCAyKTsKKyAgaW50IG8yID0gcnVuX3Rlc3RfdTMyeDIgKHRlc3Rfc2V0MSwgYW5zd19zZXQx LCA2NCwgMzIsIDIpOworICBpbnQgbzMgPSBydW5fdGVzdF91MzJ4MiAodGVzdF9zZXQyLCBhbnN3 X3NldDIsIDY0LCAzMiwgMik7CisgIGludCBvNCA9IHJ1bl90ZXN0X3UzMngyICh0ZXN0X3NldDMs IGFuc3dfc2V0MywgNjQsIDMyLCAyKTsKKyAgaW50IG81ID0gcnVuX3Rlc3RfdTMyeDIgKHRlc3Rf c2V0NCwgYW5zd19zZXQ0LCA2NCwgMzIsIDIpOworICBpbnQgbzYgPSBydW5fdGVzdF91MzJ4MiAo dGVzdF9zZXQ1LCBhbnN3X3NldDUsIDY0LCAzMiwgMik7CisgIGludCBvNyA9IHJ1bl90ZXN0X3Uz MngyICh0ZXN0X3NldDYsIGFuc3dfc2V0NiwgNjQsIDMyLCAyKTsKKyAgaW50IG84ID0gcnVuX3Rl c3RfdTMyeDIgKHRlc3Rfc2V0NywgYW5zd19zZXQ3LCA2NCwgMzIsIDIpOworICBpbnQgbzkgPSBy dW5fdGVzdF91MzJ4MiAodGVzdF9zZXQ4LCBhbnN3X3NldDgsIDY0LCAzMiwgMik7CisgIGludCBv MTAgPSBydW5fdGVzdF91MzJ4MiAodGVzdF9zZXQ5LCBhbnN3X3NldDksIDY0LCAzMiwgMik7Cisg IGludCBvMTEgPSBydW5fdGVzdF91MzJ4MiAodGVzdF9zZXQxMCwgYW5zd19zZXQxMCwgNjQsIDMy LCAyKTsKKyAgaW50IG8xMiA9IHJ1bl90ZXN0X3UzMngyICh0ZXN0X3NldDExLCBhbnN3X3NldDEx LCA2NCwgMzIsIDIpOworICBpbnQgbzEzID0gcnVuX3Rlc3RfdTMyeDIgKHRlc3Rfc2V0MTIsIGFu c3dfc2V0MTIsIDY0LCAzMiwgMik7CisgIGludCBvMTQgPSBydW5fdGVzdF91MzJ4MiAodGVzdF9z ZXQxMywgYW5zd19zZXQxMywgNjQsIDMyLCAyKTsKKyAgaW50IG8xNSA9IHJ1bl90ZXN0X3UzMngy ICh0ZXN0X3NldDE0LCBhbnN3X3NldDE0LCA2NCwgMzIsIDIpOworICBpbnQgbzE2ID0gcnVuX3Rl c3RfdTMyeDIgKHRlc3Rfc2V0MTUsIGFuc3dfc2V0MTUsIDY0LCAzMiwgMik7CisgIGludCBvMTcg PSBydW5fdGVzdF91MzJ4MiAodGVzdF9zZXQxNiwgYW5zd19zZXQxNiwgNjQsIDMyLCAxKTsKKwor ICByZXR1cm4gbzF8fG8yfHxvM3x8bzR8fG81fHxvNnx8bzd8fG84fHxvOXx8bzEwfHxvMTF8fG8x Mnx8bzEzfHxvMTQKKyAgICAgICAgfHxvMTV8fG8xNnx8bzE3OwogfQogCiAvKiBBU00gc2NhbiBu ZWFyIHRlc3QgZm9yIHNpZ25lZCB2ZXJzaW9uLiAgKi8KQEAgLTQ0MSw5ICs0NTEsOSBAQCB0ZXN0 X3ZjbHpxX3U4ICgpCiAgIHVpbnQ4X3QgYW5zd19zZXQwWzE2XSA9IHsKICAgICA4LCA3LCA2LCA1 LCA0LCAzLCAyLCAxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwCiAgIH07Ci0gIFJVTl9URVNUICh0 ZXN0X3NldDAsIGFuc3dfc2V0MCwgMTI4LCA4LCAwLCA5KTsKKyAgaW50IG8xID0gcnVuX3Rlc3Rx X3U4eDE2ICh0ZXN0X3NldDAsIGFuc3dfc2V0MCwgMTI4LCA4LCA5KTsKIAotICByZXR1cm4gMDsK KyAgcmV0dXJuIG8xOwogfQogCiAvKiBBU00gc2NhbiBuZWFyIHRlc3QgZm9yIHNpZ25lZCB2ZXJz aW9uLiAgKi8KQEAgLTQ3NiwxMSArNDg2LDExIEBAIHRlc3RfdmNsenFfdTE2ICgpCiAgICAgMCwg MCwgMCwgMCwgMCwgMCwgMCwgMAogICB9OwogCi0gIFJVTl9URVNUICh0ZXN0X3NldDAsIGFuc3df c2V0MCwgMTI4LCAxNiwgMCwgOCk7Ci0gIFJVTl9URVNUICh0ZXN0X3NldDEsIGFuc3dfc2V0MSwg MTI4LCAxNiwgMCwgOCk7Ci0gIFJVTl9URVNUICh0ZXN0X3NldDIsIGFuc3dfc2V0MiwgMTI4LCAx NiwgMCwgMSk7CisgIGludCBvMSA9IHJ1bl90ZXN0cV91MTZ4OCAodGVzdF9zZXQwLCBhbnN3X3Nl dDAsIDEyOCwgMTYsIDgpOworICBpbnQgbzIgPSBydW5fdGVzdHFfdTE2eDggKHRlc3Rfc2V0MSwg YW5zd19zZXQxLCAxMjgsIDE2LCA4KTsKKyAgaW50IG8zID0gcnVuX3Rlc3RxX3UxNng4ICh0ZXN0 X3NldDIsIGFuc3dfc2V0MiwgMTI4LCAxNiwgMSk7CiAKLSAgcmV0dXJuIDA7CisgIHJldHVybiBv MXx8bzJ8fG8zOwogfQogCiAvKiBBU00gc2NhbiBuZWFyIHRlc3QgZm9yIHNpZ25lZCB2ZXJzaW9u LiAgKi8KQEAgLTQ4OCwxMCArNDk4LDYgQEAgdGVzdF92Y2x6cV91MTYgKCkKIGludCBfX2F0dHJp YnV0ZV9fICgobm9pbmxpbmUpKQogdGVzdF92Y2x6cV91MzIgKCkKIHsKLSAgaW50IGk7Ci0gIHVp bnQzMng0X3QgYTsKLSAgdWludDMyeDRfdCBiOwotCiAgIHVpbnQzMl90IHRlc3Rfc2V0MFs0XSA9 IHsgVEVTVDAsIFRFU1QxLCBURVNUMiwgVEVTVDMgfTsKICAgdWludDMyX3QgdGVzdF9zZXQxWzRd ID0geyBURVNUNCwgVEVTVDUsIFRFU1Q2LCBURVNUNyB9OwogICB1aW50MzJfdCB0ZXN0X3NldDJb NF0gPSB7IFRFU1Q4LCBURVNUOSwgVEVTVDEwLCBURVNUMTEgfTsKQEAgLTUxMiwxMyArNTE4LDEz IEBAIHRlc3RfdmNsenFfdTMyICgpCiAgIHVpbnQzMl90IGFuc3dfc2V0N1s0XSA9IHsgNCwgMywg MiwgMSB9OwogICB1aW50MzJfdCBhbnN3X3NldDhbNF0gPSB7IDAsIDAsIDAsIDAgfTsKIAotICBS VU5fVEVTVCAodGVzdF9zZXQwLCBhbnN3X3NldDAsIDEyOCwgMzIsIDAsIDQpOwotICBSVU5fVEVT VCAodGVzdF9zZXQxLCBhbnN3X3NldDEsIDEyOCwgMzIsIDAsIDQpOwotICBSVU5fVEVTVCAodGVz dF9zZXQyLCBhbnN3X3NldDIsIDEyOCwgMzIsIDAsIDQpOwotICBSVU5fVEVTVCAodGVzdF9zZXQz LCBhbnN3X3NldDMsIDEyOCwgMzIsIDAsIDQpOwotICBSVU5fVEVTVCAodGVzdF9zZXQ0LCBhbnN3 X3NldDQsIDEyOCwgMzIsIDAsIDEpOworICBpbnQgbzEgPSBydW5fdGVzdHFfdTMyeDQgKHRlc3Rf c2V0MCwgYW5zd19zZXQwLCAxMjgsIDMyLCA0KTsKKyAgaW50IG8yID0gcnVuX3Rlc3RxX3UzMng0 ICh0ZXN0X3NldDEsIGFuc3dfc2V0MSwgMTI4LCAzMiwgNCk7CisgIGludCBvMyA9IHJ1bl90ZXN0 cV91MzJ4NCAodGVzdF9zZXQyLCBhbnN3X3NldDIsIDEyOCwgMzIsIDQpOworICBpbnQgbzQgPSBy dW5fdGVzdHFfdTMyeDQgKHRlc3Rfc2V0MywgYW5zd19zZXQzLCAxMjgsIDMyLCA0KTsKKyAgaW50 IG81ID0gcnVuX3Rlc3RxX3UzMng0ICh0ZXN0X3NldDQsIGFuc3dfc2V0NCwgMTI4LCAzMiwgMSk7 CiAKLSAgcmV0dXJuIDA7CisgIHJldHVybiBvMXx8bzJ8fG8zfHxvNHx8bzU7CiB9CiAKIC8qIEFT TSBzY2FuIG5lYXIgdGVzdCBmb3Igc2lnbmVkIHZlcnNpb24uICAqLwpkaWZmIC0tZ2l0IGEvZ2Nj L3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvdm5lZ19zLmMgYi9nY2MvdGVzdHN1aXRlL2dj Yy50YXJnZXQvYWFyY2g2NC92bmVnX3MuYwppbmRleCA2OTQ3NTI2YWJkZDRmNDljZjU2MDY2MTUz MWU5NmZlYjliOTM0ZWI1Li44ZGRjNGQyMWMxZjg5ZDZjNjY2MjRhMzNlZTAzODZjYjNhMjhjNTEy IDEwMDY0NAotLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC92bmVnX3MuYwor KysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC92bmVnX3MuYwpAQCAtMzEsNDkg KzMxLDI0IEBACiAKIGV4dGVybiB2b2lkIGFib3J0ICh2b2lkKTsKIAotI2RlZmluZSBDT05DQVQo YSwgYikgYSMjYgotI2RlZmluZSBDT05DQVQxKGEsIGIpIENPTkNBVCAoYSwgYikKLSNkZWZpbmUg UkVHX0lORkVYNjQgXwotI2RlZmluZSBSRUdfSU5GRVgxMjggcV8KLSNkZWZpbmUgUkVHX0lORkVY KHJlZ19sZW4pIFJFR19JTkZFWCMjcmVnX2xlbgotI2RlZmluZSBQT1NURklYKHJlZ19sZW4sIGRh dGFfbGVuKSBcCi0gIENPTkNBVDEgKFJFR19JTkZFWCAocmVnX2xlbiksIHMjI2RhdGFfbGVuKQot I2RlZmluZSBEQVRBX1RZUEVfMzIgZmxvYXQKLSNkZWZpbmUgREFUQV9UWVBFXzY0IGRvdWJsZQot I2RlZmluZSBEQVRBX1RZUEUoZGF0YV9sZW4pIERBVEFfVFlQRV8jI2RhdGFfbGVuCi0KLSNkZWZp bmUgRk9SQ0VfU0lNRF9JTlNUNjRfOChkYXRhKQotI2RlZmluZSBGT1JDRV9TSU1EX0lOU1Q2NF8x NihkYXRhKQotI2RlZmluZSBGT1JDRV9TSU1EX0lOU1Q2NF8zMihkYXRhKQotI2RlZmluZSBGT1JD RV9TSU1EX0lOU1Q2NF82NChkYXRhKSBmb3JjZV9zaW1kIChkYXRhKQotI2RlZmluZSBGT1JDRV9T SU1EX0lOU1QxMjhfOChkYXRhKQotI2RlZmluZSBGT1JDRV9TSU1EX0lOU1QxMjhfMTYoZGF0YSkK LSNkZWZpbmUgRk9SQ0VfU0lNRF9JTlNUMTI4XzMyKGRhdGEpCi0jZGVmaW5lIEZPUkNFX1NJTURf SU5TVDEyOF82NChkYXRhKQotCi0jZGVmaW5lIEZPUkNFX1NJTURfSU5TVChyZWdfbGVuLCBkYXRh X2xlbiwgZGF0YSkgXAotICBDT05DQVQxIChGT1JDRV9TSU1EX0lOU1QsIHJlZ19sZW4jI18jI2Rh dGFfbGVuKSAoZGF0YSkKLSNkZWZpbmUgTE9BRF9JTlNUKHJlZ19sZW4sIGRhdGFfbGVuKSBcCi0g IENPTkNBVDEgKHZsZDEsIFBPU1RGSVggKHJlZ19sZW4sIGRhdGFfbGVuKSkKLSNkZWZpbmUgTkVH X0lOU1QocmVnX2xlbiwgZGF0YV9sZW4pIFwKLSAgQ09OQ0FUMSAodm5lZywgUE9TVEZJWCAocmVn X2xlbiwgZGF0YV9sZW4pKQotCi0jZGVmaW5lIFJVTl9URVNUKHRlc3Rfc2V0LCBhbnN3X3NldCwg cmVnX2xlbiwgZGF0YV9sZW4sIG4sIGEsIGIpCVwKLSAgewkJCQkJCQkJCVwKLSAgICBpbnQgaTsJ CQkJCQkJCVwKLSAgICBJTkhJQl9PUFRJTUlaQVRJT047CQkJCQkJCVwKLSAgICAoYSkgPSBMT0FE X0lOU1QgKHJlZ19sZW4sIGRhdGFfbGVuKSAodGVzdF9zZXQpOwkJCVwKLSAgICAoYikgPSBMT0FE X0lOU1QgKHJlZ19sZW4sIGRhdGFfbGVuKSAoYW5zd19zZXQpOwkJCVwKLSAgICBGT1JDRV9TSU1E X0lOU1QgKHJlZ19sZW4sIGRhdGFfbGVuLCBhKQkJCQlcCi0gICAgYSA9IE5FR19JTlNUIChyZWdf bGVuLCBkYXRhX2xlbikgKGEpOwkJCQlcCi0gICAgRk9SQ0VfU0lNRF9JTlNUIChyZWdfbGVuLCBk YXRhX2xlbiwgYSkJCQkJXAotICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspCQkJCQkJXAotICAg ICAgewkJCQkJCQkJCVwKLSAgICAgICAgSU5ISUJfT1BUSU1JWkFUSU9OOwkJCQkJCVwKLQlpZiAo YVtpXSAhPSBiW2ldKQkJCQkJCVwKLQkgIHJldHVybiAxOwkJCQkJCQlcCi0gICAgICB9CQkJCQkJ CQkJXAotICB9CisjZGVmaW5lIEJVSUxEX1RFU1QodHlwZSwgc2l6ZSwgbGFuZXMpCQkJICAgXAor aW50IF9fYXR0cmlidXRlX18oKG5vaXBhLG5vaW5saW5lKSkJCQkgICBcCitydW5fdGVzdCMjdHlw ZSMjc2l6ZSMjeCMjbGFuZXMgKGludCMjc2l6ZSMjX3QqIHRlc3Rfc2V0LCAgIFwKKwkJICAgICAg IGludCMjc2l6ZSMjX3QqIGFuc3dfc2V0LAkJICAgXAorCQkgICAgICAgaW50IHJlZ19sZW4sIGlu dCBkYXRhX2xlbiwgaW50IG4pICAgXAorewkJCQkJCQkgICBcCisgIGludCBpOwkJCQkJCSAgIFwK KyAgaW50IyNzaXplIyN4IyNsYW5lcyMjX3QgYSA9IHZsZDEjI3R5cGUjI3NpemUgKHRlc3Rfc2V0 KTsgXAorICBpbnQjI3NpemUjI3gjI2xhbmVzIyNfdCBiID0gdmxkMSMjdHlwZSMjc2l6ZSAoYW5z d19zZXQpOyBcCisgIGEgPSB2bmVnIyN0eXBlIyNzaXplIChhKTsJCQkJICAgXAorICBmb3IgKGkg PSAwOyBpIDwgbjsgaSsrKQkJCQkgICBcCisgIHsJCQkJICAgIFwKKyAgICBJTkhJQl9PUFRJTUla QVRJT047CQkgICAgXAorICAgIGlmIChhW2ldICE9IGJbaV0pCQkgICAgXAorICAgIHJldHVybiAx OwkJCSAgICBcCisgIH0JCQkJICAgIFwKKyAgcmV0dXJuIDA7CQkJICAgIFwKK30JCQkJICAgIFwK IAogI2RlZmluZSBSVU5fVEVTVF9TQ0FMQVIodGVzdF92YWwsIGFuc3dfdmFsLCBhLCBiKSAgICAg XAogICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XApAQCAtODcsMTIgKzYyLDE5IEBAIGV4dGVybiB2b2lkIGFib3J0ICh2b2lkKTsKICAgICBmb3Jj ZV9zaW1kIChyZXMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgfQogCitC VUlMRF9URVNUIChfcywgOCwgOCkKK0JVSUxEX1RFU1QgKF9zLCAxNiwgNCkKK0JVSUxEX1RFU1Qg KF9zLCAzMiwgMikKK0JVSUxEX1RFU1QgKF9zLCA2NCwgMSkKKworQlVJTERfVEVTVCAocV9zLCA4 LCAxNikKK0JVSUxEX1RFU1QgKHFfcywgMTYsIDgpCitCVUlMRF9URVNUIChxX3MsIDMyLCA0KQor QlVJTERfVEVTVCAocV9zLCA2NCwgMikKKwogaW50IF9fYXR0cmlidXRlX18gKChub2lubGluZSkp CiB0ZXN0X3ZuZWdfczggKCkKIHsKLSAgaW50OHg4X3QgYTsKLSAgaW50OHg4X3QgYjsKLQogICBp bnQ4X3QgdGVzdF9zZXQwWzhdID0gewogICAgIFRFU1QwLCBURVNUMSwgVEVTVDIsIFRFU1QzLCBU RVNUNCwgVEVTVDUsIFNDSEFSX01BWCwgU0NIQVJfTUlOCiAgIH07CkBAIC0xMDAsOSArODIsOSBA QCB0ZXN0X3ZuZWdfczggKCkKICAgICBBTlNXMCwgQU5TVzEsIEFOU1cyLCBBTlNXMywgQU5TVzQs IEFOU1c1LCBTQ0hBUl9NSU4gKyAxLCBTQ0hBUl9NSU4KICAgfTsKIAotICBSVU5fVEVTVCAodGVz dF9zZXQwLCBhbnN3X3NldDAsIDY0LCA4LCA4LCBhLCBiKTsKKyAgaW50IG8xID0gcnVuX3Rlc3Rf czh4OCAodGVzdF9zZXQwLCBhbnN3X3NldDAsIDY0LCA4LCA4KTsKIAotICByZXR1cm4gMDsKKyAg cmV0dXJuIG8xOwogfQogCiAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgIm5l Z1xcdHZcWzAtOVxdK1wuOGIsIHZcWzAtOVxdK1wuOGIiIDEgfSB9ICovCkBAIC0xMTAsMjkgKzky LDIzIEBAIHRlc3Rfdm5lZ19zOCAoKQogaW50IF9fYXR0cmlidXRlX18gKChub2lubGluZSkpCiB0 ZXN0X3ZuZWdfczE2ICgpCiB7Ci0gIGludDE2eDRfdCBhOwotICBpbnQxNng0X3QgYjsKLQogICBp bnQxNl90IHRlc3Rfc2V0MFs0XSA9IHsgVEVTVDAsIFRFU1QxLCBURVNUMiwgVEVTVDMgfTsKICAg aW50MTZfdCB0ZXN0X3NldDFbNF0gPSB7IFRFU1Q0LCBURVNUNSwgU0hSVF9NQVgsIFNIUlRfTUlO IH07CiAKICAgaW50MTZfdCBhbnN3X3NldDBbNF0gPSB7IEFOU1cwLCBBTlNXMSwgQU5TVzIsIEFO U1czIH07CiAgIGludDE2X3QgYW5zd19zZXQxWzRdID0geyBBTlNXNCwgQU5TVzUsIFNIUlRfTUlO ICsgMSwgU0hSVF9NSU4gfTsKIAotICBSVU5fVEVTVCAodGVzdF9zZXQwLCBhbnN3X3NldDAsIDY0 LCAxNiwgNCwgYSwgYik7Ci0gIFJVTl9URVNUICh0ZXN0X3NldDEsIGFuc3dfc2V0MSwgNjQsIDE2 LCA0LCBhLCBiKTsKKyAgaW50IG8xID0gcnVuX3Rlc3RfczE2eDQgKHRlc3Rfc2V0MCwgYW5zd19z ZXQwLCA2NCwgMTYsIDQpOworICBpbnQgbzIgPSBydW5fdGVzdF9zMTZ4NCAodGVzdF9zZXQxLCBh bnN3X3NldDEsIDY0LCAxNiwgNCk7CiAKLSAgcmV0dXJuIDA7CisgIHJldHVybiBvMXx8bzI7CiB9 CiAKLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAibmVnXFx0dlxbMC05XF0r XC40aCwgdlxbMC05XF0rXC40aCIgMiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2Vt Ymxlci10aW1lcyAibmVnXFx0dlxbMC05XF0rXC40aCwgdlxbMC05XF0rXC40aCIgMSB9IH0gKi8K IAogaW50IF9fYXR0cmlidXRlX18gKChub2lubGluZSkpCiB0ZXN0X3ZuZWdfczMyICgpCiB7Ci0g IGludDMyeDJfdCBhOwotICBpbnQzMngyX3QgYjsKLQogICBpbnQzMl90IHRlc3Rfc2V0MFsyXSA9 IHsgVEVTVDAsIFRFU1QxIH07CiAgIGludDMyX3QgdGVzdF9zZXQxWzJdID0geyBURVNUMiwgVEVT VDMgfTsKICAgaW50MzJfdCB0ZXN0X3NldDJbMl0gPSB7IFRFU1Q0LCBURVNUNSB9OwpAQCAtMTQz LDIyICsxMTksMTkgQEAgdGVzdF92bmVnX3MzMiAoKQogICBpbnQzMl90IGFuc3dfc2V0MlsyXSA9 IHsgQU5TVzQsIEFOU1c1IH07CiAgIGludDMyX3QgYW5zd19zZXQzWzJdID0geyBJTlRfTUlOICsg MSwgSU5UX01JTiB9OwogCi0gIFJVTl9URVNUICh0ZXN0X3NldDAsIGFuc3dfc2V0MCwgNjQsIDMy LCAyLCBhLCBiKTsKLSAgUlVOX1RFU1QgKHRlc3Rfc2V0MSwgYW5zd19zZXQxLCA2NCwgMzIsIDIs IGEsIGIpOwotICBSVU5fVEVTVCAodGVzdF9zZXQyLCBhbnN3X3NldDIsIDY0LCAzMiwgMiwgYSwg Yik7Ci0gIFJVTl9URVNUICh0ZXN0X3NldDMsIGFuc3dfc2V0MywgNjQsIDMyLCAyLCBhLCBiKTsK KyAgaW50IG8xID0gcnVuX3Rlc3RfczMyeDIgKHRlc3Rfc2V0MCwgYW5zd19zZXQwLCA2NCwgMzIs IDIpOworICBpbnQgbzIgPSBydW5fdGVzdF9zMzJ4MiAodGVzdF9zZXQxLCBhbnN3X3NldDEsIDY0 LCAzMiwgMik7CisgIGludCBvMyA9IHJ1bl90ZXN0X3MzMngyICh0ZXN0X3NldDIsIGFuc3dfc2V0 MiwgNjQsIDMyLCAyKTsKKyAgaW50IG80ID0gcnVuX3Rlc3RfczMyeDIgKHRlc3Rfc2V0MywgYW5z d19zZXQzLCA2NCwgMzIsIDIpOwogCi0gIHJldHVybiAwOworICByZXR1cm4gbzF8fG8yfHxvM3x8 bzQ7CiB9CiAKLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAibmVnXFx0dlxb MC05XF0rXC4ycywgdlxbMC05XF0rXC4ycyIgNCB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2Fu LWFzc2VtYmxlci10aW1lcyAibmVnXFx0dlxbMC05XF0rXC4ycywgdlxbMC05XF0rXC4ycyIgMSB9 IH0gKi8KIAogaW50IF9fYXR0cmlidXRlX18gKChub2lubGluZSkpCiB0ZXN0X3ZuZWdfczY0ICgp CiB7Ci0gIGludDY0eDFfdCBhOwotICBpbnQ2NHgxX3QgYjsKLQogICBpbnQ2NF90IHRlc3Rfc2V0 MFsxXSA9IHsgVEVTVDAgfTsKICAgaW50NjRfdCB0ZXN0X3NldDFbMV0gPSB7IFRFU1QxIH07CiAg IGludDY0X3QgdGVzdF9zZXQyWzFdID0geyBURVNUMiB9OwpAQCAtMTc3LDE2ICsxNTAsMTYgQEAg dGVzdF92bmVnX3M2NCAoKQogICBpbnQ2NF90IGFuc3dfc2V0NlsxXSA9IHsgTExPTkdfTUlOICsg MSB9OwogICBpbnQ2NF90IGFuc3dfc2V0N1sxXSA9IHsgTExPTkdfTUlOIH07CiAKLSAgUlVOX1RF U1QgKHRlc3Rfc2V0MCwgYW5zd19zZXQwLCA2NCwgNjQsIDEsIGEsIGIpOwotICBSVU5fVEVTVCAo dGVzdF9zZXQxLCBhbnN3X3NldDEsIDY0LCA2NCwgMSwgYSwgYik7Ci0gIFJVTl9URVNUICh0ZXN0 X3NldDIsIGFuc3dfc2V0MiwgNjQsIDY0LCAxLCBhLCBiKTsKLSAgUlVOX1RFU1QgKHRlc3Rfc2V0 MywgYW5zd19zZXQzLCA2NCwgNjQsIDEsIGEsIGIpOwotICBSVU5fVEVTVCAodGVzdF9zZXQ0LCBh bnN3X3NldDQsIDY0LCA2NCwgMSwgYSwgYik7Ci0gIFJVTl9URVNUICh0ZXN0X3NldDUsIGFuc3df c2V0NSwgNjQsIDY0LCAxLCBhLCBiKTsKLSAgUlVOX1RFU1QgKHRlc3Rfc2V0NiwgYW5zd19zZXQ2 LCA2NCwgNjQsIDEsIGEsIGIpOwotICBSVU5fVEVTVCAodGVzdF9zZXQ3LCBhbnN3X3NldDcsIDY0 LCA2NCwgMSwgYSwgYik7CisgIGludCBvMSA9IHJ1bl90ZXN0X3M2NHgxICh0ZXN0X3NldDAsIGFu c3dfc2V0MCwgNjQsIDY0LCAxKTsKKyAgaW50IG8yID0gcnVuX3Rlc3RfczY0eDEgICh0ZXN0X3Nl dDEsIGFuc3dfc2V0MSwgNjQsIDY0LCAxKTsKKyAgaW50IG8zID0gcnVuX3Rlc3RfczY0eDEgKHRl c3Rfc2V0MiwgYW5zd19zZXQyLCA2NCwgNjQsIDEpOworICBpbnQgbzQgPSBydW5fdGVzdF9zNjR4 MSAodGVzdF9zZXQzLCBhbnN3X3NldDMsIDY0LCA2NCwgMSk7CisgIGludCBvNSA9IHJ1bl90ZXN0 X3M2NHgxICh0ZXN0X3NldDQsIGFuc3dfc2V0NCwgNjQsIDY0LCAxKTsKKyAgaW50IG82ID0gcnVu X3Rlc3RfczY0eDEgKHRlc3Rfc2V0NSwgYW5zd19zZXQ1LCA2NCwgNjQsIDEpOworICBpbnQgbzcg PSBydW5fdGVzdF9zNjR4MSAodGVzdF9zZXQ2LCBhbnN3X3NldDYsIDY0LCA2NCwgMSk7CisgIGlu dCBvOCA9IHJ1bl90ZXN0X3M2NHgxICh0ZXN0X3NldDcsIGFuc3dfc2V0NywgNjQsIDY0LCAxKTsK IAotICByZXR1cm4gMDsKKyAgcmV0dXJuIG8xfHxvMnx8bzN8fG80fHxvNXx8bzZ8fG83fHxvODsK IH0KIAogaW50IF9fYXR0cmlidXRlX18gKChub2lubGluZSkpCkBAIC0yMDYsMTQgKzE3OSwxMSBA QCB0ZXN0X3ZuZWdkX3M2NCAoKQogICByZXR1cm4gMDsKIH0KIAotLyogeyBkZy1maW5hbCB7IHNj YW4tYXNzZW1ibGVyLXRpbWVzICJuZWdcXHRkXFswLTlcXSssIGRcWzAtOVxdKyIgMTYgfSB9ICov CisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgIm5lZ1xcdGRcWzAtOVxdKywg ZFxbMC05XF0rIiA4IH0gfSAqLwogCiBpbnQgX19hdHRyaWJ1dGVfXyAoKG5vaW5saW5lKSkKIHRl c3Rfdm5lZ3FfczggKCkKIHsKLSAgaW50OHgxNl90IGE7Ci0gIGludDh4MTZfdCBiOwotCiAgIGlu dDhfdCB0ZXN0X3NldDBbMTZdID0gewogICAgIFRFU1QwLCBURVNUMSwgVEVTVDIsIFRFU1QzLCBU RVNUNCwgVEVTVDUsIFNDSEFSX01BWCwgU0NIQVJfTUlOLAogICAgIDQsIDgsIDE1LCAxNiwgMjMs IDQyLCAtMSwgLTIKQEAgLTIyNCw5ICsxOTQsOSBAQCB0ZXN0X3ZuZWdxX3M4ICgpCiAgICAgLTQs IC04LCAtMTUsIC0xNiwgLTIzLCAtNDIsIDEsIDIKICAgfTsKIAotICBSVU5fVEVTVCAodGVzdF9z ZXQwLCBhbnN3X3NldDAsIDEyOCwgOCwgOCwgYSwgYik7CisgIGludCBvMSA9IHJ1bl90ZXN0cV9z OHgxNiAodGVzdF9zZXQwLCBhbnN3X3NldDAsIDEyOCwgOCwgOCk7CiAKLSAgcmV0dXJuIDA7Cisg IHJldHVybiBvMTsKIH0KIAogLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJu ZWdcXHR2XFswLTlcXStcLjE2YiwgdlxbMC05XF0rXC4xNmIiIDEgfSB9ICovCkBAIC0yMzQsOSAr MjA0LDYgQEAgdGVzdF92bmVncV9zOCAoKQogaW50IF9fYXR0cmlidXRlX18gKChub2lubGluZSkp CiB0ZXN0X3ZuZWdxX3MxNiAoKQogewotICBpbnQxNng4X3QgYTsKLSAgaW50MTZ4OF90IGI7Ci0K ICAgaW50MTZfdCB0ZXN0X3NldDBbOF0gPSB7CiAgICAgVEVTVDAsIFRFU1QxLCBURVNUMiwgVEVT VDMsIFRFU1Q0LCBURVNUNSwgU0hSVF9NQVgsIFNIUlRfTUlOCiAgIH07CkBAIC0yNDQsOSArMjEx LDkgQEAgdGVzdF92bmVncV9zMTYgKCkKICAgICBBTlNXMCwgQU5TVzEsIEFOU1cyLCBBTlNXMywg QU5TVzQsIEFOU1c1LCBTSFJUX01JTiArIDEsIFNIUlRfTUlOCiAgIH07CiAKLSAgUlVOX1RFU1Qg KHRlc3Rfc2V0MCwgYW5zd19zZXQwLCAxMjgsIDE2LCA4LCBhLCBiKTsKKyAgaW50IG8xID0gcnVu X3Rlc3RxX3MxNng4ICh0ZXN0X3NldDAsIGFuc3dfc2V0MCwgMTI4LCAxNiwgOCk7CiAKLSAgcmV0 dXJuIDA7CisgIHJldHVybiBvMTsKIH0KIAogLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVy LXRpbWVzICJuZWdcXHR2XFswLTlcXStcLjhoLCB2XFswLTlcXStcLjhoIiAxIH0gfSAqLwpAQCAt MjU0LDI5ICsyMjEsMjMgQEAgdGVzdF92bmVncV9zMTYgKCkKIGludCBfX2F0dHJpYnV0ZV9fICgo bm9pbmxpbmUpKQogdGVzdF92bmVncV9zMzIgKCkKIHsKLSAgaW50MzJ4NF90IGE7Ci0gIGludDMy eDRfdCBiOwotCiAgIGludDMyX3QgdGVzdF9zZXQwWzRdID0geyBURVNUMCwgVEVTVDEsIFRFU1Qy LCBURVNUMyB9OwogICBpbnQzMl90IHRlc3Rfc2V0MVs0XSA9IHsgVEVTVDQsIFRFU1Q1LCBJTlRf TUFYLCBJTlRfTUlOIH07CiAKICAgaW50MzJfdCBhbnN3X3NldDBbNF0gPSB7IEFOU1cwLCBBTlNX MSwgQU5TVzIsIEFOU1czIH07CiAgIGludDMyX3QgYW5zd19zZXQxWzRdID0geyBBTlNXNCwgQU5T VzUsIElOVF9NSU4gKyAxLCBJTlRfTUlOIH07CiAKLSAgUlVOX1RFU1QgKHRlc3Rfc2V0MCwgYW5z d19zZXQwLCAxMjgsIDMyLCA0LCBhLCBiKTsKLSAgUlVOX1RFU1QgKHRlc3Rfc2V0MSwgYW5zd19z ZXQxLCAxMjgsIDMyLCA0LCBhLCBiKTsKKyAgaW50IG8xID0gcnVuX3Rlc3RxX3MzMng0ICh0ZXN0 X3NldDAsIGFuc3dfc2V0MCwgMTI4LCAzMiwgNCk7CisgIGludCBvMiA9IHJ1bl90ZXN0cV9zMzJ4 NCAodGVzdF9zZXQxLCBhbnN3X3NldDEsIDEyOCwgMzIsIDQpOwogCi0gIHJldHVybiAwOworICBy ZXR1cm4gbzF8fG8yOwogfQogCi0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMg Im5lZ1xcdHZcWzAtOVxdK1wuNHMsIHZcWzAtOVxdK1wuNHMiIDIgfSB9ICovCisvKiB7IGRnLWZp bmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgIm5lZ1xcdHZcWzAtOVxdK1wuNHMsIHZcWzAtOVxd K1wuNHMiIDEgfSB9ICovCiAKIGludCBfX2F0dHJpYnV0ZV9fICgobm9pbmxpbmUpKQogdGVzdF92 bmVncV9zNjQgKCkKIHsKLSAgaW50NjR4Ml90IGE7Ci0gIGludDY0eDJfdCBiOwotCiAgIGludDY0 X3QgdGVzdF9zZXQwWzJdID0geyBURVNUMCwgVEVTVDEgfTsKICAgaW50NjRfdCB0ZXN0X3NldDFb Ml0gPSB7IFRFU1QyLCBURVNUMyB9OwogICBpbnQ2NF90IHRlc3Rfc2V0MlsyXSA9IHsgVEVTVDQs IFRFU1Q1IH07CkBAIC0yODcsMTUgKzI0OCwxNSBAQCB0ZXN0X3ZuZWdxX3M2NCAoKQogICBpbnQ2 NF90IGFuc3dfc2V0MlsyXSA9IHsgQU5TVzQsIEFOU1c1IH07CiAgIGludDY0X3QgYW5zd19zZXQz WzJdID0geyBMTE9OR19NSU4gKyAxLCBMTE9OR19NSU4gfTsKIAotICBSVU5fVEVTVCAodGVzdF9z ZXQwLCBhbnN3X3NldDAsIDEyOCwgNjQsIDIsIGEsIGIpOwotICBSVU5fVEVTVCAodGVzdF9zZXQx LCBhbnN3X3NldDEsIDEyOCwgNjQsIDIsIGEsIGIpOwotICBSVU5fVEVTVCAodGVzdF9zZXQyLCBh bnN3X3NldDIsIDEyOCwgNjQsIDIsIGEsIGIpOwotICBSVU5fVEVTVCAodGVzdF9zZXQzLCBhbnN3 X3NldDMsIDEyOCwgNjQsIDIsIGEsIGIpOworICBpbnQgbzEgPSBydW5fdGVzdHFfczY0eDIgKHRl c3Rfc2V0MCwgYW5zd19zZXQwLCAxMjgsIDY0LCAyKTsKKyAgaW50IG8yID0gcnVuX3Rlc3RxX3M2 NHgyICh0ZXN0X3NldDEsIGFuc3dfc2V0MSwgMTI4LCA2NCwgMik7CisgIGludCBvMyA9IHJ1bl90 ZXN0cV9zNjR4MiAodGVzdF9zZXQyLCBhbnN3X3NldDIsIDEyOCwgNjQsIDIpOworICBpbnQgbzQg PSBydW5fdGVzdHFfczY0eDIgKHRlc3Rfc2V0MywgYW5zd19zZXQzLCAxMjgsIDY0LCAyKTsKIAot ICByZXR1cm4gMDsKKyAgcmV0dXJuIG8xfHxvMnx8bzJ8fG80OwogfQogCi0vKiB7IGRnLWZpbmFs IHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgIm5lZ1xcdHZcWzAtOVxdK1wuMmQsIHZcWzAtOVxdK1wu MmQiIDQgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgIm5lZ1xc dHZcWzAtOVxdK1wuMmQsIHZcWzAtOVxdK1wuMmQiIDEgfSB9ICovCiAKIGludAogbWFpbiAoaW50 IGFyZ2MsIGNoYXIgKiphcmd2KQo= --_004_VE1PR08MB4896ED647FEF8DA13E8620748ADC9VE1PR08MB4896eurp_--