From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12on2040.outbound.protection.outlook.com [40.107.243.40]) by sourceware.org (Postfix) with ESMTPS id 0AEC73858D3C for ; Mon, 14 Nov 2022 16:18:47 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 0AEC73858D3C Authentication-Results: sourceware.org; dmarc=fail (p=quarantine dis=none) header.from=amd.com Authentication-Results: sourceware.org; spf=fail smtp.mailfrom=amd.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=fSDDznB4qf510BehCODd17UPj4nZg2n9OJbS7zNih7Pe2GywBsS+zFAoxboZa3ZP9oOBVmOBq03hlcGmVLA8oyGwOzfD9QO7+ZumiEuYgNtJk/x0jHh+Y4ij+n4nrZdA29tuIRUiR3t3cOyRpDXQaD/Xr0hGHHniJbqkCPi2CXR0AYl3GEdIBDqniZyCmOfruQUVRLDev+RLZWEn0jIFsMTnRveNkEr14Kp3XUnJn4Vtp/s4c2fD+fN3gvWZKdWx7JXq65RnHyu5I71065H72cXs6swDwpgnz8ffefTbJigysv0/p7JXZbt5XV1TuxyMiCkjJsb3GK2ud8e1JwkaAw== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=afTrINCEUF7CFp5kCZaxo9re8PCLaLG0bkSv2x30hHA=; b=hsZGall1NEGHhn67hYH3L14fmBOQ/hidPqwZAw6OIt9f/8gCqpZr7Xi55C7X0W+MeihxOdroTKtLMR28UPtW5JS+sizIHOjjHGFRtgCdOWFLm7Eu2XUsi/8yrUzxkm3T8cs/HlHy+dfBc+GHoQ6hvGPkkKzDTr37OU9e9WAlmITJx+ZAtDfXTqdleFgNPtqn6m919IR5pAS/+ctxIAhsGk4QRvBpEWb4p9yfeDIKrdlCPAm7jsNo6Bg+dMh3e5k04dobke5lQmMbZQZMpBBnbn0LogzNsQetzFO5RsATZM4StCekTQV/rANz67rn8tGDsVmUHKMK4xe8+msjZ2cFsQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=afTrINCEUF7CFp5kCZaxo9re8PCLaLG0bkSv2x30hHA=; b=f1KT0VpFZr9rQwAYVlGpqOE9fI3KD4UIk21Rmt3EwgT4cKw9rl9nSWY8kKy7D0Qfza6zEATLNp0boLXZx3AQKK8YZxQDJjn1NG4KzkV4B2EnoK7p+Rmt58w86UOfsS3om6S9pDqz0D9dpri3zA7rrPM6/V2LenTxj0RM85I2vCk= Received: from DM6PR12MB4795.namprd12.prod.outlook.com (2603:10b6:5:164::11) by SN7PR12MB8147.namprd12.prod.outlook.com (2603:10b6:806:32e::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5813.13; Mon, 14 Nov 2022 16:18:43 +0000 Received: from DM6PR12MB4795.namprd12.prod.outlook.com ([fe80::5a61:e2c8:1c78:c163]) by DM6PR12MB4795.namprd12.prod.outlook.com ([fe80::5a61:e2c8:1c78:c163%6]) with mapi id 15.20.5813.017; Mon, 14 Nov 2022 16:18:43 +0000 From: "Joshi, Tejas Sanjay" To: "gcc-patches@gcc.gnu.org" , "honza.hubicka@gmail.com" CC: Alexander Monakov , "Kumar, Venkataramanan" Subject: [PATCH][X86_64] Separate znver4 insn reservations from older znvers Thread-Topic: [PATCH][X86_64] Separate znver4 insn reservations from older znvers Thread-Index: Adj4PDK6isiklu5QQkmQOxLj7oCI6Q== Date: Mon, 14 Nov 2022 16:18:43 +0000 Message-ID: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: msip_labels: MSIP_Label_d4243a53-6221-4f75-8154-e4b33a5707a1_Enabled=true; MSIP_Label_d4243a53-6221-4f75-8154-e4b33a5707a1_SetDate=2022-11-14T14:56:42Z; MSIP_Label_d4243a53-6221-4f75-8154-e4b33a5707a1_Method=Privileged; MSIP_Label_d4243a53-6221-4f75-8154-e4b33a5707a1_Name=Public-AIP 2.0; MSIP_Label_d4243a53-6221-4f75-8154-e4b33a5707a1_SiteId=3dd8961f-e488-4e60-8e11-a82d994e183d; MSIP_Label_d4243a53-6221-4f75-8154-e4b33a5707a1_ActionId=8207d529-9186-4902-b401-33b1edd09690; MSIP_Label_d4243a53-6221-4f75-8154-e4b33a5707a1_ContentBits=1 msip_label_d4243a53-6221-4f75-8154-e4b33a5707a1_enabled: true msip_label_d4243a53-6221-4f75-8154-e4b33a5707a1_setdate: 2022-11-14T16:18:36Z msip_label_d4243a53-6221-4f75-8154-e4b33a5707a1_method: Privileged msip_label_d4243a53-6221-4f75-8154-e4b33a5707a1_name: Public-AIP 2.0 msip_label_d4243a53-6221-4f75-8154-e4b33a5707a1_siteid: 3dd8961f-e488-4e60-8e11-a82d994e183d msip_label_d4243a53-6221-4f75-8154-e4b33a5707a1_actionid: 94619508-afcb-43a4-9efd-807cecc6e6b4 msip_label_d4243a53-6221-4f75-8154-e4b33a5707a1_contentbits: 0 authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=amd.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: DM6PR12MB4795:EE_|SN7PR12MB8147:EE_ x-ms-office365-filtering-correlation-id: e1bc1415-a809-4851-c1c3-08dac65be647 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: +bWj4LuZCJIKmVr8CL1HUnnBMIdIUCEOPwncoTxey9fi3H6pyJWOcGeqD2no74/53RbEq/5XMncIObVwXNkUPfpB6Pst6M4oh10PvUEyWbYChdzH2OdLoRj5R3U/5Af0MqzNd31wC38MashZXN7FrkNH7QC1cHesVp4okremtjUAfbyhw96hnl3USexMSJWx3Pg+G7pUnBItObUKTx3NY/p+wQu6+z4i7YdN42KCJnnYdVE4tbTfs+9cRoBSYLQjx8uzhITM8ynlOtwyGnW7qYqM+My5X2WpEf+4BmoE9if+6wd9jET8FhX5Pm8XaaqQAvesWvqvXkdYw2c1rsa7lZnYUTuzcSeDYDOn4lVfKkkaBbA2W22kuuyX4wjk1TVWem3ZyaBM8jipi4eVoJsi2qTOcGIM7Akk/bxw6yHIPPrFvJ+5ByQimSc258xxt9V/+rDPdN+uIE/iKjVwj8Xa2PejCzhJtRuJQXI77fqIe0ZLXJxojUjY1RdbmYDK9jrzAhGwdIKrXFVNNRXezNxS8Q7G7ilpLJ/gHgdiokQGHHYU5o7YcHHX5j36fiwgctImiLjK4KZeXkZQPwDln+o6G1r16b0gxxmXkwi352l++MHJ2U5DGcG5dA/Ot/tciEUJAZlh/E9Tu17rttpNmZVJCxYli6v8e0Z/s+HyZtiPqu6Om57EEWiJCUrcu11fhJQu9MlbXnInQs3YbsNHQn2an6TzhsK2VQjbHbuuQCu2qVFpp9v/EvMG/CE2ybejUg5Y3AvleRuS2zajkcX+unG0ccmqmUY/YXBTRE/EW2cjRcHyhT2KQTGreMS7QZrKFpye x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM6PR12MB4795.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(4636009)(39860400002)(346002)(366004)(376002)(396003)(136003)(451199015)(66556008)(186003)(38070700005)(8936002)(76116006)(5660300002)(66946007)(41300700001)(30864003)(2906002)(38100700002)(66446008)(4326008)(8676002)(99936003)(52536014)(122000001)(64756008)(66476007)(86362001)(316002)(26005)(9686003)(55016003)(54906003)(110136005)(7696005)(83380400001)(6506007)(33656002)(478600001)(71200400001)(2004002)(559001)(579004);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?2GwP908dJXxLELbNZ0RHZNt2mAYbnr1O6E+wbPJPmgsG+n261TLPg+Z9qpSf?= =?us-ascii?Q?TRG2hredt4Ibv7If0FlE53sTvTtCmCk3kSO6rF5oPc71QNB0fxPzPHTbsr2h?= =?us-ascii?Q?Upc0JZoJqBCVUYCeumTyGczsd5OxmEtqSUnxJX5vZqygloKgQycZY6AEqhj0?= =?us-ascii?Q?U0bUguTlPj+DnbidcI0GyFh3lJVTeTR+ag5Z7ViUSnHuuye6pfPjyrF7Zb5a?= =?us-ascii?Q?5ntBg5zEpwJb820oY3lCsYMMj2mJzekdTn6U3x7tVqb1KjFbbNmHTMq3mG8s?= =?us-ascii?Q?9ubsQhgTcfR069/LZE0BBZmKL9iiz8qEIfNlCnt/TXQ+jBB5liFcUvIN+VbV?= =?us-ascii?Q?dEPRIT7YHsi/nRW5ErCpCQ+Eu0zqTatXXTrltT5T5/1/9jKjpr72G2rtL4/L?= =?us-ascii?Q?s4VGZuPsoSLtM4I/GJZg631vcomZNOMwiwI4EGZlPA3jlB9UGNxHAS+Rjbfm?= =?us-ascii?Q?HwAM3yaGy8oHGK6pd/aPK3E4ZsfoUMEb/suX3dZArfhPB7QlUuLHEPVbDYgr?= =?us-ascii?Q?+HrE7R2uI0f9W35vUo131qSTXVHYig8Lvt0lGKFX3TUiJanfFxfD0L8KHVwn?= =?us-ascii?Q?9psTEO1+eqJ+tcrEnTCBLrOc54mo53Xxt+haM4ees+NRksI4wk41gEldF1rh?= =?us-ascii?Q?eNugeNo8RytgKx/mltM1bkiUukkvRPs8lE7AXSfaKxIyy9qq9vizKgyu1q3g?= =?us-ascii?Q?KBXqWqox0s6zKxnj7JCsMM8QgPnxlTVbMO7yzeN4La0/QgSSXfxi6wxAvWaf?= =?us-ascii?Q?M2s4U0m6HgsmIPBRZ0TeZsVnBw1jNltiOqCdDSX6CfMxEtkP87v3Z4SrSouQ?= =?us-ascii?Q?BzqztxJYMq0jZLzGQcTgaoDK0iaSfTeC/wmtRtZgGltO7GoLCa1CWFmhMrmB?= =?us-ascii?Q?Q/mbtFcBw4NZoszBneIw4mXCD3e00vZSkJvwuVESjepl9cBzbFNxWEIDT8Yh?= =?us-ascii?Q?gpoa8+wyxSdVZsSoG/C4GXquppgbQw4F8dh6o4kU1ABKkmBlBQC80oCK9FzU?= =?us-ascii?Q?o6pCUSul9O+y855OWKPr0L3hxmqoq8Jl3fsRcIzo0LF1SNQDCMngLIRqPIX7?= =?us-ascii?Q?IbJBJsYnVjOo4TBzPnWVH6YrINmqc7n1x0K04N//rO3Rlh5ujMT0uFgC3a+8?= =?us-ascii?Q?I46TARxaiFByEDlkau63N4Cj6ni4RxHs42HrD29uDpHtgrLYKZHC9Kf5LCcg?= =?us-ascii?Q?natuIxOiz5nKZtWiuG2DP0f4KXV68gewep4Xtnb90iaawRgU8r+QNcWOP88A?= =?us-ascii?Q?4tjXCNE1TAO8SzR3yFI9zDtz+zPiNbKDr/eW4hd0f+AhLd/6Ny0oEgcJk5jK?= =?us-ascii?Q?qT8Z9K32C/jqe+4wwVgMpt077iPQBxeP75lfskmS0JLZBL4Qq3lZskb3+/Km?= =?us-ascii?Q?V9q6IpIos9PhZtlgyjOIs8zr4kH2v7+5D4BYNLl+sXqUxkA+zKQUN6y+2mZl?= =?us-ascii?Q?FPkxCZhyLYwtsaPt7WszNopOUxx+77lwSQFmzZZG6OHDP+u6xWbx5ISC3vDo?= =?us-ascii?Q?11ATe0Cvjp/pL//0Xt9fghsNOmBoDyKT37S5hVx0AvppoyMni1Z86XDdhG9e?= =?us-ascii?Q?q2dqGbQXHiAgEiMdQhw=3D?= Content-Type: multipart/mixed; boundary="_002_DM6PR12MB4795D38A7C29749BBDEABB98E3059DM6PR12MB4795namp_" MIME-Version: 1.0 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM6PR12MB4795.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: e1bc1415-a809-4851-c1c3-08dac65be647 X-MS-Exchange-CrossTenant-originalarrivaltime: 14 Nov 2022 16:18:43.3819 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: wYqFtQgJHmtPPCiRYt6bhXTl1XO3OmwQIfPTuneRO+pLY5U5eitAEGuF5wQ540dMUdWvmODMP7LTVTfq3L+4zw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN7PR12MB8147 X-Spam-Status: No, score=-9.9 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,KAM_SHORT,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_PASS,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: --_002_DM6PR12MB4795D38A7C29749BBDEABB98E3059DM6PR12MB4795namp_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable [Public] Hi, PFA the patch which adds znver4 instruction reservations separately from ol= der znver versions: * This also models separate div, fdiv and ssediv units accordingly. * Does not blow-up the insn-automata.cc size (it grew from 201502 to 206141= for me.) * The patch successfully builds, bootstraps, and passes make check. * I have also run spec, showing no regressions for 1-copy 3-iteration runs.= However, I observe 1.5% gain for 507.cactuBSSN_r. Is it ok for trunk? Thanks and Regards, Tejas Also, should I inline such long patches? gcc/ChangeLog: * gcc/common/config/i386/i386-common.cc (processor_alias_table): Use CPU_ZNVER4 for znver4. * config/i386/i386.md: Add znver4.md. * config/i386/znver4.md: New. --- gcc/common/config/i386/i386-common.cc | 2 +- gcc/config/i386/i386.md | 1 + gcc/config/i386/znver4.md | 1028 +++++++++++++++++++++++++ 3 files changed, 1030 insertions(+), 1 deletion(-) create mode 100644 gcc/config/i386/znver4.md diff --git a/gcc/common/config/i386/i386-common.cc b/gcc/common/config/i386= /i386-common.cc index f66bdd5a2af..4b01c3540e5 100644 --- a/gcc/common/config/i386/i386-common.cc +++ b/gcc/common/config/i386/i386-common.cc @@ -2113,7 +2113,7 @@ const pta processor_alias_table[] =3D {"znver3", PROCESSOR_ZNVER3, CPU_ZNVER3, PTA_ZNVER3, M_CPU_SUBTYPE (AMDFAM19H_ZNVER3), P_PROC_AVX2}, - {"znver4", PROCESSOR_ZNVER4, CPU_ZNVER3, + {"znver4", PROCESSOR_ZNVER4, CPU_ZNVER4, PTA_ZNVER4, M_CPU_SUBTYPE (AMDFAM19H_ZNVER4), P_PROC_AVX512F}, {"btver1", PROCESSOR_BTVER1, CPU_GENERIC, diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index 8081df76741..c18dfe2af9e 100644 --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -1312,6 +1312,7 @@ (include "bdver3.md") (include "btver2.md") (include "znver.md") +(include "znver4.md") (include "geode.md") (include "atom.md") (include "slm.md") diff --git a/gcc/config/i386/znver4.md b/gcc/config/i386/znver4.md new file mode 100644 index 00000000000..e3892d1df2f --- /dev/null +++ b/gcc/config/i386/znver4.md @@ -0,0 +1,1028 @@ +;; Copyright (C) 2012-2022 Free Software Foundation, Inc. +;; +;; This file is part of GCC. +;; +;; GCC is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation; either version 3, or (at your option) +;; any later version. +;; +;; GCC is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. +;; +;; You should have received a copy of the GNU General Public License +;; along with GCC; see the file COPYING3. If not see +;; . +;; + + +(define_attr "znver4_decode" "direct,vector,double" + (const_string "direct")) + +;; AMD znver4 Scheduling +;; Modeling automatons for zen decoders, integer execution pipes, +;; AGU pipes, branch, floating point execution and fp store units. +(define_automaton "znver4, znver4_ieu, znver4_idiv, znver4_fdiv, znver4_ss= ediv, znver4_agu, znver4_bru, znver4_fpu, znver4_fp_store") + +;; Decoders unit has 4 decoders and all of them can decode fast path +;; and vector type instructions. +(define_cpu_unit "znver4-decode0" "znver4") +(define_cpu_unit "znver4-decode1" "znver4") +(define_cpu_unit "znver4-decode2" "znver4") +(define_cpu_unit "znver4-decode3" "znver4") + +;; Currently blocking all decoders for vector path instructions as +;; they are dispatched separetely as microcode sequence. +(define_reservation "znver4-vector" "znver4-decode0+znver4-decode1+znver4-= decode2+znver4-decode3") + +;; Direct instructions can be issued to any of the four decoders. +(define_reservation "znver4-direct" "znver4-decode0|znver4-decode1|znver4-= decode2|znver4-decode3") + +;; Fix me: Need to revisit this later to simulate fast path double behavio= r. +(define_reservation "znver4-double" "znver4-direct") + + +;; Integer unit 4 ALU pipes. +(define_cpu_unit "znver4-ieu0" "znver4_ieu") +(define_cpu_unit "znver4-ieu1" "znver4_ieu") +(define_cpu_unit "znver4-ieu2" "znver4_ieu") +(define_cpu_unit "znver4-ieu3" "znver4_ieu") +(define_reservation "znver4-ieu" "znver4-ieu0|znver4-ieu1|znver4-ieu2|znve= r4-ieu3") + +;; 3 AGU pipes in znver4 +(define_cpu_unit "znver4-agu0" "znver4_agu") +(define_cpu_unit "znver4-agu1" "znver4_agu") +(define_cpu_unit "znver4-agu2" "znver4_agu") +(define_reservation "znver4-agu-reserve" "znver4-agu0|znver4-agu1|znver4-a= gu2") + +;; Load is 4 cycles. We do not model reservation of load unit. +(define_reservation "znver4-load" "znver4-agu-reserve") +(define_reservation "znver4-store" "znver4-agu-reserve") + +;; vectorpath (microcoded) instructions are single issue instructions. +;; So, they occupy all the integer units. +(define_reservation "znver4-ivector" "znver4-ieu0+znver4-ieu1 + +znver4-ieu2+znver4-ieu3 + +znver4-agu0+znver4-agu1+znver4-agu2") + +;; Floating point unit 4 FP pipes. +(define_cpu_unit "znver4-fpu0" "znver4_fpu") +(define_cpu_unit "znver4-fpu1" "znver4_fpu") +(define_cpu_unit "znver4-fpu2" "znver4_fpu") +(define_cpu_unit "znver4-fpu3" "znver4_fpu") + +(define_reservation "znver4-fpu" "znver4-fpu0|znver4-fpu1|znver4-fpu2|znve= r4-fpu3") + +(define_reservation "znver4-fvector" "znver4-fpu0+znver4-fpu1 + +znver4-fpu2+znver4-fpu3 + +znver4-agu0+znver4-agu1+znver4-agu2") + +;; DIV units +(define_cpu_unit "znver4-idiv" "znver4_idiv") +(define_cpu_unit "znver4-fdiv" "znver4_fdiv") +(define_cpu_unit "znver4-ssediv" "znver4_ssediv") + +;; znver4 has a separate branch unit. +(define_cpu_unit "znver4-bru" "znver4_bru") + +;; Separate fp store and fp-to-int store. Although there are 2 store pipes= , the +;; throughput is limited to only one per cycle. +(define_cpu_unit "znver4-fp-store" "znver4_fp_store") + +;; Call Instruction +(define_insn_reservation "znver4_call" 1 + (and (eq_attr "cpu" "znver4") + (eq_attr "type" "call,callv")) + "znver4-double,znver4-ieu0|znver4-bru,znver4-store") + +;; Push Instruction +(define_insn_reservation "znver4_push" 1 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "push") + (eq_attr "memory" "store"))) + "znver4-direct,znver4-store") + +(define_insn_reservation "znver4_push_load" 5 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "push") + (eq_attr "memory" "both"))) + "znver4-direct,znver4-load,znver4-store") + +;; Pop instruction +(define_insn_reservation "znver4_pop" 1 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "pop") + (eq_attr "memory" "load"))) + "znver4-direct,znver4-load") + +(define_insn_reservation "znver4_pop_mem" 5 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "pop") + (eq_attr "memory" "both"))) + "znver4-direct,znver4-load,znver4-store") + +;; Leave +(define_insn_reservation "znver4_leave" 1 + (and (eq_attr "cpu" "znver4") + (eq_attr "type" "leave")) + "znver4-double,znver4-ieu,znver4-store") + +;; Integer Instructions or General instructions +;; Multiplications +(define_insn_reservation "znver4_imul" 3 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "imul") + (and (eq_attr "mode" "QI,HI,SI") + (eq_attr "memory" "none")))) + "znver4-direct,znver4-ieu1") + +(define_insn_reservation "znver4_imul_DI" 4 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "imul") + (and (eq_attr "mode" "DI") + (eq_attr "memory" "none")))) + "znver4-direct,znver4-ieu1") + +(define_insn_reservation "znver4_imul_mem" 7 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "imul") + (and (eq_attr "mode" "QI,HI,SI") + (eq_attr "memory" "!none")))) + "znver4-direct,znver4-load,znver4-ieu1") + +(define_insn_reservation "znver4_imul_DI_mem" 8 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "imul") + (and (eq_attr "mode" "DI") + (eq_attr "memory" "!none")))) + "znver4-direct,znver4-load,znver4-ieu1") + +;; Divisions +(define_insn_reservation "znver4_idiv_DI" 18 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "idiv") + (and (eq_attr "mode" "DI") + (eq_attr "memory" "none")))) + "znver4-double,znver4-idiv*10") + +(define_insn_reservation "znver4_idiv_SI" 12 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "idiv") + (and (eq_attr "mode" "SI") + (eq_attr "memory" "none")))) + "znver4-double,znver4-idiv*6") + +(define_insn_reservation "znver4_idiv_HI" 10 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "idiv") + (and (eq_attr "mode" "HI") + (eq_attr "memory" "none")))) + "znver4-double,znver4-idiv*4") + +(define_insn_reservation "znver4_idiv_QI" 9 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "idiv") + (and (eq_attr "mode" "QI") + (eq_attr "memory" "none")))) + "znver4-double,znver4-idiv*4") + +(define_insn_reservation "znver4_idiv_DI_mem" 22 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "idiv") + (and (eq_attr "mode" "DI") + (eq_attr "memory" "!none")))) + "znver4-double,znver4-load,znver4-idiv*10") + +(define_insn_reservation "znver4_idiv_SI_mem" 16 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "idiv") + (and (eq_attr "mode" "SI") + (eq_attr "memory" "!none")))) + "znver4-double,znver4-load,znver4-idiv*6") + +(define_insn_reservation "znver4_idiv_HI_mem" 14 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "idiv") + (and (eq_attr "mode" "HI") + (eq_attr "memory" "!none")))) + "znver4-double,znver4-load,znver4-idiv*4") + +(define_insn_reservation "znver4_idiv_QI_mem" 13 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "idiv") + (and (eq_attr "mode" "QI") + (eq_attr "memory" "!none")))) + "znver4-double,znver4-load,znver4-idiv*4") + +;; STR and ISHIFT are microcoded. +(define_insn_reservation "znver4_str" 6 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "str") + (eq_attr "memory" "both,store"))) + "znver4-vector,znver4-ivector") + +(define_insn_reservation "znver4_ishift" 3 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ishift") + (eq_attr "memory" "both,store"))) + "znver4-vector,znver4-ivector") + +;; MOV - integer movs +(define_insn_reservation "znver4_imovx_double" 1 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "znver1_decode" "double") + (and (eq_attr "type" "imovx") + (eq_attr "memory" "none")))) + "znver4-double,znver4-ieu") + +(define_insn_reservation "znver4_imov_direct" 1 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "imov") + (eq_attr "memory" "none"))) + "znver4-direct,znver4-ieu") + +(define_insn_reservation "znver4_imov_double_store" 1 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "znver1_decode" "double") + (and (eq_attr "type" "imovx") + (eq_attr "memory" "store")))) + "znver4-double,znver4-ieu,znver4-store") + +(define_insn_reservation "znver4_imov_direct_store" 1 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "imov") + (eq_attr "memory" "store"))) + "znver4-direct,znver4-ieu,znver4-store") + +(define_insn_reservation "znver4_imov_load_double_store" 4 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "znver1_decode" "double") + (and (eq_attr "type" "imovx") + (eq_attr "memory" "store")))) + "znver4-double,znver4-load,znver4-ieu,znver4-store") + +(define_insn_reservation "znver4_imov_load_direct_store" 4 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "imov") + (eq_attr "memory" "store"))) + "znver4-direct,znver4-load,znver4-ieu,znver4-store") + +;; INTEGER/GENERAL Instructions +(define_insn_reservation "znver4_insn" 1 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "alu,alu1,negnot,rotate1,ishift1,test,incdec= ,icmp") + (eq_attr "memory" "none,unknown"))) + "znver4-direct,znver4-ieu") + +(define_insn_reservation "znver4_insn_load" 5 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "alu,alu1,negnot,rotate1,ishift1,test,incdec= ,icmp") + (eq_attr "memory" "load"))) + "znver4-direct,znver4-load,znver4-ieu") + +(define_insn_reservation "znver4_insn2" 1 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "icmov,setcc") + (eq_attr "memory" "none,unknown"))) + "znver4-direct,znver4-ieu0|znver4-ieu3") + +(define_insn_reservation "znver4_insn2_load" 5 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "icmov,setcc") + (eq_attr "memory" "load"))) + "znver4-direct,znver4-load,znver4-ieu0|znver4-ieu3") + +(define_insn_reservation "znver4_rotate" 1 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "rotate") + (eq_attr "memory" "none,unknown"))) + "znver4-direct,znver4-ieu1|znver4-ieu2") + +(define_insn_reservation "znver4_rotate_load" 5 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "rotate") + (eq_attr "memory" "load"))) + "znver4-direct,znver4-load,znver4-ieu1|znver4-ieu2") + +(define_insn_reservation "znver4_insn_store" 1 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "alu,alu1,negnot,rotate1,ishift1,test,incdec= ,icmp") + (eq_attr "memory" "load"))) + "znver4-direct,znver4-ieu,znver4-store") + +(define_insn_reservation "znver4_insn2_store" 1 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "icmov,setcc") + (eq_attr "memory" "load"))) + "znver4-direct,znver4-ieu0|znver4-ieu3,znver4-store") + +(define_insn_reservation "znver4_rotate_store" 1 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "rotate") + (eq_attr "memory" "load"))) + "znver4-direct,znver4-ieu1|znver4-ieu2,znver4-store") + +;; Other vector type +(define_insn_reservation "znver4_ieu_vector" 5 + (and (eq_attr "cpu" "znver4") + (eq_attr "type" "other,multi")) + "znver4-vector,znver4-ivector") + +;; alu1 instructions +(define_insn_reservation "znver4_alu1_vector" 3 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "znver1_decode" "vector") + (and (eq_attr "type" "alu1") + (eq_attr "memory" "none,unknown")))) + "znver4-vector,znver4-ivector") + +(define_insn_reservation "znver4_alu1_direct" 1 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "znver1_decode" "direct") + (and (eq_attr "type" "alu1") + (eq_attr "memory" "none,unknown")))) + "znver4-direct,znver4-ieu") + +;; Branches +(define_insn_reservation "znver4_branch" 1 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ibr") + (eq_attr "memory" "none"))) + "znver4-direct,znver4-ieu0|znver4-bru") + +(define_insn_reservation "znver4_branch_mem" 5 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ibr") + (eq_attr "memory" "load"))) + "znver4-vector,znver4-ivector") + +;; LEA instruction with simple addressing +(define_insn_reservation "znver4_lea" 1 + (and (eq_attr "cpu" "znver4") + (eq_attr "type" "lea")) + "znver4-direct,znver4-ieu") + +;; Floating Point +;; FP movs +(define_insn_reservation "znver4_fp_cmov" 6 + (and (eq_attr "cpu" "znver4") + (eq_attr "type" "fcmov")) + "znver4-vector,znver4-fvector") + +(define_insn_reservation "znver4_fp_mov_direct" 1 + (and (eq_attr "cpu" "znver4") + (eq_attr "type" "fmov")) + "znver4-direct,znver4-fpu1") + +(define_insn_reservation "znver4_fp_mov_direct_load" 8 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "znver1_decode" "direct") + (and (eq_attr "type" "fmov") + (eq_attr "memory" "load")))) + "znver4-direct,znver4-load,znver4-fpu1") + +(define_insn_reservation "znver4_fp_mov_direct_store" 5 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "znver1_decode" "direct") + (and (eq_attr "type" "fmov") + (eq_attr "memory" "store")))) + "znver4-direct,znver4-fpu1,znver4-fp-store") + +(define_insn_reservation "znver4_fp_mov_double" 5 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "znver1_decode" "double") + (and (eq_attr "type" "fmov") + (eq_attr "memory" "none")))) + "znver4-double,znver4-fpu1,znver4-fp-store") + +(define_insn_reservation "znver4_fp_mov_double_load" 12 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "znver1_decode" "double") + (and (eq_attr "type" "fmov") + (eq_attr "memory" "load")))) + "znver4-double,znver4-load,znver4-fpu1,znver4-fp-store") + +;; FSQRT +(define_insn_reservation "znver4_fsqrt" 22 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "fpspc") + (and (eq_attr "mode" "XF") + (eq_attr "memory" "none")))) + "znver4-direct,znver4-fdiv*20") + +;; FPSPC instructions +(define_insn_reservation "znver4_fp_spc" 6 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "fpspc") + (eq_attr "memory" "none"))) + "znver4-vector,znver4-fvector") + +(define_insn_reservation "znver4_fp_insn_vector" 6 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "znver1_decode" "vector") + (eq_attr "type" "mmxcvt,sselog1,ssemov"))) + "znver4-vector,znver4-fvector") + +;; FABS, FCHS +(define_insn_reservation "znver4_fp_fsgn" 1 + (and (eq_attr "cpu" "znver4") + (eq_attr "type" "fsgn")) + "znver4-direct,znver4-fpu0|znver4-fpu1") + +;; FCMP +(define_insn_reservation "znver4_fp_fcmp" 3 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "fcmp") + (eq_attr "memory" "none"))) + "znver4-direct,znver4-fpu1") + +(define_insn_reservation "znver4_fp_fcmp_double" 4 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "fcmp") + (and (eq_attr "znver1_decode" "double") + (eq_attr "memory" "none")))) + "znver4-double,znver4-fpu1,znver4-fpu2") + +;; FADD, FSUB, FMUL +(define_insn_reservation "znver4_fp_op_mul" 6 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "fop,fmul") + (eq_attr "memory" "none"))) + "znver4-direct,znver4-fpu0") + +(define_insn_reservation "znver4_fp_op_mul_load" 13 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "fop,fmul") + (eq_attr "memory" "load"))) + "znver4-direct,znver4-load,znver4-fpu0") + +;; FDIV +(define_insn_reservation "znver4_fp_div" 15 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "fdiv") + (eq_attr "memory" "none"))) + "znver4-direct,znver4-fdiv*15") + +(define_insn_reservation "znver4_fp_div_load" 22 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "fdiv") + (eq_attr "memory" "load"))) + "znver4-direct,znver4-load,znver4-fdiv*15") + +(define_insn_reservation "znver4_fp_idiv_load" 26 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "fdiv") + (and (eq_attr "fp_int_src" "true") + (eq_attr "memory" "load")))) + "znver4-double,znver4-load,znver4-fdiv*19") + +;; MMX, SSE, SSEn.n instructions +(define_insn_reservation "znver4_fp_mmx " 1 + (and (eq_attr "cpu" "znver4") + (eq_attr "type" "mmx")) + "znver4-direct,znver4-fpu1|znver4-fpu2") + +(define_insn_reservation "znver4_mmx_add_cmp" 1 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "mmxadd,mmxcmp") + (eq_attr "memory" "none"))) + "znver4-direct,znver4-fpu") + +(define_insn_reservation "znver4_mmx_add_cmp_load" 8 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "mmxadd,mmxcmp") + (eq_attr "memory" "load"))) + "znver4-direct,znver4-load,znver4-fpu") + +(define_insn_reservation "znver4_mmx_insn" 1 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "mmxcvt,sseshuf,sseshuf1,mmxshft") + (eq_attr "memory" "none"))) + "znver4-direct,znver4-fpu1|znver4-fpu2") + +(define_insn_reservation "znver4_mmx_insn_load" 8 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "mmxcvt,sseshuf,sseshuf1,mmxshft") + (eq_attr "memory" "load"))) + "znver4-direct,znver4-load,znver4-fpu1|znver4-fpu2") + +(define_insn_reservation "znver4_mmx_mov" 1 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" ",mmxmov") + (eq_attr "memory" "none"))) + "znver4-direct,znver4-fp-store") + +(define_insn_reservation "znver4_mmx_mov_load" 8 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "mmxmov") + (eq_attr "memory" "load"))) + "znver4-direct,znver4-load,znver4-fp-store") + +(define_insn_reservation "znver4_mmx_mul" 3 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "mmxmul") + (eq_attr "memory" "none"))) + "znver4-direct,znver4-fpu0|znver4-fpu3") + +(define_insn_reservation "znver4_mmx_mul_load" 10 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "mmxmul") + (eq_attr "memory" "load"))) + "znver4-direct,znver4-load,znver4-fpu0|znver4-fpu3") + +;; AVX instructions +(define_insn_reservation "znver4_sse_log" 1 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "sselog,sselog1") + (and (eq_attr "mode" "V4SF,V8SF,V2DF,V4DF") + (eq_attr "memory" "none")))) + "znver4-direct,znver4-fpu") + +(define_insn_reservation "znver4_sse_log_evex" 1 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "sselog,sselog1") + (and (eq_attr "mode" "V16SF,V8DF") + (eq_attr "memory" "none")))) + "znver4-direct,znver4-fpu0+znver4-fpu1|znver4-fpu2+znver4-fpu3") + +(define_insn_reservation "znver4_sse_log_load" 8 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "sselog,sselog1") + (and (eq_attr "mode" "V4SF,V8SF,V2DF,V4DF") + (eq_attr "memory" "load")))) + "znver4-direct,znver4-load,znver4-fpu") + +(define_insn_reservation "znver4_sse_log_evex_load" 8 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "sselog,sselog1") + (and (eq_attr "mode" "V16SF,V8DF") + (eq_attr "memory" "load")))) + "znver4-direct,znver4-load,znver4-fpu0+znver4-fpu1|znver4-fpu2+znver4-= fpu3") + +(define_insn_reservation "znver4_sse_ilog" 1 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "sselog,sselog1") + (and (eq_attr "mode" "OI") + (eq_attr "memory" "none")))) + "znver4-direct,znver4-fpu0+znver4-fpu1|znver4-fpu2+znver4-fpu3") + +(define_insn_reservation "znver4_sse_ilog_evex" 1 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "sselog,sselog1") + (and (eq_attr "mode" "TI") + (eq_attr "memory" "none")))) + "znver4-direct,znver4-fpu0+znver4-fpu1+znver4-fpu2+znver4-fpu3") + +(define_insn_reservation "znver4_sse_ilog_load" 8 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "sselog,sselog1") + (and (eq_attr "mode" "OI") + (eq_attr "memory" "load")))) + "znver4-direct,znver4-load,znver4-fpu0+znver4-fpu1|znver4-fpu2+znver4-= fpu3") + +(define_insn_reservation "znver4_sse_ilog_evex_load" 8 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "sselog,sselog1") + (and (eq_attr "mode" "TI") + (eq_attr "memory" "load")))) + "znver4-direct,znver4-load,znver4-fpu0+znver4-fpu1+znver4-fpu2+znver4-= fpu3") + +(define_insn_reservation "znver4_sse_comi" 1 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssecomi") + (eq_attr "memory" "none"))) + "znver4-double,znver4-fpu2|znver4-fpu3,znver4-fp-store") + +(define_insn_reservation "znver4_sse_comi_load" 8 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssecomi") + (eq_attr "memory" "load"))) + "znver4-double,znver4-load,znver4-fpu2|znver4-fpu3,znver4-fp-store") + +(define_insn_reservation "znver4_sse_test" 1 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "prefix_extra" "1") + (and (eq_attr "type" "ssecomi") + (eq_attr "memory" "none")))) + "znver4-direct,znver4-fpu1|znver4-fpu2") + +(define_insn_reservation "znver4_sse_test_load" 8 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "prefix_extra" "1") + (and (eq_attr "type" "ssecomi") + (eq_attr "memory" "load")))) + "znver4-direct,znver4-load,znver4-fpu1|znver4-fpu2") + +(define_insn_reservation "znver4_sse_imul" 3 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "sseimul") + (and (eq_attr "mode" "QI,HI,SI,DI,TI,OI") + (eq_attr "memory" "none")))) + "znver4-direct,znver4-fpu0|znver4-fpu3") + +(define_insn_reservation "znver4_sse_imul_load" 10 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "sseimul") + (and (eq_attr "mode" "QI,HI,SI,DI,TI,OI") + (eq_attr "memory" "load")))) + "znver4-direct,znver4-load,znver4-fpu0|znver4-fpu3") + +(define_insn_reservation "znver4_sse_mov" 2 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssemov") + (and (eq_attr "mode" "QI,HI,SI,DI,TI,OI") + (eq_attr "memory" "none")))) + "znver4-direct,znver4-fpu1|znver4-fpu2") + +(define_insn_reservation "znver4_sse_mov_load" 9 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssemov") + (and (eq_attr "mode" "QI,HI,SI,DI,TI,OI") + (eq_attr "memory" "load")))) + "znver4-direct,znver4-load,znver4-fpu1|znver4-fpu2") + +(define_insn_reservation "znver4_sse_mov_store" 5 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssemov") + (and (eq_attr "mode" "QI,HI,SI,DI,TI,OI") + (eq_attr "memory" "store")))) + "znver4-direct,znver4-fpu1|znver4-fpu2,znver4-fp-store") + +(define_insn_reservation "znver4_sse_mov_fp" 1 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssemov") + (and (eq_attr "mode" "V16SF,V8DF,V8SF,V4DF,V4SF,V2DF,V2SF,V1DF,SF") + (eq_attr "memory" "none")))) + "znver4-direct,znver4-fpu") + +(define_insn_reservation "znver4_sse_mov_fp_load" 8 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssemov") + (and (eq_attr "mode" "V16SF,V8DF,V8SF,V4DF,V4SF,V2DF,V2SF,V1DF,SF") + (eq_attr "memory" "load")))) + "znver4-direct,znver4-load,znver4-fpu") + +(define_insn_reservation "znver4_sse_mov_fp_store" 1 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssemov") + (and (eq_attr "mode" "V16SF,V8DF,V8SF,V4DF,V4SF,V2DF,V2SF,V1DF,SF") + (eq_attr "memory" "store")))) + "znver4-direct,znver4-fp-store") + +(define_insn_reservation "znver4_sse_add" 3 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "sseadd") + (and (eq_attr "mode" "V8SF,V4DF,V4SF,V2DF,V2SF,V1DF,SF") + (eq_attr "memory" "none")))) + "znver4-direct,znver4-fpu2|znver4-fpu3") + +(define_insn_reservation "znver4_sse_add_load" 10 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "sseadd") + (and (eq_attr "mode" "V8SF,V4DF,V4SF,V2DF,V2SF,V1DF,SF") + (eq_attr "memory" "load")))) + "znver4-direct,znver4-load,znver4-fpu2|znver4-fpu3") + +(define_insn_reservation "znver4_sse_add1" 6 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "sseadd1") + (and (eq_attr "mode" "V8SF,V4DF,V4SF,V2DF,V2SF,V1DF,SF") + (eq_attr "memory" "none")))) + "znver4-vector,znver4-fvector") + +(define_insn_reservation "znver4_sse_add1_load" 13 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "sseadd1") + (and (eq_attr "mode" "V8SF,V4DF,V4SF,V2DF,V2SF,V1DF,SF") + (eq_attr "memory" "load")))) + "znver4-vector,znver4-load,znver4-fvector") + +(define_insn_reservation "znver4_sse_iadd" 1 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "sseiadd") + (and (eq_attr "mode" "QI,HI,SI,DI,TI,OI") + (eq_attr "memory" "none")))) + "znver4-direct,znver4-fpu") + +(define_insn_reservation "znver4_sse_iadd_load" 8 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "sseiadd") + (and (eq_attr "mode" "QI,HI,SI,DI,TI,OI") + (eq_attr "memory" "load")))) + "znver4-direct,znver4-load,znver4-fpu") + +(define_insn_reservation "znver4_sse_mul" 3 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssemul") + (and (eq_attr "mode" "V8SF,V4DF,V4SF,V2DF,V2SF,V1DF,SF") + (eq_attr "memory" "none")))) + "znver4-direct,znver4-fpu0|znver4-fpu3") + +(define_insn_reservation "znver4_sse_mul_load" 10 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "sseadd") + (and (eq_attr "mode" "V8SF,V4DF,V4SF,V2DF,V2SF,V1DF,SF") + (eq_attr "memory" "load")))) + "znver4-direct,znver4-load,znver4-fpu0|znver4-fpu1") + +(define_insn_reservation "znver4_sse_div_pd" 13 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssediv") + (and (eq_attr "mode" "V4DF,V2DF,V1DF") + (eq_attr "memory" "none")))) + "znver4-direct,znver4-ssediv*7") + +(define_insn_reservation "znver4_sse_div_ps" 10 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssediv") + (and (eq_attr "mode" "V8SF,V4SF,V2SF,SF") + (eq_attr "memory" "none")))) + "znver4-direct,znver4-ssediv*5") + +(define_insn_reservation "znver4_sse_div_pd_load" 20 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssediv") + (and (eq_attr "mode" "V4DF,V2DF,V1DF") + (eq_attr "memory" "load")))) + "znver4-direct,znver4-load,znver4-ssediv*7") + +(define_insn_reservation "znver4_sse_div_ps_load" 17 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssediv") + (and (eq_attr "mode" "V8SF,V4SF,V2SF,SF") + (eq_attr "memory" "load")))) + "znver4-direct,znver4-load,znver4-ssediv*5") + +(define_insn_reservation "znver4_sse_cmp_avx" 3 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssecmp,ssecomi") + (and (eq_attr "mode" "V4SF,V2DF,V2SF,V1DF,SF,QI,HI,SI,DI,TI") + (eq_attr "memory" "none")))) + "znver4-direct,znver4-fpu0|znver4-fpu1") + +(define_insn_reservation "znver4_sse_cmp_avx_load" 10 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssecmp,ssecomi") + (and (eq_attr "mode" "V4SF,V2DF,V2SF,V1DF,SF,QI,HI,SI,DI,TI") + (eq_attr "memory" "load")))) + "znver4-direct,znver4-load,znver4-fpu0|znver4-fpu1") + +(define_insn_reservation "znver4_sse_cmp_avx2" 4 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssecmp,ssecomi") + (and (eq_attr "mode" "V8SF,V4DF,OI") + (eq_attr "memory" "none")))) + "znver4-direct,znver4-fpu0|znver4-fpu1") + +(define_insn_reservation "znver4_sse_cmp_avx2_load" 11 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssecmp,ssecomi") + (and (eq_attr "mode" "V8SF,V4DF,OI") + (eq_attr "memory" "load")))) + "znver4-direct,znver4-load,znver4-fpu0|znver4-fpu1") + +(define_insn_reservation "znver4_sse_cvt" 3 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssecvt") + (and (eq_attr "mode" "V8SF,V4DF,V4SF,V2DF,V2SF,V1DF,SF") + (eq_attr "memory" "none")))) + "znver4-direct,znver4-fpu2|znver4-fpu3") + +(define_insn_reservation "znver4_sse_cvt_load" 10 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssecvt") + (and (eq_attr "mode" "V8SF,V4DF,V4SF,V2DF,V2SF,V1DF,SF") + (eq_attr "memory" "load")))) + "znver4-direct,znver4-load,znver4-fpu2|znver4-fpu3") + +(define_insn_reservation "znver4_sse_icvt" 3 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssecvt") + (and (eq_attr "mode" "SI") + (eq_attr "memory" "none")))) + "znver4-direct,znver4-fpu2|znver4-fpu3") + +(define_insn_reservation "znver4_sse_icvt_store" 4 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssecvt") + (and (eq_attr "mode" "SI") + (eq_attr "memory" "store")))) + "znver4-direct,znver4-fpu2|znver4-fpu3,znver4-fp-store") + +(define_insn_reservation "znver4_sse_shuf" 1 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "sseshuf") + (and (eq_attr "mode" "V8SF,V4DF,V4SF,V2DF,V2SF,V1DF,SF") + (eq_attr "memory" "none")))) + "znver4-direct,znver4-fpu1|znver4-fpu2") + +(define_insn_reservation "znver4_sse_shuf_load" 8 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "sseshuf") + (and (eq_attr "mode" "V8SF,V4DF,V4SF,V2DF,V2SF,V1DF,SF") + (eq_attr "memory" "load")))) + "znver4-direct,znver4-load,znver4-fpu") + +(define_insn_reservation "znver4_sse_ishuf" 3 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "sseshuf") + (and (eq_attr "mode" "OI") + (eq_attr "memory" "none")))) + "znver4-direct,znver4-fpu1|znver4-fpu2") + +(define_insn_reservation "znver4_sse_ishuf_load" 10 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "sseshuf") + (and (eq_attr "mode" "OI") + (eq_attr "memory" "load")))) + "znver4-direct,znver4-load,znver4-fpu1|znver4-fpu2") + +;; AVX512 instructions +(define_insn_reservation "znver4_sse_mul_evex" 3 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssemul") + (and (eq_attr "mode" "V16SF,V8DF") + (eq_attr "memory" "none")))) + "znver4-double,znver4-fpu0|znver4-fpu3") + +(define_insn_reservation "znver4_sse_mul_evex_load" 10 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "sseadd") + (and (eq_attr "mode" "V16SF,V8DF") + (eq_attr "memory" "load")))) + "znver4-double,znver4-load,znver4-fpu0|znver4-fpu1") + +(define_insn_reservation "znver4_sse_imul_evex" 3 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "sseimul") + (and (eq_attr "mode" "XI") + (eq_attr "memory" "none")))) + "znver4-double,znver4-fpu0|znver4-fpu1") + +(define_insn_reservation "znver4_sse_imul_evex_load" 10 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "sseimul") + (and (eq_attr "mode" "XI") + (eq_attr "memory" "load")))) + "znver4-double,znver4-load,znver4-fpu0|znver4-fpu1") + +(define_insn_reservation "znver4_sse_mov_evex" 4 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssemov") + (and (eq_attr "mode" "XI") + (eq_attr "memory" "none")))) + "znver4-double,znver4-fpu1|znver4-fpu2") + +(define_insn_reservation "znver4_sse_mov_evex_load" 11 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssemov") + (and (eq_attr "mode" "XI") + (eq_attr "memory" "load")))) + "znver4-double,znver4-load,znver4-fpu1|znver4-fpu2") + +(define_insn_reservation "znver4_sse_mov_evex_store" 5 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssemov") + (and (eq_attr "mode" "XI") + (eq_attr "memory" "store")))) + "znver4-double,znver4-fpu1|znver4-fpu2,znver4-fp-store") + +(define_insn_reservation "znver4_sse_add_evex" 3 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "sseadd") + (and (eq_attr "mode" "V16SF,V8DF") + (eq_attr "memory" "none")))) + "znver4-double,znver4-fpu2|znver4-fpu3") + +(define_insn_reservation "znver4_sse_add_evex_load" 10 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "sseadd") + (and (eq_attr "mode" "V16SF,V8DF") + (eq_attr "memory" "load")))) + "znver4-double,znver4-load,znver4-fpu2|znver4-fpu3") + +(define_insn_reservation "znver4_sse_iadd_evex" 1 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "sseiadd") + (and (eq_attr "mode" "XI") + (eq_attr "memory" "none")))) + "znver4-double,znver4-fpu") + +(define_insn_reservation "znver4_sse_iadd_evex_load" 8 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "sseiadd") + (and (eq_attr "mode" "XI") + (eq_attr "memory" "load")))) + "znver4-double,znver4-load,znver4-fpu") + +(define_insn_reservation "znver4_sse_div_pd_evex" 13 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssediv") + (and (eq_attr "mode" "V8DF") + (eq_attr "memory" "none")))) + "znver4-double,znver4-ssediv*7") + +(define_insn_reservation "znver4_sse_div_ps_evex" 10 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssediv") + (and (eq_attr "mode" "V16SF") + (eq_attr "memory" "none")))) + "znver4-double,znver4-ssediv*5") + +(define_insn_reservation "znver4_sse_div_pd_evex_load" 20 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssediv") + (and (eq_attr "mode" "V8DF") + (eq_attr "memory" "load")))) + "znver4-double,znver4-load,znver4-ssediv*7") + +(define_insn_reservation "znver4_sse_div_ps_evex_load" 17 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssediv") + (and (eq_attr "mode" "V16SF") + (eq_attr "memory" "load")))) + "znver4-double,znver4-load,znver4-ssediv*5") + +(define_insn_reservation "znver4_sse_cmp_avx512" 5 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssecmp,ssecomi") + (and (eq_attr "mode" "V16SF,V8DF,XI") + (eq_attr "memory" "none")))) + "znver4-double,znver4-fpu0|znver4-fpu1") + +(define_insn_reservation "znver4_sse_cmp_avx512_load" 12 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssecmp,ssecomi") + (and (eq_attr "mode" "V16SF,V8DF,XI") + (eq_attr "memory" "load")))) + "znver4-double,znver4-load,znver4-fpu0|znver4-fpu1") + +(define_insn_reservation "znver4_sse_cvt_evex" 6 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssecvt") + (and (eq_attr "mode" "V16SF,V8DF") + (eq_attr "memory" "none")))) + "znver4-double,znver4-fpu1|znver4-fpu2,znver4-fpu2|znver4-fpu3") + +(define_insn_reservation "znver4_sse_cvt_evex_load" 13 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssecvt") + (and (eq_attr "mode" "V16SF,V8DF") + (eq_attr "memory" "load")))) + "znver4-double,znver4-load,znver4-fpu1|znver4-fpu2,znver4-fpu2|znver4-= fpu3") + +(define_insn_reservation "znver4_sse_shuf_evex" 1 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "sseshuf") + (and (eq_attr "mode" "V16SF,V8DF") + (eq_attr "memory" "none")))) + "znver4-double,znver4-fpu") + +(define_insn_reservation "znver4_sse_shuf_evex_load" 8 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "sseshuf") + (and (eq_attr "mode" "V16SF,V8DF") + (eq_attr "memory" "load")))) + "znver4-double,znver4-load,znver4-fpu") + +(define_insn_reservation "znver4_sse_ishuf_evex" 4 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "sseshuf") + (and (eq_attr "mode" "XI") + (eq_attr "memory" "none")))) + "znver4-double,znver4-fpu1|znver4-fpu2") + +(define_insn_reservation "znver4_sse_ishuf_evex_load" 11 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "sseshuf") + (and (eq_attr "mode" "XI") + (eq_attr "memory" "load")))) + "znver4-double,znver4-load,znver4-fpu1|znver4-fpu2") + +(define_insn_reservation "znver4_sse_muladd" 4 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssemuladd") + (eq_attr "memory" "none"))) + "znver4-direct,znver4-fpu0|znver4-fpu1") + +(define_insn_reservation "znver4_sse_muladd_load" 11 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "sseshuf") + (eq_attr "memory" "load"))) + "znver4-direct,znver4-load,znver4-fpu0|znver4-fpu1") + +;; AVX512 mask instructions + +(define_insn_reservation "znver4_sse_mskmov" 2 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "mskmov") + (eq_attr "memory" "none"))) + "znver4-direct,znver4-fpu0|znver4-fpu1") + +(define_insn_reservation "znver4_sse_msklog" 1 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "msklog") + (eq_attr "memory" "none"))) + "znver4-direct,znver4-fpu2|znver4-fpu3") --=20 2.25.1 --_002_DM6PR12MB4795D38A7C29749BBDEABB98E3059DM6PR12MB4795namp_ Content-Type: application/octet-stream; name="0001-Add-AMD-znver4-instruction-reservations.patch" Content-Description: 0001-Add-AMD-znver4-instruction-reservations.patch Content-Disposition: attachment; filename="0001-Add-AMD-znver4-instruction-reservations.patch"; size=39882; creation-date="Mon, 14 Nov 2022 15:23:00 GMT"; modification-date="Mon, 14 Nov 2022 16:18:41 GMT" Content-Transfer-Encoding: base64 RnJvbSBlNjg5OTM4NzVkYjVhMTczNDI5MTExYjhlN2NmYWMwOTkwMTlkYjBhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUZWphcyBKb3NoaSA8VGVqYXNTYW5qYXkuSm9zaGlAYW1kLmNv bT4KRGF0ZTogV2VkLCA5IE5vdiAyMDIyIDAwOjEwOjU5ICswNTMwClN1YmplY3Q6IFtQQVRDSF0g QWRkIEFNRCB6bnZlcjQgaW5zdHJ1Y3Rpb24gcmVzZXJ2YXRpb25zCgpUaGlzIGFkZHMgem52ZXI0 IGF1dG9tYXRhIHVuaXRzIGFuZCByZXNlcnZhdGlvbnMgc2VwYXJhdGVseSBmcm9tIG90aGVyCnpu dmVyIGF1dG9tYXRhLCBhdm9pZGluZyB0aGUgaW5zbi1hdXRvbWF0YS5jYyBzaXplIGJsb3ctdXAu CgpnY2MvQ2hhbmdlTG9nOgoKCSogZ2NjL2NvbW1vbi9jb25maWcvaTM4Ni9pMzg2LWNvbW1vbi5j YyAocHJvY2Vzc29yX2FsaWFzX3RhYmxlKToKCVVzZSBDUFVfWk5WRVI0IGZvciB6bnZlcjQuCgkq IGNvbmZpZy9pMzg2L2kzODYubWQ6IEFkZCB6bnZlcjQubWQuCgkqIGNvbmZpZy9pMzg2L3pudmVy NC5tZDogTmV3LgoKLS0tCiBnY2MvY29tbW9uL2NvbmZpZy9pMzg2L2kzODYtY29tbW9uLmNjIHwg ICAgMiArLQogZ2NjL2NvbmZpZy9pMzg2L2kzODYubWQgICAgICAgICAgICAgICB8ICAgIDEgKwog Z2NjL2NvbmZpZy9pMzg2L3pudmVyNC5tZCAgICAgICAgICAgICB8IDEwMjggKysrKysrKysrKysr KysrKysrKysrKysrKwogMyBmaWxlcyBjaGFuZ2VkLCAxMDMwIGluc2VydGlvbnMoKyksIDEgZGVs ZXRpb24oLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvY29uZmlnL2kzODYvem52ZXI0Lm1kCgpk aWZmIC0tZ2l0IGEvZ2NjL2NvbW1vbi9jb25maWcvaTM4Ni9pMzg2LWNvbW1vbi5jYyBiL2djYy9j b21tb24vY29uZmlnL2kzODYvaTM4Ni1jb21tb24uY2MKaW5kZXggZjY2YmRkNWEyYWYuLjRiMDFj MzU0MGU1IDEwMDY0NAotLS0gYS9nY2MvY29tbW9uL2NvbmZpZy9pMzg2L2kzODYtY29tbW9uLmNj CisrKyBiL2djYy9jb21tb24vY29uZmlnL2kzODYvaTM4Ni1jb21tb24uY2MKQEAgLTIxMTMsNyAr MjExMyw3IEBAIGNvbnN0IHB0YSBwcm9jZXNzb3JfYWxpYXNfdGFibGVbXSA9CiAgIHsiem52ZXIz IiwgUFJPQ0VTU09SX1pOVkVSMywgQ1BVX1pOVkVSMywKICAgICBQVEFfWk5WRVIzLAogICAgIE1f Q1BVX1NVQlRZUEUgKEFNREZBTTE5SF9aTlZFUjMpLCBQX1BST0NfQVZYMn0sCi0gIHsiem52ZXI0 IiwgUFJPQ0VTU09SX1pOVkVSNCwgQ1BVX1pOVkVSMywKKyAgeyJ6bnZlcjQiLCBQUk9DRVNTT1Jf Wk5WRVI0LCBDUFVfWk5WRVI0LAogICAgIFBUQV9aTlZFUjQsCiAgICAgTV9DUFVfU1VCVFlQRSAo QU1ERkFNMTlIX1pOVkVSNCksIFBfUFJPQ19BVlg1MTJGfSwKICAgeyJidHZlcjEiLCBQUk9DRVNT T1JfQlRWRVIxLCBDUFVfR0VORVJJQywKZGlmZiAtLWdpdCBhL2djYy9jb25maWcvaTM4Ni9pMzg2 Lm1kIGIvZ2NjL2NvbmZpZy9pMzg2L2kzODYubWQKaW5kZXggODA4MWRmNzY3NDEuLmMxOGRmZTJh ZjllIDEwMDY0NAotLS0gYS9nY2MvY29uZmlnL2kzODYvaTM4Ni5tZAorKysgYi9nY2MvY29uZmln L2kzODYvaTM4Ni5tZApAQCAtMTMxMiw2ICsxMzEyLDcgQEAKIChpbmNsdWRlICJiZHZlcjMubWQi KQogKGluY2x1ZGUgImJ0dmVyMi5tZCIpCiAoaW5jbHVkZSAiem52ZXIubWQiKQorKGluY2x1ZGUg InpudmVyNC5tZCIpCiAoaW5jbHVkZSAiZ2VvZGUubWQiKQogKGluY2x1ZGUgImF0b20ubWQiKQog KGluY2x1ZGUgInNsbS5tZCIpCmRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2kzODYvem52ZXI0Lm1k IGIvZ2NjL2NvbmZpZy9pMzg2L3pudmVyNC5tZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwMC4uZTM4OTJkMWRmMmYKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvY29uZmlnL2kz ODYvem52ZXI0Lm1kCkBAIC0wLDAgKzEsMTAyOCBAQAorOzsgQ29weXJpZ2h0IChDKSAyMDEyLTIw MjIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCis7OworOzsgVGhpcyBmaWxlIGlzIHBh cnQgb2YgR0NDLgorOzsKKzs7IEdDQyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp YnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cis7OyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorOzsgdGhlIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMywgb3IgKGF0IHlvdXIgb3B0aW9uKQorOzsg YW55IGxhdGVyIHZlcnNpb24uCis7OworOzsgR0NDIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCis7OyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorOzsgTUVSQ0hBTlRBQklMSVRZIG9y IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorOzsgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKzs7Cis7OyBZb3Ugc2hvdWxkIGhh dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorOzsg YWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKKzs7IDxo dHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKzs7CisKKworKGRlZmluZV9hdHRyICJ6bnZl cjRfZGVjb2RlIiAiZGlyZWN0LHZlY3Rvcixkb3VibGUiCisgIChjb25zdF9zdHJpbmcgImRpcmVj dCIpKQorCis7OyBBTUQgem52ZXI0IFNjaGVkdWxpbmcKKzs7IE1vZGVsaW5nIGF1dG9tYXRvbnMg Zm9yIHplbiBkZWNvZGVycywgaW50ZWdlciBleGVjdXRpb24gcGlwZXMsCis7OyBBR1UgcGlwZXMs IGJyYW5jaCwgZmxvYXRpbmcgcG9pbnQgZXhlY3V0aW9uIGFuZCBmcCBzdG9yZSB1bml0cy4KKyhk ZWZpbmVfYXV0b21hdG9uICJ6bnZlcjQsIHpudmVyNF9pZXUsIHpudmVyNF9pZGl2LCB6bnZlcjRf ZmRpdiwgem52ZXI0X3NzZWRpdiwgem52ZXI0X2FndSwgem52ZXI0X2JydSwgem52ZXI0X2ZwdSwg em52ZXI0X2ZwX3N0b3JlIikKKworOzsgRGVjb2RlcnMgdW5pdCBoYXMgNCBkZWNvZGVycyBhbmQg YWxsIG9mIHRoZW0gY2FuIGRlY29kZSBmYXN0IHBhdGgKKzs7IGFuZCB2ZWN0b3IgdHlwZSBpbnN0 cnVjdGlvbnMuCisoZGVmaW5lX2NwdV91bml0ICJ6bnZlcjQtZGVjb2RlMCIgInpudmVyNCIpCiso ZGVmaW5lX2NwdV91bml0ICJ6bnZlcjQtZGVjb2RlMSIgInpudmVyNCIpCisoZGVmaW5lX2NwdV91 bml0ICJ6bnZlcjQtZGVjb2RlMiIgInpudmVyNCIpCisoZGVmaW5lX2NwdV91bml0ICJ6bnZlcjQt ZGVjb2RlMyIgInpudmVyNCIpCisKKzs7IEN1cnJlbnRseSBibG9ja2luZyBhbGwgZGVjb2RlcnMg Zm9yIHZlY3RvciBwYXRoIGluc3RydWN0aW9ucyBhcworOzsgdGhleSBhcmUgZGlzcGF0Y2hlZCBz ZXBhcmV0ZWx5IGFzIG1pY3JvY29kZSBzZXF1ZW5jZS4KKyhkZWZpbmVfcmVzZXJ2YXRpb24gInpu dmVyNC12ZWN0b3IiICJ6bnZlcjQtZGVjb2RlMCt6bnZlcjQtZGVjb2RlMSt6bnZlcjQtZGVjb2Rl Mit6bnZlcjQtZGVjb2RlMyIpCisKKzs7IERpcmVjdCBpbnN0cnVjdGlvbnMgY2FuIGJlIGlzc3Vl ZCB0byBhbnkgb2YgdGhlIGZvdXIgZGVjb2RlcnMuCisoZGVmaW5lX3Jlc2VydmF0aW9uICJ6bnZl cjQtZGlyZWN0IiAiem52ZXI0LWRlY29kZTB8em52ZXI0LWRlY29kZTF8em52ZXI0LWRlY29kZTJ8 em52ZXI0LWRlY29kZTMiKQorCis7OyBGaXggbWU6IE5lZWQgdG8gcmV2aXNpdCB0aGlzIGxhdGVy IHRvIHNpbXVsYXRlIGZhc3QgcGF0aCBkb3VibGUgYmVoYXZpb3IuCisoZGVmaW5lX3Jlc2VydmF0 aW9uICJ6bnZlcjQtZG91YmxlIiAiem52ZXI0LWRpcmVjdCIpCisKKworOzsgSW50ZWdlciB1bml0 IDQgQUxVIHBpcGVzLgorKGRlZmluZV9jcHVfdW5pdCAiem52ZXI0LWlldTAiICJ6bnZlcjRfaWV1 IikKKyhkZWZpbmVfY3B1X3VuaXQgInpudmVyNC1pZXUxIiAiem52ZXI0X2lldSIpCisoZGVmaW5l X2NwdV91bml0ICJ6bnZlcjQtaWV1MiIgInpudmVyNF9pZXUiKQorKGRlZmluZV9jcHVfdW5pdCAi em52ZXI0LWlldTMiICJ6bnZlcjRfaWV1IikKKyhkZWZpbmVfcmVzZXJ2YXRpb24gInpudmVyNC1p ZXUiICJ6bnZlcjQtaWV1MHx6bnZlcjQtaWV1MXx6bnZlcjQtaWV1Mnx6bnZlcjQtaWV1MyIpCisK Kzs7IDMgQUdVIHBpcGVzIGluIHpudmVyNAorKGRlZmluZV9jcHVfdW5pdCAiem52ZXI0LWFndTAi ICJ6bnZlcjRfYWd1IikKKyhkZWZpbmVfY3B1X3VuaXQgInpudmVyNC1hZ3UxIiAiem52ZXI0X2Fn dSIpCisoZGVmaW5lX2NwdV91bml0ICJ6bnZlcjQtYWd1MiIgInpudmVyNF9hZ3UiKQorKGRlZmlu ZV9yZXNlcnZhdGlvbiAiem52ZXI0LWFndS1yZXNlcnZlIiAiem52ZXI0LWFndTB8em52ZXI0LWFn dTF8em52ZXI0LWFndTIiKQorCis7OyBMb2FkIGlzIDQgY3ljbGVzLiBXZSBkbyBub3QgbW9kZWwg cmVzZXJ2YXRpb24gb2YgbG9hZCB1bml0LgorKGRlZmluZV9yZXNlcnZhdGlvbiAiem52ZXI0LWxv YWQiICJ6bnZlcjQtYWd1LXJlc2VydmUiKQorKGRlZmluZV9yZXNlcnZhdGlvbiAiem52ZXI0LXN0 b3JlIiAiem52ZXI0LWFndS1yZXNlcnZlIikKKworOzsgdmVjdG9ycGF0aCAobWljcm9jb2RlZCkg aW5zdHJ1Y3Rpb25zIGFyZSBzaW5nbGUgaXNzdWUgaW5zdHJ1Y3Rpb25zLgorOzsgU28sIHRoZXkg b2NjdXB5IGFsbCB0aGUgaW50ZWdlciB1bml0cy4KKyhkZWZpbmVfcmVzZXJ2YXRpb24gInpudmVy NC1pdmVjdG9yIiAiem52ZXI0LWlldTArem52ZXI0LWlldTEKKwkJCQkgICAgICArem52ZXI0LWll dTIrem52ZXI0LWlldTMKKwkJCQkgICAgICArem52ZXI0LWFndTArem52ZXI0LWFndTErem52ZXI0 LWFndTIiKQorCis7OyBGbG9hdGluZyBwb2ludCB1bml0IDQgRlAgcGlwZXMuCisoZGVmaW5lX2Nw dV91bml0ICJ6bnZlcjQtZnB1MCIgInpudmVyNF9mcHUiKQorKGRlZmluZV9jcHVfdW5pdCAiem52 ZXI0LWZwdTEiICJ6bnZlcjRfZnB1IikKKyhkZWZpbmVfY3B1X3VuaXQgInpudmVyNC1mcHUyIiAi em52ZXI0X2ZwdSIpCisoZGVmaW5lX2NwdV91bml0ICJ6bnZlcjQtZnB1MyIgInpudmVyNF9mcHUi KQorCisoZGVmaW5lX3Jlc2VydmF0aW9uICJ6bnZlcjQtZnB1IiAiem52ZXI0LWZwdTB8em52ZXI0 LWZwdTF8em52ZXI0LWZwdTJ8em52ZXI0LWZwdTMiKQorCisoZGVmaW5lX3Jlc2VydmF0aW9uICJ6 bnZlcjQtZnZlY3RvciIgInpudmVyNC1mcHUwK3pudmVyNC1mcHUxCisJCQkJICAgICAgK3pudmVy NC1mcHUyK3pudmVyNC1mcHUzCisJCQkJICAgICAgK3pudmVyNC1hZ3UwK3pudmVyNC1hZ3UxK3pu dmVyNC1hZ3UyIikKKworOzsgRElWIHVuaXRzCisoZGVmaW5lX2NwdV91bml0ICJ6bnZlcjQtaWRp diIgInpudmVyNF9pZGl2IikKKyhkZWZpbmVfY3B1X3VuaXQgInpudmVyNC1mZGl2IiAiem52ZXI0 X2ZkaXYiKQorKGRlZmluZV9jcHVfdW5pdCAiem52ZXI0LXNzZWRpdiIgInpudmVyNF9zc2VkaXYi KQorCis7OyB6bnZlcjQgaGFzIGEgc2VwYXJhdGUgYnJhbmNoIHVuaXQuCisoZGVmaW5lX2NwdV91 bml0ICJ6bnZlcjQtYnJ1IiAiem52ZXI0X2JydSIpCisKKzs7IFNlcGFyYXRlIGZwIHN0b3JlIGFu ZCBmcC10by1pbnQgc3RvcmUuIEFsdGhvdWdoIHRoZXJlIGFyZSAyIHN0b3JlIHBpcGVzLCB0aGUK Kzs7IHRocm91Z2hwdXQgaXMgbGltaXRlZCB0byBvbmx5IG9uZSBwZXIgY3ljbGUuCisoZGVmaW5l X2NwdV91bml0ICJ6bnZlcjQtZnAtc3RvcmUiICJ6bnZlcjRfZnBfc3RvcmUiKQorCis7OyBDYWxs IEluc3RydWN0aW9uCisoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInpudmVyNF9jYWxsIiAxCisJ CQkgKGFuZCAoZXFfYXR0ciAiY3B1IiAiem52ZXI0IikKKwkJCSAgICAgIChlcV9hdHRyICJ0eXBl IiAiY2FsbCxjYWxsdiIpKQorCQkJICJ6bnZlcjQtZG91YmxlLHpudmVyNC1pZXUwfHpudmVyNC1i cnUsem52ZXI0LXN0b3JlIikKKworOzsgUHVzaCBJbnN0cnVjdGlvbgorKGRlZmluZV9pbnNuX3Jl c2VydmF0aW9uICJ6bnZlcjRfcHVzaCIgMQorCQkJIChhbmQgKGVxX2F0dHIgImNwdSIgInpudmVy NCIpCisJCQkgICAgICAoYW5kIChlcV9hdHRyICJ0eXBlIiAicHVzaCIpCisJCQkJICAgKGVxX2F0 dHIgIm1lbW9yeSIgInN0b3JlIikpKQorCQkJICJ6bnZlcjQtZGlyZWN0LHpudmVyNC1zdG9yZSIp CisKKyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAiem52ZXI0X3B1c2hfbG9hZCIgNQorCQkJIChh bmQgKGVxX2F0dHIgImNwdSIgInpudmVyNCIpCisJCQkgICAgICAoYW5kIChlcV9hdHRyICJ0eXBl IiAicHVzaCIpCisJCQkJICAgKGVxX2F0dHIgIm1lbW9yeSIgImJvdGgiKSkpCisJCQkgInpudmVy NC1kaXJlY3Qsem52ZXI0LWxvYWQsem52ZXI0LXN0b3JlIikKKworOzsgUG9wIGluc3RydWN0aW9u CisoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInpudmVyNF9wb3AiIDEKKwkJCSAoYW5kIChlcV9h dHRyICJjcHUiICJ6bnZlcjQiKQorCQkJICAgICAgKGFuZCAoZXFfYXR0ciAidHlwZSIgInBvcCIp CisJCQkJICAgKGVxX2F0dHIgIm1lbW9yeSIgImxvYWQiKSkpCisJCQkgInpudmVyNC1kaXJlY3Qs em52ZXI0LWxvYWQiKQorCisoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInpudmVyNF9wb3BfbWVt IiA1CisJCQkgKGFuZCAoZXFfYXR0ciAiY3B1IiAiem52ZXI0IikKKwkJCSAgICAgIChhbmQgKGVx X2F0dHIgInR5cGUiICJwb3AiKQorCQkJCSAgIChlcV9hdHRyICJtZW1vcnkiICJib3RoIikpKQor CQkJICJ6bnZlcjQtZGlyZWN0LHpudmVyNC1sb2FkLHpudmVyNC1zdG9yZSIpCisKKzs7IExlYXZl CisoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInpudmVyNF9sZWF2ZSIgMQorCQkJIChhbmQgKGVx X2F0dHIgImNwdSIgInpudmVyNCIpCisJCQkgICAgICAoZXFfYXR0ciAidHlwZSIgImxlYXZlIikp CisJCQkgInpudmVyNC1kb3VibGUsem52ZXI0LWlldSx6bnZlcjQtc3RvcmUiKQorCis7OyBJbnRl Z2VyIEluc3RydWN0aW9ucyBvciBHZW5lcmFsIGluc3RydWN0aW9ucworOzsgTXVsdGlwbGljYXRp b25zCisoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInpudmVyNF9pbXVsIiAzCisJCQkoYW5kIChl cV9hdHRyICJjcHUiICJ6bnZlcjQiKQorCQkJICAgICAoYW5kIChlcV9hdHRyICJ0eXBlIiAiaW11 bCIpCisgICAgICAgICAgICAgICAgICAgICAgKGFuZCAoZXFfYXR0ciAibW9kZSIgIlFJLEhJLFNJ IikKKwkJCQkgICAgICAgICAgIChlcV9hdHRyICJtZW1vcnkiICJub25lIikpKSkKKwkJCSAiem52 ZXI0LWRpcmVjdCx6bnZlcjQtaWV1MSIpCisKKyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAiem52 ZXI0X2ltdWxfREkiIDQKKwkJCShhbmQgKGVxX2F0dHIgImNwdSIgInpudmVyNCIpCisJCQkgICAg IChhbmQgKGVxX2F0dHIgInR5cGUiICJpbXVsIikKKyAgICAgICAgICAgICAgICAgICAgICAoYW5k IChlcV9hdHRyICJtb2RlIiAiREkiKQorCQkJCSAgICAgICAgICAgKGVxX2F0dHIgIm1lbW9yeSIg Im5vbmUiKSkpKQorCQkJICJ6bnZlcjQtZGlyZWN0LHpudmVyNC1pZXUxIikKKworKGRlZmluZV9p bnNuX3Jlc2VydmF0aW9uICJ6bnZlcjRfaW11bF9tZW0iIDcKKwkJCShhbmQgKGVxX2F0dHIgImNw dSIgInpudmVyNCIpCisJCQkgICAgIChhbmQgKGVxX2F0dHIgInR5cGUiICJpbXVsIikKKyAgICAg ICAgICAgICAgICAgICAgICAoYW5kIChlcV9hdHRyICJtb2RlIiAiUUksSEksU0kiKQorCQkJCSAg ICAgICAgICAgKGVxX2F0dHIgIm1lbW9yeSIgIiFub25lIikpKSkKKwkJCSAiem52ZXI0LWRpcmVj dCx6bnZlcjQtbG9hZCx6bnZlcjQtaWV1MSIpCisKKyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAi em52ZXI0X2ltdWxfRElfbWVtIiA4CisJCQkoYW5kIChlcV9hdHRyICJjcHUiICJ6bnZlcjQiKQor CQkJICAgICAoYW5kIChlcV9hdHRyICJ0eXBlIiAiaW11bCIpCisgICAgICAgICAgICAgICAgICAg ICAgKGFuZCAoZXFfYXR0ciAibW9kZSIgIkRJIikKKwkJCQkgICAgICAgICAgIChlcV9hdHRyICJt ZW1vcnkiICIhbm9uZSIpKSkpCisJCQkgInpudmVyNC1kaXJlY3Qsem52ZXI0LWxvYWQsem52ZXI0 LWlldTEiKQorCis7OyBEaXZpc2lvbnMKKyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAiem52ZXI0 X2lkaXZfREkiIDE4CisJCQkgKGFuZCAoZXFfYXR0ciAiY3B1IiAiem52ZXI0IikKKwkJCSAgICAg IChhbmQgKGVxX2F0dHIgInR5cGUiICJpZGl2IikKKwkJCQkgICAoYW5kIChlcV9hdHRyICJtb2Rl IiAiREkiKQorCQkJCQkoZXFfYXR0ciAibWVtb3J5IiAibm9uZSIpKSkpCisJCQkgInpudmVyNC1k b3VibGUsem52ZXI0LWlkaXYqMTAiKQorCisoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInpudmVy NF9pZGl2X1NJIiAxMgorCQkJIChhbmQgKGVxX2F0dHIgImNwdSIgInpudmVyNCIpCisJCQkgICAg ICAoYW5kIChlcV9hdHRyICJ0eXBlIiAiaWRpdiIpCisJCQkJICAgKGFuZCAoZXFfYXR0ciAibW9k ZSIgIlNJIikKKwkJCQkJKGVxX2F0dHIgIm1lbW9yeSIgIm5vbmUiKSkpKQorCQkJICJ6bnZlcjQt ZG91YmxlLHpudmVyNC1pZGl2KjYiKQorCisoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInpudmVy NF9pZGl2X0hJIiAxMAorCQkJIChhbmQgKGVxX2F0dHIgImNwdSIgInpudmVyNCIpCisJCQkgICAg ICAoYW5kIChlcV9hdHRyICJ0eXBlIiAiaWRpdiIpCisJCQkJICAgKGFuZCAoZXFfYXR0ciAibW9k ZSIgIkhJIikKKwkJCQkJKGVxX2F0dHIgIm1lbW9yeSIgIm5vbmUiKSkpKQorCQkJICJ6bnZlcjQt ZG91YmxlLHpudmVyNC1pZGl2KjQiKQorCisoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInpudmVy NF9pZGl2X1FJIiA5CisJCQkgKGFuZCAoZXFfYXR0ciAiY3B1IiAiem52ZXI0IikKKwkJCSAgICAg IChhbmQgKGVxX2F0dHIgInR5cGUiICJpZGl2IikKKwkJCQkgICAoYW5kIChlcV9hdHRyICJtb2Rl IiAiUUkiKQorCQkJCQkoZXFfYXR0ciAibWVtb3J5IiAibm9uZSIpKSkpCisJCQkgInpudmVyNC1k b3VibGUsem52ZXI0LWlkaXYqNCIpCisKKyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAiem52ZXI0 X2lkaXZfRElfbWVtIiAyMgorCQkJIChhbmQgKGVxX2F0dHIgImNwdSIgInpudmVyNCIpCisJCQkg ICAgICAoYW5kIChlcV9hdHRyICJ0eXBlIiAiaWRpdiIpCisJCQkJICAgKGFuZCAoZXFfYXR0ciAi bW9kZSIgIkRJIikKKwkJCQkJKGVxX2F0dHIgIm1lbW9yeSIgIiFub25lIikpKSkKKwkJCSAiem52 ZXI0LWRvdWJsZSx6bnZlcjQtbG9hZCx6bnZlcjQtaWRpdioxMCIpCisKKyhkZWZpbmVfaW5zbl9y ZXNlcnZhdGlvbiAiem52ZXI0X2lkaXZfU0lfbWVtIiAxNgorCQkJIChhbmQgKGVxX2F0dHIgImNw dSIgInpudmVyNCIpCisJCQkgICAgICAoYW5kIChlcV9hdHRyICJ0eXBlIiAiaWRpdiIpCisJCQkJ ICAgKGFuZCAoZXFfYXR0ciAibW9kZSIgIlNJIikKKwkJCQkJKGVxX2F0dHIgIm1lbW9yeSIgIiFu b25lIikpKSkKKwkJCSAiem52ZXI0LWRvdWJsZSx6bnZlcjQtbG9hZCx6bnZlcjQtaWRpdio2IikK KworKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJ6bnZlcjRfaWRpdl9ISV9tZW0iIDE0CisJCQkg KGFuZCAoZXFfYXR0ciAiY3B1IiAiem52ZXI0IikKKwkJCSAgICAgIChhbmQgKGVxX2F0dHIgInR5 cGUiICJpZGl2IikKKwkJCQkgICAoYW5kIChlcV9hdHRyICJtb2RlIiAiSEkiKQorCQkJCQkoZXFf YXR0ciAibWVtb3J5IiAiIW5vbmUiKSkpKQorCQkJICJ6bnZlcjQtZG91YmxlLHpudmVyNC1sb2Fk LHpudmVyNC1pZGl2KjQiKQorCisoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInpudmVyNF9pZGl2 X1FJX21lbSIgMTMKKwkJCSAoYW5kIChlcV9hdHRyICJjcHUiICJ6bnZlcjQiKQorCQkJICAgICAg KGFuZCAoZXFfYXR0ciAidHlwZSIgImlkaXYiKQorCQkJCSAgIChhbmQgKGVxX2F0dHIgIm1vZGUi ICJRSSIpCisJCQkJCShlcV9hdHRyICJtZW1vcnkiICIhbm9uZSIpKSkpCisJCQkgInpudmVyNC1k b3VibGUsem52ZXI0LWxvYWQsem52ZXI0LWlkaXYqNCIpCisKKzs7IFNUUiBhbmQgSVNISUZUIGFy ZSBtaWNyb2NvZGVkLgorKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJ6bnZlcjRfc3RyIiA2CisJ CQkgKGFuZCAoZXFfYXR0ciAiY3B1IiAiem52ZXI0IikKKwkJCSAgICAgIChhbmQgKGVxX2F0dHIg InR5cGUiICJzdHIiKQorCQkJCSAgIChlcV9hdHRyICJtZW1vcnkiICJib3RoLHN0b3JlIikpKQor CQkJICJ6bnZlcjQtdmVjdG9yLHpudmVyNC1pdmVjdG9yIikKKworKGRlZmluZV9pbnNuX3Jlc2Vy dmF0aW9uICJ6bnZlcjRfaXNoaWZ0IiAzCisJCQkgKGFuZCAoZXFfYXR0ciAiY3B1IiAiem52ZXI0 IikKKwkJCSAgICAgIChhbmQgKGVxX2F0dHIgInR5cGUiICJpc2hpZnQiKQorCQkJCSAgIChlcV9h dHRyICJtZW1vcnkiICJib3RoLHN0b3JlIikpKQorCQkJICJ6bnZlcjQtdmVjdG9yLHpudmVyNC1p dmVjdG9yIikKKworOzsgTU9WIC0gaW50ZWdlciBtb3ZzCisoZGVmaW5lX2luc25fcmVzZXJ2YXRp b24gInpudmVyNF9pbW92eF9kb3VibGUiIDEKKwkJCSAoYW5kIChlcV9hdHRyICJjcHUiICJ6bnZl cjQiKQorCQkJICAgICAgKGFuZCAoZXFfYXR0ciAiem52ZXIxX2RlY29kZSIgImRvdWJsZSIpCisJ CQkJICAgKGFuZCAoZXFfYXR0ciAidHlwZSIgImltb3Z4IikKKwkJCQkJKGVxX2F0dHIgIm1lbW9y eSIgIm5vbmUiKSkpKQorCQkJICJ6bnZlcjQtZG91YmxlLHpudmVyNC1pZXUiKQorCisoZGVmaW5l X2luc25fcmVzZXJ2YXRpb24gInpudmVyNF9pbW92X2RpcmVjdCIgMQorCQkJIChhbmQgKGVxX2F0 dHIgImNwdSIgInpudmVyNCIpCisJCQkgICAgICAoYW5kIChlcV9hdHRyICJ0eXBlIiAiaW1vdiIp CisJCQkJICAgKGVxX2F0dHIgIm1lbW9yeSIgIm5vbmUiKSkpCisJCQkgInpudmVyNC1kaXJlY3Qs em52ZXI0LWlldSIpCisKKyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAiem52ZXI0X2ltb3ZfZG91 YmxlX3N0b3JlIiAxCisJCQkgKGFuZCAoZXFfYXR0ciAiY3B1IiAiem52ZXI0IikKKwkJCSAgICAg IChhbmQgKGVxX2F0dHIgInpudmVyMV9kZWNvZGUiICJkb3VibGUiKQorCQkJCSAgIChhbmQgKGVx X2F0dHIgInR5cGUiICJpbW92eCIpCisJCQkJCShlcV9hdHRyICJtZW1vcnkiICJzdG9yZSIpKSkp CisJCQkgInpudmVyNC1kb3VibGUsem52ZXI0LWlldSx6bnZlcjQtc3RvcmUiKQorCisoZGVmaW5l X2luc25fcmVzZXJ2YXRpb24gInpudmVyNF9pbW92X2RpcmVjdF9zdG9yZSIgMQorCQkJIChhbmQg KGVxX2F0dHIgImNwdSIgInpudmVyNCIpCisJCQkgICAgICAoYW5kIChlcV9hdHRyICJ0eXBlIiAi aW1vdiIpCisJCQkJICAgKGVxX2F0dHIgIm1lbW9yeSIgInN0b3JlIikpKQorCQkJCSAgICJ6bnZl cjQtZGlyZWN0LHpudmVyNC1pZXUsem52ZXI0LXN0b3JlIikKKworKGRlZmluZV9pbnNuX3Jlc2Vy dmF0aW9uICJ6bnZlcjRfaW1vdl9sb2FkX2RvdWJsZV9zdG9yZSIgNAorCQkJIChhbmQgKGVxX2F0 dHIgImNwdSIgInpudmVyNCIpCisJCQkgICAgICAoYW5kIChlcV9hdHRyICJ6bnZlcjFfZGVjb2Rl IiAiZG91YmxlIikKKwkJCQkgICAoYW5kIChlcV9hdHRyICJ0eXBlIiAiaW1vdngiKQorCQkJCQko ZXFfYXR0ciAibWVtb3J5IiAic3RvcmUiKSkpKQorCQkJICJ6bnZlcjQtZG91YmxlLHpudmVyNC1s b2FkLHpudmVyNC1pZXUsem52ZXI0LXN0b3JlIikKKworKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9u ICJ6bnZlcjRfaW1vdl9sb2FkX2RpcmVjdF9zdG9yZSIgNAorCQkJIChhbmQgKGVxX2F0dHIgImNw dSIgInpudmVyNCIpCisJCQkgICAgICAoYW5kIChlcV9hdHRyICJ0eXBlIiAiaW1vdiIpCisJCQkJ ICAgKGVxX2F0dHIgIm1lbW9yeSIgInN0b3JlIikpKQorCQkJCSAgICJ6bnZlcjQtZGlyZWN0LHpu dmVyNC1sb2FkLHpudmVyNC1pZXUsem52ZXI0LXN0b3JlIikKKworOzsgSU5URUdFUi9HRU5FUkFM IEluc3RydWN0aW9ucworKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJ6bnZlcjRfaW5zbiIgMQor CQkJIChhbmQgKGVxX2F0dHIgImNwdSIgInpudmVyNCIpCisJCQkgICAgICAoYW5kIChlcV9hdHRy ICJ0eXBlIiAiYWx1LGFsdTEsbmVnbm90LHJvdGF0ZTEsaXNoaWZ0MSx0ZXN0LGluY2RlYyxpY21w IikKKwkJCQkgICAoZXFfYXR0ciAibWVtb3J5IiAibm9uZSx1bmtub3duIikpKQorCQkJICJ6bnZl cjQtZGlyZWN0LHpudmVyNC1pZXUiKQorCisoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInpudmVy NF9pbnNuX2xvYWQiIDUKKwkJCSAoYW5kIChlcV9hdHRyICJjcHUiICJ6bnZlcjQiKQorCQkJICAg ICAgKGFuZCAoZXFfYXR0ciAidHlwZSIgImFsdSxhbHUxLG5lZ25vdCxyb3RhdGUxLGlzaGlmdDEs dGVzdCxpbmNkZWMsaWNtcCIpCisJCQkJICAgKGVxX2F0dHIgIm1lbW9yeSIgImxvYWQiKSkpCisJ CQkgInpudmVyNC1kaXJlY3Qsem52ZXI0LWxvYWQsem52ZXI0LWlldSIpCisKKyhkZWZpbmVfaW5z bl9yZXNlcnZhdGlvbiAiem52ZXI0X2luc24yIiAxCisJCQkgKGFuZCAoZXFfYXR0ciAiY3B1IiAi em52ZXI0IikKKwkJCSAgICAgIChhbmQgKGVxX2F0dHIgInR5cGUiICJpY21vdixzZXRjYyIpCisJ CQkJICAgKGVxX2F0dHIgIm1lbW9yeSIgIm5vbmUsdW5rbm93biIpKSkKKwkJCSAiem52ZXI0LWRp cmVjdCx6bnZlcjQtaWV1MHx6bnZlcjQtaWV1MyIpCisKKyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlv biAiem52ZXI0X2luc24yX2xvYWQiIDUKKwkJCSAoYW5kIChlcV9hdHRyICJjcHUiICJ6bnZlcjQi KQorCQkJICAgICAgKGFuZCAoZXFfYXR0ciAidHlwZSIgImljbW92LHNldGNjIikKKwkJCQkgICAo ZXFfYXR0ciAibWVtb3J5IiAibG9hZCIpKSkKKwkJCSAiem52ZXI0LWRpcmVjdCx6bnZlcjQtbG9h ZCx6bnZlcjQtaWV1MHx6bnZlcjQtaWV1MyIpCisKKyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAi em52ZXI0X3JvdGF0ZSIgMQorCQkJIChhbmQgKGVxX2F0dHIgImNwdSIgInpudmVyNCIpCisJCQkg ICAgICAoYW5kIChlcV9hdHRyICJ0eXBlIiAicm90YXRlIikKKwkJCQkgICAoZXFfYXR0ciAibWVt b3J5IiAibm9uZSx1bmtub3duIikpKQorCQkJICJ6bnZlcjQtZGlyZWN0LHpudmVyNC1pZXUxfHpu dmVyNC1pZXUyIikKKworKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJ6bnZlcjRfcm90YXRlX2xv YWQiIDUKKwkJCSAoYW5kIChlcV9hdHRyICJjcHUiICJ6bnZlcjQiKQorCQkJICAgICAgKGFuZCAo ZXFfYXR0ciAidHlwZSIgInJvdGF0ZSIpCisJCQkJICAgKGVxX2F0dHIgIm1lbW9yeSIgImxvYWQi KSkpCisJCQkgInpudmVyNC1kaXJlY3Qsem52ZXI0LWxvYWQsem52ZXI0LWlldTF8em52ZXI0LWll dTIiKQorCisoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInpudmVyNF9pbnNuX3N0b3JlIiAxCisJ CQkgKGFuZCAoZXFfYXR0ciAiY3B1IiAiem52ZXI0IikKKwkJCSAgICAgIChhbmQgKGVxX2F0dHIg InR5cGUiICJhbHUsYWx1MSxuZWdub3Qscm90YXRlMSxpc2hpZnQxLHRlc3QsaW5jZGVjLGljbXAi KQorCQkJCSAgIChlcV9hdHRyICJtZW1vcnkiICJsb2FkIikpKQorCQkJICJ6bnZlcjQtZGlyZWN0 LHpudmVyNC1pZXUsem52ZXI0LXN0b3JlIikKKworKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJ6 bnZlcjRfaW5zbjJfc3RvcmUiIDEKKwkJCSAoYW5kIChlcV9hdHRyICJjcHUiICJ6bnZlcjQiKQor CQkJICAgICAgKGFuZCAoZXFfYXR0ciAidHlwZSIgImljbW92LHNldGNjIikKKwkJCQkgICAoZXFf YXR0ciAibWVtb3J5IiAibG9hZCIpKSkKKwkJCSAiem52ZXI0LWRpcmVjdCx6bnZlcjQtaWV1MHx6 bnZlcjQtaWV1Myx6bnZlcjQtc3RvcmUiKQorCisoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInpu dmVyNF9yb3RhdGVfc3RvcmUiIDEKKwkJCSAoYW5kIChlcV9hdHRyICJjcHUiICJ6bnZlcjQiKQor CQkJICAgICAgKGFuZCAoZXFfYXR0ciAidHlwZSIgInJvdGF0ZSIpCisJCQkJICAgKGVxX2F0dHIg Im1lbW9yeSIgImxvYWQiKSkpCisJCQkgInpudmVyNC1kaXJlY3Qsem52ZXI0LWlldTF8em52ZXI0 LWlldTIsem52ZXI0LXN0b3JlIikKKworOzsgT3RoZXIgdmVjdG9yIHR5cGUKKyhkZWZpbmVfaW5z bl9yZXNlcnZhdGlvbiAiem52ZXI0X2lldV92ZWN0b3IiIDUKKwkJCSAoYW5kIChlcV9hdHRyICJj cHUiICJ6bnZlcjQiKQorCQkJICAgICAgKGVxX2F0dHIgInR5cGUiICJvdGhlcixtdWx0aSIpKQor CQkJICJ6bnZlcjQtdmVjdG9yLHpudmVyNC1pdmVjdG9yIikKKworOzsgYWx1MSBpbnN0cnVjdGlv bnMKKyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAiem52ZXI0X2FsdTFfdmVjdG9yIiAzCisJCQkg KGFuZCAoZXFfYXR0ciAiY3B1IiAiem52ZXI0IikKKwkJCSAgICAgIChhbmQgKGVxX2F0dHIgInpu dmVyMV9kZWNvZGUiICJ2ZWN0b3IiKQorCQkJCSAgIChhbmQgKGVxX2F0dHIgInR5cGUiICJhbHUx IikKKwkJCQkJKGVxX2F0dHIgIm1lbW9yeSIgIm5vbmUsdW5rbm93biIpKSkpCisJCQkgInpudmVy NC12ZWN0b3Isem52ZXI0LWl2ZWN0b3IiKQorCisoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInpu dmVyNF9hbHUxX2RpcmVjdCIgMQorCQkJIChhbmQgKGVxX2F0dHIgImNwdSIgInpudmVyNCIpCisJ CQkgICAgICAoYW5kIChlcV9hdHRyICJ6bnZlcjFfZGVjb2RlIiAiZGlyZWN0IikKKwkJCQkgICAo YW5kIChlcV9hdHRyICJ0eXBlIiAiYWx1MSIpCisJCQkJCShlcV9hdHRyICJtZW1vcnkiICJub25l LHVua25vd24iKSkpKQorCQkJICJ6bnZlcjQtZGlyZWN0LHpudmVyNC1pZXUiKQorCis7OyBCcmFu Y2hlcworKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJ6bnZlcjRfYnJhbmNoIiAxCisJCQkgKGFu ZCAoZXFfYXR0ciAiY3B1IiAiem52ZXI0IikKKwkJCSAgICAgIChhbmQgKGVxX2F0dHIgInR5cGUi ICJpYnIiKQorCQkJCQkoZXFfYXR0ciAibWVtb3J5IiAibm9uZSIpKSkKKwkJCSAgInpudmVyNC1k aXJlY3Qsem52ZXI0LWlldTB8em52ZXI0LWJydSIpCisKKyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlv biAiem52ZXI0X2JyYW5jaF9tZW0iIDUKKwkJCSAoYW5kIChlcV9hdHRyICJjcHUiICJ6bnZlcjQi KQorCQkJICAgICAgKGFuZCAoZXFfYXR0ciAidHlwZSIgImliciIpCisJCQkJCShlcV9hdHRyICJt ZW1vcnkiICJsb2FkIikpKQorCQkJICAiem52ZXI0LXZlY3Rvcix6bnZlcjQtaXZlY3RvciIpCisK Kzs7IExFQSBpbnN0cnVjdGlvbiB3aXRoIHNpbXBsZSBhZGRyZXNzaW5nCisoZGVmaW5lX2luc25f cmVzZXJ2YXRpb24gInpudmVyNF9sZWEiIDEKKwkJCSAoYW5kIChlcV9hdHRyICJjcHUiICJ6bnZl cjQiKQorCQkJICAgICAgKGVxX2F0dHIgInR5cGUiICJsZWEiKSkKKwkJCSAiem52ZXI0LWRpcmVj dCx6bnZlcjQtaWV1IikKKworOzsgRmxvYXRpbmcgUG9pbnQKKzs7IEZQIG1vdnMKKyhkZWZpbmVf aW5zbl9yZXNlcnZhdGlvbiAiem52ZXI0X2ZwX2Ntb3YiIDYKKwkJCSAoYW5kIChlcV9hdHRyICJj cHUiICJ6bnZlcjQiKQorCQkJICAgICAgKGVxX2F0dHIgInR5cGUiICJmY21vdiIpKQorCQkJICJ6 bnZlcjQtdmVjdG9yLHpudmVyNC1mdmVjdG9yIikKKworKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9u ICJ6bnZlcjRfZnBfbW92X2RpcmVjdCIgMQorCQkJIChhbmQgKGVxX2F0dHIgImNwdSIgInpudmVy NCIpCisJCQkgICAgICAoZXFfYXR0ciAidHlwZSIgImZtb3YiKSkKKwkJCSAiem52ZXI0LWRpcmVj dCx6bnZlcjQtZnB1MSIpCisKKyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAiem52ZXI0X2ZwX21v dl9kaXJlY3RfbG9hZCIgOAorCQkJIChhbmQgKGVxX2F0dHIgImNwdSIgInpudmVyNCIpCisJCQkg ICAgICAoYW5kIChlcV9hdHRyICJ6bnZlcjFfZGVjb2RlIiAiZGlyZWN0IikKKwkJCQkgICAoYW5k IChlcV9hdHRyICJ0eXBlIiAiZm1vdiIpCisJCQkJCShlcV9hdHRyICJtZW1vcnkiICJsb2FkIikp KSkKKwkJCSAiem52ZXI0LWRpcmVjdCx6bnZlcjQtbG9hZCx6bnZlcjQtZnB1MSIpCisKKyhkZWZp bmVfaW5zbl9yZXNlcnZhdGlvbiAiem52ZXI0X2ZwX21vdl9kaXJlY3Rfc3RvcmUiIDUKKwkJCSAo YW5kIChlcV9hdHRyICJjcHUiICJ6bnZlcjQiKQorCQkJICAgICAgKGFuZCAoZXFfYXR0ciAiem52 ZXIxX2RlY29kZSIgImRpcmVjdCIpCisJCQkJICAgKGFuZCAoZXFfYXR0ciAidHlwZSIgImZtb3Yi KQorCQkJCQkoZXFfYXR0ciAibWVtb3J5IiAic3RvcmUiKSkpKQorCQkJICJ6bnZlcjQtZGlyZWN0 LHpudmVyNC1mcHUxLHpudmVyNC1mcC1zdG9yZSIpCisKKyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlv biAiem52ZXI0X2ZwX21vdl9kb3VibGUiIDUKKwkJCSAoYW5kIChlcV9hdHRyICJjcHUiICJ6bnZl cjQiKQorCQkJICAgICAgKGFuZCAoZXFfYXR0ciAiem52ZXIxX2RlY29kZSIgImRvdWJsZSIpCisJ CQkJICAgKGFuZCAoZXFfYXR0ciAidHlwZSIgImZtb3YiKQorCQkJCQkoZXFfYXR0ciAibWVtb3J5 IiAibm9uZSIpKSkpCisJCQkgInpudmVyNC1kb3VibGUsem52ZXI0LWZwdTEsem52ZXI0LWZwLXN0 b3JlIikKKworKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJ6bnZlcjRfZnBfbW92X2RvdWJsZV9s b2FkIiAxMgorCQkJIChhbmQgKGVxX2F0dHIgImNwdSIgInpudmVyNCIpCisJCQkgICAgICAoYW5k IChlcV9hdHRyICJ6bnZlcjFfZGVjb2RlIiAiZG91YmxlIikKKwkJCQkgICAoYW5kIChlcV9hdHRy ICJ0eXBlIiAiZm1vdiIpCisJCQkJCShlcV9hdHRyICJtZW1vcnkiICJsb2FkIikpKSkKKwkJCSAi em52ZXI0LWRvdWJsZSx6bnZlcjQtbG9hZCx6bnZlcjQtZnB1MSx6bnZlcjQtZnAtc3RvcmUiKQor Cis7OyBGU1FSVAorKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJ6bnZlcjRfZnNxcnQiIDIyCisJ CQkgKGFuZCAoZXFfYXR0ciAiY3B1IiAiem52ZXI0IikKKwkJCSAgICAgIChhbmQgKGVxX2F0dHIg InR5cGUiICJmcHNwYyIpCisJCQkJICAgKGFuZCAoZXFfYXR0ciAibW9kZSIgIlhGIikKKwkJCQkJ KGVxX2F0dHIgIm1lbW9yeSIgIm5vbmUiKSkpKQorCQkJICJ6bnZlcjQtZGlyZWN0LHpudmVyNC1m ZGl2KjIwIikKKworOzsgRlBTUEMgaW5zdHJ1Y3Rpb25zCisoZGVmaW5lX2luc25fcmVzZXJ2YXRp b24gInpudmVyNF9mcF9zcGMiIDYKKwkJCSAoYW5kIChlcV9hdHRyICJjcHUiICJ6bnZlcjQiKQor CQkJICAgICAgKGFuZCAoZXFfYXR0ciAidHlwZSIgImZwc3BjIikKKwkJCQkgICAoZXFfYXR0ciAi bWVtb3J5IiAibm9uZSIpKSkKKwkJCSAiem52ZXI0LXZlY3Rvcix6bnZlcjQtZnZlY3RvciIpCisK KyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAiem52ZXI0X2ZwX2luc25fdmVjdG9yIiA2CisJCQkg KGFuZCAoZXFfYXR0ciAiY3B1IiAiem52ZXI0IikKKwkJCSAgICAgIChhbmQgKGVxX2F0dHIgInpu dmVyMV9kZWNvZGUiICJ2ZWN0b3IiKQorCQkJCSAgIChlcV9hdHRyICJ0eXBlIiAibW14Y3Z0LHNz ZWxvZzEsc3NlbW92IikpKQorCQkJICJ6bnZlcjQtdmVjdG9yLHpudmVyNC1mdmVjdG9yIikKKwor OzsgRkFCUywgRkNIUworKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJ6bnZlcjRfZnBfZnNnbiIg MQorCQkJIChhbmQgKGVxX2F0dHIgImNwdSIgInpudmVyNCIpCisJCQkgICAgICAoZXFfYXR0ciAi dHlwZSIgImZzZ24iKSkKKwkJCSAiem52ZXI0LWRpcmVjdCx6bnZlcjQtZnB1MHx6bnZlcjQtZnB1 MSIpCisKKzs7IEZDTVAKKyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAiem52ZXI0X2ZwX2ZjbXAi IDMKKwkJCSAoYW5kIChlcV9hdHRyICJjcHUiICJ6bnZlcjQiKQorCQkJICAgICAgKGFuZCAoZXFf YXR0ciAidHlwZSIgImZjbXAiKQorCQkJCSAgIChlcV9hdHRyICJtZW1vcnkiICJub25lIikpKQor CQkJICJ6bnZlcjQtZGlyZWN0LHpudmVyNC1mcHUxIikKKworKGRlZmluZV9pbnNuX3Jlc2VydmF0 aW9uICJ6bnZlcjRfZnBfZmNtcF9kb3VibGUiIDQKKwkJCSAoYW5kIChlcV9hdHRyICJjcHUiICJ6 bnZlcjQiKQorCQkJICAgICAgKGFuZCAoZXFfYXR0ciAidHlwZSIgImZjbXAiKQorCQkJCSAgIChh bmQgKGVxX2F0dHIgInpudmVyMV9kZWNvZGUiICJkb3VibGUiKQorCQkJCQkoZXFfYXR0ciAibWVt b3J5IiAibm9uZSIpKSkpCisJCQkgInpudmVyNC1kb3VibGUsem52ZXI0LWZwdTEsem52ZXI0LWZw dTIiKQorCis7OyBGQURELCBGU1VCLCBGTVVMCisoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInpu dmVyNF9mcF9vcF9tdWwiIDYKKwkJCSAoYW5kIChlcV9hdHRyICJjcHUiICJ6bnZlcjQiKQorCQkJ ICAgICAgKGFuZCAoZXFfYXR0ciAidHlwZSIgImZvcCxmbXVsIikKKwkJCQkgICAoZXFfYXR0ciAi bWVtb3J5IiAibm9uZSIpKSkKKwkJCSAiem52ZXI0LWRpcmVjdCx6bnZlcjQtZnB1MCIpCisKKyhk ZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAiem52ZXI0X2ZwX29wX211bF9sb2FkIiAxMworCQkJIChh bmQgKGVxX2F0dHIgImNwdSIgInpudmVyNCIpCisJCQkgICAgICAoYW5kIChlcV9hdHRyICJ0eXBl IiAiZm9wLGZtdWwiKQorCQkJCSAgIChlcV9hdHRyICJtZW1vcnkiICJsb2FkIikpKQorCQkJICJ6 bnZlcjQtZGlyZWN0LHpudmVyNC1sb2FkLHpudmVyNC1mcHUwIikKKworOzsgRkRJVgorKGRlZmlu ZV9pbnNuX3Jlc2VydmF0aW9uICJ6bnZlcjRfZnBfZGl2IiAxNQorCQkJIChhbmQgKGVxX2F0dHIg ImNwdSIgInpudmVyNCIpCisJCQkgICAgICAoYW5kIChlcV9hdHRyICJ0eXBlIiAiZmRpdiIpCisJ CQkJICAgKGVxX2F0dHIgIm1lbW9yeSIgIm5vbmUiKSkpCisJCQkgInpudmVyNC1kaXJlY3Qsem52 ZXI0LWZkaXYqMTUiKQorCisoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInpudmVyNF9mcF9kaXZf bG9hZCIgMjIKKwkJCSAoYW5kIChlcV9hdHRyICJjcHUiICJ6bnZlcjQiKQorCQkJICAgICAgKGFu ZCAoZXFfYXR0ciAidHlwZSIgImZkaXYiKQorCQkJCSAgIChlcV9hdHRyICJtZW1vcnkiICJsb2Fk IikpKQorCQkJICJ6bnZlcjQtZGlyZWN0LHpudmVyNC1sb2FkLHpudmVyNC1mZGl2KjE1IikKKwor KGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJ6bnZlcjRfZnBfaWRpdl9sb2FkIiAyNgorCQkJIChh bmQgKGVxX2F0dHIgImNwdSIgInpudmVyNCIpCisJCQkgICAgICAoYW5kIChlcV9hdHRyICJ0eXBl IiAiZmRpdiIpCisJCQkJICAgKGFuZCAoZXFfYXR0ciAiZnBfaW50X3NyYyIgInRydWUiKQorCQkJ CQkoZXFfYXR0ciAibWVtb3J5IiAibG9hZCIpKSkpCisJCQkgInpudmVyNC1kb3VibGUsem52ZXI0 LWxvYWQsem52ZXI0LWZkaXYqMTkiKQorCis7OyBNTVgsIFNTRSwgU1NFbi5uIGluc3RydWN0aW9u cworKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJ6bnZlcjRfZnBfbW14CSIgMQorCQkJIChhbmQg KGVxX2F0dHIgImNwdSIgInpudmVyNCIpCisJCQkgICAgICAoZXFfYXR0ciAidHlwZSIgIm1teCIp KQorCQkJICJ6bnZlcjQtZGlyZWN0LHpudmVyNC1mcHUxfHpudmVyNC1mcHUyIikKKworKGRlZmlu ZV9pbnNuX3Jlc2VydmF0aW9uICJ6bnZlcjRfbW14X2FkZF9jbXAiIDEKKwkJCSAoYW5kIChlcV9h dHRyICJjcHUiICJ6bnZlcjQiKQorCQkJICAgICAgKGFuZCAoZXFfYXR0ciAidHlwZSIgIm1teGFk ZCxtbXhjbXAiKQorCQkJCSAgIChlcV9hdHRyICJtZW1vcnkiICJub25lIikpKQorCQkJICJ6bnZl cjQtZGlyZWN0LHpudmVyNC1mcHUiKQorCisoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInpudmVy NF9tbXhfYWRkX2NtcF9sb2FkIiA4CisJCQkgKGFuZCAoZXFfYXR0ciAiY3B1IiAiem52ZXI0IikK KwkJCSAgICAgIChhbmQgKGVxX2F0dHIgInR5cGUiICJtbXhhZGQsbW14Y21wIikKKwkJCQkgICAo ZXFfYXR0ciAibWVtb3J5IiAibG9hZCIpKSkKKwkJCSAiem52ZXI0LWRpcmVjdCx6bnZlcjQtbG9h ZCx6bnZlcjQtZnB1IikKKworKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJ6bnZlcjRfbW14X2lu c24iIDEKKwkJCSAoYW5kIChlcV9hdHRyICJjcHUiICJ6bnZlcjQiKQorCQkJICAgICAgKGFuZCAo ZXFfYXR0ciAidHlwZSIgIm1teGN2dCxzc2VzaHVmLHNzZXNodWYxLG1teHNoZnQiKQorCQkJCSAg IChlcV9hdHRyICJtZW1vcnkiICJub25lIikpKQorCQkJICJ6bnZlcjQtZGlyZWN0LHpudmVyNC1m cHUxfHpudmVyNC1mcHUyIikKKworKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJ6bnZlcjRfbW14 X2luc25fbG9hZCIgOAorCQkJIChhbmQgKGVxX2F0dHIgImNwdSIgInpudmVyNCIpCisJCQkgICAg ICAoYW5kIChlcV9hdHRyICJ0eXBlIiAibW14Y3Z0LHNzZXNodWYsc3Nlc2h1ZjEsbW14c2hmdCIp CisJCQkJICAgKGVxX2F0dHIgIm1lbW9yeSIgImxvYWQiKSkpCisJCQkgInpudmVyNC1kaXJlY3Qs em52ZXI0LWxvYWQsem52ZXI0LWZwdTF8em52ZXI0LWZwdTIiKQorCisoZGVmaW5lX2luc25fcmVz ZXJ2YXRpb24gInpudmVyNF9tbXhfbW92IiAxCisJCQkgKGFuZCAoZXFfYXR0ciAiY3B1IiAiem52 ZXI0IikKKwkJCSAgICAgIChhbmQgKGVxX2F0dHIgInR5cGUiICIsbW14bW92IikKKwkJCQkgICAo ZXFfYXR0ciAibWVtb3J5IiAibm9uZSIpKSkKKwkJCSAiem52ZXI0LWRpcmVjdCx6bnZlcjQtZnAt c3RvcmUiKQorCisoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInpudmVyNF9tbXhfbW92X2xvYWQi IDgKKwkJCSAoYW5kIChlcV9hdHRyICJjcHUiICJ6bnZlcjQiKQorCQkJICAgICAgKGFuZCAoZXFf YXR0ciAidHlwZSIgIm1teG1vdiIpCisJCQkJICAgKGVxX2F0dHIgIm1lbW9yeSIgImxvYWQiKSkp CisJCQkgInpudmVyNC1kaXJlY3Qsem52ZXI0LWxvYWQsem52ZXI0LWZwLXN0b3JlIikKKworKGRl ZmluZV9pbnNuX3Jlc2VydmF0aW9uICJ6bnZlcjRfbW14X211bCIgMworCQkJIChhbmQgKGVxX2F0 dHIgImNwdSIgInpudmVyNCIpCisJCQkgICAgICAoYW5kIChlcV9hdHRyICJ0eXBlIiAibW14bXVs IikKKwkJCQkgICAoZXFfYXR0ciAibWVtb3J5IiAibm9uZSIpKSkKKwkJCSAgInpudmVyNC1kaXJl Y3Qsem52ZXI0LWZwdTB8em52ZXI0LWZwdTMiKQorCisoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24g InpudmVyNF9tbXhfbXVsX2xvYWQiIDEwCisJCQkgKGFuZCAoZXFfYXR0ciAiY3B1IiAiem52ZXI0 IikKKwkJCSAgICAgIChhbmQgKGVxX2F0dHIgInR5cGUiICJtbXhtdWwiKQorCQkJCSAgIChlcV9h dHRyICJtZW1vcnkiICJsb2FkIikpKQorCQkJICAiem52ZXI0LWRpcmVjdCx6bnZlcjQtbG9hZCx6 bnZlcjQtZnB1MHx6bnZlcjQtZnB1MyIpCisKKzs7IEFWWCBpbnN0cnVjdGlvbnMKKyhkZWZpbmVf aW5zbl9yZXNlcnZhdGlvbiAiem52ZXI0X3NzZV9sb2ciIDEKKwkJCSAoYW5kIChlcV9hdHRyICJj cHUiICJ6bnZlcjQiKQorCQkJICAgICAgKGFuZCAoZXFfYXR0ciAidHlwZSIgInNzZWxvZyxzc2Vs b2cxIikKKwkJCQkgICAoYW5kIChlcV9hdHRyICJtb2RlIiAiVjRTRixWOFNGLFYyREYsVjRERiIp CisJCQkJICAgIChlcV9hdHRyICJtZW1vcnkiICJub25lIikpKSkKKwkJCSAiem52ZXI0LWRpcmVj dCx6bnZlcjQtZnB1IikKKworKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJ6bnZlcjRfc3NlX2xv Z19ldmV4IiAxCisJCQkgKGFuZCAoZXFfYXR0ciAiY3B1IiAiem52ZXI0IikKKwkJCSAgICAgIChh bmQgKGVxX2F0dHIgInR5cGUiICJzc2Vsb2csc3NlbG9nMSIpCisJCQkJICAgKGFuZCAoZXFfYXR0 ciAibW9kZSIgIlYxNlNGLFY4REYiKQorCQkJCSAgICAoZXFfYXR0ciAibWVtb3J5IiAibm9uZSIp KSkpCisJCQkgInpudmVyNC1kaXJlY3Qsem52ZXI0LWZwdTArem52ZXI0LWZwdTF8em52ZXI0LWZw dTIrem52ZXI0LWZwdTMiKQorCisoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInpudmVyNF9zc2Vf bG9nX2xvYWQiIDgKKwkJCSAoYW5kIChlcV9hdHRyICJjcHUiICJ6bnZlcjQiKQorCQkJICAgICAg KGFuZCAoZXFfYXR0ciAidHlwZSIgInNzZWxvZyxzc2Vsb2cxIikKKwkJCQkgICAoYW5kIChlcV9h dHRyICJtb2RlIiAiVjRTRixWOFNGLFYyREYsVjRERiIpCisJCQkJICAgIChlcV9hdHRyICJtZW1v cnkiICJsb2FkIikpKSkKKwkJCSAiem52ZXI0LWRpcmVjdCx6bnZlcjQtbG9hZCx6bnZlcjQtZnB1 IikKKworKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJ6bnZlcjRfc3NlX2xvZ19ldmV4X2xvYWQi IDgKKwkJCSAoYW5kIChlcV9hdHRyICJjcHUiICJ6bnZlcjQiKQorCQkJICAgICAgKGFuZCAoZXFf YXR0ciAidHlwZSIgInNzZWxvZyxzc2Vsb2cxIikKKwkJCQkgICAoYW5kIChlcV9hdHRyICJtb2Rl IiAiVjE2U0YsVjhERiIpCisJCQkJICAgIChlcV9hdHRyICJtZW1vcnkiICJsb2FkIikpKSkKKwkJ CSAiem52ZXI0LWRpcmVjdCx6bnZlcjQtbG9hZCx6bnZlcjQtZnB1MCt6bnZlcjQtZnB1MXx6bnZl cjQtZnB1Mit6bnZlcjQtZnB1MyIpCisKKyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAiem52ZXI0 X3NzZV9pbG9nIiAxCisJCQkgKGFuZCAoZXFfYXR0ciAiY3B1IiAiem52ZXI0IikKKwkJCSAgICAg IChhbmQgKGVxX2F0dHIgInR5cGUiICJzc2Vsb2csc3NlbG9nMSIpCisJCQkJICAgKGFuZCAoZXFf YXR0ciAibW9kZSIgIk9JIikKKwkJCQkgICAgKGVxX2F0dHIgIm1lbW9yeSIgIm5vbmUiKSkpKQor CQkJICJ6bnZlcjQtZGlyZWN0LHpudmVyNC1mcHUwK3pudmVyNC1mcHUxfHpudmVyNC1mcHUyK3pu dmVyNC1mcHUzIikKKworKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJ6bnZlcjRfc3NlX2lsb2df ZXZleCIgMQorCQkJIChhbmQgKGVxX2F0dHIgImNwdSIgInpudmVyNCIpCisJCQkgICAgICAoYW5k IChlcV9hdHRyICJ0eXBlIiAic3NlbG9nLHNzZWxvZzEiKQorCQkJCSAgIChhbmQgKGVxX2F0dHIg Im1vZGUiICJUSSIpCisJCQkJICAgIChlcV9hdHRyICJtZW1vcnkiICJub25lIikpKSkKKwkJCSAi em52ZXI0LWRpcmVjdCx6bnZlcjQtZnB1MCt6bnZlcjQtZnB1MSt6bnZlcjQtZnB1Mit6bnZlcjQt ZnB1MyIpCisKKyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAiem52ZXI0X3NzZV9pbG9nX2xvYWQi IDgKKwkJCSAoYW5kIChlcV9hdHRyICJjcHUiICJ6bnZlcjQiKQorCQkJICAgICAgKGFuZCAoZXFf YXR0ciAidHlwZSIgInNzZWxvZyxzc2Vsb2cxIikKKwkJCQkgICAoYW5kIChlcV9hdHRyICJtb2Rl IiAiT0kiKQorCQkJCSAgICAoZXFfYXR0ciAibWVtb3J5IiAibG9hZCIpKSkpCisJCQkgInpudmVy NC1kaXJlY3Qsem52ZXI0LWxvYWQsem52ZXI0LWZwdTArem52ZXI0LWZwdTF8em52ZXI0LWZwdTIr em52ZXI0LWZwdTMiKQorCisoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInpudmVyNF9zc2VfaWxv Z19ldmV4X2xvYWQiIDgKKwkJCSAoYW5kIChlcV9hdHRyICJjcHUiICJ6bnZlcjQiKQorCQkJICAg ICAgKGFuZCAoZXFfYXR0ciAidHlwZSIgInNzZWxvZyxzc2Vsb2cxIikKKwkJCQkgICAoYW5kIChl cV9hdHRyICJtb2RlIiAiVEkiKQorCQkJCSAgICAoZXFfYXR0ciAibWVtb3J5IiAibG9hZCIpKSkp CisJCQkgInpudmVyNC1kaXJlY3Qsem52ZXI0LWxvYWQsem52ZXI0LWZwdTArem52ZXI0LWZwdTEr em52ZXI0LWZwdTIrem52ZXI0LWZwdTMiKQorCisoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInpu dmVyNF9zc2VfY29taSIgMQorCQkJIChhbmQgKGVxX2F0dHIgImNwdSIgInpudmVyNCIpCisJCQkg ICAgICAoYW5kIChlcV9hdHRyICJ0eXBlIiAic3NlY29taSIpCisJCQkJICAgKGVxX2F0dHIgIm1l bW9yeSIgIm5vbmUiKSkpCisJCQkgInpudmVyNC1kb3VibGUsem52ZXI0LWZwdTJ8em52ZXI0LWZw dTMsem52ZXI0LWZwLXN0b3JlIikKKworKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJ6bnZlcjRf c3NlX2NvbWlfbG9hZCIgOAorCQkJIChhbmQgKGVxX2F0dHIgImNwdSIgInpudmVyNCIpCisJCQkg ICAgICAoYW5kIChlcV9hdHRyICJ0eXBlIiAic3NlY29taSIpCisJCQkJICAgKGVxX2F0dHIgIm1l bW9yeSIgImxvYWQiKSkpCisJCQkgInpudmVyNC1kb3VibGUsem52ZXI0LWxvYWQsem52ZXI0LWZw dTJ8em52ZXI0LWZwdTMsem52ZXI0LWZwLXN0b3JlIikKKworKGRlZmluZV9pbnNuX3Jlc2VydmF0 aW9uICJ6bnZlcjRfc3NlX3Rlc3QiIDEKKwkJCSAoYW5kIChlcV9hdHRyICJjcHUiICJ6bnZlcjQi KQorCQkJICAgICAgKGFuZCAoZXFfYXR0ciAicHJlZml4X2V4dHJhIiAiMSIpCisJCQkJICAgKGFu ZCAoZXFfYXR0ciAidHlwZSIgInNzZWNvbWkiKQorCQkJCQkoZXFfYXR0ciAibWVtb3J5IiAibm9u ZSIpKSkpCisJCQkgInpudmVyNC1kaXJlY3Qsem52ZXI0LWZwdTF8em52ZXI0LWZwdTIiKQorCiso ZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInpudmVyNF9zc2VfdGVzdF9sb2FkIiA4CisJCQkgKGFu ZCAoZXFfYXR0ciAiY3B1IiAiem52ZXI0IikKKwkJCSAgICAgIChhbmQgKGVxX2F0dHIgInByZWZp eF9leHRyYSIgIjEiKQorCQkJCSAgIChhbmQgKGVxX2F0dHIgInR5cGUiICJzc2Vjb21pIikKKwkJ CQkJKGVxX2F0dHIgIm1lbW9yeSIgImxvYWQiKSkpKQorCQkJICJ6bnZlcjQtZGlyZWN0LHpudmVy NC1sb2FkLHpudmVyNC1mcHUxfHpudmVyNC1mcHUyIikKKworKGRlZmluZV9pbnNuX3Jlc2VydmF0 aW9uICJ6bnZlcjRfc3NlX2ltdWwiIDMKKwkJCSAoYW5kIChlcV9hdHRyICJjcHUiICJ6bnZlcjQi KQorCQkJICAgICAgKGFuZCAoZXFfYXR0ciAidHlwZSIgInNzZWltdWwiKQorCQkJCSAgIChhbmQg KGVxX2F0dHIgIm1vZGUiICJRSSxISSxTSSxESSxUSSxPSSIpCisJCQkJICAgIChlcV9hdHRyICJt ZW1vcnkiICJub25lIikpKSkKKwkJCSAiem52ZXI0LWRpcmVjdCx6bnZlcjQtZnB1MHx6bnZlcjQt ZnB1MyIpCisKKyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAiem52ZXI0X3NzZV9pbXVsX2xvYWQi IDEwCisJCQkgKGFuZCAoZXFfYXR0ciAiY3B1IiAiem52ZXI0IikKKwkJCSAgICAgIChhbmQgKGVx X2F0dHIgInR5cGUiICJzc2VpbXVsIikKKwkJCQkgICAoYW5kIChlcV9hdHRyICJtb2RlIiAiUUks SEksU0ksREksVEksT0kiKQorCQkJCSAgICAoZXFfYXR0ciAibWVtb3J5IiAibG9hZCIpKSkpCisJ CQkgInpudmVyNC1kaXJlY3Qsem52ZXI0LWxvYWQsem52ZXI0LWZwdTB8em52ZXI0LWZwdTMiKQor CisoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInpudmVyNF9zc2VfbW92IiAyCisJCQkgKGFuZCAo ZXFfYXR0ciAiY3B1IiAiem52ZXI0IikKKwkJCSAgICAgIChhbmQgKGVxX2F0dHIgInR5cGUiICJz c2Vtb3YiKQorCQkJCSAgIChhbmQgKGVxX2F0dHIgIm1vZGUiICJRSSxISSxTSSxESSxUSSxPSSIp CisJCQkJICAgIChlcV9hdHRyICJtZW1vcnkiICJub25lIikpKSkKKwkJCSAiem52ZXI0LWRpcmVj dCx6bnZlcjQtZnB1MXx6bnZlcjQtZnB1MiIpCisKKyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAi em52ZXI0X3NzZV9tb3ZfbG9hZCIgOQorCQkJIChhbmQgKGVxX2F0dHIgImNwdSIgInpudmVyNCIp CisJCQkgICAgICAoYW5kIChlcV9hdHRyICJ0eXBlIiAic3NlbW92IikKKwkJCQkgICAoYW5kIChl cV9hdHRyICJtb2RlIiAiUUksSEksU0ksREksVEksT0kiKQorCQkJCSAgICAoZXFfYXR0ciAibWVt b3J5IiAibG9hZCIpKSkpCisJCQkgInpudmVyNC1kaXJlY3Qsem52ZXI0LWxvYWQsem52ZXI0LWZw dTF8em52ZXI0LWZwdTIiKQorCisoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInpudmVyNF9zc2Vf bW92X3N0b3JlIiA1CisJCQkgKGFuZCAoZXFfYXR0ciAiY3B1IiAiem52ZXI0IikKKwkJCSAgICAg IChhbmQgKGVxX2F0dHIgInR5cGUiICJzc2Vtb3YiKQorCQkJCSAgIChhbmQgKGVxX2F0dHIgIm1v ZGUiICJRSSxISSxTSSxESSxUSSxPSSIpCisJCQkJICAgIChlcV9hdHRyICJtZW1vcnkiICJzdG9y ZSIpKSkpCisJCQkgInpudmVyNC1kaXJlY3Qsem52ZXI0LWZwdTF8em52ZXI0LWZwdTIsem52ZXI0 LWZwLXN0b3JlIikKKworKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJ6bnZlcjRfc3NlX21vdl9m cCIgMQorCQkJIChhbmQgKGVxX2F0dHIgImNwdSIgInpudmVyNCIpCisJCQkgICAgICAoYW5kIChl cV9hdHRyICJ0eXBlIiAic3NlbW92IikKKwkJCQkgICAoYW5kIChlcV9hdHRyICJtb2RlIiAiVjE2 U0YsVjhERixWOFNGLFY0REYsVjRTRixWMkRGLFYyU0YsVjFERixTRiIpCisJCQkJICAgIChlcV9h dHRyICJtZW1vcnkiICJub25lIikpKSkKKwkJCSAiem52ZXI0LWRpcmVjdCx6bnZlcjQtZnB1IikK KworKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJ6bnZlcjRfc3NlX21vdl9mcF9sb2FkIiA4CisJ CQkgKGFuZCAoZXFfYXR0ciAiY3B1IiAiem52ZXI0IikKKwkJCSAgICAgIChhbmQgKGVxX2F0dHIg InR5cGUiICJzc2Vtb3YiKQorCQkJCSAgIChhbmQgKGVxX2F0dHIgIm1vZGUiICJWMTZTRixWOERG LFY4U0YsVjRERixWNFNGLFYyREYsVjJTRixWMURGLFNGIikKKwkJCQkgICAgKGVxX2F0dHIgIm1l bW9yeSIgImxvYWQiKSkpKQorCQkJICJ6bnZlcjQtZGlyZWN0LHpudmVyNC1sb2FkLHpudmVyNC1m cHUiKQorCisoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInpudmVyNF9zc2VfbW92X2ZwX3N0b3Jl IiAxCisJCQkgKGFuZCAoZXFfYXR0ciAiY3B1IiAiem52ZXI0IikKKwkJCSAgICAgIChhbmQgKGVx X2F0dHIgInR5cGUiICJzc2Vtb3YiKQorCQkJCSAgIChhbmQgKGVxX2F0dHIgIm1vZGUiICJWMTZT RixWOERGLFY4U0YsVjRERixWNFNGLFYyREYsVjJTRixWMURGLFNGIikKKwkJCQkgICAgKGVxX2F0 dHIgIm1lbW9yeSIgInN0b3JlIikpKSkKKwkJCSAiem52ZXI0LWRpcmVjdCx6bnZlcjQtZnAtc3Rv cmUiKQorCisoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInpudmVyNF9zc2VfYWRkIiAzCisJCQkg KGFuZCAoZXFfYXR0ciAiY3B1IiAiem52ZXI0IikKKwkJCSAgICAgIChhbmQgKGVxX2F0dHIgInR5 cGUiICJzc2VhZGQiKQorCQkJCSAgIChhbmQgKGVxX2F0dHIgIm1vZGUiICJWOFNGLFY0REYsVjRT RixWMkRGLFYyU0YsVjFERixTRiIpCisJCQkJICAgIChlcV9hdHRyICJtZW1vcnkiICJub25lIikp KSkKKwkJCSAiem52ZXI0LWRpcmVjdCx6bnZlcjQtZnB1Mnx6bnZlcjQtZnB1MyIpCisKKyhkZWZp bmVfaW5zbl9yZXNlcnZhdGlvbiAiem52ZXI0X3NzZV9hZGRfbG9hZCIgMTAKKwkJCSAoYW5kIChl cV9hdHRyICJjcHUiICJ6bnZlcjQiKQorCQkJICAgICAgKGFuZCAoZXFfYXR0ciAidHlwZSIgInNz ZWFkZCIpCisJCQkJICAgKGFuZCAoZXFfYXR0ciAibW9kZSIgIlY4U0YsVjRERixWNFNGLFYyREYs VjJTRixWMURGLFNGIikKKwkJCQkgICAgKGVxX2F0dHIgIm1lbW9yeSIgImxvYWQiKSkpKQorCQkJ ICJ6bnZlcjQtZGlyZWN0LHpudmVyNC1sb2FkLHpudmVyNC1mcHUyfHpudmVyNC1mcHUzIikKKwor KGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJ6bnZlcjRfc3NlX2FkZDEiIDYKKwkJCSAoYW5kIChl cV9hdHRyICJjcHUiICJ6bnZlcjQiKQorCQkJICAgICAgKGFuZCAoZXFfYXR0ciAidHlwZSIgInNz ZWFkZDEiKQorCQkJCSAgIChhbmQgKGVxX2F0dHIgIm1vZGUiICJWOFNGLFY0REYsVjRTRixWMkRG LFYyU0YsVjFERixTRiIpCisJCQkJICAgIChlcV9hdHRyICJtZW1vcnkiICJub25lIikpKSkKKwkJ CSAiem52ZXI0LXZlY3Rvcix6bnZlcjQtZnZlY3RvciIpCisKKyhkZWZpbmVfaW5zbl9yZXNlcnZh dGlvbiAiem52ZXI0X3NzZV9hZGQxX2xvYWQiIDEzCisJCQkgKGFuZCAoZXFfYXR0ciAiY3B1IiAi em52ZXI0IikKKwkJCSAgICAgIChhbmQgKGVxX2F0dHIgInR5cGUiICJzc2VhZGQxIikKKwkJCQkg ICAoYW5kIChlcV9hdHRyICJtb2RlIiAiVjhTRixWNERGLFY0U0YsVjJERixWMlNGLFYxREYsU0Yi KQorCQkJCSAgICAoZXFfYXR0ciAibWVtb3J5IiAibG9hZCIpKSkpCisJCQkgInpudmVyNC12ZWN0 b3Isem52ZXI0LWxvYWQsem52ZXI0LWZ2ZWN0b3IiKQorCisoZGVmaW5lX2luc25fcmVzZXJ2YXRp b24gInpudmVyNF9zc2VfaWFkZCIgMQorCQkJIChhbmQgKGVxX2F0dHIgImNwdSIgInpudmVyNCIp CisJCQkgICAgICAoYW5kIChlcV9hdHRyICJ0eXBlIiAic3NlaWFkZCIpCisJCQkJICAgKGFuZCAo ZXFfYXR0ciAibW9kZSIgIlFJLEhJLFNJLERJLFRJLE9JIikKKwkJCQkgICAgKGVxX2F0dHIgIm1l bW9yeSIgIm5vbmUiKSkpKQorCQkJICJ6bnZlcjQtZGlyZWN0LHpudmVyNC1mcHUiKQorCisoZGVm aW5lX2luc25fcmVzZXJ2YXRpb24gInpudmVyNF9zc2VfaWFkZF9sb2FkIiA4CisJCQkgKGFuZCAo ZXFfYXR0ciAiY3B1IiAiem52ZXI0IikKKwkJCSAgICAgIChhbmQgKGVxX2F0dHIgInR5cGUiICJz c2VpYWRkIikKKwkJCQkgICAoYW5kIChlcV9hdHRyICJtb2RlIiAiUUksSEksU0ksREksVEksT0ki KQorCQkJCSAgICAoZXFfYXR0ciAibWVtb3J5IiAibG9hZCIpKSkpCisJCQkgInpudmVyNC1kaXJl Y3Qsem52ZXI0LWxvYWQsem52ZXI0LWZwdSIpCisKKyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAi em52ZXI0X3NzZV9tdWwiIDMKKwkJCSAoYW5kIChlcV9hdHRyICJjcHUiICJ6bnZlcjQiKQorCQkJ ICAgICAgKGFuZCAoZXFfYXR0ciAidHlwZSIgInNzZW11bCIpCisJCQkJICAgKGFuZCAoZXFfYXR0 ciAibW9kZSIgIlY4U0YsVjRERixWNFNGLFYyREYsVjJTRixWMURGLFNGIikKKwkJCQkgICAgKGVx X2F0dHIgIm1lbW9yeSIgIm5vbmUiKSkpKQorCQkJICJ6bnZlcjQtZGlyZWN0LHpudmVyNC1mcHUw fHpudmVyNC1mcHUzIikKKworKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJ6bnZlcjRfc3NlX211 bF9sb2FkIiAxMAorCQkJIChhbmQgKGVxX2F0dHIgImNwdSIgInpudmVyNCIpCisJCQkgICAgICAo YW5kIChlcV9hdHRyICJ0eXBlIiAic3NlYWRkIikKKwkJCQkgICAoYW5kIChlcV9hdHRyICJtb2Rl IiAiVjhTRixWNERGLFY0U0YsVjJERixWMlNGLFYxREYsU0YiKQorCQkJCSAgICAoZXFfYXR0ciAi bWVtb3J5IiAibG9hZCIpKSkpCisJCQkgInpudmVyNC1kaXJlY3Qsem52ZXI0LWxvYWQsem52ZXI0 LWZwdTB8em52ZXI0LWZwdTEiKQorCisoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInpudmVyNF9z c2VfZGl2X3BkIiAxMworCQkJIChhbmQgKGVxX2F0dHIgImNwdSIgInpudmVyNCIpCisJCQkgICAg ICAoYW5kIChlcV9hdHRyICJ0eXBlIiAic3NlZGl2IikKKwkJCQkgICAoYW5kIChlcV9hdHRyICJt b2RlIiAiVjRERixWMkRGLFYxREYiKQorCQkJCSAgICAoZXFfYXR0ciAibWVtb3J5IiAibm9uZSIp KSkpCisJCQkgInpudmVyNC1kaXJlY3Qsem52ZXI0LXNzZWRpdio3IikKKworKGRlZmluZV9pbnNu X3Jlc2VydmF0aW9uICJ6bnZlcjRfc3NlX2Rpdl9wcyIgMTAKKwkJCSAoYW5kIChlcV9hdHRyICJj cHUiICJ6bnZlcjQiKQorCQkJICAgICAgKGFuZCAoZXFfYXR0ciAidHlwZSIgInNzZWRpdiIpCisJ CQkJICAgKGFuZCAoZXFfYXR0ciAibW9kZSIgIlY4U0YsVjRTRixWMlNGLFNGIikKKwkJCQkgICAg KGVxX2F0dHIgIm1lbW9yeSIgIm5vbmUiKSkpKQorCQkJICJ6bnZlcjQtZGlyZWN0LHpudmVyNC1z c2VkaXYqNSIpCisKKyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAiem52ZXI0X3NzZV9kaXZfcGRf bG9hZCIgMjAKKwkJCSAoYW5kIChlcV9hdHRyICJjcHUiICJ6bnZlcjQiKQorCQkJICAgICAgKGFu ZCAoZXFfYXR0ciAidHlwZSIgInNzZWRpdiIpCisJCQkJICAgKGFuZCAoZXFfYXR0ciAibW9kZSIg IlY0REYsVjJERixWMURGIikKKwkJCQkgICAgKGVxX2F0dHIgIm1lbW9yeSIgImxvYWQiKSkpKQor CQkJICJ6bnZlcjQtZGlyZWN0LHpudmVyNC1sb2FkLHpudmVyNC1zc2VkaXYqNyIpCisKKyhkZWZp bmVfaW5zbl9yZXNlcnZhdGlvbiAiem52ZXI0X3NzZV9kaXZfcHNfbG9hZCIgMTcKKwkJCSAoYW5k IChlcV9hdHRyICJjcHUiICJ6bnZlcjQiKQorCQkJICAgICAgKGFuZCAoZXFfYXR0ciAidHlwZSIg InNzZWRpdiIpCisJCQkJICAgKGFuZCAoZXFfYXR0ciAibW9kZSIgIlY4U0YsVjRTRixWMlNGLFNG IikKKwkJCQkgICAgKGVxX2F0dHIgIm1lbW9yeSIgImxvYWQiKSkpKQorCQkJICJ6bnZlcjQtZGly ZWN0LHpudmVyNC1sb2FkLHpudmVyNC1zc2VkaXYqNSIpCisKKyhkZWZpbmVfaW5zbl9yZXNlcnZh dGlvbiAiem52ZXI0X3NzZV9jbXBfYXZ4IiAzCisJCQkgKGFuZCAoZXFfYXR0ciAiY3B1IiAiem52 ZXI0IikKKwkJCSAgICAgIChhbmQgKGVxX2F0dHIgInR5cGUiICJzc2VjbXAsc3NlY29taSIpCisJ CQkJICAgKGFuZCAoZXFfYXR0ciAibW9kZSIgIlY0U0YsVjJERixWMlNGLFYxREYsU0YsUUksSEks U0ksREksVEkiKQorCQkJCSAgICAoZXFfYXR0ciAibWVtb3J5IiAibm9uZSIpKSkpCisJCQkgInpu dmVyNC1kaXJlY3Qsem52ZXI0LWZwdTB8em52ZXI0LWZwdTEiKQorCisoZGVmaW5lX2luc25fcmVz ZXJ2YXRpb24gInpudmVyNF9zc2VfY21wX2F2eF9sb2FkIiAxMAorCQkJIChhbmQgKGVxX2F0dHIg ImNwdSIgInpudmVyNCIpCisJCQkgICAgICAoYW5kIChlcV9hdHRyICJ0eXBlIiAic3NlY21wLHNz ZWNvbWkiKQorCQkJCSAgIChhbmQgKGVxX2F0dHIgIm1vZGUiICJWNFNGLFYyREYsVjJTRixWMURG LFNGLFFJLEhJLFNJLERJLFRJIikKKwkJCQkgICAgKGVxX2F0dHIgIm1lbW9yeSIgImxvYWQiKSkp KQorCQkJICJ6bnZlcjQtZGlyZWN0LHpudmVyNC1sb2FkLHpudmVyNC1mcHUwfHpudmVyNC1mcHUx IikKKworKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJ6bnZlcjRfc3NlX2NtcF9hdngyIiA0CisJ CQkgKGFuZCAoZXFfYXR0ciAiY3B1IiAiem52ZXI0IikKKwkJCSAgICAgIChhbmQgKGVxX2F0dHIg InR5cGUiICJzc2VjbXAsc3NlY29taSIpCisJCQkJICAgKGFuZCAoZXFfYXR0ciAibW9kZSIgIlY4 U0YsVjRERixPSSIpCisJCQkJICAgIChlcV9hdHRyICJtZW1vcnkiICJub25lIikpKSkKKwkJCSAi em52ZXI0LWRpcmVjdCx6bnZlcjQtZnB1MHx6bnZlcjQtZnB1MSIpCisKKyhkZWZpbmVfaW5zbl9y ZXNlcnZhdGlvbiAiem52ZXI0X3NzZV9jbXBfYXZ4Ml9sb2FkIiAxMQorCQkJIChhbmQgKGVxX2F0 dHIgImNwdSIgInpudmVyNCIpCisJCQkgICAgICAoYW5kIChlcV9hdHRyICJ0eXBlIiAic3NlY21w LHNzZWNvbWkiKQorCQkJCSAgIChhbmQgKGVxX2F0dHIgIm1vZGUiICJWOFNGLFY0REYsT0kiKQor CQkJCSAgICAoZXFfYXR0ciAibWVtb3J5IiAibG9hZCIpKSkpCisJCQkgInpudmVyNC1kaXJlY3Qs em52ZXI0LWxvYWQsem52ZXI0LWZwdTB8em52ZXI0LWZwdTEiKQorCisoZGVmaW5lX2luc25fcmVz ZXJ2YXRpb24gInpudmVyNF9zc2VfY3Z0IiAzCisJCQkgKGFuZCAoZXFfYXR0ciAiY3B1IiAiem52 ZXI0IikKKwkJCSAgICAgIChhbmQgKGVxX2F0dHIgInR5cGUiICJzc2VjdnQiKQorCQkJCSAgIChh bmQgKGVxX2F0dHIgIm1vZGUiICJWOFNGLFY0REYsVjRTRixWMkRGLFYyU0YsVjFERixTRiIpCisJ CQkJICAgIChlcV9hdHRyICJtZW1vcnkiICJub25lIikpKSkKKwkJCSAiem52ZXI0LWRpcmVjdCx6 bnZlcjQtZnB1Mnx6bnZlcjQtZnB1MyIpCisKKyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAiem52 ZXI0X3NzZV9jdnRfbG9hZCIgMTAKKwkJCSAoYW5kIChlcV9hdHRyICJjcHUiICJ6bnZlcjQiKQor CQkJICAgICAgKGFuZCAoZXFfYXR0ciAidHlwZSIgInNzZWN2dCIpCisJCQkJICAgKGFuZCAoZXFf YXR0ciAibW9kZSIgIlY4U0YsVjRERixWNFNGLFYyREYsVjJTRixWMURGLFNGIikKKwkJCQkgICAg KGVxX2F0dHIgIm1lbW9yeSIgImxvYWQiKSkpKQorCQkJICJ6bnZlcjQtZGlyZWN0LHpudmVyNC1s b2FkLHpudmVyNC1mcHUyfHpudmVyNC1mcHUzIikKKworKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9u ICJ6bnZlcjRfc3NlX2ljdnQiIDMKKwkJCSAoYW5kIChlcV9hdHRyICJjcHUiICJ6bnZlcjQiKQor CQkJICAgICAgKGFuZCAoZXFfYXR0ciAidHlwZSIgInNzZWN2dCIpCisJCQkJICAgKGFuZCAoZXFf YXR0ciAibW9kZSIgIlNJIikKKwkJCQkgICAgKGVxX2F0dHIgIm1lbW9yeSIgIm5vbmUiKSkpKQor CQkJICJ6bnZlcjQtZGlyZWN0LHpudmVyNC1mcHUyfHpudmVyNC1mcHUzIikKKworKGRlZmluZV9p bnNuX3Jlc2VydmF0aW9uICJ6bnZlcjRfc3NlX2ljdnRfc3RvcmUiIDQKKwkJCSAoYW5kIChlcV9h dHRyICJjcHUiICJ6bnZlcjQiKQorCQkJICAgICAgKGFuZCAoZXFfYXR0ciAidHlwZSIgInNzZWN2 dCIpCisJCQkJICAgKGFuZCAoZXFfYXR0ciAibW9kZSIgIlNJIikKKwkJCQkgICAgKGVxX2F0dHIg Im1lbW9yeSIgInN0b3JlIikpKSkKKwkJCSAiem52ZXI0LWRpcmVjdCx6bnZlcjQtZnB1Mnx6bnZl cjQtZnB1Myx6bnZlcjQtZnAtc3RvcmUiKQorCisoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInpu dmVyNF9zc2Vfc2h1ZiIgMQorCQkJIChhbmQgKGVxX2F0dHIgImNwdSIgInpudmVyNCIpCisJCQkg ICAgICAoYW5kIChlcV9hdHRyICJ0eXBlIiAic3Nlc2h1ZiIpCisJCQkJICAgKGFuZCAoZXFfYXR0 ciAibW9kZSIgIlY4U0YsVjRERixWNFNGLFYyREYsVjJTRixWMURGLFNGIikKKwkJCQkgICAgKGVx X2F0dHIgIm1lbW9yeSIgIm5vbmUiKSkpKQorCQkJICJ6bnZlcjQtZGlyZWN0LHpudmVyNC1mcHUx fHpudmVyNC1mcHUyIikKKworKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJ6bnZlcjRfc3NlX3No dWZfbG9hZCIgOAorCQkJIChhbmQgKGVxX2F0dHIgImNwdSIgInpudmVyNCIpCisJCQkgICAgICAo YW5kIChlcV9hdHRyICJ0eXBlIiAic3Nlc2h1ZiIpCisJCQkJICAgKGFuZCAoZXFfYXR0ciAibW9k ZSIgIlY4U0YsVjRERixWNFNGLFYyREYsVjJTRixWMURGLFNGIikKKwkJCQkgICAgKGVxX2F0dHIg Im1lbW9yeSIgImxvYWQiKSkpKQorCQkJICJ6bnZlcjQtZGlyZWN0LHpudmVyNC1sb2FkLHpudmVy NC1mcHUiKQorCisoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInpudmVyNF9zc2VfaXNodWYiIDMK KwkJCSAoYW5kIChlcV9hdHRyICJjcHUiICJ6bnZlcjQiKQorCQkJICAgICAgKGFuZCAoZXFfYXR0 ciAidHlwZSIgInNzZXNodWYiKQorCQkJCSAgIChhbmQgKGVxX2F0dHIgIm1vZGUiICJPSSIpCisJ CQkJICAgIChlcV9hdHRyICJtZW1vcnkiICJub25lIikpKSkKKwkJCSAiem52ZXI0LWRpcmVjdCx6 bnZlcjQtZnB1MXx6bnZlcjQtZnB1MiIpCisKKyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAiem52 ZXI0X3NzZV9pc2h1Zl9sb2FkIiAxMAorCQkJIChhbmQgKGVxX2F0dHIgImNwdSIgInpudmVyNCIp CisJCQkgICAgICAoYW5kIChlcV9hdHRyICJ0eXBlIiAic3Nlc2h1ZiIpCisJCQkJICAgKGFuZCAo ZXFfYXR0ciAibW9kZSIgIk9JIikKKwkJCQkgICAgKGVxX2F0dHIgIm1lbW9yeSIgImxvYWQiKSkp KQorCQkJICJ6bnZlcjQtZGlyZWN0LHpudmVyNC1sb2FkLHpudmVyNC1mcHUxfHpudmVyNC1mcHUy IikKKworOzsgQVZYNTEyIGluc3RydWN0aW9ucworKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJ6 bnZlcjRfc3NlX211bF9ldmV4IiAzCisJCQkgKGFuZCAoZXFfYXR0ciAiY3B1IiAiem52ZXI0IikK KwkJCSAgICAgIChhbmQgKGVxX2F0dHIgInR5cGUiICJzc2VtdWwiKQorCQkJCSAgIChhbmQgKGVx X2F0dHIgIm1vZGUiICJWMTZTRixWOERGIikKKwkJCQkgICAgKGVxX2F0dHIgIm1lbW9yeSIgIm5v bmUiKSkpKQorCQkJICJ6bnZlcjQtZG91YmxlLHpudmVyNC1mcHUwfHpudmVyNC1mcHUzIikKKwor KGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJ6bnZlcjRfc3NlX211bF9ldmV4X2xvYWQiIDEwCisJ CQkgKGFuZCAoZXFfYXR0ciAiY3B1IiAiem52ZXI0IikKKwkJCSAgICAgIChhbmQgKGVxX2F0dHIg InR5cGUiICJzc2VhZGQiKQorCQkJCSAgIChhbmQgKGVxX2F0dHIgIm1vZGUiICJWMTZTRixWOERG IikKKwkJCQkgICAgKGVxX2F0dHIgIm1lbW9yeSIgImxvYWQiKSkpKQorCQkJICJ6bnZlcjQtZG91 YmxlLHpudmVyNC1sb2FkLHpudmVyNC1mcHUwfHpudmVyNC1mcHUxIikKKworKGRlZmluZV9pbnNu X3Jlc2VydmF0aW9uICJ6bnZlcjRfc3NlX2ltdWxfZXZleCIgMworCQkJIChhbmQgKGVxX2F0dHIg ImNwdSIgInpudmVyNCIpCisJCQkgICAgICAoYW5kIChlcV9hdHRyICJ0eXBlIiAic3NlaW11bCIp CisJCQkJICAgKGFuZCAoZXFfYXR0ciAibW9kZSIgIlhJIikKKwkJCQkgICAgKGVxX2F0dHIgIm1l bW9yeSIgIm5vbmUiKSkpKQorCQkJICJ6bnZlcjQtZG91YmxlLHpudmVyNC1mcHUwfHpudmVyNC1m cHUxIikKKworKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJ6bnZlcjRfc3NlX2ltdWxfZXZleF9s b2FkIiAxMAorCQkJIChhbmQgKGVxX2F0dHIgImNwdSIgInpudmVyNCIpCisJCQkgICAgICAoYW5k IChlcV9hdHRyICJ0eXBlIiAic3NlaW11bCIpCisJCQkJICAgKGFuZCAoZXFfYXR0ciAibW9kZSIg IlhJIikKKwkJCQkgICAgKGVxX2F0dHIgIm1lbW9yeSIgImxvYWQiKSkpKQorCQkJICJ6bnZlcjQt ZG91YmxlLHpudmVyNC1sb2FkLHpudmVyNC1mcHUwfHpudmVyNC1mcHUxIikKKworKGRlZmluZV9p bnNuX3Jlc2VydmF0aW9uICJ6bnZlcjRfc3NlX21vdl9ldmV4IiA0CisJCQkgKGFuZCAoZXFfYXR0 ciAiY3B1IiAiem52ZXI0IikKKwkJCSAgICAgIChhbmQgKGVxX2F0dHIgInR5cGUiICJzc2Vtb3Yi KQorCQkJCSAgIChhbmQgKGVxX2F0dHIgIm1vZGUiICJYSSIpCisJCQkJICAgIChlcV9hdHRyICJt ZW1vcnkiICJub25lIikpKSkKKwkJCSAiem52ZXI0LWRvdWJsZSx6bnZlcjQtZnB1MXx6bnZlcjQt ZnB1MiIpCisKKyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAiem52ZXI0X3NzZV9tb3ZfZXZleF9s b2FkIiAxMQorCQkJIChhbmQgKGVxX2F0dHIgImNwdSIgInpudmVyNCIpCisJCQkgICAgICAoYW5k IChlcV9hdHRyICJ0eXBlIiAic3NlbW92IikKKwkJCQkgICAoYW5kIChlcV9hdHRyICJtb2RlIiAi WEkiKQorCQkJCSAgICAoZXFfYXR0ciAibWVtb3J5IiAibG9hZCIpKSkpCisJCQkgInpudmVyNC1k b3VibGUsem52ZXI0LWxvYWQsem52ZXI0LWZwdTF8em52ZXI0LWZwdTIiKQorCisoZGVmaW5lX2lu c25fcmVzZXJ2YXRpb24gInpudmVyNF9zc2VfbW92X2V2ZXhfc3RvcmUiIDUKKwkJCSAoYW5kIChl cV9hdHRyICJjcHUiICJ6bnZlcjQiKQorCQkJICAgICAgKGFuZCAoZXFfYXR0ciAidHlwZSIgInNz ZW1vdiIpCisJCQkJICAgKGFuZCAoZXFfYXR0ciAibW9kZSIgIlhJIikKKwkJCQkgICAgKGVxX2F0 dHIgIm1lbW9yeSIgInN0b3JlIikpKSkKKwkJCSAiem52ZXI0LWRvdWJsZSx6bnZlcjQtZnB1MXx6 bnZlcjQtZnB1Mix6bnZlcjQtZnAtc3RvcmUiKQorCisoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24g InpudmVyNF9zc2VfYWRkX2V2ZXgiIDMKKwkJCSAoYW5kIChlcV9hdHRyICJjcHUiICJ6bnZlcjQi KQorCQkJICAgICAgKGFuZCAoZXFfYXR0ciAidHlwZSIgInNzZWFkZCIpCisJCQkJICAgKGFuZCAo ZXFfYXR0ciAibW9kZSIgIlYxNlNGLFY4REYiKQorCQkJCSAgICAoZXFfYXR0ciAibWVtb3J5IiAi bm9uZSIpKSkpCisJCQkgInpudmVyNC1kb3VibGUsem52ZXI0LWZwdTJ8em52ZXI0LWZwdTMiKQor CisoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInpudmVyNF9zc2VfYWRkX2V2ZXhfbG9hZCIgMTAK KwkJCSAoYW5kIChlcV9hdHRyICJjcHUiICJ6bnZlcjQiKQorCQkJICAgICAgKGFuZCAoZXFfYXR0 ciAidHlwZSIgInNzZWFkZCIpCisJCQkJICAgKGFuZCAoZXFfYXR0ciAibW9kZSIgIlYxNlNGLFY4 REYiKQorCQkJCSAgICAoZXFfYXR0ciAibWVtb3J5IiAibG9hZCIpKSkpCisJCQkgInpudmVyNC1k b3VibGUsem52ZXI0LWxvYWQsem52ZXI0LWZwdTJ8em52ZXI0LWZwdTMiKQorCisoZGVmaW5lX2lu c25fcmVzZXJ2YXRpb24gInpudmVyNF9zc2VfaWFkZF9ldmV4IiAxCisJCQkgKGFuZCAoZXFfYXR0 ciAiY3B1IiAiem52ZXI0IikKKwkJCSAgICAgIChhbmQgKGVxX2F0dHIgInR5cGUiICJzc2VpYWRk IikKKwkJCQkgICAoYW5kIChlcV9hdHRyICJtb2RlIiAiWEkiKQorCQkJCSAgICAoZXFfYXR0ciAi bWVtb3J5IiAibm9uZSIpKSkpCisJCQkgInpudmVyNC1kb3VibGUsem52ZXI0LWZwdSIpCisKKyhk ZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAiem52ZXI0X3NzZV9pYWRkX2V2ZXhfbG9hZCIgOAorCQkJ IChhbmQgKGVxX2F0dHIgImNwdSIgInpudmVyNCIpCisJCQkgICAgICAoYW5kIChlcV9hdHRyICJ0 eXBlIiAic3NlaWFkZCIpCisJCQkJICAgKGFuZCAoZXFfYXR0ciAibW9kZSIgIlhJIikKKwkJCQkg ICAgKGVxX2F0dHIgIm1lbW9yeSIgImxvYWQiKSkpKQorCQkJICJ6bnZlcjQtZG91YmxlLHpudmVy NC1sb2FkLHpudmVyNC1mcHUiKQorCisoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInpudmVyNF9z c2VfZGl2X3BkX2V2ZXgiIDEzCisJCQkgKGFuZCAoZXFfYXR0ciAiY3B1IiAiem52ZXI0IikKKwkJ CSAgICAgIChhbmQgKGVxX2F0dHIgInR5cGUiICJzc2VkaXYiKQorCQkJCSAgIChhbmQgKGVxX2F0 dHIgIm1vZGUiICJWOERGIikKKwkJCQkgICAgKGVxX2F0dHIgIm1lbW9yeSIgIm5vbmUiKSkpKQor CQkJICJ6bnZlcjQtZG91YmxlLHpudmVyNC1zc2VkaXYqNyIpCisKKyhkZWZpbmVfaW5zbl9yZXNl cnZhdGlvbiAiem52ZXI0X3NzZV9kaXZfcHNfZXZleCIgMTAKKwkJCSAoYW5kIChlcV9hdHRyICJj cHUiICJ6bnZlcjQiKQorCQkJICAgICAgKGFuZCAoZXFfYXR0ciAidHlwZSIgInNzZWRpdiIpCisJ CQkJICAgKGFuZCAoZXFfYXR0ciAibW9kZSIgIlYxNlNGIikKKwkJCQkgICAgKGVxX2F0dHIgIm1l bW9yeSIgIm5vbmUiKSkpKQorCQkJICJ6bnZlcjQtZG91YmxlLHpudmVyNC1zc2VkaXYqNSIpCisK KyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAiem52ZXI0X3NzZV9kaXZfcGRfZXZleF9sb2FkIiAy MAorCQkJIChhbmQgKGVxX2F0dHIgImNwdSIgInpudmVyNCIpCisJCQkgICAgICAoYW5kIChlcV9h dHRyICJ0eXBlIiAic3NlZGl2IikKKwkJCQkgICAoYW5kIChlcV9hdHRyICJtb2RlIiAiVjhERiIp CisJCQkJICAgIChlcV9hdHRyICJtZW1vcnkiICJsb2FkIikpKSkKKwkJCSAiem52ZXI0LWRvdWJs ZSx6bnZlcjQtbG9hZCx6bnZlcjQtc3NlZGl2KjciKQorCisoZGVmaW5lX2luc25fcmVzZXJ2YXRp b24gInpudmVyNF9zc2VfZGl2X3BzX2V2ZXhfbG9hZCIgMTcKKwkJCSAoYW5kIChlcV9hdHRyICJj cHUiICJ6bnZlcjQiKQorCQkJICAgICAgKGFuZCAoZXFfYXR0ciAidHlwZSIgInNzZWRpdiIpCisJ CQkJICAgKGFuZCAoZXFfYXR0ciAibW9kZSIgIlYxNlNGIikKKwkJCQkgICAgKGVxX2F0dHIgIm1l bW9yeSIgImxvYWQiKSkpKQorCQkJICJ6bnZlcjQtZG91YmxlLHpudmVyNC1sb2FkLHpudmVyNC1z c2VkaXYqNSIpCisKKyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAiem52ZXI0X3NzZV9jbXBfYXZ4 NTEyIiA1CisJCQkgKGFuZCAoZXFfYXR0ciAiY3B1IiAiem52ZXI0IikKKwkJCSAgICAgIChhbmQg KGVxX2F0dHIgInR5cGUiICJzc2VjbXAsc3NlY29taSIpCisJCQkJICAgKGFuZCAoZXFfYXR0ciAi bW9kZSIgIlYxNlNGLFY4REYsWEkiKQorCQkJCSAgICAoZXFfYXR0ciAibWVtb3J5IiAibm9uZSIp KSkpCisJCQkgInpudmVyNC1kb3VibGUsem52ZXI0LWZwdTB8em52ZXI0LWZwdTEiKQorCisoZGVm aW5lX2luc25fcmVzZXJ2YXRpb24gInpudmVyNF9zc2VfY21wX2F2eDUxMl9sb2FkIiAxMgorCQkJ IChhbmQgKGVxX2F0dHIgImNwdSIgInpudmVyNCIpCisJCQkgICAgICAoYW5kIChlcV9hdHRyICJ0 eXBlIiAic3NlY21wLHNzZWNvbWkiKQorCQkJCSAgIChhbmQgKGVxX2F0dHIgIm1vZGUiICJWMTZT RixWOERGLFhJIikKKwkJCQkgICAgKGVxX2F0dHIgIm1lbW9yeSIgImxvYWQiKSkpKQorCQkJICJ6 bnZlcjQtZG91YmxlLHpudmVyNC1sb2FkLHpudmVyNC1mcHUwfHpudmVyNC1mcHUxIikKKworKGRl ZmluZV9pbnNuX3Jlc2VydmF0aW9uICJ6bnZlcjRfc3NlX2N2dF9ldmV4IiA2CisJCQkgKGFuZCAo ZXFfYXR0ciAiY3B1IiAiem52ZXI0IikKKwkJCSAgICAgIChhbmQgKGVxX2F0dHIgInR5cGUiICJz c2VjdnQiKQorCQkJCSAgIChhbmQgKGVxX2F0dHIgIm1vZGUiICJWMTZTRixWOERGIikKKwkJCQkg ICAgKGVxX2F0dHIgIm1lbW9yeSIgIm5vbmUiKSkpKQorCQkJICJ6bnZlcjQtZG91YmxlLHpudmVy NC1mcHUxfHpudmVyNC1mcHUyLHpudmVyNC1mcHUyfHpudmVyNC1mcHUzIikKKworKGRlZmluZV9p bnNuX3Jlc2VydmF0aW9uICJ6bnZlcjRfc3NlX2N2dF9ldmV4X2xvYWQiIDEzCisJCQkgKGFuZCAo ZXFfYXR0ciAiY3B1IiAiem52ZXI0IikKKwkJCSAgICAgIChhbmQgKGVxX2F0dHIgInR5cGUiICJz c2VjdnQiKQorCQkJCSAgIChhbmQgKGVxX2F0dHIgIm1vZGUiICJWMTZTRixWOERGIikKKwkJCQkg ICAgKGVxX2F0dHIgIm1lbW9yeSIgImxvYWQiKSkpKQorCQkJICJ6bnZlcjQtZG91YmxlLHpudmVy NC1sb2FkLHpudmVyNC1mcHUxfHpudmVyNC1mcHUyLHpudmVyNC1mcHUyfHpudmVyNC1mcHUzIikK KworKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJ6bnZlcjRfc3NlX3NodWZfZXZleCIgMQorCQkJ IChhbmQgKGVxX2F0dHIgImNwdSIgInpudmVyNCIpCisJCQkgICAgICAoYW5kIChlcV9hdHRyICJ0 eXBlIiAic3Nlc2h1ZiIpCisJCQkJICAgKGFuZCAoZXFfYXR0ciAibW9kZSIgIlYxNlNGLFY4REYi KQorCQkJCSAgICAoZXFfYXR0ciAibWVtb3J5IiAibm9uZSIpKSkpCisJCQkgInpudmVyNC1kb3Vi bGUsem52ZXI0LWZwdSIpCisKKyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAiem52ZXI0X3NzZV9z aHVmX2V2ZXhfbG9hZCIgOAorCQkJIChhbmQgKGVxX2F0dHIgImNwdSIgInpudmVyNCIpCisJCQkg ICAgICAoYW5kIChlcV9hdHRyICJ0eXBlIiAic3Nlc2h1ZiIpCisJCQkJICAgKGFuZCAoZXFfYXR0 ciAibW9kZSIgIlYxNlNGLFY4REYiKQorCQkJCSAgICAoZXFfYXR0ciAibWVtb3J5IiAibG9hZCIp KSkpCisJCQkgInpudmVyNC1kb3VibGUsem52ZXI0LWxvYWQsem52ZXI0LWZwdSIpCisKKyhkZWZp bmVfaW5zbl9yZXNlcnZhdGlvbiAiem52ZXI0X3NzZV9pc2h1Zl9ldmV4IiA0CisJCQkgKGFuZCAo ZXFfYXR0ciAiY3B1IiAiem52ZXI0IikKKwkJCSAgICAgIChhbmQgKGVxX2F0dHIgInR5cGUiICJz c2VzaHVmIikKKwkJCQkgICAoYW5kIChlcV9hdHRyICJtb2RlIiAiWEkiKQorCQkJCSAgICAoZXFf YXR0ciAibWVtb3J5IiAibm9uZSIpKSkpCisJCQkgInpudmVyNC1kb3VibGUsem52ZXI0LWZwdTF8 em52ZXI0LWZwdTIiKQorCisoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInpudmVyNF9zc2VfaXNo dWZfZXZleF9sb2FkIiAxMQorCQkJIChhbmQgKGVxX2F0dHIgImNwdSIgInpudmVyNCIpCisJCQkg ICAgICAoYW5kIChlcV9hdHRyICJ0eXBlIiAic3Nlc2h1ZiIpCisJCQkJICAgKGFuZCAoZXFfYXR0 ciAibW9kZSIgIlhJIikKKwkJCQkgICAgKGVxX2F0dHIgIm1lbW9yeSIgImxvYWQiKSkpKQorCQkJ ICJ6bnZlcjQtZG91YmxlLHpudmVyNC1sb2FkLHpudmVyNC1mcHUxfHpudmVyNC1mcHUyIikKKwor KGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJ6bnZlcjRfc3NlX211bGFkZCIgNAorCQkJIChhbmQg KGVxX2F0dHIgImNwdSIgInpudmVyNCIpCisJCQkgICAgICAoYW5kIChlcV9hdHRyICJ0eXBlIiAi c3NlbXVsYWRkIikKKwkJCQkgICAoZXFfYXR0ciAibWVtb3J5IiAibm9uZSIpKSkKKwkJCSAiem52 ZXI0LWRpcmVjdCx6bnZlcjQtZnB1MHx6bnZlcjQtZnB1MSIpCisKKyhkZWZpbmVfaW5zbl9yZXNl cnZhdGlvbiAiem52ZXI0X3NzZV9tdWxhZGRfbG9hZCIgMTEKKwkJCSAoYW5kIChlcV9hdHRyICJj cHUiICJ6bnZlcjQiKQorCQkJICAgICAgKGFuZCAoZXFfYXR0ciAidHlwZSIgInNzZXNodWYiKQor CQkJCSAgIChlcV9hdHRyICJtZW1vcnkiICJsb2FkIikpKQorCQkJICJ6bnZlcjQtZGlyZWN0LHpu dmVyNC1sb2FkLHpudmVyNC1mcHUwfHpudmVyNC1mcHUxIikKKworOzsgQVZYNTEyIG1hc2sgaW5z dHJ1Y3Rpb25zCisKKyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAiem52ZXI0X3NzZV9tc2ttb3Yi IDIKKwkJCSAoYW5kIChlcV9hdHRyICJjcHUiICJ6bnZlcjQiKQorCQkJICAgICAgKGFuZCAoZXFf YXR0ciAidHlwZSIgIm1za21vdiIpCisJCQkJICAgKGVxX2F0dHIgIm1lbW9yeSIgIm5vbmUiKSkp CisJCQkgInpudmVyNC1kaXJlY3Qsem52ZXI0LWZwdTB8em52ZXI0LWZwdTEiKQorCisoZGVmaW5l X2luc25fcmVzZXJ2YXRpb24gInpudmVyNF9zc2VfbXNrbG9nIiAxCisJCQkgKGFuZCAoZXFfYXR0 ciAiY3B1IiAiem52ZXI0IikKKwkJCSAgICAgIChhbmQgKGVxX2F0dHIgInR5cGUiICJtc2tsb2ci KQorCQkJCSAgIChlcV9hdHRyICJtZW1vcnkiICJub25lIikpKQorCQkJICJ6bnZlcjQtZGlyZWN0 LHpudmVyNC1mcHUyfHpudmVyNC1mcHUzIikKLS0gCjIuMjUuMQoK --_002_DM6PR12MB4795D38A7C29749BBDEABB98E3059DM6PR12MB4795namp_--