Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vxhXD-00H3FW-2n for pgsql-hackers@arkaria.postgresql.org; Wed, 04 Mar 2026 08:24:48 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vxhXC-00BZbG-18 for pgsql-hackers@arkaria.postgresql.org; Wed, 04 Mar 2026 08:24:46 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vxhXB-00BZb8-1l for pgsql-hackers@lists.postgresql.org; Wed, 04 Mar 2026 08:24:46 +0000 Received: from mail-yw1-x1133.google.com ([2607:f8b0:4864:20::1133]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1vxhX9-00000000LCY-44gO for pgsql-hackers@lists.postgresql.org; Wed, 04 Mar 2026 08:24:45 +0000 Received: by mail-yw1-x1133.google.com with SMTP id 00721157ae682-7947cf097c1so63008667b3.2 for ; Wed, 04 Mar 2026 00:24:43 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1772612683; cv=none; d=google.com; s=arc-20240605; b=c54Cz4siPM3FJzxUd+cvk4SuaPzIumcZVB1BfkcCUVFIgC6Jv/4V/p/OIztqzvpoj3 YXO77bwPur2+DGy46irb3PaKzucXkSsFMxNeVPKbMBUtlw3Eqo02ZgJfdF4oiui6YqFd TvIxZCZWaYPFGo88OrYk9JrXiusMOycG2nG2h3L91WENqO2HX/u64MLqqIGuEEI71hGN ZqEJJMGQ0lM6DbbCuM+O4MRy/5ZGI+TPAXZ+hBOQ4l+WZSUo2mAnhv4l6abMnOdVYukf UWECashmSZ0z39hFKFe0aCgdrV7nPrFt6r6gaNVAoNtLqn2fl5FvQeETsaAFfO6JiIM4 jT7A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=+EHvhdamIahduMz75FBZ8Sgxz/S9SkrokN+tonAehcw=; fh=g3sUg/ibLsbNHLqWYSfFvYBjD1XRTYygkgL3IXAHGNE=; b=VjxJz+GnncvBYWHf+audeZWJA8NZOBTF4bjBMX5fuBTHFjpFukzVyhI70Z64loY46O tY5Vm/HSrXfHqFYwpN7i2eqqvse+fyODFhKpCVKY/xz0vYICX2fd4tMLG/TBFOdjhDx2 2Dew+2EVMoggCTYD+WF4bSDr8pWPB9mthU2nZAR+E3025Vyy4gfS5X/rCu6sRSF1pVIZ Yl5C1KHeh/mOepKcmWEZw5Os94/xMRv3/Nsc9bY0SS6s3bykpEQBX9B5vZBanGIfaoM8 61NTQilm3ReJyMjvvIWORIH0mnHSuZ2Ic0j4Vta4Fmncmo+qp6OcaZK8XC76W9V/9xqB yhlA==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1772612683; x=1773217483; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=+EHvhdamIahduMz75FBZ8Sgxz/S9SkrokN+tonAehcw=; b=A1U/qlAQ1di3/OOHZgnzvVEl0fNVbVB/V4hhvL4WG7bw1nge3dUUVJSkAQ5NJfhanM 3Z17WXM0yrAmJW3/eLgo5yTtpFbb8Kji+QU4Woq0GLkjlJYlWZWXK35NvApaTisEe0eL /GmH4lTQXrtqda/MV0IyDaOF7fGP06XKNBZpBr1F1Xj+1TNl9EiftrZtnqzWEKO/B+Ho RuKx7cElVnFJPBaWDwSkgpOXHUHnmiS6Zo/JwP0h0bpY9cbxOMuKE/osmqgG3NgziI2X ueMYvQB19PRaTw2FkFkIDRaQnfq41f5/682o9Wp9b1TbbPG/OlKpOLg7MQWc6CyBpM0K gT7A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772612683; x=1773217483; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=+EHvhdamIahduMz75FBZ8Sgxz/S9SkrokN+tonAehcw=; b=G++mM4EqtDXEvZi06by09EcjxqUoJGyqqnFpM7VwlWQd4qj3S3dfbmn3TVsokGSSW3 ORiG4GNrpl7jnGlB67ujbXHmscucltujjVdVWKS1Kg8dZGn1ntfWGcXalbfYNz77IfKu gXBqJZCduxK7d+ZPIEpH+YSn+d3fxG7Lk0RphM/wJcNuVKBTL3Z8TsK+i7WJJCUvUjy1 mhnwe/KM1AoJskYNmtTlfB952KAIZOGyZ5gK2g2USCtOzFOTXm4a6dQ9RwIdseOHrC8k aIi6tu0Fyt4nDfeJ69PjUkBm/Wr9jI5Z2/6+HFYn4POpTs3Q5/BlGbRm1beoPT6T4fpw a/Ow== X-Forwarded-Encrypted: i=1; AJvYcCUIFizmhnfU+qBdYXA3rgwG8ctTu1/D6Br2rdQYLlef3W7r0h0XuV4IXYNAn+jS80BaZX5PBET5HUhY6uKW@lists.postgresql.org X-Gm-Message-State: AOJu0YwXICQUzzBn73BY4v7nUESb+5KnmT9KzQLkWAumolp0VxUQUvzE q0vxFlSDWvY806PPXrBJyt3/A7kNJIZOKlGPoi0aZL7ATPAQAGYSpluBqL1ucDQ0Ytw6MB5lloR +H8QwUtfMm4Bzc5VXZLYwTxguTrnq15k= X-Gm-Gg: ATEYQzyQQxGJEJZ2/1LdKnoIyIpsK/Q5nIYIInQhGmc4nuaTJXqnXfPb6AR3Z+hRkqM atWL8hcTcpbQjU52qp3G9dly3Fy2Wi99RyiTp9mxkaGQp5dwgZ4h71JulvSHik4Cm2NGc4iRNlM KfRjGQmta7/RJXBnRx06Ca7cHUTpXdAgyYiQGms2YTbeW/elJOn3+qtYS8eNxHE960TZA44LcF9 IIacxbgX0bBgu+Z+0Vfx5X42OKC6QxVe9VAxNlwlGQYzR4xJVH32B+DwhbZv1p8mPByeqV4TJUn p+JXKrE7fg== X-Received: by 2002:a05:690c:67c2:b0:798:70c9:d77b with SMTP id 00721157ae682-798c6bdaf29mr8485287b3.19.1772612683237; Wed, 04 Mar 2026 00:24:43 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: vignesh C Date: Wed, 4 Mar 2026 13:54:29 +0530 X-Gm-Features: AaiRm52E_KtK9JcvXxhXpph9u3DVmp3DGBU4uCIkRxwPgTpAPremf0la5PFm1EU Message-ID: Subject: Re: Skipping schema changes in publication To: Shlok Kyal Cc: Nisha Moond , Amit Kapila , shveta malik , Ashutosh Sharma , "David G. Johnston" , Dilip Kumar , Peter Smith , "Zhijie Hou (Fujitsu)" , YeXiu <1518981153@qq.com>, Ian Lawrence Barwick , Bharath Rupireddy , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="0000000000004f629e064c2e8dbe" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000004f629e064c2e8dbe Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Tue, 3 Mar 2026 at 21:17, Shlok Kyal wrote: > > On Tue, 3 Mar 2026 at 15:45, Nisha Moond wrote= : > > > > On Mon, Mar 2, 2026 at 6:51=E2=80=AFPM Shlok Kyal wrote: > > > > > > Attached the updated v54 patch. > > > > > > > Few comments for v54 patch - > > 1) The partition description shows the publication name which it is > > excluded from. > > simple test case: > > > > CREATE TABLE t_part (a int) PARTITION BY RANGE(a); > > CREATE TABLE t_part_p1 PARTITION OF t_part FOR VALUES FROM (0) TO (100= ); > > CREATE PUBLICATION pub_p1 FOR ALL TABLES EXCEPT TABLE (t_part); > > postgres=3D# \d t_part_p1 > > Table "public.t_part_p1" > > Column | Type | Collation | Nullable | Default > > --------+---------+-----------+----------+--------- > > a | integer | | | > > Partition of: t_part FOR VALUES FROM (0) TO (100) > > Publications: > > "pub_p1" > > ~~~ > > > Fixed. Added a test for it as well. > > > 2) File: 037_rep_changes_except_table.pl:147 > > +# Verify that data inserted into a table listed in the EXCEPT clause i= s not > > +# published. > > +$result =3D $node_publisher->safe_psql('postgres', > > + "SELECT count(*) =3D 0 FROM > > pg_logical_slot_get_binary_changes('test_slot', NULL, NULL, > > 'proto_version', '1', 'publication_names', 'tap_sub_schema')" > > +); > > > > There seems to be a mistake in the publication name in the above call > > as tap_sub_schema is a subscription name. > > ~~~ > > Couple of minor comments: > > 3) File: pgouput.c > > + /* > > + * For a parition, changes are published via top-most > > + * ancestor when pubviaroot is true, so populate pub_relid > > + * accordingly > > + */ > > > > 3a) typo parition -> partition > > 3b) There should be a full stop (.) at the end i.e. after accordingly > > ~~~ > > > > File: pg_publication.c > > + else > > + errormsg =3D gettext_noop("cannot add relation \"%s\" to publication= "); > > + > > + > > + /* If in EXCEPT clause, must be root partitioned table */ > > > > >> there is an extra empty line > > ~~~ > > > I have addressed the remaining comments as well. > I have also addressed the comments by Amit and Shveta in [1] and [2]. > > Attached the latest v55 patch. Here is an updated version with a couple of typos fixed and separated the describe table query based on versions which make it more easier to read. Regards, Vignesh --0000000000004f629e064c2e8dbe Content-Type: application/octet-stream; name="v56-0001-Allow-table-exclusions-in-publications-via-EXCEP.patch" Content-Disposition: attachment; filename="v56-0001-Allow-table-exclusions-in-publications-via-EXCEP.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmbrsxs20 RnJvbSBiYmJiNzAyN2I2ZTNhYWY1OWM3ODFiNjgyNzhhOGI0ZDFjYTU4YTBhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBWaWduZXNoIEMgPHZpZ25lc2gyMUBnbWFpbC5jb20+CkRhdGU6 IFRodSwgMTkgRmViIDIwMjYgMjA6MTY6MzkgKzA1MzAKU3ViamVjdDogW1BBVENIIHY1Nl0gQWxs b3cgdGFibGUgZXhjbHVzaW9ucyBpbiBwdWJsaWNhdGlvbnMgdmlhIEVYQ0VQVCBUQUJMRS4KCkV4 dGVuZCBDUkVBVEUgUFVCTElDQVRJT04gLi4uIEZPUiBBTEwgVEFCTEVTIHRvIHN1cHBvcnQgdGhl IEVYQ0VQVCBUQUJMRQpzeW50YXguIFRoaXMgYWxsb3dzIG9uZSBvciBtb3JlIHRhYmxlcyB0byBi ZSBleGNsdWRlZC4gVGhlIHB1Ymxpc2hlciB3aWxsCm5vdCBzZW5kIHRoZSBkYXRhIG9mIGV4Y2x1 ZGVkIHRhYmxlcyB0byB0aGUgc3Vic2NyaWJlci4KClRvIHN1cHBvcnQgdGhpcywgcGdfcHVibGlj YXRpb25fcmVsIG5vdyBpbmNsdWRlcyBhIHByZXhjZXB0IGNvbHVtbiB0byBmbGFnCmV4Y2x1ZGVk IHJlbGF0aW9ucy4gRm9yIHBhcnRpdGlvbmVkIHRhYmxlcywgdGhlIGV4Y2x1c2lvbiBpcyBhcHBs aWVkIGF0CnRoZSByb290IGxldmVsOyBzcGVjaWZ5aW5nIGEgcm9vdCB0YWJsZSBleGNsdWRlcyBh bGwgY3VycmVudCBhbmQgZnV0dXJlCnBhcnRpdGlvbnMgaW4gdGhhdCB0cmVlLgoKRm9sbG93LXVw IHdvcmsgd2lsbCBpbXBsZW1lbnQgQUxURVIgUFVCTElDQVRJT04gc3VwcG9ydCBmb3IgbWFuYWdp bmcgdGhlc2UKZXhjbHVzaW9ucy4KCkF1dGhvcjogdmlnbmVzaCBDIDx2aWduZXNoMjFAZ21haWwu Y29tPgpBdXRob3I6IFNobG9rIEt5YWwgPHNobG9rLmt5YWwub3NzQGdtYWlsLmNvbT4KUmV2aWV3 ZWQtYnk6IHNodmV0YSBtYWxpayA8c2h2ZXRhLm1hbGlrQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6 IEFtaXQgS2FwaWxhIDxhbWl0LmthcGlsYTE2QGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IFBldGVy IFNtaXRoIDxzbWl0aHBiMjI1MEBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBEaWxpcCBLdW1hciA8 ZGlsaXBiYWxhdXRAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogWmhpamllIEhvdSA8aG91emouZm5z dEBmdWppdHN1LmNvbT4KUmV2aWV3ZWQtYnk6IE5pc2hhIE1vb25kIDxuaXNoYS5tb29uZDQxMkBn bWFpbC5jb20+ClJldmlld2VkLWJ5OiBEYXZpZCBHLiBKb2huc3RvbiA8ZGF2aWQuZy5qb2huc3Rv bkBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBBc2h1dG9zaCBTaGFybWEgPGFzaHUuY29lazg4QGdt YWlsLmNvbT4KUmV2aWV3ZWQtYnk6IENoYW8gTGkgPGxpLmV2YW4uY2hhb0BnbWFpbC5jb20+ClJl dmlld2VkLWJ5OiBBbmRyZWkgTGVwaWtob3YgPGxlcGlob3ZAZ21haWwuY29tPgotLS0KIGRvYy9z cmMvc2dtbC9jYXRhbG9ncy5zZ21sICAgICAgICAgICAgICAgICAgfCAgMTAgKwogZG9jL3NyYy9z Z21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbCAgICAgICB8ICAgNiArLQogZG9jL3NyYy9zZ21s L3JlZi9jcmVhdGVfcHVibGljYXRpb24uc2dtbCAgICB8ICA1NyArKysrLQogZG9jL3NyYy9zZ21s L3JlZi9wc3FsLXJlZi5zZ21sICAgICAgICAgICAgICB8ICAgNSArLQogc3JjL2JhY2tlbmQvY2F0 YWxvZy9wZ19wdWJsaWNhdGlvbi5jICAgICAgICB8IDE4MiArKysrKysrKysrLS0tLQogc3JjL2Jh Y2tlbmQvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMgICAgICB8ICA1MiArKy0tCiBzcmMvYmFj a2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyAgICAgICAgICAgIHwgIDQ4ICsrKy0KIHNyYy9iYWNr ZW5kL3BhcnNlci9ncmFtLnkgICAgICAgICAgICAgICAgICAgfCAgMzkgKystCiBzcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jIHwgIDQzICsrKy0KIHNyYy9iYWNrZW5k L3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMgICAgICAgICAgfCAgMzEgKystCiBzcmMvYmluL3BnX2R1 bXAvcGdfZHVtcC5jICAgICAgICAgICAgICAgICAgIHwgIDc5ICsrKysrLQogc3JjL2Jpbi9wZ19k dW1wL3BnX2R1bXAuaCAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvYmluL3BnX2R1bXAv dC8wMDJfcGdfZHVtcC5wbCAgICAgICAgICAgIHwgIDMwICsrKwogc3JjL2Jpbi9wc3FsL2Rlc2Ny aWJlLmMgICAgICAgICAgICAgICAgICAgICB8IDEwMSArKysrKysrLQogc3JjL2Jpbi9wc3FsL3Rh Yi1jb21wbGV0ZS5pbi5jICAgICAgICAgICAgICB8ICAxMiArLQogc3JjL2luY2x1ZGUvY2F0YWxv Zy9wZ19wdWJsaWNhdGlvbi5oICAgICAgICB8ICAxOCArLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9w Z19wdWJsaWNhdGlvbl9yZWwuaCAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5v ZGVzLmggICAgICAgICAgICAgIHwgICA1ICstCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1 YmxpY2F0aW9uLm91dCAgIHwgMTQ2ICsrKysrKysrKystCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9w dWJsaWNhdGlvbi5zcWwgICAgICAgIHwgIDY1ICsrKystCiBzcmMvdGVzdC9zdWJzY3JpcHRpb24v bWVzb24uYnVpbGQgICAgICAgICAgIHwgICAxICsKIHNyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAz N19leGNlcHQucGwgICAgICAgfCAyNTUgKysrKysrKysrKysrKysrKysrKysKIDIyIGZpbGVzIGNo YW5nZWQsIDEwNjcgaW5zZXJ0aW9ucygrKSwgMTIwIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUg MTAwNjQ0IHNyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzN19leGNlcHQucGwKCmRpZmYgLS1naXQg YS9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbCBiL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21s CmluZGV4IGU3MDY3Yzg0ZWNlLi42OTU4ODkzNzcxOSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21s L2NhdGFsb2dzLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKQEAgLTY1NzIs NiArNjU3MiwxNiBAQCBTQ1JBTS1TSEEtMjU2JDxyZXBsYWNlYWJsZT4mbHQ7aXRlcmF0aW9uIGNv dW50Jmd0OzwvcmVwbGFjZWFibGU+OjxyZXBsYWNlYWJsZT4mbAogICAgICAgPC9wYXJhPjwvZW50 cnk+CiAgICAgIDwvcm93PgogCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxv Z190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgPHN0 cnVjdGZpZWxkPnByZXhjZXB0PC9zdHJ1Y3RmaWVsZD4gPHR5cGU+Ym9vbDwvdHlwZT4KKyAgICAg IDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIFRydWUgaWYgdGhlIHRhYmxlIGlzIGV4Y2x1 ZGVkIGZyb20gdGhlIHB1YmxpY2F0aW9uLiBTZWUKKyAgICAgICA8bGluayBsaW5rZW5kPSJzcWwt Y3JlYXRlcHVibGljYXRpb24tcGFyYW1zLWZvci1leGNlcHQtdGFibGUiPjxsaXRlcmFsPkVYQ0VQ VCBUQUJMRTwvbGl0ZXJhbD48L2xpbms+LgorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwv cm93PgorCiAgICAgIDxyb3c+CiAgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRy eSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgogICAgICAgPHN0cnVjdGZpZWxkPnBy cXVhbDwvc3RydWN0ZmllbGQ+IDx0eXBlPnBnX25vZGVfdHJlZTwvdHlwZT4KZGlmZiAtLWdpdCBh L2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwgYi9kb2Mvc3JjL3NnbWwvbG9n aWNhbC1yZXBsaWNhdGlvbi5zZ21sCmluZGV4IDUwMjhmZTlhZjA5Li5iY2I0NzNjMDc4YiAxMDA2 NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbAorKysgYi9kb2Mv c3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sCkBAIC0xMTYsNyArMTE2LDExIEBACiAg ICA8bGl0ZXJhbD5GT1IgVEFCTEVTIElOIFNDSEVNQTwvbGl0ZXJhbD4sIDxsaXRlcmFsPkZPUiBB TEwgVEFCTEVTPC9saXRlcmFsPiwKICAgIG9yIDxsaXRlcmFsPkZPUiBBTEwgU0VRVUVOQ0VTPC9s aXRlcmFsPi4gVW5saWtlIHRhYmxlcywgc2VxdWVuY2VzIGNhbiBiZQogICAgc3luY2hyb25pemVk IGF0IGFueSB0aW1lLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlCi0gICA8eHJlZiBsaW5rZW5k PSJsb2dpY2FsLXJlcGxpY2F0aW9uLXNlcXVlbmNlcyIvPi4KKyAgIDx4cmVmIGxpbmtlbmQ9Imxv Z2ljYWwtcmVwbGljYXRpb24tc2VxdWVuY2VzIi8+LiBXaGVuIGEgcHVibGljYXRpb24gaXMKKyAg IGNyZWF0ZWQgd2l0aCA8bGl0ZXJhbD5GT1IgQUxMIFRBQkxFUzwvbGl0ZXJhbD4sIGEgdGFibGUg b3Igc2V0IG9mIHRhYmxlcyBjYW4KKyAgIGJlIGV4cGxpY2l0bHkgZXhjbHVkZWQgZnJvbSBwdWJs aWNhdGlvbiB1c2luZyB0aGUKKyAgIDxsaW5rIGxpbmtlbmQ9InNxbC1jcmVhdGVwdWJsaWNhdGlv bi1wYXJhbXMtZm9yLWV4Y2VwdC10YWJsZSI+PGxpdGVyYWw+RVhDRVBUIFRBQkxFPC9saXRlcmFs PjwvbGluaz4KKyAgIGNsYXVzZS4KICAgPC9wYXJhPgogCiAgIDxwYXJhPgpkaWZmIC0tZ2l0IGEv ZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfcHVibGljYXRpb24uc2dtbCBiL2RvYy9zcmMvc2dtbC9y ZWYvY3JlYXRlX3B1YmxpY2F0aW9uLnNnbWwKaW5kZXggNmVmYmI5MTVjZWMuLjc3MDY2ZWY2ODBi IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9wdWJsaWNhdGlvbi5zZ21sCisr KyBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3B1YmxpY2F0aW9uLnNnbWwKQEAgLTMyLDEyICsz MiwxNiBAQCBDUkVBVEUgUFVCTElDQVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi Pm5hbWU8L3JlcGxhY2VhYmxlPgogCiA8cGhyYXNlPmFuZCA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+cHVibGljYXRpb25fYWxsX29iamVjdDwvcmVwbGFjZWFibGU+IGlzIG9uZSBvZjo8 L3BocmFzZT4KIAotICAgIEFMTCBUQUJMRVMKKyAgICBBTEwgVEFCTEVTIFsgRVhDRVBUIFRBQkxF ICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmV4Y2VwdF90YWJsZV9vYmplY3Q8L3Jl cGxhY2VhYmxlPiBbLCAuLi4gXSApIF0KICAgICBBTEwgU0VRVUVOQ0VTCiAKIDxwaHJhc2U+YW5k IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9hbmRfY29sdW1uczwvcmVwbGFj ZWFibGU+IGlzOjwvcGhyYXNlPgogCiAgICAgWyBPTkxZIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2VhYmxlPiBbICogXSBbICggPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gKSBd IFsgV0hFUkUgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZXhwcmVzc2lvbjwvcmVw bGFjZWFibGU+ICkgXQorCis8cGhyYXNlPmFuZCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+ZXhjZXB0X3RhYmxlX29iamVjdDwvcmVwbGFjZWFibGU+IGlzOjwvcGhyYXNlPgorCisgICAg WyBPTkxZIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxh Y2VhYmxlPiBbICogXQogPC9zeW5vcHNpcz4KICA8L3JlZnN5bm9wc2lzZGl2PgogCkBAIC0xNjQs NyArMTY4LDggQEAgQ1JFQVRFIFBVQkxJQ0FUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4KICAgICA8bGlzdGl0ZW0+CiAgICAgIDxwYXJhPgogICAg ICAgTWFya3MgdGhlIHB1YmxpY2F0aW9uIGFzIG9uZSB0aGF0IHJlcGxpY2F0ZXMgY2hhbmdlcyBm b3IgYWxsIHRhYmxlcyBpbgotICAgICAgdGhlIGRhdGFiYXNlLCBpbmNsdWRpbmcgdGFibGVzIGNy ZWF0ZWQgaW4gdGhlIGZ1dHVyZS4KKyAgICAgIHRoZSBkYXRhYmFzZSwgaW5jbHVkaW5nIHRhYmxl cyBjcmVhdGVkIGluIHRoZSBmdXR1cmUuIFRhYmxlcyBsaXN0ZWQgaW4KKyAgICAgIEVYQ0VQVCBU QUJMRSBhcmUgZXhjbHVkZWQgZnJvbSB0aGUgcHVibGljYXRpb24uCiAgICAgIDwvcGFyYT4KICAg ICA8L2xpc3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+CkBAIC0xODQsNiArMTg5LDM3IEBAIENS RUFURSBQVUJMSUNBVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVw bGFjZWFibGU+CiAgICAgPC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5PgogCisgICA8dmFy bGlzdGVudHJ5IGlkPSJzcWwtY3JlYXRlcHVibGljYXRpb24tcGFyYW1zLWZvci1leGNlcHQtdGFi bGUiPgorICAgIDx0ZXJtPjxsaXRlcmFsPkVYQ0VQVCBUQUJMRTwvbGl0ZXJhbD48L3Rlcm0+Cisg ICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIFRoaXMgY2xhdXNlIHNwZWNpZmllcyBh IGxpc3Qgb2YgdGFibGVzIHRvIGJlIGV4Y2x1ZGVkIGZyb20gdGhlCisgICAgICBwdWJsaWNhdGlv bi4KKyAgICAgPC9wYXJhPgorICAgICA8cGFyYT4KKyAgICAgIEZvciBpbmhlcml0ZWQgdGFibGVz LCBpZiA8bGl0ZXJhbD5PTkxZPC9saXRlcmFsPiBpcyBzcGVjaWZpZWQgYmVmb3JlIHRoZQorICAg ICAgdGFibGUgbmFtZSwgb25seSB0aGF0IHRhYmxlIGlzIGV4Y2x1ZGVkIGZyb20gdGhlIHB1Ymxp Y2F0aW9uLiBJZgorICAgICAgPGxpdGVyYWw+T05MWTwvbGl0ZXJhbD4gaXMgbm90IHNwZWNpZmll ZCwgdGhlIHRhYmxlIGFuZCBhbGwgaXRzIGRlc2NlbmRhbnQKKyAgICAgIHRhYmxlcyAoaWYgYW55 KSBhcmUgZXhjbHVkZWQuIE9wdGlvbmFsbHksIDxsaXRlcmFsPio8L2xpdGVyYWw+IGNhbiBiZQor ICAgICAgc3BlY2lmaWVkIGFmdGVyIHRoZSB0YWJsZSBuYW1lIHRvIGV4cGxpY2l0bHkgaW5kaWNh dGUgdGhhdCBkZXNjZW5kYW50CisgICAgICB0YWJsZXMgYXJlIGV4Y2x1ZGVkLgorICAgICA8L3Bh cmE+CisgICAgIDxwYXJhPgorICAgICAgRm9yIHBhcnRpdGlvbmVkIHRhYmxlcywgb25seSB0aGUg cm9vdCBwYXJ0aXRpb25lZCB0YWJsZSBtYXkgYmUgc3BlY2lmaWVkCisgICAgICBpbiA8bGl0ZXJh bD5FWENFUFQgVEFCTEU8L2xpdGVyYWw+LiBEb2luZyBzbyBleGNsdWRlcyB0aGUgcm9vdCB0YWJs ZSBhbmQKKyAgICAgIGFsbCBvZiBpdHMgcGFydGl0aW9ucyBmcm9tIHJlcGxpY2F0aW9uLiBUaGUg b3B0aW9uYWwKKyAgICAgIDxsaXRlcmFsPk9OTFk8L2xpdGVyYWw+IGFuZCA8bGl0ZXJhbD4qPC9s aXRlcmFsPiBoYXMgbm8gZWZmZWN0IGZvcgorICAgICAgcGFydGl0aW9uZWQgdGFibGVzLgorICAg ICA8L3BhcmE+CisgICAgIDxwYXJhPgorICAgICAgVGhlcmUgY2FuIGJlIGEgY2FzZSB3aGVyZSBh IHN1YnNjcmlwdGlvbiBpbmNsdWRlcyBtdWx0aXBsZSBwdWJsaWNhdGlvbnMuCisgICAgICBJbiBz dWNoIGEgY2FzZSwgYSB0YWJsZSBvciBwYXJ0aXRpb24gdGhhdCBpcyBpbmNsdWRlZCBpbiBvbmUg cHVibGljYXRpb24KKyAgICAgIGFuZCBsaXN0ZWQgaW4gdGhlIDxsaXRlcmFsPkVYQ0VQVCBUQUJM RTwvbGl0ZXJhbD4gY2xhdXNlIG9mIGFub3RoZXIgaXMKKyAgICAgIGNvbnNpZGVyZWQgaW5jbHVk ZWQgZm9yIHJlcGxpY2F0aW9uLgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwv dmFybGlzdGVudHJ5PgorCiAgICA8dmFybGlzdGVudHJ5IGlkPSJzcWwtY3JlYXRlcHVibGljYXRp b24tcGFyYW1zLXdpdGgiPgogICAgIDx0ZXJtPjxsaXRlcmFsPldJVEggKCA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+cHVibGljYXRpb25fcGFyYW1ldGVyPC9yZXBsYWNlYWJsZT4gWz0g PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnZhbHVlPC9yZXBsYWNlYWJsZT5dIFssIC4u LiBdICk8L2xpdGVyYWw+PC90ZXJtPgogICAgIDxsaXN0aXRlbT4KQEAgLTQ4OSw2ICs1MjUsMjMg QEAgQ1JFQVRFIFBVQkxJQ0FUSU9OIGFsbF9zZXF1ZW5jZXMgRk9SIEFMTCBTRVFVRU5DRVM7CiAg ICBhbGwgc2VxdWVuY2VzIGZvciBzeW5jaHJvbml6YXRpb246CiA8cHJvZ3JhbWxpc3Rpbmc+CiBD UkVBVEUgUFVCTElDQVRJT04gYWxsX3RhYmxlc19zZXF1ZW5jZXMgRk9SIEFMTCBUQUJMRVMsIEFM TCBTRVFVRU5DRVM7Cis8L3Byb2dyYW1saXN0aW5nPgorICA8L3BhcmE+CisKKyAgPHBhcmE+Cisg ICBDcmVhdGUgYSBwdWJsaWNhdGlvbiB0aGF0IHB1Ymxpc2hlcyBhbGwgY2hhbmdlcyBpbiBhbGwg dGFibGVzIGV4Y2VwdAorICAgPHN0cnVjdG5hbWU+dXNlcnM8L3N0cnVjdG5hbWU+IGFuZCA8c3Ry dWN0bmFtZT5kZXBhcnRtZW50czwvc3RydWN0bmFtZT46Cis8cHJvZ3JhbWxpc3Rpbmc+CitDUkVB VEUgUFVCTElDQVRJT04gYWxsX3RhYmxlc19leGNlcHQgRk9SIEFMTCBUQUJMRVMgRVhDRVBUIFRB QkxFICh1c2VycywgZGVwYXJ0bWVudHMpOworPC9wcm9ncmFtbGlzdGluZz4KKyAgPC9wYXJhPgor CisgIDxwYXJhPgorICAgQ3JlYXRlIGEgcHVibGljYXRpb24gdGhhdCBwdWJsaXNoZXMgYWxsIHNl cXVlbmNlcyBmb3Igc3luY2hyb25pemF0aW9uLCBhbmQKKyAgIGFsbCBjaGFuZ2VzIGluIGFsbCB0 YWJsZXMgZXhjZXB0IDxzdHJ1Y3RuYW1lPnVzZXJzPC9zdHJ1Y3RuYW1lPiBhbmQKKyAgIDxzdHJ1 Y3RuYW1lPmRlcGFydG1lbnRzPC9zdHJ1Y3RuYW1lPjoKKzxwcm9ncmFtbGlzdGluZz4KK0NSRUFU RSBQVUJMSUNBVElPTiBhbGxfc2VxdWVuY2VzX3RhYmxlc19leGNlcHQgRk9SIEFMTCBTRVFVRU5D RVMsIEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxFICh1c2VycywgZGVwYXJ0bWVudHMpOwogPC9wcm9n cmFtbGlzdGluZz4KICAgPC9wYXJhPgogIDwvcmVmc2VjdDE+CmRpZmYgLS1naXQgYS9kb2Mvc3Jj L3NnbWwvcmVmL3BzcWwtcmVmLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL3BzcWwtcmVmLnNnbWwK aW5kZXggMzU1MGJkYTRkODAuLjBlNTQzZmRkNmEyIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwv cmVmL3BzcWwtcmVmLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9wc3FsLXJlZi5zZ21sCkBA IC0yMTAzLDggKzIxMDMsOSBAQCBTRUxFQ1QgJDEgXHBhcnNlIHN0bXQxCiAgICAgICAgIGxpc3Rl ZC4KICAgICAgICAgSWYgPGxpdGVyYWw+eDwvbGl0ZXJhbD4gaXMgYXBwZW5kZWQgdG8gdGhlIGNv bW1hbmQgbmFtZSwgdGhlIHJlc3VsdHMKICAgICAgICAgYXJlIGRpc3BsYXllZCBpbiBleHBhbmRl ZCBtb2RlLgotICAgICAgICBJZiA8bGl0ZXJhbD4rPC9saXRlcmFsPiBpcyBhcHBlbmRlZCB0byB0 aGUgY29tbWFuZCBuYW1lLCB0aGUgdGFibGVzIGFuZAotICAgICAgICBzY2hlbWFzIGFzc29jaWF0 ZWQgd2l0aCBlYWNoIHB1YmxpY2F0aW9uIGFyZSBzaG93biBhcyB3ZWxsLgorICAgICAgICBJZiA8 bGl0ZXJhbD4rPC9saXRlcmFsPiBpcyBhcHBlbmRlZCB0byB0aGUgY29tbWFuZCBuYW1lLCB0aGUg dGFibGVzLAorICAgICAgICBleGNsdWRlZCB0YWJsZXMsIGFuZCBzY2hlbWFzIGFzc29jaWF0ZWQg d2l0aCBlYWNoIHB1YmxpY2F0aW9uIGFyZSBzaG93bgorICAgICAgICBhcyB3ZWxsLgogICAgICAg ICA8L3BhcmE+CiAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICA8L3Zhcmxpc3RlbnRyeT4KZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcHVibGljYXRpb24uYyBiL3NyYy9iYWNr ZW5kL2NhdGFsb2cvcGdfcHVibGljYXRpb24uYwppbmRleCA5YTQ3OTFjNTczZS4uYWFkYzdjMjAy YzYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcHVibGljYXRpb24uYworKysg Yi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMKQEAgLTUzLDM3ICs1Myw0OCBA QCB0eXBlZGVmIHN0cnVjdAogICogZXJyb3IgaWYgbm90LgogICovCiBzdGF0aWMgdm9pZAotY2hl Y2tfcHVibGljYXRpb25fYWRkX3JlbGF0aW9uKFJlbGF0aW9uIHRhcmdldHJlbCkKK2NoZWNrX3B1 YmxpY2F0aW9uX2FkZF9yZWxhdGlvbihQdWJsaWNhdGlvblJlbEluZm8gKnByaSkKIHsKKwlSZWxh dGlvbgl0YXJnZXRyZWwgPSBwcmktPnJlbGF0aW9uOworCWNvbnN0IGNoYXIgKmVycm9ybXNnOwor CisJaWYgKHByaS0+ZXhjZXB0KQorCQllcnJvcm1zZyA9IGdldHRleHRfbm9vcCgiY2Fubm90IHVz ZSBwdWJsaWNhdGlvbiBFWENFUFQgY2xhdXNlIGZvciByZWxhdGlvbiBcIiVzXCIiKTsKKwllbHNl CisJCWVycm9ybXNnID0gZ2V0dGV4dF9ub29wKCJjYW5ub3QgYWRkIHJlbGF0aW9uIFwiJXNcIiB0 byBwdWJsaWNhdGlvbiIpOworCisJLyogSWYgaW4gRVhDRVBUIGNsYXVzZSwgbXVzdCBiZSByb290 IHBhcnRpdGlvbmVkIHRhYmxlICovCisJaWYgKHByaS0+ZXhjZXB0ICYmIHRhcmdldHJlbC0+cmRf cmVsLT5yZWxpc3BhcnRpdGlvbikKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJD T0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQkgZXJybXNnKGVycm9ybXNnLCBSZWxh dGlvbkdldFJlbGF0aW9uTmFtZSh0YXJnZXRyZWwpKSwKKwkJCQkgZXJyZGV0YWlsKCJUaGlzIG9w ZXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGZvciBpbmRpdmlkdWFsIHBhcnRpdGlvbnMuIikpKTsK KwogCS8qIE11c3QgYmUgYSByZWd1bGFyIG9yIHBhcnRpdGlvbmVkIHRhYmxlICovCiAJaWYgKFJl bGF0aW9uR2V0Rm9ybSh0YXJnZXRyZWwpLT5yZWxraW5kICE9IFJFTEtJTkRfUkVMQVRJT04gJiYK IAkJUmVsYXRpb25HZXRGb3JtKHRhcmdldHJlbCktPnJlbGtpbmQgIT0gUkVMS0lORF9QQVJUSVRJ T05FRF9UQUJMRSkKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFM SURfUEFSQU1FVEVSX1ZBTFVFKSwKLQkJCQkgZXJybXNnKCJjYW5ub3QgYWRkIHJlbGF0aW9uIFwi JXNcIiB0byBwdWJsaWNhdGlvbiIsCi0JCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZSh0YXJn ZXRyZWwpKSwKKwkJCQkgZXJybXNnKGVycm9ybXNnLCBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZSh0 YXJnZXRyZWwpKSwKIAkJCQkgZXJyZGV0YWlsX3JlbGtpbmRfbm90X3N1cHBvcnRlZChSZWxhdGlv bkdldEZvcm0odGFyZ2V0cmVsKS0+cmVsa2luZCkpKTsKIAogCS8qIENhbid0IGJlIHN5c3RlbSB0 YWJsZSAqLwogCWlmIChJc0NhdGFsb2dSZWxhdGlvbih0YXJnZXRyZWwpKQogCQllcmVwb3J0KEVS Uk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAotCQkJ CSBlcnJtc2coImNhbm5vdCBhZGQgcmVsYXRpb24gXCIlc1wiIHRvIHB1YmxpY2F0aW9uIiwKLQkJ CQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHRhcmdldHJlbCkpLAorCQkJCSBlcnJtc2coZXJy b3Jtc2csIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHRhcmdldHJlbCkpLAogCQkJCSBlcnJkZXRh aWwoIlRoaXMgb3BlcmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHN5c3RlbSB0YWJsZXMuIikp KTsKIAogCS8qIFVOTE9HR0VEIGFuZCBURU1QIHJlbGF0aW9ucyBjYW5ub3QgYmUgcGFydCBvZiBw dWJsaWNhdGlvbi4gKi8KIAlpZiAodGFyZ2V0cmVsLT5yZF9yZWwtPnJlbHBlcnNpc3RlbmNlID09 IFJFTFBFUlNJU1RFTkNFX1RFTVApCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJS Q09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCi0JCQkJIGVycm1zZygiY2Fubm90IGFkZCBy ZWxhdGlvbiBcIiVzXCIgdG8gcHVibGljYXRpb24iLAotCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlv bk5hbWUodGFyZ2V0cmVsKSksCisJCQkJIGVycm1zZyhlcnJvcm1zZywgUmVsYXRpb25HZXRSZWxh dGlvbk5hbWUodGFyZ2V0cmVsKSksCiAJCQkJIGVycmRldGFpbCgiVGhpcyBvcGVyYXRpb24gaXMg bm90IHN1cHBvcnRlZCBmb3IgdGVtcG9yYXJ5IHRhYmxlcy4iKSkpOwogCWVsc2UgaWYgKHRhcmdl dHJlbC0+cmRfcmVsLT5yZWxwZXJzaXN0ZW5jZSA9PSBSRUxQRVJTSVNURU5DRV9VTkxPR0dFRCkK IAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVS X1ZBTFVFKSwKLQkJCQkgZXJybXNnKCJjYW5ub3QgYWRkIHJlbGF0aW9uIFwiJXNcIiB0byBwdWJs aWNhdGlvbiIsCi0JCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZSh0YXJnZXRyZWwpKSwKKwkJ CQkgZXJybXNnKGVycm9ybXNnLCBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZSh0YXJnZXRyZWwpKSwK IAkJCQkgZXJyZGV0YWlsKCJUaGlzIG9wZXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGZvciB1bmxv Z2dlZCB0YWJsZXMuIikpKTsKIH0KIApAQCAtMzY2LDcgKzM3Nyw3IEBAIEdldFRvcE1vc3RBbmNl c3RvckluUHVibGljYXRpb24oT2lkIHB1Ym9pZCwgTGlzdCAqYW5jZXN0b3JzLCBpbnQgKmFuY2Vz dG9yX2xldmVsCiAJZm9yZWFjaChsYywgYW5jZXN0b3JzKQogCXsKIAkJT2lkCQkJYW5jZXN0b3Ig PSBsZmlyc3Rfb2lkKGxjKTsKLQkJTGlzdAkgICAqYXB1YmlkcyA9IEdldFJlbGF0aW9uUHVibGlj YXRpb25zKGFuY2VzdG9yKTsKKwkJTGlzdAkgICAqYXB1YmlkcyA9IEdldFJlbGF0aW9uSW5jbHVk ZWRQdWJsaWNhdGlvbnMoYW5jZXN0b3IpOwogCQlMaXN0CSAgICphc2NoZW1hUHViaWRzID0gTklM OwogCiAJCWxldmVsKys7CkBAIC00NjYsNyArNDc3LDcgQEAgcHVibGljYXRpb25fYWRkX3JlbGF0 aW9uKE9pZCBwdWJpZCwgUHVibGljYXRpb25SZWxJbmZvICpwcmksCiAJCQkJCQlSZWxhdGlvbkdl dFJlbGF0aW9uTmFtZSh0YXJnZXRyZWwpLCBwdWItPm5hbWUpKSk7CiAJfQogCi0JY2hlY2tfcHVi bGljYXRpb25fYWRkX3JlbGF0aW9uKHRhcmdldHJlbCk7CisJY2hlY2tfcHVibGljYXRpb25fYWRk X3JlbGF0aW9uKHByaSk7CiAKIAkvKiBWYWxpZGF0ZSBhbmQgdHJhbnNsYXRlIGNvbHVtbiBuYW1l cyBpbnRvIGEgQml0bWFwc2V0IG9mIGF0dG51bXMuICovCiAJYXR0bnVtcyA9IHB1Yl9jb2xsaXN0 X3ZhbGlkYXRlKHByaS0+cmVsYXRpb24sIHByaS0+Y29sdW1ucyk7CkBAIC00ODIsNiArNDkzLDgg QEAgcHVibGljYXRpb25fYWRkX3JlbGF0aW9uKE9pZCBwdWJpZCwgUHVibGljYXRpb25SZWxJbmZv ICpwcmksCiAJCU9iamVjdElkR2V0RGF0dW0ocHViaWQpOwogCXZhbHVlc1tBbnVtX3BnX3B1Ymxp Y2F0aW9uX3JlbF9wcnJlbGlkIC0gMV0gPQogCQlPYmplY3RJZEdldERhdHVtKHJlbGlkKTsKKwl2 YWx1ZXNbQW51bV9wZ19wdWJsaWNhdGlvbl9yZWxfcHJleGNlcHQgLSAxXSA9CisJCUJvb2xHZXRE YXR1bShwcmktPmV4Y2VwdCk7CiAKIAkvKiBBZGQgcXVhbGlmaWNhdGlvbnMsIGlmIGF2YWlsYWJs ZSAqLwogCWlmIChwcmktPndoZXJlQ2xhdXNlICE9IE5VTEwpCkBAIC01MzAsMTcgKzU0MywyNiBA QCBwdWJsaWNhdGlvbl9hZGRfcmVsYXRpb24oT2lkIHB1YmlkLCBQdWJsaWNhdGlvblJlbEluZm8g KnByaSwKIAl0YWJsZV9jbG9zZShyZWwsIFJvd0V4Y2x1c2l2ZUxvY2spOwogCiAJLyoKLQkgKiBJ bnZhbGlkYXRlIHJlbGNhY2hlIHNvIHRoYXQgcHVibGljYXRpb24gaW5mbyBpcyByZWJ1aWx0Lgot CSAqCi0JICogRm9yIHRoZSBwYXJ0aXRpb25lZCB0YWJsZXMsIHdlIG11c3QgaW52YWxpZGF0ZSBh bGwgcGFydGl0aW9ucyBjb250YWluZWQKLQkgKiBpbiB0aGUgcmVzcGVjdGl2ZSBwYXJ0aXRpb24g aGllcmFyY2hpZXMsIG5vdCBqdXN0IHRoZSBvbmUgZXhwbGljaXRseQotCSAqIG1lbnRpb25lZCBp biB0aGUgcHVibGljYXRpb24uIFRoaXMgaXMgcmVxdWlyZWQgYmVjYXVzZSB3ZSBpbXBsaWNpdGx5 Ci0JICogcHVibGlzaCB0aGUgY2hpbGQgdGFibGVzIHdoZW4gdGhlIHBhcmVudCB0YWJsZSBpcyBw dWJsaXNoZWQuCisJICogUmVsYXRpb25zIGV4Y2x1ZGVkIHZpYSB0aGUgRVhDRVBUIGNsYXVzZSBk byBub3QgbmVlZCBleHBsaWNpdAorCSAqIGludmFsaWRhdGlvbiBhcyBDcmVhdGVQdWJsaWNhdGlv bigpIGZ1bmN0aW9uIGludmFsaWRhdGVzIGFsbCByZWxhdGlvbnMKKwkgKiBhcyBwYXJ0IG9mIGRl ZmluaW5nIGEgRk9SIEFMTCBUQUJMRVMgcHVibGljYXRpb24uCiAJICovCi0JcmVsaWRzID0gR2V0 UHViUGFydGl0aW9uT3B0aW9uUmVsYXRpb25zKHJlbGlkcywgUFVCTElDQVRJT05fUEFSVF9BTEws Ci0JCQkJCQkJCQkJCXJlbGlkKTsKKwlpZiAoIXByaS0+ZXhjZXB0KQorCXsKKwkJLyoKKwkJICog SW52YWxpZGF0ZSByZWxjYWNoZSBzbyB0aGF0IHB1YmxpY2F0aW9uIGluZm8gaXMgcmVidWlsdC4K KwkJICoKKwkJICogRm9yIHRoZSBwYXJ0aXRpb25lZCB0YWJsZXMsIHdlIG11c3QgaW52YWxpZGF0 ZSBhbGwgcGFydGl0aW9ucworCQkgKiBjb250YWluZWQgaW4gdGhlIHJlc3BlY3RpdmUgcGFydGl0 aW9uIGhpZXJhcmNoaWVzLCBub3QganVzdCB0aGUgb25lCisJCSAqIGV4cGxpY2l0bHkgbWVudGlv bmVkIGluIHRoZSBwdWJsaWNhdGlvbi4gVGhpcyBpcyByZXF1aXJlZCBiZWNhdXNlCisJCSAqIHdl IGltcGxpY2l0bHkgcHVibGlzaCB0aGUgY2hpbGQgdGFibGVzIHdoZW4gdGhlIHBhcmVudCB0YWJs ZSBpcworCQkgKiBwdWJsaXNoZWQuCisJCSAqLworCQlyZWxpZHMgPSBHZXRQdWJQYXJ0aXRpb25P cHRpb25SZWxhdGlvbnMocmVsaWRzLCBQVUJMSUNBVElPTl9QQVJUX0FMTCwKKwkJCQkJCQkJCQkJ CXJlbGlkKTsKIAotCUludmFsaWRhdGVQdWJsaWNhdGlvblJlbHMocmVsaWRzKTsKKwkJSW52YWxp ZGF0ZVB1YmxpY2F0aW9uUmVscyhyZWxpZHMpOworCX0KIAogCXJldHVybiBteXNlbGY7CiB9CkBA IC03NDksMjMgKzc3MSwzMCBAQCBwdWJsaWNhdGlvbl9hZGRfc2NoZW1hKE9pZCBwdWJpZCwgT2lk IHNjaGVtYWlkLCBib29sIGlmX25vdF9leGlzdHMpCiAJcmV0dXJuIG15c2VsZjsKIH0KIAotLyog R2V0cyBsaXN0IG9mIHB1YmxpY2F0aW9uIG9pZHMgZm9yIGEgcmVsYXRpb24gKi8KLUxpc3QgKgot R2V0UmVsYXRpb25QdWJsaWNhdGlvbnMoT2lkIHJlbGlkKQorLyoKKyAqIEludGVybmFsIGZ1bmN0 aW9uIHRvIGdldCB0aGUgbGlzdCBvZiBwdWJsaWNhdGlvbiBvaWRzIGZvciBhIHJlbGF0aW9uLgor ICoKKyAqIElmIGV4Y2VwdF9mbGFnIGlzIHRydWUsIHJldHVybnMgdGhlIGxpc3Qgb2YgcHVibGlj YXRpb24gdGhhdCBzcGVjaWZpZWQgdGhlCisgKiByZWxhdGlvbiBpbiBFWENFUFQgY2xhdXNlOyBv dGhlcndpc2UsIHJldHVybnMgdGhlIGxpc3Qgb2YgcHVibGljYXRpb25zCisgKiBpbiB3aGljaCBy ZWxhdGlvbiBpcyBpbmNsdWRlZC4KKyAqLworc3RhdGljIExpc3QgKgorZ2V0X3JlbGF0aW9uX3B1 YmxpY2F0aW9ucyhPaWQgcmVsaWQsIGJvb2wgZXhjZXB0X2ZsYWcpCiB7CiAJTGlzdAkgICAqcmVz dWx0ID0gTklMOwogCUNhdENMaXN0ICAgKnB1YnJlbGxpc3Q7Ci0JaW50CQkJaTsKIAogCS8qIEZp bmQgYWxsIHB1YmxpY2F0aW9ucyBhc3NvY2lhdGVkIHdpdGggdGhlIHJlbGF0aW9uLiAqLwogCXB1 YnJlbGxpc3QgPSBTZWFyY2hTeXNDYWNoZUxpc3QxKFBVQkxJQ0FUSU9OUkVMTUFQLAogCQkJCQkJ CQkJIE9iamVjdElkR2V0RGF0dW0ocmVsaWQpKTsKLQlmb3IgKGkgPSAwOyBpIDwgcHVicmVsbGlz dC0+bl9tZW1iZXJzOyBpKyspCisJZm9yIChpbnQgaSA9IDA7IGkgPCBwdWJyZWxsaXN0LT5uX21l bWJlcnM7IGkrKykKIAl7CiAJCUhlYXBUdXBsZQl0dXAgPSAmcHVicmVsbGlzdC0+bWVtYmVyc1tp XS0+dHVwbGU7Ci0JCU9pZAkJCXB1YmlkID0gKChGb3JtX3BnX3B1YmxpY2F0aW9uX3JlbCkgR0VU U1RSVUNUKHR1cCkpLT5wcnB1YmlkOworCQlGb3JtX3BnX3B1YmxpY2F0aW9uX3JlbCBwdWJyZWwg PSAoRm9ybV9wZ19wdWJsaWNhdGlvbl9yZWwpIEdFVFNUUlVDVCh0dXApOworCQlPaWQJCQlwdWJp ZCA9IHB1YnJlbC0+cHJwdWJpZDsKIAotCQlyZXN1bHQgPSBsYXBwZW5kX29pZChyZXN1bHQsIHB1 YmlkKTsKKwkJaWYgKHB1YnJlbC0+cHJleGNlcHQgPT0gZXhjZXB0X2ZsYWcpCisJCQlyZXN1bHQg PSBsYXBwZW5kX29pZChyZXN1bHQsIHB1YmlkKTsKIAl9CiAKIAlSZWxlYXNlU3lzQ2FjaGVMaXN0 KHB1YnJlbGxpc3QpOwpAQCAtNzc0LDEzICs4MDMsMzMgQEAgR2V0UmVsYXRpb25QdWJsaWNhdGlv bnMoT2lkIHJlbGlkKQogfQogCiAvKgotICogR2V0cyBsaXN0IG9mIHJlbGF0aW9uIG9pZHMgZm9y IGEgcHVibGljYXRpb24uCi0gKgotICogVGhpcyBzaG91bGQgb25seSBiZSB1c2VkIEZPUiBUQUJM RSBwdWJsaWNhdGlvbnMsIHRoZSBGT1IgQUxMIFRBQkxFUy9TRVFVRU5DRVMKLSAqIHNob3VsZCB1 c2UgR2V0QWxsUHVibGljYXRpb25SZWxhdGlvbnMoKS4KKyAqIEdldHMgbGlzdCBvZiBwdWJsaWNh dGlvbiBvaWRzIGZvciBhIHJlbGF0aW9uLgorICovCitMaXN0ICoKK0dldFJlbGF0aW9uSW5jbHVk ZWRQdWJsaWNhdGlvbnMoT2lkIHJlbGlkKQoreworCXJldHVybiBnZXRfcmVsYXRpb25fcHVibGlj YXRpb25zKHJlbGlkLCBmYWxzZSk7Cit9CisKKy8qCisgKiBHZXRzIGxpc3Qgb2YgcHVibGljYXRp b24gb2lkcyB3aGljaCBoYXMgcmVsYXRpb24gaW4gRVhDRVBUIGNsYXVzZS4KICAqLwogTGlzdCAq Ci1HZXRQdWJsaWNhdGlvblJlbGF0aW9ucyhPaWQgcHViaWQsIFB1YmxpY2F0aW9uUGFydE9wdCBw dWJfcGFydG9wdCkKK0dldFJlbGF0aW9uRXhjbHVkZWRQdWJsaWNhdGlvbnMoT2lkIHJlbGlkKQor eworCXJldHVybiBnZXRfcmVsYXRpb25fcHVibGljYXRpb25zKHJlbGlkLCB0cnVlKTsKK30KKwor LyoKKyAqIEludGVybmFsIGZ1bmN0aW9uIHRvIGdldCB0aGUgbGlzdCBvZiByZWxhdGlvbiBvaWRz IGZvciBhIHB1YmxpY2F0aW9uLgorICoKKyAqIElmIGV4Y2VwdF9mbGFnIGlzIHRydWUsIHJldHVy bnMgdGhlIGxpc3Qgb2YgcmVsYXRpb25zIHNwZWNpZmllZCBpbiB0aGUKKyAqIEVYQ0VQVCBjbGF1 c2Ugb2YgdGhlIHB1YmxpY2F0aW9uOyBvdGhlcndpc2UsIHJldHVybnMgdGhlIGxpc3Qgb2YgcmVs YXRpb25zCisgKiBpbmNsdWRlZCBpbiB0aGUgcHVibGljYXRpb24uCisgKi8KK3N0YXRpYyBMaXN0 ICoKK2dldF9wdWJsaWNhdGlvbl9yZWxhdGlvbnMoT2lkIHB1YmlkLCBQdWJsaWNhdGlvblBhcnRP cHQgcHViX3BhcnRvcHQsCisJCQkJCQkgIGJvb2wgZXhjZXB0X2ZsYWcpCiB7CiAJTGlzdAkgICAq cmVzdWx0OwogCVJlbGF0aW9uCXB1YnJlbHNyZWw7CkBAIC04MDUsOCArODU0LDEwIEBAIEdldFB1 YmxpY2F0aW9uUmVsYXRpb25zKE9pZCBwdWJpZCwgUHVibGljYXRpb25QYXJ0T3B0IHB1Yl9wYXJ0 b3B0KQogCQlGb3JtX3BnX3B1YmxpY2F0aW9uX3JlbCBwdWJyZWw7CiAKIAkJcHVicmVsID0gKEZv cm1fcGdfcHVibGljYXRpb25fcmVsKSBHRVRTVFJVQ1QodHVwKTsKLQkJcmVzdWx0ID0gR2V0UHVi UGFydGl0aW9uT3B0aW9uUmVsYXRpb25zKHJlc3VsdCwgcHViX3BhcnRvcHQsCi0JCQkJCQkJCQkJ CQlwdWJyZWwtPnBycmVsaWQpOworCisJCWlmIChleGNlcHRfZmxhZyA9PSBwdWJyZWwtPnByZXhj ZXB0KQorCQkJcmVzdWx0ID0gR2V0UHViUGFydGl0aW9uT3B0aW9uUmVsYXRpb25zKHJlc3VsdCwg cHViX3BhcnRvcHQsCisJCQkJCQkJCQkJCQkJcHVicmVsLT5wcnJlbGlkKTsKIAl9CiAKIAlzeXN0 YWJsZV9lbmRzY2FuKHNjYW4pOwpAQCAtODE5LDYgKzg3MCwzNCBAQCBHZXRQdWJsaWNhdGlvblJl bGF0aW9ucyhPaWQgcHViaWQsIFB1YmxpY2F0aW9uUGFydE9wdCBwdWJfcGFydG9wdCkKIAlyZXR1 cm4gcmVzdWx0OwogfQogCisvKgorICogR2V0cyBsaXN0IG9mIHJlbGF0aW9uIG9pZHMgdGhhdCBh cmUgYXNzb2NpYXRlZCB3aXRoIGEgcHVibGljYXRpb24uCisgKgorICogVGhpcyBzaG91bGQgb25s eSBiZSB1c2VkIEZPUiBUQUJMRSBwdWJsaWNhdGlvbnMsIHRoZSBGT1IgQUxMIFRBQkxFUy9TRVFV RU5DRVMKKyAqIHNob3VsZCB1c2UgR2V0QWxsUHVibGljYXRpb25SZWxhdGlvbnMoKS4KKyAqLwor TGlzdCAqCitHZXRJbmNsdWRlZFB1YmxpY2F0aW9uUmVsYXRpb25zKE9pZCBwdWJpZCwgUHVibGlj YXRpb25QYXJ0T3B0IHB1Yl9wYXJ0b3B0KQoreworCUFzc2VydCghR2V0UHVibGljYXRpb24ocHVi aWQpLT5hbGx0YWJsZXMpOworCisJcmV0dXJuIGdldF9wdWJsaWNhdGlvbl9yZWxhdGlvbnMocHVi aWQsIHB1Yl9wYXJ0b3B0LCBmYWxzZSk7Cit9CisKKy8qCisgKiBHZXRzIGxpc3Qgb2YgdGFibGUg b2lkcyB0aGF0IHdlcmUgc3BlY2lmaWVkIGluIHRoZSBFWENFUFQgY2xhdXNlIGZvciBhCisgKiBw dWJsaWNhdGlvbi4KKyAqCisgKiBUaGlzIHNob3VsZCBvbmx5IGJlIHVzZWQgRk9SIEFMTCBUQUJM RVMgcHVibGljYXRpb25zLgorICovCitMaXN0ICoKK0dldEV4Y2x1ZGVkUHVibGljYXRpb25UYWJs ZXMoT2lkIHB1YmlkLCBQdWJsaWNhdGlvblBhcnRPcHQgcHViX3BhcnRvcHQpCit7CisJQXNzZXJ0 KEdldFB1YmxpY2F0aW9uKHB1YmlkKS0+YWxsdGFibGVzKTsKKworCXJldHVybiBnZXRfcHVibGlj YXRpb25fcmVsYXRpb25zKHB1YmlkLCBwdWJfcGFydG9wdCwgdHJ1ZSk7Cit9CisKIC8qCiAgKiBH ZXRzIGxpc3Qgb2YgcHVibGljYXRpb24gb2lkcyBmb3IgcHVibGljYXRpb25zIG1hcmtlZCBhcyBG T1IgQUxMIFRBQkxFUy4KICAqLwpAQCAtODU4LDI0ICs5MzcsMzQgQEAgR2V0QWxsVGFibGVzUHVi bGljYXRpb25zKHZvaWQpCiAKIC8qCiAgKiBHZXRzIGxpc3Qgb2YgYWxsIHJlbGF0aW9ucyBwdWJs aXNoZWQgYnkgRk9SIEFMTCBUQUJMRVMvU0VRVUVOQ0VTCi0gKiBwdWJsaWNhdGlvbihzKS4KKyAq IHB1YmxpY2F0aW9uLgogICoKICAqIElmIHRoZSBwdWJsaWNhdGlvbiBwdWJsaXNoZXMgcGFydGl0 aW9uIGNoYW5nZXMgdmlhIHRoZWlyIHJlc3BlY3RpdmUgcm9vdAogICogcGFydGl0aW9uZWQgdGFi bGVzLCB3ZSBtdXN0IGV4Y2x1ZGUgcGFydGl0aW9ucyBpbiBmYXZvciBvZiBpbmNsdWRpbmcgdGhl CiAgKiByb290IHBhcnRpdGlvbmVkIHRhYmxlcy4gVGhpcyBpcyBub3QgYXBwbGljYWJsZSB0byBG T1IgQUxMIFNFUVVFTkNFUwogICogcHVibGljYXRpb24uCisgKgorICogRm9yIGEgRk9SIEFMTCBU QUJMRVMgcHVibGljYXRpb24sIHRoZSByZXR1cm5lZCBsaXN0IGV4Y2x1ZGVzIHRhYmxlcyBtZW50 aW9uZWQKKyAqIGluIEVYQ0VQVCBUQUJMRSBjbGF1c2UuCiAgKi8KIExpc3QgKgotR2V0QWxsUHVi bGljYXRpb25SZWxhdGlvbnMoY2hhciByZWxraW5kLCBib29sIHB1YnZpYXJvb3QpCitHZXRBbGxQ dWJsaWNhdGlvblJlbGF0aW9ucyhPaWQgcHViaWQsIGNoYXIgcmVsa2luZCwgYm9vbCBwdWJ2aWFy b290KQogewogCVJlbGF0aW9uCWNsYXNzUmVsOwogCVNjYW5LZXlEYXRhIGtleVsxXTsKIAlUYWJs ZVNjYW5EZXNjIHNjYW47CiAJSGVhcFR1cGxlCXR1cGxlOwogCUxpc3QJICAgKnJlc3VsdCA9IE5J TDsKKwlMaXN0CSAgICpleGNlcHRsaXN0ID0gTklMOwogCiAJQXNzZXJ0KCEocmVsa2luZCA9PSBS RUxLSU5EX1NFUVVFTkNFICYmIHB1YnZpYXJvb3QpKTsKIAorCS8qIEVYQ0VQVCBmaWx0ZXJpbmcg YXBwbGllcyBvbmx5IHRvIHJlbGF0aW9ucywgbm90IHNlcXVlbmNlcyAqLworCWlmIChyZWxraW5k ID09IFJFTEtJTkRfUkVMQVRJT04pCisJCWV4Y2VwdGxpc3QgPSBHZXRFeGNsdWRlZFB1YmxpY2F0 aW9uVGFibGVzKHB1YmlkLCBwdWJ2aWFyb290ID8KKwkJCQkJCQkJCQkJCSAgUFVCTElDQVRJT05f UEFSVF9ST09UIDoKKwkJCQkJCQkJCQkJCSAgUFVCTElDQVRJT05fUEFSVF9MRUFGKTsKKwogCWNs YXNzUmVsID0gdGFibGVfb3BlbihSZWxhdGlvblJlbGF0aW9uSWQsIEFjY2Vzc1NoYXJlTG9jayk7 CiAKIAlTY2FuS2V5SW5pdCgma2V5WzBdLApAQCAtODkxLDcgKzk4MCw4IEBAIEdldEFsbFB1Ymxp Y2F0aW9uUmVsYXRpb25zKGNoYXIgcmVsa2luZCwgYm9vbCBwdWJ2aWFyb290KQogCQlPaWQJCQly ZWxpZCA9IHJlbEZvcm0tPm9pZDsKIAogCQlpZiAoaXNfcHVibGlzaGFibGVfY2xhc3MocmVsaWQs IHJlbEZvcm0pICYmCi0JCQkhKHJlbEZvcm0tPnJlbGlzcGFydGl0aW9uICYmIHB1YnZpYXJvb3Qp KQorCQkJIShyZWxGb3JtLT5yZWxpc3BhcnRpdGlvbiAmJiBwdWJ2aWFyb290KSAmJgorCQkJIWxp c3RfbWVtYmVyX29pZChleGNlcHRsaXN0LCByZWxpZCkpCiAJCQlyZXN1bHQgPSBsYXBwZW5kX29p ZChyZXN1bHQsIHJlbGlkKTsKIAl9CiAKQEAgLTkxMiw3ICsxMDAyLDggQEAgR2V0QWxsUHVibGlj YXRpb25SZWxhdGlvbnMoY2hhciByZWxraW5kLCBib29sIHB1YnZpYXJvb3QpCiAJCQlPaWQJCQly ZWxpZCA9IHJlbEZvcm0tPm9pZDsKIAogCQkJaWYgKGlzX3B1Ymxpc2hhYmxlX2NsYXNzKHJlbGlk LCByZWxGb3JtKSAmJgotCQkJCSFyZWxGb3JtLT5yZWxpc3BhcnRpdGlvbikKKwkJCQkhcmVsRm9y bS0+cmVsaXNwYXJ0aXRpb24gJiYKKwkJCQkhbGlzdF9tZW1iZXJfb2lkKGV4Y2VwdGxpc3QsIHJl bGlkKSkKIAkJCQlyZXN1bHQgPSBsYXBwZW5kX29pZChyZXN1bHQsIHJlbGlkKTsKIAkJfQogCkBA IC0xMTY4LDE3ICsxMjU5LDE4IEBAIHBnX2dldF9wdWJsaWNhdGlvbl90YWJsZXMoUEdfRlVOQ1RJ T05fQVJHUykKIAkJCSAqIHRob3NlLiBPdGhlcndpc2UsIGdldCB0aGUgcGFydGl0aW9uZWQgdGFi bGUgaXRzZWxmLgogCQkJICovCiAJCQlpZiAocHViX2VsZW0tPmFsbHRhYmxlcykKLQkJCQlwdWJf ZWxlbV90YWJsZXMgPSBHZXRBbGxQdWJsaWNhdGlvblJlbGF0aW9ucyhSRUxLSU5EX1JFTEFUSU9O LAorCQkJCXB1Yl9lbGVtX3RhYmxlcyA9IEdldEFsbFB1YmxpY2F0aW9uUmVsYXRpb25zKHB1Yl9l bGVtLT5vaWQsCisJCQkJCQkJCQkJCQkJCQkgUkVMS0lORF9SRUxBVElPTiwKIAkJCQkJCQkJCQkJ CQkJCSBwdWJfZWxlbS0+cHVidmlhcm9vdCk7CiAJCQllbHNlCiAJCQl7CiAJCQkJTGlzdAkgICAq cmVsaWRzLAogCQkJCQkJICAgKnNjaGVtYXJlbGlkczsKIAotCQkJCXJlbGlkcyA9IEdldFB1Ymxp Y2F0aW9uUmVsYXRpb25zKHB1Yl9lbGVtLT5vaWQsCi0JCQkJCQkJCQkJCQkgcHViX2VsZW0tPnB1 YnZpYXJvb3QgPwotCQkJCQkJCQkJCQkJIFBVQkxJQ0FUSU9OX1BBUlRfUk9PVCA6Ci0JCQkJCQkJ CQkJCQkgUFVCTElDQVRJT05fUEFSVF9MRUFGKTsKKwkJCQlyZWxpZHMgPSBHZXRJbmNsdWRlZFB1 YmxpY2F0aW9uUmVsYXRpb25zKHB1Yl9lbGVtLT5vaWQsCisJCQkJCQkJCQkJCQkJCSBwdWJfZWxl bS0+cHVidmlhcm9vdCA/CisJCQkJCQkJCQkJCQkJCSBQVUJMSUNBVElPTl9QQVJUX1JPT1QgOgor CQkJCQkJCQkJCQkJCQkgUFVCTElDQVRJT05fUEFSVF9MRUFGKTsKIAkJCQlzY2hlbWFyZWxpZHMg PSBHZXRBbGxTY2hlbWFQdWJsaWNhdGlvblJlbGF0aW9ucyhwdWJfZWxlbS0+b2lkLAogCQkJCQkJ CQkJCQkJCQkJCXB1Yl9lbGVtLT5wdWJ2aWFyb290ID8KIAkJCQkJCQkJCQkJCQkJCQlQVUJMSUNB VElPTl9QQVJUX1JPT1QgOgpAQCAtMTM2Nyw3ICsxNDU5LDkgQEAgcGdfZ2V0X3B1YmxpY2F0aW9u X3NlcXVlbmNlcyhQR19GVU5DVElPTl9BUkdTKQogCQlwdWJsaWNhdGlvbiA9IEdldFB1YmxpY2F0 aW9uQnlOYW1lKHB1Ym5hbWUsIGZhbHNlKTsKIAogCQlpZiAocHVibGljYXRpb24tPmFsbHNlcXVl bmNlcykKLQkJCXNlcXVlbmNlcyA9IEdldEFsbFB1YmxpY2F0aW9uUmVsYXRpb25zKFJFTEtJTkRf U0VRVUVOQ0UsIGZhbHNlKTsKKwkJCXNlcXVlbmNlcyA9IEdldEFsbFB1YmxpY2F0aW9uUmVsYXRp b25zKHB1YmxpY2F0aW9uLT5vaWQsCisJCQkJCQkJCQkJCQkgICBSRUxLSU5EX1NFUVVFTkNFLAor CQkJCQkJCQkJCQkJICAgZmFsc2UpOwogCiAJCWZ1bmNjdHgtPnVzZXJfZmN0eCA9IHNlcXVlbmNl czsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMg Yi9zcmMvYmFja2VuZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYwppbmRleCBmYzNhNGMxOWU2 NS4uNmEzY2E0NzUxZmEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3B1YmxpY2F0 aW9uY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5jCkBA IC0xODEsNyArMTgxLDcgQEAgcGFyc2VfcHVibGljYXRpb25fb3B0aW9ucyhQYXJzZVN0YXRlICpw c3RhdGUsCiAgKi8KIHN0YXRpYyB2b2lkCiBPYmplY3RzSW5QdWJsaWNhdGlvblRvT2lkcyhMaXN0 ICpwdWJvYmpzcGVjX2xpc3QsIFBhcnNlU3RhdGUgKnBzdGF0ZSwKLQkJCQkJCSAgIExpc3QgKipy ZWxzLCBMaXN0ICoqc2NoZW1hcykKKwkJCQkJCSAgIExpc3QgKipyZWxzLCBMaXN0ICoqZXhjZXB0 cmVscywgTGlzdCAqKnNjaGVtYXMpCiB7CiAJTGlzdENlbGwgICAqY2VsbDsKIAlQdWJsaWNhdGlv bk9ialNwZWMgKnB1Ym9iajsKQEAgLTE5OCw3ICsxOTgsMTIgQEAgT2JqZWN0c0luUHVibGljYXRp b25Ub09pZHMoTGlzdCAqcHVib2Jqc3BlY19saXN0LCBQYXJzZVN0YXRlICpwc3RhdGUsCiAKIAkJ c3dpdGNoIChwdWJvYmotPnB1Ym9ianR5cGUpCiAJCXsKKwkJCWNhc2UgUFVCTElDQVRJT05PQkpf RVhDRVBUX1RBQkxFOgorCQkJCXB1Ym9iai0+cHVidGFibGUtPmV4Y2VwdCA9IHRydWU7CisJCQkJ KmV4Y2VwdHJlbHMgPSBsYXBwZW5kKCpleGNlcHRyZWxzLCBwdWJvYmotPnB1YnRhYmxlKTsKKwkJ CQlicmVhazsKIAkJCWNhc2UgUFVCTElDQVRJT05PQkpfVEFCTEU6CisJCQkJcHVib2JqLT5wdWJ0 YWJsZS0+ZXhjZXB0ID0gZmFsc2U7CiAJCQkJKnJlbHMgPSBsYXBwZW5kKCpyZWxzLCBwdWJvYmot PnB1YnRhYmxlKTsKIAkJCQlicmVhazsKIAkJCWNhc2UgUFVCTElDQVRJT05PQkpfVEFCTEVTX0lO X1NDSEVNQToKQEAgLTUxOSw4ICs1MjQsOCBAQCBJbnZhbGlkYXRlUHViUmVsU3luY0NhY2hlKE9p ZCBwdWJpZCwgYm9vbCBwdWJhbGx0YWJsZXMpCiAJCSAqIGEgdGFyZ2V0LiBIb3dldmVyLCBXQUwg cmVjb3JkcyBmb3IgVFJVTkNBVEUgc3BlY2lmeSBib3RoIGEgcm9vdCBhbmQKIAkJICogaXRzIGxl YXZlcy4KIAkJICovCi0JCXJlbGlkcyA9IEdldFB1YmxpY2F0aW9uUmVsYXRpb25zKHB1YmlkLAot CQkJCQkJCQkJCSBQVUJMSUNBVElPTl9QQVJUX0FMTCk7CisJCXJlbGlkcyA9IEdldEluY2x1ZGVk UHVibGljYXRpb25SZWxhdGlvbnMocHViaWQsCisJCQkJCQkJCQkJCQkgUFVCTElDQVRJT05fUEFS VF9BTEwpOwogCQlzY2hlbWFyZWxpZHMgPSBHZXRBbGxTY2hlbWFQdWJsaWNhdGlvblJlbGF0aW9u cyhwdWJpZCwKIAkJCQkJCQkJCQkJCQkJUFVCTElDQVRJT05fUEFSVF9BTEwpOwogCkBAIC04NDQs NiArODQ5LDcgQEAgQ3JlYXRlUHVibGljYXRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVQ dWJsaWNhdGlvblN0bXQgKnN0bXQpCiAJY2hhcgkJcHVibGlzaF9nZW5lcmF0ZWRfY29sdW1uczsK IAlBY2xSZXN1bHQJYWNscmVzdWx0OwogCUxpc3QJICAgKnJlbGF0aW9ucyA9IE5JTDsKKwlMaXN0 CSAgICpleGNlcHRyZWxhdGlvbnMgPSBOSUw7CiAJTGlzdAkgICAqc2NoZW1haWRsaXN0ID0gTklM OwogCiAJLyogbXVzdCBoYXZlIENSRUFURSBwcml2aWxlZ2Ugb24gZGF0YWJhc2UgKi8KQEAgLTky OSw4ICs5MzUsMjEgQEAgQ3JlYXRlUHVibGljYXRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVh dGVQdWJsaWNhdGlvblN0bXQgKnN0bXQpCiAJQ29tbWFuZENvdW50ZXJJbmNyZW1lbnQoKTsKIAog CS8qIEFzc29jaWF0ZSBvYmplY3RzIHdpdGggdGhlIHB1YmxpY2F0aW9uLiAqLworCU9iamVjdHNJ blB1YmxpY2F0aW9uVG9PaWRzKHN0bXQtPnB1Ym9iamVjdHMsIHBzdGF0ZSwgJnJlbGF0aW9ucywK KwkJCQkJCQkgICAmZXhjZXB0cmVsYXRpb25zLCAmc2NoZW1haWRsaXN0KTsKKwogCWlmIChzdG10 LT5mb3JfYWxsX3RhYmxlcykKIAl7CisJCS8qIFByb2Nlc3MgRVhDRVBUIHRhYmxlIGxpc3QgKi8K KwkJaWYgKGV4Y2VwdHJlbGF0aW9ucyAhPSBOSUwpCisJCXsKKwkJCUxpc3QJICAgKnJlbHM7CisK KwkJCXJlbHMgPSBPcGVuVGFibGVMaXN0KGV4Y2VwdHJlbGF0aW9ucyk7CisJCQlQdWJsaWNhdGlv bkFkZFRhYmxlcyhwdWJvaWQsIHJlbHMsIHRydWUsIE5VTEwpOworCQkJQ2xvc2VUYWJsZUxpc3Qo cmVscyk7CisJCX0KKwogCQkvKgogCQkgKiBJbnZhbGlkYXRlIHJlbGNhY2hlIHNvIHRoYXQgcHVi bGljYXRpb24gaW5mbyBpcyByZWJ1aWx0LiBTZXF1ZW5jZXMKIAkJICogcHVibGljYXRpb24gZG9l c24ndCByZXF1aXJlIGludmFsaWRhdGlvbiwgYXMgcmVwbGljYSBpZGVudGl0eQpAQCAtOTQwLDkg Kzk1OSw2IEBAIENyZWF0ZVB1YmxpY2F0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlUHVi bGljYXRpb25TdG10ICpzdG10KQogCX0KIAllbHNlIGlmICghc3RtdC0+Zm9yX2FsbF9zZXF1ZW5j ZXMpCiAJewotCQlPYmplY3RzSW5QdWJsaWNhdGlvblRvT2lkcyhzdG10LT5wdWJvYmplY3RzLCBw c3RhdGUsICZyZWxhdGlvbnMsCi0JCQkJCQkJCSAgICZzY2hlbWFpZGxpc3QpOwotCiAJCS8qIEZP UiBUQUJMRVMgSU4gU0NIRU1BIHJlcXVpcmVzIHN1cGVydXNlciAqLwogCQlpZiAoc2NoZW1haWRs aXN0ICE9IE5JTCAmJiAhc3VwZXJ1c2VyKCkpCiAJCQllcmVwb3J0KEVSUk9SLApAQCAtMTA1MCw4 ICsxMDY2LDggQEAgQWx0ZXJQdWJsaWNhdGlvbk9wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBB bHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCwKIAkJTG9ja0RhdGFiYXNlT2JqZWN0KFB1YmxpY2F0 aW9uUmVsYXRpb25JZCwgcHViZm9ybS0+b2lkLCAwLAogCQkJCQkJICAgQWNjZXNzU2hhcmVMb2Nr KTsKIAotCQlyb290X3JlbGlkcyA9IEdldFB1YmxpY2F0aW9uUmVsYXRpb25zKHB1YmZvcm0tPm9p ZCwKLQkJCQkJCQkJCQkJICBQVUJMSUNBVElPTl9QQVJUX1JPT1QpOworCQlyb290X3JlbGlkcyA9 IEdldEluY2x1ZGVkUHVibGljYXRpb25SZWxhdGlvbnMocHViZm9ybS0+b2lkLAorCQkJCQkJCQkJ CQkJCSAgUFVCTElDQVRJT05fUEFSVF9ST09UKTsKIAogCQlmb3JlYWNoKGxjLCByb290X3JlbGlk cykKIAkJewpAQCAtMTE3MCw4ICsxMTg2LDggQEAgQWx0ZXJQdWJsaWNhdGlvbk9wdGlvbnMoUGFy c2VTdGF0ZSAqcHN0YXRlLCBBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCwKIAkJICogdHJlZXMs IG5vdCBqdXN0IHRob3NlIGV4cGxpY2l0bHkgbWVudGlvbmVkIGluIHRoZSBwdWJsaWNhdGlvbi4K IAkJICovCiAJCWlmIChyb290X3JlbGlkcyA9PSBOSUwpCi0JCQlyZWxpZHMgPSBHZXRQdWJsaWNh dGlvblJlbGF0aW9ucyhwdWJmb3JtLT5vaWQsCi0JCQkJCQkJCQkJCSBQVUJMSUNBVElPTl9QQVJU X0FMTCk7CisJCQlyZWxpZHMgPSBHZXRJbmNsdWRlZFB1YmxpY2F0aW9uUmVsYXRpb25zKHB1YmZv cm0tPm9pZCwKKwkJCQkJCQkJCQkJCQkgUFVCTElDQVRJT05fUEFSVF9BTEwpOwogCQllbHNlCiAJ CXsKIAkJCS8qCkBAIC0xMjU2LDggKzEyNzIsOCBAQCBBbHRlclB1YmxpY2F0aW9uVGFibGVzKEFs dGVyUHVibGljYXRpb25TdG10ICpzdG10LCBIZWFwVHVwbGUgdHVwLAogCQlQdWJsaWNhdGlvbkRy b3BUYWJsZXMocHViaWQsIHJlbHMsIGZhbHNlKTsKIAllbHNlCQkJCQkJLyogQVBfU2V0T2JqZWN0 cyAqLwogCXsKLQkJTGlzdAkgICAqb2xkcmVsaWRzID0gR2V0UHVibGljYXRpb25SZWxhdGlvbnMo cHViaWQsCi0JCQkJCQkJCQkJCQkJCVBVQkxJQ0FUSU9OX1BBUlRfUk9PVCk7CisJCUxpc3QJICAg Km9sZHJlbGlkcyA9IEdldEluY2x1ZGVkUHVibGljYXRpb25SZWxhdGlvbnMocHViaWQsCisJCQkJ CQkJCQkJCQkJCQkJUFVCTElDQVRJT05fUEFSVF9ST09UKTsKIAkJTGlzdAkgICAqZGVscmVscyA9 IE5JTDsKIAkJTGlzdENlbGwgICAqb2xkbGM7CiAKQEAgLTEzNTgsNiArMTM3NCw3IEBAIEFsdGVy UHVibGljYXRpb25UYWJsZXMoQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsIEhlYXBUdXBsZSB0 dXAsCiAJCQkJb2xkcmVsID0gcGFsbG9jX29iamVjdChQdWJsaWNhdGlvblJlbEluZm8pOwogCQkJ CW9sZHJlbC0+d2hlcmVDbGF1c2UgPSBOVUxMOwogCQkJCW9sZHJlbC0+Y29sdW1ucyA9IE5JTDsK KwkJCQlvbGRyZWwtPmV4Y2VwdCA9IGZhbHNlOwogCQkJCW9sZHJlbC0+cmVsYXRpb24gPSB0YWJs ZV9vcGVuKG9sZHJlbGlkLAogCQkJCQkJCQkJCQkgIFNoYXJlVXBkYXRlRXhjbHVzaXZlTG9jayk7 CiAJCQkJZGVscmVscyA9IGxhcHBlbmQoZGVscmVscywgb2xkcmVsKTsKQEAgLTE0MDgsNyArMTQy NSw4IEBAIEFsdGVyUHVibGljYXRpb25TY2hlbWFzKEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10 LAogCQlMaXN0Q2VsbCAgICpsYzsKIAkJTGlzdAkgICAqcmVsb2lkczsKIAotCQlyZWxvaWRzID0g R2V0UHVibGljYXRpb25SZWxhdGlvbnMocHViZm9ybS0+b2lkLCBQVUJMSUNBVElPTl9QQVJUX1JP T1QpOworCQlyZWxvaWRzID0gR2V0SW5jbHVkZWRQdWJsaWNhdGlvblJlbGF0aW9ucyhwdWJmb3Jt LT5vaWQsCisJCQkJCQkJCQkJCQkgIFBVQkxJQ0FUSU9OX1BBUlRfUk9PVCk7CiAKIAkJZm9yZWFj aChsYywgcmVsb2lkcykKIAkJewpAQCAtMTU2NiwxMSArMTU4NCwxNSBAQCBBbHRlclB1YmxpY2F0 aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQpCiAJZWxz ZQogCXsKIAkJTGlzdAkgICAqcmVsYXRpb25zID0gTklMOworCQlMaXN0CSAgICpleGNlcHRyZWxh dGlvbnMgPSBOSUw7CiAJCUxpc3QJICAgKnNjaGVtYWlkbGlzdCA9IE5JTDsKIAkJT2lkCQkJcHVi aWQgPSBwdWJmb3JtLT5vaWQ7CiAKIAkJT2JqZWN0c0luUHVibGljYXRpb25Ub09pZHMoc3RtdC0+ cHVib2JqZWN0cywgcHN0YXRlLCAmcmVsYXRpb25zLAotCQkJCQkJCQkgICAmc2NoZW1haWRsaXN0 KTsKKwkJCQkJCQkJICAgJmV4Y2VwdHJlbGF0aW9ucywgJnNjaGVtYWlkbGlzdCk7CisKKwkJLyog RVhDRVBUIGNsYXVzZSBpcyBub3Qgc3VwcG9ydGVkIHdpdGggQUxURVIgUFVCTElDQVRJT04gKi8K KwkJQXNzZXJ0KGV4Y2VwdHJlbGF0aW9ucyA9PSBOSUwpOwogCiAJCUNoZWNrQWx0ZXJQdWJsaWNh dGlvbihzdG10LCB0dXAsIHJlbGF0aW9ucywgc2NoZW1haWRsaXN0KTsKIApAQCAtMTc3MSw2ICsx NzkzLDcgQEAgT3BlblRhYmxlTGlzdChMaXN0ICp0YWJsZXMpCiAJCXB1Yl9yZWwtPnJlbGF0aW9u ID0gcmVsOwogCQlwdWJfcmVsLT53aGVyZUNsYXVzZSA9IHQtPndoZXJlQ2xhdXNlOwogCQlwdWJf cmVsLT5jb2x1bW5zID0gdC0+Y29sdW1uczsKKwkJcHViX3JlbC0+ZXhjZXB0ID0gdC0+ZXhjZXB0 OwogCQlyZWxzID0gbGFwcGVuZChyZWxzLCBwdWJfcmVsKTsKIAkJcmVsaWRzID0gbGFwcGVuZF9v aWQocmVsaWRzLCBteXJlbGlkKTsKIApAQCAtMTg0Myw2ICsxODY2LDcgQEAgT3BlblRhYmxlTGlz dChMaXN0ICp0YWJsZXMpCiAKIAkJCQkvKiBjaGlsZCBpbmhlcml0cyBjb2x1bW4gbGlzdCBmcm9t IHBhcmVudCAqLwogCQkJCXB1Yl9yZWwtPmNvbHVtbnMgPSB0LT5jb2x1bW5zOworCQkJCXB1Yl9y ZWwtPmV4Y2VwdCA9IHQtPmV4Y2VwdDsKIAkJCQlyZWxzID0gbGFwcGVuZChyZWxzLCBwdWJfcmVs KTsKIAkJCQlyZWxpZHMgPSBsYXBwZW5kX29pZChyZWxpZHMsIGNoaWxkcmVsaWQpOwogCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL3RhYmxlY21kcy5jCmluZGV4IGIwNGIwZGJkMmEwLi44NTI0MmRjYzI0NSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQv Y29tbWFuZHMvdGFibGVjbWRzLmMKQEAgLTg2ODYsNyArODY4Niw3IEBAIEFURXhlY1NldEV4cHJl c3Npb24oQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLCBSZWxhdGlvbiByZWwsIGNvbnN0IGNoYXIgKmNv bE5hbWUsCiAJICogZXhwcmVzc2lvbnMuCiAJICovCiAJaWYgKGF0dGdlbmVyYXRlZCA9PSBBVFRS SUJVVEVfR0VORVJBVEVEX1ZJUlRVQUwgJiYKLQkJR2V0UmVsYXRpb25QdWJsaWNhdGlvbnMoUmVs YXRpb25HZXRSZWxpZChyZWwpKSAhPSBOSUwpCisJCUdldFJlbGF0aW9uSW5jbHVkZWRQdWJsaWNh dGlvbnMoUmVsYXRpb25HZXRSZWxpZChyZWwpKSAhPSBOSUwpCiAJCWVyZXBvcnQoRVJST1IsCiAJ CQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAogCQkJCSBlcnJtc2co IkFMVEVSIFRBQkxFIC8gU0VUIEVYUFJFU1NJT04gaXMgbm90IHN1cHBvcnRlZCBmb3IgdmlydHVh bCBnZW5lcmF0ZWQgY29sdW1ucyBpbiB0YWJsZXMgdGhhdCBhcmUgcGFydCBvZiBhIHB1YmxpY2F0 aW9uIiksCkBAIC0xODg4MSw3ICsxODg4MSw3IEBAIEFUUHJlcENoYW5nZVBlcnNpc3RlbmNlKEFs dGVyZWRUYWJsZUluZm8gKnRhYiwgUmVsYXRpb24gcmVsLCBib29sIHRvTG9nZ2VkKQogCSAqIFVO TE9HR0VELCBhcyBVTkxPR0dFRCB0YWJsZXMgY2FuJ3QgYmUgcHVibGlzaGVkLgogCSAqLwogCWlm ICghdG9Mb2dnZWQgJiYKLQkJR2V0UmVsYXRpb25QdWJsaWNhdGlvbnMoUmVsYXRpb25HZXRSZWxp ZChyZWwpKSAhPSBOSUwpCisJCUdldFJlbGF0aW9uSW5jbHVkZWRQdWJsaWNhdGlvbnMoUmVsYXRp b25HZXRSZWxpZChyZWwpKSAhPSBOSUwpCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUo RVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCiAJCQkJIGVycm1zZygi Y2Fubm90IGNoYW5nZSB0YWJsZSBcIiVzXCIgdG8gdW5sb2dnZWQgYmVjYXVzZSBpdCBpcyBwYXJ0 IG9mIGEgcHVibGljYXRpb24iLApAQCAtMjAzMjIsNiArMjAzMjIsNyBAQCBBVEV4ZWNBdHRhY2hQ YXJ0aXRpb24oTGlzdCAqKndxdWV1ZSwgUmVsYXRpb24gcmVsLCBQYXJ0aXRpb25DbWQgKmNtZCwK IAljb25zdCBjaGFyICp0cmlnZ2VyX25hbWU7CiAJT2lkCQkJZGVmYXVsdFBhcnRPaWQ7CiAJTGlz dAkgICAqcGFydEJvdW5kQ29uc3RyYWludDsKKwlMaXN0CSAgICpleGNlcHRwdWJvaWRzID0gTklM OwogCVBhcnNlU3RhdGUgKnBzdGF0ZSA9IG1ha2VfcGFyc2VzdGF0ZShOVUxMKTsKIAogCXBzdGF0 ZS0+cF9zb3VyY2V0ZXh0ID0gY29udGV4dC0+cXVlcnlTdHJpbmc7CkBAIC0yMDM2MSw2ICsyMDM2 Miw0OSBAQCBBVEV4ZWNBdHRhY2hQYXJ0aXRpb24oTGlzdCAqKndxdWV1ZSwgUmVsYXRpb24gcmVs LCBQYXJ0aXRpb25DbWQgKmNtZCwKIAkJCQkoZXJyY29kZShFUlJDT0RFX1dST05HX09CSkVDVF9U WVBFKSwKIAkJCQkgZXJybXNnKCJjYW5ub3QgYXR0YWNoIGEgdHlwZWQgdGFibGUgYXMgcGFydGl0 aW9uIikpKTsKIAorCS8qCisJICogRGlzYWxsb3cgYXR0YWNoaW5nIGEgcGFydGl0aW9uIGlmIHRo ZSB0YWJsZSBpcyByZWZlcmVuY2VkIGluIGEKKwkgKiBwdWJsaWNhdGlvbiBFWENFUFQgY2xhdXNl LiBDaGFuZ2luZyB0aGUgcGFydGl0aW9uIGhpZXJhcmNoeSBjb3VsZCBhbHRlcgorCSAqIHRoZSBl ZmZlY3RpdmUgcHVibGljYXRpb24gbWVtYmVyc2hpcC4KKwkgKi8KKwlleGNlcHRwdWJvaWRzID0g R2V0UmVsYXRpb25FeGNsdWRlZFB1YmxpY2F0aW9ucyhSZWxhdGlvbkdldFJlbGlkKGF0dGFjaHJl bCkpOworCWlmIChleGNlcHRwdWJvaWRzICE9IE5JTCkKKwl7CisJCWJvb2wJCWZpcnN0ID0gdHJ1 ZTsKKwkJU3RyaW5nSW5mb0RhdGEgcHVibmFtZXM7CisKKwkJaW5pdFN0cmluZ0luZm8oJnB1Ym5h bWVzKTsKKworCQlmb3JlYWNoX29pZChwdWJpZCwgZXhjZXB0cHVib2lkcykKKwkJeworCQkJY2hh cgkgICAqcHVibmFtZSA9IGdldF9wdWJsaWNhdGlvbl9uYW1lKHB1YmlkLCBmYWxzZSk7CisKKwkJ CWlmICghZmlyc3QpCisJCQl7CisJCQkJLyoKKwkJCQkgKiB0cmFuc2xhdG9yOiBUaGlzIGlzIGEg c2VwYXJhdG9yIGluIGEgbGlzdCBvZiBwdWJsaWNhdGlvbgorCQkJCSAqIG5hbWVzLgorCQkJCSAq LworCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJnB1Ym5hbWVzLCBfKCIsICIpKTsKKwkJCX0K KworCQkJZmlyc3QgPSBmYWxzZTsKKworCQkJYXBwZW5kU3RyaW5nSW5mbygmcHVibmFtZXMsIF8o IlwiJXNcIiIpLCBwdWJuYW1lKTsKKwkJfQorCisJCWVyZXBvcnQoRVJST1IsCisJCQkJZXJyY29k ZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQllcnJtc2df cGx1cmFsKCJjYW5ub3QgYXR0YWNoIHRhYmxlIFwiJXNcIiBhcyBwYXJ0aXRpb24gYmVjYXVzZSBp dCBpcyByZWZlcmVuY2VkIGluIHB1YmxpY2F0aW9uICVzIEVYQ0VQVCBjbGF1c2UiLAorCQkJCQkJ CSAgImNhbm5vdCBhdHRhY2ggdGFibGUgXCIlc1wiIGFzIHBhcnRpdGlvbiBiZWNhdXNlIGl0IGlz IHJlZmVyZW5jZWQgaW4gcHVibGljYXRpb25zICVzIEVYQ0VQVCBjbGF1c2UiLAorCQkJCQkJCSAg bGlzdF9sZW5ndGgoZXhjZXB0cHVib2lkcyksCisJCQkJCQkJICBSZWxhdGlvbkdldFJlbGF0aW9u TmFtZShhdHRhY2hyZWwpLAorCQkJCQkJCSAgcHVibmFtZXMuZGF0YSksCisJCQkJZXJyZGV0YWls KCJUaGUgcHVibGljYXRpb24gRVhDRVBUIGNsYXVzZSBjYW5ub3QgY29udGFpbiB0YWJsZXMgdGhh dCBhcmUgcGFydGl0aW9ucy4iKSk7CisJfQorCisJbGlzdF9mcmVlKGV4Y2VwdHB1Ym9pZHMpOwor CiAJLyoKIAkgKiBUYWJsZSBiZWluZyBhdHRhY2hlZCBzaG91bGQgbm90IGFscmVhZHkgYmUgcGFy dCBvZiBpbmhlcml0YW5jZTsgZWl0aGVyCiAJICogYXMgYSBjaGlsZCB0YWJsZS4uLgpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFt LnkKaW5kZXggYzU2NzI1MmFjYzQuLjNjM2UyNDMyNGE4IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9wYXJzZXIvZ3JhbS55CisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKQEAgLTIwMyw2 ICsyMDMsNyBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzQ0FTYml0cyhpbnQgY2FzX2JpdHMsIGludCBs b2NhdGlvbiwgY29uc3QgY2hhciAqY29uc3RyVHlwZSwKIHN0YXRpYyBQYXJ0aXRpb25TdHJhdGVn eSBwYXJzZVBhcnRpdGlvblN0cmF0ZWd5KGNoYXIgKnN0cmF0ZWd5LCBpbnQgbG9jYXRpb24sCiAJ CQkJCQkJCQkJCQljb3JlX3l5c2Nhbl90IHl5c2Nhbm5lcik7CiBzdGF0aWMgdm9pZCBwcmVwcm9j ZXNzX3B1Yl9hbGxfb2JqdHlwZV9saXN0KExpc3QgKmFsbF9vYmplY3RzX2xpc3QsCisJCQkJCQkJ CQkJCUxpc3QgKipwdWJvYmplY3RzLAogCQkJCQkJCQkJCQlib29sICphbGxfdGFibGVzLAogCQkJ CQkJCQkJCQlib29sICphbGxfc2VxdWVuY2VzLAogCQkJCQkJCQkJCQljb3JlX3l5c2Nhbl90IHl5 c2Nhbm5lcik7CkBAIC00NTUsNiArNDU2LDcgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVW aWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKIAkJ CQlUcmlnZ2VyVHJhbnNpdGlvbnMgVHJpZ2dlclJlZmVyZW5jaW5nCiAJCQkJdmFjdXVtX3JlbGF0 aW9uX2xpc3Qgb3B0X3ZhY3V1bV9yZWxhdGlvbl9saXN0CiAJCQkJZHJvcF9vcHRpb25fbGlzdCBw dWJfb2JqX2xpc3QgcHViX2FsbF9vYmpfdHlwZV9saXN0CisJCQkJcHViX2V4Y2VwdF9vYmpfbGlz dCBvcHRfcHViX2V4Y2VwdF9jbGF1c2UKIAogJXR5cGUgPHJldGNsYXVzZT4gcmV0dXJuaW5nX2Ns YXVzZQogJXR5cGUgPG5vZGU+CXJldHVybmluZ19vcHRpb24KQEAgLTU5Miw2ICs1OTQsNyBAQCBz dGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAq YWxpYXNlcywgTm9kZSAqcXVlcnkpOwogJXR5cGUgPG5vZGU+CXZhcl92YWx1ZSB6b25lX3ZhbHVl CiAldHlwZSA8cm9sZXNwZWM+IGF1dGhfaWRlbnQgUm9sZVNwZWMgb3B0X2dyYW50ZWRfYnkKICV0 eXBlIDxwdWJsaWNhdGlvbm9iamVjdHNwZWM+IFB1YmxpY2F0aW9uT2JqU3BlYworJXR5cGUgPHB1 YmxpY2F0aW9ub2JqZWN0c3BlYz4gUHVibGljYXRpb25FeGNlcHRPYmpTcGVjCiAldHlwZSA8cHVi bGljYXRpb25hbGxvYmplY3RzcGVjPiBQdWJsaWNhdGlvbkFsbE9ialNwZWMKIAogJXR5cGUgPGtl eXdvcmQ+IHVucmVzZXJ2ZWRfa2V5d29yZCB0eXBlX2Z1bmNfbmFtZV9rZXl3b3JkCkBAIC0xMDc5 Miw3ICsxMDc5NSw3IEBAIEFsdGVyT3duZXJTdG10OiBBTFRFUiBBR0dSRUdBVEUgYWdncmVnYXRl X3dpdGhfYXJndHlwZXMgT1dORVIgVE8gUm9sZVNwZWMKICAqCiAgKiBwdWJfYWxsX29ial90eXBl IGlzIG9uZSBvZjoKICAqCi0gKgkJVEFCTEVTCisgKgkJVEFCTEVTIFtFWENFUFQgVEFCTEUgKCB0 YWJsZSBbLCAuLi5dICldCiAgKgkJU0VRVUVOQ0VTCiAgKgogICogQ1JFQVRFIFBVQkxJQ0FUSU9O IEZPUiBwdWJfb2JqIFssIC4uLl0gW1dJVEggb3B0aW9uc10KQEAgLTEwODE4LDcgKzEwODIxLDgg QEAgQ3JlYXRlUHVibGljYXRpb25TdG10OgogCQkJCQlDcmVhdGVQdWJsaWNhdGlvblN0bXQgKm4g PSBtYWtlTm9kZShDcmVhdGVQdWJsaWNhdGlvblN0bXQpOwogCiAJCQkJCW4tPnB1Ym5hbWUgPSAk MzsKLQkJCQkJcHJlcHJvY2Vzc19wdWJfYWxsX29ianR5cGVfbGlzdCgkNSwgJm4tPmZvcl9hbGxf dGFibGVzLAorCQkJCQlwcmVwcm9jZXNzX3B1Yl9hbGxfb2JqdHlwZV9saXN0KCQ1LCAmbi0+cHVi b2JqZWN0cywKKwkJCQkJCQkJCQkJCQkmbi0+Zm9yX2FsbF90YWJsZXMsCiAJCQkJCQkJCQkJCQkJ Jm4tPmZvcl9hbGxfc2VxdWVuY2VzLAogCQkJCQkJCQkJCQkJCXl5c2Nhbm5lcik7CiAJCQkJCW4t Pm9wdGlvbnMgPSAkNjsKQEAgLTEwOTMzLDExICsxMDkzNywxNyBAQCBwdWJfb2JqX2xpc3Q6CVB1 YmxpY2F0aW9uT2JqU3BlYwogCQkJCQl7ICQkID0gbGFwcGVuZCgkMSwgJDMpOyB9CiAJOwogCitv cHRfcHViX2V4Y2VwdF9jbGF1c2U6CisJCQlFWENFUFQgVEFCTEUgJygnIHB1Yl9leGNlcHRfb2Jq X2xpc3QgJyknCXsgJCQgPSAkNDsgfQorCQkJfCAvKkVNUFRZKi8JCQkJCQkJCQl7ICQkID0gTklM OyB9CisJCTsKKwogUHVibGljYXRpb25BbGxPYmpTcGVjOgotCQkJCUFMTCBUQUJMRVMKKwkJCQlB TEwgVEFCTEVTIG9wdF9wdWJfZXhjZXB0X2NsYXVzZQogCQkJCQl7CiAJCQkJCQkkJCA9IG1ha2VO b2RlKFB1YmxpY2F0aW9uQWxsT2JqU3BlYyk7CiAJCQkJCQkkJC0+cHVib2JqdHlwZSA9IFBVQkxJ Q0FUSU9OX0FMTF9UQUJMRVM7CisJCQkJCQkkJC0+ZXhjZXB0X3RhYmxlcyA9ICQzOwogCQkJCQkJ JCQtPmxvY2F0aW9uID0gQDE7CiAJCQkJCX0KIAkJCQl8IEFMTCBTRVFVRU5DRVMKQEAgLTEwOTU0 LDYgKzEwOTY0LDIzIEBAIHB1Yl9hbGxfb2JqX3R5cGVfbGlzdDoJUHVibGljYXRpb25BbGxPYmpT cGVjCiAJCQkJCXsgJCQgPSBsYXBwZW5kKCQxLCAkMyk7IH0KIAk7CiAKK1B1YmxpY2F0aW9uRXhj ZXB0T2JqU3BlYzoKKwkJCSByZWxhdGlvbl9leHByCisJCQkJeworCQkJCQkkJCA9IG1ha2VOb2Rl KFB1YmxpY2F0aW9uT2JqU3BlYyk7CisJCQkJCSQkLT5wdWJvYmp0eXBlID0gUFVCTElDQVRJT05P QkpfRVhDRVBUX1RBQkxFOworCQkJCQkkJC0+cHVidGFibGUgPSBtYWtlTm9kZShQdWJsaWNhdGlv blRhYmxlKTsKKwkJCQkJJCQtPnB1YnRhYmxlLT5leGNlcHQgPSB0cnVlOworCQkJCQkkJC0+cHVi dGFibGUtPnJlbGF0aW9uID0gJDE7CisJCQkJCSQkLT5sb2NhdGlvbiA9IEAxOworCQkJCX0KKwk7 CisKK3B1Yl9leGNlcHRfb2JqX2xpc3Q6IFB1YmxpY2F0aW9uRXhjZXB0T2JqU3BlYworCQkJCQl7 ICQkID0gbGlzdF9tYWtlMSgkMSk7IH0KKwkJCXwgcHViX2V4Y2VwdF9vYmpfbGlzdCAnLCcgUHVi bGljYXRpb25FeGNlcHRPYmpTcGVjCisJCQkJCXsgJCQgPSBsYXBwZW5kKCQxLCAkMyk7IH0KKwk7 CiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKgogICoKQEAgLTE5ODEyLDggKzE5ODM5LDkgQEAgcGFy c2VQYXJ0aXRpb25TdHJhdGVneShjaGFyICpzdHJhdGVneSwgaW50IGxvY2F0aW9uLCBjb3JlX3l5 c2Nhbl90IHl5c2Nhbm5lcikKICAqIEFsc28sIGNoZWNrcyBpZiB0aGUgcHViX29iamVjdF90eXBl IGhhcyBiZWVuIHNwZWNpZmllZCBtb3JlIHRoYW4gb25jZS4KICAqLwogc3RhdGljIHZvaWQKLXBy ZXByb2Nlc3NfcHViX2FsbF9vYmp0eXBlX2xpc3QoTGlzdCAqYWxsX29iamVjdHNfbGlzdCwgYm9v bCAqYWxsX3RhYmxlcywKLQkJCQkJCQkJYm9vbCAqYWxsX3NlcXVlbmNlcywgY29yZV95eXNjYW5f dCB5eXNjYW5uZXIpCitwcmVwcm9jZXNzX3B1Yl9hbGxfb2JqdHlwZV9saXN0KExpc3QgKmFsbF9v YmplY3RzX2xpc3QsIExpc3QgKipwdWJvYmplY3RzLAorCQkJCQkJCQlib29sICphbGxfdGFibGVz LCBib29sICphbGxfc2VxdWVuY2VzLAorCQkJCQkJCQljb3JlX3l5c2Nhbl90IHl5c2Nhbm5lcikK IHsKIAlpZiAoIWFsbF9vYmplY3RzX2xpc3QpCiAJCXJldHVybjsKQEAgLTE5ODMzLDYgKzE5ODYx LDcgQEAgcHJlcHJvY2Vzc19wdWJfYWxsX29ianR5cGVfbGlzdChMaXN0ICphbGxfb2JqZWN0c19s aXN0LCBib29sICphbGxfdGFibGVzLAogCQkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKG9iai0+bG9j YXRpb24pKTsKIAogCQkJKmFsbF90YWJsZXMgPSB0cnVlOworCQkJKnB1Ym9iamVjdHMgPSBsaXN0 X2NvbmNhdCgqcHVib2JqZWN0cywgb2JqLT5leGNlcHRfdGFibGVzKTsKIAkJfQogCQllbHNlIGlm IChvYmotPnB1Ym9ianR5cGUgPT0gUFVCTElDQVRJT05fQUxMX1NFUVVFTkNFUykKIAkJewpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYyBiL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMKaW5kZXggN2E0OTE4NWQy OWQuLjg1N2ViZjdkNmZiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291 dHB1dC9wZ291dHB1dC5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bn b3V0cHV0LmMKQEAgLTIwODksNyArMjA4OSw3IEBAIGdldF9yZWxfc3luY19lbnRyeShQR091dHB1 dERhdGEgKmRhdGEsIFJlbGF0aW9uIHJlbGF0aW9uKQogCWlmICghZW50cnktPnJlcGxpY2F0ZV92 YWxpZCkKIAl7CiAJCU9pZAkJCXNjaGVtYUlkID0gZ2V0X3JlbF9uYW1lc3BhY2UocmVsaWQpOwot CQlMaXN0CSAgICpwdWJpZHMgPSBHZXRSZWxhdGlvblB1YmxpY2F0aW9ucyhyZWxpZCk7CisJCUxp c3QJICAgKnB1YmlkcyA9IEdldFJlbGF0aW9uSW5jbHVkZWRQdWJsaWNhdGlvbnMocmVsaWQpOwog CiAJCS8qCiAJCSAqIFdlIGRvbid0IGFjcXVpcmUgYSBsb2NrIG9uIHRoZSBuYW1lc3BhY2Ugc3lz dGVtIHRhYmxlIGFzIHdlIGJ1aWxkCkBAIC0yMjA2LDE0ICsyMjA2LDQ3IEBAIGdldF9yZWxfc3lu Y19lbnRyeShQR091dHB1dERhdGEgKmRhdGEsIFJlbGF0aW9uIHJlbGF0aW9uKQogCQkJICovCiAJ CQlpZiAocHViLT5hbGx0YWJsZXMpCiAJCQl7Ci0JCQkJcHVibGlzaCA9IHRydWU7Ci0JCQkJaWYg KHB1Yi0+cHVidmlhcm9vdCAmJiBhbV9wYXJ0aXRpb24pCisJCQkJTGlzdAkgICAqZXhjZXB0cHVi aWRzID0gTklMOworCisJCQkJaWYgKGFtX3BhcnRpdGlvbikKIAkJCQl7CiAJCQkJCUxpc3QJICAg KmFuY2VzdG9ycyA9IGdldF9wYXJ0aXRpb25fYW5jZXN0b3JzKHJlbGlkKTsKKwkJCQkJT2lkCQkJ bGFzdF9hbmNlc3Rvcl9yZWxpZCA9IGxsYXN0X29pZChhbmNlc3RvcnMpOworCisJCQkJCS8qCisJ CQkJCSAqIEZvciBhIHBhcnRpdGlvbiwgY2hhbmdlcyBhcmUgcHVibGlzaGVkIHZpYSB0b3AtbW9z dAorCQkJCQkgKiBhbmNlc3RvciB3aGVuIHB1YnZpYXJvb3QgaXMgdHJ1ZSwgc28gcG9wdWxhdGUg cHViX3JlbGlkCisJCQkJCSAqIGFjY29yZGluZ2x5LgorCQkJCQkgKi8KKwkJCQkJaWYgKHB1Yi0+ cHVidmlhcm9vdCkKKwkJCQkJeworCQkJCQkJcHViX3JlbGlkID0gbGFzdF9hbmNlc3Rvcl9yZWxp ZDsKKwkJCQkJCWFuY2VzdG9yX2xldmVsID0gbGlzdF9sZW5ndGgoYW5jZXN0b3JzKTsKKwkJCQkJ fQogCi0JCQkJCXB1Yl9yZWxpZCA9IGxsYXN0X29pZChhbmNlc3RvcnMpOwotCQkJCQlhbmNlc3Rv cl9sZXZlbCA9IGxpc3RfbGVuZ3RoKGFuY2VzdG9ycyk7CisJCQkJCS8qCisJCQkJCSAqIE9ubHkg dGhlIHRvcC1tb3N0IGFuY2VzdG9yIGNhbiBhcHBlYXIgaW4gdGhlIEVYQ0VQVAorCQkJCQkgKiBj bGF1c2UuIFRoZXJlZm9yZSwgZm9yIGEgcGFydGl0aW9uLCBleGNsdXNpb24gbXVzdCBiZQorCQkJ CQkgKiBldmFsdWF0ZWQgYXQgdGhlIHRvcC1tb3N0IGFuY2VzdG9yLgorCQkJCQkgKi8KKwkJCQkJ ZXhjZXB0cHViaWRzID0gR2V0UmVsYXRpb25FeGNsdWRlZFB1YmxpY2F0aW9ucyhsYXN0X2FuY2Vz dG9yX3JlbGlkKTsKKwkJCQl9CisJCQkJZWxzZQorCQkJCXsKKwkJCQkJLyoKKwkJCQkJICogRm9y IGEgcmVndWxhciB0YWJsZSBvciBhIHJvb3QgcGFydGl0aW9uZWQgdGFibGUsIGNoZWNrCisJCQkJ CSAqIGV4Y2x1c2lvbiBvbiB0YWJsZSBpdHNlbGYuCisJCQkJCSAqLworCQkJCQlleGNlcHRwdWJp ZHMgPSBHZXRSZWxhdGlvbkV4Y2x1ZGVkUHVibGljYXRpb25zKHB1Yl9yZWxpZCk7CiAJCQkJfQor CisJCQkJaWYgKCFsaXN0X21lbWJlcl9vaWQoZXhjZXB0cHViaWRzLCBwdWItPm9pZCkpCisJCQkJ CXB1Ymxpc2ggPSB0cnVlOworCisJCQkJbGlzdF9mcmVlKGV4Y2VwdHB1Ymlkcyk7CisKKwkJCQlp ZiAoIXB1Ymxpc2gpCisJCQkJCWNvbnRpbnVlOwogCQkJfQogCiAJCQlpZiAoIXB1Ymxpc2gpCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jIGIvc3JjL2JhY2tl bmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYwppbmRleCA2YjYzNGM5ZmZmMS4uYTFjODhjNmIxYjYg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMKKysrIGIvc3Jj L2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYwpAQCAtNTc4OCw3ICs1Nzg4LDkgQEAgUmVs YXRpb25HZXRFeGNsdXNpb25JbmZvKFJlbGF0aW9uIGluZGV4UmVsYXRpb24sCiB2b2lkCiBSZWxh dGlvbkJ1aWxkUHVibGljYXRpb25EZXNjKFJlbGF0aW9uIHJlbGF0aW9uLCBQdWJsaWNhdGlvbkRl c2MgKnB1YmRlc2MpCiB7Ci0JTGlzdAkgICAqcHVib2lkczsKKwlMaXN0CSAgICpwdWJvaWRzID0g TklMOworCUxpc3QJICAgKmV4Y2VwdHB1Ym9pZHMgPSBOSUw7CisJTGlzdAkgICAqYWxsdGFibGVz cHVib2lkczsKIAlMaXN0Q2VsbCAgICpsYzsKIAlNZW1vcnlDb250ZXh0IG9sZGN4dDsKIAlPaWQJ CQlzY2hlbWFpZDsKQEAgLTU4MjYsMjggKzU4MjgsNDkgQEAgUmVsYXRpb25CdWlsZFB1YmxpY2F0 aW9uRGVzYyhSZWxhdGlvbiByZWxhdGlvbiwgUHVibGljYXRpb25EZXNjICpwdWJkZXNjKQogCXB1 YmRlc2MtPmdlbmNvbHNfdmFsaWRfZm9yX2RlbGV0ZSA9IHRydWU7CiAKIAkvKiBGZXRjaCB0aGUg cHVibGljYXRpb24gbWVtYmVyc2hpcCBpbmZvLiAqLwotCXB1Ym9pZHMgPSBHZXRSZWxhdGlvblB1 YmxpY2F0aW9ucyhyZWxpZCk7CisJcHVib2lkcyA9IEdldFJlbGF0aW9uSW5jbHVkZWRQdWJsaWNh dGlvbnMocmVsaWQpOwogCXNjaGVtYWlkID0gUmVsYXRpb25HZXROYW1lc3BhY2UocmVsYXRpb24p OwogCXB1Ym9pZHMgPSBsaXN0X2NvbmNhdF91bmlxdWVfb2lkKHB1Ym9pZHMsIEdldFNjaGVtYVB1 YmxpY2F0aW9ucyhzY2hlbWFpZCkpOwogCiAJaWYgKHJlbGF0aW9uLT5yZF9yZWwtPnJlbGlzcGFy dGl0aW9uKQogCXsKKwkJT2lkCQkJbGFzdF9hbmNlc3Rvcl9yZWxpZDsKKwogCQkvKiBBZGQgcHVi bGljYXRpb25zIHRoYXQgdGhlIGFuY2VzdG9ycyBhcmUgaW4gdG9vLiAqLwogCQlhbmNlc3RvcnMg PSBnZXRfcGFydGl0aW9uX2FuY2VzdG9ycyhyZWxpZCk7CisJCWxhc3RfYW5jZXN0b3JfcmVsaWQg PSBsbGFzdF9vaWQoYW5jZXN0b3JzKTsKIAogCQlmb3JlYWNoKGxjLCBhbmNlc3RvcnMpCiAJCXsK IAkJCU9pZAkJCWFuY2VzdG9yID0gbGZpcnN0X29pZChsYyk7CiAKIAkJCXB1Ym9pZHMgPSBsaXN0 X2NvbmNhdF91bmlxdWVfb2lkKHB1Ym9pZHMsCi0JCQkJCQkJCQkJCSBHZXRSZWxhdGlvblB1Ymxp Y2F0aW9ucyhhbmNlc3RvcikpOworCQkJCQkJCQkJCQkgR2V0UmVsYXRpb25JbmNsdWRlZFB1Ymxp Y2F0aW9ucyhhbmNlc3RvcikpOwogCQkJc2NoZW1haWQgPSBnZXRfcmVsX25hbWVzcGFjZShhbmNl c3Rvcik7CiAJCQlwdWJvaWRzID0gbGlzdF9jb25jYXRfdW5pcXVlX29pZChwdWJvaWRzLAogCQkJ CQkJCQkJCQkgR2V0U2NoZW1hUHVibGljYXRpb25zKHNjaGVtYWlkKSk7CiAJCX0KKworCQkvKgor CQkgKiBPbmx5IHRoZSB0b3AtbW9zdCBhbmNlc3RvciBjYW4gYXBwZWFyIGluIHRoZSBFWENFUFQg Y2xhdXNlLgorCQkgKiBUaGVyZWZvcmUsIGZvciBhIHBhcnRpdGlvbiwgZXhjbHVzaW9uIG11c3Qg YmUgZXZhbHVhdGVkIGF0IHRoZQorCQkgKiB0b3AtbW9zdCBhbmNlc3Rvci4KKwkJICovCisJCWV4 Y2VwdHB1Ym9pZHMgPSBHZXRSZWxhdGlvbkV4Y2x1ZGVkUHVibGljYXRpb25zKGxhc3RfYW5jZXN0 b3JfcmVsaWQpOworCX0KKwllbHNlCisJeworCQkvKgorCQkgKiBGb3IgYSByZWd1bGFyIHRhYmxl IG9yIGEgcm9vdCBwYXJ0aXRpb25lZCB0YWJsZSwgY2hlY2sgZXhjbHVzaW9uIG9uCisJCSAqIHRh YmxlIGl0c2VsZi4KKwkJICovCisJCWV4Y2VwdHB1Ym9pZHMgPSBHZXRSZWxhdGlvbkV4Y2x1ZGVk UHVibGljYXRpb25zKHJlbGlkKTsKIAl9Ci0JcHVib2lkcyA9IGxpc3RfY29uY2F0X3VuaXF1ZV9v aWQocHVib2lkcywgR2V0QWxsVGFibGVzUHVibGljYXRpb25zKCkpOwogCisJYWxsdGFibGVzcHVi b2lkcyA9IEdldEFsbFRhYmxlc1B1YmxpY2F0aW9ucygpOworCXB1Ym9pZHMgPSBsaXN0X2NvbmNh dF91bmlxdWVfb2lkKHB1Ym9pZHMsCisJCQkJCQkJCQkgbGlzdF9kaWZmZXJlbmNlX29pZChhbGx0 YWJsZXNwdWJvaWRzLAorCQkJCQkJCQkJCQkJCQkgZXhjZXB0cHVib2lkcykpOwogCWZvcmVhY2go bGMsIHB1Ym9pZHMpCiAJewogCQlPaWQJCQlwdWJpZCA9IGxmaXJzdF9vaWQobGMpOwpkaWZmIC0t Z2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1w LmMKaW5kZXggNmRmNzkwNjdkYjUuLjEwMzViYmE3MmNlIDEwMDY0NAotLS0gYS9zcmMvYmluL3Bn X2R1bXAvcGdfZHVtcC5jCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKQEAgLTQ2MjMs OSArNDYyMyw1OSBAQCBnZXRQdWJsaWNhdGlvbnMoQXJjaGl2ZSAqZm91dCkKIAkJCShzdHJjbXAo UFFnZXR2YWx1ZShyZXMsIGksIGlfcHVidmlhcm9vdCksICJ0IikgPT0gMCk7CiAJCXB1YmluZm9b aV0ucHViZ2VuY29sc190eXBlID0KIAkJCSooUFFnZXR2YWx1ZShyZXMsIGksIGlfcHViZ2VuY29s cykpOworCQlwdWJpbmZvW2ldLmV4Y2VwdF90YWJsZXMgPSAoU2ltcGxlUHRyTGlzdCkKKwkJewor CQkJTlVMTCwgTlVMTAorCQl9OwogCiAJCS8qIERlY2lkZSB3aGV0aGVyIHdlIHdhbnQgdG8gZHVt cCBpdCAqLwogCQlzZWxlY3REdW1wYWJsZU9iamVjdCgmKHB1YmluZm9baV0uZG9iaiksIGZvdXQp OworCisJCS8qCisJCSAqIEdldCB0aGUgbGlzdCBvZiB0YWJsZXMgZm9yIHB1YmxpY2F0aW9ucyBz cGVjaWZpZWQgaW4gdGhlIEVYQ0VQVAorCQkgKiBUQUJMRSBjbGF1c2UuCisJCSAqCisJCSAqIEFs dGhvdWdoIGluZGl2aWR1YWwgRVhDRVBUIFRBQkxFIGVudHJpZXMgY291bGQgYmUgc3RvcmVkIGlu CisJCSAqIFB1YmxpY2F0aW9uUmVsSW5mbywgZHVtcFB1YmxpY2F0aW9uVGFibGUgY2Fubm90IGJl IHVzZWQgdG8gZW1pdAorCQkgKiB0aGVtLCBiZWNhdXNlIHRoZXJlIGlzIG5vIEFMVEVSIFBVQkxJ Q0FUSU9OIC4uLiBBREQgY29tbWFuZCB0byBhZGQKKwkJICogaW5kaXZpZHVhbCB0YWJsZSBlbnRy aWVzIHRvIHRoZSBFWENFUFQgVEFCTEUgbGlzdC4KKwkJICoKKwkJICogVGhlcmVmb3JlLCB0aGUg YXBwcm9hY2ggaXMgdG8gZHVtcCB0aGUgY29tcGxldGUgRVhDRVBUIFRBQkxFIGxpc3QKKwkJICog aW4gYSBzaW5nbGUgQ1JFQVRFIFBVQkxJQ0FUSU9OIHN0YXRlbWVudC4gUHVibGljYXRpb25JbmZv IGlzIHVzZWQKKwkJICogdG8gY29sbGVjdCB0aGlzIGluZm9ybWF0aW9uLCB3aGljaCBpcyB0aGVu IGVtaXR0ZWQgYnkKKwkJICogZHVtcFB1YmxpY2F0aW9uKCkuCisJCSAqLworCQlpZiAoZm91dC0+ cmVtb3RlVmVyc2lvbiA+PSAxOTAwMDApCisJCXsKKwkJCWludAkJCW50YmxzOworCQkJUEdyZXN1 bHQgICAqcmVzX3RibHM7CisKKwkJCXJlc2V0UFFFeHBCdWZmZXIocXVlcnkpOworCQkJYXBwZW5k UFFFeHBCdWZmZXIocXVlcnksCisJCQkJCQkJICAiU0VMRUNUIHBycmVsaWRcbiIKKwkJCQkJCQkg ICJGUk9NIHBnX2NhdGFsb2cucGdfcHVibGljYXRpb25fcmVsXG4iCisJCQkJCQkJICAiV0hFUkUg cHJwdWJpZCA9ICV1IEFORCBwcmV4Y2VwdCIsCisJCQkJCQkJICBwdWJpbmZvW2ldLmRvYmouY2F0 SWQub2lkKTsKKworCQkJcmVzX3RibHMgPSBFeGVjdXRlU3FsUXVlcnkoZm91dCwgcXVlcnktPmRh dGEsIFBHUkVTX1RVUExFU19PSyk7CisKKwkJCW50YmxzID0gUFFudHVwbGVzKHJlc190YmxzKTsK KworCQkJZm9yIChpbnQgaiA9IDA7IGogPCBudGJsczsgaisrKQorCQkJeworCQkJCU9pZAkJCXBy cmVsaWQ7CisJCQkJVGFibGVJbmZvICAqdGJpbmZvOworCisJCQkJcHJyZWxpZCA9IGF0b29pZChQ UWdldHZhbHVlKHJlc190YmxzLCBqLCAwKSk7CisKKwkJCQl0YmluZm8gPSBmaW5kVGFibGVCeU9p ZChwcnJlbGlkKTsKKworCQkJCWlmICh0YmluZm8gIT0gTlVMTCkKKwkJCQkJc2ltcGxlX3B0cl9s aXN0X2FwcGVuZCgmcHViaW5mb1tpXS5leGNlcHRfdGFibGVzLCB0YmluZm8pOworCQkJfQorCisJ CQlQUWNsZWFyKHJlc190YmxzKTsKKwkJfQogCX0KIAogY2xlYW51cDoKQEAgLTQ2NjIsMTAgKzQ3 MTIsMjkgQEAgZHVtcFB1YmxpY2F0aW9uKEFyY2hpdmUgKmZvdXQsIGNvbnN0IFB1YmxpY2F0aW9u SW5mbyAqcHViaW5mbykKIAlhcHBlbmRQUUV4cEJ1ZmZlcihxdWVyeSwgIkNSRUFURSBQVUJMSUNB VElPTiAlcyIsCiAJCQkJCSAgcXB1Ym5hbWUpOwogCi0JaWYgKHB1YmluZm8tPnB1YmFsbHRhYmxl cyAmJiBwdWJpbmZvLT5wdWJhbGxzZXF1ZW5jZXMpCi0JCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1 ZXJ5LCAiIEZPUiBBTEwgVEFCTEVTLCBBTEwgU0VRVUVOQ0VTIik7Ci0JZWxzZSBpZiAocHViaW5m by0+cHViYWxsdGFibGVzKQorCWlmIChwdWJpbmZvLT5wdWJhbGx0YWJsZXMpCisJeworCQlpbnQJ CQluX2V4Y2VwdCA9IDA7CisKIAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICIgRk9SIEFM TCBUQUJMRVMiKTsKKworCQkvKiBJbmNsdWRlIEVYQ0VQVCBUQUJMRSBjbGF1c2UgaWYgdGhlcmUg YXJlIGV4Y2VwdF90YWJsZXMuICovCisJCWZvciAoU2ltcGxlUHRyTGlzdENlbGwgKmNlbGwgPSBw dWJpbmZvLT5leGNlcHRfdGFibGVzLmhlYWQ7IGNlbGw7IGNlbGwgPSBjZWxsLT5uZXh0KQorCQl7 CisJCQlUYWJsZUluZm8gICp0YmluZm8gPSAoVGFibGVJbmZvICopIGNlbGwtPnB0cjsKKworCQkJ aWYgKCsrbl9leGNlcHQgPT0gMSkKKwkJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiBF WENFUFQgVEFCTEUgKCIpOworCQkJZWxzZQorCQkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5 LCAiLCAiKTsKKwkJCWFwcGVuZFBRRXhwQnVmZmVyKHF1ZXJ5LCAiT05MWSAlcyIsIGZtdFF1YWxp ZmllZER1bXBhYmxlKHRiaW5mbykpOworCQl9CisJCWlmIChuX2V4Y2VwdCA+IDApCisJCQlhcHBl bmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIikiKTsKKworCQlpZiAocHViaW5mby0+cHViYWxsc2Vx dWVuY2VzKQorCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICIsIEFMTCBTRVFVRU5DRVMi KTsKKwl9CiAJZWxzZSBpZiAocHViaW5mby0+cHViYWxsc2VxdWVuY2VzKQogCQlhcHBlbmRQUUV4 cEJ1ZmZlclN0cihxdWVyeSwgIiBGT1IgQUxMIFNFUVVFTkNFUyIpOwogCkBAIC00ODQ1LDYgKzQ5 MTQsNyBAQCBnZXRQdWJsaWNhdGlvblRhYmxlcyhBcmNoaXZlICpmb3V0LCBUYWJsZUluZm8gdGJs aW5mb1tdLCBpbnQgbnVtVGFibGVzKQogCiAJLyogQ29sbGVjdCBhbGwgcHVibGljYXRpb24gbWVt YmVyc2hpcCBpbmZvLiAqLwogCWlmIChmb3V0LT5yZW1vdGVWZXJzaW9uID49IDE1MDAwMCkKKwl7 CiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LAogCQkJCQkJCSAiU0VMRUNUIHRhYmxlb2lk LCBvaWQsIHBycHViaWQsIHBycmVsaWQsICIKIAkJCQkJCQkgInBnX2NhdGFsb2cucGdfZ2V0X2V4 cHIocHJxdWFsLCBwcnJlbGlkKSBBUyBwcnJlbHF1YWwsICIKQEAgLTQ4NTcsNiArNDkyNyw5IEBA IGdldFB1YmxpY2F0aW9uVGFibGVzKEFyY2hpdmUgKmZvdXQsIFRhYmxlSW5mbyB0YmxpbmZvW10s IGludCBudW1UYWJsZXMpCiAJCQkJCQkJICIgICAgICBXSEVSRSBhdHRyZWxpZCA9IHByLnBycmVs aWQgQU5EIGF0dG51bSA9IHByYXR0cnNbc10pXG4iCiAJCQkJCQkJICIgIEVMU0UgTlVMTCBFTkQp IHByYXR0cnMgIgogCQkJCQkJCSAiRlJPTSBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0aW9uX3JlbCBw ciIpOworCQlpZiAoZm91dC0+cmVtb3RlVmVyc2lvbiA+PSAxOTAwMDApCisJCQlhcHBlbmRQUUV4 cEJ1ZmZlclN0cihxdWVyeSwgIiBXSEVSRSBOT1QgcHIucHJleGNlcHQiKTsKKwl9CiAJZWxzZQog CQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwKIAkJCQkJCQkgIlNFTEVDVCB0YWJsZW9pZCwg b2lkLCBwcnB1YmlkLCBwcnJlbGlkLCAiCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdf ZHVtcC5oIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaAppbmRleCA2ZGVjZWVmMjNmMy4uZTEz OGVmMTI3NmMgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmgKKysrIGIvc3Jj L2Jpbi9wZ19kdW1wL3BnX2R1bXAuaApAQCAtNjc2LDYgKzY3Niw3IEBAIHR5cGVkZWYgc3RydWN0 IF9QdWJsaWNhdGlvbkluZm8KIAlib29sCQlwdWJ0cnVuY2F0ZTsKIAlib29sCQlwdWJ2aWFyb290 OwogCVB1Ymxpc2hHZW5jb2xzVHlwZSBwdWJnZW5jb2xzX3R5cGU7CisJU2ltcGxlUHRyTGlzdCBl eGNlcHRfdGFibGVzOwogfSBQdWJsaWNhdGlvbkluZm87CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMv YmluL3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5wbCBiL3NyYy9iaW4vcGdfZHVtcC90LzAwMl9wZ19k dW1wLnBsCmluZGV4IGYxNWJkMDZhZGNjLi41ODg4OTFhNjJiZCAxMDA2NDQKLS0tIGEvc3JjL2Jp bi9wZ19kdW1wL3QvMDAyX3BnX2R1bXAucGwKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3QvMDAyX3Bn X2R1bXAucGwKQEAgLTMyMDIsNiArMzIwMiwzNiBAQCBteSAldGVzdHMgPSAoCiAJCWxpa2UgPT4g eyAlZnVsbF9ydW5zLCBzZWN0aW9uX3Bvc3RfZGF0YSA9PiAxLCB9LAogCX0sCiAKKwknQ1JFQVRF IFBVQkxJQ0FUSU9OIHB1YjgnID0+IHsKKwkJY3JlYXRlX29yZGVyID0+IDUwLAorCQljcmVhdGVf c3FsID0+CisJCSAgJ0NSRUFURSBQVUJMSUNBVElPTiBwdWI4IEZPUiBBTEwgVEFCTEVTIEVYQ0VQ VCBUQUJMRSAoZHVtcF90ZXN0LnRlc3RfdGFibGUpOycsCisJCXJlZ2V4cCA9PiBxci9eCisJCQlc UUNSRUFURSBQVUJMSUNBVElPTiBwdWI4IEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCBUQUJMRSAoT05M WSBkdW1wX3Rlc3QudGVzdF90YWJsZSkgV0lUSCAocHVibGlzaCA9ICdpbnNlcnQsIHVwZGF0ZSwg ZGVsZXRlLCB0cnVuY2F0ZScpO1xFCisJCQkveG0sCisJCWxpa2UgPT4geyAlZnVsbF9ydW5zLCBz ZWN0aW9uX3Bvc3RfZGF0YSA9PiAxLCB9LAorCX0sCisKKwknQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1 YjknID0+IHsKKwkJY3JlYXRlX29yZGVyID0+IDUwLAorCQljcmVhdGVfc3FsID0+CisJCSAgJ0NS RUFURSBQVUJMSUNBVElPTiBwdWI5IEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCBUQUJMRSAoZHVtcF90 ZXN0LnRlc3RfdGFibGUsIGR1bXBfdGVzdC50ZXN0X3NlY29uZF90YWJsZSk7JywKKwkJcmVnZXhw ID0+IHFyL14KKwkJCVxRQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YjkgRk9SIEFMTCBUQUJMRVMgRVhD RVBUIFRBQkxFIChPTkxZIGR1bXBfdGVzdC50ZXN0X3RhYmxlLCBPTkxZIGR1bXBfdGVzdC50ZXN0 X3NlY29uZF90YWJsZSkgV0lUSCAocHVibGlzaCA9ICdpbnNlcnQsIHVwZGF0ZSwgZGVsZXRlLCB0 cnVuY2F0ZScpO1xFCisJCQkveG0sCisJCWxpa2UgPT4geyAlZnVsbF9ydW5zLCBzZWN0aW9uX3Bv c3RfZGF0YSA9PiAxLCB9LAorCX0sCisKKwknQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YjEwJyA9PiB7 CisJCWNyZWF0ZV9vcmRlciA9PiA5MiwKKwkJY3JlYXRlX3NxbCA9PgorCQkgICdDUkVBVEUgUFVC TElDQVRJT04gcHViMTAgRk9SIEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxFIChkdW1wX3Rlc3QudGVz dF9pbmhlcml0YW5jZV9wYXJlbnQpOycsCisJCXJlZ2V4cCA9PiBxci9eCisJCQlcUUNSRUFURSBQ VUJMSUNBVElPTiBwdWIxMCBGT1IgQUxMIFRBQkxFUyBFWENFUFQgVEFCTEUgKE9OTFkgZHVtcF90 ZXN0LnRlc3RfaW5oZXJpdGFuY2VfcGFyZW50LCBPTkxZIGR1bXBfdGVzdC50ZXN0X2luaGVyaXRh bmNlX2NoaWxkKSBXSVRIIChwdWJsaXNoID0gJ2luc2VydCwgdXBkYXRlLCBkZWxldGUsIHRydW5j YXRlJyk7XEUKKwkJCS94bSwKKwkJbGlrZSA9PiB7ICVmdWxsX3J1bnMsIHNlY3Rpb25fcG9zdF9k YXRhID0+IDEsIH0sCisJfSwKKwogCSdDUkVBVEUgU1VCU0NSSVBUSU9OIHN1YjEnID0+IHsKIAkJ Y3JlYXRlX29yZGVyID0+IDUwLAogCQljcmVhdGVfc3FsID0+ICdDUkVBVEUgU1VCU0NSSVBUSU9O IHN1YjEKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jIGIvc3JjL2Jpbi9wc3Fs L2Rlc2NyaWJlLmMKaW5kZXggYWIxM2M5MGVkMzMuLmE5NGVhZGUyODJmIDEwMDY0NAotLS0gYS9z cmMvYmluL3BzcWwvZGVzY3JpYmUuYworKysgYi9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYwpAQCAt MzA3NSwxNSArMzA3NSw0MyBAQCBkZXNjcmliZU9uZVRhYmxlRGV0YWlscyhjb25zdCBjaGFyICpz Y2hlbWFuYW1lLAogCQkJCQkJCQkgICJGUk9NIHBnX2NhdGFsb2cucGdfcHVibGljYXRpb24gcFxu IgogCQkJCQkJCQkgICIgICAgIEpPSU4gcGdfY2F0YWxvZy5wZ19wdWJsaWNhdGlvbl9yZWwgcHIg T04gcC5vaWQgPSBwci5wcnB1YmlkXG4iCiAJCQkJCQkJCSAgIiAgICAgSk9JTiBwZ19jYXRhbG9n LnBnX2NsYXNzIGMgT04gYy5vaWQgPSBwci5wcnJlbGlkXG4iCi0JCQkJCQkJCSAgIldIRVJFIHBy LnBycmVsaWQgPSAnJXMnXG4iCi0JCQkJCQkJCSAgIlVOSU9OXG4iCi0JCQkJCQkJCSAgIlNFTEVD VCBwdWJuYW1lXG4iCi0JCQkJCQkJCSAgIiAgICAgLCBOVUxMXG4iCi0JCQkJCQkJCSAgIiAgICAg LCBOVUxMXG4iCi0JCQkJCQkJCSAgIkZST00gcGdfY2F0YWxvZy5wZ19wdWJsaWNhdGlvbiBwXG4i Ci0JCQkJCQkJCSAgIldIRVJFIHAucHViYWxsdGFibGVzIEFORCBwZ19jYXRhbG9nLnBnX3JlbGF0 aW9uX2lzX3B1Ymxpc2hhYmxlKCclcycpXG4iCi0JCQkJCQkJCSAgIk9SREVSIEJZIDE7IiwKLQkJ CQkJCQkJICBvaWQsIG9pZCwgb2lkLCBvaWQpOworCQkJCQkJCQkgICJXSEVSRSBwci5wcnJlbGlk ID0gJyVzJ1xuIiwKKwkJCQkJCQkJICBvaWQsIG9pZCwgb2lkKTsKKworCQkJCWlmIChwc2V0LnN2 ZXJzaW9uID49IDE5MDAwMCkKKwkJCQl7CisJCQkJCS8qCisJCQkJCSAqIFNraXAgZW50cmllcyB3 aGVyZSB0aGlzIHJlbGF0aW9uIGFwcGVhcnMgaW4gdGhlCisJCQkJCSAqIHB1YmxpY2F0aW9uJ3Mg RVhDRVBUIFRBQkxFIGxpc3QuCisJCQkJCSAqLworCQkJCQlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVm LAorCQkJCQkJCQkJICAiIEFORCBOT1QgcHIucHJleGNlcHRcbiIKKwkJCQkJCQkJCSAgIlVOSU9O XG4iCisJCQkJCQkJCQkgICJTRUxFQ1QgcHVibmFtZVxuIgorCQkJCQkJCQkJICAiICAgICAsIE5V TExcbiIKKwkJCQkJCQkJCSAgIiAgICAgLCBOVUxMXG4iCisJCQkJCQkJCQkgICJGUk9NIHBnX2Nh dGFsb2cucGdfcHVibGljYXRpb24gcFxuIgorCQkJCQkJCQkJICAiV0hFUkUgcC5wdWJhbGx0YWJs ZXMgQU5EIHBnX2NhdGFsb2cucGdfcmVsYXRpb25faXNfcHVibGlzaGFibGUoJyVzJylcbiIKKwkJ CQkJCQkJCSAgIiAgICAgQU5EIE5PVCBFWElTVFMgKFxuIgorCQkJCQkJCQkJICAiICAgICBTRUxF Q1QgMVxuIgorCQkJCQkJCQkJICAiICAgICBGUk9NIHBnX2NhdGFsb2cucGdfcHVibGljYXRpb25f cmVsIHByXG4iCisJCQkJCQkJCQkgICIgICAgIFdIRVJFIHByLnBycHViaWQgPSBwLm9pZCBBTkRc biIKKwkJCQkJCQkJCSAgIiAgICAgKHByLnBycmVsaWQgPSAnJXMnIE9SIHByLnBycmVsaWQgPSBw Z19jYXRhbG9nLnBnX3BhcnRpdGlvbl9yb290KCclcycpKSlcbiIKKwkJCQkJCQkJCSAgIk9SREVS IEJZIDE7IiwKKwkJCQkJCQkJCSAgb2lkLCBvaWQsIG9pZCk7CisJCQkJfQorCQkJCWVsc2UKKwkJ CQl7CisJCQkJCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsCisJCQkJCQkJCQkgICJVTklPTlxuIgor CQkJCQkJCQkJICAiU0VMRUNUIHB1Ym5hbWVcbiIKKwkJCQkJCQkJCSAgIgkJLCBOVUxMXG4iCisJ CQkJCQkJCQkgICIJCSwgTlVMTFxuIgorCQkJCQkJCQkJICAiRlJPTSBwZ19jYXRhbG9nLnBnX3B1 YmxpY2F0aW9uIHBcbiIKKwkJCQkJCQkJCSAgIldIRVJFIHAucHViYWxsdGFibGVzIEFORCBwZ19j YXRhbG9nLnBnX3JlbGF0aW9uX2lzX3B1Ymxpc2hhYmxlKCclcycpXG4iCisJCQkJCQkJCQkgICJP UkRFUiBCWSAxOyIsCisJCQkJCQkJCQkgIG9pZCk7CisJCQkJfQogCQkJfQogCQkJZWxzZQogCQkJ ewpAQCAtMzEzNCw2ICszMTYyLDM2IEBAIGRlc2NyaWJlT25lVGFibGVEZXRhaWxzKGNvbnN0IGNo YXIgKnNjaGVtYW5hbWUsCiAJCQlQUWNsZWFyKHJlc3VsdCk7CiAJCX0KIAorCQkvKiBQcmludCBw dWJsaWNhdGlvbnMgd2hlcmUgdGhlIHRhYmxlIGlzIGluIHRoZSBFWENFUFQgY2xhdXNlICovCisJ CWlmIChwc2V0LnN2ZXJzaW9uID49IDE5MDAwMCkKKwkJeworCQkJcHJpbnRmUFFFeHBCdWZmZXIo JmJ1ZiwKKwkJCQkJCQkgICJTRUxFQ1QgcHVibmFtZVxuIgorCQkJCQkJCSAgIkZST00gcGdfY2F0 YWxvZy5wZ19wdWJsaWNhdGlvbiBwXG4iCisJCQkJCQkJICAiSk9JTiBwZ19jYXRhbG9nLnBnX3B1 YmxpY2F0aW9uX3JlbCBwciBPTiBwLm9pZCA9IHByLnBycHViaWRcbiIKKwkJCQkJCQkgICJXSEVS RSAocHIucHJyZWxpZCA9ICclcycgT1IgcHIucHJyZWxpZCA9IHBnX2NhdGFsb2cucGdfcGFydGl0 aW9uX3Jvb3QoJyVzJykpXG4iCisJCQkJCQkJICAiQU5EIHByLnByZXhjZXB0XG4iCisJCQkJCQkJ ICAiT1JERVIgQlkgMTsiLCBvaWQsIG9pZCk7CisKKwkJCXJlc3VsdCA9IFBTUUxleGVjKGJ1Zi5k YXRhKTsKKwkJCWlmICghcmVzdWx0KQorCQkJCWdvdG8gZXJyb3JfcmV0dXJuOworCQkJZWxzZQor CQkJCXR1cGxlcyA9IFBRbnR1cGxlcyhyZXN1bHQpOworCisJCQlpZiAodHVwbGVzID4gMCkKKwkJ CQlwcmludFRhYmxlQWRkRm9vdGVyKCZjb250LCBfKCJFeGNlcHQgUHVibGljYXRpb25zOiIpKTsK KworCQkJLyogTWlnaHQgYmUgYW4gZW1wdHkgc2V0IC0gdGhhdCdzIG9rICovCisJCQlmb3IgKGkg PSAwOyBpIDwgdHVwbGVzOyBpKyspCisJCQl7CisJCQkJcHJpbnRmUFFFeHBCdWZmZXIoJmJ1Ziwg IiAgICBcIiVzXCIiLCBQUWdldHZhbHVlKHJlc3VsdCwgaSwgMCkpOworCisJCQkJcHJpbnRUYWJs ZUFkZEZvb3RlcigmY29udCwgYnVmLmRhdGEpOworCQkJfQorCQkJUFFjbGVhcihyZXN1bHQpOwor CQl9CisKIAkJLyoKIAkJICogSWYgdmVyYm9zZSwgcHJpbnQgTk9UIE5VTEwgY29uc3RyYWludHMu CiAJCSAqLwpAQCAtNjc2Myw4ICs2ODIxLDEyIEBAIGRlc2NyaWJlUHVibGljYXRpb25zKGNvbnN0 IGNoYXIgKnBhdHRlcm4pCiAJCQkJCQkJICAiICAgICBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0aW9u X3JlbCBwclxuIgogCQkJCQkJCSAgIldIRVJFIGMucmVsbmFtZXNwYWNlID0gbi5vaWRcbiIKIAkJ CQkJCQkgICIgIEFORCBjLm9pZCA9IHByLnBycmVsaWRcbiIKLQkJCQkJCQkgICIgIEFORCBwci5w cnB1YmlkID0gJyVzJ1xuIgotCQkJCQkJCSAgIk9SREVSIEJZIDEsMiIsIHB1YmlkKTsKKwkJCQkJ CQkgICIgIEFORCBwci5wcnB1YmlkID0gJyVzJ1xuIiwgcHViaWQpOworCisJCQlpZiAocHNldC5z dmVyc2lvbiA+PSAxOTAwMDApCisJCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwgIiAgQU5EIE5P VCBwci5wcmV4Y2VwdFxuIik7CisKKwkJCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsICJPUkRFUiBC WSAxLDIiKTsKIAkJCWlmICghYWRkRm9vdGVyVG9QdWJsaWNhdGlvbkRlc2MoJmJ1ZiwgXygiVGFi bGVzOiIpLCBmYWxzZSwgJmNvbnQpKQogCQkJCWdvdG8gZXJyb3JfcmV0dXJuOwogCkBAIC02Nzgy LDYgKzY4NDQsMjMgQEAgZGVzY3JpYmVQdWJsaWNhdGlvbnMoY29uc3QgY2hhciAqcGF0dGVybikK IAkJCQkJZ290byBlcnJvcl9yZXR1cm47CiAJCQl9CiAJCX0KKwkJZWxzZQorCQl7CisJCQlpZiAo cHNldC5zdmVyc2lvbiA+PSAxOTAwMDApCisJCQl7CisJCQkJLyogR2V0IHRhYmxlcyBpbiB0aGUg RVhDRVBUIGNsYXVzZSBmb3IgdGhpcyBwdWJsaWNhdGlvbiAqLworCQkJCXByaW50ZlBRRXhwQnVm ZmVyKCZidWYsCisJCQkJCQkJCSAgIlNFTEVDVCBuLm5zcG5hbWUgfHwgJy4nIHx8IGMucmVsbmFt ZVxuIgorCQkJCQkJCQkgICJGUk9NIHBnX2NhdGFsb2cucGdfY2xhc3MgY1xuIgorCQkJCQkJCQkg ICIgICAgIEpPSU4gcGdfY2F0YWxvZy5wZ19uYW1lc3BhY2UgbiBPTiBuLm9pZCA9IGMucmVsbmFt ZXNwYWNlXG4iCisJCQkJCQkJCSAgIiAgICAgSk9JTiBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0aW9u X3JlbCBwciBPTiBjLm9pZCA9IHByLnBycmVsaWRcbiIKKwkJCQkJCQkJICAiV0hFUkUgcHIucHJw dWJpZCA9ICclcycgQU5EIHByLnByZXhjZXB0XG4iCisJCQkJCQkJCSAgIk9SREVSIEJZIDEiLCBw dWJpZCk7CisJCQkJaWYgKCFhZGRGb290ZXJUb1B1YmxpY2F0aW9uRGVzYygmYnVmLCBfKCJFeGNl cHQgdGFibGVzOiIpLAorCQkJCQkJCQkJCQkJdHJ1ZSwgJmNvbnQpKQorCQkJCQlnb3RvIGVycm9y X3JldHVybjsKKwkJCX0KKwkJfQogCiAJCXByaW50VGFibGUoJmNvbnQsIHBzZXQucXVlcnlGb3V0 LCBmYWxzZSwgcHNldC5sb2dmaWxlKTsKIAkJcHJpbnRUYWJsZUNsZWFudXAoJmNvbnQpOwpkaWZm IC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jIGIvc3JjL2Jpbi9wc3FsL3Rh Yi1jb21wbGV0ZS5pbi5jCmluZGV4IDkwNWMwNzY3NjNjLi5mOGMwODY1Y2E4OSAxMDA2NDQKLS0t IGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jCisrKyBiL3NyYy9iaW4vcHNxbC90YWIt Y29tcGxldGUuaW4uYwpAQCAtMzY4MSw3ICszNjgxLDE3IEBAIG1hdGNoX3ByZXZpb3VzX3dvcmRz KGludCBwYXR0ZXJuX2lkLAogCWVsc2UgaWYgKE1hdGNoZXMoIkNSRUFURSIsICJQVUJMSUNBVElP TiIsIE1hdGNoQW55LCAiRk9SIiwgIkFMTCIpKQogCQlDT01QTEVURV9XSVRIKCJUQUJMRVMiLCAi U0VRVUVOQ0VTIik7CiAJZWxzZSBpZiAoTWF0Y2hlcygiQ1JFQVRFIiwgIlBVQkxJQ0FUSU9OIiwg TWF0Y2hBbnksICJGT1IiLCAiQUxMIiwgIlRBQkxFUyIpKQotCQlDT01QTEVURV9XSVRIKCJXSVRI ICgiKTsKKwkJQ09NUExFVEVfV0lUSCgiRVhDRVBUIFRBQkxFICgiLCAiV0lUSCAoIik7CisJZWxz ZSBpZiAoTWF0Y2hlcygiQ1JFQVRFIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJGT1IiLCAi QUxMIiwgIlRBQkxFUyIsICJFWENFUFQiKSkKKwkJQ09NUExFVEVfV0lUSCgiVEFCTEUgKCIpOwor CWVsc2UgaWYgKE1hdGNoZXMoIkNSRUFURSIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiRk9S IiwgIkFMTCIsICJUQUJMRVMiLCAiRVhDRVBUIiwgIlRBQkxFIikpCisJCUNPTVBMRVRFX1dJVEgo IigiKTsKKwllbHNlIGlmIChNYXRjaGVzKCJDUkVBVEUiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFu eSwgIkZPUiIsICJBTEwiLCAiVEFCTEVTIiwgIkVYQ0VQVCIsICJUQUJMRSIsICIoIikpCisJCUNP TVBMRVRFX1dJVEhfU0NIRU1BX1FVRVJZKFF1ZXJ5X2Zvcl9saXN0X29mX3RhYmxlcyk7CisJZWxz ZSBpZiAoTWF0Y2hlcygiQ1JFQVRFIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJGT1IiLCAi QUxMIiwgIlRBQkxFUyIsICJFWENFUFQiLCAiVEFCTEUiLCAiKCIsIE1hdGNoQW55TikgJiYgZW5k c193aXRoKHByZXZfd2QsICcsJykpCisJCUNPTVBMRVRFX1dJVEhfU0NIRU1BX1FVRVJZKFF1ZXJ5 X2Zvcl9saXN0X29mX3RhYmxlcyk7CisJZWxzZSBpZiAoTWF0Y2hlcygiQ1JFQVRFIiwgIlBVQkxJ Q0FUSU9OIiwgTWF0Y2hBbnksICJGT1IiLCAiQUxMIiwgIlRBQkxFUyIsICJFWENFUFQiLCAiVEFC TEUiLCAiKCIsIE1hdGNoQW55TikgJiYgIWVuZHNfd2l0aChwcmV2X3dkLCAnLCcpKQorCQlDT01Q TEVURV9XSVRIKCIpIik7CiAJZWxzZSBpZiAoTWF0Y2hlcygiQ1JFQVRFIiwgIlBVQkxJQ0FUSU9O IiwgTWF0Y2hBbnksICJGT1IiLCAiVEFCTEVTIikpCiAJCUNPTVBMRVRFX1dJVEgoIklOIFNDSEVN QSIpOwogCWVsc2UgaWYgKE1hdGNoZXMoIkNSRUFURSIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55 LCAiRk9SIiwgIlRBQkxFIiwgTWF0Y2hBbnkpICYmICFlbmRzX3dpdGgocHJldl93ZCwgJywnKSkK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb24uaCBiL3NyYy9p bmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb24uaAppbmRleCA2ZTVmNzNjYWE5ZS4uZTI1MjI4 NzEzZTcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb24uaAor KysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmgKQEAgLTE1MCwxNiArMTUw LDE5IEBAIHR5cGVkZWYgc3RydWN0IFB1YmxpY2F0aW9uUmVsSW5mbwogCVJlbGF0aW9uCXJlbGF0 aW9uOwogCU5vZGUJICAgKndoZXJlQ2xhdXNlOwogCUxpc3QJICAgKmNvbHVtbnM7CisJYm9vbAkJ ZXhjZXB0OwogfSBQdWJsaWNhdGlvblJlbEluZm87CiAKIGV4dGVybiBQdWJsaWNhdGlvbiAqR2V0 UHVibGljYXRpb24oT2lkIHB1YmlkKTsKIGV4dGVybiBQdWJsaWNhdGlvbiAqR2V0UHVibGljYXRp b25CeU5hbWUoY29uc3QgY2hhciAqcHVibmFtZSwgYm9vbCBtaXNzaW5nX29rKTsKLWV4dGVybiBM aXN0ICpHZXRSZWxhdGlvblB1YmxpY2F0aW9ucyhPaWQgcmVsaWQpOworZXh0ZXJuIExpc3QgKkdl dFJlbGF0aW9uSW5jbHVkZWRQdWJsaWNhdGlvbnMoT2lkIHJlbGlkKTsKK2V4dGVybiBMaXN0ICpH ZXRSZWxhdGlvbkV4Y2x1ZGVkUHVibGljYXRpb25zKE9pZCByZWxpZCk7CiAKIC8qLS0tLS0tLS0t Ci0gKiBFeHBlY3RlZCB2YWx1ZXMgZm9yIHB1Yl9wYXJ0b3B0IHBhcmFtZXRlciBvZiBHZXRQdWJs aWNhdGlvblJlbGF0aW9ucygpLAotICogd2hpY2ggYWxsb3dzIGNhbGxlcnMgdG8gc3BlY2lmeSB3 aGljaCBwYXJ0aXRpb25zIG9mIHBhcnRpdGlvbmVkIHRhYmxlcwotICogbWVudGlvbmVkIGluIHRo ZSBwdWJsaWNhdGlvbiB0aGV5IGV4cGVjdCB0byBzZWUuCisgKiBFeHBlY3RlZCB2YWx1ZXMgZm9y IHB1Yl9wYXJ0b3B0IHBhcmFtZXRlciBvZgorICogR2V0SW5jbHVkZWRQdWJsaWNhdGlvblJlbGF0 aW9ucygpLCB3aGljaCBhbGxvd3MgY2FsbGVycyB0byBzcGVjaWZ5IHdoaWNoCisgKiBwYXJ0aXRp b25zIG9mIHBhcnRpdGlvbmVkIHRhYmxlcyBtZW50aW9uZWQgaW4gdGhlIHB1YmxpY2F0aW9uIHRo ZXkgZXhwZWN0IHRvCisgKiBzZWUuCiAgKgogICoJUk9PVDoJb25seSB0aGUgdGFibGUgZXhwbGlj aXRseSBtZW50aW9uZWQgaW4gdGhlIHB1YmxpY2F0aW9uCiAgKglMRUFGOglvbmx5IGxlYWYgcGFy dGl0aW9ucyBpbiBnaXZlbiB0cmVlCkBAIC0xNzIsOSArMTc1LDEyIEBAIHR5cGVkZWYgZW51bSBQ dWJsaWNhdGlvblBhcnRPcHQKIAlQVUJMSUNBVElPTl9QQVJUX0FMTCwKIH0gUHVibGljYXRpb25Q YXJ0T3B0OwogCi1leHRlcm4gTGlzdCAqR2V0UHVibGljYXRpb25SZWxhdGlvbnMoT2lkIHB1Ymlk LCBQdWJsaWNhdGlvblBhcnRPcHQgcHViX3BhcnRvcHQpOworZXh0ZXJuIExpc3QgKkdldEluY2x1 ZGVkUHVibGljYXRpb25SZWxhdGlvbnMoT2lkIHB1YmlkLAorCQkJCQkJCQkJCQkgUHVibGljYXRp b25QYXJ0T3B0IHB1Yl9wYXJ0b3B0KTsKK2V4dGVybiBMaXN0ICpHZXRFeGNsdWRlZFB1YmxpY2F0 aW9uVGFibGVzKE9pZCBwdWJpZCwKKwkJCQkJCQkJCQkgIFB1YmxpY2F0aW9uUGFydE9wdCBwdWJf cGFydG9wdCk7CiBleHRlcm4gTGlzdCAqR2V0QWxsVGFibGVzUHVibGljYXRpb25zKHZvaWQpOwot ZXh0ZXJuIExpc3QgKkdldEFsbFB1YmxpY2F0aW9uUmVsYXRpb25zKGNoYXIgcmVsa2luZCwgYm9v bCBwdWJ2aWFyb290KTsKK2V4dGVybiBMaXN0ICpHZXRBbGxQdWJsaWNhdGlvblJlbGF0aW9ucyhP aWQgcHViaWQsIGNoYXIgcmVsa2luZCwgYm9vbCBwdWJ2aWFyb290KTsKIGV4dGVybiBMaXN0ICpH ZXRQdWJsaWNhdGlvblNjaGVtYXMoT2lkIHB1YmlkKTsKIGV4dGVybiBMaXN0ICpHZXRTY2hlbWFQ dWJsaWNhdGlvbnMoT2lkIHNjaGVtYWlkKTsKIGV4dGVybiBMaXN0ICpHZXRTY2hlbWFQdWJsaWNh dGlvblJlbGF0aW9ucyhPaWQgc2NoZW1haWQsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRh bG9nL3BnX3B1YmxpY2F0aW9uX3JlbC5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNh dGlvbl9yZWwuaAppbmRleCA2M2ViN2M3NWY1My4uY2VmYzM4YzllZDggMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb25fcmVsLmgKKysrIGIvc3JjL2luY2x1ZGUv Y2F0YWxvZy9wZ19wdWJsaWNhdGlvbl9yZWwuaApAQCAtMzMsNiArMzMsNyBAQCBDQVRBTE9HKHBn X3B1YmxpY2F0aW9uX3JlbCw2MTA2LFB1YmxpY2F0aW9uUmVsUmVsYXRpb25JZCkKIAlPaWQJCQlv aWQ7CQkJLyogb2lkICovCiAJT2lkCQkJcHJwdWJpZCBCS0lfTE9PS1VQKHBnX3B1YmxpY2F0aW9u KTsgLyogT2lkIG9mIHRoZSBwdWJsaWNhdGlvbiAqLwogCU9pZAkJCXBycmVsaWQgQktJX0xPT0tV UChwZ19jbGFzcyk7CS8qIE9pZCBvZiB0aGUgcmVsYXRpb24gKi8KKwlib29sCQlwcmV4Y2VwdCBC S0lfREVGQVVMVChmKTsJLyogcmVsYXRpb24gaXMgbm90IHB1Ymxpc2hlZCAqLwogCiAjaWZkZWYJ Q0FUQUxPR19WQVJMRU4JCQkvKiB2YXJpYWJsZS1sZW5ndGggZmllbGRzIHN0YXJ0IGhlcmUgKi8K IAlwZ19ub2RlX3RyZWUgcHJxdWFsOwkJLyogcXVhbGlmaWNhdGlvbnMgKi8KZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNl bm9kZXMuaAppbmRleCBmMzcxMzE4MzViZS4uZmY0MTk0M2E2ZGIgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5v ZGVzLmgKQEAgLTQyOTksOSArNDI5OSwxMCBAQCB0eXBlZGVmIHN0cnVjdCBBbHRlclRTQ29uZmln dXJhdGlvblN0bXQKIHR5cGVkZWYgc3RydWN0IFB1YmxpY2F0aW9uVGFibGUKIHsKIAlOb2RlVGFn CQl0eXBlOwotCVJhbmdlVmFyICAgKnJlbGF0aW9uOwkJLyogcmVsYXRpb24gdG8gYmUgcHVibGlz aGVkICovCisJUmFuZ2VWYXIgICAqcmVsYXRpb247CQkvKiBwdWJsaWNhdGlvbiByZWxhdGlvbiAq LwogCU5vZGUJICAgKndoZXJlQ2xhdXNlOwkvKiBxdWFsaWZpY2F0aW9ucyAqLwogCUxpc3QJICAg KmNvbHVtbnM7CQkvKiBMaXN0IG9mIGNvbHVtbnMgaW4gYSBwdWJsaWNhdGlvbiB0YWJsZSAqLwor CWJvb2wJCWV4Y2VwdDsJCQkvKiBUcnVlIGlmIGxpc3RlZCBpbiB0aGUgRVhDRVBUIGNsYXVzZSAq LwogfSBQdWJsaWNhdGlvblRhYmxlOwogCiAvKgpAQCAtNDMxMCw2ICs0MzExLDcgQEAgdHlwZWRl ZiBzdHJ1Y3QgUHVibGljYXRpb25UYWJsZQogdHlwZWRlZiBlbnVtIFB1YmxpY2F0aW9uT2JqU3Bl Y1R5cGUKIHsKIAlQVUJMSUNBVElPTk9CSl9UQUJMRSwJCS8qIEEgdGFibGUgKi8KKwlQVUJMSUNB VElPTk9CSl9FWENFUFRfVEFCTEUsCS8qIEEgdGFibGUgaW4gdGhlIEVYQ0VQVCBjbGF1c2UgKi8K IAlQVUJMSUNBVElPTk9CSl9UQUJMRVNfSU5fU0NIRU1BLAkvKiBBbGwgdGFibGVzIGluIHNjaGVt YSAqLwogCVBVQkxJQ0FUSU9OT0JKX1RBQkxFU19JTl9DVVJfU0NIRU1BLAkvKiBBbGwgdGFibGVz IGluIGZpcnN0IGVsZW1lbnQgb2YKIAkJCQkJCQkJCQkJICogc2VhcmNoX3BhdGggKi8KQEAgLTQz MzgsNiArNDM0MCw3IEBAIHR5cGVkZWYgc3RydWN0IFB1YmxpY2F0aW9uQWxsT2JqU3BlYwogewog CU5vZGVUYWcJCXR5cGU7CiAJUHVibGljYXRpb25BbGxPYmpUeXBlIHB1Ym9ianR5cGU7CS8qIHR5 cGUgb2YgdGhpcyBwdWJsaWNhdGlvbiBvYmplY3QgKi8KKwlMaXN0CSAgICpleGNlcHRfdGFibGVz OwkvKiB0YWJsZXMgc3BlY2lmaWVkIGluIHRoZSBFWENFUFQgY2xhdXNlICovCiAJUGFyc2VMb2MJ bG9jYXRpb247CQkvKiB0b2tlbiBsb2NhdGlvbiwgb3IgLTEgaWYgdW5rbm93biAqLwogfSBQdWJs aWNhdGlvbkFsbE9ialNwZWM7CiAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvcHVibGljYXRpb24ub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wdWJsaWNhdGlv bi5vdXQKaW5kZXggMTA1ZDE1YWU0NWYuLjY4MWQyNTY0ZWQ1IDEwMDY0NAotLS0gYS9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91dApAQCAtMjEzLDMzICsyMTMsMTU3IEBAIE5vdC1udWxs IGNvbnN0cmFpbnRzOgogIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IHQgICAgICAgICAgfCBm ICAgICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCBmICAgICAgIHwgZiAgICAgICAgIHwg bm9uZSAgICAgICAgICAgICAgfCBmICAgICAgICB8IAogKDEgcm93KQogCi1EUk9QIFRBQkxFIHRl c3RwdWJfdGJsMjsKLURST1AgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JhbGx0YWJsZXMsIHRlc3Rw dWJfZm9ydGFibGUsIHRlc3RwdWJfZm9yc2NoZW1hLCB0ZXN0cHViX2Zvcl90Ymxfc2NoZW1hOwot Q1JFQVRFIFRBQkxFIHRlc3RwdWJfdGJsMyAoYSBpbnQpOwotQ1JFQVRFIFRBQkxFIHRlc3RwdWJf dGJsM2EgKGIgdGV4dCkgSU5IRVJJVFMgKHRlc3RwdWJfdGJsMyk7CistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIEVYQ0VQVCBUQUJMRSB0ZXN0cyBmb3Ig bm9ybWFsIHRhYmxlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCiBTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9ICdFUlJPUic7Ci1DUkVBVEUgUFVCTElDQVRJ T04gdGVzdHB1YjMgRk9SIFRBQkxFIHRlc3RwdWJfdGJsMzsKLUNSRUFURSBQVUJMSUNBVElPTiB0 ZXN0cHViNCBGT1IgVEFCTEUgT05MWSB0ZXN0cHViX3RibDM7CistLSBTcGVjaWZ5IHRhYmxlIGxp c3QgaW4gdGhlIEVYQ0VQVCBUQUJMRSBjbGF1c2Ugb2YgYSBGT1IgQUxMIFRBQkxFUyBwdWJsaWNh dGlvbgorQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yYWxsdGFibGVzX2V4Y2VwdHRhYmxl IEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCBUQUJMRSAodGVzdHB1Yl90YmwxLCB0ZXN0cHViX3RibDIp OworXGRScCsgdGVzdHB1Yl9mb3JhbGx0YWJsZXNfZXhjZXB0dGFibGUKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2Zv cmFsbHRhYmxlc19leGNlcHR0YWJsZQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0 YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1 bmNhdGVzIHwgR2VuZXJhdGVkIGNvbHVtbnMgfCBWaWEgcm9vdCB8IERlc2NyaXB0aW9uIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IHQg ICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwg dCAgICAgICAgIHwgbm9uZSAgICAgICAgICAgICAgfCBmICAgICAgICB8IAorRXhjZXB0IHRhYmxl czoKKyAgICAicHVibGljLnRlc3RwdWJfdGJsMSIKKyAgICAicHVibGljLnRlc3RwdWJfdGJsMiIK KworLS0gU3BlY2lmeSB0YWJsZSBpbiB0aGUgRVhDRVBUIFRBQkxFIGNsYXVzZSBvZiBhIEZPUiBB TEwgVEFCTEVTIHB1YmxpY2F0aW9uCitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JhbGx0 YWJsZXNfZXhjZXB0dGFibGUxIEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCBUQUJMRSAodGVzdHB1Yl90 YmwxKTsKK1xkUnArIHRlc3RwdWJfZm9yYWxsdGFibGVzX2V4Y2VwdHRhYmxlMQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1 Yl9mb3JhbGx0YWJsZXNfZXhjZXB0dGFibGUxCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwg QWxsIHRhYmxlcyB8IEFsbCBzZXF1ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMg fCBUcnVuY2F0ZXMgfCBHZW5lcmF0ZWQgY29sdW1ucyB8IFZpYSByb290IHwgRGVzY3JpcHRpb24g CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2Vy IHwgdCAgICAgICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAg ICAgfCB0ICAgICAgICAgfCBub25lICAgICAgICAgICAgICB8IGYgICAgICAgIHwgCitFeGNlcHQg dGFibGVzOgorICAgICJwdWJsaWMudGVzdHB1Yl90YmwxIgorCistLSBDaGVjayB0aGF0IHRoZSB0 YWJsZSBkZXNjcmlwdGlvbiBzaG93cyB0aGUgcHVibGljYXRpb25zIHdoZXJlIGl0IGlzIGxpc3Rl ZAorLS0gaW4gdGhlIEVYQ0VQVCBUQUJMRSBjbGF1c2UKK1xkIHRlc3RwdWJfdGJsMQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFRhYmxlICJwdWJsaWMudGVzdHB1Yl90YmwxIgorIENvbHVt biB8ICBUeXBlICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8ICAgICAgICAgICAgICAgICBEZWZh dWx0ICAgICAgICAgICAgICAgICAgCistLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBpZCAg ICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgbm90IG51bGwgfCBuZXh0dmFsKCd0ZXN0cHViX3Ri bDFfaWRfc2VxJzo6cmVnY2xhc3MpCisgZGF0YSAgIHwgdGV4dCAgICB8ICAgICAgICAgICB8ICAg ICAgICAgIHwgCitJbmRleGVzOgorICAgICJ0ZXN0cHViX3RibDFfcGtleSIgUFJJTUFSWSBLRVks IGJ0cmVlIChpZCkKK1B1YmxpY2F0aW9uczoKKyAgICAidGVzdHB1Yl9mb3JhbGx0YWJsZXMiCitF eGNlcHQgUHVibGljYXRpb25zOgorICAgICJ0ZXN0cHViX2ZvcmFsbHRhYmxlc19leGNlcHR0YWJs ZSIKKyAgICAidGVzdHB1Yl9mb3JhbGx0YWJsZXNfZXhjZXB0dGFibGUxIgorCiBSRVNFVCBjbGll bnRfbWluX21lc3NhZ2VzOworRFJPUCBUQUJMRSB0ZXN0cHViX3RibDI7CitEUk9QIFBVQkxJQ0FU SU9OIHRlc3RwdWJfZm9yYWxsdGFibGVzLCB0ZXN0cHViX2ZvcnRhYmxlLCB0ZXN0cHViX2ZvcnNj aGVtYSwgdGVzdHB1Yl9mb3JfdGJsX3NjaGVtYSwgdGVzdHB1Yl9mb3JhbGx0YWJsZXNfZXhjZXB0 dGFibGUsIHRlc3RwdWJfZm9yYWxsdGFibGVzX2V4Y2VwdHRhYmxlMTsKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gVGVzdHMgZm9yIGluaGVyaXRlZCB0 YWJsZXMsIGFuZAorLS0gRVhDRVBUIFRBQkxFIHRlc3RzIGZvciBpbmhlcml0ZWQgdGFibGVzCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1NFVCBjbGllbnRf bWluX21lc3NhZ2VzID0gJ0VSUk9SJzsKK0NSRUFURSBUQUJMRSB0ZXN0cHViX3RibF9wYXJlbnQg KGEgaW50KTsKK0NSRUFURSBUQUJMRSB0ZXN0cHViX3RibF9jaGlsZCAoYiB0ZXh0KSBJTkhFUklU UyAodGVzdHB1Yl90YmxfcGFyZW50KTsKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViMyBGT1Ig VEFCTEUgdGVzdHB1Yl90YmxfcGFyZW50OwogXGRScCsgdGVzdHB1YjMKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlv biB0ZXN0cHViMwogICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBBbGwg c2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgR2Vu ZXJhdGVkIGNvbHVtbnMgfCBWaWEgcm9vdCB8IERlc2NyaXB0aW9uIAogLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLQogIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBm ICAgICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwg bm9uZSAgICAgICAgICAgICAgfCBmICAgICAgICB8IAogVGFibGVzOgotICAgICJwdWJsaWMudGVz dHB1Yl90YmwzIgotICAgICJwdWJsaWMudGVzdHB1Yl90YmwzYSIKKyAgICAicHVibGljLnRlc3Rw dWJfdGJsX2NoaWxkIgorICAgICJwdWJsaWMudGVzdHB1Yl90YmxfcGFyZW50IgogCitDUkVBVEUg UFVCTElDQVRJT04gdGVzdHB1YjQgRk9SIFRBQkxFIE9OTFkgdGVzdHB1Yl90YmxfcGFyZW50Owog XGRScCsgdGVzdHB1YjQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViNAogICAgICAgICAgIE93bmVy ICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0 ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgR2VuZXJhdGVkIGNvbHVtbnMgfCBWaWEgcm9vdCB8 IERlc2NyaXB0aW9uIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQogIHJlZ3Jlc3NfcHVi bGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8IHQg ICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgbm9uZSAgICAgICAgICAgICAgfCBmICAgICAg ICB8IAogVGFibGVzOgotICAgICJwdWJsaWMudGVzdHB1Yl90YmwzIgorICAgICJwdWJsaWMudGVz dHB1Yl90YmxfcGFyZW50IgorCistLSBMaXN0IHRoZSBwYXJlbnQgdGFibGUgaW4gdGhlIEVYQ0VQ VCBUQUJMRSBjbGF1c2UgKHdpdGhvdXQgT05MWSBvciAnKicpCitDUkVBVEUgUFVCTElDQVRJT04g dGVzdHB1YjUgRk9SIEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxFICh0ZXN0cHViX3RibF9wYXJlbnQp OworXGRScCsgdGVzdHB1YjUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViNQorICAgICAgICAgIE93 bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVw ZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgR2VuZXJhdGVkIGNvbHVtbnMgfCBWaWEgcm9v dCB8IERlc2NyaXB0aW9uIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIHJlZ3Jlc3Nf cHVibGljYXRpb25fdXNlciB8IHQgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgbm9uZSAgICAgICAgICAgICAgfCBmICAg ICAgICB8IAorRXhjZXB0IHRhYmxlczoKKyAgICAicHVibGljLnRlc3RwdWJfdGJsX2NoaWxkIgor ICAgICJwdWJsaWMudGVzdHB1Yl90YmxfcGFyZW50IgogCi1EUk9QIFRBQkxFIHRlc3RwdWJfdGJs MywgdGVzdHB1Yl90YmwzYTsKLURST1AgUFVCTElDQVRJT04gdGVzdHB1YjMsIHRlc3RwdWI0Owor LS0gRVhDRVBUIHdpdGggJyonOiBsaXN0IHRoZSB0YWJsZSBhbmQgYWxsIGl0cyBkZXNjZW5kYW50 cyBpbiB0aGUgRVhDRVBUIFRBQkxFIGNsYXVzZQorQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWI2 IEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCBUQUJMRSAodGVzdHB1Yl90YmxfcGFyZW50ICopOworXGRS cCsgdGVzdHB1YjYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViNgorICAgICAgICAgIE93bmVyICAg ICAgICAgICB8IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMg fCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgR2VuZXJhdGVkIGNvbHVtbnMgfCBWaWEgcm9vdCB8IERl c2NyaXB0aW9uIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGlj YXRpb25fdXNlciB8IHQgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8IHQgICAg ICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgbm9uZSAgICAgICAgICAgICAgfCBmICAgICAgICB8 IAorRXhjZXB0IHRhYmxlczoKKyAgICAicHVibGljLnRlc3RwdWJfdGJsX2NoaWxkIgorICAgICJw dWJsaWMudGVzdHB1Yl90YmxfcGFyZW50IgorCistLSBFWENFUFQgd2l0aCBPTkxZOiBsaXN0IHRo ZSB0YWJsZSBpbiB0aGUgRVhDRVBUIFRBQkxFIGNsYXVzZSwgYnV0IG5vdCBpdHMgZGVzY2VuZGFu dHMKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViNyBGT1IgQUxMIFRBQkxFUyBFWENFUFQgVEFC TEUgKE9OTFkgdGVzdHB1Yl90YmxfcGFyZW50KTsKK1xkUnArIHRlc3RwdWI3CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGlj YXRpb24gdGVzdHB1YjcKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwg QWxsIHNlcXVlbmNlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8 IEdlbmVyYXRlZCBjb2x1bW5zIHwgVmlhIHJvb3QgfCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCB0ICAgICAgICAg IHwgZiAgICAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAg ICB8IG5vbmUgICAgICAgICAgICAgIHwgZiAgICAgICAgfCAKK0V4Y2VwdCB0YWJsZXM6CisgICAg InB1YmxpYy50ZXN0cHViX3RibF9wYXJlbnQiCisKK1JFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7 CitEUk9QIFRBQkxFIHRlc3RwdWJfdGJsX3BhcmVudCwgdGVzdHB1Yl90YmxfY2hpbGQ7CitEUk9Q IFBVQkxJQ0FUSU9OIHRlc3RwdWIzLCB0ZXN0cHViNCwgdGVzdHB1YjUsIHRlc3RwdWI2LCB0ZXN0 cHViNzsKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0g RVhDRVBUIFRBQkxFIHRlc3RzIGZvciBwYXJ0aXRpb25lZCB0YWJsZXMKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorU0VUIGNsaWVudF9taW5fbWVzc2FnZXMg PSAnRVJST1InOworQ1JFQVRFIFRBQkxFIHRlc3RwdWJfcm9vdChhIGludCkgUEFSVElUSU9OIEJZ IFJBTkdFKGEpOworQ1JFQVRFIFRBQkxFIHRlc3RwdWJfcGFydDEgUEFSVElUSU9OIE9GIHRlc3Rw dWJfcm9vdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxMDApOworQ1JFQVRFIFBVQkxJQ0FUSU9O IHRlc3RwdWI4IEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCBUQUJMRSAodGVzdHB1Yl9yb290KTsKK1xk UnArIHRlc3RwdWI4OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWI4CisgICAgICAgICAgT3duZXIg ICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBzZXF1ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRl cyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBHZW5lcmF0ZWQgY29sdW1ucyB8IFZpYSByb290IHwg RGVzY3JpcHRpb24gCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgcmVncmVzc19wdWJs aWNhdGlvbl91c2VyIHwgdCAgICAgICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgIHwgdCAg ICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBub25lICAgICAgICAgICAgICB8IGYgICAgICAg IHwgCitFeGNlcHQgdGFibGVzOgorICAgICJwdWJsaWMudGVzdHB1Yl9yb290IgorCitcZCB0ZXN0 cHViX3BhcnQxCisgICAgICAgICAgIFRhYmxlICJwdWJsaWMudGVzdHB1Yl9wYXJ0MSIKKyBDb2x1 bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IAorLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tCisgYSAgICAgIHwgaW50 ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCitQYXJ0aXRpb24gb2Y6IHRlc3RwdWJfcm9v dCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxMDApCitFeGNlcHQgUHVibGljYXRpb25zOgorICAg ICJ0ZXN0cHViOCIKKworXGQgdGVzdHB1Yl9yb290CisgICAgICBQYXJ0aXRpb25lZCB0YWJsZSAi cHVibGljLnRlc3RwdWJfcm9vdCIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVs bGFibGUgfCBEZWZhdWx0IAorLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0rLS0tLS0tLS0tCisgYSAgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAgIHwg CitQYXJ0aXRpb24ga2V5OiBSQU5HRSAoYSkKK0V4Y2VwdCBQdWJsaWNhdGlvbnM6CisgICAgInRl c3RwdWI4IgorTnVtYmVyIG9mIHBhcnRpdGlvbnM6IDEgKFVzZSBcZCsgdG8gbGlzdCB0aGVtLikK KworQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWI5IEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCBUQUJM RSAodGVzdHB1Yl9wYXJ0MSk7CitFUlJPUjogIGNhbm5vdCB1c2UgcHVibGljYXRpb24gRVhDRVBU IGNsYXVzZSBmb3IgcmVsYXRpb24gInRlc3RwdWJfcGFydDEiCitERVRBSUw6ICBUaGlzIG9wZXJh dGlvbiBpcyBub3Qgc3VwcG9ydGVkIGZvciBpbmRpdmlkdWFsIHBhcnRpdGlvbnMuCitDUkVBVEUg VEFCTEUgdGFiX21haW4gKGEgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UoYSk7CistLSBBdHRhY2hp bmcgYSBwYXJ0aXRpb24gaXMgbm90IGFsbG93ZWQgaWYgdGhlIHBhcnRpdGlvbmVkIHRhYmxlIGFw cGVhcnMgaW4gYQorLS0gcHVibGljYXRpb24ncyBFWENFUFQgVEFCTEUgY2xhdXNlLgorQUxURVIg VEFCTEUgdGFiX21haW4gQVRUQUNIIFBBUlRJVElPTiB0ZXN0cHViX3Jvb3QgRk9SIFZBTFVFUyBG Uk9NICgwKSBUTyAoMjAwKTsKK0VSUk9SOiAgY2Fubm90IGF0dGFjaCB0YWJsZSAidGVzdHB1Yl9y b290IiBhcyBwYXJ0aXRpb24gYmVjYXVzZSBpdCBpcyByZWZlcmVuY2VkIGluIHB1YmxpY2F0aW9u ICJ0ZXN0cHViOCIgRVhDRVBUIGNsYXVzZQorREVUQUlMOiAgVGhlIHB1YmxpY2F0aW9uIEVYQ0VQ VCBjbGF1c2UgY2Fubm90IGNvbnRhaW4gdGFibGVzIHRoYXQgYXJlIHBhcnRpdGlvbnMuCitSRVNF VCBjbGllbnRfbWluX21lc3NhZ2VzOworRFJPUCBUQUJMRSB0ZXN0cHViX3Jvb3QsIHRlc3RwdWJf cGFydDEsIHRhYl9tYWluOworRFJPUCBQVUJMSUNBVElPTiB0ZXN0cHViODsKIC0tLSBUZXN0cyBm b3IgcHVibGljYXRpb25zIHdpdGggU0VRVUVOQ0VTCiBDUkVBVEUgU0VRVUVOQ0UgcmVncmVzc19w dWJfc2VxMDsKIENSRUFURSBTRVFVRU5DRSBwdWJfdGVzdC5yZWdyZXNzX3B1Yl9zZXExOwpkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHVibGljYXRpb24uc3FsIGIvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvcHVibGljYXRpb24uc3FsCmluZGV4IDg1YjAwYmQ2N2M4Li40MDU1NzlkYWQ1 MiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHVibGljYXRpb24uc3FsCisrKyBi L3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1YmxpY2F0aW9uLnNxbApAQCAtMTA1LDIwICsxMDUsNjkg QEAgU0VMRUNUIHB1Ym5hbWUsIHB1YmFsbHRhYmxlcyBGUk9NIHBnX3B1YmxpY2F0aW9uIFdIRVJF IHB1Ym5hbWUgPSAndGVzdHB1Yl9mb3JhbGwKIFxkKyB0ZXN0cHViX3RibDIKIFxkUnArIHRlc3Rw dWJfZm9yYWxsdGFibGVzCiAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorLS0gRVhDRVBUIFRBQkxFIHRlc3RzIGZvciBub3JtYWwgdGFibGVzCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1NFVCBjbGllbnRfbWluX21l c3NhZ2VzID0gJ0VSUk9SJzsKKy0tIFNwZWNpZnkgdGFibGUgbGlzdCBpbiB0aGUgRVhDRVBUIFRB QkxFIGNsYXVzZSBvZiBhIEZPUiBBTEwgVEFCTEVTIHB1YmxpY2F0aW9uCitDUkVBVEUgUFVCTElD QVRJT04gdGVzdHB1Yl9mb3JhbGx0YWJsZXNfZXhjZXB0dGFibGUgRk9SIEFMTCBUQUJMRVMgRVhD RVBUIFRBQkxFICh0ZXN0cHViX3RibDEsIHRlc3RwdWJfdGJsMik7CitcZFJwKyB0ZXN0cHViX2Zv cmFsbHRhYmxlc19leGNlcHR0YWJsZQorLS0gU3BlY2lmeSB0YWJsZSBpbiB0aGUgRVhDRVBUIFRB QkxFIGNsYXVzZSBvZiBhIEZPUiBBTEwgVEFCTEVTIHB1YmxpY2F0aW9uCitDUkVBVEUgUFVCTElD QVRJT04gdGVzdHB1Yl9mb3JhbGx0YWJsZXNfZXhjZXB0dGFibGUxIEZPUiBBTEwgVEFCTEVTIEVY Q0VQVCBUQUJMRSAodGVzdHB1Yl90YmwxKTsKK1xkUnArIHRlc3RwdWJfZm9yYWxsdGFibGVzX2V4 Y2VwdHRhYmxlMQorLS0gQ2hlY2sgdGhhdCB0aGUgdGFibGUgZGVzY3JpcHRpb24gc2hvd3MgdGhl IHB1YmxpY2F0aW9ucyB3aGVyZSBpdCBpcyBsaXN0ZWQKKy0tIGluIHRoZSBFWENFUFQgVEFCTEUg Y2xhdXNlCitcZCB0ZXN0cHViX3RibDEKKworUkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsKIERS T1AgVEFCTEUgdGVzdHB1Yl90YmwyOwotRFJPUCBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcmFsbHRh YmxlcywgdGVzdHB1Yl9mb3J0YWJsZSwgdGVzdHB1Yl9mb3JzY2hlbWEsIHRlc3RwdWJfZm9yX3Ri bF9zY2hlbWE7CitEUk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yYWxsdGFibGVzLCB0ZXN0cHVi X2ZvcnRhYmxlLCB0ZXN0cHViX2ZvcnNjaGVtYSwgdGVzdHB1Yl9mb3JfdGJsX3NjaGVtYSwgdGVz dHB1Yl9mb3JhbGx0YWJsZXNfZXhjZXB0dGFibGUsIHRlc3RwdWJfZm9yYWxsdGFibGVzX2V4Y2Vw dHRhYmxlMTsKIAotQ1JFQVRFIFRBQkxFIHRlc3RwdWJfdGJsMyAoYSBpbnQpOwotQ1JFQVRFIFRB QkxFIHRlc3RwdWJfdGJsM2EgKGIgdGV4dCkgSU5IRVJJVFMgKHRlc3RwdWJfdGJsMyk7CistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIFRlc3RzIGZvciBp bmhlcml0ZWQgdGFibGVzLCBhbmQKKy0tIEVYQ0VQVCBUQUJMRSB0ZXN0cyBmb3IgaW5oZXJpdGVk IHRhYmxlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBT RVQgY2xpZW50X21pbl9tZXNzYWdlcyA9ICdFUlJPUic7Ci1DUkVBVEUgUFVCTElDQVRJT04gdGVz dHB1YjMgRk9SIFRBQkxFIHRlc3RwdWJfdGJsMzsKLUNSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHVi NCBGT1IgVEFCTEUgT05MWSB0ZXN0cHViX3RibDM7Ci1SRVNFVCBjbGllbnRfbWluX21lc3NhZ2Vz OworQ1JFQVRFIFRBQkxFIHRlc3RwdWJfdGJsX3BhcmVudCAoYSBpbnQpOworQ1JFQVRFIFRBQkxF IHRlc3RwdWJfdGJsX2NoaWxkIChiIHRleHQpIElOSEVSSVRTICh0ZXN0cHViX3RibF9wYXJlbnQp OworQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWIzIEZPUiBUQUJMRSB0ZXN0cHViX3RibF9wYXJl bnQ7CiBcZFJwKyB0ZXN0cHViMworQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWI0IEZPUiBUQUJM RSBPTkxZIHRlc3RwdWJfdGJsX3BhcmVudDsKIFxkUnArIHRlc3RwdWI0CistLSBMaXN0IHRoZSBw YXJlbnQgdGFibGUgaW4gdGhlIEVYQ0VQVCBUQUJMRSBjbGF1c2UgKHdpdGhvdXQgT05MWSBvciAn KicpCitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1YjUgRk9SIEFMTCBUQUJMRVMgRVhDRVBUIFRB QkxFICh0ZXN0cHViX3RibF9wYXJlbnQpOworXGRScCsgdGVzdHB1YjUKKy0tIEVYQ0VQVCB3aXRo ICcqJzogbGlzdCB0aGUgdGFibGUgYW5kIGFsbCBpdHMgZGVzY2VuZGFudHMgaW4gdGhlIEVYQ0VQ VCBUQUJMRSBjbGF1c2UKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViNiBGT1IgQUxMIFRBQkxF UyBFWENFUFQgVEFCTEUgKHRlc3RwdWJfdGJsX3BhcmVudCAqKTsKK1xkUnArIHRlc3RwdWI2Cist LSBFWENFUFQgd2l0aCBPTkxZOiBsaXN0IHRoZSB0YWJsZSBpbiB0aGUgRVhDRVBUIFRBQkxFIGNs YXVzZSwgYnV0IG5vdCBpdHMgZGVzY2VuZGFudHMKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHVi NyBGT1IgQUxMIFRBQkxFUyBFWENFUFQgVEFCTEUgKE9OTFkgdGVzdHB1Yl90YmxfcGFyZW50KTsK K1xkUnArIHRlc3RwdWI3CiAKLURST1AgVEFCTEUgdGVzdHB1Yl90YmwzLCB0ZXN0cHViX3RibDNh OwotRFJPUCBQVUJMSUNBVElPTiB0ZXN0cHViMywgdGVzdHB1YjQ7CitSRVNFVCBjbGllbnRfbWlu X21lc3NhZ2VzOworRFJPUCBUQUJMRSB0ZXN0cHViX3RibF9wYXJlbnQsIHRlc3RwdWJfdGJsX2No aWxkOworRFJPUCBQVUJMSUNBVElPTiB0ZXN0cHViMywgdGVzdHB1YjQsIHRlc3RwdWI1LCB0ZXN0 cHViNiwgdGVzdHB1Yjc7CisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorLS0gRVhDRVBUIFRBQkxFIHRlc3RzIGZvciBwYXJ0aXRpb25lZCB0YWJsZXMKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorU0VUIGNsaWVudF9t aW5fbWVzc2FnZXMgPSAnRVJST1InOworQ1JFQVRFIFRBQkxFIHRlc3RwdWJfcm9vdChhIGludCkg UEFSVElUSU9OIEJZIFJBTkdFKGEpOworQ1JFQVRFIFRBQkxFIHRlc3RwdWJfcGFydDEgUEFSVElU SU9OIE9GIHRlc3RwdWJfcm9vdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxMDApOworQ1JFQVRF IFBVQkxJQ0FUSU9OIHRlc3RwdWI4IEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCBUQUJMRSAodGVzdHB1 Yl9yb290KTsKK1xkUnArIHRlc3RwdWI4OworXGQgdGVzdHB1Yl9wYXJ0MQorXGQgdGVzdHB1Yl9y b290CitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1YjkgRk9SIEFMTCBUQUJMRVMgRVhDRVBUIFRB QkxFICh0ZXN0cHViX3BhcnQxKTsKKworQ1JFQVRFIFRBQkxFIHRhYl9tYWluIChhIGludCkgUEFS VElUSU9OIEJZIFJBTkdFKGEpOworLS0gQXR0YWNoaW5nIGEgcGFydGl0aW9uIGlzIG5vdCBhbGxv d2VkIGlmIHRoZSBwYXJ0aXRpb25lZCB0YWJsZSBhcHBlYXJzIGluIGEKKy0tIHB1YmxpY2F0aW9u J3MgRVhDRVBUIFRBQkxFIGNsYXVzZS4KK0FMVEVSIFRBQkxFIHRhYl9tYWluIEFUVEFDSCBQQVJU SVRJT04gdGVzdHB1Yl9yb290IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDIwMCk7CisKK1JFU0VU IGNsaWVudF9taW5fbWVzc2FnZXM7CitEUk9QIFRBQkxFIHRlc3RwdWJfcm9vdCwgdGVzdHB1Yl9w YXJ0MSwgdGFiX21haW47CitEUk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWI4OwogCiAtLS0gVGVzdHMg Zm9yIHB1YmxpY2F0aW9ucyB3aXRoIFNFUVVFTkNFUwogQ1JFQVRFIFNFUVVFTkNFIHJlZ3Jlc3Nf cHViX3NlcTA7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vbWVzb24uYnVpbGQg Yi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vbWVzb24uYnVpbGQKaW5kZXggYTRjN2RiYWZmNTkuLmY0 YTljZjUwNTdmIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vbWVzb24uYnVpbGQK KysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL21lc29uLmJ1aWxkCkBAIC00Niw2ICs0Niw3IEBA IHRlc3RzICs9IHsKICAgICAgICd0LzAzNF90ZW1wb3JhbC5wbCcsCiAgICAgICAndC8wMzVfY29u ZmxpY3RzLnBsJywKICAgICAgICd0LzAzNl9zZXF1ZW5jZXMucGwnLAorICAgICAgJ3QvMDM3X2V4 Y2VwdC5wbCcsCiAgICAgICAndC8xMDBfYnVncy5wbCcsCiAgICAgXSwKICAgfSwKZGlmZiAtLWdp dCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzN19leGNlcHQucGwgYi9zcmMvdGVzdC9zdWJz Y3JpcHRpb24vdC8wMzdfZXhjZXB0LnBsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwLi4yNzI5ZGY0ZDVjMAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlw dGlvbi90LzAzN19leGNlcHQucGwKQEAgLTAsMCArMSwyNTUgQEAKKworIyBDb3B5cmlnaHQgKGMp IDIwMjYsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisKKyMgTG9naWNhbCBy ZXBsaWNhdGlvbiB0ZXN0cyBmb3IgRVhDRVBUIFRBQkxFIHB1YmxpY2F0aW9ucwordXNlIHN0cmlj dDsKK3VzZSB3YXJuaW5nczsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwordXNlIFBv c3RncmVTUUw6OlRlc3Q6OlV0aWxzOwordXNlIFRlc3Q6Ok1vcmU7CisKKyMgSW5pdGlhbGl6ZSBw dWJsaXNoZXIgbm9kZQorbXkgJG5vZGVfcHVibGlzaGVyID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1 c3Rlci0+bmV3KCdwdWJsaXNoZXInKTsKKyRub2RlX3B1Ymxpc2hlci0+aW5pdChhbGxvd3Nfc3Ry ZWFtaW5nID0+ICdsb2dpY2FsJyk7Ciskbm9kZV9wdWJsaXNoZXItPnN0YXJ0OworCitteSAkcHVi bGlzaGVyX2Nvbm5zdHIgPSAkbm9kZV9wdWJsaXNoZXItPmNvbm5zdHIgLiAnIGRibmFtZT1wb3N0 Z3Jlcyc7CisKKyMgSW5pdGlhbGl6ZSBzdWJzY3JpYmVyIG5vZGUKK215ICRub2RlX3N1YnNjcmli ZXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3N1YnNjcmliZXInKTsKKyRub2Rl X3N1YnNjcmliZXItPmluaXQ7Ciskbm9kZV9zdWJzY3JpYmVyLT5zdGFydDsKKworbXkgJHJlc3Vs dDsKKworc3ViIHRlc3RfZXhjZXB0X3Jvb3RfcGFydGl0aW9uCit7CisJbXkgKCRwdWJ2aWFyb290 KSA9IEBfOworCisJIyBJZiB0aGUgcm9vdCBwYXJ0aXRpb25lZCB0YWJsZSBpcyBpbiB0aGUgRVhD RVBUIFRBQkxFIGNsYXVzZSwgYWxsIGl0cworCSMgcGFydGl0aW9ucyBhcmUgZXhjbHVkZWQgZnJv bSBwdWJsaWNhdGlvbiwgcmVnYXJkbGVzcyBvZiB0aGUKKwkjIHB1Ymxpc2hfdmlhX3BhcnRpdGlv bl9yb290IHNldHRpbmcuCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3Jl cycsIHFxKAorCQlDUkVBVEUgUFVCTElDQVRJT04gdGFwX3B1Yl9wYXJ0IEZPUiBBTEwgVEFCTEVT IEVYQ0VQVCBUQUJMRSAocm9vdDEpIFdJVEggKHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290ID0g JHB1YnZpYXJvb3QpOworCQlJTlNFUlQgSU5UTyByb290MSBWQUxVRVMgKDEpLCAoMTAxKTsKKwkp KTsKKwkkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIkNSRUFURSBT VUJTQ1JJUFRJT04gdGFwX3N1Yl9wYXJ0IENPTk5FQ1RJT04gJyRwdWJsaXNoZXJfY29ubnN0cicg UFVCTElDQVRJT04gdGFwX3B1Yl9wYXJ0IgorCSk7CisJJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9m b3Jfc3Vic2NyaXB0aW9uX3N5bmMoJG5vZGVfcHVibGlzaGVyLAorCQkndGFwX3N1Yl9wYXJ0Jyk7 CisKKwkjIEFkdmFuY2UgdGhlIHJlcGxpY2F0aW9uIHNsb3QgdG8gaWdub3JlIGNoYW5nZXMgZ2Vu ZXJhdGVkIGJlZm9yZSB0aGlzIHBvaW50LgorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCisJCSJTRUxFQ1Qgc2xvdF9uYW1lIEZST00gcGdfcmVwbGljYXRpb25fc2xvdF9h ZHZhbmNlKCd0ZXN0X3Nsb3QnLCBwZ19jdXJyZW50X3dhbF9sc24oKSkiCisJKTsKKwkkbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiSU5TRVJUIElOVE8gcm9vdDEgVkFM VUVTICgyKSwgKDEwMikiKTsKKworCSMgVmVyaWZ5IHRoYXQgZGF0YSBpbnNlcnRlZCBpbnRvIHRo ZSBwYXJ0aXRpb25lZCB0YWJsZSBpcyBub3QgcHVibGlzaGVkIHdoZW4KKwkjIGl0IGlzIGluIHRo ZSBFWENFUFQgVEFCTEUgY2xhdXNlLgorCSRyZXN1bHQgPSAkbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopID0gMCBGUk9NIHBnX2xvZ2ljYWxf c2xvdF9nZXRfYmluYXJ5X2NoYW5nZXMoJ3Rlc3Rfc2xvdCcsIE5VTEwsIE5VTEwsICdwcm90b192 ZXJzaW9uJywgJzEnLCAncHVibGljYXRpb25fbmFtZXMnLCAndGFwX3B1Yl9wYXJ0JykiCisJKTsK Kwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJ3RhcF9zdWJfcGFydCcpOworCisJ IyBWZXJpZnkgdGhhdCBubyByb3dzIGFyZSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgZm9yIHJv b3Qgb3IgcGFydGl0aW9ucy4KKwlmb3JlYWNoIG15ICR0YWJsZSAocXcocm9vdDEgcGFydDEgcGFy dDIgcGFydDJfMSkpCisJeworCQkkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCisJCQkiU0VMRUNUIGNvdW50KCopIEZST00gJHRhYmxlIik7CisJCWlzKCRy ZXN1bHQsIHFxKDApLCAibm8gcm93cyByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgZm9yICR0YWJs ZSIpOworCX0KKworCSRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiRFJP UCBTVUJTQ1JJUFRJT04gdGFwX3N1Yl9wYXJ0Iik7CisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywgIkRST1AgUFVCTElDQVRJT04gdGFwX3B1Yl9wYXJ0Iik7Cit9CisKKyMg PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgRVhDRVBUIFRB QkxFIHRlc3QgY2FzZXMgZm9yIG5vbi1wYXJ0aXRpb25lZCB0YWJsZXMgYW5kIGluaGVyaXRlZCB0 YWJsZXMuCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisK KyMgQ3JlYXRlIHNjaGVtYXMgYW5kIHRhYmxlcyBvbiBwdWJsaXNoZXIKKyRub2RlX3B1Ymxpc2hl ci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxKAorCUNSRUFURSBUQUJMRSB0YWIxIEFTIFNF TEVDVCBnZW5lcmF0ZV9zZXJpZXMoMSwxMCkgQVMgYTsKKwlDUkVBVEUgVEFCTEUgcGFyZW50IChh IGludCk7CisJQ1JFQVRFIFRBQkxFIGNoaWxkIChiIGludCkgSU5IRVJJVFMgKHBhcmVudCk7CisJ Q1JFQVRFIFRBQkxFIHBhcmVudDEgKGEgaW50KTsKKwlDUkVBVEUgVEFCTEUgY2hpbGQxIChiIGlu dCkgSU5IRVJJVFMgKHBhcmVudDEpOworKSk7CisKKyMgQ3JlYXRlIHNjaGVtYXMgYW5kIHRhYmxl cyBvbiBzdWJzY3JpYmVyCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVz JywgcXEoCisJQ1JFQVRFIFRBQkxFIHRhYjEgKGEgaW50KTsKKwlDUkVBVEUgVEFCTEUgcGFyZW50 IChhIGludCk7CisJQ1JFQVRFIFRBQkxFIGNoaWxkIChiIGludCkgSU5IRVJJVFMgKHBhcmVudCk7 CisJQ1JFQVRFIFRBQkxFIHBhcmVudDEgKGEgaW50KTsKKwlDUkVBVEUgVEFCTEUgY2hpbGQxIChi IGludCkgSU5IRVJJVFMgKHBhcmVudDEpOworKSk7CisKKyMgRXhjbHVkZSB0YWIxIChub24taW5o ZXJpdGFuY2UgY2FzZSksIGFuZCBhbHNvIGV4Y2x1ZGUgcGFyZW50IGFuZCBPTkxZIHBhcmVudDEK KyMgdG8gdmVyaWZ5IGV4Y2x1c2lvbiBiZWhhdmlvciBmb3IgaW5oZXJpdGVkIHRhYmxlcywgaW5j bHVkaW5nIHRoZSBlZmZlY3Qgb2YKKyMgT05MWSBpbiB0aGUgRVhDRVBUIFRBQkxFIGNsYXVzZS4K KyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBQVUJMSUNB VElPTiB0YWJfcHViIEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCBUQUJMRSAodGFiMSwgcGFyZW50LCBv bmx5IHBhcmVudDEpIgorKTsKKworIyBDcmVhdGUgYSBsb2dpY2FsIHJlcGxpY2F0aW9uIHNsb3Qg dG8gaGVscCB3aXRoIGxhdGVyIHRlc3RzLgorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKKwkiU0VMRUNUIHBnX2NyZWF0ZV9sb2dpY2FsX3JlcGxpY2F0aW9uX3Nsb3QoJ3Rl c3Rfc2xvdCcsICdwZ291dHB1dCcpIik7CisKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAorCSJDUkVBVEUgU1VCU0NSSVBUSU9OIHRhYl9zdWIgQ09OTkVDVElPTiAnJHB1 Ymxpc2hlcl9jb25uc3RyJyBQVUJMSUNBVElPTiB0YWJfcHViIgorKTsKKworIyBXYWl0IGZvciBp bml0aWFsIHRhYmxlIHN5bmMgdG8gZmluaXNoCiskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9z dWJzY3JpcHRpb25fc3luYygkbm9kZV9wdWJsaXNoZXIsICd0YWJfc3ViJyk7CisKKyMgQ2hlY2sg dGhlIHRhYmxlIGRhdGEgZG9lcyBub3Qgc3luYyBmb3IgdGhlIHRhYmxlcyBzcGVjaWZpZWQgaW4g RVhDRVBUIFRBQkxFCisjIGNsYXVzZS4KKyRyZXN1bHQgPQorICAkbm9kZV9zdWJzY3JpYmVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRhYjEiKTsKK2lzKCRy ZXN1bHQsIHFxKDApLAorCSdjaGVjayB0aGVyZSBpcyBubyBpbml0aWFsIGRhdGEgY29waWVkIGZv ciB0aGUgdGFibGVzIHNwZWNpZmllZCBpbiB0aGUgRVhDRVBUIFRBQkxFIGNsYXVzZScKKyk7CisK KyMgSW5zZXJ0IHNvbWUgZGF0YSBpbnRvIHRoZSB0YWJsZSBsaXN0ZWQgaW4gdGhlIEVYQ0VQVCBU QUJMRSBjbGF1c2UKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFx KAorCUlOU0VSVCBJTlRPIHRhYjEgVkFMVUVTKGdlbmVyYXRlX3NlcmllcygxMSwyMCkpOworCUlO U0VSVCBJTlRPIGNoaWxkIFZBTFVFUyhnZW5lcmF0ZV9zZXJpZXMoMTEsMjApLCBnZW5lcmF0ZV9z ZXJpZXMoMTEsMjApKTsKKykpOworCisjIFZlcmlmeSB0aGF0IGRhdGEgaW5zZXJ0ZWQgaW50byBh IHRhYmxlIGxpc3RlZCBpbiB0aGUgRVhDRVBUIFRBQkxFIGNsYXVzZSBpcworIyBub3QgcHVibGlz aGVkLgorJHJlc3VsdCA9ICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJ IlNFTEVDVCBjb3VudCgqKSA9IDAgRlJPTSBwZ19sb2dpY2FsX3Nsb3RfZ2V0X2JpbmFyeV9jaGFu Z2VzKCd0ZXN0X3Nsb3QnLCBOVUxMLCBOVUxMLCAncHJvdG9fdmVyc2lvbicsICcxJywgJ3B1Ymxp Y2F0aW9uX25hbWVzJywgJ3RhYl9wdWInKSIKKyk7CitpcygkcmVzdWx0LCBxcSh0KSwKKwkndmVy aWZ5IG5vIGNoYW5nZXMgZm9yIHRhYmxlIGxpc3RlZCBpbiB0aGUgRVhDRVBUIFRBQkxFIGNsYXVz ZSBhcmUgcHJlc2VudCBpbiB0aGUgcmVwbGljYXRpb24gc2xvdCcKKyk7CisKKyMgVGhpcyBzaG91 bGQgYmUgcHVibGlzaGVkIGJlY2F1c2UgT05MWSBwYXJlbnQxIHdhcyBzcGVjaWZpZWQgaW4gdGhl CisjIEVYQ0VQVCBUQUJMRSBjbGF1c2UsIHNvIHRoZSBleGNsdXNpb24gYXBwbGllcyBvbmx5IHRv IHRoZSBwYXJlbnQgdGFibGUgYW5kIG5vdAorIyB0byBpdHMgY2hpbGQuCiskbm9kZV9wdWJsaXNo ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJJTlNFUlQgSU5UTyBjaGlsZDEgVkFMVUVTKGdl bmVyYXRlX3NlcmllcygxMSwyMCksIGdlbmVyYXRlX3NlcmllcygxMSwyMCkpIgorKTsKKworIyBW ZXJpZnkgdGhhdCBkYXRhIGluc2VydGVkIGludG8gYSB0YWJsZSBsaXN0ZWQgaW4gdGhlIEVYQ0VQ VCBUQUJMRSBjbGF1c2UgaXMKKyMgbm90IHJlcGxpY2F0ZWQuCiskbm9kZV9wdWJsaXNoZXItPndh aXRfZm9yX2NhdGNodXAoJ3RhYl9zdWInKTsKKyRyZXN1bHQgPQorICAkbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRhYjEiKTsKK2lz KCRyZXN1bHQsIHFxKDApLCAnY2hlY2sgcmVwbGljYXRlZCBpbnNlcnRzIG9uIHN1YnNjcmliZXIn KTsKKyRyZXN1bHQgPQorICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywg IlNFTEVDVCBjb3VudCgqKSBGUk9NIGNoaWxkIik7CitpcygkcmVzdWx0LCBxcSgwKSwgJ2NoZWNr IHJlcGxpY2F0ZWQgaW5zZXJ0cyBvbiBzdWJzY3JpYmVyJyk7CiskcmVzdWx0ID0KKyAgJG5vZGVf c3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSBj aGlsZDEiKTsKK2lzKCRyZXN1bHQsIHFxKDEwKSwgJ2NoZWNrIHJlcGxpY2F0ZWQgaW5zZXJ0cyBv biBzdWJzY3JpYmVyJyk7CisKKyMgY2xlYW51cAorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3Fs KAorCSdwb3N0Z3JlcycsIHFxKAorCURST1AgU1VCU0NSSVBUSU9OIHRhYl9zdWI7CisJVFJVTkNB VEUgVEFCTEUgdGFiMTsKKwlEUk9QIFRBQkxFIHBhcmVudCwgcGFyZW50MSwgY2hpbGQsIGNoaWxk MTsKKykpOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXEoCisJ RFJPUCBQVUJMSUNBVElPTiB0YWJfcHViOworCVRSVU5DQVRFIFRBQkxFIHRhYjE7CisgICAgRFJP UCBUQUJMRSBwYXJlbnQsIHBhcmVudDEsIGNoaWxkLCBjaGlsZDE7CispKTsKKworIyA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyBFWENFUFQgVEFCTEUgdGVz dCBjYXNlcyBmb3IgcGFydGl0aW9uZWQgdGFibGVzCisjID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09CisjIFNldHVwIHBhcnRpdGlvbmVkIHRhYmxlIGFuZCBwYXJ0 aXRpb25zIG9uIHRoZSBwdWJsaXNoZXIgdGhhdCBtYXAgdG8gbm9ybWFsCisjIHRhYmxlcyBvbiB0 aGUgc3Vic2NyaWJlci4KKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3Jlcycs IHFxKAorCUNSRUFURSBUQUJMRSByb290MShhIGludCkgUEFSVElUSU9OIEJZIFJBTkdFKGEpOwor CUNSRUFURSBUQUJMRSBwYXJ0MSBQQVJUSVRJT04gT0Ygcm9vdDEgRk9SIFZBTFVFUyBGUk9NICgw KSBUTyAoMTAwKTsKKwlDUkVBVEUgVEFCTEUgcGFydDIgUEFSVElUSU9OIE9GIHJvb3QxIEZPUiBW QUxVRVMgRlJPTSAoMTAwKSBUTyAoMjAwKSBQQVJUSVRJT04gQlkgUkFOR0UoYSk7CisJQ1JFQVRF IFRBQkxFIHBhcnQyXzEgUEFSVElUSU9OIE9GIHBhcnQyIEZPUiBWQUxVRVMgRlJPTSAoMTAwKSBU TyAoMTUwKTsKKykpOworCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVz JywgcXEoCisJQ1JFQVRFIFRBQkxFIHJvb3QxKGEgaW50KTsKKwlDUkVBVEUgVEFCTEUgcGFydDEo YSBpbnQpOworCUNSRUFURSBUQUJMRSBwYXJ0MihhIGludCk7CisJQ1JFQVRFIFRBQkxFIHBhcnQy XzEoYSBpbnQpOworKSk7CisKKyMgVmFsaWRhdGUgdGhlIGJlaGF2aW91ciB3aXRoIGJvdGggcHVi bGlzaF92aWFfcGFydGl0aW9uX3Jvb3QgYXMgdHJ1ZSBhbmQgZmFsc2UKK3Rlc3RfZXhjZXB0X3Jv b3RfcGFydGl0aW9uKCdmYWxzZScpOwordGVzdF9leGNlcHRfcm9vdF9wYXJ0aXRpb24oJ3RydWUn KTsKKworIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyBU ZXN0IHdoZW4gYSBzdWJzY3JpcHRpb24gaXMgc3Vic2NyaWJpbmcgdG8gbXVsdGlwbGUgcHVibGlj YXRpb25zCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisK KyMgT0sgd2hlbiBhIHRhYmxlIGlzIGV4Y2x1ZGVkIGJ5IHB1YjEgRVhDRVBUIFRBQkxFLCBidXQg aXQgaXMgaW5jbHVkZWQgYnkgcHViMgorIyBGT1IgVEFCTEUuCiskbm9kZV9wdWJsaXNoZXItPnNh ZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcSgKKwlDUkVBVEUgUFVCTElDQVRJT04gdGFwX3B1YjEg Rk9SIEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxFICh0YWIxKTsKKwlDUkVBVEUgUFVCTElDQVRJT04g dGFwX3B1YjIgRk9SIFRBQkxFIHRhYjE7CisJSU5TRVJUIElOVE8gdGFiMSBWQUxVRVMoMSk7Cisp KTsKKyRub2RlX3N1YnNjcmliZXItPnBzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFNVQlNDUklQ VElPTiB0YXBfc3ViIENPTk5FQ1RJT04gJyRwdWJsaXNoZXJfY29ubnN0cicgUFVCTElDQVRJT04g dGFwX3B1YjEsIHRhcF9wdWIyIgorKTsKKyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX3N1YnNj cmlwdGlvbl9zeW5jKCRub2RlX3B1Ymxpc2hlciwgJ3RhcF9zdWInKTsKKworJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXEoSU5TRVJUIElOVE8gdGFiMSBWQUxVRVMoMikp KTsKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgndGFwX3N1YicpOworCiskcmVz dWx0ID0KKyAgJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCAq IEZST00gdGFiMSBPUkRFUiBCWSBhIik7CitpcyggJHJlc3VsdCwgcXEoMQorMiksCisJImNoZWNr IHJlcGxpY2F0aW9uIG9mIGEgdGFibGUgaW4gdGhlIEVYQ0VQVCBUQUJMRSBjbGF1c2Ugb2Ygb25l IHB1YmxpY2F0aW9uIGJ1dCBpbmNsdWRlZCBieSBhbm90aGVyIgorKTsKKyRub2RlX3B1Ymxpc2hl ci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxKAorCURST1AgUFVCTElDQVRJT04gdGFwX3B1 YjI7CisJVFJVTkNBVEUgdGFiMTsKKykpOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsIHFxKFRSVU5DQVRFIHRhYjEpKTsKKworIyBPSyB3aGVuIGEgdGFibGUgaXMgZXhj bHVkZWQgYnkgcHViMSBFWENFUFQgVEFCTEUsIGJ1dCBpdCBpcyBpbmNsdWRlZCBieSBwdWIyCisj IEZPUiBBTEwgVEFCTEVTLgorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVz JywgcXEoCisJQ1JFQVRFIFBVQkxJQ0FUSU9OIHRhcF9wdWIyIEZPUiBBTEwgVEFCTEVTOworCUlO U0VSVCBJTlRPIHRhYjEgVkFMVUVTKDEpOworKSk7Ciskbm9kZV9zdWJzY3JpYmVyLT5wc3FsKCdw b3N0Z3JlcycsCisJIkNSRUFURSBTVUJTQ1JJUFRJT04gdGFwX3N1YiBDT05ORUNUSU9OICckcHVi bGlzaGVyX2Nvbm5zdHInIFBVQkxJQ0FUSU9OIHRhcF9wdWIxLCB0YXBfcHViMiIKKyk7Ciskbm9k ZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9zdWJzY3JpcHRpb25fc3luYygkbm9kZV9wdWJsaXNoZXIs ICd0YXBfc3ViJyk7CisKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFx KElOU0VSVCBJTlRPIHRhYjEgVkFMVUVTKDIpKSk7Ciskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9y X2NhdGNodXAoJ3RhcF9zdWInKTsKKworJHJlc3VsdCA9CisgICRub2RlX3B1Ymxpc2hlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgKiBGUk9NIHRhYjEgT1JERVIgQlkgYSIpOworaXMo ICRyZXN1bHQsIHFxKDEKKzIpLAorCSJjaGVjayByZXBsaWNhdGlvbiBvZiBhIHRhYmxlIGluIHRo ZSBFWENFUFQgVEFCTEUgY2xhdXNlIG9mIG9uZSBwdWJsaWNhdGlvbiBidXQgaW5jbHVkZWQgYnkg YW5vdGhlciIKKyk7CisKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAn RFJPUCBTVUJTQ1JJUFRJT04gdGFwX3N1YicpOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywgJ0RST1AgUFVCTElDQVRJT04gdGFwX3B1YjEnKTsKKyRub2RlX3B1Ymxpc2hl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdEUk9QIFBVQkxJQ0FUSU9OIHRhcF9wdWIyJyk7CisK KyRub2RlX3B1Ymxpc2hlci0+c3RvcCgnZmFzdCcpOworCitkb25lX3Rlc3RpbmcoKTsKLS0gCjIu NDMuMAoK --0000000000004f629e064c2e8dbe--