From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 8679 invoked by alias); 8 Oct 2010 23:08:13 -0000 Received: (qmail 8662 invoked by uid 22791); 8 Oct 2010 23:08:08 -0000 X-SWARE-Spam-Status: No, hits=-1.9 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,SPF_HELO_PASS,T_RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from smtp-out.google.com (HELO smtp-out.google.com) (74.125.121.35) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Fri, 08 Oct 2010 23:08:00 +0000 Received: from hpaq14.eem.corp.google.com (hpaq14.eem.corp.google.com [172.25.149.14]) by smtp-out.google.com with ESMTP id o98N7vkR012710 for ; Fri, 8 Oct 2010 16:07:57 -0700 Received: from vws19 (vws19.prod.google.com [10.241.21.147]) by hpaq14.eem.corp.google.com with ESMTP id o98N7tbo014867 for ; Fri, 8 Oct 2010 16:07:56 -0700 Received: by vws19 with SMTP id 19so542291vws.28 for ; Fri, 08 Oct 2010 16:07:55 -0700 (PDT) MIME-Version: 1.0 Received: by 10.220.187.200 with SMTP id cx8mr889207vcb.142.1286579273021; Fri, 08 Oct 2010 16:07:53 -0700 (PDT) Received: by 10.220.118.2 with HTTP; Fri, 8 Oct 2010 16:07:52 -0700 (PDT) In-Reply-To: <20101006204434.DCD842461B2@ruffy.mtv.corp.google.com> References: <20101006204434.DCD842461B2@ruffy.mtv.corp.google.com> Date: Fri, 08 Oct 2010 23:08:00 -0000 Message-ID: Subject: Re: [RFA] New python module gdb.types From: Doug Evans To: gdb-patches@sourceware.org, Eli Zaretskii , Joel Brobecker , Tom Tromey Content-Type: multipart/mixed; boundary=90e6ba4fc58c8b3b64049223141d X-System-Of-Record: true X-IsSubscribed: yes Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2010-10/txt/msg00170.txt.bz2 --90e6ba4fc58c8b3b64049223141d Content-Type: text/plain; charset=ISO-8859-1 Content-length: 896 On Wed, Oct 6, 2010 at 1:44 PM, Doug Evans wrote: > Hi. > > This patch adds a new python module to gdb, gdb.types. > It contains a small collection of utilities that I've been using. Here's the current version of the patch. Ok to check in? 2010-10-08 Doug Evans New python module gdb.types. * NEWS: Document it. * data-directory/Makefile.in (PYTHON_FILES): Add gdb/types.py. * python/lib/gdb/types.py: New file. testsuite/ * lib/gdb-python.exp (gdb_check_python_config): New function. * gdb.python/Makefile.in (EXECUTABLES): Add lib-types. * gdb.python/lib-types.cc: New file. * gdb.python/lib-types.exp: New file. doc/ * gdb.texinfo (Python): Add "Python modules". (Types in Python): Add reference to gdb.types section. (Python modules): New node. --90e6ba4fc58c8b3b64049223141d Content-Type: text/plain; charset=US-ASCII; name="gdb-101008-types-module-2.patch.txt" Content-Disposition: attachment; filename="gdb-101008-types-module-2.patch.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gf1o1oui0 Content-length: 20834 MjAxMC0xMC0wOCAgRG91ZyBFdmFucyAgPGRqZUBnb29nbGUuY29tPgoKCU5l dyBweXRob24gbW9kdWxlIGdkYi50eXBlcy4KCSogTkVXUzogRG9jdW1lbnQg aXQuCgkqIGRhdGEtZGlyZWN0b3J5L01ha2VmaWxlLmluIChQWVRIT05fRklM RVMpOiBBZGQgZ2RiL3R5cGVzLnB5LgoJKiBweXRob24vbGliL2dkYi90eXBl cy5weTogTmV3IGZpbGUuCgoJdGVzdHN1aXRlLwoJKiBsaWIvZ2RiLXB5dGhv bi5leHAgKGdkYl9jaGVja19weXRob25fY29uZmlnKTogTmV3IGZ1bmN0aW9u LgoJKiBnZGIucHl0aG9uL01ha2VmaWxlLmluIChFWEVDVVRBQkxFUyk6IEFk ZCBsaWItdHlwZXMuCgkqIGdkYi5weXRob24vbGliLXR5cGVzLmNjOiBOZXcg ZmlsZS4KCSogZ2RiLnB5dGhvbi9saWItdHlwZXMuZXhwOiBOZXcgZmlsZS4K Cglkb2MvCgkqIGdkYi50ZXhpbmZvIChQeXRob24pOiBBZGQgIlB5dGhvbiBt b2R1bGVzIi4KCShUeXBlcyBpbiBQeXRob24pOiBBZGQgcmVmZXJlbmNlIHRv IGdkYi50eXBlcyBzZWN0aW9uLgoJKFB5dGhvbiBtb2R1bGVzKTogTmV3IG5v ZGUuCgpJbmRleDogTkVXUwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBm aWxlOiAvY3ZzL3NyYy9zcmMvZ2RiL05FV1MsdgpyZXRyaWV2aW5nIHJldmlz aW9uIDEuNDA2CmRpZmYgLXUgLXAgLXIxLjQwNiBORVdTCi0tLSBORVdTCTI4 IFNlcCAyMDEwIDIxOjQwOjIzIC0wMDAwCTEuNDA2CisrKyBORVdTCTggT2N0 IDIwMTAgMjM6MDM6MjggLTAwMDAKQEAgLTEyLDYgKzEyLDEwIEBACiAKICAg ICAgcmVzdWx0ID0gc29tZV92YWx1ZSAoMTAsMjApCiAKKyAgKiogTW9kdWxl IGdkYi50eXBlcyBoYXMgYmVlbiBhZGRlZC4KKyAgICAgSXQgY29udGFpbnMg YSBjb2xsZWN0aW9uIG9mIHV0aWxpdGllcyBmb3Igd29ya2luZyB3aXRoIGdk Yi5UeXBlcyBvYmplY3RzOgorICAgICBnZXRfYmFzaWNfdHlwZSwgaGFzX2Zp ZWxkLCBtYWtlX2VudW1fZGljdC4KKwogKiBDKysgSW1wcm92ZW1lbnRzOgog CiAgICoqIEdEQiBub3cgcHV0cyB0ZW1wbGF0ZSBwYXJhbWV0ZXJzIGluIHNj b3BlIHdoZW4gZGVidWdnaW5nIGluIGFuCkluZGV4OiBkYXRhLWRpcmVjdG9y eS9NYWtlZmlsZS5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxl OiAvY3ZzL3NyYy9zcmMvZ2RiL2RhdGEtZGlyZWN0b3J5L01ha2VmaWxlLmlu LHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjIKZGlmZiAtdSAtcCAtcjEuMiBN YWtlZmlsZS5pbgotLS0gZGF0YS1kaXJlY3RvcnkvTWFrZWZpbGUuaW4JNyBP Y3QgMjAxMCAwMDoxODoyMiAtMDAwMAkxLjIKKysrIGRhdGEtZGlyZWN0b3J5 L01ha2VmaWxlLmluCTggT2N0IDIwMTAgMjM6MDM6MjggLTAwMDAKQEAgLTUx LDcgKzUxLDggQEAgU1lTQ0FMTFNfRklMRVMgPSBcCiBQWVRIT05fRElSID0g cHl0aG9uCiBQWVRIT05fSU5TVEFMTF9ESVIgPSAkKERFU1RESVIpLyQoR0RC X0RBVEFESVIpLyQoUFlUSE9OX0RJUikKIFBZVEhPTl9GSUxFUyA9IFwKLQln ZGIvX19pbml0X18ucHkKKwlnZGIvX19pbml0X18ucHkgXAorCWdkYi90eXBl cy5weQogCiAuUEhPTlk6IGFsbAogYWxsOiBzdGFtcC1zeXNjYWxscyBzdGFt cC1weXRob24KSW5kZXg6IGRvYy9nZGIudGV4aW5mbwo9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3NyYy9zcmMvZ2RiL2RvYy9nZGIu dGV4aW5mbyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS43NjcKZGlmZiAtdSAt cCAtcjEuNzY3IGdkYi50ZXhpbmZvCi0tLSBkb2MvZ2RiLnRleGluZm8JMjgg U2VwIDIwMTAgMjE6NDA6MjMgLTAwMDAJMS43NjcKKysrIGRvYy9nZGIudGV4 aW5mbwk4IE9jdCAyMDEwIDIzOjAzOjI4IC0wMDAwCkBAIC0yMDQwMSw2ICsy MDQwMSw3IEBAIHRoZSBQeXRob24gaW50ZXJwcmV0ZXIgdG8gbG9jYXRlIGFs bCBzY3IKICogUHl0aG9uIENvbW1hbmRzOjogICAgICAgICAgICAgQWNjZXNz aW5nIFB5dGhvbiBmcm9tIEB2YWx1ZXtHREJOfS4KICogUHl0aG9uIEFQSTo6 ICAgICAgICAgICAgICAgICAgQWNjZXNzaW5nIEB2YWx1ZXtHREJOfSBmcm9t IFB5dGhvbi4KICogQXV0by1sb2FkaW5nOjogICAgICAgICAgICAgICAgQXV0 b21hdGljYWxseSBsb2FkaW5nIFB5dGhvbiBjb2RlLgorKiBQeXRob24gbW9k dWxlczo6ICAgICAgICAgICAgICBQeXRob24gbW9kdWxlcyBwcm92aWRlZCBi eSBAdmFsdWV7R0RCTn0uCiBAZW5kIG1lbnUKIAogQG5vZGUgUHl0aG9uIENv bW1hbmRzCkBAIC0yMDc4OSw3ICsyMDc5MCw3IEBAIHRoaXMgdmFsdWUsIHRo dXMgaXQgaXMgbm90IGF2YWlsYWJsZSBmb3IKIAogQGRlZml2YXIgVmFsdWUg dHlwZQogVGhlIHR5cGUgb2YgdGhpcyBAY29kZXtnZGIuVmFsdWV9LiAgVGhl IHZhbHVlIG9mIHRoaXMgYXR0cmlidXRlIGlzIGEKLUBjb2Rle2dkYi5UeXBl fSBvYmplY3QuCitAY29kZXtnZGIuVHlwZX0gb2JqZWN0IChAcHhyZWZ7VHlw ZXMgSW4gUHl0aG9ufSkuCiBAZW5kIGRlZml2YXIKIAogQGRlZml2YXIgVmFs dWUgZHluYW1pY190eXBlCkBAIC0yMTI0NSw2ICsyMTI0Niw5IEBAIEEgZnVu Y3Rpb24gaW50ZXJuYWwgdG8gQHZhbHVle0dEQk59LiAgVGgKIGNvbnZlbmll bmNlIGZ1bmN0aW9ucy4KIEBlbmQgdGFibGUKIAorRnVydGhlciBzdXBwb3J0 IGZvciB0eXBlcyBpcyBwcm92aWRlZCBpbiB0aGUgQGNvZGV7Z2RiLnR5cGVz fQorUHl0aG9uIG1vZHVsZSAoQHB4cmVme2dkYi50eXBlc30pLgorCiBAbm9k ZSBQcmV0dHkgUHJpbnRpbmcgQVBJCiBAc3Vic3Vic2VjdGlvbiBQcmV0dHkg UHJpbnRpbmcgQVBJCiAKQEAgLTIyOTExLDYgKzIyOTE1LDM3IEBAIGN1bWJl cnNvbWUuICBJdCBtYXkgYmUgZWFzaWVyIHRvIHNwZWNpZnkKIHRvcCBvZiB0 aGUgc291cmNlIHRyZWUgdG8gdGhlIHNvdXJjZSBzZWFyY2ggcGF0aC4KIEBl bmQgaXRlbWl6ZQogCitAbm9kZSBQeXRob24gbW9kdWxlcworQHN1YnNlY3Rp b24gUHl0aG9uIG1vZHVsZXMKK0BjaW5kZXggcHl0aG9uIG1vZHVsZXMKKwor QGMgSXQgaXMgYXNzdW1lZCB0aGF0IGF0IGxlYXN0IG9uZSBtb3JlIG1vZHVs ZSB3aWxsIGJlIGFkZGVkIGJlZm9yZQorQGMgdGhlIG5leHQgcmVsZWFzZSBv ZiBnZGIuCitAdmFsdWV7R0RCTn0gY29tZXMgd2l0aCBhIG1vZHVsZSB0byBh c3Npc3Qgd3JpdGluZyBQeXRob24gY29kZS4KKworQG1lbnUKKyogZ2RiLnR5 cGVzOjogICAgICAgICAgVXRpbGl0aWVzIGZvciB3b3JraW5nIHdpdGggdHlw ZXMuCitAZW5kIG1lbnUKKworQG5vZGUgZ2RiLnR5cGVzCitAc3Vic3Vic2Vj dGlvbiBnZGIudHlwZXMKKworVGhpcyBtb2R1bGUgcHJvdmlkZXMgYSBjb2xs ZWN0aW9uIG9mIHV0aWxpdGllcyBmb3Igd29ya2luZyB3aXRoCitAY29kZXtn ZGIuVHlwZXN9IG9iamVjdHMuCisKK0B0YWJsZSBAY29kZQorQGl0ZW0gZ2V0 X2Jhc2ljX3R5cGUgKEB2YXJ7dHlwZX0pCitSZXR1cm4gQHZhcnt0eXBlfSB3 aXRoIGNvbnN0IGFuZCB2b2xhdGlsZSBxdWFsaWZpZXJzIHN0cmlwcGVkLAor YW5kIHdpdGggdHlwZWRlZnMgYW5kIHJlZmVyZW5jZXMgY29udmVydGVkIHRv IHRoZSB1bmRlcmx5aW5nIHR5cGUuCisKK0BpdGVtIGhhc19maWVsZCAoQHZh cnt0eXBlfSwgQHZhcntmaWVsZH0pCitSZXR1cm4gQGNvZGV7VHJ1ZX0gaWYg QHZhcnt0eXBlfSwgYXNzdW1lZCB0byBiZSBhIHR5cGUgd2l0aCBmaWVsZHMK KyhlLmcuLCBhIHN0cnVjdHVyZSBvciB1bmlvbiksIGhhcyBmaWVsZCBAdmFy e2ZpZWxkfS4KKworQGl0ZW0gbWFrZV9lbnVtX2RpY3QgKEB2YXJ7ZW51bV90 eXBlfSkKK1JldHVybiBhIFB5dGhvbiBkaWN0aW9uYXJ5IG1hZGUgZnJvbSBA dmFye2VudW1fdHlwZX0uCitAZW5kIHRhYmxlCisKIEBub2RlIEludGVycHJl dGVycwogQGNoYXB0ZXIgQ29tbWFuZCBJbnRlcnByZXRlcnMKIEBjaW5kZXgg Y29tbWFuZCBpbnRlcnByZXRlcnMKSW5kZXg6IHB5dGhvbi9saWIvZ2RiL3R5 cGVzLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IHB5dGhv bi9saWIvZ2RiL3R5cGVzLnB5CmRpZmYgLU4gcHl0aG9uL2xpYi9nZGIvdHlw ZXMucHkKLS0tIC9kZXYvbnVsbAkxIEphbiAxOTcwIDAwOjAwOjAwIC0wMDAw CisrKyBweXRob24vbGliL2dkYi90eXBlcy5weQk4IE9jdCAyMDEwIDIzOjAz OjI4IC0wMDAwCkBAIC0wLDAgKzEsNzcgQEAKKyMgVHlwZSB1dGlsaXRpZXMu CisjIENvcHlyaWdodCAoQykgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24sIEluYy4KKworIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsg eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorIyBpdCB1 bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGFzIHB1Ymxpc2hlZCBieQorIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgor IyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIworIyBU aGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp dCB3aWxsIGJlIHVzZWZ1bCwKKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgTUVS Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFLiAgU2VlIHRoZQorIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm b3IgbW9yZSBkZXRhaWxzLgorIworIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2 ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor IyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRw Oi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKworIiIiVXRpbGl0aWVzIGZv ciB3b3JraW5nIHdpdGggZ2RiLlR5cGVzLiIiIgorCitpbXBvcnQgZ2RiCisK KworZGVmIGdldF9iYXNpY190eXBlKHR5cGVfKToKKyAgICAiIiJSZXR1cm4g dGhlICJiYXNpYyIgdHlwZSBvZiBhIHR5cGUuCisKKyAgICBBcmd1bWVudHM6 CisgICAgICAgIHR5cGVfOiBUaGUgdHlwZSB0byByZWR1Y2UgdG8gaXRzIGJh c2ljIHR5cGUuCisKKyAgICBSZXR1cm5zOgorICAgICAgICB0eXBlXyB3aXRo IGNvbnN0L3ZvbGF0aWxlIGlzIHN0cmlwcGVkIGF3YXksIGFuZCB0eXBlZGVm cy9yZWZlcmVuY2VzCisgICAgICAgIGFyZSBjb252ZXJ0ZWQgdG8gdGhlIG9y aWdpbmFsIHR5cGUuCisgICAgIiIiCisKKyAgICBpZiB0eXBlXy5jb2RlID09 IGdkYi5UWVBFX0NPREVfUkVGOgorICAgICAgICB0eXBlXyA9IHR5cGVfLnRh cmdldCgpCisgICAgcmV0dXJuIHR5cGVfLnVucXVhbGlmaWVkKCkuc3RyaXBf dHlwZWRlZnMoKQorCisKK2RlZiBoYXNfZmllbGQodHlwZV8sIGZpZWxkKToK KyAgICAiIiJSZXR1cm4gVHJ1ZSBpZiBhIHR5cGUgaGFzIHRoZSBzcGVjaWZp ZWQgZmllbGQuCisKKyAgICBBcmd1bWVudHM6CisgICAgICAgIHR5cGVfOiBU aGUgdHlwZSB0byBleGFtaW5lLgorICAgICAgICAgICAgSXQgbXVzdCBiZSBv bmUgb2YgZ2RiLlRZUEVfQ09ERV9TVFJVQ1QsIGdkYi5UWVBFX0NPREVfVU5J T04uCisgICAgICAgIGZpZWxkOiBUaGUgbmFtZSBvZiB0aGUgZmllbGQgdG8g bG9vayB1cC4KKworICAgIFJldHVybnM6CisgICAgICAgIFRydWUgaWYgdGhl IGZpZWxkIGlzIHByZXNlbnQgZWl0aGVyIGluIHR5cGVfIG9yIGFueSBiYXNl Y2xhc3MuCisKKyAgICBSYWlzZXM6CisgICAgICAgIFR5cGVFcnJvcjogVGhl IHR5cGUgaXMgbm90IGEgc3RydWN0IG9yIHVuaW9uLgorICAgICIiIgorCisg ICAgdHlwZV8gPSBnZXRfYmFzaWNfdHlwZSh0eXBlXykKKyAgICBpZiAodHlw ZV8uY29kZSAhPSBnZGIuVFlQRV9DT0RFX1NUUlVDVCBhbmQKKyAgICAgICAg dHlwZV8uY29kZSAhPSBnZGIuVFlQRV9DT0RFX1VOSU9OKToKKyAgICAgICAg cmFpc2UgVHlwZUVycm9yKCJub3QgYSBzdHJ1Y3Qgb3IgdW5pb24iKQorICAg IGZvciBmIGluIHR5cGVfLmZpZWxkcygpOgorICAgICAgICBpZiBmLmlzX2Jh c2VfY2xhc3M6CisgICAgICAgICAgICBpZiBoYXNfZmllbGQoZi50eXBlLCBm aWVsZCk6CisgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAg ZWxzZToKKyAgICAgICAgICAgICMgTk9URTogZi5uYW1lIGNvdWxkIGJlIE5v bmUKKyAgICAgICAgICAgIGlmIGYubmFtZSA9PSBmaWVsZDoKKyAgICAgICAg ICAgICAgICByZXR1cm4gVHJ1ZQorICAgIHJldHVybiBGYWxzZQorCisKK2Rl ZiBtYWtlX2VudW1fZGljdChlbnVtX3R5cGUpOgorICAgICIiIlJldHVybiBh IGRpY3Rpb25hcnkgZnJvbSBhIHByb2dyYW0ncyBlbnVtIHR5cGUuIiIiCisK KyAgICBpZiBlbnVtX3R5cGUuY29kZSAhPSBnZGIuVFlQRV9DT0RFX0VOVU06 CisgICAgICAgIHJhaXNlIFR5cGVFcnJvcigibm90IGFuIGVudW0gdHlwZSIp CisgICAgZW51bV9kaWN0ID0ge30KKyAgICBmb3IgZmllbGQgaW4gZW51bV90 eXBlLmZpZWxkcygpOgorICAgICAgICAjIFRoZSBlbnVtJ3MgdmFsdWUgaXMg c3RvcmVkIGluICJiaXRwb3MiLgorICAgICAgICBlbnVtX2RpY3RbZmllbGQu bmFtZV0gPSBmaWVsZC5iaXRwb3MKKyAgICByZXR1cm4gZW51bV9kaWN0Cklu ZGV4OiB0ZXN0c3VpdGUvZ2RiLnB5dGhvbi9NYWtlZmlsZS5pbgo9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3NyYy9zcmMvZ2RiL3Rl c3RzdWl0ZS9nZGIucHl0aG9uL01ha2VmaWxlLmluLHYKcmV0cmlldmluZyBy ZXZpc2lvbiAxLjgKZGlmZiAtdSAtcCAtcjEuOCBNYWtlZmlsZS5pbgotLS0g dGVzdHN1aXRlL2dkYi5weXRob24vTWFrZWZpbGUuaW4JMTkgQXVnIDIwMTAg MTc6MDA6NTcgLTAwMDAJMS44CisrKyB0ZXN0c3VpdGUvZ2RiLnB5dGhvbi9N YWtlZmlsZS5pbgk4IE9jdCAyMDEwIDIzOjAzOjI4IC0wMDAwCkBAIC0zLDcg KzMsNyBAQCBzcmNkaXIgPSBAc3JjZGlyQAogCiBFWEVDVVRBQkxFUyA9IHB5 LXR5cGUgcHktdmFsdWUgcHktcHJldHR5cHJpbnQgcHktdGVtcGxhdGUgcHkt YmxvY2sgXAogCQlweS1zeW1ib2wgcHktbWkgcHktYnJlYWtwb2ludCBweS1p bmZlcmlvciBweS1pbmZ0aHJlYWQgXAotCQlweS1zaGFyZWQgcHl0aG9uCisJ CXB5LXNoYXJlZCBweXRob24gbGliLXR5cGVzCiAKIE1JU0NFTExBTkVPVVMg PSBweS1zaGFyZWQtc2wuc2wKIApJbmRleDogdGVzdHN1aXRlL2dkYi5weXRo b24vbGliLXR5cGVzLmNjCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZp bGU6IHRlc3RzdWl0ZS9nZGIucHl0aG9uL2xpYi10eXBlcy5jYwpkaWZmIC1O IHRlc3RzdWl0ZS9nZGIucHl0aG9uL2xpYi10eXBlcy5jYwotLS0gL2Rldi9u dWxsCTEgSmFuIDE5NzAgMDA6MDA6MDAgLTAwMDAKKysrIHRlc3RzdWl0ZS9n ZGIucHl0aG9uL2xpYi10eXBlcy5jYwk4IE9jdCAyMDEwIDIzOjAzOjI4IC0w MDAwCkBAIC0wLDAgKzEsNTMgQEAKKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFy dCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCisKKyAgIENvcHlyaWdodCAy MDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCisgICBUaGlz IHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1 dGUgaXQgYW5kL29yIG1vZGlmeQorICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQg YnkKKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2 ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisgICAoYXQgeW91ciBvcHRp b24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICBUaGlzIHByb2dyYW0gaXMg ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1 bCwKKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICBNRVJDSEFOVEFCSUxJVFkg b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl CisgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh aWxzLgorCisgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgYWxvbmcgd2l0 aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUu b3JnL2xpY2Vuc2VzLz4uICAqLworCitjbGFzcyBjbGFzczEKK3sKKyBwdWJs aWM6CisgIGNsYXNzMSAoaW50IF94KSA6IHggKF94KSB7fQorICBpbnQgeDsK K307CisKK2NsYXNzMSBzaW1wbGVfY2xhc3MxICg0Mik7Citjb25zdCBjbGFz czEgY29uc3RfY2xhc3MxICg0Mik7Cit2b2xhdGlsZSBjbGFzczEgdm9sYXRp bGVfY2xhc3MxICg0Mik7Citjb25zdCB2b2xhdGlsZSBjbGFzczEgY29uc3Rf dm9sYXRpbGVfY2xhc3MxICg0Mik7CisKK3R5cGVkZWYgY2xhc3MxIGNsYXNz MjsKKworY2xhc3MyIHR5cGVkZWZfY2xhc3MxICg0Mik7CisKK2NsYXNzMSYg cmVmX2NsYXNzMSAoc2ltcGxlX2NsYXNzMSk7CisKK2NsYXNzIHN1YmNsYXNz MSA6IHB1YmxpYyBjbGFzczEKK3sKKyBwdWJsaWM6CisgIHN1YmNsYXNzMSAo aW50IF94LCBpbnQgX3kpIDogY2xhc3MxIChfeCksIHkgKF95KSB7fQorICBp bnQgeTsKK307CisKK3N1YmNsYXNzMSBzaW1wbGVfc3ViY2xhc3MxICg0Miwg NDMpOworCitlbnVtIGVudW0xIHsgQSwgQiwgQyB9OworCitlbnVtMSBzaW1w bGVfZW51bTEgKEEpOworCitpbnQKK21haW4gKCkKK3sKKyAgcmV0dXJuIDA7 Cit9CkluZGV4OiB0ZXN0c3VpdGUvZ2RiLnB5dGhvbi9saWItdHlwZXMuZXhw Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IHRlc3RzdWl0ZS9n ZGIucHl0aG9uL2xpYi10eXBlcy5leHAKZGlmZiAtTiB0ZXN0c3VpdGUvZ2Ri LnB5dGhvbi9saWItdHlwZXMuZXhwCi0tLSAvZGV2L251bGwJMSBKYW4gMTk3 MCAwMDowMDowMCAtMDAwMAorKysgdGVzdHN1aXRlL2dkYi5weXRob24vbGli LXR5cGVzLmV4cAk4IE9jdCAyMDEwIDIzOjAzOjI4IC0wMDAwCkBAIC0wLDAg KzEsMTIzIEBACisjIENvcHlyaWdodCAoQykgMjAxMCBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24sIEluYy4KKworIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBz b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlm eQorIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorIyB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNl bnNlLCBvcgorIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u LgorIworIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyMgYnV0IFdJVEhPVVQgQU5Z IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg b2YKKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD VUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorIyBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIworIyBZb3Ugc2hvdWxkIGhh dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZQorIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwg c2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKworIyBUaGlz IGZpbGUgaXMgcGFydCBvZiB0aGUgR0RCIHRlc3RzdWl0ZS4KKyMgSXQgdGVz dHMgdGhlIHR5cGVzLnB5IG1vZHVsZS4KKworaWYgJHRyYWNlbGV2ZWwgdGhl biB7CisgICAgc3RyYWNlICR0cmFjZWxldmVsCit9CisKK2xvYWRfbGliIGdk Yi1weXRob24uZXhwCisKK3NldCB0ZXN0ZmlsZSAibGliLXR5cGVzIgorc2V0 IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uY2MKK3NldCBiaW5maWxlICR7b2JqZGly fS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0KK2lmIHsgW2dkYl9jb21waWxlICIk e3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0iICIke2JpbmZpbGV9IiBl eGVjdXRhYmxlIHtkZWJ1ZyBjKyt9XSAhPSAiIiB9IHsKKyAgICB1bnRlc3Rl ZCAiQ291bGRuJ3QgY29tcGlsZSAke3NyY2ZpbGV9IgorICAgIHJldHVybiAt MQorfQorCisjIFN0YXJ0IHdpdGggYSBmcmVzaCBnZGIuCitnZGJfZXhpdAor Z2RiX3N0YXJ0CitnZGJfcmVpbml0aWFsaXplX2RpciAkc3JjZGlyLyRzdWJk aXIKK2dkYl9sb2FkICR7YmluZmlsZX0KKworIyBTa2lwIGFsbCB0ZXN0cyBp ZiBQeXRob24gc2NyaXB0aW5nIGlzIG5vdCBlbmFibGVkLgoraWYgeyBbc2tp cF9weXRob25fdGVzdHNdIH0geyBjb250aW51ZSB9CisKK2lmICFbcnVudG9f bWFpbl0gdGhlbiB7CisgICAgZmFpbCAiQ2FuJ3QgcnVuIHRvIG1haW4iCisg ICAgcmV0dXJuIDAKK30KKworIyBFbnN1cmUgc3lzLnBhdGgsIGV0LmFsLiBh cmUgaW5pdGlhbGl6ZWQgcHJvcGVybHkuCitnZGJfY2hlY2tfcHl0aG9uX2Nv bmZpZworCitnZGJfdGVzdF9ub19vdXRwdXQgInB5dGhvbiBpbXBvcnQgZ2Ri LnR5cGVzIgorCisjIHRlc3QgZ2V0X2Jhc2ljX3R5cGUgY29uc3Qgc3RyaXBw aW5nCitnZGJfdGVzdF9ub19vdXRwdXQgInB5dGhvbiBjb25zdF9jbGFzczEg PSBnZGIucGFyc2VfYW5kX2V2YWwgKCdjb25zdF9jbGFzczEnKSIKK2dkYl90 ZXN0X25vX291dHB1dCAicHl0aG9uIGJhc2ljX3R5cGVfY29uc3RfY2xhc3Mx ID0gZ2RiLnR5cGVzLmdldF9iYXNpY190eXBlIChjb25zdF9jbGFzczEudHlw ZSkiCitnZGJfdGVzdCAicHl0aG9uIHByaW50IHN0ciAoY29uc3RfY2xhc3Mx LnR5cGUpIiAiY29uc3QgY2xhc3MxIgorc2V0IHRlc3QgImNvbnN0IHN0cmlw cGluZyIKK2dkYl90ZXN0X211bHRpcGxlICJweXRob24gcHJpbnQgc3RyIChi YXNpY190eXBlX2NvbnN0X2NsYXNzMSkiICR0ZXN0IHsKKyAgICAtcmUgIlxb XHJcblxdK2NsYXNzMVxbXHJcblxdKyRnZGJfcHJvbXB0ICQiIHsKKwlwYXNz ICR0ZXN0CisgICAgfQorfQorCitnZGJfdGVzdCAicHl0aG9uIHByaW50IHN0 ciAoYmFzaWNfdHlwZV9jb25zdF9jbGFzczEpIiAiY2xhc3MxIgorCisjIHRl c3QgZ2V0X2Jhc2ljX3R5cGUgdm9sYXRpbGUgc3RyaXBwaW5nCitnZGJfdGVz dF9ub19vdXRwdXQgInB5dGhvbiB2b2xhdGlsZV9jbGFzczEgPSBnZGIucGFy c2VfYW5kX2V2YWwgKCd2b2xhdGlsZV9jbGFzczEnKSIKK2dkYl90ZXN0X25v X291dHB1dCAicHl0aG9uIGJhc2ljX3R5cGVfdm9sYXRpbGVfY2xhc3MxID0g Z2RiLnR5cGVzLmdldF9iYXNpY190eXBlICh2b2xhdGlsZV9jbGFzczEudHlw ZSkiCitnZGJfdGVzdCAicHl0aG9uIHByaW50IHN0ciAodm9sYXRpbGVfY2xh c3MxLnR5cGUpIiAidm9sYXRpbGUgY2xhc3MxIgorc2V0IHRlc3QgInZvbGF0 aWxlIHN0cmlwcGluZyIKK2dkYl90ZXN0X211bHRpcGxlICJweXRob24gcHJp bnQgc3RyIChiYXNpY190eXBlX3ZvbGF0aWxlX2NsYXNzMSkiICR0ZXN0IHsK KyAgICAtcmUgIlxbXHJcblxdK2NsYXNzMVxbXHJcblxdKyRnZGJfcHJvbXB0 ICQiIHsKKwlwYXNzICR0ZXN0CisgICAgfQorfQorCisjIHRlc3QgZ2V0X2Jh c2ljX3R5cGUgdm9sYXRpbGUrY29uc3Qgc3RyaXBwaW5nCitnZGJfdGVzdF9u b19vdXRwdXQgInB5dGhvbiBjb25zdF92b2xhdGlsZV9jbGFzczEgPSBnZGIu cGFyc2VfYW5kX2V2YWwgKCdjb25zdF92b2xhdGlsZV9jbGFzczEnKSIKK2dk Yl90ZXN0X25vX291dHB1dCAicHl0aG9uIGJhc2ljX3R5cGVfY29uc3Rfdm9s YXRpbGVfY2xhc3MxID0gZ2RiLnR5cGVzLmdldF9iYXNpY190eXBlIChjb25z dF92b2xhdGlsZV9jbGFzczEudHlwZSkiCitnZGJfdGVzdCAicHl0aG9uIHBy aW50IHN0ciAoY29uc3Rfdm9sYXRpbGVfY2xhc3MxLnR5cGUpIiAiY29uc3Qg dm9sYXRpbGUgY2xhc3MxIgorc2V0IHRlc3QgInZvbGF0aWxlK2NvbnN0IHN0 cmlwcGluZyIKK2dkYl90ZXN0X211bHRpcGxlICJweXRob24gcHJpbnQgc3Ry IChiYXNpY190eXBlX2NvbnN0X3ZvbGF0aWxlX2NsYXNzMSkiICR0ZXN0IHsK KyAgICAtcmUgIlxbXHJcblxdK2NsYXNzMVxbXHJcblxdKyRnZGJfcHJvbXB0 ICQiIHsKKwlwYXNzICR0ZXN0CisgICAgfQorfQorCisjIHRlc3QgZ2V0X2Jh c2ljX3R5cGUgdHlwZWRlZiBzdHJpcHBpbmcKK2dkYl90ZXN0X25vX291dHB1 dCAicHl0aG9uIHR5cGVkZWZfY2xhc3MxID0gZ2RiLnBhcnNlX2FuZF9ldmFs ICgndHlwZWRlZl9jbGFzczEnKSIKK2dkYl90ZXN0X25vX291dHB1dCAicHl0 aG9uIGJhc2ljX3R5cGVfdHlwZWRlZl9jbGFzczEgPSBnZGIudHlwZXMuZ2V0 X2Jhc2ljX3R5cGUgKHR5cGVkZWZfY2xhc3MxLnR5cGUpIgorZ2RiX3Rlc3Qg InB5dGhvbiBwcmludCBzdHIgKHR5cGVkZWZfY2xhc3MxLnR5cGUpIiAiY2xh c3MyIgorc2V0IHRlc3QgInR5cGVkZWYgc3RyaXBwaW5nIgorZ2RiX3Rlc3Rf bXVsdGlwbGUgInB5dGhvbiBwcmludCBzdHIgKGJhc2ljX3R5cGVfdHlwZWRl Zl9jbGFzczEpIiAkdGVzdCB7CisgICAgLXJlICJcW1xyXG5cXStjbGFzczFc W1xyXG5cXSskZ2RiX3Byb21wdCAkIiB7CisJcGFzcyAkdGVzdAorICAgIH0K K30KKworIyB0ZXN0IGdldF9iYXNpY190eXBlIHJlZmVyZW5jZSBzdHJpcHBp bmcKK2dkYl90ZXN0X25vX291dHB1dCAicHl0aG9uIHJlZl9jbGFzczEgPSBn ZGIucGFyc2VfYW5kX2V2YWwgKCdyZWZfY2xhc3MxJykiCitnZGJfdGVzdF9u b19vdXRwdXQgInB5dGhvbiBiYXNpY190eXBlX3JlZl9jbGFzczEgPSBnZGIu dHlwZXMuZ2V0X2Jhc2ljX3R5cGUgKHJlZl9jbGFzczEudHlwZSkiCitnZGJf dGVzdCAicHl0aG9uIHByaW50IHN0ciAocmVmX2NsYXNzMS50eXBlKSIgImNs YXNzMSAmIgorc2V0IHRlc3QgInJlZmVyZW5jZSBzdHJpcHBpbmciCitnZGJf dGVzdF9tdWx0aXBsZSAicHl0aG9uIHByaW50IHN0ciAoYmFzaWNfdHlwZV9y ZWZfY2xhc3MxKSIgJHRlc3QgeworICAgIC1yZSAiXFtcclxuXF0rY2xhc3Mx XFtcclxuXF0rJGdkYl9wcm9tcHQgJCIgeworCXBhc3MgJHRlc3QKKyAgICB9 Cit9CisKKyMgdGVzdCBoYXNfZmllbGQgb24gc2ltcGxlIGNsYXNzCitnZGJf dGVzdF9ub19vdXRwdXQgInB5dGhvbiBzaW1wbGVfY2xhc3MxID0gZ2RiLnBh cnNlX2FuZF9ldmFsICgnc2ltcGxlX2NsYXNzMScpIgorZ2RiX3Rlc3QgInB5 dGhvbiBwcmludCBnZGIudHlwZXMuaGFzX2ZpZWxkIChzaW1wbGVfY2xhc3Mx LnR5cGUsICd4JykiICJUcnVlIgorZ2RiX3Rlc3QgInB5dGhvbiBwcmludCBn ZGIudHlwZXMuaGFzX2ZpZWxkIChzaW1wbGVfY2xhc3MxLnR5cGUsICdub3Bl JykiICJGYWxzZSIKKworIyB0ZXN0IGhhc19maWVsZCBpbiBiYXNlIGNsYXNz CitnZGJfdGVzdF9ub19vdXRwdXQgInB5dGhvbiBzaW1wbGVfc3ViY2xhc3Mx ID0gZ2RiLnBhcnNlX2FuZF9ldmFsICgnc2ltcGxlX3N1YmNsYXNzMScpIgor Z2RiX3Rlc3QgInB5dGhvbiBwcmludCBnZGIudHlwZXMuaGFzX2ZpZWxkIChz aW1wbGVfY2xhc3MxLnR5cGUsICd4JykiICJUcnVlIgorCisjIHRlc3QgbWFr ZV9lbnVtX2RpY3QKK2dkYl90ZXN0X25vX291dHB1dCAicHl0aG9uIHNpbXBs ZV9lbnVtMSA9IGdkYi5wYXJzZV9hbmRfZXZhbCAoJ3NpbXBsZV9lbnVtMScp IgorZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJweXRob24gZW51bTFfZGljdCA9IGdk Yi50eXBlcy5tYWtlX2VudW1fZGljdCAoc2ltcGxlX2VudW0xLnR5cGUpIgor Z2RiX3Rlc3Rfbm9fb3V0cHV0ICJweXRob24gZW51bTFfbGlzdCA9IGVudW0x X2RpY3QuaXRlbXMgKCkiCitnZGJfdGVzdF9ub19vdXRwdXQgInB5dGhvbiBl bnVtMV9saXN0LnNvcnQgKCkiCitnZGJfdGVzdCAicHl0aG9uIHByaW50IGVu dW0xX2xpc3QiIHtcW1woJ0EnLCAwTFwpLCBcKCdCJywgMUxcKSwgXCgnQycs IDJMXClcXX0KSW5kZXg6IHRlc3RzdWl0ZS9saWIvZ2RiLXB5dGhvbi5leHAK PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9zcmMvc3Jj L2dkYi90ZXN0c3VpdGUvbGliL2dkYi1weXRob24uZXhwLHYKcmV0cmlldmlu ZyByZXZpc2lvbiAxLjEKZGlmZiAtdSAtcCAtcjEuMSBnZGItcHl0aG9uLmV4 cAotLS0gdGVzdHN1aXRlL2xpYi9nZGItcHl0aG9uLmV4cAkxIE9jdCAyMDEw IDE3OjAzOjUwIC0wMDAwCTEuMQorKysgdGVzdHN1aXRlL2xpYi9nZGItcHl0 aG9uLmV4cAk4IE9jdCAyMDEwIDIzOjAzOjI4IC0wMDAwCkBAIC00NSwzICs0 NSwyMSBAQCBwcm9jIGdkYl9weV90ZXN0X211bHRpcGxlIHsgbmFtZSBhcmdz IH0gCiAgICAgfQogICAgIHJldHVybiAwCiB9CisKKyMgRXN0YWJsaXNoIHZh cmlvdXMgcHl0aG9uIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycyBpZiBuZWNl c3NhcnkuCisjIEUuZy4gc3lzLnBhdGguCisKK3Byb2MgZ2RiX2NoZWNrX3B5 dGhvbl9jb25maWcgeyB9IHsKKyAgICBnbG9iYWwgVVNFX0lOU1RBTExFRF9U UkVFCisgICAgIyBJZiB3ZSdyZSBydW5uaW5nIGFuIGluc3RhbGxlZCB2ZXJz aW9uIG9mIGdkYiwgYW5kIHdlIHdhbnQgdG8gdGVzdCB0aGUKKyAgICAjIGlu c3RhbGxlZCB2ZXJzaW9ucyBvZiB0aGUgcHl0aG9uIHN1cHBvcnQgc2NyaXB0 cywgdGhlbiB3ZSBkb24ndCB3YW50CisgICAgIyB0byBwb2ludCBkYXRhLWRp cmVjdG9yeSBhdCB0aGUgYnVpbGQgdHJlZS4KKyAgICBpZiB7IFtpbmZvIGV4 aXN0cyBVU0VfSU5TVEFMTEVEX1RSRUVdICYmICIkVVNFX0lOU1RBTExFRF9U UkVFIiA9PSAieWVzIiB9IHsKKwl2ZXJib3NlIC1sb2cgIkFzc3VtaW5nIHN5 c3RlbSBjb25maWcgYWxyZWFkeSBpbnN0YWxsZWQuIgorICAgIH0gZWxzZSB7 CisJdmVyYm9zZSAtbG9nICJJbnN0YWxsaW5nIHN5c3RlbSBjb25maWcgZnJv bSBidWlsZCB0cmVlLiIKKwlzZXQgZ2RiX2RhdGFfZGlyICJbcHdkXS8uLi9k YXRhLWRpcmVjdG9yeSIKKwlnZGJfdGVzdF9ub19vdXRwdXQgInNldCBkYXRh LWRpcmVjdG9yeSAkZ2RiX2RhdGFfZGlyIgorCWdkYl90ZXN0X25vX291dHB1 dCAicHl0aG9uIEdkYlNldFB5dGhvbkRpcmVjdG9yeSAoJyRnZGJfZGF0YV9k aXIvcHl0aG9uJykiCisgICAgfQorfQo= --90e6ba4fc58c8b3b64049223141d--