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 1vkkTF-001eGX-1h for pgsql-hackers@arkaria.postgresql.org; Tue, 27 Jan 2026 14:55:10 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vkkTE-00ECQ2-10 for pgsql-hackers@arkaria.postgresql.org; Tue, 27 Jan 2026 14:55:08 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vkkTD-00ECPu-2b for pgsql-hackers@lists.postgresql.org; Tue, 27 Jan 2026 14:55:08 +0000 Received: from mail-yw1-x112f.google.com ([2607:f8b0:4864:20::112f]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1vkkTB-00000000ihf-00yh for pgsql-hackers@lists.postgresql.org; Tue, 27 Jan 2026 14:55:07 +0000 Received: by mail-yw1-x112f.google.com with SMTP id 00721157ae682-78f89501423so61075597b3.1 for ; Tue, 27 Jan 2026 06:55:04 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1769525702; cv=none; d=google.com; s=arc-20240605; b=dSDVauEUA6ZUwbfP+KDbKDsk8lfy5o/T25kQ6mmncGFl1DzhkUniu9R1+gWAi+kaRE AuJJPPBI7Afv5crcHoY+7tSXF/rbUs51MVzlzzqetE9pgmfKVfIgI2MrJWfjgmh2GpEw UGN2TKMI6kMzs8MyF3YEbRAZXDuGfrvrRCOzJOR6tY+JBertu/OgCguhcE5dFsjwJiqG 6xMUi4wee/3i8WDK8ZJSsQehiRkFMPauAuO8M2B/CLbd+Sxbl75isQV3GEF4ohCUhN1x XP5Lre4LG6jvhWf3KagwUZ/3pS7oXMD9qXimdQcHLEva5FL3PF1l0Jy3SlXLff3PHogH bwZw== 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=LUUnH9BjNc0dpKxya+SDsPnyJQGWg/Uk9nm+N8t28F4=; fh=MnZLwGcYYY+uuB4WfnkOyLjHJeIiez+UvFzdE57mjLM=; b=g6FY5di3J++9dkEDNj/nK8D66PTyCbMcfxSKrRwz1+7rNWkIE8KLsNUIvNaIO9C+LQ cR6EpzXBejwsHzXGCkUAdeaR/RZkPi1bWnODHV6/NqXDnlKtEeZCFvxsWZ9POqsTy56v jm7cn56fcZBGEbo9lmh0qPGY+xbXWwFCSflCqxkN5AW8nUmEu3fLaHzjq1kaOBoISjid FffFIBjnvSMhlrQ8YqSt1OzAYqq/ISTv2lQKJS/6HqIV4TtuEhyR9NI9xyqvoFtuoTnc iR3/iQ3NELzSgi/StHZMTT8GnZwt+Ks/cGPmmvFy5x7s76DJGnbpJk3S4AsBjNf7sTmS sKLg==; 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=1769525702; x=1770130502; 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=LUUnH9BjNc0dpKxya+SDsPnyJQGWg/Uk9nm+N8t28F4=; b=UgqXc9d0iq9s4MgjVr1E+oSBqg/D4hN4FzfYdglK3p0UgJPMNfd61t/zkoKPhKa9vq eX7+d+nmzgWJL9QLlAuFRONwPhE6kMH3yoeuT5nNTxdtX8FwLkJpTRjNiNjxacGy097g Vqnz4Da7o4oaEhxArkNMF0PjVKYAtLjWTWpF9T+TuQOfMxZUvI2HR5wOAB6SGVFLJZu5 36kwyGSoJaL8W0LX7vto/VyY/b9G6IGt+VXwBvayphT922CZRIouQ751cjIwIC4wBZuu PPmiHvMucD9VTT+zqeq8DpPY6TKR8gAF8CibMg8BGF4opm7yNsKOgTNIYWpzE+pBLcoc 5DqQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1769525702; x=1770130502; 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=LUUnH9BjNc0dpKxya+SDsPnyJQGWg/Uk9nm+N8t28F4=; b=T0eopaxYQ6XGNtjisGXhYrfCFMip260RX/fl2NEDlSNPPLX6FApGGpyA9sXP68WUTE ncwjov8wvhmtQetdK5MfiXTtjoaNqxBIBjBn9FY/D3DHZfvl894O664SXHwUhTUBCMbT yR28VnZOiApXvNNtPQuQaQ4UTRs5HpkRslKUF99VnURJQvOVXoSaz+RZVgcxrSFZA2EC 52IHmTmLDLqbcG7WJgSkMFbXNNG3ruZlm74wGbZhrnKb6Wi7VsxS45njOoYAWgO4POGS RZiMi3z7BX/uRxhcYG2PP27sy8vyvno29ih0tRJNDs/imf4XSpHzgfSeBPMsH5CRhrBn toIw== X-Forwarded-Encrypted: i=1; AJvYcCUVCXZEjgHxx1OqRPKces1gWa/hfvSB1nNeWF8izzPsSPdtYvziPlZe100ZYSIlPuTlN8ythBsN9nIhlsCL@lists.postgresql.org X-Gm-Message-State: AOJu0Yy9RlEQj+UkiKePfy5zlwO8Wn76lFRF/BYAD4MamqMECCd3GjCM LU86arKujX+T/ePRwgmVF532C2D7RU0u6PgrK/IiYQElw6dSaRS7WpiLTM8r9rviMVoM3ACHIyS T3CYXBQxHiVfp5wgrNb7d/NrynJkEiqs= X-Gm-Gg: AZuq6aLsdZSAOb5z42wAkRVeHuur7p1T3Tka+OJRthCEtpm9RUfxiyR2qvMVANupqX/ WC0ssFmnE0p2IB0Q/ZBZM7jG6uI+vahMOUIZhrpgSAz+mpjbIeyR3lG/w+JdL8NB0lIXmcCU5+J To2sxgxEH8pfMrgBAXYICufpZ4ipS7oKiKwmw2RJsvnxMaCgy0WlH8Of+g/D+qrMopOQ14GSRTz x2kDmZcQm5PXKdMN6yS9/5fsduUnF22EWONuCK5FuLh4c4EuyzMYDs6/Pu1MPUl17krrHncg91d f5VyYee5ASS4vrofTCpReVI5Cqos5w== X-Received: by 2002:a05:690e:151:b0:645:52ab:8101 with SMTP id 956f58d0204a3-6498fb1de1emr963246d50.33.1769525702373; Tue, 27 Jan 2026 06:55:02 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: vignesh C Date: Tue, 27 Jan 2026 20:07:01 +0530 X-Gm-Features: AZwV_QheopQnTIBnGxJg44uuWwAPc8r1w3VzC0gQ9sKHFbU44nGA1Qp9CYkJ-WU Message-ID: Subject: Re: Skipping schema changes in publication To: Dilip Kumar Cc: shveta malik , Amit Kapila , Shlok Kyal , Peter Smith , "Zhijie Hou (Fujitsu)" , YeXiu <1518981153@qq.com>, Ian Lawrence Barwick , Bharath Rupireddy , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="000000000000e96ef406495fcecb" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000e96ef406495fcecb Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Fri, 23 Jan 2026 at 18:41, vignesh C wrote: > > On Wed, 21 Jan 2026 at 11:35, Dilip Kumar wrote: > > > > On Mon, Jan 19, 2026 at 3:08=E2=80=AFPM shveta malik wrote: > > > > > > Approaches for Supporting EXCEPT in Partitioned Tables > > > ---------------------------------------------------------------------= --- > > > > > > In an offline discussion with Peter Smith, Amit, and Shlok, we > > > identified several approaches for supporting EXCEPT with partitioned > > > tables and their partitions. I=E2=80=99d like to hear others=E2=80=99= opinions on > > > these approaches. > > > > > > Consider the following partition hierarchy: > > > tab_root > > > =E2=94=9C=E2=94=80 tab_part_1 > > > =E2=94=82 =E2=94=9C=E2=94=80 tab_part_1_p1 > > > =E2=94=82 =E2=94=94=E2=94=80 tab_part_1_p2 > > > =E2=94=94=E2=94=80 tab_part_2 > > > =E2=94=9C=E2=94=80 tab_part_2_p1 > > > =E2=94=94=E2=94=80 tab_part_2_p2 > > > > > > > > > Approach 1: > > > --------------------------------- > > > If we exclude a table, then the data in that table and all of its > > > partitions (i.e., the entire subtree under that table) should not be > > > replicated. > > > > > > For example EXCEPT (tab_part_1) skips replication of tab_part_1 and > > > all of its partitions. > > > > > > This behaviour remains the same with or without > > > publish_via_partition_root. The publish_via_partition_root flag only > > > affects publish_via_relid, i.e., the relation through which data is > > > published. > > > > > > This approach involves certain implementation challenges. For brevity= , > > > these are documented in the attached 'Approach1_challenges' document. > > > > > > Approach 2: > > > --------------------------------------------------- > > > Assign meaning to ONLY and '*' for partition tables in the EXCEPT > > > list. In HEAD, ONLY and '*' do not have any meaning for partitioned > > > tables or partitions, and these keywords are currently ignored. > > > > > > Examples: > > > 1. EXCEPT (ONLY tab_part_1) skips replication of only the table > > > tab_part_1. Changes for tab_root, tab_part_1_p1, and tab_part_1_p2 ar= e > > > still replicated. > > > > > > ii. EXCEPT (tab_part_1*) skips replication of tables tab_part_1, > > > tab_part_1_p1, and tab_part_1_p2 > > > > > > The challenges described in Approach 1, particularly around tablesync > > > handling and COPY behaviour, would still need to be addressed under > > > this approach as well. ONLY or '*' with partitioned tables is not > > > supported in HEAD, supporting it specifically for ALL TABLES EXCEPT > > > may introduce additional confusion for users. > > > > > > Approach 3: > > > ---------------- > > > Do not allow partitions to be specified in the EXCEPT clause. > > > > > > Only EXCEPT (tab_root) is supported, which excludes tab_root and all > > > of its partitions. Specifying EXCEPT (tab_part_1) or EXCEPT > > > (tab_part_1_p1) will result in an error. > > > > > > ~~ > > > > > > While Approach 1 and Approach 2 offer more flexibility to the user > > > compared to Approach 3, they also introduce additional design > > > complexity which does not seem simpler to address. > > > > Thanks for explaining this, overall I like the Approach 1, and I also > > see the problem when publish via root is given in that case COPY FROM > > is executed on the root and it would be hard to exclude specific > > partitions. > > Regarding the above issue which is also mentioned in > Approach1_challenges at [1]: > When a publication is created with publish_via_partition_root =3D true > and a specific partition(tab_part_1_1) is excluded, the expected > behavior is that changes from non-excluded partitions (for example, > tab_part_2 and tab_part_1_2 and their descendants) are replicated, > while changes from the excluded partition (tab_part_1_1 and its > subtree) are not. > tab_root > =E2=94=9C=E2=94=80=E2=94=80 tab_part_1 > =E2=94=82 =E2=94=9C=E2=94=80=E2=94=80 tab_part_1_1=E2=80=83=E2=80=83=E2= =80=83=E2=80=83=E2=80=83=E2=80=83=E2=80=83=E2=80=83(except) > =E2=94=82 =E2=94=82 =E2=94=9C=E2=94=80=E2=94=80 tab_part_1_1_1 > =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=94=E2=94=80=E2=94=80 tab_part_= 1_1_1_1 > =E2=94=82 =E2=94=82 =E2=94=94=E2=94=80=E2=94=80 tab_part_1_1_2 > =E2=94=82 =E2=94=94=E2=94=80=E2=94=80 tab_part_1_2 > =E2=94=82 =E2=94=9C=E2=94=80=E2=94=80 tab_part_1_2_1 > =E2=94=82 =E2=94=94=E2=94=80=E2=94=80 tab_part_1_2_2 > =E2=94=94=E2=94=80=E2=94=80 tab_part_2 > > In this situation, replication cannot be performed purely via the > partition root (tab_root), because doing so would implicitly include > data from the excluded child partitions. > > To address this, the publication creation should explicitly record the > excluded partition(tab_part_1_1) in pg_publication_rel with an > excluded =3D true flag. The publish_via_partition_root setting remains > stored at the publication level, as it is today. With > publish_via_partition_root =3D true, the publisher=E2=80=93subscriber map= ping is > not partition-to-partition. Instead, all eligible data is mapped to > the subscriber=E2=80=99s partition root. Therefore, > pg_get_publication_tables() should return only the top-level root > table (tab_root) to the subscriber for table synchronization. During > initial table sync, when the tablesync worker prepares the COPY > command, it can query the publisher to determine the effective set of > tables that belong to the publication after applying the exclusion > rules. Based on this resolved table list, the tablesync worker can > construct a COPY query that unions data only from the non-excluded > partitions, for example: > COPY ( > SELECT * FROM tab_part_1_2_1 > UNION ALL > SELECT * FROM tab_part_1_2_2 > UNION ALL > SELECT * FROM tab_part_2 > ) > > This ensures that only non-excluded data is copied and applied to > tab_root on the subscriber, while preserving the semantics of > publish_via_partition_root =3D true. Here is a patch which has the changes to handle the same. Regards, Vignesh --000000000000e96ef406495fcecb Content-Type: text/x-patch; charset="US-ASCII"; name="v37-0001-Skip-publishing-the-tables-specified-in-EXCEPT-T.patch" Content-Disposition: attachment; filename="v37-0001-Skip-publishing-the-tables-specified-in-EXCEPT-T.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mkwoz0qi0 RnJvbSBhOTg5MGFlMDc0Njg5YWY2MzY4ZDYxMjFmN2MxYjc0OTdlNDA2ZjE5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBWaWduZXNoIEMgPHZpZ25lc2gyMUBnbWFpbC5jb20+CkRhdGU6 IFR1ZSwgMjcgSmFuIDIwMjYgMTk6MzM6MjIgKzA1MzAKU3ViamVjdDogW1BBVENIIHYzN10gU2tp cCBwdWJsaXNoaW5nIHRoZSB0YWJsZXMgc3BlY2lmaWVkIGluIEVYQ0VQVCBUQUJMRS4KCkEgbmV3 ICJFWENFUFQgVEFCTEUiIGNsYXVzZSBmb3IgQ1JFQVRFIFBVQkxJQ0FUSU9OIGFsbG93cyBvbmUg b3IgbW9yZQp0YWJsZXMgdG8gYmUgZXhjbHVkZWQuIFRoZSBwdWJsaXNoZXIgd2lsbCBub3Qgc2Vu ZCB0aGUgZGF0YSBvZiBleGNsdWRlZAp0YWJsZXMgdG8gdGhlIHN1YnNjcmliZXIuCgpUaGUgbmV3 IHN5bnRheCBhbGxvd3Mgc3BlY2lmeWluZyBleGNsdWRlZCByZWxhdGlvbnMgd2hlbiBjcmVhdGlu ZyBhCnB1YmxpY2F0aW9uLiBGb3IgZXhhbXBsZToKQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YjEgRk9S IEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxFICh0MSx0Mik7CgpBIG5ldyBjb2x1bW4gInByZXhjZXB0 IiBpcyBhZGRlZCB0byB0YWJsZSAicGdfcHVibGljYXRpb25fcmVsIiwgdG8gZmxhZwp0aGUgcmVs YXRpb25zIHRoYXQgdGhlIHVzZXIgd2FudHMgdG8gZXhjbHVkZSBmcm9tIHRoZSBwdWJsaWNhdGlv bnMuCgpwZ19kdW1wIGlzIHVwZGF0ZWQgdG8gaWRlbnRpZnkgYW5kIGR1bXAgdGhlIGV4Y2x1ZGVk IHRhYmxlcyBvZiB0aGUgcHVibGljYXRpb25zLgoKVGhlIHBzcWwgXGQgZmFtaWx5IG9mIGNvbW1h bmRzIGNhbiBub3cgZGlzcGxheSBleGNsdWRlZCB0YWJsZXMuCgpCdW1wIGNhdGFsb2cgdmVyc2lv bi4KLS0tCiBkb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbCAgICAgICAgICAgICAgICAgICAgfCAg MTAgKwogZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbCAgICAgICAgIHwgICA2 ICstCiBkb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9wdWJsaWNhdGlvbi5zZ21sICAgICAgfCAgNTEg KysrLQogZG9jL3NyYy9zZ21sL3JlZi9wc3FsLXJlZi5zZ21sICAgICAgICAgICAgICAgIHwgICA1 ICstCiBzcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMgICAgICAgICAgfCAxMjMg KysrKysrLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5jICAgICAgICB8 IDEwOSArKysrLS0tLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jICAg ICAgIHwgICAyICsKIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jICAgICAgICAgICAg ICB8ICAxMyArLQogc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSAgICAgICAgICAgICAgICAgICAg IHwgIDQyICsrLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYyAg IHwgMTg1ICsrKysrKysrKysrLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdv dXRwdXQuYyAgIHwgIDQ0ICsrLQogc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYyAg ICAgICAgICAgIHwgIDI0ICstCiBzcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jICAgICAgICAgICAg ICAgICAgICAgfCAgNzEgKysrKysKIHNyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmggICAgICAgICAg ICAgICAgICAgICB8ICAgMSArCiBzcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5wbCAgICAg ICAgICAgICAgfCAgMzAgKysKIHNyYy9iaW4vcHNxbC9kZXNjcmliZS5jICAgICAgICAgICAgICAg ICAgICAgICB8ICA4NyArKysrKy0KIHNyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYyAgICAg ICAgICAgICAgICB8ICAxMiArLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5o ICAgICAgICAgIHwgIDEzICstCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uX3Jl bC5oICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oICAgICAgICAg ICAgICAgIHwgICAzICsKIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5o ICAgICB8ICAgNiArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91dCAg ICAgfCAgOTMgKysrKystCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9wdWJsaWNhdGlvbi5zcWwgICAg ICAgICAgfCAgMzcgKystCiBzcmMvdGVzdC9zdWJzY3JpcHRpb24vbWVzb24uYnVpbGQgICAgICAg ICAgICAgfCAgIDEgKwogLi4uL3QvMDM3X3JlcF9jaGFuZ2VzX2V4Y2VwdF90YWJsZS5wbCAgICAg ICAgIHwgMjY0ICsrKysrKysrKysrKysrKysrKwogc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZz Lmxpc3QgICAgICAgICAgICAgIHwgICAxICsKIDI2IGZpbGVzIGNoYW5nZWQsIDEwOTIgaW5zZXJ0 aW9ucygrKSwgMTQyIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3N1 YnNjcmlwdGlvbi90LzAzN19yZXBfY2hhbmdlc19leGNlcHRfdGFibGUucGwKCmRpZmYgLS1naXQg YS9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbCBiL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21s CmluZGV4IDMzMjE5MzU2NWUyLi5kNDBlNWNjMTA5MCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21s L2NhdGFsb2dzLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKQEAgLTY1ODEs NiArNjU4MSwxNiBAQCBTQ1JBTS1TSEEtMjU2JDxyZXBsYWNlYWJsZT4mbHQ7aXRlcmF0aW9uIGNv dW50Jmd0OzwvcmVwbGFjZWFibGU+OjxyZXBsYWNlYWJsZT4mbAogICAgICAgaWYgdGhlcmUgaXMg bm8gcHVibGljYXRpb24gcXVhbGlmeWluZyBjb25kaXRpb24uPC9wYXJhPjwvZW50cnk+CiAgICAg IDwvcm93PgogCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9l bnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgPHN0cnVjdGZpZWxk PnByZXhjZXB0PC9zdHJ1Y3RmaWVsZD4gPHR5cGU+Ym9vbDwvdHlwZT4KKyAgICAgIDwvcGFyYT4K KyAgICAgIDxwYXJhPgorICAgICAgIFRydWUgaWYgdGhlIHJlbGF0aW9uIGlzIGV4Y2x1ZGVkIGZy b20gdGhlIHB1YmxpY2F0aW9uLiBTZWUKKyAgICAgICA8bGluayBsaW5rZW5kPSJzcWwtY3JlYXRl cHVibGljYXRpb24tcGFyYW1zLWZvci1leGNlcHQtdGFibGUiPjxsaXRlcmFsPkVYQ0VQVCBUQUJM RTwvbGl0ZXJhbD48L2xpbms+LgorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93Pgor CiAgICAgIDxyb3c+CiAgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBh cmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgogICAgICAgIDxzdHJ1Y3RmaWVsZD5wcmF0dHJz PC9zdHJ1Y3RmaWVsZD4gPHR5cGU+aW50MnZlY3RvcjwvdHlwZT4KZGlmZiAtLWdpdCBhL2RvYy9z cmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwgYi9kb2Mvc3JjL3NnbWwvbG9naWNhbC1y ZXBsaWNhdGlvbi5zZ21sCmluZGV4IDUwMjhmZTlhZjA5Li5mMDEyODFmZDRmOSAxMDA2NDQKLS0t IGEvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbAorKysgYi9kb2Mvc3JjL3Nn bWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sCkBAIC0xMTYsNyArMTE2LDExIEBACiAgICA8bGl0 ZXJhbD5GT1IgVEFCTEVTIElOIFNDSEVNQTwvbGl0ZXJhbD4sIDxsaXRlcmFsPkZPUiBBTEwgVEFC TEVTPC9saXRlcmFsPiwKICAgIG9yIDxsaXRlcmFsPkZPUiBBTEwgU0VRVUVOQ0VTPC9saXRlcmFs Pi4gVW5saWtlIHRhYmxlcywgc2VxdWVuY2VzIGNhbiBiZQogICAgc3luY2hyb25pemVkIGF0IGFu eSB0aW1lLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlCi0gICA8eHJlZiBsaW5rZW5kPSJsb2dp Y2FsLXJlcGxpY2F0aW9uLXNlcXVlbmNlcyIvPi4KKyAgIDx4cmVmIGxpbmtlbmQ9ImxvZ2ljYWwt cmVwbGljYXRpb24tc2VxdWVuY2VzIi8+LiBXaGVuIGEgcHVibGljYXRpb24gaXMKKyAgIGNyZWF0 ZWQgd2l0aCA8bGl0ZXJhbD5GT1IgQUxMIFRBQkxFUzwvbGl0ZXJhbD4sIHRhYmxlcyBjYW4gYmUg ZXhwbGljaXRseQorICAgZXhjbHVkZWQgZnJvbSBwdWJsaWNhdGlvbiB1c2luZyB0aGUKKyAgIDxs aW5rIGxpbmtlbmQ9InNxbC1jcmVhdGVwdWJsaWNhdGlvbi1wYXJhbXMtZm9yLWV4Y2VwdC10YWJs ZSI+PGxpdGVyYWw+RVhDRVBUIFRBQkxFPC9saXRlcmFsPjwvbGluaz4KKyAgIGNsYXVzZS4KICAg PC9wYXJhPgogCiAgIDxwYXJhPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVf cHVibGljYXRpb24uc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3B1YmxpY2F0aW9uLnNn bWwKaW5kZXggNmVmYmI5MTVjZWMuLjYxOTc0ZjQxZmQ5IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3Nn bWwvcmVmL2NyZWF0ZV9wdWJsaWNhdGlvbi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvY3Jl YXRlX3B1YmxpY2F0aW9uLnNnbWwKQEAgLTMyLDEyICszMiwxNiBAQCBDUkVBVEUgUFVCTElDQVRJ T04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPgogCiA8 cGhyYXNlPmFuZCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cHVibGljYXRpb25fYWxs X29iamVjdDwvcmVwbGFjZWFibGU+IGlzIG9uZSBvZjo8L3BocmFzZT4KIAotICAgIEFMTCBUQUJM RVMKKyAgICBBTEwgVEFCTEVTIFsgRVhDRVBUIFsgVEFCTEUgXSAoIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5leGNlcHRfdGFibGVfb2JqZWN0PC9yZXBsYWNlYWJsZT4gWywgLi4uIF0g KSBdCiAgICAgQUxMIFNFUVVFTkNFUwogCiA8cGhyYXNlPmFuZCA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+dGFibGVfYW5kX2NvbHVtbnM8L3JlcGxhY2VhYmxlPiBpczo8L3BocmFzZT4K IAogICAgIFsgT05MWSBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1l PC9yZXBsYWNlYWJsZT4gWyAqIF0gWyAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5j b2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLiBdICkgXSBbIFdIRVJFICggPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmV4cHJlc3Npb248L3JlcGxhY2VhYmxlPiApIF0KKworPHBo cmFzZT5hbmQgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmV4Y2VwdF90YWJsZV9vYmpl Y3Q8L3JlcGxhY2VhYmxlPiBpczo8L3BocmFzZT4KKworICAgIFsgT05MWSBdIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4gWyAqIF0KIDwvc3lu b3BzaXM+CiAgPC9yZWZzeW5vcHNpc2Rpdj4KIApAQCAtMTY0LDcgKzE2OCw4IEBAIENSRUFURSBQ VUJMSUNBVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFi bGU+CiAgICAgPGxpc3RpdGVtPgogICAgICA8cGFyYT4KICAgICAgIE1hcmtzIHRoZSBwdWJsaWNh dGlvbiBhcyBvbmUgdGhhdCByZXBsaWNhdGVzIGNoYW5nZXMgZm9yIGFsbCB0YWJsZXMgaW4KLSAg ICAgIHRoZSBkYXRhYmFzZSwgaW5jbHVkaW5nIHRhYmxlcyBjcmVhdGVkIGluIHRoZSBmdXR1cmUu CisgICAgICB0aGUgZGF0YWJhc2UsIGluY2x1ZGluZyB0YWJsZXMgY3JlYXRlZCBpbiB0aGUgZnV0 dXJlLiBUYWJsZXMgbGlzdGVkIGluCisgICAgICBFWENFUFQgVEFCTEUgYXJlIGV4Y2x1ZGVkIGZy b20gdGhlIHB1YmxpY2F0aW9uLgogICAgICA8L3BhcmE+CiAgICAgPC9saXN0aXRlbT4KICAgIDwv dmFybGlzdGVudHJ5PgpAQCAtMTg0LDYgKzE4OSwzMSBAQCBDUkVBVEUgUFVCTElDQVRJT04gPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPgogICAgIDwvbGlz dGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgPHZhcmxpc3RlbnRyeSBpZD0ic3FsLWNy ZWF0ZXB1YmxpY2F0aW9uLXBhcmFtcy1mb3ItZXhjZXB0LXRhYmxlIj4KKyAgICA8dGVybT48bGl0 ZXJhbD5FWENFUFQgVEFCTEU8L2xpdGVyYWw+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAg PHBhcmE+CisgICAgICBUaGlzIGNsYXVzZSBzcGVjaWZpZXMgYSBsaXN0IG9mIHRhYmxlcyB0byBi ZSBleGNsdWRlZCBmcm9tIHRoZQorICAgICAgcHVibGljYXRpb24uCisgICAgIDwvcGFyYT4KKyAg ICAgPHBhcmE+CisgICAgICBGb3IgaW5oZXJpdGVkIHRhYmxlcywgaWYgPGxpdGVyYWw+T05MWTwv bGl0ZXJhbD4gaXMgc3BlY2lmaWVkIGJlZm9yZSB0aGUKKyAgICAgIHRhYmxlIG5hbWUsIG9ubHkg dGhhdCB0YWJsZSBpcyBleGNsdWRlZCBmcm9tIHRoZSBwdWJsaWNhdGlvbi4gSWYKKyAgICAgIDxs aXRlcmFsPk9OTFk8L2xpdGVyYWw+IGlzIG5vdCBzcGVjaWZpZWQsIHRoZSB0YWJsZSBhbmQgYWxs IGl0cyBkZXNjZW5kYW50CisgICAgICB0YWJsZXMgKGlmIGFueSkgYXJlIGV4Y2x1ZGVkLiBPcHRp b25hbGx5LCA8bGl0ZXJhbD4qPC9saXRlcmFsPiBjYW4gYmUKKyAgICAgIHNwZWNpZmllZCBhZnRl ciB0aGUgdGFibGUgbmFtZSB0byBleHBsaWNpdGx5IGluZGljYXRlIHRoYXQgZGVzY2VuZGFudAor ICAgICAgdGFibGVzIGFyZSBleGNsdWRlZC4KKyAgICAgPC9wYXJhPgorICAgICA8cGFyYT4KKyAg ICAgIEZvciBwYXJ0aXRpb25lZCB0YWJsZXMsIG9ubHkgdGhlIHJvb3QgcGFydGl0aW9uZWQgdGFi bGUgbWF5IGJlIHNwZWNpZmllZAorICAgICAgaW4gPGxpdGVyYWw+RVhDRVBUIFRBQkxFPC9saXRl cmFsPi4gRG9pbmcgc28gZXhjbHVkZXMgdGhlIHJvb3QgdGFibGUgYW5kCisgICAgICBhbGwgb2Yg aXRzIHBhcnRpdGlvbnMgZnJvbSByZXBsaWNhdGlvbiwgcmVnYXJkbGVzcyBvZiB0aGUgdmFsdWUg b2YKKyAgICAgIDxsaXRlcmFsPnB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290PC9saXRlcmFsPi4g VGhlIG9wdGlvbmFsCisgICAgICA8bGl0ZXJhbD4qPC9saXRlcmFsPiBoYXMgbm8gZWZmZWN0IGZv ciBwYXJ0aXRpb25lZCB0YWJsZXMuCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAg PC92YXJsaXN0ZW50cnk+CisKICAgIDx2YXJsaXN0ZW50cnkgaWQ9InNxbC1jcmVhdGVwdWJsaWNh dGlvbi1wYXJhbXMtd2l0aCI+CiAgICAgPHRlcm0+PGxpdGVyYWw+V0lUSCAoIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5wdWJsaWNhdGlvbl9wYXJhbWV0ZXI8L3JlcGxhY2VhYmxlPiBb PSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dmFsdWU8L3JlcGxhY2VhYmxlPl0gWywg Li4uIF0gKTwvbGl0ZXJhbD48L3Rlcm0+CiAgICAgPGxpc3RpdGVtPgpAQCAtNDg5LDYgKzUxOSwy MyBAQCBDUkVBVEUgUFVCTElDQVRJT04gYWxsX3NlcXVlbmNlcyBGT1IgQUxMIFNFUVVFTkNFUzsK ICAgIGFsbCBzZXF1ZW5jZXMgZm9yIHN5bmNocm9uaXphdGlvbjoKIDxwcm9ncmFtbGlzdGluZz4K IENSRUFURSBQVUJMSUNBVElPTiBhbGxfdGFibGVzX3NlcXVlbmNlcyBGT1IgQUxMIFRBQkxFUywg QUxMIFNFUVVFTkNFUzsKKzwvcHJvZ3JhbWxpc3Rpbmc+CisgIDwvcGFyYT4KKworICA8cGFyYT4K KyAgIENyZWF0ZSBhIHB1YmxpY2F0aW9uIHRoYXQgcHVibGlzaGVzIGFsbCBjaGFuZ2VzIGluIGFs bCB0YWJsZXMgZXhjZXB0CisgICA8c3RydWN0bmFtZT51c2Vyczwvc3RydWN0bmFtZT4gYW5kIDxz dHJ1Y3RuYW1lPmRlcGFydG1lbnRzPC9zdHJ1Y3RuYW1lPjoKKzxwcm9ncmFtbGlzdGluZz4KK0NS RUFURSBQVUJMSUNBVElPTiBhbGxfdGFibGVzX2V4Y2VwdCBGT1IgQUxMIFRBQkxFUyBFWENFUFQg KHVzZXJzLCBkZXBhcnRtZW50cyk7Cis8L3Byb2dyYW1saXN0aW5nPgorICA8L3BhcmE+CisKKyAg PHBhcmE+CisgICBDcmVhdGUgYSBwdWJsaWNhdGlvbiB0aGF0IHB1Ymxpc2hlcyBhbGwgc2VxdWVu Y2VzIGZvciBzeW5jaHJvbml6YXRpb24sIGFuZAorICAgYWxsIGNoYW5nZXMgaW4gYWxsIHRhYmxl cyBleGNlcHQgPHN0cnVjdG5hbWU+dXNlcnM8L3N0cnVjdG5hbWU+IGFuZAorICAgPHN0cnVjdG5h bWU+ZGVwYXJ0bWVudHM8L3N0cnVjdG5hbWU+OgorPHByb2dyYW1saXN0aW5nPgorQ1JFQVRFIFBV QkxJQ0FUSU9OIGFsbF9zZXF1ZW5jZXNfdGFibGVzX2V4Y2VwdCBGT1IgQUxMIFNFUVVFTkNFUywg QUxMIFRBQkxFUyBFWENFUFQgKHVzZXJzLCBkZXBhcnRtZW50cyk7CiA8L3Byb2dyYW1saXN0aW5n PgogICA8L3BhcmE+CiAgPC9yZWZzZWN0MT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYv cHNxbC1yZWYuc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvcHNxbC1yZWYuc2dtbAppbmRleCBlNDY0 ZTNiMTNkZS4uZjRjMDE4M2I5M2EgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvcHNxbC1y ZWYuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL3BzcWwtcmVmLnNnbWwKQEAgLTIxMDMsOCAr MjEwMyw5IEBAIFNFTEVDVCAkMSBccGFyc2Ugc3RtdDEKICAgICAgICAgbGlzdGVkLgogICAgICAg ICBJZiA8bGl0ZXJhbD54PC9saXRlcmFsPiBpcyBhcHBlbmRlZCB0byB0aGUgY29tbWFuZCBuYW1l LCB0aGUgcmVzdWx0cwogICAgICAgICBhcmUgZGlzcGxheWVkIGluIGV4cGFuZGVkIG1vZGUuCi0g ICAgICAgIElmIDxsaXRlcmFsPis8L2xpdGVyYWw+IGlzIGFwcGVuZGVkIHRvIHRoZSBjb21tYW5k IG5hbWUsIHRoZSB0YWJsZXMgYW5kCi0gICAgICAgIHNjaGVtYXMgYXNzb2NpYXRlZCB3aXRoIGVh Y2ggcHVibGljYXRpb24gYXJlIHNob3duIGFzIHdlbGwuCisgICAgICAgIElmIDxsaXRlcmFsPis8 L2xpdGVyYWw+IGlzIGFwcGVuZGVkIHRvIHRoZSBjb21tYW5kIG5hbWUsIHRoZSB0YWJsZXMsCisg ICAgICAgIGV4Y2x1ZGVkIHRhYmxlcywgYW5kIHNjaGVtYXMgYXNzb2NpYXRlZCB3aXRoIGVhY2gg cHVibGljYXRpb24gYXJlIHNob3duCisgICAgICAgIGFzIHdlbGwuCiAgICAgICAgIDwvcGFyYT4K ICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgIDwvdmFybGlzdGVudHJ5PgpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jIGIvc3JjL2JhY2tlbmQvY2F0YWxv Zy9wZ19wdWJsaWNhdGlvbi5jCmluZGV4IDlhNDc5MWM1NzNlLi43NTBkZWNkZTQ0ZCAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jCisrKyBiL3NyYy9iYWNr ZW5kL2NhdGFsb2cvcGdfcHVibGljYXRpb24uYwpAQCAtMzY2LDkgKzM2NiwxMSBAQCBHZXRUb3BN b3N0QW5jZXN0b3JJblB1YmxpY2F0aW9uKE9pZCBwdWJvaWQsIExpc3QgKmFuY2VzdG9ycywgaW50 ICphbmNlc3Rvcl9sZXZlbAogCWZvcmVhY2gobGMsIGFuY2VzdG9ycykKIAl7CiAJCU9pZAkJCWFu Y2VzdG9yID0gbGZpcnN0X29pZChsYyk7Ci0JCUxpc3QJICAgKmFwdWJpZHMgPSBHZXRSZWxhdGlv blB1YmxpY2F0aW9ucyhhbmNlc3Rvcik7CisJCUxpc3QJICAgKmFwdWJpZHMgPSBOSUw7CiAJCUxp c3QJICAgKmFzY2hlbWFQdWJpZHMgPSBOSUw7CiAKKwkJR2V0UmVsYXRpb25QdWJsaWNhdGlvbnMo YW5jZXN0b3IsICZhcHViaWRzLCBOVUxMKTsKKwogCQlsZXZlbCsrOwogCiAJCWlmIChsaXN0X21l bWJlcl9vaWQoYXB1YmlkcywgcHVib2lkKSkKQEAgLTQ4Miw2ICs0ODQsOCBAQCBwdWJsaWNhdGlv bl9hZGRfcmVsYXRpb24oT2lkIHB1YmlkLCBQdWJsaWNhdGlvblJlbEluZm8gKnByaSwKIAkJT2Jq ZWN0SWRHZXREYXR1bShwdWJpZCk7CiAJdmFsdWVzW0FudW1fcGdfcHVibGljYXRpb25fcmVsX3By cmVsaWQgLSAxXSA9CiAJCU9iamVjdElkR2V0RGF0dW0ocmVsaWQpOworCXZhbHVlc1tBbnVtX3Bn X3B1YmxpY2F0aW9uX3JlbF9wcmV4Y2VwdCAtIDFdID0KKwkJQm9vbEdldERhdHVtKHByaS0+ZXhj ZXB0KTsKIAogCS8qIEFkZCBxdWFsaWZpY2F0aW9ucywgaWYgYXZhaWxhYmxlICovCiAJaWYgKHBy aS0+d2hlcmVDbGF1c2UgIT0gTlVMTCkKQEAgLTc0OSwzOCArNzUzLDU4IEBAIHB1YmxpY2F0aW9u X2FkZF9zY2hlbWEoT2lkIHB1YmlkLCBPaWQgc2NoZW1haWQsIGJvb2wgaWZfbm90X2V4aXN0cykK IAlyZXR1cm4gbXlzZWxmOwogfQogCi0vKiBHZXRzIGxpc3Qgb2YgcHVibGljYXRpb24gb2lkcyBm b3IgYSByZWxhdGlvbiAqLwotTGlzdCAqCi1HZXRSZWxhdGlvblB1YmxpY2F0aW9ucyhPaWQgcmVs aWQpCisvKgorICogR2V0IHRoZSBsaXN0IG9mIHB1YmxpY2F0aW9uIG9pZHMgYXNzb2NpYXRlZCB3 aXRoIGEgc3BlY2lmaWVkIHJlbGF0aW9uLgorICoKKyAqIFBhcmFtZXRlciAncHViaWRzJyByZXR1 cm5zIHRoZSBPaWRzIG9mIHRoZSBwdWJsaWNhdGlvbnMgdGhlIHJlbGF0aW9uIGlzIHBhcnQKKyAq IG9mLiBQYXJhbWV0ZXIgJ2V4Y2VwdF9wdWJpZHMnIHJldHVybnMgdGhlIE9pZHMgb2YgcHVibGlj YXRpb25zIHRoZSByZWxhdGlvbgorICogaXMgZXhjbHVkZWQgZnJvbS4KKyAqCisgKiBUaGlzIGZ1 bmN0aW9uIHJldHVybnMgdHJ1ZSBpZiB0aGUgcmVsYXRpb24gaXMgcGFydCBvZiBhbnkgcHVibGlj YXRpb24uCisgKi8KK2Jvb2wKK0dldFJlbGF0aW9uUHVibGljYXRpb25zKE9pZCByZWxpZCwgTGlz dCAqKnB1YmlkcywgTGlzdCAqKmV4Y2VwdF9wdWJpZHMpCiB7Ci0JTGlzdAkgICAqcmVzdWx0ID0g TklMOwogCUNhdENMaXN0ICAgKnB1YnJlbGxpc3Q7Ci0JaW50CQkJaTsKKwlib29sCQlmb3VuZCA9 IGZhbHNlOwogCiAJLyogRmluZCBhbGwgcHVibGljYXRpb25zIGFzc29jaWF0ZWQgd2l0aCB0aGUg cmVsYXRpb24uICovCiAJcHVicmVsbGlzdCA9IFNlYXJjaFN5c0NhY2hlTGlzdDEoUFVCTElDQVRJ T05SRUxNQVAsCiAJCQkJCQkJCQkgT2JqZWN0SWRHZXREYXR1bShyZWxpZCkpOwotCWZvciAoaSA9 IDA7IGkgPCBwdWJyZWxsaXN0LT5uX21lbWJlcnM7IGkrKykKKwlmb3IgKGludCBpID0gMDsgaSA8 IHB1YnJlbGxpc3QtPm5fbWVtYmVyczsgaSsrKQogCXsKIAkJSGVhcFR1cGxlCXR1cCA9ICZwdWJy ZWxsaXN0LT5tZW1iZXJzW2ldLT50dXBsZTsKLQkJT2lkCQkJcHViaWQgPSAoKEZvcm1fcGdfcHVi bGljYXRpb25fcmVsKSBHRVRTVFJVQ1QodHVwKSktPnBycHViaWQ7CisJCUZvcm1fcGdfcHVibGlj YXRpb25fcmVsIHB1YnJlbCA9IChGb3JtX3BnX3B1YmxpY2F0aW9uX3JlbCkgR0VUU1RSVUNUKHR1 cCk7CisJCU9pZAkJCXB1YmlkID0gcHVicmVsLT5wcnB1YmlkOwogCi0JCXJlc3VsdCA9IGxhcHBl bmRfb2lkKHJlc3VsdCwgcHViaWQpOworCQlpZiAocHVicmVsLT5wcmV4Y2VwdCkKKwkJeworCQkJ aWYgKGV4Y2VwdF9wdWJpZHMpCisJCQkJKmV4Y2VwdF9wdWJpZHMgPSBsYXBwZW5kX29pZCgqZXhj ZXB0X3B1YmlkcywgcHViaWQpOworCQl9CisJCWVsc2UKKwkJeworCQkJaWYgKHB1YmlkcykKKwkJ CQkqcHViaWRzID0gbGFwcGVuZF9vaWQoKnB1YmlkcywgcHViaWQpOworCQkJZm91bmQgPSB0cnVl OworCQl9CiAJfQogCiAJUmVsZWFzZVN5c0NhY2hlTGlzdChwdWJyZWxsaXN0KTsKIAotCXJldHVy biByZXN1bHQ7CisJcmV0dXJuIGZvdW5kOwogfQogCiAvKgotICogR2V0cyBsaXN0IG9mIHJlbGF0 aW9uIG9pZHMgZm9yIGEgcHVibGljYXRpb24uCisgKiBJbnRlcm5hbCBmdW5jdGlvbiB0byBnZXQg dGhlIGxpc3Qgb2YgcmVsYXRpb24gT2lkcyBmb3IgYSBwdWJsaWNhdGlvbi4KICAqCi0gKiBUaGlz IHNob3VsZCBvbmx5IGJlIHVzZWQgRk9SIFRBQkxFIHB1YmxpY2F0aW9ucywgdGhlIEZPUiBBTEwg VEFCTEVTL1NFUVVFTkNFUwotICogc2hvdWxkIHVzZSBHZXRBbGxQdWJsaWNhdGlvblJlbGF0aW9u cygpLgorICogSWYgZXhjZXB0X2ZsYWcgaXMgdHJ1ZSwgcmV0dXJucyB0aGUgbGlzdCBvZiByZWxh dGlvbnMgZXhjbHVkZWQgZnJvbSB0aGUKKyAqIHB1YmxpY2F0aW9uOyBvdGhlcndpc2UsIHJldHVy bnMgdGhlIGxpc3Qgb2YgcmVsYXRpb25zIGluY2x1ZGVkIGluIHRoZQorICogcHVibGljYXRpb24u CiAgKi8KLUxpc3QgKgotR2V0UHVibGljYXRpb25SZWxhdGlvbnMoT2lkIHB1YmlkLCBQdWJsaWNh dGlvblBhcnRPcHQgcHViX3BhcnRvcHQpCitzdGF0aWMgTGlzdCAqCitnZXRfcHVibGljYXRpb25f cmVsYXRpb25zKE9pZCBwdWJpZCwgUHVibGljYXRpb25QYXJ0T3B0IHB1Yl9wYXJ0b3B0LAorCQkJ CQkJICBib29sIGV4Y2VwdF9mbGFnKQogewogCUxpc3QJICAgKnJlc3VsdDsKIAlSZWxhdGlvbglw dWJyZWxzcmVsOwpAQCAtODA1LDggKzgyOSwxMCBAQCBHZXRQdWJsaWNhdGlvblJlbGF0aW9ucyhP aWQgcHViaWQsIFB1YmxpY2F0aW9uUGFydE9wdCBwdWJfcGFydG9wdCkKIAkJRm9ybV9wZ19wdWJs aWNhdGlvbl9yZWwgcHVicmVsOwogCiAJCXB1YnJlbCA9IChGb3JtX3BnX3B1YmxpY2F0aW9uX3Jl bCkgR0VUU1RSVUNUKHR1cCk7Ci0JCXJlc3VsdCA9IEdldFB1YlBhcnRpdGlvbk9wdGlvblJlbGF0 aW9ucyhyZXN1bHQsIHB1Yl9wYXJ0b3B0LAotCQkJCQkJCQkJCQkJcHVicmVsLT5wcnJlbGlkKTsK KworCQlpZiAoZXhjZXB0X2ZsYWcgPT0gcHVicmVsLT5wcmV4Y2VwdCkKKwkJCXJlc3VsdCA9IEdl dFB1YlBhcnRpdGlvbk9wdGlvblJlbGF0aW9ucyhyZXN1bHQsIHB1Yl9wYXJ0b3B0LAorCQkJCQkJ CQkJCQkJCXB1YnJlbC0+cHJyZWxpZCk7CiAJfQogCiAJc3lzdGFibGVfZW5kc2NhbihzY2FuKTsK QEAgLTgxOSw2ICs4NDUsMzYgQEAgR2V0UHVibGljYXRpb25SZWxhdGlvbnMoT2lkIHB1YmlkLCBQ dWJsaWNhdGlvblBhcnRPcHQgcHViX3BhcnRvcHQpCiAJcmV0dXJuIHJlc3VsdDsKIH0KIAorLyoK KyAqIFJldHVybiB0aGUgbGlzdCBvZiByZWxhdGlvbiBPaWRzIGZvciBhIHB1YmxpY2F0aW9uLgor ICoKKyAqIEZvciBhIEZPUiBUQUJMRSBwdWJsaWNhdGlvbiwgdGhpcyByZXR1cm5zIHRoZSBsaXN0 IG9mIHJlbGF0aW9ucyBleHBsaWNpdGx5CisgKiBpbmNsdWRlZCBpbiB0aGUgcHVibGljYXRpb24u CisgKgorICogUHVibGljYXRpb25zIGRlY2xhcmVkIHdpdGggRk9SIEFMTCBUQUJMRVMgc2hvdWxk IHVzZQorICogR2V0QWxsUHVibGljYXRpb25SZWxhdGlvbnMoKSB0byBvYnRhaW4gdGhlIGNvbXBs ZXRlIHNldCBvZiB0YWJsZXMgY292ZXJlZCBieQorICogdGhlIHB1YmxpY2F0aW9uLgorICovCitM aXN0ICoKK0dldFB1YmxpY2F0aW9uSW5jbHVkZWRSZWxhdGlvbnMoT2lkIHB1YmlkLCBQdWJsaWNh dGlvblBhcnRPcHQgcHViX3BhcnRvcHQpCit7CisJQXNzZXJ0KCFHZXRQdWJsaWNhdGlvbihwdWJp ZCktPmFsbHRhYmxlcyk7CisKKwlyZXR1cm4gZ2V0X3B1YmxpY2F0aW9uX3JlbGF0aW9ucyhwdWJp ZCwgcHViX3BhcnRvcHQsIGZhbHNlKTsKK30KKworLyoKKyAqIFJldHVybiB0aGUgbGlzdCBvZiB0 YWJsZXMgT2lkcyBleGNsdWRlZCBmcm9tIGEgcHVibGljYXRpb24uCisgKiBUaGlzIGlzIG9ubHkg YXBwbGljYWJsZSBmb3IgRk9SIEFMTCBUQUJMRVMgcHVibGljYXRpb25zLgorICovCitMaXN0ICoK K0dldEFsbFB1YmxpY2F0aW9uRXhjbHVkZWRUYWJsZXMoT2lkIHB1YmlkLCBQdWJsaWNhdGlvblBh cnRPcHQgcHViX3BhcnRvcHQpCit7CisJQXNzZXJ0KEdldFB1YmxpY2F0aW9uKHB1YmlkKS0+YWxs dGFibGVzKTsKKworCXJldHVybiBnZXRfcHVibGljYXRpb25fcmVsYXRpb25zKHB1YmlkLCBwdWJf cGFydG9wdCwgdHJ1ZSk7Cit9CisKIC8qCiAgKiBHZXRzIGxpc3Qgb2YgcHVibGljYXRpb24gb2lk cyBmb3IgcHVibGljYXRpb25zIG1hcmtlZCBhcyBGT1IgQUxMIFRBQkxFUy4KICAqLwpAQCAtODY0 LDE4ICs5MjAsMjkgQEAgR2V0QWxsVGFibGVzUHVibGljYXRpb25zKHZvaWQpCiAgKiBwYXJ0aXRp b25lZCB0YWJsZXMsIHdlIG11c3QgZXhjbHVkZSBwYXJ0aXRpb25zIGluIGZhdm9yIG9mIGluY2x1 ZGluZyB0aGUKICAqIHJvb3QgcGFydGl0aW9uZWQgdGFibGVzLiBUaGlzIGlzIG5vdCBhcHBsaWNh YmxlIHRvIEZPUiBBTEwgU0VRVUVOQ0VTCiAgKiBwdWJsaWNhdGlvbi4KKyAqCisgKiBGb3IgYSBG T1IgQUxMIFRBQkxFUyBwdWJsaWNhdGlvbiwgdGhlIHJldHVybmVkIGxpc3QgZXhjbHVkZXMgdGFi bGVzIG1lbnRpb25lZAorICogaW4gRVhDRVBUIFRBQkxFIGNsYXVzZS4KICAqLwogTGlzdCAqCi1H ZXRBbGxQdWJsaWNhdGlvblJlbGF0aW9ucyhjaGFyIHJlbGtpbmQsIGJvb2wgcHVidmlhcm9vdCkK K0dldEFsbFB1YmxpY2F0aW9uUmVsYXRpb25zKFB1YmxpY2F0aW9uICpwdWIsIGNoYXIgcmVsa2lu ZCkKIHsKIAlSZWxhdGlvbgljbGFzc1JlbDsKIAlTY2FuS2V5RGF0YSBrZXlbMV07CiAJVGFibGVT Y2FuRGVzYyBzY2FuOwogCUhlYXBUdXBsZQl0dXBsZTsKIAlMaXN0CSAgICpyZXN1bHQgPSBOSUw7 CisJTGlzdAkgICAqZXhjZXB0bGlzdCA9IE5JTDsKKwlib29sCQlwdWJ2aWFyb290ID0gcHViLT5w dWJ2aWFyb290OworCU9pZAkJCXB1YmlkID0gcHViLT5vaWQ7CiAKIAlBc3NlcnQoIShyZWxraW5k ID09IFJFTEtJTkRfU0VRVUVOQ0UgJiYgcHVidmlhcm9vdCkpOwogCisJaWYgKHJlbGtpbmQgPT0g UkVMS0lORF9SRUxBVElPTikKKwkJZXhjZXB0bGlzdCA9IEdldEFsbFB1YmxpY2F0aW9uRXhjbHVk ZWRUYWJsZXMocHViaWQsIHB1YnZpYXJvb3QgPworCQkJCQkJCQkJCQkJCSBQVUJMSUNBVElPTl9Q QVJUX1JPT1QgOgorCQkJCQkJCQkJCQkJCSBQVUJMSUNBVElPTl9QQVJUX0xFQUYpOworCiAJY2xh c3NSZWwgPSB0YWJsZV9vcGVuKFJlbGF0aW9uUmVsYXRpb25JZCwgQWNjZXNzU2hhcmVMb2NrKTsK IAogCVNjYW5LZXlJbml0KCZrZXlbMF0sCkBAIC04OTEsNyArOTU4LDggQEAgR2V0QWxsUHVibGlj YXRpb25SZWxhdGlvbnMoY2hhciByZWxraW5kLCBib29sIHB1YnZpYXJvb3QpCiAJCU9pZAkJCXJl bGlkID0gcmVsRm9ybS0+b2lkOwogCiAJCWlmIChpc19wdWJsaXNoYWJsZV9jbGFzcyhyZWxpZCwg cmVsRm9ybSkgJiYKLQkJCSEocmVsRm9ybS0+cmVsaXNwYXJ0aXRpb24gJiYgcHVidmlhcm9vdCkp CisJCQkhKHJlbEZvcm0tPnJlbGlzcGFydGl0aW9uICYmIHB1YnZpYXJvb3QpICYmCisJCQkhbGlz dF9tZW1iZXJfb2lkKGV4Y2VwdGxpc3QsIHJlbGlkKSkKIAkJCXJlc3VsdCA9IGxhcHBlbmRfb2lk KHJlc3VsdCwgcmVsaWQpOwogCX0KIApAQCAtOTEyLDcgKzk4MCw4IEBAIEdldEFsbFB1YmxpY2F0 aW9uUmVsYXRpb25zKGNoYXIgcmVsa2luZCwgYm9vbCBwdWJ2aWFyb290KQogCQkJT2lkCQkJcmVs aWQgPSByZWxGb3JtLT5vaWQ7CiAKIAkJCWlmIChpc19wdWJsaXNoYWJsZV9jbGFzcyhyZWxpZCwg cmVsRm9ybSkgJiYKLQkJCQkhcmVsRm9ybS0+cmVsaXNwYXJ0aXRpb24pCisJCQkJIXJlbEZvcm0t PnJlbGlzcGFydGl0aW9uICYmCisJCQkJIWxpc3RfbWVtYmVyX29pZChleGNlcHRsaXN0LCByZWxp ZCkpCiAJCQkJcmVzdWx0ID0gbGFwcGVuZF9vaWQocmVzdWx0LCByZWxpZCk7CiAJCX0KIApAQCAt MTE2OCwxNyArMTIzNywxNyBAQCBwZ19nZXRfcHVibGljYXRpb25fdGFibGVzKFBHX0ZVTkNUSU9O X0FSR1MpCiAJCQkgKiB0aG9zZS4gT3RoZXJ3aXNlLCBnZXQgdGhlIHBhcnRpdGlvbmVkIHRhYmxl IGl0c2VsZi4KIAkJCSAqLwogCQkJaWYgKHB1Yl9lbGVtLT5hbGx0YWJsZXMpCi0JCQkJcHViX2Vs ZW1fdGFibGVzID0gR2V0QWxsUHVibGljYXRpb25SZWxhdGlvbnMoUkVMS0lORF9SRUxBVElPTiwK LQkJCQkJCQkJCQkJCQkJCSBwdWJfZWxlbS0+cHVidmlhcm9vdCk7CisJCQkJcHViX2VsZW1fdGFi bGVzID0gR2V0QWxsUHVibGljYXRpb25SZWxhdGlvbnMocHViX2VsZW0sCisJCQkJCQkJCQkJCQkJ CQkgUkVMS0lORF9SRUxBVElPTik7CiAJCQllbHNlCiAJCQl7CiAJCQkJTGlzdAkgICAqcmVsaWRz LAogCQkJCQkJICAgKnNjaGVtYXJlbGlkczsKIAotCQkJCXJlbGlkcyA9IEdldFB1YmxpY2F0aW9u UmVsYXRpb25zKHB1Yl9lbGVtLT5vaWQsCi0JCQkJCQkJCQkJCQkgcHViX2VsZW0tPnB1YnZpYXJv b3QgPwotCQkJCQkJCQkJCQkJIFBVQkxJQ0FUSU9OX1BBUlRfUk9PVCA6Ci0JCQkJCQkJCQkJCQkg UFVCTElDQVRJT05fUEFSVF9MRUFGKTsKKwkJCQlyZWxpZHMgPSBHZXRQdWJsaWNhdGlvbkluY2x1 ZGVkUmVsYXRpb25zKHB1Yl9lbGVtLT5vaWQsCisJCQkJCQkJCQkJCQkJCSBwdWJfZWxlbS0+cHVi dmlhcm9vdCA/CisJCQkJCQkJCQkJCQkJCSBQVUJMSUNBVElPTl9QQVJUX1JPT1QgOgorCQkJCQkJ CQkJCQkJCQkgUFVCTElDQVRJT05fUEFSVF9MRUFGKTsKIAkJCQlzY2hlbWFyZWxpZHMgPSBHZXRB bGxTY2hlbWFQdWJsaWNhdGlvblJlbGF0aW9ucyhwdWJfZWxlbS0+b2lkLAogCQkJCQkJCQkJCQkJ CQkJCXB1Yl9lbGVtLT5wdWJ2aWFyb290ID8KIAkJCQkJCQkJCQkJCQkJCQlQVUJMSUNBVElPTl9Q QVJUX1JPT1QgOgpAQCAtMTM2Nyw3ICsxNDM2LDcgQEAgcGdfZ2V0X3B1YmxpY2F0aW9uX3NlcXVl bmNlcyhQR19GVU5DVElPTl9BUkdTKQogCQlwdWJsaWNhdGlvbiA9IEdldFB1YmxpY2F0aW9uQnlO YW1lKHB1Ym5hbWUsIGZhbHNlKTsKIAogCQlpZiAocHVibGljYXRpb24tPmFsbHNlcXVlbmNlcykK LQkJCXNlcXVlbmNlcyA9IEdldEFsbFB1YmxpY2F0aW9uUmVsYXRpb25zKFJFTEtJTkRfU0VRVUVO Q0UsIGZhbHNlKTsKKwkJCXNlcXVlbmNlcyA9IEdldEFsbFB1YmxpY2F0aW9uUmVsYXRpb25zKHB1 YmxpY2F0aW9uLCBSRUxLSU5EX1NFUVVFTkNFKTsKIAogCQlmdW5jY3R4LT51c2VyX2ZjdHggPSBz ZXF1ZW5jZXM7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3B1YmxpY2F0aW9u Y21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMKaW5kZXggZmMz YTRjMTllNjUuLjZiYjgxNmIyMTljIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9w dWJsaWNhdGlvbmNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNt ZHMuYwpAQCAtMTk4LDcgKzE5OCwxMiBAQCBPYmplY3RzSW5QdWJsaWNhdGlvblRvT2lkcyhMaXN0 ICpwdWJvYmpzcGVjX2xpc3QsIFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAogCQlzd2l0Y2ggKHB1Ym9i ai0+cHVib2JqdHlwZSkKIAkJeworCQkJY2FzZSBQVUJMSUNBVElPTk9CSl9FWENFUFRfVEFCTEU6 CisJCQkJcHVib2JqLT5wdWJ0YWJsZS0+ZXhjZXB0ID0gdHJ1ZTsKKwkJCQkqcmVscyA9IGxhcHBl bmQoKnJlbHMsIHB1Ym9iai0+cHVidGFibGUpOworCQkJCWJyZWFrOwogCQkJY2FzZSBQVUJMSUNB VElPTk9CSl9UQUJMRToKKwkJCQlwdWJvYmotPnB1YnRhYmxlLT5leGNlcHQgPSBmYWxzZTsKIAkJ CQkqcmVscyA9IGxhcHBlbmQoKnJlbHMsIHB1Ym9iai0+cHVidGFibGUpOwogCQkJCWJyZWFrOwog CQkJY2FzZSBQVUJMSUNBVElPTk9CSl9UQUJMRVNfSU5fU0NIRU1BOgpAQCAtNTE5LDggKzUyNCw4 IEBAIEludmFsaWRhdGVQdWJSZWxTeW5jQ2FjaGUoT2lkIHB1YmlkLCBib29sIHB1YmFsbHRhYmxl cykKIAkJICogYSB0YXJnZXQuIEhvd2V2ZXIsIFdBTCByZWNvcmRzIGZvciBUUlVOQ0FURSBzcGVj aWZ5IGJvdGggYSByb290IGFuZAogCQkgKiBpdHMgbGVhdmVzLgogCQkgKi8KLQkJcmVsaWRzID0g R2V0UHVibGljYXRpb25SZWxhdGlvbnMocHViaWQsCi0JCQkJCQkJCQkJIFBVQkxJQ0FUSU9OX1BB UlRfQUxMKTsKKwkJcmVsaWRzID0gR2V0UHVibGljYXRpb25JbmNsdWRlZFJlbGF0aW9ucyhwdWJp ZCwKKwkJCQkJCQkJCQkJCSBQVUJMSUNBVElPTl9QQVJUX0FMTCk7CiAJCXNjaGVtYXJlbGlkcyA9 IEdldEFsbFNjaGVtYVB1YmxpY2F0aW9uUmVsYXRpb25zKHB1YmlkLAogCQkJCQkJCQkJCQkJCQlQ VUJMSUNBVElPTl9QQVJUX0FMTCk7CiAKQEAgLTkyOSw1NSArOTM0LDYxIEBAIENyZWF0ZVB1Ymxp Y2F0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlUHVibGljYXRpb25TdG10ICpzdG10KQog CUNvbW1hbmRDb3VudGVySW5jcmVtZW50KCk7CiAKIAkvKiBBc3NvY2lhdGUgb2JqZWN0cyB3aXRo IHRoZSBwdWJsaWNhdGlvbi4gKi8KLQlpZiAoc3RtdC0+Zm9yX2FsbF90YWJsZXMpCisJT2JqZWN0 c0luUHVibGljYXRpb25Ub09pZHMoc3RtdC0+cHVib2JqZWN0cywgcHN0YXRlLCAmcmVsYXRpb25z LAorCQkJCQkJCSAgICZzY2hlbWFpZGxpc3QpOworCisJLyogRk9SIFRBQkxFUyBJTiBTQ0hFTUEg cmVxdWlyZXMgc3VwZXJ1c2VyICovCisJaWYgKHNjaGVtYWlkbGlzdCAhPSBOSUwgJiYgIXN1cGVy dXNlcigpKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCWVycmNvZGUoRVJSQ09ERV9JTlNVRkZJQ0lF TlRfUFJJVklMRUdFKSwKKwkJCQllcnJtc2coIm11c3QgYmUgc3VwZXJ1c2VyIHRvIGNyZWF0ZSBG T1IgVEFCTEVTIElOIFNDSEVNQSBwdWJsaWNhdGlvbiIpKTsKKworCS8qIEFkZCByZWxhdGlvbnMg KHRhYmxlcykgdG8gdGhlIHB1YmxpY2F0aW9uLiAqLworCWlmIChyZWxhdGlvbnMgIT0gTklMKQog CXsKIAkJLyoKLQkJICogSW52YWxpZGF0ZSByZWxjYWNoZSBzbyB0aGF0IHB1YmxpY2F0aW9uIGlu Zm8gaXMgcmVidWlsdC4gU2VxdWVuY2VzCi0JCSAqIHB1YmxpY2F0aW9uIGRvZXNuJ3QgcmVxdWly ZSBpbnZhbGlkYXRpb24sIGFzIHJlcGxpY2EgaWRlbnRpdHkKLQkJICogY2hlY2tzIGRvbid0IGFw cGx5IHRvIHRoZW0uCisJCSAqIFRoZSAncmVsYXRpb25zJyBsaXN0IGNhbiBiZSBub24tZW1wdHkg aW4gb25seSB0d28gY2FzZXM6CisJCSAqCisJCSAqIDEuIENSRUFURSBQVUJMSUNBVElPTiAuLi4g Rk9SIFRBQkxFIEluIHRoaXMgY2FzZSwgJ3JlbGF0aW9ucycKKwkJICogY29udGFpbnMgdGhlIGxp c3Qgb2Ygc3BlY2lmaWVkIHRhYmxlcy4KKwkJICoKKwkJICogMi4gQ1JFQVRFIFBVQkxJQ0FUSU9O IC4uLiBGT1IgQUxMIFRBQkxFUyBJbiB0aGlzIGNhc2UsICdyZWxhdGlvbnMnCisJCSAqIGNvbnRh aW5zIHRoZSBsaXN0IG9mIHRhYmxlcyBzcGVjaWZpZWQgaW4gdGhlIEVYQ0VQVCBUQUJMRSBjbGF1 c2UuCisJCSAqIER1cmluZyBwYXJzaW5nLCB0aGUgJ2V4Y2VwdCcgZmxhZyBpcyBzZXQgZm9yIHRo ZSBhc3NvY2lhdGVkCisJCSAqIFB1YmxpY2F0aW9uUmVsSW5mbyBvYmplY3RzLgogCQkgKi8KLQkJ Q2FjaGVJbnZhbGlkYXRlUmVsY2FjaGVBbGwoKTsKLQl9Ci0JZWxzZSBpZiAoIXN0bXQtPmZvcl9h bGxfc2VxdWVuY2VzKQotCXsKLQkJT2JqZWN0c0luUHVibGljYXRpb25Ub09pZHMoc3RtdC0+cHVi b2JqZWN0cywgcHN0YXRlLCAmcmVsYXRpb25zLAotCQkJCQkJCQkgICAmc2NoZW1haWRsaXN0KTsK KwkJTGlzdAkgICAqcmVsczsKIAotCQkvKiBGT1IgVEFCTEVTIElOIFNDSEVNQSByZXF1aXJlcyBz dXBlcnVzZXIgKi8KLQkJaWYgKHNjaGVtYWlkbGlzdCAhPSBOSUwgJiYgIXN1cGVydXNlcigpKQot CQkJZXJlcG9ydChFUlJPUiwKLQkJCQkJZXJyY29kZShFUlJDT0RFX0lOU1VGRklDSUVOVF9QUklW SUxFR0UpLAotCQkJCQllcnJtc2coIm11c3QgYmUgc3VwZXJ1c2VyIHRvIGNyZWF0ZSBGT1IgVEFC TEVTIElOIFNDSEVNQSBwdWJsaWNhdGlvbiIpKTsKLQotCQlpZiAocmVsYXRpb25zICE9IE5JTCkK LQkJewotCQkJTGlzdAkgICAqcmVsczsKKwkJcmVscyA9IE9wZW5UYWJsZUxpc3QocmVsYXRpb25z KTsKKwkJVHJhbnNmb3JtUHViV2hlcmVDbGF1c2VzKHJlbHMsIHBzdGF0ZS0+cF9zb3VyY2V0ZXh0 LAorCQkJCQkJCQkgcHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QpOwogCi0JCQlyZWxzID0gT3Bl blRhYmxlTGlzdChyZWxhdGlvbnMpOwotCQkJVHJhbnNmb3JtUHViV2hlcmVDbGF1c2VzKHJlbHMs IHBzdGF0ZS0+cF9zb3VyY2V0ZXh0LAotCQkJCQkJCQkJIHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9y b290KTsKKwkJQ2hlY2tQdWJSZWxhdGlvbkNvbHVtbkxpc3Qoc3RtdC0+cHVibmFtZSwgcmVscywK KwkJCQkJCQkJICAgc2NoZW1haWRsaXN0ICE9IE5JTCwKKwkJCQkJCQkJICAgcHVibGlzaF92aWFf cGFydGl0aW9uX3Jvb3QpOwogCi0JCQlDaGVja1B1YlJlbGF0aW9uQ29sdW1uTGlzdChzdG10LT5w dWJuYW1lLCByZWxzLAotCQkJCQkJCQkJICAgc2NoZW1haWRsaXN0ICE9IE5JTCwKLQkJCQkJCQkJ CSAgIHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290KTsKLQotCQkJUHVibGljYXRpb25BZGRUYWJs ZXMocHVib2lkLCByZWxzLCB0cnVlLCBOVUxMKTsKLQkJCUNsb3NlVGFibGVMaXN0KHJlbHMpOwot CQl9CisJCVB1YmxpY2F0aW9uQWRkVGFibGVzKHB1Ym9pZCwgcmVscywgdHJ1ZSwgTlVMTCk7CisJ CUNsb3NlVGFibGVMaXN0KHJlbHMpOworCX0KIAotCQlpZiAoc2NoZW1haWRsaXN0ICE9IE5JTCkK LQkJewotCQkJLyoKLQkJCSAqIFNjaGVtYSBsb2NrIGlzIGhlbGQgdW50aWwgdGhlIHB1YmxpY2F0 aW9uIGlzIGNyZWF0ZWQgdG8gcHJldmVudAotCQkJICogY29uY3VycmVudCBzY2hlbWEgZGVsZXRp b24uCi0JCQkgKi8KLQkJCUxvY2tTY2hlbWFMaXN0KHNjaGVtYWlkbGlzdCk7Ci0JCQlQdWJsaWNh dGlvbkFkZFNjaGVtYXMocHVib2lkLCBzY2hlbWFpZGxpc3QsIHRydWUsIE5VTEwpOwotCQl9CisJ aWYgKHNjaGVtYWlkbGlzdCAhPSBOSUwpCisJeworCQkvKgorCQkgKiBTY2hlbWEgbG9jayBpcyBo ZWxkIHVudGlsIHRoZSBwdWJsaWNhdGlvbiBpcyBjcmVhdGVkIHRvIHByZXZlbnQKKwkJICogY29u Y3VycmVudCBzY2hlbWEgZGVsZXRpb24uCisJCSAqLworCQlMb2NrU2NoZW1hTGlzdChzY2hlbWFp ZGxpc3QpOworCQlQdWJsaWNhdGlvbkFkZFNjaGVtYXMocHVib2lkLCBzY2hlbWFpZGxpc3QsIHRy dWUsIE5VTEwpOwogCX0KIAogCXRhYmxlX2Nsb3NlKHJlbCwgUm93RXhjbHVzaXZlTG9jayk7CiAK KwlpZiAoc3RtdC0+Zm9yX2FsbF90YWJsZXMpCisJeworCQkvKiBJbnZhbGlkYXRlIHJlbGNhY2hl IHNvIHRoYXQgcHVibGljYXRpb24gaW5mbyBpcyByZWJ1aWx0LiAqLworCQlDYWNoZUludmFsaWRh dGVSZWxjYWNoZUFsbCgpOworCX0KKwogCUludm9rZU9iamVjdFBvc3RDcmVhdGVIb29rKFB1Ymxp Y2F0aW9uUmVsYXRpb25JZCwgcHVib2lkLCAwKTsKIAogCS8qCkBAIC0xMDUwLDggKzEwNjEsOCBA QCBBbHRlclB1YmxpY2F0aW9uT3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsIEFsdGVyUHVibGlj YXRpb25TdG10ICpzdG10LAogCQlMb2NrRGF0YWJhc2VPYmplY3QoUHVibGljYXRpb25SZWxhdGlv bklkLCBwdWJmb3JtLT5vaWQsIDAsCiAJCQkJCQkgICBBY2Nlc3NTaGFyZUxvY2spOwogCi0JCXJv b3RfcmVsaWRzID0gR2V0UHVibGljYXRpb25SZWxhdGlvbnMocHViZm9ybS0+b2lkLAotCQkJCQkJ CQkJCQkgIFBVQkxJQ0FUSU9OX1BBUlRfUk9PVCk7CisJCXJvb3RfcmVsaWRzID0gR2V0UHVibGlj YXRpb25JbmNsdWRlZFJlbGF0aW9ucyhwdWJmb3JtLT5vaWQsCisJCQkJCQkJCQkJCQkJICBQVUJM SUNBVElPTl9QQVJUX1JPT1QpOwogCiAJCWZvcmVhY2gobGMsIHJvb3RfcmVsaWRzKQogCQl7CkBA IC0xMTcwLDggKzExODEsOCBAQCBBbHRlclB1YmxpY2F0aW9uT3B0aW9ucyhQYXJzZVN0YXRlICpw c3RhdGUsIEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10LAogCQkgKiB0cmVlcywgbm90IGp1c3Qg dGhvc2UgZXhwbGljaXRseSBtZW50aW9uZWQgaW4gdGhlIHB1YmxpY2F0aW9uLgogCQkgKi8KIAkJ aWYgKHJvb3RfcmVsaWRzID09IE5JTCkKLQkJCXJlbGlkcyA9IEdldFB1YmxpY2F0aW9uUmVsYXRp b25zKHB1YmZvcm0tPm9pZCwKLQkJCQkJCQkJCQkJIFBVQkxJQ0FUSU9OX1BBUlRfQUxMKTsKKwkJ CXJlbGlkcyA9IEdldFB1YmxpY2F0aW9uSW5jbHVkZWRSZWxhdGlvbnMocHViZm9ybS0+b2lkLAor CQkJCQkJCQkJCQkJCSBQVUJMSUNBVElPTl9QQVJUX0FMTCk7CiAJCWVsc2UKIAkJewogCQkJLyoK QEAgLTEyNTYsOCArMTI2Nyw4IEBAIEFsdGVyUHVibGljYXRpb25UYWJsZXMoQWx0ZXJQdWJsaWNh dGlvblN0bXQgKnN0bXQsIEhlYXBUdXBsZSB0dXAsCiAJCVB1YmxpY2F0aW9uRHJvcFRhYmxlcyhw dWJpZCwgcmVscywgZmFsc2UpOwogCWVsc2UJCQkJCQkvKiBBUF9TZXRPYmplY3RzICovCiAJewot CQlMaXN0CSAgICpvbGRyZWxpZHMgPSBHZXRQdWJsaWNhdGlvblJlbGF0aW9ucyhwdWJpZCwKLQkJ CQkJCQkJCQkJCQkJUFVCTElDQVRJT05fUEFSVF9ST09UKTsKKwkJTGlzdAkgICAqb2xkcmVsaWRz ID0gR2V0UHVibGljYXRpb25JbmNsdWRlZFJlbGF0aW9ucyhwdWJpZCwKKwkJCQkJCQkJCQkJCQkJ CQlQVUJMSUNBVElPTl9QQVJUX1JPT1QpOwogCQlMaXN0CSAgICpkZWxyZWxzID0gTklMOwogCQlM aXN0Q2VsbCAgICpvbGRsYzsKIApAQCAtMTM1OCw2ICsxMzY5LDcgQEAgQWx0ZXJQdWJsaWNhdGlv blRhYmxlcyhBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCwgSGVhcFR1cGxlIHR1cCwKIAkJCQlv bGRyZWwgPSBwYWxsb2Nfb2JqZWN0KFB1YmxpY2F0aW9uUmVsSW5mbyk7CiAJCQkJb2xkcmVsLT53 aGVyZUNsYXVzZSA9IE5VTEw7CiAJCQkJb2xkcmVsLT5jb2x1bW5zID0gTklMOworCQkJCW9sZHJl bC0+ZXhjZXB0ID0gZmFsc2U7CiAJCQkJb2xkcmVsLT5yZWxhdGlvbiA9IHRhYmxlX29wZW4ob2xk cmVsaWQsCiAJCQkJCQkJCQkJCSAgU2hhcmVVcGRhdGVFeGNsdXNpdmVMb2NrKTsKIAkJCQlkZWxy ZWxzID0gbGFwcGVuZChkZWxyZWxzLCBvbGRyZWwpOwpAQCAtMTQwOCw3ICsxNDIwLDggQEAgQWx0 ZXJQdWJsaWNhdGlvblNjaGVtYXMoQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsCiAJCUxpc3RD ZWxsICAgKmxjOwogCQlMaXN0CSAgICpyZWxvaWRzOwogCi0JCXJlbG9pZHMgPSBHZXRQdWJsaWNh dGlvblJlbGF0aW9ucyhwdWJmb3JtLT5vaWQsIFBVQkxJQ0FUSU9OX1BBUlRfUk9PVCk7CisJCXJl bG9pZHMgPSBHZXRQdWJsaWNhdGlvbkluY2x1ZGVkUmVsYXRpb25zKHB1YmZvcm0tPm9pZCwKKwkJ CQkJCQkJCQkJCSAgUFVCTElDQVRJT05fUEFSVF9ST09UKTsKIAogCQlmb3JlYWNoKGxjLCByZWxv aWRzKQogCQl7CkBAIC0xNzcxLDYgKzE3ODQsNyBAQCBPcGVuVGFibGVMaXN0KExpc3QgKnRhYmxl cykKIAkJcHViX3JlbC0+cmVsYXRpb24gPSByZWw7CiAJCXB1Yl9yZWwtPndoZXJlQ2xhdXNlID0g dC0+d2hlcmVDbGF1c2U7CiAJCXB1Yl9yZWwtPmNvbHVtbnMgPSB0LT5jb2x1bW5zOworCQlwdWJf cmVsLT5leGNlcHQgPSB0LT5leGNlcHQ7CiAJCXJlbHMgPSBsYXBwZW5kKHJlbHMsIHB1Yl9yZWwp OwogCQlyZWxpZHMgPSBsYXBwZW5kX29pZChyZWxpZHMsIG15cmVsaWQpOwogCkBAIC0xODQzLDYg KzE4NTcsNyBAQCBPcGVuVGFibGVMaXN0KExpc3QgKnRhYmxlcykKIAogCQkJCS8qIGNoaWxkIGlu aGVyaXRzIGNvbHVtbiBsaXN0IGZyb20gcGFyZW50ICovCiAJCQkJcHViX3JlbC0+Y29sdW1ucyA9 IHQtPmNvbHVtbnM7CisJCQkJcHViX3JlbC0+ZXhjZXB0ID0gdC0+ZXhjZXB0OwogCQkJCXJlbHMg PSBsYXBwZW5kKHJlbHMsIHB1Yl9yZWwpOwogCQkJCXJlbGlkcyA9IGxhcHBlbmRfb2lkKHJlbGlk cywgY2hpbGRyZWxpZCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNj cmlwdGlvbmNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYwpp bmRleCBkNjY3NGYyMGZjMi4uNThhMTQ2ODYxZTcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9zdWJz Y3JpcHRpb25jbWRzLmMKQEAgLTI5NDAsNiArMjk0MCw4IEBAIGZldGNoX3JlbGF0aW9uX2xpc3Qo V2FsUmVjZWl2ZXJDb25uICp3cmNvbm4sIExpc3QgKnB1YmxpY2F0aW9ucykKIAkJCQkJCSBwdWJf bmFtZXMuZGF0YSk7CiAJfQogCisJZWxvZyhMT0csICJmZXRjaF9yZWxhdGlvbl9saXN0OiBleGVj dXRpbmcgcXVlcnkgdG8gZmV0Y2ggZWZmZWN0aXZlcmVsYXRpb25zOiBcbiVzIiwKKwkJIGNtZC5k YXRhKTsKIAlwZnJlZShwdWJfbmFtZXMuZGF0YSk7CiAKIAlyZXMgPSB3YWxyY3ZfZXhlYyh3cmNv bm4sIGNtZC5kYXRhLCBjb2x1bW5fY291bnQsIHRhYmxlUm93KTsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVj bWRzLmMKaW5kZXggZjk3NmMwZTVjN2UuLjM5NWI4YzBjMmExIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJs ZWNtZHMuYwpAQCAtODY4OCw3ICs4Njg4LDcgQEAgQVRFeGVjU2V0RXhwcmVzc2lvbihBbHRlcmVk VGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIHJlbCwgY29uc3QgY2hhciAqY29sTmFtZSwKIAkgKiBl eHByZXNzaW9ucy4KIAkgKi8KIAlpZiAoYXR0Z2VuZXJhdGVkID09IEFUVFJJQlVURV9HRU5FUkFU RURfVklSVFVBTCAmJgotCQlHZXRSZWxhdGlvblB1YmxpY2F0aW9ucyhSZWxhdGlvbkdldFJlbGlk KHJlbCkpICE9IE5JTCkKKwkJR2V0UmVsYXRpb25QdWJsaWNhdGlvbnMoUmVsYXRpb25HZXRSZWxp ZChyZWwpLCBOVUxMLCBOVUxMKSkKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJD T0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCiAJCQkJIGVycm1zZygiQUxURVIgVEFCTEUgLyBT RVQgRVhQUkVTU0lPTiBpcyBub3Qgc3VwcG9ydGVkIGZvciB2aXJ0dWFsIGdlbmVyYXRlZCBjb2x1 bW5zIGluIHRhYmxlcyB0aGF0IGFyZSBwYXJ0IG9mIGEgcHVibGljYXRpb24iKSwKQEAgLTE4ODg0 LDcgKzE4ODg0LDcgQEAgQVRQcmVwQ2hhbmdlUGVyc2lzdGVuY2UoQWx0ZXJlZFRhYmxlSW5mbyAq dGFiLCBSZWxhdGlvbiByZWwsIGJvb2wgdG9Mb2dnZWQpCiAJICogVU5MT0dHRUQsIGFzIFVOTE9H R0VEIHRhYmxlcyBjYW4ndCBiZSBwdWJsaXNoZWQuCiAJICovCiAJaWYgKCF0b0xvZ2dlZCAmJgot CQlHZXRSZWxhdGlvblB1YmxpY2F0aW9ucyhSZWxhdGlvbkdldFJlbGlkKHJlbCkpICE9IE5JTCkK KwkJR2V0UmVsYXRpb25QdWJsaWNhdGlvbnMoUmVsYXRpb25HZXRSZWxpZChyZWwpLCBOVUxMLCBO VUxMKSkKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1Rf SU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKIAkJCQkgZXJybXNnKCJjYW5ub3QgY2hhbmdlIHRhYmxl IFwiJXNcIiB0byB1bmxvZ2dlZCBiZWNhdXNlIGl0IGlzIHBhcnQgb2YgYSBwdWJsaWNhdGlvbiIs CkBAIC0yMDMyNSw2ICsyMDMyNSw3IEBAIEFURXhlY0F0dGFjaFBhcnRpdGlvbihMaXN0ICoqd3F1 ZXVlLCBSZWxhdGlvbiByZWwsIFBhcnRpdGlvbkNtZCAqY21kLAogCWNvbnN0IGNoYXIgKnRyaWdn ZXJfbmFtZTsKIAlPaWQJCQlkZWZhdWx0UGFydE9pZDsKIAlMaXN0CSAgICpwYXJ0Qm91bmRDb25z dHJhaW50OworCUxpc3QJICAgKmV4Y2VwdF9wdWJpZHMgPSBOSUw7CiAJUGFyc2VTdGF0ZSAqcHN0 YXRlID0gbWFrZV9wYXJzZXN0YXRlKE5VTEwpOwogCiAJcHN0YXRlLT5wX3NvdXJjZXRleHQgPSBj b250ZXh0LT5xdWVyeVN0cmluZzsKQEAgLTIwNDQ5LDYgKzIwNDUwLDE0IEBAIEFURXhlY0F0dGFj aFBhcnRpdGlvbihMaXN0ICoqd3F1ZXVlLCBSZWxhdGlvbiByZWwsIFBhcnRpdGlvbkNtZCAqY21k LAogCQkJCShlcnJjb2RlKEVSUkNPREVfV1JPTkdfT0JKRUNUX1RZUEUpLAogCQkJCSBlcnJtc2co ImNhbm5vdCBhdHRhY2ggdGVtcG9yYXJ5IHJlbGF0aW9uIG9mIGFub3RoZXIgc2Vzc2lvbiBhcyBw YXJ0aXRpb24iKSkpOwogCisJLyogQ2hlY2sgaWYgdGhlIHBhcnRpdG9uIGlzIHBhcnQgb2YgRVhD RVBUIGxpc3Qgb2YgYW55IHB1YmxpY2F0aW9uICovCisJR2V0UmVsYXRpb25QdWJsaWNhdGlvbnMo UmVsYXRpb25HZXRSZWxpZChhdHRhY2hyZWwpLCBOVUxMLCAmZXhjZXB0X3B1Ymlkcyk7CisJaWYg KGV4Y2VwdF9wdWJpZHMgIT0gTklMKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVS UkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCSBlcnJtc2coImNh bm5vdCBhdHRhY2ggcmVsYXRpb24gXCIlc1wiIGFzIHBhcnRpdGlvbiBiZWNhdXNlIGl0IGlzIHBh cnQgb2YgRVhDRVBUIGxpc3QgaW4gcHVibGljYXRpb24iLAorCQkJCQkJUmVsYXRpb25HZXRSZWxh dGlvbk5hbWUoYXR0YWNocmVsKSkpKTsKKwogCS8qCiAJICogQ2hlY2sgaWYgYXR0YWNocmVsIGhh cyBhbnkgaWRlbnRpdHkgY29sdW1ucyBvciBhbnkgY29sdW1ucyB0aGF0IGFyZW4ndAogCSAqIGlu IHRoZSBwYXJlbnQuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55IGIvc3Jj L2JhY2tlbmQvcGFyc2VyL2dyYW0ueQppbmRleCA3MTNlZTVjMTBhMi4uZDNjM2U5ZjU5YzYgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKKysrIGIvc3JjL2JhY2tlbmQvcGFy c2VyL2dyYW0ueQpAQCAtMjAzLDYgKzIwMyw3IEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NDQVNiaXRz KGludCBjYXNfYml0cywgaW50IGxvY2F0aW9uLCBjb25zdCBjaGFyICpjb25zdHJUeXBlLAogc3Rh dGljIFBhcnRpdGlvblN0cmF0ZWd5IHBhcnNlUGFydGl0aW9uU3RyYXRlZ3koY2hhciAqc3RyYXRl Z3ksIGludCBsb2NhdGlvbiwKIAkJCQkJCQkJCQkJCWNvcmVfeXlzY2FuX3QgeXlzY2FubmVyKTsK IHN0YXRpYyB2b2lkIHByZXByb2Nlc3NfcHViX2FsbF9vYmp0eXBlX2xpc3QoTGlzdCAqYWxsX29i amVjdHNfbGlzdCwKKwkJCQkJCQkJCQkJTGlzdCAqKnB1Ym9iamVjdHMsCiAJCQkJCQkJCQkJCWJv b2wgKmFsbF90YWJsZXMsCiAJCQkJCQkJCQkJCWJvb2wgKmFsbF9zZXF1ZW5jZXMsCiAJCQkJCQkJ CQkJCWNvcmVfeXlzY2FuX3QgeXlzY2FubmVyKTsKQEAgLTQ1NSw2ICs0NTYsNyBAQCBzdGF0aWMg Tm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNl cywgTm9kZSAqcXVlcnkpOwogCQkJCVRyaWdnZXJUcmFuc2l0aW9ucyBUcmlnZ2VyUmVmZXJlbmNp bmcKIAkJCQl2YWN1dW1fcmVsYXRpb25fbGlzdCBvcHRfdmFjdXVtX3JlbGF0aW9uX2xpc3QKIAkJ CQlkcm9wX29wdGlvbl9saXN0IHB1Yl9vYmpfbGlzdCBwdWJfYWxsX29ial90eXBlX2xpc3QKKwkJ CQlwdWJfZXhjZXB0X29ial9saXN0IG9wdF9wdWJfZXhjZXB0X2NsYXVzZQogCiAldHlwZSA8cmV0 Y2xhdXNlPiByZXR1cm5pbmdfY2xhdXNlCiAldHlwZSA8bm9kZT4JcmV0dXJuaW5nX29wdGlvbgpA QCAtNTkyLDYgKzU5NCw3IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChj aGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAldHlwZSA8bm9kZT4J dmFyX3ZhbHVlIHpvbmVfdmFsdWUKICV0eXBlIDxyb2xlc3BlYz4gYXV0aF9pZGVudCBSb2xlU3Bl YyBvcHRfZ3JhbnRlZF9ieQogJXR5cGUgPHB1YmxpY2F0aW9ub2JqZWN0c3BlYz4gUHVibGljYXRp b25PYmpTcGVjCisldHlwZSA8cHVibGljYXRpb25vYmplY3RzcGVjPiBQdWJsaWNhdGlvbkV4Y2Vw dE9ialNwZWMKICV0eXBlIDxwdWJsaWNhdGlvbmFsbG9iamVjdHNwZWM+IFB1YmxpY2F0aW9uQWxs T2JqU3BlYwogCiAldHlwZSA8a2V5d29yZD4gdW5yZXNlcnZlZF9rZXl3b3JkIHR5cGVfZnVuY19u YW1lX2tleXdvcmQKQEAgLTEwNzkyLDcgKzEwNzk1LDcgQEAgQWx0ZXJPd25lclN0bXQ6IEFMVEVS IEFHR1JFR0FURSBhZ2dyZWdhdGVfd2l0aF9hcmd0eXBlcyBPV05FUiBUTyBSb2xlU3BlYwogICoK ICAqIHB1Yl9hbGxfb2JqX3R5cGUgaXMgb25lIG9mOgogICoKLSAqCQlUQUJMRVMKKyAqCQlUQUJM RVMgW0VYQ0VQVCBbVEFCTEVdICggdGFibGUgWywgLi4uXSApXQogICoJCVNFUVVFTkNFUwogICoK ICAqIENSRUFURSBQVUJMSUNBVElPTiBGT1IgcHViX29iaiBbLCAuLi5dIFtXSVRIIG9wdGlvbnNd CkBAIC0xMDgxOCw3ICsxMDgyMSw4IEBAIENyZWF0ZVB1YmxpY2F0aW9uU3RtdDoKIAkJCQkJQ3Jl YXRlUHVibGljYXRpb25TdG10ICpuID0gbWFrZU5vZGUoQ3JlYXRlUHVibGljYXRpb25TdG10KTsK IAogCQkJCQluLT5wdWJuYW1lID0gJDM7Ci0JCQkJCXByZXByb2Nlc3NfcHViX2FsbF9vYmp0eXBl X2xpc3QoJDUsICZuLT5mb3JfYWxsX3RhYmxlcywKKwkJCQkJcHJlcHJvY2Vzc19wdWJfYWxsX29i anR5cGVfbGlzdCgkNSwgJm4tPnB1Ym9iamVjdHMsCisJCQkJCQkJCQkJCQkJJm4tPmZvcl9hbGxf dGFibGVzLAogCQkJCQkJCQkJCQkJCSZuLT5mb3JfYWxsX3NlcXVlbmNlcywKIAkJCQkJCQkJCQkJ CQl5eXNjYW5uZXIpOwogCQkJCQluLT5vcHRpb25zID0gJDY7CkBAIC0xMDg1OCw2ICsxMDg2Miw3 IEBAIFB1YmxpY2F0aW9uT2JqU3BlYzoKIAkJCQkJJCQtPnB1YnRhYmxlLT5yZWxhdGlvbiA9ICQy OwogCQkJCQkkJC0+cHVidGFibGUtPmNvbHVtbnMgPSAkMzsKIAkJCQkJJCQtPnB1YnRhYmxlLT53 aGVyZUNsYXVzZSA9ICQ0OworCQkJCQkkJC0+bG9jYXRpb24gPSBAMTsKIAkJCQl9CiAJCQl8IFRB QkxFUyBJTl9QIFNDSEVNQSBDb2xJZAogCQkJCXsKQEAgLTEwOTMzLDExICsxMDkzOCwxOSBAQCBw dWJfb2JqX2xpc3Q6CVB1YmxpY2F0aW9uT2JqU3BlYwogCQkJCQl7ICQkID0gbGFwcGVuZCgkMSwg JDMpOyB9CiAJOwogCitvcHRfcHViX2V4Y2VwdF9jbGF1c2U6CisJCQlFWENFUFQgb3B0X3RhYmxl ICcoJyBwdWJfZXhjZXB0X29ial9saXN0ICcpJwl7ICQkID0gJDQ7IH0KKwkJCXwgLypFTVBUWSov CQkJCQkJCQkJCXsgJCQgPSBOSUw7IH0KKwkJOworCiBQdWJsaWNhdGlvbkFsbE9ialNwZWM6Ci0J CQkJQUxMIFRBQkxFUworCQkJCUFMTCBUQUJMRVMgb3B0X3B1Yl9leGNlcHRfY2xhdXNlCiAJCQkJ CXsKIAkJCQkJCSQkID0gbWFrZU5vZGUoUHVibGljYXRpb25BbGxPYmpTcGVjKTsKIAkJCQkJCSQk LT5wdWJvYmp0eXBlID0gUFVCTElDQVRJT05fQUxMX1RBQkxFUzsKKwkJCQkJCSQkLT5leGNlcHRf dGFibGVzID0gJDM7CisJCQkJCQlpZigkJC0+ZXhjZXB0X3RhYmxlcyAhPSBOVUxMKQorCQkJCQkJ CXByZXByb2Nlc3NfcHVib2JqX2xpc3QoJCQtPmV4Y2VwdF90YWJsZXMsIHl5c2Nhbm5lcik7CiAJ CQkJCQkkJC0+bG9jYXRpb24gPSBAMTsKIAkJCQkJfQogCQkJCXwgQUxMIFNFUVVFTkNFUwpAQCAt MTA5NTQsNiArMTA5NjcsMjMgQEAgcHViX2FsbF9vYmpfdHlwZV9saXN0OglQdWJsaWNhdGlvbkFs bE9ialNwZWMKIAkJCQkJeyAkJCA9IGxhcHBlbmQoJDEsICQzKTsgfQogCTsKIAorUHVibGljYXRp b25FeGNlcHRPYmpTcGVjOgorCQkJIHJlbGF0aW9uX2V4cHIKKwkJCQl7CisJCQkJCSQkID0gbWFr ZU5vZGUoUHVibGljYXRpb25PYmpTcGVjKTsKKwkJCQkJJCQtPnB1Ym9ianR5cGUgPSBQVUJMSUNB VElPTk9CSl9FWENFUFRfVEFCTEU7CisJCQkJCSQkLT5wdWJ0YWJsZSA9IG1ha2VOb2RlKFB1Ymxp Y2F0aW9uVGFibGUpOworCQkJCQkkJC0+cHVidGFibGUtPmV4Y2VwdCA9IHRydWU7CisJCQkJCSQk LT5wdWJ0YWJsZS0+cmVsYXRpb24gPSAkMTsKKwkJCQkJJCQtPmxvY2F0aW9uID0gQDE7CisJCQkJ fQorCTsKKworcHViX2V4Y2VwdF9vYmpfbGlzdDogUHVibGljYXRpb25FeGNlcHRPYmpTcGVjCisJ CQkJCXsgJCQgPSBsaXN0X21ha2UxKCQxKTsgfQorCQkJfCBwdWJfZXhjZXB0X29ial9saXN0ICcs JyBQdWJsaWNhdGlvbkV4Y2VwdE9ialNwZWMKKwkJCQkJeyAkJCA9IGxhcHBlbmQoJDEsICQzKTsg fQorCTsKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKgpAQCAtMTk3OTQsOCArMTk4MjQsOSBA QCBwYXJzZVBhcnRpdGlvblN0cmF0ZWd5KGNoYXIgKnN0cmF0ZWd5LCBpbnQgbG9jYXRpb24sIGNv cmVfeXlzY2FuX3QgeXlzY2FubmVyKQogICogQWxzbywgY2hlY2tzIGlmIHRoZSBwdWJfb2JqZWN0 X3R5cGUgaGFzIGJlZW4gc3BlY2lmaWVkIG1vcmUgdGhhbiBvbmNlLgogICovCiBzdGF0aWMgdm9p ZAotcHJlcHJvY2Vzc19wdWJfYWxsX29ianR5cGVfbGlzdChMaXN0ICphbGxfb2JqZWN0c19saXN0 LCBib29sICphbGxfdGFibGVzLAotCQkJCQkJCQlib29sICphbGxfc2VxdWVuY2VzLCBjb3JlX3l5 c2Nhbl90IHl5c2Nhbm5lcikKK3ByZXByb2Nlc3NfcHViX2FsbF9vYmp0eXBlX2xpc3QoTGlzdCAq YWxsX29iamVjdHNfbGlzdCwgTGlzdCAqKnB1Ym9iamVjdHMsCisJCQkJCQkJCWJvb2wgKmFsbF90 YWJsZXMsIGJvb2wgKmFsbF9zZXF1ZW5jZXMsCisJCQkJCQkJCWNvcmVfeXlzY2FuX3QgeXlzY2Fu bmVyKQogewogCWlmICghYWxsX29iamVjdHNfbGlzdCkKIAkJcmV0dXJuOwpAQCAtMTk4MTUsNiAr MTk4NDYsNyBAQCBwcmVwcm9jZXNzX3B1Yl9hbGxfb2JqdHlwZV9saXN0KExpc3QgKmFsbF9vYmpl Y3RzX2xpc3QsIGJvb2wgKmFsbF90YWJsZXMsCiAJCQkJCQlwYXJzZXJfZXJycG9zaXRpb24ob2Jq LT5sb2NhdGlvbikpOwogCiAJCQkqYWxsX3RhYmxlcyA9IHRydWU7CisJCQkqcHVib2JqZWN0cyA9 IGxpc3RfY29uY2F0KCpwdWJvYmplY3RzLCBvYmotPmV4Y2VwdF90YWJsZXMpOwogCQl9CiAJCWVs c2UgaWYgKG9iai0+cHVib2JqdHlwZSA9PSBQVUJMSUNBVElPTl9BTExfU0VRVUVOQ0VTKQogCQl7 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5j IGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYwppbmRleCA2N2U1 NzUyMDM4Ni4uMmM0MmU0M2JjMGUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvdGFibGVzeW5jLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNh bC90YWJsZXN5bmMuYwpAQCAtNzE4LDIxICs3MTgsMjggQEAgY29weV9yZWFkX2RhdGEodm9pZCAq b3V0YnVmLCBpbnQgbWlucmVhZCwgaW50IG1heHJlYWQpCiAgKiBtZXNzYWdlIHByb3ZpZGVzIGR1 cmluZyByZXBsaWNhdGlvbi4KICAqCiAgKiBUaGlzIGZ1bmN0aW9uIGFsc28gcmV0dXJucyAoYSkg dGhlIHJlbGF0aW9uIHF1YWxpZmljYXRpb25zIHRvIGJlIHVzZWQgaW4KLSAqIHRoZSBDT1BZIGNv bW1hbmQsIGFuZCAoYikgd2hldGhlciB0aGUgcmVtb3RlIHJlbGF0aW9uIGhhcyBwdWJsaXNoZWQg YW55Ci0gKiBnZW5lcmF0ZWQgY29sdW1uLgorICogdGhlIENPUFkgY29tbWFuZCwgKGIpIHdoZXRo ZXIgdGhlIHJlbW90ZSByZWxhdGlvbiBoYXMgcHVibGlzaGVkIGFueQorICogZ2VuZXJhdGVkIGNv bHVtbiwgYW5kIChjKSBjb21wdXRlcyB0aGUgZWZmZWN0aXZlIHNldCBvZiByZWxhdGlvbnMgdG8g YmUgdXNlZAorICogYXMgQ09QWSBzb3VyY2VzIHdoZW4gZXhjbHVzaW9ucyBhcmUgcHJlc2VudC4g V2hlbiBubyBleGNsdXNpb25zIGV4aXN0LCB0aGUKKyAqIGxpc3QgcmVtYWlucyBlbXB0eSBhbmQg dGhlIHJvb3QgcmVsYXRpb24gaXMgdXNlZCBhcy1pcy4gV2hlbiBleGNsdXNpb25zCisgKiBleGlz dCwgdGhlIGxpc3QgY29udGFpbnMgbGVhZiByZWxhdGlvbnMgdGhhdCBhcmUgbm90IGV4Y2x1ZGVk IGFuZCBtdXN0IGJlCisgKiBjb21iaW5lZCB1c2luZyBVTklPTiBBTEwuCiAgKi8KIHN0YXRpYyB2 b2lkCiBmZXRjaF9yZW1vdGVfdGFibGVfaW5mbyhjaGFyICpuc3BuYW1lLCBjaGFyICpyZWxuYW1l LCBMb2dpY2FsUmVwUmVsYXRpb24gKmxyZWwsCi0JCQkJCQlMaXN0ICoqcXVhbCwgYm9vbCAqZ2Vu Y29sX3B1Ymxpc2hlZCkKKwkJCQkJCUxpc3QgKipxdWFsLCBib29sICpnZW5jb2xfcHVibGlzaGVk LAorCQkJCQkJTGlzdCAqKmVmZmVjdGl2ZV9yZWxhdGlvbnMpCiB7CiAJV2FsUmN2RXhlY1Jlc3Vs dCAqcmVzOwogCVN0cmluZ0luZm9EYXRhIGNtZDsKIAlUdXBsZVRhYmxlU2xvdCAqc2xvdDsKLQlP aWQJCQl0YWJsZVJvd1tdID0ge09JRE9JRCwgQ0hBUk9JRCwgQ0hBUk9JRH07CisJT2lkCQkJdGFi bGVSb3dbXSA9IHtPSURPSUQsIENIQVJPSUQsIENIQVJPSUQsIEJPT0xPSUR9OwogCU9pZAkJCWF0 dHJSb3dbXSA9IHtJTlQyT0lELCBURVhUT0lELCBPSURPSUQsIEJPT0xPSUQsIEJPT0xPSUR9Owog CU9pZAkJCXF1YWxSb3dbXSA9IHtURVhUT0lEfTsKKwlPaWQJCQlmaWx0ZXJ0YWJsZVJvd1tdID0g e1RFWFRPSUQsIFRFWFRPSUR9OwogCWJvb2wJCWlzbnVsbDsKIAlpbnQJCQluYXR0OworCWJvb2wJ CWlzX3BhcnRpdGlvbjsKIAlTdHJpbmdJbmZvCXB1Yl9uYW1lcyA9IE5VTEw7CiAJQml0bWFwc2V0 ICAqaW5jbHVkZWRfY29scyA9IE5VTEw7CiAJaW50CQkJc2VydmVyX3ZlcnNpb24gPSB3YWxyY3Zf c2VydmVyX3ZlcnNpb24oTG9nUmVwV29ya2VyV2FsUmN2Q29ubik7CkBAIC03NDIsNyArNzQ5LDcg QEAgZmV0Y2hfcmVtb3RlX3RhYmxlX2luZm8oY2hhciAqbnNwbmFtZSwgY2hhciAqcmVsbmFtZSwg TG9naWNhbFJlcFJlbGF0aW9uICpscmVsLAogCiAJLyogRmlyc3QgZmV0Y2ggT2lkIGFuZCByZXBs aWNhIGlkZW50aXR5LiAqLwogCWluaXRTdHJpbmdJbmZvKCZjbWQpOwotCWFwcGVuZFN0cmluZ0lu Zm8oJmNtZCwgIlNFTEVDVCBjLm9pZCwgYy5yZWxyZXBsaWRlbnQsIGMucmVsa2luZCIKKwlhcHBl bmRTdHJpbmdJbmZvKCZjbWQsICJTRUxFQ1QgYy5vaWQsIGMucmVscmVwbGlkZW50LCBjLnJlbGtp bmQsIGMucmVsaXNwYXJ0aXRpb24iCiAJCQkJCSAiICBGUk9NIHBnX2NhdGFsb2cucGdfY2xhc3Mg YyIKIAkJCQkJICIgIElOTkVSIEpPSU4gcGdfY2F0YWxvZy5wZ19uYW1lc3BhY2UgbiIKIAkJCQkJ ICIgICAgICAgIE9OIChjLnJlbG5hbWVzcGFjZSA9IG4ub2lkKSIKQEAgLTc3Miw2ICs3NzksOCBA QCBmZXRjaF9yZW1vdGVfdGFibGVfaW5mbyhjaGFyICpuc3BuYW1lLCBjaGFyICpyZWxuYW1lLCBM b2dpY2FsUmVwUmVsYXRpb24gKmxyZWwsCiAJQXNzZXJ0KCFpc251bGwpOwogCWxyZWwtPnJlbGtp bmQgPSBEYXR1bUdldENoYXIoc2xvdF9nZXRhdHRyKHNsb3QsIDMsICZpc251bGwpKTsKIAlBc3Nl cnQoIWlzbnVsbCk7CisJaXNfcGFydGl0aW9uID0gRGF0dW1HZXRCb29sKHNsb3RfZ2V0YXR0cihz bG90LCA0LCAmaXNudWxsKSk7CisJQXNzZXJ0KCFpc251bGwpOwogCiAJRXhlY0Ryb3BTaW5nbGVU dXBsZVRhYmxlU2xvdChzbG90KTsKIAl3YWxyY3ZfY2xlYXJfcmVzdWx0KHJlcyk7CkBAIC05NTYs NiArOTY1LDExMCBAQCBmZXRjaF9yZW1vdGVfdGFibGVfaW5mbyhjaGFyICpuc3BuYW1lLCBjaGFy ICpyZWxuYW1lLCBMb2dpY2FsUmVwUmVsYXRpb24gKmxyZWwsCiAKIAl3YWxyY3ZfY2xlYXJfcmVz dWx0KHJlcyk7CiAKKwlpZiAoc2VydmVyX3ZlcnNpb24gPj0gMTkwMDAwICYmICFpc19wYXJ0aXRp b24gJiYKKwkJbHJlbC0+cmVsa2luZCA9PSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFKQorCXsK KwkJcmVzZXRTdHJpbmdJbmZvKCZjbWQpOworCisJCS8qCisJCSAqIFRoaXMgcXVlcnkgcmVjdXJz aXZlbHkgdHJhdmVyc2VzIHRoZSBpbmhlcml0YW5jZSAocGFydGl0aW9uKSB0cmVlCisJCSAqIHN0 YXJ0aW5nIGZyb20gdGhlIGdpdmVuIHRhYmxlIE9JRCBhbmQgZGV0ZXJtaW5lcyB3aGljaCBsZWFm CisJCSAqIHJlbGF0aW9ucyBzaG91bGQgYmUgaW5jbHVkZWQgZm9yIHJlcGxpY2F0aW9uLiBFeGNs dXNpb24gcHJvcGFnYXRlcworCQkgKiBmcm9tIHBhcmVudCB0byBjaGlsZCwgYW5kIGEgcmVsYXRp b24gaXMgYWxzbyB0cmVhdGVkIGFzIGV4Y2x1ZGVkIGlmCisJCSAqIGl0IGlzIGV4cGxpY2l0bHkg bWFya2VkIHdpdGggcHJleGNlcHQgPSB0cnVlIGluIHBnX3B1YmxpY2F0aW9uX3JlbAorCQkgKiBm b3IgdGhlIHNwZWNpZmllZCBwdWJsaWNhdGlvbnMuIFRoZSBmaW5hbCByZXN1bHQgcmV0dXJucyBv bmx5CisJCSAqIG5vbiBleGNsdWRlZCBsZWFmIHJlbGF0aW9ucy4KKwkJICovCisJCWFwcGVuZFN0 cmluZ0luZm8oJmNtZCwKKwkJCSJXSVRIIFJFQ1VSU0lWRSBicmFuY2hfc2VhcmNoIEFTIChcbiIK KwkJCSIgU0VMRUNUICV1OjpvaWQgQVMgb2lkLCBmYWxzZSBBUyBpc19leGNsdWRlZFxuIgorCQkJ IiBVTklPTiBBTExcbiIKKwkJCSIgU0VMRUNUIGkuaW5ocmVsaWQgQVMgb2lkLFxuIgorCQkJIiAg ICAgICAgcGFyZW50LmlzX2V4Y2x1ZGVkXG4iCisJCQkiICAgICAgICBPUiBFWElTVFMgKFxuIgor CQkJIiAgICAgICAgICAgIFNFTEVDVCAxXG4iCisJCQkiICAgICAgICAgICAgRlJPTSBwZ19wdWJs aWNhdGlvbl9yZWwgcHJcbiIKKwkJCSIgICAgICAgICAgICBKT0lOIHBnX3B1YmxpY2F0aW9uIHAg T04gcC5vaWQgPSBwci5wcnB1YmlkXG4iCisJCQkiICAgICAgICAgICAgV0hFUkUgcHIucHJyZWxp ZCA9IGkuaW5ocmVsaWRcbiIKKwkJCSIgICAgICAgICAgICAgIEFORCBwci5wcmV4Y2VwdCA9IHRy dWVcbiIKKwkJCSIgICAgICAgICAgICAgIEFORCBwLnB1Ym5hbWUgSU4gKCAlcyApXG4iCisJCQki ICAgICAgICApIEFTIGlzX2V4Y2x1ZGVkXG4iCisJCQkiIEZST00gcGdfaW5oZXJpdHMgaVxuIgor CQkJIiBKT0lOIGJyYW5jaF9zZWFyY2ggcGFyZW50XG4iCisJCQkiICAgT04gaS5pbmhwYXJlbnQg PSBwYXJlbnQub2lkXG4iCisJCQkiKVxuIgorCQkJIiBTRUxFQ1Qgbi5uc3BuYW1lIEFTIHNjaGVt YW5hbWUsIGMucmVsbmFtZSBBUyByZWxuYW1lXG4iCisJCQkiIEZST00gKFxuIgorCQkJIiAgICAg U0VMRUNUIGJzLiosIGJvb2xfb3IoYnMuaXNfZXhjbHVkZWQpIE9WRVIgKCkgQVMgaGFzX2V4Y2x1 c2lvblxuIgorCQkJIiAgICAgRlJPTSBicmFuY2hfc2VhcmNoIGJzXG4iCisJCQkiICkgYnNcbiIK KwkJCSIgSk9JTiBwZ19jbGFzcyBjIE9OIGMub2lkID0gYnMub2lkXG4iCisJCQkiIEpPSU4gcGdf bmFtZXNwYWNlIG4gT04gbi5vaWQgPSBjLnJlbG5hbWVzcGFjZVxuIgorCQkJIiBXSEVSRSBicy5p c19leGNsdWRlZCA9IGZhbHNlXG4iCisJCQkiICAgQU5EIChcbiIKKwkJCSIgICAgICAgICAoYnMu aGFzX2V4Y2x1c2lvbiA9IGZhbHNlIEFORCBicy5vaWQgPSAldTo6b2lkKVxuIgorCQkJIiAgICAg IE9SIChicy5oYXNfZXhjbHVzaW9uID0gdHJ1ZSBBTkQgTk9UIEVYSVNUUyAoXG4iCisJCQkiICAg ICAgICAgICAgIFNFTEVDVCAxXG4iCisJCQkiICAgICAgICAgICAgIEZST00gcGdfaW5oZXJpdHNc biIKKwkJCSIgICAgICAgICAgICAgV0hFUkUgaW5ocGFyZW50ID0gYnMub2lkXG4iCisJCQkiICAg ICAgICAgKSlcbiIKKwkJCSIgICApOyIsCisJCQlscmVsLT5yZW1vdGVpZCwKKwkJCXB1Yl9uYW1l cy0+ZGF0YSwKKwkJCWxyZWwtPnJlbW90ZWlkCisJCSk7CisKKwkJZWxvZyhMT0csICJFeGVjdXRp bmcgcXVlcnkgdG8gZ2V0IHRoZSB0YWJsZXM6XG4lcyIsIGNtZC5kYXRhKTsKKwkJcmVzID0gd2Fs cmN2X2V4ZWMoTG9nUmVwV29ya2VyV2FsUmN2Q29ubiwgY21kLmRhdGEsCisJCQkJCQkgIGxlbmd0 aG9mKGZpbHRlcnRhYmxlUm93KSwgZmlsdGVydGFibGVSb3cpOworCisJCWlmIChyZXMtPnN0YXR1 cyAhPSBXQUxSQ1ZfT0tfVFVQTEVTKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJZXJyY29kZShF UlJDT0RFX0NPTk5FQ1RJT05fRkFJTFVSRSksCisJCQkJCWVycm1zZygiY291bGQgbm90IGdldCBu b24gZXhjbHVkZWQgdGFibGUgbGlzdCBmb3IgdGFibGUgXCIlcy4lc1wiIGZyb20gcHVibGlzaGVy OiAlcyIsCisJCQkJCQkJbnNwbmFtZSwgcmVsbmFtZSwgcmVzLT5lcnIpKTsKKworCQkvKgorCQkg KiBTdG9yZSB0aGUgdGFibGVzIGFzIGEgbGlzdCBvZiBzY2hlbWFuYW1lIGFuZCB0YWJsZW5hbWUu CisJCSAqLworCQluYXR0ID0gMDsKKwkJc2xvdCA9IE1ha2VTaW5nbGVUdXBsZVRhYmxlU2xvdChy ZXMtPnR1cGxlZGVzYywgJlRUU09wc01pbmltYWxUdXBsZSk7CisJCXdoaWxlICh0dXBsZXN0b3Jl X2dldHR1cGxlc2xvdChyZXMtPnR1cGxlc3RvcmUsIHRydWUsIGZhbHNlLCBzbG90KSkKKwkJewor CQkJUXVhbGlmaWVkUmVsYXRpb25OYW1lICpyZWxpbmZvID0gcGFsbG9jX29iamVjdChRdWFsaWZp ZWRSZWxhdGlvbk5hbWUpOworCisJCQlyZWxpbmZvLT5zY2hlbWFuYW1lID0gVGV4dERhdHVtR2V0 Q1N0cmluZyhzbG90X2dldGF0dHIoc2xvdCwgMSwgJmlzbnVsbCkpOworCQkJQXNzZXJ0KCFpc251 bGwpOworCQkJcmVsaW5mby0+cmVsbmFtZSA9IFRleHREYXR1bUdldENTdHJpbmcoc2xvdF9nZXRh dHRyKHNsb3QsIDIsICZpc251bGwpKTsKKwkJCUFzc2VydCghaXNudWxsKTsKKworCQkJKmVmZmVj dGl2ZV9yZWxhdGlvbnMgPSBsYXBwZW5kKCplZmZlY3RpdmVfcmVsYXRpb25zLCByZWxpbmZvKTsK KworCQkJRXhlY0NsZWFyVHVwbGUoc2xvdCk7CisJCX0KKworCQlFeGVjRHJvcFNpbmdsZVR1cGxl VGFibGVTbG90KHNsb3QpOworCisJCS8qCisJCSAqIElmIHRoZXJlIGlzIGV4YWN0bHkgb25lIGl0 ZW0gaW4gdGhlIGV4Y2x1c2lvbiBsaXN0IGFuZCBpdCBlcXVhbHMKKwkJICogdGhlIHRhYmxlIGJl aW5nIHByb2Nlc3NlZCwgdGhhdCBtZWFucyBubyBhY3R1YWwgZXhjbHVzaW9uIG9jY3VycmVkLgor CQkgKi8KKwkJaWYgKGxpc3RfbGVuZ3RoKCplZmZlY3RpdmVfcmVsYXRpb25zKSA9PSAxKQorCQl7 CisJCQlRdWFsaWZpZWRSZWxhdGlvbk5hbWUgKnJlbGluZm87CisKKwkJCXJlbGluZm8gPSBsaW5p dGlhbCgqZWZmZWN0aXZlX3JlbGF0aW9ucyk7CisJCQlpZiAoc3RyY21wKG5zcG5hbWUsIHJlbGlu Zm8tPnNjaGVtYW5hbWUpID09IDAgJiYKKwkJCQlzdHJjbXAocmVsbmFtZSwgcmVsaW5mby0+cmVs bmFtZSkgPT0gMCkKKwkJCXsKKwkJCQlwZnJlZShyZWxpbmZvLT5zY2hlbWFuYW1lKTsKKwkJCQlw ZnJlZShyZWxpbmZvLT5yZWxuYW1lKTsKKwkJCQlsaXN0X2ZyZWVfZGVlcCgqZWZmZWN0aXZlX3Jl bGF0aW9ucyk7CisJCQkJKmVmZmVjdGl2ZV9yZWxhdGlvbnMgPSBOSUw7CisJCQl9CisJCX0KKwl9 CisKIAkvKgogCSAqIEdldCByZWxhdGlvbidzIHJvdyBmaWx0ZXIgZXhwcmVzc2lvbnMuIERJU1RJ TkNUIGF2b2lkcyB0aGUgc2FtZQogCSAqIGV4cHJlc3Npb24gb2YgYSB0YWJsZSBpbiBtdWx0aXBs ZSBwdWJsaWNhdGlvbnMgZnJvbSBiZWluZyBpbmNsdWRlZApAQCAtMTA0NSw2ICsxMTU4LDcgQEAg Y29weV90YWJsZShSZWxhdGlvbiByZWwpCiAJTG9naWNhbFJlcFJlbE1hcEVudHJ5ICpyZWxtYXBl bnRyeTsKIAlMb2dpY2FsUmVwUmVsYXRpb24gbHJlbDsKIAlMaXN0CSAgICpxdWFsID0gTklMOwor CUxpc3QJICAgKmVmZmVjdGl2ZV9yZWxhdGlvbnMgPSBOSUw7CiAJV2FsUmN2RXhlY1Jlc3VsdCAq cmVzOwogCVN0cmluZ0luZm9EYXRhIGNtZDsKIAlDb3B5RnJvbVN0YXRlIGNzdGF0ZTsKQEAgLTEw NTYsNyArMTE3MCw3IEBAIGNvcHlfdGFibGUoUmVsYXRpb24gcmVsKQogCS8qIEdldCB0aGUgcHVi bGlzaGVyIHJlbGF0aW9uIGluZm8uICovCiAJZmV0Y2hfcmVtb3RlX3RhYmxlX2luZm8oZ2V0X25h bWVzcGFjZV9uYW1lKFJlbGF0aW9uR2V0TmFtZXNwYWNlKHJlbCkpLAogCQkJCQkJCVJlbGF0aW9u R2V0UmVsYXRpb25OYW1lKHJlbCksICZscmVsLCAmcXVhbCwKLQkJCQkJCQkmZ2VuY29sX3B1Ymxp c2hlZCk7CisJCQkJCQkJJmdlbmNvbF9wdWJsaXNoZWQsICZlZmZlY3RpdmVfcmVsYXRpb25zKTsK IAogCS8qIFB1dCB0aGUgcmVsYXRpb24gaW50byByZWxtYXAuICovCiAJbG9naWNhbHJlcF9yZWxt YXBfdXBkYXRlKCZscmVsKTsKQEAgLTEwNjgsMTIgKzExODIsNjQgQEAgY29weV90YWJsZShSZWxh dGlvbiByZWwpCiAJLyogU3RhcnQgY29weSBvbiB0aGUgcHVibGlzaGVyLiAqLwogCWluaXRTdHJp bmdJbmZvKCZjbWQpOwogCisKKwlpZiAoZWZmZWN0aXZlX3JlbGF0aW9ucyAmJiBsaXN0X2xlbmd0 aChlZmZlY3RpdmVfcmVsYXRpb25zKSkKKwl7CisJCWJvb2wgZmlyc3QgPSB0cnVlOworCisJCS8q CisJCSAqIEJ1aWxkIGEgc2luZ2xlIENPUFkgY29tbWFuZCB0byBzeW5jaHJvbml6ZSBhbGwgcmVz b2x2ZWQgcmVsYXRpb25zCisJCSAqIGludG8gdGhlIHJvb3QgdGFibGUuCisJCSAqCisJCSAqIFRo ZSBhcnJheSAnZWZmZWN0aXZlX3JlbGF0aW9ucycgY29udGFpbnMgdGhlIGxlYWYgdGFibGVzIG9m CisJCSAqIHBhcnRpdGlvbiBoaWVyYXJjaGllcywgd2l0aCBleGNsdWRlZCBzdWJ0cmVlcyByZW1v dmVkIGFjY29yZGluZyB0bworCQkgKiB0aGUgRVhDRVBUIGNsYXVzZXMuIFRoaXMgYXBwbGllcyBv bmx5IHdoZW4KKwkJICogJ3B1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290JyBpcyBlbmFibGVkLCBz aW5jZSB0aGUgaW5pdGlhbCBzeW5jIG11c3QKKwkJICogcm91dGUgYWxsIGNoYW5nZXMgdG8gdGhl IHJvb3QgdGFibGUuCisJCSAqCisJCSAqIFdlIGNvbnN0cnVjdCBhIFVOSU9OIEFMTCBxdWVyeSB0 aGF0IGNvbWJpbmVzIGRhdGEgZnJvbSBtdWx0aXBsZSBsZWFmCisJCSAqIHJlbGF0aW9ucyBpbnRv IG9uZSBzdWItQ09QWSBzdGF0ZW1lbnQsIGVuc3VyaW5nIGFsbCByb3dzIGFyZSBjb3BpZWQKKwkJ ICogY29uc2lzdGVudGx5IGludG8gdGhlIHJvb3QgdGFibGUuCisJCSAqLworCQlhcHBlbmRTdHJp bmdJbmZvU3RyaW5nKCZjbWQsICJDT1BZIChcbiIpOworCQlmb3JlYWNoX3B0cihRdWFsaWZpZWRS ZWxhdGlvbk5hbWUsIHJlbGluZm8sIGVmZmVjdGl2ZV9yZWxhdGlvbnMpCisJCXsKKwkJCWlmICgh Zmlyc3QpCisJCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmY21kLCAiVU5JT04gQUxMXG4iKTsK KworCQkJZmlyc3QgPSBmYWxzZTsKKworCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmY21kLCAi U0VMRUNUICIpOworCisJCQkvKiBJZiB0aGUgdGFibGUgaGFzIGNvbHVtbnMsIHRoZW4gc3BlY2lm eSB0aGUgY29sdW1ucyAqLworCQkJaWYgKGxyZWwubmF0dHMpCisJCQl7CisJCQkJZm9yIChpbnQg aSA9IDA7IGkgPCBscmVsLm5hdHRzOyBpKyspCisJCQkJeworCQkJCQlpZiAoaSA+IDApCisJCQkJ CQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZjbWQsICIsICIpOworCisJCQkJCWFwcGVuZFN0cmlu Z0luZm9TdHJpbmcoJmNtZCwgcXVvdGVfaWRlbnRpZmllcihscmVsLmF0dG5hbWVzW2ldKSk7CisJ CQkJfQorCQkJfQorCQkJZWxzZQorCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmNtZCwgIiAq ICIpOworCisJCQlhcHBlbmRTdHJpbmdJbmZvKCZjbWQsICIgRlJPTSAgJXNcbiIsCisJCQkJCQkJ IHF1b3RlX3F1YWxpZmllZF9pZGVudGlmaWVyKHJlbGluZm8tPnNjaGVtYW5hbWUsCisJCQkJCQkJ CQkJCQkJCXJlbGluZm8tPnJlbG5hbWUpKTsKKwkJfQorCisJCWFwcGVuZFN0cmluZ0luZm9TdHJp bmcoJmNtZCwgIilcbiIpOworCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZjbWQsICJUTyBTVERP VVQiKTsKKwl9CiAJLyogUmVndWxhciBvciBwYXJ0aXRpb25lZCB0YWJsZSB3aXRoIG5vIHJvdyBm aWx0ZXIgb3IgZ2VuZXJhdGVkIGNvbHVtbnMgKi8KLQlpZiAoKGxyZWwucmVsa2luZCA9PSBSRUxL SU5EX1JFTEFUSU9OIHx8IGxyZWwucmVsa2luZCA9PSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxF KQotCQkmJiBxdWFsID09IE5JTCAmJiAhZ2VuY29sX3B1Ymxpc2hlZCkKKwllbHNlIGlmICgobHJl bC5yZWxraW5kID09IFJFTEtJTkRfUkVMQVRJT04gfHwKKwkJCSAgbHJlbC5yZWxraW5kID09IFJF TEtJTkRfUEFSVElUSU9ORURfVEFCTEUpICYmCisJCQkgcXVhbCA9PSBOSUwgJiYgIWdlbmNvbF9w dWJsaXNoZWQpCiAJewogCQlhcHBlbmRTdHJpbmdJbmZvKCZjbWQsICJDT1BZICVzIiwKLQkJCQkJ CSBxdW90ZV9xdWFsaWZpZWRfaWRlbnRpZmllcihscmVsLm5zcG5hbWUsIGxyZWwucmVsbmFtZSkp OworCQkJCQkJcXVvdGVfcXVhbGlmaWVkX2lkZW50aWZpZXIobHJlbC5uc3BuYW1lLCBscmVsLnJl bG5hbWUpKTsKIAogCQkvKiBJZiB0aGUgdGFibGUgaGFzIGNvbHVtbnMsIHRoZW4gc3BlY2lmeSB0 aGUgY29sdW1ucyAqLwogCQlpZiAobHJlbC5uYXR0cykKQEAgLTExNTksNiArMTMyNSw3IEBAIGNv cHlfdGFibGUoUmVsYXRpb24gcmVsKQogCX0KIAogCXJlcyA9IHdhbHJjdl9leGVjKExvZ1JlcFdv cmtlcldhbFJjdkNvbm4sIGNtZC5kYXRhLCAwLCBOVUxMKTsKKwllbG9nKExPRywgIlRhYmxlc3lu YyB3b3JrZXI6IEV4ZWN1dGluZyBxdWVyeSB0byBnZXQgdGhlIGluaXRpYWwgc3luYyBkYXRhOlxu JXMiLCBjbWQuZGF0YSk7CiAJcGZyZWUoY21kLmRhdGEpOwogCWlmIChyZXMtPnN0YXR1cyAhPSBX QUxSQ1ZfT0tfQ09QWV9PVVQpCiAJCWVyZXBvcnQoRVJST1IsCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jIGIvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYwppbmRleCA5ZWU4OTQ5ZTA0MC4uOWU0Zjk0NmM2Mzgg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMK KysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYwpAQCAtMjA4 OCw3ICsyMDg4LDcgQEAgZ2V0X3JlbF9zeW5jX2VudHJ5KFBHT3V0cHV0RGF0YSAqZGF0YSwgUmVs YXRpb24gcmVsYXRpb24pCiAJaWYgKCFlbnRyeS0+cmVwbGljYXRlX3ZhbGlkKQogCXsKIAkJT2lk CQkJc2NoZW1hSWQgPSBnZXRfcmVsX25hbWVzcGFjZShyZWxpZCk7Ci0JCUxpc3QJICAgKnB1Ymlk cyA9IEdldFJlbGF0aW9uUHVibGljYXRpb25zKHJlbGlkKTsKKwkJTGlzdAkgICAqcHViaWRzID0g TklMOwogCiAJCS8qCiAJCSAqIFdlIGRvbid0IGFjcXVpcmUgYSBsb2NrIG9uIHRoZSBuYW1lc3Bh Y2Ugc3lzdGVtIHRhYmxlIGFzIHdlIGJ1aWxkCkBAIC0yMTAzLDYgKzIxMDMsOCBAQCBnZXRfcmVs X3N5bmNfZW50cnkoUEdPdXRwdXREYXRhICpkYXRhLCBSZWxhdGlvbiByZWxhdGlvbikKIAkJY2hh cgkJcmVsa2luZCA9IGdldF9yZWxfcmVsa2luZChyZWxpZCk7CiAJCUxpc3QJICAgKnJlbF9wdWJs aWNhdGlvbnMgPSBOSUw7CiAKKwkJR2V0UmVsYXRpb25QdWJsaWNhdGlvbnMocmVsaWQsICZwdWJp ZHMsIE5VTEwpOworCiAJCS8qIFJlbG9hZCBwdWJsaWNhdGlvbnMgaWYgbmVlZGVkIGJlZm9yZSB1 c2UuICovCiAJCWlmICghcHVibGljYXRpb25zX3ZhbGlkKQogCQl7CkBAIC0yMjAyLDIwICsyMjA0 LDQzIEBAIGdldF9yZWxfc3luY19lbnRyeShQR091dHB1dERhdGEgKmRhdGEsIFJlbGF0aW9uIHJl bGF0aW9uKQogCQkJLyoKIAkJCSAqIElmIHRoaXMgaXMgYSBGT1IgQUxMIFRBQkxFUyBwdWJsaWNh dGlvbiwgcGljayB0aGUgcGFydGl0aW9uCiAJCQkgKiByb290IGFuZCBzZXQgdGhlIGFuY2VzdG9y IGxldmVsIGFjY29yZGluZ2x5LgorCQkJICoKKwkJCSAqIElmIHRoaXMgaXMgYSBGT1IgQUxMIFRB QkxFUyBwdWJsaWNhdGlvbiBhbmQgaXQgaGFzIGFuIEVYQ0VQVAorCQkJICogVEFCTEUgbGlzdAor CQkJICogMS4gRm9yIGEgbm9ybWFsIHRhYmxlIG9yIGEgcGFydGl0aW9uZWQgdGFibGUsIGlmIGl0 IGlzIHBhcnQgb2YKKwkJCSAqIAkgIHRoZSBFWENFUFQgVEFCTEUgbGlzdCwgd2UgZG9uJ3QgcHVi bGlzaCBpdC4KKwkJCSAqIDIuIEZvciBhIHBhcnRpdGlvbiwgaWYgdGhlIHRvcG1vc3QgYW5jZXN0 b3IgaXMgcGFydCBvZgorCQkJICogCSAgdGhlIEVYQ0VQVCBUQUJMRSBsaXN0LCB3ZSBkb24ndCBw dWJsaXNoIGl0LgorCQkJICogVGhpcyBpcyBhY2hpZXZlZCBieSBrZWVwaW5nIHRoZSB2YXJpYWJs ZSAicHVibGlzaCIgc2V0IHRvCisJCQkgKiBmYWxzZS4gQW5kIGV2ZW50dWFsbHksIGVudHJ5LT5w dWJhY3Rpb25zIHdpbGwgcmVtYWluIGFsbCBmYWxzZQorCQkJICogZm9yIHRoaXMgcHVibGljYXRp b24uCiAJCQkgKi8KIAkJCWlmIChwdWItPmFsbHRhYmxlcykKIAkJCXsKLQkJCQlwdWJsaXNoID0g dHJ1ZTsKLQkJCQlpZiAocHViLT5wdWJ2aWFyb290ICYmIGFtX3BhcnRpdGlvbikKKwkJCQlMaXN0 CSAgICpleGNlcHRwdWJpZHMgPSBOSUw7CisJCQkJTGlzdAkgICAqYW5jZXN0b3JzID0gZ2V0X3Bh cnRpdGlvbl9hbmNlc3RvcnMocmVsaWQpOworCQkJCU9pZAkJCXJvb3RfcmVsaWQgPSByZWxpZDsK KworCQkJCWlmIChhbV9wYXJ0aXRpb24pCiAJCQkJewotCQkJCQlMaXN0CSAgICphbmNlc3RvcnMg PSBnZXRfcGFydGl0aW9uX2FuY2VzdG9ycyhyZWxpZCk7CisJCQkJCXJvb3RfcmVsaWQgPSBsbGFz dF9vaWQoYW5jZXN0b3JzKTsKKworCQkJCQlmb3JlYWNoX29pZChhbmNlc3RvciwgYW5jZXN0b3Jz KQorCQkJCQkJR2V0UmVsYXRpb25QdWJsaWNhdGlvbnMoYW5jZXN0b3IsIE5VTEwsICZleGNlcHRw dWJpZHMpOwogCi0JCQkJCXB1Yl9yZWxpZCA9IGxsYXN0X29pZChhbmNlc3RvcnMpOwotCQkJCQlh bmNlc3Rvcl9sZXZlbCA9IGxpc3RfbGVuZ3RoKGFuY2VzdG9ycyk7CisJCQkJCWlmIChwdWItPnB1 YnZpYXJvb3QpCisJCQkJCXsKKwkJCQkJCXB1Yl9yZWxpZCA9IHJvb3RfcmVsaWQ7CisJCQkJCQlh bmNlc3Rvcl9sZXZlbCA9IGxpc3RfbGVuZ3RoKGFuY2VzdG9ycyk7CisJCQkJCX0KIAkJCQl9Ci0J CQl9CiAKLQkJCWlmICghcHVibGlzaCkKKwkJCQlpZiAoIWxpc3RfbWVtYmVyX29pZChleGNlcHRw dWJpZHMsIHB1Yi0+b2lkKSkKKwkJCQkJcHVibGlzaCA9IHRydWU7CisKKwkJCQlsaXN0X2ZyZWUo ZXhjZXB0cHViaWRzKTsKKwkJCX0KKwkJCWVsc2UgaWYgKCFwdWJsaXNoKQogCQkJewogCQkJCWJv b2wJCWFuY2VzdG9yX3B1Ymxpc2hlZCA9IGZhbHNlOwogCkBAIC0yMjU5LDYgKzIyODQsOSBAQCBn ZXRfcmVsX3N5bmNfZW50cnkoUEdPdXRwdXREYXRhICpkYXRhLCBSZWxhdGlvbiByZWxhdGlvbikK IAkJCSAqIERvbid0IHB1Ymxpc2ggY2hhbmdlcyBmb3IgcGFydGl0aW9uZWQgdGFibGVzLCBiZWNh dXNlCiAJCQkgKiBwdWJsaXNoaW5nIHRob3NlIG9mIGl0cyBwYXJ0aXRpb25zIHN1ZmZpY2VzLCB1 bmxlc3MgcGFydGl0aW9uCiAJCQkgKiBjaGFuZ2VzIHdvbid0IGJlIHB1Ymxpc2hlZCBkdWUgdG8g cHVidmlhcm9vdCBiZWluZyBzZXQuCisJCQkgKgorCQkJICogSWYgdGhlIHJlbGF0aW9uIGlzIHBh cnQgb2YgRVhDRVBUIFRBQkxFIGxpc3Qgb2YgYSBwdWJsaWNhdGlvbiwKKwkJCSAqIHRoZSAncHVi bGlzaCcgdmFyaWFibGUgaXMgYWxyZWFkeSBzZXQgdG8gZmFsc2UuCiAJCQkgKi8KIAkJCWlmIChw dWJsaXNoICYmCiAJCQkJKHJlbGtpbmQgIT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSB8fCBw dWItPnB1YnZpYXJvb3QpKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVs Y2FjaGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMKaW5kZXggNmI2MzRj OWZmZjEuLmVjN2Y4MmZiY2RjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9y ZWxjYWNoZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMKQEAgLTU3 ODgsNyArNTc4OCw5IEBAIFJlbGF0aW9uR2V0RXhjbHVzaW9uSW5mbyhSZWxhdGlvbiBpbmRleFJl bGF0aW9uLAogdm9pZAogUmVsYXRpb25CdWlsZFB1YmxpY2F0aW9uRGVzYyhSZWxhdGlvbiByZWxh dGlvbiwgUHVibGljYXRpb25EZXNjICpwdWJkZXNjKQogewotCUxpc3QJICAgKnB1Ym9pZHM7CisJ TGlzdAkgICAqcHVib2lkcyA9IE5JTDsKKwlMaXN0CSAgICpleGNlcHRwdWJvaWRzID0gTklMOwor CUxpc3QJICAgKmFsbHRhYmxlc3B1Ym9pZHM7CiAJTGlzdENlbGwgICAqbGM7CiAJTWVtb3J5Q29u dGV4dCBvbGRjeHQ7CiAJT2lkCQkJc2NoZW1haWQ7CkBAIC01ODI2LDcgKzU4MjgsNyBAQCBSZWxh dGlvbkJ1aWxkUHVibGljYXRpb25EZXNjKFJlbGF0aW9uIHJlbGF0aW9uLCBQdWJsaWNhdGlvbkRl c2MgKnB1YmRlc2MpCiAJcHViZGVzYy0+Z2VuY29sc192YWxpZF9mb3JfZGVsZXRlID0gdHJ1ZTsK IAogCS8qIEZldGNoIHRoZSBwdWJsaWNhdGlvbiBtZW1iZXJzaGlwIGluZm8uICovCi0JcHVib2lk cyA9IEdldFJlbGF0aW9uUHVibGljYXRpb25zKHJlbGlkKTsKKwlHZXRSZWxhdGlvblB1YmxpY2F0 aW9ucyhyZWxpZCwgJnB1Ym9pZHMsICZleGNlcHRwdWJvaWRzKTsKIAlzY2hlbWFpZCA9IFJlbGF0 aW9uR2V0TmFtZXNwYWNlKHJlbGF0aW9uKTsKIAlwdWJvaWRzID0gbGlzdF9jb25jYXRfdW5pcXVl X29pZChwdWJvaWRzLCBHZXRTY2hlbWFQdWJsaWNhdGlvbnMoc2NoZW1haWQpKTsKIApAQCAtNTgz NSwxOSArNTgzNywzMSBAQCBSZWxhdGlvbkJ1aWxkUHVibGljYXRpb25EZXNjKFJlbGF0aW9uIHJl bGF0aW9uLCBQdWJsaWNhdGlvbkRlc2MgKnB1YmRlc2MpCiAJCS8qIEFkZCBwdWJsaWNhdGlvbnMg dGhhdCB0aGUgYW5jZXN0b3JzIGFyZSBpbiB0b28uICovCiAJCWFuY2VzdG9ycyA9IGdldF9wYXJ0 aXRpb25fYW5jZXN0b3JzKHJlbGlkKTsKIAorCQkvKgorCQkgKiBPbmx5IHRoZSB0b3Btb3N0IGFu Y2VzdG9yIG9mIGEgcGFydGl0aW9uZWQgdGFibGUgY2FuIGJlIHNwZWNpZmllZAorCQkgKiBpbiBF WENFUFQgVEFCTEVTIGNsYXVzZSBvZiBhIEZPUiBBTEwgVEFCTEVTIHB1YmxpY2F0aW9uLiBTbyBm ZXRjaAorCQkgKiB0aGUgcHVibGljYXRpb25zIGV4Y2x1ZGluZyB0aGUgdG9wbW9zdCBhbmNlc3Rv ciBvbmx5LgorCQkgKi8KKwkJR2V0UmVsYXRpb25QdWJsaWNhdGlvbnMobGxhc3Rfb2lkKGFuY2Vz dG9ycyksIE5VTEwsICZleGNlcHRwdWJvaWRzKTsKKwogCQlmb3JlYWNoKGxjLCBhbmNlc3RvcnMp CiAJCXsKIAkJCU9pZAkJCWFuY2VzdG9yID0gbGZpcnN0X29pZChsYyk7CisJCQlMaXN0CSAgICph bmNlc3Rvcl9wdWJvaWRzID0gTklMOwogCi0JCQlwdWJvaWRzID0gbGlzdF9jb25jYXRfdW5pcXVl X29pZChwdWJvaWRzLAotCQkJCQkJCQkJCQkgR2V0UmVsYXRpb25QdWJsaWNhdGlvbnMoYW5jZXN0 b3IpKTsKKwkJCUdldFJlbGF0aW9uUHVibGljYXRpb25zKGFuY2VzdG9yLCAmYW5jZXN0b3JfcHVi b2lkcywgTlVMTCk7CisKKwkJCXB1Ym9pZHMgPSBsaXN0X2NvbmNhdF91bmlxdWVfb2lkKHB1Ym9p ZHMsIGFuY2VzdG9yX3B1Ym9pZHMpOwogCQkJc2NoZW1haWQgPSBnZXRfcmVsX25hbWVzcGFjZShh bmNlc3Rvcik7CiAJCQlwdWJvaWRzID0gbGlzdF9jb25jYXRfdW5pcXVlX29pZChwdWJvaWRzLAog CQkJCQkJCQkJCQkgR2V0U2NoZW1hUHVibGljYXRpb25zKHNjaGVtYWlkKSk7CiAJCX0KIAl9Ci0J cHVib2lkcyA9IGxpc3RfY29uY2F0X3VuaXF1ZV9vaWQocHVib2lkcywgR2V0QWxsVGFibGVzUHVi bGljYXRpb25zKCkpOwogCisJYWxsdGFibGVzcHVib2lkcyA9IEdldEFsbFRhYmxlc1B1YmxpY2F0 aW9ucygpOworCXB1Ym9pZHMgPSBsaXN0X2NvbmNhdF91bmlxdWVfb2lkKHB1Ym9pZHMsCisJCQkJ CQkJCQkgbGlzdF9kaWZmZXJlbmNlX29pZChhbGx0YWJsZXNwdWJvaWRzLAorCQkJCQkJCQkJCQkJ CQkgZXhjZXB0cHVib2lkcykpOwogCWZvcmVhY2gobGMsIHB1Ym9pZHMpCiAJewogCQlPaWQJCQlw dWJpZCA9IGxmaXJzdF9vaWQobGMpOwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1 bXAuYyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKaW5kZXggMDc4ZWU4NTAwYWQuLjYwY2Q2 OThjNWNlIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCisrKyBiL3NyYy9i aW4vcGdfZHVtcC9wZ19kdW1wLmMKQEAgLTQ2NDgsOSArNDY0OCw1OCBAQCBnZXRQdWJsaWNhdGlv bnMoQXJjaGl2ZSAqZm91dCkKIAkJCShzdHJjbXAoUFFnZXR2YWx1ZShyZXMsIGksIGlfcHVidmlh cm9vdCksICJ0IikgPT0gMCk7CiAJCXB1YmluZm9baV0ucHViZ2VuY29sc190eXBlID0KIAkJCSoo UFFnZXR2YWx1ZShyZXMsIGksIGlfcHViZ2VuY29scykpOworCQlwdWJpbmZvW2ldLmV4Y2VwdF90 YWJsZXMgPSAoU2ltcGxlUHRyTGlzdCkKKwkJeworCQkJTlVMTCwgTlVMTAorCQl9OwogCiAJCS8q IERlY2lkZSB3aGV0aGVyIHdlIHdhbnQgdG8gZHVtcCBpdCAqLwogCQlzZWxlY3REdW1wYWJsZU9i amVjdCgmKHB1YmluZm9baV0uZG9iaiksIGZvdXQpOworCisJCS8qCisJCSAqIEdldCB0aGUgbGlz dCBvZiB0YWJsZXMgZm9yIHB1YmxpY2F0aW9ucyBzcGVjaWZpZWQgd2l0aCB0aGUgRVhDRVBUCisJ CSAqIFRBQkxFIGNsYXVzZS4gVGhpcyBpcyBpbnRyb2R1Y2VkIGluIFBvc3RncmVTUUwgMTkuCisJ CSAqCisJCSAqIEVYQ0VQVCBUQUJMRVMgaXMgcHJvY2Vzc2VkIGhlcmUgYW5kIG91dHB1dCBkaXJl Y3RseSBieQorCQkgKiBkdW1wUHVibGljYXRpb24oKS4gVGhpcyBkaWZmZXJzIGZyb20gdGhlIGFw cHJvYWNoIHVzZWQgaW4KKwkJICogZHVtcFB1YmxpY2F0aW9uVGFibGUoKSBhbmQgZHVtcFB1Ymxp Y2F0aW9uTmFtZXNwYWNlKCksIHNpbmNlIHRoYXQKKwkJICogYXBwcm9hY2ggd291bGQgcmVxdWly ZSBFWENFUFQgVEFCTEUgc3VwcG9ydCBmb3IgQUxURVIgUFVCTElDQVRJT04sCisJCSAqIHdoaWNo IGlzIG5vdCBjdXJyZW50bHkgc3VwcG9ydGVkLgorCQkgKi8KKwkJaWYgKGZvdXQtPnJlbW90ZVZl cnNpb24gPj0gMTkwMDAwKQorCQl7CisJCQlpbnQJCQludGJsczsKKwkJCVBHcmVzdWx0ICAgKnJl c190YmxzOworCisJCQlyZXNldFBRRXhwQnVmZmVyKHF1ZXJ5KTsKKwkJCWFwcGVuZFBRRXhwQnVm ZmVyKHF1ZXJ5LAorCQkJCQkJCSAgIlNFTEVDVCBwcnJlbGlkXG4iCisJCQkJCQkJICAiRlJPTSBw Z19jYXRhbG9nLnBnX3B1YmxpY2F0aW9uX3JlbFxuIgorCQkJCQkJCSAgIldIRVJFIHBycHViaWQg PSAldSBhbmQgcHJleGNlcHQiLAorCQkJCQkJCSAgcHViaW5mb1tpXS5kb2JqLmNhdElkLm9pZCk7 CisKKwkJCXJlc190YmxzID0gRXhlY3V0ZVNxbFF1ZXJ5KGZvdXQsIHF1ZXJ5LT5kYXRhLCBQR1JF U19UVVBMRVNfT0spOworCisJCQludGJscyA9IFBRbnR1cGxlcyhyZXNfdGJscyk7CisJCQlpZiAo bnRibHMgPT0gMCkKKwkJCQljb250aW51ZTsKKworCQkJZm9yIChpbnQgaiA9IDA7IGogPCBudGJs czsgaisrKQorCQkJeworCQkJCU9pZAkJCXBycmVsaWQ7CisJCQkJVGFibGVJbmZvICAqdGJpbmZv OworCisJCQkJcHJyZWxpZCA9IGF0b29pZChQUWdldHZhbHVlKHJlc190YmxzLCBqLCAwKSk7CisK KwkJCQl0YmluZm8gPSBmaW5kVGFibGVCeU9pZChwcnJlbGlkKTsKKwkJCQlpZiAodGJpbmZvID09 IE5VTEwpCisJCQkJCWNvbnRpbnVlOworCisJCQkJc2ltcGxlX3B0cl9saXN0X2FwcGVuZCgmcHVi aW5mb1tpXS5leGNlcHRfdGFibGVzLCB0YmluZm8pOworCQkJfQorCisJCQlQUWNsZWFyKHJlc190 YmxzKTsKKwkJfQogCX0KIAogY2xlYW51cDoKQEAgLTQ2OTAsNyArNDczOSwyNSBAQCBkdW1wUHVi bGljYXRpb24oQXJjaGl2ZSAqZm91dCwgY29uc3QgUHVibGljYXRpb25JbmZvICpwdWJpbmZvKQog CWlmIChwdWJpbmZvLT5wdWJhbGx0YWJsZXMgJiYgcHViaW5mby0+cHViYWxsc2VxdWVuY2VzKQog CQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiBGT1IgQUxMIFRBQkxFUywgQUxMIFNFUVVF TkNFUyIpOwogCWVsc2UgaWYgKHB1YmluZm8tPnB1YmFsbHRhYmxlcykKKwl7CisJCWludAkJCW5f ZXhjbHVkZWQgPSAwOworCiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiIEZPUiBBTEwg VEFCTEVTIik7CisKKwkJLyogSW5jbHVkZSBFWENFUFQgVEFCTEUgY2xhdXNlIGlmIHRoZXJlIGFy ZSBleGNlcHRfdGFibGVzLiAqLworCQlmb3IgKFNpbXBsZVB0ckxpc3RDZWxsICpjZWxsID0gcHVi aW5mby0+ZXhjZXB0X3RhYmxlcy5oZWFkOyBjZWxsOyBjZWxsID0gY2VsbC0+bmV4dCkKKwkJewor CQkJVGFibGVJbmZvICAqdGJpbmZvID0gKFRhYmxlSW5mbyAqKSBjZWxsLT5wdHI7CisKKwkJCWlm ICgrK25fZXhjbHVkZWQgPT0gMSkKKwkJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiBF WENFUFQgVEFCTEUgKCIpOworCQkJZWxzZQorCQkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5 LCAiLCAiKTsKKwkJCWFwcGVuZFBRRXhwQnVmZmVyKHF1ZXJ5LCAiT05MWSAlcyIsIGZtdFF1YWxp ZmllZER1bXBhYmxlKHRiaW5mbykpOworCQl9CisJCWlmIChuX2V4Y2x1ZGVkID4gMCkKKwkJCWFw cGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiKSIpOworCX0KIAllbHNlIGlmIChwdWJpbmZvLT5w dWJhbGxzZXF1ZW5jZXMpCiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiIEZPUiBBTEwg U0VRVUVOQ0VTIik7CiAKQEAgLTQ4NzAsNiArNDkzNyw3IEBAIGdldFB1YmxpY2F0aW9uVGFibGVz KEFyY2hpdmUgKmZvdXQsIFRhYmxlSW5mbyB0YmxpbmZvW10sIGludCBudW1UYWJsZXMpCiAKIAkv KiBDb2xsZWN0IGFsbCBwdWJsaWNhdGlvbiBtZW1iZXJzaGlwIGluZm8uICovCiAJaWYgKGZvdXQt PnJlbW90ZVZlcnNpb24gPj0gMTUwMDAwKQorCXsKIAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVl cnksCiAJCQkJCQkJICJTRUxFQ1QgdGFibGVvaWQsIG9pZCwgcHJwdWJpZCwgcHJyZWxpZCwgIgog CQkJCQkJCSAicGdfY2F0YWxvZy5wZ19nZXRfZXhwcihwcnF1YWwsIHBycmVsaWQpIEFTIHBycmVs cXVhbCwgIgpAQCAtNDg4Miw2ICs0OTUwLDkgQEAgZ2V0UHVibGljYXRpb25UYWJsZXMoQXJjaGl2 ZSAqZm91dCwgVGFibGVJbmZvIHRibGluZm9bXSwgaW50IG51bVRhYmxlcykKIAkJCQkJCQkgIiAg ICAgIFdIRVJFIGF0dHJlbGlkID0gcHIucHJyZWxpZCBBTkQgYXR0bnVtID0gcHJhdHRyc1tzXSlc biIKIAkJCQkJCQkgIiAgRUxTRSBOVUxMIEVORCkgcHJhdHRycyAiCiAJCQkJCQkJICJGUk9NIHBn X2NhdGFsb2cucGdfcHVibGljYXRpb25fcmVsIHByIik7CisJCWlmIChmb3V0LT5yZW1vdGVWZXJz aW9uID49IDE5MDAwMCkKKwkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiIFdIRVJFIE5P VCBwci5wcmV4Y2VwdCIpOworCX0KIAllbHNlCiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5 LAogCQkJCQkJCSAiU0VMRUNUIHRhYmxlb2lkLCBvaWQsIHBycHViaWQsIHBycmVsaWQsICIKZGlm ZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmggYi9zcmMvYmluL3BnX2R1bXAvcGdf ZHVtcC5oCmluZGV4IDRjNGIxNGU1ZmM3Li5kMTQxZWI2NmQxNyAxMDA2NDQKLS0tIGEvc3JjL2Jp bi9wZ19kdW1wL3BnX2R1bXAuaAorKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oCkBAIC02 NzYsNiArNjc2LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgX1B1YmxpY2F0aW9uSW5mbwogCWJvb2wJCXB1 YnRydW5jYXRlOwogCWJvb2wJCXB1YnZpYXJvb3Q7CiAJUHVibGlzaEdlbmNvbHNUeXBlIHB1Ymdl bmNvbHNfdHlwZTsKKwlTaW1wbGVQdHJMaXN0IGV4Y2VwdF90YWJsZXM7CiB9IFB1YmxpY2F0aW9u SW5mbzsKIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBs IGIvc3JjL2Jpbi9wZ19kdW1wL3QvMDAyX3BnX2R1bXAucGwKaW5kZXggYThkY2MyYjVjNzUuLjU0 ZWFlNTc3YzkxIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5wbAor KysgYi9zcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5wbApAQCAtMzE3MCw2ICszMTcwLDM2 IEBAIG15ICV0ZXN0cyA9ICgKIAkJbGlrZSA9PiB7ICVmdWxsX3J1bnMsIHNlY3Rpb25fcG9zdF9k YXRhID0+IDEsIH0sCiAJfSwKIAorCSdDUkVBVEUgUFVCTElDQVRJT04gcHViOCcgPT4geworCQlj cmVhdGVfb3JkZXIgPT4gNTAsCisJCWNyZWF0ZV9zcWwgPT4KKwkJICAnQ1JFQVRFIFBVQkxJQ0FU SU9OIHB1YjggRk9SIEFMTCBUQUJMRVMgRVhDRVBUIChkdW1wX3Rlc3QudGVzdF90YWJsZSk7JywK KwkJcmVnZXhwID0+IHFyL14KKwkJCVxRQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YjggRk9SIEFMTCBU QUJMRVMgRVhDRVBUIFRBQkxFIChPTkxZIGR1bXBfdGVzdC50ZXN0X3RhYmxlKSBXSVRIIChwdWJs aXNoID0gJ2luc2VydCwgdXBkYXRlLCBkZWxldGUsIHRydW5jYXRlJyk7XEUKKwkJCS94bSwKKwkJ bGlrZSA9PiB7ICVmdWxsX3J1bnMsIHNlY3Rpb25fcG9zdF9kYXRhID0+IDEsIH0sCisJfSwKKwor CSdDUkVBVEUgUFVCTElDQVRJT04gcHViOScgPT4geworCQljcmVhdGVfb3JkZXIgPT4gNTAsCisJ CWNyZWF0ZV9zcWwgPT4KKwkJICAnQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YjkgRk9SIEFMTCBUQUJM RVMgRVhDRVBUIFRBQkxFIChkdW1wX3Rlc3QudGVzdF90YWJsZSwgZHVtcF90ZXN0LnRlc3Rfc2Vj b25kX3RhYmxlKTsnLAorCQlyZWdleHAgPT4gcXIvXgorCQkJXFFDUkVBVEUgUFVCTElDQVRJT04g cHViOSBGT1IgQUxMIFRBQkxFUyBFWENFUFQgVEFCTEUgKE9OTFkgZHVtcF90ZXN0LnRlc3RfdGFi bGUsIE9OTFkgZHVtcF90ZXN0LnRlc3Rfc2Vjb25kX3RhYmxlKSBXSVRIIChwdWJsaXNoID0gJ2lu c2VydCwgdXBkYXRlLCBkZWxldGUsIHRydW5jYXRlJyk7XEUKKwkJCS94bSwKKwkJbGlrZSA9PiB7 ICVmdWxsX3J1bnMsIHNlY3Rpb25fcG9zdF9kYXRhID0+IDEsIH0sCisJfSwKKworCSdDUkVBVEUg UFVCTElDQVRJT04gcHViMTAnID0+IHsKKwkJY3JlYXRlX29yZGVyID0+IDkyLAorCQljcmVhdGVf c3FsID0+CisJCSAgJ0NSRUFURSBQVUJMSUNBVElPTiBwdWIxMCBGT1IgQUxMIFRBQkxFUyBFWENF UFQgVEFCTEUgKGR1bXBfdGVzdC50ZXN0X2luaGVyaXRhbmNlX3BhcmVudCk7JywKKwkJcmVnZXhw ID0+IHFyL14KKwkJCVxRQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YjEwIEZPUiBBTEwgVEFCTEVTIEVY Q0VQVCBUQUJMRSAoT05MWSBkdW1wX3Rlc3QudGVzdF9pbmhlcml0YW5jZV9wYXJlbnQsIE9OTFkg ZHVtcF90ZXN0LnRlc3RfaW5oZXJpdGFuY2VfY2hpbGQpIFdJVEggKHB1Ymxpc2ggPSAnaW5zZXJ0 LCB1cGRhdGUsIGRlbGV0ZSwgdHJ1bmNhdGUnKTtcRQorCQkJL3htLAorCQlsaWtlID0+IHsgJWZ1 bGxfcnVucywgc2VjdGlvbl9wb3N0X2RhdGEgPT4gMSwgfSwKKwl9LAorCiAJJ0NSRUFURSBTVUJT Q1JJUFRJT04gc3ViMScgPT4gewogCQljcmVhdGVfb3JkZXIgPT4gNTAsCiAJCWNyZWF0ZV9zcWwg PT4gJ0NSRUFURSBTVUJTQ1JJUFRJT04gc3ViMQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL2Rl c2NyaWJlLmMgYi9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYwppbmRleCAzNTg0YzRlMTQyOC4uMWJm ZWMwYmQzZWYgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jCisrKyBiL3NyYy9i aW4vcHNxbC9kZXNjcmliZS5jCkBAIC0zMDczLDE3ICszMDczLDM0IEBAIGRlc2NyaWJlT25lVGFi bGVEZXRhaWxzKGNvbnN0IGNoYXIgKnNjaGVtYW5hbWUsCiAJCQkJCQkJCSAgIiAgICAgICAgICBX SEVSRSBhdHRyZWxpZCA9IHByLnBycmVsaWQgQU5EIGF0dG51bSA9IHByYXR0cnNbc10pXG4iCiAJ CQkJCQkJCSAgIiAgICAgICAgRUxTRSBOVUxMIEVORCkgIgogCQkJCQkJCQkgICJGUk9NIHBnX2Nh dGFsb2cucGdfcHVibGljYXRpb24gcFxuIgotCQkJCQkJCQkgICIgICAgIEpPSU4gcGdfY2F0YWxv Zy5wZ19wdWJsaWNhdGlvbl9yZWwgcHIgT04gcC5vaWQgPSBwci5wcnB1YmlkXG4iCi0JCQkJCQkJ CSAgIiAgICAgSk9JTiBwZ19jYXRhbG9nLnBnX2NsYXNzIGMgT04gYy5vaWQgPSBwci5wcnJlbGlk XG4iCi0JCQkJCQkJCSAgIldIRVJFIHByLnBycmVsaWQgPSAnJXMnXG4iCisJCQkJCQkJCSAgIgkJ Sk9JTiBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0aW9uX3JlbCBwciBPTiBwLm9pZCA9IHByLnBycHVi aWRcbiIKKwkJCQkJCQkJICAiCQlKT0lOIHBnX2NhdGFsb2cucGdfY2xhc3MgYyBPTiBjLm9pZCA9 IHByLnBycmVsaWRcbiIKKwkJCQkJCQkJICAiV0hFUkUgcHIucHJyZWxpZCA9ICclcydcbiIsCisJ CQkJCQkJCSAgb2lkLCBvaWQsIG9pZCk7CisKKwkJCQlpZiAocHNldC5zdmVyc2lvbiA+PSAxOTAw MDApCisJCQkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZidWYsICIgQU5EIE5PVCBwci5wcmV4Y2Vw dFxuIik7CisKKwkJCQlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLAogCQkJCQkJCQkgICJVTklPTlxu IgogCQkJCQkJCQkgICJTRUxFQ1QgcHVibmFtZVxuIgotCQkJCQkJCQkgICIgICAgICwgTlVMTFxu IgotCQkJCQkJCQkgICIgICAgICwgTlVMTFxuIgorCQkJCQkJCQkgICIJCSwgTlVMTFxuIgorCQkJ CQkJCQkgICIJCSwgTlVMTFxuIgogCQkJCQkJCQkgICJGUk9NIHBnX2NhdGFsb2cucGdfcHVibGlj YXRpb24gcFxuIgotCQkJCQkJCQkgICJXSEVSRSBwLnB1YmFsbHRhYmxlcyBBTkQgcGdfY2F0YWxv Zy5wZ19yZWxhdGlvbl9pc19wdWJsaXNoYWJsZSgnJXMnKVxuIgotCQkJCQkJCQkgICJPUkRFUiBC WSAxOyIsCi0JCQkJCQkJCSAgb2lkLCBvaWQsIG9pZCwgb2lkKTsKKwkJCQkJCQkJICAiV0hFUkUg cC5wdWJhbGx0YWJsZXMgQU5EIHBnX2NhdGFsb2cucGdfcmVsYXRpb25faXNfcHVibGlzaGFibGUo JyVzJylcbiIsCisJCQkJCQkJCSAgb2lkKTsKKworCQkJCWlmIChwc2V0LnN2ZXJzaW9uID49IDE5 MDAwMCkKKwkJCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwKKwkJCQkJCQkJCSAgIiAgICAgQU5E IE5PVCBFWElTVFMgKFxuIgorCQkJCQkJCQkJICAiCQlTRUxFQ1QgMVxuIgorCQkJCQkJCQkJICAi CQlGUk9NIHBnX2NhdGFsb2cucGdfcHVibGljYXRpb25fcmVsIHByXG4iCisJCQkJCQkJCQkgICIJ CUpPSU4gcGdfY2F0YWxvZy5wZ19jbGFzcyBwY1xuIgorCQkJCQkJCQkJICAiCQlPTiBwci5wcnJl bGlkID0gcGMub2lkXG4iCisJCQkJCQkJCQkgICIJCVdIRVJFIHByLnBycmVsaWQgPSAnJXMnIEFO RCBwci5wcnB1YmlkID0gcC5vaWQpXG4iLAorCQkJCQkJCQkJICBvaWQpOworCisJCQkJYXBwZW5k UFFFeHBCdWZmZXJTdHIoJmJ1ZiwgIk9SREVSIEJZIDE7Iik7CiAJCQl9CiAJCQllbHNlCiAJCQl7 CkBAIC0zMTM0LDYgKzMxNTEsMzUgQEAgZGVzY3JpYmVPbmVUYWJsZURldGFpbHMoY29uc3QgY2hh ciAqc2NoZW1hbmFtZSwKIAkJCVBRY2xlYXIocmVzdWx0KTsKIAkJfQogCisJCS8qIFByaW50IHB1 YmxpY2F0aW9ucyB0aGF0IHRoZSB0YWJsZSBpcyBleHBsaWNpdGx5IGV4Y2x1ZGVkIGZyb20gKi8K KwkJaWYgKHBzZXQuc3ZlcnNpb24gPj0gMTkwMDAwKQorCQl7CisJCQlwcmludGZQUUV4cEJ1ZmZl cigmYnVmLAorCQkJCQkJCSAgIlNFTEVDVCBwdWJuYW1lXG4iCisJCQkJCQkJICAiRlJPTSBwZ19j YXRhbG9nLnBnX3B1YmxpY2F0aW9uIHBcbiIKKwkJCQkJCQkgICJKT0lOIHBnX2NhdGFsb2cucGdf cHVibGljYXRpb25fcmVsIHByIE9OIHAub2lkID0gcHIucHJwdWJpZFxuIgorCQkJCQkJCSAgIldI RVJFIHByLnBycmVsaWQgPSAnJXMnXG4gQU5EIHByLnByZXhjZXB0XG4iCisJCQkJCQkJICAiT1JE RVIgQlkgMTsiLCBvaWQpOworCisJCQlyZXN1bHQgPSBQU1FMZXhlYyhidWYuZGF0YSk7CisJCQlp ZiAoIXJlc3VsdCkKKwkJCQlnb3RvIGVycm9yX3JldHVybjsKKwkJCWVsc2UKKwkJCQl0dXBsZXMg PSBQUW50dXBsZXMocmVzdWx0KTsKKworCQkJaWYgKHR1cGxlcyA+IDApCisJCQkJcHJpbnRUYWJs ZUFkZEZvb3RlcigmY29udCwgXygiRXhjZXB0IFB1YmxpY2F0aW9uczoiKSk7CisKKwkJCS8qIE1p Z2h0IGJlIGFuIGVtcHR5IHNldCAtIHRoYXQncyBvayAqLworCQkJZm9yIChpID0gMDsgaSA8IHR1 cGxlczsgaSsrKQorCQkJeworCQkJCXByaW50ZlBRRXhwQnVmZmVyKCZidWYsICIgICAgXCIlc1wi IiwgUFFnZXR2YWx1ZShyZXN1bHQsIGksIDApKTsKKworCQkJCXByaW50VGFibGVBZGRGb290ZXIo JmNvbnQsIGJ1Zi5kYXRhKTsKKwkJCX0KKwkJCVBRY2xlYXIocmVzdWx0KTsKKwkJfQorCiAJCS8q CiAJCSAqIElmIHZlcmJvc2UsIHByaW50IE5PVCBOVUxMIGNvbnN0cmFpbnRzLgogCQkgKi8KQEAg LTY3NTMsOCArNjc5OSwxMiBAQCBkZXNjcmliZVB1YmxpY2F0aW9ucyhjb25zdCBjaGFyICpwYXR0 ZXJuKQogCQkJCQkJCSAgIiAgICAgcGdfY2F0YWxvZy5wZ19wdWJsaWNhdGlvbl9yZWwgcHJcbiIK IAkJCQkJCQkgICJXSEVSRSBjLnJlbG5hbWVzcGFjZSA9IG4ub2lkXG4iCiAJCQkJCQkJICAiICBB TkQgYy5vaWQgPSBwci5wcnJlbGlkXG4iCi0JCQkJCQkJICAiICBBTkQgcHIucHJwdWJpZCA9ICcl cydcbiIKLQkJCQkJCQkgICJPUkRFUiBCWSAxLDIiLCBwdWJpZCk7CisJCQkJCQkJICAiICBBTkQg cHIucHJwdWJpZCA9ICclcydcbiIsIHB1YmlkKTsKKworCQkJaWYgKHBzZXQuc3ZlcnNpb24gPj0g MTkwMDAwKQorCQkJCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsICIgIEFORCBOT1QgcHIucHJleGNl cHRcbiIpOworCisJCQlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLCAiT1JERVIgQlkgMSwyIik7CiAJ CQlpZiAoIWFkZEZvb3RlclRvUHVibGljYXRpb25EZXNjKCZidWYsIF8oIlRhYmxlczoiKSwgZmFs c2UsICZjb250KSkKIAkJCQlnb3RvIGVycm9yX3JldHVybjsKIApAQCAtNjc3Miw2ICs2ODIyLDIz IEBAIGRlc2NyaWJlUHVibGljYXRpb25zKGNvbnN0IGNoYXIgKnBhdHRlcm4pCiAJCQkJCWdvdG8g ZXJyb3JfcmV0dXJuOwogCQkJfQogCQl9CisJCWVsc2UKKwkJeworCQkJaWYgKHBzZXQuc3ZlcnNp b24gPj0gMTkwMDAwKQorCQkJeworCQkJCS8qIEdldCB0aGUgZXhjbHVkZWQgdGFibGVzIGZvciB0 aGUgc3BlY2lmaWVkIHB1YmxpY2F0aW9uICovCisJCQkJcHJpbnRmUFFFeHBCdWZmZXIoJmJ1ZiwK KwkJCQkJCQkJICAiU0VMRUNUIGNvbmNhdChjLnJlbG5hbWVzcGFjZTo6cmVnbmFtZXNwYWNlLCAn LicsIGMucmVsbmFtZSlcbiIKKwkJCQkJCQkJICAiRlJPTSBwZ19jYXRhbG9nLnBnX2NsYXNzIGNc biIKKwkJCQkJCQkJICAiICAgICBKT0lOIHBnX2NhdGFsb2cucGdfcHVibGljYXRpb25fcmVsIHBy IE9OIGMub2lkID0gcHIucHJyZWxpZFxuIgorCQkJCQkJCQkgICJXSEVSRSBwci5wcnB1YmlkID0g JyVzJ1xuIgorCQkJCQkJCQkgICIgIEFORCBwci5wcmV4Y2VwdFxuIgorCQkJCQkJCQkgICJPUkRF UiBCWSAxIiwgcHViaWQpOworCQkJCWlmICghYWRkRm9vdGVyVG9QdWJsaWNhdGlvbkRlc2MoJmJ1 ZiwgXygiRXhjZXB0IHRhYmxlczoiKSwKKwkJCQkJCQkJCQkJCXRydWUsICZjb250KSkKKwkJCQkJ Z290byBlcnJvcl9yZXR1cm47CisJCQl9CisJCX0KIAogCQlwcmludFRhYmxlKCZjb250LCBwc2V0 LnF1ZXJ5Rm91dCwgZmFsc2UsIHBzZXQubG9nZmlsZSk7CiAJCXByaW50VGFibGVDbGVhbnVwKCZj b250KTsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYyBiL3NyYy9i aW4vcHNxbC90YWItY29tcGxldGUuaW4uYwppbmRleCA4YjkxYmMwMDA2Mi4uMzk0MDRlYTBmNjkg MTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYworKysgYi9zcmMvYmlu L3BzcWwvdGFiLWNvbXBsZXRlLmluLmMKQEAgLTM2NjksNyArMzY2OSwxNyBAQCBtYXRjaF9wcmV2 aW91c193b3JkcyhpbnQgcGF0dGVybl9pZCwKIAllbHNlIGlmIChNYXRjaGVzKCJDUkVBVEUiLCAi UFVCTElDQVRJT04iLCBNYXRjaEFueSwgIkZPUiIsICJBTEwiKSkKIAkJQ09NUExFVEVfV0lUSCgi VEFCTEVTIiwgIlNFUVVFTkNFUyIpOwogCWVsc2UgaWYgKE1hdGNoZXMoIkNSRUFURSIsICJQVUJM SUNBVElPTiIsIE1hdGNoQW55LCAiRk9SIiwgIkFMTCIsICJUQUJMRVMiKSkKLQkJQ09NUExFVEVf V0lUSCgiV0lUSCAoIik7CisJCUNPTVBMRVRFX1dJVEgoIkVYQ0VQVCBUQUJMRSAoIiwgIldJVEgg KCIpOworCWVsc2UgaWYgKE1hdGNoZXMoIkNSRUFURSIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55 LCAiRk9SIiwgIkFMTCIsICJUQUJMRVMiLCAiRVhDRVBUIikpCisJCUNPTVBMRVRFX1dJVEgoIlRB QkxFICgiKTsKKwllbHNlIGlmIChNYXRjaGVzKCJDUkVBVEUiLCAiUFVCTElDQVRJT04iLCBNYXRj aEFueSwgIkZPUiIsICJBTEwiLCAiVEFCTEVTIiwgIkVYQ0VQVCIsICJUQUJMRSIpKQorCQlDT01Q TEVURV9XSVRIKCIoIik7CisJZWxzZSBpZiAoTWF0Y2hlcygiQ1JFQVRFIiwgIlBVQkxJQ0FUSU9O IiwgTWF0Y2hBbnksICJGT1IiLCAiQUxMIiwgIlRBQkxFUyIsICJFWENFUFQiLCAiVEFCTEUiLCAi KCIpKQorCQlDT01QTEVURV9XSVRIX1NDSEVNQV9RVUVSWShRdWVyeV9mb3JfbGlzdF9vZl90YWJs ZXMpOworCWVsc2UgaWYgKE1hdGNoZXMoIkNSRUFURSIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55 LCAiRk9SIiwgIkFMTCIsICJUQUJMRVMiLCAiRVhDRVBUIiwgIlRBQkxFIiwgIigiLCBNYXRjaEFu eU4pICYmIGVuZHNfd2l0aChwcmV2X3dkLCAnLCcpKQorCQlDT01QTEVURV9XSVRIX1NDSEVNQV9R VUVSWShRdWVyeV9mb3JfbGlzdF9vZl90YWJsZXMpOworCWVsc2UgaWYgKE1hdGNoZXMoIkNSRUFU RSIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiRk9SIiwgIkFMTCIsICJUQUJMRVMiLCAiRVhD RVBUIiwgIlRBQkxFIiwgIigiLCBNYXRjaEFueU4pICYmICFlbmRzX3dpdGgocHJldl93ZCwgJywn KSkKKwkJQ09NUExFVEVfV0lUSCgiKSIpOwogCWVsc2UgaWYgKE1hdGNoZXMoIkNSRUFURSIsICJQ VUJMSUNBVElPTiIsIE1hdGNoQW55LCAiRk9SIiwgIlRBQkxFUyIpKQogCQlDT01QTEVURV9XSVRI KCJJTiBTQ0hFTUEiKTsKIAllbHNlIGlmIChNYXRjaGVzKCJDUkVBVEUiLCAiUFVCTElDQVRJT04i LCBNYXRjaEFueSwgIkZPUiIsICJUQUJMRSIsIE1hdGNoQW55KSAmJiAhZW5kc193aXRoKHByZXZf d2QsICcsJykpCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9u LmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmgKaW5kZXggMzY4YmVjY2E4 OTkuLjUxMjZjOTk2ZmY3IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3B1Ymxp Y2F0aW9uLmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5oCkBAIC0x NDYsMTQgKzE0NiwxNiBAQCB0eXBlZGVmIHN0cnVjdCBQdWJsaWNhdGlvblJlbEluZm8KIAlSZWxh dGlvbglyZWxhdGlvbjsKIAlOb2RlCSAgICp3aGVyZUNsYXVzZTsKIAlMaXN0CSAgICpjb2x1bW5z OworCWJvb2wJCWV4Y2VwdDsKIH0gUHVibGljYXRpb25SZWxJbmZvOwogCiBleHRlcm4gUHVibGlj YXRpb24gKkdldFB1YmxpY2F0aW9uKE9pZCBwdWJpZCk7CiBleHRlcm4gUHVibGljYXRpb24gKkdl dFB1YmxpY2F0aW9uQnlOYW1lKGNvbnN0IGNoYXIgKnB1Ym5hbWUsIGJvb2wgbWlzc2luZ19vayk7 Ci1leHRlcm4gTGlzdCAqR2V0UmVsYXRpb25QdWJsaWNhdGlvbnMoT2lkIHJlbGlkKTsKK2V4dGVy biBib29sIEdldFJlbGF0aW9uUHVibGljYXRpb25zKE9pZCByZWxpZCwgTGlzdCAqKnB1Ymlkcywg TGlzdCAqKmV4Y2VwdF9wdWJpZHMpOwogCiAvKi0tLS0tLS0tLQotICogRXhwZWN0ZWQgdmFsdWVz IGZvciBwdWJfcGFydG9wdCBwYXJhbWV0ZXIgb2YgR2V0UHVibGljYXRpb25SZWxhdGlvbnMoKSwK KyAqIEV4cGVjdGVkIHZhbHVlcyBmb3IgcHViX3BhcnRvcHQgcGFyYW1ldGVyIG9mCisgKiBHZXRQ dWJsaWNhdGlvbkluY2x1ZGVkUmVsYXRpb25zKCksIGFuZCBHZXRBbGxQdWJsaWNhdGlvbkV4Y2x1 ZGVkVGFibGVzKCksCiAgKiB3aGljaCBhbGxvd3MgY2FsbGVycyB0byBzcGVjaWZ5IHdoaWNoIHBh cnRpdGlvbnMgb2YgcGFydGl0aW9uZWQgdGFibGVzCiAgKiBtZW50aW9uZWQgaW4gdGhlIHB1Ymxp Y2F0aW9uIHRoZXkgZXhwZWN0IHRvIHNlZS4KICAqCkBAIC0xNjgsOSArMTcwLDEyIEBAIHR5cGVk ZWYgZW51bSBQdWJsaWNhdGlvblBhcnRPcHQKIAlQVUJMSUNBVElPTl9QQVJUX0FMTCwKIH0gUHVi bGljYXRpb25QYXJ0T3B0OwogCi1leHRlcm4gTGlzdCAqR2V0UHVibGljYXRpb25SZWxhdGlvbnMo T2lkIHB1YmlkLCBQdWJsaWNhdGlvblBhcnRPcHQgcHViX3BhcnRvcHQpOworZXh0ZXJuIExpc3Qg KkdldFB1YmxpY2F0aW9uSW5jbHVkZWRSZWxhdGlvbnMoT2lkIHB1YmlkLAorCQkJCQkJCQkJCQkg UHVibGljYXRpb25QYXJ0T3B0IHB1Yl9wYXJ0b3B0KTsKK2V4dGVybiBMaXN0ICpHZXRBbGxQdWJs aWNhdGlvbkV4Y2x1ZGVkVGFibGVzKE9pZCBwdWJpZCwKKwkJCQkJCQkJCQkJIFB1YmxpY2F0aW9u UGFydE9wdCBwdWJfcGFydG9wdCk7CiBleHRlcm4gTGlzdCAqR2V0QWxsVGFibGVzUHVibGljYXRp b25zKHZvaWQpOwotZXh0ZXJuIExpc3QgKkdldEFsbFB1YmxpY2F0aW9uUmVsYXRpb25zKGNoYXIg cmVsa2luZCwgYm9vbCBwdWJ2aWFyb290KTsKK2V4dGVybiBMaXN0ICpHZXRBbGxQdWJsaWNhdGlv blJlbGF0aW9ucyhQdWJsaWNhdGlvbiAqcHViLCBjaGFyIHJlbGtpbmQpOwogZXh0ZXJuIExpc3Qg KkdldFB1YmxpY2F0aW9uU2NoZW1hcyhPaWQgcHViaWQpOwogZXh0ZXJuIExpc3QgKkdldFNjaGVt YVB1YmxpY2F0aW9ucyhPaWQgc2NoZW1haWQpOwogZXh0ZXJuIExpc3QgKkdldFNjaGVtYVB1Ymxp Y2F0aW9uUmVsYXRpb25zKE9pZCBzY2hlbWFpZCwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2Nh dGFsb2cvcGdfcHVibGljYXRpb25fcmVsLmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3B1Ymxp Y2F0aW9uX3JlbC5oCmluZGV4IDNhODc5MGU4NDgyLi5lM2NjYmE1ZWM3OSAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbl9yZWwuaAorKysgYi9zcmMvaW5jbHVk ZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uX3JlbC5oCkBAIC0zMSw2ICszMSw3IEBAIENBVEFMT0co cGdfcHVibGljYXRpb25fcmVsLDYxMDYsUHVibGljYXRpb25SZWxSZWxhdGlvbklkKQogCU9pZAkJ CW9pZDsJCQkvKiBvaWQgKi8KIAlPaWQJCQlwcnB1YmlkIEJLSV9MT09LVVAocGdfcHVibGljYXRp b24pOyAvKiBPaWQgb2YgdGhlIHB1YmxpY2F0aW9uICovCiAJT2lkCQkJcHJyZWxpZCBCS0lfTE9P S1VQKHBnX2NsYXNzKTsJLyogT2lkIG9mIHRoZSByZWxhdGlvbiAqLworCWJvb2wJCXByZXhjZXB0 IEJLSV9ERUZBVUxUKGYpOwkvKiBleGNsdWRlIHRoZSByZWxhdGlvbiAqLwogCiAjaWZkZWYJQ0FU QUxPR19WQVJMRU4JCQkvKiB2YXJpYWJsZS1sZW5ndGggZmllbGRzIHN0YXJ0IGhlcmUgKi8KIAlw Z19ub2RlX3RyZWUgcHJxdWFsOwkJLyogcXVhbGlmaWNhdGlvbnMgKi8KZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9k ZXMuaAppbmRleCA2NDZkNmNlZDc2My4uNTI4MjQyNWI0ZGQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL25vZGVzL3BhcnNlbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVz LmgKQEAgLTQzMDAsNiArNDMwMCw3IEBAIHR5cGVkZWYgc3RydWN0IFB1YmxpY2F0aW9uVGFibGUK IAlSYW5nZVZhciAgICpyZWxhdGlvbjsJCS8qIHJlbGF0aW9uIHRvIGJlIHB1Ymxpc2hlZCAqLwog CU5vZGUJICAgKndoZXJlQ2xhdXNlOwkvKiBxdWFsaWZpY2F0aW9ucyAqLwogCUxpc3QJICAgKmNv bHVtbnM7CQkvKiBMaXN0IG9mIGNvbHVtbnMgaW4gYSBwdWJsaWNhdGlvbiB0YWJsZSAqLworCWJv b2wJCWV4Y2VwdDsJCQkvKiBleGNsdWRlIHRoZSByZWxhdGlvbiAqLwogfSBQdWJsaWNhdGlvblRh YmxlOwogCiAvKgpAQCAtNDMwOCw2ICs0MzA5LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUHVibGljYXRp b25UYWJsZQogdHlwZWRlZiBlbnVtIFB1YmxpY2F0aW9uT2JqU3BlY1R5cGUKIHsKIAlQVUJMSUNB VElPTk9CSl9UQUJMRSwJCS8qIEEgdGFibGUgKi8KKwlQVUJMSUNBVElPTk9CSl9FWENFUFRfVEFC TEUsCS8qIEEgdGFibGUgdG8gYmUgZXhjbHVkZWQgKi8KIAlQVUJMSUNBVElPTk9CSl9UQUJMRVNf SU5fU0NIRU1BLAkvKiBBbGwgdGFibGVzIGluIHNjaGVtYSAqLwogCVBVQkxJQ0FUSU9OT0JKX1RB QkxFU19JTl9DVVJfU0NIRU1BLAkvKiBBbGwgdGFibGVzIGluIGZpcnN0IGVsZW1lbnQgb2YKIAkJ CQkJCQkJCQkJICogc2VhcmNoX3BhdGggKi8KQEAgLTQzMzYsNiArNDMzOCw3IEBAIHR5cGVkZWYg c3RydWN0IFB1YmxpY2F0aW9uQWxsT2JqU3BlYwogewogCU5vZGVUYWcJCXR5cGU7CiAJUHVibGlj YXRpb25BbGxPYmpUeXBlIHB1Ym9ianR5cGU7CS8qIHR5cGUgb2YgdGhpcyBwdWJsaWNhdGlvbiBv YmplY3QgKi8KKwlMaXN0CSAgICpleGNlcHRfdGFibGVzOwkvKiBMaXN0IG9mIHRhYmxlcyB0byBi ZSBleGNsdWRlZCAqLwogCVBhcnNlTG9jCWxvY2F0aW9uOwkJLyogdG9rZW4gbG9jYXRpb24sIG9y IC0xIGlmIHVua25vd24gKi8KIH0gUHVibGljYXRpb25BbGxPYmpTcGVjOwogCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaCBiL3NyYy9pbmNsdWRl L3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oCmluZGV4IGMxMjg1ZmRkMWJjLi5jYWI5NzUz MTI3NiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFs LmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmgKQEAgLTIz NCw2ICsyMzQsMTIgQEAgdHlwZWRlZiBzdHJ1Y3QgUGFyYWxsZWxBcHBseVdvcmtlckluZm8KIAlQ YXJhbGxlbEFwcGx5V29ya2VyU2hhcmVkICpzaGFyZWQ7CiB9IFBhcmFsbGVsQXBwbHlXb3JrZXJJ bmZvOwogCit0eXBlZGVmIHN0cnVjdCBRdWFsaWZpZWRSZWxhdGlvbk5hbWUKK3sKKwljaGFyCSAg ICpzY2hlbWFuYW1lOworCWNoYXIJICAgKnJlbG5hbWU7Cit9IFF1YWxpZmllZFJlbGF0aW9uTmFt ZTsKKwogLyogTWFpbiBtZW1vcnkgY29udGV4dCBmb3IgYXBwbHkgd29ya2VyLiBQZXJtYW5lbnQg ZHVyaW5nIHdvcmtlciBsaWZldGltZS4gKi8KIGV4dGVybiBQR0RMTElNUE9SVCBNZW1vcnlDb250 ZXh0IEFwcGx5Q29udGV4dDsKIApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9wdWJsaWNhdGlvbi5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9u Lm91dAppbmRleCA3ZmI0OWFhZjI5Yi4uYjIxMTVlZGIzYzMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0CkBAIC0yMTMsMzMgKzIxMywxMDQgQEAgTm90LW51bGwg Y29uc3RyYWludHM6CiAgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgdCAgICAgICAgICB8IGYg ICAgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgfCBmICAgICAgICAgfCBu b25lICAgICAgICAgICAgICB8IGYKICgxIHJvdykKIAotRFJPUCBUQUJMRSB0ZXN0cHViX3RibDI7 Ci1EUk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yYWxsdGFibGVzLCB0ZXN0cHViX2ZvcnRhYmxl LCB0ZXN0cHViX2ZvcnNjaGVtYSwgdGVzdHB1Yl9mb3JfdGJsX3NjaGVtYTsKLUNSRUFURSBUQUJM RSB0ZXN0cHViX3RibDMgKGEgaW50KTsKLUNSRUFURSBUQUJMRSB0ZXN0cHViX3RibDNhIChiIHRl eHQpIElOSEVSSVRTICh0ZXN0cHViX3RibDMpOwogU0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSAn RVJST1InOwotQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWIzIEZPUiBUQUJMRSB0ZXN0cHViX3Ri bDM7Ci1DUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1YjQgRk9SIFRBQkxFIE9OTFkgdGVzdHB1Yl90 YmwzOworLS0gRXhjbHVkZSB0YWJsZXMgdXNpbmcgRk9SIEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxF ICh0YWJsZWxpc3QpCitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JhbGx0YWJsZXNfZXhj ZXB0dGFibGUgRk9SIEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxFICh0ZXN0cHViX3RibDEsIHRlc3Rw dWJfdGJsMik7CitcZFJwKyB0ZXN0cHViX2ZvcmFsbHRhYmxlc19leGNlcHR0YWJsZQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9m b3JhbGx0YWJsZXNfZXhjZXB0dGFibGUKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwg dGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRy dW5jYXRlcyB8IEdlbmVyYXRlZCBjb2x1bW5zIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQor IHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IHQgICAgICAgICAgfCBmICAgICAgICAgICAgIHwg dCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgbm9uZSAgICAgICAgICAg ICAgfCBmCitFeGNlcHQgdGFibGVzOgorICAgICJwdWJsaWMudGVzdHB1Yl90YmwxIgorICAgICJw dWJsaWMudGVzdHB1Yl90YmwyIgorCistLSBFeGNsdWRlIHRhYmxlcyB1c2luZyBGT1IgQUxMIFRB QkxFUyBFWENFUFQgKHRhYmxlbGlzdCkKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcmFs bHRhYmxlc19leGNlcHR0YWJsZTEgRk9SIEFMTCBUQUJMRVMgRVhDRVBUICh0ZXN0cHViX3RibDEp OworXGRScCsgdGVzdHB1Yl9mb3JhbGx0YWJsZXNfZXhjZXB0dGFibGUxCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfZm9yYWxsdGFi bGVzX2V4Y2VwdHRhYmxlMQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMg fCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVz IHwgR2VuZXJhdGVkIGNvbHVtbnMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVz c19wdWJsaWNhdGlvbl91c2VyIHwgdCAgICAgICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAg IHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBub25lICAgICAgICAgICAgICB8IGYK K0V4Y2VwdCB0YWJsZXM6CisgICAgInB1YmxpYy50ZXN0cHViX3RibDEiCisKKy0tIENoZWNrIHRo YXQgdGhlIHRhYmxlIGRlc2NyaXB0aW9uIHNob3dzIHRoZSBwdWJsaWNhdGlvbiBsaXN0IHRoZSB0 YWJsZSBpcworLS0gZXhjbHVkZWQgZnJvbQorXGQgdGVzdHB1Yl90YmwxCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgVGFibGUgInB1YmxpYy50ZXN0cHViX3RibDEiCisgQ29sdW1uIHwgIFR5 cGUgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgICAgICAgICAgICAgICAgIERlZmF1bHQgICAg ICAgICAgICAgICAgICAKKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIGlkICAgICB8IGlu dGVnZXIgfCAgICAgICAgICAgfCBub3QgbnVsbCB8IG5leHR2YWwoJ3Rlc3RwdWJfdGJsMV9pZF9z ZXEnOjpyZWdjbGFzcykKKyBkYXRhICAgfCB0ZXh0ICAgIHwgICAgICAgICAgIHwgICAgICAgICAg fCAKK0luZGV4ZXM6CisgICAgInRlc3RwdWJfdGJsMV9wa2V5IiBQUklNQVJZIEtFWSwgYnRyZWUg KGlkKQorUHVibGljYXRpb25zOgorICAgICJ0ZXN0cHViX2ZvcmFsbHRhYmxlcyIKK0V4Y2VwdCBQ dWJsaWNhdGlvbnM6CisgICAgInRlc3RwdWJfZm9yYWxsdGFibGVzX2V4Y2VwdHRhYmxlIgorICAg ICJ0ZXN0cHViX2ZvcmFsbHRhYmxlc19leGNlcHR0YWJsZTEiCisKIFJFU0VUIGNsaWVudF9taW5f bWVzc2FnZXM7CitEUk9QIFRBQkxFIHRlc3RwdWJfdGJsMjsKK0RST1AgUFVCTElDQVRJT04gdGVz dHB1Yl9mb3JhbGx0YWJsZXMsIHRlc3RwdWJfZm9ydGFibGUsIHRlc3RwdWJfZm9yc2NoZW1hLCB0 ZXN0cHViX2Zvcl90Ymxfc2NoZW1hLCB0ZXN0cHViX2ZvcmFsbHRhYmxlc19leGNlcHR0YWJsZSwg dGVzdHB1Yl9mb3JhbGx0YWJsZXNfZXhjZXB0dGFibGUxOworQ1JFQVRFIFRBQkxFIHRlc3RwdWJf dGJsX3BhcmVudCAoYSBpbnQpOworQ1JFQVRFIFRBQkxFIHRlc3RwdWJfdGJsX2NoaWxkIChiIHRl eHQpIElOSEVSSVRTICh0ZXN0cHViX3RibF9wYXJlbnQpOworU0VUIGNsaWVudF9taW5fbWVzc2Fn ZXMgPSAnRVJST1InOworQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWIzIEZPUiBUQUJMRSB0ZXN0 cHViX3RibF9wYXJlbnQ7CiBcZFJwKyB0ZXN0cHViMwogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjMKICAgICAg ICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8IEluc2Vy dHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IEdlbmVyYXRlZCBjb2x1bW5zIHwg VmlhIHJvb3QgCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQogIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYg ICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwg dCAgICAgICAgIHwgbm9uZSAgICAgICAgICAgICAgfCBmCiBUYWJsZXM6Ci0gICAgInB1YmxpYy50 ZXN0cHViX3RibDMiCi0gICAgInB1YmxpYy50ZXN0cHViX3RibDNhIgorICAgICJwdWJsaWMudGVz dHB1Yl90YmxfY2hpbGQiCisgICAgInB1YmxpYy50ZXN0cHViX3RibF9wYXJlbnQiCiAKK0NSRUFU RSBQVUJMSUNBVElPTiB0ZXN0cHViNCBGT1IgVEFCTEUgT05MWSB0ZXN0cHViX3RibF9wYXJlbnQ7 CiBcZFJwKyB0ZXN0cHViNAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjQKICAgICAgICAgICBPd25lciAgICAg ICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwg RGVsZXRlcyB8IFRydW5jYXRlcyB8IEdlbmVyYXRlZCBjb2x1bW5zIHwgVmlhIHJvb3QgCiAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLQogIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAg ICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgbm9u ZSAgICAgICAgICAgICAgfCBmCiBUYWJsZXM6Ci0gICAgInB1YmxpYy50ZXN0cHViX3RibDMiCisg ICAgInB1YmxpYy50ZXN0cHViX3RibF9wYXJlbnQiCiAKLURST1AgVEFCTEUgdGVzdHB1Yl90Ymwz LCB0ZXN0cHViX3RibDNhOwotRFJPUCBQVUJMSUNBVElPTiB0ZXN0cHViMywgdGVzdHB1YjQ7Cist LSBFeGNsdWRlIHBhcmVudCB0YWJsZSwgb21pdHRpbmcgYm90aCBvZiAnT05MWScgYW5kICcqJwor Q1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWI1IEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCBUQUJMRSAo dGVzdHB1Yl90YmxfcGFyZW50KTsKK1xkUnArIHRlc3RwdWI1CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViNQor ICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwg SW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgR2VuZXJhdGVkIGNvbHVt bnMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2Vy IHwgdCAgICAgICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAg ICAgfCB0ICAgICAgICAgfCBub25lICAgICAgICAgICAgICB8IGYKK0V4Y2VwdCB0YWJsZXM6Cisg ICAgInB1YmxpYy50ZXN0cHViX3RibF9jaGlsZCIKKyAgICAicHVibGljLnRlc3RwdWJfdGJsX3Bh cmVudCIKKworLS0gRVhDRVBUIHdpdGggJyonOiBleGNsdWRlIHRhYmxlIGFuZCBhbGwgZGVzY2Vu ZGFudHMKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViNiBGT1IgQUxMIFRBQkxFUyBFWENFUFQg VEFCTEUgKHRlc3RwdWJfdGJsX3BhcmVudCAqKTsKK1xkUnArIHRlc3RwdWI2CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0 ZXN0cHViNgorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBBbGwgc2Vx dWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgR2VuZXJh dGVkIGNvbHVtbnMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNh dGlvbl91c2VyIHwgdCAgICAgICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAg ICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBub25lICAgICAgICAgICAgICB8IGYKK0V4Y2VwdCB0 YWJsZXM6CisgICAgInB1YmxpYy50ZXN0cHViX3RibF9jaGlsZCIKKyAgICAicHVibGljLnRlc3Rw dWJfdGJsX3BhcmVudCIKKworLS0gRVhDRVBUIHdpdGggT05MWTogZXhjbHVkZSB0YWJsZSBidXQg bm90IGRlc2NlbmRhbnRzCitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1YjcgRk9SIEFMTCBUQUJM RVMgRVhDRVBUIFRBQkxFIChPTkxZIHRlc3RwdWJfdGJsX3BhcmVudCk7CitcZFJwKyB0ZXN0cHVi NworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UHVibGljYXRpb24gdGVzdHB1YjcKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFi bGVzIHwgQWxsIHNlcXVlbmNlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5j YXRlcyB8IEdlbmVyYXRlZCBjb2x1bW5zIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJl Z3Jlc3NfcHVibGljYXRpb25fdXNlciB8IHQgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAg ICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgbm9uZSAgICAgICAgICAgICAg fCBmCitFeGNlcHQgdGFibGVzOgorICAgICJwdWJsaWMudGVzdHB1Yl90YmxfcGFyZW50IgorCitS RVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOworRFJPUCBUQUJMRSB0ZXN0cHViX3RibF9wYXJlbnQs IHRlc3RwdWJfdGJsX2NoaWxkOworRFJPUCBQVUJMSUNBVElPTiB0ZXN0cHViMywgdGVzdHB1YjQs IHRlc3RwdWI1LCB0ZXN0cHViNiwgdGVzdHB1Yjc7CiAtLS0gVGVzdHMgZm9yIHB1YmxpY2F0aW9u cyB3aXRoIFNFUVVFTkNFUwogQ1JFQVRFIFNFUVVFTkNFIHJlZ3Jlc3NfcHViX3NlcTA7CiBDUkVB VEUgU0VRVUVOQ0UgcHViX3Rlc3QucmVncmVzc19wdWJfc2VxMTsKZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL3B1YmxpY2F0aW9uLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1 YmxpY2F0aW9uLnNxbAppbmRleCA4NWIwMGJkNjdjOC4uNTIyNGRhOTNkNzcgMTAwNjQ0Ci0tLSBh L3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1YmxpY2F0aW9uLnNxbAorKysgYi9zcmMvdGVzdC9yZWdy ZXNzL3NxbC9wdWJsaWNhdGlvbi5zcWwKQEAgLTEwNSwyMCArMTA1LDQxIEBAIFNFTEVDVCBwdWJu YW1lLCBwdWJhbGx0YWJsZXMgRlJPTSBwZ19wdWJsaWNhdGlvbiBXSEVSRSBwdWJuYW1lID0gJ3Rl c3RwdWJfZm9yYWxsCiBcZCsgdGVzdHB1Yl90YmwyCiBcZFJwKyB0ZXN0cHViX2ZvcmFsbHRhYmxl cwogCitTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9ICdFUlJPUic7CistLSBFeGNsdWRlIHRhYmxl cyB1c2luZyBGT1IgQUxMIFRBQkxFUyBFWENFUFQgVEFCTEUgKHRhYmxlbGlzdCkKK0NSRUFURSBQ VUJMSUNBVElPTiB0ZXN0cHViX2ZvcmFsbHRhYmxlc19leGNlcHR0YWJsZSBGT1IgQUxMIFRBQkxF UyBFWENFUFQgVEFCTEUgKHRlc3RwdWJfdGJsMSwgdGVzdHB1Yl90YmwyKTsKK1xkUnArIHRlc3Rw dWJfZm9yYWxsdGFibGVzX2V4Y2VwdHRhYmxlCistLSBFeGNsdWRlIHRhYmxlcyB1c2luZyBGT1Ig QUxMIFRBQkxFUyBFWENFUFQgKHRhYmxlbGlzdCkKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHVi X2ZvcmFsbHRhYmxlc19leGNlcHR0YWJsZTEgRk9SIEFMTCBUQUJMRVMgRVhDRVBUICh0ZXN0cHVi X3RibDEpOworXGRScCsgdGVzdHB1Yl9mb3JhbGx0YWJsZXNfZXhjZXB0dGFibGUxCistLSBDaGVj ayB0aGF0IHRoZSB0YWJsZSBkZXNjcmlwdGlvbiBzaG93cyB0aGUgcHVibGljYXRpb24gbGlzdCB0 aGUgdGFibGUgaXMKKy0tIGV4Y2x1ZGVkIGZyb20KK1xkIHRlc3RwdWJfdGJsMQorCitSRVNFVCBj bGllbnRfbWluX21lc3NhZ2VzOwogRFJPUCBUQUJMRSB0ZXN0cHViX3RibDI7Ci1EUk9QIFBVQkxJ Q0FUSU9OIHRlc3RwdWJfZm9yYWxsdGFibGVzLCB0ZXN0cHViX2ZvcnRhYmxlLCB0ZXN0cHViX2Zv cnNjaGVtYSwgdGVzdHB1Yl9mb3JfdGJsX3NjaGVtYTsKK0RST1AgUFVCTElDQVRJT04gdGVzdHB1 Yl9mb3JhbGx0YWJsZXMsIHRlc3RwdWJfZm9ydGFibGUsIHRlc3RwdWJfZm9yc2NoZW1hLCB0ZXN0 cHViX2Zvcl90Ymxfc2NoZW1hLCB0ZXN0cHViX2ZvcmFsbHRhYmxlc19leGNlcHR0YWJsZSwgdGVz dHB1Yl9mb3JhbGx0YWJsZXNfZXhjZXB0dGFibGUxOwogCi1DUkVBVEUgVEFCTEUgdGVzdHB1Yl90 YmwzIChhIGludCk7Ci1DUkVBVEUgVEFCTEUgdGVzdHB1Yl90YmwzYSAoYiB0ZXh0KSBJTkhFUklU UyAodGVzdHB1Yl90YmwzKTsKK0NSRUFURSBUQUJMRSB0ZXN0cHViX3RibF9wYXJlbnQgKGEgaW50 KTsKK0NSRUFURSBUQUJMRSB0ZXN0cHViX3RibF9jaGlsZCAoYiB0ZXh0KSBJTkhFUklUUyAodGVz dHB1Yl90YmxfcGFyZW50KTsKIFNFVCBjbGllbnRfbWluX21lc3NhZ2VzID0gJ0VSUk9SJzsKLUNS RUFURSBQVUJMSUNBVElPTiB0ZXN0cHViMyBGT1IgVEFCTEUgdGVzdHB1Yl90YmwzOwotQ1JFQVRF IFBVQkxJQ0FUSU9OIHRlc3RwdWI0IEZPUiBUQUJMRSBPTkxZIHRlc3RwdWJfdGJsMzsKLVJFU0VU IGNsaWVudF9taW5fbWVzc2FnZXM7CitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1YjMgRk9SIFRB QkxFIHRlc3RwdWJfdGJsX3BhcmVudDsKIFxkUnArIHRlc3RwdWIzCitDUkVBVEUgUFVCTElDQVRJ T04gdGVzdHB1YjQgRk9SIFRBQkxFIE9OTFkgdGVzdHB1Yl90YmxfcGFyZW50OwogXGRScCsgdGVz dHB1YjQKKy0tIEV4Y2x1ZGUgcGFyZW50IHRhYmxlLCBvbWl0dGluZyBib3RoIG9mICdPTkxZJyBh bmQgJyonCitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1YjUgRk9SIEFMTCBUQUJMRVMgRVhDRVBU IFRBQkxFICh0ZXN0cHViX3RibF9wYXJlbnQpOworXGRScCsgdGVzdHB1YjUKKy0tIEVYQ0VQVCB3 aXRoICcqJzogZXhjbHVkZSB0YWJsZSBhbmQgYWxsIGRlc2NlbmRhbnRzCitDUkVBVEUgUFVCTElD QVRJT04gdGVzdHB1YjYgRk9SIEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxFICh0ZXN0cHViX3RibF9w YXJlbnQgKik7CitcZFJwKyB0ZXN0cHViNgorLS0gRVhDRVBUIHdpdGggT05MWTogZXhjbHVkZSB0 YWJsZSBidXQgbm90IGRlc2NlbmRhbnRzCitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1YjcgRk9S IEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxFIChPTkxZIHRlc3RwdWJfdGJsX3BhcmVudCk7CitcZFJw KyB0ZXN0cHViNwogCi1EUk9QIFRBQkxFIHRlc3RwdWJfdGJsMywgdGVzdHB1Yl90YmwzYTsKLURS T1AgUFVCTElDQVRJT04gdGVzdHB1YjMsIHRlc3RwdWI0OworUkVTRVQgY2xpZW50X21pbl9tZXNz YWdlczsKK0RST1AgVEFCTEUgdGVzdHB1Yl90YmxfcGFyZW50LCB0ZXN0cHViX3RibF9jaGlsZDsK K0RST1AgUFVCTElDQVRJT04gdGVzdHB1YjMsIHRlc3RwdWI0LCB0ZXN0cHViNSwgdGVzdHB1YjYs IHRlc3RwdWI3OwogCiAtLS0gVGVzdHMgZm9yIHB1YmxpY2F0aW9ucyB3aXRoIFNFUVVFTkNFUwog Q1JFQVRFIFNFUVVFTkNFIHJlZ3Jlc3NfcHViX3NlcTA7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9z dWJzY3JpcHRpb24vbWVzb24uYnVpbGQgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vbWVzb24uYnVp bGQKaW5kZXggYTRjN2RiYWZmNTkuLjA3MjgyYWEzYzE4IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9z dWJzY3JpcHRpb24vbWVzb24uYnVpbGQKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL21lc29u LmJ1aWxkCkBAIC00Niw2ICs0Niw3IEBAIHRlc3RzICs9IHsKICAgICAgICd0LzAzNF90ZW1wb3Jh bC5wbCcsCiAgICAgICAndC8wMzVfY29uZmxpY3RzLnBsJywKICAgICAgICd0LzAzNl9zZXF1ZW5j ZXMucGwnLAorICAgICAgJ3QvMDM3X3JlcF9jaGFuZ2VzX2V4Y2VwdF90YWJsZS5wbCcsCiAgICAg ICAndC8xMDBfYnVncy5wbCcsCiAgICAgXSwKICAgfSwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1 YnNjcmlwdGlvbi90LzAzN19yZXBfY2hhbmdlc19leGNlcHRfdGFibGUucGwgYi9zcmMvdGVzdC9z dWJzY3JpcHRpb24vdC8wMzdfcmVwX2NoYW5nZXNfZXhjZXB0X3RhYmxlLnBsCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5kOTQwNGJkYWExMgotLS0gL2Rldi9udWxsCisr KyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzN19yZXBfY2hhbmdlc19leGNlcHRfdGFibGUu cGwKQEAgLTAsMCArMSwyNjQgQEAKKworIyBDb3B5cmlnaHQgKGMpIDIwMjEtMjAyNSwgUG9zdGdy ZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKworIyBMb2dpY2FsIHJlcGxpY2F0aW9uIHRl c3RzIGZvciBFWENFUFQgVEFCTEUgcHVibGljYXRpb25zCit1c2Ugc3RyaWN0OwordXNlIHdhcm5p bmdzOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7Cit1c2UgUG9zdGdyZVNRTDo6VGVz dDo6VXRpbHM7Cit1c2UgVGVzdDo6TW9yZTsKKworIyBJbml0aWFsaXplIHB1Ymxpc2hlciBub2Rl CitteSAkbm9kZV9wdWJsaXNoZXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3B1 Ymxpc2hlcicpOworJG5vZGVfcHVibGlzaGVyLT5pbml0KGFsbG93c19zdHJlYW1pbmcgPT4gJ2xv Z2ljYWwnKTsKKyRub2RlX3B1Ymxpc2hlci0+c3RhcnQ7CisKKyMgSW5pdGlhbGl6ZSBzdWJzY3Jp YmVyIG5vZGUKK215ICRub2RlX3N1YnNjcmliZXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVy LT5uZXcoJ3N1YnNjcmliZXInKTsKKyRub2RlX3N1YnNjcmliZXItPmluaXQoYWxsb3dzX3N0cmVh bWluZyA9PiAnbG9naWNhbCcpOworJG5vZGVfc3Vic2NyaWJlci0+c3RhcnQ7CisKKyMgPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgRVhDRVBUIFRBQkxFIHRl c3QgY2FzZXMgZm9yIG5vcm1hbCB0YWJsZXMKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KKyMgQ3JlYXRlIHNjaGVtYXMgYW5kIHRhYmxlcyBvbiBwdWJsaXNo ZXIKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxKAorCUNSRUFU RSBTQ0hFTUEgc2NoMTsKKwlDUkVBVEUgVEFCTEUgc2NoMS50YWIxIEFTIFNFTEVDVCBnZW5lcmF0 ZV9zZXJpZXMoMSwxMCkgQVMgYTsKKykpOworCisjIENyZWF0ZSBzY2hlbWFzIGFuZCB0YWJsZXMg b24gc3Vic2NyaWJlcgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3Jlcycs IHFxKAorCUNSRUFURSBTQ0hFTUEgc2NoMTsKKwlDUkVBVEUgVEFCTEUgc2NoMS50YWIxIChhIGlu dCk7CispKTsKKworIyBTZXR1cCBsb2dpY2FsIHJlcGxpY2F0aW9uCitteSAkcHVibGlzaGVyX2Nv bm5zdHIgPSAkbm9kZV9wdWJsaXNoZXItPmNvbm5zdHIgLiAnIGRibmFtZT1wb3N0Z3Jlcyc7Cisk bm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUgUFVCTElDQVRJ T04gdGFwX3B1Yl9zY2hlbWEgRk9SIEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxFIChzY2gxLnRhYjEp IgorKTsKKyMgQ3JlYXRlIGEgbG9naWNhbCByZXBsaWNhdGlvbiBzbG90Ciskbm9kZV9wdWJsaXNo ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGdfY3JlYXRlX2xvZ2ljYWxfcmVw bGljYXRpb25fc2xvdCgndGVzdF9zbG90JywgJ3Bnb3V0cHV0JykiKTsKKworJG5vZGVfc3Vic2Ny aWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBTVUJTQ1JJUFRJT04gdGFwX3N1 Yl9zY2hlbWEgQ09OTkVDVElPTiAnJHB1Ymxpc2hlcl9jb25uc3RyJyBQVUJMSUNBVElPTiB0YXBf cHViX3NjaGVtYSIKKyk7CisKKyMgV2FpdCBmb3IgaW5pdGlhbCB0YWJsZSBzeW5jIHRvIGZpbmlz aAorJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3Jfc3Vic2NyaXB0aW9uX3N5bmMoJG5vZGVfcHVi bGlzaGVyLAorCSd0YXBfc3ViX3NjaGVtYScpOworCisjIENoZWNrIHRoZSB0YWJsZSBkYXRhIGRv ZXMgbm90IHN5bmMgZm9yIGV4Y2x1ZGVkIHRhYmxlCitteSAkcmVzdWx0ID0gJG5vZGVfc3Vic2Ny aWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBjb3VudCgqKSwgbWluKGEpLCBt YXgoYSkgRlJPTSBzY2gxLnRhYjEiKTsKK2lzKCRyZXN1bHQsIHFxKDB8fCksCisJJ2NoZWNrIHRo ZXJlIGlzIG5vIGluaXRpYWwgZGF0YSBjb3BpZWQgZm9yIHRoZSBleGNsdWRlZCB0YWJsZScpOwor Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJJTlNFUlQgSU5UTyBz Y2gxLnRhYjEgVkFMVUVTKGdlbmVyYXRlX3NlcmllcygxMSwyMCkpIik7CisKKyMgVmVyaWZ5IHRo YXQgZGF0YSBpbnNlcnRlZCB0byBleGNsdWRlZCB0YWJsZSBpcyBub3QgcHVibGlzaGVkLgorJHJl c3VsdCA9ICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBj b3VudCgqKSA9IDAgRlJPTSBwZ19sb2dpY2FsX3Nsb3RfZ2V0X2JpbmFyeV9jaGFuZ2VzKCd0ZXN0 X3Nsb3QnLCBOVUxMLCBOVUxMLCAncHJvdG9fdmVyc2lvbicsICcxJywgJ3B1YmxpY2F0aW9uX25h bWVzJywgJ3RhcF9zdWJfc2NoZW1hJykiCispOworaXMoJHJlc3VsdCwgcXEodCksICdjaGVjayBu byBjaGFuZ2VzIGZvciBleGNsdWRlZCB0YWJsZSBpbiByZXBsaWNhdGlvbiBzbG90Jyk7CisKKyRu b2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgndGFwX3N1Yl9zY2hlbWEnKTsKKworIyBW ZXJpZnkgdGhhdCBkYXRhIGluc2VydGVkIHRvIHRoZSBleGNsdWRlZCB0YWJsZSBpcyBub3QgcmVw bGljYXRlZC4KKyRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKwkiU0VMRUNUIGNvdW50KCopLCBtaW4oYSksIG1heChhKSBGUk9NIHNjaDEudGFiMSIpOwor aXMoJHJlc3VsdCwgcXEoMHx8KSwgJ2NoZWNrIHJlcGxpY2F0ZWQgaW5zZXJ0cyBvbiBzdWJzY3Jp YmVyJyk7CisKKyMgY2xlYW51cAorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywgIkRST1AgUFVCTElDQVRJT04gdGFwX3B1Yl9zY2hlbWEiKTsKKyRub2RlX3N1YnNjcmliZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiRFJPUCBTVUJTQ1JJUFRJT04gdGFwX3N1Yl9zY2hlbWEi KTsKKworIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyBF WENFUFQgVEFCTEUgdGVzdCBjYXNlcyBmb3IgcGFydGl0aW9uZWQgdGFibGVzCisjIENoZWNrIGJl aGF2aW9yIG9mIEVYQ0VQVCBUQUJMRSB3aXRoIHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290IG9u IGEKKyMgcGFydGl0aW9uZWQgdGFibGUgYW5kIGl0cyBwYXJ0aXRpb25zLgorIyA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyBTZXR1cCBwYXJ0aXRpb25lZCB0 YWJsZSBhbmQgcGFydGl0aW9ucyBvbiB0aGUgcHVibGlzaGVyIHRoYXQgbWFwIHRvIG5vcm1hbAor IyB0YWJsZXMgb24gdGhlIHN1YnNjcmliZXIKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAor CSdwb3N0Z3JlcycsIHFxKAorCUNSRUFURSBUQUJMRSBzY2gxLnQxKGEgaW50KSBQQVJUSVRJT04g QlkgUkFOR0UoYSk7CisJQ1JFQVRFIFRBQkxFIHNjaDEucGFydDEgUEFSVElUSU9OIE9GIHNjaDEu dDEgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMTAwKTsKKwlDUkVBVEUgVEFCTEUgc2NoMS5wYXJ0 MihhIGludCkgUEFSVElUSU9OIEJZIFJBTkdFKGEpOworCUNSRUFURSBUQUJMRSBzY2gxLnBhcnQy XzEgUEFSVElUSU9OIE9GIHNjaDEucGFydDIgRk9SIFZBTFVFUyBGUk9NICgxMDEpIFRPICgxNTAp OworCUNSRUFURSBUQUJMRSBzY2gxLnBhcnQyXzIgUEFSVElUSU9OIE9GIHNjaDEucGFydDIgRk9S IFZBTFVFUyBGUk9NICgxNTEpIFRPICgyMDApOworCUFMVEVSIFRBQkxFIHNjaDEudDEgQVRUQUNI IFBBUlRJVElPTiBzY2gxLnBhcnQyIEZPUiBWQUxVRVMgRlJPTSAoMTAxKSBUTyAoMjAwKTsKKykp OworCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXEoCisJQ1JF QVRFIFRBQkxFIHNjaDEudDEoYSBpbnQpOworCUNSRUFURSBUQUJMRSBzY2gxLnBhcnQxKGEgaW50 KTsKKwlDUkVBVEUgVEFCTEUgc2NoMS5wYXJ0MihhIGludCk7CisJQ1JFQVRFIFRBQkxFIHNjaDEu cGFydDJfMShhIGludCk7CisJQ1JFQVRFIFRBQkxFIHNjaDEucGFydDJfMihhIGludCk7CispKTsK KworIyBFeGNsdWRpbmcgdGhlIHJvb3QgcGFydGl0aW9uZWQgdGFibGUgZXhjbHVkZXMgYWxsIGl0 cyBwYXJ0aXRpb25zIGFzIHdlbGwgd2hlbgorIyBwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCA9 IGZhbHNlLgorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXEoCisJ Q1JFQVRFIFBVQkxJQ0FUSU9OIHRhcF9wdWJfcGFydCBGT1IgQUxMIFRBQkxFUyBFWENFUFQgVEFC TEUgKHNjaDEudDEpIFdJVEggKHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290ID0gZmFsc2UpOwor CUlOU0VSVCBJTlRPIHNjaDEudDEgVkFMVUVTICgxKSwgKDEwMSksICgxNTEpOworKSk7Ciskbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFNVQlNDUklQVElP TiB0YXBfc3ViX3BhcnQgQ09OTkVDVElPTiAnJHB1Ymxpc2hlcl9jb25uc3RyJyBQVUJMSUNBVElP TiB0YXBfcHViX3BhcnQiCispOworJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3Jfc3Vic2NyaXB0 aW9uX3N5bmMoJG5vZGVfcHVibGlzaGVyLCAndGFwX3N1Yl9wYXJ0Jyk7Ciskbm9kZV9wdWJsaXNo ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1Qgc2xvdF9uYW1lIEZST00gcGdfcmVw bGljYXRpb25fc2xvdF9hZHZhbmNlKCd0ZXN0X3Nsb3QnLCBwZ19jdXJyZW50X3dhbF9sc24oKSk7 IgorKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIklOU0VSVCBJ TlRPIHNjaDEudDEgVkFMVUVTICgyKSwgKDEwMiksICgxNTIpIik7CisKKyMgVmVyaWZ5IHRoYXQg ZGF0YSBpbnNlcnRlZCB0byB0aGUgcGFydGl0aW9uZWQgdGFibGUgaXMgbm90IHB1Ymxpc2hlZCB3 aGVuIGl0IGlzCisjIGV4Y2x1ZGVkIHdpdGggcHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QgPSB0 cnVlLgorJHJlc3VsdCA9ICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJ IlNFTEVDVCBjb3VudCgqKSA9IDAgRlJPTSBwZ19sb2dpY2FsX3Nsb3RfZ2V0X2JpbmFyeV9jaGFu Z2VzKCd0ZXN0X3Nsb3QnLCBOVUxMLCBOVUxMLCAncHJvdG9fdmVyc2lvbicsICcxJywgJ3B1Ymxp Y2F0aW9uX25hbWVzJywgJ3RhcF9wdWJfcGFydCcpIgorKTsKKyRub2RlX3B1Ymxpc2hlci0+d2Fp dF9mb3JfY2F0Y2h1cCgndGFwX3N1Yl9wYXJ0Jyk7CisKKyMgQ2hlY2sgdGhhdCBubyByb3dzIGFy ZSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIKKyRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCAqIEZST00gc2NoMS50MSIpOworaXMoJHJlc3Vs dCwgcXEoKSwgJ2NoZWNrIHJvd3Mgb24gcm9vdCB0YWJsZScpOworCiskcmVzdWx0ID0gJG5vZGVf c3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgKiBGUk9NIHNjaDEucGFy dDEiKTsKK2lzKCRyZXN1bHQsIHFxKCksICdjaGVjayByb3dzIG9uIHRhYmxlIHNjaDEucGFydDEn KTsKKworJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAi U0VMRUNUICogRlJPTSBzY2gxLnBhcnQyIik7CitpcygkcmVzdWx0LCBxcSgpLCAnY2hlY2sgcm93 cyBvbiB0YWJsZSBzY2gxLnBhcnQyJyk7CisKKyRyZXN1bHQgPQorICAkbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCAqIEZST00gc2NoMS5wYXJ0Ml8xIik7Citp cygkcmVzdWx0LCBxcSgpLCAnY2hlY2sgcm93cyBvbiB0YWJsZSBzY2gxLnBhcnQyXzEnKTsKKwor JHJlc3VsdCA9CisgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VM RUNUICogRlJPTSBzY2gxLnBhcnQyXzIiKTsKK2lzKCRyZXN1bHQsIHFxKCksICdjaGVjayByb3dz IG9uIHRhYmxlIHNjaDEucGFydDJfMicpOworCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywgIkRST1AgU1VCU0NSSVBUSU9OIHRhcF9zdWJfcGFydCIpOworJG5vZGVfcHVi bGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRST1AgUFVCTElDQVRJT04gdGFwX3B1Yl9w YXJ0OyIpOworCisjIEV4Y2x1ZGluZyB0aGUgcm9vdCBwYXJ0aXRpb25lZCB0YWJsZSBleGNsdWRl cyBhbGwgaXRzIHBhcnRpdGlvbnMgYXMgd2VsbCB3aGVuCisjIHB1Ymxpc2hfdmlhX3BhcnRpdGlv bl9yb290ID0gdHJ1ZS4KKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3Jlcycs IHFxKAorCUNSRUFURSBQVUJMSUNBVElPTiB0YXBfcHViX3BhcnQgRk9SIEFMTCBUQUJMRVMgRVhD RVBUIFRBQkxFIChzY2gxLnQxKSBXSVRIIChwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCA9IHRy dWUpOworKSk7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JF QVRFIFNVQlNDUklQVElPTiB0YXBfc3ViX3BhcnQgQ09OTkVDVElPTiAnJHB1Ymxpc2hlcl9jb25u c3RyJyBQVUJMSUNBVElPTiB0YXBfcHViX3BhcnQiCispOworJG5vZGVfc3Vic2NyaWJlci0+d2Fp dF9mb3Jfc3Vic2NyaXB0aW9uX3N5bmMoJG5vZGVfcHVibGlzaGVyLCAndGFwX3N1Yl9wYXJ0Jyk7 Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1Qgc2xvdF9u YW1lIEZST00gcGdfcmVwbGljYXRpb25fc2xvdF9hZHZhbmNlKCd0ZXN0X3Nsb3QnLCBwZ19jdXJy ZW50X3dhbF9sc24oKSk7IgorKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCisJIklOU0VSVCBJTlRPIHNjaDEudDEgVkFMVUVTICgzKSwgKDEwMyksICgxNTMpOyIpOwor CisjIFZlcmlmeSB0aGF0IGRhdGEgaW5zZXJ0ZWQgdG8gdGhlIHBhcnRpdGlvbmVkIHRhYmxlIGlz IG5vdCBwdWJsaXNoZWQgd2hlbiBpdCBpcworIyBleGNsdWRlZCB3aXRoIHB1Ymxpc2hfdmlhX3Bh cnRpdGlvbl9yb290ID0gdHJ1ZS4KKyRyZXN1bHQgPSAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgY291bnQoKikgPSAwIEZST00gcGdfbG9naWNhbF9zbG90 X2dldF9iaW5hcnlfY2hhbmdlcygndGVzdF9zbG90JywgTlVMTCwgTlVMTCwgJ3Byb3RvX3ZlcnNp b24nLCAnMScsICdwdWJsaWNhdGlvbl9uYW1lcycsICd0YXBfcHViX3BhcnQnKSIKKyk7Ciskbm9k ZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJ3RhcF9zdWJfcGFydCcpOworCisjIENoZWNr IHRoYXQgbm8gcm93cyBhcmUgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyCiskcmVzdWx0ID0gJG5v ZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgKiBGUk9NIHNjaDEu dDEiKTsKK2lzKCRyZXN1bHQsIHFxKCksICdjaGVjayByb3dzIG9uIHJvb3QgdGFibGUnKTsKKwor JHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNU ICogRlJPTSBzY2gxLnBhcnQxIik7CitpcygkcmVzdWx0LCBxcSgpLCAnY2hlY2sgcm93cyBvbiB0 YWJsZSBzY2gxLnBhcnQxJyk7CisKKyRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywgIlNFTEVDVCAqIEZST00gc2NoMS5wYXJ0MiIpOworaXMoJHJlc3VsdCwg cXEoKSwgJ2NoZWNrIHJvd3Mgb24gdGFibGUgc2NoMS5wYXJ0MicpOworCiskcmVzdWx0ID0KKyAg JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgKiBGUk9NIHNj aDEucGFydDJfMSIpOworaXMoJHJlc3VsdCwgcXEoKSwgJ2NoZWNrIHJvd3Mgb24gdGFibGUgc2No MS5wYXJ0Ml8xJyk7CisKKyRyZXN1bHQgPQorICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywgIlNFTEVDVCAqIEZST00gc2NoMS5wYXJ0Ml8yIik7CitpcygkcmVzdWx0LCBx cSgpLCAnY2hlY2sgcm93cyBvbiB0YWJsZSBzY2gxLnBhcnQyXzInKTsKKworJG5vZGVfc3Vic2Ny aWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJEUk9QIFNVQlNDUklQVElPTiB0YXBfc3ViX3Bh cnQiKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJEUk9QIFBVQkxJ Q0FUSU9OIHRhcF9wdWJfcGFydDsiKTsKKworIyBFeGNsdWRpbmcgb25lIG9mIHRoZSBjaGlsZCBw YXJ0aXRpb24gdGFibGUgd2l0aAorIyBwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCA9IHRydWUg c2hvdWxkIHJlcGxpY2F0ZSB0aGUgb3RoZXIgcGFydGl0aW9ucy4KKyRub2RlX3B1Ymxpc2hlci0+ c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxKAorCVRSVU5DQVRFIHNjaDEudDE7CisJSU5TRVJU IElOVE8gc2NoMS50MSBWQUxVRVMgKDMpLCAoMTAzKSwgKDE1Myk7CisJQ1JFQVRFIFBVQkxJQ0FU SU9OIHRhcF9wdWJfcGFydCBGT1IgQUxMIFRBQkxFUyBFWENFUFQgVEFCTEUgKHNjaDEucGFydDIp IFdJVEggKHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290ID0gdHJ1ZSk7CispKTsKKyRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcSgKKwlUUlVOQ0FURSBzY2gxLnQx OworCUNSRUFURSBTVUJTQ1JJUFRJT04gdGFwX3N1Yl9wYXJ0IENPTk5FQ1RJT04gJyRwdWJsaXNo ZXJfY29ubnN0cicgUFVCTElDQVRJT04gdGFwX3B1Yl9wYXJ0OworKSk7Ciskbm9kZV9zdWJzY3Jp YmVyLT53YWl0X2Zvcl9zdWJzY3JpcHRpb25fc3luYygkbm9kZV9wdWJsaXNoZXIsICd0YXBfc3Vi X3BhcnQnKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVD VCBzbG90X25hbWUgRlJPTSBwZ19yZXBsaWNhdGlvbl9zbG90X2FkdmFuY2UoJ3Rlc3Rfc2xvdCcs IHBnX2N1cnJlbnRfd2FsX2xzbigpKTsiCispOworCisjIFZlcmlmeSB0aGF0IGRhdGEgaW5zZXJ0 ZWQgdG8gdGhlIHBhcnRpdGlvbmVkIHRhYmxlIGlzIG5vdCBwdWJsaXNoZWQgd2hlbiBpdCBpcwor IyBleGNsdWRlZCB3aXRoIHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290ID0gdHJ1ZS4KKyRyZXN1 bHQgPSAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgY291 bnQoKikgPSAwIEZST00gcGdfbG9naWNhbF9zbG90X2dldF9iaW5hcnlfY2hhbmdlcygndGVzdF9z bG90JywgTlVMTCwgTlVMTCwgJ3Byb3RvX3ZlcnNpb24nLCAnMScsICdwdWJsaWNhdGlvbl9uYW1l cycsICd0YXBfcHViX3BhcnQnKSIKKyk7Ciskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNo dXAoJ3RhcF9zdWJfcGFydCcpOworCisjIENoZWNrIHRoYXQgdGFibGUgZGF0YSAxMDMgYW5kIDE1 MyB3aGljaCBpcyBwcmVzZW50IGluIHNjaDEuc2NoMS5wYXJ0MiBzaG91bGQKKyMgbm90IGJlIHJl cGxpY2F0ZWQuCiskcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsICJTRUxFQ1QgKiBGUk9NIHNjaDEudDEiKTsKK2lzKCRyZXN1bHQsIHFxKDMpLCAnY2hlY2sg cm93cyBvbiByb290IHRhYmxlJyk7CisKKyRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCAqIEZST00gc2NoMS5wYXJ0MSIpOworaXMoJHJlc3Vs dCwgcXEoKSwgJ2NoZWNrIHJvd3Mgb24gdGFibGUgc2NoMS5wYXJ0MScpOworCiskcmVzdWx0ID0g JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgKiBGUk9NIHNj aDEucGFydDIiKTsKK2lzKCRyZXN1bHQsIHFxKCksICdjaGVjayByb3dzIG9uIHRhYmxlIHNjaDEu cGFydDInKTsKKworJHJlc3VsdCA9CisgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLCAiU0VMRUNUICogRlJPTSBzY2gxLnBhcnQyXzEiKTsKK2lzKCRyZXN1bHQsIHFxKCks ICdjaGVjayByb3dzIG9uIHRhYmxlIHNjaDEucGFydDJfMScpOworCiskcmVzdWx0ID0KKyAgJG5v ZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgKiBGUk9NIHNjaDEu cGFydDJfMiIpOworaXMoJHJlc3VsdCwgcXEoKSwgJ2NoZWNrIHJvd3Mgb24gdGFibGUgc2NoMS5w YXJ0Ml8yJyk7CisKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiRFJP UCBTVUJTQ1JJUFRJT04gdGFwX3N1Yl9wYXJ0Iik7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLCAiRFJPUCBQVUJMSUNBVElPTiB0YXBfcHViX3BhcnQ7Iik7CisKKyMgQ2Fu bm90IGF0dGFjaCBwYXJ0aXRpb24gdGhhdCBpcyBwYXJ0IG9mIEVYQ0VQVCBsaXN0IGluIHB1Ymxp Y2F0aW9uCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBU QUJMRSBzY2gxLnQxIERFVEFDSCBQQVJUSVRJT04gc2NoMS5wYXJ0MiIpOworJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFBVQkxJQ0FUSU9OIHRhcF9wdWJf cGFydCBGT1IgQUxMIFRBQkxFUyBFWENFUFQgVEFCTEUgKHNjaDEucGFydDIpIFdJVEggKHB1Ymxp c2hfdmlhX3BhcnRpdGlvbl9yb290ID0gdHJ1ZSkiCispOworCitteSAoJHN0ZG91dCwgJHN0ZGVy cik7CisoJHJlc3VsdCwgJHN0ZG91dCwgJHN0ZGVycikgPSAkbm9kZV9wdWJsaXNoZXItPnBzcWwo CisJJ3Bvc3RncmVzJywgcXEoCisJQUxURVIgVEFCTEUgc2NoMS50MSBBVFRBQ0ggUEFSVElUSU9O IHNjaDEucGFydDIgRk9SIFZBTFVFUyBGUk9NICgxMDEpIFRPICgyMDApOworKSk7CitsaWtlKAor CSRzdGRlcnIsCisJcXIvY2Fubm90IGF0dGFjaCByZWxhdGlvbiAicGFydDIiIGFzIHBhcnRpdGlv biBiZWNhdXNlIGl0IGlzIHBhcnQgb2YgRVhDRVBUIGxpc3QgaW4gcHVibGljYXRpb24vLAorCSdj YW5ub3QgYXR0YWNoIHJlbGF0aW9uICJwYXJ0MiIgYXMgcGFydGl0aW9uIGJlY2F1c2UgaXQgaXMg cGFydCBvZiBFWENFUFQgbGlzdCBpbiBwdWJsaWNhdGlvbicKKyk7CisKKyRub2RlX3N1YnNjcmli ZXItPnN0b3AoJ2Zhc3QnKTsKKyRub2RlX3B1Ymxpc2hlci0+c3RvcCgnZmFzdCcpOworCitkb25l X3Rlc3RpbmcoKTsKZGlmZiAtLWdpdCBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0 IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKaW5kZXggZGRiZTRjNjQ5NzEuLjU4 NWZkOTM5MWU3IDEwMDY0NAotLS0gYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAor KysgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdApAQCAtMjQxOCw2ICsyNDE4LDcg QEAgUVROb2RlCiBRVUVSWVRZUEUKIFF1YWxDb3N0CiBRdWFsSXRlbQorUXVhbGlmaWVkUmVsYXRp b25OYW1lCiBRdWVyeQogUXVlcnlDb21wbGV0aW9uCiBRdWVyeURlc2MKLS0gCjIuNDMuMAoK --000000000000e96ef406495fcecb--