From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by sourceware.org (Postfix) with ESMTPS id 922BF3858CD1 for ; Fri, 8 Dec 2023 19:25:50 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 922BF3858CD1 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=redhat.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=redhat.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 922BF3858CD1 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=170.10.129.124 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1702063561; cv=none; b=VRUnsR1kJZHC8NNLg8CqgwbBH3+U8QWz4i1mzYmFcyxL1cL4yD6srn1okEutvSytqtvQWEWbiv0yL2y6vAtAmzYpX/ZV5ye+rZSkDyL3znT91Oj56ocLZFOrMfF1qdDJ5zecoAXJt9c62NIokThedRvf7mQaeNQYvmqjjobWmoo= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1702063561; c=relaxed/simple; bh=uTM2JPTPzSVbGwmyGzMMST6K1Ob3Lvk9xhnlErrFTIM=; h=DKIM-Signature:Message-ID:Date:MIME-Version:Subject:To:From; b=W7cuOoJSmXX2JsK2oa5ZW3BpGiNNsIJ2Tfb/xw9+3e77hUHXVmGOqQ3KdYhz83WKO/pZ47Z9N5tqbX3aBUtAWgLJA+HrARwdZ0kBppRKI9m7QSPXyJXhUyCQqskSem19oar+lryVaC1HiNnQaBR4IV77XM8MXWjMQZk91kbm5BE= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1702063550; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=/8K5VswWoHAlKTFWlHflZ/ssUO6JrTRf2y5pDZjP2uI=; b=N7V2S5CROYBl2cz9JjvuWp996yW7T4oP69aojX7wP6sDEQeNjkxBWLchE5YRLLcJ6PCk3z xdu/Cp6VKnqDJadnjZYXBHB37y+sRP8B4qZoHyrfwKE1PR0kWvDuqCSvsZq2cU4taSvF9h 08ByWZ5SMh1OTSKCy2knaD88/i/80wY= Received: from mail-qk1-f200.google.com (mail-qk1-f200.google.com [209.85.222.200]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-225-umXcDWkYNm6_kIyixDRbxg-1; Fri, 08 Dec 2023 14:25:48 -0500 X-MC-Unique: umXcDWkYNm6_kIyixDRbxg-1 Received: by mail-qk1-f200.google.com with SMTP id af79cd13be357-77d7bfcceaaso240237485a.0 for ; Fri, 08 Dec 2023 11:25:48 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1702063547; x=1702668347; h=in-reply-to:from:references:cc:to:content-language:subject :user-agent:mime-version:date:message-id:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=oGBOkFnWTUS2qtrh++1Wa02jkzdYmGPwSL2FIpAUU3k=; b=MKJs1lk7QsY6/vR2txPa70sBwECQ0RxthbMwBsnopQRZ50ETF04g+keTGMBGv60giw 4Aot6u2rB1aOrmIJMaVs9P4n1bNoCIW8icJ/CxIzQdPBVy9yW542H0AgW2/6b6p8Dk76 uGPlcT0z8/T06HfL2+H6fUFn8uXIky4evSWAZu2/s7FguoPCaMaLKiW7416rrgEqrwPP 4CPLp+H5ipqkpwjeumPdix3m1K1kA/kJnaha5Zes0xzR6aXZrDj3hUZrCC/J1WQrjkBc VU9AtZ1sBwv1iFENhmFSF1qjvwZ5DsyYeBrxnwFflXzOje/d2kXrbNA6GSKniEG6aGEo e8gQ== X-Gm-Message-State: AOJu0YxpAaMz6L5u09EpHcABdA17AlxUlfZP+hceTrJdcleZq9pb1PBu u7IdQkjGJQXzpxcnjX6C2QyuYArbvIvmpv8fezAlAPvA3+Vl1J621bVJZ442gGOZbgtmxFejt90 00GQn9bfy+CbhYgRfWsGPmqrd2w== X-Received: by 2002:a05:620a:ccc:b0:77d:cd46:3ae9 with SMTP id b12-20020a05620a0ccc00b0077dcd463ae9mr568668qkj.4.1702063547329; Fri, 08 Dec 2023 11:25:47 -0800 (PST) X-Google-Smtp-Source: AGHT+IG908s0VM2MaaiKK1yw4/OHFWujS9vAbXCOahdOy4UljIpzalFwX0T5TI5AShsgVWEE1btRWQ== X-Received: by 2002:a05:620a:ccc:b0:77d:cd46:3ae9 with SMTP id b12-20020a05620a0ccc00b0077dcd463ae9mr568659qkj.4.1702063546880; Fri, 08 Dec 2023 11:25:46 -0800 (PST) Received: from [192.168.1.146] (130-44-146-16.s12558.c3-0.arl-cbr1.sbo-arl.ma.cable.rcncustomer.com. [130.44.146.16]) by smtp.gmail.com with ESMTPSA id bm27-20020a05620a199b00b0077d62e78db9sm898183qkb.128.2023.12.08.11.25.45 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 08 Dec 2023 11:25:45 -0800 (PST) Message-ID: Date: Fri, 8 Dec 2023 14:25:44 -0500 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v7 1/1] c++: Initial support for P0847R7 (Deducing This) [PR102609] To: waffl3x Cc: "gcc-patches@gcc.gnu.org" References: <_e1O52EjoN_BFiH31iHE-0eYegNJhoOdDN2O0mduqtMmt7qTGpRWgduxNppnO1si01rORJ470oWcoM-_lk1ICFo9lhe_ylBKQsJ791qMm_k=@protonmail.com> <1b3b0259-5ce4-4193-a36d-60f09e1c7c92@redhat.com> <575c0bbe-a3d6-4a54-b299-edff64df84b1@redhat.com> <59LofhYhxl7MLEuElXwZcESRB6MpjdG-iq-89B63siDRo5k0j-y6z-PVa6Y3iE1xE5LkJwpwTFi82bd0RZjB1yZbSJptFdPTBWfvOGj1W78=@protonmail.com> <61NBWPmN34lD25i-dND5emZReJ7UbgkAcS iy1eYvjwWO9ALSTArJ4NWvOqN5UDOvbmr_dTNdRFNBCkpuu5eL41dHdZfNcqH4UZru7JK2k50=@protonmail.com> From: Jason Merrill In-Reply-To: X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: multipart/mixed; boundary="------------YNHzUWrn3PMK0kZS0TtiVwLJ" Content-Language: en-US X-Spam-Status: No, score=-11.3 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,KAM_SHORT,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H4,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_NONE,TXREP,T_SCC_BODY_TEXT_LINE,URIBL_BLACK autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: This is a multi-part message in MIME format. --------------YNHzUWrn3PMK0kZS0TtiVwLJ Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 12/6/23 02:33, waffl3x wrote: > Here is the next version, it feels very close to finished. As before, I > haven't ran a bootstrap or the full testsuite yet but I did run the > explicit-obj tests which completed as expected. > > There's a few test cases that still need to be written but more tests > can always be added. The behavior added by CWG2789 works in at least > one case, but I have not added tests for it yet. The test cases for > dependent lambda expressions need to be fleshed out more, but a few > temporary ones are included to demonstrate that they do work and that > the crash is fixed. Explicit object conversion functions work, but I > need to add fleshed out tests for them, explicit-obj-basic5.C has that > test. > @@ -6586,6 +6586,17 @@ add_candidates (tree fns, tree first_arg, const vec *args, > + /* FIXME: I believe this will be bugged for xobj member functions, > + leaving this comment here to make sure we look into it > + at some point. > + Seeing this makes me want correspondence checking to be unified > + in one place though, not sure if this one needs to be different > + from other ones though. > + This function is only used here, but maybe we can use it in add > + method and move some of the logic out of there? fns_correspond absolutely needs updating to handle xob fns, and doing that by unifying it with add_method's calculation would be good. > + Side note: CWG2586 might be relevant for this area in > + particular, perhaps we wait to see if it gets accepted first? */ 2586 was accepted last year. > @@ -12574,17 +12601,25 @@ cand_parms_match (z_candidate *c1, z_candidate *c2) > fn1 = DECL_TEMPLATE_RESULT (t1); > fn2 = DECL_TEMPLATE_RESULT (t2); > } > + /* The changes I made here might be stuff I was told not to worry about? > + I'm not really sure so I'm going to leave it in. */ Good choice, this comment can go. > tree parms1 = TYPE_ARG_TYPES (TREE_TYPE (fn1)); > tree parms2 = TYPE_ARG_TYPES (TREE_TYPE (fn2)); > if (DECL_FUNCTION_MEMBER_P (fn1) > && DECL_FUNCTION_MEMBER_P (fn2) > - && (DECL_NONSTATIC_MEMBER_FUNCTION_P (fn1) > - != DECL_NONSTATIC_MEMBER_FUNCTION_P (fn2))) > + && (DECL_STATIC_FUNCTION_P (fn1) > + != DECL_STATIC_FUNCTION_P (fn2))) > { > /* Ignore 'this' when comparing the parameters of a static member > function with those of a non-static one. */ > - parms1 = skip_artificial_parms_for (fn1, parms1); > - parms2 = skip_artificial_parms_for (fn2, parms2); > + auto skip_parms = [](tree fn, tree parms){ > + if (DECL_XOBJ_MEMBER_FUNCTION_P (fn)) > + return TREE_CHAIN (parms); > + else > + return skip_artificial_parms_for (fn, parms); > + }; > + parms1 = skip_parms (fn1, parms1); > + parms2 = skip_parms (fn2, parms2); > } https://cplusplus.github.io/CWG/issues/2789.html fixes the handling of xobj fns here. Your change does the right thing for comparing static and xobj, but doesn't handle comparing iobj and xobj; I think we want to share parameter comparison code with fns_correspond/add_method. Maybe parms_correspond? > @@ -8727,21 +8882,42 @@ resolve_address_of_overloaded_function (tree target_type, > /* Good, exactly one match. Now, convert it to the correct type. */ > fn = TREE_PURPOSE (matches); > > - if (DECL_NONSTATIC_MEMBER_FUNCTION_P (fn) > - && !(complain & tf_ptrmem_ok) && !flag_ms_extensions) > + if (DECL_OBJECT_MEMBER_FUNCTION_P (fn) > + && !(complain & tf_ptrmem_ok)) > { > - static int explained; > - > - if (!(complain & tf_error)) > + /* For iobj member functions, if if -fms_extensions was passed in, this > + is not an error, so we do nothing. It is still an error regardless > + for xobj member functions though, as it is a new feature we > + (hopefully) don't need to support the behavior. */ Unfortunately, it seems that MSVC extended their weirdness to xobj fns, so -fms-extensions should as well. https://godbolt.org/z/nfvn64Kx5 > + /* I'm keeping it more basic for now. */ OK, this comment can go. > @@ -15502,9 +15627,10 @@ void > grok_special_member_properties (tree decl) > { > tree class_type; > - > + /* I believe we have to make some changes in here depending on the outcome > + of CWG2586. */ As mentioned above, CWG2586 is resolved. Be sure to scroll down to the approved resolution, or refer to the working draft. https://cplusplus.github.io/CWG/issues/2586.html > @@ -11754,8 +11754,16 @@ cp_parser_lambda_declarator_opt (cp_parser* parser, tre > else if (cxx_dialect < cxx23) > omitted_parms_loc = cp_lexer_peek_token (parser->lexer)->location; > > + /* Review note: I figured I might as well update the comments since I'm here. > + There are also some additions to the below. */ Great, this comment can go. > + /* [expr.prim.lambda.general-4] > + If the lambda-declarator contains an explicit object parameter > + ([dcl.fct]), then no lambda-specifier in the lambda-specifier-seq > + shall be mutable or static. */ > + if (lambda_specs.storage_class == sc_mutable) > + { > + auto_diagnostic_group d; > + error_at (lambda_specs.locations[ds_storage_class], > + "% lambda specifier " > + "with explicit object parameter"); > + /* Tell the user how to do what they probably meant, maybe fixits > + would be apropriate later? */ "appropriate" > + if (!dependent_type_p (non_reference (param_type))) > + /* If we are given a non-dependent type we will have already given > + a diagnosis that the following would contradict with. */; Only if the lambda has captures, though? We could also change dependent_type_p to the more specific WILDCARD_TYPE_P, I think, both here and just above. > + else if (!TYPE_REF_P (param_type)) > + inform (DECL_SOURCE_LOCATION (xobj_param), > + "the passed in closure object will not be mutated because " > + "it is taken by copy/move"); "by value" > @@ -3092,7 +3093,31 @@ finish_this_expr (void) > return rvalue (result); > > tree fn = current_nonlambda_function (); > - if (fn && DECL_STATIC_FUNCTION_P (fn)) > + if (fn && DECL_XOBJ_MEMBER_FUNCTION_P (fn)) > + { > + auto_diagnostic_group d; > + error ("% is unavailable for explicit object member " > + "functions"); > + /* Doing a fixit here is possible, but hard, might be worthwhile > + in the future. */ > + tree xobj_parm = DECL_ARGUMENTS (fn); > + gcc_assert (xobj_parm); > + tree parm_name = DECL_NAME (xobj_parm); > + if (parm_name) > + inform (DECL_SOURCE_LOCATION (xobj_parm), > + "use explicit object parameter %qD instead", > + parm_name); > + else > + { > + gcc_rich_location xobj_loc (DECL_SOURCE_LOCATION (xobj_parm)); > + /* This doesn't work and I don't know why. I'll probably remove it > + before the final version. */ > + xobj_loc.add_fixit_insert_after (" self"); > + inform (DECL_SOURCE_LOCATION (xobj_parm), > + "name and use the explicit object parameter instead"); Now seems to be the time to either fix or remove it. > @@ -12811,9 +12836,11 @@ capture_decltype (tree decl) > if (WILDCARD_TYPE_P (non_reference (obtype))) > /* We don't know what the eventual obtype quals will be. */ > return NULL_TREE; > - int quals = cp_type_quals (type); > - if (INDIRECT_TYPE_P (obtype)) > - quals |= cp_type_quals (TREE_TYPE (obtype)); > + /* This change possibly conflicts with another patch that is currently > + in flight. (Patrick Palka's PR83167 patch) I am just changing it for > + now to satisfy my tests. */ > + int const quals = cp_type_quals (type) > + | cp_type_quals (TREE_TYPE (obtype)); Doesn't TREE_TYPE (obtype) break for by-value xob? In that case I think we'd want cp_type_quals (obtype). > + The name "nonstatic" is no longer accurate with the addition of > + xobj member functions, should we change the name? */ > > bool > invalid_nonstatic_memfn_p (location_t loc, tree expr, tsubst_flags_t complain) This rule still applies to all non-static member functions: https://eel.is/c++draft/expr.ref#6.3.2 > @@ -2352,7 +2355,7 @@ invalid_nonstatic_memfn_p (location_t loc, tree expr, tsubst_flags_t complain) > if (is_overloaded_fn (expr) && !really_overloaded_fn (expr)) > expr = get_first_fn (expr); > if (TREE_TYPE (expr) > - && DECL_NONSTATIC_MEMBER_FUNCTION_P (expr)) > + && DECL_IOBJ_MEMBER_FUNCTION_P (expr)) ...and so I think this should be _OBJECT_. https://godbolt.org/z/r6v4e1ePP Here's a patch to adjust all the remaining DECL_NONSTATIC_MEMBER_FUNCTION_P. With this patch -diagnostic7.C gets the old address of non-static diagnostic, I think correctly, so I'm not sure we still need the BASELINK change in cp_build_addr_expr_1? Jason --------------YNHzUWrn3PMK0kZS0TtiVwLJ Content-Type: text/x-patch; charset=UTF-8; name="0001-c-avoid-DECL_NONSTATIC_MEMBER_FUNCTION_P.patch" Content-Disposition: attachment; filename="0001-c-avoid-DECL_NONSTATIC_MEMBER_FUNCTION_P.patch" Content-Transfer-Encoding: base64 RnJvbSA2MzIyZWU2ODYzZjAzODVmMWFkZWMxZTU5NjcyMDAwZTYxMzMxODRiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKYXNvbiBNZXJyaWxsIDxqYXNvbkByZWRoYXQuY29tPgpEYXRl OiBXZWQsIDYgRGVjIDIwMjMgMjE6MzA6MTggLTA1MDAKU3ViamVjdDogW1BBVENIXSBjKys6IGF2 b2lkIERFQ0xfTk9OU1RBVElDX01FTUJFUl9GVU5DVElPTl9QClRvOiBnY2MtcGF0Y2hlc0BnY2Mu Z251Lm9yZwoKRXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbnMgYXJlIGFsc28gbm9uLXN0 YXRpYyBtZW1iZXIgZnVuY3Rpb25zLCBzbyB3ZQpuZWVkIHRvIGNoYW5nZSB1c2VzIG9mIERFQ0xf Tk9OU1RBVElDX01FTUJFUl9GVU5DVElPTl9QIHRvIGNsYXJpZnkgd2hldGhlcgp0aGV5IGludGVu ZCB0byBpbmNsdWRlIG9yIGV4Y2x1ZGUgdGhlbS4KCmdjYy9jcC9DaGFuZ2VMb2c6CgoJKiBjcC10 cmVlLmggKERFQ0xfTk9OU1RBVElDX01FTUJFUl9GVU5DVElPTl9QKTogUG9pc29uLgoJKERFQ0xf Q09OU1RfTUVNRlVOQ19QKQoJKERFQ0xfVk9MQVRJTEVfTUVNRlVOQ19QKQoJKERFQ0xfTk9OU1RB VElDX01FTUJFUl9QKQoJKiBjYWxsLmNjIChtYXliZV93YXJuX2NsYXNzX21lbWFjY2VzcykKCShq b3VzdCkKCShkb193YXJuX2RhbmdsaW5nX3JlZmVyZW5jZSk6IERvbid0IHVzZSBpdC4KCSogY2xh c3MuY2MgKGZpbmFsaXplX2xpdGVyYWxfdHlwZV9wcm9wZXJ0eSkKCShmaW5pc2hfc3RydWN0KQoJ KiBjb25zdGV4cHIuY2MgKGlzX3ZhbGlkX2NvbnN0ZXhwcl9mbikKCSogY29udHJhY3RzLmNjIChi dWlsZF9jb250cmFjdF9jb25kaXRpb25fZnVuY3Rpb24pCgkqIGNwLW9iamNwLWNvbW1vbi5jYyAo Y3BfZGVjbF9kd2FyZl9hdHRyaWJ1dGUpCgkqIGN4eC1wcmV0dHktcHJpbnQuY2MgKGN4eF9wcmV0 dHlfcHJpbnRlcjo6cG9zdGZpeF9leHByZXNzaW9uKQoJKGN4eF9wcmV0dHlfcHJpbnRlcjo6ZGVj bGFyYXRpb25fc3BlY2lmaWVycykKCShjeHhfcHJldHR5X3ByaW50ZXI6OmRpcmVjdF9kZWNsYXJh dG9yKQoJKiBkZWNsLmNjIChjcF9maW5pc2hfZGVjbCkKCShyZWNvcmRfa2V5X21ldGhvZF9kZWZp bmVkKQoJKiBkZWNsMi5jYyAoY3BfaGFuZGxlX2RlcHJlY2F0ZWRfb3JfdW5hdmFpbGFibGUpCgkq IGluaXQuY2MgKGZpbmRfdW5pbml0X2ZpZWxkc19yKQoJKGJ1aWxkX29mZnNldF9yZWYpCgkqIGxh bWJkYS5jYyAobm9ubGFtYmRhX21ldGhvZF9iYXNldHlwZSkKCSogbWV0aG9kLmNjIChlYXJseV9j aGVja19kZWZhdWx0ZWRfY29tcGFyaXNvbikKCShudW1fYXJ0aWZpY2lhbF9wYXJtc19mb3IpCgkq IHB0LmNjIChpc19zcGVjaWFsaXphdGlvbl9vZl9mcmllbmQpCgkoZGV0ZXJtaW5lX3NwZWNpYWxp emF0aW9uKQoJKGNvcHlfZGVmYXVsdF9hcmdzX3RvX2V4cGxpY2l0X3NwZWMpCgkoY2hlY2tfZXhw bGljaXRfc3BlY2lhbGl6YXRpb24pCgkodHN1YnN0X2NvbnRyYWN0X2F0dHJpYnV0ZSkKCShjaGVj a19ub25fZGVkdWNpYmxlX2NvbnZlcnNpb25zKQoJKG1heWJlX2luc3RhbnRpYXRlX25vZXhjZXB0 KQoJKHJlZ2lzdGVyX3BhcmFtZXRlcl9zcGVjaWFsaXphdGlvbnMpCgkodmFsdWVfZGVwZW5kZW50 X2V4cHJlc3Npb25fcCkKCSogc2VhcmNoLmNjIChzaGFyZWRfbWVtYmVyX3ApCgkobG9va3VwX21l bWJlcikKCShmaWVsZF9hY2Nlc3NfcCkKCSogc2VtYW50aWNzLmNjIChmaW5pc2hfb21wX2RlY2xh cmVfc2ltZF9tZXRob2RzKQoJKiB0cmVlLmNjIChsdmFsdWVfa2luZCk6IERvbid0IHVzZQoJREVD TF9OT05TVEFUSUNfTUVNQkVSX0ZVTkNUSU9OX1AuCgpsaWJjYzEvQ2hhbmdlTG9nOgoKCSogbGli Y3AxcGx1Z2luLmNjIChwbHVnaW5fcHJhZ21hX3B1c2hfdXNlcl9leHByZXNzaW9uKTogRG9uJ3Qg dXNlCglERUNMX05PTlNUQVRJQ19NRU1CRVJfRlVOQ1RJT05fUC4KLS0tCiBnY2MvY3AvY3AtdHJl ZS5oICAgICAgICAgICB8IDE2ICsrKysrKysrKy0tLS0tLS0KIGdjYy9jcC9jYWxsLmNjICAgICAg ICAgICAgIHwgMTEgKysrKysrLS0tLS0KIGdjYy9jcC9jbGFzcy5jYyAgICAgICAgICAgIHwgIDQg KystLQogZ2NjL2NwL2NvbnN0ZXhwci5jYyAgICAgICAgfCAgMiArLQogZ2NjL2NwL2NvbnRyYWN0 cy5jYyAgICAgICAgfCAgNiArKystLS0KIGdjYy9jcC9jcC1vYmpjcC1jb21tb24uY2MgIHwgIDQg KystLQogZ2NjL2NwL2N4eC1wcmV0dHktcHJpbnQuY2MgfCAgNiArKystLS0KIGdjYy9jcC9kZWNs LmNjICAgICAgICAgICAgIHwgIDQgKystLQogZ2NjL2NwL2RlY2wyLmNjICAgICAgICAgICAgfCAg MiArLQogZ2NjL2NwL2luaXQuY2MgICAgICAgICAgICAgfCAgNCArKy0tCiBnY2MvY3AvbGFtYmRh LmNjICAgICAgICAgICB8ICAyICstCiBnY2MvY3AvbWV0aG9kLmNjICAgICAgICAgICB8ICA2ICsr Ky0tLQogZ2NjL2NwL3B0LmNjICAgICAgICAgICAgICAgfCAyNCArKysrKysrKysrKystLS0tLS0t LS0tLS0KIGdjYy9jcC9zZWFyY2guY2MgICAgICAgICAgIHwgIDUgKysrLS0KIGdjYy9jcC9zZW1h bnRpY3MuY2MgICAgICAgIHwgIDIgKy0KIGdjYy9jcC90cmVlLmNjICAgICAgICAgICAgIHwgIDIg Ky0KIGxpYmNjMS9saWJjcDFwbHVnaW4uY2MgICAgIHwgIDIgKy0KIDE3IGZpbGVzIGNoYW5nZWQs IDUzIGluc2VydGlvbnMoKyksIDQ5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2djYy9jcC9j cC10cmVlLmggYi9nY2MvY3AvY3AtdHJlZS5oCmluZGV4IGUyMjI3NDIwOTJmLi4xMTFjYjdmNmEw ZSAxMDA2NDQKLS0tIGEvZ2NjL2NwL2NwLXRyZWUuaAorKysgYi9nY2MvY3AvY3AtdHJlZS5oCkBA IC0zMzQ4LDEwICszMzQ4LDEyIEBAIHN0cnVjdCBHVFkoKCkpIGxhbmdfZGVjbCB7CiAjZGVmaW5l IERFQ0xfU1RBVElDX0ZVTkNUSU9OX1AoTk9ERSkgXAogICAoTEFOR19ERUNMX0ZOX0NIRUNLIChO T0RFKS0+c3RhdGljX2Z1bmN0aW9uKQogCi0vKiBOb256ZXJvIGZvciBGVU5DVElPTl9ERUNMIG1l YW5zIHRoYXQgdGhpcyBkZWNsIGlzIGEgbm9uLXN0YXRpYwotICAgbWVtYmVyIGZ1bmN0aW9uLCB1 c2UgREVDTF9JT0JKX01FTUJFUl9GVU5DVElPTl9QIGluc3RlYWQuICAqLwotI2RlZmluZSBERUNM X05PTlNUQVRJQ19NRU1CRVJfRlVOQ1RJT05fUChOT0RFKSBcCi0gIChUUkVFX0NPREUgKFRSRUVf VFlQRSAoTk9ERSkpID09IE1FVEhPRF9UWVBFKQorLyogTm9uemVybyBmb3IgRlVOQ1RJT05fREVD TCBtZWFucyB0aGF0IHRoaXMgZGVjbCBpcyBhIG5vbi1zdGF0aWMgbWVtYmVyCisgICBmdW5jdGlv bi4gIEMrKzIzIGV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb25zIGFyZSBhbHNvIGNvbnNp ZGVyZWQKKyAgIG5vbi1zdGF0aWMsIGJ1dCBtb3N0IGZvcm1lciB1c2VzIG9mIHRoaXMgbWFjcm8g bWVhbnQgaW1wbGljaXQgb2JqZWN0IG1lbWJlcgorICAgZnVuY3Rpb24uICBJbnN0ZWFkIG9mIHRo aXMgbWFjcm8sIHVzZSBERUNMX0lPQkpfTUVNQkVSX0ZVTkNUSU9OX1Agb3IKKyAgIERFQ0xfT0JK RUNUX01FTUJFUl9GVU5DVElPTl9QLiAgKi8KKyNkZWZpbmUgREVDTF9OT05TVEFUSUNfTUVNQkVS X0ZVTkNUSU9OX1AoTk9ERSkgZGlkX3lvdV9tZWFuX29iamVjdF9vcl9pb2JqCiAKIC8qIE5vbnpl cm8gZm9yIEZVTkNUSU9OX0RFQ0wgbWVhbnMgdGhhdCB0aGlzIGRlY2wgaXMgYW4gaW1wbGljaXQg b2JqZWN0CiAgICBtZW1iZXIgZnVuY3Rpb24uICAqLwpAQCAtMzM4MSwyMCArMzM4MywyMCBAQCBz dHJ1Y3QgR1RZKCgpKSBsYW5nX2RlY2wgewogLyogTm9uemVybyBmb3IgRlVOQ1RJT05fREVDTCBt ZWFucyB0aGF0IHRoaXMgbWVtYmVyIGZ1bmN0aW9uCiAgICBoYXMgYHRoaXMnIGFzIGNvbnN0IFgg KmNvbnN0LiAgKi8KICNkZWZpbmUgREVDTF9DT05TVF9NRU1GVU5DX1AoTk9ERSkJCQkJCSBcCi0g IChERUNMX05PTlNUQVRJQ19NRU1CRVJfRlVOQ1RJT05fUCAoTk9ERSkJCQkJIFwKKyAgKERFQ0xf SU9CSl9NRU1CRVJfRlVOQ1RJT05fUCAoTk9ERSkJCQkJIFwKICAgICYmIENQX1RZUEVfQ09OU1Rf UCAoVFJFRV9UWVBFIChUUkVFX1ZBTFVFCQkJCSBcCiAJCQkJICAoVFlQRV9BUkdfVFlQRVMgKFRS RUVfVFlQRSAoTk9ERSkpKSkpKQogCiAvKiBOb256ZXJvIGZvciBGVU5DVElPTl9ERUNMIG1lYW5z IHRoYXQgdGhpcyBtZW1iZXIgZnVuY3Rpb24KICAgIGhhcyBgdGhpcycgYXMgdm9sYXRpbGUgWCAq Y29uc3QuICAqLwogI2RlZmluZSBERUNMX1ZPTEFUSUxFX01FTUZVTkNfUChOT0RFKQkJCQkJIFwK LSAgKERFQ0xfTk9OU1RBVElDX01FTUJFUl9GVU5DVElPTl9QIChOT0RFKQkJCQkgXAorICAoREVD TF9JT0JKX01FTUJFUl9GVU5DVElPTl9QIChOT0RFKQkJCQkgXAogICAgJiYgQ1BfVFlQRV9WT0xB VElMRV9QIChUUkVFX1RZUEUgKFRSRUVfVkFMVUUJCQkJIFwKIAkJCQkgIChUWVBFX0FSR19UWVBF UyAoVFJFRV9UWVBFIChOT0RFKSkpKSkpCiAKIC8qIE5vbnplcm8gZm9yIGEgREVDTCBtZWFucyB0 aGF0IHRoaXMgbWVtYmVyIGlzIGEgbm9uLXN0YXRpYyBtZW1iZXIuICAqLwogI2RlZmluZSBERUNM X05PTlNUQVRJQ19NRU1CRVJfUChOT0RFKQkJXAotICAoREVDTF9OT05TVEFUSUNfTUVNQkVSX0ZV TkNUSU9OX1AgKE5PREUpCVwKKyAgKERFQ0xfT0JKRUNUX01FTUJFUl9GVU5DVElPTl9QIChOT0RF KQlcCiAgICB8fCBUUkVFX0NPREUgKE5PREUpID09IEZJRUxEX0RFQ0wpCiAKIC8qIE5vbnplcm8g Zm9yIGEgRklFTERfREVDTCBtZWFucyB0aGF0IHRoaXMgbWVtYmVyIG9iamVjdCB0eXBlCmRpZmYg LS1naXQgYS9nY2MvY3AvY2FsbC5jYyBiL2djYy9jcC9jYWxsLmNjCmluZGV4IGM2NGQ0MjBmMDcz Li4zZDliNTc1YTg5YiAxMDA2NDQKLS0tIGEvZ2NjL2NwL2NhbGwuY2MKKysrIGIvZ2NjL2NwL2Nh bGwuY2MKQEAgLTEwNzA1LDcgKzEwNzA1LDggQEAgbWF5YmVfd2Fybl9jbGFzc19tZW1hY2Nlc3Mg KGxvY2F0aW9uX3QgbG9jLCB0cmVlIGZuZGVjbCwKICAgICAgdHlwZS4gIElmIHNvLCBhbmQgaWYg dGhlIGNsYXNzIGhhcyBubyBub24tdHJpdmlhbCBiYXNlcyBvciBtZW1iZXJzLAogICAgICBiZSBt b3JlIHBlcm1pc3NpdmUuICAqLwogICBpZiAoY3VycmVudF9mdW5jdGlvbl9kZWNsCi0gICAgICAm JiBERUNMX05PTlNUQVRJQ19NRU1CRVJfRlVOQ1RJT05fUCAoY3VycmVudF9mdW5jdGlvbl9kZWNs KQorICAgICAgJiYgREVDTF9PQkpFQ1RfTUVNQkVSX0ZVTkNUSU9OX1AgKGN1cnJlbnRfZnVuY3Rp b25fZGVjbCkKKyAgICAgIC8qID8/PyBpc19vYmplY3RfcGFyYW1ldGVyPyAgKi8KICAgICAgICYm IGlzX3RoaXNfcGFyYW1ldGVyICh0cmVlX3N0cmlwX25vcF9jb252ZXJzaW9ucyAoZGVzdCkpKQog ICAgIHsKICAgICAgIHRyZWUgY3R4ID0gREVDTF9DT05URVhUIChjdXJyZW50X2Z1bmN0aW9uX2Rl Y2wpOwpAQCAtMTI3OTksNyArMTI4MDAsNyBAQCBqb3VzdCAoc3RydWN0IHpfY2FuZGlkYXRlICpj YW5kMSwgc3RydWN0IHpfY2FuZGlkYXRlICpjYW5kMiwgYm9vbCB3YXJuLAogCQkJICBwcmludF96 X2NhbmRpZGF0ZSAoaW5wdXRfbG9jYXRpb24sCiAJCQkJCSAgICAgTl8oImNhbmRpZGF0ZSAyOiIp LCBsKTsKIAkJCSAgaWYgKHctPmZuID09IGwtPmZuCi0JCQkgICAgICAmJiBERUNMX05PTlNUQVRJ Q19NRU1CRVJfRlVOQ1RJT05fUCAody0+Zm4pCisJCQkgICAgICAmJiBERUNMX0lPQkpfTUVNQkVS X0ZVTkNUSU9OX1AgKHctPmZuKQogCQkJICAgICAgJiYgKHR5cGVfbWVtZm5fcXVhbHMgKFRSRUVf VFlQRSAody0+Zm4pKQogCQkJCSAgJiBUWVBFX1FVQUxfQ09OU1QpID09IDApCiAJCQkgICAgewpA QCAtMTM5MjksNyArMTM5MzAsNyBAQCBkb193YXJuX2RhbmdsaW5nX3JlZmVyZW5jZSAodHJlZSBl eHByLCBib29sIGFyZ19wKQogCSAgICAgICBiZWNhdXNlIFIgcmVmZXJzIHRvIG9uZSBvZiB0aGUg aW50IGVsZW1lbnRzIG9mIFYsIG5vdCB0bwogCSAgICAgICBhIHRlbXBvcmFyeSBvYmplY3QuICBN ZW1iZXIgb3BlcmF0b3IqIG1heSByZXR1cm4gYSByZWZlcmVuY2UKIAkgICAgICAgYnV0IHByb2Jh Ymx5IG5vdCB0byBvbmUgb2YgaXRzIGFyZ3VtZW50cy4gICovCi0JICAgIHx8IChERUNMX05PTlNU QVRJQ19NRU1CRVJfRlVOQ1RJT05fUCAoZm5kZWNsKQorCSAgICB8fCAoREVDTF9PQkpFQ1RfTUVN QkVSX0ZVTkNUSU9OX1AgKGZuZGVjbCkKIAkJJiYgREVDTF9PVkVSTE9BREVEX09QRVJBVE9SX1Ag KGZuZGVjbCkKIAkJJiYgREVDTF9PVkVSTE9BREVEX09QRVJBVE9SX0lTIChmbmRlY2wsIElORElS RUNUX1JFRikpKQogCSAgcmV0dXJuIE5VTExfVFJFRTsKQEAgLTEzOTU1LDcgKzEzOTU2LDcgQEAg ZG9fd2Fybl9kYW5nbGluZ19yZWZlcmVuY2UgKHRyZWUgZXhwciwgYm9vbCBhcmdfcCkKIAkgICAg dHJlZSBhcmcgPSBDQUxMX0VYUFJfQVJHIChleHByLCBpKTsKIAkgICAgLyogQ2hlY2sgdGhhdCB0 aGlzIGFyZ3VtZW50IGluaXRpYWxpemVzIGEgcmVmZXJlbmNlLCBleGNlcHQgZm9yCiAJICAgICAg IHRoZSBhcmd1bWVudCBpbml0aWFsaXppbmcgdGhlIG9iamVjdCBvZiBhIG1lbWJlciBmdW5jdGlv bi4gICovCi0JICAgIGlmICghREVDTF9OT05TVEFUSUNfTUVNQkVSX0ZVTkNUSU9OX1AgKGZuZGVj bCkKKwkgICAgaWYgKCFERUNMX0lPQkpfTUVNQkVSX0ZVTkNUSU9OX1AgKGZuZGVjbCkKIAkJJiYg IVRZUEVfUkVGX1AgKFRSRUVfVFlQRSAoYXJnKSkpCiAJICAgICAgY29udGludWU7CiAJICAgIFNU UklQX05PUFMgKGFyZyk7CkBAIC0xMzk3NSw3ICsxMzk3Niw3IEBAIGRvX3dhcm5fZGFuZ2xpbmdf cmVmZXJlbmNlICh0cmVlIGV4cHIsIGJvb2wgYXJnX3ApCiAJICAgICAgIGNvbnN0IFMmIHMgPSBT KCkuc2VsZigpOwogCSAgICAgd2hlcmUgJ3MnIGRhbmdsZXMuICBJZiB3ZSd2ZSBnb3R0ZW4gaGVy ZSwgdGhlIG9iamVjdCB0aGlzIGZ1bmN0aW9uCiAJICAgICBpcyBpbnZva2VkIG9uIGlzIG5vdCBh IHRlbXBvcmFyeS4gICovCi0JICAgIGlmIChERUNMX05PTlNUQVRJQ19NRU1CRVJfRlVOQ1RJT05f UCAoZm5kZWNsKSkKKwkgICAgaWYgKERFQ0xfT0JKRUNUX01FTUJFUl9GVU5DVElPTl9QIChmbmRl Y2wpKQogCSAgICAgIGJyZWFrOwogCSAgfQogCXJldHVybiBOVUxMX1RSRUU7CmRpZmYgLS1naXQg YS9nY2MvY3AvY2xhc3MuY2MgYi9nY2MvY3AvY2xhc3MuY2MKaW5kZXggZDdhNGFkNWFkNTEuLjk5 YzMzMzgwYzJkIDEwMDY0NAotLS0gYS9nY2MvY3AvY2xhc3MuY2MKKysrIGIvZ2NjL2NwL2NsYXNz LmNjCkBAIC02MTIzLDcgKzYxMjMsNyBAQCBmaW5hbGl6ZV9saXRlcmFsX3R5cGVfcHJvcGVydHkg KHRyZWUgdCkKICAgICBmb3IgKGZuID0gVFlQRV9GSUVMRFMgKHQpOyBmbjsgZm4gPSBERUNMX0NI QUlOIChmbikpCiAgICAgICBpZiAoVFJFRV9DT0RFIChmbikgPT0gRlVOQ1RJT05fREVDTAogCSAg JiYgREVDTF9ERUNMQVJFRF9DT05TVEVYUFJfUCAoZm4pCi0JICAmJiBERUNMX05PTlNUQVRJQ19N RU1CRVJfRlVOQ1RJT05fUCAoZm4pCisJICAmJiBERUNMX0lPQkpfTUVNQkVSX0ZVTkNUSU9OX1Ag KGZuKQogCSAgJiYgIURFQ0xfQ09OU1RSVUNUT1JfUCAoZm4pKQogCXsKIAkgIERFQ0xfREVDTEFS RURfQ09OU1RFWFBSX1AgKGZuKSA9IGZhbHNlOwpAQCAtODA4Nyw3ICs4MDg3LDcgQEAgZmluaXNo X3N0cnVjdCAodHJlZSB0LCB0cmVlIGF0dHJpYnV0ZXMpCiAgIGlmIChmbGFnX29wZW5tcCkKICAg ICBmb3IgKHRyZWUgZGVjbCA9IFRZUEVfRklFTERTICh0KTsgZGVjbDsgZGVjbCA9IERFQ0xfQ0hB SU4gKGRlY2wpKQogICAgICAgaWYgKFRSRUVfQ09ERSAoZGVjbCkgPT0gRlVOQ1RJT05fREVDTAot CSAgJiYgREVDTF9OT05TVEFUSUNfTUVNQkVSX0ZVTkNUSU9OX1AgKGRlY2wpKQorCSAgJiYgREVD TF9PQkpFQ1RfTUVNQkVSX0ZVTkNUSU9OX1AgKGRlY2wpKQogCWlmICh0cmVlIGF0dHIgPSBsb29r dXBfYXR0cmlidXRlICgib21wIGRlY2xhcmUgdmFyaWFudCBiYXNlIiwKIAkJCQkJICBERUNMX0FU VFJJQlVURVMgKGRlY2wpKSkKIAkgIG9tcF9kZWNsYXJlX3ZhcmlhbnRfZmluYWxpemUgKGRlY2ws IGF0dHIpOwpkaWZmIC0tZ2l0IGEvZ2NjL2NwL2NvbnN0ZXhwci5jYyBiL2djYy9jcC9jb25zdGV4 cHIuY2MKaW5kZXggNTgxODdhNGZkMTIuLjRkYTZmMWEwNTI0IDEwMDY0NAotLS0gYS9nY2MvY3Av Y29uc3RleHByLmNjCisrKyBiL2djYy9jcC9jb25zdGV4cHIuY2MKQEAgLTI5MSw3ICsyOTEsNyBA QCBpc192YWxpZF9jb25zdGV4cHJfZm4gKHRyZWUgZnVuLCBib29sIGNvbXBsYWluKQogCiAgICAg ICAvKiBDKysxNCBEUiAxNjg0IHJlbW92ZWQgdGhpcyByZXN0cmljdGlvbi4gICovCiAgICAgICBp ZiAoY3h4X2RpYWxlY3QgPCBjeHgxNAotCSAgJiYgREVDTF9OT05TVEFUSUNfTUVNQkVSX0ZVTkNU SU9OX1AgKGZ1bikKKwkgICYmIERFQ0xfSU9CSl9NRU1CRVJfRlVOQ1RJT05fUCAoZnVuKQogCSAg JiYgIUNMQVNTVFlQRV9MSVRFUkFMX1AgKERFQ0xfQ09OVEVYVCAoZnVuKSkpCiAJewogCSAgcmV0 ID0gZmFsc2U7CmRpZmYgLS1naXQgYS9nY2MvY3AvY29udHJhY3RzLmNjIGIvZ2NjL2NwL2NvbnRy YWN0cy5jYwppbmRleCAwMzVjYTQ4MjdlNy4uYzUwNWI2N2QzMzkgMTAwNjQ0Ci0tLSBhL2djYy9j cC9jb250cmFjdHMuY2MKKysrIGIvZ2NjL2NwL2NvbnRyYWN0cy5jYwpAQCAtMTM5OCw3ICsxMzk4 LDcgQEAgYnVpbGRfY29udHJhY3RfY29uZGl0aW9uX2Z1bmN0aW9uICh0cmVlIGZuZGVjbCwgYm9v bCBwcmUpCiB7CiAgIGlmIChUUkVFX1RZUEUgKGZuZGVjbCkgPT0gZXJyb3JfbWFya19ub2RlKQog ICAgIHJldHVybiBlcnJvcl9tYXJrX25vZGU7Ci0gIGlmIChERUNMX05PTlNUQVRJQ19NRU1CRVJf RlVOQ1RJT05fUCAoZm5kZWNsKQorICBpZiAoREVDTF9JT0JKX01FTUJFUl9GVU5DVElPTl9QIChm bmRlY2wpCiAgICAgICAmJiAhVFlQRV9NRVRIT0RfQkFTRVRZUEUgKFRSRUVfVFlQRSAoZm5kZWNs KSkpCiAgICAgcmV0dXJuIGVycm9yX21hcmtfbm9kZTsKIApAQCAtMTQyMSw3ICsxNDIxLDcgQEAg YnVpbGRfY29udHJhY3RfY29uZGl0aW9uX2Z1bmN0aW9uICh0cmVlIGZuZGVjbCwgYm9vbCBwcmUp CiAgICAgICBhcmdfdHlwZSAmJiBhcmdfdHlwZSAhPSB2b2lkX2xpc3Rfbm9kZTsKICAgICAgIGFy Z190eXBlID0gVFJFRV9DSEFJTiAoYXJnX3R5cGUpKQogICAgIHsKLSAgICAgIGlmIChERUNMX05P TlNUQVRJQ19NRU1CRVJfRlVOQ1RJT05fUCAoZm5kZWNsKQorICAgICAgaWYgKERFQ0xfSU9CSl9N RU1CRVJfRlVOQ1RJT05fUCAoZm5kZWNsKQogCSAgJiYgVFlQRV9BUkdfVFlQRVMgKFRSRUVfVFlQ RSAoZm4pKSA9PSBhcmdfdHlwZSkKICAgICAgIHsKIAljbGFzc190eXBlID0gVFJFRV9UWVBFIChU UkVFX1ZBTFVFIChhcmdfdHlwZSkpOwpAQCAtMTQ1MSw3ICsxNDUxLDcgQEAgYnVpbGRfY29udHJh Y3RfY29uZGl0aW9uX2Z1bmN0aW9uICh0cmVlIGZuZGVjbCwgYm9vbCBwcmUpCiAgICAgfQogCiAg IFRSRUVfVFlQRSAoZm4pID0gYnVpbGRfZnVuY3Rpb25fdHlwZSAodmFsdWVfdHlwZSwgYXJnX3R5 cGVzKTsKLSAgaWYgKERFQ0xfTk9OU1RBVElDX01FTUJFUl9GVU5DVElPTl9QIChmbmRlY2wpKQor ICBpZiAoREVDTF9JT0JKX01FTUJFUl9GVU5DVElPTl9QIChmbmRlY2wpKQogICAgIFRSRUVfVFlQ RSAoZm4pID0gYnVpbGRfbWV0aG9kX3R5cGUgKGNsYXNzX3R5cGUsIFRSRUVfVFlQRSAoZm4pKTsK IAogICBERUNMX05BTUUgKGZuKSA9IGNvcHlfbm9kZSAoREVDTF9OQU1FIChmbikpOwpkaWZmIC0t Z2l0IGEvZ2NjL2NwL2NwLW9iamNwLWNvbW1vbi5jYyBiL2djYy9jcC9jcC1vYmpjcC1jb21tb24u Y2MKaW5kZXggOTQzOWM0ZGM3NDQuLmYzYmE4MTc5MzI5IDEwMDY0NAotLS0gYS9nY2MvY3AvY3At b2JqY3AtY29tbW9uLmNjCisrKyBiL2djYy9jcC9jcC1vYmpjcC1jb21tb24uY2MKQEAgLTM0OSw3 ICszNDksNyBAQCBjcF9kZWNsX2R3YXJmX2F0dHJpYnV0ZSAoY29uc3RfdHJlZSBkZWNsLCBpbnQg YXR0cikKIAogICAgIGNhc2UgRFdfQVRfcmVmZXJlbmNlOgogICAgICAgaWYgKFRSRUVfQ09ERSAo ZGVjbCkgPT0gRlVOQ1RJT05fREVDTAotCSAgJiYgREVDTF9OT05TVEFUSUNfTUVNQkVSX0ZVTkNU SU9OX1AgKGRlY2wpCisJICAmJiBERUNMX0lPQkpfTUVNQkVSX0ZVTkNUSU9OX1AgKGRlY2wpCiAJ ICAmJiBGVU5DVElPTl9SRUZfUVVBTElGSUVEIChUUkVFX1RZUEUgKGRlY2wpKQogCSAgJiYgIUZV TkNUSU9OX1JWQUxVRV9RVUFMSUZJRUQgKFRSRUVfVFlQRSAoZGVjbCkpKQogCXJldHVybiAxOwpA QCAtMzU3LDcgKzM1Nyw3IEBAIGNwX2RlY2xfZHdhcmZfYXR0cmlidXRlIChjb25zdF90cmVlIGRl Y2wsIGludCBhdHRyKQogCiAgICAgY2FzZSBEV19BVF9ydmFsdWVfcmVmZXJlbmNlOgogICAgICAg aWYgKFRSRUVfQ09ERSAoZGVjbCkgPT0gRlVOQ1RJT05fREVDTAotCSAgJiYgREVDTF9OT05TVEFU SUNfTUVNQkVSX0ZVTkNUSU9OX1AgKGRlY2wpCisJICAmJiBERUNMX0lPQkpfTUVNQkVSX0ZVTkNU SU9OX1AgKGRlY2wpCiAJICAmJiBGVU5DVElPTl9SRUZfUVVBTElGSUVEIChUUkVFX1RZUEUgKGRl Y2wpKQogCSAgJiYgRlVOQ1RJT05fUlZBTFVFX1FVQUxJRklFRCAoVFJFRV9UWVBFIChkZWNsKSkp CiAJcmV0dXJuIDE7CmRpZmYgLS1naXQgYS9nY2MvY3AvY3h4LXByZXR0eS1wcmludC5jYyBiL2dj Yy9jcC9jeHgtcHJldHR5LXByaW50LmNjCmluZGV4IDZhODIzNThmMzcwLi41M2MwNzIyZDJmMyAx MDA2NDQKLS0tIGEvZ2NjL2NwL2N4eC1wcmV0dHktcHJpbnQuY2MKKysrIGIvZ2NjL2NwL2N4eC1w cmV0dHktcHJpbnQuY2MKQEAgLTU1Myw3ICs1NTMsNyBAQCBjeHhfcHJldHR5X3ByaW50ZXI6OnBv c3RmaXhfZXhwcmVzc2lvbiAodHJlZSB0KQogCSAgIGluc3RhbnRpYXRpb24gdGltZS4gICovCiAJ aWYgKFRSRUVfQ09ERSAoZnVuKSAhPSBGVU5DVElPTl9ERUNMKQogCSAgOwotCWVsc2UgaWYgKERF Q0xfTk9OU1RBVElDX01FTUJFUl9GVU5DVElPTl9QIChmdW4pKQorCWVsc2UgaWYgKERFQ0xfT0JK RUNUX01FTUJFUl9GVU5DVElPTl9QIChmdW4pKQogCSAgewogCSAgICB0cmVlIG9iamVjdCA9IChj b2RlID09IEFHR1JfSU5JVF9FWFBSCiAJCQkgICA/IChBR0dSX0lOSVRfVklBX0NUT1JfUCAodCkK QEAgLTEzNDIsNyArMTM0Miw3IEBAIGN4eF9wcmV0dHlfcHJpbnRlcjo6ZGVjbGFyYXRpb25fc3Bl Y2lmaWVycyAodHJlZSB0KQogCSBkbyBub3QgaGF2ZSBhIHR5cGUtc3BlY2lmaWVyIGluIHRoZWly IHJldHVybiB0eXBlcy4gICovCiAgICAgICBpZiAoREVDTF9DT05TVFJVQ1RPUl9QICh0KSB8fCBE RUNMX0NPTlZfRk5fUCAodCkpCiAJZnVuY3Rpb25fc3BlY2lmaWVyICh0KTsKLSAgICAgIGVsc2Ug aWYgKERFQ0xfTk9OU1RBVElDX01FTUJFUl9GVU5DVElPTl9QICh0KSkKKyAgICAgIGVsc2UgaWYg KERFQ0xfSU9CSl9NRU1CRVJfRlVOQ1RJT05fUCAodCkpCiAJZGVjbGFyYXRpb25fc3BlY2lmaWVy cyAoVFJFRV9UWVBFIChUUkVFX1RZUEUgKHQpKSk7CiAgICAgICBlbHNlCiAgICAgICAgIGNfcHJl dHR5X3ByaW50ZXI6OmRlY2xhcmF0aW9uX3NwZWNpZmllcnMgKHQpOwpAQCAtMTcwMCw3ICsxNzAw LDcgQEAgY3h4X3ByZXR0eV9wcmludGVyOjpkaXJlY3RfZGVjbGFyYXRvciAodHJlZSB0KQogICAg ICAgZXhwcmVzc2lvbiAodCk7CiAgICAgICBwcF9jeHhfcGFyYW1ldGVyX2RlY2xhcmF0aW9uX2Ns YXVzZSAodGhpcywgdCk7CiAKLSAgICAgIGlmIChERUNMX05PTlNUQVRJQ19NRU1CRVJfRlVOQ1RJ T05fUCAodCkpCisgICAgICBpZiAoREVDTF9JT0JKX01FTUJFUl9GVU5DVElPTl9QICh0KSkKIAl7 CiAJICBwYWRkaW5nID0gcHBfYmVmb3JlOwogCSAgcHBfY3h4X2N2X3F1YWxpZmllcl9zZXEgKHRo aXMsIHBwX2N4eF9pbXBsaWNpdF9wYXJhbWV0ZXJfdHlwZSAodCkpOwpkaWZmIC0tZ2l0IGEvZ2Nj L2NwL2RlY2wuY2MgYi9nY2MvY3AvZGVjbC5jYwppbmRleCBlNTFlZGU1ZDA0My4uZTVkMTlhYjkx NjIgMTAwNjQ0Ci0tLSBhL2djYy9jcC9kZWNsLmNjCisrKyBiL2djYy9jcC9kZWNsLmNjCkBAIC04 NTI0LDcgKzg1MjQsNyBAQCBjcF9maW5pc2hfZGVjbCAodHJlZSBkZWNsLCB0cmVlIGluaXQsIGJv b2wgaW5pdF9jb25zdF9leHByX3AsCiAgICAgICAmJiBUUkVFX0NPREUgKGRlY2wpID09IEZVTkNU SU9OX0RFQ0wKICAgICAgIC8qICNwcmFnbWEgb21wIGRlY2xhcmUgdmFyaWFudCBvbiBtZXRob2Rz IGhhbmRsZWQgaW4gZmluaXNoX3N0cnVjdAogCSBpbnN0ZWFkLiAgKi8KLSAgICAgICYmICghREVD TF9OT05TVEFUSUNfTUVNQkVSX0ZVTkNUSU9OX1AgKGRlY2wpCisgICAgICAmJiAoIURFQ0xfT0JK RUNUX01FTUJFUl9GVU5DVElPTl9QIChkZWNsKQogCSAgfHwgQ09NUExFVEVfVFlQRV9QIChERUNM X0NPTlRFWFQgKGRlY2wpKSkpCiAgICAgaWYgKHRyZWUgYXR0ciA9IGxvb2t1cF9hdHRyaWJ1dGUg KCJvbXAgZGVjbGFyZSB2YXJpYW50IGJhc2UiLAogCQkJCSAgICAgIERFQ0xfQVRUUklCVVRFUyAo ZGVjbCkpKQpAQCAtMTgyODgsNyArMTgyODgsNyBAQCBvdXRlcl9jdXJseV9icmFjZV9ibG9jayAo dHJlZSBmbmRlY2wpCiBzdGF0aWMgdm9pZAogcmVjb3JkX2tleV9tZXRob2RfZGVmaW5lZCAodHJl ZSBmbmRlY2wpCiB7Ci0gIGlmIChERUNMX05PTlNUQVRJQ19NRU1CRVJfRlVOQ1RJT05fUCAoZm5k ZWNsKQorICBpZiAoREVDTF9PQkpFQ1RfTUVNQkVSX0ZVTkNUSU9OX1AgKGZuZGVjbCkKICAgICAg ICYmIERFQ0xfVklSVFVBTF9QIChmbmRlY2wpCiAgICAgICAmJiAhcHJvY2Vzc2luZ190ZW1wbGF0 ZV9kZWNsKQogICAgIHsKZGlmZiAtLWdpdCBhL2djYy9jcC9kZWNsMi5jYyBiL2djYy9jcC9kZWNs Mi5jYwppbmRleCBiZWU4NDg3OTAyMy4uNTljNDFkOGU1ODMgMTAwNjQ0Ci0tLSBhL2djYy9jcC9k ZWNsMi5jYworKysgYi9nY2MvY3AvZGVjbDIuY2MKQEAgLTU2MjUsNyArNTYyNSw3IEBAIGNwX2hh bmRsZV9kZXByZWNhdGVkX29yX3VuYXZhaWxhYmxlICh0cmVlIGRlY2wsIHRzdWJzdF9mbGFnc190 IGNvbXBsYWluKQogICBpZiAoY3h4X2RpYWxlY3QgPj0gY3h4MTEKICAgICAgICYmIERFQ0xfUCAo ZGVjbCkKICAgICAgICYmIERFQ0xfQVJUSUZJQ0lBTCAoZGVjbCkKLSAgICAgICYmIERFQ0xfTk9O U1RBVElDX01FTUJFUl9GVU5DVElPTl9QIChkZWNsKQorICAgICAgJiYgREVDTF9JT0JKX01FTUJF Ul9GVU5DVElPTl9QIChkZWNsKQogICAgICAgJiYgY29weV9mbl9wIChkZWNsKSkKICAgICB7CiAg ICAgICAvKiBEb24ndCB3YXJuIGlmIHRoZSBmbGFnIHdhcyBkaXNhYmxlZCBhcm91bmQgdGhlIGNs YXNzIGRlZmluaXRpb24KZGlmZiAtLWdpdCBhL2djYy9jcC9pbml0LmNjIGIvZ2NjL2NwL2luaXQu Y2MKaW5kZXggNjQ0NGYwYTg1MTguLmZiNWY0MDQ4MDViIDEwMDY0NAotLS0gYS9nY2MvY3AvaW5p dC5jYworKysgYi9nY2MvY3AvaW5pdC5jYwpAQCAtODY2LDcgKzg2Niw3IEBAIGZpbmRfdW5pbml0 X2ZpZWxkc19yICh0cmVlICp0cCwgaW50ICp3YWxrX3N1YnRyZWVzLCB2b2lkICpkYXRhKQogICBl bHNlIGlmIChjb2RlID09IENBTExfRVhQUikKICAgICB7CiAgICAgICB0cmVlIGZuID0gZ2V0X2Nh bGxlZV9mbmRlY2wgKGluaXQpOwotICAgICAgaWYgKGZuICYmIERFQ0xfTk9OU1RBVElDX01FTUJF Ul9GVU5DVElPTl9QIChmbikpCisgICAgICBpZiAoZm4gJiYgREVDTF9JT0JKX01FTUJFUl9GVU5D VElPTl9QIChmbikpCiAJewogCSAgdHJlZSBvcCA9IENBTExfRVhQUl9BUkcgKGluaXQsIDApOwog CSAgaWYgKFRSRUVfQ09ERSAob3ApID09IEFERFJfRVhQUikKQEAgLTI0NzcsNyArMjQ3Nyw3IEBA IGJ1aWxkX29mZnNldF9yZWYgKHRyZWUgdHlwZSwgdHJlZSBtZW1iZXIsIGJvb2wgYWRkcmVzc19w LAogCiAJICAgLS0gaW4gYSBtZW0taW5pdGlhbGl6ZXIgZm9yIGEgY29uc3RydWN0b3IgZm9yIHRo YXQgY2xhc3Mgb3IgZm9yCiAJICAgYSBjbGFzcyBkZXJpdmVkIGZyb20gdGhhdCBjbGFzcyAoX2Ns YXNzLmJhc2UuaW5pdF8pLiAgKi8KLSAgICAgIGlmIChERUNMX05PTlNUQVRJQ19NRU1CRVJfRlVO Q1RJT05fUCAobWVtYmVyKSkKKyAgICAgIGlmIChERUNMX09CSkVDVF9NRU1CRVJfRlVOQ1RJT05f UCAobWVtYmVyKSkKIAl7CiAJICAvKiBCdWlsZCBhIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBxdWFs aWZpZWQgbmFtZSBzdWl0YWJsZQogCSAgICAgZm9yIHVzZSBhcyB0aGUgb3BlcmFuZCB0byAiJiIg LS0gZXZlbiB0aG91Z2ggdGhlICImIiBpcwpkaWZmIC0tZ2l0IGEvZ2NjL2NwL2xhbWJkYS5jYyBi L2djYy9jcC9sYW1iZGEuY2MKaW5kZXggOGJhZjgyNTc4YzcuLmVlNDhiMjE3MGQyIDEwMDY0NAot LS0gYS9nY2MvY3AvbGFtYmRhLmNjCisrKyBiL2djYy9jcC9sYW1iZGEuY2MKQEAgLTEwMTUsNyAr MTAxNSw3IEBAIG5vbmxhbWJkYV9tZXRob2RfYmFzZXR5cGUgKHZvaWQpCiAKICAgICAgIHRyZWUg Zm4gPSBUWVBFX0NPTlRFWFQgKHR5cGUpOwogICAgICAgaWYgKCFmbiB8fCBUUkVFX0NPREUgKGZu KSAhPSBGVU5DVElPTl9ERUNMCi0JICB8fCAhREVDTF9OT05TVEFUSUNfTUVNQkVSX0ZVTkNUSU9O X1AgKGZuKSkKKwkgIHx8ICFERUNMX0lPQkpfTUVNQkVSX0ZVTkNUSU9OX1AgKGZuKSkKIAkvKiBO byBlbmNsb3Npbmcgbm9uLWxhbWJkYSBtZXRob2QuICAqLwogCXJldHVybiBOVUxMX1RSRUU7CiAg ICAgICBpZiAoIUxBTUJEQV9GVU5DVElPTl9QIChmbikpCmRpZmYgLS1naXQgYS9nY2MvY3AvbWV0 aG9kLmNjIGIvZ2NjL2NwL21ldGhvZC5jYwppbmRleCBjYTMxMDJhNTdhNS4uODMwMmFlMjM3MGQg MTAwNjQ0Ci0tLSBhL2djYy9jcC9tZXRob2QuY2MKKysrIGIvZ2NjL2NwL21ldGhvZC5jYwpAQCAt MTE4Nyw3ICsxMTg3LDcgQEAgZWFybHlfY2hlY2tfZGVmYXVsdGVkX2NvbXBhcmlzb24gKHRyZWUg Zm4pCiAJb2sgPSBmYWxzZTsKICAgICB9CiAKLSAgYm9vbCBtZW0gPSBERUNMX05PTlNUQVRJQ19N RU1CRVJfRlVOQ1RJT05fUCAoZm4pOworICBib29sIG1lbSA9IERFQ0xfSU9CSl9NRU1CRVJfRlVO Q1RJT05fUCAoZm4pOwogICBpZiAobWVtICYmIHR5cGVfbWVtZm5fcXVhbHMgKFRSRUVfVFlQRSAo Zm4pKSAhPSBUWVBFX1FVQUxfQ09OU1QpCiAgICAgewogICAgICAgZXJyb3JfYXQgKGxvYywgImRl ZmF1bHRlZCAlcUQgbXVzdCBiZSAlPGNvbnN0JT4iLCBmbik7CkBAIC0xMjMwLDcgKzEyMzAsNyBA QCBlYXJseV9jaGVja19kZWZhdWx0ZWRfY29tcGFyaXNvbiAodHJlZSBmbikKIAogICBpZiAoc2F3 X2JhZCB8fCAoc2F3X2J5dmFsICYmIHNhd19ieXJlZikpCiAgICAgewotICAgICAgaWYgKERFQ0xf Tk9OU1RBVElDX01FTUJFUl9GVU5DVElPTl9QIChmbikpCisgICAgICBpZiAoREVDTF9JT0JKX01F TUJFUl9GVU5DVElPTl9QIChmbikpCiAJZXJyb3JfYXQgKGxvYywgImRlZmF1bHRlZCBtZW1iZXIg JXFEIG11c3QgaGF2ZSBwYXJhbWV0ZXIgdHlwZSAiCiAJCSAgIiU8Y29uc3QgJVQmJT4iLCBmbiwg Y3R4KTsKICAgICAgIGVsc2UgaWYgKHNhd19iYWQpCkBAIC0zNjI3LDcgKzM2MjcsNyBAQCBudW1f YXJ0aWZpY2lhbF9wYXJtc19mb3IgKGNvbnN0X3RyZWUgZm4pCiB7CiAgIGludCBjb3VudCA9IDA7 CiAKLSAgaWYgKERFQ0xfTk9OU1RBVElDX01FTUJFUl9GVU5DVElPTl9QIChmbikpCisgIGlmIChE RUNMX0lPQkpfTUVNQkVSX0ZVTkNUSU9OX1AgKGZuKSkKICAgICBjb3VudCsrOwogICBlbHNlCiAg ICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9nY2MvY3AvcHQuY2MgYi9nY2MvY3AvcHQuY2MKaW5k ZXggNGE2NzdkNTkxMGIuLjc2YjU2NDBiZWFjIDEwMDY0NAotLS0gYS9nY2MvY3AvcHQuY2MKKysr IGIvZ2NjL2NwL3B0LmNjCkBAIC0xNDQzLDkgKzE0NDMsOSBAQCBpc19zcGVjaWFsaXphdGlvbl9v Zl9mcmllbmQgKHRyZWUgZGVjbCwgdHJlZSBmcmllbmRfZGVjbCkKIAkgICAgIGB0aGlzJyBwYXJh bWV0ZXIuICAqLwogCSAgZnJpZW5kX2FyZ3NfdHlwZSA9IFRZUEVfQVJHX1RZUEVTIChmcmllbmRf dHlwZSk7CiAJICBkZWNsX2FyZ3NfdHlwZSA9IFRZUEVfQVJHX1RZUEVTIChkZWNsX3R5cGUpOwot CSAgaWYgKERFQ0xfTk9OU1RBVElDX01FTUJFUl9GVU5DVElPTl9QIChmcmllbmRfZGVjbCkpCisJ ICBpZiAoREVDTF9JT0JKX01FTUJFUl9GVU5DVElPTl9QIChmcmllbmRfZGVjbCkpCiAJICAgIGZy aWVuZF9hcmdzX3R5cGUgPSBUUkVFX0NIQUlOIChmcmllbmRfYXJnc190eXBlKTsKLQkgIGlmIChE RUNMX05PTlNUQVRJQ19NRU1CRVJfRlVOQ1RJT05fUCAoZGVjbCkpCisJICBpZiAoREVDTF9JT0JK X01FTUJFUl9GVU5DVElPTl9QIChkZWNsKSkKIAkgICAgZGVjbF9hcmdzX3R5cGUgPSBUUkVFX0NI QUlOIChkZWNsX2FyZ3NfdHlwZSk7CiAKIAkgIHJldHVybiBjb21wcGFybXMgKGRlY2xfYXJnc190 eXBlLCBmcmllbmRfYXJnc190eXBlKTsKQEAgLTIyMjIsNyArMjIyMiw3IEBAIGRldGVybWluZV9z cGVjaWFsaXphdGlvbiAodHJlZSB0ZW1wbGF0ZV9pZCwKIAkgICAgIHRoYXQgdGhlIGNvbnN0IHF1 YWxpZmljYXRpb24gaXMgdGhlIHNhbWUuICBTaW5jZQogCSAgICAgZ2V0X2JpbmRpbmdzIGRvZXMg bm90IHRyeSB0byBtZXJnZSB0aGUgInRoaXMiIHBhcmFtZXRlciwKIAkgICAgIHdlIG11c3QgZG8g dGhlIGNvbXBhcmlzb24gZXhwbGljaXRseS4gICovCi0JICBpZiAoREVDTF9OT05TVEFUSUNfTUVN QkVSX0ZVTkNUSU9OX1AgKGZuKSkKKwkgIGlmIChERUNMX0lPQkpfTUVNQkVSX0ZVTkNUSU9OX1Ag KGZuKSkKIAkgICAgewogCSAgICAgIGlmICghc2FtZV90eXBlX3AgKFRSRUVfVkFMVUUgKGZuX2Fy Z190eXBlcyksCiAJCQkJVFJFRV9WQUxVRSAoZGVjbF9hcmdfdHlwZXMpKSkKQEAgLTIzNDUsMTQg KzIzNDUsMTQgQEAgZGV0ZXJtaW5lX3NwZWNpYWxpemF0aW9uICh0cmVlIHRlbXBsYXRlX2lkLAog CSAgLyogQWRqdXN0IHRoZSB0eXBlIG9mIERFQ0wgaW4gY2FzZSBGTiBpcyBhIHN0YXRpYyBtZW1i ZXIuICAqLwogCSAgZGVjbF9hcmdfdHlwZXMgPSBUWVBFX0FSR19UWVBFUyAoVFJFRV9UWVBFIChk ZWNsKSk7CiAJICBpZiAoREVDTF9TVEFUSUNfRlVOQ1RJT05fUCAoZm4pCi0JICAgICAgJiYgREVD TF9OT05TVEFUSUNfTUVNQkVSX0ZVTkNUSU9OX1AgKGRlY2wpKQorCSAgICAgICYmIERFQ0xfSU9C Sl9NRU1CRVJfRlVOQ1RJT05fUCAoZGVjbCkpCiAJICAgIGRlY2xfYXJnX3R5cGVzID0gVFJFRV9D SEFJTiAoZGVjbF9hcmdfdHlwZXMpOwogCiAJICBpZiAoIWNvbXBwYXJtcyAoVFlQRV9BUkdfVFlQ RVMgKFRSRUVfVFlQRSAoZm4pKSwKIAkJCSBkZWNsX2FyZ190eXBlcykpCiAgICAgICAgICAgICBj b250aW51ZTsKIAotCSAgaWYgKERFQ0xfTk9OU1RBVElDX01FTUJFUl9GVU5DVElPTl9QIChmbikK KwkgIGlmIChERUNMX0lPQkpfTUVNQkVSX0ZVTkNUSU9OX1AgKGZuKQogCSAgICAgICYmICh0eXBl X21lbWZuX3JxdWFsIChUUkVFX1RZUEUgKGRlY2wpKQogCQkgICE9IHR5cGVfbWVtZm5fcnF1YWwg KFRSRUVfVFlQRSAoZm4pKSkpCiAJICAgIGNvbnRpbnVlOwpAQCAtMjUzOCw3ICsyNTM4LDcgQEAg Y29weV9kZWZhdWx0X2FyZ3NfdG9fZXhwbGljaXRfc3BlYyAodHJlZSBkZWNsKQogICBvbGRfdHlw ZSA9IFRSRUVfVFlQRSAoZGVjbCk7CiAgIHNwZWNfdHlwZXMgPSBUWVBFX0FSR19UWVBFUyAob2xk X3R5cGUpOwogCi0gIGlmIChERUNMX05PTlNUQVRJQ19NRU1CRVJfRlVOQ1RJT05fUCAoZGVjbCkp CisgIGlmIChERUNMX0lPQkpfTUVNQkVSX0ZVTkNUSU9OX1AgKGRlY2wpKQogICAgIHsKICAgICAg IC8qIFJlbW92ZSB0aGUgdGhpcyBwb2ludGVyLCBidXQgcmVtZW1iZXIgdGhlIG9iamVjdCdzIHR5 cGUgZm9yCiAJIENWIHF1YWxzLiAgKi8KQEAgLTMxMjMsNyArMzEyMyw3IEBAIGNoZWNrX2V4cGxp Y2l0X3NwZWNpYWxpemF0aW9uICh0cmVlIGRlY2xhcmF0b3IsCiAJICAgICBtYWtlIERFQ0wgYSBz dGF0aWMgbWVtYmVyIGZ1bmN0aW9uIGFzIHdlbGwuICAqLwogCSAgaWYgKERFQ0xfRlVOQ1RJT05f VEVNUExBVEVfUCAodG1wbCkKIAkgICAgICAmJiBERUNMX1NUQVRJQ19GVU5DVElPTl9QICh0bXBs KQotCSAgICAgICYmIERFQ0xfTk9OU1RBVElDX01FTUJFUl9GVU5DVElPTl9QIChkZWNsKSkKKwkg ICAgICAmJiBERUNMX0lPQkpfTUVNQkVSX0ZVTkNUSU9OX1AgKGRlY2wpKQogCSAgICByZXZlcnRf c3RhdGljX21lbWJlcl9mbiAoZGVjbCk7CiAKIAkgIC8qIElmIHRoaXMgaXMgYSBzcGVjaWFsaXph dGlvbiBvZiBhIG1lbWJlciB0ZW1wbGF0ZSBvZiBhCkBAIC0xMTc0Myw3ICsxMTc0Myw3IEBAIHRz dWJzdF9jb250cmFjdF9hdHRyaWJ1dGUgKHRyZWUgZGVjbCwgdHJlZSB0LCB0cmVlIGFyZ3MsCiAg IC8qIEZvciBtZW1iZXIgZnVuY3Rpb25zLCBtYWtlIHRoaXMgYXZhaWxhYmxlIGZvciBzZW1hbnRp YyBhbmFseXNpcy4gICovCiAgIHRyZWUgc2F2ZV9jY3AgPSBjdXJyZW50X2NsYXNzX3B0cjsKICAg dHJlZSBzYXZlX2NjciA9IGN1cnJlbnRfY2xhc3NfcmVmOwotICBpZiAoREVDTF9OT05TVEFUSUNf TUVNQkVSX0ZVTkNUSU9OX1AgKGRlY2wpKQorICBpZiAoREVDTF9JT0JKX01FTUJFUl9GVU5DVElP Tl9QIChkZWNsKSkKICAgICB7CiAgICAgICB0cmVlIGFyZ190eXBlcyA9IFRZUEVfQVJHX1RZUEVT IChUUkVFX1RZUEUgKGRlY2wpKTsKICAgICAgIHRyZWUgdGhpc190eXBlID0gVFJFRV9UWVBFIChU UkVFX1ZBTFVFIChhcmdfdHlwZXMpKTsKQEAgLTIyMDU0LDcgKzIyMDU0LDcgQEAgY2hlY2tfbm9u X2RlZHVjaWJsZV9jb252ZXJzaW9ucyAodHJlZSBwYXJtcywgY29uc3QgdHJlZSAqYXJncywgdW5z aWduZWQgbmFyZ3MsCiB7CiAgIC8qIE5vbi1jb25zdHJ1Y3RvciBtZXRob2RzIG5lZWQgdG8gbGVh dmUgYSBjb252ZXJzaW9uIGZvciAndGhpcycsIHdoaWNoCiAgICAgIGlzbid0IGluY2x1ZGVkIGlu IG5hcmdzIGhlcmUuICAqLwotICB1bnNpZ25lZCBvZmZzZXQgPSAoREVDTF9OT05TVEFUSUNfTUVN QkVSX0ZVTkNUSU9OX1AgKGZuKQorICB1bnNpZ25lZCBvZmZzZXQgPSAoREVDTF9JT0JKX01FTUJF Ul9GVU5DVElPTl9QIChmbikKIAkJICAgICAmJiAhREVDTF9DT05TVFJVQ1RPUl9QIChmbikpOwog CiAgIGZvciAodW5zaWduZWQgaWEgPSAwOwpAQCAtMjY2MzMsNyArMjY2MzMsNyBAQCBtYXliZV9p bnN0YW50aWF0ZV9ub2V4Y2VwdCAodHJlZSBmbiwgdHN1YnN0X2ZsYWdzX3QgY29tcGxhaW4pCiAJ ICBwdXNoX2RlZmVycmluZ19hY2Nlc3NfY2hlY2tzIChka19ub19kZWZlcnJlZCk7CiAJICBpbnB1 dF9sb2NhdGlvbiA9IERFQ0xfU09VUkNFX0xPQ0FUSU9OIChmbik7CiAKLQkgIGlmIChERUNMX05P TlNUQVRJQ19NRU1CRVJfRlVOQ1RJT05fUCAoZm4pCisJICBpZiAoREVDTF9JT0JKX01FTUJFUl9G VU5DVElPTl9QIChmbikKIAkgICAgICAmJiAhREVDTF9MT0NBTF9ERUNMX1AgKGZuKSkKIAkgICAg ewogCSAgICAgIC8qIElmIG5lZWRlZCwgc2V0IGN1cnJlbnRfY2xhc3NfcHRyIGZvciB0aGUgYmVu ZWZpdCBvZgpAQCAtMjY2OTYsNyArMjY2OTYsNyBAQCByZWdpc3Rlcl9wYXJhbWV0ZXJfc3BlY2lh bGl6YXRpb25zICh0cmVlIHBhdHRlcm4sIHRyZWUgaW5zdCkKIHsKICAgdHJlZSB0bXBsX3Bhcm0g PSBERUNMX0FSR1VNRU5UUyAocGF0dGVybik7CiAgIHRyZWUgc3BlY19wYXJtID0gREVDTF9BUkdV TUVOVFMgKGluc3QpOwotICBpZiAoREVDTF9OT05TVEFUSUNfTUVNQkVSX0ZVTkNUSU9OX1AgKGlu c3QpKQorICBpZiAoREVDTF9JT0JKX01FTUJFUl9GVU5DVElPTl9QIChpbnN0KSkKICAgICB7CiAg ICAgICByZWdpc3Rlcl9sb2NhbF9zcGVjaWFsaXphdGlvbiAoc3BlY19wYXJtLCB0bXBsX3Bhcm0p OwogICAgICAgc3BlY19wYXJtID0gc2tpcF9hcnRpZmljaWFsX3Bhcm1zX2ZvciAoaW5zdCwgc3Bl Y19wYXJtKTsKQEAgLTI4MDQzLDcgKzI4MDQzLDcgQEAgdmFsdWVfZGVwZW5kZW50X2V4cHJlc3Np b25fcCAodHJlZSBleHByZXNzaW9uKQogCSAgICAgICBjYXVzZSB0aGUgY2FsbCB0byBiZSBjb25z aWRlcmVkIHZhbHVlLWRlcGVuZGVudC4gIFdlIGFsc28KIAkgICAgICAgbG9vayB0aHJvdWdoIGl0 IGluIHBvdGVudGlhbF9jb25zdGFudF9leHByZXNzaW9uLiAgKi8KIAkgICAgaWYgKGkgPT0gMCAm JiBmbiAmJiBERUNMX0RFQ0xBUkVEX0NPTlNURVhQUl9QIChmbikKLQkJJiYgREVDTF9OT05TVEFU SUNfTUVNQkVSX0ZVTkNUSU9OX1AgKGZuKQorCQkmJiBERUNMX0lPQkpfTUVNQkVSX0ZVTkNUSU9O X1AgKGZuKQogCQkmJiBUUkVFX0NPREUgKG9wKSA9PSBBRERSX0VYUFIpCiAJICAgICAgb3AgPSBU UkVFX09QRVJBTkQgKG9wLCAwKTsKIAkgICAgaWYgKHZhbHVlX2RlcGVuZGVudF9leHByZXNzaW9u X3AgKG9wKSkKZGlmZiAtLWdpdCBhL2djYy9jcC9zZWFyY2guY2MgYi9nY2MvY3Avc2VhcmNoLmNj CmluZGV4IGVmZWE1MDc4OTkyLi5hMjIyMDJmZTZmMyAxMDA2NDQKLS0tIGEvZ2NjL2NwL3NlYXJj aC5jYworKysgYi9nY2MvY3Avc2VhcmNoLmNjCkBAIC0xMDEwLDcgKzEwMTAsNyBAQCBzaGFyZWRf bWVtYmVyX3AgKHRyZWUgdCkKIAkgICAgLyogQ29uc2VydmF0aXZlbHkgYXNzdW1lIGEgZGVwZW5k ZW50IHVzaW5nLWRlY2xhcmF0aW9uCiAJICAgICAgIG1pZ2h0IHJlc29sdmUgdG8gYSBub24tc3Rh dGljIG1lbWJlci4gICovCiAJICAgIHJldHVybiBmYWxzZTsKLQkgIGlmIChERUNMX05PTlNUQVRJ Q19NRU1CRVJfRlVOQ1RJT05fUCAoZGVjbCkpCisJICBpZiAoREVDTF9PQkpFQ1RfTUVNQkVSX0ZV TkNUSU9OX1AgKGRlY2wpKQogCSAgICByZXR1cm4gZmFsc2U7CiAJfQogICAgICAgcmV0dXJuIHRy dWU7CkBAIC0xMjY2LDcgKzEyNjYsNyBAQCBsb29rdXBfbWVtYmVyICh0cmVlIHhiYXNldHlwZSwg dHJlZSBuYW1lLCBpbnQgcHJvdGVjdCwgYm9vbCB3YW50X3R5cGUsCiAgICAgICBkZWNsID0gc3Ry aXBfdXNpbmdfZGVjbCAoZGVjbCk7CiAgICAgICAvKiBBIGRlcGVuZGVudCBVU0lOR19ERUNMIHdp bGwgYmUgY2hlY2tlZCBhZnRlciB0c3Vic3RpbmcuICAqLwogICAgICAgaWYgKFRSRUVfQ09ERSAo ZGVjbCkgIT0gVVNJTkdfREVDTAotCSAgJiYgIURFQ0xfTk9OU1RBVElDX01FTUJFUl9GVU5DVElP Tl9QIChkZWNsKQorCSAgJiYgIURFQ0xfSU9CSl9NRU1CRVJfRlVOQ1RJT05fUCAoZGVjbCkKIAkg ICYmICFwZXJmb3JtX29yX2RlZmVyX2FjY2Vzc19jaGVjayAoYmFzZXR5cGVfcGF0aCwgZGVjbCwg ZGVjbCwKIAkJCQkJICAgICBjb21wbGFpbiwgYWZpKSkKIAlyZXR1cm4gZXJyb3JfbWFya19ub2Rl OwpAQCAtMTczOSw2ICsxNzM5LDcgQEAgZmllbGRfYWNjZXNzX3AgKHRyZWUgY29tcG9uZW50X3Jl ZiwgdHJlZSBmaWVsZF9kZWNsLCB0cmVlIGZpZWxkX3R5cGUpCiAgICAgcmV0dXJuIGZhbHNlOwog CiAgIHRyZWUgcHRyID0gU1RSSVBfTk9QUyAoVFJFRV9PUEVSQU5EIChpbmRpcmVjdF9yZWYsIDAp KTsKKyAgLyogPz8/IGlzX29iamVjdF9wYXJhbWV0ZXI/ICAqLwogICBpZiAoIWlzX3RoaXNfcGFy YW1ldGVyIChwdHIpKQogICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvZ2NjL2NwL3Nl bWFudGljcy5jYyBiL2djYy9jcC9zZW1hbnRpY3MuY2MKaW5kZXggYzQ3ZjU3ZTg4OWQuLjIxODMx NzkyZWM1IDEwMDY0NAotLS0gYS9nY2MvY3Avc2VtYW50aWNzLmNjCisrKyBiL2djYy9jcC9zZW1h bnRpY3MuY2MKQEAgLTY3MDQsNyArNjcwNCw3IEBAIGZpbmlzaF9vbXBfZGVjbGFyZV9zaW1kX21l dGhvZHMgKHRyZWUgdCkKICAgZm9yICh0cmVlIHggPSBUWVBFX0ZJRUxEUyAodCk7IHg7IHggPSBE RUNMX0NIQUlOICh4KSkKICAgICB7CiAgICAgICBpZiAoVFJFRV9DT0RFICh4KSA9PSBVU0lOR19E RUNMCi0JICB8fCAhREVDTF9OT05TVEFUSUNfTUVNQkVSX0ZVTkNUSU9OX1AgKHgpKQorCSAgfHwg IURFQ0xfSU9CSl9NRU1CRVJfRlVOQ1RJT05fUCAoeCkpCiAJY29udGludWU7CiAgICAgICB0cmVl IG9kcyA9IGxvb2t1cF9hdHRyaWJ1dGUgKCJvbXAgZGVjbGFyZSBzaW1kIiwgREVDTF9BVFRSSUJV VEVTICh4KSk7CiAgICAgICBpZiAoIW9kcyB8fCAhVFJFRV9WQUxVRSAob2RzKSkKZGlmZiAtLWdp dCBhL2djYy9jcC90cmVlLmNjIGIvZ2NjL2NwL3RyZWUuY2MKaW5kZXggNzliNmZhMDVjMDYuLjQ2 MzVjYmJiYTViIDEwMDY0NAotLS0gYS9nY2MvY3AvdHJlZS5jYworKysgYi9nY2MvY3AvdHJlZS5j YwpAQCAtMjk4LDcgKzI5OCw3IEBAIGx2YWx1ZV9raW5kIChjb25zdF90cmVlIHJlZikKICAgICBj YXNlIEZVTkNUSU9OX0RFQ0w6CiAgICAgICAvKiBBbGwgZnVuY3Rpb25zIChleGNlcHQgbm9uLXN0 YXRpYy1tZW1iZXIgZnVuY3Rpb25zKSBhcmUKIAkgbHZhbHVlcy4gICovCi0gICAgICByZXR1cm4g KERFQ0xfTk9OU1RBVElDX01FTUJFUl9GVU5DVElPTl9QIChyZWYpCisgICAgICByZXR1cm4gKERF Q0xfSU9CSl9NRU1CRVJfRlVOQ1RJT05fUCAocmVmKQogCSAgICAgID8gY2xrX25vbmUgOiBjbGtf b3JkaW5hcnkpOwogCiAgICAgY2FzZSBCQVNFTElOSzoKZGlmZiAtLWdpdCBhL2xpYmNjMS9saWJj cDFwbHVnaW4uY2MgYi9saWJjYzEvbGliY3AxcGx1Z2luLmNjCmluZGV4IDNjOGU5ZThiNDM2Li4x MDhkNTc4NjE2NyAxMDA2NDQKLS0tIGEvbGliY2MxL2xpYmNwMXBsdWdpbi5jYworKysgYi9saWJj YzEvbGliY3AxcGx1Z2luLmNjCkBAIC00NjgsNyArNDY4LDcgQEAgcGx1Z2luX3ByYWdtYV9wdXNo X3VzZXJfZXhwcmVzc2lvbiAoY3BwX3JlYWRlciAqKQogCX0KICAgICB9CiAKLSAgaWYgKHVuY2hh bmdlZF9jZnVuIHx8IERFQ0xfTk9OU1RBVElDX01FTUJFUl9GVU5DVElPTl9QIChjaGFuZ2VkX2Z1 bmNfZGVjbCkpCisgIGlmICh1bmNoYW5nZWRfY2Z1biB8fCBERUNMX09CSkVDVF9NRU1CRVJfRlVO Q1RJT05fUCAoY2hhbmdlZF9mdW5jX2RlY2wpKQogICAgIHsKICAgICAgIC8qIENoZWNrIHdoZXRo ZXIgdGhlIG9yYWNsZSBzdXBwbGllcyB1cyB3aXRoIGEgInRoaXMiLCBhbmQgaWYKIAkgc28sIGFy cmFuZ2UgZm9yIGRhdGEgbWVtYmVycyBhbmQgdGhpcyBpdHNlbGYgdG8gYmUKLS0gCjIuMzkuMwoK --------------YNHzUWrn3PMK0kZS0TtiVwLJ--