<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>218757</bug_id>
          
          <creation_ts>2020-11-10 08:51:53 -0800</creation_ts>
          <short_desc>Simplify mainframe tests tiled-drawing/scrolling/scroll-snap</short_desc>
          <delta_ts>2020-11-12 04:19:21 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Martin Robinson">mrobinson</reporter>
          <assigned_to name="Martin Robinson">mrobinson</assigned_to>
          <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1706092</commentid>
    <comment_count>0</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2020-11-10 08:51:53 -0800</bug_when>
    <thetext>The mainframe tests in this directory have a lot of repeated code that could be simplified to make the tests a lot more readable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706106</commentid>
    <comment_count>1</comment_count>
      <attachid>413707</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2020-11-10 09:32:12 -0800</bug_when>
    <thetext>Created attachment 413707
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706112</commentid>
    <comment_count>2</comment_count>
      <attachid>413707</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-11-10 09:46:56 -0800</bug_when>
    <thetext>Comment on attachment 413707
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=413707&amp;action=review

&gt; LayoutTests/tiled-drawing/scrolling/scroll-snap/resources/mainframe-scroll-snap-test.js:41
&gt; +    var startPosX = targetElement.offsetLeft + 20;
&gt; +    var startPosY = targetElement.offsetTop + 20;

This isn&apos;t going to work for something in side positioned elements. You need getBoundingClientRect().

&gt; LayoutTests/tiled-drawing/scrolling/scroll-snap/resources/mainframe-scroll-snap-test.js:60
&gt; +function delay(time) {
&gt; +    return new Promise(resolve =&gt; setTimeout(resolve, time));
&gt; +}

This is the same as UIHelper.delayFor()

&gt; LayoutTests/tiled-drawing/scrolling/scroll-snap/resources/mainframe-scroll-snap-test.js:62
&gt; +function shortScrollShouldSnapBack(targetElement, direction) {

Brace on new line.

&gt; LayoutTests/tiled-drawing/scrolling/scroll-snap/resources/mainframe-scroll-snap-test.js:70
&gt; +function scrollGlideShouldScrollTo(targetElement, direction, expectedValue) {

Brace on new line.

&gt; LayoutTests/tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-mainframe-horizontal-legacy.html:36
&gt; +            delay(0)
&gt; +                .then(() =&gt; scrollGlideShouldScrollTo(document.scrollingElement, HORIZONTAL, &quot;window.innerWidth&quot;))
&gt; +                .then(() =&gt; delay(0))
&gt; +                .then(() =&gt; shortScrollShouldSnapBack(document.scrollingElement, HORIZONTAL))
&gt; +                .finally(finishJSTest);

I much prefer async/await</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706422</commentid>
    <comment_count>3</comment_count>
      <attachid>413809</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2020-11-11 04:20:55 -0800</bug_when>
    <thetext>Created attachment 413809
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706423</commentid>
    <comment_count>4</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2020-11-11 04:27:25 -0800</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #2)
&gt; Comment on attachment 413707 [details]

Thanks for the review.

&gt; &gt; LayoutTests/tiled-drawing/scrolling/scroll-snap/resources/mainframe-scroll-snap-test.js:41
&gt; &gt; +    var startPosX = targetElement.offsetLeft + 20;
&gt; &gt; +    var startPosY = targetElement.offsetTop + 20;
&gt; 
&gt; This isn&apos;t going to work for something in side positioned elements. You need
&gt; getBoundingClientRect().

Okay. I&apos;ve updated the code to use getBoundingClientRect(), but not when dealing with the root element. The offsets for that element are affected by the root scroll offset.

&gt; &gt; LayoutTests/tiled-drawing/scrolling/scroll-snap/resources/mainframe-scroll-snap-test.js:60
&gt; &gt; +function delay(time) {
&gt; &gt; +    return new Promise(resolve =&gt; setTimeout(resolve, time));
&gt; &gt; +}
&gt; 
&gt; This is the same as UIHelper.delayFor()

I&apos;ve replaced all the calls to `delay` with a call to `UIHelper.delayFor()`.

&gt; &gt; LayoutTests/tiled-drawing/scrolling/scroll-snap/resources/mainframe-scroll-snap-test.js:62
&gt; &gt; +function shortScrollShouldSnapBack(targetElement, direction) {
&gt; 
&gt; Brace on new line.

Fixed.

&gt; &gt; LayoutTests/tiled-drawing/scrolling/scroll-snap/resources/mainframe-scroll-snap-test.js:70
&gt; &gt; +function scrollGlideShouldScrollTo(targetElement, direction, expectedValue) {
&gt; 
&gt; Brace on new line.

Fixed.
 
&gt; &gt; LayoutTests/tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-mainframe-horizontal-legacy.html:36
&gt; &gt; +            delay(0)
&gt; &gt; +                .then(() =&gt; scrollGlideShouldScrollTo(document.scrollingElement, HORIZONTAL, &quot;window.innerWidth&quot;))
&gt; &gt; +                .then(() =&gt; delay(0))
&gt; &gt; +                .then(() =&gt; shortScrollShouldSnapBack(document.scrollingElement, HORIZONTAL))
&gt; &gt; +                .finally(finishJSTest);
&gt; 
&gt; I much prefer async/await

I&apos;ve modified the code to use async and wait everywhere.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706475</commentid>
    <comment_count>5</comment_count>
      <attachid>413809</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-11-11 09:08:37 -0800</bug_when>
    <thetext>Comment on attachment 413809
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=413809&amp;action=review

&gt; LayoutTests/tiled-drawing/scrolling/scroll-snap/resources/mainframe-scroll-snap-test.js:69
&gt; +    return new Promise((resolve, reject) =&gt; {
&gt; +        eventSender.callAfterScrollingCompletes(resolve);
&gt; +    })

UIHelper.waitForScrollCompletion()?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706816</commentid>
    <comment_count>6</comment_count>
      <attachid>413924</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2020-11-12 03:36:07 -0800</bug_when>
    <thetext>Created attachment 413924
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706817</commentid>
    <comment_count>7</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2020-11-12 03:38:00 -0800</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #5)
&gt; Comment on attachment 413809 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=413809&amp;action=review
&gt; 
&gt; &gt; LayoutTests/tiled-drawing/scrolling/scroll-snap/resources/mainframe-scroll-snap-test.js:69
&gt; &gt; +    return new Promise((resolve, reject) =&gt; {
&gt; &gt; +        eventSender.callAfterScrollingCompletes(resolve);
&gt; &gt; +    })
&gt; 
&gt; UIHelper.waitForScrollCompletion()?

Oh. Nice catch. I&apos;ve started using this here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706821</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-11-12 04:18:33 -0800</bug_when>
    <thetext>Committed r269730: &lt;https://trac.webkit.org/changeset/269730&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 413924.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706822</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-11-12 04:19:21 -0800</bug_when>
    <thetext>&lt;rdar://problem/71322154&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413707</attachid>
            <date>2020-11-10 09:32:12 -0800</date>
            <delta_ts>2020-11-11 04:20:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218757-20201110183208.patch</filename>
            <type>text/plain</type>
            <size>54418</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5NjI4CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNDdjNWY5NWVhZjI4Mzg1NjhiYjBi
NDk2MDU4OGZiYjEzZDU4ZTU3My4uNjc3ZjE5MzhjMWU2ZmE2Nzk2ZWY0OWRmN2JkOWY2M2U4YjQ3
Y2E5MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIwLTExLTEwICBNYXJ0aW4gUm9iaW5zb24g
IDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAgICBTaW1wbGlmeSBtYWluZnJhbWUgdGVz
dHMgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODc1NworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvcmVzb3VyY2VzL21haW5mcmFtZS1zY3JvbGwtc25hcC10ZXN0LmpzOiBBZGRl
ZC4gQWxsb3dzCisgICAgICAgIHNoYXJpbmcgdGhlIG1haW5mcmFtZSBzY3JvbGwgdGVzdGluZyBj
b2RlIGJldHdlZW4gdGVzdHMgYW5kIHJlaW1wbGVtZW50cyB0aGVtIHdpdGggUHJvbWlzZXMuCisg
ICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
bWFuZGF0b3J5LW1haW5mcmFtZS1ob3Jpem9udGFsLWxlZ2FjeS5odG1sOgorICAgICAgICAqIHRp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1t
YWluZnJhbWUtaG9yaXpvbnRhbC13aXRoLW1hcmdpbi5odG1sOgorICAgICAgICAqIHRpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1tYWluZnJh
bWUtaG9yaXpvbnRhbC5odG1sOgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1tYWluZnJhbWUtc2xvdy1ob3Jpem9udGFs
Lmh0bWw6CisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtbWFuZGF0b3J5LW1haW5mcmFtZS1zbG93LXZlcnRpY2FsLmh0bWw6CisgICAgICAg
ICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0
b3J5LW1haW5mcmFtZS12ZXJ0aWNhbC1sZWdhY3kuaHRtbDoKKyAgICAgICAgKiB0aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnktbWFpbmZyYW1l
LXZlcnRpY2FsLXRoZW4taG9yaXpvbnRhbC5odG1sOgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1tYWluZnJhbWUtdmVy
dGljYWwtd2l0aC1tYXJnaW4uaHRtbDoKKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnktbWFpbmZyYW1lLXZlcnRpY2FsLmh0
bWw6CisKIDIwMjAtMTEtMTAgIENhcmxvcyBBbGJlcnRvIExvcGV6IFBlcmV6ICA8Y2xvcGV6QGln
YWxpYS5jb20+CiAKICAgICAgICAgW0dUS11bV1BFXSBSZWJhc2VsaW5lIHRlc3RzIGFmdGVyIHIy
Njk1MTAsIHIyNjk1OTgsIHIyNjk2MDAgYW5kIHIyNjk2MTIuCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9yZXNvdXJjZXMvbWFpbmZy
YW1lLXNjcm9sbC1zbmFwLXRlc3QuanMgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9yZXNvdXJjZXMvbWFpbmZyYW1lLXNjcm9sbC1zbmFwLXRlc3QuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYWIxMTlmNmNjYWM2M2Q0ZmNkZDRkODIzODBhMDQ2YTc2NTMwZWExOQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Jlc291cmNlcy9tYWluZnJhbWUtc2Nyb2xsLXNuYXAtdGVzdC5qcwpAQCAtMCwwICsx
LDc1IEBACitjb25zdCBWRVJUSUNBTCA9IFswLCAxXTsKK2NvbnN0IEhPUklaT05UQUwgPSBbMSwg
MF07Citjb25zdCBWRVJUSUNBTF9BTkRfSE9SSVpPTlRBTCA9IFsxLCAxXTsKKworZnVuY3Rpb24g
ZG9TY3JvbGxHbGlkZSh0YXJnZXRFbGVtZW50LCBkaXJlY3Rpb24pCit7CisgICAgLy8gVGhlc2Ug
YXJyYXlzIGFyZSBhcmd1bWVudHMgdGhhdCB3aWxsIGJlIHBhc3NlZCB0byBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMuCisgICAgLy8gRGVwZW5kaW5n
IG9uIHdoZXRoZXIgb3Igbm90IHRoZSBkaXJlY3Rpb24gaXMgdmVydGljYWwgb3IgaG9yaXpvbnRh
bCBvbmUgb2YgdGhlIGZpcnN0IHR3byBlbGVtZW50cworICAgIC8vIG9mIGVhY2ggZW50cnkgd2ls
bCBiZSB6ZXJvZWQgb3V0LCBzbyB0aGF0IGV2ZW50U2VuZGVyIG9ubHkgc2Nyb2xscyBpbiBvbmUg
ZGlyZWN0aW9uIGF0IGEgdGltZS4KKyAgICBsZXQgc2Nyb2xsTW90aW9ucyA9IFsKKyAgICAgICAg
Wy0xLCAtMSwgJ2JlZ2FuJywgJ25vbmUnXSwKKyAgICAgICAgWy0xLCAtMSwgJ2NoYW5nZWQnLCAn
bm9uZSddLAorICAgICAgICBbLTEsIC0xLCAnY2hhbmdlZCcsICdub25lJ10sCisgICAgICAgIFst
MSwgLTEsICdjaGFuZ2VkJywgJ25vbmUnXSwKKyAgICAgICAgWzAsIDAsICdlbmRlZCcsICdub25l
J10sCisgICAgICAgIFstMSwgLTEsICdub25lJywgJ2JlZ2luJ10sCisgICAgICAgIFstMSwgLTEs
ICdub25lJywgJ2NvbnRpbnVlJ10sCisgICAgICAgIFswLCAwLCAnbm9uZScsICdlbmQnXSwKKyAg
ICBdOworCisgICAgcmV0dXJuIGRvU2Nyb2xsVGVzdCh0YXJnZXRFbGVtZW50LCBkaXJlY3Rpb24s
IHNjcm9sbE1vdGlvbnMpOworfQorCitmdW5jdGlvbiBkb1Njcm9sbFNuYXAodGFyZ2V0RWxlbWVu
dCwgZGlyZWN0aW9uKQoreworICAgIC8vIFRoZXNlIGFycmF5cyBhcmUgYXJndW1lbnRzIHRoYXQg
d2lsbCBiZSBwYXNzZWQgdG8gZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzLgorICAgIC8vIERlcGVuZGluZyBvbiB3aGV0aGVyIG9yIG5vdCB0aGUgZGly
ZWN0aW9uIGlzIHZlcnRpY2FsIG9yIGhvcml6b250YWwgb25lIG9mIHRoZSBmaXJzdCB0d28gZWxl
bWVudHMKKyAgICAvLyBvZiBlYWNoIGVudHJ5IHdpbGwgYmUgemVyb2VkIG91dCwgc28gdGhhdCBl
dmVudFNlbmRlciBvbmx5IHNjcm9sbHMgaW4gb25lIGRpcmVjdGlvbiBhdCBhIHRpbWUuCisgICAg
bGV0IHNjcm9sbE1vdGlvbnMgPSBbCisgICAgICAgIFstMSwgMCwgJ2JlZ2FuJywgJ25vbmUnXSwK
KyAgICAgICAgWy0xLCAwLCAnY2hhbmdlZCcsICdub25lJ10sCisgICAgICAgIFstMSwgMCwgJ2No
YW5nZWQnLCAnbm9uZSddLAorICAgICAgICBbMCwgMCwgJ2VuZGVkJywgJ25vbmUnXSwKKyAgICBd
OworICAgIHJldHVybiBkb1Njcm9sbFRlc3QodGFyZ2V0RWxlbWVudCwgZGlyZWN0aW9uLCBzY3Jv
bGxNb3Rpb25zKTsKK30KKworZnVuY3Rpb24gZG9TY3JvbGxUZXN0KHRhcmdldEVsZW1lbnQsIGRp
cmVjdGlvbiwgc2Nyb2xsTW90aW9ucykKK3sKKyAgICB2YXIgc3RhcnRQb3NYID0gdGFyZ2V0RWxl
bWVudC5vZmZzZXRMZWZ0ICsgMjA7CisgICAgdmFyIHN0YXJ0UG9zWSA9IHRhcmdldEVsZW1lbnQu
b2Zmc2V0VG9wICsgMjA7CisKKyAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsK
KyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1h
a2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKworICAgIC8vIGBkaXJlY3Rp
b25gIGlzIGEgdHdvLWVsZW1lbnQgYXJyYXkgd2l0aCBhIG9uZSBpbiB0aGUgYXBwcm9wcmlhdGUg
ZGlyZWN0aW9uLgorICAgIHNjcm9sbE1vdGlvbnMuZm9yRWFjaCgoY2FsbEFyZ3VtZW50cykgPT4g
eworICAgICAgICBjYWxsQXJndW1lbnRzWzBdICo9IGRpcmVjdGlvblswXTsKKyAgICAgICAgY2Fs
bEFyZ3VtZW50c1sxXSAqPSBkaXJlY3Rpb25bMV07CisgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyguLi5jYWxsQXJndW1lbnRzKTsKKyAg
ICB9KTsKKworICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7Cisg
ICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhyZXNvbHZlKTsK
KyAgICB9KQorfQorCitmdW5jdGlvbiBkZWxheSh0aW1lKSB7CisgICAgcmV0dXJuIG5ldyBQcm9t
aXNlKHJlc29sdmUgPT4gc2V0VGltZW91dChyZXNvbHZlLCB0aW1lKSk7Cit9CisKK2Z1bmN0aW9u
IHNob3J0U2Nyb2xsU2hvdWxkU25hcEJhY2sodGFyZ2V0RWxlbWVudCwgZGlyZWN0aW9uKSB7Cisg
ICAgdmFyIHNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IHRhcmdldEVsZW1lbnQuc2Nyb2xsTGVm
dDsKKyAgICByZXR1cm4gZG9TY3JvbGxTbmFwKHRhcmdldEVsZW1lbnQsIEhPUklaT05UQUwpLnRo
ZW4oKCkgPT4geworICAgICAgICAvLyBUaGUgdGFyZ2V0RWxlbWVudCBzaG91bGQgaGF2ZSByZW1h
aW5lZCBvbiB0aGUgc2FtZSBzbmFwIHBvaW50LgorICAgICAgICBleHBlY3RUcnVlKCJ0YXJnZXRF
bGVtZW50LnNjcm9sbExlZnQgPT0gc2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwIiwgImRpdiBob25v
cmVkIHNuYXAgcG9pbnRzLiIpOworICAgIH0pOworfQorCitmdW5jdGlvbiBzY3JvbGxHbGlkZVNo
b3VsZFNjcm9sbFRvKHRhcmdldEVsZW1lbnQsIGRpcmVjdGlvbiwgZXhwZWN0ZWRWYWx1ZSkgewor
ICAgIHJldHVybiBkb1Njcm9sbEdsaWRlKHRhcmdldEVsZW1lbnQsIEhPUklaT05UQUwpLnRoZW4o
KCkgPT4geworICAgICAgICAvLyBUaGUgdGFyZ2V0RWxlbWVudCBzaG91bGQgaGF2ZSBzbmFwcGVk
IHRvIHRoZSBnaXZlbiBzbmFwIHBvc2l0aW9uLgorICAgICAgICBleHBlY3RUcnVlKCJ0YXJnZXRF
bGVtZW50LnNjcm9sbExlZnQgPT0gIiArIGV4cGVjdGVkVmFsdWUsICJkaXYgc2Nyb2xsZWQgdG8g
bmV4dCB3aW5kb3cuIik7CisgICAgfSk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnktbWFp
bmZyYW1lLWhvcml6b250YWwtbGVnYWN5Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnktbWFpbmZyYW1lLWhv
cml6b250YWwtbGVnYWN5Lmh0bWwKaW5kZXggM2Q0MGFmZjgwZjBkNDk0MjMwZmRlMDE0ZDAzYWYy
MmEyNzg1NTkwMC4uM2EwZDAyNThhMTVlZjVlZTZiNTJiYzVlZTY4N2EzOTFmMDhmMGNkNyAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtbWFuZGF0b3J5LW1haW5mcmFtZS1ob3Jpem9udGFsLWxlZ2FjeS5odG1sCisr
KyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLW1hbmRhdG9yeS1tYWluZnJhbWUtaG9yaXpvbnRhbC1sZWdhY3kuaHRtbApAQCAtMjMs
ODYgKzIzLDI5IEBACiAgICAgICAgICAgICAjaXRlbTUgeyBiYWNrZ3JvdW5kLWNvbG9yOiBmdWNo
c2lhOyB9CiAgICAgICAgIDwvc3R5bGU+CiAgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvbWFpbmZyYW1lLXNjcm9sbC1zbmFwLXRlc3QuanMiPjwvc2NyaXB0PgogICAgICAgICA8
c2NyaXB0PgogICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CiAKLSAgICAgICAg
dmFyIHRhcmdldFNjcm9sbGVyOwotICAgICAgICB2YXIgc2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlk
ZTsKLSAgICAgICAgdmFyIHNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKLQotICAgICAgICBmdW5j
dGlvbiBjaGVja0ZvclNjcm9sbFNuYXAoKQotICAgICAgICB7Ci0gICAgICAgICAgICAvLyBUaGUg
ZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KLSAg
ICAgICAgICAgIGlmICh0YXJnZXRTY3JvbGxlci5zY3JvbGxMZWZ0ICE9IHNjcm9sbFBvc2l0aW9u
QmVmb3JlU25hcCkKLSAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFw
IGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uLiBFeHBlY3RlZCAiICsgc2Nyb2xsUG9zaXRpb25CZWZv
cmVTbmFwICsgIiwgYnV0IGdvdCAiICsgdGFyZ2V0U2Nyb2xsZXIuc2Nyb2xsTGVmdCk7Ci0gICAg
ICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25h
cCBwb2ludHMuIik7Ci0KLSAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgICAgICB9Ci0K
LSAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QoKQotICAgICAgICB7Ci0gICAgICAgICAg
ICBzY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSB0YXJnZXRTY3JvbGxlci5zY3JvbGxMZWZ0Owot
Ci0gICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gdGFyZ2V0U2Nyb2xsZXIub2Zmc2V0TGVmdCAr
IDIwOwotICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHRhcmdldFNjcm9sbGVyLm9mZnNldFRv
cCArIDIwOwotICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7Ci0g
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7
IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKLSAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygtMSwg
MCwgJ2JlZ2FuJywgJ25vbmUnKTsKLSAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygtMSwgMCwgJ2NoYW5nZWQnLCAnbm9uZScpOwot
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKC0xLCAwLCAnY2hhbmdlZCcsICdub25lJyk7Ci0gICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywg
J25vbmUnKTsKLSAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBs
ZXRlcyhjaGVja0ZvclNjcm9sbFNuYXApOwotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24g
Y2hlY2tGb3JTY3JvbGxHbGlkZSgpCisgICAgICAgIGZ1bmN0aW9uIHJ1blRlc3RzKCkKICAgICAg
ICAgewotICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVk
KSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgotICAgICAgICAgICAgaWYgKHRhcmdldFNjcm9sbGVy
LnNjcm9sbExlZnQgPT0gd2luZG93LmlubmVyV2lkdGgpCi0gICAgICAgICAgICAgICAgdGVzdFBh
c3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOwotICAgICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRz
LiBFeHBlY3RlZCAiICsgd2luZG93LmlubmVyV2lkdGggKyAiLCBidXQgZ290ICIgKyB0YXJnZXRT
Y3JvbGxlci5zY3JvbGxMZWZ0KTsKLQotICAgICAgICAgICAgc2V0VGltZW91dChzY3JvbGxTbmFw
VGVzdCwgMCk7Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3Qo
KQotICAgICAgICB7Ci0gICAgICAgICAgICBzY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gdGFy
Z2V0U2Nyb2xsZXIuc2Nyb2xsTGVmdDsKLQotICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHRh
cmdldFNjcm9sbGVyLm9mZnNldExlZnQgKyAyMDsKLSAgICAgICAgICAgIHZhciBzdGFydFBvc1kg
PSB0YXJnZXRTY3JvbGxlci5vZmZzZXRUb3AgKyAyMDsKLSAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vbml0b3JXaGVlbEV2ZW50cygpOwotICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3Zl
VG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lk
ZSB0aGUgaUZyYW1lCi0gICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoLTEsIDAsICdiZWdhbicsICdub25lJyk7Ci0gICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoLTEs
IDAsICdjaGFuZ2VkJywgJ25vbmUnKTsKLSAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygtMSwgMCwgJ2NoYW5nZWQnLCAnbm9uZScp
OwotICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKC0xLCAwLCAnY2hhbmdlZCcsICdub25lJyk7Ci0gICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVk
JywgJ25vbmUnKTsKLSAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcygtMSwgMCwgJ25vbmUnLCAnYmVnaW4nKTsKLSAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygtMSwg
MCwgJ25vbmUnLCAnY29udGludWUnKTsKLSAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKLSAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhjaGVja0Zv
clNjcm9sbEdsaWRlKTsKKyAgICAgICAgICAgIGRlbGF5KDApCisgICAgICAgICAgICAgICAgLnRo
ZW4oKCkgPT4gc2Nyb2xsR2xpZGVTaG91bGRTY3JvbGxUbyhkb2N1bWVudC5zY3JvbGxpbmdFbGVt
ZW50LCBIT1JJWk9OVEFMLCAid2luZG93LmlubmVyV2lkdGgiKSkKKyAgICAgICAgICAgICAgICAu
dGhlbigoKSA9PiBkZWxheSgwKSkKKyAgICAgICAgICAgICAgICAudGhlbigoKSA9PiBzaG9ydFNj
cm9sbFNob3VsZFNuYXBCYWNrKGRvY3VtZW50LnNjcm9sbGluZ0VsZW1lbnQsIEhPUklaT05UQUwp
KQorICAgICAgICAgICAgICAgIC5maW5hbGx5KGZpbmlzaEpTVGVzdCk7CiAgICAgICAgIH0KIAog
ICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQogICAgICAgICB7Ci0gICAgICAgICAgICB0YXJnZXRT
Y3JvbGxlciA9IGRvY3VtZW50LnNjcm9sbGluZ0VsZW1lbnQ7CiAgICAgICAgICAgICBpZiAod2lu
ZG93LmV2ZW50U2VuZGVyKSB7CiAgICAgICAgICAgICAgICAgaW50ZXJuYWxzLnNldFBsYXRmb3Jt
TW9tZW50dW1TY3JvbGxpbmdQcmVkaWN0aW9uRW5hYmxlZChmYWxzZSk7Ci0gICAgICAgICAgICAg
ICAgc2V0VGltZW91dChzY3JvbGxHbGlkZVRlc3QsIDApOworICAgICAgICAgICAgICAgIHJ1blRl
c3RzKCk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIHZhciBtZXNzYWdl
TG9jYXRpb24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaXRlbTAnKTsKICAgICAgICAgICAg
ICAgICB2YXIgbWVzc2FnZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwotICAgICAg
ICAgICAgICAgIG1lc3NhZ2UuaW5uZXJIVE1MID0gIjxwPlRoaXMgdGVzdCBpcyBiZXR0ZXIgcnVu
IHVuZGVyIER1bXBSZW5kZXJUcmVlLiBUbyBtYW51YWxseSB0ZXN0IGl0LCBwbGFjZSB0aGUgbW91
c2UgcG9pbnRlcjxici8+IgotICAgICAgICAgICAgICAgICAgICArICJpbnNpZGUgdGhlIHJlZCBy
ZWdpb24gYXQgdGhlIHRvcCBvZiB0aGUgcGFnZSwgYW5kIHRoZW4gdXNlIHRoZSBtb3VzZSB3aGVl
bCBvciBhIHR3by1maW5nZXIgc3dpcGUgdG8gbWFrZSBhPGJyLz4iCi0gICAgICAgICAgICAgICAg
ICAgICsgInNtYWxsIHN3aXBlIGdlc3R1cmUgd2l0aCBzb21lIG1vbWVudHVtLjxici8+PGJyLz4i
Ci0gICAgICAgICAgICAgICAgICAgICsgIlRoZSByZWdpb24gc2hvdWxkIHNjcm9sbCB0byBzaG93
IGEgZ3JlZW4gcmVnaW9uLjxici8+PGJyLz4iCi0gICAgICAgICAgICAgICAgICAgICsgIk5leHQs
IHBlcmZvcm0gYSBzbWFsbCBzY3JvbGwgZ2VzdHVyZSB0aGF0IGRvZXMgbm90IGludm9sdmUgbW9t
ZW50dW0uIFlvdSBzaG91bGQgYmVnaW4gdG8gc2VlIG9uZSBvZiB0aGUgY29sb3JzPGJyLz4iCi0g
ICAgICAgICAgICAgICAgICAgICsgInRvIHRoZSBsZWZ0IChvciByaWdodCkgb2YgdGhlIGN1cnJl
bnQgZ3JlZW4gYm94LiBXaGVuIHlvdSByZWxlYXNlIHRoZSB3aGVlbCwgdGhlIHJlZ2lvbiBzaG91
bGQgc2Nyb2xsIGJhY2sgc288YnIvPiIKLSAgICAgICAgICAgICAgICAgICAgKyAidGhhdCB0aGUg
cmVnaW9uIGlzIGEgc2luZ2xlIGNvbG9yLjxici8+PGJyLz4iCi0gICAgICAgICAgICAgICAgICAg
ICsgIllvdSBzaG91bGQgYWxzbyBiZSBhYmxlIHRvIHJlcGVhdCB0aGVzZSB0ZXN0IHN0ZXBzIGZv
ciB0aGUgdmVydGljYWwgcmVnaW9uIGJlbG93LjwvcD4iOworICAgICAgICAgICAgICAgIG1lc3Nh
Z2UuaW5uZXJIVE1MID0gIjxwPlRvIHJ1biB0aGlzIHRlc3QgbWFudWFsbHksIHNjcm9sbCB0aGUg
cGFnZSBob3Jpem9udGFsbHkuIFRoZSBwYWdlIHNob3VsZCAiCisgICAgICAgICAgICAgICAgICAg
ICsgInNuYXAgYmV0d2VlbiB1bmlmb3JtIGNvbG9ycyB3aGljaCBmaWxsIHRoZSB2aWV3LjxwPiI7
CiAgICAgICAgICAgICAgICAgbWVzc2FnZUxvY2F0aW9uLmFwcGVuZENoaWxkKG1lc3NhZ2UpOwog
ICAgICAgICAgICAgfQogICAgICAgICB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnktbWFpbmZy
YW1lLWhvcml6b250YWwtd2l0aC1tYXJnaW4uaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1tYWluZnJhbWUt
aG9yaXpvbnRhbC13aXRoLW1hcmdpbi5odG1sCmluZGV4IDQzOGMwMjViZmM1YmRlZjJmY2U4OGE5
ZTRjOWNkNjE4NTRlYzVmZjQuLmJmNWYxYTAxMTA3Mjk1NjkxYTJkZDJjNjhlN2NkODVkZTg1MWEy
MDEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1tYWluZnJhbWUtaG9yaXpvbnRhbC13aXRoLW1h
cmdpbi5odG1sCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1tYWluZnJhbWUtaG9yaXpvbnRhbC13aXRoLW1h
cmdpbi5odG1sCkBAIC0yOSw4MSArMjksMjkgQEAKICAgICAgICAgICAgICNpdGVtNSB7IGJhY2tn
cm91bmQtY29sb3I6IGZ1Y2hzaWE7IH0KICAgICAgICAgPC9zdHlsZT4KICAgICAgICAgPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAg
PHNjcmlwdCBzcmM9InJlc291cmNlcy9tYWluZnJhbWUtc2Nyb2xsLXNuYXAtdGVzdC5qcyI+PC9z
Y3JpcHQ+CiAgICAgICAgIDxzY3JpcHQ+CiAgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0g
dHJ1ZTsKIAotICAgICAgICB2YXIgdGFyZ2V0U2Nyb2xsZXI7Ci0gICAgICAgIHZhciBzY3JvbGxQ
b3NpdGlvbkJlZm9yZUdsaWRlOwotICAgICAgICB2YXIgc2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFw
OwotCi0gICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCgpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2
aW91cyBwb3NpdGlvbgotICAgICAgICAgICAgaWYgKHRhcmdldFNjcm9sbGVyLnNjcm9sbExlZnQg
IT0gc2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQotICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQo
ImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24uIEV4cGVjdGVkICIgKyBz
Y3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyB0YXJnZXRTY3JvbGxlci5z
Y3JvbGxMZWZ0KTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB0ZXN0UGFzc2Vk
KCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKLQotICAgICAgICAgICAgZmluaXNoSlNUZXN0
KCk7Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCgpCisgICAg
ICAgIGZ1bmN0aW9uIHJ1blRlc3RzKCkKICAgICAgICAgewotICAgICAgICAgICAgc2Nyb2xsUG9z
aXRpb25CZWZvcmVTbmFwID0gdGFyZ2V0U2Nyb2xsZXIuc2Nyb2xsTGVmdDsKLQotICAgICAgICAg
ICAgdmFyIHN0YXJ0UG9zWCA9IHRhcmdldFNjcm9sbGVyLm9mZnNldExlZnQgKyAyMDsKLSAgICAg
ICAgICAgIHZhciBzdGFydFBvc1kgPSB0YXJnZXRTY3JvbGxlci5vZmZzZXRUb3AgKyAyMDsKLSAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOwotICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1
cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCi0gICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoLTEsIDAsICdiZWdhbics
ICdub25lJyk7Ci0gICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoLTEsIDAsICdjaGFuZ2VkJywgJ25vbmUnKTsKLSAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygtMSwg
MCwgJ2NoYW5nZWQnLCAnbm9uZScpOwotICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7Ci0g
ICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoY2hlY2tG
b3JTY3JvbGxTbmFwKTsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Ny
b2xsR2xpZGUoKQotICAgICAgICB7Ci0gICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZl
IHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQsIHdoaWNoIHNob3VsZCBi
ZSB0aGUgd2lkdGgKLSAgICAgICAgICAgIC8vIG9mIHRoZSBmaXJzdCBkaXYgcGx1cyB0aGUgcm9v
dCBlbGVtZW50J3MgbGVmdCBtYXJnaW4gKDUwIHBpeGVscykuCi0gICAgICAgICAgICBpZiAodGFy
Z2V0U2Nyb2xsZXIuc2Nyb2xsTGVmdCA9PSB3aW5kb3cuaW5uZXJXaWR0aCArIDUwKQotICAgICAg
ICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKLSAg
ICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBo
b25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIHdpbmRvdy5pbm5lcldpZHRoICsgIiwgYnV0
IGdvdCAiICsgdGFyZ2V0U2Nyb2xsZXIuc2Nyb2xsTGVmdCk7Ci0KLSAgICAgICAgICAgIHNldFRp
bWVvdXQoc2Nyb2xsU25hcFRlc3QsIDApOwotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24g
c2Nyb2xsR2xpZGVUZXN0KCkKLSAgICAgICAgewotICAgICAgICAgICAgc2Nyb2xsUG9zaXRpb25C
ZWZvcmVHbGlkZSA9IHRhcmdldFNjcm9sbGVyLnNjcm9sbExlZnQ7Ci0KLSAgICAgICAgICAgIHZh
ciBzdGFydFBvc1ggPSB0YXJnZXRTY3JvbGxlci5vZmZzZXRMZWZ0ICsgMjA7Ci0gICAgICAgICAg
ICB2YXIgc3RhcnRQb3NZID0gdGFyZ2V0U2Nyb2xsZXIub2Zmc2V0VG9wICsgMjA7Ci0gICAgICAg
ICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKLSAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdl
IGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQotICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKC0xLCAwLCAnYmVnYW4nLCAnbm9u
ZScpOwotICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKC0xLCAwLCAnY2hhbmdlZCcsICdub25lJyk7Ci0gICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoLTEsIDAsICdj
aGFuZ2VkJywgJ25vbmUnKTsKLSAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygtMSwgMCwgJ2NoYW5nZWQnLCAnbm9uZScpOwotICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7Ci0gICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoLTEsIDAsICdub25lJywgJ2JlZ2lu
Jyk7Ci0gICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoLTEsIDAsICdub25lJywgJ2NvbnRpbnVlJyk7Ci0gICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25v
bmUnLCAnZW5kJyk7Ci0gICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdD
b21wbGV0ZXMoY2hlY2tGb3JTY3JvbGxHbGlkZSk7Ci0gICAgICAgIH0KKyAgICAgICAgICAgIGRl
bGF5KDApCisgICAgICAgICAgICAgICAgLnRoZW4oKCkgPT4gc2Nyb2xsR2xpZGVTaG91bGRTY3Jv
bGxUbyhkb2N1bWVudC5zY3JvbGxpbmdFbGVtZW50LCBIT1JJWk9OVEFMLCAid2luZG93LmlubmVy
V2lkdGggKyA1MCIpKQorICAgICAgICAgICAgICAgIC50aGVuKCgpID0+IGRlbGF5KDApKQorICAg
ICAgICAgICAgICAgIC50aGVuKCgpID0+IHNob3J0U2Nyb2xsU2hvdWxkU25hcEJhY2soZG9jdW1l
bnQuc2Nyb2xsaW5nRWxlbWVudCwgSE9SSVpPTlRBTCkpCisgICAgICAgICAgICAgICAgLmZpbmFs
bHkoZmluaXNoSlNUZXN0KTsKKyAgICAgICAgfTsKIAogICAgICAgICBmdW5jdGlvbiBvbkxvYWQo
KQogICAgICAgICB7Ci0gICAgICAgICAgICB0YXJnZXRTY3JvbGxlciA9IGRvY3VtZW50LnNjcm9s
bGluZ0VsZW1lbnQ7CiAgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CiAgICAg
ICAgICAgICAgICAgaW50ZXJuYWxzLnNldFBsYXRmb3JtTW9tZW50dW1TY3JvbGxpbmdQcmVkaWN0
aW9uRW5hYmxlZChmYWxzZSk7Ci0gICAgICAgICAgICAgICAgc2V0VGltZW91dChzY3JvbGxHbGlk
ZVRlc3QsIDApOworICAgICAgICAgICAgICAgIHJ1blRlc3RzKCk7CiAgICAgICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgICAgIHZhciBtZXNzYWdlTG9jYXRpb24gPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnaXRlbTAnKTsKICAgICAgICAgICAgICAgICB2YXIgbWVzc2FnZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgICAgICAgICAgICAgIG1lc3NhZ2UuaW5uZXJI
VE1MID0gIjxwPlRvIHJ1biB0aGlzIHRlc3QgbWFudWFsbHksIHNjcm9sbCB0aGUgcGFnZSBob3Jp
em9udGFsbHkuIFRoZSBwYWdlIHNob3VsZCAiCi0gICAgICAgICAgICAgICAgICAgICsgImFsdGVy
bmF0ZSBiZXR3ZWVuIHVuaWZvcm0gY29sb3JzIHdoaWNoIGZpbGwgdGhlIHZpZXcuPHA+IjsKKyAg
ICAgICAgICAgICAgICAgICAgKyAic25hcCBiZXR3ZWVuIHVuaWZvcm0gY29sb3JzIHdoaWNoIGZp
bGwgdGhlIHZpZXcuPHA+IjsKICAgICAgICAgICAgICAgICBtZXNzYWdlTG9jYXRpb24uYXBwZW5k
Q2hpbGQobWVzc2FnZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LW1hbmRhdG9yeS1tYWluZnJhbWUtaG9yaXpvbnRhbC5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5LW1haW5m
cmFtZS1ob3Jpem9udGFsLmh0bWwKaW5kZXggNDY3ZmEzNWRiOTQzOGRlYzEwYzBjY2ZmYmZmN2Rj
YTA0N2Y0NWIxMC4uMjY1NTFlNjE1M2M3YjAzYTg5MjEyYzU1ZmI0OTFiZGQ3MDlhNTJiZCAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtbWFuZGF0b3J5LW1haW5mcmFtZS1ob3Jpem9udGFsLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
bWFuZGF0b3J5LW1haW5mcmFtZS1ob3Jpem9udGFsLmh0bWwKQEAgLTI1LDg2ICsyNSwyOSBAQAog
ICAgICAgICAgICAgI2l0ZW01IHsgYmFja2dyb3VuZC1jb2xvcjogZnVjaHNpYTsgfQogICAgICAg
ICA8L3N0eWxlPgogICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL21haW5mcmFt
ZS1zY3JvbGwtc25hcC10ZXN0LmpzIj48L3NjcmlwdD4KICAgICAgICAgPHNjcmlwdD4KICAgICAg
ICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwogCi0gICAgICAgIHZhciB0YXJnZXRTY3Jv
bGxlcjsKLSAgICAgICAgdmFyIHNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7Ci0gICAgICAgIHZh
ciBzY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7Ci0KLSAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JT
Y3JvbGxTbmFwKCkKLSAgICAgICAgewotICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2
ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCi0gICAgICAgICAgICBpZiAo
dGFyZ2V0U2Nyb2xsZXIuc2Nyb2xsTGVmdCAhPSBzY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCi0g
ICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3Bl
ciBsb2NhdGlvbi4gRXhwZWN0ZWQgIiArIHNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1
dCBnb3QgIiArIHRhcmdldFNjcm9sbGVyLnNjcm9sbExlZnQpOwotICAgICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOwot
Ci0gICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0
aW9uIHNjcm9sbFNuYXBUZXN0KCkKLSAgICAgICAgewotICAgICAgICAgICAgc2Nyb2xsUG9zaXRp
b25CZWZvcmVTbmFwID0gdGFyZ2V0U2Nyb2xsZXIuc2Nyb2xsTGVmdDsKLQotICAgICAgICAgICAg
dmFyIHN0YXJ0UG9zWCA9IHRhcmdldFNjcm9sbGVyLm9mZnNldExlZnQgKyAyMDsKLSAgICAgICAg
ICAgIHZhciBzdGFydFBvc1kgPSB0YXJnZXRTY3JvbGxlci5vZmZzZXRUb3AgKyAyMDsKLSAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOwotICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUg
d2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCi0gICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoLTEsIDAsICdiZWdhbicsICdu
b25lJyk7Ci0gICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoLTEsIDAsICdjaGFuZ2VkJywgJ25vbmUnKTsKLSAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygtMSwgMCwg
J2NoYW5nZWQnLCAnbm9uZScpOwotICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7Ci0gICAg
ICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoY2hlY2tGb3JT
Y3JvbGxTbmFwKTsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xs
R2xpZGUoKQorICAgICAgICBmdW5jdGlvbiBydW5UZXN0cygpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQg
c25hcCBwb2ludC4KLSAgICAgICAgICAgIGlmICh0YXJnZXRTY3JvbGxlci5zY3JvbGxMZWZ0ID09
IHdpbmRvdy5pbm5lcldpZHRoKQotICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3Jv
bGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAg
ICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiAr
IHdpbmRvdy5pbm5lcldpZHRoICsgIiwgYnV0IGdvdCAiICsgdGFyZ2V0U2Nyb2xsZXIuc2Nyb2xs
TGVmdCk7Ci0KLSAgICAgICAgICAgIHNldFRpbWVvdXQoc2Nyb2xsU25hcFRlc3QsIDApOwotICAg
ICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KCkKLSAgICAgICAgewot
ICAgICAgICAgICAgc2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IHRhcmdldFNjcm9sbGVyLnNj
cm9sbExlZnQ7Ci0KLSAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB0YXJnZXRTY3JvbGxlci5v
ZmZzZXRMZWZ0ICsgMjA7Ci0gICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gdGFyZ2V0U2Nyb2xs
ZXIub2Zmc2V0VG9wICsgMjA7Ci0gICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxF
dmVudHMoKTsKLSAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwg
c3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQot
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKC0xLCAwLCAnYmVnYW4nLCAnbm9uZScpOwotICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKC0xLCAwLCAnY2hhbmdlZCcs
ICdub25lJyk7Ci0gICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoLTEsIDAsICdjaGFuZ2VkJywgJ25vbmUnKTsKLSAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygtMSwg
MCwgJ2NoYW5nZWQnLCAnbm9uZScpOwotICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7Ci0g
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoLTEsIDAsICdub25lJywgJ2JlZ2luJyk7Ci0gICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoLTEsIDAsICdub25lJywgJ2Nv
bnRpbnVlJyk7Ci0gICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7Ci0gICAgICAgICAgICBldmVu
dFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoY2hlY2tGb3JTY3JvbGxHbGlkZSk7
CisgICAgICAgICAgICBkZWxheSgwKQorICAgICAgICAgICAgICAgIC50aGVuKCgpID0+IHNjcm9s
bEdsaWRlU2hvdWxkU2Nyb2xsVG8oZG9jdW1lbnQuc2Nyb2xsaW5nRWxlbWVudCwgSE9SSVpPTlRB
TCwgIndpbmRvdy5pbm5lcldpZHRoIikpCisgICAgICAgICAgICAgICAgLnRoZW4oKCkgPT4gZGVs
YXkoMCkpCisgICAgICAgICAgICAgICAgLnRoZW4oKCkgPT4gc2hvcnRTY3JvbGxTaG91bGRTbmFw
QmFjayhkb2N1bWVudC5zY3JvbGxpbmdFbGVtZW50LCBIT1JJWk9OVEFMKSkKKyAgICAgICAgICAg
ICAgICAuZmluYWxseShmaW5pc2hKU1Rlc3QpOwogICAgICAgICB9CiAKICAgICAgICAgZnVuY3Rp
b24gb25Mb2FkKCkKICAgICAgICAgewotICAgICAgICAgICAgdGFyZ2V0U2Nyb2xsZXIgPSBkb2N1
bWVudC5zY3JvbGxpbmdFbGVtZW50OwogICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRl
cikgewogICAgICAgICAgICAgICAgIGludGVybmFscy5zZXRQbGF0Zm9ybU1vbWVudHVtU2Nyb2xs
aW5nUHJlZGljdGlvbkVuYWJsZWQoZmFsc2UpOwotICAgICAgICAgICAgICAgIHNldFRpbWVvdXQo
c2Nyb2xsR2xpZGVUZXN0LCAwKTsKKyAgICAgICAgICAgICAgICBydW5UZXN0cygpOwogICAgICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICB2YXIgbWVzc2FnZUxvY2F0aW9uID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2l0ZW0wJyk7CiAgICAgICAgICAgICAgICAgdmFyIG1lc3Nh
Z2UgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKLSAgICAgICAgICAgICAgICBtZXNz
YWdlLmlubmVySFRNTCA9ICI8cD5UaGlzIHRlc3QgaXMgYmV0dGVyIHJ1biB1bmRlciBEdW1wUmVu
ZGVyVHJlZS4gVG8gbWFudWFsbHkgdGVzdCBpdCwgcGxhY2UgdGhlIG1vdXNlIHBvaW50ZXI8YnIv
PiIKLSAgICAgICAgICAgICAgICAgICAgKyAiaW5zaWRlIHRoZSByZWQgcmVnaW9uIGF0IHRoZSB0
b3Agb2YgdGhlIHBhZ2UsIGFuZCB0aGVuIHVzZSB0aGUgbW91c2Ugd2hlZWwgb3IgYSB0d28tZmlu
Z2VyIHN3aXBlIHRvIG1ha2UgYTxici8+IgotICAgICAgICAgICAgICAgICAgICArICJzbWFsbCBz
d2lwZSBnZXN0dXJlIHdpdGggc29tZSBtb21lbnR1bS48YnIvPjxici8+IgotICAgICAgICAgICAg
ICAgICAgICArICJUaGUgcmVnaW9uIHNob3VsZCBzY3JvbGwgdG8gc2hvdyBhIGdyZWVuIHJlZ2lv
bi48YnIvPjxici8+IgotICAgICAgICAgICAgICAgICAgICArICJOZXh0LCBwZXJmb3JtIGEgc21h
bGwgc2Nyb2xsIGdlc3R1cmUgdGhhdCBkb2VzIG5vdCBpbnZvbHZlIG1vbWVudHVtLiBZb3Ugc2hv
dWxkIGJlZ2luIHRvIHNlZSBvbmUgb2YgdGhlIGNvbG9yczxici8+IgotICAgICAgICAgICAgICAg
ICAgICArICJ0byB0aGUgbGVmdCAob3IgcmlnaHQpIG9mIHRoZSBjdXJyZW50IGdyZWVuIGJveC4g
V2hlbiB5b3UgcmVsZWFzZSB0aGUgd2hlZWwsIHRoZSByZWdpb24gc2hvdWxkIHNjcm9sbCBiYWNr
IHNvPGJyLz4iCi0gICAgICAgICAgICAgICAgICAgICsgInRoYXQgdGhlIHJlZ2lvbiBpcyBhIHNp
bmdsZSBjb2xvci48YnIvPjxici8+IgotICAgICAgICAgICAgICAgICAgICArICJZb3Ugc2hvdWxk
IGFsc28gYmUgYWJsZSB0byByZXBlYXQgdGhlc2UgdGVzdCBzdGVwcyBmb3IgdGhlIHZlcnRpY2Fs
IHJlZ2lvbiBiZWxvdy48L3A+IjsKKyAgICAgICAgICAgICAgICBtZXNzYWdlLmlubmVySFRNTCA9
ICI8cD5UbyBydW4gdGhpcyB0ZXN0IG1hbnVhbGx5LCBzY3JvbGwgdGhlIHBhZ2UgaG9yaXpvbnRh
bGx5LiBUaGUgcGFnZSBzaG91bGQgIgorICAgICAgICAgICAgICAgICAgICArICJzbmFwIGJldHdl
ZW4gdW5pZm9ybSBjb2xvcnMgd2hpY2ggZmlsbCB0aGUgdmlldy48cD4iOwogICAgICAgICAgICAg
ICAgIG1lc3NhZ2VMb2NhdGlvbi5hcHBlbmRDaGlsZChtZXNzYWdlKTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5LW1haW5mcmFtZS1zbG93LWhvcml6
b250YWwuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1tYWluZnJhbWUtc2xvdy1ob3Jpem9udGFsLmh0bWwK
aW5kZXggYzFjYmNjOGIwYTJjZGNkZDZkMjNiMGFiMmY4OTdhZWU3MTMxMjUyZC4uMjFiMTU5Nzhh
YjU4YTNkM2QwNjBjYWRlNmRlNzk3Y2E5YjZhMzVjNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5
LW1haW5mcmFtZS1zbG93LWhvcml6b250YWwuaHRtbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnktbWFpbmZy
YW1lLXNsb3ctaG9yaXpvbnRhbC5odG1sCkBAIC0yNSw4NSArMjUsMjkgQEAKICAgICAgICAgICAg
ICNpdGVtNSB7IGJhY2tncm91bmQtY29sb3I6IGZ1Y2hzaWE7IH0KICAgICAgICAgPC9zdHlsZT4K
ICAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3Nj
cmlwdD4KKyAgICAgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9tYWluZnJhbWUtc2Nyb2xsLXNu
YXAtdGVzdC5qcyI+PC9zY3JpcHQ+CiAgICAgICAgIDxzY3JpcHQ+CiAgICAgICAgIHdpbmRvdy5q
c1Rlc3RJc0FzeW5jID0gdHJ1ZTsKIAotICAgICAgICB2YXIgc2Nyb2xsaW5nVGFyZ2V0OwotICAg
ICAgICB2YXIgc2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKLSAgICAgICAgdmFyIHNjcm9sbFBv
c2l0aW9uQmVmb3JlU25hcDsKLQotICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAo
KSB7Ci0gICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0
aGUgcHJldmlvdXMgcG9zaXRpb24KLSAgICAgICAgICAgIGlmIChzY3JvbGxpbmdUYXJnZXQuc2Ny
b2xsTGVmdCAhPSBzY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCi0gICAgICAgICAgICAgICAgdGVz
dEZhaWxlZChgZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbi4gJHtzY3Jv
bGxpbmdUYXJnZXQuc2Nyb2xsTGVmdH0gdnMuICR7c2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwfWAp
OwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25v
cmVkIHNuYXAgcG9pbnRzLiIpOwotCi0gICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICAg
ICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KCkKKyAgICAgICAgZnVuY3Rp
b24gcnVuVGVzdHMoKQogICAgICAgICB7Ci0gICAgICAgICAgICBzY3JvbGxQb3NpdGlvbkJlZm9y
ZVNuYXAgPSBzY3JvbGxpbmdUYXJnZXQuc2Nyb2xsTGVmdDsKLQotICAgICAgICAgICAgdmFyIHN0
YXJ0UG9zWCA9IHNjcm9sbGluZ1RhcmdldC5vZmZzZXRMZWZ0ICsgMjA7Ci0gICAgICAgICAgICB2
YXIgc3RhcnRQb3NZID0gc2Nyb2xsaW5nVGFyZ2V0Lm9mZnNldFRvcCArIDIwOwotICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7Ci0gICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBh
cmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKLSAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygtMSwgMCwgJ2JlZ2FuJywgJ25vbmUn
KTsKLSAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcygtMSwgMCwgJ2NoYW5nZWQnLCAnbm9uZScpOwotICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKC0xLCAwLCAnY2hh
bmdlZCcsICdub25lJyk7Ci0gICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKLSAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhjaGVja0ZvclNjcm9s
bFNuYXApOwotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlk
ZSgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xs
ZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KLSAgICAgICAgICAgIGlmIChzY3Jv
bGxpbmdUYXJnZXQuc2Nyb2xsTGVmdCA9PSB3aW5kb3cuaW5uZXJXaWR0aCkKLSAgICAgICAgICAg
ICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7Ci0gICAgICAg
ICAgICBlbHNlCi0gICAgICAgICAgICAgICAgdGVzdEZhaWxlZChgZGl2IGRpZCBub3QgaG9ub3Ig
c25hcCBwb2ludHMuICR7c2Nyb2xsaW5nVGFyZ2V0LnNjcm9sbExlZnR9IHZzLiAke3dpbmRvdy5p
bm5lcldpZHRofWApOwotCi0gICAgICAgICAgICBzZXRUaW1lb3V0KHNjcm9sbFNuYXBUZXN0LCAw
KTsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCgpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIHNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBzY3JvbGxpbmdU
YXJnZXQuc2Nyb2xsTGVmdDsKLQotICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHNjcm9sbGlu
Z1RhcmdldC5vZmZzZXRMZWZ0ICsgMjA7Ci0gICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gc2Ny
b2xsaW5nVGFyZ2V0Lm9mZnNldFRvcCArIDIwOwotICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9u
aXRvcldoZWVsRXZlbnRzKCk7Ci0gICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhz
dGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRo
ZSBpRnJhbWUKLSAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcygtMSwgMCwgJ2JlZ2FuJywgJ25vbmUnKTsKLSAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygtMSwgMCwg
J2NoYW5nZWQnLCAnbm9uZScpOwotICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKC0xLCAwLCAnY2hhbmdlZCcsICdub25lJyk7Ci0g
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoLTEsIDAsICdjaGFuZ2VkJywgJ25vbmUnKTsKLSAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAn
bm9uZScpOwotICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKC0xLCAwLCAnbm9uZScsICdiZWdpbicpOwotICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKC00LCAwLCAn
bm9uZScsICdjb250aW51ZScpOwotICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOwotICAgICAg
ICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGNoZWNrRm9yU2Ny
b2xsR2xpZGUpOworICAgICAgICAgICAgZGVsYXkoMCkKKyAgICAgICAgICAgICAgICAudGhlbigo
KSA9PiBzY3JvbGxHbGlkZVNob3VsZFNjcm9sbFRvKGRvY3VtZW50LnNjcm9sbGluZ0VsZW1lbnQs
IEhPUklaT05UQUwsICJ3aW5kb3cuaW5uZXJXaWR0aCIpKQorICAgICAgICAgICAgICAgIC50aGVu
KCgpID0+IGRlbGF5KDApKQorICAgICAgICAgICAgICAgIC50aGVuKCgpID0+IHNob3J0U2Nyb2xs
U2hvdWxkU25hcEJhY2soZG9jdW1lbnQuc2Nyb2xsaW5nRWxlbWVudCwgSE9SSVpPTlRBTCkpCisg
ICAgICAgICAgICAgICAgLmZpbmFsbHkoZmluaXNoSlNUZXN0KTsKICAgICAgICAgfQogCiAgICAg
ICAgIGZ1bmN0aW9uIG9uTG9hZCgpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHNjcm9sbGluZ1Rh
cmdldCA9IGRvY3VtZW50LnNjcm9sbGluZ0VsZW1lbnQ7CiAgICAgICAgICAgICBpZiAod2luZG93
LmV2ZW50U2VuZGVyKSB7CiAgICAgICAgICAgICAgICAgaW50ZXJuYWxzLnNldFBsYXRmb3JtTW9t
ZW50dW1TY3JvbGxpbmdQcmVkaWN0aW9uRW5hYmxlZChmYWxzZSk7Ci0gICAgICAgICAgICAgICAg
c2V0VGltZW91dChzY3JvbGxHbGlkZVRlc3QsIDApOworICAgICAgICAgICAgICAgIHJ1blRlc3Rz
KCk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIHZhciBtZXNzYWdlTG9j
YXRpb24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaXRlbTAnKTsKICAgICAgICAgICAgICAg
ICB2YXIgbWVzc2FnZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwotICAgICAgICAg
ICAgICAgIG1lc3NhZ2UuaW5uZXJIVE1MID0gIjxwPlRoaXMgdGVzdCBpcyBiZXR0ZXIgcnVuIHVu
ZGVyIER1bXBSZW5kZXJUcmVlLiBUbyBtYW51YWxseSB0ZXN0IGl0LCBwbGFjZSB0aGUgbW91c2Ug
cG9pbnRlcjxici8+IgotICAgICAgICAgICAgICAgICAgICArICJpbnNpZGUgdGhlIHJlZCByZWdp
b24gYXQgdGhlIHRvcCBvZiB0aGUgcGFnZSwgYW5kIHRoZW4gdXNlIHRoZSBtb3VzZSB3aGVlbCBv
ciBhIHR3by1maW5nZXIgc3dpcGUgdG8gbWFrZSBhPGJyLz4iCi0gICAgICAgICAgICAgICAgICAg
ICsgInNtYWxsIHN3aXBlIGdlc3R1cmUgd2l0aCBzb21lIG1vbWVudHVtLjxici8+PGJyLz4iCi0g
ICAgICAgICAgICAgICAgICAgICsgIlRoZSByZWdpb24gc2hvdWxkIHNjcm9sbCB0byBzaG93IGEg
Z3JlZW4gcmVnaW9uLjxici8+PGJyLz4iCi0gICAgICAgICAgICAgICAgICAgICsgIk5leHQsIHBl
cmZvcm0gYSBzbWFsbCBzY3JvbGwgZ2VzdHVyZSB0aGF0IGRvZXMgbm90IGludm9sdmUgbW9tZW50
dW0uIFlvdSBzaG91bGQgYmVnaW4gdG8gc2VlIG9uZSBvZiB0aGUgY29sb3JzPGJyLz4iCi0gICAg
ICAgICAgICAgICAgICAgICsgInRvIHRoZSBsZWZ0IChvciByaWdodCkgb2YgdGhlIGN1cnJlbnQg
Z3JlZW4gYm94LiBXaGVuIHlvdSByZWxlYXNlIHRoZSB3aGVlbCwgdGhlIHJlZ2lvbiBzaG91bGQg
c2Nyb2xsIGJhY2sgc288YnIvPiIKLSAgICAgICAgICAgICAgICAgICAgKyAidGhhdCB0aGUgcmVn
aW9uIGlzIGEgc2luZ2xlIGNvbG9yLjxici8+PGJyLz4iCi0gICAgICAgICAgICAgICAgICAgICsg
IllvdSBzaG91bGQgYWxzbyBiZSBhYmxlIHRvIHJlcGVhdCB0aGVzZSB0ZXN0IHN0ZXBzIGZvciB0
aGUgdmVydGljYWwgcmVnaW9uIGJlbG93LjwvcD4iOworICAgICAgICAgICAgICAgIG1lc3NhZ2Uu
aW5uZXJIVE1MID0gIjxwPlRvIHJ1biB0aGlzIHRlc3QgbWFudWFsbHksIHNjcm9sbCB0aGUgcGFn
ZSBob3Jpem9udGFsbHkuIFRoZSBwYWdlIHNob3VsZCAiCisgICAgICAgICAgICAgICAgICAgICsg
InNuYXAgYmV0d2VlbiB1bmlmb3JtIGNvbG9ycyB3aGljaCBmaWxsIHRoZSB2aWV3LjxwPiI7CiAg
ICAgICAgICAgICAgICAgbWVzc2FnZUxvY2F0aW9uLmFwcGVuZENoaWxkKG1lc3NhZ2UpOwogICAg
ICAgICAgICAgfQogICAgICAgICB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnktbWFpbmZyYW1l
LXNsb3ctdmVydGljYWwuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1tYWluZnJhbWUtc2xvdy12ZXJ0aWNh
bC5odG1sCmluZGV4IDBlZmRiOGJmY2EyMzQ4ZmQ1MjU3NTZiMTEyZDc0NTFmOGZmNGFjZjAuLmY2
ZGQ3MjYwYmM3MmZjOTgyMDdiOGQxYTZhNjU4MzJlYTg5NTkzMzUgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1h
bmRhdG9yeS1tYWluZnJhbWUtc2xvdy12ZXJ0aWNhbC5odG1sCisrKyBiL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1t
YWluZnJhbWUtc2xvdy12ZXJ0aWNhbC5odG1sCkBAIC0yNSw4NyArMjUsMjkgQEAKICAgICAgICAg
ICAgICNpdGVtNSB7IGJhY2tncm91bmQtY29sb3I6IGZ1Y2hzaWE7IH0KICAgICAgICAgPC9zdHls
ZT4KICAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48
L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9tYWluZnJhbWUtc2Nyb2xs
LXNuYXAtdGVzdC5qcyI+PC9zY3JpcHQ+CiAgICAgICAgIDxzY3JpcHQ+CiAgICAgICAgIHdpbmRv
dy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKIAotICAgICAgICB2YXIgdGFyZ2V0U2Nyb2xsZXI7Ci0g
ICAgICAgIHZhciBzY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOwotICAgICAgICB2YXIgc2Nyb2xs
UG9zaXRpb25CZWZvcmVTbmFwOwotCi0gICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25h
cCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBl
ZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgotICAgICAgICAgICAgaWYgKHRhcmdldFNj
cm9sbGVyLnNjcm9sbFRvcCAhPSBzY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCi0gICAgICAgICAg
ICAgICAgdGVzdEZhaWxlZChgZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlv
bi4gKCR7dGFyZ2V0U2Nyb2xsZXIuc2Nyb2xsVG9wfSB2cy4gJHtzY3JvbGxQb3NpdGlvbkJlZm9y
ZVNuYXB9KWApOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQo
ImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOwotCi0gICAgICAgICAgICBmaW5pc2hKU1Rlc3Qo
KTsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KCkKLSAgICAg
ICAgewotICAgICAgICAgICAgLy8gU2VlIHdoZXJlIG91ciBkaXYgbGl2ZXM6Ci0gICAgICAgICAg
ICBzY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSB0YXJnZXRTY3JvbGxlci5zY3JvbGxUb3A7Ci0K
LSAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB0YXJnZXRTY3JvbGxlci5vZmZzZXRMZWZ0ICsg
MjA7Ci0gICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gdGFyZ2V0U2Nyb2xsZXIub2Zmc2V0VG9w
ICsgMjA7Ci0gICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKLSAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsg
Ly8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQotICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIC0x
LCAnYmVnYW4nLCAnbm9uZScpOwotICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIC0xLCAnY2hhbmdlZCcsICdub25lJyk7Ci0g
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoMCwgLTEsICdjaGFuZ2VkJywgJ25vbmUnKTsKLSAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAn
bm9uZScpOwotICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxl
dGVzKGNoZWNrRm9yU2Nyb2xsU25hcCk7Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBj
aGVja0ZvclNjcm9sbEdsaWRlKCkKKyAgICAgICAgZnVuY3Rpb24gcnVuVGVzdHMoKQogICAgICAg
ICB7Ci0gICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQp
IHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCi0gICAgICAgICAgICBpZiAodGFyZ2V0U2Nyb2xsZXIu
c2Nyb2xsVG9wID09IHdpbmRvdy5pbm5lckhlaWdodCkKLSAgICAgICAgICAgICAgICB0ZXN0UGFz
c2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7Ci0gICAgICAgICAgICBlbHNlCi0g
ICAgICAgICAgICAgICAgdGVzdEZhaWxlZChgZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMu
ICgke3RhcmdldFNjcm9sbGVyLnNjcm9sbFRvcH0gdnMuICR7d2luZG93LmlubmVySGVpZ2h0fSlg
KTsKLQotICAgICAgICAgICAgc2V0VGltZW91dChzY3JvbGxTbmFwVGVzdCwgMCk7Ci0gICAgICAg
IH0KLQotICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QoKQotICAgICAgICB7Ci0gICAg
ICAgICAgICBzY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gdGFyZ2V0U2Nyb2xsZXIuc2Nyb2xs
VG9wOwotCi0gICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gdGFyZ2V0U2Nyb2xsZXIub2Zmc2V0
TGVmdCArIDIwOwotICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHRhcmdldFNjcm9sbGVyLm9m
ZnNldFRvcCArIDIwOwotICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRz
KCk7Ci0gICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0
UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKLSAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cygwLCAtMSwgJ2JlZ2FuJywgJ25vbmUnKTsKLSAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAtMSwgJ2NoYW5nZWQnLCAnbm9u
ZScpOwotICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKDAsIC0xLCAnY2hhbmdlZCcsICdub25lJyk7Ci0gICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgLTEsICdj
aGFuZ2VkJywgJ25vbmUnKTsKLSAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOwotICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KDAsIC0xLCAnbm9uZScsICdiZWdpbicpOwotICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIC00LCAnbm9uZScsICdjb250aW51
ZScpOwotICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOwotICAgICAgICAgICAgZXZlbnRTZW5k
ZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGNoZWNrRm9yU2Nyb2xsR2xpZGUpOworICAg
ICAgICAgICAgZGVsYXkoMCkKKyAgICAgICAgICAgICAgICAudGhlbigoKSA9PiBzY3JvbGxHbGlk
ZVNob3VsZFNjcm9sbFRvKGRvY3VtZW50LnNjcm9sbGluZ0VsZW1lbnQsIFZFUlRJQ0FMLCAid2lu
ZG93LmlubmVySGVpZ2h0IikpCisgICAgICAgICAgICAgICAgLnRoZW4oKCkgPT4gZGVsYXkoMCkp
CisgICAgICAgICAgICAgICAgLnRoZW4oKCkgPT4gc2hvcnRTY3JvbGxTaG91bGRTbmFwQmFjayhk
b2N1bWVudC5zY3JvbGxpbmdFbGVtZW50LCBWRVJUSUNBTCkpCisgICAgICAgICAgICAgICAgLmZp
bmFsbHkoZmluaXNoSlNUZXN0KTsKICAgICAgICAgfQogCiAgICAgICAgIGZ1bmN0aW9uIG9uTG9h
ZCgpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHRhcmdldFNjcm9sbGVyID0gZG9jdW1lbnQuc2Ny
b2xsaW5nRWxlbWVudDsKICAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKICAg
ICAgICAgICAgICAgICBpbnRlcm5hbHMuc2V0UGxhdGZvcm1Nb21lbnR1bVNjcm9sbGluZ1ByZWRp
Y3Rpb25FbmFibGVkKGZhbHNlKTsKLSAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KHNjcm9sbEds
aWRlVGVzdCwgMCk7CisgICAgICAgICAgICAgICAgcnVuVGVzdHMoKTsKICAgICAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICAgICAgdmFyIG1lc3NhZ2VMb2NhdGlvbiA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdpdGVtMCcpOwogICAgICAgICAgICAgICAgIHZhciBtZXNzYWdlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7Ci0gICAgICAgICAgICAgICAgbWVzc2FnZS5pbm5l
ckhUTUwgPSAiPHA+VGhpcyB0ZXN0IGlzIGJldHRlciBydW4gdW5kZXIgRHVtcFJlbmRlclRyZWUu
IFRvIG1hbnVhbGx5IHRlc3QgaXQsIHBsYWNlIHRoZSBtb3VzZSBwb2ludGVyPGJyLz4iCi0gICAg
ICAgICAgICAgICAgICAgICsgImluc2lkZSB0aGUgcmVkIHJlZ2lvbiBhdCB0aGUgdG9wIG9mIHRo
ZSBwYWdlLCBhbmQgdGhlbiB1c2UgdGhlIG1vdXNlIHdoZWVsIG9yIGEgdHdvLWZpbmdlciBzd2lw
ZSB0byBtYWtlIGE8YnIvPiIKLSAgICAgICAgICAgICAgICAgICAgKyAic21hbGwgc3dpcGUgZ2Vz
dHVyZSB3aXRoIHNvbWUgbW9tZW50dW0uPGJyLz48YnIvPiIKLSAgICAgICAgICAgICAgICAgICAg
KyAiVGhlIHJlZ2lvbiBzaG91bGQgc2Nyb2xsIHRvIHNob3cgYSBncmVlbiByZWdpb24uPGJyLz48
YnIvPiIKLSAgICAgICAgICAgICAgICAgICAgKyAiTmV4dCwgcGVyZm9ybSBhIHNtYWxsIHNjcm9s
bCBnZXN0dXJlIHRoYXQgZG9lcyBub3QgaW52b2x2ZSBtb21lbnR1bS4gWW91IHNob3VsZCBiZWdp
biB0byBzZWUgb25lIG9mIHRoZSBjb2xvcnM8YnIvPiIKLSAgICAgICAgICAgICAgICAgICAgKyAi
dG8gdGhlIGxlZnQgKG9yIHJpZ2h0KSBvZiB0aGUgY3VycmVudCBncmVlbiBib3guIFdoZW4geW91
IHJlbGVhc2UgdGhlIHdoZWVsLCB0aGUgcmVnaW9uIHNob3VsZCBzY3JvbGwgYmFjayBzbzxici8+
IgotICAgICAgICAgICAgICAgICAgICArICJ0aGF0IHRoZSByZWdpb24gaXMgYSBzaW5nbGUgY29s
b3IuPGJyLz48YnIvPiIKLSAgICAgICAgICAgICAgICAgICAgKyAiWW91IHNob3VsZCBhbHNvIGJl
IGFibGUgdG8gcmVwZWF0IHRoZXNlIHRlc3Qgc3RlcHMgZm9yIHRoZSB2ZXJ0aWNhbCByZWdpb24g
YmVsb3cuPC9wPiI7CisgICAgICAgICAgICAgICAgbWVzc2FnZS5pbm5lckhUTUwgPSAiPHA+VG8g
cnVuIHRoaXMgdGVzdCBtYW51YWxseSwgc2Nyb2xsIHRoZSBwYWdlIHZlcnRpY2FsbHkuIFRoZSBw
YWdlIHNob3VsZCAiCisgICAgICAgICAgICAgICAgICAgICsgInNuYXAgYmV0d2VlbiB1bmlmb3Jt
IGNvbG9ycyB3aGljaCBmaWxsIHRoZSB2aWV3LjxwPiI7CiAgICAgICAgICAgICAgICAgbWVzc2Fn
ZUxvY2F0aW9uLmFwcGVuZENoaWxkKG1lc3NhZ2UpOwogICAgICAgICAgICAgfQogICAgICAgICB9
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnktbWFpbmZyYW1lLXZlcnRpY2FsLWxlZ2FjeS5odG1s
IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtbWFuZGF0b3J5LW1haW5mcmFtZS12ZXJ0aWNhbC1sZWdhY3kuaHRtbAppbmRleCBlNzhh
YWQ0YWU1OTQwYjI3ZWJmZWFiOTY1NzMyMTQzOWIwMTAyNDZmLi4yMGVjYTIzMmRiZmFjY2RjZDk3
MGI0ODI5ZjEzMDgyNGUxMmM5OGRiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnktbWFpbmZyYW1l
LXZlcnRpY2FsLWxlZ2FjeS5odG1sCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1tYWluZnJhbWUtdmVydGlj
YWwtbGVnYWN5Lmh0bWwKQEAgLTIzLDg2ICsyMywyOSBAQAogICAgICAgICAgICAgI2l0ZW01IHsg
YmFja2dyb3VuZC1jb2xvcjogZnVjaHNpYTsgfQogICAgICAgICA8L3N0eWxlPgogICAgICAgICA8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAg
ICAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL21haW5mcmFtZS1zY3JvbGwtc25hcC10ZXN0Lmpz
Ij48L3NjcmlwdD4KICAgICAgICAgPHNjcmlwdD4KICAgICAgICAgd2luZG93LmpzVGVzdElzQXN5
bmMgPSB0cnVlOwogCi0gICAgICAgIHZhciBzY3JvbGxpbmdUYXJnZXQ7Ci0gICAgICAgIHZhciBz
Y3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOwotICAgICAgICB2YXIgc2Nyb2xsUG9zaXRpb25CZWZv
cmVTbmFwOwotCi0gICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCgpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRo
ZSBwcmV2aW91cyBwb3NpdGlvbgotICAgICAgICAgICAgaWYgKHNjcm9sbGluZ1RhcmdldC5zY3Jv
bGxUb3AgIT0gc2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQotICAgICAgICAgICAgICAgIHRlc3RG
YWlsZWQoYGRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24uICgke3Njcm9s
bGluZ1RhcmdldC5zY3JvbGxUb3B9IHZzLiAke3Njcm9sbFBvc2l0aW9uQmVmb3JlU25hcH0pYCk7
Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9y
ZWQgc25hcCBwb2ludHMuIik7Ci0KLSAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgICAg
ICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QoKQotICAgICAgICB7Ci0gICAg
ICAgICAgICBzY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBzY3JvbGxpbmdUYXJnZXQuc2Nyb2xs
VG9wOwotCi0gICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gc2Nyb2xsaW5nVGFyZ2V0Lm9mZnNl
dExlZnQgKyAyMDsKLSAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSBzY3JvbGxpbmdUYXJnZXQu
b2Zmc2V0VG9wICsgMjA7Ci0gICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVu
dHMoKTsKLSAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3Rh
cnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQotICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKDAsIC0xLCAnYmVnYW4nLCAnbm9uZScpOwotICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIC0xLCAnY2hhbmdlZCcsICdu
b25lJyk7Ci0gICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoMCwgLTEsICdjaGFuZ2VkJywgJ25vbmUnKTsKLSAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAn
ZW5kZWQnLCAnbm9uZScpOwotICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xs
aW5nQ29tcGxldGVzKGNoZWNrRm9yU2Nyb2xsU25hcCk7Ci0gICAgICAgIH0KLQotICAgICAgICBm
dW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKCkKKyAgICAgICAgZnVuY3Rpb24gcnVuVGVzdHMo
KQogICAgICAgICB7Ci0gICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVk
IChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCi0gICAgICAgICAgICBpZiAoc2Nyb2xs
aW5nVGFyZ2V0LnNjcm9sbFRvcCA9PSB3aW5kb3cuaW5uZXJIZWlnaHQpCi0gICAgICAgICAgICAg
ICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOwotICAgICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoYGRpdiBkaWQgbm90IGhvbm9yIHNu
YXAgcG9pbnRzLiAoJHtzY3JvbGxpbmdUYXJnZXQuc2Nyb2xsVG9wfSB2cy4gJHt3aW5kb3cuaW5u
ZXJIZWlnaHR9KWApOwotCi0gICAgICAgICAgICBzZXRUaW1lb3V0KHNjcm9sbFNuYXBUZXN0LCAw
KTsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCgpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIHNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBzY3JvbGxpbmdU
YXJnZXQuc2Nyb2xsVG9wOwotCi0gICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gc2Nyb2xsaW5n
VGFyZ2V0Lm9mZnNldExlZnQgKyAyMDsKLSAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSBzY3Jv
bGxpbmdUYXJnZXQub2Zmc2V0VG9wICsgMjA7Ci0gICAgICAgICAgICBldmVudFNlbmRlci5tb25p
dG9yV2hlZWxFdmVudHMoKTsKLSAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0
YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhl
IGlGcmFtZQotICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKDAsIC0xLCAnYmVnYW4nLCAnbm9uZScpOwotICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIC0xLCAn
Y2hhbmdlZCcsICdub25lJyk7Ci0gICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgLTEsICdjaGFuZ2VkJywgJ25vbmUnKTsKLSAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcygwLCAtMSwgJ2NoYW5nZWQnLCAnbm9uZScpOwotICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdu
b25lJyk7Ci0gICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoMCwgLTEsICdub25lJywgJ2JlZ2luJyk7Ci0gICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgLTQsICdu
b25lJywgJ2NvbnRpbnVlJyk7Ci0gICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7Ci0gICAgICAg
ICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoY2hlY2tGb3JTY3Jv
bGxHbGlkZSk7CisgICAgICAgICAgICBkZWxheSgwKQorICAgICAgICAgICAgICAgIC50aGVuKCgp
ID0+IHNjcm9sbEdsaWRlU2hvdWxkU2Nyb2xsVG8oZG9jdW1lbnQuc2Nyb2xsaW5nRWxlbWVudCwg
VkVSVElDQUwsICJ3aW5kb3cuaW5uZXJIZWlnaHQiKSkKKyAgICAgICAgICAgICAgICAudGhlbigo
KSA9PiBkZWxheSgwKSkKKyAgICAgICAgICAgICAgICAudGhlbigoKSA9PiBzaG9ydFNjcm9sbFNo
b3VsZFNuYXBCYWNrKGRvY3VtZW50LnNjcm9sbGluZ0VsZW1lbnQsIFZFUlRJQ0FMKSkKKyAgICAg
ICAgICAgICAgICAuZmluYWxseShmaW5pc2hKU1Rlc3QpOwogICAgICAgICB9CiAKICAgICAgICAg
ZnVuY3Rpb24gb25Mb2FkKCkKICAgICAgICAgewotICAgICAgICAgICAgc2Nyb2xsaW5nVGFyZ2V0
ID0gZG9jdW1lbnQuc2Nyb2xsaW5nRWxlbWVudDsKICAgICAgICAgICAgIGlmICh3aW5kb3cuZXZl
bnRTZW5kZXIpIHsKICAgICAgICAgICAgICAgICBpbnRlcm5hbHMuc2V0UGxhdGZvcm1Nb21lbnR1
bVNjcm9sbGluZ1ByZWRpY3Rpb25FbmFibGVkKGZhbHNlKTsKLSAgICAgICAgICAgICAgICBzZXRU
aW1lb3V0KHNjcm9sbEdsaWRlVGVzdCwgMCk7CisgICAgICAgICAgICAgICAgcnVuVGVzdHMoKTsK
ICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgdmFyIG1lc3NhZ2VMb2NhdGlv
biA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpdGVtMCcpOwogICAgICAgICAgICAgICAgIHZh
ciBtZXNzYWdlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7Ci0gICAgICAgICAgICAg
ICAgbWVzc2FnZS5pbm5lckhUTUwgPSAiPHA+VGhpcyB0ZXN0IGlzIGJldHRlciBydW4gdW5kZXIg
RHVtcFJlbmRlclRyZWUuIFRvIG1hbnVhbGx5IHRlc3QgaXQsIHBsYWNlIHRoZSBtb3VzZSBwb2lu
dGVyPGJyLz4iCi0gICAgICAgICAgICAgICAgICAgICsgImluc2lkZSB0aGUgcmVkIHJlZ2lvbiBh
dCB0aGUgdG9wIG9mIHRoZSBwYWdlLCBhbmQgdGhlbiB1c2UgdGhlIG1vdXNlIHdoZWVsIG9yIGEg
dHdvLWZpbmdlciBzd2lwZSB0byBtYWtlIGE8YnIvPiIKLSAgICAgICAgICAgICAgICAgICAgKyAi
c21hbGwgc3dpcGUgZ2VzdHVyZSB3aXRoIHNvbWUgbW9tZW50dW0uPGJyLz48YnIvPiIKLSAgICAg
ICAgICAgICAgICAgICAgKyAiVGhlIHJlZ2lvbiBzaG91bGQgc2Nyb2xsIHRvIHNob3cgYSBncmVl
biByZWdpb24uPGJyLz48YnIvPiIKLSAgICAgICAgICAgICAgICAgICAgKyAiTmV4dCwgcGVyZm9y
bSBhIHNtYWxsIHNjcm9sbCBnZXN0dXJlIHRoYXQgZG9lcyBub3QgaW52b2x2ZSBtb21lbnR1bS4g
WW91IHNob3VsZCBiZWdpbiB0byBzZWUgb25lIG9mIHRoZSBjb2xvcnM8YnIvPiIKLSAgICAgICAg
ICAgICAgICAgICAgKyAidG8gdGhlIGxlZnQgKG9yIHJpZ2h0KSBvZiB0aGUgY3VycmVudCBncmVl
biBib3guIFdoZW4geW91IHJlbGVhc2UgdGhlIHdoZWVsLCB0aGUgcmVnaW9uIHNob3VsZCBzY3Jv
bGwgYmFjayBzbzxici8+IgotICAgICAgICAgICAgICAgICAgICArICJ0aGF0IHRoZSByZWdpb24g
aXMgYSBzaW5nbGUgY29sb3IuPGJyLz48YnIvPiIKLSAgICAgICAgICAgICAgICAgICAgKyAiWW91
IHNob3VsZCBhbHNvIGJlIGFibGUgdG8gcmVwZWF0IHRoZXNlIHRlc3Qgc3RlcHMgZm9yIHRoZSB2
ZXJ0aWNhbCByZWdpb24gYmVsb3cuPC9wPiI7CisgICAgICAgICAgICAgICAgbWVzc2FnZS5pbm5l
ckhUTUwgPSAiPHA+VG8gcnVuIHRoaXMgdGVzdCBtYW51YWxseSwgc2Nyb2xsIHRoZSBwYWdlIHZl
cnRpY2FsbHkuIFRoZSBwYWdlIHNob3VsZCAiCisgICAgICAgICAgICAgICAgICAgICsgInNuYXAg
YmV0d2VlbiB1bmlmb3JtIGNvbG9ycyB3aGljaCBmaWxsIHRoZSB2aWV3LjxwPiI7CiAgICAgICAg
ICAgICAgICAgbWVzc2FnZUxvY2F0aW9uLmFwcGVuZENoaWxkKG1lc3NhZ2UpOwogICAgICAgICAg
ICAgfQogICAgICAgICB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnktbWFpbmZyYW1lLXZlcnRp
Y2FsLXRoZW4taG9yaXpvbnRhbC5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5LW1haW5mcmFtZS12ZXJ0aWNh
bC10aGVuLWhvcml6b250YWwuaHRtbAppbmRleCBkOGQwZWZhZTQzNzcxZjMwNmM0MjRjZmZmZDRi
MmQ3MmNhZWE0OTc3Li5kYzI1MThjMGIyN2ZhZjhmMDVlNTRkNTQyMGMwMDM4MTc0YWU4ZmU0IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1tYW5kYXRvcnktbWFpbmZyYW1lLXZlcnRpY2FsLXRoZW4taG9yaXpvbnRh
bC5odG1sCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1tYWluZnJhbWUtdmVydGljYWwtdGhlbi1ob3Jpem9u
dGFsLmh0bWwKQEAgLTI1LDM5ICsyNSw0MSBAQAogICAgICAgICAgICAgI2l0ZW01IHsgYmFja2dy
b3VuZC1jb2xvcjogZnVjaHNpYTsgfQogICAgICAgICA8L3N0eWxlPgogICAgICAgICA8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL21haW5mcmFtZS1zY3JvbGwtc25hcC10ZXN0LmpzIj48L3Nj
cmlwdD4KICAgICAgICAgPHNjcmlwdD4KICAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0
cnVlOwogCi0gICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KCkKKyAgICAgICAgZnVuY3Rp
b24gcnVuVGVzdCgpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSBkb2N1
bWVudC5ib2R5Lm9mZnNldExlZnQgKyAyMDsKLSAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSBk
b2N1bWVudC5ib2R5Lm9mZnNldFRvcCArIDIwOwotICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9u
aXRvcldoZWVsRXZlbnRzKCk7Ci0gICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhz
dGFydFBvc1gsIHN0YXJ0UG9zWSk7Ci0gICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgLTEsICdiZWdhbicsICdub25lJyk7Ci0g
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoMCwgLTEsICdjaGFuZ2VkJywgJ25vbmUnKTsKLSAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygtMSwgMCwgJ2NoYW5nZWQn
LCAnbm9uZScpOwotICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKC0xLCAwLCAnY2hhbmdlZCcsICdub25lJyk7Ci0gICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoLTEs
IDAsICdjaGFuZ2VkJywgJ25vbmUnKTsKLSAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOwot
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKC0xLCAwLCAnbm9uZScsICdiZWdpbicpOwotICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKC00LCAwLCAnbm9uZScsICdj
b250aW51ZScpOwotICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOwotICAgICAgICAgICAgZXZl
bnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKCgpID0+IHsKLSAgICAgICAgICAg
ICAgICBpZiAoZG9jdW1lbnQuc2Nyb2xsaW5nRWxlbWVudC5zY3JvbGxUb3AgPT0gMCkKLSAgICAg
ICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgic2Nyb2xsIG9mZnNldCBzbmFwcGVkIGJhY2sgdG8g
dG9wLiIpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgdGVzdEZh
aWxlZChgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cyAoZXhwZWN0ZWQgMCwgb2JzZXJ2ZWQgJHtk
b2N1bWVudC5zY3JvbGxpbmdFbGVtZW50LnNjcm9sbFRvcH0pLmApOworICAgICAgICAgICAgLy8g
VGhlc2UgYXJyYXlzIGFyZSBhcmd1bWVudHMgdGhhdCB3aWxsIGJlIHBhc3NlZCB0byBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMuCisgICAgICAgICAg
ICBsZXQgc2Nyb2xsTW90aW9ucyA9IFsKKyAgICAgICAgICAgICAgICBbMCwgLTEsICdiZWdhbics
ICdub25lJ10sCisgICAgICAgICAgICAgICAgWzAsIC0xLCAnY2hhbmdlZCcsICdub25lJ10sCisg
ICAgICAgICAgICAgICAgWy0xLCAwLCAnY2hhbmdlZCcsICdub25lJ10sCisgICAgICAgICAgICAg
ICAgWy0xLCAwLCAnY2hhbmdlZCcsICdub25lJ10sCisgICAgICAgICAgICAgICAgWy0xLCAwLCAn
Y2hhbmdlZCcsICdub25lJ10sCisgICAgICAgICAgICAgICAgWzAsIDAsICdlbmRlZCcsICdub25l
J10sCisgICAgICAgICAgICAgICAgWy0xLCAwLCAnbm9uZScsICdiZWdpbiddLAorICAgICAgICAg
ICAgICAgIFstNCwgMCwgJ25vbmUnLCAnY29udGludWUnXSwKKyAgICAgICAgICAgICAgICBbMCwg
MCwgJ25vbmUnLCAnZW5kJ10sCisgICAgICAgICAgICBdOwogCi0gICAgICAgICAgICAgICAgZmlu
aXNoSlNUZXN0KCk7Ci0gICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIGRlbGF5KDApCisgICAg
ICAgICAgICAgICAgLnRoZW4oKCkgPT4gZG9TY3JvbGxUZXN0KHRhcmdldEVsZW1lbnQsIFZFUlRJ
Q0FMX0FORF9IT1JJWk9OVEFMLCBzY3JvbGxNb3Rpb25zKSkKKyAgICAgICAgICAgICAgICAuZmlu
YWxseSgoKSA9PiB7CisgICAgICAgICAgICAgICAgICAgIGlmIChkb2N1bWVudC5zY3JvbGxpbmdF
bGVtZW50LnNjcm9sbFRvcCA9PSAwKQorICAgICAgICAgICAgICAgICAgICAgICAgdGVzdFBhc3Nl
ZCgic2Nyb2xsIG9mZnNldCBzbmFwcGVkIGJhY2sgdG8gdG9wLiIpOworICAgICAgICAgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKGBkaWQgbm90IGhv
bm9yIHNuYXAgcG9pbnRzIChleHBlY3RlZCAwLCBvYnNlcnZlZCAke2RvY3VtZW50LnNjcm9sbGlu
Z0VsZW1lbnQuc2Nyb2xsVG9wfSkuYCk7CisgICAgICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVz
dCgpOworICAgICAgICAgICAgICAgIH0pCiAgICAgICAgIH0KIAogICAgICAgICBmdW5jdGlvbiBv
bkxvYWQoKQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7
CiAgICAgICAgICAgICAgICAgaW50ZXJuYWxzLnNldFBsYXRmb3JtTW9tZW50dW1TY3JvbGxpbmdQ
cmVkaWN0aW9uRW5hYmxlZChmYWxzZSk7Ci0gICAgICAgICAgICAgICAgc2V0VGltZW91dChzY3Jv
bGxTbmFwVGVzdCwgMCk7CisgICAgICAgICAgICAgICAgcnVuVGVzdCgpOwogICAgICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgICAgICB2YXIgbWVzc2FnZUxvY2F0aW9uID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ2l0ZW0wJyk7CiAgICAgICAgICAgICAgICAgdmFyIG1lc3NhZ2UgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1t
YWluZnJhbWUtdmVydGljYWwtd2l0aC1tYXJnaW4uaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1tYWluZnJh
bWUtdmVydGljYWwtd2l0aC1tYXJnaW4uaHRtbAppbmRleCA4MjhkODBiMjMwOTg1MjU5OWRhYzhj
NmYzNjg0ODJhZTM1NjAwMTQ4Li4xYjZjNTEyYjNjYWQwYWI3YzZlOTU3OTQ4NzY3NzNmM2QyNmM0
YzIxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnktbWFpbmZyYW1lLXZlcnRpY2FsLXdpdGgtbWFy
Z2luLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5LW1haW5mcmFtZS12ZXJ0aWNhbC13aXRoLW1hcmdp
bi5odG1sCkBAIC0yOSw4MSArMjksMjkgQEAKICAgICAgICAgICAgICNpdGVtNSB7IGJhY2tncm91
bmQtY29sb3I6IGZ1Y2hzaWE7IH0KICAgICAgICAgPC9zdHlsZT4KICAgICAgICAgPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNj
cmlwdCBzcmM9InJlc291cmNlcy9tYWluZnJhbWUtc2Nyb2xsLXNuYXAtdGVzdC5qcyI+PC9zY3Jp
cHQ+CiAgICAgICAgIDxzY3JpcHQ+CiAgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1
ZTsKIAotICAgICAgICB2YXIgc2Nyb2xsaW5nVGFyZ2V0OwotICAgICAgICB2YXIgc2Nyb2xsUG9z
aXRpb25CZWZvcmVHbGlkZTsKLSAgICAgICAgdmFyIHNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsK
LQotICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAoKQotICAgICAgICB7Ci0gICAg
ICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlv
dXMgcG9zaXRpb24KLSAgICAgICAgICAgIGlmIChzY3JvbGxpbmdUYXJnZXQuc2Nyb2xsVG9wICE9
IHNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKLSAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKGBk
aXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uLiAoJHtzY3JvbGxpbmdUYXJn
ZXQuc2Nyb2xsVG9wfSB2cy4gJHtzY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXB9KWApOwotICAgICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAg
cG9pbnRzLiIpOwotCi0gICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICAgICAgfQotCi0g
ICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KCkKLSAgICAgICAgewotICAgICAgICAgICAg
c2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gc2Nyb2xsaW5nVGFyZ2V0LnNjcm9sbFRvcDsKLQot
ICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHNjcm9sbGluZ1RhcmdldC5vZmZzZXRMZWZ0ICsg
MjA7Ci0gICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gc2Nyb2xsaW5nVGFyZ2V0Lm9mZnNldFRv
cCArIDIwOwotICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7Ci0g
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7
IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKLSAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAt
MSwgJ2JlZ2FuJywgJ25vbmUnKTsKLSAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAtMSwgJ2NoYW5nZWQnLCAnbm9uZScpOwot
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKDAsIC0xLCAnY2hhbmdlZCcsICdub25lJyk7Ci0gICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywg
J25vbmUnKTsKLSAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBs
ZXRlcyhjaGVja0ZvclNjcm9sbFNuYXApOwotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24g
Y2hlY2tGb3JTY3JvbGxHbGlkZSgpCisgICAgICAgIGZ1bmN0aW9uIHJ1blRlc3RzKCkKICAgICAg
ICAgewotICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVk
KSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LCB3aGljaCBzaG91bGQgYmUgdGhlIGhlaWdodAotICAg
ICAgICAgICAgLy8gb2YgdGhlIGZpcnN0IGRpdiBwbHVzIHRoZSByb290IGVsZW1lbnQncyB0b3Ag
bWFyZ2luICg1MCBwaXhlbHMpLgotICAgICAgICAgICAgaWYgKHNjcm9sbGluZ1RhcmdldC5zY3Jv
bGxUb3AgPT0gd2luZG93LmlubmVySGVpZ2h0ICsgNTApCi0gICAgICAgICAgICAgICAgdGVzdFBh
c3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOwotICAgICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoYGRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRz
LiAoJHtzY3JvbGxpbmdUYXJnZXQuc2Nyb2xsVG9wfSB2cy4gJHt3aW5kb3cuaW5uZXJIZWlnaHR9
KWApOwotCi0gICAgICAgICAgICBzZXRUaW1lb3V0KHNjcm9sbFNuYXBUZXN0LCAwKTsKLSAgICAg
ICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCgpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIHNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBzY3JvbGxpbmdUYXJnZXQuc2Ny
b2xsVG9wOwotCi0gICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gc2Nyb2xsaW5nVGFyZ2V0Lm9m
ZnNldExlZnQgKyAyMDsKLSAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSBzY3JvbGxpbmdUYXJn
ZXQub2Zmc2V0VG9wICsgMjA7Ci0gICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxF
dmVudHMoKTsKLSAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwg
c3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQot
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKDAsIC0xLCAnYmVnYW4nLCAnbm9uZScpOwotICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIC0xLCAnY2hhbmdlZCcs
ICdub25lJyk7Ci0gICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoMCwgLTEsICdjaGFuZ2VkJywgJ25vbmUnKTsKLSAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAt
MSwgJ2NoYW5nZWQnLCAnbm9uZScpOwotICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7Ci0g
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoMCwgLTEsICdub25lJywgJ2JlZ2luJyk7Ci0gICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgLTQsICdub25lJywgJ2Nv
bnRpbnVlJyk7Ci0gICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7Ci0gICAgICAgICAgICBldmVu
dFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoY2hlY2tGb3JTY3JvbGxHbGlkZSk7
CisgICAgICAgICAgICBkZWxheSgwKQorICAgICAgICAgICAgICAgIC50aGVuKCgpID0+IHNjcm9s
bEdsaWRlU2hvdWxkU2Nyb2xsVG8oZG9jdW1lbnQuc2Nyb2xsaW5nRWxlbWVudCwgVkVSVElDQUws
ICJ3aW5kb3cuaW5uZXJIZWlnaHQgKyA1MCIpKQorICAgICAgICAgICAgICAgIC50aGVuKCgpID0+
IGRlbGF5KDApKQorICAgICAgICAgICAgICAgIC50aGVuKCgpID0+IHNob3J0U2Nyb2xsU2hvdWxk
U25hcEJhY2soZG9jdW1lbnQuc2Nyb2xsaW5nRWxlbWVudCwgVkVSVElDQUwpKQorICAgICAgICAg
ICAgICAgIC5maW5hbGx5KGZpbmlzaEpTVGVzdCk7CiAgICAgICAgIH0KIAogICAgICAgICBmdW5j
dGlvbiBvbkxvYWQoKQogICAgICAgICB7Ci0gICAgICAgICAgICBzY3JvbGxpbmdUYXJnZXQgPSBk
b2N1bWVudC5zY3JvbGxpbmdFbGVtZW50OwogICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNl
bmRlcikgewogICAgICAgICAgICAgICAgIGludGVybmFscy5zZXRQbGF0Zm9ybU1vbWVudHVtU2Ny
b2xsaW5nUHJlZGljdGlvbkVuYWJsZWQoZmFsc2UpOwotICAgICAgICAgICAgICAgIHNldFRpbWVv
dXQoc2Nyb2xsR2xpZGVUZXN0LCAwKTsKKyAgICAgICAgICAgICAgICBydW5UZXN0cygpOwogICAg
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICB2YXIgbWVzc2FnZUxvY2F0aW9uID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2l0ZW0wJyk7CiAgICAgICAgICAgICAgICAgdmFyIG1l
c3NhZ2UgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICAgICAgICAgICAgICAgICBt
ZXNzYWdlLmlubmVySFRNTCA9ICI8cD5UbyBydW4gdGhpcyB0ZXN0IG1hbnVhbGx5LCBzY3JvbGwg
dGhlIHBhZ2UgdmVydGljYWxseS4gVGhlIHBhZ2Ugc2hvdWxkICIKLSAgICAgICAgICAgICAgICAg
ICAgKyAiYWx0ZXJuYXRlIGJldHdlZW4gdW5pZm9ybSBjb2xvcnMgd2hpY2ggZmlsbCB0aGUgdmll
dy48cD4iOworICAgICAgICAgICAgICAgICAgICArICJzbmFwIGJldHdlZW4gdW5pZm9ybSBjb2xv
cnMgd2hpY2ggZmlsbCB0aGUgdmlldy48cD4iOwogICAgICAgICAgICAgICAgIG1lc3NhZ2VMb2Nh
dGlvbi5hcHBlbmRDaGlsZChtZXNzYWdlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtbWFuZGF0b3J5LW1haW5mcmFtZS12ZXJ0aWNhbC5odG1sIGIvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0
b3J5LW1haW5mcmFtZS12ZXJ0aWNhbC5odG1sCmluZGV4IDRmNjgyN2JiZjRmMjNiN2ViNjE0N2U1
OGEyNTkwMjRhNDA5NjllZjIuLjhkZjg0NmQ0ZDZhNDk0NGUxZGU2OGYzYzJmZjMyM2FkN2U2NzQz
MTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1tYWluZnJhbWUtdmVydGljYWwuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1tYW5kYXRvcnktbWFpbmZyYW1lLXZlcnRpY2FsLmh0bWwKQEAgLTI1LDg2ICsyNSwyOSBA
QAogICAgICAgICAgICAgI2l0ZW01IHsgYmFja2dyb3VuZC1jb2xvcjogZnVjaHNpYTsgfQogICAg
ICAgICA8L3N0eWxlPgogICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL21haW5m
cmFtZS1zY3JvbGwtc25hcC10ZXN0LmpzIj48L3NjcmlwdD4KICAgICAgICAgPHNjcmlwdD4KICAg
ICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwogCi0gICAgICAgIHZhciBzY3JvbGxp
bmdUYXJnZXQ7Ci0gICAgICAgIHZhciBzY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOwotICAgICAg
ICB2YXIgc2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOwotCi0gICAgICAgIGZ1bmN0aW9uIGNoZWNr
Rm9yU2Nyb2xsU25hcCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxk
IGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgotICAgICAgICAgICAg
aWYgKHNjcm9sbGluZ1RhcmdldC5zY3JvbGxUb3AgIT0gc2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFw
KQotICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoYGRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBw
cm9wZXIgbG9jYXRpb24uICgke3Njcm9sbGluZ1RhcmdldC5zY3JvbGxUb3B9IHZzLiAke3Njcm9s
bFBvc2l0aW9uQmVmb3JlU25hcH0pYCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg
ICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7Ci0KLSAgICAgICAgICAg
IGZpbmlzaEpTVGVzdCgpOwotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25h
cFRlc3QoKQotICAgICAgICB7Ci0gICAgICAgICAgICBzY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAg
PSBzY3JvbGxpbmdUYXJnZXQuc2Nyb2xsVG9wOwotCi0gICAgICAgICAgICB2YXIgc3RhcnRQb3NY
ID0gc2Nyb2xsaW5nVGFyZ2V0Lm9mZnNldExlZnQgKyAyMDsKLSAgICAgICAgICAgIHZhciBzdGFy
dFBvc1kgPSBzY3JvbGxpbmdUYXJnZXQub2Zmc2V0VG9wICsgMjA7Ci0gICAgICAgICAgICBldmVu
dFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKLSAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0
IG91dHNpZGUgdGhlIGlGcmFtZQotICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIC0xLCAnYmVnYW4nLCAnbm9uZScpOwotICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKDAsIC0xLCAnY2hhbmdlZCcsICdub25lJyk7Ci0gICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgLTEsICdjaGFuZ2VkJywg
J25vbmUnKTsKLSAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOwotICAgICAgICAgICAgZXZl
bnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGNoZWNrRm9yU2Nyb2xsU25hcCk7
Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKCkKKyAg
ICAgICAgZnVuY3Rpb24gcnVuVGVzdHMoKQogICAgICAgICB7Ci0gICAgICAgICAgICAvLyBUaGUg
ZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQu
Ci0gICAgICAgICAgICBpZiAoc2Nyb2xsaW5nVGFyZ2V0LnNjcm9sbFRvcCA9PSB3aW5kb3cuaW5u
ZXJIZWlnaHQpCi0gICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5l
eHQgd2luZG93LiIpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHRlc3RGYWls
ZWQoYGRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiAoJHtzY3JvbGxpbmdUYXJnZXQuc2Ny
b2xsVG9wfSB2cy4gJHt3aW5kb3cuaW5uZXJIZWlnaHR9KWApOwotCi0gICAgICAgICAgICBzZXRU
aW1lb3V0KHNjcm9sbFNuYXBUZXN0LCAwKTsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9u
IHNjcm9sbEdsaWRlVGVzdCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHNjcm9sbFBvc2l0aW9u
QmVmb3JlR2xpZGUgPSBzY3JvbGxpbmdUYXJnZXQuc2Nyb2xsVG9wOwotCi0gICAgICAgICAgICB2
YXIgc3RhcnRQb3NYID0gc2Nyb2xsaW5nVGFyZ2V0Lm9mZnNldExlZnQgKyAyMDsKLSAgICAgICAg
ICAgIHZhciBzdGFydFBvc1kgPSBzY3JvbGxpbmdUYXJnZXQub2Zmc2V0VG9wICsgMjA7Ci0gICAg
ICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKLSAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJl
IHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQotICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIC0xLCAnYmVnYW4nLCAn
bm9uZScpOwotICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKDAsIC0xLCAnY2hhbmdlZCcsICdub25lJyk7Ci0gICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgLTEs
ICdjaGFuZ2VkJywgJ25vbmUnKTsKLSAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAtMSwgJ2NoYW5nZWQnLCAnbm9uZScpOwot
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7Ci0gICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgLTEsICdub25lJywgJ2Jl
Z2luJyk7Ci0gICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoMCwgLTQsICdub25lJywgJ2NvbnRpbnVlJyk7Ci0gICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwg
J25vbmUnLCAnZW5kJyk7Ci0gICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxp
bmdDb21wbGV0ZXMoY2hlY2tGb3JTY3JvbGxHbGlkZSk7CisgICAgICAgICAgICBkZWxheSgwKQor
ICAgICAgICAgICAgICAgIC50aGVuKCgpID0+IHNjcm9sbEdsaWRlU2hvdWxkU2Nyb2xsVG8oZG9j
dW1lbnQuc2Nyb2xsaW5nRWxlbWVudCwgVkVSVElDQUwsICJ3aW5kb3cuaW5uZXJIZWlnaHQiKSkK
KyAgICAgICAgICAgICAgICAudGhlbigoKSA9PiBkZWxheSgwKSkKKyAgICAgICAgICAgICAgICAu
dGhlbigoKSA9PiBzaG9ydFNjcm9sbFNob3VsZFNuYXBCYWNrKGRvY3VtZW50LnNjcm9sbGluZ0Vs
ZW1lbnQsIFZFUlRJQ0FMKSkKKyAgICAgICAgICAgICAgICAuZmluYWxseShmaW5pc2hKU1Rlc3Qp
OwogICAgICAgICB9CiAKICAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKICAgICAgICAgewotICAg
ICAgICAgICAgc2Nyb2xsaW5nVGFyZ2V0ID0gZG9jdW1lbnQuc2Nyb2xsaW5nRWxlbWVudDsKICAg
ICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKICAgICAgICAgICAgICAgICBpbnRl
cm5hbHMuc2V0UGxhdGZvcm1Nb21lbnR1bVNjcm9sbGluZ1ByZWRpY3Rpb25FbmFibGVkKGZhbHNl
KTsKLSAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KHNjcm9sbEdsaWRlVGVzdCwgMCk7CisgICAg
ICAgICAgICAgICAgcnVuVGVzdHMoKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICAgICAgdmFyIG1lc3NhZ2VMb2NhdGlvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpdGVt
MCcpOwogICAgICAgICAgICAgICAgIHZhciBtZXNzYWdlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgnZGl2Jyk7Ci0gICAgICAgICAgICAgICAgbWVzc2FnZS5pbm5lckhUTUwgPSAiPHA+VGhpcyB0
ZXN0IGlzIGJldHRlciBydW4gdW5kZXIgRHVtcFJlbmRlclRyZWUuIFRvIG1hbnVhbGx5IHRlc3Qg
aXQsIHBsYWNlIHRoZSBtb3VzZSBwb2ludGVyPGJyLz4iCi0gICAgICAgICAgICAgICAgICAgICsg
Imluc2lkZSB0aGUgcmVkIHJlZ2lvbiBhdCB0aGUgdG9wIG9mIHRoZSBwYWdlLCBhbmQgdGhlbiB1
c2UgdGhlIG1vdXNlIHdoZWVsIG9yIGEgdHdvLWZpbmdlciBzd2lwZSB0byBtYWtlIGE8YnIvPiIK
LSAgICAgICAgICAgICAgICAgICAgKyAic21hbGwgc3dpcGUgZ2VzdHVyZSB3aXRoIHNvbWUgbW9t
ZW50dW0uPGJyLz48YnIvPiIKLSAgICAgICAgICAgICAgICAgICAgKyAiVGhlIHJlZ2lvbiBzaG91
bGQgc2Nyb2xsIHRvIHNob3cgYSBncmVlbiByZWdpb24uPGJyLz48YnIvPiIKLSAgICAgICAgICAg
ICAgICAgICAgKyAiTmV4dCwgcGVyZm9ybSBhIHNtYWxsIHNjcm9sbCBnZXN0dXJlIHRoYXQgZG9l
cyBub3QgaW52b2x2ZSBtb21lbnR1bS4gWW91IHNob3VsZCBiZWdpbiB0byBzZWUgb25lIG9mIHRo
ZSBjb2xvcnM8YnIvPiIKLSAgICAgICAgICAgICAgICAgICAgKyAidG8gdGhlIGxlZnQgKG9yIHJp
Z2h0KSBvZiB0aGUgY3VycmVudCBncmVlbiBib3guIFdoZW4geW91IHJlbGVhc2UgdGhlIHdoZWVs
LCB0aGUgcmVnaW9uIHNob3VsZCBzY3JvbGwgYmFjayBzbzxici8+IgotICAgICAgICAgICAgICAg
ICAgICArICJ0aGF0IHRoZSByZWdpb24gaXMgYSBzaW5nbGUgY29sb3IuPGJyLz48YnIvPiIKLSAg
ICAgICAgICAgICAgICAgICAgKyAiWW91IHNob3VsZCBhbHNvIGJlIGFibGUgdG8gcmVwZWF0IHRo
ZXNlIHRlc3Qgc3RlcHMgZm9yIHRoZSB2ZXJ0aWNhbCByZWdpb24gYmVsb3cuPC9wPiI7CisgICAg
ICAgICAgICAgICAgbWVzc2FnZS5pbm5lckhUTUwgPSAiPHA+VG8gcnVuIHRoaXMgdGVzdCBtYW51
YWxseSwgc2Nyb2xsIHRoZSBwYWdlIHZlcnRpY2FsbHkuIFRoZSBwYWdlIHNob3VsZCAiCisgICAg
ICAgICAgICAgICAgICAgICsgInNuYXAgYmV0d2VlbiB1bmlmb3JtIGNvbG9ycyB3aGljaCBmaWxs
IHRoZSB2aWV3LjxwPiI7CiAgICAgICAgICAgICAgICAgbWVzc2FnZUxvY2F0aW9uLmFwcGVuZENo
aWxkKG1lc3NhZ2UpOwogICAgICAgICAgICAgfQogICAgICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413809</attachid>
            <date>2020-11-11 04:20:55 -0800</date>
            <delta_ts>2020-11-12 03:35:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218757-20201111132051.patch</filename>
            <type>text/plain</type>
            <size>55131</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5NjI4CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNDdjNWY5NWVhZjI4Mzg1NjhiYjBi
NDk2MDU4OGZiYjEzZDU4ZTU3My4uNjc3ZjE5MzhjMWU2ZmE2Nzk2ZWY0OWRmN2JkOWY2M2U4YjQ3
Y2E5MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIwLTExLTEwICBNYXJ0aW4gUm9iaW5zb24g
IDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAgICBTaW1wbGlmeSBtYWluZnJhbWUgdGVz
dHMgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODc1NworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvcmVzb3VyY2VzL21haW5mcmFtZS1zY3JvbGwtc25hcC10ZXN0LmpzOiBBZGRl
ZC4gQWxsb3dzCisgICAgICAgIHNoYXJpbmcgdGhlIG1haW5mcmFtZSBzY3JvbGwgdGVzdGluZyBj
b2RlIGJldHdlZW4gdGVzdHMgYW5kIHJlaW1wbGVtZW50cyB0aGVtIHdpdGggUHJvbWlzZXMuCisg
ICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
bWFuZGF0b3J5LW1haW5mcmFtZS1ob3Jpem9udGFsLWxlZ2FjeS5odG1sOgorICAgICAgICAqIHRp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1t
YWluZnJhbWUtaG9yaXpvbnRhbC13aXRoLW1hcmdpbi5odG1sOgorICAgICAgICAqIHRpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1tYWluZnJh
bWUtaG9yaXpvbnRhbC5odG1sOgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1tYWluZnJhbWUtc2xvdy1ob3Jpem9udGFs
Lmh0bWw6CisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtbWFuZGF0b3J5LW1haW5mcmFtZS1zbG93LXZlcnRpY2FsLmh0bWw6CisgICAgICAg
ICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0
b3J5LW1haW5mcmFtZS12ZXJ0aWNhbC1sZWdhY3kuaHRtbDoKKyAgICAgICAgKiB0aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnktbWFpbmZyYW1l
LXZlcnRpY2FsLXRoZW4taG9yaXpvbnRhbC5odG1sOgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1tYWluZnJhbWUtdmVy
dGljYWwtd2l0aC1tYXJnaW4uaHRtbDoKKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnktbWFpbmZyYW1lLXZlcnRpY2FsLmh0
bWw6CisKIDIwMjAtMTEtMTAgIENhcmxvcyBBbGJlcnRvIExvcGV6IFBlcmV6ICA8Y2xvcGV6QGln
YWxpYS5jb20+CiAKICAgICAgICAgW0dUS11bV1BFXSBSZWJhc2VsaW5lIHRlc3RzIGFmdGVyIHIy
Njk1MTAsIHIyNjk1OTgsIHIyNjk2MDAgYW5kIHIyNjk2MTIuCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9yZXNvdXJjZXMvbWFpbmZy
YW1lLXNjcm9sbC1zbmFwLXRlc3QuanMgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9yZXNvdXJjZXMvbWFpbmZyYW1lLXNjcm9sbC1zbmFwLXRlc3QuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMGNiYTk5ZGMyYTdkOGM4NDU1NDA1NGNmNTFkOWUzNjFkOGFiYTRmOQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Jlc291cmNlcy9tYWluZnJhbWUtc2Nyb2xsLXNuYXAtdGVzdC5qcwpAQCAtMCwwICsx
LDkxIEBACitjb25zdCBWRVJUSUNBTCA9IFswLCAxXTsKK2NvbnN0IEhPUklaT05UQUwgPSBbMSwg
MF07Citjb25zdCBWRVJUSUNBTF9BTkRfSE9SSVpPTlRBTCA9IFsxLCAxXTsKKworYXN5bmMgZnVu
Y3Rpb24gZG9TY3JvbGxHbGlkZSh0YXJnZXRFbGVtZW50LCBkaXJlY3Rpb24pCit7CisgICAgLy8g
VGhlc2UgYXJyYXlzIGFyZSBhcmd1bWVudHMgdGhhdCB3aWxsIGJlIHBhc3NlZCB0byBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMuCisgICAgLy8gRGVw
ZW5kaW5nIG9uIHdoZXRoZXIgb3Igbm90IHRoZSBkaXJlY3Rpb24gaXMgdmVydGljYWwgb3IgaG9y
aXpvbnRhbCBvbmUgb2YgdGhlIGZpcnN0IHR3byBlbGVtZW50cworICAgIC8vIG9mIGVhY2ggZW50
cnkgd2lsbCBiZSB6ZXJvZWQgb3V0LCBzbyB0aGF0IGV2ZW50U2VuZGVyIG9ubHkgc2Nyb2xscyBp
biBvbmUgZGlyZWN0aW9uIGF0IGEgdGltZS4KKyAgICBsZXQgc2Nyb2xsTW90aW9ucyA9IFsKKyAg
ICAgICAgWy0xLCAtMSwgJ2JlZ2FuJywgJ25vbmUnXSwKKyAgICAgICAgWy0xLCAtMSwgJ2NoYW5n
ZWQnLCAnbm9uZSddLAorICAgICAgICBbLTEsIC0xLCAnY2hhbmdlZCcsICdub25lJ10sCisgICAg
ICAgIFstMSwgLTEsICdjaGFuZ2VkJywgJ25vbmUnXSwKKyAgICAgICAgWzAsIDAsICdlbmRlZCcs
ICdub25lJ10sCisgICAgICAgIFstMSwgLTEsICdub25lJywgJ2JlZ2luJ10sCisgICAgICAgIFst
MSwgLTEsICdub25lJywgJ2NvbnRpbnVlJ10sCisgICAgICAgIFswLCAwLCAnbm9uZScsICdlbmQn
XSwKKyAgICBdOworCisgICAgcmV0dXJuIGRvU2Nyb2xsVGVzdCh0YXJnZXRFbGVtZW50LCBkaXJl
Y3Rpb24sIHNjcm9sbE1vdGlvbnMpOworfQorCithc3luYyBmdW5jdGlvbiBkb1Njcm9sbFNuYXAo
dGFyZ2V0RWxlbWVudCwgZGlyZWN0aW9uKQoreworICAgIC8vIFRoZXNlIGFycmF5cyBhcmUgYXJn
dW1lbnRzIHRoYXQgd2lsbCBiZSBwYXNzZWQgdG8gZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzLgorICAgIC8vIERlcGVuZGluZyBvbiB3aGV0aGVyIG9y
IG5vdCB0aGUgZGlyZWN0aW9uIGlzIHZlcnRpY2FsIG9yIGhvcml6b250YWwgb25lIG9mIHRoZSBm
aXJzdCB0d28gZWxlbWVudHMKKyAgICAvLyBvZiBlYWNoIGVudHJ5IHdpbGwgYmUgemVyb2VkIG91
dCwgc28gdGhhdCBldmVudFNlbmRlciBvbmx5IHNjcm9sbHMgaW4gb25lIGRpcmVjdGlvbiBhdCBh
IHRpbWUuCisgICAgbGV0IHNjcm9sbE1vdGlvbnMgPSBbCisgICAgICAgIFstMSwgMCwgJ2JlZ2Fu
JywgJ25vbmUnXSwKKyAgICAgICAgWy0xLCAwLCAnY2hhbmdlZCcsICdub25lJ10sCisgICAgICAg
IFstMSwgMCwgJ2NoYW5nZWQnLCAnbm9uZSddLAorICAgICAgICBbMCwgMCwgJ2VuZGVkJywgJ25v
bmUnXSwKKyAgICBdOworICAgIHJldHVybiBkb1Njcm9sbFRlc3QodGFyZ2V0RWxlbWVudCwgZGly
ZWN0aW9uLCBzY3JvbGxNb3Rpb25zKTsKK30KKworYXN5bmMgZnVuY3Rpb24gZG9TY3JvbGxUZXN0
KHRhcmdldEVsZW1lbnQsIGRpcmVjdGlvbiwgc2Nyb2xsTW90aW9ucykKK3sKKyAgICB2YXIgc3Rh
cnRQb3NYOworICAgIHZhciBzdGFydFBvc1k7CisgICAgaWYgKGRvY3VtZW50LnNjcm9sbGluZ0Vs
ZW1lbnQgPT0gdGFyZ2V0RWxlbWVudCkgeworICAgICAgICAvLyBnZXRCb3VuZGluZ0NsaWVudFJl
Y3QoKSBjYW4gYmUgYW4gb3V0LW9mLXZpZXdwb3J0IHJlY3RhbmdsZSBpZiB0aGUKKyAgICAgICAg
Ly8gcm9vdCBzY3JvbGxpbmcgZWxlbWVudCBpcyB0aGUgdGFyZ2V0RWxlbWVudC4KKyAgICAgICAg
c3RhcnRQb3NYID0gMDsKKyAgICAgICAgc3RhcnRQb3NZID0gMDsKKyAgICB9IGVsc2UgeworICAg
ICAgICB2YXIgY2xpZW50UmVjdCA9IHRhcmdldEVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0
KCk7CisgICAgICAgIHZhciBzdGFydFBvc1ggPSBjbGllbnRSZWN0Lng7CisgICAgICAgIHZhciBz
dGFydFBvc1kgPSBjbGllbnRSZWN0Lnk7CisgICAgfQorCisgICAgLy8gU2xpZ2h0bHkgb2Zmc2V0
IHRoZSBtb3VzZSBwb3NpdGlvbiBzbyB0aGF0IHRoZSBldmVudHMgYXJlIGluc2lkZSB0aGUgZWxl
bWVudC4KKyAgICBzdGFydFBvc1ggKz0gNTsKKyAgICBzdGFydFBvc1kgKz0gNTsKKworICAgIGV2
ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92
ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKworICAgIC8vIGBkaXJlY3Rpb25gIGlzIGEgdHdv
LWVsZW1lbnQgYXJyYXkgd2l0aCBhIG9uZSBpbiB0aGUgYXBwcm9wcmlhdGUgZGlyZWN0aW9uLgor
ICAgIHNjcm9sbE1vdGlvbnMuZm9yRWFjaCgoY2FsbEFyZ3VtZW50cykgPT4geworICAgICAgICBj
YWxsQXJndW1lbnRzWzBdICo9IGRpcmVjdGlvblswXTsKKyAgICAgICAgY2FsbEFyZ3VtZW50c1sx
XSAqPSBkaXJlY3Rpb25bMV07CisgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyguLi5jYWxsQXJndW1lbnRzKTsKKyAgICB9KTsKKworICAg
IHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CisgICAgICAgIGV2ZW50
U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhyZXNvbHZlKTsKKyAgICB9KQorfQor
CitmdW5jdGlvbiBkZWxheSh0aW1lKSB7CisgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUg
PT4gc2V0VGltZW91dChyZXNvbHZlLCB0aW1lKSk7Cit9CisKK2Z1bmN0aW9uIHNob3J0U2Nyb2xs
U2hvdWxkU25hcEJhY2sodGFyZ2V0RWxlbWVudCwgZGlyZWN0aW9uKQoreworICAgIHZhciBzY3Jv
bGxQb3NpdGlvbkJlZm9yZVNuYXAgPSB0YXJnZXRFbGVtZW50LnNjcm9sbExlZnQ7CisgICAgcmV0
dXJuIGRvU2Nyb2xsU25hcCh0YXJnZXRFbGVtZW50LCBIT1JJWk9OVEFMKS50aGVuKCgpID0+IHsK
KyAgICAgICAgLy8gVGhlIHRhcmdldEVsZW1lbnQgc2hvdWxkIGhhdmUgcmVtYWluZWQgb24gdGhl
IHNhbWUgc25hcCBwb2ludC4KKyAgICAgICAgZXhwZWN0VHJ1ZSgidGFyZ2V0RWxlbWVudC5zY3Jv
bGxMZWZ0ID09IHNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCIsICJkaXYgaG9ub3JlZCBzbmFwIHBv
aW50cy4iKTsKKyAgICB9KTsKK30KKworZnVuY3Rpb24gc2Nyb2xsR2xpZGVTaG91bGRTY3JvbGxU
byh0YXJnZXRFbGVtZW50LCBkaXJlY3Rpb24sIGV4cGVjdGVkVmFsdWUpCit7CisgICAgcmV0dXJu
IGRvU2Nyb2xsR2xpZGUodGFyZ2V0RWxlbWVudCwgSE9SSVpPTlRBTCkudGhlbigoKSA9PiB7Cisg
ICAgICAgIC8vIFRoZSB0YXJnZXRFbGVtZW50IHNob3VsZCBoYXZlIHNuYXBwZWQgdG8gdGhlIGdp
dmVuIHNuYXAgcG9zaXRpb24uCisgICAgICAgIGV4cGVjdFRydWUoInRhcmdldEVsZW1lbnQuc2Ny
b2xsTGVmdCA9PSAiICsgZXhwZWN0ZWRWYWx1ZSwgImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRv
dy4iKTsKKyAgICB9KTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1tYWluZnJhbWUtaG9y
aXpvbnRhbC1sZWdhY3kuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1tYWluZnJhbWUtaG9yaXpvbnRhbC1s
ZWdhY3kuaHRtbAppbmRleCAzZDQwYWZmODBmMGQ0OTQyMzBmZGUwMTRkMDNhZjIyYTI3ODU1OTAw
Li5jYjNiYjQ4OWMyM2M0OWU4MTdkYmZlOTMzOTg2NmFmY2EzYzkzNWZlIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1tYW5kYXRvcnktbWFpbmZyYW1lLWhvcml6b250YWwtbGVnYWN5Lmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFu
ZGF0b3J5LW1haW5mcmFtZS1ob3Jpem9udGFsLWxlZ2FjeS5odG1sCkBAIC0yMyw4NiArMjMsMzAg
QEAKICAgICAgICAgICAgICNpdGVtNSB7IGJhY2tncm91bmQtY29sb3I6IGZ1Y2hzaWE7IH0KICAg
ICAgICAgPC9zdHlsZT4KICAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291
cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL21haW5mcmFtZS1zY3JvbGwtc25hcC10ZXN0LmpzIj48L3NjcmlwdD4KICAgICAgICAgPHNj
cmlwdD4KICAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwogCi0gICAgICAgIHZh
ciB0YXJnZXRTY3JvbGxlcjsKLSAgICAgICAgdmFyIHNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7
Ci0gICAgICAgIHZhciBzY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7Ci0KLSAgICAgICAgZnVuY3Rp
b24gY2hlY2tGb3JTY3JvbGxTbmFwKCkKKyAgICAgICAgYXN5bmMgZnVuY3Rpb24gcnVuVGVzdHMo
KQogICAgICAgICB7Ci0gICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQg
YmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KLSAgICAgICAgICAgIGlmICh0YXJnZXRTY3Jv
bGxlci5zY3JvbGxMZWZ0ICE9IHNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKLSAgICAgICAgICAg
ICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9u
LiBFeHBlY3RlZCAiICsgc2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsg
dGFyZ2V0U2Nyb2xsZXIuc2Nyb2xsTGVmdCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7Ci0KKyAgICAgICAg
ICAgIGF3YWl0IFVJSGVscGVyLmRlbGF5Rm9yKDApOworICAgICAgICAgICAgYXdhaXQgc2Nyb2xs
R2xpZGVTaG91bGRTY3JvbGxUbyhkb2N1bWVudC5zY3JvbGxpbmdFbGVtZW50LCBIT1JJWk9OVEFM
LCAid2luZG93LmlubmVyV2lkdGgiKTsKKyAgICAgICAgICAgIGF3YWl0IFVJSGVscGVyLmRlbGF5
Rm9yKDApOworICAgICAgICAgICAgYXdhaXQgc2hvcnRTY3JvbGxTaG91bGRTbmFwQmFjayhkb2N1
bWVudC5zY3JvbGxpbmdFbGVtZW50LCBIT1JJWk9OVEFMKTsKICAgICAgICAgICAgIGZpbmlzaEpT
VGVzdCgpOwogICAgICAgICB9CiAKLSAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QoKQot
ICAgICAgICB7Ci0gICAgICAgICAgICBzY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSB0YXJnZXRT
Y3JvbGxlci5zY3JvbGxMZWZ0OwotCi0gICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gdGFyZ2V0
U2Nyb2xsZXIub2Zmc2V0TGVmdCArIDIwOwotICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHRh
cmdldFNjcm9sbGVyLm9mZnNldFRvcCArIDIwOwotICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9u
aXRvcldoZWVsRXZlbnRzKCk7Ci0gICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhz
dGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRo
ZSBpRnJhbWUKLSAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcygtMSwgMCwgJ2JlZ2FuJywgJ25vbmUnKTsKLSAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygtMSwgMCwg
J2NoYW5nZWQnLCAnbm9uZScpOwotICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKC0xLCAwLCAnY2hhbmdlZCcsICdub25lJyk7Ci0g
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKLSAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNh
bGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhjaGVja0ZvclNjcm9sbFNuYXApOwotICAgICAgICB9
Ci0KLSAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSgpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhl
IG5leHQgc25hcCBwb2ludC4KLSAgICAgICAgICAgIGlmICh0YXJnZXRTY3JvbGxlci5zY3JvbGxM
ZWZ0ID09IHdpbmRvdy5pbm5lcldpZHRoKQotICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRp
diBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0
ZWQgIiArIHdpbmRvdy5pbm5lcldpZHRoICsgIiwgYnV0IGdvdCAiICsgdGFyZ2V0U2Nyb2xsZXIu
c2Nyb2xsTGVmdCk7Ci0KLSAgICAgICAgICAgIHNldFRpbWVvdXQoc2Nyb2xsU25hcFRlc3QsIDAp
OwotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KCkKLSAgICAg
ICAgewotICAgICAgICAgICAgc2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IHRhcmdldFNjcm9s
bGVyLnNjcm9sbExlZnQ7Ci0KLSAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB0YXJnZXRTY3Jv
bGxlci5vZmZzZXRMZWZ0ICsgMjA7Ci0gICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gdGFyZ2V0
U2Nyb2xsZXIub2Zmc2V0VG9wICsgMjA7Ci0gICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9y
V2hlZWxFdmVudHMoKTsKLSAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0
UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlG
cmFtZQotICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKC0xLCAwLCAnYmVnYW4nLCAnbm9uZScpOwotICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKC0xLCAwLCAnY2hh
bmdlZCcsICdub25lJyk7Ci0gICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoLTEsIDAsICdjaGFuZ2VkJywgJ25vbmUnKTsKLSAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cygtMSwgMCwgJ2NoYW5nZWQnLCAnbm9uZScpOwotICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25l
Jyk7Ci0gICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoLTEsIDAsICdub25lJywgJ2JlZ2luJyk7Ci0gICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoLTEsIDAsICdub25l
JywgJ2NvbnRpbnVlJyk7Ci0gICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7Ci0gICAgICAgICAg
ICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoY2hlY2tGb3JTY3JvbGxH
bGlkZSk7Ci0gICAgICAgIH0KLQogICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQogICAgICAgICB7
Ci0gICAgICAgICAgICB0YXJnZXRTY3JvbGxlciA9IGRvY3VtZW50LnNjcm9sbGluZ0VsZW1lbnQ7
CiAgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CiAgICAgICAgICAgICAgICAg
aW50ZXJuYWxzLnNldFBsYXRmb3JtTW9tZW50dW1TY3JvbGxpbmdQcmVkaWN0aW9uRW5hYmxlZChm
YWxzZSk7Ci0gICAgICAgICAgICAgICAgc2V0VGltZW91dChzY3JvbGxHbGlkZVRlc3QsIDApOwor
ICAgICAgICAgICAgICAgIHJ1blRlc3RzKCk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgICAgIHZhciBtZXNzYWdlTG9jYXRpb24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
aXRlbTAnKTsKICAgICAgICAgICAgICAgICB2YXIgbWVzc2FnZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoJ2RpdicpOwotICAgICAgICAgICAgICAgIG1lc3NhZ2UuaW5uZXJIVE1MID0gIjxwPlRo
aXMgdGVzdCBpcyBiZXR0ZXIgcnVuIHVuZGVyIER1bXBSZW5kZXJUcmVlLiBUbyBtYW51YWxseSB0
ZXN0IGl0LCBwbGFjZSB0aGUgbW91c2UgcG9pbnRlcjxici8+IgotICAgICAgICAgICAgICAgICAg
ICArICJpbnNpZGUgdGhlIHJlZCByZWdpb24gYXQgdGhlIHRvcCBvZiB0aGUgcGFnZSwgYW5kIHRo
ZW4gdXNlIHRoZSBtb3VzZSB3aGVlbCBvciBhIHR3by1maW5nZXIgc3dpcGUgdG8gbWFrZSBhPGJy
Lz4iCi0gICAgICAgICAgICAgICAgICAgICsgInNtYWxsIHN3aXBlIGdlc3R1cmUgd2l0aCBzb21l
IG1vbWVudHVtLjxici8+PGJyLz4iCi0gICAgICAgICAgICAgICAgICAgICsgIlRoZSByZWdpb24g
c2hvdWxkIHNjcm9sbCB0byBzaG93IGEgZ3JlZW4gcmVnaW9uLjxici8+PGJyLz4iCi0gICAgICAg
ICAgICAgICAgICAgICsgIk5leHQsIHBlcmZvcm0gYSBzbWFsbCBzY3JvbGwgZ2VzdHVyZSB0aGF0
IGRvZXMgbm90IGludm9sdmUgbW9tZW50dW0uIFlvdSBzaG91bGQgYmVnaW4gdG8gc2VlIG9uZSBv
ZiB0aGUgY29sb3JzPGJyLz4iCi0gICAgICAgICAgICAgICAgICAgICsgInRvIHRoZSBsZWZ0IChv
ciByaWdodCkgb2YgdGhlIGN1cnJlbnQgZ3JlZW4gYm94LiBXaGVuIHlvdSByZWxlYXNlIHRoZSB3
aGVlbCwgdGhlIHJlZ2lvbiBzaG91bGQgc2Nyb2xsIGJhY2sgc288YnIvPiIKLSAgICAgICAgICAg
ICAgICAgICAgKyAidGhhdCB0aGUgcmVnaW9uIGlzIGEgc2luZ2xlIGNvbG9yLjxici8+PGJyLz4i
Ci0gICAgICAgICAgICAgICAgICAgICsgIllvdSBzaG91bGQgYWxzbyBiZSBhYmxlIHRvIHJlcGVh
dCB0aGVzZSB0ZXN0IHN0ZXBzIGZvciB0aGUgdmVydGljYWwgcmVnaW9uIGJlbG93LjwvcD4iOwor
ICAgICAgICAgICAgICAgIG1lc3NhZ2UuaW5uZXJIVE1MID0gIjxwPlRvIHJ1biB0aGlzIHRlc3Qg
bWFudWFsbHksIHNjcm9sbCB0aGUgcGFnZSBob3Jpem9udGFsbHkuIFRoZSBwYWdlIHNob3VsZCAi
CisgICAgICAgICAgICAgICAgICAgICsgInNuYXAgYmV0d2VlbiB1bmlmb3JtIGNvbG9ycyB3aGlj
aCBmaWxsIHRoZSB2aWV3LjxwPiI7CiAgICAgICAgICAgICAgICAgbWVzc2FnZUxvY2F0aW9uLmFw
cGVuZENoaWxkKG1lc3NhZ2UpOwogICAgICAgICAgICAgfQogICAgICAgICB9CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1tYW5kYXRvcnktbWFpbmZyYW1lLWhvcml6b250YWwtd2l0aC1tYXJnaW4uaHRtbCBiL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LW1hbmRhdG9yeS1tYWluZnJhbWUtaG9yaXpvbnRhbC13aXRoLW1hcmdpbi5odG1sCmluZGV4IDQz
OGMwMjViZmM1YmRlZjJmY2U4OGE5ZTRjOWNkNjE4NTRlYzVmZjQuLjExZTJkYzIxOTMwNjE5ZTQ2
MjRmODU1NzRjMGVlNDBhOGFiN2ZkOTMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1tYWluZnJh
bWUtaG9yaXpvbnRhbC13aXRoLW1hcmdpbi5odG1sCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1tYWluZnJh
bWUtaG9yaXpvbnRhbC13aXRoLW1hcmdpbi5odG1sCkBAIC0yOSw4MSArMjksMzAgQEAKICAgICAg
ICAgICAgICNpdGVtNSB7IGJhY2tncm91bmQtY29sb3I6IGZ1Y2hzaWE7IH0KICAgICAgICAgPC9z
dHlsZT4KICAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0Lmpz
Ij48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy91aS1o
ZWxwZXIuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL21haW5m
cmFtZS1zY3JvbGwtc25hcC10ZXN0LmpzIj48L3NjcmlwdD4KICAgICAgICAgPHNjcmlwdD4KICAg
ICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwogCi0gICAgICAgIHZhciB0YXJnZXRT
Y3JvbGxlcjsKLSAgICAgICAgdmFyIHNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7Ci0gICAgICAg
IHZhciBzY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7Ci0KLSAgICAgICAgZnVuY3Rpb24gY2hlY2tG
b3JTY3JvbGxTbmFwKCkKKyAgICAgICAgYXN5bmMgZnVuY3Rpb24gcnVuVGVzdHMoKQogICAgICAg
ICB7Ci0gICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0
aGUgcHJldmlvdXMgcG9zaXRpb24KLSAgICAgICAgICAgIGlmICh0YXJnZXRTY3JvbGxlci5zY3Jv
bGxMZWZ0ICE9IHNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKLSAgICAgICAgICAgICAgICB0ZXN0
RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uLiBFeHBlY3Rl
ZCAiICsgc2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgdGFyZ2V0U2Ny
b2xsZXIuc2Nyb2xsTGVmdCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgdGVz
dFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7Ci0KKyAgICAgICAgICAgIGF3YWl0
IFVJSGVscGVyLmRlbGF5Rm9yKDApOworICAgICAgICAgICAgYXdhaXQgc2Nyb2xsR2xpZGVTaG91
bGRTY3JvbGxUbyhkb2N1bWVudC5zY3JvbGxpbmdFbGVtZW50LCBIT1JJWk9OVEFMLCAid2luZG93
LmlubmVyV2lkdGggKyA1MCIpOworICAgICAgICAgICAgYXdhaXQgVUlIZWxwZXIuZGVsYXlGb3Io
MCk7CisgICAgICAgICAgICBhd2FpdCBzaG9ydFNjcm9sbFNob3VsZFNuYXBCYWNrKGRvY3VtZW50
LnNjcm9sbGluZ0VsZW1lbnQsIEhPUklaT05UQUwpOwogICAgICAgICAgICAgZmluaXNoSlNUZXN0
KCk7CiAgICAgICAgIH0KIAotICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCgpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIHNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IHRhcmdldFNjcm9s
bGVyLnNjcm9sbExlZnQ7Ci0KLSAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB0YXJnZXRTY3Jv
bGxlci5vZmZzZXRMZWZ0ICsgMjA7Ci0gICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gdGFyZ2V0
U2Nyb2xsZXIub2Zmc2V0VG9wICsgMjA7Ci0gICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9y
V2hlZWxFdmVudHMoKTsKLSAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0
UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlG
cmFtZQotICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKC0xLCAwLCAnYmVnYW4nLCAnbm9uZScpOwotICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKC0xLCAwLCAnY2hh
bmdlZCcsICdub25lJyk7Ci0gICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoLTEsIDAsICdjaGFuZ2VkJywgJ25vbmUnKTsKLSAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOwotICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFm
dGVyU2Nyb2xsaW5nQ29tcGxldGVzKGNoZWNrRm9yU2Nyb2xsU25hcCk7Ci0gICAgICAgIH0KLQot
ICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKCkKLSAgICAgICAgewotICAgICAg
ICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4
dCBzbmFwIHBvaW50LCB3aGljaCBzaG91bGQgYmUgdGhlIHdpZHRoCi0gICAgICAgICAgICAvLyBv
ZiB0aGUgZmlyc3QgZGl2IHBsdXMgdGhlIHJvb3QgZWxlbWVudCdzIGxlZnQgbWFyZ2luICg1MCBw
aXhlbHMpLgotICAgICAgICAgICAgaWYgKHRhcmdldFNjcm9sbGVyLnNjcm9sbExlZnQgPT0gd2lu
ZG93LmlubmVyV2lkdGggKyA1MCkKLSAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Ny
b2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg
ICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIg
KyB3aW5kb3cuaW5uZXJXaWR0aCArICIsIGJ1dCBnb3QgIiArIHRhcmdldFNjcm9sbGVyLnNjcm9s
bExlZnQpOwotCi0gICAgICAgICAgICBzZXRUaW1lb3V0KHNjcm9sbFNuYXBUZXN0LCAwKTsKLSAg
ICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCgpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIHNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSB0YXJnZXRTY3JvbGxlci5z
Y3JvbGxMZWZ0OwotCi0gICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gdGFyZ2V0U2Nyb2xsZXIu
b2Zmc2V0TGVmdCArIDIwOwotICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHRhcmdldFNjcm9s
bGVyLm9mZnNldFRvcCArIDIwOwotICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVs
RXZlbnRzKCk7Ci0gICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gs
IHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUK
LSAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcygtMSwgMCwgJ2JlZ2FuJywgJ25vbmUnKTsKLSAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygtMSwgMCwgJ2NoYW5nZWQn
LCAnbm9uZScpOwotICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKC0xLCAwLCAnY2hhbmdlZCcsICdub25lJyk7Ci0gICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoLTEs
IDAsICdjaGFuZ2VkJywgJ25vbmUnKTsKLSAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOwot
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKC0xLCAwLCAnbm9uZScsICdiZWdpbicpOwotICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKC0xLCAwLCAnbm9uZScsICdj
b250aW51ZScpOwotICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOwotICAgICAgICAgICAgZXZl
bnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGNoZWNrRm9yU2Nyb2xsR2xpZGUp
OwotICAgICAgICB9Ci0KICAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKICAgICAgICAgewotICAg
ICAgICAgICAgdGFyZ2V0U2Nyb2xsZXIgPSBkb2N1bWVudC5zY3JvbGxpbmdFbGVtZW50OwogICAg
ICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgewogICAgICAgICAgICAgICAgIGludGVy
bmFscy5zZXRQbGF0Zm9ybU1vbWVudHVtU2Nyb2xsaW5nUHJlZGljdGlvbkVuYWJsZWQoZmFsc2Up
OwotICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoc2Nyb2xsR2xpZGVUZXN0LCAwKTsKKyAgICAg
ICAgICAgICAgICBydW5UZXN0cygpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
ICAgICB2YXIgbWVzc2FnZUxvY2F0aW9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2l0ZW0w
Jyk7CiAgICAgICAgICAgICAgICAgdmFyIG1lc3NhZ2UgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdkaXYnKTsKICAgICAgICAgICAgICAgICBtZXNzYWdlLmlubmVySFRNTCA9ICI8cD5UbyBydW4g
dGhpcyB0ZXN0IG1hbnVhbGx5LCBzY3JvbGwgdGhlIHBhZ2UgaG9yaXpvbnRhbGx5LiBUaGUgcGFn
ZSBzaG91bGQgIgotICAgICAgICAgICAgICAgICAgICArICJhbHRlcm5hdGUgYmV0d2VlbiB1bmlm
b3JtIGNvbG9ycyB3aGljaCBmaWxsIHRoZSB2aWV3LjxwPiI7CisgICAgICAgICAgICAgICAgICAg
ICsgInNuYXAgYmV0d2VlbiB1bmlmb3JtIGNvbG9ycyB3aGljaCBmaWxsIHRoZSB2aWV3LjxwPiI7
CiAgICAgICAgICAgICAgICAgbWVzc2FnZUxvY2F0aW9uLmFwcGVuZENoaWxkKG1lc3NhZ2UpOwog
ICAgICAgICAgICAgfQogICAgICAgICB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnktbWFpbmZy
YW1lLWhvcml6b250YWwuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1tYWluZnJhbWUtaG9yaXpvbnRhbC5o
dG1sCmluZGV4IDQ2N2ZhMzVkYjk0MzhkZWMxMGMwY2NmZmJmZjdkY2EwNDdmNDViMTAuLjQ3YjMy
ZDA3NzkxYThmMGEwNWY1NjJmODgzZjc0MWNmNWQyNjcyODggMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRh
dG9yeS1tYWluZnJhbWUtaG9yaXpvbnRhbC5odG1sCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1tYWluZnJh
bWUtaG9yaXpvbnRhbC5odG1sCkBAIC0yNSw4NiArMjUsMzAgQEAKICAgICAgICAgICAgICNpdGVt
NSB7IGJhY2tncm91bmQtY29sb3I6IGZ1Y2hzaWE7IH0KICAgICAgICAgPC9zdHlsZT4KICAgICAg
ICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4K
KyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy91aS1oZWxwZXIuanMiPjwv
c2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL21haW5mcmFtZS1zY3JvbGwt
c25hcC10ZXN0LmpzIj48L3NjcmlwdD4KICAgICAgICAgPHNjcmlwdD4KICAgICAgICAgd2luZG93
LmpzVGVzdElzQXN5bmMgPSB0cnVlOwogCi0gICAgICAgIHZhciB0YXJnZXRTY3JvbGxlcjsKLSAg
ICAgICAgdmFyIHNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7Ci0gICAgICAgIHZhciBzY3JvbGxQ
b3NpdGlvbkJlZm9yZVNuYXA7Ci0KLSAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFw
KCkKKyAgICAgICAgYXN5bmMgZnVuY3Rpb24gcnVuVGVzdHMoKQogICAgICAgICB7Ci0gICAgICAg
ICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMg
cG9zaXRpb24KLSAgICAgICAgICAgIGlmICh0YXJnZXRTY3JvbGxlci5zY3JvbGxMZWZ0ICE9IHNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKLSAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYg
ZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uLiBFeHBlY3RlZCAiICsgc2Nyb2xs
UG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgdGFyZ2V0U2Nyb2xsZXIuc2Nyb2xs
TGVmdCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2
IGhvbm9yZWQgc25hcCBwb2ludHMuIik7Ci0KKyAgICAgICAgICAgIGF3YWl0IFVJSGVscGVyLmRl
bGF5Rm9yKDApOworICAgICAgICAgICAgYXdhaXQgc2Nyb2xsR2xpZGVTaG91bGRTY3JvbGxUbyhk
b2N1bWVudC5zY3JvbGxpbmdFbGVtZW50LCBIT1JJWk9OVEFMLCAid2luZG93LmlubmVyV2lkdGgi
KTsKKyAgICAgICAgICAgIGF3YWl0IFVJSGVscGVyLmRlbGF5Rm9yKDApOworICAgICAgICAgICAg
YXdhaXQgc2hvcnRTY3JvbGxTaG91bGRTbmFwQmFjayhkb2N1bWVudC5zY3JvbGxpbmdFbGVtZW50
LCBIT1JJWk9OVEFMKTsKICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwogICAgICAgICB9CiAK
LSAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QoKQotICAgICAgICB7Ci0gICAgICAgICAg
ICBzY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSB0YXJnZXRTY3JvbGxlci5zY3JvbGxMZWZ0Owot
Ci0gICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gdGFyZ2V0U2Nyb2xsZXIub2Zmc2V0TGVmdCAr
IDIwOwotICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHRhcmdldFNjcm9sbGVyLm9mZnNldFRv
cCArIDIwOwotICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7Ci0g
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7
IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKLSAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygtMSwg
MCwgJ2JlZ2FuJywgJ25vbmUnKTsKLSAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygtMSwgMCwgJ2NoYW5nZWQnLCAnbm9uZScpOwot
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKC0xLCAwLCAnY2hhbmdlZCcsICdub25lJyk7Ci0gICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywg
J25vbmUnKTsKLSAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBs
ZXRlcyhjaGVja0ZvclNjcm9sbFNuYXApOwotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24g
Y2hlY2tGb3JTY3JvbGxHbGlkZSgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIC8vIFRoZSBkaXYg
c2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KLSAg
ICAgICAgICAgIGlmICh0YXJnZXRTY3JvbGxlci5zY3JvbGxMZWZ0ID09IHdpbmRvdy5pbm5lcldp
ZHRoKQotICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdp
bmRvdy4iKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJk
aXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIHdpbmRvdy5pbm5lcldp
ZHRoICsgIiwgYnV0IGdvdCAiICsgdGFyZ2V0U2Nyb2xsZXIuc2Nyb2xsTGVmdCk7Ci0KLSAgICAg
ICAgICAgIHNldFRpbWVvdXQoc2Nyb2xsU25hcFRlc3QsIDApOwotICAgICAgICB9Ci0KLSAgICAg
ICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KCkKLSAgICAgICAgewotICAgICAgICAgICAgc2Ny
b2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IHRhcmdldFNjcm9sbGVyLnNjcm9sbExlZnQ7Ci0KLSAg
ICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB0YXJnZXRTY3JvbGxlci5vZmZzZXRMZWZ0ICsgMjA7
Ci0gICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gdGFyZ2V0U2Nyb2xsZXIub2Zmc2V0VG9wICsg
MjA7Ci0gICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKLSAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8g
TWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQotICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKC0xLCAwLCAn
YmVnYW4nLCAnbm9uZScpOwotICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKC0xLCAwLCAnY2hhbmdlZCcsICdub25lJyk7Ci0gICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoLTEsIDAsICdjaGFuZ2VkJywgJ25vbmUnKTsKLSAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygtMSwgMCwgJ2NoYW5nZWQnLCAn
bm9uZScpOwotICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7Ci0gICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoLTEsIDAsICdu
b25lJywgJ2JlZ2luJyk7Ci0gICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoLTEsIDAsICdub25lJywgJ2NvbnRpbnVlJyk7Ci0gICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7Ci0gICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0
ZXJTY3JvbGxpbmdDb21wbGV0ZXMoY2hlY2tGb3JTY3JvbGxHbGlkZSk7Ci0gICAgICAgIH0KLQog
ICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQogICAgICAgICB7Ci0gICAgICAgICAgICB0YXJnZXRT
Y3JvbGxlciA9IGRvY3VtZW50LnNjcm9sbGluZ0VsZW1lbnQ7CiAgICAgICAgICAgICBpZiAod2lu
ZG93LmV2ZW50U2VuZGVyKSB7CiAgICAgICAgICAgICAgICAgaW50ZXJuYWxzLnNldFBsYXRmb3Jt
TW9tZW50dW1TY3JvbGxpbmdQcmVkaWN0aW9uRW5hYmxlZChmYWxzZSk7Ci0gICAgICAgICAgICAg
ICAgc2V0VGltZW91dChzY3JvbGxHbGlkZVRlc3QsIDApOworICAgICAgICAgICAgICAgIHJ1blRl
c3RzKCk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIHZhciBtZXNzYWdl
TG9jYXRpb24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaXRlbTAnKTsKICAgICAgICAgICAg
ICAgICB2YXIgbWVzc2FnZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwotICAgICAg
ICAgICAgICAgIG1lc3NhZ2UuaW5uZXJIVE1MID0gIjxwPlRoaXMgdGVzdCBpcyBiZXR0ZXIgcnVu
IHVuZGVyIER1bXBSZW5kZXJUcmVlLiBUbyBtYW51YWxseSB0ZXN0IGl0LCBwbGFjZSB0aGUgbW91
c2UgcG9pbnRlcjxici8+IgotICAgICAgICAgICAgICAgICAgICArICJpbnNpZGUgdGhlIHJlZCBy
ZWdpb24gYXQgdGhlIHRvcCBvZiB0aGUgcGFnZSwgYW5kIHRoZW4gdXNlIHRoZSBtb3VzZSB3aGVl
bCBvciBhIHR3by1maW5nZXIgc3dpcGUgdG8gbWFrZSBhPGJyLz4iCi0gICAgICAgICAgICAgICAg
ICAgICsgInNtYWxsIHN3aXBlIGdlc3R1cmUgd2l0aCBzb21lIG1vbWVudHVtLjxici8+PGJyLz4i
Ci0gICAgICAgICAgICAgICAgICAgICsgIlRoZSByZWdpb24gc2hvdWxkIHNjcm9sbCB0byBzaG93
IGEgZ3JlZW4gcmVnaW9uLjxici8+PGJyLz4iCi0gICAgICAgICAgICAgICAgICAgICsgIk5leHQs
IHBlcmZvcm0gYSBzbWFsbCBzY3JvbGwgZ2VzdHVyZSB0aGF0IGRvZXMgbm90IGludm9sdmUgbW9t
ZW50dW0uIFlvdSBzaG91bGQgYmVnaW4gdG8gc2VlIG9uZSBvZiB0aGUgY29sb3JzPGJyLz4iCi0g
ICAgICAgICAgICAgICAgICAgICsgInRvIHRoZSBsZWZ0IChvciByaWdodCkgb2YgdGhlIGN1cnJl
bnQgZ3JlZW4gYm94LiBXaGVuIHlvdSByZWxlYXNlIHRoZSB3aGVlbCwgdGhlIHJlZ2lvbiBzaG91
bGQgc2Nyb2xsIGJhY2sgc288YnIvPiIKLSAgICAgICAgICAgICAgICAgICAgKyAidGhhdCB0aGUg
cmVnaW9uIGlzIGEgc2luZ2xlIGNvbG9yLjxici8+PGJyLz4iCi0gICAgICAgICAgICAgICAgICAg
ICsgIllvdSBzaG91bGQgYWxzbyBiZSBhYmxlIHRvIHJlcGVhdCB0aGVzZSB0ZXN0IHN0ZXBzIGZv
ciB0aGUgdmVydGljYWwgcmVnaW9uIGJlbG93LjwvcD4iOworICAgICAgICAgICAgICAgIG1lc3Nh
Z2UuaW5uZXJIVE1MID0gIjxwPlRvIHJ1biB0aGlzIHRlc3QgbWFudWFsbHksIHNjcm9sbCB0aGUg
cGFnZSBob3Jpem9udGFsbHkuIFRoZSBwYWdlIHNob3VsZCAiCisgICAgICAgICAgICAgICAgICAg
ICsgInNuYXAgYmV0d2VlbiB1bmlmb3JtIGNvbG9ycyB3aGljaCBmaWxsIHRoZSB2aWV3LjxwPiI7
CiAgICAgICAgICAgICAgICAgbWVzc2FnZUxvY2F0aW9uLmFwcGVuZENoaWxkKG1lc3NhZ2UpOwog
ICAgICAgICAgICAgfQogICAgICAgICB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnktbWFpbmZy
YW1lLXNsb3ctaG9yaXpvbnRhbC5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5LW1haW5mcmFtZS1zbG93LWhv
cml6b250YWwuaHRtbAppbmRleCBjMWNiY2M4YjBhMmNkY2RkNmQyM2IwYWIyZjg5N2FlZTcxMzEy
NTJkLi5mZDJiMzgzZjRkNTQ1ZjA4NWFmMDg1OGE5NWU2OGI4NWJlNmZiODhiIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1tYW5kYXRvcnktbWFpbmZyYW1lLXNsb3ctaG9yaXpvbnRhbC5odG1sCisrKyBiL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1h
bmRhdG9yeS1tYWluZnJhbWUtc2xvdy1ob3Jpem9udGFsLmh0bWwKQEAgLTI1LDg1ICsyNSwzMCBA
QAogICAgICAgICAgICAgI2l0ZW01IHsgYmFja2dyb3VuZC1jb2xvcjogZnVjaHNpYTsgfQogICAg
ICAgICA8L3N0eWxlPgogICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3Vy
Y2VzL3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvbWFpbmZyYW1lLXNjcm9sbC1zbmFwLXRlc3QuanMiPjwvc2NyaXB0PgogICAgICAgICA8c2Ny
aXB0PgogICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CiAKLSAgICAgICAgdmFy
IHNjcm9sbGluZ1RhcmdldDsKLSAgICAgICAgdmFyIHNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7
Ci0gICAgICAgIHZhciBzY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7Ci0KLSAgICAgICAgZnVuY3Rp
b24gY2hlY2tGb3JTY3JvbGxTbmFwKCkgewotICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQg
aGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCi0gICAgICAgICAgICBp
ZiAoc2Nyb2xsaW5nVGFyZ2V0LnNjcm9sbExlZnQgIT0gc2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFw
KQotICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoYGRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBw
cm9wZXIgbG9jYXRpb24uICR7c2Nyb2xsaW5nVGFyZ2V0LnNjcm9sbExlZnR9IHZzLiAke3Njcm9s
bFBvc2l0aW9uQmVmb3JlU25hcH1gKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAg
ICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKLQotICAgICAgICAgICAg
ZmluaXNoSlNUZXN0KCk7Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFw
VGVzdCgpCisgICAgICAgIGFzeW5jIGZ1bmN0aW9uIHJ1blRlc3RzKCkKICAgICAgICAgewotICAg
ICAgICAgICAgc2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gc2Nyb2xsaW5nVGFyZ2V0LnNjcm9s
bExlZnQ7Ci0KLSAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSBzY3JvbGxpbmdUYXJnZXQub2Zm
c2V0TGVmdCArIDIwOwotICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHNjcm9sbGluZ1Rhcmdl
dC5vZmZzZXRUb3AgKyAyMDsKLSAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2
ZW50cygpOwotICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBz
dGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCi0g
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoLTEsIDAsICdiZWdhbicsICdub25lJyk7Ci0gICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoLTEsIDAsICdjaGFuZ2VkJywg
J25vbmUnKTsKLSAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcygtMSwgMCwgJ2NoYW5nZWQnLCAnbm9uZScpOwotICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAs
ICdlbmRlZCcsICdub25lJyk7Ci0gICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3Jv
bGxpbmdDb21wbGV0ZXMoY2hlY2tGb3JTY3JvbGxTbmFwKTsKLSAgICAgICAgfQotCi0gICAgICAg
IGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUoKQotICAgICAgICB7Ci0gICAgICAgICAgICAv
LyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAg
cG9pbnQuCi0gICAgICAgICAgICBpZiAoc2Nyb2xsaW5nVGFyZ2V0LnNjcm9sbExlZnQgPT0gd2lu
ZG93LmlubmVyV2lkdGgpCi0gICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVk
IHRvIG5leHQgd2luZG93LiIpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHRl
c3RGYWlsZWQoYGRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiAke3Njcm9sbGluZ1Rhcmdl
dC5zY3JvbGxMZWZ0fSB2cy4gJHt3aW5kb3cuaW5uZXJXaWR0aH1gKTsKLQotICAgICAgICAgICAg
c2V0VGltZW91dChzY3JvbGxTbmFwVGVzdCwgMCk7Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5j
dGlvbiBzY3JvbGxHbGlkZVRlc3QoKQotICAgICAgICB7Ci0gICAgICAgICAgICBzY3JvbGxQb3Np
dGlvbkJlZm9yZUdsaWRlID0gc2Nyb2xsaW5nVGFyZ2V0LnNjcm9sbExlZnQ7Ci0KLSAgICAgICAg
ICAgIHZhciBzdGFydFBvc1ggPSBzY3JvbGxpbmdUYXJnZXQub2Zmc2V0TGVmdCArIDIwOwotICAg
ICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHNjcm9sbGluZ1RhcmdldC5vZmZzZXRUb3AgKyAyMDsK
LSAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOwotICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtl
IHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCi0gICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoLTEsIDAsICdiZWdh
bicsICdub25lJyk7Ci0gICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoLTEsIDAsICdjaGFuZ2VkJywgJ25vbmUnKTsKLSAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygt
MSwgMCwgJ2NoYW5nZWQnLCAnbm9uZScpOwotICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKC0xLCAwLCAnY2hhbmdlZCcsICdub25l
Jyk7Ci0gICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKLSAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygtMSwgMCwgJ25vbmUn
LCAnYmVnaW4nKTsKLSAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcygtNCwgMCwgJ25vbmUnLCAnY29udGludWUnKTsKLSAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygw
LCAwLCAnbm9uZScsICdlbmQnKTsKLSAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNj
cm9sbGluZ0NvbXBsZXRlcyhjaGVja0ZvclNjcm9sbEdsaWRlKTsKKyAgICAgICAgICAgIGF3YWl0
IFVJSGVscGVyLmRlbGF5Rm9yKDApOworICAgICAgICAgICAgYXdhaXQgc2Nyb2xsR2xpZGVTaG91
bGRTY3JvbGxUbyhkb2N1bWVudC5zY3JvbGxpbmdFbGVtZW50LCBIT1JJWk9OVEFMLCAid2luZG93
LmlubmVyV2lkdGgiKTsKKyAgICAgICAgICAgIGF3YWl0IFVJSGVscGVyLmRlbGF5Rm9yKDApOwor
ICAgICAgICAgICAgYXdhaXQgc2hvcnRTY3JvbGxTaG91bGRTbmFwQmFjayhkb2N1bWVudC5zY3Jv
bGxpbmdFbGVtZW50LCBIT1JJWk9OVEFMKTsKKyAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwog
ICAgICAgICB9CiAKICAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKICAgICAgICAgewotICAgICAg
ICAgICAgc2Nyb2xsaW5nVGFyZ2V0ID0gZG9jdW1lbnQuc2Nyb2xsaW5nRWxlbWVudDsKICAgICAg
ICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKICAgICAgICAgICAgICAgICBpbnRlcm5h
bHMuc2V0UGxhdGZvcm1Nb21lbnR1bVNjcm9sbGluZ1ByZWRpY3Rpb25FbmFibGVkKGZhbHNlKTsK
LSAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KHNjcm9sbEdsaWRlVGVzdCwgMCk7CisgICAgICAg
ICAgICAgICAgcnVuVGVzdHMoKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAg
ICAgdmFyIG1lc3NhZ2VMb2NhdGlvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpdGVtMCcp
OwogICAgICAgICAgICAgICAgIHZhciBtZXNzYWdlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
ZGl2Jyk7Ci0gICAgICAgICAgICAgICAgbWVzc2FnZS5pbm5lckhUTUwgPSAiPHA+VGhpcyB0ZXN0
IGlzIGJldHRlciBydW4gdW5kZXIgRHVtcFJlbmRlclRyZWUuIFRvIG1hbnVhbGx5IHRlc3QgaXQs
IHBsYWNlIHRoZSBtb3VzZSBwb2ludGVyPGJyLz4iCi0gICAgICAgICAgICAgICAgICAgICsgImlu
c2lkZSB0aGUgcmVkIHJlZ2lvbiBhdCB0aGUgdG9wIG9mIHRoZSBwYWdlLCBhbmQgdGhlbiB1c2Ug
dGhlIG1vdXNlIHdoZWVsIG9yIGEgdHdvLWZpbmdlciBzd2lwZSB0byBtYWtlIGE8YnIvPiIKLSAg
ICAgICAgICAgICAgICAgICAgKyAic21hbGwgc3dpcGUgZ2VzdHVyZSB3aXRoIHNvbWUgbW9tZW50
dW0uPGJyLz48YnIvPiIKLSAgICAgICAgICAgICAgICAgICAgKyAiVGhlIHJlZ2lvbiBzaG91bGQg
c2Nyb2xsIHRvIHNob3cgYSBncmVlbiByZWdpb24uPGJyLz48YnIvPiIKLSAgICAgICAgICAgICAg
ICAgICAgKyAiTmV4dCwgcGVyZm9ybSBhIHNtYWxsIHNjcm9sbCBnZXN0dXJlIHRoYXQgZG9lcyBu
b3QgaW52b2x2ZSBtb21lbnR1bS4gWW91IHNob3VsZCBiZWdpbiB0byBzZWUgb25lIG9mIHRoZSBj
b2xvcnM8YnIvPiIKLSAgICAgICAgICAgICAgICAgICAgKyAidG8gdGhlIGxlZnQgKG9yIHJpZ2h0
KSBvZiB0aGUgY3VycmVudCBncmVlbiBib3guIFdoZW4geW91IHJlbGVhc2UgdGhlIHdoZWVsLCB0
aGUgcmVnaW9uIHNob3VsZCBzY3JvbGwgYmFjayBzbzxici8+IgotICAgICAgICAgICAgICAgICAg
ICArICJ0aGF0IHRoZSByZWdpb24gaXMgYSBzaW5nbGUgY29sb3IuPGJyLz48YnIvPiIKLSAgICAg
ICAgICAgICAgICAgICAgKyAiWW91IHNob3VsZCBhbHNvIGJlIGFibGUgdG8gcmVwZWF0IHRoZXNl
IHRlc3Qgc3RlcHMgZm9yIHRoZSB2ZXJ0aWNhbCByZWdpb24gYmVsb3cuPC9wPiI7CisgICAgICAg
ICAgICAgICAgbWVzc2FnZS5pbm5lckhUTUwgPSAiPHA+VG8gcnVuIHRoaXMgdGVzdCBtYW51YWxs
eSwgc2Nyb2xsIHRoZSBwYWdlIGhvcml6b250YWxseS4gVGhlIHBhZ2Ugc2hvdWxkICIKKyAgICAg
ICAgICAgICAgICAgICAgKyAic25hcCBiZXR3ZWVuIHVuaWZvcm0gY29sb3JzIHdoaWNoIGZpbGwg
dGhlIHZpZXcuPHA+IjsKICAgICAgICAgICAgICAgICBtZXNzYWdlTG9jYXRpb24uYXBwZW5kQ2hp
bGQobWVzc2FnZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1h
bmRhdG9yeS1tYWluZnJhbWUtc2xvdy12ZXJ0aWNhbC5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5LW1haW5m
cmFtZS1zbG93LXZlcnRpY2FsLmh0bWwKaW5kZXggMGVmZGI4YmZjYTIzNDhmZDUyNTc1NmIxMTJk
NzQ1MWY4ZmY0YWNmMC4uYjFiZTQ1OGQyMTljOTQ1NmI2Zjk0YjJmNTRkZGNmM2I2NDc4MmFmYiAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5LW1haW5mcmFtZS1zbG93LXZlcnRpY2FsLmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtbWFuZGF0b3J5LW1haW5mcmFtZS1zbG93LXZlcnRpY2FsLmh0bWwKQEAgLTI1LDg3ICsy
NSwzMCBAQAogICAgICAgICAgICAgI2l0ZW01IHsgYmFja2dyb3VuZC1jb2xvcjogZnVjaHNpYTsg
fQogICAgICAgICA8L3N0eWxlPgogICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
cmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMvbWFpbmZyYW1lLXNjcm9sbC1zbmFwLXRlc3QuanMiPjwvc2NyaXB0PgogICAgICAg
ICA8c2NyaXB0PgogICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CiAKLSAgICAg
ICAgdmFyIHRhcmdldFNjcm9sbGVyOwotICAgICAgICB2YXIgc2Nyb2xsUG9zaXRpb25CZWZvcmVH
bGlkZTsKLSAgICAgICAgdmFyIHNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKLQotICAgICAgICBm
dW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAoKQorICAgICAgICBhc3luYyBmdW5jdGlvbiBydW5U
ZXN0cygpCiAgICAgICAgIHsKLSAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25h
cHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgotICAgICAgICAgICAgaWYgKHRhcmdl
dFNjcm9sbGVyLnNjcm9sbFRvcCAhPSBzY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCi0gICAgICAg
ICAgICAgICAgdGVzdEZhaWxlZChgZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2Nh
dGlvbi4gKCR7dGFyZ2V0U2Nyb2xsZXIuc2Nyb2xsVG9wfSB2cy4gJHtzY3JvbGxQb3NpdGlvbkJl
Zm9yZVNuYXB9KWApOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHRlc3RQYXNz
ZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOwotCisgICAgICAgICAgICBhd2FpdCBVSUhl
bHBlci5kZWxheUZvcigwKTsKKyAgICAgICAgICAgIGF3YWl0IHNjcm9sbEdsaWRlU2hvdWxkU2Ny
b2xsVG8oZG9jdW1lbnQuc2Nyb2xsaW5nRWxlbWVudCwgVkVSVElDQUwsICJ3aW5kb3cuaW5uZXJI
ZWlnaHQiKTsKKyAgICAgICAgICAgIGF3YWl0IFVJSGVscGVyLmRlbGF5Rm9yKDApOworICAgICAg
ICAgICAgYXdhaXQgc2hvcnRTY3JvbGxTaG91bGRTbmFwQmFjayhkb2N1bWVudC5zY3JvbGxpbmdF
bGVtZW50LCBWRVJUSUNBTCk7CiAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKICAgICAgICAg
fQogCi0gICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KCkKLSAgICAgICAgewotICAgICAg
ICAgICAgLy8gU2VlIHdoZXJlIG91ciBkaXYgbGl2ZXM6Ci0gICAgICAgICAgICBzY3JvbGxQb3Np
dGlvbkJlZm9yZVNuYXAgPSB0YXJnZXRTY3JvbGxlci5zY3JvbGxUb3A7Ci0KLSAgICAgICAgICAg
IHZhciBzdGFydFBvc1ggPSB0YXJnZXRTY3JvbGxlci5vZmZzZXRMZWZ0ICsgMjA7Ci0gICAgICAg
ICAgICB2YXIgc3RhcnRQb3NZID0gdGFyZ2V0U2Nyb2xsZXIub2Zmc2V0VG9wICsgMjA7Ci0gICAg
ICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKLSAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJl
IHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQotICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIC0xLCAnYmVnYW4nLCAn
bm9uZScpOwotICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKDAsIC0xLCAnY2hhbmdlZCcsICdub25lJyk7Ci0gICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgLTEs
ICdjaGFuZ2VkJywgJ25vbmUnKTsKLSAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOwotICAg
ICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGNoZWNrRm9y
U2Nyb2xsU25hcCk7Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9s
bEdsaWRlKCkKLSAgICAgICAgewotICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBz
Y3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgotICAgICAgICAgICAgaWYg
KHRhcmdldFNjcm9sbGVyLnNjcm9sbFRvcCA9PSB3aW5kb3cuaW5uZXJIZWlnaHQpCi0gICAgICAg
ICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOwotICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoYGRpdiBkaWQgbm90IGhv
bm9yIHNuYXAgcG9pbnRzLiAoJHt0YXJnZXRTY3JvbGxlci5zY3JvbGxUb3B9IHZzLiAke3dpbmRv
dy5pbm5lckhlaWdodH0pYCk7Ci0KLSAgICAgICAgICAgIHNldFRpbWVvdXQoc2Nyb2xsU25hcFRl
c3QsIDApOwotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KCkK
LSAgICAgICAgewotICAgICAgICAgICAgc2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IHRhcmdl
dFNjcm9sbGVyLnNjcm9sbFRvcDsKLQotICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHRhcmdl
dFNjcm9sbGVyLm9mZnNldExlZnQgKyAyMDsKLSAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB0
YXJnZXRTY3JvbGxlci5vZmZzZXRUb3AgKyAyMDsKLSAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
bml0b3JXaGVlbEV2ZW50cygpOwotICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8o
c3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0
aGUgaUZyYW1lCi0gICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoMCwgLTEsICdiZWdhbicsICdub25lJyk7Ci0gICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgLTEs
ICdjaGFuZ2VkJywgJ25vbmUnKTsKLSAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAtMSwgJ2NoYW5nZWQnLCAnbm9uZScpOwot
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKDAsIC0xLCAnY2hhbmdlZCcsICdub25lJyk7Ci0gICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywg
J25vbmUnKTsKLSAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcygwLCAtMSwgJ25vbmUnLCAnYmVnaW4nKTsKLSAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAtNCwg
J25vbmUnLCAnY29udGludWUnKTsKLSAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKLSAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhjaGVja0ZvclNj
cm9sbEdsaWRlKTsKLSAgICAgICAgfQotCiAgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIHRhcmdldFNjcm9sbGVyID0gZG9jdW1lbnQuc2Nyb2xsaW5nRWxl
bWVudDsKICAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKICAgICAgICAgICAg
ICAgICBpbnRlcm5hbHMuc2V0UGxhdGZvcm1Nb21lbnR1bVNjcm9sbGluZ1ByZWRpY3Rpb25FbmFi
bGVkKGZhbHNlKTsKLSAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KHNjcm9sbEdsaWRlVGVzdCwg
MCk7CisgICAgICAgICAgICAgICAgcnVuVGVzdHMoKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICAgICAgdmFyIG1lc3NhZ2VMb2NhdGlvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdpdGVtMCcpOwogICAgICAgICAgICAgICAgIHZhciBtZXNzYWdlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgnZGl2Jyk7Ci0gICAgICAgICAgICAgICAgbWVzc2FnZS5pbm5lckhUTUwgPSAi
PHA+VGhpcyB0ZXN0IGlzIGJldHRlciBydW4gdW5kZXIgRHVtcFJlbmRlclRyZWUuIFRvIG1hbnVh
bGx5IHRlc3QgaXQsIHBsYWNlIHRoZSBtb3VzZSBwb2ludGVyPGJyLz4iCi0gICAgICAgICAgICAg
ICAgICAgICsgImluc2lkZSB0aGUgcmVkIHJlZ2lvbiBhdCB0aGUgdG9wIG9mIHRoZSBwYWdlLCBh
bmQgdGhlbiB1c2UgdGhlIG1vdXNlIHdoZWVsIG9yIGEgdHdvLWZpbmdlciBzd2lwZSB0byBtYWtl
IGE8YnIvPiIKLSAgICAgICAgICAgICAgICAgICAgKyAic21hbGwgc3dpcGUgZ2VzdHVyZSB3aXRo
IHNvbWUgbW9tZW50dW0uPGJyLz48YnIvPiIKLSAgICAgICAgICAgICAgICAgICAgKyAiVGhlIHJl
Z2lvbiBzaG91bGQgc2Nyb2xsIHRvIHNob3cgYSBncmVlbiByZWdpb24uPGJyLz48YnIvPiIKLSAg
ICAgICAgICAgICAgICAgICAgKyAiTmV4dCwgcGVyZm9ybSBhIHNtYWxsIHNjcm9sbCBnZXN0dXJl
IHRoYXQgZG9lcyBub3QgaW52b2x2ZSBtb21lbnR1bS4gWW91IHNob3VsZCBiZWdpbiB0byBzZWUg
b25lIG9mIHRoZSBjb2xvcnM8YnIvPiIKLSAgICAgICAgICAgICAgICAgICAgKyAidG8gdGhlIGxl
ZnQgKG9yIHJpZ2h0KSBvZiB0aGUgY3VycmVudCBncmVlbiBib3guIFdoZW4geW91IHJlbGVhc2Ug
dGhlIHdoZWVsLCB0aGUgcmVnaW9uIHNob3VsZCBzY3JvbGwgYmFjayBzbzxici8+IgotICAgICAg
ICAgICAgICAgICAgICArICJ0aGF0IHRoZSByZWdpb24gaXMgYSBzaW5nbGUgY29sb3IuPGJyLz48
YnIvPiIKLSAgICAgICAgICAgICAgICAgICAgKyAiWW91IHNob3VsZCBhbHNvIGJlIGFibGUgdG8g
cmVwZWF0IHRoZXNlIHRlc3Qgc3RlcHMgZm9yIHRoZSB2ZXJ0aWNhbCByZWdpb24gYmVsb3cuPC9w
PiI7CisgICAgICAgICAgICAgICAgbWVzc2FnZS5pbm5lckhUTUwgPSAiPHA+VG8gcnVuIHRoaXMg
dGVzdCBtYW51YWxseSwgc2Nyb2xsIHRoZSBwYWdlIHZlcnRpY2FsbHkuIFRoZSBwYWdlIHNob3Vs
ZCAiCisgICAgICAgICAgICAgICAgICAgICsgInNuYXAgYmV0d2VlbiB1bmlmb3JtIGNvbG9ycyB3
aGljaCBmaWxsIHRoZSB2aWV3LjxwPiI7CiAgICAgICAgICAgICAgICAgbWVzc2FnZUxvY2F0aW9u
LmFwcGVuZENoaWxkKG1lc3NhZ2UpOwogICAgICAgICAgICAgfQogICAgICAgICB9CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1tYW5kYXRvcnktbWFpbmZyYW1lLXZlcnRpY2FsLWxlZ2FjeS5odG1sIGIvTGF5b3V0
VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFu
ZGF0b3J5LW1haW5mcmFtZS12ZXJ0aWNhbC1sZWdhY3kuaHRtbAppbmRleCBlNzhhYWQ0YWU1OTQw
YjI3ZWJmZWFiOTY1NzMyMTQzOWIwMTAyNDZmLi44NDc4ZGUwYjE4ZjBmOTdiMjJjOGQ0M2EyOTBk
YmY1OTU5ZWNhMjM3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnktbWFpbmZyYW1lLXZlcnRpY2Fs
LWxlZ2FjeS5odG1sCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1tYWluZnJhbWUtdmVydGljYWwtbGVnYWN5
Lmh0bWwKQEAgLTIzLDg2ICsyMywzMCBAQAogICAgICAgICAgICAgI2l0ZW01IHsgYmFja2dyb3Vu
ZC1jb2xvcjogZnVjaHNpYTsgfQogICAgICAgICA8L3N0eWxlPgogICAgICAgICA8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+CisgICAg
ICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvbWFpbmZyYW1lLXNjcm9sbC1zbmFwLXRlc3QuanMi
Pjwvc2NyaXB0PgogICAgICAgICA8c2NyaXB0PgogICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3lu
YyA9IHRydWU7CiAKLSAgICAgICAgdmFyIHNjcm9sbGluZ1RhcmdldDsKLSAgICAgICAgdmFyIHNj
cm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7Ci0gICAgICAgIHZhciBzY3JvbGxQb3NpdGlvbkJlZm9y
ZVNuYXA7Ci0KLSAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKCkKKyAgICAgICAg
YXN5bmMgZnVuY3Rpb24gcnVuVGVzdHMoKQogICAgICAgICB7Ci0gICAgICAgICAgICAvLyBUaGUg
ZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KLSAg
ICAgICAgICAgIGlmIChzY3JvbGxpbmdUYXJnZXQuc2Nyb2xsVG9wICE9IHNjcm9sbFBvc2l0aW9u
QmVmb3JlU25hcCkKLSAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKGBkaXYgZGlkIG5vdCBzbmFw
IGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uLiAoJHtzY3JvbGxpbmdUYXJnZXQuc2Nyb2xsVG9wfSB2
cy4gJHtzY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXB9KWApOwotICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOwotCisg
ICAgICAgICAgICBhd2FpdCBVSUhlbHBlci5kZWxheUZvcigwKTsKKyAgICAgICAgICAgIGF3YWl0
IHNjcm9sbEdsaWRlU2hvdWxkU2Nyb2xsVG8oZG9jdW1lbnQuc2Nyb2xsaW5nRWxlbWVudCwgVkVS
VElDQUwsICJ3aW5kb3cuaW5uZXJIZWlnaHQiKTsKKyAgICAgICAgICAgIGF3YWl0IFVJSGVscGVy
LmRlbGF5Rm9yKDApOworICAgICAgICAgICAgYXdhaXQgc2hvcnRTY3JvbGxTaG91bGRTbmFwQmFj
ayhkb2N1bWVudC5zY3JvbGxpbmdFbGVtZW50LCBWRVJUSUNBTCk7CiAgICAgICAgICAgICBmaW5p
c2hKU1Rlc3QoKTsKICAgICAgICAgfQogCi0gICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0
KCkKLSAgICAgICAgewotICAgICAgICAgICAgc2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gc2Ny
b2xsaW5nVGFyZ2V0LnNjcm9sbFRvcDsKLQotICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHNj
cm9sbGluZ1RhcmdldC5vZmZzZXRMZWZ0ICsgMjA7Ci0gICAgICAgICAgICB2YXIgc3RhcnRQb3NZ
ID0gc2Nyb2xsaW5nVGFyZ2V0Lm9mZnNldFRvcCArIDIwOwotICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7Ci0gICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1v
dmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRz
aWRlIHRoZSBpRnJhbWUKLSAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAtMSwgJ2JlZ2FuJywgJ25vbmUnKTsKLSAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygw
LCAtMSwgJ2NoYW5nZWQnLCAnbm9uZScpOwotICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIC0xLCAnY2hhbmdlZCcsICdub25l
Jyk7Ci0gICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKLSAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhjaGVja0ZvclNjcm9sbFNuYXApOwotICAg
ICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSgpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkg
dG8gdGhlIG5leHQgc25hcCBwb2ludC4KLSAgICAgICAgICAgIGlmIChzY3JvbGxpbmdUYXJnZXQu
c2Nyb2xsVG9wID09IHdpbmRvdy5pbm5lckhlaWdodCkKLSAgICAgICAgICAgICAgICB0ZXN0UGFz
c2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7Ci0gICAgICAgICAgICBlbHNlCi0g
ICAgICAgICAgICAgICAgdGVzdEZhaWxlZChgZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMu
ICgke3Njcm9sbGluZ1RhcmdldC5zY3JvbGxUb3B9IHZzLiAke3dpbmRvdy5pbm5lckhlaWdodH0p
YCk7Ci0KLSAgICAgICAgICAgIHNldFRpbWVvdXQoc2Nyb2xsU25hcFRlc3QsIDApOwotICAgICAg
ICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KCkKLSAgICAgICAgewotICAg
ICAgICAgICAgc2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IHNjcm9sbGluZ1RhcmdldC5zY3Jv
bGxUb3A7Ci0KLSAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSBzY3JvbGxpbmdUYXJnZXQub2Zm
c2V0TGVmdCArIDIwOwotICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHNjcm9sbGluZ1Rhcmdl
dC5vZmZzZXRUb3AgKyAyMDsKLSAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2
ZW50cygpOwotICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBz
dGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCi0g
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoMCwgLTEsICdiZWdhbicsICdub25lJyk7Ci0gICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgLTEsICdjaGFuZ2VkJywg
J25vbmUnKTsKLSAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcygwLCAtMSwgJ2NoYW5nZWQnLCAnbm9uZScpOwotICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIC0x
LCAnY2hhbmdlZCcsICdub25lJyk7Ci0gICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKLSAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcygwLCAtMSwgJ25vbmUnLCAnYmVnaW4nKTsKLSAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAtNCwgJ25vbmUnLCAnY29u
dGludWUnKTsKLSAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKLSAgICAgICAgICAgIGV2ZW50
U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhjaGVja0ZvclNjcm9sbEdsaWRlKTsK
LSAgICAgICAgfQotCiAgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIHNjcm9sbGluZ1RhcmdldCA9IGRvY3VtZW50LnNjcm9sbGluZ0VsZW1lbnQ7CiAgICAg
ICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CiAgICAgICAgICAgICAgICAgaW50ZXJu
YWxzLnNldFBsYXRmb3JtTW9tZW50dW1TY3JvbGxpbmdQcmVkaWN0aW9uRW5hYmxlZChmYWxzZSk7
Ci0gICAgICAgICAgICAgICAgc2V0VGltZW91dChzY3JvbGxHbGlkZVRlc3QsIDApOworICAgICAg
ICAgICAgICAgIHJ1blRlc3RzKCk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
ICAgIHZhciBtZXNzYWdlTG9jYXRpb24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaXRlbTAn
KTsKICAgICAgICAgICAgICAgICB2YXIgbWVzc2FnZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J2RpdicpOwotICAgICAgICAgICAgICAgIG1lc3NhZ2UuaW5uZXJIVE1MID0gIjxwPlRoaXMgdGVz
dCBpcyBiZXR0ZXIgcnVuIHVuZGVyIER1bXBSZW5kZXJUcmVlLiBUbyBtYW51YWxseSB0ZXN0IGl0
LCBwbGFjZSB0aGUgbW91c2UgcG9pbnRlcjxici8+IgotICAgICAgICAgICAgICAgICAgICArICJp
bnNpZGUgdGhlIHJlZCByZWdpb24gYXQgdGhlIHRvcCBvZiB0aGUgcGFnZSwgYW5kIHRoZW4gdXNl
IHRoZSBtb3VzZSB3aGVlbCBvciBhIHR3by1maW5nZXIgc3dpcGUgdG8gbWFrZSBhPGJyLz4iCi0g
ICAgICAgICAgICAgICAgICAgICsgInNtYWxsIHN3aXBlIGdlc3R1cmUgd2l0aCBzb21lIG1vbWVu
dHVtLjxici8+PGJyLz4iCi0gICAgICAgICAgICAgICAgICAgICsgIlRoZSByZWdpb24gc2hvdWxk
IHNjcm9sbCB0byBzaG93IGEgZ3JlZW4gcmVnaW9uLjxici8+PGJyLz4iCi0gICAgICAgICAgICAg
ICAgICAgICsgIk5leHQsIHBlcmZvcm0gYSBzbWFsbCBzY3JvbGwgZ2VzdHVyZSB0aGF0IGRvZXMg
bm90IGludm9sdmUgbW9tZW50dW0uIFlvdSBzaG91bGQgYmVnaW4gdG8gc2VlIG9uZSBvZiB0aGUg
Y29sb3JzPGJyLz4iCi0gICAgICAgICAgICAgICAgICAgICsgInRvIHRoZSBsZWZ0IChvciByaWdo
dCkgb2YgdGhlIGN1cnJlbnQgZ3JlZW4gYm94LiBXaGVuIHlvdSByZWxlYXNlIHRoZSB3aGVlbCwg
dGhlIHJlZ2lvbiBzaG91bGQgc2Nyb2xsIGJhY2sgc288YnIvPiIKLSAgICAgICAgICAgICAgICAg
ICAgKyAidGhhdCB0aGUgcmVnaW9uIGlzIGEgc2luZ2xlIGNvbG9yLjxici8+PGJyLz4iCi0gICAg
ICAgICAgICAgICAgICAgICsgIllvdSBzaG91bGQgYWxzbyBiZSBhYmxlIHRvIHJlcGVhdCB0aGVz
ZSB0ZXN0IHN0ZXBzIGZvciB0aGUgdmVydGljYWwgcmVnaW9uIGJlbG93LjwvcD4iOworICAgICAg
ICAgICAgICAgIG1lc3NhZ2UuaW5uZXJIVE1MID0gIjxwPlRvIHJ1biB0aGlzIHRlc3QgbWFudWFs
bHksIHNjcm9sbCB0aGUgcGFnZSB2ZXJ0aWNhbGx5LiBUaGUgcGFnZSBzaG91bGQgIgorICAgICAg
ICAgICAgICAgICAgICArICJzbmFwIGJldHdlZW4gdW5pZm9ybSBjb2xvcnMgd2hpY2ggZmlsbCB0
aGUgdmlldy48cD4iOwogICAgICAgICAgICAgICAgIG1lc3NhZ2VMb2NhdGlvbi5hcHBlbmRDaGls
ZChtZXNzYWdlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFu
ZGF0b3J5LW1haW5mcmFtZS12ZXJ0aWNhbC10aGVuLWhvcml6b250YWwuaHRtbCBiL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRh
dG9yeS1tYWluZnJhbWUtdmVydGljYWwtdGhlbi1ob3Jpem9udGFsLmh0bWwKaW5kZXggZDhkMGVm
YWU0Mzc3MWYzMDZjNDI0Y2ZmZmQ0YjJkNzJjYWVhNDk3Ny4uNjQyN2ExMTRlNDhiMjZiZTY1YjU1
ZTdiODY4ZGY4Njc1NjkxYTlmOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5LW1haW5mcmFtZS12
ZXJ0aWNhbC10aGVuLWhvcml6b250YWwuaHRtbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnktbWFpbmZyYW1l
LXZlcnRpY2FsLXRoZW4taG9yaXpvbnRhbC5odG1sCkBAIC0yNSwzOSArMjUsNDIgQEAKICAgICAg
ICAgICAgICNpdGVtNSB7IGJhY2tncm91bmQtY29sb3I6IGZ1Y2hzaWE7IH0KICAgICAgICAgPC9z
dHlsZT4KICAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0Lmpz
Ij48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy91aS1o
ZWxwZXIuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL21haW5m
cmFtZS1zY3JvbGwtc25hcC10ZXN0LmpzIj48L3NjcmlwdD4KICAgICAgICAgPHNjcmlwdD4KICAg
ICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwogCi0gICAgICAgIGZ1bmN0aW9uIHNj
cm9sbFNuYXBUZXN0KCkKKyAgICAgICAgYXN5bmMgZnVuY3Rpb24gcnVuVGVzdCgpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSBkb2N1bWVudC5ib2R5Lm9mZnNldExlZnQg
KyAyMDsKLSAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSBkb2N1bWVudC5ib2R5Lm9mZnNldFRv
cCArIDIwOwotICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7Ci0g
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7
Ci0gICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoMCwgLTEsICdiZWdhbicsICdub25lJyk7Ci0gICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgLTEsICdjaGFuZ2Vk
JywgJ25vbmUnKTsKLSAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcygtMSwgMCwgJ2NoYW5nZWQnLCAnbm9uZScpOwotICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKC0x
LCAwLCAnY2hhbmdlZCcsICdub25lJyk7Ci0gICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoLTEsIDAsICdjaGFuZ2VkJywgJ25vbmUn
KTsKLSAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOwotICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKC0xLCAwLCAnbm9uZScs
ICdiZWdpbicpOwotICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKC00LCAwLCAnbm9uZScsICdjb250aW51ZScpOwotICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAs
IDAsICdub25lJywgJ2VuZCcpOwotICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Ny
b2xsaW5nQ29tcGxldGVzKCgpID0+IHsKLSAgICAgICAgICAgICAgICBpZiAoZG9jdW1lbnQuc2Ny
b2xsaW5nRWxlbWVudC5zY3JvbGxUb3AgPT0gMCkKLSAgICAgICAgICAgICAgICAgICAgdGVzdFBh
c3NlZCgic2Nyb2xsIG9mZnNldCBzbmFwcGVkIGJhY2sgdG8gdG9wLiIpOwotICAgICAgICAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZChgZGlkIG5vdCBob25vciBz
bmFwIHBvaW50cyAoZXhwZWN0ZWQgMCwgb2JzZXJ2ZWQgJHtkb2N1bWVudC5zY3JvbGxpbmdFbGVt
ZW50LnNjcm9sbFRvcH0pLmApOworICAgICAgICAgICAgLy8gVGhlc2UgYXJyYXlzIGFyZSBhcmd1
bWVudHMgdGhhdCB3aWxsIGJlIHBhc3NlZCB0byBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMuCisgICAgICAgICAgICBsZXQgc2Nyb2xsTW90aW9ucyA9
IFsKKyAgICAgICAgICAgICAgICBbMCwgLTEsICdiZWdhbicsICdub25lJ10sCisgICAgICAgICAg
ICAgICAgWzAsIC0xLCAnY2hhbmdlZCcsICdub25lJ10sCisgICAgICAgICAgICAgICAgWy0xLCAw
LCAnY2hhbmdlZCcsICdub25lJ10sCisgICAgICAgICAgICAgICAgWy0xLCAwLCAnY2hhbmdlZCcs
ICdub25lJ10sCisgICAgICAgICAgICAgICAgWy0xLCAwLCAnY2hhbmdlZCcsICdub25lJ10sCisg
ICAgICAgICAgICAgICAgWzAsIDAsICdlbmRlZCcsICdub25lJ10sCisgICAgICAgICAgICAgICAg
Wy0xLCAwLCAnbm9uZScsICdiZWdpbiddLAorICAgICAgICAgICAgICAgIFstNCwgMCwgJ25vbmUn
LCAnY29udGludWUnXSwKKyAgICAgICAgICAgICAgICBbMCwgMCwgJ25vbmUnLCAnZW5kJ10sCisg
ICAgICAgICAgICBdOwogCi0gICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgICAg
ICAgICB9KTsKKyAgICAgICAgICAgIGF3YWl0IFVJSGVscGVyLmRlbGF5Rm9yKDApOworICAgICAg
ICAgICAgYXdhaXQgZG9TY3JvbGxUZXN0KGRvY3VtZW50LnNjcm9sbGluZ0VsZW1lbnQsIFZFUlRJ
Q0FMX0FORF9IT1JJWk9OVEFMLCBzY3JvbGxNb3Rpb25zKTsKKworICAgICAgICAgICAgaWYgKGRv
Y3VtZW50LnNjcm9sbGluZ0VsZW1lbnQuc2Nyb2xsVG9wID09IDApCisgICAgICAgICAgICAgICAg
dGVzdFBhc3NlZCgic2Nyb2xsIG9mZnNldCBzbmFwcGVkIGJhY2sgdG8gdG9wLiIpOworICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoYGRpZCBub3QgaG9ub3Igc25h
cCBwb2ludHMgKGV4cGVjdGVkIDAsIG9ic2VydmVkICR7ZG9jdW1lbnQuc2Nyb2xsaW5nRWxlbWVu
dC5zY3JvbGxUb3B9KS5gKTsKKworICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CiAgICAgICAg
IH0KIAogICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQogICAgICAgICB7CiAgICAgICAgICAgICBp
ZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CiAgICAgICAgICAgICAgICAgaW50ZXJuYWxzLnNldFBs
YXRmb3JtTW9tZW50dW1TY3JvbGxpbmdQcmVkaWN0aW9uRW5hYmxlZChmYWxzZSk7Ci0gICAgICAg
ICAgICAgICAgc2V0VGltZW91dChzY3JvbGxTbmFwVGVzdCwgMCk7CisgICAgICAgICAgICAgICAg
cnVuVGVzdCgpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICB2YXIgbWVz
c2FnZUxvY2F0aW9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2l0ZW0wJyk7CiAgICAgICAg
ICAgICAgICAgdmFyIG1lc3NhZ2UgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1tYWluZnJhbWUtdmVydGljYWwtd2l0aC1tYXJnaW4uaHRt
bCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLW1hbmRhdG9yeS1tYWluZnJhbWUtdmVydGljYWwtd2l0aC1tYXJnaW4uaHRtbAppbmRl
eCA4MjhkODBiMjMwOTg1MjU5OWRhYzhjNmYzNjg0ODJhZTM1NjAwMTQ4Li41Yzk5OTJmNGIwZmUx
OTU5OWZkZjg1YmM3MGUwNGY3ZWRjNGRjMDJlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnktbWFp
bmZyYW1lLXZlcnRpY2FsLXdpdGgtbWFyZ2luLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5LW1haW5m
cmFtZS12ZXJ0aWNhbC13aXRoLW1hcmdpbi5odG1sCkBAIC0yOSw4MSArMjksMzAgQEAKICAgICAg
ICAgICAgICNpdGVtNSB7IGJhY2tncm91bmQtY29sb3I6IGZ1Y2hzaWE7IH0KICAgICAgICAgPC9z
dHlsZT4KICAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0Lmpz
Ij48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy91aS1o
ZWxwZXIuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL21haW5m
cmFtZS1zY3JvbGwtc25hcC10ZXN0LmpzIj48L3NjcmlwdD4KICAgICAgICAgPHNjcmlwdD4KICAg
ICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwogCi0gICAgICAgIHZhciBzY3JvbGxp
bmdUYXJnZXQ7Ci0gICAgICAgIHZhciBzY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOwotICAgICAg
ICB2YXIgc2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOwotCi0gICAgICAgIGZ1bmN0aW9uIGNoZWNr
Rm9yU2Nyb2xsU25hcCgpCisgICAgICAgIGFzeW5jIGZ1bmN0aW9uIHJ1blRlc3RzKCkKICAgICAg
ICAgewotICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8g
dGhlIHByZXZpb3VzIHBvc2l0aW9uCi0gICAgICAgICAgICBpZiAoc2Nyb2xsaW5nVGFyZ2V0LnNj
cm9sbFRvcCAhPSBzY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCi0gICAgICAgICAgICAgICAgdGVz
dEZhaWxlZChgZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbi4gKCR7c2Ny
b2xsaW5nVGFyZ2V0LnNjcm9sbFRvcH0gdnMuICR7c2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwfSlg
KTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9u
b3JlZCBzbmFwIHBvaW50cy4iKTsKLQorICAgICAgICAgICAgYXdhaXQgVUlIZWxwZXIuZGVsYXlG
b3IoMCk7CisgICAgICAgICAgICBhd2FpdCBzY3JvbGxHbGlkZVNob3VsZFNjcm9sbFRvKGRvY3Vt
ZW50LnNjcm9sbGluZ0VsZW1lbnQsIFZFUlRJQ0FMLCAid2luZG93LmlubmVySGVpZ2h0ICsgNTAi
KTsKKyAgICAgICAgICAgIGF3YWl0IFVJSGVscGVyLmRlbGF5Rm9yKDApOworICAgICAgICAgICAg
YXdhaXQgc2hvcnRTY3JvbGxTaG91bGRTbmFwQmFjayhkb2N1bWVudC5zY3JvbGxpbmdFbGVtZW50
LCBWRVJUSUNBTCk7CiAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKICAgICAgICAgfQogCi0g
ICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KCkKLSAgICAgICAgewotICAgICAgICAgICAg
c2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gc2Nyb2xsaW5nVGFyZ2V0LnNjcm9sbFRvcDsKLQot
ICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHNjcm9sbGluZ1RhcmdldC5vZmZzZXRMZWZ0ICsg
MjA7Ci0gICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gc2Nyb2xsaW5nVGFyZ2V0Lm9mZnNldFRv
cCArIDIwOwotICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7Ci0g
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7
IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKLSAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAt
MSwgJ2JlZ2FuJywgJ25vbmUnKTsKLSAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAtMSwgJ2NoYW5nZWQnLCAnbm9uZScpOwot
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKDAsIC0xLCAnY2hhbmdlZCcsICdub25lJyk7Ci0gICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywg
J25vbmUnKTsKLSAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBs
ZXRlcyhjaGVja0ZvclNjcm9sbFNuYXApOwotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24g
Y2hlY2tGb3JTY3JvbGxHbGlkZSgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIC8vIFRoZSBkaXYg
c2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludCwgd2hp
Y2ggc2hvdWxkIGJlIHRoZSBoZWlnaHQKLSAgICAgICAgICAgIC8vIG9mIHRoZSBmaXJzdCBkaXYg
cGx1cyB0aGUgcm9vdCBlbGVtZW50J3MgdG9wIG1hcmdpbiAoNTAgcGl4ZWxzKS4KLSAgICAgICAg
ICAgIGlmIChzY3JvbGxpbmdUYXJnZXQuc2Nyb2xsVG9wID09IHdpbmRvdy5pbm5lckhlaWdodCAr
IDUwKQotICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdp
bmRvdy4iKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKGBk
aXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gKCR7c2Nyb2xsaW5nVGFyZ2V0LnNjcm9sbFRv
cH0gdnMuICR7d2luZG93LmlubmVySGVpZ2h0fSlgKTsKLQotICAgICAgICAgICAgc2V0VGltZW91
dChzY3JvbGxTbmFwVGVzdCwgMCk7Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBzY3Jv
bGxHbGlkZVRlc3QoKQotICAgICAgICB7Ci0gICAgICAgICAgICBzY3JvbGxQb3NpdGlvbkJlZm9y
ZUdsaWRlID0gc2Nyb2xsaW5nVGFyZ2V0LnNjcm9sbFRvcDsKLQotICAgICAgICAgICAgdmFyIHN0
YXJ0UG9zWCA9IHNjcm9sbGluZ1RhcmdldC5vZmZzZXRMZWZ0ICsgMjA7Ci0gICAgICAgICAgICB2
YXIgc3RhcnRQb3NZID0gc2Nyb2xsaW5nVGFyZ2V0Lm9mZnNldFRvcCArIDIwOwotICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7Ci0gICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBh
cmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKLSAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAtMSwgJ2JlZ2FuJywgJ25vbmUn
KTsKLSAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcygwLCAtMSwgJ2NoYW5nZWQnLCAnbm9uZScpOwotICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIC0xLCAnY2hh
bmdlZCcsICdub25lJyk7Ci0gICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgLTEsICdjaGFuZ2VkJywgJ25vbmUnKTsKLSAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOwotICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIC0xLCAnbm9uZScsICdiZWdpbicp
OwotICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKDAsIC00LCAnbm9uZScsICdjb250aW51ZScpOwotICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25l
JywgJ2VuZCcpOwotICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29t
cGxldGVzKGNoZWNrRm9yU2Nyb2xsR2xpZGUpOwotICAgICAgICB9Ci0KICAgICAgICAgZnVuY3Rp
b24gb25Mb2FkKCkKICAgICAgICAgewotICAgICAgICAgICAgc2Nyb2xsaW5nVGFyZ2V0ID0gZG9j
dW1lbnQuc2Nyb2xsaW5nRWxlbWVudDsKICAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5k
ZXIpIHsKICAgICAgICAgICAgICAgICBpbnRlcm5hbHMuc2V0UGxhdGZvcm1Nb21lbnR1bVNjcm9s
bGluZ1ByZWRpY3Rpb25FbmFibGVkKGZhbHNlKTsKLSAgICAgICAgICAgICAgICBzZXRUaW1lb3V0
KHNjcm9sbEdsaWRlVGVzdCwgMCk7CisgICAgICAgICAgICAgICAgcnVuVGVzdHMoKTsKICAgICAg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgdmFyIG1lc3NhZ2VMb2NhdGlvbiA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdpdGVtMCcpOwogICAgICAgICAgICAgICAgIHZhciBtZXNz
YWdlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICAgICAgICAgICAgICAgbWVz
c2FnZS5pbm5lckhUTUwgPSAiPHA+VG8gcnVuIHRoaXMgdGVzdCBtYW51YWxseSwgc2Nyb2xsIHRo
ZSBwYWdlIHZlcnRpY2FsbHkuIFRoZSBwYWdlIHNob3VsZCAiCi0gICAgICAgICAgICAgICAgICAg
ICsgImFsdGVybmF0ZSBiZXR3ZWVuIHVuaWZvcm0gY29sb3JzIHdoaWNoIGZpbGwgdGhlIHZpZXcu
PHA+IjsKKyAgICAgICAgICAgICAgICAgICAgKyAic25hcCBiZXR3ZWVuIHVuaWZvcm0gY29sb3Jz
IHdoaWNoIGZpbGwgdGhlIHZpZXcuPHA+IjsKICAgICAgICAgICAgICAgICBtZXNzYWdlTG9jYXRp
b24uYXBwZW5kQ2hpbGQobWVzc2FnZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLW1hbmRhdG9yeS1tYWluZnJhbWUtdmVydGljYWwuaHRtbCBiL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9y
eS1tYWluZnJhbWUtdmVydGljYWwuaHRtbAppbmRleCA0ZjY4MjdiYmY0ZjIzYjdlYjYxNDdlNThh
MjU5MDI0YTQwOTY5ZWYyLi5kNzhhNTU1MGYxN2NiMWFlZDgzOGZiYzVjMjgzMTJkOWFiNmQ4MDY2
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnktbWFpbmZyYW1lLXZlcnRpY2FsLmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtbWFuZGF0b3J5LW1haW5mcmFtZS12ZXJ0aWNhbC5odG1sCkBAIC0yNSw4NiArMjUsMzAgQEAK
ICAgICAgICAgICAgICNpdGVtNSB7IGJhY2tncm91bmQtY29sb3I6IGZ1Y2hzaWE7IH0KICAgICAg
ICAgPC9zdHlsZT4KICAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNl
cy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L21haW5mcmFtZS1zY3JvbGwtc25hcC10ZXN0LmpzIj48L3NjcmlwdD4KICAgICAgICAgPHNjcmlw
dD4KICAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwogCi0gICAgICAgIHZhciBz
Y3JvbGxpbmdUYXJnZXQ7Ci0gICAgICAgIHZhciBzY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOwot
ICAgICAgICB2YXIgc2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOwotCi0gICAgICAgIGZ1bmN0aW9u
IGNoZWNrRm9yU2Nyb2xsU25hcCgpCisgICAgICAgIGFzeW5jIGZ1bmN0aW9uIHJ1blRlc3RzKCkK
ICAgICAgICAgewotICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJh
Y2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCi0gICAgICAgICAgICBpZiAoc2Nyb2xsaW5nVGFy
Z2V0LnNjcm9sbFRvcCAhPSBzY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCi0gICAgICAgICAgICAg
ICAgdGVzdEZhaWxlZChgZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbi4g
KCR7c2Nyb2xsaW5nVGFyZ2V0LnNjcm9sbFRvcH0gdnMuICR7c2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwfSlgKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJk
aXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKLQorICAgICAgICAgICAgYXdhaXQgVUlIZWxwZXIu
ZGVsYXlGb3IoMCk7CisgICAgICAgICAgICBhd2FpdCBzY3JvbGxHbGlkZVNob3VsZFNjcm9sbFRv
KGRvY3VtZW50LnNjcm9sbGluZ0VsZW1lbnQsIFZFUlRJQ0FMLCAid2luZG93LmlubmVySGVpZ2h0
Iik7CisgICAgICAgICAgICBhd2FpdCBVSUhlbHBlci5kZWxheUZvcigwKTsKKyAgICAgICAgICAg
IGF3YWl0IHNob3J0U2Nyb2xsU2hvdWxkU25hcEJhY2soZG9jdW1lbnQuc2Nyb2xsaW5nRWxlbWVu
dCwgVkVSVElDQUwpOwogICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CiAgICAgICAgIH0KIAot
ICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCgpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IHNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IHNjcm9sbGluZ1RhcmdldC5zY3JvbGxUb3A7Ci0K
LSAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSBzY3JvbGxpbmdUYXJnZXQub2Zmc2V0TGVmdCAr
IDIwOwotICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHNjcm9sbGluZ1RhcmdldC5vZmZzZXRU
b3AgKyAyMDsKLSAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOwot
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kp
OyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCi0gICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwg
LTEsICdiZWdhbicsICdub25lJyk7Ci0gICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgLTEsICdjaGFuZ2VkJywgJ25vbmUnKTsK
LSAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcygwLCAtMSwgJ2NoYW5nZWQnLCAnbm9uZScpOwotICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcs
ICdub25lJyk7Ci0gICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21w
bGV0ZXMoY2hlY2tGb3JTY3JvbGxTbmFwKTsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9u
IGNoZWNrRm9yU2Nyb2xsR2xpZGUoKQotICAgICAgICB7Ci0gICAgICAgICAgICAvLyBUaGUgZGl2
IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCi0g
ICAgICAgICAgICBpZiAoc2Nyb2xsaW5nVGFyZ2V0LnNjcm9sbFRvcCA9PSB3aW5kb3cuaW5uZXJI
ZWlnaHQpCi0gICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQg
d2luZG93LiIpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQo
YGRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiAoJHtzY3JvbGxpbmdUYXJnZXQuc2Nyb2xs
VG9wfSB2cy4gJHt3aW5kb3cuaW5uZXJIZWlnaHR9KWApOwotCi0gICAgICAgICAgICBzZXRUaW1l
b3V0KHNjcm9sbFNuYXBUZXN0LCAwKTsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIHNj
cm9sbEdsaWRlVGVzdCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHNjcm9sbFBvc2l0aW9uQmVm
b3JlR2xpZGUgPSBzY3JvbGxpbmdUYXJnZXQuc2Nyb2xsVG9wOwotCi0gICAgICAgICAgICB2YXIg
c3RhcnRQb3NYID0gc2Nyb2xsaW5nVGFyZ2V0Lm9mZnNldExlZnQgKyAyMDsKLSAgICAgICAgICAg
IHZhciBzdGFydFBvc1kgPSBzY3JvbGxpbmdUYXJnZXQub2Zmc2V0VG9wICsgMjA7Ci0gICAgICAg
ICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKLSAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdl
IGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQotICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIC0xLCAnYmVnYW4nLCAnbm9u
ZScpOwotICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKDAsIC0xLCAnY2hhbmdlZCcsICdub25lJyk7Ci0gICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgLTEsICdj
aGFuZ2VkJywgJ25vbmUnKTsKLSAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAtMSwgJ2NoYW5nZWQnLCAnbm9uZScpOwotICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7Ci0gICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgLTEsICdub25lJywgJ2JlZ2lu
Jyk7Ci0gICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoMCwgLTQsICdub25lJywgJ2NvbnRpbnVlJyk7Ci0gICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25v
bmUnLCAnZW5kJyk7Ci0gICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdD
b21wbGV0ZXMoY2hlY2tGb3JTY3JvbGxHbGlkZSk7Ci0gICAgICAgIH0KLQogICAgICAgICBmdW5j
dGlvbiBvbkxvYWQoKQogICAgICAgICB7Ci0gICAgICAgICAgICBzY3JvbGxpbmdUYXJnZXQgPSBk
b2N1bWVudC5zY3JvbGxpbmdFbGVtZW50OwogICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNl
bmRlcikgewogICAgICAgICAgICAgICAgIGludGVybmFscy5zZXRQbGF0Zm9ybU1vbWVudHVtU2Ny
b2xsaW5nUHJlZGljdGlvbkVuYWJsZWQoZmFsc2UpOwotICAgICAgICAgICAgICAgIHNldFRpbWVv
dXQoc2Nyb2xsR2xpZGVUZXN0LCAwKTsKKyAgICAgICAgICAgICAgICBydW5UZXN0cygpOwogICAg
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICB2YXIgbWVzc2FnZUxvY2F0aW9uID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2l0ZW0wJyk7CiAgICAgICAgICAgICAgICAgdmFyIG1l
c3NhZ2UgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKLSAgICAgICAgICAgICAgICBt
ZXNzYWdlLmlubmVySFRNTCA9ICI8cD5UaGlzIHRlc3QgaXMgYmV0dGVyIHJ1biB1bmRlciBEdW1w
UmVuZGVyVHJlZS4gVG8gbWFudWFsbHkgdGVzdCBpdCwgcGxhY2UgdGhlIG1vdXNlIHBvaW50ZXI8
YnIvPiIKLSAgICAgICAgICAgICAgICAgICAgKyAiaW5zaWRlIHRoZSByZWQgcmVnaW9uIGF0IHRo
ZSB0b3Agb2YgdGhlIHBhZ2UsIGFuZCB0aGVuIHVzZSB0aGUgbW91c2Ugd2hlZWwgb3IgYSB0d28t
ZmluZ2VyIHN3aXBlIHRvIG1ha2UgYTxici8+IgotICAgICAgICAgICAgICAgICAgICArICJzbWFs
bCBzd2lwZSBnZXN0dXJlIHdpdGggc29tZSBtb21lbnR1bS48YnIvPjxici8+IgotICAgICAgICAg
ICAgICAgICAgICArICJUaGUgcmVnaW9uIHNob3VsZCBzY3JvbGwgdG8gc2hvdyBhIGdyZWVuIHJl
Z2lvbi48YnIvPjxici8+IgotICAgICAgICAgICAgICAgICAgICArICJOZXh0LCBwZXJmb3JtIGEg
c21hbGwgc2Nyb2xsIGdlc3R1cmUgdGhhdCBkb2VzIG5vdCBpbnZvbHZlIG1vbWVudHVtLiBZb3Ug
c2hvdWxkIGJlZ2luIHRvIHNlZSBvbmUgb2YgdGhlIGNvbG9yczxici8+IgotICAgICAgICAgICAg
ICAgICAgICArICJ0byB0aGUgbGVmdCAob3IgcmlnaHQpIG9mIHRoZSBjdXJyZW50IGdyZWVuIGJv
eC4gV2hlbiB5b3UgcmVsZWFzZSB0aGUgd2hlZWwsIHRoZSByZWdpb24gc2hvdWxkIHNjcm9sbCBi
YWNrIHNvPGJyLz4iCi0gICAgICAgICAgICAgICAgICAgICsgInRoYXQgdGhlIHJlZ2lvbiBpcyBh
IHNpbmdsZSBjb2xvci48YnIvPjxici8+IgotICAgICAgICAgICAgICAgICAgICArICJZb3Ugc2hv
dWxkIGFsc28gYmUgYWJsZSB0byByZXBlYXQgdGhlc2UgdGVzdCBzdGVwcyBmb3IgdGhlIHZlcnRp
Y2FsIHJlZ2lvbiBiZWxvdy48L3A+IjsKKyAgICAgICAgICAgICAgICBtZXNzYWdlLmlubmVySFRN
TCA9ICI8cD5UbyBydW4gdGhpcyB0ZXN0IG1hbnVhbGx5LCBzY3JvbGwgdGhlIHBhZ2UgdmVydGlj
YWxseS4gVGhlIHBhZ2Ugc2hvdWxkICIKKyAgICAgICAgICAgICAgICAgICAgKyAic25hcCBiZXR3
ZWVuIHVuaWZvcm0gY29sb3JzIHdoaWNoIGZpbGwgdGhlIHZpZXcuPHA+IjsKICAgICAgICAgICAg
ICAgICBtZXNzYWdlTG9jYXRpb24uYXBwZW5kQ2hpbGQobWVzc2FnZSk7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413924</attachid>
            <date>2020-11-12 03:36:07 -0800</date>
            <delta_ts>2020-11-12 04:18:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218757-20201112123601.patch</filename>
            <type>text/plain</type>
            <size>55062</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5NjI4CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNDdjNWY5NWVhZjI4Mzg1NjhiYjBi
NDk2MDU4OGZiYjEzZDU4ZTU3My4uYzU3YjkwNTMyMzcyMzJkZWQ3YTllOGU1M2UzNWE3ZGQ4MTk4
NDZmYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIwLTExLTEwICBNYXJ0aW4gUm9iaW5zb24g
IDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAgICBTaW1wbGlmeSBtYWluZnJhbWUgdGVz
dHMgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODc1NworCisgICAgICAgIFJldmlld2Vk
IGJ5IFNpbW9uIEZyYXNlci4KKworICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Jlc291cmNlcy9tYWluZnJhbWUtc2Nyb2xsLXNuYXAtdGVzdC5qczogQWRkZWQu
IEFsbG93cworICAgICAgICBzaGFyaW5nIHRoZSBtYWluZnJhbWUgc2Nyb2xsIHRlc3RpbmcgY29k
ZSBiZXR3ZWVuIHRlc3RzIGFuZCByZWltcGxlbWVudHMgdGhlbSB3aXRoIFByb21pc2VzLgorICAg
ICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1h
bmRhdG9yeS1tYWluZnJhbWUtaG9yaXpvbnRhbC1sZWdhY3kuaHRtbDoKKyAgICAgICAgKiB0aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnktbWFp
bmZyYW1lLWhvcml6b250YWwtd2l0aC1tYXJnaW4uaHRtbDoKKyAgICAgICAgKiB0aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnktbWFpbmZyYW1l
LWhvcml6b250YWwuaHRtbDoKKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnktbWFpbmZyYW1lLXNsb3ctaG9yaXpvbnRhbC5o
dG1sOgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLW1hbmRhdG9yeS1tYWluZnJhbWUtc2xvdy12ZXJ0aWNhbC5odG1sOgorICAgICAgICAq
IHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9y
eS1tYWluZnJhbWUtdmVydGljYWwtbGVnYWN5Lmh0bWw6CisgICAgICAgICogdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5LW1haW5mcmFtZS12
ZXJ0aWNhbC10aGVuLWhvcml6b250YWwuaHRtbDoKKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnktbWFpbmZyYW1lLXZlcnRp
Y2FsLXdpdGgtbWFyZ2luLmh0bWw6CisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5LW1haW5mcmFtZS12ZXJ0aWNhbC5odG1s
OgorCiAyMDIwLTExLTEwICBDYXJsb3MgQWxiZXJ0byBMb3BleiBQZXJleiAgPGNsb3BlekBpZ2Fs
aWEuY29tPgogCiAgICAgICAgIFtHVEtdW1dQRV0gUmViYXNlbGluZSB0ZXN0cyBhZnRlciByMjY5
NTEwLCByMjY5NTk4LCByMjY5NjAwIGFuZCByMjY5NjEyLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvcmVzb3VyY2VzL21haW5mcmFt
ZS1zY3JvbGwtc25hcC10ZXN0LmpzIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvcmVzb3VyY2VzL21haW5mcmFtZS1zY3JvbGwtc25hcC10ZXN0LmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmY5ZWFhOWZiZjk1MWM2MDlmMmI2ZThiNGJlYzBkNmRhNmUwM2RjMjAKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9yZXNvdXJjZXMvbWFpbmZyYW1lLXNjcm9sbC1zbmFwLXRlc3QuanMKQEAgLTAsMCArMSw4
OSBAQAorY29uc3QgVkVSVElDQUwgPSBbMCwgMV07Citjb25zdCBIT1JJWk9OVEFMID0gWzEsIDBd
OworY29uc3QgVkVSVElDQUxfQU5EX0hPUklaT05UQUwgPSBbMSwgMV07CisKK2FzeW5jIGZ1bmN0
aW9uIGRvU2Nyb2xsR2xpZGUodGFyZ2V0RWxlbWVudCwgZGlyZWN0aW9uKQoreworICAgIC8vIFRo
ZXNlIGFycmF5cyBhcmUgYXJndW1lbnRzIHRoYXQgd2lsbCBiZSBwYXNzZWQgdG8gZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzLgorICAgIC8vIERlcGVu
ZGluZyBvbiB3aGV0aGVyIG9yIG5vdCB0aGUgZGlyZWN0aW9uIGlzIHZlcnRpY2FsIG9yIGhvcml6
b250YWwgb25lIG9mIHRoZSBmaXJzdCB0d28gZWxlbWVudHMKKyAgICAvLyBvZiBlYWNoIGVudHJ5
IHdpbGwgYmUgemVyb2VkIG91dCwgc28gdGhhdCBldmVudFNlbmRlciBvbmx5IHNjcm9sbHMgaW4g
b25lIGRpcmVjdGlvbiBhdCBhIHRpbWUuCisgICAgbGV0IHNjcm9sbE1vdGlvbnMgPSBbCisgICAg
ICAgIFstMSwgLTEsICdiZWdhbicsICdub25lJ10sCisgICAgICAgIFstMSwgLTEsICdjaGFuZ2Vk
JywgJ25vbmUnXSwKKyAgICAgICAgWy0xLCAtMSwgJ2NoYW5nZWQnLCAnbm9uZSddLAorICAgICAg
ICBbLTEsIC0xLCAnY2hhbmdlZCcsICdub25lJ10sCisgICAgICAgIFswLCAwLCAnZW5kZWQnLCAn
bm9uZSddLAorICAgICAgICBbLTEsIC0xLCAnbm9uZScsICdiZWdpbiddLAorICAgICAgICBbLTEs
IC0xLCAnbm9uZScsICdjb250aW51ZSddLAorICAgICAgICBbMCwgMCwgJ25vbmUnLCAnZW5kJ10s
CisgICAgXTsKKworICAgIHJldHVybiBkb1Njcm9sbFRlc3QodGFyZ2V0RWxlbWVudCwgZGlyZWN0
aW9uLCBzY3JvbGxNb3Rpb25zKTsKK30KKworYXN5bmMgZnVuY3Rpb24gZG9TY3JvbGxTbmFwKHRh
cmdldEVsZW1lbnQsIGRpcmVjdGlvbikKK3sKKyAgICAvLyBUaGVzZSBhcnJheXMgYXJlIGFyZ3Vt
ZW50cyB0aGF0IHdpbGwgYmUgcGFzc2VkIHRvIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcy4KKyAgICAvLyBEZXBlbmRpbmcgb24gd2hldGhlciBvciBu
b3QgdGhlIGRpcmVjdGlvbiBpcyB2ZXJ0aWNhbCBvciBob3Jpem9udGFsIG9uZSBvZiB0aGUgZmly
c3QgdHdvIGVsZW1lbnRzCisgICAgLy8gb2YgZWFjaCBlbnRyeSB3aWxsIGJlIHplcm9lZCBvdXQs
IHNvIHRoYXQgZXZlbnRTZW5kZXIgb25seSBzY3JvbGxzIGluIG9uZSBkaXJlY3Rpb24gYXQgYSB0
aW1lLgorICAgIGxldCBzY3JvbGxNb3Rpb25zID0gWworICAgICAgICBbLTEsIDAsICdiZWdhbics
ICdub25lJ10sCisgICAgICAgIFstMSwgMCwgJ2NoYW5nZWQnLCAnbm9uZSddLAorICAgICAgICBb
LTEsIDAsICdjaGFuZ2VkJywgJ25vbmUnXSwKKyAgICAgICAgWzAsIDAsICdlbmRlZCcsICdub25l
J10sCisgICAgXTsKKyAgICByZXR1cm4gZG9TY3JvbGxUZXN0KHRhcmdldEVsZW1lbnQsIGRpcmVj
dGlvbiwgc2Nyb2xsTW90aW9ucyk7Cit9CisKK2FzeW5jIGZ1bmN0aW9uIGRvU2Nyb2xsVGVzdCh0
YXJnZXRFbGVtZW50LCBkaXJlY3Rpb24sIHNjcm9sbE1vdGlvbnMpCit7CisgICAgdmFyIHN0YXJ0
UG9zWDsKKyAgICB2YXIgc3RhcnRQb3NZOworICAgIGlmIChkb2N1bWVudC5zY3JvbGxpbmdFbGVt
ZW50ID09IHRhcmdldEVsZW1lbnQpIHsKKyAgICAgICAgLy8gZ2V0Qm91bmRpbmdDbGllbnRSZWN0
KCkgY2FuIGJlIGFuIG91dC1vZi12aWV3cG9ydCByZWN0YW5nbGUgaWYgdGhlCisgICAgICAgIC8v
IHJvb3Qgc2Nyb2xsaW5nIGVsZW1lbnQgaXMgdGhlIHRhcmdldEVsZW1lbnQuCisgICAgICAgIHN0
YXJ0UG9zWCA9IDA7CisgICAgICAgIHN0YXJ0UG9zWSA9IDA7CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgdmFyIGNsaWVudFJlY3QgPSB0YXJnZXRFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgp
OworICAgICAgICB2YXIgc3RhcnRQb3NYID0gY2xpZW50UmVjdC54OworICAgICAgICB2YXIgc3Rh
cnRQb3NZID0gY2xpZW50UmVjdC55OworICAgIH0KKworICAgIC8vIFNsaWdodGx5IG9mZnNldCB0
aGUgbW91c2UgcG9zaXRpb24gc28gdGhhdCB0aGUgZXZlbnRzIGFyZSBpbnNpZGUgdGhlIGVsZW1l
bnQuCisgICAgc3RhcnRQb3NYICs9IDU7CisgICAgc3RhcnRQb3NZICs9IDU7CisKKyAgICBldmVu
dFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVU
byhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisKKyAgICAvLyBgZGlyZWN0aW9uYCBpcyBhIHR3by1l
bGVtZW50IGFycmF5IHdpdGggYSBvbmUgaW4gdGhlIGFwcHJvcHJpYXRlIGRpcmVjdGlvbi4KKyAg
ICBzY3JvbGxNb3Rpb25zLmZvckVhY2goKGNhbGxBcmd1bWVudHMpID0+IHsKKyAgICAgICAgY2Fs
bEFyZ3VtZW50c1swXSAqPSBkaXJlY3Rpb25bMF07CisgICAgICAgIGNhbGxBcmd1bWVudHNbMV0g
Kj0gZGlyZWN0aW9uWzFdOworICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoLi4uY2FsbEFyZ3VtZW50cyk7CisgICAgfSk7CisKKyAgICBh
d2FpdCBVSUhlbHBlci53YWl0Rm9yU2Nyb2xsQ29tcGxldGlvbigpOworfQorCitmdW5jdGlvbiBk
ZWxheSh0aW1lKSB7CisgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2V0VGltZW91
dChyZXNvbHZlLCB0aW1lKSk7Cit9CisKK2Z1bmN0aW9uIHNob3J0U2Nyb2xsU2hvdWxkU25hcEJh
Y2sodGFyZ2V0RWxlbWVudCwgZGlyZWN0aW9uKQoreworICAgIHZhciBzY3JvbGxQb3NpdGlvbkJl
Zm9yZVNuYXAgPSB0YXJnZXRFbGVtZW50LnNjcm9sbExlZnQ7CisgICAgcmV0dXJuIGRvU2Nyb2xs
U25hcCh0YXJnZXRFbGVtZW50LCBIT1JJWk9OVEFMKS50aGVuKCgpID0+IHsKKyAgICAgICAgLy8g
VGhlIHRhcmdldEVsZW1lbnQgc2hvdWxkIGhhdmUgcmVtYWluZWQgb24gdGhlIHNhbWUgc25hcCBw
b2ludC4KKyAgICAgICAgZXhwZWN0VHJ1ZSgidGFyZ2V0RWxlbWVudC5zY3JvbGxMZWZ0ID09IHNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcCIsICJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKyAg
ICB9KTsKK30KKworZnVuY3Rpb24gc2Nyb2xsR2xpZGVTaG91bGRTY3JvbGxUbyh0YXJnZXRFbGVt
ZW50LCBkaXJlY3Rpb24sIGV4cGVjdGVkVmFsdWUpCit7CisgICAgcmV0dXJuIGRvU2Nyb2xsR2xp
ZGUodGFyZ2V0RWxlbWVudCwgSE9SSVpPTlRBTCkudGhlbigoKSA9PiB7CisgICAgICAgIC8vIFRo
ZSB0YXJnZXRFbGVtZW50IHNob3VsZCBoYXZlIHNuYXBwZWQgdG8gdGhlIGdpdmVuIHNuYXAgcG9z
aXRpb24uCisgICAgICAgIGV4cGVjdFRydWUoInRhcmdldEVsZW1lbnQuc2Nyb2xsTGVmdCA9PSAi
ICsgZXhwZWN0ZWRWYWx1ZSwgImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICB9
KTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1tYWluZnJhbWUtaG9yaXpvbnRhbC1sZWdh
Y3kuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1tYWluZnJhbWUtaG9yaXpvbnRhbC1sZWdhY3kuaHRtbApp
bmRleCAzZDQwYWZmODBmMGQ0OTQyMzBmZGUwMTRkMDNhZjIyYTI3ODU1OTAwLi5jYjNiYjQ4OWMy
M2M0OWU4MTdkYmZlOTMzOTg2NmFmY2EzYzkzNWZlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy90
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnkt
bWFpbmZyYW1lLWhvcml6b250YWwtbGVnYWN5Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5LW1haW5m
cmFtZS1ob3Jpem9udGFsLWxlZ2FjeS5odG1sCkBAIC0yMyw4NiArMjMsMzAgQEAKICAgICAgICAg
ICAgICNpdGVtNSB7IGJhY2tncm91bmQtY29sb3I6IGZ1Y2hzaWE7IH0KICAgICAgICAgPC9zdHls
ZT4KICAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48
L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy91aS1oZWxw
ZXIuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL21haW5mcmFt
ZS1zY3JvbGwtc25hcC10ZXN0LmpzIj48L3NjcmlwdD4KICAgICAgICAgPHNjcmlwdD4KICAgICAg
ICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwogCi0gICAgICAgIHZhciB0YXJnZXRTY3Jv
bGxlcjsKLSAgICAgICAgdmFyIHNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7Ci0gICAgICAgIHZh
ciBzY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7Ci0KLSAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JT
Y3JvbGxTbmFwKCkKKyAgICAgICAgYXN5bmMgZnVuY3Rpb24gcnVuVGVzdHMoKQogICAgICAgICB7
Ci0gICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUg
cHJldmlvdXMgcG9zaXRpb24KLSAgICAgICAgICAgIGlmICh0YXJnZXRTY3JvbGxlci5zY3JvbGxM
ZWZ0ICE9IHNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKLSAgICAgICAgICAgICAgICB0ZXN0RmFp
bGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uLiBFeHBlY3RlZCAi
ICsgc2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgdGFyZ2V0U2Nyb2xs
ZXIuc2Nyb2xsTGVmdCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgdGVzdFBh
c3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7Ci0KKyAgICAgICAgICAgIGF3YWl0IFVJ
SGVscGVyLmRlbGF5Rm9yKDApOworICAgICAgICAgICAgYXdhaXQgc2Nyb2xsR2xpZGVTaG91bGRT
Y3JvbGxUbyhkb2N1bWVudC5zY3JvbGxpbmdFbGVtZW50LCBIT1JJWk9OVEFMLCAid2luZG93Lmlu
bmVyV2lkdGgiKTsKKyAgICAgICAgICAgIGF3YWl0IFVJSGVscGVyLmRlbGF5Rm9yKDApOworICAg
ICAgICAgICAgYXdhaXQgc2hvcnRTY3JvbGxTaG91bGRTbmFwQmFjayhkb2N1bWVudC5zY3JvbGxp
bmdFbGVtZW50LCBIT1JJWk9OVEFMKTsKICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwogICAg
ICAgICB9CiAKLSAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QoKQotICAgICAgICB7Ci0g
ICAgICAgICAgICBzY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSB0YXJnZXRTY3JvbGxlci5zY3Jv
bGxMZWZ0OwotCi0gICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gdGFyZ2V0U2Nyb2xsZXIub2Zm
c2V0TGVmdCArIDIwOwotICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHRhcmdldFNjcm9sbGVy
Lm9mZnNldFRvcCArIDIwOwotICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZl
bnRzKCk7Ci0gICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0
YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKLSAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcygtMSwgMCwgJ2JlZ2FuJywgJ25vbmUnKTsKLSAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygtMSwgMCwgJ2NoYW5nZWQnLCAn
bm9uZScpOwotICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKC0xLCAwLCAnY2hhbmdlZCcsICdub25lJyk7Ci0gICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwg
J2VuZGVkJywgJ25vbmUnKTsKLSAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9s
bGluZ0NvbXBsZXRlcyhjaGVja0ZvclNjcm9sbFNuYXApOwotICAgICAgICB9Ci0KLSAgICAgICAg
ZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIC8v
IFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBw
b2ludC4KLSAgICAgICAgICAgIGlmICh0YXJnZXRTY3JvbGxlci5zY3JvbGxMZWZ0ID09IHdpbmRv
dy5pbm5lcldpZHRoKQotICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0
byBuZXh0IHdpbmRvdy4iKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB0ZXN0
RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIHdpbmRv
dy5pbm5lcldpZHRoICsgIiwgYnV0IGdvdCAiICsgdGFyZ2V0U2Nyb2xsZXIuc2Nyb2xsTGVmdCk7
Ci0KLSAgICAgICAgICAgIHNldFRpbWVvdXQoc2Nyb2xsU25hcFRlc3QsIDApOwotICAgICAgICB9
Ci0KLSAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KCkKLSAgICAgICAgewotICAgICAg
ICAgICAgc2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IHRhcmdldFNjcm9sbGVyLnNjcm9sbExl
ZnQ7Ci0KLSAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB0YXJnZXRTY3JvbGxlci5vZmZzZXRM
ZWZ0ICsgMjA7Ci0gICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gdGFyZ2V0U2Nyb2xsZXIub2Zm
c2V0VG9wICsgMjA7Ci0gICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMo
KTsKLSAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQ
b3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQotICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KC0xLCAwLCAnYmVnYW4nLCAnbm9uZScpOwotICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKC0xLCAwLCAnY2hhbmdlZCcsICdub25l
Jyk7Ci0gICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoLTEsIDAsICdjaGFuZ2VkJywgJ25vbmUnKTsKLSAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygtMSwgMCwgJ2No
YW5nZWQnLCAnbm9uZScpOwotICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7Ci0gICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
LTEsIDAsICdub25lJywgJ2JlZ2luJyk7Ci0gICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoLTEsIDAsICdub25lJywgJ2NvbnRpbnVl
Jyk7Ci0gICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7Ci0gICAgICAgICAgICBldmVudFNlbmRl
ci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoY2hlY2tGb3JTY3JvbGxHbGlkZSk7Ci0gICAg
ICAgIH0KLQogICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQogICAgICAgICB7Ci0gICAgICAgICAg
ICB0YXJnZXRTY3JvbGxlciA9IGRvY3VtZW50LnNjcm9sbGluZ0VsZW1lbnQ7CiAgICAgICAgICAg
ICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CiAgICAgICAgICAgICAgICAgaW50ZXJuYWxzLnNl
dFBsYXRmb3JtTW9tZW50dW1TY3JvbGxpbmdQcmVkaWN0aW9uRW5hYmxlZChmYWxzZSk7Ci0gICAg
ICAgICAgICAgICAgc2V0VGltZW91dChzY3JvbGxHbGlkZVRlc3QsIDApOworICAgICAgICAgICAg
ICAgIHJ1blRlc3RzKCk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIHZh
ciBtZXNzYWdlTG9jYXRpb24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaXRlbTAnKTsKICAg
ICAgICAgICAgICAgICB2YXIgbWVzc2FnZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Rpdicp
OwotICAgICAgICAgICAgICAgIG1lc3NhZ2UuaW5uZXJIVE1MID0gIjxwPlRoaXMgdGVzdCBpcyBi
ZXR0ZXIgcnVuIHVuZGVyIER1bXBSZW5kZXJUcmVlLiBUbyBtYW51YWxseSB0ZXN0IGl0LCBwbGFj
ZSB0aGUgbW91c2UgcG9pbnRlcjxici8+IgotICAgICAgICAgICAgICAgICAgICArICJpbnNpZGUg
dGhlIHJlZCByZWdpb24gYXQgdGhlIHRvcCBvZiB0aGUgcGFnZSwgYW5kIHRoZW4gdXNlIHRoZSBt
b3VzZSB3aGVlbCBvciBhIHR3by1maW5nZXIgc3dpcGUgdG8gbWFrZSBhPGJyLz4iCi0gICAgICAg
ICAgICAgICAgICAgICsgInNtYWxsIHN3aXBlIGdlc3R1cmUgd2l0aCBzb21lIG1vbWVudHVtLjxi
ci8+PGJyLz4iCi0gICAgICAgICAgICAgICAgICAgICsgIlRoZSByZWdpb24gc2hvdWxkIHNjcm9s
bCB0byBzaG93IGEgZ3JlZW4gcmVnaW9uLjxici8+PGJyLz4iCi0gICAgICAgICAgICAgICAgICAg
ICsgIk5leHQsIHBlcmZvcm0gYSBzbWFsbCBzY3JvbGwgZ2VzdHVyZSB0aGF0IGRvZXMgbm90IGlu
dm9sdmUgbW9tZW50dW0uIFlvdSBzaG91bGQgYmVnaW4gdG8gc2VlIG9uZSBvZiB0aGUgY29sb3Jz
PGJyLz4iCi0gICAgICAgICAgICAgICAgICAgICsgInRvIHRoZSBsZWZ0IChvciByaWdodCkgb2Yg
dGhlIGN1cnJlbnQgZ3JlZW4gYm94LiBXaGVuIHlvdSByZWxlYXNlIHRoZSB3aGVlbCwgdGhlIHJl
Z2lvbiBzaG91bGQgc2Nyb2xsIGJhY2sgc288YnIvPiIKLSAgICAgICAgICAgICAgICAgICAgKyAi
dGhhdCB0aGUgcmVnaW9uIGlzIGEgc2luZ2xlIGNvbG9yLjxici8+PGJyLz4iCi0gICAgICAgICAg
ICAgICAgICAgICsgIllvdSBzaG91bGQgYWxzbyBiZSBhYmxlIHRvIHJlcGVhdCB0aGVzZSB0ZXN0
IHN0ZXBzIGZvciB0aGUgdmVydGljYWwgcmVnaW9uIGJlbG93LjwvcD4iOworICAgICAgICAgICAg
ICAgIG1lc3NhZ2UuaW5uZXJIVE1MID0gIjxwPlRvIHJ1biB0aGlzIHRlc3QgbWFudWFsbHksIHNj
cm9sbCB0aGUgcGFnZSBob3Jpem9udGFsbHkuIFRoZSBwYWdlIHNob3VsZCAiCisgICAgICAgICAg
ICAgICAgICAgICsgInNuYXAgYmV0d2VlbiB1bmlmb3JtIGNvbG9ycyB3aGljaCBmaWxsIHRoZSB2
aWV3LjxwPiI7CiAgICAgICAgICAgICAgICAgbWVzc2FnZUxvY2F0aW9uLmFwcGVuZENoaWxkKG1l
c3NhZ2UpOwogICAgICAgICAgICAgfQogICAgICAgICB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRv
cnktbWFpbmZyYW1lLWhvcml6b250YWwtd2l0aC1tYXJnaW4uaHRtbCBiL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1t
YWluZnJhbWUtaG9yaXpvbnRhbC13aXRoLW1hcmdpbi5odG1sCmluZGV4IDQzOGMwMjViZmM1YmRl
ZjJmY2U4OGE5ZTRjOWNkNjE4NTRlYzVmZjQuLjExZTJkYzIxOTMwNjE5ZTQ2MjRmODU1NzRjMGVl
NDBhOGFiN2ZkOTMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1tYWluZnJhbWUtaG9yaXpvbnRh
bC13aXRoLW1hcmdpbi5odG1sCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1tYWluZnJhbWUtaG9yaXpvbnRh
bC13aXRoLW1hcmdpbi5odG1sCkBAIC0yOSw4MSArMjksMzAgQEAKICAgICAgICAgICAgICNpdGVt
NSB7IGJhY2tncm91bmQtY29sb3I6IGZ1Y2hzaWE7IH0KICAgICAgICAgPC9zdHlsZT4KICAgICAg
ICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4K
KyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy91aS1oZWxwZXIuanMiPjwv
c2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL21haW5mcmFtZS1zY3JvbGwt
c25hcC10ZXN0LmpzIj48L3NjcmlwdD4KICAgICAgICAgPHNjcmlwdD4KICAgICAgICAgd2luZG93
LmpzVGVzdElzQXN5bmMgPSB0cnVlOwogCi0gICAgICAgIHZhciB0YXJnZXRTY3JvbGxlcjsKLSAg
ICAgICAgdmFyIHNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7Ci0gICAgICAgIHZhciBzY3JvbGxQ
b3NpdGlvbkJlZm9yZVNuYXA7Ci0KLSAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFw
KCkKKyAgICAgICAgYXN5bmMgZnVuY3Rpb24gcnVuVGVzdHMoKQogICAgICAgICB7Ci0gICAgICAg
ICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMg
cG9zaXRpb24KLSAgICAgICAgICAgIGlmICh0YXJnZXRTY3JvbGxlci5zY3JvbGxMZWZ0ICE9IHNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKLSAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYg
ZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uLiBFeHBlY3RlZCAiICsgc2Nyb2xs
UG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgdGFyZ2V0U2Nyb2xsZXIuc2Nyb2xs
TGVmdCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2
IGhvbm9yZWQgc25hcCBwb2ludHMuIik7Ci0KKyAgICAgICAgICAgIGF3YWl0IFVJSGVscGVyLmRl
bGF5Rm9yKDApOworICAgICAgICAgICAgYXdhaXQgc2Nyb2xsR2xpZGVTaG91bGRTY3JvbGxUbyhk
b2N1bWVudC5zY3JvbGxpbmdFbGVtZW50LCBIT1JJWk9OVEFMLCAid2luZG93LmlubmVyV2lkdGgg
KyA1MCIpOworICAgICAgICAgICAgYXdhaXQgVUlIZWxwZXIuZGVsYXlGb3IoMCk7CisgICAgICAg
ICAgICBhd2FpdCBzaG9ydFNjcm9sbFNob3VsZFNuYXBCYWNrKGRvY3VtZW50LnNjcm9sbGluZ0Vs
ZW1lbnQsIEhPUklaT05UQUwpOwogICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CiAgICAgICAg
IH0KIAotICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCgpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIHNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IHRhcmdldFNjcm9sbGVyLnNjcm9sbExl
ZnQ7Ci0KLSAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB0YXJnZXRTY3JvbGxlci5vZmZzZXRM
ZWZ0ICsgMjA7Ci0gICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gdGFyZ2V0U2Nyb2xsZXIub2Zm
c2V0VG9wICsgMjA7Ci0gICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMo
KTsKLSAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQ
b3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQotICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KC0xLCAwLCAnYmVnYW4nLCAnbm9uZScpOwotICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKC0xLCAwLCAnY2hhbmdlZCcsICdub25l
Jyk7Ci0gICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoLTEsIDAsICdjaGFuZ2VkJywgJ25vbmUnKTsKLSAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5k
ZWQnLCAnbm9uZScpOwotICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5n
Q29tcGxldGVzKGNoZWNrRm9yU2Nyb2xsU25hcCk7Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5j
dGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKCkKLSAgICAgICAgewotICAgICAgICAgICAgLy8gVGhl
IGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50
LCB3aGljaCBzaG91bGQgYmUgdGhlIHdpZHRoCi0gICAgICAgICAgICAvLyBvZiB0aGUgZmlyc3Qg
ZGl2IHBsdXMgdGhlIHJvb3QgZWxlbWVudCdzIGxlZnQgbWFyZ2luICg1MCBwaXhlbHMpLgotICAg
ICAgICAgICAgaWYgKHRhcmdldFNjcm9sbGVyLnNjcm9sbExlZnQgPT0gd2luZG93LmlubmVyV2lk
dGggKyA1MCkKLSAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4
dCB3aW5kb3cuIik7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgdGVzdEZhaWxl
ZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyB3aW5kb3cuaW5u
ZXJXaWR0aCArICIsIGJ1dCBnb3QgIiArIHRhcmdldFNjcm9sbGVyLnNjcm9sbExlZnQpOwotCi0g
ICAgICAgICAgICBzZXRUaW1lb3V0KHNjcm9sbFNuYXBUZXN0LCAwKTsKLSAgICAgICAgfQotCi0g
ICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCgpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IHNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSB0YXJnZXRTY3JvbGxlci5zY3JvbGxMZWZ0Owot
Ci0gICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gdGFyZ2V0U2Nyb2xsZXIub2Zmc2V0TGVmdCAr
IDIwOwotICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHRhcmdldFNjcm9sbGVyLm9mZnNldFRv
cCArIDIwOwotICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7Ci0g
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7
IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKLSAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygtMSwg
MCwgJ2JlZ2FuJywgJ25vbmUnKTsKLSAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygtMSwgMCwgJ2NoYW5nZWQnLCAnbm9uZScpOwot
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKC0xLCAwLCAnY2hhbmdlZCcsICdub25lJyk7Ci0gICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoLTEsIDAsICdjaGFuZ2Vk
JywgJ25vbmUnKTsKLSAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOwotICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKC0xLCAw
LCAnbm9uZScsICdiZWdpbicpOwotICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKC0xLCAwLCAnbm9uZScsICdjb250aW51ZScpOwot
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOwotICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2Fs
bEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGNoZWNrRm9yU2Nyb2xsR2xpZGUpOwotICAgICAgICB9
Ci0KICAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKICAgICAgICAgewotICAgICAgICAgICAgdGFy
Z2V0U2Nyb2xsZXIgPSBkb2N1bWVudC5zY3JvbGxpbmdFbGVtZW50OwogICAgICAgICAgICAgaWYg
KHdpbmRvdy5ldmVudFNlbmRlcikgewogICAgICAgICAgICAgICAgIGludGVybmFscy5zZXRQbGF0
Zm9ybU1vbWVudHVtU2Nyb2xsaW5nUHJlZGljdGlvbkVuYWJsZWQoZmFsc2UpOwotICAgICAgICAg
ICAgICAgIHNldFRpbWVvdXQoc2Nyb2xsR2xpZGVUZXN0LCAwKTsKKyAgICAgICAgICAgICAgICBy
dW5UZXN0cygpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICB2YXIgbWVz
c2FnZUxvY2F0aW9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2l0ZW0wJyk7CiAgICAgICAg
ICAgICAgICAgdmFyIG1lc3NhZ2UgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICAg
ICAgICAgICAgICAgICBtZXNzYWdlLmlubmVySFRNTCA9ICI8cD5UbyBydW4gdGhpcyB0ZXN0IG1h
bnVhbGx5LCBzY3JvbGwgdGhlIHBhZ2UgaG9yaXpvbnRhbGx5LiBUaGUgcGFnZSBzaG91bGQgIgot
ICAgICAgICAgICAgICAgICAgICArICJhbHRlcm5hdGUgYmV0d2VlbiB1bmlmb3JtIGNvbG9ycyB3
aGljaCBmaWxsIHRoZSB2aWV3LjxwPiI7CisgICAgICAgICAgICAgICAgICAgICsgInNuYXAgYmV0
d2VlbiB1bmlmb3JtIGNvbG9ycyB3aGljaCBmaWxsIHRoZSB2aWV3LjxwPiI7CiAgICAgICAgICAg
ICAgICAgbWVzc2FnZUxvY2F0aW9uLmFwcGVuZENoaWxkKG1lc3NhZ2UpOwogICAgICAgICAgICAg
fQogICAgICAgICB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnktbWFpbmZyYW1lLWhvcml6b250
YWwuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1tYWluZnJhbWUtaG9yaXpvbnRhbC5odG1sCmluZGV4IDQ2
N2ZhMzVkYjk0MzhkZWMxMGMwY2NmZmJmZjdkY2EwNDdmNDViMTAuLjQ3YjMyZDA3NzkxYThmMGEw
NWY1NjJmODgzZjc0MWNmNWQyNjcyODggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1tYWluZnJh
bWUtaG9yaXpvbnRhbC5odG1sCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1tYWluZnJhbWUtaG9yaXpvbnRh
bC5odG1sCkBAIC0yNSw4NiArMjUsMzAgQEAKICAgICAgICAgICAgICNpdGVtNSB7IGJhY2tncm91
bmQtY29sb3I6IGZ1Y2hzaWE7IH0KICAgICAgICAgPC9zdHlsZT4KICAgICAgICAgPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorICAg
ICAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL21haW5mcmFtZS1zY3JvbGwtc25hcC10ZXN0Lmpz
Ij48L3NjcmlwdD4KICAgICAgICAgPHNjcmlwdD4KICAgICAgICAgd2luZG93LmpzVGVzdElzQXN5
bmMgPSB0cnVlOwogCi0gICAgICAgIHZhciB0YXJnZXRTY3JvbGxlcjsKLSAgICAgICAgdmFyIHNj
cm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7Ci0gICAgICAgIHZhciBzY3JvbGxQb3NpdGlvbkJlZm9y
ZVNuYXA7Ci0KLSAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKCkKKyAgICAgICAg
YXN5bmMgZnVuY3Rpb24gcnVuVGVzdHMoKQogICAgICAgICB7Ci0gICAgICAgICAgICAvLyBUaGUg
ZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KLSAg
ICAgICAgICAgIGlmICh0YXJnZXRTY3JvbGxlci5zY3JvbGxMZWZ0ICE9IHNjcm9sbFBvc2l0aW9u
QmVmb3JlU25hcCkKLSAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFw
IGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uLiBFeHBlY3RlZCAiICsgc2Nyb2xsUG9zaXRpb25CZWZv
cmVTbmFwICsgIiwgYnV0IGdvdCAiICsgdGFyZ2V0U2Nyb2xsZXIuc2Nyb2xsTGVmdCk7Ci0gICAg
ICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25h
cCBwb2ludHMuIik7Ci0KKyAgICAgICAgICAgIGF3YWl0IFVJSGVscGVyLmRlbGF5Rm9yKDApOwor
ICAgICAgICAgICAgYXdhaXQgc2Nyb2xsR2xpZGVTaG91bGRTY3JvbGxUbyhkb2N1bWVudC5zY3Jv
bGxpbmdFbGVtZW50LCBIT1JJWk9OVEFMLCAid2luZG93LmlubmVyV2lkdGgiKTsKKyAgICAgICAg
ICAgIGF3YWl0IFVJSGVscGVyLmRlbGF5Rm9yKDApOworICAgICAgICAgICAgYXdhaXQgc2hvcnRT
Y3JvbGxTaG91bGRTbmFwQmFjayhkb2N1bWVudC5zY3JvbGxpbmdFbGVtZW50LCBIT1JJWk9OVEFM
KTsKICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwogICAgICAgICB9CiAKLSAgICAgICAgZnVu
Y3Rpb24gc2Nyb2xsU25hcFRlc3QoKQotICAgICAgICB7Ci0gICAgICAgICAgICBzY3JvbGxQb3Np
dGlvbkJlZm9yZVNuYXAgPSB0YXJnZXRTY3JvbGxlci5zY3JvbGxMZWZ0OwotCi0gICAgICAgICAg
ICB2YXIgc3RhcnRQb3NYID0gdGFyZ2V0U2Nyb2xsZXIub2Zmc2V0TGVmdCArIDIwOwotICAgICAg
ICAgICAgdmFyIHN0YXJ0UG9zWSA9IHRhcmdldFNjcm9sbGVyLm9mZnNldFRvcCArIDIwOwotICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7Ci0gICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3Vy
ZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKLSAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygtMSwgMCwgJ2JlZ2FuJywg
J25vbmUnKTsKLSAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcygtMSwgMCwgJ2NoYW5nZWQnLCAnbm9uZScpOwotICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKC0xLCAw
LCAnY2hhbmdlZCcsICdub25lJyk7Ci0gICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKLSAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhjaGVja0Zv
clNjcm9sbFNuYXApOwotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3Jv
bGxHbGlkZSgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUg
c2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KLSAgICAgICAgICAgIGlm
ICh0YXJnZXRTY3JvbGxlci5zY3JvbGxMZWZ0ID09IHdpbmRvdy5pbm5lcldpZHRoKQotICAgICAg
ICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKLSAg
ICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBo
b25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIHdpbmRvdy5pbm5lcldpZHRoICsgIiwgYnV0
IGdvdCAiICsgdGFyZ2V0U2Nyb2xsZXIuc2Nyb2xsTGVmdCk7Ci0KLSAgICAgICAgICAgIHNldFRp
bWVvdXQoc2Nyb2xsU25hcFRlc3QsIDApOwotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24g
c2Nyb2xsR2xpZGVUZXN0KCkKLSAgICAgICAgewotICAgICAgICAgICAgc2Nyb2xsUG9zaXRpb25C
ZWZvcmVHbGlkZSA9IHRhcmdldFNjcm9sbGVyLnNjcm9sbExlZnQ7Ci0KLSAgICAgICAgICAgIHZh
ciBzdGFydFBvc1ggPSB0YXJnZXRTY3JvbGxlci5vZmZzZXRMZWZ0ICsgMjA7Ci0gICAgICAgICAg
ICB2YXIgc3RhcnRQb3NZID0gdGFyZ2V0U2Nyb2xsZXIub2Zmc2V0VG9wICsgMjA7Ci0gICAgICAg
ICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKLSAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdl
IGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQotICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKC0xLCAwLCAnYmVnYW4nLCAnbm9u
ZScpOwotICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKC0xLCAwLCAnY2hhbmdlZCcsICdub25lJyk7Ci0gICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoLTEsIDAsICdj
aGFuZ2VkJywgJ25vbmUnKTsKLSAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygtMSwgMCwgJ2NoYW5nZWQnLCAnbm9uZScpOwotICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7Ci0gICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoLTEsIDAsICdub25lJywgJ2JlZ2lu
Jyk7Ci0gICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoLTEsIDAsICdub25lJywgJ2NvbnRpbnVlJyk7Ci0gICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25v
bmUnLCAnZW5kJyk7Ci0gICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdD
b21wbGV0ZXMoY2hlY2tGb3JTY3JvbGxHbGlkZSk7Ci0gICAgICAgIH0KLQogICAgICAgICBmdW5j
dGlvbiBvbkxvYWQoKQogICAgICAgICB7Ci0gICAgICAgICAgICB0YXJnZXRTY3JvbGxlciA9IGRv
Y3VtZW50LnNjcm9sbGluZ0VsZW1lbnQ7CiAgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2Vu
ZGVyKSB7CiAgICAgICAgICAgICAgICAgaW50ZXJuYWxzLnNldFBsYXRmb3JtTW9tZW50dW1TY3Jv
bGxpbmdQcmVkaWN0aW9uRW5hYmxlZChmYWxzZSk7Ci0gICAgICAgICAgICAgICAgc2V0VGltZW91
dChzY3JvbGxHbGlkZVRlc3QsIDApOworICAgICAgICAgICAgICAgIHJ1blRlc3RzKCk7CiAgICAg
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIHZhciBtZXNzYWdlTG9jYXRpb24gPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaXRlbTAnKTsKICAgICAgICAgICAgICAgICB2YXIgbWVz
c2FnZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwotICAgICAgICAgICAgICAgIG1l
c3NhZ2UuaW5uZXJIVE1MID0gIjxwPlRoaXMgdGVzdCBpcyBiZXR0ZXIgcnVuIHVuZGVyIER1bXBS
ZW5kZXJUcmVlLiBUbyBtYW51YWxseSB0ZXN0IGl0LCBwbGFjZSB0aGUgbW91c2UgcG9pbnRlcjxi
ci8+IgotICAgICAgICAgICAgICAgICAgICArICJpbnNpZGUgdGhlIHJlZCByZWdpb24gYXQgdGhl
IHRvcCBvZiB0aGUgcGFnZSwgYW5kIHRoZW4gdXNlIHRoZSBtb3VzZSB3aGVlbCBvciBhIHR3by1m
aW5nZXIgc3dpcGUgdG8gbWFrZSBhPGJyLz4iCi0gICAgICAgICAgICAgICAgICAgICsgInNtYWxs
IHN3aXBlIGdlc3R1cmUgd2l0aCBzb21lIG1vbWVudHVtLjxici8+PGJyLz4iCi0gICAgICAgICAg
ICAgICAgICAgICsgIlRoZSByZWdpb24gc2hvdWxkIHNjcm9sbCB0byBzaG93IGEgZ3JlZW4gcmVn
aW9uLjxici8+PGJyLz4iCi0gICAgICAgICAgICAgICAgICAgICsgIk5leHQsIHBlcmZvcm0gYSBz
bWFsbCBzY3JvbGwgZ2VzdHVyZSB0aGF0IGRvZXMgbm90IGludm9sdmUgbW9tZW50dW0uIFlvdSBz
aG91bGQgYmVnaW4gdG8gc2VlIG9uZSBvZiB0aGUgY29sb3JzPGJyLz4iCi0gICAgICAgICAgICAg
ICAgICAgICsgInRvIHRoZSBsZWZ0IChvciByaWdodCkgb2YgdGhlIGN1cnJlbnQgZ3JlZW4gYm94
LiBXaGVuIHlvdSByZWxlYXNlIHRoZSB3aGVlbCwgdGhlIHJlZ2lvbiBzaG91bGQgc2Nyb2xsIGJh
Y2sgc288YnIvPiIKLSAgICAgICAgICAgICAgICAgICAgKyAidGhhdCB0aGUgcmVnaW9uIGlzIGEg
c2luZ2xlIGNvbG9yLjxici8+PGJyLz4iCi0gICAgICAgICAgICAgICAgICAgICsgIllvdSBzaG91
bGQgYWxzbyBiZSBhYmxlIHRvIHJlcGVhdCB0aGVzZSB0ZXN0IHN0ZXBzIGZvciB0aGUgdmVydGlj
YWwgcmVnaW9uIGJlbG93LjwvcD4iOworICAgICAgICAgICAgICAgIG1lc3NhZ2UuaW5uZXJIVE1M
ID0gIjxwPlRvIHJ1biB0aGlzIHRlc3QgbWFudWFsbHksIHNjcm9sbCB0aGUgcGFnZSBob3Jpem9u
dGFsbHkuIFRoZSBwYWdlIHNob3VsZCAiCisgICAgICAgICAgICAgICAgICAgICsgInNuYXAgYmV0
d2VlbiB1bmlmb3JtIGNvbG9ycyB3aGljaCBmaWxsIHRoZSB2aWV3LjxwPiI7CiAgICAgICAgICAg
ICAgICAgbWVzc2FnZUxvY2F0aW9uLmFwcGVuZENoaWxkKG1lc3NhZ2UpOwogICAgICAgICAgICAg
fQogICAgICAgICB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnktbWFpbmZyYW1lLXNsb3ctaG9y
aXpvbnRhbC5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5LW1haW5mcmFtZS1zbG93LWhvcml6b250YWwuaHRt
bAppbmRleCBjMWNiY2M4YjBhMmNkY2RkNmQyM2IwYWIyZjg5N2FlZTcxMzEyNTJkLi5mZDJiMzgz
ZjRkNTQ1ZjA4NWFmMDg1OGE5NWU2OGI4NWJlNmZiODhiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRv
cnktbWFpbmZyYW1lLXNsb3ctaG9yaXpvbnRhbC5odG1sCisrKyBiL0xheW91dFRlc3RzL3RpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1tYWlu
ZnJhbWUtc2xvdy1ob3Jpem9udGFsLmh0bWwKQEAgLTI1LDg1ICsyNSwzMCBAQAogICAgICAgICAg
ICAgI2l0ZW01IHsgYmFja2dyb3VuZC1jb2xvcjogZnVjaHNpYTsgfQogICAgICAgICA8L3N0eWxl
PgogICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwv
c2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL3VpLWhlbHBl
ci5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvbWFpbmZyYW1l
LXNjcm9sbC1zbmFwLXRlc3QuanMiPjwvc2NyaXB0PgogICAgICAgICA8c2NyaXB0PgogICAgICAg
ICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CiAKLSAgICAgICAgdmFyIHNjcm9sbGluZ1Rh
cmdldDsKLSAgICAgICAgdmFyIHNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7Ci0gICAgICAgIHZh
ciBzY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7Ci0KLSAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JT
Y3JvbGxTbmFwKCkgewotICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVk
IGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCi0gICAgICAgICAgICBpZiAoc2Nyb2xsaW5n
VGFyZ2V0LnNjcm9sbExlZnQgIT0gc2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQotICAgICAgICAg
ICAgICAgIHRlc3RGYWlsZWQoYGRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRp
b24uICR7c2Nyb2xsaW5nVGFyZ2V0LnNjcm9sbExlZnR9IHZzLiAke3Njcm9sbFBvc2l0aW9uQmVm
b3JlU25hcH1gKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB0ZXN0UGFzc2Vk
KCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKLQotICAgICAgICAgICAgZmluaXNoSlNUZXN0
KCk7Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCgpCisgICAg
ICAgIGFzeW5jIGZ1bmN0aW9uIHJ1blRlc3RzKCkKICAgICAgICAgewotICAgICAgICAgICAgc2Ny
b2xsUG9zaXRpb25CZWZvcmVTbmFwID0gc2Nyb2xsaW5nVGFyZ2V0LnNjcm9sbExlZnQ7Ci0KLSAg
ICAgICAgICAgIHZhciBzdGFydFBvc1ggPSBzY3JvbGxpbmdUYXJnZXQub2Zmc2V0TGVmdCArIDIw
OwotICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHNjcm9sbGluZ1RhcmdldC5vZmZzZXRUb3Ag
KyAyMDsKLSAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOwotICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAv
LyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCi0gICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoLTEsIDAs
ICdiZWdhbicsICdub25lJyk7Ci0gICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoLTEsIDAsICdjaGFuZ2VkJywgJ25vbmUnKTsKLSAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcygtMSwgMCwgJ2NoYW5nZWQnLCAnbm9uZScpOwotICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdu
b25lJyk7Ci0gICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0
ZXMoY2hlY2tGb3JTY3JvbGxTbmFwKTsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIGNo
ZWNrRm9yU2Nyb2xsR2xpZGUoKQotICAgICAgICB7Ci0gICAgICAgICAgICAvLyBUaGUgZGl2IHNo
b3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCi0gICAg
ICAgICAgICBpZiAoc2Nyb2xsaW5nVGFyZ2V0LnNjcm9sbExlZnQgPT0gd2luZG93LmlubmVyV2lk
dGgpCi0gICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2lu
ZG93LiIpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoYGRp
diBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiAke3Njcm9sbGluZ1RhcmdldC5zY3JvbGxMZWZ0
fSB2cy4gJHt3aW5kb3cuaW5uZXJXaWR0aH1gKTsKLQotICAgICAgICAgICAgc2V0VGltZW91dChz
Y3JvbGxTbmFwVGVzdCwgMCk7Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBzY3JvbGxH
bGlkZVRlc3QoKQotICAgICAgICB7Ci0gICAgICAgICAgICBzY3JvbGxQb3NpdGlvbkJlZm9yZUds
aWRlID0gc2Nyb2xsaW5nVGFyZ2V0LnNjcm9sbExlZnQ7Ci0KLSAgICAgICAgICAgIHZhciBzdGFy
dFBvc1ggPSBzY3JvbGxpbmdUYXJnZXQub2Zmc2V0TGVmdCArIDIwOwotICAgICAgICAgICAgdmFy
IHN0YXJ0UG9zWSA9IHNjcm9sbGluZ1RhcmdldC5vZmZzZXRUb3AgKyAyMDsKLSAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOwotICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJl
IGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCi0gICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoLTEsIDAsICdiZWdhbicsICdub25lJyk7
Ci0gICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoLTEsIDAsICdjaGFuZ2VkJywgJ25vbmUnKTsKLSAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygtMSwgMCwgJ2NoYW5n
ZWQnLCAnbm9uZScpOwotICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKC0xLCAwLCAnY2hhbmdlZCcsICdub25lJyk7Ci0gICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
MCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKLSAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygtMSwgMCwgJ25vbmUnLCAnYmVnaW4nKTsK
LSAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcygtNCwgMCwgJ25vbmUnLCAnY29udGludWUnKTsKLSAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScs
ICdlbmQnKTsKLSAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBs
ZXRlcyhjaGVja0ZvclNjcm9sbEdsaWRlKTsKKyAgICAgICAgICAgIGF3YWl0IFVJSGVscGVyLmRl
bGF5Rm9yKDApOworICAgICAgICAgICAgYXdhaXQgc2Nyb2xsR2xpZGVTaG91bGRTY3JvbGxUbyhk
b2N1bWVudC5zY3JvbGxpbmdFbGVtZW50LCBIT1JJWk9OVEFMLCAid2luZG93LmlubmVyV2lkdGgi
KTsKKyAgICAgICAgICAgIGF3YWl0IFVJSGVscGVyLmRlbGF5Rm9yKDApOworICAgICAgICAgICAg
YXdhaXQgc2hvcnRTY3JvbGxTaG91bGRTbmFwQmFjayhkb2N1bWVudC5zY3JvbGxpbmdFbGVtZW50
LCBIT1JJWk9OVEFMKTsKKyAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwogICAgICAgICB9CiAK
ICAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKICAgICAgICAgewotICAgICAgICAgICAgc2Nyb2xs
aW5nVGFyZ2V0ID0gZG9jdW1lbnQuc2Nyb2xsaW5nRWxlbWVudDsKICAgICAgICAgICAgIGlmICh3
aW5kb3cuZXZlbnRTZW5kZXIpIHsKICAgICAgICAgICAgICAgICBpbnRlcm5hbHMuc2V0UGxhdGZv
cm1Nb21lbnR1bVNjcm9sbGluZ1ByZWRpY3Rpb25FbmFibGVkKGZhbHNlKTsKLSAgICAgICAgICAg
ICAgICBzZXRUaW1lb3V0KHNjcm9sbEdsaWRlVGVzdCwgMCk7CisgICAgICAgICAgICAgICAgcnVu
VGVzdHMoKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgdmFyIG1lc3Nh
Z2VMb2NhdGlvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpdGVtMCcpOwogICAgICAgICAg
ICAgICAgIHZhciBtZXNzYWdlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7Ci0gICAg
ICAgICAgICAgICAgbWVzc2FnZS5pbm5lckhUTUwgPSAiPHA+VGhpcyB0ZXN0IGlzIGJldHRlciBy
dW4gdW5kZXIgRHVtcFJlbmRlclRyZWUuIFRvIG1hbnVhbGx5IHRlc3QgaXQsIHBsYWNlIHRoZSBt
b3VzZSBwb2ludGVyPGJyLz4iCi0gICAgICAgICAgICAgICAgICAgICsgImluc2lkZSB0aGUgcmVk
IHJlZ2lvbiBhdCB0aGUgdG9wIG9mIHRoZSBwYWdlLCBhbmQgdGhlbiB1c2UgdGhlIG1vdXNlIHdo
ZWVsIG9yIGEgdHdvLWZpbmdlciBzd2lwZSB0byBtYWtlIGE8YnIvPiIKLSAgICAgICAgICAgICAg
ICAgICAgKyAic21hbGwgc3dpcGUgZ2VzdHVyZSB3aXRoIHNvbWUgbW9tZW50dW0uPGJyLz48YnIv
PiIKLSAgICAgICAgICAgICAgICAgICAgKyAiVGhlIHJlZ2lvbiBzaG91bGQgc2Nyb2xsIHRvIHNo
b3cgYSBncmVlbiByZWdpb24uPGJyLz48YnIvPiIKLSAgICAgICAgICAgICAgICAgICAgKyAiTmV4
dCwgcGVyZm9ybSBhIHNtYWxsIHNjcm9sbCBnZXN0dXJlIHRoYXQgZG9lcyBub3QgaW52b2x2ZSBt
b21lbnR1bS4gWW91IHNob3VsZCBiZWdpbiB0byBzZWUgb25lIG9mIHRoZSBjb2xvcnM8YnIvPiIK
LSAgICAgICAgICAgICAgICAgICAgKyAidG8gdGhlIGxlZnQgKG9yIHJpZ2h0KSBvZiB0aGUgY3Vy
cmVudCBncmVlbiBib3guIFdoZW4geW91IHJlbGVhc2UgdGhlIHdoZWVsLCB0aGUgcmVnaW9uIHNo
b3VsZCBzY3JvbGwgYmFjayBzbzxici8+IgotICAgICAgICAgICAgICAgICAgICArICJ0aGF0IHRo
ZSByZWdpb24gaXMgYSBzaW5nbGUgY29sb3IuPGJyLz48YnIvPiIKLSAgICAgICAgICAgICAgICAg
ICAgKyAiWW91IHNob3VsZCBhbHNvIGJlIGFibGUgdG8gcmVwZWF0IHRoZXNlIHRlc3Qgc3RlcHMg
Zm9yIHRoZSB2ZXJ0aWNhbCByZWdpb24gYmVsb3cuPC9wPiI7CisgICAgICAgICAgICAgICAgbWVz
c2FnZS5pbm5lckhUTUwgPSAiPHA+VG8gcnVuIHRoaXMgdGVzdCBtYW51YWxseSwgc2Nyb2xsIHRo
ZSBwYWdlIGhvcml6b250YWxseS4gVGhlIHBhZ2Ugc2hvdWxkICIKKyAgICAgICAgICAgICAgICAg
ICAgKyAic25hcCBiZXR3ZWVuIHVuaWZvcm0gY29sb3JzIHdoaWNoIGZpbGwgdGhlIHZpZXcuPHA+
IjsKICAgICAgICAgICAgICAgICBtZXNzYWdlTG9jYXRpb24uYXBwZW5kQ2hpbGQobWVzc2FnZSk7
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1tYWlu
ZnJhbWUtc2xvdy12ZXJ0aWNhbC5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5LW1haW5mcmFtZS1zbG93LXZl
cnRpY2FsLmh0bWwKaW5kZXggMGVmZGI4YmZjYTIzNDhmZDUyNTc1NmIxMTJkNzQ1MWY4ZmY0YWNm
MC4uYjFiZTQ1OGQyMTljOTQ1NmI2Zjk0YjJmNTRkZGNmM2I2NDc4MmFmYiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtbWFuZGF0b3J5LW1haW5mcmFtZS1zbG93LXZlcnRpY2FsLmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0
b3J5LW1haW5mcmFtZS1zbG93LXZlcnRpY2FsLmh0bWwKQEAgLTI1LDg3ICsyNSwzMCBAQAogICAg
ICAgICAgICAgI2l0ZW01IHsgYmFja2dyb3VuZC1jb2xvcjogZnVjaHNpYTsgfQogICAgICAgICA8
L3N0eWxlPgogICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qu
anMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL3Vp
LWhlbHBlci5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvbWFp
bmZyYW1lLXNjcm9sbC1zbmFwLXRlc3QuanMiPjwvc2NyaXB0PgogICAgICAgICA8c2NyaXB0Pgog
ICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CiAKLSAgICAgICAgdmFyIHRhcmdl
dFNjcm9sbGVyOwotICAgICAgICB2YXIgc2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKLSAgICAg
ICAgdmFyIHNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKLQotICAgICAgICBmdW5jdGlvbiBjaGVj
a0ZvclNjcm9sbFNuYXAoKQorICAgICAgICBhc3luYyBmdW5jdGlvbiBydW5UZXN0cygpCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRv
IHRoZSBwcmV2aW91cyBwb3NpdGlvbgotICAgICAgICAgICAgaWYgKHRhcmdldFNjcm9sbGVyLnNj
cm9sbFRvcCAhPSBzY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCi0gICAgICAgICAgICAgICAgdGVz
dEZhaWxlZChgZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbi4gKCR7dGFy
Z2V0U2Nyb2xsZXIuc2Nyb2xsVG9wfSB2cy4gJHtzY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXB9KWAp
OwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25v
cmVkIHNuYXAgcG9pbnRzLiIpOwotCisgICAgICAgICAgICBhd2FpdCBVSUhlbHBlci5kZWxheUZv
cigwKTsKKyAgICAgICAgICAgIGF3YWl0IHNjcm9sbEdsaWRlU2hvdWxkU2Nyb2xsVG8oZG9jdW1l
bnQuc2Nyb2xsaW5nRWxlbWVudCwgVkVSVElDQUwsICJ3aW5kb3cuaW5uZXJIZWlnaHQiKTsKKyAg
ICAgICAgICAgIGF3YWl0IFVJSGVscGVyLmRlbGF5Rm9yKDApOworICAgICAgICAgICAgYXdhaXQg
c2hvcnRTY3JvbGxTaG91bGRTbmFwQmFjayhkb2N1bWVudC5zY3JvbGxpbmdFbGVtZW50LCBWRVJU
SUNBTCk7CiAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKICAgICAgICAgfQogCi0gICAgICAg
IGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KCkKLSAgICAgICAgewotICAgICAgICAgICAgLy8gU2Vl
IHdoZXJlIG91ciBkaXYgbGl2ZXM6Ci0gICAgICAgICAgICBzY3JvbGxQb3NpdGlvbkJlZm9yZVNu
YXAgPSB0YXJnZXRTY3JvbGxlci5zY3JvbGxUb3A7Ci0KLSAgICAgICAgICAgIHZhciBzdGFydFBv
c1ggPSB0YXJnZXRTY3JvbGxlci5vZmZzZXRMZWZ0ICsgMjA7Ci0gICAgICAgICAgICB2YXIgc3Rh
cnRQb3NZID0gdGFyZ2V0U2Nyb2xsZXIub2Zmc2V0VG9wICsgMjA7Ci0gICAgICAgICAgICBldmVu
dFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKLSAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0
IG91dHNpZGUgdGhlIGlGcmFtZQotICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIC0xLCAnYmVnYW4nLCAnbm9uZScpOwotICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKDAsIC0xLCAnY2hhbmdlZCcsICdub25lJyk7Ci0gICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgLTEsICdjaGFuZ2VkJywg
J25vbmUnKTsKLSAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOwotICAgICAgICAgICAgZXZl
bnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGNoZWNrRm9yU2Nyb2xsU25hcCk7
Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKCkKLSAg
ICAgICAgewotICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xp
ZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgotICAgICAgICAgICAgaWYgKHRhcmdldFNjcm9s
bGVyLnNjcm9sbFRvcCA9PSB3aW5kb3cuaW5uZXJIZWlnaHQpCi0gICAgICAgICAgICAgICAgdGVz
dFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOwotICAgICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoYGRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9p
bnRzLiAoJHt0YXJnZXRTY3JvbGxlci5zY3JvbGxUb3B9IHZzLiAke3dpbmRvdy5pbm5lckhlaWdo
dH0pYCk7Ci0KLSAgICAgICAgICAgIHNldFRpbWVvdXQoc2Nyb2xsU25hcFRlc3QsIDApOwotICAg
ICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KCkKLSAgICAgICAgewot
ICAgICAgICAgICAgc2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IHRhcmdldFNjcm9sbGVyLnNj
cm9sbFRvcDsKLQotICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHRhcmdldFNjcm9sbGVyLm9m
ZnNldExlZnQgKyAyMDsKLSAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB0YXJnZXRTY3JvbGxl
ci5vZmZzZXRUb3AgKyAyMDsKLSAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2
ZW50cygpOwotICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBz
dGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCi0g
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoMCwgLTEsICdiZWdhbicsICdub25lJyk7Ci0gICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgLTEsICdjaGFuZ2VkJywg
J25vbmUnKTsKLSAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcygwLCAtMSwgJ2NoYW5nZWQnLCAnbm9uZScpOwotICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIC0x
LCAnY2hhbmdlZCcsICdub25lJyk7Ci0gICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKLSAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcygwLCAtMSwgJ25vbmUnLCAnYmVnaW4nKTsKLSAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAtNCwgJ25vbmUnLCAnY29u
dGludWUnKTsKLSAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKLSAgICAgICAgICAgIGV2ZW50
U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhjaGVja0ZvclNjcm9sbEdsaWRlKTsK
LSAgICAgICAgfQotCiAgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIHRhcmdldFNjcm9sbGVyID0gZG9jdW1lbnQuc2Nyb2xsaW5nRWxlbWVudDsKICAgICAg
ICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKICAgICAgICAgICAgICAgICBpbnRlcm5h
bHMuc2V0UGxhdGZvcm1Nb21lbnR1bVNjcm9sbGluZ1ByZWRpY3Rpb25FbmFibGVkKGZhbHNlKTsK
LSAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KHNjcm9sbEdsaWRlVGVzdCwgMCk7CisgICAgICAg
ICAgICAgICAgcnVuVGVzdHMoKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAg
ICAgdmFyIG1lc3NhZ2VMb2NhdGlvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpdGVtMCcp
OwogICAgICAgICAgICAgICAgIHZhciBtZXNzYWdlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
ZGl2Jyk7Ci0gICAgICAgICAgICAgICAgbWVzc2FnZS5pbm5lckhUTUwgPSAiPHA+VGhpcyB0ZXN0
IGlzIGJldHRlciBydW4gdW5kZXIgRHVtcFJlbmRlclRyZWUuIFRvIG1hbnVhbGx5IHRlc3QgaXQs
IHBsYWNlIHRoZSBtb3VzZSBwb2ludGVyPGJyLz4iCi0gICAgICAgICAgICAgICAgICAgICsgImlu
c2lkZSB0aGUgcmVkIHJlZ2lvbiBhdCB0aGUgdG9wIG9mIHRoZSBwYWdlLCBhbmQgdGhlbiB1c2Ug
dGhlIG1vdXNlIHdoZWVsIG9yIGEgdHdvLWZpbmdlciBzd2lwZSB0byBtYWtlIGE8YnIvPiIKLSAg
ICAgICAgICAgICAgICAgICAgKyAic21hbGwgc3dpcGUgZ2VzdHVyZSB3aXRoIHNvbWUgbW9tZW50
dW0uPGJyLz48YnIvPiIKLSAgICAgICAgICAgICAgICAgICAgKyAiVGhlIHJlZ2lvbiBzaG91bGQg
c2Nyb2xsIHRvIHNob3cgYSBncmVlbiByZWdpb24uPGJyLz48YnIvPiIKLSAgICAgICAgICAgICAg
ICAgICAgKyAiTmV4dCwgcGVyZm9ybSBhIHNtYWxsIHNjcm9sbCBnZXN0dXJlIHRoYXQgZG9lcyBu
b3QgaW52b2x2ZSBtb21lbnR1bS4gWW91IHNob3VsZCBiZWdpbiB0byBzZWUgb25lIG9mIHRoZSBj
b2xvcnM8YnIvPiIKLSAgICAgICAgICAgICAgICAgICAgKyAidG8gdGhlIGxlZnQgKG9yIHJpZ2h0
KSBvZiB0aGUgY3VycmVudCBncmVlbiBib3guIFdoZW4geW91IHJlbGVhc2UgdGhlIHdoZWVsLCB0
aGUgcmVnaW9uIHNob3VsZCBzY3JvbGwgYmFjayBzbzxici8+IgotICAgICAgICAgICAgICAgICAg
ICArICJ0aGF0IHRoZSByZWdpb24gaXMgYSBzaW5nbGUgY29sb3IuPGJyLz48YnIvPiIKLSAgICAg
ICAgICAgICAgICAgICAgKyAiWW91IHNob3VsZCBhbHNvIGJlIGFibGUgdG8gcmVwZWF0IHRoZXNl
IHRlc3Qgc3RlcHMgZm9yIHRoZSB2ZXJ0aWNhbCByZWdpb24gYmVsb3cuPC9wPiI7CisgICAgICAg
ICAgICAgICAgbWVzc2FnZS5pbm5lckhUTUwgPSAiPHA+VG8gcnVuIHRoaXMgdGVzdCBtYW51YWxs
eSwgc2Nyb2xsIHRoZSBwYWdlIHZlcnRpY2FsbHkuIFRoZSBwYWdlIHNob3VsZCAiCisgICAgICAg
ICAgICAgICAgICAgICsgInNuYXAgYmV0d2VlbiB1bmlmb3JtIGNvbG9ycyB3aGljaCBmaWxsIHRo
ZSB2aWV3LjxwPiI7CiAgICAgICAgICAgICAgICAgbWVzc2FnZUxvY2F0aW9uLmFwcGVuZENoaWxk
KG1lc3NhZ2UpOwogICAgICAgICAgICAgfQogICAgICAgICB9CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5k
YXRvcnktbWFpbmZyYW1lLXZlcnRpY2FsLWxlZ2FjeS5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5LW1haW5m
cmFtZS12ZXJ0aWNhbC1sZWdhY3kuaHRtbAppbmRleCBlNzhhYWQ0YWU1OTQwYjI3ZWJmZWFiOTY1
NzMyMTQzOWIwMTAyNDZmLi44NDc4ZGUwYjE4ZjBmOTdiMjJjOGQ0M2EyOTBkYmY1OTU5ZWNhMjM3
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnktbWFpbmZyYW1lLXZlcnRpY2FsLWxlZ2FjeS5odG1s
CisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLW1hbmRhdG9yeS1tYWluZnJhbWUtdmVydGljYWwtbGVnYWN5Lmh0bWwKQEAgLTIz
LDg2ICsyMywzMCBAQAogICAgICAgICAgICAgI2l0ZW01IHsgYmFja2dyb3VuZC1jb2xvcjogZnVj
aHNpYTsgfQogICAgICAgICA8L3N0eWxlPgogICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvbWFpbmZyYW1lLXNjcm9sbC1zbmFwLXRlc3QuanMiPjwvc2NyaXB0Pgog
ICAgICAgICA8c2NyaXB0PgogICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CiAK
LSAgICAgICAgdmFyIHNjcm9sbGluZ1RhcmdldDsKLSAgICAgICAgdmFyIHNjcm9sbFBvc2l0aW9u
QmVmb3JlR2xpZGU7Ci0gICAgICAgIHZhciBzY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7Ci0KLSAg
ICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKCkKKyAgICAgICAgYXN5bmMgZnVuY3Rp
b24gcnVuVGVzdHMoKQogICAgICAgICB7Ci0gICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBo
YXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KLSAgICAgICAgICAgIGlm
IChzY3JvbGxpbmdUYXJnZXQuc2Nyb2xsVG9wICE9IHNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkK
LSAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKGBkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJv
cGVyIGxvY2F0aW9uLiAoJHtzY3JvbGxpbmdUYXJnZXQuc2Nyb2xsVG9wfSB2cy4gJHtzY3JvbGxQ
b3NpdGlvbkJlZm9yZVNuYXB9KWApOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAg
IHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOwotCisgICAgICAgICAgICBh
d2FpdCBVSUhlbHBlci5kZWxheUZvcigwKTsKKyAgICAgICAgICAgIGF3YWl0IHNjcm9sbEdsaWRl
U2hvdWxkU2Nyb2xsVG8oZG9jdW1lbnQuc2Nyb2xsaW5nRWxlbWVudCwgVkVSVElDQUwsICJ3aW5k
b3cuaW5uZXJIZWlnaHQiKTsKKyAgICAgICAgICAgIGF3YWl0IFVJSGVscGVyLmRlbGF5Rm9yKDAp
OworICAgICAgICAgICAgYXdhaXQgc2hvcnRTY3JvbGxTaG91bGRTbmFwQmFjayhkb2N1bWVudC5z
Y3JvbGxpbmdFbGVtZW50LCBWRVJUSUNBTCk7CiAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsK
ICAgICAgICAgfQogCi0gICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KCkKLSAgICAgICAg
ewotICAgICAgICAgICAgc2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gc2Nyb2xsaW5nVGFyZ2V0
LnNjcm9sbFRvcDsKLQotICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHNjcm9sbGluZ1Rhcmdl
dC5vZmZzZXRMZWZ0ICsgMjA7Ci0gICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gc2Nyb2xsaW5n
VGFyZ2V0Lm9mZnNldFRvcCArIDIwOwotICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldo
ZWVsRXZlbnRzKCk7Ci0gICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBv
c1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJh
bWUKLSAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcygwLCAtMSwgJ2JlZ2FuJywgJ25vbmUnKTsKLSAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAtMSwgJ2NoYW5n
ZWQnLCAnbm9uZScpOwotICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIC0xLCAnY2hhbmdlZCcsICdub25lJyk7Ci0gICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
MCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKLSAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRl
clNjcm9sbGluZ0NvbXBsZXRlcyhjaGVja0ZvclNjcm9sbFNuYXApOwotICAgICAgICB9Ci0KLSAg
ICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSgpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQg
c25hcCBwb2ludC4KLSAgICAgICAgICAgIGlmIChzY3JvbGxpbmdUYXJnZXQuc2Nyb2xsVG9wID09
IHdpbmRvdy5pbm5lckhlaWdodCkKLSAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Ny
b2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg
ICAgdGVzdEZhaWxlZChgZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuICgke3Njcm9sbGlu
Z1RhcmdldC5zY3JvbGxUb3B9IHZzLiAke3dpbmRvdy5pbm5lckhlaWdodH0pYCk7Ci0KLSAgICAg
ICAgICAgIHNldFRpbWVvdXQoc2Nyb2xsU25hcFRlc3QsIDApOwotICAgICAgICB9Ci0KLSAgICAg
ICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KCkKLSAgICAgICAgewotICAgICAgICAgICAgc2Ny
b2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IHNjcm9sbGluZ1RhcmdldC5zY3JvbGxUb3A7Ci0KLSAg
ICAgICAgICAgIHZhciBzdGFydFBvc1ggPSBzY3JvbGxpbmdUYXJnZXQub2Zmc2V0TGVmdCArIDIw
OwotICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHNjcm9sbGluZ1RhcmdldC5vZmZzZXRUb3Ag
KyAyMDsKLSAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOwotICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAv
LyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCi0gICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgLTEs
ICdiZWdhbicsICdub25lJyk7Ci0gICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgLTEsICdjaGFuZ2VkJywgJ25vbmUnKTsKLSAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcygwLCAtMSwgJ2NoYW5nZWQnLCAnbm9uZScpOwotICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIC0xLCAnY2hhbmdlZCcs
ICdub25lJyk7Ci0gICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKLSAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAtMSwg
J25vbmUnLCAnYmVnaW4nKTsKLSAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAtNCwgJ25vbmUnLCAnY29udGludWUnKTsKLSAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKLSAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxB
ZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhjaGVja0ZvclNjcm9sbEdsaWRlKTsKLSAgICAgICAgfQot
CiAgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHNjcm9s
bGluZ1RhcmdldCA9IGRvY3VtZW50LnNjcm9sbGluZ0VsZW1lbnQ7CiAgICAgICAgICAgICBpZiAo
d2luZG93LmV2ZW50U2VuZGVyKSB7CiAgICAgICAgICAgICAgICAgaW50ZXJuYWxzLnNldFBsYXRm
b3JtTW9tZW50dW1TY3JvbGxpbmdQcmVkaWN0aW9uRW5hYmxlZChmYWxzZSk7Ci0gICAgICAgICAg
ICAgICAgc2V0VGltZW91dChzY3JvbGxHbGlkZVRlc3QsIDApOworICAgICAgICAgICAgICAgIHJ1
blRlc3RzKCk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIHZhciBtZXNz
YWdlTG9jYXRpb24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaXRlbTAnKTsKICAgICAgICAg
ICAgICAgICB2YXIgbWVzc2FnZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwotICAg
ICAgICAgICAgICAgIG1lc3NhZ2UuaW5uZXJIVE1MID0gIjxwPlRoaXMgdGVzdCBpcyBiZXR0ZXIg
cnVuIHVuZGVyIER1bXBSZW5kZXJUcmVlLiBUbyBtYW51YWxseSB0ZXN0IGl0LCBwbGFjZSB0aGUg
bW91c2UgcG9pbnRlcjxici8+IgotICAgICAgICAgICAgICAgICAgICArICJpbnNpZGUgdGhlIHJl
ZCByZWdpb24gYXQgdGhlIHRvcCBvZiB0aGUgcGFnZSwgYW5kIHRoZW4gdXNlIHRoZSBtb3VzZSB3
aGVlbCBvciBhIHR3by1maW5nZXIgc3dpcGUgdG8gbWFrZSBhPGJyLz4iCi0gICAgICAgICAgICAg
ICAgICAgICsgInNtYWxsIHN3aXBlIGdlc3R1cmUgd2l0aCBzb21lIG1vbWVudHVtLjxici8+PGJy
Lz4iCi0gICAgICAgICAgICAgICAgICAgICsgIlRoZSByZWdpb24gc2hvdWxkIHNjcm9sbCB0byBz
aG93IGEgZ3JlZW4gcmVnaW9uLjxici8+PGJyLz4iCi0gICAgICAgICAgICAgICAgICAgICsgIk5l
eHQsIHBlcmZvcm0gYSBzbWFsbCBzY3JvbGwgZ2VzdHVyZSB0aGF0IGRvZXMgbm90IGludm9sdmUg
bW9tZW50dW0uIFlvdSBzaG91bGQgYmVnaW4gdG8gc2VlIG9uZSBvZiB0aGUgY29sb3JzPGJyLz4i
Ci0gICAgICAgICAgICAgICAgICAgICsgInRvIHRoZSBsZWZ0IChvciByaWdodCkgb2YgdGhlIGN1
cnJlbnQgZ3JlZW4gYm94LiBXaGVuIHlvdSByZWxlYXNlIHRoZSB3aGVlbCwgdGhlIHJlZ2lvbiBz
aG91bGQgc2Nyb2xsIGJhY2sgc288YnIvPiIKLSAgICAgICAgICAgICAgICAgICAgKyAidGhhdCB0
aGUgcmVnaW9uIGlzIGEgc2luZ2xlIGNvbG9yLjxici8+PGJyLz4iCi0gICAgICAgICAgICAgICAg
ICAgICsgIllvdSBzaG91bGQgYWxzbyBiZSBhYmxlIHRvIHJlcGVhdCB0aGVzZSB0ZXN0IHN0ZXBz
IGZvciB0aGUgdmVydGljYWwgcmVnaW9uIGJlbG93LjwvcD4iOworICAgICAgICAgICAgICAgIG1l
c3NhZ2UuaW5uZXJIVE1MID0gIjxwPlRvIHJ1biB0aGlzIHRlc3QgbWFudWFsbHksIHNjcm9sbCB0
aGUgcGFnZSB2ZXJ0aWNhbGx5LiBUaGUgcGFnZSBzaG91bGQgIgorICAgICAgICAgICAgICAgICAg
ICArICJzbmFwIGJldHdlZW4gdW5pZm9ybSBjb2xvcnMgd2hpY2ggZmlsbCB0aGUgdmlldy48cD4i
OwogICAgICAgICAgICAgICAgIG1lc3NhZ2VMb2NhdGlvbi5hcHBlbmRDaGlsZChtZXNzYWdlKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5LW1haW5m
cmFtZS12ZXJ0aWNhbC10aGVuLWhvcml6b250YWwuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1tYWluZnJh
bWUtdmVydGljYWwtdGhlbi1ob3Jpem9udGFsLmh0bWwKaW5kZXggZDhkMGVmYWU0Mzc3MWYzMDZj
NDI0Y2ZmZmQ0YjJkNzJjYWVhNDk3Ny4uNjQyN2ExMTRlNDhiMjZiZTY1YjU1ZTdiODY4ZGY4Njc1
NjkxYTlmOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5LW1haW5mcmFtZS12ZXJ0aWNhbC10aGVu
LWhvcml6b250YWwuaHRtbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnktbWFpbmZyYW1lLXZlcnRpY2FsLXRo
ZW4taG9yaXpvbnRhbC5odG1sCkBAIC0yNSwzOSArMjUsNDIgQEAKICAgICAgICAgICAgICNpdGVt
NSB7IGJhY2tncm91bmQtY29sb3I6IGZ1Y2hzaWE7IH0KICAgICAgICAgPC9zdHlsZT4KICAgICAg
ICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4K
KyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy91aS1oZWxwZXIuanMiPjwv
c2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL21haW5mcmFtZS1zY3JvbGwt
c25hcC10ZXN0LmpzIj48L3NjcmlwdD4KICAgICAgICAgPHNjcmlwdD4KICAgICAgICAgd2luZG93
LmpzVGVzdElzQXN5bmMgPSB0cnVlOwogCi0gICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0
KCkKKyAgICAgICAgYXN5bmMgZnVuY3Rpb24gcnVuVGVzdCgpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIHZhciBzdGFydFBvc1ggPSBkb2N1bWVudC5ib2R5Lm9mZnNldExlZnQgKyAyMDsKLSAgICAg
ICAgICAgIHZhciBzdGFydFBvc1kgPSBkb2N1bWVudC5ib2R5Lm9mZnNldFRvcCArIDIwOwotICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7Ci0gICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7Ci0gICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwg
LTEsICdiZWdhbicsICdub25lJyk7Ci0gICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgLTEsICdjaGFuZ2VkJywgJ25vbmUnKTsK
LSAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcygtMSwgMCwgJ2NoYW5nZWQnLCAnbm9uZScpOwotICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKC0xLCAwLCAnY2hhbmdl
ZCcsICdub25lJyk7Ci0gICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoLTEsIDAsICdjaGFuZ2VkJywgJ25vbmUnKTsKLSAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygw
LCAwLCAnZW5kZWQnLCAnbm9uZScpOwotICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKC0xLCAwLCAnbm9uZScsICdiZWdpbicpOwot
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKC00LCAwLCAnbm9uZScsICdjb250aW51ZScpOwotICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywg
J2VuZCcpOwotICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxl
dGVzKCgpID0+IHsKLSAgICAgICAgICAgICAgICBpZiAoZG9jdW1lbnQuc2Nyb2xsaW5nRWxlbWVu
dC5zY3JvbGxUb3AgPT0gMCkKLSAgICAgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgic2Nyb2xs
IG9mZnNldCBzbmFwcGVkIGJhY2sgdG8gdG9wLiIpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZChgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cyAo
ZXhwZWN0ZWQgMCwgb2JzZXJ2ZWQgJHtkb2N1bWVudC5zY3JvbGxpbmdFbGVtZW50LnNjcm9sbFRv
cH0pLmApOworICAgICAgICAgICAgLy8gVGhlc2UgYXJyYXlzIGFyZSBhcmd1bWVudHMgdGhhdCB3
aWxsIGJlIHBhc3NlZCB0byBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMuCisgICAgICAgICAgICBsZXQgc2Nyb2xsTW90aW9ucyA9IFsKKyAgICAgICAg
ICAgICAgICBbMCwgLTEsICdiZWdhbicsICdub25lJ10sCisgICAgICAgICAgICAgICAgWzAsIC0x
LCAnY2hhbmdlZCcsICdub25lJ10sCisgICAgICAgICAgICAgICAgWy0xLCAwLCAnY2hhbmdlZCcs
ICdub25lJ10sCisgICAgICAgICAgICAgICAgWy0xLCAwLCAnY2hhbmdlZCcsICdub25lJ10sCisg
ICAgICAgICAgICAgICAgWy0xLCAwLCAnY2hhbmdlZCcsICdub25lJ10sCisgICAgICAgICAgICAg
ICAgWzAsIDAsICdlbmRlZCcsICdub25lJ10sCisgICAgICAgICAgICAgICAgWy0xLCAwLCAnbm9u
ZScsICdiZWdpbiddLAorICAgICAgICAgICAgICAgIFstNCwgMCwgJ25vbmUnLCAnY29udGludWUn
XSwKKyAgICAgICAgICAgICAgICBbMCwgMCwgJ25vbmUnLCAnZW5kJ10sCisgICAgICAgICAgICBd
OwogCi0gICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgICAgICAgICB9KTsKKyAg
ICAgICAgICAgIGF3YWl0IFVJSGVscGVyLmRlbGF5Rm9yKDApOworICAgICAgICAgICAgYXdhaXQg
ZG9TY3JvbGxUZXN0KGRvY3VtZW50LnNjcm9sbGluZ0VsZW1lbnQsIFZFUlRJQ0FMX0FORF9IT1JJ
Wk9OVEFMLCBzY3JvbGxNb3Rpb25zKTsKKworICAgICAgICAgICAgaWYgKGRvY3VtZW50LnNjcm9s
bGluZ0VsZW1lbnQuc2Nyb2xsVG9wID09IDApCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgi
c2Nyb2xsIG9mZnNldCBzbmFwcGVkIGJhY2sgdG8gdG9wLiIpOworICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoYGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMgKGV4
cGVjdGVkIDAsIG9ic2VydmVkICR7ZG9jdW1lbnQuc2Nyb2xsaW5nRWxlbWVudC5zY3JvbGxUb3B9
KS5gKTsKKworICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CiAgICAgICAgIH0KIAogICAgICAg
ICBmdW5jdGlvbiBvbkxvYWQoKQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAod2luZG93LmV2
ZW50U2VuZGVyKSB7CiAgICAgICAgICAgICAgICAgaW50ZXJuYWxzLnNldFBsYXRmb3JtTW9tZW50
dW1TY3JvbGxpbmdQcmVkaWN0aW9uRW5hYmxlZChmYWxzZSk7Ci0gICAgICAgICAgICAgICAgc2V0
VGltZW91dChzY3JvbGxTbmFwVGVzdCwgMCk7CisgICAgICAgICAgICAgICAgcnVuVGVzdCgpOwog
ICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICB2YXIgbWVzc2FnZUxvY2F0aW9u
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2l0ZW0wJyk7CiAgICAgICAgICAgICAgICAgdmFy
IG1lc3NhZ2UgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LW1hbmRhdG9yeS1tYWluZnJhbWUtdmVydGljYWwtd2l0aC1tYXJnaW4uaHRtbCBiL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRh
dG9yeS1tYWluZnJhbWUtdmVydGljYWwtd2l0aC1tYXJnaW4uaHRtbAppbmRleCA4MjhkODBiMjMw
OTg1MjU5OWRhYzhjNmYzNjg0ODJhZTM1NjAwMTQ4Li41Yzk5OTJmNGIwZmUxOTU5OWZkZjg1YmM3
MGUwNGY3ZWRjNGRjMDJlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnktbWFpbmZyYW1lLXZlcnRp
Y2FsLXdpdGgtbWFyZ2luLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5LW1haW5mcmFtZS12ZXJ0aWNh
bC13aXRoLW1hcmdpbi5odG1sCkBAIC0yOSw4MSArMjksMzAgQEAKICAgICAgICAgICAgICNpdGVt
NSB7IGJhY2tncm91bmQtY29sb3I6IGZ1Y2hzaWE7IH0KICAgICAgICAgPC9zdHlsZT4KICAgICAg
ICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4K
KyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy91aS1oZWxwZXIuanMiPjwv
c2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL21haW5mcmFtZS1zY3JvbGwt
c25hcC10ZXN0LmpzIj48L3NjcmlwdD4KICAgICAgICAgPHNjcmlwdD4KICAgICAgICAgd2luZG93
LmpzVGVzdElzQXN5bmMgPSB0cnVlOwogCi0gICAgICAgIHZhciBzY3JvbGxpbmdUYXJnZXQ7Ci0g
ICAgICAgIHZhciBzY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOwotICAgICAgICB2YXIgc2Nyb2xs
UG9zaXRpb25CZWZvcmVTbmFwOwotCi0gICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25h
cCgpCisgICAgICAgIGFzeW5jIGZ1bmN0aW9uIHJ1blRlc3RzKCkKICAgICAgICAgewotICAgICAg
ICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3Vz
IHBvc2l0aW9uCi0gICAgICAgICAgICBpZiAoc2Nyb2xsaW5nVGFyZ2V0LnNjcm9sbFRvcCAhPSBz
Y3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCi0gICAgICAgICAgICAgICAgdGVzdEZhaWxlZChgZGl2
IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbi4gKCR7c2Nyb2xsaW5nVGFyZ2V0
LnNjcm9sbFRvcH0gdnMuICR7c2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwfSlgKTsKLSAgICAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBv
aW50cy4iKTsKLQorICAgICAgICAgICAgYXdhaXQgVUlIZWxwZXIuZGVsYXlGb3IoMCk7CisgICAg
ICAgICAgICBhd2FpdCBzY3JvbGxHbGlkZVNob3VsZFNjcm9sbFRvKGRvY3VtZW50LnNjcm9sbGlu
Z0VsZW1lbnQsIFZFUlRJQ0FMLCAid2luZG93LmlubmVySGVpZ2h0ICsgNTAiKTsKKyAgICAgICAg
ICAgIGF3YWl0IFVJSGVscGVyLmRlbGF5Rm9yKDApOworICAgICAgICAgICAgYXdhaXQgc2hvcnRT
Y3JvbGxTaG91bGRTbmFwQmFjayhkb2N1bWVudC5zY3JvbGxpbmdFbGVtZW50LCBWRVJUSUNBTCk7
CiAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKICAgICAgICAgfQogCi0gICAgICAgIGZ1bmN0
aW9uIHNjcm9sbFNuYXBUZXN0KCkKLSAgICAgICAgewotICAgICAgICAgICAgc2Nyb2xsUG9zaXRp
b25CZWZvcmVTbmFwID0gc2Nyb2xsaW5nVGFyZ2V0LnNjcm9sbFRvcDsKLQotICAgICAgICAgICAg
dmFyIHN0YXJ0UG9zWCA9IHNjcm9sbGluZ1RhcmdldC5vZmZzZXRMZWZ0ICsgMjA7Ci0gICAgICAg
ICAgICB2YXIgc3RhcnRQb3NZID0gc2Nyb2xsaW5nVGFyZ2V0Lm9mZnNldFRvcCArIDIwOwotICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7Ci0gICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3Vy
ZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKLSAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAtMSwgJ2JlZ2FuJywg
J25vbmUnKTsKLSAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcygwLCAtMSwgJ2NoYW5nZWQnLCAnbm9uZScpOwotICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIC0x
LCAnY2hhbmdlZCcsICdub25lJyk7Ci0gICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKLSAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhjaGVja0Zv
clNjcm9sbFNuYXApOwotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3Jv
bGxHbGlkZSgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUg
c2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludCwgd2hpY2ggc2hvdWxkIGJl
IHRoZSBoZWlnaHQKLSAgICAgICAgICAgIC8vIG9mIHRoZSBmaXJzdCBkaXYgcGx1cyB0aGUgcm9v
dCBlbGVtZW50J3MgdG9wIG1hcmdpbiAoNTAgcGl4ZWxzKS4KLSAgICAgICAgICAgIGlmIChzY3Jv
bGxpbmdUYXJnZXQuc2Nyb2xsVG9wID09IHdpbmRvdy5pbm5lckhlaWdodCArIDUwKQotICAgICAg
ICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKLSAg
ICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKGBkaXYgZGlkIG5vdCBo
b25vciBzbmFwIHBvaW50cy4gKCR7c2Nyb2xsaW5nVGFyZ2V0LnNjcm9sbFRvcH0gdnMuICR7d2lu
ZG93LmlubmVySGVpZ2h0fSlgKTsKLQotICAgICAgICAgICAgc2V0VGltZW91dChzY3JvbGxTbmFw
VGVzdCwgMCk7Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3Qo
KQotICAgICAgICB7Ci0gICAgICAgICAgICBzY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gc2Ny
b2xsaW5nVGFyZ2V0LnNjcm9sbFRvcDsKLQotICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHNj
cm9sbGluZ1RhcmdldC5vZmZzZXRMZWZ0ICsgMjA7Ci0gICAgICAgICAgICB2YXIgc3RhcnRQb3NZ
ID0gc2Nyb2xsaW5nVGFyZ2V0Lm9mZnNldFRvcCArIDIwOwotICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7Ci0gICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1v
dmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRz
aWRlIHRoZSBpRnJhbWUKLSAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAtMSwgJ2JlZ2FuJywgJ25vbmUnKTsKLSAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygw
LCAtMSwgJ2NoYW5nZWQnLCAnbm9uZScpOwotICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIC0xLCAnY2hhbmdlZCcsICdub25l
Jyk7Ci0gICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoMCwgLTEsICdjaGFuZ2VkJywgJ25vbmUnKTsKLSAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5k
ZWQnLCAnbm9uZScpOwotICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIC0xLCAnbm9uZScsICdiZWdpbicpOwotICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAs
IC00LCAnbm9uZScsICdjb250aW51ZScpOwotICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOwot
ICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGNoZWNr
Rm9yU2Nyb2xsR2xpZGUpOwotICAgICAgICB9Ci0KICAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkK
ICAgICAgICAgewotICAgICAgICAgICAgc2Nyb2xsaW5nVGFyZ2V0ID0gZG9jdW1lbnQuc2Nyb2xs
aW5nRWxlbWVudDsKICAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKICAgICAg
ICAgICAgICAgICBpbnRlcm5hbHMuc2V0UGxhdGZvcm1Nb21lbnR1bVNjcm9sbGluZ1ByZWRpY3Rp
b25FbmFibGVkKGZhbHNlKTsKLSAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KHNjcm9sbEdsaWRl
VGVzdCwgMCk7CisgICAgICAgICAgICAgICAgcnVuVGVzdHMoKTsKICAgICAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICAgICAgdmFyIG1lc3NhZ2VMb2NhdGlvbiA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdpdGVtMCcpOwogICAgICAgICAgICAgICAgIHZhciBtZXNzYWdlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICAgICAgICAgICAgICAgbWVzc2FnZS5pbm5lckhU
TUwgPSAiPHA+VG8gcnVuIHRoaXMgdGVzdCBtYW51YWxseSwgc2Nyb2xsIHRoZSBwYWdlIHZlcnRp
Y2FsbHkuIFRoZSBwYWdlIHNob3VsZCAiCi0gICAgICAgICAgICAgICAgICAgICsgImFsdGVybmF0
ZSBiZXR3ZWVuIHVuaWZvcm0gY29sb3JzIHdoaWNoIGZpbGwgdGhlIHZpZXcuPHA+IjsKKyAgICAg
ICAgICAgICAgICAgICAgKyAic25hcCBiZXR3ZWVuIHVuaWZvcm0gY29sb3JzIHdoaWNoIGZpbGwg
dGhlIHZpZXcuPHA+IjsKICAgICAgICAgICAgICAgICBtZXNzYWdlTG9jYXRpb24uYXBwZW5kQ2hp
bGQobWVzc2FnZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1h
bmRhdG9yeS1tYWluZnJhbWUtdmVydGljYWwuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1tYWluZnJhbWUt
dmVydGljYWwuaHRtbAppbmRleCA0ZjY4MjdiYmY0ZjIzYjdlYjYxNDdlNThhMjU5MDI0YTQwOTY5
ZWYyLi5kNzhhNTU1MGYxN2NiMWFlZDgzOGZiYzVjMjgzMTJkOWFiNmQ4MDY2IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1tYW5kYXRvcnktbWFpbmZyYW1lLXZlcnRpY2FsLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5
LW1haW5mcmFtZS12ZXJ0aWNhbC5odG1sCkBAIC0yNSw4NiArMjUsMzAgQEAKICAgICAgICAgICAg
ICNpdGVtNSB7IGJhY2tncm91bmQtY29sb3I6IGZ1Y2hzaWE7IH0KICAgICAgICAgPC9zdHlsZT4K
ICAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3Nj
cmlwdD4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy91aS1oZWxwZXIu
anMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL21haW5mcmFtZS1z
Y3JvbGwtc25hcC10ZXN0LmpzIj48L3NjcmlwdD4KICAgICAgICAgPHNjcmlwdD4KICAgICAgICAg
d2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwogCi0gICAgICAgIHZhciBzY3JvbGxpbmdUYXJn
ZXQ7Ci0gICAgICAgIHZhciBzY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOwotICAgICAgICB2YXIg
c2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOwotCi0gICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Ny
b2xsU25hcCgpCisgICAgICAgIGFzeW5jIGZ1bmN0aW9uIHJ1blRlc3RzKCkKICAgICAgICAgewot
ICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHBy
ZXZpb3VzIHBvc2l0aW9uCi0gICAgICAgICAgICBpZiAoc2Nyb2xsaW5nVGFyZ2V0LnNjcm9sbFRv
cCAhPSBzY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCi0gICAgICAgICAgICAgICAgdGVzdEZhaWxl
ZChgZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbi4gKCR7c2Nyb2xsaW5n
VGFyZ2V0LnNjcm9sbFRvcH0gdnMuICR7c2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwfSlgKTsKLSAg
ICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBz
bmFwIHBvaW50cy4iKTsKLQorICAgICAgICAgICAgYXdhaXQgVUlIZWxwZXIuZGVsYXlGb3IoMCk7
CisgICAgICAgICAgICBhd2FpdCBzY3JvbGxHbGlkZVNob3VsZFNjcm9sbFRvKGRvY3VtZW50LnNj
cm9sbGluZ0VsZW1lbnQsIFZFUlRJQ0FMLCAid2luZG93LmlubmVySGVpZ2h0Iik7CisgICAgICAg
ICAgICBhd2FpdCBVSUhlbHBlci5kZWxheUZvcigwKTsKKyAgICAgICAgICAgIGF3YWl0IHNob3J0
U2Nyb2xsU2hvdWxkU25hcEJhY2soZG9jdW1lbnQuc2Nyb2xsaW5nRWxlbWVudCwgVkVSVElDQUwp
OwogICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CiAgICAgICAgIH0KIAotICAgICAgICBmdW5j
dGlvbiBzY3JvbGxTbmFwVGVzdCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHNjcm9sbFBvc2l0
aW9uQmVmb3JlU25hcCA9IHNjcm9sbGluZ1RhcmdldC5zY3JvbGxUb3A7Ci0KLSAgICAgICAgICAg
IHZhciBzdGFydFBvc1ggPSBzY3JvbGxpbmdUYXJnZXQub2Zmc2V0TGVmdCArIDIwOwotICAgICAg
ICAgICAgdmFyIHN0YXJ0UG9zWSA9IHNjcm9sbGluZ1RhcmdldC5vZmZzZXRUb3AgKyAyMDsKLSAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOwotICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1
cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCi0gICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgLTEsICdiZWdhbics
ICdub25lJyk7Ci0gICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoMCwgLTEsICdjaGFuZ2VkJywgJ25vbmUnKTsKLSAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAt
MSwgJ2NoYW5nZWQnLCAnbm9uZScpOwotICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7Ci0g
ICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoY2hlY2tG
b3JTY3JvbGxTbmFwKTsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Ny
b2xsR2xpZGUoKQotICAgICAgICB7Ci0gICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZl
IHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCi0gICAgICAgICAgICBp
ZiAoc2Nyb2xsaW5nVGFyZ2V0LnNjcm9sbFRvcCA9PSB3aW5kb3cuaW5uZXJIZWlnaHQpCi0gICAg
ICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOwot
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoYGRpdiBkaWQgbm90
IGhvbm9yIHNuYXAgcG9pbnRzLiAoJHtzY3JvbGxpbmdUYXJnZXQuc2Nyb2xsVG9wfSB2cy4gJHt3
aW5kb3cuaW5uZXJIZWlnaHR9KWApOwotCi0gICAgICAgICAgICBzZXRUaW1lb3V0KHNjcm9sbFNu
YXBUZXN0LCAwKTsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVz
dCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBz
Y3JvbGxpbmdUYXJnZXQuc2Nyb2xsVG9wOwotCi0gICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0g
c2Nyb2xsaW5nVGFyZ2V0Lm9mZnNldExlZnQgKyAyMDsKLSAgICAgICAgICAgIHZhciBzdGFydFBv
c1kgPSBzY3JvbGxpbmdUYXJnZXQub2Zmc2V0VG9wICsgMjA7Ci0gICAgICAgICAgICBldmVudFNl
bmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKLSAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
TW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91
dHNpZGUgdGhlIGlGcmFtZQotICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIC0xLCAnYmVnYW4nLCAnbm9uZScpOwotICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KDAsIC0xLCAnY2hhbmdlZCcsICdub25lJyk7Ci0gICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgLTEsICdjaGFuZ2VkJywgJ25v
bmUnKTsKLSAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcygwLCAtMSwgJ2NoYW5nZWQnLCAnbm9uZScpOwotICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdl
bmRlZCcsICdub25lJyk7Ci0gICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgLTEsICdub25lJywgJ2JlZ2luJyk7Ci0gICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
MCwgLTQsICdub25lJywgJ2NvbnRpbnVlJyk7Ci0gICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7
Ci0gICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoY2hl
Y2tGb3JTY3JvbGxHbGlkZSk7Ci0gICAgICAgIH0KLQogICAgICAgICBmdW5jdGlvbiBvbkxvYWQo
KQogICAgICAgICB7Ci0gICAgICAgICAgICBzY3JvbGxpbmdUYXJnZXQgPSBkb2N1bWVudC5zY3Jv
bGxpbmdFbGVtZW50OwogICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgewogICAg
ICAgICAgICAgICAgIGludGVybmFscy5zZXRQbGF0Zm9ybU1vbWVudHVtU2Nyb2xsaW5nUHJlZGlj
dGlvbkVuYWJsZWQoZmFsc2UpOwotICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoc2Nyb2xsR2xp
ZGVUZXN0LCAwKTsKKyAgICAgICAgICAgICAgICBydW5UZXN0cygpOwogICAgICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgICAgICB2YXIgbWVzc2FnZUxvY2F0aW9uID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2l0ZW0wJyk7CiAgICAgICAgICAgICAgICAgdmFyIG1lc3NhZ2UgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKLSAgICAgICAgICAgICAgICBtZXNzYWdlLmlubmVy
SFRNTCA9ICI8cD5UaGlzIHRlc3QgaXMgYmV0dGVyIHJ1biB1bmRlciBEdW1wUmVuZGVyVHJlZS4g
VG8gbWFudWFsbHkgdGVzdCBpdCwgcGxhY2UgdGhlIG1vdXNlIHBvaW50ZXI8YnIvPiIKLSAgICAg
ICAgICAgICAgICAgICAgKyAiaW5zaWRlIHRoZSByZWQgcmVnaW9uIGF0IHRoZSB0b3Agb2YgdGhl
IHBhZ2UsIGFuZCB0aGVuIHVzZSB0aGUgbW91c2Ugd2hlZWwgb3IgYSB0d28tZmluZ2VyIHN3aXBl
IHRvIG1ha2UgYTxici8+IgotICAgICAgICAgICAgICAgICAgICArICJzbWFsbCBzd2lwZSBnZXN0
dXJlIHdpdGggc29tZSBtb21lbnR1bS48YnIvPjxici8+IgotICAgICAgICAgICAgICAgICAgICAr
ICJUaGUgcmVnaW9uIHNob3VsZCBzY3JvbGwgdG8gc2hvdyBhIGdyZWVuIHJlZ2lvbi48YnIvPjxi
ci8+IgotICAgICAgICAgICAgICAgICAgICArICJOZXh0LCBwZXJmb3JtIGEgc21hbGwgc2Nyb2xs
IGdlc3R1cmUgdGhhdCBkb2VzIG5vdCBpbnZvbHZlIG1vbWVudHVtLiBZb3Ugc2hvdWxkIGJlZ2lu
IHRvIHNlZSBvbmUgb2YgdGhlIGNvbG9yczxici8+IgotICAgICAgICAgICAgICAgICAgICArICJ0
byB0aGUgbGVmdCAob3IgcmlnaHQpIG9mIHRoZSBjdXJyZW50IGdyZWVuIGJveC4gV2hlbiB5b3Ug
cmVsZWFzZSB0aGUgd2hlZWwsIHRoZSByZWdpb24gc2hvdWxkIHNjcm9sbCBiYWNrIHNvPGJyLz4i
Ci0gICAgICAgICAgICAgICAgICAgICsgInRoYXQgdGhlIHJlZ2lvbiBpcyBhIHNpbmdsZSBjb2xv
ci48YnIvPjxici8+IgotICAgICAgICAgICAgICAgICAgICArICJZb3Ugc2hvdWxkIGFsc28gYmUg
YWJsZSB0byByZXBlYXQgdGhlc2UgdGVzdCBzdGVwcyBmb3IgdGhlIHZlcnRpY2FsIHJlZ2lvbiBi
ZWxvdy48L3A+IjsKKyAgICAgICAgICAgICAgICBtZXNzYWdlLmlubmVySFRNTCA9ICI8cD5UbyBy
dW4gdGhpcyB0ZXN0IG1hbnVhbGx5LCBzY3JvbGwgdGhlIHBhZ2UgdmVydGljYWxseS4gVGhlIHBh
Z2Ugc2hvdWxkICIKKyAgICAgICAgICAgICAgICAgICAgKyAic25hcCBiZXR3ZWVuIHVuaWZvcm0g
Y29sb3JzIHdoaWNoIGZpbGwgdGhlIHZpZXcuPHA+IjsKICAgICAgICAgICAgICAgICBtZXNzYWdl
TG9jYXRpb24uYXBwZW5kQ2hpbGQobWVzc2FnZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>