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 1vxRxq-00EgqC-1O for pgsql-hackers@arkaria.postgresql.org; Tue, 03 Mar 2026 15:47:14 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vxRxo-007dd3-2J for pgsql-hackers@arkaria.postgresql.org; Tue, 03 Mar 2026 15:47:13 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vxRxn-007dcv-2u for pgsql-hackers@lists.postgresql.org; Tue, 03 Mar 2026 15:47:12 +0000 Received: from mail-ot1-x334.google.com ([2607:f8b0:4864:20::334]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1vxRxm-00000000CNJ-0wCf for pgsql-hackers@lists.postgresql.org; Tue, 03 Mar 2026 15:47:11 +0000 Received: by mail-ot1-x334.google.com with SMTP id 46e09a7af769-7d4c85307b2so4156042a34.0 for ; Tue, 03 Mar 2026 07:47:10 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1772552829; cv=none; d=google.com; s=arc-20240605; b=Ohjz4GuaIj7JxRBdx2aneD984sG0SZIFeFrhDzTlnGRYjpkm73N9vrupheRls1nlSi p61/+4f2Cf52iLu4LmuJQq6fsryQce5Bei7U8pYV7MRNCdyWF1M/EHvxOmbvjkxQS9hN 79ZKzT0aEwrW3Mx68hii9sXxNwFaLBpQ/vTJghWE+Aih3eH9myXp89NKu8BMdqGUHGm8 Esj6wYIqulI+Y+llXXcvtP+ta8sjr+9NzNNpzSR5BUVGLm5v5QyTS+GUegT5KRltrlsM nnso2utNK/terD6rf377kP3moQbXF85S8wNh/T+iJKEIOyQ1p1/3yKZILJ6bkZZvIGxX RVFw== 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=jj2Nq+t/UqFKeTM83zYoAzklC6Yn92fMEx6UGCjZwEU=; fh=E5KG/aKEIlWJcDCkTq4uk8KK01bYTLEOItnSrp76GaI=; b=LtKoS5WkR5LHdheBM7XJbUdbVCMKBdMl6p1REtPbwcHrCsSA9b/k/fedGA7T+tlXBG 3HZjOVeRlvXQd0Zfuykn+xnXiivGQMkMPZpoXv4KY8lrcWkfhlCzA9+ERwxQR3uHAkeM 5bVQoZDIYMK5tJdXxf7seaki+al5t97H/OLslvuG+Gw28R2Z4u1qhoNunXPTOdGlbJee IfwDE9TpKFLqEuUsqQC1JdZ7GHl36t4vRo8Ly6q5w30e/5g8qOLDuKPo765WxfJIqz6n Tl0uVIpuUxl5FuBgUODHT0xjcyyJSYfy4iMFDyK+i0OQIqT5jor7ojG4ugBrBUHDUM8a 39kQ==; 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=1772552829; x=1773157629; 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=jj2Nq+t/UqFKeTM83zYoAzklC6Yn92fMEx6UGCjZwEU=; b=Rs5j/c+2TVlNwwySG/R/4IwVnm5amstD/kkdV6QGrRclxZtG2P/+BrfeSNZVEuk8Vj K6/IjyNLwj4St769rPW9G1TXiwKLVXfonoj6MN+4kxIn5agbhjlBMa3fUs4b4X2HANO4 5O9h3g4CVihXhP15uFhDexGK1/Sxz/tLMXlUFsJ14DCSy5abev0RgqIgVPni5VmxYNmV 3QGBDU8GJwqPbTS0HqefoiKC26WL9Z/gchPGNUxUGiSY3WT6buviRUsgHMXVUYmmDYgE 6vx6a3j8WX3QerbooUIGoy8IzTry9GdebTiBX1iCVKa1hhHcmp0wTNXklCRWBnRFGhsD +VUA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772552829; x=1773157629; 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=jj2Nq+t/UqFKeTM83zYoAzklC6Yn92fMEx6UGCjZwEU=; b=lcYwmhNko4bHUicKO9GfWcHTDKOTqDA9jUvhZB3r7mbPtTj7GwjzKvW2Pkznt139ag hGWMokG31sl0QX8JlZ1N2YqOjYddHbLACcc7GRzKbDI3OdbxypzpTOkyxLgMvkC4zkOO 9oFn3qhuzf9qduIajV2FjEaEPLJt+Um/vNG184hGhFaXAvdmHY4GGhHB/M8qUArBEKFC FqvlHqGI7nGcv0I+ozkV7Hqpe/pP/fZxUq+q0W/QIz4e9d7Mv+44OG4q5g/SEx88sIM/ Ywewp8I9EyjZELkbboHKtdhbPWOcrn1Zm02Tvh6cDKV6/+RRh8iBJp8GuVDha9i60oEj MSpA== X-Forwarded-Encrypted: i=1; AJvYcCXuFV/ZvROhpqy+/WVItHMi+rOm0nBrX+RbtCrL+hmLGvVFuynOanivShxqhw1k8+TPEeH5E8y1N6p3f/3D@lists.postgresql.org X-Gm-Message-State: AOJu0Yy4v1y8+vGh1pl/Sw7zkVoOK3Anc7UgSc5OJhSAVh5GToKxMILN qrl7F1yB1S6PlFTdamBfVYwjps8tfNcsLLw2XpXntcZ5yhNCXXeU81plk5aVnJezn/YpErnGXBT pqKwMi0PTCIwFCCzleG23i1BHTiF5gvo= X-Gm-Gg: ATEYQzxXSzEj1u4txS8YVMaJubqWGV8kdlLtsWdBWmNs9Lbno91eo8LeZkx3WRy70cD Suyvor4BRccx2wgczg3DY+d7/UXNbZH9DHwHk1UNZlznfnd2zQtuo6nzY3tPXgEl8t5ROfzJzsS RhCq2smSapbeykb2GxcydHYudkTICSSBKN7ExhDFI1etRwrXdltbONSlp88jwG7J8AHm4JfTGLj OQ0MQqWKd4GLa5COCv//i5bq/CZKpevKOi6z2QubSrml9RnzwRlbAXHx8Wk4rbjBiHAf/F9oZWi pWqwGy5N X-Received: by 2002:a05:6820:2908:b0:679:e6eb:816 with SMTP id 006d021491bc7-679faf48137mr9650802eaf.60.1772552828905; Tue, 03 Mar 2026 07:47:08 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Shlok Kyal Date: Tue, 3 Mar 2026 21:16:44 +0530 X-Gm-Features: AaiRm53LbuaW0dG9TPGPhY7dvjFbOYIJyUfhKCXApLuIAU-pWhemxmT_nL4lNXg Message-ID: Subject: Re: Skipping schema changes in publication To: Nisha Moond Cc: Amit Kapila , vignesh C , shveta malik , Ashutosh Sharma , "David G. Johnston" , Dilip Kumar , Peter Smith , "Zhijie Hou (Fujitsu)" , YeXiu <1518981153@qq.com>, Ian Lawrence Barwick , Bharath Rupireddy , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="000000000000b695c0064c209d22" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000b695c0064c209d22 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Tue, 3 Mar 2026 at 15:45, Nisha Moond wrote: > > On Mon, Mar 2, 2026 at 6:51=E2=80=AFPM Shlok Kyal wrote: > > > > Attached the updated v54 patch. > > > > Few comments for v54 patch - > 1) The partition description shows the publication name which it is > excluded from. > simple test case: > > CREATE TABLE t_part (a int) PARTITION BY RANGE(a); > CREATE TABLE t_part_p1 PARTITION OF t_part FOR VALUES FROM (0) TO (100); > CREATE PUBLICATION pub_p1 FOR ALL TABLES EXCEPT TABLE (t_part); > postgres=3D# \d t_part_p1 > Table "public.t_part_p1" > Column | Type | Collation | Nullable | Default > --------+---------+-----------+----------+--------- > a | integer | | | > Partition of: t_part FOR VALUES FROM (0) TO (100) > Publications: > "pub_p1" > ~~~ > Fixed. Added a test for it as well. > 2) File: 037_rep_changes_except_table.pl:147 > +# Verify that data inserted into a table listed in the EXCEPT clause is = not > +# published. > +$result =3D $node_publisher->safe_psql('postgres', > + "SELECT count(*) =3D 0 FROM > pg_logical_slot_get_binary_changes('test_slot', NULL, NULL, > 'proto_version', '1', 'publication_names', 'tap_sub_schema')" > +); > > There seems to be a mistake in the publication name in the above call > as tap_sub_schema is a subscription name. > ~~~ > Couple of minor comments: > 3) File: pgouput.c > + /* > + * For a parition, changes are published via top-most > + * ancestor when pubviaroot is true, so populate pub_relid > + * accordingly > + */ > > 3a) typo parition -> partition > 3b) There should be a full stop (.) at the end i.e. after accordingly > ~~~ > > File: pg_publication.c > + else > + errormsg =3D gettext_noop("cannot add relation \"%s\" to publication")= ; > + > + > + /* If in EXCEPT clause, must be root partitioned table */ > > >> there is an extra empty line > ~~~ > I have addressed the remaining comments as well. I have also addressed the comments by Amit and Shveta in [1] and [2]. Attached the latest v55 patch. [1]: https://www.postgresql.org/message-id/CAA4eK1+2mL0N8iUdNTr1baO9kJjDZgR= GiNTX6cT=3DZoBm-m_Lqg@mail.gmail.com [2]: https://www.postgresql.org/message-id/CAJpy0uA7SKHvi2uZ=3DW2VaoGvh_5F_= BOOUwvGC22L8+t4NBE8jQ@mail.gmail.com Thanks, Shlok Kyal --000000000000b695c0064c209d22 Content-Type: application/octet-stream; name="v55-0001-Allow-table-exclusions-in-publications-via-EXCEP.patch" Content-Disposition: attachment; filename="v55-0001-Allow-table-exclusions-in-publications-via-EXCEP.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmaqr4g10 RnJvbSAyNDdlOWJkNmZjMWMwOTMzZDEzNWRkNjk0NDQxMjdkNzgyNjI4Nzg3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBWaWduZXNoIEMgPHZpZ25lc2gyMUBnbWFpbC5jb20+CkRhdGU6 IFRodSwgMTkgRmViIDIwMjYgMjA6MTY6MzkgKzA1MzAKU3ViamVjdDogW1BBVENIIHY1NV0gQWxs b3cgdGFibGUgZXhjbHVzaW9ucyBpbiBwdWJsaWNhdGlvbnMgdmlhIEVYQ0VQVCBUQUJMRS4KCkV4 dGVuZCBDUkVBVEUgUFVCTElDQVRJT04gLi4uIEZPUiBBTEwgVEFCTEVTIHRvIHN1cHBvcnQgdGhl IEVYQ0VQVCBUQUJMRQpzeW50YXguIFRoaXMgYWxsb3dzIG9uZSBvciBtb3JlIHRhYmxlcyB0byBi ZSBleGNsdWRlZC4gVGhlIHB1Ymxpc2hlciB3aWxsCm5vdCBzZW5kIHRoZSBkYXRhIG9mIGV4Y2x1 ZGVkIHRhYmxlcyB0byB0aGUgc3Vic2NyaWJlci4KClRvIHN1cHBvcnQgdGhpcywgcGdfcHVibGlj YXRpb25fcmVsIG5vdyBpbmNsdWRlcyBhIHByZXhjZXB0IGNvbHVtbiB0byBmbGFnCmV4Y2x1ZGVk IHJlbGF0aW9ucy4gRm9yIHBhcnRpdGlvbmVkIHRhYmxlcywgdGhlIGV4Y2x1c2lvbiBpcyBhcHBs aWVkIGF0CnRoZSByb290IGxldmVsOyBzcGVjaWZ5aW5nIGEgcm9vdCB0YWJsZSBleGNsdWRlcyBh bGwgY3VycmVudCBhbmQgZnV0dXJlCnBhcnRpdGlvbnMgaW4gdGhhdCB0cmVlLgoKRm9sbG93LXVw IHdvcmsgd2lsbCBpbXBsZW1lbnQgQUxURVIgUFVCTElDQVRJT04gc3VwcG9ydCBmb3IgbWFuYWdp bmcgdGhlc2UKZXhjbHVzaW9ucy4KCkF1dGhvcjogdmlnbmVzaCBDIDx2aWduZXNoMjFAZ21haWwu Y29tPgpBdXRob3I6IFNobG9rIEt5YWwgPHNobG9rLmt5YWwub3NzQGdtYWlsLmNvbT4KUmV2aWV3 ZWQtYnk6IHNodmV0YSBtYWxpayA8c2h2ZXRhLm1hbGlrQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6 IEFtaXQgS2FwaWxhIDxhbWl0LmthcGlsYTE2QGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IFBldGVy IFNtaXRoIDxzbWl0aHBiMjI1MEBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBEaWxpcCBLdW1hciA8 ZGlsaXBiYWxhdXRAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogWmhpamllIEhvdSA8aG91emouZm5z dEBmdWppdHN1LmNvbT4KUmV2aWV3ZWQtYnk6IE5pc2hhIE1vb25kIDxuaXNoYS5tb29uZDQxMkBn bWFpbC5jb20+ClJldmlld2VkLWJ5OiBEYXZpZCBHLiBKb2huc3RvbiA8ZGF2aWQuZy5qb2huc3Rv bkBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBBc2h1dG9zaCBTaGFybWEgPGFzaHUuY29lazg4QGdt YWlsLmNvbT4KUmV2aWV3ZWQtYnk6IENoYW8gTGkgPGxpLmV2YW4uY2hhb0BnbWFpbC5jb20+ClJl dmlld2VkLWJ5OiBBbmRyZWkgTGVwaWtob3YgPGxlcGlob3ZAZ21haWwuY29tPgotLS0KIGRvYy9z cmMvc2dtbC9jYXRhbG9ncy5zZ21sICAgICAgICAgICAgICAgICAgfCAgMTAgKwogZG9jL3NyYy9z Z21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbCAgICAgICB8ICAgNiArLQogZG9jL3NyYy9zZ21s L3JlZi9jcmVhdGVfcHVibGljYXRpb24uc2dtbCAgICB8ICA1NyArKysrLQogZG9jL3NyYy9zZ21s L3JlZi9wc3FsLXJlZi5zZ21sICAgICAgICAgICAgICB8ICAgNSArLQogc3JjL2JhY2tlbmQvY2F0 YWxvZy9wZ19wdWJsaWNhdGlvbi5jICAgICAgICB8IDE4MiArKysrKysrKysrLS0tLQogc3JjL2Jh Y2tlbmQvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMgICAgICB8ICA1MiArKy0tCiBzcmMvYmFj a2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyAgICAgICAgICAgIHwgIDQ4ICsrKy0KIHNyYy9iYWNr ZW5kL3BhcnNlci9ncmFtLnkgICAgICAgICAgICAgICAgICAgfCAgMzkgKystCiBzcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jIHwgIDQzICsrKy0KIHNyYy9iYWNrZW5k L3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMgICAgICAgICAgfCAgMzEgKystCiBzcmMvYmluL3BnX2R1 bXAvcGdfZHVtcC5jICAgICAgICAgICAgICAgICAgIHwgIDc5ICsrKysrLQogc3JjL2Jpbi9wZ19k dW1wL3BnX2R1bXAuaCAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvYmluL3BnX2R1bXAv dC8wMDJfcGdfZHVtcC5wbCAgICAgICAgICAgIHwgIDMwICsrKwogc3JjL2Jpbi9wc3FsL2Rlc2Ny aWJlLmMgICAgICAgICAgICAgICAgICAgICB8ICA5NSArKysrKysrLQogc3JjL2Jpbi9wc3FsL3Rh Yi1jb21wbGV0ZS5pbi5jICAgICAgICAgICAgICB8ICAxMiArLQogc3JjL2luY2x1ZGUvY2F0YWxv Zy9wZ19wdWJsaWNhdGlvbi5oICAgICAgICB8ICAxOCArLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9w Z19wdWJsaWNhdGlvbl9yZWwuaCAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5v ZGVzLmggICAgICAgICAgICAgIHwgICA1ICstCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1 YmxpY2F0aW9uLm91dCAgIHwgMTQ2ICsrKysrKysrKystCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9w dWJsaWNhdGlvbi5zcWwgICAgICAgIHwgIDY1ICsrKystCiBzcmMvdGVzdC9zdWJzY3JpcHRpb24v bWVzb24uYnVpbGQgICAgICAgICAgIHwgICAxICsKIHNyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAz N19leGNlcHQucGwgICAgICAgfCAyNTUgKysrKysrKysrKysrKysrKysrKysKIDIyIGZpbGVzIGNo YW5nZWQsIDEwNjIgaW5zZXJ0aW9ucygrKSwgMTE5IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUg MTAwNjQ0IHNyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzN19leGNlcHQucGwKCmRpZmYgLS1naXQg YS9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbCBiL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21s CmluZGV4IGU3MDY3Yzg0ZWNlLi42OTU4ODkzNzcxOSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21s L2NhdGFsb2dzLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKQEAgLTY1NzIs NiArNjU3MiwxNiBAQCBTQ1JBTS1TSEEtMjU2JDxyZXBsYWNlYWJsZT4mbHQ7aXRlcmF0aW9uIGNv dW50Jmd0OzwvcmVwbGFjZWFibGU+OjxyZXBsYWNlYWJsZT4mbAogICAgICAgPC9wYXJhPjwvZW50 cnk+CiAgICAgIDwvcm93PgogCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxv Z190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgPHN0 cnVjdGZpZWxkPnByZXhjZXB0PC9zdHJ1Y3RmaWVsZD4gPHR5cGU+Ym9vbDwvdHlwZT4KKyAgICAg IDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIFRydWUgaWYgdGhlIHRhYmxlIGlzIGV4Y2x1 ZGVkIGZyb20gdGhlIHB1YmxpY2F0aW9uLiBTZWUKKyAgICAgICA8bGluayBsaW5rZW5kPSJzcWwt Y3JlYXRlcHVibGljYXRpb24tcGFyYW1zLWZvci1leGNlcHQtdGFibGUiPjxsaXRlcmFsPkVYQ0VQ VCBUQUJMRTwvbGl0ZXJhbD48L2xpbms+LgorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwv cm93PgorCiAgICAgIDxyb3c+CiAgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRy eSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgogICAgICAgPHN0cnVjdGZpZWxkPnBy cXVhbDwvc3RydWN0ZmllbGQ+IDx0eXBlPnBnX25vZGVfdHJlZTwvdHlwZT4KZGlmZiAtLWdpdCBh L2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwgYi9kb2Mvc3JjL3NnbWwvbG9n aWNhbC1yZXBsaWNhdGlvbi5zZ21sCmluZGV4IDUwMjhmZTlhZjA5Li5iY2I0NzNjMDc4YiAxMDA2 NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbAorKysgYi9kb2Mv c3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sCkBAIC0xMTYsNyArMTE2LDExIEBACiAg ICA8bGl0ZXJhbD5GT1IgVEFCTEVTIElOIFNDSEVNQTwvbGl0ZXJhbD4sIDxsaXRlcmFsPkZPUiBB TEwgVEFCTEVTPC9saXRlcmFsPiwKICAgIG9yIDxsaXRlcmFsPkZPUiBBTEwgU0VRVUVOQ0VTPC9s aXRlcmFsPi4gVW5saWtlIHRhYmxlcywgc2VxdWVuY2VzIGNhbiBiZQogICAgc3luY2hyb25pemVk IGF0IGFueSB0aW1lLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlCi0gICA8eHJlZiBsaW5rZW5k PSJsb2dpY2FsLXJlcGxpY2F0aW9uLXNlcXVlbmNlcyIvPi4KKyAgIDx4cmVmIGxpbmtlbmQ9Imxv Z2ljYWwtcmVwbGljYXRpb24tc2VxdWVuY2VzIi8+LiBXaGVuIGEgcHVibGljYXRpb24gaXMKKyAg IGNyZWF0ZWQgd2l0aCA8bGl0ZXJhbD5GT1IgQUxMIFRBQkxFUzwvbGl0ZXJhbD4sIGEgdGFibGUg b3Igc2V0IG9mIHRhYmxlcyBjYW4KKyAgIGJlIGV4cGxpY2l0bHkgZXhjbHVkZWQgZnJvbSBwdWJs aWNhdGlvbiB1c2luZyB0aGUKKyAgIDxsaW5rIGxpbmtlbmQ9InNxbC1jcmVhdGVwdWJsaWNhdGlv bi1wYXJhbXMtZm9yLWV4Y2VwdC10YWJsZSI+PGxpdGVyYWw+RVhDRVBUIFRBQkxFPC9saXRlcmFs PjwvbGluaz4KKyAgIGNsYXVzZS4KICAgPC9wYXJhPgogCiAgIDxwYXJhPgpkaWZmIC0tZ2l0IGEv ZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfcHVibGljYXRpb24uc2dtbCBiL2RvYy9zcmMvc2dtbC9y ZWYvY3JlYXRlX3B1YmxpY2F0aW9uLnNnbWwKaW5kZXggNmVmYmI5MTVjZWMuLjc3MDY2ZWY2ODBi IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9wdWJsaWNhdGlvbi5zZ21sCisr KyBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3B1YmxpY2F0aW9uLnNnbWwKQEAgLTMyLDEyICsz MiwxNiBAQCBDUkVBVEUgUFVCTElDQVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi Pm5hbWU8L3JlcGxhY2VhYmxlPgogCiA8cGhyYXNlPmFuZCA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+cHVibGljYXRpb25fYWxsX29iamVjdDwvcmVwbGFjZWFibGU+IGlzIG9uZSBvZjo8 L3BocmFzZT4KIAotICAgIEFMTCBUQUJMRVMKKyAgICBBTEwgVEFCTEVTIFsgRVhDRVBUIFRBQkxF ICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmV4Y2VwdF90YWJsZV9vYmplY3Q8L3Jl cGxhY2VhYmxlPiBbLCAuLi4gXSApIF0KICAgICBBTEwgU0VRVUVOQ0VTCiAKIDxwaHJhc2U+YW5k IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9hbmRfY29sdW1uczwvcmVwbGFj ZWFibGU+IGlzOjwvcGhyYXNlPgogCiAgICAgWyBPTkxZIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2VhYmxlPiBbICogXSBbICggPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gKSBd IFsgV0hFUkUgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZXhwcmVzc2lvbjwvcmVw bGFjZWFibGU+ICkgXQorCis8cGhyYXNlPmFuZCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+ZXhjZXB0X3RhYmxlX29iamVjdDwvcmVwbGFjZWFibGU+IGlzOjwvcGhyYXNlPgorCisgICAg WyBPTkxZIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxh Y2VhYmxlPiBbICogXQogPC9zeW5vcHNpcz4KICA8L3JlZnN5bm9wc2lzZGl2PgogCkBAIC0xNjQs NyArMTY4LDggQEAgQ1JFQVRFIFBVQkxJQ0FUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4KICAgICA8bGlzdGl0ZW0+CiAgICAgIDxwYXJhPgogICAg ICAgTWFya3MgdGhlIHB1YmxpY2F0aW9uIGFzIG9uZSB0aGF0IHJlcGxpY2F0ZXMgY2hhbmdlcyBm b3IgYWxsIHRhYmxlcyBpbgotICAgICAgdGhlIGRhdGFiYXNlLCBpbmNsdWRpbmcgdGFibGVzIGNy ZWF0ZWQgaW4gdGhlIGZ1dHVyZS4KKyAgICAgIHRoZSBkYXRhYmFzZSwgaW5jbHVkaW5nIHRhYmxl cyBjcmVhdGVkIGluIHRoZSBmdXR1cmUuIFRhYmxlcyBsaXN0ZWQgaW4KKyAgICAgIEVYQ0VQVCBU QUJMRSBhcmUgZXhjbHVkZWQgZnJvbSB0aGUgcHVibGljYXRpb24uCiAgICAgIDwvcGFyYT4KICAg ICA8L2xpc3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+CkBAIC0xODQsNiArMTg5LDM3IEBAIENS RUFURSBQVUJMSUNBVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVw bGFjZWFibGU+CiAgICAgPC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5PgogCisgICA8dmFy bGlzdGVudHJ5IGlkPSJzcWwtY3JlYXRlcHVibGljYXRpb24tcGFyYW1zLWZvci1leGNlcHQtdGFi bGUiPgorICAgIDx0ZXJtPjxsaXRlcmFsPkVYQ0VQVCBUQUJMRTwvbGl0ZXJhbD48L3Rlcm0+Cisg ICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIFRoaXMgY2xhdXNlIHNwZWNpZmllcyBh IGxpc3Qgb2YgdGFibGVzIHRvIGJlIGV4Y2x1ZGVkIGZyb20gdGhlCisgICAgICBwdWJsaWNhdGlv bi4KKyAgICAgPC9wYXJhPgorICAgICA8cGFyYT4KKyAgICAgIEZvciBpbmhlcml0ZWQgdGFibGVz LCBpZiA8bGl0ZXJhbD5PTkxZPC9saXRlcmFsPiBpcyBzcGVjaWZpZWQgYmVmb3JlIHRoZQorICAg ICAgdGFibGUgbmFtZSwgb25seSB0aGF0IHRhYmxlIGlzIGV4Y2x1ZGVkIGZyb20gdGhlIHB1Ymxp Y2F0aW9uLiBJZgorICAgICAgPGxpdGVyYWw+T05MWTwvbGl0ZXJhbD4gaXMgbm90IHNwZWNpZmll ZCwgdGhlIHRhYmxlIGFuZCBhbGwgaXRzIGRlc2NlbmRhbnQKKyAgICAgIHRhYmxlcyAoaWYgYW55 KSBhcmUgZXhjbHVkZWQuIE9wdGlvbmFsbHksIDxsaXRlcmFsPio8L2xpdGVyYWw+IGNhbiBiZQor ICAgICAgc3BlY2lmaWVkIGFmdGVyIHRoZSB0YWJsZSBuYW1lIHRvIGV4cGxpY2l0bHkgaW5kaWNh dGUgdGhhdCBkZXNjZW5kYW50CisgICAgICB0YWJsZXMgYXJlIGV4Y2x1ZGVkLgorICAgICA8L3Bh cmE+CisgICAgIDxwYXJhPgorICAgICAgRm9yIHBhcnRpdGlvbmVkIHRhYmxlcywgb25seSB0aGUg cm9vdCBwYXJ0aXRpb25lZCB0YWJsZSBtYXkgYmUgc3BlY2lmaWVkCisgICAgICBpbiA8bGl0ZXJh bD5FWENFUFQgVEFCTEU8L2xpdGVyYWw+LiBEb2luZyBzbyBleGNsdWRlcyB0aGUgcm9vdCB0YWJs ZSBhbmQKKyAgICAgIGFsbCBvZiBpdHMgcGFydGl0aW9ucyBmcm9tIHJlcGxpY2F0aW9uLiBUaGUg b3B0aW9uYWwKKyAgICAgIDxsaXRlcmFsPk9OTFk8L2xpdGVyYWw+IGFuZCA8bGl0ZXJhbD4qPC9s aXRlcmFsPiBoYXMgbm8gZWZmZWN0IGZvcgorICAgICAgcGFydGl0aW9uZWQgdGFibGVzLgorICAg ICA8L3BhcmE+CisgICAgIDxwYXJhPgorICAgICAgVGhlcmUgY2FuIGJlIGEgY2FzZSB3aGVyZSBh IHN1YnNjcmlwdGlvbiBpbmNsdWRlcyBtdWx0aXBsZSBwdWJsaWNhdGlvbnMuCisgICAgICBJbiBz dWNoIGEgY2FzZSwgYSB0YWJsZSBvciBwYXJ0aXRpb24gdGhhdCBpcyBpbmNsdWRlZCBpbiBvbmUg cHVibGljYXRpb24KKyAgICAgIGFuZCBsaXN0ZWQgaW4gdGhlIDxsaXRlcmFsPkVYQ0VQVCBUQUJM RTwvbGl0ZXJhbD4gY2xhdXNlIG9mIGFub3RoZXIgaXMKKyAgICAgIGNvbnNpZGVyZWQgaW5jbHVk ZWQgZm9yIHJlcGxpY2F0aW9uLgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwv dmFybGlzdGVudHJ5PgorCiAgICA8dmFybGlzdGVudHJ5IGlkPSJzcWwtY3JlYXRlcHVibGljYXRp b24tcGFyYW1zLXdpdGgiPgogICAgIDx0ZXJtPjxsaXRlcmFsPldJVEggKCA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+cHVibGljYXRpb25fcGFyYW1ldGVyPC9yZXBsYWNlYWJsZT4gWz0g PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnZhbHVlPC9yZXBsYWNlYWJsZT5dIFssIC4u LiBdICk8L2xpdGVyYWw+PC90ZXJtPgogICAgIDxsaXN0aXRlbT4KQEAgLTQ4OSw2ICs1MjUsMjMg QEAgQ1JFQVRFIFBVQkxJQ0FUSU9OIGFsbF9zZXF1ZW5jZXMgRk9SIEFMTCBTRVFVRU5DRVM7CiAg ICBhbGwgc2VxdWVuY2VzIGZvciBzeW5jaHJvbml6YXRpb246CiA8cHJvZ3JhbWxpc3Rpbmc+CiBD UkVBVEUgUFVCTElDQVRJT04gYWxsX3RhYmxlc19zZXF1ZW5jZXMgRk9SIEFMTCBUQUJMRVMsIEFM TCBTRVFVRU5DRVM7Cis8L3Byb2dyYW1saXN0aW5nPgorICA8L3BhcmE+CisKKyAgPHBhcmE+Cisg ICBDcmVhdGUgYSBwdWJsaWNhdGlvbiB0aGF0IHB1Ymxpc2hlcyBhbGwgY2hhbmdlcyBpbiBhbGwg dGFibGVzIGV4Y2VwdAorICAgPHN0cnVjdG5hbWU+dXNlcnM8L3N0cnVjdG5hbWU+IGFuZCA8c3Ry dWN0bmFtZT5kZXBhcnRtZW50czwvc3RydWN0bmFtZT46Cis8cHJvZ3JhbWxpc3Rpbmc+CitDUkVB VEUgUFVCTElDQVRJT04gYWxsX3RhYmxlc19leGNlcHQgRk9SIEFMTCBUQUJMRVMgRVhDRVBUIFRB QkxFICh1c2VycywgZGVwYXJ0bWVudHMpOworPC9wcm9ncmFtbGlzdGluZz4KKyAgPC9wYXJhPgor CisgIDxwYXJhPgorICAgQ3JlYXRlIGEgcHVibGljYXRpb24gdGhhdCBwdWJsaXNoZXMgYWxsIHNl cXVlbmNlcyBmb3Igc3luY2hyb25pemF0aW9uLCBhbmQKKyAgIGFsbCBjaGFuZ2VzIGluIGFsbCB0 YWJsZXMgZXhjZXB0IDxzdHJ1Y3RuYW1lPnVzZXJzPC9zdHJ1Y3RuYW1lPiBhbmQKKyAgIDxzdHJ1 Y3RuYW1lPmRlcGFydG1lbnRzPC9zdHJ1Y3RuYW1lPjoKKzxwcm9ncmFtbGlzdGluZz4KK0NSRUFU RSBQVUJMSUNBVElPTiBhbGxfc2VxdWVuY2VzX3RhYmxlc19leGNlcHQgRk9SIEFMTCBTRVFVRU5D RVMsIEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxFICh1c2VycywgZGVwYXJ0bWVudHMpOwogPC9wcm9n cmFtbGlzdGluZz4KICAgPC9wYXJhPgogIDwvcmVmc2VjdDE+CmRpZmYgLS1naXQgYS9kb2Mvc3Jj L3NnbWwvcmVmL3BzcWwtcmVmLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL3BzcWwtcmVmLnNnbWwK aW5kZXggMzU1MGJkYTRkODAuLjBlNTQzZmRkNmEyIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwv cmVmL3BzcWwtcmVmLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9wc3FsLXJlZi5zZ21sCkBA IC0yMTAzLDggKzIxMDMsOSBAQCBTRUxFQ1QgJDEgXHBhcnNlIHN0bXQxCiAgICAgICAgIGxpc3Rl ZC4KICAgICAgICAgSWYgPGxpdGVyYWw+eDwvbGl0ZXJhbD4gaXMgYXBwZW5kZWQgdG8gdGhlIGNv bW1hbmQgbmFtZSwgdGhlIHJlc3VsdHMKICAgICAgICAgYXJlIGRpc3BsYXllZCBpbiBleHBhbmRl ZCBtb2RlLgotICAgICAgICBJZiA8bGl0ZXJhbD4rPC9saXRlcmFsPiBpcyBhcHBlbmRlZCB0byB0 aGUgY29tbWFuZCBuYW1lLCB0aGUgdGFibGVzIGFuZAotICAgICAgICBzY2hlbWFzIGFzc29jaWF0 ZWQgd2l0aCBlYWNoIHB1YmxpY2F0aW9uIGFyZSBzaG93biBhcyB3ZWxsLgorICAgICAgICBJZiA8 bGl0ZXJhbD4rPC9saXRlcmFsPiBpcyBhcHBlbmRlZCB0byB0aGUgY29tbWFuZCBuYW1lLCB0aGUg dGFibGVzLAorICAgICAgICBleGNsdWRlZCB0YWJsZXMsIGFuZCBzY2hlbWFzIGFzc29jaWF0ZWQg d2l0aCBlYWNoIHB1YmxpY2F0aW9uIGFyZSBzaG93bgorICAgICAgICBhcyB3ZWxsLgogICAgICAg ICA8L3BhcmE+CiAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICA8L3Zhcmxpc3RlbnRyeT4KZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcHVibGljYXRpb24uYyBiL3NyYy9iYWNr ZW5kL2NhdGFsb2cvcGdfcHVibGljYXRpb24uYwppbmRleCA5YTQ3OTFjNTczZS4uY2U1ZDMwZDZh ZWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcHVibGljYXRpb24uYworKysg Yi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMKQEAgLTUzLDM3ICs1Myw0OCBA QCB0eXBlZGVmIHN0cnVjdAogICogZXJyb3IgaWYgbm90LgogICovCiBzdGF0aWMgdm9pZAotY2hl Y2tfcHVibGljYXRpb25fYWRkX3JlbGF0aW9uKFJlbGF0aW9uIHRhcmdldHJlbCkKK2NoZWNrX3B1 YmxpY2F0aW9uX2FkZF9yZWxhdGlvbihQdWJsaWNhdGlvblJlbEluZm8gKnByaSkKIHsKKwlSZWxh dGlvbgl0YXJnZXRyZWwgPSBwcmktPnJlbGF0aW9uOworCWNvbnN0IGNoYXIgKmVycm9ybXNnOwor CisJaWYgKHByaS0+ZXhjZXB0KQorCQllcnJvcm1zZyA9IGdldHRleHRfbm9vcCgiY2Fubm90IHVz ZSBwdWJsaWNhdGlvbiBFWENFUFQgY2xhdXNlIGZvciByZWxhdGlvbiBcIiVzXCIiKTsKKwllbHNl CisJCWVycm9ybXNnID0gZ2V0dGV4dF9ub29wKCJjYW5ub3QgYWRkIHJlbGF0aW9uIFwiJXNcIiB0 byBwdWJsaWNhdGlvbiIpOworCisJLyogSWYgaW4gRVhDRVBUIGNsYXVzZSwgbXVzdCBiZSByb290 IHBhcnRpdGlvbmVkIHRhYmxlICovCisJaWYgKHByaS0+ZXhjZXB0ICYmIHRhcmdldHJlbC0+cmRf cmVsLT5yZWxpc3BhcnRpdGlvbikKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJD T0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQkgZXJybXNnKGVycm9ybXNnLCBSZWxh dGlvbkdldFJlbGF0aW9uTmFtZSh0YXJnZXRyZWwpKSwKKwkJCQkgZXJyZGV0YWlsKCJUaGlzIG9w ZXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGZvciBpbmRpdmlkdWFsIHBhcnRpdGlvbnMuIikpKTsK KwogCS8qIE11c3QgYmUgYSByZWd1bGFyIG9yIHBhcnRpdGlvbmVkIHRhYmxlICovCiAJaWYgKFJl bGF0aW9uR2V0Rm9ybSh0YXJnZXRyZWwpLT5yZWxraW5kICE9IFJFTEtJTkRfUkVMQVRJT04gJiYK IAkJUmVsYXRpb25HZXRGb3JtKHRhcmdldHJlbCktPnJlbGtpbmQgIT0gUkVMS0lORF9QQVJUSVRJ T05FRF9UQUJMRSkKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFM SURfUEFSQU1FVEVSX1ZBTFVFKSwKLQkJCQkgZXJybXNnKCJjYW5ub3QgYWRkIHJlbGF0aW9uIFwi JXNcIiB0byBwdWJsaWNhdGlvbiIsCi0JCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZSh0YXJn ZXRyZWwpKSwKKwkJCQkgZXJybXNnKGVycm9ybXNnLCBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZSh0 YXJnZXRyZWwpKSwKIAkJCQkgZXJyZGV0YWlsX3JlbGtpbmRfbm90X3N1cHBvcnRlZChSZWxhdGlv bkdldEZvcm0odGFyZ2V0cmVsKS0+cmVsa2luZCkpKTsKIAogCS8qIENhbid0IGJlIHN5c3RlbSB0 YWJsZSAqLwogCWlmIChJc0NhdGFsb2dSZWxhdGlvbih0YXJnZXRyZWwpKQogCQllcmVwb3J0KEVS Uk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAotCQkJ CSBlcnJtc2coImNhbm5vdCBhZGQgcmVsYXRpb24gXCIlc1wiIHRvIHB1YmxpY2F0aW9uIiwKLQkJ CQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHRhcmdldHJlbCkpLAorCQkJCSBlcnJtc2coZXJy b3Jtc2csIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHRhcmdldHJlbCkpLAogCQkJCSBlcnJkZXRh aWwoIlRoaXMgb3BlcmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHN5c3RlbSB0YWJsZXMuIikp KTsKIAogCS8qIFVOTE9HR0VEIGFuZCBURU1QIHJlbGF0aW9ucyBjYW5ub3QgYmUgcGFydCBvZiBw dWJsaWNhdGlvbi4gKi8KIAlpZiAodGFyZ2V0cmVsLT5yZF9yZWwtPnJlbHBlcnNpc3RlbmNlID09 IFJFTFBFUlNJU1RFTkNFX1RFTVApCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJS Q09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCi0JCQkJIGVycm1zZygiY2Fubm90IGFkZCBy ZWxhdGlvbiBcIiVzXCIgdG8gcHVibGljYXRpb24iLAotCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlv bk5hbWUodGFyZ2V0cmVsKSksCisJCQkJIGVycm1zZyhlcnJvcm1zZywgUmVsYXRpb25HZXRSZWxh dGlvbk5hbWUodGFyZ2V0cmVsKSksCiAJCQkJIGVycmRldGFpbCgiVGhpcyBvcGVyYXRpb24gaXMg bm90IHN1cHBvcnRlZCBmb3IgdGVtcG9yYXJ5IHRhYmxlcy4iKSkpOwogCWVsc2UgaWYgKHRhcmdl dHJlbC0+cmRfcmVsLT5yZWxwZXJzaXN0ZW5jZSA9PSBSRUxQRVJTSVNURU5DRV9VTkxPR0dFRCkK IAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVS X1ZBTFVFKSwKLQkJCQkgZXJybXNnKCJjYW5ub3QgYWRkIHJlbGF0aW9uIFwiJXNcIiB0byBwdWJs aWNhdGlvbiIsCi0JCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZSh0YXJnZXRyZWwpKSwKKwkJ CQkgZXJybXNnKGVycm9ybXNnLCBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZSh0YXJnZXRyZWwpKSwK IAkJCQkgZXJyZGV0YWlsKCJUaGlzIG9wZXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGZvciB1bmxv Z2dlZCB0YWJsZXMuIikpKTsKIH0KIApAQCAtMzY2LDcgKzM3Nyw3IEBAIEdldFRvcE1vc3RBbmNl c3RvckluUHVibGljYXRpb24oT2lkIHB1Ym9pZCwgTGlzdCAqYW5jZXN0b3JzLCBpbnQgKmFuY2Vz dG9yX2xldmVsCiAJZm9yZWFjaChsYywgYW5jZXN0b3JzKQogCXsKIAkJT2lkCQkJYW5jZXN0b3Ig PSBsZmlyc3Rfb2lkKGxjKTsKLQkJTGlzdAkgICAqYXB1YmlkcyA9IEdldFJlbGF0aW9uUHVibGlj YXRpb25zKGFuY2VzdG9yKTsKKwkJTGlzdAkgICAqYXB1YmlkcyA9IEdldFJlbGF0aW9uSW5jbHVk ZWRQdWJsaWNhdGlvbnMoYW5jZXN0b3IpOwogCQlMaXN0CSAgICphc2NoZW1hUHViaWRzID0gTklM OwogCiAJCWxldmVsKys7CkBAIC00NjYsNyArNDc3LDcgQEAgcHVibGljYXRpb25fYWRkX3JlbGF0 aW9uKE9pZCBwdWJpZCwgUHVibGljYXRpb25SZWxJbmZvICpwcmksCiAJCQkJCQlSZWxhdGlvbkdl dFJlbGF0aW9uTmFtZSh0YXJnZXRyZWwpLCBwdWItPm5hbWUpKSk7CiAJfQogCi0JY2hlY2tfcHVi bGljYXRpb25fYWRkX3JlbGF0aW9uKHRhcmdldHJlbCk7CisJY2hlY2tfcHVibGljYXRpb25fYWRk X3JlbGF0aW9uKHByaSk7CiAKIAkvKiBWYWxpZGF0ZSBhbmQgdHJhbnNsYXRlIGNvbHVtbiBuYW1l cyBpbnRvIGEgQml0bWFwc2V0IG9mIGF0dG51bXMuICovCiAJYXR0bnVtcyA9IHB1Yl9jb2xsaXN0 X3ZhbGlkYXRlKHByaS0+cmVsYXRpb24sIHByaS0+Y29sdW1ucyk7CkBAIC00ODIsNiArNDkzLDgg QEAgcHVibGljYXRpb25fYWRkX3JlbGF0aW9uKE9pZCBwdWJpZCwgUHVibGljYXRpb25SZWxJbmZv ICpwcmksCiAJCU9iamVjdElkR2V0RGF0dW0ocHViaWQpOwogCXZhbHVlc1tBbnVtX3BnX3B1Ymxp Y2F0aW9uX3JlbF9wcnJlbGlkIC0gMV0gPQogCQlPYmplY3RJZEdldERhdHVtKHJlbGlkKTsKKwl2 YWx1ZXNbQW51bV9wZ19wdWJsaWNhdGlvbl9yZWxfcHJleGNlcHQgLSAxXSA9CisJCUJvb2xHZXRE YXR1bShwcmktPmV4Y2VwdCk7CiAKIAkvKiBBZGQgcXVhbGlmaWNhdGlvbnMsIGlmIGF2YWlsYWJs ZSAqLwogCWlmIChwcmktPndoZXJlQ2xhdXNlICE9IE5VTEwpCkBAIC01MzAsMTcgKzU0MywyNiBA QCBwdWJsaWNhdGlvbl9hZGRfcmVsYXRpb24oT2lkIHB1YmlkLCBQdWJsaWNhdGlvblJlbEluZm8g KnByaSwKIAl0YWJsZV9jbG9zZShyZWwsIFJvd0V4Y2x1c2l2ZUxvY2spOwogCiAJLyoKLQkgKiBJ bnZhbGlkYXRlIHJlbGNhY2hlIHNvIHRoYXQgcHVibGljYXRpb24gaW5mbyBpcyByZWJ1aWx0Lgot CSAqCi0JICogRm9yIHRoZSBwYXJ0aXRpb25lZCB0YWJsZXMsIHdlIG11c3QgaW52YWxpZGF0ZSBh bGwgcGFydGl0aW9ucyBjb250YWluZWQKLQkgKiBpbiB0aGUgcmVzcGVjdGl2ZSBwYXJ0aXRpb24g aGllcmFyY2hpZXMsIG5vdCBqdXN0IHRoZSBvbmUgZXhwbGljaXRseQotCSAqIG1lbnRpb25lZCBp biB0aGUgcHVibGljYXRpb24uIFRoaXMgaXMgcmVxdWlyZWQgYmVjYXVzZSB3ZSBpbXBsaWNpdGx5 Ci0JICogcHVibGlzaCB0aGUgY2hpbGQgdGFibGVzIHdoZW4gdGhlIHBhcmVudCB0YWJsZSBpcyBw dWJsaXNoZWQuCisJICogUmVsYXRpb25zIGV4Y2x1ZGVkIHZpYSB0aGUgRVhDRVBUIGNsYXVzZSBk byBub3QgbmVlZCBleHBsaWNpdAorCSAqIGludmFsaWRhdGlvbiBhcyBDcmVhdGVQdWJsaWNhdGlv bigpIGZ1bmN0aW9uIGludmFsaWRhdGVzIGFsbCByZWxhdGlvbnMKKwkgKiBhcyBwYXJ0IG9mIGRl ZmluaW5nIGEgRk9SIEFMTCBUQUJMRVMgcHVibGljYXRpb24uCiAJICovCi0JcmVsaWRzID0gR2V0 UHViUGFydGl0aW9uT3B0aW9uUmVsYXRpb25zKHJlbGlkcywgUFVCTElDQVRJT05fUEFSVF9BTEws Ci0JCQkJCQkJCQkJCXJlbGlkKTsKKwlpZiAoIXByaS0+ZXhjZXB0KQorCXsKKwkJLyoKKwkJICog SW52YWxpZGF0ZSByZWxjYWNoZSBzbyB0aGF0IHB1YmxpY2F0aW9uIGluZm8gaXMgcmVidWlsdC4K KwkJICoKKwkJICogRm9yIHRoZSBwYXJ0aXRpb25lZCB0YWJsZXMsIHdlIG11c3QgaW52YWxpZGF0 ZSBhbGwgcGFydGl0aW9ucworCQkgKiBjb250YWluZWQgaW4gdGhlIHJlc3BlY3RpdmUgcGFydGl0 aW9uIGhpZXJhcmNoaWVzLCBub3QganVzdCB0aGUgb25lCisJCSAqIGV4cGxpY2l0bHkgbWVudGlv bmVkIGluIHRoZSBwdWJsaWNhdGlvbi4gVGhpcyBpcyByZXF1aXJlZCBiZWNhdXNlCisJCSAqIHdl IGltcGxpY2l0bHkgcHVibGlzaCB0aGUgY2hpbGQgdGFibGVzIHdoZW4gdGhlIHBhcmVudCB0YWJs ZSBpcworCQkgKiBwdWJsaXNoZWQuCisJCSAqLworCQlyZWxpZHMgPSBHZXRQdWJQYXJ0aXRpb25P cHRpb25SZWxhdGlvbnMocmVsaWRzLCBQVUJMSUNBVElPTl9QQVJUX0FMTCwKKwkJCQkJCQkJCQkJ CXJlbGlkKTsKIAotCUludmFsaWRhdGVQdWJsaWNhdGlvblJlbHMocmVsaWRzKTsKKwkJSW52YWxp ZGF0ZVB1YmxpY2F0aW9uUmVscyhyZWxpZHMpOworCX0KIAogCXJldHVybiBteXNlbGY7CiB9CkBA IC03NDksMjMgKzc3MSwzMCBAQCBwdWJsaWNhdGlvbl9hZGRfc2NoZW1hKE9pZCBwdWJpZCwgT2lk IHNjaGVtYWlkLCBib29sIGlmX25vdF9leGlzdHMpCiAJcmV0dXJuIG15c2VsZjsKIH0KIAotLyog R2V0cyBsaXN0IG9mIHB1YmxpY2F0aW9uIG9pZHMgZm9yIGEgcmVsYXRpb24gKi8KLUxpc3QgKgot R2V0UmVsYXRpb25QdWJsaWNhdGlvbnMoT2lkIHJlbGlkKQorLyoKKyAqIEludGVybmFsIGZ1bmN0 aW9uIHRvIGdldCB0aGUgbGlzdCBvZiBwdWJsaWNhdGlvbiBvaWRzIGZvciBhIHJlbGF0aW9uLgor ICoKKyAqIElmIGV4Y2VwdF9mbGFnIGlzIHRydWUsIHJldHVybnMgdGhlIGxpc3Qgb2YgcHVibGlj YXRpb24gd2hpY2ggc3BlY2lmaWVkIHRoZQorICogcmVsYXRpb24gaW4gRVhDRVBUIGNsYXVzZTsg b3RoZXJ3aXNlLCByZXR1cm5zIHRoZSBsaXN0IG9mIHB1YmxpY2F0aW9ucworICogaW4gd2hpY2gg cmVsYXRpb24gaXMgaW5jbHVkZWQuCisgKi8KK3N0YXRpYyBMaXN0ICoKK2dldF9yZWxhdGlvbl9w dWJsaWNhdGlvbnMoT2lkIHJlbGlkLCBib29sIGV4Y2VwdF9mbGFnKQogewogCUxpc3QJICAgKnJl c3VsdCA9IE5JTDsKIAlDYXRDTGlzdCAgICpwdWJyZWxsaXN0OwotCWludAkJCWk7CiAKIAkvKiBG aW5kIGFsbCBwdWJsaWNhdGlvbnMgYXNzb2NpYXRlZCB3aXRoIHRoZSByZWxhdGlvbi4gKi8KIAlw dWJyZWxsaXN0ID0gU2VhcmNoU3lzQ2FjaGVMaXN0MShQVUJMSUNBVElPTlJFTE1BUCwKIAkJCQkJ CQkJCSBPYmplY3RJZEdldERhdHVtKHJlbGlkKSk7Ci0JZm9yIChpID0gMDsgaSA8IHB1YnJlbGxp c3QtPm5fbWVtYmVyczsgaSsrKQorCWZvciAoaW50IGkgPSAwOyBpIDwgcHVicmVsbGlzdC0+bl9t ZW1iZXJzOyBpKyspCiAJewogCQlIZWFwVHVwbGUJdHVwID0gJnB1YnJlbGxpc3QtPm1lbWJlcnNb aV0tPnR1cGxlOwotCQlPaWQJCQlwdWJpZCA9ICgoRm9ybV9wZ19wdWJsaWNhdGlvbl9yZWwpIEdF VFNUUlVDVCh0dXApKS0+cHJwdWJpZDsKKwkJRm9ybV9wZ19wdWJsaWNhdGlvbl9yZWwgcHVicmVs ID0gKEZvcm1fcGdfcHVibGljYXRpb25fcmVsKSBHRVRTVFJVQ1QodHVwKTsKKwkJT2lkCQkJcHVi aWQgPSBwdWJyZWwtPnBycHViaWQ7CiAKLQkJcmVzdWx0ID0gbGFwcGVuZF9vaWQocmVzdWx0LCBw dWJpZCk7CisJCWlmIChwdWJyZWwtPnByZXhjZXB0ID09IGV4Y2VwdF9mbGFnKQorCQkJcmVzdWx0 ID0gbGFwcGVuZF9vaWQocmVzdWx0LCBwdWJpZCk7CiAJfQogCiAJUmVsZWFzZVN5c0NhY2hlTGlz dChwdWJyZWxsaXN0KTsKQEAgLTc3NCwxMyArODAzLDMzIEBAIEdldFJlbGF0aW9uUHVibGljYXRp b25zKE9pZCByZWxpZCkKIH0KIAogLyoKLSAqIEdldHMgbGlzdCBvZiByZWxhdGlvbiBvaWRzIGZv ciBhIHB1YmxpY2F0aW9uLgotICoKLSAqIFRoaXMgc2hvdWxkIG9ubHkgYmUgdXNlZCBGT1IgVEFC TEUgcHVibGljYXRpb25zLCB0aGUgRk9SIEFMTCBUQUJMRVMvU0VRVUVOQ0VTCi0gKiBzaG91bGQg dXNlIEdldEFsbFB1YmxpY2F0aW9uUmVsYXRpb25zKCkuCisgKiBHZXRzIGxpc3Qgb2YgcHVibGlj YXRpb24gb2lkcyBmb3IgYSByZWxhdGlvbi4KKyAqLworTGlzdCAqCitHZXRSZWxhdGlvbkluY2x1 ZGVkUHVibGljYXRpb25zKE9pZCByZWxpZCkKK3sKKwlyZXR1cm4gZ2V0X3JlbGF0aW9uX3B1Ymxp Y2F0aW9ucyhyZWxpZCwgZmFsc2UpOworfQorCisvKgorICogR2V0cyBsaXN0IG9mIHB1YmxpY2F0 aW9uIG9pZHMgd2hpY2ggaGFzIHJlbGF0aW9uIGluIEVYQ0VQVCBjbGF1c2UuCiAgKi8KIExpc3Qg KgotR2V0UHVibGljYXRpb25SZWxhdGlvbnMoT2lkIHB1YmlkLCBQdWJsaWNhdGlvblBhcnRPcHQg cHViX3BhcnRvcHQpCitHZXRSZWxhdGlvbkV4Y2x1ZGVkUHVibGljYXRpb25zKE9pZCByZWxpZCkK K3sKKwlyZXR1cm4gZ2V0X3JlbGF0aW9uX3B1YmxpY2F0aW9ucyhyZWxpZCwgdHJ1ZSk7Cit9CisK Ky8qCisgKiBJbnRlcm5hbCBmdW5jdGlvbiB0byBnZXQgdGhlIGxpc3Qgb2YgcmVsYXRpb24gb2lk cyBmb3IgYSBwdWJsaWNhdGlvbi4KKyAqCisgKiBJZiBleGNlcHRfZmxhZyBpcyB0cnVlLCByZXR1 cm5zIHRoZSBsaXN0IG9mIHJlbGF0aW9ucyBzcGVjaWZpZWQgaW4gdGhlCisgKiBFWENFUFQgY2xh dXNlIG9mIHRoZSBwdWJsaWNhdGlvbjsgb3RoZXJ3aXNlLCByZXR1cm5zIHRoZSBsaXN0IG9mIHJl bGF0aW9ucworICogaW5jbHVkZWQgaW4gdGhlIHB1YmxpY2F0aW9uLgorICovCitzdGF0aWMgTGlz dCAqCitnZXRfcHVibGljYXRpb25fcmVsYXRpb25zKE9pZCBwdWJpZCwgUHVibGljYXRpb25QYXJ0 T3B0IHB1Yl9wYXJ0b3B0LAorCQkJCQkJICBib29sIGV4Y2VwdF9mbGFnKQogewogCUxpc3QJICAg KnJlc3VsdDsKIAlSZWxhdGlvbglwdWJyZWxzcmVsOwpAQCAtODA1LDggKzg1NCwxMCBAQCBHZXRQ dWJsaWNhdGlvblJlbGF0aW9ucyhPaWQgcHViaWQsIFB1YmxpY2F0aW9uUGFydE9wdCBwdWJfcGFy dG9wdCkKIAkJRm9ybV9wZ19wdWJsaWNhdGlvbl9yZWwgcHVicmVsOwogCiAJCXB1YnJlbCA9IChG b3JtX3BnX3B1YmxpY2F0aW9uX3JlbCkgR0VUU1RSVUNUKHR1cCk7Ci0JCXJlc3VsdCA9IEdldFB1 YlBhcnRpdGlvbk9wdGlvblJlbGF0aW9ucyhyZXN1bHQsIHB1Yl9wYXJ0b3B0LAotCQkJCQkJCQkJ CQkJcHVicmVsLT5wcnJlbGlkKTsKKworCQlpZiAoZXhjZXB0X2ZsYWcgPT0gcHVicmVsLT5wcmV4 Y2VwdCkKKwkJCXJlc3VsdCA9IEdldFB1YlBhcnRpdGlvbk9wdGlvblJlbGF0aW9ucyhyZXN1bHQs IHB1Yl9wYXJ0b3B0LAorCQkJCQkJCQkJCQkJCXB1YnJlbC0+cHJyZWxpZCk7CiAJfQogCiAJc3lz dGFibGVfZW5kc2NhbihzY2FuKTsKQEAgLTgxOSw2ICs4NzAsMzQgQEAgR2V0UHVibGljYXRpb25S ZWxhdGlvbnMoT2lkIHB1YmlkLCBQdWJsaWNhdGlvblBhcnRPcHQgcHViX3BhcnRvcHQpCiAJcmV0 dXJuIHJlc3VsdDsKIH0KIAorLyoKKyAqIEdldHMgbGlzdCBvZiByZWxhdGlvbiBvaWRzIHRoYXQg YXJlIGFzc29jaWF0ZWQgd2l0aCBhIHB1YmxpY2F0aW9uLgorICoKKyAqIFRoaXMgc2hvdWxkIG9u bHkgYmUgdXNlZCBGT1IgVEFCTEUgcHVibGljYXRpb25zLCB0aGUgRk9SIEFMTCBUQUJMRVMvU0VR VUVOQ0VTCisgKiBzaG91bGQgdXNlIEdldEFsbFB1YmxpY2F0aW9uUmVsYXRpb25zKCkuCisgKi8K K0xpc3QgKgorR2V0SW5jbHVkZWRQdWJsaWNhdGlvblJlbGF0aW9ucyhPaWQgcHViaWQsIFB1Ymxp Y2F0aW9uUGFydE9wdCBwdWJfcGFydG9wdCkKK3sKKwlBc3NlcnQoIUdldFB1YmxpY2F0aW9uKHB1 YmlkKS0+YWxsdGFibGVzKTsKKworCXJldHVybiBnZXRfcHVibGljYXRpb25fcmVsYXRpb25zKHB1 YmlkLCBwdWJfcGFydG9wdCwgZmFsc2UpOworfQorCisvKgorICogR2V0cyBsaXN0IG9mIHRhYmxl IG9pZHMgdGhhdCB3ZXJlIHNwZWNpZmllZCBpbiB0aGUgRVhDRVBUIGNsYXVzZSBmb3IgYQorICog cHVibGljYXRpb24uCisgKgorICogVGhpcyBzaG91bGQgb25seSBiZSB1c2VkIEZPUiBBTEwgVEFC TEVTIHB1YmxpY2F0aW9ucy4KKyAqLworTGlzdCAqCitHZXRFeGNsdWRlZFB1YmxpY2F0aW9uVGFi bGVzKE9pZCBwdWJpZCwgUHVibGljYXRpb25QYXJ0T3B0IHB1Yl9wYXJ0b3B0KQoreworCUFzc2Vy dChHZXRQdWJsaWNhdGlvbihwdWJpZCktPmFsbHRhYmxlcyk7CisKKwlyZXR1cm4gZ2V0X3B1Ymxp Y2F0aW9uX3JlbGF0aW9ucyhwdWJpZCwgcHViX3BhcnRvcHQsIHRydWUpOworfQorCiAvKgogICog R2V0cyBsaXN0IG9mIHB1YmxpY2F0aW9uIG9pZHMgZm9yIHB1YmxpY2F0aW9ucyBtYXJrZWQgYXMg Rk9SIEFMTCBUQUJMRVMuCiAgKi8KQEAgLTg1OCwyNCArOTM3LDM0IEBAIEdldEFsbFRhYmxlc1B1 YmxpY2F0aW9ucyh2b2lkKQogCiAvKgogICogR2V0cyBsaXN0IG9mIGFsbCByZWxhdGlvbnMgcHVi bGlzaGVkIGJ5IEZPUiBBTEwgVEFCTEVTL1NFUVVFTkNFUwotICogcHVibGljYXRpb24ocykuCisg KiBwdWJsaWNhdGlvbi4KICAqCiAgKiBJZiB0aGUgcHVibGljYXRpb24gcHVibGlzaGVzIHBhcnRp dGlvbiBjaGFuZ2VzIHZpYSB0aGVpciByZXNwZWN0aXZlIHJvb3QKICAqIHBhcnRpdGlvbmVkIHRh Ymxlcywgd2UgbXVzdCBleGNsdWRlIHBhcnRpdGlvbnMgaW4gZmF2b3Igb2YgaW5jbHVkaW5nIHRo ZQogICogcm9vdCBwYXJ0aXRpb25lZCB0YWJsZXMuIFRoaXMgaXMgbm90IGFwcGxpY2FibGUgdG8g Rk9SIEFMTCBTRVFVRU5DRVMKICAqIHB1YmxpY2F0aW9uLgorICoKKyAqIEZvciBhIEZPUiBBTEwg VEFCTEVTIHB1YmxpY2F0aW9uLCB0aGUgcmV0dXJuZWQgbGlzdCBleGNsdWRlcyB0YWJsZXMgbWVu dGlvbmVkCisgKiBpbiBFWENFUFQgVEFCTEUgY2xhdXNlLgogICovCiBMaXN0ICoKLUdldEFsbFB1 YmxpY2F0aW9uUmVsYXRpb25zKGNoYXIgcmVsa2luZCwgYm9vbCBwdWJ2aWFyb290KQorR2V0QWxs UHVibGljYXRpb25SZWxhdGlvbnMoT2lkIHB1YmlkLCBjaGFyIHJlbGtpbmQsIGJvb2wgcHVidmlh cm9vdCkKIHsKIAlSZWxhdGlvbgljbGFzc1JlbDsKIAlTY2FuS2V5RGF0YSBrZXlbMV07CiAJVGFi bGVTY2FuRGVzYyBzY2FuOwogCUhlYXBUdXBsZQl0dXBsZTsKIAlMaXN0CSAgICpyZXN1bHQgPSBO SUw7CisJTGlzdAkgICAqZXhjZXB0bGlzdCA9IE5JTDsKIAogCUFzc2VydCghKHJlbGtpbmQgPT0g UkVMS0lORF9TRVFVRU5DRSAmJiBwdWJ2aWFyb290KSk7CiAKKwkvKiBFWENFUFQgZmlsdGVyaW5n IGFwcGxpZXMgb25seSB0byByZWxhdGlvbnMsIG5vdCBzZXF1ZW5jZXMgKi8KKwlpZiAocmVsa2lu ZCA9PSBSRUxLSU5EX1JFTEFUSU9OKQorCQlleGNlcHRsaXN0ID0gR2V0RXhjbHVkZWRQdWJsaWNh dGlvblRhYmxlcyhwdWJpZCwgcHVidmlhcm9vdCA/CisJCQkJCQkJCQkJCQkgIFBVQkxJQ0FUSU9O X1BBUlRfUk9PVCA6CisJCQkJCQkJCQkJCQkgIFBVQkxJQ0FUSU9OX1BBUlRfTEVBRik7CisKIAlj bGFzc1JlbCA9IHRhYmxlX29wZW4oUmVsYXRpb25SZWxhdGlvbklkLCBBY2Nlc3NTaGFyZUxvY2sp OwogCiAJU2NhbktleUluaXQoJmtleVswXSwKQEAgLTg5MSw3ICs5ODAsOCBAQCBHZXRBbGxQdWJs aWNhdGlvblJlbGF0aW9ucyhjaGFyIHJlbGtpbmQsIGJvb2wgcHVidmlhcm9vdCkKIAkJT2lkCQkJ cmVsaWQgPSByZWxGb3JtLT5vaWQ7CiAKIAkJaWYgKGlzX3B1Ymxpc2hhYmxlX2NsYXNzKHJlbGlk LCByZWxGb3JtKSAmJgotCQkJIShyZWxGb3JtLT5yZWxpc3BhcnRpdGlvbiAmJiBwdWJ2aWFyb290 KSkKKwkJCSEocmVsRm9ybS0+cmVsaXNwYXJ0aXRpb24gJiYgcHVidmlhcm9vdCkgJiYKKwkJCSFs aXN0X21lbWJlcl9vaWQoZXhjZXB0bGlzdCwgcmVsaWQpKQogCQkJcmVzdWx0ID0gbGFwcGVuZF9v aWQocmVzdWx0LCByZWxpZCk7CiAJfQogCkBAIC05MTIsNyArMTAwMiw4IEBAIEdldEFsbFB1Ymxp Y2F0aW9uUmVsYXRpb25zKGNoYXIgcmVsa2luZCwgYm9vbCBwdWJ2aWFyb290KQogCQkJT2lkCQkJ cmVsaWQgPSByZWxGb3JtLT5vaWQ7CiAKIAkJCWlmIChpc19wdWJsaXNoYWJsZV9jbGFzcyhyZWxp ZCwgcmVsRm9ybSkgJiYKLQkJCQkhcmVsRm9ybS0+cmVsaXNwYXJ0aXRpb24pCisJCQkJIXJlbEZv cm0tPnJlbGlzcGFydGl0aW9uICYmCisJCQkJIWxpc3RfbWVtYmVyX29pZChleGNlcHRsaXN0LCBy ZWxpZCkpCiAJCQkJcmVzdWx0ID0gbGFwcGVuZF9vaWQocmVzdWx0LCByZWxpZCk7CiAJCX0KIApA QCAtMTE2OCwxNyArMTI1OSwxOCBAQCBwZ19nZXRfcHVibGljYXRpb25fdGFibGVzKFBHX0ZVTkNU SU9OX0FSR1MpCiAJCQkgKiB0aG9zZS4gT3RoZXJ3aXNlLCBnZXQgdGhlIHBhcnRpdGlvbmVkIHRh YmxlIGl0c2VsZi4KIAkJCSAqLwogCQkJaWYgKHB1Yl9lbGVtLT5hbGx0YWJsZXMpCi0JCQkJcHVi X2VsZW1fdGFibGVzID0gR2V0QWxsUHVibGljYXRpb25SZWxhdGlvbnMoUkVMS0lORF9SRUxBVElP TiwKKwkJCQlwdWJfZWxlbV90YWJsZXMgPSBHZXRBbGxQdWJsaWNhdGlvblJlbGF0aW9ucyhwdWJf ZWxlbS0+b2lkLAorCQkJCQkJCQkJCQkJCQkJIFJFTEtJTkRfUkVMQVRJT04sCiAJCQkJCQkJCQkJ CQkJCQkgcHViX2VsZW0tPnB1YnZpYXJvb3QpOwogCQkJZWxzZQogCQkJewogCQkJCUxpc3QJICAg KnJlbGlkcywKIAkJCQkJCSAgICpzY2hlbWFyZWxpZHM7CiAKLQkJCQlyZWxpZHMgPSBHZXRQdWJs aWNhdGlvblJlbGF0aW9ucyhwdWJfZWxlbS0+b2lkLAotCQkJCQkJCQkJCQkJIHB1Yl9lbGVtLT5w dWJ2aWFyb290ID8KLQkJCQkJCQkJCQkJCSBQVUJMSUNBVElPTl9QQVJUX1JPT1QgOgotCQkJCQkJ CQkJCQkJIFBVQkxJQ0FUSU9OX1BBUlRfTEVBRik7CisJCQkJcmVsaWRzID0gR2V0SW5jbHVkZWRQ dWJsaWNhdGlvblJlbGF0aW9ucyhwdWJfZWxlbS0+b2lkLAorCQkJCQkJCQkJCQkJCQkgcHViX2Vs ZW0tPnB1YnZpYXJvb3QgPworCQkJCQkJCQkJCQkJCQkgUFVCTElDQVRJT05fUEFSVF9ST09UIDoK KwkJCQkJCQkJCQkJCQkJIFBVQkxJQ0FUSU9OX1BBUlRfTEVBRik7CiAJCQkJc2NoZW1hcmVsaWRz ID0gR2V0QWxsU2NoZW1hUHVibGljYXRpb25SZWxhdGlvbnMocHViX2VsZW0tPm9pZCwKIAkJCQkJ CQkJCQkJCQkJCQlwdWJfZWxlbS0+cHVidmlhcm9vdCA/CiAJCQkJCQkJCQkJCQkJCQkJUFVCTElD QVRJT05fUEFSVF9ST09UIDoKQEAgLTEzNjcsNyArMTQ1OSw5IEBAIHBnX2dldF9wdWJsaWNhdGlv bl9zZXF1ZW5jZXMoUEdfRlVOQ1RJT05fQVJHUykKIAkJcHVibGljYXRpb24gPSBHZXRQdWJsaWNh dGlvbkJ5TmFtZShwdWJuYW1lLCBmYWxzZSk7CiAKIAkJaWYgKHB1YmxpY2F0aW9uLT5hbGxzZXF1 ZW5jZXMpCi0JCQlzZXF1ZW5jZXMgPSBHZXRBbGxQdWJsaWNhdGlvblJlbGF0aW9ucyhSRUxLSU5E X1NFUVVFTkNFLCBmYWxzZSk7CisJCQlzZXF1ZW5jZXMgPSBHZXRBbGxQdWJsaWNhdGlvblJlbGF0 aW9ucyhwdWJsaWNhdGlvbi0+b2lkLAorCQkJCQkJCQkJCQkJICAgUkVMS0lORF9TRVFVRU5DRSwK KwkJCQkJCQkJCQkJCSAgIGZhbHNlKTsKIAogCQlmdW5jY3R4LT51c2VyX2ZjdHggPSBzZXF1ZW5j ZXM7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5j IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMKaW5kZXggZmMzYTRjMTll NjUuLjZhM2NhNDc1MWZhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9wdWJsaWNh dGlvbmNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYwpA QCAtMTgxLDcgKzE4MSw3IEBAIHBhcnNlX3B1YmxpY2F0aW9uX29wdGlvbnMoUGFyc2VTdGF0ZSAq cHN0YXRlLAogICovCiBzdGF0aWMgdm9pZAogT2JqZWN0c0luUHVibGljYXRpb25Ub09pZHMoTGlz dCAqcHVib2Jqc3BlY19saXN0LCBQYXJzZVN0YXRlICpwc3RhdGUsCi0JCQkJCQkgICBMaXN0ICoq cmVscywgTGlzdCAqKnNjaGVtYXMpCisJCQkJCQkgICBMaXN0ICoqcmVscywgTGlzdCAqKmV4Y2Vw dHJlbHMsIExpc3QgKipzY2hlbWFzKQogewogCUxpc3RDZWxsICAgKmNlbGw7CiAJUHVibGljYXRp b25PYmpTcGVjICpwdWJvYmo7CkBAIC0xOTgsNyArMTk4LDEyIEBAIE9iamVjdHNJblB1YmxpY2F0 aW9uVG9PaWRzKExpc3QgKnB1Ym9ianNwZWNfbGlzdCwgUGFyc2VTdGF0ZSAqcHN0YXRlLAogCiAJ CXN3aXRjaCAocHVib2JqLT5wdWJvYmp0eXBlKQogCQl7CisJCQljYXNlIFBVQkxJQ0FUSU9OT0JK X0VYQ0VQVF9UQUJMRToKKwkJCQlwdWJvYmotPnB1YnRhYmxlLT5leGNlcHQgPSB0cnVlOworCQkJ CSpleGNlcHRyZWxzID0gbGFwcGVuZCgqZXhjZXB0cmVscywgcHVib2JqLT5wdWJ0YWJsZSk7CisJ CQkJYnJlYWs7CiAJCQljYXNlIFBVQkxJQ0FUSU9OT0JKX1RBQkxFOgorCQkJCXB1Ym9iai0+cHVi dGFibGUtPmV4Y2VwdCA9IGZhbHNlOwogCQkJCSpyZWxzID0gbGFwcGVuZCgqcmVscywgcHVib2Jq LT5wdWJ0YWJsZSk7CiAJCQkJYnJlYWs7CiAJCQljYXNlIFBVQkxJQ0FUSU9OT0JKX1RBQkxFU19J Tl9TQ0hFTUE6CkBAIC01MTksOCArNTI0LDggQEAgSW52YWxpZGF0ZVB1YlJlbFN5bmNDYWNoZShP aWQgcHViaWQsIGJvb2wgcHViYWxsdGFibGVzKQogCQkgKiBhIHRhcmdldC4gSG93ZXZlciwgV0FM IHJlY29yZHMgZm9yIFRSVU5DQVRFIHNwZWNpZnkgYm90aCBhIHJvb3QgYW5kCiAJCSAqIGl0cyBs ZWF2ZXMuCiAJCSAqLwotCQlyZWxpZHMgPSBHZXRQdWJsaWNhdGlvblJlbGF0aW9ucyhwdWJpZCwK LQkJCQkJCQkJCQkgUFVCTElDQVRJT05fUEFSVF9BTEwpOworCQlyZWxpZHMgPSBHZXRJbmNsdWRl ZFB1YmxpY2F0aW9uUmVsYXRpb25zKHB1YmlkLAorCQkJCQkJCQkJCQkJIFBVQkxJQ0FUSU9OX1BB UlRfQUxMKTsKIAkJc2NoZW1hcmVsaWRzID0gR2V0QWxsU2NoZW1hUHVibGljYXRpb25SZWxhdGlv bnMocHViaWQsCiAJCQkJCQkJCQkJCQkJCVBVQkxJQ0FUSU9OX1BBUlRfQUxMKTsKIApAQCAtODQ0 LDYgKzg0OSw3IEBAIENyZWF0ZVB1YmxpY2F0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRl UHVibGljYXRpb25TdG10ICpzdG10KQogCWNoYXIJCXB1Ymxpc2hfZ2VuZXJhdGVkX2NvbHVtbnM7 CiAJQWNsUmVzdWx0CWFjbHJlc3VsdDsKIAlMaXN0CSAgICpyZWxhdGlvbnMgPSBOSUw7CisJTGlz dAkgICAqZXhjZXB0cmVsYXRpb25zID0gTklMOwogCUxpc3QJICAgKnNjaGVtYWlkbGlzdCA9IE5J TDsKIAogCS8qIG11c3QgaGF2ZSBDUkVBVEUgcHJpdmlsZWdlIG9uIGRhdGFiYXNlICovCkBAIC05 MjksOCArOTM1LDIxIEBAIENyZWF0ZVB1YmxpY2F0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3Jl YXRlUHVibGljYXRpb25TdG10ICpzdG10KQogCUNvbW1hbmRDb3VudGVySW5jcmVtZW50KCk7CiAK IAkvKiBBc3NvY2lhdGUgb2JqZWN0cyB3aXRoIHRoZSBwdWJsaWNhdGlvbi4gKi8KKwlPYmplY3Rz SW5QdWJsaWNhdGlvblRvT2lkcyhzdG10LT5wdWJvYmplY3RzLCBwc3RhdGUsICZyZWxhdGlvbnMs CisJCQkJCQkJICAgJmV4Y2VwdHJlbGF0aW9ucywgJnNjaGVtYWlkbGlzdCk7CisKIAlpZiAoc3Rt dC0+Zm9yX2FsbF90YWJsZXMpCiAJeworCQkvKiBQcm9jZXNzIEVYQ0VQVCB0YWJsZSBsaXN0ICov CisJCWlmIChleGNlcHRyZWxhdGlvbnMgIT0gTklMKQorCQl7CisJCQlMaXN0CSAgICpyZWxzOwor CisJCQlyZWxzID0gT3BlblRhYmxlTGlzdChleGNlcHRyZWxhdGlvbnMpOworCQkJUHVibGljYXRp b25BZGRUYWJsZXMocHVib2lkLCByZWxzLCB0cnVlLCBOVUxMKTsKKwkJCUNsb3NlVGFibGVMaXN0 KHJlbHMpOworCQl9CisKIAkJLyoKIAkJICogSW52YWxpZGF0ZSByZWxjYWNoZSBzbyB0aGF0IHB1 YmxpY2F0aW9uIGluZm8gaXMgcmVidWlsdC4gU2VxdWVuY2VzCiAJCSAqIHB1YmxpY2F0aW9uIGRv ZXNuJ3QgcmVxdWlyZSBpbnZhbGlkYXRpb24sIGFzIHJlcGxpY2EgaWRlbnRpdHkKQEAgLTk0MCw5 ICs5NTksNiBAQCBDcmVhdGVQdWJsaWNhdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZVB1 YmxpY2F0aW9uU3RtdCAqc3RtdCkKIAl9CiAJZWxzZSBpZiAoIXN0bXQtPmZvcl9hbGxfc2VxdWVu Y2VzKQogCXsKLQkJT2JqZWN0c0luUHVibGljYXRpb25Ub09pZHMoc3RtdC0+cHVib2JqZWN0cywg cHN0YXRlLCAmcmVsYXRpb25zLAotCQkJCQkJCQkgICAmc2NoZW1haWRsaXN0KTsKLQogCQkvKiBG T1IgVEFCTEVTIElOIFNDSEVNQSByZXF1aXJlcyBzdXBlcnVzZXIgKi8KIAkJaWYgKHNjaGVtYWlk bGlzdCAhPSBOSUwgJiYgIXN1cGVydXNlcigpKQogCQkJZXJlcG9ydChFUlJPUiwKQEAgLTEwNTAs OCArMTA2Niw4IEBAIEFsdGVyUHVibGljYXRpb25PcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwg QWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsCiAJCUxvY2tEYXRhYmFzZU9iamVjdChQdWJsaWNh dGlvblJlbGF0aW9uSWQsIHB1YmZvcm0tPm9pZCwgMCwKIAkJCQkJCSAgIEFjY2Vzc1NoYXJlTG9j ayk7CiAKLQkJcm9vdF9yZWxpZHMgPSBHZXRQdWJsaWNhdGlvblJlbGF0aW9ucyhwdWJmb3JtLT5v aWQsCi0JCQkJCQkJCQkJCSAgUFVCTElDQVRJT05fUEFSVF9ST09UKTsKKwkJcm9vdF9yZWxpZHMg PSBHZXRJbmNsdWRlZFB1YmxpY2F0aW9uUmVsYXRpb25zKHB1YmZvcm0tPm9pZCwKKwkJCQkJCQkJ CQkJCQkgIFBVQkxJQ0FUSU9OX1BBUlRfUk9PVCk7CiAKIAkJZm9yZWFjaChsYywgcm9vdF9yZWxp ZHMpCiAJCXsKQEAgLTExNzAsOCArMTE4Niw4IEBAIEFsdGVyUHVibGljYXRpb25PcHRpb25zKFBh cnNlU3RhdGUgKnBzdGF0ZSwgQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsCiAJCSAqIHRyZWVz LCBub3QganVzdCB0aG9zZSBleHBsaWNpdGx5IG1lbnRpb25lZCBpbiB0aGUgcHVibGljYXRpb24u CiAJCSAqLwogCQlpZiAocm9vdF9yZWxpZHMgPT0gTklMKQotCQkJcmVsaWRzID0gR2V0UHVibGlj YXRpb25SZWxhdGlvbnMocHViZm9ybS0+b2lkLAotCQkJCQkJCQkJCQkgUFVCTElDQVRJT05fUEFS VF9BTEwpOworCQkJcmVsaWRzID0gR2V0SW5jbHVkZWRQdWJsaWNhdGlvblJlbGF0aW9ucyhwdWJm b3JtLT5vaWQsCisJCQkJCQkJCQkJCQkJIFBVQkxJQ0FUSU9OX1BBUlRfQUxMKTsKIAkJZWxzZQog CQl7CiAJCQkvKgpAQCAtMTI1Niw4ICsxMjcyLDggQEAgQWx0ZXJQdWJsaWNhdGlvblRhYmxlcyhB bHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCwgSGVhcFR1cGxlIHR1cCwKIAkJUHVibGljYXRpb25E cm9wVGFibGVzKHB1YmlkLCByZWxzLCBmYWxzZSk7CiAJZWxzZQkJCQkJCS8qIEFQX1NldE9iamVj dHMgKi8KIAl7Ci0JCUxpc3QJICAgKm9sZHJlbGlkcyA9IEdldFB1YmxpY2F0aW9uUmVsYXRpb25z KHB1YmlkLAotCQkJCQkJCQkJCQkJCQlQVUJMSUNBVElPTl9QQVJUX1JPT1QpOworCQlMaXN0CSAg ICpvbGRyZWxpZHMgPSBHZXRJbmNsdWRlZFB1YmxpY2F0aW9uUmVsYXRpb25zKHB1YmlkLAorCQkJ CQkJCQkJCQkJCQkJCVBVQkxJQ0FUSU9OX1BBUlRfUk9PVCk7CiAJCUxpc3QJICAgKmRlbHJlbHMg PSBOSUw7CiAJCUxpc3RDZWxsICAgKm9sZGxjOwogCkBAIC0xMzU4LDYgKzEzNzQsNyBAQCBBbHRl clB1YmxpY2F0aW9uVGFibGVzKEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10LCBIZWFwVHVwbGUg dHVwLAogCQkJCW9sZHJlbCA9IHBhbGxvY19vYmplY3QoUHVibGljYXRpb25SZWxJbmZvKTsKIAkJ CQlvbGRyZWwtPndoZXJlQ2xhdXNlID0gTlVMTDsKIAkJCQlvbGRyZWwtPmNvbHVtbnMgPSBOSUw7 CisJCQkJb2xkcmVsLT5leGNlcHQgPSBmYWxzZTsKIAkJCQlvbGRyZWwtPnJlbGF0aW9uID0gdGFi bGVfb3BlbihvbGRyZWxpZCwKIAkJCQkJCQkJCQkJICBTaGFyZVVwZGF0ZUV4Y2x1c2l2ZUxvY2sp OwogCQkJCWRlbHJlbHMgPSBsYXBwZW5kKGRlbHJlbHMsIG9sZHJlbCk7CkBAIC0xNDA4LDcgKzE0 MjUsOCBAQCBBbHRlclB1YmxpY2F0aW9uU2NoZW1hcyhBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3Rt dCwKIAkJTGlzdENlbGwgICAqbGM7CiAJCUxpc3QJICAgKnJlbG9pZHM7CiAKLQkJcmVsb2lkcyA9 IEdldFB1YmxpY2F0aW9uUmVsYXRpb25zKHB1YmZvcm0tPm9pZCwgUFVCTElDQVRJT05fUEFSVF9S T09UKTsKKwkJcmVsb2lkcyA9IEdldEluY2x1ZGVkUHVibGljYXRpb25SZWxhdGlvbnMocHViZm9y bS0+b2lkLAorCQkJCQkJCQkJCQkJICBQVUJMSUNBVElPTl9QQVJUX1JPT1QpOwogCiAJCWZvcmVh Y2gobGMsIHJlbG9pZHMpCiAJCXsKQEAgLTE1NjYsMTEgKzE1ODQsMTUgQEAgQWx0ZXJQdWJsaWNh dGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10KQogCWVs c2UKIAl7CiAJCUxpc3QJICAgKnJlbGF0aW9ucyA9IE5JTDsKKwkJTGlzdAkgICAqZXhjZXB0cmVs YXRpb25zID0gTklMOwogCQlMaXN0CSAgICpzY2hlbWFpZGxpc3QgPSBOSUw7CiAJCU9pZAkJCXB1 YmlkID0gcHViZm9ybS0+b2lkOwogCiAJCU9iamVjdHNJblB1YmxpY2F0aW9uVG9PaWRzKHN0bXQt PnB1Ym9iamVjdHMsIHBzdGF0ZSwgJnJlbGF0aW9ucywKLQkJCQkJCQkJICAgJnNjaGVtYWlkbGlz dCk7CisJCQkJCQkJCSAgICZleGNlcHRyZWxhdGlvbnMsICZzY2hlbWFpZGxpc3QpOworCisJCS8q IEVYQ0VQVCBjbGF1c2UgaXMgbm90IHN1cHBvcnRlZCB3aXRoIEFMVEVSIFBVQkxJQ0FUSU9OICov CisJCUFzc2VydChleGNlcHRyZWxhdGlvbnMgPT0gTklMKTsKIAogCQlDaGVja0FsdGVyUHVibGlj YXRpb24oc3RtdCwgdHVwLCByZWxhdGlvbnMsIHNjaGVtYWlkbGlzdCk7CiAKQEAgLTE3NzEsNiAr MTc5Myw3IEBAIE9wZW5UYWJsZUxpc3QoTGlzdCAqdGFibGVzKQogCQlwdWJfcmVsLT5yZWxhdGlv biA9IHJlbDsKIAkJcHViX3JlbC0+d2hlcmVDbGF1c2UgPSB0LT53aGVyZUNsYXVzZTsKIAkJcHVi X3JlbC0+Y29sdW1ucyA9IHQtPmNvbHVtbnM7CisJCXB1Yl9yZWwtPmV4Y2VwdCA9IHQtPmV4Y2Vw dDsKIAkJcmVscyA9IGxhcHBlbmQocmVscywgcHViX3JlbCk7CiAJCXJlbGlkcyA9IGxhcHBlbmRf b2lkKHJlbGlkcywgbXlyZWxpZCk7CiAKQEAgLTE4NDMsNiArMTg2Niw3IEBAIE9wZW5UYWJsZUxp c3QoTGlzdCAqdGFibGVzKQogCiAJCQkJLyogY2hpbGQgaW5oZXJpdHMgY29sdW1uIGxpc3QgZnJv bSBwYXJlbnQgKi8KIAkJCQlwdWJfcmVsLT5jb2x1bW5zID0gdC0+Y29sdW1uczsKKwkJCQlwdWJf cmVsLT5leGNlcHQgPSB0LT5leGNlcHQ7CiAJCQkJcmVscyA9IGxhcHBlbmQocmVscywgcHViX3Jl bCk7CiAJCQkJcmVsaWRzID0gbGFwcGVuZF9vaWQocmVsaWRzLCBjaGlsZHJlbGlkKTsKIApkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMgYi9zcmMvYmFja2VuZC9j b21tYW5kcy90YWJsZWNtZHMuYwppbmRleCBiMDRiMGRiZDJhMC4uODUyNDJkY2MyNDUgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCisrKyBiL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3RhYmxlY21kcy5jCkBAIC04Njg2LDcgKzg2ODYsNyBAQCBBVEV4ZWNTZXRFeHBy ZXNzaW9uKEFsdGVyZWRUYWJsZUluZm8gKnRhYiwgUmVsYXRpb24gcmVsLCBjb25zdCBjaGFyICpj b2xOYW1lLAogCSAqIGV4cHJlc3Npb25zLgogCSAqLwogCWlmIChhdHRnZW5lcmF0ZWQgPT0gQVRU UklCVVRFX0dFTkVSQVRFRF9WSVJUVUFMICYmCi0JCUdldFJlbGF0aW9uUHVibGljYXRpb25zKFJl bGF0aW9uR2V0UmVsaWQocmVsKSkgIT0gTklMKQorCQlHZXRSZWxhdGlvbkluY2x1ZGVkUHVibGlj YXRpb25zKFJlbGF0aW9uR2V0UmVsaWQocmVsKSkgIT0gTklMKQogCQllcmVwb3J0KEVSUk9SLAog CQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKIAkJCQkgZXJybXNn KCJBTFRFUiBUQUJMRSAvIFNFVCBFWFBSRVNTSU9OIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHZpcnR1 YWwgZ2VuZXJhdGVkIGNvbHVtbnMgaW4gdGFibGVzIHRoYXQgYXJlIHBhcnQgb2YgYSBwdWJsaWNh dGlvbiIpLApAQCAtMTg4ODEsNyArMTg4ODEsNyBAQCBBVFByZXBDaGFuZ2VQZXJzaXN0ZW5jZShB bHRlcmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIHJlbCwgYm9vbCB0b0xvZ2dlZCkKIAkgKiBV TkxPR0dFRCwgYXMgVU5MT0dHRUQgdGFibGVzIGNhbid0IGJlIHB1Ymxpc2hlZC4KIAkgKi8KIAlp ZiAoIXRvTG9nZ2VkICYmCi0JCUdldFJlbGF0aW9uUHVibGljYXRpb25zKFJlbGF0aW9uR2V0UmVs aWQocmVsKSkgIT0gTklMKQorCQlHZXRSZWxhdGlvbkluY2x1ZGVkUHVibGljYXRpb25zKFJlbGF0 aW9uR2V0UmVsaWQocmVsKSkgIT0gTklMKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2Rl KEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAogCQkJCSBlcnJtc2co ImNhbm5vdCBjaGFuZ2UgdGFibGUgXCIlc1wiIHRvIHVubG9nZ2VkIGJlY2F1c2UgaXQgaXMgcGFy dCBvZiBhIHB1YmxpY2F0aW9uIiwKQEAgLTIwMzIyLDYgKzIwMzIyLDcgQEAgQVRFeGVjQXR0YWNo UGFydGl0aW9uKExpc3QgKip3cXVldWUsIFJlbGF0aW9uIHJlbCwgUGFydGl0aW9uQ21kICpjbWQs CiAJY29uc3QgY2hhciAqdHJpZ2dlcl9uYW1lOwogCU9pZAkJCWRlZmF1bHRQYXJ0T2lkOwogCUxp c3QJICAgKnBhcnRCb3VuZENvbnN0cmFpbnQ7CisJTGlzdAkgICAqZXhjZXB0cHVib2lkcyA9IE5J TDsKIAlQYXJzZVN0YXRlICpwc3RhdGUgPSBtYWtlX3BhcnNlc3RhdGUoTlVMTCk7CiAKIAlwc3Rh dGUtPnBfc291cmNldGV4dCA9IGNvbnRleHQtPnF1ZXJ5U3RyaW5nOwpAQCAtMjAzNjEsNiArMjAz NjIsNDkgQEAgQVRFeGVjQXR0YWNoUGFydGl0aW9uKExpc3QgKip3cXVldWUsIFJlbGF0aW9uIHJl bCwgUGFydGl0aW9uQ21kICpjbWQsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9XUk9OR19PQkpFQ1Rf VFlQRSksCiAJCQkJIGVycm1zZygiY2Fubm90IGF0dGFjaCBhIHR5cGVkIHRhYmxlIGFzIHBhcnRp dGlvbiIpKSk7CiAKKwkvKgorCSAqIERpc2FsbG93IGF0dGFjaGluZyBhIHBhcnRpdGlvbiBpZiB0 aGUgdGFibGUgaXMgcmVmZXJlbmNlZCBpbiBhCisJICogcHVibGljYXRpb24gRVhDRVBUIGNsYXVz ZS4gQ2hhbmdpbmcgdGhlIHBhcnRpdGlvbiBoaWVyYXJjaHkgY291bGQgYWx0ZXIKKwkgKiB0aGUg ZWZmZWN0aXZlIHB1YmxpY2F0aW9uIG1lbWJlcnNoaXAuCisJICovCisJZXhjZXB0cHVib2lkcyA9 IEdldFJlbGF0aW9uRXhjbHVkZWRQdWJsaWNhdGlvbnMoUmVsYXRpb25HZXRSZWxpZChhdHRhY2hy ZWwpKTsKKwlpZiAoZXhjZXB0cHVib2lkcyAhPSBOSUwpCisJeworCQlib29sCQlmaXJzdCA9IHRy dWU7CisJCVN0cmluZ0luZm9EYXRhIHB1Ym5hbWVzOworCisJCWluaXRTdHJpbmdJbmZvKCZwdWJu YW1lcyk7CisKKwkJZm9yZWFjaF9vaWQocHViaWQsIGV4Y2VwdHB1Ym9pZHMpCisJCXsKKwkJCWNo YXIJICAgKnB1Ym5hbWUgPSBnZXRfcHVibGljYXRpb25fbmFtZShwdWJpZCwgZmFsc2UpOworCisJ CQlpZiAoIWZpcnN0KQorCQkJeworCQkJCS8qCisJCQkJICogdHJhbnNsYXRvcjogVGhpcyBpcyBh IHNlcGFyYXRvciBpbiBhIGxpc3Qgb2YgcHVibGljYXRpb24KKwkJCQkgKiBuYW1lcy4KKwkJCQkg Ki8KKwkJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZwdWJuYW1lcywgXygiLCAiKSk7CisJCQl9 CisKKwkJCWZpcnN0ID0gZmFsc2U7CisKKwkJCWFwcGVuZFN0cmluZ0luZm8oJnB1Ym5hbWVzLCBf KCJcIiVzXCIiKSwgcHVibmFtZSk7CisJCX0KKworCQllcmVwb3J0KEVSUk9SLAorCQkJCWVycmNv ZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJZXJybXNn X3BsdXJhbCgiY2Fubm90IGF0dGFjaCB0YWJsZSBcIiVzXCIgYXMgcGFydGl0aW9uIGJlY2F1c2Ug aXQgaXMgcmVmZXJlbmNlZCBpbiBwdWJsaWNhdGlvbiAlcyBFWENFUFQgY2xhdXNlIiwKKwkJCQkJ CQkgICJjYW5ub3QgYXR0YWNoIHRhYmxlIFwiJXNcIiBhcyBwYXJ0aXRpb24gYmVjYXVzZSBpdCBp cyByZWZlcmVuY2VkIGluIHB1YmxpY2F0aW9ucyAlcyBFWENFUFQgY2xhdXNlIiwKKwkJCQkJCQkg IGxpc3RfbGVuZ3RoKGV4Y2VwdHB1Ym9pZHMpLAorCQkJCQkJCSAgUmVsYXRpb25HZXRSZWxhdGlv bk5hbWUoYXR0YWNocmVsKSwKKwkJCQkJCQkgIHB1Ym5hbWVzLmRhdGEpLAorCQkJCWVycmRldGFp bCgiVGhlIHB1YmxpY2F0aW9uIEVYQ0VQVCBjbGF1c2UgY2Fubm90IGNvbnRhaW4gdGFibGVzIHRo YXQgYXJlIHBhcnRpdGlvbnMuIikpOworCX0KKworCWxpc3RfZnJlZShleGNlcHRwdWJvaWRzKTsK KwogCS8qCiAJICogVGFibGUgYmVpbmcgYXR0YWNoZWQgc2hvdWxkIG5vdCBhbHJlYWR5IGJlIHBh cnQgb2YgaW5oZXJpdGFuY2U7IGVpdGhlcgogCSAqIGFzIGEgY2hpbGQgdGFibGUuLi4KZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3Jh bS55CmluZGV4IGM1NjcyNTJhY2M0Li4zYzNlMjQzMjRhOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvcGFyc2VyL2dyYW0ueQorKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CkBAIC0yMDMs NiArMjAzLDcgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc0NBU2JpdHMoaW50IGNhc19iaXRzLCBpbnQg bG9jYXRpb24sIGNvbnN0IGNoYXIgKmNvbnN0clR5cGUsCiBzdGF0aWMgUGFydGl0aW9uU3RyYXRl Z3kgcGFyc2VQYXJ0aXRpb25TdHJhdGVneShjaGFyICpzdHJhdGVneSwgaW50IGxvY2F0aW9uLAog CQkJCQkJCQkJCQkJY29yZV95eXNjYW5fdCB5eXNjYW5uZXIpOwogc3RhdGljIHZvaWQgcHJlcHJv Y2Vzc19wdWJfYWxsX29ianR5cGVfbGlzdChMaXN0ICphbGxfb2JqZWN0c19saXN0LAorCQkJCQkJ CQkJCQlMaXN0ICoqcHVib2JqZWN0cywKIAkJCQkJCQkJCQkJYm9vbCAqYWxsX3RhYmxlcywKIAkJ CQkJCQkJCQkJYm9vbCAqYWxsX3NlcXVlbmNlcywKIAkJCQkJCQkJCQkJY29yZV95eXNjYW5fdCB5 eXNjYW5uZXIpOwpAQCAtNDU1LDYgKzQ1Niw3IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZl Vmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAJ CQkJVHJpZ2dlclRyYW5zaXRpb25zIFRyaWdnZXJSZWZlcmVuY2luZwogCQkJCXZhY3V1bV9yZWxh dGlvbl9saXN0IG9wdF92YWN1dW1fcmVsYXRpb25fbGlzdAogCQkJCWRyb3Bfb3B0aW9uX2xpc3Qg cHViX29ial9saXN0IHB1Yl9hbGxfb2JqX3R5cGVfbGlzdAorCQkJCXB1Yl9leGNlcHRfb2JqX2xp c3Qgb3B0X3B1Yl9leGNlcHRfY2xhdXNlCiAKICV0eXBlIDxyZXRjbGF1c2U+IHJldHVybmluZ19j bGF1c2UKICV0eXBlIDxub2RlPglyZXR1cm5pbmdfb3B0aW9uCkBAIC01OTIsNiArNTk0LDcgQEAg c3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3Qg KmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKICV0eXBlIDxub2RlPgl2YXJfdmFsdWUgem9uZV92YWx1 ZQogJXR5cGUgPHJvbGVzcGVjPiBhdXRoX2lkZW50IFJvbGVTcGVjIG9wdF9ncmFudGVkX2J5CiAl dHlwZSA8cHVibGljYXRpb25vYmplY3RzcGVjPiBQdWJsaWNhdGlvbk9ialNwZWMKKyV0eXBlIDxw dWJsaWNhdGlvbm9iamVjdHNwZWM+IFB1YmxpY2F0aW9uRXhjZXB0T2JqU3BlYwogJXR5cGUgPHB1 YmxpY2F0aW9uYWxsb2JqZWN0c3BlYz4gUHVibGljYXRpb25BbGxPYmpTcGVjCiAKICV0eXBlIDxr ZXl3b3JkPiB1bnJlc2VydmVkX2tleXdvcmQgdHlwZV9mdW5jX25hbWVfa2V5d29yZApAQCAtMTA3 OTIsNyArMTA3OTUsNyBAQCBBbHRlck93bmVyU3RtdDogQUxURVIgQUdHUkVHQVRFIGFnZ3JlZ2F0 ZV93aXRoX2FyZ3R5cGVzIE9XTkVSIFRPIFJvbGVTcGVjCiAgKgogICogcHViX2FsbF9vYmpfdHlw ZSBpcyBvbmUgb2Y6CiAgKgotICoJCVRBQkxFUworICoJCVRBQkxFUyBbRVhDRVBUIFRBQkxFICgg dGFibGUgWywgLi4uXSApXQogICoJCVNFUVVFTkNFUwogICoKICAqIENSRUFURSBQVUJMSUNBVElP TiBGT1IgcHViX29iaiBbLCAuLi5dIFtXSVRIIG9wdGlvbnNdCkBAIC0xMDgxOCw3ICsxMDgyMSw4 IEBAIENyZWF0ZVB1YmxpY2F0aW9uU3RtdDoKIAkJCQkJQ3JlYXRlUHVibGljYXRpb25TdG10ICpu ID0gbWFrZU5vZGUoQ3JlYXRlUHVibGljYXRpb25TdG10KTsKIAogCQkJCQluLT5wdWJuYW1lID0g JDM7Ci0JCQkJCXByZXByb2Nlc3NfcHViX2FsbF9vYmp0eXBlX2xpc3QoJDUsICZuLT5mb3JfYWxs X3RhYmxlcywKKwkJCQkJcHJlcHJvY2Vzc19wdWJfYWxsX29ianR5cGVfbGlzdCgkNSwgJm4tPnB1 Ym9iamVjdHMsCisJCQkJCQkJCQkJCQkJJm4tPmZvcl9hbGxfdGFibGVzLAogCQkJCQkJCQkJCQkJ CSZuLT5mb3JfYWxsX3NlcXVlbmNlcywKIAkJCQkJCQkJCQkJCQl5eXNjYW5uZXIpOwogCQkJCQlu LT5vcHRpb25zID0gJDY7CkBAIC0xMDkzMywxMSArMTA5MzcsMTcgQEAgcHViX29ial9saXN0OglQ dWJsaWNhdGlvbk9ialNwZWMKIAkJCQkJeyAkJCA9IGxhcHBlbmQoJDEsICQzKTsgfQogCTsKIAor b3B0X3B1Yl9leGNlcHRfY2xhdXNlOgorCQkJRVhDRVBUIFRBQkxFICcoJyBwdWJfZXhjZXB0X29i al9saXN0ICcpJwl7ICQkID0gJDQ7IH0KKwkJCXwgLypFTVBUWSovCQkJCQkJCQkJeyAkJCA9IE5J TDsgfQorCQk7CisKIFB1YmxpY2F0aW9uQWxsT2JqU3BlYzoKLQkJCQlBTEwgVEFCTEVTCisJCQkJ QUxMIFRBQkxFUyBvcHRfcHViX2V4Y2VwdF9jbGF1c2UKIAkJCQkJewogCQkJCQkJJCQgPSBtYWtl Tm9kZShQdWJsaWNhdGlvbkFsbE9ialNwZWMpOwogCQkJCQkJJCQtPnB1Ym9ianR5cGUgPSBQVUJM SUNBVElPTl9BTExfVEFCTEVTOworCQkJCQkJJCQtPmV4Y2VwdF90YWJsZXMgPSAkMzsKIAkJCQkJ CSQkLT5sb2NhdGlvbiA9IEAxOwogCQkJCQl9CiAJCQkJfCBBTEwgU0VRVUVOQ0VTCkBAIC0xMDk1 NCw2ICsxMDk2NCwyMyBAQCBwdWJfYWxsX29ial90eXBlX2xpc3Q6CVB1YmxpY2F0aW9uQWxsT2Jq U3BlYwogCQkJCQl7ICQkID0gbGFwcGVuZCgkMSwgJDMpOyB9CiAJOwogCitQdWJsaWNhdGlvbkV4 Y2VwdE9ialNwZWM6CisJCQkgcmVsYXRpb25fZXhwcgorCQkJCXsKKwkJCQkJJCQgPSBtYWtlTm9k ZShQdWJsaWNhdGlvbk9ialNwZWMpOworCQkJCQkkJC0+cHVib2JqdHlwZSA9IFBVQkxJQ0FUSU9O T0JKX0VYQ0VQVF9UQUJMRTsKKwkJCQkJJCQtPnB1YnRhYmxlID0gbWFrZU5vZGUoUHVibGljYXRp b25UYWJsZSk7CisJCQkJCSQkLT5wdWJ0YWJsZS0+ZXhjZXB0ID0gdHJ1ZTsKKwkJCQkJJCQtPnB1 YnRhYmxlLT5yZWxhdGlvbiA9ICQxOworCQkJCQkkJC0+bG9jYXRpb24gPSBAMTsKKwkJCQl9CisJ OworCitwdWJfZXhjZXB0X29ial9saXN0OiBQdWJsaWNhdGlvbkV4Y2VwdE9ialNwZWMKKwkJCQkJ eyAkJCA9IGxpc3RfbWFrZTEoJDEpOyB9CisJCQl8IHB1Yl9leGNlcHRfb2JqX2xpc3QgJywnIFB1 YmxpY2F0aW9uRXhjZXB0T2JqU3BlYworCQkJCQl7ICQkID0gbGFwcGVuZCgkMSwgJDMpOyB9CisJ OwogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioKICAqCkBAIC0xOTgxMiw4ICsxOTgzOSw5IEBAIHBh cnNlUGFydGl0aW9uU3RyYXRlZ3koY2hhciAqc3RyYXRlZ3ksIGludCBsb2NhdGlvbiwgY29yZV95 eXNjYW5fdCB5eXNjYW5uZXIpCiAgKiBBbHNvLCBjaGVja3MgaWYgdGhlIHB1Yl9vYmplY3RfdHlw ZSBoYXMgYmVlbiBzcGVjaWZpZWQgbW9yZSB0aGFuIG9uY2UuCiAgKi8KIHN0YXRpYyB2b2lkCi1w cmVwcm9jZXNzX3B1Yl9hbGxfb2JqdHlwZV9saXN0KExpc3QgKmFsbF9vYmplY3RzX2xpc3QsIGJv b2wgKmFsbF90YWJsZXMsCi0JCQkJCQkJCWJvb2wgKmFsbF9zZXF1ZW5jZXMsIGNvcmVfeXlzY2Fu X3QgeXlzY2FubmVyKQorcHJlcHJvY2Vzc19wdWJfYWxsX29ianR5cGVfbGlzdChMaXN0ICphbGxf b2JqZWN0c19saXN0LCBMaXN0ICoqcHVib2JqZWN0cywKKwkJCQkJCQkJYm9vbCAqYWxsX3RhYmxl cywgYm9vbCAqYWxsX3NlcXVlbmNlcywKKwkJCQkJCQkJY29yZV95eXNjYW5fdCB5eXNjYW5uZXIp CiB7CiAJaWYgKCFhbGxfb2JqZWN0c19saXN0KQogCQlyZXR1cm47CkBAIC0xOTgzMyw2ICsxOTg2 MSw3IEBAIHByZXByb2Nlc3NfcHViX2FsbF9vYmp0eXBlX2xpc3QoTGlzdCAqYWxsX29iamVjdHNf bGlzdCwgYm9vbCAqYWxsX3RhYmxlcywKIAkJCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihvYmotPmxv Y2F0aW9uKSk7CiAKIAkJCSphbGxfdGFibGVzID0gdHJ1ZTsKKwkJCSpwdWJvYmplY3RzID0gbGlz dF9jb25jYXQoKnB1Ym9iamVjdHMsIG9iai0+ZXhjZXB0X3RhYmxlcyk7CiAJCX0KIAkJZWxzZSBp ZiAob2JqLT5wdWJvYmp0eXBlID09IFBVQkxJQ0FUSU9OX0FMTF9TRVFVRU5DRVMpCiAJCXsKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMgYi9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jCmluZGV4IDdhNDkxODVk MjlkLi44NTdlYmY3ZDZmYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdv dXRwdXQvcGdvdXRwdXQuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9w Z291dHB1dC5jCkBAIC0yMDg5LDcgKzIwODksNyBAQCBnZXRfcmVsX3N5bmNfZW50cnkoUEdPdXRw dXREYXRhICpkYXRhLCBSZWxhdGlvbiByZWxhdGlvbikKIAlpZiAoIWVudHJ5LT5yZXBsaWNhdGVf dmFsaWQpCiAJewogCQlPaWQJCQlzY2hlbWFJZCA9IGdldF9yZWxfbmFtZXNwYWNlKHJlbGlkKTsK LQkJTGlzdAkgICAqcHViaWRzID0gR2V0UmVsYXRpb25QdWJsaWNhdGlvbnMocmVsaWQpOworCQlM aXN0CSAgICpwdWJpZHMgPSBHZXRSZWxhdGlvbkluY2x1ZGVkUHVibGljYXRpb25zKHJlbGlkKTsK IAogCQkvKgogCQkgKiBXZSBkb24ndCBhY3F1aXJlIGEgbG9jayBvbiB0aGUgbmFtZXNwYWNlIHN5 c3RlbSB0YWJsZSBhcyB3ZSBidWlsZApAQCAtMjIwNiwxNCArMjIwNiw0NyBAQCBnZXRfcmVsX3N5 bmNfZW50cnkoUEdPdXRwdXREYXRhICpkYXRhLCBSZWxhdGlvbiByZWxhdGlvbikKIAkJCSAqLwog CQkJaWYgKHB1Yi0+YWxsdGFibGVzKQogCQkJewotCQkJCXB1Ymxpc2ggPSB0cnVlOwotCQkJCWlm IChwdWItPnB1YnZpYXJvb3QgJiYgYW1fcGFydGl0aW9uKQorCQkJCUxpc3QJICAgKmV4Y2VwdHB1 YmlkcyA9IE5JTDsKKworCQkJCWlmIChhbV9wYXJ0aXRpb24pCiAJCQkJewogCQkJCQlMaXN0CSAg ICphbmNlc3RvcnMgPSBnZXRfcGFydGl0aW9uX2FuY2VzdG9ycyhyZWxpZCk7CisJCQkJCU9pZAkJ CWxhc3RfYW5jZXN0b3JfcmVsaWQgPSBsbGFzdF9vaWQoYW5jZXN0b3JzKTsKKworCQkJCQkvKgor CQkJCQkgKiBGb3IgYSBwYXJ0aXRpb24sIGNoYW5nZXMgYXJlIHB1Ymxpc2hlZCB2aWEgdG9wLW1v c3QKKwkJCQkJICogYW5jZXN0b3Igd2hlbiBwdWJ2aWFyb290IGlzIHRydWUsIHNvIHBvcHVsYXRl IHB1Yl9yZWxpZAorCQkJCQkgKiBhY2NvcmRpbmdseS4KKwkJCQkJICovCisJCQkJCWlmIChwdWIt PnB1YnZpYXJvb3QpCisJCQkJCXsKKwkJCQkJCXB1Yl9yZWxpZCA9IGxhc3RfYW5jZXN0b3JfcmVs aWQ7CisJCQkJCQlhbmNlc3Rvcl9sZXZlbCA9IGxpc3RfbGVuZ3RoKGFuY2VzdG9ycyk7CisJCQkJ CX0KIAotCQkJCQlwdWJfcmVsaWQgPSBsbGFzdF9vaWQoYW5jZXN0b3JzKTsKLQkJCQkJYW5jZXN0 b3JfbGV2ZWwgPSBsaXN0X2xlbmd0aChhbmNlc3RvcnMpOworCQkJCQkvKgorCQkJCQkgKiBPbmx5 IHRoZSB0b3AtbW9zdCBhbmNlc3RvciBjYW4gYXBwZWFyIGluIHRoZSBFWENFUFQKKwkJCQkJICog Y2xhdXNlLiBUaGVyZWZvcmUsIGZvciBhIHBhcnRpdGlvbiwgZXhjbHVzaW9uIG11c3QgYmUKKwkJ CQkJICogZXZhbHVhdGVkIGF0IHRoZSB0b3AtbW9zdCBhbmNlc3Rvci4KKwkJCQkJICovCisJCQkJ CWV4Y2VwdHB1YmlkcyA9IEdldFJlbGF0aW9uRXhjbHVkZWRQdWJsaWNhdGlvbnMobGFzdF9hbmNl c3Rvcl9yZWxpZCk7CisJCQkJfQorCQkJCWVsc2UKKwkJCQl7CisJCQkJCS8qCisJCQkJCSAqIEZv ciBhIHJlZ3VsYXIgdGFibGUgb3IgYSByb290IHBhcnRpdGlvbmVkIHRhYmxlLCBjaGVjaworCQkJ CQkgKiBleGNsdXNpb24gb24gdGFibGUgaXRzZWxmLgorCQkJCQkgKi8KKwkJCQkJZXhjZXB0cHVi aWRzID0gR2V0UmVsYXRpb25FeGNsdWRlZFB1YmxpY2F0aW9ucyhwdWJfcmVsaWQpOwogCQkJCX0K KworCQkJCWlmICghbGlzdF9tZW1iZXJfb2lkKGV4Y2VwdHB1YmlkcywgcHViLT5vaWQpKQorCQkJ CQlwdWJsaXNoID0gdHJ1ZTsKKworCQkJCWxpc3RfZnJlZShleGNlcHRwdWJpZHMpOworCisJCQkJ aWYgKCFwdWJsaXNoKQorCQkJCQljb250aW51ZTsKIAkJCX0KIAogCQkJaWYgKCFwdWJsaXNoKQpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYyBiL3NyYy9iYWNr ZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMKaW5kZXggNmI2MzRjOWZmZjEuLmExYzg4YzZiMWI2 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jCisrKyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMKQEAgLTU3ODgsNyArNTc4OCw5IEBAIFJl bGF0aW9uR2V0RXhjbHVzaW9uSW5mbyhSZWxhdGlvbiBpbmRleFJlbGF0aW9uLAogdm9pZAogUmVs YXRpb25CdWlsZFB1YmxpY2F0aW9uRGVzYyhSZWxhdGlvbiByZWxhdGlvbiwgUHVibGljYXRpb25E ZXNjICpwdWJkZXNjKQogewotCUxpc3QJICAgKnB1Ym9pZHM7CisJTGlzdAkgICAqcHVib2lkcyA9 IE5JTDsKKwlMaXN0CSAgICpleGNlcHRwdWJvaWRzID0gTklMOworCUxpc3QJICAgKmFsbHRhYmxl c3B1Ym9pZHM7CiAJTGlzdENlbGwgICAqbGM7CiAJTWVtb3J5Q29udGV4dCBvbGRjeHQ7CiAJT2lk CQkJc2NoZW1haWQ7CkBAIC01ODI2LDI4ICs1ODI4LDQ5IEBAIFJlbGF0aW9uQnVpbGRQdWJsaWNh dGlvbkRlc2MoUmVsYXRpb24gcmVsYXRpb24sIFB1YmxpY2F0aW9uRGVzYyAqcHViZGVzYykKIAlw dWJkZXNjLT5nZW5jb2xzX3ZhbGlkX2Zvcl9kZWxldGUgPSB0cnVlOwogCiAJLyogRmV0Y2ggdGhl IHB1YmxpY2F0aW9uIG1lbWJlcnNoaXAgaW5mby4gKi8KLQlwdWJvaWRzID0gR2V0UmVsYXRpb25Q dWJsaWNhdGlvbnMocmVsaWQpOworCXB1Ym9pZHMgPSBHZXRSZWxhdGlvbkluY2x1ZGVkUHVibGlj YXRpb25zKHJlbGlkKTsKIAlzY2hlbWFpZCA9IFJlbGF0aW9uR2V0TmFtZXNwYWNlKHJlbGF0aW9u KTsKIAlwdWJvaWRzID0gbGlzdF9jb25jYXRfdW5pcXVlX29pZChwdWJvaWRzLCBHZXRTY2hlbWFQ dWJsaWNhdGlvbnMoc2NoZW1haWQpKTsKIAogCWlmIChyZWxhdGlvbi0+cmRfcmVsLT5yZWxpc3Bh cnRpdGlvbikKIAl7CisJCU9pZAkJCWxhc3RfYW5jZXN0b3JfcmVsaWQ7CisKIAkJLyogQWRkIHB1 YmxpY2F0aW9ucyB0aGF0IHRoZSBhbmNlc3RvcnMgYXJlIGluIHRvby4gKi8KIAkJYW5jZXN0b3Jz ID0gZ2V0X3BhcnRpdGlvbl9hbmNlc3RvcnMocmVsaWQpOworCQlsYXN0X2FuY2VzdG9yX3JlbGlk ID0gbGxhc3Rfb2lkKGFuY2VzdG9ycyk7CiAKIAkJZm9yZWFjaChsYywgYW5jZXN0b3JzKQogCQl7 CiAJCQlPaWQJCQlhbmNlc3RvciA9IGxmaXJzdF9vaWQobGMpOwogCiAJCQlwdWJvaWRzID0gbGlz dF9jb25jYXRfdW5pcXVlX29pZChwdWJvaWRzLAotCQkJCQkJCQkJCQkgR2V0UmVsYXRpb25QdWJs aWNhdGlvbnMoYW5jZXN0b3IpKTsKKwkJCQkJCQkJCQkJIEdldFJlbGF0aW9uSW5jbHVkZWRQdWJs aWNhdGlvbnMoYW5jZXN0b3IpKTsKIAkJCXNjaGVtYWlkID0gZ2V0X3JlbF9uYW1lc3BhY2UoYW5j ZXN0b3IpOwogCQkJcHVib2lkcyA9IGxpc3RfY29uY2F0X3VuaXF1ZV9vaWQocHVib2lkcywKIAkJ CQkJCQkJCQkJIEdldFNjaGVtYVB1YmxpY2F0aW9ucyhzY2hlbWFpZCkpOwogCQl9CisKKwkJLyoK KwkJICogT25seSB0aGUgdG9wLW1vc3QgYW5jZXN0b3IgY2FuIGFwcGVhciBpbiB0aGUgRVhDRVBU IGNsYXVzZS4KKwkJICogVGhlcmVmb3JlLCBmb3IgYSBwYXJ0aXRpb24sIGV4Y2x1c2lvbiBtdXN0 IGJlIGV2YWx1YXRlZCBhdCB0aGUKKwkJICogdG9wLW1vc3QgYW5jZXN0b3IuCisJCSAqLworCQll eGNlcHRwdWJvaWRzID0gR2V0UmVsYXRpb25FeGNsdWRlZFB1YmxpY2F0aW9ucyhsYXN0X2FuY2Vz dG9yX3JlbGlkKTsKKwl9CisJZWxzZQorCXsKKwkJLyoKKwkJICogRm9yIGEgcmVndWxhciB0YWJs ZSBvciBhIHJvb3QgcGFydGl0aW9uZWQgdGFibGUsIGNoZWNrIGV4Y2x1c2lvbiBvbgorCQkgKiB0 YWJsZSBpdHNlbGYuCisJCSAqLworCQlleGNlcHRwdWJvaWRzID0gR2V0UmVsYXRpb25FeGNsdWRl ZFB1YmxpY2F0aW9ucyhyZWxpZCk7CiAJfQotCXB1Ym9pZHMgPSBsaXN0X2NvbmNhdF91bmlxdWVf b2lkKHB1Ym9pZHMsIEdldEFsbFRhYmxlc1B1YmxpY2F0aW9ucygpKTsKIAorCWFsbHRhYmxlc3B1 Ym9pZHMgPSBHZXRBbGxUYWJsZXNQdWJsaWNhdGlvbnMoKTsKKwlwdWJvaWRzID0gbGlzdF9jb25j YXRfdW5pcXVlX29pZChwdWJvaWRzLAorCQkJCQkJCQkJIGxpc3RfZGlmZmVyZW5jZV9vaWQoYWxs dGFibGVzcHVib2lkcywKKwkJCQkJCQkJCQkJCQkJIGV4Y2VwdHB1Ym9pZHMpKTsKIAlmb3JlYWNo KGxjLCBwdWJvaWRzKQogCXsKIAkJT2lkCQkJcHViaWQgPSBsZmlyc3Rfb2lkKGxjKTsKZGlmZiAt LWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVt cC5jCmluZGV4IGRkOGFkZWYwYTNlLi5mMDM5YWNiODYxMCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9w Z19kdW1wL3BnX2R1bXAuYworKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCkBAIC00NjIz LDkgKzQ2MjMsNTkgQEAgZ2V0UHVibGljYXRpb25zKEFyY2hpdmUgKmZvdXQpCiAJCQkoc3RyY21w KFBRZ2V0dmFsdWUocmVzLCBpLCBpX3B1YnZpYXJvb3QpLCAidCIpID09IDApOwogCQlwdWJpbmZv W2ldLnB1YmdlbmNvbHNfdHlwZSA9CiAJCQkqKFBRZ2V0dmFsdWUocmVzLCBpLCBpX3B1YmdlbmNv bHMpKTsKKwkJcHViaW5mb1tpXS5leGNlcHRfdGFibGVzID0gKFNpbXBsZVB0ckxpc3QpCisJCXsK KwkJCU5VTEwsIE5VTEwKKwkJfTsKIAogCQkvKiBEZWNpZGUgd2hldGhlciB3ZSB3YW50IHRvIGR1 bXAgaXQgKi8KIAkJc2VsZWN0RHVtcGFibGVPYmplY3QoJihwdWJpbmZvW2ldLmRvYmopLCBmb3V0 KTsKKworCQkvKgorCQkgKiBHZXQgdGhlIGxpc3Qgb2YgdGFibGVzIGZvciBwdWJsaWNhdGlvbnMg c3BlY2lmaWVkIGluIHRoZSBFWENFUFQKKwkJICogVEFCTEUgY2xhdXNlLiBUaGlzIGZlYXR1cmUg d2FzIGludHJvZHVjZWQgaW4gUG9zdGdyZVNRTCAxOS4KKwkJICoKKwkJICogQWx0aG91Z2ggaW5k aXZpZHVhbCBFWENFUFQgVEFCTEUgZW50cmllcyBjb3VsZCBiZSBzdG9yZWQgaW4KKwkJICogUHVi bGljYXRpb25SZWxJbmZvLCBkdW1wUHVibGljYXRpb25UYWJsZSBjYW5ub3QgYmUgdXNlZCB0byBl bWl0CisJCSAqIHRoZW0sIGJlY2F1c2UgdGhlcmUgaXMgbm8gQUxURVIgUFVCTElDQVRJT04gLi4u IEFERCBjb21tYW5kIHRvIGFkZAorCQkgKiBpbmRpdmlkdWFsIHRhYmxlIGVudHJpZXMgdG8gdGhl IEVYQ0VQVCBUQUJMRSBsaXN0LgorCQkgKgorCQkgKiBUaGVyZWZvcmUsIHRoZSBhcHByb2FjaCBp cyB0byBkdW1wIHRoZSBjb21wbGV0ZSBFWENFUFQgVEFCTEUgbGlzdAorCQkgKiBpbiBhIHNpbmds ZSBDUkVBVEUgUFVCTElDQVRJT04gc3RhdGVtZW50LiBQdWJsaWNhdGlvbkluZm8gaXMgdXNlZAor CQkgKiB0byBjb2xsZWN0IHRoaXMgaW5mb3JtYXRpb24sIHdoaWNoIGlzIHRoZW4gZW1pdHRlZCBi eQorCQkgKiBkdW1wUHVibGljYXRpb24oKS4KKwkJICovCisJCWlmIChmb3V0LT5yZW1vdGVWZXJz aW9uID49IDE5MDAwMCkKKwkJeworCQkJaW50CQkJbnRibHM7CisJCQlQR3Jlc3VsdCAgICpyZXNf dGJsczsKKworCQkJcmVzZXRQUUV4cEJ1ZmZlcihxdWVyeSk7CisJCQlhcHBlbmRQUUV4cEJ1ZmZl cihxdWVyeSwKKwkJCQkJCQkgICJTRUxFQ1QgcHJyZWxpZFxuIgorCQkJCQkJCSAgIkZST00gcGdf Y2F0YWxvZy5wZ19wdWJsaWNhdGlvbl9yZWxcbiIKKwkJCQkJCQkgICJXSEVSRSBwcnB1YmlkID0g JXUgYW5kIHByZXhjZXB0IiwKKwkJCQkJCQkgIHB1YmluZm9baV0uZG9iai5jYXRJZC5vaWQpOwor CisJCQlyZXNfdGJscyA9IEV4ZWN1dGVTcWxRdWVyeShmb3V0LCBxdWVyeS0+ZGF0YSwgUEdSRVNf VFVQTEVTX09LKTsKKworCQkJbnRibHMgPSBQUW50dXBsZXMocmVzX3RibHMpOworCisJCQlmb3Ig KGludCBqID0gMDsgaiA8IG50YmxzOyBqKyspCisJCQl7CisJCQkJT2lkCQkJcHJyZWxpZDsKKwkJ CQlUYWJsZUluZm8gICp0YmluZm87CisKKwkJCQlwcnJlbGlkID0gYXRvb2lkKFBRZ2V0dmFsdWUo cmVzX3RibHMsIGosIDApKTsKKworCQkJCXRiaW5mbyA9IGZpbmRUYWJsZUJ5T2lkKHBycmVsaWQp OworCisJCQkJaWYgKHRiaW5mbyAhPSBOVUxMKQorCQkJCQlzaW1wbGVfcHRyX2xpc3RfYXBwZW5k KCZwdWJpbmZvW2ldLmV4Y2VwdF90YWJsZXMsIHRiaW5mbyk7CisJCQl9CisKKwkJCVBRY2xlYXIo cmVzX3RibHMpOworCQl9CiAJfQogCiBjbGVhbnVwOgpAQCAtNDY2MiwxMCArNDcxMiwyOSBAQCBk dW1wUHVibGljYXRpb24oQXJjaGl2ZSAqZm91dCwgY29uc3QgUHVibGljYXRpb25JbmZvICpwdWJp bmZvKQogCWFwcGVuZFBRRXhwQnVmZmVyKHF1ZXJ5LCAiQ1JFQVRFIFBVQkxJQ0FUSU9OICVzIiwK IAkJCQkJICBxcHVibmFtZSk7CiAKLQlpZiAocHViaW5mby0+cHViYWxsdGFibGVzICYmIHB1Ymlu Zm8tPnB1YmFsbHNlcXVlbmNlcykKLQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICIgRk9S IEFMTCBUQUJMRVMsIEFMTCBTRVFVRU5DRVMiKTsKLQllbHNlIGlmIChwdWJpbmZvLT5wdWJhbGx0 YWJsZXMpCisJaWYgKHB1YmluZm8tPnB1YmFsbHRhYmxlcykKKwl7CisJCWludAkJCW5fZXhjZXB0 ID0gMDsKKwogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiBGT1IgQUxMIFRBQkxFUyIp OworCisJCS8qIEluY2x1ZGUgRVhDRVBUIFRBQkxFIGNsYXVzZSBpZiB0aGVyZSBhcmUgZXhjZXB0 X3RhYmxlcy4gKi8KKwkJZm9yIChTaW1wbGVQdHJMaXN0Q2VsbCAqY2VsbCA9IHB1YmluZm8tPmV4 Y2VwdF90YWJsZXMuaGVhZDsgY2VsbDsgY2VsbCA9IGNlbGwtPm5leHQpCisJCXsKKwkJCVRhYmxl SW5mbyAgKnRiaW5mbyA9IChUYWJsZUluZm8gKikgY2VsbC0+cHRyOworCisJCQlpZiAoKytuX2V4 Y2VwdCA9PSAxKQorCQkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiIEVYQ0VQVCBUQUJM RSAoIik7CisJCQllbHNlCisJCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICIsICIpOwor CQkJYXBwZW5kUFFFeHBCdWZmZXIocXVlcnksICJPTkxZICVzIiwgZm10UXVhbGlmaWVkRHVtcGFi bGUodGJpbmZvKSk7CisJCX0KKwkJaWYgKG5fZXhjZXB0ID4gMCkKKwkJCWFwcGVuZFBRRXhwQnVm ZmVyU3RyKHF1ZXJ5LCAiKSIpOworCisJCWlmIChwdWJpbmZvLT5wdWJhbGxzZXF1ZW5jZXMpCisJ CQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiwgQUxMIFNFUVVFTkNFUyIpOworCX0KIAll bHNlIGlmIChwdWJpbmZvLT5wdWJhbGxzZXF1ZW5jZXMpCiAJCWFwcGVuZFBRRXhwQnVmZmVyU3Ry KHF1ZXJ5LCAiIEZPUiBBTEwgU0VRVUVOQ0VTIik7CiAKQEAgLTQ4NDUsNiArNDkxNCw3IEBAIGdl dFB1YmxpY2F0aW9uVGFibGVzKEFyY2hpdmUgKmZvdXQsIFRhYmxlSW5mbyB0YmxpbmZvW10sIGlu dCBudW1UYWJsZXMpCiAKIAkvKiBDb2xsZWN0IGFsbCBwdWJsaWNhdGlvbiBtZW1iZXJzaGlwIGlu Zm8uICovCiAJaWYgKGZvdXQtPnJlbW90ZVZlcnNpb24gPj0gMTUwMDAwKQorCXsKIAkJYXBwZW5k UFFFeHBCdWZmZXJTdHIocXVlcnksCiAJCQkJCQkJICJTRUxFQ1QgdGFibGVvaWQsIG9pZCwgcHJw dWJpZCwgcHJyZWxpZCwgIgogCQkJCQkJCSAicGdfY2F0YWxvZy5wZ19nZXRfZXhwcihwcnF1YWws IHBycmVsaWQpIEFTIHBycmVscXVhbCwgIgpAQCAtNDg1Nyw2ICs0OTI3LDkgQEAgZ2V0UHVibGlj YXRpb25UYWJsZXMoQXJjaGl2ZSAqZm91dCwgVGFibGVJbmZvIHRibGluZm9bXSwgaW50IG51bVRh YmxlcykKIAkJCQkJCQkgIiAgICAgIFdIRVJFIGF0dHJlbGlkID0gcHIucHJyZWxpZCBBTkQgYXR0 bnVtID0gcHJhdHRyc1tzXSlcbiIKIAkJCQkJCQkgIiAgRUxTRSBOVUxMIEVORCkgcHJhdHRycyAi CiAJCQkJCQkJICJGUk9NIHBnX2NhdGFsb2cucGdfcHVibGljYXRpb25fcmVsIHByIik7CisJCWlm IChmb3V0LT5yZW1vdGVWZXJzaW9uID49IDE5MDAwMCkKKwkJCWFwcGVuZFBRRXhwQnVmZmVyU3Ry KHF1ZXJ5LCAiIFdIRVJFIE5PVCBwci5wcmV4Y2VwdCIpOworCX0KIAllbHNlCiAJCWFwcGVuZFBR RXhwQnVmZmVyU3RyKHF1ZXJ5LAogCQkJCQkJCSAiU0VMRUNUIHRhYmxlb2lkLCBvaWQsIHBycHVi aWQsIHBycmVsaWQsICIKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmggYi9z cmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oCmluZGV4IDZkZWNlZWYyM2YzLi5lMTM4ZWYxMjc2YyAx MDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaAorKysgYi9zcmMvYmluL3BnX2R1 bXAvcGdfZHVtcC5oCkBAIC02NzYsNiArNjc2LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgX1B1YmxpY2F0 aW9uSW5mbwogCWJvb2wJCXB1YnRydW5jYXRlOwogCWJvb2wJCXB1YnZpYXJvb3Q7CiAJUHVibGlz aEdlbmNvbHNUeXBlIHB1YmdlbmNvbHNfdHlwZTsKKwlTaW1wbGVQdHJMaXN0IGV4Y2VwdF90YWJs ZXM7CiB9IFB1YmxpY2F0aW9uSW5mbzsKIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVt cC90LzAwMl9wZ19kdW1wLnBsIGIvc3JjL2Jpbi9wZ19kdW1wL3QvMDAyX3BnX2R1bXAucGwKaW5k ZXggZjE1YmQwNmFkY2MuLjU4ODg5MWE2MmJkIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAv dC8wMDJfcGdfZHVtcC5wbAorKysgYi9zcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5wbApA QCAtMzIwMiw2ICszMjAyLDM2IEBAIG15ICV0ZXN0cyA9ICgKIAkJbGlrZSA9PiB7ICVmdWxsX3J1 bnMsIHNlY3Rpb25fcG9zdF9kYXRhID0+IDEsIH0sCiAJfSwKIAorCSdDUkVBVEUgUFVCTElDQVRJ T04gcHViOCcgPT4geworCQljcmVhdGVfb3JkZXIgPT4gNTAsCisJCWNyZWF0ZV9zcWwgPT4KKwkJ ICAnQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YjggRk9SIEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxFIChk dW1wX3Rlc3QudGVzdF90YWJsZSk7JywKKwkJcmVnZXhwID0+IHFyL14KKwkJCVxRQ1JFQVRFIFBV QkxJQ0FUSU9OIHB1YjggRk9SIEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxFIChPTkxZIGR1bXBfdGVz dC50ZXN0X3RhYmxlKSBXSVRIIChwdWJsaXNoID0gJ2luc2VydCwgdXBkYXRlLCBkZWxldGUsIHRy dW5jYXRlJyk7XEUKKwkJCS94bSwKKwkJbGlrZSA9PiB7ICVmdWxsX3J1bnMsIHNlY3Rpb25fcG9z dF9kYXRhID0+IDEsIH0sCisJfSwKKworCSdDUkVBVEUgUFVCTElDQVRJT04gcHViOScgPT4gewor CQljcmVhdGVfb3JkZXIgPT4gNTAsCisJCWNyZWF0ZV9zcWwgPT4KKwkJICAnQ1JFQVRFIFBVQkxJ Q0FUSU9OIHB1YjkgRk9SIEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxFIChkdW1wX3Rlc3QudGVzdF90 YWJsZSwgZHVtcF90ZXN0LnRlc3Rfc2Vjb25kX3RhYmxlKTsnLAorCQlyZWdleHAgPT4gcXIvXgor CQkJXFFDUkVBVEUgUFVCTElDQVRJT04gcHViOSBGT1IgQUxMIFRBQkxFUyBFWENFUFQgVEFCTEUg KE9OTFkgZHVtcF90ZXN0LnRlc3RfdGFibGUsIE9OTFkgZHVtcF90ZXN0LnRlc3Rfc2Vjb25kX3Rh YmxlKSBXSVRIIChwdWJsaXNoID0gJ2luc2VydCwgdXBkYXRlLCBkZWxldGUsIHRydW5jYXRlJyk7 XEUKKwkJCS94bSwKKwkJbGlrZSA9PiB7ICVmdWxsX3J1bnMsIHNlY3Rpb25fcG9zdF9kYXRhID0+ IDEsIH0sCisJfSwKKworCSdDUkVBVEUgUFVCTElDQVRJT04gcHViMTAnID0+IHsKKwkJY3JlYXRl X29yZGVyID0+IDkyLAorCQljcmVhdGVfc3FsID0+CisJCSAgJ0NSRUFURSBQVUJMSUNBVElPTiBw dWIxMCBGT1IgQUxMIFRBQkxFUyBFWENFUFQgVEFCTEUgKGR1bXBfdGVzdC50ZXN0X2luaGVyaXRh bmNlX3BhcmVudCk7JywKKwkJcmVnZXhwID0+IHFyL14KKwkJCVxRQ1JFQVRFIFBVQkxJQ0FUSU9O IHB1YjEwIEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCBUQUJMRSAoT05MWSBkdW1wX3Rlc3QudGVzdF9p bmhlcml0YW5jZV9wYXJlbnQsIE9OTFkgZHVtcF90ZXN0LnRlc3RfaW5oZXJpdGFuY2VfY2hpbGQp IFdJVEggKHB1Ymxpc2ggPSAnaW5zZXJ0LCB1cGRhdGUsIGRlbGV0ZSwgdHJ1bmNhdGUnKTtcRQor CQkJL3htLAorCQlsaWtlID0+IHsgJWZ1bGxfcnVucywgc2VjdGlvbl9wb3N0X2RhdGEgPT4gMSwg fSwKKwl9LAorCiAJJ0NSRUFURSBTVUJTQ1JJUFRJT04gc3ViMScgPT4gewogCQljcmVhdGVfb3Jk ZXIgPT4gNTAsCiAJCWNyZWF0ZV9zcWwgPT4gJ0NSRUFURSBTVUJTQ1JJUFRJT04gc3ViMQpkaWZm IC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMgYi9zcmMvYmluL3BzcWwvZGVzY3JpYmUu YwppbmRleCBhYjEzYzkwZWQzMy4uMjQ0OGZkMGZhMjUgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNx bC9kZXNjcmliZS5jCisrKyBiL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jCkBAIC0zMDczLDE3ICsz MDczLDQxIEBAIGRlc2NyaWJlT25lVGFibGVEZXRhaWxzKGNvbnN0IGNoYXIgKnNjaGVtYW5hbWUs CiAJCQkJCQkJCSAgIiAgICAgICAgICBXSEVSRSBhdHRyZWxpZCA9IHByLnBycmVsaWQgQU5EIGF0 dG51bSA9IHByYXR0cnNbc10pXG4iCiAJCQkJCQkJCSAgIiAgICAgICAgRUxTRSBOVUxMIEVORCkg IgogCQkJCQkJCQkgICJGUk9NIHBnX2NhdGFsb2cucGdfcHVibGljYXRpb24gcFxuIgotCQkJCQkJ CQkgICIgICAgIEpPSU4gcGdfY2F0YWxvZy5wZ19wdWJsaWNhdGlvbl9yZWwgcHIgT04gcC5vaWQg PSBwci5wcnB1YmlkXG4iCi0JCQkJCQkJCSAgIiAgICAgSk9JTiBwZ19jYXRhbG9nLnBnX2NsYXNz IGMgT04gYy5vaWQgPSBwci5wcnJlbGlkXG4iCi0JCQkJCQkJCSAgIldIRVJFIHByLnBycmVsaWQg PSAnJXMnXG4iCisJCQkJCQkJCSAgIgkJSk9JTiBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0aW9uX3Jl bCBwciBPTiBwLm9pZCA9IHByLnBycHViaWRcbiIKKwkJCQkJCQkJICAiCQlKT0lOIHBnX2NhdGFs b2cucGdfY2xhc3MgYyBPTiBjLm9pZCA9IHByLnBycmVsaWRcbiIKKwkJCQkJCQkJICAiV0hFUkUg cHIucHJyZWxpZCA9ICclcydcbiIsCisJCQkJCQkJCSAgb2lkLCBvaWQsIG9pZCk7CisKKwkJCQkv KgorCQkJCSAqIFNraXAgZW50cmllcyB3aGVyZSB0aGlzIHJlbGF0aW9uIGFwcGVhcnMgaW4gdGhl CisJCQkJICogcHVibGljYXRpb24ncyBFWENFUFQgVEFCTEUgbGlzdC4KKwkJCQkgKi8KKwkJCQlp ZiAocHNldC5zdmVyc2lvbiA+PSAxOTAwMDApCisJCQkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZi dWYsICIgQU5EIE5PVCBwci5wcmV4Y2VwdFxuIik7CisKKwkJCQlhcHBlbmRQUUV4cEJ1ZmZlcigm YnVmLAogCQkJCQkJCQkgICJVTklPTlxuIgogCQkJCQkJCQkgICJTRUxFQ1QgcHVibmFtZVxuIgot CQkJCQkJCQkgICIgICAgICwgTlVMTFxuIgotCQkJCQkJCQkgICIgICAgICwgTlVMTFxuIgorCQkJ CQkJCQkgICIJCSwgTlVMTFxuIgorCQkJCQkJCQkgICIJCSwgTlVMTFxuIgogCQkJCQkJCQkgICJG Uk9NIHBnX2NhdGFsb2cucGdfcHVibGljYXRpb24gcFxuIgotCQkJCQkJCQkgICJXSEVSRSBwLnB1 YmFsbHRhYmxlcyBBTkQgcGdfY2F0YWxvZy5wZ19yZWxhdGlvbl9pc19wdWJsaXNoYWJsZSgnJXMn KVxuIgotCQkJCQkJCQkgICJPUkRFUiBCWSAxOyIsCi0JCQkJCQkJCSAgb2lkLCBvaWQsIG9pZCwg b2lkKTsKKwkJCQkJCQkJICAiV0hFUkUgcC5wdWJhbGx0YWJsZXMgQU5EIHBnX2NhdGFsb2cucGdf cmVsYXRpb25faXNfcHVibGlzaGFibGUoJyVzJylcbiIsCisJCQkJCQkJCSAgb2lkKTsKKworCQkJ CS8qCisJCQkJICogRm9yIEZPUiBBTEwgVEFCTEVTIHB1YmxpY2F0aW9ucywgc2tpcCBwdWJsaWNh dGlvbnMgdGhhdAorCQkJCSAqIGV4cGxpY2l0bHkgZXhjbHVkZSB0aGlzIHJlbGF0aW9uIHZpYSBF WENFUFQgVEFCTEUuCisJCQkJICovCisJCQkJaWYgKHBzZXQuc3ZlcnNpb24gPj0gMTkwMDAwKQor CQkJCQlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLAorCQkJCQkJCQkJICAiICAgICBBTkQgTk9UIEVY SVNUUyAoXG4iCisJCQkJCQkJCQkgICIJCVNFTEVDVCAxXG4iCisJCQkJCQkJCQkgICIJCUZST00g cGdfY2F0YWxvZy5wZ19wdWJsaWNhdGlvbl9yZWwgcHJcbiIKKwkJCQkJCQkJCSAgIgkJV0hFUkUg cHIucHJwdWJpZCA9IHAub2lkIEFORFxuIgorCQkJCQkJCQkJICAiICAgICAocHIucHJyZWxpZCA9 ICclcycgT1IgcHIucHJyZWxpZCA9IHBnX2NhdGFsb2cucGdfcGFydGl0aW9uX3Jvb3QoJyVzJykp KVxuIiwKKwkJCQkJCQkJCSAgb2lkLCBvaWQpOworCisJCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIo JmJ1ZiwgIk9SREVSIEJZIDE7Iik7CiAJCQl9CiAJCQllbHNlCiAJCQl7CkBAIC0zMTM0LDYgKzMx NTgsMzYgQEAgZGVzY3JpYmVPbmVUYWJsZURldGFpbHMoY29uc3QgY2hhciAqc2NoZW1hbmFtZSwK IAkJCVBRY2xlYXIocmVzdWx0KTsKIAkJfQogCisJCS8qIFByaW50IHB1YmxpY2F0aW9ucyB3aGVy ZSB0aGUgdGFibGUgaXMgaW4gdGhlIEVYQ0VQVCBjbGF1c2UgKi8KKwkJaWYgKHBzZXQuc3ZlcnNp b24gPj0gMTkwMDAwKQorCQl7CisJCQlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLAorCQkJCQkJCSAg IlNFTEVDVCBwdWJuYW1lXG4iCisJCQkJCQkJICAiRlJPTSBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0 aW9uIHBcbiIKKwkJCQkJCQkgICJKT0lOIHBnX2NhdGFsb2cucGdfcHVibGljYXRpb25fcmVsIHBy IE9OIHAub2lkID0gcHIucHJwdWJpZFxuIgorCQkJCQkJCSAgIldIRVJFIChwci5wcnJlbGlkID0g JyVzJyBPUiBwci5wcnJlbGlkID0gcGdfY2F0YWxvZy5wZ19wYXJ0aXRpb25fcm9vdCgnJXMnKSlc biIKKwkJCQkJCQkgICJBTkQgcHIucHJleGNlcHRcbiIKKwkJCQkJCQkgICJPUkRFUiBCWSAxOyIs IG9pZCwgb2lkKTsKKworCQkJcmVzdWx0ID0gUFNRTGV4ZWMoYnVmLmRhdGEpOworCQkJaWYgKCFy ZXN1bHQpCisJCQkJZ290byBlcnJvcl9yZXR1cm47CisJCQllbHNlCisJCQkJdHVwbGVzID0gUFFu dHVwbGVzKHJlc3VsdCk7CisKKwkJCWlmICh0dXBsZXMgPiAwKQorCQkJCXByaW50VGFibGVBZGRG b290ZXIoJmNvbnQsIF8oIkV4Y2VwdCBQdWJsaWNhdGlvbnM6IikpOworCisJCQkvKiBNaWdodCBi ZSBhbiBlbXB0eSBzZXQgLSB0aGF0J3Mgb2sgKi8KKwkJCWZvciAoaSA9IDA7IGkgPCB0dXBsZXM7 IGkrKykKKwkJCXsKKwkJCQlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLCAiICAgIFwiJXNcIiIsIFBR Z2V0dmFsdWUocmVzdWx0LCBpLCAwKSk7CisKKwkJCQlwcmludFRhYmxlQWRkRm9vdGVyKCZjb250 LCBidWYuZGF0YSk7CisJCQl9CisJCQlQUWNsZWFyKHJlc3VsdCk7CisJCX0KKwogCQkvKgogCQkg KiBJZiB2ZXJib3NlLCBwcmludCBOT1QgTlVMTCBjb25zdHJhaW50cy4KIAkJICovCkBAIC02NzYz LDggKzY4MTcsMTIgQEAgZGVzY3JpYmVQdWJsaWNhdGlvbnMoY29uc3QgY2hhciAqcGF0dGVybikK IAkJCQkJCQkgICIgICAgIHBnX2NhdGFsb2cucGdfcHVibGljYXRpb25fcmVsIHByXG4iCiAJCQkJ CQkJICAiV0hFUkUgYy5yZWxuYW1lc3BhY2UgPSBuLm9pZFxuIgogCQkJCQkJCSAgIiAgQU5EIGMu b2lkID0gcHIucHJyZWxpZFxuIgotCQkJCQkJCSAgIiAgQU5EIHByLnBycHViaWQgPSAnJXMnXG4i Ci0JCQkJCQkJICAiT1JERVIgQlkgMSwyIiwgcHViaWQpOworCQkJCQkJCSAgIiAgQU5EIHByLnBy cHViaWQgPSAnJXMnXG4iLCBwdWJpZCk7CisKKwkJCWlmIChwc2V0LnN2ZXJzaW9uID49IDE5MDAw MCkKKwkJCQlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLCAiICBBTkQgTk9UIHByLnByZXhjZXB0XG4i KTsKKworCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwgIk9SREVSIEJZIDEsMiIpOwogCQkJaWYg KCFhZGRGb290ZXJUb1B1YmxpY2F0aW9uRGVzYygmYnVmLCBfKCJUYWJsZXM6IiksIGZhbHNlLCAm Y29udCkpCiAJCQkJZ290byBlcnJvcl9yZXR1cm47CiAKQEAgLTY3ODIsNiArNjg0MCwyMyBAQCBk ZXNjcmliZVB1YmxpY2F0aW9ucyhjb25zdCBjaGFyICpwYXR0ZXJuKQogCQkJCQlnb3RvIGVycm9y X3JldHVybjsKIAkJCX0KIAkJfQorCQllbHNlCisJCXsKKwkJCWlmIChwc2V0LnN2ZXJzaW9uID49 IDE5MDAwMCkKKwkJCXsKKwkJCQkvKiBHZXQgdGFibGVzIGluIHRoZSBFWENFUFQgY2xhdXNlIGZv ciB0aGlzIHB1YmxpY2F0aW9uICovCisJCQkJcHJpbnRmUFFFeHBCdWZmZXIoJmJ1ZiwKKwkJCQkJ CQkJICAiU0VMRUNUIG4ubnNwbmFtZSB8fCAnLicgfHwgYy5yZWxuYW1lXG4iCisJCQkJCQkJCSAg IkZST00gcGdfY2F0YWxvZy5wZ19jbGFzcyBjXG4iCisJCQkJCQkJCSAgIiAgICAgSk9JTiBwZ19j YXRhbG9nLnBnX25hbWVzcGFjZSBuIE9OIG4ub2lkID0gYy5yZWxuYW1lc3BhY2VcbiIKKwkJCQkJ CQkJICAiICAgICBKT0lOIHBnX2NhdGFsb2cucGdfcHVibGljYXRpb25fcmVsIHByIE9OIGMub2lk ID0gcHIucHJyZWxpZFxuIgorCQkJCQkJCQkgICJXSEVSRSBwci5wcnB1YmlkID0gJyVzJyBBTkQg cHIucHJleGNlcHRcbiIKKwkJCQkJCQkJICAiT1JERVIgQlkgMSIsIHB1YmlkKTsKKwkJCQlpZiAo IWFkZEZvb3RlclRvUHVibGljYXRpb25EZXNjKCZidWYsIF8oIkV4Y2VwdCB0YWJsZXM6IiksCisJ CQkJCQkJCQkJCQl0cnVlLCAmY29udCkpCisJCQkJCWdvdG8gZXJyb3JfcmV0dXJuOworCQkJfQor CQl9CiAKIAkJcHJpbnRUYWJsZSgmY29udCwgcHNldC5xdWVyeUZvdXQsIGZhbHNlLCBwc2V0Lmxv Z2ZpbGUpOwogCQlwcmludFRhYmxlQ2xlYW51cCgmY29udCk7CmRpZmYgLS1naXQgYS9zcmMvYmlu L3BzcWwvdGFiLWNvbXBsZXRlLmluLmMgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMK aW5kZXggOTg3Y2NlODIwYjkuLmViMWJhNGU5YTMzIDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwv dGFiLWNvbXBsZXRlLmluLmMKKysrIGIvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jCkBA IC0zNjgxLDcgKzM2ODEsMTcgQEAgbWF0Y2hfcHJldmlvdXNfd29yZHMoaW50IHBhdHRlcm5faWQs CiAJZWxzZSBpZiAoTWF0Y2hlcygiQ1JFQVRFIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJG T1IiLCAiQUxMIikpCiAJCUNPTVBMRVRFX1dJVEgoIlRBQkxFUyIsICJTRVFVRU5DRVMiKTsKIAll bHNlIGlmIChNYXRjaGVzKCJDUkVBVEUiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgIkZPUiIs ICJBTEwiLCAiVEFCTEVTIikpCi0JCUNPTVBMRVRFX1dJVEgoIldJVEggKCIpOworCQlDT01QTEVU RV9XSVRIKCJFWENFUFQgVEFCTEUgKCIsICJXSVRIICgiKTsKKwllbHNlIGlmIChNYXRjaGVzKCJD UkVBVEUiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgIkZPUiIsICJBTEwiLCAiVEFCTEVTIiwg IkVYQ0VQVCIpKQorCQlDT01QTEVURV9XSVRIKCJUQUJMRSAoIik7CisJZWxzZSBpZiAoTWF0Y2hl cygiQ1JFQVRFIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJGT1IiLCAiQUxMIiwgIlRBQkxF UyIsICJFWENFUFQiLCAiVEFCTEUiKSkKKwkJQ09NUExFVEVfV0lUSCgiKCIpOworCWVsc2UgaWYg KE1hdGNoZXMoIkNSRUFURSIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiRk9SIiwgIkFMTCIs ICJUQUJMRVMiLCAiRVhDRVBUIiwgIlRBQkxFIiwgIigiKSkKKwkJQ09NUExFVEVfV0lUSF9TQ0hF TUFfUVVFUlkoUXVlcnlfZm9yX2xpc3Rfb2ZfdGFibGVzKTsKKwllbHNlIGlmIChNYXRjaGVzKCJD UkVBVEUiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgIkZPUiIsICJBTEwiLCAiVEFCTEVTIiwg IkVYQ0VQVCIsICJUQUJMRSIsICIoIiwgTWF0Y2hBbnlOKSAmJiBlbmRzX3dpdGgocHJldl93ZCwg JywnKSkKKwkJQ09NUExFVEVfV0lUSF9TQ0hFTUFfUVVFUlkoUXVlcnlfZm9yX2xpc3Rfb2ZfdGFi bGVzKTsKKwllbHNlIGlmIChNYXRjaGVzKCJDUkVBVEUiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFu eSwgIkZPUiIsICJBTEwiLCAiVEFCTEVTIiwgIkVYQ0VQVCIsICJUQUJMRSIsICIoIiwgTWF0Y2hB bnlOKSAmJiAhZW5kc193aXRoKHByZXZfd2QsICcsJykpCisJCUNPTVBMRVRFX1dJVEgoIikiKTsK IAllbHNlIGlmIChNYXRjaGVzKCJDUkVBVEUiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgIkZP UiIsICJUQUJMRVMiKSkKIAkJQ09NUExFVEVfV0lUSCgiSU4gU0NIRU1BIik7CiAJZWxzZSBpZiAo TWF0Y2hlcygiQ1JFQVRFIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJGT1IiLCAiVEFCTEUi LCBNYXRjaEFueSkgJiYgIWVuZHNfd2l0aChwcmV2X3dkLCAnLCcpKQpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9w Z19wdWJsaWNhdGlvbi5oCmluZGV4IDZlNWY3M2NhYTllLi5lMjUyMjg3MTNlNyAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5oCisrKyBiL3NyYy9pbmNsdWRl L2NhdGFsb2cvcGdfcHVibGljYXRpb24uaApAQCAtMTUwLDE2ICsxNTAsMTkgQEAgdHlwZWRlZiBz dHJ1Y3QgUHVibGljYXRpb25SZWxJbmZvCiAJUmVsYXRpb24JcmVsYXRpb247CiAJTm9kZQkgICAq d2hlcmVDbGF1c2U7CiAJTGlzdAkgICAqY29sdW1uczsKKwlib29sCQlleGNlcHQ7CiB9IFB1Ymxp Y2F0aW9uUmVsSW5mbzsKIAogZXh0ZXJuIFB1YmxpY2F0aW9uICpHZXRQdWJsaWNhdGlvbihPaWQg cHViaWQpOwogZXh0ZXJuIFB1YmxpY2F0aW9uICpHZXRQdWJsaWNhdGlvbkJ5TmFtZShjb25zdCBj aGFyICpwdWJuYW1lLCBib29sIG1pc3Npbmdfb2spOwotZXh0ZXJuIExpc3QgKkdldFJlbGF0aW9u UHVibGljYXRpb25zKE9pZCByZWxpZCk7CitleHRlcm4gTGlzdCAqR2V0UmVsYXRpb25JbmNsdWRl ZFB1YmxpY2F0aW9ucyhPaWQgcmVsaWQpOworZXh0ZXJuIExpc3QgKkdldFJlbGF0aW9uRXhjbHVk ZWRQdWJsaWNhdGlvbnMoT2lkIHJlbGlkKTsKIAogLyotLS0tLS0tLS0KLSAqIEV4cGVjdGVkIHZh bHVlcyBmb3IgcHViX3BhcnRvcHQgcGFyYW1ldGVyIG9mIEdldFB1YmxpY2F0aW9uUmVsYXRpb25z KCksCi0gKiB3aGljaCBhbGxvd3MgY2FsbGVycyB0byBzcGVjaWZ5IHdoaWNoIHBhcnRpdGlvbnMg b2YgcGFydGl0aW9uZWQgdGFibGVzCi0gKiBtZW50aW9uZWQgaW4gdGhlIHB1YmxpY2F0aW9uIHRo ZXkgZXhwZWN0IHRvIHNlZS4KKyAqIEV4cGVjdGVkIHZhbHVlcyBmb3IgcHViX3BhcnRvcHQgcGFy YW1ldGVyIG9mCisgKiBHZXRJbmNsdWRlZFB1YmxpY2F0aW9uUmVsYXRpb25zKCksIHdoaWNoIGFs bG93cyBjYWxsZXJzIHRvIHNwZWNpZnkgd2hpY2gKKyAqIHBhcnRpdGlvbnMgb2YgcGFydGl0aW9u ZWQgdGFibGVzIG1lbnRpb25lZCBpbiB0aGUgcHVibGljYXRpb24gdGhleSBleHBlY3QgdG8KKyAq IHNlZS4KICAqCiAgKglST09UOglvbmx5IHRoZSB0YWJsZSBleHBsaWNpdGx5IG1lbnRpb25lZCBp biB0aGUgcHVibGljYXRpb24KICAqCUxFQUY6CW9ubHkgbGVhZiBwYXJ0aXRpb25zIGluIGdpdmVu IHRyZWUKQEAgLTE3Miw5ICsxNzUsMTIgQEAgdHlwZWRlZiBlbnVtIFB1YmxpY2F0aW9uUGFydE9w dAogCVBVQkxJQ0FUSU9OX1BBUlRfQUxMLAogfSBQdWJsaWNhdGlvblBhcnRPcHQ7CiAKLWV4dGVy biBMaXN0ICpHZXRQdWJsaWNhdGlvblJlbGF0aW9ucyhPaWQgcHViaWQsIFB1YmxpY2F0aW9uUGFy dE9wdCBwdWJfcGFydG9wdCk7CitleHRlcm4gTGlzdCAqR2V0SW5jbHVkZWRQdWJsaWNhdGlvblJl bGF0aW9ucyhPaWQgcHViaWQsCisJCQkJCQkJCQkJCSBQdWJsaWNhdGlvblBhcnRPcHQgcHViX3Bh cnRvcHQpOworZXh0ZXJuIExpc3QgKkdldEV4Y2x1ZGVkUHVibGljYXRpb25UYWJsZXMoT2lkIHB1 YmlkLAorCQkJCQkJCQkJCSAgUHVibGljYXRpb25QYXJ0T3B0IHB1Yl9wYXJ0b3B0KTsKIGV4dGVy biBMaXN0ICpHZXRBbGxUYWJsZXNQdWJsaWNhdGlvbnModm9pZCk7Ci1leHRlcm4gTGlzdCAqR2V0 QWxsUHVibGljYXRpb25SZWxhdGlvbnMoY2hhciByZWxraW5kLCBib29sIHB1YnZpYXJvb3QpOwor ZXh0ZXJuIExpc3QgKkdldEFsbFB1YmxpY2F0aW9uUmVsYXRpb25zKE9pZCBwdWJpZCwgY2hhciBy ZWxraW5kLCBib29sIHB1YnZpYXJvb3QpOwogZXh0ZXJuIExpc3QgKkdldFB1YmxpY2F0aW9uU2No ZW1hcyhPaWQgcHViaWQpOwogZXh0ZXJuIExpc3QgKkdldFNjaGVtYVB1YmxpY2F0aW9ucyhPaWQg c2NoZW1haWQpOwogZXh0ZXJuIExpc3QgKkdldFNjaGVtYVB1YmxpY2F0aW9uUmVsYXRpb25zKE9p ZCBzY2hlbWFpZCwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRp b25fcmVsLmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uX3JlbC5oCmluZGV4 IDYzZWI3Yzc1ZjUzLi5jZWZjMzhjOWVkOCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxv Zy9wZ19wdWJsaWNhdGlvbl9yZWwuaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3B1Ymxp Y2F0aW9uX3JlbC5oCkBAIC0zMyw2ICszMyw3IEBAIENBVEFMT0cocGdfcHVibGljYXRpb25fcmVs LDYxMDYsUHVibGljYXRpb25SZWxSZWxhdGlvbklkKQogCU9pZAkJCW9pZDsJCQkvKiBvaWQgKi8K IAlPaWQJCQlwcnB1YmlkIEJLSV9MT09LVVAocGdfcHVibGljYXRpb24pOyAvKiBPaWQgb2YgdGhl IHB1YmxpY2F0aW9uICovCiAJT2lkCQkJcHJyZWxpZCBCS0lfTE9PS1VQKHBnX2NsYXNzKTsJLyog T2lkIG9mIHRoZSByZWxhdGlvbiAqLworCWJvb2wJCXByZXhjZXB0IEJLSV9ERUZBVUxUKGYpOwkv KiByZWxhdGlvbiBpcyBub3QgcHVibGlzaGVkICovCiAKICNpZmRlZglDQVRBTE9HX1ZBUkxFTgkJ CS8qIHZhcmlhYmxlLWxlbmd0aCBmaWVsZHMgc3RhcnQgaGVyZSAqLwogCXBnX25vZGVfdHJlZSBw cnF1YWw7CQkvKiBxdWFsaWZpY2F0aW9ucyAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9k ZXMvcGFyc2Vub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCmluZGV4IGYz NzEzMTgzNWJlLi5mZjQxOTQzYTZkYiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFy c2Vub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaApAQCAtNDI5OSw5 ICs0Mjk5LDEwIEBAIHR5cGVkZWYgc3RydWN0IEFsdGVyVFNDb25maWd1cmF0aW9uU3RtdAogdHlw ZWRlZiBzdHJ1Y3QgUHVibGljYXRpb25UYWJsZQogewogCU5vZGVUYWcJCXR5cGU7Ci0JUmFuZ2VW YXIgICAqcmVsYXRpb247CQkvKiByZWxhdGlvbiB0byBiZSBwdWJsaXNoZWQgKi8KKwlSYW5nZVZh ciAgICpyZWxhdGlvbjsJCS8qIHB1YmxpY2F0aW9uIHJlbGF0aW9uICovCiAJTm9kZQkgICAqd2hl cmVDbGF1c2U7CS8qIHF1YWxpZmljYXRpb25zICovCiAJTGlzdAkgICAqY29sdW1uczsJCS8qIExp c3Qgb2YgY29sdW1ucyBpbiBhIHB1YmxpY2F0aW9uIHRhYmxlICovCisJYm9vbAkJZXhjZXB0OwkJ CS8qIFRydWUgaWYgbGlzdGVkIGluIHRoZSBFWENFUFQgY2xhdXNlICovCiB9IFB1YmxpY2F0aW9u VGFibGU7CiAKIC8qCkBAIC00MzEwLDYgKzQzMTEsNyBAQCB0eXBlZGVmIHN0cnVjdCBQdWJsaWNh dGlvblRhYmxlCiB0eXBlZGVmIGVudW0gUHVibGljYXRpb25PYmpTcGVjVHlwZQogewogCVBVQkxJ Q0FUSU9OT0JKX1RBQkxFLAkJLyogQSB0YWJsZSAqLworCVBVQkxJQ0FUSU9OT0JKX0VYQ0VQVF9U QUJMRSwJLyogQSB0YWJsZSBpbiB0aGUgRVhDRVBUIGNsYXVzZSAqLwogCVBVQkxJQ0FUSU9OT0JK X1RBQkxFU19JTl9TQ0hFTUEsCS8qIEFsbCB0YWJsZXMgaW4gc2NoZW1hICovCiAJUFVCTElDQVRJ T05PQkpfVEFCTEVTX0lOX0NVUl9TQ0hFTUEsCS8qIEFsbCB0YWJsZXMgaW4gZmlyc3QgZWxlbWVu dCBvZgogCQkJCQkJCQkJCQkgKiBzZWFyY2hfcGF0aCAqLwpAQCAtNDMzOCw2ICs0MzQwLDcgQEAg dHlwZWRlZiBzdHJ1Y3QgUHVibGljYXRpb25BbGxPYmpTcGVjCiB7CiAJTm9kZVRhZwkJdHlwZTsK IAlQdWJsaWNhdGlvbkFsbE9ialR5cGUgcHVib2JqdHlwZTsJLyogdHlwZSBvZiB0aGlzIHB1Ymxp Y2F0aW9uIG9iamVjdCAqLworCUxpc3QJICAgKmV4Y2VwdF90YWJsZXM7CS8qIHRhYmxlcyBzcGVj aWZpZWQgaW4gdGhlIEVYQ0VQVCBjbGF1c2UgKi8KIAlQYXJzZUxvYwlsb2NhdGlvbjsJCS8qIHRv a2VuIGxvY2F0aW9uLCBvciAtMSBpZiB1bmtub3duICovCiB9IFB1YmxpY2F0aW9uQWxsT2JqU3Bl YzsKIApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wdWJsaWNhdGlvbi5v dXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91dAppbmRleCAxMDVk MTVhZTQ1Zi4uNjgxZDI1NjRlZDUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvcHVibGljYXRpb24ub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGlj YXRpb24ub3V0CkBAIC0yMTMsMzMgKzIxMywxNTcgQEAgTm90LW51bGwgY29uc3RyYWludHM6CiAg cmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgdCAgICAgICAgICB8IGYgICAgICAgICAgICAgfCB0 ICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgfCBmICAgICAgICAgfCBub25lICAgICAgICAgICAg ICB8IGYgICAgICAgIHwgCiAoMSByb3cpCiAKLURST1AgVEFCTEUgdGVzdHB1Yl90YmwyOwotRFJP UCBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcmFsbHRhYmxlcywgdGVzdHB1Yl9mb3J0YWJsZSwgdGVz dHB1Yl9mb3JzY2hlbWEsIHRlc3RwdWJfZm9yX3RibF9zY2hlbWE7Ci1DUkVBVEUgVEFCTEUgdGVz dHB1Yl90YmwzIChhIGludCk7Ci1DUkVBVEUgVEFCTEUgdGVzdHB1Yl90YmwzYSAoYiB0ZXh0KSBJ TkhFUklUUyAodGVzdHB1Yl90YmwzKTsKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorLS0gRVhDRVBUIFRBQkxFIHRlc3RzIGZvciBub3JtYWwgdGFibGVzCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIFNFVCBjbGllbnRf bWluX21lc3NhZ2VzID0gJ0VSUk9SJzsKLUNSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViMyBGT1Ig VEFCTEUgdGVzdHB1Yl90YmwzOwotQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWI0IEZPUiBUQUJM RSBPTkxZIHRlc3RwdWJfdGJsMzsKKy0tIFNwZWNpZnkgdGFibGUgbGlzdCBpbiB0aGUgRVhDRVBU IFRBQkxFIGNsYXVzZSBvZiBhIEZPUiBBTEwgVEFCTEVTIHB1YmxpY2F0aW9uCitDUkVBVEUgUFVC TElDQVRJT04gdGVzdHB1Yl9mb3JhbGx0YWJsZXNfZXhjZXB0dGFibGUgRk9SIEFMTCBUQUJMRVMg RVhDRVBUIFRBQkxFICh0ZXN0cHViX3RibDEsIHRlc3RwdWJfdGJsMik7CitcZFJwKyB0ZXN0cHVi X2ZvcmFsbHRhYmxlc19leGNlcHR0YWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfZm9yYWxsdGFibGVzX2V4Y2Vw dHRhYmxlCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBzZXF1 ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBHZW5lcmF0 ZWQgY29sdW1ucyB8IFZpYSByb290IHwgRGVzY3JpcHRpb24gCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgdCAgICAgICAgICB8IGYgICAg ICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBub25l ICAgICAgICAgICAgICB8IGYgICAgICAgIHwgCitFeGNlcHQgdGFibGVzOgorICAgICJwdWJsaWMu dGVzdHB1Yl90YmwxIgorICAgICJwdWJsaWMudGVzdHB1Yl90YmwyIgorCistLSBTcGVjaWZ5IHRh YmxlIGluIHRoZSBFWENFUFQgVEFCTEUgY2xhdXNlIG9mIGEgRk9SIEFMTCBUQUJMRVMgcHVibGlj YXRpb24KK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcmFsbHRhYmxlc19leGNlcHR0YWJs ZTEgRk9SIEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxFICh0ZXN0cHViX3RibDEpOworXGRScCsgdGVz dHB1Yl9mb3JhbGx0YWJsZXNfZXhjZXB0dGFibGUxCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2ZvcmFsbHRhYmxlc19l eGNlcHR0YWJsZTEKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxs IHNlcXVlbmNlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IEdl bmVyYXRlZCBjb2x1bW5zIHwgVmlhIHJvb3QgfCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCB0ICAgICAgICAgIHwg ZiAgICAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8 IG5vbmUgICAgICAgICAgICAgIHwgZiAgICAgICAgfCAKK0V4Y2VwdCB0YWJsZXM6CisgICAgInB1 YmxpYy50ZXN0cHViX3RibDEiCisKKy0tIENoZWNrIHRoYXQgdGhlIHRhYmxlIGRlc2NyaXB0aW9u IHNob3dzIHRoZSBwdWJsaWNhdGlvbnMgd2hlcmUgaXQgaXMgbGlzdGVkCistLSBpbiB0aGUgRVhD RVBUIFRBQkxFIGNsYXVzZQorXGQgdGVzdHB1Yl90YmwxCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgVGFibGUgInB1YmxpYy50ZXN0cHViX3RibDEiCisgQ29sdW1uIHwgIFR5cGUgICB8IENv bGxhdGlvbiB8IE51bGxhYmxlIHwgICAgICAgICAgICAgICAgIERlZmF1bHQgICAgICAgICAgICAg ICAgICAKKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIGlkICAgICB8IGludGVnZXIgfCAg ICAgICAgICAgfCBub3QgbnVsbCB8IG5leHR2YWwoJ3Rlc3RwdWJfdGJsMV9pZF9zZXEnOjpyZWdj bGFzcykKKyBkYXRhICAgfCB0ZXh0ICAgIHwgICAgICAgICAgIHwgICAgICAgICAgfCAKK0luZGV4 ZXM6CisgICAgInRlc3RwdWJfdGJsMV9wa2V5IiBQUklNQVJZIEtFWSwgYnRyZWUgKGlkKQorUHVi bGljYXRpb25zOgorICAgICJ0ZXN0cHViX2ZvcmFsbHRhYmxlcyIKK0V4Y2VwdCBQdWJsaWNhdGlv bnM6CisgICAgInRlc3RwdWJfZm9yYWxsdGFibGVzX2V4Y2VwdHRhYmxlIgorICAgICJ0ZXN0cHVi X2ZvcmFsbHRhYmxlc19leGNlcHR0YWJsZTEiCisKIFJFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7 CitEUk9QIFRBQkxFIHRlc3RwdWJfdGJsMjsKK0RST1AgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3Jh bGx0YWJsZXMsIHRlc3RwdWJfZm9ydGFibGUsIHRlc3RwdWJfZm9yc2NoZW1hLCB0ZXN0cHViX2Zv cl90Ymxfc2NoZW1hLCB0ZXN0cHViX2ZvcmFsbHRhYmxlc19leGNlcHR0YWJsZSwgdGVzdHB1Yl9m b3JhbGx0YWJsZXNfZXhjZXB0dGFibGUxOworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCistLSBUZXN0cyBmb3IgaW5oZXJpdGVkIHRhYmxlcywgYW5kCistLSBF WENFUFQgVEFCTEUgdGVzdHMgZm9yIGluaGVyaXRlZCB0YWJsZXMKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorU0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSAn RVJST1InOworQ1JFQVRFIFRBQkxFIHRlc3RwdWJfdGJsX3BhcmVudCAoYSBpbnQpOworQ1JFQVRF IFRBQkxFIHRlc3RwdWJfdGJsX2NoaWxkIChiIHRleHQpIElOSEVSSVRTICh0ZXN0cHViX3RibF9w YXJlbnQpOworQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWIzIEZPUiBUQUJMRSB0ZXN0cHViX3Ri bF9wYXJlbnQ7CiBcZFJwKyB0ZXN0cHViMwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIzCiAgICAg ICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBzZXF1ZW5jZXMgfCBJbnNl cnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBHZW5lcmF0ZWQgY29sdW1ucyB8 IFZpYSByb290IHwgRGVzY3JpcHRpb24gCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCiAg cmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgICAgfCB0 ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBub25lICAgICAgICAgICAg ICB8IGYgICAgICAgIHwgCiBUYWJsZXM6Ci0gICAgInB1YmxpYy50ZXN0cHViX3RibDMiCi0gICAg InB1YmxpYy50ZXN0cHViX3RibDNhIgorICAgICJwdWJsaWMudGVzdHB1Yl90YmxfY2hpbGQiCisg ICAgInB1YmxpYy50ZXN0cHViX3RibF9wYXJlbnQiCiAKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0 cHViNCBGT1IgVEFCTEUgT05MWSB0ZXN0cHViX3RibF9wYXJlbnQ7CiBcZFJwKyB0ZXN0cHViNAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFB1YmxpY2F0aW9uIHRlc3RwdWI0CiAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxs IHRhYmxlcyB8IEFsbCBzZXF1ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBU cnVuY2F0ZXMgfCBHZW5lcmF0ZWQgY29sdW1ucyB8IFZpYSByb290IHwgRGVzY3JpcHRpb24gCiAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCiAgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwg ZiAgICAgICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAg fCB0ICAgICAgICAgfCBub25lICAgICAgICAgICAgICB8IGYgICAgICAgIHwgCiBUYWJsZXM6Ci0g ICAgInB1YmxpYy50ZXN0cHViX3RibDMiCisgICAgInB1YmxpYy50ZXN0cHViX3RibF9wYXJlbnQi CisKKy0tIExpc3QgdGhlIHBhcmVudCB0YWJsZSBpbiB0aGUgRVhDRVBUIFRBQkxFIGNsYXVzZSAo d2l0aG91dCBPTkxZIG9yICcqJykKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViNSBGT1IgQUxM IFRBQkxFUyBFWENFUFQgVEFCTEUgKHRlc3RwdWJfdGJsX3BhcmVudCk7CitcZFJwKyB0ZXN0cHVi NQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWI1CisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwg QWxsIHRhYmxlcyB8IEFsbCBzZXF1ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMg fCBUcnVuY2F0ZXMgfCBHZW5lcmF0ZWQgY29sdW1ucyB8IFZpYSByb290IHwgRGVzY3JpcHRpb24g CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2Vy IHwgdCAgICAgICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAg ICAgfCB0ICAgICAgICAgfCBub25lICAgICAgICAgICAgICB8IGYgICAgICAgIHwgCitFeGNlcHQg dGFibGVzOgorICAgICJwdWJsaWMudGVzdHB1Yl90YmxfY2hpbGQiCisgICAgInB1YmxpYy50ZXN0 cHViX3RibF9wYXJlbnQiCiAKLURST1AgVEFCTEUgdGVzdHB1Yl90YmwzLCB0ZXN0cHViX3RibDNh OwotRFJPUCBQVUJMSUNBVElPTiB0ZXN0cHViMywgdGVzdHB1YjQ7CistLSBFWENFUFQgd2l0aCAn Kic6IGxpc3QgdGhlIHRhYmxlIGFuZCBhbGwgaXRzIGRlc2NlbmRhbnRzIGluIHRoZSBFWENFUFQg VEFCTEUgY2xhdXNlCitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1YjYgRk9SIEFMTCBUQUJMRVMg RVhDRVBUIFRBQkxFICh0ZXN0cHViX3RibF9wYXJlbnQgKik7CitcZFJwKyB0ZXN0cHViNgorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFB1YmxpY2F0aW9uIHRlc3RwdWI2CisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRh YmxlcyB8IEFsbCBzZXF1ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVu Y2F0ZXMgfCBHZW5lcmF0ZWQgY29sdW1ucyB8IFZpYSByb290IHwgRGVzY3JpcHRpb24gCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgdCAg ICAgICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgICAgfCBub25lICAgICAgICAgICAgICB8IGYgICAgICAgIHwgCitFeGNlcHQgdGFibGVz OgorICAgICJwdWJsaWMudGVzdHB1Yl90YmxfY2hpbGQiCisgICAgInB1YmxpYy50ZXN0cHViX3Ri bF9wYXJlbnQiCisKKy0tIEVYQ0VQVCB3aXRoIE9OTFk6IGxpc3QgdGhlIHRhYmxlIGluIHRoZSBF WENFUFQgVEFCTEUgY2xhdXNlLCBidXQgbm90IGl0cyBkZXNjZW5kYW50cworQ1JFQVRFIFBVQkxJ Q0FUSU9OIHRlc3RwdWI3IEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCBUQUJMRSAoT05MWSB0ZXN0cHVi X3RibF9wYXJlbnQpOworXGRScCsgdGVzdHB1YjcKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViNwor ICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwg SW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgR2VuZXJhdGVkIGNvbHVt bnMgfCBWaWEgcm9vdCB8IERlc2NyaXB0aW9uIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IHQgICAgICAgICAgfCBmICAgICAgICAgICAg IHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgbm9uZSAgICAgICAg ICAgICAgfCBmICAgICAgICB8IAorRXhjZXB0IHRhYmxlczoKKyAgICAicHVibGljLnRlc3RwdWJf dGJsX3BhcmVudCIKKworUkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsKK0RST1AgVEFCTEUgdGVz dHB1Yl90YmxfcGFyZW50LCB0ZXN0cHViX3RibF9jaGlsZDsKK0RST1AgUFVCTElDQVRJT04gdGVz dHB1YjMsIHRlc3RwdWI0LCB0ZXN0cHViNSwgdGVzdHB1YjYsIHRlc3RwdWI3OworLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSBFWENFUFQgVEFCTEUgdGVz dHMgZm9yIHBhcnRpdGlvbmVkIHRhYmxlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCitTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9ICdFUlJPUic7CitDUkVB VEUgVEFCTEUgdGVzdHB1Yl9yb290KGEgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UoYSk7CitDUkVB VEUgVEFCTEUgdGVzdHB1Yl9wYXJ0MSBQQVJUSVRJT04gT0YgdGVzdHB1Yl9yb290IEZPUiBWQUxV RVMgRlJPTSAoMCkgVE8gKDEwMCk7CitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1YjggRk9SIEFM TCBUQUJMRVMgRVhDRVBUIFRBQkxFICh0ZXN0cHViX3Jvb3QpOworXGRScCsgdGVzdHB1Yjg7Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgUHVibGljYXRpb24gdGVzdHB1YjgKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwg dGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRy dW5jYXRlcyB8IEdlbmVyYXRlZCBjb2x1bW5zIHwgVmlhIHJvb3QgfCBEZXNjcmlwdGlvbiAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCB0 ICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgICB8IG5vbmUgICAgICAgICAgICAgIHwgZiAgICAgICAgfCAKK0V4Y2VwdCB0YWJs ZXM6CisgICAgInB1YmxpYy50ZXN0cHViX3Jvb3QiCisKK1xkIHRlc3RwdWJfcGFydDEKKyAgICAg ICAgICAgVGFibGUgInB1YmxpYy50ZXN0cHViX3BhcnQxIgorIENvbHVtbiB8ICBUeXBlICAgfCBD b2xsYXRpb24gfCBOdWxsYWJsZSB8IERlZmF1bHQgCistLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0KKyBhICAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAg IHwgICAgICAgICAgfCAKK1BhcnRpdGlvbiBvZjogdGVzdHB1Yl9yb290IEZPUiBWQUxVRVMgRlJP TSAoMCkgVE8gKDEwMCkKK0V4Y2VwdCBQdWJsaWNhdGlvbnM6CisgICAgInRlc3RwdWI4IgorCitc ZCB0ZXN0cHViX3Jvb3QKKyAgICAgIFBhcnRpdGlvbmVkIHRhYmxlICJwdWJsaWMudGVzdHB1Yl9y b290IgorIENvbHVtbiB8ICBUeXBlICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8IERlZmF1bHQg CistLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0KKyBh ICAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgICAgICAgICAgfCAKK1BhcnRpdGlvbiBrZXk6 IFJBTkdFIChhKQorRXhjZXB0IFB1YmxpY2F0aW9uczoKKyAgICAidGVzdHB1YjgiCitOdW1iZXIg b2YgcGFydGl0aW9uczogMSAoVXNlIFxkKyB0byBsaXN0IHRoZW0uKQorCitDUkVBVEUgUFVCTElD QVRJT04gdGVzdHB1YjkgRk9SIEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxFICh0ZXN0cHViX3BhcnQx KTsKK0VSUk9SOiAgY2Fubm90IHVzZSBwdWJsaWNhdGlvbiBFWENFUFQgY2xhdXNlIGZvciByZWxh dGlvbiAidGVzdHB1Yl9wYXJ0MSIKK0RFVEFJTDogIFRoaXMgb3BlcmF0aW9uIGlzIG5vdCBzdXBw b3J0ZWQgZm9yIGluZGl2aWR1YWwgcGFydGl0aW9ucy4KK0NSRUFURSBUQUJMRSB0YWJfbWFpbiAo YSBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRShhKTsKKy0tIEF0dGFjaGluZyBhIHBhcnRpdGlvbiBp cyBub3QgYWxsb3dlZCBpZiB0aGUgcGFydGl0aW9uZWQgdGFibGUgYXBwZWFycyBpbiBhCistLSBw dWJsaWNhdGlvbidzIEVYQ0VQVCBUQUJMRSBjbGF1c2UuCitBTFRFUiBUQUJMRSB0YWJfbWFpbiBB VFRBQ0ggUEFSVElUSU9OIHRlc3RwdWJfcm9vdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgyMDAp OworRVJST1I6ICBjYW5ub3QgYXR0YWNoIHRhYmxlICJ0ZXN0cHViX3Jvb3QiIGFzIHBhcnRpdGlv biBiZWNhdXNlIGl0IGlzIHJlZmVyZW5jZWQgaW4gcHVibGljYXRpb24gInRlc3RwdWI4IiBFWENF UFQgY2xhdXNlCitERVRBSUw6ICBUaGUgcHVibGljYXRpb24gRVhDRVBUIGNsYXVzZSBjYW5ub3Qg Y29udGFpbiB0YWJsZXMgdGhhdCBhcmUgcGFydGl0aW9ucy4KK1JFU0VUIGNsaWVudF9taW5fbWVz c2FnZXM7CitEUk9QIFRBQkxFIHRlc3RwdWJfcm9vdCwgdGVzdHB1Yl9wYXJ0MSwgdGFiX21haW47 CitEUk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWI4OwogLS0tIFRlc3RzIGZvciBwdWJsaWNhdGlvbnMg d2l0aCBTRVFVRU5DRVMKIENSRUFURSBTRVFVRU5DRSByZWdyZXNzX3B1Yl9zZXEwOwogQ1JFQVRF IFNFUVVFTkNFIHB1Yl90ZXN0LnJlZ3Jlc3NfcHViX3NlcTE7CmRpZmYgLS1naXQgYS9zcmMvdGVz dC9yZWdyZXNzL3NxbC9wdWJsaWNhdGlvbi5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wdWJs aWNhdGlvbi5zcWwKaW5kZXggODViMDBiZDY3YzguLjQwNTU3OWRhZDUyIDEwMDY0NAotLS0gYS9z cmMvdGVzdC9yZWdyZXNzL3NxbC9wdWJsaWNhdGlvbi5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVz cy9zcWwvcHVibGljYXRpb24uc3FsCkBAIC0xMDUsMjAgKzEwNSw2OSBAQCBTRUxFQ1QgcHVibmFt ZSwgcHViYWxsdGFibGVzIEZST00gcGdfcHVibGljYXRpb24gV0hFUkUgcHVibmFtZSA9ICd0ZXN0 cHViX2ZvcmFsbAogXGQrIHRlc3RwdWJfdGJsMgogXGRScCsgdGVzdHB1Yl9mb3JhbGx0YWJsZXMK IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSBFWENF UFQgVEFCTEUgdGVzdHMgZm9yIG5vcm1hbCB0YWJsZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorU0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSAnRVJST1In OworLS0gU3BlY2lmeSB0YWJsZSBsaXN0IGluIHRoZSBFWENFUFQgVEFCTEUgY2xhdXNlIG9mIGEg Rk9SIEFMTCBUQUJMRVMgcHVibGljYXRpb24KK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2Zv cmFsbHRhYmxlc19leGNlcHR0YWJsZSBGT1IgQUxMIFRBQkxFUyBFWENFUFQgVEFCTEUgKHRlc3Rw dWJfdGJsMSwgdGVzdHB1Yl90YmwyKTsKK1xkUnArIHRlc3RwdWJfZm9yYWxsdGFibGVzX2V4Y2Vw dHRhYmxlCistLSBTcGVjaWZ5IHRhYmxlIGluIHRoZSBFWENFUFQgVEFCTEUgY2xhdXNlIG9mIGEg Rk9SIEFMTCBUQUJMRVMgcHVibGljYXRpb24KK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2Zv cmFsbHRhYmxlc19leGNlcHR0YWJsZTEgRk9SIEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxFICh0ZXN0 cHViX3RibDEpOworXGRScCsgdGVzdHB1Yl9mb3JhbGx0YWJsZXNfZXhjZXB0dGFibGUxCistLSBD aGVjayB0aGF0IHRoZSB0YWJsZSBkZXNjcmlwdGlvbiBzaG93cyB0aGUgcHVibGljYXRpb25zIHdo ZXJlIGl0IGlzIGxpc3RlZAorLS0gaW4gdGhlIEVYQ0VQVCBUQUJMRSBjbGF1c2UKK1xkIHRlc3Rw dWJfdGJsMQorCitSRVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOwogRFJPUCBUQUJMRSB0ZXN0cHVi X3RibDI7Ci1EUk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yYWxsdGFibGVzLCB0ZXN0cHViX2Zv cnRhYmxlLCB0ZXN0cHViX2ZvcnNjaGVtYSwgdGVzdHB1Yl9mb3JfdGJsX3NjaGVtYTsKK0RST1Ag UFVCTElDQVRJT04gdGVzdHB1Yl9mb3JhbGx0YWJsZXMsIHRlc3RwdWJfZm9ydGFibGUsIHRlc3Rw dWJfZm9yc2NoZW1hLCB0ZXN0cHViX2Zvcl90Ymxfc2NoZW1hLCB0ZXN0cHViX2ZvcmFsbHRhYmxl c19leGNlcHR0YWJsZSwgdGVzdHB1Yl9mb3JhbGx0YWJsZXNfZXhjZXB0dGFibGUxOwogCi1DUkVB VEUgVEFCTEUgdGVzdHB1Yl90YmwzIChhIGludCk7Ci1DUkVBVEUgVEFCTEUgdGVzdHB1Yl90Ymwz YSAoYiB0ZXh0KSBJTkhFUklUUyAodGVzdHB1Yl90YmwzKTsKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gVGVzdHMgZm9yIGluaGVyaXRlZCB0YWJsZXMs IGFuZAorLS0gRVhDRVBUIFRBQkxFIHRlc3RzIGZvciBpbmhlcml0ZWQgdGFibGVzCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIFNFVCBjbGllbnRfbWluX21l c3NhZ2VzID0gJ0VSUk9SJzsKLUNSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViMyBGT1IgVEFCTEUg dGVzdHB1Yl90YmwzOwotQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWI0IEZPUiBUQUJMRSBPTkxZ IHRlc3RwdWJfdGJsMzsKLVJFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CitDUkVBVEUgVEFCTEUg dGVzdHB1Yl90YmxfcGFyZW50IChhIGludCk7CitDUkVBVEUgVEFCTEUgdGVzdHB1Yl90YmxfY2hp bGQgKGIgdGV4dCkgSU5IRVJJVFMgKHRlc3RwdWJfdGJsX3BhcmVudCk7CitDUkVBVEUgUFVCTElD QVRJT04gdGVzdHB1YjMgRk9SIFRBQkxFIHRlc3RwdWJfdGJsX3BhcmVudDsKIFxkUnArIHRlc3Rw dWIzCitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1YjQgRk9SIFRBQkxFIE9OTFkgdGVzdHB1Yl90 YmxfcGFyZW50OwogXGRScCsgdGVzdHB1YjQKKy0tIExpc3QgdGhlIHBhcmVudCB0YWJsZSBpbiB0 aGUgRVhDRVBUIFRBQkxFIGNsYXVzZSAod2l0aG91dCBPTkxZIG9yICcqJykKK0NSRUFURSBQVUJM SUNBVElPTiB0ZXN0cHViNSBGT1IgQUxMIFRBQkxFUyBFWENFUFQgVEFCTEUgKHRlc3RwdWJfdGJs X3BhcmVudCk7CitcZFJwKyB0ZXN0cHViNQorLS0gRVhDRVBUIHdpdGggJyonOiBsaXN0IHRoZSB0 YWJsZSBhbmQgYWxsIGl0cyBkZXNjZW5kYW50cyBpbiB0aGUgRVhDRVBUIFRBQkxFIGNsYXVzZQor Q1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWI2IEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCBUQUJMRSAo dGVzdHB1Yl90YmxfcGFyZW50ICopOworXGRScCsgdGVzdHB1YjYKKy0tIEVYQ0VQVCB3aXRoIE9O TFk6IGxpc3QgdGhlIHRhYmxlIGluIHRoZSBFWENFUFQgVEFCTEUgY2xhdXNlLCBidXQgbm90IGl0 cyBkZXNjZW5kYW50cworQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWI3IEZPUiBBTEwgVEFCTEVT IEVYQ0VQVCBUQUJMRSAoT05MWSB0ZXN0cHViX3RibF9wYXJlbnQpOworXGRScCsgdGVzdHB1YjcK IAotRFJPUCBUQUJMRSB0ZXN0cHViX3RibDMsIHRlc3RwdWJfdGJsM2E7Ci1EUk9QIFBVQkxJQ0FU SU9OIHRlc3RwdWIzLCB0ZXN0cHViNDsKK1JFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CitEUk9Q IFRBQkxFIHRlc3RwdWJfdGJsX3BhcmVudCwgdGVzdHB1Yl90YmxfY2hpbGQ7CitEUk9QIFBVQkxJ Q0FUSU9OIHRlc3RwdWIzLCB0ZXN0cHViNCwgdGVzdHB1YjUsIHRlc3RwdWI2LCB0ZXN0cHViNzsK KworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSBFWENF UFQgVEFCTEUgdGVzdHMgZm9yIHBhcnRpdGlvbmVkIHRhYmxlcworLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9ICdF UlJPUic7CitDUkVBVEUgVEFCTEUgdGVzdHB1Yl9yb290KGEgaW50KSBQQVJUSVRJT04gQlkgUkFO R0UoYSk7CitDUkVBVEUgVEFCTEUgdGVzdHB1Yl9wYXJ0MSBQQVJUSVRJT04gT0YgdGVzdHB1Yl9y b290IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEwMCk7CitDUkVBVEUgUFVCTElDQVRJT04gdGVz dHB1YjggRk9SIEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxFICh0ZXN0cHViX3Jvb3QpOworXGRScCsg dGVzdHB1Yjg7CitcZCB0ZXN0cHViX3BhcnQxCitcZCB0ZXN0cHViX3Jvb3QKK0NSRUFURSBQVUJM SUNBVElPTiB0ZXN0cHViOSBGT1IgQUxMIFRBQkxFUyBFWENFUFQgVEFCTEUgKHRlc3RwdWJfcGFy dDEpOworCitDUkVBVEUgVEFCTEUgdGFiX21haW4gKGEgaW50KSBQQVJUSVRJT04gQlkgUkFOR0Uo YSk7CistLSBBdHRhY2hpbmcgYSBwYXJ0aXRpb24gaXMgbm90IGFsbG93ZWQgaWYgdGhlIHBhcnRp dGlvbmVkIHRhYmxlIGFwcGVhcnMgaW4gYQorLS0gcHVibGljYXRpb24ncyBFWENFUFQgVEFCTEUg Y2xhdXNlLgorQUxURVIgVEFCTEUgdGFiX21haW4gQVRUQUNIIFBBUlRJVElPTiB0ZXN0cHViX3Jv b3QgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMjAwKTsKKworUkVTRVQgY2xpZW50X21pbl9tZXNz YWdlczsKK0RST1AgVEFCTEUgdGVzdHB1Yl9yb290LCB0ZXN0cHViX3BhcnQxLCB0YWJfbWFpbjsK K0RST1AgUFVCTElDQVRJT04gdGVzdHB1Yjg7CiAKIC0tLSBUZXN0cyBmb3IgcHVibGljYXRpb25z IHdpdGggU0VRVUVOQ0VTCiBDUkVBVEUgU0VRVUVOQ0UgcmVncmVzc19wdWJfc2VxMDsKZGlmZiAt LWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi9tZXNvbi5idWlsZCBiL3NyYy90ZXN0L3N1YnNj cmlwdGlvbi9tZXNvbi5idWlsZAppbmRleCBhNGM3ZGJhZmY1OS4uZjRhOWNmNTA1N2YgMTAwNjQ0 Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi9tZXNvbi5idWlsZAorKysgYi9zcmMvdGVzdC9z dWJzY3JpcHRpb24vbWVzb24uYnVpbGQKQEAgLTQ2LDYgKzQ2LDcgQEAgdGVzdHMgKz0gewogICAg ICAgJ3QvMDM0X3RlbXBvcmFsLnBsJywKICAgICAgICd0LzAzNV9jb25mbGljdHMucGwnLAogICAg ICAgJ3QvMDM2X3NlcXVlbmNlcy5wbCcsCisgICAgICAndC8wMzdfZXhjZXB0LnBsJywKICAgICAg ICd0LzEwMF9idWdzLnBsJywKICAgICBdLAogICB9LApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vi c2NyaXB0aW9uL3QvMDM3X2V4Y2VwdC5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzN19l eGNlcHQucGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjI3MjlkZjRk NWMwCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDM3X2V4Y2Vw dC5wbApAQCAtMCwwICsxLDI1NSBAQAorCisjIENvcHlyaWdodCAoYykgMjAyNiwgUG9zdGdyZVNR TCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKworIyBMb2dpY2FsIHJlcGxpY2F0aW9uIHRlc3Rz IGZvciBFWENFUFQgVEFCTEUgcHVibGljYXRpb25zCit1c2Ugc3RyaWN0OwordXNlIHdhcm5pbmdz OwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6 VXRpbHM7Cit1c2UgVGVzdDo6TW9yZTsKKworIyBJbml0aWFsaXplIHB1Ymxpc2hlciBub2RlCitt eSAkbm9kZV9wdWJsaXNoZXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3B1Ymxp c2hlcicpOworJG5vZGVfcHVibGlzaGVyLT5pbml0KGFsbG93c19zdHJlYW1pbmcgPT4gJ2xvZ2lj YWwnKTsKKyRub2RlX3B1Ymxpc2hlci0+c3RhcnQ7CisKK215ICRwdWJsaXNoZXJfY29ubnN0ciA9 ICRub2RlX3B1Ymxpc2hlci0+Y29ubnN0ciAuICcgZGJuYW1lPXBvc3RncmVzJzsKKworIyBJbml0 aWFsaXplIHN1YnNjcmliZXIgbm9kZQorbXkgJG5vZGVfc3Vic2NyaWJlciA9IFBvc3RncmVTUUw6 OlRlc3Q6OkNsdXN0ZXItPm5ldygnc3Vic2NyaWJlcicpOworJG5vZGVfc3Vic2NyaWJlci0+aW5p dDsKKyRub2RlX3N1YnNjcmliZXItPnN0YXJ0OworCitteSAkcmVzdWx0OworCitzdWIgdGVzdF9l eGNlcHRfcm9vdF9wYXJ0aXRpb24KK3sKKwlteSAoJHB1YnZpYXJvb3QpID0gQF87CisKKwkjIElm IHRoZSByb290IHBhcnRpdGlvbmVkIHRhYmxlIGlzIGluIHRoZSBFWENFUFQgVEFCTEUgY2xhdXNl LCBhbGwgaXRzCisJIyBwYXJ0aXRpb25zIGFyZSBleGNsdWRlZCBmcm9tIHB1YmxpY2F0aW9uLCBy ZWdhcmRsZXNzIG9mIHRoZQorCSMgcHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3Qgc2V0dGluZy4K Kwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXEoCisJCUNSRUFU RSBQVUJMSUNBVElPTiB0YXBfcHViX3BhcnQgRk9SIEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxFIChy b290MSkgV0lUSCAocHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QgPSAkcHVidmlhcm9vdCk7CisJ CUlOU0VSVCBJTlRPIHJvb3QxIFZBTFVFUyAoMSksICgxMDEpOworCSkpOworCSRub2RlX3N1YnNj cmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiQ1JFQVRFIFNVQlNDUklQVElPTiB0YXBf c3ViX3BhcnQgQ09OTkVDVElPTiAnJHB1Ymxpc2hlcl9jb25uc3RyJyBQVUJMSUNBVElPTiB0YXBf cHViX3BhcnQiCisJKTsKKwkkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9zdWJzY3JpcHRpb25f c3luYygkbm9kZV9wdWJsaXNoZXIsCisJCSd0YXBfc3ViX3BhcnQnKTsKKworCSMgQWR2YW5jZSB0 aGUgcmVwbGljYXRpb24gc2xvdCB0byBpZ25vcmUgY2hhbmdlcyBnZW5lcmF0ZWQgYmVmb3JlIHRo aXMgcG9pbnQuCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNF TEVDVCBzbG90X25hbWUgRlJPTSBwZ19yZXBsaWNhdGlvbl9zbG90X2FkdmFuY2UoJ3Rlc3Rfc2xv dCcsIHBnX2N1cnJlbnRfd2FsX2xzbigpKSIKKwkpOworCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCisJCSJJTlNFUlQgSU5UTyByb290MSBWQUxVRVMgKDIpLCAoMTAyKSIp OworCisJIyBWZXJpZnkgdGhhdCBkYXRhIGluc2VydGVkIGludG8gdGhlIHBhcnRpdGlvbmVkIHRh YmxlIGlzIG5vdCBwdWJsaXNoZWQgd2hlbgorCSMgaXQgaXMgaW4gdGhlIEVYQ0VQVCBUQUJMRSBj bGF1c2UuCisJJHJlc3VsdCA9ICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs CisJCSJTRUxFQ1QgY291bnQoKikgPSAwIEZST00gcGdfbG9naWNhbF9zbG90X2dldF9iaW5hcnlf Y2hhbmdlcygndGVzdF9zbG90JywgTlVMTCwgTlVMTCwgJ3Byb3RvX3ZlcnNpb24nLCAnMScsICdw dWJsaWNhdGlvbl9uYW1lcycsICd0YXBfcHViX3BhcnQnKSIKKwkpOworCSRub2RlX3B1Ymxpc2hl ci0+d2FpdF9mb3JfY2F0Y2h1cCgndGFwX3N1Yl9wYXJ0Jyk7CisKKwkjIFZlcmlmeSB0aGF0IG5v IHJvd3MgYXJlIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBmb3Igcm9vdCBvciBwYXJ0aXRpb25z LgorCWZvcmVhY2ggbXkgJHRhYmxlIChxdyhyb290MSBwYXJ0MSBwYXJ0MiBwYXJ0Ml8xKSkKKwl7 CisJCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJ CSJTRUxFQ1QgY291bnQoKikgRlJPTSAkdGFibGUiKTsKKwkJaXMoJHJlc3VsdCwgcXEoMCksICJu byByb3dzIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBmb3IgJHRhYmxlIik7CisJfQorCisJJG5v ZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJEUk9QIFNVQlNDUklQVElPTiB0 YXBfc3ViX3BhcnQiKTsKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAi RFJPUCBQVUJMSUNBVElPTiB0YXBfcHViX3BhcnQiKTsKK30KKworIyA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyBFWENFUFQgVEFCTEUgdGVzdCBjYXNlcyBm b3Igbm9uLXBhcnRpdGlvbmVkIHRhYmxlcyBhbmQgaW5oZXJpdGVkIHRhYmxlcy4KKyMgPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworIyBDcmVhdGUgc2NoZW1h cyBhbmQgdGFibGVzIG9uIHB1Ymxpc2hlcgorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJ J3Bvc3RncmVzJywgcXEoCisJQ1JFQVRFIFRBQkxFIHRhYjEgQVMgU0VMRUNUIGdlbmVyYXRlX3Nl cmllcygxLDEwKSBBUyBhOworCUNSRUFURSBUQUJMRSBwYXJlbnQgKGEgaW50KTsKKwlDUkVBVEUg VEFCTEUgY2hpbGQgKGIgaW50KSBJTkhFUklUUyAocGFyZW50KTsKKwlDUkVBVEUgVEFCTEUgcGFy ZW50MSAoYSBpbnQpOworCUNSRUFURSBUQUJMRSBjaGlsZDEgKGIgaW50KSBJTkhFUklUUyAocGFy ZW50MSk7CispKTsKKworIyBDcmVhdGUgc2NoZW1hcyBhbmQgdGFibGVzIG9uIHN1YnNjcmliZXIK KyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcSgKKwlDUkVBVEUg VEFCTEUgdGFiMSAoYSBpbnQpOworCUNSRUFURSBUQUJMRSBwYXJlbnQgKGEgaW50KTsKKwlDUkVB VEUgVEFCTEUgY2hpbGQgKGIgaW50KSBJTkhFUklUUyAocGFyZW50KTsKKwlDUkVBVEUgVEFCTEUg cGFyZW50MSAoYSBpbnQpOworCUNSRUFURSBUQUJMRSBjaGlsZDEgKGIgaW50KSBJTkhFUklUUyAo cGFyZW50MSk7CispKTsKKworIyBFeGNsdWRlIHRhYjEgKG5vbi1pbmhlcml0YW5jZSBjYXNlKSwg YW5kIGFsc28gZXhjbHVkZSBwYXJlbnQgYW5kIE9OTFkgcGFyZW50MQorIyB0byB2ZXJpZnkgZXhj bHVzaW9uIGJlaGF2aW9yIGZvciBpbmhlcml0ZWQgdGFibGVzLCBpbmNsdWRpbmcgdGhlIGVmZmVj dCBvZgorIyBPTkxZIGluIHRoZSBFWENFUFQgVEFCTEUgY2xhdXNlLgorJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFBVQkxJQ0FUSU9OIHRhYl9wdWIgRk9S IEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxFICh0YWIxLCBwYXJlbnQsIG9ubHkgcGFyZW50MSkiCisp OworCisjIENyZWF0ZSBhIGxvZ2ljYWwgcmVwbGljYXRpb24gc2xvdCB0byBoZWxwIHdpdGggbGF0 ZXIgdGVzdHMuCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxF Q1QgcGdfY3JlYXRlX2xvZ2ljYWxfcmVwbGljYXRpb25fc2xvdCgndGVzdF9zbG90JywgJ3Bnb3V0 cHV0JykiKTsKKworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNS RUFURSBTVUJTQ1JJUFRJT04gdGFiX3N1YiBDT05ORUNUSU9OICckcHVibGlzaGVyX2Nvbm5zdHIn IFBVQkxJQ0FUSU9OIHRhYl9wdWIiCispOworCisjIFdhaXQgZm9yIGluaXRpYWwgdGFibGUgc3lu YyB0byBmaW5pc2gKKyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX3N1YnNjcmlwdGlvbl9zeW5j KCRub2RlX3B1Ymxpc2hlciwgJ3RhYl9zdWInKTsKKworIyBDaGVjayB0aGUgdGFibGUgZGF0YSBk b2VzIG5vdCBzeW5jIGZvciB0aGUgdGFibGVzIHNwZWNpZmllZCBpbiBFWENFUFQgVEFCTEUKKyMg Y2xhdXNlLgorJHJlc3VsdCA9CisgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGFiMSIpOworaXMoJHJlc3VsdCwgcXEoMCksCisJ J2NoZWNrIHRoZXJlIGlzIG5vIGluaXRpYWwgZGF0YSBjb3BpZWQgZm9yIHRoZSB0YWJsZXMgc3Bl Y2lmaWVkIGluIHRoZSBFWENFUFQgVEFCTEUgY2xhdXNlJworKTsKKworIyBJbnNlcnQgc29tZSBk YXRhIGludG8gdGhlIHRhYmxlIGxpc3RlZCBpbiB0aGUgRVhDRVBUIFRBQkxFIGNsYXVzZQorJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXEoCisJSU5TRVJUIElOVE8g dGFiMSBWQUxVRVMoZ2VuZXJhdGVfc2VyaWVzKDExLDIwKSk7CisJSU5TRVJUIElOVE8gY2hpbGQg VkFMVUVTKGdlbmVyYXRlX3NlcmllcygxMSwyMCksIGdlbmVyYXRlX3NlcmllcygxMSwyMCkpOwor KSk7CisKKyMgVmVyaWZ5IHRoYXQgZGF0YSBpbnNlcnRlZCBpbnRvIGEgdGFibGUgbGlzdGVkIGlu IHRoZSBFWENFUFQgVEFCTEUgY2xhdXNlIGlzCisjIG5vdCBwdWJsaXNoZWQuCiskcmVzdWx0ID0g JG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIGNvdW50KCop ID0gMCBGUk9NIHBnX2xvZ2ljYWxfc2xvdF9nZXRfYmluYXJ5X2NoYW5nZXMoJ3Rlc3Rfc2xvdCcs IE5VTEwsIE5VTEwsICdwcm90b192ZXJzaW9uJywgJzEnLCAncHVibGljYXRpb25fbmFtZXMnLCAn dGFiX3B1YicpIgorKTsKK2lzKCRyZXN1bHQsIHFxKHQpLAorCSd2ZXJpZnkgbm8gY2hhbmdlcyBm b3IgdGFibGUgbGlzdGVkIGluIHRoZSBFWENFUFQgVEFCTEUgY2xhdXNlIGFyZSBwcmVzZW50IGlu IHRoZSByZXBsaWNhdGlvbiBzbG90JworKTsKKworIyBUaGlzIHNob3VsZCBiZSBwdWJsaXNoZWQg YmVjYXVzZSBPTkxZIHBhcmVudDEgd2FzIHNwZWNpZmllZCBpbiB0aGUKKyMgRVhDRVBUIFRBQkxF IGNsYXVzZSwgc28gdGhlIGV4Y2x1c2lvbiBhcHBsaWVzIG9ubHkgdG8gdGhlIHBhcmVudCB0YWJs ZSBhbmQgbm90CisjIHRvIGl0cyBjaGlsZC4KKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCisJIklOU0VSVCBJTlRPIGNoaWxkMSBWQUxVRVMoZ2VuZXJhdGVfc2VyaWVzKDEx LDIwKSwgZ2VuZXJhdGVfc2VyaWVzKDExLDIwKSkiCispOworCisjIFZlcmlmeSB0aGF0IGRhdGEg aW5zZXJ0ZWQgaW50byBhIHRhYmxlIGxpc3RlZCBpbiB0aGUgRVhDRVBUIFRBQkxFIGNsYXVzZSBp cworIyBub3QgcmVwbGljYXRlZC4KKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgn dGFiX3N1YicpOworJHJlc3VsdCA9CisgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGFiMSIpOworaXMoJHJlc3VsdCwgcXEoMCks ICdjaGVjayByZXBsaWNhdGVkIGluc2VydHMgb24gc3Vic2NyaWJlcicpOworJHJlc3VsdCA9Cisg ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCop IEZST00gY2hpbGQiKTsKK2lzKCRyZXN1bHQsIHFxKDApLCAnY2hlY2sgcmVwbGljYXRlZCBpbnNl cnRzIG9uIHN1YnNjcmliZXInKTsKKyRyZXN1bHQgPQorICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIGNoaWxkMSIpOworaXMoJHJl c3VsdCwgcXEoMTApLCAnY2hlY2sgcmVwbGljYXRlZCBpbnNlcnRzIG9uIHN1YnNjcmliZXInKTsK KworIyBjbGVhbnVwCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywg cXEoCisJRFJPUCBTVUJTQ1JJUFRJT04gdGFiX3N1YjsKKwlUUlVOQ0FURSBUQUJMRSB0YWIxOwor CURST1AgVEFCTEUgcGFyZW50LCBwYXJlbnQxLCBjaGlsZCwgY2hpbGQxOworKSk7Ciskbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcSgKKwlEUk9QIFBVQkxJQ0FUSU9O IHRhYl9wdWI7CisJVFJVTkNBVEUgVEFCTEUgdGFiMTsKKyAgICBEUk9QIFRBQkxFIHBhcmVudCwg cGFyZW50MSwgY2hpbGQsIGNoaWxkMTsKKykpOworCisjID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09CisjIEVYQ0VQVCBUQUJMRSB0ZXN0IGNhc2VzIGZvciBwYXJ0 aXRpb25lZCB0YWJsZXMKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KKyMgU2V0dXAgcGFydGl0aW9uZWQgdGFibGUgYW5kIHBhcnRpdGlvbnMgb24gdGhlIHB1 Ymxpc2hlciB0aGF0IG1hcCB0byBub3JtYWwKKyMgdGFibGVzIG9uIHRoZSBzdWJzY3JpYmVyLgor JG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXEoCisJQ1JFQVRFIFRB QkxFIHJvb3QxKGEgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UoYSk7CisJQ1JFQVRFIFRBQkxFIHBh cnQxIFBBUlRJVElPTiBPRiByb290MSBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxMDApOworCUNS RUFURSBUQUJMRSBwYXJ0MiBQQVJUSVRJT04gT0Ygcm9vdDEgRk9SIFZBTFVFUyBGUk9NICgxMDAp IFRPICgyMDApIFBBUlRJVElPTiBCWSBSQU5HRShhKTsKKwlDUkVBVEUgVEFCTEUgcGFydDJfMSBQ QVJUSVRJT04gT0YgcGFydDIgRk9SIFZBTFVFUyBGUk9NICgxMDApIFRPICgxNTApOworKSk7CisK KyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcSgKKwlDUkVBVEUg VEFCTEUgcm9vdDEoYSBpbnQpOworCUNSRUFURSBUQUJMRSBwYXJ0MShhIGludCk7CisJQ1JFQVRF IFRBQkxFIHBhcnQyKGEgaW50KTsKKwlDUkVBVEUgVEFCTEUgcGFydDJfMShhIGludCk7CispKTsK KworIyBWYWxpZGF0ZSB0aGUgYmVoYXZpb3VyIHdpdGggYm90aCBwdWJsaXNoX3ZpYV9wYXJ0aXRp b25fcm9vdCBhcyB0cnVlIGFuZCBmYWxzZQordGVzdF9leGNlcHRfcm9vdF9wYXJ0aXRpb24oJ2Zh bHNlJyk7Cit0ZXN0X2V4Y2VwdF9yb290X3BhcnRpdGlvbigndHJ1ZScpOworCisjID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjIFRlc3Qgd2hlbiBhIHN1YnNj cmlwdGlvbiBpcyBzdWJzY3JpYmluZyB0byBtdWx0aXBsZSBwdWJsaWNhdGlvbnMKKyMgPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworIyBPSyB3aGVuIGEgdGFi bGUgaXMgZXhjbHVkZWQgYnkgcHViMSBFWENFUFQgVEFCTEUsIGJ1dCBpdCBpcyBpbmNsdWRlZCBi eSBwdWIyCisjIEZPUiBUQUJMRS4KKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdwb3N0 Z3JlcycsIHFxKAorCUNSRUFURSBQVUJMSUNBVElPTiB0YXBfcHViMSBGT1IgQUxMIFRBQkxFUyBF WENFUFQgVEFCTEUgKHRhYjEpOworCUNSRUFURSBQVUJMSUNBVElPTiB0YXBfcHViMiBGT1IgVEFC TEUgdGFiMTsKKwlJTlNFUlQgSU5UTyB0YWIxIFZBTFVFUygxKTsKKykpOworJG5vZGVfc3Vic2Ny aWJlci0+cHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUgU1VCU0NSSVBUSU9OIHRhcF9zdWIgQ09O TkVDVElPTiAnJHB1Ymxpc2hlcl9jb25uc3RyJyBQVUJMSUNBVElPTiB0YXBfcHViMSwgdGFwX3B1 YjIiCispOworJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3Jfc3Vic2NyaXB0aW9uX3N5bmMoJG5v ZGVfcHVibGlzaGVyLCAndGFwX3N1YicpOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLCBxcShJTlNFUlQgSU5UTyB0YWIxIFZBTFVFUygyKSkpOworJG5vZGVfcHVibGlz aGVyLT53YWl0X2Zvcl9jYXRjaHVwKCd0YXBfc3ViJyk7CisKKyRyZXN1bHQgPQorICAkbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUICogRlJPTSB0YWIxIE9SREVS IEJZIGEiKTsKK2lzKCAkcmVzdWx0LCBxcSgxCisyKSwKKwkiY2hlY2sgcmVwbGljYXRpb24gb2Yg YSB0YWJsZSBpbiB0aGUgRVhDRVBUIFRBQkxFIGNsYXVzZSBvZiBvbmUgcHVibGljYXRpb24gYnV0 IGluY2x1ZGVkIGJ5IGFub3RoZXIiCispOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJ J3Bvc3RncmVzJywgcXEoCisJRFJPUCBQVUJMSUNBVElPTiB0YXBfcHViMjsKKwlUUlVOQ0FURSB0 YWIxOworKSk7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXEoVFJV TkNBVEUgdGFiMSkpOworCisjIE9LIHdoZW4gYSB0YWJsZSBpcyBleGNsdWRlZCBieSBwdWIxIEVY Q0VQVCBUQUJMRSwgYnV0IGl0IGlzIGluY2x1ZGVkIGJ5IHB1YjIKKyMgRk9SIEFMTCBUQUJMRVMu Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcSgKKwlDUkVBVEUg UFVCTElDQVRJT04gdGFwX3B1YjIgRk9SIEFMTCBUQUJMRVM7CisJSU5TRVJUIElOVE8gdGFiMSBW QUxVRVMoMSk7CispKTsKKyRub2RlX3N1YnNjcmliZXItPnBzcWwoJ3Bvc3RncmVzJywKKwkiQ1JF QVRFIFNVQlNDUklQVElPTiB0YXBfc3ViIENPTk5FQ1RJT04gJyRwdWJsaXNoZXJfY29ubnN0cicg UFVCTElDQVRJT04gdGFwX3B1YjEsIHRhcF9wdWIyIgorKTsKKyRub2RlX3N1YnNjcmliZXItPndh aXRfZm9yX3N1YnNjcmlwdGlvbl9zeW5jKCRub2RlX3B1Ymxpc2hlciwgJ3RhcF9zdWInKTsKKwor JG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXEoSU5TRVJUIElOVE8gdGFi MSBWQUxVRVMoMikpKTsKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgndGFwX3N1 YicpOworCiskcmVzdWx0ID0KKyAgJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywgIlNFTEVDVCAqIEZST00gdGFiMSBPUkRFUiBCWSBhIik7CitpcyggJHJlc3VsdCwgcXEoMQor MiksCisJImNoZWNrIHJlcGxpY2F0aW9uIG9mIGEgdGFibGUgaW4gdGhlIEVYQ0VQVCBUQUJMRSBj bGF1c2Ugb2Ygb25lIHB1YmxpY2F0aW9uIGJ1dCBpbmNsdWRlZCBieSBhbm90aGVyIgorKTsKKwor JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdEUk9QIFNVQlNDUklQVElP TiB0YXBfc3ViJyk7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnRFJP UCBQVUJMSUNBVElPTiB0YXBfcHViMScpOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywgJ0RST1AgUFVCTElDQVRJT04gdGFwX3B1YjInKTsKKworJG5vZGVfcHVibGlzaGVy LT5zdG9wKCdmYXN0Jyk7CisKK2RvbmVfdGVzdGluZygpOwotLSAKMi4zNC4xCgo= --000000000000b695c0064c209d22--