From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 9176 invoked by alias); 13 May 2011 22:24:23 -0000 Received: (qmail 9148 invoked by uid 22791); 13 May 2011 22:24:19 -0000 X-SWARE-Spam-Status: No, hits=-2.3 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,SPF_HELO_PASS,TW_BJ,TW_CP,T_RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from smtp-out.google.com (HELO smtp-out.google.com) (74.125.121.67) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Fri, 13 May 2011 22:24:01 +0000 Received: from hpaq13.eem.corp.google.com (hpaq13.eem.corp.google.com [172.25.149.13]) by smtp-out.google.com with ESMTP id p4DMNxg0020659 for ; Fri, 13 May 2011 15:23:59 -0700 Received: from ywi6 (ywi6.prod.google.com [10.192.9.6]) by hpaq13.eem.corp.google.com with ESMTP id p4DMNlX8030478 (version=TLSv1/SSLv3 cipher=RC4-SHA bits=128 verify=NOT) for ; Fri, 13 May 2011 15:23:58 -0700 Received: by ywi6 with SMTP id 6so1299849ywi.31 for ; Fri, 13 May 2011 15:23:57 -0700 (PDT) MIME-Version: 1.0 Received: by 10.91.218.17 with SMTP id v17mr1896211agq.18.1305325437539; Fri, 13 May 2011 15:23:57 -0700 (PDT) Received: by 10.90.72.6 with HTTP; Fri, 13 May 2011 15:23:57 -0700 (PDT) In-Reply-To: References: <20110511211701.C0AD42461AD@ruffy.mtv.corp.google.com> Date: Fri, 13 May 2011 22:24:00 -0000 Message-ID: Subject: Re: [RFA] info auto-load-scripts, plus warning change From: Doug Evans To: Tom Tromey Cc: gdb-patches@sourceware.org Content-Type: multipart/mixed; boundary=00163630fbe1055ab604a32fc39e 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: 2011-05/txt/msg00332.txt.bz2 --00163630fbe1055ab604a32fc39e Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-length: 1967 On Thu, May 12, 2011 at 1:51 PM, Tom Tromey wrote: > > >>>>> "Doug" =3D=3D Doug Evans writes: > > Doug> This patch does three things: > [...] > > Doug> Ok to check in? > > It looked ok to me. > > Doug> =A0Auto-loading can be enabled or disabled. > Doug> +And the list of auto-loaded scripts can be printed. > > This reads strangely. > I would use ", and the list" rather than a separate sentence. Here is what I checked in. 2011-05-13 Doug Evans * NEWS: Mention "info auto-load-scripts". * python/py-auto-load.c (struct auto_load_pspace_info): New member script_not_found_warning_printed. (init_loaded_scripts_info): Renamed from create_loaded_scripts_hash, all callers updated. Initialize script_not_found_warning_printed. (get_auto_load_pspace_data_for_loading): New function. (maybe_add_script): New function. (source_section_scripts): Simplify. Only print one warning regardless of the number of auto-load scripts not found. (clear_section_scripts): Clear script_not_found_warning_printed. (auto_load_objfile_script): Record script in hash table. (count_matching_scripts): New function. (maybe_print_script): Renamed from maybe_print_section_script, all callers updated. Rewrite to use ui_out_*. (info_auto_load_scripts): Renamed from maintenance_print_section_scripts, all callers updated. (gdbpy_initialize_auto_load): "maintenance print section-scripts" renamed as "info auto-load-scripts". doc/ * gdb.texinfo (Auto-loading): Document "info auto-load-scripts". testsuite/ * gdb.python/py-objfile-script.exp: New file. * gdb.python/py-objfile-script.c: New file. * gdb.python/py-objfile-script-gdb.py: New file. * testsuite/gdb.python/py-section-script.exp: Test "info auto-load-scripts". --00163630fbe1055ab604a32fc39e Content-Type: text/plain; charset=US-ASCII; name="gdb-110513-info-auto-load-2.patch.txt" Content-Disposition: attachment; filename="gdb-110513-info-auto-load-2.patch.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gnnp1cgc0 Content-length: 31525 MjAxMS0wNS0xMyAgRG91ZyBFdmFucyAgPGRqZUBnb29nbGUuY29tPgoKCSog TkVXUzogTWVudGlvbiAiaW5mbyBhdXRvLWxvYWQtc2NyaXB0cyIuCgkqIHB5 dGhvbi9weS1hdXRvLWxvYWQuYyAoc3RydWN0IGF1dG9fbG9hZF9wc3BhY2Vf aW5mbyk6IE5ldyBtZW1iZXIKCXNjcmlwdF9ub3RfZm91bmRfd2FybmluZ19w cmludGVkLgoJKGluaXRfbG9hZGVkX3NjcmlwdHNfaW5mbyk6IFJlbmFtZWQg ZnJvbSBjcmVhdGVfbG9hZGVkX3NjcmlwdHNfaGFzaCwKCWFsbCBjYWxsZXJz IHVwZGF0ZWQuICBJbml0aWFsaXplIHNjcmlwdF9ub3RfZm91bmRfd2Fybmlu Z19wcmludGVkLgoJKGdldF9hdXRvX2xvYWRfcHNwYWNlX2RhdGFfZm9yX2xv YWRpbmcpOiBOZXcgZnVuY3Rpb24uCgkobWF5YmVfYWRkX3NjcmlwdCk6IE5l dyBmdW5jdGlvbi4KCShzb3VyY2Vfc2VjdGlvbl9zY3JpcHRzKTogU2ltcGxp ZnkuICBPbmx5IHByaW50IG9uZSB3YXJuaW5nIHJlZ2FyZGxlc3MKCW9mIHRo ZSBudW1iZXIgb2YgYXV0by1sb2FkIHNjcmlwdHMgbm90IGZvdW5kLgoJKGNs ZWFyX3NlY3Rpb25fc2NyaXB0cyk6IENsZWFyIHNjcmlwdF9ub3RfZm91bmRf d2FybmluZ19wcmludGVkLgoJKGF1dG9fbG9hZF9vYmpmaWxlX3NjcmlwdCk6 IFJlY29yZCBzY3JpcHQgaW4gaGFzaCB0YWJsZS4KCShjb3VudF9tYXRjaGlu Z19zY3JpcHRzKTogTmV3IGZ1bmN0aW9uLgoJKG1heWJlX3ByaW50X3Njcmlw dCk6IFJlbmFtZWQgZnJvbSBtYXliZV9wcmludF9zZWN0aW9uX3NjcmlwdCwg YWxsCgljYWxsZXJzIHVwZGF0ZWQuICBSZXdyaXRlIHRvIHVzZSB1aV9vdXRf Ki4KCShpbmZvX2F1dG9fbG9hZF9zY3JpcHRzKTogUmVuYW1lZCBmcm9tCglt YWludGVuYW5jZV9wcmludF9zZWN0aW9uX3NjcmlwdHMsIGFsbCBjYWxsZXJz IHVwZGF0ZWQuCgkoZ2RicHlfaW5pdGlhbGl6ZV9hdXRvX2xvYWQpOiAibWFp bnRlbmFuY2UgcHJpbnQgc2VjdGlvbi1zY3JpcHRzIgoJcmVuYW1lZCBhcyAi aW5mbyBhdXRvLWxvYWQtc2NyaXB0cyIuCgoJZG9jLwoJKiBnZGIudGV4aW5m byAoQXV0by1sb2FkaW5nKTogRG9jdW1lbnQgImluZm8gYXV0by1sb2FkLXNj cmlwdHMiLgoKCXRlc3RzdWl0ZS8KCSogZ2RiLnB5dGhvbi9weS1vYmpmaWxl LXNjcmlwdC5leHA6IE5ldyBmaWxlLgoJKiBnZGIucHl0aG9uL3B5LW9iamZp bGUtc2NyaXB0LmM6IE5ldyBmaWxlLgoJKiBnZGIucHl0aG9uL3B5LW9iamZp bGUtc2NyaXB0LWdkYi5weTogTmV3IGZpbGUuCgkqIHRlc3RzdWl0ZS9nZGIu cHl0aG9uL3B5LXNlY3Rpb24tc2NyaXB0LmV4cDogVGVzdAoJImluZm8gYXV0 by1sb2FkLXNjcmlwdHMiLgoKSW5kZXg6IE5FV1MKPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQpSQ1MgZmlsZTogL2N2cy9zcmMvc3JjL2dkYi9ORVdTLHYKcmV0 cmlldmluZyByZXZpc2lvbiAxLjQzOQpkaWZmIC11IC1wIC1yMS40MzkgTkVX UwotLS0gTkVXUwkxMiBNYXkgMjAxMSAxMjowOToxMyAtMDAwMAkxLjQzOQor KysgTkVXUwkxMyBNYXkgMjAxMSAxOTo0Nzo0MiAtMDAwMApAQCAtMjcsNiAr MjcsMTAgQEAgd2F0Y2ggRVhQUkVTU0lPTiBtYXNrIE1BU0tfVkFMVUUKICAg VGhlIHdhdGNoIGNvbW1hbmQgbm93IHN1cHBvcnRzIHRoZSBtYXNrIGFyZ3Vt ZW50IHdoaWNoIGFsbG93cyBjcmVhdGlvbgogICBvZiBtYXNrZWQgd2F0Y2hw b2ludHMsIGlmIHRoZSBjdXJyZW50IGFyY2hpdGVjdHVyZSBzdXBwb3J0cyB0 aGlzIGZlYXR1cmUuCiAKK2luZm8gYXV0by1sb2FkLXNjcmlwdHMgW1JFR0VY UF0KKyAgVGhpcyBjb21tYW5kIHdhcyBmb3JtZXJseSBuYW1lZCAibWFpbnRl bmFuY2UgcHJpbnQgc2VjdGlvbi1zY3JpcHRzIi4KKyAgSXQgaXMgbm93IGdl bmVyYWxseSB1c2VmdWwgYW5kIGlzIG5vIGxvbmdlciBhIG1haW50ZW5hbmNl LW9ubHkgY29tbWFuZC4KKwogKiBUcmFjZXBvaW50cyBjYW4gbm93IGJlIGVu YWJsZWQgYW5kIGRpc2FibGVkIGF0IGFueSB0aW1lIGFmdGVyIGEgdHJhY2UK ICAgZXhwZXJpbWVudCBoYXMgYmVlbiBzdGFydGVkIHVzaW5nIHRoZSBzdGFu ZGFyZCAiZW5hYmxlIiBhbmQgImRpc2FibGUiCiAgIGNvbW1hbmRzLiAgSXQg aXMgbm93IHBvc3NpYmxlIHRvIHN0YXJ0IGEgdHJhY2UgZXhwZXJpbWVudCB3 aXRoIG5vIGVuYWJsZWQKSW5kZXg6IGRvYy9nZGIudGV4aW5mbwo9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3NyYy9zcmMvZ2RiL2Rv Yy9nZGIudGV4aW5mbyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS44MzYKZGlm ZiAtdSAtcCAtcjEuODM2IGdkYi50ZXhpbmZvCi0tLSBkb2MvZ2RiLnRleGlu Zm8JMTMgTWF5IDIwMTEgMTg6NDU6NDMgLTAwMDAJMS44MzYKKysrIGRvYy9n ZGIudGV4aW5mbwkxMyBNYXkgMjAxMSAxOTo0Nzo0MyAtMDAwMApAQCAtMjM1 NzcsNyArMjM1NzcsOCBAQCBjb21tYW5kLCBvciBiZWNhdXNlIHRoZSBpbmZl cmlvciBoYXMgbG9hCiBUaGUgYXV0by1sb2FkaW5nIGZlYXR1cmUgaXMgdXNl ZnVsIGZvciBzdXBwbHlpbmcgYXBwbGljYXRpb24tc3BlY2lmaWMKIGRlYnVn Z2luZyBjb21tYW5kcyBhbmQgc2NyaXB0cy4KIAotQXV0by1sb2FkaW5nIGNh biBiZSBlbmFibGVkIG9yIGRpc2FibGVkLgorQXV0by1sb2FkaW5nIGNhbiBi ZSBlbmFibGVkIG9yIGRpc2FibGVkLAorYW5kIHRoZSBsaXN0IG9mIGF1dG8t bG9hZGVkIHNjcmlwdHMgY2FuIGJlIHByaW50ZWQuCiAKIEB0YWJsZSBAY29k ZQogQGtpbmRleCBzZXQgYXV0by1sb2FkLXNjcmlwdHMKQEAgLTIzNTg3LDYg KzIzNTg4LDE5IEBAIEVuYWJsZSBvciBkaXNhYmxlIHRoZSBhdXRvLWxvYWRp bmcgb2YgUHkKIEBraW5kZXggc2hvdyBhdXRvLWxvYWQtc2NyaXB0cwogQGl0 ZW0gc2hvdyBhdXRvLWxvYWQtc2NyaXB0cwogU2hvdyB3aGV0aGVyIGF1dG8t bG9hZGluZyBvZiBQeXRob24gc2NyaXB0cyBpcyBlbmFibGVkIG9yIGRpc2Fi bGVkLgorCitAa2luZGV4IGluZm8gYXV0by1sb2FkLXNjcmlwdHMKK0BjaW5k ZXggcHJpbnQgbGlzdCBvZiBhdXRvLWxvYWRlZCBzY3JpcHRzCitAaXRlbSBp bmZvIGF1dG8tbG9hZC1zY3JpcHRzIFtAdmFye3JlZ2V4cH1dCitQcmludCB0 aGUgbGlzdCBvZiBhbGwgc2NyaXB0cyB0aGF0IGdkYiBhdXRvLWxvYWRlZCwg b3IgdHJpZWQgdG8gYXV0by1sb2FkLgorSWYgQHZhcntyZWdleHB9IGlzIHN1 cHBsaWVkIG9ubHkgc2NyaXB0cyB3aXRoIG1hdGNoaW5nIG5hbWVzIGFyZSBw cmludGVkLgorCitAc21hbGxleGFtcGxlCisoZ2RiKSBpbmZvIGF1dG8tbG9h ZC1zY3JpcHRzCitMb2FkZWQgU2NyaXB0ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK KyAgWWVzICBweS1zZWN0aW9uLXNjcmlwdC5weQorCWZ1bGwgbmFtZTogL3Rt cC9weS1zZWN0aW9uLXNjcmlwdC5weQorQGVuZCBzbWFsbGV4YW1wbGUKIEBl bmQgdGFibGUKIAogV2hlbiByZWFkaW5nIGFuIGF1dG8tbG9hZGVkIGZpbGUs IEB2YWx1ZXtHREJOfSBzZXRzIHRoZQpJbmRleDogcHl0aG9uL3B5LWF1dG8t bG9hZC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMv c3JjL3NyYy9nZGIvcHl0aG9uL3B5LWF1dG8tbG9hZC5jLHYKcmV0cmlldmlu ZyByZXZpc2lvbiAxLjgKZGlmZiAtdSAtcCAtcjEuOCBweS1hdXRvLWxvYWQu YwotLS0gcHl0aG9uL3B5LWF1dG8tbG9hZC5jCTYgSmFuIDIwMTEgMDA6NTc6 MDQgLTAwMDAJMS44CisrKyBweXRob24vcHktYXV0by1sb2FkLmMJMTMgTWF5 IDIwMTEgMTk6NDc6NDMgLTAwMDAKQEAgLTE4LDYgKzE4LDcgQEAKICAgIGFs b25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93 d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KIAogI2luY2x1ZGUgImRlZnMu aCIKKyNpbmNsdWRlICJmaWxlbmFtZXMuaCIKICNpbmNsdWRlICJnZGJfc3Ry aW5nLmgiCiAjaW5jbHVkZSAiZ2RiX3JlZ2V4LmgiCiAjaW5jbHVkZSAidG9w LmgiCkBAIC02OCwxMSArNjksMTUgQEAgc3RydWN0IGF1dG9fbG9hZF9wc3Bh Y2VfaW5mbwogewogICAvKiBGb3IgZWFjaCBwcm9ncmFtIHNwYWNlIHdlIGtl ZXAgdHJhY2sgb2YgbG9hZGVkIHNjcmlwdHMuICAqLwogICBzdHJ1Y3QgaHRh YiAqbG9hZGVkX3NjcmlwdHM7CisKKyAgLyogTm9uLXplcm8gaWYgd2UndmUg aXNzdWVkIHRoZSB3YXJuaW5nIGFib3V0IGFuIGF1dG8tbG9hZCBzY3JpcHQg bm90IGJlaW5nCisgICAgIGZvdW5kLiAgV2Ugb25seSB3YW50IHRvIGlzc3Vl IHRoaXMgd2FybmluZyBvbmNlLiAgKi8KKyAgaW50IHNjcmlwdF9ub3RfZm91 bmRfd2FybmluZ19wcmludGVkOwogfTsKIAogLyogT2JqZWN0cyBvZiB0aGlz IHR5cGUgYXJlIHN0b3JlZCBpbiB0aGUgbG9hZGVkIHNjcmlwdCBoYXNoIHRh YmxlLiAgKi8KIAotc3RydWN0IGxvYWRlZF9zY3JpcHRfZW50cnkKK3N0cnVj dCBsb2FkZWRfc2NyaXB0CiB7CiAgIC8qIE5hbWUgYXMgcHJvdmlkZWQgYnkg dGhlIG9iamZpbGUuICAqLwogICBjb25zdCBjaGFyICpuYW1lOwpAQCAtMTMy LDcgKzEzNyw3IEBAIGdldF9hdXRvX2xvYWRfcHNwYWNlX2RhdGEgKHN0cnVj dCBwcm9ncmEKIHN0YXRpYyBoYXNodmFsX3QKIGhhc2hfbG9hZGVkX3Njcmlw dF9lbnRyeSAoY29uc3Qgdm9pZCAqZGF0YSkKIHsKLSAgY29uc3Qgc3RydWN0 IGxvYWRlZF9zY3JpcHRfZW50cnkgKmUgPSBkYXRhOworICBjb25zdCBzdHJ1 Y3QgbG9hZGVkX3NjcmlwdCAqZSA9IGRhdGE7CiAKICAgcmV0dXJuIGh0YWJf aGFzaF9zdHJpbmcgKGUtPm5hbWUpOwogfQpAQCAtMTQyLDE3ICsxNDcsMTcg QEAgaGFzaF9sb2FkZWRfc2NyaXB0X2VudHJ5IChjb25zdCB2b2lkICpkYQog c3RhdGljIGludAogZXFfbG9hZGVkX3NjcmlwdF9lbnRyeSAoY29uc3Qgdm9p ZCAqYSwgY29uc3Qgdm9pZCAqYikKIHsKLSAgY29uc3Qgc3RydWN0IGxvYWRl ZF9zY3JpcHRfZW50cnkgKmVhID0gYTsKLSAgY29uc3Qgc3RydWN0IGxvYWRl ZF9zY3JpcHRfZW50cnkgKmViID0gYjsKKyAgY29uc3Qgc3RydWN0IGxvYWRl ZF9zY3JpcHQgKmVhID0gYTsKKyAgY29uc3Qgc3RydWN0IGxvYWRlZF9zY3Jp cHQgKmViID0gYjsKIAogICByZXR1cm4gc3RyY21wIChlYS0+bmFtZSwgZWIt Pm5hbWUpID09IDA7CiB9CiAKLS8qIENyZWF0ZSB0aGUgaGFzaCB0YWJsZSB1 c2VkIGZvciBsb2FkZWQgc2NyaXB0cy4KKy8qIEluaXRpYWxpemUgdGhlIHRh YmxlIHRvIHRyYWNrIGxvYWRlZCBzY3JpcHRzLgogICAgRWFjaCBlbnRyeSBp cyBoYXNoZWQgYnkgdGhlIGZ1bGwgcGF0aCBuYW1lLiAgKi8KIAogc3RhdGlj IHZvaWQKLWNyZWF0ZV9sb2FkZWRfc2NyaXB0c19oYXNoIChzdHJ1Y3QgYXV0 b19sb2FkX3BzcGFjZV9pbmZvICpwc3BhY2VfaW5mbykKK2luaXRfbG9hZGVk X3NjcmlwdHNfaW5mbyAoc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAq cHNwYWNlX2luZm8pCiB7CiAgIC8qIENob29zZSAzMSBhcyB0aGUgc3RhcnRp bmcgc2l6ZSBvZiB0aGUgaGFzaCB0YWJsZSwgc29tZXdoYXQgYXJiaXRyYXJp bHkuCiAgICAgIFNwYWNlIGZvciBlYWNoIGVudHJ5IGlzIG9idGFpbmVkIHdp dGggb25lIG1hbGxvYyBzbyB3ZSBjYW4gZnJlZSB0aGVtCkBAIC0xNjIsNiAr MTY3LDY0IEBAIGNyZWF0ZV9sb2FkZWRfc2NyaXB0c19oYXNoIChzdHJ1Y3Qg YXV0b18KIAkJCQkJICAgICBoYXNoX2xvYWRlZF9zY3JpcHRfZW50cnksCiAJ CQkJCSAgICAgZXFfbG9hZGVkX3NjcmlwdF9lbnRyeSwKIAkJCQkJICAgICB4 ZnJlZSk7CisKKyAgcHNwYWNlX2luZm8tPnNjcmlwdF9ub3RfZm91bmRfd2Fy bmluZ19wcmludGVkID0gRkFMU0U7Cit9CisKKy8qIFdyYXBwZXIgb24gZ2V0 X2F1dG9fbG9hZF9wc3BhY2VfZGF0YSB0byBhbHNvIGFsbG9jYXRlIHRoZSBo YXNoIHRhYmxlCisgICBmb3IgbG9hZGluZyBzY3JpcHRzLiAgKi8KKworc3Rh dGljIHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKgorZ2V0X2F1dG9f bG9hZF9wc3BhY2VfZGF0YV9mb3JfbG9hZGluZyAoc3RydWN0IHByb2dyYW1f c3BhY2UgKnBzcGFjZSkKK3sKKyAgc3RydWN0IGF1dG9fbG9hZF9wc3BhY2Vf aW5mbyAqaW5mbzsKKworICBpbmZvID0gZ2V0X2F1dG9fbG9hZF9wc3BhY2Vf ZGF0YSAocHNwYWNlKTsKKyAgaWYgKGluZm8tPmxvYWRlZF9zY3JpcHRzID09 IE5VTEwpCisgICAgaW5pdF9sb2FkZWRfc2NyaXB0c19pbmZvIChpbmZvKTsK KworICByZXR1cm4gaW5mbzsKK30KKworLyogQWRkIHNjcmlwdCBOQU1FIHRv IGhhc2ggdGFibGUgSFRBQi4KKyAgIEZVTExfUEFUSCBpcyBOVUxMIGlmIHRo ZSBzY3JpcHQgd2Fzbid0IGZvdW5kLgorICAgVGhlIHJlc3VsdCBpcyB0cnVl IGlmIHRoZSBzY3JpcHQgd2FzIGFscmVhZHkgaW4gdGhlIGhhc2ggdGFibGUu ICAqLworCitzdGF0aWMgaW50CittYXliZV9hZGRfc2NyaXB0IChzdHJ1Y3Qg aHRhYiAqaHRhYiwgY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqZnVs bF9wYXRoKQoreworICBzdHJ1Y3QgbG9hZGVkX3NjcmlwdCAqKnNsb3QsIGVu dHJ5OworICBpbnQgaW5faGFzaF90YWJsZTsKKworICBlbnRyeS5uYW1lID0g bmFtZTsKKyAgZW50cnkuZnVsbF9wYXRoID0gZnVsbF9wYXRoOworICBzbG90 ID0gKHN0cnVjdCBsb2FkZWRfc2NyaXB0ICoqKSBodGFiX2ZpbmRfc2xvdCAo aHRhYiwgJmVudHJ5LCBJTlNFUlQpOworICBpbl9oYXNoX3RhYmxlID0gKnNs b3QgIT0gTlVMTDsKKworICAvKiBJZiB0aGlzIHNjcmlwdCBpcyBub3QgaW4g dGhlIGhhc2ggdGFibGUsIGFkZCBpdC4gICovCisKKyAgaWYgKCEgaW5faGFz aF90YWJsZSkKKyAgICB7CisgICAgICBjaGFyICpwOworCisgICAgICAvKiBB bGxvY2F0ZSBhbGwgc3BhY2UgaW4gb25lIGNodW5rIHNvIGl0J3MgZWFzaWVy IHRvIGZyZWUuICAqLworICAgICAgKnNsb3QgPSB4bWFsbG9jIChzaXplb2Yg KCoqc2xvdCkKKwkJICAgICAgICsgc3RybGVuIChuYW1lKSArIDEKKwkJICAg ICAgICsgKGZ1bGxfcGF0aCAhPSBOVUxMID8gKHN0cmxlbiAoZnVsbF9wYXRo KSArIDEpIDogMCkpOworICAgICAgcCA9ICgoY2hhciopICpzbG90KSArIHNp emVvZiAoKipzbG90KTsKKyAgICAgIHN0cmNweSAocCwgbmFtZSk7CisgICAg ICAoKnNsb3QpLT5uYW1lID0gcDsKKyAgICAgIGlmIChmdWxsX3BhdGggIT0g TlVMTCkKKwl7CisJICBwICs9IHN0cmxlbiAocCkgKyAxOworCSAgc3RyY3B5 IChwLCBmdWxsX3BhdGgpOworCSAgKCpzbG90KS0+ZnVsbF9wYXRoID0gcDsK Kwl9CisgICAgICBlbHNlCisJKCpzbG90KS0+ZnVsbF9wYXRoID0gTlVMTDsK KyAgICB9CisKKyAgcmV0dXJuIGluX2hhc2hfdGFibGU7CiB9CiAKIC8qIExv YWQgc2NyaXB0cyBzcGVjaWZpZWQgaW4gT0JKRklMRS4KQEAgLTE4MiwxMSAr MjQ1LDggQEAgc291cmNlX3NlY3Rpb25fc2NyaXB0cyAoc3RydWN0IG9iamZp bGUgKgogewogICBjb25zdCBjaGFyICpwOwogICBzdHJ1Y3QgYXV0b19sb2Fk X3BzcGFjZV9pbmZvICpwc3BhY2VfaW5mbzsKLSAgc3RydWN0IGxvYWRlZF9z Y3JpcHRfZW50cnkgKipzbG90LCBlbnRyeTsKIAotICBwc3BhY2VfaW5mbyA9 IGdldF9hdXRvX2xvYWRfcHNwYWNlX2RhdGEgKGN1cnJlbnRfcHJvZ3JhbV9z cGFjZSk7Ci0gIGlmIChwc3BhY2VfaW5mby0+bG9hZGVkX3NjcmlwdHMgPT0g TlVMTCkKLSAgICBjcmVhdGVfbG9hZGVkX3NjcmlwdHNfaGFzaCAocHNwYWNl X2luZm8pOworICBwc3BhY2VfaW5mbyA9IGdldF9hdXRvX2xvYWRfcHNwYWNl X2RhdGFfZm9yX2xvYWRpbmcgKGN1cnJlbnRfcHJvZ3JhbV9zcGFjZSk7CiAK ICAgZm9yIChwID0gc3RhcnQ7IHAgPCBlbmQ7ICsrcCkKICAgICB7CkBAIC0y MjYsNTEgKzI4NiwyOSBAQCBzb3VyY2Vfc2VjdGlvbl9zY3JpcHRzIChzdHJ1 Y3Qgb2JqZmlsZSAqCiAgICAgICBvcGVuZWQgPSBmaW5kX2FuZF9vcGVuX3Nj cmlwdCAoZmlsZSwgMSAvKnNlYXJjaF9wYXRoKi8sCiAJCQkJICAgICAmc3Ry ZWFtLCAmZnVsbF9wYXRoKTsKIAotICAgICAgLyogSWYgdGhlIGZpbGUgaXMg bm90IGZvdW5kLCB3ZSBzdGlsbCByZWNvcmQgdGhlIGZpbGUgaW4gdGhlIGhh c2ggdGFibGUsCi0JIHdlIG9ubHkgd2FudCB0byBwcmludCBhbiBlcnJvciBt ZXNzYWdlIG9uY2UuCi0JIElXQk4gaWYgY29tcGxhaW50cy5jIHdlcmUgbW9y ZSBnZW5lcmFsLXB1cnBvc2UuICAqLworICAgICAgLyogSWYgb25lIHNjcmlw dCBpc24ndCBmb3VuZCBpdCdzIG5vdCB1bmNvbW1vbiBmb3IgbW9yZSB0byBu b3QgYmUKKwkgZm91bmQgZWl0aGVyLiAgV2UgZG9uJ3Qgd2FudCB0byBwcmlu dCBhbiBlcnJvciBtZXNzYWdlIGZvciBlYWNoCisJIHNjcmlwdCwgdG9vIG11 Y2ggbm9pc2UuICBJbnN0ZWFkLCB3ZSBwcmludCB0aGUgd2FybmluZyBvbmNl IGFuZCB0ZWxsCisJIHRoZSB1c2VyIGhvdyB0byBmaW5kIHRoZSBsaXN0IG9m IHNjcmlwdHMgdGhhdCB3ZXJlbid0IGxvYWRlZC4KIAotICAgICAgZW50cnku bmFtZSA9IGZpbGU7Ci0gICAgICBpZiAob3BlbmVkKQotCWVudHJ5LmZ1bGxf cGF0aCA9IGZ1bGxfcGF0aDsKLSAgICAgIGVsc2UKLQllbnRyeS5mdWxsX3Bh dGggPSBOVUxMOwotICAgICAgc2xvdCA9ICgoc3RydWN0IGxvYWRlZF9zY3Jp cHRfZW50cnkgKiopCi0JICAgICAgaHRhYl9maW5kX3Nsb3QgKHBzcGFjZV9p bmZvLT5sb2FkZWRfc2NyaXB0cywKLQkJCSAgICAgICZlbnRyeSwgSU5TRVJU KSk7Ci0gICAgICBpbl9oYXNoX3RhYmxlID0gKnNsb3QgIT0gTlVMTDsKLQot ICAgICAgLyogSWYgdGhpcyBmaWxlIGlzIG5vdCBpbiB0aGUgaGFzaCB0YWJs ZSwgYWRkIGl0LiAgKi8KLSAgICAgIGlmICghIGluX2hhc2hfdGFibGUpCi0J ewotCSAgY2hhciAqcDsKKwkgSVdCTiBpZiBjb21wbGFpbnRzLmMgd2VyZSBt b3JlIGdlbmVyYWwtcHVycG9zZS4gICovCiAKLQkgICpzbG90ID0geG1hbGxv YyAoc2l6ZW9mICgqKnNsb3QpCi0JCQkgICArIHN0cmxlbiAoZmlsZSkgKyAx Ci0JCQkgICArIChvcGVuZWQgPyAoc3RybGVuIChmdWxsX3BhdGgpICsgMSkg OiAwKSk7Ci0JICBwID0gKChjaGFyKikgKnNsb3QpICsgc2l6ZW9mICgqKnNs b3QpOwotCSAgc3RyY3B5IChwLCBmaWxlKTsKLQkgICgqc2xvdCktPm5hbWUg PSBwOwotCSAgaWYgKG9wZW5lZCkKLQkgICAgewotCSAgICAgIHAgKz0gc3Ry bGVuIChwKSArIDE7Ci0JICAgICAgc3RyY3B5IChwLCBmdWxsX3BhdGgpOwot CSAgICAgICgqc2xvdCktPmZ1bGxfcGF0aCA9IHA7Ci0JICAgIH0KLQkgIGVs c2UKLQkgICAgKCpzbG90KS0+ZnVsbF9wYXRoID0gTlVMTDsKLQl9CisgICAg ICBpbl9oYXNoX3RhYmxlID0gbWF5YmVfYWRkX3NjcmlwdCAocHNwYWNlX2lu Zm8tPmxvYWRlZF9zY3JpcHRzLCBmaWxlLAorCQkJCQlvcGVuZWQgPyBmdWxs X3BhdGggOiBOVUxMKTsKIAogICAgICAgaWYgKG9wZW5lZCkKIAlmcmVlIChm dWxsX3BhdGgpOwogCiAgICAgICBpZiAoISBvcGVuZWQpCiAJewotCSAgLyog V2UgZG9uJ3QgdGhyb3cgYW4gZXJyb3IsIHRoZSBwcm9ncmFtIGlzIHN0aWxs IGRlYnVnZ2FibGUuCi0JICAgICBDaGVjayBpbl9oYXNoX3RhYmxlIHRvIG9u bHkgcHJpbnQgdGhlIHdhcm5pbmcgb25jZS4gICovCi0JICBpZiAoISBpbl9o YXNoX3RhYmxlKQotCSAgICB3YXJuaW5nIChfKCIlcyAocmVmZXJlbmNlZCBp biAlcyk6ICVzIiksCi0JCSAgICAgZmlsZSwgR0RCUFlfQVVUT19TRUNUSU9O X05BTUUsIHNhZmVfc3RyZXJyb3IgKGVycm5vKSk7CisJICAvKiBXZSBkb24n dCB0aHJvdyBhbiBlcnJvciwgdGhlIHByb2dyYW0gaXMgc3RpbGwgZGVidWdn YWJsZS4gICovCisJICBpZiAoISBwc3BhY2VfaW5mby0+c2NyaXB0X25vdF9m b3VuZF93YXJuaW5nX3ByaW50ZWQpCisJICAgIHsKKwkgICAgICB3YXJuaW5n IChfKCJNaXNzaW5nIGF1dG8tbG9hZCBzY3JpcHRzIHJlZmVyZW5jZWQgaW4g JXMuXG5cCitVc2UgYGluZm8gYXV0by1sb2FkLXNjcmlwdHMgW1JFR0VYUF0n IHRvIGxpc3QgdGhlbS4iKSwKKwkJICAgICAgIEdEQlBZX0FVVE9fU0VDVElP Tl9OQU1FKTsKKwkgICAgICBwc3BhY2VfaW5mby0+c2NyaXB0X25vdF9mb3Vu ZF93YXJuaW5nX3ByaW50ZWQgPSBUUlVFOworCSAgICB9CiAJICBjb250aW51 ZTsKIAl9CiAKQEAgLTMyMiw2ICszNjAsNyBAQCBjbGVhcl9zZWN0aW9uX3Nj cmlwdHMgKHZvaWQpCiAgICAgewogICAgICAgaHRhYl9kZWxldGUgKGluZm8t PmxvYWRlZF9zY3JpcHRzKTsKICAgICAgIGluZm8tPmxvYWRlZF9zY3JpcHRz ID0gTlVMTDsKKyAgICAgIGluZm8tPnNjcmlwdF9ub3RfZm91bmRfd2Fybmlu Z19wcmludGVkID0gRkFMU0U7CiAgICAgfQogfQogCkBAIC0zNzgsNiArNDE3 LDE5IEBAIGF1dG9fbG9hZF9vYmpmaWxlX3NjcmlwdCAoc3RydWN0IG9iamZp bGUKIAogICBpZiAoaW5wdXQpCiAgICAgeworICAgICAgc3RydWN0IGF1dG9f bG9hZF9wc3BhY2VfaW5mbyAqcHNwYWNlX2luZm87CisKKyAgICAgIC8qIEFk ZCB0aGlzIHNjcmlwdCB0byB0aGUgaGFzaCB0YWJsZSB0b28gc28gImluZm8g YXV0by1sb2FkLXNjcmlwdHMiCisJIGNhbiBwcmludCBpdC4gICovCisgICAg ICBwc3BhY2VfaW5mbyA9CisJZ2V0X2F1dG9fbG9hZF9wc3BhY2VfZGF0YV9m b3JfbG9hZGluZyAoY3VycmVudF9wcm9ncmFtX3NwYWNlKTsKKyAgICAgIG1h eWJlX2FkZF9zY3JpcHQgKHBzcGFjZV9pbmZvLT5sb2FkZWRfc2NyaXB0cywg ZGVidWdmaWxlLCBkZWJ1Z2ZpbGUpOworCisgICAgICAvKiBUbyBwcmVzZXJ2 ZSBleGlzdGluZyBiZWhhdmlvdXIgd2UgZG9uJ3QgY2hlY2sgZm9yIHdoZXRo ZXIgdGhlCisJIHNjcmlwdCB3YXMgYWxyZWFkeSBpbiB0aGUgdGFibGUsIGFu ZCBhbHdheXMgbG9hZCBpdC4KKwkgSXQncyBoaWdobHkgdW5saWtlbHkgdGhh dCB3ZSdkIGV2ZXIgbG9hZCBpdCB0d2ljZSwKKwkgYW5kIHRoZXNlIHNjcmlw dHMgYXJlIHJlcXVpcmVkIHRvIGJlIGlkZW1wb3RlbnQgdW5kZXIgbXVsdGlw bGUKKwkgbG9hZHMgYW55d2F5LiAgKi8KICAgICAgIHNvdXJjZV9weXRob25f c2NyaXB0X2Zvcl9vYmpmaWxlIChvYmpmaWxlLCBpbnB1dCwgZGVidWdmaWxl KTsKICAgICAgIGZjbG9zZSAoaW5wdXQpOwogICAgIH0KQEAgLTQxNiw1NiAr NDY4LDEzMyBAQCBsb2FkX2F1dG9fc2NyaXB0c19mb3Jfb2JqZmlsZSAoc3Ry dWN0IG9iCiAgICAgfQogfQogDAorLyogQ29sbGVjdCBzY3JpcHRzIHRvIGJl IHByaW50ZWQgaW4gYSB2ZWMuICAqLworCit0eXBlZGVmIHN0cnVjdCBsb2Fk ZWRfc2NyaXB0ICpsb2FkZWRfc2NyaXB0X3B0cjsKK0RFRl9WRUNfUCAobG9h ZGVkX3NjcmlwdF9wdHIpOworCiAvKiBUcmF2ZXJzYWwgZnVuY3Rpb24gZm9y IGh0YWJfdHJhdmVyc2UuCi0gICBQcmludCB0aGUgZW50cnkgaWYgc3BlY2lm aWVkIGluIHRoZSByZWdleC4gICovCisgICBDb2xsZWN0IHRoZSBlbnRyeSBp ZiBpdCBtYXRjaGVzIHRoZSByZWdleHAuICAqLwogCiBzdGF0aWMgaW50Ci1t YXliZV9wcmludF9zZWN0aW9uX3NjcmlwdCAodm9pZCAqKnNsb3QsIHZvaWQg KmluZm8pCitjb2xsZWN0X21hdGNoaW5nX3NjcmlwdHMgKHZvaWQgKipzbG90 LCB2b2lkICppbmZvKQoreworICBzdHJ1Y3QgbG9hZGVkX3NjcmlwdCAqc2Ny aXB0ID0gKnNsb3Q7CisgIFZFQyAobG9hZGVkX3NjcmlwdF9wdHIpICpzY3Jp cHRzID0gaW5mbzsKKworICBpZiAocmVfZXhlYyAoc2NyaXB0LT5uYW1lKSkK KyAgICBWRUNfc2FmZV9wdXNoIChsb2FkZWRfc2NyaXB0X3B0ciwgc2NyaXB0 cywgc2NyaXB0KTsKKworICByZXR1cm4gMTsKK30KKworLyogUHJpbnQgU0NS SVBULiAgKi8KKworc3RhdGljIHZvaWQKK3ByaW50X3NjcmlwdCAoc3RydWN0 IGxvYWRlZF9zY3JpcHQgKnNjcmlwdCkKIHsKLSAgc3RydWN0IGxvYWRlZF9z Y3JpcHRfZW50cnkgKmVudHJ5ID0gKnNsb3Q7CisgIHN0cnVjdCBjbGVhbnVw ICpjaGFpbjsKKworICBjaGFpbiA9IG1ha2VfY2xlYW51cF91aV9vdXRfdHVw bGVfYmVnaW5fZW5kICh1aW91dCwgTlVMTCk7CiAKLSAgaWYgKHJlX2V4ZWMg KGVudHJ5LT5uYW1lKSkKKyAgdWlfb3V0X2ZpZWxkX3N0cmluZyAodWlvdXQs ICJsb2FkZWQiLCBzY3JpcHQtPmZ1bGxfcGF0aCA/ICJZZXMiIDogIk5vIik7 CisgIHVpX291dF9maWVsZF9zdHJpbmcgKHVpb3V0LCAic2NyaXB0Iiwgc2Ny aXB0LT5uYW1lKTsKKyAgdWlfb3V0X3RleHQgKHVpb3V0LCAiXG4iKTsKKwor ICAvKiBJZiB0aGUgbmFtZSBpc24ndCB0aGUgZnVsbCBwYXRoLCBwcmludCBp dCB0b28uICAqLworICBpZiAoc2NyaXB0LT5mdWxsX3BhdGggIT0gTlVMTAor ICAgICAgJiYgc3RyY21wIChzY3JpcHQtPm5hbWUsIHNjcmlwdC0+ZnVsbF9w YXRoKSAhPSAwKQogICAgIHsKLSAgICAgIHByaW50Zl9maWx0ZXJlZCAoXygi U2NyaXB0IG5hbWU6ICVzXG4iKSwgZW50cnktPm5hbWUpOwotICAgICAgcHJp bnRmX2ZpbHRlcmVkIChfKCIgIEZ1bGwgbmFtZTogJXNcbiIpLAotCQkgICAg ICAgZW50cnktPmZ1bGxfcGF0aCA/IGVudHJ5LT5mdWxsX3BhdGggOiBfKCJ1 bmtub3duIikpOworICAgICAgdWlfb3V0X3RleHQgKHVpb3V0LCAiXHRmdWxs IG5hbWU6ICIpOworICAgICAgdWlfb3V0X2ZpZWxkX3N0cmluZyAodWlvdXQs ICJmdWxsX3BhdGgiLCBzY3JpcHQtPmZ1bGxfcGF0aCk7CisgICAgICB1aV9v dXRfdGV4dCAodWlvdXQsICJcbiIpOwogICAgIH0KIAotICByZXR1cm4gMTsK KyAgZG9fY2xlYW51cHMgKGNoYWluKTsKIH0KIAotLyogIm1haW50IHByaW50 IHNlY3Rpb24tc2NyaXB0cyIgY29tbWFuZC4gICovCisvKiBIZWxwZXIgZm9y IGluZm9fYXV0b19sb2FkX3NjcmlwdHMgdG8gc29ydCB0aGUgc2NyaXB0cyBi eSBuYW1lLiAgKi8KKworc3RhdGljIGludAorc29ydF9zY3JpcHRzX2J5X25h bWUgKGNvbnN0IHZvaWQgKmFwLCBjb25zdCB2b2lkICpicCkKK3sKKyAgY29u c3Qgc3RydWN0IGxvYWRlZF9zY3JpcHQgKmEgPSAqKGNvbnN0IHN0cnVjdCBs b2FkZWRfc2NyaXB0ICoqKSBhcDsKKyAgY29uc3Qgc3RydWN0IGxvYWRlZF9z Y3JpcHQgKmIgPSAqKGNvbnN0IHN0cnVjdCBsb2FkZWRfc2NyaXB0ICoqKSBi cDsKKworICByZXR1cm4gRklMRU5BTUVfQ01QIChhLT5uYW1lLCBiLT5uYW1l KTsKK30KKworLyogImluZm8gYXV0by1sb2FkLXNjcmlwdHMiIGNvbW1hbmQu ICAqLwogCiBzdGF0aWMgdm9pZAotbWFpbnRlbmFuY2VfcHJpbnRfc2VjdGlv bl9zY3JpcHRzIChjaGFyICpwYXR0ZXJuLCBpbnQgZnJvbV90dHkpCitpbmZv X2F1dG9fbG9hZF9zY3JpcHRzIChjaGFyICpwYXR0ZXJuLCBpbnQgZnJvbV90 dHkpCiB7CiAgIHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKnBzcGFj ZV9pbmZvOworICBzdHJ1Y3QgY2xlYW51cCAqc2NyaXB0X2NoYWluOworICBW RUMgKGxvYWRlZF9zY3JpcHRfcHRyKSAqc2NyaXB0czsKKyAgaW50IG5yX3Nj cmlwdHM7CiAKICAgZG9udF9yZXBlYXQgKCk7CiAKKyAgcHNwYWNlX2luZm8g PSBnZXRfYXV0b19sb2FkX3BzcGFjZV9kYXRhIChjdXJyZW50X3Byb2dyYW1f c3BhY2UpOworCiAgIGlmIChwYXR0ZXJuICYmICpwYXR0ZXJuKQogICAgIHsK ICAgICAgIGNoYXIgKnJlX2VyciA9IHJlX2NvbXAgKHBhdHRlcm4pOwogCiAg ICAgICBpZiAocmVfZXJyKQogCWVycm9yIChfKCJJbnZhbGlkIHJlZ2V4cDog JXMiKSwgcmVfZXJyKTsKLQotICAgICAgcHJpbnRmX2ZpbHRlcmVkIChfKCJP YmpmaWxlIHNjcmlwdHMgbWF0Y2hpbmcgJXM6XG4iKSwgcGF0dGVybik7CiAg ICAgfQogICBlbHNlCiAgICAgewogICAgICAgcmVfY29tcCAoIiIpOwotICAg ICAgcHJpbnRmX2ZpbHRlcmVkIChfKCJPYmpmaWxlIHNjcmlwdHM6XG4iKSk7 CiAgICAgfQogCi0gIHBzcGFjZV9pbmZvID0gZ2V0X2F1dG9fbG9hZF9wc3Bh Y2VfZGF0YSAoY3VycmVudF9wcm9ncmFtX3NwYWNlKTsKLSAgaWYgKHBzcGFj ZV9pbmZvID09IE5VTEwgfHwgcHNwYWNlX2luZm8tPmxvYWRlZF9zY3JpcHRz ID09IE5VTEwpCi0gICAgcmV0dXJuOworICAvKiBXZSBuZWVkIHRvIGtub3cg dGhlIG51bWJlciBvZiByb3dzIGJlZm9yZSB3ZSBidWlsZCB0aGUgdGFibGUu CisgICAgIFBsdXMgd2Ugd2FudCB0byBzb3J0IHRoZSBzY3JpcHRzIGJ5IG5h bWUuCisgICAgIFNvIGZpcnN0IHRyYXZlcnNlIHRoZSBoYXNoIHRhYmxlIGNv bGxlY3RpbmcgdGhlIG1hdGNoaW5nIHNjcmlwdHMuICAqLworCisgIHNjcmlw dHMgPSBWRUNfYWxsb2MgKGxvYWRlZF9zY3JpcHRfcHRyLCAxMCk7CisgIHNj cmlwdF9jaGFpbiA9IG1ha2VfY2xlYW51cCAoVkVDX2NsZWFudXAgKGxvYWRl ZF9zY3JpcHRfcHRyKSwgJnNjcmlwdHMpOworCisgIGlmIChwc3BhY2VfaW5m byAhPSBOVUxMICYmIHBzcGFjZV9pbmZvLT5sb2FkZWRfc2NyaXB0cyAhPSBO VUxMKQorICAgIHsKKyAgICAgIGltbWVkaWF0ZV9xdWl0Kys7CisgICAgICBo dGFiX3RyYXZlcnNlX25vcmVzaXplIChwc3BhY2VfaW5mby0+bG9hZGVkX3Nj cmlwdHMsCisJCQkgICAgICBjb2xsZWN0X21hdGNoaW5nX3NjcmlwdHMsIHNj cmlwdHMpOworICAgICAgaW1tZWRpYXRlX3F1aXQtLTsKKyAgICB9CisKKyAg bnJfc2NyaXB0cyA9IFZFQ19sZW5ndGggKGxvYWRlZF9zY3JpcHRfcHRyLCBz Y3JpcHRzKTsKKyAgbWFrZV9jbGVhbnVwX3VpX291dF90YWJsZV9iZWdpbl9l bmQgKHVpb3V0LCAyLCBucl9zY3JpcHRzLAorCQkJCSAgICAgICAiQXV0b0xv YWRlZFNjcmlwdHNUYWJsZSIpOwogCi0gIGltbWVkaWF0ZV9xdWl0Kys7Ci0g IGh0YWJfdHJhdmVyc2Vfbm9yZXNpemUgKHBzcGFjZV9pbmZvLT5sb2FkZWRf c2NyaXB0cywKLQkJCSAgbWF5YmVfcHJpbnRfc2VjdGlvbl9zY3JpcHQsIE5V TEwpOwotICBpbW1lZGlhdGVfcXVpdC0tOworICB1aV9vdXRfdGFibGVfaGVh ZGVyICh1aW91dCwgNiwgdWlfY2VudGVyLCAibG9hZGVkIiwgIkxvYWRlZCIp OworICB1aV9vdXRfdGFibGVfaGVhZGVyICh1aW91dCwgNzAsIHVpX2xlZnQs ICJzY3JpcHQiLCAiU2NyaXB0Iik7CisgIHVpX291dF90YWJsZV9ib2R5ICh1 aW91dCk7CisKKyAgaWYgKG5yX3NjcmlwdHMgPiAwKQorICAgIHsKKyAgICAg IGludCBpOworICAgICAgbG9hZGVkX3NjcmlwdF9wdHIgc2NyaXB0OworCisg ICAgICBxc29ydCAoVkVDX2FkZHJlc3MgKGxvYWRlZF9zY3JpcHRfcHRyLCBz Y3JpcHRzKSwKKwkgICAgIFZFQ19sZW5ndGggKGxvYWRlZF9zY3JpcHRfcHRy LCBzY3JpcHRzKSwKKwkgICAgIHNpemVvZiAobG9hZGVkX3NjcmlwdF9wdHIp LCBzb3J0X3NjcmlwdHNfYnlfbmFtZSk7CisgICAgICBmb3IgKGkgPSAwOyBW RUNfaXRlcmF0ZSAobG9hZGVkX3NjcmlwdF9wdHIsIHNjcmlwdHMsIGksIHNj cmlwdCk7ICsraSkKKwlwcmludF9zY3JpcHQgKHNjcmlwdCk7CisgICAgfQor CisgIGRvX2NsZWFudXBzIChzY3JpcHRfY2hhaW4pOworCisgIGlmIChucl9z Y3JpcHRzID09IDApCisgICAgeworICAgICAgaWYgKHBhdHRlcm4gJiYgKnBh dHRlcm4pCisJdWlfb3V0X21lc3NhZ2UgKHVpb3V0LCAwLCAiTm8gYXV0by1s b2FkIHNjcmlwdHMgbWF0Y2hpbmcgJXMuXG4iLAorCQkJcGF0dGVybik7Cisg ICAgICBlbHNlCisJdWlfb3V0X21lc3NhZ2UgKHVpb3V0LCAwLCAiTm8gYXV0 by1sb2FkIHNjcmlwdHMuXG4iKTsKKyAgICB9CiB9CiAMCiB2b2lkCkBAIC00 ODYsMTAgKzYxNSwxMCBAQCBhbiBleGVjdXRhYmxlIG9yIHNoYXJlZCBsaWJy YXJ5LiIpLAogCQkJICAgJnNldGxpc3QsCiAJCQkgICAmc2hvd2xpc3QpOwog Ci0gIGFkZF9jbWQgKCJzZWN0aW9uLXNjcmlwdHMiLCBjbGFzc19tYWludGVu YW5jZSwKLQkgICBtYWludGVuYW5jZV9wcmludF9zZWN0aW9uX3NjcmlwdHMs Ci0JICAgXygiUHJpbnQgZHVtcCBvZiBhdXRvLWxvYWRlZCBzZWN0aW9uIHNj cmlwdHMgbWF0Y2hpbmcgUkVHRVhQLiIpLAotCSAgICZtYWludGVuYW5jZXBy aW50bGlzdCk7CisgIGFkZF9pbmZvICgiYXV0by1sb2FkLXNjcmlwdHMiLAor CSAgICBpbmZvX2F1dG9fbG9hZF9zY3JpcHRzLAorCSAgICBfKCJQcmludCB0 aGUgbGlzdCBvZiBhdXRvbWF0aWNhbGx5IGxvYWRlZCBzY3JpcHRzLlxuXAor VXNhZ2U6IGluZm8gYXV0by1sb2FkLXNjcmlwdHMgW1JFR0VYUF0iKSk7CiB9 CiAKICNlbHNlIC8qICEgSEFWRV9QWVRIT04gKi8KSW5kZXg6IHRlc3RzdWl0 ZS9nZGIucHl0aG9uL3B5LW9iamZpbGUtc2NyaXB0LWdkYi5weQo9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09ClJDUyBmaWxlOiB0ZXN0c3VpdGUvZ2RiLnB5dGhv bi9weS1vYmpmaWxlLXNjcmlwdC1nZGIucHkKZGlmZiAtTiB0ZXN0c3VpdGUv Z2RiLnB5dGhvbi9weS1vYmpmaWxlLXNjcmlwdC1nZGIucHkKLS0tIC9kZXYv bnVsbAkxIEphbiAxOTcwIDAwOjAwOjAwIC0wMDAwCisrKyB0ZXN0c3VpdGUv Z2RiLnB5dGhvbi9weS1vYmpmaWxlLXNjcmlwdC1nZGIucHkJMTMgTWF5IDIw MTEgMTk6NDc6NDMgLTAwMDAKQEAgLTAsMCArMSw2MyBAQAorIyBDb3B5cmln aHQgKEMpIDIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisK KyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk aXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyMgaXQgdW5kZXIgdGhlIHRl cm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJs aXNoZWQgYnkKKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0 aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKyMgKGF0IHlvdXIg b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyMKKyMgVGhpcyBwcm9ncmFt IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1 c2VmdWwsCisjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjIE1FUkNIQU5UQUJJTElU WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0 aGUKKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0 YWlscy4KKyMKKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyMgYWxvbmcgd2l0 aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUu b3JnL2xpY2Vuc2VzLz4uCisKKyMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhl IEdEQiB0ZXN0c3VpdGUuCisKK2ltcG9ydCByZQorCitjbGFzcyBwcF9zczoK KyAgICBkZWYgX19pbml0X18oc2VsZiwgdmFsKToKKyAgICAgICAgc2VsZi52 YWwgPSB2YWwKKworICAgIGRlZiB0b19zdHJpbmcoc2VsZik6CisgICAgICAg IHJldHVybiAiYT08IiArIHN0cihzZWxmLnZhbFsiYSJdKSArICI+IGI9PCIg KyBzdHIoc2VsZi52YWxbImIiXSkgKyAiPiIKKworZGVmIGxvb2t1cF9mdW5j dGlvbiAodmFsKToKKyAgICAiTG9vay11cCBhbmQgcmV0dXJuIGEgcHJldHR5 LXByaW50ZXIgdGhhdCBjYW4gcHJpbnQgdmFsLiIKKworICAgICMgR2V0IHRo ZSB0eXBlLgorICAgIHR5cGUgPSB2YWwudHlwZQorCisgICAgIyBJZiBpdCBw b2ludHMgdG8gYSByZWZlcmVuY2UsIGdldCB0aGUgcmVmZXJlbmNlLgorICAg IGlmIHR5cGUuY29kZSA9PSBnZGIuVFlQRV9DT0RFX1JFRjoKKyAgICAgICAg dHlwZSA9IHR5cGUudGFyZ2V0ICgpCisKKyAgICAjIEdldCB0aGUgdW5xdWFs aWZpZWQgdHlwZSwgc3RyaXBwZWQgb2YgdHlwZWRlZnMuCisgICAgdHlwZSA9 IHR5cGUudW5xdWFsaWZpZWQgKCkuc3RyaXBfdHlwZWRlZnMgKCkKKworICAg ICMgR2V0IHRoZSB0eXBlIG5hbWUuICAgIAorICAgIHR5cGVuYW1lID0gdHlw ZS50YWcKKworICAgIGlmIHR5cGVuYW1lID09IE5vbmU6CisgICAgICAgIHJl dHVybiBOb25lCisKKyAgICAjIEl0ZXJhdGUgb3ZlciBsb2NhbCBkaWN0aW9u YXJ5IG9mIHR5cGVzIHRvIGRldGVybWluZQorICAgICMgaWYgYSBwcmludGVy IGlzIHJlZ2lzdGVyZWQgZm9yIHRoYXQgdHlwZS4gIFJldHVybiBhbgorICAg ICMgaW5zdGFudGlhdGlvbiBvZiB0aGUgcHJpbnRlciBpZiBmb3VuZC4KKyAg ICBmb3IgZnVuY3Rpb24gaW4gcHJldHR5X3ByaW50ZXJzX2RpY3Q6CisgICAg ICAgIGlmIGZ1bmN0aW9uLm1hdGNoICh0eXBlbmFtZSk6CisgICAgICAgICAg ICByZXR1cm4gcHJldHR5X3ByaW50ZXJzX2RpY3RbZnVuY3Rpb25dICh2YWwp CisgICAgICAgIAorICAgICMgQ2Fubm90IGZpbmQgYSBwcmV0dHkgcHJpbnRl ci4gIFJldHVybiBOb25lLgorCisgICAgcmV0dXJuIE5vbmUKKworZGVmIHJl Z2lzdGVyX3ByZXR0eV9wcmludGVycyAoKToKKyAgICBwcmV0dHlfcHJpbnRl cnNfZGljdFtyZS5jb21waWxlICgnXnNzJCcpXSAgPSBwcF9zcworCitwcmV0 dHlfcHJpbnRlcnNfZGljdCA9IHt9CisKK3JlZ2lzdGVyX3ByZXR0eV9wcmlu dGVycyAoKQorZ2RiLmN1cnJlbnRfcHJvZ3NwYWNlKCkucHJldHR5X3ByaW50 ZXJzLmFwcGVuZCAobG9va3VwX2Z1bmN0aW9uKQpJbmRleDogdGVzdHN1aXRl L2dkYi5weXRob24vcHktb2JqZmlsZS1zY3JpcHQuYwo9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09ClJDUyBmaWxlOiB0ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1v YmpmaWxlLXNjcmlwdC5jCmRpZmYgLU4gdGVzdHN1aXRlL2dkYi5weXRob24v cHktb2JqZmlsZS1zY3JpcHQuYwotLS0gL2Rldi9udWxsCTEgSmFuIDE5NzAg MDA6MDA6MDAgLTAwMDAKKysrIHRlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LW9i amZpbGUtc2NyaXB0LmMJMTMgTWF5IDIwMTEgMTk6NDc6NDMgLTAwMDAKQEAg LTAsMCArMSwzOSBAQAorLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdE QiwgdGhlIEdOVSBkZWJ1Z2dlci4KKworICAgQ29weXJpZ2h0IDIwMTEgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisKKyAgIFRoaXMgcHJvZ3Jh bSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh bmQvb3IgbW9kaWZ5CisgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICAg dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24g MyBvZiB0aGUgTGljZW5zZSwgb3IKKyAgIChhdCB5b3VyIG9wdGlvbikgYW55 IGxhdGVyIHZlcnNpb24uCisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmli dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAg YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt cGxpZWQgd2FycmFudHkgb2YKKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAgIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisK KyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICBhbG9uZyB3aXRoIHRoaXMg cHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGlj ZW5zZXMvPi4gICovCisKK3N0cnVjdCBzcworeworICBpbnQgYTsKKyAgaW50 IGI7Cit9OworCit2b2lkCitpbml0X3NzIChzdHJ1Y3Qgc3MgKnMsIGludCBh LCBpbnQgYikKK3sKKyAgcy0+YSA9IGE7CisgIHMtPmIgPSBiOworfQorCitp bnQKK21haW4gKCkKK3sKKyAgc3RydWN0IHNzIHNzOworCisgIGluaXRfc3Mg KCZzcywgMSwgMik7CisKKyAgcmV0dXJuIDA7ICAgICAgLyogYnJlYWsgdG8g aW5zcGVjdCBzdHJ1Y3QgYW5kIHVuaW9uICovCit9CkluZGV4OiB0ZXN0c3Vp dGUvZ2RiLnB5dGhvbi9weS1vYmpmaWxlLXNjcmlwdC5leHAKPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQpSQ1MgZmlsZTogdGVzdHN1aXRlL2dkYi5weXRob24v cHktb2JqZmlsZS1zY3JpcHQuZXhwCmRpZmYgLU4gdGVzdHN1aXRlL2dkYi5w eXRob24vcHktb2JqZmlsZS1zY3JpcHQuZXhwCi0tLSAvZGV2L251bGwJMSBK YW4gMTk3MCAwMDowMDowMCAtMDAwMAorKysgdGVzdHN1aXRlL2dkYi5weXRo b24vcHktb2JqZmlsZS1zY3JpcHQuZXhwCTEzIE1heSAyMDExIDE5OjQ3OjQz IC0wMDAwCkBAIC0wLDAgKzEsNjAgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDEx IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCisjIFRoaXMgcHJv Z3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp dCBhbmQvb3IgbW9kaWZ5CisjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Cisj IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9u IDMgb2YgdGhlIExpY2Vuc2UsIG9yCisjIChhdCB5b3VyIG9wdGlvbikgYW55 IGxhdGVyIHZlcnNpb24uCisjCisjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmli dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBi dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w bGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisjIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisjCisj IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisjIGFsb25nIHdpdGggdGhpcyBwcm9n cmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNl cy8+LgorCisjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHREIgdGVzdHN1 aXRlLiAgSXQgdGVzdHMgYXV0b21hZ2ljIGxvYWRpbmcgb2YKKyMgLWdkYi5w eSBzY3JpcHRzLgorCitpZiAkdHJhY2VsZXZlbCB0aGVuIHsKKyAgICBzdHJh Y2UgJHRyYWNlbGV2ZWwKK30KKworc2V0IHRlc3RmaWxlICJweS1vYmpmaWxl LXNjcmlwdCIKK3NldCBzcmNmaWxlICR7dGVzdGZpbGV9LmMKK3NldCBiaW5m aWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0KK2lmIHsgW2dk Yl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0iICIk e2JpbmZpbGV9IiBleGVjdXRhYmxlIHtkZWJ1Z31dICE9ICIiIH0geworICAg IHVudGVzdGVkICJDb3VsZG4ndCBjb21waWxlICR7c3JjZmlsZX0iCisgICAg cmV0dXJuIC0xCit9CisKKyMgU3RhcnQgd2l0aCBhIGZyZXNoIGdkYi4KK2dk Yl9leGl0CitnZGJfc3RhcnQKKworIyBTa2lwIGFsbCB0ZXN0cyBpZiBQeXRo b24gc2NyaXB0aW5nIGlzIG5vdCBlbmFibGVkLgoraWYgeyBbc2tpcF9weXRo b25fdGVzdHNdIH0geyBjb250aW51ZSB9CisKKyMgTWFrZSB0aGUgLWdkYi5w eSBzY3JpcHQgYXZhaWxhYmxlIHRvIGdkYiwgaXQgaXMgYXV0b21hZ2ljYWxs eSBsb2FkZWQgYnkgZ2RiLgorIyBDYXJlIGlzIHRha2VuIHRvIHB1dCBpdCBp biB0aGUgc2FtZSBkaXJlY3RvcnkgYXMgdGhlIGJpbmFyeSBzbyB0aGF0Cisj IGdkYiB3aWxsIGZpbmQgaXQuCitzZXQgcmVtb3RlX3B5dGhvbl9maWxlIFty ZW1vdGVfZG93bmxvYWQgaG9zdCAke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7dGVz dGZpbGV9LWdkYi5weSAke3N1YmRpcn0vJHt0ZXN0ZmlsZX0tZ2RiLnB5XQor CitnZGJfcmVpbml0aWFsaXplX2RpciAkc3JjZGlyLyRzdWJkaXIKK2dkYl9s b2FkICR7YmluZmlsZX0KKworIyBWZXJpZnkgZ2RiIGxvYWRlZCB0aGUgc2Ny aXB0LgorZ2RiX3Rlc3QgImluZm8gYXV0by1sb2FkLXNjcmlwdHMiICJZZXMu Ki8ke3Rlc3RmaWxlfS1nZGIucHkuKiIKKworaWYgIVtydW50b19tYWluXSB7 CisgICAgcGVycm9yICJjb3VsZG4ndCBydW4gdG8gbWFpbiIKKyAgICByZXR1 cm4KK30KKworZ2RiX3Rlc3QgImIgW2dkYl9nZXRfbGluZV9udW1iZXIge2Jy ZWFrIHRvIGluc3BlY3R9ICR7dGVzdGZpbGV9LmMgXSIgXAorICAgICIuKkJy ZWFrcG9pbnQuKiIKK2dkYl90ZXN0ICJjb250aW51ZSIgIi4qQnJlYWtwb2lu dC4qIgorCitnZGJfdGVzdCAicHJpbnQgc3MiICIgPSBhPTwxPiBiPTwyPiIK KworcmVtb3RlX2ZpbGUgaG9zdCBkZWxldGUgJHtyZW1vdGVfcHl0aG9uX2Zp bGV9CkluZGV4OiB0ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1zZWN0aW9uLXNj cmlwdC5leHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2 cy9zcmMvc3JjL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1zZWN0aW9u LXNjcmlwdC5leHAsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNApkaWZmIC11 IC1wIC1yMS40IHB5LXNlY3Rpb24tc2NyaXB0LmV4cAotLS0gdGVzdHN1aXRl L2dkYi5weXRob24vcHktc2VjdGlvbi1zY3JpcHQuZXhwCTEzIE1hciAyMDEx IDEzOjM5OjE3IC0wMDAwCTEuNAorKysgdGVzdHN1aXRlL2dkYi5weXRob24v cHktc2VjdGlvbi1zY3JpcHQuZXhwCTEzIE1heSAyMDExIDE5OjQ3OjQzIC0w MDAwCkBAIC01NSw2ICs1NSwxNCBAQCBzZXQgcmVtb3RlX3B5dGhvbl9maWxl IFtyZW1vdGVfZG93bmxvYWQgCiBnZGJfcmVpbml0aWFsaXplX2RpciAkc3Jj ZGlyLyRzdWJkaXIKIGdkYl9sb2FkICR7YmluZmlsZX0KIAorIyBWZXJpZnkg Z2RiIGxvYWRlZCB0aGUgc2NyaXB0LgorZ2RiX3Rlc3QgImluZm8gYXV0by1s b2FkLXNjcmlwdHMiICJZZXMuKiR7dGVzdGZpbGV9LnB5LipmdWxsIG5hbWU6 IC4qLyR7dGVzdGZpbGV9LnB5LioiCisjIEFnYWluLCB3aXRoIGEgcmVnZXhw IHRoaXMgdGltZS4KK2dkYl90ZXN0ICJpbmZvIGF1dG8tbG9hZC1zY3JpcHRz ICR7dGVzdGZpbGV9IiAiWWVzLioke3Rlc3RmaWxlfS5weS4qZnVsbCBuYW1l OiAuKi8ke3Rlc3RmaWxlfS5weS4qIgorIyBBZ2Fpbiwgd2l0aCBhIHJlZ2V4 cCB0aGF0IG1hdGNoZXMgbm8gc2NyaXB0cy4KK2dkYl90ZXN0ICJpbmZvIGF1 dG8tbG9hZC1zY3JpcHRzIG5vLXNjcmlwdC1tYXRjaGVzLXRoaXMiIFwKKyAg Ik5vIGF1dG8tbG9hZCBzY3JpcHRzIG1hdGNoaW5nIG5vLXNjcmlwdC1tYXRj aGVzLXRoaXMuIgorCiBpZiAhW3J1bnRvX21haW5dIHsKICAgICBwZXJyb3Ig ImNvdWxkbid0IHJ1biB0byBtYWluIgogICAgIHJldHVybgo= --00163630fbe1055ab604a32fc39e--