From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 32461 invoked by alias); 14 May 2012 15:54:32 -0000 Received: (qmail 32439 invoked by uid 22791); 14 May 2012 15:54:26 -0000 X-SWARE-Spam-Status: No, hits=-2.9 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,KHOP_THREADED,RCVD_IN_DNSWL_NONE,RCVD_IN_HOSTKARMA_YE,TW_HP,T_RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from elasmtp-kukur.atl.sa.earthlink.net (HELO elasmtp-kukur.atl.sa.earthlink.net) (209.86.89.65) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Mon, 14 May 2012 15:54:06 +0000 Received: from [68.96.200.16] (helo=macbook2.local) by elasmtp-kukur.atl.sa.earthlink.net with esmtpa (Exim 4.67) (envelope-from ) id 1STxax-0005Xk-Qo; Mon, 14 May 2012 11:54:00 -0400 Message-ID: <4FB12A8E.7040905@earthlink.net> Date: Mon, 14 May 2012 15:54:00 -0000 From: Stan Shebs User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:12.0) Gecko/20120428 Thunderbird/12.0.1 MIME-Version: 1.0 To: Yao Qi CC: gdb-patches@sourceware.org Subject: Re: [PATCH v2] dynamic printf References: <4FA8BC97.2000801@earthlink.net> <4FA8D049.109@codesourcery.com> In-Reply-To: <4FA8D049.109@codesourcery.com> Content-Type: multipart/mixed; boundary="------------020504010201080401080200" X-ELNK-Trace: ae6f8838ff913eba0cc1426638a40ef67e972de0d01da940fdd9e6223a49c4e4fefbfd3dd337a7d5350badd9bab72f9c350badd9bab72f9c350badd9bab72f9c 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: 2012-05/txt/msg00516.txt.bz2 This is a multi-part message in MIME format. --------------020504010201080401080200 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Content-length: 1954 On 5/8/12 12:50 AM, Yao Qi wrote: > Stan, > See some comments on test case below, > > Thanks for the feedback! Here's what I committed. Stan 2012-05-14 Stan Shebs Add dynamic printf. * breakpoint.h (enum bptype): New type bp_dprintf. (struct breakpoint): New field extra_string. (struct breakpoint_ops): Add arg to create_breakpoints_sal. (create_breakpoint): Add extra_string arg. * breakpoint.c (dprintf_breakpoint_ops): New. (is_breakpoint): Add bp_dprintf. (bpstat_what): Add dprintf case. (bptype_string): Ditto. (print_one_breakpoint_location): Ditto. (init_bp_location): Ditto. (bkpt_print_mention): Ditto. (dprintf_style_enums): New array. (dprintf_style): New global. (dprintf_function): New global. (dprintf_channel): New global. (update_dprintf_command_list): New function. (update_dprintf_commands): New function. (init_breakpoint_sal): Add extra_string argument, handle it. (create_breakpoint_sal): Add extra_string argument. (create_breakpoints_sal): Add extra_string argument, update callers. (find_condition_and_thread): Add extra argument. (create_breakpoint): Add extra_string argument, record it. (dprintf_command): New function. (break_command_1): Add arg to create_breakpoint call. (handle_gnu_v3_exceptions): Ditto. (trace_command): Ditto. (ftrace_command): Ditto. (strace_command): Ditto. (bkpt_print_mention): Add dprintf case. (create_breakpoint_sal_default): Add extra_string argument. (_initialize_breakpoint): Add new commands. * mi/mi-cmd-break.c (mi_cmd_break_insert): Add arg to call. * python/py-breakpoint.c (bppy_init): Ditto. * python/py-finishbreakpoint.c (bpfinishpy_init): Ditto. * gdb.texinfo (Dynamic Printf): New subsection. * gdb.base/dprintf.c: New file. * gdb.base/dprintf.exp: New file. --------------020504010201080401080200 Content-Type: text/plain; charset=UTF-8; x-mac-type="0"; x-mac-creator="0"; name="dprintf-patch-3" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="dprintf-patch-3" Content-length: 47841 SW5kZXg6IE5FV1MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTog L2N2cy9zcmMvc3JjL2dkYi9ORVdTLHYKcmV0cmlldmluZyByZXZpc2lvbiAx LjUxOApkaWZmIC11IC1wIC1yMS41MTggTkVXUwotLS0gTkVXUwkxMyBNYXkg MjAxMiAxMTozMzo0MiAtMDAwMAkxLjUxOAorKysgTkVXUwkxNCBNYXkgMjAx MiAxNToyNjo1MyAtMDAwMApAQCAtMTQyLDYgKzE0MiwxMSBAQAogICAgICAi aW5mbyBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHMiLCAic2V0IGF1dG8tbG9h ZCBweXRob24tc2NyaXB0cyBvbnxvZmYiCiAgICAgIGFuZCAic2hvdyBhdXRv LWxvYWQgcHl0aG9uLXNjcmlwdHMiIGNvdW50ZXJwYXJ0cyBpbnN0ZWFkLgog CisgICoqICJkcHJpbnRmIGxvY2F0aW9uLGZvcm1hdCxhcmdzLi4uIiBjcmVh dGVzIGEgZHluYW1pYyBwcmludGYsIHdoaWNoCisgICAgIGlzIGJhc2ljYWxs eSBhIGJyZWFrcG9pbnQgdGhhdCBkb2VzIGEgcHJpbnRmIGFuZCBpbW1lZGlh dGVseQorICAgICByZXN1bWVzIHlvdXIgcHJvZ3JhbSdzIGV4ZWN1dGlvbiwg c28gaXQgaXMgbGlrZSBhIHByaW50ZiB0aGF0IHlvdQorICAgICBjYW4gaW5z ZXJ0IGR5bmFtaWNhbGx5IGF0IHJ1bnRpbWUgaW5zdGVhZCBvZiBhdCBjb21w aWxldGltZS4KKwogKiBOZXcgdGFyZ2V0cwogCiBSZW5lc2FzIFJMNzgJCQly bDc4LSotZWxmCkBAIC0yMDAsNiArMjA1LDE5IEBAIHNldCBkZWJ1ZyBhdXRv LWxvYWQgb258b2ZmCiBzaG93IGRlYnVnIGF1dG8tbG9hZAogICBDb250cm9s IGRpc3BsYXkgb2YgZGVidWdnaW5nIGluZm8gZm9yIGF1dG8tbG9hZGluZyB0 aGUgZmlsZXMgYWJvdmUuCiAKK3NldCBkcHJpbnRmLXN0eWxlIGdkYnxjYWxs CitzaG93IGRwcmludGYtc3R5bGUKKyAgQ29udHJvbCB0aGUgd2F5IGluIHdo aWNoIGEgZHluYW1pYyBwcmludGYgaXMgcGVyZm9ybWVkOyAiZ2RiIiByZXF1 ZXN0cworICBhIEdEQiBwcmludGYgY29tbWFuZCwgd2hpbGUgImNhbGwiIGNh dXNlcyBkcHJpbnRmIHRvIGNhbGwgYSBmdW5jdGlvbgorICBpbiB0aGUgaW5m ZXJpb3IuCisKK3NldCBkcHJpbnRmLWZ1bmN0aW9uIDxleHByPgorc2hvdyBk cHJpbnRmLWZ1bmN0aW9uCitzZXQgZHByaW50Zi1jaGFubmVsIDxleHByPgor c2hvdyBkcHJpbnRmLWNoYW5uZWwKKyAgU2V0IHRoZSBmdW5jdGlvbiBhbmQg b3B0aW9uYWwgZmlyc3QgYXJndW1lbnQgdG8gdGhlIGNhbGwgd2hlbiB1c2lu ZworICB0aGUgImNhbGwiIHN0eWxlIG9mIGR5bmFtaWMgcHJpbnRmLgorCiAq IE5ldyBjb25maWd1cmUgb3B0aW9ucwogCiAtLXdpdGgtYXV0by1sb2FkLWRp cgpJbmRleDogYnJlYWtwb2ludC5jCj09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K UkNTIGZpbGU6IC9jdnMvc3JjL3NyYy9nZGIvYnJlYWtwb2ludC5jLHYKcmV0 cmlldmluZyByZXZpc2lvbiAxLjY3MApkaWZmIC11IC1wIC1yMS42NzAgYnJl YWtwb2ludC5jCi0tLSBicmVha3BvaW50LmMJMjcgQXByIDIwMTIgMjA6NDg6 NTUgLTAwMDAJMS42NzAKKysrIGJyZWFrcG9pbnQuYwkxNCBNYXkgMjAxMiAx NToyNjo1MyAtMDAwMApAQCAtMTA5LDcgKzEwOSw3IEBAIHN0YXRpYyB2b2lk IGNyZWF0ZV9zYWxzX2Zyb21fYWRkcmVzc19kZWYKIHN0YXRpYyB2b2lkIGNy ZWF0ZV9icmVha3BvaW50c19zYWxfZGVmYXVsdCAoc3RydWN0IGdkYmFyY2gg KiwKIAkJCQkJICAgIHN0cnVjdCBsaW5lc3BlY19yZXN1bHQgKiwKIAkJCQkJ ICAgIHN0cnVjdCBsaW5lc3BlY19zYWxzICosCi0JCQkJCSAgICBjaGFyICos IGVudW0gYnB0eXBlLAorCQkJCQkgICAgY2hhciAqLCBjaGFyICosIGVudW0g YnB0eXBlLAogCQkJCQkgICAgZW51bSBicGRpc3AsIGludCwgaW50LAogCQkJ CQkgICAgaW50LAogCQkJCQkgICAgY29uc3Qgc3RydWN0IGJyZWFrcG9pbnRf b3BzICosCkBAIC0yOTQsNiArMjk0LDkgQEAgc3RydWN0IGJyZWFrcG9pbnRf b3BzIGJrcHRfYnJlYWtwb2ludF9vcAogLyogQnJlYWtwb2ludHMgc2V0IG9u IHByb2Jlcy4gICovCiBzdGF0aWMgc3RydWN0IGJyZWFrcG9pbnRfb3BzIGJr cHRfcHJvYmVfYnJlYWtwb2ludF9vcHM7CiAKKy8qIER5bmFtaWMgcHJpbnRm IGNsYXNzIHR5cGUuICAqLworc3RhdGljIHN0cnVjdCBicmVha3BvaW50X29w cyBkcHJpbnRmX2JyZWFrcG9pbnRfb3BzOworCiAvKiBBIHJlZmVyZW5jZS1j b3VudGVkIHN0cnVjdCBjb21tYW5kX2xpbmUuICBUaGlzIGxldHMgbXVsdGlw bGUKICAgIGJyZWFrcG9pbnRzIHNoYXJlIGEgc2luZ2xlIGNvbW1hbmQgbGlz dC4gICovCiBzdHJ1Y3QgY291bnRlZF9jb21tYW5kX2xpbmUKQEAgLTE0OTQs NyArMTQ5Nyw4IEBAIGludAogaXNfYnJlYWtwb2ludCAoY29uc3Qgc3RydWN0 IGJyZWFrcG9pbnQgKmJwdCkKIHsKICAgcmV0dXJuIChicHQtPnR5cGUgPT0g YnBfYnJlYWtwb2ludAotCSAgfHwgYnB0LT50eXBlID09IGJwX2hhcmR3YXJl X2JyZWFrcG9pbnQpOworCSAgfHwgYnB0LT50eXBlID09IGJwX2hhcmR3YXJl X2JyZWFrcG9pbnQKKwkgIHx8IGJwdC0+dHlwZSA9PSBicF9kcHJpbnRmKTsK IH0KIAogLyogUmV0dXJuIHRydWUgaWYgQlBUIGlzIG9mIGFueSBoYXJkd2Fy ZSB3YXRjaHBvaW50IGtpbmQuICAqLwpAQCAtNTE3OCw2ICs1MTgyLDExIEBA IGJwc3RhdF93aGF0IChicHN0YXQgYnNfaGVhZCkKIAkgICAgIFBDIG9mIHRo ZSBmb3JtZXIgYnJlYWtwb2ludC4gICovCiAJICB0aGlzX2FjdGlvbiA9IEJQ U1RBVF9XSEFUX0tFRVBfQ0hFQ0tJTkc7CiAJICBicmVhazsKKworCWNhc2Ug YnBfZHByaW50ZjoKKwkgIHRoaXNfYWN0aW9uID0gQlBTVEFUX1dIQVRfU1RP UF9TSUxFTlQ7CisJICBicmVhazsKKwogCWRlZmF1bHQ6CiAJICBpbnRlcm5h bF9lcnJvciAoX19GSUxFX18sIF9fTElORV9fLAogCQkJICBfKCJicHN0YXRf d2hhdDogdW5oYW5kbGVkIGJwdHlwZSAlZCIpLCAoaW50KSBicHR5cGUpOwpA QCAtNTQ0Miw2ICs1NDUxLDcgQEAgYnB0eXBlX3N0cmluZyAoZW51bSBicHR5 cGUgdHlwZSkKICAgICB7YnBfdHJhY2Vwb2ludCwgInRyYWNlcG9pbnQifSwK ICAgICB7YnBfZmFzdF90cmFjZXBvaW50LCAiZmFzdCB0cmFjZXBvaW50In0s CiAgICAge2JwX3N0YXRpY190cmFjZXBvaW50LCAic3RhdGljIHRyYWNlcG9p bnQifSwKKyAgICB7YnBfZHByaW50ZiwgImRwcmludGYifSwKICAgICB7YnBf aml0X2V2ZW50LCAiaml0IGV2ZW50cyJ9LAogICAgIHticF9nbnVfaWZ1bmNf cmVzb2x2ZXIsICJTVFRfR05VX0lGVU5DIHJlc29sdmVyIn0sCiAgICAge2Jw X2dudV9pZnVuY19yZXNvbHZlcl9yZXR1cm4sICJTVFRfR05VX0lGVU5DIHJl c29sdmVyIHJldHVybiJ9LApAQCAtNTU4Miw2ICs1NTkyLDcgQEAgcHJpbnRf b25lX2JyZWFrcG9pbnRfbG9jYXRpb24gKHN0cnVjdCBicgogICAgICAgY2Fz ZSBicF90cmFjZXBvaW50OgogICAgICAgY2FzZSBicF9mYXN0X3RyYWNlcG9p bnQ6CiAgICAgICBjYXNlIGJwX3N0YXRpY190cmFjZXBvaW50OgorICAgICAg Y2FzZSBicF9kcHJpbnRmOgogICAgICAgY2FzZSBicF9qaXRfZXZlbnQ6CiAg ICAgICBjYXNlIGJwX2dudV9pZnVuY19yZXNvbHZlcjoKICAgICAgIGNhc2Ug YnBfZ251X2lmdW5jX3Jlc29sdmVyX3JldHVybjoKQEAgLTY0NDQsNiArNjQ1 NSw3IEBAIGluaXRfYnBfbG9jYXRpb24gKHN0cnVjdCBicF9sb2NhdGlvbiAq bG8KICAgICBjYXNlIGJwX2V4Y2VwdGlvbl9tYXN0ZXI6CiAgICAgY2FzZSBi cF9nbnVfaWZ1bmNfcmVzb2x2ZXI6CiAgICAgY2FzZSBicF9nbnVfaWZ1bmNf cmVzb2x2ZXJfcmV0dXJuOgorICAgIGNhc2UgYnBfZHByaW50ZjoKICAgICAg IGxvYy0+bG9jX3R5cGUgPSBicF9sb2Nfc29mdHdhcmVfYnJlYWtwb2ludDsK ICAgICAgIG1hcmtfYnJlYWtwb2ludF9sb2NhdGlvbl9tb2RpZmllZCAobG9j KTsKICAgICAgIGJyZWFrOwpAQCAtODM4Miw3ICs4Mzk0LDEyMiBAQCBicF9s b2NfaXNfcGVybWFuZW50IChzdHJ1Y3QgYnBfbG9jYXRpb24gCiAgIHJldHVy biByZXR2YWw7CiB9CiAKKy8qIFRoZSBzdHlsZSBpbiB3aGljaCB0byBwZXJm b3JtIGEgZHluYW1pYyBwcmludGYuICBUaGlzIGlzIGEgdXNlcgorICAgb3B0 aW9uIGJlY2F1c2UgZGlmZmVyZW50IG91dHB1dCBvcHRpb25zIGhhdmUgZGlm ZmVyZW50IHRyYWRlb2ZmczsKKyAgIGlmIEdEQiBkb2VzIHRoZSBwcmludGlu ZywgdGhlcmUgaXMgYmV0dGVyIGVycm9yIGhhbmRsaW5nIGlmIHRoZXJlCisg ICBpcyBhIHByb2JsZW0gd2l0aCBhbnkgb2YgdGhlIGFyZ3VtZW50cywgYnV0 IHVzaW5nIGFuIGluZmVyaW9yCisgICBmdW5jdGlvbiBsZXRzIHlvdSBoYXZl IHNwZWNpYWwtcHVycG9zZSBwcmludGVycyBhbmQgc2VuZGluZyBvZgorICAg b3V0cHV0IHRvIHRoZSBzYW1lIHBsYWNlIGFzIGNvbXBpbGVkLWluIHByaW50 IGZ1bmN0aW9ucy4gIChGdXR1cmUKKyAgIHN0eWxlcyBtYXkgaW5jbHVkZSB0 aGUgYWJpbGl0eSB0byBkbyBhIHRhcmdldC1zaWRlIHByaW50Zi4pICAqLwor CitzdGF0aWMgY29uc3QgY2hhciBkcHJpbnRmX3N0eWxlX2dkYltdID0gImdk YiI7CitzdGF0aWMgY29uc3QgY2hhciBkcHJpbnRmX3N0eWxlX2NhbGxbXSA9 ICJjYWxsIjsKK3N0YXRpYyBjb25zdCBjaGFyICpjb25zdCBkcHJpbnRmX3N0 eWxlX2VudW1zW10gPSB7CisgIGRwcmludGZfc3R5bGVfZ2RiLAorICBkcHJp bnRmX3N0eWxlX2NhbGwsCisgIE5VTEwKK307CitzdGF0aWMgY29uc3QgY2hh ciAqZHByaW50Zl9zdHlsZSA9IGRwcmludGZfc3R5bGVfZ2RiOworCisvKiBU aGUgZnVuY3Rpb24gdG8gdXNlIGZvciBkeW5hbWljIHByaW50ZiBpZiB0aGUg cHJlZmVycmVkIHN0eWxlIGlzIHRvCisgICBjYWxsIGludG8gdGhlIGluZmVy aW9yLiAgVGhlIHZhbHVlIGlzIHNpbXBseSBhIHN0cmluZyB0aGF0IGlzCisg ICBjb3BpZWQgaW50byB0aGUgY29tbWFuZCwgc28gaXQgY2FuIGJlIGFueXRo aW5nIHRoYXQgR0RCIGNhbgorICAgZXZhbHVhdGUgdG8gYSBjYWxsYWJsZSBh ZGRyZXNzLCBub3QgbmVjZXNzYXJpbHkgYSBmdW5jdGlvbiBuYW1lLiAgKi8K Kworc3RhdGljIGNoYXIgKmRwcmludGZfZnVuY3Rpb24gPSAiIjsKKworLyog VGhlIGNoYW5uZWwgdG8gdXNlIGZvciBkeW5hbWljIHByaW50ZiBpZiB0aGUg cHJlZmVycmVkIHN0eWxlIGlzIHRvCisgICBjYWxsIGludG8gdGhlIGluZmVy aW9yOyBpZiBhIG5vbmVtcHR5IHN0cmluZywgaXQgd2lsbCBiZSBwYXNzZWQg dG8KKyAgIHRoZSBjYWxsIGFzIHRoZSBmaXJzdCBhcmd1bWVudCwgd2l0aCB0 aGUgZm9ybWF0IHN0cmluZyBhcyB0aGUKKyAgIHNlY29uZC4gIEFzIHdpdGgg dGhlIGRwcmludGYgZnVuY3Rpb24sIHRoaXMgY2FuIGJlIGFueXRoaW5nIHRo YXQKKyAgIEdEQiBrbm93cyBob3cgdG8gZXZhbHVhdGUsIHNvIGluIGFkZGl0 aW9uIHRvIGNvbW1vbiBjaG9pY2VzIGxpa2UKKyAgICJzdGRlcnIiLCB0aGlz IGNvdWxkIGJlIGFuIGFwcC1zcGVjaWZpYyBleHByZXNzaW9uIGxpa2UKKyAg ICJteXN0cmVhbXNbY3VybG9nZ2VyXSIuICAqLworCitzdGF0aWMgY2hhciAq ZHByaW50Zl9jaGFubmVsID0gIiI7CisKKy8qIEJ1aWxkIGEgY29tbWFuZCBs aXN0IGZvciB0aGUgZHByaW50ZiBjb3JyZXNwb25kaW5nIHRvIHRoZSBjdXJy ZW50CisgICBzZXR0aW5ncyBvZiB0aGUgZHByaW50ZiBzdHlsZSBvcHRpb25z LiAgKi8KKworc3RhdGljIHZvaWQKK3VwZGF0ZV9kcHJpbnRmX2NvbW1hbmRf bGlzdCAoc3RydWN0IGJyZWFrcG9pbnQgKmIpCit7CisgIGNoYXIgKmRwcmlu dGZfYXJncyA9IGItPmV4dHJhX3N0cmluZzsKKyAgY2hhciAqcHJpbnRmX2xp bmUgPSBOVUxMOworCisgIGlmICghZHByaW50Zl9hcmdzKQorICAgIHJldHVy bjsKKworICBkcHJpbnRmX2FyZ3MgPSBza2lwX3NwYWNlcyAoZHByaW50Zl9h cmdzKTsKKworICAvKiBBbGxvdyBhIGNvbW1hLCBhcyBpdCBtYXkgaGF2ZSB0 ZXJtaW5hdGVkIGEgbG9jYXRpb24sIGJ1dCBkb24ndAorICAgICBpbnNpc3Qg b24gaXQuICAqLworICBpZiAoKmRwcmludGZfYXJncyA9PSAnLCcpCisgICAg KytkcHJpbnRmX2FyZ3M7CisgIGRwcmludGZfYXJncyA9IHNraXBfc3BhY2Vz IChkcHJpbnRmX2FyZ3MpOworCisgIGlmICgqZHByaW50Zl9hcmdzICE9ICci JykKKyAgICBlcnJvciAoXygiQmFkIGZvcm1hdCBzdHJpbmcsIG1pc3Npbmcg J1wiJy4iKSk7CisKKyAgaWYgKHN0cmNtcCAoZHByaW50Zl9zdHlsZSwgImdk YiIpID09IDApCisgICAgcHJpbnRmX2xpbmUgPSB4c3RycHJpbnRmICgicHJp bnRmICVzIiwgZHByaW50Zl9hcmdzKTsKKyAgZWxzZSBpZiAoc3RyY21wIChk cHJpbnRmX3N0eWxlLCAiY2FsbCIpID09IDApCisgICAgeworICAgICAgaWYg KCFkcHJpbnRmX2Z1bmN0aW9uKQorCWVycm9yIChfKCJObyBmdW5jdGlvbiBz dXBwbGllZCBmb3IgZHByaW50ZiBjYWxsIikpOworCisgICAgICBpZiAoZHBy aW50Zl9jaGFubmVsICYmIHN0cmxlbiAoZHByaW50Zl9jaGFubmVsKSA+IDAp CisJcHJpbnRmX2xpbmUgPSB4c3RycHJpbnRmICgiY2FsbCAodm9pZCkgJXMg KCVzLCVzKSIsCisJCQkJICBkcHJpbnRmX2Z1bmN0aW9uLAorCQkJCSAgZHBy aW50Zl9jaGFubmVsLAorCQkJCSAgZHByaW50Zl9hcmdzKTsKKyAgICAgIGVs c2UKKwlwcmludGZfbGluZSA9IHhzdHJwcmludGYgKCJjYWxsICh2b2lkKSAl cyAoJXMpIiwKKwkJCQkgIGRwcmludGZfZnVuY3Rpb24sCisJCQkJICBkcHJp bnRmX2FyZ3MpOworICAgIH0KKyAgZWxzZQorICAgIGludGVybmFsX2Vycm9y IChfX0ZJTEVfXywgX19MSU5FX18sCisJCSAgICBfKCJJbnZhbGlkIGRwcmlu dGYgc3R5bGUuIikpOworCisgIC8qIE1hbnVmYWN0dXJlIGEgcHJpbnRmL2Nv bnRpbnVlIHNlcXVlbmNlLiAgKi8KKyAgaWYgKHByaW50Zl9saW5lKQorICAg IHsKKyAgICAgIHN0cnVjdCBjb21tYW5kX2xpbmUgKnByaW50Zl9jbWRfbGlu ZSwgKmNvbnRfY21kX2xpbmUgPSBOVUxMOworCisgICAgICBjb250X2NtZF9s aW5lID0geG1hbGxvYyAoc2l6ZW9mIChzdHJ1Y3QgY29tbWFuZF9saW5lKSk7 CisgICAgICBjb250X2NtZF9saW5lLT5jb250cm9sX3R5cGUgPSBzaW1wbGVf Y29udHJvbDsKKyAgICAgIGNvbnRfY21kX2xpbmUtPmJvZHlfY291bnQgPSAw OworICAgICAgY29udF9jbWRfbGluZS0+Ym9keV9saXN0ID0gTlVMTDsKKyAg ICAgIGNvbnRfY21kX2xpbmUtPm5leHQgPSBOVUxMOworICAgICAgY29udF9j bWRfbGluZS0+bGluZSA9IHhzdHJkdXAgKCJjb250aW51ZSIpOworCisgICAg ICBwcmludGZfY21kX2xpbmUgPSB4bWFsbG9jIChzaXplb2YgKHN0cnVjdCBj b21tYW5kX2xpbmUpKTsKKyAgICAgIHByaW50Zl9jbWRfbGluZS0+Y29udHJv bF90eXBlID0gc2ltcGxlX2NvbnRyb2w7CisgICAgICBwcmludGZfY21kX2xp bmUtPmJvZHlfY291bnQgPSAwOworICAgICAgcHJpbnRmX2NtZF9saW5lLT5i b2R5X2xpc3QgPSBOVUxMOworICAgICAgcHJpbnRmX2NtZF9saW5lLT5uZXh0 ID0gY29udF9jbWRfbGluZTsKKyAgICAgIHByaW50Zl9jbWRfbGluZS0+bGlu ZSA9IHByaW50Zl9saW5lOworCisgICAgICBicmVha3BvaW50X3NldF9jb21t YW5kcyAoYiwgcHJpbnRmX2NtZF9saW5lKTsKKyAgICB9Cit9CisKKy8qIFVw ZGF0ZSBhbGwgZHByaW50ZiBjb21tYW5kcywgbWFraW5nIHRoZWlyIGNvbW1h bmQgbGlzdHMgcmVmbGVjdAorICAgY3VycmVudCBzdHlsZSBzZXR0aW5ncy4g ICovCiAKK3N0YXRpYyB2b2lkCit1cGRhdGVfZHByaW50Zl9jb21tYW5kcyAo Y2hhciAqYXJncywgaW50IGZyb21fdHR5LAorCQkJIHN0cnVjdCBjbWRfbGlz dF9lbGVtZW50ICpjKQoreworICBzdHJ1Y3QgYnJlYWtwb2ludCAqYjsKKwor ICBBTExfQlJFQUtQT0lOVFMgKGIpCisgICAgeworICAgICAgaWYgKGItPnR5 cGUgPT0gYnBfZHByaW50ZikKKwl1cGRhdGVfZHByaW50Zl9jb21tYW5kX2xp c3QgKGIpOworICAgIH0KK30KIAogLyogQ3JlYXRlIGEgYnJlYWtwb2ludCB3 aXRoIFNBTCBhcyBsb2NhdGlvbi4gIFVzZSBBRERSX1NUUklORwogICAgYXMg dGV4dHVhbCBkZXNjcmlwdGlvbiBvZiB0aGUgbG9jYXRpb24sIGFuZCBDT05E X1NUUklORwpAQCAtODM5Miw2ICs4NTE5LDcgQEAgc3RhdGljIHZvaWQKIGlu aXRfYnJlYWtwb2ludF9zYWwgKHN0cnVjdCBicmVha3BvaW50ICpiLCBzdHJ1 Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKIAkJICAgICBzdHJ1Y3Qgc3ltdGFic19h bmRfbGluZXMgc2FscywgY2hhciAqYWRkcl9zdHJpbmcsCiAJCSAgICAgY2hh ciAqZmlsdGVyLCBjaGFyICpjb25kX3N0cmluZywKKwkJICAgICBjaGFyICpl eHRyYV9zdHJpbmcsCiAJCSAgICAgZW51bSBicHR5cGUgdHlwZSwgZW51bSBi cGRpc3AgZGlzcG9zaXRpb24sCiAJCSAgICAgaW50IHRocmVhZCwgaW50IHRh c2ssIGludCBpZ25vcmVfY291bnQsCiAJCSAgICAgY29uc3Qgc3RydWN0IGJy ZWFrcG9pbnRfb3BzICpvcHMsIGludCBmcm9tX3R0eSwKQEAgLTg0MzgsNiAr ODU2Niw3IEBAIGluaXRfYnJlYWtwb2ludF9zYWwgKHN0cnVjdCBicmVha3Bv aW50ICoKIAkgIGItPnRhc2sgPSB0YXNrOwogICAKIAkgIGItPmNvbmRfc3Ry aW5nID0gY29uZF9zdHJpbmc7CisJICBiLT5leHRyYV9zdHJpbmcgPSBleHRy YV9zdHJpbmc7CiAJICBiLT5pZ25vcmVfY291bnQgPSBpZ25vcmVfY291bnQ7 CiAJICBiLT5lbmFibGVfc3RhdGUgPSBlbmFibGVkID8gYnBfZW5hYmxlZCA6 IGJwX2Rpc2FibGVkOwogCSAgYi0+ZGlzcG9zaXRpb24gPSBkaXNwb3NpdGlv bjsKQEAgLTg1MDIsNiArODYzMSwxOCBAQCBpbml0X2JyZWFrcG9pbnRfc2Fs IChzdHJ1Y3QgYnJlYWtwb2ludCAqCiAJICBpZiAoKmFyZykKICAgICAgICAg ICAgICAgZXJyb3IgKF8oIkdhcmJhZ2UgJXMgZm9sbG93cyBjb25kaXRpb24i KSwgYXJnKTsKIAl9CisKKyAgICAgIC8qIER5bmFtaWMgcHJpbnRmIHJlcXVp cmVzIGFuZCB1c2VzIGFkZGl0aW9uYWwgYXJndW1lbnRzIG9uIHRoZQorCSBj b21tYW5kIGxpbmUsIG90aGVyd2lzZSBpdCdzIGFuIGVycm9yLiAgKi8KKyAg ICAgIGlmICh0eXBlID09IGJwX2RwcmludGYpCisJeworCSAgaWYgKGItPmV4 dHJhX3N0cmluZykKKwkgICAgdXBkYXRlX2RwcmludGZfY29tbWFuZF9saXN0 IChiKTsKKwkgIGVsc2UKKwkgICAgZXJyb3IgKF8oIkZvcm1hdCBzdHJpbmcg cmVxdWlyZWQiKSk7CisJfQorICAgICAgZWxzZSBpZiAoYi0+ZXh0cmFfc3Ry aW5nKQorCWVycm9yIChfKCJHYXJiYWdlICVzIGF0IGVuZCBvZiBjb21tYW5k IiksIGItPmV4dHJhX3N0cmluZyk7CiAgICAgfSAgIAogCiAgIGItPmRpc3Bs YXlfY2Fub25pY2FsID0gZGlzcGxheV9jYW5vbmljYWw7CkBAIC04NTE5LDYg Kzg2NjAsNyBAQCBzdGF0aWMgdm9pZAogY3JlYXRlX2JyZWFrcG9pbnRfc2Fs IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKIAkJICAgICAgIHN0cnVjdCBz eW10YWJzX2FuZF9saW5lcyBzYWxzLCBjaGFyICphZGRyX3N0cmluZywKIAkJ ICAgICAgIGNoYXIgKmZpbHRlciwgY2hhciAqY29uZF9zdHJpbmcsCisJCSAg ICAgICBjaGFyICpleHRyYV9zdHJpbmcsCiAJCSAgICAgICBlbnVtIGJwdHlw ZSB0eXBlLCBlbnVtIGJwZGlzcCBkaXNwb3NpdGlvbiwKIAkJICAgICAgIGlu dCB0aHJlYWQsIGludCB0YXNrLCBpbnQgaWdub3JlX2NvdW50LAogCQkgICAg ICAgY29uc3Qgc3RydWN0IGJyZWFrcG9pbnRfb3BzICpvcHMsIGludCBmcm9t X3R0eSwKQEAgLTg1NDIsNyArODY4NCw3IEBAIGNyZWF0ZV9icmVha3BvaW50 X3NhbCAoc3RydWN0IGdkYmFyY2ggKmcKIAogICBpbml0X2JyZWFrcG9pbnRf c2FsIChiLCBnZGJhcmNoLAogCQkgICAgICAgc2FscywgYWRkcl9zdHJpbmcs Ci0JCSAgICAgICBmaWx0ZXIsIGNvbmRfc3RyaW5nLAorCQkgICAgICAgZmls dGVyLCBjb25kX3N0cmluZywgZXh0cmFfc3RyaW5nLAogCQkgICAgICAgdHlw ZSwgZGlzcG9zaXRpb24sCiAJCSAgICAgICB0aHJlYWQsIHRhc2ssIGlnbm9y ZV9jb3VudCwKIAkJICAgICAgIG9wcywgZnJvbV90dHksCkBAIC04NTcxLDcg Kzg3MTMsNyBAQCBjcmVhdGVfYnJlYWtwb2ludF9zYWwgKHN0cnVjdCBnZGJh cmNoICpnCiBzdGF0aWMgdm9pZAogY3JlYXRlX2JyZWFrcG9pbnRzX3NhbCAo c3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCiAJCQlzdHJ1Y3QgbGluZXNwZWNf cmVzdWx0ICpjYW5vbmljYWwsCi0JCQljaGFyICpjb25kX3N0cmluZywKKwkJ CWNoYXIgKmNvbmRfc3RyaW5nLCBjaGFyICpleHRyYV9zdHJpbmcsCiAJCQll bnVtIGJwdHlwZSB0eXBlLCBlbnVtIGJwZGlzcCBkaXNwb3NpdGlvbiwKIAkJ CWludCB0aHJlYWQsIGludCB0YXNrLCBpbnQgaWdub3JlX2NvdW50LAogCQkJ Y29uc3Qgc3RydWN0IGJyZWFrcG9pbnRfb3BzICpvcHMsIGludCBmcm9tX3R0 eSwKQEAgLTg1OTcsNyArODczOSw4IEBAIGNyZWF0ZV9icmVha3BvaW50c19z YWwgKHN0cnVjdCBnZGJhcmNoICoKICAgICAgIGNyZWF0ZV9icmVha3BvaW50 X3NhbCAoZ2RiYXJjaCwgbHNhbC0+c2FscywKIAkJCSAgICAgYWRkcl9zdHJp bmcsCiAJCQkgICAgIGZpbHRlcl9zdHJpbmcsCi0JCQkgICAgIGNvbmRfc3Ry aW5nLCB0eXBlLCBkaXNwb3NpdGlvbiwKKwkJCSAgICAgY29uZF9zdHJpbmcs IGV4dHJhX3N0cmluZywKKwkJCSAgICAgdHlwZSwgZGlzcG9zaXRpb24sCiAJ CQkgICAgIHRocmVhZCwgdGFzaywgaWdub3JlX2NvdW50LCBvcHMsCiAJCQkg ICAgIGZyb21fdHR5LCBlbmFibGVkLCBpbnRlcm5hbCwgZmxhZ3MsCiAJCQkg ICAgIGNhbm9uaWNhbC0+c3BlY2lhbF9kaXNwbGF5KTsKQEAgLTg3MzQsNyAr ODg3Nyw4IEBAIGNoZWNrX2Zhc3RfdHJhY2Vwb2ludF9zYWxzIChzdHJ1Y3Qg Z2RiYXIKICAgIElmIG5vIHRocmVhZCBpcyBmb3VuZCwgKlRIUkVBRCBpcyBz ZXQgdG8gLTEuICAqLwogc3RhdGljIHZvaWQgCiBmaW5kX2NvbmRpdGlvbl9h bmRfdGhyZWFkIChjaGFyICp0b2ssIENPUkVfQUREUiBwYywgCi0JCQkgICBj aGFyICoqY29uZF9zdHJpbmcsIGludCAqdGhyZWFkLCBpbnQgKnRhc2spCisJ CQkgICBjaGFyICoqY29uZF9zdHJpbmcsIGludCAqdGhyZWFkLCBpbnQgKnRh c2ssCisJCQkgICBjaGFyICoqcmVzdCkKIHsKICAgKmNvbmRfc3RyaW5nID0g TlVMTDsKICAgKnRocmVhZCA9IC0xOwpAQCAtODc0Niw3ICs4ODkwLDEzIEBA IGZpbmRfY29uZGl0aW9uX2FuZF90aHJlYWQgKGNoYXIgKnRvaywgQ08KICAg ICAgIGNoYXIgKmNvbmRfZW5kID0gTlVMTDsKIAogICAgICAgdG9rID0gc2tp cF9zcGFjZXMgKHRvayk7Ci0gICAgICAKKworICAgICAgaWYgKCgqdG9rID09 ICciJyB8fCAqdG9rID09ICcsJykgJiYgcmVzdCkKKwl7CisJICAqcmVzdCA9 IHNhdmVzdHJpbmcgKHRvaywgc3RybGVuICh0b2spKTsKKwkgIHJldHVybjsK Kwl9CisKICAgICAgIGVuZF90b2sgPSBza2lwX3RvX3NwYWNlICh0b2spOwog ICAgICAgCiAgICAgICB0b2tsZW4gPSBlbmRfdG9rIC0gdG9rOwpAQCAtODc4 Niw2ICs4OTM2LDExIEBAIGZpbmRfY29uZGl0aW9uX2FuZF90aHJlYWQgKGNo YXIgKnRvaywgQ08KIAkgIGlmICghdmFsaWRfdGFza19pZCAoKnRhc2spKQog CSAgICBlcnJvciAoXygiVW5rbm93biB0YXNrICVkLiIpLCAqdGFzayk7CiAJ fQorICAgICAgZWxzZSBpZiAocmVzdCkKKwl7CisJICAqcmVzdCA9IHNhdmVz dHJpbmcgKHRvaywgc3RybGVuICh0b2spKTsKKwkgIHRvayArPSB0b2tsZW47 CisJfQogICAgICAgZWxzZQogCWVycm9yIChfKCJKdW5rIGF0IGVuZCBvZiBh cmd1bWVudHMuIikpOwogICAgIH0KQEAgLTg4NTMsNyArOTAwOCw4IEBAIGRl Y29kZV9zdGF0aWNfdHJhY2Vwb2ludF9zcGVjIChjaGFyICoqYXIKIAogaW50 CiBjcmVhdGVfYnJlYWtwb2ludCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gs Ci0JCSAgIGNoYXIgKmFyZywgY2hhciAqY29uZF9zdHJpbmcsIGludCB0aHJl YWQsCisJCSAgIGNoYXIgKmFyZywgY2hhciAqY29uZF9zdHJpbmcsCisJCSAg IGludCB0aHJlYWQsIGNoYXIgKmV4dHJhX3N0cmluZywKIAkJICAgaW50IHBh cnNlX2NvbmRpdGlvbl9hbmRfdGhyZWFkLAogCQkgICBpbnQgdGVtcGZsYWcs IGVudW0gYnB0eXBlIHR5cGVfd2FudGVkLAogCQkgICBpbnQgaWdub3JlX2Nv dW50LApAQCAtODk3NSwxNiArOTEzMSwyMiBAQCBjcmVhdGVfYnJlYWtwb2lu dCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyCiAKICAgICAgIGlmIChwYXJzZV9j b25kaXRpb25fYW5kX3RocmVhZCkKICAgICAgICAgeworCSAgICBjaGFyICpy ZXN0OwogICAgICAgICAgICAgLyogSGVyZSB3ZSBvbmx5IHBhcnNlICdhcmcn IHRvIHNlcGFyYXRlIGNvbmRpdGlvbgogICAgICAgICAgICAgICAgZnJvbSB0 aHJlYWQgbnVtYmVyLCBzbyBwYXJzaW5nIGluIGNvbnRleHQgb2YgZmlyc3QK ICAgICAgICAgICAgICAgIHNhbCBpcyBPSy4gIFdoZW4gc2V0dGluZyB0aGUg YnJlYWtwb2ludCB3ZSdsbCAKICAgICAgICAgICAgICAgIHJlLXBhcnNlIGl0 IGluIGNvbnRleHQgb2YgZWFjaCBzYWwuICAqLwogICAgICAgICAgICAgY29u ZF9zdHJpbmcgPSBOVUxMOwogICAgICAgICAgICAgdGhyZWFkID0gLTE7CisJ ICAgIHJlc3QgPSBOVUxMOwogICAgICAgICAgICAgZmluZF9jb25kaXRpb25f YW5kX3RocmVhZCAoYXJnLCBsc2FsLT5zYWxzLnNhbHNbMF0ucGMsICZjb25k X3N0cmluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICZ0aHJlYWQsICZ0YXNrKTsKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICZ0aHJlYWQsICZ0YXNrLCAmcmVzdCk7CiAgICAg ICAgICAgICBpZiAoY29uZF9zdHJpbmcpCiAgICAgICAgICAgICAgICAgbWFr ZV9jbGVhbnVwICh4ZnJlZSwgY29uZF9zdHJpbmcpOworCSAgICBpZiAocmVz dCkKKwkgICAgICBtYWtlX2NsZWFudXAgKHhmcmVlLCByZXN0KTsKKwkgICAg aWYgKHJlc3QpCisJICAgICAgZXh0cmFfc3RyaW5nID0gcmVzdDsKICAgICAg ICAgfQogICAgICAgZWxzZQogICAgICAgICB7CkBAIC04OTk0LDEwICs5MTU2 LDE2IEBAIGNyZWF0ZV9icmVha3BvaW50IChzdHJ1Y3QgZ2RiYXJjaCAqZ2Ri YXIKICAgICAgICAgICAgICAgICBjb25kX3N0cmluZyA9IHhzdHJkdXAgKGNv bmRfc3RyaW5nKTsKICAgICAgICAgICAgICAgICBtYWtlX2NsZWFudXAgKHhm cmVlLCBjb25kX3N0cmluZyk7CiAgICAgICAgICAgICB9CisgICAgICAgICAg ICAvKiBDcmVhdGUgYSBwcml2YXRlIGNvcHkgb2YgYW55IGV4dHJhIHN0cmlu Zy4gICovCisgICAgICAgICAgICBpZiAoZXh0cmFfc3RyaW5nKQorCSAgICAg IHsKKyAgICAgICAgICAgICAgICBleHRyYV9zdHJpbmcgPSB4c3RyZHVwIChl eHRyYV9zdHJpbmcpOworICAgICAgICAgICAgICAgIG1ha2VfY2xlYW51cCAo eGZyZWUsIGV4dHJhX3N0cmluZyk7CisJICAgICAgfQogICAgICAgICB9CiAK ICAgICAgIG9wcy0+Y3JlYXRlX2JyZWFrcG9pbnRzX3NhbCAoZ2RiYXJjaCwg JmNhbm9uaWNhbCwgbHNhbCwKLQkJCQkgICBjb25kX3N0cmluZywgdHlwZV93 YW50ZWQsCisJCQkJICAgY29uZF9zdHJpbmcsIGV4dHJhX3N0cmluZywgdHlw ZV93YW50ZWQsCiAJCQkJICAgdGVtcGZsYWcgPyBkaXNwX2RlbCA6IGRpc3Bf ZG9udHRvdWNoLAogCQkJCSAgIHRocmVhZCwgdGFzaywgaWdub3JlX2NvdW50 LCBvcHMsCiAJCQkJICAgZnJvbV90dHksIGVuYWJsZWQsIGludGVybmFsLCBm bGFncyk7CkBAIC05MDIyLDYgKzkxOTAsNyBAQCBjcmVhdGVfYnJlYWtwb2lu dCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyCiAKICAgICAgIGItPmFkZHJfc3Ry aW5nID0gY29weV9hcmc7CiAgICAgICBiLT5jb25kX3N0cmluZyA9IE5VTEw7 CisgICAgICBiLT5leHRyYV9zdHJpbmcgPSBOVUxMOwogICAgICAgYi0+aWdu b3JlX2NvdW50ID0gaWdub3JlX2NvdW50OwogICAgICAgYi0+ZGlzcG9zaXRp b24gPSB0ZW1wZmxhZyA/IGRpc3BfZGVsIDogZGlzcF9kb250dG91Y2g7CiAg ICAgICBiLT5jb25kaXRpb25fbm90X3BhcnNlZCA9IDE7CkBAIC05MDc3LDcg KzkyNDYsNyBAQCBicmVha19jb21tYW5kXzEgKGNoYXIgKmFyZywgaW50IGZs YWcsIGluCiAKICAgY3JlYXRlX2JyZWFrcG9pbnQgKGdldF9jdXJyZW50X2Fy Y2ggKCksCiAJCSAgICAgYXJnLAotCQkgICAgIE5VTEwsIDAsIDEgLyogcGFy c2UgYXJnICovLAorCQkgICAgIE5VTEwsIDAsIE5VTEwsIDEgLyogcGFyc2Ug YXJnICovLAogCQkgICAgIHRlbXBmbGFnLCB0eXBlX3dhbnRlZCwKIAkJICAg ICAwIC8qIElnbm9yZSBjb3VudCAqLywKIAkJICAgICBwZW5kaW5nX2JyZWFr X3N1cHBvcnQsCkBAIC05MjQyLDYgKzk0MTEsMjkgQEAgc3RvcGF0X2NvbW1h bmQgKGNoYXIgKmFyZywgaW50IGZyb21fdHR5KQogICAgIGJyZWFrX2NvbW1h bmRfMSAoYXJnLCAwLCBmcm9tX3R0eSk7CiB9CiAKK3ZvaWQgZHByaW50Zl9j b21tYW5kIChjaGFyICphcmcsIGludCBmcm9tX3R0eSk7CisKKy8qIFRoZSBk eW5hbWljIHByaW50ZiBjb21tYW5kIGlzIG1vc3RseSBsaWtlIGEgcmVndWxh ciBicmVha3BvaW50LCBidXQKKyAgIHdpdGggYSBwcmV3aXJlZCBjb21tYW5k IGxpc3QgY29uc2lzdGluZyBvZiBhIHNpbmdsZSBvdXRwdXQgY29tbWFuZCwK KyAgIGJ1aWx0IGZyb20gZXh0cmEgYXJndW1lbnRzIHN1cHBsaWVkIG9uIHRo ZSBkcHJpbnRmIGNvbW1hbmQKKyAgIGxpbmUuICAqLworCit2b2lkCitkcHJp bnRmX2NvbW1hbmQgKGNoYXIgKmFyZywgaW50IGZyb21fdHR5KQoreworICBj cmVhdGVfYnJlYWtwb2ludCAoZ2V0X2N1cnJlbnRfYXJjaCAoKSwKKwkJICAg ICBhcmcsCisJCSAgICAgTlVMTCwgMCwgTlVMTCwgMSAvKiBwYXJzZSBhcmcg Ki8sCisJCSAgICAgMCwgYnBfZHByaW50ZiwKKwkJICAgICAwIC8qIElnbm9y ZSBjb3VudCAqLywKKwkJICAgICBwZW5kaW5nX2JyZWFrX3N1cHBvcnQsCisJ CSAgICAgJmRwcmludGZfYnJlYWtwb2ludF9vcHMsCisJCSAgICAgZnJvbV90 dHksCisJCSAgICAgMSAvKiBlbmFibGVkICovLAorCQkgICAgIDAgLyogaW50 ZXJuYWwgKi8sCisJCSAgICAgMCk7Cit9CisKIC8qIEltcGxlbWVudCB0aGUg ImJyZWFrcG9pbnRfaGl0IiBicmVha3BvaW50X29wcyBtZXRob2QgZm9yCiAg ICByYW5nZWQgYnJlYWtwb2ludHMuICAqLwogCkBAIC0xMDk1Myw3ICsxMTE0 NSw3IEBAIGhhbmRsZV9nbnVfdjNfZXhjZXB0aW9ucyAoaW50IHRlbXBmbGFn LCAKICAgICB0cmlnZ2VyX2Z1bmNfbmFtZSA9ICJfX2N4YV90aHJvdyI7CiAK ICAgY3JlYXRlX2JyZWFrcG9pbnQgKGdldF9jdXJyZW50X2FyY2ggKCksCi0J CSAgICAgdHJpZ2dlcl9mdW5jX25hbWUsIGNvbmRfc3RyaW5nLCAtMSwKKwkJ ICAgICB0cmlnZ2VyX2Z1bmNfbmFtZSwgY29uZF9zdHJpbmcsIC0xLCBOVUxM LAogCQkgICAgIDAgLyogY29uZGl0aW9uIGFuZCB0aHJlYWQgYXJlIHZhbGlk LiAgKi8sCiAJCSAgICAgdGVtcGZsYWcsIGJwX2JyZWFrcG9pbnQsCiAJCSAg ICAgMCwKQEAgLTEyMTgyLDYgKzEyMzc0LDcgQEAgYmFzZV9icmVha3BvaW50 X2NyZWF0ZV9icmVha3BvaW50c19zYWwgKAogCQkJCQlzdHJ1Y3QgbGluZXNw ZWNfcmVzdWx0ICpjLAogCQkJCQlzdHJ1Y3QgbGluZXNwZWNfc2FscyAqbHNh bCwKIAkJCQkJY2hhciAqY29uZF9zdHJpbmcsCisJCQkJCWNoYXIgKmV4dHJh X3N0cmluZywKIAkJCQkJZW51bSBicHR5cGUgdHlwZV93YW50ZWQsCiAJCQkJ CWVudW0gYnBkaXNwIGRpc3Bvc2l0aW9uLAogCQkJCQlpbnQgdGhyZWFkLApA QCAtMTIzNDQsNiArMTI1MzcsOSBAQCBia3B0X3ByaW50X21lbnRpb24gKHN0 cnVjdCBicmVha3BvaW50ICpiCiAgICAgY2FzZSBicF9oYXJkd2FyZV9icmVh a3BvaW50OgogICAgICAgcHJpbnRmX2ZpbHRlcmVkIChfKCJIYXJkd2FyZSBh c3Npc3RlZCBicmVha3BvaW50ICVkIiksIGItPm51bWJlcik7CiAgICAgICBi cmVhazsKKyAgICBjYXNlIGJwX2RwcmludGY6CisgICAgICBwcmludGZfZmls dGVyZWQgKF8oIkRwcmludGYgJWQiKSwgYi0+bnVtYmVyKTsKKyAgICAgIGJy ZWFrOwogICAgIH0KIAogICBzYXlfd2hlcmUgKGIpOwpAQCAtMTIzODQsNiAr MTI1ODAsNyBAQCBia3B0X2NyZWF0ZV9icmVha3BvaW50c19zYWwgKHN0cnVj dCBnZGJhCiAJCQkgICAgIHN0cnVjdCBsaW5lc3BlY19yZXN1bHQgKmNhbm9u aWNhbCwKIAkJCSAgICAgc3RydWN0IGxpbmVzcGVjX3NhbHMgKmxzYWwsCiAJ CQkgICAgIGNoYXIgKmNvbmRfc3RyaW5nLAorCQkJICAgICBjaGFyICpleHRy YV9zdHJpbmcsCiAJCQkgICAgIGVudW0gYnB0eXBlIHR5cGVfd2FudGVkLAog CQkJICAgICBlbnVtIGJwZGlzcCBkaXNwb3NpdGlvbiwKIAkJCSAgICAgaW50 IHRocmVhZCwKQEAgLTEyMzkzLDcgKzEyNTkwLDggQEAgYmtwdF9jcmVhdGVf YnJlYWtwb2ludHNfc2FsIChzdHJ1Y3QgZ2RiYQogCQkJICAgICBpbnQgaW50 ZXJuYWwsIHVuc2lnbmVkIGZsYWdzKQogewogICBjcmVhdGVfYnJlYWtwb2lu dHNfc2FsX2RlZmF1bHQgKGdkYmFyY2gsIGNhbm9uaWNhbCwgbHNhbCwKLQkJ CQkgIGNvbmRfc3RyaW5nLCB0eXBlX3dhbnRlZCwKKwkJCQkgIGNvbmRfc3Ry aW5nLCBleHRyYV9zdHJpbmcsCisJCQkJICB0eXBlX3dhbnRlZCwKIAkJCQkg IGRpc3Bvc2l0aW9uLCB0aHJlYWQsIHRhc2ssCiAJCQkJICBpZ25vcmVfY291 bnQsIG9wcywgZnJvbV90dHksCiAJCQkJICBlbmFibGVkLCBpbnRlcm5hbCwg ZmxhZ3MpOwpAQCAtMTI3MDUsNiArMTI5MDMsNyBAQCB0cmFjZXBvaW50X2Ny ZWF0ZV9icmVha3BvaW50c19zYWwgKHN0cnVjCiAJCQkJICAgc3RydWN0IGxp bmVzcGVjX3Jlc3VsdCAqY2Fub25pY2FsLAogCQkJCSAgIHN0cnVjdCBsaW5l c3BlY19zYWxzICpsc2FsLAogCQkJCSAgIGNoYXIgKmNvbmRfc3RyaW5nLAor CQkJCSAgIGNoYXIgKmV4dHJhX3N0cmluZywKIAkJCQkgICBlbnVtIGJwdHlw ZSB0eXBlX3dhbnRlZCwKIAkJCQkgICBlbnVtIGJwZGlzcCBkaXNwb3NpdGlv biwKIAkJCQkgICBpbnQgdGhyZWFkLApAQCAtMTI3MTQsNyArMTI5MTMsOCBA QCB0cmFjZXBvaW50X2NyZWF0ZV9icmVha3BvaW50c19zYWwgKHN0cnVjCiAJ CQkJICAgaW50IGludGVybmFsLCB1bnNpZ25lZCBmbGFncykKIHsKICAgY3Jl YXRlX2JyZWFrcG9pbnRzX3NhbF9kZWZhdWx0IChnZGJhcmNoLCBjYW5vbmlj YWwsIGxzYWwsCi0JCQkJICBjb25kX3N0cmluZywgdHlwZV93YW50ZWQsCisJ CQkJICBjb25kX3N0cmluZywgZXh0cmFfc3RyaW5nLAorCQkJCSAgdHlwZV93 YW50ZWQsCiAJCQkJICBkaXNwb3NpdGlvbiwgdGhyZWFkLCB0YXNrLAogCQkJ CSAgaWdub3JlX2NvdW50LCBvcHMsIGZyb21fdHR5LAogCQkJCSAgZW5hYmxl ZCwgaW50ZXJuYWwsIGZsYWdzKTsKQEAgLTEyNzc4LDYgKzEyOTc4LDcgQEAg c3RyYWNlX21hcmtlcl9jcmVhdGVfYnJlYWtwb2ludHNfc2FsIChzdAogCQkJ CSAgICAgIHN0cnVjdCBsaW5lc3BlY19yZXN1bHQgKmNhbm9uaWNhbCwKIAkJ CQkgICAgICBzdHJ1Y3QgbGluZXNwZWNfc2FscyAqbHNhbCwKIAkJCQkgICAg ICBjaGFyICpjb25kX3N0cmluZywKKwkJCQkgICAgICBjaGFyICpleHRyYV9z dHJpbmcsCiAJCQkJICAgICAgZW51bSBicHR5cGUgdHlwZV93YW50ZWQsCiAJ CQkJICAgICAgZW51bSBicGRpc3AgZGlzcG9zaXRpb24sCiAJCQkJICAgICAg aW50IHRocmVhZCwKQEAgLTEyODExLDcgKzEzMDEyLDggQEAgc3RyYWNlX21h cmtlcl9jcmVhdGVfYnJlYWtwb2ludHNfc2FsIChzdAogICAgICAgdHAgPSBY Q05FVyAoc3RydWN0IHRyYWNlcG9pbnQpOwogICAgICAgaW5pdF9icmVha3Bv aW50X3NhbCAoJnRwLT5iYXNlLCBnZGJhcmNoLCBleHBhbmRlZCwKIAkJCSAg IGFkZHJfc3RyaW5nLCBOVUxMLAotCQkJICAgY29uZF9zdHJpbmcsIHR5cGVf d2FudGVkLCBkaXNwb3NpdGlvbiwKKwkJCSAgIGNvbmRfc3RyaW5nLCBleHRy YV9zdHJpbmcsCisJCQkgICB0eXBlX3dhbnRlZCwgZGlzcG9zaXRpb24sCiAJ CQkgICB0aHJlYWQsIHRhc2ssIGlnbm9yZV9jb3VudCwgb3BzLAogCQkJICAg ZnJvbV90dHksIGVuYWJsZWQsIGludGVybmFsLCBmbGFncywKIAkJCSAgIGNh bm9uaWNhbC0+c3BlY2lhbF9kaXNwbGF5KTsKQEAgLTEzNDM4LDEzICsxMzY0 MCwxNyBAQCBhZGRyX3N0cmluZ190b19zYWxzIChzdHJ1Y3QgYnJlYWtwb2lu dCAqCiAJICBjaGFyICpjb25kX3N0cmluZyA9IDA7CiAJICBpbnQgdGhyZWFk ID0gLTE7CiAJICBpbnQgdGFzayA9IDA7CisJICBjaGFyICpleHRyYV9zdHJp bmcgPSBOVUxMOwogCiAJICBmaW5kX2NvbmRpdGlvbl9hbmRfdGhyZWFkIChz LCBzYWxzLnNhbHNbMF0ucGMsCi0JCQkJICAgICAmY29uZF9zdHJpbmcsICZ0 aHJlYWQsICZ0YXNrKTsKKwkJCQkgICAgICZjb25kX3N0cmluZywgJnRocmVh ZCwgJnRhc2ssCisJCQkJICAgICAmZXh0cmFfc3RyaW5nKTsKIAkgIGlmIChj b25kX3N0cmluZykKIAkgICAgYi0+Y29uZF9zdHJpbmcgPSBjb25kX3N0cmlu ZzsKIAkgIGItPnRocmVhZCA9IHRocmVhZDsKIAkgIGItPnRhc2sgPSB0YXNr OworCSAgaWYgKGV4dHJhX3N0cmluZykKKwkgICAgYi0+ZXh0cmFfc3RyaW5n ID0gZXh0cmFfc3RyaW5nOwogCSAgYi0+Y29uZGl0aW9uX25vdF9wYXJzZWQg PSAwOwogCX0KIApAQCAtMTM1MTIsNiArMTM3MTgsNyBAQCBjcmVhdGVfYnJl YWtwb2ludHNfc2FsX2RlZmF1bHQgKHN0cnVjdCBnCiAJCQkJc3RydWN0IGxp bmVzcGVjX3Jlc3VsdCAqY2Fub25pY2FsLAogCQkJCXN0cnVjdCBsaW5lc3Bl Y19zYWxzICpsc2FsLAogCQkJCWNoYXIgKmNvbmRfc3RyaW5nLAorCQkJCWNo YXIgKmV4dHJhX3N0cmluZywKIAkJCQllbnVtIGJwdHlwZSB0eXBlX3dhbnRl ZCwKIAkJCQllbnVtIGJwZGlzcCBkaXNwb3NpdGlvbiwKIAkJCQlpbnQgdGhy ZWFkLApAQCAtMTM1MjEsNiArMTM3MjgsNyBAQCBjcmVhdGVfYnJlYWtwb2lu dHNfc2FsX2RlZmF1bHQgKHN0cnVjdCBnCiAJCQkJaW50IGludGVybmFsLCB1 bnNpZ25lZCBmbGFncykKIHsKICAgY3JlYXRlX2JyZWFrcG9pbnRzX3NhbCAo Z2RiYXJjaCwgY2Fub25pY2FsLCBjb25kX3N0cmluZywKKwkJCSAgZXh0cmFf c3RyaW5nLAogCQkJICB0eXBlX3dhbnRlZCwgZGlzcG9zaXRpb24sCiAJCQkg IHRocmVhZCwgdGFzaywgaWdub3JlX2NvdW50LCBvcHMsIGZyb21fdHR5LAog CQkJICBlbmFibGVkLCBpbnRlcm5hbCwgZmxhZ3MpOwpAQCAtMTQzOTQsNyAr MTQ2MDIsNyBAQCB0cmFjZV9jb21tYW5kIChjaGFyICphcmcsIGludCBmcm9t X3R0eSkKIAogICBpZiAoY3JlYXRlX2JyZWFrcG9pbnQgKGdldF9jdXJyZW50 X2FyY2ggKCksCiAJCQkgYXJnLAotCQkJIE5VTEwsIDAsIDEgLyogcGFyc2Ug YXJnICovLAorCQkJIE5VTEwsIDAsIE5VTEwsIDEgLyogcGFyc2UgYXJnICov LAogCQkJIDAgLyogdGVtcGZsYWcgKi8sCiAJCQkgYnBfdHJhY2Vwb2ludCAv KiB0eXBlX3dhbnRlZCAqLywKIAkJCSAwIC8qIElnbm9yZSBjb3VudCAqLywK QEAgLTE0NDExLDcgKzE0NjE5LDcgQEAgZnRyYWNlX2NvbW1hbmQgKGNoYXIg KmFyZywgaW50IGZyb21fdHR5KQogewogICBpZiAoY3JlYXRlX2JyZWFrcG9p bnQgKGdldF9jdXJyZW50X2FyY2ggKCksCiAJCQkgYXJnLAotCQkJIE5VTEws IDAsIDEgLyogcGFyc2UgYXJnICovLAorCQkJIE5VTEwsIDAsIE5VTEwsIDEg LyogcGFyc2UgYXJnICovLAogCQkJIDAgLyogdGVtcGZsYWcgKi8sCiAJCQkg YnBfZmFzdF90cmFjZXBvaW50IC8qIHR5cGVfd2FudGVkICovLAogCQkJIDAg LyogSWdub3JlIGNvdW50ICovLApAQCAtMTQ0MzksNyArMTQ2NDcsNyBAQCBz dHJhY2VfY29tbWFuZCAoY2hhciAqYXJnLCBpbnQgZnJvbV90dHkpCiAKICAg aWYgKGNyZWF0ZV9icmVha3BvaW50IChnZXRfY3VycmVudF9hcmNoICgpLAog CQkJIGFyZywKLQkJCSBOVUxMLCAwLCAxIC8qIHBhcnNlIGFyZyAqLywKKwkJ CSBOVUxMLCAwLCBOVUxMLCAxIC8qIHBhcnNlIGFyZyAqLywKIAkJCSAwIC8q IHRlbXBmbGFnICovLAogCQkJIGJwX3N0YXRpY190cmFjZXBvaW50IC8qIHR5 cGVfd2FudGVkICovLAogCQkJIDAgLyogSWdub3JlIGNvdW50ICovLApAQCAt MTQ1MDQsNyArMTQ3MTIsOCBAQCBjcmVhdGVfdHJhY2Vwb2ludF9mcm9tX3Vw bG9hZCAoc3RydWN0IHVwCiAKICAgaWYgKCFjcmVhdGVfYnJlYWtwb2ludCAo Z2V0X2N1cnJlbnRfYXJjaCAoKSwKIAkJCSAgYWRkcl9zdHIsCi0JCQkgIHV0 cC0+Y29uZF9zdHJpbmcsIC0xLCAwIC8qIHBhcnNlIGNvbmQvdGhyZWFkICov LAorCQkJICB1dHAtPmNvbmRfc3RyaW5nLCAtMSwgTlVMTCwKKwkJCSAgMCAv KiBwYXJzZSBjb25kL3RocmVhZCAqLywKIAkJCSAgMCAvKiB0ZW1wZmxhZyAq LywKIAkJCSAgdXRwLT50eXBlIC8qIHR5cGVfd2FudGVkICovLAogCQkJICAw IC8qIElnbm9yZSBjb3VudCAqLywKQEAgLTE1MjYwLDYgKzE1NDY5LDE0IEBA IGluaXRpYWxpemVfYnJlYWtwb2ludF9vcHMgKHZvaWQpCiAgIG9wcy0+cHJp bnRfb25lID0gcHJpbnRfb25lX2NhdGNoX3NvbGliOwogICBvcHMtPnByaW50 X21lbnRpb24gPSBwcmludF9tZW50aW9uX2NhdGNoX3NvbGliOwogICBvcHMt PnByaW50X3JlY3JlYXRlID0gcHJpbnRfcmVjcmVhdGVfY2F0Y2hfc29saWI7 CisKKyAgb3BzID0gJmRwcmludGZfYnJlYWtwb2ludF9vcHM7CisgICpvcHMg PSBia3B0X2Jhc2VfYnJlYWtwb2ludF9vcHM7CisgIG9wcy0+cmVfc2V0ID0g YmtwdF9yZV9zZXQ7CisgIG9wcy0+cmVzb3VyY2VzX25lZWRlZCA9IGJrcHRf cmVzb3VyY2VzX25lZWRlZDsKKyAgb3BzLT5wcmludF9pdCA9IGJrcHRfcHJp bnRfaXQ7CisgIG9wcy0+cHJpbnRfbWVudGlvbiA9IGJrcHRfcHJpbnRfbWVu dGlvbjsKKyAgb3BzLT5wcmludF9yZWNyZWF0ZSA9IGJrcHRfcHJpbnRfcmVj cmVhdGU7CiB9CiAKIHZvaWQKQEAgLTE1ODQyLDYgKzE2MDU5LDQ0IEBAIFRo ZSBicmVha3BvaW50IHdpbGwgc3RvcCBleGVjdXRpb24gb2YgdGgKIGFuIGlu c3RydWN0aW9uIGF0IGFueSBhZGRyZXNzIHdpdGhpbiB0aGUgW1NUQVJULUxP Q0FUSU9OLCBFTkQtTE9DQVRJT05dXG5cCiByYW5nZSAoaW5jbHVkaW5nIFNU QVJULUxPQ0FUSU9OIGFuZCBFTkQtTE9DQVRJT04pLiIpKTsKIAorICBjID0g YWRkX2NvbSAoImRwcmludGYiLCBjbGFzc19icmVha3BvaW50LCBkcHJpbnRm X2NvbW1hbmQsIF8oIlwKK1NldCBhIGR5bmFtaWMgcHJpbnRmIGF0IHNwZWNp ZmllZCBsaW5lIG9yIGZ1bmN0aW9uLlxuXAorZHByaW50ZiBsb2NhdGlvbixm b3JtYXQgc3RyaW5nLGFyZzEsYXJnMiwuLi5cblwKK2xvY2F0aW9uIG1heSBi ZSBhIGxpbmUgbnVtYmVyLCBmdW5jdGlvbiBuYW1lLCBvciBcIipcIiBhbmQg YW4gYWRkcmVzcy5cblwKK0lmIGEgbGluZSBudW1iZXIgaXMgc3BlY2lmaWVk LCBicmVhayBhdCBzdGFydCBvZiBjb2RlIGZvciB0aGF0IGxpbmUuXG5cCitJ ZiBhIGZ1bmN0aW9uIGlzIHNwZWNpZmllZCwgYnJlYWsgYXQgc3RhcnQgb2Yg Y29kZSBmb3IgdGhhdCBmdW5jdGlvbi5cblwKKyIpKTsKKyAgc2V0X2NtZF9j b21wbGV0ZXIgKGMsIGxvY2F0aW9uX2NvbXBsZXRlcik7CisKKyAgYWRkX3Nl dHNob3dfZW51bV9jbWQgKCJkcHJpbnRmLXN0eWxlIiwgY2xhc3Nfc3VwcG9y dCwKKwkJCWRwcmludGZfc3R5bGVfZW51bXMsICZkcHJpbnRmX3N0eWxlLCBf KCJcCitTZXQgdGhlIHN0eWxlIG9mIHVzYWdlIGZvciBkeW5hbWljIHByaW50 Zi4iKSwgXygiXAorU2hvdyB0aGUgc3R5bGUgb2YgdXNhZ2UgZm9yIGR5bmFt aWMgcHJpbnRmLiIpLCBfKCJcCitUaGlzIHNldHRpbmcgY2hvb3NlcyBob3cg R0RCIHdpbGwgZG8gYSBkeW5hbWljIHByaW50Zi5cblwKK0lmIHRoZSB2YWx1 ZSBpcyBcImdkYlwiLCB0aGVuIHRoZSBwcmludGluZyBpcyBkb25lIGJ5IEdE QiB0byBpdHMgb3duXG5cCitjb25zb2xlLCBhcyB3aXRoIHRoZSBcInByaW50 ZlwiIGNvbW1hbmQuXG5cCitJZiB0aGUgdmFsdWUgaXMgXCJjYWxsXCIsIHRo ZSBwcmludCBpcyBkb25lIGJ5IGNhbGxpbmcgYSBmdW5jdGlvbiBpbiB5b3Vy XG5cCitwcm9ncmFtOyBieSBkZWZhdWx0IHByaW50ZigpLCBidXQgeW91IGNh biBjaG9vc2UgYSBkaWZmZXJlbnQgZnVuY3Rpb24gb3JcblwKK291dHB1dCBz dHJlYW0gYnkgc2V0dGluZyBkcHJpbnRmLWZ1bmN0aW9uIGFuZCBkcHJpbnRm LWNoYW5uZWwuIiksCisJCQl1cGRhdGVfZHByaW50Zl9jb21tYW5kcywgTlVM TCwKKwkJCSZzZXRsaXN0LCAmc2hvd2xpc3QpOworCisgIGRwcmludGZfZnVu Y3Rpb24gPSB4c3RyZHVwICgicHJpbnRmIik7CisgIGFkZF9zZXRzaG93X3N0 cmluZ19jbWQgKCJkcHJpbnRmLWZ1bmN0aW9uIiwgY2xhc3Nfc3VwcG9ydCwK KwkJCSAgJmRwcmludGZfZnVuY3Rpb24sIF8oIlwKK1NldCB0aGUgZnVuY3Rp b24gdG8gdXNlIGZvciBkeW5hbWljIHByaW50ZiIpLCBfKCJcCitTaG93IHRo ZSBmdW5jdGlvbiB0byB1c2UgZm9yIGR5bmFtaWMgcHJpbnRmIiksIE5VTEws CisJCQkgIHVwZGF0ZV9kcHJpbnRmX2NvbW1hbmRzLCBOVUxMLAorCQkJICAm c2V0bGlzdCwgJnNob3dsaXN0KTsKKworICBkcHJpbnRmX2NoYW5uZWwgPSB4 c3RyZHVwICgiIik7CisgIGFkZF9zZXRzaG93X3N0cmluZ19jbWQgKCJkcHJp bnRmLWNoYW5uZWwiLCBjbGFzc19zdXBwb3J0LAorCQkJICAmZHByaW50Zl9j aGFubmVsLCBfKCJcCitTZXQgdGhlIGNoYW5uZWwgdG8gdXNlIGZvciBkeW5h bWljIHByaW50ZiIpLCBfKCJcCitTaG93IHRoZSBjaGFubmVsIHRvIHVzZSBm b3IgZHluYW1pYyBwcmludGYiKSwgTlVMTCwKKwkJCSAgdXBkYXRlX2Rwcmlu dGZfY29tbWFuZHMsIE5VTEwsCisJCQkgICZzZXRsaXN0LCAmc2hvd2xpc3Qp OworCiAgIGF1dG9tYXRpY19oYXJkd2FyZV9icmVha3BvaW50cyA9IDE7CiAK ICAgb2JzZXJ2ZXJfYXR0YWNoX2Fib3V0X3RvX3Byb2NlZWQgKGJyZWFrcG9p bnRfYWJvdXRfdG9fcHJvY2VlZCk7CkluZGV4OiBicmVha3BvaW50LmgKPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9zcmMvc3JjL2dk Yi9icmVha3BvaW50LmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMTgxCmRp ZmYgLXUgLXAgLXIxLjE4MSBicmVha3BvaW50LmgKLS0tIGJyZWFrcG9pbnQu aAkyNyBBcHIgMjAxMiAyMDo0Nzo1MSAtMDAwMAkxLjE4MQorKysgYnJlYWtw b2ludC5oCTE0IE1heSAyMDEyIDE1OjI2OjUzIC0wMDAwCkBAIC0xNTQsNiAr MTU0LDEzIEBAIGVudW0gYnB0eXBlCiAgICAgYnBfZmFzdF90cmFjZXBvaW50 LAogICAgIGJwX3N0YXRpY190cmFjZXBvaW50LAogCisgICAgLyogQSBkeW5h bWljIHByaW50ZiBzdG9wcyBhdCB0aGUgZ2l2ZW4gbG9jYXRpb24sIGRvZXMg YSBmb3JtYXR0ZWQKKyAgICAgICBwcmludCwgdGhlbiBhdXRvbWF0aWNhbGx5 IGNvbnRpbnVlcy4gIChBbHRob3VnaCB0aGlzIGlzIHNvcnQgb2YKKyAgICAg ICBsaWtlIGEgbWFjcm8gcGFja2FnaW5nIHVwIHN0YW5kYXJkIGJyZWFrcG9p bnQgZnVuY3Rpb25hbGl0eSwKKyAgICAgICBHREIgZG9lc24ndCBoYXZlIGEg d2F5IHRvIGNvbnN0cnVjdCB0eXBlcyBvZiBicmVha3BvaW50IGZyb20KKyAg ICAgICBlbGVtZW50cyBvZiBiZWhhdmlvci4pICAqLworICAgIGJwX2Rwcmlu dGYsCisKICAgICAvKiBFdmVudCBmb3IgSklUIGNvbXBpbGVkIGNvZGUgZ2Vu ZXJhdGlvbiBvciBkZWxldGlvbi4gICovCiAgICAgYnBfaml0X2V2ZW50LAog CkBAIC01NTIsNiArNTU5LDcgQEAgc3RydWN0IGJyZWFrcG9pbnRfb3BzCiAg IHZvaWQgKCpjcmVhdGVfYnJlYWtwb2ludHNfc2FsKSAoc3RydWN0IGdkYmFy Y2ggKiwKIAkJCQkgIHN0cnVjdCBsaW5lc3BlY19yZXN1bHQgKiwKIAkJCQkg IHN0cnVjdCBsaW5lc3BlY19zYWxzICosIGNoYXIgKiwKKwkJCQkgIGNoYXIg KiwKIAkJCQkgIGVudW0gYnB0eXBlLCBlbnVtIGJwZGlzcCwgaW50LCBpbnQs CiAJCQkJICBpbnQsIGNvbnN0IHN0cnVjdCBicmVha3BvaW50X29wcyAqLAog CQkJCSAgaW50LCBpbnQsIGludCwgdW5zaWduZWQpOwpAQCAtNjc0LDggKzY4 Miw5IEBAIHN0cnVjdCBicmVha3BvaW50CiAgICAgLyogU3RyaW5nIGZvcm0g b2YgdGhlIGJyZWFrcG9pbnQgY29uZGl0aW9uIChtYWxsb2MnZCksIG9yIE5V TEwgaWYKICAgICAgICB0aGVyZSBpcyBubyBjb25kaXRpb24uICAqLwogICAg IGNoYXIgKmNvbmRfc3RyaW5nOwotICAgIC8qIFN0cmluZyBmb3JtIG9mIGV4 cCB0byB1c2UgZm9yIGRpc3BsYXlpbmcgdG8gdGhlIHVzZXIKLSAgICAgICAo bWFsbG9jJ2QpLCBvciBOVUxMIGlmIG5vbmUuICAqLworCisgICAgLyogU3Ry aW5nIGZvcm0gb2YgZXh0cmEgcGFyYW1ldGVycywgb3IgTlVMTCBpZiB0aGVy ZSBhcmUgbm9uZS4gICovCisgICAgY2hhciAqZXh0cmFfc3RyaW5nOwogCiAg ICAgLyogSG9sZHMgdGhlIGFkZHJlc3Mgb2YgdGhlIHJlbGF0ZWQgd2F0Y2hw b2ludF9zY29wZSBicmVha3BvaW50CiAgICAgICAgd2hlbiB1c2luZyB3YXRj aHBvaW50cyBvbiBsb2NhbCB2YXJpYWJsZXMgKG1pZ2h0IHRoZSBjb25jZXB0 IG9mCkBAIC0xMjEwLDYgKzEyMTksNyBAQCBlbnVtIGJyZWFrcG9pbnRfY3Jl YXRlX2ZsYWdzCiAKIGV4dGVybiBpbnQgY3JlYXRlX2JyZWFrcG9pbnQgKHN0 cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBjaGFyICphcmcsCiAJCQkgICAgICBj aGFyICpjb25kX3N0cmluZywgaW50IHRocmVhZCwKKwkJCSAgICAgIGNoYXIg KmV4dHJhX3N0cmluZywKIAkJCSAgICAgIGludCBwYXJzZV9jb25kaXRpb25f YW5kX3RocmVhZCwKIAkJCSAgICAgIGludCB0ZW1wZmxhZywgZW51bSBicHR5 cGUgd2FudGVkX3R5cGUsCiAJCQkgICAgICBpbnQgaWdub3JlX2NvdW50LApJ bmRleDogZG9jL2dkYi50ZXhpbmZvCj09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K UkNTIGZpbGU6IC9jdnMvc3JjL3NyYy9nZGIvZG9jL2dkYi50ZXhpbmZvLHYK cmV0cmlldmluZyByZXZpc2lvbiAxLjk2MwpkaWZmIC11IC1wIC1yMS45NjMg Z2RiLnRleGluZm8KLS0tIGRvYy9nZGIudGV4aW5mbwkxMyBNYXkgMjAxMiAx MTozMzo0MyAtMDAwMAkxLjk2MworKysgZG9jL2dkYi50ZXhpbmZvCTE0IE1h eSAyMDEyIDE1OjI2OjU0IC0wMDAwCkBAIC0zMzQxLDYgKzMzNDEsNyBAQCBh bGwgYnJlYWtwb2ludHMgaW4gdGhhdCByYW5nZSBhcmUgb3BlcmF0CiAqIERp c2FibGluZzo6ICAgICAgICAgICAgICAgICAgIERpc2FibGluZyBicmVha3Bv aW50cwogKiBDb25kaXRpb25zOjogICAgICAgICAgICAgICAgICBCcmVhayBj b25kaXRpb25zCiAqIEJyZWFrIENvbW1hbmRzOjogICAgICAgICAgICAgIEJy ZWFrcG9pbnQgY29tbWFuZCBsaXN0cworKiBEeW5hbWljIFByaW50Zjo6ICAg ICAgICAgICAgICBEeW5hbWljIHByaW50ZgogKiBTYXZlIEJyZWFrcG9pbnRz OjogICAgICAgICAgICBIb3cgdG8gc2F2ZSBicmVha3BvaW50cyBpbiBhIGZp bGUKICogU3RhdGljIFByb2JlIFBvaW50czo6ICAgICAgICAgTGlzdGluZyBz dGF0aWMgcHJvYmUgcG9pbnRzCiAqIEVycm9yIGluIEJyZWFrcG9pbnRzOjog ICAgICAgIGBgQ2Fubm90IGluc2VydCBicmVha3BvaW50cycnCkBAIC00NjI4 LDYgKzQ2MjksODkgQEAgY29udAogZW5kCiBAZW5kIHNtYWxsZXhhbXBsZQog CitAbm9kZSBEeW5hbWljIFByaW50ZgorQHN1YnNlY3Rpb24gRHluYW1pYyBQ cmludGYKKworQGNpbmRleCBkeW5hbWljIHByaW50ZgorQGNpbmRleCBkcHJp bnRmCitUaGUgZHluYW1pYyBwcmludGYgY29tbWFuZCBAY29kZXtkcHJpbnRm fSBjb21iaW5lcyBhIGJyZWFrcG9pbnQgd2l0aAorZm9ybWF0dGVkIHByaW50 aW5nIG9mIHlvdXIgcHJvZ3JhbSdzIGRhdGEgdG8gZ2l2ZSB5b3UgdGhlIGVm ZmVjdCBvZgoraW5zZXJ0aW5nIEBjb2Rle3ByaW50Zn0gY2FsbHMgaW50byB5 b3VyIHByb2dyYW0gb24tdGhlLWZseSwgd2l0aG91dAoraGF2aW5nIHRvIHJl Y29tcGlsZSBpdC4KKworSW4gaXRzIG1vc3QgYmFzaWMgZm9ybSwgdGhlIG91 dHB1dCBnb2VzIHRvIHRoZSBHREIgY29uc29sZS4gIEhvd2V2ZXIsCit5b3Ug Y2FuIHNldCB0aGUgdmFyaWFibGUgQGNvZGV7ZHByaW50Zi1zdHlsZX0gZm9y IGFsdGVybmF0ZSBoYW5kbGluZy4KK0ZvciBpbnN0YW5jZSwgeW91IGNhbiBh c2sgdG8gZm9ybWF0IHRoZSBvdXRwdXQgYnkgY2FsbGluZyB5b3VyCitwcm9n cmFtJ3MgQGNvZGV7cHJpbnRmfSBmdW5jdGlvbi4gIFRoaXMgaGFzIHRoZSBh ZHZhbnRhZ2UgdGhhdCB0aGUKK2NoYXJhY3RlcnMgZ28gdG8gdGhlIHByb2dy YW0ncyBvdXRwdXQgZGV2aWNlLCBzbyB0aGV5IGNhbiByZWNvcmRlZCBpbgor cmVkaXJlY3RzIHRvIGZpbGVzIGFuZCBzbyBmb3J0aC4KKworQHRhYmxlIEBj b2RlCitAa2luZGV4IGRwcmludGYKK0BpdGVtIGRwcmludGYgQHZhcntsb2Nh dGlvbn0sQHZhcnt0ZW1wbGF0ZX0sQHZhcntleHByZXNzaW9ufVssQHZhcntl eHByZXNzaW9ufUBkb3Rze31dCitXaGVuZXZlciBleGVjdXRpb24gcmVhY2hl cyBAdmFye2xvY2F0aW9ufSwgcHJpbnQgdGhlIHZhbHVlcyBvZiBvbmUgb3IK K21vcmUgQHZhcntleHByZXNzaW9uc30gdW5kZXIgdGhlIGNvbnRyb2wgb2Yg dGhlIHN0cmluZyBAdmFye3RlbXBsYXRlfS4KK1RvIHByaW50IHNldmVyYWwg dmFsdWVzLCBzZXBhcmF0ZSB0aGVtIHdpdGggY29tbWFzLgorCitAaXRlbSBz ZXQgZHByaW50Zi1zdHlsZSBAdmFye3N0eWxlfQorU2V0IHRoZSBkcHJpbnRm IG91dHB1dCB0byBiZSBoYW5kbGVkIGluIG9uZSBvZiBzZXZlcmFsIGRpZmZl cmVudAorc3R5bGVzIGVudW1lcmF0ZWQgYmVsb3cuICBBIGNoYW5nZSBvZiBz dHlsZSBhZmZlY3RzIGFsbCBleGlzdGluZworZHluYW1pYyBwcmludGZzIGlt bWVkaWF0ZWx5LiAgKElmIHlvdSBuZWVkIGluZGl2aWR1YWwgY29udHJvbCBv dmVyIHRoZQorcHJpbnQgY29tbWFuZHMsIHNpbXBseSBkZWZpbmUgbm9ybWFs IGJyZWFrcG9pbnRzIHdpdGgKK2V4cGxpY2l0bHktc3VwcGxpZWQgY29tbWFu ZCBsaXN0cy4pCisKK0BpdGVtIGdkYgorQGtpbmRleCBkcHJpbnRmLXN0eWxl IGdkYgorSGFuZGxlIHRoZSBvdXRwdXQgdXNpbmcgdGhlIEB2YWx1ZXtHREJO fSBAY29kZXtwcmludGZ9IGNvbW1hbmQuCisKK0BpdGVtIGNhbGwKK0BraW5k ZXggZHByaW50Zi1zdHlsZSBjYWxsCitIYW5kbGUgdGhlIG91dHB1dCBieSBj YWxsaW5nIGEgZnVuY3Rpb24gaW4geW91ciBwcm9ncmFtIChub3JtYWxseQor QGNvZGV7cHJpbnRmfSkuCisKK0BpdGVtIHNldCBkcHJpbnRmLWZ1bmN0aW9u IEB2YXJ7ZnVuY3Rpb259CitTZXQgdGhlIGZ1bmN0aW9uIHRvIGNhbGwgaWYg dGhlIGRwcmludGYgc3R5bGUgaXMgQGNvZGV7Y2FsbH0uICBCeQorZGVmYXVs dCBpdHMgdmFsdWUgaXMgQGNvZGV7cHJpbnRmfS4gIFlvdSBtYXkgc2V0IGl0 IHRvIGFueSBleHByZXNzaW9uLgordGhhdCBAdmFsdWV7R0RCTn0gY2FuIGV2 YWx1YXRlIHRvIGEgZnVuY3Rpb24sIGFzIHBlciB0aGUgQGNvZGV7Y2FsbH0K K2NvbW1hbmQuCisKK0BpdGVtIHNldCBkcHJpbnRmLWNoYW5uZWwgQHZhcntj aGFubmVsfQorU2V0IGEgYGBjaGFubmVsJycgZm9yIGRwcmludGYuICBJZiBz ZXQgdG8gYSBub24tZW1wdHkgdmFsdWUsCitAdmFsdWV7R0RCTn0gd2lsbCBl dmFsdWF0ZSBpdCBhcyBhbiBleHByZXNzaW9uIGFuZCBwYXNzIHRoZSByZXN1 bHQgYXMKK2EgZmlyc3QgYXJndW1lbnQgdG8gdGhlIEBjb2Rle2RwcmludGYt ZnVuY3Rpb259LCBpbiB0aGUgbWFubmVyIG9mCitAY29kZXtmcHJpbnRmfSBh bmQgc2ltaWxhciBmdW5jdGlvbnMuICBPdGhlcndpc2UsIHRoZSBkcHJpbnRm IGZvcm1hdAorc3RyaW5nIHdpbGwgYmUgdGhlIGZpcnN0IGFyZ3VtZW50LCBp biB0aGUgbWFubmVyIG9mIEBjb2Rle3ByaW50Zn0uCisKK0FzIGFuIGV4YW1w bGUsIGlmIHlvdSB3YW50ZWQgQGNvZGV7ZHByaW50Zn0gb3V0cHV0IHRvIGdv IHRvIGEgbG9nZmlsZQordGhhdCBpcyBhIHN0YW5kYXJkIEkvTyBzdHJlYW0g YXNzaWduZWQgdG8gdGhlIHZhcmlhYmxlIEBjb2Rle215bG9nfSwKK3lvdSBj b3VsZCBkbyB0aGUgZm9sbG93aW5nOgorCitAZXhhbXBsZQorKGdkYikgc2V0 IGRwcmludGYtc3R5bGUgY2FsbAorKGdkYikgc2V0IGRwcmludGYtZnVuY3Rp b24gZnByaW50ZgorKGdkYikgc2V0IGRwcmludGYtY2hhbm5lbCBteWxvZwor KGdkYikgZHByaW50ZiAyNSwiYXQgbGluZSAyNSwgZ2xvYj0lZFxuIixnbG9i CitEcHJpbnRmIDEgYXQgMHgxMjM0NTY6IGZpbGUgbWFpbi5jLCBsaW5lIDI1 LgorKGdkYikgaW5mbyBicmVhaworMSAgICAgICBkcHJpbnRmICAgICAgICBr ZWVwIHkgICAweDAwMTIzNDU2IGluIG1haW4gYXQgbWFpbi5jOjI1CisgICAg ICAgIGNhbGwgKHZvaWQpIGZwcmludGYgKG15bG9nLCJhdCBsaW5lIDI1LCBn bG9iPSVkXG4iLGdsb2IpCisgICAgICAgIGNvbnRpbnVlCisoZ2RiKQorQGVu ZCBleGFtcGxlCisKK05vdGUgdGhhdCB0aGUgQGNvZGV7aW5mbyBicmVha30g ZGlzcGxheXMgdGhlIGR5bmFtaWMgcHJpbnRmIGNvbW1hbmRzCithcyBub3Jt YWwgYnJlYWtwb2ludCBjb21tYW5kczsgeW91IGNhbiB0aHVzIGVhc2lseSBz ZWUgdGhlIGVmZmVjdCBvZgordGhlIHZhcmlhYmxlIHNldHRpbmdzLgorCitA ZW5kIHRhYmxlCisKK0B2YWx1ZXtHREJOfSBkb2VzIG5vdCBjaGVjayB0aGUg dmFsaWRpdHkgb2YgZnVuY3Rpb24gYW5kIGNoYW5uZWwsCityZWx5aW5nIG9u IHlvdSB0byBzdXBwbHkgdmFsdWVzIHRoYXQgYXJlIG1lYW5pbmdmdWwgZm9y IHRoZSBjb250ZXh0cworaW4gd2hpY2ggdGhleSBhcmUgYmVpbmcgdXNlZC4g IEZvciBpbnN0YW5jZSwgdGhlIGZ1bmN0aW9uIGFuZCBjaGFubmVsCittYXkg YmUgdGhlIHZhbHVlcyBvZiBsb2NhbCB2YXJpYWJsZXMsIGJ1dCBpZiB0aGF0 IGlzIHRoZSBjYXNlLCB0aGVuCithbGwgZW5hYmxlZCBkeW5hbWljIHByaW50 cyBtdXN0IGJlIGF0IGxvY2F0aW9ucyB3aXRoaW4gdGhlIHNjb3BlIG9mCit0 aG9zZSBsb2NhbHMuICBJZiBldmFsdWF0aW9uIGZhaWxzLCBAdmFsdWV7R0RC Tn0gd2lsbCByZXBvcnQgYW4gZXJyb3IuCisKIEBub2RlIFNhdmUgQnJlYWtw b2ludHMKIEBzdWJzZWN0aW9uIEhvdyB0byBzYXZlIGJyZWFrcG9pbnRzIHRv IGEgZmlsZQogCkluZGV4OiBweXRob24vcHktYnJlYWtwb2ludC5jCj09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvc3JjL3NyYy9nZGIv cHl0aG9uL3B5LWJyZWFrcG9pbnQuYyx2CnJldHJpZXZpbmcgcmV2aXNpb24g MS4zMwpkaWZmIC11IC1wIC1yMS4zMyBweS1icmVha3BvaW50LmMKLS0tIHB5 dGhvbi9weS1icmVha3BvaW50LmMJMTMgTWFyIDIwMTIgMTM6MzA6NDIgLTAw MDAJMS4zMworKysgcHl0aG9uL3B5LWJyZWFrcG9pbnQuYwkxNCBNYXkgMjAx MiAxNToyNjo1NCAtMDAwMApAQCAtNjIyLDcgKzYyMiw3IEBAIGJwcHlfaW5p dCAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmcKIAljYXNlIGJwX2Jy ZWFrcG9pbnQ6CiAJICB7CiAJICAgIGNyZWF0ZV9icmVha3BvaW50IChweXRo b25fZ2RiYXJjaCwKLQkJCSAgICAgICBjb3B5LCBOVUxMLCAtMSwKKwkJCSAg ICAgICBjb3B5LCBOVUxMLCAtMSwgTlVMTCwKIAkJCSAgICAgICAwLAogCQkJ ICAgICAgIDAsIGJwX2JyZWFrcG9pbnQsCiAJCQkgICAgICAgMCwKSW5kZXg6 IHB5dGhvbi9weS1maW5pc2hicmVha3BvaW50LmMKPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQpSQ1MgZmlsZTogL2N2cy9zcmMvc3JjL2dkYi9weXRob24vcHkt ZmluaXNoYnJlYWtwb2ludC5jLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjQK ZGlmZiAtdSAtcCAtcjEuNCBweS1maW5pc2hicmVha3BvaW50LmMKLS0tIHB5 dGhvbi9weS1maW5pc2hicmVha3BvaW50LmMJMTMgTWFyIDIwMTIgMTM6MzA6 NDIgLTAwMDAJMS40CisrKyBweXRob24vcHktZmluaXNoYnJlYWtwb2ludC5j CTE0IE1heSAyMDEyIDE1OjI2OjU0IC0wMDAwCkBAIC0yODEsNyArMjgxLDcg QEAgYnBmaW5pc2hweV9pbml0IChQeU9iamVjdCAqc2VsZiwgUHlPYmplYwog ICAgICAgYWRkcl9zdHIgPSBzbWFsbF9idWY7CiAKICAgICAgIGNyZWF0ZV9i cmVha3BvaW50IChweXRob25fZ2RiYXJjaCwKLSAgICAgICAgICAgICAgICAg ICAgICAgICBhZGRyX3N0ciwgTlVMTCwgdGhyZWFkLAorICAgICAgICAgICAg ICAgICAgICAgICAgIGFkZHJfc3RyLCBOVUxMLCB0aHJlYWQsIE5VTEwsCiAg ICAgICAgICAgICAgICAgICAgICAgICAgMCwKICAgICAgICAgICAgICAgICAg ICAgICAgICAxIC8qdGVtcF9mbGFnKi8sCiAgICAgICAgICAgICAgICAgICAg ICAgICAgYnBfYnJlYWtwb2ludCwKSW5kZXg6IG1pL21pLWNtZC1icmVhay5j Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvc3JjL3Ny Yy9nZGIvbWkvbWktY21kLWJyZWFrLmMsdgpyZXRyaWV2aW5nIHJldmlzaW9u IDEuNTEKZGlmZiAtdSAtcCAtcjEuNTEgbWktY21kLWJyZWFrLmMKLS0tIG1p L21pLWNtZC1icmVhay5jCTEzIE1hciAyMDEyIDEzOjMwOjQyIC0wMDAwCTEu NTEKKysrIG1pL21pLWNtZC1icmVhay5jCTE0IE1heSAyMDEyIDE1OjI2OjU0 IC0wMDAwCkBAIC0xNjQsNiArMTY0LDcgQEAgbWlfY21kX2JyZWFrX2luc2Vy dCAoY2hhciAqY29tbWFuZCwgY2hhcgogCQkgOiAoaGFyZHdhcmUgPyBicF9o YXJkd2FyZV9icmVha3BvaW50IDogYnBfYnJlYWtwb2ludCkpOwogCiAgIGNy ZWF0ZV9icmVha3BvaW50IChnZXRfY3VycmVudF9hcmNoICgpLCBhZGRyZXNz LCBjb25kaXRpb24sIHRocmVhZCwKKwkJICAgICBOVUxMLAogCQkgICAgIDAg LyogY29uZGl0aW9uIGFuZCB0aHJlYWQgYXJlIHZhbGlkLiAgKi8sCiAJCSAg ICAgdGVtcF9wLCB0eXBlX3dhbnRlZCwKIAkJICAgICBpZ25vcmVfY291bnQs CkluZGV4OiB0ZXN0c3VpdGUvZ2RiLmJhc2UvZHByaW50Zi5jCj09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KUkNTIGZpbGU6IHRlc3RzdWl0ZS9nZGIuYmFzZS9k cHJpbnRmLmMKZGlmZiAtTiB0ZXN0c3VpdGUvZ2RiLmJhc2UvZHByaW50Zi5j Ci0tLSAvZGV2L251bGwJMSBKYW4gMTk3MCAwMDowMDowMCAtMDAwMAorKysg dGVzdHN1aXRlL2dkYi5iYXNlL2RwcmludGYuYwkxNCBNYXkgMjAxMiAxNToy Njo1NCAtMDAwMApAQCAtMCwwICsxLDQ0IEBACisvKiBUaGlzIHRlc3RjYXNl IGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgorCisgICBDb3B5 cmlnaHQgKEMpIDIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu CisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgICBpdCB1bmRlciB0 aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFz IHB1Ymxpc2hlZCBieQorICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv bjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKyAgIChh dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgIFRoaXMg cHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp bGwgYmUgdXNlZnVsLAorICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3 aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgIE1FUkNI QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RS4gIFNlZSB0aGUKKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv ciBtb3JlIGRldGFpbHMuCisKKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl ZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisg ICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRw Oi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisKKyNpbmNsdWRlIDxz dGRpby5oPgorCitzdGF0aWMgaW50IGc7CisKK3ZvaWQKK2ZvbyAoaW50IGFy ZykKK3sKKyAgZyArPSBhcmc7CisgIGcgKj0gMjsgLyogc2V0IGRwcmludGYg MSBoZXJlICovCisgIGcgLz0gMi41OyAvKiBzZXQgYnJlYWtwb2ludCAxIGhl cmUgKi8KK30KKworaW50CittYWluIChpbnQgYXJnYywgY2hhciAqYXJndltd KQoreworICBpbnQgbG9jID0gMTIzNDsKKworICAvKiBFbnN1cmUgdGhlc2Ug ZnVuY3Rpb25zIGFyZSBhdmFpbGFibGUuICAqLworICBwcmludGYgKCJraWNr b2ZmXG4iKTsKKyAgZnByaW50ZiAoc3RkZXJyLCAiYWxzbyB0byBzdGRlcnJc biIpOworCisgIGZvbyAobG9jKyspOworICBmb28gKGxvYysrKTsKKyAgZm9v IChsb2MrKyk7CisgIHJldHVybiBnOworfQorCkluZGV4OiB0ZXN0c3VpdGUv Z2RiLmJhc2UvZHByaW50Zi5leHAKPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpS Q1MgZmlsZTogdGVzdHN1aXRlL2dkYi5iYXNlL2RwcmludGYuZXhwCmRpZmYg LU4gdGVzdHN1aXRlL2dkYi5iYXNlL2RwcmludGYuZXhwCi0tLSAvZGV2L251 bGwJMSBKYW4gMTk3MCAwMDowMDowMCAtMDAwMAorKysgdGVzdHN1aXRlL2dk Yi5iYXNlL2RwcmludGYuZXhwCTE0IE1heSAyMDEyIDE1OjI2OjU0IC0wMDAw CkBAIC0wLDAgKzEsODkgQEAKKyMgICBDb3B5cmlnaHQgKEMpIDIwMTIgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisKKyMgVGhpcyBwcm9ncmFt IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu ZC9vciBtb2RpZnkKKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyMgdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBv ZiB0aGUgTGljZW5zZSwgb3IKKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0 ZXIgdmVyc2lvbi4KKyMKKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVk IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjIGJ1dCBX SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk IHdhcnJhbnR5IG9mCisjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyMgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMgWW91 IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UKKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0u ICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4u CisKKworaWYgeyBbcHJlcGFyZV9mb3JfdGVzdGluZyBkcHJpbnRmLmV4cCAi ZHByaW50ZiIge30ge2RlYnVnfV0gfSB7CisgICAgcmV0dXJuIC0xCit9CisK K3NldCBzcmNmaWxlIGRwcmludGYuYworCitzZXQgYnBfbG9jYXRpb24xIFtn ZGJfZ2V0X2xpbmVfbnVtYmVyICJzZXQgYnJlYWtwb2ludCAxIGhlcmUiXQor c2V0IGRwX2xvY2F0aW9uMSBbZ2RiX2dldF9saW5lX251bWJlciAic2V0IGRw cmludGYgMSBoZXJlIl0KKworZ2RiX2JyZWFrcG9pbnQgIm1haW4iCitnZGJf cnVuX2NtZAorCitnZGJfdGVzdCAiZHByaW50ZiIgIkZvcm1hdCBzdHJpbmcg cmVxdWlyZWQiCisKK2dkYl90ZXN0ICJkcHJpbnRmIGZvbyIgIkZvcm1hdCBz dHJpbmcgcmVxdWlyZWQiCisKK2dkYl90ZXN0ICJkcHJpbnRmIDI5IiAiRm9y bWF0IHN0cmluZyByZXF1aXJlZCIKKworZGVsZXRlX2JyZWFrcG9pbnRzCisK K2dkYl9icmVha3BvaW50ICJtYWluIgorCitnZGJfdGVzdCAiZHByaW50ZiBm b28sXCJBdCBmb28gZW50cnlcXG5cIiIgXAorICAiRHByaW50ZiAuKiIKKwor Z2RiX3Rlc3QgImRwcmludGYgJGRwX2xvY2F0aW9uMSxcImFyZz0lZCwgZz0l ZFxcblwiLCBhcmcsIGciIFwKKyAgIkRwcmludGYgLioiCisKK2dkYl90ZXN0 ICJicmVhayAkYnBfbG9jYXRpb24xIiBcCisgICJCcmVha3BvaW50IC4qIgor CitnZGJfcnVuX2NtZAorCitnZGJfdGVzdCAiIiAiQnJlYWtwb2ludCIKKwor Z2RiX3Rlc3QgImNvbnRpbnVlIiAiQXQgZm9vIGVudHJ5Liphcmc9MTIzNCwg Zz0xMjM0LioiICIxc3QgZHByaW50ZiwgZ2RiIgorCitnZGJfdGVzdCAiY29u dGludWUiICJBdCBmb28gZW50cnkuKmFyZz0xMjM1LCBnPTIyMjIuKiIgIjJu ZCBkcHJpbnRmLCBnZGIiCisKKyMgVGhlICJjYWxsIiBzdHlsZSBkZXBlbmRz IG9uIGhhdmluZyBJL08gZnVuY3Rpb25zIGF2YWlsYWJsZSwgc28gdGVzdC4K KworaWYgIVt0YXJnZXRfaW5mbyBleGlzdHMgZ2RiLG5vaW5mZXJpb3Jpb10g eworCisgICAgIyBOb3cgc3dpdGNoIHN0eWxlcyBhbmQgcmVydW47IGluIHRo ZSBhYnNlbmNlIG9mIHJlZGlyZWN0aW9uIHRoZQorICAgICMgb3V0cHV0IHNo b3VsZCBiZSB0aGUgc2FtZS4KKworICAgIGdkYl90ZXN0X25vX291dHB1dCAi c2V0IGRwcmludGYtc3R5bGUgY2FsbCIgIlNldCBkcHJpbnRmIHN0eWxlIHRv IGNhbGwiCisKKyAgICBnZGJfcnVuX2NtZAorCisgICAgZ2RiX3Rlc3QgIiIg IkJyZWFrcG9pbnQiCisKKyAgICBnZGJfdGVzdCAiY29udGludWUiICJBdCBm b28gZW50cnkuKmFyZz0xMjM0LCBnPTEyMzQuKiIgIjFzdCBkcHJpbnRmLCBj YWxsIgorCisgICAgZ2RiX3Rlc3QgImNvbnRpbnVlIiAiQXQgZm9vIGVudHJ5 Liphcmc9MTIzNSwgZz0yMjIyLioiICIybmQgZHByaW50ZiwgY2FsbCIKKwor ICAgIGdkYl90ZXN0X25vX291dHB1dCAic2V0IGRwcmludGYtZnVuY3Rpb24g ZnByaW50ZiIgIlNldCBkcHJpbnRmIGZ1bmN0aW9uIgorICAgIGdkYl90ZXN0 X25vX291dHB1dCAic2V0IGRwcmludGYtY2hhbm5lbCBzdGRlcnIiICJTZXQg ZHByaW50ZiBjaGFubmVsIgorCisgICAgZ2RiX3J1bl9jbWQKKworICAgIGdk Yl90ZXN0ICIiICJCcmVha3BvaW50IgorCisgICAgZ2RiX3Rlc3QgImNvbnRp bnVlIiAiQXQgZm9vIGVudHJ5Liphcmc9MTIzNCwgZz0xMjM0LioiIFwKKwki MXN0IGRwcmludGYsIGZwcmludGYiCisKKyAgICBnZGJfdGVzdCAiY29udGlu dWUiICJBdCBmb28gZW50cnkuKmFyZz0xMjM1LCBnPTIyMjIuKiIgXAorCSIy bmQgZHByaW50ZiwgZnByaW50ZiIKK30KKworZ2RiX3Rlc3QgInNldCBkcHJp bnRmLXN0eWxlIGZvb2JhciIgIlVuZGVmaW5lZCBpdGVtOiBcImZvb2Jhclwi LiIgXAorICAgICJTZXQgZHByaW50ZiBzdHlsZSB0byBhbiB1bnJlY29nbml6 ZWQgdHlwZSIKKwo= --------------020504010201080401080200--