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 1w7QQ4-005Isf-3D for pgsql-hackers@arkaria.postgresql.org; Tue, 31 Mar 2026 04:09:37 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w7QQ3-007n6e-0x for pgsql-hackers@arkaria.postgresql.org; Tue, 31 Mar 2026 04:09:35 +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 1w7QQ2-007n6W-21 for pgsql-hackers@lists.postgresql.org; Tue, 31 Mar 2026 04:09:35 +0000 Received: from mail-lj1-x231.google.com ([2a00:1450:4864:20::231]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w7QPz-00000001uZQ-2pX8 for pgsql-hackers@lists.postgresql.org; Tue, 31 Mar 2026 04:09:34 +0000 Received: by mail-lj1-x231.google.com with SMTP id 38308e7fff4ca-38bd60d7a2cso49733811fa.1 for ; Mon, 30 Mar 2026 21:09:31 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1774930170; cv=none; d=google.com; s=arc-20240605; b=IjxCatjn9P4k1pHa9XW362DQW+HJ5nimmhmBcjas0/fMBWKKnkP5p6zLb8eYjeE3F1 JUON61cvqtnnpe5SH75hfUfx6ppFzepBpjy1gMoUynaw5T+fRLauv0E6VUg6C62MWTYa DO5IPLvyWFWbjsyqzMAcFWpoSP1UJL+7I5qT/rCh0y6HnQepWi8lD9DIrh6GiKw3v8a9 kYzytCgl+GlbMZS7gbKGP/62xPLZ8n1Irqmb82/u+rf/NMuX2kOFzcOoPKSeAPtrPsZZ 8DhBAKaSpXdSZ6jfmsj7llgABm6Iexgei8gejwDHW+6+cZCT+6asZFB2DKaZVsPTZTem ry6Q== 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=DuwbX8oiBnm9Bpxf7GYsuKXvrG1BYsQY5zu71BQ3O3Y=; fh=9/NIIUMLM/4JM+Cd4pXrwYgdGTl6XUKeuDCnA8c6jBk=; b=NkKpTadF8o/uX4lqlnpwp283FKT5OIdzlruf9frILS8W20orUgY4A+xFx0jUqP6uce 6tc6O+KmT4t+UKd1OP1DaWktYTJHRoVA8NP/1k5rTuLwDH4z5s9XaSS0CAWITnZGYFX6 NIWGR/9XbWVNHBkaSWIIy9qNP7GpZ77JBluaf3oiZNgb+owjUpEO7iaVFYKbcfU+Hi+S sV4LQjsC8Kb8ETG+JfDH6mLgcnsPf4bDae0dizKUSTmd+QzXCDq30JvNZ6j4yi7odlJ6 ydarnl8lVspwBXgq2MVD9E4QcRM8sc21Egz25PCm4kqj78cdMlv0s7IURj2xp4jVO1jC EIAg==; 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=20251104; t=1774930170; x=1775534970; 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=DuwbX8oiBnm9Bpxf7GYsuKXvrG1BYsQY5zu71BQ3O3Y=; b=mDuDTLxGHf3UI/S4npcIB8gotMVlMNoo533XPP5YG7ZpO42QJhOUzcpkuZFTb38wal fQ7et+fqpjz2uQG/CrYZNQ5497VHm5xsi8yvGU4y1HahaUvNUknS6bcm92sCAHJtopkO Eml/erJAadaNk8g31MbPPrvefEU4mIlC5/W+yiWCcabJaAEtntEIofhfyFJgggJlX20n On/D2a2uqlNb7WlaUfC0bDRm5d5YDOWoZFGb9NqLBrEKS28lzJhZVtPo4fEeYXMtS4Bd 1N81DTGTwzLv6MsWH6OyVBWLFmJoxJ2Pg++2rf5zNXdBGH8AzErPM5njSyUiEl3QUx/D rV5A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774930170; x=1775534970; 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=DuwbX8oiBnm9Bpxf7GYsuKXvrG1BYsQY5zu71BQ3O3Y=; b=RpduUt3d/iTv1veuQur31OYZPFQ8JGzh3IK/D6MGNzZd9zYWY0TAE3dFYq+hl93xBS WbbVanvJqvbySOvca4FQx4N+y90vSYMW1FZcVd3HfEkQyp1l4CcqUY6ftZZ0nWYjBBet kwOFpMG5qj8vKH/pHjzc8GdOLkWXSs3FPMb2Av6g2yBDOwKsBTMHNUqksIA7fvtYbUrb aN/wp2gFKWG6wlzPur7WSk/SK4ihtMgFs/muFCmJyMEQjH2B7e4bHojca2eqgOS4TB44 7PNu9lFfbWfX/3n4+RglrOHqeB5q06MY0yOb9R+zRGby6urdySmhtRWQep6Q/Jk/4t/C 8yBA== X-Forwarded-Encrypted: i=1; AJvYcCV/qyw8bbpqmZp9Pa2g5d64s84FCKcKN9JLiNJCoftIdq7/hgbSmF/qs1bcFVrQDyDYh2WQhVyzd+E9n6go@lists.postgresql.org X-Gm-Message-State: AOJu0YyOsbO95c2A3DgCvv1oPMMBmBUSr0jW6u0fcBjdMSymWgR+WG8A QRh1FE8UuT0SvH3Z3whlFy+p4HPuw5w44f1pZiT9yRWVvUj7a/YhblsjYW1EmKuwZ+il0H6PigN Bm4c0LLiKM+QKZbN2SK1kdhdomN6Xnrs= X-Gm-Gg: ATEYQzx4oln/fg54oQlIcqQSxgo4kf/n+IIqjL3zzLdJVFxi0f8SK1KXpaZ4awwQgvu UYgdzOv0oKd7RqSxn2nZ/aBcrpZi8PyHcdiMAAKrBV+uQOVo2/Xf2j3QShW98KcmLvbKaRMj34S KsBWha/HbsVmx1vT22EOvs8zdiJogHPo1aGW5e9db7gwr9lPIJjCbNc2MFyNQpp00IRDj41IMYw 1Ko7uH53GvjwIlttZVzcW9ACIIbJyB1g/hf1YkPe9q4I7REyQ18bhkEv022kA/ukSP3iWjD1Tip 4W3UyVJM X-Received: by 2002:a05:6512:33c6:b0:5a2:b487:b945 with SMTP id 2adb3069b0e04-5a2b487bfdfmr2423530e87.18.1774930169640; Mon, 30 Mar 2026 21:09:29 -0700 (PDT) MIME-Version: 1.0 References: <0c28fbd1-3320-4e9b-815c-6d62753aa063@wi3ck.info> In-Reply-To: From: Masahiko Sawada Date: Mon, 30 Mar 2026 21:08:52 -0700 X-Gm-Features: AQROBzCdL-xtDT6qO-FVfep5emnCycXVarPTyJu2uj-2j5eONuFQxVHqvOj5bQE Message-ID: Subject: Re: Initial COPY of Logical Replication is too slow To: "Zhijie Hou (Fujitsu)" Cc: Amit Kapila , "Hayato Kuroda (Fujitsu)" , Jan Wieck , "pgsql-hackers@lists.postgresql.org" Content-Type: multipart/mixed; boundary="0000000000004353ad064e4a22d3" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000004353ad064e4a22d3 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Mon, Mar 30, 2026 at 12:16=E2=80=AFAM Zhijie Hou (Fujitsu) wrote: > > On Friday, March 27, 2026 2:20 PM Masahiko Sawada = wrote: > > I've attached the updated patch. I believe I've addressed all comments = I got > > so far. In addition to that, I've refactored > > is_table_publishable_in_publication() and added more regression tests. > > Thanks for updating the patch. > > The latest patch looks mostly good to me. However, I noticed one issue: t= he > function returns table information even for unlogged or temporary tables.= I > think we should return NULL for those cases instead. Indeed. Good catch! > > BTW, I think we could use is_publishable_class() as a reference to check = once > whether all unpublishable table types are properly ignored in this functi= on. > +1. I've added is_publishable_class() check. I've attached the updated patch. Regards, --=20 Masahiko Sawada Amazon Web Services: https://aws.amazon.com --0000000000004353ad064e4a22d3 Content-Type: text/x-patch; charset="US-ASCII"; name="v6-0001-Add-target_relid-parameter-to-pg_get_publication_.patch" Content-Disposition: attachment; filename="v6-0001-Add-target_relid-parameter-to-pg_get_publication_.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mne3kf790 RnJvbSBiMTBhNzlkNDgyZTZmZTBmMTc4YjBmZjAwNDc2N2RjYmM2YmM4NmRiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXNhaGlrbyBTYXdhZGEgPHNhd2FkYS5tc2hrQGdtYWlsLmNv bT4KRGF0ZTogRnJpLCAyNyBGZWIgMjAyNiAxNTo0MjozOCAtMDgwMApTdWJqZWN0OiBbUEFUQ0gg djZdIEFkZCB0YXJnZXRfcmVsaWQgcGFyYW1ldGVyIHRvIHBnX2dldF9wdWJsaWNhdGlvbl90YWJs ZXMoKS4KCldoZW4gYSB0YWJsZXN5bmMgd29ya2VyIGNoZWNrcyB3aGV0aGVyIGEgc3BlY2lmaWMg dGFibGUgaXMgcHVibGlzaGVkLAppdCBwcmV2aW91c2x5IGNhbGxlZCBwZ19nZXRfcHVibGljYXRp b25fdGFibGVzKCkgYW5kIGZpbHRlcmVkIHRoZQpyZXN1bHQgYnkgcmVsaWQgb24gdGhlIHN1YnNj cmliZXIgc2lkZS4gVGhpcyBmb3JjZWQgYSBmdWxsIGVudW1lcmF0aW9uCm9mIGFsbCB0YWJsZXMg aW4gdGhlIHB1YmxpY2F0aW9uIGJlZm9yZSBhbnkgZmlsdGVyaW5nIGNvdWxkIG9jY3VyLiBGb3IK cHVibGljYXRpb25zIGNvdmVyaW5nIGEgbGFyZ2UgbnVtYmVyIG9mIHRhYmxlcywgdGhpcyByZXN1 bHRlZCBpbgpleHBlbnNpdmUgc2NhbnMgb24gdGhlIHB1Ymxpc2hlciBhbmQgdW5uZWNlc3Nhcnkg b3ZlcmhlYWQuCgpUaGlzIGNvbW1pdCBhZGRzIGEgbmV3IG92ZXJsb2FkZWQgZm9ybSBvZiBwZ19n ZXRfcHVibGljYXRpb25fdGFibGVzKCkKdGhhdCBhY2NlcHRzIGFuIGFycmF5IG9mIHB1YmxpY2F0 aW9uIG5hbWVzIGFuZCBhIHRhcmdldCB0YWJsZQpPSUQuIEluc3RlYWQgb2YgZW51bWVyYXRpbmcg YWxsIHB1Ymxpc2hlZCB0YWJsZXMsIGl0IGV2YWx1YXRlcwptZW1iZXJzaGlwIGZvciB0aGUgc3Bl Y2lmaWVkIHJlbGF0aW9uIHZpYSBzeXNjYWNoZSBsb29rdXBzLCB1c2luZyB0aGUKbmV3IGlzX3Rh YmxlX3B1Ymxpc2hhYmxlX2luX3B1YmxpY2F0aW9uKCkgaGVscGVyLiBUaGlzIGhlbHBlcgpjb3Jy ZWN0bHkgYWNjb3VudHMgZm9yIHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290LCBBTEwgVEFCTEVT IHdpdGgKRVhDRVBUIGNsYXVzZXMsIHNjaGVtYSBwdWJsaWNhdGlvbnMsIGFuZCBwYXJ0aXRpb24g aW5oZXJpdGFuY2UsIHdoaWxlCmF2b2lkaW5nIHRoZSBvdmVyaGVhZCBvZiBidWlsZGluZyB0aGUg Y29tcGxldGUgcHVibGlzaGVkIHRhYmxlIGxpc3QuCgpUaGUgZXhpc3RpbmcgYSBWQVJJQURJQyBh cnJheSBmb3JtIG9mIHBnX2dldF9wdWJsaWNhdGlvbl90YWJsZXMoKSBpcwpwcmVzZXJ2ZWQgZm9y IGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuIFRhYmxlc3luYyB3b3JrZXJzIHVzZSB0aGUgbmV3CnR3 by1hcmd1bWVudCBmb3JtIHdoZW4gY29ubmVjdGVkIHRvIGEgcHVibGlzaGVyIHJ1bm5pbmcgUG9z dGdyZVNRTCAxOQpvciBsYXRlci4KCkJ1bXAgY2F0YWxvZyB2ZXJzaW9uLgoKUmVwb3J0ZWQtYnk6 IE1hcmNvcyBQZWdvcmFybyA8bWFyY29zQGYxMC5jb20uYnI+ClJldmlld2VkLWJ5OiBaaGlqaWUg SG91IDxob3V6ai5mbnN0QGZ1aml0c3UuY29tPgpSZXZpZXdlZC1ieTogTWF0aGV1cyBBbGNhbnRh cmEgPG1hdGhldXNzc2lsdjk3QGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IEFtaXQgS2FwaWxhIDxh bWl0LmthcGlsYTE2QGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IFBldGVyIFNtaXRoIDxzbWl0aHBi MjI1MEBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBIYXlhdG8gS3Vyb2RhIDxrdXJvZGEuaGF5YXRv QGZ1aml0c3UuY29tPgpSZXZpZXdlZC1ieTogQ2hhbyBMaSA8bGkuZXZhbi5jaGFvQGdtYWlsLmNv bT4KRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9DQUItSkx3YkJGTnVBU3lFblpXUDBU Y2s5dU5rdGhCWnFpNldvWE5ldlVUNittVjhYbUFAbWFpbC5nbWFpbC5jb20KLS0tCiBzcmMvYmFj a2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMgICAgICAgIHwgMjQ2ICsrKysrKysrKysrKysr KysrLS0tCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jIHwgIDcw ICsrKystLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCAgICAgICAgICAgICB8ICAx MSArLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wdWJsaWNhdGlvbi5vdXQgICB8IDIyNSAr KysrKysrKysrKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1YmxpY2F0aW9uLnNxbCAg ICAgICAgfCAxMDcgKysrKysrKysrCiA1IGZpbGVzIGNoYW5nZWQsIDYwOSBpbnNlcnRpb25zKCsp LCA1MCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1 YmxpY2F0aW9uLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMKaW5kZXgg YzkyZmYzZjUxYzMuLjBjNDliMWM2OWE2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9n L3BnX3B1YmxpY2F0aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlv bi5jCkBAIC0xNjMsNiArMTYzLDM3IEBAIGlzX3B1Ymxpc2hhYmxlX3JlbGF0aW9uKFJlbGF0aW9u IHJlbCkKIAlyZXR1cm4gaXNfcHVibGlzaGFibGVfY2xhc3MoUmVsYXRpb25HZXRSZWxpZChyZWwp LCByZWwtPnJkX3JlbCk7CiB9CiAKKy8qCisgKiBTaW1pbGFyIHRvIGlzX3B1Ymxpc2hhYmxlX2Nh bHNzKCkgYnV0IGNoZWNrcyB3aGV0aGVyIHRoZSBnaXZlbiBPSUQKKyAqIGlzIGEgcHVibGlzaGFi bGUgInRhYmxlIiBvciBub3QuCisgKi8KK3N0YXRpYyBib29sCitpc19wdWJsaXNoYWJsZV90YWJs ZShPaWQgdGFibGVvaWQpCit7CisJSGVhcFR1cGxlCXR1cGxlOworCUZvcm1fcGdfY2xhc3MgcmVs Zm9ybTsKKworCXR1cGxlID0gU2VhcmNoU3lzQ2FjaGUxKFJFTE9JRCwgT2JqZWN0SWRHZXREYXR1 bSh0YWJsZW9pZCkpOworCWlmICghSGVhcFR1cGxlSXNWYWxpZCh0dXBsZSkpCisJCXJldHVybiBm YWxzZTsKKworCXJlbGZvcm0gPSAoRm9ybV9wZ19jbGFzcykgR0VUU1RSVUNUKHR1cGxlKTsKKwor CS8qCisJICogU2VxdWVuY2VzIGFyZSBwdWJsaXNoYWJsZSBhY2NvcmRpbmcgdG8gaXNfcHVibGlz aGFibGVfY2xhc3MoKSBzbworCSAqIGV4cGxpY2l0bHkgZXhjbHVkZSBoZXJlLgorCSAqLworCWlm IChyZWxmb3JtLT5yZWxraW5kICE9IFJFTEtJTkRfU0VRVUVOQ0UgJiYKKwkJaXNfcHVibGlzaGFi bGVfY2xhc3ModGFibGVvaWQsIHJlbGZvcm0pKQorCXsKKwkJUmVsZWFzZVN5c0NhY2hlKHR1cGxl KTsKKwkJcmV0dXJuIHRydWU7CisJfQorCisJUmVsZWFzZVN5c0NhY2hlKHR1cGxlKTsKKwlyZXR1 cm4gdHJ1ZTsKK30KKwogLyoKICAqIFNRTC1jYWxsYWJsZSB2YXJpYW50IG9mIHRoZSBhYm92ZQog ICoKQEAgLTEyNjQsMTIgKzEyOTUsMTIxIEBAIEdldFB1YmxpY2F0aW9uQnlOYW1lKGNvbnN0IGNo YXIgKnB1Ym5hbWUsIGJvb2wgbWlzc2luZ19vaykKIH0KIAogLyoKLSAqIEdldCBpbmZvcm1hdGlv biBvZiB0aGUgdGFibGVzIGluIHRoZSBnaXZlbiBwdWJsaWNhdGlvbiBhcnJheS4KKyAqIFJldHVy bnMgdHJ1ZSBpZiB0aGUgdGFibGUgb2YgdGhlIGdpdmVuIHJlbGlkIGlzIHB1Ymxpc2hlZCBmb3Ig dGhlIHNwZWNpZmllZAorICogcHVibGljYXRpb24uCisgKgorICogVGhpcyBmdW5jdGlvbiBldmFs dWF0ZXMgdGhlIGVmZmVjdGl2ZSBwdWJsaXNoZWQgT0lEIGJhc2VkIG9uIHRoZQorICogcHVibGlz aF92aWFfcGFydGl0aW9uX3Jvb3Qgc2V0dGluZywgcmF0aGVyIHRoYW4ganVzdCBjaGVja2luZyBj YXRhbG9nIGVudHJpZXMKKyAqIChlLmcuLCBwZ19wdWJsaWNhdGlvbl9yZWwpLiBGb3IgaW5zdGFu Y2UsIHdoZW4gcHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QgaXMKKyAqIGZhbHNlLCBpdCByZXR1 cm5zIGZhbHNlIGZvciBhIHBhcmVudCBwYXJ0aXRpb25lZCB0YWJsZSBhbmQgdHJ1ZSBmb3IgaXRz IGxlYWYKKyAqIHBhcnRpdGlvbnMsIGV2ZW4gaWYgdGhlIHBhcmVudCBpcyB0aGUgb25lIGV4cGxp Y2l0bHkgYWRkZWQgdG8gdGhlIHB1YmxpY2F0aW9uLgogICoKLSAqIFJldHVybnMgcHViaWQsIHJl bGlkLCBjb2x1bW4gbGlzdCwgcm93IGZpbHRlciBmb3IgZWFjaCB0YWJsZS4KKyAqIEZvciBwZXJm b3JtYW5jZSByZWFzb25zLCB0aGlzIGZ1bmN0aW9uIGF2b2lkcyB0aGUgb3ZlcmhlYWQgb2YgY29u c3RydWN0aW5nCisgKiB0aGUgY29tcGxldGUgbGlzdCBvZiBwdWJsaXNoZWQgdGFibGVzIGR1cmlu ZyB0aGUgZXZhbHVhdGlvbi4gSXQgY2FuIGV4ZWN1dGUKKyAqIHF1aWNrbHkgZXZlbiB3aGVuIHRo ZSBwdWJsaWNhdGlvbiBjb250YWlucyBhIGxhcmdlIG51bWJlciBvZiByZWxhdGlvbnMuCiAgKi8K LURhdHVtCi1wZ19nZXRfcHVibGljYXRpb25fdGFibGVzKFBHX0ZVTkNUSU9OX0FSR1MpCitzdGF0 aWMgYm9vbAoraXNfdGFibGVfcHVibGlzaGFibGVfaW5fcHVibGljYXRpb24oT2lkIHJlbGlkLCBQ dWJsaWNhdGlvbiAqcHViKQoreworCWJvb2wJCXJlbGlzcGFydGl0aW9uOworCisJLyoKKwkgKiBG b3Igbm9uLXB1YnZpYXJvb3QgcHVibGljYXRpb25zLCBhIHBhcnRpdGlvbmVkIHRhYmxlIGlzIG5l dmVyIHRoZQorCSAqIGVmZmVjdGl2ZSBwdWJsaXNoZWQgT0lEOyBvbmx5IGl0cyBsZWFmIHBhcnRp dGlvbnMgY2FuIGJlLgorCSAqLworCWlmICghcHViLT5wdWJ2aWFyb290ICYmIGdldF9yZWxfcmVs a2luZChyZWxpZCkgPT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSkKKwkJcmV0dXJuIGZhbHNl OworCisJcmVsaXNwYXJ0aXRpb24gPSBnZXRfcmVsX3JlbGlzcGFydGl0aW9uKHJlbGlkKTsKKwor CWlmIChwdWItPmFsbHRhYmxlcykKKwl7CisJCU9pZAkJCXRhcmdldF9yZWxpZCA9IHJlbGlkOwor CisJCWlmIChwdWItPnB1YnZpYXJvb3QpCisJCXsKKwkJCS8qCisJCQkgKiBBTEwgVEFCTEVTIHdp dGggcHVidmlhcm9vdCBpbmNsdWRlcyBvbmx5IHJlZ3VsYXIgdGFibGVzIG9yCisJCQkgKiB0b3At bW9zdCBwYXJ0aXRpb25lZCB0YWJsZXMgLS0gbmV2ZXIgY2hpbGQgcGFydGl0aW9ucy4KKwkJCSAq LworCQkJaWYgKHJlbGlzcGFydGl0aW9uKQorCQkJCXJldHVybiBmYWxzZTsKKwkJfQorCQllbHNl IGlmIChyZWxpc3BhcnRpdGlvbikKKwkJeworCQkJTGlzdAkgICAqYW5jZXN0b3JzID0gZ2V0X3Bh cnRpdGlvbl9hbmNlc3RvcnMocmVsaWQpOworCisJCQkvKgorCQkJICogT25seSB0aGUgdG9wLW1v c3QgYW5jZXN0b3IgY2FuIGFwcGVhciBpbiB0aGUgRVhDRVBUIGNsYXVzZS4KKwkJCSAqIFRoZXJl Zm9yZSwgZm9yIGEgcGFydGl0aW9uLCBleGNsdXNpb24gbXVzdCBiZSBldmFsdWF0ZWQgYXQgdGhl CisJCQkgKiB0b3AtbW9zdCBhbmNlc3Rvci4KKwkJCSAqLworCQkJdGFyZ2V0X3JlbGlkID0gbGxh c3Rfb2lkKGFuY2VzdG9ycyk7CisJCQlsaXN0X2ZyZWUoYW5jZXN0b3JzKTsKKwkJfQorCisJCS8q CisJCSAqIFRoZSB0YWJsZSBpcyBwdWJsaXNoZWQgdW5sZXNzIGl0IGFwcGVhcnMgaW4gdGhlIEVY Q0VQVCBjbGF1c2UuIEFMTAorCQkgKiBUQUJMRVMgcHVibGljYXRpb25zIHN0b3JlIG9ubHkgRVhD RVBUJ2VkIHRhYmxlcyBpbgorCQkgKiBwZ19wdWJsaWNhdGlvbl9yZWwsIHNvIGNoZWNraW5nIGV4 aXN0ZW5jZSBpcyBzdWZmaWNpZW50LgorCQkgKi8KKwkJcmV0dXJuICFTZWFyY2hTeXNDYWNoZUV4 aXN0czIoUFVCTElDQVRJT05SRUxNQVAsCisJCQkJCQkJCQkgIE9iamVjdElkR2V0RGF0dW0odGFy Z2V0X3JlbGlkKSwKKwkJCQkJCQkJCSAgT2JqZWN0SWRHZXREYXR1bShwdWItPm9pZCkpOworCX0K KworCS8qCisJICogTm9uLWFsbHRhYmxlcworCSAqLworCisJaWYgKHJlbGlzcGFydGl0aW9uKQor CXsKKwkJTGlzdAkgICAqYW5jZXN0b3JzID0gZ2V0X3BhcnRpdGlvbl9hbmNlc3RvcnMocmVsaWQp OworCQlPaWQJCQl0b3Btb3N0ID0gR2V0VG9wTW9zdEFuY2VzdG9ySW5QdWJsaWNhdGlvbihwdWIt Pm9pZCwgYW5jZXN0b3JzLCBOVUxMKTsKKworCQlsaXN0X2ZyZWUoYW5jZXN0b3JzKTsKKworCQlp ZiAoT2lkSXNWYWxpZCh0b3Btb3N0KSkKKwkJeworCQkJLyoKKwkJCSAqIElmIHB1YnZpYXJvb3Qg aXMgdHJ1ZSwgdGhlIGFuY2VzdG9yIGlzIHB1Ymxpc2hlZCBpbnN0ZWFkIG9mIHRoZQorCQkJICog cGFydGl0aW9uLCBzbyBleGNsdWRlIGl0LiBPdGhlcndpc2UsIHRoZSBhbmNlc3RvciBjb3ZlcnMg dGhlCisJCQkgKiBwYXJ0aXRpb24sIHNvIGluY2x1ZGUgaXQuCisJCQkgKi8KKwkJCXJldHVybiAh cHViLT5wdWJ2aWFyb290OworCQl9CisKKwkJLyogQW5jZXN0b3Igbm90IHB1Ymxpc2hlZDsgZmFs bCB0aHJvdWdoIHRvIGNoZWNrIHRoZSBwYXJ0aXRpb24gaXRzZWxmICovCisJfQorCisJLyoKKwkg KiBDaGVjayB3aGV0aGVyIHRoZSB0YWJsZSBpcyBleHBsaWNpdGx5IHB1Ymxpc2hlZCB2aWEgcGdf cHVibGljYXRpb25fcmVsCisJICogb3IgcGdfcHVibGljYXRpb25fbmFtZXNwYWNlLgorCSAqLwor CXJldHVybiAoU2VhcmNoU3lzQ2FjaGVFeGlzdHMyKFBVQkxJQ0FUSU9OUkVMTUFQLAorCQkJCQkJ CQkgIE9iamVjdElkR2V0RGF0dW0ocmVsaWQpLAorCQkJCQkJCQkgIE9iamVjdElkR2V0RGF0dW0o cHViLT5vaWQpKSB8fAorCQkJU2VhcmNoU3lzQ2FjaGVFeGlzdHMyKFBVQkxJQ0FUSU9OTkFNRVNQ QUNFTUFQLAorCQkJCQkJCQkgIE9iamVjdElkR2V0RGF0dW0oZ2V0X3JlbF9uYW1lc3BhY2UocmVs aWQpKSwKKwkJCQkJCQkJICBPYmplY3RJZEdldERhdHVtKHB1Yi0+b2lkKSkpOworfQorCisvKgor ICogSGVscGVyIGZ1bmN0aW9uIHRvIGdldCBpbmZvcm1hdGlvbiBvZiB0aGUgdGFibGVzIGluIHRo ZSBnaXZlbgorICogcHVibGljYXRpb24ocykuCisgKgorICogSWYgZmlsdGVyX2J5X3JlbGlkIGlz IHRydWUsIG9ubHkgdGhlIHJvdyBmb3IgdGFyZ2V0X3JlbGlkIGlzIHJldHVybmVkOworICogaWYg dGFyZ2V0X3JlbGlkIGRvZXMgbm90IGV4aXN0IG9yIGlzIG5vdCBwYXJ0IG9mIHRoZSBwdWJsaWNh dGlvbnMsIHplcm8KKyAqIHJvd3MgYXJlIHJldHVybmVkLiAgSWYgZmlsdGVyX2J5X3JlbGlkIGlz IGZhbHNlLCByb3dzIGZvciBhbGwgdGFibGVzCisgKiB3aXRoaW4gdGhlIHNwZWNpZmllZCBwdWJs aWNhdGlvbnMgYXJlIHJldHVybmVkIGFuZCB0YXJnZXRfcmVsaWQgaXMKKyAqIGlnbm9yZWQuCisg KgorICogUmV0dXJucyBwdWJpZCwgcmVsaWQsIGNvbHVtbiBsaXN0LCBhbmQgcm93IGZpbHRlciBm b3IgZWFjaCB0YWJsZS4KKyAqLworc3RhdGljIERhdHVtCitwZ19nZXRfcHVibGljYXRpb25fdGFi bGVzKEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvLCBBcnJheVR5cGUgKnB1Ym5hbWVzLAorCQkJCQkJ ICBPaWQgdGFyZ2V0X3JlbGlkLCBib29sIGZpbHRlcl9ieV9yZWxpZCwKKwkJCQkJCSAgYm9vbCBw dWJfbWlzc2luZ19vaykKIHsKICNkZWZpbmUgTlVNX1BVQkxJQ0FUSU9OX1RBQkxFU19FTEVNCTQK IAlGdW5jQ2FsbENvbnRleHQgKmZ1bmNjdHg7CkBAIC0xMjgwLDcgKzE0MjAsNiBAQCBwZ19nZXRf cHVibGljYXRpb25fdGFibGVzKFBHX0ZVTkNUSU9OX0FSR1MpCiAJewogCQlUdXBsZURlc2MJdHVw ZGVzYzsKIAkJTWVtb3J5Q29udGV4dCBvbGRjb250ZXh0OwotCQlBcnJheVR5cGUgICphcnI7CiAJ CURhdHVtCSAgICplbGVtczsKIAkJaW50CQkJbmVsZW1zLAogCQkJCQlpOwpAQCAtMTI5Niw4ICsx NDM1LDE1IEBAIHBnX2dldF9wdWJsaWNhdGlvbl90YWJsZXMoUEdfRlVOQ1RJT05fQVJHUykKIAkJ ICogRGVjb25zdHJ1Y3QgdGhlIHBhcmFtZXRlciBpbnRvIGVsZW1lbnRzIHdoZXJlIGVhY2ggZWxl bWVudCBpcyBhCiAJCSAqIHB1YmxpY2F0aW9uIG5hbWUuCiAJCSAqLwotCQlhcnIgPSBQR19HRVRB UkdfQVJSQVlUWVBFX1AoMCk7Ci0JCWRlY29uc3RydWN0X2FycmF5X2J1aWx0aW4oYXJyLCBURVhU T0lELCAmZWxlbXMsIE5VTEwsICZuZWxlbXMpOworCQlkZWNvbnN0cnVjdF9hcnJheV9idWlsdGlu KHB1Ym5hbWVzLCBURVhUT0lELCAmZWxlbXMsIE5VTEwsICZuZWxlbXMpOworCisJCS8qCisJCSAq IFByZWxpbWluYXJ5IGNoZWNrIGlmIHRoZSBzcGVjaWZpZWQgdGFibGUgY2FuIGJlIHB1Ymxpc2hl ZCBpbiB0aGUKKwkJICogZmlyc3QgcGxhY2UuIElmIG5vdCwgd2UgY2FuIHJldHVybiBlYXJseSB3 aXRob3V0IGNoZWNraW5nIHRoZSBnaXZlbgorCQkgKiBwdWJsaWNhdGlvbnMgYW5kIHRoZSB0YWJs ZS4KKwkJICovCisJCWlmIChmaWx0ZXJfYnlfcmVsaWQgJiYgIWlzX3B1Ymxpc2hhYmxlX3RhYmxl KHRhcmdldF9yZWxpZCkpCisJCQlTUkZfUkVUVVJOX0RPTkUoZnVuY2N0eCk7CiAKIAkJLyogR2V0 IE9pZHMgb2YgdGFibGVzIGZyb20gZWFjaCBwdWJsaWNhdGlvbi4gKi8KIAkJZm9yIChpID0gMDsg aSA8IG5lbGVtczsgaSsrKQpAQCAtMTMwNiwzMiArMTQ1Miw0OCBAQCBwZ19nZXRfcHVibGljYXRp b25fdGFibGVzKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQlMaXN0CSAgICpwdWJfZWxlbV90YWJsZXMg PSBOSUw7CiAJCQlMaXN0Q2VsbCAgICpsYzsKIAotCQkJcHViX2VsZW0gPSBHZXRQdWJsaWNhdGlv bkJ5TmFtZShUZXh0RGF0dW1HZXRDU3RyaW5nKGVsZW1zW2ldKSwgZmFsc2UpOworCQkJcHViX2Vs ZW0gPSBHZXRQdWJsaWNhdGlvbkJ5TmFtZShUZXh0RGF0dW1HZXRDU3RyaW5nKGVsZW1zW2ldKSwK KwkJCQkJCQkJCQkJcHViX21pc3Npbmdfb2spOwogCi0JCQkvKgotCQkJICogUHVibGljYXRpb25z IHN1cHBvcnQgcGFydGl0aW9uZWQgdGFibGVzLiBJZgotCQkJICogcHVibGlzaF92aWFfcGFydGl0 aW9uX3Jvb3QgaXMgZmFsc2UsIGFsbCBjaGFuZ2VzIGFyZSByZXBsaWNhdGVkCi0JCQkgKiB1c2lu ZyBsZWFmIHBhcnRpdGlvbiBpZGVudGl0eSBhbmQgc2NoZW1hLCBzbyB3ZSBvbmx5IG5lZWQKLQkJ CSAqIHRob3NlLiBPdGhlcndpc2UsIGdldCB0aGUgcGFydGl0aW9uZWQgdGFibGUgaXRzZWxmLgot CQkJICovCi0JCQlpZiAocHViX2VsZW0tPmFsbHRhYmxlcykKLQkJCQlwdWJfZWxlbV90YWJsZXMg PSBHZXRBbGxQdWJsaWNhdGlvblJlbGF0aW9ucyhwdWJfZWxlbS0+b2lkLAotCQkJCQkJCQkJCQkJ CQkJIFJFTEtJTkRfUkVMQVRJT04sCi0JCQkJCQkJCQkJCQkJCQkgcHViX2VsZW0tPnB1YnZpYXJv b3QpOworCQkJaWYgKHB1Yl9lbGVtID09IE5VTEwpCisJCQkJY29udGludWU7CisKKwkJCWlmIChm aWx0ZXJfYnlfcmVsaWQpCisJCQl7CisJCQkJLyogQ2hlY2sgaWYgdGhlIGdpdmVuIHRhYmxlIGlz IHB1Ymxpc2hlZCBmb3IgdGhlIHB1YmxpY2F0aW9uICovCisJCQkJaWYgKGlzX3RhYmxlX3B1Ymxp c2hhYmxlX2luX3B1YmxpY2F0aW9uKHRhcmdldF9yZWxpZCwgcHViX2VsZW0pKQorCQkJCXsKKwkJ CQkJcHViX2VsZW1fdGFibGVzID0gbGlzdF9tYWtlMV9vaWQodGFyZ2V0X3JlbGlkKTsKKwkJCQl9 CisJCQl9CiAJCQllbHNlCiAJCQl7Ci0JCQkJTGlzdAkgICAqcmVsaWRzLAotCQkJCQkJICAgKnNj aGVtYXJlbGlkczsKLQotCQkJCXJlbGlkcyA9IEdldEluY2x1ZGVkUHVibGljYXRpb25SZWxhdGlv bnMocHViX2VsZW0tPm9pZCwKLQkJCQkJCQkJCQkJCQkJIHB1Yl9lbGVtLT5wdWJ2aWFyb290ID8K LQkJCQkJCQkJCQkJCQkJIFBVQkxJQ0FUSU9OX1BBUlRfUk9PVCA6Ci0JCQkJCQkJCQkJCQkJCSBQ VUJMSUNBVElPTl9QQVJUX0xFQUYpOwotCQkJCXNjaGVtYXJlbGlkcyA9IEdldEFsbFNjaGVtYVB1 YmxpY2F0aW9uUmVsYXRpb25zKHB1Yl9lbGVtLT5vaWQsCi0JCQkJCQkJCQkJCQkJCQkJcHViX2Vs ZW0tPnB1YnZpYXJvb3QgPwotCQkJCQkJCQkJCQkJCQkJCVBVQkxJQ0FUSU9OX1BBUlRfUk9PVCA6 Ci0JCQkJCQkJCQkJCQkJCQkJUFVCTElDQVRJT05fUEFSVF9MRUFGKTsKLQkJCQlwdWJfZWxlbV90 YWJsZXMgPSBsaXN0X2NvbmNhdF91bmlxdWVfb2lkKHJlbGlkcywgc2NoZW1hcmVsaWRzKTsKKwkJ CQkvKgorCQkJCSAqIFB1YmxpY2F0aW9ucyBzdXBwb3J0IHBhcnRpdGlvbmVkIHRhYmxlcy4gSWYK KwkJCQkgKiBwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCBpcyBmYWxzZSwgYWxsIGNoYW5nZXMg YXJlCisJCQkJICogcmVwbGljYXRlZCB1c2luZyBsZWFmIHBhcnRpdGlvbiBpZGVudGl0eSBhbmQg c2NoZW1hLCBzbyB3ZQorCQkJCSAqIG9ubHkgbmVlZCB0aG9zZS4gT3RoZXJ3aXNlLCBnZXQgdGhl IHBhcnRpdGlvbmVkIHRhYmxlCisJCQkJICogaXRzZWxmLgorCQkJCSAqLworCQkJCWlmIChwdWJf ZWxlbS0+YWxsdGFibGVzKQorCQkJCQlwdWJfZWxlbV90YWJsZXMgPSBHZXRBbGxQdWJsaWNhdGlv blJlbGF0aW9ucyhwdWJfZWxlbS0+b2lkLAorCQkJCQkJCQkJCQkJCQkJCSBSRUxLSU5EX1JFTEFU SU9OLAorCQkJCQkJCQkJCQkJCQkJCSBwdWJfZWxlbS0+cHVidmlhcm9vdCk7CisJCQkJZWxzZQor CQkJCXsKKwkJCQkJTGlzdAkgICAqcmVsaWRzLAorCQkJCQkJCSAgICpzY2hlbWFyZWxpZHM7CisK KwkJCQkJcmVsaWRzID0gR2V0SW5jbHVkZWRQdWJsaWNhdGlvblJlbGF0aW9ucyhwdWJfZWxlbS0+ b2lkLAorCQkJCQkJCQkJCQkJCQkJIHB1Yl9lbGVtLT5wdWJ2aWFyb290ID8KKwkJCQkJCQkJCQkJ CQkJCSBQVUJMSUNBVElPTl9QQVJUX1JPT1QgOgorCQkJCQkJCQkJCQkJCQkJIFBVQkxJQ0FUSU9O X1BBUlRfTEVBRik7CisJCQkJCXNjaGVtYXJlbGlkcyA9IEdldEFsbFNjaGVtYVB1YmxpY2F0aW9u UmVsYXRpb25zKHB1Yl9lbGVtLT5vaWQsCisJCQkJCQkJCQkJCQkJCQkJCXB1Yl9lbGVtLT5wdWJ2 aWFyb290ID8KKwkJCQkJCQkJCQkJCQkJCQkJUFVCTElDQVRJT05fUEFSVF9ST09UIDoKKwkJCQkJ CQkJCQkJCQkJCQkJUFVCTElDQVRJT05fUEFSVF9MRUFGKTsKKwkJCQkJcHViX2VsZW1fdGFibGVz ID0gbGlzdF9jb25jYXRfdW5pcXVlX29pZChyZWxpZHMsIHNjaGVtYXJlbGlkcyk7CisJCQkJfQog CQkJfQogCiAJCQkvKgpAQCAtMTQ5MSw2ICsxNjUzLDMwIEBAIHBnX2dldF9wdWJsaWNhdGlvbl90 YWJsZXMoUEdfRlVOQ1RJT05fQVJHUykKIAlTUkZfUkVUVVJOX0RPTkUoZnVuY2N0eCk7CiB9CiAK K0RhdHVtCitwZ19nZXRfcHVibGljYXRpb25fdGFibGVzX2EoUEdfRlVOQ1RJT05fQVJHUykKK3sK KwkvKgorCSAqIEdldCBpbmZvcm1hdGlvbiBmb3IgYWxsIHRhYmxlcyBpbiB0aGUgZ2l2ZW4gcHVi bGljYXRpb25zLgorCSAqIGZpbHRlcl9ieV9yZWxpZCBpcyBmYWxzZSBzbyBhbGwgdGFibGVzIGFy ZSByZXR1cm5lZDsgcHViX21pc3Npbmdfb2sgaXMKKwkgKiBmYWxzZSBmb3IgYmFja3dhcmQgY29t cGF0aWJpbGl0eS4KKwkgKi8KKwlyZXR1cm4gcGdfZ2V0X3B1YmxpY2F0aW9uX3RhYmxlcyhmY2lu Zm8sIFBHX0dFVEFSR19BUlJBWVRZUEVfUCgwKSwKKwkJCQkJCQkJCSBJbnZhbGlkT2lkLCBmYWxz ZSwgZmFsc2UpOworfQorCitEYXR1bQorcGdfZ2V0X3B1YmxpY2F0aW9uX3RhYmxlc19iKFBHX0ZV TkNUSU9OX0FSR1MpCit7CisJLyoKKwkgKiBHZXQgaW5mb3JtYXRpb24gZm9yIHRoZSBzcGVjaWZp ZWQgdGFibGUgaW4gdGhlIGdpdmVuIHB1YmxpY2F0aW9ucy4gVGhlCisJICogU1FMLWxldmVsIGZ1 bmN0aW9uIGlzIGRlY2xhcmVkIFNUUklDVCwgc28gdGFyZ2V0X3JlbGlkIGlzIGd1YXJhbnRlZWQg dG8KKwkgKiBiZSBub24tTlVMTCBoZXJlLgorCSAqLworCXJldHVybiBwZ19nZXRfcHVibGljYXRp b25fdGFibGVzKGZjaW5mbywgUEdfR0VUQVJHX0FSUkFZVFlQRV9QKDApLAorCQkJCQkJCQkJIFBH X0dFVEFSR19PSUQoMSksIHRydWUsIHRydWUpOworfQorCiAvKgogICogUmV0dXJucyBPaWRzIG9m IHNlcXVlbmNlcyBpbiBhIHB1YmxpY2F0aW9uLgogICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vbG9naWNhbC90YWJsZXN5bmMuYwppbmRleCBmNDlhNDg1MmVjYi4uZWI3MTgxMTQyOTcgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMKKysr IGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYwpAQCAtNzk4LDE3 ICs3OTgsMzUgQEAgZmV0Y2hfcmVtb3RlX3RhYmxlX2luZm8oY2hhciAqbnNwbmFtZSwgY2hhciAq cmVsbmFtZSwgTG9naWNhbFJlcFJlbGF0aW9uICpscmVsLAogCQkgKiBwdWJsaWNhdGlvbnMpLgog CQkgKi8KIAkJcmVzZXRTdHJpbmdJbmZvKCZjbWQpOwotCQlhcHBlbmRTdHJpbmdJbmZvKCZjbWQs Ci0JCQkJCQkgIlNFTEVDVCBESVNUSU5DVCIKLQkJCQkJCSAiICAoQ0FTRSBXSEVOIChhcnJheV9s ZW5ndGgoZ3B0LmF0dHJzLCAxKSA9IGMucmVsbmF0dHMpIgotCQkJCQkJICIgICBUSEVOIE5VTEwg RUxTRSBncHQuYXR0cnMgRU5EKSIKLQkJCQkJCSAiICBGUk9NIHBnX3B1YmxpY2F0aW9uIHAsIgot CQkJCQkJICIgIExBVEVSQUwgcGdfZ2V0X3B1YmxpY2F0aW9uX3RhYmxlcyhwLnB1Ym5hbWUpIGdw dCwiCi0JCQkJCQkgIiAgcGdfY2xhc3MgYyIKLQkJCQkJCSAiIFdIRVJFIGdwdC5yZWxpZCA9ICV1 IEFORCBjLm9pZCA9IGdwdC5yZWxpZCIKLQkJCQkJCSAiICAgQU5EIHAucHVibmFtZSBJTiAoICVz ICkiLAotCQkJCQkJIGxyZWwtPnJlbW90ZWlkLAotCQkJCQkJIHB1Yl9uYW1lcy0+ZGF0YSk7CisK KwkJaWYgKHNlcnZlcl92ZXJzaW9uID49IDE5MDAwMCkKKwkJeworCQkJLyoKKwkJCSAqIFdlIGNh biBwYXNzIGJvdGggcHVibGljYXRpb24gbmFtZXMgYW5kIHJlbGlkIHRvCisJCQkgKiBwZ19nZXRf cHVibGljYXRpb25fdGFibGVzKCkgc2luY2UgdmVyc2lvbiAxOS4KKwkJCSAqLworCQkJYXBwZW5k U3RyaW5nSW5mbygmY21kLAorCQkJCQkJCSAiU0VMRUNUIERJU1RJTkNUIgorCQkJCQkJCSAiICAo Q0FTRSBXSEVOIChhcnJheV9sZW5ndGgoZ3B0LmF0dHJzLCAxKSA9IGMucmVsbmF0dHMpIgorCQkJ CQkJCSAiICAgVEhFTiBOVUxMIEVMU0UgZ3B0LmF0dHJzIEVORCkiCisJCQkJCQkJICIgIEZST00g cGdfZ2V0X3B1YmxpY2F0aW9uX3RhYmxlcyhBUlJBWVslc10sICV1KSBncHQsIgorCQkJCQkJCSAi ICBwZ19jbGFzcyBjIgorCQkJCQkJCSAiIFdIRVJFIGMub2lkID0gZ3B0LnJlbGlkIiwKKwkJCQkJ CQkgcHViX25hbWVzLT5kYXRhLAorCQkJCQkJCSBscmVsLT5yZW1vdGVpZCk7CisJCX0KKwkJZWxz ZQorCQkJYXBwZW5kU3RyaW5nSW5mbygmY21kLAorCQkJCQkJCSAiU0VMRUNUIERJU1RJTkNUIgor CQkJCQkJCSAiICAoQ0FTRSBXSEVOIChhcnJheV9sZW5ndGgoZ3B0LmF0dHJzLCAxKSA9IGMucmVs bmF0dHMpIgorCQkJCQkJCSAiICAgVEhFTiBOVUxMIEVMU0UgZ3B0LmF0dHJzIEVORCkiCisJCQkJ CQkJICIgIEZST00gcGdfcHVibGljYXRpb24gcCwiCisJCQkJCQkJICIgIExBVEVSQUwgcGdfZ2V0 X3B1YmxpY2F0aW9uX3RhYmxlcyhwLnB1Ym5hbWUpIGdwdCwiCisJCQkJCQkJICIgIHBnX2NsYXNz IGMiCisJCQkJCQkJICIgV0hFUkUgZ3B0LnJlbGlkID0gJXUgQU5EIGMub2lkID0gZ3B0LnJlbGlk IgorCQkJCQkJCSAiICAgQU5EIHAucHVibmFtZSBJTiAoICVzICkiLAorCQkJCQkJCSBscmVsLT5y ZW1vdGVpZCwKKwkJCQkJCQkgcHViX25hbWVzLT5kYXRhKTsKIAogCQlwdWJyZXMgPSB3YWxyY3Zf ZXhlYyhMb2dSZXBXb3JrZXJXYWxSY3ZDb25uLCBjbWQuZGF0YSwKIAkJCQkJCQkgbGVuZ3Rob2Yo YXR0cnNSb3cpLCBhdHRyc1Jvdyk7CkBAIC05ODIsMTQgKzEwMDAsMjggQEAgZmV0Y2hfcmVtb3Rl X3RhYmxlX2luZm8oY2hhciAqbnNwbmFtZSwgY2hhciAqcmVsbmFtZSwgTG9naWNhbFJlcFJlbGF0 aW9uICpscmVsLAogCiAJCS8qIENoZWNrIGZvciByb3cgZmlsdGVycy4gKi8KIAkJcmVzZXRTdHJp bmdJbmZvKCZjbWQpOwotCQlhcHBlbmRTdHJpbmdJbmZvKCZjbWQsCi0JCQkJCQkgIlNFTEVDVCBE SVNUSU5DVCBwZ19nZXRfZXhwcihncHQucXVhbCwgZ3B0LnJlbGlkKSIKLQkJCQkJCSAiICBGUk9N IHBnX3B1YmxpY2F0aW9uIHAsIgotCQkJCQkJICIgIExBVEVSQUwgcGdfZ2V0X3B1YmxpY2F0aW9u X3RhYmxlcyhwLnB1Ym5hbWUpIGdwdCIKLQkJCQkJCSAiIFdIRVJFIGdwdC5yZWxpZCA9ICV1Igot CQkJCQkJICIgICBBTkQgcC5wdWJuYW1lIElOICggJXMgKSIsCi0JCQkJCQkgbHJlbC0+cmVtb3Rl aWQsCi0JCQkJCQkgcHViX25hbWVzLT5kYXRhKTsKKworCQlpZiAoc2VydmVyX3ZlcnNpb24gPj0g MTkwMDAwKQorCQl7CisJCQkvKgorCQkJICogV2UgY2FuIHBhc3MgYm90aCBwdWJsaWNhdGlvbiBu YW1lcyBhbmQgcmVsaWQgdG8KKwkJCSAqIHBnX2dldF9wdWJsaWNhdGlvbl90YWJsZXMoKSBzaW5j ZSB2ZXJzaW9uIDE5LgorCQkJICovCisJCQlhcHBlbmRTdHJpbmdJbmZvKCZjbWQsCisJCQkJCQkJ ICJTRUxFQ1QgRElTVElOQ1QgcGdfZ2V0X2V4cHIoZ3B0LnF1YWwsIGdwdC5yZWxpZCkiCisJCQkJ CQkJICIgIEZST00gcGdfZ2V0X3B1YmxpY2F0aW9uX3RhYmxlcyhBUlJBWVslc10sICV1KSBncHQi LAorCQkJCQkJCSBwdWJfbmFtZXMtPmRhdGEsCisJCQkJCQkJIGxyZWwtPnJlbW90ZWlkKTsKKwkJ fQorCQllbHNlCisJCQlhcHBlbmRTdHJpbmdJbmZvKCZjbWQsCisJCQkJCQkJICJTRUxFQ1QgRElT VElOQ1QgcGdfZ2V0X2V4cHIoZ3B0LnF1YWwsIGdwdC5yZWxpZCkiCisJCQkJCQkJICIgIEZST00g cGdfcHVibGljYXRpb24gcCwiCisJCQkJCQkJICIgIExBVEVSQUwgcGdfZ2V0X3B1YmxpY2F0aW9u X3RhYmxlcyhwLnB1Ym5hbWUpIGdwdCIKKwkJCQkJCQkgIiBXSEVSRSBncHQucmVsaWQgPSAldSIK KwkJCQkJCQkgIiAgIEFORCBwLnB1Ym5hbWUgSU4gKCAlcyApIiwKKwkJCQkJCQkgbHJlbC0+cmVt b3RlaWQsCisJCQkJCQkJIHB1Yl9uYW1lcy0+ZGF0YSk7CiAKIAkJcmVzID0gd2FscmN2X2V4ZWMo TG9nUmVwV29ya2VyV2FsUmN2Q29ubiwgY21kLmRhdGEsIDEsIHF1YWxSb3cpOwogCmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0IGIvc3JjL2luY2x1ZGUvY2F0YWxv Zy9wZ19wcm9jLmRhdAppbmRleCAzNTc5Y2VjNTc0NC4uYWZkY2M5MTVmMDggMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxv Zy9wZ19wcm9jLmRhdApAQCAtMTI0NjgsNyArMTI0NjgsMTYgQEAKICAgcHJvYWxsYXJndHlwZXMg PT4gJ3tfdGV4dCxvaWQsb2lkLGludDJ2ZWN0b3IscGdfbm9kZV90cmVlfScsCiAgIHByb2FyZ21v ZGVzID0+ICd7dixvLG8sbyxvfScsCiAgIHByb2FyZ25hbWVzID0+ICd7cHVibmFtZSxwdWJpZCxy ZWxpZCxhdHRycyxxdWFsfScsCi0gIHByb3NyYyA9PiAncGdfZ2V0X3B1YmxpY2F0aW9uX3RhYmxl cycgfSwKKyAgcHJvc3JjID0+ICdwZ19nZXRfcHVibGljYXRpb25fdGFibGVzX2EnIH0sCit7IG9p ZCA9PiAnODA2MCcsCisgIGRlc2NyID0+ICdnZXQgaW5mb3JtYXRpb24gb2YgdGhlIHNwZWNpZmll ZCB0YWJsZSB0aGF0IGlzIHBhcnQgb2YgdGhlIHNwZWNpZmllZCBwdWJsaWNhdGlvbnMnLAorICBw cm9uYW1lID0+ICdwZ19nZXRfcHVibGljYXRpb25fdGFibGVzJywgcHJvcm93cyA9PiAnMTAnLAor ICBwcm9yZXRzZXQgPT4gJ3QnLCBwcm92b2xhdGlsZSA9PiAncycsCisgIHByb3JldHR5cGUgPT4g J3JlY29yZCcsIHByb2FyZ3R5cGVzID0+ICdfdGV4dCBvaWQnLAorICBwcm9hbGxhcmd0eXBlcyA9 PiAne190ZXh0LG9pZCxvaWQsb2lkLGludDJ2ZWN0b3IscGdfbm9kZV90cmVlfScsCisgIHByb2Fy Z21vZGVzID0+ICd7aSxpLG8sbyxvLG99JywKKyAgcHJvYXJnbmFtZXMgPT4gJ3twdWJuYW1lcyx0 YXJnZXRfcmVsaWQscHViaWQscmVsaWQsYXR0cnMscXVhbH0nLAorICBwcm9zcmMgPT4gJ3BnX2dl dF9wdWJsaWNhdGlvbl90YWJsZXNfYicgfSwKIHsgb2lkID0+ICc4MDUyJywgZGVzY3IgPT4gJ2dl dCBPSURzIG9mIHNlcXVlbmNlcyBpbiBhIHB1YmxpY2F0aW9uJywKICAgcHJvbmFtZSA9PiAncGdf Z2V0X3B1YmxpY2F0aW9uX3NlcXVlbmNlcycsIHByb3Jvd3MgPT4gJzEwMDAnLCBwcm9yZXRzZXQg PT4gJ3QnLAogICBwcm92b2xhdGlsZSA9PiAncycsIHByb3JldHR5cGUgPT4gJ29pZCcsIHByb2Fy Z3R5cGVzID0+ICd0ZXh0JywKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv cHVibGljYXRpb24ub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wdWJsaWNhdGlvbi5v dXQKaW5kZXggYTIyMGY0OGIyODUuLmRmMzhkNmQ0NWRiIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL3B1YmxpY2F0aW9uLm91dApAQCAtMjI3MSw2ICsyMjcxLDIzMSBAQCBEUk9QIFRBQkxF IHRlc3RwdWJfbWVyZ2VfcGs7CiBSRVNFVCBTRVNTSU9OIEFVVEhPUklaQVRJT047CiBEUk9QIFJP TEUgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyLCByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIyOwog RFJPUCBST0xFIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlcl9kdW1teTsKKy0tIFRlc3QgcGdfZ2V0 X3B1YmxpY2F0aW9uX3RhYmxlcyh0ZXh0W10sIG9pZCkgZnVuY3Rpb24KK0NSRUFURSBTQ0hFTUEg Z3B0X3Rlc3Rfc2NoOworQ1JFQVRFIFRBQkxFIGdwdF90ZXN0X3NjaC50Ymxfc2NoIChpZCBpbnQp OworQ1JFQVRFIFRBQkxFIHRibF9ub3JtYWwgKGlkIGludCk7CitDUkVBVEUgVEFCTEUgdGJsX3Bh cmVudCAoaWQxIGludCwgaWQyIGludCwgaWQzIGludCkgUEFSVElUSU9OIEJZIFJBTkdFIChpZDEp OworQ1JFQVRFIFRBQkxFIHRibF9wYXJ0MSBQQVJUSVRJT04gT0YgdGJsX3BhcmVudCBGT1IgVkFM VUVTIEZST00gKDEpIFRPICgxMCk7CitDUkVBVEUgVklFVyBncHRfdGVzdF92aWV3IEFTIFNFTEVD VCAqIEZST00gdGJsX25vcm1hbDsKK1NFVCBjbGllbnRfbWluX21lc3NhZ2VzID0gJ0VSUk9SJzsK K0NSRUFURSBQVUJMSUNBVElPTiBwdWJfYWxsIEZPUiBBTEwgVEFCTEVTIFdJVEggKHB1Ymxpc2hf dmlhX3BhcnRpdGlvbl9yb290ID0gdHJ1ZSk7CitDUkVBVEUgUFVCTElDQVRJT04gcHViX2FsbF9u b192aWFyb290IEZPUiBBTEwgVEFCTEVTIFdJVEggKHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290 ID0gZmFsc2UpOworQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1Yl9hbGxfZXhjZXB0IEZPUiBBTEwgVEFC TEVTIEVYQ0VQVCBUQUJMRSAodGJsX3BhcmVudCwgZ3B0X3Rlc3Rfc2NoLnRibF9zY2gpIFdJVEgg KHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290ID0gZmFsc2UpOworQ1JFQVRFIFBVQkxJQ0FUSU9O IHB1Yl9hbGxfZXhjZXB0X25vX3ZpYXJvb3QgRk9SIEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxFICh0 YmxfcGFyZW50LCBncHRfdGVzdF9zY2gudGJsX3NjaCkgV0lUSCAocHVibGlzaF92aWFfcGFydGl0 aW9uX3Jvb3QgPSB0cnVlKTsKK0NSRUFURSBQVUJMSUNBVElPTiBwdWJfc2NoZW1hIEZPUiBUQUJM RVMgSU4gU0NIRU1BIGdwdF90ZXN0X3NjaDsKK0NSRUFURSBQVUJMSUNBVElPTiBwdWJfbm9ybWFs IEZPUiBUQUJMRSB0Ymxfbm9ybWFsIFdIRVJFIChpZCA8IDEwKTsKK0NSRUFURSBQVUJMSUNBVElP TiBwdWJfcGFydF9sZWFmIEZPUiBUQUJMRSB0YmxfcGFydDEgV0lUSCAocHVibGlzaF92aWFfcGFy dGl0aW9uX3Jvb3QgPSBmYWxzZSk7CitDUkVBVEUgUFVCTElDQVRJT04gcHViX3BhcnRfcGFyZW50 IEZPUiBUQUJMRSB0YmxfcGFyZW50IChpZDEsIGlkMikgV0hFUkUgKGlkMSA9IDEwKSBXSVRIIChw dWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCA9IHRydWUpOworQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1 Yl9wYXJ0X3BhcmVudF9ub192aWFyb290IEZPUiBUQUJMRSB0YmxfcGFyZW50IFdJVEggKHB1Ymxp c2hfdmlhX3BhcnRpdGlvbl9yb290ID0gZmFsc2UpOworQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1Yl9w YXJ0X3BhcmVudF9jaGlsZCBGT1IgVEFCTEUgdGJsX3BhcmVudCwgdGJsX3BhcnQxIFdJVEggKHB1 Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290ID0gdHJ1ZSk7CitSRVNFVCBjbGllbnRfbWluX21lc3Nh Z2VzOworQ1JFQVRFIEZVTkNUSU9OIHRlc3RfZ3B0KHB1Ym5hbWVzIHRleHRbXSwgcmVsbmFtZSB0 ZXh0KQorUkVUVVJOUyBUQUJMRSAoCisgIHB1Ym5hbWUgdGV4dCwKKyAgcmVsbmFtZSBuYW1lLAor ICBhdHRycyB0ZXh0LAorICBxdWFsIHRleHQKKykKK0JFR0lOIEFUT01JQworICBTRUxFQ1QgcC5w dWJuYW1lLCBjLnJlbG5hbWUsIGdwdC5hdHRyczo6dGV4dCwgcGdfZ2V0X2V4cHIoZ3B0LnF1YWws IGdwdC5yZWxpZCkKKyAgICBGUk9NIHBnX2dldF9wdWJsaWNhdGlvbl90YWJsZXMocHVibmFtZXMs IHJlbG5hbWU6OnJlZ2NsYXNzOjpvaWQpIGdwdAorICAgIEpPSU4gcGdfcHVibGljYXRpb24gcCBP TiBwLm9pZCA9IGdwdC5wdWJpZAorICAgIEpPSU4gcGdfY2xhc3MgYyBPTiBjLm9pZCA9IGdwdC5y ZWxpZAorICBPUkRFUiBCWSBwLnB1Ym5hbWUsIGMucmVsbmFtZTsKK0VORDsKK1NFTEVDVCAqIEZS T00gdGVzdF9ncHQoQVJSQVlbJ3B1Yl9ub3JtYWwnXSwgJ3RibF9ub3JtYWwnKTsKKyAgcHVibmFt ZSAgIHwgIHJlbG5hbWUgICB8IGF0dHJzIHwgICBxdWFsICAgIAorLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tCisgcHViX25vcm1hbCB8IHRibF9ub3JtYWwgfCAx ICAgICB8IChpZCA8IDEwKQorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIHRlc3RfZ3B0KEFSUkFZ WydwdWJfbm9ybWFsJ10sICdncHRfdGVzdF9zY2gudGJsX3NjaCcpOyAtLSBubyByZXN1bHQKKyBw dWJuYW1lIHwgcmVsbmFtZSB8IGF0dHJzIHwgcXVhbCAKKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLSstLS0tLS0KKygwIHJvd3MpCisKK1NFTEVDVCAqIEZST00gdGVzdF9ncHQoQVJSQVlbJ3B1 Yl9zY2hlbWEnXSwgJ2dwdF90ZXN0X3NjaC50Ymxfc2NoJyk7CisgIHB1Ym5hbWUgICB8IHJlbG5h bWUgfCBhdHRycyB8IHF1YWwgCistLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0t CisgcHViX3NjaGVtYSB8IHRibF9zY2ggfCAxICAgICB8IAorKDEgcm93KQorCitTRUxFQ1QgKiBG Uk9NIHRlc3RfZ3B0KEFSUkFZWydwdWJfc2NoZW1hJ10sICd0Ymxfbm9ybWFsJyk7IC0tIG5vIHJl c3VsdAorIHB1Ym5hbWUgfCByZWxuYW1lIHwgYXR0cnMgfCBxdWFsIAorLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tKy0tLS0tLQorKDAgcm93cykKKworU0VMRUNUICogRlJPTSB0ZXN0X2dwdChB UlJBWVsncHViX3BhcnRfcGFyZW50J10sICd0YmxfcGFyZW50Jyk7CisgICAgIHB1Ym5hbWUgICAg IHwgIHJlbG5hbWUgICB8IGF0dHJzIHwgICAgcXVhbCAgICAKKy0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLQorIHB1Yl9wYXJ0X3BhcmVudCB8IHRibF9w YXJlbnQgfCAxIDIgICB8IChpZDEgPSAxMCkKKygxIHJvdykKKworU0VMRUNUICogRlJPTSB0ZXN0 X2dwdChBUlJBWVsncHViX3BhcnRfcGFyZW50J10sICd0YmxfcGFydDEnKTsgLS0gbm8gcmVzdWx0 CisgcHVibmFtZSB8IHJlbG5hbWUgfCBhdHRycyB8IHF1YWwgCistLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0rLS0tLS0tCisoMCByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHRlc3RfZ3B0KEFSUkFZ WydwdWJfcGFydF9wYXJlbnRfbm9fdmlhcm9vdCddLCAndGJsX3BhcnQxJyk7CisgICAgICAgICAg cHVibmFtZSAgICAgICAgICAgfCAgcmVsbmFtZSAgfCBhdHRycyB8IHF1YWwgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tCisgcHViX3BhcnRf cGFyZW50X25vX3ZpYXJvb3QgfCB0YmxfcGFydDEgfCAxIDIgMyB8IAorKDEgcm93KQorCitTRUxF Q1QgKiBGUk9NIHRlc3RfZ3B0KEFSUkFZWydwdWJfcGFydF9wYXJlbnRfbm9fdmlhcm9vdCddLCAn dGJsX3BhcmVudCcpOyAtLSBubyByZXN1bHQKKyBwdWJuYW1lIHwgcmVsbmFtZSB8IGF0dHJzIHwg cXVhbCAKKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0KKygwIHJvd3MpCisKK1NF TEVDVCAqIEZST00gdGVzdF9ncHQoQVJSQVlbJ3B1Yl9wYXJ0X2xlYWYnXSwgJ3RibF9wYXJ0MScp OworICAgIHB1Ym5hbWUgICAgfCAgcmVsbmFtZSAgfCBhdHRycyB8IHF1YWwgCistLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0KKyBwdWJfcGFydF9sZWFmIHwgdGJsX3Bh cnQxIHwgMSAyIDMgfCAKKygxIHJvdykKKworU0VMRUNUICogRlJPTSB0ZXN0X2dwdChBUlJBWVsn cHViX3BhcnRfbGVhZiddLCAndGJsX3BhcmVudCcpOyAtLSBubyByZXN1bHQKKyBwdWJuYW1lIHwg cmVsbmFtZSB8IGF0dHJzIHwgcXVhbCAKKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLSstLS0t LS0KKygwIHJvd3MpCisKK1NFTEVDVCAqIEZST00gdGVzdF9ncHQoQVJSQVlbJ3B1Yl9hbGwnXSwg J3RibF9wYXJlbnQnKTsKKyBwdWJuYW1lIHwgIHJlbG5hbWUgICB8IGF0dHJzIHwgcXVhbCAKKy0t LS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0KKyBwdWJfYWxsIHwgdGJsX3BhcmVu dCB8IDEgMiAzIHwgCisoMSByb3cpCisKK1NFTEVDVCAqIEZST00gdGVzdF9ncHQoQVJSQVlbJ3B1 Yl9hbGwnXSwgJ3RibF9wYXJ0MScpOyAtLSBubyByZXN1bHQKKyBwdWJuYW1lIHwgcmVsbmFtZSB8 IGF0dHJzIHwgcXVhbCAKKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0KKygwIHJv d3MpCisKK1NFTEVDVCAqIEZST00gdGVzdF9ncHQoQVJSQVlbJ3B1Yl9hbGxfbm9fdmlhcm9vdCdd LCAndGJsX3BhcnQxJyk7CisgICAgICBwdWJuYW1lICAgICAgIHwgIHJlbG5hbWUgIHwgYXR0cnMg fCBxdWFsIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0K KyBwdWJfYWxsX25vX3ZpYXJvb3QgfCB0YmxfcGFydDEgfCAxIDIgMyB8IAorKDEgcm93KQorCitT RUxFQ1QgKiBGUk9NIHRlc3RfZ3B0KEFSUkFZWydwdWJfYWxsX25vX3ZpYXJvb3QnXSwgJ3RibF9w YXJlbnQnKTsgLS0gbm8gcmVzdWx0CisgcHVibmFtZSB8IHJlbG5hbWUgfCBhdHRycyB8IHF1YWwg CistLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tCisoMCByb3dzKQorCitTRUxFQ1Qg KiBGUk9NIHRlc3RfZ3B0KEFSUkFZWydwdWJfcGFydF9wYXJlbnRfY2hpbGQnXSwgJ3RibF9wYXJl bnQnKTsKKyAgICAgICAgcHVibmFtZSAgICAgICAgfCAgcmVsbmFtZSAgIHwgYXR0cnMgfCBxdWFs IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tCisg cHViX3BhcnRfcGFyZW50X2NoaWxkIHwgdGJsX3BhcmVudCB8IDEgMiAzIHwgCisoMSByb3cpCisK K1NFTEVDVCAqIEZST00gdGVzdF9ncHQoQVJSQVlbJ3B1Yl9wYXJ0X3BhcmVudF9jaGlsZCddLCAn dGJsX3BhcnQxJyk7IC0tIG5vIHJlc3VsdAorIHB1Ym5hbWUgfCByZWxuYW1lIHwgYXR0cnMgfCBx dWFsIAorLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLQorKDAgcm93cykKKworLS0g dGVzdCBmb3IgdGhlIEVYQ0xVREUgY2xhdXNlCitTRUxFQ1QgKiBGUk9NIHRlc3RfZ3B0KEFSUkFZ WydwdWJfYWxsX2V4Y2VwdCddLCAndGJsX25vcm1hbCcpOworICAgIHB1Ym5hbWUgICAgIHwgIHJl bG5hbWUgICB8IGF0dHJzIHwgcXVhbCAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0t LS0tLS0rLS0tLS0tCisgcHViX2FsbF9leGNlcHQgfCB0Ymxfbm9ybWFsIHwgMSAgICAgfCAKKygx IHJvdykKKworU0VMRUNUICogRlJPTSB0ZXN0X2dwdChBUlJBWVsncHViX2FsbF9leGNlcHQnXSwg J2dwdF90ZXN0X3NjaC50Ymxfc2NoJyk7IC0tIG5vIHJlc3VsdCAoZXhjbHVkZWQpCisgcHVibmFt ZSB8IHJlbG5hbWUgfCBhdHRycyB8IHF1YWwgCistLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0r LS0tLS0tCisoMCByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHRlc3RfZ3B0KEFSUkFZWydwdWJfYWxs X2V4Y2VwdCddLCAndGJsX3BhcmVudCcpOyAtLSBubyByZXN1bHQgKGV4Y2x1ZGVkKQorIHB1Ym5h bWUgfCByZWxuYW1lIHwgYXR0cnMgfCBxdWFsIAorLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t Ky0tLS0tLQorKDAgcm93cykKKworU0VMRUNUICogRlJPTSB0ZXN0X2dwdChBUlJBWVsncHViX2Fs bF9leGNlcHQnXSwgJ3RibF9wYXJ0MScpOyAtLSBubyByZXN1bHQKKyBwdWJuYW1lIHwgcmVsbmFt ZSB8IGF0dHJzIHwgcXVhbCAKKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0KKygw IHJvd3MpCisKK1NFTEVDVCAqIEZST00gdGVzdF9ncHQoQVJSQVlbJ3B1Yl9hbGxfZXhjZXB0X25v X3ZpYXJvb3QnXSwgJ3RibF9ub3JtYWwnKTsKKyAgICAgICAgICBwdWJuYW1lICAgICAgICAgIHwg IHJlbG5hbWUgICB8IGF0dHJzIHwgcXVhbCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0KKyBwdWJfYWxsX2V4Y2VwdF9ub192aWFyb290IHwg dGJsX25vcm1hbCB8IDEgICAgIHwgCisoMSByb3cpCisKK1NFTEVDVCAqIEZST00gdGVzdF9ncHQo QVJSQVlbJ3B1Yl9hbGxfZXhjZXB0X25vX3ZpYXJvb3QnXSwgJ2dwdF90ZXN0X3NjaC50Ymxfc2No Jyk7IC0tIG5vIHJlc3VsdCAoZXhjbHVkZWQpCisgcHVibmFtZSB8IHJlbG5hbWUgfCBhdHRycyB8 IHF1YWwgCistLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tCisoMCByb3dzKQorCitT RUxFQ1QgKiBGUk9NIHRlc3RfZ3B0KEFSUkFZWydwdWJfYWxsX2V4Y2VwdF9ub192aWFyb290J10s ICd0YmxfcGFyZW50Jyk7IC0tIG5vIHJlc3VsdCAoZXhjbHVkZWQpCisgcHVibmFtZSB8IHJlbG5h bWUgfCBhdHRycyB8IHF1YWwgCistLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tCiso MCByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHRlc3RfZ3B0KEFSUkFZWydwdWJfYWxsX2V4Y2VwdF9u b192aWFyb290J10sICd0YmxfcGFydDEnKTsgLS0gbm8gcmVzdWx0CisgcHVibmFtZSB8IHJlbG5h bWUgfCBhdHRycyB8IHF1YWwgCistLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tCiso MCByb3dzKQorCistLSB0d28gcm93cyB3aXRoIGRpZmZlcmVudCByb3cgZmlsdGVyCitTRUxFQ1Qg KiBGUk9NIHRlc3RfZ3B0KEFSUkFZWydwdWJfYWxsJywgJ3B1Yl9ub3JtYWwnXSwgJ3RibF9ub3Jt YWwnKTsKKyAgcHVibmFtZSAgIHwgIHJlbG5hbWUgICB8IGF0dHJzIHwgICBxdWFsICAgIAorLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tCisgcHViX2FsbCAgICB8 IHRibF9ub3JtYWwgfCAxICAgICB8IAorIHB1Yl9ub3JtYWwgfCB0Ymxfbm9ybWFsIHwgMSAgICAg fCAoaWQgPCAxMCkKKygyIHJvd3MpCisKKy0tIG9uZSByb3cgd2l0aCAncHViX3BhcnRfcGFyZW50 JworU0VMRUNUICogRlJPTSB0ZXN0X2dwdChBUlJBWVsncHViX3BhcnRfcGFyZW50JywgJ3B1Yl9w YXJ0X3BhcmVudF9ub192aWFyb290J10sICd0YmxfcGFyZW50Jyk7CisgICAgIHB1Ym5hbWUgICAg IHwgIHJlbG5hbWUgICB8IGF0dHJzIHwgICAgcXVhbCAgICAKKy0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLQorIHB1Yl9wYXJ0X3BhcmVudCB8IHRibF9w YXJlbnQgfCAxIDIgICB8IChpZDEgPSAxMCkKKygxIHJvdykKKworLS0gbm8gcmVzdWx0LCB0Ymxf cGFyZW50IGlzIHRoZSBlZmZlY3RpdmUgcHVibGlzaGVkIE9JRCBkdWUgdG8gcHVidmlhcm9vdAor U0VMRUNUICogRlJPTSB0ZXN0X2dwdChBUlJBWVsncHViX3BhcnRfcGFyZW50JywgJ3B1Yl9hbGwn XSwgJ3RibF9wYXJ0MScpOworIHB1Ym5hbWUgfCByZWxuYW1lIHwgYXR0cnMgfCBxdWFsIAorLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLQorKDAgcm93cykKKworLS0gbm8gcmVzdWx0 LCBub24tZXhpc3RlbnQgcHVibGljYXRpb24KK1NFTEVDVCAqIEZST00gdGVzdF9ncHQoQVJSQVlb J25vX3N1Y2hfcHViJ10sICd0Ymxfbm9ybWFsJyk7CisgcHVibmFtZSB8IHJlbG5hbWUgfCBhdHRy cyB8IHF1YWwgCistLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tCisoMCByb3dzKQor CistLSBubyByZXN1bHQsIG5vbi10YWJsZSBvYmplY3QKK1NFTEVDVCAqIEZST00gdGVzdF9ncHQo QVJSQVlbJ3B1Yl9hbGwnXSwgJ2dwdF90ZXN0X3ZpZXcnKTsKKyBwdWJuYW1lIHwgcmVsbmFtZSB8 IGF0dHJzIHwgcXVhbCAKKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0KKygwIHJv d3MpCisKKy0tIG5vIHJlc3VsdCwgZW1wdHkgcHVibGljYXRpb24gYXJyYXkKK1NFTEVDVCAqIEZS T00gdGVzdF9ncHQoQVJSQVlbXTo6dGV4dFtdLCAndGJsX25vcm1hbCcpOworIHB1Ym5hbWUgfCBy ZWxuYW1lIHwgYXR0cnMgfCBxdWFsIAorLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tKy0tLS0t LQorKDAgcm93cykKKworLS0gbm8gcmVzdWx0LCBPSUQgMCBhcyB0YXJnZXRfcmVsaWQKK1NFTEVD VCAqIEZST00gcGdfZ2V0X3B1YmxpY2F0aW9uX3RhYmxlcyhBUlJBWVsncHViX25vcm1hbCddLCAw OjpvaWQpOworIHB1YmlkIHwgcmVsaWQgfCBhdHRycyB8IHF1YWwgCistLS0tLS0tKy0tLS0tLS0r LS0tLS0tLSstLS0tLS0KKygwIHJvd3MpCisKKy0tIENsZWFuIHVwCitEUk9QIEZVTkNUSU9OIHRl c3RfZ3B0KHRleHRbXSwgdGV4dCk7CitEUk9QIFBVQkxJQ0FUSU9OIHB1Yl9hbGw7CitEUk9QIFBV QkxJQ0FUSU9OIHB1Yl9hbGxfbm9fdmlhcm9vdDsKK0RST1AgUFVCTElDQVRJT04gcHViX2FsbF9l eGNlcHQ7CitEUk9QIFBVQkxJQ0FUSU9OIHB1Yl9hbGxfZXhjZXB0X25vX3ZpYXJvb3Q7CitEUk9Q IFBVQkxJQ0FUSU9OIHB1Yl9zY2hlbWE7CitEUk9QIFBVQkxJQ0FUSU9OIHB1Yl9ub3JtYWw7CitE Uk9QIFBVQkxJQ0FUSU9OIHB1Yl9wYXJ0X2xlYWY7CitEUk9QIFBVQkxJQ0FUSU9OIHB1Yl9wYXJ0 X3BhcmVudDsKK0RST1AgUFVCTElDQVRJT04gcHViX3BhcnRfcGFyZW50X25vX3ZpYXJvb3Q7CitE Uk9QIFBVQkxJQ0FUSU9OIHB1Yl9wYXJ0X3BhcmVudF9jaGlsZDsKK0RST1AgVklFVyBncHRfdGVz dF92aWV3OworRFJPUCBUQUJMRSB0Ymxfbm9ybWFsLCB0YmxfcGFyZW50LCB0YmxfcGFydDE7CitE Uk9QIFNDSEVNQSBncHRfdGVzdF9zY2ggQ0FTQ0FERTsKK05PVElDRTogIGRyb3AgY2FzY2FkZXMg dG8gdGFibGUgZ3B0X3Rlc3Rfc2NoLnRibF9zY2gKIC0tIHN0YWdlIG9iamVjdHMgZm9yIHBnX2R1 bXAgdGVzdHMKIENSRUFURSBTQ0hFTUEgcHVibWUgQ1JFQVRFIFRBQkxFIHQwIChjIGludCwgZCBp bnQpIENSRUFURSBUQUJMRSB0MSAoYyBpbnQpOwogQ1JFQVRFIFNDSEVNQSBwdWJtZTIgQ1JFQVRF IFRBQkxFIHQwIChjIGludCwgZCBpbnQpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9z cWwvcHVibGljYXRpb24uc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHVibGljYXRpb24uc3Fs CmluZGV4IDIyZTBhMzBiNWM3Li4wNTdlMzY0Yzc1MyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVn cmVzcy9zcWwvcHVibGljYXRpb24uc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1Ymxp Y2F0aW9uLnNxbApAQCAtMTQyOSw2ICsxNDI5LDExMyBAQCBSRVNFVCBTRVNTSU9OIEFVVEhPUkla QVRJT047CiBEUk9QIFJPTEUgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyLCByZWdyZXNzX3B1Ymxp Y2F0aW9uX3VzZXIyOwogRFJPUCBST0xFIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlcl9kdW1teTsK IAorLS0gVGVzdCBwZ19nZXRfcHVibGljYXRpb25fdGFibGVzKHRleHRbXSwgb2lkKSBmdW5jdGlv bgorQ1JFQVRFIFNDSEVNQSBncHRfdGVzdF9zY2g7CitDUkVBVEUgVEFCTEUgZ3B0X3Rlc3Rfc2No LnRibF9zY2ggKGlkIGludCk7CitDUkVBVEUgVEFCTEUgdGJsX25vcm1hbCAoaWQgaW50KTsKK0NS RUFURSBUQUJMRSB0YmxfcGFyZW50IChpZDEgaW50LCBpZDIgaW50LCBpZDMgaW50KSBQQVJUSVRJ T04gQlkgUkFOR0UgKGlkMSk7CitDUkVBVEUgVEFCTEUgdGJsX3BhcnQxIFBBUlRJVElPTiBPRiB0 YmxfcGFyZW50IEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDEwKTsKK0NSRUFURSBWSUVXIGdwdF90 ZXN0X3ZpZXcgQVMgU0VMRUNUICogRlJPTSB0Ymxfbm9ybWFsOworCitTRVQgY2xpZW50X21pbl9t ZXNzYWdlcyA9ICdFUlJPUic7CitDUkVBVEUgUFVCTElDQVRJT04gcHViX2FsbCBGT1IgQUxMIFRB QkxFUyBXSVRIIChwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCA9IHRydWUpOworQ1JFQVRFIFBV QkxJQ0FUSU9OIHB1Yl9hbGxfbm9fdmlhcm9vdCBGT1IgQUxMIFRBQkxFUyBXSVRIIChwdWJsaXNo X3ZpYV9wYXJ0aXRpb25fcm9vdCA9IGZhbHNlKTsKK0NSRUFURSBQVUJMSUNBVElPTiBwdWJfYWxs X2V4Y2VwdCBGT1IgQUxMIFRBQkxFUyBFWENFUFQgVEFCTEUgKHRibF9wYXJlbnQsIGdwdF90ZXN0 X3NjaC50Ymxfc2NoKSBXSVRIIChwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCA9IGZhbHNlKTsK K0NSRUFURSBQVUJMSUNBVElPTiBwdWJfYWxsX2V4Y2VwdF9ub192aWFyb290IEZPUiBBTEwgVEFC TEVTIEVYQ0VQVCBUQUJMRSAodGJsX3BhcmVudCwgZ3B0X3Rlc3Rfc2NoLnRibF9zY2gpIFdJVEgg KHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290ID0gdHJ1ZSk7CitDUkVBVEUgUFVCTElDQVRJT04g cHViX3NjaGVtYSBGT1IgVEFCTEVTIElOIFNDSEVNQSBncHRfdGVzdF9zY2g7CitDUkVBVEUgUFVC TElDQVRJT04gcHViX25vcm1hbCBGT1IgVEFCTEUgdGJsX25vcm1hbCBXSEVSRSAoaWQgPCAxMCk7 CitDUkVBVEUgUFVCTElDQVRJT04gcHViX3BhcnRfbGVhZiBGT1IgVEFCTEUgdGJsX3BhcnQxIFdJ VEggKHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290ID0gZmFsc2UpOworQ1JFQVRFIFBVQkxJQ0FU SU9OIHB1Yl9wYXJ0X3BhcmVudCBGT1IgVEFCTEUgdGJsX3BhcmVudCAoaWQxLCBpZDIpIFdIRVJF IChpZDEgPSAxMCkgV0lUSCAocHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QgPSB0cnVlKTsKK0NS RUFURSBQVUJMSUNBVElPTiBwdWJfcGFydF9wYXJlbnRfbm9fdmlhcm9vdCBGT1IgVEFCTEUgdGJs X3BhcmVudCBXSVRIIChwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCA9IGZhbHNlKTsKK0NSRUFU RSBQVUJMSUNBVElPTiBwdWJfcGFydF9wYXJlbnRfY2hpbGQgRk9SIFRBQkxFIHRibF9wYXJlbnQs IHRibF9wYXJ0MSBXSVRIIChwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCA9IHRydWUpOworUkVT RVQgY2xpZW50X21pbl9tZXNzYWdlczsKKworQ1JFQVRFIEZVTkNUSU9OIHRlc3RfZ3B0KHB1Ym5h bWVzIHRleHRbXSwgcmVsbmFtZSB0ZXh0KQorUkVUVVJOUyBUQUJMRSAoCisgIHB1Ym5hbWUgdGV4 dCwKKyAgcmVsbmFtZSBuYW1lLAorICBhdHRycyB0ZXh0LAorICBxdWFsIHRleHQKKykKK0JFR0lO IEFUT01JQworICBTRUxFQ1QgcC5wdWJuYW1lLCBjLnJlbG5hbWUsIGdwdC5hdHRyczo6dGV4dCwg cGdfZ2V0X2V4cHIoZ3B0LnF1YWwsIGdwdC5yZWxpZCkKKyAgICBGUk9NIHBnX2dldF9wdWJsaWNh dGlvbl90YWJsZXMocHVibmFtZXMsIHJlbG5hbWU6OnJlZ2NsYXNzOjpvaWQpIGdwdAorICAgIEpP SU4gcGdfcHVibGljYXRpb24gcCBPTiBwLm9pZCA9IGdwdC5wdWJpZAorICAgIEpPSU4gcGdfY2xh c3MgYyBPTiBjLm9pZCA9IGdwdC5yZWxpZAorICBPUkRFUiBCWSBwLnB1Ym5hbWUsIGMucmVsbmFt ZTsKK0VORDsKKworU0VMRUNUICogRlJPTSB0ZXN0X2dwdChBUlJBWVsncHViX25vcm1hbCddLCAn dGJsX25vcm1hbCcpOworU0VMRUNUICogRlJPTSB0ZXN0X2dwdChBUlJBWVsncHViX25vcm1hbCdd LCAnZ3B0X3Rlc3Rfc2NoLnRibF9zY2gnKTsgLS0gbm8gcmVzdWx0CisKK1NFTEVDVCAqIEZST00g dGVzdF9ncHQoQVJSQVlbJ3B1Yl9zY2hlbWEnXSwgJ2dwdF90ZXN0X3NjaC50Ymxfc2NoJyk7CitT RUxFQ1QgKiBGUk9NIHRlc3RfZ3B0KEFSUkFZWydwdWJfc2NoZW1hJ10sICd0Ymxfbm9ybWFsJyk7 IC0tIG5vIHJlc3VsdAorCitTRUxFQ1QgKiBGUk9NIHRlc3RfZ3B0KEFSUkFZWydwdWJfcGFydF9w YXJlbnQnXSwgJ3RibF9wYXJlbnQnKTsKK1NFTEVDVCAqIEZST00gdGVzdF9ncHQoQVJSQVlbJ3B1 Yl9wYXJ0X3BhcmVudCddLCAndGJsX3BhcnQxJyk7IC0tIG5vIHJlc3VsdAorCitTRUxFQ1QgKiBG Uk9NIHRlc3RfZ3B0KEFSUkFZWydwdWJfcGFydF9wYXJlbnRfbm9fdmlhcm9vdCddLCAndGJsX3Bh cnQxJyk7CitTRUxFQ1QgKiBGUk9NIHRlc3RfZ3B0KEFSUkFZWydwdWJfcGFydF9wYXJlbnRfbm9f dmlhcm9vdCddLCAndGJsX3BhcmVudCcpOyAtLSBubyByZXN1bHQKKworU0VMRUNUICogRlJPTSB0 ZXN0X2dwdChBUlJBWVsncHViX3BhcnRfbGVhZiddLCAndGJsX3BhcnQxJyk7CitTRUxFQ1QgKiBG Uk9NIHRlc3RfZ3B0KEFSUkFZWydwdWJfcGFydF9sZWFmJ10sICd0YmxfcGFyZW50Jyk7IC0tIG5v IHJlc3VsdAorCitTRUxFQ1QgKiBGUk9NIHRlc3RfZ3B0KEFSUkFZWydwdWJfYWxsJ10sICd0Ymxf cGFyZW50Jyk7CitTRUxFQ1QgKiBGUk9NIHRlc3RfZ3B0KEFSUkFZWydwdWJfYWxsJ10sICd0Ymxf cGFydDEnKTsgLS0gbm8gcmVzdWx0CisKK1NFTEVDVCAqIEZST00gdGVzdF9ncHQoQVJSQVlbJ3B1 Yl9hbGxfbm9fdmlhcm9vdCddLCAndGJsX3BhcnQxJyk7CitTRUxFQ1QgKiBGUk9NIHRlc3RfZ3B0 KEFSUkFZWydwdWJfYWxsX25vX3ZpYXJvb3QnXSwgJ3RibF9wYXJlbnQnKTsgLS0gbm8gcmVzdWx0 CisKK1NFTEVDVCAqIEZST00gdGVzdF9ncHQoQVJSQVlbJ3B1Yl9wYXJ0X3BhcmVudF9jaGlsZCdd LCAndGJsX3BhcmVudCcpOworU0VMRUNUICogRlJPTSB0ZXN0X2dwdChBUlJBWVsncHViX3BhcnRf cGFyZW50X2NoaWxkJ10sICd0YmxfcGFydDEnKTsgLS0gbm8gcmVzdWx0CisKKy0tIHRlc3QgZm9y IHRoZSBFWENMVURFIGNsYXVzZQorU0VMRUNUICogRlJPTSB0ZXN0X2dwdChBUlJBWVsncHViX2Fs bF9leGNlcHQnXSwgJ3RibF9ub3JtYWwnKTsKK1NFTEVDVCAqIEZST00gdGVzdF9ncHQoQVJSQVlb J3B1Yl9hbGxfZXhjZXB0J10sICdncHRfdGVzdF9zY2gudGJsX3NjaCcpOyAtLSBubyByZXN1bHQg KGV4Y2x1ZGVkKQorU0VMRUNUICogRlJPTSB0ZXN0X2dwdChBUlJBWVsncHViX2FsbF9leGNlcHQn XSwgJ3RibF9wYXJlbnQnKTsgLS0gbm8gcmVzdWx0IChleGNsdWRlZCkKK1NFTEVDVCAqIEZST00g dGVzdF9ncHQoQVJSQVlbJ3B1Yl9hbGxfZXhjZXB0J10sICd0YmxfcGFydDEnKTsgLS0gbm8gcmVz dWx0CitTRUxFQ1QgKiBGUk9NIHRlc3RfZ3B0KEFSUkFZWydwdWJfYWxsX2V4Y2VwdF9ub192aWFy b290J10sICd0Ymxfbm9ybWFsJyk7CitTRUxFQ1QgKiBGUk9NIHRlc3RfZ3B0KEFSUkFZWydwdWJf YWxsX2V4Y2VwdF9ub192aWFyb290J10sICdncHRfdGVzdF9zY2gudGJsX3NjaCcpOyAtLSBubyBy ZXN1bHQgKGV4Y2x1ZGVkKQorU0VMRUNUICogRlJPTSB0ZXN0X2dwdChBUlJBWVsncHViX2FsbF9l eGNlcHRfbm9fdmlhcm9vdCddLCAndGJsX3BhcmVudCcpOyAtLSBubyByZXN1bHQgKGV4Y2x1ZGVk KQorU0VMRUNUICogRlJPTSB0ZXN0X2dwdChBUlJBWVsncHViX2FsbF9leGNlcHRfbm9fdmlhcm9v dCddLCAndGJsX3BhcnQxJyk7IC0tIG5vIHJlc3VsdAorCistLSB0d28gcm93cyB3aXRoIGRpZmZl cmVudCByb3cgZmlsdGVyCitTRUxFQ1QgKiBGUk9NIHRlc3RfZ3B0KEFSUkFZWydwdWJfYWxsJywg J3B1Yl9ub3JtYWwnXSwgJ3RibF9ub3JtYWwnKTsKKworLS0gb25lIHJvdyB3aXRoICdwdWJfcGFy dF9wYXJlbnQnCitTRUxFQ1QgKiBGUk9NIHRlc3RfZ3B0KEFSUkFZWydwdWJfcGFydF9wYXJlbnQn LCAncHViX3BhcnRfcGFyZW50X25vX3ZpYXJvb3QnXSwgJ3RibF9wYXJlbnQnKTsKKworLS0gbm8g cmVzdWx0LCB0YmxfcGFyZW50IGlzIHRoZSBlZmZlY3RpdmUgcHVibGlzaGVkIE9JRCBkdWUgdG8g cHVidmlhcm9vdAorU0VMRUNUICogRlJPTSB0ZXN0X2dwdChBUlJBWVsncHViX3BhcnRfcGFyZW50 JywgJ3B1Yl9hbGwnXSwgJ3RibF9wYXJ0MScpOworCistLSBubyByZXN1bHQsIG5vbi1leGlzdGVu dCBwdWJsaWNhdGlvbgorU0VMRUNUICogRlJPTSB0ZXN0X2dwdChBUlJBWVsnbm9fc3VjaF9wdWIn XSwgJ3RibF9ub3JtYWwnKTsKKworLS0gbm8gcmVzdWx0LCBub24tdGFibGUgb2JqZWN0CitTRUxF Q1QgKiBGUk9NIHRlc3RfZ3B0KEFSUkFZWydwdWJfYWxsJ10sICdncHRfdGVzdF92aWV3Jyk7CisK Ky0tIG5vIHJlc3VsdCwgZW1wdHkgcHVibGljYXRpb24gYXJyYXkKK1NFTEVDVCAqIEZST00gdGVz dF9ncHQoQVJSQVlbXTo6dGV4dFtdLCAndGJsX25vcm1hbCcpOworCistLSBubyByZXN1bHQsIE9J RCAwIGFzIHRhcmdldF9yZWxpZAorU0VMRUNUICogRlJPTSBwZ19nZXRfcHVibGljYXRpb25fdGFi bGVzKEFSUkFZWydwdWJfbm9ybWFsJ10sIDA6Om9pZCk7CisKKy0tIENsZWFuIHVwCitEUk9QIEZV TkNUSU9OIHRlc3RfZ3B0KHRleHRbXSwgdGV4dCk7CitEUk9QIFBVQkxJQ0FUSU9OIHB1Yl9hbGw7 CitEUk9QIFBVQkxJQ0FUSU9OIHB1Yl9hbGxfbm9fdmlhcm9vdDsKK0RST1AgUFVCTElDQVRJT04g cHViX2FsbF9leGNlcHQ7CitEUk9QIFBVQkxJQ0FUSU9OIHB1Yl9hbGxfZXhjZXB0X25vX3ZpYXJv b3Q7CitEUk9QIFBVQkxJQ0FUSU9OIHB1Yl9zY2hlbWE7CitEUk9QIFBVQkxJQ0FUSU9OIHB1Yl9u b3JtYWw7CitEUk9QIFBVQkxJQ0FUSU9OIHB1Yl9wYXJ0X2xlYWY7CitEUk9QIFBVQkxJQ0FUSU9O IHB1Yl9wYXJ0X3BhcmVudDsKK0RST1AgUFVCTElDQVRJT04gcHViX3BhcnRfcGFyZW50X25vX3Zp YXJvb3Q7CitEUk9QIFBVQkxJQ0FUSU9OIHB1Yl9wYXJ0X3BhcmVudF9jaGlsZDsKK0RST1AgVklF VyBncHRfdGVzdF92aWV3OworRFJPUCBUQUJMRSB0Ymxfbm9ybWFsLCB0YmxfcGFyZW50LCB0Ymxf cGFydDE7CitEUk9QIFNDSEVNQSBncHRfdGVzdF9zY2ggQ0FTQ0FERTsKKwogLS0gc3RhZ2Ugb2Jq ZWN0cyBmb3IgcGdfZHVtcCB0ZXN0cwogQ1JFQVRFIFNDSEVNQSBwdWJtZSBDUkVBVEUgVEFCTEUg dDAgKGMgaW50LCBkIGludCkgQ1JFQVRFIFRBQkxFIHQxIChjIGludCk7CiBDUkVBVEUgU0NIRU1B IHB1Ym1lMiBDUkVBVEUgVEFCTEUgdDAgKGMgaW50LCBkIGludCk7Ci0tIAoyLjUzLjAKCg== --0000000000004353ad064e4a22d3--