<?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>92869</bug_id>
          
          <creation_ts>2012-08-01 06:37:58 -0700</creation_ts>
          <short_desc>Clean-up touchadjustment tests</short_desc>
          <delta_ts>2012-08-01 11:45:34 -0700</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>420+</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Allan Sandfeld Jensen">allan.jensen</reporter>
          <assigned_to name="Allan Sandfeld Jensen">allan.jensen</assigned_to>
          <cc>kevers</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>684148</commentid>
    <comment_count>0</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-08-01 06:37:58 -0700</bug_when>
    <thetext>There are now several touchadjustment tests, many of them use identical or similar auxilary functions during the test. This code should be gathered in a single central file so they can share code.

Additionally many of the tests do not have proper doctype or contains other minor mistakes, which can be cleaned up, so the tests appear uniform and form a good example for furture touchadjustment tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>684161</commentid>
    <comment_count>1</comment_count>
      <attachid>155801</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-08-01 06:51:49 -0700</bug_when>
    <thetext>Created attachment 155801
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>684181</commentid>
    <comment_count>2</comment_count>
      <attachid>155808</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-08-01 07:37:34 -0700</bug_when>
    <thetext>Created attachment 155808
Patch

Add the last cleaned up files to the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>684227</commentid>
    <comment_count>3</comment_count>
      <attachid>155819</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-08-01 09:19:55 -0700</bug_when>
    <thetext>Created attachment 155819
Patch

Fix copy-paste error in html-label.html, and put bug-number instead of description in test title</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>684247</commentid>
    <comment_count>4</comment_count>
      <attachid>155819</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2012-08-01 09:38:52 -0700</bug_when>
    <thetext>Comment on attachment 155819
Patch

I&apos;m no expert on this but it makes sense, rs=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>684397</commentid>
    <comment_count>5</comment_count>
      <attachid>155819</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-01 11:45:30 -0700</bug_when>
    <thetext>Comment on attachment 155819
Patch

Clearing flags on attachment: 155819

Committed r124351: &lt;http://trac.webkit.org/changeset/124351&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>684398</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-01 11:45:34 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>155801</attachid>
            <date>2012-08-01 06:51:49 -0700</date>
            <delta_ts>2012-08-01 07:37:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-92869-20120801155131.patch</filename>
            <type>text/plain</type>
            <size>65605</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0MzEyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZThhOTZjMzJkMTE1YjBlY2E3ZGE4
YTQ1NzhkNjQ4ZTdjNjcwNzkyOC4uNzFiYWYxMTNkOTIzZWY4ZTk0NGY4MzM2NmVmYzZhM2M0ZmFm
ZWQwNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDEyLTA4LTAxICBBbGxhbiBTYW5kZmVsZCBK
ZW5zZW4gIDxhbGxhbi5qZW5zZW5Abm9raWEuY29tPgorCisgICAgICAgIENsZWFuLXVwIHRvdWNo
YWRqdXN0bWVudCB0ZXN0cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTkyODY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgR2F0aGVyIGNvbW1lbmx5IHVzZWQgZnVuY3Rpb25zIGluIHRvdWNoYWRqdXN0bWVu
dC5qcywgYW5kIGNoYW5nZSB0aGUKKyAgICAgICAgdGVzdHMgc28gdGhleSBiZWhhdmUgYXMgY29y
cmVjdCBhcyBwb3NzaWJsZSwgYW5kIGxvb2sgY2xlYW4gYXMgZXhhbXBsZXMKKyAgICAgICAgZm9y
IGZ1dHVyZSB0b3VjaGFkanVzdG1lbnQgdGVzdHMuCisKKyAgICAgICAgKiB0b3VjaGFkanVzdG1l
bnQvYmlnLWRpdi1leHBlY3RlZC50eHQ6CisgICAgICAgICogdG91Y2hhZGp1c3RtZW50L2JpZy1k
aXYuaHRtbDoKKyAgICAgICAgKiB0b3VjaGFkanVzdG1lbnQvYmxvY2stdGVzdGluZy1leHBlY3Rl
ZC50eHQ6CisgICAgICAgICogdG91Y2hhZGp1c3RtZW50L2Jsb2NrLXRlc3RpbmcuaHRtbDoKKyAg
ICAgICAgKiB0b3VjaGFkanVzdG1lbnQvZGlzYWJsZWQtZm9ybWVsZW1lbnRzLWV4cGVjdGVkLnR4
dDoKKyAgICAgICAgKiB0b3VjaGFkanVzdG1lbnQvZGlzYWJsZWQtZm9ybWVsZW1lbnRzLmh0bWw6
CisgICAgICAgICogdG91Y2hhZGp1c3RtZW50L25lc3RlZC10b3VjaC1leHBlY3RlZC50eHQ6Cisg
ICAgICAgICogdG91Y2hhZGp1c3RtZW50L25lc3RlZC10b3VjaC5odG1sOgorICAgICAgICAqIHRv
dWNoYWRqdXN0bWVudC9yZXNvdXJjZXMvdG91Y2hhZGp1c3RtZW50LmpzOiBBZGRlZC4KKyAgICAg
ICAgKGZpbmRBYnNvbHV0ZUJvdW5kcyk6CisgICAgICAgIChub2RlVG9TdHJpbmcpOgorICAgICAg
ICAodG91Y2hQb2ludCk6CisgICAgICAgIChvZmZzZXRUb3VjaFBvaW50KToKKyAgICAgICAgKiB0
b3VjaGFkanVzdG1lbnQvcm90YXRlZC1ub2RlLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB0b3Vj
aGFkanVzdG1lbnQvcm90YXRlZC1ub2RlLmh0bWw6CisgICAgICAgICogdG91Y2hhZGp1c3RtZW50
L3Njcm9sbC1vZmZzZXQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHRvdWNoYWRqdXN0bWVudC9z
Y3JvbGwtb2Zmc2V0Lmh0bWw6CisgICAgICAgICogdG91Y2hhZGp1c3RtZW50L3NlYXJjaC1jYW5j
ZWwuaHRtbDoKKyAgICAgICAgKiB0b3VjaGFkanVzdG1lbnQvc21hbGwtdGFyZ2V0LXRlc3QtZXhw
ZWN0ZWQudHh0OgorICAgICAgICAqIHRvdWNoYWRqdXN0bWVudC9zbWFsbC10YXJnZXQtdGVzdC5o
dG1sOgorICAgICAgICAqIHRvdWNoYWRqdXN0bWVudC90b3VjaC1pbmxpbmVzLWV4cGVjdGVkLnR4
dDoKKyAgICAgICAgKiB0b3VjaGFkanVzdG1lbnQvdG91Y2gtaW5saW5lcy5odG1sOgorCiAyMDEy
LTA4LTAxICBQZXRlciBLYXN0aW5nICA8cGthc3RpbmdAZ29vZ2xlLmNvbT4KIAogICAgICAgICBb
Q2hyb21pdW1dIE1hcmsgYSBjb3VwbGUgb2YgZmxha3kgdGVzdHMuCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy90b3VjaGFkanVzdG1lbnQvYmlnLWRpdi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy90b3VjaGFkanVzdG1lbnQvYmlnLWRpdi1leHBlY3RlZC50eHQKaW5kZXggYTNlMzFjYmY4ODkw
MWI3ZDU2ZWM0Mzk3YjJiNzUyYTI3OTdkNDc3Zi4uMDFlM2I4ZjZjOTI2ZTEyY2EwZmE0ZDVmYmVi
Y2I4YzAzZjBkZWIwMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50L2Jp
Zy1kaXYtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3RvdWNoYWRqdXN0bWVudC9iaWct
ZGl2LWV4cGVjdGVkLnR4dApAQCAtNiwxMCArNiwxMCBAQCBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBz
ZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVU
RQogCiBPdmVybGFwcGluZyB0b3VjaCBhYm92ZSB0aGUgdGFyZ2V0IHNob3VsZCBzbmFwIHRvIHRo
ZSB0b3Agb2YgdGhlIHRhcmdldCBlbGVtZW50LgogUEFTUyBhZGp1c3RlZE5vZGUuaWQgaXMgZWxl
bWVudC5pZAotUEFTUyBhZGp1c3RlZFBvaW50LnggPj0gdGFyZ2V0Qm91bmRzLnggaXMgdHJ1ZQot
UEFTUyBhZGp1c3RlZFBvaW50LnggPD0gdGFyZ2V0Qm91bmRzLnggKyB0YXJnZXRCb3VuZHMud2lk
dGggaXMgdHJ1ZQotUEFTUyBhZGp1c3RlZFBvaW50LnkgPj0gdGFyZ2V0Qm91bmRzLnkgaXMgdHJ1
ZQotUEFTUyBhZGp1c3RlZFBvaW50LnkgPD0gdGFyZ2V0Qm91bmRzLnkgKyB0YXJnZXRCb3VuZHMu
aGVpZ2h0IGlzIHRydWUKK1BBU1MgYWRqdXN0ZWRQb2ludC54ID49IHRhcmdldEJvdW5kcy5sZWZ0
IGlzIHRydWUKK1BBU1MgYWRqdXN0ZWRQb2ludC54IDw9IHRhcmdldEJvdW5kcy5sZWZ0ICsgdGFy
Z2V0Qm91bmRzLndpZHRoIGlzIHRydWUKK1BBU1MgYWRqdXN0ZWRQb2ludC55ID49IHRhcmdldEJv
dW5kcy50b3AgaXMgdHJ1ZQorUEFTUyBhZGp1c3RlZFBvaW50LnkgPD0gdGFyZ2V0Qm91bmRzLnRv
cCArIHRhcmdldEJvdW5kcy5oZWlnaHQgaXMgdHJ1ZQogUEFTUyBhZGp1c3RlZFBvaW50LnggPj0g
dG91Y2hCb3VuZHMueCBpcyB0cnVlCiBQQVNTIGFkanVzdGVkUG9pbnQueCA8PSB0b3VjaEJvdW5k
cy54ICsgdG91Y2hCb3VuZHMud2lkdGggaXMgdHJ1ZQogUEFTUyBhZGp1c3RlZFBvaW50LnkgPj0g
dG91Y2hCb3VuZHMueSBpcyB0cnVlCkBAIC0xNywxMCArMTcsMTAgQEAgUEFTUyBhZGp1c3RlZFBv
aW50LnkgPD0gdG91Y2hCb3VuZHMueSArIHRvdWNoQm91bmRzLmhlaWdodCBpcyB0cnVlCiAKIE92
ZXJsYXBwaW5nIHRvdWNoIGJlbG93IHRoZSB0YXJnZXQgc2hvdWxkIHNuYXAgdG8gdGhlIGJvdHRv
bSBvZiB0aGUgdGFyZ2V0IGVsZW1lbnQuCiBQQVNTIGFkanVzdGVkTm9kZS5pZCBpcyBlbGVtZW50
LmlkCi1QQVNTIGFkanVzdGVkUG9pbnQueCA+PSB0YXJnZXRCb3VuZHMueCBpcyB0cnVlCi1QQVNT
IGFkanVzdGVkUG9pbnQueCA8PSB0YXJnZXRCb3VuZHMueCArIHRhcmdldEJvdW5kcy53aWR0aCBp
cyB0cnVlCi1QQVNTIGFkanVzdGVkUG9pbnQueSA+PSB0YXJnZXRCb3VuZHMueSBpcyB0cnVlCi1Q
QVNTIGFkanVzdGVkUG9pbnQueSA8PSB0YXJnZXRCb3VuZHMueSArIHRhcmdldEJvdW5kcy5oZWln
aHQgaXMgdHJ1ZQorUEFTUyBhZGp1c3RlZFBvaW50LnggPj0gdGFyZ2V0Qm91bmRzLmxlZnQgaXMg
dHJ1ZQorUEFTUyBhZGp1c3RlZFBvaW50LnggPD0gdGFyZ2V0Qm91bmRzLmxlZnQgKyB0YXJnZXRC
b3VuZHMud2lkdGggaXMgdHJ1ZQorUEFTUyBhZGp1c3RlZFBvaW50LnkgPj0gdGFyZ2V0Qm91bmRz
LnRvcCBpcyB0cnVlCitQQVNTIGFkanVzdGVkUG9pbnQueSA8PSB0YXJnZXRCb3VuZHMudG9wICsg
dGFyZ2V0Qm91bmRzLmhlaWdodCBpcyB0cnVlCiBQQVNTIGFkanVzdGVkUG9pbnQueCA+PSB0b3Vj
aEJvdW5kcy54IGlzIHRydWUKIFBBU1MgYWRqdXN0ZWRQb2ludC54IDw9IHRvdWNoQm91bmRzLngg
KyB0b3VjaEJvdW5kcy53aWR0aCBpcyB0cnVlCiBQQVNTIGFkanVzdGVkUG9pbnQueSA+PSB0b3Vj
aEJvdW5kcy55IGlzIHRydWUKQEAgLTI4LDEwICsyOCwxMCBAQCBQQVNTIGFkanVzdGVkUG9pbnQu
eSA8PSB0b3VjaEJvdW5kcy55ICsgdG91Y2hCb3VuZHMuaGVpZ2h0IGlzIHRydWUKIAogT3Zlcmxh
cHBpbmcgdG91Y2ggbGVmdCBvZiB0aGUgdGFyZ2V0IHNob3VsZCBzbmFwIHRvIHRoZSBsZWZ0IHNp
ZGUgb2YgdGhlIHRhcmdldCBlbGVtZW50LgogUEFTUyBhZGp1c3RlZE5vZGUuaWQgaXMgZWxlbWVu
dC5pZAotUEFTUyBhZGp1c3RlZFBvaW50LnggPj0gdGFyZ2V0Qm91bmRzLnggaXMgdHJ1ZQotUEFT
UyBhZGp1c3RlZFBvaW50LnggPD0gdGFyZ2V0Qm91bmRzLnggKyB0YXJnZXRCb3VuZHMud2lkdGgg
aXMgdHJ1ZQotUEFTUyBhZGp1c3RlZFBvaW50LnkgPj0gdGFyZ2V0Qm91bmRzLnkgaXMgdHJ1ZQot
UEFTUyBhZGp1c3RlZFBvaW50LnkgPD0gdGFyZ2V0Qm91bmRzLnkgKyB0YXJnZXRCb3VuZHMuaGVp
Z2h0IGlzIHRydWUKK1BBU1MgYWRqdXN0ZWRQb2ludC54ID49IHRhcmdldEJvdW5kcy5sZWZ0IGlz
IHRydWUKK1BBU1MgYWRqdXN0ZWRQb2ludC54IDw9IHRhcmdldEJvdW5kcy5sZWZ0ICsgdGFyZ2V0
Qm91bmRzLndpZHRoIGlzIHRydWUKK1BBU1MgYWRqdXN0ZWRQb2ludC55ID49IHRhcmdldEJvdW5k
cy50b3AgaXMgdHJ1ZQorUEFTUyBhZGp1c3RlZFBvaW50LnkgPD0gdGFyZ2V0Qm91bmRzLnRvcCAr
IHRhcmdldEJvdW5kcy5oZWlnaHQgaXMgdHJ1ZQogUEFTUyBhZGp1c3RlZFBvaW50LnggPj0gdG91
Y2hCb3VuZHMueCBpcyB0cnVlCiBQQVNTIGFkanVzdGVkUG9pbnQueCA8PSB0b3VjaEJvdW5kcy54
ICsgdG91Y2hCb3VuZHMud2lkdGggaXMgdHJ1ZQogUEFTUyBhZGp1c3RlZFBvaW50LnkgPj0gdG91
Y2hCb3VuZHMueSBpcyB0cnVlCkBAIC0zOSwxMCArMzksMTAgQEAgUEFTUyBhZGp1c3RlZFBvaW50
LnkgPD0gdG91Y2hCb3VuZHMueSArIHRvdWNoQm91bmRzLmhlaWdodCBpcyB0cnVlCiAKIE92ZXJs
YXBwaW5nIHRvdWNoIHJpZ2h0IG9mIHRoZSB0YXJnZXQgc2hvdWxkIHNuYXAgdG8gdGhlIHJpZ2h0
IHNpZGUgb2YgdGhlIHRhcmdldCBlbGVtZW50LgogUEFTUyBhZGp1c3RlZE5vZGUuaWQgaXMgZWxl
bWVudC5pZAotUEFTUyBhZGp1c3RlZFBvaW50LnggPj0gdGFyZ2V0Qm91bmRzLnggaXMgdHJ1ZQot
UEFTUyBhZGp1c3RlZFBvaW50LnggPD0gdGFyZ2V0Qm91bmRzLnggKyB0YXJnZXRCb3VuZHMud2lk
dGggaXMgdHJ1ZQotUEFTUyBhZGp1c3RlZFBvaW50LnkgPj0gdGFyZ2V0Qm91bmRzLnkgaXMgdHJ1
ZQotUEFTUyBhZGp1c3RlZFBvaW50LnkgPD0gdGFyZ2V0Qm91bmRzLnkgKyB0YXJnZXRCb3VuZHMu
aGVpZ2h0IGlzIHRydWUKK1BBU1MgYWRqdXN0ZWRQb2ludC54ID49IHRhcmdldEJvdW5kcy5sZWZ0
IGlzIHRydWUKK1BBU1MgYWRqdXN0ZWRQb2ludC54IDw9IHRhcmdldEJvdW5kcy5sZWZ0ICsgdGFy
Z2V0Qm91bmRzLndpZHRoIGlzIHRydWUKK1BBU1MgYWRqdXN0ZWRQb2ludC55ID49IHRhcmdldEJv
dW5kcy50b3AgaXMgdHJ1ZQorUEFTUyBhZGp1c3RlZFBvaW50LnkgPD0gdGFyZ2V0Qm91bmRzLnRv
cCArIHRhcmdldEJvdW5kcy5oZWlnaHQgaXMgdHJ1ZQogUEFTUyBhZGp1c3RlZFBvaW50LnggPj0g
dG91Y2hCb3VuZHMueCBpcyB0cnVlCiBQQVNTIGFkanVzdGVkUG9pbnQueCA8PSB0b3VjaEJvdW5k
cy54ICsgdG91Y2hCb3VuZHMud2lkdGggaXMgdHJ1ZQogUEFTUyBhZGp1c3RlZFBvaW50LnkgPj0g
dG91Y2hCb3VuZHMueSBpcyB0cnVlCkBAIC01MCwxMCArNTAsMTAgQEAgUEFTUyBhZGp1c3RlZFBv
aW50LnkgPD0gdG91Y2hCb3VuZHMueSArIHRvdWNoQm91bmRzLmhlaWdodCBpcyB0cnVlCiAKIFRl
c3QgdG91Y2ggYXJlYSBjb250YWluZWQgd2l0aGluIHRoZSB0YXJnZXQgZWxlbWVudC4KIFBBU1Mg
YWRqdXN0ZWROb2RlLmlkIGlzIGVsZW1lbnQuaWQKLVBBU1MgYWRqdXN0ZWRQb2ludC54ID49IHRh
cmdldEJvdW5kcy54IGlzIHRydWUKLVBBU1MgYWRqdXN0ZWRQb2ludC54IDw9IHRhcmdldEJvdW5k
cy54ICsgdGFyZ2V0Qm91bmRzLndpZHRoIGlzIHRydWUKLVBBU1MgYWRqdXN0ZWRQb2ludC55ID49
IHRhcmdldEJvdW5kcy55IGlzIHRydWUKLVBBU1MgYWRqdXN0ZWRQb2ludC55IDw9IHRhcmdldEJv
dW5kcy55ICsgdGFyZ2V0Qm91bmRzLmhlaWdodCBpcyB0cnVlCitQQVNTIGFkanVzdGVkUG9pbnQu
eCA+PSB0YXJnZXRCb3VuZHMubGVmdCBpcyB0cnVlCitQQVNTIGFkanVzdGVkUG9pbnQueCA8PSB0
YXJnZXRCb3VuZHMubGVmdCArIHRhcmdldEJvdW5kcy53aWR0aCBpcyB0cnVlCitQQVNTIGFkanVz
dGVkUG9pbnQueSA+PSB0YXJnZXRCb3VuZHMudG9wIGlzIHRydWUKK1BBU1MgYWRqdXN0ZWRQb2lu
dC55IDw9IHRhcmdldEJvdW5kcy50b3AgKyB0YXJnZXRCb3VuZHMuaGVpZ2h0IGlzIHRydWUKIFBB
U1MgYWRqdXN0ZWRQb2ludC54ID49IHRvdWNoQm91bmRzLnggaXMgdHJ1ZQogUEFTUyBhZGp1c3Rl
ZFBvaW50LnggPD0gdG91Y2hCb3VuZHMueCArIHRvdWNoQm91bmRzLndpZHRoIGlzIHRydWUKIFBB
U1MgYWRqdXN0ZWRQb2ludC55ID49IHRvdWNoQm91bmRzLnkgaXMgdHJ1ZQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50L2JpZy1kaXYuaHRtbCBiL0xheW91dFRlc3RzL3Rv
dWNoYWRqdXN0bWVudC9iaWctZGl2Lmh0bWwKaW5kZXggZmFiY2M3NzY4OTlmOGRhZGUwZjQ1ZWNj
MmVkMGYzMTRjODU1YTFhYy4uMTVmNzZlNDgzOTdjYjY4ZjE0ZmI5MzU3NDE0NzBhMjU0MmI5YTFj
YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50L2JpZy1kaXYuaHRtbAor
KysgYi9MYXlvdXRUZXN0cy90b3VjaGFkanVzdG1lbnQvYmlnLWRpdi5odG1sCkBAIC0xLDE3ICsx
LDE5IEBACis8IURPQ1RZUEUgaHRtbD4KIDxodG1sPgogPGhlYWQ+Ci08c3R5bGU+Ci0gICAgI3Rh
cmdldERpdiB7Ci0gICAgICAgIGJhY2tncm91bmQ6ICMwMGY7Ci0gICAgICAgIGhlaWdodDogNDAw
cHg7Ci0gICAgICAgIHdpZHRoOiA0MDBweDsKLSAgICB9Ci08L3N0eWxlPgotPHNjcmlwdCBzcmM9
Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLQorICAgIDx0
aXRsZT5UZXN0IHRvdWNoIGFkanVzdG1lbnQgb24gYSBsYXJnZSBkaXYuICBUaGUgYWRqdXN0ZWQg
dG91Y2ggcG9pbnQgc2hvdWxkIGxpZSBpbnNpZGUgdGhlIHRhcmdldCBlbGVtZW50IGFuZCB3aXRo
aW4gdGhlIHRvdWNoIGFyZWEuPC90aXRsZT4KKyAgICA8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvdG91Y2hhZGp1c3RtZW50LmpzIj48L3NjcmlwdD4KKyAgICA8c3R5bGU+CisgICAgICAg
ICN0YXJnZXREaXYgeworICAgICAgICAgICAgYmFja2dyb3VuZDogIzAwZjsKKyAgICAgICAgICAg
IGhlaWdodDogNDAwcHg7CisgICAgICAgICAgICB3aWR0aDogNDAwcHg7CisgICAgICAgIH0KKyAg
ICA8L3N0eWxlPgogPC9oZWFkPgogCi08Ym9keSBvbmxvYWQ9InJ1blRlc3RzKCkiPgorPGJvZHk+
CiAKIDxkaXYgaWQ9InRhcmdldERpdiI+CiA8L2Rpdj4KQEAgLTI2LDQ3ICsyOCwyNiBAQAogICAg
IHZhciB0YXJnZXRCb3VuZHM7CiAgICAgdmFyIHRvdWNoQm91bmRzOwogCi0gICAgZnVuY3Rpb24g
ZmluZEFic29sdXRlUG9zaXRpb24obm9kZSkgewotICAgICAgICB2YXIgcG9zID0ge2xlZnQ6IDAs
IHRvcDogMH07Ci0gICAgICAgIGRvIHsKLSAgICAgICAgICAgIHBvcy5sZWZ0ICs9IG5vZGUub2Zm
c2V0TGVmdDsKLSAgICAgICAgICAgIHBvcy50b3AgKz0gbm9kZS5vZmZzZXRUb3A7Ci0gICAgICAg
IH0gd2hpbGUgKG5vZGUgPSBub2RlLm9mZnNldFBhcmVudCk7Ci0gICAgICAgIHJldHVybiBwb3M7
Ci0gICAgfQotCiAgICAgZnVuY3Rpb24gcnVuVG91Y2hUZXN0cygpIHsKICAgICAgICAgZWxlbWVu
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXREaXYiKTsKICAgICAgICAgZWxlbWVu
dC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKCkge30sIGZhbHNlKTsKICAgICAg
ICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpIHt9LCBmYWxz
ZSk7CiAKLSAgICAgICAgdmFyIHBvcyA9IGZpbmRBYnNvbHV0ZVBvc2l0aW9uKGVsZW1lbnQpOwot
Ci0gICAgICAgIHZhciB4ID0gcG9zLmxlZnQ7Ci0gICAgICAgIHZhciB5ID0gcG9zLnRvcDsKLSAg
ICAgICAgdmFyIHdpZHRoID0gZWxlbWVudC5jbGllbnRXaWR0aDsKLSAgICAgICAgdmFyIGhlaWdo
dCA9IGVsZW1lbnQuY2xpZW50SGVpZ2h0OwotCi0gICAgICAgIHRhcmdldEJvdW5kcyA9IHsKLSAg
ICAgICAgICAgIHg6IHgsCi0gICAgICAgICAgICB5OiB5LAotICAgICAgICAgICAgd2lkdGg6IHdp
ZHRoLAotICAgICAgICAgICAgaGVpZ2h0OiBoZWlnaHQKLSAgICAgICAgfTsKKyAgICAgICAgdGFy
Z2V0Qm91bmRzID0gZmluZEFic29sdXRlQm91bmRzKGVsZW1lbnQpOwogCiAgICAgICAgIHZhciB0
b3VjaFJhZGl1cyA9IDEwOwogICAgICAgICB2YXIgb2Zmc2V0ID0gdG91Y2hSYWRpdXMgLyAyOwot
ICAgICAgICB2YXIgbWlkWCA9IHggKyB3aWR0aCAvIDI7Ci0gICAgICAgIHZhciBtaWRZID0geSAr
IGhlaWdodCAvIDI7CisgICAgICAgIHZhciBtaWRYID0gdGFyZ2V0Qm91bmRzLmxlZnQgKyB0YXJn
ZXRCb3VuZHMud2lkdGggLyAyOworICAgICAgICB2YXIgbWlkWSA9IHRhcmdldEJvdW5kcy50b3Ag
KyB0YXJnZXRCb3VuZHMuaGVpZ2h0IC8gMjsKIAogICAgICAgICBkZWJ1ZygnXG5PdmVybGFwcGlu
ZyB0b3VjaCBhYm92ZSB0aGUgdGFyZ2V0IHNob3VsZCBzbmFwIHRvIHRoZSB0b3Agb2YgdGhlIHRh
cmdldCBlbGVtZW50LicpOwotICAgICAgICB0ZXN0VG91Y2gobWlkWCwgeSAtIG9mZnNldCwgdG91
Y2hSYWRpdXMsIHRhcmdldEJvdW5kcyk7CisgICAgICAgIHRlc3RUb3VjaChtaWRYLCB0YXJnZXRC
b3VuZHMudG9wIC0gb2Zmc2V0LCB0b3VjaFJhZGl1cywgdGFyZ2V0Qm91bmRzKTsKICAgICAgICAg
ZGVidWcoJ1xuT3ZlcmxhcHBpbmcgdG91Y2ggYmVsb3cgdGhlIHRhcmdldCBzaG91bGQgc25hcCB0
byB0aGUgYm90dG9tIG9mIHRoZSB0YXJnZXQgZWxlbWVudC4nKTsKLSAgICAgICAgdGVzdFRvdWNo
KG1pZFgsIHkgKyBoZWlnaHQgKyBvZmZzZXQsIHRvdWNoUmFkaXVzLCB0YXJnZXRCb3VuZHMpOwor
ICAgICAgICB0ZXN0VG91Y2gobWlkWCwgdGFyZ2V0Qm91bmRzLnRvcCArIHRhcmdldEJvdW5kcy5o
ZWlnaHQgKyBvZmZzZXQsIHRvdWNoUmFkaXVzLCB0YXJnZXRCb3VuZHMpOwogICAgICAgICBkZWJ1
ZygnXG5PdmVybGFwcGluZyB0b3VjaCBsZWZ0IG9mIHRoZSB0YXJnZXQgc2hvdWxkIHNuYXAgdG8g
dGhlIGxlZnQgc2lkZSBvZiB0aGUgdGFyZ2V0IGVsZW1lbnQuJyk7Ci0gICAgICAgIHRlc3RUb3Vj
aCh4IC0gb2Zmc2V0LCBtaWRZLCB0b3VjaFJhZGl1cywgdGFyZ2V0Qm91bmRzKTsKKyAgICAgICAg
dGVzdFRvdWNoKHRhcmdldEJvdW5kcy5sZWZ0IC0gb2Zmc2V0LCBtaWRZLCB0b3VjaFJhZGl1cywg
dGFyZ2V0Qm91bmRzKTsKICAgICAgICAgZGVidWcoJ1xuT3ZlcmxhcHBpbmcgdG91Y2ggcmlnaHQg
b2YgdGhlIHRhcmdldCBzaG91bGQgc25hcCB0byB0aGUgcmlnaHQgc2lkZSBvZiB0aGUgdGFyZ2V0
IGVsZW1lbnQuJyk7Ci0gICAgICAgIHRlc3RUb3VjaCh4ICsgd2lkdGggKyBvZmZzZXQsIG1pZFks
IHRvdWNoUmFkaXVzLCB0YXJnZXRCb3VuZHMpOworICAgICAgICB0ZXN0VG91Y2godGFyZ2V0Qm91
bmRzLmxlZnQgKyB0YXJnZXRCb3VuZHMud2lkdGggKyBvZmZzZXQsIG1pZFksIHRvdWNoUmFkaXVz
LCB0YXJnZXRCb3VuZHMpOwogICAgICAgICBkZWJ1ZygnXG5UZXN0IHRvdWNoIGFyZWEgY29udGFp
bmVkIHdpdGhpbiB0aGUgdGFyZ2V0IGVsZW1lbnQuJyk7CiAgICAgICAgIHRlc3RUb3VjaChtaWRY
LCBtaWRZLCB0b3VjaFJhZGl1cywgdGFyZ2V0Qm91bmRzKTsKICAgICB9CkBAIC04MywxMCArNjQs
MTAgQEAKICAgICAgICAgc2hvdWxkQmUoJ2FkanVzdGVkTm9kZS5pZCcsICdlbGVtZW50LmlkJyk7
CiAgICAgICAgIGFkanVzdGVkUG9pbnQgPSBpbnRlcm5hbHMudG91Y2hQb3NpdGlvbkFkanVzdGVk
VG9CZXN0Q2xpY2thYmxlTm9kZSh0b3VjaEJvdW5kcy54LCB0b3VjaEJvdW5kcy55LCB0b3VjaEJv
dW5kcy53aWR0aCwgdG91Y2hCb3VuZHMuaGVpZ2h0LCBkb2N1bWVudCk7CiAKLSAgICAgICAgc2hv
dWxkQmVUcnVlKCdhZGp1c3RlZFBvaW50LnggPj0gdGFyZ2V0Qm91bmRzLngnKTsKLSAgICAgICAg
c2hvdWxkQmVUcnVlKCdhZGp1c3RlZFBvaW50LnggPD0gdGFyZ2V0Qm91bmRzLnggKyB0YXJnZXRC
b3VuZHMud2lkdGgnKTsKLSAgICAgICAgc2hvdWxkQmVUcnVlKCdhZGp1c3RlZFBvaW50LnkgPj0g
dGFyZ2V0Qm91bmRzLnknKTsKLSAgICAgICAgc2hvdWxkQmVUcnVlKCdhZGp1c3RlZFBvaW50Lnkg
PD0gdGFyZ2V0Qm91bmRzLnkgKyB0YXJnZXRCb3VuZHMuaGVpZ2h0Jyk7CisgICAgICAgIHNob3Vs
ZEJlVHJ1ZSgnYWRqdXN0ZWRQb2ludC54ID49IHRhcmdldEJvdW5kcy5sZWZ0Jyk7CisgICAgICAg
IHNob3VsZEJlVHJ1ZSgnYWRqdXN0ZWRQb2ludC54IDw9IHRhcmdldEJvdW5kcy5sZWZ0ICsgdGFy
Z2V0Qm91bmRzLndpZHRoJyk7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgnYWRqdXN0ZWRQb2ludC55
ID49IHRhcmdldEJvdW5kcy50b3AnKTsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCdhZGp1c3RlZFBv
aW50LnkgPD0gdGFyZ2V0Qm91bmRzLnRvcCArIHRhcmdldEJvdW5kcy5oZWlnaHQnKTsKICAgICAg
ICAgc2hvdWxkQmVUcnVlKCdhZGp1c3RlZFBvaW50LnggPj0gdG91Y2hCb3VuZHMueCcpOwogICAg
ICAgICBzaG91bGRCZVRydWUoJ2FkanVzdGVkUG9pbnQueCA8PSB0b3VjaEJvdW5kcy54ICsgdG91
Y2hCb3VuZHMud2lkdGgnKTsKICAgICAgICAgc2hvdWxkQmVUcnVlKCdhZGp1c3RlZFBvaW50Lnkg
Pj0gdG91Y2hCb3VuZHMueScpOwpAQCAtOTYsMTQgKzc3LDEyIEBACiAgICAgZnVuY3Rpb24gcnVu
VGVzdHMoKQogICAgIHsKICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyICYmIHdpbmRvdy5p
bnRlcm5hbHMgJiYgaW50ZXJuYWxzLnRvdWNoTm9kZUFkanVzdGVkVG9CZXN0Q2xpY2thYmxlTm9k
ZSkgewotICAgICAgICAgICAgZGVzY3JpcHRpb24oJ1Rlc3QgdG91Y2ggYWRqdXN0bWVudCBvbiBh
IGxhcmdlIGRpdi4gIFRoZSBhZGp1c3RlZCB0b3VjaCBwb2ludCBzaG91bGQgbGllIGluc2lkZSB0
aGUgdGFyZ2V0IGVsZW1lbnQgYW5kIHdpdGhpbiB0aGUgdG91Y2ggYXJlYS4nKTsKLSAgICAgICAg
ICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwotICAgICAgICAgICAgdGVzdFJ1bm5lci53YWl0
VW50aWxEb25lKCk7CisgICAgICAgICAgICBkZXNjcmlwdGlvbihkb2N1bWVudC50aXRsZSk7CiAg
ICAgICAgICAgICBydW5Ub3VjaFRlc3RzKCk7Ci0gICAgICAgICAgICBpc1N1Y2Nlc3NmdWxseVBh
cnNlZCgpOwotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgICAgIH0K
ICAgICB9CisgICAgcnVuVGVzdHMoKTsKIDwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90b3VjaGFkanVzdG1lbnQvYmxvY2stdGVzdGluZy1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90b3VjaGFkanVzdG1lbnQvYmxvY2stdGVzdGluZy1l
eHBlY3RlZC50eHQKaW5kZXggZjQ3MDYxMTBmZDA2OWVlMWU0YWZiYjE1YmQ0YWEzMDg3NzEyMjRk
My4uNmQ5ZTU4ZDc3ZWRhZThlM2FiYTU0YTMxYzgyMDQ2N2U4Y2ViZDdhMSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50L2Jsb2NrLXRlc3RpbmctZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL3RvdWNoYWRqdXN0bWVudC9ibG9jay10ZXN0aW5nLWV4cGVjdGVkLnR4
dApAQCAtMSwxMCArMSw5IEBACi1Tb21lIHRleHQuIFNvbWUgdGV4dC4gQSBsaW5rCiBUZXN0IHRv
dWNoLWFkanVzdG1lbnQgb24gYSBibG9jayB3aGVyZSB3ZSBhbHNvIHRvdWNoIHRoZSBpbm5lciB0
ZXh0IGFuZCBvdXRzaWRlIGxpbmsuCiAKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAogCi1Q
QVNTIGFkanVzdGVkTm9kZS5pZCBpcyAiZGl2MSIKK1BBU1MgYWRqdXN0ZWQgbm9kZSB3YXMgRElW
I2RpdjEuCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RvdWNoYWRqdXN0bWVudC9ibG9jay10ZXN0aW5nLmh0
bWwgYi9MYXlvdXRUZXN0cy90b3VjaGFkanVzdG1lbnQvYmxvY2stdGVzdGluZy5odG1sCmluZGV4
IDRmYjE4YTVkMjc1MmMxZDYxMzM2NmI2NmZlNzQ2MDVhNGNlNzcwYzQuLjNlNmNlOWJmNjJkNjkw
ZDhmMGM2MmY0ZDZhMjdhMzk5Y2I3MzY2ZGEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3RvdWNo
YWRqdXN0bWVudC9ibG9jay10ZXN0aW5nLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvdG91Y2hhZGp1
c3RtZW50L2Jsb2NrLXRlc3RpbmcuaHRtbApAQCAtMSw1NyArMSw0OCBAQAorPCFET0NUWVBFIGh0
bWw+CiA8aHRtbD4KIDxoZWFkPgorICAgIDx0aXRsZT4gVGVzdCB0b3VjaC1hZGp1c3RtZW50IG9u
IGEgYmxvY2sgd2hlcmUgd2UgYWxzbyB0b3VjaCB0aGUgaW5uZXIgdGV4dCBhbmQgb3V0c2lkZSBs
aW5rLjwvdGl0bGU+CiAgICAgPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3RvdWNoYWRq
dXN0bWVudC5qcyI+PC9zY3JpcHQ+CiAgICAgPHN0eWxlPgorICAgICAgICAjc2FuZGJveCB7IHBv
c2l0aW9uOiBhYnNvbHV0ZTsgbGVmdDogMHB4OyB0b3A6IDBweDsgd2lkdGg6IDQwMHB4OyBoZWln
aHQ6IDIwMHB4OyB9CiAgICAgICAgICNkaXYxIHsgcG9zaXRpb246IGFic29sdXRlOyBsZWZ0OiA1
MHB4OyB0b3A6IDUwcHg7IHdpZHRoOiAyMDBweDsgaGVpZ2h0OiA1MHB4O30KICAgICAgICAgI2Rp
djIgeyBwb3NpdGlvbjogYWJzb2x1dGU7IGxlZnQ6IDUwcHg7IHRvcDogMTAwcHg7IHdpZHRoOiAy
MDBweDsgaGVpZ2h0OiA1MHB4O30KICAgICA8L3N0eWxlPgogPC9oZWFkPgotPGJvZHkgb25sb2Fk
PSJydW5UZXN0cygpIj4KKzxib2R5PgorICAgIDxkaXYgaWQ9c2FuZGJveD4KKyAgICAgICAgPGRp
diBpZD1kaXYxIG9uY2xpY2s9b25DbGljaz4KKyAgICAgICAgU29tZSB0ZXh0LgorICAgICAgICA8
L2Rpdj4KIAotPGRpdiBpZD1kaXYxIG9uY2xpY2s9ZG9Tb21ldGhpbmc+Ci1Tb21lIHRleHQuCi08
L2Rpdj4KKyAgICAgICAgPGRpdiBpZD1kaXYyPgorICAgICAgICBTb21lIHRleHQuIDxhIGlkPWEx
IGhyZWY9IiMxIj5BIGxpbms8L2E+CisgICAgICAgIDwvZGl2PgorICAgIDwvZGl2PgogCi08ZGl2
IGlkPWRpdjI+Ci1Tb21lIHRleHQuIDxhIGlkPWExIGhyZWY9IiMxIj5BIGxpbms8L2E+Ci08L2Rp
dj4KKyAgICA8cCBpZD0nZGVzY3JpcHRpb24nPjwvcD4KKyAgICA8ZGl2IGlkPSdjb25zb2xlJz48
L2Rpdj4KIAotPHAgaWQ9J2Rlc2NyaXB0aW9uJz48L3A+Ci08ZGl2IGlkPSdjb25zb2xlJz48L2Rp
dj4KLQotPHNjcmlwdD4KLSAgICBmdW5jdGlvbiBkb1NvbWV0aGluZygpIHsKLSAgICAgICAgLy8g
RG8gc29tZXRoaW5nIQotICAgIH0KKyAgICA8c2NyaXB0PgorICAgICAgICBmdW5jdGlvbiBvbkNs
aWNrKCkgeworICAgICAgICB9CiAKLSAgICBmdW5jdGlvbiB0ZXN0Um91bmRUb3VjaCh4LCB5LCBy
YWRpdXMpCi0gICAgewotICAgICAgICB2YXIgeCA9IHggLSByYWRpdXM7Ci0gICAgICAgIHZhciB5
ID0geSAtIHJhZGl1czsKLSAgICAgICAgdmFyIHdpZHRoID0gcmFkaXVzICogMjsKLSAgICAgICAg
dmFyIGhlaWdodCA9IHJhZGl1cyAqIDI7Ci0gICAgICAgIHZhciBhZGp1c3RlZE5vZGUgPSBpbnRl
cm5hbHMudG91Y2hOb2RlQWRqdXN0ZWRUb0Jlc3RDbGlja2FibGVOb2RlKHgsIHksIHdpZHRoLCBo
ZWlnaHQsIGRvY3VtZW50KTsKLSAgICAgICAgaWYgKGFkanVzdGVkTm9kZS5ub2RlVHlwZSA9PSAz
KSAvLyBURVhUIG5vZGUKLSAgICAgICAgICAgIGFkanVzdGVkTm9kZSA9IGFkanVzdGVkTm9kZS5w
YXJlbnROb2RlOwotICAgICAgICByZXR1cm4gYWRqdXN0ZWROb2RlOwotICAgIH0KLSAgICBmdW5j
dGlvbiB0ZXN0RGlyZWN0VG91Y2hlcygpCi0gICAgewotICAgICAgICBhZGp1c3RlZE5vZGUgPSB0
ZXN0Um91bmRUb3VjaCgyMDAsIDkwLCAyMDApOwotICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJp
bmcoJ2FkanVzdGVkTm9kZS5pZCcsICdkaXYxJyk7CisgICAgICAgIGZ1bmN0aW9uIHRlc3REaXJl
Y3RUb3VjaGVzKCkKKyAgICAgICAgeworICAgICAgICAgICAgdGVzdFRvdWNoUG9pbnQodG91Y2hQ
b2ludCgyMDAsIDkwLCAyMDApLCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGl2MScpKTsKIAot
ICAgIH0KLSAgICBmdW5jdGlvbiBydW5UZXN0cygpCi0gICAgewotICAgICAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIgJiYgd2luZG93LmludGVybmFscyAmJiBpbnRlcm5hbHMudG91Y2hOb2RlQWRq
dXN0ZWRUb0Jlc3RDbGlja2FibGVOb2RlKSB7Ci0gICAgICAgICAgICBkZXNjcmlwdGlvbignVGVz
dCB0b3VjaC1hZGp1c3RtZW50IG9uIGEgYmxvY2sgd2hlcmUgd2UgYWxzbyB0b3VjaCB0aGUgaW5u
ZXIgdGV4dCBhbmQgb3V0c2lkZSBsaW5rLicpOwotICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1w
QXNUZXh0KCk7Ci0gICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLSAgICAg
ICAgICAgIHRlc3REaXJlY3RUb3VjaGVzKCk7Ci0gICAgICAgICAgICBpc1N1Y2Nlc3NmdWxseVBh
cnNlZCgpOwotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgICAgIH0K
LSAgICB9Ci08L3NjcmlwdD4KKyAgICAgICAgZnVuY3Rpb24gcnVuVGVzdHMoKQorICAgICAgICB7
CisgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIgJiYgd2luZG93LmludGVybmFscyAm
JiBpbnRlcm5hbHMudG91Y2hOb2RlQWRqdXN0ZWRUb0Jlc3RDbGlja2FibGVOb2RlKSB7CisgICAg
ICAgICAgICAgICAgZGVzY3JpcHRpb24oZG9jdW1lbnQudGl0bGUpOworICAgICAgICAgICAgICAg
IHRlc3REaXJlY3RUb3VjaGVzKCk7CisgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ3NhbmRib3gnKS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgICAgIHJ1blRlc3RzKCk7CisgICAgPC9zY3JpcHQ+CisgICAgPHNjcmlw
dCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8
L2JvZHk+CiA8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50L2Rpc2FibGVkLWZvcm1lbGVtZW50cy1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy90b3VjaGFkanVzdG1lbnQvZGlzYWJsZWQtZm9ybWVsZW1lbnRz
LWV4cGVjdGVkLnR4dAppbmRleCBmOGVjYmMxYTcyMjIyOWVhOGVjNzBiNjAzNDk5NTU4OWE5Y2Mx
NmViLi42NTFhODI3NTI3NzlhMDE3NWRjMzZmNDY3OTdkOTQ1MTg1MWM4Y2FiIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy90b3VjaGFkanVzdG1lbnQvZGlzYWJsZWQtZm9ybWVsZW1lbnRzLWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy90b3VjaGFkanVzdG1lbnQvZGlzYWJsZWQtZm9ybWVs
ZW1lbnRzLWV4cGVjdGVkLnR4dApAQCAtMSwyMCArMSwyMCBAQAotTGFiZWwgCi1MYWJlbCAKIFRv
dWNoIEFkanVzdG1lbnQgOiBEaXNhYmxlZCBmb3JtIGVsZW1lbnRzIC0gYnVnIDkyMDkzCiAKIE9u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAogCiBUZXN0IHdlIGNhbiBoaXQgdGhlIGZvcm0gZWxl
bWVudHMgZGlyZWN0bHkuCi1QQVNTIGFkanVzdGVkTm9kZS5pZCBpcyAibGFiZWwyIgotUEFTUyBh
ZGp1c3RlZE5vZGUuaWQgaXMgImlucHV0MiIKK1BBU1MgYWRqdXN0ZWQgbm9kZSB3YXMgbnVsbC4K
K1BBU1MgYWRqdXN0ZWQgbm9kZSB3YXMgTEFCRUwjbGFiZWwyLgorUEFTUyBhZGp1c3RlZCBub2Rl
IHdhcyBudWxsLgorUEFTUyBhZGp1c3RlZCBub2RlIHdhcyBJTlBVVCNpbnB1dDIuCiBUZXN0IGlu
ZGlyZWN0IHRvdWNoZXMgYXJlIGFkanVzdGVkIHRvIHRoZSBlbmFibGVkIGZvcm0gZWxlbWVudHMu
Ci1QQVNTIGFkanVzdGVkTm9kZS5pZCBpcyAibGFiZWwyIgotUEFTUyBhZGp1c3RlZE5vZGUuaWQg
aXMgImxhYmVsMiIKLVBBU1MgYWRqdXN0ZWROb2RlLmlkIGlzICJsYWJlbDIiCi1QQVNTIGFkanVz
dGVkTm9kZS5pZCBpcyAiaW5wdXQyIgotUEFTUyBhZGp1c3RlZE5vZGUuaWQgaXMgImlucHV0MiIK
LVBBU1MgYWRqdXN0ZWROb2RlLmlkIGlzICJpbnB1dDIiCitQQVNTIGFkanVzdGVkIG5vZGUgd2Fz
IExBQkVMI2xhYmVsMi4KK1BBU1MgYWRqdXN0ZWQgbm9kZSB3YXMgTEFCRUwjbGFiZWwyLgorUEFT
UyBhZGp1c3RlZCBub2RlIHdhcyBMQUJFTCNsYWJlbDIuCitQQVNTIGFkanVzdGVkIG5vZGUgd2Fz
IElOUFVUI2lucHV0Mi4KK1BBU1MgYWRqdXN0ZWQgbm9kZSB3YXMgSU5QVVQjaW5wdXQyLgorUEFT
UyBhZGp1c3RlZCBub2RlIHdhcyBJTlBVVCNpbnB1dDIuCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RvdWNo
YWRqdXN0bWVudC9kaXNhYmxlZC1mb3JtZWxlbWVudHMuaHRtbCBiL0xheW91dFRlc3RzL3RvdWNo
YWRqdXN0bWVudC9kaXNhYmxlZC1mb3JtZWxlbWVudHMuaHRtbAppbmRleCBlYzEwNzViNzA4MWRk
YTNhNTQ4Zjg1OWZhNGYxNzMyNGY4MjY3NzQwLi45ODBmYjY1ZWUyNDJhZGIzNGI3ZmY0MTAwNDBl
ZDQzMDdjOGFjOWQ5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy90b3VjaGFkanVzdG1lbnQvZGlz
YWJsZWQtZm9ybWVsZW1lbnRzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50
L2Rpc2FibGVkLWZvcm1lbGVtZW50cy5odG1sCkBAIC0xLDE2ICsxLDE4IEBACis8IURPQ1RZUEUg
aHRtbD4KIDxodG1sPgogPGhlYWQ+Ci08dGl0bGU+VG91Y2ggQWRqdXN0bWVudCA6IERpc2FibGVk
IGZvcm0gZWxlbWVudHMgLSBidWcgOTIwOTM8L3RpdGxlPgotPHN0eWxlIHR5cGU9InRleHQvY3Nz
Ij4KLSAgICAjc2FuZGJveCB7Ci0gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgICAgICAg
bGVmdDogMHB4OwotICAgICAgICB0b3A6IDBweDsKLSAgICAgICAgd2lkdGg6IDYwMHB4OwotICAg
ICAgICBoZWlnaHQ6IDYwMHB4OwotICAgIH0KLTwvc3R5bGU+Ci08c2NyaXB0IHNyYz0iLi4vZmFz
dC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorICAgIDx0aXRsZT5Ub3Vj
aCBBZGp1c3RtZW50IDogRGlzYWJsZWQgZm9ybSBlbGVtZW50cyAtIGJ1ZyA5MjA5MzwvdGl0bGU+
CisgICAgPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3RvdWNoYWRqdXN0bWVudC5qcyI+
PC9zY3JpcHQ+CisgICAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKyAgICAgICAgI3NhbmRib3gg
eworICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOworICAgICAgICAgICAgbGVmdDogMHB4
OworICAgICAgICAgICAgdG9wOiAwcHg7CisgICAgICAgICAgICB3aWR0aDogNjAwcHg7CisgICAg
ICAgICAgICBoZWlnaHQ6IDYwMHB4OworICAgICAgICB9CisgICAgPC9zdHlsZT4KIDwvaGVhZD4K
IAogPGJvZHkgaWQ9ImJvZHkiPgpAQCAtMjYsNjcgKzI4LDQyIEBACiA8ZGl2IGlkPSdjb25zb2xl
Jz48L2Rpdj4KIAogPHNjcmlwdD4KLSAgICB2YXIgYWRqdXN0ZWROb2RlOwotICAgIGZ1bmN0aW9u
IHRlc3RSb3VuZFRvdWNoKHgsIHksIHJhZGl1cykKLSAgICB7Ci0gICAgICAgIHZhciB4ID0geCAt
IHJhZGl1czsKLSAgICAgICAgdmFyIHkgPSB5IC0gcmFkaXVzOwotICAgICAgICB2YXIgd2lkdGgg
PSByYWRpdXMgKiAyOwotICAgICAgICB2YXIgaGVpZ2h0ID0gcmFkaXVzICogMjsKLSAgICAgICAg
dmFyIGFkanVzdGVkTm9kZSA9IGludGVybmFscy50b3VjaE5vZGVBZGp1c3RlZFRvQmVzdENsaWNr
YWJsZU5vZGUoeCwgeSwgd2lkdGgsIGhlaWdodCwgZG9jdW1lbnQpOwotICAgICAgICBpZiAoYWRq
dXN0ZWROb2RlLm5vZGVUeXBlID09IDMpIC8vIFRFWFQgbm9kZQotICAgICAgICAgICAgYWRqdXN0
ZWROb2RlID0gYWRqdXN0ZWROb2RlLnBhcmVudE5vZGU7Ci0gICAgICAgIHJldHVybiBhZGp1c3Rl
ZE5vZGU7Ci0gICAgfQorICAgIC8vIFNldCB1cCBzaG9ydGN1dCBhY2Nlc3MgdG8gZWxlbWVudHMK
KyAgICB2YXIgZSA9IHt9OworICAgIFsnc2FuZGJveCcsICdmb3JtLCcsICdsYWJlbDEnLCAnbGFi
ZWwyJywgJ2lucHV0MScsICdpbnB1dDInXS5mb3JFYWNoKGZ1bmN0aW9uKGEpIHsKKyAgICAgICAg
ZVthXSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGEpOworICAgIH0pOwogCiAgICAgZnVuY3Rp
b24gdGVzdERpcmVjdFRvdWNoZXMoKQogICAgIHsKICAgICAgICAgLy8gUXVpY2sgc2FuaXR5IGNo
ZWNrLgogICAgICAgICBkZWJ1ZygnVGVzdCB3ZSBjYW4gaGl0IHRoZSBmb3JtIGVsZW1lbnRzIGRp
cmVjdGx5LicpOwogCi0vLyAgICAgICAgIGFkanVzdGVkTm9kZSA9IHRlc3RSb3VuZFRvdWNoKDE2
LCA4LCA1KTsKLS8vICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdhZGp1c3RlZE5vZGUu
aWQnLCAnbGFiZWwxJyk7Ci0KLSAgICAgICAgYWRqdXN0ZWROb2RlID0gdGVzdFJvdW5kVG91Y2go
MTYsIDM4LCA1KTsKLSAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdhZGp1c3RlZE5vZGUu
aWQnLCAnbGFiZWwyJyk7Ci0KLS8vICAgICAgICAgYWRqdXN0ZWROb2RlID0gdGVzdFJvdW5kVG91
Y2goNjAsIDgsIDUpOwotLy8gICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2FkanVzdGVk
Tm9kZS5pZCcsICdpbnB1dDEnKTsKLQotICAgICAgICBhZGp1c3RlZE5vZGUgPSB0ZXN0Um91bmRU
b3VjaCg2MCwgMzgsIDUpOwotICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2FkanVzdGVk
Tm9kZS5pZCcsICdpbnB1dDInKTsKLQorICAgICAgICB0ZXN0VG91Y2hQb2ludCh0b3VjaFBvaW50
KDE2LCA4LCA1KSwgbnVsbCk7CisgICAgICAgIHRlc3RUb3VjaFBvaW50KHRvdWNoUG9pbnQoMTYs
IDM4LCA1KSwgZS5sYWJlbDIpOworICAgICAgICB0ZXN0VG91Y2hQb2ludCh0b3VjaFBvaW50KDYw
LCA4LCA1KSwgbnVsbCk7CisgICAgICAgIHRlc3RUb3VjaFBvaW50KHRvdWNoUG9pbnQoNjAsIDM4
LCA1KSwgZS5pbnB1dDIpOwogICAgIH0KIAogICAgIGZ1bmN0aW9uIHRlc3RBZGp1c3RlZFRvdWNo
ZXMoKQogICAgIHsKICAgICAgICAgZGVidWcoJ1Rlc3QgaW5kaXJlY3QgdG91Y2hlcyBhcmUgYWRq
dXN0ZWQgdG8gdGhlIGVuYWJsZWQgZm9ybSBlbGVtZW50cy4nKTsKLSAgICAgICAgYWRqdXN0ZWRO
b2RlID0gdGVzdFJvdW5kVG91Y2goMTYsIDI1LCAxMCk7Ci0gICAgICAgIHNob3VsZEJlRXF1YWxU
b1N0cmluZygnYWRqdXN0ZWROb2RlLmlkJywgJ2xhYmVsMicpOwotCi0gICAgICAgIGFkanVzdGVk
Tm9kZSA9IHRlc3RSb3VuZFRvdWNoKDE2LCAyMCwgMTUpOwotICAgICAgICBzaG91bGRCZUVxdWFs
VG9TdHJpbmcoJ2FkanVzdGVkTm9kZS5pZCcsICdsYWJlbDInKTsKLQotICAgICAgICBhZGp1c3Rl
ZE5vZGUgPSB0ZXN0Um91bmRUb3VjaCgxNiwgMTYsIDIwKTsKLSAgICAgICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCdhZGp1c3RlZE5vZGUuaWQnLCAnbGFiZWwyJyk7Ci0KLSAgICAgICAgYWRqdXN0
ZWROb2RlID0gdGVzdFJvdW5kVG91Y2goNjAsIDI1LCAxMCk7Ci0gICAgICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygnYWRqdXN0ZWROb2RlLmlkJywgJ2lucHV0MicpOwotCi0gICAgICAgIGFkanVz
dGVkTm9kZSA9IHRlc3RSb3VuZFRvdWNoKDYwLCAyMCwgMTUpOwotICAgICAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoJ2FkanVzdGVkTm9kZS5pZCcsICdpbnB1dDInKTsKKyAgICAgICAgdGVzdFRv
dWNoUG9pbnQodG91Y2hQb2ludCgxNiwgMjUsIDEwKSwgZS5sYWJlbDIpOworICAgICAgICB0ZXN0
VG91Y2hQb2ludCh0b3VjaFBvaW50KDE2LCAyMCwgMTUpLCBlLmxhYmVsMik7CisgICAgICAgIHRl
c3RUb3VjaFBvaW50KHRvdWNoUG9pbnQoMTYsIDE2LCAyMCksIGUubGFiZWwyKTsKIAotICAgICAg
ICBhZGp1c3RlZE5vZGUgPSB0ZXN0Um91bmRUb3VjaCg2MCwgMTYsIDIwKTsKLSAgICAgICAgc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCdhZGp1c3RlZE5vZGUuaWQnLCAnaW5wdXQyJyk7CisgICAgICAg
IHRlc3RUb3VjaFBvaW50KHRvdWNoUG9pbnQoNjAsIDI1LCAxMCksIGUuaW5wdXQyKTsKKyAgICAg
ICAgdGVzdFRvdWNoUG9pbnQodG91Y2hQb2ludCg2MCwgMjAsIDE1KSwgZS5pbnB1dDIpOworICAg
ICAgICB0ZXN0VG91Y2hQb2ludCh0b3VjaFBvaW50KDYwLCAxNiwgMjApLCBlLmlucHV0Mik7CiAg
ICAgfQogCiAgICAgZnVuY3Rpb24gcnVuVGVzdHMoKQogICAgIHsKICAgICAgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyICYmIHdpbmRvdy5pbnRlcm5hbHMgJiYgaW50ZXJuYWxzLnRvdWNoTm9kZUFk
anVzdGVkVG9CZXN0Q2xpY2thYmxlTm9kZSkgewogICAgICAgICAgICAgZGVzY3JpcHRpb24oZG9j
dW1lbnQudGl0bGUpOwotICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAgICAg
ICAgICAgICB0ZXN0RGlyZWN0VG91Y2hlcygpOwogICAgICAgICAgICAgdGVzdEFkanVzdGVkVG91
Y2hlcygpOworICAgICAgICAgICAgZS5zYW5kYm94LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAg
ICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RvdWNoYWRqdXN0bWVu
dC9uZXN0ZWQtdG91Y2gtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50
L25lc3RlZC10b3VjaC1leHBlY3RlZC50eHQKaW5kZXggNzNkN2M0MDVjYzdiZTZmOWFiNjc3ZTg5
ZGZiNjY1Y2ZkMmRhOGE1OC4uYzkzYWYyZDk4NTFkMDk1MzgxZWUxNGVlYjA4NzE2ZmMwZGE4ZWMx
OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50L25lc3RlZC10b3VjaC1l
eHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50L25lc3RlZC10b3Vj
aC1leHBlY3RlZC50eHQKQEAgLTEsMTcgKzEsMTUgQEAKLUJveCB3aXRoIGEgbG9jYWwgY2xpY2sg
aGFuZGxlci4KLUJveCB3aXRob3V0IGEgbG9jYWwgY2xpY2sgaGFuZGxlci4KIFRlc3QgdGhlIGNh
c2Ugd2hlcmUgYSBjbGlja2FibGUgdGFyZ2V0IGlzIG5lc3RlZCBpbnNpZGUgYSBkb2N1bWVudCB0
aGF0IGlzIG1vbml0b3JpbmcgY2xpY2tzLiBUaGUgdGFyZ2V0IHdpdGggdGhlIGxvY2FsIGV2ZW50
LWhhbmRsZXIgc2hvdWxkIGJlIGNob3NlbiBpZiBtdWx0aXBsZSB0YXJnZXRzIGFyZSB0b3VjaGVk
LgogCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2Vz
LCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAKIAogVGVzdGluZyBzbWFsbCBkaXJlY3Qg
aGl0cy4KLVBBU1MgYWRqdXN0ZWROb2RlLmlkIGlzIGVsZW1lbnQuaWQKLVBBU1MgYWRqdXN0ZWRO
b2RlLmlkIGlzIGVsZW1lbnQuaWQKK1BBU1MgYWRqdXN0ZWQgbm9kZSB3YXMgRElWI215Ym94MS4K
K1BBU1MgYWRqdXN0ZWQgbm9kZSB3YXMgRElWI215Ym94Mi4KIFRlc3RpbmcgcHJlZmVyZWQgaGl0
cy4KLVBBU1MgYWRqdXN0ZWROb2RlLmlkIGlzIGVsZW1lbnQxLmlkCi1QQVNTIGFkanVzdGVkTm9k
ZS5pZCBpcyBlbGVtZW50MS5pZAotUEFTUyBhZGp1c3RlZE5vZGUuaWQgaXMgZWxlbWVudDEuaWQK
K1BBU1MgYWRqdXN0ZWQgbm9kZSB3YXMgRElWI215Ym94MS4KK1BBU1MgYWRqdXN0ZWQgbm9kZSB3
YXMgRElWI215Ym94MS4KK1BBU1MgYWRqdXN0ZWQgbm9kZSB3YXMgRElWI215Ym94MS4KIFBBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50L25lc3RlZC10b3VjaC5odG1sIGIvTGF5b3V0VGVz
dHMvdG91Y2hhZGp1c3RtZW50L25lc3RlZC10b3VjaC5odG1sCmluZGV4IDRlNTc3Zjg1YzM4MmU5
OTU2Y2NlNGUxYTEzMDY0NGU4ZDBkODExNmYuLmI0MjE0NTlhOGE2YTIyMDJmOWE4YWI1MDM0NDUz
MDRlZjlkMTRjYzMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3RvdWNoYWRqdXN0bWVudC9uZXN0
ZWQtdG91Y2guaHRtbAorKysgYi9MYXlvdXRUZXN0cy90b3VjaGFkanVzdG1lbnQvbmVzdGVkLXRv
dWNoLmh0bWwKQEAgLTEsMTIwICsxLDk1IEBACis8IURPQ1RZUEUgaHRtbD4KIDxodG1sPgogPGhl
YWQ+Ci08c3R5bGU+Ci0gICAgLmJveCB7IGJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOyBib3JkZXIt
cmFkaXVzOiA1cHggNXB4OyBtYXJnaW46IDFlbTsgbWF4LXdpZHRoOiA0MGVtOyB9Ci08L3N0eWxl
PgotPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KLQorICAgIDx0aXRsZT5UZXN0IHRoZSBjYXNlIHdoZXJlIGEgY2xpY2thYmxlIHRhcmdl
dCBpcyBuZXN0ZWQgaW5zaWRlIGEgZG9jdW1lbnQgdGhhdCBpcyBtb25pdG9yaW5nIGNsaWNrcy4g
VGhlIHRhcmdldCB3aXRoIHRoZSBsb2NhbCBldmVudC1oYW5kbGVyIHNob3VsZCBiZSBjaG9zZW4g
aWYgbXVsdGlwbGUgdGFyZ2V0cyBhcmUgdG91Y2hlZC48L3RpdGxlPgorICAgIDxzY3JpcHQgc3Jj
PSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CisgICAgPHNj
cmlwdCBzcmM9InJlc291cmNlcy90b3VjaGFkanVzdG1lbnQuanMiPjwvc2NyaXB0PgorICAgIDxz
dHlsZT4KKyAgICAgICAgI3NhbmRib3ggeyB9CisgICAgICAgIC5ib3ggeyBib3JkZXI6IDFweCBz
b2xpZCBibGFjazsgYm9yZGVyLXJhZGl1czogNXB4IDVweDsgbWFyZ2luOiAxMnB4OyBtYXgtd2lk
dGg6IDQwZW07IH0KKyAgICA8L3N0eWxlPgogPC9oZWFkPgogCi08Ym9keSBvbmxvYWQ9InJ1blRl
c3RzKCkiPgorPGJvZHk+CiAKLTxkaXYgY2xhc3M9Ym94IGlkPW15Ym94MT4KLUJveCB3aXRoIGEg
bG9jYWwgY2xpY2sgaGFuZGxlci4KLTwvZGl2PgorPGRpdiBpZD1zYW5kYm94PgorICAgIDxkaXYg
Y2xhc3M9Ym94IGlkPW15Ym94MT4KKyAgICBCb3ggd2l0aCBhIGxvY2FsIGNsaWNrIGhhbmRsZXIu
CisgICAgPC9kaXY+CiAKLTxkaXYgY2xhc3M9Ym94IGlkPW15Ym94Mj4gCi1Cb3ggd2l0aG91dCBh
IGxvY2FsIGNsaWNrIGhhbmRsZXIuCisgICAgPGRpdiBjbGFzcz1ib3ggaWQ9bXlib3gyPiAKKyAg
ICBCb3ggd2l0aG91dCBhIGxvY2FsIGNsaWNrIGhhbmRsZXIuCisgICAgPC9kaXY+CiA8L2Rpdj4K
IAogPHNjcmlwdD4KLSAgZnVuY3Rpb24gbW9uaXRvcihlKSB7IGFsZXJ0KGUudGFyZ2V0ICsoIGUu
dGFyZ2V0LmlkID8gKCAnICMnICsgZS50YXJnZXQuaWQpIDogJycpKTsgfTsKLSAgZnVuY3Rpb24g
ZG9Tb21ldGhpbmcoZSkge307CisgICAgZnVuY3Rpb24gbW9uaXRvcihlKSB7IGFsZXJ0KGUudGFy
Z2V0ICsoIGUudGFyZ2V0LmlkID8gKCAnICMnICsgZS50YXJnZXQuaWQpIDogJycpKTsgfTsKKyAg
ICBmdW5jdGlvbiBkb1NvbWV0aGluZyhlKSB7fTsKIAotICB2YXIgZWxlbWVudCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdteWJveDEnKTsKLSAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdj
bGljaycsIGRvU29tZXRoaW5nLCBmYWxzZSk7Ci0gIGVsZW1lbnQgPSBkb2N1bWVudC5ib2R5Owot
ICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgbW9uaXRvciwgZmFsc2UpOworICAg
IHZhciBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ215Ym94MScpOworICAgIGVs
ZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBkb1NvbWV0aGluZywgZmFsc2UpOworICAg
IGVsZW1lbnQgPSBkb2N1bWVudC5ib2R5OworICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcign
Y2xpY2snLCBtb25pdG9yLCBmYWxzZSk7CiA8L3NjcmlwdD4KIAotCiA8cCBpZD0nZGVzY3JpcHRp
b24nPjwvcD4KIDxkaXYgaWQ9J2NvbnNvbGUnPjwvZGl2PgogCiA8c2NyaXB0PgotICAgIHZhciBl
bGVtZW50OwotICAgIHZhciBhZGp1c3RlZE5vZGU7Ci0gICAgZnVuY3Rpb24gZmluZEFic29sdXRl
UG9zaXRpb24obm9kZSkgewotICAgICAgICB2YXIgcG9zID0gbmV3IE9iamVjdCgpOwotICAgICAg
ICBwb3MubGVmdCA9IDA7IHBvcy50b3AgPSAwOwotICAgICAgICBkbyB7Ci0gICAgICAgICAgICBw
b3MubGVmdCArPSBub2RlLm9mZnNldExlZnQ7Ci0gICAgICAgICAgICBwb3MudG9wICs9IG5vZGUu
b2Zmc2V0VG9wOwotICAgICAgICB9IHdoaWxlIChub2RlID0gbm9kZS5vZmZzZXRQYXJlbnQpOwot
ICAgICAgICByZXR1cm4gcG9zOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIHRlc3REaXJlY3RUb3Vj
aChlbGVtZW50KQotICAgIHsKLSAgICAgICAgdmFyIHBvcyA9IGZpbmRBYnNvbHV0ZVBvc2l0aW9u
KGVsZW1lbnQpOwotICAgICAgICB2YXIgeCA9IHBvcy5sZWZ0ICsgZWxlbWVudC5jbGllbnRXaWR0
aCAvIDIgLSAxOwotICAgICAgICB2YXIgeSA9IHBvcy50b3AgKyBlbGVtZW50LmNsaWVudEhlaWdo
dCAvIDIgLSAxOwotICAgICAgICB2YXIgd2lkdGggPSAzOwotICAgICAgICB2YXIgaGVpZ2h0ID0g
MzsKLSAgICAgICAgdmFyIGFkanVzdGVkTm9kZSA9IGludGVybmFscy50b3VjaE5vZGVBZGp1c3Rl
ZFRvQmVzdENsaWNrYWJsZU5vZGUoeCwgeSwgd2lkdGgsIGhlaWdodCwgZG9jdW1lbnQpOwotICAg
ICAgICBpZiAoYWRqdXN0ZWROb2RlLm5vZGVUeXBlID09IDMpIC8vIFRFWFQgbm9kZQotICAgICAg
ICAgICAgYWRqdXN0ZWROb2RlID0gYWRqdXN0ZWROb2RlLnBhcmVudE5vZGU7Ci0gICAgICAgIHJl
dHVybiBhZGp1c3RlZE5vZGU7Ci0gICAgfQorICAgIHZhciBlID0ge307CisgICAgWydzYW5kYm94
JywgJ215Ym94MScsICdteWJveDInXS5mb3JFYWNoKGZ1bmN0aW9uKGEpIHsKKyAgICAgICAgZVth
XSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGEpOworICAgIH0pOwogCi0gICAgZnVuY3Rpb24g
dGVzdERvdWJsZVRvdWNoKGVsZW1lbnQxLCBlbGVtZW50Miwgb2Zmc2V0KQorICAgIGZ1bmN0aW9u
IHRvdWNoUG9pbnREb3VibGVUb3VjaChlbGVtZW50MSwgZWxlbWVudDIsIG9mZnNldCkKICAgICB7
Ci0gICAgICAgIHZhciBwb3MxID0gZmluZEFic29sdXRlUG9zaXRpb24oZWxlbWVudDEpOwotICAg
ICAgICB2YXIgcG9zMiA9IGZpbmRBYnNvbHV0ZVBvc2l0aW9uKGVsZW1lbnQyKTsKKyAgICAgICAg
dmFyIGJvdW5kczEgPSBmaW5kQWJzb2x1dGVCb3VuZHMoZWxlbWVudDEpOworICAgICAgICB2YXIg
Ym91bmRzMiA9IGZpbmRBYnNvbHV0ZUJvdW5kcyhlbGVtZW50Mik7CisgICAgICAgIHZhciBib3Vu
ZHMgPSBuZXcgT2JqZWN0KCk7CiAgICAgICAgIC8vIFdlIGFzc3VtZSB0aGUgZWxlbWVudHMgaGF2
ZSB0aGUgc2FtZSB4IGNvb3JkIGFuZCB3aWR0aC4KLSAgICAgICAgdmFyIHggPSBwb3MxLmxlZnQg
KyBlbGVtZW50MS5jbGllbnRXaWR0aC8yIC0gMTsKLSAgICAgICAgdmFyIHkxID0gcG9zMS50b3Ag
KyBlbGVtZW50MS5jbGllbnRIZWlnaHQvMiArIDE7Ci0gICAgICAgIHZhciB5MiA9IHBvczIudG9w
ICsgZWxlbWVudDIuY2xpZW50SGVpZ2h0LzIgLSAxOwotICAgICAgICB2YXIgd2lkdGggPSB5MiAt
IHkxOwotICAgICAgICB2YXIgaGVpZ2h0ID0geTIgLSB5MTsKLSAgICAgICAgdmFyIGFkanVzdGVk
Tm9kZSA9IGludGVybmFscy50b3VjaE5vZGVBZGp1c3RlZFRvQmVzdENsaWNrYWJsZU5vZGUoeCwg
eTEsIHdpZHRoLCBoZWlnaHQsIGRvY3VtZW50KTsKLSAgICAgICAgaWYgKGFkanVzdGVkTm9kZS5u
b2RlVHlwZSA9PSAzKSAvLyBURVhUIG5vZGUKLSAgICAgICAgICAgIGFkanVzdGVkTm9kZSA9IGFk
anVzdGVkTm9kZS5wYXJlbnROb2RlOwotICAgICAgICByZXR1cm4gYWRqdXN0ZWROb2RlOworICAg
ICAgICBib3VuZHMubGVmdCA9IGJvdW5kczEubGVmdCArIGJvdW5kczEud2lkdGgvMiAtIDE7Cisg
ICAgICAgIHZhciB5MSA9IGJvdW5kczEudG9wICsgYm91bmRzMS5oZWlnaHQvMiArIG9mZnNldDsK
KyAgICAgICAgdmFyIHkyID0gYm91bmRzMi50b3AgKyBib3VuZHMyLmhlaWdodC8yIC0gMTsKKyAg
ICAgICAgYm91bmRzLnRvcCA9IHkxOworICAgICAgICBib3VuZHMud2lkdGggPSB5MiAtIHkxOwor
ICAgICAgICBib3VuZHMuaGVpZ2h0ID0geTIgLSB5MTsKKyAgICAgICAgcmV0dXJuIGJvdW5kczsK
ICAgICB9CiAKICAgICBmdW5jdGlvbiB0ZXN0RGlyZWN0VG91Y2hlcygpCiAgICAgewogICAgICAg
ICBkZWJ1ZygnVGVzdGluZyBzbWFsbCBkaXJlY3QgaGl0cy4nKTsKIAotICAgICAgICBlbGVtZW50
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ215Ym94MScpOwotICAgICAgICBhZGp1c3RlZE5v
ZGUgPSB0ZXN0RGlyZWN0VG91Y2goZWxlbWVudCk7Ci0gICAgICAgIHNob3VsZEJlKCdhZGp1c3Rl
ZE5vZGUuaWQnLCAnZWxlbWVudC5pZCcpOworICAgICAgICB2YXIgdG91Y2hwb2ludCA9IG9mZnNl
dFRvdWNoUG9pbnQoZmluZEFic29sdXRlQm91bmRzKGUubXlib3gxKSwgJ2NlbnRlcicsIDAsIDIp
OworICAgICAgICB0ZXN0VG91Y2hQb2ludCh0b3VjaHBvaW50LCBlLm15Ym94MSk7CiAKLSAgICAg
ICAgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdteWJveDInKTsKLSAgICAgICAg
YWRqdXN0ZWROb2RlID0gdGVzdERpcmVjdFRvdWNoKGVsZW1lbnQpOwotICAgICAgICBzaG91bGRC
ZSgnYWRqdXN0ZWROb2RlLmlkJywgJ2VsZW1lbnQuaWQnKTsKKyAgICAgICAgdG91Y2hwb2ludCA9
IG9mZnNldFRvdWNoUG9pbnQoZmluZEFic29sdXRlQm91bmRzKGUubXlib3gyKSwgJ2NlbnRlcics
IDAsIDIpOworICAgICAgICB0ZXN0VG91Y2hQb2ludCh0b3VjaHBvaW50LCBlLm15Ym94Mik7CiAg
ICAgfQogCiAgICAgZnVuY3Rpb24gdGVzdFByZWZlcmVkVG91Y2goKQogICAgIHsKICAgICAgICAg
ZGVidWcoJ1Rlc3RpbmcgcHJlZmVyZWQgaGl0cy4nKTsKIAotICAgICAgICBlbGVtZW50MSA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdteWJveDEnKTsKLSAgICAgICAgZWxlbWVudDIgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnbXlib3gyJyk7Ci0gICAgICAgIGFkanVzdGVkTm9kZSA9IHRl
c3REb3VibGVUb3VjaChlbGVtZW50MSwgZWxlbWVudDIsIDApOwotICAgICAgICBzaG91bGRCZSgn
YWRqdXN0ZWROb2RlLmlkJywgJ2VsZW1lbnQxLmlkJyk7CisgICAgICAgIHRlc3RUb3VjaFBvaW50
KHRvdWNoUG9pbnREb3VibGVUb3VjaChlLm15Ym94MSwgZS5teWJveDIsIDApLCBlLm15Ym94MSk7
CiAKICAgICAgICAgLy8gRmlyc3QgdGVzdCB3YXMgY2VudGVyZWQsIG5vdyBtb3ZlIHRoZSB0ZXN0
IGNsb3NlciB0byB0aGUgd3Jvbmcgbm9kZSwgYW5kIGVuc3VyZSB3ZSBzdGlsbCBnZXQgdGhlIHBy
ZWZlcmVkIG5vZGUuCi0gICAgICAgIGFkanVzdGVkTm9kZSA9IHRlc3REb3VibGVUb3VjaChlbGVt
ZW50MSwgZWxlbWVudDIsIDUpOwotICAgICAgICBzaG91bGRCZSgnYWRqdXN0ZWROb2RlLmlkJywg
J2VsZW1lbnQxLmlkJyk7CisgICAgICAgIHRlc3RUb3VjaFBvaW50KHRvdWNoUG9pbnREb3VibGVU
b3VjaChlLm15Ym94MSwgZS5teWJveDIsIDUpLCBlLm15Ym94MSk7CiAKLSAgICAgICAgYWRqdXN0
ZWROb2RlID0gdGVzdERvdWJsZVRvdWNoKGVsZW1lbnQxLCBlbGVtZW50MiwgMTApOwotICAgICAg
ICBzaG91bGRCZSgnYWRqdXN0ZWROb2RlLmlkJywgJ2VsZW1lbnQxLmlkJyk7CisgICAgICAgIHRl
c3RUb3VjaFBvaW50KHRvdWNoUG9pbnREb3VibGVUb3VjaChlLm15Ym94MSwgZS5teWJveDIsIDEw
KSwgZS5teWJveDEpOwogICAgIH0KIAogICAgIGZ1bmN0aW9uIHJ1blRlc3RzKCkKICAgICB7CiAg
ICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lciAmJiB3aW5kb3cuaW50ZXJuYWxzICYmIGludGVy
bmFscy50b3VjaE5vZGVBZGp1c3RlZFRvQmVzdENsaWNrYWJsZU5vZGUpIHsKLSAgICAgICAgICAg
IGRlc2NyaXB0aW9uKCdUZXN0IHRoZSBjYXNlIHdoZXJlIGEgY2xpY2thYmxlIHRhcmdldCBpcyBu
ZXN0ZWQgaW5zaWRlIGEgZG9jdW1lbnQgdGhhdCBpcyBtb25pdG9yaW5nIGNsaWNrcy4gVGhlIHRh
cmdldCB3aXRoIHRoZSBsb2NhbCBldmVudC1oYW5kbGVyIHNob3VsZCBiZSBjaG9zZW4gaWYgbXVs
dGlwbGUgdGFyZ2V0cyBhcmUgdG91Y2hlZC4nKTsKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVt
cEFzVGV4dCgpOwotICAgICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAg
ICAgICAgICBkZXNjcmlwdGlvbihkb2N1bWVudC50aXRsZSk7CiAgICAgICAgICAgICB0ZXN0RGly
ZWN0VG91Y2hlcygpOwogICAgICAgICAgICAgdGVzdFByZWZlcmVkVG91Y2goKTsKLSAgICAgICAg
ICAgIGlzU3VjY2Vzc2Z1bGx5UGFyc2VkKCk7Ci0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlm
eURvbmUoKTsKKyAgICAgICAgICAgIGVbJ3NhbmRib3gnXS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUn
OwogICAgICAgICB9CiAgICAgfQorICAgIHJ1blRlc3RzKCk7CiA8L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9i
b2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50L3Jl
c291cmNlcy90b3VjaGFkanVzdG1lbnQuanMgYi9MYXlvdXRUZXN0cy90b3VjaGFkanVzdG1lbnQv
cmVzb3VyY2VzL3RvdWNoYWRqdXN0bWVudC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNDUwYWM2ZjViYzgyNGY3
ZGJjM2EyZDNiNDJhODhkODE5NTUwZTk3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
dG91Y2hhZGp1c3RtZW50L3Jlc291cmNlcy90b3VjaGFkanVzdG1lbnQuanMKQEAgLTAsMCArMSwx
MDAgQEAKKy8qIGZ1bmN0aW9uIGZvciBmaW5kaW5nIHRoZSBhYnNvbHV0ZSBib3VuZHMgb2YgYSBu
b2RlICovCitmdW5jdGlvbiBmaW5kQWJzb2x1dGVCb3VuZHMobm9kZSkKK3sKKyAgICB2YXIgYm91
bmRzID0ge2xlZnQ6IDAsIHRvcDogMH07CisgICAgYm91bmRzLndpZHRoID0gbm9kZS5jbGllbnRX
aWR0aDsKKyAgICBib3VuZHMuaGVpZ2h0ID0gbm9kZS5jbGllbnRIZWlnaHQ7CisgICAgZG8gewor
ICAgICAgICBib3VuZHMubGVmdCArPSBub2RlLm9mZnNldExlZnQ7CisgICAgICAgIGJvdW5kcy50
b3AgKz0gbm9kZS5vZmZzZXRUb3A7CisgICAgfSB3aGlsZSAobm9kZSA9IG5vZGUub2Zmc2V0UGFy
ZW50KTsKKyAgICByZXR1cm4gYm91bmRzOworfQorCitmdW5jdGlvbiBub2RlVG9TdHJpbmcobm9k
ZSkKK3sKKyAgICBpZiAobm9kZSA9PT0gdW5kZWZpbmVkKQorICAgICAgICByZXR1cm4gJ3VuZGVm
aW5lZCc7CisgICAgaWYgKG5vZGUgPT09IG51bGwpCisgICAgICAgIHJldHVybiAnbnVsbCc7Cisg
ICAgaWYgKCFub2RlLm5vZGVOYW1lKQorICAgICAgICByZXR1cm4gJ25vdCBhIG5vZGUnOworICAg
IHJldHVybiBub2RlLm5vZGVOYW1lICsgKG5vZGUuaWQgPyAoJyMnICsgbm9kZS5pZCkgOiAnJyk7
Cit9CisKK2Z1bmN0aW9uIHRlc3RUb3VjaFBvaW50KHRvdWNocG9pbnQsIHRhcmdldE5vZGUpCit7
CisgICAgdmFyIGFkanVzdGVkTm9kZSA9IGludGVybmFscy50b3VjaE5vZGVBZGp1c3RlZFRvQmVz
dENsaWNrYWJsZU5vZGUodG91Y2hwb2ludC5sZWZ0LCB0b3VjaHBvaW50LnRvcCwgdG91Y2hwb2lu
dC53aWR0aCwgdG91Y2hwb2ludC5oZWlnaHQsIGRvY3VtZW50KTsKKyAgICBpZiAoYWRqdXN0ZWRO
b2RlICYmIGFkanVzdGVkTm9kZS5ub2RlVHlwZSA9PSAzKSAvLyBURVhUIG5vZGUKKyAgICAgICAg
YWRqdXN0ZWROb2RlID0gYWRqdXN0ZWROb2RlLnBhcmVudE5vZGU7CisgICAgaWYgKHRhcmdldE5v
ZGUgPT0gYWRqdXN0ZWROb2RlKSB7CisgICAgICAgIHRlc3RQYXNzZWQoImFkanVzdGVkIG5vZGUg
d2FzICIgKyBub2RlVG9TdHJpbmcodGFyZ2V0Tm9kZSkgKyAiLiIpOworICAgIH0KKyAgICBlbHNl
IHsKKyAgICAgICAgdGVzdEZhaWxlZCgiYWRqdXN0ZWQgbm9kZSBzaG91bGQgYmUgIiArIG5vZGVU
b1N0cmluZyh0YXJnZXROb2RlKSAgKyAiLiBXYXMgIiArIG5vZGVUb1N0cmluZyhhZGp1c3RlZE5v
ZGUpICsgIi4iKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHRvdWNoUG9pbnQoeCwgeSwgcmFkaXVz
WCwgcmFkaXVzWSkKK3sKKyAgICBpZiAoIXJhZGl1c1kpCisgICAgICAgIHJhZGl1c1kgPSByYWRp
dXNYOworICAgIHZhciB0b3VjaHBvaW50ID0gbmV3IE9iamVjdCgpOworICAgIHRvdWNocG9pbnQu
bGVmdCA9IHggLSByYWRpdXNYOworICAgIHRvdWNocG9pbnQudG9wID0geSAtIHJhZGl1c1k7Cisg
ICAgdG91Y2hwb2ludC53aWR0aCA9IHJhZGl1c1ggKiAyOworICAgIHRvdWNocG9pbnQuaGVpZ2h0
ID0gcmFkaXVzWSAqIDI7CisgICAgcmV0dXJuIHRvdWNocG9pbnQ7Cit9CisKK2Z1bmN0aW9uIG9m
ZnNldFRvdWNoUG9pbnQoYm91bmRzLCByZWxhdGl2ZVBvc2l0aW9uLCB0b3VjaE9mZnNldCwgdG91
Y2hSYWRpdXMpCit7CisgICAgdmFyIHRvdWNocG9pbnQgPSB7bGVmdCA6IGJvdW5kcy5sZWZ0LCB0
b3A6IGJvdW5kcy50b3AgfTsKKworICAgIC8vIFNldCBjZW50ZXIgcG9pbnQgZm9yIHRvdWNoLgor
ICAgIHN3aXRjaCAocmVsYXRpdmVQb3NpdGlvbikgeworICAgIGNhc2UgJ2NlbnRlcic6CisgICAg
ICAgIHRvdWNocG9pbnQubGVmdCArPSBib3VuZHMud2lkdGggLyAyOworICAgICAgICB0b3VjaHBv
aW50LnRvcCArPSBib3VuZHMuaGVpZ2h0IC8gMjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAn
bGVmdCc6CisgICAgICAgIHRvdWNocG9pbnQubGVmdCAtPSB0b3VjaE9mZnNldDsKKyAgICAgICAg
dG91Y2hwb2ludC50b3AgKz0gYm91bmRzLmhlaWdodCAvIDI7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgJ3JpZ2h0JzoKKyAgICAgICAgdG91Y2hwb2ludC5sZWZ0ICs9IGJvdW5kcy53aWR0aCAr
IHRvdWNoT2Zmc2V0OworICAgICAgICB0b3VjaHBvaW50LnRvcCArPSAgYm91bmRzLmhlaWdodCAv
IDI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgJ3RvcC1sZWZ0JzoKKyAgICAgICAgdG91Y2hw
b2ludC5sZWZ0IC09IHRvdWNoT2Zmc2V0OworICAgICAgICB0b3VjaHBvaW50LnRvcCAtPSB0b3Vj
aE9mZnNldDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAndG9wLXJpZ2h0JzoKKyAgICAgICAg
dG91Y2hwb2ludC5sZWZ0ICs9IGJvdW5kcy53aWR0aCArIHRvdWNoT2Zmc2V0OworICAgICAgICB0
b3VjaHBvaW50LnRvcCAtPSB0b3VjaE9mZnNldDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAn
Ym90dG9tLWxlZnQnOgorICAgICAgICB0b3VjaHBvaW50LmxlZnQgLT0gdG91Y2hPZmZzZXQ7Cisg
ICAgICAgIHRvdWNocG9pbnQudG9wICs9IGJvdW5kcy5oZWlnaHQgKyB0b3VjaE9mZnNldDsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSAnYm90dG9tLXJpZ2h0JzoKKyAgICAgICAgdG91Y2hwb2lu
dC5sZWZ0ICs9IGJvdW5kcy53aWR0aCArIHRvdWNoT2Zmc2V0OworICAgICAgICB0b3VjaHBvaW50
LnRvcCArPSBib3VuZHMuaGVpZ2h0ICsgdG91Y2hPZmZzZXQ7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgJ3RvcCc6CisgICAgICAgIHRvdWNocG9pbnQubGVmdCArPSBib3VuZHMud2lkdGggLyAy
OworICAgICAgICB0b3VjaHBvaW50LnRvcCAtPSB0b3VjaE9mZnNldDsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSAnYm90dG9tJzoKKyAgICAgICAgdG91Y2hwb2ludC5sZWZ0ICs9IGJvdW5kcy53
aWR0aCAvIDI7CisgICAgICAgIHRvdWNocG9pbnQudG9wICs9IGJvdW5kcy5oZWlnaHQgKyB0b3Vj
aE9mZnNldDsKKyAgICB9CisgICAgLy8gQWRqdXN0IGZyb20gdG91Y2ggY2VudGVyIHRvIHRvcC1s
ZWZ0IGNvcm5lci4KKyAgICB0b3VjaHBvaW50LmxlZnQgLT0gdG91Y2hSYWRpdXM7CisgICAgdG91
Y2hwb2ludC50b3AgLT0gdG91Y2hSYWRpdXM7CisKKyAgICB0b3VjaHBvaW50LndpZHRoID0gMiAq
IHRvdWNoUmFkaXVzOworICAgIHRvdWNocG9pbnQuaGVpZ2h0ID0gMiAqIHRvdWNoUmFkaXVzOwor
CisgICAgcmV0dXJuIHRvdWNocG9pbnQ7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90b3Vj
aGFkanVzdG1lbnQvcm90YXRlZC1ub2RlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RvdWNo
YWRqdXN0bWVudC9yb3RhdGVkLW5vZGUtZXhwZWN0ZWQudHh0CmluZGV4IDk2YTI5NDI3ZGQ1Mzc3
YTFlMmNiMzkyZDM5MDllZjIwMzFlNzNkMzYuLmYwMzVjYjdiNjQwYzkxZTljNDlhY2E5MWNlMTNi
OWY0ZmZmMTFjZDIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3RvdWNoYWRqdXN0bWVudC9yb3Rh
dGVkLW5vZGUtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3RvdWNoYWRqdXN0bWVudC9y
b3RhdGVkLW5vZGUtZXhwZWN0ZWQudHh0CkBAIC00LDIyICs0LDIyIEBAIE9uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFCiAKIAogRGlyZWN0IFRvdWNoZXMKLVBBU1MgYWRqdXN0ZWROb2RlLmlkIGlzICJy
b3RhdGVkRGl2IgotUEFTUyBhZGp1c3RlZE5vZGUuaWQgaXMgInJvdGF0ZWREaXYiCi1QQVNTIGFk
anVzdGVkTm9kZS5pZCBpcyAicm90YXRlZERpdiIKLVBBU1MgYWRqdXN0ZWROb2RlLmlkIGlzICJy
b3RhdGVkRGl2IgotUEFTUyBhZGp1c3RlZE5vZGUuaWQgaXMgInJvdGF0ZWREaXYiCi1QQVNTIGFk
anVzdGVkTm9kZS5pZCBpcyAiY29udGFpbmVyRGl2IgotUEFTUyBhZGp1c3RlZE5vZGUuaWQgaXMg
ImNvbnRhaW5lckRpdiIKLVBBU1MgYWRqdXN0ZWROb2RlLmlkIGlzICJjb250YWluZXJEaXYiCitQ
QVNTIGFkanVzdGVkIG5vZGUgd2FzIERJViNyb3RhdGVkLgorUEFTUyBhZGp1c3RlZCBub2RlIHdh
cyBESVYjcm90YXRlZC4KK1BBU1MgYWRqdXN0ZWQgbm9kZSB3YXMgRElWI3JvdGF0ZWQuCitQQVNT
IGFkanVzdGVkIG5vZGUgd2FzIERJViNyb3RhdGVkLgorUEFTUyBhZGp1c3RlZCBub2RlIHdhcyBE
SVYjcm90YXRlZC4KK1BBU1MgYWRqdXN0ZWQgbm9kZSB3YXMgRElWI2NvbnRhaW5lci4KK1BBU1Mg
YWRqdXN0ZWQgbm9kZSB3YXMgRElWI2NvbnRhaW5lci4KK1BBU1MgYWRqdXN0ZWQgbm9kZSB3YXMg
RElWI2NvbnRhaW5lci4KIAogQWRqdXN0ZWQgVG91Y2hlcwotUEFTUyBhZGp1c3RlZE5vZGUuaWQg
aXMgInJvdGF0ZWREaXYiCi1QQVNTIGFkanVzdGVkTm9kZS5pZCBpcyAicm90YXRlZERpdiIKK1BB
U1MgYWRqdXN0ZWQgbm9kZSB3YXMgRElWI3JvdGF0ZWQuCitQQVNTIGFkanVzdGVkIG5vZGUgd2Fz
IERJViNyb3RhdGVkLgogCiBOZWFyIE1pc3NlcwotUEFTUyBhZGp1c3RlZE5vZGUuaWQgaXMgImNv
bnRhaW5lckRpdiIKLVBBU1MgYWRqdXN0ZWROb2RlLmlkIGlzICJjb250YWluZXJEaXYiCitQQVNT
IGFkanVzdGVkIG5vZGUgd2FzIERJViNjb250YWluZXIuCitQQVNTIGFkanVzdGVkIG5vZGUgd2Fz
IERJViNjb250YWluZXIuCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1Qg
Q09NUExFVEUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RvdWNoYWRqdXN0bWVudC9yb3RhdGVk
LW5vZGUuaHRtbCBiL0xheW91dFRlc3RzL3RvdWNoYWRqdXN0bWVudC9yb3RhdGVkLW5vZGUuaHRt
bAppbmRleCAwNjE5OWNhNmQ3NGJiOTYzOTc4ZjlhOGY5ZWUwNmI3YzRhMzQwMTVjLi4zNDAxNjM3
NWM2MzJiOGU4MTA5MGZlMjcwOWE2MGIyYWM1ZGRkNjMzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy90b3VjaGFkanVzdG1lbnQvcm90YXRlZC1ub2RlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvdG91
Y2hhZGp1c3RtZW50L3JvdGF0ZWQtbm9kZS5odG1sCkBAIC0xLDEwMCArMSw2MSBAQAorPCFET0NU
WVBFIGh0bWw+CiA8aHRtbD4KIDxoZWFkPgotPHN0eWxlPgotICAgICNjb250YWluZXJEaXYgewot
ICAgICAgICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7Ci0gICAgICAgIGJvcmRlcjog
MXB4IHNvbGlkIGJsYWNrOwotICAgICAgICBoZWlnaHQ6IDEwMHB4OwotICAgICAgICBwb3NpdGlv
bjogcmVsYXRpdmU7Ci0gICAgICAgIHdpZHRoOiAxMDBweDsKLSAgICB9Ci0gICAgI3JvdGF0ZWRE
aXYgewotICAgICAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94OwotICAgICAgLXdlYmtp
dC10cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7Ci0gICAgICBib3JkZXI6IDFweCBzb2xpZCBibGFj
azsKLSAgICAgIGhlaWdodDogNDBweDsKLSAgICAgIGxlZnQ6IDEwcHg7Ci0gICAgICBwb3NpdGlv
bjogYWJzb2x1dGU7Ci0gICAgICB0b3A6IDEwcHg7Ci0gICAgICB3aWR0aDogNDBweDsKLSAgICB9
Ci0KLSAgICAjdGVzdERpdiB7Ci0gICAgICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7
Ci0gICAgICBib3JkZXI6IDFweCBzb2xpZCBibGFjazsKLSAgICAgIGhlaWdodDogNDBweDsKLSAg
ICAgIGxlZnQ6IDUwcHg7Ci0gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gICAgICB0b3A6IDQw
cHg7Ci0gICAgICB3aWR0aDogNDBweDsKLSAgICB9Ci0KLTwvc3R5bGU+Ci08c2NyaXB0IHNyYz0i
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorICAgIDx0aXRs
ZT5UZXN0IHRvdWNoIGFkanVzdG1lbnQgdG8gYSBub24tcmVjdGlsaW5lYXIgZWxlbWVudC48L3Rp
dGxlPgorICAgIDxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy90b3VjaGFkanVzdG1lbnQu
anMiPjwvc2NyaXB0PgorICAgIDxzdHlsZT4KKyAgICAgICAgYm9keSB7IG1hcmdpbjogMHB4OyBw
YWRkaW5nOiAwcHg7IH0KKyAgICAgICAgI2NvbnRhaW5lciB7CisgICAgICAgICAgICAtd2Via2l0
LWJveC1zaXppbmc6IGJvcmRlci1ib3g7CisgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7
CisgICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCBibGFjazsKKyAgICAgICAgICAgIGhlaWdo
dDogMTAwcHg7CisgICAgICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAgIH0KKyAgICAgICAg
I3JvdGF0ZWQgeworICAgICAgICAgICAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94Owor
ICAgICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7CisgICAgICAgICAg
ICBib3JkZXI6IDFweCBzb2xpZCBibGFjazsKKyAgICAgICAgICAgIGhlaWdodDogNDBweDsKKyAg
ICAgICAgICAgIGxlZnQ6IDEwcHg7CisgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7Cisg
ICAgICAgICAgICB0b3A6IDEwcHg7CisgICAgICAgICAgICB3aWR0aDogNDBweDsKKyAgICAgICAg
fQorICAgIDwvc3R5bGU+CiAKIDwvaGVhZD4KIAotPGJvZHkgb25sb2FkPSJydW5UZXN0cygpIj4K
Kzxib2R5PgogCi08ZGl2IGlkPSJjb250YWluZXJEaXYiPgotICA8ZGl2IGlkPSJyb3RhdGVkRGl2
Ij48L2Rpdj4KLSAgPCEtLSA8ZGl2IGlkPSJ0ZXN0RGl2Ij48L2Rpdj4gLS0+Cis8ZGl2IGlkPSJj
b250YWluZXIiPgorICAgIDxkaXYgaWQ9InJvdGF0ZWQiPjwvZGl2PgogPC9kaXY+CiAKIDxwIGlk
PSdkZXNjcmlwdGlvbic+PC9wPgogPGRpdiBpZD0nY29uc29sZSc+PC9kaXY+CiAKIDxzY3JpcHQ+
Ci0gICAgdmFyIGFkanVzdGVkTm9kZTsKLSAgICB2YXIgYWRqdXN0ZWRQb2ludDsKLQotICAgIGZ1
bmN0aW9uIG5vZGVBdFRvdWNoKHgsIHksIHJhZGl1cykKLSAgICB7Ci0gICAgICAgIHZhciB0b3Vj
aEFyZWEgPSBnZXRUb3VjaEFyZWEoeCwgeSwgcmFkaXVzKTsKLSAgICAgICAgYWRqdXN0ZWROb2Rl
ID0gaW50ZXJuYWxzLnRvdWNoTm9kZUFkanVzdGVkVG9CZXN0Q2xpY2thYmxlTm9kZSh0b3VjaEFy
ZWEueCwgdG91Y2hBcmVhLnksIHRvdWNoQXJlYS53aWR0aCwgdG91Y2hBcmVhLmhlaWdodCwgZG9j
dW1lbnQpOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIGdldFRvdWNoQXJlYSh4LCB5LCByYWRpdXMp
IHsKLSAgICAgICAgdmFyIG5vZGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29udGFpbmVy
RGl2Jyk7Ci0gICAgICAgIHZhciBwb3MgPSBmaW5kQWJzb2x1dGVQb3NpdGlvbihub2RlKTsKLSAg
ICAgICAgcmV0dXJuIHsKLSAgICAgICAgICAgIHg6IHBvcy5sZWZ0ICsgeCAtIHJhZGl1cywKLSAg
ICAgICAgICAgIHk6IHBvcy50b3AgKyB5IC0gcmFkaXVzLAotICAgICAgICAgICAgd2lkdGg6IDIg
KiByYWRpdXMsCi0gICAgICAgICAgICBoZWlnaHQ6IDIgKiByYWRpdXMKLSAgICAgICAgfTsKLSAg
ICB9Ci0KLSAgICBmdW5jdGlvbiBmaW5kQWJzb2x1dGVQb3NpdGlvbihub2RlKSB7Ci0gICAgICAg
IHZhciBwb3MgPSB7bGVmdDogMCwgdG9wOiAwfTsKLSAgICAgICAgZG8gewotICAgICAgICAgICAg
cG9zLmxlZnQgKz0gbm9kZS5vZmZzZXRMZWZ0OwotICAgICAgICAgICAgcG9zLnRvcCArPSBub2Rl
Lm9mZnNldFRvcDsKLSAgICAgICAgfSB3aGlsZSAobm9kZSA9IG5vZGUub2Zmc2V0UGFyZW50KTsK
LSAgICAgICAgcmV0dXJuIHBvczsKLSAgICB9CisgICAgLy8gU2V0IHVwIHNob3J0Y3V0IGFjY2Vz
cyB0byBlbGVtZW50cworICAgIHZhciBlID0ge307CisgICAgWydjb250YWluZXInLCAncm90YXRl
ZCddLmZvckVhY2goZnVuY3Rpb24oYSkgeworICAgICAgICBlW2FdID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoYSk7CisgICAgfSk7CiAKICAgICBmdW5jdGlvbiB0ZXN0RGlyZWN0VG91Y2hlcygp
CiAgICAgewogICAgICAgICBkZWJ1ZygnRGlyZWN0IFRvdWNoZXMnKTsKLQotICAgICAgICBub2Rl
QXRUb3VjaCgzMCwgMzAsIDIwKTsKLSAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdhZGp1
c3RlZE5vZGUuaWQnLCAncm90YXRlZERpdicpOwotICAgICAgICBub2RlQXRUb3VjaCgyMCwgMzAs
IDIwKTsKLSAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdhZGp1c3RlZE5vZGUuaWQnLCAn
cm90YXRlZERpdicpOwotICAgICAgICBub2RlQXRUb3VjaCg0MCwgMzAsIDIwKTsKLSAgICAgICAg
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdhZGp1c3RlZE5vZGUuaWQnLCAncm90YXRlZERpdicpOwot
ICAgICAgICBub2RlQXRUb3VjaCgzMCwgMjAsIDIwKTsKLSAgICAgICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCdhZGp1c3RlZE5vZGUuaWQnLCAncm90YXRlZERpdicpOwotICAgICAgICBub2RlQXRU
b3VjaCgzMCwgNDAsIDIwKTsKLSAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdhZGp1c3Rl
ZE5vZGUuaWQnLCAncm90YXRlZERpdicpOwotCi0gICAgICAgIG5vZGVBdFRvdWNoKDgwLCA4MCwg
MjApOwotICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2FkanVzdGVkTm9kZS5pZCcsICdj
b250YWluZXJEaXYnKTsKLSAgICAgICAgbm9kZUF0VG91Y2goODAsIDIwLCAyMCk7Ci0gICAgICAg
IHNob3VsZEJlRXF1YWxUb1N0cmluZygnYWRqdXN0ZWROb2RlLmlkJywgJ2NvbnRhaW5lckRpdicp
OwotICAgICAgICBub2RlQXRUb3VjaCgyMCwgODAsIDIwKTsKLSAgICAgICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCdhZGp1c3RlZE5vZGUuaWQnLCAnY29udGFpbmVyRGl2Jyk7CisgICAgICAgIAor
ICAgICAgICB0ZXN0VG91Y2hQb2ludCh0b3VjaFBvaW50KDMwLCAzMCwgMjApLCBlLnJvdGF0ZWQp
OworICAgICAgICB0ZXN0VG91Y2hQb2ludCh0b3VjaFBvaW50KDIwLCAzMCwgMjApLCBlLnJvdGF0
ZWQpOworICAgICAgICB0ZXN0VG91Y2hQb2ludCh0b3VjaFBvaW50KDQwLCAzMCwgMjApLCBlLnJv
dGF0ZWQpOworICAgICAgICB0ZXN0VG91Y2hQb2ludCh0b3VjaFBvaW50KDMwLCAyMCwgMjApLCBl
LnJvdGF0ZWQpOworICAgICAgICB0ZXN0VG91Y2hQb2ludCh0b3VjaFBvaW50KDMwLCA0MCwgMjAp
LCBlLnJvdGF0ZWQpOworCisgICAgICAgIHRlc3RUb3VjaFBvaW50KHRvdWNoUG9pbnQoODAsIDgw
LCAyMCksIGUuY29udGFpbmVyKTsKKyAgICAgICAgdGVzdFRvdWNoUG9pbnQodG91Y2hQb2ludCg4
MCwgMjAsIDIwKSwgZS5jb250YWluZXIpOworICAgICAgICB0ZXN0VG91Y2hQb2ludCh0b3VjaFBv
aW50KDIwLCA4MCwgMjApLCBlLmNvbnRhaW5lcik7CiAgICAgfQogCiAgICAgZnVuY3Rpb24gdGVz
dEFkanVzdGVkVG91Y2hlcygpCkBAIC0xMDIsMzUgKzYzLDMxIEBACiAgICAgICAgIGRlYnVnKCdc
bkFkanVzdGVkIFRvdWNoZXMnKTsKIAogICAgICAgICAvLyBUb3VjaCBvdmVybGFwcyBjZW50ZXIg
b2YgZWxlbWVudC4KLSAgICAgICAgbm9kZUF0VG91Y2goMTAsIDEwLCAzMCk7Ci0gICAgICAgIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygnYWRqdXN0ZWROb2RlLmlkJywgJ3JvdGF0ZWREaXYnKTsKKyAg
ICAgICAgdGVzdFRvdWNoUG9pbnQodG91Y2hQb2ludCgxMCwgMTAsIDMwKSwgZS5yb3RhdGVkKTsK
IAogICAgICAgICAvLyBUb3VjaCBvdmVybGFwcyBjb3JuZXIgb2YgZWxlbWVudC4KLSAgICAgICAg
bm9kZUF0VG91Y2goMjAsIDAsIDIwKTsKLSAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdh
ZGp1c3RlZE5vZGUuaWQnLCAncm90YXRlZERpdicpOworICAgICAgICB0ZXN0VG91Y2hQb2ludCh0
b3VjaFBvaW50KDIwLCAwLCAyMCksIGUucm90YXRlZCk7CiAKICAgICAgICAgZGVidWcoJ1xuTmVh
ciBNaXNzZXMnKTsKIAogICAgICAgICAvLyBUb3VjaCBvdmVybGFwcyBib3VuZGluZy1ib3ggb2Yg
ZWxlbWVudCwgYnV0IG5vdCB0aGUgYWN0dWFsIGJvdW5kcy4KLSAgICAgICAgbm9kZUF0VG91Y2go
NzAsIDAsIDIwKTsKLSAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdhZGp1c3RlZE5vZGUu
aWQnLCAnY29udGFpbmVyRGl2Jyk7Ci0gICAgICAgIG5vZGVBdFRvdWNoKDcwLCA2MCwgMjApOwot
ICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2FkanVzdGVkTm9kZS5pZCcsICdjb250YWlu
ZXJEaXYnKTsKKyAgICAgICAgdGVzdFRvdWNoUG9pbnQodG91Y2hQb2ludCg3MCwgMCwgMjApLCBl
LmNvbnRhaW5lcik7CisgICAgICAgIHRlc3RUb3VjaFBvaW50KHRvdWNoUG9pbnQoNzAsIDYwLCAy
MCksIGUuY29udGFpbmVyKTsKICAgICB9CiAKICAgICBmdW5jdGlvbiBydW5UZXN0cygpCiAgICAg
ewogICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKCkg
e30sIGZhbHNlKTsKICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyICYmIHdpbmRvdy5pbnRl
cm5hbHMgJiYgaW50ZXJuYWxzLnRvdWNoTm9kZUFkanVzdGVkVG9CZXN0Q2xpY2thYmxlTm9kZSkg
ewotICAgICAgICAgICAgZGVzY3JpcHRpb24oJ1Rlc3QgdG91Y2ggYWRqdXN0bWVudCB0byBhIG5v
bi1yZWN0aWxpbmVhciBlbGVtZW50LicpOwotICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNU
ZXh0KCk7Ci0gICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAg
ICAgIGRlc2NyaXB0aW9uKGRvY3VtZW50LnRpdGxlKTsKICAgICAgICAgICAgIHRlc3REaXJlY3RU
b3VjaGVzKCk7CiAgICAgICAgICAgICB0ZXN0QWRqdXN0ZWRUb3VjaGVzKCk7Ci0gICAgICAgICAg
ICBpc1N1Y2Nlc3NmdWxseVBhcnNlZCgpOwotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlE
b25lKCk7CisgICAgICAgICAgICBlLmNvbnRhaW5lci5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwog
ICAgICAgICB9CiAgICAgfQorICAgIHJ1blRlc3RzKCk7CiA8L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorCiA8L2Jv
ZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90b3VjaGFkanVzdG1lbnQvc2Ny
b2xsLW9mZnNldC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90b3VjaGFkanVzdG1lbnQvc2Ny
b2xsLW9mZnNldC1leHBlY3RlZC50eHQKaW5kZXggZjkyNGNjOTUzMGMxODdjZDdiODllYzdhZWZl
ZjAwNTlkMzA2MjVkOS4uMDljNjVjYjMwZmY0NDljM2FlZDlkZWJmNWFiMGM3MmY4Mjk0ZjE1MSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50L3Njcm9sbC1vZmZzZXQtZXhw
ZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3RvdWNoYWRqdXN0bWVudC9zY3JvbGwtb2Zmc2V0
LWV4cGVjdGVkLnR4dApAQCAtMSwxOSArMSwxNyBAQAotTGluayAwCi1MaW5rIDEKIFRlc3QgdG91
Y2ggYWRqdXN0bWVudCB3aGVuIG1haW4gZnJhbWUgaXMgc2Nyb2xsIG9mZnNldC4KIAogT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgogCiAKK1BBU1MgYWRqdXN0ZWQgbm9kZSB3YXMgQSNhMC4KK1BB
U1MgYWRqdXN0ZWQgbm9kZSB3YXMgQSNhMS4KK1BBU1MgYWRqdXN0ZWRQb2ludCBpcyBub24tbnVs
bC4KK1BBU1MgYWRqdXN0ZWROb2RlIGlzIGUuYTAKK1BBU1MgYWRqdXN0ZWRQb2ludCBpcyBub24t
bnVsbC4KK1BBU1MgYWRqdXN0ZWROb2RlIGlzIGUuYTEKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKIAogVEVTVCBDT01QTEVURQotUEFTUyBhZGp1c3RlZE5vZGUuaWQgaXMgImEwIgot
UEFTUyBhZGp1c3RlZE5vZGUuaWQgaXMgImExIgotUEFTUyBhZGp1c3RlZFBvaW50IGlzIG5vbi1u
dWxsLgotUEFTUyBhZGp1c3RlZE5vZGUuaWQgaXMgImEwIgotUEFTUyBhZGp1c3RlZFBvaW50IGlz
IG5vbi1udWxsLgotUEFTUyBhZGp1c3RlZE5vZGUuaWQgaXMgImExIgogUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy90b3VjaGFkanVzdG1lbnQvc2Nyb2xsLW9mZnNldC5odG1sIGIvTGF5b3V0VGVzdHMvdG91Y2hh
ZGp1c3RtZW50L3Njcm9sbC1vZmZzZXQuaHRtbAppbmRleCAzMDE1Njk2ZmNmM2VjYTI3ZmQ3NmJi
ZWM2MDA4NjU4YjE4ZTAxNTgxLi41MGQxMzBhZWYwZmUwYjkxMjE2MTQ4MTI3YzdiOTM5ZTg4Mjdl
NDAyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy90b3VjaGFkanVzdG1lbnQvc2Nyb2xsLW9mZnNl
dC5odG1sCisrKyBiL0xheW91dFRlc3RzL3RvdWNoYWRqdXN0bWVudC9zY3JvbGwtb2Zmc2V0Lmh0
bWwKQEAgLTEsNiArMSw5IEBACis8IURPQ1RZUEUgaHRtbD4KIDxodG1sPgogPGhlYWQ+CisgICAg
PHRpdGxlPlRlc3QgdG91Y2ggYWRqdXN0bWVudCB3aGVuIG1haW4gZnJhbWUgaXMgc2Nyb2xsIG9m
ZnNldC48L3RpdGxlPgogICAgIDxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy90b3VjaGFk
anVzdG1lbnQuanMiPjwvc2NyaXB0PgogICAgIDxzdHlsZT4KICAgICAgICAgI3Njcm9sbG9mZnNl
dGNvbnRhaW5lciB7CiAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CkBAIC0xNCw3ICsx
Nyw3IEBACiAgICAgICAgICNkaXYxIHsgbWFyZ2luLWxlZnQ6IDEwcHg7IGhlaWdodDogMTAwcHg7
IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IH0KICAgICA8L3N0eWxlPgogPC9oZWFkPgotPGJvZHkg
b25sb2FkPSJydW5UZXN0cygpIj4KKzxib2R5PgogCiA8ZGl2IGlkPXNjcm9sbG9mZnNldGNvbnRh
aW5lcj4KICAgICA8ZGl2IGlkPWRpdjA+CkBAIC0zMSwxNyArMzQsMTIgQEAKIDxzY3JpcHQ+CiAg
ICAgdmFyIGFkanVzdGVkTm9kZTsKICAgICB2YXIgYWRqdXN0ZWRQb2ludDsKLSAgICBmdW5jdGlv
biBub2RlQXRUb3VjaCh4LCB5LCByYWRpdXMpCi0gICAgewotICAgICAgICB2YXIgeCA9IHggLSBy
YWRpdXM7Ci0gICAgICAgIHZhciB5ID0geSAtIHJhZGl1czsKLSAgICAgICAgdmFyIHdpZHRoID0g
cmFkaXVzICogMjsKLSAgICAgICAgdmFyIGhlaWdodCA9IHJhZGl1cyAqIDI7Ci0gICAgICAgIHZh
ciBhZGp1c3RlZE5vZGUgPSBpbnRlcm5hbHMudG91Y2hOb2RlQWRqdXN0ZWRUb0Jlc3RDbGlja2Fi
bGVOb2RlKHgsIHksIHdpZHRoLCBoZWlnaHQsIGRvY3VtZW50KTsKLSAgICAgICAgaWYgKGFkanVz
dGVkTm9kZSAmJiBhZGp1c3RlZE5vZGUubm9kZVR5cGUgPT0gMykgLy8gVEVYVCBub2RlCi0gICAg
ICAgICAgICBhZGp1c3RlZE5vZGUgPSBhZGp1c3RlZE5vZGUucGFyZW50Tm9kZTsKLSAgICAgICAg
cmV0dXJuIGFkanVzdGVkTm9kZTsKLSAgICB9CisgICAgLy8gU2V0IHVwIHNob3J0Y3V0IGFjY2Vz
cyB0byBlbGVtZW50cworICAgIHZhciBlID0ge307CisgICAgWydzY3JvbGxvZmZzZXRjb250YWlu
ZXInLCAnZGl2MCcsICdkaXYxJywgJ2EwJywgJ2ExJ10uZm9yRWFjaChmdW5jdGlvbihhKSB7Cisg
ICAgICAgIGVbYV0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChhKTsKKyAgICB9KTsKKwogICAg
IGZ1bmN0aW9uIGFkanVzdGVkUG9pbnRBdFRvdWNoKHgsIHksIHJhZGl1cykKICAgICB7CiAgICAg
ICAgIHZhciB4ID0geCAtIHJhZGl1czsKQEAgLTU0LDM4ICs1MiwzNCBAQAogCiAgICAgZnVuY3Rp
b24gdGVzdERpcmVjdFRvdWNoZXMoKQogICAgIHsKLSAgICAgICAgYWRqdXN0ZWROb2RlID0gbm9k
ZUF0VG91Y2goNDAsIDEzMCwgNTApOwotICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2Fk
anVzdGVkTm9kZS5pZCcsICdhMCcpOwotCi0gICAgICAgIGFkanVzdGVkTm9kZSA9IG5vZGVBdFRv
dWNoKDMwLCAyMzAsIDUwKTsKLSAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdhZGp1c3Rl
ZE5vZGUuaWQnLCAnYTEnKTsKKyAgICAgICAgdGVzdFRvdWNoUG9pbnQodG91Y2hQb2ludCg0MCwg
MTMwLCA1MCksIGUuYTApOworICAgICAgICB0ZXN0VG91Y2hQb2ludCh0b3VjaFBvaW50KDMwLCAy
MzAsIDUwKSwgZS5hMSk7CiAgICAgfQogICAgIGZ1bmN0aW9uIHRlc3RBZGp1c3RlZFRvdWNoZXMo
KQogICAgIHsKICAgICAgICAgYWRqdXN0ZWRQb2ludCA9IGFkanVzdGVkUG9pbnRBdFRvdWNoKDEw
LCAxMjAsIDgwKTsKLSAgICAgICAgc2hvdWxkQmVOb25OdWxsKCdhZGp1c3RlZFBvaW50JywgbnVs
bCk7CisgICAgICAgIHNob3VsZEJlTm9uTnVsbCgnYWRqdXN0ZWRQb2ludCcpOwogICAgICAgICBh
ZGp1c3RlZE5vZGUgPSBkb2N1bWVudC5lbGVtZW50RnJvbVBvaW50KGFkanVzdGVkUG9pbnQueCwg
YWRqdXN0ZWRQb2ludC55KTsKLSAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdhZGp1c3Rl
ZE5vZGUuaWQnLCAnYTAnKTsKKyAgICAgICAgc2hvdWxkQmUoJ2FkanVzdGVkTm9kZScsICdlLmEw
Jyk7CiAKICAgICAgICAgYWRqdXN0ZWRQb2ludCA9IGFkanVzdGVkUG9pbnRBdFRvdWNoKDUsIDIy
MCwgODApOwotICAgICAgICBzaG91bGRCZU5vbk51bGwoJ2FkanVzdGVkUG9pbnQnLCBudWxsKTsK
KyAgICAgICAgc2hvdWxkQmVOb25OdWxsKCdhZGp1c3RlZFBvaW50Jyk7CiAgICAgICAgIGFkanVz
dGVkTm9kZSA9IGRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQoYWRqdXN0ZWRQb2ludC54LCBhZGp1
c3RlZFBvaW50LnkpOwotICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2FkanVzdGVkTm9k
ZS5pZCcsICdhMScpOworICAgICAgICBzaG91bGRCZSgnYWRqdXN0ZWROb2RlJywgJ2UuYTEnKTsK
ICAgICB9CiAKICAgICBmdW5jdGlvbiBydW5UZXN0cygpCiAgICAgewogICAgICAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIgJiYgd2luZG93LmludGVybmFscyAmJiBpbnRlcm5hbHMudG91Y2hOb2Rl
QWRqdXN0ZWRUb0Jlc3RDbGlja2FibGVOb2RlKSB7Ci0gICAgICAgICAgICBkZXNjcmlwdGlvbign
VGVzdCB0b3VjaCBhZGp1c3RtZW50IHdoZW4gbWFpbiBmcmFtZSBpcyBzY3JvbGwgb2Zmc2V0Licp
OwotICAgICAgICAgICAgd2luZG93LnNjcm9sbEJ5KDAsNDAwKTsKLSAgICAgICAgICAgIHRlc3RS
dW5uZXIuZHVtcEFzVGV4dCgpOwotICAgICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25l
KCk7CisJICAgIGRlc2NyaXB0aW9uKGRvY3VtZW50LnRpdGxlKTsKKwkgICAgd2luZG93LnNjcm9s
bEJ5KDAsNDAwKTsKICAgICAgICAgICAgIHRlc3REaXJlY3RUb3VjaGVzKCk7CiAgICAgICAgICAg
ICB0ZXN0QWRqdXN0ZWRUb3VjaGVzKCk7CiAgICAgICAgICAgICBpc1N1Y2Nlc3NmdWxseVBhcnNl
ZCgpOwotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisJICAgIGUuc2Nyb2xs
b2Zmc2V0Y29udGFpbmVyLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICAgICAgIH0KICAgICB9
CisgICAgcnVuVGVzdHMoKTsKIDwvc2NyaXB0PgogCiA8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3RvdWNoYWRqdXN0bWVudC9zZWFyY2gtY2FuY2VsLmh0bWwgYi9MYXlvdXRUZXN0cy90b3Vj
aGFkanVzdG1lbnQvc2VhcmNoLWNhbmNlbC5odG1sCmluZGV4IDkxNzM3ZWMzMjE0YTBkYjE3NGNh
MGU0MTQ2NWJhZjcyODQ4YmM3MTIuLjFkYjhmZTIyYWI0ZmM4OWQzNzBlOGQ5NzViMGE1ZmM5YmNm
NTkzMDIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3RvdWNoYWRqdXN0bWVudC9zZWFyY2gtY2Fu
Y2VsLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50L3NlYXJjaC1jYW5jZWwu
aHRtbApAQCAtMSwzMSArMSwzMyBAQAorPCFET0NUWVBFIGh0bWw+CiA8aHRtbD4KIDxoZWFkPgot
PHN0eWxlPgotICAgIGlucHV0W3R5cGU9J3NlYXJjaCddIHsKLSAgICAgIC13ZWJraXQtYXBwZWFy
YW5jZTogbm9uZTsKLSAgICAgIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDsKLSAgICAg
IGJvcmRlcjogMXB4IHNvbGlkICM5OTk7Ci0gICAgICBwYWRkaW5nOiA1cHg7Ci0gICAgfQotCi0g
ICAgaW5wdXRbdHlwZT0nc2VhcmNoJ106Oi13ZWJraXQtc2VhcmNoLWNhbmNlbC1idXR0b24gewot
ICAgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOwotICAgICAgLXdlYmtpdC1ib3gtc2l6aW5n
OiBib3JkZXItYm94OwotICAgICAgYmFja2dyb3VuZDogIzk5OTsKLSAgICAgIGhlaWdodDogMTBw
eDsKLSAgICAgIG1hcmdpbjogMDsKLSAgICAgIHBhZGRpbmc6IDA7Ci0gICAgICB3aWR0aDogMTBw
eDsKLSAgICB9Ci08L3N0eWxlPgotPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKyAgICA8dGl0bGU+VGVzdCB0b3VjaCBhZGp1c3RtZW50
IG9uIGEgc2VhcmNoIGZpZWxkIHdpdGggYSB2aXNpYmxlIGNhbmNlbCBidXR0b24uPC90aXRsZT4K
KyAgICA8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdG91Y2hhZGp1c3RtZW50LmpzIj48
L3NjcmlwdD4KKyAgICA8c3R5bGU+CisgICAgICAgIGlucHV0W3R5cGU9J3NlYXJjaCddIHsKKyAg
ICAgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOworICAgICAgICAtd2Via2l0LWJveC1zaXpp
bmc6IGJvcmRlci1ib3g7CisgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICM5OTk7CisgICAgICAg
IHBhZGRpbmc6IDVweDsKKyAgICAgICAgfQogCisgICAgICAgIGlucHV0W3R5cGU9J3NlYXJjaCdd
Ojotd2Via2l0LXNlYXJjaC1jYW5jZWwtYnV0dG9uIHsKKyAgICAgICAgLXdlYmtpdC1hcHBlYXJh
bmNlOiBub25lOworICAgICAgICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7CisgICAg
ICAgIGJhY2tncm91bmQ6ICM5OTk7CisgICAgICAgIGhlaWdodDogMTBweDsKKyAgICAgICAgbWFy
Z2luOiAwOworICAgICAgICBwYWRkaW5nOiAwOworICAgICAgICB3aWR0aDogMTBweDsKKyAgICAg
ICAgfQorICAgIDwvc3R5bGU+CiA8L2hlYWQ+CiAKLTxib2R5IG9ubG9hZD0icnVuVGVzdHMoKSI+
Cis8Ym9keT4KIAogPGRpdj4KLSAgPGlucHV0IGlkPSJ0YXJnZXQiIHR5cGU9InNlYXJjaCIgdmFs
dWU9ImFiY2QiLz4KKyAgPGlucHV0IGlkPSJ0YXJnZXQiIHR5cGU9InNlYXJjaCIgdmFsdWU9ImFi
Y2QiPgogPC9kaXY+CiAKIDxwIGlkPSdkZXNjcmlwdGlvbic+PC9wPgpAQCAtNDMsNTAgKzQ1LDMw
IEBACiAgICAgdmFyIHRhcmdldENvbnRhaW5zUG9pbnQ7CiAgICAgdmFyIHRvdWNoQ29udGFpbnNQ
b2ludDsKIAotICAgIGZ1bmN0aW9uIGZpbmRBYnNvbHV0ZVBvc2l0aW9uKG5vZGUpIHsKLSAgICAg
ICAgdmFyIHBvcyA9IHtsZWZ0OiAwLCB0b3A6IDB9OwotICAgICAgICBkbyB7Ci0gICAgICAgICAg
ICBwb3MubGVmdCArPSBub2RlLm9mZnNldExlZnQ7Ci0gICAgICAgICAgICBwb3MudG9wICs9IG5v
ZGUub2Zmc2V0VG9wOwotICAgICAgICB9IHdoaWxlIChub2RlID0gbm9kZS5vZmZzZXRQYXJlbnQp
OwotICAgICAgICByZXR1cm4gcG9zOwotICAgIH0KLQogICAgIGZ1bmN0aW9uIHJ1blRvdWNoVGVz
dHMoKSB7CiAgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rp
b24oKSB7fSwgZmFsc2UpOwogCiAgICAgICAgIGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgndGFyZ2V0Jyk7Ci0gICAgICAgIHZhciBwb3MgPSBmaW5kQWJzb2x1dGVQb3NpdGlvbihl
bGVtZW50KTsKLQotICAgICAgICB2YXIgeCA9IHBvcy5sZWZ0OwotICAgICAgICB2YXIgeSA9IHBv
cy50b3A7Ci0gICAgICAgIHZhciB3aWR0aCA9IGVsZW1lbnQuY2xpZW50V2lkdGg7Ci0gICAgICAg
IHZhciBoZWlnaHQgPSBlbGVtZW50LmNsaWVudEhlaWdodDsKLQotICAgICAgICBpbnB1dEJvdW5k
cyA9IHsKLSAgICAgICAgICAgIHg6IHgsCi0gICAgICAgICAgICB5OiB5LAotICAgICAgICAgICAg
d2lkdGg6IHdpZHRoLAotICAgICAgICAgICAgaGVpZ2h0OiBoZWlnaHQKLSAgICAgICAgfTsKKyAg
ICAgICAgCisgICAgICAgIGlucHV0Qm91bmRzID0gZmluZEFic29sdXRlQm91bmRzKGVsZW1lbnQp
OwogCiAgICAgICAgIHZhciB0b3VjaFJhZGl1cyA9IDIwOwogICAgICAgICB2YXIgb2Zmc2V0ID0g
dG91Y2hSYWRpdXMgLyAyOwogCiAgICAgICAgIC8vIENlbnRlciBvZiBjYW5jZWwgYnV0dG9uLgot
ICAgICAgICB2YXIgbWlkWCA9IHggKyB3aWR0aCAtIDExOwotICAgICAgICB2YXIgbWlkWSA9IHkg
KyBoZWlnaHQgLyAyOworICAgICAgICB2YXIgbWlkWCA9IGlucHV0Qm91bmRzLmxlZnQgKyBpbnB1
dEJvdW5kcy53aWR0aCAtIDExOworICAgICAgICB2YXIgbWlkWSA9IGlucHV0Qm91bmRzLnRvcCAr
IGlucHV0Qm91bmRzLmhlaWdodCAvIDI7CiAKICAgICAgICAgY2FuY2VsQm91bmRzID0gewotICAg
ICAgICAgICAgeDogbWlkWCAtIDUsCi0gICAgICAgICAgICB5OiBtaWRZIC0gNSwKKyAgICAgICAg
ICAgIGxlZnQ6IG1pZFggLSA1LAorICAgICAgICAgICAgdG9wOiBtaWRZIC0gNSwKICAgICAgICAg
ICAgIHdpZHRoOiAxMCwKICAgICAgICAgICAgIGhlaWdodDogMTAKICAgICAgICAgfTsKIAogICAg
ICAgICB0ZXh0Q29udGVudEJvdW5kcyA9IHsKLSAgICAgICAgICAgeDogaW5wdXRCb3VuZHMueCwK
LSAgICAgICAgICAgeTogaW5wdXRCb3VuZHMueSwKKyAgICAgICAgICAgbGVmdDogaW5wdXRCb3Vu
ZHMubGVmdCwKKyAgICAgICAgICAgdG9wOiBpbnB1dEJvdW5kcy50b3AsCiAgICAgICAgICAgIHdp
ZHRoOiBpbnB1dEJvdW5kcy53aWR0aCAtIDE2LAogICAgICAgICAgICBoZWlnaHQ6IGlucHV0Qm91
bmRzLmhlaWdodAogICAgICAgICB9OwpAQCAtMTEwLDEyICs5MiwxMiBAQAogICAgICAgICB0YXJn
ZXRCb3VuZHMgPSBib3VuZHM7CiAKICAgICAgICAgdG91Y2hCb3VuZHMgPSB7Ci0gICAgICAgICAg
ICB4OiB0b3VjaFggLSByYWRpdXMsCi0gICAgICAgICAgICB5OiB0b3VjaFkgLSByYWRpdXMsCisg
ICAgICAgICAgICBsZWZ0OiB0b3VjaFggLSByYWRpdXMsCisgICAgICAgICAgICB0b3A6IHRvdWNo
WSAtIHJhZGl1cywKICAgICAgICAgICAgIHdpZHRoOiAyICogcmFkaXVzLAogICAgICAgICAgICAg
aGVpZ2h0OiAyICogcmFkaXVzCiAgICAgICAgIH07Ci0gICAgICAgIGFkanVzdGVkUG9pbnQgPSBp
bnRlcm5hbHMudG91Y2hQb3NpdGlvbkFkanVzdGVkVG9CZXN0Q2xpY2thYmxlTm9kZSh0b3VjaEJv
dW5kcy54LCB0b3VjaEJvdW5kcy55LCB0b3VjaEJvdW5kcy53aWR0aCwgdG91Y2hCb3VuZHMuaGVp
Z2h0LCBkb2N1bWVudCk7CisgICAgICAgIGFkanVzdGVkUG9pbnQgPSBpbnRlcm5hbHMudG91Y2hQ
b3NpdGlvbkFkanVzdGVkVG9CZXN0Q2xpY2thYmxlTm9kZSh0b3VjaEJvdW5kcy5sZWZ0LCB0b3Vj
aEJvdW5kcy50b3AsIHRvdWNoQm91bmRzLndpZHRoLCB0b3VjaEJvdW5kcy5oZWlnaHQsIGRvY3Vt
ZW50KTsKICAgICAgICAgdGFyZ2V0Q29udGFpbnNQb2ludCA9IGNvbnRhaW5zUG9pbnQodGFyZ2V0
Qm91bmRzLCBhZGp1c3RlZFBvaW50KTsKICAgICAgICAgdG91Y2hDb250YWluc1BvaW50ID0gY29u
dGFpbnNQb2ludCh0b3VjaEJvdW5kcywgYWRqdXN0ZWRQb2ludCk7CiAgICAgICAgIHNob3VsZEJl
VHJ1ZSgndGFyZ2V0Q29udGFpbnNQb2ludCcpOwpAQCAtMTIzLDIwICsxMDUsMTggQEAKICAgICB9
CiAKICAgICBmdW5jdGlvbiBjb250YWluc1BvaW50KGJvdW5kcywgcG9pbnQpIHsKLSAgICAgICAg
cmV0dXJuIGJvdW5kcy54IDw9IHBvaW50LnggJiYgYm91bmRzLnkgPD0gcG9pbnQueSAmJiBib3Vu
ZHMueCArIGJvdW5kcy53aWR0aCA+PSBwb2ludC54ICYmIGJvdW5kcy55ICsgYm91bmRzLmhlaWdo
dCA+PSBwb2ludC55OworICAgICAgICByZXR1cm4gYm91bmRzLmxlZnQgPD0gcG9pbnQueCAmJiBi
b3VuZHMudG9wIDw9IHBvaW50LnkgJiYgYm91bmRzLmxlZnQgKyBib3VuZHMud2lkdGggPj0gcG9p
bnQueCAmJiBib3VuZHMubGVmdCArIGJvdW5kcy5oZWlnaHQgPj0gcG9pbnQueTsKICAgICB9CiAK
ICAgICBmdW5jdGlvbiBydW5UZXN0cygpCiAgICAgewogICAgICAgICBpZiAod2luZG93LnRlc3RS
dW5uZXIgJiYgd2luZG93LmludGVybmFscyAmJiBpbnRlcm5hbHMudG91Y2hOb2RlQWRqdXN0ZWRU
b0Jlc3RDbGlja2FibGVOb2RlKSB7Ci0gICAgICAgICAgICBkZXNjcmlwdGlvbignVGVzdCB0b3Vj
aCBhZGp1c3RtZW50IG9uIGEgc2VhcmNoIGZpZWxkIHdpdGggYSB2aXNpYmxlIGNhbmNlbCBidXR0
b24uJyk7Ci0gICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKLSAgICAgICAgICAg
IHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICAgICAgZGVzY3JpcHRpb24oZG9j
dW1lbnQudGl0bGUpOwogICAgICAgICAgICAgcnVuVG91Y2hUZXN0cygpOwotICAgICAgICAgICAg
aXNTdWNjZXNzZnVsbHlQYXJzZWQoKTsKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9u
ZSgpOwogICAgICAgICB9CiAgICAgfQorICAgIHJ1blRlc3RzKCk7CiA8L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgog
PC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50
L3NtYWxsLXRhcmdldC10ZXN0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RvdWNoYWRqdXN0
bWVudC9zbWFsbC10YXJnZXQtdGVzdC1leHBlY3RlZC50eHQKaW5kZXggYTQ4OTI5ZjNlZWNmNzgz
NmM4M2UxZjcyNDFkOTVjYzYzOWQ2NGZiYi4uNjU5MDMyMTY5NjdmZWJlZjVjMTRmMjZlYzY0NDNm
YjhiYTFhZTE0MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50L3NtYWxs
LXRhcmdldC10ZXN0LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy90b3VjaGFkanVzdG1l
bnQvc21hbGwtdGFyZ2V0LXRlc3QtZXhwZWN0ZWQudHh0CkBAIC0xLDQzICsxLDQwIEBACi0gIAot
IAotIAogVGVzdHMgaWYgc21hbGwgY2xpY2thYmxlIHRhcmdldHMgYWRqYWNlbnQgdG8gbGFyZ2Vy
IGNsaWNrYWJsZSBjb250cm9scyBhcmUgcHJvcGVybHkgdGFyZ2V0dGVkIHdpdGggdG91Y2ggYWRq
dXN0bWVudC4KIAogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCiAKIFRlc3Rpbmcgc21hbGwg
ZGlyZWN0IGhpdHMuCi1QQVNTIGFkanVzdGVkTm9kZS5pZCBpcyAiY2hlY2siCi1QQVNTIGFkanVz
dGVkTm9kZS5pZCBpcyAidGFzayIKLVBBU1MgYWRqdXN0ZWROb2RlLmlkIGlzICJpdGVtLWxhYmVs
IgotUEFTUyBhZGp1c3RlZE5vZGUuaWQgaXMgInJlbW92ZS1idXR0b24iCi1QQVNTIGFkanVzdGVk
Tm9kZS5pZCBpcyAiY29tYm8tbGFiZWwiCi1QQVNTIGFkanVzdGVkTm9kZS5pZCBpcyAiZHJvcC1k
b3duLXNlbGVjdG9yIgorUEFTUyBhZGp1c3RlZCBub2RlIHdhcyBESVYjY2hlY2suCitQQVNTIGFk
anVzdGVkIG5vZGUgd2FzIElOUFVUI3Rhc2suCitQQVNTIGFkanVzdGVkIG5vZGUgd2FzIElOUFVU
I2l0ZW0tbGFiZWwuCitQQVNTIGFkanVzdGVkIG5vZGUgd2FzIERJViNyZW1vdmUtYnV0dG9uLgor
UEFTUyBhZGp1c3RlZCBub2RlIHdhcyBESVYjY29tYm8tbGFiZWwuCitQQVNTIGFkanVzdGVkIG5v
ZGUgd2FzIERJViNkcm9wLWRvd24tc2VsZWN0b3IuCiBUZXN0aW5nIGluZGlyZWN0IGhpdHMuCi1Q
QVNTIGFkanVzdGVkTm9kZS5pZCBpcyAiY2hlY2siCi1QQVNTIGFkanVzdGVkTm9kZS5pZCBpcyAi
Y2hlY2siCi1QQVNTIGFkanVzdGVkTm9kZS5pZCBpcyAiY2hlY2siCi1QQVNTIGFkanVzdGVkTm9k
ZS5pZCBpcyAiY2hlY2siCi1QQVNTIGFkanVzdGVkTm9kZS5pZCBpcyAiY2hlY2siCi1QQVNTIGFk
anVzdGVkTm9kZS5pZCBpcyAiY2hlY2siCi1QQVNTIGFkanVzdGVkTm9kZS5pZCBpcyAiY2hlY2si
Ci1QQVNTIGFkanVzdGVkTm9kZS5pZCBpcyAiY2hlY2siCi1QQVNTIGFkanVzdGVkTm9kZS5pZCBp
cyAicmVtb3ZlLWJ1dHRvbiIKLVBBU1MgYWRqdXN0ZWROb2RlLmlkIGlzICJyZW1vdmUtYnV0dG9u
IgotUEFTUyBhZGp1c3RlZE5vZGUuaWQgaXMgInJlbW92ZS1idXR0b24iCi1QQVNTIGFkanVzdGVk
Tm9kZS5pZCBpcyAicmVtb3ZlLWJ1dHRvbiIKLVBBU1MgYWRqdXN0ZWROb2RlLmlkIGlzICJyZW1v
dmUtYnV0dG9uIgotUEFTUyBhZGp1c3RlZE5vZGUuaWQgaXMgInJlbW92ZS1idXR0b24iCi1QQVNT
IGFkanVzdGVkTm9kZS5pZCBpcyAicmVtb3ZlLWJ1dHRvbiIKLVBBU1MgYWRqdXN0ZWROb2RlLmlk
IGlzICJyZW1vdmUtYnV0dG9uIgotUEFTUyBhZGp1c3RlZE5vZGUuaWQgaXMgImRyb3AtZG93bi1z
ZWxlY3RvciIKLVBBU1MgYWRqdXN0ZWROb2RlLmlkIGlzICJkcm9wLWRvd24tc2VsZWN0b3IiCi1Q
QVNTIGFkanVzdGVkTm9kZS5pZCBpcyAiZHJvcC1kb3duLXNlbGVjdG9yIgotUEFTUyBhZGp1c3Rl
ZE5vZGUuaWQgaXMgImRyb3AtZG93bi1zZWxlY3RvciIKLVBBU1MgYWRqdXN0ZWROb2RlLmlkIGlz
ICJkcm9wLWRvd24tc2VsZWN0b3IiCi1QQVNTIGFkanVzdGVkTm9kZS5pZCBpcyAiZHJvcC1kb3du
LXNlbGVjdG9yIgotUEFTUyBhZGp1c3RlZE5vZGUuaWQgaXMgImRyb3AtZG93bi1zZWxlY3RvciIK
LVBBU1MgYWRqdXN0ZWROb2RlLmlkIGlzICJkcm9wLWRvd24tc2VsZWN0b3IiCitQQVNTIGFkanVz
dGVkIG5vZGUgd2FzIERJViNjaGVjay4KK1BBU1MgYWRqdXN0ZWQgbm9kZSB3YXMgRElWI2NoZWNr
LgorUEFTUyBhZGp1c3RlZCBub2RlIHdhcyBESVYjY2hlY2suCitQQVNTIGFkanVzdGVkIG5vZGUg
d2FzIERJViNjaGVjay4KK1BBU1MgYWRqdXN0ZWQgbm9kZSB3YXMgRElWI2NoZWNrLgorUEFTUyBh
ZGp1c3RlZCBub2RlIHdhcyBESVYjY2hlY2suCitQQVNTIGFkanVzdGVkIG5vZGUgd2FzIERJViNj
aGVjay4KK1BBU1MgYWRqdXN0ZWQgbm9kZSB3YXMgRElWI2NoZWNrLgorUEFTUyBhZGp1c3RlZCBu
b2RlIHdhcyBESVYjcmVtb3ZlLWJ1dHRvbi4KK1BBU1MgYWRqdXN0ZWQgbm9kZSB3YXMgRElWI3Jl
bW92ZS1idXR0b24uCitQQVNTIGFkanVzdGVkIG5vZGUgd2FzIERJViNyZW1vdmUtYnV0dG9uLgor
UEFTUyBhZGp1c3RlZCBub2RlIHdhcyBESVYjcmVtb3ZlLWJ1dHRvbi4KK1BBU1MgYWRqdXN0ZWQg
bm9kZSB3YXMgRElWI3JlbW92ZS1idXR0b24uCitQQVNTIGFkanVzdGVkIG5vZGUgd2FzIERJViNy
ZW1vdmUtYnV0dG9uLgorUEFTUyBhZGp1c3RlZCBub2RlIHdhcyBESVYjcmVtb3ZlLWJ1dHRvbi4K
K1BBU1MgYWRqdXN0ZWQgbm9kZSB3YXMgRElWI3JlbW92ZS1idXR0b24uCitQQVNTIGFkanVzdGVk
IG5vZGUgd2FzIERJViNkcm9wLWRvd24tc2VsZWN0b3IuCitQQVNTIGFkanVzdGVkIG5vZGUgd2Fz
IERJViNkcm9wLWRvd24tc2VsZWN0b3IuCitQQVNTIGFkanVzdGVkIG5vZGUgd2FzIERJViNkcm9w
LWRvd24tc2VsZWN0b3IuCitQQVNTIGFkanVzdGVkIG5vZGUgd2FzIERJViNkcm9wLWRvd24tc2Vs
ZWN0b3IuCitQQVNTIGFkanVzdGVkIG5vZGUgd2FzIERJViNkcm9wLWRvd24tc2VsZWN0b3IuCitQ
QVNTIGFkanVzdGVkIG5vZGUgd2FzIERJViNkcm9wLWRvd24tc2VsZWN0b3IuCitQQVNTIGFkanVz
dGVkIG5vZGUgd2FzIERJViNkcm9wLWRvd24tc2VsZWN0b3IuCitQQVNTIGFkanVzdGVkIG5vZGUg
d2FzIERJViNkcm9wLWRvd24tc2VsZWN0b3IuCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCiAKIFRFU1QgQ09NUExFVEUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RvdWNoYWRqdXN0
bWVudC9zbWFsbC10YXJnZXQtdGVzdC5odG1sIGIvTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50
L3NtYWxsLXRhcmdldC10ZXN0Lmh0bWwKaW5kZXggYzE4ZTJmY2U5YjIwMjhiZGY3MDgzZDY0ZTgw
Yzg3NGRjMmRjZWI5YS4uZTVmMWQ4ODk4N2RjYzA0YjgzOGFhOGEyOTQxZjY3MmQ0Zjg2N2NjNSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50L3NtYWxsLXRhcmdldC10ZXN0
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50L3NtYWxsLXRhcmdldC10ZXN0
Lmh0bWwKQEAgLTEsMTEgKzEsMTUgQEAKKzwhRE9DVFlQRSBodG1sPgogPGh0bWw+CiA8aGVhZD4K
Kzx0aXRsZT5UZXN0cyBpZiBzbWFsbCBjbGlja2FibGUgdGFyZ2V0cyBhZGphY2VudCB0byBsYXJn
ZXIgY2xpY2thYmxlIGNvbnRyb2xzIGFyZSBwcm9wZXJseSB0YXJnZXR0ZWQgd2l0aCB0b3VjaCBh
ZGp1c3RtZW50LjwvdGl0bGU+Cis8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy90b3VjaGFkanVz
dG1lbnQuanMiPjwvc2NyaXB0PgorCiA8c3R5bGU+CiAgIGJvZHkgewogICAgIC13ZWJraXQtbWFy
Z2luLXN0YXJ0OiAyMHB4OwogICAgIG1hcmdpbi10b3A6IDIwcHg7CiAgIH0KLQogICAuY29udHJv
bC1wYWlyIHsKICAgICBtYXJnaW4tYm90dG9tOiAzMHB4OwogICB9CkBAIC00NSwzNiArNDksMzgg
QEAKICAgfQogCiAgICNkcm9wLWRvd24tc2VsZWN0b3IgewotICAgIC13ZWJraXQtYm94LXNpemlu
ZzsgY29udGVudC1ib3g7CisgICAgLXdlYmtpdC1ib3gtc2l6aW5nOiBjb250ZW50LWJveDsKICAg
ICB3aWR0aDogMDsKICAgICBoZWlnaHQ6IDA7CiAgICAgYm9yZGVyLWxlZnQ6IDVweCBzb2xpZCB0
cmFuc3BhcmVudDsKICAgICBib3JkZXItcmlnaHQ6IDVweCBzb2xpZCB0cmFuc3BhcmVudDsKICAg
ICBib3JkZXItdG9wOiAxMHB4IHNvbGlkICM3Nzc7CiAgIH0KKyAgCiA8L3N0eWxlPgogCi08c2Ny
aXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgog
PC9oZWFkPgogCi08Ym9keSBpZD0ibXlib2R5IiBvbmxvYWQ9InJ1blRlc3RzKCkiPgotCi08ZGl2
IGNsYXNzPSJjb250cm9sLXBhaXIiPgotICA8IS0tIFNtYWxsIGNoZWNrYm94IHRvIHRoZSBsZWZ0
IG9mIGFub3RoZXIgY29udHJvbCAtLT4KLSAgPGRpdiBpZD0iY2hlY2siIG9uY2xpY2s9Im9uQ2xp
Y2soKTsiPjwvZGl2PgotICA8aW5wdXQgaWQ9InRhc2siIHR5cGU9InRleHQiIHZhbHVlPSJUYXNr
IDEiLz4KLTwvZGl2PgotPGRpdiBjbGFzcz0iY29udHJvbC1wYWlyIj4KLSAgPCEtLSBTbWFsbCBy
ZW1vdmUgYnV0dG9uIHRvIHRoZSByaWdodCBvZiBhbm90aGVyIGNvbnRyb2wgLS0+Ci0gIDxpbnB1
dCBpZCA9ICJpdGVtLWxhYmVsIiB0eXBlPSJ0ZXh0IiB2YWx1ZSA9ICJPcHRpb24gMSIvPgotICA8
ZGl2IGlkID0gInJlbW92ZS1idXR0b24iIG9uY2xpY2s9Im9uQ2xpY2soKTsiLz4KLTwvZGl2Pgot
PGRpdj4KLSAgPGRpdiBpZD0iY29tYm8tYnV0dG9uIj4KLSAgICA8IS0tIENvbWJvLWJ1dHRvbiBj
b250cm9scyAtLT4KLSAgICA8ZGl2IGlkID0gImNvbWJvLWxhYmVsIiBvbmNsaWNrPSJmdW5jdGlv
bigpIHt9OyI+PC9kaXY+Ci0gICAgPGRpdiBpZCA9ICJkcm9wLWRvd24tc2VsZWN0b3IiIG9uY2xp
Y2s9Im9uQ2xpY2soKTsiLz4KLSAgPC9kaXY+Cis8Ym9keSBpZD0ibXlib2R5Ij4KKworPGRpdiBp
ZD1zYW5kYm94PgorICAgIDxkaXYgY2xhc3M9ImNvbnRyb2wtcGFpciI+CisgICAgICAgIDwhLS0g
U21hbGwgY2hlY2tib3ggdG8gdGhlIGxlZnQgb2YgYW5vdGhlciBjb250cm9sIC0tPgorICAgICAg
ICA8ZGl2IGlkPSJjaGVjayIgb25jbGljaz0ib25DbGljaygpOyI+PC9kaXY+CisgICAgICAgIDxp
bnB1dCBpZD0idGFzayIgdHlwZT0idGV4dCIgdmFsdWU9IlRhc2sgMSI+CisgICAgPC9kaXY+Cisg
ICAgPGRpdiBjbGFzcz0iY29udHJvbC1wYWlyIj4KKyAgICAgICAgPCEtLSBTbWFsbCByZW1vdmUg
YnV0dG9uIHRvIHRoZSByaWdodCBvZiBhbm90aGVyIGNvbnRyb2wgLS0+CisgICAgICAgIDxpbnB1
dCBpZCA9ICJpdGVtLWxhYmVsIiB0eXBlPSJ0ZXh0IiB2YWx1ZSA9ICJPcHRpb24gMSI+CisgICAg
ICAgIDxkaXYgaWQgPSAicmVtb3ZlLWJ1dHRvbiIgb25jbGljaz0ib25DbGljaygpOyI+PC9kaXY+
CisgICAgPC9kaXY+CisgICAgPGRpdj4KKyAgICAgICAgPGRpdiBpZD0iY29tYm8tYnV0dG9uIj4K
KyAgICAgICAgICAgIDwhLS0gQ29tYm8tYnV0dG9uIGNvbnRyb2xzIC0tPgorICAgICAgICAgICAg
PGRpdiBpZCA9ICJjb21iby1sYWJlbCIgb25jbGljaz0iZnVuY3Rpb24oKSB7fTsiPjwvZGl2Pgor
ICAgICAgICAgICAgPGRpdiBpZCA9ICJkcm9wLWRvd24tc2VsZWN0b3IiIG9uY2xpY2s9Im9uQ2xp
Y2soKTsiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KIDwvZGl2PgogCiA8cCBp
ZD0nZGVzY3JpcHRpb24nPjwvcD4KQEAgLTkxLDE3ICs5Nyw2IEBACiAgICAgewogICAgIH0KIAot
ICAgIGZ1bmN0aW9uIGZpbmRBYnNvbHV0ZVBvc2l0aW9uKG5vZGUpCi0gICAgewotICAgICAgICB2
YXIgcG9zID0gbmV3IE9iamVjdCgpOwotICAgICAgICBwb3MubGVmdCA9IDA7IHBvcy50b3AgPSAw
OwotICAgICAgICBkbyB7Ci0gICAgICAgICAgICBwb3MubGVmdCArPSBub2RlLm9mZnNldExlZnQ7
Ci0gICAgICAgICAgICBwb3MudG9wICs9IG5vZGUub2Zmc2V0VG9wOwotICAgICAgICB9IHdoaWxl
IChub2RlID0gbm9kZS5vZmZzZXRQYXJlbnQpOwotICAgICAgICByZXR1cm4gcG9zOwotICAgIH0K
LQogICAgIGZ1bmN0aW9uIHRlc3REaXJlY3RUb3VjaChpZCkKICAgICB7CiAgICAgICAgIHRlc3RU
b3VjaChpZCwgJ2NlbnRlcicpOwpAQCAtMTIxLDU5ICsxMTYsOCBAQAogCiAgICAgZnVuY3Rpb24g
dGVzdFRvdWNoKGlkLCByZWxhdGl2ZVBvc2l0aW9uKQogICAgIHsKLSAgICAgICAgZWxlbWVudCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTsKLSAgICAgICAgdmFyIHBvcyA9IGZpbmRBYnNv
bHV0ZVBvc2l0aW9uKGVsZW1lbnQpOwotICAgICAgICB2YXIgeCA9IHBvcy5sZWZ0OyAKLSAgICAg
ICAgdmFyIHkgPSBwb3MudG9wOwotICAgICAgICAvLyBTZXQgY2VudGVyIHBvaW50IGZvciB0b3Vj
aC4KLSAgICAgICAgc3dpdGNoIChyZWxhdGl2ZVBvc2l0aW9uKSB7Ci0gICAgICAgIGNhc2UgJ2Nl
bnRlcic6Ci0gICAgICAgICAgeCArPSBlbGVtZW50LmNsaWVudFdpZHRoIC8gMjsKLSAgICAgICAg
ICB5ICs9IGVsZW1lbnQuY2xpZW50SGVpZ2h0IC8gMjsKLSAgICAgICAgICBicmVhazsKLSAgICAg
ICAgY2FzZSAnbGVmdCc6Ci0gICAgICAgICAgeCAtPSB0b3VjaE9mZnNldDsKLSAgICAgICAgICB5
ICs9IGVsZW1lbnQuY2xpZW50SGVpZ2h0IC8gMjsKLSAgICAgICAgICBicmVhazsKLSAgICAgICAg
Y2FzZSAncmlnaHQnOgotICAgICAgICAgICB4ICs9IGVsZW1lbnQuY2xpZW50V2lkdGggKyB0b3Vj
aE9mZnNldDsKLSAgICAgICAgICAgeSArPSAgZWxlbWVudC5jbGllbnRIZWlnaHQgLyAyOwotICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSAndG9wLWxlZnQnOgotICAgICAgICAgIHggLT0g
dG91Y2hPZmZzZXQ7Ci0gICAgICAgICAgeSAtPSB0b3VjaE9mZnNldDsKLSAgICAgICAgICBicmVh
azsKLSAgICAgICAgY2FzZSAndG9wLXJpZ2h0JzoKLSAgICAgICAgICAgeCArPSBlbGVtZW50LmNs
aWVudFdpZHRoICsgdG91Y2hPZmZzZXQ7Ci0gICAgICAgICAgIHkgLT0gdG91Y2hPZmZzZXQ7Ci0g
ICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlICdib3R0b20tbGVmdCc6Ci0gICAgICAgICAg
eCAtPSB0b3VjaE9mZnNldDsKLSAgICAgICAgICB5ICs9IGVsZW1lbnQuY2xpZW50SGVpZ2h0ICsg
dG91Y2hPZmZzZXQ7Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgJ2JvdHRvbS1yaWdo
dCc6Ci0gICAgICAgICAgIHggKz0gZWxlbWVudC5jbGllbnRXaWR0aCArIHRvdWNoT2Zmc2V0Owot
ICAgICAgICAgICB5ICs9IGVsZW1lbnQuY2xpZW50SGVpZ2h0ICsgdG91Y2hPZmZzZXQ7Ci0gICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlICd0b3AnOgotICAgICAgICAgICB4ICs9IGVsZW1l
bnQuY2xpZW50V2lkdGggLyAyOwotICAgICAgICAgICB5IC09IHRvdWNoT2Zmc2V0OwotICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgY2FzZSAnYm90dG9tJzoKLSAgICAgICAgICAgeCArPSBlbGVt
ZW50LmNsaWVudFdpZHRoIC8gMjsKLSAgICAgICAgICAgeSArPSBlbGVtZW50LmNsaWVudEhlaWdo
dCArIHRvdWNoT2Zmc2V0OwotICAgICAgICB9Ci0gICAgICAgIC8vIEFkanVzdCBmcm9tIHRvdWNo
IGNlbnRlciB0byB0b3AtbGVmdCBjb3JuZXIuCi0gICAgICAgIHggLT0gdG91Y2hSYWRpdXM7Ci0g
ICAgICAgIHkgLT0gdG91Y2hSYWRpdXM7Ci0KLSAgICAgICAgdmFyIHdpZHRoID0gMiAqIHRvdWNo
UmFkaXVzOwotICAgICAgICB2YXIgaGVpZ2h0ID0gMiAqIHRvdWNoUmFkaXVzOwotCi0gICAgICAg
IGFkanVzdGVkTm9kZSA9IGludGVybmFscy50b3VjaE5vZGVBZGp1c3RlZFRvQmVzdENsaWNrYWJs
ZU5vZGUoeCwgeSwgd2lkdGgsIGhlaWdodCwgZG9jdW1lbnQpOwotICAgICAgICB3aGlsZSAoYWRq
dXN0ZWROb2RlLm5vZGVUeXBlICE9IDEgKSAvLyBOb3QgYW4gZWxlbWVudC4KLSAgICAgICAgICAg
IGFkanVzdGVkTm9kZSA9IGFkanVzdGVkTm9kZS5wYXJlbnROb2RlOwotICAgICAgICBzaG91bGRC
ZUVxdWFsVG9TdHJpbmcoJ2FkanVzdGVkTm9kZS5pZCcsIGlkKTsKKyAgICAgICAgdmFyIGVsZW1l
bnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCk7CisgICAgICAgIHRlc3RUb3VjaFBvaW50
KG9mZnNldFRvdWNoUG9pbnQoZmluZEFic29sdXRlQm91bmRzKGVsZW1lbnQpLCByZWxhdGl2ZVBv
c2l0aW9uLCB0b3VjaE9mZnNldCwgdG91Y2hSYWRpdXMpLCBlbGVtZW50KTsKICAgICB9CiAKICAg
ICBmdW5jdGlvbiB0ZXN0RGlyZWN0VG91Y2hlcygpCkBAIC0yMDAsMTUgKzE0NCwxNCBAQAogICAg
IGZ1bmN0aW9uIHJ1blRlc3RzKCkKICAgICB7CiAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
ciAmJiB3aW5kb3cuaW50ZXJuYWxzICYmIGludGVybmFscy50b3VjaE5vZGVBZGp1c3RlZFRvQmVz
dENsaWNrYWJsZU5vZGUpIHsKLSAgICAgICAgICAgIGRlc2NyaXB0aW9uKCdUZXN0cyBpZiBzbWFs
bCBjbGlja2FibGUgdGFyZ2V0cyBhZGphY2VudCB0byBsYXJnZXIgY2xpY2thYmxlIGNvbnRyb2xz
IGFyZSBwcm9wZXJseSB0YXJnZXR0ZWQgd2l0aCB0b3VjaCBhZGp1c3RtZW50LicpOwotICAgICAg
ICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgICAgICB0ZXN0UnVubmVyLndh
aXRVbnRpbERvbmUoKTsKKyAgICAgICAgICAgIGRlc2NyaXB0aW9uKGRvY3VtZW50LnRpdGxlKTsK
ICAgICAgICAgICAgIHRlc3REaXJlY3RUb3VjaGVzKCk7CiAgICAgICAgICAgICB0ZXN0SW5kaXJl
Y3RUb3VjaGVzKCk7Ci0gICAgICAgICAgICBpc1N1Y2Nlc3NmdWxseVBhcnNlZCgpOwotICAgICAg
ICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnc2FuZGJveCcpLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICAgICAgIH0K
ICAgICB9CisgICAgcnVuVGVzdHMoKTsKIDwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90b3VjaGFkanVzdG1lbnQvdG91Y2gtaW5saW5lcy1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90b3VjaGFkanVzdG1lbnQvdG91Y2gtaW5saW5lcy1l
eHBlY3RlZC50eHQKaW5kZXggNjNmZDRmMDA2M2QwYzg4MzlhNjNmYTE0ZmRlNjEzMmMyZTA5YWJm
OS4uOTU4MWI4YzcyNzllZjBjMzFlNzBkMDY1YzU1YzE0MjkyMzA0YWViNSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50L3RvdWNoLWlubGluZXMtZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL3RvdWNoYWRqdXN0bWVudC90b3VjaC1pbmxpbmVzLWV4cGVjdGVkLnR4
dApAQCAtMSwyOCArMSwyMiBAQAotc29tZSBsaW5rCi1zb21lIGxpbmsgYnJlYWtpbmcgbGluZXMg
YW5kIGxpbmsKLWhvbGEgbXVuZG8hIGEgc3BsaXQgdXAgbGluawotaGVsbG8gd29ybGQgc29tZSBs
aW5rIGFsc28gYnJlYWtpbmcKLWhpIHRoZXJlIHNvbWUgbGluayB0aGF0IGlzIGJyZWFraW5nIG11
bHRpcGxlIGxpbmVzIGp1c3QgZm9yIHRoZSB2ZXJ5IGZ1biBvZiBpdAotCiBUZXN0IHRvdWNoLWFk
anVzdG1lbnQgb24gaW5saW5lIGxpbmtzLiBNYWtpbmcgc3VyZSB3ZSBjYW4gaGl0IG92ZXIgbGlu
ZS1icmVha3MsIGFuZCBjYW4gbWlzcyB3aGVuIHRhcHBpbmcgYmV0d2VlbiBwYXJ0cyBvZiBhIGxp
bmUtYnJva2VuIGxpbmsuCiAKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAogCiBUZXN0IHNv
bWUgZGlyZWN0IGhpdHMuCi1QQVNTIGFkanVzdGVkTm9kZS5pZCBpcyAiMSIKLVBBU1MgYWRqdXN0
ZWROb2RlLmlkIGlzICIyIgotUEFTUyBhZGp1c3RlZE5vZGUuaWQgaXMgIjQiCi1QQVNTIGFkanVz
dGVkTm9kZS5pZCBpcyAiNiIKK1BBU1MgYWRqdXN0ZWQgbm9kZSB3YXMgQSMxLgorUEFTUyBhZGp1
c3RlZCBub2RlIHdhcyBBIzIuCitQQVNTIGFkanVzdGVkIG5vZGUgd2FzIEEjNC4KK1BBU1MgYWRq
dXN0ZWQgbm9kZSB3YXMgQSM2LgogVGVzdCBhIGZldyBkaXJlY3QgbWlzc2VzLgotUEFTUyBhZGp1
c3RlZE5vZGUgaXMgbnVsbAotUEFTUyBhZGp1c3RlZE5vZGUgaXMgbnVsbAotVGVzdCBzb21lIGlu
LWRpcmVjdCBoaXRzLgotUEFTUyBhZGp1c3RlZE5vZGUuaWQgaXMgIjIiCi1QQVNTIGFkanVzdGVk
Tm9kZS5pZCBpcyAiMyIKLVBBU1MgYWRqdXN0ZWROb2RlLmlkIGlzICI0IgotUEFTUyBhZGp1c3Rl
ZE5vZGUuaWQgaXMgIjQiCi1QQVNTIGFkanVzdGVkTm9kZS5pZCBpcyAiNiIKK1BBU1MgYWRqdXN0
ZWQgbm9kZSB3YXMgbnVsbC4KK1BBU1MgYWRqdXN0ZWQgbm9kZSB3YXMgbnVsbC4KK1Rlc3Qgc29t
ZSBpbmRpcmVjdCBoaXRzLgorUEFTUyBhZGp1c3RlZCBub2RlIHdhcyBBIzIuCitQQVNTIGFkanVz
dGVkIG5vZGUgd2FzIEEjMy4KK1BBU1MgYWRqdXN0ZWQgbm9kZSB3YXMgQSM0LgorUEFTUyBhZGp1
c3RlZCBub2RlIHdhcyBBIzQuCitQQVNTIGFkanVzdGVkIG5vZGUgd2FzIEEjNi4KIFBBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50L3RvdWNoLWlubGluZXMuaHRtbCBiL0xheW91dFRlc3Rz
L3RvdWNoYWRqdXN0bWVudC90b3VjaC1pbmxpbmVzLmh0bWwKaW5kZXggNDk0ZTE2Y2Y4YjJmMjBk
ZTdlMTdhNDExNDAzNWMxNThmM2M5OTA3MS4uNzk5NTM0YzY0Mjk2OTU4ODZkZmMzOTNjYmI1NThl
NTkwY2MwMGY2MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50L3RvdWNo
LWlubGluZXMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy90b3VjaGFkanVzdG1lbnQvdG91Y2gtaW5s
aW5lcy5odG1sCkBAIC0xLDEwNiArMSw3NyBAQAorPCFET0NUWVBFIGh0bWw+CiA8aHRtbD4KIDxo
ZWFkPgorICAgIDx0aXRsZT5UZXN0IHRvdWNoLWFkanVzdG1lbnQgb24gaW5saW5lIGxpbmtzLiBN
YWtpbmcgc3VyZSB3ZSBjYW4gaGl0IG92ZXIgbGluZS1icmVha3MsIGFuZCBjYW4gbWlzcyB3aGVu
IHRhcHBpbmcgYmV0d2VlbiBwYXJ0cyBvZiBhIGxpbmUtYnJva2VuIGxpbmsuPC90aXRsZT4KICAg
ICA8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdG91Y2hhZGp1c3RtZW50LmpzIj48L3Nj
cmlwdD4KICAgICA8c3R5bGU+Ci0gICAgICAgIC50ZXN0Y29udGFpbmVyIHsgcG9zaXRpb246IGFi
c29sdXRlOyB0b3A6IDBweDsgbGVmdDogMHB4OyBmb250OiAxNnB4IEFoZW07IGxpbmUtaGVpZ2h0
OiAyMHB4IH0KKyAgICAgICAgI3NhbmRib3ggeyBwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMHB4
OyBsZWZ0OiAwcHg7IGZvbnQ6IDE2cHggQWhlbTsgbGluZS1oZWlnaHQ6IDIwcHggfQogICAgIDwv
c3R5bGU+CiA8L2hlYWQ+Ci08Ym9keSBvbmxvYWQ9InJ1blRlc3RzKCkiPgotCi08ZGl2IGNsYXNz
PXRlc3Rjb250YWluZXI+Ci08cCBzdHlsZT0id2lkdGg6IDIyZW07Ij4KLTxhIGlkPSIxIiBocmVm
PSIjMSI+c29tZSBsaW5rPC9hPjxicj4KLTxhIGlkPSIyIiBocmVmPSIjMiI+c29tZSBsaW5rIGJy
ZWFraW5nIGxpbmVzPC9hPiBhbmQgPGEgaWQ9IjMiIGhyZWY9IiMzIj5saW5rPC9hPjxicj4KLWhv
bGEgbXVuZG8hIDxhIGlkPSI0IiBocmVmPSIjNCI+YSBzcGxpdCB1cCBsaW5rPC9hPjxicj4KLWhl
bGxvIHdvcmxkIDxhIGlkPSI1IiBocmVmPSIjNSI+c29tZSBsaW5rIGFsc28gYnJlYWtpbmc8L2E+
PGJyPgotaGkgdGhlcmUgPGEgaWQ9IjYiIGhyZWY9IiM2Ij5zb21lIGxpbmsgdGhhdCBpcyBicmVh
a2luZyBtdWx0aXBsZSBsaW5lcyBqdXN0IGZvciB0aGUgdmVyeSBmdW4gb2YgaXQ8L2E+PGJyPjxi
cj4KLTwvcD4KKzxib2R5PgorCis8ZGl2IGlkPXNhbmRib3g+CisgICAgPHAgc3R5bGU9IndpZHRo
OiAyMmVtOyI+CisgICAgPGEgaWQ9IjEiIGhyZWY9IiMxIj5zb21lIGxpbms8L2E+PGJyPgorICAg
IDxhIGlkPSIyIiBocmVmPSIjMiI+c29tZSBsaW5rIGJyZWFraW5nIGxpbmVzPC9hPiBhbmQgPGEg
aWQ9IjMiIGhyZWY9IiMzIj5saW5rPC9hPjxicj4KKyAgICBob2xhIG11bmRvISA8YSBpZD0iNCIg
aHJlZj0iIzQiPmEgc3BsaXQgdXAgbGluazwvYT48YnI+CisgICAgaGVsbG8gd29ybGQgPGEgaWQ9
IjUiIGhyZWY9IiM1Ij5zb21lIGxpbmsgYWxzbyBicmVha2luZzwvYT48YnI+CisgICAgaGkgdGhl
cmUgPGEgaWQ9IjYiIGhyZWY9IiM2Ij5zb21lIGxpbmsgdGhhdCBpcyBicmVha2luZyBtdWx0aXBs
ZSBsaW5lcyBqdXN0IGZvciB0aGUgdmVyeSBmdW4gb2YgaXQ8L2E+PGJyPjxicj4KKyAgICA8L3A+
CiA8L2Rpdj4KIAotCiA8cCBpZD0nZGVzY3JpcHRpb24nPjwvcD4KIDxkaXYgaWQ9J2NvbnNvbGUn
PjwvZGl2PgogCiA8c2NyaXB0PgotICAgIHZhciBlbGVtZW50OwotICAgIHZhciBhZGp1c3RlZE5v
ZGU7Ci0gICAgZnVuY3Rpb24gdGVzdFJvdW5kVG91Y2goeCwgeSwgcmFkaXVzKQotICAgIHsKLSAg
ICAgICAgdmFyIHggPSB4IC0gcmFkaXVzOwotICAgICAgICB2YXIgeSA9IHkgLSByYWRpdXM7Ci0g
ICAgICAgIHZhciB3aWR0aCA9IHJhZGl1cyAqIDI7Ci0gICAgICAgIHZhciBoZWlnaHQgPSByYWRp
dXMgKiAyOwotICAgICAgICB2YXIgYWRqdXN0ZWROb2RlID0gaW50ZXJuYWxzLnRvdWNoTm9kZUFk
anVzdGVkVG9CZXN0Q2xpY2thYmxlTm9kZSh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBkb2N1bWVudCk7
Ci0gICAgICAgIGlmIChhZGp1c3RlZE5vZGUgJiYgYWRqdXN0ZWROb2RlLm5vZGVUeXBlID09IDMp
IC8vIFRFWFQgbm9kZQotICAgICAgICAgICAgYWRqdXN0ZWROb2RlID0gYWRqdXN0ZWROb2RlLnBh
cmVudE5vZGU7Ci0gICAgICAgIHJldHVybiBhZGp1c3RlZE5vZGU7Ci0gICAgfQorICAgIC8vIFNl
dCB1cCBzaG9ydGN1dCBhY2Nlc3MgdG8gZWxlbWVudHMKKyAgICB2YXIgZSA9IHt9OworICAgIFsn
c2FuZGJveCcsICcxJywgJzInLCAnMycsICc0JywgJzUnLCAnNiddLmZvckVhY2goZnVuY3Rpb24o
YSkgeworICAgICAgICBlW2FdID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYSk7CisgICAgfSk7
CiAKICAgICBmdW5jdGlvbiB0ZXN0RGlyZWN0VG91Y2hlcygpCiAgICAgewogICAgICAgICBkZWJ1
ZygnVGVzdCBzb21lIGRpcmVjdCBoaXRzLicpOwotCi0gICAgICAgIGFkanVzdGVkTm9kZSA9IHRl
c3RSb3VuZFRvdWNoKDMwLCAyNSwgMTApCi0gICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygn
YWRqdXN0ZWROb2RlLmlkJywgJzEnKTsKLQotICAgICAgICBhZGp1c3RlZE5vZGUgPSB0ZXN0Um91
bmRUb3VjaCgyMCwgNjUsIDEwKQotICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2FkanVz
dGVkTm9kZS5pZCcsICcyJyk7Ci0KLSAgICAgICAgYWRqdXN0ZWROb2RlID0gdGVzdFJvdW5kVG91
Y2goMjIwLCA4NSwgMTApCi0gICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnYWRqdXN0ZWRO
b2RlLmlkJywgJzQnKTsKLQotICAgICAgICBhZGp1c3RlZE5vZGUgPSB0ZXN0Um91bmRUb3VjaCg4
MCwgMTk1LCAxMCkKLSAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdhZGp1c3RlZE5vZGUu
aWQnLCAnNicpOworICAgICAgICB0ZXN0VG91Y2hQb2ludCh0b3VjaFBvaW50KDMwLCAyNSwgMTAp
LCBlWycxJ10pOworICAgICAgICB0ZXN0VG91Y2hQb2ludCh0b3VjaFBvaW50KDIwLCA2NSwgMTAp
LCBlWycyJ10pOworICAgICAgICB0ZXN0VG91Y2hQb2ludCh0b3VjaFBvaW50KDIyMCwgODUsIDEw
KSwgZVsnNCddKTsKKyAgICAgICAgdGVzdFRvdWNoUG9pbnQodG91Y2hQb2ludCg4MCwgMTk1LCAx
MCksIGVbJzYnXSk7CiAgICAgfQogCiAgICAgZnVuY3Rpb24gdGVzdERpcmVjdE1pc3NlcygpCiAg
ICAgewogICAgICAgICBkZWJ1ZygnVGVzdCBhIGZldyBkaXJlY3QgbWlzc2VzLicpOwotCiAgICAg
ICAgIC8vIEhpdCAnYW5kJyBiZXR3ZW4gbGluayAyIGFuZCAzCi0gICAgICAgIGFkanVzdGVkTm9k
ZSA9IHRlc3RSb3VuZFRvdWNoKDEyMCwgNzUsIDYpCi0gICAgICAgIHNob3VsZEJlTnVsbCgnYWRq
dXN0ZWROb2RlJyk7Ci0KKyAgICAgICAgdGVzdFRvdWNoUG9pbnQodG91Y2hQb2ludCgxMjAsIDc1
LCA2KSwgbnVsbCk7CiAgICAgICAgIC8vIEhpdCAnaGkgdGhlcmUnIGFib3ZlIGFuZCB0byB0aGUg
bGVmdCBvZiBsaW5rIDYuCi0gICAgICAgIGFkanVzdGVkTm9kZSA9IHRlc3RSb3VuZFRvdWNoKDcy
LCAxNjYsIDYpCi0gICAgICAgIHNob3VsZEJlTnVsbCgnYWRqdXN0ZWROb2RlJyk7Ci0KKyAgICAg
ICAgdGVzdFRvdWNoUG9pbnQodG91Y2hQb2ludCg3MiwgMTY2LCA2KSwgbnVsbCk7CiAgICAgfQog
CiAgICAgZnVuY3Rpb24gdGVzdEluZGlyZWN0VG91Y2hlcygpCiAgICAgewotICAgICAgICBkZWJ1
ZygnVGVzdCBzb21lIGluLWRpcmVjdCBoaXRzLicpOwotCi0gICAgICAgIGFkanVzdGVkTm9kZSA9
IHRlc3RSb3VuZFRvdWNoKDUwLCA2MCwgMjApCi0gICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
ZygnYWRqdXN0ZWROb2RlLmlkJywgJzInKTsKLQotICAgICAgICBhZGp1c3RlZE5vZGUgPSB0ZXN0
Um91bmRUb3VjaCgxNzIsIDgyLCAyMCkKLSAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdh
ZGp1c3RlZE5vZGUuaWQnLCAnMycpOwotCi0gICAgICAgIGFkanVzdGVkTm9kZSA9IHRlc3RSb3Vu
ZFRvdWNoKDIzMCwgNzQsIDIwKQotICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2FkanVz
dGVkTm9kZS5pZCcsICc0Jyk7Ci0KLSAgICAgICAgYWRqdXN0ZWROb2RlID0gdGVzdFJvdW5kVG91
Y2goMzAsIDEwMCwgMjApCi0gICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnYWRqdXN0ZWRO
b2RlLmlkJywgJzQnKTsKKyAgICAgICAgZGVidWcoJ1Rlc3Qgc29tZSBpbmRpcmVjdCBoaXRzLicp
OwogCi0gICAgICAgIGFkanVzdGVkTm9kZSA9IHRlc3RSb3VuZFRvdWNoKDI0LCAxNzAsIDIwKQot
ICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2FkanVzdGVkTm9kZS5pZCcsICc2Jyk7Cisg
ICAgICAgIHRlc3RUb3VjaFBvaW50KHRvdWNoUG9pbnQoNTAsIDYwLCAyMCksIGVbJzInXSk7Cisg
ICAgICAgIHRlc3RUb3VjaFBvaW50KHRvdWNoUG9pbnQoMTcyLCA4MywgMjApLCBlWyczJ10pOwor
ICAgICAgICB0ZXN0VG91Y2hQb2ludCh0b3VjaFBvaW50KDIzMCwgNzQsIDIwKSwgZVsnNCddKTsK
KyAgICAgICAgdGVzdFRvdWNoUG9pbnQodG91Y2hQb2ludCgzMCwgMTAwLCAyMCksIGVbJzQnXSk7
CisgICAgICAgIHRlc3RUb3VjaFBvaW50KHRvdWNoUG9pbnQoMjQsIDE3MCwgMjApLCBlWyc2J10p
OwogCiAgICAgfQogCiAgICAgZnVuY3Rpb24gcnVuVGVzdHMoKQogICAgIHsKICAgICAgICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyICYmIHdpbmRvdy5pbnRlcm5hbHMgJiYgaW50ZXJuYWxzLnRvdWNo
Tm9kZUFkanVzdGVkVG9CZXN0Q2xpY2thYmxlTm9kZSkgewotICAgICAgICAgICAgZGVzY3JpcHRp
b24oJ1Rlc3QgdG91Y2gtYWRqdXN0bWVudCBvbiBpbmxpbmUgbGlua3MuIE1ha2luZyBzdXJlIHdl
IGNhbiBoaXQgb3ZlciBsaW5lLWJyZWFrcywgYW5kIGNhbiBtaXNzIHdoZW4gdGFwcGluZyBiZXR3
ZWVuIHBhcnRzIG9mIGEgbGluZS1icm9rZW4gbGluay4nKTsKLSAgICAgICAgICAgIHRlc3RSdW5u
ZXIuZHVtcEFzVGV4dCgpOwotICAgICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7
CisgICAgICAgICAgICBkZXNjcmlwdGlvbihkb2N1bWVudC50aXRsZSk7CiAgICAgICAgICAgICB0
ZXN0RGlyZWN0VG91Y2hlcygpOwogICAgICAgICAgICAgdGVzdERpcmVjdE1pc3NlcygpOwogICAg
ICAgICAgICAgdGVzdEluZGlyZWN0VG91Y2hlcygpOwotICAgICAgICAgICAgaXNTdWNjZXNzZnVs
bHlQYXJzZWQoKTsKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAg
ICAgICAgZVsnc2FuZGJveCddLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICAgICAgIH0KICAg
ICB9CisgICAgcnVuVGVzdHMoKTsKIDwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMv
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>155808</attachid>
            <date>2012-08-01 07:37:34 -0700</date>
            <delta_ts>2012-08-01 09:19:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-92869-20120801163715.patch</filename>
            <type>text/plain</type>
            <size>81048</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0MzEyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZThhOTZjMzJkMTE1YjBlY2E3ZGE4
YTQ1NzhkNjQ4ZTdjNjcwNzkyOC4uNjEzYTJiYWFiZWRhNDI3NmI4NWNkNTU5MzY1YWYwMjRmN2Qx
YjliOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDEyLTA4LTAxICBBbGxhbiBTYW5kZmVsZCBK
ZW5zZW4gIDxhbGxhbi5qZW5zZW5Abm9raWEuY29tPgorCisgICAgICAgIENsZWFuLXVwIHRvdWNo
YWRqdXN0bWVudCB0ZXN0cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTkyODY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgR2F0aGVyIGNvbW1lbmx5IHVzZWQgZnVuY3Rpb25zIGluIHRvdWNoYWRqdXN0bWVu
dC5qcywgYW5kIGNoYW5nZSB0aGUKKyAgICAgICAgdGVzdHMgc28gdGhleSBiZWhhdmUgYXMgY29y
cmVjdCBhcyBwb3NzaWJsZSwgYW5kIGxvb2sgY2xlYW4gYXMgZXhhbXBsZXMKKyAgICAgICAgZm9y
IGZ1dHVyZSB0b3VjaGFkanVzdG1lbnQgdGVzdHMuCisKKyAgICAgICAgKiB0b3VjaGFkanVzdG1l
bnQvYmlnLWRpdi1leHBlY3RlZC50eHQ6CisgICAgICAgICogdG91Y2hhZGp1c3RtZW50L2JpZy1k
aXYuaHRtbDoKKyAgICAgICAgKiB0b3VjaGFkanVzdG1lbnQvYmxvY2stdGVzdGluZy1leHBlY3Rl
ZC50eHQ6CisgICAgICAgICogdG91Y2hhZGp1c3RtZW50L2Jsb2NrLXRlc3RpbmcuaHRtbDoKKyAg
ICAgICAgKiB0b3VjaGFkanVzdG1lbnQvZGlzYWJsZWQtZm9ybWVsZW1lbnRzLWV4cGVjdGVkLnR4
dDoKKyAgICAgICAgKiB0b3VjaGFkanVzdG1lbnQvZGlzYWJsZWQtZm9ybWVsZW1lbnRzLmh0bWw6
CisgICAgICAgICogdG91Y2hhZGp1c3RtZW50L2V2ZW50LXRyaWdnZXJlZC13aWRnZXRzLWV4cGVj
dGVkLnR4dDoKKyAgICAgICAgKiB0b3VjaGFkanVzdG1lbnQvZXZlbnQtdHJpZ2dlcmVkLXdpZGdl
dHMuaHRtbDoKKyAgICAgICAgKiB0b3VjaGFkanVzdG1lbnQvaHRtbC1sYWJlbC1leHBlY3RlZC50
eHQ6CisgICAgICAgICogdG91Y2hhZGp1c3RtZW50L2h0bWwtbGFiZWwuaHRtbDoKKyAgICAgICAg
KiB0b3VjaGFkanVzdG1lbnQvaWZyYW1lLmh0bWw6CisgICAgICAgICogdG91Y2hhZGp1c3RtZW50
L25lc3RlZC10b3VjaC1leHBlY3RlZC50eHQ6CisgICAgICAgICogdG91Y2hhZGp1c3RtZW50L25l
c3RlZC10b3VjaC5odG1sOgorICAgICAgICAqIHRvdWNoYWRqdXN0bWVudC9yZXNvdXJjZXMvaW5u
ZXItZnJhbWUuaHRtbDoKKyAgICAgICAgKiB0b3VjaGFkanVzdG1lbnQvcmVzb3VyY2VzL3RvdWNo
YWRqdXN0bWVudC5qczogQWRkZWQuCisgICAgICAgIChmaW5kQWJzb2x1dGVCb3VuZHMpOgorICAg
ICAgICAobm9kZVRvU3RyaW5nKToKKyAgICAgICAgKHRvdWNoUG9pbnQpOgorICAgICAgICAob2Zm
c2V0VG91Y2hQb2ludCk6CisgICAgICAgICogdG91Y2hhZGp1c3RtZW50L3JvdGF0ZWQtbm9kZS1l
eHBlY3RlZC50eHQ6CisgICAgICAgICogdG91Y2hhZGp1c3RtZW50L3JvdGF0ZWQtbm9kZS5odG1s
OgorICAgICAgICAqIHRvdWNoYWRqdXN0bWVudC9zY3JvbGwtb2Zmc2V0LWV4cGVjdGVkLnR4dDoK
KyAgICAgICAgKiB0b3VjaGFkanVzdG1lbnQvc2Nyb2xsLW9mZnNldC5odG1sOgorICAgICAgICAq
IHRvdWNoYWRqdXN0bWVudC9zZWFyY2gtY2FuY2VsLmh0bWw6CisgICAgICAgICogdG91Y2hhZGp1
c3RtZW50L3NtYWxsLXRhcmdldC10ZXN0LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB0b3VjaGFk
anVzdG1lbnQvc21hbGwtdGFyZ2V0LXRlc3QuaHRtbDoKKyAgICAgICAgKiB0b3VjaGFkanVzdG1l
bnQvdG91Y2gtaW5saW5lcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogdG91Y2hhZGp1c3RtZW50
L3RvdWNoLWlubGluZXMuaHRtbDoKKwogMjAxMi0wOC0wMSAgUGV0ZXIgS2FzdGluZyAgPHBrYXN0
aW5nQGdvb2dsZS5jb20+CiAKICAgICAgICAgW0Nocm9taXVtXSBNYXJrIGEgY291cGxlIG9mIGZs
YWt5IHRlc3RzLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50L2JpZy1k
aXYtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50L2JpZy1kaXYtZXhw
ZWN0ZWQudHh0CmluZGV4IGEzZTMxY2JmODg5MDFiN2Q1NmVjNDM5N2IyYjc1MmEyNzk3ZDQ3N2Yu
LjAxZTNiOGY2YzkyNmUxMmNhMGZhNGQ1ZmJlYmNiOGMwM2YwZGViMDMgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3RvdWNoYWRqdXN0bWVudC9iaWctZGl2LWV4cGVjdGVkLnR4dAorKysgYi9MYXlv
dXRUZXN0cy90b3VjaGFkanVzdG1lbnQvYmlnLWRpdi1leHBlY3RlZC50eHQKQEAgLTYsMTAgKzYs
MTAgQEAgT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUKIAogT3ZlcmxhcHBpbmcgdG91Y2ggYWJvdmUg
dGhlIHRhcmdldCBzaG91bGQgc25hcCB0byB0aGUgdG9wIG9mIHRoZSB0YXJnZXQgZWxlbWVudC4K
IFBBU1MgYWRqdXN0ZWROb2RlLmlkIGlzIGVsZW1lbnQuaWQKLVBBU1MgYWRqdXN0ZWRQb2ludC54
ID49IHRhcmdldEJvdW5kcy54IGlzIHRydWUKLVBBU1MgYWRqdXN0ZWRQb2ludC54IDw9IHRhcmdl
dEJvdW5kcy54ICsgdGFyZ2V0Qm91bmRzLndpZHRoIGlzIHRydWUKLVBBU1MgYWRqdXN0ZWRQb2lu
dC55ID49IHRhcmdldEJvdW5kcy55IGlzIHRydWUKLVBBU1MgYWRqdXN0ZWRQb2ludC55IDw9IHRh
cmdldEJvdW5kcy55ICsgdGFyZ2V0Qm91bmRzLmhlaWdodCBpcyB0cnVlCitQQVNTIGFkanVzdGVk
UG9pbnQueCA+PSB0YXJnZXRCb3VuZHMubGVmdCBpcyB0cnVlCitQQVNTIGFkanVzdGVkUG9pbnQu
eCA8PSB0YXJnZXRCb3VuZHMubGVmdCArIHRhcmdldEJvdW5kcy53aWR0aCBpcyB0cnVlCitQQVNT
IGFkanVzdGVkUG9pbnQueSA+PSB0YXJnZXRCb3VuZHMudG9wIGlzIHRydWUKK1BBU1MgYWRqdXN0
ZWRQb2ludC55IDw9IHRhcmdldEJvdW5kcy50b3AgKyB0YXJnZXRCb3VuZHMuaGVpZ2h0IGlzIHRy
dWUKIFBBU1MgYWRqdXN0ZWRQb2ludC54ID49IHRvdWNoQm91bmRzLnggaXMgdHJ1ZQogUEFTUyBh
ZGp1c3RlZFBvaW50LnggPD0gdG91Y2hCb3VuZHMueCArIHRvdWNoQm91bmRzLndpZHRoIGlzIHRy
dWUKIFBBU1MgYWRqdXN0ZWRQb2ludC55ID49IHRvdWNoQm91bmRzLnkgaXMgdHJ1ZQpAQCAtMTcs
MTAgKzE3LDEwIEBAIFBBU1MgYWRqdXN0ZWRQb2ludC55IDw9IHRvdWNoQm91bmRzLnkgKyB0b3Vj
aEJvdW5kcy5oZWlnaHQgaXMgdHJ1ZQogCiBPdmVybGFwcGluZyB0b3VjaCBiZWxvdyB0aGUgdGFy
Z2V0IHNob3VsZCBzbmFwIHRvIHRoZSBib3R0b20gb2YgdGhlIHRhcmdldCBlbGVtZW50LgogUEFT
UyBhZGp1c3RlZE5vZGUuaWQgaXMgZWxlbWVudC5pZAotUEFTUyBhZGp1c3RlZFBvaW50LnggPj0g
dGFyZ2V0Qm91bmRzLnggaXMgdHJ1ZQotUEFTUyBhZGp1c3RlZFBvaW50LnggPD0gdGFyZ2V0Qm91
bmRzLnggKyB0YXJnZXRCb3VuZHMud2lkdGggaXMgdHJ1ZQotUEFTUyBhZGp1c3RlZFBvaW50Lnkg
Pj0gdGFyZ2V0Qm91bmRzLnkgaXMgdHJ1ZQotUEFTUyBhZGp1c3RlZFBvaW50LnkgPD0gdGFyZ2V0
Qm91bmRzLnkgKyB0YXJnZXRCb3VuZHMuaGVpZ2h0IGlzIHRydWUKK1BBU1MgYWRqdXN0ZWRQb2lu
dC54ID49IHRhcmdldEJvdW5kcy5sZWZ0IGlzIHRydWUKK1BBU1MgYWRqdXN0ZWRQb2ludC54IDw9
IHRhcmdldEJvdW5kcy5sZWZ0ICsgdGFyZ2V0Qm91bmRzLndpZHRoIGlzIHRydWUKK1BBU1MgYWRq
dXN0ZWRQb2ludC55ID49IHRhcmdldEJvdW5kcy50b3AgaXMgdHJ1ZQorUEFTUyBhZGp1c3RlZFBv
aW50LnkgPD0gdGFyZ2V0Qm91bmRzLnRvcCArIHRhcmdldEJvdW5kcy5oZWlnaHQgaXMgdHJ1ZQog
UEFTUyBhZGp1c3RlZFBvaW50LnggPj0gdG91Y2hCb3VuZHMueCBpcyB0cnVlCiBQQVNTIGFkanVz
dGVkUG9pbnQueCA8PSB0b3VjaEJvdW5kcy54ICsgdG91Y2hCb3VuZHMud2lkdGggaXMgdHJ1ZQog
UEFTUyBhZGp1c3RlZFBvaW50LnkgPj0gdG91Y2hCb3VuZHMueSBpcyB0cnVlCkBAIC0yOCwxMCAr
MjgsMTAgQEAgUEFTUyBhZGp1c3RlZFBvaW50LnkgPD0gdG91Y2hCb3VuZHMueSArIHRvdWNoQm91
bmRzLmhlaWdodCBpcyB0cnVlCiAKIE92ZXJsYXBwaW5nIHRvdWNoIGxlZnQgb2YgdGhlIHRhcmdl
dCBzaG91bGQgc25hcCB0byB0aGUgbGVmdCBzaWRlIG9mIHRoZSB0YXJnZXQgZWxlbWVudC4KIFBB
U1MgYWRqdXN0ZWROb2RlLmlkIGlzIGVsZW1lbnQuaWQKLVBBU1MgYWRqdXN0ZWRQb2ludC54ID49
IHRhcmdldEJvdW5kcy54IGlzIHRydWUKLVBBU1MgYWRqdXN0ZWRQb2ludC54IDw9IHRhcmdldEJv
dW5kcy54ICsgdGFyZ2V0Qm91bmRzLndpZHRoIGlzIHRydWUKLVBBU1MgYWRqdXN0ZWRQb2ludC55
ID49IHRhcmdldEJvdW5kcy55IGlzIHRydWUKLVBBU1MgYWRqdXN0ZWRQb2ludC55IDw9IHRhcmdl
dEJvdW5kcy55ICsgdGFyZ2V0Qm91bmRzLmhlaWdodCBpcyB0cnVlCitQQVNTIGFkanVzdGVkUG9p
bnQueCA+PSB0YXJnZXRCb3VuZHMubGVmdCBpcyB0cnVlCitQQVNTIGFkanVzdGVkUG9pbnQueCA8
PSB0YXJnZXRCb3VuZHMubGVmdCArIHRhcmdldEJvdW5kcy53aWR0aCBpcyB0cnVlCitQQVNTIGFk
anVzdGVkUG9pbnQueSA+PSB0YXJnZXRCb3VuZHMudG9wIGlzIHRydWUKK1BBU1MgYWRqdXN0ZWRQ
b2ludC55IDw9IHRhcmdldEJvdW5kcy50b3AgKyB0YXJnZXRCb3VuZHMuaGVpZ2h0IGlzIHRydWUK
IFBBU1MgYWRqdXN0ZWRQb2ludC54ID49IHRvdWNoQm91bmRzLnggaXMgdHJ1ZQogUEFTUyBhZGp1
c3RlZFBvaW50LnggPD0gdG91Y2hCb3VuZHMueCArIHRvdWNoQm91bmRzLndpZHRoIGlzIHRydWUK
IFBBU1MgYWRqdXN0ZWRQb2ludC55ID49IHRvdWNoQm91bmRzLnkgaXMgdHJ1ZQpAQCAtMzksMTAg
KzM5LDEwIEBAIFBBU1MgYWRqdXN0ZWRQb2ludC55IDw9IHRvdWNoQm91bmRzLnkgKyB0b3VjaEJv
dW5kcy5oZWlnaHQgaXMgdHJ1ZQogCiBPdmVybGFwcGluZyB0b3VjaCByaWdodCBvZiB0aGUgdGFy
Z2V0IHNob3VsZCBzbmFwIHRvIHRoZSByaWdodCBzaWRlIG9mIHRoZSB0YXJnZXQgZWxlbWVudC4K
IFBBU1MgYWRqdXN0ZWROb2RlLmlkIGlzIGVsZW1lbnQuaWQKLVBBU1MgYWRqdXN0ZWRQb2ludC54
ID49IHRhcmdldEJvdW5kcy54IGlzIHRydWUKLVBBU1MgYWRqdXN0ZWRQb2ludC54IDw9IHRhcmdl
dEJvdW5kcy54ICsgdGFyZ2V0Qm91bmRzLndpZHRoIGlzIHRydWUKLVBBU1MgYWRqdXN0ZWRQb2lu
dC55ID49IHRhcmdldEJvdW5kcy55IGlzIHRydWUKLVBBU1MgYWRqdXN0ZWRQb2ludC55IDw9IHRh
cmdldEJvdW5kcy55ICsgdGFyZ2V0Qm91bmRzLmhlaWdodCBpcyB0cnVlCitQQVNTIGFkanVzdGVk
UG9pbnQueCA+PSB0YXJnZXRCb3VuZHMubGVmdCBpcyB0cnVlCitQQVNTIGFkanVzdGVkUG9pbnQu
eCA8PSB0YXJnZXRCb3VuZHMubGVmdCArIHRhcmdldEJvdW5kcy53aWR0aCBpcyB0cnVlCitQQVNT
IGFkanVzdGVkUG9pbnQueSA+PSB0YXJnZXRCb3VuZHMudG9wIGlzIHRydWUKK1BBU1MgYWRqdXN0
ZWRQb2ludC55IDw9IHRhcmdldEJvdW5kcy50b3AgKyB0YXJnZXRCb3VuZHMuaGVpZ2h0IGlzIHRy
dWUKIFBBU1MgYWRqdXN0ZWRQb2ludC54ID49IHRvdWNoQm91bmRzLnggaXMgdHJ1ZQogUEFTUyBh
ZGp1c3RlZFBvaW50LnggPD0gdG91Y2hCb3VuZHMueCArIHRvdWNoQm91bmRzLndpZHRoIGlzIHRy
dWUKIFBBU1MgYWRqdXN0ZWRQb2ludC55ID49IHRvdWNoQm91bmRzLnkgaXMgdHJ1ZQpAQCAtNTAs
MTAgKzUwLDEwIEBAIFBBU1MgYWRqdXN0ZWRQb2ludC55IDw9IHRvdWNoQm91bmRzLnkgKyB0b3Vj
aEJvdW5kcy5oZWlnaHQgaXMgdHJ1ZQogCiBUZXN0IHRvdWNoIGFyZWEgY29udGFpbmVkIHdpdGhp
biB0aGUgdGFyZ2V0IGVsZW1lbnQuCiBQQVNTIGFkanVzdGVkTm9kZS5pZCBpcyBlbGVtZW50Lmlk
Ci1QQVNTIGFkanVzdGVkUG9pbnQueCA+PSB0YXJnZXRCb3VuZHMueCBpcyB0cnVlCi1QQVNTIGFk
anVzdGVkUG9pbnQueCA8PSB0YXJnZXRCb3VuZHMueCArIHRhcmdldEJvdW5kcy53aWR0aCBpcyB0
cnVlCi1QQVNTIGFkanVzdGVkUG9pbnQueSA+PSB0YXJnZXRCb3VuZHMueSBpcyB0cnVlCi1QQVNT
IGFkanVzdGVkUG9pbnQueSA8PSB0YXJnZXRCb3VuZHMueSArIHRhcmdldEJvdW5kcy5oZWlnaHQg
aXMgdHJ1ZQorUEFTUyBhZGp1c3RlZFBvaW50LnggPj0gdGFyZ2V0Qm91bmRzLmxlZnQgaXMgdHJ1
ZQorUEFTUyBhZGp1c3RlZFBvaW50LnggPD0gdGFyZ2V0Qm91bmRzLmxlZnQgKyB0YXJnZXRCb3Vu
ZHMud2lkdGggaXMgdHJ1ZQorUEFTUyBhZGp1c3RlZFBvaW50LnkgPj0gdGFyZ2V0Qm91bmRzLnRv
cCBpcyB0cnVlCitQQVNTIGFkanVzdGVkUG9pbnQueSA8PSB0YXJnZXRCb3VuZHMudG9wICsgdGFy
Z2V0Qm91bmRzLmhlaWdodCBpcyB0cnVlCiBQQVNTIGFkanVzdGVkUG9pbnQueCA+PSB0b3VjaEJv
dW5kcy54IGlzIHRydWUKIFBBU1MgYWRqdXN0ZWRQb2ludC54IDw9IHRvdWNoQm91bmRzLnggKyB0
b3VjaEJvdW5kcy53aWR0aCBpcyB0cnVlCiBQQVNTIGFkanVzdGVkUG9pbnQueSA+PSB0b3VjaEJv
dW5kcy55IGlzIHRydWUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RvdWNoYWRqdXN0bWVudC9i
aWctZGl2Lmh0bWwgYi9MYXlvdXRUZXN0cy90b3VjaGFkanVzdG1lbnQvYmlnLWRpdi5odG1sCmlu
ZGV4IGZhYmNjNzc2ODk5ZjhkYWRlMGY0NWVjYzJlZDBmMzE0Yzg1NWExYWMuLjE1Zjc2ZTQ4Mzk3
Y2I2OGYxNGZiOTM1NzQxNDcwYTI1NDJiOWExY2EgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3Rv
dWNoYWRqdXN0bWVudC9iaWctZGl2Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3Rt
ZW50L2JpZy1kaXYuaHRtbApAQCAtMSwxNyArMSwxOSBAQAorPCFET0NUWVBFIGh0bWw+CiA8aHRt
bD4KIDxoZWFkPgotPHN0eWxlPgotICAgICN0YXJnZXREaXYgewotICAgICAgICBiYWNrZ3JvdW5k
OiAjMDBmOwotICAgICAgICBoZWlnaHQ6IDQwMHB4OwotICAgICAgICB3aWR0aDogNDAwcHg7Ci0g
ICAgfQotPC9zdHlsZT4KLTxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Ci0KKyAgICA8dGl0bGU+VGVzdCB0b3VjaCBhZGp1c3RtZW50IG9u
IGEgbGFyZ2UgZGl2LiAgVGhlIGFkanVzdGVkIHRvdWNoIHBvaW50IHNob3VsZCBsaWUgaW5zaWRl
IHRoZSB0YXJnZXQgZWxlbWVudCBhbmQgd2l0aGluIHRoZSB0b3VjaCBhcmVhLjwvdGl0bGU+Cisg
ICAgPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKyAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3RvdWNoYWRqdXN0bWVudC5qcyI+PC9z
Y3JpcHQ+CisgICAgPHN0eWxlPgorICAgICAgICAjdGFyZ2V0RGl2IHsKKyAgICAgICAgICAgIGJh
Y2tncm91bmQ6ICMwMGY7CisgICAgICAgICAgICBoZWlnaHQ6IDQwMHB4OworICAgICAgICAgICAg
d2lkdGg6IDQwMHB4OworICAgICAgICB9CisgICAgPC9zdHlsZT4KIDwvaGVhZD4KIAotPGJvZHkg
b25sb2FkPSJydW5UZXN0cygpIj4KKzxib2R5PgogCiA8ZGl2IGlkPSJ0YXJnZXREaXYiPgogPC9k
aXY+CkBAIC0yNiw0NyArMjgsMjYgQEAKICAgICB2YXIgdGFyZ2V0Qm91bmRzOwogICAgIHZhciB0
b3VjaEJvdW5kczsKIAotICAgIGZ1bmN0aW9uIGZpbmRBYnNvbHV0ZVBvc2l0aW9uKG5vZGUpIHsK
LSAgICAgICAgdmFyIHBvcyA9IHtsZWZ0OiAwLCB0b3A6IDB9OwotICAgICAgICBkbyB7Ci0gICAg
ICAgICAgICBwb3MubGVmdCArPSBub2RlLm9mZnNldExlZnQ7Ci0gICAgICAgICAgICBwb3MudG9w
ICs9IG5vZGUub2Zmc2V0VG9wOwotICAgICAgICB9IHdoaWxlIChub2RlID0gbm9kZS5vZmZzZXRQ
YXJlbnQpOwotICAgICAgICByZXR1cm4gcG9zOwotICAgIH0KLQogICAgIGZ1bmN0aW9uIHJ1blRv
dWNoVGVzdHMoKSB7CiAgICAgICAgIGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
dGFyZ2V0RGl2Iik7CiAgICAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBm
dW5jdGlvbigpIHt9LCBmYWxzZSk7CiAgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIo
J2NsaWNrJywgZnVuY3Rpb24oKSB7fSwgZmFsc2UpOwogCi0gICAgICAgIHZhciBwb3MgPSBmaW5k
QWJzb2x1dGVQb3NpdGlvbihlbGVtZW50KTsKLQotICAgICAgICB2YXIgeCA9IHBvcy5sZWZ0Owot
ICAgICAgICB2YXIgeSA9IHBvcy50b3A7Ci0gICAgICAgIHZhciB3aWR0aCA9IGVsZW1lbnQuY2xp
ZW50V2lkdGg7Ci0gICAgICAgIHZhciBoZWlnaHQgPSBlbGVtZW50LmNsaWVudEhlaWdodDsKLQot
ICAgICAgICB0YXJnZXRCb3VuZHMgPSB7Ci0gICAgICAgICAgICB4OiB4LAotICAgICAgICAgICAg
eTogeSwKLSAgICAgICAgICAgIHdpZHRoOiB3aWR0aCwKLSAgICAgICAgICAgIGhlaWdodDogaGVp
Z2h0Ci0gICAgICAgIH07CisgICAgICAgIHRhcmdldEJvdW5kcyA9IGZpbmRBYnNvbHV0ZUJvdW5k
cyhlbGVtZW50KTsKIAogICAgICAgICB2YXIgdG91Y2hSYWRpdXMgPSAxMDsKICAgICAgICAgdmFy
IG9mZnNldCA9IHRvdWNoUmFkaXVzIC8gMjsKLSAgICAgICAgdmFyIG1pZFggPSB4ICsgd2lkdGgg
LyAyOwotICAgICAgICB2YXIgbWlkWSA9IHkgKyBoZWlnaHQgLyAyOworICAgICAgICB2YXIgbWlk
WCA9IHRhcmdldEJvdW5kcy5sZWZ0ICsgdGFyZ2V0Qm91bmRzLndpZHRoIC8gMjsKKyAgICAgICAg
dmFyIG1pZFkgPSB0YXJnZXRCb3VuZHMudG9wICsgdGFyZ2V0Qm91bmRzLmhlaWdodCAvIDI7CiAK
ICAgICAgICAgZGVidWcoJ1xuT3ZlcmxhcHBpbmcgdG91Y2ggYWJvdmUgdGhlIHRhcmdldCBzaG91
bGQgc25hcCB0byB0aGUgdG9wIG9mIHRoZSB0YXJnZXQgZWxlbWVudC4nKTsKLSAgICAgICAgdGVz
dFRvdWNoKG1pZFgsIHkgLSBvZmZzZXQsIHRvdWNoUmFkaXVzLCB0YXJnZXRCb3VuZHMpOworICAg
ICAgICB0ZXN0VG91Y2gobWlkWCwgdGFyZ2V0Qm91bmRzLnRvcCAtIG9mZnNldCwgdG91Y2hSYWRp
dXMsIHRhcmdldEJvdW5kcyk7CiAgICAgICAgIGRlYnVnKCdcbk92ZXJsYXBwaW5nIHRvdWNoIGJl
bG93IHRoZSB0YXJnZXQgc2hvdWxkIHNuYXAgdG8gdGhlIGJvdHRvbSBvZiB0aGUgdGFyZ2V0IGVs
ZW1lbnQuJyk7Ci0gICAgICAgIHRlc3RUb3VjaChtaWRYLCB5ICsgaGVpZ2h0ICsgb2Zmc2V0LCB0
b3VjaFJhZGl1cywgdGFyZ2V0Qm91bmRzKTsKKyAgICAgICAgdGVzdFRvdWNoKG1pZFgsIHRhcmdl
dEJvdW5kcy50b3AgKyB0YXJnZXRCb3VuZHMuaGVpZ2h0ICsgb2Zmc2V0LCB0b3VjaFJhZGl1cywg
dGFyZ2V0Qm91bmRzKTsKICAgICAgICAgZGVidWcoJ1xuT3ZlcmxhcHBpbmcgdG91Y2ggbGVmdCBv
ZiB0aGUgdGFyZ2V0IHNob3VsZCBzbmFwIHRvIHRoZSBsZWZ0IHNpZGUgb2YgdGhlIHRhcmdldCBl
bGVtZW50LicpOwotICAgICAgICB0ZXN0VG91Y2goeCAtIG9mZnNldCwgbWlkWSwgdG91Y2hSYWRp
dXMsIHRhcmdldEJvdW5kcyk7CisgICAgICAgIHRlc3RUb3VjaCh0YXJnZXRCb3VuZHMubGVmdCAt
IG9mZnNldCwgbWlkWSwgdG91Y2hSYWRpdXMsIHRhcmdldEJvdW5kcyk7CiAgICAgICAgIGRlYnVn
KCdcbk92ZXJsYXBwaW5nIHRvdWNoIHJpZ2h0IG9mIHRoZSB0YXJnZXQgc2hvdWxkIHNuYXAgdG8g
dGhlIHJpZ2h0IHNpZGUgb2YgdGhlIHRhcmdldCBlbGVtZW50LicpOwotICAgICAgICB0ZXN0VG91
Y2goeCArIHdpZHRoICsgb2Zmc2V0LCBtaWRZLCB0b3VjaFJhZGl1cywgdGFyZ2V0Qm91bmRzKTsK
KyAgICAgICAgdGVzdFRvdWNoKHRhcmdldEJvdW5kcy5sZWZ0ICsgdGFyZ2V0Qm91bmRzLndpZHRo
ICsgb2Zmc2V0LCBtaWRZLCB0b3VjaFJhZGl1cywgdGFyZ2V0Qm91bmRzKTsKICAgICAgICAgZGVi
dWcoJ1xuVGVzdCB0b3VjaCBhcmVhIGNvbnRhaW5lZCB3aXRoaW4gdGhlIHRhcmdldCBlbGVtZW50
LicpOwogICAgICAgICB0ZXN0VG91Y2gobWlkWCwgbWlkWSwgdG91Y2hSYWRpdXMsIHRhcmdldEJv
dW5kcyk7CiAgICAgfQpAQCAtODMsMTAgKzY0LDEwIEBACiAgICAgICAgIHNob3VsZEJlKCdhZGp1
c3RlZE5vZGUuaWQnLCAnZWxlbWVudC5pZCcpOwogICAgICAgICBhZGp1c3RlZFBvaW50ID0gaW50
ZXJuYWxzLnRvdWNoUG9zaXRpb25BZGp1c3RlZFRvQmVzdENsaWNrYWJsZU5vZGUodG91Y2hCb3Vu
ZHMueCwgdG91Y2hCb3VuZHMueSwgdG91Y2hCb3VuZHMud2lkdGgsIHRvdWNoQm91bmRzLmhlaWdo
dCwgZG9jdW1lbnQpOwogCi0gICAgICAgIHNob3VsZEJlVHJ1ZSgnYWRqdXN0ZWRQb2ludC54ID49
IHRhcmdldEJvdW5kcy54Jyk7Ci0gICAgICAgIHNob3VsZEJlVHJ1ZSgnYWRqdXN0ZWRQb2ludC54
IDw9IHRhcmdldEJvdW5kcy54ICsgdGFyZ2V0Qm91bmRzLndpZHRoJyk7Ci0gICAgICAgIHNob3Vs
ZEJlVHJ1ZSgnYWRqdXN0ZWRQb2ludC55ID49IHRhcmdldEJvdW5kcy55Jyk7Ci0gICAgICAgIHNo
b3VsZEJlVHJ1ZSgnYWRqdXN0ZWRQb2ludC55IDw9IHRhcmdldEJvdW5kcy55ICsgdGFyZ2V0Qm91
bmRzLmhlaWdodCcpOworICAgICAgICBzaG91bGRCZVRydWUoJ2FkanVzdGVkUG9pbnQueCA+PSB0
YXJnZXRCb3VuZHMubGVmdCcpOworICAgICAgICBzaG91bGRCZVRydWUoJ2FkanVzdGVkUG9pbnQu
eCA8PSB0YXJnZXRCb3VuZHMubGVmdCArIHRhcmdldEJvdW5kcy53aWR0aCcpOworICAgICAgICBz
aG91bGRCZVRydWUoJ2FkanVzdGVkUG9pbnQueSA+PSB0YXJnZXRCb3VuZHMudG9wJyk7CisgICAg
ICAgIHNob3VsZEJlVHJ1ZSgnYWRqdXN0ZWRQb2ludC55IDw9IHRhcmdldEJvdW5kcy50b3AgKyB0
YXJnZXRCb3VuZHMuaGVpZ2h0Jyk7CiAgICAgICAgIHNob3VsZEJlVHJ1ZSgnYWRqdXN0ZWRQb2lu
dC54ID49IHRvdWNoQm91bmRzLngnKTsKICAgICAgICAgc2hvdWxkQmVUcnVlKCdhZGp1c3RlZFBv
aW50LnggPD0gdG91Y2hCb3VuZHMueCArIHRvdWNoQm91bmRzLndpZHRoJyk7CiAgICAgICAgIHNo
b3VsZEJlVHJ1ZSgnYWRqdXN0ZWRQb2ludC55ID49IHRvdWNoQm91bmRzLnknKTsKQEAgLTk2LDE0
ICs3NywxMiBAQAogICAgIGZ1bmN0aW9uIHJ1blRlc3RzKCkKICAgICB7CiAgICAgICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lciAmJiB3aW5kb3cuaW50ZXJuYWxzICYmIGludGVybmFscy50b3VjaE5v
ZGVBZGp1c3RlZFRvQmVzdENsaWNrYWJsZU5vZGUpIHsKLSAgICAgICAgICAgIGRlc2NyaXB0aW9u
KCdUZXN0IHRvdWNoIGFkanVzdG1lbnQgb24gYSBsYXJnZSBkaXYuICBUaGUgYWRqdXN0ZWQgdG91
Y2ggcG9pbnQgc2hvdWxkIGxpZSBpbnNpZGUgdGhlIHRhcmdldCBlbGVtZW50IGFuZCB3aXRoaW4g
dGhlIHRvdWNoIGFyZWEuJyk7Ci0gICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsK
LSAgICAgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICAgICAgZGVz
Y3JpcHRpb24oZG9jdW1lbnQudGl0bGUpOwogICAgICAgICAgICAgcnVuVG91Y2hUZXN0cygpOwot
ICAgICAgICAgICAgaXNTdWNjZXNzZnVsbHlQYXJzZWQoKTsKLSAgICAgICAgICAgIHRlc3RSdW5u
ZXIubm90aWZ5RG9uZSgpOwogICAgICAgICB9CiAgICAgfQorICAgIHJ1blRlc3RzKCk7CiA8L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdG91
Y2hhZGp1c3RtZW50L2Jsb2NrLXRlc3RpbmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdG91
Y2hhZGp1c3RtZW50L2Jsb2NrLXRlc3RpbmctZXhwZWN0ZWQudHh0CmluZGV4IGY0NzA2MTEwZmQw
NjllZTFlNGFmYmIxNWJkNGFhMzA4NzcxMjI0ZDMuLjZkOWU1OGQ3N2VkYWU4ZTNhYmE1NGEzMWM4
MjA0NjdlOGNlYmQ3YTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3RvdWNoYWRqdXN0bWVudC9i
bG9jay10ZXN0aW5nLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy90b3VjaGFkanVzdG1l
bnQvYmxvY2stdGVzdGluZy1leHBlY3RlZC50eHQKQEAgLTEsMTAgKzEsOSBAQAotU29tZSB0ZXh0
LiBTb21lIHRleHQuIEEgbGluawogVGVzdCB0b3VjaC1hZGp1c3RtZW50IG9uIGEgYmxvY2sgd2hl
cmUgd2UgYWxzbyB0b3VjaCB0aGUgaW5uZXIgdGV4dCBhbmQgb3V0c2lkZSBsaW5rLgogCiBPbiBz
dWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dl
ZCBieSAiVEVTVCBDT01QTEVURSIuCiAKIAotUEFTUyBhZGp1c3RlZE5vZGUuaWQgaXMgImRpdjEi
CitQQVNTIGFkanVzdGVkIG5vZGUgd2FzIERJViNkaXYxLgogUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90b3Vj
aGFkanVzdG1lbnQvYmxvY2stdGVzdGluZy5odG1sIGIvTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3Rt
ZW50L2Jsb2NrLXRlc3RpbmcuaHRtbAppbmRleCA0ZmIxOGE1ZDI3NTJjMWQ2MTMzNjZiNjZmZTc0
NjA1YTRjZTc3MGM0Li4zZTZjZTliZjYyZDY5MGQ4ZjBjNjJmNGQ2YTI3YTM5OWNiNzM2NmRhIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy90b3VjaGFkanVzdG1lbnQvYmxvY2stdGVzdGluZy5odG1s
CisrKyBiL0xheW91dFRlc3RzL3RvdWNoYWRqdXN0bWVudC9ibG9jay10ZXN0aW5nLmh0bWwKQEAg
LTEsNTcgKzEsNDggQEAKKzwhRE9DVFlQRSBodG1sPgogPGh0bWw+CiA8aGVhZD4KKyAgICA8dGl0
bGU+IFRlc3QgdG91Y2gtYWRqdXN0bWVudCBvbiBhIGJsb2NrIHdoZXJlIHdlIGFsc28gdG91Y2gg
dGhlIGlubmVyIHRleHQgYW5kIG91dHNpZGUgbGluay48L3RpdGxlPgogICAgIDxzY3JpcHQgc3Jj
PSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CisgICAgPHNj
cmlwdCBzcmM9InJlc291cmNlcy90b3VjaGFkanVzdG1lbnQuanMiPjwvc2NyaXB0PgogICAgIDxz
dHlsZT4KKyAgICAgICAgI3NhbmRib3ggeyBwb3NpdGlvbjogYWJzb2x1dGU7IGxlZnQ6IDBweDsg
dG9wOiAwcHg7IHdpZHRoOiA0MDBweDsgaGVpZ2h0OiAyMDBweDsgfQogICAgICAgICAjZGl2MSB7
IHBvc2l0aW9uOiBhYnNvbHV0ZTsgbGVmdDogNTBweDsgdG9wOiA1MHB4OyB3aWR0aDogMjAwcHg7
IGhlaWdodDogNTBweDt9CiAgICAgICAgICNkaXYyIHsgcG9zaXRpb246IGFic29sdXRlOyBsZWZ0
OiA1MHB4OyB0b3A6IDEwMHB4OyB3aWR0aDogMjAwcHg7IGhlaWdodDogNTBweDt9CiAgICAgPC9z
dHlsZT4KIDwvaGVhZD4KLTxib2R5IG9ubG9hZD0icnVuVGVzdHMoKSI+Cis8Ym9keT4KKyAgICA8
ZGl2IGlkPXNhbmRib3g+CisgICAgICAgIDxkaXYgaWQ9ZGl2MSBvbmNsaWNrPW9uQ2xpY2s+Cisg
ICAgICAgIFNvbWUgdGV4dC4KKyAgICAgICAgPC9kaXY+CiAKLTxkaXYgaWQ9ZGl2MSBvbmNsaWNr
PWRvU29tZXRoaW5nPgotU29tZSB0ZXh0LgotPC9kaXY+CisgICAgICAgIDxkaXYgaWQ9ZGl2Mj4K
KyAgICAgICAgU29tZSB0ZXh0LiA8YSBpZD1hMSBocmVmPSIjMSI+QSBsaW5rPC9hPgorICAgICAg
ICA8L2Rpdj4KKyAgICA8L2Rpdj4KIAotPGRpdiBpZD1kaXYyPgotU29tZSB0ZXh0LiA8YSBpZD1h
MSBocmVmPSIjMSI+QSBsaW5rPC9hPgotPC9kaXY+CisgICAgPHAgaWQ9J2Rlc2NyaXB0aW9uJz48
L3A+CisgICAgPGRpdiBpZD0nY29uc29sZSc+PC9kaXY+CiAKLTxwIGlkPSdkZXNjcmlwdGlvbic+
PC9wPgotPGRpdiBpZD0nY29uc29sZSc+PC9kaXY+Ci0KLTxzY3JpcHQ+Ci0gICAgZnVuY3Rpb24g
ZG9Tb21ldGhpbmcoKSB7Ci0gICAgICAgIC8vIERvIHNvbWV0aGluZyEKLSAgICB9CisgICAgPHNj
cmlwdD4KKyAgICAgICAgZnVuY3Rpb24gb25DbGljaygpIHsKKyAgICAgICAgfQogCi0gICAgZnVu
Y3Rpb24gdGVzdFJvdW5kVG91Y2goeCwgeSwgcmFkaXVzKQotICAgIHsKLSAgICAgICAgdmFyIHgg
PSB4IC0gcmFkaXVzOwotICAgICAgICB2YXIgeSA9IHkgLSByYWRpdXM7Ci0gICAgICAgIHZhciB3
aWR0aCA9IHJhZGl1cyAqIDI7Ci0gICAgICAgIHZhciBoZWlnaHQgPSByYWRpdXMgKiAyOwotICAg
ICAgICB2YXIgYWRqdXN0ZWROb2RlID0gaW50ZXJuYWxzLnRvdWNoTm9kZUFkanVzdGVkVG9CZXN0
Q2xpY2thYmxlTm9kZSh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBkb2N1bWVudCk7Ci0gICAgICAgIGlm
IChhZGp1c3RlZE5vZGUubm9kZVR5cGUgPT0gMykgLy8gVEVYVCBub2RlCi0gICAgICAgICAgICBh
ZGp1c3RlZE5vZGUgPSBhZGp1c3RlZE5vZGUucGFyZW50Tm9kZTsKLSAgICAgICAgcmV0dXJuIGFk
anVzdGVkTm9kZTsKLSAgICB9Ci0gICAgZnVuY3Rpb24gdGVzdERpcmVjdFRvdWNoZXMoKQotICAg
IHsKLSAgICAgICAgYWRqdXN0ZWROb2RlID0gdGVzdFJvdW5kVG91Y2goMjAwLCA5MCwgMjAwKTsK
LSAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdhZGp1c3RlZE5vZGUuaWQnLCAnZGl2MScp
OworICAgICAgICBmdW5jdGlvbiB0ZXN0RGlyZWN0VG91Y2hlcygpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHRlc3RUb3VjaFBvaW50KHRvdWNoUG9pbnQoMjAwLCA5MCwgMjAwKSwgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ2RpdjEnKSk7CiAKLSAgICB9Ci0gICAgZnVuY3Rpb24gcnVuVGVzdHMo
KQotICAgIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyICYmIHdpbmRvdy5pbnRlcm5h
bHMgJiYgaW50ZXJuYWxzLnRvdWNoTm9kZUFkanVzdGVkVG9CZXN0Q2xpY2thYmxlTm9kZSkgewot
ICAgICAgICAgICAgZGVzY3JpcHRpb24oJ1Rlc3QgdG91Y2gtYWRqdXN0bWVudCBvbiBhIGJsb2Nr
IHdoZXJlIHdlIGFsc28gdG91Y2ggdGhlIGlubmVyIHRleHQgYW5kIG91dHNpZGUgbGluay4nKTsK
LSAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwotICAgICAgICAgICAgdGVzdFJ1
bm5lci53YWl0VW50aWxEb25lKCk7Ci0gICAgICAgICAgICB0ZXN0RGlyZWN0VG91Y2hlcygpOwot
ICAgICAgICAgICAgaXNTdWNjZXNzZnVsbHlQYXJzZWQoKTsKLSAgICAgICAgICAgIHRlc3RSdW5u
ZXIubm90aWZ5RG9uZSgpOwogICAgICAgICB9Ci0gICAgfQotPC9zY3JpcHQ+CisgICAgICAgIGZ1
bmN0aW9uIHJ1blRlc3RzKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyICYmIHdpbmRvdy5pbnRlcm5hbHMgJiYgaW50ZXJuYWxzLnRvdWNoTm9kZUFkanVzdGVk
VG9CZXN0Q2xpY2thYmxlTm9kZSkgeworICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uKGRvY3Vt
ZW50LnRpdGxlKTsKKyAgICAgICAgICAgICAgICB0ZXN0RGlyZWN0VG91Y2hlcygpOworICAgICAg
ICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzYW5kYm94Jykuc3R5bGUuZGlzcGxh
eSA9ICdub25lJzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBydW5UZXN0cygp
OworICAgIDwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RvdWNoYWRqdXN0bWVudC9k
aXNhYmxlZC1mb3JtZWxlbWVudHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdG91Y2hhZGp1
c3RtZW50L2Rpc2FibGVkLWZvcm1lbGVtZW50cy1leHBlY3RlZC50eHQKaW5kZXggZjhlY2JjMWE3
MjIyMjllYThlYzcwYjYwMzQ5OTU1ODlhOWNjMTZlYi4uNjUxYTgyNzUyNzc5YTAxNzVkYzM2ZjQ2
Nzk3ZDk0NTE4NTFjOGNhYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50
L2Rpc2FibGVkLWZvcm1lbGVtZW50cy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvdG91
Y2hhZGp1c3RtZW50L2Rpc2FibGVkLWZvcm1lbGVtZW50cy1leHBlY3RlZC50eHQKQEAgLTEsMjAg
KzEsMjAgQEAKLUxhYmVsIAotTGFiZWwgCiBUb3VjaCBBZGp1c3RtZW50IDogRGlzYWJsZWQgZm9y
bSBlbGVtZW50cyAtIGJ1ZyA5MjA5MwogCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAKIAog
VGVzdCB3ZSBjYW4gaGl0IHRoZSBmb3JtIGVsZW1lbnRzIGRpcmVjdGx5LgotUEFTUyBhZGp1c3Rl
ZE5vZGUuaWQgaXMgImxhYmVsMiIKLVBBU1MgYWRqdXN0ZWROb2RlLmlkIGlzICJpbnB1dDIiCitQ
QVNTIGFkanVzdGVkIG5vZGUgd2FzIG51bGwuCitQQVNTIGFkanVzdGVkIG5vZGUgd2FzIExBQkVM
I2xhYmVsMi4KK1BBU1MgYWRqdXN0ZWQgbm9kZSB3YXMgbnVsbC4KK1BBU1MgYWRqdXN0ZWQgbm9k
ZSB3YXMgSU5QVVQjaW5wdXQyLgogVGVzdCBpbmRpcmVjdCB0b3VjaGVzIGFyZSBhZGp1c3RlZCB0
byB0aGUgZW5hYmxlZCBmb3JtIGVsZW1lbnRzLgotUEFTUyBhZGp1c3RlZE5vZGUuaWQgaXMgImxh
YmVsMiIKLVBBU1MgYWRqdXN0ZWROb2RlLmlkIGlzICJsYWJlbDIiCi1QQVNTIGFkanVzdGVkTm9k
ZS5pZCBpcyAibGFiZWwyIgotUEFTUyBhZGp1c3RlZE5vZGUuaWQgaXMgImlucHV0MiIKLVBBU1Mg
YWRqdXN0ZWROb2RlLmlkIGlzICJpbnB1dDIiCi1QQVNTIGFkanVzdGVkTm9kZS5pZCBpcyAiaW5w
dXQyIgorUEFTUyBhZGp1c3RlZCBub2RlIHdhcyBMQUJFTCNsYWJlbDIuCitQQVNTIGFkanVzdGVk
IG5vZGUgd2FzIExBQkVMI2xhYmVsMi4KK1BBU1MgYWRqdXN0ZWQgbm9kZSB3YXMgTEFCRUwjbGFi
ZWwyLgorUEFTUyBhZGp1c3RlZCBub2RlIHdhcyBJTlBVVCNpbnB1dDIuCitQQVNTIGFkanVzdGVk
IG5vZGUgd2FzIElOUFVUI2lucHV0Mi4KK1BBU1MgYWRqdXN0ZWQgbm9kZSB3YXMgSU5QVVQjaW5w
dXQyLgogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90b3VjaGFkanVzdG1lbnQvZGlzYWJsZWQtZm9ybWVsZW1l
bnRzLmh0bWwgYi9MYXlvdXRUZXN0cy90b3VjaGFkanVzdG1lbnQvZGlzYWJsZWQtZm9ybWVsZW1l
bnRzLmh0bWwKaW5kZXggZWMxMDc1YjcwODFkZGEzYTU0OGY4NTlmYTRmMTczMjRmODI2Nzc0MC4u
OTgwZmI2NWVlMjQyYWRiMzRiN2ZmNDEwMDQwZWQ0MzA3YzhhYzlkOSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50L2Rpc2FibGVkLWZvcm1lbGVtZW50cy5odG1sCisrKyBi
L0xheW91dFRlc3RzL3RvdWNoYWRqdXN0bWVudC9kaXNhYmxlZC1mb3JtZWxlbWVudHMuaHRtbApA
QCAtMSwxNiArMSwxOCBAQAorPCFET0NUWVBFIGh0bWw+CiA8aHRtbD4KIDxoZWFkPgotPHRpdGxl
PlRvdWNoIEFkanVzdG1lbnQgOiBEaXNhYmxlZCBmb3JtIGVsZW1lbnRzIC0gYnVnIDkyMDkzPC90
aXRsZT4KLTxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Ci0gICAgI3NhbmRib3ggewotICAgICAgICBw
b3NpdGlvbjogYWJzb2x1dGU7Ci0gICAgICAgIGxlZnQ6IDBweDsKLSAgICAgICAgdG9wOiAwcHg7
Ci0gICAgICAgIHdpZHRoOiA2MDBweDsKLSAgICAgICAgaGVpZ2h0OiA2MDBweDsKLSAgICB9Ci08
L3N0eWxlPgotPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKyAgICA8dGl0bGU+VG91Y2ggQWRqdXN0bWVudCA6IERpc2FibGVkIGZvcm0g
ZWxlbWVudHMgLSBidWcgOTIwOTM8L3RpdGxlPgorICAgIDxzY3JpcHQgc3JjPSIuLi9mYXN0L2pz
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9InJl
c291cmNlcy90b3VjaGFkanVzdG1lbnQuanMiPjwvc2NyaXB0PgorICAgIDxzdHlsZSB0eXBlPSJ0
ZXh0L2NzcyI+CisgICAgICAgICNzYW5kYm94IHsKKyAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNv
bHV0ZTsKKyAgICAgICAgICAgIGxlZnQ6IDBweDsKKyAgICAgICAgICAgIHRvcDogMHB4OworICAg
ICAgICAgICAgd2lkdGg6IDYwMHB4OworICAgICAgICAgICAgaGVpZ2h0OiA2MDBweDsKKyAgICAg
ICAgfQorICAgIDwvc3R5bGU+CiA8L2hlYWQ+CiAKIDxib2R5IGlkPSJib2R5Ij4KQEAgLTI2LDY3
ICsyOCw0MiBAQAogPGRpdiBpZD0nY29uc29sZSc+PC9kaXY+CiAKIDxzY3JpcHQ+Ci0gICAgdmFy
IGFkanVzdGVkTm9kZTsKLSAgICBmdW5jdGlvbiB0ZXN0Um91bmRUb3VjaCh4LCB5LCByYWRpdXMp
Ci0gICAgewotICAgICAgICB2YXIgeCA9IHggLSByYWRpdXM7Ci0gICAgICAgIHZhciB5ID0geSAt
IHJhZGl1czsKLSAgICAgICAgdmFyIHdpZHRoID0gcmFkaXVzICogMjsKLSAgICAgICAgdmFyIGhl
aWdodCA9IHJhZGl1cyAqIDI7Ci0gICAgICAgIHZhciBhZGp1c3RlZE5vZGUgPSBpbnRlcm5hbHMu
dG91Y2hOb2RlQWRqdXN0ZWRUb0Jlc3RDbGlja2FibGVOb2RlKHgsIHksIHdpZHRoLCBoZWlnaHQs
IGRvY3VtZW50KTsKLSAgICAgICAgaWYgKGFkanVzdGVkTm9kZS5ub2RlVHlwZSA9PSAzKSAvLyBU
RVhUIG5vZGUKLSAgICAgICAgICAgIGFkanVzdGVkTm9kZSA9IGFkanVzdGVkTm9kZS5wYXJlbnRO
b2RlOwotICAgICAgICByZXR1cm4gYWRqdXN0ZWROb2RlOwotICAgIH0KKyAgICAvLyBTZXQgdXAg
c2hvcnRjdXQgYWNjZXNzIHRvIGVsZW1lbnRzCisgICAgdmFyIGUgPSB7fTsKKyAgICBbJ3NhbmRi
b3gnLCAnZm9ybSwnLCAnbGFiZWwxJywgJ2xhYmVsMicsICdpbnB1dDEnLCAnaW5wdXQyJ10uZm9y
RWFjaChmdW5jdGlvbihhKSB7CisgICAgICAgIGVbYV0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZChhKTsKKyAgICB9KTsKIAogICAgIGZ1bmN0aW9uIHRlc3REaXJlY3RUb3VjaGVzKCkKICAgICB7
CiAgICAgICAgIC8vIFF1aWNrIHNhbml0eSBjaGVjay4KICAgICAgICAgZGVidWcoJ1Rlc3Qgd2Ug
Y2FuIGhpdCB0aGUgZm9ybSBlbGVtZW50cyBkaXJlY3RseS4nKTsKIAotLy8gICAgICAgICBhZGp1
c3RlZE5vZGUgPSB0ZXN0Um91bmRUb3VjaCgxNiwgOCwgNSk7Ci0vLyAgICAgICAgIHNob3VsZEJl
RXF1YWxUb1N0cmluZygnYWRqdXN0ZWROb2RlLmlkJywgJ2xhYmVsMScpOwotCi0gICAgICAgIGFk
anVzdGVkTm9kZSA9IHRlc3RSb3VuZFRvdWNoKDE2LCAzOCwgNSk7Ci0gICAgICAgIHNob3VsZEJl
RXF1YWxUb1N0cmluZygnYWRqdXN0ZWROb2RlLmlkJywgJ2xhYmVsMicpOwotCi0vLyAgICAgICAg
IGFkanVzdGVkTm9kZSA9IHRlc3RSb3VuZFRvdWNoKDYwLCA4LCA1KTsKLS8vICAgICAgICAgc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCdhZGp1c3RlZE5vZGUuaWQnLCAnaW5wdXQxJyk7Ci0KLSAgICAg
ICAgYWRqdXN0ZWROb2RlID0gdGVzdFJvdW5kVG91Y2goNjAsIDM4LCA1KTsKLSAgICAgICAgc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCdhZGp1c3RlZE5vZGUuaWQnLCAnaW5wdXQyJyk7Ci0KKyAgICAg
ICAgdGVzdFRvdWNoUG9pbnQodG91Y2hQb2ludCgxNiwgOCwgNSksIG51bGwpOworICAgICAgICB0
ZXN0VG91Y2hQb2ludCh0b3VjaFBvaW50KDE2LCAzOCwgNSksIGUubGFiZWwyKTsKKyAgICAgICAg
dGVzdFRvdWNoUG9pbnQodG91Y2hQb2ludCg2MCwgOCwgNSksIG51bGwpOworICAgICAgICB0ZXN0
VG91Y2hQb2ludCh0b3VjaFBvaW50KDYwLCAzOCwgNSksIGUuaW5wdXQyKTsKICAgICB9CiAKICAg
ICBmdW5jdGlvbiB0ZXN0QWRqdXN0ZWRUb3VjaGVzKCkKICAgICB7CiAgICAgICAgIGRlYnVnKCdU
ZXN0IGluZGlyZWN0IHRvdWNoZXMgYXJlIGFkanVzdGVkIHRvIHRoZSBlbmFibGVkIGZvcm0gZWxl
bWVudHMuJyk7Ci0gICAgICAgIGFkanVzdGVkTm9kZSA9IHRlc3RSb3VuZFRvdWNoKDE2LCAyNSwg
MTApOwotICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2FkanVzdGVkTm9kZS5pZCcsICds
YWJlbDInKTsKLQotICAgICAgICBhZGp1c3RlZE5vZGUgPSB0ZXN0Um91bmRUb3VjaCgxNiwgMjAs
IDE1KTsKLSAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdhZGp1c3RlZE5vZGUuaWQnLCAn
bGFiZWwyJyk7Ci0KLSAgICAgICAgYWRqdXN0ZWROb2RlID0gdGVzdFJvdW5kVG91Y2goMTYsIDE2
LCAyMCk7Ci0gICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnYWRqdXN0ZWROb2RlLmlkJywg
J2xhYmVsMicpOwotCi0gICAgICAgIGFkanVzdGVkTm9kZSA9IHRlc3RSb3VuZFRvdWNoKDYwLCAy
NSwgMTApOwotICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2FkanVzdGVkTm9kZS5pZCcs
ICdpbnB1dDInKTsKLQotICAgICAgICBhZGp1c3RlZE5vZGUgPSB0ZXN0Um91bmRUb3VjaCg2MCwg
MjAsIDE1KTsKLSAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdhZGp1c3RlZE5vZGUuaWQn
LCAnaW5wdXQyJyk7CisgICAgICAgIHRlc3RUb3VjaFBvaW50KHRvdWNoUG9pbnQoMTYsIDI1LCAx
MCksIGUubGFiZWwyKTsKKyAgICAgICAgdGVzdFRvdWNoUG9pbnQodG91Y2hQb2ludCgxNiwgMjAs
IDE1KSwgZS5sYWJlbDIpOworICAgICAgICB0ZXN0VG91Y2hQb2ludCh0b3VjaFBvaW50KDE2LCAx
NiwgMjApLCBlLmxhYmVsMik7CiAKLSAgICAgICAgYWRqdXN0ZWROb2RlID0gdGVzdFJvdW5kVG91
Y2goNjAsIDE2LCAyMCk7Ci0gICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnYWRqdXN0ZWRO
b2RlLmlkJywgJ2lucHV0MicpOworICAgICAgICB0ZXN0VG91Y2hQb2ludCh0b3VjaFBvaW50KDYw
LCAyNSwgMTApLCBlLmlucHV0Mik7CisgICAgICAgIHRlc3RUb3VjaFBvaW50KHRvdWNoUG9pbnQo
NjAsIDIwLCAxNSksIGUuaW5wdXQyKTsKKyAgICAgICAgdGVzdFRvdWNoUG9pbnQodG91Y2hQb2lu
dCg2MCwgMTYsIDIwKSwgZS5pbnB1dDIpOwogICAgIH0KIAogICAgIGZ1bmN0aW9uIHJ1blRlc3Rz
KCkKICAgICB7CiAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lciAmJiB3aW5kb3cuaW50ZXJu
YWxzICYmIGludGVybmFscy50b3VjaE5vZGVBZGp1c3RlZFRvQmVzdENsaWNrYWJsZU5vZGUpIHsK
ICAgICAgICAgICAgIGRlc2NyaXB0aW9uKGRvY3VtZW50LnRpdGxlKTsKLSAgICAgICAgICAgIHRl
c3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAgICAgICAgICAgdGVzdERpcmVjdFRvdWNoZXMoKTsK
ICAgICAgICAgICAgIHRlc3RBZGp1c3RlZFRvdWNoZXMoKTsKKyAgICAgICAgICAgIGUuc2FuZGJv
eC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy90b3VjaGFkanVzdG1lbnQvZXZlbnQtdHJpZ2dlcmVkLXdpZGdldHMtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50L2V2ZW50LXRyaWdnZXJlZC13
aWRnZXRzLWV4cGVjdGVkLnR4dAppbmRleCBiNTlkZjRhYTU2OGExYmRmYmU4YTg0NWFlODQxOTQy
MTgzZTc3YTI0Li4yMTgwMDk4YWU1OTliOTA5NmQyMmMxZjBhYzAzMTk3NGU4YzgxMTAzIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy90b3VjaGFkanVzdG1lbnQvZXZlbnQtdHJpZ2dlcmVkLXdpZGdl
dHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3RvdWNoYWRqdXN0bWVudC9ldmVudC10
cmlnZ2VyZWQtd2lkZ2V0cy1leHBlY3RlZC50eHQKQEAgLTI0LDggKzI0LDQgQEAgUEFTUyBhZGp1
c3RlZE5vZGUuaWQgaXMgZWxlbWVudC5pZAogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQogCiBURVNUIENPTVBMRVRFCi1Gb2N1cyBoZXJlIHNob3VsZCBnaXZlIGEgdGV4dCBpbnB1dC1m
aWVsZC4KLU1vdXNlLW92ZXIgaGVyZSBzaG91bGQgZ2l2ZSBhIHRleHQgaW5wdXQtZmllbGQuCi1I
b3ZlcmluZyBoZXJlIHNob3VsZCBnaXZlIGEgdGV4dCBpbnB1dC1maWVsZC4gCi1Gb2N1c2luZyBo
ZXJlIHNob3VsZCBvbmx5IGdpdmUgZm9jdXMgb3V0bGluZSB0byB0aGlzIGlubmVyIHRleHQuCi1G
b2N1c2luZyBoZXJlIHNob3VsZCBnaXZlIGEgdGV4dCBpbnB1dC1maWVsZC4KKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50L2V2ZW50LXRyaWdnZXJlZC13aWRnZXRzLmh0
bWwgYi9MYXlvdXRUZXN0cy90b3VjaGFkanVzdG1lbnQvZXZlbnQtdHJpZ2dlcmVkLXdpZGdldHMu
aHRtbAppbmRleCA2ZWE2YWQ4MmZkZGQwMGJjMGE3YTgxMDBlMjZhYzZiODRkNzZmZmI3Li44MmJm
ZDRkNzQ0N2U0MWIxMjRmODVjZmJhMDM3MDVkMTE3YjY3YjM3IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy90b3VjaGFkanVzdG1lbnQvZXZlbnQtdHJpZ2dlcmVkLXdpZGdldHMuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy90b3VjaGFkanVzdG1lbnQvZXZlbnQtdHJpZ2dlcmVkLXdpZGdldHMuaHRtbApA
QCAtMSwxNyArMSw2MyBAQAorPCFET0NUWVBFIGh0bWw+CiA8aHRtbD4KIDxoZWFkPgotPHN0eWxl
PgotICAgIC5ib3ggeyBib3JkZXI6IDFweCBzb2xpZCBibGFjazsgYm9yZGVyLXJhZGl1czogNXB4
IDVweDsgbWFyZ2luOiAxZW07IHdpZHRoOiA0MGVtOyB9Ci08L3N0eWxlPgotCi08c2NyaXB0IHNy
Yz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotCisgICAg
PHRpdGxlPlRlc3QgdmFyaW91cyB3YXlzIHRvIHRyaWdnZXIgaW5wdXQtd2lkZ2V0cy4gT24gYSB0
b3VjaCBpbnRlcmZhY2UsIGFsbCB0aGUgYWN0aW9ucyBzaG91bGQgYmUgdHJpZ2dlcmFibGUgd2l0
aCBlaXRoZXIgYSB0b3VjaCBkb3duIG9yIGEgdG91Y2ggdGFwLjwvdGl0bGU+CisgICAgPHNjcmlw
dCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKyAg
ICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3RvdWNoYWRqdXN0bWVudC5qcyI+PC9zY3JpcHQ+Cisg
ICAgPHN0eWxlPgorICAgICAgICAuYm94IHsgYm9yZGVyOiAxcHggc29saWQgYmxhY2s7IGJvcmRl
ci1yYWRpdXM6IDVweCA1cHg7IG1hcmdpbjogMWVtOyB3aWR0aDogNDBlbTsgfQorICAgIDwvc3R5
bGU+CiA8L2hlYWQ+CiAKLTxib2R5IG9ubG9hZD0icnVuVGVzdHMoKSI+Cis8Ym9keT4KKworPGRp
diBpZD1zYW5kYm94PgorICAgIDxzY3JpcHQ+CisgICAgICAgIGZ1bmN0aW9uIHRyaWdnZXJJbnB1
dCgpIHsKKyAgICAgICAgICAgIHZhciBlbGVtZW50ID0gZXZlbnQuc3JjRWxlbWVudDsKKyAgICAg
ICAgICAgIGlmICghZWxlbWVudC5vcGVuKSB7CisgICAgICAgICAgICAgICAgZWxlbWVudC5pbm5l
ckhUTUwgPSAnPGlucHV0IHR5cGU9dGV4dCBzdHlsZT0id2lkdGg6IDEwMCUiPjwvaW5wdXQ+Jwor
ICAgICAgICAgICAgICAgIGVsZW1lbnQub3BlbiA9IHRydWU7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBlbGVtZW50LmZpcnN0Q2hpbGQuZm9jdXMoKTsKKyAgICAgICAgfQorICAgIDwvc2Ny
aXB0PgorCisgICAgPGRpdiBpZD10ZXN0MSBjbGFzcz1ib3ggdGFiaW5kZXg9MSBvbmZvY3VzPSd0
cmlnZ2VySW5wdXQoKSc+CisgICAgRm9jdXMgaGVyZSBzaG91bGQgZ2l2ZSBhIHRleHQgaW5wdXQt
ZmllbGQuCisgICAgPC9kaXY+CisKKyAgICA8ZGl2IGlkPXRlc3QyIGNsYXNzPWJveCBvbm1vdXNl
b3Zlcj0ndHJpZ2dlcklucHV0KCknPiAKKyAgICBNb3VzZS1vdmVyIGhlcmUgc2hvdWxkIGdpdmUg
YSB0ZXh0IGlucHV0LWZpZWxkLgorICAgIDwvZGl2PgorCisgICAgPHN0eWxlPgorICAgICAgICAu
Ym94Om5vdCg6aG92ZXIpIC5ob3ZlcnRyaWdnZXJlZCB7IHZpc2liaWxpdHk6IGhpZGRlbjt9Cisg
ICAgICAgIC5ib3g6aG92ZXIgLmhvdmVyZmFsbGJhY2sgeyBkaXNwbGF5OiBub25lOyB9ICAKKyAg
ICA8L3N0eWxlPgorCisgICAgPGRpdiBpZD10ZXN0MyBjbGFzcz1ib3g+IAorICAgICAgICA8c3Bh
biBjbGFzcz1ob3ZlcmZhbGxiYWNrPkhvdmVyaW5nIGhlcmUgc2hvdWxkIGdpdmUgYSB0ZXh0IGlu
cHV0LWZpZWxkLjwvc3Bhbj4KKyAgICAgICAgPGlucHV0IHR5cGU9dGV4dCBjbGFzcz1ob3ZlcnRy
aWdnZXJlZD48L2lucHV0PgorICAgIDwvZGl2PgorCisgICAgPGRpdiBpZD10ZXN0NCBjbGFzcz1i
b3ggb25mb2N1cz0ndHJpZ2dlcklucHV0KCknPgorICAgICAgICA8c3BhbiB0YWJpbmRleD0xPiBG
b2N1c2luZyBoZXJlIHNob3VsZCBvbmx5IGdpdmUgZm9jdXMgb3V0bGluZSB0byB0aGlzIGlubmVy
IHRleHQuCisgICAgICAgIDwvc3Bhbj4KKyAgICA8L2Rpdj4KKworICAgIDxkaXYgaWQ9dGVzdDUg
Y2xhc3M9Ym94PgorICAgICAgICA8c3BhbiB0YWJpbmRleD0xPiBGb2N1c2luZyBoZXJlIHNob3Vs
ZCBnaXZlIGEgdGV4dCBpbnB1dC1maWVsZC4KKyAgICAgICAgPC9zcGFuPgorICAgIDwvZGl2Pgor
CisgICAgPHNjcmlwdD4KKyAgICAgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgndGVzdDUnKTsKKyAgICAgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdET01Gb2N1
c0luJywgdHJpZ2dlcklucHV0LCBmYWxzZSk7CisgICAgPC9zY3JpcHQ+Cis8L2Rpdj4KIAogPHAg
aWQ9J2Rlc2NyaXB0aW9uJz48L3A+Ci0KIDxkaXYgaWQ9J2NvbnNvbGUnPjwvZGl2PgogCiA8c2Ny
aXB0PgpAQCAtMzcsMzIgKzgzLDIwIEBACiAKICAgICBmdW5jdGlvbiB0ZXN0RGlyZWN0VG91Y2go
ZWxlbWVudCkKICAgICB7Ci0gICAgICAgIHZhciBwb3MgPSBmaW5kQWJzb2x1dGVQb3NpdGlvbihl
bGVtZW50KTsKLSAgICAgICAgdmFyIHggPSBwb3MubGVmdCArIGVsZW1lbnQuY2xpZW50V2lkdGgg
LyAyIC0gMTsKLSAgICAgICAgdmFyIHkgPSBwb3MudG9wICsgZWxlbWVudC5jbGllbnRIZWlnaHQg
LyAyIC0gMTsKLSAgICAgICAgdmFyIHdpZHRoID0gMzsKLSAgICAgICAgdmFyIGhlaWdodCA9IDM7
Ci0gICAgICAgIGFkanVzdGVkTm9kZSA9IGZpbmRCZXN0Q2xpY2thYmxlTm9kZSh4LCB5LCB3aWR0
aCwgaGVpZ2h0KTsKKyAgICAgICAgdmFyIHRvdWNocG9pbnQgPSBvZmZzZXRUb3VjaFBvaW50KGZp
bmRBYnNvbHV0ZUJvdW5kcyhlbGVtZW50KSwgJ2NlbnRlcicsIDAsIDIsIDIpOworICAgICAgICBh
ZGp1c3RlZE5vZGUgPSBmaW5kQmVzdENsaWNrYWJsZU5vZGUodG91Y2hwb2ludC5sZWZ0LCB0b3Vj
aHBvaW50LnRvcCwgdG91Y2hwb2ludC53aWR0aCwgdG91Y2hwb2ludC5oZWlnaHQpOwogICAgIH0K
IAogICAgIGZ1bmN0aW9uIHRlc3REaXJlY3RGYXRGaW5nZXIoZWxlbWVudCkKICAgICB7Ci0gICAg
ICAgIHZhciBwb3MgPSBmaW5kQWJzb2x1dGVQb3NpdGlvbihlbGVtZW50KTsKLSAgICAgICAgdmFy
IHggPSBwb3MubGVmdCArIGVsZW1lbnQuY2xpZW50V2lkdGggLyAyIC0gMTsKLSAgICAgICAgdmFy
IHkgPSBwb3MudG9wIC0gNSA7Ci0gICAgICAgIHZhciB3aWR0aCA9IGVsZW1lbnQuY2xpZW50SGVp
Z2h0OwotICAgICAgICB2YXIgaGVpZ2h0ID0gZWxlbWVudC5jbGllbnRIZWlnaHQgKyAxMDsKLSAg
ICAgICAgYWRqdXN0ZWROb2RlID0gZmluZEJlc3RDbGlja2FibGVOb2RlKHgsIHksIHdpZHRoLCBo
ZWlnaHQpOworICAgICAgICB2YXIgdG91Y2hwb2ludCA9IG9mZnNldFRvdWNoUG9pbnQoZmluZEFi
c29sdXRlQm91bmRzKGVsZW1lbnQpLCAndG9wJywgLTUsIGVsZW1lbnQuY2xpZW50SGVpZ2h0LzIs
IChlbGVtZW50LmNsaWVudEhlaWdodCsxMCkvMik7CisgICAgICAgIGFkanVzdGVkTm9kZSA9IGZp
bmRCZXN0Q2xpY2thYmxlTm9kZSh0b3VjaHBvaW50LmxlZnQsIHRvdWNocG9pbnQudG9wLCB0b3Vj
aHBvaW50LndpZHRoLCB0b3VjaHBvaW50LmhlaWdodCk7CiAgICAgfQogCiAgICAgZnVuY3Rpb24g
dGVzdEluZGlyZWN0RmF0RmluZ2VyKGVsZW1lbnQpCiAgICAgewotICAgICAgICB2YXIgcG9zID0g
ZmluZEFic29sdXRlUG9zaXRpb24oZWxlbWVudCk7Ci0gICAgICAgIHZhciB4ID0gcG9zLmxlZnQg
KyBlbGVtZW50LmNsaWVudFdpZHRoIC8gMiAtIDE7Ci0gICAgICAgIHZhciB5ID0gcG9zLnRvcCAt
IDc7Ci0gICAgICAgIHZhciB3aWR0aCA9IDEwOwotICAgICAgICB2YXIgaGVpZ2h0ID0gMTA7Ci0g
ICAgICAgIGFkanVzdGVkTm9kZSA9IGZpbmRCZXN0Q2xpY2thYmxlTm9kZSh4LCB5LCB3aWR0aCwg
aGVpZ2h0KTsKKyAgICAgICAgdmFyIHRvdWNocG9pbnQgPSBvZmZzZXRUb3VjaFBvaW50KGZpbmRB
YnNvbHV0ZUJvdW5kcyhlbGVtZW50KSwgJ3RvcCcsIDMsIDUsIDUpOworICAgICAgICBhZGp1c3Rl
ZE5vZGUgPSBmaW5kQmVzdENsaWNrYWJsZU5vZGUodG91Y2hwb2ludC5sZWZ0LCB0b3VjaHBvaW50
LnRvcCwgdG91Y2hwb2ludC53aWR0aCwgdG91Y2hwb2ludC5oZWlnaHQpOwogICAgIH0KIAogICAg
IGZ1bmN0aW9uIHRlc3RUb3VjaEhpdChlbGVtZW50aWQsIHRvdWNoVHlwZSkgewpAQCAtMTEwLDYx
ICsxNDQsMTUgQEAKICAgICBmdW5jdGlvbiBydW5UZXN0cygpCiAgICAgewogICAgICAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIgJiYgd2luZG93LmludGVybmFscyAmJiBpbnRlcm5hbHMudG91Y2hO
b2RlQWRqdXN0ZWRUb0Jlc3RDbGlja2FibGVOb2RlKSB7Ci0gICAgICAgICAgICBkZXNjcmlwdGlv
bignVGVzdCB2YXJpb3VzIHdheXMgdG8gdHJpZ2dlciBpbnB1dC13aWRnZXRzLiBPbiBhIHRvdWNo
IGludGVyZmFjZSwgYWxsIHRoZSBhY3Rpb25zIHNob3VsZCBiZSB0cmlnZ2VyYWJsZSB3aXRoIGVp
dGhlciBhIHRvdWNoIGRvd24gb3IgYSB0b3VjaCB0YXAuJyk7Ci0gICAgICAgICAgICB0ZXN0UnVu
bmVyLmR1bXBBc1RleHQoKTsKLSAgICAgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgp
OworICAgICAgICAgICAgZGVzY3JpcHRpb24oZG9jdW1lbnQudGl0bGUpOwogICAgICAgICAgICAg
dGVzdERpcmVjdFRvdWNoZXMoKTsKICAgICAgICAgICAgIHRlc3REaXJlY3RGYXRGaW5nZXJzKCk7
CiAgICAgICAgICAgICB0ZXN0SW5kaXJlY3RGYXRGaW5nZXJzKCk7Ci0gICAgICAgICAgICBpc1N1
Y2Nlc3NmdWxseVBhcnNlZCgpOwotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7
CisgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2FuZGJveCcpLnN0eWxlLmRp
c3BsYXkgPSAnbm9uZSc7CiAgICAgICAgIH0KICAgICB9CisgICAgcnVuVGVzdHMoKTsKIDwvc2Ny
aXB0PgotCi08c2NyaXB0PgotICAgIGZ1bmN0aW9uIHRyaWdnZXJJbnB1dCgpIHsKLSAgICAgICAg
dmFyIGVsZW1lbnQgPSBldmVudC5zcmNFbGVtZW50OwotICAgICAgICBpZiAoIWVsZW1lbnQub3Bl
bikgewotICAgICAgICAgICAgZWxlbWVudC5pbm5lckhUTUwgPSAnPGlucHV0IHR5cGU9dGV4dCBz
dHlsZT0id2lkdGg6IDEwMCUiPjwvaW5wdXQ+JwotICAgICAgICAgICAgZWxlbWVudC5vcGVuID0g
dHJ1ZTsKLSAgICAgICAgfQotICAgICAgICBlbGVtZW50LmZpcnN0Q2hpbGQuZm9jdXMoKTsKLSAg
ICB9Ci08L3NjcmlwdD4KLQotPGRpdiBpZD10ZXN0MSBjbGFzcz1ib3ggdGFiaW5kZXg9MSBvbmZv
Y3VzPSd0cmlnZ2VySW5wdXQoKSc+Ci1Gb2N1cyBoZXJlIHNob3VsZCBnaXZlIGEgdGV4dCBpbnB1
dC1maWVsZC4KLTwvZGl2PgotCi08ZGl2IGlkPXRlc3QyIGNsYXNzPWJveCBvbm1vdXNlb3Zlcj0n
dHJpZ2dlcklucHV0KCknPiAKLU1vdXNlLW92ZXIgaGVyZSBzaG91bGQgZ2l2ZSBhIHRleHQgaW5w
dXQtZmllbGQuCi08L2Rpdj4KLQotPHN0eWxlPgotICAgIC5ib3g6bm90KDpob3ZlcikgLmhvdmVy
dHJpZ2dlcmVkIHsgdmlzaWJpbGl0eTogaGlkZGVuO30KLSAgICAuYm94OmhvdmVyIC5ob3ZlcmZh
bGxiYWNrIHsgZGlzcGxheTogbm9uZTsgfSAgCi08L3N0eWxlPgotCi08ZGl2IGlkPXRlc3QzIGNs
YXNzPWJveD4gCi0gICAgPHNwYW4gY2xhc3M9aG92ZXJmYWxsYmFjaz5Ib3ZlcmluZyBoZXJlIHNo
b3VsZCBnaXZlIGEgdGV4dCBpbnB1dC1maWVsZC48L3NwYW4+Ci0gICAgPGlucHV0IHR5cGU9dGV4
dCBjbGFzcz1ob3ZlcnRyaWdnZXJlZD48L2lucHV0PgotPC9kaXY+Ci0KLTxkaXYgaWQ9dGVzdDQg
Y2xhc3M9Ym94IG9uZm9jdXM9J3RyaWdnZXJJbnB1dCgpJz4KLSAgICA8c3BhbiB0YWJpbmRleD0x
PiBGb2N1c2luZyBoZXJlIHNob3VsZCBvbmx5IGdpdmUgZm9jdXMgb3V0bGluZSB0byB0aGlzIGlu
bmVyIHRleHQuCi0gICAgPC9zcGFuPgotPC9kaXY+Ci0KLTxkaXYgaWQ9dGVzdDUgY2xhc3M9Ym94
PgotICAgIDxzcGFuIHRhYmluZGV4PTE+IEZvY3VzaW5nIGhlcmUgc2hvdWxkIGdpdmUgYSB0ZXh0
IGlucHV0LWZpZWxkLgotICAgIDwvc3Bhbj4KLTwvZGl2PgotCi08c2NyaXB0PgotICAgIHZhciBl
bGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3Q1Jyk7Ci0gICAgZWxlbWVudC5h
ZGRFdmVudExpc3RlbmVyKCdET01Gb2N1c0luJywgdHJpZ2dlcklucHV0LCBmYWxzZSk7Ci08L3Nj
cmlwdD4KLQorPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90
b3VjaGFkanVzdG1lbnQvaHRtbC1sYWJlbC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90b3Vj
aGFkanVzdG1lbnQvaHRtbC1sYWJlbC1leHBlY3RlZC50eHQKaW5kZXggZjk2OWZkYjhkYmQ5OGZk
MjQyMDhjYTRmZjBhZDMxM2JjZjJkNzMyMy4uYWY3NmY3MzMxNjc1NWI1Njk2NmMwMjI5OWZlN2U5
MzBjMTVjNmMzZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50L2h0bWwt
bGFiZWwtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3RvdWNoYWRqdXN0bWVudC9odG1s
LWxhYmVsLWV4cGVjdGVkLnR4dApAQCAtMSwyMSArMSwxNiBAQAotRG8gbm90IGNsaWNrIGhlcmUK
LUNsaWNrIGhlcmUsIGJ1dCBub3QgaGVyZS4gCi0KLQotCiBUZXN0cyBpZiBsYWJlbHMgYXJlIHRy
ZWF0ZWQgYXMgY2xpY2thYmxlIGlmIHRoZSBpbnB1dCB0aGV5IGNvbnRyb2wgaXMuCiAKIE9uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KIAogCiBUZXN0aW5nIHNtYWxsIGRpcmVjdCBoaXRzLgotUEFT
UyBhZGp1c3RlZE5vZGUuaWQgaXMgIm15bGluayIKLVBBU1MgYWRqdXN0ZWROb2RlLmlkIGlzICJt
eWxhYmVsIgotUEFTUyBhZGp1c3RlZE5vZGUuaWQgaXMgIm15aW5wdXQiCitQQVNTIGFkanVzdGVk
IG5vZGUgd2FzIEEjbXlsaW5rLgorUEFTUyBhZGp1c3RlZCBub2RlIHdhcyBMQUJFTCNteWxhYmVs
LgorUEFTUyBhZGp1c3RlZCBub2RlIHdhcyBJTlBVVCNteWlucHV0LgogVGVzdGluZyBpbmRpcmVj
dCBoaXRzLgotUEFTUyBhZGp1c3RlZE5vZGUuaWQgaXMgIm15bGluayIKLVBBU1MgYWRqdXN0ZWRO
b2RlLmlkIGlzICJteWxhYmVsIgotUEFTUyBhZGp1c3RlZE5vZGUuaWQgaXMgIm15aW5wdXQiCitQ
QVNTIGFkanVzdGVkIG5vZGUgd2FzIEEjbXlsaW5rLgorUEFTUyBhZGp1c3RlZCBub2RlIHdhcyBM
QUJFTCNteWxhYmVsLgorUEFTUyBhZGp1c3RlZCBub2RlIHdhcyBJTlBVVCNteWlucHV0LgogUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy90b3VjaGFkanVzdG1lbnQvaHRtbC1sYWJlbC5odG1sIGIvTGF5b3V0VGVz
dHMvdG91Y2hhZGp1c3RtZW50L2h0bWwtbGFiZWwuaHRtbAppbmRleCAyN2M1YmRmZDBkZjdjMDkx
NDkyN2IzZjI4Mjc3YWEzYWU5ZTFiMWM5Li42YzBmODgwNzliZWYzZjI3YTZlMjM3ZTEyZWQzNGZi
Njk0NGMxMGM0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy90b3VjaGFkanVzdG1lbnQvaHRtbC1s
YWJlbC5odG1sCisrKyBiL0xheW91dFRlc3RzL3RvdWNoYWRqdXN0bWVudC9odG1sLWxhYmVsLmh0
bWwKQEAgLTEsMTggKzEsMjggQEAKKzwhRE9DVFlQRSBodG1sPgogPGh0bWw+CiA8aGVhZD4KLTxz
Y3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Ci0KKyAgICA8dGl0bGU+VGVzdHMgaWYgbGFiZWxzIGFyZSB0cmVhdGVkIGFzIGNsaWNrYWJsZSBp
ZiB0aGUgaW5wdXQgdGhleSBjb250cm9sIGlzLjwvdGl0bGU+CisgICAgPHNjcmlwdCBzcmM9Ii4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0
IHNyYz0icmVzb3VyY2VzL3RvdWNoYWRqdXN0bWVudC5qcyI+PC9zY3JpcHQ+CisgICAgPHN0eWxl
PgorICAgICAgICAjc2FuZGJveCB7CisgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7Cisg
ICAgICAgICAgICBsZWZ0OiAwcHg7CisgICAgICAgICAgICB0b3A6IDBweDsKKyAgICAgICAgfQor
ICAgIDwvc3R5bGU+CiA8L2hlYWQ+CiAKLTxib2R5IGlkPSJteWJvZHkiIG9ubG9hZD0icnVuVGVz
dHMoKSI+Cis8Ym9keT4KIAotPGEgaHJlZj0iI215Zm9ybSIgaWQ9Im15bGluayI+RG8gbm90IGNs
aWNrIGhlcmU8L2E+PGJyPgotPGZvcm0gaWQ9Im15Zm9ybSI+Ci08bGFiZWwgZm9yPSJteWlucHV0
IiBpZD0ibXlsYWJlbCI+Q2xpY2sgaGVyZSw8L2xhYmVsPgotPHNwYW4gaWQ9Im15c3BhbiI+YnV0
IG5vdCBoZXJlLjwvc3Bhbj4KLTxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0ibXlpbnB1dCIgdmFsdWU9
IlRvIGZvY3VzIHRoaXMuIj48L2lucHV0PgotPC9mb3JtPgotPGJyPjxicj48YnI+Cis8ZGl2IGlk
PXNhbmRib3g+CisgICAgPGEgaHJlZj0iI215Zm9ybSIgaWQ9Im15bGluayI+RG8gbm90IGNsaWNr
IGhlcmU8L2E+PGJyPgorICAgIDxmb3JtIGlkPSJteWZvcm0iPgorICAgIDxsYWJlbCBmb3I9Im15
aW5wdXQiIGlkPSJteWxhYmVsIj5DbGljayBoZXJlLDwvbGFiZWw+CisgICAgPHNwYW4gaWQ9Im15
c3BhbiI+YnV0IG5vdCBoZXJlLjwvc3Bhbj4KKyAgICA8aW5wdXQgdHlwZT0idGV4dCIgaWQ9Im15
aW5wdXQiIHZhbHVlPSJUbyBmb2N1cyB0aGlzLiI+PC9pbnB1dD4KKyAgICA8L2Zvcm0+Cis8L2Rp
dj4KIAogPHAgaWQ9J2Rlc2NyaXB0aW9uJz48L3A+CiA8ZGl2IGlkPSdjb25zb2xlJz48L2Rpdj4K
QEAgLTIwLDg5ICszMCw1NCBAQAogPHNjcmlwdD4KICAgICB2YXIgZWxlbWVudDsKICAgICB2YXIg
YWRqdXN0ZWROb2RlOwotICAgIGZ1bmN0aW9uIGZpbmRBYnNvbHV0ZVBvc2l0aW9uKG5vZGUpIHsK
LSAgICAgICAgdmFyIHBvcyA9IG5ldyBPYmplY3QoKTsKLSAgICAgICAgcG9zLmxlZnQgPSAwOyBw
b3MudG9wID0gMDsKLSAgICAgICAgZG8gewotICAgICAgICAgICAgcG9zLmxlZnQgKz0gbm9kZS5v
ZmZzZXRMZWZ0OwotICAgICAgICAgICAgcG9zLnRvcCArPSBub2RlLm9mZnNldFRvcDsKLSAgICAg
ICAgfSB3aGlsZSAobm9kZSA9IG5vZGUub2Zmc2V0UGFyZW50KTsKLSAgICAgICAgcmV0dXJuIHBv
czsKLSAgICB9CisgICAgLy8gU2V0IHVwIHNob3J0Y3V0IGFjY2VzcyB0byBlbGVtZW50cworICAg
IHZhciBlID0ge307CisgICAgWydzYW5kYm94JywgJ215bGluaycsICdteWZvcm0nLCAnbXlpbnB1
dCcsICdteWxhYmVsJywgJ215c3BhbiddLmZvckVhY2goZnVuY3Rpb24oYSkgeworICAgICAgICBl
W2FdID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYSk7CisgICAgfSk7CiAKICAgICBmdW5jdGlv
biB0ZXN0RGlyZWN0VG91Y2goZWxlbWVudCkKICAgICB7Ci0gICAgICAgIHZhciBwb3MgPSBmaW5k
QWJzb2x1dGVQb3NpdGlvbihlbGVtZW50KTsKLSAgICAgICAgdmFyIHggPSBwb3MubGVmdCArIGVs
ZW1lbnQuY2xpZW50V2lkdGggLyAyIC0gMjA7Ci0gICAgICAgIHZhciB5ID0gcG9zLnRvcCArIGVs
ZW1lbnQuY2xpZW50SGVpZ2h0IC8gMiAtIDMwOwotICAgICAgICB2YXIgd2lkdGggPSA0MDsKLSAg
ICAgICAgdmFyIGhlaWdodCA9IDYwOwotICAgICAgICB2YXIgYWRqdXN0ZWROb2RlID0gaW50ZXJu
YWxzLnRvdWNoTm9kZUFkanVzdGVkVG9CZXN0Q2xpY2thYmxlTm9kZSh4LCB5LCB3aWR0aCwgaGVp
Z2h0LCBkb2N1bWVudCk7Ci0gICAgICAgIHdoaWxlIChhZGp1c3RlZE5vZGUubm9kZVR5cGUgIT0g
MSkgLy8gTm90IGFuIGVsZW1lbnQuCi0gICAgICAgICAgICBhZGp1c3RlZE5vZGUgPSBhZGp1c3Rl
ZE5vZGUucGFyZW50Tm9kZTsKLSAgICAgICAgcmV0dXJuIGFkanVzdGVkTm9kZTsKKyAgICAgICAg
dmFyIHRvdWNocG9pbnQgPSBvZmZzZXRUb3VjaFBvaW50KGZpbmRBYnNvbHV0ZUJvdW5kcyhlbGVt
ZW50KSwgJ2NlbnRlcicsIDAsIDIwLCAzMCk7CisgICAgICAgIHRlc3RUb3VjaFBvaW50KHRvdWNo
cG9pbnQsIGVsZW1lbnQpOwogICAgIH0KIAogICAgIGZ1bmN0aW9uIHRlc3RJbmRpcmVjdFRvdWNo
KGVsZW1lbnQpCiAgICAgewogICAgICAgICAvLyBUb3VjaCBqdXN0IHJpZ2h0IG9mIHRoZSBlbGVt
ZW50LgotICAgICAgICB2YXIgcG9zID0gZmluZEFic29sdXRlUG9zaXRpb24oZWxlbWVudCk7Ci0g
ICAgICAgIHZhciB4ID0gcG9zLmxlZnQgKyBlbGVtZW50LmNsaWVudFdpZHRoICsgMTAgLSAzMDsK
LSAgICAgICAgdmFyIHkgPSBwb3MudG9wICsgZWxlbWVudC5jbGllbnRIZWlnaHQgLyAyIC0gMjA7
Ci0gICAgICAgIHZhciB3aWR0aCA9IDYwOwotICAgICAgICB2YXIgaGVpZ2h0ID0gNDA7Ci0gICAg
ICAgIHZhciBhZGp1c3RlZE5vZGUgPSBpbnRlcm5hbHMudG91Y2hOb2RlQWRqdXN0ZWRUb0Jlc3RD
bGlja2FibGVOb2RlKHgsIHksIHdpZHRoLCBoZWlnaHQsIGRvY3VtZW50KTsKLSAgICAgICAgd2hp
bGUgKGFkanVzdGVkTm9kZS5ub2RlVHlwZSAhPSAxICkgLy8gTm90IGFuIGVsZW1lbnQuCi0gICAg
ICAgICAgICBhZGp1c3RlZE5vZGUgPSBhZGp1c3RlZE5vZGUucGFyZW50Tm9kZTsKLSAgICAgICAg
cmV0dXJuIGFkanVzdGVkTm9kZTsKKyAgICAgICAgdmFyIHRvdWNocG9pbnQgPSBvZmZzZXRUb3Vj
aFBvaW50KGZpbmRBYnNvbHV0ZUJvdW5kcyhlbGVtZW50KSwgJ3JpZ2h0JywgMTAsIDMwLCAyMCk7
CisgICAgICAgIHRlc3RUb3VjaFBvaW50KHRvdWNocG9pbnQsIGVsZW1lbnQpOwogICAgIH0KIAog
ICAgIGZ1bmN0aW9uIHRlc3REaXJlY3RUb3VjaGVzKCkKICAgICB7CiAgICAgICAgIGRlYnVnKCdU
ZXN0aW5nIHNtYWxsIGRpcmVjdCBoaXRzLicpOwogCi0gICAgICAgIGVsZW1lbnQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnbXlsaW5rJyk7Ci0gICAgICAgIGFkanVzdGVkTm9kZSA9IHRlc3RE
aXJlY3RUb3VjaChlbGVtZW50KTsKLSAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdhZGp1
c3RlZE5vZGUuaWQnLCAnbXlsaW5rJyk7Ci0KLSAgICAgICAgZWxlbWVudCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdteWxhYmVsJyk7Ci0gICAgICAgIGFkanVzdGVkTm9kZSA9IHRlc3REaXJl
Y3RUb3VjaChlbGVtZW50KTsKLSAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdhZGp1c3Rl
ZE5vZGUuaWQnLCAnbXlsYWJlbCcpOwotCi0gICAgICAgIGVsZW1lbnQgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnbXlpbnB1dCcpOwotICAgICAgICBhZGp1c3RlZE5vZGUgPSB0ZXN0RGlyZWN0
VG91Y2goZWxlbWVudCk7Ci0gICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnYWRqdXN0ZWRO
b2RlLmlkJywgJ215aW5wdXQnKTsKKyAgICAgICAgdGVzdERpcmVjdFRvdWNoKGUubXlsaW5rKTsK
KyAgICAgICAgdGVzdERpcmVjdFRvdWNoKGUubXlsYWJlbCk7CisgICAgICAgIHRlc3REaXJlY3RU
b3VjaChlLm15aW5wdXQpOwogICAgIH0KIAogICAgIGZ1bmN0aW9uIHRlc3RJbmRpcmVjdFRvdWNo
ZXMoKQogICAgIHsKICAgICAgICAgZGVidWcoJ1Rlc3RpbmcgaW5kaXJlY3QgaGl0cy4nKTsKIAot
ICAgICAgICBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ215bGluaycpOwotICAg
ICAgICBhZGp1c3RlZE5vZGUgPSB0ZXN0SW5kaXJlY3RUb3VjaChlbGVtZW50KTsKLSAgICAgICAg
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdhZGp1c3RlZE5vZGUuaWQnLCAnbXlsaW5rJyk7Ci0KLSAg
ICAgICAgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdteWxhYmVsJyk7Ci0gICAg
ICAgIGFkanVzdGVkTm9kZSA9IHRlc3RJbmRpcmVjdFRvdWNoKGVsZW1lbnQpOwotICAgICAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoJ2FkanVzdGVkTm9kZS5pZCcsICdteWxhYmVsJyk7Ci0KLSAg
ICAgICAgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdteWlucHV0Jyk7Ci0gICAg
ICAgIGFkanVzdGVkTm9kZSA9IHRlc3RJbmRpcmVjdFRvdWNoKGVsZW1lbnQpOwotICAgICAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoJ2FkanVzdGVkTm9kZS5pZCcsICdteWlucHV0Jyk7CisgICAg
ICAgIHRlc3REaXJlY3RUb3VjaChlLm15bGluayk7CisgICAgICAgIHRlc3REaXJlY3RUb3VjaChl
Lm15bGFiZWwpOworICAgICAgICB0ZXN0RGlyZWN0VG91Y2goZS5teWlucHV0KTsKICAgICB9CiAK
ICAgICBmdW5jdGlvbiBydW5UZXN0cygpCiAgICAgewogICAgICAgICBpZiAod2luZG93LnRlc3RS
dW5uZXIgJiYgd2luZG93LmludGVybmFscyAmJiBpbnRlcm5hbHMudG91Y2hOb2RlQWRqdXN0ZWRU
b0Jlc3RDbGlja2FibGVOb2RlKSB7Ci0gICAgICAgICAgICBkZXNjcmlwdGlvbignVGVzdHMgaWYg
bGFiZWxzIGFyZSB0cmVhdGVkIGFzIGNsaWNrYWJsZSBpZiB0aGUgaW5wdXQgdGhleSBjb250cm9s
IGlzLicpOwotICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgICAg
ICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgICAgIGRlc2NyaXB0aW9uKGRv
Y3VtZW50LnRpdGxlKTsKICAgICAgICAgICAgIHRlc3REaXJlY3RUb3VjaGVzKCk7CiAgICAgICAg
ICAgICB0ZXN0SW5kaXJlY3RUb3VjaGVzKCk7Ci0gICAgICAgICAgICBpc1N1Y2Nlc3NmdWxseVBh
cnNlZCgpOwotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgICAg
ICBlLnNhbmRib3guc3R5bGUuZGlzcGxheSA9ICdub25lJzsKICAgICAgICAgfQogICAgIH0KKyAg
ICBydW5UZXN0cygpOwogPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3RvdWNoYWRqdXN0bWVudC9pZnJhbWUuaHRtbCBiL0xheW91dFRlc3Rz
L3RvdWNoYWRqdXN0bWVudC9pZnJhbWUuaHRtbAppbmRleCA0NTM0YWQwMGYyZmVkZjdmOTY5ZGU0
NDQ0NWY0NzQyZDY0Y2QyZWQ0Li42YTAxZDk4MWQ2Mzg1ZmE4ODY1MjdiZjE2NDdiZjFmYWY2ZGFk
NGVkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy90b3VjaGFkanVzdG1lbnQvaWZyYW1lLmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50L2lmcmFtZS5odG1sCkBAIC0xLDMgKzEs
NCBAQAorPCFET0NUWVBFIGh0bWw+CiA8aHRtbD4KIDxoZWFkPgogICAgIDxzY3JpcHQgc3JjPSIu
Li9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CkBAIC0zOSwxMyAr
NDAsMTIgQEAKICAgICB7CiAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lciAmJiB3aW5kb3cu
aW50ZXJuYWxzICYmIGludGVybmFscy50b3VjaE5vZGVBZGp1c3RlZFRvQmVzdENsaWNrYWJsZU5v
ZGUpIHsKICAgICAgICAgICAgIGRlc2NyaXB0aW9uKCdUZXN0IHRvdWNoLWFkanVzdG1lbnQgb24g
bGlua3MgaW4gYW4gaWZyYW1lLiBNYWtpbmcgc3VyZSB3ZSBpZnJhbWUgcG9zaXRpb24gaXMgY29y
cmVjdGx5IGFkanVzdGVkIGZvci4nKTsKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4
dCgpOwotICAgICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAgICAgICAgICAg
ICB0ZXN0RGlyZWN0VG91Y2hlcygpOwotICAgICAgICAgICAgaXNTdWNjZXNzZnVsbHlQYXJzZWQo
KTsKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgZmlu
aXNoSlNUZXN0KCk7CiAgICAgICAgIH0KICAgICB9CisgICAganNUZXN0SXNBc3luYyA9IHRydWU7
CiA8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RvdWNoYWRqdXN0bWVudC9uZXN0ZWQtdG91
Y2gtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50L25lc3RlZC10b3Vj
aC1leHBlY3RlZC50eHQKaW5kZXggNzNkN2M0MDVjYzdiZTZmOWFiNjc3ZTg5ZGZiNjY1Y2ZkMmRh
OGE1OC4uYzkzYWYyZDk4NTFkMDk1MzgxZWUxNGVlYjA4NzE2ZmMwZGE4ZWMxOSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50L25lc3RlZC10b3VjaC1leHBlY3RlZC50eHQK
KysrIGIvTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50L25lc3RlZC10b3VjaC1leHBlY3RlZC50
eHQKQEAgLTEsMTcgKzEsMTUgQEAKLUJveCB3aXRoIGEgbG9jYWwgY2xpY2sgaGFuZGxlci4KLUJv
eCB3aXRob3V0IGEgbG9jYWwgY2xpY2sgaGFuZGxlci4KIFRlc3QgdGhlIGNhc2Ugd2hlcmUgYSBj
bGlja2FibGUgdGFyZ2V0IGlzIG5lc3RlZCBpbnNpZGUgYSBkb2N1bWVudCB0aGF0IGlzIG1vbml0
b3JpbmcgY2xpY2tzLiBUaGUgdGFyZ2V0IHdpdGggdGhlIGxvY2FsIGV2ZW50LWhhbmRsZXIgc2hv
dWxkIGJlIGNob3NlbiBpZiBtdWx0aXBsZSB0YXJnZXRzIGFyZSB0b3VjaGVkLgogCiBPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCiAKIAogVGVzdGluZyBzbWFsbCBkaXJlY3QgaGl0cy4KLVBBU1Mg
YWRqdXN0ZWROb2RlLmlkIGlzIGVsZW1lbnQuaWQKLVBBU1MgYWRqdXN0ZWROb2RlLmlkIGlzIGVs
ZW1lbnQuaWQKK1BBU1MgYWRqdXN0ZWQgbm9kZSB3YXMgRElWI215Ym94MS4KK1BBU1MgYWRqdXN0
ZWQgbm9kZSB3YXMgRElWI215Ym94Mi4KIFRlc3RpbmcgcHJlZmVyZWQgaGl0cy4KLVBBU1MgYWRq
dXN0ZWROb2RlLmlkIGlzIGVsZW1lbnQxLmlkCi1QQVNTIGFkanVzdGVkTm9kZS5pZCBpcyBlbGVt
ZW50MS5pZAotUEFTUyBhZGp1c3RlZE5vZGUuaWQgaXMgZWxlbWVudDEuaWQKK1BBU1MgYWRqdXN0
ZWQgbm9kZSB3YXMgRElWI215Ym94MS4KK1BBU1MgYWRqdXN0ZWQgbm9kZSB3YXMgRElWI215Ym94
MS4KK1BBU1MgYWRqdXN0ZWQgbm9kZSB3YXMgRElWI215Ym94MS4KIFBBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
dG91Y2hhZGp1c3RtZW50L25lc3RlZC10b3VjaC5odG1sIGIvTGF5b3V0VGVzdHMvdG91Y2hhZGp1
c3RtZW50L25lc3RlZC10b3VjaC5odG1sCmluZGV4IDRlNTc3Zjg1YzM4MmU5OTU2Y2NlNGUxYTEz
MDY0NGU4ZDBkODExNmYuLmI0MjE0NTlhOGE2YTIyMDJmOWE4YWI1MDM0NDUzMDRlZjlkMTRjYzMg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3RvdWNoYWRqdXN0bWVudC9uZXN0ZWQtdG91Y2guaHRt
bAorKysgYi9MYXlvdXRUZXN0cy90b3VjaGFkanVzdG1lbnQvbmVzdGVkLXRvdWNoLmh0bWwKQEAg
LTEsMTIwICsxLDk1IEBACis8IURPQ1RZUEUgaHRtbD4KIDxodG1sPgogPGhlYWQ+Ci08c3R5bGU+
Ci0gICAgLmJveCB7IGJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOyBib3JkZXItcmFkaXVzOiA1cHgg
NXB4OyBtYXJnaW46IDFlbTsgbWF4LXdpZHRoOiA0MGVtOyB9Ci08L3N0eWxlPgotPHNjcmlwdCBz
cmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLQorICAg
IDx0aXRsZT5UZXN0IHRoZSBjYXNlIHdoZXJlIGEgY2xpY2thYmxlIHRhcmdldCBpcyBuZXN0ZWQg
aW5zaWRlIGEgZG9jdW1lbnQgdGhhdCBpcyBtb25pdG9yaW5nIGNsaWNrcy4gVGhlIHRhcmdldCB3
aXRoIHRoZSBsb2NhbCBldmVudC1oYW5kbGVyIHNob3VsZCBiZSBjaG9zZW4gaWYgbXVsdGlwbGUg
dGFyZ2V0cyBhcmUgdG91Y2hlZC48L3RpdGxlPgorICAgIDxzY3JpcHQgc3JjPSIuLi9mYXN0L2pz
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9InJl
c291cmNlcy90b3VjaGFkanVzdG1lbnQuanMiPjwvc2NyaXB0PgorICAgIDxzdHlsZT4KKyAgICAg
ICAgI3NhbmRib3ggeyB9CisgICAgICAgIC5ib3ggeyBib3JkZXI6IDFweCBzb2xpZCBibGFjazsg
Ym9yZGVyLXJhZGl1czogNXB4IDVweDsgbWFyZ2luOiAxMnB4OyBtYXgtd2lkdGg6IDQwZW07IH0K
KyAgICA8L3N0eWxlPgogPC9oZWFkPgogCi08Ym9keSBvbmxvYWQ9InJ1blRlc3RzKCkiPgorPGJv
ZHk+CiAKLTxkaXYgY2xhc3M9Ym94IGlkPW15Ym94MT4KLUJveCB3aXRoIGEgbG9jYWwgY2xpY2sg
aGFuZGxlci4KLTwvZGl2PgorPGRpdiBpZD1zYW5kYm94PgorICAgIDxkaXYgY2xhc3M9Ym94IGlk
PW15Ym94MT4KKyAgICBCb3ggd2l0aCBhIGxvY2FsIGNsaWNrIGhhbmRsZXIuCisgICAgPC9kaXY+
CiAKLTxkaXYgY2xhc3M9Ym94IGlkPW15Ym94Mj4gCi1Cb3ggd2l0aG91dCBhIGxvY2FsIGNsaWNr
IGhhbmRsZXIuCisgICAgPGRpdiBjbGFzcz1ib3ggaWQ9bXlib3gyPiAKKyAgICBCb3ggd2l0aG91
dCBhIGxvY2FsIGNsaWNrIGhhbmRsZXIuCisgICAgPC9kaXY+CiA8L2Rpdj4KIAogPHNjcmlwdD4K
LSAgZnVuY3Rpb24gbW9uaXRvcihlKSB7IGFsZXJ0KGUudGFyZ2V0ICsoIGUudGFyZ2V0LmlkID8g
KCAnICMnICsgZS50YXJnZXQuaWQpIDogJycpKTsgfTsKLSAgZnVuY3Rpb24gZG9Tb21ldGhpbmco
ZSkge307CisgICAgZnVuY3Rpb24gbW9uaXRvcihlKSB7IGFsZXJ0KGUudGFyZ2V0ICsoIGUudGFy
Z2V0LmlkID8gKCAnICMnICsgZS50YXJnZXQuaWQpIDogJycpKTsgfTsKKyAgICBmdW5jdGlvbiBk
b1NvbWV0aGluZyhlKSB7fTsKIAotICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdteWJveDEnKTsKLSAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGRvU29t
ZXRoaW5nLCBmYWxzZSk7Ci0gIGVsZW1lbnQgPSBkb2N1bWVudC5ib2R5OwotICBlbGVtZW50LmFk
ZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgbW9uaXRvciwgZmFsc2UpOworICAgIHZhciBlbGVtZW50
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ215Ym94MScpOworICAgIGVsZW1lbnQuYWRkRXZl
bnRMaXN0ZW5lcignY2xpY2snLCBkb1NvbWV0aGluZywgZmFsc2UpOworICAgIGVsZW1lbnQgPSBk
b2N1bWVudC5ib2R5OworICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBtb25p
dG9yLCBmYWxzZSk7CiA8L3NjcmlwdD4KIAotCiA8cCBpZD0nZGVzY3JpcHRpb24nPjwvcD4KIDxk
aXYgaWQ9J2NvbnNvbGUnPjwvZGl2PgogCiA8c2NyaXB0PgotICAgIHZhciBlbGVtZW50OwotICAg
IHZhciBhZGp1c3RlZE5vZGU7Ci0gICAgZnVuY3Rpb24gZmluZEFic29sdXRlUG9zaXRpb24obm9k
ZSkgewotICAgICAgICB2YXIgcG9zID0gbmV3IE9iamVjdCgpOwotICAgICAgICBwb3MubGVmdCA9
IDA7IHBvcy50b3AgPSAwOwotICAgICAgICBkbyB7Ci0gICAgICAgICAgICBwb3MubGVmdCArPSBu
b2RlLm9mZnNldExlZnQ7Ci0gICAgICAgICAgICBwb3MudG9wICs9IG5vZGUub2Zmc2V0VG9wOwot
ICAgICAgICB9IHdoaWxlIChub2RlID0gbm9kZS5vZmZzZXRQYXJlbnQpOwotICAgICAgICByZXR1
cm4gcG9zOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIHRlc3REaXJlY3RUb3VjaChlbGVtZW50KQot
ICAgIHsKLSAgICAgICAgdmFyIHBvcyA9IGZpbmRBYnNvbHV0ZVBvc2l0aW9uKGVsZW1lbnQpOwot
ICAgICAgICB2YXIgeCA9IHBvcy5sZWZ0ICsgZWxlbWVudC5jbGllbnRXaWR0aCAvIDIgLSAxOwot
ICAgICAgICB2YXIgeSA9IHBvcy50b3AgKyBlbGVtZW50LmNsaWVudEhlaWdodCAvIDIgLSAxOwot
ICAgICAgICB2YXIgd2lkdGggPSAzOwotICAgICAgICB2YXIgaGVpZ2h0ID0gMzsKLSAgICAgICAg
dmFyIGFkanVzdGVkTm9kZSA9IGludGVybmFscy50b3VjaE5vZGVBZGp1c3RlZFRvQmVzdENsaWNr
YWJsZU5vZGUoeCwgeSwgd2lkdGgsIGhlaWdodCwgZG9jdW1lbnQpOwotICAgICAgICBpZiAoYWRq
dXN0ZWROb2RlLm5vZGVUeXBlID09IDMpIC8vIFRFWFQgbm9kZQotICAgICAgICAgICAgYWRqdXN0
ZWROb2RlID0gYWRqdXN0ZWROb2RlLnBhcmVudE5vZGU7Ci0gICAgICAgIHJldHVybiBhZGp1c3Rl
ZE5vZGU7Ci0gICAgfQorICAgIHZhciBlID0ge307CisgICAgWydzYW5kYm94JywgJ215Ym94MScs
ICdteWJveDInXS5mb3JFYWNoKGZ1bmN0aW9uKGEpIHsKKyAgICAgICAgZVthXSA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKGEpOworICAgIH0pOwogCi0gICAgZnVuY3Rpb24gdGVzdERvdWJsZVRv
dWNoKGVsZW1lbnQxLCBlbGVtZW50Miwgb2Zmc2V0KQorICAgIGZ1bmN0aW9uIHRvdWNoUG9pbnRE
b3VibGVUb3VjaChlbGVtZW50MSwgZWxlbWVudDIsIG9mZnNldCkKICAgICB7Ci0gICAgICAgIHZh
ciBwb3MxID0gZmluZEFic29sdXRlUG9zaXRpb24oZWxlbWVudDEpOwotICAgICAgICB2YXIgcG9z
MiA9IGZpbmRBYnNvbHV0ZVBvc2l0aW9uKGVsZW1lbnQyKTsKKyAgICAgICAgdmFyIGJvdW5kczEg
PSBmaW5kQWJzb2x1dGVCb3VuZHMoZWxlbWVudDEpOworICAgICAgICB2YXIgYm91bmRzMiA9IGZp
bmRBYnNvbHV0ZUJvdW5kcyhlbGVtZW50Mik7CisgICAgICAgIHZhciBib3VuZHMgPSBuZXcgT2Jq
ZWN0KCk7CiAgICAgICAgIC8vIFdlIGFzc3VtZSB0aGUgZWxlbWVudHMgaGF2ZSB0aGUgc2FtZSB4
IGNvb3JkIGFuZCB3aWR0aC4KLSAgICAgICAgdmFyIHggPSBwb3MxLmxlZnQgKyBlbGVtZW50MS5j
bGllbnRXaWR0aC8yIC0gMTsKLSAgICAgICAgdmFyIHkxID0gcG9zMS50b3AgKyBlbGVtZW50MS5j
bGllbnRIZWlnaHQvMiArIDE7Ci0gICAgICAgIHZhciB5MiA9IHBvczIudG9wICsgZWxlbWVudDIu
Y2xpZW50SGVpZ2h0LzIgLSAxOwotICAgICAgICB2YXIgd2lkdGggPSB5MiAtIHkxOwotICAgICAg
ICB2YXIgaGVpZ2h0ID0geTIgLSB5MTsKLSAgICAgICAgdmFyIGFkanVzdGVkTm9kZSA9IGludGVy
bmFscy50b3VjaE5vZGVBZGp1c3RlZFRvQmVzdENsaWNrYWJsZU5vZGUoeCwgeTEsIHdpZHRoLCBo
ZWlnaHQsIGRvY3VtZW50KTsKLSAgICAgICAgaWYgKGFkanVzdGVkTm9kZS5ub2RlVHlwZSA9PSAz
KSAvLyBURVhUIG5vZGUKLSAgICAgICAgICAgIGFkanVzdGVkTm9kZSA9IGFkanVzdGVkTm9kZS5w
YXJlbnROb2RlOwotICAgICAgICByZXR1cm4gYWRqdXN0ZWROb2RlOworICAgICAgICBib3VuZHMu
bGVmdCA9IGJvdW5kczEubGVmdCArIGJvdW5kczEud2lkdGgvMiAtIDE7CisgICAgICAgIHZhciB5
MSA9IGJvdW5kczEudG9wICsgYm91bmRzMS5oZWlnaHQvMiArIG9mZnNldDsKKyAgICAgICAgdmFy
IHkyID0gYm91bmRzMi50b3AgKyBib3VuZHMyLmhlaWdodC8yIC0gMTsKKyAgICAgICAgYm91bmRz
LnRvcCA9IHkxOworICAgICAgICBib3VuZHMud2lkdGggPSB5MiAtIHkxOworICAgICAgICBib3Vu
ZHMuaGVpZ2h0ID0geTIgLSB5MTsKKyAgICAgICAgcmV0dXJuIGJvdW5kczsKICAgICB9CiAKICAg
ICBmdW5jdGlvbiB0ZXN0RGlyZWN0VG91Y2hlcygpCiAgICAgewogICAgICAgICBkZWJ1ZygnVGVz
dGluZyBzbWFsbCBkaXJlY3QgaGl0cy4nKTsKIAotICAgICAgICBlbGVtZW50ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ215Ym94MScpOwotICAgICAgICBhZGp1c3RlZE5vZGUgPSB0ZXN0RGly
ZWN0VG91Y2goZWxlbWVudCk7Ci0gICAgICAgIHNob3VsZEJlKCdhZGp1c3RlZE5vZGUuaWQnLCAn
ZWxlbWVudC5pZCcpOworICAgICAgICB2YXIgdG91Y2hwb2ludCA9IG9mZnNldFRvdWNoUG9pbnQo
ZmluZEFic29sdXRlQm91bmRzKGUubXlib3gxKSwgJ2NlbnRlcicsIDAsIDIpOworICAgICAgICB0
ZXN0VG91Y2hQb2ludCh0b3VjaHBvaW50LCBlLm15Ym94MSk7CiAKLSAgICAgICAgZWxlbWVudCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdteWJveDInKTsKLSAgICAgICAgYWRqdXN0ZWROb2Rl
ID0gdGVzdERpcmVjdFRvdWNoKGVsZW1lbnQpOwotICAgICAgICBzaG91bGRCZSgnYWRqdXN0ZWRO
b2RlLmlkJywgJ2VsZW1lbnQuaWQnKTsKKyAgICAgICAgdG91Y2hwb2ludCA9IG9mZnNldFRvdWNo
UG9pbnQoZmluZEFic29sdXRlQm91bmRzKGUubXlib3gyKSwgJ2NlbnRlcicsIDAsIDIpOworICAg
ICAgICB0ZXN0VG91Y2hQb2ludCh0b3VjaHBvaW50LCBlLm15Ym94Mik7CiAgICAgfQogCiAgICAg
ZnVuY3Rpb24gdGVzdFByZWZlcmVkVG91Y2goKQogICAgIHsKICAgICAgICAgZGVidWcoJ1Rlc3Rp
bmcgcHJlZmVyZWQgaGl0cy4nKTsKIAotICAgICAgICBlbGVtZW50MSA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdteWJveDEnKTsKLSAgICAgICAgZWxlbWVudDIgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnbXlib3gyJyk7Ci0gICAgICAgIGFkanVzdGVkTm9kZSA9IHRlc3REb3VibGVUb3Vj
aChlbGVtZW50MSwgZWxlbWVudDIsIDApOwotICAgICAgICBzaG91bGRCZSgnYWRqdXN0ZWROb2Rl
LmlkJywgJ2VsZW1lbnQxLmlkJyk7CisgICAgICAgIHRlc3RUb3VjaFBvaW50KHRvdWNoUG9pbnRE
b3VibGVUb3VjaChlLm15Ym94MSwgZS5teWJveDIsIDApLCBlLm15Ym94MSk7CiAKICAgICAgICAg
Ly8gRmlyc3QgdGVzdCB3YXMgY2VudGVyZWQsIG5vdyBtb3ZlIHRoZSB0ZXN0IGNsb3NlciB0byB0
aGUgd3Jvbmcgbm9kZSwgYW5kIGVuc3VyZSB3ZSBzdGlsbCBnZXQgdGhlIHByZWZlcmVkIG5vZGUu
Ci0gICAgICAgIGFkanVzdGVkTm9kZSA9IHRlc3REb3VibGVUb3VjaChlbGVtZW50MSwgZWxlbWVu
dDIsIDUpOwotICAgICAgICBzaG91bGRCZSgnYWRqdXN0ZWROb2RlLmlkJywgJ2VsZW1lbnQxLmlk
Jyk7CisgICAgICAgIHRlc3RUb3VjaFBvaW50KHRvdWNoUG9pbnREb3VibGVUb3VjaChlLm15Ym94
MSwgZS5teWJveDIsIDUpLCBlLm15Ym94MSk7CiAKLSAgICAgICAgYWRqdXN0ZWROb2RlID0gdGVz
dERvdWJsZVRvdWNoKGVsZW1lbnQxLCBlbGVtZW50MiwgMTApOwotICAgICAgICBzaG91bGRCZSgn
YWRqdXN0ZWROb2RlLmlkJywgJ2VsZW1lbnQxLmlkJyk7CisgICAgICAgIHRlc3RUb3VjaFBvaW50
KHRvdWNoUG9pbnREb3VibGVUb3VjaChlLm15Ym94MSwgZS5teWJveDIsIDEwKSwgZS5teWJveDEp
OwogICAgIH0KIAogICAgIGZ1bmN0aW9uIHJ1blRlc3RzKCkKICAgICB7CiAgICAgICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lciAmJiB3aW5kb3cuaW50ZXJuYWxzICYmIGludGVybmFscy50b3VjaE5v
ZGVBZGp1c3RlZFRvQmVzdENsaWNrYWJsZU5vZGUpIHsKLSAgICAgICAgICAgIGRlc2NyaXB0aW9u
KCdUZXN0IHRoZSBjYXNlIHdoZXJlIGEgY2xpY2thYmxlIHRhcmdldCBpcyBuZXN0ZWQgaW5zaWRl
IGEgZG9jdW1lbnQgdGhhdCBpcyBtb25pdG9yaW5nIGNsaWNrcy4gVGhlIHRhcmdldCB3aXRoIHRo
ZSBsb2NhbCBldmVudC1oYW5kbGVyIHNob3VsZCBiZSBjaG9zZW4gaWYgbXVsdGlwbGUgdGFyZ2V0
cyBhcmUgdG91Y2hlZC4nKTsKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwot
ICAgICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgICAgICAgICBkZXNj
cmlwdGlvbihkb2N1bWVudC50aXRsZSk7CiAgICAgICAgICAgICB0ZXN0RGlyZWN0VG91Y2hlcygp
OwogICAgICAgICAgICAgdGVzdFByZWZlcmVkVG91Y2goKTsKLSAgICAgICAgICAgIGlzU3VjY2Vz
c2Z1bGx5UGFyc2VkKCk7Ci0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAg
ICAgICAgICAgIGVbJ3NhbmRib3gnXS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwogICAgICAgICB9
CiAgICAgfQorICAgIHJ1blRlc3RzKCk7CiA8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9mYXN0
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50L3Jlc291cmNlcy9pbm5l
ci1mcmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50L3Jlc291cmNlcy9pbm5l
ci1mcmFtZS5odG1sCmluZGV4IGYzMTIxNWFkZTBlNjlkZTViZTVkMTFjMGNhN2FlNWE5M2E2YzVj
ZTkuLjg3MjRhN2UxOTBmOTU5Y2NmMjE0N2Y5NWJjMTFlNWIxNjE2ZDNmODIgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3RvdWNoYWRqdXN0bWVudC9yZXNvdXJjZXMvaW5uZXItZnJhbWUuaHRtbAor
KysgYi9MYXlvdXRUZXN0cy90b3VjaGFkanVzdG1lbnQvcmVzb3VyY2VzL2lubmVyLWZyYW1lLmh0
bWwKQEAgLTEsMyArMSw0IEBACis8IURPQ1RZUEUgaHRtbD4KIDxodG1sPgogPGhlYWQ+CiAgICAg
PHN0eWxlPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50L3Jlc291cmNl
cy90b3VjaGFkanVzdG1lbnQuanMgYi9MYXlvdXRUZXN0cy90b3VjaGFkanVzdG1lbnQvcmVzb3Vy
Y2VzL3RvdWNoYWRqdXN0bWVudC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZmFmZmFhYzA1ZGRjZTQyZjkwYTNj
ZjQ5ZWQ4YTJiODZlY2I0ZjBhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdG91Y2hh
ZGp1c3RtZW50L3Jlc291cmNlcy90b3VjaGFkanVzdG1lbnQuanMKQEAgLTAsMCArMSwxMDMgQEAK
Ky8qIGZ1bmN0aW9uIGZvciBmaW5kaW5nIHRoZSBhYnNvbHV0ZSBib3VuZHMgb2YgYSBub2RlICov
CitmdW5jdGlvbiBmaW5kQWJzb2x1dGVCb3VuZHMobm9kZSkKK3sKKyAgICB2YXIgYm91bmRzID0g
e2xlZnQ6IDAsIHRvcDogMH07CisgICAgYm91bmRzLndpZHRoID0gbm9kZS5jbGllbnRXaWR0aDsK
KyAgICBib3VuZHMuaGVpZ2h0ID0gbm9kZS5jbGllbnRIZWlnaHQ7CisgICAgZG8geworICAgICAg
ICBib3VuZHMubGVmdCArPSBub2RlLm9mZnNldExlZnQ7CisgICAgICAgIGJvdW5kcy50b3AgKz0g
bm9kZS5vZmZzZXRUb3A7CisgICAgfSB3aGlsZSAobm9kZSA9IG5vZGUub2Zmc2V0UGFyZW50KTsK
KyAgICByZXR1cm4gYm91bmRzOworfQorCitmdW5jdGlvbiBub2RlVG9TdHJpbmcobm9kZSkKK3sK
KyAgICBpZiAobm9kZSA9PT0gdW5kZWZpbmVkKQorICAgICAgICByZXR1cm4gJ3VuZGVmaW5lZCc7
CisgICAgaWYgKG5vZGUgPT09IG51bGwpCisgICAgICAgIHJldHVybiAnbnVsbCc7CisgICAgaWYg
KCFub2RlLm5vZGVOYW1lKQorICAgICAgICByZXR1cm4gJ25vdCBhIG5vZGUnOworICAgIHJldHVy
biBub2RlLm5vZGVOYW1lICsgKG5vZGUuaWQgPyAoJyMnICsgbm9kZS5pZCkgOiAnJyk7Cit9CisK
K2Z1bmN0aW9uIHRlc3RUb3VjaFBvaW50KHRvdWNocG9pbnQsIHRhcmdldE5vZGUpCit7CisgICAg
dmFyIGFkanVzdGVkTm9kZSA9IGludGVybmFscy50b3VjaE5vZGVBZGp1c3RlZFRvQmVzdENsaWNr
YWJsZU5vZGUodG91Y2hwb2ludC5sZWZ0LCB0b3VjaHBvaW50LnRvcCwgdG91Y2hwb2ludC53aWR0
aCwgdG91Y2hwb2ludC5oZWlnaHQsIGRvY3VtZW50KTsKKyAgICBpZiAoYWRqdXN0ZWROb2RlICYm
IGFkanVzdGVkTm9kZS5ub2RlVHlwZSA9PSAzKSAvLyBURVhUIG5vZGUKKyAgICAgICAgYWRqdXN0
ZWROb2RlID0gYWRqdXN0ZWROb2RlLnBhcmVudE5vZGU7CisgICAgaWYgKHRhcmdldE5vZGUgPT0g
YWRqdXN0ZWROb2RlKSB7CisgICAgICAgIHRlc3RQYXNzZWQoImFkanVzdGVkIG5vZGUgd2FzICIg
KyBub2RlVG9TdHJpbmcodGFyZ2V0Tm9kZSkgKyAiLiIpOworICAgIH0KKyAgICBlbHNlIHsKKyAg
ICAgICAgdGVzdEZhaWxlZCgiYWRqdXN0ZWQgbm9kZSBzaG91bGQgYmUgIiArIG5vZGVUb1N0cmlu
Zyh0YXJnZXROb2RlKSAgKyAiLiBXYXMgIiArIG5vZGVUb1N0cmluZyhhZGp1c3RlZE5vZGUpICsg
Ii4iKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHRvdWNoUG9pbnQoeCwgeSwgcmFkaXVzWCwgcmFk
aXVzWSkKK3sKKyAgICBpZiAoIXJhZGl1c1kpCisgICAgICAgIHJhZGl1c1kgPSByYWRpdXNYOwor
ICAgIHZhciB0b3VjaHBvaW50ID0gbmV3IE9iamVjdCgpOworICAgIHRvdWNocG9pbnQubGVmdCA9
IHggLSByYWRpdXNYOworICAgIHRvdWNocG9pbnQudG9wID0geSAtIHJhZGl1c1k7CisgICAgdG91
Y2hwb2ludC53aWR0aCA9IHJhZGl1c1ggKiAyOworICAgIHRvdWNocG9pbnQuaGVpZ2h0ID0gcmFk
aXVzWSAqIDI7CisgICAgcmV0dXJuIHRvdWNocG9pbnQ7Cit9CisKK2Z1bmN0aW9uIG9mZnNldFRv
dWNoUG9pbnQoYm91bmRzLCByZWxhdGl2ZVBvc2l0aW9uLCB0b3VjaE9mZnNldCwgdG91Y2hSYWRp
dXNYLCB0b3VjaFJhZGl1c1kpCit7CisgICAgaWYgKCF0b3VjaFJhZGl1c1kpCisgICAgICAgIHRv
dWNoUmFkaXVzWSA9IHRvdWNoUmFkaXVzWDsKKworICAgIHZhciB0b3VjaHBvaW50ID0ge2xlZnQg
OiBib3VuZHMubGVmdCwgdG9wOiBib3VuZHMudG9wIH07CisgCisgICAgLy8gU2V0IGNlbnRlciBw
b2ludCBmb3IgdG91Y2guCisgICAgc3dpdGNoIChyZWxhdGl2ZVBvc2l0aW9uKSB7CisgICAgY2Fz
ZSAnY2VudGVyJzoKKyAgICAgICAgdG91Y2hwb2ludC5sZWZ0ICs9IGJvdW5kcy53aWR0aCAvIDI7
CisgICAgICAgIHRvdWNocG9pbnQudG9wICs9IGJvdW5kcy5oZWlnaHQgLyAyOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlICdsZWZ0JzoKKyAgICAgICAgdG91Y2hwb2ludC5sZWZ0IC09IHRvdWNo
T2Zmc2V0OworICAgICAgICB0b3VjaHBvaW50LnRvcCArPSBib3VuZHMuaGVpZ2h0IC8gMjsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSAncmlnaHQnOgorICAgICAgICB0b3VjaHBvaW50LmxlZnQg
Kz0gYm91bmRzLndpZHRoICsgdG91Y2hPZmZzZXQ7CisgICAgICAgIHRvdWNocG9pbnQudG9wICs9
ICBib3VuZHMuaGVpZ2h0IC8gMjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAndG9wLWxlZnQn
OgorICAgICAgICB0b3VjaHBvaW50LmxlZnQgLT0gdG91Y2hPZmZzZXQ7CisgICAgICAgIHRvdWNo
cG9pbnQudG9wIC09IHRvdWNoT2Zmc2V0OworICAgICAgICBicmVhazsKKyAgICBjYXNlICd0b3At
cmlnaHQnOgorICAgICAgICB0b3VjaHBvaW50LmxlZnQgKz0gYm91bmRzLndpZHRoICsgdG91Y2hP
ZmZzZXQ7CisgICAgICAgIHRvdWNocG9pbnQudG9wIC09IHRvdWNoT2Zmc2V0OworICAgICAgICBi
cmVhazsKKyAgICBjYXNlICdib3R0b20tbGVmdCc6CisgICAgICAgIHRvdWNocG9pbnQubGVmdCAt
PSB0b3VjaE9mZnNldDsKKyAgICAgICAgdG91Y2hwb2ludC50b3AgKz0gYm91bmRzLmhlaWdodCAr
IHRvdWNoT2Zmc2V0OworICAgICAgICBicmVhazsKKyAgICBjYXNlICdib3R0b20tcmlnaHQnOgor
ICAgICAgICB0b3VjaHBvaW50LmxlZnQgKz0gYm91bmRzLndpZHRoICsgdG91Y2hPZmZzZXQ7Cisg
ICAgICAgIHRvdWNocG9pbnQudG9wICs9IGJvdW5kcy5oZWlnaHQgKyB0b3VjaE9mZnNldDsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSAndG9wJzoKKyAgICAgICAgdG91Y2hwb2ludC5sZWZ0ICs9
IGJvdW5kcy53aWR0aCAvIDI7CisgICAgICAgIHRvdWNocG9pbnQudG9wIC09IHRvdWNoT2Zmc2V0
OworICAgICAgICBicmVhazsKKyAgICBjYXNlICdib3R0b20nOgorICAgICAgICB0b3VjaHBvaW50
LmxlZnQgKz0gYm91bmRzLndpZHRoIC8gMjsKKyAgICAgICAgdG91Y2hwb2ludC50b3AgKz0gYm91
bmRzLmhlaWdodCArIHRvdWNoT2Zmc2V0OworICAgIH0KKyAgICAvLyBBZGp1c3QgZnJvbSB0b3Vj
aCBjZW50ZXIgdG8gdG9wLWxlZnQgY29ybmVyLgorICAgIHRvdWNocG9pbnQubGVmdCAtPSB0b3Vj
aFJhZGl1c1g7CisgICAgdG91Y2hwb2ludC50b3AgLT0gdG91Y2hSYWRpdXNZOworCisgICAgdG91
Y2hwb2ludC53aWR0aCA9IDIgKiB0b3VjaFJhZGl1c1g7CisgICAgdG91Y2hwb2ludC5oZWlnaHQg
PSAyICogdG91Y2hSYWRpdXNZOworCisgICAgcmV0dXJuIHRvdWNocG9pbnQ7Cit9CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy90b3VjaGFkanVzdG1lbnQvcm90YXRlZC1ub2RlLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3RvdWNoYWRqdXN0bWVudC9yb3RhdGVkLW5vZGUtZXhwZWN0ZWQudHh0
CmluZGV4IDk2YTI5NDI3ZGQ1Mzc3YTFlMmNiMzkyZDM5MDllZjIwMzFlNzNkMzYuLmYwMzVjYjdi
NjQwYzkxZTljNDlhY2E5MWNlMTNiOWY0ZmZmMTFjZDIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3RvdWNoYWRqdXN0bWVudC9yb3RhdGVkLW5vZGUtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRl
c3RzL3RvdWNoYWRqdXN0bWVudC9yb3RhdGVkLW5vZGUtZXhwZWN0ZWQudHh0CkBAIC00LDIyICs0
LDIyIEBAIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFCiAKIAogRGlyZWN0IFRvdWNoZXMKLVBBU1Mg
YWRqdXN0ZWROb2RlLmlkIGlzICJyb3RhdGVkRGl2IgotUEFTUyBhZGp1c3RlZE5vZGUuaWQgaXMg
InJvdGF0ZWREaXYiCi1QQVNTIGFkanVzdGVkTm9kZS5pZCBpcyAicm90YXRlZERpdiIKLVBBU1Mg
YWRqdXN0ZWROb2RlLmlkIGlzICJyb3RhdGVkRGl2IgotUEFTUyBhZGp1c3RlZE5vZGUuaWQgaXMg
InJvdGF0ZWREaXYiCi1QQVNTIGFkanVzdGVkTm9kZS5pZCBpcyAiY29udGFpbmVyRGl2IgotUEFT
UyBhZGp1c3RlZE5vZGUuaWQgaXMgImNvbnRhaW5lckRpdiIKLVBBU1MgYWRqdXN0ZWROb2RlLmlk
IGlzICJjb250YWluZXJEaXYiCitQQVNTIGFkanVzdGVkIG5vZGUgd2FzIERJViNyb3RhdGVkLgor
UEFTUyBhZGp1c3RlZCBub2RlIHdhcyBESVYjcm90YXRlZC4KK1BBU1MgYWRqdXN0ZWQgbm9kZSB3
YXMgRElWI3JvdGF0ZWQuCitQQVNTIGFkanVzdGVkIG5vZGUgd2FzIERJViNyb3RhdGVkLgorUEFT
UyBhZGp1c3RlZCBub2RlIHdhcyBESVYjcm90YXRlZC4KK1BBU1MgYWRqdXN0ZWQgbm9kZSB3YXMg
RElWI2NvbnRhaW5lci4KK1BBU1MgYWRqdXN0ZWQgbm9kZSB3YXMgRElWI2NvbnRhaW5lci4KK1BB
U1MgYWRqdXN0ZWQgbm9kZSB3YXMgRElWI2NvbnRhaW5lci4KIAogQWRqdXN0ZWQgVG91Y2hlcwot
UEFTUyBhZGp1c3RlZE5vZGUuaWQgaXMgInJvdGF0ZWREaXYiCi1QQVNTIGFkanVzdGVkTm9kZS5p
ZCBpcyAicm90YXRlZERpdiIKK1BBU1MgYWRqdXN0ZWQgbm9kZSB3YXMgRElWI3JvdGF0ZWQuCitQ
QVNTIGFkanVzdGVkIG5vZGUgd2FzIERJViNyb3RhdGVkLgogCiBOZWFyIE1pc3NlcwotUEFTUyBh
ZGp1c3RlZE5vZGUuaWQgaXMgImNvbnRhaW5lckRpdiIKLVBBU1MgYWRqdXN0ZWROb2RlLmlkIGlz
ICJjb250YWluZXJEaXYiCitQQVNTIGFkanVzdGVkIG5vZGUgd2FzIERJViNjb250YWluZXIuCitQ
QVNTIGFkanVzdGVkIG5vZGUgd2FzIERJViNjb250YWluZXIuCiBQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Rv
dWNoYWRqdXN0bWVudC9yb3RhdGVkLW5vZGUuaHRtbCBiL0xheW91dFRlc3RzL3RvdWNoYWRqdXN0
bWVudC9yb3RhdGVkLW5vZGUuaHRtbAppbmRleCAwNjE5OWNhNmQ3NGJiOTYzOTc4ZjlhOGY5ZWUw
NmI3YzRhMzQwMTVjLi4zNDAxNjM3NWM2MzJiOGU4MTA5MGZlMjcwOWE2MGIyYWM1ZGRkNjMzIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy90b3VjaGFkanVzdG1lbnQvcm90YXRlZC1ub2RlLmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50L3JvdGF0ZWQtbm9kZS5odG1sCkBAIC0x
LDEwMCArMSw2MSBAQAorPCFET0NUWVBFIGh0bWw+CiA8aHRtbD4KIDxoZWFkPgotPHN0eWxlPgot
ICAgICNjb250YWluZXJEaXYgewotICAgICAgICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1i
b3g7Ci0gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOwotICAgICAgICBoZWlnaHQ6IDEw
MHB4OwotICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7Ci0gICAgICAgIHdpZHRoOiAxMDBweDsK
LSAgICB9Ci0gICAgI3JvdGF0ZWREaXYgewotICAgICAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3Jk
ZXItYm94OwotICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7Ci0gICAgICBi
b3JkZXI6IDFweCBzb2xpZCBibGFjazsKLSAgICAgIGhlaWdodDogNDBweDsKLSAgICAgIGxlZnQ6
IDEwcHg7Ci0gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gICAgICB0b3A6IDEwcHg7Ci0gICAg
ICB3aWR0aDogNDBweDsKLSAgICB9Ci0KLSAgICAjdGVzdERpdiB7Ci0gICAgICAtd2Via2l0LWJv
eC1zaXppbmc6IGJvcmRlci1ib3g7Ci0gICAgICBib3JkZXI6IDFweCBzb2xpZCBibGFjazsKLSAg
ICAgIGhlaWdodDogNDBweDsKLSAgICAgIGxlZnQ6IDUwcHg7Ci0gICAgICBwb3NpdGlvbjogYWJz
b2x1dGU7Ci0gICAgICB0b3A6IDQwcHg7Ci0gICAgICB3aWR0aDogNDBweDsKLSAgICB9Ci0KLTwv
c3R5bGU+Ci08c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorICAgIDx0aXRsZT5UZXN0IHRvdWNoIGFkanVzdG1lbnQgdG8gYSBub24tcmVj
dGlsaW5lYXIgZWxlbWVudC48L3RpdGxlPgorICAgIDxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9InJlc291
cmNlcy90b3VjaGFkanVzdG1lbnQuanMiPjwvc2NyaXB0PgorICAgIDxzdHlsZT4KKyAgICAgICAg
Ym9keSB7IG1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IH0KKyAgICAgICAgI2NvbnRhaW5lciB7
CisgICAgICAgICAgICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7CisgICAgICAgICAg
ICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCBibGFj
azsKKyAgICAgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgICAgICAgICB3aWR0aDogMTAwcHg7
CisgICAgICAgIH0KKyAgICAgICAgI3JvdGF0ZWQgeworICAgICAgICAgICAgLXdlYmtpdC1ib3gt
c2l6aW5nOiBib3JkZXItYm94OworICAgICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0
ZSg0NWRlZyk7CisgICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCBibGFjazsKKyAgICAgICAg
ICAgIGhlaWdodDogNDBweDsKKyAgICAgICAgICAgIGxlZnQ6IDEwcHg7CisgICAgICAgICAgICBw
b3NpdGlvbjogYWJzb2x1dGU7CisgICAgICAgICAgICB0b3A6IDEwcHg7CisgICAgICAgICAgICB3
aWR0aDogNDBweDsKKyAgICAgICAgfQorICAgIDwvc3R5bGU+CiAKIDwvaGVhZD4KIAotPGJvZHkg
b25sb2FkPSJydW5UZXN0cygpIj4KKzxib2R5PgogCi08ZGl2IGlkPSJjb250YWluZXJEaXYiPgot
ICA8ZGl2IGlkPSJyb3RhdGVkRGl2Ij48L2Rpdj4KLSAgPCEtLSA8ZGl2IGlkPSJ0ZXN0RGl2Ij48
L2Rpdj4gLS0+Cis8ZGl2IGlkPSJjb250YWluZXIiPgorICAgIDxkaXYgaWQ9InJvdGF0ZWQiPjwv
ZGl2PgogPC9kaXY+CiAKIDxwIGlkPSdkZXNjcmlwdGlvbic+PC9wPgogPGRpdiBpZD0nY29uc29s
ZSc+PC9kaXY+CiAKIDxzY3JpcHQ+Ci0gICAgdmFyIGFkanVzdGVkTm9kZTsKLSAgICB2YXIgYWRq
dXN0ZWRQb2ludDsKLQotICAgIGZ1bmN0aW9uIG5vZGVBdFRvdWNoKHgsIHksIHJhZGl1cykKLSAg
ICB7Ci0gICAgICAgIHZhciB0b3VjaEFyZWEgPSBnZXRUb3VjaEFyZWEoeCwgeSwgcmFkaXVzKTsK
LSAgICAgICAgYWRqdXN0ZWROb2RlID0gaW50ZXJuYWxzLnRvdWNoTm9kZUFkanVzdGVkVG9CZXN0
Q2xpY2thYmxlTm9kZSh0b3VjaEFyZWEueCwgdG91Y2hBcmVhLnksIHRvdWNoQXJlYS53aWR0aCwg
dG91Y2hBcmVhLmhlaWdodCwgZG9jdW1lbnQpOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIGdldFRv
dWNoQXJlYSh4LCB5LCByYWRpdXMpIHsKLSAgICAgICAgdmFyIG5vZGUgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnY29udGFpbmVyRGl2Jyk7Ci0gICAgICAgIHZhciBwb3MgPSBmaW5kQWJzb2x1
dGVQb3NpdGlvbihub2RlKTsKLSAgICAgICAgcmV0dXJuIHsKLSAgICAgICAgICAgIHg6IHBvcy5s
ZWZ0ICsgeCAtIHJhZGl1cywKLSAgICAgICAgICAgIHk6IHBvcy50b3AgKyB5IC0gcmFkaXVzLAot
ICAgICAgICAgICAgd2lkdGg6IDIgKiByYWRpdXMsCi0gICAgICAgICAgICBoZWlnaHQ6IDIgKiBy
YWRpdXMKLSAgICAgICAgfTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBmaW5kQWJzb2x1dGVQb3Np
dGlvbihub2RlKSB7Ci0gICAgICAgIHZhciBwb3MgPSB7bGVmdDogMCwgdG9wOiAwfTsKLSAgICAg
ICAgZG8gewotICAgICAgICAgICAgcG9zLmxlZnQgKz0gbm9kZS5vZmZzZXRMZWZ0OwotICAgICAg
ICAgICAgcG9zLnRvcCArPSBub2RlLm9mZnNldFRvcDsKLSAgICAgICAgfSB3aGlsZSAobm9kZSA9
IG5vZGUub2Zmc2V0UGFyZW50KTsKLSAgICAgICAgcmV0dXJuIHBvczsKLSAgICB9CisgICAgLy8g
U2V0IHVwIHNob3J0Y3V0IGFjY2VzcyB0byBlbGVtZW50cworICAgIHZhciBlID0ge307CisgICAg
Wydjb250YWluZXInLCAncm90YXRlZCddLmZvckVhY2goZnVuY3Rpb24oYSkgeworICAgICAgICBl
W2FdID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYSk7CisgICAgfSk7CiAKICAgICBmdW5jdGlv
biB0ZXN0RGlyZWN0VG91Y2hlcygpCiAgICAgewogICAgICAgICBkZWJ1ZygnRGlyZWN0IFRvdWNo
ZXMnKTsKLQotICAgICAgICBub2RlQXRUb3VjaCgzMCwgMzAsIDIwKTsKLSAgICAgICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCdhZGp1c3RlZE5vZGUuaWQnLCAncm90YXRlZERpdicpOwotICAgICAg
ICBub2RlQXRUb3VjaCgyMCwgMzAsIDIwKTsKLSAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCdhZGp1c3RlZE5vZGUuaWQnLCAncm90YXRlZERpdicpOwotICAgICAgICBub2RlQXRUb3VjaCg0
MCwgMzAsIDIwKTsKLSAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdhZGp1c3RlZE5vZGUu
aWQnLCAncm90YXRlZERpdicpOwotICAgICAgICBub2RlQXRUb3VjaCgzMCwgMjAsIDIwKTsKLSAg
ICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdhZGp1c3RlZE5vZGUuaWQnLCAncm90YXRlZERp
dicpOwotICAgICAgICBub2RlQXRUb3VjaCgzMCwgNDAsIDIwKTsKLSAgICAgICAgc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCdhZGp1c3RlZE5vZGUuaWQnLCAncm90YXRlZERpdicpOwotCi0gICAgICAg
IG5vZGVBdFRvdWNoKDgwLCA4MCwgMjApOwotICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmco
J2FkanVzdGVkTm9kZS5pZCcsICdjb250YWluZXJEaXYnKTsKLSAgICAgICAgbm9kZUF0VG91Y2go
ODAsIDIwLCAyMCk7Ci0gICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnYWRqdXN0ZWROb2Rl
LmlkJywgJ2NvbnRhaW5lckRpdicpOwotICAgICAgICBub2RlQXRUb3VjaCgyMCwgODAsIDIwKTsK
LSAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdhZGp1c3RlZE5vZGUuaWQnLCAnY29udGFp
bmVyRGl2Jyk7CisgICAgICAgIAorICAgICAgICB0ZXN0VG91Y2hQb2ludCh0b3VjaFBvaW50KDMw
LCAzMCwgMjApLCBlLnJvdGF0ZWQpOworICAgICAgICB0ZXN0VG91Y2hQb2ludCh0b3VjaFBvaW50
KDIwLCAzMCwgMjApLCBlLnJvdGF0ZWQpOworICAgICAgICB0ZXN0VG91Y2hQb2ludCh0b3VjaFBv
aW50KDQwLCAzMCwgMjApLCBlLnJvdGF0ZWQpOworICAgICAgICB0ZXN0VG91Y2hQb2ludCh0b3Vj
aFBvaW50KDMwLCAyMCwgMjApLCBlLnJvdGF0ZWQpOworICAgICAgICB0ZXN0VG91Y2hQb2ludCh0
b3VjaFBvaW50KDMwLCA0MCwgMjApLCBlLnJvdGF0ZWQpOworCisgICAgICAgIHRlc3RUb3VjaFBv
aW50KHRvdWNoUG9pbnQoODAsIDgwLCAyMCksIGUuY29udGFpbmVyKTsKKyAgICAgICAgdGVzdFRv
dWNoUG9pbnQodG91Y2hQb2ludCg4MCwgMjAsIDIwKSwgZS5jb250YWluZXIpOworICAgICAgICB0
ZXN0VG91Y2hQb2ludCh0b3VjaFBvaW50KDIwLCA4MCwgMjApLCBlLmNvbnRhaW5lcik7CiAgICAg
fQogCiAgICAgZnVuY3Rpb24gdGVzdEFkanVzdGVkVG91Y2hlcygpCkBAIC0xMDIsMzUgKzYzLDMx
IEBACiAgICAgICAgIGRlYnVnKCdcbkFkanVzdGVkIFRvdWNoZXMnKTsKIAogICAgICAgICAvLyBU
b3VjaCBvdmVybGFwcyBjZW50ZXIgb2YgZWxlbWVudC4KLSAgICAgICAgbm9kZUF0VG91Y2goMTAs
IDEwLCAzMCk7Ci0gICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnYWRqdXN0ZWROb2RlLmlk
JywgJ3JvdGF0ZWREaXYnKTsKKyAgICAgICAgdGVzdFRvdWNoUG9pbnQodG91Y2hQb2ludCgxMCwg
MTAsIDMwKSwgZS5yb3RhdGVkKTsKIAogICAgICAgICAvLyBUb3VjaCBvdmVybGFwcyBjb3JuZXIg
b2YgZWxlbWVudC4KLSAgICAgICAgbm9kZUF0VG91Y2goMjAsIDAsIDIwKTsKLSAgICAgICAgc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCdhZGp1c3RlZE5vZGUuaWQnLCAncm90YXRlZERpdicpOworICAg
ICAgICB0ZXN0VG91Y2hQb2ludCh0b3VjaFBvaW50KDIwLCAwLCAyMCksIGUucm90YXRlZCk7CiAK
ICAgICAgICAgZGVidWcoJ1xuTmVhciBNaXNzZXMnKTsKIAogICAgICAgICAvLyBUb3VjaCBvdmVy
bGFwcyBib3VuZGluZy1ib3ggb2YgZWxlbWVudCwgYnV0IG5vdCB0aGUgYWN0dWFsIGJvdW5kcy4K
LSAgICAgICAgbm9kZUF0VG91Y2goNzAsIDAsIDIwKTsKLSAgICAgICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCdhZGp1c3RlZE5vZGUuaWQnLCAnY29udGFpbmVyRGl2Jyk7Ci0gICAgICAgIG5vZGVB
dFRvdWNoKDcwLCA2MCwgMjApOwotICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2FkanVz
dGVkTm9kZS5pZCcsICdjb250YWluZXJEaXYnKTsKKyAgICAgICAgdGVzdFRvdWNoUG9pbnQodG91
Y2hQb2ludCg3MCwgMCwgMjApLCBlLmNvbnRhaW5lcik7CisgICAgICAgIHRlc3RUb3VjaFBvaW50
KHRvdWNoUG9pbnQoNzAsIDYwLCAyMCksIGUuY29udGFpbmVyKTsKICAgICB9CiAKICAgICBmdW5j
dGlvbiBydW5UZXN0cygpCiAgICAgewogICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVy
KCdjbGljaycsIGZ1bmN0aW9uKCkge30sIGZhbHNlKTsKICAgICAgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyICYmIHdpbmRvdy5pbnRlcm5hbHMgJiYgaW50ZXJuYWxzLnRvdWNoTm9kZUFkanVzdGVk
VG9CZXN0Q2xpY2thYmxlTm9kZSkgewotICAgICAgICAgICAgZGVzY3JpcHRpb24oJ1Rlc3QgdG91
Y2ggYWRqdXN0bWVudCB0byBhIG5vbi1yZWN0aWxpbmVhciBlbGVtZW50LicpOwotICAgICAgICAg
ICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRV
bnRpbERvbmUoKTsKKyAgICAgICAgICAgIGRlc2NyaXB0aW9uKGRvY3VtZW50LnRpdGxlKTsKICAg
ICAgICAgICAgIHRlc3REaXJlY3RUb3VjaGVzKCk7CiAgICAgICAgICAgICB0ZXN0QWRqdXN0ZWRU
b3VjaGVzKCk7Ci0gICAgICAgICAgICBpc1N1Y2Nlc3NmdWxseVBhcnNlZCgpOwotICAgICAgICAg
ICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICBlLmNvbnRhaW5lci5zdHls
ZS5kaXNwbGF5ID0gJ25vbmUnOwogICAgICAgICB9CiAgICAgfQorICAgIHJ1blRlc3RzKCk7CiA8
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgorCiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy90b3VjaGFkanVzdG1lbnQvc2Nyb2xsLW9mZnNldC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy90b3VjaGFkanVzdG1lbnQvc2Nyb2xsLW9mZnNldC1leHBlY3RlZC50eHQKaW5kZXggZjkyNGNj
OTUzMGMxODdjZDdiODllYzdhZWZlZjAwNTlkMzA2MjVkOS4uNTMyYzUyMDU4YzdhZTU0NGJkMzkz
ZGVhYmI0NzM2ZTBmM2E1MzQ0MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3Rt
ZW50L3Njcm9sbC1vZmZzZXQtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3RvdWNoYWRq
dXN0bWVudC9zY3JvbGwtb2Zmc2V0LWV4cGVjdGVkLnR4dApAQCAtMSwxOSArMSwxNCBAQAotTGlu
ayAwCi1MaW5rIDEKIFRlc3QgdG91Y2ggYWRqdXN0bWVudCB3aGVuIG1haW4gZnJhbWUgaXMgc2Ny
b2xsIG9mZnNldC4KIAogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCiAKLVBBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotUEFTUyBhZGp1c3RlZE5vZGUu
aWQgaXMgImEwIgotUEFTUyBhZGp1c3RlZE5vZGUuaWQgaXMgImExIgorUEFTUyBhZGp1c3RlZCBu
b2RlIHdhcyBBI2EwLgorUEFTUyBhZGp1c3RlZCBub2RlIHdhcyBBI2ExLgogUEFTUyBhZGp1c3Rl
ZFBvaW50IGlzIG5vbi1udWxsLgotUEFTUyBhZGp1c3RlZE5vZGUuaWQgaXMgImEwIgorUEFTUyBh
ZGp1c3RlZE5vZGUgaXMgZS5hMAogUEFTUyBhZGp1c3RlZFBvaW50IGlzIG5vbi1udWxsLgotUEFT
UyBhZGp1c3RlZE5vZGUuaWQgaXMgImExIgorUEFTUyBhZGp1c3RlZE5vZGUgaXMgZS5hMQogUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy90b3VjaGFkanVzdG1lbnQvc2Nyb2xsLW9mZnNldC5odG1sIGIvTGF5b3V0
VGVzdHMvdG91Y2hhZGp1c3RtZW50L3Njcm9sbC1vZmZzZXQuaHRtbAppbmRleCAzMDE1Njk2ZmNm
M2VjYTI3ZmQ3NmJiZWM2MDA4NjU4YjE4ZTAxNTgxLi4yMTQwYjFhOTBhYTgxMzIxY2QwNTVmNDdi
M2JlZDE1NDU2ZjhmMzc0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy90b3VjaGFkanVzdG1lbnQv
c2Nyb2xsLW9mZnNldC5odG1sCisrKyBiL0xheW91dFRlc3RzL3RvdWNoYWRqdXN0bWVudC9zY3Jv
bGwtb2Zmc2V0Lmh0bWwKQEAgLTEsNiArMSw5IEBACis8IURPQ1RZUEUgaHRtbD4KIDxodG1sPgog
PGhlYWQ+CisgICAgPHRpdGxlPlRlc3QgdG91Y2ggYWRqdXN0bWVudCB3aGVuIG1haW4gZnJhbWUg
aXMgc2Nyb2xsIG9mZnNldC48L3RpdGxlPgogICAgIDxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9InJlc291
cmNlcy90b3VjaGFkanVzdG1lbnQuanMiPjwvc2NyaXB0PgogICAgIDxzdHlsZT4KICAgICAgICAg
I3Njcm9sbG9mZnNldGNvbnRhaW5lciB7CiAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7
CkBAIC0xNCw3ICsxNyw3IEBACiAgICAgICAgICNkaXYxIHsgbWFyZ2luLWxlZnQ6IDEwcHg7IGhl
aWdodDogMTAwcHg7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IH0KICAgICA8L3N0eWxlPgogPC9o
ZWFkPgotPGJvZHkgb25sb2FkPSJydW5UZXN0cygpIj4KKzxib2R5PgogCiA8ZGl2IGlkPXNjcm9s
bG9mZnNldGNvbnRhaW5lcj4KICAgICA8ZGl2IGlkPWRpdjA+CkBAIC0zMSwxNyArMzQsMTIgQEAK
IDxzY3JpcHQ+CiAgICAgdmFyIGFkanVzdGVkTm9kZTsKICAgICB2YXIgYWRqdXN0ZWRQb2ludDsK
LSAgICBmdW5jdGlvbiBub2RlQXRUb3VjaCh4LCB5LCByYWRpdXMpCi0gICAgewotICAgICAgICB2
YXIgeCA9IHggLSByYWRpdXM7Ci0gICAgICAgIHZhciB5ID0geSAtIHJhZGl1czsKLSAgICAgICAg
dmFyIHdpZHRoID0gcmFkaXVzICogMjsKLSAgICAgICAgdmFyIGhlaWdodCA9IHJhZGl1cyAqIDI7
Ci0gICAgICAgIHZhciBhZGp1c3RlZE5vZGUgPSBpbnRlcm5hbHMudG91Y2hOb2RlQWRqdXN0ZWRU
b0Jlc3RDbGlja2FibGVOb2RlKHgsIHksIHdpZHRoLCBoZWlnaHQsIGRvY3VtZW50KTsKLSAgICAg
ICAgaWYgKGFkanVzdGVkTm9kZSAmJiBhZGp1c3RlZE5vZGUubm9kZVR5cGUgPT0gMykgLy8gVEVY
VCBub2RlCi0gICAgICAgICAgICBhZGp1c3RlZE5vZGUgPSBhZGp1c3RlZE5vZGUucGFyZW50Tm9k
ZTsKLSAgICAgICAgcmV0dXJuIGFkanVzdGVkTm9kZTsKLSAgICB9CisgICAgLy8gU2V0IHVwIHNo
b3J0Y3V0IGFjY2VzcyB0byBlbGVtZW50cworICAgIHZhciBlID0ge307CisgICAgWydzY3JvbGxv
ZmZzZXRjb250YWluZXInLCAnZGl2MCcsICdkaXYxJywgJ2EwJywgJ2ExJ10uZm9yRWFjaChmdW5j
dGlvbihhKSB7CisgICAgICAgIGVbYV0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChhKTsKKyAg
ICB9KTsKKwogICAgIGZ1bmN0aW9uIGFkanVzdGVkUG9pbnRBdFRvdWNoKHgsIHksIHJhZGl1cykK
ICAgICB7CiAgICAgICAgIHZhciB4ID0geCAtIHJhZGl1czsKQEAgLTU0LDM4ICs1MiwzMyBAQAog
CiAgICAgZnVuY3Rpb24gdGVzdERpcmVjdFRvdWNoZXMoKQogICAgIHsKLSAgICAgICAgYWRqdXN0
ZWROb2RlID0gbm9kZUF0VG91Y2goNDAsIDEzMCwgNTApOwotICAgICAgICBzaG91bGRCZUVxdWFs
VG9TdHJpbmcoJ2FkanVzdGVkTm9kZS5pZCcsICdhMCcpOwotCi0gICAgICAgIGFkanVzdGVkTm9k
ZSA9IG5vZGVBdFRvdWNoKDMwLCAyMzAsIDUwKTsKLSAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCdhZGp1c3RlZE5vZGUuaWQnLCAnYTEnKTsKKyAgICAgICAgdGVzdFRvdWNoUG9pbnQodG91
Y2hQb2ludCg0MCwgMTMwLCA1MCksIGUuYTApOworICAgICAgICB0ZXN0VG91Y2hQb2ludCh0b3Vj
aFBvaW50KDMwLCAyMzAsIDUwKSwgZS5hMSk7CiAgICAgfQogICAgIGZ1bmN0aW9uIHRlc3RBZGp1
c3RlZFRvdWNoZXMoKQogICAgIHsKICAgICAgICAgYWRqdXN0ZWRQb2ludCA9IGFkanVzdGVkUG9p
bnRBdFRvdWNoKDEwLCAxMjAsIDgwKTsKLSAgICAgICAgc2hvdWxkQmVOb25OdWxsKCdhZGp1c3Rl
ZFBvaW50JywgbnVsbCk7CisgICAgICAgIHNob3VsZEJlTm9uTnVsbCgnYWRqdXN0ZWRQb2ludCcp
OwogICAgICAgICBhZGp1c3RlZE5vZGUgPSBkb2N1bWVudC5lbGVtZW50RnJvbVBvaW50KGFkanVz
dGVkUG9pbnQueCwgYWRqdXN0ZWRQb2ludC55KTsKLSAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCdhZGp1c3RlZE5vZGUuaWQnLCAnYTAnKTsKKyAgICAgICAgc2hvdWxkQmUoJ2FkanVzdGVk
Tm9kZScsICdlLmEwJyk7CiAKICAgICAgICAgYWRqdXN0ZWRQb2ludCA9IGFkanVzdGVkUG9pbnRB
dFRvdWNoKDUsIDIyMCwgODApOwotICAgICAgICBzaG91bGRCZU5vbk51bGwoJ2FkanVzdGVkUG9p
bnQnLCBudWxsKTsKKyAgICAgICAgc2hvdWxkQmVOb25OdWxsKCdhZGp1c3RlZFBvaW50Jyk7CiAg
ICAgICAgIGFkanVzdGVkTm9kZSA9IGRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQoYWRqdXN0ZWRQ
b2ludC54LCBhZGp1c3RlZFBvaW50LnkpOwotICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmco
J2FkanVzdGVkTm9kZS5pZCcsICdhMScpOworICAgICAgICBzaG91bGRCZSgnYWRqdXN0ZWROb2Rl
JywgJ2UuYTEnKTsKICAgICB9CiAKICAgICBmdW5jdGlvbiBydW5UZXN0cygpCiAgICAgewogICAg
ICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIgJiYgd2luZG93LmludGVybmFscyAmJiBpbnRlcm5h
bHMudG91Y2hOb2RlQWRqdXN0ZWRUb0Jlc3RDbGlja2FibGVOb2RlKSB7Ci0gICAgICAgICAgICBk
ZXNjcmlwdGlvbignVGVzdCB0b3VjaCBhZGp1c3RtZW50IHdoZW4gbWFpbiBmcmFtZSBpcyBzY3Jv
bGwgb2Zmc2V0LicpOworICAgICAgICAgICAgZGVzY3JpcHRpb24oZG9jdW1lbnQudGl0bGUpOwog
ICAgICAgICAgICAgd2luZG93LnNjcm9sbEJ5KDAsNDAwKTsKLSAgICAgICAgICAgIHRlc3RSdW5u
ZXIuZHVtcEFzVGV4dCgpOwotICAgICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7
CiAgICAgICAgICAgICB0ZXN0RGlyZWN0VG91Y2hlcygpOwogICAgICAgICAgICAgdGVzdEFkanVz
dGVkVG91Y2hlcygpOwotICAgICAgICAgICAgaXNTdWNjZXNzZnVsbHlQYXJzZWQoKTsKLSAgICAg
ICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgZS5zY3JvbGxvZmZz
ZXRjb250YWluZXIuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKICAgICAgICAgfQogICAgIH0KKyAg
ICBydW5UZXN0cygpOwogPC9zY3JpcHQ+CiAKIDxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
dG91Y2hhZGp1c3RtZW50L3NlYXJjaC1jYW5jZWwuaHRtbCBiL0xheW91dFRlc3RzL3RvdWNoYWRq
dXN0bWVudC9zZWFyY2gtY2FuY2VsLmh0bWwKaW5kZXggOTE3MzdlYzMyMTRhMGRiMTc0Y2EwZTQx
NDY1YmFmNzI4NDhiYzcxMi4uMWRiOGZlMjJhYjRmYzg5ZDM3MGU4ZDk3NWIwYTVmYzliY2Y1OTMw
MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50L3NlYXJjaC1jYW5jZWwu
aHRtbAorKysgYi9MYXlvdXRUZXN0cy90b3VjaGFkanVzdG1lbnQvc2VhcmNoLWNhbmNlbC5odG1s
CkBAIC0xLDMxICsxLDMzIEBACis8IURPQ1RZUEUgaHRtbD4KIDxodG1sPgogPGhlYWQ+Ci08c3R5
bGU+Ci0gICAgaW5wdXRbdHlwZT0nc2VhcmNoJ10gewotICAgICAgLXdlYmtpdC1hcHBlYXJhbmNl
OiBub25lOwotICAgICAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94OwotICAgICAgYm9y
ZGVyOiAxcHggc29saWQgIzk5OTsKLSAgICAgIHBhZGRpbmc6IDVweDsKLSAgICB9Ci0KLSAgICBp
bnB1dFt0eXBlPSdzZWFyY2gnXTo6LXdlYmtpdC1zZWFyY2gtY2FuY2VsLWJ1dHRvbiB7Ci0gICAg
ICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7Ci0gICAgICAtd2Via2l0LWJveC1zaXppbmc6IGJv
cmRlci1ib3g7Ci0gICAgICBiYWNrZ3JvdW5kOiAjOTk5OwotICAgICAgaGVpZ2h0OiAxMHB4Owot
ICAgICAgbWFyZ2luOiAwOwotICAgICAgcGFkZGluZzogMDsKLSAgICAgIHdpZHRoOiAxMHB4Owot
ICAgIH0KLTwvc3R5bGU+Ci08c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorICAgIDx0aXRsZT5UZXN0IHRvdWNoIGFkanVzdG1lbnQgb24g
YSBzZWFyY2ggZmllbGQgd2l0aCBhIHZpc2libGUgY2FuY2VsIGJ1dHRvbi48L3RpdGxlPgorICAg
IDxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+CisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy90b3VjaGFkanVzdG1lbnQuanMiPjwvc2Ny
aXB0PgorICAgIDxzdHlsZT4KKyAgICAgICAgaW5wdXRbdHlwZT0nc2VhcmNoJ10geworICAgICAg
ICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7CisgICAgICAgIC13ZWJraXQtYm94LXNpemluZzog
Ym9yZGVyLWJveDsKKyAgICAgICAgYm9yZGVyOiAxcHggc29saWQgIzk5OTsKKyAgICAgICAgcGFk
ZGluZzogNXB4OworICAgICAgICB9CiAKKyAgICAgICAgaW5wdXRbdHlwZT0nc2VhcmNoJ106Oi13
ZWJraXQtc2VhcmNoLWNhbmNlbC1idXR0b24geworICAgICAgICAtd2Via2l0LWFwcGVhcmFuY2U6
IG5vbmU7CisgICAgICAgIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDsKKyAgICAgICAg
YmFja2dyb3VuZDogIzk5OTsKKyAgICAgICAgaGVpZ2h0OiAxMHB4OworICAgICAgICBtYXJnaW46
IDA7CisgICAgICAgIHBhZGRpbmc6IDA7CisgICAgICAgIHdpZHRoOiAxMHB4OworICAgICAgICB9
CisgICAgPC9zdHlsZT4KIDwvaGVhZD4KIAotPGJvZHkgb25sb2FkPSJydW5UZXN0cygpIj4KKzxi
b2R5PgogCiA8ZGl2PgotICA8aW5wdXQgaWQ9InRhcmdldCIgdHlwZT0ic2VhcmNoIiB2YWx1ZT0i
YWJjZCIvPgorICA8aW5wdXQgaWQ9InRhcmdldCIgdHlwZT0ic2VhcmNoIiB2YWx1ZT0iYWJjZCI+
CiA8L2Rpdj4KIAogPHAgaWQ9J2Rlc2NyaXB0aW9uJz48L3A+CkBAIC00Myw1MCArNDUsMzAgQEAK
ICAgICB2YXIgdGFyZ2V0Q29udGFpbnNQb2ludDsKICAgICB2YXIgdG91Y2hDb250YWluc1BvaW50
OwogCi0gICAgZnVuY3Rpb24gZmluZEFic29sdXRlUG9zaXRpb24obm9kZSkgewotICAgICAgICB2
YXIgcG9zID0ge2xlZnQ6IDAsIHRvcDogMH07Ci0gICAgICAgIGRvIHsKLSAgICAgICAgICAgIHBv
cy5sZWZ0ICs9IG5vZGUub2Zmc2V0TGVmdDsKLSAgICAgICAgICAgIHBvcy50b3AgKz0gbm9kZS5v
ZmZzZXRUb3A7Ci0gICAgICAgIH0gd2hpbGUgKG5vZGUgPSBub2RlLm9mZnNldFBhcmVudCk7Ci0g
ICAgICAgIHJldHVybiBwb3M7Ci0gICAgfQotCiAgICAgZnVuY3Rpb24gcnVuVG91Y2hUZXN0cygp
IHsKICAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigp
IHt9LCBmYWxzZSk7CiAKICAgICAgICAgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCd0YXJnZXQnKTsKLSAgICAgICAgdmFyIHBvcyA9IGZpbmRBYnNvbHV0ZVBvc2l0aW9uKGVsZW1l
bnQpOwotCi0gICAgICAgIHZhciB4ID0gcG9zLmxlZnQ7Ci0gICAgICAgIHZhciB5ID0gcG9zLnRv
cDsKLSAgICAgICAgdmFyIHdpZHRoID0gZWxlbWVudC5jbGllbnRXaWR0aDsKLSAgICAgICAgdmFy
IGhlaWdodCA9IGVsZW1lbnQuY2xpZW50SGVpZ2h0OwotCi0gICAgICAgIGlucHV0Qm91bmRzID0g
ewotICAgICAgICAgICAgeDogeCwKLSAgICAgICAgICAgIHk6IHksCi0gICAgICAgICAgICB3aWR0
aDogd2lkdGgsCi0gICAgICAgICAgICBoZWlnaHQ6IGhlaWdodAotICAgICAgICB9OworICAgICAg
ICAKKyAgICAgICAgaW5wdXRCb3VuZHMgPSBmaW5kQWJzb2x1dGVCb3VuZHMoZWxlbWVudCk7CiAK
ICAgICAgICAgdmFyIHRvdWNoUmFkaXVzID0gMjA7CiAgICAgICAgIHZhciBvZmZzZXQgPSB0b3Vj
aFJhZGl1cyAvIDI7CiAKICAgICAgICAgLy8gQ2VudGVyIG9mIGNhbmNlbCBidXR0b24uCi0gICAg
ICAgIHZhciBtaWRYID0geCArIHdpZHRoIC0gMTE7Ci0gICAgICAgIHZhciBtaWRZID0geSArIGhl
aWdodCAvIDI7CisgICAgICAgIHZhciBtaWRYID0gaW5wdXRCb3VuZHMubGVmdCArIGlucHV0Qm91
bmRzLndpZHRoIC0gMTE7CisgICAgICAgIHZhciBtaWRZID0gaW5wdXRCb3VuZHMudG9wICsgaW5w
dXRCb3VuZHMuaGVpZ2h0IC8gMjsKIAogICAgICAgICBjYW5jZWxCb3VuZHMgPSB7Ci0gICAgICAg
ICAgICB4OiBtaWRYIC0gNSwKLSAgICAgICAgICAgIHk6IG1pZFkgLSA1LAorICAgICAgICAgICAg
bGVmdDogbWlkWCAtIDUsCisgICAgICAgICAgICB0b3A6IG1pZFkgLSA1LAogICAgICAgICAgICAg
d2lkdGg6IDEwLAogICAgICAgICAgICAgaGVpZ2h0OiAxMAogICAgICAgICB9OwogCiAgICAgICAg
IHRleHRDb250ZW50Qm91bmRzID0gewotICAgICAgICAgICB4OiBpbnB1dEJvdW5kcy54LAotICAg
ICAgICAgICB5OiBpbnB1dEJvdW5kcy55LAorICAgICAgICAgICBsZWZ0OiBpbnB1dEJvdW5kcy5s
ZWZ0LAorICAgICAgICAgICB0b3A6IGlucHV0Qm91bmRzLnRvcCwKICAgICAgICAgICAgd2lkdGg6
IGlucHV0Qm91bmRzLndpZHRoIC0gMTYsCiAgICAgICAgICAgIGhlaWdodDogaW5wdXRCb3VuZHMu
aGVpZ2h0CiAgICAgICAgIH07CkBAIC0xMTAsMTIgKzkyLDEyIEBACiAgICAgICAgIHRhcmdldEJv
dW5kcyA9IGJvdW5kczsKIAogICAgICAgICB0b3VjaEJvdW5kcyA9IHsKLSAgICAgICAgICAgIHg6
IHRvdWNoWCAtIHJhZGl1cywKLSAgICAgICAgICAgIHk6IHRvdWNoWSAtIHJhZGl1cywKKyAgICAg
ICAgICAgIGxlZnQ6IHRvdWNoWCAtIHJhZGl1cywKKyAgICAgICAgICAgIHRvcDogdG91Y2hZIC0g
cmFkaXVzLAogICAgICAgICAgICAgd2lkdGg6IDIgKiByYWRpdXMsCiAgICAgICAgICAgICBoZWln
aHQ6IDIgKiByYWRpdXMKICAgICAgICAgfTsKLSAgICAgICAgYWRqdXN0ZWRQb2ludCA9IGludGVy
bmFscy50b3VjaFBvc2l0aW9uQWRqdXN0ZWRUb0Jlc3RDbGlja2FibGVOb2RlKHRvdWNoQm91bmRz
LngsIHRvdWNoQm91bmRzLnksIHRvdWNoQm91bmRzLndpZHRoLCB0b3VjaEJvdW5kcy5oZWlnaHQs
IGRvY3VtZW50KTsKKyAgICAgICAgYWRqdXN0ZWRQb2ludCA9IGludGVybmFscy50b3VjaFBvc2l0
aW9uQWRqdXN0ZWRUb0Jlc3RDbGlja2FibGVOb2RlKHRvdWNoQm91bmRzLmxlZnQsIHRvdWNoQm91
bmRzLnRvcCwgdG91Y2hCb3VuZHMud2lkdGgsIHRvdWNoQm91bmRzLmhlaWdodCwgZG9jdW1lbnQp
OwogICAgICAgICB0YXJnZXRDb250YWluc1BvaW50ID0gY29udGFpbnNQb2ludCh0YXJnZXRCb3Vu
ZHMsIGFkanVzdGVkUG9pbnQpOwogICAgICAgICB0b3VjaENvbnRhaW5zUG9pbnQgPSBjb250YWlu
c1BvaW50KHRvdWNoQm91bmRzLCBhZGp1c3RlZFBvaW50KTsKICAgICAgICAgc2hvdWxkQmVUcnVl
KCd0YXJnZXRDb250YWluc1BvaW50Jyk7CkBAIC0xMjMsMjAgKzEwNSwxOCBAQAogICAgIH0KIAog
ICAgIGZ1bmN0aW9uIGNvbnRhaW5zUG9pbnQoYm91bmRzLCBwb2ludCkgewotICAgICAgICByZXR1
cm4gYm91bmRzLnggPD0gcG9pbnQueCAmJiBib3VuZHMueSA8PSBwb2ludC55ICYmIGJvdW5kcy54
ICsgYm91bmRzLndpZHRoID49IHBvaW50LnggJiYgYm91bmRzLnkgKyBib3VuZHMuaGVpZ2h0ID49
IHBvaW50Lnk7CisgICAgICAgIHJldHVybiBib3VuZHMubGVmdCA8PSBwb2ludC54ICYmIGJvdW5k
cy50b3AgPD0gcG9pbnQueSAmJiBib3VuZHMubGVmdCArIGJvdW5kcy53aWR0aCA+PSBwb2ludC54
ICYmIGJvdW5kcy5sZWZ0ICsgYm91bmRzLmhlaWdodCA+PSBwb2ludC55OwogICAgIH0KIAogICAg
IGZ1bmN0aW9uIHJ1blRlc3RzKCkKICAgICB7CiAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
ciAmJiB3aW5kb3cuaW50ZXJuYWxzICYmIGludGVybmFscy50b3VjaE5vZGVBZGp1c3RlZFRvQmVz
dENsaWNrYWJsZU5vZGUpIHsKLSAgICAgICAgICAgIGRlc2NyaXB0aW9uKCdUZXN0IHRvdWNoIGFk
anVzdG1lbnQgb24gYSBzZWFyY2ggZmllbGQgd2l0aCBhIHZpc2libGUgY2FuY2VsIGJ1dHRvbi4n
KTsKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwotICAgICAgICAgICAgdGVz
dFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgICAgICAgICBkZXNjcmlwdGlvbihkb2N1bWVu
dC50aXRsZSk7CiAgICAgICAgICAgICBydW5Ub3VjaFRlc3RzKCk7Ci0gICAgICAgICAgICBpc1N1
Y2Nlc3NmdWxseVBhcnNlZCgpOwotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7
CiAgICAgICAgIH0KICAgICB9CisgICAgcnVuVGVzdHMoKTsKIDwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2Jv
ZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90b3VjaGFkanVzdG1lbnQvc21h
bGwtdGFyZ2V0LXRlc3QtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50
L3NtYWxsLXRhcmdldC10ZXN0LWV4cGVjdGVkLnR4dAppbmRleCBhNDg5MjlmM2VlY2Y3ODM2Yzgz
ZTFmNzI0MWQ5NWNjNjM5ZDY0ZmJiLi42NTkwMzIxNjk2N2ZlYmVmNWMxNGYyNmVjNjQ0M2ZiOGJh
MWFlMTQzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy90b3VjaGFkanVzdG1lbnQvc21hbGwtdGFy
Z2V0LXRlc3QtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3RvdWNoYWRqdXN0bWVudC9z
bWFsbC10YXJnZXQtdGVzdC1leHBlY3RlZC50eHQKQEAgLTEsNDMgKzEsNDAgQEAKLSAgCi0gCi0g
CiBUZXN0cyBpZiBzbWFsbCBjbGlja2FibGUgdGFyZ2V0cyBhZGphY2VudCB0byBsYXJnZXIgY2xp
Y2thYmxlIGNvbnRyb2xzIGFyZSBwcm9wZXJseSB0YXJnZXR0ZWQgd2l0aCB0b3VjaCBhZGp1c3Rt
ZW50LgogCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3Nh
Z2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAKIAogVGVzdGluZyBzbWFsbCBkaXJl
Y3QgaGl0cy4KLVBBU1MgYWRqdXN0ZWROb2RlLmlkIGlzICJjaGVjayIKLVBBU1MgYWRqdXN0ZWRO
b2RlLmlkIGlzICJ0YXNrIgotUEFTUyBhZGp1c3RlZE5vZGUuaWQgaXMgIml0ZW0tbGFiZWwiCi1Q
QVNTIGFkanVzdGVkTm9kZS5pZCBpcyAicmVtb3ZlLWJ1dHRvbiIKLVBBU1MgYWRqdXN0ZWROb2Rl
LmlkIGlzICJjb21iby1sYWJlbCIKLVBBU1MgYWRqdXN0ZWROb2RlLmlkIGlzICJkcm9wLWRvd24t
c2VsZWN0b3IiCitQQVNTIGFkanVzdGVkIG5vZGUgd2FzIERJViNjaGVjay4KK1BBU1MgYWRqdXN0
ZWQgbm9kZSB3YXMgSU5QVVQjdGFzay4KK1BBU1MgYWRqdXN0ZWQgbm9kZSB3YXMgSU5QVVQjaXRl
bS1sYWJlbC4KK1BBU1MgYWRqdXN0ZWQgbm9kZSB3YXMgRElWI3JlbW92ZS1idXR0b24uCitQQVNT
IGFkanVzdGVkIG5vZGUgd2FzIERJViNjb21iby1sYWJlbC4KK1BBU1MgYWRqdXN0ZWQgbm9kZSB3
YXMgRElWI2Ryb3AtZG93bi1zZWxlY3Rvci4KIFRlc3RpbmcgaW5kaXJlY3QgaGl0cy4KLVBBU1Mg
YWRqdXN0ZWROb2RlLmlkIGlzICJjaGVjayIKLVBBU1MgYWRqdXN0ZWROb2RlLmlkIGlzICJjaGVj
ayIKLVBBU1MgYWRqdXN0ZWROb2RlLmlkIGlzICJjaGVjayIKLVBBU1MgYWRqdXN0ZWROb2RlLmlk
IGlzICJjaGVjayIKLVBBU1MgYWRqdXN0ZWROb2RlLmlkIGlzICJjaGVjayIKLVBBU1MgYWRqdXN0
ZWROb2RlLmlkIGlzICJjaGVjayIKLVBBU1MgYWRqdXN0ZWROb2RlLmlkIGlzICJjaGVjayIKLVBB
U1MgYWRqdXN0ZWROb2RlLmlkIGlzICJjaGVjayIKLVBBU1MgYWRqdXN0ZWROb2RlLmlkIGlzICJy
ZW1vdmUtYnV0dG9uIgotUEFTUyBhZGp1c3RlZE5vZGUuaWQgaXMgInJlbW92ZS1idXR0b24iCi1Q
QVNTIGFkanVzdGVkTm9kZS5pZCBpcyAicmVtb3ZlLWJ1dHRvbiIKLVBBU1MgYWRqdXN0ZWROb2Rl
LmlkIGlzICJyZW1vdmUtYnV0dG9uIgotUEFTUyBhZGp1c3RlZE5vZGUuaWQgaXMgInJlbW92ZS1i
dXR0b24iCi1QQVNTIGFkanVzdGVkTm9kZS5pZCBpcyAicmVtb3ZlLWJ1dHRvbiIKLVBBU1MgYWRq
dXN0ZWROb2RlLmlkIGlzICJyZW1vdmUtYnV0dG9uIgotUEFTUyBhZGp1c3RlZE5vZGUuaWQgaXMg
InJlbW92ZS1idXR0b24iCi1QQVNTIGFkanVzdGVkTm9kZS5pZCBpcyAiZHJvcC1kb3duLXNlbGVj
dG9yIgotUEFTUyBhZGp1c3RlZE5vZGUuaWQgaXMgImRyb3AtZG93bi1zZWxlY3RvciIKLVBBU1Mg
YWRqdXN0ZWROb2RlLmlkIGlzICJkcm9wLWRvd24tc2VsZWN0b3IiCi1QQVNTIGFkanVzdGVkTm9k
ZS5pZCBpcyAiZHJvcC1kb3duLXNlbGVjdG9yIgotUEFTUyBhZGp1c3RlZE5vZGUuaWQgaXMgImRy
b3AtZG93bi1zZWxlY3RvciIKLVBBU1MgYWRqdXN0ZWROb2RlLmlkIGlzICJkcm9wLWRvd24tc2Vs
ZWN0b3IiCi1QQVNTIGFkanVzdGVkTm9kZS5pZCBpcyAiZHJvcC1kb3duLXNlbGVjdG9yIgotUEFT
UyBhZGp1c3RlZE5vZGUuaWQgaXMgImRyb3AtZG93bi1zZWxlY3RvciIKK1BBU1MgYWRqdXN0ZWQg
bm9kZSB3YXMgRElWI2NoZWNrLgorUEFTUyBhZGp1c3RlZCBub2RlIHdhcyBESVYjY2hlY2suCitQ
QVNTIGFkanVzdGVkIG5vZGUgd2FzIERJViNjaGVjay4KK1BBU1MgYWRqdXN0ZWQgbm9kZSB3YXMg
RElWI2NoZWNrLgorUEFTUyBhZGp1c3RlZCBub2RlIHdhcyBESVYjY2hlY2suCitQQVNTIGFkanVz
dGVkIG5vZGUgd2FzIERJViNjaGVjay4KK1BBU1MgYWRqdXN0ZWQgbm9kZSB3YXMgRElWI2NoZWNr
LgorUEFTUyBhZGp1c3RlZCBub2RlIHdhcyBESVYjY2hlY2suCitQQVNTIGFkanVzdGVkIG5vZGUg
d2FzIERJViNyZW1vdmUtYnV0dG9uLgorUEFTUyBhZGp1c3RlZCBub2RlIHdhcyBESVYjcmVtb3Zl
LWJ1dHRvbi4KK1BBU1MgYWRqdXN0ZWQgbm9kZSB3YXMgRElWI3JlbW92ZS1idXR0b24uCitQQVNT
IGFkanVzdGVkIG5vZGUgd2FzIERJViNyZW1vdmUtYnV0dG9uLgorUEFTUyBhZGp1c3RlZCBub2Rl
IHdhcyBESVYjcmVtb3ZlLWJ1dHRvbi4KK1BBU1MgYWRqdXN0ZWQgbm9kZSB3YXMgRElWI3JlbW92
ZS1idXR0b24uCitQQVNTIGFkanVzdGVkIG5vZGUgd2FzIERJViNyZW1vdmUtYnV0dG9uLgorUEFT
UyBhZGp1c3RlZCBub2RlIHdhcyBESVYjcmVtb3ZlLWJ1dHRvbi4KK1BBU1MgYWRqdXN0ZWQgbm9k
ZSB3YXMgRElWI2Ryb3AtZG93bi1zZWxlY3Rvci4KK1BBU1MgYWRqdXN0ZWQgbm9kZSB3YXMgRElW
I2Ryb3AtZG93bi1zZWxlY3Rvci4KK1BBU1MgYWRqdXN0ZWQgbm9kZSB3YXMgRElWI2Ryb3AtZG93
bi1zZWxlY3Rvci4KK1BBU1MgYWRqdXN0ZWQgbm9kZSB3YXMgRElWI2Ryb3AtZG93bi1zZWxlY3Rv
ci4KK1BBU1MgYWRqdXN0ZWQgbm9kZSB3YXMgRElWI2Ryb3AtZG93bi1zZWxlY3Rvci4KK1BBU1Mg
YWRqdXN0ZWQgbm9kZSB3YXMgRElWI2Ryb3AtZG93bi1zZWxlY3Rvci4KK1BBU1MgYWRqdXN0ZWQg
bm9kZSB3YXMgRElWI2Ryb3AtZG93bi1zZWxlY3Rvci4KK1BBU1MgYWRqdXN0ZWQgbm9kZSB3YXMg
RElWI2Ryb3AtZG93bi1zZWxlY3Rvci4KIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
IAogVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50
L3NtYWxsLXRhcmdldC10ZXN0Lmh0bWwgYi9MYXlvdXRUZXN0cy90b3VjaGFkanVzdG1lbnQvc21h
bGwtdGFyZ2V0LXRlc3QuaHRtbAppbmRleCBjMThlMmZjZTliMjAyOGJkZjcwODNkNjRlODBjODc0
ZGMyZGNlYjlhLi5lNWYxZDg4OTg3ZGNjMDRiODM4YWE4YTI5NDFmNjcyZDRmODY3Y2M1IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy90b3VjaGFkanVzdG1lbnQvc21hbGwtdGFyZ2V0LXRlc3QuaHRt
bAorKysgYi9MYXlvdXRUZXN0cy90b3VjaGFkanVzdG1lbnQvc21hbGwtdGFyZ2V0LXRlc3QuaHRt
bApAQCAtMSwxMSArMSwxNSBAQAorPCFET0NUWVBFIGh0bWw+CiA8aHRtbD4KIDxoZWFkPgorPHRp
dGxlPlRlc3RzIGlmIHNtYWxsIGNsaWNrYWJsZSB0YXJnZXRzIGFkamFjZW50IHRvIGxhcmdlciBj
bGlja2FibGUgY29udHJvbHMgYXJlIHByb3Blcmx5IHRhcmdldHRlZCB3aXRoIHRvdWNoIGFkanVz
dG1lbnQuPC90aXRsZT4KKzxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3RvdWNoYWRqdXN0bWVu
dC5qcyI+PC9zY3JpcHQ+CisKIDxzdHlsZT4KICAgYm9keSB7CiAgICAgLXdlYmtpdC1tYXJnaW4t
c3RhcnQ6IDIwcHg7CiAgICAgbWFyZ2luLXRvcDogMjBweDsKICAgfQotCiAgIC5jb250cm9sLXBh
aXIgewogICAgIG1hcmdpbi1ib3R0b206IDMwcHg7CiAgIH0KQEAgLTQ1LDM2ICs0OSwzOCBAQAog
ICB9CiAKICAgI2Ryb3AtZG93bi1zZWxlY3RvciB7Ci0gICAgLXdlYmtpdC1ib3gtc2l6aW5nOyBj
b250ZW50LWJveDsKKyAgICAtd2Via2l0LWJveC1zaXppbmc6IGNvbnRlbnQtYm94OwogICAgIHdp
ZHRoOiAwOwogICAgIGhlaWdodDogMDsKICAgICBib3JkZXItbGVmdDogNXB4IHNvbGlkIHRyYW5z
cGFyZW50OwogICAgIGJvcmRlci1yaWdodDogNXB4IHNvbGlkIHRyYW5zcGFyZW50OwogICAgIGJv
cmRlci10b3A6IDEwcHggc29saWQgIzc3NzsKICAgfQorICAKIDwvc3R5bGU+CiAKLTxzY3JpcHQg
c3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8L2hl
YWQ+CiAKLTxib2R5IGlkPSJteWJvZHkiIG9ubG9hZD0icnVuVGVzdHMoKSI+Ci0KLTxkaXYgY2xh
c3M9ImNvbnRyb2wtcGFpciI+Ci0gIDwhLS0gU21hbGwgY2hlY2tib3ggdG8gdGhlIGxlZnQgb2Yg
YW5vdGhlciBjb250cm9sIC0tPgotICA8ZGl2IGlkPSJjaGVjayIgb25jbGljaz0ib25DbGljaygp
OyI+PC9kaXY+Ci0gIDxpbnB1dCBpZD0idGFzayIgdHlwZT0idGV4dCIgdmFsdWU9IlRhc2sgMSIv
PgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJjb250cm9sLXBhaXIiPgotICA8IS0tIFNtYWxsIHJlbW92
ZSBidXR0b24gdG8gdGhlIHJpZ2h0IG9mIGFub3RoZXIgY29udHJvbCAtLT4KLSAgPGlucHV0IGlk
ID0gIml0ZW0tbGFiZWwiIHR5cGU9InRleHQiIHZhbHVlID0gIk9wdGlvbiAxIi8+Ci0gIDxkaXYg
aWQgPSAicmVtb3ZlLWJ1dHRvbiIgb25jbGljaz0ib25DbGljaygpOyIvPgotPC9kaXY+Ci08ZGl2
PgotICA8ZGl2IGlkPSJjb21iby1idXR0b24iPgotICAgIDwhLS0gQ29tYm8tYnV0dG9uIGNvbnRy
b2xzIC0tPgotICAgIDxkaXYgaWQgPSAiY29tYm8tbGFiZWwiIG9uY2xpY2s9ImZ1bmN0aW9uKCkg
e307Ij48L2Rpdj4KLSAgICA8ZGl2IGlkID0gImRyb3AtZG93bi1zZWxlY3RvciIgb25jbGljaz0i
b25DbGljaygpOyIvPgotICA8L2Rpdj4KKzxib2R5IGlkPSJteWJvZHkiPgorCis8ZGl2IGlkPXNh
bmRib3g+CisgICAgPGRpdiBjbGFzcz0iY29udHJvbC1wYWlyIj4KKyAgICAgICAgPCEtLSBTbWFs
bCBjaGVja2JveCB0byB0aGUgbGVmdCBvZiBhbm90aGVyIGNvbnRyb2wgLS0+CisgICAgICAgIDxk
aXYgaWQ9ImNoZWNrIiBvbmNsaWNrPSJvbkNsaWNrKCk7Ij48L2Rpdj4KKyAgICAgICAgPGlucHV0
IGlkPSJ0YXNrIiB0eXBlPSJ0ZXh0IiB2YWx1ZT0iVGFzayAxIj4KKyAgICA8L2Rpdj4KKyAgICA8
ZGl2IGNsYXNzPSJjb250cm9sLXBhaXIiPgorICAgICAgICA8IS0tIFNtYWxsIHJlbW92ZSBidXR0
b24gdG8gdGhlIHJpZ2h0IG9mIGFub3RoZXIgY29udHJvbCAtLT4KKyAgICAgICAgPGlucHV0IGlk
ID0gIml0ZW0tbGFiZWwiIHR5cGU9InRleHQiIHZhbHVlID0gIk9wdGlvbiAxIj4KKyAgICAgICAg
PGRpdiBpZCA9ICJyZW1vdmUtYnV0dG9uIiBvbmNsaWNrPSJvbkNsaWNrKCk7Ij48L2Rpdj4KKyAg
ICA8L2Rpdj4KKyAgICA8ZGl2PgorICAgICAgICA8ZGl2IGlkPSJjb21iby1idXR0b24iPgorICAg
ICAgICAgICAgPCEtLSBDb21iby1idXR0b24gY29udHJvbHMgLS0+CisgICAgICAgICAgICA8ZGl2
IGlkID0gImNvbWJvLWxhYmVsIiBvbmNsaWNrPSJmdW5jdGlvbigpIHt9OyI+PC9kaXY+CisgICAg
ICAgICAgICA8ZGl2IGlkID0gImRyb3AtZG93bi1zZWxlY3RvciIgb25jbGljaz0ib25DbGljaygp
OyI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvZGl2PgogPC9kaXY+CiAKIDxwIGlkPSdk
ZXNjcmlwdGlvbic+PC9wPgpAQCAtOTEsMTcgKzk3LDYgQEAKICAgICB7CiAgICAgfQogCi0gICAg
ZnVuY3Rpb24gZmluZEFic29sdXRlUG9zaXRpb24obm9kZSkKLSAgICB7Ci0gICAgICAgIHZhciBw
b3MgPSBuZXcgT2JqZWN0KCk7Ci0gICAgICAgIHBvcy5sZWZ0ID0gMDsgcG9zLnRvcCA9IDA7Ci0g
ICAgICAgIGRvIHsKLSAgICAgICAgICAgIHBvcy5sZWZ0ICs9IG5vZGUub2Zmc2V0TGVmdDsKLSAg
ICAgICAgICAgIHBvcy50b3AgKz0gbm9kZS5vZmZzZXRUb3A7Ci0gICAgICAgIH0gd2hpbGUgKG5v
ZGUgPSBub2RlLm9mZnNldFBhcmVudCk7Ci0gICAgICAgIHJldHVybiBwb3M7Ci0gICAgfQotCiAg
ICAgZnVuY3Rpb24gdGVzdERpcmVjdFRvdWNoKGlkKQogICAgIHsKICAgICAgICAgdGVzdFRvdWNo
KGlkLCAnY2VudGVyJyk7CkBAIC0xMjEsNTkgKzExNiw4IEBACiAKICAgICBmdW5jdGlvbiB0ZXN0
VG91Y2goaWQsIHJlbGF0aXZlUG9zaXRpb24pCiAgICAgewotICAgICAgICBlbGVtZW50ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpOwotICAgICAgICB2YXIgcG9zID0gZmluZEFic29sdXRl
UG9zaXRpb24oZWxlbWVudCk7Ci0gICAgICAgIHZhciB4ID0gcG9zLmxlZnQ7IAotICAgICAgICB2
YXIgeSA9IHBvcy50b3A7Ci0gICAgICAgIC8vIFNldCBjZW50ZXIgcG9pbnQgZm9yIHRvdWNoLgot
ICAgICAgICBzd2l0Y2ggKHJlbGF0aXZlUG9zaXRpb24pIHsKLSAgICAgICAgY2FzZSAnY2VudGVy
JzoKLSAgICAgICAgICB4ICs9IGVsZW1lbnQuY2xpZW50V2lkdGggLyAyOwotICAgICAgICAgIHkg
Kz0gZWxlbWVudC5jbGllbnRIZWlnaHQgLyAyOwotICAgICAgICAgIGJyZWFrOwotICAgICAgICBj
YXNlICdsZWZ0JzoKLSAgICAgICAgICB4IC09IHRvdWNoT2Zmc2V0OwotICAgICAgICAgIHkgKz0g
ZWxlbWVudC5jbGllbnRIZWlnaHQgLyAyOwotICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNl
ICdyaWdodCc6Ci0gICAgICAgICAgIHggKz0gZWxlbWVudC5jbGllbnRXaWR0aCArIHRvdWNoT2Zm
c2V0OwotICAgICAgICAgICB5ICs9ICBlbGVtZW50LmNsaWVudEhlaWdodCAvIDI7Ci0gICAgICAg
ICAgIGJyZWFrOwotICAgICAgICBjYXNlICd0b3AtbGVmdCc6Ci0gICAgICAgICAgeCAtPSB0b3Vj
aE9mZnNldDsKLSAgICAgICAgICB5IC09IHRvdWNoT2Zmc2V0OwotICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjYXNlICd0b3AtcmlnaHQnOgotICAgICAgICAgICB4ICs9IGVsZW1lbnQuY2xpZW50
V2lkdGggKyB0b3VjaE9mZnNldDsKLSAgICAgICAgICAgeSAtPSB0b3VjaE9mZnNldDsKLSAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgJ2JvdHRvbS1sZWZ0JzoKLSAgICAgICAgICB4IC09
IHRvdWNoT2Zmc2V0OwotICAgICAgICAgIHkgKz0gZWxlbWVudC5jbGllbnRIZWlnaHQgKyB0b3Vj
aE9mZnNldDsKLSAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSAnYm90dG9tLXJpZ2h0JzoK
LSAgICAgICAgICAgeCArPSBlbGVtZW50LmNsaWVudFdpZHRoICsgdG91Y2hPZmZzZXQ7Ci0gICAg
ICAgICAgIHkgKz0gZWxlbWVudC5jbGllbnRIZWlnaHQgKyB0b3VjaE9mZnNldDsKLSAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgJ3RvcCc6Ci0gICAgICAgICAgIHggKz0gZWxlbWVudC5j
bGllbnRXaWR0aCAvIDI7Ci0gICAgICAgICAgIHkgLT0gdG91Y2hPZmZzZXQ7Ci0gICAgICAgICAg
IGJyZWFrOwotICAgICAgICBjYXNlICdib3R0b20nOgotICAgICAgICAgICB4ICs9IGVsZW1lbnQu
Y2xpZW50V2lkdGggLyAyOwotICAgICAgICAgICB5ICs9IGVsZW1lbnQuY2xpZW50SGVpZ2h0ICsg
dG91Y2hPZmZzZXQ7Ci0gICAgICAgIH0KLSAgICAgICAgLy8gQWRqdXN0IGZyb20gdG91Y2ggY2Vu
dGVyIHRvIHRvcC1sZWZ0IGNvcm5lci4KLSAgICAgICAgeCAtPSB0b3VjaFJhZGl1czsKLSAgICAg
ICAgeSAtPSB0b3VjaFJhZGl1czsKLQotICAgICAgICB2YXIgd2lkdGggPSAyICogdG91Y2hSYWRp
dXM7Ci0gICAgICAgIHZhciBoZWlnaHQgPSAyICogdG91Y2hSYWRpdXM7Ci0KLSAgICAgICAgYWRq
dXN0ZWROb2RlID0gaW50ZXJuYWxzLnRvdWNoTm9kZUFkanVzdGVkVG9CZXN0Q2xpY2thYmxlTm9k
ZSh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBkb2N1bWVudCk7Ci0gICAgICAgIHdoaWxlIChhZGp1c3Rl
ZE5vZGUubm9kZVR5cGUgIT0gMSApIC8vIE5vdCBhbiBlbGVtZW50LgotICAgICAgICAgICAgYWRq
dXN0ZWROb2RlID0gYWRqdXN0ZWROb2RlLnBhcmVudE5vZGU7Ci0gICAgICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygnYWRqdXN0ZWROb2RlLmlkJywgaWQpOworICAgICAgICB2YXIgZWxlbWVudCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTsKKyAgICAgICAgdGVzdFRvdWNoUG9pbnQob2Zm
c2V0VG91Y2hQb2ludChmaW5kQWJzb2x1dGVCb3VuZHMoZWxlbWVudCksIHJlbGF0aXZlUG9zaXRp
b24sIHRvdWNoT2Zmc2V0LCB0b3VjaFJhZGl1cyksIGVsZW1lbnQpOwogICAgIH0KIAogICAgIGZ1
bmN0aW9uIHRlc3REaXJlY3RUb3VjaGVzKCkKQEAgLTIwMCwxNSArMTQ0LDE0IEBACiAgICAgZnVu
Y3Rpb24gcnVuVGVzdHMoKQogICAgIHsKICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyICYm
IHdpbmRvdy5pbnRlcm5hbHMgJiYgaW50ZXJuYWxzLnRvdWNoTm9kZUFkanVzdGVkVG9CZXN0Q2xp
Y2thYmxlTm9kZSkgewotICAgICAgICAgICAgZGVzY3JpcHRpb24oJ1Rlc3RzIGlmIHNtYWxsIGNs
aWNrYWJsZSB0YXJnZXRzIGFkamFjZW50IHRvIGxhcmdlciBjbGlja2FibGUgY29udHJvbHMgYXJl
IHByb3Blcmx5IHRhcmdldHRlZCB3aXRoIHRvdWNoIGFkanVzdG1lbnQuJyk7Ci0gICAgICAgICAg
ICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKLSAgICAgICAgICAgIHRlc3RSdW5uZXIud2FpdFVu
dGlsRG9uZSgpOworICAgICAgICAgICAgZGVzY3JpcHRpb24oZG9jdW1lbnQudGl0bGUpOwogICAg
ICAgICAgICAgdGVzdERpcmVjdFRvdWNoZXMoKTsKICAgICAgICAgICAgIHRlc3RJbmRpcmVjdFRv
dWNoZXMoKTsKLSAgICAgICAgICAgIGlzU3VjY2Vzc2Z1bGx5UGFyc2VkKCk7Ci0gICAgICAgICAg
ICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdzYW5kYm94Jykuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKICAgICAgICAgfQogICAg
IH0KKyAgICBydW5UZXN0cygpOwogPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3RvdWNoYWRqdXN0bWVudC90b3VjaC1pbmxpbmVzLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL3RvdWNoYWRqdXN0bWVudC90b3VjaC1pbmxpbmVzLWV4cGVj
dGVkLnR4dAppbmRleCA2M2ZkNGYwMDYzZDBjODgzOWE2M2ZhMTRmZGU2MTMyYzJlMDlhYmY5Li45
NTgxYjhjNzI3OWVmMGMzMWU3MGQwNjVjNTVjMTQyOTIzMDRhZWI1IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy90b3VjaGFkanVzdG1lbnQvdG91Y2gtaW5saW5lcy1leHBlY3RlZC50eHQKKysrIGIv
TGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50L3RvdWNoLWlubGluZXMtZXhwZWN0ZWQudHh0CkBA
IC0xLDI4ICsxLDIyIEBACi1zb21lIGxpbmsKLXNvbWUgbGluayBicmVha2luZyBsaW5lcyBhbmQg
bGluawotaG9sYSBtdW5kbyEgYSBzcGxpdCB1cCBsaW5rCi1oZWxsbyB3b3JsZCBzb21lIGxpbmsg
YWxzbyBicmVha2luZwotaGkgdGhlcmUgc29tZSBsaW5rIHRoYXQgaXMgYnJlYWtpbmcgbXVsdGlw
bGUgbGluZXMganVzdCBmb3IgdGhlIHZlcnkgZnVuIG9mIGl0Ci0KIFRlc3QgdG91Y2gtYWRqdXN0
bWVudCBvbiBpbmxpbmUgbGlua3MuIE1ha2luZyBzdXJlIHdlIGNhbiBoaXQgb3ZlciBsaW5lLWJy
ZWFrcywgYW5kIGNhbiBtaXNzIHdoZW4gdGFwcGluZyBiZXR3ZWVuIHBhcnRzIG9mIGEgbGluZS1i
cm9rZW4gbGluay4KIAogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCiAKIFRlc3Qgc29tZSBk
aXJlY3QgaGl0cy4KLVBBU1MgYWRqdXN0ZWROb2RlLmlkIGlzICIxIgotUEFTUyBhZGp1c3RlZE5v
ZGUuaWQgaXMgIjIiCi1QQVNTIGFkanVzdGVkTm9kZS5pZCBpcyAiNCIKLVBBU1MgYWRqdXN0ZWRO
b2RlLmlkIGlzICI2IgorUEFTUyBhZGp1c3RlZCBub2RlIHdhcyBBIzEuCitQQVNTIGFkanVzdGVk
IG5vZGUgd2FzIEEjMi4KK1BBU1MgYWRqdXN0ZWQgbm9kZSB3YXMgQSM0LgorUEFTUyBhZGp1c3Rl
ZCBub2RlIHdhcyBBIzYuCiBUZXN0IGEgZmV3IGRpcmVjdCBtaXNzZXMuCi1QQVNTIGFkanVzdGVk
Tm9kZSBpcyBudWxsCi1QQVNTIGFkanVzdGVkTm9kZSBpcyBudWxsCi1UZXN0IHNvbWUgaW4tZGly
ZWN0IGhpdHMuCi1QQVNTIGFkanVzdGVkTm9kZS5pZCBpcyAiMiIKLVBBU1MgYWRqdXN0ZWROb2Rl
LmlkIGlzICIzIgotUEFTUyBhZGp1c3RlZE5vZGUuaWQgaXMgIjQiCi1QQVNTIGFkanVzdGVkTm9k
ZS5pZCBpcyAiNCIKLVBBU1MgYWRqdXN0ZWROb2RlLmlkIGlzICI2IgorUEFTUyBhZGp1c3RlZCBu
b2RlIHdhcyBudWxsLgorUEFTUyBhZGp1c3RlZCBub2RlIHdhcyBudWxsLgorVGVzdCBzb21lIGlu
ZGlyZWN0IGhpdHMuCitQQVNTIGFkanVzdGVkIG5vZGUgd2FzIEEjMi4KK1BBU1MgYWRqdXN0ZWQg
bm9kZSB3YXMgQSMzLgorUEFTUyBhZGp1c3RlZCBub2RlIHdhcyBBIzQuCitQQVNTIGFkanVzdGVk
IG5vZGUgd2FzIEEjNC4KK1BBU1MgYWRqdXN0ZWQgbm9kZSB3YXMgQSM2LgogUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy90b3VjaGFkanVzdG1lbnQvdG91Y2gtaW5saW5lcy5odG1sIGIvTGF5b3V0VGVzdHMvdG91
Y2hhZGp1c3RtZW50L3RvdWNoLWlubGluZXMuaHRtbAppbmRleCA0OTRlMTZjZjhiMmYyMGRlN2Ux
N2E0MTE0MDM1YzE1OGYzYzk5MDcxLi43OTk1MzRjNjQyOTY5NTg4NmRmYzM5M2NiYjU1OGU1OTBj
YzAwZjYzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy90b3VjaGFkanVzdG1lbnQvdG91Y2gtaW5s
aW5lcy5odG1sCisrKyBiL0xheW91dFRlc3RzL3RvdWNoYWRqdXN0bWVudC90b3VjaC1pbmxpbmVz
Lmh0bWwKQEAgLTEsMTA2ICsxLDc3IEBACis8IURPQ1RZUEUgaHRtbD4KIDxodG1sPgogPGhlYWQ+
CisgICAgPHRpdGxlPlRlc3QgdG91Y2gtYWRqdXN0bWVudCBvbiBpbmxpbmUgbGlua3MuIE1ha2lu
ZyBzdXJlIHdlIGNhbiBoaXQgb3ZlciBsaW5lLWJyZWFrcywgYW5kIGNhbiBtaXNzIHdoZW4gdGFw
cGluZyBiZXR3ZWVuIHBhcnRzIG9mIGEgbGluZS1icm9rZW4gbGluay48L3RpdGxlPgogICAgIDxz
Y3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
CisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy90b3VjaGFkanVzdG1lbnQuanMiPjwvc2NyaXB0
PgogICAgIDxzdHlsZT4KLSAgICAgICAgLnRlc3Rjb250YWluZXIgeyBwb3NpdGlvbjogYWJzb2x1
dGU7IHRvcDogMHB4OyBsZWZ0OiAwcHg7IGZvbnQ6IDE2cHggQWhlbTsgbGluZS1oZWlnaHQ6IDIw
cHggfQorICAgICAgICAjc2FuZGJveCB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAwcHg7IGxl
ZnQ6IDBweDsgZm9udDogMTZweCBBaGVtOyBsaW5lLWhlaWdodDogMjBweCB9CiAgICAgPC9zdHls
ZT4KIDwvaGVhZD4KLTxib2R5IG9ubG9hZD0icnVuVGVzdHMoKSI+Ci0KLTxkaXYgY2xhc3M9dGVz
dGNvbnRhaW5lcj4KLTxwIHN0eWxlPSJ3aWR0aDogMjJlbTsiPgotPGEgaWQ9IjEiIGhyZWY9IiMx
Ij5zb21lIGxpbms8L2E+PGJyPgotPGEgaWQ9IjIiIGhyZWY9IiMyIj5zb21lIGxpbmsgYnJlYWtp
bmcgbGluZXM8L2E+IGFuZCA8YSBpZD0iMyIgaHJlZj0iIzMiPmxpbms8L2E+PGJyPgotaG9sYSBt
dW5kbyEgPGEgaWQ9IjQiIGhyZWY9IiM0Ij5hIHNwbGl0IHVwIGxpbms8L2E+PGJyPgotaGVsbG8g
d29ybGQgPGEgaWQ9IjUiIGhyZWY9IiM1Ij5zb21lIGxpbmsgYWxzbyBicmVha2luZzwvYT48YnI+
Ci1oaSB0aGVyZSA8YSBpZD0iNiIgaHJlZj0iIzYiPnNvbWUgbGluayB0aGF0IGlzIGJyZWFraW5n
IG11bHRpcGxlIGxpbmVzIGp1c3QgZm9yIHRoZSB2ZXJ5IGZ1biBvZiBpdDwvYT48YnI+PGJyPgot
PC9wPgorPGJvZHk+CisKKzxkaXYgaWQ9c2FuZGJveD4KKyAgICA8cCBzdHlsZT0id2lkdGg6IDIy
ZW07Ij4KKyAgICA8YSBpZD0iMSIgaHJlZj0iIzEiPnNvbWUgbGluazwvYT48YnI+CisgICAgPGEg
aWQ9IjIiIGhyZWY9IiMyIj5zb21lIGxpbmsgYnJlYWtpbmcgbGluZXM8L2E+IGFuZCA8YSBpZD0i
MyIgaHJlZj0iIzMiPmxpbms8L2E+PGJyPgorICAgIGhvbGEgbXVuZG8hIDxhIGlkPSI0IiBocmVm
PSIjNCI+YSBzcGxpdCB1cCBsaW5rPC9hPjxicj4KKyAgICBoZWxsbyB3b3JsZCA8YSBpZD0iNSIg
aHJlZj0iIzUiPnNvbWUgbGluayBhbHNvIGJyZWFraW5nPC9hPjxicj4KKyAgICBoaSB0aGVyZSA8
YSBpZD0iNiIgaHJlZj0iIzYiPnNvbWUgbGluayB0aGF0IGlzIGJyZWFraW5nIG11bHRpcGxlIGxp
bmVzIGp1c3QgZm9yIHRoZSB2ZXJ5IGZ1biBvZiBpdDwvYT48YnI+PGJyPgorICAgIDwvcD4KIDwv
ZGl2PgogCi0KIDxwIGlkPSdkZXNjcmlwdGlvbic+PC9wPgogPGRpdiBpZD0nY29uc29sZSc+PC9k
aXY+CiAKIDxzY3JpcHQ+Ci0gICAgdmFyIGVsZW1lbnQ7Ci0gICAgdmFyIGFkanVzdGVkTm9kZTsK
LSAgICBmdW5jdGlvbiB0ZXN0Um91bmRUb3VjaCh4LCB5LCByYWRpdXMpCi0gICAgewotICAgICAg
ICB2YXIgeCA9IHggLSByYWRpdXM7Ci0gICAgICAgIHZhciB5ID0geSAtIHJhZGl1czsKLSAgICAg
ICAgdmFyIHdpZHRoID0gcmFkaXVzICogMjsKLSAgICAgICAgdmFyIGhlaWdodCA9IHJhZGl1cyAq
IDI7Ci0gICAgICAgIHZhciBhZGp1c3RlZE5vZGUgPSBpbnRlcm5hbHMudG91Y2hOb2RlQWRqdXN0
ZWRUb0Jlc3RDbGlja2FibGVOb2RlKHgsIHksIHdpZHRoLCBoZWlnaHQsIGRvY3VtZW50KTsKLSAg
ICAgICAgaWYgKGFkanVzdGVkTm9kZSAmJiBhZGp1c3RlZE5vZGUubm9kZVR5cGUgPT0gMykgLy8g
VEVYVCBub2RlCi0gICAgICAgICAgICBhZGp1c3RlZE5vZGUgPSBhZGp1c3RlZE5vZGUucGFyZW50
Tm9kZTsKLSAgICAgICAgcmV0dXJuIGFkanVzdGVkTm9kZTsKLSAgICB9CisgICAgLy8gU2V0IHVw
IHNob3J0Y3V0IGFjY2VzcyB0byBlbGVtZW50cworICAgIHZhciBlID0ge307CisgICAgWydzYW5k
Ym94JywgJzEnLCAnMicsICczJywgJzQnLCAnNScsICc2J10uZm9yRWFjaChmdW5jdGlvbihhKSB7
CisgICAgICAgIGVbYV0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChhKTsKKyAgICB9KTsKIAog
ICAgIGZ1bmN0aW9uIHRlc3REaXJlY3RUb3VjaGVzKCkKICAgICB7CiAgICAgICAgIGRlYnVnKCdU
ZXN0IHNvbWUgZGlyZWN0IGhpdHMuJyk7Ci0KLSAgICAgICAgYWRqdXN0ZWROb2RlID0gdGVzdFJv
dW5kVG91Y2goMzAsIDI1LCAxMCkKLSAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdhZGp1
c3RlZE5vZGUuaWQnLCAnMScpOwotCi0gICAgICAgIGFkanVzdGVkTm9kZSA9IHRlc3RSb3VuZFRv
dWNoKDIwLCA2NSwgMTApCi0gICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnYWRqdXN0ZWRO
b2RlLmlkJywgJzInKTsKLQotICAgICAgICBhZGp1c3RlZE5vZGUgPSB0ZXN0Um91bmRUb3VjaCgy
MjAsIDg1LCAxMCkKLSAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdhZGp1c3RlZE5vZGUu
aWQnLCAnNCcpOwotCi0gICAgICAgIGFkanVzdGVkTm9kZSA9IHRlc3RSb3VuZFRvdWNoKDgwLCAx
OTUsIDEwKQotICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2FkanVzdGVkTm9kZS5pZCcs
ICc2Jyk7CisgICAgICAgIHRlc3RUb3VjaFBvaW50KHRvdWNoUG9pbnQoMzAsIDI1LCAxMCksIGVb
JzEnXSk7CisgICAgICAgIHRlc3RUb3VjaFBvaW50KHRvdWNoUG9pbnQoMjAsIDY1LCAxMCksIGVb
JzInXSk7CisgICAgICAgIHRlc3RUb3VjaFBvaW50KHRvdWNoUG9pbnQoMjIwLCA4NSwgMTApLCBl
Wyc0J10pOworICAgICAgICB0ZXN0VG91Y2hQb2ludCh0b3VjaFBvaW50KDgwLCAxOTUsIDEwKSwg
ZVsnNiddKTsKICAgICB9CiAKICAgICBmdW5jdGlvbiB0ZXN0RGlyZWN0TWlzc2VzKCkKICAgICB7
CiAgICAgICAgIGRlYnVnKCdUZXN0IGEgZmV3IGRpcmVjdCBtaXNzZXMuJyk7Ci0KICAgICAgICAg
Ly8gSGl0ICdhbmQnIGJldHdlbiBsaW5rIDIgYW5kIDMKLSAgICAgICAgYWRqdXN0ZWROb2RlID0g
dGVzdFJvdW5kVG91Y2goMTIwLCA3NSwgNikKLSAgICAgICAgc2hvdWxkQmVOdWxsKCdhZGp1c3Rl
ZE5vZGUnKTsKLQorICAgICAgICB0ZXN0VG91Y2hQb2ludCh0b3VjaFBvaW50KDEyMCwgNzUsIDYp
LCBudWxsKTsKICAgICAgICAgLy8gSGl0ICdoaSB0aGVyZScgYWJvdmUgYW5kIHRvIHRoZSBsZWZ0
IG9mIGxpbmsgNi4KLSAgICAgICAgYWRqdXN0ZWROb2RlID0gdGVzdFJvdW5kVG91Y2goNzIsIDE2
NiwgNikKLSAgICAgICAgc2hvdWxkQmVOdWxsKCdhZGp1c3RlZE5vZGUnKTsKLQorICAgICAgICB0
ZXN0VG91Y2hQb2ludCh0b3VjaFBvaW50KDcyLCAxNjYsIDYpLCBudWxsKTsKICAgICB9CiAKICAg
ICBmdW5jdGlvbiB0ZXN0SW5kaXJlY3RUb3VjaGVzKCkKICAgICB7Ci0gICAgICAgIGRlYnVnKCdU
ZXN0IHNvbWUgaW4tZGlyZWN0IGhpdHMuJyk7Ci0KLSAgICAgICAgYWRqdXN0ZWROb2RlID0gdGVz
dFJvdW5kVG91Y2goNTAsIDYwLCAyMCkKLSAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdh
ZGp1c3RlZE5vZGUuaWQnLCAnMicpOwotCi0gICAgICAgIGFkanVzdGVkTm9kZSA9IHRlc3RSb3Vu
ZFRvdWNoKDE3MiwgODIsIDIwKQotICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2FkanVz
dGVkTm9kZS5pZCcsICczJyk7Ci0KLSAgICAgICAgYWRqdXN0ZWROb2RlID0gdGVzdFJvdW5kVG91
Y2goMjMwLCA3NCwgMjApCi0gICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnYWRqdXN0ZWRO
b2RlLmlkJywgJzQnKTsKLQotICAgICAgICBhZGp1c3RlZE5vZGUgPSB0ZXN0Um91bmRUb3VjaCgz
MCwgMTAwLCAyMCkKLSAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdhZGp1c3RlZE5vZGUu
aWQnLCAnNCcpOworICAgICAgICBkZWJ1ZygnVGVzdCBzb21lIGluZGlyZWN0IGhpdHMuJyk7CiAK
LSAgICAgICAgYWRqdXN0ZWROb2RlID0gdGVzdFJvdW5kVG91Y2goMjQsIDE3MCwgMjApCi0gICAg
ICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnYWRqdXN0ZWROb2RlLmlkJywgJzYnKTsKKyAgICAg
ICAgdGVzdFRvdWNoUG9pbnQodG91Y2hQb2ludCg1MCwgNjAsIDIwKSwgZVsnMiddKTsKKyAgICAg
ICAgdGVzdFRvdWNoUG9pbnQodG91Y2hQb2ludCgxNzIsIDgzLCAyMCksIGVbJzMnXSk7CisgICAg
ICAgIHRlc3RUb3VjaFBvaW50KHRvdWNoUG9pbnQoMjMwLCA3NCwgMjApLCBlWyc0J10pOworICAg
ICAgICB0ZXN0VG91Y2hQb2ludCh0b3VjaFBvaW50KDMwLCAxMDAsIDIwKSwgZVsnNCddKTsKKyAg
ICAgICAgdGVzdFRvdWNoUG9pbnQodG91Y2hQb2ludCgyNCwgMTcwLCAyMCksIGVbJzYnXSk7CiAK
ICAgICB9CiAKICAgICBmdW5jdGlvbiBydW5UZXN0cygpCiAgICAgewogICAgICAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIgJiYgd2luZG93LmludGVybmFscyAmJiBpbnRlcm5hbHMudG91Y2hOb2Rl
QWRqdXN0ZWRUb0Jlc3RDbGlja2FibGVOb2RlKSB7Ci0gICAgICAgICAgICBkZXNjcmlwdGlvbign
VGVzdCB0b3VjaC1hZGp1c3RtZW50IG9uIGlubGluZSBsaW5rcy4gTWFraW5nIHN1cmUgd2UgY2Fu
IGhpdCBvdmVyIGxpbmUtYnJlYWtzLCBhbmQgY2FuIG1pc3Mgd2hlbiB0YXBwaW5nIGJldHdlZW4g
cGFydHMgb2YgYSBsaW5lLWJyb2tlbiBsaW5rLicpOwotICAgICAgICAgICAgdGVzdFJ1bm5lci5k
dW1wQXNUZXh0KCk7Ci0gICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAg
ICAgICAgICAgIGRlc2NyaXB0aW9uKGRvY3VtZW50LnRpdGxlKTsKICAgICAgICAgICAgIHRlc3RE
aXJlY3RUb3VjaGVzKCk7CiAgICAgICAgICAgICB0ZXN0RGlyZWN0TWlzc2VzKCk7CiAgICAgICAg
ICAgICB0ZXN0SW5kaXJlY3RUb3VjaGVzKCk7Ci0gICAgICAgICAgICBpc1N1Y2Nlc3NmdWxseVBh
cnNlZCgpOwotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgICAg
ICBlWydzYW5kYm94J10uc3R5bGUuZGlzcGxheSA9ICdub25lJzsKICAgICAgICAgfQogICAgIH0K
KyAgICBydW5UZXN0cygpOwogPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>155819</attachid>
            <date>2012-08-01 09:19:55 -0700</date>
            <delta_ts>2012-08-01 11:45:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-92869-20120801181936.patch</filename>
            <type>text/plain</type>
            <size>82896</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0MzM1CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNjUzMTBmNTEzNDhlZmJiYTMwM2E3
NDg3MTc4ZTIwMjMzY2Y5NGQ3NS4uNTZjMzg3MTkzMzM1MjU2YTA2MWZjN2IwNTQ4OTM1Zjk4NjNh
ZThmNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDEyLTA4LTAxICBBbGxhbiBTYW5kZmVsZCBK
ZW5zZW4gIDxhbGxhbi5qZW5zZW5Abm9raWEuY29tPgorCisgICAgICAgIENsZWFuLXVwIHRvdWNo
YWRqdXN0bWVudCB0ZXN0cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTkyODY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgUmV2aWV3IGFuZCBjbGVhbnVwIHRoZSB0b3VjaGFkanVzdG1lbnQgdGVzdHMsIHNv
IHRoZXkgYXJlIG1vcmUgY29uc2lzdGVudCwKKyAgICAgICAgdXNlcyBiZXN0IHByYWN0aWNlcyBh
bmQgYXJlIGdvb2QgZXhhbXBsZXMgZm9yIGZ1dHVyZSB0b3VjaGFkanVzdG1lbnQgdGVzdHMuCisK
KyAgICAgICAgR2F0aGVyIGNvbW1vbmx5IHVzZWQgZnVuY3Rpb25zIGluIHRvdWNoYWRqdXN0bWVu
dC5qcy4KKyAgICAgICAgQWRkIEhUTUw1IGRvY3R5cGUgdG8gZW5zdXJlIHN0cmljdCBwYXJzaW5n
IHJ1bGVzLgorICAgICAgICBSZW1vdmUgcmVkdW5kYW50IHRlc3RSdW5uZXIgY2FsbHMsIGFuZCB1
c2UganMtdGVzdC1wb3N0LmpzIGluc3RlYWQuCisgICAgICAgIEZpeCBYSFRNTGlzbXMgaW4gc21h
bGwtdGFyZ2V0LXRlc3QuaHRtbAorICAgICAgICBGaXggaWdub3JlZCBvZmZzZXQgbWlzdGFrZSBp
biBuZXN0ZWQtdG91Y2guaHRtbCB0aGF0IHJlc3VsdGVkIGluIHRocmVlIGlkZW50aWNhbCB0ZXN0
cy4KKworICAgICAgICAqIHRvdWNoYWRqdXN0bWVudC9iaWctZGl2LWV4cGVjdGVkLnR4dDoKKyAg
ICAgICAgKiB0b3VjaGFkanVzdG1lbnQvYmlnLWRpdi5odG1sOgorICAgICAgICAqIHRvdWNoYWRq
dXN0bWVudC9ibG9jay10ZXN0aW5nLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB0b3VjaGFkanVz
dG1lbnQvYmxvY2stdGVzdGluZy5odG1sOgorICAgICAgICAqIHRvdWNoYWRqdXN0bWVudC9kaXNh
YmxlZC1mb3JtZWxlbWVudHMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHRvdWNoYWRqdXN0bWVu
dC9kaXNhYmxlZC1mb3JtZWxlbWVudHMuaHRtbDoKKyAgICAgICAgKiB0b3VjaGFkanVzdG1lbnQv
ZXZlbnQtdHJpZ2dlcmVkLXdpZGdldHMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHRvdWNoYWRq
dXN0bWVudC9ldmVudC10cmlnZ2VyZWQtd2lkZ2V0cy5odG1sOgorICAgICAgICAqIHRvdWNoYWRq
dXN0bWVudC9odG1sLWxhYmVsLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB0b3VjaGFkanVzdG1l
bnQvaHRtbC1sYWJlbC5odG1sOgorICAgICAgICAqIHRvdWNoYWRqdXN0bWVudC9pZnJhbWUuaHRt
bDoKKyAgICAgICAgKiB0b3VjaGFkanVzdG1lbnQvbmVzdGVkLXNoYWRvdy1ub2RlLmh0bWw6Cisg
ICAgICAgICogdG91Y2hhZGp1c3RtZW50L25lc3RlZC10b3VjaC1leHBlY3RlZC50eHQ6CisgICAg
ICAgICogdG91Y2hhZGp1c3RtZW50L25lc3RlZC10b3VjaC5odG1sOgorICAgICAgICAqIHRvdWNo
YWRqdXN0bWVudC9yZXNvdXJjZXMvaW5uZXItZnJhbWUuaHRtbDoKKyAgICAgICAgKiB0b3VjaGFk
anVzdG1lbnQvcmVzb3VyY2VzL3RvdWNoYWRqdXN0bWVudC5qczogQWRkZWQuCisgICAgICAgIChm
aW5kQWJzb2x1dGVCb3VuZHMpOgorICAgICAgICAobm9kZVRvU3RyaW5nKToKKyAgICAgICAgKHRv
dWNoUG9pbnQpOgorICAgICAgICAob2Zmc2V0VG91Y2hQb2ludCk6CisgICAgICAgICogdG91Y2hh
ZGp1c3RtZW50L3JvdGF0ZWQtbm9kZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogdG91Y2hhZGp1
c3RtZW50L3JvdGF0ZWQtbm9kZS5odG1sOgorICAgICAgICAqIHRvdWNoYWRqdXN0bWVudC9zY3Jv
bGwtb2Zmc2V0LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB0b3VjaGFkanVzdG1lbnQvc2Nyb2xs
LW9mZnNldC5odG1sOgorICAgICAgICAqIHRvdWNoYWRqdXN0bWVudC9zZWFyY2gtY2FuY2VsLmh0
bWw6CisgICAgICAgICogdG91Y2hhZGp1c3RtZW50L3NtYWxsLXRhcmdldC10ZXN0LWV4cGVjdGVk
LnR4dDoKKyAgICAgICAgKiB0b3VjaGFkanVzdG1lbnQvc21hbGwtdGFyZ2V0LXRlc3QuaHRtbDoK
KyAgICAgICAgKiB0b3VjaGFkanVzdG1lbnQvdG91Y2gtaW5saW5lcy1leHBlY3RlZC50eHQ6Cisg
ICAgICAgICogdG91Y2hhZGp1c3RtZW50L3RvdWNoLWlubGluZXMuaHRtbDoKKwogMjAxMi0wOC0w
MSAgS2Vpc2hpIEhhdHRvcmkgIDxrZWlzaGlAd2Via2l0Lm9yZz4KIAogICAgICAgICBBdHRlbXB0
IHRvIGZpeCBmbGFraW5lc3Mgb2YgY29sb3Itc3VnZ2VzdGlvbi1waWNrZXItYXBwZWFyYW5jZS5o
dG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90b3VjaGFkanVzdG1lbnQvYmlnLWRpdi1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy90b3VjaGFkanVzdG1lbnQvYmlnLWRpdi1leHBlY3RlZC50
eHQKaW5kZXggYTNlMzFjYmY4ODkwMWI3ZDU2ZWM0Mzk3YjJiNzUyYTI3OTdkNDc3Zi4uMDFlM2I4
ZjZjOTI2ZTEyY2EwZmE0ZDVmYmViY2I4YzAzZjBkZWIwMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvdG91Y2hhZGp1c3RtZW50L2JpZy1kaXYtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L3RvdWNoYWRqdXN0bWVudC9iaWctZGl2LWV4cGVjdGVkLnR4dApAQCAtNiwxMCArNiwxMCBAQCBP
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURQogCiBPdmVybGFwcGluZyB0b3VjaCBhYm92ZSB0aGUgdGFy
Z2V0IHNob3VsZCBzbmFwIHRvIHRoZSB0b3Agb2YgdGhlIHRhcmdldCBlbGVtZW50LgogUEFTUyBh
ZGp1c3RlZE5vZGUuaWQgaXMgZWxlbWVudC5pZAotUEFTUyBhZGp1c3RlZFBvaW50LnggPj0gdGFy
Z2V0Qm91bmRzLnggaXMgdHJ1ZQotUEFTUyBhZGp1c3RlZFBvaW50LnggPD0gdGFyZ2V0Qm91bmRz
LnggKyB0YXJnZXRCb3VuZHMud2lkdGggaXMgdHJ1ZQotUEFTUyBhZGp1c3RlZFBvaW50LnkgPj0g
dGFyZ2V0Qm91bmRzLnkgaXMgdHJ1ZQotUEFTUyBhZGp1c3RlZFBvaW50LnkgPD0gdGFyZ2V0Qm91
bmRzLnkgKyB0YXJnZXRCb3VuZHMuaGVpZ2h0IGlzIHRydWUKK1BBU1MgYWRqdXN0ZWRQb2ludC54
ID49IHRhcmdldEJvdW5kcy5sZWZ0IGlzIHRydWUKK1BBU1MgYWRqdXN0ZWRQb2ludC54IDw9IHRh
cmdldEJvdW5kcy5sZWZ0ICsgdGFyZ2V0Qm91bmRzLndpZHRoIGlzIHRydWUKK1BBU1MgYWRqdXN0
ZWRQb2ludC55ID49IHRhcmdldEJvdW5kcy50b3AgaXMgdHJ1ZQorUEFTUyBhZGp1c3RlZFBvaW50
LnkgPD0gdGFyZ2V0Qm91bmRzLnRvcCArIHRhcmdldEJvdW5kcy5oZWlnaHQgaXMgdHJ1ZQogUEFT
UyBhZGp1c3RlZFBvaW50LnggPj0gdG91Y2hCb3VuZHMueCBpcyB0cnVlCiBQQVNTIGFkanVzdGVk
UG9pbnQueCA8PSB0b3VjaEJvdW5kcy54ICsgdG91Y2hCb3VuZHMud2lkdGggaXMgdHJ1ZQogUEFT
UyBhZGp1c3RlZFBvaW50LnkgPj0gdG91Y2hCb3VuZHMueSBpcyB0cnVlCkBAIC0xNywxMCArMTcs
MTAgQEAgUEFTUyBhZGp1c3RlZFBvaW50LnkgPD0gdG91Y2hCb3VuZHMueSArIHRvdWNoQm91bmRz
LmhlaWdodCBpcyB0cnVlCiAKIE92ZXJsYXBwaW5nIHRvdWNoIGJlbG93IHRoZSB0YXJnZXQgc2hv
dWxkIHNuYXAgdG8gdGhlIGJvdHRvbSBvZiB0aGUgdGFyZ2V0IGVsZW1lbnQuCiBQQVNTIGFkanVz
dGVkTm9kZS5pZCBpcyBlbGVtZW50LmlkCi1QQVNTIGFkanVzdGVkUG9pbnQueCA+PSB0YXJnZXRC
b3VuZHMueCBpcyB0cnVlCi1QQVNTIGFkanVzdGVkUG9pbnQueCA8PSB0YXJnZXRCb3VuZHMueCAr
IHRhcmdldEJvdW5kcy53aWR0aCBpcyB0cnVlCi1QQVNTIGFkanVzdGVkUG9pbnQueSA+PSB0YXJn
ZXRCb3VuZHMueSBpcyB0cnVlCi1QQVNTIGFkanVzdGVkUG9pbnQueSA8PSB0YXJnZXRCb3VuZHMu
eSArIHRhcmdldEJvdW5kcy5oZWlnaHQgaXMgdHJ1ZQorUEFTUyBhZGp1c3RlZFBvaW50LnggPj0g
dGFyZ2V0Qm91bmRzLmxlZnQgaXMgdHJ1ZQorUEFTUyBhZGp1c3RlZFBvaW50LnggPD0gdGFyZ2V0
Qm91bmRzLmxlZnQgKyB0YXJnZXRCb3VuZHMud2lkdGggaXMgdHJ1ZQorUEFTUyBhZGp1c3RlZFBv
aW50LnkgPj0gdGFyZ2V0Qm91bmRzLnRvcCBpcyB0cnVlCitQQVNTIGFkanVzdGVkUG9pbnQueSA8
PSB0YXJnZXRCb3VuZHMudG9wICsgdGFyZ2V0Qm91bmRzLmhlaWdodCBpcyB0cnVlCiBQQVNTIGFk
anVzdGVkUG9pbnQueCA+PSB0b3VjaEJvdW5kcy54IGlzIHRydWUKIFBBU1MgYWRqdXN0ZWRQb2lu
dC54IDw9IHRvdWNoQm91bmRzLnggKyB0b3VjaEJvdW5kcy53aWR0aCBpcyB0cnVlCiBQQVNTIGFk
anVzdGVkUG9pbnQueSA+PSB0b3VjaEJvdW5kcy55IGlzIHRydWUKQEAgLTI4LDEwICsyOCwxMCBA
QCBQQVNTIGFkanVzdGVkUG9pbnQueSA8PSB0b3VjaEJvdW5kcy55ICsgdG91Y2hCb3VuZHMuaGVp
Z2h0IGlzIHRydWUKIAogT3ZlcmxhcHBpbmcgdG91Y2ggbGVmdCBvZiB0aGUgdGFyZ2V0IHNob3Vs
ZCBzbmFwIHRvIHRoZSBsZWZ0IHNpZGUgb2YgdGhlIHRhcmdldCBlbGVtZW50LgogUEFTUyBhZGp1
c3RlZE5vZGUuaWQgaXMgZWxlbWVudC5pZAotUEFTUyBhZGp1c3RlZFBvaW50LnggPj0gdGFyZ2V0
Qm91bmRzLnggaXMgdHJ1ZQotUEFTUyBhZGp1c3RlZFBvaW50LnggPD0gdGFyZ2V0Qm91bmRzLngg
KyB0YXJnZXRCb3VuZHMud2lkdGggaXMgdHJ1ZQotUEFTUyBhZGp1c3RlZFBvaW50LnkgPj0gdGFy
Z2V0Qm91bmRzLnkgaXMgdHJ1ZQotUEFTUyBhZGp1c3RlZFBvaW50LnkgPD0gdGFyZ2V0Qm91bmRz
LnkgKyB0YXJnZXRCb3VuZHMuaGVpZ2h0IGlzIHRydWUKK1BBU1MgYWRqdXN0ZWRQb2ludC54ID49
IHRhcmdldEJvdW5kcy5sZWZ0IGlzIHRydWUKK1BBU1MgYWRqdXN0ZWRQb2ludC54IDw9IHRhcmdl
dEJvdW5kcy5sZWZ0ICsgdGFyZ2V0Qm91bmRzLndpZHRoIGlzIHRydWUKK1BBU1MgYWRqdXN0ZWRQ
b2ludC55ID49IHRhcmdldEJvdW5kcy50b3AgaXMgdHJ1ZQorUEFTUyBhZGp1c3RlZFBvaW50Lnkg
PD0gdGFyZ2V0Qm91bmRzLnRvcCArIHRhcmdldEJvdW5kcy5oZWlnaHQgaXMgdHJ1ZQogUEFTUyBh
ZGp1c3RlZFBvaW50LnggPj0gdG91Y2hCb3VuZHMueCBpcyB0cnVlCiBQQVNTIGFkanVzdGVkUG9p
bnQueCA8PSB0b3VjaEJvdW5kcy54ICsgdG91Y2hCb3VuZHMud2lkdGggaXMgdHJ1ZQogUEFTUyBh
ZGp1c3RlZFBvaW50LnkgPj0gdG91Y2hCb3VuZHMueSBpcyB0cnVlCkBAIC0zOSwxMCArMzksMTAg
QEAgUEFTUyBhZGp1c3RlZFBvaW50LnkgPD0gdG91Y2hCb3VuZHMueSArIHRvdWNoQm91bmRzLmhl
aWdodCBpcyB0cnVlCiAKIE92ZXJsYXBwaW5nIHRvdWNoIHJpZ2h0IG9mIHRoZSB0YXJnZXQgc2hv
dWxkIHNuYXAgdG8gdGhlIHJpZ2h0IHNpZGUgb2YgdGhlIHRhcmdldCBlbGVtZW50LgogUEFTUyBh
ZGp1c3RlZE5vZGUuaWQgaXMgZWxlbWVudC5pZAotUEFTUyBhZGp1c3RlZFBvaW50LnggPj0gdGFy
Z2V0Qm91bmRzLnggaXMgdHJ1ZQotUEFTUyBhZGp1c3RlZFBvaW50LnggPD0gdGFyZ2V0Qm91bmRz
LnggKyB0YXJnZXRCb3VuZHMud2lkdGggaXMgdHJ1ZQotUEFTUyBhZGp1c3RlZFBvaW50LnkgPj0g
dGFyZ2V0Qm91bmRzLnkgaXMgdHJ1ZQotUEFTUyBhZGp1c3RlZFBvaW50LnkgPD0gdGFyZ2V0Qm91
bmRzLnkgKyB0YXJnZXRCb3VuZHMuaGVpZ2h0IGlzIHRydWUKK1BBU1MgYWRqdXN0ZWRQb2ludC54
ID49IHRhcmdldEJvdW5kcy5sZWZ0IGlzIHRydWUKK1BBU1MgYWRqdXN0ZWRQb2ludC54IDw9IHRh
cmdldEJvdW5kcy5sZWZ0ICsgdGFyZ2V0Qm91bmRzLndpZHRoIGlzIHRydWUKK1BBU1MgYWRqdXN0
ZWRQb2ludC55ID49IHRhcmdldEJvdW5kcy50b3AgaXMgdHJ1ZQorUEFTUyBhZGp1c3RlZFBvaW50
LnkgPD0gdGFyZ2V0Qm91bmRzLnRvcCArIHRhcmdldEJvdW5kcy5oZWlnaHQgaXMgdHJ1ZQogUEFT
UyBhZGp1c3RlZFBvaW50LnggPj0gdG91Y2hCb3VuZHMueCBpcyB0cnVlCiBQQVNTIGFkanVzdGVk
UG9pbnQueCA8PSB0b3VjaEJvdW5kcy54ICsgdG91Y2hCb3VuZHMud2lkdGggaXMgdHJ1ZQogUEFT
UyBhZGp1c3RlZFBvaW50LnkgPj0gdG91Y2hCb3VuZHMueSBpcyB0cnVlCkBAIC01MCwxMCArNTAs
MTAgQEAgUEFTUyBhZGp1c3RlZFBvaW50LnkgPD0gdG91Y2hCb3VuZHMueSArIHRvdWNoQm91bmRz
LmhlaWdodCBpcyB0cnVlCiAKIFRlc3QgdG91Y2ggYXJlYSBjb250YWluZWQgd2l0aGluIHRoZSB0
YXJnZXQgZWxlbWVudC4KIFBBU1MgYWRqdXN0ZWROb2RlLmlkIGlzIGVsZW1lbnQuaWQKLVBBU1Mg
YWRqdXN0ZWRQb2ludC54ID49IHRhcmdldEJvdW5kcy54IGlzIHRydWUKLVBBU1MgYWRqdXN0ZWRQ
b2ludC54IDw9IHRhcmdldEJvdW5kcy54ICsgdGFyZ2V0Qm91bmRzLndpZHRoIGlzIHRydWUKLVBB
U1MgYWRqdXN0ZWRQb2ludC55ID49IHRhcmdldEJvdW5kcy55IGlzIHRydWUKLVBBU1MgYWRqdXN0
ZWRQb2ludC55IDw9IHRhcmdldEJvdW5kcy55ICsgdGFyZ2V0Qm91bmRzLmhlaWdodCBpcyB0cnVl
CitQQVNTIGFkanVzdGVkUG9pbnQueCA+PSB0YXJnZXRCb3VuZHMubGVmdCBpcyB0cnVlCitQQVNT
IGFkanVzdGVkUG9pbnQueCA8PSB0YXJnZXRCb3VuZHMubGVmdCArIHRhcmdldEJvdW5kcy53aWR0
aCBpcyB0cnVlCitQQVNTIGFkanVzdGVkUG9pbnQueSA+PSB0YXJnZXRCb3VuZHMudG9wIGlzIHRy
dWUKK1BBU1MgYWRqdXN0ZWRQb2ludC55IDw9IHRhcmdldEJvdW5kcy50b3AgKyB0YXJnZXRCb3Vu
ZHMuaGVpZ2h0IGlzIHRydWUKIFBBU1MgYWRqdXN0ZWRQb2ludC54ID49IHRvdWNoQm91bmRzLngg
aXMgdHJ1ZQogUEFTUyBhZGp1c3RlZFBvaW50LnggPD0gdG91Y2hCb3VuZHMueCArIHRvdWNoQm91
bmRzLndpZHRoIGlzIHRydWUKIFBBU1MgYWRqdXN0ZWRQb2ludC55ID49IHRvdWNoQm91bmRzLnkg
aXMgdHJ1ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50L2JpZy1kaXYu
aHRtbCBiL0xheW91dFRlc3RzL3RvdWNoYWRqdXN0bWVudC9iaWctZGl2Lmh0bWwKaW5kZXggZmFi
Y2M3NzY4OTlmOGRhZGUwZjQ1ZWNjMmVkMGYzMTRjODU1YTFhYy4uMTU0MWY2Mzc1OGIzOTA5YTEw
MDc3YmIzNmM1OGY4ZWRjZTc2ZTM5OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvdG91Y2hhZGp1
c3RtZW50L2JpZy1kaXYuaHRtbAorKysgYi9MYXlvdXRUZXN0cy90b3VjaGFkanVzdG1lbnQvYmln
LWRpdi5odG1sCkBAIC0xLDE3ICsxLDE5IEBACis8IURPQ1RZUEUgaHRtbD4KIDxodG1sPgogPGhl
YWQ+Ci08c3R5bGU+Ci0gICAgI3RhcmdldERpdiB7Ci0gICAgICAgIGJhY2tncm91bmQ6ICMwMGY7
Ci0gICAgICAgIGhlaWdodDogNDAwcHg7Ci0gICAgICAgIHdpZHRoOiA0MDBweDsKLSAgICB9Ci08
L3N0eWxlPgotPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KLQorICAgIDx0aXRsZT5Ub3VjaCBBZGp1c3RtZW50IDogVG9vIGFnZ3Jlc2l2
ZSBhZGp1c3RtZW50cyBmb3IgbGFyZ2UgZWxlbWVudHMgLSBidWcgOTEyNjI8L3RpdGxlPgorICAg
IDxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+CisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy90b3VjaGFkanVzdG1lbnQuanMiPjwvc2Ny
aXB0PgorICAgIDxzdHlsZT4KKyAgICAgICAgI3RhcmdldERpdiB7CisgICAgICAgICAgICBiYWNr
Z3JvdW5kOiAjMDBmOworICAgICAgICAgICAgaGVpZ2h0OiA0MDBweDsKKyAgICAgICAgICAgIHdp
ZHRoOiA0MDBweDsKKyAgICAgICAgfQorICAgIDwvc3R5bGU+CiA8L2hlYWQ+CiAKLTxib2R5IG9u
bG9hZD0icnVuVGVzdHMoKSI+Cis8Ym9keT4KIAogPGRpdiBpZD0idGFyZ2V0RGl2Ij4KIDwvZGl2
PgpAQCAtMjYsNDcgKzI4LDI2IEBACiAgICAgdmFyIHRhcmdldEJvdW5kczsKICAgICB2YXIgdG91
Y2hCb3VuZHM7CiAKLSAgICBmdW5jdGlvbiBmaW5kQWJzb2x1dGVQb3NpdGlvbihub2RlKSB7Ci0g
ICAgICAgIHZhciBwb3MgPSB7bGVmdDogMCwgdG9wOiAwfTsKLSAgICAgICAgZG8gewotICAgICAg
ICAgICAgcG9zLmxlZnQgKz0gbm9kZS5vZmZzZXRMZWZ0OwotICAgICAgICAgICAgcG9zLnRvcCAr
PSBub2RlLm9mZnNldFRvcDsKLSAgICAgICAgfSB3aGlsZSAobm9kZSA9IG5vZGUub2Zmc2V0UGFy
ZW50KTsKLSAgICAgICAgcmV0dXJuIHBvczsKLSAgICB9Ci0KICAgICBmdW5jdGlvbiBydW5Ub3Vj
aFRlc3RzKCkgewogICAgICAgICBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRh
cmdldERpdiIpOwogICAgICAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVu
Y3Rpb24oKSB7fSwgZmFsc2UpOwogICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdj
bGljaycsIGZ1bmN0aW9uKCkge30sIGZhbHNlKTsKIAotICAgICAgICB2YXIgcG9zID0gZmluZEFi
c29sdXRlUG9zaXRpb24oZWxlbWVudCk7Ci0KLSAgICAgICAgdmFyIHggPSBwb3MubGVmdDsKLSAg
ICAgICAgdmFyIHkgPSBwb3MudG9wOwotICAgICAgICB2YXIgd2lkdGggPSBlbGVtZW50LmNsaWVu
dFdpZHRoOwotICAgICAgICB2YXIgaGVpZ2h0ID0gZWxlbWVudC5jbGllbnRIZWlnaHQ7Ci0KLSAg
ICAgICAgdGFyZ2V0Qm91bmRzID0gewotICAgICAgICAgICAgeDogeCwKLSAgICAgICAgICAgIHk6
IHksCi0gICAgICAgICAgICB3aWR0aDogd2lkdGgsCi0gICAgICAgICAgICBoZWlnaHQ6IGhlaWdo
dAotICAgICAgICB9OworICAgICAgICB0YXJnZXRCb3VuZHMgPSBmaW5kQWJzb2x1dGVCb3VuZHMo
ZWxlbWVudCk7CiAKICAgICAgICAgdmFyIHRvdWNoUmFkaXVzID0gMTA7CiAgICAgICAgIHZhciBv
ZmZzZXQgPSB0b3VjaFJhZGl1cyAvIDI7Ci0gICAgICAgIHZhciBtaWRYID0geCArIHdpZHRoIC8g
MjsKLSAgICAgICAgdmFyIG1pZFkgPSB5ICsgaGVpZ2h0IC8gMjsKKyAgICAgICAgdmFyIG1pZFgg
PSB0YXJnZXRCb3VuZHMubGVmdCArIHRhcmdldEJvdW5kcy53aWR0aCAvIDI7CisgICAgICAgIHZh
ciBtaWRZID0gdGFyZ2V0Qm91bmRzLnRvcCArIHRhcmdldEJvdW5kcy5oZWlnaHQgLyAyOwogCiAg
ICAgICAgIGRlYnVnKCdcbk92ZXJsYXBwaW5nIHRvdWNoIGFib3ZlIHRoZSB0YXJnZXQgc2hvdWxk
IHNuYXAgdG8gdGhlIHRvcCBvZiB0aGUgdGFyZ2V0IGVsZW1lbnQuJyk7Ci0gICAgICAgIHRlc3RU
b3VjaChtaWRYLCB5IC0gb2Zmc2V0LCB0b3VjaFJhZGl1cywgdGFyZ2V0Qm91bmRzKTsKKyAgICAg
ICAgdGVzdFRvdWNoKG1pZFgsIHRhcmdldEJvdW5kcy50b3AgLSBvZmZzZXQsIHRvdWNoUmFkaXVz
LCB0YXJnZXRCb3VuZHMpOwogICAgICAgICBkZWJ1ZygnXG5PdmVybGFwcGluZyB0b3VjaCBiZWxv
dyB0aGUgdGFyZ2V0IHNob3VsZCBzbmFwIHRvIHRoZSBib3R0b20gb2YgdGhlIHRhcmdldCBlbGVt
ZW50LicpOwotICAgICAgICB0ZXN0VG91Y2gobWlkWCwgeSArIGhlaWdodCArIG9mZnNldCwgdG91
Y2hSYWRpdXMsIHRhcmdldEJvdW5kcyk7CisgICAgICAgIHRlc3RUb3VjaChtaWRYLCB0YXJnZXRC
b3VuZHMudG9wICsgdGFyZ2V0Qm91bmRzLmhlaWdodCArIG9mZnNldCwgdG91Y2hSYWRpdXMsIHRh
cmdldEJvdW5kcyk7CiAgICAgICAgIGRlYnVnKCdcbk92ZXJsYXBwaW5nIHRvdWNoIGxlZnQgb2Yg
dGhlIHRhcmdldCBzaG91bGQgc25hcCB0byB0aGUgbGVmdCBzaWRlIG9mIHRoZSB0YXJnZXQgZWxl
bWVudC4nKTsKLSAgICAgICAgdGVzdFRvdWNoKHggLSBvZmZzZXQsIG1pZFksIHRvdWNoUmFkaXVz
LCB0YXJnZXRCb3VuZHMpOworICAgICAgICB0ZXN0VG91Y2godGFyZ2V0Qm91bmRzLmxlZnQgLSBv
ZmZzZXQsIG1pZFksIHRvdWNoUmFkaXVzLCB0YXJnZXRCb3VuZHMpOwogICAgICAgICBkZWJ1Zygn
XG5PdmVybGFwcGluZyB0b3VjaCByaWdodCBvZiB0aGUgdGFyZ2V0IHNob3VsZCBzbmFwIHRvIHRo
ZSByaWdodCBzaWRlIG9mIHRoZSB0YXJnZXQgZWxlbWVudC4nKTsKLSAgICAgICAgdGVzdFRvdWNo
KHggKyB3aWR0aCArIG9mZnNldCwgbWlkWSwgdG91Y2hSYWRpdXMsIHRhcmdldEJvdW5kcyk7Cisg
ICAgICAgIHRlc3RUb3VjaCh0YXJnZXRCb3VuZHMubGVmdCArIHRhcmdldEJvdW5kcy53aWR0aCAr
IG9mZnNldCwgbWlkWSwgdG91Y2hSYWRpdXMsIHRhcmdldEJvdW5kcyk7CiAgICAgICAgIGRlYnVn
KCdcblRlc3QgdG91Y2ggYXJlYSBjb250YWluZWQgd2l0aGluIHRoZSB0YXJnZXQgZWxlbWVudC4n
KTsKICAgICAgICAgdGVzdFRvdWNoKG1pZFgsIG1pZFksIHRvdWNoUmFkaXVzLCB0YXJnZXRCb3Vu
ZHMpOwogICAgIH0KQEAgLTgzLDEwICs2NCwxMCBAQAogICAgICAgICBzaG91bGRCZSgnYWRqdXN0
ZWROb2RlLmlkJywgJ2VsZW1lbnQuaWQnKTsKICAgICAgICAgYWRqdXN0ZWRQb2ludCA9IGludGVy
bmFscy50b3VjaFBvc2l0aW9uQWRqdXN0ZWRUb0Jlc3RDbGlja2FibGVOb2RlKHRvdWNoQm91bmRz
LngsIHRvdWNoQm91bmRzLnksIHRvdWNoQm91bmRzLndpZHRoLCB0b3VjaEJvdW5kcy5oZWlnaHQs
IGRvY3VtZW50KTsKIAotICAgICAgICBzaG91bGRCZVRydWUoJ2FkanVzdGVkUG9pbnQueCA+PSB0
YXJnZXRCb3VuZHMueCcpOwotICAgICAgICBzaG91bGRCZVRydWUoJ2FkanVzdGVkUG9pbnQueCA8
PSB0YXJnZXRCb3VuZHMueCArIHRhcmdldEJvdW5kcy53aWR0aCcpOwotICAgICAgICBzaG91bGRC
ZVRydWUoJ2FkanVzdGVkUG9pbnQueSA+PSB0YXJnZXRCb3VuZHMueScpOwotICAgICAgICBzaG91
bGRCZVRydWUoJ2FkanVzdGVkUG9pbnQueSA8PSB0YXJnZXRCb3VuZHMueSArIHRhcmdldEJvdW5k
cy5oZWlnaHQnKTsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCdhZGp1c3RlZFBvaW50LnggPj0gdGFy
Z2V0Qm91bmRzLmxlZnQnKTsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCdhZGp1c3RlZFBvaW50Lngg
PD0gdGFyZ2V0Qm91bmRzLmxlZnQgKyB0YXJnZXRCb3VuZHMud2lkdGgnKTsKKyAgICAgICAgc2hv
dWxkQmVUcnVlKCdhZGp1c3RlZFBvaW50LnkgPj0gdGFyZ2V0Qm91bmRzLnRvcCcpOworICAgICAg
ICBzaG91bGRCZVRydWUoJ2FkanVzdGVkUG9pbnQueSA8PSB0YXJnZXRCb3VuZHMudG9wICsgdGFy
Z2V0Qm91bmRzLmhlaWdodCcpOwogICAgICAgICBzaG91bGRCZVRydWUoJ2FkanVzdGVkUG9pbnQu
eCA+PSB0b3VjaEJvdW5kcy54Jyk7CiAgICAgICAgIHNob3VsZEJlVHJ1ZSgnYWRqdXN0ZWRQb2lu
dC54IDw9IHRvdWNoQm91bmRzLnggKyB0b3VjaEJvdW5kcy53aWR0aCcpOwogICAgICAgICBzaG91
bGRCZVRydWUoJ2FkanVzdGVkUG9pbnQueSA+PSB0b3VjaEJvdW5kcy55Jyk7CkBAIC05NywxMyAr
NzgsMTEgQEAKICAgICB7CiAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lciAmJiB3aW5kb3cu
aW50ZXJuYWxzICYmIGludGVybmFscy50b3VjaE5vZGVBZGp1c3RlZFRvQmVzdENsaWNrYWJsZU5v
ZGUpIHsKICAgICAgICAgICAgIGRlc2NyaXB0aW9uKCdUZXN0IHRvdWNoIGFkanVzdG1lbnQgb24g
YSBsYXJnZSBkaXYuICBUaGUgYWRqdXN0ZWQgdG91Y2ggcG9pbnQgc2hvdWxkIGxpZSBpbnNpZGUg
dGhlIHRhcmdldCBlbGVtZW50IGFuZCB3aXRoaW4gdGhlIHRvdWNoIGFyZWEuJyk7Ci0gICAgICAg
ICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKLSAgICAgICAgICAgIHRlc3RSdW5uZXIud2Fp
dFVudGlsRG9uZSgpOwogICAgICAgICAgICAgcnVuVG91Y2hUZXN0cygpOwotICAgICAgICAgICAg
aXNTdWNjZXNzZnVsbHlQYXJzZWQoKTsKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9u
ZSgpOwogICAgICAgICB9CiAgICAgfQorICAgIHJ1blRlc3RzKCk7CiA8L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgog
PC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50
L2Jsb2NrLXRlc3RpbmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50
L2Jsb2NrLXRlc3RpbmctZXhwZWN0ZWQudHh0CmluZGV4IGY0NzA2MTEwZmQwNjllZTFlNGFmYmIx
NWJkNGFhMzA4NzcxMjI0ZDMuLjZkOWU1OGQ3N2VkYWU4ZTNhYmE1NGEzMWM4MjA0NjdlOGNlYmQ3
YTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3RvdWNoYWRqdXN0bWVudC9ibG9jay10ZXN0aW5n
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy90b3VjaGFkanVzdG1lbnQvYmxvY2stdGVz
dGluZy1leHBlY3RlZC50eHQKQEAgLTEsMTAgKzEsOSBAQAotU29tZSB0ZXh0LiBTb21lIHRleHQu
IEEgbGluawogVGVzdCB0b3VjaC1hZGp1c3RtZW50IG9uIGEgYmxvY2sgd2hlcmUgd2UgYWxzbyB0
b3VjaCB0aGUgaW5uZXIgdGV4dCBhbmQgb3V0c2lkZSBsaW5rLgogCiBPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCiAKIAotUEFTUyBhZGp1c3RlZE5vZGUuaWQgaXMgImRpdjEiCitQQVNTIGFkanVz
dGVkIG5vZGUgd2FzIERJViNkaXYxLgogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQog
CiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90b3VjaGFkanVzdG1lbnQv
YmxvY2stdGVzdGluZy5odG1sIGIvTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50L2Jsb2NrLXRl
c3RpbmcuaHRtbAppbmRleCA0ZmIxOGE1ZDI3NTJjMWQ2MTMzNjZiNjZmZTc0NjA1YTRjZTc3MGM0
Li45ZDdiNGZmODc3YWMwZmUzMWFlNDdjYzJkOWRjYTA3NjczZWJiOTRhIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy90b3VjaGFkanVzdG1lbnQvYmxvY2stdGVzdGluZy5odG1sCisrKyBiL0xheW91
dFRlc3RzL3RvdWNoYWRqdXN0bWVudC9ibG9jay10ZXN0aW5nLmh0bWwKQEAgLTEsNTcgKzEsNDgg
QEAKKzwhRE9DVFlQRSBodG1sPgogPGh0bWw+CiA8aGVhZD4KKyAgICA8dGl0bGU+VG91Y2ggQWRq
dXN0bWVudDogYnVnIDgyMDQ0PC90aXRsZT4KICAgICA8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvdG91Y2hhZGp1c3RtZW50LmpzIj48L3NjcmlwdD4KICAgICA8c3R5bGU+CisgICAgICAg
ICNzYW5kYm94IHsgcG9zaXRpb246IGFic29sdXRlOyBsZWZ0OiAwcHg7IHRvcDogMHB4OyB3aWR0
aDogNDAwcHg7IGhlaWdodDogMjAwcHg7IH0KICAgICAgICAgI2RpdjEgeyBwb3NpdGlvbjogYWJz
b2x1dGU7IGxlZnQ6IDUwcHg7IHRvcDogNTBweDsgd2lkdGg6IDIwMHB4OyBoZWlnaHQ6IDUwcHg7
fQogICAgICAgICAjZGl2MiB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgbGVmdDogNTBweDsgdG9wOiAx
MDBweDsgd2lkdGg6IDIwMHB4OyBoZWlnaHQ6IDUwcHg7fQogICAgIDwvc3R5bGU+CiA8L2hlYWQ+
Ci08Ym9keSBvbmxvYWQ9InJ1blRlc3RzKCkiPgorPGJvZHk+CisgICAgPGRpdiBpZD1zYW5kYm94
PgorICAgICAgICA8ZGl2IGlkPWRpdjEgb25jbGljaz1vbkNsaWNrPgorICAgICAgICBTb21lIHRl
eHQuCisgICAgICAgIDwvZGl2PgogCi08ZGl2IGlkPWRpdjEgb25jbGljaz1kb1NvbWV0aGluZz4K
LVNvbWUgdGV4dC4KLTwvZGl2PgorICAgICAgICA8ZGl2IGlkPWRpdjI+CisgICAgICAgIFNvbWUg
dGV4dC4gPGEgaWQ9YTEgaHJlZj0iIzEiPkEgbGluazwvYT4KKyAgICAgICAgPC9kaXY+CisgICAg
PC9kaXY+CiAKLTxkaXYgaWQ9ZGl2Mj4KLVNvbWUgdGV4dC4gPGEgaWQ9YTEgaHJlZj0iIzEiPkEg
bGluazwvYT4KLTwvZGl2PgorICAgIDxwIGlkPSdkZXNjcmlwdGlvbic+PC9wPgorICAgIDxkaXYg
aWQ9J2NvbnNvbGUnPjwvZGl2PgogCi08cCBpZD0nZGVzY3JpcHRpb24nPjwvcD4KLTxkaXYgaWQ9
J2NvbnNvbGUnPjwvZGl2PgotCi08c2NyaXB0PgotICAgIGZ1bmN0aW9uIGRvU29tZXRoaW5nKCkg
ewotICAgICAgICAvLyBEbyBzb21ldGhpbmchCi0gICAgfQorICAgIDxzY3JpcHQ+CisgICAgICAg
IGZ1bmN0aW9uIG9uQ2xpY2soKSB7CisgICAgICAgIH0KIAotICAgIGZ1bmN0aW9uIHRlc3RSb3Vu
ZFRvdWNoKHgsIHksIHJhZGl1cykKLSAgICB7Ci0gICAgICAgIHZhciB4ID0geCAtIHJhZGl1czsK
LSAgICAgICAgdmFyIHkgPSB5IC0gcmFkaXVzOwotICAgICAgICB2YXIgd2lkdGggPSByYWRpdXMg
KiAyOwotICAgICAgICB2YXIgaGVpZ2h0ID0gcmFkaXVzICogMjsKLSAgICAgICAgdmFyIGFkanVz
dGVkTm9kZSA9IGludGVybmFscy50b3VjaE5vZGVBZGp1c3RlZFRvQmVzdENsaWNrYWJsZU5vZGUo
eCwgeSwgd2lkdGgsIGhlaWdodCwgZG9jdW1lbnQpOwotICAgICAgICBpZiAoYWRqdXN0ZWROb2Rl
Lm5vZGVUeXBlID09IDMpIC8vIFRFWFQgbm9kZQotICAgICAgICAgICAgYWRqdXN0ZWROb2RlID0g
YWRqdXN0ZWROb2RlLnBhcmVudE5vZGU7Ci0gICAgICAgIHJldHVybiBhZGp1c3RlZE5vZGU7Ci0g
ICAgfQotICAgIGZ1bmN0aW9uIHRlc3REaXJlY3RUb3VjaGVzKCkKLSAgICB7Ci0gICAgICAgIGFk
anVzdGVkTm9kZSA9IHRlc3RSb3VuZFRvdWNoKDIwMCwgOTAsIDIwMCk7Ci0gICAgICAgIHNob3Vs
ZEJlRXF1YWxUb1N0cmluZygnYWRqdXN0ZWROb2RlLmlkJywgJ2RpdjEnKTsKKyAgICAgICAgZnVu
Y3Rpb24gdGVzdERpcmVjdFRvdWNoZXMoKQorICAgICAgICB7CisgICAgICAgICAgICB0ZXN0VG91
Y2hQb2ludCh0b3VjaFBvaW50KDIwMCwgOTAsIDIwMCksIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdkaXYxJykpOwogCi0gICAgfQotICAgIGZ1bmN0aW9uIHJ1blRlc3RzKCkKLSAgICB7Ci0gICAg
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lciAmJiB3aW5kb3cuaW50ZXJuYWxzICYmIGludGVybmFs
cy50b3VjaE5vZGVBZGp1c3RlZFRvQmVzdENsaWNrYWJsZU5vZGUpIHsKLSAgICAgICAgICAgIGRl
c2NyaXB0aW9uKCdUZXN0IHRvdWNoLWFkanVzdG1lbnQgb24gYSBibG9jayB3aGVyZSB3ZSBhbHNv
IHRvdWNoIHRoZSBpbm5lciB0ZXh0IGFuZCBvdXRzaWRlIGxpbmsuJyk7Ci0gICAgICAgICAgICB0
ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKLSAgICAgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGls
RG9uZSgpOwotICAgICAgICAgICAgdGVzdERpcmVjdFRvdWNoZXMoKTsKLSAgICAgICAgICAgIGlz
U3VjY2Vzc2Z1bGx5UGFyc2VkKCk7Ci0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUo
KTsKICAgICAgICAgfQotICAgIH0KLTwvc2NyaXB0PgorICAgICAgICBmdW5jdGlvbiBydW5UZXN0
cygpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lciAmJiB3aW5k
b3cuaW50ZXJuYWxzICYmIGludGVybmFscy50b3VjaE5vZGVBZGp1c3RlZFRvQmVzdENsaWNrYWJs
ZU5vZGUpIHsKKyAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbignVGVzdCB0b3VjaC1hZGp1c3Rt
ZW50IG9uIGEgYmxvY2sgd2hlcmUgd2UgYWxzbyB0b3VjaCB0aGUgaW5uZXIgdGV4dCBhbmQgb3V0
c2lkZSBsaW5rLicpOworICAgICAgICAgICAgICAgIHRlc3REaXJlY3RUb3VjaGVzKCk7CisgICAg
ICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NhbmRib3gnKS5zdHlsZS5kaXNw
bGF5ID0gJ25vbmUnOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJ1blRlc3Rz
KCk7CisgICAgPC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+ClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50
L2Rpc2FibGVkLWZvcm1lbGVtZW50cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90b3VjaGFk
anVzdG1lbnQvZGlzYWJsZWQtZm9ybWVsZW1lbnRzLWV4cGVjdGVkLnR4dAppbmRleCBmOGVjYmMx
YTcyMjIyOWVhOGVjNzBiNjAzNDk5NTU4OWE5Y2MxNmViLi42NTFhODI3NTI3NzlhMDE3NWRjMzZm
NDY3OTdkOTQ1MTg1MWM4Y2FiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy90b3VjaGFkanVzdG1l
bnQvZGlzYWJsZWQtZm9ybWVsZW1lbnRzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy90
b3VjaGFkanVzdG1lbnQvZGlzYWJsZWQtZm9ybWVsZW1lbnRzLWV4cGVjdGVkLnR4dApAQCAtMSwy
MCArMSwyMCBAQAotTGFiZWwgCi1MYWJlbCAKIFRvdWNoIEFkanVzdG1lbnQgOiBEaXNhYmxlZCBm
b3JtIGVsZW1lbnRzIC0gYnVnIDkyMDkzCiAKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAog
CiBUZXN0IHdlIGNhbiBoaXQgdGhlIGZvcm0gZWxlbWVudHMgZGlyZWN0bHkuCi1QQVNTIGFkanVz
dGVkTm9kZS5pZCBpcyAibGFiZWwyIgotUEFTUyBhZGp1c3RlZE5vZGUuaWQgaXMgImlucHV0MiIK
K1BBU1MgYWRqdXN0ZWQgbm9kZSB3YXMgbnVsbC4KK1BBU1MgYWRqdXN0ZWQgbm9kZSB3YXMgTEFC
RUwjbGFiZWwyLgorUEFTUyBhZGp1c3RlZCBub2RlIHdhcyBudWxsLgorUEFTUyBhZGp1c3RlZCBu
b2RlIHdhcyBJTlBVVCNpbnB1dDIuCiBUZXN0IGluZGlyZWN0IHRvdWNoZXMgYXJlIGFkanVzdGVk
IHRvIHRoZSBlbmFibGVkIGZvcm0gZWxlbWVudHMuCi1QQVNTIGFkanVzdGVkTm9kZS5pZCBpcyAi
bGFiZWwyIgotUEFTUyBhZGp1c3RlZE5vZGUuaWQgaXMgImxhYmVsMiIKLVBBU1MgYWRqdXN0ZWRO
b2RlLmlkIGlzICJsYWJlbDIiCi1QQVNTIGFkanVzdGVkTm9kZS5pZCBpcyAiaW5wdXQyIgotUEFT
UyBhZGp1c3RlZE5vZGUuaWQgaXMgImlucHV0MiIKLVBBU1MgYWRqdXN0ZWROb2RlLmlkIGlzICJp
bnB1dDIiCitQQVNTIGFkanVzdGVkIG5vZGUgd2FzIExBQkVMI2xhYmVsMi4KK1BBU1MgYWRqdXN0
ZWQgbm9kZSB3YXMgTEFCRUwjbGFiZWwyLgorUEFTUyBhZGp1c3RlZCBub2RlIHdhcyBMQUJFTCNs
YWJlbDIuCitQQVNTIGFkanVzdGVkIG5vZGUgd2FzIElOUFVUI2lucHV0Mi4KK1BBU1MgYWRqdXN0
ZWQgbm9kZSB3YXMgSU5QVVQjaW5wdXQyLgorUEFTUyBhZGp1c3RlZCBub2RlIHdhcyBJTlBVVCNp
bnB1dDIuCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RvdWNoYWRqdXN0bWVudC9kaXNhYmxlZC1mb3JtZWxl
bWVudHMuaHRtbCBiL0xheW91dFRlc3RzL3RvdWNoYWRqdXN0bWVudC9kaXNhYmxlZC1mb3JtZWxl
bWVudHMuaHRtbAppbmRleCBlYzEwNzViNzA4MWRkYTNhNTQ4Zjg1OWZhNGYxNzMyNGY4MjY3NzQw
Li45ODBmYjY1ZWUyNDJhZGIzNGI3ZmY0MTAwNDBlZDQzMDdjOGFjOWQ5IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy90b3VjaGFkanVzdG1lbnQvZGlzYWJsZWQtZm9ybWVsZW1lbnRzLmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50L2Rpc2FibGVkLWZvcm1lbGVtZW50cy5odG1s
CkBAIC0xLDE2ICsxLDE4IEBACis8IURPQ1RZUEUgaHRtbD4KIDxodG1sPgogPGhlYWQ+Ci08dGl0
bGU+VG91Y2ggQWRqdXN0bWVudCA6IERpc2FibGVkIGZvcm0gZWxlbWVudHMgLSBidWcgOTIwOTM8
L3RpdGxlPgotPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KLSAgICAjc2FuZGJveCB7Ci0gICAgICAg
IHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgICAgICAgbGVmdDogMHB4OwotICAgICAgICB0b3A6IDBw
eDsKLSAgICAgICAgd2lkdGg6IDYwMHB4OwotICAgICAgICBoZWlnaHQ6IDYwMHB4OwotICAgIH0K
LTwvc3R5bGU+Ci08c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorICAgIDx0aXRsZT5Ub3VjaCBBZGp1c3RtZW50IDogRGlzYWJsZWQgZm9y
bSBlbGVtZW50cyAtIGJ1ZyA5MjA5MzwvdGl0bGU+CisgICAgPHNjcmlwdCBzcmM9Ii4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0i
cmVzb3VyY2VzL3RvdWNoYWRqdXN0bWVudC5qcyI+PC9zY3JpcHQ+CisgICAgPHN0eWxlIHR5cGU9
InRleHQvY3NzIj4KKyAgICAgICAgI3NhbmRib3ggeworICAgICAgICAgICAgcG9zaXRpb246IGFi
c29sdXRlOworICAgICAgICAgICAgbGVmdDogMHB4OworICAgICAgICAgICAgdG9wOiAwcHg7Cisg
ICAgICAgICAgICB3aWR0aDogNjAwcHg7CisgICAgICAgICAgICBoZWlnaHQ6IDYwMHB4OworICAg
ICAgICB9CisgICAgPC9zdHlsZT4KIDwvaGVhZD4KIAogPGJvZHkgaWQ9ImJvZHkiPgpAQCAtMjYs
NjcgKzI4LDQyIEBACiA8ZGl2IGlkPSdjb25zb2xlJz48L2Rpdj4KIAogPHNjcmlwdD4KLSAgICB2
YXIgYWRqdXN0ZWROb2RlOwotICAgIGZ1bmN0aW9uIHRlc3RSb3VuZFRvdWNoKHgsIHksIHJhZGl1
cykKLSAgICB7Ci0gICAgICAgIHZhciB4ID0geCAtIHJhZGl1czsKLSAgICAgICAgdmFyIHkgPSB5
IC0gcmFkaXVzOwotICAgICAgICB2YXIgd2lkdGggPSByYWRpdXMgKiAyOwotICAgICAgICB2YXIg
aGVpZ2h0ID0gcmFkaXVzICogMjsKLSAgICAgICAgdmFyIGFkanVzdGVkTm9kZSA9IGludGVybmFs
cy50b3VjaE5vZGVBZGp1c3RlZFRvQmVzdENsaWNrYWJsZU5vZGUoeCwgeSwgd2lkdGgsIGhlaWdo
dCwgZG9jdW1lbnQpOwotICAgICAgICBpZiAoYWRqdXN0ZWROb2RlLm5vZGVUeXBlID09IDMpIC8v
IFRFWFQgbm9kZQotICAgICAgICAgICAgYWRqdXN0ZWROb2RlID0gYWRqdXN0ZWROb2RlLnBhcmVu
dE5vZGU7Ci0gICAgICAgIHJldHVybiBhZGp1c3RlZE5vZGU7Ci0gICAgfQorICAgIC8vIFNldCB1
cCBzaG9ydGN1dCBhY2Nlc3MgdG8gZWxlbWVudHMKKyAgICB2YXIgZSA9IHt9OworICAgIFsnc2Fu
ZGJveCcsICdmb3JtLCcsICdsYWJlbDEnLCAnbGFiZWwyJywgJ2lucHV0MScsICdpbnB1dDInXS5m
b3JFYWNoKGZ1bmN0aW9uKGEpIHsKKyAgICAgICAgZVthXSA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKGEpOworICAgIH0pOwogCiAgICAgZnVuY3Rpb24gdGVzdERpcmVjdFRvdWNoZXMoKQogICAg
IHsKICAgICAgICAgLy8gUXVpY2sgc2FuaXR5IGNoZWNrLgogICAgICAgICBkZWJ1ZygnVGVzdCB3
ZSBjYW4gaGl0IHRoZSBmb3JtIGVsZW1lbnRzIGRpcmVjdGx5LicpOwogCi0vLyAgICAgICAgIGFk
anVzdGVkTm9kZSA9IHRlc3RSb3VuZFRvdWNoKDE2LCA4LCA1KTsKLS8vICAgICAgICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCdhZGp1c3RlZE5vZGUuaWQnLCAnbGFiZWwxJyk7Ci0KLSAgICAgICAg
YWRqdXN0ZWROb2RlID0gdGVzdFJvdW5kVG91Y2goMTYsIDM4LCA1KTsKLSAgICAgICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCdhZGp1c3RlZE5vZGUuaWQnLCAnbGFiZWwyJyk7Ci0KLS8vICAgICAg
ICAgYWRqdXN0ZWROb2RlID0gdGVzdFJvdW5kVG91Y2goNjAsIDgsIDUpOwotLy8gICAgICAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoJ2FkanVzdGVkTm9kZS5pZCcsICdpbnB1dDEnKTsKLQotICAg
ICAgICBhZGp1c3RlZE5vZGUgPSB0ZXN0Um91bmRUb3VjaCg2MCwgMzgsIDUpOwotICAgICAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoJ2FkanVzdGVkTm9kZS5pZCcsICdpbnB1dDInKTsKLQorICAg
ICAgICB0ZXN0VG91Y2hQb2ludCh0b3VjaFBvaW50KDE2LCA4LCA1KSwgbnVsbCk7CisgICAgICAg
IHRlc3RUb3VjaFBvaW50KHRvdWNoUG9pbnQoMTYsIDM4LCA1KSwgZS5sYWJlbDIpOworICAgICAg
ICB0ZXN0VG91Y2hQb2ludCh0b3VjaFBvaW50KDYwLCA4LCA1KSwgbnVsbCk7CisgICAgICAgIHRl
c3RUb3VjaFBvaW50KHRvdWNoUG9pbnQoNjAsIDM4LCA1KSwgZS5pbnB1dDIpOwogICAgIH0KIAog
ICAgIGZ1bmN0aW9uIHRlc3RBZGp1c3RlZFRvdWNoZXMoKQogICAgIHsKICAgICAgICAgZGVidWco
J1Rlc3QgaW5kaXJlY3QgdG91Y2hlcyBhcmUgYWRqdXN0ZWQgdG8gdGhlIGVuYWJsZWQgZm9ybSBl
bGVtZW50cy4nKTsKLSAgICAgICAgYWRqdXN0ZWROb2RlID0gdGVzdFJvdW5kVG91Y2goMTYsIDI1
LCAxMCk7Ci0gICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnYWRqdXN0ZWROb2RlLmlkJywg
J2xhYmVsMicpOwotCi0gICAgICAgIGFkanVzdGVkTm9kZSA9IHRlc3RSb3VuZFRvdWNoKDE2LCAy
MCwgMTUpOwotICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2FkanVzdGVkTm9kZS5pZCcs
ICdsYWJlbDInKTsKLQotICAgICAgICBhZGp1c3RlZE5vZGUgPSB0ZXN0Um91bmRUb3VjaCgxNiwg
MTYsIDIwKTsKLSAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdhZGp1c3RlZE5vZGUuaWQn
LCAnbGFiZWwyJyk7Ci0KLSAgICAgICAgYWRqdXN0ZWROb2RlID0gdGVzdFJvdW5kVG91Y2goNjAs
IDI1LCAxMCk7Ci0gICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnYWRqdXN0ZWROb2RlLmlk
JywgJ2lucHV0MicpOwotCi0gICAgICAgIGFkanVzdGVkTm9kZSA9IHRlc3RSb3VuZFRvdWNoKDYw
LCAyMCwgMTUpOwotICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2FkanVzdGVkTm9kZS5p
ZCcsICdpbnB1dDInKTsKKyAgICAgICAgdGVzdFRvdWNoUG9pbnQodG91Y2hQb2ludCgxNiwgMjUs
IDEwKSwgZS5sYWJlbDIpOworICAgICAgICB0ZXN0VG91Y2hQb2ludCh0b3VjaFBvaW50KDE2LCAy
MCwgMTUpLCBlLmxhYmVsMik7CisgICAgICAgIHRlc3RUb3VjaFBvaW50KHRvdWNoUG9pbnQoMTYs
IDE2LCAyMCksIGUubGFiZWwyKTsKIAotICAgICAgICBhZGp1c3RlZE5vZGUgPSB0ZXN0Um91bmRU
b3VjaCg2MCwgMTYsIDIwKTsKLSAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdhZGp1c3Rl
ZE5vZGUuaWQnLCAnaW5wdXQyJyk7CisgICAgICAgIHRlc3RUb3VjaFBvaW50KHRvdWNoUG9pbnQo
NjAsIDI1LCAxMCksIGUuaW5wdXQyKTsKKyAgICAgICAgdGVzdFRvdWNoUG9pbnQodG91Y2hQb2lu
dCg2MCwgMjAsIDE1KSwgZS5pbnB1dDIpOworICAgICAgICB0ZXN0VG91Y2hQb2ludCh0b3VjaFBv
aW50KDYwLCAxNiwgMjApLCBlLmlucHV0Mik7CiAgICAgfQogCiAgICAgZnVuY3Rpb24gcnVuVGVz
dHMoKQogICAgIHsKICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyICYmIHdpbmRvdy5pbnRl
cm5hbHMgJiYgaW50ZXJuYWxzLnRvdWNoTm9kZUFkanVzdGVkVG9CZXN0Q2xpY2thYmxlTm9kZSkg
ewogICAgICAgICAgICAgZGVzY3JpcHRpb24oZG9jdW1lbnQudGl0bGUpOwotICAgICAgICAgICAg
dGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAgICAgICAgICAgICB0ZXN0RGlyZWN0VG91Y2hlcygp
OwogICAgICAgICAgICAgdGVzdEFkanVzdGVkVG91Y2hlcygpOworICAgICAgICAgICAgZS5zYW5k
Ym94LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3RvdWNoYWRqdXN0bWVudC9ldmVudC10cmlnZ2VyZWQtd2lkZ2V0cy1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90b3VjaGFkanVzdG1lbnQvZXZlbnQtdHJpZ2dlcmVk
LXdpZGdldHMtZXhwZWN0ZWQudHh0CmluZGV4IGI1OWRmNGFhNTY4YTFiZGZiZThhODQ1YWU4NDE5
NDIxODNlNzdhMjQuLjIxODAwOThhZTU5OWI5MDk2ZDIyYzFmMGFjMDMxOTc0ZThjODExMDMgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3RvdWNoYWRqdXN0bWVudC9ldmVudC10cmlnZ2VyZWQtd2lk
Z2V0cy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50L2V2ZW50
LXRyaWdnZXJlZC13aWRnZXRzLWV4cGVjdGVkLnR4dApAQCAtMjQsOCArMjQsNCBAQCBQQVNTIGFk
anVzdGVkTm9kZS5pZCBpcyBlbGVtZW50LmlkCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCiAKIFRFU1QgQ09NUExFVEUKLUZvY3VzIGhlcmUgc2hvdWxkIGdpdmUgYSB0ZXh0IGlucHV0
LWZpZWxkLgotTW91c2Utb3ZlciBoZXJlIHNob3VsZCBnaXZlIGEgdGV4dCBpbnB1dC1maWVsZC4K
LUhvdmVyaW5nIGhlcmUgc2hvdWxkIGdpdmUgYSB0ZXh0IGlucHV0LWZpZWxkLiAKLUZvY3VzaW5n
IGhlcmUgc2hvdWxkIG9ubHkgZ2l2ZSBmb2N1cyBvdXRsaW5lIHRvIHRoaXMgaW5uZXIgdGV4dC4K
LUZvY3VzaW5nIGhlcmUgc2hvdWxkIGdpdmUgYSB0ZXh0IGlucHV0LWZpZWxkLgorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy90b3VjaGFkanVzdG1lbnQvZXZlbnQtdHJpZ2dlcmVkLXdpZGdldHMu
aHRtbCBiL0xheW91dFRlc3RzL3RvdWNoYWRqdXN0bWVudC9ldmVudC10cmlnZ2VyZWQtd2lkZ2V0
cy5odG1sCmluZGV4IDZlYTZhZDgyZmRkZDAwYmMwYTdhODEwMGUyNmFjNmI4NGQ3NmZmYjcuLjU1
ODNjZWVmMTc4NDUwMjdkYjczZTA4OTFlMzYzZDI4MTM4Yzg3NzIgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3RvdWNoYWRqdXN0bWVudC9ldmVudC10cmlnZ2VyZWQtd2lkZ2V0cy5odG1sCisrKyBi
L0xheW91dFRlc3RzL3RvdWNoYWRqdXN0bWVudC9ldmVudC10cmlnZ2VyZWQtd2lkZ2V0cy5odG1s
CkBAIC0xLDE3ICsxLDYzIEBACis8IURPQ1RZUEUgaHRtbD4KIDxodG1sPgogPGhlYWQ+Ci08c3R5
bGU+Ci0gICAgLmJveCB7IGJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOyBib3JkZXItcmFkaXVzOiA1
cHggNXB4OyBtYXJnaW46IDFlbTsgd2lkdGg6IDQwZW07IH0KLTwvc3R5bGU+Ci0KLTxzY3JpcHQg
c3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci0KKyAg
ICA8dGl0bGU+VG91Y2ggQWRqdXN0bWVudCA6IEV2ZW50IHRyaWdnZXJlZCB3aWRnZXRzIC0gYnVn
IDc4ODAxPC90aXRsZT4KKyAgICA8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdG91Y2hh
ZGp1c3RtZW50LmpzIj48L3NjcmlwdD4KKyAgICA8c3R5bGU+CisgICAgICAgIC5ib3ggeyBib3Jk
ZXI6IDFweCBzb2xpZCBibGFjazsgYm9yZGVyLXJhZGl1czogNXB4IDVweDsgbWFyZ2luOiAxZW07
IHdpZHRoOiA0MGVtOyB9CisgICAgPC9zdHlsZT4KIDwvaGVhZD4KIAotPGJvZHkgb25sb2FkPSJy
dW5UZXN0cygpIj4KKzxib2R5PgorCis8ZGl2IGlkPXNhbmRib3g+CisgICAgPHNjcmlwdD4KKyAg
ICAgICAgZnVuY3Rpb24gdHJpZ2dlcklucHV0KCkgeworICAgICAgICAgICAgdmFyIGVsZW1lbnQg
PSBldmVudC5zcmNFbGVtZW50OworICAgICAgICAgICAgaWYgKCFlbGVtZW50Lm9wZW4pIHsKKyAg
ICAgICAgICAgICAgICBlbGVtZW50LmlubmVySFRNTCA9ICc8aW5wdXQgdHlwZT10ZXh0IHN0eWxl
PSJ3aWR0aDogMTAwJSI+PC9pbnB1dD4nCisgICAgICAgICAgICAgICAgZWxlbWVudC5vcGVuID0g
dHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsZW1lbnQuZmlyc3RDaGlsZC5mb2N1
cygpOworICAgICAgICB9CisgICAgPC9zY3JpcHQ+CisKKyAgICA8ZGl2IGlkPXRlc3QxIGNsYXNz
PWJveCB0YWJpbmRleD0xIG9uZm9jdXM9J3RyaWdnZXJJbnB1dCgpJz4KKyAgICBGb2N1cyBoZXJl
IHNob3VsZCBnaXZlIGEgdGV4dCBpbnB1dC1maWVsZC4KKyAgICA8L2Rpdj4KKworICAgIDxkaXYg
aWQ9dGVzdDIgY2xhc3M9Ym94IG9ubW91c2VvdmVyPSd0cmlnZ2VySW5wdXQoKSc+IAorICAgIE1v
dXNlLW92ZXIgaGVyZSBzaG91bGQgZ2l2ZSBhIHRleHQgaW5wdXQtZmllbGQuCisgICAgPC9kaXY+
CisKKyAgICA8c3R5bGU+CisgICAgICAgIC5ib3g6bm90KDpob3ZlcikgLmhvdmVydHJpZ2dlcmVk
IHsgdmlzaWJpbGl0eTogaGlkZGVuO30KKyAgICAgICAgLmJveDpob3ZlciAuaG92ZXJmYWxsYmFj
ayB7IGRpc3BsYXk6IG5vbmU7IH0gIAorICAgIDwvc3R5bGU+CisKKyAgICA8ZGl2IGlkPXRlc3Qz
IGNsYXNzPWJveD4gCisgICAgICAgIDxzcGFuIGNsYXNzPWhvdmVyZmFsbGJhY2s+SG92ZXJpbmcg
aGVyZSBzaG91bGQgZ2l2ZSBhIHRleHQgaW5wdXQtZmllbGQuPC9zcGFuPgorICAgICAgICA8aW5w
dXQgdHlwZT10ZXh0IGNsYXNzPWhvdmVydHJpZ2dlcmVkPjwvaW5wdXQ+CisgICAgPC9kaXY+CisK
KyAgICA8ZGl2IGlkPXRlc3Q0IGNsYXNzPWJveCBvbmZvY3VzPSd0cmlnZ2VySW5wdXQoKSc+Cisg
ICAgICAgIDxzcGFuIHRhYmluZGV4PTE+IEZvY3VzaW5nIGhlcmUgc2hvdWxkIG9ubHkgZ2l2ZSBm
b2N1cyBvdXRsaW5lIHRvIHRoaXMgaW5uZXIgdGV4dC4KKyAgICAgICAgPC9zcGFuPgorICAgIDwv
ZGl2PgorCisgICAgPGRpdiBpZD10ZXN0NSBjbGFzcz1ib3g+CisgICAgICAgIDxzcGFuIHRhYmlu
ZGV4PTE+IEZvY3VzaW5nIGhlcmUgc2hvdWxkIGdpdmUgYSB0ZXh0IGlucHV0LWZpZWxkLgorICAg
ICAgICA8L3NwYW4+CisgICAgPC9kaXY+CisKKyAgICA8c2NyaXB0PgorICAgICAgICB2YXIgZWxl
bWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0NScpOworICAgICAgICBlbGVtZW50
LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUZvY3VzSW4nLCB0cmlnZ2VySW5wdXQsIGZhbHNlKTsKKyAg
ICA8L3NjcmlwdD4KKzwvZGl2PgogCiA8cCBpZD0nZGVzY3JpcHRpb24nPjwvcD4KLQogPGRpdiBp
ZD0nY29uc29sZSc+PC9kaXY+CiAKIDxzY3JpcHQ+CkBAIC0zNywzMiArODMsMjAgQEAKIAogICAg
IGZ1bmN0aW9uIHRlc3REaXJlY3RUb3VjaChlbGVtZW50KQogICAgIHsKLSAgICAgICAgdmFyIHBv
cyA9IGZpbmRBYnNvbHV0ZVBvc2l0aW9uKGVsZW1lbnQpOwotICAgICAgICB2YXIgeCA9IHBvcy5s
ZWZ0ICsgZWxlbWVudC5jbGllbnRXaWR0aCAvIDIgLSAxOwotICAgICAgICB2YXIgeSA9IHBvcy50
b3AgKyBlbGVtZW50LmNsaWVudEhlaWdodCAvIDIgLSAxOwotICAgICAgICB2YXIgd2lkdGggPSAz
OwotICAgICAgICB2YXIgaGVpZ2h0ID0gMzsKLSAgICAgICAgYWRqdXN0ZWROb2RlID0gZmluZEJl
c3RDbGlja2FibGVOb2RlKHgsIHksIHdpZHRoLCBoZWlnaHQpOworICAgICAgICB2YXIgdG91Y2hw
b2ludCA9IG9mZnNldFRvdWNoUG9pbnQoZmluZEFic29sdXRlQm91bmRzKGVsZW1lbnQpLCAnY2Vu
dGVyJywgMCwgMiwgMik7CisgICAgICAgIGFkanVzdGVkTm9kZSA9IGZpbmRCZXN0Q2xpY2thYmxl
Tm9kZSh0b3VjaHBvaW50LmxlZnQsIHRvdWNocG9pbnQudG9wLCB0b3VjaHBvaW50LndpZHRoLCB0
b3VjaHBvaW50LmhlaWdodCk7CiAgICAgfQogCiAgICAgZnVuY3Rpb24gdGVzdERpcmVjdEZhdEZp
bmdlcihlbGVtZW50KQogICAgIHsKLSAgICAgICAgdmFyIHBvcyA9IGZpbmRBYnNvbHV0ZVBvc2l0
aW9uKGVsZW1lbnQpOwotICAgICAgICB2YXIgeCA9IHBvcy5sZWZ0ICsgZWxlbWVudC5jbGllbnRX
aWR0aCAvIDIgLSAxOwotICAgICAgICB2YXIgeSA9IHBvcy50b3AgLSA1IDsKLSAgICAgICAgdmFy
IHdpZHRoID0gZWxlbWVudC5jbGllbnRIZWlnaHQ7Ci0gICAgICAgIHZhciBoZWlnaHQgPSBlbGVt
ZW50LmNsaWVudEhlaWdodCArIDEwOwotICAgICAgICBhZGp1c3RlZE5vZGUgPSBmaW5kQmVzdENs
aWNrYWJsZU5vZGUoeCwgeSwgd2lkdGgsIGhlaWdodCk7CisgICAgICAgIHZhciB0b3VjaHBvaW50
ID0gb2Zmc2V0VG91Y2hQb2ludChmaW5kQWJzb2x1dGVCb3VuZHMoZWxlbWVudCksICd0b3AnLCAt
NSwgZWxlbWVudC5jbGllbnRIZWlnaHQvMiwgKGVsZW1lbnQuY2xpZW50SGVpZ2h0KzEwKS8yKTsK
KyAgICAgICAgYWRqdXN0ZWROb2RlID0gZmluZEJlc3RDbGlja2FibGVOb2RlKHRvdWNocG9pbnQu
bGVmdCwgdG91Y2hwb2ludC50b3AsIHRvdWNocG9pbnQud2lkdGgsIHRvdWNocG9pbnQuaGVpZ2h0
KTsKICAgICB9CiAKICAgICBmdW5jdGlvbiB0ZXN0SW5kaXJlY3RGYXRGaW5nZXIoZWxlbWVudCkK
ICAgICB7Ci0gICAgICAgIHZhciBwb3MgPSBmaW5kQWJzb2x1dGVQb3NpdGlvbihlbGVtZW50KTsK
LSAgICAgICAgdmFyIHggPSBwb3MubGVmdCArIGVsZW1lbnQuY2xpZW50V2lkdGggLyAyIC0gMTsK
LSAgICAgICAgdmFyIHkgPSBwb3MudG9wIC0gNzsKLSAgICAgICAgdmFyIHdpZHRoID0gMTA7Ci0g
ICAgICAgIHZhciBoZWlnaHQgPSAxMDsKLSAgICAgICAgYWRqdXN0ZWROb2RlID0gZmluZEJlc3RD
bGlja2FibGVOb2RlKHgsIHksIHdpZHRoLCBoZWlnaHQpOworICAgICAgICB2YXIgdG91Y2hwb2lu
dCA9IG9mZnNldFRvdWNoUG9pbnQoZmluZEFic29sdXRlQm91bmRzKGVsZW1lbnQpLCAndG9wJywg
MywgNSwgNSk7CisgICAgICAgIGFkanVzdGVkTm9kZSA9IGZpbmRCZXN0Q2xpY2thYmxlTm9kZSh0
b3VjaHBvaW50LmxlZnQsIHRvdWNocG9pbnQudG9wLCB0b3VjaHBvaW50LndpZHRoLCB0b3VjaHBv
aW50LmhlaWdodCk7CiAgICAgfQogCiAgICAgZnVuY3Rpb24gdGVzdFRvdWNoSGl0KGVsZW1lbnRp
ZCwgdG91Y2hUeXBlKSB7CkBAIC0xMTEsNjAgKzE0NSwxNCBAQAogICAgIHsKICAgICAgICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyICYmIHdpbmRvdy5pbnRlcm5hbHMgJiYgaW50ZXJuYWxzLnRvdWNo
Tm9kZUFkanVzdGVkVG9CZXN0Q2xpY2thYmxlTm9kZSkgewogICAgICAgICAgICAgZGVzY3JpcHRp
b24oJ1Rlc3QgdmFyaW91cyB3YXlzIHRvIHRyaWdnZXIgaW5wdXQtd2lkZ2V0cy4gT24gYSB0b3Vj
aCBpbnRlcmZhY2UsIGFsbCB0aGUgYWN0aW9ucyBzaG91bGQgYmUgdHJpZ2dlcmFibGUgd2l0aCBl
aXRoZXIgYSB0b3VjaCBkb3duIG9yIGEgdG91Y2ggdGFwLicpOwotICAgICAgICAgICAgdGVzdFJ1
bm5lci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUo
KTsKICAgICAgICAgICAgIHRlc3REaXJlY3RUb3VjaGVzKCk7CiAgICAgICAgICAgICB0ZXN0RGly
ZWN0RmF0RmluZ2VycygpOwogICAgICAgICAgICAgdGVzdEluZGlyZWN0RmF0RmluZ2VycygpOwot
ICAgICAgICAgICAgaXNTdWNjZXNzZnVsbHlQYXJzZWQoKTsKLSAgICAgICAgICAgIHRlc3RSdW5u
ZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Nh
bmRib3gnKS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwogICAgICAgICB9CiAgICAgfQorICAgIHJ1
blRlc3RzKCk7CiA8L3NjcmlwdD4KLQotPHNjcmlwdD4KLSAgICBmdW5jdGlvbiB0cmlnZ2VySW5w
dXQoKSB7Ci0gICAgICAgIHZhciBlbGVtZW50ID0gZXZlbnQuc3JjRWxlbWVudDsKLSAgICAgICAg
aWYgKCFlbGVtZW50Lm9wZW4pIHsKLSAgICAgICAgICAgIGVsZW1lbnQuaW5uZXJIVE1MID0gJzxp
bnB1dCB0eXBlPXRleHQgc3R5bGU9IndpZHRoOiAxMDAlIj48L2lucHV0PicKLSAgICAgICAgICAg
IGVsZW1lbnQub3BlbiA9IHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgZWxlbWVudC5maXJzdENo
aWxkLmZvY3VzKCk7Ci0gICAgfQotPC9zY3JpcHQ+Ci0KLTxkaXYgaWQ9dGVzdDEgY2xhc3M9Ym94
IHRhYmluZGV4PTEgb25mb2N1cz0ndHJpZ2dlcklucHV0KCknPgotRm9jdXMgaGVyZSBzaG91bGQg
Z2l2ZSBhIHRleHQgaW5wdXQtZmllbGQuCi08L2Rpdj4KLQotPGRpdiBpZD10ZXN0MiBjbGFzcz1i
b3ggb25tb3VzZW92ZXI9J3RyaWdnZXJJbnB1dCgpJz4gCi1Nb3VzZS1vdmVyIGhlcmUgc2hvdWxk
IGdpdmUgYSB0ZXh0IGlucHV0LWZpZWxkLgotPC9kaXY+Ci0KLTxzdHlsZT4KLSAgICAuYm94Om5v
dCg6aG92ZXIpIC5ob3ZlcnRyaWdnZXJlZCB7IHZpc2liaWxpdHk6IGhpZGRlbjt9Ci0gICAgLmJv
eDpob3ZlciAuaG92ZXJmYWxsYmFjayB7IGRpc3BsYXk6IG5vbmU7IH0gIAotPC9zdHlsZT4KLQot
PGRpdiBpZD10ZXN0MyBjbGFzcz1ib3g+IAotICAgIDxzcGFuIGNsYXNzPWhvdmVyZmFsbGJhY2s+
SG92ZXJpbmcgaGVyZSBzaG91bGQgZ2l2ZSBhIHRleHQgaW5wdXQtZmllbGQuPC9zcGFuPgotICAg
IDxpbnB1dCB0eXBlPXRleHQgY2xhc3M9aG92ZXJ0cmlnZ2VyZWQ+PC9pbnB1dD4KLTwvZGl2Pgot
Ci08ZGl2IGlkPXRlc3Q0IGNsYXNzPWJveCBvbmZvY3VzPSd0cmlnZ2VySW5wdXQoKSc+Ci0gICAg
PHNwYW4gdGFiaW5kZXg9MT4gRm9jdXNpbmcgaGVyZSBzaG91bGQgb25seSBnaXZlIGZvY3VzIG91
dGxpbmUgdG8gdGhpcyBpbm5lciB0ZXh0LgotICAgIDwvc3Bhbj4KLTwvZGl2PgotCi08ZGl2IGlk
PXRlc3Q1IGNsYXNzPWJveD4KLSAgICA8c3BhbiB0YWJpbmRleD0xPiBGb2N1c2luZyBoZXJlIHNo
b3VsZCBnaXZlIGEgdGV4dCBpbnB1dC1maWVsZC4KLSAgICA8L3NwYW4+Ci08L2Rpdj4KLQotPHNj
cmlwdD4KLSAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0NScp
OwotICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NRm9jdXNJbicsIHRyaWdnZXJJbnB1
dCwgZmFsc2UpOwotPC9zY3JpcHQ+Ci0KKzxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNl
cy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50L2h0bWwtbGFiZWwtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50L2h0bWwtbGFiZWwtZXhwZWN0ZWQudHh0CmluZGV4
IGY5NjlmZGI4ZGJkOThmZDI0MjA4Y2E0ZmYwYWQzMTNiY2YyZDczMjMuLmFmNzZmNzMzMTY3NTVi
NTY5NjZjMDIyOTlmZTdlOTMwYzE1YzZjM2YgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3RvdWNo
YWRqdXN0bWVudC9odG1sLWxhYmVsLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy90b3Vj
aGFkanVzdG1lbnQvaHRtbC1sYWJlbC1leHBlY3RlZC50eHQKQEAgLTEsMjEgKzEsMTYgQEAKLURv
IG5vdCBjbGljayBoZXJlCi1DbGljayBoZXJlLCBidXQgbm90IGhlcmUuIAotCi0KLQogVGVzdHMg
aWYgbGFiZWxzIGFyZSB0cmVhdGVkIGFzIGNsaWNrYWJsZSBpZiB0aGUgaW5wdXQgdGhleSBjb250
cm9sIGlzLgogCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1l
c3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAKIAogVGVzdGluZyBzbWFsbCBk
aXJlY3QgaGl0cy4KLVBBU1MgYWRqdXN0ZWROb2RlLmlkIGlzICJteWxpbmsiCi1QQVNTIGFkanVz
dGVkTm9kZS5pZCBpcyAibXlsYWJlbCIKLVBBU1MgYWRqdXN0ZWROb2RlLmlkIGlzICJteWlucHV0
IgorUEFTUyBhZGp1c3RlZCBub2RlIHdhcyBBI215bGluay4KK1BBU1MgYWRqdXN0ZWQgbm9kZSB3
YXMgTEFCRUwjbXlsYWJlbC4KK1BBU1MgYWRqdXN0ZWQgbm9kZSB3YXMgSU5QVVQjbXlpbnB1dC4K
IFRlc3RpbmcgaW5kaXJlY3QgaGl0cy4KLVBBU1MgYWRqdXN0ZWROb2RlLmlkIGlzICJteWxpbmsi
Ci1QQVNTIGFkanVzdGVkTm9kZS5pZCBpcyAibXlsYWJlbCIKLVBBU1MgYWRqdXN0ZWROb2RlLmlk
IGlzICJteWlucHV0IgorUEFTUyBhZGp1c3RlZCBub2RlIHdhcyBBI215bGluay4KK1BBU1MgYWRq
dXN0ZWQgbm9kZSB3YXMgTEFCRUwjbXlsYWJlbC4KK1BBU1MgYWRqdXN0ZWQgbm9kZSB3YXMgSU5Q
VVQjbXlpbnB1dC4KIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01Q
TEVURQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50L2h0bWwtbGFiZWwu
aHRtbCBiL0xheW91dFRlc3RzL3RvdWNoYWRqdXN0bWVudC9odG1sLWxhYmVsLmh0bWwKaW5kZXgg
MjdjNWJkZmQwZGY3YzA5MTQ5MjdiM2YyODI3N2FhM2FlOWUxYjFjOS4uM2MxMTZhNTViYWEwZDVl
YjQzZjM1MTAxMTQ2YWY5ZGVjODM5MmQ5YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvdG91Y2hh
ZGp1c3RtZW50L2h0bWwtbGFiZWwuaHRtbAorKysgYi9MYXlvdXRUZXN0cy90b3VjaGFkanVzdG1l
bnQvaHRtbC1sYWJlbC5odG1sCkBAIC0xLDE4ICsxLDI4IEBACis8IURPQ1RZUEUgaHRtbD4KIDxo
dG1sPgogPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgotCisgICAgPHRpdGxlPlRvdWNoIEFkanVzdG1lbnQgOiBIVE1MIExh
YmVsIGFuZCBmb3JtIGZpZWxkcyAtIGJ1ZyA3ODgwMTwvdGl0bGU+CisgICAgPHNjcmlwdCBzcmM9
Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKyAgICA8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL3RvdWNoYWRqdXN0bWVudC5qcyI+PC9zY3JpcHQ+CisgICAgPHN0
eWxlPgorICAgICAgICAjc2FuZGJveCB7CisgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7
CisgICAgICAgICAgICBsZWZ0OiAwcHg7CisgICAgICAgICAgICB0b3A6IDBweDsKKyAgICAgICAg
fQorICAgIDwvc3R5bGU+CiA8L2hlYWQ+CiAKLTxib2R5IGlkPSJteWJvZHkiIG9ubG9hZD0icnVu
VGVzdHMoKSI+Cis8Ym9keT4KIAotPGEgaHJlZj0iI215Zm9ybSIgaWQ9Im15bGluayI+RG8gbm90
IGNsaWNrIGhlcmU8L2E+PGJyPgotPGZvcm0gaWQ9Im15Zm9ybSI+Ci08bGFiZWwgZm9yPSJteWlu
cHV0IiBpZD0ibXlsYWJlbCI+Q2xpY2sgaGVyZSw8L2xhYmVsPgotPHNwYW4gaWQ9Im15c3BhbiI+
YnV0IG5vdCBoZXJlLjwvc3Bhbj4KLTxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0ibXlpbnB1dCIgdmFs
dWU9IlRvIGZvY3VzIHRoaXMuIj48L2lucHV0PgotPC9mb3JtPgotPGJyPjxicj48YnI+Cis8ZGl2
IGlkPXNhbmRib3g+CisgICAgPGEgaHJlZj0iI215Zm9ybSIgaWQ9Im15bGluayI+RG8gbm90IGNs
aWNrIGhlcmU8L2E+PGJyPgorICAgIDxmb3JtIGlkPSJteWZvcm0iPgorICAgIDxsYWJlbCBmb3I9
Im15aW5wdXQiIGlkPSJteWxhYmVsIj5DbGljayBoZXJlLDwvbGFiZWw+CisgICAgPHNwYW4gaWQ9
Im15c3BhbiI+YnV0IG5vdCBoZXJlLjwvc3Bhbj4KKyAgICA8aW5wdXQgdHlwZT0idGV4dCIgaWQ9
Im15aW5wdXQiIHZhbHVlPSJUbyBmb2N1cyB0aGlzLiI+PC9pbnB1dD4KKyAgICA8L2Zvcm0+Cis8
L2Rpdj4KIAogPHAgaWQ9J2Rlc2NyaXB0aW9uJz48L3A+CiA8ZGl2IGlkPSdjb25zb2xlJz48L2Rp
dj4KQEAgLTIwLDg5ICszMCw1NCBAQAogPHNjcmlwdD4KICAgICB2YXIgZWxlbWVudDsKICAgICB2
YXIgYWRqdXN0ZWROb2RlOwotICAgIGZ1bmN0aW9uIGZpbmRBYnNvbHV0ZVBvc2l0aW9uKG5vZGUp
IHsKLSAgICAgICAgdmFyIHBvcyA9IG5ldyBPYmplY3QoKTsKLSAgICAgICAgcG9zLmxlZnQgPSAw
OyBwb3MudG9wID0gMDsKLSAgICAgICAgZG8gewotICAgICAgICAgICAgcG9zLmxlZnQgKz0gbm9k
ZS5vZmZzZXRMZWZ0OwotICAgICAgICAgICAgcG9zLnRvcCArPSBub2RlLm9mZnNldFRvcDsKLSAg
ICAgICAgfSB3aGlsZSAobm9kZSA9IG5vZGUub2Zmc2V0UGFyZW50KTsKLSAgICAgICAgcmV0dXJu
IHBvczsKLSAgICB9CisgICAgLy8gU2V0IHVwIHNob3J0Y3V0IGFjY2VzcyB0byBlbGVtZW50cwor
ICAgIHZhciBlID0ge307CisgICAgWydzYW5kYm94JywgJ215bGluaycsICdteWZvcm0nLCAnbXlp
bnB1dCcsICdteWxhYmVsJywgJ215c3BhbiddLmZvckVhY2goZnVuY3Rpb24oYSkgeworICAgICAg
ICBlW2FdID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYSk7CisgICAgfSk7CiAKICAgICBmdW5j
dGlvbiB0ZXN0RGlyZWN0VG91Y2goZWxlbWVudCkKICAgICB7Ci0gICAgICAgIHZhciBwb3MgPSBm
aW5kQWJzb2x1dGVQb3NpdGlvbihlbGVtZW50KTsKLSAgICAgICAgdmFyIHggPSBwb3MubGVmdCAr
IGVsZW1lbnQuY2xpZW50V2lkdGggLyAyIC0gMjA7Ci0gICAgICAgIHZhciB5ID0gcG9zLnRvcCAr
IGVsZW1lbnQuY2xpZW50SGVpZ2h0IC8gMiAtIDMwOwotICAgICAgICB2YXIgd2lkdGggPSA0MDsK
LSAgICAgICAgdmFyIGhlaWdodCA9IDYwOwotICAgICAgICB2YXIgYWRqdXN0ZWROb2RlID0gaW50
ZXJuYWxzLnRvdWNoTm9kZUFkanVzdGVkVG9CZXN0Q2xpY2thYmxlTm9kZSh4LCB5LCB3aWR0aCwg
aGVpZ2h0LCBkb2N1bWVudCk7Ci0gICAgICAgIHdoaWxlIChhZGp1c3RlZE5vZGUubm9kZVR5cGUg
IT0gMSkgLy8gTm90IGFuIGVsZW1lbnQuCi0gICAgICAgICAgICBhZGp1c3RlZE5vZGUgPSBhZGp1
c3RlZE5vZGUucGFyZW50Tm9kZTsKLSAgICAgICAgcmV0dXJuIGFkanVzdGVkTm9kZTsKKyAgICAg
ICAgdmFyIHRvdWNocG9pbnQgPSBvZmZzZXRUb3VjaFBvaW50KGZpbmRBYnNvbHV0ZUJvdW5kcyhl
bGVtZW50KSwgJ2NlbnRlcicsIDAsIDIwLCAzMCk7CisgICAgICAgIHRlc3RUb3VjaFBvaW50KHRv
dWNocG9pbnQsIGVsZW1lbnQpOwogICAgIH0KIAogICAgIGZ1bmN0aW9uIHRlc3RJbmRpcmVjdFRv
dWNoKGVsZW1lbnQpCiAgICAgewogICAgICAgICAvLyBUb3VjaCBqdXN0IHJpZ2h0IG9mIHRoZSBl
bGVtZW50LgotICAgICAgICB2YXIgcG9zID0gZmluZEFic29sdXRlUG9zaXRpb24oZWxlbWVudCk7
Ci0gICAgICAgIHZhciB4ID0gcG9zLmxlZnQgKyBlbGVtZW50LmNsaWVudFdpZHRoICsgMTAgLSAz
MDsKLSAgICAgICAgdmFyIHkgPSBwb3MudG9wICsgZWxlbWVudC5jbGllbnRIZWlnaHQgLyAyIC0g
MjA7Ci0gICAgICAgIHZhciB3aWR0aCA9IDYwOwotICAgICAgICB2YXIgaGVpZ2h0ID0gNDA7Ci0g
ICAgICAgIHZhciBhZGp1c3RlZE5vZGUgPSBpbnRlcm5hbHMudG91Y2hOb2RlQWRqdXN0ZWRUb0Jl
c3RDbGlja2FibGVOb2RlKHgsIHksIHdpZHRoLCBoZWlnaHQsIGRvY3VtZW50KTsKLSAgICAgICAg
d2hpbGUgKGFkanVzdGVkTm9kZS5ub2RlVHlwZSAhPSAxICkgLy8gTm90IGFuIGVsZW1lbnQuCi0g
ICAgICAgICAgICBhZGp1c3RlZE5vZGUgPSBhZGp1c3RlZE5vZGUucGFyZW50Tm9kZTsKLSAgICAg
ICAgcmV0dXJuIGFkanVzdGVkTm9kZTsKKyAgICAgICAgdmFyIHRvdWNocG9pbnQgPSBvZmZzZXRU
b3VjaFBvaW50KGZpbmRBYnNvbHV0ZUJvdW5kcyhlbGVtZW50KSwgJ3JpZ2h0JywgMTAsIDMwLCAy
MCk7CisgICAgICAgIHRlc3RUb3VjaFBvaW50KHRvdWNocG9pbnQsIGVsZW1lbnQpOwogICAgIH0K
IAogICAgIGZ1bmN0aW9uIHRlc3REaXJlY3RUb3VjaGVzKCkKICAgICB7CiAgICAgICAgIGRlYnVn
KCdUZXN0aW5nIHNtYWxsIGRpcmVjdCBoaXRzLicpOwogCi0gICAgICAgIGVsZW1lbnQgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnbXlsaW5rJyk7Ci0gICAgICAgIGFkanVzdGVkTm9kZSA9IHRl
c3REaXJlY3RUb3VjaChlbGVtZW50KTsKLSAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdh
ZGp1c3RlZE5vZGUuaWQnLCAnbXlsaW5rJyk7Ci0KLSAgICAgICAgZWxlbWVudCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdteWxhYmVsJyk7Ci0gICAgICAgIGFkanVzdGVkTm9kZSA9IHRlc3RE
aXJlY3RUb3VjaChlbGVtZW50KTsKLSAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdhZGp1
c3RlZE5vZGUuaWQnLCAnbXlsYWJlbCcpOwotCi0gICAgICAgIGVsZW1lbnQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnbXlpbnB1dCcpOwotICAgICAgICBhZGp1c3RlZE5vZGUgPSB0ZXN0RGly
ZWN0VG91Y2goZWxlbWVudCk7Ci0gICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnYWRqdXN0
ZWROb2RlLmlkJywgJ215aW5wdXQnKTsKKyAgICAgICAgdGVzdERpcmVjdFRvdWNoKGUubXlsaW5r
KTsKKyAgICAgICAgdGVzdERpcmVjdFRvdWNoKGUubXlsYWJlbCk7CisgICAgICAgIHRlc3REaXJl
Y3RUb3VjaChlLm15aW5wdXQpOwogICAgIH0KIAogICAgIGZ1bmN0aW9uIHRlc3RJbmRpcmVjdFRv
dWNoZXMoKQogICAgIHsKICAgICAgICAgZGVidWcoJ1Rlc3RpbmcgaW5kaXJlY3QgaGl0cy4nKTsK
IAotICAgICAgICBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ215bGluaycpOwot
ICAgICAgICBhZGp1c3RlZE5vZGUgPSB0ZXN0SW5kaXJlY3RUb3VjaChlbGVtZW50KTsKLSAgICAg
ICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdhZGp1c3RlZE5vZGUuaWQnLCAnbXlsaW5rJyk7Ci0K
LSAgICAgICAgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdteWxhYmVsJyk7Ci0g
ICAgICAgIGFkanVzdGVkTm9kZSA9IHRlc3RJbmRpcmVjdFRvdWNoKGVsZW1lbnQpOwotICAgICAg
ICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2FkanVzdGVkTm9kZS5pZCcsICdteWxhYmVsJyk7Ci0K
LSAgICAgICAgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdteWlucHV0Jyk7Ci0g
ICAgICAgIGFkanVzdGVkTm9kZSA9IHRlc3RJbmRpcmVjdFRvdWNoKGVsZW1lbnQpOwotICAgICAg
ICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2FkanVzdGVkTm9kZS5pZCcsICdteWlucHV0Jyk7Cisg
ICAgICAgIHRlc3RJbmRpcmVjdFRvdWNoKGUubXlsaW5rKTsKKyAgICAgICAgdGVzdEluZGlyZWN0
VG91Y2goZS5teWxhYmVsKTsKKyAgICAgICAgdGVzdEluZGlyZWN0VG91Y2goZS5teWlucHV0KTsK
ICAgICB9CiAKICAgICBmdW5jdGlvbiBydW5UZXN0cygpCiAgICAgewogICAgICAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIgJiYgd2luZG93LmludGVybmFscyAmJiBpbnRlcm5hbHMudG91Y2hOb2Rl
QWRqdXN0ZWRUb0Jlc3RDbGlja2FibGVOb2RlKSB7CiAgICAgICAgICAgICBkZXNjcmlwdGlvbign
VGVzdHMgaWYgbGFiZWxzIGFyZSB0cmVhdGVkIGFzIGNsaWNrYWJsZSBpZiB0aGUgaW5wdXQgdGhl
eSBjb250cm9sIGlzLicpOwotICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Ci0g
ICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKICAgICAgICAgICAgIHRlc3RE
aXJlY3RUb3VjaGVzKCk7CiAgICAgICAgICAgICB0ZXN0SW5kaXJlY3RUb3VjaGVzKCk7Ci0gICAg
ICAgICAgICBpc1N1Y2Nlc3NmdWxseVBhcnNlZCgpOwotICAgICAgICAgICAgdGVzdFJ1bm5lci5u
b3RpZnlEb25lKCk7CisgICAgICAgICAgICBlLnNhbmRib3guc3R5bGUuZGlzcGxheSA9ICdub25l
JzsKICAgICAgICAgfQogICAgIH0KKyAgICBydW5UZXN0cygpOwogPC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwv
Ym9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RvdWNoYWRqdXN0bWVudC9p
ZnJhbWUuaHRtbCBiL0xheW91dFRlc3RzL3RvdWNoYWRqdXN0bWVudC9pZnJhbWUuaHRtbAppbmRl
eCA0NTM0YWQwMGYyZmVkZjdmOTY5ZGU0NDQ0NWY0NzQyZDY0Y2QyZWQ0Li45MDg0OTY3NmU5NWRk
NTUwODJlOTRkZjZlN2NhODllMjllNGYyOWY0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy90b3Vj
aGFkanVzdG1lbnQvaWZyYW1lLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50
L2lmcmFtZS5odG1sCkBAIC0xLDUgKzEsNyBAQAorPCFET0NUWVBFIGh0bWw+CiA8aHRtbD4KIDxo
ZWFkPgorICAgIDx0aXRsZT5Ub3VjaCBBZGp1c3RtZW50IDogQ29ycmVjdCBmb3IgZnJhbWUgcG9z
aXRpb25zIC0gYnVnIDgyMDQzPC90aXRsZT4KICAgICA8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgogICAgIDxzdHlsZT4KICAgICAgICAg
I215ZnJhbWUgeyBwb3NpdGlvbjogYWJzb2x1dGU7IGxlZnQ6IDIwMHB4OyB0b3A6IDEwMHB4OyB3
aWR0aDogNDAwcHg7IGhlaWdodDogMzAwcHg7fQpAQCAtMzksMTMgKzQxLDEyIEBACiAgICAgewog
ICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIgJiYgd2luZG93LmludGVybmFscyAmJiBpbnRl
cm5hbHMudG91Y2hOb2RlQWRqdXN0ZWRUb0Jlc3RDbGlja2FibGVOb2RlKSB7CiAgICAgICAgICAg
ICBkZXNjcmlwdGlvbignVGVzdCB0b3VjaC1hZGp1c3RtZW50IG9uIGxpbmtzIGluIGFuIGlmcmFt
ZS4gTWFraW5nIHN1cmUgd2UgaWZyYW1lIHBvc2l0aW9uIGlzIGNvcnJlY3RseSBhZGp1c3RlZCBm
b3IuJyk7Ci0gICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKLSAgICAgICAgICAg
IHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogICAgICAgICAgICAgdGVzdERpcmVjdFRvdWNo
ZXMoKTsKLSAgICAgICAgICAgIGlzU3VjY2Vzc2Z1bGx5UGFyc2VkKCk7Ci0gICAgICAgICAgICB0
ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwogICAg
ICAgICB9CiAgICAgfQorICAgIGpzVGVzdElzQXN5bmMgPSB0cnVlOwogPC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
IDwvYm9keT4KIDwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy90b3VjaGFkanVzdG1lbnQvbmVzdGVkLXNoYWRvdy1ub2RlLmh0bWwgYi9M
YXlvdXRUZXN0cy90b3VjaGFkanVzdG1lbnQvbmVzdGVkLXNoYWRvdy1ub2RlLmh0bWwKaW5kZXgg
ZWY1NGM5NDFjNzliNGJjMDFlOWU2MjU4MDMxZDA1NGZlOWM4NWU0Ny4uMzBiODJkNmM2NWNhYmQx
Yjk1Yzg5MzlmNGY4OGI1OThiZjc2MDE3OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvdG91Y2hh
ZGp1c3RtZW50L25lc3RlZC1zaGFkb3ctbm9kZS5odG1sCisrKyBiL0xheW91dFRlc3RzL3RvdWNo
YWRqdXN0bWVudC9uZXN0ZWQtc2hhZG93LW5vZGUuaHRtbApAQCAtMSwxOCArMSwyMCBAQAorPCFE
T0NUWVBFIGh0bWw+CiA8aHRtbD4KIDxoZWFkPgotPHN0eWxlPgotICAgICN0YXJnZXREaXYgewot
ICAgICAgICBiYWNrZ3JvdW5kOiAjMDBmOwotICAgICAgICBoZWlnaHQ6IDEwMHB4OwotICAgICAg
ICBwb3NpdGlvbjogcmVsYXRpdmU7Ci0gICAgICAgIHdpZHRoOiAxMDBweDsKLSAgICB9Ci08L3N0
eWxlPgotPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKyAgICA8dGl0bGU+VG91Y2ggQWRqdXN0bWVudCA6IFRvdWNoIGFkanVzdG1lbnQg
ZG9lcyBub3QgdGFyZ2V0IHNoYWRvdyBET00gZWxlbWVudHMgLSBidWcgODk1NTY8L3RpdGxlPgor
ICAgIDxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+CisgICAgPHN0eWxlPgorICAgICAgICAjdGFyZ2V0RGl2IHsKKyAgICAgICAgICAgIGJh
Y2tncm91bmQ6ICMwMGY7CisgICAgICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAgICAgICAgICAg
cG9zaXRpb246IHJlbGF0aXZlOworICAgICAgICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgICB9
CisgICAgPC9zdHlsZT4KIAogPC9oZWFkPgogCi08Ym9keSBvbmxvYWQ9InJ1blRlc3RzKCkiPgor
PGJvZHk+CiAKIDxkaXYgaWQ9InRhcmdldERpdiI+CiA8L2Rpdj4KQEAgLTkxLDEzICs5MywxMSBA
QAogICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIgJiYgd2luZG93LmludGVybmFscyAmJiBp
bnRlcm5hbHMudG91Y2hOb2RlQWRqdXN0ZWRUb0Jlc3RDbGlja2FibGVOb2RlICYmIGludGVybmFs
cy5lbnN1cmVTaGFkb3dSb290KSB7CiAgICAgICAgICAgICBkZXNjcmlwdGlvbignVGVzdCB0aGUg
Y2FzZSB3aGVyZSBhIGNsaWNrYWJsZSB0YXJnZXQgY29udGFpbnMgYSBzaGFkb3ctRE9NIGVsZW1l
bnQuICBUaGUgYWRqdXN0ZWQgcG9pbnQgc2hvdWxkIHNuYXAgdG8gdGhlIGxvY2F0aW9uIG9mIHRo
ZSBzaGFkb3ctRE9NIGVsZW1lbnQgaWYgY2xvc2UgZW5vdWdoIHRvIHRoZSBvcmlnaW5hbCB0b3Vj
aCBwb3NpdGlvbi4nKQogICAgICAgICAgICAgYWRkU2hhZG93RE9NKCk7Ci0gICAgICAgICAgICB0
ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKLSAgICAgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGls
RG9uZSgpOwogICAgICAgICAgICAgcnVuVG91Y2hUZXN0cygpOwotICAgICAgICAgICAgaXNTdWNj
ZXNzZnVsbHlQYXJzZWQoKTsKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwog
ICAgICAgICB9CiAgICAgfQorICAgIHJ1blRlc3RzKCk7CiA8L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5
PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50L25lc3Rl
ZC10b3VjaC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90b3VjaGFkanVzdG1lbnQvbmVzdGVk
LXRvdWNoLWV4cGVjdGVkLnR4dAppbmRleCA3M2Q3YzQwNWNjN2JlNmY5YWI2NzdlODlkZmI2NjVj
ZmQyZGE4YTU4Li5jOTNhZjJkOTg1MWQwOTUzODFlZTE0ZWViMDg3MTZmYzBkYThlYzE5IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy90b3VjaGFkanVzdG1lbnQvbmVzdGVkLXRvdWNoLWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy90b3VjaGFkanVzdG1lbnQvbmVzdGVkLXRvdWNoLWV4cGVj
dGVkLnR4dApAQCAtMSwxNyArMSwxNSBAQAotQm94IHdpdGggYSBsb2NhbCBjbGljayBoYW5kbGVy
LgotQm94IHdpdGhvdXQgYSBsb2NhbCBjbGljayBoYW5kbGVyLgogVGVzdCB0aGUgY2FzZSB3aGVy
ZSBhIGNsaWNrYWJsZSB0YXJnZXQgaXMgbmVzdGVkIGluc2lkZSBhIGRvY3VtZW50IHRoYXQgaXMg
bW9uaXRvcmluZyBjbGlja3MuIFRoZSB0YXJnZXQgd2l0aCB0aGUgbG9jYWwgZXZlbnQtaGFuZGxl
ciBzaG91bGQgYmUgY2hvc2VuIGlmIG11bHRpcGxlIHRhcmdldHMgYXJlIHRvdWNoZWQuCiAKIE9u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAogCiBUZXN0aW5nIHNtYWxsIGRpcmVjdCBoaXRzLgot
UEFTUyBhZGp1c3RlZE5vZGUuaWQgaXMgZWxlbWVudC5pZAotUEFTUyBhZGp1c3RlZE5vZGUuaWQg
aXMgZWxlbWVudC5pZAorUEFTUyBhZGp1c3RlZCBub2RlIHdhcyBESVYjbXlib3gxLgorUEFTUyBh
ZGp1c3RlZCBub2RlIHdhcyBESVYjbXlib3gyLgogVGVzdGluZyBwcmVmZXJlZCBoaXRzLgotUEFT
UyBhZGp1c3RlZE5vZGUuaWQgaXMgZWxlbWVudDEuaWQKLVBBU1MgYWRqdXN0ZWROb2RlLmlkIGlz
IGVsZW1lbnQxLmlkCi1QQVNTIGFkanVzdGVkTm9kZS5pZCBpcyBlbGVtZW50MS5pZAorUEFTUyBh
ZGp1c3RlZCBub2RlIHdhcyBESVYjbXlib3gxLgorUEFTUyBhZGp1c3RlZCBub2RlIHdhcyBESVYj
bXlib3gxLgorUEFTUyBhZGp1c3RlZCBub2RlIHdhcyBESVYjbXlib3gxLgogUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy90b3VjaGFkanVzdG1lbnQvbmVzdGVkLXRvdWNoLmh0bWwgYi9MYXlvdXRUZXN0cy90b3Vj
aGFkanVzdG1lbnQvbmVzdGVkLXRvdWNoLmh0bWwKaW5kZXggNGU1NzdmODVjMzgyZTk5NTZjY2U0
ZTFhMTMwNjQ0ZThkMGQ4MTE2Zi4uMjY0ZTg4N2E2OWViZmJhMDc0MmFhMmFhYmUzYjMxYWZjM2Y2
ZTE1NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50L25lc3RlZC10b3Vj
aC5odG1sCisrKyBiL0xheW91dFRlc3RzL3RvdWNoYWRqdXN0bWVudC9uZXN0ZWQtdG91Y2guaHRt
bApAQCAtMSwxMjAgKzEsOTUgQEAKKzwhRE9DVFlQRSBodG1sPgogPGh0bWw+CiA8aGVhZD4KLTxz
dHlsZT4KLSAgICAuYm94IHsgYm9yZGVyOiAxcHggc29saWQgYmxhY2s7IGJvcmRlci1yYWRpdXM6
IDVweCA1cHg7IG1hcmdpbjogMWVtOyBtYXgtd2lkdGg6IDQwZW07IH0KLTwvc3R5bGU+Ci08c2Ny
aXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgot
CisgICAgPHRpdGxlPlRvdWNoIEFkanVzdG1lbnQgOiBQcmVmZXIgZGVlcGVzdCBldmVudCBoYW5k
bGVyIC0gYnVnIDc4ODAxPC90aXRsZT4KKyAgICA8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvdG91Y2hhZGp1c3RtZW50LmpzIj48L3NjcmlwdD4KKyAgICA8c3R5bGU+CisgICAgICAgICNz
YW5kYm94IHsgfQorICAgICAgICAuYm94IHsgYm9yZGVyOiAxcHggc29saWQgYmxhY2s7IGJvcmRl
ci1yYWRpdXM6IDVweCA1cHg7IG1hcmdpbjogMTJweDsgbWF4LXdpZHRoOiA0MGVtOyB9CisgICAg
PC9zdHlsZT4KIDwvaGVhZD4KIAotPGJvZHkgb25sb2FkPSJydW5UZXN0cygpIj4KKzxib2R5Pgog
Ci08ZGl2IGNsYXNzPWJveCBpZD1teWJveDE+Ci1Cb3ggd2l0aCBhIGxvY2FsIGNsaWNrIGhhbmRs
ZXIuCi08L2Rpdj4KKzxkaXYgaWQ9c2FuZGJveD4KKyAgICA8ZGl2IGNsYXNzPWJveCBpZD1teWJv
eDE+CisgICAgQm94IHdpdGggYSBsb2NhbCBjbGljayBoYW5kbGVyLgorICAgIDwvZGl2PgogCi08
ZGl2IGNsYXNzPWJveCBpZD1teWJveDI+IAotQm94IHdpdGhvdXQgYSBsb2NhbCBjbGljayBoYW5k
bGVyLgorICAgIDxkaXYgY2xhc3M9Ym94IGlkPW15Ym94Mj4gCisgICAgQm94IHdpdGhvdXQgYSBs
b2NhbCBjbGljayBoYW5kbGVyLgorICAgIDwvZGl2PgogPC9kaXY+CiAKIDxzY3JpcHQ+Ci0gIGZ1
bmN0aW9uIG1vbml0b3IoZSkgeyBhbGVydChlLnRhcmdldCArKCBlLnRhcmdldC5pZCA/ICggJyAj
JyArIGUudGFyZ2V0LmlkKSA6ICcnKSk7IH07Ci0gIGZ1bmN0aW9uIGRvU29tZXRoaW5nKGUpIHt9
OworICAgIGZ1bmN0aW9uIG1vbml0b3IoZSkgeyBhbGVydChlLnRhcmdldCArKCBlLnRhcmdldC5p
ZCA/ICggJyAjJyArIGUudGFyZ2V0LmlkKSA6ICcnKSk7IH07CisgICAgZnVuY3Rpb24gZG9Tb21l
dGhpbmcoZSkge307CiAKLSAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
bXlib3gxJyk7Ci0gIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBkb1NvbWV0aGlu
ZywgZmFsc2UpOwotICBlbGVtZW50ID0gZG9jdW1lbnQuYm9keTsKLSAgZWxlbWVudC5hZGRFdmVu
dExpc3RlbmVyKCdjbGljaycsIG1vbml0b3IsIGZhbHNlKTsKKyAgICB2YXIgZWxlbWVudCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdteWJveDEnKTsKKyAgICBlbGVtZW50LmFkZEV2ZW50TGlz
dGVuZXIoJ2NsaWNrJywgZG9Tb21ldGhpbmcsIGZhbHNlKTsKKyAgICBlbGVtZW50ID0gZG9jdW1l
bnQuYm9keTsKKyAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgbW9uaXRvciwg
ZmFsc2UpOwogPC9zY3JpcHQ+CiAKLQogPHAgaWQ9J2Rlc2NyaXB0aW9uJz48L3A+CiA8ZGl2IGlk
PSdjb25zb2xlJz48L2Rpdj4KIAogPHNjcmlwdD4KLSAgICB2YXIgZWxlbWVudDsKLSAgICB2YXIg
YWRqdXN0ZWROb2RlOwotICAgIGZ1bmN0aW9uIGZpbmRBYnNvbHV0ZVBvc2l0aW9uKG5vZGUpIHsK
LSAgICAgICAgdmFyIHBvcyA9IG5ldyBPYmplY3QoKTsKLSAgICAgICAgcG9zLmxlZnQgPSAwOyBw
b3MudG9wID0gMDsKLSAgICAgICAgZG8gewotICAgICAgICAgICAgcG9zLmxlZnQgKz0gbm9kZS5v
ZmZzZXRMZWZ0OwotICAgICAgICAgICAgcG9zLnRvcCArPSBub2RlLm9mZnNldFRvcDsKLSAgICAg
ICAgfSB3aGlsZSAobm9kZSA9IG5vZGUub2Zmc2V0UGFyZW50KTsKLSAgICAgICAgcmV0dXJuIHBv
czsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiB0ZXN0RGlyZWN0VG91Y2goZWxlbWVudCkKLSAgICB7
Ci0gICAgICAgIHZhciBwb3MgPSBmaW5kQWJzb2x1dGVQb3NpdGlvbihlbGVtZW50KTsKLSAgICAg
ICAgdmFyIHggPSBwb3MubGVmdCArIGVsZW1lbnQuY2xpZW50V2lkdGggLyAyIC0gMTsKLSAgICAg
ICAgdmFyIHkgPSBwb3MudG9wICsgZWxlbWVudC5jbGllbnRIZWlnaHQgLyAyIC0gMTsKLSAgICAg
ICAgdmFyIHdpZHRoID0gMzsKLSAgICAgICAgdmFyIGhlaWdodCA9IDM7Ci0gICAgICAgIHZhciBh
ZGp1c3RlZE5vZGUgPSBpbnRlcm5hbHMudG91Y2hOb2RlQWRqdXN0ZWRUb0Jlc3RDbGlja2FibGVO
b2RlKHgsIHksIHdpZHRoLCBoZWlnaHQsIGRvY3VtZW50KTsKLSAgICAgICAgaWYgKGFkanVzdGVk
Tm9kZS5ub2RlVHlwZSA9PSAzKSAvLyBURVhUIG5vZGUKLSAgICAgICAgICAgIGFkanVzdGVkTm9k
ZSA9IGFkanVzdGVkTm9kZS5wYXJlbnROb2RlOwotICAgICAgICByZXR1cm4gYWRqdXN0ZWROb2Rl
OwotICAgIH0KKyAgICB2YXIgZSA9IHt9OworICAgIFsnc2FuZGJveCcsICdteWJveDEnLCAnbXli
b3gyJ10uZm9yRWFjaChmdW5jdGlvbihhKSB7CisgICAgICAgIGVbYV0gPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZChhKTsKKyAgICB9KTsKIAotICAgIGZ1bmN0aW9uIHRlc3REb3VibGVUb3VjaChl
bGVtZW50MSwgZWxlbWVudDIsIG9mZnNldCkKKyAgICBmdW5jdGlvbiB0b3VjaFBvaW50RG91Ymxl
VG91Y2goZWxlbWVudDEsIGVsZW1lbnQyLCBvZmZzZXQpCiAgICAgewotICAgICAgICB2YXIgcG9z
MSA9IGZpbmRBYnNvbHV0ZVBvc2l0aW9uKGVsZW1lbnQxKTsKLSAgICAgICAgdmFyIHBvczIgPSBm
aW5kQWJzb2x1dGVQb3NpdGlvbihlbGVtZW50Mik7CisgICAgICAgIHZhciBib3VuZHMxID0gZmlu
ZEFic29sdXRlQm91bmRzKGVsZW1lbnQxKTsKKyAgICAgICAgdmFyIGJvdW5kczIgPSBmaW5kQWJz
b2x1dGVCb3VuZHMoZWxlbWVudDIpOworICAgICAgICB2YXIgYm91bmRzID0gbmV3IE9iamVjdCgp
OwogICAgICAgICAvLyBXZSBhc3N1bWUgdGhlIGVsZW1lbnRzIGhhdmUgdGhlIHNhbWUgeCBjb29y
ZCBhbmQgd2lkdGguCi0gICAgICAgIHZhciB4ID0gcG9zMS5sZWZ0ICsgZWxlbWVudDEuY2xpZW50
V2lkdGgvMiAtIDE7Ci0gICAgICAgIHZhciB5MSA9IHBvczEudG9wICsgZWxlbWVudDEuY2xpZW50
SGVpZ2h0LzIgKyAxOwotICAgICAgICB2YXIgeTIgPSBwb3MyLnRvcCArIGVsZW1lbnQyLmNsaWVu
dEhlaWdodC8yIC0gMTsKLSAgICAgICAgdmFyIHdpZHRoID0geTIgLSB5MTsKLSAgICAgICAgdmFy
IGhlaWdodCA9IHkyIC0geTE7Ci0gICAgICAgIHZhciBhZGp1c3RlZE5vZGUgPSBpbnRlcm5hbHMu
dG91Y2hOb2RlQWRqdXN0ZWRUb0Jlc3RDbGlja2FibGVOb2RlKHgsIHkxLCB3aWR0aCwgaGVpZ2h0
LCBkb2N1bWVudCk7Ci0gICAgICAgIGlmIChhZGp1c3RlZE5vZGUubm9kZVR5cGUgPT0gMykgLy8g
VEVYVCBub2RlCi0gICAgICAgICAgICBhZGp1c3RlZE5vZGUgPSBhZGp1c3RlZE5vZGUucGFyZW50
Tm9kZTsKLSAgICAgICAgcmV0dXJuIGFkanVzdGVkTm9kZTsKKyAgICAgICAgYm91bmRzLmxlZnQg
PSBib3VuZHMxLmxlZnQgKyBib3VuZHMxLndpZHRoLzIgLSAxOworICAgICAgICB2YXIgeTEgPSBi
b3VuZHMxLnRvcCArIGJvdW5kczEuaGVpZ2h0LzIgKyBvZmZzZXQ7CisgICAgICAgIHZhciB5MiA9
IGJvdW5kczIudG9wICsgYm91bmRzMi5oZWlnaHQvMiAtIDE7CisgICAgICAgIGJvdW5kcy50b3Ag
PSB5MTsKKyAgICAgICAgYm91bmRzLndpZHRoID0geTIgLSB5MTsKKyAgICAgICAgYm91bmRzLmhl
aWdodCA9IHkyIC0geTE7CisgICAgICAgIHJldHVybiBib3VuZHM7CiAgICAgfQogCiAgICAgZnVu
Y3Rpb24gdGVzdERpcmVjdFRvdWNoZXMoKQogICAgIHsKICAgICAgICAgZGVidWcoJ1Rlc3Rpbmcg
c21hbGwgZGlyZWN0IGhpdHMuJyk7CiAKLSAgICAgICAgZWxlbWVudCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdteWJveDEnKTsKLSAgICAgICAgYWRqdXN0ZWROb2RlID0gdGVzdERpcmVjdFRv
dWNoKGVsZW1lbnQpOwotICAgICAgICBzaG91bGRCZSgnYWRqdXN0ZWROb2RlLmlkJywgJ2VsZW1l
bnQuaWQnKTsKKyAgICAgICAgdmFyIHRvdWNocG9pbnQgPSBvZmZzZXRUb3VjaFBvaW50KGZpbmRB
YnNvbHV0ZUJvdW5kcyhlLm15Ym94MSksICdjZW50ZXInLCAwLCAyKTsKKyAgICAgICAgdGVzdFRv
dWNoUG9pbnQodG91Y2hwb2ludCwgZS5teWJveDEpOwogCi0gICAgICAgIGVsZW1lbnQgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnbXlib3gyJyk7Ci0gICAgICAgIGFkanVzdGVkTm9kZSA9IHRl
c3REaXJlY3RUb3VjaChlbGVtZW50KTsKLSAgICAgICAgc2hvdWxkQmUoJ2FkanVzdGVkTm9kZS5p
ZCcsICdlbGVtZW50LmlkJyk7CisgICAgICAgIHRvdWNocG9pbnQgPSBvZmZzZXRUb3VjaFBvaW50
KGZpbmRBYnNvbHV0ZUJvdW5kcyhlLm15Ym94MiksICdjZW50ZXInLCAwLCAyKTsKKyAgICAgICAg
dGVzdFRvdWNoUG9pbnQodG91Y2hwb2ludCwgZS5teWJveDIpOwogICAgIH0KIAogICAgIGZ1bmN0
aW9uIHRlc3RQcmVmZXJlZFRvdWNoKCkKICAgICB7CiAgICAgICAgIGRlYnVnKCdUZXN0aW5nIHBy
ZWZlcmVkIGhpdHMuJyk7CiAKLSAgICAgICAgZWxlbWVudDEgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnbXlib3gxJyk7Ci0gICAgICAgIGVsZW1lbnQyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ215Ym94MicpOwotICAgICAgICBhZGp1c3RlZE5vZGUgPSB0ZXN0RG91YmxlVG91Y2goZWxl
bWVudDEsIGVsZW1lbnQyLCAwKTsKLSAgICAgICAgc2hvdWxkQmUoJ2FkanVzdGVkTm9kZS5pZCcs
ICdlbGVtZW50MS5pZCcpOworICAgICAgICB0ZXN0VG91Y2hQb2ludCh0b3VjaFBvaW50RG91Ymxl
VG91Y2goZS5teWJveDEsIGUubXlib3gyLCAwKSwgZS5teWJveDEpOwogCiAgICAgICAgIC8vIEZp
cnN0IHRlc3Qgd2FzIGNlbnRlcmVkLCBub3cgbW92ZSB0aGUgdGVzdCBjbG9zZXIgdG8gdGhlIHdy
b25nIG5vZGUsIGFuZCBlbnN1cmUgd2Ugc3RpbGwgZ2V0IHRoZSBwcmVmZXJlZCBub2RlLgotICAg
ICAgICBhZGp1c3RlZE5vZGUgPSB0ZXN0RG91YmxlVG91Y2goZWxlbWVudDEsIGVsZW1lbnQyLCA1
KTsKLSAgICAgICAgc2hvdWxkQmUoJ2FkanVzdGVkTm9kZS5pZCcsICdlbGVtZW50MS5pZCcpOwor
ICAgICAgICB0ZXN0VG91Y2hQb2ludCh0b3VjaFBvaW50RG91YmxlVG91Y2goZS5teWJveDEsIGUu
bXlib3gyLCA1KSwgZS5teWJveDEpOwogCi0gICAgICAgIGFkanVzdGVkTm9kZSA9IHRlc3REb3Vi
bGVUb3VjaChlbGVtZW50MSwgZWxlbWVudDIsIDEwKTsKLSAgICAgICAgc2hvdWxkQmUoJ2FkanVz
dGVkTm9kZS5pZCcsICdlbGVtZW50MS5pZCcpOworICAgICAgICB0ZXN0VG91Y2hQb2ludCh0b3Vj
aFBvaW50RG91YmxlVG91Y2goZS5teWJveDEsIGUubXlib3gyLCAxMCksIGUubXlib3gxKTsKICAg
ICB9CiAKICAgICBmdW5jdGlvbiBydW5UZXN0cygpCiAgICAgewogICAgICAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIgJiYgd2luZG93LmludGVybmFscyAmJiBpbnRlcm5hbHMudG91Y2hOb2RlQWRq
dXN0ZWRUb0Jlc3RDbGlja2FibGVOb2RlKSB7CiAgICAgICAgICAgICBkZXNjcmlwdGlvbignVGVz
dCB0aGUgY2FzZSB3aGVyZSBhIGNsaWNrYWJsZSB0YXJnZXQgaXMgbmVzdGVkIGluc2lkZSBhIGRv
Y3VtZW50IHRoYXQgaXMgbW9uaXRvcmluZyBjbGlja3MuIFRoZSB0YXJnZXQgd2l0aCB0aGUgbG9j
YWwgZXZlbnQtaGFuZGxlciBzaG91bGQgYmUgY2hvc2VuIGlmIG11bHRpcGxlIHRhcmdldHMgYXJl
IHRvdWNoZWQuJyk7Ci0gICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKLSAgICAg
ICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogICAgICAgICAgICAgdGVzdERpcmVj
dFRvdWNoZXMoKTsKICAgICAgICAgICAgIHRlc3RQcmVmZXJlZFRvdWNoKCk7Ci0gICAgICAgICAg
ICBpc1N1Y2Nlc3NmdWxseVBhcnNlZCgpOwotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlE
b25lKCk7CisgICAgICAgICAgICBlWydzYW5kYm94J10uc3R5bGUuZGlzcGxheSA9ICdub25lJzsK
ICAgICAgICAgfQogICAgIH0KKyAgICBydW5UZXN0cygpOwogPC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9k
eT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RvdWNoYWRqdXN0bWVudC9yZXNv
dXJjZXMvaW5uZXItZnJhbWUuaHRtbCBiL0xheW91dFRlc3RzL3RvdWNoYWRqdXN0bWVudC9yZXNv
dXJjZXMvaW5uZXItZnJhbWUuaHRtbAppbmRleCBmMzEyMTVhZGUwZTY5ZGU1YmU1ZDExYzBjYTdh
ZTVhOTNhNmM1Y2U5Li44NzI0YTdlMTkwZjk1OWNjZjIxNDdmOTViYzExZTViMTYxNmQzZjgyIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy90b3VjaGFkanVzdG1lbnQvcmVzb3VyY2VzL2lubmVyLWZy
YW1lLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50L3Jlc291cmNlcy9pbm5l
ci1mcmFtZS5odG1sCkBAIC0xLDMgKzEsNCBAQAorPCFET0NUWVBFIGh0bWw+CiA8aHRtbD4KIDxo
ZWFkPgogICAgIDxzdHlsZT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RvdWNoYWRqdXN0bWVu
dC9yZXNvdXJjZXMvdG91Y2hhZGp1c3RtZW50LmpzIGIvTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3Rt
ZW50L3Jlc291cmNlcy90b3VjaGFkanVzdG1lbnQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGZhZmZhYWMwNWRk
Y2U0MmY5MGEzY2Y0OWVkOGEyYjg2ZWNiNGYwYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3RvdWNoYWRqdXN0bWVudC9yZXNvdXJjZXMvdG91Y2hhZGp1c3RtZW50LmpzCkBAIC0wLDAg
KzEsMTAzIEBACisvKiBmdW5jdGlvbiBmb3IgZmluZGluZyB0aGUgYWJzb2x1dGUgYm91bmRzIG9m
IGEgbm9kZSAqLworZnVuY3Rpb24gZmluZEFic29sdXRlQm91bmRzKG5vZGUpCit7CisgICAgdmFy
IGJvdW5kcyA9IHtsZWZ0OiAwLCB0b3A6IDB9OworICAgIGJvdW5kcy53aWR0aCA9IG5vZGUuY2xp
ZW50V2lkdGg7CisgICAgYm91bmRzLmhlaWdodCA9IG5vZGUuY2xpZW50SGVpZ2h0OworICAgIGRv
IHsKKyAgICAgICAgYm91bmRzLmxlZnQgKz0gbm9kZS5vZmZzZXRMZWZ0OworICAgICAgICBib3Vu
ZHMudG9wICs9IG5vZGUub2Zmc2V0VG9wOworICAgIH0gd2hpbGUgKG5vZGUgPSBub2RlLm9mZnNl
dFBhcmVudCk7CisgICAgcmV0dXJuIGJvdW5kczsKK30KKworZnVuY3Rpb24gbm9kZVRvU3RyaW5n
KG5vZGUpCit7CisgICAgaWYgKG5vZGUgPT09IHVuZGVmaW5lZCkKKyAgICAgICAgcmV0dXJuICd1
bmRlZmluZWQnOworICAgIGlmIChub2RlID09PSBudWxsKQorICAgICAgICByZXR1cm4gJ251bGwn
OworICAgIGlmICghbm9kZS5ub2RlTmFtZSkKKyAgICAgICAgcmV0dXJuICdub3QgYSBub2RlJzsK
KyAgICByZXR1cm4gbm9kZS5ub2RlTmFtZSArIChub2RlLmlkID8gKCcjJyArIG5vZGUuaWQpIDog
JycpOworfQorCitmdW5jdGlvbiB0ZXN0VG91Y2hQb2ludCh0b3VjaHBvaW50LCB0YXJnZXROb2Rl
KQoreworICAgIHZhciBhZGp1c3RlZE5vZGUgPSBpbnRlcm5hbHMudG91Y2hOb2RlQWRqdXN0ZWRU
b0Jlc3RDbGlja2FibGVOb2RlKHRvdWNocG9pbnQubGVmdCwgdG91Y2hwb2ludC50b3AsIHRvdWNo
cG9pbnQud2lkdGgsIHRvdWNocG9pbnQuaGVpZ2h0LCBkb2N1bWVudCk7CisgICAgaWYgKGFkanVz
dGVkTm9kZSAmJiBhZGp1c3RlZE5vZGUubm9kZVR5cGUgPT0gMykgLy8gVEVYVCBub2RlCisgICAg
ICAgIGFkanVzdGVkTm9kZSA9IGFkanVzdGVkTm9kZS5wYXJlbnROb2RlOworICAgIGlmICh0YXJn
ZXROb2RlID09IGFkanVzdGVkTm9kZSkgeworICAgICAgICB0ZXN0UGFzc2VkKCJhZGp1c3RlZCBu
b2RlIHdhcyAiICsgbm9kZVRvU3RyaW5nKHRhcmdldE5vZGUpICsgIi4iKTsKKyAgICB9CisgICAg
ZWxzZSB7CisgICAgICAgIHRlc3RGYWlsZWQoImFkanVzdGVkIG5vZGUgc2hvdWxkIGJlICIgKyBu
b2RlVG9TdHJpbmcodGFyZ2V0Tm9kZSkgICsgIi4gV2FzICIgKyBub2RlVG9TdHJpbmcoYWRqdXN0
ZWROb2RlKSArICIuIik7CisgICAgfQorfQorCitmdW5jdGlvbiB0b3VjaFBvaW50KHgsIHksIHJh
ZGl1c1gsIHJhZGl1c1kpCit7CisgICAgaWYgKCFyYWRpdXNZKQorICAgICAgICByYWRpdXNZID0g
cmFkaXVzWDsKKyAgICB2YXIgdG91Y2hwb2ludCA9IG5ldyBPYmplY3QoKTsKKyAgICB0b3VjaHBv
aW50LmxlZnQgPSB4IC0gcmFkaXVzWDsKKyAgICB0b3VjaHBvaW50LnRvcCA9IHkgLSByYWRpdXNZ
OworICAgIHRvdWNocG9pbnQud2lkdGggPSByYWRpdXNYICogMjsKKyAgICB0b3VjaHBvaW50Lmhl
aWdodCA9IHJhZGl1c1kgKiAyOworICAgIHJldHVybiB0b3VjaHBvaW50OworfQorCitmdW5jdGlv
biBvZmZzZXRUb3VjaFBvaW50KGJvdW5kcywgcmVsYXRpdmVQb3NpdGlvbiwgdG91Y2hPZmZzZXQs
IHRvdWNoUmFkaXVzWCwgdG91Y2hSYWRpdXNZKQoreworICAgIGlmICghdG91Y2hSYWRpdXNZKQor
ICAgICAgICB0b3VjaFJhZGl1c1kgPSB0b3VjaFJhZGl1c1g7CisKKyAgICB2YXIgdG91Y2hwb2lu
dCA9IHtsZWZ0IDogYm91bmRzLmxlZnQsIHRvcDogYm91bmRzLnRvcCB9OworIAorICAgIC8vIFNl
dCBjZW50ZXIgcG9pbnQgZm9yIHRvdWNoLgorICAgIHN3aXRjaCAocmVsYXRpdmVQb3NpdGlvbikg
eworICAgIGNhc2UgJ2NlbnRlcic6CisgICAgICAgIHRvdWNocG9pbnQubGVmdCArPSBib3VuZHMu
d2lkdGggLyAyOworICAgICAgICB0b3VjaHBvaW50LnRvcCArPSBib3VuZHMuaGVpZ2h0IC8gMjsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAnbGVmdCc6CisgICAgICAgIHRvdWNocG9pbnQubGVm
dCAtPSB0b3VjaE9mZnNldDsKKyAgICAgICAgdG91Y2hwb2ludC50b3AgKz0gYm91bmRzLmhlaWdo
dCAvIDI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgJ3JpZ2h0JzoKKyAgICAgICAgdG91Y2hw
b2ludC5sZWZ0ICs9IGJvdW5kcy53aWR0aCArIHRvdWNoT2Zmc2V0OworICAgICAgICB0b3VjaHBv
aW50LnRvcCArPSAgYm91bmRzLmhlaWdodCAvIDI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
J3RvcC1sZWZ0JzoKKyAgICAgICAgdG91Y2hwb2ludC5sZWZ0IC09IHRvdWNoT2Zmc2V0OworICAg
ICAgICB0b3VjaHBvaW50LnRvcCAtPSB0b3VjaE9mZnNldDsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSAndG9wLXJpZ2h0JzoKKyAgICAgICAgdG91Y2hwb2ludC5sZWZ0ICs9IGJvdW5kcy53aWR0
aCArIHRvdWNoT2Zmc2V0OworICAgICAgICB0b3VjaHBvaW50LnRvcCAtPSB0b3VjaE9mZnNldDsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAnYm90dG9tLWxlZnQnOgorICAgICAgICB0b3VjaHBv
aW50LmxlZnQgLT0gdG91Y2hPZmZzZXQ7CisgICAgICAgIHRvdWNocG9pbnQudG9wICs9IGJvdW5k
cy5oZWlnaHQgKyB0b3VjaE9mZnNldDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAnYm90dG9t
LXJpZ2h0JzoKKyAgICAgICAgdG91Y2hwb2ludC5sZWZ0ICs9IGJvdW5kcy53aWR0aCArIHRvdWNo
T2Zmc2V0OworICAgICAgICB0b3VjaHBvaW50LnRvcCArPSBib3VuZHMuaGVpZ2h0ICsgdG91Y2hP
ZmZzZXQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgJ3RvcCc6CisgICAgICAgIHRvdWNocG9p
bnQubGVmdCArPSBib3VuZHMud2lkdGggLyAyOworICAgICAgICB0b3VjaHBvaW50LnRvcCAtPSB0
b3VjaE9mZnNldDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAnYm90dG9tJzoKKyAgICAgICAg
dG91Y2hwb2ludC5sZWZ0ICs9IGJvdW5kcy53aWR0aCAvIDI7CisgICAgICAgIHRvdWNocG9pbnQu
dG9wICs9IGJvdW5kcy5oZWlnaHQgKyB0b3VjaE9mZnNldDsKKyAgICB9CisgICAgLy8gQWRqdXN0
IGZyb20gdG91Y2ggY2VudGVyIHRvIHRvcC1sZWZ0IGNvcm5lci4KKyAgICB0b3VjaHBvaW50Lmxl
ZnQgLT0gdG91Y2hSYWRpdXNYOworICAgIHRvdWNocG9pbnQudG9wIC09IHRvdWNoUmFkaXVzWTsK
KworICAgIHRvdWNocG9pbnQud2lkdGggPSAyICogdG91Y2hSYWRpdXNYOworICAgIHRvdWNocG9p
bnQuaGVpZ2h0ID0gMiAqIHRvdWNoUmFkaXVzWTsKKworICAgIHJldHVybiB0b3VjaHBvaW50Owor
fQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50L3JvdGF0ZWQtbm9kZS1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90b3VjaGFkanVzdG1lbnQvcm90YXRlZC1ub2RlLWV4
cGVjdGVkLnR4dAppbmRleCA5NmEyOTQyN2RkNTM3N2ExZTJjYjM5MmQzOTA5ZWYyMDMxZTczZDM2
Li5mMDM1Y2I3YjY0MGM5MWU5YzQ5YWNhOTFjZTEzYjlmNGZmZjExY2QyIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy90b3VjaGFkanVzdG1lbnQvcm90YXRlZC1ub2RlLWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy90b3VjaGFkanVzdG1lbnQvcm90YXRlZC1ub2RlLWV4cGVjdGVkLnR4dApA
QCAtNCwyMiArNCwyMiBAQCBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURQogCiAKIERpcmVjdCBUb3Vj
aGVzCi1QQVNTIGFkanVzdGVkTm9kZS5pZCBpcyAicm90YXRlZERpdiIKLVBBU1MgYWRqdXN0ZWRO
b2RlLmlkIGlzICJyb3RhdGVkRGl2IgotUEFTUyBhZGp1c3RlZE5vZGUuaWQgaXMgInJvdGF0ZWRE
aXYiCi1QQVNTIGFkanVzdGVkTm9kZS5pZCBpcyAicm90YXRlZERpdiIKLVBBU1MgYWRqdXN0ZWRO
b2RlLmlkIGlzICJyb3RhdGVkRGl2IgotUEFTUyBhZGp1c3RlZE5vZGUuaWQgaXMgImNvbnRhaW5l
ckRpdiIKLVBBU1MgYWRqdXN0ZWROb2RlLmlkIGlzICJjb250YWluZXJEaXYiCi1QQVNTIGFkanVz
dGVkTm9kZS5pZCBpcyAiY29udGFpbmVyRGl2IgorUEFTUyBhZGp1c3RlZCBub2RlIHdhcyBESVYj
cm90YXRlZC4KK1BBU1MgYWRqdXN0ZWQgbm9kZSB3YXMgRElWI3JvdGF0ZWQuCitQQVNTIGFkanVz
dGVkIG5vZGUgd2FzIERJViNyb3RhdGVkLgorUEFTUyBhZGp1c3RlZCBub2RlIHdhcyBESVYjcm90
YXRlZC4KK1BBU1MgYWRqdXN0ZWQgbm9kZSB3YXMgRElWI3JvdGF0ZWQuCitQQVNTIGFkanVzdGVk
IG5vZGUgd2FzIERJViNjb250YWluZXIuCitQQVNTIGFkanVzdGVkIG5vZGUgd2FzIERJViNjb250
YWluZXIuCitQQVNTIGFkanVzdGVkIG5vZGUgd2FzIERJViNjb250YWluZXIuCiAKIEFkanVzdGVk
IFRvdWNoZXMKLVBBU1MgYWRqdXN0ZWROb2RlLmlkIGlzICJyb3RhdGVkRGl2IgotUEFTUyBhZGp1
c3RlZE5vZGUuaWQgaXMgInJvdGF0ZWREaXYiCitQQVNTIGFkanVzdGVkIG5vZGUgd2FzIERJViNy
b3RhdGVkLgorUEFTUyBhZGp1c3RlZCBub2RlIHdhcyBESVYjcm90YXRlZC4KIAogTmVhciBNaXNz
ZXMKLVBBU1MgYWRqdXN0ZWROb2RlLmlkIGlzICJjb250YWluZXJEaXYiCi1QQVNTIGFkanVzdGVk
Tm9kZS5pZCBpcyAiY29udGFpbmVyRGl2IgorUEFTUyBhZGp1c3RlZCBub2RlIHdhcyBESVYjY29u
dGFpbmVyLgorUEFTUyBhZGp1c3RlZCBub2RlIHdhcyBESVYjY29udGFpbmVyLgogUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy90b3VjaGFkanVzdG1lbnQvcm90YXRlZC1ub2RlLmh0bWwgYi9MYXlvdXRUZXN0cy90
b3VjaGFkanVzdG1lbnQvcm90YXRlZC1ub2RlLmh0bWwKaW5kZXggMDYxOTljYTZkNzRiYjk2Mzk3
OGY5YThmOWVlMDZiN2M0YTM0MDE1Yy4uMzQwMTYzNzVjNjMyYjhlODEwOTBmZTI3MDlhNjBiMmFj
NWRkZDYzMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50L3JvdGF0ZWQt
bm9kZS5odG1sCisrKyBiL0xheW91dFRlc3RzL3RvdWNoYWRqdXN0bWVudC9yb3RhdGVkLW5vZGUu
aHRtbApAQCAtMSwxMDAgKzEsNjEgQEAKKzwhRE9DVFlQRSBodG1sPgogPGh0bWw+CiA8aGVhZD4K
LTxzdHlsZT4KLSAgICAjY29udGFpbmVyRGl2IHsKLSAgICAgICAgLXdlYmtpdC1ib3gtc2l6aW5n
OiBib3JkZXItYm94OwotICAgICAgICBib3JkZXI6IDFweCBzb2xpZCBibGFjazsKLSAgICAgICAg
aGVpZ2h0OiAxMDBweDsKLSAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwotICAgICAgICB3aWR0
aDogMTAwcHg7Ci0gICAgfQotICAgICNyb3RhdGVkRGl2IHsKLSAgICAgIC13ZWJraXQtYm94LXNp
emluZzogYm9yZGVyLWJveDsKLSAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcp
OwotICAgICAgYm9yZGVyOiAxcHggc29saWQgYmxhY2s7Ci0gICAgICBoZWlnaHQ6IDQwcHg7Ci0g
ICAgICBsZWZ0OiAxMHB4OwotICAgICAgcG9zaXRpb246IGFic29sdXRlOwotICAgICAgdG9wOiAx
MHB4OwotICAgICAgd2lkdGg6IDQwcHg7Ci0gICAgfQotCi0gICAgI3Rlc3REaXYgewotICAgICAg
LXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94OwotICAgICAgYm9yZGVyOiAxcHggc29saWQg
YmxhY2s7Ci0gICAgICBoZWlnaHQ6IDQwcHg7Ci0gICAgICBsZWZ0OiA1MHB4OwotICAgICAgcG9z
aXRpb246IGFic29sdXRlOwotICAgICAgdG9wOiA0MHB4OwotICAgICAgd2lkdGg6IDQwcHg7Ci0g
ICAgfQotCi08L3N0eWxlPgotPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKyAgICA8dGl0bGU+VGVzdCB0b3VjaCBhZGp1c3RtZW50IHRv
IGEgbm9uLXJlY3RpbGluZWFyIGVsZW1lbnQuPC90aXRsZT4KKyAgICA8c2NyaXB0IHNyYz0iLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvdG91Y2hhZGp1c3RtZW50LmpzIj48L3NjcmlwdD4KKyAgICA8c3R5bGU+
CisgICAgICAgIGJvZHkgeyBtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyB9CisgICAgICAgICNj
b250YWluZXIgeworICAgICAgICAgICAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94Owor
ICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgICAgICAgICAgYm9yZGVyOiAxcHgg
c29saWQgYmxhY2s7CisgICAgICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAgICAgICAgICAgd2lk
dGg6IDEwMHB4OworICAgICAgICB9CisgICAgICAgICNyb3RhdGVkIHsKKyAgICAgICAgICAgIC13
ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDsKKyAgICAgICAgICAgIC13ZWJraXQtdHJhbnNm
b3JtOiByb3RhdGUoNDVkZWcpOworICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgYmxhY2s7
CisgICAgICAgICAgICBoZWlnaHQ6IDQwcHg7CisgICAgICAgICAgICBsZWZ0OiAxMHB4OworICAg
ICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOworICAgICAgICAgICAgdG9wOiAxMHB4OworICAg
ICAgICAgICAgd2lkdGg6IDQwcHg7CisgICAgICAgIH0KKyAgICA8L3N0eWxlPgogCiA8L2hlYWQ+
CiAKLTxib2R5IG9ubG9hZD0icnVuVGVzdHMoKSI+Cis8Ym9keT4KIAotPGRpdiBpZD0iY29udGFp
bmVyRGl2Ij4KLSAgPGRpdiBpZD0icm90YXRlZERpdiI+PC9kaXY+Ci0gIDwhLS0gPGRpdiBpZD0i
dGVzdERpdiI+PC9kaXY+IC0tPgorPGRpdiBpZD0iY29udGFpbmVyIj4KKyAgICA8ZGl2IGlkPSJy
b3RhdGVkIj48L2Rpdj4KIDwvZGl2PgogCiA8cCBpZD0nZGVzY3JpcHRpb24nPjwvcD4KIDxkaXYg
aWQ9J2NvbnNvbGUnPjwvZGl2PgogCiA8c2NyaXB0PgotICAgIHZhciBhZGp1c3RlZE5vZGU7Ci0g
ICAgdmFyIGFkanVzdGVkUG9pbnQ7Ci0KLSAgICBmdW5jdGlvbiBub2RlQXRUb3VjaCh4LCB5LCBy
YWRpdXMpCi0gICAgewotICAgICAgICB2YXIgdG91Y2hBcmVhID0gZ2V0VG91Y2hBcmVhKHgsIHks
IHJhZGl1cyk7Ci0gICAgICAgIGFkanVzdGVkTm9kZSA9IGludGVybmFscy50b3VjaE5vZGVBZGp1
c3RlZFRvQmVzdENsaWNrYWJsZU5vZGUodG91Y2hBcmVhLngsIHRvdWNoQXJlYS55LCB0b3VjaEFy
ZWEud2lkdGgsIHRvdWNoQXJlYS5oZWlnaHQsIGRvY3VtZW50KTsKLSAgICB9Ci0KLSAgICBmdW5j
dGlvbiBnZXRUb3VjaEFyZWEoeCwgeSwgcmFkaXVzKSB7Ci0gICAgICAgIHZhciBub2RlID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRhaW5lckRpdicpOwotICAgICAgICB2YXIgcG9zID0g
ZmluZEFic29sdXRlUG9zaXRpb24obm9kZSk7Ci0gICAgICAgIHJldHVybiB7Ci0gICAgICAgICAg
ICB4OiBwb3MubGVmdCArIHggLSByYWRpdXMsCi0gICAgICAgICAgICB5OiBwb3MudG9wICsgeSAt
IHJhZGl1cywKLSAgICAgICAgICAgIHdpZHRoOiAyICogcmFkaXVzLAotICAgICAgICAgICAgaGVp
Z2h0OiAyICogcmFkaXVzCi0gICAgICAgIH07Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gZmluZEFi
c29sdXRlUG9zaXRpb24obm9kZSkgewotICAgICAgICB2YXIgcG9zID0ge2xlZnQ6IDAsIHRvcDog
MH07Ci0gICAgICAgIGRvIHsKLSAgICAgICAgICAgIHBvcy5sZWZ0ICs9IG5vZGUub2Zmc2V0TGVm
dDsKLSAgICAgICAgICAgIHBvcy50b3AgKz0gbm9kZS5vZmZzZXRUb3A7Ci0gICAgICAgIH0gd2hp
bGUgKG5vZGUgPSBub2RlLm9mZnNldFBhcmVudCk7Ci0gICAgICAgIHJldHVybiBwb3M7Ci0gICAg
fQorICAgIC8vIFNldCB1cCBzaG9ydGN1dCBhY2Nlc3MgdG8gZWxlbWVudHMKKyAgICB2YXIgZSA9
IHt9OworICAgIFsnY29udGFpbmVyJywgJ3JvdGF0ZWQnXS5mb3JFYWNoKGZ1bmN0aW9uKGEpIHsK
KyAgICAgICAgZVthXSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGEpOworICAgIH0pOwogCiAg
ICAgZnVuY3Rpb24gdGVzdERpcmVjdFRvdWNoZXMoKQogICAgIHsKICAgICAgICAgZGVidWcoJ0Rp
cmVjdCBUb3VjaGVzJyk7Ci0KLSAgICAgICAgbm9kZUF0VG91Y2goMzAsIDMwLCAyMCk7Ci0gICAg
ICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnYWRqdXN0ZWROb2RlLmlkJywgJ3JvdGF0ZWREaXYn
KTsKLSAgICAgICAgbm9kZUF0VG91Y2goMjAsIDMwLCAyMCk7Ci0gICAgICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygnYWRqdXN0ZWROb2RlLmlkJywgJ3JvdGF0ZWREaXYnKTsKLSAgICAgICAgbm9k
ZUF0VG91Y2goNDAsIDMwLCAyMCk7Ci0gICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnYWRq
dXN0ZWROb2RlLmlkJywgJ3JvdGF0ZWREaXYnKTsKLSAgICAgICAgbm9kZUF0VG91Y2goMzAsIDIw
LCAyMCk7Ci0gICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnYWRqdXN0ZWROb2RlLmlkJywg
J3JvdGF0ZWREaXYnKTsKLSAgICAgICAgbm9kZUF0VG91Y2goMzAsIDQwLCAyMCk7Ci0gICAgICAg
IHNob3VsZEJlRXF1YWxUb1N0cmluZygnYWRqdXN0ZWROb2RlLmlkJywgJ3JvdGF0ZWREaXYnKTsK
LQotICAgICAgICBub2RlQXRUb3VjaCg4MCwgODAsIDIwKTsKLSAgICAgICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCdhZGp1c3RlZE5vZGUuaWQnLCAnY29udGFpbmVyRGl2Jyk7Ci0gICAgICAgIG5v
ZGVBdFRvdWNoKDgwLCAyMCwgMjApOwotICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2Fk
anVzdGVkTm9kZS5pZCcsICdjb250YWluZXJEaXYnKTsKLSAgICAgICAgbm9kZUF0VG91Y2goMjAs
IDgwLCAyMCk7Ci0gICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnYWRqdXN0ZWROb2RlLmlk
JywgJ2NvbnRhaW5lckRpdicpOworICAgICAgICAKKyAgICAgICAgdGVzdFRvdWNoUG9pbnQodG91
Y2hQb2ludCgzMCwgMzAsIDIwKSwgZS5yb3RhdGVkKTsKKyAgICAgICAgdGVzdFRvdWNoUG9pbnQo
dG91Y2hQb2ludCgyMCwgMzAsIDIwKSwgZS5yb3RhdGVkKTsKKyAgICAgICAgdGVzdFRvdWNoUG9p
bnQodG91Y2hQb2ludCg0MCwgMzAsIDIwKSwgZS5yb3RhdGVkKTsKKyAgICAgICAgdGVzdFRvdWNo
UG9pbnQodG91Y2hQb2ludCgzMCwgMjAsIDIwKSwgZS5yb3RhdGVkKTsKKyAgICAgICAgdGVzdFRv
dWNoUG9pbnQodG91Y2hQb2ludCgzMCwgNDAsIDIwKSwgZS5yb3RhdGVkKTsKKworICAgICAgICB0
ZXN0VG91Y2hQb2ludCh0b3VjaFBvaW50KDgwLCA4MCwgMjApLCBlLmNvbnRhaW5lcik7CisgICAg
ICAgIHRlc3RUb3VjaFBvaW50KHRvdWNoUG9pbnQoODAsIDIwLCAyMCksIGUuY29udGFpbmVyKTsK
KyAgICAgICAgdGVzdFRvdWNoUG9pbnQodG91Y2hQb2ludCgyMCwgODAsIDIwKSwgZS5jb250YWlu
ZXIpOwogICAgIH0KIAogICAgIGZ1bmN0aW9uIHRlc3RBZGp1c3RlZFRvdWNoZXMoKQpAQCAtMTAy
LDM1ICs2MywzMSBAQAogICAgICAgICBkZWJ1ZygnXG5BZGp1c3RlZCBUb3VjaGVzJyk7CiAKICAg
ICAgICAgLy8gVG91Y2ggb3ZlcmxhcHMgY2VudGVyIG9mIGVsZW1lbnQuCi0gICAgICAgIG5vZGVB
dFRvdWNoKDEwLCAxMCwgMzApOwotICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2FkanVz
dGVkTm9kZS5pZCcsICdyb3RhdGVkRGl2Jyk7CisgICAgICAgIHRlc3RUb3VjaFBvaW50KHRvdWNo
UG9pbnQoMTAsIDEwLCAzMCksIGUucm90YXRlZCk7CiAKICAgICAgICAgLy8gVG91Y2ggb3Zlcmxh
cHMgY29ybmVyIG9mIGVsZW1lbnQuCi0gICAgICAgIG5vZGVBdFRvdWNoKDIwLCAwLCAyMCk7Ci0g
ICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnYWRqdXN0ZWROb2RlLmlkJywgJ3JvdGF0ZWRE
aXYnKTsKKyAgICAgICAgdGVzdFRvdWNoUG9pbnQodG91Y2hQb2ludCgyMCwgMCwgMjApLCBlLnJv
dGF0ZWQpOwogCiAgICAgICAgIGRlYnVnKCdcbk5lYXIgTWlzc2VzJyk7CiAKICAgICAgICAgLy8g
VG91Y2ggb3ZlcmxhcHMgYm91bmRpbmctYm94IG9mIGVsZW1lbnQsIGJ1dCBub3QgdGhlIGFjdHVh
bCBib3VuZHMuCi0gICAgICAgIG5vZGVBdFRvdWNoKDcwLCAwLCAyMCk7Ci0gICAgICAgIHNob3Vs
ZEJlRXF1YWxUb1N0cmluZygnYWRqdXN0ZWROb2RlLmlkJywgJ2NvbnRhaW5lckRpdicpOwotICAg
ICAgICBub2RlQXRUb3VjaCg3MCwgNjAsIDIwKTsKLSAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCdhZGp1c3RlZE5vZGUuaWQnLCAnY29udGFpbmVyRGl2Jyk7CisgICAgICAgIHRlc3RUb3Vj
aFBvaW50KHRvdWNoUG9pbnQoNzAsIDAsIDIwKSwgZS5jb250YWluZXIpOworICAgICAgICB0ZXN0
VG91Y2hQb2ludCh0b3VjaFBvaW50KDcwLCA2MCwgMjApLCBlLmNvbnRhaW5lcik7CiAgICAgfQog
CiAgICAgZnVuY3Rpb24gcnVuVGVzdHMoKQogICAgIHsKICAgICAgICAgZG9jdW1lbnQuYWRkRXZl
bnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpIHt9LCBmYWxzZSk7CiAgICAgICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lciAmJiB3aW5kb3cuaW50ZXJuYWxzICYmIGludGVybmFscy50b3VjaE5v
ZGVBZGp1c3RlZFRvQmVzdENsaWNrYWJsZU5vZGUpIHsKLSAgICAgICAgICAgIGRlc2NyaXB0aW9u
KCdUZXN0IHRvdWNoIGFkanVzdG1lbnQgdG8gYSBub24tcmVjdGlsaW5lYXIgZWxlbWVudC4nKTsK
LSAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwotICAgICAgICAgICAgdGVzdFJ1
bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgICAgICAgICBkZXNjcmlwdGlvbihkb2N1bWVudC50
aXRsZSk7CiAgICAgICAgICAgICB0ZXN0RGlyZWN0VG91Y2hlcygpOwogICAgICAgICAgICAgdGVz
dEFkanVzdGVkVG91Y2hlcygpOwotICAgICAgICAgICAgaXNTdWNjZXNzZnVsbHlQYXJzZWQoKTsK
LSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgZS5jb250
YWluZXIuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKICAgICAgICAgfQogICAgIH0KKyAgICBydW5U
ZXN0cygpOwogPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKwogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50L3Njcm9sbC1vZmZzZXQtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50L3Njcm9sbC1vZmZzZXQtZXhwZWN0ZWQudHh0Cmlu
ZGV4IGY5MjRjYzk1MzBjMTg3Y2Q3Yjg5ZWM3YWVmZWYwMDU5ZDMwNjI1ZDkuLjUzMmM1MjA1OGM3
YWU1NDRiZDM5M2RlYWJiNDczNmUwZjNhNTM0NDMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3Rv
dWNoYWRqdXN0bWVudC9zY3JvbGwtb2Zmc2V0LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0
cy90b3VjaGFkanVzdG1lbnQvc2Nyb2xsLW9mZnNldC1leHBlY3RlZC50eHQKQEAgLTEsMTkgKzEs
MTQgQEAKLUxpbmsgMAotTGluayAxCiBUZXN0IHRvdWNoIGFkanVzdG1lbnQgd2hlbiBtYWluIGZy
YW1lIGlzIHNjcm9sbCBvZmZzZXQuCiAKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAogCi1Q
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLVBBU1MgYWRq
dXN0ZWROb2RlLmlkIGlzICJhMCIKLVBBU1MgYWRqdXN0ZWROb2RlLmlkIGlzICJhMSIKK1BBU1Mg
YWRqdXN0ZWQgbm9kZSB3YXMgQSNhMC4KK1BBU1MgYWRqdXN0ZWQgbm9kZSB3YXMgQSNhMS4KIFBB
U1MgYWRqdXN0ZWRQb2ludCBpcyBub24tbnVsbC4KLVBBU1MgYWRqdXN0ZWROb2RlLmlkIGlzICJh
MCIKK1BBU1MgYWRqdXN0ZWROb2RlIGlzIGUuYTAKIFBBU1MgYWRqdXN0ZWRQb2ludCBpcyBub24t
bnVsbC4KLVBBU1MgYWRqdXN0ZWROb2RlLmlkIGlzICJhMSIKK1BBU1MgYWRqdXN0ZWROb2RlIGlz
IGUuYTEKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50L3Njcm9sbC1vZmZzZXQuaHRt
bCBiL0xheW91dFRlc3RzL3RvdWNoYWRqdXN0bWVudC9zY3JvbGwtb2Zmc2V0Lmh0bWwKaW5kZXgg
MzAxNTY5NmZjZjNlY2EyN2ZkNzZiYmVjNjAwODY1OGIxOGUwMTU4MS4uZGIyZjkxOGI4NTU4MWQ0
YWViMGJmMzRkZTA1ZDk4MWU5YzgxNTQ4MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvdG91Y2hh
ZGp1c3RtZW50L3Njcm9sbC1vZmZzZXQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy90b3VjaGFkanVz
dG1lbnQvc2Nyb2xsLW9mZnNldC5odG1sCkBAIC0xLDYgKzEsOSBAQAorPCFET0NUWVBFIGh0bWw+
CiA8aHRtbD4KIDxoZWFkPgorICAgIDx0aXRsZT5Ub3VjaCBBZGp1c3RtZW50IDogQWRqdXN0IGNv
cnJlY3RseSBmb3Igc2Nyb2xsIG9mZnNldCAtIGJ1ZyA4NjIwNTwvdGl0bGU+CiAgICAgPHNjcmlw
dCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKyAg
ICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3RvdWNoYWRqdXN0bWVudC5qcyI+PC9zY3JpcHQ+CiAg
ICAgPHN0eWxlPgogICAgICAgICAjc2Nyb2xsb2Zmc2V0Y29udGFpbmVyIHsKICAgICAgICAgICAg
IHBvc2l0aW9uOiBhYnNvbHV0ZTsKQEAgLTE0LDcgKzE3LDcgQEAKICAgICAgICAgI2RpdjEgeyBt
YXJnaW4tbGVmdDogMTBweDsgaGVpZ2h0OiAxMDBweDsgYm94LXNpemluZzogYm9yZGVyLWJveDsg
fQogICAgIDwvc3R5bGU+CiA8L2hlYWQ+Ci08Ym9keSBvbmxvYWQ9InJ1blRlc3RzKCkiPgorPGJv
ZHk+CiAKIDxkaXYgaWQ9c2Nyb2xsb2Zmc2V0Y29udGFpbmVyPgogICAgIDxkaXYgaWQ9ZGl2MD4K
QEAgLTMxLDE3ICszNCwxMiBAQAogPHNjcmlwdD4KICAgICB2YXIgYWRqdXN0ZWROb2RlOwogICAg
IHZhciBhZGp1c3RlZFBvaW50OwotICAgIGZ1bmN0aW9uIG5vZGVBdFRvdWNoKHgsIHksIHJhZGl1
cykKLSAgICB7Ci0gICAgICAgIHZhciB4ID0geCAtIHJhZGl1czsKLSAgICAgICAgdmFyIHkgPSB5
IC0gcmFkaXVzOwotICAgICAgICB2YXIgd2lkdGggPSByYWRpdXMgKiAyOwotICAgICAgICB2YXIg
aGVpZ2h0ID0gcmFkaXVzICogMjsKLSAgICAgICAgdmFyIGFkanVzdGVkTm9kZSA9IGludGVybmFs
cy50b3VjaE5vZGVBZGp1c3RlZFRvQmVzdENsaWNrYWJsZU5vZGUoeCwgeSwgd2lkdGgsIGhlaWdo
dCwgZG9jdW1lbnQpOwotICAgICAgICBpZiAoYWRqdXN0ZWROb2RlICYmIGFkanVzdGVkTm9kZS5u
b2RlVHlwZSA9PSAzKSAvLyBURVhUIG5vZGUKLSAgICAgICAgICAgIGFkanVzdGVkTm9kZSA9IGFk
anVzdGVkTm9kZS5wYXJlbnROb2RlOwotICAgICAgICByZXR1cm4gYWRqdXN0ZWROb2RlOwotICAg
IH0KKyAgICAvLyBTZXQgdXAgc2hvcnRjdXQgYWNjZXNzIHRvIGVsZW1lbnRzCisgICAgdmFyIGUg
PSB7fTsKKyAgICBbJ3Njcm9sbG9mZnNldGNvbnRhaW5lcicsICdkaXYwJywgJ2RpdjEnLCAnYTAn
LCAnYTEnXS5mb3JFYWNoKGZ1bmN0aW9uKGEpIHsKKyAgICAgICAgZVthXSA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKGEpOworICAgIH0pOworCiAgICAgZnVuY3Rpb24gYWRqdXN0ZWRQb2ludEF0
VG91Y2goeCwgeSwgcmFkaXVzKQogICAgIHsKICAgICAgICAgdmFyIHggPSB4IC0gcmFkaXVzOwpA
QCAtNTQsMjMgKzUyLDIwIEBACiAKICAgICBmdW5jdGlvbiB0ZXN0RGlyZWN0VG91Y2hlcygpCiAg
ICAgewotICAgICAgICBhZGp1c3RlZE5vZGUgPSBub2RlQXRUb3VjaCg0MCwgMTMwLCA1MCk7Ci0g
ICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnYWRqdXN0ZWROb2RlLmlkJywgJ2EwJyk7Ci0K
LSAgICAgICAgYWRqdXN0ZWROb2RlID0gbm9kZUF0VG91Y2goMzAsIDIzMCwgNTApOwotICAgICAg
ICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2FkanVzdGVkTm9kZS5pZCcsICdhMScpOworICAgICAg
ICB0ZXN0VG91Y2hQb2ludCh0b3VjaFBvaW50KDQwLCAxMzAsIDUwKSwgZS5hMCk7CisgICAgICAg
IHRlc3RUb3VjaFBvaW50KHRvdWNoUG9pbnQoMzAsIDIzMCwgNTApLCBlLmExKTsKICAgICB9CiAg
ICAgZnVuY3Rpb24gdGVzdEFkanVzdGVkVG91Y2hlcygpCiAgICAgewogICAgICAgICBhZGp1c3Rl
ZFBvaW50ID0gYWRqdXN0ZWRQb2ludEF0VG91Y2goMTAsIDEyMCwgODApOwotICAgICAgICBzaG91
bGRCZU5vbk51bGwoJ2FkanVzdGVkUG9pbnQnLCBudWxsKTsKKyAgICAgICAgc2hvdWxkQmVOb25O
dWxsKCdhZGp1c3RlZFBvaW50Jyk7CiAgICAgICAgIGFkanVzdGVkTm9kZSA9IGRvY3VtZW50LmVs
ZW1lbnRGcm9tUG9pbnQoYWRqdXN0ZWRQb2ludC54LCBhZGp1c3RlZFBvaW50LnkpOwotICAgICAg
ICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2FkanVzdGVkTm9kZS5pZCcsICdhMCcpOworICAgICAg
ICBzaG91bGRCZSgnYWRqdXN0ZWROb2RlJywgJ2UuYTAnKTsKIAogICAgICAgICBhZGp1c3RlZFBv
aW50ID0gYWRqdXN0ZWRQb2ludEF0VG91Y2goNSwgMjIwLCA4MCk7Ci0gICAgICAgIHNob3VsZEJl
Tm9uTnVsbCgnYWRqdXN0ZWRQb2ludCcsIG51bGwpOworICAgICAgICBzaG91bGRCZU5vbk51bGwo
J2FkanVzdGVkUG9pbnQnKTsKICAgICAgICAgYWRqdXN0ZWROb2RlID0gZG9jdW1lbnQuZWxlbWVu
dEZyb21Qb2ludChhZGp1c3RlZFBvaW50LngsIGFkanVzdGVkUG9pbnQueSk7Ci0gICAgICAgIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygnYWRqdXN0ZWROb2RlLmlkJywgJ2ExJyk7CisgICAgICAgIHNo
b3VsZEJlKCdhZGp1c3RlZE5vZGUnLCAnZS5hMScpOwogICAgIH0KIAogICAgIGZ1bmN0aW9uIHJ1
blRlc3RzKCkKQEAgLTc4LDE0ICs3MywxMiBAQAogICAgICAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIgJiYgd2luZG93LmludGVybmFscyAmJiBpbnRlcm5hbHMudG91Y2hOb2RlQWRqdXN0ZWRUb0Jl
c3RDbGlja2FibGVOb2RlKSB7CiAgICAgICAgICAgICBkZXNjcmlwdGlvbignVGVzdCB0b3VjaCBh
ZGp1c3RtZW50IHdoZW4gbWFpbiBmcmFtZSBpcyBzY3JvbGwgb2Zmc2V0LicpOwogICAgICAgICAg
ICAgd2luZG93LnNjcm9sbEJ5KDAsNDAwKTsKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFz
VGV4dCgpOwotICAgICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAgICAgICAg
ICAgICB0ZXN0RGlyZWN0VG91Y2hlcygpOwogICAgICAgICAgICAgdGVzdEFkanVzdGVkVG91Y2hl
cygpOwotICAgICAgICAgICAgaXNTdWNjZXNzZnVsbHlQYXJzZWQoKTsKLSAgICAgICAgICAgIHRl
c3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgZS5zY3JvbGxvZmZzZXRjb250YWlu
ZXIuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKICAgICAgICAgfQogICAgIH0KKyAgICBydW5UZXN0
cygpOwogPC9zY3JpcHQ+CiAKIDxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10
ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdG91Y2hhZGp1
c3RtZW50L3NlYXJjaC1jYW5jZWwuaHRtbCBiL0xheW91dFRlc3RzL3RvdWNoYWRqdXN0bWVudC9z
ZWFyY2gtY2FuY2VsLmh0bWwKaW5kZXggOTE3MzdlYzMyMTRhMGRiMTc0Y2EwZTQxNDY1YmFmNzI4
NDhiYzcxMi4uMTYyMjMwMzEyNGIyNTZkYzAzNmJlYzg5NDkwMGE4ZGNmZTE5YWQzYSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50L3NlYXJjaC1jYW5jZWwuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy90b3VjaGFkanVzdG1lbnQvc2VhcmNoLWNhbmNlbC5odG1sCkBAIC0xLDMx
ICsxLDMzIEBACis8IURPQ1RZUEUgaHRtbD4KIDxodG1sPgogPGhlYWQ+Ci08c3R5bGU+Ci0gICAg
aW5wdXRbdHlwZT0nc2VhcmNoJ10gewotICAgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOwot
ICAgICAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94OwotICAgICAgYm9yZGVyOiAxcHgg
c29saWQgIzk5OTsKLSAgICAgIHBhZGRpbmc6IDVweDsKLSAgICB9Ci0KLSAgICBpbnB1dFt0eXBl
PSdzZWFyY2gnXTo6LXdlYmtpdC1zZWFyY2gtY2FuY2VsLWJ1dHRvbiB7Ci0gICAgICAtd2Via2l0
LWFwcGVhcmFuY2U6IG5vbmU7Ci0gICAgICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7
Ci0gICAgICBiYWNrZ3JvdW5kOiAjOTk5OwotICAgICAgaGVpZ2h0OiAxMHB4OwotICAgICAgbWFy
Z2luOiAwOwotICAgICAgcGFkZGluZzogMDsKLSAgICAgIHdpZHRoOiAxMHB4OwotICAgIH0KLTwv
c3R5bGU+Ci08c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorICAgIDx0aXRsZT5Ub3VjaCBBZGp1c3RtZW50IDogU2hhZG93IERPTSBFbGVt
ZW50IFNlYXJjaCBDYW5jZWwgQnV0dG9uIC0gYnVnIDkxODk0PC90aXRsZT4KKyAgICA8c2NyaXB0
IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorICAg
IDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdG91Y2hhZGp1c3RtZW50LmpzIj48L3NjcmlwdD4KKyAg
ICA8c3R5bGU+CisgICAgICAgIGlucHV0W3R5cGU9J3NlYXJjaCddIHsKKyAgICAgICAgLXdlYmtp
dC1hcHBlYXJhbmNlOiBub25lOworICAgICAgICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1i
b3g7CisgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICM5OTk7CisgICAgICAgIHBhZGRpbmc6IDVw
eDsKKyAgICAgICAgfQogCisgICAgICAgIGlucHV0W3R5cGU9J3NlYXJjaCddOjotd2Via2l0LXNl
YXJjaC1jYW5jZWwtYnV0dG9uIHsKKyAgICAgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOwor
ICAgICAgICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7CisgICAgICAgIGJhY2tncm91
bmQ6ICM5OTk7CisgICAgICAgIGhlaWdodDogMTBweDsKKyAgICAgICAgbWFyZ2luOiAwOworICAg
ICAgICBwYWRkaW5nOiAwOworICAgICAgICB3aWR0aDogMTBweDsKKyAgICAgICAgfQorICAgIDwv
c3R5bGU+CiA8L2hlYWQ+CiAKLTxib2R5IG9ubG9hZD0icnVuVGVzdHMoKSI+Cis8Ym9keT4KIAog
PGRpdj4KLSAgPGlucHV0IGlkPSJ0YXJnZXQiIHR5cGU9InNlYXJjaCIgdmFsdWU9ImFiY2QiLz4K
KyAgPGlucHV0IGlkPSJ0YXJnZXQiIHR5cGU9InNlYXJjaCIgdmFsdWU9ImFiY2QiPgogPC9kaXY+
CiAKIDxwIGlkPSdkZXNjcmlwdGlvbic+PC9wPgpAQCAtNDMsNTAgKzQ1LDMwIEBACiAgICAgdmFy
IHRhcmdldENvbnRhaW5zUG9pbnQ7CiAgICAgdmFyIHRvdWNoQ29udGFpbnNQb2ludDsKIAotICAg
IGZ1bmN0aW9uIGZpbmRBYnNvbHV0ZVBvc2l0aW9uKG5vZGUpIHsKLSAgICAgICAgdmFyIHBvcyA9
IHtsZWZ0OiAwLCB0b3A6IDB9OwotICAgICAgICBkbyB7Ci0gICAgICAgICAgICBwb3MubGVmdCAr
PSBub2RlLm9mZnNldExlZnQ7Ci0gICAgICAgICAgICBwb3MudG9wICs9IG5vZGUub2Zmc2V0VG9w
OwotICAgICAgICB9IHdoaWxlIChub2RlID0gbm9kZS5vZmZzZXRQYXJlbnQpOwotICAgICAgICBy
ZXR1cm4gcG9zOwotICAgIH0KLQogICAgIGZ1bmN0aW9uIHJ1blRvdWNoVGVzdHMoKSB7CiAgICAg
ICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKSB7fSwgZmFs
c2UpOwogCiAgICAgICAgIGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGFyZ2V0
Jyk7Ci0gICAgICAgIHZhciBwb3MgPSBmaW5kQWJzb2x1dGVQb3NpdGlvbihlbGVtZW50KTsKLQot
ICAgICAgICB2YXIgeCA9IHBvcy5sZWZ0OwotICAgICAgICB2YXIgeSA9IHBvcy50b3A7Ci0gICAg
ICAgIHZhciB3aWR0aCA9IGVsZW1lbnQuY2xpZW50V2lkdGg7Ci0gICAgICAgIHZhciBoZWlnaHQg
PSBlbGVtZW50LmNsaWVudEhlaWdodDsKLQotICAgICAgICBpbnB1dEJvdW5kcyA9IHsKLSAgICAg
ICAgICAgIHg6IHgsCi0gICAgICAgICAgICB5OiB5LAotICAgICAgICAgICAgd2lkdGg6IHdpZHRo
LAotICAgICAgICAgICAgaGVpZ2h0OiBoZWlnaHQKLSAgICAgICAgfTsKKyAgICAgICAgCisgICAg
ICAgIGlucHV0Qm91bmRzID0gZmluZEFic29sdXRlQm91bmRzKGVsZW1lbnQpOwogCiAgICAgICAg
IHZhciB0b3VjaFJhZGl1cyA9IDIwOwogICAgICAgICB2YXIgb2Zmc2V0ID0gdG91Y2hSYWRpdXMg
LyAyOwogCiAgICAgICAgIC8vIENlbnRlciBvZiBjYW5jZWwgYnV0dG9uLgotICAgICAgICB2YXIg
bWlkWCA9IHggKyB3aWR0aCAtIDExOwotICAgICAgICB2YXIgbWlkWSA9IHkgKyBoZWlnaHQgLyAy
OworICAgICAgICB2YXIgbWlkWCA9IGlucHV0Qm91bmRzLmxlZnQgKyBpbnB1dEJvdW5kcy53aWR0
aCAtIDExOworICAgICAgICB2YXIgbWlkWSA9IGlucHV0Qm91bmRzLnRvcCArIGlucHV0Qm91bmRz
LmhlaWdodCAvIDI7CiAKICAgICAgICAgY2FuY2VsQm91bmRzID0gewotICAgICAgICAgICAgeDog
bWlkWCAtIDUsCi0gICAgICAgICAgICB5OiBtaWRZIC0gNSwKKyAgICAgICAgICAgIGxlZnQ6IG1p
ZFggLSA1LAorICAgICAgICAgICAgdG9wOiBtaWRZIC0gNSwKICAgICAgICAgICAgIHdpZHRoOiAx
MCwKICAgICAgICAgICAgIGhlaWdodDogMTAKICAgICAgICAgfTsKIAogICAgICAgICB0ZXh0Q29u
dGVudEJvdW5kcyA9IHsKLSAgICAgICAgICAgeDogaW5wdXRCb3VuZHMueCwKLSAgICAgICAgICAg
eTogaW5wdXRCb3VuZHMueSwKKyAgICAgICAgICAgbGVmdDogaW5wdXRCb3VuZHMubGVmdCwKKyAg
ICAgICAgICAgdG9wOiBpbnB1dEJvdW5kcy50b3AsCiAgICAgICAgICAgIHdpZHRoOiBpbnB1dEJv
dW5kcy53aWR0aCAtIDE2LAogICAgICAgICAgICBoZWlnaHQ6IGlucHV0Qm91bmRzLmhlaWdodAog
ICAgICAgICB9OwpAQCAtMTEwLDEyICs5MiwxMiBAQAogICAgICAgICB0YXJnZXRCb3VuZHMgPSBi
b3VuZHM7CiAKICAgICAgICAgdG91Y2hCb3VuZHMgPSB7Ci0gICAgICAgICAgICB4OiB0b3VjaFgg
LSByYWRpdXMsCi0gICAgICAgICAgICB5OiB0b3VjaFkgLSByYWRpdXMsCisgICAgICAgICAgICBs
ZWZ0OiB0b3VjaFggLSByYWRpdXMsCisgICAgICAgICAgICB0b3A6IHRvdWNoWSAtIHJhZGl1cywK
ICAgICAgICAgICAgIHdpZHRoOiAyICogcmFkaXVzLAogICAgICAgICAgICAgaGVpZ2h0OiAyICog
cmFkaXVzCiAgICAgICAgIH07Ci0gICAgICAgIGFkanVzdGVkUG9pbnQgPSBpbnRlcm5hbHMudG91
Y2hQb3NpdGlvbkFkanVzdGVkVG9CZXN0Q2xpY2thYmxlTm9kZSh0b3VjaEJvdW5kcy54LCB0b3Vj
aEJvdW5kcy55LCB0b3VjaEJvdW5kcy53aWR0aCwgdG91Y2hCb3VuZHMuaGVpZ2h0LCBkb2N1bWVu
dCk7CisgICAgICAgIGFkanVzdGVkUG9pbnQgPSBpbnRlcm5hbHMudG91Y2hQb3NpdGlvbkFkanVz
dGVkVG9CZXN0Q2xpY2thYmxlTm9kZSh0b3VjaEJvdW5kcy5sZWZ0LCB0b3VjaEJvdW5kcy50b3As
IHRvdWNoQm91bmRzLndpZHRoLCB0b3VjaEJvdW5kcy5oZWlnaHQsIGRvY3VtZW50KTsKICAgICAg
ICAgdGFyZ2V0Q29udGFpbnNQb2ludCA9IGNvbnRhaW5zUG9pbnQodGFyZ2V0Qm91bmRzLCBhZGp1
c3RlZFBvaW50KTsKICAgICAgICAgdG91Y2hDb250YWluc1BvaW50ID0gY29udGFpbnNQb2ludCh0
b3VjaEJvdW5kcywgYWRqdXN0ZWRQb2ludCk7CiAgICAgICAgIHNob3VsZEJlVHJ1ZSgndGFyZ2V0
Q29udGFpbnNQb2ludCcpOwpAQCAtMTIzLDIwICsxMDUsMTggQEAKICAgICB9CiAKICAgICBmdW5j
dGlvbiBjb250YWluc1BvaW50KGJvdW5kcywgcG9pbnQpIHsKLSAgICAgICAgcmV0dXJuIGJvdW5k
cy54IDw9IHBvaW50LnggJiYgYm91bmRzLnkgPD0gcG9pbnQueSAmJiBib3VuZHMueCArIGJvdW5k
cy53aWR0aCA+PSBwb2ludC54ICYmIGJvdW5kcy55ICsgYm91bmRzLmhlaWdodCA+PSBwb2ludC55
OworICAgICAgICByZXR1cm4gYm91bmRzLmxlZnQgPD0gcG9pbnQueCAmJiBib3VuZHMudG9wIDw9
IHBvaW50LnkgJiYgYm91bmRzLmxlZnQgKyBib3VuZHMud2lkdGggPj0gcG9pbnQueCAmJiBib3Vu
ZHMubGVmdCArIGJvdW5kcy5oZWlnaHQgPj0gcG9pbnQueTsKICAgICB9CiAKICAgICBmdW5jdGlv
biBydW5UZXN0cygpCiAgICAgewogICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIgJiYgd2lu
ZG93LmludGVybmFscyAmJiBpbnRlcm5hbHMudG91Y2hOb2RlQWRqdXN0ZWRUb0Jlc3RDbGlja2Fi
bGVOb2RlKSB7CiAgICAgICAgICAgICBkZXNjcmlwdGlvbignVGVzdCB0b3VjaCBhZGp1c3RtZW50
IG9uIGEgc2VhcmNoIGZpZWxkIHdpdGggYSB2aXNpYmxlIGNhbmNlbCBidXR0b24uJyk7Ci0gICAg
ICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKLSAgICAgICAgICAgIHRlc3RSdW5uZXIu
d2FpdFVudGlsRG9uZSgpOwogICAgICAgICAgICAgcnVuVG91Y2hUZXN0cygpOwotICAgICAgICAg
ICAgaXNTdWNjZXNzZnVsbHlQYXJzZWQoKTsKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5
RG9uZSgpOwogICAgICAgICB9CiAgICAgfQorICAgIHJ1blRlc3RzKCk7CiA8L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3Rt
ZW50L3NtYWxsLXRhcmdldC10ZXN0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RvdWNoYWRq
dXN0bWVudC9zbWFsbC10YXJnZXQtdGVzdC1leHBlY3RlZC50eHQKaW5kZXggYTQ4OTI5ZjNlZWNm
NzgzNmM4M2UxZjcyNDFkOTVjYzYzOWQ2NGZiYi4uNjU5MDMyMTY5NjdmZWJlZjVjMTRmMjZlYzY0
NDNmYjhiYTFhZTE0MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50L3Nt
YWxsLXRhcmdldC10ZXN0LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy90b3VjaGFkanVz
dG1lbnQvc21hbGwtdGFyZ2V0LXRlc3QtZXhwZWN0ZWQudHh0CkBAIC0xLDQzICsxLDQwIEBACi0g
IAotIAotIAogVGVzdHMgaWYgc21hbGwgY2xpY2thYmxlIHRhcmdldHMgYWRqYWNlbnQgdG8gbGFy
Z2VyIGNsaWNrYWJsZSBjb250cm9scyBhcmUgcHJvcGVybHkgdGFyZ2V0dGVkIHdpdGggdG91Y2gg
YWRqdXN0bWVudC4KIAogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCiAKIFRlc3Rpbmcgc21h
bGwgZGlyZWN0IGhpdHMuCi1QQVNTIGFkanVzdGVkTm9kZS5pZCBpcyAiY2hlY2siCi1QQVNTIGFk
anVzdGVkTm9kZS5pZCBpcyAidGFzayIKLVBBU1MgYWRqdXN0ZWROb2RlLmlkIGlzICJpdGVtLWxh
YmVsIgotUEFTUyBhZGp1c3RlZE5vZGUuaWQgaXMgInJlbW92ZS1idXR0b24iCi1QQVNTIGFkanVz
dGVkTm9kZS5pZCBpcyAiY29tYm8tbGFiZWwiCi1QQVNTIGFkanVzdGVkTm9kZS5pZCBpcyAiZHJv
cC1kb3duLXNlbGVjdG9yIgorUEFTUyBhZGp1c3RlZCBub2RlIHdhcyBESVYjY2hlY2suCitQQVNT
IGFkanVzdGVkIG5vZGUgd2FzIElOUFVUI3Rhc2suCitQQVNTIGFkanVzdGVkIG5vZGUgd2FzIElO
UFVUI2l0ZW0tbGFiZWwuCitQQVNTIGFkanVzdGVkIG5vZGUgd2FzIERJViNyZW1vdmUtYnV0dG9u
LgorUEFTUyBhZGp1c3RlZCBub2RlIHdhcyBESVYjY29tYm8tbGFiZWwuCitQQVNTIGFkanVzdGVk
IG5vZGUgd2FzIERJViNkcm9wLWRvd24tc2VsZWN0b3IuCiBUZXN0aW5nIGluZGlyZWN0IGhpdHMu
Ci1QQVNTIGFkanVzdGVkTm9kZS5pZCBpcyAiY2hlY2siCi1QQVNTIGFkanVzdGVkTm9kZS5pZCBp
cyAiY2hlY2siCi1QQVNTIGFkanVzdGVkTm9kZS5pZCBpcyAiY2hlY2siCi1QQVNTIGFkanVzdGVk
Tm9kZS5pZCBpcyAiY2hlY2siCi1QQVNTIGFkanVzdGVkTm9kZS5pZCBpcyAiY2hlY2siCi1QQVNT
IGFkanVzdGVkTm9kZS5pZCBpcyAiY2hlY2siCi1QQVNTIGFkanVzdGVkTm9kZS5pZCBpcyAiY2hl
Y2siCi1QQVNTIGFkanVzdGVkTm9kZS5pZCBpcyAiY2hlY2siCi1QQVNTIGFkanVzdGVkTm9kZS5p
ZCBpcyAicmVtb3ZlLWJ1dHRvbiIKLVBBU1MgYWRqdXN0ZWROb2RlLmlkIGlzICJyZW1vdmUtYnV0
dG9uIgotUEFTUyBhZGp1c3RlZE5vZGUuaWQgaXMgInJlbW92ZS1idXR0b24iCi1QQVNTIGFkanVz
dGVkTm9kZS5pZCBpcyAicmVtb3ZlLWJ1dHRvbiIKLVBBU1MgYWRqdXN0ZWROb2RlLmlkIGlzICJy
ZW1vdmUtYnV0dG9uIgotUEFTUyBhZGp1c3RlZE5vZGUuaWQgaXMgInJlbW92ZS1idXR0b24iCi1Q
QVNTIGFkanVzdGVkTm9kZS5pZCBpcyAicmVtb3ZlLWJ1dHRvbiIKLVBBU1MgYWRqdXN0ZWROb2Rl
LmlkIGlzICJyZW1vdmUtYnV0dG9uIgotUEFTUyBhZGp1c3RlZE5vZGUuaWQgaXMgImRyb3AtZG93
bi1zZWxlY3RvciIKLVBBU1MgYWRqdXN0ZWROb2RlLmlkIGlzICJkcm9wLWRvd24tc2VsZWN0b3Ii
Ci1QQVNTIGFkanVzdGVkTm9kZS5pZCBpcyAiZHJvcC1kb3duLXNlbGVjdG9yIgotUEFTUyBhZGp1
c3RlZE5vZGUuaWQgaXMgImRyb3AtZG93bi1zZWxlY3RvciIKLVBBU1MgYWRqdXN0ZWROb2RlLmlk
IGlzICJkcm9wLWRvd24tc2VsZWN0b3IiCi1QQVNTIGFkanVzdGVkTm9kZS5pZCBpcyAiZHJvcC1k
b3duLXNlbGVjdG9yIgotUEFTUyBhZGp1c3RlZE5vZGUuaWQgaXMgImRyb3AtZG93bi1zZWxlY3Rv
ciIKLVBBU1MgYWRqdXN0ZWROb2RlLmlkIGlzICJkcm9wLWRvd24tc2VsZWN0b3IiCitQQVNTIGFk
anVzdGVkIG5vZGUgd2FzIERJViNjaGVjay4KK1BBU1MgYWRqdXN0ZWQgbm9kZSB3YXMgRElWI2No
ZWNrLgorUEFTUyBhZGp1c3RlZCBub2RlIHdhcyBESVYjY2hlY2suCitQQVNTIGFkanVzdGVkIG5v
ZGUgd2FzIERJViNjaGVjay4KK1BBU1MgYWRqdXN0ZWQgbm9kZSB3YXMgRElWI2NoZWNrLgorUEFT
UyBhZGp1c3RlZCBub2RlIHdhcyBESVYjY2hlY2suCitQQVNTIGFkanVzdGVkIG5vZGUgd2FzIERJ
ViNjaGVjay4KK1BBU1MgYWRqdXN0ZWQgbm9kZSB3YXMgRElWI2NoZWNrLgorUEFTUyBhZGp1c3Rl
ZCBub2RlIHdhcyBESVYjcmVtb3ZlLWJ1dHRvbi4KK1BBU1MgYWRqdXN0ZWQgbm9kZSB3YXMgRElW
I3JlbW92ZS1idXR0b24uCitQQVNTIGFkanVzdGVkIG5vZGUgd2FzIERJViNyZW1vdmUtYnV0dG9u
LgorUEFTUyBhZGp1c3RlZCBub2RlIHdhcyBESVYjcmVtb3ZlLWJ1dHRvbi4KK1BBU1MgYWRqdXN0
ZWQgbm9kZSB3YXMgRElWI3JlbW92ZS1idXR0b24uCitQQVNTIGFkanVzdGVkIG5vZGUgd2FzIERJ
ViNyZW1vdmUtYnV0dG9uLgorUEFTUyBhZGp1c3RlZCBub2RlIHdhcyBESVYjcmVtb3ZlLWJ1dHRv
bi4KK1BBU1MgYWRqdXN0ZWQgbm9kZSB3YXMgRElWI3JlbW92ZS1idXR0b24uCitQQVNTIGFkanVz
dGVkIG5vZGUgd2FzIERJViNkcm9wLWRvd24tc2VsZWN0b3IuCitQQVNTIGFkanVzdGVkIG5vZGUg
d2FzIERJViNkcm9wLWRvd24tc2VsZWN0b3IuCitQQVNTIGFkanVzdGVkIG5vZGUgd2FzIERJViNk
cm9wLWRvd24tc2VsZWN0b3IuCitQQVNTIGFkanVzdGVkIG5vZGUgd2FzIERJViNkcm9wLWRvd24t
c2VsZWN0b3IuCitQQVNTIGFkanVzdGVkIG5vZGUgd2FzIERJViNkcm9wLWRvd24tc2VsZWN0b3Iu
CitQQVNTIGFkanVzdGVkIG5vZGUgd2FzIERJViNkcm9wLWRvd24tc2VsZWN0b3IuCitQQVNTIGFk
anVzdGVkIG5vZGUgd2FzIERJViNkcm9wLWRvd24tc2VsZWN0b3IuCitQQVNTIGFkanVzdGVkIG5v
ZGUgd2FzIERJViNkcm9wLWRvd24tc2VsZWN0b3IuCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RvdWNoYWRq
dXN0bWVudC9zbWFsbC10YXJnZXQtdGVzdC5odG1sIGIvTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3Rt
ZW50L3NtYWxsLXRhcmdldC10ZXN0Lmh0bWwKaW5kZXggYzE4ZTJmY2U5YjIwMjhiZGY3MDgzZDY0
ZTgwYzg3NGRjMmRjZWI5YS4uNWY5NThjOTA0MjA5NTdmYWMwMjBlZDNmNDMyMzRmYTg0NWNiMTMw
MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50L3NtYWxsLXRhcmdldC10
ZXN0Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50L3NtYWxsLXRhcmdldC10
ZXN0Lmh0bWwKQEAgLTEsMTEgKzEsMTUgQEAKKzwhRE9DVFlQRSBodG1sPgogPGh0bWw+CiA8aGVh
ZD4KKzx0aXRsZT5Ub3VjaCBBZGp1c3RtZW50IDogSW1wcm92ZWQgdGFyZ2V0dGluZyBmb3Igc21h
bGwgY29udHJvbHMgLSBidWcgOTIyOTM8L3RpdGxlPgorPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMv
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvdG91Y2hhZGp1c3RtZW50LmpzIj48L3NjcmlwdD4KKwogPHN0eWxlPgogICBib2R5IHsKICAg
ICAtd2Via2l0LW1hcmdpbi1zdGFydDogMjBweDsKICAgICBtYXJnaW4tdG9wOiAyMHB4OwogICB9
Ci0KICAgLmNvbnRyb2wtcGFpciB7CiAgICAgbWFyZ2luLWJvdHRvbTogMzBweDsKICAgfQpAQCAt
NDUsMzYgKzQ5LDM4IEBACiAgIH0KIAogICAjZHJvcC1kb3duLXNlbGVjdG9yIHsKLSAgICAtd2Vi
a2l0LWJveC1zaXppbmc7IGNvbnRlbnQtYm94OworICAgIC13ZWJraXQtYm94LXNpemluZzogY29u
dGVudC1ib3g7CiAgICAgd2lkdGg6IDA7CiAgICAgaGVpZ2h0OiAwOwogICAgIGJvcmRlci1sZWZ0
OiA1cHggc29saWQgdHJhbnNwYXJlbnQ7CiAgICAgYm9yZGVyLXJpZ2h0OiA1cHggc29saWQgdHJh
bnNwYXJlbnQ7CiAgICAgYm9yZGVyLXRvcDogMTBweCBzb2xpZCAjNzc3OwogICB9CisgIAogPC9z
dHlsZT4KIAotPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KIDwvaGVhZD4KIAotPGJvZHkgaWQ9Im15Ym9keSIgb25sb2FkPSJydW5UZXN0
cygpIj4KLQotPGRpdiBjbGFzcz0iY29udHJvbC1wYWlyIj4KLSAgPCEtLSBTbWFsbCBjaGVja2Jv
eCB0byB0aGUgbGVmdCBvZiBhbm90aGVyIGNvbnRyb2wgLS0+Ci0gIDxkaXYgaWQ9ImNoZWNrIiBv
bmNsaWNrPSJvbkNsaWNrKCk7Ij48L2Rpdj4KLSAgPGlucHV0IGlkPSJ0YXNrIiB0eXBlPSJ0ZXh0
IiB2YWx1ZT0iVGFzayAxIi8+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9ImNvbnRyb2wtcGFpciI+Ci0g
IDwhLS0gU21hbGwgcmVtb3ZlIGJ1dHRvbiB0byB0aGUgcmlnaHQgb2YgYW5vdGhlciBjb250cm9s
IC0tPgotICA8aW5wdXQgaWQgPSAiaXRlbS1sYWJlbCIgdHlwZT0idGV4dCIgdmFsdWUgPSAiT3B0
aW9uIDEiLz4KLSAgPGRpdiBpZCA9ICJyZW1vdmUtYnV0dG9uIiBvbmNsaWNrPSJvbkNsaWNrKCk7
Ii8+Ci08L2Rpdj4KLTxkaXY+Ci0gIDxkaXYgaWQ9ImNvbWJvLWJ1dHRvbiI+Ci0gICAgPCEtLSBD
b21iby1idXR0b24gY29udHJvbHMgLS0+Ci0gICAgPGRpdiBpZCA9ICJjb21iby1sYWJlbCIgb25j
bGljaz0iZnVuY3Rpb24oKSB7fTsiPjwvZGl2PgotICAgIDxkaXYgaWQgPSAiZHJvcC1kb3duLXNl
bGVjdG9yIiBvbmNsaWNrPSJvbkNsaWNrKCk7Ii8+Ci0gIDwvZGl2PgorPGJvZHkgaWQ9Im15Ym9k
eSI+CisKKzxkaXYgaWQ9c2FuZGJveD4KKyAgICA8ZGl2IGNsYXNzPSJjb250cm9sLXBhaXIiPgor
ICAgICAgICA8IS0tIFNtYWxsIGNoZWNrYm94IHRvIHRoZSBsZWZ0IG9mIGFub3RoZXIgY29udHJv
bCAtLT4KKyAgICAgICAgPGRpdiBpZD0iY2hlY2siIG9uY2xpY2s9Im9uQ2xpY2soKTsiPjwvZGl2
PgorICAgICAgICA8aW5wdXQgaWQ9InRhc2siIHR5cGU9InRleHQiIHZhbHVlPSJUYXNrIDEiPgor
ICAgIDwvZGl2PgorICAgIDxkaXYgY2xhc3M9ImNvbnRyb2wtcGFpciI+CisgICAgICAgIDwhLS0g
U21hbGwgcmVtb3ZlIGJ1dHRvbiB0byB0aGUgcmlnaHQgb2YgYW5vdGhlciBjb250cm9sIC0tPgor
ICAgICAgICA8aW5wdXQgaWQgPSAiaXRlbS1sYWJlbCIgdHlwZT0idGV4dCIgdmFsdWUgPSAiT3B0
aW9uIDEiPgorICAgICAgICA8ZGl2IGlkID0gInJlbW92ZS1idXR0b24iIG9uY2xpY2s9Im9uQ2xp
Y2soKTsiPjwvZGl2PgorICAgIDwvZGl2PgorICAgIDxkaXY+CisgICAgICAgIDxkaXYgaWQ9ImNv
bWJvLWJ1dHRvbiI+CisgICAgICAgICAgICA8IS0tIENvbWJvLWJ1dHRvbiBjb250cm9scyAtLT4K
KyAgICAgICAgICAgIDxkaXYgaWQgPSAiY29tYm8tbGFiZWwiIG9uY2xpY2s9ImZ1bmN0aW9uKCkg
e307Ij48L2Rpdj4KKyAgICAgICAgICAgIDxkaXYgaWQgPSAiZHJvcC1kb3duLXNlbGVjdG9yIiBv
bmNsaWNrPSJvbkNsaWNrKCk7Ij48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9kaXY+CiA8
L2Rpdj4KIAogPHAgaWQ9J2Rlc2NyaXB0aW9uJz48L3A+CkBAIC05MSwxNyArOTcsNiBAQAogICAg
IHsKICAgICB9CiAKLSAgICBmdW5jdGlvbiBmaW5kQWJzb2x1dGVQb3NpdGlvbihub2RlKQotICAg
IHsKLSAgICAgICAgdmFyIHBvcyA9IG5ldyBPYmplY3QoKTsKLSAgICAgICAgcG9zLmxlZnQgPSAw
OyBwb3MudG9wID0gMDsKLSAgICAgICAgZG8gewotICAgICAgICAgICAgcG9zLmxlZnQgKz0gbm9k
ZS5vZmZzZXRMZWZ0OwotICAgICAgICAgICAgcG9zLnRvcCArPSBub2RlLm9mZnNldFRvcDsKLSAg
ICAgICAgfSB3aGlsZSAobm9kZSA9IG5vZGUub2Zmc2V0UGFyZW50KTsKLSAgICAgICAgcmV0dXJu
IHBvczsKLSAgICB9Ci0KICAgICBmdW5jdGlvbiB0ZXN0RGlyZWN0VG91Y2goaWQpCiAgICAgewog
ICAgICAgICB0ZXN0VG91Y2goaWQsICdjZW50ZXInKTsKQEAgLTEyMSw1OSArMTE2LDggQEAKIAog
ICAgIGZ1bmN0aW9uIHRlc3RUb3VjaChpZCwgcmVsYXRpdmVQb3NpdGlvbikKICAgICB7Ci0gICAg
ICAgIGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCk7Ci0gICAgICAgIHZhciBw
b3MgPSBmaW5kQWJzb2x1dGVQb3NpdGlvbihlbGVtZW50KTsKLSAgICAgICAgdmFyIHggPSBwb3Mu
bGVmdDsgCi0gICAgICAgIHZhciB5ID0gcG9zLnRvcDsKLSAgICAgICAgLy8gU2V0IGNlbnRlciBw
b2ludCBmb3IgdG91Y2guCi0gICAgICAgIHN3aXRjaCAocmVsYXRpdmVQb3NpdGlvbikgewotICAg
ICAgICBjYXNlICdjZW50ZXInOgotICAgICAgICAgIHggKz0gZWxlbWVudC5jbGllbnRXaWR0aCAv
IDI7Ci0gICAgICAgICAgeSArPSBlbGVtZW50LmNsaWVudEhlaWdodCAvIDI7Ci0gICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIGNhc2UgJ2xlZnQnOgotICAgICAgICAgIHggLT0gdG91Y2hPZmZzZXQ7
Ci0gICAgICAgICAgeSArPSBlbGVtZW50LmNsaWVudEhlaWdodCAvIDI7Ci0gICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGNhc2UgJ3JpZ2h0JzoKLSAgICAgICAgICAgeCArPSBlbGVtZW50LmNsaWVu
dFdpZHRoICsgdG91Y2hPZmZzZXQ7Ci0gICAgICAgICAgIHkgKz0gIGVsZW1lbnQuY2xpZW50SGVp
Z2h0IC8gMjsKLSAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgJ3RvcC1sZWZ0JzoKLSAg
ICAgICAgICB4IC09IHRvdWNoT2Zmc2V0OwotICAgICAgICAgIHkgLT0gdG91Y2hPZmZzZXQ7Ci0g
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgJ3RvcC1yaWdodCc6Ci0gICAgICAgICAgIHgg
Kz0gZWxlbWVudC5jbGllbnRXaWR0aCArIHRvdWNoT2Zmc2V0OwotICAgICAgICAgICB5IC09IHRv
dWNoT2Zmc2V0OwotICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSAnYm90dG9tLWxlZnQn
OgotICAgICAgICAgIHggLT0gdG91Y2hPZmZzZXQ7Ci0gICAgICAgICAgeSArPSBlbGVtZW50LmNs
aWVudEhlaWdodCArIHRvdWNoT2Zmc2V0OwotICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNl
ICdib3R0b20tcmlnaHQnOgotICAgICAgICAgICB4ICs9IGVsZW1lbnQuY2xpZW50V2lkdGggKyB0
b3VjaE9mZnNldDsKLSAgICAgICAgICAgeSArPSBlbGVtZW50LmNsaWVudEhlaWdodCArIHRvdWNo
T2Zmc2V0OwotICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSAndG9wJzoKLSAgICAgICAg
ICAgeCArPSBlbGVtZW50LmNsaWVudFdpZHRoIC8gMjsKLSAgICAgICAgICAgeSAtPSB0b3VjaE9m
ZnNldDsKLSAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgJ2JvdHRvbSc6Ci0gICAgICAg
ICAgIHggKz0gZWxlbWVudC5jbGllbnRXaWR0aCAvIDI7Ci0gICAgICAgICAgIHkgKz0gZWxlbWVu
dC5jbGllbnRIZWlnaHQgKyB0b3VjaE9mZnNldDsKLSAgICAgICAgfQotICAgICAgICAvLyBBZGp1
c3QgZnJvbSB0b3VjaCBjZW50ZXIgdG8gdG9wLWxlZnQgY29ybmVyLgotICAgICAgICB4IC09IHRv
dWNoUmFkaXVzOwotICAgICAgICB5IC09IHRvdWNoUmFkaXVzOwotCi0gICAgICAgIHZhciB3aWR0
aCA9IDIgKiB0b3VjaFJhZGl1czsKLSAgICAgICAgdmFyIGhlaWdodCA9IDIgKiB0b3VjaFJhZGl1
czsKLQotICAgICAgICBhZGp1c3RlZE5vZGUgPSBpbnRlcm5hbHMudG91Y2hOb2RlQWRqdXN0ZWRU
b0Jlc3RDbGlja2FibGVOb2RlKHgsIHksIHdpZHRoLCBoZWlnaHQsIGRvY3VtZW50KTsKLSAgICAg
ICAgd2hpbGUgKGFkanVzdGVkTm9kZS5ub2RlVHlwZSAhPSAxICkgLy8gTm90IGFuIGVsZW1lbnQu
Ci0gICAgICAgICAgICBhZGp1c3RlZE5vZGUgPSBhZGp1c3RlZE5vZGUucGFyZW50Tm9kZTsKLSAg
ICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdhZGp1c3RlZE5vZGUuaWQnLCBpZCk7CisgICAg
ICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpOworICAgICAgICB0
ZXN0VG91Y2hQb2ludChvZmZzZXRUb3VjaFBvaW50KGZpbmRBYnNvbHV0ZUJvdW5kcyhlbGVtZW50
KSwgcmVsYXRpdmVQb3NpdGlvbiwgdG91Y2hPZmZzZXQsIHRvdWNoUmFkaXVzKSwgZWxlbWVudCk7
CiAgICAgfQogCiAgICAgZnVuY3Rpb24gdGVzdERpcmVjdFRvdWNoZXMoKQpAQCAtMjAxLDE0ICsx
NDUsMTMgQEAKICAgICB7CiAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lciAmJiB3aW5kb3cu
aW50ZXJuYWxzICYmIGludGVybmFscy50b3VjaE5vZGVBZGp1c3RlZFRvQmVzdENsaWNrYWJsZU5v
ZGUpIHsKICAgICAgICAgICAgIGRlc2NyaXB0aW9uKCdUZXN0cyBpZiBzbWFsbCBjbGlja2FibGUg
dGFyZ2V0cyBhZGphY2VudCB0byBsYXJnZXIgY2xpY2thYmxlIGNvbnRyb2xzIGFyZSBwcm9wZXJs
eSB0YXJnZXR0ZWQgd2l0aCB0b3VjaCBhZGp1c3RtZW50LicpOwotICAgICAgICAgICAgdGVzdFJ1
bm5lci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUo
KTsKICAgICAgICAgICAgIHRlc3REaXJlY3RUb3VjaGVzKCk7CiAgICAgICAgICAgICB0ZXN0SW5k
aXJlY3RUb3VjaGVzKCk7Ci0gICAgICAgICAgICBpc1N1Y2Nlc3NmdWxseVBhcnNlZCgpOwotICAg
ICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnc2FuZGJveCcpLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICAgICAg
IH0KICAgICB9CisgICAgcnVuVGVzdHMoKTsKIDwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2Zh
c3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90b3VjaGFkanVzdG1lbnQvdG91Y2gtaW5saW5l
cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90b3VjaGFkanVzdG1lbnQvdG91Y2gtaW5saW5l
cy1leHBlY3RlZC50eHQKaW5kZXggNjNmZDRmMDA2M2QwYzg4MzlhNjNmYTE0ZmRlNjEzMmMyZTA5
YWJmOS4uMDA0ZjAzNmYzMWViNzBiYjgzNTMzM2Y5YWNkOTE1ZTQyNmRmNTRhMSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50L3RvdWNoLWlubGluZXMtZXhwZWN0ZWQudHh0
CisrKyBiL0xheW91dFRlc3RzL3RvdWNoYWRqdXN0bWVudC90b3VjaC1pbmxpbmVzLWV4cGVjdGVk
LnR4dApAQCAtMSwyOCArMSwyMiBAQAotc29tZSBsaW5rCi1zb21lIGxpbmsgYnJlYWtpbmcgbGlu
ZXMgYW5kIGxpbmsKLWhvbGEgbXVuZG8hIGEgc3BsaXQgdXAgbGluawotaGVsbG8gd29ybGQgc29t
ZSBsaW5rIGFsc28gYnJlYWtpbmcKLWhpIHRoZXJlIHNvbWUgbGluayB0aGF0IGlzIGJyZWFraW5n
IG11bHRpcGxlIGxpbmVzIGp1c3QgZm9yIHRoZSB2ZXJ5IGZ1biBvZiBpdAotCi1UZXN0IHRvdWNo
LWFkanVzdG1lbnQgb24gaW5saW5lIGxpbmtzLiBNYWtpbmcgc3VyZSB3ZSBjYW4gaGl0IG92ZXIg
bGluZS1icmVha3MsIGFuZCBjYW4gbWlzcyB3aGVuIHRhcHBpbmcgYmV0d2VlbiBwYXJ0cyBvZiBh
IGxpbmUtYnJva2VuIGxpbmsuCitUZXN0cyB0b3VjaC1hZGp1c3RtZW50IG9uIGlubGluZSBsaW5r
cy4gTWFraW5nIHN1cmUgd2UgY2FuIGhpdCBvdmVyIGxpbmUtYnJlYWtzLCBhbmQgY2FuIG1pc3Mg
d2hlbiB0YXBwaW5nIGJldHdlZW4gcGFydHMgb2YgYSBsaW5lLWJyb2tlbiBsaW5rLgogCiBPbiBz
dWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dl
ZCBieSAiVEVTVCBDT01QTEVURSIuCiAKIAogVGVzdCBzb21lIGRpcmVjdCBoaXRzLgotUEFTUyBh
ZGp1c3RlZE5vZGUuaWQgaXMgIjEiCi1QQVNTIGFkanVzdGVkTm9kZS5pZCBpcyAiMiIKLVBBU1Mg
YWRqdXN0ZWROb2RlLmlkIGlzICI0IgotUEFTUyBhZGp1c3RlZE5vZGUuaWQgaXMgIjYiCitQQVNT
IGFkanVzdGVkIG5vZGUgd2FzIEEjMS4KK1BBU1MgYWRqdXN0ZWQgbm9kZSB3YXMgQSMyLgorUEFT
UyBhZGp1c3RlZCBub2RlIHdhcyBBIzQuCitQQVNTIGFkanVzdGVkIG5vZGUgd2FzIEEjNi4KIFRl
c3QgYSBmZXcgZGlyZWN0IG1pc3Nlcy4KLVBBU1MgYWRqdXN0ZWROb2RlIGlzIG51bGwKLVBBU1Mg
YWRqdXN0ZWROb2RlIGlzIG51bGwKLVRlc3Qgc29tZSBpbi1kaXJlY3QgaGl0cy4KLVBBU1MgYWRq
dXN0ZWROb2RlLmlkIGlzICIyIgotUEFTUyBhZGp1c3RlZE5vZGUuaWQgaXMgIjMiCi1QQVNTIGFk
anVzdGVkTm9kZS5pZCBpcyAiNCIKLVBBU1MgYWRqdXN0ZWROb2RlLmlkIGlzICI0IgotUEFTUyBh
ZGp1c3RlZE5vZGUuaWQgaXMgIjYiCitQQVNTIGFkanVzdGVkIG5vZGUgd2FzIG51bGwuCitQQVNT
IGFkanVzdGVkIG5vZGUgd2FzIG51bGwuCitUZXN0IHNvbWUgaW5kaXJlY3QgaGl0cy4KK1BBU1Mg
YWRqdXN0ZWQgbm9kZSB3YXMgQSMyLgorUEFTUyBhZGp1c3RlZCBub2RlIHdhcyBBIzMuCitQQVNT
IGFkanVzdGVkIG5vZGUgd2FzIEEjNC4KK1BBU1MgYWRqdXN0ZWQgbm9kZSB3YXMgQSM0LgorUEFT
UyBhZGp1c3RlZCBub2RlIHdhcyBBIzYuCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CiAKIFRFU1QgQ09NUExFVEUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RvdWNoYWRqdXN0bWVu
dC90b3VjaC1pbmxpbmVzLmh0bWwgYi9MYXlvdXRUZXN0cy90b3VjaGFkanVzdG1lbnQvdG91Y2gt
aW5saW5lcy5odG1sCmluZGV4IDQ5NGUxNmNmOGIyZjIwZGU3ZTE3YTQxMTQwMzVjMTU4ZjNjOTkw
NzEuLmYzYzE5M2ZlYzc1OTVlM2Y1ZTdkYWIzNTQ1Yzg2NTEwYzUxZGZkYzQgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3RvdWNoYWRqdXN0bWVudC90b3VjaC1pbmxpbmVzLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50L3RvdWNoLWlubGluZXMuaHRtbApAQCAtMSwxMDYgKzEs
NzcgQEAKKzwhRE9DVFlQRSBodG1sPgogPGh0bWw+CiA8aGVhZD4KKyAgICA8dGl0bGU+VG91Y2gg
QWRqdXN0bWVudCA6IElubGluZXMgYW5kIGxpbmUtYnJlYWtzIC0gYnVnIDc4ODAxPC90aXRsZT4K
ICAgICA8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdG91Y2hhZGp1c3RtZW50LmpzIj48
L3NjcmlwdD4KICAgICA8c3R5bGU+Ci0gICAgICAgIC50ZXN0Y29udGFpbmVyIHsgcG9zaXRpb246
IGFic29sdXRlOyB0b3A6IDBweDsgbGVmdDogMHB4OyBmb250OiAxNnB4IEFoZW07IGxpbmUtaGVp
Z2h0OiAyMHB4IH0KKyAgICAgICAgI3NhbmRib3ggeyBwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDog
MHB4OyBsZWZ0OiAwcHg7IGZvbnQ6IDE2cHggQWhlbTsgbGluZS1oZWlnaHQ6IDIwcHggfQogICAg
IDwvc3R5bGU+CiA8L2hlYWQ+Ci08Ym9keSBvbmxvYWQ9InJ1blRlc3RzKCkiPgotCi08ZGl2IGNs
YXNzPXRlc3Rjb250YWluZXI+Ci08cCBzdHlsZT0id2lkdGg6IDIyZW07Ij4KLTxhIGlkPSIxIiBo
cmVmPSIjMSI+c29tZSBsaW5rPC9hPjxicj4KLTxhIGlkPSIyIiBocmVmPSIjMiI+c29tZSBsaW5r
IGJyZWFraW5nIGxpbmVzPC9hPiBhbmQgPGEgaWQ9IjMiIGhyZWY9IiMzIj5saW5rPC9hPjxicj4K
LWhvbGEgbXVuZG8hIDxhIGlkPSI0IiBocmVmPSIjNCI+YSBzcGxpdCB1cCBsaW5rPC9hPjxicj4K
LWhlbGxvIHdvcmxkIDxhIGlkPSI1IiBocmVmPSIjNSI+c29tZSBsaW5rIGFsc28gYnJlYWtpbmc8
L2E+PGJyPgotaGkgdGhlcmUgPGEgaWQ9IjYiIGhyZWY9IiM2Ij5zb21lIGxpbmsgdGhhdCBpcyBi
cmVha2luZyBtdWx0aXBsZSBsaW5lcyBqdXN0IGZvciB0aGUgdmVyeSBmdW4gb2YgaXQ8L2E+PGJy
Pjxicj4KLTwvcD4KKzxib2R5PgorCis8ZGl2IGlkPXNhbmRib3g+CisgICAgPHAgc3R5bGU9Indp
ZHRoOiAyMmVtOyI+CisgICAgPGEgaWQ9IjEiIGhyZWY9IiMxIj5zb21lIGxpbms8L2E+PGJyPgor
ICAgIDxhIGlkPSIyIiBocmVmPSIjMiI+c29tZSBsaW5rIGJyZWFraW5nIGxpbmVzPC9hPiBhbmQg
PGEgaWQ9IjMiIGhyZWY9IiMzIj5saW5rPC9hPjxicj4KKyAgICBob2xhIG11bmRvISA8YSBpZD0i
NCIgaHJlZj0iIzQiPmEgc3BsaXQgdXAgbGluazwvYT48YnI+CisgICAgaGVsbG8gd29ybGQgPGEg
aWQ9IjUiIGhyZWY9IiM1Ij5zb21lIGxpbmsgYWxzbyBicmVha2luZzwvYT48YnI+CisgICAgaGkg
dGhlcmUgPGEgaWQ9IjYiIGhyZWY9IiM2Ij5zb21lIGxpbmsgdGhhdCBpcyBicmVha2luZyBtdWx0
aXBsZSBsaW5lcyBqdXN0IGZvciB0aGUgdmVyeSBmdW4gb2YgaXQ8L2E+PGJyPjxicj4KKyAgICA8
L3A+CiA8L2Rpdj4KIAotCiA8cCBpZD0nZGVzY3JpcHRpb24nPjwvcD4KIDxkaXYgaWQ9J2NvbnNv
bGUnPjwvZGl2PgogCiA8c2NyaXB0PgotICAgIHZhciBlbGVtZW50OwotICAgIHZhciBhZGp1c3Rl
ZE5vZGU7Ci0gICAgZnVuY3Rpb24gdGVzdFJvdW5kVG91Y2goeCwgeSwgcmFkaXVzKQotICAgIHsK
LSAgICAgICAgdmFyIHggPSB4IC0gcmFkaXVzOwotICAgICAgICB2YXIgeSA9IHkgLSByYWRpdXM7
Ci0gICAgICAgIHZhciB3aWR0aCA9IHJhZGl1cyAqIDI7Ci0gICAgICAgIHZhciBoZWlnaHQgPSBy
YWRpdXMgKiAyOwotICAgICAgICB2YXIgYWRqdXN0ZWROb2RlID0gaW50ZXJuYWxzLnRvdWNoTm9k
ZUFkanVzdGVkVG9CZXN0Q2xpY2thYmxlTm9kZSh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBkb2N1bWVu
dCk7Ci0gICAgICAgIGlmIChhZGp1c3RlZE5vZGUgJiYgYWRqdXN0ZWROb2RlLm5vZGVUeXBlID09
IDMpIC8vIFRFWFQgbm9kZQotICAgICAgICAgICAgYWRqdXN0ZWROb2RlID0gYWRqdXN0ZWROb2Rl
LnBhcmVudE5vZGU7Ci0gICAgICAgIHJldHVybiBhZGp1c3RlZE5vZGU7Ci0gICAgfQorICAgIC8v
IFNldCB1cCBzaG9ydGN1dCBhY2Nlc3MgdG8gZWxlbWVudHMKKyAgICB2YXIgZSA9IHt9OworICAg
IFsnc2FuZGJveCcsICcxJywgJzInLCAnMycsICc0JywgJzUnLCAnNiddLmZvckVhY2goZnVuY3Rp
b24oYSkgeworICAgICAgICBlW2FdID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYSk7CisgICAg
fSk7CiAKICAgICBmdW5jdGlvbiB0ZXN0RGlyZWN0VG91Y2hlcygpCiAgICAgewogICAgICAgICBk
ZWJ1ZygnVGVzdCBzb21lIGRpcmVjdCBoaXRzLicpOwotCi0gICAgICAgIGFkanVzdGVkTm9kZSA9
IHRlc3RSb3VuZFRvdWNoKDMwLCAyNSwgMTApCi0gICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
ZygnYWRqdXN0ZWROb2RlLmlkJywgJzEnKTsKLQotICAgICAgICBhZGp1c3RlZE5vZGUgPSB0ZXN0
Um91bmRUb3VjaCgyMCwgNjUsIDEwKQotICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2Fk
anVzdGVkTm9kZS5pZCcsICcyJyk7Ci0KLSAgICAgICAgYWRqdXN0ZWROb2RlID0gdGVzdFJvdW5k
VG91Y2goMjIwLCA4NSwgMTApCi0gICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnYWRqdXN0
ZWROb2RlLmlkJywgJzQnKTsKLQotICAgICAgICBhZGp1c3RlZE5vZGUgPSB0ZXN0Um91bmRUb3Vj
aCg4MCwgMTk1LCAxMCkKLSAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdhZGp1c3RlZE5v
ZGUuaWQnLCAnNicpOworICAgICAgICB0ZXN0VG91Y2hQb2ludCh0b3VjaFBvaW50KDMwLCAyNSwg
MTApLCBlWycxJ10pOworICAgICAgICB0ZXN0VG91Y2hQb2ludCh0b3VjaFBvaW50KDIwLCA2NSwg
MTApLCBlWycyJ10pOworICAgICAgICB0ZXN0VG91Y2hQb2ludCh0b3VjaFBvaW50KDIyMCwgODUs
IDEwKSwgZVsnNCddKTsKKyAgICAgICAgdGVzdFRvdWNoUG9pbnQodG91Y2hQb2ludCg4MCwgMTk1
LCAxMCksIGVbJzYnXSk7CiAgICAgfQogCiAgICAgZnVuY3Rpb24gdGVzdERpcmVjdE1pc3Nlcygp
CiAgICAgewogICAgICAgICBkZWJ1ZygnVGVzdCBhIGZldyBkaXJlY3QgbWlzc2VzLicpOwotCiAg
ICAgICAgIC8vIEhpdCAnYW5kJyBiZXR3ZW4gbGluayAyIGFuZCAzCi0gICAgICAgIGFkanVzdGVk
Tm9kZSA9IHRlc3RSb3VuZFRvdWNoKDEyMCwgNzUsIDYpCi0gICAgICAgIHNob3VsZEJlTnVsbCgn
YWRqdXN0ZWROb2RlJyk7Ci0KKyAgICAgICAgdGVzdFRvdWNoUG9pbnQodG91Y2hQb2ludCgxMjAs
IDc1LCA2KSwgbnVsbCk7CiAgICAgICAgIC8vIEhpdCAnaGkgdGhlcmUnIGFib3ZlIGFuZCB0byB0
aGUgbGVmdCBvZiBsaW5rIDYuCi0gICAgICAgIGFkanVzdGVkTm9kZSA9IHRlc3RSb3VuZFRvdWNo
KDcyLCAxNjYsIDYpCi0gICAgICAgIHNob3VsZEJlTnVsbCgnYWRqdXN0ZWROb2RlJyk7Ci0KKyAg
ICAgICAgdGVzdFRvdWNoUG9pbnQodG91Y2hQb2ludCg3MiwgMTY2LCA2KSwgbnVsbCk7CiAgICAg
fQogCiAgICAgZnVuY3Rpb24gdGVzdEluZGlyZWN0VG91Y2hlcygpCiAgICAgewotICAgICAgICBk
ZWJ1ZygnVGVzdCBzb21lIGluLWRpcmVjdCBoaXRzLicpOwotCi0gICAgICAgIGFkanVzdGVkTm9k
ZSA9IHRlc3RSb3VuZFRvdWNoKDUwLCA2MCwgMjApCi0gICAgICAgIHNob3VsZEJlRXF1YWxUb1N0
cmluZygnYWRqdXN0ZWROb2RlLmlkJywgJzInKTsKLQotICAgICAgICBhZGp1c3RlZE5vZGUgPSB0
ZXN0Um91bmRUb3VjaCgxNzIsIDgyLCAyMCkKLSAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCdhZGp1c3RlZE5vZGUuaWQnLCAnMycpOwotCi0gICAgICAgIGFkanVzdGVkTm9kZSA9IHRlc3RS
b3VuZFRvdWNoKDIzMCwgNzQsIDIwKQotICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2Fk
anVzdGVkTm9kZS5pZCcsICc0Jyk7Ci0KLSAgICAgICAgYWRqdXN0ZWROb2RlID0gdGVzdFJvdW5k
VG91Y2goMzAsIDEwMCwgMjApCi0gICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnYWRqdXN0
ZWROb2RlLmlkJywgJzQnKTsKKyAgICAgICAgZGVidWcoJ1Rlc3Qgc29tZSBpbmRpcmVjdCBoaXRz
LicpOwogCi0gICAgICAgIGFkanVzdGVkTm9kZSA9IHRlc3RSb3VuZFRvdWNoKDI0LCAxNzAsIDIw
KQotICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2FkanVzdGVkTm9kZS5pZCcsICc2Jyk7
CisgICAgICAgIHRlc3RUb3VjaFBvaW50KHRvdWNoUG9pbnQoNTAsIDYwLCAyMCksIGVbJzInXSk7
CisgICAgICAgIHRlc3RUb3VjaFBvaW50KHRvdWNoUG9pbnQoMTcyLCA4MywgMjApLCBlWyczJ10p
OworICAgICAgICB0ZXN0VG91Y2hQb2ludCh0b3VjaFBvaW50KDIzMCwgNzQsIDIwKSwgZVsnNCdd
KTsKKyAgICAgICAgdGVzdFRvdWNoUG9pbnQodG91Y2hQb2ludCgzMCwgMTAwLCAyMCksIGVbJzQn
XSk7CisgICAgICAgIHRlc3RUb3VjaFBvaW50KHRvdWNoUG9pbnQoMjQsIDE3MCwgMjApLCBlWyc2
J10pOwogCiAgICAgfQogCiAgICAgZnVuY3Rpb24gcnVuVGVzdHMoKQogICAgIHsKICAgICAgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyICYmIHdpbmRvdy5pbnRlcm5hbHMgJiYgaW50ZXJuYWxzLnRv
dWNoTm9kZUFkanVzdGVkVG9CZXN0Q2xpY2thYmxlTm9kZSkgewotICAgICAgICAgICAgZGVzY3Jp
cHRpb24oJ1Rlc3QgdG91Y2gtYWRqdXN0bWVudCBvbiBpbmxpbmUgbGlua3MuIE1ha2luZyBzdXJl
IHdlIGNhbiBoaXQgb3ZlciBsaW5lLWJyZWFrcywgYW5kIGNhbiBtaXNzIHdoZW4gdGFwcGluZyBi
ZXR3ZWVuIHBhcnRzIG9mIGEgbGluZS1icm9rZW4gbGluay4nKTsKLSAgICAgICAgICAgIHRlc3RS
dW5uZXIuZHVtcEFzVGV4dCgpOwotICAgICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25l
KCk7CisgICAgICAgICAgICBkZXNjcmlwdGlvbignVGVzdHMgdG91Y2gtYWRqdXN0bWVudCBvbiBp
bmxpbmUgbGlua3MuIE1ha2luZyBzdXJlIHdlIGNhbiBoaXQgb3ZlciBsaW5lLWJyZWFrcywgYW5k
IGNhbiBtaXNzIHdoZW4gdGFwcGluZyBiZXR3ZWVuIHBhcnRzIG9mIGEgbGluZS1icm9rZW4gbGlu
ay4nKTsKICAgICAgICAgICAgIHRlc3REaXJlY3RUb3VjaGVzKCk7CiAgICAgICAgICAgICB0ZXN0
RGlyZWN0TWlzc2VzKCk7CiAgICAgICAgICAgICB0ZXN0SW5kaXJlY3RUb3VjaGVzKCk7Ci0gICAg
ICAgICAgICBpc1N1Y2Nlc3NmdWxseVBhcnNlZCgpOwotICAgICAgICAgICAgdGVzdFJ1bm5lci5u
b3RpZnlEb25lKCk7CisgICAgICAgICAgICBlWydzYW5kYm94J10uc3R5bGUuZGlzcGxheSA9ICdu
b25lJzsKICAgICAgICAgfQogICAgIH0KKyAgICBydW5UZXN0cygpOwogPC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
IDwvYm9keT4KIDwvaHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>