From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 93443A04A2; Tue, 12 May 2020 08:11:57 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 5A0C81C06A; Tue, 12 May 2020 08:11:57 +0200 (CEST) Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by dpdk.org (Postfix) with ESMTP id C94071C031 for ; Tue, 12 May 2020 08:11:54 +0200 (CEST) IronPort-SDR: EOFs/QVE1/Sp/T4yA82HF8RJF7lAPt8bl4v/pLq7RUZ47PvpVLqJXNckrslL8vSOJMZWFixBoV T5WPknZ/leKw== X-Amp-Result: UNKNOWN X-Amp-Original-Verdict: FILE UNKNOWN X-Amp-File-Uploaded: False Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by fmsmga104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 May 2020 23:11:53 -0700 IronPort-SDR: s2IE29TujO7fLcS2Rr9R71B8j1mXOfj+bulIuSIe6BrwB2HsEJDOWUM4jDFWrwEhCxvbeTorgD KGSmZIkjo4UQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.73,382,1583222400"; d="log'?scan'208,217";a="463424345" Received: from fmsmsx108.amr.corp.intel.com ([10.18.124.206]) by fmsmga005.fm.intel.com with ESMTP; 11 May 2020 23:11:53 -0700 Received: from fmsmsx118.amr.corp.intel.com (10.18.116.18) by FMSMSX108.amr.corp.intel.com (10.18.124.206) with Microsoft SMTP Server (TLS) id 14.3.439.0; Mon, 11 May 2020 23:11:53 -0700 Received: from FMSEDG001.ED.cps.intel.com (10.1.192.133) by fmsmsx118.amr.corp.intel.com (10.18.116.18) with Microsoft SMTP Server (TLS) id 14.3.439.0; Mon, 11 May 2020 23:11:53 -0700 Received: from NAM12-BN8-obe.outbound.protection.outlook.com (104.47.55.173) by edgegateway.intel.com (192.55.55.68) with Microsoft SMTP Server (TLS) id 14.3.439.0; Mon, 11 May 2020 23:11:52 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=KoQQk7n8yOwX7hfRhUn89l/q2eOvmeUfn7AZJnF/d7zRSlW+9QzqN/rk/4V4kr7nUHIrAgdhcCLuLVY7Fu0vZgpZB7XqssUFISLq4u1HWBzM7+27IQxvXWRZw915shd0QZhPdjUcLIF248c4Cwm6lkJoXBKkrjpH3S7cGiPu/aceUakG6nX0ryeflRiGdgv2KWZtFm2s/T2v8hI3VinM68Pzk8LKa5cAnPmdMd83VcT1BGgYMPqTVifAZwr6w4OasPpUL+ccfIBzyxZhhEABSFVnczfkzfVOFM3fPDWbhUztXJcJm7F0tsz0ijWsC7BZJ6918YeHro4a097ONBw7kA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=6FdZVq+INLfo5FB5+2BICn1ZO3WHMLqpWL5NwxaMlys=; b=XUKnMRMI58HDuKoY4y9n0PZdNCT8LiPX1+UBbpHfESB/sMoJLj7QUycYWHCFWEBtX/LdBuXkFaRX5jORQTZIBcUTdVMMA9GJzqo16BfF0ekbcCOQSeZW/vefCf5pJLNY8DfwgG6MY4EBtcN1qoku33wyicmkAAAVg7Lup/C4xiDDxP+nzts5372Bh0v+PlJJVbqwQ92Y92qsLw61YykENd0p3H158scdw+8+3uek/T0GjWzCbpG5J1OfXpwSeDPcZeHjmGxJSgkc8fzc84oH3XK2QvFBeV2c1c5SlZSwzZSSuwDrGNGbs5200+gagIPz77mpnabkYY0HD6ObFYY6/w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=6FdZVq+INLfo5FB5+2BICn1ZO3WHMLqpWL5NwxaMlys=; b=vpwWrrySDQkthYg0ljXzheHI5HsOuRlY+n2IZLm2+6RwVoFTDlin/v/3TZtqIvw1fNF6j2DKG6A4b/mXaomTG2iW0Hfv1yn7lI5+TofxGNmpd8BFyyz+fvdApgEmAXfhe8Kd868bwxUjuLfeueuCSG1gIKKEqGGlDL5UxK0g4MA= Received: from MWHPR1101MB2254.namprd11.prod.outlook.com (2603:10b6:301:58::11) by MWHPR1101MB2093.namprd11.prod.outlook.com (2603:10b6:301:50::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2979.26; Tue, 12 May 2020 06:11:51 +0000 Received: from MWHPR1101MB2254.namprd11.prod.outlook.com ([fe80::288c:b0cd:5a95:3c4b]) by MWHPR1101MB2254.namprd11.prod.outlook.com ([fe80::288c:b0cd:5a95:3c4b%8]) with mapi id 15.20.2979.033; Tue, 12 May 2020 06:11:50 +0000 From: "Xiao, QimaiX" To: "dts@dpdk.org" Thread-Topic: [dts][PATCH V1]unit_tests_loopback: update compile cmd of app/test Thread-Index: AQHWKCOTDPvnWJQankqFeZjoNiHQIKij99nL Date: Tue, 12 May 2020 06:11:50 +0000 Message-ID: References: <1589263099-220942-1-git-send-email-qimaix.xiao@intel.com> In-Reply-To: <1589263099-220942-1-git-send-email-qimaix.xiao@intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: authentication-results: dpdk.org; dkim=none (message not signed) header.d=none;dpdk.org; dmarc=none action=none header.from=intel.com; x-originating-ip: [192.102.204.37] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: cea89eda-8e49-4912-6d14-08d7f63b5c67 x-ms-traffictypediagnostic: MWHPR1101MB2093: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:457; x-forefront-prvs: 0401647B7F x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 0u1DKXJ4BjZbIg+/HY2fXH23Ous2Sg8m3fbVkZCBhMax4LrxSN4foV1VSjryK34NrRVBBgRVeSidS2GuZ4Ri9PSm3ZNpMLoqr/st4O4/8LXQTUV/i+2kCWhO9xYPRwdPDtPeTUDGSnOIj2HhEFH38s5Gzf9yUlc9FJ6qolcQBP07rsNeX2OXwHBYHljn6s+MfqVxDUjs9s14akgSRvk0ItZvb4ap5wYHgokL4Sf7xaoYtoVdEzg3o2jkfEvncBmIZ4JZaxjB/pEwM9onYmbFCWIoIM4t7Q/XVd/Vbk8cAkEyKMvG6k7KWOjisooPBeoZ8ptvEtuQNRuoFBOKHq/PVfYKOIW6GU4xz5adxLfXOCekE7Obx474wvl2CAVY7YdW8KYXhWSeL39peQgcX9lY2aG4rXm/techriWjBa631VNjxsN/4FOyjpxOMhiDNC8LpJkVmfFqyaN20PYoNrjwNQn3DLuiztsZK6Sw0LNiB3G0XpGctDDAudBm4Y4Rvc3uhXo6snGdjGpiXy2/x4DROA== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MWHPR1101MB2254.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFTY:; SFS:(396003)(136003)(39860400002)(366004)(346002)(376002)(33430700001)(76116006)(33656002)(8676002)(66946007)(66556008)(66446008)(33440700001)(66476007)(64756008)(66616009)(91956017)(71200400001)(6916009)(8936002)(15650500001)(186003)(86362001)(26005)(5660300002)(9686003)(52536014)(478600001)(99936003)(2906002)(316002)(6506007)(53546011)(55016002)(7696005)(19627405001); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata: o4RJyYYZ4NFB8yB16IRBkjieZCyN+9qb6F3A+bMjd7TEe3MEmO/c0PK8rPX0sV5Pm6+5kFILBGF5zMezvAQX0NwAHxbyfH8MfxWT/REEkiH0XIB/KxOWVEjdeVdNdSV8gKySrfoaLA5bU5ydzQn81HVuoqK3AYx9z5l9ep325JbhYPGn1HuJ+r4l52+ktwMaVb1BOuviX6Yn/gepE9q70D9/JqsSivwZVQ5awWJfPoAXFxnd5icsVyaw73gDQ/oFWw+tpJHSZkcLlRZHAcALaKhQj7SYeP03GTkh3kgjVeXjN3JjCNu1NFgUhFMWVqWfHJa8od7Se07itD0oG3rHCDvJ3WaxzYKD4EjoWUw9N5UbBnfQIvqH19b/F7M4aSNbfES7GT+mSgpPgYyJlnNvyrJjDnZRcsO4aBjCfqKuC73KLZzj37s4NFKwmkwyVH/VM/D4B4tscu5LGnPbWaHFfzGy/bXakUaeNo2DdU7Fle8KqdfnBhueTuALc0za/85W x-ms-exchange-transport-forked: True Content-Type: multipart/mixed; boundary="_004_MWHPR1101MB22540E9E7F0B63909E3FEF3BFBBE0MWHPR1101MB2254_" MIME-Version: 1.0 X-MS-Exchange-CrossTenant-Network-Message-Id: cea89eda-8e49-4912-6d14-08d7f63b5c67 X-MS-Exchange-CrossTenant-originalarrivaltime: 12 May 2020 06:11:50.9520 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: BMFJSa/c2Ls8xpKu1WYADZ1138fM2P1EHjeHkDXyAOoxCwM67GGPFp5/4OT6jIwlKQMN9GCnOl1KCTky6SNu6w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR1101MB2093 X-OriginatorOrg: intel.com Subject: Re: [dts] [PATCH V1]unit_tests_loopback: update compile cmd of app/test X-BeenThere: dts@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: test suite reviews and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dts-bounces@dpdk.org Sender: "dts" --_004_MWHPR1101MB22540E9E7F0B63909E3FEF3BFBBE0MWHPR1101MB2254_ Content-Type: multipart/alternative; boundary="_000_MWHPR1101MB22540E9E7F0B63909E3FEF3BFBBE0MWHPR1101MB2254_" --_000_MWHPR1101MB22540E9E7F0B63909E3FEF3BFBBE0MWHPR1101MB2254_ Content-Type: text/plain; charset="iso-2022-jp" Content-Transfer-Encoding: quoted-printable Tested-by=1B$B!'=1B(BXiao Qimai ________________________________ From: Xiao, QimaiX Sent: Tuesday, May 12, 2020 1:58 PM To: dts@dpdk.org Cc: Xiao, QimaiX Subject: [dts][PATCH V1]unit_tests_loopback: update compile cmd of app/test *. update compile cmd of app/test according to dpdk's update Signed-off-by: Xiao Qimai --- tests/TestSuite_unit_tests_loopback.py | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/tests/TestSuite_unit_tests_loopback.py b/tests/TestSuite_unit_= tests_loopback.py index 68b1f30..c1d37b2 100644 --- a/tests/TestSuite_unit_tests_loopback.py +++ b/tests/TestSuite_unit_tests_loopback.py @@ -70,6 +70,8 @@ class TestUnitTestsLoopback(TestCase): self.verify(self.arch in ["x86_64", "arm64"], "pmd perf request ru= nning in x86_64 or arm64") self.max_traffic_burst =3D self.get_max_traffic_burst() self.dut.send_expect("sed -i -e 's/#define MAX_TRAFFIC_BURST = %s/#define MAX_TRAFFIC_BURST 32/' app/test/test_pmd_pe= rf.c" % self.max_traffic_burst, "# ", 30) + self.tmp_path =3D '/tmp/test_pmd_perf.c' + self.dut.send_expect("cp app/test/test_pmd_perf.c %s" % self.tmp_p= ath, "# ") def set_up(self): """ @@ -90,14 +92,14 @@ class TestUnitTestsLoopback(TestCase): Run pmd stream control mode burst test case. """ self.dut.send_expect("sed -i -e 's/lpbk_mode =3D 0/lpbk_mode =3D 1= /' app/test/test_pmd_perf.c", "# ", 30) - out =3D self.dut.build_dpdk_apps('app/test') - self.verify("Error" not in out, "Compilation error") + out =3D self.dut.send_expect("make -j %s app/test_sub O=3D%s" % (s= elf.dut.number_of_cores, self.target), "#") + self.verify("Error" not in out, "compilation l3fwd-power error") self.verify("No such" not in out, "Compilation error") self.tester.send_expect("rm -rf ./getPackageByTcpdump.cap", "#") - self.tester.send_expect("tcpdump -i %s -w ./getPackageByTcpdump.ca= p 2> /dev/null& " % self.tester_itf, "#") + self.tester.send_expect("tcpdump -i %s ether[12:2] !=3D '0x88cc' -= w ./getPackageByTcpdump.cap 2> /dev/null& " % self.tester_itf, "#") eal_params =3D self.dut.create_eal_parameters(cores=3Dself.cores) - self.dut.send_expect("./app/test/test %s" % (eal_params), "R.*T.*E= .*>.*>", 60) + self.dut.send_expect("./%s/app/test %s" % (self.target, eal_params= ), "R.*T.*E.*>.*>", 60) out =3D self.dut.send_expect("pmd_perf_autotest", "RTE>>", 120) print(out) self.dut.send_expect("quit", "# ") @@ -113,14 +115,14 @@ class TestUnitTestsLoopback(TestCase): """ self.dut.send_expect("sed -i -e 's/lpbk_mode =3D 1/lpbk_mode =3D 0= /' app/test/test_pmd_perf.c", "# ", 30) self.dut.send_expect("sed -i -e '/check_all_ports_link_status(nb_p= orts, RTE_PORT_ALL);/a\ sleep(6);' app/test/test_pmd_perf.c", "# ", = 30) - out =3D self.dut.build_dpdk_apps('app/test') - self.verify("Error" not in out, "Compilation error") + out =3D self.dut.send_expect("make -j %s app/test_sub O=3D%s" % (s= elf.dut.number_of_cores, self.target), "#") + self.verify("Error" not in out, "compilation l3fwd-power error") self.verify("No such" not in out, "Compilation error") self.tester.send_expect("rm -rf ./getPackageByTcpdump.cap", "#") self.tester.send_expect("tcpdump -i %s -w ./getPackageByTcpdump.ca= p 2> /dev/null& " % self.tester_itf, "#") eal_params =3D self.dut.create_eal_parameters(cores=3Dself.cores) - self.dut.send_expect("./app/test/test %s" % (eal_params), "R.*T.*E= .*>.*>", 60) + self.dut.send_expect("./%s/app/test %s" % (self.target, eal_params= ), "R.*T.*E.*>.*>", 60) self.dut.send_command("pmd_perf_autotest", 30) # There is no packet loopback, so the test is hung. # It needs to kill the process manually. @@ -133,16 +135,16 @@ class TestUnitTestsLoopback(TestCase): """ Run after each test case. """ + self.dut.send_expect("cp %s app/test/test_pmd_perf.c" % self.tmp_p= ath, "# ") self.dut.kill_all() def tear_down_all(self): """ Run after each test suite. """ - self.dut.send_expect("sed -i -e 's/lpbk_mode =3D 0/lpbk_mode =3D 1= /' app/test/test_pmd_perf.c", "# ", 30) - self.dut.send_expect("sed -i -e '/sleep(6)/d' app/test/test_pmd_pe= rf.c", "# ", 30) + self.dut.send_expect("cp %s app/test/test_pmd_perf.c" % self.tmp_p= ath, "# ") self.dut.send_expect("sed -i -e 's/#define MAX_TRAFFIC_BURST = 32/#define MAX_TRAFFIC_BURST %s/' app/test/test_pmd_pe= rf.c" % self.max_traffic_burst, "# ", 30) - out =3D self.dut.build_dpdk_apps('app/test') - self.verify("Error" not in out, "Compilation error") + out =3D self.dut.send_expect("make -j %s app/test_sub O=3D%s" % (s= elf.dut.number_of_cores, self.target), "#") + self.verify("Error" not in out, "compilation l3fwd-power error") self.verify("No such" not in out, "Compilation error") self.dut.kill_all() -- 1.8.3.1 --_000_MWHPR1101MB22540E9E7F0B63909E3FEF3BFBBE0MWHPR1101MB2254_ Content-Type: text/html; charset="iso-2022-jp" Content-Transfer-Encoding: quoted-printable
T= ested-by=1B$B!'=1B(BXiao Qimai <qimaix.xiao@intel.com>


From: Xiao, QimaiX <qima= ix.xiao@intel.com>
Sent: Tuesday, May 12, 2020 1:58 PM
To: dts@dpdk.org <dts@dpdk.org>
Cc: Xiao, QimaiX <qimaix.xiao@intel.com>
Subject: [dts][PATCH V1]unit_tests_loopback: update compile cmd of a= pp/test
 
*. update compile cmd of app/test according to dpd= k's update

Signed-off-by: Xiao Qimai <qimaix.xiao@intel.com>
---
 tests/TestSuite_unit_tests_loopback.py | 24 +++++= ++++++++-----------
 1 file changed, 13 insertions(+), 11 deletions(-)

diff --git a/tests/TestSuite_unit_tests_loopback.py b/tests/TestSuite_unit_= tests_loopback.py
index 68b1f30..c1d37b2 100644
--- a/tests/TestSuite_unit_tests_loopback.py
+++ b/tests/TestSuite_unit_tests_loopback.py
@@ -70,6 +70,8 @@ class TestUnitTestsLoopback(TestCase):
         self.verify(self.arch in [= "x86_64", "arm64"], "pmd perf request running in x= 86_64 or arm64")
         self.max_traffic_burst =3D= self.get_max_traffic_burst()
         self.dut.send_expect("= ;sed -i -e 's/#define MAX_TRAFFIC_BURST      =         %s/#define MAX_TRAFFIC_BURST&nbs= p;             = 32/' app/test/test_pmd_perf.c" % self.max_traffic_burst, "# "= ;, 30)
+        self.tmp_path =3D '/tmp/tes= t_pmd_perf.c'
+        self.dut.send_expect("= cp app/test/test_pmd_perf.c %s" % self.tmp_path, "# ")
 
     def set_up(self):
         """
@@ -90,14 +92,14 @@ class TestUnitTestsLoopback(TestCase):
         Run pmd stream control mod= e burst test case.
         """
         self.dut.send_expect("= ;sed -i -e 's/lpbk_mode =3D 0/lpbk_mode =3D 1/' app/test/test_pmd_perf.c&qu= ot;, "# ", 30)
-        out =3D self.dut.build_dpdk_app= s('app/test')
-        self.verify("Error" n= ot in out, "Compilation error")
+        out =3D self.dut.send_expec= t("make -j %s app/test_sub O=3D%s" % (self.dut.number_of_cores, s= elf.target), "#")
+        self.verify("Error&quo= t; not in out, "compilation l3fwd-power error")
         self.verify("No such&= quot; not in out, "Compilation error")
 
         self.tester.send_expect(&q= uot;rm -rf ./getPackageByTcpdump.cap", "#")
-        self.tester.send_expect("t= cpdump -i %s -w ./getPackageByTcpdump.cap 2> /dev/null& " % sel= f.tester_itf, "#")
+        self.tester.send_expect(&qu= ot;tcpdump -i %s ether[12:2] !=3D '0x88cc' -w ./getPackageByTcpdump.cap 2&g= t; /dev/null& " % self.tester_itf, "#")
         eal_params =3D self.dut.cr= eate_eal_parameters(cores=3Dself.cores)
-        self.dut.send_expect("./ap= p/test/test %s" % (eal_params), "R.*T.*E.*>.*>", 60) +        self.dut.send_expect("= ./%s/app/test %s" % (self.target, eal_params), "R.*T.*E.*>.*&g= t;", 60)
         out =3D self.dut.send_expe= ct("pmd_perf_autotest", "RTE>>", 120)
         print(out)
         self.dut.send_expect("= ;quit", "# ")
@@ -113,14 +115,14 @@ class TestUnitTestsLoopback(TestCase):
         """
         self.dut.send_expect("= ;sed -i -e 's/lpbk_mode =3D 1/lpbk_mode =3D 0/' app/test/test_pmd_perf.c&qu= ot;, "# ", 30)
         self.dut.send_expect("= ;sed -i -e '/check_all_ports_link_status(nb_ports, RTE_PORT_ALL);/a\ &= nbsp;      sleep(6);' app/test/test_pmd_perf.c&quo= t;, "# ", 30)
-        out =3D self.dut.build_dpdk_app= s('app/test')
-        self.verify("Error" n= ot in out, "Compilation error")
+        out =3D self.dut.send_expec= t("make -j %s app/test_sub O=3D%s" % (self.dut.number_of_cores, s= elf.target), "#")
+        self.verify("Error&quo= t; not in out, "compilation l3fwd-power error")
         self.verify("No such&= quot; not in out, "Compilation error")
 
         self.tester.send_expect(&q= uot;rm -rf ./getPackageByTcpdump.cap", "#")
         self.tester.send_expect(&q= uot;tcpdump -i %s -w ./getPackageByTcpdump.cap 2> /dev/null& " = % self.tester_itf, "#")
         eal_params =3D self.dut.cr= eate_eal_parameters(cores=3Dself.cores)
-        self.dut.send_expect("./ap= p/test/test %s" % (eal_params), "R.*T.*E.*>.*>", 60) +        self.dut.send_expect("= ./%s/app/test %s" % (self.target, eal_params), "R.*T.*E.*>.*&g= t;", 60)
         self.dut.send_command(&quo= t;pmd_perf_autotest", 30)
         # There is no packet loopb= ack, so the test is hung.
         # It needs to kill the pro= cess manually.
@@ -133,16 +135,16 @@ class TestUnitTestsLoopback(TestCase):
         """
         Run after each test case.<= br>          """
+        self.dut.send_expect("= cp %s app/test/test_pmd_perf.c" % self.tmp_path, "# ")
         self.dut.kill_all()
 
     def tear_down_all(self):
         """
         Run after each test suite.=
         """
-        self.dut.send_expect("sed = -i -e 's/lpbk_mode =3D 0/lpbk_mode =3D 1/' app/test/test_pmd_perf.c", = "# ", 30)
-        self.dut.send_expect("sed = -i -e '/sleep(6)/d' app/test/test_pmd_perf.c", "# ", 30)
+        self.dut.send_expect("= cp %s app/test/test_pmd_perf.c" % self.tmp_path, "# ")
         self.dut.send_expect("= ;sed -i -e 's/#define MAX_TRAFFIC_BURST      =         32/#define MAX_TRAFFIC_BURST&nbs= p;             = %s/' app/test/test_pmd_perf.c" % self.max_traffic_burst, "# "= ;, 30)
-        out =3D self.dut.build_dpdk_app= s('app/test')
-        self.verify("Error" n= ot in out, "Compilation error")
+        out =3D self.dut.send_expec= t("make -j %s app/test_sub O=3D%s" % (self.dut.number_of_cores, s= elf.target), "#")
+        self.verify("Error&quo= t; not in out, "compilation l3fwd-power error")
         self.verify("No such&= quot; not in out, "Compilation error")
         self.dut.kill_all()
--
1.8.3.1

--_000_MWHPR1101MB22540E9E7F0B63909E3FEF3BFBBE0MWHPR1101MB2254_-- --_004_MWHPR1101MB22540E9E7F0B63909E3FEF3BFBBE0MWHPR1101MB2254_ Content-Type: application/octet-stream; name="TestUnitTestsLoopback.log" Content-Description: TestUnitTestsLoopback.log Content-Disposition: attachment; filename="TestUnitTestsLoopback.log"; size=37138; creation-date="Tue, 12 May 2020 06:11:48 GMT"; modification-date="Tue, 12 May 2020 06:11:50 GMT" Content-Transfer-Encoding: base64 MTIvMDUvMjAyMCAxMTo0MDowNSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkdHM6IApURVNU IFNVSVRFIDogVGVzdFVuaXRUZXN0c0xvb3BiYWNrCjEyLzA1LzIwMjAgMTE6NDA6MDUgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZHRzOiBOSUMgOiAgICAgICAgZm9ydHZpbGxlX3NwaXJpdAox Mi8wNS8yMDIwIDExOjQwOjA2ICAgICAgICAgICAgICBkdXQuMTAuMjQwLjE4My42MTogCjEyLzA1 LzIwMjAgMTE6NDA6MDYgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVyOiAKMTIvMDUvMjAy MCAxMTo0MDowNiAgICAgICAgICAgICAgZHV0LjEwLjI0MC4xODMuNjE6IGNhdCBhcHAvdGVzdC90 ZXN0X3BtZF9wZXJmLmMKMTIvMDUvMjAyMCAxMTo0MDowNiAgICAgICAgICAgICAgZHV0LjEwLjI0 MC4xODMuNjE6IC8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UNCiAqIENv cHlyaWdodChjKSAyMDEwLTIwMTQgSW50ZWwgQ29ycG9yYXRpb24NCiAqLw0KDQoNCiNpbmNsdWRl IDxzdGRpby5oPg0KI2luY2x1ZGUgPGludHR5cGVzLmg+DQojaW5jbHVkZSA8c2lnbmFsLmg+DQoj aW5jbHVkZSA8dW5pc3RkLmg+DQojaW5jbHVkZSA8cnRlX2N5Y2xlcy5oPg0KI2luY2x1ZGUgPHJ0 ZV9ldGhkZXYuaD4NCiNpbmNsdWRlIDxydGVfYnl0ZW9yZGVyLmg+DQojaW5jbHVkZSA8cnRlX2F0 b21pYy5oPg0KI2luY2x1ZGUgPHJ0ZV9tYWxsb2MuaD4NCiNpbmNsdWRlICJwYWNrZXRfYnVyc3Rf Z2VuZXJhdG9yLmgiDQojaW5jbHVkZSAidGVzdC5oIg0KDQojZGVmaW5lIE5CX0VUSFBPUlRTX1VT RUQgICAgICAgICAgICAgICAgKDEpDQojZGVmaW5lIE5CX1NPQ0tFVFMgICAgICAgICAgICAgICAg ICAgICAgKDIpDQojZGVmaW5lIE1FTVBPT0xfQ0FDSEVfU0laRSAyNTANCiNkZWZpbmUgTUFYX1BL VF9CVVJTVCAgICAgICAgICAgICAgICAgICAoMzIpDQojZGVmaW5lIFJURV9URVNUX1JYX0RFU0Nf REVGQVVMVCAgICAgICAgKDEwMjQpDQojZGVmaW5lIFJURV9URVNUX1RYX0RFU0NfREVGQVVMVCAg ICAgICAgKDEwMjQpDQojZGVmaW5lIFJURV9QT1JUX0FMTCAgICAgICAgICAgICh+KHVpbnQxNl90 KTB4MCkNCg0KLyogaG93IGxvbmcgdGVzdCB3b3VsZCB0YWtlIGF0IGZ1bGwgbGluZSByYXRlICov DQojZGVmaW5lIFJURV9URVNUX0RVUkFUSU9OICAgICAgICAgICAgICAgICgyKQ0KDQovKg0KICog UlggYW5kIFRYIFByZWZldGNoLCBIb3N0LCBhbmQgV3JpdGUtYmFjayB0aHJlc2hvbGQgdmFsdWVz IHNob3VsZCBiZQ0KICogY2FyZWZ1bGx5IHNldCBmb3Igb3B0aW1hbCBwZXJmb3JtYW5jZS4gQ29u c3VsdCB0aGUgbmV0d29yaw0KICogY29udHJvbGxlcidzIGRhdGFzaGVldCBhbmQgc3VwcG9ydGlu ZyBEUERLIGRvY3VtZW50YXRpb24gZm9yIGd1aWRhbmNlDQogKiBvbiBob3cgdGhlc2UgcGFyYW1l dGVycyBzaG91bGQgYmUgc2V0Lg0KICovDQojZGVmaW5lIFJYX1BUSFJFU0ggOCAvKio8IERlZmF1 bHQgdmFsdWVzIG9mIFJYIHByZWZldGNoIHRocmVzaG9sZCByZWcuICovDQojZGVmaW5lIFJYX0hU SFJFU0ggOCAvKio8IERlZmF1bHQgdmFsdWVzIG9mIFJYIGhvc3QgdGhyZXNob2xkIHJlZy4gKi8N CiNkZWZpbmUgUlhfV1RIUkVTSCAwIC8qKjwgRGVmYXVsdCB2YWx1ZXMgb2YgUlggd3JpdGUtYmFj ayB0aHJlc2hvbGQgcmVnLiAqLw0KDQovKg0KICogVGhlc2UgZGVmYXVsdCB2YWx1ZXMgYXJlIG9w dGltaXplZCBmb3IgdXNlIHdpdGggdGhlIEludGVsKFIpIDgyNTk5IDEwIEdiRQ0KICogQ29udHJv bGxlciBhbmQgdGhlIERQREsgaXhnYmUgUE1ELiBDb25zaWRlciB1c2luZyBvdGhlciB2YWx1ZXMg Zm9yIG90aGVyDQogKiBuZXR3b3JrIGNvbnRyb2xsZXJzIGFuZC9vciBuZXR3b3JrIGRyaXZlcnMu DQogKi8NCiNkZWZpbmUgVFhfUFRIUkVTSCAzMiAvKio8IERlZmF1bHQgdmFsdWVzIG9mIFRYIHBy ZWZldGNoIHRocmVzaG9sZCByZWcuICovDQojZGVmaW5lIFRYX0hUSFJFU0ggMCAgLyoqPCBEZWZh dWx0IHZhbHVlcyBvZiBUWCBob3N0IHRocmVzaG9sZCByZWcuICovDQojZGVmaW5lIFRYX1dUSFJF U0ggMCAgLyoqPCBEZWZhdWx0IHZhbHVlcyBvZiBUWCB3cml0ZS1iYWNrIHRocmVzaG9sZCByZWcu ICovDQoNCiNkZWZpbmUgTUFYX1RSQUZGSUNfQlVSU1QgICAgICAgICAgICAgIDIwNDgNCg0KI2Rl ZmluZSBOQl9NQlVGIFJURV9NQVgoCQkJCQkJXA0KCQkodW5zaWduZWQpKG5iX3BvcnRzKm5iX3J4 X3F1ZXVlKm5iX3J4ZCArCQlcDQoJCQkgICBuYl9wb3J0cypuYl9sY29yZXMqTUFYX1BLVF9CVVJT VCArCQlcDQoJCQkgICBuYl9wb3J0cypuYl90eF9xdWV1ZSpuYl90eGQgKwkJXA0KCQkJICAgbmJf bGNvcmVzKk1FTVBPT0xfQ0FDSEVfU0laRSArCQlcDQoJCQkgICBuYl9wb3J0cypNQVhfVFJBRkZJ Q19CVVJTVCksCQkJXA0KCQkJKHVuc2lnbmVkKTgxOTIpDQoNCg0Kc3RhdGljIHN0cnVjdCBydGVf bWVtcG9vbCAqbWJ1ZnBvb2xbTkJfU09DS0VUU107DQovKiBldGhlcm5ldCBhZGRyZXNzZXMgb2Yg cG9ydHMgKi8NCnN0YXRpYyBzdHJ1Y3QgcnRlX2V0aGVyX2FkZHIgcG9ydHNfZXRoX2FkZHJbUlRF X01BWF9FVEhQT1JUU107DQoNCnN0YXRpYyBzdHJ1Y3QgcnRlX2V0aF9jb25mIHBvcnRfY29uZiA9 IHsNCgkucnhtb2RlID0gew0KCQkubXFfbW9kZSA9IEVUSF9NUV9SWF9OT05FLA0KCQkubWF4X3J4 X3BrdF9sZW4gPSBSVEVfRVRIRVJfTUFYX0xFTiwNCgkJLnNwbGl0X2hkcl9zaXplID0gMCwNCgl9 LA0KCS50eG1vZGUgPSB7DQoJCS5tcV9tb2RlID0gRVRIX01RX1RYX05PTkUsDQoJfSwNCgkubHBi a19tb2RlID0gMSwgIC8qIGVuYWJsZSBsb29wYmFjayAqLw0KfTsNCg0Kc3RhdGljIHN0cnVjdCBy dGVfZXRoX3J4Y29uZiByeF9jb25mID0gew0KCS5yeF90aHJlc2ggPSB7DQoJCS5wdGhyZXNoID0g UlhfUFRIUkVTSCwNCgkJLmh0aHJlc2ggPSBSWF9IVEhSRVNILA0KCQkud3RocmVzaCA9IFJYX1dU SFJFU0gsDQoJfSwNCgkucnhfZnJlZV90aHJlc2ggPSAzMiwNCn07DQoNCnN0YXRpYyBzdHJ1Y3Qg cnRlX2V0aF90eGNvbmYgdHhfY29uZiA9IHsNCgkudHhfdGhyZXNoID0gew0KCQkucHRocmVzaCA9 IFRYX1BUSFJFU0gsDQoJCS5odGhyZXNoID0gVFhfSFRIUkVTSCwNCgkJLnd0aHJlc2ggPSBUWF9X VEhSRVNILA0KCX0sDQoJLnR4X2ZyZWVfdGhyZXNoID0gMzIsIC8qIFVzZSBQTUQgZGVmYXVsdCB2 YWx1ZXMgKi8NCgkudHhfcnNfdGhyZXNoID0gMzIsIC8qIFVzZSBQTUQgZGVmYXVsdCB2YWx1ZXMg Ki8NCn07DQoNCmVudW0gew0KCUxDT1JFX0lOVkFMSUQgPSAwLA0KCUxDT1JFX0FWQUlMLA0KCUxD T1JFX1VTRUQsDQp9Ow0KDQpzdHJ1Y3QgbGNvcmVfY29uZiB7DQoJdWludDhfdCBzdGF0dXM7DQoJ dWludDhfdCBzb2NrZXRpZDsNCgl1aW50MTZfdCBuYl9wb3J0czsNCgl1aW50MTZfdCBwb3J0bGlz dFtSVEVfTUFYX0VUSFBPUlRTXTsNCn0gX19ydGVfY2FjaGVfYWxpZ25lZDsNCg0Kc3RydWN0IGxj b3JlX2NvbmYgbGNvcmVfY29uZltSVEVfTUFYX0xDT1JFXTsNCg0Kc3RhdGljIHVpbnQ2NF90IGxp bmtfbWJwczsNCg0KZW51bSB7DQoJU0NfQ09OVElOVU9VUyA9IDAsDQoJU0NfQlVSU1RfUE9MTF9G SVJTVCwNCglTQ19CVVJTVF9YTUlUX0ZJUlNULA0KfTsNCg0Kc3RhdGljIHVpbnQzMl90IHNjX2Zs YWc7DQoNCi8qIENoZWNrIHRoZSBsaW5rIHN0YXR1cyBvZiBhbGwgcG9ydHMgaW4gdXAgdG8gM3Ms IGFuZCBwcmludCB0aGVtIGZpbmFsbHkgKi8NCnN0YXRpYyB2b2lkDQpjaGVja19hbGxfcG9ydHNf bGlua19zdGF0dXModWludDE2X3QgcG9ydF9udW0sIHVpbnQzMl90IHBvcnRfbWFzaykNCnsNCiNk ZWZpbmUgQ0hFQ0tfSU5URVJWQUwgMTAwIC8qIDEwMG1zICovDQojZGVmaW5lIE1BWF9DSEVDS19U SU1FIDMwIC8qIDNzICgzMCAqIDEwMG1zKSBpbiB0b3RhbCAqLw0KCXVpbnQxNl90IHBvcnRpZDsN Cgl1aW50OF90IGNvdW50LCBhbGxfcG9ydHNfdXAsIHByaW50X2ZsYWcgPSAwOw0KCXN0cnVjdCBy dGVfZXRoX2xpbmsgbGluazsNCglpbnQgcmV0Ow0KDQoJcHJpbnRmKCJDaGVja2luZyBsaW5rIHN0 YXR1c2VzLi4uXG4iKTsNCglmZmx1c2goc3Rkb3V0KTsNCglmb3IgKGNvdW50ID0gMDsgY291bnQg PD0gTUFYX0NIRUNLX1RJTUU7IGNvdW50KyspIHsNCgkJYWxsX3BvcnRzX3VwID0gMTsNCgkJZm9y IChwb3J0aWQgPSAwOyBwb3J0aWQgPCBwb3J0X251bTsgcG9ydGlkKyspIHsNCgkJCWlmICgocG9y dF9tYXNrICYgKDEgPDwgcG9ydGlkKSkgPT0gMCkNCgkJCQljb250aW51ZTsNCgkJCW1lbXNldCgm bGluaywgMCwgc2l6ZW9mKGxpbmspKTsNCgkJCXJldCA9IHJ0ZV9ldGhfbGlua19nZXRfbm93YWl0 KHBvcnRpZCwgJmxpbmspOw0KCQkJaWYgKHJldCA8IDApIHsNCgkJCQlhbGxfcG9ydHNfdXAgPSAw Ow0KCQkJCWlmIChwcmludF9mbGFnID09IDEpDQoJCQkJCXByaW50ZigiUG9ydCAldSBsaW5rIGdl dCBmYWlsZWQ6ICVzXG4iLA0KCQkJCQkJcG9ydGlkLCBydGVfc3RyZXJyb3IoLXJldCkpOw0KCQkJ CWNvbnRpbnVlOw0KCQkJfQ0KDQoJCQkvKiBwcmludCBsaW5rIHN0YXR1cyBpZiBmbGFnIHNldCAq Lw0KCQkJaWYgKHByaW50X2ZsYWcgPT0gMSkgew0KCQkJCWlmIChsaW5rLmxpbmtfc3RhdHVzKSB7 DQoJCQkJCXByaW50ZigNCgkJCQkJIlBvcnQlZCBMaW5rIFVwLiBTcGVlZCAldSBNYnBzIC0gJXNc biIsDQoJCQkJCQlwb3J0aWQsIGxpbmsubGlua19zcGVlZCwNCgkJCQkobGluay5saW5rX2R1cGxl eCA9PSBFVEhfTElOS19GVUxMX0RVUExFWCkgPw0KCQkJCQkoImZ1bGwtZHVwbGV4IikgOiAoImhh bGYtZHVwbGV4IikpOw0KCQkJCQlpZiAobGlua19tYnBzID09IDApDQoJCQkJCQlsaW5rX21icHMg PSBsaW5rLmxpbmtfc3BlZWQ7DQoJCQkJfSBlbHNlDQoJCQkJCXByaW50ZigiUG9ydCAlZCBMaW5r IERvd25cbiIsIHBvcnRpZCk7DQoJCQkJY29udGludWU7DQoJCQl9DQoJCQkvKiBjbGVhciBhbGxf cG9ydHNfdXAgZmxhZyBpZiBhbnkgbGluayBkb3duICovDQoJCQlpZiAobGluay5saW5rX3N0YXR1 cyA9PSBFVEhfTElOS19ET1dOKSB7DQoJCQkJYWxsX3BvcnRzX3VwID0gMDsNCgkJCQlicmVhazsN CgkJCX0NCgkJfQ0KCQkvKiBhZnRlciBmaW5hbGx5IHByaW50aW5nIGFsbCBsaW5rIHN0YXR1cywg Z2V0IG91dCAqLw0KCQlpZiAocHJpbnRfZmxhZyA9PSAxKQ0KCQkJYnJlYWs7DQoNCgkJaWYgKGFs bF9wb3J0c191cCA9PSAwKSB7DQoJCQlmZmx1c2goc3Rkb3V0KTsNCgkJCXJ0ZV9kZWxheV9tcyhD SEVDS19JTlRFUlZBTCk7DQoJCX0NCg0KCQkvKiBzZXQgdGhlIHByaW50X2ZsYWcgaWYgYWxsIHBv cnRzIHVwIG9yIHRpbWVvdXQgKi8NCgkJaWYgKGFsbF9wb3J0c191cCA9PSAxIHx8IGNvdW50ID09 IChNQVhfQ0hFQ0tfVElNRSAtIDEpKQ0KCQkJcHJpbnRfZmxhZyA9IDE7DQoJfQ0KfQ0KDQpzdGF0 aWMgdm9pZA0KcHJpbnRfZXRoYWRkcihjb25zdCBjaGFyICpuYW1lLCBjb25zdCBzdHJ1Y3QgcnRl X2V0aGVyX2FkZHIgKmV0aF9hZGRyKQ0Kew0KCWNoYXIgYnVmW1JURV9FVEhFUl9BRERSX0ZNVF9T SVpFXTsNCglydGVfZXRoZXJfZm9ybWF0X2FkZHIoYnVmLCBSVEVfRVRIRVJfQUREUl9GTVRfU0la RSwgZXRoX2FkZHIpOw0KCXByaW50ZigiJXMlcyIsIG5hbWUsIGJ1Zik7DQp9DQoNCnN0YXRpYyBp bnQNCmluaXRfdHJhZmZpYyhzdHJ1Y3QgcnRlX21lbXBvb2wgKm1wLA0KCSAgICAgc3RydWN0IHJ0 ZV9tYnVmICoqcGt0c19idXJzdCwgdWludDMyX3QgYnVyc3Rfc2l6ZSkNCnsNCglzdHJ1Y3QgcnRl X2V0aGVyX2hkciBwa3RfZXRoX2hkcjsNCglzdHJ1Y3QgcnRlX2lwdjRfaGRyIHBrdF9pcHY0X2hk cjsNCglzdHJ1Y3QgcnRlX3VkcF9oZHIgcGt0X3VkcF9oZHI7DQoJdWludDMyX3QgcGt0bGVuOw0K CXN0YXRpYyB1aW50OF90IHNyY19tYWNbXSA9IHsgMHgwMCwgMHhGRiwgMHhBQSwgMHhGRiwgMHhB QSwgMHhGRiB9Ow0KCXN0YXRpYyB1aW50OF90IGRzdF9tYWNbXSA9IHsgMHgwMCwgMHhBQSwgMHhG RiwgMHhBQSwgMHhGRiwgMHhBQSB9Ow0KDQoNCglpbml0aWFsaXplX2V0aF9oZWFkZXIoJnBrdF9l dGhfaGRyLA0KCQkoc3RydWN0IHJ0ZV9ldGhlcl9hZGRyICopc3JjX21hYywNCgkJKHN0cnVjdCBy dGVfZXRoZXJfYWRkciAqKWRzdF9tYWMsIFJURV9FVEhFUl9UWVBFX0lQVjQsIDAsIDApOw0KDQoJ cGt0bGVuID0gaW5pdGlhbGl6ZV9pcHY0X2hlYWRlcigmcGt0X2lwdjRfaGRyLA0KCQkJCQlJUFY0 X0FERFIoMTAsIDAsIDAsIDEpLA0KCQkJCQlJUFY0X0FERFIoMTAsIDAsIDAsIDIpLCAyNik7DQoJ cHJpbnRmKCJJUHY0IHBrdGxlbiAldVxuIiwgcGt0bGVuKTsNCg0KCXBrdGxlbiA9IGluaXRpYWxp emVfdWRwX2hlYWRlcigmcGt0X3VkcF9oZHIsIDAsIDAsIDE4KTsNCg0KCXByaW50ZigiVURQIHBr dGxlbiAldVxuIiwgcGt0bGVuKTsNCg0KCXJldHVybiBnZW5lcmF0ZV9wYWNrZXRfYnVyc3QobXAs IHBrdHNfYnVyc3QsICZwa3RfZXRoX2hkciwNCgkJCQkgICAgIDAsICZwa3RfaXB2NF9oZHIsIDEs DQoJCQkJICAgICAmcGt0X3VkcF9oZHIsIGJ1cnN0X3NpemUsDQoJCQkJICAgICBQQUNLRVRfQlVS U1RfR0VOX1BLVF9MRU4sIDEpOw0KfQ0KDQpzdGF0aWMgaW50DQppbml0X2xjb3Jlcyh2b2lkKQ0K ew0KCXVuc2lnbmVkIGxjb3JlX2lkOw0KDQoJZm9yIChsY29yZV9pZCA9IDA7IGxjb3JlX2lkIDwg UlRFX01BWF9MQ09SRTsgbGNvcmVfaWQrKykgew0KCQlsY29yZV9jb25mW2xjb3JlX2lkXS5zb2Nr ZXRpZCA9DQoJCQlydGVfbGNvcmVfdG9fc29ja2V0X2lkKGxjb3JlX2lkKTsNCgkJaWYgKHJ0ZV9s Y29yZV9pc19lbmFibGVkKGxjb3JlX2lkKSA9PSAwKSB7DQoJCQlsY29yZV9jb25mW2xjb3JlX2lk XS5zdGF0dXMgPSBMQ09SRV9JTlZBTElEOw0KCQkJY29udGludWU7DQoJCX0gZWxzZQ0KCQkJbGNv cmVfY29uZltsY29yZV9pZF0uc3RhdHVzID0gTENPUkVfQVZBSUw7DQoJfQ0KCXJldHVybiAwOw0K fQ0KDQpzdGF0aWMgaW50DQppbml0X21idWZwb29sKHVuc2lnbmVkIG5iX21idWYpDQp7DQoJaW50 IHNvY2tldGlkOw0KCXVuc2lnbmVkIGxjb3JlX2lkOw0KCWNoYXIgc1s2NF07DQoNCglmb3IgKGxj b3JlX2lkID0gMDsgbGNvcmVfaWQgPCBSVEVfTUFYX0xDT1JFOyBsY29yZV9pZCsrKSB7DQoJCWlm IChydGVfbGNvcmVfaXNfZW5hYmxlZChsY29yZV9pZCkgPT0gMCkNCgkJCWNvbnRpbnVlOw0KDQoJ CXNvY2tldGlkID0gcnRlX2xjb3JlX3RvX3NvY2tldF9pZChsY29yZV9pZCk7DQoJCWlmIChzb2Nr ZXRpZCA+PSBOQl9TT0NLRVRTKSB7DQoJCQlydGVfZXhpdChFWElUX0ZBSUxVUkUsDQoJCQkJIlNv Y2tldCAlZCBvZiBsY29yZSAldSBpcyBvdXQgb2YgcmFuZ2UgJWRcbiIsDQoJCQkJc29ja2V0aWQs IGxjb3JlX2lkLCBOQl9TT0NLRVRTKTsNCgkJfQ0KCQlpZiAobWJ1ZnBvb2xbc29ja2V0aWRdID09 IE5VTEwpIHsNCgkJCXNucHJpbnRmKHMsIHNpemVvZihzKSwgIm1idWZfcG9vbF8lZCIsIHNvY2tl dGlkKTsNCgkJCW1idWZwb29sW3NvY2tldGlkXSA9DQoJCQkJcnRlX3BrdG1idWZfcG9vbF9jcmVh dGUocywgbmJfbWJ1ZiwNCgkJCQkJTUVNUE9PTF9DQUNIRV9TSVpFLCAwLA0KCQkJCQlSVEVfTUJV Rl9ERUZBVUxUX0JVRl9TSVpFLCBzb2NrZXRpZCk7DQoJCQlpZiAobWJ1ZnBvb2xbc29ja2V0aWRd ID09IE5VTEwpDQoJCQkJcnRlX2V4aXQoRVhJVF9GQUlMVVJFLA0KCQkJCQkiQ2Fubm90IGluaXQg bWJ1ZiBwb29sIG9uIHNvY2tldCAlZFxuIiwNCgkJCQkJc29ja2V0aWQpOw0KCQkJZWxzZQ0KCQkJ CXByaW50ZigiQWxsb2NhdGVkIG1idWYgcG9vbCBvbiBzb2NrZXQgJWRcbiIsDQoJCQkJCXNvY2tl dGlkKTsNCgkJfQ0KCX0NCglyZXR1cm4gMDsNCn0NCg0Kc3RhdGljIHVpbnQxNl90DQphbGxvY19s Y29yZSh1aW50MTZfdCBzb2NrZXRpZCkNCnsNCgl1bnNpZ25lZCBsY29yZV9pZDsNCg0KCWZvciAo bGNvcmVfaWQgPSAwOyBsY29yZV9pZCA8IFJURV9NQVhfTENPUkU7IGxjb3JlX2lkKyspIHsNCgkJ aWYgKExDT1JFX0FWQUlMICE9IGxjb3JlX2NvbmZbbGNvcmVfaWRdLnN0YXR1cyB8fA0KCQkgICAg bGNvcmVfY29uZltsY29yZV9pZF0uc29ja2V0aWQgIT0gc29ja2V0aWQgfHwNCgkJICAgIGxjb3Jl X2lkID09IHJ0ZV9nZXRfbWFzdGVyX2xjb3JlKCkpDQoJCQljb250aW51ZTsNCgkJbGNvcmVfY29u ZltsY29yZV9pZF0uc3RhdHVzID0gTENPUkVfVVNFRDsNCgkJbGNvcmVfY29uZltsY29yZV9pZF0u bmJfcG9ydHMgPSAwOw0KCQlyZXR1cm4gbGNvcmVfaWQ7DQoJfQ0KDQoJcmV0dXJuICh1aW50MTZf dCktMTsNCn0NCg0Kc3RhdGljIHZvbGF0aWxlIHVpbnQ2NF90IHN0b3A7DQpzdGF0aWMgdWludDY0 X3QgY291bnQ7DQpzdGF0aWMgdWludDY0X3QgZHJvcDsNCnN0YXRpYyB1aW50NjRfdCBpZGxlOw0K DQpzdGF0aWMgdm9pZA0KcmVzZXRfY291bnQodm9pZCkNCnsNCgljb3VudCA9IDA7DQoJZHJvcCA9 IDA7DQoJaWRsZSA9IDA7DQp9DQoNCnN0YXRpYyB2b2lkDQpzdGF0c19kaXNwbGF5KHVpbnQxNl90 IHBvcnRfaWQpDQp7DQoJc3RydWN0IHJ0ZV9ldGhfc3RhdHMgc3RhdHM7DQoJcnRlX2V0aF9zdGF0 c19nZXQocG9ydF9pZCwgJnN0YXRzKTsNCg0KCXByaW50ZigiICBSWC1wYWNrZXRzOiAlLTEwIlBS SXU2NCIgUlgtbWlzc2VkOiAlLTEwIlBSSXU2NCIgUlgtYnl0ZXM6ICAiDQoJICAgICAgICIlLSJQ Ukl1NjQiXG4iLA0KCSAgICAgICBzdGF0cy5pcGFja2V0cywgc3RhdHMuaW1pc3NlZCwgc3RhdHMu aWJ5dGVzKTsNCglwcmludGYoIiAgUlgtZXJyb3JzOiAlLTEwIlBSSXU2NCIgUlgtbm9tYnVmOiAg JS0xMCJQUkl1NjQiXG4iLA0KCSAgICAgICBzdGF0cy5pZXJyb3JzLCBzdGF0cy5yeF9ub21idWYp Ow0KCXByaW50ZigiICBUWC1wYWNrZXRzOiAlLTEwIlBSSXU2NCIgVFgtZXJyb3JzOiAlLTEwIlBS SXU2NCIgVFgtYnl0ZXM6ICAiDQoJICAgICAgICIlLSJQUkl1NjQiXG4iLA0KCSAgICAgICBzdGF0 cy5vcGFja2V0cywgc3RhdHMub2Vycm9ycywgc3RhdHMub2J5dGVzKTsNCn0NCg0Kc3RhdGljIHZv aWQNCnNpZ25hbF9oYW5kbGVyKGludCBzaWdudW0pDQp7DQoJLyogIFVTUjEgc2lnbmFsLCBzdG9w IHRlc3RpbmcgKi8NCglpZiAoc2lnbnVtID09IFNJR1VTUjEpIHsNCgkJcHJpbnRmKCJGb3JjZSBT dG9wIVxuIik7DQoJCXN0b3AgPSAxOw0KCX0NCg0KCS8qICBVU1IyIHNpZ25hbCwgcHJpbnQgc3Rh dHMgKi8NCglpZiAoc2lnbnVtID09IFNJR1VTUjIpDQoJCXN0YXRzX2Rpc3BsYXkoMCk7DQp9DQoN CnN0cnVjdCBydGVfbWJ1ZiAqKnR4X2J1cnN0Ow0KDQp1aW50NjRfdCAoKmRvX21lYXN1cmUpKHN0 cnVjdCBsY29yZV9jb25mICpjb25mLA0KCQkgICAgICAgc3RydWN0IHJ0ZV9tYnVmICpwa3RzX2J1 cnN0W10sDQoJCSAgICAgICB1aW50NjRfdCB0b3RhbF9wa3RzKTsNCg0Kc3RhdGljIHVpbnQ2NF90 DQptZWFzdXJlX3J4dHgoc3RydWN0IGxjb3JlX2NvbmYgKmNvbmYsDQoJICAgICBzdHJ1Y3QgcnRl X21idWYgKnBrdHNfYnVyc3RbXSwNCgkgICAgIHVpbnQ2NF90IHRvdGFsX3BrdHMpDQp7DQoJdW5z aWduZWQgaSwgcG9ydGlkLCBuYl9yeCwgbmJfdHg7DQoJdWludDY0X3QgcHJldl90c2MsIGN1cl90 c2M7DQoNCglwcmV2X3RzYyA9IHJ0ZV9yZHRzYygpOw0KDQoJd2hpbGUgKGxpa2VseSghc3RvcCkp IHsNCgkJZm9yIChpID0gMDsgaSA8IGNvbmYtPm5iX3BvcnRzOyBpKyspIHsNCgkJCXBvcnRpZCA9 IGNvbmYtPnBvcnRsaXN0W2ldOw0KCQkJbmJfcnggPSBydGVfZXRoX3J4X2J1cnN0KHBvcnRpZCwg MCwNCgkJCQkJCSBwa3RzX2J1cnN0LCBNQVhfUEtUX0JVUlNUKTsNCgkJCWlmICh1bmxpa2VseShu Yl9yeCA9PSAwKSkgew0KCQkJCWlkbGUrKzsNCgkJCQljb250aW51ZTsNCgkJCX0NCg0KCQkJY291 bnQgKz0gbmJfcng7DQoJCQluYl90eCA9IHJ0ZV9ldGhfdHhfYnVyc3QocG9ydGlkLCAwLCBwa3Rz X2J1cnN0LCBuYl9yeCk7DQoJCQlpZiAodW5saWtlbHkobmJfdHggPCBuYl9yeCkpIHsNCgkJCQlk cm9wICs9IChuYl9yeCAtIG5iX3R4KTsNCgkJCQlkbyB7DQoJCQkJCXJ0ZV9wa3RtYnVmX2ZyZWUo cGt0c19idXJzdFtuYl90eF0pOw0KCQkJCX0gd2hpbGUgKCsrbmJfdHggPCBuYl9yeCk7DQoJCQl9 DQoJCX0NCgkJaWYgKHVubGlrZWx5KGNvdW50ID49IHRvdGFsX3BrdHMpKQ0KCQkJYnJlYWs7DQoJ fQ0KDQoJY3VyX3RzYyA9IHJ0ZV9yZHRzYygpOw0KDQoJcmV0dXJuIGN1cl90c2MgLSBwcmV2X3Rz YzsNCn0NCg0Kc3RhdGljIHVpbnQ2NF90DQptZWFzdXJlX3J4b25seShzdHJ1Y3QgbGNvcmVfY29u ZiAqY29uZiwNCgkgICAgICAgc3RydWN0IHJ0ZV9tYnVmICpwa3RzX2J1cnN0W10sDQoJICAgICAg IHVpbnQ2NF90IHRvdGFsX3BrdHMpDQp7DQoJdW5zaWduZWQgaSwgcG9ydGlkLCBuYl9yeCwgbmJf dHg7DQoJdWludDY0X3QgZGlmZl90c2MsIGN1cl90c2M7DQoNCglkaWZmX3RzYyA9IDA7DQoJd2hp bGUgKGxpa2VseSghc3RvcCkpIHsNCgkJZm9yIChpID0gMDsgaSA8IGNvbmYtPm5iX3BvcnRzOyBp KyspIHsNCgkJCXBvcnRpZCA9IGNvbmYtPnBvcnRsaXN0W2ldOw0KDQoJCQljdXJfdHNjID0gcnRl X3JkdHNjKCk7DQoJCQluYl9yeCA9IHJ0ZV9ldGhfcnhfYnVyc3QocG9ydGlkLCAwLA0KCQkJCQkJ IHBrdHNfYnVyc3QsIE1BWF9QS1RfQlVSU1QpOw0KCQkJaWYgKHVubGlrZWx5KG5iX3J4ID09IDAp KSB7DQoJCQkJaWRsZSsrOw0KCQkJCWNvbnRpbnVlOw0KCQkJfQ0KCQkJZGlmZl90c2MgKz0gcnRl X3JkdHNjKCkgLSBjdXJfdHNjOw0KDQoJCQljb3VudCArPSBuYl9yeDsNCgkJCW5iX3R4ID0gcnRl X2V0aF90eF9idXJzdChwb3J0aWQsIDAsIHBrdHNfYnVyc3QsIG5iX3J4KTsNCgkJCWlmICh1bmxp a2VseShuYl90eCA8IG5iX3J4KSkgew0KCQkJCWRyb3AgKz0gKG5iX3J4IC0gbmJfdHgpOw0KCQkJ CWRvIHsNCgkJCQkJcnRlX3BrdG1idWZfZnJlZShwa3RzX2J1cnN0W25iX3R4XSk7DQoJCQkJfSB3 aGlsZSAoKytuYl90eCA8IG5iX3J4KTsNCgkJCX0NCgkJfQ0KCQlpZiAodW5saWtlbHkoY291bnQg Pj0gdG90YWxfcGt0cykpDQoJCQlicmVhazsNCgl9DQoNCglyZXR1cm4gZGlmZl90c2M7DQp9DQoN CnN0YXRpYyB1aW50NjRfdA0KbWVhc3VyZV90eG9ubHkoc3RydWN0IGxjb3JlX2NvbmYgKmNvbmYs DQoJICAgICAgIHN0cnVjdCBydGVfbWJ1ZiAqcGt0c19idXJzdFtdLA0KCSAgICAgICB1aW50NjRf dCB0b3RhbF9wa3RzKQ0Kew0KCXVuc2lnbmVkIGksIHBvcnRpZCwgbmJfcngsIG5iX3R4Ow0KCXVp bnQ2NF90IGRpZmZfdHNjLCBjdXJfdHNjOw0KDQoJcHJpbnRmKCJkbyB0eCBtZWFzdXJlXG4iKTsN CglkaWZmX3RzYyA9IDA7DQoJd2hpbGUgKGxpa2VseSghc3RvcCkpIHsNCgkJZm9yIChpID0gMDsg aSA8IGNvbmYtPm5iX3BvcnRzOyBpKyspIHsNCgkJCXBvcnRpZCA9IGNvbmYtPnBvcnRsaXN0W2ld Ow0KCQkJbmJfcnggPSBydGVfZXRoX3J4X2J1cnN0KHBvcnRpZCwgMCwNCgkJCQkJCSBwa3RzX2J1 cnN0LCBNQVhfUEtUX0JVUlNUKTsNCgkJCWlmICh1bmxpa2VseShuYl9yeCA9PSAwKSkgew0KCQkJ CWlkbGUrKzsNCgkJCQljb250aW51ZTsNCgkJCX0NCg0KCQkJY291bnQgKz0gbmJfcng7DQoNCgkJ CWN1cl90c2MgPSBydGVfcmR0c2MoKTsNCgkJCW5iX3R4ID0gcnRlX2V0aF90eF9idXJzdChwb3J0 aWQsIDAsIHBrdHNfYnVyc3QsIG5iX3J4KTsNCgkJCWlmICh1bmxpa2VseShuYl90eCA8IG5iX3J4 KSkgew0KCQkJCWRyb3AgKz0gKG5iX3J4IC0gbmJfdHgpOw0KCQkJCWRvIHsNCgkJCQkJcnRlX3Br dG1idWZfZnJlZShwa3RzX2J1cnN0W25iX3R4XSk7DQoJCQkJfSB3aGlsZSAoKytuYl90eCA8IG5i X3J4KTsNCgkJCX0NCgkJCWRpZmZfdHNjICs9IHJ0ZV9yZHRzYygpIC0gY3VyX3RzYzsNCgkJfQ0K CQlpZiAodW5saWtlbHkoY291bnQgPj0gdG90YWxfcGt0cykpDQoJCQlicmVhazsNCgl9DQoNCgly ZXR1cm4gZGlmZl90c2M7DQp9DQoNCi8qIG1haW4gcHJvY2Vzc2luZyBsb29wICovDQpzdGF0aWMg aW50DQptYWluX2xvb3AoX19ydGVfdW51c2VkIHZvaWQgKmFyZ3MpDQp7DQojZGVmaW5lIFBBQ0tF VF9TSVpFIDY0DQojZGVmaW5lIEZSQU1FX0dBUCAxMg0KI2RlZmluZSBNQUNfUFJFQU1CTEUgOA0K CXN0cnVjdCBydGVfbWJ1ZiAqcGt0c19idXJzdFtNQVhfUEtUX0JVUlNUXTsNCgl1bnNpZ25lZCBs Y29yZV9pZDsNCgl1bnNpZ25lZCBpLCBwb3J0aWQsIG5iX3J4ID0gMCwgbmJfdHggPSAwOw0KCXN0 cnVjdCBsY29yZV9jb25mICpjb25mOw0KCWludCBwa3RfcGVyX3BvcnQ7DQoJdWludDY0X3QgZGlm Zl90c2M7DQoJdWludDY0X3QgcGFja2V0c19wZXJfc2Vjb25kLCB0b3RhbF9wYWNrZXRzOw0KDQoJ bGNvcmVfaWQgPSBydGVfbGNvcmVfaWQoKTsNCgljb25mID0gJmxjb3JlX2NvbmZbbGNvcmVfaWRd Ow0KCWlmIChjb25mLT5zdGF0dXMgIT0gTENPUkVfVVNFRCkNCgkJcmV0dXJuIDA7DQoNCglwa3Rf cGVyX3BvcnQgPSBNQVhfVFJBRkZJQ19CVVJTVDsNCg0KCWludCBpZHggPSAwOw0KCWZvciAoaSA9 IDA7IGkgPCBjb25mLT5uYl9wb3J0czsgaSsrKSB7DQoJCWludCBudW0gPSBwa3RfcGVyX3BvcnQ7 DQoJCXBvcnRpZCA9IGNvbmYtPnBvcnRsaXN0W2ldOw0KCQlwcmludGYoImluamVjdCAlZCBwYWNr ZXQgdG8gcG9ydCAlZFxuIiwgbnVtLCBwb3J0aWQpOw0KCQl3aGlsZSAobnVtKSB7DQoJCQluYl90 eCA9IFJURV9NSU4oTUFYX1BLVF9CVVJTVCwgbnVtKTsNCgkJCW5iX3R4ID0gcnRlX2V0aF90eF9i dXJzdChwb3J0aWQsIDAsDQoJCQkJCQkmdHhfYnVyc3RbaWR4XSwgbmJfdHgpOw0KCQkJbnVtIC09 IG5iX3R4Ow0KCQkJaWR4ICs9IG5iX3R4Ow0KCQl9DQoJfQ0KCXByaW50ZigiVG90YWwgcGFja2V0 cyBpbmplY3QgdG8gcHJpbWUgcG9ydHMgPSAldVxuIiwgaWR4KTsNCg0KCXBhY2tldHNfcGVyX3Nl Y29uZCA9IChsaW5rX21icHMgKiAxMDAwICogMTAwMCkgLw0KCQkoKFBBQ0tFVF9TSVpFICsgRlJB TUVfR0FQICsgTUFDX1BSRUFNQkxFKSAqIENIQVJfQklUKTsNCglwcmludGYoIkVhY2ggcG9ydCB3 aWxsIGRvICUiUFJJdTY0IiBwYWNrZXRzIHBlciBzZWNvbmRcbiIsDQoJICAgICAgIHBhY2tldHNf cGVyX3NlY29uZCk7DQoNCgl0b3RhbF9wYWNrZXRzID0gUlRFX1RFU1RfRFVSQVRJT04gKiBjb25m LT5uYl9wb3J0cyAqIHBhY2tldHNfcGVyX3NlY29uZDsNCglwcmludGYoIlRlc3Qgd2lsbCBzdG9w IGFmdGVyIGF0IGxlYXN0ICUiUFJJdTY0IiBwYWNrZXRzIHJlY2VpdmVkXG4iLA0KCQkrIHRvdGFs X3BhY2tldHMpOw0KDQoJZGlmZl90c2MgPSBkb19tZWFzdXJlKGNvbmYsIHBrdHNfYnVyc3QsIHRv dGFsX3BhY2tldHMpOw0KDQoJZm9yIChpID0gMDsgaSA8IGNvbmYtPm5iX3BvcnRzOyBpKyspIHsN CgkJcG9ydGlkID0gY29uZi0+cG9ydGxpc3RbaV07DQoJCWludCBuYl9mcmVlID0gMDsNCgkJdWlu dDY0X3QgdGltZW91dCA9IDEwMDAwOw0KCQlkbyB7IC8qIGRyeSBvdXQgKi8NCgkJCW5iX3J4ID0g cnRlX2V0aF9yeF9idXJzdChwb3J0aWQsIDAsDQoJCQkJCQkgcGt0c19idXJzdCwgTUFYX1BLVF9C VVJTVCk7DQoJCQluYl90eCA9IDA7DQoJCQl3aGlsZSAobmJfdHggPCBuYl9yeCkNCgkJCQlydGVf cGt0bWJ1Zl9mcmVlKHBrdHNfYnVyc3RbbmJfdHgrK10pOw0KCQkJbmJfZnJlZSArPSBuYl9yeDsN Cg0KCQkJaWYgKHVubGlrZWx5KG5iX3J4ID09IDApKQ0KCQkJCXRpbWVvdXQtLTsNCgkJfSB3aGls ZSAobmJfZnJlZSAhPSBwa3RfcGVyX3BvcnQgJiYgdGltZW91dCAhPSAwKTsNCgkJcHJpbnRmKCJm cmVlICVkIChleHBlY3RlZCAlZCkgbWJ1ZiBsZWZ0IGluIHBvcnQgJXVcbiIsIG5iX2ZyZWUsDQoJ CSAgICAgICBwa3RfcGVyX3BvcnQsIHBvcnRpZCk7DQoJfQ0KDQoJaWYgKGNvdW50ID09IDApDQoJ CXJldHVybiAtMTsNCg0KCXByaW50ZigiJSJQUkl1NjQiIHBhY2tldCwgJSJQUkl1NjQiIGRyb3As ICUiUFJJdTY0IiBpZGxlXG4iLA0KCSAgICAgICBjb3VudCwgZHJvcCwgaWRsZSk7DQoJcHJpbnRm KCJSZXN1bHQ6ICUiUFJJdTY0IiBjeWNsZXMgcGVyIHBhY2tldFxuIiwgZGlmZl90c2MgLyBjb3Vu dCk7DQoNCglyZXR1cm4gMDsNCn0NCg0Kc3RhdGljIHJ0ZV9hdG9taWM2NF90IHN0YXJ0Ow0KDQpz dGF0aWMgaW5saW5lIGludA0KcG9sbF9idXJzdCh2b2lkICphcmdzKQ0Kew0KI2RlZmluZSBNQVhf SURMRSAgICAgICAgICAgKDEwMDAwKQ0KCXVuc2lnbmVkIGxjb3JlX2lkOw0KCXN0cnVjdCBydGVf bWJ1ZiAqKnBrdHNfYnVyc3Q7DQoJdWludDY0X3QgZGlmZl90c2MsIGN1cl90c2M7DQoJdWludDE2 X3QgbmV4dFtSVEVfTUFYX0VUSFBPUlRTXTsNCglzdHJ1Y3QgbGNvcmVfY29uZiAqY29uZjsNCgl1 aW50MzJfdCBwa3RfcGVyX3BvcnQgPSAqKCh1aW50MzJfdCAqKWFyZ3MpOw0KCXVuc2lnbmVkIGks IHBvcnRpZCwgbmJfcnggPSAwOw0KCXVpbnQ2NF90IHRvdGFsOw0KCXVpbnQ2NF90IHRpbWVvdXQg PSBNQVhfSURMRTsNCglpbnQgbnVtW1JURV9NQVhfRVRIUE9SVFNdOw0KDQoJbGNvcmVfaWQgPSBy dGVfbGNvcmVfaWQoKTsNCgljb25mID0gJmxjb3JlX2NvbmZbbGNvcmVfaWRdOw0KCWlmIChjb25m LT5zdGF0dXMgIT0gTENPUkVfVVNFRCkNCgkJcmV0dXJuIDA7DQoNCgl0b3RhbCA9IHBrdF9wZXJf cG9ydCAqIGNvbmYtPm5iX3BvcnRzOw0KCXByaW50Zigic3RhcnQgdG8gcmVjZWl2ZSB0b3RhbCBl eHBlY3QgJSJQUkl1NjQiXG4iLCB0b3RhbCk7DQoNCglwa3RzX2J1cnN0ID0gKHN0cnVjdCBydGVf bWJ1ZiAqKikNCgkJcnRlX2NhbGxvY19zb2NrZXQoInBvbGxfYnVyc3QiLA0KCQkJCSAgdG90YWws IHNpemVvZih2b2lkICopLA0KCQkJCSAgUlRFX0NBQ0hFX0xJTkVfU0laRSwgY29uZi0+c29ja2V0 aWQpOw0KCWlmICghcGt0c19idXJzdCkNCgkJcmV0dXJuIC0xOw0KDQoJZm9yIChpID0gMDsgaSA8 IGNvbmYtPm5iX3BvcnRzOyBpKyspIHsNCgkJcG9ydGlkID0gY29uZi0+cG9ydGxpc3RbaV07DQoJ CW5leHRbcG9ydGlkXSA9IGkgKiBwa3RfcGVyX3BvcnQ7DQoJCW51bVtwb3J0aWRdID0gcGt0X3Bl cl9wb3J0Ow0KCX0NCg0KCXdoaWxlICghcnRlX2F0b21pYzY0X3JlYWQoJnN0YXJ0KSkNCgkJOw0K DQoJY3VyX3RzYyA9IHJ0ZV9yZHRzYygpOw0KCXdoaWxlICh0b3RhbCkgew0KCQlmb3IgKGkgPSAw OyBpIDwgY29uZi0+bmJfcG9ydHM7IGkrKykgew0KCQkJcG9ydGlkID0gY29uZi0+cG9ydGxpc3Rb aV07DQoJCQluYl9yeCA9IHJ0ZV9ldGhfcnhfYnVyc3QocG9ydGlkLCAwLA0KCQkJCQkmcGt0c19i dXJzdFtuZXh0W3BvcnRpZF1dLA0KCQkJCQlSVEVfTUlOKE1BWF9QS1RfQlVSU1QsIG51bVtwb3J0 aWRdKSk7DQoJCQlpZiAodW5saWtlbHkobmJfcnggPT0gMCkpIHsNCgkJCQl0aW1lb3V0LS07DQoJ CQkJaWYgKHVubGlrZWx5KHRpbWVvdXQgPT0gMCkpDQoJCQkJCWdvdG8gdGltZW91dDsNCgkJCQlj b250aW51ZTsNCgkJCX0NCgkJCW5leHRbcG9ydGlkXSArPSBuYl9yeDsNCgkJCW51bVtwb3J0aWRd IC09IG5iX3J4Ow0KCQkJdG90YWwgLT0gbmJfcng7DQoJCX0NCgl9DQp0aW1lb3V0Og0KCWRpZmZf dHNjID0gcnRlX3JkdHNjKCkgLSBjdXJfdHNjOw0KDQoJcHJpbnRmKCIlIlBSSXU2NCIgcGFja2V0 cyBsb3N0LCBJRExFICUiUFJJdTY0IiB0aW1lc1xuIiwNCgkgICAgICAgdG90YWwsIE1BWF9JRExF IC0gdGltZW91dCk7DQoJLyogY2xlYW4gdXAgKi8NCgl0b3RhbCA9IHBrdF9wZXJfcG9ydCAqIGNv bmYtPm5iX3BvcnRzIC0gdG90YWw7DQoJZm9yIChpID0gMDsgaSA8IHRvdGFsOyBpKyspDQoJCXJ0 ZV9wa3RtYnVmX2ZyZWUocGt0c19idXJzdFtpXSk7DQoNCglydGVfZnJlZShwa3RzX2J1cnN0KTsN Cg0KCWlmICh0b3RhbCA+IDApDQoJCXJldHVybiBkaWZmX3RzYyAvIHRvdGFsOw0KCWVsc2UNCgkJ cmV0dXJuIC0xOw0KfQ0KDQpzdGF0aWMgaW50DQpleGVjX2J1cnN0KHVpbnQzMl90IGZsYWdzLCBp bnQgbGNvcmUpDQp7DQoJdW5zaWduZWQgaSwgcG9ydGlkLCBuYl90eCA9IDA7DQoJc3RydWN0IGxj b3JlX2NvbmYgKmNvbmY7DQoJdWludDMyX3QgcGt0X3Blcl9wb3J0Ow0KCWludCBudW0sIGlkeCA9 IDA7DQoJaW50IGRpZmZfdHNjOw0KDQoJY29uZiA9ICZsY29yZV9jb25mW2xjb3JlXTsNCg0KCXBr dF9wZXJfcG9ydCA9IE1BWF9UUkFGRklDX0JVUlNUOw0KCW51bSA9IHBrdF9wZXJfcG9ydCAqIGNv bmYtPm5iX3BvcnRzOw0KDQoJcnRlX2F0b21pYzY0X2luaXQoJnN0YXJ0KTsNCg0KCS8qIHN0YXJ0 IHBvbGxpbmcgdGhyZWFkLCBidXQgbm90IGFjdHVhbGx5IHBvbGwgeWV0ICovDQoJcnRlX2VhbF9y ZW1vdGVfbGF1bmNoKHBvbGxfYnVyc3QsDQoJCQkgICAgICAodm9pZCAqKSZwa3RfcGVyX3BvcnQs IGxjb3JlKTsNCg0KCS8qIE9ubHkgd2hlbiBwb2xsaW5nIGZpcnN0ICovDQoJaWYgKGZsYWdzID09 IFNDX0JVUlNUX1BPTExfRklSU1QpDQoJCXJ0ZV9hdG9taWM2NF9zZXQoJnN0YXJ0LCAxKTsNCg0K CS8qIHN0YXJ0IHhtaXQgKi8NCgl3aGlsZSAobnVtKSB7DQoJCW5iX3R4ID0gUlRFX01JTihNQVhf UEtUX0JVUlNULCBudW0pOw0KCQlmb3IgKGkgPSAwOyBpIDwgY29uZi0+bmJfcG9ydHM7IGkrKykg ew0KCQkJcG9ydGlkID0gY29uZi0+cG9ydGxpc3RbaV07DQoJCQluYl90eCA9IHJ0ZV9ldGhfdHhf YnVyc3QocG9ydGlkLCAwLA0KCQkJCQkgJnR4X2J1cnN0W2lkeF0sIG5iX3R4KTsNCgkJCWlkeCAr PSBuYl90eDsNCgkJCW51bSAtPSBuYl90eDsNCgkJfQ0KDQoJfQ0KDQoJc2xlZXAoNSk7DQoNCgkv KiBvbmx5IHdoZW4gcG9sbGluZyBzZWNvbmQgICovDQoJaWYgKGZsYWdzID09IFNDX0JVUlNUX1hN SVRfRklSU1QpDQoJCXJ0ZV9hdG9taWM2NF9zZXQoJnN0YXJ0LCAxKTsNCg0KCS8qIHdhaXQgZm9y IHBvbGxpbmcgZmluaXNoZWQgKi8NCglkaWZmX3RzYyA9IHJ0ZV9lYWxfd2FpdF9sY29yZShsY29y ZSk7DQoJaWYgKGRpZmZfdHNjIDwgMCkgew0KCQlwcmludGYoImV4ZWNfYnVyc3Q6IEZhaWxlZCB0 byBtZWFzdXJlIGN5Y2xlcyBwZXIgcGFja2V0XG4iKTsNCgkJcmV0dXJuIC0xOw0KCX0NCg0KCXBy aW50ZigiUmVzdWx0OiAlZCBjeWNsZXMgcGVyIHBhY2tldFxuIiwgZGlmZl90c2MpOw0KDQoJcmV0 dXJuIDA7DQp9DQoNCnN0YXRpYyBpbnQNCnRlc3RfcG1kX3BlcmYodm9pZCkNCnsNCgl1aW50MTZf dCBuYl9wb3J0cywgbnVtLCBuYl9sY29yZXMsIHNsYXZlX2lkID0gKHVpbnQxNl90KS0xOw0KCXVp bnQxNl90IG5iX3J4ZCA9IE1BWF9UUkFGRklDX0JVUlNUOw0KCXVpbnQxNl90IG5iX3R4ZCA9IE1B WF9UUkFGRklDX0JVUlNUOw0KCXVpbnQxNl90IHBvcnRpZDsNCgl1aW50MTZfdCBuYl9yeF9xdWV1 ZSA9IDEsIG5iX3R4X3F1ZXVlID0gMTsNCglpbnQgc29ja2V0aWQgPSAtMTsNCglpbnQgcmV0Ow0K DQoJcHJpbnRmKCJTdGFydCBQTUQgUlhUWCBjeWNsZXMgY29zdCB0ZXN0LlxuIik7DQoNCglzaWdu YWwoU0lHVVNSMSwgc2lnbmFsX2hhbmRsZXIpOw0KCXNpZ25hbChTSUdVU1IyLCBzaWduYWxfaGFu ZGxlcik7DQoNCgluYl9wb3J0cyA9IHJ0ZV9ldGhfZGV2X2NvdW50X2F2YWlsKCk7DQoJaWYgKG5i X3BvcnRzIDwgTkJfRVRIUE9SVFNfVVNFRCkgew0KCQlwcmludGYoIkF0IGxlYXN0ICV1IHBvcnQo cykgdXNlZCBmb3IgcGVyZi4gdGVzdFxuIiwNCgkJICAgICAgIE5CX0VUSFBPUlRTX1VTRUQpOw0K CQlyZXR1cm4gLTE7DQoJfQ0KDQoJbmJfbGNvcmVzID0gcnRlX2xjb3JlX2NvdW50KCk7DQoNCglt ZW1zZXQobGNvcmVfY29uZiwgMCwgc2l6ZW9mKGxjb3JlX2NvbmYpKTsNCglpbml0X2xjb3Jlcygp Ow0KDQoJaW5pdF9tYnVmcG9vbChOQl9NQlVGKTsNCg0KCWlmIChzY19mbGFnID09IFNDX0NPTlRJ TlVPVVMpIHsNCgkJbmJfcnhkID0gUlRFX1RFU1RfUlhfREVTQ19ERUZBVUxUOw0KCQluYl90eGQg PSBSVEVfVEVTVF9UWF9ERVNDX0RFRkFVTFQ7DQoJfQ0KCXByaW50ZigiQ09ORklHIFJYRD0lZCBU WEQ9JWRcbiIsIG5iX3J4ZCwgbmJfdHhkKTsNCg0KCXJlc2V0X2NvdW50KCk7DQoJbnVtID0gMDsN CglSVEVfRVRIX0ZPUkVBQ0hfREVWKHBvcnRpZCkgew0KCQlpZiAoc29ja2V0aWQgPT0gLTEpIHsN CgkJCXNvY2tldGlkID0gcnRlX2V0aF9kZXZfc29ja2V0X2lkKHBvcnRpZCk7DQoJCQlzbGF2ZV9p ZCA9IGFsbG9jX2xjb3JlKHNvY2tldGlkKTsNCgkJCWlmIChzbGF2ZV9pZCA9PSAodWludDE2X3Qp LTEpIHsNCgkJCQlwcmludGYoIk5vIGF2YWlsIGxjb3JlIHRvIHJ1biB0ZXN0XG4iKTsNCgkJCQly ZXR1cm4gLTE7DQoJCQl9DQoJCQlwcmludGYoIlBlcmZvcm1hbmNlIHRlc3QgcnVucyBvbiBsY29y ZSAldSBzb2NrZXQgJXVcbiIsDQoJCQkgICAgICAgc2xhdmVfaWQsIHNvY2tldGlkKTsNCgkJfQ0K DQoJCWlmIChzb2NrZXRpZCAhPSBydGVfZXRoX2Rldl9zb2NrZXRfaWQocG9ydGlkKSkgew0KCQkJ cHJpbnRmKCJTa2lwIHBvcnQgJWRcbiIsIHBvcnRpZCk7DQoJCQljb250aW51ZTsNCgkJfQ0KDQoJ CS8qIHBvcnQgY29uZmlndXJlICovDQoJCXJldCA9IHJ0ZV9ldGhfZGV2X2NvbmZpZ3VyZShwb3J0 aWQsIG5iX3J4X3F1ZXVlLA0KCQkJCQkgICAgbmJfdHhfcXVldWUsICZwb3J0X2NvbmYpOw0KCQlp ZiAocmV0IDwgMCkNCgkJCXJ0ZV9leGl0KEVYSVRfRkFJTFVSRSwNCgkJCQkiQ2Fubm90IGNvbmZp Z3VyZSBkZXZpY2U6IGVycj0lZCwgcG9ydD0lZFxuIiwNCgkJCQkgcmV0LCBwb3J0aWQpOw0KDQoJ CXJldCA9IHJ0ZV9ldGhfbWFjYWRkcl9nZXQocG9ydGlkLCAmcG9ydHNfZXRoX2FkZHJbcG9ydGlk XSk7DQoJCWlmIChyZXQgPCAwKQ0KCQkJcnRlX2V4aXQoRVhJVF9GQUlMVVJFLA0KCQkJCSJDYW5u b3QgZ2V0IG1hYyBhZGRyZXNzOiBlcnI9JWQsIHBvcnQ9JWRcbiIsDQoJCQkJIHJldCwgcG9ydGlk KTsNCg0KCQlwcmludGYoIlBvcnQgJXUgIiwgcG9ydGlkKTsNCgkJcHJpbnRfZXRoYWRkcigiQWRk cmVzczoiLCAmcG9ydHNfZXRoX2FkZHJbcG9ydGlkXSk7DQoJCXByaW50ZigiXG4iKTsNCg0KCQkv KiB0eCBxdWV1ZSBzZXR1cCAqLw0KCQlyZXQgPSBydGVfZXRoX3R4X3F1ZXVlX3NldHVwKHBvcnRp ZCwgMCwgbmJfdHhkLA0KCQkJCQkgICAgIHNvY2tldGlkLCAmdHhfY29uZik7DQoJCWlmIChyZXQg PCAwKQ0KCQkJcnRlX2V4aXQoRVhJVF9GQUlMVVJFLA0KCQkJCSJydGVfZXRoX3R4X3F1ZXVlX3Nl dHVwOiBlcnI9JWQsICINCgkJCQkicG9ydD0lZFxuIiwgcmV0LCBwb3J0aWQpOw0KDQoJCS8qIHJ4 IHF1ZXVlIHN0ZXVwICovDQoJCXJldCA9IHJ0ZV9ldGhfcnhfcXVldWVfc2V0dXAocG9ydGlkLCAw LCBuYl9yeGQsDQoJCQkJCQlzb2NrZXRpZCwgJnJ4X2NvbmYsDQoJCQkJCQltYnVmcG9vbFtzb2Nr ZXRpZF0pOw0KCQlpZiAocmV0IDwgMCkNCgkJCXJ0ZV9leGl0KEVYSVRfRkFJTFVSRSwgInJ0ZV9l dGhfcnhfcXVldWVfc2V0dXA6IGVycj0lZCwiDQoJCQkJICJwb3J0PSVkXG4iLCByZXQsIHBvcnRp ZCk7DQoNCgkJLyogU3RhcnQgZGV2aWNlICovDQoJCXN0b3AgPSAwOw0KCQlyZXQgPSBydGVfZXRo X2Rldl9zdGFydChwb3J0aWQpOw0KCQlpZiAocmV0IDwgMCkNCgkJCXJ0ZV9leGl0KEVYSVRfRkFJ TFVSRSwNCgkJCQkicnRlX2V0aF9kZXZfc3RhcnQ6IGVycj0lZCwgcG9ydD0lZFxuIiwNCgkJCQly ZXQsIHBvcnRpZCk7DQoNCgkJLyogYWx3YXlzIGVhbmJsZSBwcm9taXNjdW91cyAqLw0KCQlyZXQg PSBydGVfZXRoX3Byb21pc2N1b3VzX2VuYWJsZShwb3J0aWQpOw0KCQlpZiAocmV0ICE9IDApDQoJ CQlydGVfZXhpdChFWElUX0ZBSUxVUkUsDQoJCQkJICJydGVfZXRoX3Byb21pc2N1b3VzX2VuYWJs ZTogZXJyPSVzLCBwb3J0PSVkXG4iLA0KCQkJCSBydGVfc3RyZXJyb3IoLXJldCksIHBvcnRpZCk7 DQoNCgkJbGNvcmVfY29uZltzbGF2ZV9pZF0ucG9ydGxpc3RbbnVtKytdID0gcG9ydGlkOw0KCQls Y29yZV9jb25mW3NsYXZlX2lkXS5uYl9wb3J0cysrOw0KCX0NCgljaGVja19hbGxfcG9ydHNfbGlu a19zdGF0dXMobmJfcG9ydHMsIFJURV9QT1JUX0FMTCk7DQoNCglpZiAodHhfYnVyc3QgPT0gTlVM TCkgew0KCQl0eF9idXJzdCA9IChzdHJ1Y3QgcnRlX21idWYgKiopDQoJCQlydGVfY2FsbG9jX3Nv Y2tldCgidHhfYnVmZiIsDQoJCQkJCSAgTUFYX1RSQUZGSUNfQlVSU1QgKiBuYl9wb3J0cywNCgkJ CQkJICBzaXplb2Yodm9pZCAqKSwNCgkJCQkJICBSVEVfQ0FDSEVfTElORV9TSVpFLCBzb2NrZXRp ZCk7DQoJCWlmICghdHhfYnVyc3QpDQoJCQlyZXR1cm4gLTE7DQoJfQ0KDQoJaW5pdF90cmFmZmlj KG1idWZwb29sW3NvY2tldGlkXSwNCgkJICAgICB0eF9idXJzdCwgTUFYX1RSQUZGSUNfQlVSU1Qg KiBuYl9wb3J0cyk7DQoNCglwcmludGYoIkdlbmVyYXRlICVkIHBhY2tldHMgQHNvY2tldCAlZFxu IiwNCgkgICAgICAgTUFYX1RSQUZGSUNfQlVSU1QgKiBuYl9wb3J0cywgc29ja2V0aWQpOw0KDQoJ aWYgKHNjX2ZsYWcgPT0gU0NfQ09OVElOVU9VUykgew0KCQkvKiBkbyBib3RoIHJ4dHggYnkgZGVm YXVsdCAqLw0KCQlpZiAoTlVMTCA9PSBkb19tZWFzdXJlKQ0KCQkJZG9fbWVhc3VyZSA9IG1lYXN1 cmVfcnh0eDsNCg0KCQlydGVfZWFsX3JlbW90ZV9sYXVuY2gobWFpbl9sb29wLCBOVUxMLCBzbGF2 ZV9pZCk7DQoNCgkJaWYgKHJ0ZV9lYWxfd2FpdF9sY29yZShzbGF2ZV9pZCkgPCAwKQ0KCQkJcmV0 dXJuIC0xOw0KCX0gZWxzZSBpZiAoc2NfZmxhZyA9PSBTQ19CVVJTVF9QT0xMX0ZJUlNUIHx8DQoJ CSAgIHNjX2ZsYWcgPT0gU0NfQlVSU1RfWE1JVF9GSVJTVCkNCgkJaWYgKGV4ZWNfYnVyc3Qoc2Nf ZmxhZywgc2xhdmVfaWQpIDwgMCkNCgkJCXJldHVybiAtMTsNCg0KCS8qIHBvcnQgdGVhciBkb3du ICovDQoJUlRFX0VUSF9GT1JFQUNIX0RFVihwb3J0aWQpIHsNCgkJaWYgKHNvY2tldGlkICE9IHJ0 ZV9ldGhfZGV2X3NvY2tldF9pZChwb3J0aWQpKQ0KCQkJY29udGludWU7DQoNCgkJcnRlX2V0aF9k ZXZfc3RvcChwb3J0aWQpOw0KCX0NCg0KCXJldHVybiAwOw0KfQ0KDQppbnQNCnRlc3Rfc2V0X3J4 dHhfY29uZihjbWRsaW5lX2ZpeGVkX3N0cmluZ190IG1vZGUpDQp7DQoJcHJpbnRmKCJtb2RlIHN3 aXRjaCB0byAlc1xuIiwgbW9kZSk7DQoNCglpZiAoIXN0cmNtcChtb2RlLCAidmVjdG9yIikpIHsN CgkJLyogdmVjdG9yIHJ4LCB0eCAqLw0KCQl0eF9jb25mLnR4X3JzX3RocmVzaCA9IDMyOw0KCQl0 eF9jb25mLnR4X2ZyZWVfdGhyZXNoID0gMzI7DQoJCXJldHVybiAwOw0KCX0gZWxzZSBpZiAoIXN0 cmNtcChtb2RlLCAic2NhbGFyIikpIHsNCgkJLyogYnVsayBhbGxvYyByeCwgZnVsbC1mZWF0dXJl ZCB0eCAqLw0KCQl0eF9jb25mLnR4X3JzX3RocmVzaCA9IDMyOw0KCQl0eF9jb25mLnR4X2ZyZWVf dGhyZXNoID0gMzI7DQoJCXBvcnRfY29uZi5yeG1vZGUub2ZmbG9hZHMgfD0gREVWX1JYX09GRkxP QURfQ0hFQ0tTVU07DQoJCXJldHVybiAwOw0KCX0gZWxzZSBpZiAoIXN0cmNtcChtb2RlLCAiaHli cmlkIikpIHsNCgkJLyogYnVsayBhbGxvYyByeCwgdmVjdG9yIHR4DQoJCSAqIHdoZW4gdmVjIG1h Y3JvIG5vdCBkZWZpbmUsDQoJCSAqIHVzaW5nIHRoZSBzYW1lIHJ4L3R4IGFzIHNjYWxhcg0KCQkg Ki8NCgkJdHhfY29uZi50eF9yc190aHJlc2ggPSAzMjsNCgkJdHhfY29uZi50eF9mcmVlX3RocmVz aCA9IDMyOw0KCQlwb3J0X2NvbmYucnhtb2RlLm9mZmxvYWRzIHw9IERFVl9SWF9PRkZMT0FEX0NI RUNLU1VNOw0KCQlyZXR1cm4gMDsNCgl9IGVsc2UgaWYgKCFzdHJjbXAobW9kZSwgImZ1bGwiKSkg ew0KCQkvKiBmdWxsIGZlYXR1cmUgcngsdHggcGFpciAqLw0KCQl0eF9jb25mLnR4X3JzX3RocmVz aCA9IDMyOw0KCQl0eF9jb25mLnR4X2ZyZWVfdGhyZXNoID0gMzI7DQoJCXBvcnRfY29uZi5yeG1v ZGUub2ZmbG9hZHMgfD0gREVWX1JYX09GRkxPQURfU0NBVFRFUjsNCgkJcmV0dXJuIDA7DQoJfQ0K DQoJcmV0dXJuIC0xOw0KfQ0KDQppbnQNCnRlc3Rfc2V0X3J4dHhfYW5jaG9yKGNtZGxpbmVfZml4 ZWRfc3RyaW5nX3QgdHlwZSkNCnsNCglwcmludGYoInR5cGUgc3dpdGNoIHRvICVzXG4iLCB0eXBl KTsNCg0KCWlmICghc3RyY21wKHR5cGUsICJyeHR4IikpIHsNCgkJZG9fbWVhc3VyZSA9IG1lYXN1 cmVfcnh0eDsNCgkJcmV0dXJuIDA7DQoJfSBlbHNlIGlmICghc3RyY21wKHR5cGUsICJyeG9ubHki KSkgew0KCQlkb19tZWFzdXJlID0gbWVhc3VyZV9yeG9ubHk7DQoJCXJldHVybiAwOw0KCX0gZWxz ZSBpZiAoIXN0cmNtcCh0eXBlLCAidHhvbmx5IikpIHsNCgkJZG9fbWVhc3VyZSA9IG1lYXN1cmVf dHhvbmx5Ow0KCQlyZXR1cm4gMDsNCgl9DQoNCglyZXR1cm4gLTE7DQp9DQoNCmludA0KdGVzdF9z ZXRfcnh0eF9zYyhjbWRsaW5lX2ZpeGVkX3N0cmluZ190IHR5cGUpDQp7DQoJcHJpbnRmKCJzdHJl YW0gY29udHJvbCBzd2l0Y2ggdG8gJXNcbiIsIHR5cGUpOw0KDQoJaWYgKCFzdHJjbXAodHlwZSwg ImNvbnRpbnVvdXMiKSkgew0KCQlzY19mbGFnID0gU0NfQ09OVElOVU9VUzsNCgkJcmV0dXJuIDA7 DQoJfSBlbHNlIGlmICghc3RyY21wKHR5cGUsICJwb2xsX2JlZm9yZV94bWl0IikpIHsNCgkJc2Nf ZmxhZyA9IFNDX0JVUlNUX1BPTExfRklSU1Q7DQoJCXJldHVybiAwOw0KCX0gZWxzZSBpZiAoIXN0 cmNtcCh0eXBlLCAicG9sbF9hZnRlcl94bWl0IikpIHsNCgkJc2NfZmxhZyA9IFNDX0JVUlNUX1hN SVRfRklSU1Q7DQoJCXJldHVybiAwOw0KCX0NCg0KCXJldHVybiAtMTsNCn0NCg0KUkVHSVNURVJf VEVTVF9DT01NQU5EKHBtZF9wZXJmX2F1dG90ZXN0LCB0ZXN0X3BtZF9wZXJmKTsKMTIvMDUvMjAy MCAxMTo0MDowNiAgICAgICAgICAgICAgZHV0LjEwLjI0MC4xODMuNjE6IHNlZCAtaSAtZSAncy8j ZGVmaW5lIE1BWF9UUkFGRklDX0JVUlNUICAgICAgICAgICAgICAyMDQ4LyNkZWZpbmUgTUFYX1RS QUZGSUNfQlVSU1QgICAgICAgICAgICAgIDMyLycgYXBwL3Rlc3QvdGVzdF9wbWRfcGVyZi5jCjEy LzA1LzIwMjAgMTE6NDA6MDYgICAgICAgICAgICAgIGR1dC4xMC4yNDAuMTgzLjYxOiAKMTIvMDUv MjAyMCAxMTo0MDowNiAgICAgICAgICAgICAgZHV0LjEwLjI0MC4xODMuNjE6IGNwIGFwcC90ZXN0 L3Rlc3RfcG1kX3BlcmYuYyAvdG1wL3Rlc3RfcG1kX3BlcmYuYwoxMi8wNS8yMDIwIDExOjQwOjA2 ICAgICAgICAgICAgICBkdXQuMTAuMjQwLjE4My42MTogCjEyLzA1LzIwMjAgMTE6NDA6MDYgICAg ICAgICAgVGVzdFVuaXRUZXN0c0xvb3BiYWNrOiBUZXN0IENhc2UgdGVzdF9saW5rX21vZGUgQmVn aW4KMTIvMDUvMjAyMCAxMTo0MDowNiAgICAgICAgICAgICAgZHV0LjEwLjI0MC4xODMuNjE6IAox Mi8wNS8yMDIwIDExOjQwOjA2ICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RlcjogCjEyLzA1 LzIwMjAgMTE6NDA6MDYgICAgICAgICAgICAgIGR1dC4xMC4yNDAuMTgzLjYxOiBzZWQgLWkgLWUg J3MvbHBia19tb2RlID0gMS9scGJrX21vZGUgPSAwLycgYXBwL3Rlc3QvdGVzdF9wbWRfcGVyZi5j CjEyLzA1LzIwMjAgMTE6NDA6MDYgICAgICAgICAgICAgIGR1dC4xMC4yNDAuMTgzLjYxOiAKMTIv MDUvMjAyMCAxMTo0MDowNiAgICAgICAgICAgICAgZHV0LjEwLjI0MC4xODMuNjE6IHNlZCAtaSAt ZSAnL2NoZWNrX2FsbF9wb3J0c19saW5rX3N0YXR1cyhuYl9wb3J0cywgUlRFX1BPUlRfQUxMKTsv YVwgICAgICAgIHNsZWVwKDYpOycgYXBwL3Rlc3QvdGVzdF9wbWRfcGVyZi5jCjEyLzA1LzIwMjAg MTE6NDA6MDYgICAgICAgICAgICAgIGR1dC4xMC4yNDAuMTgzLjYxOiAKMTIvMDUvMjAyMCAxMTo0 MDowNiAgICAgICAgICAgICAgZHV0LjEwLjI0MC4xODMuNjE6IG1ha2UgLWogNzAgYXBwL3Rlc3Rf c3ViIE89eDg2XzY0LW5hdGl2ZS1saW51eGFwcC1nY2MKMTIvMDUvMjAyMCAxMTo0MDowOCAgICAg ICAgICAgICAgZHV0LjEwLjI0MC4xODMuNjE6IGFwcC90ZXN0X3N1Yg0KPT0gQnVpbGQgYXBwL3Rl c3QNCiAgQ0MgdGVzdF9wbWRfcGVyZi5vDQogIExEIHRlc3QNCiAgSU5TVEFMTC1BUFAgdGVzdA0K ICBJTlNUQUxMLU1BUCB0ZXN0Lm1hcAoxMi8wNS8yMDIwIDExOjQwOjA4ICAgICAgICAgICAgICAg ICAgICAgICAgIHRlc3Rlcjogcm0gLXJmIC4vZ2V0UGFja2FnZUJ5VGNwZHVtcC5jYXAKMTIvMDUv MjAyMCAxMTo0MDowOCAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6IAoxMi8wNS8yMDIw IDExOjQwOjA4ICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RlcjogdGNwZHVtcCAtaSBlbnAx NzdzMGYwIC13IC4vZ2V0UGFja2FnZUJ5VGNwZHVtcC5jYXAgMj4gL2Rldi9udWxsJiAKMTIvMDUv MjAyMCAxMTo0MDowOCAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6IFsxXSAyMTA2NzMK MTIvMDUvMjAyMCAxMTo0MDowOCAgICAgICAgICAgICAgZHV0LjEwLjI0MC4xODMuNjE6IC4veDg2 XzY0LW5hdGl2ZS1saW51eGFwcC1nY2MvYXBwL3Rlc3QgLWwgMSwyLDMsNCw1LDYsNyw4LDksMTAs MTEsMTIsMTMsMTQsMTUsMTYsMTcsMTgsMTksMjAsMjEsMjIsMjMsMjQsMjUsMjYsMjcsMjgsMjks MzAsMzEsMzIsMzMsMzQsMzUsMzcsMzgsMzksNDAsNDEsNDIsNDMsNDQsNDUsNDYsNDcsNDgsNDks NTAsNTEsNTIsNTMsNTQsNTUsNTYsNTcsNTgsNTksNjAsNjEsNjIsNjMsNjQsNjUsNjYsNjcsNjgs NjksNzAsNzEgLW4gNCAgIC0tZmlsZS1wcmVmaXg9ZHBka18yMTAzOTZfMjAyMDA1MTIxMTM5NDkg IAoxMi8wNS8yMDIwIDExOjQwOjEwICAgICAgICAgICAgICBkdXQuMTAuMjQwLjE4My42MTogRUFM OiBEZXRlY3RlZCA3MiBsY29yZShzKQ0KRUFMOiBEZXRlY3RlZCAyIE5VTUEgbm9kZXMNCkVBTDog TXVsdGktcHJvY2VzcyBzb2NrZXQgL3Zhci9ydW4vZHBkay9kcGRrXzIxMDM5Nl8yMDIwMDUxMjEx Mzk0OS9tcF9zb2NrZXQNCkVBTDogU2VsZWN0ZWQgSU9WQSBtb2RlICdWQScNCkVBTDogUHJvYmlu ZyBWRklPIHN1cHBvcnQuLi4NCkVBTDogVkZJTyBzdXBwb3J0IGluaXRpYWxpemVkDQpFQUw6ICAg dXNpbmcgSU9NTVUgdHlwZSAxIChUeXBlIDEpDQpFQUw6IFByb2JlIFBDSSBkcml2ZXI6IG5ldF9p NDBlICg4MDg2OjE1ODMpIGRldmljZTogMDAwMDphZjowMC4wIChzb2NrZXQgMSkNCk5vIHRlbGVt ZXRyeSBsZWdhY3kgc3VwcG9ydCAtIE5vIGxlZ2FjeSBjYWxsYmFja3MsIGxlZ2FjeSBzb2NrZXQg bm90IGNyZWF0ZWQNCkFQUDogSFBFVCBpcyBub3QgZW5hYmxlZCwgdXNpbmcgVFNDIGFzIGRlZmF1 bHQgdGltZXIKMTIvMDUvMjAyMCAxMTo0MDoxMCAgICAgICAgICAgICAgZHV0LjEwLjI0MC4xODMu NjE6IHBtZF9wZXJmX2F1dG90ZXN0CjEyLzA1LzIwMjAgMTE6NDA6NDAgICAgICAgICAgICAgIGR1 dC4xMC4yNDAuMTgzLjYxOiBwbWRfcGVyZl9hdXRvdGVzdA0NClN0YXJ0IFBNRCBSWFRYIGN5Y2xl cyBjb3N0IHRlc3QuDQpBbGxvY2F0ZWQgbWJ1ZiBwb29sIG9uIHNvY2tldCAwDQpBbGxvY2F0ZWQg bWJ1ZiBwb29sIG9uIHNvY2tldCAxDQpDT05GSUcgUlhEPTEwMjQgVFhEPTEwMjQNClBlcmZvcm1h bmNlIHRlc3QgcnVucyBvbiBsY29yZSAxOCBzb2NrZXQgMQ0KUG9ydCAwIEFkZHJlc3M6MDA6MDA6 MDA6MDA6MDE6MDANCkNoZWNraW5nIGxpbmsgc3RhdHVzZXMuLi4NClBvcnQwIExpbmsgVXAuIFNw ZWVkIDQwMDAwIE1icHMgLSBmdWxsLWR1cGxleA0KSVB2NCBwa3RsZW4gNDYNClVEUCBwa3RsZW4g MjYNCkdlbmVyYXRlIDMyIHBhY2tldHMgQHNvY2tldCAxDQppbmplY3QgMzIgcGFja2V0IHRvIHBv cnQgMA0KVG90YWwgcGFja2V0cyBpbmplY3QgdG8gcHJpbWUgcG9ydHMgPSAzMg0KRWFjaCBwb3J0 IHdpbGwgZG8gNTk1MjM4MDkgcGFja2V0cyBwZXIgc2Vjb25kDQpUZXN0IHdpbGwgc3RvcCBhZnRl ciBhdCBsZWFzdCAxMTkwNDc2MTggcGFja2V0cyByZWNlaXZlZA0KCjEyLzA1LzIwMjAgMTE6NDA6 NDAgICAgICAgICAgICAgIGR1dC4xMC4yNDAuMTgzLjYxOiBraWxsX2FsbDogY2FsbGVkIGJ5IGR1 dCBhbmQgcHJlZml4IGxpc3QgaGFzIHZhbHVlLgoxMi8wNS8yMDIwIDExOjQwOjQyICAgICAgICAg ICAgICBkdXQuMTAuMjQwLjE4My42MTogS2lsbGVkDQpbUEVYUEVDVF0jIAoxMi8wNS8yMDIwIDEx OjQwOjQyICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rlcjoga2lsbGFsbCB0Y3BkdW1wCjEy LzA1LzIwMjAgMTE6NDA6NDIgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVyOiAKMTIvMDUv MjAyMCAxMTo0MDo0MiAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6IHRjcGR1bXAgLW5u IC1lIC12IC1yIC4vZ2V0UGFja2FnZUJ5VGNwZHVtcC5jYXAKMTIvMDUvMjAyMCAxMTo0MDo0MiAg ICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6IHJlYWRpbmcgZnJvbSBmaWxlIC4vZ2V0UGFj a2FnZUJ5VGNwZHVtcC5jYXAsIGxpbmstdHlwZSBFTjEwTUIgKEV0aGVybmV0KQ0KMTE6NDA6MTYu NTcyNTA1IDAwOmZmOmFhOmZmOmFhOmZmID4gMDA6YWE6ZmY6YWE6ZmY6YWEsIGV0aGVydHlwZSBJ UHY0ICgweDA4MDApLCBsZW5ndGggNjA6ICh0b3MgMHgwLCB0dGwgNjQsIGlkIDAsIG9mZnNldCAw LCBmbGFncyBbbm9uZV0sIHByb3RvIFVEUCAoMTcpLCBsZW5ndGggNDYpDQogICAgMTAuMC4wLjEu MCA+IDEwLjAuMC4yLjA6IFVEUCwgbGVuZ3RoIDE4DQoxMTo0MDoxNi41NzI1MTkgMDA6ZmY6YWE6 ZmY6YWE6ZmYgPiAwMDphYTpmZjphYTpmZjphYSwgZXRoZXJ0eXBlIElQdjQgKDB4MDgwMCksIGxl bmd0aCA2MDogKHRvcyAweDAsIHR0bCA2NCwgaWQgMCwgb2Zmc2V0IDAsIGZsYWdzIFtub25lXSwg cHJvdG8gVURQICgxNyksIGxlbmd0aCA0NikNCiAgICAxMC4wLjAuMS4wID4gMTAuMC4wLjIuMDog VURQLCBsZW5ndGggMTgNCjExOjQwOjE2LjU3MjUyMiAwMDpmZjphYTpmZjphYTpmZiA+IDAwOmFh OmZmOmFhOmZmOmFhLCBldGhlcnR5cGUgSVB2NCAoMHgwODAwKSwgbGVuZ3RoIDYwOiAodG9zIDB4 MCwgdHRsIDY0LCBpZCAwLCBvZmZzZXQgMCwgZmxhZ3MgW25vbmVdLCBwcm90byBVRFAgKDE3KSwg bGVuZ3RoIDQ2KQ0KICAgIDEwLjAuMC4xLjAgPiAxMC4wLjAuMi4wOiBVRFAsIGxlbmd0aCAxOA0K MTE6NDA6MTYuNTcyNTI2IDAwOmZmOmFhOmZmOmFhOmZmID4gMDA6YWE6ZmY6YWE6ZmY6YWEsIGV0 aGVydHlwZSBJUHY0ICgweDA4MDApLCBsZW5ndGggNjA6ICh0b3MgMHgwLCB0dGwgNjQsIGlkIDAs IG9mZnNldCAwLCBmbGFncyBbbm9uZV0sIHByb3RvIFVEUCAoMTcpLCBsZW5ndGggNDYpDQogICAg MTAuMC4wLjEuMCA+IDEwLjAuMC4yLjA6IFVEUCwgbGVuZ3RoIDE4DQoxMTo0MDoxNi41NzI1Mjkg MDA6ZmY6YWE6ZmY6YWE6ZmYgPiAwMDphYTpmZjphYTpmZjphYSwgZXRoZXJ0eXBlIElQdjQgKDB4 MDgwMCksIGxlbmd0aCA2MDogKHRvcyAweDAsIHR0bCA2NCwgaWQgMCwgb2Zmc2V0IDAsIGZsYWdz IFtub25lXSwgcHJvdG8gVURQICgxNyksIGxlbmd0aCA0NikNCiAgICAxMC4wLjAuMS4wID4gMTAu MC4wLjIuMDogVURQLCBsZW5ndGggMTgNCjExOjQwOjE2LjU3MjUzMiAwMDpmZjphYTpmZjphYTpm ZiA+IDAwOmFhOmZmOmFhOmZmOmFhLCBldGhlcnR5cGUgSVB2NCAoMHgwODAwKSwgbGVuZ3RoIDYw OiAodG9zIDB4MCwgdHRsIDY0LCBpZCAwLCBvZmZzZXQgMCwgZmxhZ3MgW25vbmVdLCBwcm90byBV RFAgKDE3KSwgbGVuZ3RoIDQ2KQ0KICAgIDEwLjAuMC4xLjAgPiAxMC4wLjAuMi4wOiBVRFAsIGxl bmd0aCAxOA0KMTE6NDA6MTYuNTcyNTM1IDAwOmZmOmFhOmZmOmFhOmZmID4gMDA6YWE6ZmY6YWE6 ZmY6YWEsIGV0aGVydHlwZSBJUHY0ICgweDA4MDApLCBsZW5ndGggNjA6ICh0b3MgMHgwLCB0dGwg NjQsIGlkIDAsIG9mZnNldCAwLCBmbGFncyBbbm9uZV0sIHByb3RvIFVEUCAoMTcpLCBsZW5ndGgg NDYpDQogICAgMTAuMC4wLjEuMCA+IDEwLjAuMC4yLjA6IFVEUCwgbGVuZ3RoIDE4DQoxMTo0MDox Ni41NzI1MzggMDA6ZmY6YWE6ZmY6YWE6ZmYgPiAwMDphYTpmZjphYTpmZjphYSwgZXRoZXJ0eXBl IElQdjQgKDB4MDgwMCksIGxlbmd0aCA2MDogKHRvcyAweDAsIHR0bCA2NCwgaWQgMCwgb2Zmc2V0 IDAsIGZsYWdzIFtub25lXSwgcHJvdG8gVURQICgxNyksIGxlbmd0aCA0NikNCiAgICAxMC4wLjAu MS4wID4gMTAuMC4wLjIuMDogVURQLCBsZW5ndGggMTgNCjExOjQwOjE2LjU3MjU0MiAwMDpmZjph YTpmZjphYTpmZiA+IDAwOmFhOmZmOmFhOmZmOmFhLCBldGhlcnR5cGUgSVB2NCAoMHgwODAwKSwg bGVuZ3RoIDYwOiAodG9zIDB4MCwgdHRsIDY0LCBpZCAwLCBvZmZzZXQgMCwgZmxhZ3MgW25vbmVd LCBwcm90byBVRFAgKDE3KSwgbGVuZ3RoIDQ2KQ0KICAgIDEwLjAuMC4xLjAgPiAxMC4wLjAuMi4w OiBVRFAsIGxlbmd0aCAxOA0KMTE6NDA6MTYuNTcyNTQ1IDAwOmZmOmFhOmZmOmFhOmZmID4gMDA6 YWE6ZmY6YWE6ZmY6YWEsIGV0aGVydHlwZSBJUHY0ICgweDA4MDApLCBsZW5ndGggNjA6ICh0b3Mg MHgwLCB0dGwgNjQsIGlkIDAsIG9mZnNldCAwLCBmbGFncyBbbm9uZV0sIHByb3RvIFVEUCAoMTcp LCBsZW5ndGggNDYpDQogICAgMTAuMC4wLjEuMCA+IDEwLjAuMC4yLjA6IFVEUCwgbGVuZ3RoIDE4 DQoxMTo0MDoxNi41NzI1NDggMDA6ZmY6YWE6ZmY6YWE6ZmYgPiAwMDphYTpmZjphYTpmZjphYSwg ZXRoZXJ0eXBlIElQdjQgKDB4MDgwMCksIGxlbmd0aCA2MDogKHRvcyAweDAsIHR0bCA2NCwgaWQg MCwgb2Zmc2V0IDAsIGZsYWdzIFtub25lXSwgcHJvdG8gVURQICgxNyksIGxlbmd0aCA0NikNCiAg ICAxMC4wLjAuMS4wID4gMTAuMC4wLjIuMDogVURQLCBsZW5ndGggMTgNCjExOjQwOjE2LjU3MjU1 MSAwMDpmZjphYTpmZjphYTpmZiA+IDAwOmFhOmZmOmFhOmZmOmFhLCBldGhlcnR5cGUgSVB2NCAo MHgwODAwKSwgbGVuZ3RoIDYwOiAodG9zIDB4MCwgdHRsIDY0LCBpZCAwLCBvZmZzZXQgMCwgZmxh Z3MgW25vbmVdLCBwcm90byBVRFAgKDE3KSwgbGVuZ3RoIDQ2KQ0KICAgIDEwLjAuMC4xLjAgPiAx MC4wLjAuMi4wOiBVRFAsIGxlbmd0aCAxOA0KMTE6NDA6MTYuNTcyNTU1IDAwOmZmOmFhOmZmOmFh OmZmID4gMDA6YWE6ZmY6YWE6ZmY6YWEsIGV0aGVydHlwZSBJUHY0ICgweDA4MDApLCBsZW5ndGgg NjA6ICh0b3MgMHgwLCB0dGwgNjQsIGlkIDAsIG9mZnNldCAwLCBmbGFncyBbbm9uZV0sIHByb3Rv IFVEUCAoMTcpLCBsZW5ndGggNDYpDQogICAgMTAuMC4wLjEuMCA+IDEwLjAuMC4yLjA6IFVEUCwg bGVuZ3RoIDE4DQoxMTo0MDoxNi41NzI1NTggMDA6ZmY6YWE6ZmY6YWE6ZmYgPiAwMDphYTpmZjph YTpmZjphYSwgZXRoZXJ0eXBlIElQdjQgKDB4MDgwMCksIGxlbmd0aCA2MDogKHRvcyAweDAsIHR0 bCA2NCwgaWQgMCwgb2Zmc2V0IDAsIGZsYWdzIFtub25lXSwgcHJvdG8gVURQICgxNyksIGxlbmd0 aCA0NikNCiAgICAxMC4wLjAuMS4wID4gMTAuMC4wLjIuMDogVURQLCBsZW5ndGggMTgNCjExOjQw OjE2LjU3MjU2MSAwMDpmZjphYTpmZjphYTpmZiA+IDAwOmFhOmZmOmFhOmZmOmFhLCBldGhlcnR5 cGUgSVB2NCAoMHgwODAwKSwgbGVuZ3RoIDYwOiAodG9zIDB4MCwgdHRsIDY0LCBpZCAwLCBvZmZz ZXQgMCwgZmxhZ3MgW25vbmVdLCBwcm90byBVRFAgKDE3KSwgbGVuZ3RoIDQ2KQ0KICAgIDEwLjAu MC4xLjAgPiAxMC4wLjAuMi4wOiBVRFAsIGxlbmd0aCAxOA0KMTE6NDA6MTYuNTcyNTY0IDAwOmZm OmFhOmZmOmFhOmZmID4gMDA6YWE6ZmY6YWE6ZmY6YWEsIGV0aGVydHlwZSBJUHY0ICgweDA4MDAp LCBsZW5ndGggNjA6ICh0b3MgMHgwLCB0dGwgNjQsIGlkIDAsIG9mZnNldCAwLCBmbGFncyBbbm9u ZV0sIHByb3RvIFVEUCAoMTcpLCBsZW5ndGggNDYpDQogICAgMTAuMC4wLjEuMCA+IDEwLjAuMC4y LjA6IFVEUCwgbGVuZ3RoIDE4DQoxMTo0MDoxNi41NzI1NjcgMDA6ZmY6YWE6ZmY6YWE6ZmYgPiAw MDphYTpmZjphYTpmZjphYSwgZXRoZXJ0eXBlIElQdjQgKDB4MDgwMCksIGxlbmd0aCA2MDogKHRv cyAweDAsIHR0bCA2NCwgaWQgMCwgb2Zmc2V0IDAsIGZsYWdzIFtub25lXSwgcHJvdG8gVURQICgx NyksIGxlbmd0aCA0NikNCiAgICAxMC4wLjAuMS4wID4gMTAuMC4wLjIuMDogVURQLCBsZW5ndGgg MTgNCjExOjQwOjE2LjU3MjU3MCAwMDpmZjphYTpmZjphYTpmZiA+IDAwOmFhOmZmOmFhOmZmOmFh LCBldGhlcnR5cGUgSVB2NCAoMHgwODAwKSwgbGVuZ3RoIDYwOiAodG9zIDB4MCwgdHRsIDY0LCBp ZCAwLCBvZmZzZXQgMCwgZmxhZ3MgW25vbmVdLCBwcm90byBVRFAgKDE3KSwgbGVuZ3RoIDQ2KQ0K ICAgIDEwLjAuMC4xLjAgPiAxMC4wLjAuMi4wOiBVRFAsIGxlbmd0aCAxOA0KMTE6NDA6MTYuNTcy NTczIDAwOmZmOmFhOmZmOmFhOmZmID4gMDA6YWE6ZmY6YWE6ZmY6YWEsIGV0aGVydHlwZSBJUHY0 ICgweDA4MDApLCBsZW5ndGggNjA6ICh0b3MgMHgwLCB0dGwgNjQsIGlkIDAsIG9mZnNldCAwLCBm bGFncyBbbm9uZV0sIHByb3RvIFVEUCAoMTcpLCBsZW5ndGggNDYpDQogICAgMTAuMC4wLjEuMCA+ IDEwLjAuMC4yLjA6IFVEUCwgbGVuZ3RoIDE4DQoxMTo0MDoxNi41NzI1NzcgMDA6ZmY6YWE6ZmY6 YWE6ZmYgPiAwMDphYTpmZjphYTpmZjphYSwgZXRoZXJ0eXBlIElQdjQgKDB4MDgwMCksIGxlbmd0 aCA2MDogKHRvcyAweDAsIHR0bCA2NCwgaWQgMCwgb2Zmc2V0IDAsIGZsYWdzIFtub25lXSwgcHJv dG8gVURQICgxNyksIGxlbmd0aCA0NikNCiAgICAxMC4wLjAuMS4wID4gMTAuMC4wLjIuMDogVURQ LCBsZW5ndGggMTgNCjExOjQwOjE2LjU3MjU4MCAwMDpmZjphYTpmZjphYTpmZiA+IDAwOmFhOmZm OmFhOmZmOmFhLCBldGhlcnR5cGUgSVB2NCAoMHgwODAwKSwgbGVuZ3RoIDYwOiAodG9zIDB4MCwg dHRsIDY0LCBpZCAwLCBvZmZzZXQgMCwgZmxhZ3MgW25vbmVdLCBwcm90byBVRFAgKDE3KSwgbGVu Z3RoIDQ2KQ0KICAgIDEwLjAuMC4xLjAgPiAxMC4wLjAuMi4wOiBVRFAsIGxlbmd0aCAxOA0KMTE6 NDA6MTYuNTcyNTgzIDAwOmZmOmFhOmZmOmFhOmZmID4gMDA6YWE6ZmY6YWE6ZmY6YWEsIGV0aGVy dHlwZSBJUHY0ICgweDA4MDApLCBsZW5ndGggNjA6ICh0b3MgMHgwLCB0dGwgNjQsIGlkIDAsIG9m ZnNldCAwLCBmbGFncyBbbm9uZV0sIHByb3RvIFVEUCAoMTcpLCBsZW5ndGggNDYpDQogICAgMTAu MC4wLjEuMCA+IDEwLjAuMC4yLjA6IFVEUCwgbGVuZ3RoIDE4DQoxMTo0MDoxNi41NzI1ODggMDA6 ZmY6YWE6ZmY6YWE6ZmYgPiAwMDphYTpmZjphYTpmZjphYSwgZXRoZXJ0eXBlIElQdjQgKDB4MDgw MCksIGxlbmd0aCA2MDogKHRvcyAweDAsIHR0bCA2NCwgaWQgMCwgb2Zmc2V0IDAsIGZsYWdzIFtu b25lXSwgcHJvdG8gVURQICgxNyksIGxlbmd0aCA0NikNCiAgICAxMC4wLjAuMS4wID4gMTAuMC4w LjIuMDogVURQLCBsZW5ndGggMTgNCjExOjQwOjE2LjU3MjU5MSAwMDpmZjphYTpmZjphYTpmZiA+ IDAwOmFhOmZmOmFhOmZmOmFhLCBldGhlcnR5cGUgSVB2NCAoMHgwODAwKSwgbGVuZ3RoIDYwOiAo dG9zIDB4MCwgdHRsIDY0LCBpZCAwLCBvZmZzZXQgMCwgZmxhZ3MgW25vbmVdLCBwcm90byBVRFAg KDE3KSwgbGVuZ3RoIDQ2KQ0KICAgIDEwLjAuMC4xLjAgPiAxMC4wLjAuMi4wOiBVRFAsIGxlbmd0 aCAxOA0KMTE6NDA6MTYuNTcyNTk0IDAwOmZmOmFhOmZmOmFhOmZmID4gMDA6YWE6ZmY6YWE6ZmY6 YWEsIGV0aGVydHlwZSBJUHY0ICgweDA4MDApLCBsZW5ndGggNjA6ICh0b3MgMHgwLCB0dGwgNjQs IGlkIDAsIG9mZnNldCAwLCBmbGFncyBbbm9uZV0sIHByb3RvIFVEUCAoMTcpLCBsZW5ndGggNDYp DQogICAgMTAuMC4wLjEuMCA+IDEwLjAuMC4yLjA6IFVEUCwgbGVuZ3RoIDE4DQoxMTo0MDoxNi41 NzI1OTcgMDA6ZmY6YWE6ZmY6YWE6ZmYgPiAwMDphYTpmZjphYTpmZjphYSwgZXRoZXJ0eXBlIElQ djQgKDB4MDgwMCksIGxlbmd0aCA2MDogKHRvcyAweDAsIHR0bCA2NCwgaWQgMCwgb2Zmc2V0IDAs IGZsYWdzIFtub25lXSwgcHJvdG8gVURQICgxNyksIGxlbmd0aCA0NikNCiAgICAxMC4wLjAuMS4w ID4gMTAuMC4wLjIuMDogVURQLCBsZW5ndGggMTgNCjExOjQwOjE2LjU3MjYwMCAwMDpmZjphYTpm ZjphYTpmZiA+IDAwOmFhOmZmOmFhOmZmOmFhLCBldGhlcnR5cGUgSVB2NCAoMHgwODAwKSwgbGVu Z3RoIDYwOiAodG9zIDB4MCwgdHRsIDY0LCBpZCAwLCBvZmZzZXQgMCwgZmxhZ3MgW25vbmVdLCBw cm90byBVRFAgKDE3KSwgbGVuZ3RoIDQ2KQ0KICAgIDEwLjAuMC4xLjAgPiAxMC4wLjAuMi4wOiBV RFAsIGxlbmd0aCAxOA0KMTE6NDA6MTYuNTcyNjA0IDAwOmZmOmFhOmZmOmFhOmZmID4gMDA6YWE6 ZmY6YWE6ZmY6YWEsIGV0aGVydHlwZSBJUHY0ICgweDA4MDApLCBsZW5ndGggNjA6ICh0b3MgMHgw LCB0dGwgNjQsIGlkIDAsIG9mZnNldCAwLCBmbGFncyBbbm9uZV0sIHByb3RvIFVEUCAoMTcpLCBs ZW5ndGggNDYpDQogICAgMTAuMC4wLjEuMCA+IDEwLjAuMC4yLjA6IFVEUCwgbGVuZ3RoIDE4DQox MTo0MDoxNi41NzI2MDcgMDA6ZmY6YWE6ZmY6YWE6ZmYgPiAwMDphYTpmZjphYTpmZjphYSwgZXRo ZXJ0eXBlIElQdjQgKDB4MDgwMCksIGxlbmd0aCA2MDogKHRvcyAweDAsIHR0bCA2NCwgaWQgMCwg b2Zmc2V0IDAsIGZsYWdzIFtub25lXSwgcHJvdG8gVURQICgxNyksIGxlbmd0aCA0NikNCiAgICAx MC4wLjAuMS4wID4gMTAuMC4wLjIuMDogVURQLCBsZW5ndGggMTgNCjExOjQwOjE2LjU3MjYxMSAw MDpmZjphYTpmZjphYTpmZiA+IDAwOmFhOmZmOmFhOmZmOmFhLCBldGhlcnR5cGUgSVB2NCAoMHgw ODAwKSwgbGVuZ3RoIDYwOiAodG9zIDB4MCwgdHRsIDY0LCBpZCAwLCBvZmZzZXQgMCwgZmxhZ3Mg W25vbmVdLCBwcm90byBVRFAgKDE3KSwgbGVuZ3RoIDQ2KQ0KICAgIDEwLjAuMC4xLjAgPiAxMC4w LjAuMi4wOiBVRFAsIGxlbmd0aCAxOA0KMTE6NDA6MTYuNTcyNjE0IDAwOmZmOmFhOmZmOmFhOmZm ID4gMDA6YWE6ZmY6YWE6ZmY6YWEsIGV0aGVydHlwZSBJUHY0ICgweDA4MDApLCBsZW5ndGggNjA6 ICh0b3MgMHgwLCB0dGwgNjQsIGlkIDAsIG9mZnNldCAwLCBmbGFncyBbbm9uZV0sIHByb3RvIFVE UCAoMTcpLCBsZW5ndGggNDYpDQogICAgMTAuMC4wLjEuMCA+IDEwLjAuMC4yLjA6IFVEUCwgbGVu Z3RoIDE4DQoxMTo0MDoxNi41NzI2MTcgMDA6ZmY6YWE6ZmY6YWE6ZmYgPiAwMDphYTpmZjphYTpm ZjphYSwgZXRoZXJ0eXBlIElQdjQgKDB4MDgwMCksIGxlbmd0aCA2MDogKHRvcyAweDAsIHR0bCA2 NCwgaWQgMCwgb2Zmc2V0IDAsIGZsYWdzIFtub25lXSwgcHJvdG8gVURQICgxNyksIGxlbmd0aCA0 NikNCiAgICAxMC4wLjAuMS4wID4gMTAuMC4wLjIuMDogVURQLCBsZW5ndGggMTgNClsxXSsgIERv bmUgICAgICAgICAgICAgICAgICAgIHRjcGR1bXAgLWkgZW5wMTc3czBmMCAtdyAuL2dldFBhY2th Z2VCeVRjcGR1bXAuY2FwIDI+IC9kZXYvbnVsbAoxMi8wNS8yMDIwIDExOjQwOjQyICAgICAgICAg IFRlc3RVbml0VGVzdHNMb29wYmFjazogVGVzdCBDYXNlIHRlc3RfbGlua19tb2RlIFJlc3VsdCBQ QVNTRUQ6CjEyLzA1LzIwMjAgMTE6NDA6NDIgICAgICAgICAgICAgIGR1dC4xMC4yNDAuMTgzLjYx OiBjcCAvdG1wL3Rlc3RfcG1kX3BlcmYuYyBhcHAvdGVzdC90ZXN0X3BtZF9wZXJmLmMKMTIvMDUv MjAyMCAxMTo0MDo0MyAgICAgICAgICAgICAgZHV0LjEwLjI0MC4xODMuNjE6IAoxMi8wNS8yMDIw IDExOjQwOjQzICAgICAgICAgICAgICBkdXQuMTAuMjQwLjE4My42MToga2lsbF9hbGw6IGNhbGxl ZCBieSBkdXQgYW5kIGhhcyBubyBwcmVmaXggbGlzdC4KMTIvMDUvMjAyMCAxMTo0MDo0MyAgICAg ICAgICBUZXN0VW5pdFRlc3RzTG9vcGJhY2s6IFRlc3QgQ2FzZSB0ZXN0X2xvb3BiYWNrX21vZGUg QmVnaW4KMTIvMDUvMjAyMCAxMTo0MDo0MyAgICAgICAgICAgICAgZHV0LjEwLjI0MC4xODMuNjE6 IAoxMi8wNS8yMDIwIDExOjQwOjQzICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RlcjogIAox Mi8wNS8yMDIwIDExOjQwOjQzICAgICAgICAgICAgICBkdXQuMTAuMjQwLjE4My42MTogc2VkIC1p IC1lICdzL2xwYmtfbW9kZSA9IDAvbHBia19tb2RlID0gMS8nIGFwcC90ZXN0L3Rlc3RfcG1kX3Bl cmYuYwoxMi8wNS8yMDIwIDExOjQwOjQzICAgICAgICAgICAgICBkdXQuMTAuMjQwLjE4My42MTog CjEyLzA1LzIwMjAgMTE6NDA6NDMgICAgICAgICAgICAgIGR1dC4xMC4yNDAuMTgzLjYxOiBtYWtl IC1qIDcwIGFwcC90ZXN0X3N1YiBPPXg4Nl82NC1uYXRpdmUtbGludXhhcHAtZ2NjCjEyLzA1LzIw MjAgMTE6NDA6NDUgICAgICAgICAgICAgIGR1dC4xMC4yNDAuMTgzLjYxOiBhcHAvdGVzdF9zdWIN Cj09IEJ1aWxkIGFwcC90ZXN0DQogIENDIHRlc3RfcG1kX3BlcmYubw0KICBMRCB0ZXN0DQogIElO U1RBTEwtQVBQIHRlc3QNCiAgSU5TVEFMTC1NQVAgdGVzdC5tYXAKMTIvMDUvMjAyMCAxMTo0MDo0 NSAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6IHJtIC1yZiAuL2dldFBhY2thZ2VCeVRj cGR1bXAuY2FwCjEyLzA1LzIwMjAgMTE6NDA6NDYgICAgICAgICAgICAgICAgICAgICAgICAgdGVz dGVyOiAKMTIvMDUvMjAyMCAxMTo0MDo0NiAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6 IHRjcGR1bXAgLWkgZW5wMTc3czBmMCBldGhlclsxMjoyXSAhPSAnMHg4OGNjJyAtdyAuL2dldFBh Y2thZ2VCeVRjcGR1bXAuY2FwIDI+IC9kZXYvbnVsbCYgCjEyLzA1LzIwMjAgMTE6NDA6NDYgICAg ICAgICAgICAgICAgICAgICAgICAgdGVzdGVyOiBbMV0gMjEwNzIzCjEyLzA1LzIwMjAgMTE6NDA6 NDYgICAgICAgICAgICAgIGR1dC4xMC4yNDAuMTgzLjYxOiAuL3g4Nl82NC1uYXRpdmUtbGludXhh cHAtZ2NjL2FwcC90ZXN0IC1sIDEsMiwzLDQsNSw2LDcsOCw5LDEwLDExLDEyLDEzLDE0LDE1LDE2 LDE3LDE4LDE5LDIwLDIxLDIyLDIzLDI0LDI1LDI2LDI3LDI4LDI5LDMwLDMxLDMyLDMzLDM0LDM1 LDM3LDM4LDM5LDQwLDQxLDQyLDQzLDQ0LDQ1LDQ2LDQ3LDQ4LDQ5LDUwLDUxLDUyLDUzLDU0LDU1 LDU2LDU3LDU4LDU5LDYwLDYxLDYyLDYzLDY0LDY1LDY2LDY3LDY4LDY5LDcwLDcxIC1uIDQgICAt LWZpbGUtcHJlZml4PWRwZGtfMjEwMzk2XzIwMjAwNTEyMTEzOTQ5ICAKMTIvMDUvMjAyMCAxMTo0 MDo0NyAgICAgICAgICAgICAgZHV0LjEwLjI0MC4xODMuNjE6IEVBTDogRGV0ZWN0ZWQgNzIgbGNv cmUocykNCkVBTDogRGV0ZWN0ZWQgMiBOVU1BIG5vZGVzDQpFQUw6IE11bHRpLXByb2Nlc3Mgc29j a2V0IC92YXIvcnVuL2RwZGsvZHBka18yMTAzOTZfMjAyMDA1MTIxMTM5NDkvbXBfc29ja2V0DQpF QUw6IFNlbGVjdGVkIElPVkEgbW9kZSAnVkEnDQpFQUw6IFByb2JpbmcgVkZJTyBzdXBwb3J0Li4u DQpFQUw6IFZGSU8gc3VwcG9ydCBpbml0aWFsaXplZA0KRUFMOiAgIHVzaW5nIElPTU1VIHR5cGUg MSAoVHlwZSAxKQ0KRUFMOiBQcm9iZSBQQ0kgZHJpdmVyOiBuZXRfaTQwZSAoODA4NjoxNTgzKSBk ZXZpY2U6IDAwMDA6YWY6MDAuMCAoc29ja2V0IDEpDQpObyB0ZWxlbWV0cnkgbGVnYWN5IHN1cHBv cnQgLSBObyBsZWdhY3kgY2FsbGJhY2tzLCBsZWdhY3kgc29ja2V0IG5vdCBjcmVhdGVkDQpBUFA6 IEhQRVQgaXMgbm90IGVuYWJsZWQsIHVzaW5nIFRTQyBhcyBkZWZhdWx0IHRpbWVyCjEyLzA1LzIw MjAgMTE6NDA6NDcgICAgICAgICAgICAgIGR1dC4xMC4yNDAuMTgzLjYxOiBwbWRfcGVyZl9hdXRv dGVzdAoxMi8wNS8yMDIwIDExOjQxOjAyICAgICAgICAgICAgICBkdXQuMTAuMjQwLjE4My42MTog cG1kX3BlcmZfYXV0b3Rlc3QNDQpTdGFydCBQTUQgUlhUWCBjeWNsZXMgY29zdCB0ZXN0Lg0KQWxs b2NhdGVkIG1idWYgcG9vbCBvbiBzb2NrZXQgMA0KQWxsb2NhdGVkIG1idWYgcG9vbCBvbiBzb2Nr ZXQgMQ0KQ09ORklHIFJYRD0xMDI0IFRYRD0xMDI0DQpQZXJmb3JtYW5jZSB0ZXN0IHJ1bnMgb24g bGNvcmUgMTggc29ja2V0IDENClBvcnQgMCBBZGRyZXNzOjAwOjAwOjAwOjAwOjAxOjAwDQpDaGVj a2luZyBsaW5rIHN0YXR1c2VzLi4uDQpQb3J0MCBMaW5rIFVwLiBTcGVlZCA0MDAwMCBNYnBzIC0g ZnVsbC1kdXBsZXgNCklQdjQgcGt0bGVuIDQ2DQpVRFAgcGt0bGVuIDI2DQpHZW5lcmF0ZSAzMiBw YWNrZXRzIEBzb2NrZXQgMQ0KaW5qZWN0IDMyIHBhY2tldCB0byBwb3J0IDANClRvdGFsIHBhY2tl dHMgaW5qZWN0IHRvIHByaW1lIHBvcnRzID0gMzINCkVhY2ggcG9ydCB3aWxsIGRvIDU5NTIzODA5 IHBhY2tldHMgcGVyIHNlY29uZA0KVGVzdCB3aWxsIHN0b3AgYWZ0ZXIgYXQgbGVhc3QgMTE5MDQ3 NjE4IHBhY2tldHMgcmVjZWl2ZWQNCmZyZWUgMzIgKGV4cGVjdGVkIDMyKSBtYnVmIGxlZnQgaW4g cG9ydCAwDQoxMTkwNDc2MjAgcGFja2V0LCAwIGRyb3AsIDU2MjQzNzgxMyBpZGxlDQpSZXN1bHQ6 IDI4MSBjeWNsZXMgcGVyIHBhY2tldA0KVGVzdCBPSwoxMi8wNS8yMDIwIDExOjQxOjAyICAgICAg ICAgICAgICBkdXQuMTAuMjQwLjE4My42MTogcXVpdAoxMi8wNS8yMDIwIDExOjQxOjAyICAgICAg ICAgICAgICBkdXQuMTAuMjQwLjE4My42MTogcXVpdA0KMTIvMDUvMjAyMCAxMTo0MTowMiAgICAg ICAgICAgICAgICAgICAgICAgICB0ZXN0ZXI6IGtpbGxhbGwgdGNwZHVtcAoxMi8wNS8yMDIwIDEx OjQxOjAyICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RlcjogCjEyLzA1LzIwMjAgMTE6NDE6 MDIgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVyOiB0Y3BkdW1wIC1ubiAtZSAtdiAtciAu L2dldFBhY2thZ2VCeVRjcGR1bXAuY2FwCjEyLzA1LzIwMjAgMTE6NDE6MDIgICAgICAgICAgICAg ICAgICAgICAgICAgdGVzdGVyOiByZWFkaW5nIGZyb20gZmlsZSAuL2dldFBhY2thZ2VCeVRjcGR1 bXAuY2FwLCBsaW5rLXR5cGUgRU4xME1CIChFdGhlcm5ldCkNClsxXSsgIERvbmUgICAgICAgICAg ICAgICAgICAgIHRjcGR1bXAgLWkgZW5wMTc3czBmMCBldGhlclsxMjoyXSAhPSAnMHg4OGNjJyAt dyAuL2dldFBhY2thZ2VCeVRjcGR1bXAuY2FwIDI+IC9kZXYvbnVsbAoxMi8wNS8yMDIwIDExOjQx OjAyICAgICAgICAgIFRlc3RVbml0VGVzdHNMb29wYmFjazogVGVzdCBDYXNlIHRlc3RfbG9vcGJh Y2tfbW9kZSBSZXN1bHQgUEFTU0VEOgoxMi8wNS8yMDIwIDExOjQxOjAyICAgICAgICAgICAgICBk dXQuMTAuMjQwLjE4My42MTogY3AgL3RtcC90ZXN0X3BtZF9wZXJmLmMgYXBwL3Rlc3QvdGVzdF9w bWRfcGVyZi5jCjEyLzA1LzIwMjAgMTE6NDE6MDIgICAgICAgICAgICAgIGR1dC4xMC4yNDAuMTgz LjYxOiAKMTIvMDUvMjAyMCAxMTo0MTowMiAgICAgICAgICAgICAgZHV0LjEwLjI0MC4xODMuNjE6 IGtpbGxfYWxsOiBjYWxsZWQgYnkgZHV0IGFuZCBwcmVmaXggbGlzdCBoYXMgdmFsdWUuCjEyLzA1 LzIwMjAgMTE6NDE6MDIgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHRzOiAKVEVTVCBTVUlU RSBFTkRFRDogVGVzdFVuaXRUZXN0c0xvb3BiYWNrCg== --_004_MWHPR1101MB22540E9E7F0B63909E3FEF3BFBBE0MWHPR1101MB2254_--