From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-eopbgr60060.outbound.protection.outlook.com [40.107.6.60]) by sourceware.org (Postfix) with ESMTPS id 018BF3861019 for ; Thu, 8 Oct 2020 17:28:13 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 018BF3861019 Received: from AM5PR1001CA0044.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:206:15::21) by DB8PR08MB5177.eurprd08.prod.outlook.com (2603:10a6:10:e3::27) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3433.39; Thu, 8 Oct 2020 17:28:11 +0000 Received: from VE1EUR03FT013.eop-EUR03.prod.protection.outlook.com (2603:10a6:206:15:cafe::ea) by AM5PR1001CA0044.outlook.office365.com (2603:10a6:206:15::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3455.21 via Frontend Transport; Thu, 8 Oct 2020 17:28:11 +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 VE1EUR03FT013.mail.protection.outlook.com (10.152.19.37) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3455.23 via Frontend Transport; Thu, 8 Oct 2020 17:28:10 +0000 Received: ("Tessian outbound 7fc8f57bdedc:v64"); Thu, 08 Oct 2020 17:28:10 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 17a7ae25a0859c1c X-CR-MTA-TID: 64aa7808 Received: from 28bdd1f4e85b.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 0E307CD4-1272-41DC-B11B-2F5B2AAC15D4.1; Thu, 08 Oct 2020 17:28:01 +0000 Received: from EUR02-AM5-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 28bdd1f4e85b.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Thu, 08 Oct 2020 17:28:01 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=UwxNBZUdM1byVLQGThtkzeberSYuKI0FMesJB/z33ceQli2u5U5cW3XqxjWST81KBv8X77vyTW9DQ6LhWcSoqeOYNBYx3el1e+HG+n0saDfIWSCK/Fna7sc8sjIexHy98hTeIlGuPPmRO+5NbeAiE7ostUftj8Cb0VByKdZ8qfzsg/NVqC8HkRUlZ8VAWXiDQeFvnBPFObmLbBAVkgWOihQlaZrBYU4MvBDDKDAaM43E7mrML5/B95wlh1XB9ELYplyS7TN4hm5ypAK3IzXQMvwY7HNQk9HkBPpGhxnKZDW9rDO4c4MUoqajKoMdDhnYsiOPJ4vDRHMXKDpNb1O6sQ== 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:X-MS-Exchange-SenderADCheck; bh=lnLu6FJm84coFYtGPTVPfvPY3Ik5dpFl2y6TCZHnMQg=; b=MtUN/JGnpbmQQKFtVk6s0LeXfPwnaJoBMlIUBp8NWuR8SODExh0uve4KqADt4frJUwYD7JfiHdK9OBhcFMWAkORovXf7JuAjtmXqZ5XtHJu5Z56nWmkZAqJElVefENyZEnTpBLgkLGYNCzRsE96Yfjj9KmDb4LPHzDdpHJdqshcRM+B4i1mV2+ua/U1spbFmlvmWIY+JnSfPgSFhUrYCv8yp17VT0Splmp6zoItPnx4GEx6A/5lNcl2hsBo6SCOU0kEuag10HvYNjWo9tmtjuOBjqW1ag4pr0PG5qfpxYT48vFffS5fKLzuc1pDFx+L59rLA1/MCwLGm79TZyoLM6Q== 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 DB7PR08MB3002.eurprd08.prod.outlook.com (2603:10a6:5:20::25) by DBAPR08MB5768.eurprd08.prod.outlook.com (2603:10a6:10:1b1::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3455.21; Thu, 8 Oct 2020 17:27:53 +0000 Received: from DB7PR08MB3002.eurprd08.prod.outlook.com ([fe80::9ce1:1ded:d7a5:af85]) by DB7PR08MB3002.eurprd08.prod.outlook.com ([fe80::9ce1:1ded:d7a5:af85%7]) with mapi id 15.20.3433.045; Thu, 8 Oct 2020 17:27:53 +0000 From: Kyrylo Tkachov To: "gcc-patches@gcc.gnu.org" Subject: [PATCH][GCC 9][AArch64] Implement ACLE intrinsics for FRINT[32,64][Z,X] Thread-Topic: [PATCH][GCC 9][AArch64] Implement ACLE intrinsics for FRINT[32,64][Z,X] Thread-Index: AdadmE6sCi82MhDZTROIJ0Y8jc4hEw== Date: Thu, 8 Oct 2020 17:27:53 +0000 Message-ID: Accept-Language: en-GB, en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: x-ts-tracking-id: ACBFB0B3E6F4924E84DE45C9666BC44B.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-originating-ip: [80.5.218.175] x-ms-publictraffictype: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: b2a121a4-380b-4156-74ab-08d86baf8727 x-ms-traffictypediagnostic: DBAPR08MB5768:|DB8PR08MB5177: X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true nodisclaimer: true x-ms-oob-tlc-oobclassifiers: OLM:4502;OLM:4502; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: IltvFpKQ9Xt7G5kIrdMO+71+CRtSaeMtm0CacxtLi5zYelPywXG8an3RTAKgvSfULSOYkeB4nIN+Xrye1V7jwSVvWEzkDYa5EQqNdMcA2OKt9koRlb8TOz6N/9jFg6u9q9fO/qNmPCMCpYIeyejXn0mPeFpweFDlIh6vq+4dy1ReUXOxzsKwnItDJXvYN7xNfAs5HkUPxsGQhyI6JuX0D6PGEer36hl5riVibJ6mp0qYSH7DBqPvViAReZLLU1jm/dNHuONXTbzhbRoxWYqTzsMY+4tfw7DqP/+wrTVL0k21tMm7ZGmzMWhl2E4007W/kVah7HNe7aC5xnRJjvpkCw== X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DB7PR08MB3002.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(376002)(346002)(396003)(136003)(39860400002)(366004)(316002)(66946007)(5660300002)(66556008)(8936002)(478600001)(55016002)(33656002)(9686003)(52536014)(83380400001)(2906002)(86362001)(7696005)(99936003)(66476007)(186003)(26005)(76116006)(6916009)(64756008)(66446008)(8676002)(66616009)(6506007)(71200400001); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata: 9RfqG33zEDOpqY5wstKz+4rpFKBEhb42Xk6nK7DWnZqKbTU1c4TrJ+Tix4+qni3D3Fwry2H/ybR0fbi0QW4g2xpn3AZTM3edJYj1rEPrxMyglV2U9M8Oui5tcNRuG7D8dcBNRyJDpQ6TfWG7vwjfTX0WdtlmsmWKgTwV2OR9RMutV5yVBSnrtsJJBF8Adq2PO/y3/QWE/r0dZ5z9i0VZKfvIzXoToWe09IpSdMiilJSvWJ8DeH9CSBS4072P9xzVxE0GYxRt+04xN96jRkxRAPBK4w0gUx/BMCjWNRZ0aXb5+KzLfZViGumUSZGb+g9+6CUfBu+55GiGuS97W2uZ5P+0pqG2d4JDOCVMP8UpyZiA1s9nk4pg1NszkZR7xeultilnc77l2hm2AN3c0Jn8d+BRF/blzDVQXLUXZCIzoqv/PBr2qfLoRkJrepGW8cQva5rT+j1YkLUsXbRaVrQ60LE8hfIIfixfavwKRqZvwrSsvfUiavv/vL4hUysZHsdHzEBLWYeF7ZUJloHq6EIXE2Z8+3r0qJ2AOCXTsGOy7qsAhqP5UlFvBkmVSazR3qoPs/aqTl28Sh+6+JZUjrf4gVjwDKAHOj9b4tyFLPvEk1wUJe1w7fa5sVE69Odu34eNFf6C2GeVspkv3ACqi2UngQ== x-ms-exchange-transport-forked: True Content-Type: multipart/mixed; boundary="_002_DB7PR08MB300295F2828A91B30C8CD16A930B0DB7PR08MB3002eurp_" MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBAPR08MB5768 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: VE1EUR03FT013.eop-EUR03.prod.protection.outlook.com X-MS-Office365-Filtering-Correlation-Id-Prvs: a8c178b6-14c6-40d9-b604-08d86baf7d58 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: qjtdy7oJT3VIpDen7zxsqvyu/DHj506KGhSukNgI4KHeLLq4PtqPDoygS0BOV5aeYM5q9V1bZVa5IxIgyCaXvK+lpJ5zXvQxr5RFilvLklEjgv0LqlEYCmqJZ/HfhENppwIVcKksENsudKg8yYzPsD5YqsrICu4FDRVtkM1FgO7P2nm/tpspGV0SvXEV2oQ2tpD6zNrHSf4ZhUks7Nh+XwjoJQJ/rMsz5YJXNjbiImdED3p1zMvZ977lXgX1ZqXfQnaBmOQuAj0+65tgjVvMKWbXffCPMy1K5rGHxw8r7iwEtQWxcBL2qMvwrV9MO05GuqKQG0OsUOMfK41DPGUn6yPjKmPyXko1ZmCW60TzNQ1r6I5Ue3OL47MhMg39M/XYtoxRQMOrtbhLTjTcS7r1sg== 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)(376002)(136003)(396003)(346002)(39860400002)(46966005)(26005)(47076004)(55016002)(8936002)(6506007)(70586007)(316002)(33656002)(8676002)(235185007)(336012)(5660300002)(6916009)(478600001)(86362001)(2906002)(9686003)(186003)(7696005)(66616009)(70206006)(99936003)(82740400003)(81166007)(356005)(82310400003)(52536014)(83380400001); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Oct 2020 17:28:10.2374 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: b2a121a4-380b-4156-74ab-08d86baf8727 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: VE1EUR03FT013.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB8PR08MB5177 X-Spam-Status: No, score=-8.6 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_PASS, TXREP, UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org 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, 08 Oct 2020 17:28:16 -0000 --_002_DB7PR08MB300295F2828A91B30C8CD16A930B0DB7PR08MB3002eurp_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Hi all, I'd like to backport this patch to the GCC 9 branch to implement these Armv= 8.5-a intrinsics that should have been there. The backport is fairly simple. Bootstrapped and tested on aarch64-none-linux-gnu. Pushing to GCC 9 branch. This patch implements the ACLE intrinsics to access the FRINT[32,64][Z,X] s= calar[1] and vector[2][3] instructions from Armv8.5-a. These are enabled when the __ARM_FEATURE_FRINT macro is def= ined. They're added in a fairly standard way through builtins and unspecs at the = RTL level. * config/aarch64/aarch64.md ("unspec"): Add UNSPEC_FRINT32Z, UNSPEC_FRINT32X, UNSPEC_FRINT64Z, UNSPEC_FRINT64X. (aarch64_): New define_insn. * config/aarch64/aarch64.h (TARGET_FRINT): Define. * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins): Define __ARM_FEATURE_FRINT when appropriate. * config/aarch64/aarch64-simd-builtins.def: Add builtins for frint32z, frint32x, frint64z, frint64x. * config/aarch64/arm_acle.h (__rint32zf, __rint32z, __rint64zf, __rint64z, __rint32xf, __rint32x, __rint64xf, __rint64x): Define. * config/aarch64/arm_neon.h (vrnd32z_f32, vrnd32zq_f32, vrnd32z_f64, vrnd32zq_f64, vrnd32x_f32, vrnd32xq_f32, vrnd32x_f64, vrnd32xq_f64, vrnd64z_f32, vrnd64zq_f32, vrnd64z_f64, vrnd64zq_f64, vrnd64x_f32, vrnd64xq_f32, vrnd64x_f64, vrnd64xq_f64): Define. * config/aarch64/iterators.md (VSFDF): Define. (FRINTNZX): Likewise. (frintnzs_op): Likewise. * gcc.target/aarch64/acle/rintnzx_1.c: New test. * gcc.target/aarch64/simd/vrndnzx_1.c: Likewise. --_002_DB7PR08MB300295F2828A91B30C8CD16A930B0DB7PR08MB3002eurp_ Content-Type: application/octet-stream; name="frint-9.patch" Content-Description: frint-9.patch Content-Disposition: attachment; filename="frint-9.patch"; size=14580; creation-date="Thu, 08 Oct 2020 17:27:11 GMT"; modification-date="Thu, 08 Oct 2020 17:26:56 GMT" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LWMuYyBiL2djYy9jb25maWcv YWFyY2g2NC9hYXJjaDY0LWMuYwppbmRleCAxODEyMzg3ZGVlNjdhYmY0NTY1ODRiOGVjMTI0MjAx YTg1OWE2NTY1Li43MzUyN2FjOTYwZjMyZmI0NGY1NWNlOTRkMDQyNDQ4YTlhNzYzZGM0IDEwMDY0 NAotLS0gYS9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1jLmMKKysrIGIvZ2NjL2NvbmZpZy9h YXJjaDY0L2FhcmNoNjQtYy5jCkBAIC0xNzAsNiArMTcwLDcgQEAgYWFyY2g2NF91cGRhdGVfY3Bw X2J1aWx0aW5zIChjcHBfcmVhZGVyICpwZmlsZSkKICAgICB9CiAKICAgYWFyY2g2NF9kZWZfb3Jf dW5kZWYgKFRBUkdFVF9STkcsICJfX0FSTV9GRUFUVVJFX1JORyIsIHBmaWxlKTsKKyAgYWFyY2g2 NF9kZWZfb3JfdW5kZWYgKFRBUkdFVF9GUklOVCwgIl9fQVJNX0ZFQVRVUkVfRlJJTlQiLCBwZmls ZSk7CiAKICAgLyogTm90IGZvciBBQ0xFLCBidXQgcmVxdWlyZWQgdG8ga2VlcCAiZmxvYXQuaCIg Y29ycmVjdCBpZiB3ZSBzd2l0Y2gKICAgICAgdGFyZ2V0IGJldHdlZW4gaW1wbGVtZW50YXRpb25z IHRoYXQgZG8gb3IgZG8gbm90IHN1cHBvcnQgQVJNdjguMi1BCmRpZmYgLS1naXQgYS9nY2MvY29u ZmlnL2FhcmNoNjQvYWFyY2g2NC1zaW1kLWJ1aWx0aW5zLmRlZiBiL2djYy9jb25maWcvYWFyY2g2 NC9hYXJjaDY0LXNpbWQtYnVpbHRpbnMuZGVmCmluZGV4IDIwYWY1ZWJiNWM3ZDgxZjYyNWQ4ZTc0 Njk2YzI3OTQxMTY3ODk5OGUuLjU0MmRlMzJjNDM4NWZmNmNjYzEyNmIwMTIzOTBjOTA2YjQ1NTNl NjYgMTAwNjQ0Ci0tLSBhL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LXNpbWQtYnVpbHRpbnMu ZGVmCisrKyBiL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LXNpbWQtYnVpbHRpbnMuZGVmCkBA IC02NzUsMyArNjc1LDkgQEAKICAgLyogSW1wbGVtZW50ZWQgYnkgYWFyY2g2NF9mbWw8ZjE2bWFj MT5scV9sYW5lcV9oaWdodjRzZi4gICovCiAgIFZBUjEgKFFVQURPUF9MQU5FLCBmbWxhbHFfbGFu ZXFfaGlnaCwgMCwgdjRzZikKICAgVkFSMSAoUVVBRE9QX0xBTkUsIGZtbHNscV9sYW5lcV9oaWdo LCAwLCB2NHNmKQorCisgIC8qIEltcGxlbWVudGVkIGJ5IGFhcmNoNjRfPGZyaW50bnpzX29wPjxt b2RlPi4gICovCisgIEJVSUxUSU5fVlNGREYgKFVOT1AsIGZyaW50MzJ6LCAwKQorICBCVUlMVElO X1ZTRkRGIChVTk9QLCBmcmludDMyeCwgMCkKKyAgQlVJTFRJTl9WU0ZERiAoVU5PUCwgZnJpbnQ2 NHosIDApCisgIEJVSUxUSU5fVlNGREYgKFVOT1AsIGZyaW50NjR4LCAwKQpkaWZmIC0tZ2l0IGEv Z2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQuaCBiL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0 LmgKaW5kZXggYWNlODBhYzRjZWZhZjBlYmM0MzlhNjhkNGNlMTZhYzEzZWRlMjkxZS4uMDM2ZjNj YzE3NmYxOWM3NzJiNGE5MWMzNDkxODVlZmQxMGVjZTgzZSAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZp Zy9hYXJjaDY0L2FhcmNoNjQuaAorKysgYi9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC5oCkBA IC0yODQsNiArMjg0LDkgQEAgZXh0ZXJuIHVuc2lnbmVkIGFhcmNoNjRfYXJjaGl0ZWN0dXJlX3Zl cnNpb247CiAvKiBSYW5kb20gbnVtYmVyIGluc3RydWN0aW9ucyBmcm9tIEFybXY4LjUtYS4gICov CiAjZGVmaW5lIFRBUkdFVF9STkcgKEFBUkNINjRfSVNBX1JORykKIAorLyogRmxvYXRpbmctcG9p bnQgcm91bmRpbmcgaW5zdHJ1Y3Rpb25zIGZyb20gQXJtdjguNS1hLiAgKi8KKyNkZWZpbmUgVEFS R0VUX0ZSSU5UIChBQVJDSDY0X0lTQV9WOF81ICYmIFRBUkdFVF9GTE9BVCkKKwogLyogTWFrZSBz dXJlIHRoaXMgaXMgYWx3YXlzIGRlZmluZWQgc28gd2UgZG9uJ3QgaGF2ZSB0byBjaGVjayBmb3Ig aWZkZWZzCiAgICBidXQgcmF0aGVyIHVzZSBub3JtYWwgaWZzLiAgKi8KICNpZm5kZWYgVEFSR0VU X0ZJWF9FUlJfQTUzXzgzNTc2OV9ERUZBVUxUCmRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2FhcmNo NjQvYWFyY2g2NC5tZCBiL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0Lm1kCmluZGV4IDhkNzE5 OTQ2MTFkZjBhODM5MzExMTEwNGM1MDE0OTBlMTNhNDZmZWEuLjc4Mjg4YWJmZDkyNzljZmNiMTJm ZGMzNDlhMGM4N2E4YjllNmEyMzUgMTAwNjQ0Ci0tLSBhL2djYy9jb25maWcvYWFyY2g2NC9hYXJj aDY0Lm1kCisrKyBiL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0Lm1kCkBAIC0xMzksNiArMTM5 LDEwIEBACiAgICAgVU5TUEVDX0ZDVlRaUwogICAgIFVOU1BFQ19GQ1ZUWlUKICAgICBVTlNQRUNf RkpDVlRaUworICAgIFVOU1BFQ19GUklOVDMyWgorICAgIFVOU1BFQ19GUklOVDMyWAorICAgIFVO U1BFQ19GUklOVDY0WgorICAgIFVOU1BFQ19GUklOVDY0WAogICAgIFVOU1BFQ19VUkVDUEUKICAg ICBVTlNQRUNfRlJFQ1BFCiAgICAgVU5TUEVDX0ZSRUNQUwpAQCAtNzI3Miw2ICs3Mjc2LDE2IEBA CiAgICAoc2V0X2F0dHIgInNwZWN1bGF0aW9uX2JhcnJpZXIiICJ0cnVlIildCiApCiAKKyhkZWZp bmVfaW5zbiAiYWFyY2g2NF88ZnJpbnRuenNfb3A+PG1vZGU+IgorICBbKHNldCAobWF0Y2hfb3Bl cmFuZDpWU0ZERiAwICJyZWdpc3Rlcl9vcGVyYW5kIiAiPXciKQorCSh1bnNwZWM6VlNGREYgWyht YXRjaF9vcGVyYW5kOlZTRkRGIDEgInJlZ2lzdGVyX29wZXJhbmQiICJ3IildCisJCSAgICAgIEZS SU5UTlpYKSldCisgICJUQVJHRVRfRlJJTlQgJiYgVEFSR0VUX0ZMT0FUCisgICAmJiAhKFZFQ1RP Ul9NT0RFX1AgKDxNT0RFPm1vZGUpICYmICFUQVJHRVRfU0lNRCkiCisgICI8ZnJpbnRuenNfb3A+ XFx0JTx2PjA8Vm10eXBlPiwgJTx2PjE8Vm10eXBlPiIKKyAgWyhzZXRfYXR0ciAidHlwZSIgImZf cmludDxzdHlwZT4iKV0KKykKKwogKGRlZmluZV9pbnNuICJhYXJjaDY0X3JuZHIiCiAgIFsoc2V0 IChtYXRjaF9vcGVyYW5kOkRJIDAgInJlZ2lzdGVyX29wZXJhbmQiICI9ciIpCiAJKHVuc3BlY192 b2xhdGlsZTpESSBbKGNvbnN0X2ludCAwKV0gVU5TUEVDX1JORFIpKQpkaWZmIC0tZ2l0IGEvZ2Nj L2NvbmZpZy9hYXJjaDY0L2FybV9hY2xlLmggYi9nY2MvY29uZmlnL2FhcmNoNjQvYXJtX2FjbGUu aAppbmRleCA0MjMxMzZlY2VmZDVkM2Q3MmJjM2MxZjU2N2IxNGIzOGZkODQzMTg2Li41NjE0NzM1 MmMyMzRmNGFjZTg1MWUxYjZjNzM1NmQzNDhhMjQyMzAwIDEwMDY0NAotLS0gYS9nY2MvY29uZmln L2FhcmNoNjQvYXJtX2FjbGUuaAorKysgYi9nY2MvY29uZmlnL2FhcmNoNjQvYXJtX2FjbGUuaApA QCAtNDEsNiArNDEsNTcgQEAgX19qY3Z0IChkb3VibGUgX19hKQogICByZXR1cm4gX19idWlsdGlu X2FhcmNoNjRfamN2dHpzIChfX2EpOwogfQogCisjcHJhZ21hIEdDQyBwdXNoX29wdGlvbnMKKyNw cmFnbWEgR0NDIHRhcmdldCAoImFyY2g9YXJtdjguNS1hIikKK19fZXh0ZW5zaW9uX18gc3RhdGlj IF9faW5saW5lIGZsb2F0IF9fYXR0cmlidXRlX18gKChfX2Fsd2F5c19pbmxpbmVfXykpCitfX3Jp bnQzMnpmIChmbG9hdCBfX2EpCit7CisgIHJldHVybiBfX2J1aWx0aW5fYWFyY2g2NF9mcmludDMy enNmIChfX2EpOworfQorCitfX2V4dGVuc2lvbl9fIHN0YXRpYyBfX2lubGluZSBkb3VibGUgX19h dHRyaWJ1dGVfXyAoKF9fYWx3YXlzX2lubGluZV9fKSkKK19fcmludDMyeiAoZG91YmxlIF9fYSkK K3sKKyAgcmV0dXJuIF9fYnVpbHRpbl9hYXJjaDY0X2ZyaW50MzJ6ZGYgKF9fYSk7Cit9CisKK19f ZXh0ZW5zaW9uX18gc3RhdGljIF9faW5saW5lIGZsb2F0IF9fYXR0cmlidXRlX18gKChfX2Fsd2F5 c19pbmxpbmVfXykpCitfX3JpbnQ2NHpmIChmbG9hdCBfX2EpCit7CisgIHJldHVybiBfX2J1aWx0 aW5fYWFyY2g2NF9mcmludDY0enNmIChfX2EpOworfQorCitfX2V4dGVuc2lvbl9fIHN0YXRpYyBf X2lubGluZSBkb3VibGUgX19hdHRyaWJ1dGVfXyAoKF9fYWx3YXlzX2lubGluZV9fKSkKK19fcmlu dDY0eiAoZG91YmxlIF9fYSkKK3sKKyAgcmV0dXJuIF9fYnVpbHRpbl9hYXJjaDY0X2ZyaW50NjR6 ZGYgKF9fYSk7Cit9CisKK19fZXh0ZW5zaW9uX18gc3RhdGljIF9faW5saW5lIGZsb2F0IF9fYXR0 cmlidXRlX18gKChfX2Fsd2F5c19pbmxpbmVfXykpCitfX3JpbnQzMnhmIChmbG9hdCBfX2EpCit7 CisgIHJldHVybiBfX2J1aWx0aW5fYWFyY2g2NF9mcmludDMyeHNmIChfX2EpOworfQorCitfX2V4 dGVuc2lvbl9fIHN0YXRpYyBfX2lubGluZSBkb3VibGUgX19hdHRyaWJ1dGVfXyAoKF9fYWx3YXlz X2lubGluZV9fKSkKK19fcmludDMyeCAoZG91YmxlIF9fYSkKK3sKKyAgcmV0dXJuIF9fYnVpbHRp bl9hYXJjaDY0X2ZyaW50MzJ4ZGYgKF9fYSk7Cit9CisKK19fZXh0ZW5zaW9uX18gc3RhdGljIF9f aW5saW5lIGZsb2F0IF9fYXR0cmlidXRlX18gKChfX2Fsd2F5c19pbmxpbmVfXykpCitfX3JpbnQ2 NHhmIChmbG9hdCBfX2EpCit7CisgIHJldHVybiBfX2J1aWx0aW5fYWFyY2g2NF9mcmludDY0eHNm IChfX2EpOworfQorCitfX2V4dGVuc2lvbl9fIHN0YXRpYyBfX2lubGluZSBkb3VibGUgX19hdHRy aWJ1dGVfXyAoKF9fYWx3YXlzX2lubGluZV9fKSkKK19fcmludDY0eCAoZG91YmxlIF9fYSkKK3sK KyAgcmV0dXJuIF9fYnVpbHRpbl9hYXJjaDY0X2ZyaW50NjR4ZGYgKF9fYSk7Cit9CisjcHJhZ21h IEdDQyBwb3Bfb3B0aW9ucworCiAjcHJhZ21hIEdDQyBwb3Bfb3B0aW9ucwogCiAjcHJhZ21hIEdD QyBwdXNoX29wdGlvbnMKZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYWFyY2g2NC9hcm1fbmVvbi5o IGIvZ2NjL2NvbmZpZy9hYXJjaDY0L2FybV9uZW9uLmgKaW5kZXggMWZkOGZhYWU4MGZiZWJiOGZi MGQyMjA2NzlkNDdiNmI0YzM4YTM5YS4uMTVlZDk2NTY0YzZmMWZhZmQ2ZjBlMDk4NGUyZTA5OTA5 MzNkMDZiOSAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy9hYXJjaDY0L2FybV9uZW9uLmgKKysrIGIv Z2NjL2NvbmZpZy9hYXJjaDY0L2FybV9uZW9uLmgKQEAgLTM0NjgzLDYgKzM0NjgzLDEyNCBAQCB2 YWRkcV9wMTI4IChwb2x5MTI4X3QgX19hLCBwb2x5MTI4X3QgX19iKQogICByZXR1cm4gX19hIF4g X19iOwogfQogCisjcHJhZ21hIEdDQyBwdXNoX29wdGlvbnMKKyNwcmFnbWEgR0NDIHRhcmdldCAo ImFyY2g9YXJtdjguNS1hIikKKworX19leHRlbnNpb25fXyBleHRlcm4gX19pbmxpbmUgZmxvYXQz MngyX3QKK19fYXR0cmlidXRlX18gKChfX2Fsd2F5c19pbmxpbmVfXywgX19nbnVfaW5saW5lX18s IF9fYXJ0aWZpY2lhbF9fKSkKK3ZybmQzMnpfZjMyIChmbG9hdDMyeDJfdCBfX2EpCit7CisgIHJl dHVybiBfX2J1aWx0aW5fYWFyY2g2NF9mcmludDMyenYyc2YgKF9fYSk7Cit9CisKK19fZXh0ZW5z aW9uX18gZXh0ZXJuIF9faW5saW5lIGZsb2F0MzJ4NF90CitfX2F0dHJpYnV0ZV9fICgoX19hbHdh eXNfaW5saW5lX18sIF9fZ251X2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCit2cm5kMzJ6cV9m MzIgKGZsb2F0MzJ4NF90IF9fYSkKK3sKKyAgcmV0dXJuIF9fYnVpbHRpbl9hYXJjaDY0X2ZyaW50 MzJ6djRzZiAoX19hKTsKK30KKworX19leHRlbnNpb25fXyBleHRlcm4gX19pbmxpbmUgZmxvYXQ2 NHgxX3QKK19fYXR0cmlidXRlX18gKChfX2Fsd2F5c19pbmxpbmVfXywgX19nbnVfaW5saW5lX18s IF9fYXJ0aWZpY2lhbF9fKSkKK3ZybmQzMnpfZjY0IChmbG9hdDY0eDFfdCBfX2EpCit7CisgIHJl dHVybiAoZmxvYXQ2NHgxX3QpCisJICAge19fYnVpbHRpbl9hYXJjaDY0X2ZyaW50MzJ6ZGYgKHZn ZXRfbGFuZV9mNjQgKF9fYSwgMCkpfTsKK30KKworX19leHRlbnNpb25fXyBleHRlcm4gX19pbmxp bmUgZmxvYXQ2NHgyX3QKK19fYXR0cmlidXRlX18gKChfX2Fsd2F5c19pbmxpbmVfXywgX19nbnVf aW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKK3ZybmQzMnpxX2Y2NCAoZmxvYXQ2NHgyX3QgX19h KQoreworICByZXR1cm4gX19idWlsdGluX2FhcmNoNjRfZnJpbnQzMnp2MmRmIChfX2EpOworfQor CitfX2V4dGVuc2lvbl9fIGV4dGVybiBfX2lubGluZSBmbG9hdDMyeDJfdAorX19hdHRyaWJ1dGVf XyAoKF9fYWx3YXlzX2lubGluZV9fLCBfX2dudV9pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQor dnJuZDMyeF9mMzIgKGZsb2F0MzJ4Ml90IF9fYSkKK3sKKyAgcmV0dXJuIF9fYnVpbHRpbl9hYXJj aDY0X2ZyaW50MzJ4djJzZiAoX19hKTsKK30KKworX19leHRlbnNpb25fXyBleHRlcm4gX19pbmxp bmUgZmxvYXQzMng0X3QKK19fYXR0cmlidXRlX18gKChfX2Fsd2F5c19pbmxpbmVfXywgX19nbnVf aW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKK3ZybmQzMnhxX2YzMiAoZmxvYXQzMng0X3QgX19h KQoreworICByZXR1cm4gX19idWlsdGluX2FhcmNoNjRfZnJpbnQzMnh2NHNmIChfX2EpOworfQor CitfX2V4dGVuc2lvbl9fIGV4dGVybiBfX2lubGluZSBmbG9hdDY0eDFfdAorX19hdHRyaWJ1dGVf XyAoKF9fYWx3YXlzX2lubGluZV9fLCBfX2dudV9pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQor dnJuZDMyeF9mNjQgKGZsb2F0NjR4MV90IF9fYSkKK3sKKyAgcmV0dXJuIChmbG9hdDY0eDFfdCkg e19fYnVpbHRpbl9hYXJjaDY0X2ZyaW50MzJ4ZGYgKHZnZXRfbGFuZV9mNjQgKF9fYSwgMCkpfTsK K30KKworX19leHRlbnNpb25fXyBleHRlcm4gX19pbmxpbmUgZmxvYXQ2NHgyX3QKK19fYXR0cmli dXRlX18gKChfX2Fsd2F5c19pbmxpbmVfXywgX19nbnVfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9f KSkKK3ZybmQzMnhxX2Y2NCAoZmxvYXQ2NHgyX3QgX19hKQoreworICByZXR1cm4gX19idWlsdGlu X2FhcmNoNjRfZnJpbnQzMnh2MmRmIChfX2EpOworfQorCitfX2V4dGVuc2lvbl9fIGV4dGVybiBf X2lubGluZSBmbG9hdDMyeDJfdAorX19hdHRyaWJ1dGVfXyAoKF9fYWx3YXlzX2lubGluZV9fLCBf X2dudV9pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQordnJuZDY0el9mMzIgKGZsb2F0MzJ4Ml90 IF9fYSkKK3sKKyAgcmV0dXJuIF9fYnVpbHRpbl9hYXJjaDY0X2ZyaW50NjR6djJzZiAoX19hKTsK K30KKworX19leHRlbnNpb25fXyBleHRlcm4gX19pbmxpbmUgZmxvYXQzMng0X3QKK19fYXR0cmli dXRlX18gKChfX2Fsd2F5c19pbmxpbmVfXywgX19nbnVfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9f KSkKK3ZybmQ2NHpxX2YzMiAoZmxvYXQzMng0X3QgX19hKQoreworICByZXR1cm4gX19idWlsdGlu X2FhcmNoNjRfZnJpbnQ2NHp2NHNmIChfX2EpOworfQorCitfX2V4dGVuc2lvbl9fIGV4dGVybiBf X2lubGluZSBmbG9hdDY0eDFfdAorX19hdHRyaWJ1dGVfXyAoKF9fYWx3YXlzX2lubGluZV9fLCBf X2dudV9pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQordnJuZDY0el9mNjQgKGZsb2F0NjR4MV90 IF9fYSkKK3sKKyAgcmV0dXJuIChmbG9hdDY0eDFfdCkge19fYnVpbHRpbl9hYXJjaDY0X2ZyaW50 NjR6ZGYgKHZnZXRfbGFuZV9mNjQgKF9fYSwgMCkpfTsKK30KKworX19leHRlbnNpb25fXyBleHRl cm4gX19pbmxpbmUgZmxvYXQ2NHgyX3QKK19fYXR0cmlidXRlX18gKChfX2Fsd2F5c19pbmxpbmVf XywgX19nbnVfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKK3ZybmQ2NHpxX2Y2NCAoZmxvYXQ2 NHgyX3QgX19hKQoreworICByZXR1cm4gX19idWlsdGluX2FhcmNoNjRfZnJpbnQ2NHp2MmRmIChf X2EpOworfQorCitfX2V4dGVuc2lvbl9fIGV4dGVybiBfX2lubGluZSBmbG9hdDMyeDJfdAorX19h dHRyaWJ1dGVfXyAoKF9fYWx3YXlzX2lubGluZV9fLCBfX2dudV9pbmxpbmVfXywgX19hcnRpZmlj aWFsX18pKQordnJuZDY0eF9mMzIgKGZsb2F0MzJ4Ml90IF9fYSkKK3sKKyAgcmV0dXJuIF9fYnVp bHRpbl9hYXJjaDY0X2ZyaW50NjR4djJzZiAoX19hKTsKK30KKworX19leHRlbnNpb25fXyBleHRl cm4gX19pbmxpbmUgZmxvYXQzMng0X3QKK19fYXR0cmlidXRlX18gKChfX2Fsd2F5c19pbmxpbmVf XywgX19nbnVfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKK3ZybmQ2NHhxX2YzMiAoZmxvYXQz Mng0X3QgX19hKQoreworICByZXR1cm4gX19idWlsdGluX2FhcmNoNjRfZnJpbnQ2NHh2NHNmIChf X2EpOworfQorCitfX2V4dGVuc2lvbl9fIGV4dGVybiBfX2lubGluZSBmbG9hdDY0eDFfdAorX19h dHRyaWJ1dGVfXyAoKF9fYWx3YXlzX2lubGluZV9fLCBfX2dudV9pbmxpbmVfXywgX19hcnRpZmlj aWFsX18pKQordnJuZDY0eF9mNjQgKGZsb2F0NjR4MV90IF9fYSkKK3sKKyAgcmV0dXJuIChmbG9h dDY0eDFfdCkge19fYnVpbHRpbl9hYXJjaDY0X2ZyaW50NjR4ZGYgKHZnZXRfbGFuZV9mNjQgKF9f YSwgMCkpfTsKK30KKworX19leHRlbnNpb25fXyBleHRlcm4gX19pbmxpbmUgZmxvYXQ2NHgyX3QK K19fYXR0cmlidXRlX18gKChfX2Fsd2F5c19pbmxpbmVfXywgX19nbnVfaW5saW5lX18sIF9fYXJ0 aWZpY2lhbF9fKSkKK3ZybmQ2NHhxX2Y2NCAoZmxvYXQ2NHgyX3QgX19hKQoreworICByZXR1cm4g X19idWlsdGluX2FhcmNoNjRfZnJpbnQ2NHh2MmRmIChfX2EpOworfQorCisjcHJhZ21hIEdDQyBw b3Bfb3B0aW9ucworCiAjdW5kZWYgX19hYXJjaDY0X3ZnZXRfbGFuZV9hbnkKIAogI3VuZGVmIF9f YWFyY2g2NF92ZHVwX2xhbmVfYW55CmRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2FhcmNoNjQvaXRl cmF0b3JzLm1kIGIvZ2NjL2NvbmZpZy9hYXJjaDY0L2l0ZXJhdG9ycy5tZAppbmRleCAzYmM0OWVh MDIzODUzY2EwMjdmYjM1NjY2MTlhMDNkYmZhNDQ1ZDc2Li41MjdlNjRjNTYxYTJlMDgyMjM1ZDA2 YWNlZTQzNWM0MTEwMjM0NTA2IDEwMDY0NAotLS0gYS9nY2MvY29uZmlnL2FhcmNoNjQvaXRlcmF0 b3JzLm1kCisrKyBiL2djYy9jb25maWcvYWFyY2g2NC9pdGVyYXRvcnMubWQKQEAgLTEzMSw2ICsx MzEsOSBAQAogCQkJCSAgKEhGICJUQVJHRVRfU0lNRF9GMTZJTlNUIikKIAkJCQkgIFNGIERGXSkK IAorOzsgU2NhbGFyIGFuZCB2ZXRvciBtb2RlcyBmb3IgU0YsIERGLgorKGRlZmluZV9tb2RlX2l0 ZXJhdG9yIFZTRkRGIFtWMlNGIFY0U0YgVjJERiBERiBTRl0pCisKIDs7IEFkdmFuY2VkIFNJTUQg c2luZ2xlIEZsb2F0IG1vZGVzLgogKGRlZmluZV9tb2RlX2l0ZXJhdG9yIFZEUVNGIFtWMlNGIFY0 U0ZdKQogCkBAIC0xNjE3LDYgKzE2MjAsOSBAQAogCQkJICAgIFVOU1BFQ19GQ01MQTE4MAogCQkJ ICAgIFVOU1BFQ19GQ01MQTI3MF0pCiAKKyhkZWZpbmVfaW50X2l0ZXJhdG9yIEZSSU5UTlpYIFtV TlNQRUNfRlJJTlQzMlogVU5TUEVDX0ZSSU5UMzJYCisJCQkgICAgICAgVU5TUEVDX0ZSSU5UNjRa IFVOU1BFQ19GUklOVDY0WF0pCisKIDs7IEl0ZXJhdG9ycyBmb3IgYXRvbWljIG9wZXJhdGlvbnMu CiAKIChkZWZpbmVfaW50X2l0ZXJhdG9yIEFUT01JQ19MRE9QCkBAIC0xODU2LDYgKzE4NjIsOSBA QAogKGRlZmluZV9pbnRfYXR0ciBmMTZtYWMxIFsoVU5TUEVDX0ZNTEFMICJhIikgKFVOU1BFQ19G TUxTTCAicyIpCiAJCQkgIChVTlNQRUNfRk1MQUwyICJhIikgKFVOU1BFQ19GTUxTTDIgInMiKV0p CiAKKyhkZWZpbmVfaW50X2F0dHIgZnJpbnRuenNfb3AgWyhVTlNQRUNfRlJJTlQzMlogImZyaW50 MzJ6IikgKFVOU1BFQ19GUklOVDMyWCAiZnJpbnQzMngiKQorCQkJICAgICAgKFVOU1BFQ19GUklO VDY0WiAiZnJpbnQ2NHoiKSAoVU5TUEVDX0ZSSU5UNjRYICJmcmludDY0eCIpXSkKKwogOzsgVGhl IGNvbmRpdGlvbiBhc3NvY2lhdGVkIHdpdGggYW4gVU5TUEVDX0NPTkRfPHh4Pi4KIChkZWZpbmVf aW50X2F0dHIgY21wX29wIFsoVU5TUEVDX0NPTkRfTFQgImx0IikKIAkJCSAoVU5TUEVDX0NPTkRf TEUgImxlIikKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L2Fj bGUvcmludG56eF8xLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9hY2xlL3Jp bnRuenhfMS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEyNTcyMDg0ODU2ZDhkNzdjOWRmNDk3MTYwNWQyMzdlMTgz MWM4ZTcKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2 NC9hY2xlL3JpbnRuenhfMS5jCkBAIC0wLDAgKzEsNzMgQEAKKy8qIFRlc3QgdGhlIF9fcmludFsz Miw2NF1beix4XSBpbnRyaW5zaWNzLiAgKi8KKworLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8q IHsgZGctb3B0aW9ucyAiLU8yIC1tYXJjaD1hcm12OC41LWEiIH0gKi8KKworI2luY2x1ZGUgPGFy bV9hY2xlLmg+CisKKyNpZmRlZiBfX0FSTV9GRUFUVVJFX0ZSSU5UCitmbG9hdAorZm9vXzMyel9m MzJfc2NhbCAoZmxvYXQgYSkKK3sKKyAgcmV0dXJuIF9fcmludDMyemYgKGEpOworfQorCisvKiB7 IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImZyaW50MzJ6XHRzXFswLTlcXSssIHNc WzAtOVxdK1xuIiAxIH0gfSAqLworCitkb3VibGUKK2Zvb18zMnpfZjY0X3NjYWwgKGRvdWJsZSBh KQoreworICByZXR1cm4gX19yaW50MzJ6IChhKTsKK30KKworLyogeyBkZy1maW5hbCB7IHNjYW4t YXNzZW1ibGVyLXRpbWVzICJmcmludDMyelx0ZFxbMC05XF0rLCBkXFswLTlcXStcbiIgMSB9IH0g Ki8KKworZmxvYXQKK2Zvb18zMnhfZjMyX3NjYWwgKGZsb2F0IGEpCit7CisgIHJldHVybiBfX3Jp bnQzMnhmIChhKTsKK30KKworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJm cmludDMyeFx0c1xbMC05XF0rLCBzXFswLTlcXStcbiIgMSB9IH0gKi8KKworZG91YmxlCitmb29f MzJ4X2Y2NF9zY2FsIChkb3VibGUgYSkKK3sKKyAgcmV0dXJuIF9fcmludDMyeCAoYSk7Cit9CisK Ky8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAiZnJpbnQzMnhcdGRcWzAtOVxd KywgZFxbMC05XF0rXG4iIDEgfSB9ICovCisKK2Zsb2F0Citmb29fNjR6X2YzMl9zY2FsIChmbG9h dCBhKQoreworICByZXR1cm4gX19yaW50NjR6ZiAoYSk7Cit9CisKKy8qIHsgZGctZmluYWwgeyBz Y2FuLWFzc2VtYmxlci10aW1lcyAiZnJpbnQ2NHpcdHNcWzAtOVxdKywgc1xbMC05XF0rXG4iIDEg fSB9ICovCisKK2RvdWJsZQorZm9vXzY0el9mNjRfc2NhbCAoZG91YmxlIGEpCit7CisgIHJldHVy biBfX3JpbnQ2NHogKGEpOworfQorCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGlt ZXMgImZyaW50NjR6XHRkXFswLTlcXSssIGRcWzAtOVxdK1xuIiAxIH0gfSAqLworCitmbG9hdAor Zm9vXzY0eF9mMzJfc2NhbCAoZmxvYXQgYSkKK3sKKyAgcmV0dXJuIF9fcmludDY0eGYgKGEpOwor fQorCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImZyaW50NjR4XHRzXFsw LTlcXSssIHNcWzAtOVxdK1xuIiAxIH0gfSAqLworCitkb3VibGUKK2Zvb182NHhfZjY0X3NjYWwg KGRvdWJsZSBhKQoreworICByZXR1cm4gX19yaW50NjR4IChhKTsKK30KKworLyogeyBkZy1maW5h bCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJmcmludDY0eFx0ZFxbMC05XF0rLCBkXFswLTlcXStc biIgMSB9IH0gKi8KKworI2VuZGlmCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJn ZXQvYWFyY2g2NC9zaW1kL3ZybmRuenhfMS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2Fh cmNoNjQvc2ltZC92cm5kbnp4XzEuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMzk5YjgzOGRmOTJkN2Y2ZDc4ZGNk OTQyMTQ2MWJmYWI4YmNmNWIyCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2Mu dGFyZ2V0L2FhcmNoNjQvc2ltZC92cm5kbnp4XzEuYwpAQCAtMCwwICsxLDEzNyBAQAorLyogVGVz dCB0aGUgdnJuZFszMiw2NF1beix4XSBpbnRyaW5zaWNzLiAgKi8KKworLyogeyBkZy1kbyBjb21w aWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tYXJjaD1hcm12OC41LWEiIH0gKi8KKwor I2luY2x1ZGUgImFybV9uZW9uLmgiCisKKyNpZmRlZiBfX0FSTV9GRUFUVVJFX0ZSSU5UCisKK2Zs b2F0MzJ4Ml90Citmb29fMzJ6IChmbG9hdDMyeDJfdCBhKQoreworICByZXR1cm4gdnJuZDMyel9m MzIgKGEpOworfQorCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImZyaW50 MzJ6XHR2XFswLTlcXStcLjJzLCB2XFswLTlcXStcLjJzXG4iIDEgfSB9ICovCisKK2Zsb2F0MzJ4 NF90Citmb29fMzJ6X3EgKGZsb2F0MzJ4NF90IGEpCit7CisgIHJldHVybiB2cm5kMzJ6cV9mMzIg KGEpOworfQorCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImZyaW50MzJ6 XHR2XFswLTlcXStcLjRzLCB2XFswLTlcXStcLjRzXG4iIDEgfSB9ICovCisKK2Zsb2F0NjR4MV90 Citmb29fMzJ6X2Y2NCAoZmxvYXQ2NHgxX3QgYSkKK3sKKyAgcmV0dXJuIHZybmQzMnpfZjY0IChh KTsKK30KKworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJmcmludDMyelx0 ZFxbMC05XF0rLCBkXFswLTlcXStcbiIgMSB9IH0gKi8KKworZmxvYXQ2NHgyX3QKK2Zvb18zMnpf cV9mNjQgKGZsb2F0NjR4Ml90IGEpCit7CisgIHJldHVybiB2cm5kMzJ6cV9mNjQgKGEpOworfQor CisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImZyaW50MzJ6XHR2XFswLTlc XStcLjJkLCB2XFswLTlcXStcLjJkXG4iIDEgfSB9ICovCisKK2Zsb2F0MzJ4Ml90Citmb29fMzJ4 IChmbG9hdDMyeDJfdCBhKQoreworICByZXR1cm4gdnJuZDMyeF9mMzIgKGEpOworfQorCisvKiB7 IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImZyaW50MzJ4XHR2XFswLTlcXStcLjJz LCB2XFswLTlcXStcLjJzXG4iIDEgfSB9ICovCisKK2Zsb2F0MzJ4NF90Citmb29fMzJ4X3EgKGZs b2F0MzJ4NF90IGEpCit7CisgIHJldHVybiB2cm5kMzJ4cV9mMzIgKGEpOworfQorCisvKiB7IGRn LWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImZyaW50MzJ4XHR2XFswLTlcXStcLjRzLCB2 XFswLTlcXStcLjRzXG4iIDEgfSB9ICovCisKK2Zsb2F0NjR4MV90Citmb29fMzJ4X2Y2NCAoZmxv YXQ2NHgxX3QgYSkKK3sKKyAgcmV0dXJuIHZybmQzMnhfZjY0IChhKTsKK30KKworLyogeyBkZy1m aW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJmcmludDMyeFx0ZFxbMC05XF0rLCBkXFswLTlc XStcbiIgMSB9IH0gKi8KKworZmxvYXQ2NHgyX3QKK2Zvb18zMnhfcV9mNjQgKGZsb2F0NjR4Ml90 IGEpCit7CisgIHJldHVybiB2cm5kMzJ4cV9mNjQgKGEpOworfQorCisvKiB7IGRnLWZpbmFsIHsg c2Nhbi1hc3NlbWJsZXItdGltZXMgImZyaW50MzJ4XHR2XFswLTlcXStcLjJkLCB2XFswLTlcXStc LjJkXG4iIDEgfSB9ICovCisKK2Zsb2F0MzJ4Ml90Citmb29fNjR6IChmbG9hdDMyeDJfdCBhKQor eworICByZXR1cm4gdnJuZDY0el9mMzIgKGEpOworfQorCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1h c3NlbWJsZXItdGltZXMgImZyaW50NjR6XHR2XFswLTlcXStcLjJzLCB2XFswLTlcXStcLjJzXG4i IDEgfSB9ICovCisKK2Zsb2F0MzJ4NF90Citmb29fNjR6X3EgKGZsb2F0MzJ4NF90IGEpCit7Cisg IHJldHVybiB2cm5kNjR6cV9mMzIgKGEpOworfQorCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3Nl bWJsZXItdGltZXMgImZyaW50NjR6XHR2XFswLTlcXStcLjRzLCB2XFswLTlcXStcLjRzXG4iIDEg fSB9ICovCisKK2Zsb2F0NjR4MV90Citmb29fNjR6X2Y2NCAoZmxvYXQ2NHgxX3QgYSkKK3sKKyAg cmV0dXJuIHZybmQ2NHpfZjY0IChhKTsKK30KKworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1i bGVyLXRpbWVzICJmcmludDY0elx0ZFxbMC05XF0rLCBkXFswLTlcXStcbiIgMSB9IH0gKi8KKwor ZmxvYXQ2NHgyX3QKK2Zvb182NHpfcV9mNjQgKGZsb2F0NjR4Ml90IGEpCit7CisgIHJldHVybiB2 cm5kNjR6cV9mNjQgKGEpOworfQorCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGlt ZXMgImZyaW50NjR6XHR2XFswLTlcXStcLjJkLCB2XFswLTlcXStcLjJkXG4iIDEgfSB9ICovCisK K2Zsb2F0MzJ4Ml90Citmb29fNjR4IChmbG9hdDMyeDJfdCBhKQoreworICByZXR1cm4gdnJuZDY0 eF9mMzIgKGEpOworfQorCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImZy aW50NjR4XHR2XFswLTlcXStcLjJzLCB2XFswLTlcXStcLjJzXG4iIDEgfSB9ICovCisKK2Zsb2F0 MzJ4NF90Citmb29fNjR4X3EgKGZsb2F0MzJ4NF90IGEpCit7CisgIHJldHVybiB2cm5kNjR4cV9m MzIgKGEpOworfQorCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImZyaW50 NjR4XHR2XFswLTlcXStcLjRzLCB2XFswLTlcXStcLjRzXG4iIDEgfSB9ICovCisKK2Zsb2F0NjR4 MV90Citmb29fNjR4X2Y2NCAoZmxvYXQ2NHgxX3QgYSkKK3sKKyAgcmV0dXJuIHZybmQ2NHhfZjY0 IChhKTsKK30KKworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJmcmludDY0 eFx0ZFxbMC05XF0rLCBkXFswLTlcXStcbiIgMSB9IH0gKi8KKworZmxvYXQ2NHgyX3QKK2Zvb182 NHhfcV9mNjQgKGZsb2F0NjR4Ml90IGEpCit7CisgIHJldHVybiB2cm5kNjR4cV9mNjQgKGEpOwor fQorCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImZyaW50NjR4XHR2XFsw LTlcXStcLjJkLCB2XFswLTlcXStcLjJkXG4iIDEgfSB9ICovCisjZW5kaWYK --_002_DB7PR08MB300295F2828A91B30C8CD16A930B0DB7PR08MB3002eurp_--