From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.220.28]) by sourceware.org (Postfix) with ESMTPS id 9DF083858D3C for ; Thu, 5 May 2022 14:29:50 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 9DF083858D3C Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=suse.cz Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=suse.cz Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by smtp-out1.suse.de (Postfix) with ESMTPS id 70CEF21979; Thu, 5 May 2022 14:29:49 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_rsa; t=1651760989; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=lq4mVMVIBrV9ZwbI5M9RMsaUfIEADFjAXESxzJR2NKM=; b=qCMYAcPBSLRS7VoWpz2D/P7QErZkgZuPLoXtHDXr16xfZ6rCmzWhxWpMy2swC62Bju0Imr 0vpUW9GyiXip2L5WB0POE3odUpvEJrbTNaooSpP8lQgTOxbvJLa4m9FpJFas3HKScgZlGy lJ+6MyfOTsuxuDqoX4mJGl1FyGqG7SY= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_ed25519; t=1651760989; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=lq4mVMVIBrV9ZwbI5M9RMsaUfIEADFjAXESxzJR2NKM=; b=v9+mcMhR3S527QDN7ypVcKI5eJLTJxn95OSGytOXWTcV7r6tf8KgZm8sksYqa+cgtJr6et XrgD33HExRZEX4BA== Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by imap2.suse-dmz.suse.de (Postfix) with ESMTPS id 50A1713A65; Thu, 5 May 2022 14:29:49 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id ZVcwEl3fc2JnOAAAMHmgww (envelope-from ); Thu, 05 May 2022 14:29:49 +0000 Content-Type: multipart/mixed; boundary="------------2c2rYx0iHyjuJz0IUEF6Lqd6" Message-ID: <934763f4-4d77-dd93-5d6e-1107380c5b06@suse.cz> Date: Thu, 5 May 2022 16:29:48 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.8.1 From: =?UTF-8?Q?Martin_Li=c5=a1ka?= Subject: Re: [PATCH] Use more ARRAY_SIZE. To: Iain Buclaw , gcc-patches@gcc.gnu.org References: <1651754853.85hnr42bjs.astroid@pulse.none> Content-Language: en-US In-Reply-To: <1651754853.85hnr42bjs.astroid@pulse.none> X-Spam-Status: No, score=-13.1 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, NICE_REPLY_A, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 05 May 2022 14:30:01 -0000 This is a multi-part message in MIME format. --------------2c2rYx0iHyjuJz0IUEF6Lqd6 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit On 5/5/22 14:58, Iain Buclaw wrote: > This D front-end change doesn't look right to me, besides the slight Hello. Sorry, I've re-read the patch and fixed some places where the macro usage was wrong. Patch can bootstrap on x86_64-linux-gnu and survives regression tests. Martin --------------2c2rYx0iHyjuJz0IUEF6Lqd6 Content-Type: text/x-patch; charset=UTF-8; name="0001-Use-more-ARRAY_SIZE-v2.patch" Content-Disposition: attachment; filename="0001-Use-more-ARRAY_SIZE-v2.patch" Content-Transfer-Encoding: base64 RnJvbSA4ZDk2MzBlNDExMzIxYzg1ODRkZDgzZmY2NGVjNmZlZmFkNDg4MTNlIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJ0aW4gTGlza2EgPG1saXNrYUBzdXNlLmN6PgpE YXRlOiBUaHUsIDEzIEphbiAyMDIyIDE4OjQ2OjI2ICswMTAwClN1YmplY3Q6IFtQQVRDSF0g VXNlIG1vcmUgQVJSQVlfU0laRS4KCmdjYy9hZGEvQ2hhbmdlTG9nOgoKCSogbG9jYWxlcy5j IChpc29fNjM5XzFfdG9fNjM5XzMpOiBVc2UgQVJSQVlfU0laRS4KCShsYW5ndWFnZV9uYW1l X3RvXzYzOV8zKTogTGlrZXdpc2UuCgkoY291bnRyeV9uYW1lX3RvXzMxNjYpOiBMaWtld2lz ZS4KCmdjYy9hbmFseXplci9DaGFuZ2VMb2c6CgoJKiBlbmdpbmUuY2MgKGV4cGxvZGVkX25v ZGU6OmdldF9kb3RfZmlsbGNvbG9yKTogVXNlIEFSUkFZX1NJWkUuCgkqIGZ1bmN0aW9uLXNl dC5jYyAodGVzdF9zdGRpb19leGFtcGxlKTogTGlrZXdpc2UuCgkqIHNtLWZpbGUuY2MgKGdl dF9maWxlX3VzaW5nX2Zucyk6IExpa2V3aXNlLgoJKiBzbS1tYWxsb2MuY2MgKG1hbGxvY19z dGF0ZV9tYWNoaW5lOjp1bmFmZmVjdGVkX2J5X2NhbGxfcCk6IExpa2V3aXNlLgoJKiBzbS1z aWduYWwuY2MgKGdldF9hc3luY19zaWduYWxfdW5zYWZlX2Zucyk6IExpa2V3aXNlLgoKZ2Nj L0NoYW5nZUxvZzoKCgkqIGF0dHJpYnMuY2MgKGRpYWdfYXR0cl9leGNsdXNpb25zKTogVXNl IEFSUkFZX1NJWkUuCgkoZGVjbHNfbWlzbWF0Y2hlZF9hdHRyaWJ1dGVzKTogTGlrZXdpc2Uu CgkqIGJ1aWx0aW5zLmNjIChjX3N0cmxlbik6IExpa2V3aXNlLgoJKiBjZmcuY2MgKERFRl9C QVNJQ19CTE9DS19GTEFHKTogTGlrZXdpc2UuCgkqIGNvbW1vbi9jb25maWcvYWFyY2g2NC9h YXJjaDY0LWNvbW1vbi5jYyAoYWFyY2g2NF9vcHRpb25faW5pdF9zdHJ1Y3QpOiBMaWtld2lz ZS4KCSogY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1idWlsdGlucy5jYyAoYWFyY2g2NF9sb29r dXBfc2ltZF9idWlsdGluX3R5cGUpOiBMaWtld2lzZS4KCShhYXJjaDY0X2luaXRfc2ltZF9i dWlsdGluX3R5cGVzKTogTGlrZXdpc2UuCgkoYWFyY2g2NF9pbml0X2J1aWx0aW5fcnNxcnQp OiBMaWtld2lzZS4KCSogY29uZmlnL2FhcmNoNjQvYWFyY2g2NC5jYyAoaXNfbWFkZF9vcCk6 IExpa2V3aXNlLgoJKiBjb25maWcvYXJtL2FybS1idWlsdGlucy5jYyAoYXJtX2xvb2t1cF9z aW1kX2J1aWx0aW5fdHlwZSk6IExpa2V3aXNlLgoJKGFybV9pbml0X3NpbWRfYnVpbHRpbl90 eXBlcyk6IExpa2V3aXNlLgoJKiBjb25maWcvYXZyL2dlbi1hdnItbW1jdS10ZXhpLmNjICht Y3VzW0FSUkFZX1NJWkUpOiBMaWtld2lzZS4KCShjX3ByZWZpeCk6IExpa2V3aXNlLgoJKG1h aW4pOiBMaWtld2lzZS4KCSogY29uZmlnL2M2eC9jNnguY2MgKE5fU0FWRV9PUkRFUik6IExp a2V3aXNlLgoJKiBjb25maWcvZGFyd2luLWMuY2MgKGRhcndpbl9yZWdpc3Rlcl9mcmFtZXdv cmtzKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9nY24vbWtvZmZsb2FkLmNjIChwcm9jZXNzX29i aik6IExpa2V3aXNlLgoJKiBjb25maWcvaTM4Ni9pMzg2LWJ1aWx0aW5zLmNjIChnZXRfYnVp bHRpbl9jb2RlX2Zvcl92ZXJzaW9uKTogTGlrZXdpc2UuCgkoZm9sZF9idWlsdGluX2NwdSk6 IExpa2V3aXNlLgoJKiBjb25maWcvbTMyYy9tMzJjLmNjIChQVVNITV9OKTogTGlrZXdpc2Uu CgkqIGNvbmZpZy9udnB0eC9ta29mZmxvYWQuY2MgKHByb2Nlc3MpOiBMaWtld2lzZS4KCSog Y29uZmlnL3JzNjAwMC9kcml2ZXItcnM2MDAwLmNjIChob3N0X2RldGVjdF9sb2NhbF9jcHUp OiBMaWtld2lzZS4KCSogY29uZmlnL3MzOTAvczM5MC5jYyAoTlJfQ19NT0RFUyk6IExpa2V3 aXNlLgoJKiBjb25maWcvdGlsZXByby9nZW4tbXVsLXRhYmxlcy5jYyAoZmluZF9zZXF1ZW5j ZXMpOiBMaWtld2lzZS4KCShjcmVhdGVfaW5zbl9jb2RlX2NvbXByZXNzaW9uX3RhYmxlKTog TGlrZXdpc2UuCgkqIGNvbmZpZy92bXMvdm1zLmNjIChOQlJfQ1JUTF9OQU1FUyk6IExpa2V3 aXNlLgoJKiBkaWFnbm9zdGljLWZvcm1hdC1qc29uLmNjIChqc29uX2Zyb21fZXhwYW5kZWRf bG9jYXRpb24pOiBMaWtld2lzZS4KCSogZHdhcmYyb3V0LmNjIChBUlJBWV9TSVpFKTogTGlr ZXdpc2UuCgkqIGdlbmhvb2tzLmNjIChlbWl0X2RvY3VtZW50YXRpb24pOiBMaWtld2lzZS4K CShlbWl0X2luaXRfbWFjcm9zKTogTGlrZXdpc2UuCgkqIGdpbXBsZS1zc2Etc3ByaW50Zi5j YyAoZm9ybWF0X2Zsb2F0aW5nKTogTGlrZXdpc2UuCgkqIGdpbXBsZS1zc2Etd2Fybi1hY2Nl c3MuY2MgKG1lbW1vZGVsX25hbWUpOiBMaWtld2lzZS4KCSogZ29kdW1wLmNjIChrZXl3b3Jk X2hhc2hfaW5pdCk6IExpa2V3aXNlLgoJKiBoYXNoLXRhYmxlLmNjIChoYXNoX3RhYmxlX2hp Z2hlcl9wcmltZV9pbmRleCk6IExpa2V3aXNlLgoJKiBpbnB1dC5jYyAoZm9yX2VhY2hfbGlu ZV90YWJsZV9jYXNlKTogTGlrZXdpc2UuCgkqIGlwYS1mcmVlLWxhbmctZGF0YS5jYyAoZnJl ZV9sYW5nX2RhdGEpOiBMaWtld2lzZS4KCSogaXBhLWlubGluZS5jYyAoc2FuaXRpemVfYXR0 cnNfbWF0Y2hfZm9yX2lubGluZV9wKTogTGlrZXdpc2UuCgkqIG9wdGMtc2F2ZS1nZW4uYXdr OiBMaWtld2lzZS4KCSogc3BlbGxjaGVjay5jYyAodGVzdF9tZXRyaWNfY29uZGl0aW9ucyk6 IExpa2V3aXNlLgoJKiB0cmVlLXZlY3Qtc2xwLXBhdHRlcm5zLmNjIChzaXplb2YpOiBMaWtl d2lzZS4KCShBUlJBWV9TSVpFKTogTGlrZXdpc2UuCgkqIHRyZWUuY2MgKGJ1aWxkX2NvbW1v bl90cmVlX25vZGVzKTogTGlrZXdpc2UuCgpnY2MvYy1mYW1pbHkvQ2hhbmdlTG9nOgoKCSog Yy1jb21tb24uY2MgKEFSUkFZX1NJWkUpOiBVc2UgQVJSQVlfU0laRS4KCShjX2NvbW1vbl9u b2Rlc19hbmRfYnVpbHRpbnMpOiBMaWtld2lzZS4KCSogYy1mb3JtYXQuY2MgKGNoZWNrX3Rv a2Vucyk6IExpa2V3aXNlLgoJKGNoZWNrX3BsYWluKTogTGlrZXdpc2UuCgkqIGMtcHJhZ21h LmNjIChjX3BwX2xvb2t1cF9wcmFnbWEpOiBMaWtld2lzZS4KCShpbml0X3ByYWdtYSk6IExp a2V3aXNlLgoJKiBrbm93bi1oZWFkZXJzLmNjIChnZXRfc3RyaW5nX21hY3JvX2hpbnQpOiBM aWtld2lzZS4KCShnZXRfc3RkbGliX2hlYWRlcl9mb3JfbmFtZSk6IExpa2V3aXNlLgoJKiBj LWF0dHJpYnMuY2M6IExpa2V3aXNlLgoKZ2NjL2MvQ2hhbmdlTG9nOgoKCSogYy1kZWNsLmNj IChtYXRjaF9idWlsdGluX2Z1bmN0aW9uX3R5cGVzKTogVXNlIEFSUkFZX1NJWkUuCgpnY2Mv Y3AvQ2hhbmdlTG9nOgoKCSogbW9kdWxlLmNjIChkZXBzZXQ6OmVudGl0eV9raW5kX25hbWUp OiBVc2UgQVJSQVlfU0laRS4KCSogbmFtZS1sb29rdXAuY2MgKGdldF9zdGRfbmFtZV9oaW50 KTogTGlrZXdpc2UuCgkqIHBhcnNlci5jYyAoY3BfcGFyc2VyX25ldyk6IExpa2V3aXNlLgoK Z2NjL2ZvcnRyYW4vQ2hhbmdlTG9nOgoKCSogZnJvbnRlbmQtcGFzc2VzLmNjIChnZmNfY29k ZV93YWxrZXIpOiBVc2UgQVJSQVlfU0laRS4KCSogb3Blbm1wLmNjIChnZmNfbWF0Y2hfb21w X2NvbnRleHRfc2VsZWN0b3Jfc3BlY2lmaWNhdGlvbik6IExpa2V3aXNlLgoJKiB0cmFucy1p bnRyaW5zaWMuY2MgKGNvbnZfaW50cmluc2ljX2llZWVfYnVpbHRpbik6IExpa2V3aXNlLgoJ KiB0cmFucy10eXBlcy5jYyAoZ2ZjX2dldF9hcnJheV9kZXNjcl9pbmZvKTogTGlrZXdpc2Uu CgpnY2Mvaml0L0NoYW5nZUxvZzoKCgkqIGppdC1idWlsdGlucy5jYyAoZmluZF9idWlsdGlu X2J5X25hbWUpOiBVc2UgQVJSQVlfU0laRS4KCShnZXRfc3RyaW5nX2Zvcl90eXBlX2lkKTog TGlrZXdpc2UuCgkqIGppdC1yZWNvcmRpbmcuY2MgKHJlY29yZGluZzo6Y29udGV4dDo6Y29u dGV4dCk6IExpa2V3aXNlLgoKZ2NjL2x0by9DaGFuZ2VMb2c6CgoJKiBsdG8tY29tbW9uLmNj IChsdG9fcmVzb2x1dGlvbl9yZWFkKTogVXNlIEFSUkFZX1NJWkUuCgkqIGx0by1sYW5nLmNj IChsdG9faW5pdCk6IExpa2V3aXNlLgotLS0KIGdjYy9hZGEvbG9jYWxlcy5jICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCAgNiArKystLS0KIGdjYy9hbmFseXplci9lbmdpbmUuY2Mg ICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQogZ2NjL2FuYWx5emVyL2Z1bmN0aW9uLXNl dC5jYyAgICAgICAgICAgICAgICB8ICAyICstCiBnY2MvYW5hbHl6ZXIvc20tZmlsZS5jYyAg ICAgICAgICAgICAgICAgICAgIHwgIDMgKy0tCiBnY2MvYW5hbHl6ZXIvc20tbWFsbG9jLmNj ICAgICAgICAgICAgICAgICAgIHwgIDMgKy0tCiBnY2MvYW5hbHl6ZXIvc20tc2lnbmFsLmNj ICAgICAgICAgICAgICAgICAgIHwgIDMgKy0tCiBnY2MvYXR0cmlicy5jYyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgIDQgKystLQogZ2NjL2J1aWx0aW5zLmNjICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8ICAyICstCiBnY2MvYy1mYW1pbHkvYy1hdHRyaWJzLmNj ICAgICAgICAgICAgICAgICAgIHwgIDMgKy0tCiBnY2MvYy1mYW1pbHkvYy1jb21tb24uY2Mg ICAgICAgICAgICAgICAgICAgIHwgIDcgKystLS0tLQogZ2NjL2MtZmFtaWx5L2MtZm9ybWF0 LmNjICAgICAgICAgICAgICAgICAgICB8IDEyICsrKysrKy0tLS0tLQogZ2NjL2MtZmFtaWx5 L2MtcHJhZ21hLmNjICAgICAgICAgICAgICAgICAgICB8ICA5ICsrKystLS0tLQogZ2NjL2Mt ZmFtaWx5L2tub3duLWhlYWRlcnMuY2MgICAgICAgICAgICAgICB8ICA1ICsrLS0tCiBnY2Mv Yy9jLWRlY2wuY2MgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDggKysrLS0tLS0K IGdjYy9jZmcuY2MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQog Z2NjL2NvbW1vbi9jb25maWcvYWFyY2g2NC9hYXJjaDY0LWNvbW1vbi5jYyB8ICAzICstLQog Z2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtYnVpbHRpbnMuY2MgICAgICB8ICA2ICsrKy0t LQogZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQuY2MgICAgICAgICAgICAgICB8ICAyICst CiBnY2MvY29uZmlnL2FybS9hcm0tYnVpbHRpbnMuY2MgICAgICAgICAgICAgIHwgIDQgKyst LQogZ2NjL2NvbmZpZy9hdnIvZ2VuLWF2ci1tbWN1LXRleGkuY2MgICAgICAgICB8ICA4ICsr KysrLS0tCiBnY2MvY29uZmlnL2M2eC9jNnguY2MgICAgICAgICAgICAgICAgICAgICAgIHwg IDIgKy0KIGdjYy9jb25maWcvZGFyd2luLWMuY2MgICAgICAgICAgICAgICAgICAgICAgfCAg MiArLQogZ2NjL2NvbmZpZy9nY24vbWtvZmZsb2FkLmNjICAgICAgICAgICAgICAgICB8ICAy ICstCiBnY2MvY29uZmlnL2kzODYvaTM4Ni1idWlsdGlucy5jYyAgICAgICAgICAgIHwgIDYg KystLS0tCiBnY2MvY29uZmlnL20zMmMvbTMyYy5jYyAgICAgICAgICAgICAgICAgICAgIHwg IDIgKy0KIGdjYy9jb25maWcvbnZwdHgvbWtvZmZsb2FkLmNjICAgICAgICAgICAgICAgfCAg NiArKystLS0KIGdjYy9jb25maWcvcnM2MDAwL2RyaXZlci1yczYwMDAuY2MgICAgICAgICAg fCAgMiArLQogZ2NjL2NvbmZpZy9zMzkwL3MzOTAuY2MgICAgICAgICAgICAgICAgICAgICB8 ICAyICstCiBnY2MvY29uZmlnL3RpbGVwcm8vZ2VuLW11bC10YWJsZXMuY2MgICAgICAgIHwg IDQgKystLQogZ2NjL2NvbmZpZy92bXMvdm1zLmNjICAgICAgICAgICAgICAgICAgICAgICB8 ICAyICstCiBnY2MvY3AvbW9kdWxlLmNjICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg IDIgKy0KIGdjYy9jcC9uYW1lLWxvb2t1cC5jYyAgICAgICAgICAgICAgICAgICAgICAgfCAg MiArLQogZ2NjL2NwL3BhcnNlci5jYyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAy ICstCiBnY2MvZGlhZ25vc3RpYy1mb3JtYXQtanNvbi5jYyAgICAgICAgICAgICAgIHwgIDIg Ky0KIGdjYy9kd2FyZjJvdXQuY2MgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMyAr LS0KIGdjYy9mb3J0cmFuL2Zyb250ZW5kLXBhc3Nlcy5jYyAgICAgICAgICAgICAgfCAgNCAr LS0tCiBnY2MvZm9ydHJhbi9vcGVubXAuY2MgICAgICAgICAgICAgICAgICAgICAgIHwgIDMg Ky0tCiBnY2MvZm9ydHJhbi90cmFucy1pbnRyaW5zaWMuY2MgICAgICAgICAgICAgIHwgIDIg Ky0KIGdjYy9mb3J0cmFuL3RyYW5zLXR5cGVzLmNjICAgICAgICAgICAgICAgICAgfCAgMiAr LQogZ2NjL2dlbmhvb2tzLmNjICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA5ICsr KystLS0tLQogZ2NjL2dpbXBsZS1zc2Etc3ByaW50Zi5jYyAgICAgICAgICAgICAgICAgICB8 ICAyICstCiBnY2MvZ2ltcGxlLXNzYS13YXJuLWFjY2Vzcy5jYyAgICAgICAgICAgICAgIHwg IDIgKy0KIGdjYy9nb2R1bXAuY2MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg MiArLQogZ2NjL2hhc2gtdGFibGUuY2MgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAy ICstCiBnY2MvaW5wdXQuY2MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDMg Ky0tCiBnY2MvaXBhLWZyZWUtbGFuZy1kYXRhLmNjICAgICAgICAgICAgICAgICAgIHwgIDQg Ky0tLQogZ2NjL2lwYS1pbmxpbmUuY2MgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAy ICstCiBnY2Mvaml0L2ppdC1idWlsdGlucy5jYyAgICAgICAgICAgICAgICAgICAgIHwgIDYg KystLS0tCiBnY2Mvaml0L2ppdC1yZWNvcmRpbmcuY2MgICAgICAgICAgICAgICAgICAgIHwg IDQgKy0tLQogZ2NjL2x0by9sdG8tY29tbW9uLmNjICAgICAgICAgICAgICAgICAgICAgICB8 ICAzICstLQogZ2NjL2x0by9sdG8tbGFuZy5jYyAgICAgICAgICAgICAgICAgICAgICAgICB8 ICA0ICstLS0KIGdjYy9vcHRjLXNhdmUtZ2VuLmF3ayAgICAgICAgICAgICAgICAgICAgICAg fCAxNiArKysrKysrKy0tLS0tLS0tCiBnY2Mvc3BlbGxjaGVjay5jYyAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgIDIgKy0KIGdjYy90cmVlLXZlY3Qtc2xwLXBhdHRlcm5zLmNjICAg ICAgICAgICAgICAgfCAgMiArLQogZ2NjL3RyZWUuY2MgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8ICA0ICstLS0KIDU1IGZpbGVzIGNoYW5nZWQsIDkyIGluc2VydGlvbnMo KyksIDEyMSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9nY2MvYWRhL2xvY2FsZXMuYyBi L2djYy9hZGEvbG9jYWxlcy5jCmluZGV4IGVlMTM4NWE2YmRjLi4yYWFhMjEyMWE1MCAxMDA2 NDQKLS0tIGEvZ2NjL2FkYS9sb2NhbGVzLmMKKysrIGIvZ2NjL2FkYS9sb2NhbGVzLmMKQEAg LTY0OSw3ICs2NDksNyBAQCBzdHJfZ2V0X2xhc3RfYnl0ZSAoY2hhciAqbGNfYWxsKSB7CiAK IHN0YXRpYyBjaGFyKgogaXNvXzYzOV8xX3RvXzYzOV8zKGNoYXIqIGlzb182MzlfMV9jb2Rl KSB7Ci0gIGludCBsZW4gPSBzaXplb2YoaXNvXzYzOSkvc2l6ZW9mKGlzb182MzlbMF0pOwor ICBpbnQgbGVuID0gQVJSQVlfU0laRSAoaXNvXzYzOSk7CiAgIGNoYXIgKipwID0gaXNvXzYz OTsKICAgaW50IGo7CiAKQEAgLTY3Myw3ICs2NzMsNyBAQCBpc29fNjM5XzFfdG9fNjM5XzMo Y2hhciogaXNvXzYzOV8xX2NvZGUpIHsKIAogc3RhdGljIGNoYXIqCiBsYW5ndWFnZV9uYW1l X3RvXzYzOV8zKGNoYXIqIG5hbWUpIHsKLSAgaW50IGxlbiA9IHNpemVvZihpc29fNjM5KS9z aXplb2YoaXNvXzYzOVswXSk7CisgIGludCBsZW4gPSBBUlJBWV9TSVpFIChpc29fNjM5KTsK ICAgY2hhciAqKnAgPSBpc29fNjM5OwogICBpbnQgajsKIApAQCAtNjk1LDcgKzY5NSw3IEBA IGxhbmd1YWdlX25hbWVfdG9fNjM5XzMoY2hhciogbmFtZSkgewogCiBzdGF0aWMgY2hhcioK IGNvdW50cnlfbmFtZV90b18zMTY2IChjaGFyKiBuYW1lKSB7Ci0gIGludCBsZW4gPSBzaXpl b2YoaXNvXzMxNjYpL3NpemVvZihpc29fMzE2NlswXSk7CisgIGludCBsZW4gPSBBUlJBWV9T SVpFIChpc29fMzE2Nik7CiAgIGNoYXIgKipwID0gaXNvXzMxNjY7CiAgIGludCBqOwogCmRp ZmYgLS1naXQgYS9nY2MvYW5hbHl6ZXIvZW5naW5lLmNjIGIvZ2NjL2FuYWx5emVyL2VuZ2lu ZS5jYwppbmRleCBlNDM0MDZlMzU1Ni4uOWMwYzk3MTlmYzIgMTAwNjQ0Ci0tLSBhL2djYy9h bmFseXplci9lbmdpbmUuY2MKKysrIGIvZ2NjL2FuYWx5emVyL2VuZ2luZS5jYwpAQCAtMTEz OSw3ICsxMTM5LDcgQEAgZXhwbG9kZWRfbm9kZTo6Z2V0X2RvdF9maWxsY29sb3IgKCkgY29u c3QKIAk9IHsiYXp1cmUiLCAiY29yYWwiLCAiY29ybnNpbGsiLCAibGlnaHRibHVlIiwgInll bGxvdyIsCiAJICAgImhvbmV5ZGV3IiwgImxpZ2h0cGluayIsICJsaWdodHNhbG1vbiIsICJw YWxlZ3JlZW4xIiwKIAkgICAid2hlYXQiLCAic2Vhc2hlbGwifTsKLSAgICAgIGNvbnN0IGlu dCBudW1fY29sb3JzID0gc2l6ZW9mIChjb2xvcnMpIC8gc2l6ZW9mIChjb2xvcnNbMF0pOwor ICAgICAgY29uc3QgaW50IG51bV9jb2xvcnMgPSBBUlJBWV9TSVpFIChjb2xvcnMpOwogICAg ICAgcmV0dXJuIGNvbG9yc1t0b3RhbF9zbV9zdGF0ZSAlIG51bV9jb2xvcnNdOwogICAgIH0K ICAgZWxzZQpkaWZmIC0tZ2l0IGEvZ2NjL2FuYWx5emVyL2Z1bmN0aW9uLXNldC5jYyBiL2dj Yy9hbmFseXplci9mdW5jdGlvbi1zZXQuY2MKaW5kZXggOGQ5MjM3ZGViNjMuLmJlMDQxODZl ZDBkIDEwMDY0NAotLS0gYS9nY2MvYW5hbHl6ZXIvZnVuY3Rpb24tc2V0LmNjCisrKyBiL2dj Yy9hbmFseXplci9mdW5jdGlvbi1zZXQuY2MKQEAgLTE2Niw3ICsxNjYsNyBAQCB0ZXN0X3N0 ZGlvX2V4YW1wbGUgKCkKICAgICAiZ2V0d2NfdW5sb2NrZWQiLAogICAgICJwdXRjX3VubG9j a2VkIgogICB9OwotICBjb25zdCBzaXplX3QgY291bnQgPSBzaXplb2YoZXhhbXBsZSkgLyBz aXplb2YgKGV4YW1wbGVbMF0pOworICBjb25zdCBzaXplX3QgY291bnQgPSBBUlJBWV9TSVpF IChleGFtcGxlKTsKICAgZnVuY3Rpb25fc2V0IGZzIChleGFtcGxlLCBjb3VudCk7CiAgIGZz LmFzc2VydF9zb3J0ZWQgKCk7CiAgIGZzLmFzc2VydF9zYW5lICgpOwpkaWZmIC0tZ2l0IGEv Z2NjL2FuYWx5emVyL3NtLWZpbGUuY2MgYi9nY2MvYW5hbHl6ZXIvc20tZmlsZS5jYwppbmRl eCBmZmMyODA5ZGM1Ny4uM2E0NWU2MjdiMzUgMTAwNjQ0Ci0tLSBhL2djYy9hbmFseXplci9z bS1maWxlLmNjCisrKyBiL2djYy9hbmFseXplci9zbS1maWxlLmNjCkBAIC0zMjksOCArMzI5 LDcgQEAgZ2V0X2ZpbGVfdXNpbmdfZm5zICgpCiAgICAgInVuZ2V0YyIsCiAgICAgInZmcHJp bnRmIgogICB9OwotICBjb25zdCBzaXplX3QgY291bnQKLSAgICA9IHNpemVvZihmdW5jbmFt ZXMpIC8gc2l6ZW9mIChmdW5jbmFtZXNbMF0pOworICBjb25zdCBzaXplX3QgY291bnQgPSBB UlJBWV9TSVpFIChmdW5jbmFtZXMpOwogICBmdW5jdGlvbl9zZXQgZnMgKGZ1bmNuYW1lcywg Y291bnQpOwogICByZXR1cm4gZnM7CiB9CmRpZmYgLS1naXQgYS9nY2MvYW5hbHl6ZXIvc20t bWFsbG9jLmNjIGIvZ2NjL2FuYWx5emVyL3NtLW1hbGxvYy5jYwppbmRleCA0YzAzMDgwM2U1 OS4uMjBjMTY3N2M0OTggMTAwNjQ0Ci0tLSBhL2djYy9hbmFseXplci9zbS1tYWxsb2MuY2MK KysrIGIvZ2NjL2FuYWx5emVyL3NtLW1hbGxvYy5jYwpAQCAtMjA1NCw4ICsyMDU0LDcgQEAg bWFsbG9jX3N0YXRlX21hY2hpbmU6OnVuYWZmZWN0ZWRfYnlfY2FsbF9wICh0cmVlIGZuZGVj bCkKICAgICAvKiBUaGlzIGFycmF5IG11c3QgYmUga2VwdCBzb3J0ZWQuICAqLwogICAgICJz dHJzZXAiLAogICB9OwotICBjb25zdCBzaXplX3QgY291bnQKLSAgICA9IHNpemVvZihmdW5j bmFtZXMpIC8gc2l6ZW9mIChmdW5jbmFtZXNbMF0pOworICBjb25zdCBzaXplX3QgY291bnQg PSBBUlJBWV9TSVpFIChmdW5jbmFtZXMpOwogICBmdW5jdGlvbl9zZXQgZnMgKGZ1bmNuYW1l cywgY291bnQpOwogCiAgIGlmIChmcy5jb250YWluc19kZWNsX3AgKGZuZGVjbCkpCmRpZmYg LS1naXQgYS9nY2MvYW5hbHl6ZXIvc20tc2lnbmFsLmNjIGIvZ2NjL2FuYWx5emVyL3NtLXNp Z25hbC5jYwppbmRleCA3NzA0NGUxMDgwNS4uOWIwMjEzZTg5YjcgMTAwNjQ0Ci0tLSBhL2dj Yy9hbmFseXplci9zbS1zaWduYWwuY2MKKysrIGIvZ2NjL2FuYWx5emVyL3NtLXNpZ25hbC5j YwpAQCAtMzA5LDggKzMwOSw3IEBAIGdldF9hc3luY19zaWduYWxfdW5zYWZlX2ZucyAoKQog ICAgICJ2c25wcmludGYiLAogICAgICJ2c3ByaW50ZiIKICAgfTsKLSAgY29uc3Qgc2l6ZV90 IGNvdW50Ci0gICAgPSBzaXplb2YoYXN5bmNfc2lnbmFsX3Vuc2FmZV9mbnMpIC8gc2l6ZW9m IChhc3luY19zaWduYWxfdW5zYWZlX2Zuc1swXSk7CisgIGNvbnN0IHNpemVfdCBjb3VudCA9 IEFSUkFZX1NJWkUgKGFzeW5jX3NpZ25hbF91bnNhZmVfZm5zKTsKICAgZnVuY3Rpb25fc2V0 IGZzIChhc3luY19zaWduYWxfdW5zYWZlX2ZucywgY291bnQpOwogICByZXR1cm4gZnM7CiB9 CmRpZmYgLS1naXQgYS9nY2MvYXR0cmlicy5jYyBiL2djYy9hdHRyaWJzLmNjCmluZGV4IGIy MTlmODc4MDQyLi42ZDRhMzBkYzQxMiAxMDA2NDQKLS0tIGEvZ2NjL2F0dHJpYnMuY2MKKysr IGIvZ2NjL2F0dHJpYnMuY2MKQEAgLTQ5OSw3ICs0OTksNyBAQCBkaWFnX2F0dHJfZXhjbHVz aW9ucyAodHJlZSBsYXN0X2RlY2wsIHRyZWUgbm9kZSwgdHJlZSBhdHRybmFtZSwKIAogICAv KiBJdGVyYXRlIG92ZXIgdGhlIG11dHVhbGx5IGV4Y2x1c2l2ZSBhdHRyaWJ1dGUgbmFtZXMg YW5kIHZlcmlmeQogICAgICB0aGF0IHRoZSBzeW1ib2wgZG9lc24ndCBjb250YWluIGl0LiAg Ki8KLSAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSAhPSBzaXplb2YgYXR0cnMgLyBzaXplb2Yg KmF0dHJzOyArK2kpCisgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgIT0gQVJSQVlfU0laRSAo YXR0cnMpOyArK2kpCiAgICAgewogICAgICAgaWYgKCFhdHRyc1tpXSkKIAljb250aW51ZTsK QEAgLTIxMDYsNyArMjEwNiw3IEBAIGRlY2xzX21pc21hdGNoZWRfYXR0cmlidXRlcyAodHJl ZSB0bXBsLCB0cmVlIGRlY2wsIHRyZWUgYXR0cmxpc3QsCiAgIH07CiAKICAgZm9yICh1bnNp Z25lZCBpID0gMDsgaSAhPSAyOyArK2kpCi0gICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiAh PSBzaXplb2Ygd2hpdGVsaXN0IC8gc2l6ZW9mICp3aGl0ZWxpc3Q7ICsraikKKyAgICBmb3Ig KHVuc2lnbmVkIGogPSAwOyBqICE9IEFSUkFZX1NJWkUgKHdoaXRlbGlzdCk7ICsraikKICAg ICAgIGlmIChsb29rdXBfYXR0cmlidXRlICh3aGl0ZWxpc3Rbal0sIHRtcGxfYXR0cnNbaV0p CiAJICB8fCBsb29rdXBfYXR0cmlidXRlICh3aGl0ZWxpc3Rbal0sIGRlY2xfYXR0cnNbaV0p KQogCXJldHVybiAwOwpkaWZmIC0tZ2l0IGEvZ2NjL2J1aWx0aW5zLmNjIGIvZ2NjL2J1aWx0 aW5zLmNjCmluZGV4IDViMDg1ZTNhMTRmLi4yNTQ4Y2U0MzkxMCAxMDA2NDQKLS0tIGEvZ2Nj L2J1aWx0aW5zLmNjCisrKyBiL2djYy9idWlsdGlucy5jYwpAQCAtNjEzLDcgKzYxMyw3IEBA IGNfc3RybGVuICh0cmVlIGFyZywgaW50IG9ubHlfdmFsdWUsIGNfc3RybGVuX2RhdGEgKmRh dGEsIHVuc2lnbmVkIGVsdHNpemUpCiAgIGlmIChlbHRzaXplICE9IHRyZWVfdG9fdWh3aSAo VFlQRV9TSVpFX1VOSVQgKFRSRUVfVFlQRSAoVFJFRV9UWVBFIChzcmMpKSkpKQogICAgIHJl dHVybiBOVUxMX1RSRUU7CiAKLSAgLyogU2V0IE1BWEVMVFMgdG8gc2l6ZW9mIChTUkMpIC8g c2l6ZW9mICgqU1JDKSAtIDEsIHRoZSBtYXhpbXVtIHBvc3NpYmxlCisgIC8qIFNldCBNQVhF TFRTIHRvIEFSUkFZX1NJWkUgKFNSQykgLSAxLCB0aGUgbWF4aW11bSBwb3NzaWJsZQogICAg ICBsZW5ndGggb2YgU1JDLiAgUHJlZmVyIFRZUEVfU0laRSgpIHRvIFRSRUVfU1RSSU5HX0xF TkdUSCgpIGlmIHBvc3NpYmxlCiAgICAgIGluIGNhc2UgdGhlIGxhdHRlciBpcyBsZXNzIHRo YW4gdGhlIHNpemUgb2YgdGhlIGFycmF5LCBzdWNoIGFzIHdoZW4KICAgICAgU1JDIHJlZmVy cyB0byBhIHNob3J0IHN0cmluZyBsaXRlcmFsIHVzZWQgdG8gaW5pdGlhbGl6ZSBhIGxhcmdl IGFycmF5LgpkaWZmIC0tZ2l0IGEvZ2NjL2MtZmFtaWx5L2MtYXR0cmlicy5jYyBiL2djYy9j LWZhbWlseS9jLWF0dHJpYnMuY2MKaW5kZXggYjE5NTNhNDVmOWIuLjY3YThlM2RjOTY1IDEw MDY0NAotLS0gYS9nY2MvYy1mYW1pbHkvYy1hdHRyaWJzLmNjCisrKyBiL2djYy9jLWZhbWls eS9jLWF0dHJpYnMuY2MKQEAgLTQ5NDEsOCArNDk0MSw3IEBAIGhhbmRsZV9hY2Nlc3NfYXR0 cmlidXRlICh0cmVlIG5vZGVbM10sIHRyZWUgbmFtZSwgdHJlZSBhcmdzLCBpbnQgZmxhZ3Ms CiAgIGludCBpbW9kZTsKIAogICB7Ci0gICAgY29uc3QgaW50IG5tb2RlcyA9Ci0gICAgICBz aXplb2YgYXR0cl9hY2Nlc3M6Om1vZGVfbmFtZXMgLyBzaXplb2YgKmF0dHJfYWNjZXNzOjpt b2RlX25hbWVzOworICAgIGNvbnN0IGludCBubW9kZXMgPSBBUlJBWV9TSVpFIChhdHRyX2Fj Y2Vzczo6bW9kZV9uYW1lcyk7CiAKICAgICBmb3IgKGltb2RlID0gMDsgaW1vZGUgIT0gbm1v ZGVzOyArK2ltb2RlKQogICAgICAgaWYgKCFzdHJuY21wIChwcywgYXR0cl9hY2Nlc3M6Om1v ZGVfbmFtZXNbaW1vZGVdLApkaWZmIC0tZ2l0IGEvZ2NjL2MtZmFtaWx5L2MtY29tbW9uLmNj IGIvZ2NjL2MtZmFtaWx5L2MtY29tbW9uLmNjCmluZGV4IDczMGZhYTllODdmLi5lZDVkMjVl NWQxMSAxMDA2NDQKLS0tIGEvZ2NjL2MtZmFtaWx5L2MtY29tbW9uLmNjCisrKyBiL2djYy9j LWZhbWlseS9jLWNvbW1vbi5jYwpAQCAtNjAyLDggKzYwMiw3IEBAIGNvbnN0IHN0cnVjdCBj X2NvbW1vbl9yZXN3b3JkIGNfY29tbW9uX3Jlc3dvcmRzW10gPQogICB7ICJudWxsX3Jlc2V0 dGFibGUiLAlSSURfTlVMTF9SRVNFVFRBQkxFLAlEX09CSkMgfSwKIH07CiAKLWNvbnN0IHVu c2lnbmVkIGludCBudW1fY19jb21tb25fcmVzd29yZHMgPQotICBzaXplb2YgY19jb21tb25f cmVzd29yZHMgLyBzaXplb2YgKHN0cnVjdCBjX2NvbW1vbl9yZXN3b3JkKTsKK2NvbnN0IHVu c2lnbmVkIGludCBudW1fY19jb21tb25fcmVzd29yZHMgPSBBUlJBWV9TSVpFIChjX2NvbW1v bl9yZXN3b3Jkcyk7CiAKIC8qIFJldHVybiBpZGVudGlmaWVyIGZvciBhZGRyZXNzIHNwYWNl IEFTLiAgKi8KIApAQCAtNDQ4Miw5ICs0NDgxLDcgQEAgY19jb21tb25fbm9kZXNfYW5kX2J1 aWx0aW5zICh2b2lkKQogCiAgIC8qIE1ha2UgZmlsZXB0cl90eXBlX25vZGUgYSBkaXN0aW5j dCB2b2lkICogdHlwZSB1bnRpbAogICAgICBGSUxFIHR5cGUgaXMgZGVmaW5lZC4gIExpa2V3 aXNlIGZvciBjb25zdCBzdHJ1Y3QgdG0qLiAgKi8KLSAgZm9yICh1bnNpZ25lZCBpID0gMDsK LSAgICAgICBpIDwgc2l6ZW9mIChidWlsdGluX3N0cnVjdHB0cl90eXBlcykgLyBzaXplb2Yg KGJ1aWx0aW5fc3RydWN0cHRyX3R5cGUpOwotICAgICAgICsraSkKKyAgZm9yICh1bnNpZ25l ZCBpID0gMDsgaSA8IEFSUkFZX1NJWkUgKGJ1aWx0aW5fc3RydWN0cHRyX3R5cGVzKTsgKytp KQogICAgIGJ1aWx0aW5fc3RydWN0cHRyX3R5cGVzW2ldLm5vZGUKICAgICAgID0gYnVpbGRf dmFyaWFudF90eXBlX2NvcHkgKGJ1aWx0aW5fc3RydWN0cHRyX3R5cGVzW2ldLmJhc2UpOwog CmRpZmYgLS1naXQgYS9nY2MvYy1mYW1pbHkvYy1mb3JtYXQuY2MgYi9nY2MvYy1mYW1pbHkv Yy1mb3JtYXQuY2MKaW5kZXggOThmMjhjMGRjYzYuLjU3ZGJhOWIzYTZkIDEwMDY0NAotLS0g YS9nY2MvYy1mYW1pbHkvYy1mb3JtYXQuY2MKKysrIGIvZ2NjL2MtZmFtaWx5L2MtZm9ybWF0 LmNjCkBAIC0zMTk1LDcgKzMxOTUsNyBAQCBjaGVja190b2tlbnMgKGNvbnN0IHRva2VuX3Qg KnRva2VucywgdW5zaWduZWQgbnRva3MsCiAgIGVsc2UKICAgICB7CiAgICAgICAvKiBEaWFn bm9zZSBzb21lIGNvbW1vbiBtaXNzcGVsbGluZ3MuICAqLwotICAgICAgZm9yICh1bnNpZ25l ZCBpID0gMDsgaSAhPSBzaXplb2YgYmFkd29yZHMgLyBzaXplb2YgKmJhZHdvcmRzOyArK2kp CisgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpICE9IEFSUkFZX1NJWkUgKGJhZHdvcmRz KTsgKytpKQogCXsKIAkgIHVuc2lnbmVkIGJhZHdsZW4gPSBzdHJzcG4gKGJhZHdvcmRzW2ld Lm5hbWUsICIgLSIpOwogCSAgaWYgKHdsZW4gPj0gYmFkd2xlbgpAQCAtMzM5MCwxNCArMzM5 MCwxNCBAQCBjaGVja19wbGFpbiAobG9jYXRpb25fdCBmb3JtYXRfc3RyaW5nX2xvYywgdHJl ZSBmb3JtYXRfc3RyaW5nX2NzdCwKIAogICBpZiAoSVNQVU5DVCAoZm9ybWF0X2NoYXJzWzBd KSkKICAgICB7Ci0gICAgICBzaXplX3QgbmVsdHMgPSBzaXplb2YgY19vcGVycyAvIHNpemVv ZiAqY19vcGVyczsKKyAgICAgIHNpemVfdCBuZWx0cyA9IEFSUkFZX1NJWkUgKGNfb3BlcnMp OwogICAgICAgaWYgKGNvbnN0IGNoYXIgKnJldCA9IGNoZWNrX3Rva2VucyAoY19vcGVycywg bmVsdHMsCiAJCQkJCSAgZm9ybWF0X3N0cmluZ19sb2MsIGZvcm1hdF9zdHJpbmdfY3N0LAog CQkJCQkgIG9yaWdfZm9ybWF0X2NoYXJzLCBmb3JtYXRfY2hhcnMsCiAJCQkJCSAgYmFsdG9r cykpCiAJcmV0dXJuIHJldDsKIAotICAgICAgbmVsdHMgPSBjX2RpYWxlY3RfY3h4ICgpID8g c2l6ZW9mIGN4eF9vcGVycyAvIHNpemVvZiAqY3h4X29wZXJzIDogMDsKKyAgICAgIG5lbHRz ID0gY19kaWFsZWN0X2N4eCAoKSA/IEFSUkFZX1NJWkUgKGN4eF9vcGVycykgOiAwOwogICAg ICAgaWYgKGNvbnN0IGNoYXIgKnJldCA9IGNoZWNrX3Rva2VucyAoY3h4X29wZXJzLCBuZWx0 cywKIAkJCQkJICBmb3JtYXRfc3RyaW5nX2xvYywgZm9ybWF0X3N0cmluZ19jc3QsCiAJCQkJ CSAgb3JpZ19mb3JtYXRfY2hhcnMsIGZvcm1hdF9jaGFycywKQEAgLTM0MDcsMTQgKzM0MDcs MTQgQEAgY2hlY2tfcGxhaW4gKGxvY2F0aW9uX3QgZm9ybWF0X3N0cmluZ19sb2MsIHRyZWUg Zm9ybWF0X3N0cmluZ19jc3QsCiAKICAgaWYgKElTQUxQSEEgKGZvcm1hdF9jaGFyc1swXSkp CiAgICAgewotICAgICAgc2l6ZV90IG5lbHRzID0gc2l6ZW9mIGNfa2V5d29yZHMgLyBzaXpl b2YgKmNfa2V5d29yZHM7CisgICAgICBzaXplX3QgbmVsdHMgPSBBUlJBWV9TSVpFIChjX2tl eXdvcmRzKTsKICAgICAgIGlmIChjb25zdCBjaGFyICpyZXQgPSBjaGVja190b2tlbnMgKGNf a2V5d29yZHMsIG5lbHRzLAogCQkJCQkgIGZvcm1hdF9zdHJpbmdfbG9jLCBmb3JtYXRfc3Ry aW5nX2NzdCwKIAkJCQkJICBvcmlnX2Zvcm1hdF9jaGFycywgZm9ybWF0X2NoYXJzLAogCQkJ CQkgIGJhbHRva3MpKQogCXJldHVybiByZXQ7CiAKLSAgICAgIG5lbHRzID0gY19kaWFsZWN0 X2N4eCAoKSA/IHNpemVvZiBjeHhfa2V5d29yZHMgLyBzaXplb2YgKmN4eF9rZXl3b3JkcyA6 IDA7CisgICAgICBuZWx0cyA9IGNfZGlhbGVjdF9jeHggKCkgPyBBUlJBWV9TSVpFIChjeHhf a2V5d29yZHMpIDogMDsKICAgICAgIGlmIChjb25zdCBjaGFyICpyZXQgPSBjaGVja190b2tl bnMgKGN4eF9rZXl3b3JkcywgbmVsdHMsCiAJCQkJCSAgZm9ybWF0X3N0cmluZ19sb2MsIGZv cm1hdF9zdHJpbmdfY3N0LAogCQkJCQkgIG9yaWdfZm9ybWF0X2NoYXJzLCBmb3JtYXRfY2hh cnMsCkBAIC0zNTMzLDcgKzM1MzMsNyBAQCBjaGVja19wbGFpbiAobG9jYXRpb25fdCBmb3Jt YXRfc3RyaW5nX2xvYywgdHJlZSBmb3JtYXRfc3RyaW5nX2NzdCwKIAkgICYmIElTQUxQSEEg KGZvcm1hdF9jaGFyc1sxXSkpCiAJewogCSAgLyogRGlhZ25vc2UgYSBzdWJzZXQgb2YgY29u dHJhY3Rpb25zIHRoYXQgYXJlIGJlc3QgYXZvaWRlZC4gICovCi0JICBmb3IgKHVuc2lnbmVk IGkgPSAwOyBpICE9IHNpemVvZiBjb250cnMgLyBzaXplb2YgKmNvbnRyczsgKytpKQorCSAg Zm9yICh1bnNpZ25lZCBpID0gMDsgaSAhPSBBUlJBWV9TSVpFIChjb250cnMpOyArK2kpCiAJ ICAgIHsKIAkgICAgICBjb25zdCBjaGFyICphcG9zID0gc3RyY2hyIChjb250cnNbaV0ubmFt ZSwgJ1wnJyk7CiAJICAgICAgZ2NjX2Fzc2VydCAoYXBvcyAhPSBOVUxMKTsKZGlmZiAtLWdp dCBhL2djYy9jLWZhbWlseS9jLXByYWdtYS5jYyBiL2djYy9jLWZhbWlseS9jLXByYWdtYS5j YwppbmRleCA0YzgwYmRkMjZkNi4uY2MwNWIyNTgwZmEgMTAwNjQ0Ci0tLSBhL2djYy9jLWZh bWlseS9jLXByYWdtYS5jYworKysgYi9nY2MvYy1mYW1pbHkvYy1wcmFnbWEuY2MKQEAgLTE0 MDAsOCArMTQwMCw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb21wX3ByYWdtYV9kZWYgb21w X3ByYWdtYXNfc2ltZFtdID0gewogdm9pZAogY19wcF9sb29rdXBfcHJhZ21hICh1bnNpZ25l ZCBpbnQgaWQsIGNvbnN0IGNoYXIgKipzcGFjZSwgY29uc3QgY2hhciAqKm5hbWUpCiB7Ci0g IGNvbnN0IGludCBuX29hY2NfcHJhZ21hcyA9IHNpemVvZiAob2FjY19wcmFnbWFzKSAvIHNp emVvZiAoKm9hY2NfcHJhZ21hcyk7Ci0gIGNvbnN0IGludCBuX29tcF9wcmFnbWFzID0gc2l6 ZW9mIChvbXBfcHJhZ21hcykgLyBzaXplb2YgKCpvbXBfcHJhZ21hcyk7CisgIGNvbnN0IGlu dCBuX29hY2NfcHJhZ21hcyA9IEFSUkFZX1NJWkUgKG9hY2NfcHJhZ21hcyk7CisgIGNvbnN0 IGludCBuX29tcF9wcmFnbWFzID0gQVJSQVlfU0laRSAob21wX3ByYWdtYXMpOwogICBjb25z dCBpbnQgbl9vbXBfcHJhZ21hc19zaW1kID0gc2l6ZW9mIChvbXBfcHJhZ21hc19zaW1kKQog CQkJCSAvIHNpemVvZiAoKm9tcF9wcmFnbWFzKTsKICAgaW50IGk7CkBAIC0xNTc2LDggKzE1 NzYsNyBAQCBpbml0X3ByYWdtYSAodm9pZCkKIHsKICAgaWYgKGZsYWdfb3BlbmFjYykKICAg ICB7Ci0gICAgICBjb25zdCBpbnQgbl9vYWNjX3ByYWdtYXMKLQk9IHNpemVvZiAob2FjY19w cmFnbWFzKSAvIHNpemVvZiAoKm9hY2NfcHJhZ21hcyk7CisgICAgICBjb25zdCBpbnQgbl9v YWNjX3ByYWdtYXMgPSBBUlJBWV9TSVpFIChvYWNjX3ByYWdtYXMpOwogICAgICAgaW50IGk7 CiAKICAgICAgIGZvciAoaSA9IDA7IGkgPCBuX29hY2NfcHJhZ21hczsgKytpKQpAQCAtMTU4 Nyw3ICsxNTg2LDcgQEAgaW5pdF9wcmFnbWEgKHZvaWQpCiAKICAgaWYgKGZsYWdfb3Blbm1w KQogICAgIHsKLSAgICAgIGNvbnN0IGludCBuX29tcF9wcmFnbWFzID0gc2l6ZW9mIChvbXBf cHJhZ21hcykgLyBzaXplb2YgKCpvbXBfcHJhZ21hcyk7CisgICAgICBjb25zdCBpbnQgbl9v bXBfcHJhZ21hcyA9IEFSUkFZX1NJWkUgKG9tcF9wcmFnbWFzKTsKICAgICAgIGludCBpOwog CiAgICAgICBmb3IgKGkgPSAwOyBpIDwgbl9vbXBfcHJhZ21hczsgKytpKQpkaWZmIC0tZ2l0 IGEvZ2NjL2MtZmFtaWx5L2tub3duLWhlYWRlcnMuY2MgYi9nY2MvYy1mYW1pbHkva25vd24t aGVhZGVycy5jYwppbmRleCA4YWQzZWIzZjQ2Ni4uMDFjODZiMjdkYzggMTAwNjQ0Ci0tLSBh L2djYy9jLWZhbWlseS9rbm93bi1oZWFkZXJzLmNjCisrKyBiL2djYy9jLWZhbWlseS9rbm93 bi1oZWFkZXJzLmNjCkBAIC03OSw4ICs3OSw3IEBAIGdldF9zdHJpbmdfbWFjcm9faGludCAo Y29uc3QgY2hhciAqbmFtZSwgZW51bSBzdGRsaWIgbGliKQogICBpZiAoKGxpYiA9PSBTVERM SUJfQyAmJiBmbGFnX2lzb2M5OSkKICAgICAgIHx8IChsaWIgPT0gU1RETElCX0NQTFVTUExV UyAmJiBjeHhfZGlhbGVjdCA+PSBjeHgxMSApKQogICAgIHsKLSAgICAgIGNvbnN0IHNpemVf dCBudW1fYzk5X2N4eDExX21hY3JvcwotCT0gc2l6ZW9mIChjOTlfY3h4MTFfbWFjcm9zKSAv IHNpemVvZiAoYzk5X2N4eDExX21hY3Jvc1swXSk7CisgICAgICBjb25zdCBzaXplX3QgbnVt X2M5OV9jeHgxMV9tYWNyb3MgPSBBUlJBWV9TSVpFIChjOTlfY3h4MTFfbWFjcm9zKTsKICAg ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtX2M5OV9jeHgxMV9tYWNyb3M7IGkrKykK IAlpZiAoc3RyY21wIChuYW1lLCBjOTlfY3h4MTFfbWFjcm9zW2ldKSA9PSAwKQogCSAgcmV0 dXJuIGxpYiA9PSBTVERMSUJfQyA/ICI8aW50dHlwZXMuaD4iIDogIjxjaW50dHlwZXM+IjsK QEAgLTIwNCw3ICsyMDMsNyBAQCBnZXRfc3RkbGliX2hlYWRlcl9mb3JfbmFtZSAoY29uc3Qg Y2hhciAqbmFtZSwgZW51bSBzdGRsaWIgbGliKQogICAgIHsiV0NIQVJfTUFYIiwgeyI8d2No YXIuaD4iLCAiPGN3Y2hhcj4ifSB9LAogICAgIHsiV0NIQVJfTUlOIiwgeyI8d2NoYXIuaD4i LCAiPGN3Y2hhcj4ifSB9CiAgIH07Ci0gIGNvbnN0IHNpemVfdCBudW1faGludHMgPSBzaXpl b2YgKGhpbnRzKSAvIHNpemVvZiAoaGludHNbMF0pOworICBjb25zdCBzaXplX3QgbnVtX2hp bnRzID0gQVJSQVlfU0laRSAoaGludHMpOwogICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51 bV9oaW50czsgaSsrKQogICAgIGlmIChzdHJjbXAgKG5hbWUsIGhpbnRzW2ldLm5hbWUpID09 IDApCiAgICAgICByZXR1cm4gaGludHNbaV0uaGVhZGVyW2xpYl07CmRpZmYgLS1naXQgYS9n Y2MvYy9jLWRlY2wuY2MgYi9nY2MvYy9jLWRlY2wuY2MKaW5kZXggYzcwMWYwN2JlZmUuLmU0 OTg3OWFiMjg2IDEwMDY0NAotLS0gYS9nY2MvYy9jLWRlY2wuY2MKKysrIGIvZ2NjL2MvYy1k ZWNsLmNjCkBAIC0xNjU4LDcgKzE2NTgsNyBAQCBjX2JpbmQgKGxvY2F0aW9uX3QgbG9jLCB0 cmVlIGRlY2wsIGJvb2wgaXNfZ2xvYmFsKQogICAgVXNlZCBvbmx5IGJ5IG1hdGNoX2J1aWx0 aW5fZnVuY3Rpb25fdHlwZXMuICAqLwogCiBzdGF0aWMgY29uc3QgdW5zaWduZWQgYnVpbHRp bl9zdHJ1Y3RwdHJfdHlwZV9jb3VudAotICA9IHNpemVvZiBidWlsdGluX3N0cnVjdHB0cl90 eXBlcyAvIHNpemVvZiBidWlsdGluX3N0cnVjdHB0cl90eXBlc1swXTsKKyAgPSBBUlJBWV9T SVpFIChidWlsdGluX3N0cnVjdHB0cl90eXBlcyk7CiAKIHN0YXRpYyBHVFkoKCkpIHRyZWUg bGFzdF9zdHJ1Y3RwdHJfdHlwZXNbYnVpbHRpbl9zdHJ1Y3RwdHJfdHlwZV9jb3VudF07CiAK QEAgLTE3MDUsMTAgKzE3MDUsOCBAQCBtYXRjaF9idWlsdGluX2Z1bmN0aW9uX3R5cGVzICh0 cmVlIG5ld3R5cGUsIHRyZWUgb2xkdHlwZSwKICAgdHJlZSBuZXdhcmdzID0gVFlQRV9BUkdf VFlQRVMgKG5ld3R5cGUpOwogICB0cmVlIHRyeWFyZ3MgPSBuZXdhcmdzOwogCi0gIGNvbnN0 IHVuc2lnbmVkIG5sc3QKLSAgICA9IHNpemVvZiBsYXN0X3N0cnVjdHB0cl90eXBlcyAvIHNp emVvZiBsYXN0X3N0cnVjdHB0cl90eXBlc1swXTsKLSAgY29uc3QgdW5zaWduZWQgbmJzdAot ICAgID0gc2l6ZW9mIGJ1aWx0aW5fc3RydWN0cHRyX3R5cGVzIC8gc2l6ZW9mIGJ1aWx0aW5f c3RydWN0cHRyX3R5cGVzWzBdOworICBjb25zdCB1bnNpZ25lZCBubHN0ID0gQVJSQVlfU0la RSAobGFzdF9zdHJ1Y3RwdHJfdHlwZXMpOworICBjb25zdCB1bnNpZ25lZCBuYnN0ID0gQVJS QVlfU0laRSAoYnVpbHRpbl9zdHJ1Y3RwdHJfdHlwZXMpOwogCiAgIGdjY19jaGVja2luZ19h c3NlcnQgKG5sc3QgPT0gbmJzdCk7CiAKZGlmZiAtLWdpdCBhL2djYy9jZmcuY2MgYi9nY2Mv Y2ZnLmNjCmluZGV4IGRhNzgxYmEyZGE4Li5iYmQwMWJhMjFiYiAxMDA2NDQKLS0tIGEvZ2Nj L2NmZy5jYworKysgYi9nY2MvY2ZnLmNjCkBAIC03ODcsNyArNzg3LDcgQEAgZHVtcF9iYl9p bmZvIChGSUxFICpvdXRmLCBiYXNpY19ibG9jayBiYiwgaW50IGluZGVudCwgZHVtcF9mbGFn c190IGZsYWdzLAogICAgICAgTlVMTAogI3VuZGVmIERFRl9CQVNJQ19CTE9DS19GTEFHCiAg ICAgfTsKLSAgY29uc3QgdW5zaWduZWQgbl9iaXRuYW1lcyA9IHNpemVvZiAoYmJfYml0bmFt ZXMpIC8gc2l6ZW9mIChjaGFyICopOworICBjb25zdCB1bnNpZ25lZCBuX2JpdG5hbWVzID0g QVJSQVlfU0laRSAoYmJfYml0bmFtZXMpOwogICBib29sIGZpcnN0OwogICBjaGFyICpzX2lu ZGVudCA9IChjaGFyICopIGFsbG9jYSAoKHNpemVfdCkgaW5kZW50ICsgMSk7CiAgIG1lbXNl dCAoKHZvaWQgKikgc19pbmRlbnQsICcgJywgKHNpemVfdCkgaW5kZW50KTsKZGlmZiAtLWdp dCBhL2djYy9jb21tb24vY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1jb21tb24uY2MgYi9nY2Mv Y29tbW9uL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtY29tbW9uLmNjCmluZGV4IGRmZGE1Yjgz NzJhLi43ZmFjOTBkMzEzYiAxMDA2NDQKLS0tIGEvZ2NjL2NvbW1vbi9jb25maWcvYWFyY2g2 NC9hYXJjaDY0LWNvbW1vbi5jYworKysgYi9nY2MvY29tbW9uL2NvbmZpZy9hYXJjaDY0L2Fh cmNoNjQtY29tbW9uLmNjCkBAIC0zMTQsOCArMzE0LDcgQEAgYWFyY2g2NF9vcHRpb25faW5p dF9zdHJ1Y3QgKHN0cnVjdCBnY2Nfb3B0aW9ucyAqb3B0cyBBVFRSSUJVVEVfVU5VU0VEKQog ICAgICAgIHBvcCBhbmQgYXR0cmlidXRlIGNoYW5nZSAoYXJtX25lb24gaGVhZGVycywgbHRv IGV0YyBhbGwgY2F1c2UgdGhpcyB0bwogICAgICAgIGhhcHBlbiBxdWl0ZSBmcmVxdWVudGx5 KS4gIEl0IGlzIGEgdHJhZGUtb2ZmIGJldHdlZW4gdGltZSBhbmQgc3BhY2UgYW5kCiAgICAg ICAgc28gdGltZSB3b24uICAqLwotICAgIGludCBuX2V4dGVuc2lvbnMKLSAgICAgID0gc2l6 ZW9mIChhbGxfZXh0ZW5zaW9ucykgLyBzaXplb2YgKHN0cnVjdCBhYXJjaDY0X29wdGlvbl9l eHRlbnNpb24pOworICAgIGludCBuX2V4dGVuc2lvbnMgPSBBUlJBWV9TSVpFIChhbGxfZXh0 ZW5zaW9ucyk7CiAgICAgcXNvcnQgKCZhbGxfZXh0ZW5zaW9uc19ieV9vbiwgbl9leHRlbnNp b25zLAogCSAgIHNpemVvZiAoc3RydWN0IGFhcmNoNjRfb3B0aW9uX2V4dGVuc2lvbiksIG9w dF9leHRfY21wKTsKIH0KZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0 LWJ1aWx0aW5zLmNjIGIvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtYnVpbHRpbnMuY2MK aW5kZXggYzIxNDc2ZDdhZTkuLmUwYTc0MWFjNjYzIDEwMDY0NAotLS0gYS9nY2MvY29uZmln L2FhcmNoNjQvYWFyY2g2NC1idWlsdGlucy5jYworKysgYi9nY2MvY29uZmlnL2FhcmNoNjQv YWFyY2g2NC1idWlsdGlucy5jYwpAQCAtODMyLDcgKzgzMiw3IEBAIGFhcmNoNjRfbG9va3Vw X3NpbWRfYnVpbHRpbl90eXBlIChtYWNoaW5lX21vZGUgbW9kZSwKIAkJCQkgIGVudW0gYWFy Y2g2NF90eXBlX3F1YWxpZmllcnMgcSkKIHsKICAgaW50IGk7Ci0gIGludCBuZWx0cyA9IHNp emVvZiAoYWFyY2g2NF9zaW1kX3R5cGVzKSAvIHNpemVvZiAoYWFyY2g2NF9zaW1kX3R5cGVz WzBdKTsKKyAgaW50IG5lbHRzID0gQVJSQVlfU0laRSAoYWFyY2g2NF9zaW1kX3R5cGVzKTsK IAogICAvKiBOb24tcG9seSBzY2FsYXIgbW9kZXMgbWFwIHRvIHN0YW5kYXJkIHR5cGVzIG5v dCBpbiB0aGUgdGFibGUuICAqLwogICBpZiAocSAhPSBxdWFsaWZpZXJfcG9seSAmJiAhVkVD VE9SX01PREVfUCAobW9kZSkpCkBAIC04NjksNyArODY5LDcgQEAgc3RhdGljIHZvaWQKIGFh cmNoNjRfaW5pdF9zaW1kX2J1aWx0aW5fdHlwZXMgKHZvaWQpCiB7CiAgIGludCBpOwotICBp bnQgbmVsdHMgPSBzaXplb2YgKGFhcmNoNjRfc2ltZF90eXBlcykgLyBzaXplb2YgKGFhcmNo NjRfc2ltZF90eXBlc1swXSk7CisgIGludCBuZWx0cyA9IEFSUkFZX1NJWkUgKGFhcmNoNjRf c2ltZF90eXBlcyk7CiAgIHRyZWUgdGRlY2w7CiAKICAgLyogSW5pdCBhbGwgdGhlIGVsZW1l bnQgdHlwZXMgYnVpbHQgYnkgdGhlIGZyb250LWVuZC4gICovCkBAIC0xNDM0LDcgKzE0MzQs NyBAQCBhYXJjaDY0X2luaXRfYnVpbHRpbl9yc3FydCAodm9pZCkKICAgfTsKIAogICBidWls dGluX2RlY2xzX2RhdGEgKmJkZCA9IGJkZGE7Ci0gIGJ1aWx0aW5fZGVjbHNfZGF0YSAqYmRk X2VuZCA9IGJkZCArIChzaXplb2YgKGJkZGEpIC8gc2l6ZW9mIChidWlsdGluX2RlY2xzX2Rh dGEpKTsKKyAgYnVpbHRpbl9kZWNsc19kYXRhICpiZGRfZW5kID0gYmRkICsgKEFSUkFZX1NJ WkUgKGJkZGEpKTsKIAogICBmb3IgKDsgYmRkIDwgYmRkX2VuZDsgYmRkKyspCiAgIHsKZGlm ZiAtLWdpdCBhL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LmNjIGIvZ2NjL2NvbmZpZy9h YXJjaDY0L2FhcmNoNjQuY2MKaW5kZXggZjY1MGFiYmM0Y2UuLjZmMmY1ZDI3ZGRjIDEwMDY0 NAotLS0gYS9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC5jYworKysgYi9nY2MvY29uZmln L2FhcmNoNjQvYWFyY2g2NC5jYwpAQCAtMjA3NTUsNyArMjA3NTUsNyBAQCBpc19tYWRkX29w IChlbnVtIGF0dHJfdHlwZSB0MSkKICAgICBUWVBFX1NNTUxBLCBUWVBFX1VNTEFMLCBUWVBF X1VNTEFMUyxUWVBFX1NNTFNELCBUWVBFX1NNTFNEWCwgVFlQRV9TTUxTTEQKICAgfTsKIAot ICBmb3IgKGkgPSAwOyBpIDwgc2l6ZW9mIChtbGF0eXBlcykgLyBzaXplb2YgKGVudW0gYXR0 cl90eXBlKTsgaSsrKQorICBmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRSAobWxhdHlwZXMp OyBpKyspCiAgICAgewogICAgICAgaWYgKHQxID09IG1sYXR5cGVzW2ldKQogCXJldHVybiB0 cnVlOwpkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9hcm0vYXJtLWJ1aWx0aW5zLmNjIGIvZ2Nj L2NvbmZpZy9hcm0vYXJtLWJ1aWx0aW5zLmNjCmluZGV4IDM2YTQwYTFkYzgwLi5kOTE3MTM3 ZTVlZSAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy9hcm0vYXJtLWJ1aWx0aW5zLmNjCisrKyBi L2djYy9jb25maWcvYXJtL2FybS1idWlsdGlucy5jYwpAQCAtMTQ3MSw3ICsxNDcxLDcgQEAg YXJtX2xvb2t1cF9zaW1kX2J1aWx0aW5fdHlwZSAobWFjaGluZV9tb2RlIG1vZGUsCiAJCQkg ICAgICBlbnVtIGFybV90eXBlX3F1YWxpZmllcnMgcSkKIHsKICAgaW50IGk7Ci0gIGludCBu ZWx0cyA9IHNpemVvZiAoYXJtX3NpbWRfdHlwZXMpIC8gc2l6ZW9mIChhcm1fc2ltZF90eXBl c1swXSk7CisgIGludCBuZWx0cyA9IEFSUkFZX1NJWkUgKGFybV9zaW1kX3R5cGVzKTsKIAog ICAvKiBOb24tcG9seSBzY2FsYXIgbW9kZXMgbWFwIHRvIHN0YW5kYXJkIHR5cGVzIG5vdCBp biB0aGUgdGFibGUuICAqLwogICBpZiAocSAhPSBxdWFsaWZpZXJfcG9seSAmJiAhVkVDVE9S X01PREVfUCAobW9kZSkpCkBAIC0xNTAzLDcgKzE1MDMsNyBAQCBzdGF0aWMgdm9pZAogYXJt X2luaXRfc2ltZF9idWlsdGluX3R5cGVzICh2b2lkKQogewogICBpbnQgaTsKLSAgaW50IG5l bHRzID0gc2l6ZW9mIChhcm1fc2ltZF90eXBlcykgLyBzaXplb2YgKGFybV9zaW1kX3R5cGVz WzBdKTsKKyAgaW50IG5lbHRzID0gQVJSQVlfU0laRSAoYXJtX3NpbWRfdHlwZXMpOwogICB0 cmVlIHRkZWNsOwogCiAgIC8qIFBvbHkgdHlwZXMgYXJlIGEgd29ybGQgb2YgdGhlaXIgb3du LiAgSW4gb3JkZXIgdG8gbWFpbnRhaW4gbGVnYWN5CmRpZmYgLS1naXQgYS9nY2MvY29uZmln L2F2ci9nZW4tYXZyLW1tY3UtdGV4aS5jYyBiL2djYy9jb25maWcvYXZyL2dlbi1hdnItbW1j dS10ZXhpLmNjCmluZGV4IGQ5YzNhMzA4NzdkLi5hNDRlMThlNGMzNSAxMDA2NDQKLS0tIGEv Z2NjL2NvbmZpZy9hdnIvZ2VuLWF2ci1tbWN1LXRleGkuY2MKKysrIGIvZ2NjL2NvbmZpZy9h dnIvZ2VuLWF2ci1tbWN1LXRleGkuY2MKQEAgLTIzLDEwICsyMywxMiBAQAogCiAjZGVmaW5l IElOX0dFTl9BVlJfTU1DVV9URVhJCiAKKyNkZWZpbmUgQVJSQVlfU0laRShhKSAoc2l6ZW9m IChhKSAvIHNpemVvZiAoKGEpWzBdKSkKKwogI2luY2x1ZGUgImF2ci1kZXZpY2VzLmNjIgog CiBzdGF0aWMgY29uc3QgYXZyX21jdV90KgotbWN1c1tzaXplb2YgYXZyX21jdV90eXBlcyAv IHNpemVvZiBhdnJfbWN1X3R5cGVzWzBdXTsKK21jdXNbQVJSQVlfU0laRSAoYXZyX21jdV90 eXBlcyldOwogCiBzdGF0aWMgaW50IGxldHRlciAoY2hhciBjKQogewpAQCAtNTYsNyArNTgs NyBAQCBjX3ByZWZpeCAoY29uc3QgY2hhciAqc3RyKQogICAgICAgImF0dGlueSIsICJhdG1l Z2EiLCAiYXR4bWVnYSIsICJhdGEiLCAiYXQ5MCIKICAgICB9OwogCi0gIGludCBpLCBuID0g KGludCkgKHNpemVvZiAocHJlZml4ZXMpIC8gc2l6ZW9mICgqcHJlZml4ZXMpKTsKKyAgaW50 IGksIG4gPSAoaW50KSAoQVJSQVlfU0laRSAocHJlZml4ZXMpKTsKIAogICBmb3IgKGkgPSAw OyBpIDwgbjsgaSsrKQogICAgIGlmIChzdHJfcHJlZml4X3AgKHN0ciwgcHJlZml4ZXNbaV0p KQpAQCAtMTg1LDcgKzE4Nyw3IEBAIGludCBtYWluICh2b2lkKQogCSAgcHJpbnRfbWN1cyAo bl9tY3VzKTsKIAkgIG5fbWN1cyA9IDA7CiAKLQkgIGZvciAoaSA9IDA7IGkgPCBzaXplb2Yg KGF2cl90ZXhpbmZvKSAvIHNpemVvZiAoKmF2cl90ZXhpbmZvKTsgaSsrKQorCSAgZm9yIChp ID0gMDsgaSA8IEFSUkFZX1NJWkUgKGF2cl90ZXhpbmZvKTsgaSsrKQogCSAgICBpZiAoYXJj aF9pZCA9PSBhdnJfdGV4aW5mb1tpXS5hcmNoX2lkKQogCSAgICAgIHByaW50ZiAoIkBpdGVt ICVzXG4lc1xuIiwgbWN1LT5uYW1lLCBhdnJfdGV4aW5mb1tpXS50ZXhpbmZvKTsKIAl9CmRp ZmYgLS1naXQgYS9nY2MvY29uZmlnL2M2eC9jNnguY2MgYi9nY2MvY29uZmlnL2M2eC9jNngu Y2MKaW5kZXggN2ZlMThkNjljN2YuLmRjMDFhNmU0N2M0IDEwMDY0NAotLS0gYS9nY2MvY29u ZmlnL2M2eC9jNnguY2MKKysrIGIvZ2NjL2NvbmZpZy9jNngvYzZ4LmNjCkBAIC0yNTgwLDcg KzI1ODAsNyBAQCBzdGF0aWMgdW5zaWduZWQgcmVnX3NhdmVfb3JkZXJbXSA9CiAgIFJFR19C MTQsIFJFR19BMTUKIH07CiAKLSNkZWZpbmUgTl9TQVZFX09SREVSIChzaXplb2YgcmVnX3Nh dmVfb3JkZXIgLyBzaXplb2YgKnJlZ19zYXZlX29yZGVyKQorI2RlZmluZSBOX1NBVkVfT1JE RVIgKEFSUkFZX1NJWkUgKHJlZ19zYXZlX29yZGVyKSkKIAogLyogQ29tcHV0ZSB0aGUgbGF5 b3V0IG9mIHRoZSBzdGFjayBmcmFtZSBhbmQgc3RvcmUgaXQgaW4gRlJBTUUuICAqLwogCmRp ZmYgLS1naXQgYS9nY2MvY29uZmlnL2Rhcndpbi1jLmNjIGIvZ2NjL2NvbmZpZy9kYXJ3aW4t Yy5jYwppbmRleCAzNzcwODU3YWE0Mi4uOTIwM2M4NGQyYzIgMTAwNjQ0Ci0tLSBhL2djYy9j b25maWcvZGFyd2luLWMuY2MKKysrIGIvZ2NjL2NvbmZpZy9kYXJ3aW4tYy5jYwpAQCAtNTA1 LDcgKzUwNSw3IEBAIGRhcndpbl9yZWdpc3Rlcl9mcmFtZXdvcmtzIChjb25zdCBjaGFyICpz eXNyb290LAogICAgICAgc2l6ZV90IGk7CiAKICAgICAgIC8qIFNldHVwIGRlZmF1bHQgc2Vh cmNoIHBhdGggZm9yIGZyYW1ld29ya3MuICAqLwotICAgICAgZm9yIChpPTA7IGk8c2l6ZW9m IChmcmFtZXdvcmtfZGVmYXVsdHMpL3NpemVvZihjb25zdCBjaGFyICopOyArK2kpCisgICAg ICBmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRSAoZnJhbWV3b3JrX2RlZmF1bHRzKTsgKytp KQogCXsKIAkgIGNoYXIgKnN0cjsKIAkgIGlmIChzeXNyb290KQpkaWZmIC0tZ2l0IGEvZ2Nj L2NvbmZpZy9nY24vbWtvZmZsb2FkLmNjIGIvZ2NjL2NvbmZpZy9nY24vbWtvZmZsb2FkLmNj CmluZGV4IDk0YmE3ZmZhNWFmLi45ZGIyMTI0YjEyOSAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZp Zy9nY24vbWtvZmZsb2FkLmNjCisrKyBiL2djYy9jb25maWcvZ2NuL21rb2ZmbG9hZC5jYwpA QCAtNzIzLDcgKzcyMyw3IEBAIHByb2Nlc3Nfb2JqIChGSUxFICppbiwgRklMRSAqY2ZpbGUp CiAJICAgIiAgdW5zaWduZWQgZ2xvYmFsX3ZhcmlhYmxlX2NvdW50O1xuIgogCSAgICJ9IHRh cmdldF9kYXRhID0ge1xuIgogCSAgICIgICZnY25faW1hZ2UsXG4iCi0JICAgIiAgc2l6ZW9m IChnY25fa2VybmVscykgLyBzaXplb2YgKGdjbl9rZXJuZWxzWzBdKSxcbiIKKwkgICAiICBB UlJBWV9TSVpFIChnY25fa2VybmVscyksXG4iCiAJICAgIiAgZ2NuX2tlcm5lbHMsXG4iCiAJ ICAgIiAgZ2NuX251bV92YXJzXG4iCiAJICAgIn07XG5cbiIpOwpkaWZmIC0tZ2l0IGEvZ2Nj L2NvbmZpZy9pMzg2L2kzODYtYnVpbHRpbnMuY2MgYi9nY2MvY29uZmlnL2kzODYvaTM4Ni1i dWlsdGlucy5jYwppbmRleCA4YzZkMGZlOTYzMS4uMGVhMGVlZTU2MjQgMTAwNjQ0Ci0tLSBh L2djYy9jb25maWcvaTM4Ni9pMzg2LWJ1aWx0aW5zLmNjCisrKyBiL2djYy9jb25maWcvaTM4 Ni9pMzg2LWJ1aWx0aW5zLmNjCkBAIC0xOTM2LDggKzE5MzYsNyBAQCBnZXRfYnVpbHRpbl9j b2RlX2Zvcl92ZXJzaW9uICh0cmVlIGRlY2wsIHRyZWUgKnByZWRpY2F0ZV9saXN0KQogCiAg IGVudW0gZmVhdHVyZV9wcmlvcml0eSBwcmlvcml0eSA9IFBfTk9ORTsKIAotICBzdGF0aWMg dW5zaWduZWQgaW50IE5VTV9GRUFUVVJFUwotICAgID0gc2l6ZW9mIChpc2FfbmFtZXNfdGFi bGUpIC8gc2l6ZW9mIChfaXNhX25hbWVzX3RhYmxlKTsKKyAgc3RhdGljIHVuc2lnbmVkIGlu dCBOVU1fRkVBVFVSRVMgPSBBUlJBWV9TSVpFIChpc2FfbmFtZXNfdGFibGUpOwogCiAgIHVu c2lnbmVkIGludCBpOwogCkBAIC0yMjkwLDggKzIyODksNyBAQCBmb2xkX2J1aWx0aW5fY3B1 ICh0cmVlIGZuZGVjbCwgdHJlZSAqYXJncykKICAgICAgIHRyZWUgZmluYWw7CiAKICAgICAg IHVuc2lnbmVkIGludCBmaWVsZF92YWwgPSAwOwotICAgICAgdW5zaWduZWQgaW50IE5VTV9J U0FfTkFNRVMKLQk9IHNpemVvZiAoaXNhX25hbWVzX3RhYmxlKSAvIHNpemVvZiAoc3RydWN0 IF9pc2FfbmFtZXNfdGFibGUpOworICAgICAgdW5zaWduZWQgaW50IE5VTV9JU0FfTkFNRVMg PSBBUlJBWV9TSVpFIChpc2FfbmFtZXNfdGFibGUpOwogCiAgICAgICBmb3IgKGkgPSAwOyBp IDwgTlVNX0lTQV9OQU1FUzsgaSsrKQogCWlmIChzdHJjbXAgKGlzYV9uYW1lc190YWJsZVtp XS5uYW1lLApkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9tMzJjL20zMmMuY2MgYi9nY2MvY29u ZmlnL20zMmMvbTMyYy5jYwppbmRleCAxMWNhOWE0M2EwYi4uNWExOWZhYTA2M2MgMTAwNjQ0 Ci0tLSBhL2djYy9jb25maWcvbTMyYy9tMzJjLmNjCisrKyBiL2djYy9jb25maWcvbTMyYy9t MzJjLmNjCkBAIC0xMDkwLDcgKzEwOTAsNyBAQCBzdGF0aWMgc3RydWN0CiAgIHsgRkJfUkVH Tk8sIDB4MDEsIDIsIDQgfQogfTsKIAotI2RlZmluZSBQVVNITV9OIChzaXplb2YocHVzaG1f aW5mbykvc2l6ZW9mKHB1c2htX2luZm9bMF0pKQorI2RlZmluZSBQVVNITV9OIChBUlJBWV9T SVpFIChwdXNobV9pbmZvKSkKIAogLyogUmV0dXJucyBUUlVFIGlmIHdlIG5lZWQgdG8gc2F2 ZS9yZXN0b3JlIHRoZSBnaXZlbiByZWdpc3Rlci4gIFdlCiAgICBzYXZlIGV2ZXJ5dGhpbmcg Zm9yIGV4Y2VwdGlvbiBoYW5kbGVycywgc28gdGhhdCBhbnkgcmVnaXN0ZXIgY2FuIGJlCmRp ZmYgLS1naXQgYS9nY2MvY29uZmlnL252cHR4L21rb2ZmbG9hZC5jYyBiL2djYy9jb25maWcv bnZwdHgvbWtvZmZsb2FkLmNjCmluZGV4IGIyOGMxYTMyMjkyLi5mYTNiNGI3NjgyMSAxMDA2 NDQKLS0tIGEvZ2NjL2NvbmZpZy9udnB0eC9ta29mZmxvYWQuY2MKKysrIGIvZ2NjL2NvbmZp Zy9udnB0eC9ta29mZmxvYWQuY2MKQEAgLTMxNiwxMSArMzE2LDExIEBAIHByb2Nlc3MgKEZJ TEUgKmluLCBGSUxFICpvdXQpCiAJICAgIiAgY29uc3Qgc3RydWN0IG52cHR4X2ZuICpmbl9u YW1lcztcbiIKIAkgICAiICB1bnNpZ25lZCBmbl9udW07XG4iCiAJICAgIn0gdGFyZ2V0X2Rh dGEgPSB7XG4iCi0JICAgIiAgcHR4X29ianMsIHNpemVvZiAocHR4X29ianMpIC8gc2l6ZW9m IChwdHhfb2Jqc1swXSksXG4iCisJICAgIiAgcHR4X29ianMsIEFSUkFZX1NJWkUgKHB0eF9v YmpzKSxcbiIKIAkgICAiICB2YXJfbWFwcGluZ3MsIgotCSAgICIgIHNpemVvZiAodmFyX21h cHBpbmdzKSAvIHNpemVvZiAodmFyX21hcHBpbmdzWzBdKSxcbiIKKwkgICAiICBBUlJBWV9T SVpFICh2YXJfbWFwcGluZ3MpLFxuIgogCSAgICIgIGZ1bmNfbWFwcGluZ3MsIgotCSAgICIg IHNpemVvZiAoZnVuY19tYXBwaW5ncykgLyBzaXplb2YgKGZ1bmNfbWFwcGluZ3NbMF0pXG4i CisJICAgIiAgQVJSQVlfU0laRSAoZnVuY19tYXBwaW5ncylcbiIKIAkgICAifTtcblxuIik7 CiAKICAgZnByaW50ZiAob3V0LCAiI2lmZGVmIF9fY3BsdXNwbHVzXG4iCmRpZmYgLS1naXQg YS9nY2MvY29uZmlnL3JzNjAwMC9kcml2ZXItcnM2MDAwLmNjIGIvZ2NjL2NvbmZpZy9yczYw MDAvZHJpdmVyLXJzNjAwMC5jYwppbmRleCBlYzg5MGUwZGIzYS4uYjg3MWYwYTM2YTggMTAw NjQ0Ci0tLSBhL2djYy9jb25maWcvcnM2MDAwL2RyaXZlci1yczYwMDAuY2MKKysrIGIvZ2Nj L2NvbmZpZy9yczYwMDAvZHJpdmVyLXJzNjAwMC5jYwpAQCAtNTk5LDcgKzU5OSw3IEBAIGhv c3RfZGV0ZWN0X2xvY2FsX2NwdSAoaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2KQogCiAg IGlmIChhc3NlbWJsZXIpCiAgICAgewotICAgICAgZm9yIChpID0gMDsgaSA8IHNpemVvZiAo YXNtX25hbWVzKSAvIHNpemVvZiAoYXNtX25hbWVzWzBdKTsgaSsrKQorICAgICAgZm9yIChp ID0gMDsgaSA8IEFSUkFZX1NJWkUgKGFzbV9uYW1lcyk7IGkrKykKIAl7CiAJICBpZiAoIWFz bV9uYW1lc1tpXS5jcHUgfHwgIXN0cmNtcCAoYXNtX25hbWVzW2ldLmNwdSwgY3B1KSkKIAkg ICAgcmV0dXJuIGFzbV9uYW1lc1tpXS5hc21fc3c7CmRpZmYgLS1naXQgYS9nY2MvY29uZmln L3MzOTAvczM5MC5jYyBiL2djYy9jb25maWcvczM5MC9zMzkwLmNjCmluZGV4IDdjM2JkNmNi ZTdmLi45MGNhNTA1MTVhNyAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy9zMzkwL3MzOTAuY2MK KysrIGIvZ2NjL2NvbmZpZy9zMzkwL3MzOTAuY2MKQEAgLTg3NjgsNyArODc2OCw3IEBAIHN0 YXRpYyBtYWNoaW5lX21vZGUgY29uc3RhbnRfbW9kZXNbXSA9CiAgIFFJbW9kZSwKICAgVjFR SW1vZGUKIH07Ci0jZGVmaW5lIE5SX0NfTU9ERVMgKHNpemVvZiAoY29uc3RhbnRfbW9kZXMp IC8gc2l6ZW9mIChjb25zdGFudF9tb2Rlc1swXSkpCisjZGVmaW5lIE5SX0NfTU9ERVMgKEFS UkFZX1NJWkUgKGNvbnN0YW50X21vZGVzKSkKIAogc3RydWN0IGNvbnN0YW50CiB7CmRpZmYg LS1naXQgYS9nY2MvY29uZmlnL3RpbGVwcm8vZ2VuLW11bC10YWJsZXMuY2MgYi9nY2MvY29u ZmlnL3RpbGVwcm8vZ2VuLW11bC10YWJsZXMuY2MKaW5kZXggYzk2NDlmYjljNzAuLjc5ODc2 NmE3MjNiIDEwMDY0NAotLS0gYS9nY2MvY29uZmlnL3RpbGVwcm8vZ2VuLW11bC10YWJsZXMu Y2MKKysrIGIvZ2NjL2NvbmZpZy90aWxlcHJvL2dlbi1tdWwtdGFibGVzLmNjCkBAIC00NjIs NyArNDYyLDcgQEAgZmluZF9zZXF1ZW5jZXMgKEV4cHJlc3Npb25UcmVlICZzLCBFeHByZXNz aW9uVHJlZU1hcCAmYmVzdF9zb2x1dGlvbikKICAgY29uc3QgT3BlcmF0b3IgKmNvbnN0IHBy ZXZfb3AgPSBzLm1fZXhwcnNbbnVtX3ZhbHMgLSAxXS5tX29wOwogICBjb25zdCBpbnQgcHJl dl90b3BfaW5kZXggPSAocHJldl9vcCAhPSBOVUxMKSA/IHByZXZfb3AtPm1fdG9wX2luZGV4 IDogLTE7CiAKLSAgZm9yIChzaXplX3QgZiA9IDA7IGYgPCBzaXplb2Ygb3BzIC8gc2l6ZW9m IG9wc1swXTsgZisrKQorICBmb3IgKHNpemVfdCBmID0gMDsgZiA8IEFSUkFZX1NJWkUgKG9w cyk7IGYrKykKICAgICB7CiAgICAgICBjb25zdCBPcGVyYXRvciAqY29uc3Qgb3AgPSAmb3Bz W2ZdOwogCkBAIC01NjQsNyArNTY0LDcgQEAgY3JlYXRlX2luc25fY29kZV9jb21wcmVzc2lv bl90YWJsZSAoKQogICBwcmludGYgKCJjb25zdCBlbnVtIGluc25fY29kZSAlc19tdWx0aXBs eV9pbnNuX3NlcV9kZWNvZGVfb3Bjb2RlW10gPSB7XG4iCiAJICAiICBDT0RFX0ZPUl9ub3Ro aW5nIC8qIG11c3QgYmUgZmlyc3QgKi8gIiwgQVJDSCk7CiAKLSAgZm9yIChzaXplX3QgaSA9 IDA7IGkgPCBzaXplb2Ygb3BzIC8gc2l6ZW9mIG9wc1swXTsgaSsrKQorICBmb3IgKHNpemVf dCBpID0gMDsgaSA8IEFSUkFZX1NJWkUgKG9wcyk7IGkrKykKICAgICB7CiAgICAgICBPcGVy YXRvciAqb3AgPSAmb3BzW2ldOwogICAgICAgaW50IGluZGV4ID0gLTE7CmRpZmYgLS1naXQg YS9nY2MvY29uZmlnL3Ztcy92bXMuY2MgYi9nY2MvY29uZmlnL3Ztcy92bXMuY2MKaW5kZXgg NWQ1NjVlMzVmYjQuLmQwZDQ0YmFkMmNlIDEwMDY0NAotLS0gYS9nY2MvY29uZmlnL3Ztcy92 bXMuY2MKKysrIGIvZ2NjL2NvbmZpZy92bXMvdm1zLmNjCkBAIC05OSw3ICs5OSw3IEBAIHN0 YXRpYyBjb25zdCBzdHJ1Y3Qgdm1zX2NydGxfbmFtZSB2bXNfY3J0bF9uYW1lc1tdID0KIAog LyogTnVtYmVyIG9mIGVudGlyZXMgaW4gdGhlIGFib3ZlIGFycmF5LiAgKi8KIAotI2RlZmlu ZSBOQlJfQ1JUTF9OQU1FUyAoc2l6ZW9mICh2bXNfY3J0bF9uYW1lcykgLyBzaXplb2YgKCp2 bXNfY3J0bF9uYW1lcykpCisjZGVmaW5lIE5CUl9DUlRMX05BTUVTIChBUlJBWV9TSVpFICh2 bXNfY3J0bF9uYW1lcykpCiAKIC8qIExpc3Qgb2YgYWxpYXNlZCBpZGVudGlmaWVycy4gIFRo ZXkgbXVzdCBiZSBwZXJzaXN0ZW50IGFjcm9zcyBnYy4gICovCiAKZGlmZiAtLWdpdCBhL2dj Yy9jcC9tb2R1bGUuY2MgYi9nY2MvY3AvbW9kdWxlLmNjCmluZGV4IDE4ZGFiZmNjOWFjLi5m MGY1N2IxYzY5MCAxMDA2NDQKLS0tIGEvZ2NjL2NwL21vZHVsZS5jYworKysgYi9nY2MvY3Av bW9kdWxlLmNjCkBAIC0yNjE1LDcgKzI2MTUsNyBAQCBkZXBzZXQ6OmVudGl0eV9raW5kX25h bWUgKCkgY29uc3QKICAgICB7ImRlY2wiLCAic3BlY2lhbGl6YXRpb24iLCAicGFydGlhbCIs ICJ1c2luZyIsCiAgICAgICJuYW1lc3BhY2UiLCAicmVkaXJlY3QiLCAiYmluZGluZyJ9Owog ICBlbnRpdHlfa2luZCBraW5kID0gZ2V0X2VudGl0eV9raW5kICgpOwotICBnY2NfY2hlY2tp bmdfYXNzZXJ0IChraW5kIDwgc2l6ZW9mIChuYW1lcykgLyBzaXplb2YobmFtZXNbMF0pKTsK KyAgZ2NjX2NoZWNraW5nX2Fzc2VydCAoa2luZCA8IEFSUkFZX1NJWkUgKG5hbWVzKSk7CiAg IHJldHVybiBuYW1lc1traW5kXTsKIH0KIApkaWZmIC0tZ2l0IGEvZ2NjL2NwL25hbWUtbG9v a3VwLmNjIGIvZ2NjL2NwL25hbWUtbG9va3VwLmNjCmluZGV4IDdiMDYzOGQzMTY2Li4wNWYy OWNlYmFjMiAxMDA2NDQKLS0tIGEvZ2NjL2NwL25hbWUtbG9va3VwLmNjCisrKyBiL2djYy9j cC9uYW1lLWxvb2t1cC5jYwpAQCAtNjkxNSw3ICs2OTE1LDcgQEAgZ2V0X3N0ZF9uYW1lX2hp bnQgKGNvbnN0IGNoYXIgKm5hbWUpCiAgICAgLyogPHZlY3Rvcj4uICAqLwogICAgIHsidmVj dG9yIiwgIjx2ZWN0b3I+IiwgY3h4OTh9LAogICB9OwotICBjb25zdCBzaXplX3QgbnVtX2hp bnRzID0gc2l6ZW9mIChoaW50cykgLyBzaXplb2YgKGhpbnRzWzBdKTsKKyAgY29uc3Qgc2l6 ZV90IG51bV9oaW50cyA9IEFSUkFZX1NJWkUgKGhpbnRzKTsKICAgZm9yIChzaXplX3QgaSA9 IDA7IGkgPCBudW1faGludHM7IGkrKykKICAgICB7CiAgICAgICBpZiAoc3RyY21wIChuYW1l LCBoaW50c1tpXS5uYW1lKSA9PSAwKQpkaWZmIC0tZ2l0IGEvZ2NjL2NwL3BhcnNlci5jYyBi L2djYy9jcC9wYXJzZXIuY2MKaW5kZXggYjUyY2JlMThiOWEuLjNmZjgxYThhMDg2IDEwMDY0 NAotLS0gYS9nY2MvY3AvcGFyc2VyLmNjCisrKyBiL2djYy9jcC9wYXJzZXIuY2MKQEAgLTQy MDAsNyArNDIwMCw3IEBAIGNwX3BhcnNlcl9uZXcgKGNwX2xleGVyICpsZXhlcikKIHsKICAg LyogSW5pdGlhbGl6ZSB0aGUgYmlub3BzX2J5X3Rva2VuIHNvIHRoYXQgd2UgY2FuIGdldCB0 aGUgdHJlZQogICAgICBkaXJlY3RseSBmcm9tIHRoZSB0b2tlbi4gICovCi0gIGZvciAodW5z aWduZWQgaSA9IDA7IGkgPCBzaXplb2YgKGJpbm9wcykgLyBzaXplb2YgKGJpbm9wc1swXSk7 IGkrKykKKyAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEFSUkFZX1NJWkUgKGJpbm9wcyk7 IGkrKykKICAgICBiaW5vcHNfYnlfdG9rZW5bYmlub3BzW2ldLnRva2VuX3R5cGVdID0gYmlu b3BzW2ldOwogCiAgIGNwX3BhcnNlciAqcGFyc2VyID0gZ2djX2NsZWFyZWRfYWxsb2M8Y3Bf cGFyc2VyPiAoKTsKZGlmZiAtLWdpdCBhL2djYy9kaWFnbm9zdGljLWZvcm1hdC1qc29uLmNj IGIvZ2NjL2RpYWdub3N0aWMtZm9ybWF0LWpzb24uY2MKaW5kZXggZGVmMzcxODE2ZTYuLjYy NTk0ZWJiNGQ3IDEwMDY0NAotLS0gYS9nY2MvZGlhZ25vc3RpYy1mb3JtYXQtanNvbi5jYwor KysgYi9nY2MvZGlhZ25vc3RpYy1mb3JtYXQtanNvbi5jYwpAQCAtNjIsNyArNjIsNyBAQCBq c29uX2Zyb21fZXhwYW5kZWRfbG9jYXRpb24gKGRpYWdub3N0aWNfY29udGV4dCAqY29udGV4 dCwgbG9jYXRpb25fdCBsb2MpCiAgICAgeyJieXRlLWNvbHVtbiIsIERJQUdOT1NUSUNTX0NP TFVNTl9VTklUX0JZVEV9CiAgIH07CiAgIGludCB0aGVfY29sdW1uID0gSU5UX01JTjsKLSAg Zm9yIChpbnQgaSA9IDA7IGkgIT0gc2l6ZW9mIGNvbHVtbl9maWVsZHMgLyBzaXplb2YgKCpj b2x1bW5fZmllbGRzKTsgKytpKQorICBmb3IgKGludCBpID0gMDsgaSAhPSBBUlJBWV9TSVpF IChjb2x1bW5fZmllbGRzKTsgKytpKQogICAgIHsKICAgICAgIGNvbnRleHQtPmNvbHVtbl91 bml0ID0gY29sdW1uX2ZpZWxkc1tpXS51bml0OwogICAgICAgY29uc3QgaW50IGNvbCA9IGRp YWdub3N0aWNfY29udmVydGVkX2NvbHVtbiAoY29udGV4dCwgZXhwbG9jKTsKZGlmZiAtLWdp dCBhL2djYy9kd2FyZjJvdXQuY2MgYi9nY2MvZHdhcmYyb3V0LmNjCmluZGV4IDU2ODFiMDE3 NDlhLi40ZWY2NDRjNWZhZSAxMDA2NDQKLS0tIGEvZ2NjL2R3YXJmMm91dC5jYworKysgYi9n Y2MvZHdhcmYyb3V0LmNjCkBAIC0xMzUzMiw4ICsxMzUzMiw3IEBAIHN0YXRpYyBjb25zdCBk d2FyZl9xdWFsX2luZm9fdCBkd2FyZl9xdWFsX2luZm9bXSA9CiAgIHsgVFlQRV9RVUFMX1JF U1RSSUNULCBEV19UQUdfcmVzdHJpY3RfdHlwZSB9LAogICB7IFRZUEVfUVVBTF9BVE9NSUMs IERXX1RBR19hdG9taWNfdHlwZSB9CiB9Owotc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBk d2FyZl9xdWFsX2luZm9fc2l6ZQotICA9IHNpemVvZiAoZHdhcmZfcXVhbF9pbmZvKSAvIHNp emVvZiAoZHdhcmZfcXVhbF9pbmZvWzBdKTsKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQg ZHdhcmZfcXVhbF9pbmZvX3NpemUgPSBBUlJBWV9TSVpFIChkd2FyZl9xdWFsX2luZm8pOwog CiAvKiBJZiBESUUgaXMgYSBxdWFsaWZpZWQgRElFIG9mIHNvbWUgYmFzZSBESUUgd2l0aCB0 aGUgc2FtZSBwYXJlbnQsCiAgICByZXR1cm4gdGhlIGJhc2UgRElFLCBvdGhlcndpc2UgcmV0 dXJuIE5VTEwuICBTZXQgTUFTSyB0byB0aGUKZGlmZiAtLWdpdCBhL2djYy9mb3J0cmFuL2Zy b250ZW5kLXBhc3Nlcy5jYyBiL2djYy9mb3J0cmFuL2Zyb250ZW5kLXBhc3Nlcy5jYwppbmRl eCA1ZWJhNjM0NTE0NS4uNjEyYzEyZDIzM2QgMTAwNjQ0Ci0tLSBhL2djYy9mb3J0cmFuL2Zy b250ZW5kLXBhc3Nlcy5jYworKysgYi9nY2MvZm9ydHJhbi9mcm9udGVuZC1wYXNzZXMuY2MK QEAgLTU2NTQsOSArNTY1NCw3IEBAIGdmY19jb2RlX3dhbGtlciAoZ2ZjX2NvZGUgKipjLCB3 YWxrX2NvZGVfZm5fdCBjb2RlZm4sIHdhbGtfZXhwcl9mbl90IGV4cHJmbiwKIAkJICBXQUxL X1NVQkVYUFIgKGNvLT5leHQub21wX2NsYXVzZXMtPmRldGFjaCk7CiAJCSAgZm9yIChpZHgg PSAwOyBpZHggPCBPTVBfSUZfTEFTVDsgaWR4KyspCiAJCSAgICBXQUxLX1NVQkVYUFIgKGNv LT5leHQub21wX2NsYXVzZXMtPmlmX2V4cHJzW2lkeF0pOwotCQkgIGZvciAoaWR4ID0gMDsK LQkJICAgICAgIGlkeCA8IHNpemVvZiAobGlzdF90eXBlcykgLyBzaXplb2YgKGxpc3RfdHlw ZXNbMF0pOwotCQkgICAgICAgaWR4KyspCisJCSAgZm9yIChpZHggPSAwOyBpZHggPCBBUlJB WV9TSVpFIChsaXN0X3R5cGVzKTsgaWR4KyspCiAJCSAgICBmb3IgKG4gPSBjby0+ZXh0Lm9t cF9jbGF1c2VzLT5saXN0c1tsaXN0X3R5cGVzW2lkeF1dOwogCQkJIG47IG4gPSBuLT5uZXh0 KQogCQkgICAgICBXQUxLX1NVQkVYUFIgKG4tPmV4cHIpOwpkaWZmIC0tZ2l0IGEvZ2NjL2Zv cnRyYW4vb3Blbm1wLmNjIGIvZ2NjL2ZvcnRyYW4vb3Blbm1wLmNjCmluZGV4IDcxNDE0ODEz OGMyLi41YjNkMGJkMDcwOSAxMDA2NDQKLS0tIGEvZ2NjL2ZvcnRyYW4vb3Blbm1wLmNjCisr KyBiL2djYy9mb3J0cmFuL29wZW5tcC5jYwpAQCAtNDkwMiw4ICs0OTAyLDcgQEAgZ2ZjX21h dGNoX29tcF9jb250ZXh0X3NlbGVjdG9yX3NwZWNpZmljYXRpb24gKGdmY19vbXBfZGVjbGFy ZV92YXJpYW50ICpvZHYpCiAgICAgICBtYXRjaCBtOwogICAgICAgY29uc3QgY2hhciAqc2Vs ZWN0b3Jfc2V0c1tdID0geyAiY29uc3RydWN0IiwgImRldmljZSIsCiAJCQkJICAgICAgImlt cGxlbWVudGF0aW9uIiwgInVzZXIiIH07Ci0gICAgICBjb25zdCBpbnQgc2VsZWN0b3Jfc2V0 X2NvdW50Ci0JPSBzaXplb2YgKHNlbGVjdG9yX3NldHMpIC8gc2l6ZW9mICgqc2VsZWN0b3Jf c2V0cyk7CisgICAgICBjb25zdCBpbnQgc2VsZWN0b3Jfc2V0X2NvdW50ID0gQVJSQVlfU0la RSAoc2VsZWN0b3Jfc2V0cyk7CiAgICAgICBpbnQgaTsKICAgICAgIGNoYXIgYnVmW0dGQ19N QVhfU1lNQk9MX0xFTiArIDFdOwogCmRpZmYgLS1naXQgYS9nY2MvZm9ydHJhbi90cmFucy1p bnRyaW5zaWMuY2MgYi9nY2MvZm9ydHJhbi90cmFucy1pbnRyaW5zaWMuY2MKaW5kZXggMjI0 OTcyMzU0MGQuLjY4ODQwNjBmZDZmIDEwMDY0NAotLS0gYS9nY2MvZm9ydHJhbi90cmFucy1p bnRyaW5zaWMuY2MKKysrIGIvZ2NjL2ZvcnRyYW4vdHJhbnMtaW50cmluc2ljLmNjCkBAIC05 Nzg0LDcgKzk3ODQsNyBAQCBjb252X2ludHJpbnNpY19pZWVlX2J1aWx0aW4gKGdmY19zZSAq IHNlLCBnZmNfZXhwciAqIGV4cHIsCiAJCQkgICAgIGVudW0gYnVpbHRfaW5fZnVuY3Rpb24g Y29kZSwgaW50IG5hcmdzKQogewogICB0cmVlIGFyZ3NbMl07Ci0gIGdjY19hc3NlcnQgKCh1 bnNpZ25lZCkgbmFyZ3MgPD0gc2l6ZW9mKGFyZ3MpL3NpemVvZihhcmdzWzBdKSk7CisgIGdj Y19hc3NlcnQgKCh1bnNpZ25lZCkgbmFyZ3MgPD0gQVJSQVlfU0laRSAoYXJncykpOwogCiAg IGNvbnZfaWVlZV9mdW5jdGlvbl9hcmdzIChzZSwgZXhwciwgYXJncywgbmFyZ3MpOwogICBz ZS0+ZXhwciA9IGJ1aWxkX2NhbGxfZXhwcl9sb2NfYXJyYXkgKGlucHV0X2xvY2F0aW9uLApk aWZmIC0tZ2l0IGEvZ2NjL2ZvcnRyYW4vdHJhbnMtdHlwZXMuY2MgYi9nY2MvZm9ydHJhbi90 cmFucy10eXBlcy5jYwppbmRleCAzY2RjNTI5ZWIyOC4uMzc0MmJmMzEyY2QgMTAwNjQ0Ci0t LSBhL2djYy9mb3J0cmFuL3RyYW5zLXR5cGVzLmNjCisrKyBiL2djYy9mb3J0cmFuL3RyYW5z LXR5cGVzLmNjCkBAIC0zNDIwLDcgKzM0MjAsNyBAQCBnZmNfZ2V0X2FycmF5X2Rlc2NyX2lu Zm8gKGNvbnN0X3RyZWUgdHlwZSwgc3RydWN0IGFycmF5X2Rlc2NyX2luZm8gKmluZm8pCiAg ICAgfQogCiAgIHJhbmsgPSBHRkNfVFlQRV9BUlJBWV9SQU5LICh0eXBlKTsKLSAgaWYgKHJh bmsgPj0gKGludCkgKHNpemVvZiAoaW5mby0+ZGltZW4pIC8gc2l6ZW9mIChpbmZvLT5kaW1l blswXSkpKQorICBpZiAocmFuayA+PSAoaW50KSAoQVJSQVlfU0laRSAoaW5mby0+ZGltZW4p KSkKICAgICByZXR1cm4gZmFsc2U7CiAKICAgZXR5cGUgPSBHRkNfVFlQRV9BUlJBWV9EQVRB UFRSX1RZUEUgKHR5cGUpOwpkaWZmIC0tZ2l0IGEvZ2NjL2dlbmhvb2tzLmNjIGIvZ2NjL2dl bmhvb2tzLmNjCmluZGV4IDIwYWQ2MDdiMTU4Li42YmFlODVkN2I4ZCAxMDA2NDQKLS0tIGEv Z2NjL2dlbmhvb2tzLmNjCisrKyBiL2djYy9nZW5ob29rcy5jYwpAQCAtMTI4LDcgKzEyOCw3 IEBAIGVtaXRfZG9jdW1lbnRhdGlvbiAoY29uc3QgY2hhciAqaW5fZm5hbWUpCiAgICAgfQog ICBmY2xvc2UgKGYpOwogICAvKiBGb3IgZWFjaCBob29rIGluIGhvb2tfYXJyYXksIGlmIGl0 IGlzIGEgc3RhcnQgaG9vaywgc3RvcmUgaXRzIHBvc2l0aW9uLiAgKi8KLSAgZm9yIChpID0g MDsgaSA8IChpbnQpIChzaXplb2YgaG9va19hcnJheSAvIHNpemVvZiBob29rX2FycmF5WzBd KTsgaSsrKQorICBmb3IgKGkgPSAwOyBpIDwgKGludCkgKEFSUkFZX1NJWkUgKGhvb2tfYXJy YXkpKTsgaSsrKQogICAgIHsKICAgICAgIHN0cnVjdCBzX2hvb2sgc2gsICpzaHA7CiAgICAg ICB2b2lkICpwOwpAQCAtMjIzLDcgKzIyMyw3IEBAIGVtaXRfZG9jdW1lbnRhdGlvbiAoY29u c3QgY2hhciAqaW5fZm5hbWUpCiAJICAgICAgLyogUE9ELXZhbHVlZCBob29rcyBzb21ldGlt ZXMgY29tZSBpbiBncm91cHMgd2l0aCBjb21tb24KIAkJIGRvY3VtZW50YXRpb24uKi8KIAkg ICAgICBmb3IgKGogPSBpICsgMTsKLQkJICAgaiA8IChpbnQpIChzaXplb2YgaG9va19hcnJh eSAvIHNpemVvZiBob29rX2FycmF5WzBdKQorCQkgICBqIDwgKGludCkgKEFSUkFZX1NJWkUg KGhvb2tfYXJyYXkpKQogCQkgICAmJiBob29rX2FycmF5W2pdLmRvYyA9PSAwICYmIGhvb2tf YXJyYXlbal0udHlwZTsgaisrKQogCQl7CiAJCSAgY2hhciAqbmFtZXggPSB1cHN0cmR1cCAo aG9va19hcnJheVtqXS5uYW1lKTsKQEAgLTI0Niw4ICsyNDYsNyBAQCBlbWl0X2RvY3VtZW50 YXRpb24gKGNvbnN0IGNoYXIgKmluX2ZuYW1lKQogCQkgIHByaW50ZiAoIlxuQGVuZCAlcyIs IGRlZnR5cGUpOwogCQl9CiAJICAgIH0KLQkgIGlmICgrK2kgPj0gKGludCkgKHNpemVvZiBo b29rX2FycmF5IC8gc2l6ZW9mIGhvb2tfYXJyYXlbMF0pCi0JICAgICAgfHwgIWhvb2tfYXJy YXlbaV0uZG9jKQorCSAgaWYgKCsraSA+PSAoaW50KSAoQVJSQVlfU0laRSAoaG9va19hcnJh eSkpIHx8ICFob29rX2FycmF5W2ldLmRvYykKIAkgICAgYnJlYWs7CiAJICBmcmVlIChuYW1l KTsKIAkgIHNoLm5hbWUgPSBuYW1lID0gdXBzdHJkdXAgKGhvb2tfYXJyYXlbaV0ubmFtZSk7 CkBAIC0yNzAsNyArMjY5LDcgQEAgZW1pdF9pbml0X21hY3JvcyAoY29uc3QgY2hhciAqZG9j bmFtZSkKIAogICBmb3IgKHByaW50X25lc3QgPSAwOyBwcmludF9uZXN0IDw9IE1BWF9ORVNU OyBwcmludF9uZXN0KyspCiAgICAgewotICAgICAgZm9yIChpID0gMDsgaSA8IChpbnQpIChz aXplb2YgaG9va19hcnJheSAvIHNpemVvZiBob29rX2FycmF5WzBdKTsgaSsrKQorICAgICAg Zm9yIChpID0gMDsgaSA8IChpbnQpIChBUlJBWV9TSVpFIChob29rX2FycmF5KSk7IGkrKykK IAl7CiAJICBjaGFyICpuYW1lID0gdXBzdHJkdXAgKGhvb2tfYXJyYXlbaV0ubmFtZSk7CiAK ZGlmZiAtLWdpdCBhL2djYy9naW1wbGUtc3NhLXNwcmludGYuY2MgYi9nY2MvZ2ltcGxlLXNz YS1zcHJpbnRmLmNjCmluZGV4IDlhODRmZmZlZDFhLi5lYjA1YmU4YzBlZCAxMDA2NDQKLS0t IGEvZ2NjL2dpbXBsZS1zc2Etc3ByaW50Zi5jYworKysgYi9nY2MvZ2ltcGxlLXNzYS1zcHJp bnRmLmNjCkBAIC0xOTUzLDcgKzE5NTMsNyBAQCBmb3JtYXRfZmxvYXRpbmcgKGNvbnN0IGRp cmVjdGl2ZSAmZGlyLCB0cmVlIGFyZywgcG9pbnRlcl9xdWVyeSAmKQogICAgICAgJnJlcy5y YW5nZS5taW4sICZyZXMucmFuZ2UubWF4CiAgICAgfTsKIAotICAgIGZvciAoaW50IGkgPSAw OyBpICE9IHNpemVvZiBtaW5tYXggLyBzaXplb2YgKm1pbm1heDsgKytpKQorICAgIGZvciAo aW50IGkgPSAwOyBpICE9IEFSUkFZX1NJWkUgKG1pbm1heCk7ICsraSkKICAgICAgIHsKIAkv KiBDb252ZXJ0IHRoZSBHQ0MgcmVhbCB2YWx1ZSByZXByZXNlbnRhdGlvbiB3aXRoIHRoZSBw cmVjaXNpb24KIAkgICBvZiB0aGUgcmVhbCB0eXBlIHRvIHRoZSBtcGZyX3QgZm9ybWF0IHJv dW5kaW5nIGRvd24gaW4gdGhlCmRpZmYgLS1naXQgYS9nY2MvZ2ltcGxlLXNzYS13YXJuLWFj Y2Vzcy5jYyBiL2djYy9naW1wbGUtc3NhLXdhcm4tYWNjZXNzLmNjCmluZGV4IDM5YWE4MTg2 ZGU2Li5lYzQ1OGIwYzBkMyAxMDA2NDQKLS0tIGEvZ2NjL2dpbXBsZS1zc2Etd2Fybi1hY2Nl c3MuY2MKKysrIGIvZ2NjL2dpbXBsZS1zc2Etd2Fybi1hY2Nlc3MuY2MKQEAgLTI4NTMsNyAr Mjg1Myw3IEBAIG1lbW1vZGVsX25hbWUgKHVuc2lnbmVkIEhPU1RfV0lERV9JTlQgdmFsKQog ewogICB2YWwgPSBtZW1tb2RlbF9iYXNlICh2YWwpOwogCi0gIGZvciAodW5zaWduZWQgaSA9 IDA7IGkgIT0gc2l6ZW9mIG1lbW9yeV9tb2RlbHMgLyBzaXplb2YgKm1lbW9yeV9tb2RlbHM7 ICsraSkKKyAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSAhPSBBUlJBWV9TSVpFIChtZW1vcnlf bW9kZWxzKTsgKytpKQogICAgIHsKICAgICAgIGlmICh2YWwgPT0gbWVtb3J5X21vZGVsc1tp XS5tb2R2YWwpCiAJcmV0dXJuIG1lbW9yeV9tb2RlbHNbaV0ubW9kbmFtZTsKZGlmZiAtLWdp dCBhL2djYy9nb2R1bXAuY2MgYi9nY2MvZ29kdW1wLmNjCmluZGV4IDY2OTE2ODgwNmYzLi4y YWUwYmNjOTY3MiAxMDA2NDQKLS0tIGEvZ2NjL2dvZHVtcC5jYworKysgYi9nY2MvZ29kdW1w LmNjCkBAIC0xMzI2LDcgKzEzMjYsNyBAQCBzdGF0aWMgdm9pZAoga2V5d29yZF9oYXNoX2lu aXQgKGNsYXNzIGdvZHVtcF9jb250YWluZXIgKmNvbnRhaW5lcikKIHsKICAgc2l6ZV90IGk7 Ci0gIHNpemVfdCBjb3VudCA9IHNpemVvZiAoa2V5d29yZHMpIC8gc2l6ZW9mIChrZXl3b3Jk c1swXSk7CisgIHNpemVfdCBjb3VudCA9IEFSUkFZX1NJWkUgKGtleXdvcmRzKTsKICAgdm9p ZCAqKnNsb3Q7CiAKICAgZm9yIChpID0gMDsgaSA8IGNvdW50OyBpKyspCmRpZmYgLS1naXQg YS9nY2MvaGFzaC10YWJsZS5jYyBiL2djYy9oYXNoLXRhYmxlLmNjCmluZGV4IGRhZDFkMjFm MDk5Li4xMDE1YzFlZTZlOSAxMDA2NDQKLS0tIGEvZ2NjL2hhc2gtdGFibGUuY2MKKysrIGIv Z2NjL2hhc2gtdGFibGUuY2MKQEAgLTg0LDcgKzg0LDcgQEAgdW5zaWduZWQgaW50CiBoYXNo X3RhYmxlX2hpZ2hlcl9wcmltZV9pbmRleCAodW5zaWduZWQgbG9uZyBuKQogewogICB1bnNp Z25lZCBpbnQgbG93ID0gMDsKLSAgdW5zaWduZWQgaW50IGhpZ2ggPSBzaXplb2YgKHByaW1l X3RhYikgLyBzaXplb2YgKHByaW1lX3RhYlswXSk7CisgIHVuc2lnbmVkIGludCBoaWdoID0g QVJSQVlfU0laRSAocHJpbWVfdGFiKTsKIAogICB3aGlsZSAobG93ICE9IGhpZ2gpCiAgICAg ewpkaWZmIC0tZ2l0IGEvZ2NjL2lucHV0LmNjIGIvZ2NjL2lucHV0LmNjCmluZGV4IGIzOTcw NjEzZDgxLi41OGJlYmEwNTA3MiAxMDA2NDQKLS0tIGEvZ2NjL2lucHV0LmNjCisrKyBiL2dj Yy9pbnB1dC5jYwpAQCAtMzcyNCw4ICszNzI0LDcgQEAgZm9yX2VhY2hfbGluZV90YWJsZV9j YXNlICh2b2lkICgqdGVzdGNhc2UpIChjb25zdCBsaW5lX3RhYmxlX2Nhc2UgJikpCiAgICAg ewogICAgICAgLyogLi4uYW5kIHVzZSBlYWNoIG9mIHRoZSAiaW50ZXJlc3RpbmciIGxvY2F0 aW9uIHZhbHVlcyBhcwogCSB0aGUgc3RhcnRpbmcgbG9jYXRpb24gd2l0aGluIGxpbmVfdGFi bGUuICAqLwotICAgICAgY29uc3QgaW50IG51bV9ib3VuZGFyeV9sb2NhdGlvbnMKLQk9IHNp emVvZiAoYm91bmRhcnlfbG9jYXRpb25zKSAvIHNpemVvZiAoYm91bmRhcnlfbG9jYXRpb25z WzBdKTsKKyAgICAgIGNvbnN0IGludCBudW1fYm91bmRhcnlfbG9jYXRpb25zID0gQVJSQVlf U0laRSAoYm91bmRhcnlfbG9jYXRpb25zKTsKICAgICAgIGZvciAoaW50IGxvY19pZHggPSAw OyBsb2NfaWR4IDwgbnVtX2JvdW5kYXJ5X2xvY2F0aW9uczsgbG9jX2lkeCsrKQogCXsKIAkg IGxpbmVfdGFibGVfY2FzZSBjIChkZWZhdWx0X3JhbmdlX2JpdHMsIGJvdW5kYXJ5X2xvY2F0 aW9uc1tsb2NfaWR4XSk7CmRpZmYgLS1naXQgYS9nY2MvaXBhLWZyZWUtbGFuZy1kYXRhLmNj IGIvZ2NjL2lwYS1mcmVlLWxhbmctZGF0YS5jYwppbmRleCBhNzQyMTU2ODU4Yy4uZjk5Zjdi ZTFjNTggMTAwNjQ0Ci0tLSBhL2djYy9pcGEtZnJlZS1sYW5nLWRhdGEuY2MKKysrIGIvZ2Nj L2lwYS1mcmVlLWxhbmctZGF0YS5jYwpAQCAtMTEwOSw5ICsxMTA5LDcgQEAgZnJlZV9sYW5n X2RhdGEgKHZvaWQpCiAgIGZyZWVfbGFuZ19kYXRhX2luX2NncmFwaCAoJmZsZCk7CiAKICAg LyogQ3JlYXRlIGdpbXBsZSB2YXJpYW50cyBmb3IgY29tbW9uIHR5cGVzLiAgKi8KLSAgZm9y ICh1bnNpZ25lZCBpID0gMDsKLSAgICAgICBpIDwgc2l6ZW9mIChidWlsdGluX3N0cnVjdHB0 cl90eXBlcykgLyBzaXplb2YgKGJ1aWx0aW5fc3RydWN0cHRyX3R5cGUpOwotICAgICAgICsr aSkKKyAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEFSUkFZX1NJWkUgKGJ1aWx0aW5fc3Ry dWN0cHRyX3R5cGVzKTsgKytpKQogICAgIGJ1aWx0aW5fc3RydWN0cHRyX3R5cGVzW2ldLm5v ZGUgPSBidWlsdGluX3N0cnVjdHB0cl90eXBlc1tpXS5iYXNlOwogCiAgIC8qIFJlc2V0IHNv bWUgbGFuZ2hvb2tzLiAgRG8gbm90IHJlc2V0IHR5cGVzX2NvbXBhdGlibGVfcCwgaXQgbWF5 CmRpZmYgLS1naXQgYS9nY2MvaXBhLWlubGluZS5jYyBiL2djYy9pcGEtaW5saW5lLmNjCmlu ZGV4IGY4YmIwNzJjNDIyLi4yMmEwMDliNzQzNSAxMDA2NDQKLS0tIGEvZ2NjL2lwYS1pbmxp bmUuY2MKKysrIGIvZ2NjL2lwYS1pbmxpbmUuY2MKQEAgLTI3OCw3ICsyNzgsNyBAQCBzYW5p dGl6ZV9hdHRyc19tYXRjaF9mb3JfaW5saW5lX3AgKGNvbnN0X3RyZWUgY2FsbGVyLCBjb25z dF90cmVlIGNhbGxlZSkKICAgICAgIFNBTklUSVpFX1BPSU5URVJfU1VCVFJBQ1QKICAgICB9 OwogCi0gIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplb2YgKGNvZGVzKSAvIHNpemVv ZiAoY29kZXNbMF0pOyBpKyspCisgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBBUlJBWV9T SVpFIChjb2Rlcyk7IGkrKykKICAgICBpZiAoc2FuaXRpemVfZmxhZ3NfcCAoY29kZXNbaV0s IGNhbGxlcikKIAkhPSBzYW5pdGl6ZV9mbGFnc19wIChjb2Rlc1tpXSwgY2FsbGVlKSkKICAg ICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL2djYy9qaXQvaml0LWJ1aWx0aW5zLmNj IGIvZ2NjL2ppdC9qaXQtYnVpbHRpbnMuY2MKaW5kZXggYjk0OWI3MzQzMzIuLmZiODZjNzdk MGZlIDEwMDY0NAotLS0gYS9nY2Mvaml0L2ppdC1idWlsdGlucy5jYworKysgYi9nY2Mvaml0 L2ppdC1idWlsdGlucy5jYwpAQCAtMTA5LDkgKzEwOSw3IEBAIGZpbmRfYnVpbHRpbl9ieV9u YW1lIChjb25zdCBjaGFyICppbl9uYW1lLAogCiAgICAgIFdlIHN0YXJ0IGF0IGluZGV4IDEg dG8gc2tpcCB0aGUgaW5pdGlhbCBlbnRyeSAoQlVJTFRfSU5fTk9ORSksIHdoaWNoCiAgICAg IGhhcyBhIE5VTEwgbmFtZS4gICovCi0gIGZvciAodW5zaWduZWQgaW50IGkgPSAxOwotICAg ICAgIGkgPCBzaXplb2YgKGJ1aWx0aW5fZGF0YSkgLyBzaXplb2YgKGJ1aWx0aW5fZGF0YVsw XSk7Ci0gICAgICAgaSsrKQorICBmb3IgKHVuc2lnbmVkIGludCBpID0gMTsgaSA8IEFSUkFZ X1NJWkUgKGJ1aWx0aW5fZGF0YSk7IGkrKykKICAgICB7CiAgICAgICBjb25zdCBzdHJ1Y3Qg YnVpbHRpbl9kYXRhJiBiZCA9IGJ1aWx0aW5fZGF0YVtpXTsKICAgICAgIGlmIChtYXRjaGVz X2J1aWx0aW4gKGluX25hbWUsIGJkKSkKQEAgLTMyMCw3ICszMTgsNyBAQCBzdGF0aWMgY29u c3QgY2hhciAqIGNvbnN0IHR5cGVfbmFtZXNbXSA9IHsKIHN0YXRpYyBjb25zdCBjaGFyICoK IGdldF9zdHJpbmdfZm9yX3R5cGVfaWQgKGVudW0gaml0X2J1aWx0aW5fdHlwZSB0eXBlX2lk KQogewotICBnY2NfYXNzZXJ0ICh0eXBlX2lkIDwgc2l6ZW9mICh0eXBlX25hbWVzKS9zaXpl b2YodHlwZV9uYW1lc1swXSkpOworICBnY2NfYXNzZXJ0ICh0eXBlX2lkIDwgQVJSQVlfU0la RSAodHlwZV9uYW1lcykpOwogICByZXR1cm4gdHlwZV9uYW1lc1t0eXBlX2lkXTsKIH0KIApk aWZmIC0tZ2l0IGEvZ2NjL2ppdC9qaXQtcmVjb3JkaW5nLmNjIGIvZ2NjL2ppdC9qaXQtcmVj b3JkaW5nLmNjCmluZGV4IGEzMTcyMGYwNDNlLi40MzA1YTk2MTQ4OSAxMDA2NDQKLS0tIGEv Z2NjL2ppdC9qaXQtcmVjb3JkaW5nLmNjCisrKyBiL2djYy9qaXQvaml0LXJlY29yZGluZy5j YwpAQCAtNTY4LDkgKzU2OCw3IEBAIHJlY29yZGluZzo6Y29udGV4dDo6Y29udGV4dCAoY29u dGV4dCAqcGFyZW50X2N0eHQpCiAgIGlmIChwYXJlbnRfY3R4dCkKICAgICB7CiAgICAgICAv KiBJbmhlcml0IG9wdGlvbnMgZnJvbSBwYXJlbnQuICAqLwotICAgICAgZm9yICh1bnNpZ25l ZCBpID0gMDsKLQkgICBpIDwgc2l6ZW9mIChtX3N0cl9vcHRpb25zKSAvIHNpemVvZiAobV9z dHJfb3B0aW9uc1swXSk7Ci0JICAgaSsrKQorICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg aSA8IEFSUkFZX1NJWkUgKG1fc3RyX29wdGlvbnMpOyBpKyspCiAJewogCSAgY29uc3QgY2hh ciAqcGFyZW50X29wdCA9IHBhcmVudF9jdHh0LT5tX3N0cl9vcHRpb25zW2ldOwogCSAgbV9z dHJfb3B0aW9uc1tpXSA9IHBhcmVudF9vcHQgPyB4c3RyZHVwIChwYXJlbnRfb3B0KSA6IE5V TEw7CmRpZmYgLS1naXQgYS9nY2MvbHRvL2x0by1jb21tb24uY2MgYi9nY2MvbHRvL2x0by1j b21tb24uY2MKaW5kZXggY2EyODU4NmExZTguLmQ4ZDA0MDRjNTRlIDEwMDY0NAotLS0gYS9n Y2MvbHRvL2x0by1jb21tb24uY2MKKysrIGIvZ2NjL2x0by9sdG8tY29tbW9uLmNjCkBAIC0y MTA0LDggKzIxMDQsNyBAQCBsdG9fcmVzb2x1dGlvbl9yZWFkIChzcGxheV90cmVlIGZpbGVf aWRzLCBGSUxFICpyZXNvbHV0aW9uLCBsdG9fZmlsZSAqZmlsZSkKICAgICAgIGNoYXIgcl9z dHJbMjddOwogICAgICAgZW51bSBsZF9wbHVnaW5fc3ltYm9sX3Jlc29sdXRpb24gciA9IChl bnVtIGxkX3BsdWdpbl9zeW1ib2xfcmVzb2x1dGlvbikgMDsKICAgICAgIHVuc2lnbmVkIGlu dCBqOwotICAgICAgdW5zaWduZWQgaW50IGx0b19yZXNvbHV0aW9uX3N0cl9sZW4KLQk9IHNp emVvZiAobHRvX3Jlc29sdXRpb25fc3RyKSAvIHNpemVvZiAoY2hhciAqKTsKKyAgICAgIHVu c2lnbmVkIGludCBsdG9fcmVzb2x1dGlvbl9zdHJfbGVuID0gQVJSQVlfU0laRSAobHRvX3Jl c29sdXRpb25fc3RyKTsKICAgICAgIHJlc19wYWlyIHJwOwogCiAgICAgICB0ID0gZnNjYW5m IChyZXNvbHV0aW9uLCAiJXUgIiBIT1NUX1dJREVfSU5UX1BSSU5UX0hFWF9QVVJFCmRpZmYg LS1naXQgYS9nY2MvbHRvL2x0by1sYW5nLmNjIGIvZ2NjL2x0by9sdG8tbGFuZy5jYwppbmRl eCA4ZDU4ZDkyNGRmZi4uOTcyYTAzMzZmNzUgMTAwNjQ0Ci0tLSBhL2djYy9sdG8vbHRvLWxh bmcuY2MKKysrIGIvZ2NjL2x0by9sdG8tbGFuZy5jYwpAQCAtMTMxOSw5ICsxMzE5LDcgQEAg bHRvX2luaXQgKHZvaWQpCiAgICAgIGRpc3RpbmN0aW9uIHNob3VsZCBvbmx5IGJlIHJlbGV2 YW50IHRvIHRoZSBmcm9udC1lbmQsIHNvIHdlCiAgICAgIGFsd2F5cyB1c2UgdGhlIEMgZGVm aW5pdGlvbiBoZXJlIGluIGx0bzEuCiAgICAgIExpa2V3aXNlIGZvciBjb25zdCBzdHJ1Y3Qg dG0qLiAgKi8KLSAgZm9yICh1bnNpZ25lZCBpID0gMDsKLSAgICAgICBpIDwgc2l6ZW9mIChi dWlsdGluX3N0cnVjdHB0cl90eXBlcykgLyBzaXplb2YgKGJ1aWx0aW5fc3RydWN0cHRyX3R5 cGUpOwotICAgICAgICsraSkKKyAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEFSUkFZX1NJ WkUgKGJ1aWx0aW5fc3RydWN0cHRyX3R5cGVzKTsgKytpKQogICAgIHsKICAgICAgIGdjY19h c3NlcnQgKGJ1aWx0aW5fc3RydWN0cHRyX3R5cGVzW2ldLm5vZGUKIAkJICA9PSBidWlsdGlu X3N0cnVjdHB0cl90eXBlc1tpXS5iYXNlKTsKZGlmZiAtLWdpdCBhL2djYy9vcHRjLXNhdmUt Z2VuLmF3ayBiL2djYy9vcHRjLXNhdmUtZ2VuLmF3awppbmRleCA5OTExYmFiNjY2OC4uMjMz ZDFmYmI2MzcgMTAwNjQ0Ci0tLSBhL2djYy9vcHRjLXNhdmUtZ2VuLmF3aworKysgYi9nY2Mv b3B0Yy1zYXZlLWdlbi5hd2sKQEAgLTExMDQsNyArMTEwNCw3IEBAIGZvciAoaSA9IDA7IGkg PCBuX3RhcmdldF92YWw7IGkrKykgewogfQogCiBpZiAoaGFzX3RhcmdldF9leHBsaWNpdF9t YXNrKSB7Ci0JcHJpbnQgIiAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplb2YgKHB0cjEt PmV4cGxpY2l0X21hc2spIC8gc2l6ZW9mIChwdHIxLT5leHBsaWNpdF9tYXNrWzBdKTsgaSsr KSI7CisJcHJpbnQgIiAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBBUlJBWV9TSVpFIChwdHIx LT5leHBsaWNpdF9tYXNrKTsgaSsrKSI7CiAJcHJpbnQgIiAgICBpZiAocHRyMS0+ZXhwbGlj aXRfbWFza1tpXSAhPSBwdHIyLT5leHBsaWNpdF9tYXNrW2ldKSI7CiAJcHJpbnQgIiAgICAg IHJldHVybiBmYWxzZTsiCiB9CkBAIC0xMTUyLDcgKzExNTIsNyBAQCBmb3IgKGkgPSAwOyBp IDwgbl90YXJnZXRfdmFsOyBpKyspIHsKIAlwcmludCAiICBoc3RhdGUuYWRkX2h3aSAocHRy LT4iIG5hbWUiKTsiOwogfQogaWYgKGhhc190YXJnZXRfZXhwbGljaXRfbWFzaykgewotCXBy aW50ICIgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZW9mIChwdHItPmV4cGxpY2l0X21h c2spIC8gc2l6ZW9mIChwdHItPmV4cGxpY2l0X21hc2tbMF0pOyBpKyspIjsKKwlwcmludCAi ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IEFSUkFZX1NJWkUgKHB0ci0+ZXhwbGljaXRfbWFz ayk7IGkrKykiOwogCXByaW50ICIgICAgaHN0YXRlLmFkZF9od2kgKHB0ci0+ZXhwbGljaXRf bWFza1tpXSk7IjsKIH0KIApAQCAtMTE5Miw3ICsxMTkyLDcgQEAgZm9yIChpID0gMDsgaSA8 IG5fdGFyZ2V0X3ZhbDsgaSsrKSB7CiB9CiAKIGlmIChoYXNfdGFyZ2V0X2V4cGxpY2l0X21h c2spIHsKLQlwcmludCAiICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemVvZiAocHRyLT5l eHBsaWNpdF9tYXNrKSAvIHNpemVvZiAocHRyLT5leHBsaWNpdF9tYXNrWzBdKTsgaSsrKSI7 CisJcHJpbnQgIiAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBBUlJBWV9TSVpFIChwdHItPmV4 cGxpY2l0X21hc2spOyBpKyspIjsKIAlwcmludCAiICAgIGJwX3BhY2tfdmFsdWUgKGJwLCBw dHItPmV4cGxpY2l0X21hc2tbaV0sIDY0KTsiOwogfQogCkBAIC0xMjM1LDcgKzEyMzUsNyBA QCBmb3IgKGkgPSAwOyBpIDwgbl90YXJnZXRfdmFsOyBpKyspIHsKIH0KIAogaWYgKGhhc190 YXJnZXRfZXhwbGljaXRfbWFzaykgewotCXByaW50ICIgIGZvciAoc2l6ZV90IGkgPSAwOyBp IDwgc2l6ZW9mIChwdHItPmV4cGxpY2l0X21hc2spIC8gc2l6ZW9mIChwdHItPmV4cGxpY2l0 X21hc2tbMF0pOyBpKyspIjsKKwlwcmludCAiICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IEFS UkFZX1NJWkUgKHB0ci0+ZXhwbGljaXRfbWFzayk7IGkrKykiOwogCXByaW50ICIgICAgcHRy LT5leHBsaWNpdF9tYXNrW2ldID0gYnBfdW5wYWNrX3ZhbHVlIChicCwgNjQpOyI7CiB9CiAK QEAgLTEzMTcsNyArMTMxNyw3IEBAIGZvciAoaSA9IDA7IGkgPCBuX29wdF92YWw7IGkrKykg ewogCWVsc2UKIAkJcHJpbnQgIiAgaHN0YXRlLmFkZF9od2kgKHB0ci0+IiBuYW1lIik7IjsK IH0KLXByaW50ICIgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZW9mIChwdHItPmV4cGxp Y2l0X21hc2spIC8gc2l6ZW9mIChwdHItPmV4cGxpY2l0X21hc2tbMF0pOyBpKyspIjsKK3By aW50ICIgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgQVJSQVlfU0laRSAocHRyLT5leHBsaWNp dF9tYXNrKTsgaSsrKSI7CiBwcmludCAiICAgIGhzdGF0ZS5hZGRfaHdpIChwdHItPmV4cGxp Y2l0X21hc2tbaV0pOyI7CiBwcmludCAiICByZXR1cm4gaHN0YXRlLmVuZCAoKTsiOwogcHJp bnQgIn0iOwpAQCAtMTM0Niw3ICsxMzQ2LDcgQEAgZm9yIChpID0gMDsgaSA8IG5fb3B0X3Zh bDsgaSsrKSB7CiAJCXByaW50ICIgICAgcmV0dXJuIGZhbHNlOyI7CiAJfQogfQotcHJpbnQg IiAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplb2YgKHB0cjEtPmV4cGxpY2l0X21hc2sp IC8gc2l6ZW9mIChwdHIxLT5leHBsaWNpdF9tYXNrWzBdKTsgaSsrKSI7CitwcmludCAiICBm b3IgKHNpemVfdCBpID0gMDsgaSA8IEFSUkFZX1NJWkUgKHB0cjEtPmV4cGxpY2l0X21hc2sp OyBpKyspIjsKIHByaW50ICIgICAgaWYgKHB0cjEtPmV4cGxpY2l0X21hc2tbaV0gIT0gcHRy Mi0+ZXhwbGljaXRfbWFza1tpXSkiOwogcHJpbnQgIiAgICAgIHJldHVybiBmYWxzZTsiCiBw cmludCAiICByZXR1cm4gdHJ1ZTsiOwpAQCAtMTM4MCw3ICsxMzgwLDcgQEAgZm9yIChpID0g MDsgaSA8IG5fb3B0X3ZhbDsgaSsrKSB7CiAJCX0KIAl9CiB9Ci1wcmludCAiICBmb3IgKHNp emVfdCBpID0gMDsgaSA8IHNpemVvZiAocHRyLT5leHBsaWNpdF9tYXNrKSAvIHNpemVvZiAo cHRyLT5leHBsaWNpdF9tYXNrWzBdKTsgaSsrKSI7CitwcmludCAiICBmb3IgKHNpemVfdCBp ID0gMDsgaSA8IEFSUkFZX1NJWkUgKHB0ci0+ZXhwbGljaXRfbWFzayk7IGkrKykiOwogcHJp bnQgIiAgICBicF9wYWNrX3ZhbHVlIChicCwgcHRyLT5leHBsaWNpdF9tYXNrW2ldLCA2NCk7 IjsKIHByaW50ICJ9IjsKIApAQCAtMTQxMiw3ICsxNDEyLDcgQEAgZm9yIChpID0gMDsgaSA8 IG5fb3B0X3ZhbDsgaSsrKSB7CiAJCX0KIAl9CiB9Ci1wcmludCAiICBmb3IgKHNpemVfdCBp ID0gMDsgaSA8IHNpemVvZiAocHRyLT5leHBsaWNpdF9tYXNrKSAvIHNpemVvZiAocHRyLT5l eHBsaWNpdF9tYXNrWzBdKTsgaSsrKSI7CitwcmludCAiICBmb3IgKHNpemVfdCBpID0gMDsg aSA8IEFSUkFZX1NJWkUgKHB0ci0+ZXhwbGljaXRfbWFzayk7IGkrKykiOwogcHJpbnQgIiAg ICBwdHItPmV4cGxpY2l0X21hc2tbaV0gPSBicF91bnBhY2tfdmFsdWUgKGJwLCA2NCk7IjsK IHByaW50ICJ9IjsKIHByaW50ICIvKiBGcmVlIGhlYXAgbWVtb3J5IHVzZWQgYnkgb3B0aW1p emF0aW9uIG9wdGlvbnMgICovIjsKZGlmZiAtLWdpdCBhL2djYy9zcGVsbGNoZWNrLmNjIGIv Z2NjL3NwZWxsY2hlY2suY2MKaW5kZXggM2U1ODM0NGY1MTAuLmM3YmIwMTIyNTQ1IDEwMDY0 NAotLS0gYS9nY2Mvc3BlbGxjaGVjay5jYworKysgYi9nY2Mvc3BlbGxjaGVjay5jYwpAQCAt NDg5LDcgKzQ4OSw3IEBAIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgdGVzdF9kYXRhW10g PSB7CiBzdGF0aWMgdm9pZAogdGVzdF9tZXRyaWNfY29uZGl0aW9ucyAoKQogewotICBjb25z dCBpbnQgbnVtX3Rlc3RfY2FzZXMgPSBzaXplb2YgKHRlc3RfZGF0YSkgLyBzaXplb2YgKHRl c3RfZGF0YVswXSk7CisgIGNvbnN0IGludCBudW1fdGVzdF9jYXNlcyA9IEFSUkFZX1NJWkUg KHRlc3RfZGF0YSk7CiAKICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1fdGVzdF9jYXNlczsg aSsrKQogICAgIHsKZGlmZiAtLWdpdCBhL2djYy90cmVlLXZlY3Qtc2xwLXBhdHRlcm5zLmNj IGIvZ2NjL3RyZWUtdmVjdC1zbHAtcGF0dGVybnMuY2MKaW5kZXggODc5ZDE3ZmQ5NDcuLmE2 YjBkMTA2ZDVmIDEwMDY0NAotLS0gYS9nY2MvdHJlZS12ZWN0LXNscC1wYXR0ZXJucy5jYwor KysgYi9nY2MvdHJlZS12ZWN0LXNscC1wYXR0ZXJucy5jYwpAQCAtMTYzNyw0ICsxNjM3LDQg QEAgdmVjdF9wYXR0ZXJuX2RlY2xfdCBzbHBfcGF0dGVybnNbXQogI3VuZGVmIFNMUF9QQVRU RVJOCiAKIC8qIFNldCB0aGUgbnVtYmVyIG9mIFNMUCBwYXR0ZXJuIG1hdGNoZXJzIGF2YWls YWJsZS4gICovCi1zaXplX3QgbnVtX19zbHBfcGF0dGVybnMgPSBzaXplb2Yoc2xwX3BhdHRl cm5zKS9zaXplb2YodmVjdF9wYXR0ZXJuX2RlY2xfdCk7CitzaXplX3QgbnVtX19zbHBfcGF0 dGVybnMgPSBBUlJBWV9TSVpFIChzbHBfcGF0dGVybnMpOwpkaWZmIC0tZ2l0IGEvZ2NjL3Ry ZWUuY2MgYi9nY2MvdHJlZS5jYwppbmRleCA1ZTg4NzZkMmIzOC4uZGY0NDFjNmIyMjMgMTAw NjQ0Ci0tLSBhL2djYy90cmVlLmNjCisrKyBiL2djYy90cmVlLmNjCkBAIC05NDA4LDkgKzk0 MDgsNyBAQCBidWlsZF9jb21tb25fdHJlZV9ub2RlcyAoYm9vbCBzaWduZWRfY2hhcikKICAg cHRyX3R5cGVfbm9kZSA9IGJ1aWxkX3BvaW50ZXJfdHlwZSAodm9pZF90eXBlX25vZGUpOwog ICBjb25zdF9wdHJfdHlwZV9ub2RlCiAgICAgPSBidWlsZF9wb2ludGVyX3R5cGUgKGJ1aWxk X3R5cGVfdmFyaWFudCAodm9pZF90eXBlX25vZGUsIDEsIDApKTsKLSAgZm9yICh1bnNpZ25l ZCBpID0gMDsKLSAgICAgICBpIDwgc2l6ZW9mIChidWlsdGluX3N0cnVjdHB0cl90eXBlcykg LyBzaXplb2YgKGJ1aWx0aW5fc3RydWN0cHRyX3R5cGUpOwotICAgICAgICsraSkKKyAgZm9y ICh1bnNpZ25lZCBpID0gMDsgaSA8IEFSUkFZX1NJWkUgKGJ1aWx0aW5fc3RydWN0cHRyX3R5 cGVzKTsgKytpKQogICAgIGJ1aWx0aW5fc3RydWN0cHRyX3R5cGVzW2ldLm5vZGUgPSBidWls dGluX3N0cnVjdHB0cl90eXBlc1tpXS5iYXNlOwogCiAgIHBvaW50ZXJfc2l6ZWRfaW50X25v ZGUgPSBidWlsZF9ub25zdGFuZGFyZF9pbnRlZ2VyX3R5cGUgKFBPSU5URVJfU0laRSwgMSk7 Ci0tIAoyLjM2LjAKCg== --------------2c2rYx0iHyjuJz0IUEF6Lqd6--