<?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>147658</bug_id>
          
          <creation_ts>2015-08-04 15:45:10 -0700</creation_ts>
          <short_desc>Web Inspector: Convert miscellaneous view widgets to use ES6 classes</short_desc>
          <delta_ts>2015-08-05 11:24:31 -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>Web Inspector</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>
          
          <blocked>142891</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Blaze Burg">bburg</reporter>
          <assigned_to name="Blaze Burg">bburg</assigned_to>
          <cc>bburg</cc>
    
    <cc>graouts</cc>
    
    <cc>joepeck</cc>
    
    <cc>mattbaker</cc>
    
    <cc>nvasilyev</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1114828</commentid>
    <comment_count>0</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-08-04 15:45:10 -0700</bug_when>
    <thetext>Toolbar, ContentBrowser, and whatever else is left.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1114898</commentid>
    <comment_count>1</comment_count>
      <attachid>258245</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-08-04 17:43:50 -0700</bug_when>
    <thetext>Created attachment 258245
Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1114976</commentid>
    <comment_count>2</comment_count>
      <attachid>258245</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-08-04 22:20:24 -0700</bug_when>
    <thetext>Comment on attachment 258245
Proposed Fix

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

r=me

&gt; Source/WebInspectorUI/UserInterface/Base/Test.js:112
&gt; +    constructor()
&gt; +    {
&gt; +        super();
&gt; +    }

Just drop this constructor so we can test &quot;default constructor&quot; behavior of JSC.

&gt; Source/WebInspectorUI/UserInterface/Views/CSSStyleDeclarationSection.js:-2
&gt; - * Copyright (C) 2013 Apple Inc. All rights reserved.

I believe Devin just put up a patch for this class. Perhaps your patch can just supersede it.

&gt; Source/WebInspectorUI/UserInterface/Views/CSSStyleDeclarationSection.js:34
&gt; +        console.assert(style);

Nit: instanceof.

&gt; Source/WebInspectorUI/UserInterface/Views/ContentBrowser.js:85
&gt; +    }
&gt;      // Public

Style: Empty line.

&gt; Source/WebInspectorUI/UserInterface/Views/QuickConsoleNavigationBar.js:31
&gt; +    constructor(element, navigationItems)
&gt; +    {
&gt; +        super(element, navigationItems);
&gt; +    }

Nit: I think this could be the default constructor. Would be a very good test for JavaScriptCore to just drop this constructor!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1115067</commentid>
    <comment_count>3</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-08-05 11:24:31 -0700</bug_when>
    <thetext>Committed r187968: &lt;http://trac.webkit.org/changeset/187968&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>258245</attachid>
            <date>2015-08-04 17:43:50 -0700</date>
            <delta_ts>2015-08-04 22:20:24 -0700</delta_ts>
            <desc>Proposed Fix</desc>
            <filename>bug-147658-20150804174343.patch</filename>
            <type>text/plain</type>
            <size>98414</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg3OTA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCBl
MWVmMTYyYThjZTJmNTMxYmY5MzUxNTJhNmIyZmY4OTE5NGI3MjNjLi41Yjg4ZGNhYzY0YWQ5ZWEz
YjM1YjE5MDc5MzI3NTVmOWE2YjA0MTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSwyOCBAQAorMjAxNS0wOC0wNCAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKwor
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBDb252ZXJ0IG1pc2NlbGxhbmVvdXMgdmlldyB3aWRnZXRz
IHRvIHVzZSBFUzYgY2xhc3NlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTQ3NjU4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWxvbmcgdGhlIHdheSwgaW5saW5lIGEgZmV3IHN0eWxlIGNsYXNzIG5hbWVz
LgorCisgICAgICAgIEVsaWRlZCBtZWNoYW5pY2FsIGNoYW5nZXMgZnJvbSB0aGUgQ2hhbmdlbG9n
LgorCisgICAgICAgICogVXNlckludGVyZmFjZS9CYXNlL1Rlc3QuanM6CisgICAgICAgICogVXNl
ckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbi5qczoKKyAgICAgICAg
KiBVc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnNvbGVQcm9tcHQuanM6CisgICAgICAgICogVXNlcklu
dGVyZmFjZS9WaWV3cy9Db250ZW50QnJvd3Nlci5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNl
L1ZpZXdzL0NvbnRlbnRWaWV3Q29udGFpbmVyLmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2Uv
Vmlld3MvRE9NVHJlZURhdGFHcmlkTm9kZS5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Zp
ZXdzL0luZGV0ZXJtaW5hdGVQcm9ncmVzc1NwaW5uZXIuanM6CisgICAgICAgICogVXNlckludGVy
ZmFjZS9WaWV3cy9OYXZpZ2F0aW9uQmFyLmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmll
d3MvUHJvYmVTZXREYXRhR3JpZE5vZGUuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3
cy9RdWlja0NvbnNvbGVOYXZpZ2F0aW9uQmFyLmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2Uv
Vmlld3MvVG9vbGJhci5qczoKKwogMjAxNS0wOC0wNCAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxl
LmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBDb252ZXJ0IHJlbWFpbmluZyBDb250ZW50
Vmlld3MgdG8gdXNlIEVTNiBjbGFzc2VzCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNDc1MzQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvQmFzZS9UZXN0LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvQmFzZS9UZXN0LmpzCmluZGV4IGEyODQ1OGMyNmQwYzMzMWVlOTRjYzI0ZjM4
MTNmZDc4MDgyYjA5NDcuLjk2OWFiYzYwNTFiNjcxMmY1MWZmNTc0Y2RjNDMzNTUzY2YyNmExMTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvVGVz
dC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL1Rlc3Qu
anMKQEAgLTEwNCwyNiArMTA0LDIzIEBAIEluc3BlY3RvclRlc3QuZHVtcE1lc3NhZ2VzVG9Db25z
b2xlID0gZmFsc2U7CiAKIC8vIFRoaXMgaXMgYSB3b3JrYXJvdW5kIGZvciB0aGUgZmFjdCB0aGF0
IGl0IHdvdWxkIGJlIGhhcmQgdG8gc2V0IHVwIGEgY29uc3RydWN0b3IsCiAvLyBwcm90b3R5cGUs
IGFuZCBwcm90b3R5cGUgY2hhaW4gZm9yIHRoZSBzaW5nbGV0b24gSW5zcGVjdG9yVGVzdC4KLUlu
c3BlY3RvclRlc3QuRXZlbnREaXNwYXRjaGVyID0gZnVuY3Rpb24oKQorSW5zcGVjdG9yVGVzdC5F
dmVudERpc3BhdGNoZXIgPSBjbGFzcyBFdmVudERpc3BhdGNoZXIgZXh0ZW5kcyBXZWJJbnNwZWN0
b3IuT2JqZWN0CiB7Ci0gICAgLy8gRklYTUU6IENvbnZlcnQgdGhpcyB0byBhIFdlYkluc3BlY3Rv
ci5PYmplY3Qgc3ViY2xhc3MsIGFuZCBjYWxsIHN1cGVyKCkuCi0gICAgLy8gV2ViSW5zcGVjdG9y
Lk9iamVjdC5jYWxsKHRoaXMpOwotfTsKLQotSW5zcGVjdG9yVGVzdC5FdmVudERpc3BhdGNoZXIu
RXZlbnQgPSB7Ci0gICAgVGVzdFBhZ2VEaWRMb2FkOiAiaW5zcGVjdG9yLXRlc3QtdGVzdC1wYWdl
LWRpZC1sb2FkIgotfTsKLQotSW5zcGVjdG9yVGVzdC5FdmVudERpc3BhdGNoZXIucHJvdG90eXBl
ID0gewotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGUsCi0gICAg
Y29uc3RydWN0b3I6IEluc3BlY3RvclRlc3QuRXZlbnREaXNwYXRjaGVyLAorICAgIGNvbnN0cnVj
dG9yKCkKKyAgICB7CisgICAgICAgIHN1cGVyKCk7CisgICAgfQogCi0gICAgZGlzcGF0Y2hFdmVu
dDogZnVuY3Rpb24oZXZlbnQpCisgICAgZGlzcGF0Y2hFdmVudChldmVudCkKICAgICB7CiAgICAg
ICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKGV2ZW50KTsKICAgICB9CiB9OwogCitJ
bnNwZWN0b3JUZXN0LkV2ZW50RGlzcGF0Y2hlci5FdmVudCA9IHsKKyAgICBUZXN0UGFnZURpZExv
YWQ6ICJpbnNwZWN0b3ItdGVzdC10ZXN0LXBhZ2UtZGlkLWxvYWQiCit9OworCiBJbnNwZWN0b3JU
ZXN0LmV2ZW50RGlzcGF0Y2hlciA9IG5ldyBJbnNwZWN0b3JUZXN0LkV2ZW50RGlzcGF0Y2hlcjsK
IAogLy8gTm90ZTogQWRkaXRpb25hbCBJbnNwZWN0b3JUZXN0IG1ldGhvZHMgYXJlIGluY2x1ZGVk
IG9uIGEgcGVyLXRlc3QgYmFzaXMgZnJvbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24uanMgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZURlY2xhcmF0
aW9uU2VjdGlvbi5qcwppbmRleCBlMzAwNDJjYWZkMGFmNDVjZjU4Yjk4YzM0YzY1ZGZkMDg5YTlk
MTE3Li5jNDljMzFjMjU3MWE1MzRiZmE1ZGZkZjRjYjI5NTdjZWFmODFhZTJmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZURlY2xh
cmF0aW9uU2VjdGlvbi5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbi5qcwpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsMTQzICsyMywxMjggQEAK
ICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3Iu
Q1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24gPSBmdW5jdGlvbihkZWxlZ2F0ZSwgc3R5bGUpCitX
ZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24gPSBjbGFzcyBDU1NTdHlsZURl
Y2xhcmF0aW9uU2VjdGlvbiBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIHsKLSAgICAvLyBG
SVhNRTogQ29udmVydCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcywgYW5k
IGNhbGwgc3VwZXIoKS4KLSAgICAvLyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7Ci0K
LSAgICB0aGlzLl9kZWxlZ2F0ZSA9IGRlbGVnYXRlIHx8IG51bGw7Ci0KLSAgICBjb25zb2xlLmFz
c2VydChzdHlsZSk7Ci0gICAgdGhpcy5fc3R5bGUgPSBzdHlsZSB8fCBudWxsOwotICAgIHRoaXMu
X3NlbGVjdG9yRWxlbWVudHMgPSBbXTsKLSAgICB0aGlzLl9ydWxlRGlzYWJsZWQgPSBmYWxzZTsK
LQotICAgIHRoaXMuX2VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAg
ICB0aGlzLl9lbGVtZW50LmNsYXNzTmFtZSA9ICJzdHlsZS1kZWNsYXJhdGlvbi1zZWN0aW9uIjsK
LQotICAgIHRoaXMuX2hlYWRlckVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYi
KTsKLSAgICB0aGlzLl9oZWFkZXJFbGVtZW50LmNsYXNzTmFtZSA9ICJoZWFkZXIiOwotCi0gICAg
dGhpcy5faWNvbkVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbWciKTsKLSAgICB0
aGlzLl9pY29uRWxlbWVudC5jbGFzc05hbWUgPSAiaWNvbiI7Ci0gICAgdGhpcy5faGVhZGVyRWxl
bWVudC5hcHBlbmRDaGlsZCh0aGlzLl9pY29uRWxlbWVudCk7Ci0KLSAgICB0aGlzLl9zZWxlY3Rv
ckVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7Ci0gICAgdGhpcy5fc2Vs
ZWN0b3JFbGVtZW50LmNsYXNzTmFtZSA9ICJzZWxlY3RvciI7Ci0gICAgdGhpcy5fc2VsZWN0b3JF
bGVtZW50LnNldEF0dHJpYnV0ZSgic3BlbGxjaGVjayIsICJmYWxzZSIpOwotICAgIHRoaXMuX3Nl
bGVjdG9yRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW92ZXIiLCB0aGlzLl9oYW5kbGVN
b3VzZU92ZXIuYmluZCh0aGlzKSk7Ci0gICAgdGhpcy5fc2VsZWN0b3JFbGVtZW50LmFkZEV2ZW50
TGlzdGVuZXIoIm1vdXNlb3V0IiwgdGhpcy5faGFuZGxlTW91c2VPdXQuYmluZCh0aGlzKSk7Ci0g
ICAgdGhpcy5fc2VsZWN0b3JFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLCB0aGlz
Ll9oYW5kbGVLZXlEb3duLmJpbmQodGhpcykpOwotICAgIHRoaXMuX3NlbGVjdG9yRWxlbWVudC5h
ZGRFdmVudExpc3RlbmVyKCJrZXl1cCIsIHRoaXMuX2hhbmRsZUtleVVwLmJpbmQodGhpcykpOwot
ICAgIHRoaXMuX3NlbGVjdG9yRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJwYXN0ZSIsIHRoaXMu
X2hhbmRsZVNlbGVjdG9yUGFzdGUuYmluZCh0aGlzKSk7Ci0gICAgdGhpcy5faGVhZGVyRWxlbWVu
dC5hcHBlbmRDaGlsZCh0aGlzLl9zZWxlY3RvckVsZW1lbnQpOwotCi0gICAgdGhpcy5fb3JpZ2lu
RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKLSAgICB0aGlzLl9vcmln
aW5FbGVtZW50LmNsYXNzTmFtZSA9ICJvcmlnaW4iOwotICAgIHRoaXMuX2hlYWRlckVsZW1lbnQu
YXBwZW5kQ2hpbGQodGhpcy5fb3JpZ2luRWxlbWVudCk7Ci0KLSAgICB0aGlzLl9wcm9wZXJ0aWVz
RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgIHRoaXMuX3Byb3Bl
cnRpZXNFbGVtZW50LmNsYXNzTmFtZSA9ICJwcm9wZXJ0aWVzIjsKLQotICAgIHRoaXMuX2VkaXRv
ckFjdGl2ZSA9IGZhbHNlOwotICAgIHRoaXMuX3Byb3BlcnRpZXNUZXh0RWRpdG9yID0gbmV3IFdl
Ykluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvcih0aGlzLCBzdHlsZSk7Ci0g
ICAgdGhpcy5fcHJvcGVydGllc1RleHRFZGl0b3IuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0
b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IuRXZlbnQuQ29udGVudENoYW5nZWQsIHRo
aXMuX2VkaXRvckNvbnRlbnRDaGFuZ2VkLmJpbmQodGhpcykpOwotICAgIHRoaXMuX3Byb3BlcnRp
ZXNUZXh0RWRpdG9yLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFy
YXRpb25UZXh0RWRpdG9yLkV2ZW50LkJsdXJyZWQsIHRoaXMuX2VkaXRvckJsdXJyZWQuYmluZCh0
aGlzKSk7Ci0gICAgdGhpcy5fcHJvcGVydGllc0VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fcHJv
cGVydGllc1RleHRFZGl0b3IuZWxlbWVudCk7Ci0KLSAgICB0aGlzLl9lbGVtZW50LmFwcGVuZENo
aWxkKHRoaXMuX2hlYWRlckVsZW1lbnQpOwotICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQo
dGhpcy5fcHJvcGVydGllc0VsZW1lbnQpOwotCi0gICAgdmFyIGljb25DbGFzc05hbWU7Ci0gICAg
c3dpdGNoIChzdHlsZS50eXBlKSB7Ci0gICAgY2FzZSBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNs
YXJhdGlvbi5UeXBlLlJ1bGU6Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KHN0eWxlLm93bmVyUnVs
ZSk7Ci0KLSAgICAgICAgaWYgKHN0eWxlLmluaGVyaXRlZCkKLSAgICAgICAgICAgIGljb25DbGFz
c05hbWUgPSBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24uSW5oZXJpdGVk
U3R5bGVSdWxlSWNvblN0eWxlQ2xhc3NOYW1lOwotICAgICAgICBlbHNlIGlmIChzdHlsZS5vd25l
clJ1bGUudHlwZSA9PT0gV2ViSW5zcGVjdG9yLkNTU1J1bGUuVHlwZS5BdXRob3IpCi0gICAgICAg
ICAgICBpY29uQ2xhc3NOYW1lID0gV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb25TZWN0
aW9uLkF1dGhvclN0eWxlUnVsZUljb25TdHlsZUNsYXNzTmFtZTsKLSAgICAgICAgZWxzZSBpZiAo
c3R5bGUub3duZXJSdWxlLnR5cGUgPT09IFdlYkluc3BlY3Rvci5DU1NSdWxlLlR5cGUuVXNlcikK
LSAgICAgICAgICAgIGljb25DbGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJh
dGlvblNlY3Rpb24uVXNlclN0eWxlUnVsZUljb25TdHlsZUNsYXNzTmFtZTsKLSAgICAgICAgZWxz
ZSBpZiAoc3R5bGUub3duZXJSdWxlLnR5cGUgPT09IFdlYkluc3BlY3Rvci5DU1NSdWxlLlR5cGUu
VXNlckFnZW50KQotICAgICAgICAgICAgaWNvbkNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5DU1NT
dHlsZURlY2xhcmF0aW9uU2VjdGlvbi5Vc2VyQWdlbnRTdHlsZVJ1bGVJY29uU3R5bGVDbGFzc05h
bWU7Ci0gICAgICAgIGVsc2UgaWYgKHN0eWxlLm93bmVyUnVsZS50eXBlID09PSBXZWJJbnNwZWN0
b3IuQ1NTUnVsZS5UeXBlLkluc3BlY3RvcikKLSAgICAgICAgICAgIGljb25DbGFzc05hbWUgPSBX
ZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24uSW5zcGVjdG9yU3R5bGVSdWxl
SWNvblN0eWxlQ2xhc3NOYW1lOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgV2ViSW5zcGVj
dG9yLkNTU1N0eWxlRGVjbGFyYXRpb24uVHlwZS5JbmxpbmU6Ci0gICAgY2FzZSBXZWJJbnNwZWN0
b3IuQ1NTU3R5bGVEZWNsYXJhdGlvbi5UeXBlLkF0dHJpYnV0ZToKLSAgICAgICAgaWYgKHN0eWxl
LmluaGVyaXRlZCkKLSAgICAgICAgICAgIGljb25DbGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuQ1NT
U3R5bGVEZWNsYXJhdGlvblNlY3Rpb24uSW5oZXJpdGVkRWxlbWVudFN0eWxlUnVsZUljb25TdHls
ZUNsYXNzTmFtZTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgaWNvbkNsYXNzTmFtZSA9IFdl
Ykluc3BlY3Rvci5ET01UcmVlRWxlbWVudFBhdGhDb21wb25lbnQuRE9NRWxlbWVudEljb25TdHls
ZUNsYXNzTmFtZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQorICAgIGNvbnN0cnVjdG9yKGRlbGVn
YXRlLCBzdHlsZSkKKyAgICB7CisgICAgICAgIHN1cGVyKCk7CiAKLSAgICAvLyBNYXRjaGVzIGFs
bCBzaXR1YXRpb25zIGV4Y2VwdCBmb3IgVXNlciBBZ2VudCBzdHlsZXMuCi0gICAgaWYgKCEoc3R5
bGUub3duZXJSdWxlICYmIHN0eWxlLm93bmVyUnVsZS50eXBlID09PSBXZWJJbnNwZWN0b3IuQ1NT
UnVsZS5UeXBlLlVzZXJBZ2VudCkpIHsKLSAgICAgICAgdGhpcy5faWNvbkVsZW1lbnQuY2xhc3NM
aXN0LmFkZCgidG9nZ2xlLWFibGUiKTsKLSAgICAgICAgdGhpcy5faWNvbkVsZW1lbnQudGl0bGUg
PSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNvbW1lbnQgQWxsIFByb3BlcnRpZXMiKTsKLSAgICAg
ICAgdGhpcy5faWNvbkVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl90b2dn
bGVSdWxlT25PZmYuYmluZCh0aGlzKSk7Ci0gICAgfQorICAgICAgICB0aGlzLl9kZWxlZ2F0ZSA9
IGRlbGVnYXRlIHx8IG51bGw7CiAKLSAgICBjb25zb2xlLmFzc2VydChpY29uQ2xhc3NOYW1lKTsK
LSAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoaWNvbkNsYXNzTmFtZSk7CisgICAgICAg
IGNvbnNvbGUuYXNzZXJ0KHN0eWxlKTsKKyAgICAgICAgdGhpcy5fc3R5bGUgPSBzdHlsZSB8fCBu
dWxsOworICAgICAgICB0aGlzLl9zZWxlY3RvckVsZW1lbnRzID0gW107CisgICAgICAgIHRoaXMu
X3J1bGVEaXNhYmxlZCA9IGZhbHNlOwogCi0gICAgaWYgKCFzdHlsZS5lZGl0YWJsZSkKLSAgICAg
ICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xh
cmF0aW9uU2VjdGlvbi5Mb2NrZWRTdHlsZUNsYXNzTmFtZSk7Ci0gICAgZWxzZSBpZiAoc3R5bGUu
b3duZXJSdWxlKSB7Ci0gICAgICAgIHRoaXMuX3N0eWxlLm93bmVyUnVsZS5hZGRFdmVudExpc3Rl
bmVyKFdlYkluc3BlY3Rvci5DU1NSdWxlLkV2ZW50LlNlbGVjdG9yQ2hhbmdlZCwgdGhpcy5fbWFy
a1NlbGVjdG9yLmJpbmQodGhpcykpOwotICAgICAgICB0aGlzLl9jb21taXRTZWxlY3RvcktleWJv
YXJkU2hvcnRjdXQgPSBuZXcgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQobnVsbCwgV2Vi
SW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuS2V5LkVudGVyLCB0aGlzLl9jb21taXRTZWxlY3Rv
ci5iaW5kKHRoaXMpLCB0aGlzLl9zZWxlY3RvckVsZW1lbnQpOwotICAgICAgICB0aGlzLl9zZWxl
Y3RvckVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiYmx1ciIsIHRoaXMuX2NvbW1pdFNlbGVjdG9y
LmJpbmQodGhpcykpOwotICAgIH0gZWxzZQotICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlz
dC5hZGQoV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb25TZWN0aW9uLlNlbGVjdG9yTG9j
a2VkU3R5bGVDbGFzc05hbWUpOworICAgICAgICB0aGlzLl9lbGVtZW50ID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZCgi
c3R5bGUtZGVjbGFyYXRpb24tc2VjdGlvbiIpOwogCi0gICAgaWYgKCFXZWJJbnNwZWN0b3IuQ1NT
U3R5bGVEZWNsYXJhdGlvblNlY3Rpb24uX2dlbmVyYXRlZExvY2tJbWFnZXMpIHsKLSAgICAgICAg
V2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb25TZWN0aW9uLl9nZW5lcmF0ZWRMb2NrSW1h
Z2VzID0gdHJ1ZTsKKyAgICAgICAgdGhpcy5faGVhZGVyRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImRpdiIpOworICAgICAgICB0aGlzLl9oZWFkZXJFbGVtZW50LmNsYXNzTGlzdC5h
ZGQoImhlYWRlciIpOwogCi0gICAgICAgIHZhciBzcGVjaWZpY2F0aW9ucyA9IHsic3R5bGUtbG9j
ay1ub3JtYWwiOiB7ZmlsbENvbG9yOiBbMCwgMCwgMCwgMC41XX19OwotICAgICAgICBnZW5lcmF0
ZUNvbG9yZWRJbWFnZXNGb3JDU1MoIkltYWdlcy9Mb2NrZWQuc3ZnIiwgc3BlY2lmaWNhdGlvbnMs
IDgsIDEwKTsKLSAgICB9CisgICAgICAgIHRoaXMuX2ljb25FbGVtZW50ID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgiaW1nIik7CisgICAgICAgIHRoaXMuX2ljb25FbGVtZW50LmNsYXNzTGlzdC5h
ZGQoImljb24iKTsKKyAgICAgICAgdGhpcy5faGVhZGVyRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlz
Ll9pY29uRWxlbWVudCk7CiAKLSAgICB0aGlzLnJlZnJlc2goKTsKKyAgICAgICAgdGhpcy5fc2Vs
ZWN0b3JFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOworICAgICAgICB0
aGlzLl9zZWxlY3RvckVsZW1lbnQuY2xhc3NMaXN0LmFkZCgic2VsZWN0b3IiKTsKKyAgICAgICAg
dGhpcy5fc2VsZWN0b3JFbGVtZW50LnNldEF0dHJpYnV0ZSgic3BlbGxjaGVjayIsICJmYWxzZSIp
OworICAgICAgICB0aGlzLl9zZWxlY3RvckVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vv
dmVyIiwgdGhpcy5faGFuZGxlTW91c2VPdmVyLmJpbmQodGhpcykpOworICAgICAgICB0aGlzLl9z
ZWxlY3RvckVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VvdXQiLCB0aGlzLl9oYW5kbGVN
b3VzZU91dC5iaW5kKHRoaXMpKTsKKyAgICAgICAgdGhpcy5fc2VsZWN0b3JFbGVtZW50LmFkZEV2
ZW50TGlzdGVuZXIoImtleWRvd24iLCB0aGlzLl9oYW5kbGVLZXlEb3duLmJpbmQodGhpcykpOwor
ICAgICAgICB0aGlzLl9zZWxlY3RvckVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigia2V5dXAiLCB0
aGlzLl9oYW5kbGVLZXlVcC5iaW5kKHRoaXMpKTsKKyAgICAgICAgdGhpcy5fc2VsZWN0b3JFbGVt
ZW50LmFkZEV2ZW50TGlzdGVuZXIoInBhc3RlIiwgdGhpcy5faGFuZGxlU2VsZWN0b3JQYXN0ZS5i
aW5kKHRoaXMpKTsKKyAgICAgICAgdGhpcy5faGVhZGVyRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlz
Ll9zZWxlY3RvckVsZW1lbnQpOwogCi0gICAgdGhpcy5faGVhZGVyRWxlbWVudC5hZGRFdmVudExp
c3RlbmVyKCJjb250ZXh0bWVudSIsIHRoaXMuX2hhbmRsZUNvbnRleHRNZW51RXZlbnQuYmluZCh0
aGlzKSk7Ci19OworICAgICAgICB0aGlzLl9vcmlnaW5FbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgic3BhbiIpOworICAgICAgICB0aGlzLl9vcmlnaW5FbGVtZW50LmNsYXNzTGlzdC5h
ZGQoIm9yaWdpbiIpOworICAgICAgICB0aGlzLl9oZWFkZXJFbGVtZW50LmFwcGVuZENoaWxkKHRo
aXMuX29yaWdpbkVsZW1lbnQpOwogCi1XZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblNl
Y3Rpb24uTG9ja2VkU3R5bGVDbGFzc05hbWUgPSAibG9ja2VkIjsKLVdlYkluc3BlY3Rvci5DU1NT
dHlsZURlY2xhcmF0aW9uU2VjdGlvbi5TZWxlY3RvckxvY2tlZFN0eWxlQ2xhc3NOYW1lID0gInNl
bGVjdG9yLWxvY2tlZCI7Ci1XZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24u
U2VsZWN0b3JJbnZhbGlkQ2xhc3NOYW1lID0gImludmFsaWQtc2VsZWN0b3IiOwotV2ViSW5zcGVj
dG9yLkNTU1N0eWxlRGVjbGFyYXRpb25TZWN0aW9uLkxhc3RJbkdyb3VwU3R5bGVDbGFzc05hbWUg
PSAibGFzdC1pbi1ncm91cCI7Ci1XZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rp
b24uTWF0Y2hlZFNlbGVjdG9yRWxlbWVudFN0eWxlQ2xhc3NOYW1lID0gIm1hdGNoZWQiOworICAg
ICAgICB0aGlzLl9wcm9wZXJ0aWVzRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRp
diIpOworICAgICAgICB0aGlzLl9wcm9wZXJ0aWVzRWxlbWVudC5jbGFzc0xpc3QuYWRkKCJwcm9w
ZXJ0aWVzIik7CiAKLVdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbi5BdXRo
b3JTdHlsZVJ1bGVJY29uU3R5bGVDbGFzc05hbWUgPSAiYXV0aG9yLXN0eWxlLXJ1bGUtaWNvbiI7
Ci1XZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24uVXNlclN0eWxlUnVsZUlj
b25TdHlsZUNsYXNzTmFtZSA9ICJ1c2VyLXN0eWxlLXJ1bGUtaWNvbiI7Ci1XZWJJbnNwZWN0b3Iu
Q1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24uVXNlckFnZW50U3R5bGVSdWxlSWNvblN0eWxlQ2xh
c3NOYW1lID0gInVzZXItYWdlbnQtc3R5bGUtcnVsZS1pY29uIjsKLVdlYkluc3BlY3Rvci5DU1NT
dHlsZURlY2xhcmF0aW9uU2VjdGlvbi5JbnNwZWN0b3JTdHlsZVJ1bGVJY29uU3R5bGVDbGFzc05h
bWUgPSAiaW5zcGVjdG9yLXN0eWxlLXJ1bGUtaWNvbiI7Ci1XZWJJbnNwZWN0b3IuQ1NTU3R5bGVE
ZWNsYXJhdGlvblNlY3Rpb24uSW5oZXJpdGVkU3R5bGVSdWxlSWNvblN0eWxlQ2xhc3NOYW1lID0g
ImluaGVyaXRlZC1zdHlsZS1ydWxlLWljb24iOwotV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFy
YXRpb25TZWN0aW9uLkluaGVyaXRlZEVsZW1lbnRTdHlsZVJ1bGVJY29uU3R5bGVDbGFzc05hbWUg
PSAiaW5oZXJpdGVkLWVsZW1lbnQtc3R5bGUtcnVsZS1pY29uIjsKKyAgICAgICAgdGhpcy5fZWRp
dG9yQWN0aXZlID0gZmFsc2U7CisgICAgICAgIHRoaXMuX3Byb3BlcnRpZXNUZXh0RWRpdG9yID0g
bmV3IFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvcih0aGlzLCBzdHls
ZSk7CisgICAgICAgIHRoaXMuX3Byb3BlcnRpZXNUZXh0RWRpdG9yLmFkZEV2ZW50TGlzdGVuZXIo
V2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yLkV2ZW50LkNvbnRlbnRD
aGFuZ2VkLCB0aGlzLl9lZGl0b3JDb250ZW50Q2hhbmdlZC5iaW5kKHRoaXMpKTsKKyAgICAgICAg
dGhpcy5fcHJvcGVydGllc1RleHRFZGl0b3IuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3Iu
Q1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IuRXZlbnQuQmx1cnJlZCwgdGhpcy5fZWRpdG9y
Qmx1cnJlZC5iaW5kKHRoaXMpKTsKKyAgICAgICAgdGhpcy5fcHJvcGVydGllc0VsZW1lbnQuYXBw
ZW5kQ2hpbGQodGhpcy5fcHJvcGVydGllc1RleHRFZGl0b3IuZWxlbWVudCk7CisKKyAgICAgICAg
dGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9oZWFkZXJFbGVtZW50KTsKKyAgICAgICAg
dGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9wcm9wZXJ0aWVzRWxlbWVudCk7CisKKyAg
ICAgICAgdmFyIGljb25DbGFzc05hbWU7CisgICAgICAgIHN3aXRjaCAoc3R5bGUudHlwZSkgewor
ICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uLlR5cGUuUnVsZToK
KyAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHN0eWxlLm93bmVyUnVsZSk7CisKKyAgICAgICAg
ICAgIGlmIChzdHlsZS5pbmhlcml0ZWQpCisgICAgICAgICAgICAgICAgaWNvbkNsYXNzTmFtZSA9
IFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbi5Jbmhlcml0ZWRTdHlsZVJ1
bGVJY29uU3R5bGVDbGFzc05hbWU7CisgICAgICAgICAgICBlbHNlIGlmIChzdHlsZS5vd25lclJ1
bGUudHlwZSA9PT0gV2ViSW5zcGVjdG9yLkNTU1J1bGUuVHlwZS5BdXRob3IpCisgICAgICAgICAg
ICAgICAgaWNvbkNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uU2Vj
dGlvbi5BdXRob3JTdHlsZVJ1bGVJY29uU3R5bGVDbGFzc05hbWU7CisgICAgICAgICAgICBlbHNl
IGlmIChzdHlsZS5vd25lclJ1bGUudHlwZSA9PT0gV2ViSW5zcGVjdG9yLkNTU1J1bGUuVHlwZS5V
c2VyKQorICAgICAgICAgICAgICAgIGljb25DbGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuQ1NTU3R5
bGVEZWNsYXJhdGlvblNlY3Rpb24uVXNlclN0eWxlUnVsZUljb25TdHlsZUNsYXNzTmFtZTsKKyAg
ICAgICAgICAgIGVsc2UgaWYgKHN0eWxlLm93bmVyUnVsZS50eXBlID09PSBXZWJJbnNwZWN0b3Iu
Q1NTUnVsZS5UeXBlLlVzZXJBZ2VudCkKKyAgICAgICAgICAgICAgICBpY29uQ2xhc3NOYW1lID0g
V2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb25TZWN0aW9uLlVzZXJBZ2VudFN0eWxlUnVs
ZUljb25TdHlsZUNsYXNzTmFtZTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHN0eWxlLm93bmVyUnVs
ZS50eXBlID09PSBXZWJJbnNwZWN0b3IuQ1NTUnVsZS5UeXBlLkluc3BlY3RvcikKKyAgICAgICAg
ICAgICAgICBpY29uQ2xhc3NOYW1lID0gV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb25T
ZWN0aW9uLkluc3BlY3RvclN0eWxlUnVsZUljb25TdHlsZUNsYXNzTmFtZTsKKyAgICAgICAgICAg
IGJyZWFrOwogCi1XZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24ucHJvdG90
eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlv
blNlY3Rpb24sCisgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb24u
VHlwZS5JbmxpbmU6CisgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRp
b24uVHlwZS5BdHRyaWJ1dGU6CisgICAgICAgICAgICBpZiAoc3R5bGUuaW5oZXJpdGVkKQorICAg
ICAgICAgICAgICAgIGljb25DbGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJh
dGlvblNlY3Rpb24uSW5oZXJpdGVkRWxlbWVudFN0eWxlUnVsZUljb25TdHlsZUNsYXNzTmFtZTsK
KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBpY29uQ2xhc3NOYW1lID0gV2ViSW5z
cGVjdG9yLkRPTVRyZWVFbGVtZW50UGF0aENvbXBvbmVudC5ET01FbGVtZW50SWNvblN0eWxlQ2xh
c3NOYW1lOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICAvLyBNYXRj
aGVzIGFsbCBzaXR1YXRpb25zIGV4Y2VwdCBmb3IgVXNlciBBZ2VudCBzdHlsZXMuCisgICAgICAg
IGlmICghKHN0eWxlLm93bmVyUnVsZSAmJiBzdHlsZS5vd25lclJ1bGUudHlwZSA9PT0gV2ViSW5z
cGVjdG9yLkNTU1J1bGUuVHlwZS5Vc2VyQWdlbnQpKSB7CisgICAgICAgICAgICB0aGlzLl9pY29u
RWxlbWVudC5jbGFzc0xpc3QuYWRkKCJ0b2dnbGUtYWJsZSIpOworICAgICAgICAgICAgdGhpcy5f
aWNvbkVsZW1lbnQudGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNvbW1lbnQgQWxsIFBy
b3BlcnRpZXMiKTsKKyAgICAgICAgICAgIHRoaXMuX2ljb25FbGVtZW50LmFkZEV2ZW50TGlzdGVu
ZXIoImNsaWNrIiwgdGhpcy5fdG9nZ2xlUnVsZU9uT2ZmLmJpbmQodGhpcykpOworICAgICAgICB9
CisKKyAgICAgICAgY29uc29sZS5hc3NlcnQoaWNvbkNsYXNzTmFtZSk7CisgICAgICAgIHRoaXMu
X2VsZW1lbnQuY2xhc3NMaXN0LmFkZChpY29uQ2xhc3NOYW1lKTsKKworICAgICAgICBpZiAoIXN0
eWxlLmVkaXRhYmxlKQorICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdl
Ykluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbi5Mb2NrZWRTdHlsZUNsYXNzTmFt
ZSk7CisgICAgICAgIGVsc2UgaWYgKHN0eWxlLm93bmVyUnVsZSkgeworICAgICAgICAgICAgdGhp
cy5fc3R5bGUub3duZXJSdWxlLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkNTU1J1bGUu
RXZlbnQuU2VsZWN0b3JDaGFuZ2VkLCB0aGlzLl9tYXJrU2VsZWN0b3IuYmluZCh0aGlzKSk7Cisg
ICAgICAgICAgICB0aGlzLl9jb21taXRTZWxlY3RvcktleWJvYXJkU2hvcnRjdXQgPSBuZXcgV2Vi
SW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQobnVsbCwgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hv
cnRjdXQuS2V5LkVudGVyLCB0aGlzLl9jb21taXRTZWxlY3Rvci5iaW5kKHRoaXMpLCB0aGlzLl9z
ZWxlY3RvckVsZW1lbnQpOworICAgICAgICAgICAgdGhpcy5fc2VsZWN0b3JFbGVtZW50LmFkZEV2
ZW50TGlzdGVuZXIoImJsdXIiLCB0aGlzLl9jb21taXRTZWxlY3Rvci5iaW5kKHRoaXMpKTsKKyAg
ICAgICAgfSBlbHNlCisgICAgICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoV2Vi
SW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb25TZWN0aW9uLlNlbGVjdG9yTG9ja2VkU3R5bGVD
bGFzc05hbWUpOworCisgICAgICAgIGlmICghV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRp
b25TZWN0aW9uLl9nZW5lcmF0ZWRMb2NrSW1hZ2VzKSB7CisgICAgICAgICAgICBXZWJJbnNwZWN0
b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24uX2dlbmVyYXRlZExvY2tJbWFnZXMgPSB0cnVl
OworCisgICAgICAgICAgICB2YXIgc3BlY2lmaWNhdGlvbnMgPSB7InN0eWxlLWxvY2stbm9ybWFs
Ijoge2ZpbGxDb2xvcjogWzAsIDAsIDAsIDAuNV19fTsKKyAgICAgICAgICAgIGdlbmVyYXRlQ29s
b3JlZEltYWdlc0ZvckNTUygiSW1hZ2VzL0xvY2tlZC5zdmciLCBzcGVjaWZpY2F0aW9ucywgOCwg
MTApOworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5yZWZyZXNoKCk7CisKKyAgICAgICAgdGhp
cy5faGVhZGVyRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjb250ZXh0bWVudSIsIHRoaXMuX2hh
bmRsZUNvbnRleHRNZW51RXZlbnQuYmluZCh0aGlzKSk7CisgICAgfQogCiAgICAgLy8gUHVibGlj
CiAKICAgICBnZXQgZWxlbWVudCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVu
dDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBzdHlsZSgpCiAgICAgewogICAgICAgICByZXR1
cm4gdGhpcy5fc3R5bGU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgbGFzdEluR3JvdXAoKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKFdl
Ykluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbi5MYXN0SW5Hcm91cFN0eWxlQ2xh
c3NOYW1lKTsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCBsYXN0SW5Hcm91cChsYXN0KQogICAg
IHsKQEAgLTE2NywxOSArMTUyLDE5IEBAIFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9u
U2VjdGlvbi5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlz
dC5hZGQoV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb25TZWN0aW9uLkxhc3RJbkdyb3Vw
U3R5bGVDbGFzc05hbWUpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICB0aGlzLl9lbGVtZW50
LmNsYXNzTGlzdC5yZW1vdmUoV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb25TZWN0aW9u
Lkxhc3RJbkdyb3VwU3R5bGVDbGFzc05hbWUpOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGZv
Y3VzZWQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3Byb3BlcnRpZXNUZXh0RWRpdG9y
LmZvY3VzZWQ7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBmb2N1czogZnVuY3Rpb24oKQorICAgIGZv
Y3VzKCkKICAgICB7CiAgICAgICAgIHRoaXMuX3Byb3BlcnRpZXNUZXh0RWRpdG9yLmZvY3VzKCk7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICByZWZyZXNoOiBmdW5jdGlvbigpCisgICAgcmVmcmVzaCgp
CiAgICAgewogICAgICAgICB0aGlzLl9zZWxlY3RvckVsZW1lbnQucmVtb3ZlQ2hpbGRyZW4oKTsK
ICAgICAgICAgdGhpcy5fb3JpZ2luRWxlbWVudC5yZW1vdmVDaGlsZHJlbigpOwpAQCAtMTk1LDcg
KzE4MCw3IEBAIFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbi5wcm90b3R5
cGUgPSB7CiAgICAgICAgICAgICBzZWxlY3RvckVsZW1lbnQudGV4dENvbnRlbnQgPSBzZWxlY3Rv
ci50ZXh0OwogCiAgICAgICAgICAgICBpZiAobWF0Y2hlZCkKLSAgICAgICAgICAgICAgICBzZWxl
Y3RvckVsZW1lbnQuY2xhc3NOYW1lID0gV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb25T
ZWN0aW9uLk1hdGNoZWRTZWxlY3RvckVsZW1lbnRTdHlsZUNsYXNzTmFtZTsKKyAgICAgICAgICAg
ICAgICBzZWxlY3RvckVsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVE
ZWNsYXJhdGlvblNlY3Rpb24uTWF0Y2hlZFNlbGVjdG9yRWxlbWVudFN0eWxlQ2xhc3NOYW1lKTsK
IAogICAgICAgICAgICAgdmFyIHNwZWNpZmljaXR5ID0gc2VsZWN0b3Iuc3BlY2lmaWNpdHk7CiAg
ICAgICAgICAgICBpZiAoc3BlY2lmaWNpdHkpIHsKQEAgLTIyMyw3ICsyMDgsNyBAQCBXZWJJbnNw
ZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24ucHJvdG90eXBlID0gewogICAgICAgICB7
CiAgICAgICAgICAgICB2YXIgc2VsZWN0b3JFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgic3BhbiIpOwogICAgICAgICAgICAgc2VsZWN0b3JFbGVtZW50LnRleHRDb250ZW50ID0gc2Vs
ZWN0b3JUZXh0OwotICAgICAgICAgICAgc2VsZWN0b3JFbGVtZW50LmNsYXNzTmFtZSA9IFdlYklu
c3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbi5NYXRjaGVkU2VsZWN0b3JFbGVtZW50
U3R5bGVDbGFzc05hbWU7CisgICAgICAgICAgICBzZWxlY3RvckVsZW1lbnQuY2xhc3NMaXN0LmFk
ZChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24uTWF0Y2hlZFNlbGVjdG9y
RWxlbWVudFN0eWxlQ2xhc3NOYW1lKTsKICAgICAgICAgICAgIHRoaXMuX3NlbGVjdG9yRWxlbWVu
dC5hcHBlbmRDaGlsZChzZWxlY3RvckVsZW1lbnQpOwogICAgICAgICB9CiAKQEAgLTI4Myw5ICsy
NjgsOSBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24ucHJvdG90eXBl
ID0gewogICAgICAgICAgICAgdGhpcy5fb3JpZ2luRWxlbWVudC5hcHBlbmQoV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJIVE1MIEF0dHJpYnV0ZXMiKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQotICAgIH0sCisgICAgfQogCi0gICAgaGlnaGxpZ2h0UHJvcGVydHk6IGZ1bmN0aW9uKHBy
b3BlcnR5KQorICAgIGhpZ2hsaWdodFByb3BlcnR5KHByb3BlcnR5KQogICAgIHsKICAgICAgICAg
aWYgKHRoaXMuX3Byb3BlcnRpZXNUZXh0RWRpdG9yLmhpZ2hsaWdodFByb3BlcnR5KHByb3BlcnR5
KSkgewogICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5zY3JvbGxJbnRvVmlldygpOwpAQCAtMjkz
LDkgKzI3OCw5IEBAIFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbi5wcm90
b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBmaW5kTWF0Y2hpbmdQcm9wZXJ0aWVzQW5kU2VsZWN0b3JzOiBmdW5jdGlvbihu
ZWVkbGUpCisgICAgZmluZE1hdGNoaW5nUHJvcGVydGllc0FuZFNlbGVjdG9ycyhuZWVkbGUpCiAg
ICAgewogICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoV2ViSW5zcGVjdG9y
LkNTU1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbC5Ob0ZpbHRlck1hdGNoSW5TZWN0aW9uQ2xhc3NO
YW1lLCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsLkZpbHRlck1hdGNo
aW5nU2VjdGlvbkhhc0xhYmVsQ2xhc3NOYW1lKTsKIApAQCAtMzIzLDI1ICszMDgsMjUgQEAgV2Vi
SW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb25TZWN0aW9uLnByb3RvdHlwZSA9IHsKICAgICAg
ICAgfQogCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIH0sCisgICAgfQogCi0gICAgdXBkYXRl
TGF5b3V0OiBmdW5jdGlvbigpCisgICAgdXBkYXRlTGF5b3V0KCkKICAgICB7CiAgICAgICAgIHRo
aXMuX3Byb3BlcnRpZXNUZXh0RWRpdG9yLnVwZGF0ZUxheW91dCgpOwotICAgIH0sCisgICAgfQog
Ci0gICAgY2xlYXJTZWxlY3Rpb246IGZ1bmN0aW9uKCkKKyAgICBjbGVhclNlbGVjdGlvbigpCiAg
ICAgewogICAgICAgICB0aGlzLl9wcm9wZXJ0aWVzVGV4dEVkaXRvci5jbGVhclNlbGVjdGlvbigp
OwotICAgIH0sCisgICAgfQogCi0gICAgY3NzU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3JGb2N1
c2VkOiBmdW5jdGlvbigpCisgICAgY3NzU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3JGb2N1c2Vk
KCkKICAgICB7CiAgICAgICAgIGlmICh0eXBlb2YgdGhpcy5fZGVsZWdhdGUuY3NzU3R5bGVEZWNs
YXJhdGlvblNlY3Rpb25FZGl0b3JGb2N1c2VkID09PSAiZnVuY3Rpb24iKQogICAgICAgICAgICAg
dGhpcy5fZGVsZWdhdGUuY3NzU3R5bGVEZWNsYXJhdGlvblNlY3Rpb25FZGl0b3JGb2N1c2VkKHRo
aXMpOwotICAgIH0sCisgICAgfQogCi0gICAgY3NzU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3JT
d2l0Y2hSdWxlOiBmdW5jdGlvbihyZXZlcnNlKQorICAgIGNzc1N0eWxlRGVjbGFyYXRpb25UZXh0
RWRpdG9yU3dpdGNoUnVsZShyZXZlcnNlKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9kZWxl
Z2F0ZSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTM1MCw5ICszMzUsOSBAQCBXZWJJbnNwZWN0
b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24ucHJvdG90eXBlID0gewogICAgICAgICAgICAg
dGhpcy5fZGVsZWdhdGUuY3NzU3R5bGVEZWNsYXJhdGlvblNlY3Rpb25FZGl0b3JQcmV2aW91c1J1
bGUodGhpcyk7CiAgICAgICAgIGVsc2UgaWYgKCFyZXZlcnNlICYmIHR5cGVvZiB0aGlzLl9kZWxl
Z2F0ZS5jc3NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbkVkaXRvck5leHRSdWxlID09PSAiZnVuY3Rp
b24iKQogICAgICAgICAgICAgdGhpcy5fZGVsZWdhdGUuY3NzU3R5bGVEZWNsYXJhdGlvblNlY3Rp
b25FZGl0b3JOZXh0UnVsZSh0aGlzKTsKLSAgICB9LAorICAgIH0KIAotICAgIGZvY3VzUnVsZVNl
bGVjdG9yOiBmdW5jdGlvbihyZXZlcnNlKQorICAgIGZvY3VzUnVsZVNlbGVjdG9yKHJldmVyc2Up
CiAgICAgewogICAgICAgICBpZiAodGhpcy5zZWxlY3RvckxvY2tlZCkgewogICAgICAgICAgICAg
dGhpcy5mb2N1cygpOwpAQCAtMzcyLDI3ICszNTcsMjcgQEAgV2ViSW5zcGVjdG9yLkNTU1N0eWxl
RGVjbGFyYXRpb25TZWN0aW9uLnByb3RvdHlwZSA9IHsKICAgICAgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKICAgICAgICAgcmFuZ2Uuc2VsZWN0Tm9kZUNvbnRlbnRzKHRo
aXMuX3NlbGVjdG9yRWxlbWVudCk7CiAgICAgICAgIHNlbGVjdGlvbi5hZGRSYW5nZShyYW5nZSk7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzZWxlY3RMYXN0UHJvcGVydHk6IGZ1bmN0aW9uKCkKKyAg
ICBzZWxlY3RMYXN0UHJvcGVydHkoKQogICAgIHsKICAgICAgICAgdGhpcy5fcHJvcGVydGllc1Rl
eHRFZGl0b3Iuc2VsZWN0TGFzdFByb3BlcnR5KCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQg
c2VsZWN0b3JMb2NrZWQoKQogICAgIHsKICAgICAgICAgcmV0dXJuICF0aGlzLmxvY2tlZCAmJiAh
dGhpcy5fc3R5bGUub3duZXJSdWxlOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGxvY2tlZCgp
CiAgICAgewogICAgICAgICByZXR1cm4gIXRoaXMuX3N0eWxlLmVkaXRhYmxlOwotICAgIH0sCisg
ICAgfQogCiAgICAgZ2V0IGVkaXRvckFjdGl2ZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhp
cy5fZWRpdG9yQWN0aXZlOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJpdmF0ZQogCkBAIC00
MDYsOSArMzkxLDkgQEAgV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb25TZWN0aW9uLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgICAgIHNlbGVjdG9yVGV4dCA9IHRoaXMuX3N0eWxlLm93bmVy
UnVsZS5zZWxlY3RvclRleHQ7CiAKICAgICAgICAgcmV0dXJuIHNlbGVjdG9yVGV4dC50cmltKCk7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfaGFuZGxlU2VsZWN0b3JQYXN0ZTogZnVuY3Rpb24oZXZl
bnQpCisgICAgX2hhbmRsZVNlbGVjdG9yUGFzdGUoZXZlbnQpCiAgICAgewogICAgICAgICBpZiAo
dGhpcy5fc3R5bGUudHlwZSA9PT0gV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb24uVHlw
ZS5JbmxpbmUgfHwgIXRoaXMuX3N0eWxlLm93bmVyUnVsZSkKICAgICAgICAgICAgIHJldHVybjsK
QEAgLTQ0Myw5ICs0MjgsOSBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rp
b24ucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9zZWxlY3RvckVsZW1lbnQudGV4dENvbnRl
bnQgPSBzZWxlY3RvcjsKICAgICAgICAgdGhpcy5fc3R5bGUubm9kZVN0eWxlcy5jaGFuZ2VSdWxl
KHRoaXMuX3N0eWxlLm93bmVyUnVsZSwgc2VsZWN0b3IsIG1hdGNoWzJdKTsKICAgICAgICAgZXZl
bnQucHJldmVudERlZmF1bHQoKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9oYW5kbGVDb250ZXh0
TWVudUV2ZW50OiBmdW5jdGlvbihldmVudCkKKyAgICBfaGFuZGxlQ29udGV4dE1lbnVFdmVudChl
dmVudCkKICAgICB7CiAgICAgICAgIGlmICh3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmco
KS5sZW5ndGgpCiAgICAgICAgICAgICByZXR1cm47CkBAIC00NTcsOSArNDQyLDkgQEAgV2ViSW5z
cGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb25TZWN0aW9uLnByb3RvdHlwZSA9IHsKICAgICAgICAg
fS5iaW5kKHRoaXMpKTsKIAogICAgICAgICBjb250ZXh0TWVudS5zaG93KCk7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBfZ2VuZXJhdGVDU1NSdWxlU3RyaW5nOiBmdW5jdGlvbigpCisgICAgX2dlbmVy
YXRlQ1NTUnVsZVN0cmluZygpCiAgICAgewogICAgICAgICB2YXIgbnVtTWVkaWFRdWVyaWVzID0g
MDsKICAgICAgICAgdmFyIHN0eWxlVGV4dCA9ICIiOwpAQCAtNDk0LDkgKzQ3OSw5IEBAIFdlYklu
c3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbi5wcm90b3R5cGUgPSB7CiAgICAgICAg
IHN0eWxlVGV4dCArPSAifSI7CiAKICAgICAgICAgcmV0dXJuIHN0eWxlVGV4dDsKLSAgICB9LAor
ICAgIH0KIAotICAgIF90b2dnbGVSdWxlT25PZmY6IGZ1bmN0aW9uKCkKKyAgICBfdG9nZ2xlUnVs
ZU9uT2ZmKCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9oYXNJbnZhbGlkU2VsZWN0b3IpCiAg
ICAgICAgICAgICByZXR1cm47CkBAIC01MDQsOSArNDg5LDkgQEAgV2ViSW5zcGVjdG9yLkNTU1N0
eWxlRGVjbGFyYXRpb25TZWN0aW9uLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fcnVsZURp
c2FibGVkID0gdGhpcy5fcnVsZURpc2FibGVkID8gIXRoaXMuX3Byb3BlcnRpZXNUZXh0RWRpdG9y
LnVuY29tbWVudEFsbFByb3BlcnRpZXMoKSA6IHRoaXMuX3Byb3BlcnRpZXNUZXh0RWRpdG9yLmNv
bW1lbnRBbGxQcm9wZXJ0aWVzKCk7CiAgICAgICAgIHRoaXMuX2ljb25FbGVtZW50LnRpdGxlID0g
dGhpcy5fcnVsZURpc2FibGVkID8gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJVbmNvbW1lbnQgQWxs
IFByb3BlcnRpZXMiKSA6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ29tbWVudCBBbGwgUHJvcGVy
dGllcyIpOwogICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC50b2dnbGUoInJ1bGUtZGlz
YWJsZWQiLCB0aGlzLl9ydWxlRGlzYWJsZWQpOwotICAgIH0sCisgICAgfQogCi0gICAgX2hpZ2hs
aWdodE5vZGVzV2l0aFNlbGVjdG9yOiBmdW5jdGlvbigpCisgICAgX2hpZ2hsaWdodE5vZGVzV2l0
aFNlbGVjdG9yKCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fc3R5bGUub3duZXJSdWxlKSB7
CiAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuZG9tVHJlZU1hbmFnZXIuaGlnaGxpZ2h0RE9NTm9k
ZSh0aGlzLl9zdHlsZS5ub2RlLmlkKTsKQEAgLTUxNCwyNCArNDk5LDI0IEBAIFdlYkluc3BlY3Rv
ci5DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbi5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAog
ICAgICAgICBXZWJJbnNwZWN0b3IuZG9tVHJlZU1hbmFnZXIuaGlnaGxpZ2h0U2VsZWN0b3IodGhp
cy5fY3VycmVudFNlbGVjdG9yVGV4dCwgdGhpcy5fc3R5bGUubm9kZS5vd25lckRvY3VtZW50LmZy
YW1lSWRlbnRpZmllcik7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfaGlkZURPTU5vZGVIaWdobGln
aHQ6IGZ1bmN0aW9uKCkKKyAgICBfaGlkZURPTU5vZGVIaWdobGlnaHQoKQogICAgIHsKICAgICAg
ICAgV2ViSW5zcGVjdG9yLmRvbVRyZWVNYW5hZ2VyLmhpZGVET01Ob2RlSGlnaGxpZ2h0KCk7Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBfaGFuZGxlTW91c2VPdmVyOiBmdW5jdGlvbihldmVudCkKKyAg
ICBfaGFuZGxlTW91c2VPdmVyKGV2ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5faGlnaGxpZ2h0
Tm9kZXNXaXRoU2VsZWN0b3IoKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9oYW5kbGVNb3VzZU91
dDogZnVuY3Rpb24oZXZlbnQpCisgICAgX2hhbmRsZU1vdXNlT3V0KGV2ZW50KQogICAgIHsKICAg
ICAgICAgdGhpcy5faGlkZURPTU5vZGVIaWdobGlnaHQoKTsKLSAgICB9LAorICAgIH0KIAotICAg
IF9oYW5kbGVLZXlEb3duOiBmdW5jdGlvbihldmVudCkKKyAgICBfaGFuZGxlS2V5RG93bihldmVu
dCkKICAgICB7CiAgICAgICAgIGlmIChldmVudC5rZXlDb2RlICE9PSA5KSB7CiAgICAgICAgICAg
ICB0aGlzLl9oaWdobGlnaHROb2Rlc1dpdGhTZWxlY3RvcigpOwpAQCAtNTUwLDE0ICs1MzUsMTQg
QEAgV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb25TZWN0aW9uLnByb3RvdHlwZSA9IHsK
ICAgICAgICAgICAgIHRoaXMuX3Byb3BlcnRpZXNUZXh0RWRpdG9yLnNlbGVjdEZpcnN0UHJvcGVy
dHkoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgIH0sCisgICAgfQogCi0g
ICAgX2hhbmRsZUtleVVwOiBmdW5jdGlvbihldmVudCkKKyAgICBfaGFuZGxlS2V5VXAoZXZlbnQp
CiAgICAgewogICAgICAgICB0aGlzLl9oaWdobGlnaHROb2Rlc1dpdGhTZWxlY3RvcigpOwotICAg
IH0sCisgICAgfQogCi0gICAgX2NvbW1pdFNlbGVjdG9yOiBmdW5jdGlvbihtdXRhdGlvbnMpCisg
ICAgX2NvbW1pdFNlbGVjdG9yKG11dGF0aW9ucykKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KHRoaXMuX3N0eWxlLm93bmVyUnVsZSk7CiAgICAgICAgIGlmICghdGhpcy5fc3R5bGUub3du
ZXJSdWxlKQpAQCAtNTcxLDkgKzU1Niw5IEBAIFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0
aW9uU2VjdGlvbi5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICB0aGlzLl9zdHls
ZS5vd25lclJ1bGUuc2VsZWN0b3JUZXh0ID0gbmV3U2VsZWN0b3JUZXh0OwotICAgIH0sCisgICAg
fQogCi0gICAgX21hcmtTZWxlY3RvcjogZnVuY3Rpb24oZXZlbnQpCisgICAgX21hcmtTZWxlY3Rv
cihldmVudCkKICAgICB7CiAgICAgICAgIHZhciB2YWxpZCA9IGV2ZW50ICYmIGV2ZW50LmRhdGEg
JiYgZXZlbnQuZGF0YS52YWxpZDsKICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QudG9n
Z2xlKFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbi5TZWxlY3RvckludmFs
aWRDbGFzc05hbWUsICF2YWxpZCk7CkBAIC01ODgsMTkgKzU3MywxOSBAQCBXZWJJbnNwZWN0b3Iu
Q1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24ucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9z
ZWxlY3RvckVsZW1lbnQudGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlVzaW5nIHRoZSBw
cmV2aW91cyBzZWxlY3RvciAnJXMnLiIpLmZvcm1hdCh0aGlzLl9zdHlsZS5vd25lclJ1bGUuc2Vs
ZWN0b3JUZXh0KTsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9zZWxlY3RvckVs
ZW1lbnQuY2hpbGRyZW4ubGVuZ3RoOyArK2kpCiAgICAgICAgICAgICB0aGlzLl9zZWxlY3RvckVs
ZW1lbnQuY2hpbGRyZW5baV0udGl0bGUgPSBudWxsOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0
IF9oYXNJbnZhbGlkU2VsZWN0b3IoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW1l
bnQuY2xhc3NMaXN0LmNvbnRhaW5zKFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uU2Vj
dGlvbi5TZWxlY3RvckludmFsaWRDbGFzc05hbWUpOwotICAgIH0sCisgICAgfQogCi0gICAgX2Vk
aXRvckNvbnRlbnRDaGFuZ2VkOiBmdW5jdGlvbihldmVudCkKKyAgICBfZWRpdG9yQ29udGVudENo
YW5nZWQoZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLl9lZGl0b3JBY3RpdmUgPSB0cnVlOwot
ICAgIH0sCisgICAgfQogCi0gICAgX2VkaXRvckJsdXJyZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAg
IF9lZGl0b3JCbHVycmVkKGV2ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5fZWRpdG9yQWN0aXZl
ID0gZmFsc2U7CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3Bl
Y3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbi5FdmVudC5CbHVycmVkKTsKQEAgLTYxMSw0
ICs1OTYsMTUgQEAgV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb25TZWN0aW9uLkV2ZW50
ID0gewogICAgIEJsdXJyZWQ6ICJjc3Mtc3R5bGUtZGVjbGFyYXRpb24tc2VjdGlvbnMtYmx1cnJl
ZCIKIH07CiAKLVdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbi5wcm90b3R5
cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLlN0eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZTsK
K1dlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbi5Mb2NrZWRTdHlsZUNsYXNz
TmFtZSA9ICJsb2NrZWQiOworV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb25TZWN0aW9u
LlNlbGVjdG9yTG9ja2VkU3R5bGVDbGFzc05hbWUgPSAic2VsZWN0b3ItbG9ja2VkIjsKK1dlYklu
c3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbi5TZWxlY3RvckludmFsaWRDbGFzc05h
bWUgPSAiaW52YWxpZC1zZWxlY3RvciI7CitXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlv
blNlY3Rpb24uTGFzdEluR3JvdXBTdHlsZUNsYXNzTmFtZSA9ICJsYXN0LWluLWdyb3VwIjsKK1dl
Ykluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbi5NYXRjaGVkU2VsZWN0b3JFbGVt
ZW50U3R5bGVDbGFzc05hbWUgPSAibWF0Y2hlZCI7CisKK1dlYkluc3BlY3Rvci5DU1NTdHlsZURl
Y2xhcmF0aW9uU2VjdGlvbi5BdXRob3JTdHlsZVJ1bGVJY29uU3R5bGVDbGFzc05hbWUgPSAiYXV0
aG9yLXN0eWxlLXJ1bGUtaWNvbiI7CitXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblNl
Y3Rpb24uVXNlclN0eWxlUnVsZUljb25TdHlsZUNsYXNzTmFtZSA9ICJ1c2VyLXN0eWxlLXJ1bGUt
aWNvbiI7CitXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24uVXNlckFnZW50
U3R5bGVSdWxlSWNvblN0eWxlQ2xhc3NOYW1lID0gInVzZXItYWdlbnQtc3R5bGUtcnVsZS1pY29u
IjsKK1dlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbi5JbnNwZWN0b3JTdHls
ZVJ1bGVJY29uU3R5bGVDbGFzc05hbWUgPSAiaW5zcGVjdG9yLXN0eWxlLXJ1bGUtaWNvbiI7CitX
ZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24uSW5oZXJpdGVkU3R5bGVSdWxl
SWNvblN0eWxlQ2xhc3NOYW1lID0gImluaGVyaXRlZC1zdHlsZS1ydWxlLWljb24iOworV2ViSW5z
cGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb25TZWN0aW9uLkluaGVyaXRlZEVsZW1lbnRTdHlsZVJ1
bGVJY29uU3R5bGVDbGFzc05hbWUgPSAiaW5oZXJpdGVkLWVsZW1lbnQtc3R5bGUtcnVsZS1pY29u
IjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L0NvbnNvbGVQcm9tcHQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9Db25zb2xlUHJvbXB0LmpzCmluZGV4IGJiZGQ4MzcwYTlkNGRjMDNhYzkwOTc1MmM4NDEx
ZDFhMjQ3ODU2Y2EuLjNhOTgyYWIxN2M0ODgwMjdmM2ZhNGJkY2MzYWJjNWJlODMwMTE1OTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnNv
bGVQcm9tcHQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvQ29uc29sZVByb21wdC5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsMTQ5ICsyMywxNDQgQEAKICAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuQ29uc29sZVByb21wdCA9IGZ1
bmN0aW9uKGRlbGVnYXRlLCBtaW1lVHlwZSwgZWxlbWVudCkKK1dlYkluc3BlY3Rvci5Db25zb2xl
UHJvbXB0ID0gY2xhc3MgQ29uc29sZVByb21wdCBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QK
IHsKLSAgICAvLyBGSVhNRTogQ29udmVydCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBz
dWJjbGFzcywgYW5kIGNhbGwgc3VwZXIoKS4KLSAgICAvLyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNh
bGwodGhpcyk7Ci0KLSAgICBtaW1lVHlwZSA9IHBhcnNlTUlNRVR5cGUobWltZVR5cGUpLnR5cGU7
Ci0KLSAgICB0aGlzLl9lbGVtZW50ID0gZWxlbWVudCB8fCBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJkaXYiKTsKLSAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoImNvbnNvbGUtcHJvbXB0
Iik7Ci0gICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5TeW50YXhI
aWdobGlnaHRlZFN0eWxlQ2xhc3NOYW1lKTsKLQotICAgIHRoaXMuX2RlbGVnYXRlID0gZGVsZWdh
dGUgfHwgbnVsbDsKLQotICAgIHRoaXMuX2NvZGVNaXJyb3IgPSBDb2RlTWlycm9yKHRoaXMuZWxl
bWVudCwgewotICAgICAgICBsaW5lV3JhcHBpbmc6IHRydWUsCi0gICAgICAgIG1vZGU6IG1pbWVU
eXBlLAotICAgICAgICBpbmRlbnRXaXRoVGFiczogdHJ1ZSwKLSAgICAgICAgaW5kZW50VW5pdDog
NCwKLSAgICAgICAgbWF0Y2hCcmFja2V0czogdHJ1ZQotICAgIH0pOwotCi0gICAgdmFyIGtleU1h
cCA9IHsKLSAgICAgICAgIlVwIjogdGhpcy5faGFuZGxlUHJldmlvdXNLZXkuYmluZCh0aGlzKSwK
LSAgICAgICAgIkRvd24iOiB0aGlzLl9oYW5kbGVOZXh0S2V5LmJpbmQodGhpcyksCi0gICAgICAg
ICJDdHJsLVAiOiB0aGlzLl9oYW5kbGVQcmV2aW91c0tleS5iaW5kKHRoaXMpLAotICAgICAgICAi
Q3RybC1OIjogdGhpcy5faGFuZGxlTmV4dEtleS5iaW5kKHRoaXMpLAotICAgICAgICAiRW50ZXIi
OiB0aGlzLl9oYW5kbGVFbnRlcktleS5iaW5kKHRoaXMpLAotICAgICAgICAiQ21kLUVudGVyIjog
dGhpcy5faGFuZGxlQ29tbWFuZEVudGVyS2V5LmJpbmQodGhpcyksCi0gICAgICAgICJUYWIiOiB0
aGlzLl9oYW5kbGVUYWJLZXkuYmluZCh0aGlzKSwKLSAgICAgICAgIkVzYyI6IHRoaXMuX2hhbmRs
ZUVzY2FwZUtleS5iaW5kKHRoaXMpCi0gICAgfTsKLQotICAgIHRoaXMuX2NvZGVNaXJyb3IuYWRk
S2V5TWFwKGtleU1hcCk7Ci0KLSAgICB0aGlzLl9jb21wbGV0aW9uQ29udHJvbGxlciA9IG5ldyBX
ZWJJbnNwZWN0b3IuQ29kZU1pcnJvckNvbXBsZXRpb25Db250cm9sbGVyKHRoaXMuX2NvZGVNaXJy
b3IsIHRoaXMpOwotICAgIHRoaXMuX2NvbXBsZXRpb25Db250cm9sbGVyLmFkZEV4dGVuZGVkQ29t
cGxldGlvblByb3ZpZGVyKCJqYXZhc2NyaXB0IiwgV2ViSW5zcGVjdG9yLmphdmFTY3JpcHRSdW50
aW1lQ29tcGxldGlvblByb3ZpZGVyKTsKLQotICAgIHRoaXMuX2hpc3RvcnkgPSBbe31dOwotICAg
IHRoaXMuX2hpc3RvcnlJbmRleCA9IDA7Ci19OworICAgIGNvbnN0cnVjdG9yKGRlbGVnYXRlLCBt
aW1lVHlwZSwgZWxlbWVudCkKKyAgICB7CisgICAgICAgIHN1cGVyKCk7CiAKLVdlYkluc3BlY3Rv
ci5Db25zb2xlUHJvbXB0Lk1heGltdW1IaXN0b3J5U2l6ZSA9IDMwOworICAgICAgICBtaW1lVHlw
ZSA9IHBhcnNlTUlNRVR5cGUobWltZVR5cGUpLnR5cGU7CisKKyAgICAgICAgdGhpcy5fZWxlbWVu
dCA9IGVsZW1lbnQgfHwgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIHRo
aXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZCgiY29uc29sZS1wcm9tcHQiLCBXZWJJbnNwZWN0b3Iu
U3ludGF4SGlnaGxpZ2h0ZWRTdHlsZUNsYXNzTmFtZSk7CisKKyAgICAgICAgdGhpcy5fZGVsZWdh
dGUgPSBkZWxlZ2F0ZSB8fCBudWxsOworCisgICAgICAgIHRoaXMuX2NvZGVNaXJyb3IgPSBDb2Rl
TWlycm9yKHRoaXMuZWxlbWVudCwgeworICAgICAgICAgICAgbGluZVdyYXBwaW5nOiB0cnVlLAor
ICAgICAgICAgICAgbW9kZTogbWltZVR5cGUsCisgICAgICAgICAgICBpbmRlbnRXaXRoVGFiczog
dHJ1ZSwKKyAgICAgICAgICAgIGluZGVudFVuaXQ6IDQsCisgICAgICAgICAgICBtYXRjaEJyYWNr
ZXRzOiB0cnVlCisgICAgICAgIH0pOworCisgICAgICAgIHZhciBrZXlNYXAgPSB7CisgICAgICAg
ICAgICAiVXAiOiB0aGlzLl9oYW5kbGVQcmV2aW91c0tleS5iaW5kKHRoaXMpLAorICAgICAgICAg
ICAgIkRvd24iOiB0aGlzLl9oYW5kbGVOZXh0S2V5LmJpbmQodGhpcyksCisgICAgICAgICAgICAi
Q3RybC1QIjogdGhpcy5faGFuZGxlUHJldmlvdXNLZXkuYmluZCh0aGlzKSwKKyAgICAgICAgICAg
ICJDdHJsLU4iOiB0aGlzLl9oYW5kbGVOZXh0S2V5LmJpbmQodGhpcyksCisgICAgICAgICAgICAi
RW50ZXIiOiB0aGlzLl9oYW5kbGVFbnRlcktleS5iaW5kKHRoaXMpLAorICAgICAgICAgICAgIkNt
ZC1FbnRlciI6IHRoaXMuX2hhbmRsZUNvbW1hbmRFbnRlcktleS5iaW5kKHRoaXMpLAorICAgICAg
ICAgICAgIlRhYiI6IHRoaXMuX2hhbmRsZVRhYktleS5iaW5kKHRoaXMpLAorICAgICAgICAgICAg
IkVzYyI6IHRoaXMuX2hhbmRsZUVzY2FwZUtleS5iaW5kKHRoaXMpCisgICAgICAgIH07CisKKyAg
ICAgICAgdGhpcy5fY29kZU1pcnJvci5hZGRLZXlNYXAoa2V5TWFwKTsKIAotV2ViSW5zcGVjdG9y
LkNvbnNvbGVQcm9tcHQucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0
b3IuQ29uc29sZVByb21wdCwKKyAgICAgICAgdGhpcy5fY29tcGxldGlvbkNvbnRyb2xsZXIgPSBu
ZXcgV2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JDb21wbGV0aW9uQ29udHJvbGxlcih0aGlzLl9jb2Rl
TWlycm9yLCB0aGlzKTsKKyAgICAgICAgdGhpcy5fY29tcGxldGlvbkNvbnRyb2xsZXIuYWRkRXh0
ZW5kZWRDb21wbGV0aW9uUHJvdmlkZXIoImphdmFzY3JpcHQiLCBXZWJJbnNwZWN0b3IuamF2YVNj
cmlwdFJ1bnRpbWVDb21wbGV0aW9uUHJvdmlkZXIpOworCisgICAgICAgIHRoaXMuX2hpc3Rvcnkg
PSBbe31dOworICAgICAgICB0aGlzLl9oaXN0b3J5SW5kZXggPSAwOworICAgIH0KIAogICAgIC8v
IFB1YmxpYwogCiAgICAgZ2V0IGVsZW1lbnQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMu
X2VsZW1lbnQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgZGVsZWdhdGUoKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIHRoaXMuX2RlbGVnYXRlOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IGRl
bGVnYXRlKGRlbGVnYXRlKQogICAgIHsKICAgICAgICAgdGhpcy5fZGVsZWdhdGUgPSBkZWxlZ2F0
ZSB8fCBudWxsOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IGVzY2FwZUtleUhhbmRsZXJXaGVu
RW1wdHkoaGFuZGxlcikKICAgICB7CiAgICAgICAgIHRoaXMuX2VzY2FwZUtleUhhbmRsZXJXaGVu
RW1wdHkgPSBoYW5kbGVyOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHRleHQoKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIHRoaXMuX2NvZGVNaXJyb3IuZ2V0VmFsdWUoKTsKLSAgICB9LAorICAg
IH0KIAogICAgIHNldCB0ZXh0KHRleHQpCiAgICAgewogICAgICAgICB0aGlzLl9jb2RlTWlycm9y
LnNldFZhbHVlKHRleHQgfHwgIiIpOwogICAgICAgICB0aGlzLl9jb2RlTWlycm9yLmNsZWFySGlz
dG9yeSgpOwogICAgICAgICB0aGlzLl9jb2RlTWlycm9yLm1hcmtDbGVhbigpOwotICAgIH0sCisg
ICAgfQogCiAgICAgZ2V0IGhpc3RvcnkoKQogICAgIHsKICAgICAgICAgdGhpcy5faGlzdG9yeVt0
aGlzLl9oaXN0b3J5SW5kZXhdID0gdGhpcy5faGlzdG9yeUVudHJ5Rm9yQ3VycmVudFRleHQoKTsK
ICAgICAgICAgcmV0dXJuIHRoaXMuX2hpc3Rvcnk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQg
aGlzdG9yeShoaXN0b3J5KQogICAgIHsKICAgICAgICAgdGhpcy5faGlzdG9yeSA9IGhpc3Rvcnkg
aW5zdGFuY2VvZiBBcnJheSA/IGhpc3Rvcnkuc2xpY2UoMCwgV2ViSW5zcGVjdG9yLkNvbnNvbGVQ
cm9tcHQuTWF4aW11bUhpc3RvcnlTaXplKSA6IFt7fV07CiAgICAgICAgIHRoaXMuX2hpc3RvcnlJ
bmRleCA9IDA7CiAgICAgICAgIHRoaXMuX3Jlc3RvcmVIaXN0b3J5RW50cnkoMCk7Ci0gICAgfSwK
KyAgICB9CiAKICAgICBnZXQgZm9jdXNlZCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5f
Y29kZU1pcnJvci5nZXRXcmFwcGVyRWxlbWVudCgpLmNsYXNzTGlzdC5jb250YWlucygiQ29kZU1p
cnJvci1mb2N1c2VkIik7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBmb2N1czogZnVuY3Rpb24oKQor
ICAgIGZvY3VzKCkKICAgICB7CiAgICAgICAgIHRoaXMuX2NvZGVNaXJyb3IuZm9jdXMoKTsKLSAg
ICB9LAorICAgIH0KIAotICAgIHNob3duOiBmdW5jdGlvbigpCisgICAgc2hvd24oKQogICAgIHsK
ICAgICAgICAgdGhpcy5fY29kZU1pcnJvci5yZWZyZXNoKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICB1cGRhdGVMYXlvdXQ6IGZ1bmN0aW9uKCkKKyAgICB1cGRhdGVMYXlvdXQoKQogICAgIHsKICAg
ICAgICAgdGhpcy5fY29kZU1pcnJvci5yZWZyZXNoKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICB1
cGRhdGVDb21wbGV0aW9uczogZnVuY3Rpb24oY29tcGxldGlvbnMsIGltcGxpY2l0U3VmZml4KQor
ICAgIHVwZGF0ZUNvbXBsZXRpb25zKGNvbXBsZXRpb25zLCBpbXBsaWNpdFN1ZmZpeCkKICAgICB7
CiAgICAgICAgIHRoaXMuX2NvbXBsZXRpb25Db250cm9sbGVyLnVwZGF0ZUNvbXBsZXRpb25zKGNv
bXBsZXRpb25zLCBpbXBsaWNpdFN1ZmZpeCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBwdXNoSGlz
dG9yeUl0ZW06IGZ1bmN0aW9uKHRleHQpCisgICAgcHVzaEhpc3RvcnlJdGVtKHRleHQpCiAgICAg
ewogICAgICAgICB0aGlzLl9jb21taXRIaXN0b3J5RW50cnkoe3RleHR9KTsKLSAgICB9LAorICAg
IH0KIAogICAgIC8vIFByb3RlY3RlZAogCi0gICAgY29tcGxldGlvbkNvbnRyb2xsZXJDb21wbGV0
aW9uc05lZWRlZDogZnVuY3Rpb24oY29tcGxldGlvbkNvbnRyb2xsZXIsIHByZWZpeCwgZGVmYXVs
dENvbXBsZXRpb25zLCBiYXNlLCBzdWZmaXgsIGZvcmNlZCkKKyAgICBjb21wbGV0aW9uQ29udHJv
bGxlckNvbXBsZXRpb25zTmVlZGVkKGNvbXBsZXRpb25Db250cm9sbGVyLCBwcmVmaXgsIGRlZmF1
bHRDb21wbGV0aW9ucywgYmFzZSwgc3VmZml4LCBmb3JjZWQpCiAgICAgewogICAgICAgICBpZiAo
dGhpcy5kZWxlZ2F0ZSAmJiB0eXBlb2YgdGhpcy5kZWxlZ2F0ZS5jb25zb2xlUHJvbXB0Q29tcGxl
dGlvbnNOZWVkZWQgPT09ICJmdW5jdGlvbiIpCiAgICAgICAgICAgICB0aGlzLmRlbGVnYXRlLmNv
bnNvbGVQcm9tcHRDb21wbGV0aW9uc05lZWRlZCh0aGlzLCBkZWZhdWx0Q29tcGxldGlvbnMsIGJh
c2UsIHByZWZpeCwgc3VmZml4LCBmb3JjZWQpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICB0
aGlzLl9jb21wbGV0aW9uQ29udHJvbGxlci51cGRhdGVDb21wbGV0aW9ucyhkZWZhdWx0Q29tcGxl
dGlvbnMpOwotICAgIH0sCisgICAgfQogCi0gICAgY29tcGxldGlvbkNvbnRyb2xsZXJTaG91bGRB
bGxvd0VzY2FwZUNvbXBsZXRpb246IGZ1bmN0aW9uKGNvbXBsZXRpb25Db250cm9sbGVyKQorICAg
IGNvbXBsZXRpb25Db250cm9sbGVyU2hvdWxkQWxsb3dFc2NhcGVDb21wbGV0aW9uKGNvbXBsZXRp
b25Db250cm9sbGVyKQogICAgIHsKICAgICAgICAgLy8gT25seSBhbGxvdyBlc2NhcGUgdG8gY29t
cGxldGUgaWYgdGhlcmUgaXMgdGV4dCBpbiB0aGUgcHJvbXB0LiBPdGhlcndpc2UgYWxsb3cgaXQg
dG8gcGFzcyB0aHJvdWdoCiAgICAgICAgIC8vIHNvIGVzY2FwZSB0byB0b2dnbGUgdGhlIHF1aWNr
IGNvbnNvbGUgc3RpbGwgd29ya3MuCiAgICAgICAgIHJldHVybiAhIXRoaXMudGV4dDsKLSAgICB9
LAorICAgIH0KIAogICAgIC8vIFByaXZhdGUKIAotICAgIF9oYW5kbGVUYWJLZXk6IGZ1bmN0aW9u
KGNvZGVNaXJyb3IpCisgICAgX2hhbmRsZVRhYktleShjb2RlTWlycm9yKQogICAgIHsKICAgICAg
ICAgdmFyIGN1cnNvciA9IGNvZGVNaXJyb3IuZ2V0Q3Vyc29yKCk7CiAgICAgICAgIHZhciBsaW5l
ID0gY29kZU1pcnJvci5nZXRMaW5lKGN1cnNvci5saW5lKTsKQEAgLTE4Miw5ICsxNzcsOSBAQCBX
ZWJJbnNwZWN0b3IuQ29uc29sZVByb21wdC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBpZiAo
cmVzdWx0ID09PSBXZWJJbnNwZWN0b3IuQ29kZU1pcnJvckNvbXBsZXRpb25Db250cm9sbGVyLlVw
ZGF0ZVByb21pc2UuTm9Db21wbGV0aW9uc0ZvdW5kKQogICAgICAgICAgICAgICAgIEluc3BlY3Rv
ckZyb250ZW5kSG9zdC5iZWVwKCk7CiAgICAgICAgIH0pOwotICAgIH0sCisgICAgfQogCi0gICAg
X2hhbmRsZUVzY2FwZUtleTogZnVuY3Rpb24oY29kZU1pcnJvcikKKyAgICBfaGFuZGxlRXNjYXBl
S2V5KGNvZGVNaXJyb3IpCiAgICAgewogICAgICAgICBpZiAodGhpcy50ZXh0KQogICAgICAgICAg
ICAgcmV0dXJuIENvZGVNaXJyb3IuUGFzczsKQEAgLTE5Myw5ICsxODgsOSBAQCBXZWJJbnNwZWN0
b3IuQ29uc29sZVByb21wdC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm4gQ29kZU1p
cnJvci5QYXNzOwogCiAgICAgICAgIHRoaXMuX2VzY2FwZUtleUhhbmRsZXJXaGVuRW1wdHkoKTsK
LSAgICB9LAorICAgIH0KIAotICAgIF9oYW5kbGVQcmV2aW91c0tleTogZnVuY3Rpb24oY29kZU1p
cnJvcikKKyAgICBfaGFuZGxlUHJldmlvdXNLZXkoY29kZU1pcnJvcikKICAgICB7CiAgICAgICAg
IGlmICh0aGlzLl9jb2RlTWlycm9yLnNvbWV0aGluZ1NlbGVjdGVkKCkpCiAgICAgICAgICAgICBy
ZXR1cm4gQ29kZU1pcnJvci5QYXNzOwpAQCAtMjEzLDkgKzIwOCw5IEBAIFdlYkluc3BlY3Rvci5D
b25zb2xlUHJvbXB0LnByb3RvdHlwZSA9IHsKICAgICAgICAgKyt0aGlzLl9oaXN0b3J5SW5kZXg7
CiAKICAgICAgICAgdGhpcy5fcmVzdG9yZUhpc3RvcnlFbnRyeSh0aGlzLl9oaXN0b3J5SW5kZXgp
OwotICAgIH0sCisgICAgfQogCi0gICAgX2hhbmRsZU5leHRLZXk6IGZ1bmN0aW9uKGNvZGVNaXJy
b3IpCisgICAgX2hhbmRsZU5leHRLZXkoY29kZU1pcnJvcikKICAgICB7CiAgICAgICAgIGlmICh0
aGlzLl9jb2RlTWlycm9yLnNvbWV0aGluZ1NlbGVjdGVkKCkpCiAgICAgICAgICAgICByZXR1cm4g
Q29kZU1pcnJvci5QYXNzOwpAQCAtMjMzLDkgKzIyOCw5IEBAIFdlYkluc3BlY3Rvci5Db25zb2xl
UHJvbXB0LnByb3RvdHlwZSA9IHsKICAgICAgICAgLS10aGlzLl9oaXN0b3J5SW5kZXg7CiAKICAg
ICAgICAgdGhpcy5fcmVzdG9yZUhpc3RvcnlFbnRyeSh0aGlzLl9oaXN0b3J5SW5kZXgpOwotICAg
IH0sCisgICAgfQogCi0gICAgX2hhbmRsZUVudGVyS2V5OiBmdW5jdGlvbihjb2RlTWlycm9yLCBm
b3JjZUNvbW1pdCkKKyAgICBfaGFuZGxlRW50ZXJLZXkoY29kZU1pcnJvciwgZm9yY2VDb21taXQp
CiAgICAgewogICAgICAgICB2YXIgY3VycmVudFRleHQgPSB0aGlzLnRleHQ7CiAKQEAgLTI4Miw5
ICsyNzcsOSBAQCBXZWJJbnNwZWN0b3IuQ29uc29sZVByb21wdC5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIH0KIAogICAgICAgICBjb21taXRUZXh0T3JJbnNlcnROZXdMaW5lLmNhbGwodGhpcywgdHJ1
ZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfY29tbWl0SGlzdG9yeUVudHJ5OiBmdW5jdGlvbiho
aXN0b3J5RW50cnkpCisgICAgX2NvbW1pdEhpc3RvcnlFbnRyeShoaXN0b3J5RW50cnkpCiAgICAg
ewogICAgICAgICAvLyBSZXBsYWNlIHRoZSBwcmV2aW91cyBlbnRyeSBpZiBpdCBkb2VzIG5vdCBo
YXZlIHRleHQgb3IgaWYgdGhlIHRleHQgaXMgdGhlIHNhbWUuCiAgICAgICAgIGlmICh0aGlzLl9o
aXN0b3J5WzFdICYmICghdGhpcy5faGlzdG9yeVsxXS50ZXh0IHx8IHRoaXMuX2hpc3RvcnlbMV0u
dGV4dCA9PT0gaGlzdG9yeUVudHJ5LnRleHQpKSB7CkBAIC0zMDEsMTQgKzI5NiwxNCBAQCBXZWJJ
bnNwZWN0b3IuQ29uc29sZVByb21wdC5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAg
ICB0aGlzLl9oaXN0b3J5SW5kZXggPSAwOwotICAgIH0sCisgICAgfQogCi0gICAgX2hhbmRsZUNv
bW1hbmRFbnRlcktleTogZnVuY3Rpb24oY29kZU1pcnJvcikKKyAgICBfaGFuZGxlQ29tbWFuZEVu
dGVyS2V5KGNvZGVNaXJyb3IpCiAgICAgewogICAgICAgICB0aGlzLl9oYW5kbGVFbnRlcktleShj
b2RlTWlycm9yLCB0cnVlKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9yZXN0b3JlSGlzdG9yeUVu
dHJ5OiBmdW5jdGlvbihpbmRleCkKKyAgICBfcmVzdG9yZUhpc3RvcnlFbnRyeShpbmRleCkKICAg
ICB7CiAgICAgICAgIHZhciBoaXN0b3J5RW50cnkgPSB0aGlzLl9oaXN0b3J5W2luZGV4XTsKIApA
QCAtMzIwLDE0ICszMTUsMTQgQEAgV2ViSW5zcGVjdG9yLkNvbnNvbGVQcm9tcHQucHJvdG90eXBl
ID0gewogICAgICAgICAgICAgdGhpcy5fY29kZU1pcnJvci5jbGVhckhpc3RvcnkoKTsKIAogICAg
ICAgICB0aGlzLl9jb2RlTWlycm9yLnNldEN1cnNvcihoaXN0b3J5RW50cnkuY3Vyc29yIHx8IHts
aW5lOiAwfSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfaGlzdG9yeUVudHJ5Rm9yQ3VycmVudFRl
eHQ6IGZ1bmN0aW9uKCkKKyAgICBfaGlzdG9yeUVudHJ5Rm9yQ3VycmVudFRleHQoKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIHt0ZXh0OiB0aGlzLnRleHQsIHVuZG9IaXN0b3J5OiB0aGlzLl9jb2Rl
TWlycm9yLmdldEhpc3RvcnkoKSwgY3Vyc29yOiB0aGlzLl9jb2RlTWlycm9yLmdldEN1cnNvcigp
fTsKLSAgICB9LAorICAgIH0KIAotICAgIF9yZW1lbWJlckN1cnJlbnRUZXh0SW5IaXN0b3J5OiBm
dW5jdGlvbigpCisgICAgX3JlbWVtYmVyQ3VycmVudFRleHRJbkhpc3RvcnkoKQogICAgIHsKICAg
ICAgICAgdGhpcy5faGlzdG9yeVt0aGlzLl9oaXN0b3J5SW5kZXhdID0gdGhpcy5faGlzdG9yeUVu
dHJ5Rm9yQ3VycmVudFRleHQoKTsKIApAQCAtMzM2LDQgKzMzMSw0IEBAIFdlYkluc3BlY3Rvci5D
b25zb2xlUHJvbXB0LnByb3RvdHlwZSA9IHsKICAgICB9CiB9OwogCi1XZWJJbnNwZWN0b3IuQ29u
c29sZVByb21wdC5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90
b3R5cGU7CitXZWJJbnNwZWN0b3IuQ29uc29sZVByb21wdC5NYXhpbXVtSGlzdG9yeVNpemUgPSAz
MDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L0NvbnRlbnRCcm93c2VyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvQ29udGVudEJyb3dzZXIuanMKaW5kZXggOWY0ODQzYTdjYTY3NDU2YjIxOTdjNzk3YTE4
YTM4OWVhZDY1YTdkNi4uMzNjYzdhMjc2ZDRhNGYzNTE5OTg1YzQzMTk1ZmY5YzczNmIzMWJmYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29u
dGVudEJyb3dzZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvQ29udGVudEJyb3dzZXIuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDEwNyArMjMsOTYgQEAKICAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuQ29udGVudEJyb3dzZXIg
PSBmdW5jdGlvbihlbGVtZW50LCBkZWxlZ2F0ZSwgZGlzYWJsZUJhY2tGb3J3YXJkKQorV2ViSW5z
cGVjdG9yLkNvbnRlbnRCcm93c2VyID0gY2xhc3MgQ29udGVudEJyb3dzZXIgZXh0ZW5kcyBXZWJJ
bnNwZWN0b3IuT2JqZWN0CiB7Ci0gICAgLy8gRklYTUU6IENvbnZlcnQgdGhpcyB0byBhIFdlYklu
c3BlY3Rvci5PYmplY3Qgc3ViY2xhc3MsIGFuZCBjYWxsIHN1cGVyKCkuCi0gICAgLy8gV2ViSW5z
cGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOwotCi0gICAgdGhpcy5fZWxlbWVudCA9IGVsZW1lbnQg
fHwgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgdGhpcy5fZWxlbWVudC5jbGFz
c0xpc3QuYWRkKCJjb250ZW50LWJyb3dzZXIiKTsKLQotICAgIHRoaXMuX25hdmlnYXRpb25CYXIg
PSBuZXcgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXI7Ci0gICAgdGhpcy5fZWxlbWVudC5hcHBl
bmRDaGlsZCh0aGlzLl9uYXZpZ2F0aW9uQmFyLmVsZW1lbnQpOworICAgIGNvbnN0cnVjdG9yKGVs
ZW1lbnQsIGRlbGVnYXRlLCBkaXNhYmxlQmFja0ZvcndhcmQpCisgICAgeworICAgICAgICBzdXBl
cigpOwogCi0gICAgdGhpcy5fY29udGVudFZpZXdDb250YWluZXIgPSBuZXcgV2ViSW5zcGVjdG9y
LkNvbnRlbnRWaWV3Q29udGFpbmVyOwotICAgIHRoaXMuX2NvbnRlbnRWaWV3Q29udGFpbmVyLmFk
ZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29udGFpbmVyLkV2ZW50LkN1
cnJlbnRDb250ZW50Vmlld0RpZENoYW5nZSwgdGhpcy5fY3VycmVudENvbnRlbnRWaWV3RGlkQ2hh
bmdlLCB0aGlzKTsKLSAgICB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2NvbnRlbnRW
aWV3Q29udGFpbmVyLmVsZW1lbnQpOworICAgICAgICB0aGlzLl9lbGVtZW50ID0gZWxlbWVudCB8
fCBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgdGhpcy5fZWxlbWVudC5j
bGFzc0xpc3QuYWRkKCJjb250ZW50LWJyb3dzZXIiKTsKIAotICAgIHRoaXMuX2ZpbmRCYW5uZXIg
PSBuZXcgV2ViSW5zcGVjdG9yLkZpbmRCYW5uZXIodGhpcyk7Ci0gICAgdGhpcy5fZmluZEJhbm5l
ci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5GaW5kQmFubmVyLkV2ZW50LkRpZFNob3cs
IHRoaXMuX2ZpbmRCYW5uZXJEaWRTaG93LCB0aGlzKTsKLSAgICB0aGlzLl9maW5kQmFubmVyLmFk
ZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkZpbmRCYW5uZXIuRXZlbnQuRGlkSGlkZSwgdGhp
cy5fZmluZEJhbm5lckRpZEhpZGUsIHRoaXMpOworICAgICAgICB0aGlzLl9uYXZpZ2F0aW9uQmFy
ID0gbmV3IFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyOworICAgICAgICB0aGlzLl9lbGVtZW50
LmFwcGVuZENoaWxkKHRoaXMuX25hdmlnYXRpb25CYXIuZWxlbWVudCk7CiAKLSAgICB0aGlzLl9m
aW5kS2V5Ym9hcmRTaG9ydGN1dCA9IG5ldyBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dChX
ZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5Nb2RpZmllci5Db21tYW5kT3JDb250cm9sLCAi
RiIsIHRoaXMuX3Nob3dGaW5kQmFubmVyLmJpbmQodGhpcyksIHRoaXMuX2VsZW1lbnQpOwotICAg
IHRoaXMuX3NhdmVLZXlib2FyZFNob3J0Y3V0ID0gbmV3IFdlYkluc3BlY3Rvci5LZXlib2FyZFNo
b3J0Y3V0KFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lk1vZGlmaWVyLkNvbW1hbmRPckNv
bnRyb2wsICJTIiwgdGhpcy5fc2F2ZS5iaW5kKHRoaXMpLCB0aGlzLl9lbGVtZW50KTsKLSAgICB0
aGlzLl9zYXZlQXNLZXlib2FyZFNob3J0Y3V0ID0gbmV3IFdlYkluc3BlY3Rvci5LZXlib2FyZFNo
b3J0Y3V0KFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lk1vZGlmaWVyLlNoaWZ0IHwgV2Vi
SW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuTW9kaWZpZXIuQ29tbWFuZE9yQ29udHJvbCwgIlMi
LCB0aGlzLl9zYXZlQXMuYmluZCh0aGlzKSwgdGhpcy5fZWxlbWVudCk7CisgICAgICAgIHRoaXMu
X2NvbnRlbnRWaWV3Q29udGFpbmVyID0gbmV3IFdlYkluc3BlY3Rvci5Db250ZW50Vmlld0NvbnRh
aW5lcjsKKyAgICAgICAgdGhpcy5fY29udGVudFZpZXdDb250YWluZXIuYWRkRXZlbnRMaXN0ZW5l
cihXZWJJbnNwZWN0b3IuQ29udGVudFZpZXdDb250YWluZXIuRXZlbnQuQ3VycmVudENvbnRlbnRW
aWV3RGlkQ2hhbmdlLCB0aGlzLl9jdXJyZW50Q29udGVudFZpZXdEaWRDaGFuZ2UsIHRoaXMpOwor
ICAgICAgICB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2NvbnRlbnRWaWV3Q29udGFp
bmVyLmVsZW1lbnQpOwogCi0gICAgaWYgKCFkaXNhYmxlQmFja0ZvcndhcmQpIHsKLSAgICAgICAg
dGhpcy5fYmFja0tleWJvYXJkU2hvcnRjdXQgPSBuZXcgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hv
cnRjdXQoV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuTW9kaWZpZXIuQ29tbWFuZE9yQ29u
dHJvbCB8IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lk1vZGlmaWVyLkNvbnRyb2wsIFdl
Ykluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0LktleS5MZWZ0LCB0aGlzLl9iYWNrQnV0dG9uQ2xp
Y2tlZC5iaW5kKHRoaXMpLCB0aGlzLl9lbGVtZW50KTsKLSAgICAgICAgdGhpcy5fZm9yd2FyZEtl
eWJvYXJkU2hvcnRjdXQgPSBuZXcgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQoV2ViSW5z
cGVjdG9yLktleWJvYXJkU2hvcnRjdXQuTW9kaWZpZXIuQ29tbWFuZE9yQ29udHJvbCB8IFdlYklu
c3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lk1vZGlmaWVyLkNvbnRyb2wsIFdlYkluc3BlY3Rvci5L
ZXlib2FyZFNob3J0Y3V0LktleS5SaWdodCwgdGhpcy5fZm9yd2FyZEJ1dHRvbkNsaWNrZWQuYmlu
ZCh0aGlzKSwgdGhpcy5fZWxlbWVudCk7CisgICAgICAgIHRoaXMuX2ZpbmRCYW5uZXIgPSBuZXcg
V2ViSW5zcGVjdG9yLkZpbmRCYW5uZXIodGhpcyk7CisgICAgICAgIHRoaXMuX2ZpbmRCYW5uZXIu
YWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRmluZEJhbm5lci5FdmVudC5EaWRTaG93LCB0
aGlzLl9maW5kQmFubmVyRGlkU2hvdywgdGhpcyk7CisgICAgICAgIHRoaXMuX2ZpbmRCYW5uZXIu
YWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRmluZEJhbm5lci5FdmVudC5EaWRIaWRlLCB0
aGlzLl9maW5kQmFubmVyRGlkSGlkZSwgdGhpcyk7CiAKLSAgICAgICAgdGhpcy5fYmFja0J1dHRv
bk5hdmlnYXRpb25JdGVtID0gbmV3IFdlYkluc3BlY3Rvci5CdXR0b25OYXZpZ2F0aW9uSXRlbSgi
YmFjayIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiQmFjayAoJXMpIikuZm9ybWF0KHRoaXMuX2Jh
Y2tLZXlib2FyZFNob3J0Y3V0LmRpc3BsYXlOYW1lKSwgIkltYWdlcy9CYWNrQXJyb3cuc3ZnIiwg
OCwgMTMpOwotICAgICAgICB0aGlzLl9iYWNrQnV0dG9uTmF2aWdhdGlvbkl0ZW0uYWRkRXZlbnRM
aXN0ZW5lcihXZWJJbnNwZWN0b3IuQnV0dG9uTmF2aWdhdGlvbkl0ZW0uRXZlbnQuQ2xpY2tlZCwg
dGhpcy5fYmFja0J1dHRvbkNsaWNrZWQsIHRoaXMpOwotICAgICAgICB0aGlzLl9iYWNrQnV0dG9u
TmF2aWdhdGlvbkl0ZW0uZW5hYmxlZCA9IGZhbHNlOwotICAgICAgICB0aGlzLl9uYXZpZ2F0aW9u
QmFyLmFkZE5hdmlnYXRpb25JdGVtKHRoaXMuX2JhY2tCdXR0b25OYXZpZ2F0aW9uSXRlbSk7Cisg
ICAgICAgIHRoaXMuX2ZpbmRLZXlib2FyZFNob3J0Y3V0ID0gbmV3IFdlYkluc3BlY3Rvci5LZXli
b2FyZFNob3J0Y3V0KFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lk1vZGlmaWVyLkNvbW1h
bmRPckNvbnRyb2wsICJGIiwgdGhpcy5fc2hvd0ZpbmRCYW5uZXIuYmluZCh0aGlzKSwgdGhpcy5f
ZWxlbWVudCk7CisgICAgICAgIHRoaXMuX3NhdmVLZXlib2FyZFNob3J0Y3V0ID0gbmV3IFdlYklu
c3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0KFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lk1v
ZGlmaWVyLkNvbW1hbmRPckNvbnRyb2wsICJTIiwgdGhpcy5fc2F2ZS5iaW5kKHRoaXMpLCB0aGlz
Ll9lbGVtZW50KTsKKyAgICAgICAgdGhpcy5fc2F2ZUFzS2V5Ym9hcmRTaG9ydGN1dCA9IG5ldyBX
ZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dChXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1
dC5Nb2RpZmllci5TaGlmdCB8IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lk1vZGlmaWVy
LkNvbW1hbmRPckNvbnRyb2wsICJTIiwgdGhpcy5fc2F2ZUFzLmJpbmQodGhpcyksIHRoaXMuX2Vs
ZW1lbnQpOwogCi0gICAgICAgIHRoaXMuX2ZvcndhcmRCdXR0b25OYXZpZ2F0aW9uSXRlbSA9IG5l
dyBXZWJJbnNwZWN0b3IuQnV0dG9uTmF2aWdhdGlvbkl0ZW0oImZvcndhcmQiLCBXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIkZvcndhcmQgKCVzKSIpLmZvcm1hdCh0aGlzLl9mb3J3YXJkS2V5Ym9hcmRT
aG9ydGN1dC5kaXNwbGF5TmFtZSksICJJbWFnZXMvRm9yd2FyZEFycm93LnN2ZyIsIDgsIDEzKTsK
LSAgICAgICAgdGhpcy5fZm9yd2FyZEJ1dHRvbk5hdmlnYXRpb25JdGVtLmFkZEV2ZW50TGlzdGVu
ZXIoV2ViSW5zcGVjdG9yLkJ1dHRvbk5hdmlnYXRpb25JdGVtLkV2ZW50LkNsaWNrZWQsIHRoaXMu
X2ZvcndhcmRCdXR0b25DbGlja2VkLCB0aGlzKTsKLSAgICAgICAgdGhpcy5fZm9yd2FyZEJ1dHRv
bk5hdmlnYXRpb25JdGVtLmVuYWJsZWQgPSBmYWxzZTsKLSAgICAgICAgdGhpcy5fbmF2aWdhdGlv
bkJhci5hZGROYXZpZ2F0aW9uSXRlbSh0aGlzLl9mb3J3YXJkQnV0dG9uTmF2aWdhdGlvbkl0ZW0p
OworICAgICAgICBpZiAoIWRpc2FibGVCYWNrRm9yd2FyZCkgeworICAgICAgICAgICAgdGhpcy5f
YmFja0tleWJvYXJkU2hvcnRjdXQgPSBuZXcgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQo
V2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuTW9kaWZpZXIuQ29tbWFuZE9yQ29udHJvbCB8
IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lk1vZGlmaWVyLkNvbnRyb2wsIFdlYkluc3Bl
Y3Rvci5LZXlib2FyZFNob3J0Y3V0LktleS5MZWZ0LCB0aGlzLl9iYWNrQnV0dG9uQ2xpY2tlZC5i
aW5kKHRoaXMpLCB0aGlzLl9lbGVtZW50KTsKKyAgICAgICAgICAgIHRoaXMuX2ZvcndhcmRLZXli
b2FyZFNob3J0Y3V0ID0gbmV3IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0KFdlYkluc3Bl
Y3Rvci5LZXlib2FyZFNob3J0Y3V0Lk1vZGlmaWVyLkNvbW1hbmRPckNvbnRyb2wgfCBXZWJJbnNw
ZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5Nb2RpZmllci5Db250cm9sLCBXZWJJbnNwZWN0b3IuS2V5
Ym9hcmRTaG9ydGN1dC5LZXkuUmlnaHQsIHRoaXMuX2ZvcndhcmRCdXR0b25DbGlja2VkLmJpbmQo
dGhpcyksIHRoaXMuX2VsZW1lbnQpOwogCi0gICAgICAgIHRoaXMuX25hdmlnYXRpb25CYXIuYWRk
TmF2aWdhdGlvbkl0ZW0obmV3IFdlYkluc3BlY3Rvci5EaXZpZGVyTmF2aWdhdGlvbkl0ZW0pOwot
ICAgIH0KKyAgICAgICAgICAgIHRoaXMuX2JhY2tCdXR0b25OYXZpZ2F0aW9uSXRlbSA9IG5ldyBX
ZWJJbnNwZWN0b3IuQnV0dG9uTmF2aWdhdGlvbkl0ZW0oImJhY2siLCBXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIkJhY2sgKCVzKSIpLmZvcm1hdCh0aGlzLl9iYWNrS2V5Ym9hcmRTaG9ydGN1dC5kaXNw
bGF5TmFtZSksICJJbWFnZXMvQmFja0Fycm93LnN2ZyIsIDgsIDEzKTsKKyAgICAgICAgICAgIHRo
aXMuX2JhY2tCdXR0b25OYXZpZ2F0aW9uSXRlbS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rv
ci5CdXR0b25OYXZpZ2F0aW9uSXRlbS5FdmVudC5DbGlja2VkLCB0aGlzLl9iYWNrQnV0dG9uQ2xp
Y2tlZCwgdGhpcyk7CisgICAgICAgICAgICB0aGlzLl9iYWNrQnV0dG9uTmF2aWdhdGlvbkl0ZW0u
ZW5hYmxlZCA9IGZhbHNlOworICAgICAgICAgICAgdGhpcy5fbmF2aWdhdGlvbkJhci5hZGROYXZp
Z2F0aW9uSXRlbSh0aGlzLl9iYWNrQnV0dG9uTmF2aWdhdGlvbkl0ZW0pOwogCi0gICAgdGhpcy5f
aGllcmFyY2hpY2FsUGF0aE5hdmlnYXRpb25JdGVtID0gbmV3IFdlYkluc3BlY3Rvci5IaWVyYXJj
aGljYWxQYXRoTmF2aWdhdGlvbkl0ZW07Ci0gICAgdGhpcy5faGllcmFyY2hpY2FsUGF0aE5hdmln
YXRpb25JdGVtLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhO
YXZpZ2F0aW9uSXRlbS5FdmVudC5QYXRoQ29tcG9uZW50V2FzU2VsZWN0ZWQsIHRoaXMuX2hpZXJh
cmNoaWNhbFBhdGhDb21wb25lbnRXYXNTZWxlY3RlZCwgdGhpcyk7Ci0gICAgdGhpcy5fbmF2aWdh
dGlvbkJhci5hZGROYXZpZ2F0aW9uSXRlbSh0aGlzLl9oaWVyYXJjaGljYWxQYXRoTmF2aWdhdGlv
bkl0ZW0pOworICAgICAgICAgICAgdGhpcy5fZm9yd2FyZEJ1dHRvbk5hdmlnYXRpb25JdGVtID0g
bmV3IFdlYkluc3BlY3Rvci5CdXR0b25OYXZpZ2F0aW9uSXRlbSgiZm9yd2FyZCIsIFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiRm9yd2FyZCAoJXMpIikuZm9ybWF0KHRoaXMuX2ZvcndhcmRLZXlib2Fy
ZFNob3J0Y3V0LmRpc3BsYXlOYW1lKSwgIkltYWdlcy9Gb3J3YXJkQXJyb3cuc3ZnIiwgOCwgMTMp
OworICAgICAgICAgICAgdGhpcy5fZm9yd2FyZEJ1dHRvbk5hdmlnYXRpb25JdGVtLmFkZEV2ZW50
TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkJ1dHRvbk5hdmlnYXRpb25JdGVtLkV2ZW50LkNsaWNrZWQs
IHRoaXMuX2ZvcndhcmRCdXR0b25DbGlja2VkLCB0aGlzKTsKKyAgICAgICAgICAgIHRoaXMuX2Zv
cndhcmRCdXR0b25OYXZpZ2F0aW9uSXRlbS5lbmFibGVkID0gZmFsc2U7CisgICAgICAgICAgICB0
aGlzLl9uYXZpZ2F0aW9uQmFyLmFkZE5hdmlnYXRpb25JdGVtKHRoaXMuX2ZvcndhcmRCdXR0b25O
YXZpZ2F0aW9uSXRlbSk7CiAKLSAgICB0aGlzLl9jb250ZW50Vmlld1NlbGVjdGlvblBhdGhOYXZp
Z2F0aW9uSXRlbSA9IG5ldyBXZWJJbnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0aE5hdmlnYXRpb25J
dGVtOworICAgICAgICAgICAgdGhpcy5fbmF2aWdhdGlvbkJhci5hZGROYXZpZ2F0aW9uSXRlbShu
ZXcgV2ViSW5zcGVjdG9yLkRpdmlkZXJOYXZpZ2F0aW9uSXRlbSk7CisgICAgICAgIH0KIAotICAg
IHRoaXMuX2RpdmlkaW5nRmxleGlibGVTcGFjZU5hdmlnYXRpb25JdGVtID0gbmV3IFdlYkluc3Bl
Y3Rvci5GbGV4aWJsZVNwYWNlTmF2aWdhdGlvbkl0ZW07Ci0gICAgdGhpcy5fbmF2aWdhdGlvbkJh
ci5hZGROYXZpZ2F0aW9uSXRlbSh0aGlzLl9kaXZpZGluZ0ZsZXhpYmxlU3BhY2VOYXZpZ2F0aW9u
SXRlbSk7CisgICAgICAgIHRoaXMuX2hpZXJhcmNoaWNhbFBhdGhOYXZpZ2F0aW9uSXRlbSA9IG5l
dyBXZWJJbnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0aE5hdmlnYXRpb25JdGVtOworICAgICAgICB0
aGlzLl9oaWVyYXJjaGljYWxQYXRoTmF2aWdhdGlvbkl0ZW0uYWRkRXZlbnRMaXN0ZW5lcihXZWJJ
bnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0aE5hdmlnYXRpb25JdGVtLkV2ZW50LlBhdGhDb21wb25l
bnRXYXNTZWxlY3RlZCwgdGhpcy5faGllcmFyY2hpY2FsUGF0aENvbXBvbmVudFdhc1NlbGVjdGVk
LCB0aGlzKTsKKyAgICAgICAgdGhpcy5fbmF2aWdhdGlvbkJhci5hZGROYXZpZ2F0aW9uSXRlbSh0
aGlzLl9oaWVyYXJjaGljYWxQYXRoTmF2aWdhdGlvbkl0ZW0pOwogCi0gICAgV2ViSW5zcGVjdG9y
LkNvbnRlbnRWaWV3LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3LkV2
ZW50LlNlbGVjdGlvblBhdGhDb21wb25lbnRzRGlkQ2hhbmdlLCB0aGlzLl9jb250ZW50Vmlld1Nl
bGVjdGlvblBhdGhDb21wb25lbnREaWRDaGFuZ2UsIHRoaXMpOwotICAgIFdlYkluc3BlY3Rvci5D
b250ZW50Vmlldy5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5FdmVu
dC5TdXBwbGVtZW50YWxSZXByZXNlbnRlZE9iamVjdHNEaWRDaGFuZ2UsIHRoaXMuX2NvbnRlbnRW
aWV3U3VwcGxlbWVudGFsUmVwcmVzZW50ZWRPYmplY3RzRGlkQ2hhbmdlLCB0aGlzKTsKLSAgICBX
ZWJJbnNwZWN0b3IuQ29udGVudFZpZXcuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQ29u
dGVudFZpZXcuRXZlbnQuTnVtYmVyT2ZTZWFyY2hSZXN1bHRzRGlkQ2hhbmdlLCB0aGlzLl9jb250
ZW50Vmlld051bWJlck9mU2VhcmNoUmVzdWx0c0RpZENoYW5nZSwgdGhpcyk7Ci0gICAgV2ViSW5z
cGVjdG9yLkNvbnRlbnRWaWV3LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkNvbnRlbnRW
aWV3LkV2ZW50Lk5hdmlnYXRpb25JdGVtc0RpZENoYW5nZSwgdGhpcy5fY29udGVudFZpZXdOYXZp
Z2F0aW9uSXRlbXNEaWRDaGFuZ2UsIHRoaXMpOworICAgICAgICB0aGlzLl9jb250ZW50Vmlld1Nl
bGVjdGlvblBhdGhOYXZpZ2F0aW9uSXRlbSA9IG5ldyBXZWJJbnNwZWN0b3IuSGllcmFyY2hpY2Fs
UGF0aE5hdmlnYXRpb25JdGVtOwogCi0gICAgdGhpcy5fZGVsZWdhdGUgPSBkZWxlZ2F0ZSB8fCBu
dWxsOworICAgICAgICB0aGlzLl9kaXZpZGluZ0ZsZXhpYmxlU3BhY2VOYXZpZ2F0aW9uSXRlbSA9
IG5ldyBXZWJJbnNwZWN0b3IuRmxleGlibGVTcGFjZU5hdmlnYXRpb25JdGVtOworICAgICAgICB0
aGlzLl9uYXZpZ2F0aW9uQmFyLmFkZE5hdmlnYXRpb25JdGVtKHRoaXMuX2RpdmlkaW5nRmxleGli
bGVTcGFjZU5hdmlnYXRpb25JdGVtKTsKIAotICAgIHRoaXMuX2N1cnJlbnRDb250ZW50Vmlld05h
dmlnYXRpb25JdGVtcyA9IFtdOwotfTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3
LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3LkV2ZW50LlNlbGVjdGlv
blBhdGhDb21wb25lbnRzRGlkQ2hhbmdlLCB0aGlzLl9jb250ZW50Vmlld1NlbGVjdGlvblBhdGhD
b21wb25lbnREaWRDaGFuZ2UsIHRoaXMpOworICAgICAgICBXZWJJbnNwZWN0b3IuQ29udGVudFZp
ZXcuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcuRXZlbnQuU3VwcGxl
bWVudGFsUmVwcmVzZW50ZWRPYmplY3RzRGlkQ2hhbmdlLCB0aGlzLl9jb250ZW50Vmlld1N1cHBs
ZW1lbnRhbFJlcHJlc2VudGVkT2JqZWN0c0RpZENoYW5nZSwgdGhpcyk7CisgICAgICAgIFdlYklu
c3BlY3Rvci5Db250ZW50Vmlldy5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Db250ZW50
Vmlldy5FdmVudC5OdW1iZXJPZlNlYXJjaFJlc3VsdHNEaWRDaGFuZ2UsIHRoaXMuX2NvbnRlbnRW
aWV3TnVtYmVyT2ZTZWFyY2hSZXN1bHRzRGlkQ2hhbmdlLCB0aGlzKTsKKyAgICAgICAgV2ViSW5z
cGVjdG9yLkNvbnRlbnRWaWV3LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkNvbnRlbnRW
aWV3LkV2ZW50Lk5hdmlnYXRpb25JdGVtc0RpZENoYW5nZSwgdGhpcy5fY29udGVudFZpZXdOYXZp
Z2F0aW9uSXRlbXNEaWRDaGFuZ2UsIHRoaXMpOwogCi0vLyBGSVhNRTogTW92ZSB0byBhIFdlYklu
c3BlY3Rvci5PYmplY3Qgc3ViY2xhc3MgYW5kIHdlIGNhbiByZW1vdmUgdGhpcy4KLVdlYkluc3Bl
Y3Rvci5PYmplY3QuZGVwcmVjYXRlZEFkZENvbnN0cnVjdG9yRnVuY3Rpb25zKFdlYkluc3BlY3Rv
ci5Db250ZW50QnJvd3Nlcik7Ci0KLVdlYkluc3BlY3Rvci5Db250ZW50QnJvd3Nlci5FdmVudCA9
IHsKLSAgICBDdXJyZW50UmVwcmVzZW50ZWRPYmplY3RzRGlkQ2hhbmdlOiAiY29udGVudC1icm93
c2VyLWN1cnJlbnQtcmVwcmVzZW50ZWQtb2JqZWN0cy1kaWQtY2hhbmdlIiwKLSAgICBDdXJyZW50
Q29udGVudFZpZXdEaWRDaGFuZ2U6ICJjb250ZW50LWJyb3dzZXItY3VycmVudC1jb250ZW50LXZp
ZXctZGlkLWNoYW5nZSIKLX07Ci0KLVdlYkluc3BlY3Rvci5Db250ZW50QnJvd3Nlci5wcm90b3R5
cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5Db250ZW50QnJvd3NlciwKKyAg
ICAgICAgdGhpcy5fZGVsZWdhdGUgPSBkZWxlZ2F0ZSB8fCBudWxsOwogCisgICAgICAgIHRoaXMu
X2N1cnJlbnRDb250ZW50Vmlld05hdmlnYXRpb25JdGVtcyA9IFtdOworICAgIH0KICAgICAvLyBQ
dWJsaWMKIAogICAgIGdldCBlbGVtZW50KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9l
bGVtZW50OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IG5hdmlnYXRpb25CYXIoKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIHRoaXMuX25hdmlnYXRpb25CYXI7Ci0gICAgfSwKKyAgICB9CiAKICAg
ICBnZXQgY29udGVudFZpZXdDb250YWluZXIoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMu
X2NvbnRlbnRWaWV3Q29udGFpbmVyOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGRlbGVnYXRl
KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9kZWxlZ2F0ZTsKLSAgICB9LAorICAgIH0K
IAogICAgIHNldCBkZWxlZ2F0ZShuZXdEZWxlZ2F0ZSkKICAgICB7CiAgICAgICAgIHRoaXMuX2Rl
bGVnYXRlID0gbmV3RGVsZWdhdGUgfHwgbnVsbDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBj
dXJyZW50Q29udGVudFZpZXcoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2NvbnRlbnRW
aWV3Q29udGFpbmVyLmN1cnJlbnRDb250ZW50VmlldzsKLSAgICB9LAorICAgIH0KIAogICAgIGdl
dCBjdXJyZW50UmVwcmVzZW50ZWRPYmplY3RzKCkKICAgICB7CkBAIC0xNDUsNTMgKzEzNCw1MyBA
QCBXZWJJbnNwZWN0b3IuQ29udGVudEJyb3dzZXIucHJvdG90eXBlID0gewogICAgICAgICB9CiAK
ICAgICAgICAgcmV0dXJuIHJlcHJlc2VudGVkT2JqZWN0czsKLSAgICB9LAorICAgIH0KIAotICAg
IHVwZGF0ZUxheW91dDogZnVuY3Rpb24oKQorICAgIHVwZGF0ZUxheW91dCgpCiAgICAgewogICAg
ICAgICB0aGlzLl9uYXZpZ2F0aW9uQmFyLnVwZGF0ZUxheW91dCgpOwogICAgICAgICB0aGlzLl9j
b250ZW50Vmlld0NvbnRhaW5lci51cGRhdGVMYXlvdXQoKTsKLSAgICB9LAorICAgIH0KIAotICAg
IHNob3dDb250ZW50Vmlld0ZvclJlcHJlc2VudGVkT2JqZWN0OiBmdW5jdGlvbihyZXByZXNlbnRl
ZE9iamVjdCwgY29va2llLCBleHRyYUFyZ3VtZW50cykKKyAgICBzaG93Q29udGVudFZpZXdGb3JS
ZXByZXNlbnRlZE9iamVjdChyZXByZXNlbnRlZE9iamVjdCwgY29va2llLCBleHRyYUFyZ3VtZW50
cykKICAgICB7CiAgICAgICAgIHZhciBjb250ZW50VmlldyA9IHRoaXMuY29udGVudFZpZXdGb3JS
ZXByZXNlbnRlZE9iamVjdChyZXByZXNlbnRlZE9iamVjdCwgZmFsc2UsIGV4dHJhQXJndW1lbnRz
KTsKICAgICAgICAgcmV0dXJuIHRoaXMuX2NvbnRlbnRWaWV3Q29udGFpbmVyLnNob3dDb250ZW50
Vmlldyhjb250ZW50VmlldywgY29va2llKTsKLSAgICB9LAorICAgIH0KIAotICAgIHNob3dDb250
ZW50VmlldzogZnVuY3Rpb24oY29udGVudFZpZXcsIGNvb2tpZSkKKyAgICBzaG93Q29udGVudFZp
ZXcoY29udGVudFZpZXcsIGNvb2tpZSkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9jb250
ZW50Vmlld0NvbnRhaW5lci5zaG93Q29udGVudFZpZXcoY29udGVudFZpZXcsIGNvb2tpZSk7Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBjb250ZW50Vmlld0ZvclJlcHJlc2VudGVkT2JqZWN0OiBmdW5j
dGlvbihyZXByZXNlbnRlZE9iamVjdCwgb25seUV4aXN0aW5nLCBleHRyYUFyZ3VtZW50cykKKyAg
ICBjb250ZW50Vmlld0ZvclJlcHJlc2VudGVkT2JqZWN0KHJlcHJlc2VudGVkT2JqZWN0LCBvbmx5
RXhpc3RpbmcsIGV4dHJhQXJndW1lbnRzKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2Nv
bnRlbnRWaWV3Q29udGFpbmVyLmNvbnRlbnRWaWV3Rm9yUmVwcmVzZW50ZWRPYmplY3QocmVwcmVz
ZW50ZWRPYmplY3QsIG9ubHlFeGlzdGluZywgZXh0cmFBcmd1bWVudHMpOwotICAgIH0sCisgICAg
fQogCi0gICAgdXBkYXRlSGllcmFyY2hpY2FsUGF0aEZvckN1cnJlbnRDb250ZW50VmlldzogZnVu
Y3Rpb24oKQorICAgIHVwZGF0ZUhpZXJhcmNoaWNhbFBhdGhGb3JDdXJyZW50Q29udGVudFZpZXco
KQogICAgIHsKICAgICAgICAgdmFyIGN1cnJlbnRDb250ZW50VmlldyA9IHRoaXMuY3VycmVudENv
bnRlbnRWaWV3OwogICAgICAgICB0aGlzLl91cGRhdGVIaWVyYXJjaGljYWxQYXRoTmF2aWdhdGlv
bkl0ZW0oY3VycmVudENvbnRlbnRWaWV3ID8gY3VycmVudENvbnRlbnRWaWV3LnJlcHJlc2VudGVk
T2JqZWN0IDogbnVsbCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBjYW5Hb0JhY2s6IGZ1bmN0aW9u
KCkKKyAgICBjYW5Hb0JhY2soKQogICAgIHsKICAgICAgICAgdmFyIGN1cnJlbnRDb250ZW50Vmll
dyA9IHRoaXMuY3VycmVudENvbnRlbnRWaWV3OwogICAgICAgICBpZiAoY3VycmVudENvbnRlbnRW
aWV3ICYmIGN1cnJlbnRDb250ZW50Vmlldy5jYW5Hb0JhY2soKSkKICAgICAgICAgICAgIHJldHVy
biB0cnVlOwogICAgICAgICByZXR1cm4gdGhpcy5fY29udGVudFZpZXdDb250YWluZXIuY2FuR29C
YWNrKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBjYW5Hb0ZvcndhcmQ6IGZ1bmN0aW9uKCkKKyAg
ICBjYW5Hb0ZvcndhcmQoKQogICAgIHsKICAgICAgICAgdmFyIGN1cnJlbnRDb250ZW50VmlldyA9
IHRoaXMuY3VycmVudENvbnRlbnRWaWV3OwogICAgICAgICBpZiAoY3VycmVudENvbnRlbnRWaWV3
ICYmIGN1cnJlbnRDb250ZW50Vmlldy5jYW5Hb0ZvcndhcmQoKSkKICAgICAgICAgICAgIHJldHVy
biB0cnVlOwogICAgICAgICByZXR1cm4gdGhpcy5fY29udGVudFZpZXdDb250YWluZXIuY2FuR29G
b3J3YXJkKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBnb0JhY2s6IGZ1bmN0aW9uKCkKKyAgICBn
b0JhY2soKQogICAgIHsKICAgICAgICAgdmFyIGN1cnJlbnRDb250ZW50VmlldyA9IHRoaXMuY3Vy
cmVudENvbnRlbnRWaWV3OwogICAgICAgICBpZiAoY3VycmVudENvbnRlbnRWaWV3ICYmIGN1cnJl
bnRDb250ZW50Vmlldy5jYW5Hb0JhY2soKSkgewpAQCAtMjA0LDkgKzE5Myw5IEBAIFdlYkluc3Bl
Y3Rvci5Db250ZW50QnJvd3Nlci5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgLy8gVGhlIF91cGRh
dGVCYWNrRm9yd2FyZEJ1dHRvbnMgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IF9jdXJyZW50Q29udGVu
dFZpZXdEaWRDaGFuZ2UsCiAgICAgICAgIC8vIHNvIGl0IGRvZXMgbm90IG5lZWQgdG8gYmUgY2Fs
bGVkIGhlcmUuCi0gICAgfSwKKyAgICB9CiAKLSAgICBnb0ZvcndhcmQ6IGZ1bmN0aW9uKCkKKyAg
ICBnb0ZvcndhcmQoKQogICAgIHsKICAgICAgICAgdmFyIGN1cnJlbnRDb250ZW50VmlldyA9IHRo
aXMuY3VycmVudENvbnRlbnRWaWV3OwogICAgICAgICBpZiAoY3VycmVudENvbnRlbnRWaWV3ICYm
IGN1cnJlbnRDb250ZW50Vmlldy5jYW5Hb0ZvcndhcmQoKSkgewpAQCAtMjE5LDEzMyArMjA4LDEz
MyBAQCBXZWJJbnNwZWN0b3IuQ29udGVudEJyb3dzZXIucHJvdG90eXBlID0gewogCiAgICAgICAg
IC8vIFRoZSBfdXBkYXRlQmFja0ZvcndhcmRCdXR0b25zIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSBf
Y3VycmVudENvbnRlbnRWaWV3RGlkQ2hhbmdlLAogICAgICAgICAvLyBzbyBpdCBkb2VzIG5vdCBu
ZWVkIHRvIGJlIGNhbGxlZCBoZXJlLgotICAgIH0sCisgICAgfQogCi0gICAgZmluZEJhbm5lclBl
cmZvcm1TZWFyY2g6IGZ1bmN0aW9uKGZpbmRCYW5uZXIsIHF1ZXJ5KQorICAgIGZpbmRCYW5uZXJQ
ZXJmb3JtU2VhcmNoKGZpbmRCYW5uZXIsIHF1ZXJ5KQogICAgIHsKICAgICAgICAgdmFyIGN1cnJl
bnRDb250ZW50VmlldyA9IHRoaXMuY3VycmVudENvbnRlbnRWaWV3OwogICAgICAgICBpZiAoIWN1
cnJlbnRDb250ZW50VmlldyB8fCAhY3VycmVudENvbnRlbnRWaWV3LnN1cHBvcnRzU2VhcmNoKQog
ICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGN1cnJlbnRDb250ZW50Vmlldy5wZXJmb3Jt
U2VhcmNoKHF1ZXJ5KTsKLSAgICB9LAorICAgIH0KIAotICAgIGZpbmRCYW5uZXJTZWFyY2hDbGVh
cmVkOiBmdW5jdGlvbihmaW5kQmFubmVyKQorICAgIGZpbmRCYW5uZXJTZWFyY2hDbGVhcmVkKGZp
bmRCYW5uZXIpCiAgICAgewogICAgICAgICB2YXIgY3VycmVudENvbnRlbnRWaWV3ID0gdGhpcy5j
dXJyZW50Q29udGVudFZpZXc7CiAgICAgICAgIGlmICghY3VycmVudENvbnRlbnRWaWV3IHx8ICFj
dXJyZW50Q29udGVudFZpZXcuc3VwcG9ydHNTZWFyY2gpCiAgICAgICAgICAgICByZXR1cm47CiAK
ICAgICAgICAgY3VycmVudENvbnRlbnRWaWV3LnNlYXJjaENsZWFyZWQoKTsKLSAgICB9LAorICAg
IH0KIAotICAgIGZpbmRCYW5uZXJTZWFyY2hRdWVyeUZvclNlbGVjdGlvbjogZnVuY3Rpb24oZmlu
ZEJhbm5lcikKKyAgICBmaW5kQmFubmVyU2VhcmNoUXVlcnlGb3JTZWxlY3Rpb24oZmluZEJhbm5l
cikKICAgICB7CiAgICAgICAgIHZhciBjdXJyZW50Q29udGVudFZpZXcgPSB0aGlzLmN1cnJlbnRD
b250ZW50VmlldzsKICAgICAgICAgaWYgKCFjdXJyZW50Q29udGVudFZpZXcgfHwgIWN1cnJlbnRD
b250ZW50Vmlldy5zdXBwb3J0c1NlYXJjaCkKICAgICAgICAgICAgIHJldHVybiBudWxsOwogCiAg
ICAgICAgIHJldHVybiBjdXJyZW50Q29udGVudFZpZXcuc2VhcmNoUXVlcnlXaXRoU2VsZWN0aW9u
KCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBmaW5kQmFubmVyUmV2ZWFsUHJldmlvdXNSZXN1bHQ6
IGZ1bmN0aW9uKGZpbmRCYW5uZXIpCisgICAgZmluZEJhbm5lclJldmVhbFByZXZpb3VzUmVzdWx0
KGZpbmRCYW5uZXIpCiAgICAgewogICAgICAgICB2YXIgY3VycmVudENvbnRlbnRWaWV3ID0gdGhp
cy5jdXJyZW50Q29udGVudFZpZXc7CiAgICAgICAgIGlmICghY3VycmVudENvbnRlbnRWaWV3IHx8
ICFjdXJyZW50Q29udGVudFZpZXcuc3VwcG9ydHNTZWFyY2gpCiAgICAgICAgICAgICByZXR1cm47
CiAKICAgICAgICAgY3VycmVudENvbnRlbnRWaWV3LnJldmVhbFByZXZpb3VzU2VhcmNoUmVzdWx0
KCFmaW5kQmFubmVyLnNob3dpbmcpOwotICAgIH0sCisgICAgfQogCi0gICAgZmluZEJhbm5lclJl
dmVhbE5leHRSZXN1bHQ6IGZ1bmN0aW9uKGZpbmRCYW5uZXIpCisgICAgZmluZEJhbm5lclJldmVh
bE5leHRSZXN1bHQoZmluZEJhbm5lcikKICAgICB7CiAgICAgICAgIHZhciBjdXJyZW50Q29udGVu
dFZpZXcgPSB0aGlzLmN1cnJlbnRDb250ZW50VmlldzsKICAgICAgICAgaWYgKCFjdXJyZW50Q29u
dGVudFZpZXcgfHwgIWN1cnJlbnRDb250ZW50Vmlldy5zdXBwb3J0c1NlYXJjaCkKICAgICAgICAg
ICAgIHJldHVybjsKIAogICAgICAgICBjdXJyZW50Q29udGVudFZpZXcucmV2ZWFsTmV4dFNlYXJj
aFJlc3VsdCghZmluZEJhbm5lci5zaG93aW5nKTsKLSAgICB9LAorICAgIH0KIAotICAgIHNob3du
OiBmdW5jdGlvbigpCisgICAgc2hvd24oKQogICAgIHsKICAgICAgICAgdGhpcy5fY29udGVudFZp
ZXdDb250YWluZXIuc2hvd24oKTsKIAogICAgICAgICB0aGlzLl9maW5kQmFubmVyLmVuYWJsZUtl
eWJvYXJkU2hvcnRjdXRzKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBoaWRkZW46IGZ1bmN0aW9u
KCkKKyAgICBoaWRkZW4oKQogICAgIHsKICAgICAgICAgdGhpcy5fY29udGVudFZpZXdDb250YWlu
ZXIuaGlkZGVuKCk7CiAKICAgICAgICAgdGhpcy5fZmluZEJhbm5lci5kaXNhYmxlS2V5Ym9hcmRT
aG9ydGN1dHMoKTsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByaXZhdGUKIAotICAgIF9iYWNr
QnV0dG9uQ2xpY2tlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX2JhY2tCdXR0b25DbGlja2VkKGV2
ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5nb0JhY2soKTsKLSAgICB9LAorICAgIH0KIAotICAg
IF9mb3J3YXJkQnV0dG9uQ2xpY2tlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX2ZvcndhcmRCdXR0
b25DbGlja2VkKGV2ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5nb0ZvcndhcmQoKTsKLSAgICB9
LAorICAgIH0KIAotICAgIF9zYXZlOiBmdW5jdGlvbihldmVudCkKKyAgICBfc2F2ZShldmVudCkK
ICAgICB7CiAgICAgICAgIHZhciBjdXJyZW50Q29udGVudFZpZXcgPSB0aGlzLmN1cnJlbnRDb250
ZW50VmlldzsKICAgICAgICAgaWYgKCFjdXJyZW50Q29udGVudFZpZXcgfHwgIWN1cnJlbnRDb250
ZW50Vmlldy5zdXBwb3J0c1NhdmUpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgV2Vi
SW5zcGVjdG9yLnNhdmVEYXRhVG9GaWxlKGN1cnJlbnRDb250ZW50Vmlldy5zYXZlRGF0YSk7Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBfc2F2ZUFzOiBmdW5jdGlvbihldmVudCkKKyAgICBfc2F2ZUFz
KGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIGN1cnJlbnRDb250ZW50VmlldyA9IHRoaXMuY3Vy
cmVudENvbnRlbnRWaWV3OwogICAgICAgICBpZiAoIWN1cnJlbnRDb250ZW50VmlldyB8fCAhY3Vy
cmVudENvbnRlbnRWaWV3LnN1cHBvcnRzU2F2ZSkKICAgICAgICAgICAgIHJldHVybjsKIAogICAg
ICAgICBXZWJJbnNwZWN0b3Iuc2F2ZURhdGFUb0ZpbGUoY3VycmVudENvbnRlbnRWaWV3LnNhdmVE
YXRhLCB0cnVlKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9zaG93RmluZEJhbm5lcjogZnVuY3Rp
b24oZXZlbnQpCisgICAgX3Nob3dGaW5kQmFubmVyKGV2ZW50KQogICAgIHsKICAgICAgICAgdmFy
IGN1cnJlbnRDb250ZW50VmlldyA9IHRoaXMuY3VycmVudENvbnRlbnRWaWV3OwogICAgICAgICBp
ZiAoIWN1cnJlbnRDb250ZW50VmlldyB8fCAhY3VycmVudENvbnRlbnRWaWV3LnN1cHBvcnRzU2Vh
cmNoKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIHRoaXMuX2ZpbmRCYW5uZXIuc2hv
dygpOwotICAgIH0sCisgICAgfQogCi0gICAgX2ZpbmRCYW5uZXJEaWRTaG93OiBmdW5jdGlvbihl
dmVudCkKKyAgICBfZmluZEJhbm5lckRpZFNob3coZXZlbnQpCiAgICAgewogICAgICAgICB2YXIg
Y3VycmVudENvbnRlbnRWaWV3ID0gdGhpcy5jdXJyZW50Q29udGVudFZpZXc7CiAgICAgICAgIGlm
ICghY3VycmVudENvbnRlbnRWaWV3IHx8ICFjdXJyZW50Q29udGVudFZpZXcuc3VwcG9ydHNTZWFy
Y2gpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgY3VycmVudENvbnRlbnRWaWV3LmF1
dG9tYXRpY2FsbHlSZXZlYWxGaXJzdFNlYXJjaFJlc3VsdCA9IHRydWU7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBfZmluZEJhbm5lckRpZEhpZGU6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9maW5kQmFu
bmVyRGlkSGlkZShldmVudCkKICAgICB7CiAgICAgICAgIHZhciBjdXJyZW50Q29udGVudFZpZXcg
PSB0aGlzLmN1cnJlbnRDb250ZW50VmlldzsKICAgICAgICAgaWYgKCFjdXJyZW50Q29udGVudFZp
ZXcgfHwgIWN1cnJlbnRDb250ZW50Vmlldy5zdXBwb3J0c1NlYXJjaCkKICAgICAgICAgICAgIHJl
dHVybjsKIAogICAgICAgICBjdXJyZW50Q29udGVudFZpZXcuYXV0b21hdGljYWxseVJldmVhbEZp
cnN0U2VhcmNoUmVzdWx0ID0gZmFsc2U7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfY29udGVudFZp
ZXdOdW1iZXJPZlNlYXJjaFJlc3VsdHNEaWRDaGFuZ2U6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9j
b250ZW50Vmlld051bWJlck9mU2VhcmNoUmVzdWx0c0RpZENoYW5nZShldmVudCkKICAgICB7CiAg
ICAgICAgIGlmIChldmVudC50YXJnZXQgIT09IHRoaXMuY3VycmVudENvbnRlbnRWaWV3KQogICAg
ICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIHRoaXMuX2ZpbmRCYW5uZXIubnVtYmVyT2ZSZXN1
bHRzID0gdGhpcy5jdXJyZW50Q29udGVudFZpZXcubnVtYmVyT2ZTZWFyY2hSZXN1bHRzOwotICAg
IH0sCisgICAgfQogCi0gICAgX3VwZGF0ZUhpZXJhcmNoaWNhbFBhdGhOYXZpZ2F0aW9uSXRlbTog
ZnVuY3Rpb24ocmVwcmVzZW50ZWRPYmplY3QpCisgICAgX3VwZGF0ZUhpZXJhcmNoaWNhbFBhdGhO
YXZpZ2F0aW9uSXRlbShyZXByZXNlbnRlZE9iamVjdCkKICAgICB7CiAgICAgICAgIGlmICghdGhp
cy5kZWxlZ2F0ZSB8fCB0eXBlb2YgdGhpcy5kZWxlZ2F0ZS5jb250ZW50QnJvd3NlclRyZWVFbGVt
ZW50Rm9yUmVwcmVzZW50ZWRPYmplY3QgIT09ICJmdW5jdGlvbiIpCiAgICAgICAgICAgICByZXR1
cm47CkBAIC0zNjAsOSArMzQ5LDkgQEAgV2ViSW5zcGVjdG9yLkNvbnRlbnRCcm93c2VyLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgfQogCiAgICAgICAgIHRoaXMuX2hpZXJhcmNoaWNhbFBhdGhOYXZp
Z2F0aW9uSXRlbS5jb21wb25lbnRzID0gcGF0aENvbXBvbmVudHM7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBfdXBkYXRlQ29udGVudFZpZXdTZWxlY3Rpb25QYXRoTmF2aWdhdGlvbkl0ZW06IGZ1bmN0
aW9uKGNvbnRlbnRWaWV3KQorICAgIF91cGRhdGVDb250ZW50Vmlld1NlbGVjdGlvblBhdGhOYXZp
Z2F0aW9uSXRlbShjb250ZW50VmlldykKICAgICB7CiAgICAgICAgIHZhciBzZWxlY3Rpb25QYXRo
Q29tcG9uZW50cyA9IGNvbnRlbnRWaWV3ID8gY29udGVudFZpZXcuc2VsZWN0aW9uUGF0aENvbXBv
bmVudHMgfHwgW10gOiBbXTsKICAgICAgICAgdGhpcy5fY29udGVudFZpZXdTZWxlY3Rpb25QYXRo
TmF2aWdhdGlvbkl0ZW0uY29tcG9uZW50cyA9IHNlbGVjdGlvblBhdGhDb21wb25lbnRzOwpAQCAt
MzgwLDE4ICszNjksMTggQEAgV2ViSW5zcGVjdG9yLkNvbnRlbnRCcm93c2VyLnByb3RvdHlwZSA9
IHsKICAgICAgICAgICAgIHRoaXMuX25hdmlnYXRpb25CYXIuaW5zZXJ0TmF2aWdhdGlvbkl0ZW0o
dGhpcy5fY29udGVudFZpZXdTZWxlY3Rpb25QYXRoTmF2aWdhdGlvbkl0ZW0sIGhpZXJhcmNoaWNh
bFBhdGhJdGVtSW5kZXggKyAxKTsKICAgICAgICAgICAgIHRoaXMuX2hpZXJhcmNoaWNhbFBhdGhO
YXZpZ2F0aW9uSXRlbS5hbHdheXNTaG93TGFzdFBhdGhDb21wb25lbnRTZXBhcmF0b3IgPSB0cnVl
OwogICAgICAgICB9Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdXBkYXRlQmFja0ZvcndhcmRCdXR0
b25zOiBmdW5jdGlvbigpCisgICAgX3VwZGF0ZUJhY2tGb3J3YXJkQnV0dG9ucygpCiAgICAgewog
ICAgICAgICBpZiAoIXRoaXMuX2JhY2tCdXR0b25OYXZpZ2F0aW9uSXRlbSB8fCAhdGhpcy5fZm9y
d2FyZEJ1dHRvbk5hdmlnYXRpb25JdGVtKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAg
IHRoaXMuX2JhY2tCdXR0b25OYXZpZ2F0aW9uSXRlbS5lbmFibGVkID0gdGhpcy5jYW5Hb0JhY2so
KTsKICAgICAgICAgdGhpcy5fZm9yd2FyZEJ1dHRvbk5hdmlnYXRpb25JdGVtLmVuYWJsZWQgPSB0
aGlzLmNhbkdvRm9yd2FyZCgpOwotICAgIH0sCisgICAgfQogCi0gICAgX3VwZGF0ZUNvbnRlbnRW
aWV3TmF2aWdhdGlvbkl0ZW1zOiBmdW5jdGlvbigpCisgICAgX3VwZGF0ZUNvbnRlbnRWaWV3TmF2
aWdhdGlvbkl0ZW1zKCkKICAgICB7CiAgICAgICAgIHZhciBuYXZpZ2F0aW9uQmFyID0gdGhpcy5u
YXZpZ2F0aW9uQmFyOwogCkBAIC00MjcsOSArNDE2LDkgQEAgV2ViSW5zcGVjdG9yLkNvbnRlbnRC
cm93c2VyLnByb3RvdHlwZSA9IHsKICAgICAgICAgLy8gUmVtZW1iZXIgdGhlIG5hdmlnYXRpb24g
aXRlbXMgd2UgaW5zZXJ0ZWQgc28gd2UgY2FuIHJlbW92ZSB0aGVtCiAgICAgICAgIC8vIGZvciB0
aGUgbmV4dCBjb250ZW50IHZpZXcuCiAgICAgICAgIHRoaXMuX2N1cnJlbnRDb250ZW50Vmlld05h
dmlnYXRpb25JdGVtcyA9IG5ld05hdmlnYXRpb25JdGVtczsKLSAgICB9LAorICAgIH0KIAotICAg
IF91cGRhdGVGaW5kQmFubmVyOiBmdW5jdGlvbihjdXJyZW50Q29udGVudFZpZXcpCisgICAgX3Vw
ZGF0ZUZpbmRCYW5uZXIoY3VycmVudENvbnRlbnRWaWV3KQogICAgIHsKICAgICAgICAgaWYgKCFj
dXJyZW50Q29udGVudFZpZXcpIHsKICAgICAgICAgICAgIHRoaXMuX2ZpbmRCYW5uZXIudGFyZ2V0
RWxlbWVudCA9IG51bGw7CkBAIC00NDQsMTYgKzQzMywxNiBAQCBXZWJJbnNwZWN0b3IuQ29udGVu
dEJyb3dzZXIucHJvdG90eXBlID0gewogICAgICAgICAgICAgY3VycmVudENvbnRlbnRWaWV3LmF1
dG9tYXRpY2FsbHlSZXZlYWxGaXJzdFNlYXJjaFJlc3VsdCA9IHRoaXMuX2ZpbmRCYW5uZXIuc2hv
d2luZzsKICAgICAgICAgICAgIGN1cnJlbnRDb250ZW50Vmlldy5wZXJmb3JtU2VhcmNoKHRoaXMu
X2ZpbmRCYW5uZXIuc2VhcmNoUXVlcnkpOwogICAgICAgICB9Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICBfZGlzcGF0Y2hDdXJyZW50UmVwcmVzZW50ZWRPYmplY3RzRGlkQ2hhbmdlRXZlbnRTb29uOiBm
dW5jdGlvbigpCisgICAgX2Rpc3BhdGNoQ3VycmVudFJlcHJlc2VudGVkT2JqZWN0c0RpZENoYW5n
ZUV2ZW50U29vbigpCiAgICAgewogICAgICAgICBpZiAodGhpcy5fY3VycmVudFJlcHJlc2VudGVk
T2JqZWN0c0RpZENoYW5nZVRpbWVvdXQpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIHRo
aXMuX2N1cnJlbnRSZXByZXNlbnRlZE9iamVjdHNEaWRDaGFuZ2VUaW1lb3V0ID0gc2V0VGltZW91
dCh0aGlzLl9kaXNwYXRjaEN1cnJlbnRSZXByZXNlbnRlZE9iamVjdHNEaWRDaGFuZ2VFdmVudC5i
aW5kKHRoaXMpLCAwKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9kaXNwYXRjaEN1cnJlbnRSZXBy
ZXNlbnRlZE9iamVjdHNEaWRDaGFuZ2VFdmVudDogZnVuY3Rpb24oKQorICAgIF9kaXNwYXRjaEN1
cnJlbnRSZXByZXNlbnRlZE9iamVjdHNEaWRDaGFuZ2VFdmVudCgpCiAgICAgewogICAgICAgICBp
ZiAodGhpcy5fY3VycmVudFJlcHJlc2VudGVkT2JqZWN0c0RpZENoYW5nZVRpbWVvdXQpIHsKICAg
ICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLl9jdXJyZW50UmVwcmVzZW50ZWRPYmplY3RzRGlk
Q2hhbmdlVGltZW91dCk7CkBAIC00NjEsOSArNDUwLDkgQEAgV2ViSW5zcGVjdG9yLkNvbnRlbnRC
cm93c2VyLnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogCiAgICAgICAgIHRoaXMuZGlzcGF0Y2hF
dmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5Db250ZW50QnJvd3Nlci5FdmVudC5DdXJyZW50
UmVwcmVzZW50ZWRPYmplY3RzRGlkQ2hhbmdlKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9jb250
ZW50Vmlld1NlbGVjdGlvblBhdGhDb21wb25lbnREaWRDaGFuZ2U6IGZ1bmN0aW9uKGV2ZW50KQor
ICAgIF9jb250ZW50Vmlld1NlbGVjdGlvblBhdGhDb21wb25lbnREaWRDaGFuZ2UoZXZlbnQpCiAg
ICAgewogICAgICAgICBpZiAoZXZlbnQudGFyZ2V0ICE9PSB0aGlzLmN1cnJlbnRDb250ZW50Vmll
dykKICAgICAgICAgICAgIHJldHVybjsKQEAgLTQ3NiwxNyArNDY1LDE3IEBAIFdlYkluc3BlY3Rv
ci5Db250ZW50QnJvd3Nlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX25hdmlnYXRpb25C
YXIudXBkYXRlTGF5b3V0KCk7CiAKICAgICAgICAgdGhpcy5fZGlzcGF0Y2hDdXJyZW50UmVwcmVz
ZW50ZWRPYmplY3RzRGlkQ2hhbmdlRXZlbnRTb29uKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBf
Y29udGVudFZpZXdTdXBwbGVtZW50YWxSZXByZXNlbnRlZE9iamVjdHNEaWRDaGFuZ2U6IGZ1bmN0
aW9uKGV2ZW50KQorICAgIF9jb250ZW50Vmlld1N1cHBsZW1lbnRhbFJlcHJlc2VudGVkT2JqZWN0
c0RpZENoYW5nZShldmVudCkKICAgICB7CiAgICAgICAgIGlmIChldmVudC50YXJnZXQgIT09IHRo
aXMuY3VycmVudENvbnRlbnRWaWV3KQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIHRo
aXMuX2Rpc3BhdGNoQ3VycmVudFJlcHJlc2VudGVkT2JqZWN0c0RpZENoYW5nZUV2ZW50U29vbigp
OwotICAgIH0sCisgICAgfQogCi0gICAgX2N1cnJlbnRDb250ZW50Vmlld0RpZENoYW5nZTogZnVu
Y3Rpb24oZXZlbnQpCisgICAgX2N1cnJlbnRDb250ZW50Vmlld0RpZENoYW5nZShldmVudCkKICAg
ICB7CiAgICAgICAgIHZhciBjdXJyZW50Q29udGVudFZpZXcgPSB0aGlzLmN1cnJlbnRDb250ZW50
VmlldzsKIApAQCAtNTAyLDE4ICs0OTEsMTggQEAgV2ViSW5zcGVjdG9yLkNvbnRlbnRCcm93c2Vy
LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2Vi
SW5zcGVjdG9yLkNvbnRlbnRCcm93c2VyLkV2ZW50LkN1cnJlbnRDb250ZW50Vmlld0RpZENoYW5n
ZSk7CiAKICAgICAgICAgdGhpcy5fZGlzcGF0Y2hDdXJyZW50UmVwcmVzZW50ZWRPYmplY3RzRGlk
Q2hhbmdlRXZlbnQoKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9jb250ZW50Vmlld05hdmlnYXRp
b25JdGVtc0RpZENoYW5nZTogZnVuY3Rpb24oZXZlbnQpCisgICAgX2NvbnRlbnRWaWV3TmF2aWdh
dGlvbkl0ZW1zRGlkQ2hhbmdlKGV2ZW50KQogICAgIHsKICAgICAgICAgaWYgKGV2ZW50LnRhcmdl
dCAhPT0gdGhpcy5jdXJyZW50Q29udGVudFZpZXcpCiAgICAgICAgICAgICByZXR1cm47CiAKICAg
ICAgICAgdGhpcy5fdXBkYXRlQ29udGVudFZpZXdOYXZpZ2F0aW9uSXRlbXMoKTsKICAgICAgICAg
dGhpcy5fbmF2aWdhdGlvbkJhci51cGRhdGVMYXlvdXQoKTsKLSAgICB9LAorICAgIH0KIAotICAg
IF9oaWVyYXJjaGljYWxQYXRoQ29tcG9uZW50V2FzU2VsZWN0ZWQ6IGZ1bmN0aW9uKGV2ZW50KQor
ICAgIF9oaWVyYXJjaGljYWxQYXRoQ29tcG9uZW50V2FzU2VsZWN0ZWQoZXZlbnQpCiAgICAgewog
ICAgICAgICBjb25zb2xlLmFzc2VydChldmVudC5kYXRhLnBhdGhDb21wb25lbnQgaW5zdGFuY2Vv
ZiBXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50UGF0aENvbXBvbmVudCk7CiAKQEAgLTUz
MSw0ICs1MjAsNyBAQCBXZWJJbnNwZWN0b3IuQ29udGVudEJyb3dzZXIucHJvdG90eXBlID0gewog
ICAgIH0KIH07CiAKLVdlYkluc3BlY3Rvci5Db250ZW50QnJvd3Nlci5wcm90b3R5cGUuX19wcm90
b19fID0gV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGU7CitXZWJJbnNwZWN0b3IuQ29udGVu
dEJyb3dzZXIuRXZlbnQgPSB7CisgICAgQ3VycmVudFJlcHJlc2VudGVkT2JqZWN0c0RpZENoYW5n
ZTogImNvbnRlbnQtYnJvd3Nlci1jdXJyZW50LXJlcHJlc2VudGVkLW9iamVjdHMtZGlkLWNoYW5n
ZSIsCisgICAgQ3VycmVudENvbnRlbnRWaWV3RGlkQ2hhbmdlOiAiY29udGVudC1icm93c2VyLWN1
cnJlbnQtY29udGVudC12aWV3LWRpZC1jaGFuZ2UiCit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudFZpZXdDb250YWluZXIuanMg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250ZW50Vmlld0Nv
bnRhaW5lci5qcwppbmRleCAxZmQxNWFmNDRkYjFiMzY2NjNmYzI3ZmM0ZTZhYWY4NGYxZWI1YjNh
Li4zNjg1ODhkMTAyYTE1NmFhOGYwYzUyMTI4MTI2ZjllNTY3ZjlkYTMwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250ZW50Vmlld0NvbnRh
aW5lci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9D
b250ZW50Vmlld0NvbnRhaW5lci5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsNjQgKzIzLDU4IEBACiAgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29udGFp
bmVyID0gZnVuY3Rpb24oZWxlbWVudCkKK1dlYkluc3BlY3Rvci5Db250ZW50Vmlld0NvbnRhaW5l
ciA9IGNsYXNzIENvbnRlbnRWaWV3Q29udGFpbmVyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVj
dAogewotICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0
IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBlcigpLgotICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3Qu
Y2FsbCh0aGlzKTsKLQotICAgIHRoaXMuX2VsZW1lbnQgPSBlbGVtZW50IHx8IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZCgiY29u
dGVudC12aWV3LWNvbnRhaW5lciIpOwotCi0gICAgdGhpcy5fYmFja0ZvcndhcmRMaXN0ID0gW107
Ci0gICAgdGhpcy5fY3VycmVudEluZGV4ID0gLTE7Ci19OworICAgIGNvbnN0cnVjdG9yKGVsZW1l
bnQpCisgICAgeworICAgICAgICBzdXBlcigpOwogCi1XZWJJbnNwZWN0b3IuQ29udGVudFZpZXdD
b250YWluZXIuRXZlbnQgPSB7Ci0gICAgQ3VycmVudENvbnRlbnRWaWV3RGlkQ2hhbmdlOiAiY29u
dGVudC12aWV3LWNvbnRhaW5lci1jdXJyZW50LWNvbnRlbnQtdmlldy1kaWQtY2hhbmdlIgotfTsK
KyAgICAgICAgdGhpcy5fZWxlbWVudCA9IGVsZW1lbnQgfHwgZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiZGl2Iik7CisgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZCgiY29udGVudC12
aWV3LWNvbnRhaW5lciIpOwogCi1XZWJJbnNwZWN0b3IuQ29udGVudFZpZXdDb250YWluZXIucHJv
dG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXdDb250
YWluZXIsCisgICAgICAgIHRoaXMuX2JhY2tGb3J3YXJkTGlzdCA9IFtdOworICAgICAgICB0aGlz
Ll9jdXJyZW50SW5kZXggPSAtMTsKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBl
bGVtZW50KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50OwotICAgIH0sCisg
ICAgfQogCiAgICAgZ2V0IGN1cnJlbnRJbmRleCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhp
cy5fY3VycmVudEluZGV4OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGJhY2tGb3J3YXJkTGlz
dCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fYmFja0ZvcndhcmRMaXN0OwotICAgIH0s
CisgICAgfQogCiAgICAgZ2V0IGN1cnJlbnRDb250ZW50VmlldygpCiAgICAgewogICAgICAgICBp
ZiAodGhpcy5fY3VycmVudEluZGV4IDwgMCB8fCB0aGlzLl9jdXJyZW50SW5kZXggPiB0aGlzLl9i
YWNrRm9yd2FyZExpc3QubGVuZ3RoIC0gMSkKICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAg
ICAgICByZXR1cm4gdGhpcy5fYmFja0ZvcndhcmRMaXN0W3RoaXMuX2N1cnJlbnRJbmRleF0uY29u
dGVudFZpZXc7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgY3VycmVudEJhY2tGb3J3YXJkRW50
cnkoKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX2N1cnJlbnRJbmRleCA8IDAgfHwgdGhpcy5f
Y3VycmVudEluZGV4ID4gdGhpcy5fYmFja0ZvcndhcmRMaXN0Lmxlbmd0aCAtIDEpCiAgICAgICAg
ICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgcmV0dXJuIHRoaXMuX2JhY2tGb3J3YXJkTGlzdFt0
aGlzLl9jdXJyZW50SW5kZXhdOwotICAgIH0sCisgICAgfQogCi0gICAgdXBkYXRlTGF5b3V0OiBm
dW5jdGlvbigpCisgICAgdXBkYXRlTGF5b3V0KCkKICAgICB7CiAgICAgICAgIHZhciBjdXJyZW50
Q29udGVudFZpZXcgPSB0aGlzLmN1cnJlbnRDb250ZW50VmlldzsKICAgICAgICAgaWYgKGN1cnJl
bnRDb250ZW50VmlldykKICAgICAgICAgICAgIGN1cnJlbnRDb250ZW50Vmlldy51cGRhdGVMYXlv
dXQoKTsKLSAgICB9LAorICAgIH0KIAotICAgIGNvbnRlbnRWaWV3Rm9yUmVwcmVzZW50ZWRPYmpl
Y3Q6IGZ1bmN0aW9uKHJlcHJlc2VudGVkT2JqZWN0LCBvbmx5RXhpc3RpbmcsIGV4dHJhQXJndW1l
bnRzKQorICAgIGNvbnRlbnRWaWV3Rm9yUmVwcmVzZW50ZWRPYmplY3QocmVwcmVzZW50ZWRPYmpl
Y3QsIG9ubHlFeGlzdGluZywgZXh0cmFBcmd1bWVudHMpCiAgICAgewogICAgICAgICBjb25zb2xl
LmFzc2VydChyZXByZXNlbnRlZE9iamVjdCk7CiAgICAgICAgIGlmICghcmVwcmVzZW50ZWRPYmpl
Y3QpCkBAIC0xMjMsOSArMTE3LDkgQEAgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29udGFpbmVy
LnByb3RvdHlwZSA9IHsKICAgICAgICAgcmVwcmVzZW50ZWRPYmplY3QuX19jb250ZW50Vmlld3Mu
cHVzaChjb250ZW50Vmlldyk7CiAKICAgICAgICAgcmV0dXJuIGNvbnRlbnRWaWV3OwotICAgIH0s
CisgICAgfQogCi0gICAgc2hvd0NvbnRlbnRWaWV3Rm9yUmVwcmVzZW50ZWRPYmplY3Q6IGZ1bmN0
aW9uKHJlcHJlc2VudGVkT2JqZWN0LCBleHRyYUFyZ3VtZW50cykKKyAgICBzaG93Q29udGVudFZp
ZXdGb3JSZXByZXNlbnRlZE9iamVjdChyZXByZXNlbnRlZE9iamVjdCwgZXh0cmFBcmd1bWVudHMp
CiAgICAgewogICAgICAgICB2YXIgY29udGVudFZpZXcgPSB0aGlzLmNvbnRlbnRWaWV3Rm9yUmVw
cmVzZW50ZWRPYmplY3QocmVwcmVzZW50ZWRPYmplY3QsIGZhbHNlLCBleHRyYUFyZ3VtZW50cyk7
CiAgICAgICAgIGlmICghY29udGVudFZpZXcpCkBAIC0xMzQsOSArMTI4LDkgQEAgV2ViSW5zcGVj
dG9yLkNvbnRlbnRWaWV3Q29udGFpbmVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5zaG93
Q29udGVudFZpZXcoY29udGVudFZpZXcpOwogCiAgICAgICAgIHJldHVybiBjb250ZW50VmlldzsK
LSAgICB9LAorICAgIH0KIAotICAgIHNob3dDb250ZW50VmlldzogZnVuY3Rpb24oY29udGVudFZp
ZXcsIGNvb2tpZSkKKyAgICBzaG93Q29udGVudFZpZXcoY29udGVudFZpZXcsIGNvb2tpZSkKICAg
ICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGNvbnRlbnRWaWV3IGluc3RhbmNlb2YgV2ViSW5z
cGVjdG9yLkNvbnRlbnRWaWV3KTsKICAgICAgICAgaWYgKCEoY29udGVudFZpZXcgaW5zdGFuY2Vv
ZiBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcpKQpAQCAtMTg2LDkgKzE4MCw5IEBAIFdlYkluc3Bl
Y3Rvci5Db250ZW50Vmlld0NvbnRhaW5lci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuc2hv
d0JhY2tGb3J3YXJkRW50cnlGb3JJbmRleChuZXdJbmRleCk7CiAKICAgICAgICAgcmV0dXJuIGNv
bnRlbnRWaWV3OwotICAgIH0sCisgICAgfQogCi0gICAgc2hvd0JhY2tGb3J3YXJkRW50cnlGb3JJ
bmRleDogZnVuY3Rpb24oaW5kZXgpCisgICAgc2hvd0JhY2tGb3J3YXJkRW50cnlGb3JJbmRleChp
bmRleCkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGluZGV4ID49IDAgJiYgaW5kZXgg
PD0gdGhpcy5fYmFja0ZvcndhcmRMaXN0Lmxlbmd0aCAtIDEpOwogICAgICAgICBpZiAoaW5kZXgg
PCAwIHx8IGluZGV4ID4gdGhpcy5fYmFja0ZvcndhcmRMaXN0Lmxlbmd0aCAtIDEpCkBAIC0yMTIs
OSArMjA2LDkgQEAgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29udGFpbmVyLnByb3RvdHlwZSA9
IHsKICAgICAgICAgICAgIHRoaXMuX3Nob3dFbnRyeShjdXJyZW50RW50cnksIGZhbHNlKTsKIAog
ICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuQ29udGVu
dFZpZXdDb250YWluZXIuRXZlbnQuQ3VycmVudENvbnRlbnRWaWV3RGlkQ2hhbmdlKTsKLSAgICB9
LAorICAgIH0KIAotICAgIHJlcGxhY2VDb250ZW50VmlldzogZnVuY3Rpb24ob2xkQ29udGVudFZp
ZXcsIG5ld0NvbnRlbnRWaWV3KQorICAgIHJlcGxhY2VDb250ZW50VmlldyhvbGRDb250ZW50Vmll
dywgbmV3Q29udGVudFZpZXcpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydChvbGRDb250
ZW50VmlldyBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Db250ZW50Vmlldyk7CiAgICAgICAgIGlm
ICghKG9sZENvbnRlbnRWaWV3IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3KSkK
QEAgLTI1Myw5ICsyNDcsOSBAQCBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXdDb250YWluZXIucHJv
dG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5fc2hvd0VudHJ5KHRoaXMuY3VycmVudEJhY2tG
b3J3YXJkRW50cnksIHRydWUpOwogICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0
ZW5lcnMoV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29udGFpbmVyLkV2ZW50LkN1cnJlbnRDb250
ZW50Vmlld0RpZENoYW5nZSk7CiAgICAgICAgIH0KLSAgICB9LAorICAgIH0KIAotICAgIGNsb3Nl
QWxsQ29udGVudFZpZXdzT2ZQcm90b3R5cGU6IGZ1bmN0aW9uKGNvbnN0cnVjdG9yKQorICAgIGNs
b3NlQWxsQ29udGVudFZpZXdzT2ZQcm90b3R5cGUoY29uc3RydWN0b3IpCiAgICAgewogICAgICAg
ICBpZiAoIXRoaXMuX2JhY2tGb3J3YXJkTGlzdC5sZW5ndGgpIHsKICAgICAgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KHRoaXMuX2N1cnJlbnRJbmRleCA9PT0gLTEpOwpAQCAtMzA5LDkgKzMwMyw5IEBA
IFdlYkluc3BlY3Rvci5Db250ZW50Vmlld0NvbnRhaW5lci5wcm90b3R5cGUgPSB7CiAgICAgICAg
ICAgICB0aGlzLl9zaG93RW50cnkoY3VycmVudEVudHJ5LCB0cnVlKTsKICAgICAgICAgICAgIHRo
aXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5Db250ZW50Vmlld0NvbnRh
aW5lci5FdmVudC5DdXJyZW50Q29udGVudFZpZXdEaWRDaGFuZ2UpOwogICAgICAgICB9Ci0gICAg
fSwKKyAgICB9CiAKLSAgICBjbG9zZUNvbnRlbnRWaWV3OiBmdW5jdGlvbihjb250ZW50Vmlld1Rv
Q2xvc2UpCisgICAgY2xvc2VDb250ZW50Vmlldyhjb250ZW50Vmlld1RvQ2xvc2UpCiAgICAgewog
ICAgICAgICBpZiAoIXRoaXMuX2JhY2tGb3J3YXJkTGlzdC5sZW5ndGgpIHsKICAgICAgICAgICAg
IGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2N1cnJlbnRJbmRleCA9PT0gLTEpOwpAQCAtMzY1LDkgKzM1
OSw5IEBAIFdlYkluc3BlY3Rvci5Db250ZW50Vmlld0NvbnRhaW5lci5wcm90b3R5cGUgPSB7CiAg
ICAgICAgICAgICB0aGlzLl9zaG93RW50cnkoY3VycmVudEVudHJ5LCB0cnVlKTsKICAgICAgICAg
ICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5Db250ZW50Vmll
d0NvbnRhaW5lci5FdmVudC5DdXJyZW50Q29udGVudFZpZXdEaWRDaGFuZ2UpOwogICAgICAgICB9
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBjbG9zZUFsbENvbnRlbnRWaWV3czogZnVuY3Rpb24oKQor
ICAgIGNsb3NlQWxsQ29udGVudFZpZXdzKCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fYmFj
a0ZvcndhcmRMaXN0Lmxlbmd0aCkgewogICAgICAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5f
Y3VycmVudEluZGV4ID09PSAtMSk7CkBAIC0zODgsNjUgKzM4Miw2NSBAQCBXZWJJbnNwZWN0b3Iu
Q29udGVudFZpZXdDb250YWluZXIucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9jdXJyZW50
SW5kZXggPSAtMTsKIAogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJ
bnNwZWN0b3IuQ29udGVudFZpZXdDb250YWluZXIuRXZlbnQuQ3VycmVudENvbnRlbnRWaWV3RGlk
Q2hhbmdlKTsKLSAgICB9LAorICAgIH0KIAotICAgIGNhbkdvQmFjazogZnVuY3Rpb24oKQorICAg
IGNhbkdvQmFjaygpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fY3VycmVudEluZGV4ID4g
MDsKLSAgICB9LAorICAgIH0KIAotICAgIGNhbkdvRm9yd2FyZDogZnVuY3Rpb24oKQorICAgIGNh
bkdvRm9yd2FyZCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fY3VycmVudEluZGV4IDwg
dGhpcy5fYmFja0ZvcndhcmRMaXN0Lmxlbmd0aCAtIDE7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBn
b0JhY2s6IGZ1bmN0aW9uKCkKKyAgICBnb0JhY2soKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlz
LmNhbkdvQmFjaygpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB0aGlzLnNob3dCYWNr
Rm9yd2FyZEVudHJ5Rm9ySW5kZXgodGhpcy5fY3VycmVudEluZGV4IC0gMSk7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBnb0ZvcndhcmQ6IGZ1bmN0aW9uKCkKKyAgICBnb0ZvcndhcmQoKQogICAgIHsK
ICAgICAgICAgaWYgKCF0aGlzLmNhbkdvRm9yd2FyZCgpKQogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB0aGlzLnNob3dCYWNrRm9yd2FyZEVudHJ5Rm9ySW5kZXgodGhpcy5fY3VycmVudElu
ZGV4ICsgMSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzaG93bjogZnVuY3Rpb24oKQorICAgIHNo
b3duKCkKICAgICB7CiAgICAgICAgIHZhciBjdXJyZW50RW50cnkgPSB0aGlzLmN1cnJlbnRCYWNr
Rm9yd2FyZEVudHJ5OwogICAgICAgICBpZiAoIWN1cnJlbnRFbnRyeSkKICAgICAgICAgICAgIHJl
dHVybjsKIAogICAgICAgICB0aGlzLl9zaG93RW50cnkoY3VycmVudEVudHJ5LCB0cnVlKTsKLSAg
ICB9LAorICAgIH0KIAotICAgIGhpZGRlbjogZnVuY3Rpb24oKQorICAgIGhpZGRlbigpCiAgICAg
ewogICAgICAgICB2YXIgY3VycmVudEVudHJ5ID0gdGhpcy5jdXJyZW50QmFja0ZvcndhcmRFbnRy
eTsKICAgICAgICAgaWYgKCFjdXJyZW50RW50cnkpCiAgICAgICAgICAgICByZXR1cm47CiAKICAg
ICAgICAgdGhpcy5faGlkZUVudHJ5KGN1cnJlbnRFbnRyeSk7Ci0gICAgfSwKKyAgICB9CiAKICAg
ICAvLyBQcml2YXRlCiAKLSAgICBfYWRkQ29udGVudFZpZXdFbGVtZW50OiBmdW5jdGlvbihjb250
ZW50VmlldykKKyAgICBfYWRkQ29udGVudFZpZXdFbGVtZW50KGNvbnRlbnRWaWV3KQogICAgIHsK
ICAgICAgICAgaWYgKGNvbnRlbnRWaWV3LmVsZW1lbnQucGFyZW50Tm9kZSAhPT0gdGhpcy5fZWxl
bWVudCkKICAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQoY29udGVudFZpZXcu
ZWxlbWVudCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcmVtb3ZlQ29udGVudFZpZXdFbGVtZW50
OiBmdW5jdGlvbihjb250ZW50VmlldykKKyAgICBfcmVtb3ZlQ29udGVudFZpZXdFbGVtZW50KGNv
bnRlbnRWaWV3KQogICAgIHsKICAgICAgICAgaWYgKGNvbnRlbnRWaWV3LmVsZW1lbnQucGFyZW50
Tm9kZSkKICAgICAgICAgICAgIGNvbnRlbnRWaWV3LmVsZW1lbnQucGFyZW50Tm9kZS5yZW1vdmVD
aGlsZChjb250ZW50Vmlldy5lbGVtZW50KTsKLSAgICB9LAorICAgIH0KIAotICAgIF9kaXNhc3Nv
Y2lhdGVGcm9tQ29udGVudFZpZXc6IGZ1bmN0aW9uKGNvbnRlbnRWaWV3KQorICAgIF9kaXNhc3Nv
Y2lhdGVGcm9tQ29udGVudFZpZXcoY29udGVudFZpZXcpCiAgICAgewogICAgICAgICBjb25zb2xl
LmFzc2VydCghY29udGVudFZpZXcudmlzaWJsZSk7CiAKQEAgLTQ2MCwxNyArNDU0LDE3IEBAIFdl
Ykluc3BlY3Rvci5Db250ZW50Vmlld0NvbnRhaW5lci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAg
ICByZXByZXNlbnRlZE9iamVjdC5fX2NvbnRlbnRWaWV3cy5yZW1vdmUoY29udGVudFZpZXcpOwog
CiAgICAgICAgIGNvbnRlbnRWaWV3LmNsb3NlZCgpOwotICAgIH0sCisgICAgfQogCi0gICAgX3No
b3dFbnRyeTogZnVuY3Rpb24oZW50cnksIHNob3VsZENhbGxTaG93bikKKyAgICBfc2hvd0VudHJ5
KGVudHJ5LCBzaG91bGRDYWxsU2hvd24pCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydChl
bnRyeSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5CYWNrRm9yd2FyZEVudHJ5KTsKIAogICAgICAg
ICB0aGlzLl9hZGRDb250ZW50Vmlld0VsZW1lbnQoZW50cnkuY29udGVudFZpZXcpOwogICAgICAg
ICBlbnRyeS5wcmVwYXJlVG9TaG93KHNob3VsZENhbGxTaG93bik7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBfaGlkZUVudHJ5OiBmdW5jdGlvbihlbnRyeSkKKyAgICBfaGlkZUVudHJ5KGVudHJ5KQog
ICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQoZW50cnkgaW5zdGFuY2VvZiBXZWJJbnNwZWN0
b3IuQmFja0ZvcndhcmRFbnRyeSk7CiAKQEAgLTQ3OSw0ICs0NzMsNiBAQCBXZWJJbnNwZWN0b3Iu
Q29udGVudFZpZXdDb250YWluZXIucHJvdG90eXBlID0gewogICAgIH0KIH07CiAKLVdlYkluc3Bl
Y3Rvci5Db250ZW50Vmlld0NvbnRhaW5lci5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVj
dG9yLk9iamVjdC5wcm90b3R5cGU7CitXZWJJbnNwZWN0b3IuQ29udGVudFZpZXdDb250YWluZXIu
RXZlbnQgPSB7CisgICAgQ3VycmVudENvbnRlbnRWaWV3RGlkQ2hhbmdlOiAiY29udGVudC12aWV3
LWNvbnRhaW5lci1jdXJyZW50LWNvbnRlbnQtdmlldy1kaWQtY2hhbmdlIgorfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVEYXRh
R3JpZE5vZGUuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9E
T01UcmVlRGF0YUdyaWROb2RlLmpzCmluZGV4IDA3OWE4Y2I3MDk1NzAxODVhNzcyZjZlNzM2NDJl
ZDc3MGQ1MWYxZGQuLjE0MzQwMjhlZTNlMzIyNTg2MjgyMzY2YTQ4OTEyMDNjNGRkNWIxNWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRy
ZWVEYXRhR3JpZE5vZGUuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvRE9NVHJlZURhdGFHcmlkTm9kZS5qcwpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMTMgQWRvYmUgU3lzdGVtcyBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMyw2NSArMjQsNjMgQEAKICAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuRE9NVHJl
ZURhdGFHcmlkTm9kZSA9IGZ1bmN0aW9uKGRvbU5vZGUpCitXZWJJbnNwZWN0b3IuRE9NVHJlZURh
dGFHcmlkTm9kZSA9IGNsYXNzIERPTVRyZWVEYXRhR3JpZE5vZGUgZXh0ZW5kcyBXZWJJbnNwZWN0
b3IuRGF0YUdyaWROb2RlCiB7Ci0gICAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5jYWxsKHRo
aXMpOwotCi0gICAgdGhpcy5fbmFtZUxhYmVsID0gbnVsbDsKLSAgICB0aGlzLl9kb21Ob2RlID0g
ZG9tTm9kZTsKLSAgICB0aGlzLl91cGRhdGVOb2RlTmFtZSgpOwotfTsKKyAgICBjb25zdHJ1Y3Rv
cihkb21Ob2RlKQorICAgIHsKKyAgICAgICAgc3VwZXIoKTsKIAotV2ViSW5zcGVjdG9yLkRPTVRy
ZWVEYXRhR3JpZE5vZGUucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0
b3IuRE9NVHJlZURhdGFHcmlkTm9kZSwKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5EYXRh
R3JpZE5vZGUucHJvdG90eXBlLAorICAgICAgICB0aGlzLl9uYW1lTGFiZWwgPSBudWxsOworICAg
ICAgICB0aGlzLl9kb21Ob2RlID0gZG9tTm9kZTsKKyAgICAgICAgdGhpcy5fdXBkYXRlTm9kZU5h
bWUoKTsKKyAgICB9CiAKICAgICBnZXQgZG9tTm9kZSgpCiAgICAgewogICAgICAgICByZXR1cm4g
dGhpcy5fZG9tTm9kZTsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIERhdGFHcmlkTm9kZSBPdmVy
cmlkZXMuCiAKLSAgICBjcmVhdGVDZWxsQ29udGVudDogZnVuY3Rpb24oY29sdW1uSWRlbnRpZmll
ciwgY2VsbCkKKyAgICBjcmVhdGVDZWxsQ29udGVudChjb2x1bW5JZGVudGlmaWVyLCBjZWxsKQog
ICAgIHsKICAgICAgICAgaWYgKGNvbHVtbklkZW50aWZpZXIgIT09ICJuYW1lIikKLSAgICAgICAg
ICAgIHJldHVybiBXZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlLnByb3RvdHlwZS5jcmVhdGVDZWxs
Q29udGVudC5jYWxsKHRoaXMsIGNvbHVtbklkZW50aWZpZXIsIGNlbGwpOworICAgICAgICAgICAg
cmV0dXJuIHN1cGVyLmNyZWF0ZUNlbGxDb250ZW50KGNvbHVtbklkZW50aWZpZXIsIGNlbGwpOwog
CiAgICAgICAgIHZhciBjZWxsID0gdGhpcy5fbWFrZU5hbWVDZWxsKCk7CiAgICAgICAgIHRoaXMu
X3VwZGF0ZU5hbWVDZWxsRGF0YSgpOwogICAgICAgICByZXR1cm4gY2VsbDsKLSAgICB9LAorICAg
IH0KIAogICAgIC8vIFByaXZhdGUKIAotICAgIF91cGRhdGVOb2RlTmFtZTogZnVuY3Rpb24oKQor
ICAgIF91cGRhdGVOb2RlTmFtZSgpCiAgICAgewogICAgICAgICB0aGlzLmRhdGEgPSB7bmFtZTog
V2ViSW5zcGVjdG9yLmRpc3BsYXlOYW1lRm9yTm9kZSh0aGlzLl9kb21Ob2RlKX07Ci0gICAgfSwK
KyAgICB9CiAKLSAgICBfbWFrZU5hbWVDZWxsOiBmdW5jdGlvbigpCisgICAgX21ha2VOYW1lQ2Vs
bCgpCiAgICAgewogICAgICAgICB2YXIgZnJhZ21lbnQgPSBkb2N1bWVudC5jcmVhdGVEb2N1bWVu
dEZyYWdtZW50KCk7CiAKLSAgICAgICAgZnJhZ21lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgiaW1nIikpLmNsYXNzTmFtZSA9ICJpY29uIjsKKyAgICAgICAgZnJhZ21lbnQu
YXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW1nIikpLmNsYXNzTGlzdC5hZGQo
Imljb24iKTsKIAogICAgICAgICB0aGlzLl9uYW1lTGFiZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJkaXYiKTsKLSAgICAgICAgdGhpcy5fbmFtZUxhYmVsLmNsYXNzTmFtZSA9ICJsYWJlbCI7
CisgICAgICAgIHRoaXMuX25hbWVMYWJlbC5jbGFzc0xpc3QuYWRkKCJsYWJlbCIpOwogICAgICAg
ICBmcmFnbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9uYW1lTGFiZWwpOwogCiAgICAgICAgIHZhciBn
b1RvQnV0dG9uID0gZnJhZ21lbnQuYXBwZW5kQ2hpbGQoV2ViSW5zcGVjdG9yLmNyZWF0ZUdvVG9B
cnJvd0J1dHRvbigpKTsKICAgICAgICAgZ29Ub0J1dHRvbi5hZGRFdmVudExpc3RlbmVyKCJjbGlj
ayIsIHRoaXMuX2dvVG9BcnJvd1dhc0NsaWNrZWQuYmluZCh0aGlzKSwgZmFsc2UpOwogCiAgICAg
ICAgIHJldHVybiBmcmFnbWVudDsKLSAgICB9LAorICAgIH0KIAotICAgIF91cGRhdGVOYW1lQ2Vs
bERhdGE6IGZ1bmN0aW9uKCkKKyAgICBfdXBkYXRlTmFtZUNlbGxEYXRhKCkKICAgICB7CiAgICAg
ICAgIHRoaXMuX25hbWVMYWJlbC50ZXh0Q29udGVudCA9IHRoaXMuZGF0YS5uYW1lOwotICAgIH0s
CisgICAgfQogCi0gICAgX2dvVG9BcnJvd1dhc0NsaWNrZWQ6IGZ1bmN0aW9uKCkKKyAgICBfZ29U
b0Fycm93V2FzQ2xpY2tlZCgpCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3Iuc2hvd01haW5G
cmFtZURPTVRyZWUodGhpcy5fZG9tTm9kZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvSW5kZXRlcm1pbmF0ZVByb2dyZXNzU3Bp
bm5lci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0luZGV0
ZXJtaW5hdGVQcm9ncmVzc1NwaW5uZXIuanMKaW5kZXggNWJmMmQ3NmFmNDFiNmNmMWI0NzQ2NjRj
NWUyMjg5NGM5ZDA0NmM3ZC4uMjJlMTU2YWNjM2M3Mzk3ZDk0NGQ3ZGYzYjIwNGFiZjk5ZGI5Njky
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
SW5kZXRlcm1pbmF0ZVByb2dyZXNzU3Bpbm5lci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9JbmRldGVybWluYXRlUHJvZ3Jlc3NTcGlubmVyLmpzCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0y
MywxOSArMjMsMTUgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwog
Ci1XZWJJbnNwZWN0b3IuSW5kZXRlcm1pbmF0ZVByb2dyZXNzU3Bpbm5lciA9IGZ1bmN0aW9uKCkK
K1dlYkluc3BlY3Rvci5JbmRldGVybWluYXRlUHJvZ3Jlc3NTcGlubmVyID0gY2xhc3MgSW5kZXRl
cm1pbmF0ZVByb2dyZXNzU3Bpbm5lciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIHsKLSAg
ICAvLyBGSVhNRTogQ29udmVydCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFz
cywgYW5kIGNhbGwgc3VwZXIoKS4KLSAgICAvLyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhp
cyk7Ci0KLSAgICB0aGlzLl9lbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7
Ci0gICAgdGhpcy5fZWxlbWVudC5jbGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuSW5kZXRlcm1pbmF0
ZVByb2dyZXNzU3Bpbm5lci5TdHlsZUNsYXNzTmFtZTsKLX07Ci0KLVdlYkluc3BlY3Rvci5JbmRl
dGVybWluYXRlUHJvZ3Jlc3NTcGlubmVyLlN0eWxlQ2xhc3NOYW1lID0gImluZGV0ZXJtaW5hdGUt
cHJvZ3Jlc3Mtc3Bpbm5lciI7CisgICAgY29uc3RydWN0b3IoKQorICAgIHsKKyAgICAgICAgc3Vw
ZXIoKTsKIAotV2ViSW5zcGVjdG9yLkluZGV0ZXJtaW5hdGVQcm9ncmVzc1NwaW5uZXIucHJvdG90
eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuSW5kZXRlcm1pbmF0ZVByb2dy
ZXNzU3Bpbm5lciwKKyAgICAgICAgdGhpcy5fZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoImRpdiIpOworICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoImluZGV0ZXJt
aW5hdGUtcHJvZ3Jlc3Mtc3Bpbm5lciIpOworICAgIH0KIAogICAgIC8vIFB1YmxpYwogCkBAIC00
NCw1ICs0MCwzIEBAIFdlYkluc3BlY3Rvci5JbmRldGVybWluYXRlUHJvZ3Jlc3NTcGlubmVyLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQ7CiAgICAgfQogfTsKLQot
V2ViSW5zcGVjdG9yLkluZGV0ZXJtaW5hdGVQcm9ncmVzc1NwaW5uZXIucHJvdG90eXBlLl9fcHJv
dG9fXyA9IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTmF2aWdhdGlvbkJhci5qcyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05hdmlnYXRpb25CYXIuanMK
aW5kZXggYjBkYjA0MmEwZTYxNzQ3NzdjNWNjZGE4OTM0YjI4NGIxNDVjMWNiOC4uNWIzNWYyM2Nl
NDAxMGI1YjQ4YTc4MzE1OWI3NmYzZjg3OTJkNmE0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTmF2aWdhdGlvbkJhci5qcworKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9OYXZpZ2F0aW9uQmFyLmpzCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0y
Myw1OSArMjMsNDggQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwog
Ci1XZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhciA9IGZ1bmN0aW9uKGVsZW1lbnQsIG5hdmlnYXRp
b25JdGVtcywgcm9sZSwgbGFiZWwpIHsKLSAgICAvLyBGSVhNRTogQ29udmVydCB0aGlzIHRvIGEg
V2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcywgYW5kIGNhbGwgc3VwZXIoKS4KLSAgICAvLyBX
ZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7Ci0KLSAgICB0aGlzLl9lbGVtZW50ID0gZWxl
bWVudCB8fCBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICB0aGlzLl9lbGVtZW50
LmNsYXNzTGlzdC5hZGQodGhpcy5jb25zdHJ1Y3Rvci5TdHlsZUNsYXNzTmFtZSB8fCBXZWJJbnNw
ZWN0b3IuTmF2aWdhdGlvbkJhci5TdHlsZUNsYXNzTmFtZSk7Ci0gICAgdGhpcy5fZWxlbWVudC50
YWJJbmRleCA9IDA7Ci0KLSAgICBpZiAocm9sZSkKLSAgICAgICAgdGhpcy5fZWxlbWVudC5zZXRB
dHRyaWJ1dGUoInJvbGUiLCByb2xlKTsKLSAgICBpZiAobGFiZWwpCi0gICAgICAgIHRoaXMuX2Vs
ZW1lbnQuc2V0QXR0cmlidXRlKCJhcmlhLWxhYmVsIiwgbGFiZWwpOwotCi0gICAgdGhpcy5fZWxl
bWVudC5hZGRFdmVudExpc3RlbmVyKCJmb2N1cyIsIHRoaXMuX2ZvY3VzLmJpbmQodGhpcyksIGZh
bHNlKTsKLSAgICB0aGlzLl9lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImJsdXIiLCB0aGlzLl9i
bHVyLmJpbmQodGhpcyksIGZhbHNlKTsKLSAgICB0aGlzLl9lbGVtZW50LmFkZEV2ZW50TGlzdGVu
ZXIoImtleWRvd24iLCB0aGlzLl9rZXlEb3duLmJpbmQodGhpcyksIGZhbHNlKTsKLSAgICB0aGlz
Ll9lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsIHRoaXMuX21vdXNlRG93bi5i
aW5kKHRoaXMpLCBmYWxzZSk7Ci0KLSAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJsb2Fk
IiwgdGhpcy51cGRhdGVMYXlvdXQuYmluZCh0aGlzKSwgZmFsc2UpOworV2ViSW5zcGVjdG9yLk5h
dmlnYXRpb25CYXIgPSBjbGFzcyBOYXZpZ2F0aW9uQmFyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9i
amVjdAoreworICAgIGNvbnN0cnVjdG9yKGVsZW1lbnQsIG5hdmlnYXRpb25JdGVtcywgcm9sZSwg
bGFiZWwpCisgICAgeworICAgICAgICBzdXBlcigpOwogCi0gICAgdGhpcy5fc3R5bGVFbGVtZW50
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKTsKKyAgICAgICAgdGhpcy5fZWxlbWVu
dCA9IGVsZW1lbnQgfHwgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIHRo
aXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZCh0aGlzLmNvbnN0cnVjdG9yLlN0eWxlQ2xhc3NOYW1l
IHx8ICJuYXZpZ2F0aW9uLWJhciIpOworICAgICAgICB0aGlzLl9lbGVtZW50LnRhYkluZGV4ID0g
MDsKIAotICAgIHRoaXMuX25hdmlnYXRpb25JdGVtcyA9IFtdOworICAgICAgICBpZiAocm9sZSkK
KyAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuc2V0QXR0cmlidXRlKCJyb2xlIiwgcm9sZSk7Cisg
ICAgICAgIGlmIChsYWJlbCkKKyAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuc2V0QXR0cmlidXRl
KCJhcmlhLWxhYmVsIiwgbGFiZWwpOwogCi0gICAgaWYgKG5hdmlnYXRpb25JdGVtcykgewotICAg
ICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5hdmlnYXRpb25JdGVtcy5sZW5ndGg7ICsraSkKLSAg
ICAgICAgICAgIHRoaXMuYWRkTmF2aWdhdGlvbkl0ZW0obmF2aWdhdGlvbkl0ZW1zW2ldKTsKLSAg
ICB9CisgICAgICAgIHRoaXMuX2VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXMiLCB0aGlz
Ll9mb2N1cy5iaW5kKHRoaXMpLCBmYWxzZSk7CisgICAgICAgIHRoaXMuX2VsZW1lbnQuYWRkRXZl
bnRMaXN0ZW5lcigiYmx1ciIsIHRoaXMuX2JsdXIuYmluZCh0aGlzKSwgZmFsc2UpOworICAgICAg
ICB0aGlzLl9lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLCB0aGlzLl9rZXlEb3du
LmJpbmQodGhpcyksIGZhbHNlKTsKKyAgICAgICAgdGhpcy5fZWxlbWVudC5hZGRFdmVudExpc3Rl
bmVyKCJtb3VzZWRvd24iLCB0aGlzLl9tb3VzZURvd24uYmluZCh0aGlzKSwgZmFsc2UpOwogCi0g
ICAgZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZCh0aGlzLl9zdHlsZUVsZW1lbnQpOwotfTsKKyAg
ICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIHRoaXMudXBkYXRlTGF5b3V0
LmJpbmQodGhpcyksIGZhbHNlKTsKIAotLy8gRklYTUU6IE1vdmUgdG8gYSBXZWJJbnNwZWN0b3Iu
T2JqZWN0IHN1YmNsYXNzIGFuZCB3ZSBjYW4gcmVtb3ZlIHRoaXMuCi1XZWJJbnNwZWN0b3IuT2Jq
ZWN0LmRlcHJlY2F0ZWRBZGRDb25zdHJ1Y3RvckZ1bmN0aW9ucyhXZWJJbnNwZWN0b3IuTmF2aWdh
dGlvbkJhcik7CisgICAgICAgIHRoaXMuX3N0eWxlRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoInN0eWxlIik7CiAKLVdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyLlN0eWxlQ2xhc3NO
YW1lID0gIm5hdmlnYXRpb24tYmFyIjsKLVdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyLkNvbGxh
cHNlZFN0eWxlQ2xhc3NOYW1lID0gImNvbGxhcHNlZCI7CisgICAgICAgIHRoaXMuX25hdmlnYXRp
b25JdGVtcyA9IFtdOwogCi1XZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhci5FdmVudCA9IHsKLSAg
ICBOYXZpZ2F0aW9uSXRlbVNlbGVjdGVkOiAibmF2aWdhdGlvbi1iYXItbmF2aWdhdGlvbi1pdGVt
LXNlbGVjdGVkIgotfTsKKyAgICAgICAgaWYgKG5hdmlnYXRpb25JdGVtcykgeworICAgICAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuYXZpZ2F0aW9uSXRlbXMubGVuZ3RoOyArK2kpCisgICAg
ICAgICAgICAgICAgdGhpcy5hZGROYXZpZ2F0aW9uSXRlbShuYXZpZ2F0aW9uSXRlbXNbaV0pOwor
ICAgICAgICB9CiAKLVdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyLnByb3RvdHlwZSA9IHsKLSAg
ICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIsCisgICAgICAgIGRvY3Vt
ZW50LmhlYWQuYXBwZW5kQ2hpbGQodGhpcy5fc3R5bGVFbGVtZW50KTsKKyAgICB9CiAKICAgICAv
LyBQdWJsaWMKIAotICAgIGFkZE5hdmlnYXRpb25JdGVtOiBmdW5jdGlvbihuYXZpZ2F0aW9uSXRl
bSwgcGFyZW50RWxlbWVudCkKKyAgICBhZGROYXZpZ2F0aW9uSXRlbShuYXZpZ2F0aW9uSXRlbSwg
cGFyZW50RWxlbWVudCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLmluc2VydE5hdmlnYXRp
b25JdGVtKG5hdmlnYXRpb25JdGVtLCB0aGlzLl9uYXZpZ2F0aW9uSXRlbXMubGVuZ3RoLCBwYXJl
bnRFbGVtZW50KTsKLSAgICB9LAorICAgIH0KIAotICAgIGluc2VydE5hdmlnYXRpb25JdGVtOiBm
dW5jdGlvbihuYXZpZ2F0aW9uSXRlbSwgaW5kZXgsIHBhcmVudEVsZW1lbnQpCisgICAgaW5zZXJ0
TmF2aWdhdGlvbkl0ZW0obmF2aWdhdGlvbkl0ZW0sIGluZGV4LCBwYXJlbnRFbGVtZW50KQogICAg
IHsKICAgICAgICAgY29uc29sZS5hc3NlcnQobmF2aWdhdGlvbkl0ZW0gaW5zdGFuY2VvZiBXZWJJ
bnNwZWN0b3IuTmF2aWdhdGlvbkl0ZW0pOwogICAgICAgICBpZiAoIShuYXZpZ2F0aW9uSXRlbSBp
bnN0YW5jZW9mIFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uSXRlbSkpCkBAIC0xMDcsOSArOTYsOSBA
QCBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMu
dXBkYXRlTGF5b3V0U29vbigpOwogCiAgICAgICAgIHJldHVybiBuYXZpZ2F0aW9uSXRlbTsKLSAg
ICB9LAorICAgIH0KIAotICAgIHJlbW92ZU5hdmlnYXRpb25JdGVtOiBmdW5jdGlvbihuYXZpZ2F0
aW9uSXRlbU9ySWRlbnRpZmllck9ySW5kZXgpCisgICAgcmVtb3ZlTmF2aWdhdGlvbkl0ZW0obmF2
aWdhdGlvbkl0ZW1PcklkZW50aWZpZXJPckluZGV4KQogICAgIHsKICAgICAgICAgdmFyIG5hdmln
YXRpb25JdGVtID0gdGhpcy5fZmluZE5hdmlnYXRpb25JdGVtKG5hdmlnYXRpb25JdGVtT3JJZGVu
dGlmaWVyT3JJbmRleCk7CiAgICAgICAgIGlmICghbmF2aWdhdGlvbkl0ZW0pCkBAIC0xMjksOSAr
MTE4LDkgQEAgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIucHJvdG90eXBlID0gewogICAgICAg
ICB0aGlzLnVwZGF0ZUxheW91dFNvb24oKTsKIAogICAgICAgICByZXR1cm4gbmF2aWdhdGlvbkl0
ZW07Ci0gICAgfSwKKyAgICB9CiAKLSAgICB1cGRhdGVMYXlvdXRTb29uOiBmdW5jdGlvbigpCisg
ICAgdXBkYXRlTGF5b3V0U29vbigpCiAgICAgewogICAgICAgICBpZiAodGhpcy5fdXBkYXRlTGF5
b3V0VGltZW91dCkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTE0Nyw5ICsxMzYsOSBAQCBXZWJJ
bnNwZWN0b3IuTmF2aWdhdGlvbkJhci5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAg
ICB0aGlzLl91cGRhdGVMYXlvdXRUaW1lb3V0ID0gc2V0VGltZW91dCh1cGRhdGUuYmluZCh0aGlz
KSwgMCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICB1cGRhdGVMYXlvdXQ6IGZ1bmN0aW9uKCkKKyAg
ICB1cGRhdGVMYXlvdXQoKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX3VwZGF0ZUxheW91dFRp
bWVvdXQpIHsKICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLl91cGRhdGVMYXlvdXRUaW1l
b3V0KTsKQEAgLTE5MSwxMiArMTgwLDEyIEBAIFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgLy8gR2l2ZSBlYWNoIG5hdmlnYXRpb24gaXRlbSB0aGUgb3Bw
b3J0dW5pdHkgdG8gY29sbGFwc2UgZnVydGhlci4KICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCB0aGlzLl9uYXZpZ2F0aW9uSXRlbXMubGVuZ3RoOyArK2kpCiAgICAgICAgICAgICB0aGlzLl9u
YXZpZ2F0aW9uSXRlbXNbaV0udXBkYXRlTGF5b3V0KCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBn
ZXQgc2VsZWN0ZWROYXZpZ2F0aW9uSXRlbSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5f
c2VsZWN0ZWROYXZpZ2F0aW9uSXRlbSB8fCBudWxsOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0
IHNlbGVjdGVkTmF2aWdhdGlvbkl0ZW0obmF2aWdhdGlvbkl0ZW1PcklkZW50aWZpZXJPckluZGV4
KQogICAgIHsKQEAgLTIyMSwxNyArMjEwLDE3IEBAIFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFy
LnByb3RvdHlwZSA9IHsKICAgICAgICAgLy8gVGhpcyBwcmV2ZW50cyBzZW5kaW5nIHRoZSBldmVu
dCB3aGlsZSB0aGUgdXNlciBpcyBzY3J1YmJpbmcgdGhlIGJhci4KICAgICAgICAgaWYgKCF0aGlz
Ll9tb3VzZUlzRG93bikKICAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJz
KFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyLkV2ZW50Lk5hdmlnYXRpb25JdGVtU2VsZWN0ZWQp
OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IG5hdmlnYXRpb25JdGVtcygpCiAgICAgewogICAg
ICAgICByZXR1cm4gdGhpcy5fbmF2aWdhdGlvbkl0ZW1zOwotICAgIH0sCisgICAgfQogCiAgICAg
Z2V0IGVsZW1lbnQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQ7Ci0gICAg
fSwKKyAgICB9CiAKICAgICBnZXQgbWluaW11bVdpZHRoKCkKICAgICB7CkBAIC0yNDEsMTcgKzIz
MCwxNyBAQCBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhci5wcm90b3R5cGUgPSB7CiAgICAgICAg
IH0KIAogICAgICAgICByZXR1cm4gdGhpcy5fbWluaW11bVdpZHRoOwotICAgIH0sCisgICAgfQog
CiAgICAgZ2V0IHNpemVzVG9GaXQoKQogICAgIHsKICAgICAgICAgLy8gQ2FuIGJlIG92ZXJyaWRl
biBieSBzdWJjbGFzc2VzLgogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfSwKKyAgICB9CiAK
ICAgICAvLyBQcml2YXRlCiAKLSAgICBfZmluZE5hdmlnYXRpb25JdGVtOiBmdW5jdGlvbihuYXZp
Z2F0aW9uSXRlbU9ySWRlbnRpZmllck9ySW5kZXgpCisgICAgX2ZpbmROYXZpZ2F0aW9uSXRlbShu
YXZpZ2F0aW9uSXRlbU9ySWRlbnRpZmllck9ySW5kZXgpCiAgICAgewogICAgICAgICB2YXIgbmF2
aWdhdGlvbkl0ZW0gPSBudWxsOwogCkBAIC0yNzAsOSArMjU5LDkgQEAgV2ViSW5zcGVjdG9yLk5h
dmlnYXRpb25CYXIucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuIG5h
dmlnYXRpb25JdGVtOwotICAgIH0sCisgICAgfQogCi0gICAgX21vdXNlRG93bjogZnVuY3Rpb24o
ZXZlbnQpCisgICAgX21vdXNlRG93bihldmVudCkKICAgICB7CiAgICAgICAgIC8vIE9ubHkgaGFu
ZGxlIGxlZnQgbW91c2UgY2xpY2tzLgogICAgICAgICBpZiAoZXZlbnQuYnV0dG9uICE9PSAwKQpA
QCAtMzA2LDkgKzI5NSw5IEBAIFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyLnByb3RvdHlwZSA9
IHsKIAogICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICBldmVudC5zdG9w
UHJvcGFnYXRpb24oKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9tb3VzZU1vdmVkOiBmdW5jdGlv
bihldmVudCkKKyAgICBfbW91c2VNb3ZlZChldmVudCkKICAgICB7CiAgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KGV2ZW50LmJ1dHRvbiA9PT0gMCk7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMu
X21vdXNlSXNEb3duKTsKQEAgLTMzNyw5ICszMjYsOSBAQCBXZWJJbnNwZWN0b3IuTmF2aWdhdGlv
bkJhci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuc2VsZWN0ZWROYXZpZ2F0aW9uSXRlbSA9
IGl0ZW1FbGVtZW50Lm5hdmlnYXRpb25JdGVtOwogCiAgICAgICAgIHRoaXMuc2VsZWN0ZWROYXZp
Z2F0aW9uSXRlbS5hY3RpdmUgPSB0cnVlOwotICAgIH0sCisgICAgfQogCi0gICAgX21vdXNlVXA6
IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9tb3VzZVVwKGV2ZW50KQogICAgIHsKICAgICAgICAgY29u
c29sZS5hc3NlcnQoZXZlbnQuYnV0dG9uID09PSAwKTsKICAgICAgICAgY29uc29sZS5hc3NlcnQo
dGhpcy5fbW91c2VJc0Rvd24pOwpAQCAtMzY5LDkgKzM1OCw5IEBAIFdlYkluc3BlY3Rvci5OYXZp
Z2F0aW9uQmFyLnByb3RvdHlwZSA9IHsKIAogICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgp
OwogICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsKLSAgICB9LAorICAgIH0KIAotICAg
IF9rZXlEb3duOiBmdW5jdGlvbihldmVudCkKKyAgICBfa2V5RG93bihldmVudCkKICAgICB7CiAg
ICAgICAgIGlmICghdGhpcy5fZm9jdXNlZCkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTQwMSwy
MyArMzkwLDIzIEBAIFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgICAgIHJldHVybjsKIAogICAgICAgICB0aGlzLnNlbGVjdGVkTmF2aWdhdGlvbkl0ZW0g
PSB0aGlzLl9uYXZpZ2F0aW9uSXRlbXNbc2VsZWN0ZWROYXZpZ2F0aW9uSXRlbUluZGV4XTsKLSAg
ICB9LAorICAgIH0KIAotICAgIF9mb2N1czogZnVuY3Rpb24oZXZlbnQpCisgICAgX2ZvY3VzKGV2
ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5fZm9jdXNlZCA9IHRydWU7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBfYmx1cjogZnVuY3Rpb24oZXZlbnQpCisgICAgX2JsdXIoZXZlbnQpCiAgICAgewog
ICAgICAgICB0aGlzLl9mb2N1c2VkID0gZmFsc2U7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdXBk
YXRlU3R5bGU6IGZ1bmN0aW9uKCkKKyAgICBfdXBkYXRlU3R5bGUoKQogICAgIHsKICAgICAgICAg
dGhpcy5fbmVlZHNTdHlsZVVwZGF0ZWQgPSBmYWxzZTsKIAotICAgICAgICB2YXIgcGFyZW50U2Vs
ZWN0b3IgPSAiLiIgKyAodGhpcy5jb25zdHJ1Y3Rvci5TdHlsZUNsYXNzTmFtZSB8fCBXZWJJbnNw
ZWN0b3IuTmF2aWdhdGlvbkJhci5TdHlsZUNsYXNzTmFtZSk7CisgICAgICAgIHZhciBwYXJlbnRT
ZWxlY3RvciA9ICIuIiArICh0aGlzLmNvbnN0cnVjdG9yLlN0eWxlQ2xhc3NOYW1lIHx8ICJuYXZp
Z2F0aW9uLWJhciIpOwogCiAgICAgICAgIHZhciBzdHlsZVRleHQgPSAiIjsKICAgICAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9uYXZpZ2F0aW9uSXRlbXMubGVuZ3RoOyArK2kpIHsKQEAg
LTQyOSw5ICs0MTgsOSBAQCBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhci5wcm90b3R5cGUgPSB7
CiAgICAgICAgIH0KIAogICAgICAgICB0aGlzLl9zdHlsZUVsZW1lbnQudGV4dENvbnRlbnQgPSBz
dHlsZVRleHQ7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfY2FsY3VsYXRlTWluaW11bVdpZHRoOiBm
dW5jdGlvbigpCisgICAgX2NhbGN1bGF0ZU1pbmltdW1XaWR0aCgpCiAgICAgewogICAgICAgICB2
YXIgd2FzQ29sbGFwc2VkID0gdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoV2ViSW5z
cGVjdG9yLk5hdmlnYXRpb25CYXIuQ29sbGFwc2VkU3R5bGVDbGFzc05hbWUpOwogCkBAIC00NTUs
NCArNDQ0LDggQEAgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIucHJvdG90eXBlID0gewogICAg
IH0KIH07CiAKLVdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyLnByb3RvdHlwZS5fX3Byb3RvX18g
PSBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZTsKK1dlYkluc3BlY3Rvci5OYXZpZ2F0aW9u
QmFyLkNvbGxhcHNlZFN0eWxlQ2xhc3NOYW1lID0gImNvbGxhcHNlZCI7CisKK1dlYkluc3BlY3Rv
ci5OYXZpZ2F0aW9uQmFyLkV2ZW50ID0geworICAgIE5hdmlnYXRpb25JdGVtU2VsZWN0ZWQ6ICJu
YXZpZ2F0aW9uLWJhci1uYXZpZ2F0aW9uLWl0ZW0tc2VsZWN0ZWQiCit9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUHJvYmVTZXREYXRhR3Jp
ZE5vZGUuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Qcm9i
ZVNldERhdGFHcmlkTm9kZS5qcwppbmRleCAzYjViMWJhOTFiZjMxMTlhMGQ3NWY4OGRmMzMxYzRh
YTgxMzU2MjIzLi45N2Q0NWE2ZTRjNzc4OTNlZjg4NGIwMTRjOGJmYWEyODhiMmU0YzRkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Qcm9iZVNl
dERhdGFHcmlkTm9kZS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9Qcm9iZVNldERhdGFHcmlkTm9kZS5qcwpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMTMgVW5pdmVyc2l0eSBvZiBXYXNoaW5ndG9uLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI0LDM3ICsyNCwz
MiBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuUHJvYmVTZXREYXRhR3Jp
ZE5vZGUgPSBmdW5jdGlvbihkYXRhR3JpZCkKK1dlYkluc3BlY3Rvci5Qcm9iZVNldERhdGFHcmlk
Tm9kZSA9IGNsYXNzIFByb2JlU2V0RGF0YUdyaWROb2RlIGV4dGVuZHMgV2ViSW5zcGVjdG9yLkRh
dGFHcmlkTm9kZQogewotICAgIGNvbnNvbGUuYXNzZXJ0KGRhdGFHcmlkIGluc3RhbmNlb2YgV2Vi
SW5zcGVjdG9yLlByb2JlU2V0RGF0YUdyaWQsICJJbnZhbGlkIFByb2JlU2V0RGF0YUdyaWQgYXJn
dW1lbnQ6IiwgZGF0YUdyaWQpOwotCi0gICAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5jYWxs
KHRoaXMsIHRoaXMuZGF0YSk7Ci0gICAgdGhpcy5kYXRhR3JpZCA9IGRhdGFHcmlkOyAvLyBUaGlz
IGlzIHNldCB0byBudWxsIGluIERhdGFHcmlkTm9kZSdzIGNvbnN0cnVjdG9yLgotICAgIHRoaXMu
X2RhdGEgPSB7fTsKLQotICAgIHRoaXMuX2VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJ0ciIpOwotICAgIHRoaXMuX2VsZW1lbnQuZGF0YUdyaWROb2RlID0gdGhpczsKLSAgICB0aGlz
Ll9lbGVtZW50LmNsYXNzTGlzdC5hZGQoInJldmVhbGVkIik7Ci19OworICAgIGNvbnN0cnVjdG9y
KGRhdGFHcmlkKQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoZGF0YUdyaWQgaW5zdGFu
Y2VvZiBXZWJJbnNwZWN0b3IuUHJvYmVTZXREYXRhR3JpZCwgIkludmFsaWQgUHJvYmVTZXREYXRh
R3JpZCBhcmd1bWVudDoiLCBkYXRhR3JpZCk7CiAKLVdlYkluc3BlY3Rvci5Qcm9iZVNldERhdGFH
cmlkTm9kZS5TZXBhcmF0b3JTdHlsZUNsYXNzTmFtZSA9ICJzZXBhcmF0b3IiOwotV2ViSW5zcGVj
dG9yLlByb2JlU2V0RGF0YUdyaWROb2RlLlVua25vd25WYWx1ZVN0eWxlQ2xhc3NOYW1lID0gInVu
a25vd24tdmFsdWUiOworICAgICAgICBzdXBlcigpOworICAgICAgICB0aGlzLmRhdGFHcmlkID0g
ZGF0YUdyaWQ7IC8vIFRoaXMgaXMgc2V0IHRvIG51bGwgaW4gRGF0YUdyaWROb2RlJ3MgY29uc3Ry
dWN0b3IuCisgICAgICAgIHRoaXMuX2RhdGEgPSB7fTsKIAotV2ViSW5zcGVjdG9yLlByb2JlU2V0
RGF0YUdyaWROb2RlLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9y
LlByb2JlU2V0RGF0YUdyaWROb2RlLAotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLkRhdGFH
cmlkTm9kZS5wcm90b3R5cGUsCisgICAgICAgIHRoaXMuX2VsZW1lbnQgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJ0ciIpOworICAgICAgICB0aGlzLl9lbGVtZW50LmRhdGFHcmlkTm9kZSA9IHRo
aXM7CisgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZCgicmV2ZWFsZWQiKTsKKyAg
ICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBlbGVtZW50KCkKICAgICB7CiAgICAgICAg
IHJldHVybiB0aGlzLl9lbGVtZW50OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGRhdGEoKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGE7Ci0gICAgfSwKKyAgICB9CiAKICAgICBz
ZXQgZnJhbWUodmFsdWUpCiAgICAgewpAQCAtNzAsMTggKzY1LDE4IEBAIFdlYkluc3BlY3Rvci5Q
cm9iZVNldERhdGFHcmlkTm9kZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgZGF0YVtw
cm9iZS5pZF0gPSBzYW1wbGUub2JqZWN0OwogICAgICAgICB9CiAgICAgICAgIHRoaXMuX2RhdGEg
PSBkYXRhOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGZyYW1lKCkKICAgICB7CiAgICAgICAg
IHJldHVybiB0aGlzLl9mcmFtZTsKLSAgICB9LAorICAgIH0KIAotICAgIGNyZWF0ZUNlbGxDb250
ZW50OiBmdW5jdGlvbihjb2x1bW5JZGVudGlmaWVyLCBjZWxsKQorICAgIGNyZWF0ZUNlbGxDb250
ZW50KGNvbHVtbklkZW50aWZpZXIsIGNlbGwpCiAgICAgewogICAgICAgICB2YXIgc2FtcGxlID0g
dGhpcy5kYXRhW2NvbHVtbklkZW50aWZpZXJdOwogICAgICAgICBpZiAoc2FtcGxlID09PSBXZWJJ
bnNwZWN0b3IuUHJvYmVTZXREYXRhRnJhbWUuTWlzc2luZ1ZhbHVlKSB7Ci0gICAgICAgICAgICBj
ZWxsLmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLlByb2JlU2V0RGF0YUdyaWROb2RlLlVua25v
d25WYWx1ZVN0eWxlQ2xhc3NOYW1lKTsKKyAgICAgICAgICAgIGNlbGwuY2xhc3NMaXN0LmFkZCgi
dW5rbm93bi12YWx1ZSIpOwogICAgICAgICAgICAgcmV0dXJuIHNhbXBsZTsKICAgICAgICAgfQog
CkBAIC04OSwxNCArODQsMTQgQEAgV2ViSW5zcGVjdG9yLlByb2JlU2V0RGF0YUdyaWROb2RlLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuRm9ybWF0dGVkVmFs
dWUuY3JlYXRlT2JqZWN0VHJlZU9yRm9ybWF0dGVkVmFsdWVGb3JSZW1vdGVPYmplY3Qoc2FtcGxl
LCBudWxsKTsKIAogICAgICAgICByZXR1cm4gc2FtcGxlOwotICAgIH0sCisgICAgfQogCi0gICAg
dXBkYXRlQ2VsbHNGcm9tRnJhbWU6IGZ1bmN0aW9uKGZyYW1lLCBwcm9iZVNldCkKKyAgICB1cGRh
dGVDZWxsc0Zyb21GcmFtZShmcmFtZSwgcHJvYmVTZXQpCiAgICAgewotICAgIH0sCisgICAgfQog
Ci0gICAgdXBkYXRlQ2VsbHNGb3JTZXBhcmF0b3I6IGZ1bmN0aW9uKGZyYW1lLCBwcm9iZVNldCkK
KyAgICB1cGRhdGVDZWxsc0ZvclNlcGFyYXRvcihmcmFtZSwgcHJvYmVTZXQpCiAgICAgewotICAg
ICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLlByb2JlU2V0RGF0
YUdyaWROb2RlLlNlcGFyYXRvclN0eWxlQ2xhc3NOYW1lKTsKKyAgICAgICAgdGhpcy5fZWxlbWVu
dC5jbGFzc0xpc3QuYWRkKCJzZXBhcmF0b3IiKTsKICAgICB9CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUXVpY2tDb25zb2xlTmF2aWdh
dGlvbkJhci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1F1
aWNrQ29uc29sZU5hdmlnYXRpb25CYXIuanMKaW5kZXggMjkxMDhlN2E5ODE4YzhjZGY0YWQyMTlm
Mjc3NTkwMzE3YWZhMzRlZC4uYmE1ZGY3ZjE5NjRjZmUwZDc1OTUwZDViNjM0ODU2YjkwYWFiZTk1
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
UXVpY2tDb25zb2xlTmF2aWdhdGlvbkJhci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9RdWlja0NvbnNvbGVOYXZpZ2F0aW9uQmFyLmpzCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywyNCAr
MjMsMjEgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJ
bnNwZWN0b3IuUXVpY2tDb25zb2xlTmF2aWdhdGlvbkJhciA9IGZ1bmN0aW9uKGVsZW1lbnQsIG5h
dmlnYXRpb25JdGVtcykKK1dlYkluc3BlY3Rvci5RdWlja0NvbnNvbGVOYXZpZ2F0aW9uQmFyID0g
Y2xhc3MgUXVpY2tDb25zb2xlTmF2aWdhdGlvbkJhciBleHRlbmRzIFdlYkluc3BlY3Rvci5OYXZp
Z2F0aW9uQmFyCiB7Ci0gICAgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIuY2FsbCh0aGlzLCBl
bGVtZW50LCBuYXZpZ2F0aW9uSXRlbXMpOwotfTsKLQotV2ViSW5zcGVjdG9yLlF1aWNrQ29uc29s
ZU5hdmlnYXRpb25CYXIucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0
b3IuUXVpY2tDb25zb2xlTmF2aWdhdGlvbkJhciwKKyAgICBjb25zdHJ1Y3RvcihlbGVtZW50LCBu
YXZpZ2F0aW9uSXRlbXMpCisgICAgeworICAgICAgICBzdXBlcihlbGVtZW50LCBuYXZpZ2F0aW9u
SXRlbXMpOworICAgIH0KIAogICAgIGdldCBzaXplc1RvRml0KCkKICAgICB7CiAgICAgICAgIHJl
dHVybiB0cnVlOwotICAgIH0sCisgICAgfQogCi0gICAgYWRkTmF2aWdhdGlvbkl0ZW06IGZ1bmN0
aW9uKG5hdmlnYXRpb25JdGVtKQorICAgIGFkZE5hdmlnYXRpb25JdGVtKG5hdmlnYXRpb25JdGVt
KQogICAgIHsKICAgICAgICAgLy8gQWRkIG5ldyBuYXZpZ2F0aW9uIGl0ZW1zIHRvIHRoZSBsZWZ0
LgogICAgICAgICByZXR1cm4gdGhpcy5pbnNlcnROYXZpZ2F0aW9uSXRlbShuYXZpZ2F0aW9uSXRl
bSwgMCk7CiAgICAgfQogfTsKLQotV2ViSW5zcGVjdG9yLlF1aWNrQ29uc29sZU5hdmlnYXRpb25C
YXIucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyLnByb3Rv
dHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL1Rvb2xiYXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9Ub29sYmFyLmpzCmluZGV4IDIwYzk4M2ExODMyNjliYzMxZGQ3YjdiMGJhM2E5ZjdjZGY0Zjg0
MTQuLjIxM2UzMjAxNzEyOGY5YWYyNDI2NGVhOTBjM2Y2ZWZhY2YwZWZmNTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Rvb2xiYXIuanMKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVG9vbGJhci5qcwpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MjMsODcgKzIzLDQ5IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8K
IAotV2ViSW5zcGVjdG9yLlRvb2xiYXIgPSBmdW5jdGlvbihlbGVtZW50LCBuYXZpZ2F0aW9uSXRl
bXMsIGRvbnRBbGxvd01vZGVDaGFuZ2VzKSB7Ci0gICAgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25C
YXIuY2FsbCh0aGlzLCBlbGVtZW50LCBuYXZpZ2F0aW9uSXRlbXMsICJ0b29sYmFyIik7Ci0KLSAg
ICB0aGlzLmRpc3BsYXlNb2RlID0gV2ViSW5zcGVjdG9yLlRvb2xiYXIuRGlzcGxheU1vZGUuSWNv
bkFuZExhYmVsVmVydGljYWw7Ci0gICAgdGhpcy5zaXplTW9kZSA9IFdlYkluc3BlY3Rvci5Ub29s
YmFyLlNpemVNb2RlLk5vcm1hbDsKLQotICAgIHRoaXMuX2NvbnRyb2xTZWN0aW9uRWxlbWVudCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgIHRoaXMuX2NvbnRyb2xTZWN0aW9u
RWxlbWVudC5jbGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuVG9vbGJhci5Db250cm9sU2VjdGlvblN0
eWxlQ2xhc3NOYW1lOwotICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fY29udHJv
bFNlY3Rpb25FbGVtZW50KTsKK1dlYkluc3BlY3Rvci5Ub29sYmFyID0gY2xhc3MgVG9vbGJhciBl
eHRlbmRzIFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyCit7CisgICAgY29uc3RydWN0b3IoZWxl
bWVudCwgbmF2aWdhdGlvbkl0ZW1zLCBkb250QWxsb3dNb2RlQ2hhbmdlcykKKyAgICB7CisgICAg
ICAgIHN1cGVyKGVsZW1lbnQsIG5hdmlnYXRpb25JdGVtcywgInRvb2xiYXIiKTsKIAotICAgIHRo
aXMuX2xlZnRTZWN0aW9uRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwot
ICAgIHRoaXMuX2xlZnRTZWN0aW9uRWxlbWVudC5jbGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuVG9v
bGJhci5JdGVtU2VjdGlvblN0eWxlQ2xhc3NOYW1lICsgIiAiICsgV2ViSW5zcGVjdG9yLlRvb2xi
YXIuTGVmdEl0ZW1TZWN0aW9uU3R5bGVDbGFzc05hbWU7Ci0gICAgdGhpcy5fZWxlbWVudC5hcHBl
bmRDaGlsZCh0aGlzLl9sZWZ0U2VjdGlvbkVsZW1lbnQpOworICAgICAgICB0aGlzLmRpc3BsYXlN
b2RlID0gV2ViSW5zcGVjdG9yLlRvb2xiYXIuRGlzcGxheU1vZGUuSWNvbkFuZExhYmVsVmVydGlj
YWw7CisgICAgICAgIHRoaXMuc2l6ZU1vZGUgPSBXZWJJbnNwZWN0b3IuVG9vbGJhci5TaXplTW9k
ZS5Ob3JtYWw7CiAKLSAgICB0aGlzLl9jZW50ZXJMZWZ0U2VjdGlvbkVsZW1lbnQgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICB0aGlzLl9jZW50ZXJMZWZ0U2VjdGlvbkVsZW1l
bnQuY2xhc3NOYW1lID0gV2ViSW5zcGVjdG9yLlRvb2xiYXIuSXRlbVNlY3Rpb25TdHlsZUNsYXNz
TmFtZSArICIgIiArIFdlYkluc3BlY3Rvci5Ub29sYmFyLkNlbnRlckxlZnRJdGVtU2VjdGlvblN0
eWxlQ2xhc3NOYW1lOwotICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fY2VudGVy
TGVmdFNlY3Rpb25FbGVtZW50KTsKKyAgICAgICAgdGhpcy5fY29udHJvbFNlY3Rpb25FbGVtZW50
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIHRoaXMuX2NvbnRyb2xT
ZWN0aW9uRWxlbWVudC5jbGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuVG9vbGJhci5Db250cm9sU2Vj
dGlvblN0eWxlQ2xhc3NOYW1lOworICAgICAgICB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRo
aXMuX2NvbnRyb2xTZWN0aW9uRWxlbWVudCk7CiAKLSAgICB0aGlzLl9jZW50ZXJTZWN0aW9uRWxl
bWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgIHRoaXMuX2NlbnRlclNl
Y3Rpb25FbGVtZW50LmNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5Ub29sYmFyLkl0ZW1TZWN0aW9u
U3R5bGVDbGFzc05hbWUgKyAiICIgKyBXZWJJbnNwZWN0b3IuVG9vbGJhci5DZW50ZXJJdGVtU2Vj
dGlvblN0eWxlQ2xhc3NOYW1lOwotICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5f
Y2VudGVyU2VjdGlvbkVsZW1lbnQpOworICAgICAgICB0aGlzLl9sZWZ0U2VjdGlvbkVsZW1lbnQg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgdGhpcy5fbGVmdFNlY3Rp
b25FbGVtZW50LmNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5Ub29sYmFyLkl0ZW1TZWN0aW9uU3R5
bGVDbGFzc05hbWUgKyAiICIgKyBXZWJJbnNwZWN0b3IuVG9vbGJhci5MZWZ0SXRlbVNlY3Rpb25T
dHlsZUNsYXNzTmFtZTsKKyAgICAgICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9s
ZWZ0U2VjdGlvbkVsZW1lbnQpOwogCi0gICAgdGhpcy5fY2VudGVyUmlnaHRTZWN0aW9uRWxlbWVu
dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgIHRoaXMuX2NlbnRlclJpZ2h0
U2VjdGlvbkVsZW1lbnQuY2xhc3NOYW1lID0gV2ViSW5zcGVjdG9yLlRvb2xiYXIuSXRlbVNlY3Rp
b25TdHlsZUNsYXNzTmFtZSArICIgIiArIFdlYkluc3BlY3Rvci5Ub29sYmFyLkNlbnRlclJpZ2h0
SXRlbVNlY3Rpb25TdHlsZUNsYXNzTmFtZTsKLSAgICB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxk
KHRoaXMuX2NlbnRlclJpZ2h0U2VjdGlvbkVsZW1lbnQpOworICAgICAgICB0aGlzLl9jZW50ZXJM
ZWZ0U2VjdGlvbkVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAg
ICAgdGhpcy5fY2VudGVyTGVmdFNlY3Rpb25FbGVtZW50LmNsYXNzTmFtZSA9IFdlYkluc3BlY3Rv
ci5Ub29sYmFyLkl0ZW1TZWN0aW9uU3R5bGVDbGFzc05hbWUgKyAiICIgKyBXZWJJbnNwZWN0b3Iu
VG9vbGJhci5DZW50ZXJMZWZ0SXRlbVNlY3Rpb25TdHlsZUNsYXNzTmFtZTsKKyAgICAgICAgdGhp
cy5fZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9jZW50ZXJMZWZ0U2VjdGlvbkVsZW1lbnQpOwog
Ci0gICAgdGhpcy5fcmlnaHRTZWN0aW9uRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImRpdiIpOwotICAgIHRoaXMuX3JpZ2h0U2VjdGlvbkVsZW1lbnQuY2xhc3NOYW1lID0gV2ViSW5z
cGVjdG9yLlRvb2xiYXIuSXRlbVNlY3Rpb25TdHlsZUNsYXNzTmFtZSArICIgIiArIFdlYkluc3Bl
Y3Rvci5Ub29sYmFyLlJpZ2h0SXRlbVNlY3Rpb25TdHlsZUNsYXNzTmFtZTsKLSAgICB0aGlzLl9l
bGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX3JpZ2h0U2VjdGlvbkVsZW1lbnQpOworICAgICAgICB0
aGlzLl9jZW50ZXJTZWN0aW9uRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIp
OworICAgICAgICB0aGlzLl9jZW50ZXJTZWN0aW9uRWxlbWVudC5jbGFzc05hbWUgPSBXZWJJbnNw
ZWN0b3IuVG9vbGJhci5JdGVtU2VjdGlvblN0eWxlQ2xhc3NOYW1lICsgIiAiICsgV2ViSW5zcGVj
dG9yLlRvb2xiYXIuQ2VudGVySXRlbVNlY3Rpb25TdHlsZUNsYXNzTmFtZTsKKyAgICAgICAgdGhp
cy5fZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9jZW50ZXJTZWN0aW9uRWxlbWVudCk7CiAKLSAg
ICBpZiAoIWRvbnRBbGxvd01vZGVDaGFuZ2VzKQotICAgICAgICB0aGlzLl9lbGVtZW50LmFkZEV2
ZW50TGlzdGVuZXIoImNvbnRleHRtZW51IiwgdGhpcy5faGFuZGxlQ29udGV4dE1lbnVFdmVudC5i
aW5kKHRoaXMpLCBmYWxzZSk7Ci19OworICAgICAgICB0aGlzLl9jZW50ZXJSaWdodFNlY3Rpb25F
bGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIHRoaXMuX2Nl
bnRlclJpZ2h0U2VjdGlvbkVsZW1lbnQuY2xhc3NOYW1lID0gV2ViSW5zcGVjdG9yLlRvb2xiYXIu
SXRlbVNlY3Rpb25TdHlsZUNsYXNzTmFtZSArICIgIiArIFdlYkluc3BlY3Rvci5Ub29sYmFyLkNl
bnRlclJpZ2h0SXRlbVNlY3Rpb25TdHlsZUNsYXNzTmFtZTsKKyAgICAgICAgdGhpcy5fZWxlbWVu
dC5hcHBlbmRDaGlsZCh0aGlzLl9jZW50ZXJSaWdodFNlY3Rpb25FbGVtZW50KTsKIAotLy8gRklY
TUU6IE1vdmUgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzIGFuZCB3ZSBjYW4gcmVt
b3ZlIHRoaXMuCi1XZWJJbnNwZWN0b3IuT2JqZWN0LmRlcHJlY2F0ZWRBZGRDb25zdHJ1Y3RvckZ1
bmN0aW9ucyhXZWJJbnNwZWN0b3IuVG9vbGJhcik7CisgICAgICAgIHRoaXMuX3JpZ2h0U2VjdGlv
bkVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgdGhpcy5f
cmlnaHRTZWN0aW9uRWxlbWVudC5jbGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuVG9vbGJhci5JdGVt
U2VjdGlvblN0eWxlQ2xhc3NOYW1lICsgIiAiICsgV2ViSW5zcGVjdG9yLlRvb2xiYXIuUmlnaHRJ
dGVtU2VjdGlvblN0eWxlQ2xhc3NOYW1lOworICAgICAgICB0aGlzLl9lbGVtZW50LmFwcGVuZENo
aWxkKHRoaXMuX3JpZ2h0U2VjdGlvbkVsZW1lbnQpOwogCi1XZWJJbnNwZWN0b3IuVG9vbGJhci5T
dHlsZUNsYXNzTmFtZSA9ICJ0b29sYmFyIjsKLVdlYkluc3BlY3Rvci5Ub29sYmFyLkNvbnRyb2xT
ZWN0aW9uU3R5bGVDbGFzc05hbWUgPSAiY29udHJvbC1zZWN0aW9uIjsKLVdlYkluc3BlY3Rvci5U
b29sYmFyLkl0ZW1TZWN0aW9uU3R5bGVDbGFzc05hbWUgPSAiaXRlbS1zZWN0aW9uIjsKLVdlYklu
c3BlY3Rvci5Ub29sYmFyLkxlZnRJdGVtU2VjdGlvblN0eWxlQ2xhc3NOYW1lID0gImxlZnQiOwot
V2ViSW5zcGVjdG9yLlRvb2xiYXIuQ2VudGVyTGVmdEl0ZW1TZWN0aW9uU3R5bGVDbGFzc05hbWUg
PSAiY2VudGVyLWxlZnQiOwotV2ViSW5zcGVjdG9yLlRvb2xiYXIuQ2VudGVySXRlbVNlY3Rpb25T
dHlsZUNsYXNzTmFtZSA9ICJjZW50ZXIiOwotV2ViSW5zcGVjdG9yLlRvb2xiYXIuQ2VudGVyUmln
aHRJdGVtU2VjdGlvblN0eWxlQ2xhc3NOYW1lID0gImNlbnRlci1yaWdodCI7Ci1XZWJJbnNwZWN0
b3IuVG9vbGJhci5SaWdodEl0ZW1TZWN0aW9uU3R5bGVDbGFzc05hbWUgPSAicmlnaHQiOwotCi1X
ZWJJbnNwZWN0b3IuVG9vbGJhci5FdmVudCA9IHsKLSAgICBEaXNwbGF5TW9kZURpZENoYW5nZTog
InRvb2xiYXItZGlzcGxheS1tb2RlLWRpZC1jaGFuZ2UiLAotICAgIFNpemVNb2RlRGlkQ2hhbmdl
OiAidG9vbGJhci1zaXplLW1vZGUtZGlkLWNoYW5nZSIKLX07Ci0KLVdlYkluc3BlY3Rvci5Ub29s
YmFyLlNlY3Rpb24gPSB7Ci0gICAgQ29udHJvbDogImNvbnRyb2wiLAotICAgIExlZnQ6ICJsZWZ0
IiwKLSAgICBDZW50ZXJMZWZ0OiAiY2VudGVyLWxlZnQiLAotICAgIENlbnRlcjogImNlbnRlciIs
Ci0gICAgQ2VudGVyUmlnaHQ6ICJjZW50ZXItcmlnaHQiLAotICAgIFJpZ2h0OiAicmlnaHQiCi19
OwotCi1XZWJJbnNwZWN0b3IuVG9vbGJhci5EaXNwbGF5TW9kZSA9IHsKLSAgICBJY29uQW5kTGFi
ZWxWZXJ0aWNhbDogImljb24tYW5kLWxhYmVsLXZlcnRpY2FsIiwKLSAgICBJY29uQW5kTGFiZWxI
b3Jpem9udGFsOiAiaWNvbi1hbmQtbGFiZWwtaG9yaXpvbnRhbCIsCi0gICAgSWNvbk9ubHk6ICJp
Y29uLW9ubHkiLAotICAgIExhYmVsT25seTogImxhYmVsLW9ubHkiCi19OwotCi1XZWJJbnNwZWN0
b3IuVG9vbGJhci5TaXplTW9kZSA9IHsKLSAgICBOb3JtYWw6ICJub3JtYWwtc2l6ZSIsCi0gICAg
U21hbGw6ICJzbWFsbC1zaXplIgotfTsKLQotV2ViSW5zcGVjdG9yLlRvb2xiYXIucHJvdG90eXBl
ID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuVG9vbGJhciwKKyAgICAgICAgaWYg
KCFkb250QWxsb3dNb2RlQ2hhbmdlcykKKyAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuYWRkRXZl
bnRMaXN0ZW5lcigiY29udGV4dG1lbnUiLCB0aGlzLl9oYW5kbGVDb250ZXh0TWVudUV2ZW50LmJp
bmQodGhpcyksIGZhbHNlKTsKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBkaXNw
bGF5TW9kZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZGlzcGxheU1vZGU7Ci0gICAg
fSwKKyAgICB9CiAKICAgICBzZXQgZGlzcGxheU1vZGUobW9kZSkKICAgICB7CkBAIC0xMjQsMTIg
Kzg2LDEyIEBAIFdlYkluc3BlY3Rvci5Ub29sYmFyLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhp
cy51cGRhdGVMYXlvdXQoKTsKIAogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVy
cyhXZWJJbnNwZWN0b3IuVG9vbGJhci5FdmVudC5EaXNwbGF5TW9kZURpZENoYW5nZSk7Ci0gICAg
fSwKKyAgICB9CiAKICAgICBnZXQgc2l6ZU1vZGUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRo
aXMuX3NpemVNb2RlOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IHNpemVNb2RlKG1vZGUpCiAg
ICAgewpAQCAtMTQ2LDkgKzEwOCw5IEBAIFdlYkluc3BlY3Rvci5Ub29sYmFyLnByb3RvdHlwZSA9
IHsKICAgICAgICAgdGhpcy51cGRhdGVMYXlvdXQoKTsKIAogICAgICAgICB0aGlzLmRpc3BhdGNo
RXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuVG9vbGJhci5FdmVudC5TaXplTW9kZURpZENo
YW5nZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBjdXN0b21VcGRhdGVMYXlvdXQ6IGZ1bmN0aW9u
KCkKKyAgICBjdXN0b21VcGRhdGVMYXlvdXQoKQogICAgIHsKICAgICAgICAgLy8gQmFpbCBlYXJs
eSBpZiBvdXIgc2VjdGlvbnMgYXJlIG5vdCBjcmVhdGVkIHlldC4gVGhpcyBtZWFucyB3ZSBhcmUg
YmVpbmcgY2FsbGVkIGR1cmluZyBjb25zdHJ1Y3Rpb24uCiAgICAgICAgIGlmICghdGhpcy5fbGVm
dFNlY3Rpb25FbGVtZW50IHx8ICF0aGlzLl9jZW50ZXJTZWN0aW9uRWxlbWVudCB8fCAhdGhpcy5f
cmlnaHRTZWN0aW9uRWxlbWVudCkKQEAgLTE5Myw5ICsxNTUsOSBAQCBXZWJJbnNwZWN0b3IuVG9v
bGJhci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgdGhpcy5f
ZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyLkNvbGxhcHNl
ZFN0eWxlQ2xhc3NOYW1lKTsKLSAgICB9LAorICAgIH0KIAotICAgIGFkZFRvb2xiYXJJdGVtOiBm
dW5jdGlvbih0b29sYmFySXRlbSwgc2VjdGlvbklkZW50aWZpZXIpCisgICAgYWRkVG9vbGJhckl0
ZW0odG9vbGJhckl0ZW0sIHNlY3Rpb25JZGVudGlmaWVyKQogICAgIHsKICAgICAgICAgdmFyIHNl
Y3Rpb25FbGVtZW50OwogCkBAIC0yMjksMTEgKzE5MSwxMSBAQCBXZWJJbnNwZWN0b3IuVG9vbGJh
ci5wcm90b3R5cGUgPSB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHNlY3Rpb25FbGVtZW50KTsK
IAogICAgICAgICB0aGlzLmFkZE5hdmlnYXRpb25JdGVtKHRvb2xiYXJJdGVtLCBzZWN0aW9uRWxl
bWVudCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcml2YXRlCiAKLSAgICBfaGFuZGxlQ29u
dGV4dE1lbnVFdmVudDogZnVuY3Rpb24oZXZlbnQpCisgICAgX2hhbmRsZUNvbnRleHRNZW51RXZl
bnQoZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgY29udGV4dE1lbnUgPSBuZXcgV2ViSW5zcGVj
dG9yLkNvbnRleHRNZW51KGV2ZW50KTsKIApAQCAtMjQ4LDE3ICsyMTAsNTAgQEAgV2ViSW5zcGVj
dG9yLlRvb2xiYXIucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgY29udGV4dE1l
bnUuc2hvdygpOwotICAgIH0sCisgICAgfQogCi0gICAgX2NoYW5nZURpc3BsYXlNb2RlOiBmdW5j
dGlvbihkaXNwbGF5TW9kZSkKKyAgICBfY2hhbmdlRGlzcGxheU1vZGUoZGlzcGxheU1vZGUpCiAg
ICAgewogICAgICAgICB0aGlzLmRpc3BsYXlNb2RlID0gZGlzcGxheU1vZGU7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBfdG9nZ2xlU21hbGxJY29uczogZnVuY3Rpb24oKQorICAgIF90b2dnbGVTbWFs
bEljb25zKCkKICAgICB7CiAgICAgICAgIHRoaXMuc2l6ZU1vZGUgPSB0aGlzLl9zaXplTW9kZSA9
PT0gV2ViSW5zcGVjdG9yLlRvb2xiYXIuU2l6ZU1vZGUuTm9ybWFsID8gV2ViSW5zcGVjdG9yLlRv
b2xiYXIuU2l6ZU1vZGUuU21hbGwgOiBXZWJJbnNwZWN0b3IuVG9vbGJhci5TaXplTW9kZS5Ob3Jt
YWw7CiAgICAgfQogfTsKIAotV2ViSW5zcGVjdG9yLlRvb2xiYXIucHJvdG90eXBlLl9fcHJvdG9f
XyA9IFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyLnByb3RvdHlwZTsKK1dlYkluc3BlY3Rvci5U
b29sYmFyLlN0eWxlQ2xhc3NOYW1lID0gInRvb2xiYXIiOworV2ViSW5zcGVjdG9yLlRvb2xiYXIu
Q29udHJvbFNlY3Rpb25TdHlsZUNsYXNzTmFtZSA9ICJjb250cm9sLXNlY3Rpb24iOworV2ViSW5z
cGVjdG9yLlRvb2xiYXIuSXRlbVNlY3Rpb25TdHlsZUNsYXNzTmFtZSA9ICJpdGVtLXNlY3Rpb24i
OworV2ViSW5zcGVjdG9yLlRvb2xiYXIuTGVmdEl0ZW1TZWN0aW9uU3R5bGVDbGFzc05hbWUgPSAi
bGVmdCI7CitXZWJJbnNwZWN0b3IuVG9vbGJhci5DZW50ZXJMZWZ0SXRlbVNlY3Rpb25TdHlsZUNs
YXNzTmFtZSA9ICJjZW50ZXItbGVmdCI7CitXZWJJbnNwZWN0b3IuVG9vbGJhci5DZW50ZXJJdGVt
U2VjdGlvblN0eWxlQ2xhc3NOYW1lID0gImNlbnRlciI7CitXZWJJbnNwZWN0b3IuVG9vbGJhci5D
ZW50ZXJSaWdodEl0ZW1TZWN0aW9uU3R5bGVDbGFzc05hbWUgPSAiY2VudGVyLXJpZ2h0IjsKK1dl
Ykluc3BlY3Rvci5Ub29sYmFyLlJpZ2h0SXRlbVNlY3Rpb25TdHlsZUNsYXNzTmFtZSA9ICJyaWdo
dCI7CisKK1dlYkluc3BlY3Rvci5Ub29sYmFyLkV2ZW50ID0geworICAgIERpc3BsYXlNb2RlRGlk
Q2hhbmdlOiAidG9vbGJhci1kaXNwbGF5LW1vZGUtZGlkLWNoYW5nZSIsCisgICAgU2l6ZU1vZGVE
aWRDaGFuZ2U6ICJ0b29sYmFyLXNpemUtbW9kZS1kaWQtY2hhbmdlIgorfTsKKworV2ViSW5zcGVj
dG9yLlRvb2xiYXIuU2VjdGlvbiA9IHsKKyAgICBDb250cm9sOiAiY29udHJvbCIsCisgICAgTGVm
dDogImxlZnQiLAorICAgIENlbnRlckxlZnQ6ICJjZW50ZXItbGVmdCIsCisgICAgQ2VudGVyOiAi
Y2VudGVyIiwKKyAgICBDZW50ZXJSaWdodDogImNlbnRlci1yaWdodCIsCisgICAgUmlnaHQ6ICJy
aWdodCIKK307CisKK1dlYkluc3BlY3Rvci5Ub29sYmFyLkRpc3BsYXlNb2RlID0geworICAgIElj
b25BbmRMYWJlbFZlcnRpY2FsOiAiaWNvbi1hbmQtbGFiZWwtdmVydGljYWwiLAorICAgIEljb25B
bmRMYWJlbEhvcml6b250YWw6ICJpY29uLWFuZC1sYWJlbC1ob3Jpem9udGFsIiwKKyAgICBJY29u
T25seTogImljb24tb25seSIsCisgICAgTGFiZWxPbmx5OiAibGFiZWwtb25seSIKK307CisKK1dl
Ykluc3BlY3Rvci5Ub29sYmFyLlNpemVNb2RlID0geworICAgIE5vcm1hbDogIm5vcm1hbC1zaXpl
IiwKKyAgICBTbWFsbDogInNtYWxsLXNpemUiCit9Owo=
</data>
<flag name="review"
          id="283421"
          type_id="1"
          status="+"
          setter="joepeck"
    />
          </attachment>
      

    </bug>

</bugzilla>