<?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>143107</bug_id>
          
          <creation_ts>2015-03-26 11:05:59 -0700</creation_ts>
          <short_desc>Web Inspector: Convert some View classes to ES6 classes</short_desc>
          <delta_ts>2015-04-21 20:31:19 -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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>142891</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Timothy Hatcher">timothy</reporter>
          <assigned_to name="Timothy Hatcher">timothy</assigned_to>
          <cc>graouts</cc>
    
    <cc>joepeck</cc>
    
    <cc>jonowells</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>1080338</commentid>
    <comment_count>0</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2015-03-26 11:05:59 -0700</bug_when>
    <thetext>Some of the simple View classes can be converted now. The rest are harder.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080339</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-03-26 11:06:40 -0700</bug_when>
    <thetext>&lt;rdar://problem/20311871&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080342</commentid>
    <comment_count>2</comment_count>
      <attachid>249497</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2015-03-26 11:11:29 -0700</bug_when>
    <thetext>Created attachment 249497
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080343</commentid>
    <comment_count>3</comment_count>
      <attachid>249498</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2015-03-26 11:11:53 -0700</bug_when>
    <thetext>Created attachment 249498
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080350</commentid>
    <comment_count>4</comment_count>
      <attachid>249501</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2015-03-26 11:19:07 -0700</bug_when>
    <thetext>Created attachment 249501
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080361</commentid>
    <comment_count>5</comment_count>
      <attachid>249501</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-03-26 11:49:44 -0700</bug_when>
    <thetext>Comment on attachment 249501
Patch

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

r=me

&gt; Source/WebInspectorUI/ChangeLog:41
&gt; +        Converted to ES6 ckasses.

Typo: &quot;ckasses&quot; =&gt; &quot;classes&quot;

&gt; Source/WebInspectorUI/UserInterface/Views/ContextMenu.js:150
&gt; +    constructor(event) {

Nit: Style, brace should be on newline.

&gt; Source/WebInspectorUI/UserInterface/Views/EditingSupport.js:81
&gt; +        this.commitHandler = commitHandler;

Could make these _foo.

&gt; Source/WebInspectorUI/UserInterface/Views/GoToLineDialog.js:122
&gt; +            event.preventDefault();

Is this fixing a bug?

&gt; Source/WebInspectorUI/UserInterface/Views/SearchBar.js:47
&gt; +        this._searchInput.addEventListener(&quot;search&quot;, this._handleSearchEvent.bind(this), false);
&gt; +        this._searchInput.addEventListener(&quot;keydown&quot;, this._handleKeydownEvent.bind(this), false);

Style: I think we have been dropping the false for useCapture for addEventListener. We can update that here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080491</commentid>
    <comment_count>6</comment_count>
      <attachid>249501</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2015-03-26 16:40:07 -0700</bug_when>
    <thetext>Comment on attachment 249501
Patch

https://trac.webkit.org/r182040</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249497</attachid>
            <date>2015-03-26 11:11:29 -0700</date>
            <delta_ts>2015-03-26 11:11:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143107-20150326111051.patch</filename>
            <type>text/plain</type>
            <size>83117</size>
            <attacher name="Timothy Hatcher">timothy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgxOTE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCA1
NjM2YTc5YzQzMGFjYzg2YmFiM2Q4ODA1MDcwYTRhNmNjMWE4MzBjLi4zMjIzYTMzZDE2ZGUwZTQw
NTZjZTFjZTQxYzZkMjI3N2QxZDU5MjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMSBAQAorMjAxNS0wMy0yNiAgVGltb3RoeSBIYXRjaGVyICA8dGltb3RoeUBhcHBsZS5j
b20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQ29udmVydCBCYXNlIGFuZCBQcm90b2NvbCBm
aWxlcyB0byBFUzYgY2xhc3NlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTQzMTA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0Jhc2UvRXZlbnRMaXN0ZW5lci5qczoKKyAgICAg
ICAgKiBVc2VySW50ZXJmYWNlL0Jhc2UvRXZlbnRMaXN0ZW5lclNldC5qczoKKyAgICAgICAgKiBV
c2VySW50ZXJmYWNlL1Byb3RvY29sL0FwcGxpY2F0aW9uQ2FjaGVPYnNlcnZlci5qczoKKyAgICAg
ICAgKiBVc2VySW50ZXJmYWNlL1Byb3RvY29sL0NTU09ic2VydmVyLmpzOgorICAgICAgICAqIFVz
ZXJJbnRlcmZhY2UvUHJvdG9jb2wvQ29uc29sZU9ic2VydmVyLmpzOgorICAgICAgICAqIFVzZXJJ
bnRlcmZhY2UvUHJvdG9jb2wvRE9NT2JzZXJ2ZXIuanM6CisgICAgICAgICogVXNlckludGVyZmFj
ZS9Qcm90b2NvbC9ET01TdG9yYWdlT2JzZXJ2ZXIuanM6CisgICAgICAgICogVXNlckludGVyZmFj
ZS9Qcm90b2NvbC9EYXRhYmFzZU9ic2VydmVyLmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2Uv
UHJvdG9jb2wvRGVidWdnZXJPYnNlcnZlci5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1By
b3RvY29sL0luc3BlY3RvckJhY2tlbmQuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9Qcm90
b2NvbC9JbnNwZWN0b3JPYnNlcnZlci5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Byb3Rv
Y29sL0xheWVyVHJlZU9ic2VydmVyLmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvUHJvdG9j
b2wvTWVzc2FnZURpc3BhdGNoZXIuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9Qcm90b2Nv
bC9OZXR3b3JrT2JzZXJ2ZXIuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9Qcm90b2NvbC9Q
YWdlT2JzZXJ2ZXIuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9Qcm90b2NvbC9SZW1vdGVP
YmplY3QuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9Qcm90b2NvbC9SZXBsYXlPYnNlcnZl
ci5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Byb3RvY29sL1J1bnRpbWVPYnNlcnZlci5q
czoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Byb3RvY29sL1RpbWVsaW5lT2JzZXJ2ZXIuanM6
CisgICAgICAgIENvbnZlcnRlZCB0byBFUzYgY2xhc3NlcyB3aGVyZSBwb3NzaWJsZS4KKwogMjAx
NS0wMy0yNCAgVG9iaWFzIFJlaXNzICA8dG9iaSt3ZWJraXRAYmFzZWNvZGUuZGU+CiAKICAgICAg
ICAgV2ViIEluc3BlY3RvcjogUkVHUkVTU0lPTiAocjE3OTI4Nik6IFJlZmVyZW5jZUVycm9yOiBD
YW4ndCBmaW5kIHZhcmlhYmxlOiBzZWxlY3RvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9FdmVudExpc3RlbmVyLmpzIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9FdmVudExpc3RlbmVyLmpzCmluZGV4IDEwZjE3
NTRmOWI5N2QwZmVhZjU5ZWU4NGY4MWJhNThlMTU4Y2ZhMzEuLjBiY2IwOTlkMzkwZmNmZDVlNGU2
Yzk3NmI2MTYzZTVlMmIwNzg2NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL0Jhc2UvRXZlbnRMaXN0ZW5lci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9CYXNlL0V2ZW50TGlzdGVuZXIuanMKQEAgLTEsNiArMSw2IEBA
CiAvKgorICogQ29weXJpZ2h0IChDKSAyMDE0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBVbml2ZXJzaXR5IG9mIFdhc2hp
bmd0b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0yNCwxNiArMjQsMTkgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9y
LkV2ZW50TGlzdGVuZXIgPSBmdW5jdGlvbih0aGlzT2JqZWN0LCBmaXJlT25jZSkKK1dlYkluc3Bl
Y3Rvci5FdmVudExpc3RlbmVyID0gY2xhc3MgRXZlbnRMaXN0ZW5lcgogewotICAgIHRoaXMuX3Ro
aXNPYmplY3QgPSB0aGlzT2JqZWN0OwotICAgIHRoaXMuX2VtaXR0ZXIgPSBudWxsOwotICAgIHRo
aXMuX2NhbGxiYWNrID0gbnVsbDsKLSAgICB0aGlzLl9maXJlT25jZSA9IGZpcmVPbmNlOwotfTsK
KyAgICBjb25zdHJ1Y3Rvcih0aGlzT2JqZWN0LCBmaXJlT25jZSkKKyAgICB7CisgICAgICAgIHRo
aXMuX3RoaXNPYmplY3QgPSB0aGlzT2JqZWN0OworICAgICAgICB0aGlzLl9lbWl0dGVyID0gbnVs
bDsKKyAgICAgICAgdGhpcy5fY2FsbGJhY2sgPSBudWxsOworICAgICAgICB0aGlzLl9maXJlT25j
ZSA9IGZpcmVPbmNlOworICAgIH0KIAotV2ViSW5zcGVjdG9yLkV2ZW50TGlzdGVuZXIucHJvdG90
eXBlID0gewotICAgIGNvbm5lY3Q6IGZ1bmN0aW9uKGVtaXR0ZXIsIHR5cGUsIGNhbGxiYWNrLCB1
c2VzQ2FwdHVyZSkKKyAgICAvLyBQdWJsaWMKKworICAgIGNvbm5lY3QoZW1pdHRlciwgdHlwZSwg
Y2FsbGJhY2ssIHVzZXNDYXB0dXJlKQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQoIXRo
aXMuX2VtaXR0ZXIgJiYgIXRoaXMuX2NhbGxiYWNrLCAiRXZlbnRMaXN0ZW5lciBhbHJlYWR5IGJv
dW5kIHRvIGEgY2FsbGJhY2suIiwgdGhpcyk7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGNhbGxi
YWNrLCAiTWlzc2luZyBjYWxsYmFjayBmb3IgZXZlbnQ6ICIgKyB0eXBlKTsKQEAgLTY0LDkgKzY3
LDkgQEAgV2ViSW5zcGVjdG9yLkV2ZW50TGlzdGVuZXIucHJvdG90eXBlID0gewogICAgICAgICAg
ICAgdGhpcy5fZW1pdHRlci5hZGRFdmVudExpc3RlbmVyKHRoaXMuX3R5cGUsIHRoaXMuX2NhbGxi
YWNrLCB0aGlzLl91c2VzQ2FwdHVyZSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHRoaXMu
X2VtaXR0ZXIuYWRkRXZlbnRMaXN0ZW5lcih0aGlzLl90eXBlLCB0aGlzLl9jYWxsYmFjaywgdGhp
cy5fdGhpc09iamVjdCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBkaXNjb25uZWN0OiBmdW5jdGlv
bigpCisgICAgZGlzY29ubmVjdCgpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlz
Ll9lbWl0dGVyICYmIHRoaXMuX2NhbGxiYWNrLCAiRXZlbnRMaXN0ZW5lciBpcyBub3QgYm91bmQg
dG8gYSBjYWxsYmFjay4iLCB0aGlzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvQmFzZS9FdmVudExpc3RlbmVyU2V0LmpzIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9FdmVudExpc3RlbmVyU2V0LmpzCmluZGV4IDQw
ZDJjZGRlNTFjYjczY2RiNjE4MDEyOTc0ZWI3Y2IzYjIxOWZhMzkuLmFhNGY1MGI1MjIyZDkwMTI2
NGViYjZhMGQyYjQ0OGE4YWFkYWQ3ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL0Jhc2UvRXZlbnRMaXN0ZW5lclNldC5qcworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL0V2ZW50TGlzdGVuZXJTZXQuanMKQEAgLTEs
NiArMSw2IEBACiAvKgorICogQ29weXJpZ2h0IChDKSAyMDE0LCAyMDE1IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBVbml2ZXJzaXR5
IG9mIFdhc2hpbmd0b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0yOCwxNyArMjgsMjEgQEAKIC8vIEFkZCBET00gb3IgSW5zcGVjdG9yIGV2
ZW50IGxpc3RlbmVycyB0byB0aGUgc2V0IHVzaW5nIGByZWdpc3RlcigpYC4KIC8vIFVzZSBgaW5z
dGFsbCgpYCBhbmQgYHVuaW5zdGFsbCgpYCB0byBlbmFibGUgb3IgZGlzYWJsZSBhbGwgbGlzdGVu
ZXJzCiAvLyBpbiB0aGUgc2V0IGF0IG9uY2UuCi1XZWJJbnNwZWN0b3IuRXZlbnRMaXN0ZW5lclNl
dCA9IGZ1bmN0aW9uKGRlZmF1bHRUaGlzT2JqZWN0LCBuYW1lKQorCitXZWJJbnNwZWN0b3IuRXZl
bnRMaXN0ZW5lclNldCA9IGNsYXNzIEV2ZW50TGlzdGVuZXJTZXQKIHsKLSAgICB0aGlzLm5hbWUg
PSBuYW1lOwotICAgIHRoaXMuX2RlZmF1bHRUaGlzT2JqZWN0ID0gZGVmYXVsdFRoaXNPYmplY3Q7
CisgICAgY29uc3RydWN0b3IoZGVmYXVsdFRoaXNPYmplY3QsIG5hbWUpCisgICAgeworICAgICAg
ICB0aGlzLm5hbWUgPSBuYW1lOworICAgICAgICB0aGlzLl9kZWZhdWx0VGhpc09iamVjdCA9IGRl
ZmF1bHRUaGlzT2JqZWN0OworCisgICAgICAgIHRoaXMuX2xpc3RlbmVycyA9IFtdOworICAgICAg
ICB0aGlzLl9pbnN0YWxsZWQgPSBmYWxzZTsKKyAgICB9CiAKLSAgICB0aGlzLl9saXN0ZW5lcnMg
PSBbXTsKLSAgICB0aGlzLl9pbnN0YWxsZWQgPSBmYWxzZTsKLX0KKyAgICAvLyBQdWJsaWMKIAot
V2ViSW5zcGVjdG9yLkV2ZW50TGlzdGVuZXJTZXQucHJvdG90eXBlID0gewotICAgIHJlZ2lzdGVy
OiBmdW5jdGlvbihlbWl0dGVyLCB0eXBlLCBjYWxsYmFjaywgdGhpc09iamVjdCwgdXNlc0NhcHR1
cmUpCisgICAgcmVnaXN0ZXIoZW1pdHRlciwgdHlwZSwgY2FsbGJhY2ssIHRoaXNPYmplY3QsIHVz
ZXNDYXB0dXJlKQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQoY2FsbGJhY2ssICJNaXNz
aW5nIGNhbGxiYWNrIGZvciBldmVudDogIiArIHR5cGUpOwogICAgICAgICBjb25zb2xlLmFzc2Vy
dCh0eXBlLCAiVHJpZWQgdG8gcmVnaXN0ZXIgbGlzdGVuZXIgZm9yIHVua25vd24gZXZlbnQ6ICIg
KyB0eXBlKTsKQEAgLTQ5LDE2ICs1MywxNiBAQCBXZWJJbnNwZWN0b3IuRXZlbnRMaXN0ZW5lclNl
dC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgdGhpcy5fbGlz
dGVuZXJzLnB1c2goe2xpc3RlbmVyOiBuZXcgV2ViSW5zcGVjdG9yLkV2ZW50TGlzdGVuZXIodGhp
c09iamVjdCB8fCB0aGlzLl9kZWZhdWx0VGhpc09iamVjdCksIGVtaXR0ZXIsIHR5cGUsIGNhbGxi
YWNrLCB1c2VzQ2FwdHVyZX0pOwotICAgIH0sCisgICAgfQogCi0gICAgdW5yZWdpc3RlcjogZnVu
Y3Rpb24oKQorICAgIHVucmVnaXN0ZXIoKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX2luc3Rh
bGxlZCkKICAgICAgICAgICAgIHRoaXMudW5pbnN0YWxsKCk7CiAgICAgICAgIHRoaXMuX2xpc3Rl
bmVycyA9IFtdOwotICAgIH0sCisgICAgfQogCi0gICAgaW5zdGFsbDogZnVuY3Rpb24oKQorICAg
IGluc3RhbGwoKQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQoIXRoaXMuX2luc3RhbGxl
ZCwgIkFscmVhZHkgaW5zdGFsbGVkIGxpc3RlbmVyIGdyb3VwOiAiICsgdGhpcy5uYW1lKTsKICAg
ICAgICAgaWYgKHRoaXMuX2luc3RhbGxlZCkKQEAgLTY4LDkgKzcyLDkgQEAgV2ViSW5zcGVjdG9y
LkV2ZW50TGlzdGVuZXJTZXQucHJvdG90eXBlID0gewogCiAgICAgICAgIGZvciAodmFyIGRhdGEg
b2YgdGhpcy5fbGlzdGVuZXJzKQogICAgICAgICAgICAgZGF0YS5saXN0ZW5lci5jb25uZWN0KGRh
dGEuZW1pdHRlciwgZGF0YS50eXBlLCBkYXRhLmNhbGxiYWNrLCBkYXRhLnVzZXNDYXB0dXJlKTsK
LSAgICB9LAorICAgIH0KIAotICAgIHVuaW5zdGFsbDogZnVuY3Rpb24odW5yZWdpc3Rlckxpc3Rl
bmVycykKKyAgICB1bmluc3RhbGwodW5yZWdpc3Rlckxpc3RlbmVycykKICAgICB7CiAgICAgICAg
IGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2luc3RhbGxlZCwgIlRyeWluZyB0byB1bmluc3RhbGwgbGlz
dGVuZXIgZ3JvdXAgIiArIHRoaXMubmFtZSArICIsIGJ1dCBpdCBpc24ndCBpbnN0YWxsZWQuIik7
CiAgICAgICAgIGlmICghdGhpcy5faW5zdGFsbGVkKQpAQCAtODMsNSArODcsNSBAQCBXZWJJbnNw
ZWN0b3IuRXZlbnRMaXN0ZW5lclNldC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgaWYgKHVucmVn
aXN0ZXJMaXN0ZW5lcnMpCiAgICAgICAgICAgICB0aGlzLl9saXN0ZW5lcnMgPSBbXTsKLSAgICB9
LAotfQorICAgIH0KK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Qcm90b2NvbC9BcHBsaWNhdGlvbkNhY2hlT2JzZXJ2ZXIuanMgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9BcHBsaWNhdGlvbkNhY2hlT2JzZXJ2
ZXIuanMKaW5kZXggZWRlMGI3MGY2NmZhM2MxNzRjYTAxY2E3YTk0ZDYyMjE4N2FmYWIxNi4uZDgw
Mzg1M2MzNDI2Y2JiYjU2NmM5Y2YwMzU1MjJiNjBhZTliYTUwNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvQXBwbGljYXRpb25DYWNoZU9i
c2VydmVyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3Rv
Y29sL0FwcGxpY2F0aW9uQ2FjaGVPYnNlcnZlci5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsMjYgKzIzLDE3IEBACiAgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkFwcGxpY2F0
aW9uQ2FjaGVPYnNlcnZlciA9IGZ1bmN0aW9uKCkKK1dlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNh
Y2hlT2JzZXJ2ZXIgPSBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlT2JzZXJ2ZXIKIHsKLSAgICAvLyBG
SVhNRTogQ29udmVydCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcywgYW5k
IGNhbGwgc3VwZXIoKS4KLSAgICAvLyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7Ci19
OwotCi1XZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZU9ic2VydmVyLnByb3RvdHlwZSA9IHsK
LSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVPYnNlcnZlciwK
LQogICAgIC8vIEV2ZW50cyBkZWZpbmVkIGJ5IHRoZSAiQXBwbGljYXRpb25DYWNoZSIgZG9tYWlu
LgogCi0gICAgYXBwbGljYXRpb25DYWNoZVN0YXR1c1VwZGF0ZWQ6IGZ1bmN0aW9uKGZyYW1lSWQs
IG1hbmlmZXN0VVJMLCBzdGF0dXMpCisgICAgYXBwbGljYXRpb25DYWNoZVN0YXR1c1VwZGF0ZWQo
ZnJhbWVJZCwgbWFuaWZlc3RVUkwsIHN0YXR1cykKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rv
ci5hcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5hcHBsaWNhdGlvbkNhY2hlU3RhdHVzVXBkYXRlZChm
cmFtZUlkLCBtYW5pZmVzdFVSTCwgc3RhdHVzKTsKLSAgICB9LAorICAgIH0KIAotICAgIG5ldHdv
cmtTdGF0ZVVwZGF0ZWQ6IGZ1bmN0aW9uKGlzTm93T25saW5lKQorICAgIG5ldHdvcmtTdGF0ZVVw
ZGF0ZWQoaXNOb3dPbmxpbmUpCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3IuYXBwbGljYXRp
b25DYWNoZU1hbmFnZXIubmV0d29ya1N0YXRlVXBkYXRlZChpc05vd09ubGluZSk7CiAgICAgfQog
fTsKLQotV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVPYnNlcnZlci5wcm90b3R5cGUuX19w
cm90b19fID0gV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9DU1NPYnNlcnZlci5qcyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0NTU09ic2VydmVy
LmpzCmluZGV4IGMwOTRlMjRkNTBmZmNmZjljOGFkNWFlMTY3Y2M0ZDIyMTUyN2FmNDIuLjA5YWM4
Y2MzMDhkZTFjNjBlMzEwYzU4Y2Q4ODA4MmNhMzFlZjJiNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0NTU09ic2VydmVyLmpzCisrKyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0NTU09ic2VydmVy
LmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0yMyw2NyArMjMsNTggQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
ICAqLwogCi1XZWJJbnNwZWN0b3IuQ1NTT2JzZXJ2ZXIgPSBmdW5jdGlvbigpCitXZWJJbnNwZWN0
b3IuQ1NTT2JzZXJ2ZXIgPSBjbGFzcyBDU1NPYnNlcnZlcgogewotICAgIC8vIEZJWE1FOiBDb252
ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBl
cigpLgotICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKLX07Ci0KLVdlYklu
c3BlY3Rvci5DU1NPYnNlcnZlci5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYklu
c3BlY3Rvci5DU1NPYnNlcnZlciwKLQogICAgIC8vIEV2ZW50cyBkZWZpbmVkIGJ5IHRoZSAiQ1NT
IiBkb21haW4uCiAKLSAgICBtZWRpYVF1ZXJ5UmVzdWx0Q2hhbmdlZDogZnVuY3Rpb24oKQorICAg
IG1lZGlhUXVlcnlSZXN1bHRDaGFuZ2VkKCkKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5j
c3NTdHlsZU1hbmFnZXIubWVkaWFRdWVyeVJlc3VsdENoYW5nZWQoKTsKLSAgICB9LAorICAgIH0K
IAotICAgIHN0eWxlU2hlZXRDaGFuZ2VkOiBmdW5jdGlvbihzdHlsZVNoZWV0SWQpCisgICAgc3R5
bGVTaGVldENoYW5nZWQoc3R5bGVTaGVldElkKQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9y
LmNzc1N0eWxlTWFuYWdlci5zdHlsZVNoZWV0Q2hhbmdlZChzdHlsZVNoZWV0SWQpOwotICAgIH0s
CisgICAgfQogCi0gICAgc3R5bGVTaGVldEFkZGVkOiBmdW5jdGlvbihoZWFkZXIpCisgICAgc3R5
bGVTaGVldEFkZGVkKGhlYWRlcikKICAgICB7CiAgICAgICAgIC8vIEZJWE1FOiBOb3QgaW1wbGVt
ZW50ZWQuIDxyZGFyOi8vcHJvYmxlbS8xMzIxMzY4MD4KLSAgICB9LAorICAgIH0KIAotICAgIHN0
eWxlU2hlZXRSZW1vdmVkOiBmdW5jdGlvbihoZWFkZXIpCisgICAgc3R5bGVTaGVldFJlbW92ZWQo
aGVhZGVyKQogICAgIHsKICAgICAgICAgLy8gRklYTUU6IE5vdCBpbXBsZW1lbnRlZC4gPHJkYXI6
Ly9wcm9ibGVtLzEzMjEzNjgwPgotICAgIH0sCisgICAgfQogCi0gICAgbmFtZWRGbG93Q3JlYXRl
ZDogZnVuY3Rpb24obmFtZWRGbG93KQorICAgIG5hbWVkRmxvd0NyZWF0ZWQobmFtZWRGbG93KQog
ICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLmRvbVRyZWVNYW5hZ2VyLm5hbWVkRmxvd0NyZWF0
ZWQobmFtZWRGbG93KTsKLSAgICB9LAorICAgIH0KIAotICAgIG5hbWVkRmxvd1JlbW92ZWQ6IGZ1
bmN0aW9uKGRvY3VtZW50Tm9kZUlkLCBmbG93TmFtZSkKKyAgICBuYW1lZEZsb3dSZW1vdmVkKGRv
Y3VtZW50Tm9kZUlkLCBmbG93TmFtZSkKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5kb21U
cmVlTWFuYWdlci5uYW1lZEZsb3dSZW1vdmVkKGRvY3VtZW50Tm9kZUlkLCBmbG93TmFtZSk7Ci0g
ICAgfSwKKyAgICB9CiAKICAgICAvLyBDT01QQVRJQklMSVRZIChpT1MgNyk6IHJlZ2lvbkxheW91
dFVwZGF0ZWQgd2FzIHJlbW92ZWQgYW5kIHJlcGxhY2VkIGJ5IHJlZ2lvbk92ZXJzZXRDaGFuZ2Vk
LgotICAgIHJlZ2lvbkxheW91dFVwZGF0ZWQ6IGZ1bmN0aW9uKG5hbWVkRmxvdykKKyAgICByZWdp
b25MYXlvdXRVcGRhdGVkKG5hbWVkRmxvdykKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5k
b21UcmVlTWFuYWdlci5yZWdpb25MYXlvdXRVcGRhdGVkKG5hbWVkRmxvdyk7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICByZWdpb25PdmVyc2V0Q2hhbmdlZDogZnVuY3Rpb24obmFtZWRGbG93KQorICAg
IHJlZ2lvbk92ZXJzZXRDaGFuZ2VkKG5hbWVkRmxvdykKICAgICB7CiAgICAgICAgIFdlYkluc3Bl
Y3Rvci5kb21UcmVlTWFuYWdlci5yZWdpb25PdmVyc2V0Q2hhbmdlZChuYW1lZEZsb3cpOwotICAg
IH0sCisgICAgfQogCi0gICAgcmVnaXN0ZXJlZE5hbWVkRmxvd0NvbnRlbnRFbGVtZW50OiBmdW5j
dGlvbihkb2N1bWVudE5vZGVJZCwgZmxvd05hbWUsIGNvbnRlbnROb2RlSWQsIG5leHRDb250ZW50
RWxlbWVudE5vZGVJZCkKKyAgICByZWdpc3RlcmVkTmFtZWRGbG93Q29udGVudEVsZW1lbnQoZG9j
dW1lbnROb2RlSWQsIGZsb3dOYW1lLCBjb250ZW50Tm9kZUlkLCBuZXh0Q29udGVudEVsZW1lbnRO
b2RlSWQpCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3IuZG9tVHJlZU1hbmFnZXIucmVnaXN0
ZXJlZE5hbWVkRmxvd0NvbnRlbnRFbGVtZW50KGRvY3VtZW50Tm9kZUlkLCBmbG93TmFtZSwgY29u
dGVudE5vZGVJZCwgbmV4dENvbnRlbnRFbGVtZW50Tm9kZUlkKTsKLSAgICB9LAorICAgIH0KIAot
ICAgIHVucmVnaXN0ZXJlZE5hbWVkRmxvd0NvbnRlbnRFbGVtZW50OiBmdW5jdGlvbihkb2N1bWVu
dE5vZGVJZCwgZmxvd05hbWUsIGNvbnRlbnROb2RlSWQpCisgICAgdW5yZWdpc3RlcmVkTmFtZWRG
bG93Q29udGVudEVsZW1lbnQoZG9jdW1lbnROb2RlSWQsIGZsb3dOYW1lLCBjb250ZW50Tm9kZUlk
KQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLmRvbVRyZWVNYW5hZ2VyLnVucmVnaXN0ZXJl
ZE5hbWVkRmxvd0NvbnRlbnRFbGVtZW50KGRvY3VtZW50Tm9kZUlkLCBmbG93TmFtZSwgY29udGVu
dE5vZGVJZCk7CiAgICAgfQogfTsKLQotV2ViSW5zcGVjdG9yLkNTU09ic2VydmVyLnByb3RvdHlw
ZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0NvbnNvbGVPYnNl
cnZlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0Nv
bnNvbGVPYnNlcnZlci5qcwppbmRleCA5NzU5NTNlMTY3OGRkYTk5M2E5NzhmY2ZiODkyODU4ZDNh
NjFmNzE4Li5jZmMyZmMwNTQ1YTRhNTFiNTNjMTk3YWEyNmE5Y2EwZjU1ODAxN2RkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9Db25zb2xl
T2JzZXJ2ZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJv
dG9jb2wvQ29uc29sZU9ic2VydmVyLmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywxOCArMjMsMTEgQEAKICAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuQ29uc29sZU9ic2VydmVy
ID0gZnVuY3Rpb24oKQorV2ViSW5zcGVjdG9yLkNvbnNvbGVPYnNlcnZlciA9IGNsYXNzIENvbnNv
bGVPYnNlcnZlcgogewotICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0
b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBlcigpLgotICAgIC8vIFdlYkluc3BlY3Rv
ci5PYmplY3QuY2FsbCh0aGlzKTsKLX07Ci0KLVdlYkluc3BlY3Rvci5Db25zb2xlT2JzZXJ2ZXIu
cHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuQ29uc29sZU9ic2Vy
dmVyLAotCiAgICAgLy8gRXZlbnRzIGRlZmluZWQgYnkgdGhlICJDb25zb2xlIiBkb21haW4uCiAK
LSAgICBtZXNzYWdlQWRkZWQ6IGZ1bmN0aW9uKG1lc3NhZ2UpCisgICAgbWVzc2FnZUFkZGVkKG1l
c3NhZ2UpCiAgICAgewogICAgICAgICBpZiAobWVzc2FnZS50eXBlID09PSAiYXNzZXJ0IiAmJiAh
bWVzc2FnZS50ZXh0KQogICAgICAgICAgICAgbWVzc2FnZS50ZXh0ID0gV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJBc3NlcnRpb24iKTsKQEAgLTQ4LDE3ICs0MSwxNSBAQCBXZWJJbnNwZWN0b3IuQ29u
c29sZU9ic2VydmVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAg
ICBXZWJJbnNwZWN0b3IubG9nTWFuYWdlci5tZXNzYWdlV2FzQWRkZWQobWVzc2FnZS5zb3VyY2Us
IG1lc3NhZ2UubGV2ZWwsIG1lc3NhZ2UudGV4dCwgbWVzc2FnZS50eXBlLCBtZXNzYWdlLnVybCwg
bWVzc2FnZS5saW5lLCBtZXNzYWdlLmNvbHVtbiB8fCAwLCBtZXNzYWdlLnJlcGVhdENvdW50LCBt
ZXNzYWdlLnBhcmFtZXRlcnMsIG1lc3NhZ2Uuc3RhY2tUcmFjZSwgbWVzc2FnZS5uZXR3b3JrUmVx
dWVzdElkKTsKLSAgICB9LAorICAgIH0KIAotICAgIG1lc3NhZ2VSZXBlYXRDb3VudFVwZGF0ZWQ6
IGZ1bmN0aW9uKGNvdW50KQorICAgIG1lc3NhZ2VSZXBlYXRDb3VudFVwZGF0ZWQoY291bnQpCiAg
ICAgewogICAgICAgICBXZWJJbnNwZWN0b3IubG9nTWFuYWdlci5tZXNzYWdlUmVwZWF0Q291bnRV
cGRhdGVkKGNvdW50KTsKLSAgICB9LAorICAgIH0KIAotICAgIG1lc3NhZ2VzQ2xlYXJlZDogZnVu
Y3Rpb24oKQorICAgIG1lc3NhZ2VzQ2xlYXJlZCgpCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0
b3IubG9nTWFuYWdlci5tZXNzYWdlc0NsZWFyZWQoKTsKICAgICB9CiB9OwotCi1XZWJJbnNwZWN0
b3IuQ29uc29sZU9ic2VydmVyLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuT2Jq
ZWN0LnByb3RvdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1Byb3RvY29sL0RPTU9ic2VydmVyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvUHJvdG9jb2wvRE9NT2JzZXJ2ZXIuanMKaW5kZXggNzcwMDMxZjM0M2EwYjMy
YmE1OTJiMDg3NWVmY2Q1NGNhYzdhMDkzMC4uYTAyMjhjOTA0Yzc5NzdhMGFkMjQ0NGEzMmQ3YTEw
ODdjNDM4NDM3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvUHJvdG9jb2wvRE9NT2JzZXJ2ZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvUHJvdG9jb2wvRE9NT2JzZXJ2ZXIuanMKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDcxICsyMyw2MiBAQAogICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5ET01P
YnNlcnZlciA9IGZ1bmN0aW9uKCkKK1dlYkluc3BlY3Rvci5ET01PYnNlcnZlciA9IGNsYXNzIERP
TU9ic2VydmVyCiB7Ci0gICAgLy8gRklYTUU6IENvbnZlcnQgdGhpcyB0byBhIFdlYkluc3BlY3Rv
ci5PYmplY3Qgc3ViY2xhc3MsIGFuZCBjYWxsIHN1cGVyKCkuCi0gICAgLy8gV2ViSW5zcGVjdG9y
Lk9iamVjdC5jYWxsKHRoaXMpOwotfTsKLQotV2ViSW5zcGVjdG9yLkRPTU9ic2VydmVyLnByb3Rv
dHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkRPTU9ic2VydmVyLAotCiAg
ICAgLy8gRXZlbnRzIGRlZmluZWQgYnkgdGhlICJET00iIGRvbWFpbi4KIAotICAgIGRvY3VtZW50
VXBkYXRlZDogZnVuY3Rpb24oKQorICAgIGRvY3VtZW50VXBkYXRlZCgpCiAgICAgewogICAgICAg
ICBXZWJJbnNwZWN0b3IuZG9tVHJlZU1hbmFnZXIuX2RvY3VtZW50VXBkYXRlZCgpOwotICAgIH0s
CisgICAgfQogCi0gICAgc2V0Q2hpbGROb2RlczogZnVuY3Rpb24ocGFyZW50SWQsIHBheWxvYWRz
KQorICAgIHNldENoaWxkTm9kZXMocGFyZW50SWQsIHBheWxvYWRzKQogICAgIHsKICAgICAgICAg
V2ViSW5zcGVjdG9yLmRvbVRyZWVNYW5hZ2VyLl9zZXRDaGlsZE5vZGVzKHBhcmVudElkLCBwYXls
b2Fkcyk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBhdHRyaWJ1dGVNb2RpZmllZDogZnVuY3Rpb24o
bm9kZUlkLCBuYW1lLCB2YWx1ZSkKKyAgICBhdHRyaWJ1dGVNb2RpZmllZChub2RlSWQsIG5hbWUs
IHZhbHVlKQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLmRvbVRyZWVNYW5hZ2VyLl9hdHRy
aWJ1dGVNb2RpZmllZChub2RlSWQsIG5hbWUsIHZhbHVlKTsKLSAgICB9LAorICAgIH0KIAotICAg
IGF0dHJpYnV0ZVJlbW92ZWQ6IGZ1bmN0aW9uKG5vZGVJZCwgbmFtZSkKKyAgICBhdHRyaWJ1dGVS
ZW1vdmVkKG5vZGVJZCwgbmFtZSkKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5kb21UcmVl
TWFuYWdlci5fYXR0cmlidXRlUmVtb3ZlZChub2RlSWQsIG5hbWUpOwotICAgIH0sCisgICAgfQog
Ci0gICAgaW5saW5lU3R5bGVJbnZhbGlkYXRlZDogZnVuY3Rpb24obm9kZUlkcykKKyAgICBpbmxp
bmVTdHlsZUludmFsaWRhdGVkKG5vZGVJZHMpCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3Iu
ZG9tVHJlZU1hbmFnZXIuX2lubGluZVN0eWxlSW52YWxpZGF0ZWQobm9kZUlkcyk7Ci0gICAgfSwK
KyAgICB9CiAKLSAgICBjaGFyYWN0ZXJEYXRhTW9kaWZpZWQ6IGZ1bmN0aW9uKG5vZGVJZCwgY2hh
cmFjdGVyRGF0YSkKKyAgICBjaGFyYWN0ZXJEYXRhTW9kaWZpZWQobm9kZUlkLCBjaGFyYWN0ZXJE
YXRhKQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLmRvbVRyZWVNYW5hZ2VyLl9jaGFyYWN0
ZXJEYXRhTW9kaWZpZWQobm9kZUlkLCBjaGFyYWN0ZXJEYXRhKTsKLSAgICB9LAorICAgIH0KIAot
ICAgIGNoaWxkTm9kZUNvdW50VXBkYXRlZDogZnVuY3Rpb24obm9kZUlkLCBjaGlsZE5vZGVDb3Vu
dCkKKyAgICBjaGlsZE5vZGVDb3VudFVwZGF0ZWQobm9kZUlkLCBjaGlsZE5vZGVDb3VudCkKICAg
ICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5kb21UcmVlTWFuYWdlci5fY2hpbGROb2RlQ291bnRV
cGRhdGVkKG5vZGVJZCwgY2hpbGROb2RlQ291bnQpOwotICAgIH0sCisgICAgfQogCi0gICAgY2hp
bGROb2RlSW5zZXJ0ZWQ6IGZ1bmN0aW9uKHBhcmVudE5vZGVJZCwgcHJldmlvdXNOb2RlSWQsIHBh
eWxvYWQpCisgICAgY2hpbGROb2RlSW5zZXJ0ZWQocGFyZW50Tm9kZUlkLCBwcmV2aW91c05vZGVJ
ZCwgcGF5bG9hZCkKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5kb21UcmVlTWFuYWdlci5f
Y2hpbGROb2RlSW5zZXJ0ZWQocGFyZW50Tm9kZUlkLCBwcmV2aW91c05vZGVJZCwgcGF5bG9hZCk7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBjaGlsZE5vZGVSZW1vdmVkOiBmdW5jdGlvbihwYXJlbnRO
b2RlSWQsIG5vZGVJZCkKKyAgICBjaGlsZE5vZGVSZW1vdmVkKHBhcmVudE5vZGVJZCwgbm9kZUlk
KQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLmRvbVRyZWVNYW5hZ2VyLl9jaGlsZE5vZGVS
ZW1vdmVkKHBhcmVudE5vZGVJZCwgbm9kZUlkKTsKLSAgICB9LAorICAgIH0KIAotICAgIHNoYWRv
d1Jvb3RQdXNoZWQ6IGZ1bmN0aW9uKHBhcmVudE5vZGVJZCwgbm9kZUlkKQorICAgIHNoYWRvd1Jv
b3RQdXNoZWQocGFyZW50Tm9kZUlkLCBub2RlSWQpCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0
b3IuZG9tVHJlZU1hbmFnZXIuX2NoaWxkTm9kZUluc2VydGVkKHBhcmVudE5vZGVJZCwgMCwgbm9k
ZUlkKTsKLSAgICB9LAorICAgIH0KIAotICAgIHNoYWRvd1Jvb3RQb3BwZWQ6IGZ1bmN0aW9uKHBh
cmVudE5vZGVJZCwgbm9kZUlkKQorICAgIHNoYWRvd1Jvb3RQb3BwZWQocGFyZW50Tm9kZUlkLCBu
b2RlSWQpCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3IuZG9tVHJlZU1hbmFnZXIuX2NoaWxk
Tm9kZVJlbW92ZWQocGFyZW50Tm9kZUlkLCBub2RlSWQpOwogICAgIH0KIH07Ci0KLVdlYkluc3Bl
Y3Rvci5ET01PYnNlcnZlci5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLk9iamVj
dC5wcm90b3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Qcm90b2NvbC9ET01TdG9yYWdlT2JzZXJ2ZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9ET01TdG9yYWdlT2JzZXJ2ZXIuanMKaW5kZXggZGZl
NDVkNWIzZWYyOTM5N2I2ZmE3YTI0Nzg4ODY0NTI2OWNjZGNmMy4uZTZkZmRkMjMzYzc5YTg1MDQ2
ODZjMDU2MDA4ZWRkZWI1ODNkZTUxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvRE9NU3RvcmFnZU9ic2VydmVyLmpzCisrKyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0RPTVN0b3JhZ2VPYnNlcnZl
ci5qcwpAQCAtMjQsNDYgKzI0LDM4IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VPYnNlcnZlciA9IGZ1bmN0aW9uKCkK
K1dlYkluc3BlY3Rvci5ET01TdG9yYWdlT2JzZXJ2ZXIgPSBjbGFzcyBET01TdG9yYWdlT2JzZXJ2
ZXIKIHsKLSAgICAvLyBGSVhNRTogQ29udmVydCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVj
dCBzdWJjbGFzcywgYW5kIGNhbGwgc3VwZXIoKS4KLSAgICAvLyBXZWJJbnNwZWN0b3IuT2JqZWN0
LmNhbGwodGhpcyk7Ci19OwotCi1XZWJJbnNwZWN0b3IuRE9NU3RvcmFnZU9ic2VydmVyLnByb3Rv
dHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VPYnNlcnZl
ciwKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlLAotCiAgICAg
Ly8gRXZlbnRzIGRlZmluZWQgYnkgdGhlICJET01TdG9yYWdlIiBkb21haW4uCiAKICAgICAvLyBD
T01QQVRJQklMSVRZIChpT1MgNik6IFRoaXMgZXZlbnQgbm8gbG9uZ2VyIGV4aXN0cy4gSXQgaXMg
c3RpbGwgbmVlZGVkIGFuZCBjYWxsZWQgb24gaU9TIDYuCi0gICAgYWRkRE9NU3RvcmFnZTogZnVu
Y3Rpb24oc3RvcmFnZSkKKyAgICBhZGRET01TdG9yYWdlKHN0b3JhZ2UpCiAgICAgewogICAgICAg
ICBXZWJJbnNwZWN0b3Iuc3RvcmFnZU1hbmFnZXIuZG9tU3RvcmFnZVdhc0FkZGVkKHN0b3JhZ2Uu
aWQsIHN0b3JhZ2UuaG9zdCwgc3RvcmFnZS5pc0xvY2FsU3RvcmFnZSk7Ci0gICAgfSwKKyAgICB9
CiAKICAgICAvLyBDT01QQVRJQklMSVRZIChpT1MgNik6IFRoaXMgZXZlbnQgd2FzIHNwbGl0IGlu
dG8gdGhlIGdyYW51bGFyIGV2ZW50cyBiZWxvdy4KLSAgICB1cGRhdGVET01TdG9yYWdlOiBmdW5j
dGlvbihzdG9yYWdlSWQpCisgICAgdXBkYXRlRE9NU3RvcmFnZShzdG9yYWdlSWQpCiAgICAgewog
ICAgICAgICBXZWJJbnNwZWN0b3Iuc3RvcmFnZU1hbmFnZXIuZG9tU3RvcmFnZVdhc1VwZGF0ZWQo
c3RvcmFnZUlkKTsKLSAgICB9LAorICAgIH0KIAotICAgIGRvbVN0b3JhZ2VJdGVtc0NsZWFyZWQ6
IGZ1bmN0aW9uKHN0b3JhZ2VJZCkKKyAgICBkb21TdG9yYWdlSXRlbXNDbGVhcmVkKHN0b3JhZ2VJ
ZCkKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5zdG9yYWdlTWFuYWdlci5pdGVtc0NsZWFy
ZWQoc3RvcmFnZUlkKTsKLSAgICB9LAorICAgIH0KIAotICAgIGRvbVN0b3JhZ2VJdGVtUmVtb3Zl
ZDogZnVuY3Rpb24oc3RvcmFnZUlkLCBrZXkpCisgICAgZG9tU3RvcmFnZUl0ZW1SZW1vdmVkKHN0
b3JhZ2VJZCwga2V5KQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLnN0b3JhZ2VNYW5hZ2Vy
Lml0ZW1SZW1vdmVkKHN0b3JhZ2VJZCwga2V5KTsKLSAgICB9LAorICAgIH0KIAotICAgIGRvbVN0
b3JhZ2VJdGVtQWRkZWQ6IGZ1bmN0aW9uKHN0b3JhZ2VJZCwga2V5LCB2YWx1ZSkKKyAgICBkb21T
dG9yYWdlSXRlbUFkZGVkKHN0b3JhZ2VJZCwga2V5LCB2YWx1ZSkKICAgICB7CiAgICAgICAgIFdl
Ykluc3BlY3Rvci5zdG9yYWdlTWFuYWdlci5pdGVtQWRkZWQoc3RvcmFnZUlkLCBrZXksIHZhbHVl
KTsKLSAgICB9LAorICAgIH0KIAotICAgIGRvbVN0b3JhZ2VJdGVtVXBkYXRlZDogZnVuY3Rpb24o
c3RvcmFnZUlkLCBrZXksIG9sZFZhbHVlLCB2YWx1ZSkKKyAgICBkb21TdG9yYWdlSXRlbVVwZGF0
ZWQoc3RvcmFnZUlkLCBrZXksIG9sZFZhbHVlLCB2YWx1ZSkKICAgICB7CiAgICAgICAgIFdlYklu
c3BlY3Rvci5zdG9yYWdlTWFuYWdlci5pdGVtVXBkYXRlZChzdG9yYWdlSWQsIGtleSwgb2xkVmFs
dWUsIHZhbHVlKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Qcm90b2NvbC9EYXRhYmFzZU9ic2VydmVyLmpzIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvRGF0YWJhc2VPYnNlcnZlci5qcwppbmRleCA2
M2RiZDZmNmE0YzM4OTA3M2M3ZjBkYWFjYzFiYmQ1NmE3OTQ3ZTU0Li43Yjk3M2VhNmU3NzVkNTJi
ZmZlZTk5YmQwZWIyMTI1ZGU3NjM0NWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9EYXRhYmFzZU9ic2VydmVyLmpzCisrKyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0RhdGFiYXNlT2JzZXJ2ZXIu
anMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTIzLDI2ICsyMywxNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
ICovCiAKLVdlYkluc3BlY3Rvci5EYXRhYmFzZU9ic2VydmVyID0gZnVuY3Rpb24oKQorV2ViSW5z
cGVjdG9yLkRhdGFiYXNlT2JzZXJ2ZXIgPSBjbGFzcyBEYXRhYmFzZU9ic2VydmVyCiB7Ci0gICAg
Ly8gRklYTUU6IENvbnZlcnQgdGhpcyB0byBhIFdlYkluc3BlY3Rvci5PYmplY3Qgc3ViY2xhc3Ms
IGFuZCBjYWxsIHN1cGVyKCkuCi0gICAgLy8gV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMp
OwotfTsKLQotV2ViSW5zcGVjdG9yLkRhdGFiYXNlT2JzZXJ2ZXIuX2NhbGxiYWNrcyA9IHt9Owot
Ci1XZWJJbnNwZWN0b3IuRGF0YWJhc2VPYnNlcnZlci5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3Ry
dWN0b3I6IFdlYkluc3BlY3Rvci5EYXRhYmFzZU9ic2VydmVyLAotCiAgICAgLy8gRXZlbnRzIGRl
ZmluZWQgYnkgdGhlICJEYXRhYmFzZSIgZG9tYWluLgogCi0gICAgYWRkRGF0YWJhc2U6IGZ1bmN0
aW9uKGRhdGFiYXNlKQorICAgIGFkZERhdGFiYXNlKGRhdGFiYXNlKQogICAgIHsKICAgICAgICAg
V2ViSW5zcGVjdG9yLnN0b3JhZ2VNYW5hZ2VyLmRhdGFiYXNlV2FzQWRkZWQoZGF0YWJhc2UuaWQs
IGRhdGFiYXNlLmRvbWFpbiwgZGF0YWJhc2UubmFtZSwgZGF0YWJhc2UudmVyc2lvbik7Ci0gICAg
fSwKKyAgICB9CiAKICAgICAvLyBDT01QQVRJQklMSVRZIChpT1MgNik6IFRoaXMgZXZlbnQgd2Fz
IHJlbW92ZWQgaW4gZmF2b3Igb2YgYSBtb3JlIGFzeW5jIERhdGFiYXNlQWdlbnQuZXhlY3V0ZVNR
TC4KLSAgICBzcWxUcmFuc2FjdGlvblN1Y2NlZWRlZDogZnVuY3Rpb24odHJhbnNhY3Rpb25JZCwg
Y29sdW1uTmFtZXMsIHZhbHVlcykKKyAgICBzcWxUcmFuc2FjdGlvblN1Y2NlZWRlZCh0cmFuc2Fj
dGlvbklkLCBjb2x1bW5OYW1lcywgdmFsdWVzKQogICAgIHsKICAgICAgICAgaWYgKCFXZWJJbnNw
ZWN0b3IuRGF0YWJhc2VPYnNlcnZlci5fY2FsbGJhY2tzW3RyYW5zYWN0aW9uSWRdKQogICAgICAg
ICAgICAgcmV0dXJuOwpAQCAtNTIsMTAgKzQzLDEwIEBAIFdlYkluc3BlY3Rvci5EYXRhYmFzZU9i
c2VydmVyLnByb3RvdHlwZSA9IHsKIAogICAgICAgICBpZiAoY2FsbGJhY2spCiAgICAgICAgICAg
ICBjYWxsYmFjayhjb2x1bW5OYW1lcywgdmFsdWVzLCBudWxsKTsKLSAgICB9LAorICAgIH0KIAog
ICAgIC8vIENPTVBBVElCSUxJVFkgKGlPUyA2KTogVGhpcyBldmVudCB3YXMgcmVtb3ZlZCBpbiBm
YXZvciBvZiBhIG1vcmUgYXN5bmMgRGF0YWJhc2VBZ2VudC5leGVjdXRlU1FMLgotICAgIHNxbFRy
YW5zYWN0aW9uRmFpbGVkOiBmdW5jdGlvbih0cmFuc2FjdGlvbklkLCBzcWxFcnJvcikKKyAgICBz
cWxUcmFuc2FjdGlvbkZhaWxlZCh0cmFuc2FjdGlvbklkLCBzcWxFcnJvcikKICAgICB7CiAgICAg
ICAgIGlmICghV2ViSW5zcGVjdG9yLkRhdGFiYXNlT2JzZXJ2ZXIuX2NhbGxiYWNrc1t0cmFuc2Fj
dGlvbklkXSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTY4LDQgKzU5LDQgQEAgV2ViSW5zcGVj
dG9yLkRhdGFiYXNlT2JzZXJ2ZXIucHJvdG90eXBlID0gewogICAgIH0KIH07CiAKLVdlYkluc3Bl
Y3Rvci5EYXRhYmFzZU9ic2VydmVyLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3Iu
T2JqZWN0LnByb3RvdHlwZTsKK1dlYkluc3BlY3Rvci5EYXRhYmFzZU9ic2VydmVyLl9jYWxsYmFj
a3MgPSB7fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1Byb3RvY29sL0RlYnVnZ2VyT2JzZXJ2ZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Qcm90b2NvbC9EZWJ1Z2dlck9ic2VydmVyLmpzCmluZGV4IDA2OWU5MGU5MzI3
NTEzMjkwMzhhMDZkYTgwYWZjZDVmYWZhN2MwNDMuLmEwNWM0YTBkOWUwNmY2OGU2ODA1ZTMyODcx
MGYwOGIxMDZmOGViYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1Byb3RvY29sL0RlYnVnZ2VyT2JzZXJ2ZXIuanMKKysrIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvRGVidWdnZXJPYnNlcnZlci5qcwpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsNTYg
KzIzLDQ3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2Vi
SW5zcGVjdG9yLkRlYnVnZ2VyT2JzZXJ2ZXIgPSBmdW5jdGlvbigpCitXZWJJbnNwZWN0b3IuRGVi
dWdnZXJPYnNlcnZlciA9IGNsYXNzIERlYnVnZ2VyT2JzZXJ2ZXIKIHsKLSAgICAvLyBGSVhNRTog
Q29udmVydCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcywgYW5kIGNhbGwg
c3VwZXIoKS4KLSAgICAvLyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7Ci19OwotCi1X
ZWJJbnNwZWN0b3IuRGVidWdnZXJPYnNlcnZlci5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0
b3I6IFdlYkluc3BlY3Rvci5EZWJ1Z2dlck9ic2VydmVyLAotCiAgICAgLy8gRXZlbnRzIGRlZmlu
ZWQgYnkgdGhlICJEZWJ1Z2dlciIgZG9tYWluLgogCi0gICAgZ2xvYmFsT2JqZWN0Q2xlYXJlZDog
ZnVuY3Rpb24oKQorICAgIGdsb2JhbE9iamVjdENsZWFyZWQoKQogICAgIHsKICAgICAgICAgV2Vi
SW5zcGVjdG9yLmRlYnVnZ2VyTWFuYWdlci5yZXNldCgpOwotICAgIH0sCisgICAgfQogCi0gICAg
c2NyaXB0UGFyc2VkOiBmdW5jdGlvbihzY3JpcHRJZCwgdXJsLCBzdGFydExpbmUsIHN0YXJ0Q29s
dW1uLCBlbmRMaW5lLCBlbmRDb2x1bW4sIGlzQ29udGVudFNjcmlwdCwgc291cmNlTWFwVVJMLCBo
YXNTb3VyY2VVUkwpCisgICAgc2NyaXB0UGFyc2VkKHNjcmlwdElkLCB1cmwsIHN0YXJ0TGluZSwg
c3RhcnRDb2x1bW4sIGVuZExpbmUsIGVuZENvbHVtbiwgaXNDb250ZW50U2NyaXB0LCBzb3VyY2VN
YXBVUkwsIGhhc1NvdXJjZVVSTCkKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5kZWJ1Z2dl
ck1hbmFnZXIuc2NyaXB0RGlkUGFyc2Uoc2NyaXB0SWQsIHVybCwgaXNDb250ZW50U2NyaXB0LCBz
dGFydExpbmUsIHN0YXJ0Q29sdW1uLCBlbmRMaW5lLCBlbmRDb2x1bW4sIHNvdXJjZU1hcFVSTCk7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzY3JpcHRGYWlsZWRUb1BhcnNlOiBmdW5jdGlvbih1cmws
IHNjcmlwdFNvdXJjZSwgc3RhcnRMaW5lLCBlcnJvckxpbmUsIGVycm9yTWVzc2FnZSkKKyAgICBz
Y3JpcHRGYWlsZWRUb1BhcnNlKHVybCwgc2NyaXB0U291cmNlLCBzdGFydExpbmUsIGVycm9yTGlu
ZSwgZXJyb3JNZXNzYWdlKQogICAgIHsKICAgICAgICAgLy8gRklYTUU6IE5vdCBpbXBsZW1lbnRl
ZC4KLSAgICB9LAorICAgIH0KIAotICAgIGJyZWFrcG9pbnRSZXNvbHZlZDogZnVuY3Rpb24oYnJl
YWtwb2ludElkLCBsb2NhdGlvbikKKyAgICBicmVha3BvaW50UmVzb2x2ZWQoYnJlYWtwb2ludElk
LCBsb2NhdGlvbikKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1hbmFnZXIu
YnJlYWtwb2ludFJlc29sdmVkKGJyZWFrcG9pbnRJZCwgbG9jYXRpb24pOwotICAgIH0sCisgICAg
fQogCi0gICAgcGF1c2VkOiBmdW5jdGlvbihjYWxsRnJhbWVzLCByZWFzb24sIGRhdGEpCisgICAg
cGF1c2VkKGNhbGxGcmFtZXMsIHJlYXNvbiwgZGF0YSkKICAgICB7CiAgICAgICAgIFdlYkluc3Bl
Y3Rvci5kZWJ1Z2dlck1hbmFnZXIuZGVidWdnZXJEaWRQYXVzZShjYWxsRnJhbWVzLCByZWFzb24s
IGRhdGEpOwotICAgIH0sCisgICAgfQogCi0gICAgcmVzdW1lZDogZnVuY3Rpb24oKQorICAgIHJl
c3VtZWQoKQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTWFuYWdlci5kZWJ1
Z2dlckRpZFJlc3VtZSgpOwotICAgIH0sCisgICAgfQogCi0gICAgcGxheUJyZWFrcG9pbnRBY3Rp
b25Tb3VuZDogZnVuY3Rpb24oYnJlYWtwb2ludEFjdGlvbklkZW50aWZpZXIpCisgICAgcGxheUJy
ZWFrcG9pbnRBY3Rpb25Tb3VuZChicmVha3BvaW50QWN0aW9uSWRlbnRpZmllcikKICAgICB7CiAg
ICAgICAgIFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1hbmFnZXIucGxheUJyZWFrcG9pbnRBY3Rpb25T
b3VuZChicmVha3BvaW50QWN0aW9uSWRlbnRpZmllcik7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBk
aWRTYW1wbGVQcm9iZTogZnVuY3Rpb24oc2FtcGxlKQorICAgIGRpZFNhbXBsZVByb2JlKHNhbXBs
ZSkKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5wcm9iZU1hbmFnZXIuZGlkU2FtcGxlUHJv
YmUoc2FtcGxlKTsKICAgICB9CiB9OwotCi1XZWJJbnNwZWN0b3IuRGVidWdnZXJPYnNlcnZlci5w
cm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9JbnNw
ZWN0b3JCYWNrZW5kLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJv
dG9jb2wvSW5zcGVjdG9yQmFja2VuZC5qcwppbmRleCA2NTgyZjk2NGEyZjk3MzdmNWE5MmE5NGE2
ODFlMjZmNThiMTdkOGVhLi5lN2I4MDdiMzc0NTI2MzkxNTY5MmI3MzU5YjQ5OTI1MzUzZjY1OWQz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2Nv
bC9JbnNwZWN0b3JCYWNrZW5kLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1Byb3RvY29sL0luc3BlY3RvckJhY2tlbmQuanMKQEAgLTMwLDUyICszMCw1MiBAQAog
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KICAqLwogCi1mdW5jdGlvbiBJbnNwZWN0b3JCYWNrZW5kQ2xhc3MoKQor
SW5zcGVjdG9yQmFja2VuZENsYXNzID0gY2xhc3MgSW5zcGVjdG9yQmFja2VuZENsYXNzCiB7Ci0g
ICAgdGhpcy5fbGFzdFNlcXVlbmNlSWQgPSAxOwotICAgIHRoaXMuX3BlbmRpbmdSZXNwb25zZXND
b3VudCA9IDA7Ci0gICAgdGhpcy5fY2FsbGJhY2tEYXRhID0gbmV3IE1hcDsKLSAgICB0aGlzLl9h
Z2VudHMgPSB7fTsKLSAgICB0aGlzLl9kZWZlcnJlZFNjcmlwdHMgPSBbXTsKLQotICAgIHRoaXMu
ZHVtcEluc3BlY3RvclRpbWVTdGF0cyA9IGZhbHNlOwotICAgIHRoaXMuZHVtcEluc3BlY3RvclBy
b3RvY29sTWVzc2FnZXMgPSBmYWxzZTsKLSAgICB0aGlzLndhcm5Gb3JMb25nTWVzc2FnZUhhbmRs
aW5nID0gZmFsc2U7Ci0gICAgdGhpcy5sb25nTWVzc2FnZUhhbmRsaW5nVGhyZXNob2xkID0gMTA7
IC8vIG1pbGxpc2Vjb25kcy4KLX0KKyAgICBjb25zdHJ1Y3RvcigpCisgICAgeworICAgICAgICB0
aGlzLl9sYXN0U2VxdWVuY2VJZCA9IDE7CisgICAgICAgIHRoaXMuX3BlbmRpbmdSZXNwb25zZXND
b3VudCA9IDA7CisgICAgICAgIHRoaXMuX2NhbGxiYWNrRGF0YSA9IG5ldyBNYXA7CisgICAgICAg
IHRoaXMuX2FnZW50cyA9IHt9OworICAgICAgICB0aGlzLl9kZWZlcnJlZFNjcmlwdHMgPSBbXTsK
IAotSW5zcGVjdG9yQmFja2VuZENsYXNzLnByb3RvdHlwZSA9IHsKKyAgICAgICAgdGhpcy5kdW1w
SW5zcGVjdG9yVGltZVN0YXRzID0gZmFsc2U7CisgICAgICAgIHRoaXMuZHVtcEluc3BlY3RvclBy
b3RvY29sTWVzc2FnZXMgPSBmYWxzZTsKKyAgICAgICAgdGhpcy53YXJuRm9yTG9uZ01lc3NhZ2VI
YW5kbGluZyA9IGZhbHNlOworICAgICAgICB0aGlzLmxvbmdNZXNzYWdlSGFuZGxpbmdUaHJlc2hv
bGQgPSAxMDsgLy8gbWlsbGlzZWNvbmRzLgorICAgIH0KIAogICAgIC8vIFB1YmxpYwogCi0gICAg
cmVnaXN0ZXJDb21tYW5kOiBmdW5jdGlvbihxdWFsaWZpZWROYW1lLCBjYWxsU2lnbmF0dXJlLCBy
ZXBseVNpZ25hdHVyZSkKKyAgICByZWdpc3RlckNvbW1hbmQocXVhbGlmaWVkTmFtZSwgY2FsbFNp
Z25hdHVyZSwgcmVwbHlTaWduYXR1cmUpCiAgICAgewogICAgICAgICB2YXIgW2RvbWFpbk5hbWUs
IGNvbW1hbmROYW1lXSA9IHF1YWxpZmllZE5hbWUuc3BsaXQoIi4iKTsKICAgICAgICAgdmFyIGFn
ZW50ID0gdGhpcy5fYWdlbnRGb3JEb21haW4oZG9tYWluTmFtZSk7CiAgICAgICAgIGFnZW50LmFk
ZENvbW1hbmQoSW5zcGVjdG9yQmFja2VuZC5Db21tYW5kLmNyZWF0ZSh0aGlzLCBxdWFsaWZpZWRO
YW1lLCBjYWxsU2lnbmF0dXJlLCByZXBseVNpZ25hdHVyZSkpOwotICAgIH0sCisgICAgfQogCi0g
ICAgcmVnaXN0ZXJFbnVtOiBmdW5jdGlvbihxdWFsaWZpZWROYW1lLCBlbnVtVmFsdWVzKQorICAg
IHJlZ2lzdGVyRW51bShxdWFsaWZpZWROYW1lLCBlbnVtVmFsdWVzKQogICAgIHsKICAgICAgICAg
dmFyIFtkb21haW5OYW1lLCBlbnVtTmFtZV0gPSBxdWFsaWZpZWROYW1lLnNwbGl0KCIuIik7CiAg
ICAgICAgIHZhciBhZ2VudCA9IHRoaXMuX2FnZW50Rm9yRG9tYWluKGRvbWFpbk5hbWUpOwogICAg
ICAgICBhZ2VudC5hZGRFbnVtKGVudW1OYW1lLCBlbnVtVmFsdWVzKTsKLSAgICB9LAorICAgIH0K
IAotICAgIHJlZ2lzdGVyRXZlbnQ6IGZ1bmN0aW9uKHF1YWxpZmllZE5hbWUsIHNpZ25hdHVyZSkK
KyAgICByZWdpc3RlckV2ZW50KHF1YWxpZmllZE5hbWUsIHNpZ25hdHVyZSkKICAgICB7CiAgICAg
ICAgIHZhciBbZG9tYWluTmFtZSwgZXZlbnROYW1lXSA9IHF1YWxpZmllZE5hbWUuc3BsaXQoIi4i
KTsKICAgICAgICAgdmFyIGFnZW50ID0gdGhpcy5fYWdlbnRGb3JEb21haW4oZG9tYWluTmFtZSk7
CiAgICAgICAgIGFnZW50LmFkZEV2ZW50KG5ldyBJbnNwZWN0b3JCYWNrZW5kLkV2ZW50KGV2ZW50
TmFtZSwgc2lnbmF0dXJlKSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICByZWdpc3RlckRvbWFpbkRp
c3BhdGNoZXI6IGZ1bmN0aW9uKGRvbWFpbk5hbWUsIGRpc3BhdGNoZXIpCisgICAgcmVnaXN0ZXJE
b21haW5EaXNwYXRjaGVyKGRvbWFpbk5hbWUsIGRpc3BhdGNoZXIpCiAgICAgewogICAgICAgICB2
YXIgYWdlbnQgPSB0aGlzLl9hZ2VudEZvckRvbWFpbihkb21haW5OYW1lKTsKICAgICAgICAgYWdl
bnQuZGlzcGF0Y2hlciA9IGRpc3BhdGNoZXI7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBkaXNwYXRj
aDogZnVuY3Rpb24obWVzc2FnZSkKKyAgICBkaXNwYXRjaChtZXNzYWdlKQogICAgIHsKICAgICAg
ICAgaWYgKHRoaXMuZHVtcEluc3BlY3RvclByb3RvY29sTWVzc2FnZXMpCiAgICAgICAgICAgICBj
b25zb2xlLmxvZygiYmFja2VuZDogIiArICgodHlwZW9mIG1lc3NhZ2UgPT09ICJzdHJpbmciKSA/
IG1lc3NhZ2UgOiBKU09OLnN0cmluZ2lmeShtZXNzYWdlKSkpOwpAQCAtODYsOSArODYsOSBAQCBJ
bnNwZWN0b3JCYWNrZW5kQ2xhc3MucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5fZGlz
cGF0Y2hDYWxsYmFjayhtZXNzYWdlT2JqZWN0KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAg
dGhpcy5fZGlzcGF0Y2hFdmVudChtZXNzYWdlT2JqZWN0KTsKLSAgICB9LAorICAgIH0KIAotICAg
IHJ1bkFmdGVyUGVuZGluZ0Rpc3BhdGNoZXM6IGZ1bmN0aW9uKHNjcmlwdCkKKyAgICBydW5BZnRl
clBlbmRpbmdEaXNwYXRjaGVzKHNjcmlwdCkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0
KHNjcmlwdCk7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHR5cGVvZiBzY3JpcHQgPT09ICJmdW5j
dGlvbiIpOwpAQCAtOTcsOSArOTcsOSBAQCBJbnNwZWN0b3JCYWNrZW5kQ2xhc3MucHJvdG90eXBl
ID0gewogICAgICAgICAgICAgc2NyaXB0LmNhbGwodGhpcyk7CiAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgIHRoaXMuX2RlZmVycmVkU2NyaXB0cy5wdXNoKHNjcmlwdCk7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBhY3RpdmF0ZURvbWFpbjogZnVuY3Rpb24oZG9tYWluTmFtZSwgYWN0aXZhdGlvbkRl
YnVnZ2FibGVUeXBlKQorICAgIGFjdGl2YXRlRG9tYWluKGRvbWFpbk5hbWUsIGFjdGl2YXRpb25E
ZWJ1Z2dhYmxlVHlwZSkKICAgICB7CiAgICAgICAgIGlmICghYWN0aXZhdGlvbkRlYnVnZ2FibGVU
eXBlIHx8IEluc3BlY3RvckZyb250ZW5kSG9zdC5kZWJ1Z2dhYmxlVHlwZSgpID09PSBhY3RpdmF0
aW9uRGVidWdnYWJsZVR5cGUpIHsKICAgICAgICAgICAgIHZhciBhZ2VudCA9IHRoaXMuX2FnZW50
c1tkb21haW5OYW1lXTsKQEAgLTEwOCwxMSArMTA4LDExIEBAIEluc3BlY3RvckJhY2tlbmRDbGFz
cy5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gbnVsbDsKLSAgICB9
LAorICAgIH0KIAogICAgIC8vIFByaXZhdGUKIAotICAgIF9hZ2VudEZvckRvbWFpbjogZnVuY3Rp
b24oZG9tYWluTmFtZSkKKyAgICBfYWdlbnRGb3JEb21haW4oZG9tYWluTmFtZSkKICAgICB7CiAg
ICAgICAgIGlmICh0aGlzLl9hZ2VudHNbZG9tYWluTmFtZV0pCiAgICAgICAgICAgICByZXR1cm4g
dGhpcy5fYWdlbnRzW2RvbWFpbk5hbWVdOwpAQCAtMTIwLDkgKzEyMCw5IEBAIEluc3BlY3RvckJh
Y2tlbmRDbGFzcy5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBhZ2VudCA9IG5ldyBJbnNwZWN0
b3JCYWNrZW5kLkFnZW50KGRvbWFpbk5hbWUpOwogICAgICAgICB0aGlzLl9hZ2VudHNbZG9tYWlu
TmFtZV0gPSBhZ2VudDsKICAgICAgICAgcmV0dXJuIGFnZW50OwotICAgIH0sCisgICAgfQogCi0g
ICAgX3dpbGxTZW5kTWVzc2FnZVRvQmFja2VuZDogZnVuY3Rpb24oY29tbWFuZCwgY2FsbGJhY2sp
CisgICAgX3dpbGxTZW5kTWVzc2FnZVRvQmFja2VuZChjb21tYW5kLCBjYWxsYmFjaykKICAgICB7
CiAgICAgICAgICsrdGhpcy5fcGVuZGluZ1Jlc3BvbnNlc0NvdW50OwogICAgICAgICB2YXIgc2Vx
dWVuY2VJZCA9IHRoaXMuX2xhc3RTZXF1ZW5jZUlkKys7CkBAIC0xNDAsOSArMTQwLDkgQEAgSW5z
cGVjdG9yQmFja2VuZENsYXNzLnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogCiAgICAgICAgIHJl
dHVybiBzZXF1ZW5jZUlkOwotICAgIH0sCisgICAgfQogCi0gICAgX2Rpc3BhdGNoQ2FsbGJhY2s6
IGZ1bmN0aW9uKG1lc3NhZ2VPYmplY3QpCisgICAgX2Rpc3BhdGNoQ2FsbGJhY2sobWVzc2FnZU9i
amVjdCkKICAgICB7CiAgICAgICAgIC0tdGhpcy5fcGVuZGluZ1Jlc3BvbnNlc0NvdW50OwogICAg
ICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9wZW5kaW5nUmVzcG9uc2VzQ291bnQgPj0gMCk7CkBA
IC0xOTUsOSArMTk1LDkgQEAgSW5zcGVjdG9yQmFja2VuZENsYXNzLnByb3RvdHlwZSA9IHsKIAog
ICAgICAgICBpZiAodGhpcy5fZGVmZXJyZWRTY3JpcHRzLmxlbmd0aCAmJiAhdGhpcy5fcGVuZGlu
Z1Jlc3BvbnNlc0NvdW50KQogICAgICAgICAgICAgdGhpcy5fZmx1c2hQZW5kaW5nU2NyaXB0cygp
OwotICAgIH0sCisgICAgfQogCi0gICAgX2Rpc3BhdGNoRXZlbnQ6IGZ1bmN0aW9uKG1lc3NhZ2VP
YmplY3QpCisgICAgX2Rpc3BhdGNoRXZlbnQobWVzc2FnZU9iamVjdCkKICAgICB7CiAgICAgICAg
IHZhciBxdWFsaWZpZWROYW1lID0gbWVzc2FnZU9iamVjdFsibWV0aG9kIl07CiAgICAgICAgIHZh
ciBbZG9tYWluTmFtZSwgZXZlbnROYW1lXSA9IHF1YWxpZmllZE5hbWUuc3BsaXQoIi4iKTsKQEAg
LTI0MSw5ICsyNDEsOSBAQCBJbnNwZWN0b3JCYWNrZW5kQ2xhc3MucHJvdG90eXBlID0gewogCiAg
ICAgICAgIGlmICh0aGlzLmR1bXBJbnNwZWN0b3JUaW1lU3RhdHMpCiAgICAgICAgICAgICBjb25z
b2xlLmxvZygidGltZS1zdGF0czogSGFuZGxpbmc6ICIgKyBwcm9jZXNzaW5nRHVyYXRpb24gKyAi
bXMgKGV2ZW50ICIgKyBtZXNzYWdlT2JqZWN0WyJtZXRob2QiXSArICIpIik7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBfaW52b2tlQ29tbWFuZDogZnVuY3Rpb24oY29tbWFuZCwgcGFyYW1ldGVycywg
Y2FsbGJhY2spCisgICAgX2ludm9rZUNvbW1hbmQoY29tbWFuZCwgcGFyYW1ldGVycywgY2FsbGJh
Y2spCiAgICAgewogICAgICAgICB2YXIgbWVzc2FnZU9iamVjdCA9IHt9OwogICAgICAgICBtZXNz
YWdlT2JqZWN0WyJtZXRob2QiXSA9IGNvbW1hbmQucXVhbGlmaWVkTmFtZTsKQEAgLTI2MCwxNCAr
MjYwLDE0IEBAIEluc3BlY3RvckJhY2tlbmRDbGFzcy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAg
ICBjb25zb2xlLmxvZygiZnJvbnRlbmQ6ICIgKyBzdHJpbmdpZmllZE1lc3NhZ2UpOwogCiAgICAg
ICAgIEluc3BlY3RvckZyb250ZW5kSG9zdC5zZW5kTWVzc2FnZVRvQmFja2VuZChzdHJpbmdpZmll
ZE1lc3NhZ2UpOwotICAgIH0sCisgICAgfQogCi0gICAgX3JlcG9ydFByb3RvY29sRXJyb3I6IGZ1
bmN0aW9uKG1lc3NhZ2VPYmplY3QpCisgICAgX3JlcG9ydFByb3RvY29sRXJyb3IobWVzc2FnZU9i
amVjdCkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuZXJyb3IoIlJlcXVlc3Qgd2l0aCBpZCA9ICIg
KyBtZXNzYWdlT2JqZWN0WyJpZCJdICsgIiBmYWlsZWQuICIgKyBKU09OLnN0cmluZ2lmeShtZXNz
YWdlT2JqZWN0WyJlcnJvciJdKSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZmx1c2hQZW5kaW5n
U2NyaXB0czogZnVuY3Rpb24oKQorICAgIF9mbHVzaFBlbmRpbmdTY3JpcHRzKCkKICAgICB7CiAg
ICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlzLl9wZW5kaW5nUmVzcG9uc2VzQ291bnQpOwogCkBA
IC0yNzYsNzEgKzI3Niw3NCBAQCBJbnNwZWN0b3JCYWNrZW5kQ2xhc3MucHJvdG90eXBlID0gewog
ICAgICAgICBmb3IgKHZhciBzY3JpcHQgb2Ygc2NyaXB0c1RvUnVuKQogICAgICAgICAgICAgc2Ny
aXB0LmNhbGwodGhpcyk7CiAgICAgfQotfQorfTsKIAotSW5zcGVjdG9yQmFja2VuZCA9IG5ldyBJ
bnNwZWN0b3JCYWNrZW5kQ2xhc3MoKTsKK0luc3BlY3RvckJhY2tlbmQgPSBuZXcgSW5zcGVjdG9y
QmFja2VuZENsYXNzOwogCi1JbnNwZWN0b3JCYWNrZW5kLkFnZW50ID0gZnVuY3Rpb24oZG9tYWlu
TmFtZSkKK0luc3BlY3RvckJhY2tlbmQuQWdlbnQgPSBjbGFzcyBJbnNwZWN0b3JCYWNrZW5kQWdl
bnQKIHsKLSAgICB0aGlzLl9kb21haW5OYW1lID0gZG9tYWluTmFtZTsKKyAgICBjb25zdHJ1Y3Rv
cihkb21haW5OYW1lKQorICAgIHsKKyAgICAgICAgdGhpcy5fZG9tYWluTmFtZSA9IGRvbWFpbk5h
bWU7CiAKLSAgICAvLyBBZ2VudHMgYXJlIGFsd2F5cyBjcmVhdGVkLCBidXQgYXJlIG9ubHkgdXNl
YWJsZSBhZnRlciB0aGV5IGFyZSBhY3RpdmF0ZWQuCi0gICAgdGhpcy5fYWN0aXZlID0gZmFsc2U7
CisgICAgICAgIC8vIEFnZW50cyBhcmUgYWx3YXlzIGNyZWF0ZWQsIGJ1dCBhcmUgb25seSB1c2Vh
YmxlIGFmdGVyIHRoZXkgYXJlIGFjdGl2YXRlZC4KKyAgICAgICAgdGhpcy5fYWN0aXZlID0gZmFs
c2U7CisKKyAgICAgICAgLy8gQ29tbWFuZHMgYXJlIHN0b3JlZCBkaXJlY3RseSBvbiB0aGUgQWdl
bnQgaW5zdGFuY2UgdXNpbmcgdGhlaXIgdW5xdWFsaWZpZWQKKyAgICAgICAgLy8gbWV0aG9kIG5h
bWUgYXMgdGhlIHByb3BlcnR5LiBUaHVzLCBjYWxsZXJzIGNhbiB3cml0ZTogRm9vQWdlbnQubWV0
aG9kTmFtZSgpLgorICAgICAgICAvLyBFbnVtcyBhcmUgc3RvcmVkIHNpbWlsYXJseSBiYXNlZCBv
biB0aGUgdW5xdWFsaWZpZWQgdHlwZSBuYW1lLgorICAgICAgICB0aGlzLl9ldmVudHMgPSB7fTsK
KyAgICB9CiAKLSAgICAvLyBDb21tYW5kcyBhcmUgc3RvcmVkIGRpcmVjdGx5IG9uIHRoZSBBZ2Vu
dCBpbnN0YW5jZSB1c2luZyB0aGVpciB1bnF1YWxpZmllZAotICAgIC8vIG1ldGhvZCBuYW1lIGFz
IHRoZSBwcm9wZXJ0eS4gVGh1cywgY2FsbGVycyBjYW4gd3JpdGU6IEZvb0FnZW50Lm1ldGhvZE5h
bWUoKS4KLSAgICAvLyBFbnVtcyBhcmUgc3RvcmVkIHNpbWlsYXJseSBiYXNlZCBvbiB0aGUgdW5x
dWFsaWZpZWQgdHlwZSBuYW1lLgotICAgIHRoaXMuX2V2ZW50cyA9IHt9OwotfQorICAgIC8vIFB1
YmxpYwogCi1JbnNwZWN0b3JCYWNrZW5kLkFnZW50LnByb3RvdHlwZSA9IHsKICAgICBnZXQgZG9t
YWluTmFtZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZG9tYWluTmFtZTsKLSAgICB9
LAorICAgIH0KIAogICAgIGdldCBhY3RpdmUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMu
X2FjdGl2ZTsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCBkaXNwYXRjaGVyKHZhbHVlKQogICAg
IHsKICAgICAgICAgdGhpcy5fZGlzcGF0Y2hlciA9IHZhbHVlOwotICAgIH0sCisgICAgfQogCi0g
ICAgYWRkRW51bTogZnVuY3Rpb24oZW51bU5hbWUsIGVudW1WYWx1ZXMpCisgICAgYWRkRW51bShl
bnVtTmFtZSwgZW51bVZhbHVlcykKICAgICB7CiAgICAgICAgIHRoaXNbZW51bU5hbWVdID0gZW51
bVZhbHVlczsKLSAgICB9LAorICAgIH0KIAotICAgIGFkZENvbW1hbmQ6IGZ1bmN0aW9uKGNvbW1h
bmQpCisgICAgYWRkQ29tbWFuZChjb21tYW5kKQogICAgIHsKICAgICAgICAgdGhpc1tjb21tYW5k
LmNvbW1hbmROYW1lXSA9IGNvbW1hbmQ7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBhZGRFdmVudDog
ZnVuY3Rpb24oZXZlbnQpCisgICAgYWRkRXZlbnQoZXZlbnQpCiAgICAgewogICAgICAgICB0aGlz
Ll9ldmVudHNbZXZlbnQuZXZlbnROYW1lXSA9IGV2ZW50OwotICAgIH0sCisgICAgfQogCi0gICAg
Z2V0RXZlbnQ6IGZ1bmN0aW9uKGV2ZW50TmFtZSkKKyAgICBnZXRFdmVudChldmVudE5hbWUpCiAg
ICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZXZlbnRzW2V2ZW50TmFtZV07Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBoYXNFdmVudDogZnVuY3Rpb24oZXZlbnROYW1lKQorICAgIGhhc0V2ZW50KGV2
ZW50TmFtZSkKICAgICB7CiAgICAgICAgIHJldHVybiBldmVudE5hbWUgaW4gdGhpcy5fZXZlbnRz
OwotICAgIH0sCisgICAgfQogCi0gICAgYWN0aXZhdGU6IGZ1bmN0aW9uKCkKKyAgICBhY3RpdmF0
ZSgpCiAgICAgewogICAgICAgICB0aGlzLl9hY3RpdmUgPSB0cnVlOwogICAgICAgICB3aW5kb3db
dGhpcy5fZG9tYWluTmFtZSArICJBZ2VudCJdID0gdGhpczsKLSAgICB9LAorICAgIH0KIAotICAg
IGRpc3BhdGNoRXZlbnQ6IGZ1bmN0aW9uKGV2ZW50TmFtZSwgZXZlbnRBcmd1bWVudHMpCisgICAg
ZGlzcGF0Y2hFdmVudChldmVudE5hbWUsIGV2ZW50QXJndW1lbnRzKQogICAgIHsKICAgICAgICAg
aWYgKCEoZXZlbnROYW1lIGluIHRoaXMuX2Rpc3BhdGNoZXIpKSB7CiAgICAgICAgICAgICBjb25z
b2xlLmVycm9yKCJQcm90b2NvbCBFcnJvcjogQXR0ZW1wdGVkIHRvIGRpc3BhdGNoIGFuIHVuaW1w
bGVtZW50ZWQgbWV0aG9kICciICsgdGhpcy5fZG9tYWluTmFtZSArICIuIiArIGV2ZW50TmFtZSAr
ICInIik7CkBAIC0zNTAsMTAgKzM1MywxNCBAQCBJbnNwZWN0b3JCYWNrZW5kLkFnZW50LnByb3Rv
dHlwZSA9IHsKICAgICAgICAgdGhpcy5fZGlzcGF0Y2hlcltldmVudE5hbWVdLmFwcGx5KHRoaXMu
X2Rpc3BhdGNoZXIsIGV2ZW50QXJndW1lbnRzKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQotfQorfTsKIAorLy8gSW5zcGVjdG9yQmFja2VuZC5Db21tYW5kIGNhbid0IHVzZSBFUzYgY2xh
c3NlcyBiZWNhdXNlIG9mIGl0cyB0cmFtcG9saW5lIG5hdHVyZS4KKy8vIEJ1dCB3ZSBjYW4gdXNl
IHN0cmljdCBtb2RlIHRvIGdldCBzdHJpY3RlciBoYW5kbGluZyBvZiB0aGUgY29kZSBpbnNpZGUg
aXRzIGZ1bmN0aW9ucy4KIEluc3BlY3RvckJhY2tlbmQuQ29tbWFuZCA9IGZ1bmN0aW9uKGJhY2tl
bmQsIHF1YWxpZmllZE5hbWUsIGNhbGxTaWduYXR1cmUsIHJlcGx5U2lnbmF0dXJlKQogeworICAg
ICd1c2Ugc3RyaWN0JzsKKwogICAgIHRoaXMuX2JhY2tlbmQgPSBiYWNrZW5kOwogICAgIHRoaXMu
X2luc3RhbmNlID0gdGhpczsKIApAQCAtMzYyLDIzICszNjksMjYgQEAgSW5zcGVjdG9yQmFja2Vu
ZC5Db21tYW5kID0gZnVuY3Rpb24oYmFja2VuZCwgcXVhbGlmaWVkTmFtZSwgY2FsbFNpZ25hdHVy
ZSwgcmVwbHkKICAgICB0aGlzLl9jb21tYW5kTmFtZSA9IGNvbW1hbmROYW1lOwogICAgIHRoaXMu
X2NhbGxTaWduYXR1cmUgPSBjYWxsU2lnbmF0dXJlIHx8IFtdOwogICAgIHRoaXMuX3JlcGx5U2ln
bmF0dXJlID0gcmVwbHlTaWduYXR1cmUgfHwgW107Ci19Cit9OwogCiBJbnNwZWN0b3JCYWNrZW5k
LkNvbW1hbmQuY3JlYXRlID0gZnVuY3Rpb24oYmFja2VuZCwgY29tbWFuZE5hbWUsIGNhbGxTaWdu
YXR1cmUsIHJlcGx5U2lnbmF0dXJlKQogeworICAgICd1c2Ugc3RyaWN0JzsKKwogICAgIHZhciBp
bnN0YW5jZSA9IG5ldyBJbnNwZWN0b3JCYWNrZW5kLkNvbW1hbmQoYmFja2VuZCwgY29tbWFuZE5h
bWUsIGNhbGxTaWduYXR1cmUsIHJlcGx5U2lnbmF0dXJlKTsKIAogICAgIGZ1bmN0aW9uIGNhbGxh
YmxlKCkgewogICAgICAgICAvLyBJZiB0aGUgbGFzdCBhcmd1bWVudCB0byB0aGUgY29tbWFuZCBp
cyBub3QgYSBmdW5jdGlvbiwgcmV0dXJuIGEgcmVzdWx0IHByb21pc2UuCiAgICAgICAgIGlmICgh
YXJndW1lbnRzLmxlbmd0aCB8fCB0eXBlb2YgYXJndW1lbnRzW2FyZ3VtZW50cy5sZW5ndGggLSAx
XSAhPT0gImZ1bmN0aW9uIikKICAgICAgICAgICAgIHJldHVybiBpbnN0YW5jZS5wcm9taXNlLmFw
cGx5KGluc3RhbmNlLCBhcmd1bWVudHMpOwotCiAgICAgICAgIHJldHVybiBpbnN0YW5jZS5faW52
b2tlV2l0aEFyZ3VtZW50cy5hcHBseShpbnN0YW5jZSwgYXJndW1lbnRzKTsKICAgICB9CisKICAg
ICBjYWxsYWJsZS5faW5zdGFuY2UgPSBpbnN0YW5jZTsKICAgICBjYWxsYWJsZS5fX3Byb3RvX18g
PSBJbnNwZWN0b3JCYWNrZW5kLkNvbW1hbmQucHJvdG90eXBlOworCiAgICAgcmV0dXJuIGNhbGxh
YmxlOwotfQorfTsKIAogLy8gQXMgcGFydCBvZiB0aGUgd29ya2Fyb3VuZCB0byBtYWtlIGNvbW1h
bmRzIGNhbGxhYmxlLCB0aGVzZSBmdW5jdGlvbnMgdXNlIHx0aGlzLl9pbnN0YW5jZXwuCiAvLyB8
dGhpc3wgY291bGQgcmVmZXIgdG8gdGhlIGNhbGxhYmxlIHRyYW1wb2xpbmUsIG9yIHRoZSBJbnNw
ZWN0b3JCYWNrZW5kLkNvbW1hbmQgaW5zdGFuY2UuCkBAIC00MDksMTggKzQxOSwyMyBAQCBJbnNw
ZWN0b3JCYWNrZW5kLkNvbW1hbmQucHJvdG90eXBlID0gewogCiAgICAgaW52b2tlOiBmdW5jdGlv
bihjb21tYW5kQXJndW1lbnRzLCBjYWxsYmFjaykKICAgICB7CisgICAgICAgICd1c2Ugc3RyaWN0
JzsKKwogICAgICAgICB2YXIgaW5zdGFuY2UgPSB0aGlzLl9pbnN0YW5jZTsKICAgICAgICAgaW5z
dGFuY2UuX2JhY2tlbmQuX2ludm9rZUNvbW1hbmQoaW5zdGFuY2UsIGNvbW1hbmRBcmd1bWVudHMs
IGNhbGxiYWNrKTsKICAgICB9LAogCiAgICAgcHJvbWlzZTogZnVuY3Rpb24oKQogICAgIHsKKyAg
ICAgICAgJ3VzZSBzdHJpY3QnOworCiAgICAgICAgIHZhciBpbnN0YW5jZSA9IHRoaXMuX2luc3Rh
bmNlOwogICAgICAgICB2YXIgcHJvbWlzZUFyZ3VtZW50cyA9IEFycmF5LmZyb20oYXJndW1lbnRz
KTsKICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkg
ewogICAgICAgICAgICAgZnVuY3Rpb24gY29udmVydFRvUHJvbWlzZUNhbGxiYWNrKGVycm9yLCBw
YXlsb2FkKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yID8gcmVqZWN0KGVycm9yKSA6
IHJlc29sdmUocGF5bG9hZCk7CiAgICAgICAgICAgICB9CisKICAgICAgICAgICAgIC8vIEZJWE1F
OiB0aGlzIHNob3VsZCBiZSBpbmRpY2F0ZWQgYnkgaW52b2tpbmcgdGhlIGNvbW1hbmQgZGlmZmVy
ZW50bHksIHJhdGhlcgogICAgICAgICAgICAgLy8gdGhhbiBieSBzZXR0aW5nIGEgbWFnaWNhbCBw
cm9wZXJ0eSBvbiB0aGUgY2FsbGJhY2suIDx3ZWJraXQub3JnL2IvMTMyMzg2PgogICAgICAgICAg
ICAgY29udmVydFRvUHJvbWlzZUNhbGxiYWNrLmV4cGVjdHNSZXN1bHRPYmplY3QgPSB0cnVlOwpA
QCAtNDMyLDYgKzQ0Nyw4IEBAIEluc3BlY3RvckJhY2tlbmQuQ29tbWFuZC5wcm90b3R5cGUgPSB7
CiAKICAgICBzdXBwb3J0czogZnVuY3Rpb24ocGFyYW1ldGVyTmFtZSkKICAgICB7CisgICAgICAg
ICd1c2Ugc3RyaWN0JzsKKwogICAgICAgICB2YXIgaW5zdGFuY2UgPSB0aGlzLl9pbnN0YW5jZTsK
ICAgICAgICAgcmV0dXJuIGluc3RhbmNlLmNhbGxTaWduYXR1cmUuc29tZShmdW5jdGlvbihwYXJh
bWV0ZXIpIHsKICAgICAgICAgICAgIHJldHVybiBwYXJhbWV0ZXJbIm5hbWUiXSA9PT0gcGFyYW1l
dGVyTmFtZTsKQEAgLTQ0Miw2ICs0NTksOCBAQCBJbnNwZWN0b3JCYWNrZW5kLkNvbW1hbmQucHJv
dG90eXBlID0gewogCiAgICAgX2ludm9rZVdpdGhBcmd1bWVudHM6IGZ1bmN0aW9uKCkKICAgICB7
CisgICAgICAgICd1c2Ugc3RyaWN0JzsKKwogICAgICAgICB2YXIgaW5zdGFuY2UgPSB0aGlzLl9p
bnN0YW5jZTsKICAgICAgICAgdmFyIGNvbW1hbmRBcmd1bWVudHMgPSBBcnJheS5mcm9tKGFyZ3Vt
ZW50cyk7CiAgICAgICAgIHZhciBjYWxsYmFjayA9IHR5cGVvZiBjb21tYW5kQXJndW1lbnRzLmxh
c3RWYWx1ZSA9PT0gImZ1bmN0aW9uIiA/IGNvbW1hbmRBcmd1bWVudHMucG9wKCkgOiBudWxsOwpA
QCAtNDc4LDExICs0OTcsMTQgQEAgSW5zcGVjdG9yQmFja2VuZC5Db21tYW5kLnByb3RvdHlwZSA9
IHsKICAgICAgICAgfQogCiAgICAgICAgIGluc3RhbmNlLl9iYWNrZW5kLl9pbnZva2VDb21tYW5k
KGluc3RhbmNlLCBPYmplY3Qua2V5cyhwYXJhbWV0ZXJzKS5sZW5ndGggPyBwYXJhbWV0ZXJzIDog
bnVsbCwgY2FsbGJhY2spOwotICAgIH0sCi19CisgICAgfQorfTsKIAotSW5zcGVjdG9yQmFja2Vu
ZC5FdmVudCA9IGZ1bmN0aW9uKGV2ZW50TmFtZSwgcGFyYW1ldGVyTmFtZXMpCitJbnNwZWN0b3JC
YWNrZW5kLkV2ZW50ID0gY2xhc3MgRXZlbnQKIHsKLSAgICB0aGlzLmV2ZW50TmFtZSA9IGV2ZW50
TmFtZTsKLSAgICB0aGlzLnBhcmFtZXRlck5hbWVzID0gcGFyYW1ldGVyTmFtZXM7Ci19CisgICAg
Y29uc3RydWN0b3IoZXZlbnROYW1lLCBwYXJhbWV0ZXJOYW1lcykKKyAgICB7CisgICAgICAgIHRo
aXMuZXZlbnROYW1lID0gZXZlbnROYW1lOworICAgICAgICB0aGlzLnBhcmFtZXRlck5hbWVzID0g
cGFyYW1ldGVyTmFtZXM7CisgICAgfQorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0luc3BlY3Rvck9ic2VydmVyLmpzIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvSW5zcGVjdG9yT2JzZXJ2ZXIu
anMKaW5kZXggODQ5MTc1NzVlNTAyMmY2OTNiMmQ0NjU1NTc3YjQ4ZDJiNTg5N2I0Yy4uOGJkYWRi
N2VkZTlhOGU2YmQ0ZWIzOGJiYmQ0OGMyMTEwOWYwNDgwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvSW5zcGVjdG9yT2JzZXJ2ZXIuanMK
KysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvSW5zcGVj
dG9yT2JzZXJ2ZXIuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEz
LCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMy0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsMTggKzIzLDExIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkluc3BlY3Rvck9ic2VydmVyID0g
ZnVuY3Rpb24oKQorV2ViSW5zcGVjdG9yLkluc3BlY3Rvck9ic2VydmVyID0gY2xhc3MgSW5zcGVj
dG9yT2JzZXJ2ZXIKIHsKLSAgICAvLyBGSVhNRTogQ29udmVydCB0aGlzIHRvIGEgV2ViSW5zcGVj
dG9yLk9iamVjdCBzdWJjbGFzcywgYW5kIGNhbGwgc3VwZXIoKS4KLSAgICAvLyBXZWJJbnNwZWN0
b3IuT2JqZWN0LmNhbGwodGhpcyk7Ci19OwotCi1XZWJJbnNwZWN0b3IuSW5zcGVjdG9yT2JzZXJ2
ZXIucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuSW5zcGVjdG9y
T2JzZXJ2ZXIsCi0KICAgICAvLyBFdmVudHMgZGVmaW5lZCBieSB0aGUgIkluc3BlY3RvciIgZG9t
YWluLgogCi0gICAgZXZhbHVhdGVGb3JUZXN0SW5Gcm9udGVuZDogZnVuY3Rpb24oc2NyaXB0KQor
ICAgIGV2YWx1YXRlRm9yVGVzdEluRnJvbnRlbmQoc2NyaXB0KQogICAgIHsKICAgICAgICAgaWYg
KCFJbnNwZWN0b3JGcm9udGVuZEhvc3QuaXNVbmRlclRlc3QoKSkKICAgICAgICAgICAgIHJldHVy
bjsKQEAgLTQyLDkgKzM1LDkgQEAgV2ViSW5zcGVjdG9yLkluc3BlY3Rvck9ic2VydmVyLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5ydW5BZnRlclBlbmRpbmdEaXNwYXRj
aGVzKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgd2luZG93LmV2YWwoc2NyaXB0KTsKICAgICAg
ICAgfSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBpbnNwZWN0OiBmdW5jdGlvbihwYXlsb2FkLCBo
aW50cykKKyAgICBpbnNwZWN0KHBheWxvYWQsIGhpbnRzKQogICAgIHsKICAgICAgICAgdmFyIHJl
bW90ZU9iamVjdCA9IFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QuZnJvbVBheWxvYWQocGF5bG9h
ZCk7CiAgICAgICAgIGlmIChyZW1vdGVPYmplY3Quc3VidHlwZSA9PT0gIm5vZGUiKSB7CkBAIC02
MSwxNyArNTQsMTUgQEAgV2ViSW5zcGVjdG9yLkluc3BlY3Rvck9ic2VydmVyLnByb3RvdHlwZSA9
IHsKICAgICAgICAgV2ViSW5zcGVjdG9yLm5hdmlnYXRpb25TaWRlYmFyLnNlbGVjdGVkU2lkZWJh
clBhbmVsID0gV2ViSW5zcGVjdG9yLnJlc291cmNlU2lkZWJhclBhbmVsOwogCiAgICAgICAgIHJl
bW90ZU9iamVjdC5yZWxlYXNlKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBkZXRhY2hlZDogZnVu
Y3Rpb24ocmVhc29uKQorICAgIGRldGFjaGVkKHJlYXNvbikKICAgICB7CiAgICAgICAgIC8vIEZJ
WE1FOiBOb3QgaW1wbGVtZW50ZWQuCi0gICAgfSwKKyAgICB9CiAKLSAgICBhY3RpdmF0ZUV4dHJh
RG9tYWluczogZnVuY3Rpb24oZG9tYWlucykKKyAgICBhY3RpdmF0ZUV4dHJhRG9tYWlucyhkb21h
aW5zKQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLmFjdGl2YXRlRXh0cmFEb21haW5zKGRv
bWFpbnMpOwogICAgIH0KIH07Ci0KLVdlYkluc3BlY3Rvci5JbnNwZWN0b3JPYnNlcnZlci5wcm90
b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9MYXllclRy
ZWVPYnNlcnZlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3Rv
Y29sL0xheWVyVHJlZU9ic2VydmVyLmpzCmluZGV4IDU1Y2I5MGUwMWZmOWUzMDI0MTNjY2JmNzlj
YWE4MGI0ZGYyMTE1MWUuLjBhYzY3MWJkZDI2ZGFjYThkYjQ0OTA5M2M1M2Q3ZTkxYjk2OTQyMGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29s
L0xheWVyVHJlZU9ic2VydmVyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1Byb3RvY29sL0xheWVyVHJlZU9ic2VydmVyLmpzCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNywyOCArMTcsMTkgQEAKICAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKICAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCiAgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9kRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KICAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCiAgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAot
V2ViSW5zcGVjdG9yLkxheWVyVHJlZU9ic2VydmVyID0gZnVuY3Rpb24oKQorV2ViSW5zcGVjdG9y
LkxheWVyVHJlZU9ic2VydmVyID0gY2xhc3MgTGF5ZXJUcmVlT2JzZXJ2ZXIKIHsKLSAgICAvLyBG
SVhNRTogQ29udmVydCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcywgYW5k
IGNhbGwgc3VwZXIoKS4KLSAgICAvLyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7Ci19
OwotCi1XZWJJbnNwZWN0b3IuTGF5ZXJUcmVlT2JzZXJ2ZXIucHJvdG90eXBlID0gewotICAgIGNv
bnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuTGF5ZXJUcmVlT2JzZXJ2ZXIsCi0KICAgICAvLyBFdmVu
dHMgZGVmaW5lZCBieSB0aGUgIkxheWVyVHJlZSIgZG9tYWluLgogCi0gICAgbGF5ZXJUcmVlRGlk
Q2hhbmdlOiBmdW5jdGlvbigpCisgICAgbGF5ZXJUcmVlRGlkQ2hhbmdlKCkKICAgICB7CiAgICAg
ICAgIGlmIChXZWJJbnNwZWN0b3IubGF5ZXJUcmVlTWFuYWdlci5zdXBwb3J0ZWQpCiAgICAgICAg
ICAgICBXZWJJbnNwZWN0b3IubGF5ZXJUcmVlTWFuYWdlci5sYXllclRyZWVEaWRDaGFuZ2UoKTsK
ICAgICB9CiB9OwotCi1XZWJJbnNwZWN0b3IuTGF5ZXJUcmVlT2JzZXJ2ZXIucHJvdG90eXBlLl9f
cHJvdG9fXyA9IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvTWVzc2FnZURpc3BhdGNo
ZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9NZXNz
YWdlRGlzcGF0Y2hlci5qcwppbmRleCAxMWM4ZjY3MDZjNjUyOGE1ZTBhMzQ1ZWI0NjgwYzYzNDk0
N2FhY2ZjLi40OWFjZjAwNTIyM2U0NDFlNWJlOThkNjA0ZjhiYWU5ZmQwNDdiOGMyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9NZXNzYWdl
RGlzcGF0Y2hlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Q
cm90b2NvbC9NZXNzYWdlRGlzcGF0Y2hlci5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENv
cHlyaWdodCAoQykgMjAxNCBVbml2ZXJzaXR5IG9mIFdhc2hpbmd0b24KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKQEAgLTI0LDM0ICsyNCwzNCBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogICovCiAKLVdlYkluc3BlY3Rvci5tZXNzYWdlc1RvRGlzcGF0Y2ggPSBbXTsKK1dlYkluc3Bl
Y3Rvci5fbWVzc2FnZXNUb0Rpc3BhdGNoID0gW107CiAKIFdlYkluc3BlY3Rvci5kaXNwYXRjaE5l
eHRRdWV1ZWRNZXNzYWdlRnJvbUJhY2tlbmQgPSBmdW5jdGlvbigpCiB7Ci0gICAgdmFyIHN0YXJ0
Q291bnQgPSBXZWJJbnNwZWN0b3IubWVzc2FnZXNUb0Rpc3BhdGNoLmxlbmd0aDsKKyAgICB2YXIg
c3RhcnRDb3VudCA9IFdlYkluc3BlY3Rvci5fbWVzc2FnZXNUb0Rpc3BhdGNoLmxlbmd0aDsKICAg
ICB2YXIgc3RhcnRUaW1lID0gRGF0ZS5ub3coKTsKICAgICB2YXIgdGltZUxpbWl0UGVyUnVuTG9v
cCA9IDEwOyAvLyBtaWxsaXNlY29uZHMKIAogICAgIHZhciBpID0gMDsKLSAgICBmb3IgKDsgaSA8
IFdlYkluc3BlY3Rvci5tZXNzYWdlc1RvRGlzcGF0Y2gubGVuZ3RoOyArK2kpIHsKKyAgICBmb3Ig
KDsgaSA8IFdlYkluc3BlY3Rvci5fbWVzc2FnZXNUb0Rpc3BhdGNoLmxlbmd0aDsgKytpKSB7CiAg
ICAgICAgIC8vIERlZmVyIHJlbWFpbmluZyBtZXNzYWdlcyBpZiB3ZSBoYXZlIHRha2VuIHRvbyBs
b25nLiBJbiBwcmFjdGljZSwgc2luZ2xlCiAgICAgICAgIC8vIG1lc3NhZ2VzIGxpa2UgUGFnZS5n
ZXRSZXNvdXJjZUNvbnRlbnQgYmxvdyB0aHJvdWdoIHRoZSB0aW1lIGJ1ZGdldC4KICAgICAgICAg
aWYgKERhdGUubm93KCkgLSBzdGFydFRpbWUgPiB0aW1lTGltaXRQZXJSdW5Mb29wKQogICAgICAg
ICAgICAgYnJlYWs7CiAKLSAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5kaXNwYXRjaChXZWJJbnNw
ZWN0b3IubWVzc2FnZXNUb0Rpc3BhdGNoW2ldKTsKKyAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5k
aXNwYXRjaChXZWJJbnNwZWN0b3IuX21lc3NhZ2VzVG9EaXNwYXRjaFtpXSk7CiAgICAgfQogCi0g
ICAgaWYgKGkgPT09IFdlYkluc3BlY3Rvci5tZXNzYWdlc1RvRGlzcGF0Y2gubGVuZ3RoKSB7Ci0g
ICAgICAgIFdlYkluc3BlY3Rvci5tZXNzYWdlc1RvRGlzcGF0Y2ggPSBbXTsKKyAgICBpZiAoaSA9
PT0gV2ViSW5zcGVjdG9yLl9tZXNzYWdlc1RvRGlzcGF0Y2gubGVuZ3RoKSB7CisgICAgICAgIFdl
Ykluc3BlY3Rvci5fbWVzc2FnZXNUb0Rpc3BhdGNoID0gW107CiAgICAgICAgIFdlYkluc3BlY3Rv
ci5fZGlzcGF0Y2hUaW1lb3V0ID0gbnVsbDsKICAgICB9IGVsc2UgewotICAgICAgICBXZWJJbnNw
ZWN0b3IubWVzc2FnZXNUb0Rpc3BhdGNoID0gV2ViSW5zcGVjdG9yLm1lc3NhZ2VzVG9EaXNwYXRj
aC5zbGljZShpKTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLl9tZXNzYWdlc1RvRGlzcGF0Y2ggPSBX
ZWJJbnNwZWN0b3IuX21lc3NhZ2VzVG9EaXNwYXRjaC5zbGljZShpKTsKICAgICAgICAgV2ViSW5z
cGVjdG9yLl9kaXNwYXRjaFRpbWVvdXQgPSBzZXRUaW1lb3V0KFdlYkluc3BlY3Rvci5kaXNwYXRj
aE5leHRRdWV1ZWRNZXNzYWdlRnJvbUJhY2tlbmQsIDApOwogICAgIH0KIAogICAgIGlmIChJbnNw
ZWN0b3JCYWNrZW5kLmR1bXBJbnNwZWN0b3JUaW1lU3RhdHMpCi0gICAgICAgIGNvbnNvbGUubG9n
KCJ0aW1lLXN0YXRzOiAtLS0gUnVuTG9vcCBkdXJhdGlvbjogIiArIChEYXRlLm5vdygpIC0gc3Rh
cnRUaW1lKSArICJtczsgZGlzcGF0Y2hlZDogIiArIChzdGFydENvdW50IC0gV2ViSW5zcGVjdG9y
Lm1lc3NhZ2VzVG9EaXNwYXRjaC5sZW5ndGgpICsgIjsgcmVtYWluaW5nOiAiICsgV2ViSW5zcGVj
dG9yLm1lc3NhZ2VzVG9EaXNwYXRjaC5sZW5ndGgpOworICAgICAgICBjb25zb2xlLmxvZygidGlt
ZS1zdGF0czogLS0tIFJ1bkxvb3AgZHVyYXRpb246ICIgKyAoRGF0ZS5ub3coKSAtIHN0YXJ0VGlt
ZSkgKyAibXM7IGRpc3BhdGNoZWQ6ICIgKyAoc3RhcnRDb3VudCAtIFdlYkluc3BlY3Rvci5fbWVz
c2FnZXNUb0Rpc3BhdGNoLmxlbmd0aCkgKyAiOyByZW1haW5pbmc6ICIgKyBXZWJJbnNwZWN0b3Iu
X21lc3NhZ2VzVG9EaXNwYXRjaC5sZW5ndGgpOwogfTsKIAogV2ViSW5zcGVjdG9yLmRpc3BhdGNo
TWVzc2FnZUZyb21CYWNrZW5kID0gZnVuY3Rpb24obWVzc2FnZSkKQEAgLTU5LDcgKzU5LDcgQEAg
V2ViSW5zcGVjdG9yLmRpc3BhdGNoTWVzc2FnZUZyb21CYWNrZW5kID0gZnVuY3Rpb24obWVzc2Fn
ZSkKICAgICAvLyBFbmZvcmNlIGFzeW5jaHJvbm91cyBpbnRlcmFjdGlvbiBiZXR3ZWVuIHRoZSBi
YWNrZW5kIGFuZCB0aGUgZnJvbnRlbmQgYnkgcXVldWVpbmcgbWVzc2FnZXMuCiAgICAgLy8gVGhl
IG1lc3NhZ2VzIGFyZSBkZXF1ZXVlZCBvbiBhIHplcm8gZGVsYXkgdGltZW91dC4KIAotICAgIHRo
aXMubWVzc2FnZXNUb0Rpc3BhdGNoLnB1c2gobWVzc2FnZSk7CisgICAgV2ViSW5zcGVjdG9yLl9t
ZXNzYWdlc1RvRGlzcGF0Y2gucHVzaChtZXNzYWdlKTsKIAogICAgIGlmICh0aGlzLl9kaXNwYXRj
aFRpbWVvdXQpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL05ldHdvcmtPYnNlcnZlci5qcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL05ldHdvcmtPYnNlcnZlci5qcwpp
bmRleCA4ZGI5MGViNTc4MWViNzM3MzNmMDUyYjU5MGI0MmY1ZWRiYmJjYWI1Li44YWRjYjZlZDVm
NmMxYjNiMWZhZjc2Mzk0MTUyZWMwYTUyZjM0NjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9OZXR3b3JrT2JzZXJ2ZXIuanMKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvTmV0d29ya09ic2Vy
dmVyLmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0yMyw4NiArMjMsNzcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KICAqLwogCi1XZWJJbnNwZWN0b3IuTmV0d29ya09ic2VydmVyID0gZnVuY3Rpb24oKQorV2Vi
SW5zcGVjdG9yLk5ldHdvcmtPYnNlcnZlciA9IGNsYXNzIE5ldHdvcmtPYnNlcnZlcgogewotICAg
IC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNz
LCBhbmQgY2FsbCBzdXBlcigpLgotICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlz
KTsKLX07Ci0KLVdlYkluc3BlY3Rvci5OZXR3b3JrT2JzZXJ2ZXIucHJvdG90eXBlID0gewotICAg
IGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuTmV0d29ya09ic2VydmVyLAotCiAgICAgLy8gRXZl
bnRzIGRlZmluZWQgYnkgdGhlICJOZXR3b3JrIiBkb21haW4uCiAKLSAgICByZXF1ZXN0V2lsbEJl
U2VudDogZnVuY3Rpb24ocmVxdWVzdElkLCBmcmFtZUlkLCBsb2FkZXJJZCwgZG9jdW1lbnRVUkws
IHJlcXVlc3QsIHRpbWVzdGFtcCwgaW5pdGlhdG9yLCByZWRpcmVjdFJlc3BvbnNlLCB0eXBlKQor
ICAgIHJlcXVlc3RXaWxsQmVTZW50KHJlcXVlc3RJZCwgZnJhbWVJZCwgbG9hZGVySWQsIGRvY3Vt
ZW50VVJMLCByZXF1ZXN0LCB0aW1lc3RhbXAsIGluaXRpYXRvciwgcmVkaXJlY3RSZXNwb25zZSwg
dHlwZSkKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5mcmFtZVJlc291cmNlTWFuYWdlci5y
ZXNvdXJjZVJlcXVlc3RXaWxsQmVTZW50KHJlcXVlc3RJZCwgZnJhbWVJZCwgbG9hZGVySWQsIHJl
cXVlc3QsIHR5cGUsIHJlZGlyZWN0UmVzcG9uc2UsIHRpbWVzdGFtcCwgaW5pdGlhdG9yKTsKLSAg
ICB9LAorICAgIH0KIAotICAgIHJlcXVlc3RTZXJ2ZWRGcm9tQ2FjaGU6IGZ1bmN0aW9uKHJlcXVl
c3RJZCkKKyAgICByZXF1ZXN0U2VydmVkRnJvbUNhY2hlKHJlcXVlc3RJZCkKICAgICB7CiAgICAg
ICAgIFdlYkluc3BlY3Rvci5mcmFtZVJlc291cmNlTWFuYWdlci5tYXJrUmVzb3VyY2VSZXF1ZXN0
QXNTZXJ2ZWRGcm9tTWVtb3J5Q2FjaGUocmVxdWVzdElkKTsKLSAgICB9LAorICAgIH0KIAotICAg
IHJlc3BvbnNlUmVjZWl2ZWQ6IGZ1bmN0aW9uKHJlcXVlc3RJZCwgZnJhbWVJZCwgbG9hZGVySWQs
IHRpbWVzdGFtcCwgdHlwZSwgcmVzcG9uc2UpCisgICAgcmVzcG9uc2VSZWNlaXZlZChyZXF1ZXN0
SWQsIGZyYW1lSWQsIGxvYWRlcklkLCB0aW1lc3RhbXAsIHR5cGUsIHJlc3BvbnNlKQogICAgIHsK
ICAgICAgICAgV2ViSW5zcGVjdG9yLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLnJlc291cmNlUmVxdWVz
dERpZFJlY2VpdmVSZXNwb25zZShyZXF1ZXN0SWQsIGZyYW1lSWQsIGxvYWRlcklkLCB0eXBlLCBy
ZXNwb25zZSwgdGltZXN0YW1wKTsKLSAgICB9LAorICAgIH0KIAotICAgIGRhdGFSZWNlaXZlZDog
ZnVuY3Rpb24ocmVxdWVzdElkLCB0aW1lc3RhbXAsIGRhdGFMZW5ndGgsIGVuY29kZWREYXRhTGVu
Z3RoKQorICAgIGRhdGFSZWNlaXZlZChyZXF1ZXN0SWQsIHRpbWVzdGFtcCwgZGF0YUxlbmd0aCwg
ZW5jb2RlZERhdGFMZW5ndGgpCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3IuZnJhbWVSZXNv
dXJjZU1hbmFnZXIucmVzb3VyY2VSZXF1ZXN0RGlkUmVjZWl2ZURhdGEocmVxdWVzdElkLCBkYXRh
TGVuZ3RoLCBlbmNvZGVkRGF0YUxlbmd0aCwgdGltZXN0YW1wKTsKLSAgICB9LAorICAgIH0KIAot
ICAgIGxvYWRpbmdGaW5pc2hlZDogZnVuY3Rpb24ocmVxdWVzdElkLCB0aW1lc3RhbXAsIHNvdXJj
ZU1hcFVSTCkKKyAgICBsb2FkaW5nRmluaXNoZWQocmVxdWVzdElkLCB0aW1lc3RhbXAsIHNvdXJj
ZU1hcFVSTCkKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5mcmFtZVJlc291cmNlTWFuYWdl
ci5yZXNvdXJjZVJlcXVlc3REaWRGaW5pc2hMb2FkaW5nKHJlcXVlc3RJZCwgdGltZXN0YW1wLCBz
b3VyY2VNYXBVUkwpOwotICAgIH0sCisgICAgfQogCi0gICAgbG9hZGluZ0ZhaWxlZDogZnVuY3Rp
b24ocmVxdWVzdElkLCB0aW1lc3RhbXAsIGVycm9yVGV4dCwgY2FuY2VsZWQpCisgICAgbG9hZGlu
Z0ZhaWxlZChyZXF1ZXN0SWQsIHRpbWVzdGFtcCwgZXJyb3JUZXh0LCBjYW5jZWxlZCkKICAgICB7
CiAgICAgICAgIFdlYkluc3BlY3Rvci5mcmFtZVJlc291cmNlTWFuYWdlci5yZXNvdXJjZVJlcXVl
c3REaWRGYWlsTG9hZGluZyhyZXF1ZXN0SWQsIGNhbmNlbGVkLCB0aW1lc3RhbXApOwotICAgIH0s
CisgICAgfQogCi0gICAgcmVxdWVzdFNlcnZlZEZyb21NZW1vcnlDYWNoZTogZnVuY3Rpb24ocmVx
dWVzdElkLCBmcmFtZUlkLCBsb2FkZXJJZCwgZG9jdW1lbnRVUkwsIHRpbWVzdGFtcCwgaW5pdGlh
dG9yLCByZXNvdXJjZSkKKyAgICByZXF1ZXN0U2VydmVkRnJvbU1lbW9yeUNhY2hlKHJlcXVlc3RJ
ZCwgZnJhbWVJZCwgbG9hZGVySWQsIGRvY3VtZW50VVJMLCB0aW1lc3RhbXAsIGluaXRpYXRvciwg
cmVzb3VyY2UpCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3IuZnJhbWVSZXNvdXJjZU1hbmFn
ZXIucmVzb3VyY2VSZXF1ZXN0V2FzU2VydmVkRnJvbU1lbW9yeUNhY2hlKHJlcXVlc3RJZCwgZnJh
bWVJZCwgbG9hZGVySWQsIHJlc291cmNlLCB0aW1lc3RhbXAsIGluaXRpYXRvcik7Ci0gICAgfSwK
KyAgICB9CiAKLSAgICB3ZWJTb2NrZXRXaWxsU2VuZEhhbmRzaGFrZVJlcXVlc3Q6IGZ1bmN0aW9u
KHJlcXVlc3RJZCwgdGltZXN0YW1wLCByZXF1ZXN0KQorICAgIHdlYlNvY2tldFdpbGxTZW5kSGFu
ZHNoYWtlUmVxdWVzdChyZXF1ZXN0SWQsIHRpbWVzdGFtcCwgcmVxdWVzdCkKICAgICB7CiAgICAg
ICAgIC8vIEZJWE1FOiBOb3QgaW1wbGVtZW50ZWQuCi0gICAgfSwKKyAgICB9CiAKLSAgICB3ZWJT
b2NrZXRIYW5kc2hha2VSZXNwb25zZVJlY2VpdmVkOiBmdW5jdGlvbihyZXF1ZXN0SWQsIHRpbWVz
dGFtcCwgcmVzcG9uc2UpCisgICAgd2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2VSZWNlaXZlZChy
ZXF1ZXN0SWQsIHRpbWVzdGFtcCwgcmVzcG9uc2UpCiAgICAgewogICAgICAgICAvLyBGSVhNRTog
Tm90IGltcGxlbWVudGVkLgotICAgIH0sCisgICAgfQogCi0gICAgd2ViU29ja2V0Q3JlYXRlZDog
ZnVuY3Rpb24ocmVxdWVzdElkLCB1cmwpCisgICAgd2ViU29ja2V0Q3JlYXRlZChyZXF1ZXN0SWQs
IHVybCkKICAgICB7CiAgICAgICAgIC8vIEZJWE1FOiBOb3QgaW1wbGVtZW50ZWQuCi0gICAgfSwK
KyAgICB9CiAKLSAgICB3ZWJTb2NrZXRDbG9zZWQ6IGZ1bmN0aW9uKHJlcXVlc3RJZCwgdGltZXN0
YW1wKQorICAgIHdlYlNvY2tldENsb3NlZChyZXF1ZXN0SWQsIHRpbWVzdGFtcCkKICAgICB7CiAg
ICAgICAgIC8vIEZJWE1FOiBOb3QgaW1wbGVtZW50ZWQuCi0gICAgfSwKKyAgICB9CiAKLSAgICB3
ZWJTb2NrZXRGcmFtZVJlY2VpdmVkOiBmdW5jdGlvbihyZXF1ZXN0SWQsIHRpbWVzdGFtcCwgcmVz
cG9uc2UpCisgICAgd2ViU29ja2V0RnJhbWVSZWNlaXZlZChyZXF1ZXN0SWQsIHRpbWVzdGFtcCwg
cmVzcG9uc2UpCiAgICAgewogICAgICAgICAvLyBGSVhNRTogTm90IGltcGxlbWVudGVkLgotICAg
IH0sCisgICAgfQogCi0gICAgd2ViU29ja2V0RnJhbWVFcnJvcjogZnVuY3Rpb24ocmVxdWVzdElk
LCB0aW1lc3RhbXAsIGVycm9yTWVzc2FnZSkKKyAgICB3ZWJTb2NrZXRGcmFtZUVycm9yKHJlcXVl
c3RJZCwgdGltZXN0YW1wLCBlcnJvck1lc3NhZ2UpCiAgICAgewogICAgICAgICAvLyBGSVhNRTog
Tm90IGltcGxlbWVudGVkLgotICAgIH0sCisgICAgfQogCi0gICAgd2ViU29ja2V0RnJhbWVTZW50
OiBmdW5jdGlvbihyZXF1ZXN0SWQsIHRpbWVzdGFtcCwgcmVzcG9uc2UpCisgICAgd2ViU29ja2V0
RnJhbWVTZW50KHJlcXVlc3RJZCwgdGltZXN0YW1wLCByZXNwb25zZSkKICAgICB7CiAgICAgICAg
IC8vIEZJWE1FOiBOb3QgaW1wbGVtZW50ZWQuCiAgICAgfQogfTsKLQotV2ViSW5zcGVjdG9yLk5l
dHdvcmtPYnNlcnZlci5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLk9iamVjdC5w
cm90b3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Qcm90b2NvbC9QYWdlT2JzZXJ2ZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Qcm90b2NvbC9QYWdlT2JzZXJ2ZXIuanMKaW5kZXggN2JjNWQxZjNlNzFlMmUzYTli
N2Q1MDg5YTM3MjMxYmJjNDc0MDY2YS4uMTFmYWVlZDA3NmMwZmQ2N2JjMGYyMzgwZTcyYjQ3NDUy
ZDFlNGIzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
UHJvdG9jb2wvUGFnZU9ic2VydmVyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1Byb3RvY29sL1BhZ2VPYnNlcnZlci5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsNzEgKzIzLDYyIEBACiAgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLlBhZ2VP
YnNlcnZlciA9IGZ1bmN0aW9uKCkKK1dlYkluc3BlY3Rvci5QYWdlT2JzZXJ2ZXIgPSBjbGFzcyBQ
YWdlT2JzZXJ2ZXIKIHsKLSAgICAvLyBGSVhNRTogQ29udmVydCB0aGlzIHRvIGEgV2ViSW5zcGVj
dG9yLk9iamVjdCBzdWJjbGFzcywgYW5kIGNhbGwgc3VwZXIoKS4KLSAgICAvLyBXZWJJbnNwZWN0
b3IuT2JqZWN0LmNhbGwodGhpcyk7Ci19OwotCi1XZWJJbnNwZWN0b3IuUGFnZU9ic2VydmVyLnBy
b3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLlBhZ2VPYnNlcnZlciwK
LQogICAgIC8vIEV2ZW50cyBkZWZpbmVkIGJ5IHRoZSAiUGFnZSIgZG9tYWluLgogCi0gICAgZG9t
Q29udGVudEV2ZW50RmlyZWQ6IGZ1bmN0aW9uKHRpbWVzdGFtcCkKKyAgICBkb21Db250ZW50RXZl
bnRGaXJlZCh0aW1lc3RhbXApCiAgICAgewogICAgICAgICAvLyBDb3ZlcmVkIGJ5IFRpbWVsaW5l
ICJNYXJrRE9NQ29udGVudCIgcmVjb3JkLgotICAgIH0sCisgICAgfQogCi0gICAgbG9hZEV2ZW50
RmlyZWQ6IGZ1bmN0aW9uKHRpbWVzdGFtcCkKKyAgICBsb2FkRXZlbnRGaXJlZCh0aW1lc3RhbXAp
CiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3IudGltZWxpbmVNYW5hZ2VyLnBhZ2VEaWRMb2Fk
KHRpbWVzdGFtcCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBmcmFtZU5hdmlnYXRlZDogZnVuY3Rp
b24oZnJhbWUsIGxvYWRlcklkKQorICAgIGZyYW1lTmF2aWdhdGVkKGZyYW1lLCBsb2FkZXJJZCkK
ICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5mcmFtZVJlc291cmNlTWFuYWdlci5mcmFtZURp
ZE5hdmlnYXRlKGZyYW1lLCBsb2FkZXJJZCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBmcmFtZURl
dGFjaGVkOiBmdW5jdGlvbihmcmFtZUlkKQorICAgIGZyYW1lRGV0YWNoZWQoZnJhbWVJZCkKICAg
ICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5mcmFtZVJlc291cmNlTWFuYWdlci5mcmFtZURpZERl
dGFjaChmcmFtZUlkKTsKLSAgICB9LAorICAgIH0KIAotICAgIGZyYW1lU3RhcnRlZExvYWRpbmc6
IGZ1bmN0aW9uKGZyYW1lSWQpCisgICAgZnJhbWVTdGFydGVkTG9hZGluZyhmcmFtZUlkKQogICAg
IHsKICAgICAgICAgLy8gTm90IGhhbmRsZWQgeWV0LgotICAgIH0sCisgICAgfQogCi0gICAgZnJh
bWVTdG9wcGVkTG9hZGluZzogZnVuY3Rpb24oZnJhbWVJZCkKKyAgICBmcmFtZVN0b3BwZWRMb2Fk
aW5nKGZyYW1lSWQpCiAgICAgewogICAgICAgICAvLyBOb3QgaGFuZGxlZCB5ZXQuCi0gICAgfSwK
KyAgICB9CiAKLSAgICBmcmFtZVNjaGVkdWxlZE5hdmlnYXRpb246IGZ1bmN0aW9uKGZyYW1lSWQs
IGRlbGF5KQorICAgIGZyYW1lU2NoZWR1bGVkTmF2aWdhdGlvbihmcmFtZUlkLCBkZWxheSkKICAg
ICB7CiAgICAgICAgIC8vIE5vdCBoYW5kbGVkIHlldC4KLSAgICB9LAorICAgIH0KIAotICAgIGZy
YW1lQ2xlYXJlZFNjaGVkdWxlZE5hdmlnYXRpb246IGZ1bmN0aW9uKGZyYW1lSWQpCisgICAgZnJh
bWVDbGVhcmVkU2NoZWR1bGVkTmF2aWdhdGlvbihmcmFtZUlkKQogICAgIHsKICAgICAgICAgLy8g
Tm90IGhhbmRsZWQgeWV0LgotICAgIH0sCisgICAgfQogCi0gICAgamF2YXNjcmlwdERpYWxvZ09w
ZW5pbmc6IGZ1bmN0aW9uKG1lc3NhZ2UpCisgICAgamF2YXNjcmlwdERpYWxvZ09wZW5pbmcobWVz
c2FnZSkKICAgICB7CiAgICAgICAgIC8vIE5vdCBoYW5kbGVkIHlldC4KLSAgICB9LAorICAgIH0K
IAotICAgIGphdmFzY3JpcHREaWFsb2dDbG9zZWQ6IGZ1bmN0aW9uKCkKKyAgICBqYXZhc2NyaXB0
RGlhbG9nQ2xvc2VkKCkKICAgICB7CiAgICAgICAgIC8vIE5vdCBoYW5kbGVkIHlldC4KLSAgICB9
LAorICAgIH0KIAotICAgIHNjcmlwdHNFbmFibGVkOiBmdW5jdGlvbihlbmFibGVkKQorICAgIHNj
cmlwdHNFbmFibGVkKGVuYWJsZWQpCiAgICAgewogICAgICAgICAvLyBOb3QgaGFuZGxlZCB5ZXQu
CiAgICAgfQogfTsKLQotV2ViSW5zcGVjdG9yLlBhZ2VPYnNlcnZlci5wcm90b3R5cGUuX19wcm90
b19fID0gV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9SZW1vdGVPYmplY3QuanMgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9SZW1vdGVPYmplY3Qu
anMKaW5kZXggYjkwYTRiMmMwZjQ5M2YyZjMzNzBhYWI5MTNkMTBjZDM5ZjY4YWQ4Yi4uNmE4Y2Vj
MmEzMmY0NDdhYTMzOTY5OTcwYjU0M2VhZDlkYThkZGZiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvUmVtb3RlT2JqZWN0LmpzCisrKyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL1JlbW90ZU9iamVj
dC5qcwpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CkBAIC0yOCwxNzIgKzI5LDE3NCBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0
b3IuUmVtb3RlT2JqZWN0ID0gZnVuY3Rpb24ob2JqZWN0SWQsIHR5cGUsIHN1YnR5cGUsIHZhbHVl
LCBkZXNjcmlwdGlvbiwgc2l6ZSwgcHJldmlldykKK1dlYkluc3BlY3Rvci5SZW1vdGVPYmplY3Qg
PSBjbGFzcyBSZW1vdGVPYmplY3QKIHsKLSAgICAvLyBObyBzdXBlcmNsYXNzLgotCi0gICAgY29u
c29sZS5hc3NlcnQodHlwZSk7Ci0gICAgY29uc29sZS5hc3NlcnQoIXByZXZpZXcgfHwgcHJldmll
dyBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5PYmplY3RQcmV2aWV3KTsKLQotICAgIHRoaXMuX3R5
cGUgPSB0eXBlOwotICAgIHRoaXMuX3N1YnR5cGUgPSBzdWJ0eXBlOwotCi0gICAgaWYgKG9iamVj
dElkKSB7Ci0gICAgICAgIC8vIE9iamVjdCBvciBTeW1ib2wuCi0gICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KCFzdWJ0eXBlIHx8IHR5cGVvZiBzdWJ0eXBlID09PSAic3RyaW5nIik7Ci0gICAgICAgIGNv
bnNvbGUuYXNzZXJ0KCFkZXNjcmlwdGlvbiB8fCB0eXBlb2YgZGVzY3JpcHRpb24gPT09ICJzdHJp
bmciKTsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoIXZhbHVlKTsKLQotICAgICAgICB0aGlzLl9v
YmplY3RJZCA9IG9iamVjdElkOwotICAgICAgICB0aGlzLl9kZXNjcmlwdGlvbiA9IGRlc2NyaXB0
aW9uOwotICAgICAgICB0aGlzLl9oYXNDaGlsZHJlbiA9IHR5cGUgIT09ICJzeW1ib2wiOwotICAg
ICAgICB0aGlzLl9zaXplID0gc2l6ZTsKLSAgICAgICAgdGhpcy5fcHJldmlldyA9IHByZXZpZXc7
Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgLy8gUHJpbWl0aXZlIG9yIG51bGwuCi0gICAgICAgIGNv
bnNvbGUuYXNzZXJ0KHR5cGUgIT09ICJvYmplY3QiIHx8IHZhbHVlID09PSBudWxsKTsKLSAgICAg
ICAgY29uc29sZS5hc3NlcnQoIXByZXZpZXcpOwotCi0gICAgICAgIHRoaXMuX2Rlc2NyaXB0aW9u
ID0gZGVzY3JpcHRpb24gfHwgKHZhbHVlICsgIiIpOwotICAgICAgICB0aGlzLl9oYXNDaGlsZHJl
biA9IGZhbHNlOwotICAgICAgICB0aGlzLl92YWx1ZSA9IHZhbHVlOworICAgIGNvbnN0cnVjdG9y
KG9iamVjdElkLCB0eXBlLCBzdWJ0eXBlLCB2YWx1ZSwgZGVzY3JpcHRpb24sIHNpemUsIHByZXZp
ZXcpCisgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydCh0eXBlKTsKKyAgICAgICAgY29uc29s
ZS5hc3NlcnQoIXByZXZpZXcgfHwgcHJldmlldyBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5PYmpl
Y3RQcmV2aWV3KTsKKworICAgICAgICB0aGlzLl90eXBlID0gdHlwZTsKKyAgICAgICAgdGhpcy5f
c3VidHlwZSA9IHN1YnR5cGU7CisKKyAgICAgICAgaWYgKG9iamVjdElkKSB7CisgICAgICAgICAg
ICAvLyBPYmplY3Qgb3IgU3ltYm9sLgorICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoIXN1YnR5
cGUgfHwgdHlwZW9mIHN1YnR5cGUgPT09ICJzdHJpbmciKTsKKyAgICAgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KCFkZXNjcmlwdGlvbiB8fCB0eXBlb2YgZGVzY3JpcHRpb24gPT09ICJzdHJpbmciKTsK
KyAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF2YWx1ZSk7CisKKyAgICAgICAgICAgIHRoaXMu
X29iamVjdElkID0gb2JqZWN0SWQ7CisgICAgICAgICAgICB0aGlzLl9kZXNjcmlwdGlvbiA9IGRl
c2NyaXB0aW9uOworICAgICAgICAgICAgdGhpcy5faGFzQ2hpbGRyZW4gPSB0eXBlICE9PSAic3lt
Ym9sIjsKKyAgICAgICAgICAgIHRoaXMuX3NpemUgPSBzaXplOworICAgICAgICAgICAgdGhpcy5f
cHJldmlldyA9IHByZXZpZXc7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBQcmlt
aXRpdmUgb3IgbnVsbC4KKyAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHR5cGUgIT09ICJvYmpl
Y3QiIHx8IHZhbHVlID09PSBudWxsKTsKKyAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFwcmV2
aWV3KTsKKworICAgICAgICAgICAgdGhpcy5fZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbiB8fCAo
dmFsdWUgKyAiIik7CisgICAgICAgICAgICB0aGlzLl9oYXNDaGlsZHJlbiA9IGZhbHNlOworICAg
ICAgICAgICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTsKKyAgICAgICAgfQogICAgIH0KLX07CiAKLVdl
Ykluc3BlY3Rvci5SZW1vdGVPYmplY3QuZnJvbVByaW1pdGl2ZVZhbHVlID0gZnVuY3Rpb24odmFs
dWUpCi17Ci0gICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0KHVuZGVmaW5l
ZCwgdHlwZW9mIHZhbHVlLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdmFsdWUpOwotfTsKKyAgICAv
LyBTdGF0aWMKIAotV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdC5mcm9tUGF5bG9hZCA9IGZ1bmN0
aW9uKHBheWxvYWQpCi17Ci0gICAgY29uc29sZS5hc3NlcnQodHlwZW9mIHBheWxvYWQgPT09ICJv
YmplY3QiLCAiUmVtb3RlIG9iamVjdCBwYXlsb2FkIHNob3VsZCBvbmx5IGJlIGFuIG9iamVjdCIp
OwotCi0gICAgaWYgKHBheWxvYWQuc3VidHlwZSA9PT0gImFycmF5IikgewotICAgICAgICAvLyBD
T01QQVRJQklMSVRZIChpT1MgOCk6IFJ1bnRpbWUuUmVtb3RlT2JqZWN0IGRpZCBub3QgaGF2ZSBz
aXplIHByb3BlcnR5LAotICAgICAgICAvLyBpbnN0ZWFkIGl0IHdhcyB0YWNrZWQgb250byB0aGUg
ZW5kIG9mIHRoZSBkZXNjcmlwdGlvbiwgbGlrZSAiQXJyYXlbI10iLgotICAgICAgICB2YXIgbWF0
Y2ggPSBwYXlsb2FkLmRlc2NyaXB0aW9uLm1hdGNoKC9cWyhcZCspXF0kLyk7Ci0gICAgICAgIGlm
IChtYXRjaCkgewotICAgICAgICAgICAgcGF5bG9hZC5zaXplID0gcGFyc2VJbnQobWF0Y2hbMV0p
OwotICAgICAgICAgICAgcGF5bG9hZC5kZXNjcmlwdGlvbiA9IHBheWxvYWQuZGVzY3JpcHRpb24u
cmVwbGFjZSgvXFtcZCtcXSQvLCAiIik7Ci0gICAgICAgIH0KKyAgICBzdGF0aWMgZnJvbVByaW1p
dGl2ZVZhbHVlKHZhbHVlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3Iu
UmVtb3RlT2JqZWN0KHVuZGVmaW5lZCwgdHlwZW9mIHZhbHVlLCB1bmRlZmluZWQsIHVuZGVmaW5l
ZCwgdmFsdWUpOwogICAgIH0KIAotICAgIGlmIChwYXlsb2FkLnByZXZpZXcpIHsKLSAgICAgICAg
Ly8gQ09NUEFUSUJJTElUWSAoaU9TIDgpOiBpT1MgNyBhbmQgOCBkaWQgbm90IGhhdmUgdHlwZS9z
dWJ0eXBlL2Rlc2NyaXB0aW9uIG9uCi0gICAgICAgIC8vIFJ1bnRpbWUuT2JqZWN0UHJldmlldy4g
Q29weSB0aGVtIG92ZXIgZnJvbSB0aGUgUmVtb3RlT2JqZWN0LgotICAgICAgICBpZiAoIXBheWxv
YWQucHJldmlldy50eXBlKSB7Ci0gICAgICAgICAgICBwYXlsb2FkLnByZXZpZXcudHlwZSA9IHBh
eWxvYWQudHlwZTsKLSAgICAgICAgICAgIHBheWxvYWQucHJldmlldy5zdWJ0eXBlID0gcGF5bG9h
ZC5zdWJ0eXBlOwotICAgICAgICAgICAgcGF5bG9hZC5wcmV2aWV3LmRlc2NyaXB0aW9uID0gcGF5
bG9hZC5kZXNjcmlwdGlvbjsKLSAgICAgICAgICAgIHBheWxvYWQucHJldmlldy5zaXplID0gcGF5
bG9hZC5zaXplOworICAgIHN0YXRpYyBmcm9tUGF5bG9hZChwYXlsb2FkKQorICAgIHsKKyAgICAg
ICAgY29uc29sZS5hc3NlcnQodHlwZW9mIHBheWxvYWQgPT09ICJvYmplY3QiLCAiUmVtb3RlIG9i
amVjdCBwYXlsb2FkIHNob3VsZCBvbmx5IGJlIGFuIG9iamVjdCIpOworCisgICAgICAgIGlmIChw
YXlsb2FkLnN1YnR5cGUgPT09ICJhcnJheSIpIHsKKyAgICAgICAgICAgIC8vIENPTVBBVElCSUxJ
VFkgKGlPUyA4KTogUnVudGltZS5SZW1vdGVPYmplY3QgZGlkIG5vdCBoYXZlIHNpemUgcHJvcGVy
dHksCisgICAgICAgICAgICAvLyBpbnN0ZWFkIGl0IHdhcyB0YWNrZWQgb250byB0aGUgZW5kIG9m
IHRoZSBkZXNjcmlwdGlvbiwgbGlrZSAiQXJyYXlbI10iLgorICAgICAgICAgICAgdmFyIG1hdGNo
ID0gcGF5bG9hZC5kZXNjcmlwdGlvbi5tYXRjaCgvXFsoXGQrKVxdJC8pOworICAgICAgICAgICAg
aWYgKG1hdGNoKSB7CisgICAgICAgICAgICAgICAgcGF5bG9hZC5zaXplID0gcGFyc2VJbnQobWF0
Y2hbMV0pOworICAgICAgICAgICAgICAgIHBheWxvYWQuZGVzY3JpcHRpb24gPSBwYXlsb2FkLmRl
c2NyaXB0aW9uLnJlcGxhY2UoL1xbXGQrXF0kLywgIiIpOworICAgICAgICAgICAgfQogICAgICAg
ICB9Ci0gICAgICAgIHBheWxvYWQucHJldmlldyA9IFdlYkluc3BlY3Rvci5PYmplY3RQcmV2aWV3
LmZyb21QYXlsb2FkKHBheWxvYWQucHJldmlldyk7Ci0gICAgfQogCi0gICAgcmV0dXJuIG5ldyBX
ZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0KHBheWxvYWQub2JqZWN0SWQsIHBheWxvYWQudHlwZSwg
cGF5bG9hZC5zdWJ0eXBlLCBwYXlsb2FkLnZhbHVlLCBwYXlsb2FkLmRlc2NyaXB0aW9uLCBwYXls
b2FkLnNpemUsIHBheWxvYWQucHJldmlldyk7Ci19OworICAgICAgICBpZiAocGF5bG9hZC5wcmV2
aWV3KSB7CisgICAgICAgICAgICAvLyBDT01QQVRJQklMSVRZIChpT1MgOCk6IGlPUyA3IGFuZCA4
IGRpZCBub3QgaGF2ZSB0eXBlL3N1YnR5cGUvZGVzY3JpcHRpb24gb24KKyAgICAgICAgICAgIC8v
IFJ1bnRpbWUuT2JqZWN0UHJldmlldy4gQ29weSB0aGVtIG92ZXIgZnJvbSB0aGUgUmVtb3RlT2Jq
ZWN0LgorICAgICAgICAgICAgaWYgKCFwYXlsb2FkLnByZXZpZXcudHlwZSkgeworICAgICAgICAg
ICAgICAgIHBheWxvYWQucHJldmlldy50eXBlID0gcGF5bG9hZC50eXBlOworICAgICAgICAgICAg
ICAgIHBheWxvYWQucHJldmlldy5zdWJ0eXBlID0gcGF5bG9hZC5zdWJ0eXBlOworICAgICAgICAg
ICAgICAgIHBheWxvYWQucHJldmlldy5kZXNjcmlwdGlvbiA9IHBheWxvYWQuZGVzY3JpcHRpb247
CisgICAgICAgICAgICAgICAgcGF5bG9hZC5wcmV2aWV3LnNpemUgPSBwYXlsb2FkLnNpemU7Cisg
ICAgICAgICAgICB9CiAKLVdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QuY3JlYXRlQ2FsbEFyZ3Vt
ZW50ID0gZnVuY3Rpb24odmFsdWVPck9iamVjdCkKLXsKLSAgICBpZiAodmFsdWVPck9iamVjdCBp
bnN0YW5jZW9mIFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QpIHsKLSAgICAgICAgaWYgKHZhbHVl
T3JPYmplY3Qub2JqZWN0SWQpCi0gICAgICAgICAgICByZXR1cm4ge29iamVjdElkOiB2YWx1ZU9y
T2JqZWN0Lm9iamVjdElkfTsKLSAgICAgICAgcmV0dXJuIHt2YWx1ZTogdmFsdWVPck9iamVjdC52
YWx1ZX07CisgICAgICAgICAgICBwYXlsb2FkLnByZXZpZXcgPSBXZWJJbnNwZWN0b3IuT2JqZWN0
UHJldmlldy5mcm9tUGF5bG9hZChwYXlsb2FkLnByZXZpZXcpOworICAgICAgICB9CisKKyAgICAg
ICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0KHBheWxvYWQub2JqZWN0SWQs
IHBheWxvYWQudHlwZSwgcGF5bG9hZC5zdWJ0eXBlLCBwYXlsb2FkLnZhbHVlLCBwYXlsb2FkLmRl
c2NyaXB0aW9uLCBwYXlsb2FkLnNpemUsIHBheWxvYWQucHJldmlldyk7CiAgICAgfQogCi0gICAg
cmV0dXJuIHt2YWx1ZTogdmFsdWVPck9iamVjdH07Ci19OworICAgIHN0YXRpYyBjcmVhdGVDYWxs
QXJndW1lbnQodmFsdWVPck9iamVjdCkKKyAgICB7CisgICAgICAgIGlmICh2YWx1ZU9yT2JqZWN0
IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdCkgeworICAgICAgICAgICAgaWYg
KHZhbHVlT3JPYmplY3Qub2JqZWN0SWQpCisgICAgICAgICAgICAgICAgcmV0dXJuIHtvYmplY3RJ
ZDogdmFsdWVPck9iamVjdC5vYmplY3RJZH07CisgICAgICAgICAgICByZXR1cm4ge3ZhbHVlOiB2
YWx1ZU9yT2JqZWN0LnZhbHVlfTsKKyAgICAgICAgfQogCi1XZWJJbnNwZWN0b3IuUmVtb3RlT2Jq
ZWN0LnJlc29sdmVOb2RlID0gZnVuY3Rpb24obm9kZSwgb2JqZWN0R3JvdXAsIGNhbGxiYWNrKQot
ewotICAgIERPTUFnZW50LnJlc29sdmVOb2RlKG5vZGUuaWQsIG9iamVjdEdyb3VwLCBmdW5jdGlv
bihlcnJvciwgb2JqZWN0KSB7Ci0gICAgICAgIGlmICghY2FsbGJhY2spCi0gICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIHJldHVybiB7dmFsdWU6IHZhbHVlT3JPYmplY3R9OworICAgIH0KIAot
ICAgICAgICBpZiAoZXJyb3IgfHwgIW9iamVjdCkKLSAgICAgICAgICAgIGNhbGxiYWNrKG51bGwp
OwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBjYWxsYmFjayhXZWJJbnNwZWN0b3IuUmVtb3Rl
T2JqZWN0LmZyb21QYXlsb2FkKG9iamVjdCkpOwotICAgIH0pOwotfTsKKyAgICBzdGF0aWMgcmVz
b2x2ZU5vZGUobm9kZSwgb2JqZWN0R3JvdXAsIGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgRE9N
QWdlbnQucmVzb2x2ZU5vZGUobm9kZS5pZCwgb2JqZWN0R3JvdXAsIGZ1bmN0aW9uKGVycm9yLCBv
YmplY3QpIHsKKyAgICAgICAgICAgIGlmICghY2FsbGJhY2spCisgICAgICAgICAgICAgICAgcmV0
dXJuOwogCi1XZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0LnR5cGUgPSBmdW5jdGlvbihyZW1vdGVP
YmplY3QpCi17Ci0gICAgaWYgKHJlbW90ZU9iamVjdCA9PT0gbnVsbCkKLSAgICAgICAgcmV0dXJu
ICJudWxsIjsKKyAgICAgICAgICAgIGlmIChlcnJvciB8fCAhb2JqZWN0KQorICAgICAgICAgICAg
ICAgIGNhbGxiYWNrKG51bGwpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGNh
bGxiYWNrKFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QuZnJvbVBheWxvYWQob2JqZWN0KSk7Cisg
ICAgICAgIH0pOworICAgIH0KIAotICAgIHZhciB0eXBlID0gdHlwZW9mIHJlbW90ZU9iamVjdDsK
LSAgICBpZiAodHlwZSAhPT0gIm9iamVjdCIgJiYgdHlwZSAhPT0gImZ1bmN0aW9uIikKLSAgICAg
ICAgcmV0dXJuIHR5cGU7CisgICAgc3RhdGljIHR5cGUocmVtb3RlT2JqZWN0KQorICAgIHsKKyAg
ICAgICAgaWYgKHJlbW90ZU9iamVjdCA9PT0gbnVsbCkKKyAgICAgICAgICAgIHJldHVybiAibnVs
bCI7CiAKLSAgICByZXR1cm4gcmVtb3RlT2JqZWN0LnR5cGU7Ci19OworICAgICAgICB2YXIgdHlw
ZSA9IHR5cGVvZiByZW1vdGVPYmplY3Q7CisgICAgICAgIGlmICh0eXBlICE9PSAib2JqZWN0IiAm
JiB0eXBlICE9PSAiZnVuY3Rpb24iKQorICAgICAgICAgICAgcmV0dXJuIHR5cGU7CiAKLVdlYklu
c3BlY3Rvci5SZW1vdGVPYmplY3QucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJ
bnNwZWN0b3IuUmVtb3RlT2JqZWN0LAorICAgICAgICByZXR1cm4gcmVtb3RlT2JqZWN0LnR5cGU7
CisgICAgfQorCisgICAgLy8gUHVibGljCiAKICAgICBnZXQgb2JqZWN0SWQoKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIHRoaXMuX29iamVjdElkOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHR5
cGUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3R5cGU7Ci0gICAgfSwKKyAgICB9CiAK
ICAgICBnZXQgc3VidHlwZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fc3VidHlwZTsK
LSAgICB9LAorICAgIH0KIAogICAgIGdldCBkZXNjcmlwdGlvbigpCiAgICAgewogICAgICAgICBy
ZXR1cm4gdGhpcy5fZGVzY3JpcHRpb247Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgaGFzQ2hp
bGRyZW4oKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2hhc0NoaWxkcmVuOwotICAgIH0s
CisgICAgfQogCiAgICAgZ2V0IHZhbHVlKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl92
YWx1ZTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBzaXplKCkKICAgICB7CiAgICAgICAgIHJl
dHVybiB0aGlzLl9zaXplIHx8IDA7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgcHJldmlldygp
CiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fcHJldmlldzsKLSAgICB9LAorICAgIH0KIAot
ICAgIGhhc1NpemU6IGZ1bmN0aW9uKCkKKyAgICBoYXNTaXplKCkKICAgICB7CiAgICAgICAgIHJl
dHVybiB0aGlzLmlzQXJyYXkoKSB8fCB0aGlzLmlzQ29sbGVjdGlvblR5cGUoKTsKLSAgICB9LAor
ICAgIH0KIAotICAgIGhhc1ZhbHVlOiBmdW5jdGlvbigpCisgICAgaGFzVmFsdWUoKQogICAgIHsK
ICAgICAgICAgcmV0dXJuICJfdmFsdWUiIGluIHRoaXM7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBn
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzOiBmdW5jdGlvbihjYWxsYmFjaykKKyAgICBnZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3JzKGNhbGxiYWNrKQogICAgIHsKICAgICAgICAgdGhpcy5fZ2V0UHJv
cGVydHlEZXNjcmlwdG9ycyh0cnVlLCBjYWxsYmFjayk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBn
ZXRBbGxQcm9wZXJ0eURlc2NyaXB0b3JzOiBmdW5jdGlvbihjYWxsYmFjaykKKyAgICBnZXRBbGxQ
cm9wZXJ0eURlc2NyaXB0b3JzKGNhbGxiYWNrKQogICAgIHsKICAgICAgICAgdGhpcy5fZ2V0UHJv
cGVydHlEZXNjcmlwdG9ycyhmYWxzZSwgY2FsbGJhY2spOwotICAgIH0sCisgICAgfQogCi0gICAg
Z2V0RGlzcGxheWFibGVQcm9wZXJ0eURlc2NyaXB0b3JzOiBmdW5jdGlvbihjYWxsYmFjaykKKyAg
ICBnZXREaXNwbGF5YWJsZVByb3BlcnR5RGVzY3JpcHRvcnMoY2FsbGJhY2spCiAgICAgewogICAg
ICAgICBpZiAoIXRoaXMuX29iamVjdElkIHx8IHRoaXMuX2lzU3ltYm9sKCkpIHsKICAgICAgICAg
ICAgIGNhbGxiYWNrKFtdKTsKQEAgLTIyMCw2OCArMjIzLDI3IEBAIFdlYkluc3BlY3Rvci5SZW1v
dGVPYmplY3QucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQorCiAgICAgICAgICAgICAgICAgdGhp
cy5fZ2V0UHJvcGVydHlEZXNjcmlwdG9yc1Jlc29sdmVyKGNhbGxiYWNrLCBlcnJvciwgb3duT3JH
ZXR0ZXJQcm9wZXJ0aWVzTGlzdCk7CiAgICAgICAgICAgICB9LmJpbmQodGhpcykpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgUnVudGltZUFnZW50LmdldERpc3Bs
YXlhYmxlUHJvcGVydGllcyh0aGlzLl9vYmplY3RJZCwgdHJ1ZSwgdGhpcy5fZ2V0UHJvcGVydHlE
ZXNjcmlwdG9yc1Jlc29sdmVyLmJpbmQodGhpcywgY2FsbGJhY2spKTsKLSAgICB9LAotCi0gICAg
X2dldFByb3BlcnR5RGVzY3JpcHRvcnM6IGZ1bmN0aW9uKG93blByb3BlcnRpZXMsIGNhbGxiYWNr
KQotICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLl9vYmplY3RJZCB8fCB0aGlzLl9pc1N5bWJvbCgp
KSB7Ci0gICAgICAgICAgICBjYWxsYmFjayhbXSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIH0KLQotCi0gICAgICAgIFJ1bnRpbWVBZ2VudC5nZXRQcm9wZXJ0aWVzKHRoaXMuX29iamVj
dElkLCBvd25Qcm9wZXJ0aWVzLCB0cnVlLCB0aGlzLl9nZXRQcm9wZXJ0eURlc2NyaXB0b3JzUmVz
b2x2ZXIuYmluZCh0aGlzLCBjYWxsYmFjaykpOwotICAgIH0sCi0KLSAgICBfZ2V0UHJvcGVydHlE
ZXNjcmlwdG9yc1Jlc29sdmVyOiBmdW5jdGlvbihjYWxsYmFjaywgZXJyb3IsIHByb3BlcnRpZXMs
IGludGVybmFsUHJvcGVydGllcykKLSAgICB7Ci0gICAgICAgIGlmIChlcnJvcikgewotICAgICAg
ICAgICAgY2FsbGJhY2sobnVsbCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQot
ICAgICAgICB2YXIgZGVzY3JpcHRvcnMgPSBwcm9wZXJ0aWVzLm1hcChmdW5jdGlvbihwYXlsb2Fk
KSB7Ci0gICAgICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlByb3BlcnR5RGVzY3JpcHRvci5m
cm9tUGF5bG9hZChwYXlsb2FkKTsKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgaWYgKGludGVybmFs
UHJvcGVydGllcykgewotICAgICAgICAgICAgZGVzY3JpcHRvcnMgPSBkZXNjcmlwdG9ycy5jb25j
YXQoaW50ZXJuYWxQcm9wZXJ0aWVzLm1hcChmdW5jdGlvbihwYXlsb2FkKSB7Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5Qcm9wZXJ0eURlc2NyaXB0b3IuZnJvbVBheWxvYWQo
cGF5bG9hZCwgdHJ1ZSk7Ci0gICAgICAgICAgICB9KSk7Ci0gICAgICAgIH0KLQotICAgICAgICBj
YWxsYmFjayhkZXNjcmlwdG9ycyk7Ci0gICAgfSwKLQotICAgIC8vIEZJWE1FOiBQaGFzZSBvdXQg
dGhlc2UgZnVuY3Rpb25zLiBUaGV5IHJldHVybiBSZW1vdGVPYmplY3RQcm9wZXJ0eSBpbnN0ZWFk
IG9mIFByb3BlcnR5RGVzY3JpcHRvcnMuCisgICAgfQogCi0gICAgZGVwcmVjYXRlZEdldE93blBy
b3BlcnRpZXM6IGZ1bmN0aW9uKGNhbGxiYWNrKQorICAgIC8vIEZJWE1FOiBQaGFzZSBvdXQgdGhl
c2UgZGVwcmVjYXRlZCBmdW5jdGlvbnMuIFRoZXkgcmV0dXJuIERlcHJlY2F0ZWRSZW1vdGVPYmpl
Y3RQcm9wZXJ0eSBpbnN0ZWFkIG9mIFByb3BlcnR5RGVzY3JpcHRvcnMuCisgICAgZGVwcmVjYXRl
ZEdldE93blByb3BlcnRpZXMoY2FsbGJhY2spCiAgICAgewogICAgICAgICB0aGlzLl9kZXByZWNh
dGVkR2V0UHJvcGVydGllcyh0cnVlLCBjYWxsYmFjayk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBk
ZXByZWNhdGVkR2V0QWxsUHJvcGVydGllczogZnVuY3Rpb24oY2FsbGJhY2spCisgICAgZGVwcmVj
YXRlZEdldEFsbFByb3BlcnRpZXMoY2FsbGJhY2spCiAgICAgewogICAgICAgICB0aGlzLl9kZXBy
ZWNhdGVkR2V0UHJvcGVydGllcyhmYWxzZSwgY2FsbGJhY2spOwotICAgIH0sCi0KLSAgICBfZGVw
cmVjYXRlZEdldFByb3BlcnRpZXM6IGZ1bmN0aW9uKG93blByb3BlcnRpZXMsIGNhbGxiYWNrKQot
ICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLl9vYmplY3RJZCB8fCB0aGlzLl9pc1N5bWJvbCgpKSB7
Ci0gICAgICAgICAgICBjYWxsYmFjayhbXSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IH0KLQotICAgICAgICBSdW50aW1lQWdlbnQuZ2V0UHJvcGVydGllcyh0aGlzLl9vYmplY3RJZCwg
b3duUHJvcGVydGllcywgdGhpcy5fZGVwcmVjYXRlZEdldFByb3BlcnRpZXNSZXNvbHZlci5iaW5k
KHRoaXMsIGNhbGxiYWNrKSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBkZXByZWNhdGVkR2V0RGlz
cGxheWFibGVQcm9wZXJ0aWVzOiBmdW5jdGlvbihjYWxsYmFjaykKKyAgICBkZXByZWNhdGVkR2V0
RGlzcGxheWFibGVQcm9wZXJ0aWVzKGNhbGxiYWNrKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlz
Ll9vYmplY3RJZCB8fCB0aGlzLl9pc1N5bWJvbCgpKSB7CiAgICAgICAgICAgICBjYWxsYmFjayhb
XSk7CkBAIC0zMDcsNDYgKzI2OSwxNiBAQCBXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0LnByb3Rv
dHlwZSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgICAgIHRoaXMuX2RlcHJlY2F0ZWRH
ZXRQcm9wZXJ0aWVzUmVzb2x2ZXIoY2FsbGJhY2ssIGVycm9yLCBvd25PckdldHRlclByb3BlcnRp
ZXNMaXN0KTsKICAgICAgICAgICAgIH0uYmluZCh0aGlzKSk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIAogICAgICAgICBSdW50aW1lQWdlbnQuZ2V0RGlzcGxheWFibGVQcm9wZXJ0
aWVzKHRoaXMuX29iamVjdElkLCB0aGlzLl9kZXByZWNhdGVkR2V0UHJvcGVydGllc1Jlc29sdmVy
LmJpbmQodGhpcywgY2FsbGJhY2spKTsKLSAgICB9LAotCi0gICAgX2RlcHJlY2F0ZWRHZXRQcm9w
ZXJ0aWVzUmVzb2x2ZXI6IGZ1bmN0aW9uKGNhbGxiYWNrLCBlcnJvciwgcHJvcGVydGllcywgaW50
ZXJuYWxQcm9wZXJ0aWVzKQotICAgIHsKLSAgICAgICAgaWYgKGVycm9yKSB7Ci0gICAgICAgICAg
ICBjYWxsYmFjayhudWxsKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAg
ICAgIGlmIChpbnRlcm5hbFByb3BlcnRpZXMpIHsKLSAgICAgICAgICAgIHByb3BlcnRpZXMgPSBw
cm9wZXJ0aWVzLmNvbmNhdChpbnRlcm5hbFByb3BlcnRpZXMubWFwKGZ1bmN0aW9uKGRlc2NyaXB0
b3IpIHsKLSAgICAgICAgICAgICAgICBkZXNjcmlwdG9yLndyaXRhYmxlID0gZmFsc2U7Ci0gICAg
ICAgICAgICAgICAgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSBmYWxzZTsKLSAgICAgICAgICAg
ICAgICBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICBkZXNj
cmlwdG9yLmlzT3duID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICByZXR1cm4gZGVzY3JpcHRvcjsK
LSAgICAgICAgICAgIH0pKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZhciByZXN1bHQgPSBbXTsK
LSAgICAgICAgZm9yICh2YXIgaSA9IDA7IHByb3BlcnRpZXMgJiYgaSA8IHByb3BlcnRpZXMubGVu
Z3RoOyArK2kpIHsKLSAgICAgICAgICAgIHZhciBwcm9wZXJ0eSA9IHByb3BlcnRpZXNbaV07Ci0g
ICAgICAgICAgICBpZiAocHJvcGVydHkuZ2V0IHx8IHByb3BlcnR5LnNldCkgewotICAgICAgICAg
ICAgICAgIGlmIChwcm9wZXJ0eS5nZXQpCi0gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNo
KG5ldyBXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0UHJvcGVydHkoImdldCAiICsgcHJvcGVydHku
bmFtZSwgV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdC5mcm9tUGF5bG9hZChwcm9wZXJ0eS5nZXQp
LCBwcm9wZXJ0eSkpOwotICAgICAgICAgICAgICAgIGlmIChwcm9wZXJ0eS5zZXQpCi0gICAgICAg
ICAgICAgICAgICAgIHJlc3VsdC5wdXNoKG5ldyBXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0UHJv
cGVydHkoInNldCAiICsgcHJvcGVydHkubmFtZSwgV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdC5m
cm9tUGF5bG9hZChwcm9wZXJ0eS5zZXQpLCBwcm9wZXJ0eSkpOwotICAgICAgICAgICAgfSBlbHNl
Ci0gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2gobmV3IFdlYkluc3BlY3Rvci5SZW1vdGVPYmpl
Y3RQcm9wZXJ0eShwcm9wZXJ0eS5uYW1lLCBXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0LmZyb21Q
YXlsb2FkKHByb3BlcnR5LnZhbHVlKSwgcHJvcGVydHkpKTsKLSAgICAgICAgfQotICAgICAgICBj
YWxsYmFjayhyZXN1bHQpOwotICAgIH0sCisgICAgfQogCi0gICAgc2V0UHJvcGVydHlWYWx1ZTog
ZnVuY3Rpb24obmFtZSwgdmFsdWUsIGNhbGxiYWNrKQorICAgIHNldFByb3BlcnR5VmFsdWUobmFt
ZSwgdmFsdWUsIGNhbGxiYWNrKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9vYmplY3RJZCB8
fCB0aGlzLl9pc1N5bWJvbCgpKSB7CiAgICAgICAgICAgICBjYWxsYmFjaygiQ2FuJ3Qgc2V0IGEg
cHJvcGVydHkgb2Ygbm9uLW9iamVjdC4iKTsKQEAgLTM2OCw3ICszMDAsOSBAQCBXZWJJbnNwZWN0
b3IuUmVtb3RlT2JqZWN0LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIH0KIAogICAgICAgICAg
ICAgZGVsZXRlIHJlc3VsdC5kZXNjcmlwdGlvbjsgLy8gT3B0aW1pemUgb24gdHJhZmZpYy4KLSAg
ICAgICAgICAgIFJ1bnRpbWVBZ2VudC5jYWxsRnVuY3Rpb25Pbih0aGlzLl9vYmplY3RJZCwgc2V0
UHJvcGVydHlWYWx1ZS50b1N0cmluZygpLCBbeyB2YWx1ZTpuYW1lIH0sIHJlc3VsdF0sIHRydWUs
IHVuZGVmaW5lZCwgcHJvcGVydHlTZXRDYWxsYmFjay5iaW5kKHRoaXMpKTsKKworICAgICAgICAg
ICAgUnVudGltZUFnZW50LmNhbGxGdW5jdGlvbk9uKHRoaXMuX29iamVjdElkLCBzZXRQcm9wZXJ0
eVZhbHVlLnRvU3RyaW5nKCksIFt7dmFsdWU6bmFtZX0sIHJlc3VsdF0sIHRydWUsIHVuZGVmaW5l
ZCwgcHJvcGVydHlTZXRDYWxsYmFjay5iaW5kKHRoaXMpKTsKKwogICAgICAgICAgICAgaWYgKHJl
c3VsdC5fb2JqZWN0SWQpCiAgICAgICAgICAgICAgICAgUnVudGltZUFnZW50LnJlbGVhc2VPYmpl
Y3QocmVzdWx0Ll9vYmplY3RJZCk7CiAgICAgICAgIH0KQEAgLTM3OSwzMSArMzEzLDI3IEBAIFdl
Ykluc3BlY3Rvci5SZW1vdGVPYmplY3QucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgIGNh
bGxiYWNrKGVycm9yIHx8IHJlc3VsdC5kZXNjcmlwdGlvbik7CiAgICAgICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICAgICAgfQorCiAgICAgICAgICAgICBjYWxsYmFjaygpOwogICAgICAgICB9
Ci0gICAgfSwKLQotICAgIF9pc1N5bWJvbDogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgcmV0
dXJuIHRoaXMuX3R5cGUgPT09ICJzeW1ib2wiOwotICAgIH0sCisgICAgfQogCi0gICAgaXNBcnJh
eTogZnVuY3Rpb24oKQorICAgIGlzQXJyYXkoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMu
X3N1YnR5cGUgPT09ICJhcnJheSI7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBpc0NvbGxlY3Rpb25U
eXBlOiBmdW5jdGlvbigpCisgICAgaXNDb2xsZWN0aW9uVHlwZSgpCiAgICAgewogICAgICAgICBy
ZXR1cm4gdGhpcy5fc3VidHlwZSA9PT0gIm1hcCIgfHwgdGhpcy5fc3VidHlwZSA9PT0gInNldCIg
fHwgdGhpcy5fc3VidHlwZSA9PT0gIndlYWttYXAiOwotICAgIH0sCisgICAgfQogCi0gICAgaXNX
ZWFrQ29sbGVjdGlvbjogZnVuY3Rpb24oKQorICAgIGlzV2Vha0NvbGxlY3Rpb24oKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIHRoaXMuX3N1YnR5cGUgPT09ICJ3ZWFrbWFwIjsKLSAgICB9LAorICAg
IH0KIAotICAgIGdldENvbGxlY3Rpb25FbnRyaWVzOiBmdW5jdGlvbihzdGFydCwgbnVtYmVyVG9G
ZXRjaCwgY2FsbGJhY2spCisgICAgZ2V0Q29sbGVjdGlvbkVudHJpZXMoc3RhcnQsIG51bWJlclRv
RmV0Y2gsIGNhbGxiYWNrKQogICAgIHsKICAgICAgICAgc3RhcnQgPSB0eXBlb2Ygc3RhcnQgPT09
ICJudW1iZXIiID8gc3RhcnQgOiAwOwogICAgICAgICBudW1iZXJUb0ZldGNoID0gdHlwZW9mIG51
bWJlclRvRmV0Y2ggPT09ICJudW1iZXIiID8gbnVtYmVyVG9GZXRjaCA6IDEwMDsKQEAgLTQyMSwy
NCArMzUxLDI0IEBAIFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QucHJvdG90eXBlID0gewogICAg
ICAgICAgICAgZW50cmllcyA9IGVudHJpZXMubWFwKGZ1bmN0aW9uKGVudHJ5KSB7IHJldHVybiBX
ZWJJbnNwZWN0b3IuQ29sbGVjdGlvbkVudHJ5LmZyb21QYXlsb2FkKGVudHJ5KTsgfSk7CiAgICAg
ICAgICAgICBjYWxsYmFjayhlbnRyaWVzKTsKICAgICAgICAgfSk7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICByZWxlYXNlV2Vha0NvbGxlY3Rpb25FbnRyaWVzOiBmdW5jdGlvbigpCisgICAgcmVsZWFz
ZVdlYWtDb2xsZWN0aW9uRW50cmllcygpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydCh0
aGlzLmlzV2Vha0NvbGxlY3Rpb24oKSk7CiAKICAgICAgICAgUnVudGltZUFnZW50LnJlbGVhc2VP
YmplY3RHcm91cCh0aGlzLl93ZWFrQ29sbGVjdGlvbk9iamVjdEdyb3VwKCkpOwotICAgIH0sCisg
ICAgfQogCi0gICAgcHVzaE5vZGVUb0Zyb250ZW5kOiBmdW5jdGlvbihjYWxsYmFjaykKKyAgICBw
dXNoTm9kZVRvRnJvbnRlbmQoY2FsbGJhY2spCiAgICAgewogICAgICAgICBpZiAodGhpcy5fb2Jq
ZWN0SWQpCiAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuZG9tVHJlZU1hbmFnZXIucHVzaE5vZGVU
b0Zyb250ZW5kKHRoaXMuX29iamVjdElkLCBjYWxsYmFjayk7CiAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgIGNhbGxiYWNrKDApOwotICAgIH0sCisgICAgfQogCi0gICAgY2FsbEZ1bmN0aW9uOiBm
dW5jdGlvbihmdW5jdGlvbkRlY2xhcmF0aW9uLCBhcmdzLCBnZW5lcmF0ZVByZXZpZXcsIGNhbGxi
YWNrKQorICAgIGNhbGxGdW5jdGlvbihmdW5jdGlvbkRlY2xhcmF0aW9uLCBhcmdzLCBnZW5lcmF0
ZVByZXZpZXcsIGNhbGxiYWNrKQogICAgIHsKICAgICAgICAgZnVuY3Rpb24gbXljYWxsYmFjayhl
cnJvciwgcmVzdWx0LCB3YXNUaHJvd24pCiAgICAgICAgIHsKQEAgLTQ1MCw5ICszODAsOSBAQCBX
ZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGFyZ3Mg
PSBhcmdzLm1hcChXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0LmNyZWF0ZUNhbGxBcmd1bWVudCk7
CiAKICAgICAgICAgUnVudGltZUFnZW50LmNhbGxGdW5jdGlvbk9uKHRoaXMuX29iamVjdElkLCBm
dW5jdGlvbkRlY2xhcmF0aW9uLnRvU3RyaW5nKCksIGFyZ3MsIHRydWUsIHVuZGVmaW5lZCwgZ2Vu
ZXJhdGVQcmV2aWV3LCBteWNhbGxiYWNrKTsKLSAgICB9LAorICAgIH0KIAotICAgIGNhbGxGdW5j
dGlvbkpTT046IGZ1bmN0aW9uKGZ1bmN0aW9uRGVjbGFyYXRpb24sIGFyZ3MsIGNhbGxiYWNrKQor
ICAgIGNhbGxGdW5jdGlvbkpTT04oZnVuY3Rpb25EZWNsYXJhdGlvbiwgYXJncywgY2FsbGJhY2sp
CiAgICAgewogICAgICAgICBmdW5jdGlvbiBteWNhbGxiYWNrKGVycm9yLCByZXN1bHQsIHdhc1Ro
cm93bikKICAgICAgICAgewpAQCAtNDYwLDkgKzM5MCw5IEBAIFdlYkluc3BlY3Rvci5SZW1vdGVP
YmplY3QucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgUnVudGltZUFnZW50LmNh
bGxGdW5jdGlvbk9uKHRoaXMuX29iamVjdElkLCBmdW5jdGlvbkRlY2xhcmF0aW9uLnRvU3RyaW5n
KCksIGFyZ3MsIHRydWUsIHRydWUsIG15Y2FsbGJhY2spOwotICAgIH0sCisgICAgfQogICAgIAot
ICAgIGludm9rZUdldHRlcjogZnVuY3Rpb24oZ2V0dGVyUmVtb3RlT2JqZWN0LCBjYWxsYmFjaykK
KyAgICBpbnZva2VHZXR0ZXIoZ2V0dGVyUmVtb3RlT2JqZWN0LCBjYWxsYmFjaykKICAgICB7CiAg
ICAgICAgIGNvbnNvbGUuYXNzZXJ0KGdldHRlclJlbW90ZU9iamVjdCBpbnN0YW5jZW9mIFdlYklu
c3BlY3Rvci5SZW1vdGVPYmplY3QpOwogCkBAIC00NzIsNDAgKzQwMiwzNyBAQCBXZWJJbnNwZWN0
b3IuUmVtb3RlT2JqZWN0LnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogCiAgICAgICAgIHRoaXMu
Y2FsbEZ1bmN0aW9uKGJhY2tlbmRJbnZva2VHZXR0ZXIsIFtnZXR0ZXJSZW1vdGVPYmplY3RdLCB0
cnVlLCBjYWxsYmFjayk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBnZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3I6IGZ1bmN0aW9uKHByb3BlcnR5TmFtZSwgY2FsbGJhY2spCisgICAgZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKHByb3BlcnR5TmFtZSwgY2FsbGJhY2spCiAgICAgewotICAgICAgICBpZiAo
IVJ1bnRpbWVBZ2VudC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpIHsKLSAgICAgICAgICAgIGZ1
bmN0aW9uIGJhY2tlbmRHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocHJvcGVydHlOYW1lKQotICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiB0aGlzW3Byb3BlcnR5TmFtZV07Ci0g
ICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGZ1bmN0aW9uIHdyYXBwZWRDYWxsYmFjayhlcnJv
ciwgcmVzdWx0LCB3YXNUaHJvd24pCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaWYg
KGVycm9yIHx8IHdhc1Rocm93biB8fCAhKHJlc3VsdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5S
ZW1vdGVPYmplY3QpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKG51bGwpOwotICAg
ICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICBmdW5j
dGlvbiBiYWNrZW5kR2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHByb3BlcnR5TmFtZSkKKyAgICAg
ICAgeworICAgICAgICAgICAgcmV0dXJuIHRoaXNbcHJvcGVydHlOYW1lXTsKKyAgICAgICAgfQog
Ci0gICAgICAgICAgICAgICAgdmFyIGZha2VEZXNjcmlwdG9yID0ge25hbWU6IHByb3BlcnR5TmFt
ZSwgdmFsdWU6IHJlc3VsdCwgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgZW51
bWVyYWJsZTogZmFsc2V9OwotICAgICAgICAgICAgICAgIHZhciBmYWtlUHJvcGVydHlEZXNjcmlw
dG9yID0gbmV3IFdlYkluc3BlY3Rvci5Qcm9wZXJ0eURlc2NyaXB0b3IoZmFrZURlc2NyaXB0b3Is
IHRydWUsIGZhbHNlLCBmYWxzZSwgZmFsc2UpOwotICAgICAgICAgICAgICAgIGNhbGxiYWNrKGZh
a2VQcm9wZXJ0eURlc2NyaXB0b3IpOworICAgICAgICBmdW5jdGlvbiB3cmFwcGVkQ2FsbGJhY2so
ZXJyb3IsIHJlc3VsdCwgd2FzVGhyb3duKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoZXJy
b3IgfHwgd2FzVGhyb3duIHx8ICEocmVzdWx0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlJlbW90
ZU9iamVjdCkpIHsKKyAgICAgICAgICAgICAgICBjYWxsYmFjayhudWxsKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIHRoaXMuY2FsbEZ1bmN0
aW9uKGJhY2tlbmRHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IsIFtwcm9wZXJ0eU5hbWVdLCBmYWxz
ZSwgd3JhcHBlZENhbGxiYWNrKTsKKyAgICAgICAgICAgIHZhciBmYWtlRGVzY3JpcHRvciA9IHtu
YW1lOiBwcm9wZXJ0eU5hbWUsIHZhbHVlOiByZXN1bHQsIHdyaXRhYmxlOiB0cnVlLCBjb25maWd1
cmFibGU6IHRydWUsIGVudW1lcmFibGU6IGZhbHNlfTsKKyAgICAgICAgICAgIHZhciBmYWtlUHJv
cGVydHlEZXNjcmlwdG9yID0gbmV3IFdlYkluc3BlY3Rvci5Qcm9wZXJ0eURlc2NyaXB0b3IoZmFr
ZURlc2NyaXB0b3IsIHRydWUsIGZhbHNlLCBmYWxzZSwgZmFsc2UpOworICAgICAgICAgICAgY2Fs
bGJhY2soZmFrZVByb3BlcnR5RGVzY3JpcHRvcik7CiAgICAgICAgIH0KIAotICAgICAgICAvLyBG
SVhNRTogSW1wbGVtZW50IGEgcmVhbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I/Ci0gICAgfSwK
KyAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCBhIHJlYWwgUnVudGltZUFnZW50LmdldE93blBy
b3BlcnR5RGVzY3JpcHRvcj8KKyAgICAgICAgdGhpcy5jYWxsRnVuY3Rpb24oYmFja2VuZEdldE93
blByb3BlcnR5RGVzY3JpcHRvciwgW3Byb3BlcnR5TmFtZV0sIGZhbHNlLCB3cmFwcGVkQ2FsbGJh
Y2spOworICAgIH0KIAotICAgIHJlbGVhc2U6IGZ1bmN0aW9uKCkKKyAgICByZWxlYXNlKCkKICAg
ICB7CiAgICAgICAgIFJ1bnRpbWVBZ2VudC5yZWxlYXNlT2JqZWN0KHRoaXMuX29iamVjdElkKTsK
LSAgICB9LAorICAgIH0KIAotICAgIGFycmF5TGVuZ3RoOiBmdW5jdGlvbigpCisgICAgYXJyYXlM
ZW5ndGgoKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX3N1YnR5cGUgIT09ICJhcnJheSIpCiAg
ICAgICAgICAgICByZXR1cm4gMDsKQEAgLTUxNSwzMiArNDQyLDExNiBAQCBXZWJJbnNwZWN0b3Iu
UmVtb3RlT2JqZWN0LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybiAwOwogCiAgICAg
ICAgIHJldHVybiBwYXJzZUludChtYXRjaGVzWzFdLCAxMCk7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICBhc0NhbGxBcmd1bWVudDogZnVuY3Rpb24oKQorICAgIGFzQ2FsbEFyZ3VtZW50KCkKICAgICB7
CiAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0LmNyZWF0ZUNhbGxBcmd1
bWVudCh0aGlzKTsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByaXZhdGUKIAotICAgIF93ZWFr
Q29sbGVjdGlvbk9iamVjdEdyb3VwOiBmdW5jdGlvbigpCisgICAgX2lzU3ltYm9sKCkKKyAgICB7
CisgICAgICAgIHJldHVybiB0aGlzLl90eXBlID09PSAic3ltYm9sIjsKKyAgICB9CisKKyAgICBf
d2Vha0NvbGxlY3Rpb25PYmplY3RHcm91cCgpCiAgICAgewogICAgICAgICByZXR1cm4gSlNPTi5z
dHJpbmdpZnkodGhpcy5fb2JqZWN0SWQpICsgIi1XZWFrTWFwIjsKICAgICB9Ci19OwogCi1XZWJJ
bnNwZWN0b3IuUmVtb3RlT2JqZWN0UHJvcGVydHkgPSBmdW5jdGlvbihuYW1lLCB2YWx1ZSwgZGVz
Y3JpcHRvcikKLXsKLSAgICB0aGlzLm5hbWUgPSBuYW1lOwotICAgIHRoaXMudmFsdWUgPSB2YWx1
ZTsKLSAgICB0aGlzLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yID8gISFkZXNjcmlwdG9yLmVudW1l
cmFibGUgOiB0cnVlOwotICAgIHRoaXMud3JpdGFibGUgPSBkZXNjcmlwdG9yID8gISFkZXNjcmlw
dG9yLndyaXRhYmxlIDogdHJ1ZTsKLSAgICBpZiAoZGVzY3JpcHRvciAmJiBkZXNjcmlwdG9yLndh
c1Rocm93bikKLSAgICAgICAgdGhpcy53YXNUaHJvd24gPSB0cnVlOworICAgIF9nZXRQcm9wZXJ0
eURlc2NyaXB0b3JzKG93blByb3BlcnRpZXMsIGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgaWYg
KCF0aGlzLl9vYmplY3RJZCB8fCB0aGlzLl9pc1N5bWJvbCgpKSB7CisgICAgICAgICAgICBjYWxs
YmFjayhbXSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBSdW50
aW1lQWdlbnQuZ2V0UHJvcGVydGllcyh0aGlzLl9vYmplY3RJZCwgb3duUHJvcGVydGllcywgdHJ1
ZSwgdGhpcy5fZ2V0UHJvcGVydHlEZXNjcmlwdG9yc1Jlc29sdmVyLmJpbmQodGhpcywgY2FsbGJh
Y2spKTsKKyAgICB9CisKKyAgICBfZ2V0UHJvcGVydHlEZXNjcmlwdG9yc1Jlc29sdmVyKGNhbGxi
YWNrLCBlcnJvciwgcHJvcGVydGllcywgaW50ZXJuYWxQcm9wZXJ0aWVzKQorICAgIHsKKyAgICAg
ICAgaWYgKGVycm9yKSB7CisgICAgICAgICAgICBjYWxsYmFjayhudWxsKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHZhciBkZXNjcmlwdG9ycyA9IHByb3BlcnRp
ZXMubWFwKGZ1bmN0aW9uKHBheWxvYWQpIHsKKyAgICAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0
b3IuUHJvcGVydHlEZXNjcmlwdG9yLmZyb21QYXlsb2FkKHBheWxvYWQpOworICAgICAgICB9KTsK
KworICAgICAgICBpZiAoaW50ZXJuYWxQcm9wZXJ0aWVzKSB7CisgICAgICAgICAgICBkZXNjcmlw
dG9ycyA9IGRlc2NyaXB0b3JzLmNvbmNhdChpbnRlcm5hbFByb3BlcnRpZXMubWFwKGZ1bmN0aW9u
KHBheWxvYWQpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlByb3BlcnR5
RGVzY3JpcHRvci5mcm9tUGF5bG9hZChwYXlsb2FkLCB0cnVlKTsKKyAgICAgICAgICAgIH0pKTsK
KyAgICAgICAgfQorCisgICAgICAgIGNhbGxiYWNrKGRlc2NyaXB0b3JzKTsKKyAgICB9CisKKyAg
ICAvLyBGSVhNRTogUGhhc2Ugb3V0IHRoZXNlIGRlcHJlY2F0ZWQgZnVuY3Rpb25zLiBUaGV5IHJl
dHVybiBEZXByZWNhdGVkUmVtb3RlT2JqZWN0UHJvcGVydHkgaW5zdGVhZCBvZiBQcm9wZXJ0eURl
c2NyaXB0b3JzLgorICAgIF9kZXByZWNhdGVkR2V0UHJvcGVydGllcyhvd25Qcm9wZXJ0aWVzLCBj
YWxsYmFjaykKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5fb2JqZWN0SWQgfHwgdGhpcy5faXNT
eW1ib2woKSkgeworICAgICAgICAgICAgY2FsbGJhY2soW10pOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisKKyAgICAgICAgUnVudGltZUFnZW50LmdldFByb3BlcnRpZXModGhpcy5f
b2JqZWN0SWQsIG93blByb3BlcnRpZXMsIHRoaXMuX2RlcHJlY2F0ZWRHZXRQcm9wZXJ0aWVzUmVz
b2x2ZXIuYmluZCh0aGlzLCBjYWxsYmFjaykpOworICAgIH0KKworICAgIF9kZXByZWNhdGVkR2V0
UHJvcGVydGllc1Jlc29sdmVyKGNhbGxiYWNrLCBlcnJvciwgcHJvcGVydGllcywgaW50ZXJuYWxQ
cm9wZXJ0aWVzKQorICAgIHsKKyAgICAgICAgaWYgKGVycm9yKSB7CisgICAgICAgICAgICBjYWxs
YmFjayhudWxsKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlm
IChpbnRlcm5hbFByb3BlcnRpZXMpIHsKKyAgICAgICAgICAgIHByb3BlcnRpZXMgPSBwcm9wZXJ0
aWVzLmNvbmNhdChpbnRlcm5hbFByb3BlcnRpZXMubWFwKGZ1bmN0aW9uKGRlc2NyaXB0b3IpIHsK
KyAgICAgICAgICAgICAgICBkZXNjcmlwdG9yLndyaXRhYmxlID0gZmFsc2U7CisgICAgICAgICAg
ICAgICAgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBk
ZXNjcmlwdG9yLmVudW1lcmFibGUgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBkZXNjcmlwdG9y
LmlzT3duID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZGVzY3JpcHRvcjsKKyAgICAg
ICAgICAgIH0pKTsKKyAgICAgICAgfQorCisgICAgICAgIHZhciByZXN1bHQgPSBbXTsKKyAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IHByb3BlcnRpZXMgJiYgaSA8IHByb3BlcnRpZXMubGVuZ3RoOyAr
K2kpIHsKKyAgICAgICAgICAgIHZhciBwcm9wZXJ0eSA9IHByb3BlcnRpZXNbaV07CisgICAgICAg
ICAgICBpZiAocHJvcGVydHkuZ2V0IHx8IHByb3BlcnR5LnNldCkgeworICAgICAgICAgICAgICAg
IGlmIChwcm9wZXJ0eS5nZXQpCisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKG5ldyBX
ZWJJbnNwZWN0b3IuRGVwcmVjYXRlZFJlbW90ZU9iamVjdFByb3BlcnR5KCJnZXQgIiArIHByb3Bl
cnR5Lm5hbWUsIFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QuZnJvbVBheWxvYWQocHJvcGVydHku
Z2V0KSwgcHJvcGVydHkpKTsKKyAgICAgICAgICAgICAgICBpZiAocHJvcGVydHkuc2V0KQorICAg
ICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChuZXcgV2ViSW5zcGVjdG9yLkRlcHJlY2F0ZWRS
ZW1vdGVPYmplY3RQcm9wZXJ0eSgic2V0ICIgKyBwcm9wZXJ0eS5uYW1lLCBXZWJJbnNwZWN0b3Iu
UmVtb3RlT2JqZWN0LmZyb21QYXlsb2FkKHByb3BlcnR5LnNldCksIHByb3BlcnR5KSk7CisgICAg
ICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICByZXN1bHQucHVzaChuZXcgV2ViSW5zcGVj
dG9yLkRlcHJlY2F0ZWRSZW1vdGVPYmplY3RQcm9wZXJ0eShwcm9wZXJ0eS5uYW1lLCBXZWJJbnNw
ZWN0b3IuUmVtb3RlT2JqZWN0LmZyb21QYXlsb2FkKHByb3BlcnR5LnZhbHVlKSwgcHJvcGVydHkp
KTsKKyAgICAgICAgfQorCisgICAgICAgIGNhbGxiYWNrKHJlc3VsdCk7CisgICAgfQogfTsKIAot
V2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdFByb3BlcnR5LmZyb21QcmltaXRpdmVWYWx1ZSA9IGZ1
bmN0aW9uKG5hbWUsIHZhbHVlKQorLy8gRklYTUU6IFBoYXNlIG91dCB0aGlzIGRlcHJlY2F0ZWQg
Y2xhc3MuCitXZWJJbnNwZWN0b3IuRGVwcmVjYXRlZFJlbW90ZU9iamVjdFByb3BlcnR5ID0gY2xh
c3MgRGVwcmVjYXRlZFJlbW90ZU9iamVjdFByb3BlcnR5CiB7Ci0gICAgcmV0dXJuIG5ldyBXZWJJ
bnNwZWN0b3IuUmVtb3RlT2JqZWN0UHJvcGVydHkobmFtZSwgV2ViSW5zcGVjdG9yLlJlbW90ZU9i
amVjdC5mcm9tUHJpbWl0aXZlVmFsdWUodmFsdWUpKTsKKyAgICBjb25zdHJ1Y3RvcihuYW1lLCB2
YWx1ZSwgZGVzY3JpcHRvcikKKyAgICB7CisgICAgICAgIHRoaXMubmFtZSA9IG5hbWU7CisgICAg
ICAgIHRoaXMudmFsdWUgPSB2YWx1ZTsKKyAgICAgICAgdGhpcy5lbnVtZXJhYmxlID0gZGVzY3Jp
cHRvciA/ICEhZGVzY3JpcHRvci5lbnVtZXJhYmxlIDogdHJ1ZTsKKyAgICAgICAgdGhpcy53cml0
YWJsZSA9IGRlc2NyaXB0b3IgPyAhIWRlc2NyaXB0b3Iud3JpdGFibGUgOiB0cnVlOworICAgICAg
ICBpZiAoZGVzY3JpcHRvciAmJiBkZXNjcmlwdG9yLndhc1Rocm93bikKKyAgICAgICAgICAgIHRo
aXMud2FzVGhyb3duID0gdHJ1ZTsKKyAgICB9CisKKyAgICAvLyBTdGF0aWMKKworICAgIGZyb21Q
cmltaXRpdmVWYWx1ZShuYW1lLCB2YWx1ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBuZXcgV2Vi
SW5zcGVjdG9yLkRlcHJlY2F0ZWRSZW1vdGVPYmplY3RQcm9wZXJ0eShuYW1lLCBXZWJJbnNwZWN0
b3IuUmVtb3RlT2JqZWN0LmZyb21QcmltaXRpdmVWYWx1ZSh2YWx1ZSkpOworICAgIH0KIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9S
ZXBsYXlPYnNlcnZlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1By
b3RvY29sL1JlcGxheU9ic2VydmVyLmpzCmluZGV4IDJjYWRjNjYxYzMxNjRiMGI4Yjk5YzI5YTNh
OTVlMWIxMmU1MDc2YWYuLmUwYTg2NzE5YTk0OTdjN2ZmMjA3MTYwZDM0ZWNlMzYxMmQyYzYxYzYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29s
L1JlcGxheU9ic2VydmVyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1Byb3RvY29sL1JlcGxheU9ic2VydmVyLmpzCkBAIC0yNCwxMDMgKzI0LDk2IEBACiAgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLlJlcGxh
eVBvc2l0aW9uID0gZnVuY3Rpb24oc2VnbWVudE9mZnNldCwgaW5wdXRPZmZzZXQpCisvLyBGSVhN
RTogVGhpcyBSZXBsYXlQb3NpdGlvbiBjbGFzcyBzaG91bGRuJ3QgYmUgaGVyZSwgbm8gbWF0dGVy
IGhvdyBzaW1wbGUgaXQgaXMuCitXZWJJbnNwZWN0b3IuUmVwbGF5UG9zaXRpb24gPSBjbGFzcyBS
ZXBsYXlQb3NpdGlvbgogewotICAgIHRoaXMuc2VnbWVudE9mZnNldCA9IHNlZ21lbnRPZmZzZXQ7
Ci0gICAgdGhpcy5pbnB1dE9mZnNldCA9IGlucHV0T2Zmc2V0OwotfTsKLQotV2ViSW5zcGVjdG9y
LlJlcGxheVBvc2l0aW9uLmZyb21Qcm90b2NvbCA9IGZ1bmN0aW9uKHBheWxvYWQpCi17Ci0gICAg
cmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuUmVwbGF5UG9zaXRpb24ocGF5bG9hZC5zZWdtZW50T2Zm
c2V0LCBwYXlsb2FkLmlucHV0T2Zmc2V0KTsKKyAgICBjb25zdHJ1Y3RvcihzZWdtZW50T2Zmc2V0
LCBpbnB1dE9mZnNldCkKKyAgICB7CisgICAgICAgIHRoaXMuc2VnbWVudE9mZnNldCA9IHNlZ21l
bnRPZmZzZXQ7CisgICAgICAgIHRoaXMuaW5wdXRPZmZzZXQgPSBpbnB1dE9mZnNldDsKKyAgICB9
CiB9OwogCi1XZWJJbnNwZWN0b3IuUmVwbGF5T2JzZXJ2ZXIgPSBmdW5jdGlvbigpCitXZWJJbnNw
ZWN0b3IuUmVwbGF5T2JzZXJ2ZXIgPSBjbGFzcyBSZXBsYXlPYnNlcnZlcgogewotICAgIC8vIEZJ
WE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQg
Y2FsbCBzdXBlcigpLgotICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKLX07
CisgICAgLy8gRXZlbnRzIGRlZmluZWQgYnkgdGhlICJSZXBsYXkiIGRvbWFpbi4KIAotV2ViSW5z
cGVjdG9yLlJlcGxheU9ic2VydmVyLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2Vi
SW5zcGVjdG9yLlJlcGxheU9ic2VydmVyLAotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLk9i
amVjdC5wcm90b3R5cGUsCi0KLSAgICBjYXB0dXJlU3RhcnRlZDogZnVuY3Rpb24oKQorICAgIGNh
cHR1cmVTdGFydGVkKCkKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5yZXBsYXlNYW5hZ2Vy
LmNhcHR1cmVTdGFydGVkKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBjYXB0dXJlU3RvcHBlZDog
ZnVuY3Rpb24oKQorICAgIGNhcHR1cmVTdG9wcGVkKCkKICAgICB7CiAgICAgICAgIFdlYkluc3Bl
Y3Rvci5yZXBsYXlNYW5hZ2VyLmNhcHR1cmVTdG9wcGVkKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICBwbGF5YmFja1N0YXJ0ZWQ6IGZ1bmN0aW9uKCkKKyAgICBwbGF5YmFja1N0YXJ0ZWQoKQogICAg
IHsKICAgICAgICAgV2ViSW5zcGVjdG9yLnJlcGxheU1hbmFnZXIucGxheWJhY2tTdGFydGVkKCk7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBwbGF5YmFja0hpdFBvc2l0aW9uOiBmdW5jdGlvbihyZXBs
YXlQb3NpdGlvbiwgdGltZXN0YW1wKQorICAgIHBsYXliYWNrSGl0UG9zaXRpb24ocmVwbGF5UG9z
aXRpb24sIHRpbWVzdGFtcCkKICAgICB7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5yZXBsYXlNYW5h
Z2VyLnBsYXliYWNrSGl0UG9zaXRpb24oV2ViSW5zcGVjdG9yLlJlcGxheVBvc2l0aW9uLmZyb21Q
cm90b2NvbChyZXBsYXlQb3NpdGlvbiksIHRpbWVzdGFtcCk7Ci0gICAgfSwKKyAgICAgICAgV2Vi
SW5zcGVjdG9yLnJlcGxheU1hbmFnZXIucGxheWJhY2tIaXRQb3NpdGlvbihuZXcgV2ViSW5zcGVj
dG9yLlJlcGxheVBvc2l0aW9uKHJlcGxheVBvc2l0aW9uLnNlZ21lbnRPZmZzZXQsIHJlcGxheVBv
c2l0aW9uLmlucHV0T2Zmc2V0KSwgdGltZXN0YW1wKTsKKyAgICB9CiAKLSAgICBwbGF5YmFja1Bh
dXNlZDogZnVuY3Rpb24ocmVwbGF5UG9zaXRpb24pCisgICAgcGxheWJhY2tQYXVzZWQocmVwbGF5
UG9zaXRpb24pCiAgICAgewotICAgICAgICBXZWJJbnNwZWN0b3IucmVwbGF5TWFuYWdlci5wbGF5
YmFja1BhdXNlZChXZWJJbnNwZWN0b3IuUmVwbGF5UG9zaXRpb24uZnJvbVByb3RvY29sKHJlcGxh
eVBvc2l0aW9uKSk7Ci0gICAgfSwKKyAgICAgICAgV2ViSW5zcGVjdG9yLnJlcGxheU1hbmFnZXIu
cGxheWJhY2tQYXVzZWQobmV3IFdlYkluc3BlY3Rvci5SZXBsYXlQb3NpdGlvbihyZXBsYXlQb3Np
dGlvbi5zZWdtZW50T2Zmc2V0LCByZXBsYXlQb3NpdGlvbi5pbnB1dE9mZnNldCkpOworICAgIH0K
IAotICAgIHBsYXliYWNrRmluaXNoZWQ6IGZ1bmN0aW9uKCkKKyAgICBwbGF5YmFja0ZpbmlzaGVk
KCkKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5yZXBsYXlNYW5hZ2VyLnBsYXliYWNrRmlu
aXNoZWQoKTsKLSAgICB9LAorICAgIH0KIAotICAgIGlucHV0U3VwcHJlc3Npb25DaGFuZ2VkOiBm
dW5jdGlvbih3aWxsU3VwcHJlc3MpCisgICAgaW5wdXRTdXBwcmVzc2lvbkNoYW5nZWQod2lsbFN1
cHByZXNzKQogICAgIHsKICAgICAgICAgLy8gTm90IGhhbmRsZWQgeWV0LgotICAgIH0sCisgICAg
fQogCi0gICAgc2Vzc2lvbkNyZWF0ZWQ6IGZ1bmN0aW9uKHNlc3Npb25JZCkKKyAgICBzZXNzaW9u
Q3JlYXRlZChzZXNzaW9uSWQpCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3IucmVwbGF5TWFu
YWdlci5zZXNzaW9uQ3JlYXRlZChzZXNzaW9uSWQpOwotICAgIH0sCisgICAgfQogCi0gICAgc2Vz
c2lvbk1vZGlmaWVkOiBmdW5jdGlvbihzZXNzaW9uSWQpCisgICAgc2Vzc2lvbk1vZGlmaWVkKHNl
c3Npb25JZCkKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5yZXBsYXlNYW5hZ2VyLnNlc3Np
b25Nb2RpZmllZChzZXNzaW9uSWQpOwotICAgIH0sCisgICAgfQogCi0gICAgc2Vzc2lvblJlbW92
ZWQ6IGZ1bmN0aW9uKHNlc3Npb25JZCkKKyAgICBzZXNzaW9uUmVtb3ZlZChzZXNzaW9uSWQpCiAg
ICAgewogICAgICAgICBXZWJJbnNwZWN0b3IucmVwbGF5TWFuYWdlci5zZXNzaW9uUmVtb3ZlZChz
ZXNzaW9uSWQpOwotICAgIH0sCisgICAgfQogCi0gICAgc2Vzc2lvbkxvYWRlZDogZnVuY3Rpb24o
c2Vzc2lvbklkKQorICAgIHNlc3Npb25Mb2FkZWQoc2Vzc2lvbklkKQogICAgIHsKICAgICAgICAg
V2ViSW5zcGVjdG9yLnJlcGxheU1hbmFnZXIuc2Vzc2lvbkxvYWRlZChzZXNzaW9uSWQpOwotICAg
IH0sCisgICAgfQogCi0gICAgc2VnbWVudENyZWF0ZWQ6IGZ1bmN0aW9uKHNlZ21lbnRJZCkKKyAg
ICBzZWdtZW50Q3JlYXRlZChzZWdtZW50SWQpCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3Iu
cmVwbGF5TWFuYWdlci5zZWdtZW50Q3JlYXRlZChzZWdtZW50SWQpOwotICAgIH0sCisgICAgfQog
Ci0gICAgc2VnbWVudFJlbW92ZWQ6IGZ1bmN0aW9uKHNlZ21lbnRJZCkKKyAgICBzZWdtZW50UmVt
b3ZlZChzZWdtZW50SWQpCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3IucmVwbGF5TWFuYWdl
ci5zZWdtZW50UmVtb3ZlZChzZWdtZW50SWQpOwotICAgIH0sCisgICAgfQogCi0gICAgc2VnbWVu
dENvbXBsZXRlZDogZnVuY3Rpb24oc2VnbWVudElkKQorICAgIHNlZ21lbnRDb21wbGV0ZWQoc2Vn
bWVudElkKQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLnJlcGxheU1hbmFnZXIuc2VnbWVu
dENvbXBsZXRlZChzZWdtZW50SWQpOwotICAgIH0sCisgICAgfQogCi0gICAgc2VnbWVudExvYWRl
ZDogZnVuY3Rpb24oc2VnbWVudElkKQorICAgIHNlZ21lbnRMb2FkZWQoc2VnbWVudElkKQogICAg
IHsKICAgICAgICAgV2ViSW5zcGVjdG9yLnJlcGxheU1hbmFnZXIuc2VnbWVudExvYWRlZChzZWdt
ZW50SWQpOwotICAgIH0sCisgICAgfQogCi0gICAgc2VnbWVudFVubG9hZGVkOiBmdW5jdGlvbigp
CisgICAgc2VnbWVudFVubG9hZGVkKCkKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5yZXBs
YXlNYW5hZ2VyLnNlZ21lbnRVbmxvYWRlZCgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL1J1bnRpbWVPYnNlcnZlci5qcyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL1J1bnRpbWVPYnNl
cnZlci5qcwppbmRleCA5NjllZDI0YWIzOTgzODZiNTUzNmQ1MDU4MTQ1YjdkOGQwYTk5ZGMxLi5l
MDliYWE0ODBhYWU4NzU5YjkzZmFiNzAzZDYxODI3Y2I4ZjYwN2Y5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9SdW50aW1lT2JzZXJ2ZXIu
anMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvUnVu
dGltZU9ic2VydmVyLmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMs
IDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0yMywyMSArMjMsMTIgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuUnVudGltZU9ic2VydmVyID0gZnVuY3Rp
b24oKQorV2ViSW5zcGVjdG9yLlJ1bnRpbWVPYnNlcnZlciA9IGNsYXNzIFJ1bnRpbWVPYnNlcnZl
cgogewotICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0
IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBlcigpLgotICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3Qu
Y2FsbCh0aGlzKTsKLX07Ci0KLVdlYkluc3BlY3Rvci5SdW50aW1lT2JzZXJ2ZXIucHJvdG90eXBl
ID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuUnVudGltZU9ic2VydmVyLAotCiAg
ICAgLy8gRXZlbnRzIGRlZmluZWQgYnkgdGhlICJSdW50aW1lIiBkb21haW4uCiAKLSAgICBleGVj
dXRpb25Db250ZXh0Q3JlYXRlZDogZnVuY3Rpb24oY29udGV4dFBheWxvYWQpCisgICAgZXhlY3V0
aW9uQ29udGV4dENyZWF0ZWQoY29udGV4dFBheWxvYWQpCiAgICAgewogICAgICAgICBXZWJJbnNw
ZWN0b3IuZnJhbWVSZXNvdXJjZU1hbmFnZXIuZXhlY3V0aW9uQ29udGV4dENyZWF0ZWQoY29udGV4
dFBheWxvYWQpOwogICAgIH0KIH07Ci0KLVdlYkluc3BlY3Rvci5SdW50aW1lT2JzZXJ2ZXIucHJv
dG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvVGltZWxp
bmVPYnNlcnZlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3Rv
Y29sL1RpbWVsaW5lT2JzZXJ2ZXIuanMKaW5kZXggOTUxNGJkZTQ0MDY5ZWU4NmZlNjE5ZDhlNDZh
ZmFiYmI1NjA2MTZmYi4uYTZlYzRiNWZhMWEyYTA2MTA3MzUzYzMwNWJmNGRiOWNkNGYxNDY5MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wv
VGltZWxpbmVPYnNlcnZlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Qcm90b2NvbC9UaW1lbGluZU9ic2VydmVyLmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywzMSArMjMsMjIgQEAKICAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuVGltZWxp
bmVPYnNlcnZlciA9IGZ1bmN0aW9uKCkKK1dlYkluc3BlY3Rvci5UaW1lbGluZU9ic2VydmVyID0g
Y2xhc3MgVGltZWxpbmVPYnNlcnZlcgogewotICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8g
YSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBlcigpLgotICAgIC8v
IFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKLX07Ci0KLVdlYkluc3BlY3Rvci5UaW1l
bGluZU9ic2VydmVyLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9y
LlRpbWVsaW5lT2JzZXJ2ZXIsCi0KICAgICAvLyBFdmVudHMgZGVmaW5lZCBieSB0aGUgIlRpbWVs
aW5lIiBkb21haW4uCiAKLSAgICBldmVudFJlY29yZGVkOiBmdW5jdGlvbihyZWNvcmQpCisgICAg
ZXZlbnRSZWNvcmRlZChyZWNvcmQpCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3IudGltZWxp
bmVNYW5hZ2VyLmV2ZW50UmVjb3JkZWQocmVjb3JkKTsKLSAgICB9LAorICAgIH0KIAotICAgIHJl
Y29yZGluZ1N0YXJ0ZWQ6IGZ1bmN0aW9uKCkKKyAgICByZWNvcmRpbmdTdGFydGVkKCkKICAgICB7
CiAgICAgICAgIFdlYkluc3BlY3Rvci50aW1lbGluZU1hbmFnZXIuY2FwdHVyaW5nU3RhcnRlZCgp
OwotICAgIH0sCisgICAgfQogCi0gICAgcmVjb3JkaW5nU3RvcHBlZDogZnVuY3Rpb24oKQorICAg
IHJlY29yZGluZ1N0b3BwZWQoKQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLnRpbWVsaW5l
TWFuYWdlci5jYXB0dXJpbmdTdG9wcGVkKCk7CiAgICAgfQogfTsKLQotV2ViSW5zcGVjdG9yLlRp
bWVsaW5lT2JzZXJ2ZXIucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5PYmplY3Qu
cHJvdG90eXBlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249498</attachid>
            <date>2015-03-26 11:11:53 -0700</date>
            <delta_ts>2015-03-26 11:19:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143107-20150326111114.patch</filename>
            <type>text/plain</type>
            <size>179680</size>
            <attacher name="Timothy Hatcher">timothy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgxOTE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCAz
MjIzYTMzZDE2ZGUwZTQwNTZjZTFjZTQxYzZkMjI3N2QxZDU5MjlhLi45YzFkZTI1NDE4NjQxNTUx
NzcwYzBlYzA2ZmY2MjFlZTE2MjVmNTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSw0NyBAQAogMjAxNS0wMy0yNiAgVGltb3RoeSBIYXRjaGVyICA8dGltb3RoeUBhcHBsZS5j
b20+CiAKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQ29udmVydCBzb21lIFZpZXcgY2xhc3NlcyB0
byBFUzYgY2xhc3NlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTQzMTA3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBVc2VySW50ZXJmYWNlL1Byb3RvY29sL0luc3BlY3RvckJhY2tlbmQuanM6CisgICAg
ICAgICogVXNlckludGVyZmFjZS9Qcm90b2NvbC9JbnNwZWN0b3JGcm9udGVuZEFQSS5qczoKKyAg
ICAgICAgKEluc3BlY3RvckZyb250ZW5kQVBJLmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKTogVXBk
YXRlZCB0byB0aGUgcmlnaHQgZnVuY3Rpb24gcGF0aC4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNl
L1ZpZXdzL0JveE1vZGVsRGV0YWlsc1NlY3Rpb25Sb3cuanM6CisgICAgICAgICogVXNlckludGVy
ZmFjZS9WaWV3cy9CcmVha3BvaW50QWN0aW9uVmlldy5qczoKKyAgICAgICAgKiBVc2VySW50ZXJm
YWNlL1ZpZXdzL0NvZGVNaXJyb3JBZGRpdGlvbnMuanM6CisgICAgICAgICogVXNlckludGVyZmFj
ZS9WaWV3cy9Db2xvclBpY2tlci5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0Nv
bG9yV2hlZWwuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9Db250ZXh0TWVudS5q
czoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVFbGVtZW50UGF0aENvbXBv
bmVudC5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0RldGFpbHNTZWN0aW9uLmpz
OgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvRGV0YWlsc1NlY3Rpb25EYXRhR3JpZFJv
dy5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0RldGFpbHNTZWN0aW9uR3JvdXAu
anM6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9EZXRhaWxzU2VjdGlvblByb3BlcnRp
ZXNSb3cuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9EZXRhaWxzU2VjdGlvblJv
dy5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0RldGFpbHNTZWN0aW9uU2ltcGxl
Um93LmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvRGV0YWlsc1NlY3Rpb25UZXh0
Um93LmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvRWRpdGluZ1N1cHBvcnQuanM6
CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9FdmVudExpc3RlbmVyU2VjdGlvbi5qczoK
KyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0V2ZW50TGlzdGVuZXJTZWN0aW9uR3JvdXAu
anM6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9GaWx0ZXJCYXIuanM6CisgICAgICAg
ICogVXNlckludGVyZmFjZS9WaWV3cy9GaW5kQmFubmVyLmpzOgorICAgICAgICAqIFVzZXJJbnRl
cmZhY2UvVmlld3MvR2VuZXJhbFRyZWVFbGVtZW50UGF0aENvbXBvbmVudC5qczoKKyAgICAgICAg
KiBVc2VySW50ZXJmYWNlL1ZpZXdzL0dvVG9MaW5lRGlhbG9nLmpzOgorICAgICAgICAqIFVzZXJJ
bnRlcmZhY2UvVmlld3MvR3JhZGllbnRTbGlkZXIuanM6CisgICAgICAgICogVXNlckludGVyZmFj
ZS9WaWV3cy9IaWVyYXJjaGljYWxQYXRoQ29tcG9uZW50LmpzOgorICAgICAgICAqIFVzZXJJbnRl
cmZhY2UvVmlld3MvSGllcmFyY2hpY2FsUGF0aE5hdmlnYXRpb25JdGVtLmpzOgorICAgICAgICAq
IFVzZXJJbnRlcmZhY2UvVmlld3MvSG92ZXJNZW51LmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZh
Y2UvVmlld3MvUG9wb3Zlci5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1Byb2Jl
U2V0RGV0YWlsc1NlY3Rpb24uanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9SZXNv
dXJjZVRpbWVsaW5lRGF0YUdyaWROb2RlUGF0aENvbXBvbmVudC5qczoKKyAgICAgICAgKiBVc2Vy
SW50ZXJmYWNlL1ZpZXdzL1NlYXJjaEJhci5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Zp
ZXdzL1NsaWRlci5qczoKKyAgICAgICAgQ29udmVydGVkIHRvIEVTNiBja2Fzc2VzLgorCisyMDE1
LTAzLTI2ICBUaW1vdGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KKwogICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBDb252ZXJ0IEJhc2UgYW5kIFByb3RvY29sIGZpbGVzIHRvIEVTNiBjbGFz
c2VzCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDMx
MDYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJv
dG9jb2wvSW5zcGVjdG9yQmFja2VuZC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1Byb3RvY29sL0luc3BlY3RvckJhY2tlbmQuanMKaW5kZXggZTdiODA3YjM3NDUyNjM5
MTU2OTJiNzM1OWI0OTkyNTM1M2Y2NTlkMy4uZTQ1MTVmNzA2NmQzM2UyNjExNjAyM2YwYjU4YzJl
NzFiZDViOGM1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvUHJvdG9jb2wvSW5zcGVjdG9yQmFja2VuZC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9JbnNwZWN0b3JCYWNrZW5kLmpzCkBAIC0xLDYgKzEs
NiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTQgVW5pdmVyc2l0eSBvZiBXYXNoaW5ndG9u
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dApAQCAtMTgwLDcgKzE4MCw3IEBAIEluc3BlY3RvckJhY2tlbmRD
bGFzcyA9IGNsYXNzIEluc3BlY3RvckJhY2tlbmRDbGFzcwogICAgICAgICAgICAgdHJ5IHsKICAg
ICAgICAgICAgICAgICBjYWxsYmFjay5hcHBseShudWxsLCBjYWxsYmFja0FyZ3VtZW50cyk7CiAg
ICAgICAgICAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcigi
VW5jYXVnaHQgZXhjZXB0aW9uIGluIGluc3BlY3RvciBwYWdlIHdoaWxlIGRpc3BhdGNoaW5nIGNh
bGxiYWNrIGZvciBjb21tYW5kICIgKyBjb21tYW5kLnF1YWxpZmllZE5hbWUgKyAiOiAiLCBlKTsK
KyAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCJVbmNhdWdodCBleGNlcHRpb24gaW4gaW5z
cGVjdG9yIHBhZ2Ugd2hpbGUgZGlzcGF0Y2hpbmcgY2FsbGJhY2sgZm9yIGNvbW1hbmQgIiArIGNv
bW1hbmQucXVhbGlmaWVkTmFtZSArICI6ICIsIGUsIGUuc3RhY2spOwogICAgICAgICAgICAgfQog
CiAgICAgICAgICAgICB2YXIgcHJvY2Vzc2luZ0R1cmF0aW9uID0gRGF0ZS5ub3coKSAtIHByb2Nl
c3NpbmdTdGFydFRpbWU7CkBAIC0yMzIsNyArMjMyLDcgQEAgSW5zcGVjdG9yQmFja2VuZENsYXNz
ID0gY2xhc3MgSW5zcGVjdG9yQmFja2VuZENsYXNzCiAgICAgICAgIHRyeSB7CiAgICAgICAgICAg
ICBhZ2VudC5kaXNwYXRjaEV2ZW50KGV2ZW50TmFtZSwgZXZlbnRBcmd1bWVudHMpOwogICAgICAg
ICB9IGNhdGNoIChlKSB7Ci0gICAgICAgICAgICBjb25zb2xlLmVycm9yKCJVbmNhdWdodCBleGNl
cHRpb24gaW4gaW5zcGVjdG9yIHBhZ2Ugd2hpbGUgaGFuZGxpbmcgZXZlbnQgIiArIHF1YWxpZmll
ZE5hbWUgKyAiOiAiLCBlKTsKKyAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoIlVuY2F1Z2h0IGV4
Y2VwdGlvbiBpbiBpbnNwZWN0b3IgcGFnZSB3aGlsZSBoYW5kbGluZyBldmVudCAiICsgcXVhbGlm
aWVkTmFtZSArICI6ICIsIGUsIGUuc3RhY2spOwogICAgICAgICB9CiAKICAgICAgICAgdmFyIHBy
b2Nlc3NpbmdEdXJhdGlvbiA9IERhdGUubm93KCkgLSBwcm9jZXNzaW5nU3RhcnRUaW1lOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvSW5z
cGVjdG9yRnJvbnRlbmRBUEkuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Qcm90b2NvbC9JbnNwZWN0b3JGcm9udGVuZEFQSS5qcwppbmRleCA0YWQxNzFlNzgzMjA4Zjdi
YmYyZTJhYjg1NTRiNGI3NGY5MDc0YzBjLi4xYzhiMDQwMDEwZmFmZDFjMmEzM2U4Njg1YjY2Mzk2
N2ZhMDc3OTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Qcm90b2NvbC9JbnNwZWN0b3JGcm9udGVuZEFQSS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9JbnNwZWN0b3JGcm9udGVuZEFQSS5qcwpAQCAt
OTgsNyArOTgsNyBAQCBJbnNwZWN0b3JGcm9udGVuZEFQSSA9IHsKIAogICAgIGNvbnRleHRNZW51
SXRlbVNlbGVjdGVkOiBmdW5jdGlvbihpZCkKICAgICB7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5j
b250ZXh0TWVudUl0ZW1TZWxlY3RlZChpZCk7CisgICAgICAgIFdlYkluc3BlY3Rvci5Db250ZXh0
TWVudS5jb250ZXh0TWVudUl0ZW1TZWxlY3RlZChpZCk7CiAgICAgfSwKIAogICAgIGNvbnRleHRN
ZW51Q2xlYXJlZDogZnVuY3Rpb24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvQm94TW9kZWxEZXRhaWxzU2VjdGlvblJvdy5qcyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0JveE1vZGVsRGV0YWlsc1NlY3Rp
b25Sb3cuanMKaW5kZXggNWM0NzhiY2VjZDdkMWI1MDlkMDE1OTkyYjE1MDhlZGI0ZmQ0ZjM1My4u
ZmE0M2JhYzcxZTUyMjUyM2EyMmZjZWIzZjdiN2EyMjUwOGQ4NDMwYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQm94TW9kZWxEZXRhaWxzU2Vj
dGlvblJvdy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9Cb3hNb2RlbERldGFpbHNTZWN0aW9uUm93LmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywzOCArMjMsMzQgQEAKICAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuQm94TW9kZWxE
ZXRhaWxzU2VjdGlvblJvdyA9IGZ1bmN0aW9uKCkgewotICAgIFdlYkluc3BlY3Rvci5EZXRhaWxz
U2VjdGlvblJvdy5jYWxsKHRoaXMsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiTm8gQm94IE1vZGVs
IEluZm9ybWF0aW9uIikpOwotCi0gICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5z
cGVjdG9yLkJveE1vZGVsRGV0YWlsc1NlY3Rpb25Sb3cuU3R5bGVDbGFzc05hbWUpOwotCi0gICAg
dGhpcy5fbm9kZVN0eWxlcyA9IG51bGw7Ci19OworV2ViSW5zcGVjdG9yLkJveE1vZGVsRGV0YWls
c1NlY3Rpb25Sb3cgPSBjbGFzcyBCb3hNb2RlbERldGFpbHNTZWN0aW9uUm93IGV4dGVuZHMgV2Vi
SW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93Cit7CisgICAgY29uc3RydWN0b3IoKQorICAgIHsK
KyAgICAgICAgc3VwZXIoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJObyBCb3ggTW9kZWwgSW5mb3Jt
YXRpb24iKSk7CiAKLVdlYkluc3BlY3Rvci5Cb3hNb2RlbERldGFpbHNTZWN0aW9uUm93LlN0eWxl
Q2xhc3NOYW1lID0gImJveC1tb2RlbCI7Ci1XZWJJbnNwZWN0b3IuQm94TW9kZWxEZXRhaWxzU2Vj
dGlvblJvdy5TdHlsZVZhbHVlRGVsaW1pdGVycyA9ICIgXHhBMFx0XG5cIic6OywvKCkiOwotV2Vi
SW5zcGVjdG9yLkJveE1vZGVsRGV0YWlsc1NlY3Rpb25Sb3cuQ1NTTnVtYmVyUmVnZXggPSAvXigt
Pyg/OlxkKyg/OlwuXGQrKT98XC5cZCspKSQvOworICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NM
aXN0LmFkZChXZWJJbnNwZWN0b3IuQm94TW9kZWxEZXRhaWxzU2VjdGlvblJvdy5TdHlsZUNsYXNz
TmFtZSk7CiAKLVdlYkluc3BlY3Rvci5Cb3hNb2RlbERldGFpbHNTZWN0aW9uUm93LnByb3RvdHlw
ZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkJveE1vZGVsRGV0YWlsc1NlY3Rp
b25Sb3csCisgICAgICAgIHRoaXMuX25vZGVTdHlsZXMgPSBudWxsOworICAgIH0KIAogICAgIC8v
IFB1YmxpYwogCiAgICAgZ2V0IG5vZGVTdHlsZXMoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRo
aXMuX25vZGVTdHlsZXM7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgbm9kZVN0eWxlcyhub2Rl
U3R5bGVzKQogICAgIHsKICAgICAgICAgdGhpcy5fbm9kZVN0eWxlcyA9IG5vZGVTdHlsZXM7CiAK
ICAgICAgICAgdGhpcy5fcmVmcmVzaCgpOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJpdmF0
ZQogCi0gICAgX3JlZnJlc2g6IGZ1bmN0aW9uKCkKKyAgICBfcmVmcmVzaCgpCiAgICAgewogICAg
ICAgICBpZiAodGhpcy5faWdub3JlTmV4dFJlZnJlc2gpIHsKICAgICAgICAgICAgIGRlbGV0ZSB0
aGlzLl9pZ25vcmVOZXh0UmVmcmVzaDsKQEAgLTYyLDE0ICs1OCwxNCBAQCBXZWJJbnNwZWN0b3Iu
Qm94TW9kZWxEZXRhaWxzU2VjdGlvblJvdy5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAg
ICAgICB0aGlzLl91cGRhdGVNZXRyaWNzKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZ2V0UHJv
cGVydHlWYWx1ZUFzUHg6IGZ1bmN0aW9uKHN0eWxlLCBwcm9wZXJ0eU5hbWUpCisgICAgX2dldFBy
b3BlcnR5VmFsdWVBc1B4KHN0eWxlLCBwcm9wZXJ0eU5hbWUpCiAgICAgewogICAgICAgICByZXR1
cm4gTnVtYmVyKHN0eWxlLnByb3BlcnR5Rm9yTmFtZShwcm9wZXJ0eU5hbWUpLnZhbHVlLnJlcGxh
Y2UoL3B4JC8sICIiKSB8fCAwKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9nZXRCb3g6IGZ1bmN0
aW9uKGNvbXB1dGVkU3R5bGUsIGNvbXBvbmVudE5hbWUpCisgICAgX2dldEJveChjb21wdXRlZFN0
eWxlLCBjb21wb25lbnROYW1lKQogICAgIHsKICAgICAgICAgdmFyIHN1ZmZpeCA9IGNvbXBvbmVu
dE5hbWUgPT09ICJib3JkZXIiID8gIi13aWR0aCIgOiAiIjsKICAgICAgICAgdmFyIGxlZnQgPSB0
aGlzLl9nZXRQcm9wZXJ0eVZhbHVlQXNQeChjb21wdXRlZFN0eWxlLCBjb21wb25lbnROYW1lICsg
Ii1sZWZ0IiArIHN1ZmZpeCk7CkBAIC03Nyw5ICs3Myw5IEBAIFdlYkluc3BlY3Rvci5Cb3hNb2Rl
bERldGFpbHNTZWN0aW9uUm93LnByb3RvdHlwZSA9IHsKICAgICAgICAgdmFyIHJpZ2h0ID0gdGhp
cy5fZ2V0UHJvcGVydHlWYWx1ZUFzUHgoY29tcHV0ZWRTdHlsZSwgY29tcG9uZW50TmFtZSArICIt
cmlnaHQiICsgc3VmZml4KTsKICAgICAgICAgdmFyIGJvdHRvbSA9IHRoaXMuX2dldFByb3BlcnR5
VmFsdWVBc1B4KGNvbXB1dGVkU3R5bGUsIGNvbXBvbmVudE5hbWUgKyAiLWJvdHRvbSIgKyBzdWZm
aXgpOwogICAgICAgICByZXR1cm4ge2xlZnQsIHRvcCwgcmlnaHQsIGJvdHRvbX07Ci0gICAgfSwK
KyAgICB9CiAKLSAgICBfaGlnaGxpZ2h0RE9NTm9kZTogZnVuY3Rpb24oc2hvd0hpZ2hsaWdodCwg
bW9kZSwgZXZlbnQpCisgICAgX2hpZ2hsaWdodERPTU5vZGUoc2hvd0hpZ2hsaWdodCwgbW9kZSwg
ZXZlbnQpCiAgICAgewogICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsKIApAQCAtMTAx
LDkgKzk3LDkgQEAgV2ViSW5zcGVjdG9yLkJveE1vZGVsRGV0YWlsc1NlY3Rpb25Sb3cucHJvdG90
eXBlID0gewogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGVsZW1lbnQuY2xhc3NM
aXN0LnJlbW92ZSgiYWN0aXZlIik7CiAgICAgICAgIH0KLSAgICB9LAorICAgIH0KIAotICAgIF91
cGRhdGVNZXRyaWNzOiBmdW5jdGlvbigpCisgICAgX3VwZGF0ZU1ldHJpY3MoKQogICAgIHsKICAg
ICAgICAgLy8gVXBkYXRpbmcgd2l0aCBjb21wdXRlZCBzdHlsZS4KICAgICAgICAgdmFyIG1ldHJp
Y3NFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CkBAIC0yNTIsOSArMjQ4
LDkgQEAgV2ViSW5zcGVjdG9yLkJveE1vZGVsRGV0YWlsc1NlY3Rpb25Sb3cucHJvdG90eXBlID0g
ewogCiAgICAgICAgIHRoaXMuaGlkZUVtcHR5TWVzc2FnZSgpOwogICAgICAgICB0aGlzLmVsZW1l
bnQuYXBwZW5kQ2hpbGQobWV0cmljc0VsZW1lbnQpOwotICAgIH0sCisgICAgfQogCi0gICAgX3N0
YXJ0RWRpdGluZzogZnVuY3Rpb24odGFyZ2V0RWxlbWVudCwgYm94LCBzdHlsZVByb3BlcnR5LCBj
b21wdXRlZFN0eWxlKQorICAgIF9zdGFydEVkaXRpbmcodGFyZ2V0RWxlbWVudCwgYm94LCBzdHls
ZVByb3BlcnR5LCBjb21wdXRlZFN0eWxlKQogICAgIHsKICAgICAgICAgaWYgKFdlYkluc3BlY3Rv
ci5pc0JlaW5nRWRpdGVkKHRhcmdldEVsZW1lbnQpKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAt
Mjc1LDkgKzI3MSw5IEBAIFdlYkluc3BlY3Rvci5Cb3hNb2RlbERldGFpbHNTZWN0aW9uUm93LnBy
b3RvdHlwZSA9IHsKICAgICAgICAgV2ViSW5zcGVjdG9yLnN0YXJ0RWRpdGluZyh0YXJnZXRFbGVt
ZW50LCBjb25maWcpOwogCiAgICAgICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5zZXRCYXNlQW5k
RXh0ZW50KHRhcmdldEVsZW1lbnQsIDAsIHRhcmdldEVsZW1lbnQsIDEpOwotICAgIH0sCisgICAg
fQogCi0gICAgX2FsdGVyZWRGbG9hdE51bWJlcjogZnVuY3Rpb24obnVtYmVyLCBldmVudCkKKyAg
ICBfYWx0ZXJlZEZsb2F0TnVtYmVyKG51bWJlciwgZXZlbnQpCiAgICAgewogICAgICAgICB2YXIg
YXJyb3dLZXlQcmVzc2VkID0gKGV2ZW50LmtleUlkZW50aWZpZXIgPT09ICJVcCIgfHwgZXZlbnQu
a2V5SWRlbnRpZmllciA9PT0gIkRvd24iKTsKIApAQCAtMzAxLDkgKzI5Nyw5IEBAIFdlYkluc3Bl
Y3Rvci5Cb3hNb2RlbERldGFpbHNTZWN0aW9uUm93LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAg
IHJldHVybiBudWxsOwogCiAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBfaGFuZGxlS2V5RG93bjogZnVuY3Rpb24oY29udGV4dCwgc3R5bGVQcm9wZXJ0eSwgZXZl
bnQpCisgICAgX2hhbmRsZUtleURvd24oY29udGV4dCwgc3R5bGVQcm9wZXJ0eSwgZXZlbnQpCiAg
ICAgewogICAgICAgICBpZiAoIS9eKD86UGFnZSk/KD86VXB8RG93bikkLy50ZXN0KGV2ZW50Lmtl
eUlkZW50aWZpZXIpKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzYwLDIzICszNTYsMjMgQEAg
V2ViSW5zcGVjdG9yLkJveE1vZGVsRGV0YWlsc1NlY3Rpb25Sb3cucHJvdG90eXBlID0gewogICAg
ICAgICB0aGlzLl9pZ25vcmVOZXh0UmVmcmVzaCA9IHRydWU7CiAKICAgICAgICAgdGhpcy5fYXBw
bHlVc2VySW5wdXQoZWxlbWVudCwgcmVwbGFjZW1lbnRTdHJpbmcsIG9yaWdpbmFsVmFsdWUsIGNv
bnRleHQsIGZhbHNlKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9lZGl0aW5nRW5kZWQ6IGZ1bmN0
aW9uKGVsZW1lbnQsIGNvbnRleHQpCisgICAgX2VkaXRpbmdFbmRlZChlbGVtZW50LCBjb250ZXh0
KQogICAgIHsKICAgICAgICAgZGVsZXRlIHRoaXMub3JpZ2luYWxQcm9wZXJ0eURhdGE7CiAgICAg
ICAgIGRlbGV0ZSB0aGlzLnByZXZpb3VzUHJvcGVydHlEYXRhQ2FuZGlkYXRlOwogICAgICAgICBl
bGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoImtleWRvd24iLCBjb250ZXh0LmtleURvd25IYW5k
bGVyLCBmYWxzZSk7CiAgICAgICAgIGRlbGV0ZSB0aGlzLl9pc0VkaXRpbmdNZXRyaWNzOwotICAg
IH0sCisgICAgfQogCi0gICAgX2VkaXRpbmdDYW5jZWxsZWQ6IGZ1bmN0aW9uKGVsZW1lbnQsIGNv
bnRleHQpCisgICAgX2VkaXRpbmdDYW5jZWxsZWQoZWxlbWVudCwgY29udGV4dCkKICAgICB7CiAg
ICAgICAgIHRoaXMuX2VkaXRpbmdFbmRlZChlbGVtZW50LCBjb250ZXh0KTsKICAgICAgICAgdGhp
cy5fcmVmcmVzaCgpOwotICAgIH0sCisgICAgfQogCi0gICAgX2FwcGx5VXNlcklucHV0OiBmdW5j
dGlvbihlbGVtZW50LCB1c2VySW5wdXQsIHByZXZpb3VzQ29udGVudCwgY29udGV4dCwgY29tbWl0
RWRpdG9yKQorICAgIF9hcHBseVVzZXJJbnB1dChlbGVtZW50LCB1c2VySW5wdXQsIHByZXZpb3Vz
Q29udGVudCwgY29udGV4dCwgY29tbWl0RWRpdG9yKQogICAgIHsKICAgICAgICAgaWYgKGNvbW1p
dEVkaXRvciAmJiB1c2VySW5wdXQgPT09IHByZXZpb3VzQ29udGVudCkgewogICAgICAgICAgICAg
Ly8gTm90aGluZyBjaGFuZ2VkLCBzbyBjYW5jZWwuCkBAIC00MTksMTMgKzQxNSwxNSBAQCBXZWJJ
bnNwZWN0b3IuQm94TW9kZWxEZXRhaWxzU2VjdGlvblJvdy5wcm90b3R5cGUgPSB7CiAgICAgICAg
IHZhciBwcm9wZXJ0eSA9IHRoaXMuX25vZGVTdHlsZXMuaW5saW5lU3R5bGUucHJvcGVydHlGb3JO
YW1lKGNvbnRleHQuc3R5bGVQcm9wZXJ0eSk7CiAgICAgICAgIHByb3BlcnR5LnZhbHVlID0gdXNl
cklucHV0OwogICAgICAgICBwcm9wZXJ0eS5hZGQoKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9l
ZGl0aW5nQ29tbWl0dGVkOiBmdW5jdGlvbihlbGVtZW50LCB1c2VySW5wdXQsIHByZXZpb3VzQ29u
dGVudCwgY29udGV4dCkKKyAgICBfZWRpdGluZ0NvbW1pdHRlZChlbGVtZW50LCB1c2VySW5wdXQs
IHByZXZpb3VzQ29udGVudCwgY29udGV4dCkKICAgICB7CiAgICAgICAgIHRoaXMuX2VkaXRpbmdF
bmRlZChlbGVtZW50LCBjb250ZXh0KTsKICAgICAgICAgdGhpcy5fYXBwbHlVc2VySW5wdXQoZWxl
bWVudCwgdXNlcklucHV0LCBwcmV2aW91c0NvbnRlbnQsIGNvbnRleHQsIHRydWUpOwogICAgIH0K
IH07CiAKLVdlYkluc3BlY3Rvci5Cb3hNb2RlbERldGFpbHNTZWN0aW9uUm93LnByb3RvdHlwZS5f
X3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3cucHJvdG90eXBlOworV2Vi
SW5zcGVjdG9yLkJveE1vZGVsRGV0YWlsc1NlY3Rpb25Sb3cuU3R5bGVDbGFzc05hbWUgPSAiYm94
LW1vZGVsIjsKK1dlYkluc3BlY3Rvci5Cb3hNb2RlbERldGFpbHNTZWN0aW9uUm93LlN0eWxlVmFs
dWVEZWxpbWl0ZXJzID0gIiBceEEwXHRcblwiJzo7LC8oKSI7CitXZWJJbnNwZWN0b3IuQm94TW9k
ZWxEZXRhaWxzU2VjdGlvblJvdy5DU1NOdW1iZXJSZWdleCA9IC9eKC0/KD86XGQrKD86XC5cZCsp
P3xcLlxkKykpJC87CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9CcmVha3BvaW50QWN0aW9uVmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0JyZWFrcG9pbnRBY3Rpb25WaWV3LmpzCmluZGV4IDRjMWRi
MzA3ZGQ2OWUyMGZkZGFiMjg0NWY0OWMyNTQyMDM0ZmFmN2EuLmU5OTI5NmZkNGYzMjAzYmRkZGM5
OTU5YzUzMTZiNDY0YWQxOWUwN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0JyZWFrcG9pbnRBY3Rpb25WaWV3LmpzCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0JyZWFrcG9pbnRBY3Rpb25WaWV3Lmpz
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0yMywxMDcgKzIzLDEwNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
ICovCiAKLVdlYkluc3BlY3Rvci5CcmVha3BvaW50QWN0aW9uVmlldyA9IGZ1bmN0aW9uKGFjdGlv
biwgZGVsZWdhdGUsIG9taXRGb2N1cykKK1dlYkluc3BlY3Rvci5CcmVha3BvaW50QWN0aW9uVmll
dyA9IGNsYXNzIEJyZWFrcG9pbnRBY3Rpb25WaWV3IGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVj
dAogewotICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0
IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBlcigpLgotICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3Qu
Y2FsbCh0aGlzKTsKKyAgICBjb25zdHJ1Y3RvcihhY3Rpb24sIGRlbGVnYXRlLCBvbWl0Rm9jdXMp
CisgICAgeworICAgICAgICBzdXBlcigpOwogCi0gICAgY29uc29sZS5hc3NlcnQoYWN0aW9uKTsK
LSAgICBjb25zb2xlLmFzc2VydChkZWxlZ2F0ZSk7Ci0gICAgY29uc29sZS5hc3NlcnQoRGVidWdn
ZXJBZ2VudC5CcmVha3BvaW50QWN0aW9uVHlwZSk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGFj
dGlvbik7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGRlbGVnYXRlKTsKKyAgICAgICAgY29uc29s
ZS5hc3NlcnQoRGVidWdnZXJBZ2VudC5CcmVha3BvaW50QWN0aW9uVHlwZSk7CiAKLSAgICB0aGlz
Ll9hY3Rpb24gPSBhY3Rpb247Ci0gICAgdGhpcy5fZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICAg
ICAgdGhpcy5fYWN0aW9uID0gYWN0aW9uOworICAgICAgICB0aGlzLl9kZWxlZ2F0ZSA9IGRlbGVn
YXRlOwogCi0gICAgdGhpcy5fZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIp
OwotICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NOYW1lID0gImJyZWFrcG9pbnQtYWN0aW9uLWJsb2Nr
IjsKKyAgICAgICAgdGhpcy5fZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIp
OworICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTmFtZSA9ICJicmVha3BvaW50LWFjdGlvbi1i
bG9jayI7CiAKLSAgICB2YXIgaGVhZGVyID0gdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZChkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSk7Ci0gICAgaGVhZGVyLmNsYXNzTmFtZSA9ICJicmVh
a3BvaW50LWFjdGlvbi1ibG9jay1oZWFkZXIiOworICAgICAgICB2YXIgaGVhZGVyID0gdGhpcy5f
ZWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSk7CisgICAg
ICAgIGhlYWRlci5jbGFzc05hbWUgPSAiYnJlYWtwb2ludC1hY3Rpb24tYmxvY2staGVhZGVyIjsK
IAotICAgIHZhciBwaWNrZXIgPSBoZWFkZXIuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgic2VsZWN0IikpOwotICAgIHBpY2tlci5hZGRFdmVudExpc3RlbmVyKCJjaGFuZ2UiLCB0
aGlzLl9waWNrZXJDaGFuZ2VkLmJpbmQodGhpcykpOworICAgICAgICB2YXIgcGlja2VyID0gaGVh
ZGVyLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNlbGVjdCIpKTsKKyAgICAg
ICAgcGlja2VyLmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsIHRoaXMuX3BpY2tlckNoYW5nZWQu
YmluZCh0aGlzKSk7CiAKLSAgICBmb3IgKHZhciBrZXkgaW4gV2ViSW5zcGVjdG9yLkJyZWFrcG9p
bnRBY3Rpb24uVHlwZSkgewotICAgICAgICB2YXIgdHlwZSA9IFdlYkluc3BlY3Rvci5CcmVha3Bv
aW50QWN0aW9uLlR5cGVba2V5XTsKLSAgICAgICAgdmFyIG9wdGlvbiA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoIm9wdGlvbiIpOwotICAgICAgICBvcHRpb24udGV4dENvbnRlbnQgPSBXZWJJbnNw
ZWN0b3IuQnJlYWtwb2ludEFjdGlvblZpZXcuZGlzcGxheVN0cmluZ0ZvclR5cGUodHlwZSk7Ci0g
ICAgICAgIG9wdGlvbi5zZWxlY3RlZCA9IHRoaXMuX2FjdGlvbi50eXBlID09PSB0eXBlOwotICAg
ICAgICBvcHRpb24udmFsdWUgPSB0eXBlOwotICAgICAgICBwaWNrZXIuYWRkKG9wdGlvbik7Ci0g
ICAgfQorICAgICAgICBmb3IgKHZhciBrZXkgaW4gV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRBY3Rp
b24uVHlwZSkgeworICAgICAgICAgICAgdmFyIHR5cGUgPSBXZWJJbnNwZWN0b3IuQnJlYWtwb2lu
dEFjdGlvbi5UeXBlW2tleV07CisgICAgICAgICAgICB2YXIgb3B0aW9uID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgib3B0aW9uIik7CisgICAgICAgICAgICBvcHRpb24udGV4dENvbnRlbnQgPSBX
ZWJJbnNwZWN0b3IuQnJlYWtwb2ludEFjdGlvblZpZXcuZGlzcGxheVN0cmluZ0ZvclR5cGUodHlw
ZSk7CisgICAgICAgICAgICBvcHRpb24uc2VsZWN0ZWQgPSB0aGlzLl9hY3Rpb24udHlwZSA9PT0g
dHlwZTsKKyAgICAgICAgICAgIG9wdGlvbi52YWx1ZSA9IHR5cGU7CisgICAgICAgICAgICBwaWNr
ZXIuYWRkKG9wdGlvbik7CisgICAgICAgIH0KIAotICAgIHZhciBhcHBlbmRBY3Rpb25CdXR0b24g
PSBoZWFkZXIuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYnV0dG9uIikpOwot
ICAgIGFwcGVuZEFjdGlvbkJ1dHRvbi5jbGFzc05hbWUgPSAiYnJlYWtwb2ludC1hY3Rpb24tYXBw
ZW5kLWJ1dHRvbiI7Ci0gICAgYXBwZW5kQWN0aW9uQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNs
aWNrIiwgdGhpcy5fYXBwZW5kQWN0aW9uQnV0dG9uQ2xpY2tlZC5iaW5kKHRoaXMpKTsKLSAgICBh
cHBlbmRBY3Rpb25CdXR0b24udGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkFkZCBuZXcg
YnJlYWtwb2ludCBhY3Rpb24gYWZ0ZXIgdGhpcyBhY3Rpb24iKTsKKyAgICAgICAgdmFyIGFwcGVu
ZEFjdGlvbkJ1dHRvbiA9IGhlYWRlci5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJidXR0b24iKSk7CisgICAgICAgIGFwcGVuZEFjdGlvbkJ1dHRvbi5jbGFzc05hbWUgPSAiYnJl
YWtwb2ludC1hY3Rpb24tYXBwZW5kLWJ1dHRvbiI7CisgICAgICAgIGFwcGVuZEFjdGlvbkJ1dHRv
bi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX2FwcGVuZEFjdGlvbkJ1dHRvbkNsaWNr
ZWQuYmluZCh0aGlzKSk7CisgICAgICAgIGFwcGVuZEFjdGlvbkJ1dHRvbi50aXRsZSA9IFdlYklu
c3BlY3Rvci5VSVN0cmluZygiQWRkIG5ldyBicmVha3BvaW50IGFjdGlvbiBhZnRlciB0aGlzIGFj
dGlvbiIpOwogCi0gICAgdmFyIHJlbW92ZUFjdGlvbkJ1dHRvbiA9IGhlYWRlci5hcHBlbmRDaGls
ZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJidXR0b24iKSk7Ci0gICAgcmVtb3ZlQWN0aW9uQnV0
dG9uLmNsYXNzTmFtZSA9ICJicmVha3BvaW50LWFjdGlvbi1yZW1vdmUtYnV0dG9uIjsKLSAgICBy
ZW1vdmVBY3Rpb25CdXR0b24uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl9yZW1vdmVB
Y3Rpb24uYmluZCh0aGlzKSk7Ci0gICAgcmVtb3ZlQWN0aW9uQnV0dG9uLnRpdGxlID0gV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJSZW1vdmUgdGhpcyBicmVha3BvaW50IGFjdGlvbiIpOworICAgICAg
ICB2YXIgcmVtb3ZlQWN0aW9uQnV0dG9uID0gaGVhZGVyLmFwcGVuZENoaWxkKGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImJ1dHRvbiIpKTsKKyAgICAgICAgcmVtb3ZlQWN0aW9uQnV0dG9uLmNsYXNz
TmFtZSA9ICJicmVha3BvaW50LWFjdGlvbi1yZW1vdmUtYnV0dG9uIjsKKyAgICAgICAgcmVtb3Zl
QWN0aW9uQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fcmVtb3ZlQWN0aW9u
LmJpbmQodGhpcykpOworICAgICAgICByZW1vdmVBY3Rpb25CdXR0b24udGl0bGUgPSBXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIlJlbW92ZSB0aGlzIGJyZWFrcG9pbnQgYWN0aW9uIik7CiAKLSAgICB0
aGlzLl9ib2R5RWxlbWVudCA9IHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgiZGl2IikpOwotICAgIHRoaXMuX2JvZHlFbGVtZW50LmNsYXNzTmFtZSA9ICJi
cmVha3BvaW50LWFjdGlvbi1ibG9jay1ib2R5IjsKKyAgICAgICAgdGhpcy5fYm9keUVsZW1lbnQg
PSB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIp
KTsKKyAgICAgICAgdGhpcy5fYm9keUVsZW1lbnQuY2xhc3NOYW1lID0gImJyZWFrcG9pbnQtYWN0
aW9uLWJsb2NrLWJvZHkiOwogCi0gICAgdGhpcy5fdXBkYXRlQm9keShvbWl0Rm9jdXMpOwotfTsK
LQotV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRBY3Rpb25WaWV3LmRpc3BsYXlTdHJpbmdGb3JUeXBl
ID0gZnVuY3Rpb24odHlwZSkKLXsKLSAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNlIFdlYklu
c3BlY3Rvci5CcmVha3BvaW50QWN0aW9uLlR5cGUuTG9nOgotICAgICAgICByZXR1cm4gV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJMb2cgTWVzc2FnZSIpOwotICAgIGNhc2UgV2ViSW5zcGVjdG9yLkJy
ZWFrcG9pbnRBY3Rpb24uVHlwZS5FdmFsdWF0ZToKLSAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiRXZhbHVhdGUgSmF2YVNjcmlwdCIpOwotICAgIGNhc2UgV2ViSW5zcGVjdG9y
LkJyZWFrcG9pbnRBY3Rpb24uVHlwZS5Tb3VuZDoKLSAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiUGxheSBTb3VuZCIpOwotICAgIGNhc2UgV2ViSW5zcGVjdG9yLkJyZWFrcG9p
bnRBY3Rpb24uVHlwZS5Qcm9iZToKLSAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiUHJvYmUgRXhwcmVzc2lvbiIpOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KGZhbHNlKTsKLSAgICAgICAgcmV0dXJuICIiOworICAgICAgICB0aGlzLl91cGRhdGVCb2R5
KG9taXRGb2N1cyk7CiAgICAgfQotfTsKIAotV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRBY3Rpb25W
aWV3LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkJyZWFrcG9p
bnRBY3Rpb25WaWV3LAorICAgIC8vIFN0YXRpYworCisgICAgc3RhdGljIGRpc3BsYXlTdHJpbmdG
b3JUeXBlKHR5cGUpCisgICAgeworICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICAgICAgY2Fz
ZSBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludEFjdGlvbi5UeXBlLkxvZzoKKyAgICAgICAgICAgIHJl
dHVybiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkxvZyBNZXNzYWdlIik7CisgICAgICAgIGNhc2Ug
V2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRBY3Rpb24uVHlwZS5FdmFsdWF0ZToKKyAgICAgICAgICAg
IHJldHVybiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkV2YWx1YXRlIEphdmFTY3JpcHQiKTsKKyAg
ICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludEFjdGlvbi5UeXBlLlNvdW5kOgorICAg
ICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5VSVN0cmluZygiUGxheSBTb3VuZCIpOworICAg
ICAgICBjYXNlIFdlYkluc3BlY3Rvci5CcmVha3BvaW50QWN0aW9uLlR5cGUuUHJvYmU6CisgICAg
ICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJQcm9iZSBFeHByZXNzaW9uIik7
CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBjb25zb2xlLmFzc2VydChmYWxzZSk7Cisg
ICAgICAgICAgICByZXR1cm4gIiI7CisgICAgICAgIH0KKyAgICB9CiAKICAgICAvLyBQdWJsaWMK
IAogICAgIGdldCBhY3Rpb24oKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2FjdGlvbjsK
LSAgICB9LAorICAgIH0KIAogICAgIGdldCBlbGVtZW50KCkKICAgICB7CiAgICAgICAgIHJldHVy
biB0aGlzLl9lbGVtZW50OwotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJpdmF0ZQogCi0gICAg
X3BpY2tlckNoYW5nZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9waWNrZXJDaGFuZ2VkKGV2ZW50
KQogICAgIHsKICAgICAgICAgdmFyIG5ld1R5cGUgPSBldmVudC50YXJnZXQudmFsdWU7CiAgICAg
ICAgIHRoaXMuX2FjdGlvbiA9IHRoaXMuX2FjdGlvbi5icmVha3BvaW50LnJlY3JlYXRlQWN0aW9u
KG5ld1R5cGUsIHRoaXMuX2FjdGlvbik7CiAgICAgICAgIHRoaXMuX3VwZGF0ZUJvZHkoKTsKICAg
ICAgICAgdGhpcy5fZGVsZWdhdGUuYnJlYWtwb2ludEFjdGlvblZpZXdSZXNpemVkKHRoaXMpOwot
ICAgIH0sCisgICAgfQogCi0gICAgX2FwcGVuZEFjdGlvbkJ1dHRvbkNsaWNrZWQ6IGZ1bmN0aW9u
KGV2ZW50KQorICAgIF9hcHBlbmRBY3Rpb25CdXR0b25DbGlja2VkKGV2ZW50KQogICAgIHsKICAg
ICAgICAgdmFyIG5ld0FjdGlvbiA9IHRoaXMuX2FjdGlvbi5icmVha3BvaW50LmNyZWF0ZUFjdGlv
bihXZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5EZWZhdWx0QnJlYWtwb2ludEFjdGlvblR5cGUsIHRo
aXMuX2FjdGlvbik7CiAgICAgICAgIHRoaXMuX2RlbGVnYXRlLmJyZWFrcG9pbnRBY3Rpb25WaWV3
QXBwZW5kQWN0aW9uVmlldyh0aGlzLCBuZXdBY3Rpb24pOwotICAgIH0sCisgICAgfQogCi0gICAg
X3JlbW92ZUFjdGlvbjogZnVuY3Rpb24oKQorICAgIF9yZW1vdmVBY3Rpb24oKQogICAgIHsKICAg
ICAgICAgdGhpcy5fYWN0aW9uLmJyZWFrcG9pbnQucmVtb3ZlQWN0aW9uKHRoaXMuX2FjdGlvbik7
CiAgICAgICAgIHRoaXMuX2RlbGVnYXRlLmJyZWFrcG9pbnRBY3Rpb25WaWV3UmVtb3ZlQWN0aW9u
Vmlldyh0aGlzKTsKLSAgICB9LAorICAgIH0KIAotICAgIF91cGRhdGVCb2R5OiBmdW5jdGlvbihv
bWl0Rm9jdXMpCisgICAgX3VwZGF0ZUJvZHkob21pdEZvY3VzKQogICAgIHsKICAgICAgICAgdGhp
cy5fYm9keUVsZW1lbnQucmVtb3ZlQ2hpbGRyZW4oKTsKIApAQCAtMTgyLDE0ICsxODIsMTQgQEAg
V2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRBY3Rpb25WaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAg
ICAgIHRoaXMuX2JvZHlFbGVtZW50LmhpZGRlbiA9IHRydWU7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQotICAgIH0sCisgICAgfQogCi0gICAgX2xvZ0lucHV0Q2hhbmdlZDogZnVuY3Rp
b24oZXZlbnQpCisgICAgX2xvZ0lucHV0Q2hhbmdlZChldmVudCkKICAgICB7CiAgICAgICAgIHRo
aXMuX2FjdGlvbi5kYXRhID0gZXZlbnQudGFyZ2V0LnZhbHVlOwotICAgIH0sCisgICAgfQogCi0g
ICAgX2NvZGVNaXJyb3JCbHVycmVkOiBmdW5jdGlvbihldmVudCkKKyAgICBfY29kZU1pcnJvckJs
dXJyZWQoZXZlbnQpCiAgICAgewogICAgICAgICAvLyBUaHJvdyBhd2F5IHRoZSBleHByZXNzaW9u
IGlmIGl0J3MganVzdCB3aGl0ZXNwYWNlLgogICAgICAgICB2YXIgZGF0YSA9ICh0aGlzLl9jb2Rl
TWlycm9yLmdldFZhbHVlKCkgfHwgIiIpLnRyaW0oKTsKQEAgLTE5OCwxMiArMTk4LDEwIEBAIFdl
Ykluc3BlY3Rvci5CcmVha3BvaW50QWN0aW9uVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAg
ICB0aGlzLl9yZW1vdmVBY3Rpb24oKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgdGhpcy5f
YWN0aW9uLmRhdGEgPSBkYXRhOwotICAgIH0sCisgICAgfQogCi0gICAgX2NvZGVNaXJyb3JWaWV3
cG9ydENoYW5nZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9jb2RlTWlycm9yVmlld3BvcnRDaGFu
Z2VkKGV2ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5fZGVsZWdhdGUuYnJlYWtwb2ludEFjdGlv
blZpZXdSZXNpemVkKHRoaXMpOwogICAgIH0KIH07Ci0KLVdlYkluc3BlY3Rvci5CcmVha3BvaW50
QWN0aW9uVmlldy5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90
b3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9Db2RlTWlycm9yQWRkaXRpb25zLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvQ29kZU1pcnJvckFkZGl0aW9ucy5qcwppbmRleCAxOTA0NWI2MDM1M2Y5
OGI2NjBmNWY5YzhmNTViYjA1NjkwYWY0NzFjLi5iMmJiMTc4MDUyYWQ0NDVhMmFkZDBiYWFiM2U1
ZjJiY2JiNmVlNjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9Db2RlTWlycm9yQWRkaXRpb25zLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvZGVNaXJyb3JBZGRpdGlvbnMuanMKQEAgLTE4Miw3
ICsxODIsNyBAQAogCiAgICAgZnVuY3Rpb24gZXh0ZW5kZWRDU1NUb2tlbihzdHJlYW0sIHN0YXRl
KQogICAgIHsKLSAgICAgICAgY29uc3QgaGV4Q29sb3JSZWdleCA9IC8jKD86WzAtOWEtZkEtRl17
Nn18WzAtOWEtZkEtRl17M30pXGIvZzsKKyAgICAgICAgdmFyIGhleENvbG9yUmVnZXggPSAvIyg/
OlswLTlhLWZBLUZdezZ9fFswLTlhLWZBLUZdezN9KVxiL2c7CiAKICAgICAgICAgaWYgKHN0YXRl
Ll91cmxUb2tlbml6ZSkgewogICAgICAgICAgICAgLy8gQ2FsbCB0aGUgbGluayB0b2tlbml6ZXIg
aW5zdGVhZC4KQEAgLTUwMyw3ICs1MDMsNyBAQAogICAgICAgICB2YXIgZW5kID0gcmFuZ2UgaW5z
dGFuY2VvZiBXZWJJbnNwZWN0b3IuVGV4dFJhbmdlID8gcmFuZ2UuZW5kTGluZSArIDEgOiB0aGlz
LmxpbmVDb3VudCgpOwogCiAgICAgICAgIC8vIE1hdGNoZXMgcmdiYSgwLCAwLCAwLCAwLjUpLCBy
Z2IoMCwgMCwgMCksIGhzbCgpLCBoc2xhKCksICNmZmYsICNmZmZmZmYsIHdoaXRlCi0gICAgICAg
IGNvbnN0IGNvbG9yUmVnZXggPSAvKCg/OnJnYnxoc2wpYT9cKFteKV0rXCl8I1swLTlhLWZBLUZd
ezZ9fCNbMC05YS1mQS1GXXszfXxcYlx3K1xiKD8hWy0uXSkpL2c7CisgICAgICAgIHZhciBjb2xv
clJlZ2V4ID0gLygoPzpyZ2J8aHNsKWE/XChbXildK1wpfCNbMC05YS1mQS1GXXs2fXwjWzAtOWEt
ZkEtRl17M318XGJcdytcYig/IVstLl0pKS9nOwogCiAgICAgICAgIGZvciAodmFyIGxpbmVOdW1i
ZXIgPSBzdGFydDsgbGluZU51bWJlciA8IGVuZDsgKytsaW5lTnVtYmVyKSB7CiAgICAgICAgICAg
ICB2YXIgbGluZUNvbnRlbnQgPSB0aGlzLmdldExpbmUobGluZU51bWJlcik7CkBAIC01NjgsNyAr
NTY4LDcgQEAKICAgICAgICAgdmFyIHN0YXJ0ID0gcmFuZ2UgaW5zdGFuY2VvZiBXZWJJbnNwZWN0
b3IuVGV4dFJhbmdlID8gcmFuZ2Uuc3RhcnRMaW5lIDogMDsKICAgICAgICAgdmFyIGVuZCA9IHJh
bmdlIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlRleHRSYW5nZSA/IHJhbmdlLmVuZExpbmUgKyAx
IDogdGhpcy5saW5lQ291bnQoKTsKIAotICAgICAgICBjb25zdCBncmFkaWVudFJlZ2V4ID0gLyhy
ZXBlYXRpbmctKT8obGluZWFyfHJhZGlhbCktZ3JhZGllbnRccypcKFxzKi9nOworICAgICAgICB2
YXIgZ3JhZGllbnRSZWdleCA9IC8ocmVwZWF0aW5nLSk/KGxpbmVhcnxyYWRpYWwpLWdyYWRpZW50
XHMqXChccyovZzsKIAogICAgICAgICBmb3IgKHZhciBsaW5lTnVtYmVyID0gc3RhcnQ7IGxpbmVO
dW1iZXIgPCBlbmQ7ICsrbGluZU51bWJlcikgewogICAgICAgICAgICAgdmFyIGxpbmVDb250ZW50
ID0gdGhpcy5nZXRMaW5lKGxpbmVOdW1iZXIpOwpAQCAtNjUzLDIzICs2NTMsMjMgQEAKIAogICAg
IC8vIFJlZ2lzdGVyIHNvbWUgZXh0cmEgTUlNRS10eXBlcyBmb3IgQ29kZU1pcnJvci4gVGhlc2Ug
YXJlIGluIGFkZGl0aW9uIHRvIHRoZQogICAgIC8vIG9uZXMgQ29kZU1pcnJvciBhbHJlYWR5IHJl
Z2lzdGVycywgbGlrZSB0ZXh0L2h0bWwsIHRleHQvamF2YXNjcmlwdCwgZXRjLgotICAgIGNvbnN0
IGV4dHJhWE1MVHlwZXMgPSBbInRleHQveG1sIiwgInRleHQveHNsIl07CisgICAgdmFyIGV4dHJh
WE1MVHlwZXMgPSBbInRleHQveG1sIiwgInRleHQveHNsIl07CiAgICAgZXh0cmFYTUxUeXBlcy5m
b3JFYWNoKGZ1bmN0aW9uKHR5cGUpIHsKICAgICAgICAgQ29kZU1pcnJvci5kZWZpbmVNSU1FKHR5
cGUsICJ4bWwiKTsKICAgICB9KTsKIAotICAgIGNvbnN0IGV4dHJhSFRNTFR5cGVzID0gWyJhcHBs
aWNhdGlvbi94aHRtbCt4bWwiLCAiaW1hZ2Uvc3ZnK3htbCJdOworICAgIHZhciBleHRyYUhUTUxU
eXBlcyA9IFsiYXBwbGljYXRpb24veGh0bWwreG1sIiwgImltYWdlL3N2Zyt4bWwiXTsKICAgICBl
eHRyYUhUTUxUeXBlcy5mb3JFYWNoKGZ1bmN0aW9uKHR5cGUpIHsKICAgICAgICAgQ29kZU1pcnJv
ci5kZWZpbmVNSU1FKHR5cGUsICJodG1sbWl4ZWQiKTsKICAgICB9KTsKIAotICAgIGNvbnN0IGV4
dHJhSmF2YVNjcmlwdFR5cGVzID0gWyJ0ZXh0L2VjbWFzY3JpcHQiLCAiYXBwbGljYXRpb24vamF2
YXNjcmlwdCIsICJhcHBsaWNhdGlvbi9lY21hc2NyaXB0IiwgImFwcGxpY2F0aW9uL3gtamF2YXNj
cmlwdCIsCisgICAgdmFyIGV4dHJhSmF2YVNjcmlwdFR5cGVzID0gWyJ0ZXh0L2VjbWFzY3JpcHQi
LCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIsICJhcHBsaWNhdGlvbi9lY21hc2NyaXB0IiwgImFw
cGxpY2F0aW9uL3gtamF2YXNjcmlwdCIsCiAgICAgICAgICJ0ZXh0L3gtamF2YXNjcmlwdCIsICJ0
ZXh0L2phdmFzY3JpcHQxLjEiLCAidGV4dC9qYXZhc2NyaXB0MS4yIiwgInRleHQvamF2YXNjcmlw
dDEuMyIsICJ0ZXh0L2pzY3JpcHQiLCAidGV4dC9saXZlc2NyaXB0Il07CiAgICAgZXh0cmFKYXZh
U2NyaXB0VHlwZXMuZm9yRWFjaChmdW5jdGlvbih0eXBlKSB7CiAgICAgICAgIENvZGVNaXJyb3Iu
ZGVmaW5lTUlNRSh0eXBlLCAiamF2YXNjcmlwdCIpOwogICAgIH0pOwogCi0gICAgY29uc3QgZXh0
cmFKU09OVHlwZXMgPSBbImFwcGxpY2F0aW9uL3gtanNvbiIsICJ0ZXh0L3gtanNvbiJdOworICAg
IHZhciBleHRyYUpTT05UeXBlcyA9IFsiYXBwbGljYXRpb24veC1qc29uIiwgInRleHQveC1qc29u
Il07CiAgICAgZXh0cmFKU09OVHlwZXMuZm9yRWFjaChmdW5jdGlvbih0eXBlKSB7CiAgICAgICAg
IENvZGVNaXJyb3IuZGVmaW5lTUlNRSh0eXBlLCB7bmFtZTogImphdmFzY3JpcHQiLCBqc29uOiB0
cnVlfSk7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9Db2xvclBpY2tlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL0NvbG9yUGlja2VyLmpzCmluZGV4IDNkMTA3OTA3ZTBhMzRmNmUxZjAz
N2ZkZmNhODZjNTFhYzkyOWQ1YTAuLmY5MTY1M2E5ZGI2M2JkZDNlZWM1Yjk2YjUwMTRiOWVjZGE5
YzdhMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL0NvbG9yUGlja2VyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL0NvbG9yUGlja2VyLmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMyw1MCArMjMsNDMgQEAKICAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuQ29sb3JQaWNrZXIgPSBm
dW5jdGlvbigpCitXZWJJbnNwZWN0b3IuQ29sb3JQaWNrZXIgPSBjbGFzcyBDb2xvclBpY2tlciBl
eHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIHsKLSAgICAvLyBGSVhNRTogQ29udmVydCB0aGlz
IHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcywgYW5kIGNhbGwgc3VwZXIoKS4KLSAg
ICAvLyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7Ci0KLSAgICB0aGlzLl9jb2xvcldo
ZWVsID0gbmV3IFdlYkluc3BlY3Rvci5Db2xvcldoZWVsKCk7Ci0gICAgdGhpcy5fY29sb3JXaGVl
bC5kZWxlZ2F0ZSA9IHRoaXM7Ci0gICAgdGhpcy5fY29sb3JXaGVlbC5kaW1lbnNpb24gPSAyMDA7
CisgICAgY29uc3RydWN0b3IoKQorICAgIHsKKyAgICAgICAgc3VwZXIoKTsKIAotICAgIHRoaXMu
X2JyaWdodG5lc3NTbGlkZXIgPSBuZXcgV2ViSW5zcGVjdG9yLlNsaWRlcigpOwotICAgIHRoaXMu
X2JyaWdodG5lc3NTbGlkZXIuZGVsZWdhdGUgPSB0aGlzOwotICAgIHRoaXMuX2JyaWdodG5lc3NT
bGlkZXIuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJicmlnaHRuZXNzIik7CisgICAgICAgIHRoaXMu
X2NvbG9yV2hlZWwgPSBuZXcgV2ViSW5zcGVjdG9yLkNvbG9yV2hlZWwoKTsKKyAgICAgICAgdGhp
cy5fY29sb3JXaGVlbC5kZWxlZ2F0ZSA9IHRoaXM7CisgICAgICAgIHRoaXMuX2NvbG9yV2hlZWwu
ZGltZW5zaW9uID0gMjAwOwogCi0gICAgdGhpcy5fb3BhY2l0eVNsaWRlciA9IG5ldyBXZWJJbnNw
ZWN0b3IuU2xpZGVyKCk7Ci0gICAgdGhpcy5fb3BhY2l0eVNsaWRlci5kZWxlZ2F0ZSA9IHRoaXM7
Ci0gICAgdGhpcy5fb3BhY2l0eVNsaWRlci5lbGVtZW50LmNsYXNzTGlzdC5hZGQoIm9wYWNpdHki
KTsKKyAgICAgICAgdGhpcy5fYnJpZ2h0bmVzc1NsaWRlciA9IG5ldyBXZWJJbnNwZWN0b3IuU2xp
ZGVyKCk7CisgICAgICAgIHRoaXMuX2JyaWdodG5lc3NTbGlkZXIuZGVsZWdhdGUgPSB0aGlzOwor
ICAgICAgICB0aGlzLl9icmlnaHRuZXNzU2xpZGVyLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgiYnJp
Z2h0bmVzcyIpOwogCi0gICAgdGhpcy5fZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImRpdiIpOwotICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NOYW1lID0gImNvbG9yLXBpY2tlciI7Cisg
ICAgICAgIHRoaXMuX29wYWNpdHlTbGlkZXIgPSBuZXcgV2ViSW5zcGVjdG9yLlNsaWRlcigpOwor
ICAgICAgICB0aGlzLl9vcGFjaXR5U2xpZGVyLmRlbGVnYXRlID0gdGhpczsKKyAgICAgICAgdGhp
cy5fb3BhY2l0eVNsaWRlci5lbGVtZW50LmNsYXNzTGlzdC5hZGQoIm9wYWNpdHkiKTsKIAotICAg
IHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fY29sb3JXaGVlbC5lbGVtZW50KTsKLSAg
ICB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2JyaWdodG5lc3NTbGlkZXIuZWxlbWVu
dCk7Ci0gICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9vcGFjaXR5U2xpZGVyLmVs
ZW1lbnQpOworICAgICAgICB0aGlzLl9lbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
ZGl2Iik7CisgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NOYW1lID0gImNvbG9yLXBpY2tlciI7
CiAKLSAgICB0aGlzLl9vcGFjaXR5ID0gMDsKLSAgICB0aGlzLl9vcGFjaXR5UGF0dGVybiA9ICJ1
cmwoSW1hZ2VzL0NoZWNrZXJzLnN2ZykiOworICAgICAgICB0aGlzLl9lbGVtZW50LmFwcGVuZENo
aWxkKHRoaXMuX2NvbG9yV2hlZWwuZWxlbWVudCk7CisgICAgICAgIHRoaXMuX2VsZW1lbnQuYXBw
ZW5kQ2hpbGQodGhpcy5fYnJpZ2h0bmVzc1NsaWRlci5lbGVtZW50KTsKKyAgICAgICAgdGhpcy5f
ZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9vcGFjaXR5U2xpZGVyLmVsZW1lbnQpOwogCi0gICAg
dGhpcy5fY29sb3IgPSAid2hpdGUiOwotfTsKKyAgICAgICAgdGhpcy5fb3BhY2l0eSA9IDA7Cisg
ICAgICAgIHRoaXMuX29wYWNpdHlQYXR0ZXJuID0gInVybChJbWFnZXMvQ2hlY2tlcnMuc3ZnKSI7
CiAKLVdlYkluc3BlY3Rvci5Db2xvclBpY2tlci5FdmVudCA9IHsKLSAgICBDb2xvckNoYW5nZWQ6
ICJjc3MtY29sb3ItcGlja2VyLWNvbG9yLWNoYW5nZWQiCi19OwotCi1XZWJJbnNwZWN0b3IuQ29s
b3JQaWNrZXIucHJvdG90eXBlID0gewotICAgIGNvbnRydWN0b3I6IFdlYkluc3BlY3Rvci5Db2xv
clBpY2tlciwKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlLAor
ICAgICAgICB0aGlzLl9jb2xvciA9ICJ3aGl0ZSI7CisgICAgfQogCiAgICAgLy8gUHVibGljCiAK
ICAgICBnZXQgZWxlbWVudCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudDsK
LSAgICB9LAorICAgIH0KIAogICAgIHNldCBicmlnaHRuZXNzKGJyaWdodG5lc3MpCiAgICAgewpA
QCAtNzcsNyArNzAsNyBAQCBXZWJJbnNwZWN0b3IuQ29sb3JQaWNrZXIucHJvdG90eXBlID0gewog
CiAgICAgICAgIHRoaXMuX3VwZGF0ZUNvbG9yKCk7CiAgICAgICAgIHRoaXMuX3VwZGF0ZVNsaWRl
cnModGhpcy5fY29sb3JXaGVlbC5yYXdDb2xvciwgdGhpcy5fY29sb3JXaGVlbC50aW50ZWRDb2xv
cik7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgb3BhY2l0eShvcGFjaXR5KQogICAgIHsKQEAg
LTg2LDE3ICs3OSwxNyBAQCBXZWJJbnNwZWN0b3IuQ29sb3JQaWNrZXIucHJvdG90eXBlID0gewog
CiAgICAgICAgIHRoaXMuX29wYWNpdHkgPSBvcGFjaXR5OwogICAgICAgICB0aGlzLl91cGRhdGVD
b2xvcigpOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGNvbG9yV2hlZWwoKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIHRoaXMuX2NvbG9yV2hlZWw7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQg
Y29sb3IoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2NvbG9yOwotICAgIH0sCisgICAg
fQogCiAgICAgc2V0IGNvbG9yKGNvbG9yKQogICAgIHsKQEAgLTExMSwyNSArMTA0LDI1IEBAIFdl
Ykluc3BlY3Rvci5Db2xvclBpY2tlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX3VwZGF0
ZVNsaWRlcnModGhpcy5fY29sb3JXaGVlbC5yYXdDb2xvciwgY29sb3IpOwogCiAgICAgICAgIGRl
bGV0ZSB0aGlzLl9kb250VXBkYXRlQ29sb3I7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBjb2xvcldo
ZWVsQ29sb3JEaWRDaGFuZ2U6IGZ1bmN0aW9uKGNvbG9yV2hlZWwpCisgICAgY29sb3JXaGVlbENv
bG9yRGlkQ2hhbmdlKGNvbG9yV2hlZWwpCiAgICAgewogICAgICAgICB0aGlzLl91cGRhdGVDb2xv
cigpOwogICAgICAgICB0aGlzLl91cGRhdGVTbGlkZXJzKHRoaXMuX2NvbG9yV2hlZWwucmF3Q29s
b3IsIHRoaXMuX2NvbG9yV2hlZWwudGludGVkQ29sb3IpOwotICAgIH0sCisgICAgfQogCi0gICAg
c2xpZGVyVmFsdWVEaWRDaGFuZ2U6IGZ1bmN0aW9uKHNsaWRlciwgdmFsdWUpCisgICAgc2xpZGVy
VmFsdWVEaWRDaGFuZ2Uoc2xpZGVyLCB2YWx1ZSkKICAgICB7CiAgICAgICAgIGlmIChzbGlkZXIg
PT09IHRoaXMuX29wYWNpdHlTbGlkZXIpCiAgICAgICAgICAgICB0aGlzLm9wYWNpdHkgPSB2YWx1
ZTsKICAgICAgICAgZWxzZSBpZiAoc2xpZGVyID09PSB0aGlzLl9icmlnaHRuZXNzU2xpZGVyKQog
ICAgICAgICAgICAgdGhpcy5icmlnaHRuZXNzID0gdmFsdWU7Ci0gICAgfSwKKyAgICB9CiAKICAg
ICAvLyBQcml2YXRlCiAKLSAgICBfdXBkYXRlQ29sb3I6IGZ1bmN0aW9uKCkKKyAgICBfdXBkYXRl
Q29sb3IoKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX2RvbnRVcGRhdGVDb2xvcikKICAgICAg
ICAgICAgIHJldHVybjsKQEAgLTE0NCw5ICsxMzcsOSBAQCBXZWJJbnNwZWN0b3IuQ29sb3JQaWNr
ZXIucHJvdG90eXBlID0gewogCiAgICAgICAgIHRoaXMuX2NvbG9yID0gbmV3IFdlYkluc3BlY3Rv
ci5Db2xvcih0aGlzLl9jb2xvckZvcm1hdCwgY29tcG9uZW50cyk7CiAgICAgICAgIHRoaXMuZGlz
cGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5Db2xvclBpY2tlci5FdmVudC5Db2xv
ckNoYW5nZWQsIHtjb2xvcjogdGhpcy5fY29sb3J9KTsKLSAgICB9LAorICAgIH0KIAotICAgIF91
cGRhdGVTbGlkZXJzOiBmdW5jdGlvbihyYXdDb2xvciwgdGludGVkQ29sb3IpCisgICAgX3VwZGF0
ZVNsaWRlcnMocmF3Q29sb3IsIHRpbnRlZENvbG9yKQogICAgIHsKICAgICAgICAgdmFyIHJnYiA9
IHRoaXMuX2NvbG9yV2hlZWwudGludGVkQ29sb3IucmdiOwogICAgICAgICB2YXIgb3BhcXVlID0g
bmV3IFdlYkluc3BlY3Rvci5Db2xvcihXZWJJbnNwZWN0b3IuQ29sb3IuRm9ybWF0LlJHQkEsIHJn
Yi5jb25jYXQoMSkpLnRvU3RyaW5nKCk7CkBAIC0xNTYsMyArMTQ5LDcgQEAgV2ViSW5zcGVjdG9y
LkNvbG9yUGlja2VyLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fYnJpZ2h0bmVzc1NsaWRl
ci5lbGVtZW50LnN0eWxlLmJhY2tncm91bmRJbWFnZSA9ICJsaW5lYXItZ3JhZGllbnQoOTBkZWcs
IGJsYWNrLCAiICsgcmF3Q29sb3IgKyAiKSI7CiAgICAgfQogfTsKKworV2ViSW5zcGVjdG9yLkNv
bG9yUGlja2VyLkV2ZW50ID0geworICAgIENvbG9yQ2hhbmdlZDogImNzcy1jb2xvci1waWNrZXIt
Y29sb3ItY2hhbmdlZCIKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9Db2xvcldoZWVsLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvQ29sb3JXaGVlbC5qcwppbmRleCAwYTU3YTI5MDM0NTA4ZDEwNjVl
NjgwY2Y0MzFkYTI5MzZmYmJkZTllLi45MGY5MDcwZjEzN2QwMGNkMGZlZmQyOTUxYWZkYzg0M2U4
MWY5MmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9Db2xvcldoZWVsLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL0NvbG9yV2hlZWwuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDMwICsyMywyNyBAQAogICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5Db2xvcldoZWVsID0gZnVu
Y3Rpb24oKQorV2ViSW5zcGVjdG9yLkNvbG9yV2hlZWwgPSBjbGFzcyBDb2xvcldoZWVsIGV4dGVu
ZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogewotICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8g
YSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBlcigpLgotICAgIC8v
IFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKLQotICAgIHRoaXMuX3Jhd0NhbnZhcyA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpOwotICAgIHRoaXMuX3RpbnRlZENhbnZh
cyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpOwotICAgIHRoaXMuX2ZpbmFsQ2Fu
dmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7CisgICAgY29uc3RydWN0b3Io
KQorICAgIHsKKyAgICAgICAgc3VwZXIoKTsKIAotICAgIHRoaXMuX2Nyb3NzaGFpciA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgIHRoaXMuX2Nyb3NzaGFpci5jbGFzc05hbWUg
PSAiY3Jvc3NoYWlyIjsKKyAgICAgICAgdGhpcy5fcmF3Q2FudmFzID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgiY2FudmFzIik7CisgICAgICAgIHRoaXMuX3RpbnRlZENhbnZhcyA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpOworICAgICAgICB0aGlzLl9maW5hbENhbnZhcyA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpOwogCi0gICAgdGhpcy5fZWxlbWVudCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NOYW1l
ID0gImNvbG9yLXdoZWVsIjsKKyAgICAgICAgdGhpcy5fY3Jvc3NoYWlyID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIHRoaXMuX2Nyb3NzaGFpci5jbGFzc05hbWUgPSAi
Y3Jvc3NoYWlyIjsKIAotICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fZmluYWxD
YW52YXMpOwotICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fY3Jvc3NoYWlyKTsK
KyAgICAgICAgdGhpcy5fZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwor
ICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTmFtZSA9ICJjb2xvci13aGVlbCI7CiAKLSAgICB0
aGlzLl9maW5hbENhbnZhcy5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCB0aGlzKTsKLX07
CisgICAgICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fZmluYWxDYW52YXMpOwor
ICAgICAgICB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2Nyb3NzaGFpcik7CiAKLVdl
Ykluc3BlY3Rvci5Db2xvcldoZWVsLnByb3RvdHlwZSA9IHsKLSAgICBjb250cnVjdG9yOiBXZWJJ
bnNwZWN0b3IuQ29sb3JXaGVlbCwKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5PYmplY3Qu
cHJvdG90eXBlLAorICAgICAgICB0aGlzLl9maW5hbENhbnZhcy5hZGRFdmVudExpc3RlbmVyKCJt
b3VzZWRvd24iLCB0aGlzKTsKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIApAQCAtNjUsMjMgKzYy
LDIzIEBAIFdlYkluc3BlY3Rvci5Db2xvcldoZWVsLnByb3RvdHlwZSA9IHsKIAogICAgICAgICB0
aGlzLl9kcmF3UmF3Q2FudmFzKCk7CiAgICAgICAgIHRoaXMuX2RyYXcoKTsKLSAgICB9LAorICAg
IH0KIAogICAgIGdldCBlbGVtZW50KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9lbGVt
ZW50OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGJyaWdodG5lc3MoKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIHRoaXMuX2JyaWdodG5lc3M7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgYnJp
Z2h0bmVzcyhicmlnaHRuZXNzKQogICAgIHsKICAgICAgICAgdGhpcy5fYnJpZ2h0bmVzcyA9IGJy
aWdodG5lc3M7CiAgICAgICAgIHRoaXMuX2RyYXcoKTsKLSAgICB9LAorICAgIH0KIAogICAgIGdl
dCB0aW50ZWRDb2xvcigpCiAgICAgewpAQCAtODksMTQgKzg2LDE0IEBAIFdlYkluc3BlY3Rvci5D
b2xvcldoZWVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybiB0aGlzLl9jb2xvckF0
UG9pbnRXaXRoQnJpZ2h0bmVzcyh0aGlzLl9jcm9zc2hhaXJQb3NpdGlvbi54ICogd2luZG93LmRl
dmljZVBpeGVsUmF0aW8sIHRoaXMuX2Nyb3NzaGFpclBvc2l0aW9uLnkgKiB3aW5kb3cuZGV2aWNl
UGl4ZWxSYXRpbywgdGhpcy5fYnJpZ2h0bmVzcyk7CiAKICAgICAgICAgcmV0dXJuIG5ldyBXZWJJ
bnNwZWN0b3IuQ29sb3IoV2ViSW5zcGVjdG9yLkNvbG9yLkZvcm1hdC5SR0JBLCBbMCwgMCwgMCwg
MF0pOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IHRpbnRlZENvbG9yKHRpbnRlZENvbG9yKQog
ICAgIHsKICAgICAgICAgdmFyIGRhdGEgPSB0aGlzLl90aW50ZWRDb2xvclRvUG9pbnRBbmRCcmln
aHRuZXNzKHRpbnRlZENvbG9yKTsKICAgICAgICAgdGhpcy5fc2V0Q3Jvc3NoYWlyUG9zaXRpb24o
ZGF0YS5wb2ludCk7CiAgICAgICAgIHRoaXMuYnJpZ2h0bmVzcyA9IGRhdGEuYnJpZ2h0bmVzczsK
LSAgICB9LAorICAgIH0KIAogICAgIGdldCByYXdDb2xvcigpCiAgICAgewpAQCAtMTA0LDExICsx
MDEsMTEgQEAgV2ViSW5zcGVjdG9yLkNvbG9yV2hlZWwucHJvdG90eXBlID0gewogICAgICAgICAg
ICAgcmV0dXJuIHRoaXMuX2NvbG9yQXRQb2ludFdpdGhCcmlnaHRuZXNzKHRoaXMuX2Nyb3NzaGFp
clBvc2l0aW9uLnggKiB3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbywgdGhpcy5fY3Jvc3NoYWlyUG9z
aXRpb24ueSAqIHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvLCAxKTsKIAogICAgICAgICByZXR1cm4g
bmV3IFdlYkluc3BlY3Rvci5Db2xvcihXZWJJbnNwZWN0b3IuQ29sb3IuRm9ybWF0LlJHQkEsIFsw
LCAwLCAwLCAwXSk7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcm90ZWN0ZWQKIAotICAgIGhh
bmRsZUV2ZW50OiBmdW5jdGlvbihldmVudCkKKyAgICBoYW5kbGVFdmVudChldmVudCkKICAgICB7
CiAgICAgICAgIHN3aXRjaCAoZXZlbnQudHlwZSkgewogICAgICAgICBjYXNlICJtb3VzZWRvd24i
OgpAQCAtMTIxLDMwICsxMTgsMzAgQEAgV2ViSW5zcGVjdG9yLkNvbG9yV2hlZWwucHJvdG90eXBl
ID0gewogICAgICAgICAgICAgdGhpcy5faGFuZGxlTW91c2V1cChldmVudCk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJpdmF0ZQogCi0g
ICAgX2hhbmRsZU1vdXNlZG93bjogZnVuY3Rpb24oZXZlbnQpCisgICAgX2hhbmRsZU1vdXNlZG93
bihldmVudCkKICAgICB7CiAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW1v
dmUiLCB0aGlzLCB0cnVlKTsKICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNl
dXAiLCB0aGlzLCB0cnVlKTsKIAogICAgICAgICB0aGlzLl91cGRhdGVDb2xvckZvck1vdXNlRXZl
bnQoZXZlbnQpOwotICAgIH0sCisgICAgfQogCi0gICAgX2hhbmRsZU1vdXNlbW92ZTogZnVuY3Rp
b24oZXZlbnQpCisgICAgX2hhbmRsZU1vdXNlbW92ZShldmVudCkKICAgICB7CiAgICAgICAgIHRo
aXMuX3VwZGF0ZUNvbG9yRm9yTW91c2VFdmVudChldmVudCk7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICBfaGFuZGxlTW91c2V1cDogZnVuY3Rpb24oZXZlbnQpCisgICAgX2hhbmRsZU1vdXNldXAoZXZl
bnQpCiAgICAgewogICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2Vtb3Zl
IiwgdGhpcywgdHJ1ZSk7CiAgICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3Vz
ZXVwIiwgdGhpcywgdHJ1ZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcG9pbnRJbkNpcmNsZUZv
ckV2ZW50OiBmdW5jdGlvbihldmVudCkKKyAgICBfcG9pbnRJbkNpcmNsZUZvckV2ZW50KGV2ZW50
KQogICAgIHsKICAgICAgICAgZnVuY3Rpb24gZGlzdGFuY2UoYSwgYikKICAgICAgICAgewpAQCAt
MTY5LDkgKzE2Niw5IEBAIFdlYkluc3BlY3Rvci5Db2xvcldoZWVsLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgICAgIHBvaW50ID0gcG9pbnRPbkNpcmN1bWZlcmVuY2UoY2VudGVyLCB0aGlzLl9yYWRp
dXMsIGFuZ2xlKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gcG9pbnQ7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBfdXBkYXRlQ29sb3JGb3JNb3VzZUV2ZW50OiBmdW5jdGlvbihldmVudCkKKyAg
ICBfdXBkYXRlQ29sb3JGb3JNb3VzZUV2ZW50KGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIHBv
aW50ID0gdGhpcy5fcG9pbnRJbkNpcmNsZUZvckV2ZW50KGV2ZW50KTsKIApAQCAtMTc5LDE1ICsx
NzYsMTUgQEAgV2ViSW5zcGVjdG9yLkNvbG9yV2hlZWwucHJvdG90eXBlID0gewogCiAgICAgICAg
IGlmICh0aGlzLmRlbGVnYXRlICYmIHR5cGVvZiB0aGlzLmRlbGVnYXRlLmNvbG9yV2hlZWxDb2xv
ckRpZENoYW5nZSA9PT0gImZ1bmN0aW9uIikKICAgICAgICAgICAgIHRoaXMuZGVsZWdhdGUuY29s
b3JXaGVlbENvbG9yRGlkQ2hhbmdlKHRoaXMpOwotICAgIH0sCisgICAgfQogCi0gICAgX3NldENy
b3NzaGFpclBvc2l0aW9uOiBmdW5jdGlvbihwb2ludCkKKyAgICBfc2V0Q3Jvc3NoYWlyUG9zaXRp
b24ocG9pbnQpCiAgICAgewogICAgICAgICB0aGlzLl9jcm9zc2hhaXJQb3NpdGlvbiA9IHBvaW50
OwogICAgICAgICB0aGlzLl9jcm9zc2hhaXIuc3R5bGUud2Via2l0VHJhbnNmb3JtID0gInRyYW5z
bGF0ZSgiICsgTWF0aC5yb3VuZChwb2ludC54KSArICJweCwgIiArIE1hdGgucm91bmQocG9pbnQu
eSkgKyAicHgpIjsKLSAgICB9LAorICAgIH0KIAotICAgIF90aW50ZWRDb2xvclRvUG9pbnRBbmRC
cmlnaHRuZXNzOiBmdW5jdGlvbihjb2xvcikKKyAgICBfdGludGVkQ29sb3JUb1BvaW50QW5kQnJp
Z2h0bmVzcyhjb2xvcikKICAgICB7CiAgICAgICAgIHZhciByZ2IgPSBjb2xvci5yZ2I7CiAgICAg
ICAgIHZhciBoc3YgPSBXZWJJbnNwZWN0b3IuQ29sb3IucmdiMmhzdihyZ2JbMF0sIHJnYlsxXSwg
cmdiWzJdKTsKQEAgLTIwMCw5ICsxOTcsOSBAQCBXZWJJbnNwZWN0b3IuQ29sb3JXaGVlbC5wcm90
b3R5cGUgPSB7CiAgICAgICAgICAgICBwb2ludDogbmV3IFdlYkluc3BlY3Rvci5Qb2ludCh4LCB5
KSwKICAgICAgICAgICAgIGJyaWdodG5lc3M6IGhzdlsyXQogICAgICAgICB9OwotICAgIH0sCisg
ICAgfQogCi0gICAgX2RyYXdSYXdDYW52YXM6IGZ1bmN0aW9uKCkgeworICAgIF9kcmF3UmF3Q2Fu
dmFzKCkgewogICAgICAgICB2YXIgY3R4ID0gdGhpcy5fcmF3Q2FudmFzLmdldENvbnRleHQoIjJk
Iik7CiAKICAgICAgICAgdmFyIGRpbWVuc2lvbiA9IHRoaXMuX2RpbWVuc2lvbiAqIHdpbmRvdy5k
ZXZpY2VQaXhlbFJhdGlvOwpAQCAtMjI1LDkgKzIyMiw5IEBAIFdlYkluc3BlY3Rvci5Db2xvcldo
ZWVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBjdHgu
cHV0SW1hZ2VEYXRhKGltYWdlRGF0YSwgMCwgMCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfY29s
b3JBdFBvaW50V2l0aEJyaWdodG5lc3M6IGZ1bmN0aW9uKHgsIHksIGJyaWdodG5lc3MpCisgICAg
X2NvbG9yQXRQb2ludFdpdGhCcmlnaHRuZXNzKHgsIHksIGJyaWdodG5lc3MpCiAgICAgewogICAg
ICAgICB2YXIgY2VudGVyID0gdGhpcy5fZGltZW5zaW9uIC8gMiAqIHdpbmRvdy5kZXZpY2VQaXhl
bFJhdGlvOwogICAgICAgICB2YXIgeERpcyA9IHggLSBjZW50ZXI7CkBAIC0yNDksOSArMjQ2LDkg
QEAgV2ViSW5zcGVjdG9yLkNvbG9yV2hlZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAgTWF0
aC5yb3VuZChyZ2JbMl0gKiAyNTUpLAogICAgICAgICAgICAgMQogICAgICAgICBdKTsKLSAgICB9
LAorICAgIH0KIAotICAgIF9kcmF3VGludGVkQ2FudmFzOiBmdW5jdGlvbigpCisgICAgX2RyYXdU
aW50ZWRDYW52YXMoKQogICAgIHsKICAgICAgICAgdmFyIGN0eCA9IHRoaXMuX3RpbnRlZENhbnZh
cy5nZXRDb250ZXh0KCIyZCIpOwogICAgICAgICB2YXIgZGltZW5zaW9uID0gdGhpcy5fZGltZW5z
aW9uICogd2luZG93LmRldmljZVBpeGVsUmF0aW87CkBAIC0yNjQsOSArMjYxLDkgQEAgV2ViSW5z
cGVjdG9yLkNvbG9yV2hlZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAgY3R4LmZpbGxSZWN0
KDAsIDAsIGRpbWVuc2lvbiwgZGltZW5zaW9uKTsKICAgICAgICAgfQogICAgICAgICBjdHgucmVz
dG9yZSgpOwotICAgIH0sCisgICAgfQogCi0gICAgX2RyYXc6IGZ1bmN0aW9uKCkKKyAgICBfZHJh
dygpCiAgICAgewogICAgICAgICB0aGlzLl9kcmF3VGludGVkQ2FudmFzKCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRleHRNZW51
LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGV4dE1l
bnUuanMKaW5kZXggZmZjOWU2NTY1YTUxZjZjODZjNWRjY2RiZTY1NGEzNjk0ZmEzMDNmYy4uOWYx
NTVjMGM3NTIwNTM0NDQ5M2QyODdjYTA4Y2Q2YTAzZjQzZTQwZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGV4dE1lbnUuanMKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGV4dE1lbnUuanMK
QEAgLTEsNiArMSw2IEBACiAvKgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
QEAgLTI5LDM5ICsyOSw0NyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3Iu
Q29udGV4dE1lbnVJdGVtID0gZnVuY3Rpb24odG9wTGV2ZWxNZW51LCB0eXBlLCBsYWJlbCwgZGlz
YWJsZWQsIGNoZWNrZWQpCitXZWJJbnNwZWN0b3IuQ29udGV4dE1lbnVJdGVtID0gY2xhc3MgQ29u
dGV4dE1lbnVJdGVtIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogewotICAgIHRoaXMuX3R5
cGUgPSB0eXBlOwotICAgIHRoaXMuX2xhYmVsID0gbGFiZWw7Ci0gICAgdGhpcy5fZGlzYWJsZWQg
PSBkaXNhYmxlZDsKLSAgICB0aGlzLl9jaGVja2VkID0gY2hlY2tlZDsKLSAgICB0aGlzLl9jb250
ZXh0TWVudSA9IHRvcExldmVsTWVudTsKLSAgICBpZiAodHlwZSA9PT0gIml0ZW0iIHx8IHR5cGUg
PT09ICJjaGVja2JveCIpCi0gICAgICAgIHRoaXMuX2lkID0gdG9wTGV2ZWxNZW51Lm5leHRJZCgp
OwotfTsKKyAgICBjb25zdHJ1Y3Rvcih0b3BMZXZlbE1lbnUsIHR5cGUsIGxhYmVsLCBkaXNhYmxl
ZCwgY2hlY2tlZCkKKyAgICB7CisgICAgICAgIHN1cGVyKCk7CisKKyAgICAgICAgdGhpcy5fdHlw
ZSA9IHR5cGU7CisgICAgICAgIHRoaXMuX2xhYmVsID0gbGFiZWw7CisgICAgICAgIHRoaXMuX2Rp
c2FibGVkID0gZGlzYWJsZWQ7CisgICAgICAgIHRoaXMuX2NoZWNrZWQgPSBjaGVja2VkOworICAg
ICAgICB0aGlzLl9jb250ZXh0TWVudSA9IHRvcExldmVsTWVudSB8fCB0aGlzOworCisgICAgICAg
IGlmICh0eXBlID09PSAiaXRlbSIgfHwgdHlwZSA9PT0gImNoZWNrYm94IikKKyAgICAgICAgICAg
IHRoaXMuX2lkID0gdG9wTGV2ZWxNZW51Lm5leHRJZCgpOworICAgIH0KKworICAgIC8vIFB1Ymxp
YwogCi1XZWJJbnNwZWN0b3IuQ29udGV4dE1lbnVJdGVtLnByb3RvdHlwZSA9IHsKLSAgICBpZDog
ZnVuY3Rpb24oKQorICAgIGlkKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9pZDsKLSAg
ICB9LAorICAgIH0KIAotICAgIHR5cGU6IGZ1bmN0aW9uKCkKKyAgICB0eXBlKCkKICAgICB7CiAg
ICAgICAgIHJldHVybiB0aGlzLl90eXBlOwotICAgIH0sCisgICAgfQogCi0gICAgaXNFbmFibGVk
OiBmdW5jdGlvbigpCisgICAgaXNFbmFibGVkKCkKICAgICB7CiAgICAgICAgIHJldHVybiAhdGhp
cy5fZGlzYWJsZWQ7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzZXRFbmFibGVkOiBmdW5jdGlvbihl
bmFibGVkKQorICAgIHNldEVuYWJsZWQoZW5hYmxlZCkKICAgICB7CiAgICAgICAgIHRoaXMuX2Rp
c2FibGVkID0gIWVuYWJsZWQ7Ci0gICAgfSwKKyAgICB9CisKKyAgICAvLyBQcml2YXRlCiAKLSAg
ICBfYnVpbGREZXNjcmlwdG9yOiBmdW5jdGlvbigpCisgICAgX2J1aWxkRGVzY3JpcHRvcigpCiAg
ICAgewogICAgICAgICBzd2l0Y2ggKHRoaXMuX3R5cGUpIHsKICAgICAgICAgY2FzZSAiaXRlbSI6
CkBAIC03NCw5MSArODIsMTA5IEBAIFdlYkluc3BlY3Rvci5Db250ZXh0TWVudUl0ZW0ucHJvdG90
eXBlID0gewogICAgIH0KIH07CiAKLVdlYkluc3BlY3Rvci5Db250ZXh0U3ViTWVudUl0ZW0gPSBm
dW5jdGlvbih0b3BMZXZlbE1lbnUsIGxhYmVsLCBkaXNhYmxlZCkKK1dlYkluc3BlY3Rvci5Db250
ZXh0U3ViTWVudUl0ZW0gPSBjbGFzcyBDb250ZXh0U3ViTWVudUl0ZW0gZXh0ZW5kcyBXZWJJbnNw
ZWN0b3IuQ29udGV4dE1lbnVJdGVtCiB7Ci0gICAgV2ViSW5zcGVjdG9yLkNvbnRleHRNZW51SXRl
bS5jYWxsKHRoaXMsIHRvcExldmVsTWVudSwgInN1Yk1lbnUiLCBsYWJlbCwgZGlzYWJsZWQpOwot
ICAgIHRoaXMuX2l0ZW1zID0gW107Ci19OworICAgIGNvbnN0cnVjdG9yKHRvcExldmVsTWVudSwg
bGFiZWwsIGRpc2FibGVkKQorICAgIHsKKyAgICAgICAgc3VwZXIodG9wTGV2ZWxNZW51LCAic3Vi
TWVudSIsIGxhYmVsLCBkaXNhYmxlZCk7CisKKyAgICAgICAgdGhpcy5faXRlbXMgPSBbXTsKKyAg
ICB9CisKKyAgICAvLyBQdWJsaWMKIAotV2ViSW5zcGVjdG9yLkNvbnRleHRTdWJNZW51SXRlbS5w
cm90b3R5cGUgPSB7Ci0gICAgYXBwZW5kSXRlbTogZnVuY3Rpb24obGFiZWwsIGhhbmRsZXIsIGRp
c2FibGVkKQorICAgIGFwcGVuZEl0ZW0obGFiZWwsIGhhbmRsZXIsIGRpc2FibGVkKQogICAgIHsK
ICAgICAgICAgdmFyIGl0ZW0gPSBuZXcgV2ViSW5zcGVjdG9yLkNvbnRleHRNZW51SXRlbSh0aGlz
Ll9jb250ZXh0TWVudSwgIml0ZW0iLCBsYWJlbCwgZGlzYWJsZWQpOwogICAgICAgICB0aGlzLl9w
dXNoSXRlbShpdGVtKTsKICAgICAgICAgdGhpcy5fY29udGV4dE1lbnUuX3NldEhhbmRsZXIoaXRl
bS5pZCgpLCBoYW5kbGVyKTsKICAgICAgICAgcmV0dXJuIGl0ZW07Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBhcHBlbmRTdWJNZW51SXRlbTogZnVuY3Rpb24obGFiZWwsIGRpc2FibGVkKQorICAgIGFw
cGVuZFN1Yk1lbnVJdGVtKGxhYmVsLCBkaXNhYmxlZCkKICAgICB7CiAgICAgICAgIHZhciBpdGVt
ID0gbmV3IFdlYkluc3BlY3Rvci5Db250ZXh0U3ViTWVudUl0ZW0odGhpcy5fY29udGV4dE1lbnUs
IGxhYmVsLCBkaXNhYmxlZCk7CiAgICAgICAgIHRoaXMuX3B1c2hJdGVtKGl0ZW0pOwogICAgICAg
ICByZXR1cm4gaXRlbTsKLSAgICB9LAorICAgIH0KIAotICAgIGFwcGVuZENoZWNrYm94SXRlbTog
ZnVuY3Rpb24obGFiZWwsIGhhbmRsZXIsIGNoZWNrZWQsIGRpc2FibGVkKQorICAgIGFwcGVuZENo
ZWNrYm94SXRlbShsYWJlbCwgaGFuZGxlciwgY2hlY2tlZCwgZGlzYWJsZWQpCiAgICAgewogICAg
ICAgICB2YXIgaXRlbSA9IG5ldyBXZWJJbnNwZWN0b3IuQ29udGV4dE1lbnVJdGVtKHRoaXMuX2Nv
bnRleHRNZW51LCAiY2hlY2tib3giLCBsYWJlbCwgZGlzYWJsZWQsIGNoZWNrZWQpOwogICAgICAg
ICB0aGlzLl9wdXNoSXRlbShpdGVtKTsKICAgICAgICAgdGhpcy5fY29udGV4dE1lbnUuX3NldEhh
bmRsZXIoaXRlbS5pZCgpLCBoYW5kbGVyKTsKICAgICAgICAgcmV0dXJuIGl0ZW07Ci0gICAgfSwK
KyAgICB9CiAKLSAgICBhcHBlbmRTZXBhcmF0b3I6IGZ1bmN0aW9uKCkKKyAgICBhcHBlbmRTZXBh
cmF0b3IoKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX2l0ZW1zLmxlbmd0aCkKICAgICAgICAg
ICAgIHRoaXMuX3BlbmRpbmdTZXBhcmF0b3IgPSB0cnVlOwotICAgIH0sCisgICAgfQogCi0gICAg
X3B1c2hJdGVtOiBmdW5jdGlvbihpdGVtKQorICAgIF9wdXNoSXRlbShpdGVtKQogICAgIHsKICAg
ICAgICAgaWYgKHRoaXMuX3BlbmRpbmdTZXBhcmF0b3IpIHsKICAgICAgICAgICAgIHRoaXMuX2l0
ZW1zLnB1c2gobmV3IFdlYkluc3BlY3Rvci5Db250ZXh0TWVudUl0ZW0odGhpcy5fY29udGV4dE1l
bnUsICJzZXBhcmF0b3IiKSk7CiAgICAgICAgICAgICBkZWxldGUgdGhpcy5fcGVuZGluZ1NlcGFy
YXRvcjsKICAgICAgICAgfQogICAgICAgICB0aGlzLl9pdGVtcy5wdXNoKGl0ZW0pOwotICAgIH0s
CisgICAgfQogCi0gICAgaXNFbXB0eTogZnVuY3Rpb24oKQorICAgIGlzRW1wdHkoKQogICAgIHsK
ICAgICAgICAgcmV0dXJuICF0aGlzLl9pdGVtcy5sZW5ndGg7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICBfYnVpbGREZXNjcmlwdG9yOiBmdW5jdGlvbigpCisgICAgX2J1aWxkRGVzY3JpcHRvcigpCiAg
ICAgewogICAgICAgICB2YXIgcmVzdWx0ID0geyB0eXBlOiAic3ViTWVudSIsIGxhYmVsOiB0aGlz
Ll9sYWJlbCwgZW5hYmxlZDogIXRoaXMuX2Rpc2FibGVkLCBzdWJJdGVtczogW10gfTsKICAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9pdGVtcy5sZW5ndGg7ICsraSkKICAgICAgICAg
ICAgIHJlc3VsdC5zdWJJdGVtcy5wdXNoKHRoaXMuX2l0ZW1zW2ldLl9idWlsZERlc2NyaXB0b3Io
KSk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfSwKLQotICAgIF9fcHJvdG9fXzogV2Vi
SW5zcGVjdG9yLkNvbnRleHRNZW51SXRlbS5wcm90b3R5cGUKKyAgICB9CiB9OwogCi1XZWJJbnNw
ZWN0b3IuQ29udGV4dE1lbnUgPSBmdW5jdGlvbihldmVudCkgewotICAgIFdlYkluc3BlY3Rvci5D
b250ZXh0U3ViTWVudUl0ZW0uY2FsbCh0aGlzLCB0aGlzLCAiIik7Ci0gICAgdGhpcy5fZXZlbnQg
PSBldmVudDsKLSAgICB0aGlzLl9oYW5kbGVycyA9IHt9OwotICAgIHRoaXMuX2lkID0gMDsKLX07
CitXZWJJbnNwZWN0b3IuQ29udGV4dE1lbnUgPSBjbGFzcyBDb250ZXh0TWVudSBleHRlbmRzIFdl
Ykluc3BlY3Rvci5Db250ZXh0U3ViTWVudUl0ZW0KK3sKKyAgICBjb25zdHJ1Y3RvcihldmVudCkg
eworICAgICAgICBzdXBlcihudWxsLCAiIik7CisKKyAgICAgICAgdGhpcy5fZXZlbnQgPSBldmVu
dDsKKyAgICAgICAgdGhpcy5faGFuZGxlcnMgPSB7fTsKKyAgICAgICAgdGhpcy5faWQgPSAwOwor
ICAgIH0KKworICAgIC8vIFN0YXRpYwogCi1XZWJJbnNwZWN0b3IuQ29udGV4dE1lbnUucHJvdG90
eXBlID0geworICAgIHN0YXRpYyBjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChpZCkKKyAgICB7Cisg
ICAgICAgIGlmIChXZWJJbnNwZWN0b3IuQ29udGV4dE1lbnUuX2xhc3RDb250ZXh0TWVudSkKKyAg
ICAgICAgICAgIFdlYkluc3BlY3Rvci5Db250ZXh0TWVudS5fbGFzdENvbnRleHRNZW51Ll9pdGVt
U2VsZWN0ZWQoaWQpOworICAgIH0KKworICAgIHN0YXRpYyBjb250ZXh0TWVudUNsZWFyZWQoKQor
ICAgIHsKKyAgICAgICAgLy8gRklYTUU6IFVuZm9ydHVuYXRlbHksIGNvbnRleHRNZW51Q2xlYXJl
ZCBpcyBpbnZva2VkIGJldHdlZW4gc2hvdyBhbmQgaXRlbSBzZWxlY3RlZAorICAgICAgICAvLyBz
byB3ZSBjYW4ndCBkZWxldGUgbGFzdCBtZW51IG9iamVjdCBmcm9tIFdlYkluc3BlY3Rvci4gRml4
IHRoZSBjb250cmFjdC4KKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAotICAgIG5leHRJZDogZnVu
Y3Rpb24oKQorICAgIG5leHRJZCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5faWQrKzsK
LSAgICB9LAorICAgIH0KIAotICAgIHNob3c6IGZ1bmN0aW9uKCkKKyAgICBzaG93KCkKICAgICB7
CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2V2ZW50IGluc3RhbmNlb2YgTW91c2VFdmVu
dCk7CiAKICAgICAgICAgdmFyIG1lbnVPYmplY3QgPSB0aGlzLl9idWlsZERlc2NyaXB0b3IoKTsK
IAogICAgICAgICBpZiAobWVudU9iamVjdC5sZW5ndGgpIHsKLSAgICAgICAgICAgIFdlYkluc3Bl
Y3Rvci5fY29udGV4dE1lbnUgPSB0aGlzOworICAgICAgICAgICAgV2ViSW5zcGVjdG9yLkNvbnRl
eHRNZW51Ll9sYXN0Q29udGV4dE1lbnUgPSB0aGlzOworCiAgICAgICAgICAgICBpZiAodGhpcy5f
ZXZlbnQudHlwZSAhPT0gImNvbnRleHRtZW51IiAmJiB0eXBlb2YgSW5zcGVjdG9yRnJvbnRlbmRI
b3N0LmRpc3BhdGNoRXZlbnRBc0NvbnRleHRNZW51RXZlbnQgPT09ICJmdW5jdGlvbiIpIHsKICAg
ICAgICAgICAgICAgICB0aGlzLl9tZW51T2JqZWN0ID0gbWVudU9iamVjdDsKICAgICAgICAgICAg
ICAgICB0aGlzLl9ldmVudC50YXJnZXQuYWRkRXZlbnRMaXN0ZW5lcigiY29udGV4dG1lbnUiLCB0
aGlzLCB0cnVlKTsKQEAgLTE2Niw3OSArMTkyLDQxIEBAIFdlYkluc3BlY3Rvci5Db250ZXh0TWVu
dS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICBJbnNw
ZWN0b3JGcm9udGVuZEhvc3Quc2hvd0NvbnRleHRNZW51KHRoaXMuX2V2ZW50LCBtZW51T2JqZWN0
KTsKICAgICAgICAgfQorCiAgICAgICAgIGlmICh0aGlzLl9ldmVudCkKICAgICAgICAgICAgIHRo
aXMuX2V2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpOwotICAgIH0sCisgICAgfQogCiAg
ICAgLy8gUHJvdGVjdGVkCiAKLSAgICBoYW5kbGVFdmVudDogZnVuY3Rpb24oZXZlbnQpCisgICAg
aGFuZGxlRXZlbnQoZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLl9ldmVudC50YXJnZXQucmVt
b3ZlRXZlbnRMaXN0ZW5lcigiY29udGV4dG1lbnUiLCB0aGlzLCB0cnVlKTsKICAgICAgICAgSW5z
cGVjdG9yRnJvbnRlbmRIb3N0LnNob3dDb250ZXh0TWVudShldmVudCwgdGhpcy5fbWVudU9iamVj
dCk7CiAgICAgICAgIGRlbGV0ZSB0aGlzLl9tZW51T2JqZWN0OwogCiAgICAgICAgIGV2ZW50LnN0
b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJpdmF0
ZQogCi0gICAgX3NldEhhbmRsZXI6IGZ1bmN0aW9uKGlkLCBoYW5kbGVyKQorICAgIF9zZXRIYW5k
bGVyKGlkLCBoYW5kbGVyKQogICAgIHsKICAgICAgICAgaWYgKGhhbmRsZXIpCiAgICAgICAgICAg
ICB0aGlzLl9oYW5kbGVyc1tpZF0gPSBoYW5kbGVyOwotICAgIH0sCisgICAgfQogCi0gICAgX2J1
aWxkRGVzY3JpcHRvcjogZnVuY3Rpb24oKQorICAgIF9idWlsZERlc2NyaXB0b3IoKQogICAgIHsK
ICAgICAgICAgdmFyIHJlc3VsdCA9IFtdOwogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRo
aXMuX2l0ZW1zLmxlbmd0aDsgKytpKQogICAgICAgICAgICAgcmVzdWx0LnB1c2godGhpcy5faXRl
bXNbaV0uX2J1aWxkRGVzY3JpcHRvcigpKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9
LAorICAgIH0KIAotICAgIF9pdGVtU2VsZWN0ZWQ6IGZ1bmN0aW9uKGlkKQorICAgIF9pdGVtU2Vs
ZWN0ZWQoaWQpCiAgICAgewogICAgICAgICBpZiAodGhpcy5faGFuZGxlcnNbaWRdKQogICAgICAg
ICAgICAgdGhpcy5faGFuZGxlcnNbaWRdLmNhbGwodGhpcyk7Ci0gICAgfSwKLQotICAgIGFwcGVu
ZEFwcGxpY2FibGVJdGVtczogZnVuY3Rpb24odGFyZ2V0KQotICAgIHsKLSAgICAgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBXZWJJbnNwZWN0b3IuQ29udGV4dE1lbnUuX3Byb3ZpZGVycy5sZW5ndGg7
ICsraSkgewotICAgICAgICAgICAgdmFyIHByb3ZpZGVyID0gV2ViSW5zcGVjdG9yLkNvbnRleHRN
ZW51Ll9wcm92aWRlcnNbaV07Ci0gICAgICAgICAgICB0aGlzLmFwcGVuZFNlcGFyYXRvcigpOwot
ICAgICAgICAgICAgcHJvdmlkZXIuYXBwZW5kQXBwbGljYWJsZUl0ZW1zKHRoaXMuX2V2ZW50LCB0
aGlzLCB0YXJnZXQpOwotICAgICAgICAgICAgdGhpcy5hcHBlbmRTZXBhcmF0b3IoKTsKLSAgICAg
ICAgfQotICAgIH0sCi0KLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5Db250ZXh0U3ViTWVu
dUl0ZW0ucHJvdG90eXBlCi19OwotCi1XZWJJbnNwZWN0b3IuQ29udGV4dE1lbnUuUHJvdmlkZXIg
PSBmdW5jdGlvbigpCi17Ci19OwotCi1XZWJJbnNwZWN0b3IuQ29udGV4dE1lbnUuUHJvdmlkZXIu
cHJvdG90eXBlID0gewotICAgIGFwcGVuZEFwcGxpY2FibGVJdGVtczogZnVuY3Rpb24oZXZlbnQs
IGNvbnRleHRNZW51LCB0YXJnZXQpIHsgfQotfTsKLQotV2ViSW5zcGVjdG9yLkNvbnRleHRNZW51
LnJlZ2lzdGVyUHJvdmlkZXIgPSBmdW5jdGlvbihwcm92aWRlcikKLXsKLSAgICBXZWJJbnNwZWN0
b3IuQ29udGV4dE1lbnUuX3Byb3ZpZGVycy5wdXNoKHByb3ZpZGVyKTsKLX07Ci0KLVdlYkluc3Bl
Y3Rvci5Db250ZXh0TWVudS5fcHJvdmlkZXJzID0gW107Ci0KLVdlYkluc3BlY3Rvci5jb250ZXh0
TWVudUl0ZW1TZWxlY3RlZCA9IGZ1bmN0aW9uKGlkKQotewotICAgIGlmIChXZWJJbnNwZWN0b3Iu
X2NvbnRleHRNZW51KQotICAgICAgICBXZWJJbnNwZWN0b3IuX2NvbnRleHRNZW51Ll9pdGVtU2Vs
ZWN0ZWQoaWQpOwotfTsKLQotV2ViSW5zcGVjdG9yLmNvbnRleHRNZW51Q2xlYXJlZCA9IGZ1bmN0
aW9uKCkKLXsKLSAgICAvLyBGSVhNRTogVW5mb3J0dW5hdGVseSwgY29udGV4dE1lbnVDbGVhcmVk
IGlzIGludm9rZWQgYmV0d2VlbiBzaG93IGFuZCBpdGVtIHNlbGVjdGVkCi0gICAgLy8gc28gd2Ug
Y2FuJ3QgZGVsZXRlIGxhc3QgbWVudSBvYmplY3QgZnJvbSBXZWJJbnNwZWN0b3IuIEZpeCB0aGUg
Y29udHJhY3QuCisgICAgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVFbGVtZW50UGF0aENvbXBvbmVudC5qcyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVFbGVtZW50UGF0aENv
bXBvbmVudC5qcwppbmRleCA1MWM3YTE0MmZjNjc2ZmUxMjQ4NGNkZWJmM2EzOTg2NmQxY2Y1N2U3
Li4yMTA5NGUzZjVjZWE1YzNlNzY5NDNhOGE0MDllYzViNDg3OTdhOTQwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVlRWxlbWVudFBh
dGhDb21wb25lbnQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvRE9NVHJlZUVsZW1lbnRQYXRoQ29tcG9uZW50LmpzCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMyw5NSArMjMsODcgQEAKICAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuRE9N
VHJlZUVsZW1lbnRQYXRoQ29tcG9uZW50ID0gZnVuY3Rpb24oZG9tVHJlZUVsZW1lbnQsIHJlcHJl
c2VudGVkT2JqZWN0KSB7Ci0gICAgdmFyIG5vZGUgPSBkb21UcmVlRWxlbWVudC5yZXByZXNlbnRl
ZE9iamVjdDsKLQotICAgIHZhciB0aXRsZSA9IG51bGw7Ci0gICAgdmFyIGNsYXNzTmFtZSA9IG51
bGw7Ci0KLSAgICBzd2l0Y2ggKG5vZGUubm9kZVR5cGUoKSkgewotICAgIGNhc2UgTm9kZS5FTEVN
RU5UX05PREU6Ci0gICAgICAgIGNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5ET01UcmVlRWxlbWVu
dFBhdGhDb21wb25lbnQuRE9NRWxlbWVudEljb25TdHlsZUNsYXNzTmFtZTsKLSAgICAgICAgdGl0
bGUgPSBXZWJJbnNwZWN0b3IuZGlzcGxheU5hbWVGb3JOb2RlKG5vZGUpOwotICAgICAgICBicmVh
azsKLQotICAgIGNhc2UgTm9kZS5URVhUX05PREU6Ci0gICAgICAgIGNsYXNzTmFtZSA9IFdlYklu
c3BlY3Rvci5ET01UcmVlRWxlbWVudFBhdGhDb21wb25lbnQuRE9NVGV4dE5vZGVJY29uU3R5bGVD
bGFzc05hbWU7Ci0gICAgICAgIHRpdGxlID0gIlwiIiArIG5vZGUubm9kZVZhbHVlKCkudHJpbUVu
ZCgzMikgKyAiXCIiOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgTm9kZS5DT01NRU5UX05P
REU6Ci0gICAgICAgIGNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5ET01UcmVlRWxlbWVudFBhdGhD
b21wb25lbnQuRE9NQ29tbWVudEljb25TdHlsZUNsYXNzTmFtZTsKLSAgICAgICAgdGl0bGUgPSAi
PCEtLSIgKyBub2RlLm5vZGVWYWx1ZSgpLnRyaW1FbmQoMzIpICsgIi0tPiI7Ci0gICAgICAgIGJy
ZWFrOwotCi0gICAgY2FzZSBOb2RlLkRPQ1VNRU5UX1RZUEVfTk9ERToKLSAgICAgICAgY2xhc3NO
YW1lID0gV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50UGF0aENvbXBvbmVudC5ET01Eb2N1bWVu
dFR5cGVJY29uU3R5bGVDbGFzc05hbWU7Ci0gICAgICAgIHRpdGxlID0gIjwhRE9DVFlQRT4iOwot
ICAgICAgICBicmVhazsKLQotICAgIGNhc2UgTm9kZS5ET0NVTUVOVF9OT0RFOgotICAgICAgICBj
bGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1lbnRQYXRoQ29tcG9uZW50LkRPTURv
Y3VtZW50SWNvblN0eWxlQ2xhc3NOYW1lOwotICAgICAgICB0aXRsZSA9IG5vZGUubm9kZU5hbWVJ
bkNvcnJlY3RDYXNlKCk7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBOb2RlLkNEQVRBX1NF
Q1RJT05fTk9ERToKLSAgICAgICAgY2xhc3NOYW1lID0gV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVt
ZW50UGF0aENvbXBvbmVudC5ET01DaGFyYWN0ZXJEYXRhSWNvblN0eWxlQ2xhc3NOYW1lOwotICAg
ICAgICB0aXRsZSA9ICI8IVtDREFUQVsiICsgbm9kZS50cmltRW5kKDMyKSArICJdXT4iOwotICAg
ICAgICBicmVhazsKLQotICAgIGNhc2UgTm9kZS5ET0NVTUVOVF9GUkFHTUVOVF9OT0RFOgotICAg
ICAgICAvLyBGSVhNRTogQXQgc29tZSBwb2ludCB3ZSBtaWdodCB3YW50IGEgZGlmZmVyZW50IGlj
b24gZm9yIHRoaXMuCi0gICAgICAgIC8vIDxyZGFyOi8vcHJvYmxlbS8xMjgwMDk1MD4gTmVlZCBp
Y29uIGZvciBET0NVTUVOVF9GUkFHTUVOVF9OT0RFIGFuZCBQUk9DRVNTSU5HX0lOU1RSVUNUSU9O
X05PREUKLSAgICAgICAgY2xhc3NOYW1lID0gV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50UGF0
aENvbXBvbmVudC5ET01Eb2N1bWVudFR5cGVJY29uU3R5bGVDbGFzc05hbWU7Ci0gICAgICAgIGlm
IChub2RlLmlzSW5TaGFkb3dUcmVlKCkpCi0gICAgICAgICAgICB0aXRsZSA9IFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiU2hhZG93IENvbnRlbnQiKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAg
dGl0bGUgPSBXZWJJbnNwZWN0b3IuZGlzcGxheU5hbWVGb3JOb2RlKG5vZGUpOwotICAgICAgICBi
cmVhazsKLQotICAgIGNhc2UgTm9kZS5QUk9DRVNTSU5HX0lOU1RSVUNUSU9OX05PREU6Ci0gICAg
ICAgIC8vIEZJWE1FOiBBdCBzb21lIHBvaW50IHdlIG1pZ2h0IHdhbnQgYSBkaWZmZXJlbnQgaWNv
biBmb3IgdGhpcy4KLSAgICAgICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzEyODAwOTUwPiBOZWVkIGlj
b24gZm9yIERPQ1VNRU5UX0ZSQUdNRU5UX05PREUgYW5kIFBST0NFU1NJTkdfSU5TVFJVQ1RJT05f
Tk9ERS4KLSAgICAgICAgY2xhc3NOYW1lID0gV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50UGF0
aENvbXBvbmVudC5ET01Eb2N1bWVudFR5cGVJY29uU3R5bGVDbGFzc05hbWU7Ci0gICAgICAgIHRp
dGxlID0gbm9kZS5ub2RlTmFtZUluQ29ycmVjdENhc2UoKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAg
ICBkZWZhdWx0OgotICAgICAgICBjb25zb2xlLmVycm9yKCJVbmtub3duIERPTSBub2RlIHR5cGU6
ICIsIG5vZGUubm9kZVR5cGUoKSk7Ci0gICAgICAgIGNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5E
T01UcmVlRWxlbWVudFBhdGhDb21wb25lbnQuRE9NTm9kZUljb25TdHlsZUNsYXNzTmFtZTsKLSAg
ICAgICAgdGl0bGUgPSBub2RlLm5vZGVOYW1lSW5Db3JyZWN0Q2FzZSgpOwotICAgIH0KLQotICAg
IFdlYkluc3BlY3Rvci5IaWVyYXJjaGljYWxQYXRoQ29tcG9uZW50LmNhbGwodGhpcywgdGl0bGUs
IGNsYXNzTmFtZSwgcmVwcmVzZW50ZWRPYmplY3QgfHwgZG9tVHJlZUVsZW1lbnQucmVwcmVzZW50
ZWRPYmplY3QpOwotCi0gICAgdGhpcy5fZG9tVHJlZUVsZW1lbnQgPSBkb21UcmVlRWxlbWVudDsK
LX07CitXZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1lbnRQYXRoQ29tcG9uZW50ID0gY2xhc3MgRE9N
VHJlZUVsZW1lbnRQYXRoQ29tcG9uZW50IGV4dGVuZHMgV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNh
bFBhdGhDb21wb25lbnQKK3sKKyAgICBjb25zdHJ1Y3Rvcihkb21UcmVlRWxlbWVudCwgcmVwcmVz
ZW50ZWRPYmplY3QpCisgICAgeworICAgICAgICB2YXIgbm9kZSA9IGRvbVRyZWVFbGVtZW50LnJl
cHJlc2VudGVkT2JqZWN0OwogCi1XZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1lbnRQYXRoQ29tcG9u
ZW50LkRPTUVsZW1lbnRJY29uU3R5bGVDbGFzc05hbWUgPSAiZG9tLWVsZW1lbnQtaWNvbiI7Ci1X
ZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1lbnRQYXRoQ29tcG9uZW50LkRPTVRleHROb2RlSWNvblN0
eWxlQ2xhc3NOYW1lID0gImRvbS10ZXh0LW5vZGUtaWNvbiI7Ci1XZWJJbnNwZWN0b3IuRE9NVHJl
ZUVsZW1lbnRQYXRoQ29tcG9uZW50LkRPTUNvbW1lbnRJY29uU3R5bGVDbGFzc05hbWUgPSAiZG9t
LWNvbW1lbnQtaWNvbiI7Ci1XZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1lbnRQYXRoQ29tcG9uZW50
LkRPTURvY3VtZW50VHlwZUljb25TdHlsZUNsYXNzTmFtZSA9ICJkb20tZG9jdW1lbnQtdHlwZS1p
Y29uIjsKLVdlYkluc3BlY3Rvci5ET01UcmVlRWxlbWVudFBhdGhDb21wb25lbnQuRE9NRG9jdW1l
bnRJY29uU3R5bGVDbGFzc05hbWUgPSAiZG9tLWRvY3VtZW50LWljb24iOwotV2ViSW5zcGVjdG9y
LkRPTVRyZWVFbGVtZW50UGF0aENvbXBvbmVudC5ET01DaGFyYWN0ZXJEYXRhSWNvblN0eWxlQ2xh
c3NOYW1lID0gImRvbS1jaGFyYWN0ZXItZGF0YS1pY29uIjsKLVdlYkluc3BlY3Rvci5ET01UcmVl
RWxlbWVudFBhdGhDb21wb25lbnQuRE9NTm9kZUljb25TdHlsZUNsYXNzTmFtZSA9ICJkb20tbm9k
ZS1pY29uIjsKKyAgICAgICAgdmFyIHRpdGxlID0gbnVsbDsKKyAgICAgICAgdmFyIGNsYXNzTmFt
ZSA9IG51bGw7CiAKLVdlYkluc3BlY3Rvci5ET01UcmVlRWxlbWVudFBhdGhDb21wb25lbnQucHJv
dG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1lbnRQ
YXRoQ29tcG9uZW50LAorICAgICAgICBzd2l0Y2ggKG5vZGUubm9kZVR5cGUoKSkgeworICAgICAg
ICBjYXNlIE5vZGUuRUxFTUVOVF9OT0RFOgorICAgICAgICAgICAgY2xhc3NOYW1lID0gV2ViSW5z
cGVjdG9yLkRPTVRyZWVFbGVtZW50UGF0aENvbXBvbmVudC5ET01FbGVtZW50SWNvblN0eWxlQ2xh
c3NOYW1lOworICAgICAgICAgICAgdGl0bGUgPSBXZWJJbnNwZWN0b3IuZGlzcGxheU5hbWVGb3JO
b2RlKG5vZGUpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBOb2RlLlRFWFRf
Tk9ERToKKyAgICAgICAgICAgIGNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5ET01UcmVlRWxlbWVu
dFBhdGhDb21wb25lbnQuRE9NVGV4dE5vZGVJY29uU3R5bGVDbGFzc05hbWU7CisgICAgICAgICAg
ICB0aXRsZSA9ICJcIiIgKyBub2RlLm5vZGVWYWx1ZSgpLnRyaW1FbmQoMzIpICsgIlwiIjsKKyAg
ICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgTm9kZS5DT01NRU5UX05PREU6CisgICAg
ICAgICAgICBjbGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1lbnRQYXRoQ29tcG9u
ZW50LkRPTUNvbW1lbnRJY29uU3R5bGVDbGFzc05hbWU7CisgICAgICAgICAgICB0aXRsZSA9ICI8
IS0tIiArIG5vZGUubm9kZVZhbHVlKCkudHJpbUVuZCgzMikgKyAiLS0+IjsKKyAgICAgICAgICAg
IGJyZWFrOworCisgICAgICAgIGNhc2UgTm9kZS5ET0NVTUVOVF9UWVBFX05PREU6CisgICAgICAg
ICAgICBjbGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1lbnRQYXRoQ29tcG9uZW50
LkRPTURvY3VtZW50VHlwZUljb25TdHlsZUNsYXNzTmFtZTsKKyAgICAgICAgICAgIHRpdGxlID0g
IjwhRE9DVFlQRT4iOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBOb2RlLkRP
Q1VNRU5UX05PREU6CisgICAgICAgICAgICBjbGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuRE9NVHJl
ZUVsZW1lbnRQYXRoQ29tcG9uZW50LkRPTURvY3VtZW50SWNvblN0eWxlQ2xhc3NOYW1lOworICAg
ICAgICAgICAgdGl0bGUgPSBub2RlLm5vZGVOYW1lSW5Db3JyZWN0Q2FzZSgpOworICAgICAgICAg
ICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBOb2RlLkNEQVRBX1NFQ1RJT05fTk9ERToKKyAgICAg
ICAgICAgIGNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5ET01UcmVlRWxlbWVudFBhdGhDb21wb25l
bnQuRE9NQ2hhcmFjdGVyRGF0YUljb25TdHlsZUNsYXNzTmFtZTsKKyAgICAgICAgICAgIHRpdGxl
ID0gIjwhW0NEQVRBWyIgKyBub2RlLnRyaW1FbmQoMzIpICsgIl1dPiI7CisgICAgICAgICAgICBi
cmVhazsKKworICAgICAgICBjYXNlIE5vZGUuRE9DVU1FTlRfRlJBR01FTlRfTk9ERToKKyAgICAg
ICAgICAgIC8vIEZJWE1FOiBBdCBzb21lIHBvaW50IHdlIG1pZ2h0IHdhbnQgYSBkaWZmZXJlbnQg
aWNvbiBmb3IgdGhpcy4KKyAgICAgICAgICAgIC8vIDxyZGFyOi8vcHJvYmxlbS8xMjgwMDk1MD4g
TmVlZCBpY29uIGZvciBET0NVTUVOVF9GUkFHTUVOVF9OT0RFIGFuZCBQUk9DRVNTSU5HX0lOU1RS
VUNUSU9OX05PREUKKyAgICAgICAgICAgIGNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5ET01UcmVl
RWxlbWVudFBhdGhDb21wb25lbnQuRE9NRG9jdW1lbnRUeXBlSWNvblN0eWxlQ2xhc3NOYW1lOwor
ICAgICAgICAgICAgaWYgKG5vZGUuaXNJblNoYWRvd1RyZWUoKSkKKyAgICAgICAgICAgICAgICB0
aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2hhZG93IENvbnRlbnQiKTsKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0aXRsZSA9IFdlYkluc3BlY3Rvci5kaXNwbGF5TmFt
ZUZvck5vZGUobm9kZSk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIE5vZGUu
UFJPQ0VTU0lOR19JTlNUUlVDVElPTl9OT0RFOgorICAgICAgICAgICAgLy8gRklYTUU6IEF0IHNv
bWUgcG9pbnQgd2UgbWlnaHQgd2FudCBhIGRpZmZlcmVudCBpY29uIGZvciB0aGlzLgorICAgICAg
ICAgICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzEyODAwOTUwPiBOZWVkIGljb24gZm9yIERPQ1VNRU5U
X0ZSQUdNRU5UX05PREUgYW5kIFBST0NFU1NJTkdfSU5TVFJVQ1RJT05fTk9ERS4KKyAgICAgICAg
ICAgIGNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5ET01UcmVlRWxlbWVudFBhdGhDb21wb25lbnQu
RE9NRG9jdW1lbnRUeXBlSWNvblN0eWxlQ2xhc3NOYW1lOworICAgICAgICAgICAgdGl0bGUgPSBu
b2RlLm5vZGVOYW1lSW5Db3JyZWN0Q2FzZSgpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoIlVua25vd24gRE9NIG5vZGUg
dHlwZTogIiwgbm9kZS5ub2RlVHlwZSgpKTsKKyAgICAgICAgICAgIGNsYXNzTmFtZSA9IFdlYklu
c3BlY3Rvci5ET01UcmVlRWxlbWVudFBhdGhDb21wb25lbnQuRE9NTm9kZUljb25TdHlsZUNsYXNz
TmFtZTsKKyAgICAgICAgICAgIHRpdGxlID0gbm9kZS5ub2RlTmFtZUluQ29ycmVjdENhc2UoKTsK
KyAgICAgICAgfQorCisgICAgICAgIHN1cGVyKHRpdGxlLCBjbGFzc05hbWUsIHJlcHJlc2VudGVk
T2JqZWN0IHx8IGRvbVRyZWVFbGVtZW50LnJlcHJlc2VudGVkT2JqZWN0KTsKKworICAgICAgICB0
aGlzLl9kb21UcmVlRWxlbWVudCA9IGRvbVRyZWVFbGVtZW50OworICAgIH0KIAogICAgIC8vIFB1
YmxpYwogCiAgICAgZ2V0IGRvbVRyZWVFbGVtZW50KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0
aGlzLl9kb21UcmVlRWxlbWVudDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBwcmV2aW91c1Np
YmxpbmcoKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9kb21UcmVlRWxlbWVudC5wcmV2aW91
c1NpYmxpbmcpCiAgICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgcmV0dXJuIG5ldyBX
ZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1lbnRQYXRoQ29tcG9uZW50KHRoaXMuX2RvbVRyZWVFbGVt
ZW50LnByZXZpb3VzU2libGluZyk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgbmV4dFNpYmxp
bmcoKQogICAgIHsKQEAgLTEyMCwyMCArMTEyLDI2IEBAIFdlYkluc3BlY3Rvci5ET01UcmVlRWxl
bWVudFBhdGhDb21wb25lbnQucHJvdG90eXBlID0gewogICAgICAgICBpZiAodGhpcy5fZG9tVHJl
ZUVsZW1lbnQubmV4dFNpYmxpbmcuaXNDbG9zZVRhZygpKQogICAgICAgICAgICAgcmV0dXJuIG51
bGw7CiAgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50UGF0aENv
bXBvbmVudCh0aGlzLl9kb21UcmVlRWxlbWVudC5uZXh0U2libGluZyk7Ci0gICAgfSwKKyAgICB9
CiAKICAgICAvLyBQcm90ZWN0ZWQKIAotICAgIG1vdXNlT3ZlcjogZnVuY3Rpb24oKQorICAgIG1v
dXNlT3ZlcigpCiAgICAgewogICAgICAgICB2YXIgbm9kZUlkID0gdGhpcy5fZG9tVHJlZUVsZW1l
bnQucmVwcmVzZW50ZWRPYmplY3QuaWQ7CiAgICAgICAgIFdlYkluc3BlY3Rvci5kb21UcmVlTWFu
YWdlci5oaWdobGlnaHRET01Ob2RlKG5vZGVJZCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBtb3Vz
ZU91dDogZnVuY3Rpb24oKQorICAgIG1vdXNlT3V0KCkKICAgICB7CiAgICAgICAgIFdlYkluc3Bl
Y3Rvci5kb21UcmVlTWFuYWdlci5oaWRlRE9NTm9kZUhpZ2hsaWdodCgpOwogICAgIH0KIH07CiAK
LVdlYkluc3BlY3Rvci5ET01UcmVlRWxlbWVudFBhdGhDb21wb25lbnQucHJvdG90eXBlLl9fcHJv
dG9fXyA9IFdlYkluc3BlY3Rvci5IaWVyYXJjaGljYWxQYXRoQ29tcG9uZW50LnByb3RvdHlwZTsK
K1dlYkluc3BlY3Rvci5ET01UcmVlRWxlbWVudFBhdGhDb21wb25lbnQuRE9NRWxlbWVudEljb25T
dHlsZUNsYXNzTmFtZSA9ICJkb20tZWxlbWVudC1pY29uIjsKK1dlYkluc3BlY3Rvci5ET01UcmVl
RWxlbWVudFBhdGhDb21wb25lbnQuRE9NVGV4dE5vZGVJY29uU3R5bGVDbGFzc05hbWUgPSAiZG9t
LXRleHQtbm9kZS1pY29uIjsKK1dlYkluc3BlY3Rvci5ET01UcmVlRWxlbWVudFBhdGhDb21wb25l
bnQuRE9NQ29tbWVudEljb25TdHlsZUNsYXNzTmFtZSA9ICJkb20tY29tbWVudC1pY29uIjsKK1dl
Ykluc3BlY3Rvci5ET01UcmVlRWxlbWVudFBhdGhDb21wb25lbnQuRE9NRG9jdW1lbnRUeXBlSWNv
blN0eWxlQ2xhc3NOYW1lID0gImRvbS1kb2N1bWVudC10eXBlLWljb24iOworV2ViSW5zcGVjdG9y
LkRPTVRyZWVFbGVtZW50UGF0aENvbXBvbmVudC5ET01Eb2N1bWVudEljb25TdHlsZUNsYXNzTmFt
ZSA9ICJkb20tZG9jdW1lbnQtaWNvbiI7CitXZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1lbnRQYXRo
Q29tcG9uZW50LkRPTUNoYXJhY3RlckRhdGFJY29uU3R5bGVDbGFzc05hbWUgPSAiZG9tLWNoYXJh
Y3Rlci1kYXRhLWljb24iOworV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50UGF0aENvbXBvbmVu
dC5ET01Ob2RlSWNvblN0eWxlQ2xhc3NOYW1lID0gImRvbS1ub2RlLWljb24iOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGV0YWlsc1NlY3Rp
b24uanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EZXRhaWxz
U2VjdGlvbi5qcwppbmRleCAzOTY1NTUwODlmYjgwMjBkNzg1NzY4MmI5YjRiM2Y3OGI0YmJjOWUw
Li45ZWNkYzdjMWI2MjFhM2M1OTQ1OWZjNmNiMzk2Mjc3YmJhM2Y4N2IzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EZXRhaWxzU2VjdGlvbi5q
cworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EZXRhaWxz
U2VjdGlvbi5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMjMsODUgKzIzLDczIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uID0gZnVuY3Rpb24oaWRl
bnRpZmllciwgdGl0bGUsIGdyb3Vwcywgb3B0aW9uc0VsZW1lbnQsIGRlZmF1bHRDb2xsYXBzZWRT
ZXR0aW5nVmFsdWUpIHsKLSAgICAvLyBGSVhNRTogQ29udmVydCB0aGlzIHRvIGEgV2ViSW5zcGVj
dG9yLk9iamVjdCBzdWJjbGFzcywgYW5kIGNhbGwgc3VwZXIoKS4KLSAgICAvLyBXZWJJbnNwZWN0
b3IuT2JqZWN0LmNhbGwodGhpcyk7CitXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb24gPSBjbGFz
cyBEZXRhaWxzU2VjdGlvbiBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKK3sKKyAgICBjb25z
dHJ1Y3RvcihpZGVudGlmaWVyLCB0aXRsZSwgZ3JvdXBzLCBvcHRpb25zRWxlbWVudCwgZGVmYXVs
dENvbGxhcHNlZFNldHRpbmdWYWx1ZSkKKyAgICB7CisgICAgICAgIHN1cGVyKCk7CiAKLSAgICBj
b25zb2xlLmFzc2VydChpZGVudGlmaWVyKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoaWRlbnRp
Zmllcik7CiAKLSAgICB0aGlzLl9lbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2
Iik7Ci0gICAgdGhpcy5fZWxlbWVudC5jbGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuRGV0YWlsc1Nl
Y3Rpb24uU3R5bGVDbGFzc05hbWU7Ci0gICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKGlk
ZW50aWZpZXIpOworICAgICAgICB0aGlzLl9lbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiZGl2Iik7CisgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NOYW1lID0gV2ViSW5zcGVjdG9y
LkRldGFpbHNTZWN0aW9uLlN0eWxlQ2xhc3NOYW1lOworICAgICAgICB0aGlzLl9lbGVtZW50LmNs
YXNzTGlzdC5hZGQoaWRlbnRpZmllcik7CiAKLSAgICB0aGlzLl9oZWFkZXJFbGVtZW50ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgdGhpcy5faGVhZGVyRWxlbWVudC5hZGRF
dmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX2hlYWRlckVsZW1lbnRDbGlja2VkLmJpbmQodGhp
cykpOwotICAgIHRoaXMuX2hlYWRlckVsZW1lbnQuY2xhc3NOYW1lID0gV2ViSW5zcGVjdG9yLkRl
dGFpbHNTZWN0aW9uLkhlYWRlckVsZW1lbnRTdHlsZUNsYXNzTmFtZTsKLSAgICB0aGlzLl9lbGVt
ZW50LmFwcGVuZENoaWxkKHRoaXMuX2hlYWRlckVsZW1lbnQpOworICAgICAgICB0aGlzLl9oZWFk
ZXJFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIHRoaXMu
X2hlYWRlckVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl9oZWFkZXJFbGVt
ZW50Q2xpY2tlZC5iaW5kKHRoaXMpKTsKKyAgICAgICAgdGhpcy5faGVhZGVyRWxlbWVudC5jbGFz
c05hbWUgPSBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb24uSGVhZGVyRWxlbWVudFN0eWxlQ2xh
c3NOYW1lOworICAgICAgICB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2hlYWRlckVs
ZW1lbnQpOwogCi0gICAgaWYgKG9wdGlvbnNFbGVtZW50IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQp
IHsKLSAgICAgICAgdGhpcy5fb3B0aW9uc0VsZW1lbnQgPSBvcHRpb25zRWxlbWVudDsKLSAgICAg
ICAgdGhpcy5fb3B0aW9uc0VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwgdGhp
cy5fb3B0aW9uc0VsZW1lbnRNb3VzZURvd24uYmluZCh0aGlzKSk7Ci0gICAgICAgIHRoaXMuX29w
dGlvbnNFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLCB0aGlzLl9vcHRpb25zRWxl
bWVudE1vdXNlVXAuYmluZCh0aGlzKSk7Ci0gICAgICAgIHRoaXMuX2hlYWRlckVsZW1lbnQuYXBw
ZW5kQ2hpbGQodGhpcy5fb3B0aW9uc0VsZW1lbnQpOwotICAgIH0KKyAgICAgICAgaWYgKG9wdGlv
bnNFbGVtZW50IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpIHsKKyAgICAgICAgICAgIHRoaXMuX29w
dGlvbnNFbGVtZW50ID0gb3B0aW9uc0VsZW1lbnQ7CisgICAgICAgICAgICB0aGlzLl9vcHRpb25z
RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCB0aGlzLl9vcHRpb25zRWxlbWVu
dE1vdXNlRG93bi5iaW5kKHRoaXMpKTsKKyAgICAgICAgICAgIHRoaXMuX29wdGlvbnNFbGVtZW50
LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLCB0aGlzLl9vcHRpb25zRWxlbWVudE1vdXNlVXAu
YmluZCh0aGlzKSk7CisgICAgICAgICAgICB0aGlzLl9oZWFkZXJFbGVtZW50LmFwcGVuZENoaWxk
KHRoaXMuX29wdGlvbnNFbGVtZW50KTsKKyAgICAgICAgfQogCi0gICAgdGhpcy5fdGl0bGVFbGVt
ZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwotICAgIHRoaXMuX2hlYWRlckVs
ZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fdGl0bGVFbGVtZW50KTsKKyAgICAgICAgdGhpcy5fdGl0
bGVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOworICAgICAgICB0aGlz
Ll9oZWFkZXJFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX3RpdGxlRWxlbWVudCk7CiAKLSAgICB0
aGlzLl9jb250ZW50RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAg
IHRoaXMuX2NvbnRlbnRFbGVtZW50LmNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5EZXRhaWxzU2Vj
dGlvbi5Db250ZW50RWxlbWVudFN0eWxlQ2xhc3NOYW1lOwotICAgIHRoaXMuX2VsZW1lbnQuYXBw
ZW5kQ2hpbGQodGhpcy5fY29udGVudEVsZW1lbnQpOworICAgICAgICB0aGlzLl9jb250ZW50RWxl
bWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICB0aGlzLl9jb250
ZW50RWxlbWVudC5jbGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb24uQ29udGVu
dEVsZW1lbnRTdHlsZUNsYXNzTmFtZTsKKyAgICAgICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGls
ZCh0aGlzLl9jb250ZW50RWxlbWVudCk7CiAKLSAgICB0aGlzLl9nZW5lcmF0ZURpc2Nsb3N1cmVU
cmlhbmdsZXNJZk5lZWRlZCgpOworICAgICAgICB0aGlzLl9nZW5lcmF0ZURpc2Nsb3N1cmVUcmlh
bmdsZXNJZk5lZWRlZCgpOwogCi0gICAgdGhpcy5faWRlbnRpZmllciA9IGlkZW50aWZpZXI7Ci0g
ICAgdGhpcy50aXRsZSA9IHRpdGxlOwotICAgIHRoaXMuZ3JvdXBzID0gZ3JvdXBzIHx8IFtuZXcg
V2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uR3JvdXBdOworICAgICAgICB0aGlzLl9pZGVudGlm
aWVyID0gaWRlbnRpZmllcjsKKyAgICAgICAgdGhpcy50aXRsZSA9IHRpdGxlOworICAgICAgICB0
aGlzLmdyb3VwcyA9IGdyb3VwcyB8fCBbbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbkdy
b3VwXTsKIAotICAgIHRoaXMuX2NvbGxhcHNlZFNldHRpbmcgPSBuZXcgV2ViSW5zcGVjdG9yLlNl
dHRpbmcoaWRlbnRpZmllciArICItZGV0YWlscy1zZWN0aW9uLWNvbGxhcHNlZCIsICEhZGVmYXVs
dENvbGxhcHNlZFNldHRpbmdWYWx1ZSk7Ci0gICAgdGhpcy5jb2xsYXBzZWQgPSB0aGlzLl9jb2xs
YXBzZWRTZXR0aW5nLnZhbHVlOwotfTsKLQotV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uLlN0
eWxlQ2xhc3NOYW1lID0gImRldGFpbHMtc2VjdGlvbiI7Ci1XZWJJbnNwZWN0b3IuRGV0YWlsc1Nl
Y3Rpb24uSGVhZGVyRWxlbWVudFN0eWxlQ2xhc3NOYW1lID0gImhlYWRlciI7Ci1XZWJJbnNwZWN0
b3IuRGV0YWlsc1NlY3Rpb24uVGl0bGVFbGVtZW50U3R5bGVDbGFzc05hbWUgPSAidGl0bGUiOwot
V2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uLkNvbnRlbnRFbGVtZW50U3R5bGVDbGFzc05hbWUg
PSAiY29udGVudCI7Ci1XZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb24uQ29sbGFwc2VkU3R5bGVD
bGFzc05hbWUgPSAiY29sbGFwc2VkIjsKLVdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbi5Nb3Vz
ZU92ZXJPcHRpb25zRWxlbWVudFN0eWxlQ2xhc3NOYW1lID0gIm1vdXNlLW92ZXItb3B0aW9ucy1l
bGVtZW50IjsKLVdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbi5EaXNjbG9zdXJlVHJpYW5nbGVP
cGVuQ2FudmFzSWRlbnRpZmllciA9ICJkZXRhaWxzLXNlY3Rpb24tZGlzY2xvc3VyZS10cmlhbmds
ZS1vcGVuIjsKLVdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbi5EaXNjbG9zdXJlVHJpYW5nbGVD
bG9zZWRDYW52YXNJZGVudGlmaWVyID0gImRldGFpbHMtc2VjdGlvbi1kaXNjbG9zdXJlLXRyaWFu
Z2xlLWNsb3NlZCI7Ci1XZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb24uRGlzY2xvc3VyZVRyaWFu
Z2xlTm9ybWFsQ2FudmFzSWRlbnRpZmllclN1ZmZpeCA9ICItbm9ybWFsIjsKLVdlYkluc3BlY3Rv
ci5EZXRhaWxzU2VjdGlvbi5EaXNjbG9zdXJlVHJpYW5nbGVBY3RpdmVDYW52YXNJZGVudGlmaWVy
U3VmZml4ID0gIi1hY3RpdmUiOwotCi1XZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb24ucHJvdG90
eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb24sCisg
ICAgICAgIHRoaXMuX2NvbGxhcHNlZFNldHRpbmcgPSBuZXcgV2ViSW5zcGVjdG9yLlNldHRpbmco
aWRlbnRpZmllciArICItZGV0YWlscy1zZWN0aW9uLWNvbGxhcHNlZCIsICEhZGVmYXVsdENvbGxh
cHNlZFNldHRpbmdWYWx1ZSk7CisgICAgICAgIHRoaXMuY29sbGFwc2VkID0gdGhpcy5fY29sbGFw
c2VkU2V0dGluZy52YWx1ZTsKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBlbGVt
ZW50KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50OwotICAgIH0sCisgICAg
fQogCiAgICAgZ2V0IGlkZW50aWZpZXIoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2lk
ZW50aWZpZXI7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgdGl0bGUoKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIHRoaXMuX3RpdGxlRWxlbWVudC50ZXh0Q29udGVudDsKLSAgICB9LAorICAgIH0K
IAogICAgIHNldCB0aXRsZSh0aXRsZSkKICAgICB7CiAgICAgICAgIHRoaXMuX3RpdGxlRWxlbWVu
dC50ZXh0Q29udGVudCA9IHRpdGxlOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGNvbGxhcHNl
ZCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuY29udGFp
bnMoV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uLkNvbGxhcHNlZFN0eWxlQ2xhc3NOYW1lKTsK
LSAgICB9LAorICAgIH0KIAogICAgIHNldCBjb2xsYXBzZWQoZmxhZykKICAgICB7CkBAIC0xMTEs
MTIgKzk5LDEyIEBAIFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbi5wcm90b3R5cGUgPSB7CiAg
ICAgICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoV2ViSW5zcGVjdG9yLkRl
dGFpbHNTZWN0aW9uLkNvbGxhcHNlZFN0eWxlQ2xhc3NOYW1lKTsKIAogICAgICAgICB0aGlzLl9j
b2xsYXBzZWRTZXR0aW5nLnZhbHVlID0gZmxhZyB8fCBmYWxzZTsKLSAgICB9LAorICAgIH0KIAog
ICAgIGdldCBncm91cHMoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2dyb3VwczsKLSAg
ICB9LAorICAgIH0KIAogICAgIHNldCBncm91cHMoZ3JvdXBzKQogICAgIHsKQEAgLTEyNiwxMSAr
MTE0LDExIEBAIFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbi5wcm90b3R5cGUgPSB7CiAKICAg
ICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9ncm91cHMubGVuZ3RoOyArK2kpCiAgICAg
ICAgICAgICB0aGlzLl9jb250ZW50RWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9ncm91cHNbaV0u
ZWxlbWVudCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcml2YXRlCiAKLSAgICBfaGVhZGVy
RWxlbWVudENsaWNrZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9oZWFkZXJFbGVtZW50Q2xpY2tl
ZChldmVudCkKICAgICB7CiAgICAgICAgIGlmIChldmVudC50YXJnZXQuaXNTZWxmT3JEZXNjZW5k
YW50KHRoaXMuX29wdGlvbnNFbGVtZW50KSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTEzOCwx
OSArMTI2LDE5IEBAIFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbi5wcm90b3R5cGUgPSB7CiAg
ICAgICAgIHRoaXMuY29sbGFwc2VkID0gIXRoaXMuY29sbGFwc2VkOwogCiAgICAgICAgIHRoaXMu
X2VsZW1lbnQuc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZChmYWxzZSk7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBfb3B0aW9uc0VsZW1lbnRNb3VzZURvd246IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9vcHRp
b25zRWxlbWVudE1vdXNlRG93bihldmVudCkKICAgICB7CiAgICAgICAgIHRoaXMuX2hlYWRlckVs
ZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb24uTW91c2VPdmVy
T3B0aW9uc0VsZW1lbnRTdHlsZUNsYXNzTmFtZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfb3B0
aW9uc0VsZW1lbnRNb3VzZVVwOiBmdW5jdGlvbihldmVudCkKKyAgICBfb3B0aW9uc0VsZW1lbnRN
b3VzZVVwKGV2ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5faGVhZGVyRWxlbWVudC5jbGFzc0xp
c3QucmVtb3ZlKFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbi5Nb3VzZU92ZXJPcHRpb25zRWxl
bWVudFN0eWxlQ2xhc3NOYW1lKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9nZW5lcmF0ZURpc2Ns
b3N1cmVUcmlhbmdsZXNJZk5lZWRlZDogZnVuY3Rpb24oKQorICAgIF9nZW5lcmF0ZURpc2Nsb3N1
cmVUcmlhbmdsZXNJZk5lZWRlZCgpCiAgICAgewogICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLkRl
dGFpbHNTZWN0aW9uLl9nZW5lcmF0ZWREaXNjbG9zdXJlVHJpYW5nbGVzKQogICAgICAgICAgICAg
cmV0dXJuOwpAQCAtMTczLDQgKzE2MSwxMyBAQCBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb24u
cHJvdG90eXBlID0gewogICAgIH0KIH07CiAKLVdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbi5w
cm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGU7CitXZWJJ
bnNwZWN0b3IuRGV0YWlsc1NlY3Rpb24uU3R5bGVDbGFzc05hbWUgPSAiZGV0YWlscy1zZWN0aW9u
IjsKK1dlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbi5IZWFkZXJFbGVtZW50U3R5bGVDbGFzc05h
bWUgPSAiaGVhZGVyIjsKK1dlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbi5UaXRsZUVsZW1lbnRT
dHlsZUNsYXNzTmFtZSA9ICJ0aXRsZSI7CitXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb24uQ29u
dGVudEVsZW1lbnRTdHlsZUNsYXNzTmFtZSA9ICJjb250ZW50IjsKK1dlYkluc3BlY3Rvci5EZXRh
aWxzU2VjdGlvbi5Db2xsYXBzZWRTdHlsZUNsYXNzTmFtZSA9ICJjb2xsYXBzZWQiOworV2ViSW5z
cGVjdG9yLkRldGFpbHNTZWN0aW9uLk1vdXNlT3Zlck9wdGlvbnNFbGVtZW50U3R5bGVDbGFzc05h
bWUgPSAibW91c2Utb3Zlci1vcHRpb25zLWVsZW1lbnQiOworV2ViSW5zcGVjdG9yLkRldGFpbHNT
ZWN0aW9uLkRpc2Nsb3N1cmVUcmlhbmdsZU9wZW5DYW52YXNJZGVudGlmaWVyID0gImRldGFpbHMt
c2VjdGlvbi1kaXNjbG9zdXJlLXRyaWFuZ2xlLW9wZW4iOworV2ViSW5zcGVjdG9yLkRldGFpbHNT
ZWN0aW9uLkRpc2Nsb3N1cmVUcmlhbmdsZUNsb3NlZENhbnZhc0lkZW50aWZpZXIgPSAiZGV0YWls
cy1zZWN0aW9uLWRpc2Nsb3N1cmUtdHJpYW5nbGUtY2xvc2VkIjsKK1dlYkluc3BlY3Rvci5EZXRh
aWxzU2VjdGlvbi5EaXNjbG9zdXJlVHJpYW5nbGVOb3JtYWxDYW52YXNJZGVudGlmaWVyU3VmZml4
ID0gIi1ub3JtYWwiOworV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uLkRpc2Nsb3N1cmVUcmlh
bmdsZUFjdGl2ZUNhbnZhc0lkZW50aWZpZXJTdWZmaXggPSAiLWFjdGl2ZSI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EZXRhaWxzU2VjdGlv
bkRhdGFHcmlkUm93LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvRGV0YWlsc1NlY3Rpb25EYXRhR3JpZFJvdy5qcwppbmRleCA5NWI3YmQ0MzE5ZTFiZDdhMDZl
YTZjNDQ5MjE4M2EzYTU2ZDFhYjc1Li45NjRkNjkyNGJlODE4Njk3OWNjZDliZWQ0MjY0YTFlODM2
NmU1MjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9EZXRhaWxzU2VjdGlvbkRhdGFHcmlkUm93LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RldGFpbHNTZWN0aW9uRGF0YUdyaWRSb3cuanMKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIz
LDI1ICsyMywyMyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAK
LVdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbkRhdGFHcmlkUm93ID0gZnVuY3Rpb24oZGF0YUdy
aWQsIGVtcHR5TWVzc2FnZSkgewotICAgIFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdy5j
YWxsKHRoaXMsIGVtcHR5TWVzc2FnZSk7Ci0KLSAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFk
ZChXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25EYXRhR3JpZFJvdy5TdHlsZUNsYXNzTmFtZSk7
Ci0KLSAgICB0aGlzLmRhdGFHcmlkID0gZGF0YUdyaWQ7Ci19OworV2ViSW5zcGVjdG9yLkRldGFp
bHNTZWN0aW9uRGF0YUdyaWRSb3cgPSBjbGFzcyBEZXRhaWxzU2VjdGlvbkRhdGFHcmlkUm93IGV4
dGVuZHMgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93Cit7CisgICAgY29uc3RydWN0b3Io
ZGF0YUdyaWQsIGVtcHR5TWVzc2FnZSkKKyAgICB7CisgICAgICAgIHN1cGVyKGVtcHR5TWVzc2Fn
ZSk7CiAKLVdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbkRhdGFHcmlkUm93LlN0eWxlQ2xhc3NO
YW1lID0gImRhdGEtZ3JpZCI7CisgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJk
YXRhLWdyaWQiKTsKIAotV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uRGF0YUdyaWRSb3cucHJv
dG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25E
YXRhR3JpZFJvdywKKyAgICAgICAgdGhpcy5kYXRhR3JpZCA9IGRhdGFHcmlkOworICAgIH0KIAog
ICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IGRhdGFHcmlkKCkKICAgICB7CiAgICAgICAgIHJldHVy
biB0aGlzLl9kYXRhR3JpZDsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCBkYXRhR3JpZChkYXRh
R3JpZCkKICAgICB7CkBAIC01OSw1ICs1NywzIEBAIFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlv
bkRhdGFHcmlkUm93LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuc2hvd0VtcHR5TWVz
c2FnZSgpOwogICAgIH0KIH07Ci0KLVdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbkRhdGFHcmlk
Um93LnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3cu
cHJvdG90eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvRGV0YWlsc1NlY3Rpb25Hcm91cC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0RldGFpbHNTZWN0aW9uR3JvdXAuanMKaW5kZXggNjcyOWZhYTBm
MWM3NjlhZTJkOGJjZWMyODExZTQxYzU1ODAyMTMyNi4uZTVkOTA0YWIzYzQzZDNlZDFmMzk3ZDk5
YTMxOWIzMzFhYjQ1M2RkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvRGV0YWlsc1NlY3Rpb25Hcm91cC5qcworKysgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EZXRhaWxzU2VjdGlvbkdyb3VwLmpzCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywz
MiArMjMsMjkgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1X
ZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Hcm91cCA9IGZ1bmN0aW9uKHJvd3MpIHsKLSAgICAv
LyBGSVhNRTogQ29udmVydCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcywg
YW5kIGNhbGwgc3VwZXIoKS4KLSAgICAvLyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7
Ci0KLSAgICB0aGlzLl9lbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0g
ICAgdGhpcy5fZWxlbWVudC5jbGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25H
cm91cC5TdHlsZUNsYXNzTmFtZTsKLQotICAgIHRoaXMucm93cyA9IHJvd3M7Ci19OworV2ViSW5z
cGVjdG9yLkRldGFpbHNTZWN0aW9uR3JvdXAgPSBjbGFzcyBEZXRhaWxzU2VjdGlvbkdyb3VwIGV4
dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAoreworICAgIGNvbnN0cnVjdG9yKHJvd3MpCisgICAg
eworICAgICAgICBzdXBlcigpOwogCi1XZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Hcm91cC5T
dHlsZUNsYXNzTmFtZSA9ICJncm91cCI7CisgICAgICAgIHRoaXMuX2VsZW1lbnQgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc05hbWUg
PSAiZ3JvdXAiOwogCi1XZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Hcm91cC5wcm90b3R5cGUg
PSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbkdyb3VwLAor
ICAgICAgICB0aGlzLnJvd3MgPSByb3dzIHx8IFtdOworICAgIH0KIAogICAgIC8vIFB1YmxpYwog
CiAgICAgZ2V0IGVsZW1lbnQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQ7
Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgcm93cygpCiAgICAgewogICAgICAgICByZXR1cm4g
dGhpcy5fcm93czsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCByb3dzKHJvd3MpCiAgICAgewpA
QCAtNjAsNSArNTcsMyBAQCBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Hcm91cC5wcm90b3R5
cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX3Jvd3Nb
aV0uZWxlbWVudCk7CiAgICAgfQogfTsKLQotV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uR3Jv
dXAucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGV0
YWlsc1NlY3Rpb25Qcm9wZXJ0aWVzUm93LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvRGV0YWlsc1NlY3Rpb25Qcm9wZXJ0aWVzUm93LmpzCmluZGV4IGE5ODYx
NTI3NzEzZTVkYjk5OGUzYjhhNDBkMWViYTFkOGI0NWZmYjUuLmE0YmQ0ZWM3YzNkNzZhNTVkZjRi
YWU0ZTNlMTczODYzNzcyOTY1ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0RldGFpbHNTZWN0aW9uUHJvcGVydGllc1Jvdy5qcworKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EZXRhaWxzU2VjdGlvblBy
b3BlcnRpZXNSb3cuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEz
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywg
MjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTIzLDI2ICsyMywyNCBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblByb3BlcnRpZXNS
b3cgPSBmdW5jdGlvbihwcm9wZXJ0aWVzU2VjdGlvbiwgZW1wdHlNZXNzYWdlKSB7Ci0gICAgV2Vi
SW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93LmNhbGwodGhpcywgZW1wdHlNZXNzYWdlKTsKLQot
ICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlv
blByb3BlcnRpZXNSb3cuU3R5bGVDbGFzc05hbWUpOwotICAgIHRoaXMuZWxlbWVudC5jbGFzc0xp
c3QuYWRkKFdlYkluc3BlY3Rvci5TeW50YXhIaWdobGlnaHRlZFN0eWxlQ2xhc3NOYW1lKTsKLQot
ICAgIHRoaXMucHJvcGVydGllc1NlY3Rpb24gPSBwcm9wZXJ0aWVzU2VjdGlvbjsKLX07CitXZWJJ
bnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Qcm9wZXJ0aWVzUm93ID0gY2xhc3MgRGV0YWlsc1NlY3Rp
b25Qcm9wZXJ0aWVzUm93IGV4dGVuZHMgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93Cit7
CisgICAgY29uc3RydWN0b3IocHJvcGVydGllc1NlY3Rpb24sIGVtcHR5TWVzc2FnZSkKKyAgICB7
CisgICAgICAgIHN1cGVyKGVtcHR5TWVzc2FnZSk7CiAKLVdlYkluc3BlY3Rvci5EZXRhaWxzU2Vj
dGlvblByb3BlcnRpZXNSb3cuU3R5bGVDbGFzc05hbWUgPSAicHJvcGVydGllcyI7CisgICAgICAg
IHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJwcm9wZXJ0aWVzIik7CisgICAgICAgIHRoaXMu
ZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5TeW50YXhIaWdobGlnaHRlZFN0eWxl
Q2xhc3NOYW1lKTsKIAotV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUHJvcGVydGllc1Jvdy5w
cm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlv
blByb3BlcnRpZXNSb3csCisgICAgICAgIHRoaXMucHJvcGVydGllc1NlY3Rpb24gPSBwcm9wZXJ0
aWVzU2VjdGlvbjsKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBwcm9wZXJ0aWVz
U2VjdGlvbigpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fcHJvcGVydGllc1NlY3Rpb247
Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgcHJvcGVydGllc1NlY3Rpb24ocHJvcGVydGllc1Nl
Y3Rpb24pCiAgICAgewpAQCAtNTgsNSArNTYsMyBAQCBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rp
b25Qcm9wZXJ0aWVzUm93LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuc2hvd0VtcHR5
TWVzc2FnZSgpOwogICAgIH0KIH07Ci0KLVdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblByb3Bl
cnRpZXNSb3cucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlv
blJvdy5wcm90b3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9EZXRhaWxzU2VjdGlvblJvdy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RldGFpbHNTZWN0aW9uUm93LmpzCmluZGV4IGFjNWI4MDk3
YmFmOWFlMDk5YmRmNGMyMDJjNmI5Yzc2YjA0Mzc0YjIuLjhlOThkZjVmZTY1ZjYxM2U2N2NkMTdk
ZTY4MzY5OTY0N2M0NzUxMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL0RldGFpbHNTZWN0aW9uUm93LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RldGFpbHNTZWN0aW9uUm93LmpzCkBAIC0yMywz
MyArMjMsMjkgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1X
ZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3cgPSBmdW5jdGlvbihlbXB0eU1lc3NhZ2UpIHsK
LSAgICAvLyBGSVhNRTogQ29udmVydCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJj
bGFzcywgYW5kIGNhbGwgc3VwZXIoKS4KLSAgICAvLyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwo
dGhpcyk7Ci0KLSAgICB0aGlzLl9lbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2
Iik7Ci0gICAgdGhpcy5fZWxlbWVudC5jbGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuRGV0YWlsc1Nl
Y3Rpb25Sb3cuU3R5bGVDbGFzc05hbWU7Ci0KLSAgICB0aGlzLl9lbXB0eU1lc3NhZ2UgPSBlbXB0
eU1lc3NhZ2UgfHwgIiI7Ci19OworV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93ID0gY2xh
c3MgRGV0YWlsc1NlY3Rpb25Sb3cgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0Cit7CisgICAg
Y29uc3RydWN0b3IoZW1wdHlNZXNzYWdlKQorICAgIHsKKyAgICAgICAgc3VwZXIoKTsKIAotV2Vi
SW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93LlN0eWxlQ2xhc3NOYW1lID0gInJvdyI7Ci1XZWJJ
bnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3cuRW1wdHlTdHlsZUNsYXNzTmFtZSA9ICJlbXB0eSI7
CisgICAgICAgIHRoaXMuX2VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsK
KyAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc05hbWUgPSAicm93IjsKIAotV2ViSW5zcGVjdG9y
LkRldGFpbHNTZWN0aW9uUm93LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5z
cGVjdG9yLkRldGFpbHNTZWN0aW9uUm93LAorICAgICAgICB0aGlzLl9lbXB0eU1lc3NhZ2UgPSBl
bXB0eU1lc3NhZ2UgfHwgIiI7CisgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgZWxl
bWVudCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudDsKLSAgICB9LAorICAg
IH0KIAogICAgIGdldCBlbXB0eU1lc3NhZ2UoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMu
X2VtcHR5TWVzc2FnZTsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCBlbXB0eU1lc3NhZ2UoZW1w
dHlNZXNzYWdlKQogICAgIHsKQEAgLTU3LDkgKzUzLDkgQEAgV2ViSW5zcGVjdG9yLkRldGFpbHNT
ZWN0aW9uUm93LnByb3RvdHlwZSA9IHsKIAogICAgICAgICBpZiAoIXRoaXMuX2VsZW1lbnQuY2hp
bGROb2Rlcy5sZW5ndGgpCiAgICAgICAgICAgICB0aGlzLnNob3dFbXB0eU1lc3NhZ2UoKTsKLSAg
ICB9LAorICAgIH0KIAotICAgIHNob3dFbXB0eU1lc3NhZ2U6IGZ1bmN0aW9uKCkKKyAgICBzaG93
RW1wdHlNZXNzYWdlKCkKICAgICB7CiAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRk
KFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdy5FbXB0eVN0eWxlQ2xhc3NOYW1lKTsKIApA
QCAtNjgsMTMgKzY0LDEzIEBAIFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdy5wcm90b3R5
cGUgPSB7CiAgICAgICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fZW1wdHlN
ZXNzYWdlKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICB0aGlzLmVsZW1lbnQudGV4dENv
bnRlbnQgPSB0aGlzLl9lbXB0eU1lc3NhZ2U7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBoaWRlRW1w
dHlNZXNzYWdlOiBmdW5jdGlvbigpCisgICAgaGlkZUVtcHR5TWVzc2FnZSgpCiAgICAgewogICAg
ICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShXZWJJbnNwZWN0b3IuRGV0YWlsc1Nl
Y3Rpb25Sb3cuRW1wdHlTdHlsZUNsYXNzTmFtZSk7CiAgICAgICAgIHRoaXMuZWxlbWVudC5yZW1v
dmVDaGlsZHJlbigpOwogICAgIH0KIH07CiAKLVdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJv
dy5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGU7CitX
ZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3cuRW1wdHlTdHlsZUNsYXNzTmFtZSA9ICJlbXB0
eSI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9EZXRhaWxzU2VjdGlvblNpbXBsZVJvdy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL0RldGFpbHNTZWN0aW9uU2ltcGxlUm93LmpzCmluZGV4IDllNDljYjgx
ZjM3YjVjMGIwYjFkNjYzOWE5YjgyM2M1YmI5YzE5YmEuLmU0NDljNzVkZjcwNDg3N2JmNTYyODFl
ZGZhZmVlNTA3NTMzMzcyNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL0RldGFpbHNTZWN0aW9uU2ltcGxlUm93LmpzCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RldGFpbHNTZWN0aW9uU2ltcGxlUm93
LmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0yMyw3NCArMjMsNjggQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
ICAqLwogCi1XZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25TaW1wbGVSb3cgPSBmdW5jdGlvbihs
YWJlbCwgdmFsdWUpIHsKLSAgICBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3cuY2FsbCh0
aGlzKTsKLQotICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5EZXRh
aWxzU2VjdGlvblNpbXBsZVJvdy5TdHlsZUNsYXNzTmFtZSk7Ci0KLSAgICB0aGlzLl9sYWJlbEVs
ZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICB0aGlzLl9sYWJlbEVs
ZW1lbnQuY2xhc3NOYW1lID0gV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uU2ltcGxlUm93Lkxh
YmVsRWxlbWVudFN0eWxlQ2xhc3NOYW1lOwotICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0
aGlzLl9sYWJlbEVsZW1lbnQpOwotCi0gICAgdGhpcy5fdmFsdWVFbGVtZW50ID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgdGhpcy5fdmFsdWVFbGVtZW50LmNsYXNzTmFtZSA9
IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblNpbXBsZVJvdy5WYWx1ZUVsZW1lbnRTdHlsZUNs
YXNzTmFtZTsKLSAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fdmFsdWVFbGVtZW50
KTsKLQotICAgIC8vIFdvcmthcm91bmQgZm9yIDxyZGFyOi8vcHJvYmxlbS8xMjY2ODg3MD4gVHJp
cGxlLWNsaWNraW5nIHRleHQgd2l0aGluIGEKLSAgICAvLyA8ZGl2PiBzZXQgdG8gImRpc3BsYXk6
IHRhYmxlLWNlbGwiIHNlbGVjdHMgdGV4dCBvdXRzaWRlIHRoZSBjZWxsLgotICAgIC8vCi0gICAg
Ly8gT24gdHJpcGxlLWNsaWNrLCBhZGp1c3QgdGhlIHNlbGVjdGlvbiByYW5nZSB0byBpbmNsdWRl
IG9ubHkgdGhlIHZhbHVlCi0gICAgLy8gZWxlbWVudCBpZiB0aGUgc2VsZWN0aW9uIGV4dGVuZHMg
YmV5b25kIGl0LgotICAgIHZhciB2YWx1ZUVsZW1lbnRDbGlja2VkID0gZnVuY3Rpb24oZXZlbnQp
IHsKLSAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7Ci0KLSAgICAgICAgaWYgKGV2ZW50
LmRldGFpbCA8IDMpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgdmFyIGN1cnJlbnRT
ZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7Ci0gICAgICAgIGlmICghY3VycmVudFNl
bGVjdGlvbikKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICB2YXIgY3VycmVudFJhbmdl
ID0gY3VycmVudFNlbGVjdGlvbi5nZXRSYW5nZUF0KDApOwotICAgICAgICBpZiAoIWN1cnJlbnRS
YW5nZSB8fCBjdXJyZW50UmFuZ2Uuc3RhcnRDb250YWluZXIgPT09IGN1cnJlbnRSYW5nZS5lbmRD
b250YWluZXIpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgdmFyIGNvcnJlY3RlZFJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKLSAgICAgICAgY29ycmVjdGVkUmFuZ2Uuc2Vs
ZWN0Tm9kZUNvbnRlbnRzKGV2ZW50LmN1cnJlbnRUYXJnZXQpOwotICAgICAgICBjdXJyZW50U2Vs
ZWN0aW9uLnJlbW92ZUFsbFJhbmdlcygpOwotICAgICAgICBjdXJyZW50U2VsZWN0aW9uLmFkZFJh
bmdlKGNvcnJlY3RlZFJhbmdlKTsKLSAgICB9OwotICAgIHRoaXMuX3ZhbHVlRWxlbWVudC5hZGRF
dmVudExpc3RlbmVyKCJjbGljayIsIHZhbHVlRWxlbWVudENsaWNrZWQpOwotCi0gICAgdGhpcy5s
YWJlbCA9IGxhYmVsOwotICAgIHRoaXMudmFsdWUgPSB2YWx1ZTsKLX07Ci0KLVdlYkluc3BlY3Rv
ci5EZXRhaWxzU2VjdGlvblNpbXBsZVJvdy5TdHlsZUNsYXNzTmFtZSA9ICJzaW1wbGUiOwotV2Vi
SW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uU2ltcGxlUm93LkRhdGFTdHlsZUNsYXNzTmFtZSA9ICJk
YXRhIjsKLVdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblNpbXBsZVJvdy5FbXB0eVN0eWxlQ2xh
c3NOYW1lID0gImVtcHR5IjsKLVdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblNpbXBsZVJvdy5M
YWJlbEVsZW1lbnRTdHlsZUNsYXNzTmFtZSA9ICJsYWJlbCI7Ci1XZWJJbnNwZWN0b3IuRGV0YWls
c1NlY3Rpb25TaW1wbGVSb3cuVmFsdWVFbGVtZW50U3R5bGVDbGFzc05hbWUgPSAidmFsdWUiOwot
Ci1XZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25TaW1wbGVSb3cucHJvdG90eXBlID0gewotICAg
IGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25TaW1wbGVSb3csCitXZWJJ
bnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25TaW1wbGVSb3cgPSBjbGFzcyBEZXRhaWxzU2VjdGlvblNp
bXBsZVJvdyBleHRlbmRzIFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdworeworICAgIGNv
bnN0cnVjdG9yKGxhYmVsLCB2YWx1ZSkKKyAgICB7CisgICAgICAgIHN1cGVyKCk7CisKKyAgICAg
ICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoInNpbXBsZSIpOworCisgICAgICAgIHRoaXMu
X2xhYmVsRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICB0
aGlzLl9sYWJlbEVsZW1lbnQuY2xhc3NOYW1lID0gV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9u
U2ltcGxlUm93LkxhYmVsRWxlbWVudFN0eWxlQ2xhc3NOYW1lOworICAgICAgICB0aGlzLmVsZW1l
bnQuYXBwZW5kQ2hpbGQodGhpcy5fbGFiZWxFbGVtZW50KTsKKworICAgICAgICB0aGlzLl92YWx1
ZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgdGhpcy5f
dmFsdWVFbGVtZW50LmNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblNpbXBs
ZVJvdy5WYWx1ZUVsZW1lbnRTdHlsZUNsYXNzTmFtZTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmFw
cGVuZENoaWxkKHRoaXMuX3ZhbHVlRWxlbWVudCk7CisKKyAgICAgICAgLy8gV29ya2Fyb3VuZCBm
b3IgPHJkYXI6Ly9wcm9ibGVtLzEyNjY4ODcwPiBUcmlwbGUtY2xpY2tpbmcgdGV4dCB3aXRoaW4g
YQorICAgICAgICAvLyA8ZGl2PiBzZXQgdG8gImRpc3BsYXk6IHRhYmxlLWNlbGwiIHNlbGVjdHMg
dGV4dCBvdXRzaWRlIHRoZSBjZWxsLgorICAgICAgICAvLworICAgICAgICAvLyBPbiB0cmlwbGUt
Y2xpY2ssIGFkanVzdCB0aGUgc2VsZWN0aW9uIHJhbmdlIHRvIGluY2x1ZGUgb25seSB0aGUgdmFs
dWUKKyAgICAgICAgLy8gZWxlbWVudCBpZiB0aGUgc2VsZWN0aW9uIGV4dGVuZHMgV2ViSW5zcGVj
dG9yLmJleW9uZCBpdC4KKyAgICAgICAgdmFyIHZhbHVlRWxlbWVudENsaWNrZWQgPSBmdW5jdGlv
bihldmVudCkgeworICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7CisKKyAgICAg
ICAgICAgIGlmIChldmVudC5kZXRhaWwgPCAzKQorICAgICAgICAgICAgICAgIHJldHVybjsKKwor
ICAgICAgICAgICAgdmFyIGN1cnJlbnRTZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7
CisgICAgICAgICAgICBpZiAoIWN1cnJlbnRTZWxlY3Rpb24pCisgICAgICAgICAgICAgICAgcmV0
dXJuOworCisgICAgICAgICAgICB2YXIgY3VycmVudFJhbmdlID0gY3VycmVudFNlbGVjdGlvbi5n
ZXRSYW5nZUF0KDApOworICAgICAgICAgICAgaWYgKCFjdXJyZW50UmFuZ2UgfHwgY3VycmVudFJh
bmdlLnN0YXJ0Q29udGFpbmVyID09PSBjdXJyZW50UmFuZ2UuZW5kQ29udGFpbmVyKQorICAgICAg
ICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgdmFyIGNvcnJlY3RlZFJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICAgICAgICAgIGNvcnJlY3RlZFJhbmdlLnNlbGVjdE5v
ZGVDb250ZW50cyhldmVudC5jdXJyZW50VGFyZ2V0KTsKKyAgICAgICAgICAgIGN1cnJlbnRTZWxl
Y3Rpb24ucmVtb3ZlQWxsUmFuZ2VzKCk7CisgICAgICAgICAgICBjdXJyZW50U2VsZWN0aW9uLmFk
ZFJhbmdlKGNvcnJlY3RlZFJhbmdlKTsKKyAgICAgICAgfTsKKyAgICAgICAgdGhpcy5fdmFsdWVF
bGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdmFsdWVFbGVtZW50Q2xpY2tlZCk7CisK
KyAgICAgICAgdGhpcy5sYWJlbCA9IGxhYmVsOworICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7
CisgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgbGFiZWwoKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIHRoaXMuX2xhYmVsRWxlbWVudC50ZXh0Q29udGVudDsKLSAgICB9LAorICAgIH0K
IAogICAgIHNldCBsYWJlbChsYWJlbCkKICAgICB7CiAgICAgICAgIHRoaXMuX2xhYmVsRWxlbWVu
dC50ZXh0Q29udGVudCA9IGxhYmVsOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHZhbHVlKCkK
ICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl92YWx1ZTsKLSAgICB9LAorICAgIH0KIAogICAg
IHNldCB2YWx1ZSh2YWx1ZSkKICAgICB7CkBAIC0xMTcsNCArMTExLDcgQEAgV2ViSW5zcGVjdG9y
LkRldGFpbHNTZWN0aW9uU2ltcGxlUm93LnByb3RvdHlwZSA9IHsKICAgICB9CiB9OwogCi1XZWJJ
bnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25TaW1wbGVSb3cucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdl
Ykluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdy5wcm90b3R5cGU7CitXZWJJbnNwZWN0b3IuRGV0
YWlsc1NlY3Rpb25TaW1wbGVSb3cuRGF0YVN0eWxlQ2xhc3NOYW1lID0gImRhdGEiOworV2ViSW5z
cGVjdG9yLkRldGFpbHNTZWN0aW9uU2ltcGxlUm93LkVtcHR5U3R5bGVDbGFzc05hbWUgPSAiZW1w
dHkiOworV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uU2ltcGxlUm93LkxhYmVsRWxlbWVudFN0
eWxlQ2xhc3NOYW1lID0gImxhYmVsIjsKK1dlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblNpbXBs
ZVJvdy5WYWx1ZUVsZW1lbnRTdHlsZUNsYXNzTmFtZSA9ICJ2YWx1ZSI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EZXRhaWxzU2VjdGlvblRl
eHRSb3cuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EZXRh
aWxzU2VjdGlvblRleHRSb3cuanMKaW5kZXggOTQ5MGZmZTY0MzI4Y2JhNTk4NWQ5NjA2N2IxNzNj
NDFlZDRiNjY4OS4uNWI4ZWI5MDFjY2ZjMDI4MDAzZTJjYzZmMDQ5NmNmYTA2ZWNkYjM5MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGV0YWls
c1NlY3Rpb25UZXh0Um93LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL0RldGFpbHNTZWN0aW9uVGV4dFJvdy5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDE0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsMjcgKzIzLDIzIEBACiAgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkRldGFp
bHNTZWN0aW9uVGV4dFJvdyA9IGZ1bmN0aW9uKHRleHQpCitXZWJJbnNwZWN0b3IuRGV0YWlsc1Nl
Y3Rpb25UZXh0Um93ID0gY2xhc3MgRGV0YWlsc1NlY3Rpb25UZXh0Um93IGV4dGVuZHMgV2ViSW5z
cGVjdG9yLkRldGFpbHNTZWN0aW9uUm93CiB7Ci0gICAgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0
aW9uUm93LmNhbGwodGhpcyk7Ci0KLSAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJ
bnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25UZXh0Um93LlN0eWxlQ2xhc3NOYW1lKTsKLQotICAgIHRo
aXMuZWxlbWVudC50ZXh0Q29udGVudCA9IHRleHQ7Ci19OworICAgIGNvbnN0cnVjdG9yKHRleHQp
CisgICAgeworICAgICAgICBzdXBlcigpOwogCi1XZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25U
ZXh0Um93LlN0eWxlQ2xhc3NOYW1lID0gInRleHQiOworICAgICAgICB0aGlzLmVsZW1lbnQuY2xh
c3NMaXN0LmFkZCgidGV4dCIpOwogCi1XZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25UZXh0Um93
LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0
aW9uVGV4dFJvdywKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJv
dy5wcm90b3R5cGUsCisgICAgICAgIHRoaXMuZWxlbWVudC50ZXh0Q29udGVudCA9IHRleHQ7Cisg
ICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgdGV4dCgpCiAgICAgewogICAgICAgICBy
ZXR1cm4gdGhpcy5lbGVtZW50LnRleHRDb250ZW50OwotICAgIH0sCisgICAgfQogCiAgICAgc2V0
IHRleHQodGV4dCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9FZGl0aW5nU3VwcG9ydC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0VkaXRpbmdTdXBwb3J0LmpzCmluZGV4IGFjNTg2NDZjMGQ1
YjU4OWRlOWRjNzIzNzA0YWRmYjNkYTc3MWUzMDUuLmU0NjE1YTU2YzcxMDg1YmZkMDE2ZDM4YWNl
NGY2MDM0NmY5ZTUzYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0VkaXRpbmdTdXBwb3J0LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0VkaXRpbmdTdXBwb3J0LmpzCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01Nyw3ICs1Nyw3IEBAIFdl
Ykluc3BlY3Rvci5pc0VkaXRpbmdBbnlGaWVsZCA9IGZ1bmN0aW9uKCkKIAogV2ViSW5zcGVjdG9y
LmlzRXZlbnRUYXJnZXRBbkVkaXRhYmxlRmllbGQgPSBmdW5jdGlvbihldmVudCkKIHsKLSAgICBj
b25zdCB0ZXh0SW5wdXRUeXBlcyA9IHsidGV4dCI6IHRydWUsICJzZWFyY2giOiB0cnVlLCAidGVs
IjogdHJ1ZSwgInVybCI6IHRydWUsICJlbWFpbCI6IHRydWUsICJwYXNzd29yZCI6IHRydWV9Owor
ICAgIHZhciB0ZXh0SW5wdXRUeXBlcyA9IHsidGV4dCI6IHRydWUsICJzZWFyY2giOiB0cnVlLCAi
dGVsIjogdHJ1ZSwgInVybCI6IHRydWUsICJlbWFpbCI6IHRydWUsICJwYXNzd29yZCI6IHRydWV9
OwogICAgIGlmIChldmVudC50YXJnZXQgaW5zdGFuY2VvZiBIVE1MSW5wdXRFbGVtZW50KQogICAg
ICAgICByZXR1cm4gZXZlbnQudGFyZ2V0LnR5cGUgaW4gdGV4dElucHV0VHlwZXM7CiAKQEAgLTc0
LDI2ICs3NCwyNyBAQCBXZWJJbnNwZWN0b3IuaXNFdmVudFRhcmdldEFuRWRpdGFibGVGaWVsZCA9
IGZ1bmN0aW9uKGV2ZW50KQogICAgIHJldHVybiBmYWxzZTsKIH07CiAKLVdlYkluc3BlY3Rvci5F
ZGl0aW5nQ29uZmlnID0gZnVuY3Rpb24oY29tbWl0SGFuZGxlciwgY2FuY2VsSGFuZGxlciwgY29u
dGV4dCkKK1dlYkluc3BlY3Rvci5FZGl0aW5nQ29uZmlnID0gY2xhc3MgRWRpdGluZ0NvbmZpZwog
ewotICAgIHRoaXMuY29tbWl0SGFuZGxlciA9IGNvbW1pdEhhbmRsZXI7Ci0gICAgdGhpcy5jYW5j
ZWxIYW5kbGVyID0gY2FuY2VsSGFuZGxlcjsKLSAgICB0aGlzLmNvbnRleHQgPSBjb250ZXh0Owot
ICAgIHRoaXMuc3BlbGxjaGVjayA9IGZhbHNlOwotfTsKKyAgICBjb25zdHJ1Y3Rvcihjb21taXRI
YW5kbGVyLCBjYW5jZWxIYW5kbGVyLCBjb250ZXh0KQorICAgIHsKKyAgICAgICAgdGhpcy5jb21t
aXRIYW5kbGVyID0gY29tbWl0SGFuZGxlcjsKKyAgICAgICAgdGhpcy5jYW5jZWxIYW5kbGVyID0g
Y2FuY2VsSGFuZGxlcjsKKyAgICAgICAgdGhpcy5jb250ZXh0ID0gY29udGV4dDsKKyAgICAgICAg
dGhpcy5zcGVsbGNoZWNrID0gZmFsc2U7CisgICAgfQogCi1XZWJJbnNwZWN0b3IuRWRpdGluZ0Nv
bmZpZy5wcm90b3R5cGUgPSB7Ci0gICAgc2V0UGFzdGVIYW5kbGVyOiBmdW5jdGlvbihwYXN0ZUhh
bmRsZXIpCisgICAgc2V0UGFzdGVIYW5kbGVyKHBhc3RlSGFuZGxlcikKICAgICB7CiAgICAgICAg
IHRoaXMucGFzdGVIYW5kbGVyID0gcGFzdGVIYW5kbGVyOwotICAgIH0sCisgICAgfQogCi0gICAg
c2V0TXVsdGlsaW5lOiBmdW5jdGlvbihtdWx0aWxpbmUpCisgICAgc2V0TXVsdGlsaW5lKG11bHRp
bGluZSkKICAgICB7CiAgICAgICAgIHRoaXMubXVsdGlsaW5lID0gbXVsdGlsaW5lOwotICAgIH0s
CisgICAgfQogCi0gICAgc2V0Q3VzdG9tRmluaXNoSGFuZGxlcjogZnVuY3Rpb24oY3VzdG9tRmlu
aXNoSGFuZGxlcikKKyAgICBzZXRDdXN0b21GaW5pc2hIYW5kbGVyKGN1c3RvbUZpbmlzaEhhbmRs
ZXIpCiAgICAgewogICAgICAgICB0aGlzLmN1c3RvbUZpbmlzaEhhbmRsZXIgPSBjdXN0b21GaW5p
c2hIYW5kbGVyOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL0V2ZW50TGlzdGVuZXJTZWN0aW9uLmpzIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRXZlbnRMaXN0ZW5lclNlY3Rpb24uanMKaW5kZXgg
OWNjMzg2YzI1MjBhNTMxNjQxZjhmMDFjNGQ3NjYyYjM0NThkN2ZhOS4uOTY3MGI2N2I4YTkzMDIx
NWQ2NTliNGU2YmYzNTg3YzhmY2M1OTBmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRXZlbnRMaXN0ZW5lclNlY3Rpb24uanMKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRXZlbnRMaXN0ZW5lclNlY3Rp
b24uanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTIzLDI0ICsyMywyMyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogICovCiAKLVdlYkluc3BlY3Rvci5FdmVudExpc3RlbmVyU2VjdGlvbiA9IGZ1bmN0aW9uKHR5
cGUsIG5vZGVJZCkKK1dlYkluc3BlY3Rvci5FdmVudExpc3RlbmVyU2VjdGlvbiA9IGNsYXNzIEV2
ZW50TGlzdGVuZXJTZWN0aW9uIGV4dGVuZHMgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uCiB7
Ci0gICAgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uLmNhbGwodGhpcywgdHlwZSArICItZXZl
bnQtbGlzdGVuZXItc2VjdGlvbiIsIHR5cGUsIFtdLCBudWxsLCB0cnVlKTsKKyAgICBjb25zdHJ1
Y3Rvcih0eXBlLCBub2RlSWQpCisgICAgeworICAgICAgICBzdXBlcih0eXBlICsgIi1ldmVudC1s
aXN0ZW5lci1zZWN0aW9uIiwgdHlwZSwgW10sIG51bGwsIHRydWUpOwogCi0gICAgdGhpcy5lbGVt
ZW50LmNsYXNzTGlzdC5hZGQoImV2ZW50LWxpc3RlbmVyLXNlY3Rpb24iKTsKKyAgICAgICAgdGhp
cy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoImV2ZW50LWxpc3RlbmVyLXNlY3Rpb24iKTsKIAotICAg
IHRoaXMuX25vZGVJZCA9IG5vZGVJZDsKLX07CisgICAgICAgIHRoaXMuX25vZGVJZCA9IG5vZGVJ
ZDsKKyAgICB9CiAKLVdlYkluc3BlY3Rvci5FdmVudExpc3RlbmVyU2VjdGlvbi5wcm90b3R5cGUg
PSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5FdmVudExpc3RlbmVyU2VjdGlvbiwK
KyAgICAvLyBQdWJsaWMKIAotICAgIGFkZExpc3RlbmVyOiBmdW5jdGlvbihldmVudExpc3RlbmVy
KQorICAgIGFkZExpc3RlbmVyKGV2ZW50TGlzdGVuZXIpCiAgICAgewogICAgICAgICB2YXIgZ3Jv
dXBzID0gdGhpcy5ncm91cHM7CiAgICAgICAgIGdyb3Vwcy5wdXNoKG5ldyBXZWJJbnNwZWN0b3Iu
RXZlbnRMaXN0ZW5lclNlY3Rpb25Hcm91cChldmVudExpc3RlbmVyLCB0aGlzLl9ub2RlSWQpKTsK
ICAgICAgICAgdGhpcy5ncm91cHMgPSBncm91cHM7CiAgICAgfQogfTsKLQotV2ViSW5zcGVjdG9y
LkV2ZW50TGlzdGVuZXJTZWN0aW9uLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3Iu
RGV0YWlsc1NlY3Rpb24ucHJvdG90eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRXZlbnRMaXN0ZW5lclNlY3Rpb25Hcm91cC5qcyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0V2ZW50TGlzdGVuZXJTZWN0
aW9uR3JvdXAuanMKaW5kZXggNDE4ZmRiMTViNzZlZjc1N2RhMWNhMGRmMmFkZWMxYTQyNGMxM2Ni
MC4uMThlY2E3ODI1YjAxNGUyNGFjYjg2YjM0MjI2MDJlZTFlMGM4NWRkYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRXZlbnRMaXN0ZW5lclNl
Y3Rpb25Hcm91cC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9FdmVudExpc3RlbmVyU2VjdGlvbkdyb3VwLmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywyMyArMjMsMjUgQEAKICAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuRXZlbnRM
aXN0ZW5lclNlY3Rpb25Hcm91cCA9IGZ1bmN0aW9uKGV2ZW50TGlzdGVuZXIsIG5vZGVJZCkKK1dl
Ykluc3BlY3Rvci5FdmVudExpc3RlbmVyU2VjdGlvbkdyb3VwID0gY2xhc3MgRXZlbnRMaXN0ZW5l
clNlY3Rpb25Hcm91cCBleHRlbmRzIFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbkdyb3VwCiB7
Ci0gICAgdGhpcy5fZXZlbnRMaXN0ZW5lciA9IGV2ZW50TGlzdGVuZXI7Ci0gICAgdGhpcy5fbm9k
ZUlkID0gbm9kZUlkOworICAgIGNvbnN0cnVjdG9yKGV2ZW50TGlzdGVuZXIsIG5vZGVJZCkKKyAg
ICB7CisgICAgICAgIHN1cGVyKCk7CiAKLSAgICB2YXIgcm93cyA9IFtdOwotICAgIHJvd3MucHVz
aChuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uU2ltcGxlUm93KFdlYkluc3BlY3Rvci5V
SVN0cmluZygiTm9kZSIpLCB0aGlzLl9ub2RlVGV4dE9yTGluaygpKSk7Ci0gICAgcm93cy5wdXNo
KG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25TaW1wbGVSb3coV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJGdW5jdGlvbiIpLCB0aGlzLl9mdW5jdGlvblRleHRPckxpbmsoKSkpOwotICAgIHJv
d3MucHVzaChuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uU2ltcGxlUm93KFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiVHlwZSIpLCB0aGlzLl90eXBlKCkpKTsKKyAgICAgICAgdGhpcy5fZXZl
bnRMaXN0ZW5lciA9IGV2ZW50TGlzdGVuZXI7CisgICAgICAgIHRoaXMuX25vZGVJZCA9IG5vZGVJ
ZDsKIAotICAgIFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbkdyb3VwLmNhbGwodGhpcywgcm93
cyk7Ci19OworICAgICAgICB2YXIgcm93cyA9IFtdOworICAgICAgICByb3dzLnB1c2gobmV3IFdl
Ykluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblNpbXBsZVJvdyhXZWJJbnNwZWN0b3IuVUlTdHJpbmco
Ik5vZGUiKSwgdGhpcy5fbm9kZVRleHRPckxpbmsoKSkpOworICAgICAgICByb3dzLnB1c2gobmV3
IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblNpbXBsZVJvdyhXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIkZ1bmN0aW9uIiksIHRoaXMuX2Z1bmN0aW9uVGV4dE9yTGluaygpKSk7CisgICAgICAgIHJv
d3MucHVzaChuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uU2ltcGxlUm93KFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiVHlwZSIpLCB0aGlzLl90eXBlKCkpKTsKKyAgICAgICAgdGhpcy5yb3dz
ID0gcm93czsKKyAgICB9CiAKLVdlYkluc3BlY3Rvci5FdmVudExpc3RlbmVyU2VjdGlvbkdyb3Vw
LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkV2ZW50TGlzdGVu
ZXJTZWN0aW9uR3JvdXAsCisgICAgLy8gUHJpdmF0ZQogCi0gICAgX25vZGVUZXh0T3JMaW5rOiBm
dW5jdGlvbigpCisgICAgX25vZGVUZXh0T3JMaW5rKCkKICAgICB7CiAgICAgICAgIHZhciBub2Rl
ID0gdGhpcy5fZXZlbnRMaXN0ZW5lci5ub2RlOwogICAgICAgICBjb25zb2xlLmFzc2VydChub2Rl
KTsKQEAgLTUwLDkgKzUyLDkgQEAgV2ViSW5zcGVjdG9yLkV2ZW50TGlzdGVuZXJTZWN0aW9uR3Jv
dXAucHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0dXJuICJkb2N1bWVudCI7CiAKICAgICAg
ICAgcmV0dXJuIFdlYkluc3BlY3Rvci5saW5raWZ5Tm9kZVJlZmVyZW5jZShub2RlKTsKLSAgICB9
LAorICAgIH0KIAotICAgIF90eXBlOiBmdW5jdGlvbigpCisgICAgX3R5cGUoKQogICAgIHsKICAg
ICAgICAgaWYgKHRoaXMuX2V2ZW50TGlzdGVuZXIudXNlQ2FwdHVyZSkKICAgICAgICAgICAgIHJl
dHVybiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNhcHR1cmluZyIpOwpAQCAtNjEsOSArNjMsOSBA
QCBXZWJJbnNwZWN0b3IuRXZlbnRMaXN0ZW5lclNlY3Rpb25Hcm91cC5wcm90b3R5cGUgPSB7CiAg
ICAgICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJBdHRyaWJ1dGUiKTsKIAog
ICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJCdWJibGluZyIpOwotICAgIH0s
CisgICAgfQogCi0gICAgX2Z1bmN0aW9uVGV4dE9yTGluazogZnVuY3Rpb24oKQorICAgIF9mdW5j
dGlvblRleHRPckxpbmsoKQogICAgIHsKICAgICAgICAgdmFyIG1hdGNoID0gdGhpcy5fZXZlbnRM
aXN0ZW5lci5oYW5kbGVyQm9keS5tYXRjaCgvZnVuY3Rpb24gKFteXChdKz8pXCgvKTsKICAgICAg
ICAgaWYgKG1hdGNoKSB7CkBAIC05OCw1ICsxMDAsMyBAQCBXZWJJbnNwZWN0b3IuRXZlbnRMaXN0
ZW5lclNlY3Rpb25Hcm91cC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiBmcmFnbWVudDsK
ICAgICB9CiB9OwotCi1XZWJJbnNwZWN0b3IuRXZlbnRMaXN0ZW5lclNlY3Rpb25Hcm91cC5wcm90
b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uR3JvdXAucHJvdG90
eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvRmlsdGVyQmFyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvRmlsdGVyQmFyLmpzCmluZGV4IDJhYzgyMDcwODc0NGYzNmJkN2FkZGFiNzU0NDg5NzhlNDZh
MGU1MWIuLmE5ZjA2MDIwYTE2YTkyMWYwNmU4ODYyM2FjNGU3OTg3OGY2YjY5NDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0ZpbHRlckJhci5q
cworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9GaWx0ZXJC
YXIuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTIzLDY1ICsyMyw1NCBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogICovCiAKLVdlYkluc3BlY3Rvci5GaWx0ZXJCYXIgPSBmdW5jdGlvbihlbGVtZW50KSB7Ci0g
ICAgLy8gRklYTUU6IENvbnZlcnQgdGhpcyB0byBhIFdlYkluc3BlY3Rvci5PYmplY3Qgc3ViY2xh
c3MsIGFuZCBjYWxsIHN1cGVyKCkuCi0gICAgLy8gV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRo
aXMpOwotCi0gICAgdGhpcy5fZWxlbWVudCA9IGVsZW1lbnQgfHwgZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiZGl2Iik7Ci0gICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rv
ci5GaWx0ZXJCYXIuU3R5bGVDbGFzc05hbWUpOwotCi0gICAgdGhpcy5fZmlsdGVyc05hdmlnYXRp
b25CYXIgPSBuZXcgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXI7Ci0gICAgdGhpcy5fZWxlbWVu
dC5hcHBlbmRDaGlsZCh0aGlzLl9maWx0ZXJzTmF2aWdhdGlvbkJhci5lbGVtZW50KTsKLQotICAg
IHRoaXMuX2ZpbHRlckZ1bmN0aW9uc01hcCA9IG5ldyBNYXA7Ci0KLSAgICB0aGlzLl9pbnB1dEZp
ZWxkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTsKLSAgICB0aGlzLl9pbnB1dEZp
ZWxkLnR5cGUgPSAic2VhcmNoIjsKLSAgICB0aGlzLl9pbnB1dEZpZWxkLnNwZWxsY2hlY2sgPSBm
YWxzZTsKLSAgICB0aGlzLl9pbnB1dEZpZWxkLmluY3JlbWVudGFsID0gdHJ1ZTsKLSAgICB0aGlz
Ll9pbnB1dEZpZWxkLmFkZEV2ZW50TGlzdGVuZXIoInNlYXJjaCIsIHRoaXMuX2hhbmRsZUZpbHRl
ckNoYW5nZWQuYmluZCh0aGlzKSwgZmFsc2UpOwotICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hp
bGQodGhpcy5faW5wdXRGaWVsZCk7Ci19OworV2ViSW5zcGVjdG9yLkZpbHRlckJhciA9IGNsYXNz
IEZpbHRlckJhciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKK3sKKyAgICBjb25zdHJ1Y3Rv
cihlbGVtZW50KQorICAgIHsKKyAgICAgICAgc3VwZXIoKTsKIAotLy8gRklYTUU6IE1vdmUgdG8g
YSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzIGFuZCB3ZSBjYW4gcmVtb3ZlIHRoaXMuCi1X
ZWJJbnNwZWN0b3IuT2JqZWN0LmRlcHJlY2F0ZWRBZGRDb25zdHJ1Y3RvckZ1bmN0aW9ucyhXZWJJ
bnNwZWN0b3IuRmlsdGVyQmFyKTsKKyAgICAgICAgdGhpcy5fZWxlbWVudCA9IGVsZW1lbnQgfHwg
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xh
c3NMaXN0LmFkZCgiZmlsdGVyLWJhciIpOwogCi1XZWJJbnNwZWN0b3IuRmlsdGVyQmFyLlN0eWxl
Q2xhc3NOYW1lID0gImZpbHRlci1iYXIiOworICAgICAgICB0aGlzLl9maWx0ZXJzTmF2aWdhdGlv
bkJhciA9IG5ldyBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhcjsKKyAgICAgICAgdGhpcy5fZWxl
bWVudC5hcHBlbmRDaGlsZCh0aGlzLl9maWx0ZXJzTmF2aWdhdGlvbkJhci5lbGVtZW50KTsKIAot
V2ViSW5zcGVjdG9yLkZpbHRlckJhci5FdmVudCA9IHsKLSAgICBGaWx0ZXJEaWRDaGFuZ2U6ICJm
aWx0ZXItYmFyLXRleHQtZmlsdGVyLWRpZC1jaGFuZ2UiCi19OworICAgICAgICB0aGlzLl9maWx0
ZXJGdW5jdGlvbnNNYXAgPSBuZXcgTWFwOwogCi1XZWJJbnNwZWN0b3IuRmlsdGVyQmFyLnByb3Rv
dHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkZpbHRlckJhciwKLSAgICBf
X3Byb3RvX186IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlLAorICAgICAgICB0aGlzLl9p
bnB1dEZpZWxkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTsKKyAgICAgICAgdGhp
cy5faW5wdXRGaWVsZC50eXBlID0gInNlYXJjaCI7CisgICAgICAgIHRoaXMuX2lucHV0RmllbGQu
c3BlbGxjaGVjayA9IGZhbHNlOworICAgICAgICB0aGlzLl9pbnB1dEZpZWxkLmluY3JlbWVudGFs
ID0gdHJ1ZTsKKyAgICAgICAgdGhpcy5faW5wdXRGaWVsZC5hZGRFdmVudExpc3RlbmVyKCJzZWFy
Y2giLCB0aGlzLl9oYW5kbGVGaWx0ZXJDaGFuZ2VkLmJpbmQodGhpcyksIGZhbHNlKTsKKyAgICAg
ICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9pbnB1dEZpZWxkKTsKKyAgICB9CiAK
ICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBlbGVtZW50KCkKICAgICB7CiAgICAgICAgIHJldHVy
biB0aGlzLl9lbGVtZW50OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHBsYWNlaG9sZGVyKCkK
ICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9pbnB1dEZpZWxkLmdldEF0dHJpYnV0ZSgicGxh
Y2Vob2xkZXIiKTsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCBwbGFjZWhvbGRlcih0ZXh0KQog
ICAgIHsKICAgICAgICAgdGhpcy5faW5wdXRGaWVsZC5zZXRBdHRyaWJ1dGUoInBsYWNlaG9sZGVy
IiwgdGV4dCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgaW5wdXRGaWVsZCgpCiAgICAgewog
ICAgICAgICByZXR1cm4gdGhpcy5faW5wdXRGaWVsZDsKLSAgICB9LAorICAgIH0KIAogICAgIGdl
dCBmaWx0ZXJzKCkKICAgICB7CiAgICAgICAgIHJldHVybiB7dGV4dDogdGhpcy5faW5wdXRGaWVs
ZC52YWx1ZSwgZnVuY3Rpb25zOiBbLi4udGhpcy5fZmlsdGVyRnVuY3Rpb25zTWFwLnZhbHVlcygp
XX07Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgZmlsdGVycyhmaWx0ZXJzKQogICAgIHsKQEAg
LTkxLDkgKzgwLDkgQEAgV2ViSW5zcGVjdG9yLkZpbHRlckJhci5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIHRoaXMuX2lucHV0RmllbGQudmFsdWUgPSBmaWx0ZXJzLnRleHQgfHwgIiI7CiAgICAgICAg
IGlmIChvbGRUZXh0VmFsdWUgIT09IHRoaXMuX2lucHV0RmllbGQudmFsdWUpCiAgICAgICAgICAg
ICB0aGlzLl9oYW5kbGVGaWx0ZXJDaGFuZ2VkKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBhZGRG
aWx0ZXJCYXJCdXR0b246IGZ1bmN0aW9uKGlkZW50aWZpZXIsIGZpbHRlckZ1bmN0aW9uLCBhY3Rp
dmF0ZWRCeURlZmF1bHQsIGRlZmF1bHRUb29sVGlwLCBhY3RpdmF0ZWRUb29sVGlwLCBpbWFnZSwg
aW1hZ2VXaWR0aCwgaW1hZ2VIZWlnaHQsIHN1cHByZXNzRW1ib3NzKQorICAgIGFkZEZpbHRlckJh
ckJ1dHRvbihpZGVudGlmaWVyLCBmaWx0ZXJGdW5jdGlvbiwgYWN0aXZhdGVkQnlEZWZhdWx0LCBk
ZWZhdWx0VG9vbFRpcCwgYWN0aXZhdGVkVG9vbFRpcCwgaW1hZ2UsIGltYWdlV2lkdGgsIGltYWdl
SGVpZ2h0LCBzdXBwcmVzc0VtYm9zcykKICAgICB7CiAgICAgICAgIHZhciBmaWx0ZXJCYXJCdXR0
b24gPSBuZXcgV2ViSW5zcGVjdG9yLkZpbHRlckJhckJ1dHRvbihpZGVudGlmaWVyLCBmaWx0ZXJG
dW5jdGlvbiwgYWN0aXZhdGVkQnlEZWZhdWx0LCBkZWZhdWx0VG9vbFRpcCwgYWN0aXZhdGVkVG9v
bFRpcCwgaW1hZ2UsIGltYWdlV2lkdGgsIGltYWdlSGVpZ2h0LCBzdXBwcmVzc0VtYm9zcyk7CiAg
ICAgICAgIGZpbHRlckJhckJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5CdXR0
b25OYXZpZ2F0aW9uSXRlbS5FdmVudC5DbGlja2VkLCB0aGlzLl9oYW5kbGVGaWx0ZXJCYXJCdXR0
b25DbGlja2VkLCB0aGlzKTsKQEAgLTEwMywxMiArOTIsMTIgQEAgV2ViSW5zcGVjdG9yLkZpbHRl
ckJhci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9maWx0ZXJGdW5jdGlvbnNNYXAu
c2V0KGZpbHRlckJhckJ1dHRvbi5pZGVudGlmaWVyLCBmaWx0ZXJCYXJCdXR0b24uZmlsdGVyRnVu
Y3Rpb24pOwogICAgICAgICAgICAgdGhpcy5faGFuZGxlRmlsdGVyQ2hhbmdlZCgpOwogICAgICAg
ICB9Ci0gICAgfSwKKyAgICB9CiAKLSAgICBoYXNBY3RpdmVGaWx0ZXJzOiBmdW5jdGlvbigpCisg
ICAgaGFzQWN0aXZlRmlsdGVycygpCiAgICAgewogICAgICAgICByZXR1cm4gISF0aGlzLl9pbnB1
dEZpZWxkLnZhbHVlIHx8ICEhdGhpcy5fZmlsdGVyRnVuY3Rpb25zTWFwLnNpemU7Ci0gICAgfSwK
KyAgICB9CiAKICAgICAvLyBQcml2YXRlCiAKQEAgLTExNiw5ICsxMDUsOSBAQCBXZWJJbnNwZWN0
b3IuRmlsdGVyQmFyLnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAgIHZhciBmaWx0ZXJCYXJC
dXR0b24gPSBldmVudC50YXJnZXQ7CiAgICAgICAgIGZpbHRlckJhckJ1dHRvbi50b2dnbGUoKTsK
LSAgICB9LAorICAgIH0KIAotICAgIF9oYW5kbGVGaWx0ZXJCdXR0b25Ub2dnbGVkOiBmdW5jdGlv
bihldmVudCkKKyAgICBfaGFuZGxlRmlsdGVyQnV0dG9uVG9nZ2xlZChldmVudCkKICAgICB7CiAg
ICAgICAgIHZhciBmaWx0ZXJCYXJCdXR0b24gPSBldmVudC50YXJnZXQ7CiAgICAgICAgIGlmIChm
aWx0ZXJCYXJCdXR0b24uYWN0aXZhdGVkKQpAQCAtMTI2LDEwICsxMTUsMTQgQEAgV2ViSW5zcGVj
dG9yLkZpbHRlckJhci5wcm90b3R5cGUgPSB7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHRo
aXMuX2ZpbHRlckZ1bmN0aW9uc01hcC5kZWxldGUoZmlsdGVyQmFyQnV0dG9uLmlkZW50aWZpZXIp
OwogICAgICAgICB0aGlzLl9oYW5kbGVGaWx0ZXJDaGFuZ2VkKCk7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBfaGFuZGxlRmlsdGVyQ2hhbmdlZDogZnVuY3Rpb24oKQorICAgIF9oYW5kbGVGaWx0ZXJD
aGFuZ2VkKCkKICAgICB7CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdl
Ykluc3BlY3Rvci5GaWx0ZXJCYXIuRXZlbnQuRmlsdGVyRGlkQ2hhbmdlKTsKICAgICB9CiB9Owor
CitXZWJJbnNwZWN0b3IuRmlsdGVyQmFyLkV2ZW50ID0geworICAgIEZpbHRlckRpZENoYW5nZTog
ImZpbHRlci1iYXItdGV4dC1maWx0ZXItZGlkLWNoYW5nZSIKK307CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9GaW5kQmFubmVyLmpzIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRmluZEJhbm5lci5qcwppbmRl
eCBiZjljZWFlMDIwMWJiOWNmYzNhMWFkMmViYmJkYjA0YjdiYTUzYzdkLi42Zjc3NDBkZWM3ZjUx
NDY5ZjQ3YWFiM2JkNDJkODkwYjY1Y2Y2NDgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9GaW5kQmFubmVyLmpzCisrKyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0ZpbmRCYW5uZXIuanMKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDEyNyArMjMs
MTA4IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5z
cGVjdG9yLkZpbmRCYW5uZXIgPSBmdW5jdGlvbihkZWxlZ2F0ZSwgZWxlbWVudCkgewotICAgIC8v
IEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBh
bmQgY2FsbCBzdXBlcigpLgotICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsK
LQotICAgIHRoaXMuX2RlbGVnYXRlID0gZGVsZWdhdGUgfHwgbnVsbDsKLQotICAgIHRoaXMuX2Vs
ZW1lbnQgPSBlbGVtZW50IHx8IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgIHRo
aXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuRmluZEJhbm5lci5TdHlsZUNs
YXNzTmFtZSk7Ci0KLSAgICB0aGlzLl9yZXN1bHRDb3VudExhYmVsID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgibGFiZWwiKTsKLSAgICB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX3Jl
c3VsdENvdW50TGFiZWwpOwotCi0gICAgdGhpcy5fcHJldmlvdXNSZXN1bHRCdXR0b24gPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJidXR0b24iKTsKLSAgICB0aGlzLl9wcmV2aW91c1Jlc3VsdEJ1
dHRvbi5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5GaW5kQmFubmVyLlNlZ21lbnRlZEJ1dHRv
blN0eWxlQ2xhc3NOYW1lKTsKLSAgICB0aGlzLl9wcmV2aW91c1Jlc3VsdEJ1dHRvbi5jbGFzc0xp
c3QuYWRkKFdlYkluc3BlY3Rvci5GaW5kQmFubmVyLkxlZnRTZWdtZW50QnV0dG9uU3R5bGVDbGFz
c05hbWUpOwotICAgIHRoaXMuX3ByZXZpb3VzUmVzdWx0QnV0dG9uLmRpc2FibGVkID0gdHJ1ZTsK
LSAgICB0aGlzLl9wcmV2aW91c1Jlc3VsdEJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIs
IHRoaXMuX3ByZXZpb3VzUmVzdWx0QnV0dG9uQ2xpY2tlZC5iaW5kKHRoaXMpKTsKLSAgICB0aGlz
Ll9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX3ByZXZpb3VzUmVzdWx0QnV0dG9uKTsKLQotICAg
IHZhciBwcmV2aW91c1Jlc3VsdEJ1dHRvbkdseXBoRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImRpdiIpOwotICAgIHByZXZpb3VzUmVzdWx0QnV0dG9uR2x5cGhFbGVtZW50LmNsYXNz
TGlzdC5hZGQoV2ViSW5zcGVjdG9yLkZpbmRCYW5uZXIuU2VnbWVudEdseXBoU3R5bGVDbGFzc05h
bWUpOwotICAgIHRoaXMuX3ByZXZpb3VzUmVzdWx0QnV0dG9uLmFwcGVuZENoaWxkKHByZXZpb3Vz
UmVzdWx0QnV0dG9uR2x5cGhFbGVtZW50KTsKLQotICAgIHRoaXMuX25leHRSZXN1bHRCdXR0b24g
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJidXR0b24iKTsKLSAgICB0aGlzLl9uZXh0UmVzdWx0
QnV0dG9uLmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLkZpbmRCYW5uZXIuU2VnbWVudGVkQnV0
dG9uU3R5bGVDbGFzc05hbWUpOwotICAgIHRoaXMuX25leHRSZXN1bHRCdXR0b24uY2xhc3NMaXN0
LmFkZChXZWJJbnNwZWN0b3IuRmluZEJhbm5lci5SaWdodFNlZ21lbnRCdXR0b25TdHlsZUNsYXNz
TmFtZSk7Ci0gICAgdGhpcy5fbmV4dFJlc3VsdEJ1dHRvbi5kaXNhYmxlZCA9IHRydWU7Ci0gICAg
dGhpcy5fbmV4dFJlc3VsdEJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX25l
eHRSZXN1bHRCdXR0b25DbGlja2VkLmJpbmQodGhpcykpOwotICAgIHRoaXMuX2VsZW1lbnQuYXBw
ZW5kQ2hpbGQodGhpcy5fbmV4dFJlc3VsdEJ1dHRvbik7Ci0KLSAgICB2YXIgbmV4dFJlc3VsdEJ1
dHRvbkdseXBoRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgIG5l
eHRSZXN1bHRCdXR0b25HbHlwaEVsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuRmlu
ZEJhbm5lci5TZWdtZW50R2x5cGhTdHlsZUNsYXNzTmFtZSk7Ci0gICAgdGhpcy5fbmV4dFJlc3Vs
dEJ1dHRvbi5hcHBlbmRDaGlsZChuZXh0UmVzdWx0QnV0dG9uR2x5cGhFbGVtZW50KTsKLQotICAg
IHRoaXMuX2lucHV0RmllbGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpOwotICAg
IHRoaXMuX2lucHV0RmllbGQudHlwZSA9ICJzZWFyY2giOwotICAgIHRoaXMuX2lucHV0RmllbGQu
c3BlbGxjaGVjayA9IGZhbHNlOwotICAgIHRoaXMuX2lucHV0RmllbGQuaW5jcmVtZW50YWwgPSB0
cnVlOwotICAgIHRoaXMuX2lucHV0RmllbGQuc2V0QXR0cmlidXRlKCJyZXN1bHRzIiwgNSk7Ci0g
ICAgdGhpcy5faW5wdXRGaWVsZC5zZXRBdHRyaWJ1dGUoImF1dG9zYXZlIiwgImluc3BlY3Rvci1z
ZWFyY2giKTsKLSAgICB0aGlzLl9pbnB1dEZpZWxkLmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24i
LCB0aGlzLl9pbnB1dEZpZWxkS2V5RG93bi5iaW5kKHRoaXMpLCBmYWxzZSk7Ci0gICAgdGhpcy5f
aW5wdXRGaWVsZC5hZGRFdmVudExpc3RlbmVyKCJrZXl1cCIsIHRoaXMuX2lucHV0RmllbGRLZXlV
cC5iaW5kKHRoaXMpLCBmYWxzZSk7Ci0gICAgdGhpcy5faW5wdXRGaWVsZC5hZGRFdmVudExpc3Rl
bmVyKCJzZWFyY2giLCB0aGlzLl9pbnB1dEZpZWxkU2VhcmNoLmJpbmQodGhpcyksIGZhbHNlKTsK
LSAgICB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2lucHV0RmllbGQpOwotCi0gICAg
dGhpcy5fZG9uZUJ1dHRvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImJ1dHRvbiIpOwotICAg
IHRoaXMuX2RvbmVCdXR0b24udGV4dENvbnRlbnQgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkRv
bmUiKTsKLSAgICB0aGlzLl9kb25lQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhp
cy5fZG9uZUJ1dHRvbkNsaWNrZWQuYmluZCh0aGlzKSk7Ci0gICAgdGhpcy5fZWxlbWVudC5hcHBl
bmRDaGlsZCh0aGlzLl9kb25lQnV0dG9uKTsKLQotICAgIHRoaXMuX251bWJlck9mUmVzdWx0cyA9
IG51bGw7Ci0gICAgdGhpcy5fc2VhcmNoQmFja3dhcmRzID0gZmFsc2U7Ci0gICAgdGhpcy5fc2Vh
cmNoS2V5UHJlc3NlZCA9IGZhbHNlOwotICAgIHRoaXMuX3ByZXZpb3VzU2VhcmNoVmFsdWUgPSAi
IjsKLQotICAgIHRoaXMuX2hpZGVLZXlib2FyZFNob3J0Y3V0ID0gbmV3IFdlYkluc3BlY3Rvci5L
ZXlib2FyZFNob3J0Y3V0KG51bGwsIFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0LktleS5F
c2NhcGUsIHRoaXMuaGlkZS5iaW5kKHRoaXMpLCB0aGlzLl9lbGVtZW50KTsKLSAgICB0aGlzLl9w
b3B1bGF0ZUZpbmRLZXlib2FyZFNob3J0Y3V0ID0gbmV3IFdlYkluc3BlY3Rvci5LZXlib2FyZFNo
b3J0Y3V0KFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lk1vZGlmaWVyLkNvbW1hbmRPckNv
bnRyb2wsICJFIiwgdGhpcy5fcG9wdWxhdGVTZWFyY2hRdWVyeUZyb21TZWxlY3Rpb24uYmluZCh0
aGlzKSk7Ci0gICAgdGhpcy5fcG9wdWxhdGVGaW5kS2V5Ym9hcmRTaG9ydGN1dC5pbXBsaWNpdGx5
UHJldmVudHNEZWZhdWx0ID0gZmFsc2U7Ci0gICAgdGhpcy5fZmluZE5leHRLZXlib2FyZFNob3J0
Y3V0ID0gbmV3IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0KFdlYkluc3BlY3Rvci5LZXli
b2FyZFNob3J0Y3V0Lk1vZGlmaWVyLkNvbW1hbmRPckNvbnRyb2wsICJHIiwgdGhpcy5fbmV4dFJl
c3VsdEJ1dHRvbkNsaWNrZWQuYmluZCh0aGlzKSk7Ci0gICAgdGhpcy5fZmluZFByZXZpb3VzS2V5
Ym9hcmRTaG9ydGN1dCA9IG5ldyBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dChXZWJJbnNw
ZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5Nb2RpZmllci5TaGlmdCB8IFdlYkluc3BlY3Rvci5LZXli
b2FyZFNob3J0Y3V0Lk1vZGlmaWVyLkNvbW1hbmRPckNvbnRyb2wsICJHIiwgdGhpcy5fcHJldmlv
dXNSZXN1bHRCdXR0b25DbGlja2VkLmJpbmQodGhpcykpOwotCi0gICAgdGhpcy5fZ2VuZXJhdGVC
dXR0b25zR2x5cGhzSWZOZWVkZWQoKTsKLX07Ci0KLS8vIEZJWE1FOiBNb3ZlIHRvIGEgV2ViSW5z
cGVjdG9yLk9iamVjdCBzdWJjbGFzcyBhbmQgd2UgY2FuIHJlbW92ZSB0aGlzLgotV2ViSW5zcGVj
dG9yLk9iamVjdC5kZXByZWNhdGVkQWRkQ29uc3RydWN0b3JGdW5jdGlvbnMoV2ViSW5zcGVjdG9y
LkZpbmRCYW5uZXIpOwotCi1XZWJJbnNwZWN0b3IuRmluZEJhbm5lci5TdHlsZUNsYXNzTmFtZSA9
ICJmaW5kLWJhbm5lciI7Ci1XZWJJbnNwZWN0b3IuRmluZEJhbm5lci5TdXBwb3J0c0ZpbmRCYW5u
ZXJTdHlsZUNsYXNzTmFtZSA9ICJzdXBwb3J0cy1maW5kLWJhbm5lciI7Ci1XZWJJbnNwZWN0b3Iu
RmluZEJhbm5lci5TaG93aW5nRmluZEJhbm5lclN0eWxlQ2xhc3NOYW1lID0gInNob3dpbmctZmlu
ZC1iYW5uZXIiOwotV2ViSW5zcGVjdG9yLkZpbmRCYW5uZXIuTm9UcmFuc2l0aW9uU3R5bGVDbGFz
c05hbWUgPSAibm8tZmluZC1iYW5uZXItdHJhbnNpdGlvbiI7Ci1XZWJJbnNwZWN0b3IuRmluZEJh
bm5lci5TaG93aW5nU3R5bGVDbGFzc05hbWUgPSAic2hvd2luZyI7Ci1XZWJJbnNwZWN0b3IuRmlu
ZEJhbm5lci5TZWdtZW50ZWRCdXR0b25TdHlsZUNsYXNzTmFtZSA9ICJzZWdtZW50ZWQiOwotV2Vi
SW5zcGVjdG9yLkZpbmRCYW5uZXIuTGVmdFNlZ21lbnRCdXR0b25TdHlsZUNsYXNzTmFtZSA9ICJs
ZWZ0IjsKLVdlYkluc3BlY3Rvci5GaW5kQmFubmVyLlJpZ2h0U2VnbWVudEJ1dHRvblN0eWxlQ2xh
c3NOYW1lID0gInJpZ2h0IjsKLVdlYkluc3BlY3Rvci5GaW5kQmFubmVyLlNlZ21lbnRHbHlwaFN0
eWxlQ2xhc3NOYW1lID0gImdseXBoIjsKLQotV2ViSW5zcGVjdG9yLkZpbmRCYW5uZXIuRXZlbnQg
PSB7Ci0gICAgRGlkU2hvdzogImZpbmQtYmFubmVyLWRpZC1zaG93IiwKLSAgICBEaWRIaWRlOiAi
ZmluZC1iYW5uZXItZGlkLWhpZGUiCi19OwotCi1XZWJJbnNwZWN0b3IuRmluZEJhbm5lci5wcm90
b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5GaW5kQmFubmVyLAorV2Vi
SW5zcGVjdG9yLkZpbmRCYW5uZXIgPSBjbGFzcyBGaW5kQmFubmVyIGV4dGVuZHMgV2ViSW5zcGVj
dG9yLk9iamVjdAoreworICAgIGNvbnN0cnVjdG9yKGRlbGVnYXRlLCBlbGVtZW50KQorICAgIHsK
KyAgICAgICAgc3VwZXIoKTsKKworICAgICAgICB0aGlzLl9kZWxlZ2F0ZSA9IGRlbGVnYXRlIHx8
IG51bGw7CisKKyAgICAgICAgdGhpcy5fZWxlbWVudCA9IGVsZW1lbnQgfHwgZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZCgi
ZmluZC1iYW5uZXIiKTsKKworICAgICAgICB0aGlzLl9yZXN1bHRDb3VudExhYmVsID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgibGFiZWwiKTsKKyAgICAgICAgdGhpcy5fZWxlbWVudC5hcHBlbmRD
aGlsZCh0aGlzLl9yZXN1bHRDb3VudExhYmVsKTsKKworICAgICAgICB0aGlzLl9wcmV2aW91c1Jl
c3VsdEJ1dHRvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImJ1dHRvbiIpOworICAgICAgICB0
aGlzLl9wcmV2aW91c1Jlc3VsdEJ1dHRvbi5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5GaW5k
QmFubmVyLlNlZ21lbnRlZEJ1dHRvblN0eWxlQ2xhc3NOYW1lKTsKKyAgICAgICAgdGhpcy5fcHJl
dmlvdXNSZXN1bHRCdXR0b24uY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuRmluZEJhbm5lci5M
ZWZ0U2VnbWVudEJ1dHRvblN0eWxlQ2xhc3NOYW1lKTsKKyAgICAgICAgdGhpcy5fcHJldmlvdXNS
ZXN1bHRCdXR0b24uZGlzYWJsZWQgPSB0cnVlOworICAgICAgICB0aGlzLl9wcmV2aW91c1Jlc3Vs
dEJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX3ByZXZpb3VzUmVzdWx0QnV0
dG9uQ2xpY2tlZC5iaW5kKHRoaXMpKTsKKyAgICAgICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGls
ZCh0aGlzLl9wcmV2aW91c1Jlc3VsdEJ1dHRvbik7CisKKyAgICAgICAgdmFyIHByZXZpb3VzUmVz
dWx0QnV0dG9uR2x5cGhFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Cisg
ICAgICAgIHByZXZpb3VzUmVzdWx0QnV0dG9uR2x5cGhFbGVtZW50LmNsYXNzTGlzdC5hZGQoV2Vi
SW5zcGVjdG9yLkZpbmRCYW5uZXIuU2VnbWVudEdseXBoU3R5bGVDbGFzc05hbWUpOworICAgICAg
ICB0aGlzLl9wcmV2aW91c1Jlc3VsdEJ1dHRvbi5hcHBlbmRDaGlsZChwcmV2aW91c1Jlc3VsdEJ1
dHRvbkdseXBoRWxlbWVudCk7CisKKyAgICAgICAgdGhpcy5fbmV4dFJlc3VsdEJ1dHRvbiA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImJ1dHRvbiIpOworICAgICAgICB0aGlzLl9uZXh0UmVzdWx0
QnV0dG9uLmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLkZpbmRCYW5uZXIuU2VnbWVudGVkQnV0
dG9uU3R5bGVDbGFzc05hbWUpOworICAgICAgICB0aGlzLl9uZXh0UmVzdWx0QnV0dG9uLmNsYXNz
TGlzdC5hZGQoV2ViSW5zcGVjdG9yLkZpbmRCYW5uZXIuUmlnaHRTZWdtZW50QnV0dG9uU3R5bGVD
bGFzc05hbWUpOworICAgICAgICB0aGlzLl9uZXh0UmVzdWx0QnV0dG9uLmRpc2FibGVkID0gdHJ1
ZTsKKyAgICAgICAgdGhpcy5fbmV4dFJlc3VsdEJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCJjbGlj
ayIsIHRoaXMuX25leHRSZXN1bHRCdXR0b25DbGlja2VkLmJpbmQodGhpcykpOworICAgICAgICB0
aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX25leHRSZXN1bHRCdXR0b24pOworCisgICAg
ICAgIHZhciBuZXh0UmVzdWx0QnV0dG9uR2x5cGhFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiZGl2Iik7CisgICAgICAgIG5leHRSZXN1bHRCdXR0b25HbHlwaEVsZW1lbnQuY2xhc3NM
aXN0LmFkZChXZWJJbnNwZWN0b3IuRmluZEJhbm5lci5TZWdtZW50R2x5cGhTdHlsZUNsYXNzTmFt
ZSk7CisgICAgICAgIHRoaXMuX25leHRSZXN1bHRCdXR0b24uYXBwZW5kQ2hpbGQobmV4dFJlc3Vs
dEJ1dHRvbkdseXBoRWxlbWVudCk7CisKKyAgICAgICAgdGhpcy5faW5wdXRGaWVsZCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0Iik7CisgICAgICAgIHRoaXMuX2lucHV0RmllbGQudHlw
ZSA9ICJzZWFyY2giOworICAgICAgICB0aGlzLl9pbnB1dEZpZWxkLnNwZWxsY2hlY2sgPSBmYWxz
ZTsKKyAgICAgICAgdGhpcy5faW5wdXRGaWVsZC5pbmNyZW1lbnRhbCA9IHRydWU7CisgICAgICAg
IHRoaXMuX2lucHV0RmllbGQuc2V0QXR0cmlidXRlKCJyZXN1bHRzIiwgNSk7CisgICAgICAgIHRo
aXMuX2lucHV0RmllbGQuc2V0QXR0cmlidXRlKCJhdXRvc2F2ZSIsICJpbnNwZWN0b3Itc2VhcmNo
Iik7CisgICAgICAgIHRoaXMuX2lucHV0RmllbGQuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIs
IHRoaXMuX2lucHV0RmllbGRLZXlEb3duLmJpbmQodGhpcyksIGZhbHNlKTsKKyAgICAgICAgdGhp
cy5faW5wdXRGaWVsZC5hZGRFdmVudExpc3RlbmVyKCJrZXl1cCIsIHRoaXMuX2lucHV0RmllbGRL
ZXlVcC5iaW5kKHRoaXMpLCBmYWxzZSk7CisgICAgICAgIHRoaXMuX2lucHV0RmllbGQuYWRkRXZl
bnRMaXN0ZW5lcigic2VhcmNoIiwgdGhpcy5faW5wdXRGaWVsZFNlYXJjaC5iaW5kKHRoaXMpLCBm
YWxzZSk7CisgICAgICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5faW5wdXRGaWVs
ZCk7CisKKyAgICAgICAgdGhpcy5fZG9uZUJ1dHRvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImJ1dHRvbiIpOworICAgICAgICB0aGlzLl9kb25lQnV0dG9uLnRleHRDb250ZW50ID0gV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJEb25lIik7CisgICAgICAgIHRoaXMuX2RvbmVCdXR0b24uYWRkRXZl
bnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl9kb25lQnV0dG9uQ2xpY2tlZC5iaW5kKHRoaXMpKTsK
KyAgICAgICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9kb25lQnV0dG9uKTsKKwor
ICAgICAgICB0aGlzLl9udW1iZXJPZlJlc3VsdHMgPSBudWxsOworICAgICAgICB0aGlzLl9zZWFy
Y2hCYWNrd2FyZHMgPSBmYWxzZTsKKyAgICAgICAgdGhpcy5fc2VhcmNoS2V5UHJlc3NlZCA9IGZh
bHNlOworICAgICAgICB0aGlzLl9wcmV2aW91c1NlYXJjaFZhbHVlID0gIiI7CisKKyAgICAgICAg
dGhpcy5faGlkZUtleWJvYXJkU2hvcnRjdXQgPSBuZXcgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hv
cnRjdXQobnVsbCwgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuS2V5LkVzY2FwZSwgdGhp
cy5oaWRlLmJpbmQodGhpcyksIHRoaXMuX2VsZW1lbnQpOworICAgICAgICB0aGlzLl9wb3B1bGF0
ZUZpbmRLZXlib2FyZFNob3J0Y3V0ID0gbmV3IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0
KFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lk1vZGlmaWVyLkNvbW1hbmRPckNvbnRyb2ws
ICJFIiwgdGhpcy5fcG9wdWxhdGVTZWFyY2hRdWVyeUZyb21TZWxlY3Rpb24uYmluZCh0aGlzKSk7
CisgICAgICAgIHRoaXMuX3BvcHVsYXRlRmluZEtleWJvYXJkU2hvcnRjdXQuaW1wbGljaXRseVBy
ZXZlbnRzRGVmYXVsdCA9IGZhbHNlOworICAgICAgICB0aGlzLl9maW5kTmV4dEtleWJvYXJkU2hv
cnRjdXQgPSBuZXcgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQoV2ViSW5zcGVjdG9yLktl
eWJvYXJkU2hvcnRjdXQuTW9kaWZpZXIuQ29tbWFuZE9yQ29udHJvbCwgIkciLCB0aGlzLl9uZXh0
UmVzdWx0QnV0dG9uQ2xpY2tlZC5iaW5kKHRoaXMpKTsKKyAgICAgICAgdGhpcy5fZmluZFByZXZp
b3VzS2V5Ym9hcmRTaG9ydGN1dCA9IG5ldyBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dChX
ZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5Nb2RpZmllci5TaGlmdCB8IFdlYkluc3BlY3Rv
ci5LZXlib2FyZFNob3J0Y3V0Lk1vZGlmaWVyLkNvbW1hbmRPckNvbnRyb2wsICJHIiwgdGhpcy5f
cHJldmlvdXNSZXN1bHRCdXR0b25DbGlja2VkLmJpbmQodGhpcykpOworCisgICAgICAgIHRoaXMu
X2dlbmVyYXRlQnV0dG9uc0dseXBoc0lmTmVlZGVkKCk7CisgICAgfQogCiAgICAgLy8gUHVibGlj
CiAKICAgICBnZXQgZGVsZWdhdGUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2RlbGVn
YXRlOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IGRlbGVnYXRlKG5ld0RlbGVnYXRlKQogICAg
IHsKICAgICAgICAgdGhpcy5fZGVsZWdhdGUgPSBuZXdEZWxlZ2F0ZSB8fCBudWxsOwotICAgIH0s
CisgICAgfQogCiAgICAgZ2V0IGVsZW1lbnQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMu
X2VsZW1lbnQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgaW5wdXRGaWVsZCgpCiAgICAgewog
ICAgICAgICByZXR1cm4gdGhpcy5faW5wdXRGaWVsZDsKLSAgICB9LAorICAgIH0KIAogICAgIGdl
dCBzZWFyY2hRdWVyeSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5faW5wdXRGaWVsZC52
YWx1ZSB8fCAiIjsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCBzZWFyY2hRdWVyeShxdWVyeSkK
ICAgICB7CiAgICAgICAgIHRoaXMuX2lucHV0RmllbGQudmFsdWUgPSBxdWVyeSB8fCAiIjsKLSAg
ICB9LAorICAgIH0KIAogICAgIGdldCBudW1iZXJPZlJlc3VsdHMoKQogICAgIHsKICAgICAgICAg
cmV0dXJuIHRoaXMuX251bWJlck9mUmVzdWx0czsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCBu
dW1iZXJPZlJlc3VsdHMobnVtYmVyT2ZSZXN1bHRzKQogICAgIHsKQEAgLTE2MiwxNSArMTQzLDIx
IEBAIFdlYkluc3BlY3Rvci5GaW5kQmFubmVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRo
aXMuX3Jlc3VsdENvdW50TGFiZWwudGV4dENvbnRlbnQgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IjEgbWF0Y2giKTsKICAgICAgICAgZWxzZSBpZiAobnVtYmVyT2ZSZXN1bHRzID4gMSkKICAgICAg
ICAgICAgIHRoaXMuX3Jlc3VsdENvdW50TGFiZWwudGV4dENvbnRlbnQgPSBXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIiVkIG1hdGNoZXMiKS5mb3JtYXQobnVtYmVyT2ZSZXN1bHRzKTsKLSAgICB9LAor
ICAgIH0KIAogICAgIGdldCB0YXJnZXRFbGVtZW50KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0
aGlzLl90YXJnZXRFbGVtZW50OwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IHRhcmdldEVsZW1l
bnQoZWxlbWVudCkKICAgICB7CisgICAgICAgIGZ1bmN0aW9uIGRlbGF5ZWRXb3JrKCkKKyAgICAg
ICAgeworICAgICAgICAgICAgb2xkVGFyZ2V0RWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKFdlYklu
c3BlY3Rvci5GaW5kQmFubmVyLk5vVHJhbnNpdGlvblN0eWxlQ2xhc3NOYW1lKTsKKyAgICAgICAg
ICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShXZWJJbnNwZWN0b3IuRmluZEJhbm5l
ci5Ob1RyYW5zaXRpb25TdHlsZUNsYXNzTmFtZSk7CisgICAgICAgIH0KKwogICAgICAgICBpZiAo
dGhpcy5fdGFyZ2V0RWxlbWVudCkgewogICAgICAgICAgICAgdmFyIG9sZFRhcmdldEVsZW1lbnQg
PSB0aGlzLl90YXJnZXRFbGVtZW50OwogCkBAIC0xODEsMTIgKzE2OCw2IEBAIFdlYkluc3BlY3Rv
ci5GaW5kQmFubmVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xh
c3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuRmluZEJhbm5lci5Ob1RyYW5zaXRpb25TdHlsZUNsYXNz
TmFtZSk7CiAgICAgICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoV2ViSW5z
cGVjdG9yLkZpbmRCYW5uZXIuU2hvd2luZ1N0eWxlQ2xhc3NOYW1lKTsKIAotICAgICAgICAgICAg
ZnVuY3Rpb24gZGVsYXllZFdvcmsoKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIG9s
ZFRhcmdldEVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShXZWJJbnNwZWN0b3IuRmluZEJhbm5lci5O
b1RyYW5zaXRpb25TdHlsZUNsYXNzTmFtZSk7Ci0gICAgICAgICAgICAgICAgdGhpcy5fZWxlbWVu
dC5jbGFzc0xpc3QucmVtb3ZlKFdlYkluc3BlY3Rvci5GaW5kQmFubmVyLk5vVHJhbnNpdGlvblN0
eWxlQ2xhc3NOYW1lKTsKLSAgICAgICAgICAgIH0KLQogICAgICAgICAgICAgLy8gRGVsYXkgc28g
d2UgY2FuIHJlbW92ZSB0aGUgbm8gdHJhbnNpdGlvbiBzdHlsZSBjbGFzcyBhZnRlciB0aGUgb3Ro
ZXIgc3R5bGUgY2hhbmdlcyBhcmUgY29tbWl0dGVkLgogICAgICAgICAgICAgc2V0VGltZW91dChk
ZWxheWVkV29yay5iaW5kKHRoaXMpLCAwKTsKICAgICAgICAgfQpAQCAtMTk1LDE0ICsxNzYsMTQg
QEAgV2ViSW5zcGVjdG9yLkZpbmRCYW5uZXIucHJvdG90eXBlID0gewogCiAgICAgICAgIGlmICh0
aGlzLl90YXJnZXRFbGVtZW50KQogICAgICAgICAgICAgdGhpcy5fdGFyZ2V0RWxlbWVudC5jbGFz
c0xpc3QuYWRkKFdlYkluc3BlY3Rvci5GaW5kQmFubmVyLlN1cHBvcnRzRmluZEJhbm5lclN0eWxl
Q2xhc3NOYW1lKTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBzaG93aW5nKCkKICAgICB7CiAg
ICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyhXZWJJbnNwZWN0
b3IuRmluZEJhbm5lci5TaG93aW5nU3R5bGVDbGFzc05hbWUpOwotICAgIH0sCisgICAgfQogCi0g
ICAgc2hvdzogZnVuY3Rpb24oKQorICAgIHNob3coKQogICAgIHsKICAgICAgICAgY29uc29sZS5h
c3NlcnQodGhpcy5fdGFyZ2V0RWxlbWVudCk7CiAgICAgICAgIGlmICghdGhpcy5fdGFyZ2V0RWxl
bWVudCkKQEAgLTIyOCw5ICsyMDksOSBAQCBXZWJJbnNwZWN0b3IuRmluZEJhbm5lci5wcm90b3R5
cGUgPSB7CiAgICAgICAgIHNldFRpbWVvdXQoZGVsYXllZFdvcmsuYmluZCh0aGlzKSwgMCk7CiAK
ICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkZpbmRC
YW5uZXIuRXZlbnQuRGlkU2hvdyk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBoaWRlOiBmdW5jdGlv
bigpCisgICAgaGlkZSgpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl90YXJn
ZXRFbGVtZW50KTsKICAgICAgICAgaWYgKCF0aGlzLl90YXJnZXRFbGVtZW50KQpAQCAtMjQyLDI3
ICsyMjMsMjcgQEAgV2ViSW5zcGVjdG9yLkZpbmRCYW5uZXIucHJvdG90eXBlID0gewogICAgICAg
ICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoV2ViSW5zcGVjdG9yLkZpbmRCYW5uZXIu
U2hvd2luZ1N0eWxlQ2xhc3NOYW1lKTsKIAogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xp
c3RlbmVycyhXZWJJbnNwZWN0b3IuRmluZEJhbm5lci5FdmVudC5EaWRIaWRlKTsKLSAgICB9LAor
ICAgIH0KIAogICAgIC8vIFByaXZhdGUKIAotICAgIF9pbnB1dEZpZWxkS2V5RG93bjogZnVuY3Rp
b24oZXZlbnQpCisgICAgX2lucHV0RmllbGRLZXlEb3duKGV2ZW50KQogICAgIHsKICAgICAgICAg
aWYgKGV2ZW50LmtleUlkZW50aWZpZXIgPT09ICJTaGlmdCIpCiAgICAgICAgICAgICB0aGlzLl9z
ZWFyY2hCYWNrd2FyZHMgPSB0cnVlOwogICAgICAgICBlbHNlIGlmIChldmVudC5rZXlJZGVudGlm
aWVyID09PSAiRW50ZXIiKQogICAgICAgICAgICAgdGhpcy5fc2VhcmNoS2V5UHJlc3NlZCA9IHRy
dWU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfaW5wdXRGaWVsZEtleVVwOiBmdW5jdGlvbihldmVu
dCkKKyAgICBfaW5wdXRGaWVsZEtleVVwKGV2ZW50KQogICAgIHsKICAgICAgICAgaWYgKGV2ZW50
LmtleUlkZW50aWZpZXIgPT09ICJTaGlmdCIpCiAgICAgICAgICAgICB0aGlzLl9zZWFyY2hCYWNr
d2FyZHMgPSBmYWxzZTsKICAgICAgICAgZWxzZSBpZiAoZXZlbnQua2V5SWRlbnRpZmllciA9PT0g
IkVudGVyIikKICAgICAgICAgICAgIHRoaXMuX3NlYXJjaEtleVByZXNzZWQgPSBmYWxzZTsKLSAg
ICB9LAorICAgIH0KIAotICAgIF9pbnB1dEZpZWxkU2VhcmNoOiBmdW5jdGlvbihldmVudCkKKyAg
ICBfaW5wdXRGaWVsZFNlYXJjaChldmVudCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9pbnB1
dEZpZWxkLnZhbHVlKSB7CiAgICAgICAgICAgICBpZiAodGhpcy5fcHJldmlvdXNTZWFyY2hWYWx1
ZSAhPT0gdGhpcy5zZWFyY2hRdWVyeSkgewpAQCAtMjg1LDkgKzI2Niw5IEBAIFdlYkluc3BlY3Rv
ci5GaW5kQmFubmVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogCiAgICAgICAgIHRoaXMuX3By
ZXZpb3VzU2VhcmNoVmFsdWUgPSB0aGlzLnNlYXJjaFF1ZXJ5OwotICAgIH0sCisgICAgfQogCi0g
ICAgX3BvcHVsYXRlU2VhcmNoUXVlcnlGcm9tU2VsZWN0aW9uOiBmdW5jdGlvbihldmVudCkKKyAg
ICBfcG9wdWxhdGVTZWFyY2hRdWVyeUZyb21TZWxlY3Rpb24oZXZlbnQpCiAgICAgewogICAgICAg
ICBpZiAodGhpcy5fZGVsZWdhdGUgJiYgdHlwZW9mIHRoaXMuX2RlbGVnYXRlLmZpbmRCYW5uZXJT
ZWFyY2hRdWVyeUZvclNlbGVjdGlvbiA9PT0gImZ1bmN0aW9uIikgewogICAgICAgICAgICAgdmFy
IHF1ZXJ5ID0gdGhpcy5fZGVsZWdhdGUuZmluZEJhbm5lclNlYXJjaFF1ZXJ5Rm9yU2VsZWN0aW9u
KHRoaXMpOwpAQCAtMjk4LDI2ICsyNzksMjYgQEAgV2ViSW5zcGVjdG9yLkZpbmRCYW5uZXIucHJv
dG90eXBlID0gewogICAgICAgICAgICAgICAgICAgICB0aGlzLl9kZWxlZ2F0ZS5maW5kQmFubmVy
UGVyZm9ybVNlYXJjaCh0aGlzLCB0aGlzLnNlYXJjaFF1ZXJ5KTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQotICAgIH0sCisgICAgfQogCi0gICAgX3ByZXZpb3VzUmVzdWx0QnV0dG9uQ2xpY2tl
ZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX3ByZXZpb3VzUmVzdWx0QnV0dG9uQ2xpY2tlZChldmVu
dCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9kZWxlZ2F0ZSAmJiB0eXBlb2YgdGhpcy5fZGVs
ZWdhdGUuZmluZEJhbm5lclJldmVhbFByZXZpb3VzUmVzdWx0ID09PSAiZnVuY3Rpb24iKQogICAg
ICAgICAgICAgdGhpcy5fZGVsZWdhdGUuZmluZEJhbm5lclJldmVhbFByZXZpb3VzUmVzdWx0KHRo
aXMpOwotICAgIH0sCisgICAgfQogCi0gICAgX25leHRSZXN1bHRCdXR0b25DbGlja2VkOiBmdW5j
dGlvbihldmVudCkKKyAgICBfbmV4dFJlc3VsdEJ1dHRvbkNsaWNrZWQoZXZlbnQpCiAgICAgewog
ICAgICAgICBpZiAodGhpcy5fZGVsZWdhdGUgJiYgdHlwZW9mIHRoaXMuX2RlbGVnYXRlLmZpbmRC
YW5uZXJSZXZlYWxOZXh0UmVzdWx0ID09PSAiZnVuY3Rpb24iKQogICAgICAgICAgICAgdGhpcy5f
ZGVsZWdhdGUuZmluZEJhbm5lclJldmVhbE5leHRSZXN1bHQodGhpcyk7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBfZG9uZUJ1dHRvbkNsaWNrZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9kb25lQnV0
dG9uQ2xpY2tlZChldmVudCkKICAgICB7CiAgICAgICAgIHRoaXMuaGlkZSgpOwotICAgIH0sCisg
ICAgfQogCi0gICAgX2dlbmVyYXRlQnV0dG9uc0dseXBoc0lmTmVlZGVkOiBmdW5jdGlvbigpCisg
ICAgX2dlbmVyYXRlQnV0dG9uc0dseXBoc0lmTmVlZGVkKCkKICAgICB7CiAgICAgICAgIGlmIChX
ZWJJbnNwZWN0b3IuRmluZEJhbm5lci5fZ2VuZXJhdGVkQnV0dG9uc0dseXBocykKICAgICAgICAg
ICAgIHJldHVybjsKQEAgLTM0Miw0ICszMjMsMTYgQEAgV2ViSW5zcGVjdG9yLkZpbmRCYW5uZXIu
cHJvdG90eXBlID0gewogICAgIH0KIH07CiAKLVdlYkluc3BlY3Rvci5GaW5kQmFubmVyLnByb3Rv
dHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZTsKK1dlYkluc3Bl
Y3Rvci5GaW5kQmFubmVyLlN1cHBvcnRzRmluZEJhbm5lclN0eWxlQ2xhc3NOYW1lID0gInN1cHBv
cnRzLWZpbmQtYmFubmVyIjsKK1dlYkluc3BlY3Rvci5GaW5kQmFubmVyLlNob3dpbmdGaW5kQmFu
bmVyU3R5bGVDbGFzc05hbWUgPSAic2hvd2luZy1maW5kLWJhbm5lciI7CitXZWJJbnNwZWN0b3Iu
RmluZEJhbm5lci5Ob1RyYW5zaXRpb25TdHlsZUNsYXNzTmFtZSA9ICJuby1maW5kLWJhbm5lci10
cmFuc2l0aW9uIjsKK1dlYkluc3BlY3Rvci5GaW5kQmFubmVyLlNob3dpbmdTdHlsZUNsYXNzTmFt
ZSA9ICJzaG93aW5nIjsKK1dlYkluc3BlY3Rvci5GaW5kQmFubmVyLlNlZ21lbnRlZEJ1dHRvblN0
eWxlQ2xhc3NOYW1lID0gInNlZ21lbnRlZCI7CitXZWJJbnNwZWN0b3IuRmluZEJhbm5lci5MZWZ0
U2VnbWVudEJ1dHRvblN0eWxlQ2xhc3NOYW1lID0gImxlZnQiOworV2ViSW5zcGVjdG9yLkZpbmRC
YW5uZXIuUmlnaHRTZWdtZW50QnV0dG9uU3R5bGVDbGFzc05hbWUgPSAicmlnaHQiOworV2ViSW5z
cGVjdG9yLkZpbmRCYW5uZXIuU2VnbWVudEdseXBoU3R5bGVDbGFzc05hbWUgPSAiZ2x5cGgiOwor
CitXZWJJbnNwZWN0b3IuRmluZEJhbm5lci5FdmVudCA9IHsKKyAgICBEaWRTaG93OiAiZmluZC1i
YW5uZXItZGlkLXNob3ciLAorICAgIERpZEhpZGU6ICJmaW5kLWJhbm5lci1kaWQtaGlkZSIKK307
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9H
ZW5lcmFsVHJlZUVsZW1lbnRQYXRoQ29tcG9uZW50LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvR2VuZXJhbFRyZWVFbGVtZW50UGF0aENvbXBvbmVudC5qcwpp
bmRleCBkYjRhOTViOTJmZTM5NDdlYjgzNDUyZGE1NDcyOGE4MzI2YzJmN2JmLi40YTFkZTA1ZWI2
ZWYyZGZkMWY5ZWRkMTY5NzQwMGJmMDFmNGNmZmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9HZW5lcmFsVHJlZUVsZW1lbnRQYXRoQ29tcG9u
ZW50LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0dl
bmVyYWxUcmVlRWxlbWVudFBhdGhDb21wb25lbnQuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDIyICsyMywyMiBAQAogICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5HZW5lcmFs
VHJlZUVsZW1lbnRQYXRoQ29tcG9uZW50ID0gZnVuY3Rpb24oZ2VuZXJhbFRyZWVFbGVtZW50LCBy
ZXByZXNlbnRlZE9iamVjdCkgewotICAgIFdlYkluc3BlY3Rvci5IaWVyYXJjaGljYWxQYXRoQ29t
cG9uZW50LmNhbGwodGhpcywgZ2VuZXJhbFRyZWVFbGVtZW50Lm1haW5UaXRsZSwgZ2VuZXJhbFRy
ZWVFbGVtZW50LmNsYXNzTmFtZXMsIHJlcHJlc2VudGVkT2JqZWN0IHx8IGdlbmVyYWxUcmVlRWxl
bWVudC5yZXByZXNlbnRlZE9iamVjdCk7Ci0KLSAgICB0aGlzLl9nZW5lcmFsVHJlZUVsZW1lbnQg
PSBnZW5lcmFsVHJlZUVsZW1lbnQ7Ci0gICAgZ2VuZXJhbFRyZWVFbGVtZW50LmFkZEV2ZW50TGlz
dGVuZXIoV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudC5FdmVudC5NYWluVGl0bGVEaWRD
aGFuZ2UsIHRoaXMuX21haW5UaXRsZURpZENoYW5nZSwgdGhpcyk7Ci19OworV2ViSW5zcGVjdG9y
LkdlbmVyYWxUcmVlRWxlbWVudFBhdGhDb21wb25lbnQgPSBjbGFzcyBHZW5lcmFsVHJlZUVsZW1l
bnRQYXRoQ29tcG9uZW50IGV4dGVuZHMgV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhDb21w
b25lbnQKK3sKKyAgICBjb25zdHJ1Y3RvcihnZW5lcmFsVHJlZUVsZW1lbnQsIHJlcHJlc2VudGVk
T2JqZWN0KQorICAgIHsKKyAgICAgICAgc3VwZXIoZ2VuZXJhbFRyZWVFbGVtZW50Lm1haW5UaXRs
ZSwgZ2VuZXJhbFRyZWVFbGVtZW50LmNsYXNzTmFtZXMsIHJlcHJlc2VudGVkT2JqZWN0IHx8IGdl
bmVyYWxUcmVlRWxlbWVudC5yZXByZXNlbnRlZE9iamVjdCk7CiAKLVdlYkluc3BlY3Rvci5HZW5l
cmFsVHJlZUVsZW1lbnRQYXRoQ29tcG9uZW50LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3Rv
cjogV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudFBhdGhDb21wb25lbnQsCisgICAgICAg
IHRoaXMuX2dlbmVyYWxUcmVlRWxlbWVudCA9IGdlbmVyYWxUcmVlRWxlbWVudDsKKyAgICAgICAg
Z2VuZXJhbFRyZWVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkdlbmVyYWxU
cmVlRWxlbWVudC5FdmVudC5NYWluVGl0bGVEaWRDaGFuZ2UsIHRoaXMuX21haW5UaXRsZURpZENo
YW5nZSwgdGhpcyk7CisgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgZ2VuZXJhbFRy
ZWVFbGVtZW50KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9nZW5lcmFsVHJlZUVsZW1l
bnQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgcHJldmlvdXNTaWJsaW5nKCkKICAgICB7CkBA
IC01MCw3ICs1MCw3IEBAIFdlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnRQYXRoQ29tcG9u
ZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybiBudWxsOwogCiAgICAgICAgIHJl
dHVybiBuZXcgV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudFBhdGhDb21wb25lbnQocHJl
dmlvdXNTaWJsaW5nKTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBuZXh0U2libGluZygpCiAg
ICAgewpAQCAtNjIsMTQgKzYyLDEyIEBAIFdlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnRQ
YXRoQ29tcG9uZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybiBudWxsOwogCiAg
ICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudFBhdGhDb21w
b25lbnQobmV4dFNpYmxpbmcpOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJpdmF0ZQogCi0g
ICAgX21haW5UaXRsZURpZENoYW5nZTogZnVuY3Rpb24oZXZlbnQpCisgICAgX21haW5UaXRsZURp
ZENoYW5nZShldmVudCkKICAgICB7CiAgICAgICAgIHRoaXMuZGlzcGxheU5hbWUgPSB0aGlzLl9n
ZW5lcmFsVHJlZUVsZW1lbnQubWFpblRpdGxlOwogICAgIH0KIH07Ci0KLVdlYkluc3BlY3Rvci5H
ZW5lcmFsVHJlZUVsZW1lbnRQYXRoQ29tcG9uZW50LnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJ
bnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0aENvbXBvbmVudC5wcm90b3R5cGU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Hb1RvTGluZURpYWxv
Zy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0dvVG9MaW5l
RGlhbG9nLmpzCmluZGV4IGY1ZjdkNmQ0MWUxMzk4YTNjNjJjMWMzN2I2MmIzYzU0YTAxYThkZDQu
LjAyYmZjYzJkYTJiMDliZThkOTRkMDM0MjNmMGY0N2YxMmM2N2MzNjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0dvVG9MaW5lRGlhbG9nLmpz
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0dvVG9MaW5l
RGlhbG9nLmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0yMyw1MCArMjMsNDMgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuR29Ub0xpbmVEaWFsb2cgPSBmdW5jdGlvbigpCitX
ZWJJbnNwZWN0b3IuR29Ub0xpbmVEaWFsb2cgPSBjbGFzcyBHb1RvTGluZURpYWxvZyBleHRlbmRz
IFdlYkluc3BlY3Rvci5PYmplY3QKIHsKLSAgICAvLyBGSVhNRTogQ29udmVydCB0aGlzIHRvIGEg
V2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcywgYW5kIGNhbGwgc3VwZXIoKS4KLSAgICAvLyBX
ZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7Ci0KLSAgICB0aGlzLl9lbGVtZW50ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgdGhpcy5fZWxlbWVudC5jbGFzc05hbWUg
PSBXZWJJbnNwZWN0b3IuR29Ub0xpbmVEaWFsb2cuU3R5bGVDbGFzc05hbWU7Ci0KLSAgICB2YXIg
ZmllbGQgPSB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImRpdiIpKTsKLQotICAgIHRoaXMuX2lucHV0ID0gZmllbGQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiaW5wdXQiKSk7Ci0gICAgdGhpcy5faW5wdXQudHlwZSA9ICJ0ZXh0IjsK
LSAgICB0aGlzLl9pbnB1dC5wbGFjZWhvbGRlciA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiTGlu
ZSBOdW1iZXIiKTsKLSAgICB0aGlzLl9pbnB1dC5zcGVsbGNoZWNrID0gZmFsc2U7CisgICAgY29u
c3RydWN0b3IoKQorICAgIHsKKyAgICAgICAgc3VwZXIoKTsKIAotICAgIHRoaXMuX2NsZWFySWNv
biA9IGZpZWxkLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImltZyIpKTsKKyAg
ICAgICAgdGhpcy5fZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAg
ICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTmFtZSA9ICJnby10by1saW5lLWRpYWxvZyI7CiAKLSAg
ICB0aGlzLl9pbnB1dC5hZGRFdmVudExpc3RlbmVyKCJpbnB1dCIsIHRoaXMpOwotICAgIHRoaXMu
X2lucHV0LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLCB0aGlzKTsKLSAgICB0aGlzLl9pbnB1
dC5hZGRFdmVudExpc3RlbmVyKCJibHVyIiwgdGhpcyk7Ci0gICAgdGhpcy5fY2xlYXJJY29uLmFk
ZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsIHRoaXMpOwotICAgIHRoaXMuX2NsZWFySWNvbi5h
ZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMpOworICAgICAgICB2YXIgZmllbGQgPSB0aGlz
Ll9lbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpKTsKIAot
ICAgIHRoaXMuX2Rpc21pc3NpbmcgPSBmYWxzZTsKLX07CisgICAgICAgIHRoaXMuX2lucHV0ID0g
ZmllbGQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKSk7CisgICAg
ICAgIHRoaXMuX2lucHV0LnR5cGUgPSAidGV4dCI7CisgICAgICAgIHRoaXMuX2lucHV0LnBsYWNl
aG9sZGVyID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJMaW5lIE51bWJlciIpOworICAgICAgICB0
aGlzLl9pbnB1dC5zcGVsbGNoZWNrID0gZmFsc2U7CiAKLVdlYkluc3BlY3Rvci5Hb1RvTGluZURp
YWxvZy5TdHlsZUNsYXNzTmFtZSA9ICJnby10by1saW5lLWRpYWxvZyI7Ci1XZWJJbnNwZWN0b3Iu
R29Ub0xpbmVEaWFsb2cuTm9uRW1wdHlDbGFzc05hbWUgPSAibm9uLWVtcHR5IjsKKyAgICAgICAg
dGhpcy5fY2xlYXJJY29uID0gZmllbGQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiaW1nIikpOwogCi1XZWJJbnNwZWN0b3IuR29Ub0xpbmVEaWFsb2cucHJvdG90eXBlID0gewot
ICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuR29Ub0xpbmVEaWFsb2csCisgICAgICAgIHRo
aXMuX2lucHV0LmFkZEV2ZW50TGlzdGVuZXIoImlucHV0IiwgdGhpcyk7CisgICAgICAgIHRoaXMu
X2lucHV0LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLCB0aGlzKTsKKyAgICAgICAgdGhpcy5f
aW5wdXQuYWRkRXZlbnRMaXN0ZW5lcigiYmx1ciIsIHRoaXMpOworICAgICAgICB0aGlzLl9jbGVh
ckljb24uYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwgdGhpcyk7CisgICAgICAgIHRoaXMu
X2NsZWFySWNvbi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMpOwogCi0gICAgX19wcm90
b19fOiBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZSwKKyAgICAgICAgdGhpcy5fZGlzbWlz
c2luZyA9IGZhbHNlOworICAgIH0KIAogICAgIC8vIFB1YmxpYwogCi0gICAgcHJlc2VudDogZnVu
Y3Rpb24ocGFyZW50KQorICAgIHByZXNlbnQocGFyZW50KQogICAgIHsKICAgICAgICAgcGFyZW50
LmFwcGVuZENoaWxkKHRoaXMuX2VsZW1lbnQpOwogICAgICAgICB0aGlzLl9pbnB1dC5mb2N1cygp
OwogICAgICAgICB0aGlzLl9jbGVhcigpOwotICAgIH0sCisgICAgfQogCi0gICAgZGlzbWlzczog
ZnVuY3Rpb24oKQorICAgIGRpc21pc3MoKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX2Rpc21p
c3NpbmcpCiAgICAgICAgICAgICByZXR1cm47CkBAIC04MywxMSArNzYsMTEgQEAgV2ViSW5zcGVj
dG9yLkdvVG9MaW5lRGlhbG9nLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuZGVsZWdh
dGUuZ29Ub0xpbmVEaWFsb2dXYXNEaXNtaXNzZWQodGhpcyk7CiAKICAgICAgICAgdGhpcy5fZGlz
bWlzc2luZyA9IGZhbHNlOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJvdGVjdGVkCiAKLSAg
ICBoYW5kbGVFdmVudDogZnVuY3Rpb24oZXZlbnQpCisgICAgaGFuZGxlRXZlbnQoZXZlbnQpCiAg
ICAgewogICAgICAgICBzd2l0Y2ggKGV2ZW50LnR5cGUpIHsKICAgICAgICAgY2FzZSAiaW5wdXQi
OgpAQCAtMTA2LDI1ICs5OSwyNyBAQCBXZWJJbnNwZWN0b3IuR29Ub0xpbmVEaWFsb2cucHJvdG90
eXBlID0gewogICAgICAgICAgICAgdGhpcy5faGFuZGxlQ2xpY2tFdmVudChldmVudCk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJpdmF0
ZQogCi0gICAgX2hhbmRsZUlucHV0RXZlbnQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9oYW5kbGVJ
bnB1dEV2ZW50KGV2ZW50KQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX2lucHV0LnZhbHVlID09
PSAiIikKICAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShXZWJJbnNw
ZWN0b3IuR29Ub0xpbmVEaWFsb2cuTm9uRW1wdHlDbGFzc05hbWUpOwogICAgICAgICBlbHNlCiAg
ICAgICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLkdvVG9M
aW5lRGlhbG9nLk5vbkVtcHR5Q2xhc3NOYW1lKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9oYW5k
bGVLZXlkb3duRXZlbnQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9oYW5kbGVLZXlkb3duRXZlbnQo
ZXZlbnQpCiAgICAgewogICAgICAgICBpZiAoZXZlbnQua2V5Q29kZSA9PT0gV2ViSW5zcGVjdG9y
LktleWJvYXJkU2hvcnRjdXQuS2V5LkVzY2FwZS5rZXlDb2RlKSB7CiAgICAgICAgICAgICBpZiAo
dGhpcy5faW5wdXQudmFsdWUgPT09ICIiKQogICAgICAgICAgICAgICAgIHRoaXMuZGlzbWlzcygp
OwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHRoaXMuX2NsZWFyKCk7CisKKyAg
ICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgIH0gZWxzZSBpZiAoZXZl
bnQua2V5Q29kZSA9PT0gV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuS2V5LkVudGVyLmtl
eUNvZGUpIHsKICAgICAgICAgICAgIHZhciB2YWx1ZSA9IHBhcnNlSW50KHRoaXMuX2lucHV0LnZh
bHVlLCAxMCk7CiAKQEAgLTEzOSwzMSArMTM0LDM0IEBAIFdlYkluc3BlY3Rvci5Hb1RvTGluZURp
YWxvZy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIHRoaXMuX2lu
cHV0LnNlbGVjdCgpOworCiAgICAgICAgICAgICBJbnNwZWN0b3JGcm9udGVuZEhvc3QuYmVlcCgp
OwogICAgICAgICB9Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfaGFuZGxlQmx1ckV2ZW50OiBmdW5j
dGlvbihldmVudCkKKyAgICBfaGFuZGxlQmx1ckV2ZW50KGV2ZW50KQogICAgIHsKICAgICAgICAg
dGhpcy5kaXNtaXNzKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfaGFuZGxlTW91c2Vkb3duRXZl
bnQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9oYW5kbGVNb3VzZWRvd25FdmVudChldmVudCkKICAg
ICB7CiAgICAgICAgIHRoaXMuX2lucHV0LnNlbGVjdCgpOwogICAgICAgICAvLyBUaGlzIGVuc3Vy
ZXMgd2UgZG9uJ3QgZ2V0IGEgImJsdXIiIGV2ZW50IHRyaWdnZXJlZCBmb3IgdGhlIHRleHQgZmll
bGQKICAgICAgICAgLy8gd2hpY2ggd291bGQgZW5kIHVwIGRpbWlzc2luZyB0aGUgZGlhbG9nLCB3
aGljaCBpcyBub3QgdGhlIGludGVudC4KICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsK
LSAgICB9LAorICAgIH0KIAotICAgIF9oYW5kbGVDbGlja0V2ZW50OiBmdW5jdGlvbihldmVudCkK
KyAgICBfaGFuZGxlQ2xpY2tFdmVudChldmVudCkKICAgICB7CiAgICAgICAgIHRoaXMuX2NsZWFy
KCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfY2xlYXI6IGZ1bmN0aW9uKCkKKyAgICBfY2xlYXIo
KQogICAgIHsKICAgICAgICAgdGhpcy5faW5wdXQudmFsdWUgPSAiIjsKICAgICAgICAgdGhpcy5f
ZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKFdlYkluc3BlY3Rvci5Hb1RvTGluZURpYWxvZy5Ob25F
bXB0eUNsYXNzTmFtZSk7CiAgICAgfQogfTsKKworV2ViSW5zcGVjdG9yLkdvVG9MaW5lRGlhbG9n
Lk5vbkVtcHR5Q2xhc3NOYW1lID0gIm5vbi1lbXB0eSI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9HcmFkaWVudFNsaWRlci5qcyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0dyYWRpZW50U2xpZGVyLmpzCmlu
ZGV4IGRkNDEzNzNmYjZiMzBhZTg5MmM4YjFlNzNhZmYxMjI5OWY4N2RlZmMuLmNjNmJmMzQ5NGEw
ZDJlMGRjOTZiY2M5NWM0YThjYzUzZjMxODU3NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0dyYWRpZW50U2xpZGVyLmpzCisrKyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0dyYWRpZW50U2xpZGVyLmpzCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuICBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTUgQXBwbGUgSW5jLiAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MjYsMzAgKzI2LDIzIEBACiAgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5HcmFkaWVu
dFNsaWRlciA9IGZ1bmN0aW9uKGRlbGVnYXRlKQorV2ViSW5zcGVjdG9yLkdyYWRpZW50U2xpZGVy
ID0gY2xhc3MgR3JhZGllbnRTbGlkZXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiB7Ci0g
ICAgdGhpcy5kZWxlZ2F0ZSA9IGRlbGVnYXRlOwotICAgIAotICAgIHRoaXMuX2VsZW1lbnQgPSBu
dWxsOwotICAgIHRoaXMuX3N0b3BzID0gW107Ci0gICAgdGhpcy5fa25vYnMgPSBbXTsKLSAgICAK
LSAgICB0aGlzLl9zZWxlY3RlZEtub2IgPSBudWxsOwotICAgIHRoaXMuX2NhbnZhcyA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpOworICAgIGNvbnN0cnVjdG9yKGRlbGVnYXRlKQor
ICAgIHsKKyAgICAgICAgc3VwZXIoKTsKIAotICAgIHRoaXMuX2tleWJvYXJkU2hvcnRjdXRFc2Mg
PSBuZXcgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQobnVsbCwgV2ViSW5zcGVjdG9yLktl
eWJvYXJkU2hvcnRjdXQuS2V5LkVzY2FwZSk7Ci19CisgICAgICAgIHRoaXMuZGVsZWdhdGUgPSBk
ZWxlZ2F0ZTsKIAotV2ViSW5zcGVjdG9yLkdyYWRpZW50U2xpZGVyLldpZHRoID0gMjM4OwotV2Vi
SW5zcGVjdG9yLkdyYWRpZW50U2xpZGVyLkhlaWdodCA9IDE5OworICAgICAgICB0aGlzLl9lbGVt
ZW50ID0gbnVsbDsKKyAgICAgICAgdGhpcy5fc3RvcHMgPSBbXTsKKyAgICAgICAgdGhpcy5fa25v
YnMgPSBbXTsKIAotV2ViSW5zcGVjdG9yLkdyYWRpZW50U2xpZGVyLlN0eWxlQ2xhc3NOYW1lID0g
ImdyYWRpZW50LXNsaWRlciI7Ci1XZWJJbnNwZWN0b3IuR3JhZGllbnRTbGlkZXIuQWRkQXJlYUNs
YXNzTmFtZSA9ICJhZGQtYXJlYSI7Ci1XZWJJbnNwZWN0b3IuR3JhZGllbnRTbGlkZXIuRGV0YWNo
aW5nQ2xhc3NOYW1lID0gImRldGFjaGluZyI7Ci1XZWJJbnNwZWN0b3IuR3JhZGllbnRTbGlkZXIu
U2hhZG93Q2xhc3NOYW1lID0gInNoYWRvdyI7CisgICAgICAgIHRoaXMuX3NlbGVjdGVkS25vYiA9
IG51bGw7CisgICAgICAgIHRoaXMuX2NhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNh
bnZhcyIpOwogCi1XZWJJbnNwZWN0b3IuR3JhZGllbnRTbGlkZXIucHJvdG90eXBlID0gewotICAg
IGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuR3JhZGllbnRTbGlkZXIsCisgICAgICAgIHRoaXMu
X2tleWJvYXJkU2hvcnRjdXRFc2MgPSBuZXcgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQo
bnVsbCwgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuS2V5LkVzY2FwZSk7CisgICAgfQog
CiAgICAgLy8gUHVibGljCiAKQEAgLTU3LDkgKzUwLDkgQEAgV2ViSW5zcGVjdG9yLkdyYWRpZW50
U2xpZGVyLnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fZWxlbWVudCkg
ewogICAgICAgICAgICAgdGhpcy5fZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRp
diIpOwotICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc05hbWUgPSBXZWJJbnNwZWN0b3Iu
R3JhZGllbnRTbGlkZXIuU3R5bGVDbGFzc05hbWU7CisgICAgICAgICAgICB0aGlzLl9lbGVtZW50
LmNsYXNzTmFtZSA9ICJncmFkaWVudC1zbGlkZXIiOwogICAgICAgICAgICAgdGhpcy5fZWxlbWVu
dC5hcHBlbmRDaGlsZCh0aGlzLl9jYW52YXMpOwotICAgICAgICAgICAgCisKICAgICAgICAgICAg
IHRoaXMuX2FkZEFyZWEgPSB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImRpdiIpKTsKICAgICAgICAgICAgIHRoaXMuX2FkZEFyZWEuYWRkRXZlbnRMaXN0
ZW5lcigibW91c2VvdmVyIiwgdGhpcyk7CiAgICAgICAgICAgICB0aGlzLl9hZGRBcmVhLmFkZEV2
ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIsIHRoaXMpOwpAQCAtNjgsMjggKzYxLDI4IEBAIFdlYklu
c3BlY3Rvci5HcmFkaWVudFNsaWRlci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9h
ZGRBcmVhLmNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5HcmFkaWVudFNsaWRlci5BZGRBcmVhQ2xh
c3NOYW1lOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50OwotICAgIH0s
CisgICAgfQogCiAgICAgZ2V0IHN0b3BzKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9z
dG9wczsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCBzdG9wcyhzdG9wcykKICAgICB7CiAgICAg
ICAgIHRoaXMuX3N0b3BzID0gc3RvcHM7CiAKICAgICAgICAgdGhpcy5fdXBkYXRlU3RvcHMoKTsK
LSAgICB9LAorICAgIH0KIAogICAgIGdldCBzZWxlY3RlZFN0b3AoKQogICAgIHsKICAgICAgICAg
cmV0dXJuIHRoaXMuX3NlbGVjdGVkS25vYiA/IHRoaXMuX3NlbGVjdGVkS25vYi5zdG9wIDogbnVs
bDsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByb3RlY3RlZAogCi0gICAgaGFuZGxlRXZlbnQ6
IGZ1bmN0aW9uKGV2ZW50KQorICAgIGhhbmRsZUV2ZW50KGV2ZW50KQogICAgIHsKICAgICAgICAg
c3dpdGNoIChldmVudC50eXBlKSB7CiAgICAgICAgIGNhc2UgIm1vdXNlb3ZlciI6CkBAIC0xMDUs
OSArOTgsOSBAQCBXZWJJbnNwZWN0b3IuR3JhZGllbnRTbGlkZXIucHJvdG90eXBlID0gewogICAg
ICAgICAgICAgdGhpcy5faGFuZGxlQ2xpY2soZXZlbnQpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KLSAgICB9LAorICAgIH0KIAotICAgIGhhbmRsZUtleWRvd25FdmVudDogZnVuY3Rp
b24oZXZlbnQpCisgICAgaGFuZGxlS2V5ZG93bkV2ZW50KGV2ZW50KQogICAgIHsKICAgICAgICAg
aWYgKCF0aGlzLl9rZXlib2FyZFNob3J0Y3V0RXNjLm1hdGNoZXNFdmVudChldmVudCkgfHwgIXRo
aXMuX3NlbGVjdGVkS25vYiB8fCAhdGhpcy5fc2VsZWN0ZWRLbm9iLnNlbGVjdGVkKQogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTE1LDIxICsxMDgsMjEgQEAgV2ViSW5zcGVjdG9yLkdy
YWRpZW50U2xpZGVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fc2VsZWN0ZWRLbm9iLnNl
bGVjdGVkID0gZmFsc2U7CiAKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBrbm9iWERpZENoYW5nZTogZnVuY3Rpb24oa25vYikKKyAgICBrbm9iWERpZENoYW5nZShr
bm9iKQogICAgIHsKICAgICAgICAga25vYi5zdG9wLm9mZnNldCA9IGtub2IueCAvIFdlYkluc3Bl
Y3Rvci5HcmFkaWVudFNsaWRlci5XaWR0aDsKICAgICAgICAgdGhpcy5fc29ydFN0b3BzKCk7CiAg
ICAgICAgIHRoaXMuX3VwZGF0ZUNhbnZhcygpOwotICAgIH0sCisgICAgfQogCi0gICAga25vYkNh
bkRldGFjaDogZnVuY3Rpb24oa25vYikKKyAgICBrbm9iQ2FuRGV0YWNoKGtub2IpCiAgICAgewog
ICAgICAgICByZXR1cm4gdGhpcy5fa25vYnMubGVuZ3RoID4gMjsKLSAgICB9LAorICAgIH0KIAot
ICAgIGtub2JXaWxsRGV0YWNoOiBmdW5jdGlvbihrbm9iKQorICAgIGtub2JXaWxsRGV0YWNoKGtu
b2IpCiAgICAgewogICAgICAgICBrbm9iLmVsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0
b3IuR3JhZGllbnRTbGlkZXIuRGV0YWNoaW5nQ2xhc3NOYW1lKTsKICAgICAgICAgCkBAIC0xMzcs
OSArMTMwLDkgQEAgV2ViSW5zcGVjdG9yLkdyYWRpZW50U2xpZGVyLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgdGhpcy5fa25vYnMucmVtb3ZlKGtub2IpOwogICAgICAgICB0aGlzLl9zb3J0U3RvcHMo
KTsKICAgICAgICAgdGhpcy5fdXBkYXRlQ2FudmFzKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBr
bm9iU2VsZWN0aW9uQ2hhbmdlZDogZnVuY3Rpb24oa25vYikKKyAgICBrbm9iU2VsZWN0aW9uQ2hh
bmdlZChrbm9iKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGVkS25vYiAmJiB0aGlz
Ll9zZWxlY3RlZEtub2IgIT09IGtub2IgJiYga25vYi5zZWxlY3RlZCkKICAgICAgICAgICAgIHRo
aXMuX3NlbGVjdGVkS25vYi5zZWxlY3RlZCA9IGZhbHNlOwpAQCAtMTUzLDMwICsxNDYsMzAgQEAg
V2ViSW5zcGVjdG9yLkdyYWRpZW50U2xpZGVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIFdl
Ykluc3BlY3Rvci5hZGRXaW5kb3dLZXlkb3duTGlzdGVuZXIodGhpcyk7CiAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5yZW1vdmVXaW5kb3dLZXlkb3duTGlzdGVuZXIodGhp
cyk7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcml2YXRlCiAKLSAgICBfaGFuZGxlTW91c2Vv
dmVyOiBmdW5jdGlvbihldmVudCkKKyAgICBfaGFuZGxlTW91c2VvdmVyKGV2ZW50KQogICAgIHsK
ICAgICAgICAgdGhpcy5fdXBkYXRlU2hhZG93S25vYihldmVudCk7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBfaGFuZGxlTW91c2Vtb3ZlOiBmdW5jdGlvbihldmVudCkKKyAgICBfaGFuZGxlTW91c2Vt
b3ZlKGV2ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5fdXBkYXRlU2hhZG93S25vYihldmVudCk7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfaGFuZGxlTW91c2VvdXQ6IGZ1bmN0aW9uKGV2ZW50KQor
ICAgIF9oYW5kbGVNb3VzZW91dChldmVudCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fc2hh
ZG93S25vYikKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICB0aGlzLl9zaGFkb3dLbm9i
LmVsZW1lbnQucmVtb3ZlKCk7CiAgICAgICAgIGRlbGV0ZSB0aGlzLl9zaGFkb3dLbm9iOwotICAg
IH0sCisgICAgfQogCi0gICAgX2hhbmRsZUNsaWNrOiBmdW5jdGlvbihldmVudCkKKyAgICBfaGFu
ZGxlQ2xpY2soZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLl91cGRhdGVTaGFkb3dLbm9iKGV2
ZW50KTsKIApAQCAtMTkyLDkgKzE4NSw5IEBAIFdlYkluc3BlY3Rvci5HcmFkaWVudFNsaWRlci5w
cm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2tub2JzW3RoaXMuX3N0b3BzLmluZGV4T2Yoc3Rv
cCldLnNlbGVjdGVkID0gdHJ1ZTsKIAogICAgICAgICBkZWxldGUgdGhpcy5fc2hhZG93S25vYjsK
LSAgICB9LAorICAgIH0KIAotICAgIF91cGRhdGVTaGFkb3dLbm9iOiBmdW5jdGlvbihldmVudCkK
KyAgICBfdXBkYXRlU2hhZG93S25vYihldmVudCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5f
c2hhZG93S25vYikgewogICAgICAgICAgICAgdGhpcy5fc2hhZG93S25vYiA9IG5ldyBXZWJJbnNw
ZWN0b3IuR3JhZGllbnRTbGlkZXJLbm9iKHRoaXMpOwpAQCAtMjA2LDIyICsxOTksMjIgQEAgV2Vi
SW5zcGVjdG9yLkdyYWRpZW50U2xpZGVyLnByb3RvdHlwZSA9IHsKIAogICAgICAgICB2YXIgY29s
b3JEYXRhID0gdGhpcy5fY2FudmFzLmdldENvbnRleHQoIjJkIikuZ2V0SW1hZ2VEYXRhKHRoaXMu
X3NoYWRvd0tub2IueCAtIDEsIDAsIDEsIDEpLmRhdGE7CiAgICAgICAgIHRoaXMuX3NoYWRvd0tu
b2Iud2VsbENvbG9yID0gbmV3IFdlYkluc3BlY3Rvci5Db2xvcihXZWJJbnNwZWN0b3IuQ29sb3Iu
Rm9ybWF0LlJHQiwgW2NvbG9yRGF0YVswXSwgY29sb3JEYXRhWzFdLCBjb2xvckRhdGFbMl0sIGNv
bG9yRGF0YVszXSAvIDI1NV0pOwotICAgIH0sCisgICAgfQogCi0gICAgX3NvcnRTdG9wczogZnVu
Y3Rpb24oKQorICAgIF9zb3J0U3RvcHMoKQogICAgIHsKICAgICAgICAgdGhpcy5fc3RvcHMuc29y
dChmdW5jdGlvbihhLCBiKSB7CiAgICAgICAgICAgICByZXR1cm4gYS5vZmZzZXQgLSBiLm9mZnNl
dDsKICAgICAgICAgfSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdXBkYXRlU3RvcHM6IGZ1bmN0
aW9uKCkKKyAgICBfdXBkYXRlU3RvcHMoKQogICAgIHsKICAgICAgICAgdGhpcy5fdXBkYXRlQ2Fu
dmFzKCk7CiAgICAgICAgIHRoaXMuX3VwZGF0ZUtub2JzKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICBfdXBkYXRlQ2FudmFzOiBmdW5jdGlvbigpCisgICAgX3VwZGF0ZUNhbnZhcygpCiAgICAgewog
ICAgICAgICB2YXIgdyA9IFdlYkluc3BlY3Rvci5HcmFkaWVudFNsaWRlci5XaWR0aDsKICAgICAg
ICAgdmFyIGggPSBXZWJJbnNwZWN0b3IuR3JhZGllbnRTbGlkZXIuSGVpZ2h0OwpAQCAtMjQwLDkg
KzIzMyw5IEBAIFdlYkluc3BlY3Rvci5HcmFkaWVudFNsaWRlci5wcm90b3R5cGUgPSB7CiAKICAg
ICAgICAgaWYgKHRoaXMuZGVsZWdhdGUgJiYgdHlwZW9mIHRoaXMuZGVsZWdhdGUuZ3JhZGllbnRT
bGlkZXJTdG9wc0RpZENoYW5nZSA9PT0gImZ1bmN0aW9uIikKICAgICAgICAgICAgIHRoaXMuZGVs
ZWdhdGUuZ3JhZGllbnRTbGlkZXJTdG9wc0RpZENoYW5nZSh0aGlzKTsKLSAgICB9LAorICAgIH0K
IAotICAgIF91cGRhdGVLbm9iczogZnVuY3Rpb24oKQorICAgIF91cGRhdGVLbm9icygpCiAgICAg
ewogICAgICAgICB2YXIgc2VsZWN0ZWRTdG9wID0gdGhpcy5fc2VsZWN0ZWRLbm9iID8gdGhpcy5f
c2VsZWN0ZWRLbm9iLnN0b3AgOiBudWxsOwogICAgICAgICAKQEAgLTI2NCw4NyArMjU3LDkxIEBA
IFdlYkluc3BlY3Rvci5HcmFkaWVudFNsaWRlci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBr
bm9iLnNlbGVjdGVkID0gc3RvcCA9PT0gc2VsZWN0ZWRTdG9wOwogICAgICAgICB9CiAgICAgfQot
fQorfTsKKworV2ViSW5zcGVjdG9yLkdyYWRpZW50U2xpZGVyLldpZHRoID0gMjM4OworV2ViSW5z
cGVjdG9yLkdyYWRpZW50U2xpZGVyLkhlaWdodCA9IDE5OwogCi1XZWJJbnNwZWN0b3IuR3JhZGll
bnRTbGlkZXJLbm9iID0gZnVuY3Rpb24oZGVsZWdhdGUpCitXZWJJbnNwZWN0b3IuR3JhZGllbnRT
bGlkZXIuQWRkQXJlYUNsYXNzTmFtZSA9ICJhZGQtYXJlYSI7CitXZWJJbnNwZWN0b3IuR3JhZGll
bnRTbGlkZXIuRGV0YWNoaW5nQ2xhc3NOYW1lID0gImRldGFjaGluZyI7CitXZWJJbnNwZWN0b3Iu
R3JhZGllbnRTbGlkZXIuU2hhZG93Q2xhc3NOYW1lID0gInNoYWRvdyI7CisKK1dlYkluc3BlY3Rv
ci5HcmFkaWVudFNsaWRlcktub2IgPSBjbGFzcyBHcmFkaWVudFNsaWRlcktub2IgZXh0ZW5kcyBX
ZWJJbnNwZWN0b3IuT2JqZWN0CiB7Ci0gICAgdGhpcy5feCA9IDA7Ci0gICAgdGhpcy5feSA9IDA7
Ci0gICAgdGhpcy5fc3RvcCA9IG51bGw7Ci0gICAgCi0gICAgdGhpcy5kZWxlZ2F0ZSA9IGRlbGVn
YXRlOwotICAgIAotICAgIHRoaXMuX2VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJk
aXYiKTsKLSAgICB0aGlzLl9lbGVtZW50LmNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5HcmFkaWVu
dFNsaWRlcktub2IuU3R5bGVDbGFzc05hbWU7CisgICAgY29uc3RydWN0b3IoZGVsZWdhdGUpCisg
ICAgeworICAgICAgICBzdXBlcigpOwogCi0gICAgLy8gQ2hlY2tlcnMgcGF0dGVybi4KLSAgICB0
aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImltZyIpKTsK
KyAgICAgICAgdGhpcy5feCA9IDA7CisgICAgICAgIHRoaXMuX3kgPSAwOworICAgICAgICB0aGlz
Ll9zdG9wID0gbnVsbDsKIAotICAgIHRoaXMuX3dlbGwgPSB0aGlzLl9lbGVtZW50LmFwcGVuZENo
aWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpKTsKKyAgICAgICAgdGhpcy5kZWxlZ2F0
ZSA9IGRlbGVnYXRlOwogCi0gICAgdGhpcy5fZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3Vz
ZWRvd24iLCB0aGlzKTsKLX07CisgICAgICAgIHRoaXMuX2VsZW1lbnQgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc05hbWUgPSAiZ3Jh
ZGllbnQtc2xpZGVyLWtub2IiOwogCi1XZWJJbnNwZWN0b3IuR3JhZGllbnRTbGlkZXJLbm9iLlN0
eWxlQ2xhc3NOYW1lID0gImdyYWRpZW50LXNsaWRlci1rbm9iIjsKLVdlYkluc3BlY3Rvci5HcmFk
aWVudFNsaWRlcktub2IuU2VsZWN0ZWRDbGFzc05hbWUgPSAic2VsZWN0ZWQiOwotV2ViSW5zcGVj
dG9yLkdyYWRpZW50U2xpZGVyS25vYi5GYWRlT3V0Q2xhc3NOYW1lID0gImZhZGUtb3V0IjsKKyAg
ICAgICAgLy8gQ2hlY2tlcnMgcGF0dGVybi4KKyAgICAgICAgdGhpcy5fZWxlbWVudC5hcHBlbmRD
aGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbWciKSk7CiAKLVdlYkluc3BlY3Rvci5HcmFk
aWVudFNsaWRlcktub2IucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0
b3IuR3JhZGllbnRTbGlkZXJLbm9iLAorICAgICAgICB0aGlzLl93ZWxsID0gdGhpcy5fZWxlbWVu
dC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSk7CisKKyAgICAgICAg
dGhpcy5fZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCB0aGlzKTsKKyAgICB9
CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBlbGVtZW50KCkKICAgICB7CiAgICAgICAgIHJl
dHVybiB0aGlzLl9lbGVtZW50OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHN0b3AoKQogICAg
IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3N0b3A7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQg
c3RvcChzdG9wKQogICAgIHsKICAgICAgICAgdGhpcy53ZWxsQ29sb3IgPSBzdG9wLmNvbG9yOwog
ICAgICAgICB0aGlzLl9zdG9wID0gc3RvcDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCB4KCkK
ICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl94OwotICAgIH0sCisgICAgfQogICAgIAogICAg
IHNldCB4KHgpIHsKICAgICAgICAgdGhpcy5feCA9IHg7CiAgICAgICAgIHRoaXMuX3VwZGF0ZVRy
YW5zZm9ybSgpOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHkoKQogICAgIHsKICAgICAgICAg
cmV0dXJuIHRoaXMuX3g7Ci0gICAgfSwKKyAgICB9CiAgICAgCiAgICAgc2V0IHkoeSkgewogICAg
ICAgICB0aGlzLl95ID0geTsKICAgICAgICAgdGhpcy5fdXBkYXRlVHJhbnNmb3JtKCk7Ci0gICAg
fSwKKyAgICB9CiAKICAgICBnZXQgd2VsbENvbG9yKGNvbG9yKQogICAgIHsKICAgICAgICAgcmV0
dXJuIHRoaXMuX3dlbGxDb2xvcjsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCB3ZWxsQ29sb3Io
Y29sb3IpCiAgICAgewogICAgICAgICB0aGlzLl93ZWxsQ29sb3IgPSBjb2xvcjsKICAgICAgICAg
dGhpcy5fd2VsbC5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSBjb2xvcjsKLSAgICB9LAorICAgIH0K
IAogICAgIGdldCBzZWxlY3RlZCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVu
dC5jbGFzc0xpc3QuY29udGFpbnMoV2ViSW5zcGVjdG9yLkdyYWRpZW50U2xpZGVyS25vYi5TZWxl
Y3RlZENsYXNzTmFtZSk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgc2VsZWN0ZWQoc2VsZWN0
ZWQpCiAgICAgewpAQCAtMzU1LDExICszNTIsMTEgQEAgV2ViSW5zcGVjdG9yLkdyYWRpZW50U2xp
ZGVyS25vYi5wcm90b3R5cGUgPSB7CiAgICAgICAgIAogICAgICAgICBpZiAodGhpcy5kZWxlZ2F0
ZSAmJiB0eXBlb2YgdGhpcy5kZWxlZ2F0ZS5rbm9iU2VsZWN0aW9uQ2hhbmdlZCA9PT0gImZ1bmN0
aW9uIikKICAgICAgICAgICAgIHRoaXMuZGVsZWdhdGUua25vYlNlbGVjdGlvbkNoYW5nZWQodGhp
cyk7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcm90ZWN0ZWQKIAotICAgIGhhbmRsZUV2ZW50
OiBmdW5jdGlvbihldmVudCkKKyAgICBoYW5kbGVFdmVudChldmVudCkKICAgICB7CiAgICAgICAg
IGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigp
OwpAQCAtMzc4LDExICszNzUsMTEgQEAgV2ViSW5zcGVjdG9yLkdyYWRpZW50U2xpZGVyS25vYi5w
cm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9oYW5kbGVUcmFuc2l0aW9uRW5kKGV2ZW50
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgfSwKKyAgICB9CiAKICAgICAv
LyBQcml2YXRlCiAKLSAgICBfaGFuZGxlTW91c2Vkb3duOiBmdW5jdGlvbihldmVudCkKKyAgICBf
aGFuZGxlTW91c2Vkb3duKGV2ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5fbW92ZWQgPSBmYWxz
ZTsKICAgICAgICAgdGhpcy5fZGV0YWNoaW5nID0gZmFsc2U7CkBAIC0zOTMsOSArMzkwLDkgQEAg
V2ViSW5zcGVjdG9yLkdyYWRpZW50U2xpZGVyS25vYi5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRo
aXMuX3N0YXJ0WCA9IHRoaXMueDsKICAgICAgICAgdGhpcy5fc3RhcnRNb3VzZVggPSBldmVudC5w
YWdlWDsKICAgICAgICAgdGhpcy5fc3RhcnRNb3VzZVkgPSBldmVudC5wYWdlWTsKLSAgICB9LAor
ICAgIH0KIAotICAgIF9oYW5kbGVNb3VzZW1vdmU6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9oYW5k
bGVNb3VzZW1vdmUoZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgdyA9IFdlYkluc3BlY3Rvci5H
cmFkaWVudFNsaWRlci5XaWR0aDsKIApAQCAtNDIxLDkgKzQxOCw5IEBAIFdlYkluc3BlY3Rvci5H
cmFkaWVudFNsaWRlcktub2IucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy55ID0gZXZl
bnQucGFnZVkgLSB0aGlzLl9zdGFydE1vdXNlWTsKICAgICAgICAgZWxzZSBpZiAodGhpcy5kZWxl
Z2F0ZSAmJiB0eXBlb2YgdGhpcy5kZWxlZ2F0ZS5rbm9iWERpZENoYW5nZSA9PT0gImZ1bmN0aW9u
IikKICAgICAgICAgICAgIHRoaXMuZGVsZWdhdGUua25vYlhEaWRDaGFuZ2UodGhpcyk7Ci0gICAg
fSwKKyAgICB9CiAKLSAgICBfaGFuZGxlTW91c2V1cDogZnVuY3Rpb24oZXZlbnQpCisgICAgX2hh
bmRsZU1vdXNldXAoZXZlbnQpCiAgICAgewogICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0
ZW5lcigibW91c2Vtb3ZlIiwgdGhpcywgdHJ1ZSk7CiAgICAgICAgIHdpbmRvdy5yZW1vdmVFdmVu
dExpc3RlbmVyKCJtb3VzZXVwIiwgdGhpcywgdHJ1ZSk7CkBAIC00MzQsMTcgKzQzMSwyMCBAQCBX
ZWJJbnNwZWN0b3IuR3JhZGllbnRTbGlkZXJLbm9iLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAg
IHRoaXMuc2VsZWN0ZWQgPSBmYWxzZTsKICAgICAgICAgfSBlbHNlIGlmICghdGhpcy5fbW92ZWQp
CiAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkID0gIXRoaXMuc2VsZWN0ZWQ7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBfaGFuZGxlVHJhbnNpdGlvbkVuZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX2hh
bmRsZVRyYW5zaXRpb25FbmQoZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLmVsZW1lbnQucmVt
b3ZlRXZlbnRMaXN0ZW5lcigidHJhbnNpdGlvbmVuZCIsIHRoaXMpOwogICAgICAgICB0aGlzLmVs
ZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShXZWJJbnNwZWN0b3IuR3JhZGllbnRTbGlkZXJLbm9iLkZh
ZGVPdXRDbGFzc05hbWUpOwogICAgICAgICB0aGlzLmVsZW1lbnQucmVtb3ZlKCk7Ci0gICAgfSwK
KyAgICB9CiAKLSAgICBfdXBkYXRlVHJhbnNmb3JtOiBmdW5jdGlvbigpCisgICAgX3VwZGF0ZVRy
YW5zZm9ybSgpCiAgICAgewogICAgICAgICB0aGlzLmVsZW1lbnQuc3R5bGUud2Via2l0VHJhbnNm
b3JtID0gInRyYW5zbGF0ZTNkKCIgKyB0aGlzLl94ICsgInB4LCAiICsgdGhpcy5feSArICJweCwg
MCkiOwogICAgIH0KLX0KK307CisKK1dlYkluc3BlY3Rvci5HcmFkaWVudFNsaWRlcktub2IuU2Vs
ZWN0ZWRDbGFzc05hbWUgPSAic2VsZWN0ZWQiOworV2ViSW5zcGVjdG9yLkdyYWRpZW50U2xpZGVy
S25vYi5GYWRlT3V0Q2xhc3NOYW1lID0gImZhZGUtb3V0IjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0hpZXJhcmNoaWNhbFBhdGhDb21wb25l
bnQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9IaWVyYXJj
aGljYWxQYXRoQ29tcG9uZW50LmpzCmluZGV4IGFkMTMzYTIzOGNkY2VmYTdiMjFmOGE2N2Q4ODJk
NzkxNzE0NGQ0OTIuLmNmYjRmMGU4ODc2NjhiNWU0NjA3MjJiNmI2MTk5ZGY5NDQ5NGZiYzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0hpZXJh
cmNoaWNhbFBhdGhDb21wb25lbnQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvSGllcmFyY2hpY2FsUGF0aENvbXBvbmVudC5qcwpAQCAtMjMsMTA0ICsy
Myw4MSBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYklu
c3BlY3Rvci5IaWVyYXJjaGljYWxQYXRoQ29tcG9uZW50ID0gZnVuY3Rpb24oZGlzcGxheU5hbWUs
IHN0eWxlQ2xhc3NOYW1lcywgcmVwcmVzZW50ZWRPYmplY3QsIHRleHRPbmx5LCBzaG93U2VsZWN0
b3JBcnJvd3MpCitXZWJJbnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0aENvbXBvbmVudCA9IGNsYXNz
IEhpZXJhcmNoaWNhbFBhdGhDb21wb25lbnQgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiB7
Ci0gICAgLy8gRklYTUU6IENvbnZlcnQgdGhpcyB0byBhIFdlYkluc3BlY3Rvci5PYmplY3Qgc3Vi
Y2xhc3MsIGFuZCBjYWxsIHN1cGVyKCkuCi0gICAgLy8gV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxs
KHRoaXMpOwotCi0gICAgY29uc29sZS5hc3NlcnQoZGlzcGxheU5hbWUpOwotICAgIGNvbnNvbGUu
YXNzZXJ0KHN0eWxlQ2xhc3NOYW1lcyk7Ci0KLSAgICB0aGlzLl9yZXByZXNlbnRlZE9iamVjdCA9
IHJlcHJlc2VudGVkT2JqZWN0IHx8IG51bGw7Ci0KLSAgICB0aGlzLl9lbGVtZW50ID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgdGhpcy5fZWxlbWVudC5jbGFzc05hbWUgPSBX
ZWJJbnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0aENvbXBvbmVudC5TdHlsZUNsYXNzTmFtZTsKKyAg
ICBjb25zdHJ1Y3RvcihkaXNwbGF5TmFtZSwgc3R5bGVDbGFzc05hbWVzLCByZXByZXNlbnRlZE9i
amVjdCwgdGV4dE9ubHksIHNob3dTZWxlY3RvckFycm93cykKKyAgICB7CisgICAgICAgIHN1cGVy
KCk7CiAKLSAgICBpZiAoIShzdHlsZUNsYXNzTmFtZXMgaW5zdGFuY2VvZiBBcnJheSkpCi0gICAg
ICAgIHN0eWxlQ2xhc3NOYW1lcyA9IFtzdHlsZUNsYXNzTmFtZXNdOworICAgICAgICBjb25zb2xl
LmFzc2VydChkaXNwbGF5TmFtZSk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHN0eWxlQ2xhc3NO
YW1lcyk7CiAKLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN0eWxlQ2xhc3NOYW1lcy5sZW5ndGg7
ICsraSkgewotICAgICAgICBpZiAoIXN0eWxlQ2xhc3NOYW1lc1tpXSkKLSAgICAgICAgICAgIGNv
bnRpbnVlOwotICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoc3R5bGVDbGFzc05h
bWVzW2ldKTsKLSAgICB9CisgICAgICAgIHRoaXMuX3JlcHJlc2VudGVkT2JqZWN0ID0gcmVwcmVz
ZW50ZWRPYmplY3QgfHwgbnVsbDsKIAotICAgIGlmICghdGV4dE9ubHkpIHsKLSAgICAgICAgdGhp
cy5faWNvbkVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbWciKTsKLSAgICAgICAg
dGhpcy5faWNvbkVsZW1lbnQuY2xhc3NOYW1lID0gV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBh
dGhDb21wb25lbnQuSWNvbkVsZW1lbnRTdHlsZUNsYXNzTmFtZTsKLSAgICAgICAgdGhpcy5fZWxl
bWVudC5hcHBlbmRDaGlsZCh0aGlzLl9pY29uRWxlbWVudCk7Ci0gICAgfSBlbHNlCi0gICAgICAg
IHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0
aENvbXBvbmVudC5UZXh0T25seVN0eWxlQ2xhc3NOYW1lKTsKKyAgICAgICAgdGhpcy5fZWxlbWVu
dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICB0aGlzLl9lbGVtZW50
LmNsYXNzTmFtZSA9ICJoaWVyYXJjaGljYWwtcGF0aC1jb21wb25lbnQiOwogCi0gICAgdGhpcy5f
dGl0bGVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgdGhpcy5f
dGl0bGVFbGVtZW50LmNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5IaWVyYXJjaGljYWxQYXRoQ29t
cG9uZW50LlRpdGxlRWxlbWVudFN0eWxlQ2xhc3NOYW1lOwotICAgIHRoaXMuX2VsZW1lbnQuYXBw
ZW5kQ2hpbGQodGhpcy5fdGl0bGVFbGVtZW50KTsKKyAgICAgICAgaWYgKCEoc3R5bGVDbGFzc05h
bWVzIGluc3RhbmNlb2YgQXJyYXkpKQorICAgICAgICAgICAgc3R5bGVDbGFzc05hbWVzID0gW3N0
eWxlQ2xhc3NOYW1lc107CiAKLSAgICB0aGlzLl90aXRsZUNvbnRlbnRFbGVtZW50ID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgdGhpcy5fdGl0bGVDb250ZW50RWxlbWVudC5j
bGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0aENvbXBvbmVudC5UaXRsZUNv
bnRlbnRFbGVtZW50U3R5bGVDbGFzc05hbWU7Ci0gICAgdGhpcy5fdGl0bGVFbGVtZW50LmFwcGVu
ZENoaWxkKHRoaXMuX3RpdGxlQ29udGVudEVsZW1lbnQpOwotCi0gICAgdGhpcy5fc2VwYXJhdG9y
RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgIHRoaXMuX3NlcGFy
YXRvckVsZW1lbnQuY2xhc3NOYW1lID0gV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhDb21w
b25lbnQuU2VwYXJhdG9yRWxlbWVudFN0eWxlQ2xhc3NOYW1lOwotICAgIHRoaXMuX2VsZW1lbnQu
YXBwZW5kQ2hpbGQodGhpcy5fc2VwYXJhdG9yRWxlbWVudCk7CisgICAgICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgc3R5bGVDbGFzc05hbWVzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBpZiAo
IXN0eWxlQ2xhc3NOYW1lc1tpXSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
ICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChzdHlsZUNsYXNzTmFtZXNbaV0pOworICAg
ICAgICB9CiAKLSAgICB0aGlzLl9zZWxlY3RFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgic2VsZWN0Iik7Ci0gICAgdGhpcy5fc2VsZWN0RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJt
b3VzZW92ZXIiLCB0aGlzLl9zZWxlY3RFbGVtZW50TW91c2VPdmVyLmJpbmQodGhpcykpOwotICAg
IHRoaXMuX3NlbGVjdEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VvdXQiLCB0aGlzLl9z
ZWxlY3RFbGVtZW50TW91c2VPdXQuYmluZCh0aGlzKSk7Ci0gICAgdGhpcy5fc2VsZWN0RWxlbWVu
dC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCB0aGlzLl9zZWxlY3RFbGVtZW50TW91c2VE
b3duLmJpbmQodGhpcykpOwotICAgIHRoaXMuX3NlbGVjdEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5l
cigibW91c2V1cCIsIHRoaXMuX3NlbGVjdEVsZW1lbnRNb3VzZVVwLmJpbmQodGhpcykpOwotICAg
IHRoaXMuX3NlbGVjdEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIiwgdGhpcy5fc2Vs
ZWN0RWxlbWVudFNlbGVjdGlvbkNoYW5nZWQuYmluZCh0aGlzKSk7Ci0gICAgdGhpcy5fZWxlbWVu
dC5hcHBlbmRDaGlsZCh0aGlzLl9zZWxlY3RFbGVtZW50KTsKKyAgICAgICAgaWYgKCF0ZXh0T25s
eSkgeworICAgICAgICAgICAgdGhpcy5faWNvbkVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJpbWciKTsKKyAgICAgICAgICAgIHRoaXMuX2ljb25FbGVtZW50LmNsYXNzTmFtZSA9IFdl
Ykluc3BlY3Rvci5IaWVyYXJjaGljYWxQYXRoQ29tcG9uZW50Lkljb25FbGVtZW50U3R5bGVDbGFz
c05hbWU7CisgICAgICAgICAgICB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2ljb25F
bGVtZW50KTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNz
TGlzdC5hZGQoV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhDb21wb25lbnQuVGV4dE9ubHlT
dHlsZUNsYXNzTmFtZSk7CiAKLSAgICB0aGlzLl9wcmV2aW91c1NpYmxpbmcgPSBudWxsOwotICAg
IHRoaXMuX25leHRTaWJsaW5nID0gbnVsbDsKKyAgICAgICAgdGhpcy5fdGl0bGVFbGVtZW50ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIHRoaXMuX3RpdGxlRWxlbWVu
dC5jbGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0aENvbXBvbmVudC5UaXRs
ZUVsZW1lbnRTdHlsZUNsYXNzTmFtZTsKKyAgICAgICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGls
ZCh0aGlzLl90aXRsZUVsZW1lbnQpOwogCi0gICAgdGhpcy5fdHJ1bmNhdGVkRGlzcGxheU5hbWVM
ZW5ndGggPSAwOworICAgICAgICB0aGlzLl90aXRsZUNvbnRlbnRFbGVtZW50ID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIHRoaXMuX3RpdGxlQ29udGVudEVsZW1lbnQu
Y2xhc3NOYW1lID0gV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhDb21wb25lbnQuVGl0bGVD
b250ZW50RWxlbWVudFN0eWxlQ2xhc3NOYW1lOworICAgICAgICB0aGlzLl90aXRsZUVsZW1lbnQu
YXBwZW5kQ2hpbGQodGhpcy5fdGl0bGVDb250ZW50RWxlbWVudCk7CiAKLSAgICB0aGlzLnNlbGVj
dG9yQXJyb3dzID0gc2hvd1NlbGVjdG9yQXJyb3dzOwotICAgIHRoaXMuZGlzcGxheU5hbWUgPSBk
aXNwbGF5TmFtZTsKLX07CisgICAgICAgIHRoaXMuX3NlcGFyYXRvckVsZW1lbnQgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgdGhpcy5fc2VwYXJhdG9yRWxlbWVudC5j
bGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0aENvbXBvbmVudC5TZXBhcmF0
b3JFbGVtZW50U3R5bGVDbGFzc05hbWU7CisgICAgICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hp
bGQodGhpcy5fc2VwYXJhdG9yRWxlbWVudCk7CiAKLVdlYkluc3BlY3Rvci5IaWVyYXJjaGljYWxQ
YXRoQ29tcG9uZW50LlN0eWxlQ2xhc3NOYW1lID0gImhpZXJhcmNoaWNhbC1wYXRoLWNvbXBvbmVu
dCI7Ci1XZWJJbnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0aENvbXBvbmVudC5IaWRkZW5TdHlsZUNs
YXNzTmFtZSA9ICJoaWRkZW4iOwotV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhDb21wb25l
bnQuQ29sbGFwc2VkU3R5bGVDbGFzc05hbWUgPSAiY29sbGFwc2VkIjsKLVdlYkluc3BlY3Rvci5I
aWVyYXJjaGljYWxQYXRoQ29tcG9uZW50Lkljb25FbGVtZW50U3R5bGVDbGFzc05hbWUgPSAiaWNv
biI7Ci1XZWJJbnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0aENvbXBvbmVudC5UZXh0T25seVN0eWxl
Q2xhc3NOYW1lID0gInRleHQtb25seSI7Ci1XZWJJbnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0aENv
bXBvbmVudC5TaG93U2VsZWN0b3JBcnJvd3NTdHlsZUNsYXNzTmFtZSA9ICJzaG93LXNlbGVjdG9y
LWFycm93cyI7Ci1XZWJJbnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0aENvbXBvbmVudC5UaXRsZUVs
ZW1lbnRTdHlsZUNsYXNzTmFtZSA9ICJ0aXRsZSI7Ci1XZWJJbnNwZWN0b3IuSGllcmFyY2hpY2Fs
UGF0aENvbXBvbmVudC5UaXRsZUNvbnRlbnRFbGVtZW50U3R5bGVDbGFzc05hbWUgPSAiY29udGVu
dCI7Ci1XZWJJbnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0aENvbXBvbmVudC5TZWxlY3RvckFycm93
c0VsZW1lbnRTdHlsZUNsYXNzTmFtZSA9ICJzZWxlY3Rvci1hcnJvd3MiOwotV2ViSW5zcGVjdG9y
LkhpZXJhcmNoaWNhbFBhdGhDb21wb25lbnQuU2VwYXJhdG9yRWxlbWVudFN0eWxlQ2xhc3NOYW1l
ID0gInNlcGFyYXRvciI7CisgICAgICAgIHRoaXMuX3NlbGVjdEVsZW1lbnQgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJzZWxlY3QiKTsKKyAgICAgICAgdGhpcy5fc2VsZWN0RWxlbWVudC5hZGRF
dmVudExpc3RlbmVyKCJtb3VzZW92ZXIiLCB0aGlzLl9zZWxlY3RFbGVtZW50TW91c2VPdmVyLmJp
bmQodGhpcykpOworICAgICAgICB0aGlzLl9zZWxlY3RFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIo
Im1vdXNlb3V0IiwgdGhpcy5fc2VsZWN0RWxlbWVudE1vdXNlT3V0LmJpbmQodGhpcykpOworICAg
ICAgICB0aGlzLl9zZWxlY3RFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsIHRo
aXMuX3NlbGVjdEVsZW1lbnRNb3VzZURvd24uYmluZCh0aGlzKSk7CisgICAgICAgIHRoaXMuX3Nl
bGVjdEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2V1cCIsIHRoaXMuX3NlbGVjdEVsZW1l
bnRNb3VzZVVwLmJpbmQodGhpcykpOworICAgICAgICB0aGlzLl9zZWxlY3RFbGVtZW50LmFkZEV2
ZW50TGlzdGVuZXIoImNoYW5nZSIsIHRoaXMuX3NlbGVjdEVsZW1lbnRTZWxlY3Rpb25DaGFuZ2Vk
LmJpbmQodGhpcykpOworICAgICAgICB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX3Nl
bGVjdEVsZW1lbnQpOwogCi1XZWJJbnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0aENvbXBvbmVudC5N
aW5pbXVtV2lkdGggPSAzMjsKLVdlYkluc3BlY3Rvci5IaWVyYXJjaGljYWxQYXRoQ29tcG9uZW50
Lk1pbmltdW1XaWR0aENvbGxhcHNlZCA9IDI0OwotV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBh
dGhDb21wb25lbnQuTWluaW11bVdpZHRoRm9yT25lQ2hhcmFjdGVyVHJ1bmNhdGVkVGl0bGUgPSA1
NDsKLVdlYkluc3BlY3Rvci5IaWVyYXJjaGljYWxQYXRoQ29tcG9uZW50LlNlbGVjdG9yQXJyb3dz
V2lkdGggPSAxMjsKKyAgICAgICAgdGhpcy5fcHJldmlvdXNTaWJsaW5nID0gbnVsbDsKKyAgICAg
ICAgdGhpcy5fbmV4dFNpYmxpbmcgPSBudWxsOwogCi1XZWJJbnNwZWN0b3IuSGllcmFyY2hpY2Fs
UGF0aENvbXBvbmVudC5FdmVudCA9IHsKLSAgICBTaWJsaW5nV2FzU2VsZWN0ZWQ6ICJoaWVyYXJj
aGljYWwtcGF0aC1jb21wb25lbnQtc2libGluZy13YXMtc2VsZWN0ZWQiLAotICAgIENsaWNrZWQ6
ICJoaWVyYXJjaGljYWwtcGF0aC1jb21wb25lbnQtY2xpY2tlZCIKLX07CisgICAgICAgIHRoaXMu
X3RydW5jYXRlZERpc3BsYXlOYW1lTGVuZ3RoID0gMDsKIAotV2ViSW5zcGVjdG9yLkhpZXJhcmNo
aWNhbFBhdGhDb21wb25lbnQucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNw
ZWN0b3IuSGllcmFyY2hpY2FsUGF0aENvbXBvbmVudCwKKyAgICAgICAgdGhpcy5zZWxlY3RvckFy
cm93cyA9IHNob3dTZWxlY3RvckFycm93czsKKyAgICAgICAgdGhpcy5kaXNwbGF5TmFtZSA9IGRp
c3BsYXlOYW1lOworICAgIH0KIAogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IGVsZW1lbnQoKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQ7Ci0gICAgfSwKKyAgICB9CiAKICAg
ICBnZXQgcmVwcmVzZW50ZWRPYmplY3QoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3Jl
cHJlc2VudGVkT2JqZWN0OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGRpc3BsYXlOYW1lKCkK
ICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9kaXNwbGF5TmFtZTsKLSAgICB9LAorICAgIH0K
IAogICAgIHNldCBkaXNwbGF5TmFtZShuZXdEaXNwbGF5TmFtZSkKICAgICB7CkBAIC0xMzEsMTIg
KzEwOCwxMiBAQCBXZWJJbnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0aENvbXBvbmVudC5wcm90b3R5
cGUgPSB7CiAgICAgICAgIHRoaXMuX2Rpc3BsYXlOYW1lID0gbmV3RGlzcGxheU5hbWU7CiAKICAg
ICAgICAgdGhpcy5fdXBkYXRlRWxlbWVudFRpdGxlQW5kVGV4dCgpOwotICAgIH0sCisgICAgfQog
CiAgICAgZ2V0IHRydW5jYXRlZERpc3BsYXlOYW1lTGVuZ3RoKCkKICAgICB7CiAgICAgICAgIHJl
dHVybiB0aGlzLl90cnVuY2F0ZWREaXNwbGF5TmFtZUxlbmd0aDsKLSAgICB9LAorICAgIH0KIAog
ICAgIHNldCB0cnVuY2F0ZWREaXNwbGF5TmFtZUxlbmd0aCh0cnVuY2F0ZWREaXNwbGF5TmFtZUxl
bmd0aCkKICAgICB7CkBAIC0xNDgsNyArMTI1LDcgQEAgV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNh
bFBhdGhDb21wb25lbnQucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl90cnVuY2F0ZWREaXNw
bGF5TmFtZUxlbmd0aCA9IHRydW5jYXRlZERpc3BsYXlOYW1lTGVuZ3RoOwogCiAgICAgICAgIHRo
aXMuX3VwZGF0ZUVsZW1lbnRUaXRsZUFuZFRleHQoKTsKLSAgICB9LAorICAgIH0KIAogICAgIGdl
dCBtaW5pbXVtV2lkdGgoKQogICAgIHsKQEAgLTE1Nyw3ICsxMzQsNyBAQCBXZWJJbnNwZWN0b3Iu
SGllcmFyY2hpY2FsUGF0aENvbXBvbmVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlmICh0aGlz
LnNlbGVjdG9yQXJyb3dzKQogICAgICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5IaWVyYXJj
aGljYWxQYXRoQ29tcG9uZW50Lk1pbmltdW1XaWR0aCArIFdlYkluc3BlY3Rvci5IaWVyYXJjaGlj
YWxQYXRoQ29tcG9uZW50LlNlbGVjdG9yQXJyb3dzV2lkdGg7CiAgICAgICAgIHJldHVybiBXZWJJ
bnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0aENvbXBvbmVudC5NaW5pbXVtV2lkdGg7Ci0gICAgfSwK
KyAgICB9CiAKICAgICBnZXQgZm9yY2VkV2lkdGgoKQogICAgIHsKQEAgLTE2NSw3ICsxNDIsNyBA
QCBXZWJJbnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0aENvbXBvbmVudC5wcm90b3R5cGUgPSB7CiAg
ICAgICAgIGlmICh0eXBlb2YgbWF4V2lkdGggPT09ICJzdHJpbmciKQogICAgICAgICAgICAgcmV0
dXJuIHBhcnNlSW50KG1heFdpZHRoKTsKICAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgfSwKKyAg
ICB9CiAKICAgICBzZXQgZm9yY2VkV2lkdGgod2lkdGgpCiAgICAgewpAQCAtMTg0LDEyICsxNjEs
MTIgQEAgV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhDb21wb25lbnQucHJvdG90eXBlID0g
ewogICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgid2lkdGgiLCBN
YXRoLm1heCgxLCB3aWR0aCkgKyAicHgiKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICB0
aGlzLl9lbGVtZW50LnN0eWxlLnJlbW92ZVByb3BlcnR5KCJ3aWR0aCIpOwotICAgIH0sCisgICAg
fQogCiAgICAgZ2V0IGhpZGRlbigpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVu
dC5jbGFzc0xpc3QuY29udGFpbnMoV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhDb21wb25l
bnQuSGlkZGVuU3R5bGVDbGFzc05hbWUpOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IGhpZGRl
bihmbGFnKQogICAgIHsKQEAgLTE5NywxMiArMTc0LDEyIEBAIFdlYkluc3BlY3Rvci5IaWVyYXJj
aGljYWxQYXRoQ29tcG9uZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuX2VsZW1l
bnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0aENvbXBvbmVudC5I
aWRkZW5TdHlsZUNsYXNzTmFtZSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHRoaXMuX2Vs
ZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShXZWJJbnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0aENvbXBv
bmVudC5IaWRkZW5TdHlsZUNsYXNzTmFtZSk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgY29s
bGFwc2VkKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5j
b250YWlucyhXZWJJbnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0aENvbXBvbmVudC5Db2xsYXBzZWRT
dHlsZUNsYXNzTmFtZSk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgY29sbGFwc2VkKGZsYWcp
CiAgICAgewpAQCAtMjEwLDEyICsxODcsMTIgQEAgV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBh
dGhDb21wb25lbnQucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFz
c0xpc3QuYWRkKFdlYkluc3BlY3Rvci5IaWVyYXJjaGljYWxQYXRoQ29tcG9uZW50LkNvbGxhcHNl
ZFN0eWxlQ2xhc3NOYW1lKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgdGhpcy5fZWxlbWVu
dC5jbGFzc0xpc3QucmVtb3ZlKFdlYkluc3BlY3Rvci5IaWVyYXJjaGljYWxQYXRoQ29tcG9uZW50
LkNvbGxhcHNlZFN0eWxlQ2xhc3NOYW1lKTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBzZWxl
Y3RvckFycm93cygpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudC5jbGFzc0xp
c3QuY29udGFpbnMoV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhDb21wb25lbnQuU2hvd1Nl
bGVjdG9yQXJyb3dzU3R5bGVDbGFzc05hbWUpOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IHNl
bGVjdG9yQXJyb3dzKGZsYWcpCiAgICAgewpAQCAtMjMzLDMxICsyMTAsMzEgQEAgV2ViSW5zcGVj
dG9yLkhpZXJhcmNoaWNhbFBhdGhDb21wb25lbnQucHJvdG90eXBlID0gewogCiAgICAgICAgICAg
ICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNh
bFBhdGhDb21wb25lbnQuU2hvd1NlbGVjdG9yQXJyb3dzU3R5bGVDbGFzc05hbWUpOwogICAgICAg
ICB9Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgcHJldmlvdXNTaWJsaW5nKCkKICAgICB7CiAg
ICAgICAgIHJldHVybiB0aGlzLl9wcmV2aW91c1NpYmxpbmc7Ci0gICAgfSwKKyAgICB9CiAKICAg
ICBzZXQgcHJldmlvdXNTaWJsaW5nKG5ld1NsaWJsaW5nKQogICAgIHsKICAgICAgICAgdGhpcy5f
cHJldmlvdXNTaWJsaW5nID0gbmV3U2xpYmxpbmcgfHwgbnVsbDsKLSAgICB9LAorICAgIH0KIAog
ICAgIGdldCBuZXh0U2libGluZygpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fbmV4dFNp
Ymxpbmc7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgbmV4dFNpYmxpbmcobmV3U2xpYmxpbmcp
CiAgICAgewogICAgICAgICB0aGlzLl9uZXh0U2libGluZyA9IG5ld1NsaWJsaW5nIHx8IG51bGw7
Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcml2YXRlCiAKLSAgICBfdXBkYXRlRWxlbWVudFRp
dGxlQW5kVGV4dDogZnVuY3Rpb24oKQorICAgIF91cGRhdGVFbGVtZW50VGl0bGVBbmRUZXh0KCkK
ICAgICB7CiAgICAgICAgIHZhciB0cnVuY2F0ZWREaXNwbGF5TmFtZSA9IHRoaXMuX2Rpc3BsYXlO
YW1lOwogICAgICAgICBpZiAodGhpcy5fdHJ1bmNhdGVkRGlzcGxheU5hbWVMZW5ndGggJiYgdHJ1
bmNhdGVkRGlzcGxheU5hbWUubGVuZ3RoID4gdGhpcy5fdHJ1bmNhdGVkRGlzcGxheU5hbWVMZW5n
dGgpCkBAIC0yNjUsMTYgKzI0MiwxNiBAQCBXZWJJbnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0aENv
bXBvbmVudC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgdGhpcy5fZWxlbWVudC50aXRsZSA9IHRo
aXMuX2Rpc3BsYXlOYW1lOwogICAgICAgICB0aGlzLl90aXRsZUNvbnRlbnRFbGVtZW50LnRleHRD
b250ZW50ID0gdHJ1bmNhdGVkRGlzcGxheU5hbWU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdXBk
YXRlU2VsZWN0RWxlbWVudDogZnVuY3Rpb24oKQorICAgIF91cGRhdGVTZWxlY3RFbGVtZW50KCkK
ICAgICB7CiAgICAgICAgIHRoaXMuX3NlbGVjdEVsZW1lbnQucmVtb3ZlQ2hpbGRyZW4oKTsKIAog
ICAgICAgICBmdW5jdGlvbiBjcmVhdGVPcHRpb24oY29tcG9uZW50KQogICAgICAgICB7CiAgICAg
ICAgICAgICB2YXIgb3B0aW9uRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIm9wdGlv
biIpOwotICAgICAgICAgICAgY29uc3QgbWF4UG9wdXBNZW51TGVuZ3RoID0gMTMwOyAvLyA8cmRh
cjovL3Byb2JsZW0vMTM0NDUzNzQ+IDxzZWxlY3Q+IHdpdGggdmVyeSBsb25nIG9wdGlvbiBoYXMg
Y2xpcHBlZCB0ZXh0IGFuZCBwb3B1cCBtZW51IGlzIHN0aWxsIHZlcnkgd2lkZQorICAgICAgICAg
ICAgdmFyIG1heFBvcHVwTWVudUxlbmd0aCA9IDEzMDsgLy8gPHJkYXI6Ly9wcm9ibGVtLzEzNDQ1
Mzc0PiA8c2VsZWN0PiB3aXRoIHZlcnkgbG9uZyBvcHRpb24gaGFzIGNsaXBwZWQgdGV4dCBhbmQg
cG9wdXAgbWVudSBpcyBzdGlsbCB2ZXJ5IHdpZGUKICAgICAgICAgICAgIG9wdGlvbkVsZW1lbnQu
dGV4dENvbnRlbnQgPSBjb21wb25lbnQuZGlzcGxheU5hbWUubGVuZ3RoIDw9IG1heFBvcHVwTWVu
dUxlbmd0aCA/IGNvbXBvbmVudC5kaXNwbGF5TmFtZSA6IGNvbXBvbmVudC5kaXNwbGF5TmFtZS5z
dWJzdHJpbmcoMCwgbWF4UG9wdXBNZW51TGVuZ3RoKSArICJcdTIwMjYiOwogICAgICAgICAgICAg
b3B0aW9uRWxlbWVudC5fcGF0aENvbXBvbmVudCA9IGNvbXBvbmVudDsKICAgICAgICAgICAgIHJl
dHVybiBvcHRpb25FbGVtZW50OwpAQCAtMzA3LDM0ICsyODQsNTIgQEAgV2ViSW5zcGVjdG9yLkhp
ZXJhcmNoaWNhbFBhdGhDb21wb25lbnQucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5f
c2VsZWN0RWxlbWVudC5zZWxlY3RlZEluZGV4ID0gLTE7CiAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgIHRoaXMuX3NlbGVjdEVsZW1lbnQuc2VsZWN0ZWRJbmRleCA9IHByZXZpb3VzU2libGluZ0Nv
dW50OwotICAgIH0sCisgICAgfQogCi0gICAgX3NlbGVjdEVsZW1lbnRNb3VzZU92ZXI6IGZ1bmN0
aW9uKGV2ZW50KQorICAgIF9zZWxlY3RFbGVtZW50TW91c2VPdmVyKGV2ZW50KQogICAgIHsKICAg
ICAgICAgaWYgKHR5cGVvZiB0aGlzLm1vdXNlT3ZlciA9PT0gImZ1bmN0aW9uIikKICAgICAgICAg
ICAgIHRoaXMubW91c2VPdmVyKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfc2VsZWN0RWxlbWVu
dE1vdXNlT3V0OiBmdW5jdGlvbihldmVudCkKKyAgICBfc2VsZWN0RWxlbWVudE1vdXNlT3V0KGV2
ZW50KQogICAgIHsKICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm1vdXNlT3V0ID09PSAiZnVuY3Rp
b24iKQogICAgICAgICAgICAgdGhpcy5tb3VzZU91dCgpOwotICAgIH0sCisgICAgfQogCi0gICAg
X3NlbGVjdEVsZW1lbnRNb3VzZURvd246IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9zZWxlY3RFbGVt
ZW50TW91c2VEb3duKGV2ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5fdXBkYXRlU2VsZWN0RWxl
bWVudCgpOwotICAgIH0sCisgICAgfQogCi0gICAgX3NlbGVjdEVsZW1lbnRNb3VzZVVwOiBmdW5j
dGlvbihldmVudCkKKyAgICBfc2VsZWN0RWxlbWVudE1vdXNlVXAoZXZlbnQpCiAgICAgewogICAg
ICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuSGllcmFyY2hp
Y2FsUGF0aENvbXBvbmVudC5FdmVudC5DbGlja2VkKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9z
ZWxlY3RFbGVtZW50U2VsZWN0aW9uQ2hhbmdlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX3NlbGVj
dEVsZW1lbnRTZWxlY3Rpb25DaGFuZ2VkKGV2ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5kaXNw
YXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhDb21wb25l
bnQuRXZlbnQuU2libGluZ1dhc1NlbGVjdGVkLCB7cGF0aENvbXBvbmVudDogdGhpcy5fc2VsZWN0
RWxlbWVudFt0aGlzLl9zZWxlY3RFbGVtZW50LnNlbGVjdGVkSW5kZXhdLl9wYXRoQ29tcG9uZW50
fSk7CiAgICAgfQogfTsKIAotV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhDb21wb25lbnQu
cHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlOworV2Vi
SW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhDb21wb25lbnQuSGlkZGVuU3R5bGVDbGFzc05hbWUg
PSAiaGlkZGVuIjsKK1dlYkluc3BlY3Rvci5IaWVyYXJjaGljYWxQYXRoQ29tcG9uZW50LkNvbGxh
cHNlZFN0eWxlQ2xhc3NOYW1lID0gImNvbGxhcHNlZCI7CitXZWJJbnNwZWN0b3IuSGllcmFyY2hp
Y2FsUGF0aENvbXBvbmVudC5JY29uRWxlbWVudFN0eWxlQ2xhc3NOYW1lID0gImljb24iOworV2Vi
SW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhDb21wb25lbnQuVGV4dE9ubHlTdHlsZUNsYXNzTmFt
ZSA9ICJ0ZXh0LW9ubHkiOworV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhDb21wb25lbnQu
U2hvd1NlbGVjdG9yQXJyb3dzU3R5bGVDbGFzc05hbWUgPSAic2hvdy1zZWxlY3Rvci1hcnJvd3Mi
OworV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhDb21wb25lbnQuVGl0bGVFbGVtZW50U3R5
bGVDbGFzc05hbWUgPSAidGl0bGUiOworV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhDb21w
b25lbnQuVGl0bGVDb250ZW50RWxlbWVudFN0eWxlQ2xhc3NOYW1lID0gImNvbnRlbnQiOworV2Vi
SW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhDb21wb25lbnQuU2VsZWN0b3JBcnJvd3NFbGVtZW50
U3R5bGVDbGFzc05hbWUgPSAic2VsZWN0b3ItYXJyb3dzIjsKK1dlYkluc3BlY3Rvci5IaWVyYXJj
aGljYWxQYXRoQ29tcG9uZW50LlNlcGFyYXRvckVsZW1lbnRTdHlsZUNsYXNzTmFtZSA9ICJzZXBh
cmF0b3IiOworCitXZWJJbnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0aENvbXBvbmVudC5NaW5pbXVt
V2lkdGggPSAzMjsKK1dlYkluc3BlY3Rvci5IaWVyYXJjaGljYWxQYXRoQ29tcG9uZW50Lk1pbmlt
dW1XaWR0aENvbGxhcHNlZCA9IDI0OworV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhDb21w
b25lbnQuTWluaW11bVdpZHRoRm9yT25lQ2hhcmFjdGVyVHJ1bmNhdGVkVGl0bGUgPSA1NDsKK1dl
Ykluc3BlY3Rvci5IaWVyYXJjaGljYWxQYXRoQ29tcG9uZW50LlNlbGVjdG9yQXJyb3dzV2lkdGgg
PSAxMjsKKworV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhDb21wb25lbnQuRXZlbnQgPSB7
CisgICAgU2libGluZ1dhc1NlbGVjdGVkOiAiaGllcmFyY2hpY2FsLXBhdGgtY29tcG9uZW50LXNp
Ymxpbmctd2FzLXNlbGVjdGVkIiwKKyAgICBDbGlja2VkOiAiaGllcmFyY2hpY2FsLXBhdGgtY29t
cG9uZW50LWNsaWNrZWQiCit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvSGllcmFyY2hpY2FsUGF0aE5hdmlnYXRpb25JdGVtLmpzIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvSGllcmFyY2hpY2FsUGF0aE5h
dmlnYXRpb25JdGVtLmpzCmluZGV4IGRlZmFjNTliMjRjZGQ3OWExYTcxY2IyNDg2ZGFlYzIwYjY3
Y2ZlMTcuLmUwZTg1ODEyMjFjNWJiZjMwNTEzMmEwYWYyNjcyZDU1NWRkYmJhODMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0hpZXJhcmNoaWNh
bFBhdGhOYXZpZ2F0aW9uSXRlbS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9IaWVyYXJjaGljYWxQYXRoTmF2aWdhdGlvbkl0ZW0uanMKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDI4ICsy
MywyMSBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYklu
c3BlY3Rvci5IaWVyYXJjaGljYWxQYXRoTmF2aWdhdGlvbkl0ZW0gPSBmdW5jdGlvbihpZGVudGlm
aWVyLCBjb21wb25lbnRzKSB7Ci0gICAgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25JdGVtLmNhbGwo
dGhpcywgaWRlbnRpZmllcik7Ci0KLSAgICB0aGlzLmNvbXBvbmVudHMgPSBjb21wb25lbnRzOwot
fTsKLQotV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhOYXZpZ2F0aW9uSXRlbS5TdHlsZUNs
YXNzTmFtZSA9ICJoaWVyYXJjaGljYWwtcGF0aCI7Ci1XZWJJbnNwZWN0b3IuSGllcmFyY2hpY2Fs
UGF0aE5hdmlnYXRpb25JdGVtLkFsd2F5c1Nob3dMYXN0UGF0aENvbXBvbmVudFNlcGFyYXRvclN0
eWxlQ2xhc3NOYW1lID0gImFsd2F5cy1zaG93LWxhc3QtcGF0aC1jb21wb25lbnQtc2VwYXJhdG9y
IjsKLQotV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhOYXZpZ2F0aW9uSXRlbS5FdmVudCA9
IHsKLSAgICBQYXRoQ29tcG9uZW50V2FzU2VsZWN0ZWQ6ICJoaWVyYXJjaGljYWwtcGF0aC1uYXZp
Z2F0aW9uLWl0ZW0tcGF0aC1jb21wb25lbnQtd2FzLXNlbGVjdGVkIgotfTsKK1dlYkluc3BlY3Rv
ci5IaWVyYXJjaGljYWxQYXRoTmF2aWdhdGlvbkl0ZW0gPSBjbGFzcyBIaWVyYXJjaGljYWxQYXRo
TmF2aWdhdGlvbkl0ZW0gZXh0ZW5kcyBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkl0ZW0KK3sKKyAg
ICBjb25zdHJ1Y3RvcihpZGVudGlmaWVyLCBjb21wb25lbnRzKQorICAgIHsKKyAgICAgICAgc3Vw
ZXIoaWRlbnRpZmllcik7CiAKLVdlYkluc3BlY3Rvci5IaWVyYXJjaGljYWxQYXRoTmF2aWdhdGlv
bkl0ZW0ucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuSGllcmFy
Y2hpY2FsUGF0aE5hdmlnYXRpb25JdGVtLAorICAgICAgICB0aGlzLmNvbXBvbmVudHMgPSBjb21w
b25lbnRzOworICAgIH0KIAogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IGNvbXBvbmVudHMoKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2NvbXBvbmVudHM7Ci0gICAgfSwKKyAgICB9CiAK
ICAgICBzZXQgY29tcG9uZW50cyhuZXdDb21wb25lbnRzKQogICAgIHsKQEAgLTY5LDE3ICs2Miwx
NyBAQCBXZWJJbnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0aE5hdmlnYXRpb25JdGVtLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgLy8gVXBkYXRlIGxheW91dCBmb3IgdGhlIHNvIG90aGVyIGl0ZW1zIGNh
biBhZGp1c3QgdG8gdGhlIGV4dHJhIHNwYWNlIChvciBsYWNrIHRoZXJlb2YpIHRvby4KICAgICAg
ICAgaWYgKHRoaXMucGFyZW50TmF2aWdhdGlvbkJhcikKICAgICAgICAgICAgIHRoaXMucGFyZW50
TmF2aWdhdGlvbkJhci51cGRhdGVMYXlvdXRTb29uKCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBn
ZXQgbGFzdENvbXBvbmVudCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fY29tcG9uZW50
cy5sYXN0VmFsdWUgfHwgbnVsbDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBhbHdheXNTaG93
TGFzdFBhdGhDb21wb25lbnRTZXBhcmF0b3IoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMu
ZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhO
YXZpZ2F0aW9uSXRlbS5BbHdheXNTaG93TGFzdFBhdGhDb21wb25lbnRTZXBhcmF0b3JTdHlsZUNs
YXNzTmFtZSk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgYWx3YXlzU2hvd0xhc3RQYXRoQ29t
cG9uZW50U2VwYXJhdG9yKGZsYWcpCiAgICAgewpAQCAtODcsOSArODAsOSBAQCBXZWJJbnNwZWN0
b3IuSGllcmFyY2hpY2FsUGF0aE5hdmlnYXRpb25JdGVtLnByb3RvdHlwZSA9IHsKICAgICAgICAg
ICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5IaWVyYXJjaGljYWxQ
YXRoTmF2aWdhdGlvbkl0ZW0uQWx3YXlzU2hvd0xhc3RQYXRoQ29tcG9uZW50U2VwYXJhdG9yU3R5
bGVDbGFzc05hbWUpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xh
c3NMaXN0LnJlbW92ZShXZWJJbnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0aE5hdmlnYXRpb25JdGVt
LkFsd2F5c1Nob3dMYXN0UGF0aENvbXBvbmVudFNlcGFyYXRvclN0eWxlQ2xhc3NOYW1lKTsKLSAg
ICB9LAorICAgIH0KIAotICAgIHVwZGF0ZUxheW91dDogZnVuY3Rpb24oZXhwYW5kT25seSkKKyAg
ICB1cGRhdGVMYXlvdXQoZXhwYW5kT25seSkKICAgICB7CiAgICAgICAgIHZhciBuYXZpZ2F0aW9u
QmFyID0gdGhpcy5wYXJlbnROYXZpZ2F0aW9uQmFyOwogICAgICAgICBpZiAoIW5hdmlnYXRpb25C
YXIpCkBAIC0yMjIsMTYgKzIxNSwyNSBAQCBXZWJJbnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0aE5h
dmlnYXRpb25JdGVtLnByb3RvdHlwZSA9IHsKIAogICAgICAgICAvLyBTZXQgdGhlIHRvb2wgdGlw
IG9mIHRoZSBjb2xsYXBzZWQgY29tcG9uZW50LgogICAgICAgICB0aGlzLl9jb2xsYXBzZWRDb21w
b25lbnQuZWxlbWVudC50aXRsZSA9IGhpZGRlbkRpc3BsYXlOYW1lcy5qb2luKCJcbiIpOwotICAg
IH0sCisgICAgfQogCi0gICAgLy8gUHJpdmF0ZQorICAgIC8vIFByb3RlY3RlZAogCi0gICAgX2Fk
ZGl0aW9uYWxDbGFzc05hbWVzOiBbV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhOYXZpZ2F0
aW9uSXRlbS5TdHlsZUNsYXNzTmFtZV0sCisgICAgZ2V0IGFkZGl0aW9uYWxDbGFzc05hbWVzKCkK
KyAgICB7CisgICAgICAgIHJldHVybiBbImhpZXJhcmNoaWNhbC1wYXRoIl07CisgICAgfQogCi0g
ICAgX3NpYmxpbmdQYXRoQ29tcG9uZW50V2FzU2VsZWN0ZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAg
IC8vIFByaXZhdGUKKworICAgIF9zaWJsaW5nUGF0aENvbXBvbmVudFdhc1NlbGVjdGVkKGV2ZW50
KQogICAgIHsKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVj
dG9yLkhpZXJhcmNoaWNhbFBhdGhOYXZpZ2F0aW9uSXRlbS5FdmVudC5QYXRoQ29tcG9uZW50V2Fz
U2VsZWN0ZWQsIGV2ZW50LmRhdGEpOwogICAgIH0KIH07CiAKLVdlYkluc3BlY3Rvci5IaWVyYXJj
aGljYWxQYXRoTmF2aWdhdGlvbkl0ZW0ucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rv
ci5OYXZpZ2F0aW9uSXRlbS5wcm90b3R5cGU7CitXZWJJbnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0
aE5hdmlnYXRpb25JdGVtLkFsd2F5c1Nob3dMYXN0UGF0aENvbXBvbmVudFNlcGFyYXRvclN0eWxl
Q2xhc3NOYW1lID0gImFsd2F5cy1zaG93LWxhc3QtcGF0aC1jb21wb25lbnQtc2VwYXJhdG9yIjsK
KworV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhOYXZpZ2F0aW9uSXRlbS5FdmVudCA9IHsK
KyAgICBQYXRoQ29tcG9uZW50V2FzU2VsZWN0ZWQ6ICJoaWVyYXJjaGljYWwtcGF0aC1uYXZpZ2F0
aW9uLWl0ZW0tcGF0aC1jb21wb25lbnQtd2FzLXNlbGVjdGVkIgorfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0hvdmVyTWVudS5qcyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0hvdmVyTWVudS5qcwppbmRl
eCBiOWJhZjIyOTg3NGQzMTM4NDAwYmU5ZDYyZDRmYzc0ZmM2ZjJjYjc5Li5lNWVkYjNmYzFhYjMw
NGVmMDFlNjdlOTY2YzliODMxY2FlYzE0NjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Ib3Zlck1lbnUuanMKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvSG92ZXJNZW51LmpzCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywzOCArMjMsMzIg
QEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0
b3IuSG92ZXJNZW51ID0gZnVuY3Rpb24oZGVsZWdhdGUpCitXZWJJbnNwZWN0b3IuSG92ZXJNZW51
ID0gY2xhc3MgSG92ZXJNZW51IGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogewotICAgIC8v
IEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBh
bmQgY2FsbCBzdXBlcigpLgotICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsK
LQotICAgIHRoaXMuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKLQotICAgIHRoaXMuX2VsZW1lbnQgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICB0aGlzLl9lbGVtZW50LmNsYXNzTmFt
ZSA9IFdlYkluc3BlY3Rvci5Ib3Zlck1lbnUuU3R5bGVDbGFzc05hbWU7Ci0gICAgdGhpcy5fZWxl
bWVudC5hZGRFdmVudExpc3RlbmVyKCJ0cmFuc2l0aW9uZW5kIiwgdGhpcywgdHJ1ZSk7CisgICAg
Y29uc3RydWN0b3IoZGVsZWdhdGUpCisgICAgeworICAgICAgICBzdXBlcigpOwogCi0gICAgdGhp
cy5fb3V0bGluZUVsZW1lbnQgPSB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAic3ZnIikpOworICAg
ICAgICB0aGlzLmRlbGVnYXRlID0gZGVsZWdhdGU7CiAKLSAgICB0aGlzLl9idXR0b24gPSB0aGlz
Ll9lbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImltZyIpKTsKLSAg
ICB0aGlzLl9idXR0b24uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzKTsKLX0KKyAgICAg
ICAgdGhpcy5fZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAg
ICB0aGlzLl9lbGVtZW50LmNsYXNzTmFtZSA9ICJob3Zlci1tZW51IjsKKyAgICAgICAgdGhpcy5f
ZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJ0cmFuc2l0aW9uZW5kIiwgdGhpcywgdHJ1ZSk7CiAK
LVdlYkluc3BlY3Rvci5Ib3Zlck1lbnUuU3R5bGVDbGFzc05hbWUgPSAiaG92ZXItbWVudSI7Ci1X
ZWJJbnNwZWN0b3IuSG92ZXJNZW51LlZpc2libGVDbGFzc05hbWUgPSAidmlzaWJsZSI7CisgICAg
ICAgIHRoaXMuX291dGxpbmVFbGVtZW50ID0gdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZChkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInN2ZyIp
KTsKIAotV2ViSW5zcGVjdG9yLkhvdmVyTWVudS5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0
b3I6IFdlYkluc3BlY3Rvci5Ib3Zlck1lbnUsCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3Iu
T2JqZWN0LnByb3RvdHlwZSwKKyAgICAgICAgdGhpcy5fYnV0dG9uID0gdGhpcy5fZWxlbWVudC5h
cHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbWciKSk7CisgICAgICAgIHRoaXMu
X2J1dHRvbi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMpOworICAgIH0KIAogICAgIC8v
IFB1YmxpYwogCiAgICAgZ2V0IGVsZW1lbnQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMu
X2VsZW1lbnQ7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBwcmVzZW50OiBmdW5jdGlvbihyZWN0cykK
KyAgICBwcmVzZW50KHJlY3RzKQogICAgIHsKICAgICAgICAgdGhpcy5fb3V0bGluZUVsZW1lbnQu
dGV4dENvbnRlbnQgPSAiIjsKIApAQCAtNjMsOSArNTcsOSBAQCBXZWJJbnNwZWN0b3IuSG92ZXJN
ZW51LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdl
Ykluc3BlY3Rvci5Ib3Zlck1lbnUuVmlzaWJsZUNsYXNzTmFtZSk7CiAKICAgICAgICAgd2luZG93
LmFkZEV2ZW50TGlzdGVuZXIoInNjcm9sbCIsIHRoaXMsIHRydWUpOwotICAgIH0sCisgICAgfQog
Ci0gICAgZGlzbWlzczogZnVuY3Rpb24oZGlzY3JldGUpCisgICAgZGlzbWlzcyhkaXNjcmV0ZSkK
ICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9lbGVtZW50LnBhcmVudE5vZGUgIT09IGRvY3VtZW50
LmJvZHkpCiAgICAgICAgICAgICByZXR1cm47CkBAIC03NiwxMSArNzAsMTEgQEAgV2ViSW5zcGVj
dG9yLkhvdmVyTWVudS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NM
aXN0LnJlbW92ZShXZWJJbnNwZWN0b3IuSG92ZXJNZW51LlZpc2libGVDbGFzc05hbWUpOwogCiAg
ICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJzY3JvbGwiLCB0aGlzLCB0cnVlKTsK
LSAgICB9LAorICAgIH0KIAogICAgIC8vIFByb3RlY3RlZAogCi0gICAgaGFuZGxlRXZlbnQ6IGZ1
bmN0aW9uKGV2ZW50KQorICAgIGhhbmRsZUV2ZW50KGV2ZW50KQogICAgIHsKICAgICAgICAgc3dp
dGNoIChldmVudC50eXBlKSB7CiAgICAgICAgIGNhc2UgInNjcm9sbCI6CkBAIC05NSwxNyArODks
MTcgQEAgV2ViSW5zcGVjdG9yLkhvdmVyTWVudS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAg
ICAgdGhpcy5fZWxlbWVudC5yZW1vdmUoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcml2YXRlCiAKLSAgICBfaGFuZGxlQ2xpY2tFdmVu
dDogZnVuY3Rpb24oZXZlbnQpCisgICAgX2hhbmRsZUNsaWNrRXZlbnQoZXZlbnQpCiAgICAgewog
ICAgICAgICBpZiAodGhpcy5kZWxlZ2F0ZSAmJiB0eXBlb2YgdGhpcy5kZWxlZ2F0ZS5ob3Zlck1l
bnVCdXR0b25XYXNQcmVzc2VkID09PSAiZnVuY3Rpb24iKQogICAgICAgICAgICAgdGhpcy5kZWxl
Z2F0ZS5ob3Zlck1lbnVCdXR0b25XYXNQcmVzc2VkKHRoaXMpOwotICAgIH0sCisgICAgfQogCi0g
ICAgX2RyYXdPdXRsaW5lOiBmdW5jdGlvbihyZWN0cykKKyAgICBfZHJhd091dGxpbmUocmVjdHMp
CiAgICAgewogICAgICAgICB2YXIgYnV0dG9uV2lkdGggPSB0aGlzLl9idXR0b24ud2lkdGg7CiAg
ICAgICAgIHZhciBidXR0b25IZWlnaHQgPSB0aGlzLl9idXR0b24uaGVpZ2h0OwpAQCAtMTM1LDEx
ICsxMjksMTEgQEAgV2ViSW5zcGVjdG9yLkhvdmVyTWVudS5wcm90b3R5cGUgPSB7CiAKICAgICAg
ICAgdGhpcy5fYnV0dG9uLnN0eWxlLmxlZnQgPSAobGFzdFJlY3QubWF4WCgpIC0gYm91bmRzLm1p
blgoKSAtIGJ1dHRvbldpZHRoKSArICJweCI7CiAgICAgICAgIHRoaXMuX2J1dHRvbi5zdHlsZS50
b3AgPSAobGFzdFJlY3QubWF4WSgpIC0gYm91bmRzLm1pblkoKSAtIGJ1dHRvbkhlaWdodCkgKyAi
cHgiOwotICAgIH0sCisgICAgfQogCi0gICAgX2FkZFJlY3Q6IGZ1bmN0aW9uKHJlY3QpCisgICAg
X2FkZFJlY3QocmVjdCkKICAgICB7Ci0gICAgICAgIGNvbnN0IHIgPSA0OworICAgICAgICB2YXIg
ciA9IDQ7CiAKICAgICAgICAgdmFyIHN2Z1JlY3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInJlY3QiKTsKICAgICAgICAgc3ZnUmVjdC5z
ZXRBdHRyaWJ1dGUoIngiLCAxKTsKQEAgLTE0OSwyNCArMTQzLDI0IEBAIFdlYkluc3BlY3Rvci5I
b3Zlck1lbnUucHJvdG90eXBlID0gewogICAgICAgICBzdmdSZWN0LnNldEF0dHJpYnV0ZSgicngi
LCByKTsKICAgICAgICAgc3ZnUmVjdC5zZXRBdHRyaWJ1dGUoInJ5Iiwgcik7CiAgICAgICAgIHJl
dHVybiB0aGlzLl9vdXRsaW5lRWxlbWVudC5hcHBlbmRDaGlsZChzdmdSZWN0KTsKLSAgICB9LAor
ICAgIH0KIAotICAgIF9hZGRQYXRoOiBmdW5jdGlvbihjb21tYW5kcywgdHgsIHR5KQorICAgIF9h
ZGRQYXRoKGNvbW1hbmRzLCB0eCwgdHkpCiAgICAgewogICAgICAgICB2YXIgcGF0aCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAicGF0aCIp
OwogICAgICAgICBwYXRoLnNldEF0dHJpYnV0ZSgiZCIsIGNvbW1hbmRzLmpvaW4oIiAiKSk7CiAg
ICAgICAgIHBhdGguc2V0QXR0cmlidXRlKCJ0cmFuc2Zvcm0iLCAidHJhbnNsYXRlKCIgKyAodHgg
KyAxKSArICIsIiArICh0eSArIDEpICsgIikiKTsKICAgICAgICAgcmV0dXJuIHRoaXMuX291dGxp
bmVFbGVtZW50LmFwcGVuZENoaWxkKHBhdGgpOwotICAgIH0sCisgICAgfQogCi0gICAgX2RyYXdT
aW5nbGVMaW5lOiBmdW5jdGlvbihyZWN0KQorICAgIF9kcmF3U2luZ2xlTGluZShyZWN0KQogICAg
IHsKICAgICAgICAgdGhpcy5fYWRkUmVjdChyZWN0LnBhZCgyKSk7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBfZHJhd1R3b05vbk92ZXJsYXBwaW5nTGluZXM6IGZ1bmN0aW9uKHJlY3RzKQorICAgIF9k
cmF3VHdvTm9uT3ZlcmxhcHBpbmdMaW5lcyhyZWN0cykKICAgICB7Ci0gICAgICAgIGNvbnN0IHIg
PSA0OworICAgICAgICB2YXIgciA9IDQ7CiAKICAgICAgICAgdmFyIGZpcnN0UmVjdCA9IHJlY3Rz
WzBdLnBhZCgyKTsKICAgICAgICAgdmFyIHNlY29uZFJlY3QgPSByZWN0c1sxXS5wYWQoMik7CkBA
IC0xOTMsMTIgKzE4NywxMiBAQCBXZWJJbnNwZWN0b3IuSG92ZXJNZW51LnByb3RvdHlwZSA9IHsK
ICAgICAgICAgICAgICJxIiwgMCwgciwgLXIsIHIsCiAgICAgICAgICAgICAiSCIsIHJlY3QubWlu
WCgpCiAgICAgICAgIF0sIHR4LCB0eSk7Ci0gICAgfSwKKyAgICB9CiAgICAgCi0gICAgX2RyYXdP
dmVybGFwcGluZ0xpbmVzOiBmdW5jdGlvbihyZWN0cykKKyAgICBfZHJhd092ZXJsYXBwaW5nTGlu
ZXMocmVjdHMpCiAgICAgewotICAgICAgICBjb25zdCBQQURESU5HID0gMjsKLSAgICAgICAgY29u
c3QgciA9IDQ7CisgICAgICAgIHZhciBQQURESU5HID0gMjsKKyAgICAgICAgdmFyIHIgPSA0Owog
CiAgICAgICAgIHZhciBtaW5YID0gTnVtYmVyLk1BWF9WQUxVRTsKICAgICAgICAgdmFyIG1heFgg
PSAtTnVtYmVyLk1BWF9WQUxVRTsKQEAgLTIxOSw3ICsyMTMsNyBAQCBXZWJJbnNwZWN0b3IuSG92
ZXJNZW51LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybiB0aGlzLl9hZGRSZWN0KG5l
dyBXZWJJbnNwZWN0b3IuUmVjdChtaW5YLCBtaW5ZLCBtYXhYIC0gbWluWCwgbWF4WSAtIG1pblkp
KTsKICAgICAgICAgCiAgICAgICAgIHZhciBsYXN0TGluZU1pblkgPSByZWN0cy5sYXN0VmFsdWUu
bWluWSgpICsgUEFERElORzsKLSAgICAgICAgaWYgKHJlY3RzWzBdLm1pblgoKSA9PT0gbWluWCAr
IFBBRERJTkcpCisgICAgICAgIGlmIChyZWN0c1swXS5taW5YKCkgPT09IG1pblggKyBQQURESU5H
KSB7CiAgICAgICAgICAgICByZXR1cm4gdGhpcy5fYWRkUGF0aChbCiAgICAgICAgICAgICAgICAg
Ik0iLCBtaW5YICsgciwgbWluWSwKICAgICAgICAgICAgICAgICAiSCIsIG1heFggLSByLApAQCAt
MjM1LDkgKzIyOSwxMCBAQCBXZWJJbnNwZWN0b3IuSG92ZXJNZW51LnByb3RvdHlwZSA9IHsKICAg
ICAgICAgICAgICAgICAiViIsIG1pblkgKyByLAogICAgICAgICAgICAgICAgICJxIiwgMCwgLXIs
IHIsIC1yCiAgICAgICAgICAgICBdLCAtbWluWCwgLW1pblkpOwotICAgICAgICAKKyAgICAgICAg
fQorCiAgICAgICAgIHZhciBmaXJzdExpbmVNYXhZID0gcmVjdHNbMF0ubWF4WSgpIC0gUEFERElO
RzsKLSAgICAgICAgaWYgKHJlY3RzLmxhc3RWYWx1ZS5tYXhYKCkgPT09IG1heFggLSBQQURESU5H
KQorICAgICAgICBpZiAocmVjdHMubGFzdFZhbHVlLm1heFgoKSA9PT0gbWF4WCAtIFBBRERJTkcp
IHsKICAgICAgICAgICAgIHJldHVybiB0aGlzLl9hZGRQYXRoKFsKICAgICAgICAgICAgICAgICAi
TSIsIGZpcnN0TGluZU1pblggKyByLCBtaW5ZLAogICAgICAgICAgICAgICAgICJIIiwgbWF4WCAt
IHIsCkBAIC0yNTMsNyArMjQ4LDggQEAgV2ViSW5zcGVjdG9yLkhvdmVyTWVudS5wcm90b3R5cGUg
PSB7CiAgICAgICAgICAgICAgICAgIlYiLCBtaW5ZICsgciwKICAgICAgICAgICAgICAgICAicSIs
IDAsIC1yLCByLCAtcgogICAgICAgICAgICAgXSwgLW1pblgsIC1taW5ZKTsKLSAgICAgICAgCisg
ICAgICAgIH0KKwogICAgICAgICByZXR1cm4gdGhpcy5fYWRkUGF0aChbCiAgICAgICAgICAgICAi
TSIsIGZpcnN0TGluZU1pblggKyByLCBtaW5ZLAogICAgICAgICAgICAgIkgiLCBtYXhYIC0gciwK
QEAgLTI3NCw0ICsyNzAsNiBAQCBXZWJJbnNwZWN0b3IuSG92ZXJNZW51LnByb3RvdHlwZSA9IHsK
ICAgICAgICAgICAgICJxIiwgMCwgLXIsIHIsIC1yCiAgICAgICAgIF0sIC1taW5YLCAtbWluWSk7
CiAgICAgfQotfQorfTsKKworV2ViSW5zcGVjdG9yLkhvdmVyTWVudS5WaXNpYmxlQ2xhc3NOYW1l
ID0gInZpc2libGUiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvUG9wb3Zlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL1BvcG92ZXIuanMKaW5kZXggZjZkOTljNTEzMDE0MTIzNzUwMmI4NGViNGRmMjA4
OTY5ZjgwOThmMC4uYzU4N2IyYWJjZjFjN2VlZDFkMWE1NDI4MmIyY2FiY2QxNWVmYTllYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUG9wb3Zl
ci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Qb3Bv
dmVyLmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0yMyw2MCArMjMsNDggQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KICAqLwogCi1XZWJJbnNwZWN0b3IuUG9wb3ZlciA9IGZ1bmN0aW9uKGRlbGVnYXRlKSB7Ci0g
ICAgLy8gRklYTUU6IENvbnZlcnQgdGhpcyB0byBhIFdlYkluc3BlY3Rvci5PYmplY3Qgc3ViY2xh
c3MsIGFuZCBjYWxsIHN1cGVyKCkuCi0gICAgLy8gV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRo
aXMpOwotCi0gICAgdGhpcy5kZWxlZ2F0ZSA9IGRlbGVnYXRlOwotICAgIHRoaXMuX2VkZ2UgPSBu
dWxsOwotICAgIHRoaXMuX2ZyYW1lID0gbmV3IFdlYkluc3BlY3Rvci5SZWN0OwotICAgIHRoaXMu
X2NvbnRlbnQgPSBudWxsOwotICAgIHRoaXMuX3RhcmdldEZyYW1lID0gbmV3IFdlYkluc3BlY3Rv
ci5SZWN0OwotICAgIHRoaXMuX2FuY2hvclBvaW50ID0gbmV3IFdlYkluc3BlY3Rvci5Qb2ludDsK
LSAgICB0aGlzLl9wcmVmZXJyZWRFZGdlcyA9IG51bGw7CitXZWJJbnNwZWN0b3IuUG9wb3ZlciA9
IGNsYXNzIFBvcG92ZXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0Cit7CisgICAgY29uc3Ry
dWN0b3IoZGVsZWdhdGUpCisgICAgeworICAgICAgICBzdXBlcigpOwogCi0gICAgdGhpcy5fY29u
dGVudE5lZWRzVXBkYXRlID0gZmFsc2U7CisgICAgICAgIHRoaXMuZGVsZWdhdGUgPSBkZWxlZ2F0
ZTsKKyAgICAgICAgdGhpcy5fZWRnZSA9IG51bGw7CisgICAgICAgIHRoaXMuX2ZyYW1lID0gbmV3
IFdlYkluc3BlY3Rvci5SZWN0OworICAgICAgICB0aGlzLl9jb250ZW50ID0gbnVsbDsKKyAgICAg
ICAgdGhpcy5fdGFyZ2V0RnJhbWUgPSBuZXcgV2ViSW5zcGVjdG9yLlJlY3Q7CisgICAgICAgIHRo
aXMuX2FuY2hvclBvaW50ID0gbmV3IFdlYkluc3BlY3Rvci5Qb2ludDsKKyAgICAgICAgdGhpcy5f
cHJlZmVycmVkRWRnZXMgPSBudWxsOwogCi0gICAgdGhpcy5fZWxlbWVudCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NOYW1lID0gV2ViSW5z
cGVjdG9yLlBvcG92ZXIuU3R5bGVDbGFzc05hbWU7Ci0gICAgdGhpcy5fY2FudmFzSWQgPSAicG9w
b3Zlci0iICsgKFdlYkluc3BlY3Rvci5Qb3BvdmVyLmNhbnZhc0lkKyspOwotICAgIHRoaXMuX2Vs
ZW1lbnQuc3R5bGUuYmFja2dyb3VuZEltYWdlID0gIi13ZWJraXQtY2FudmFzKCIgKyB0aGlzLl9j
YW52YXNJZCArICIpIjsKLSAgICB0aGlzLl9lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoInRyYW5z
aXRpb25lbmQiLCB0aGlzLCB0cnVlKTsKKyAgICAgICAgdGhpcy5fY29udGVudE5lZWRzVXBkYXRl
ID0gZmFsc2U7CiAKLSAgICB0aGlzLl9jb250YWluZXIgPSB0aGlzLl9lbGVtZW50LmFwcGVuZENo
aWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpKTsKLSAgICB0aGlzLl9jb250YWluZXIu
Y2xhc3NOYW1lID0gImNvbnRhaW5lciI7Ci19OworICAgICAgICB0aGlzLl9lbGVtZW50ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NO
YW1lID0gInBvcG92ZXIiOworICAgICAgICB0aGlzLl9jYW52YXNJZCA9ICJwb3BvdmVyLSIgKyAo
V2ViSW5zcGVjdG9yLlBvcG92ZXIuY2FudmFzSWQrKyk7CisgICAgICAgIHRoaXMuX2VsZW1lbnQu
c3R5bGUuYmFja2dyb3VuZEltYWdlID0gIi13ZWJraXQtY2FudmFzKCIgKyB0aGlzLl9jYW52YXNJ
ZCArICIpIjsKKyAgICAgICAgdGhpcy5fZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJ0cmFuc2l0
aW9uZW5kIiwgdGhpcywgdHJ1ZSk7CiAKLVdlYkluc3BlY3Rvci5Qb3BvdmVyLlN0eWxlQ2xhc3NO
YW1lID0gInBvcG92ZXIiOwotV2ViSW5zcGVjdG9yLlBvcG92ZXIuRmFkZU91dENsYXNzTmFtZSA9
ICJmYWRlLW91dCI7Ci1XZWJJbnNwZWN0b3IuUG9wb3Zlci5jYW52YXNJZCA9IDA7Ci1XZWJJbnNw
ZWN0b3IuUG9wb3Zlci5Db3JuZXJSYWRpdXMgPSA1OwotV2ViSW5zcGVjdG9yLlBvcG92ZXIuTWlu
V2lkdGggPSA0MDsKLVdlYkluc3BlY3Rvci5Qb3BvdmVyLk1pbkhlaWdodCA9IDQwOwotV2ViSW5z
cGVjdG9yLlBvcG92ZXIuU2hhZG93UGFkZGluZyA9IDU7Ci1XZWJJbnNwZWN0b3IuUG9wb3Zlci5D
b250ZW50UGFkZGluZyA9IDU7Ci1XZWJJbnNwZWN0b3IuUG9wb3Zlci5BbmNob3JTaXplID0gbmV3
IFdlYkluc3BlY3Rvci5TaXplKDIyLCAxMSk7Ci1XZWJJbnNwZWN0b3IuUG9wb3Zlci5TaGFkb3dF
ZGdlSW5zZXRzID0gbmV3IFdlYkluc3BlY3Rvci5FZGdlSW5zZXRzKFdlYkluc3BlY3Rvci5Qb3Bv
dmVyLlNoYWRvd1BhZGRpbmcpOwotCi1XZWJJbnNwZWN0b3IuUG9wb3Zlci5wcm90b3R5cGUgPSB7
Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5Qb3BvdmVyLAorICAgICAgICB0aGlzLl9j
b250YWluZXIgPSB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoImRpdiIpKTsKKyAgICAgICAgdGhpcy5fY29udGFpbmVyLmNsYXNzTmFtZSA9ICJjb250YWlu
ZXIiOworICAgIH0KIAogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IGVsZW1lbnQoKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQg
ZnJhbWUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2ZyYW1lOwotICAgIH0sCisgICAg
fQogCiAgICAgZ2V0IHZpc2libGUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW1l
bnQucGFyZW50Tm9kZSA9PT0gZG9jdW1lbnQuYm9keSAmJiAhdGhpcy5fZWxlbWVudC5jbGFzc0xp
c3QuY29udGFpbnMoV2ViSW5zcGVjdG9yLlBvcG92ZXIuRmFkZU91dENsYXNzTmFtZSk7Ci0gICAg
fSwKKyAgICB9CiAKICAgICBzZXQgZnJhbWUoZnJhbWUpCiAgICAgewpAQCAtODYsNyArNzQsNyBA
QCBXZWJJbnNwZWN0b3IuUG9wb3Zlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2VsZW1l
bnQuc3R5bGUuaGVpZ2h0ID0gZnJhbWUuc2l6ZS5oZWlnaHQgKyAicHgiOwogICAgICAgICB0aGlz
Ll9lbGVtZW50LnN0eWxlLmJhY2tncm91bmRTaXplID0gZnJhbWUuc2l6ZS53aWR0aCArICJweCAi
ICsgZnJhbWUuc2l6ZS5oZWlnaHQgKyAicHgiOwogICAgICAgICB0aGlzLl9mcmFtZSA9IGZyYW1l
OwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IGNvbnRlbnQoY29udGVudCkKICAgICB7CkBAIC05
OSw5ICs4Nyw5IEBAIFdlYkluc3BlY3Rvci5Qb3BvdmVyLnByb3RvdHlwZSA9IHsKIAogICAgICAg
ICBpZiAodGhpcy52aXNpYmxlKQogICAgICAgICAgICAgdGhpcy5fdXBkYXRlKHRydWUpOwotICAg
IH0sCisgICAgfQogCi0gICAgdXBkYXRlOiBmdW5jdGlvbigpCisgICAgdXBkYXRlKCkKICAgICB7
CiAgICAgICAgIGlmICghdGhpcy52aXNpYmxlKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTEz
LDkgKzEwMSw5IEBAIFdlYkluc3BlY3Rvci5Qb3BvdmVyLnByb3RvdHlwZSA9IHsKIAogICAgICAg
ICBpZiAocHJldmlvdXNseUZvY3VzZWRFbGVtZW50KQogICAgICAgICAgICAgcHJldmlvdXNseUZv
Y3VzZWRFbGVtZW50LmZvY3VzKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBwcmVzZW50OiBmdW5j
dGlvbih0YXJnZXRGcmFtZSwgcHJlZmVycmVkRWRnZXMpCisgICAgcHJlc2VudCh0YXJnZXRGcmFt
ZSwgcHJlZmVycmVkRWRnZXMpCiAgICAgewogICAgICAgICB0aGlzLl90YXJnZXRGcmFtZSA9IHRh
cmdldEZyYW1lOwogICAgICAgICB0aGlzLl9wcmVmZXJyZWRFZGdlcyA9IHByZWZlcnJlZEVkZ2Vz
OwpAQCAtMTI2LDkgKzExNCw5IEBAIFdlYkluc3BlY3Rvci5Qb3BvdmVyLnByb3RvdHlwZSA9IHsK
ICAgICAgICAgdGhpcy5fYWRkTGlzdGVuZXJzSWZOZWVkZWQoKTsKIAogICAgICAgICB0aGlzLl91
cGRhdGUoKTsKLSAgICB9LAorICAgIH0KIAotICAgIHByZXNlbnROZXdDb250ZW50V2l0aEZyYW1l
OiBmdW5jdGlvbihjb250ZW50LCB0YXJnZXRGcmFtZSwgcHJlZmVycmVkRWRnZXMpCisgICAgcHJl
c2VudE5ld0NvbnRlbnRXaXRoRnJhbWUoY29udGVudCwgdGFyZ2V0RnJhbWUsIHByZWZlcnJlZEVk
Z2VzKQogICAgIHsKICAgICAgICAgdGhpcy5fY29udGVudCA9IGNvbnRlbnQ7CiAgICAgICAgIHRo
aXMuX2NvbnRlbnROZWVkc1VwZGF0ZSA9IHRydWU7CkBAIC0xNDAsOSArMTI4LDkgQEAgV2ViSW5z
cGVjdG9yLlBvcG92ZXIucHJvdG90eXBlID0gewogCiAgICAgICAgIHZhciBzaG91bGRBbmltYXRl
ID0gdGhpcy52aXNpYmxlOwogICAgICAgICB0aGlzLl91cGRhdGUoc2hvdWxkQW5pbWF0ZSk7Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBkaXNtaXNzOiBmdW5jdGlvbigpCisgICAgZGlzbWlzcygpCiAg
ICAgewogICAgICAgICBpZiAodGhpcy5fZWxlbWVudC5wYXJlbnROb2RlICE9PSBkb2N1bWVudC5i
b2R5KQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTU2LDkgKzE0NCw5IEBAIFdlYkluc3BlY3Rv
ci5Qb3BvdmVyLnByb3RvdHlwZSA9IHsKIAogICAgICAgICBpZiAodGhpcy5kZWxlZ2F0ZSAmJiB0
eXBlb2YgdGhpcy5kZWxlZ2F0ZS53aWxsRGlzbWlzc1BvcG92ZXIgPT09ICJmdW5jdGlvbiIpCiAg
ICAgICAgICAgICB0aGlzLmRlbGVnYXRlLndpbGxEaXNtaXNzUG9wb3Zlcih0aGlzKTsKLSAgICB9
LAorICAgIH0KIAotICAgIGhhbmRsZUV2ZW50OiBmdW5jdGlvbihldmVudCkKKyAgICBoYW5kbGVF
dmVudChldmVudCkKICAgICB7CiAgICAgICAgIHN3aXRjaCAoZXZlbnQudHlwZSkgewogICAgICAg
ICBjYXNlICJtb3VzZWRvd24iOgpAQCAtMTc2LDExICsxNjQsMTEgQEAgV2ViSW5zcGVjdG9yLlBv
cG92ZXIucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
fQogICAgICAgICB9Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcml2YXRlCiAKLSAgICBfdXBk
YXRlOiBmdW5jdGlvbihzaG91bGRBbmltYXRlKQorICAgIF91cGRhdGUoc2hvdWxkQW5pbWF0ZSkK
ICAgICB7CiAgICAgICAgIGlmIChzaG91bGRBbmltYXRlKQogICAgICAgICAgICAgdmFyIHByZXZp
b3VzRWRnZSA9IHRoaXMuX2VkZ2U7CkBAIC0yMTIsNyArMjAwLDcgQEAgV2ViSW5zcGVjdG9yLlBv
cG92ZXIucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5fcHJlZmVycmVkU2l6ZSA9IG5l
dyBXZWJJbnNwZWN0b3IuU2l6ZShNYXRoLmNlaWwocG9wb3ZlckJvdW5kcy53aWR0aCksIE1hdGgu
Y2VpbChwb3BvdmVyQm91bmRzLmhlaWdodCkpOwogICAgICAgICB9CiAKLSAgICAgICAgY29uc3Qg
dGl0bGVCYXJPZmZzZXQgPSBXZWJJbnNwZWN0b3IuUGxhdGZvcm0ubmFtZSA9PT0gIm1hYyIgJiYg
IVdlYkluc3BlY3Rvci5QbGF0Zm9ybS5pc0xlZ2FjeU1hY09TID8gMjIgOiAwOworICAgICAgICB2
YXIgdGl0bGVCYXJPZmZzZXQgPSBXZWJJbnNwZWN0b3IuUGxhdGZvcm0ubmFtZSA9PT0gIm1hYyIg
JiYgIVdlYkluc3BlY3Rvci5QbGF0Zm9ybS5pc0xlZ2FjeU1hY09TID8gMjIgOiAwOwogICAgICAg
ICB2YXIgY29udGFpbmVyRnJhbWUgPSBuZXcgV2ViSW5zcGVjdG9yLlJlY3QoMCwgdGl0bGVCYXJP
ZmZzZXQsIHdpbmRvdy5pbm5lcldpZHRoLCB3aW5kb3cuaW5uZXJIZWlnaHQgLSB0aXRsZUJhck9m
ZnNldCk7CiAgICAgICAgIC8vIFRoZSBmcmFtZSBvZiB0aGUgd2luZG93IHdpdGggYSBsaXR0bGUg
aW5zZXQgdG8gbWFrZSBzdXJlIHdlIGhhdmUgcm9vbSBmb3Igc2hhZG93cy4KICAgICAgICAgY29u
dGFpbmVyRnJhbWUgPSBjb250YWluZXJGcmFtZS5pbnNldChXZWJJbnNwZWN0b3IuUG9wb3Zlci5T
aGFkb3dFZGdlSW5zZXRzKTsKQEAgLTI5Nyw5ICsyODUsOSBAQCBXZWJJbnNwZWN0b3IuUG9wb3Zl
ci5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICB0aGlzLl9jb250ZW50TmVlZHNV
cGRhdGUgPSBmYWxzZTsKLSAgICB9LAorICAgIH0KIAotICAgIF9jc3NDbGFzc05hbWVGb3JFZGdl
OiBmdW5jdGlvbigpCisgICAgX2Nzc0NsYXNzTmFtZUZvckVkZ2UoKQogICAgIHsKICAgICAgICAg
c3dpdGNoICh0aGlzLl9lZGdlKSB7CiAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlJlY3RFZGdl
Lk1JTl9YOiAvLyBEaXNwbGF5ZWQgb24gdGhlIGxlZnQgb2YgdGhlIHRhcmdldCwgYXJyb3cgcG9p
bnRzIHJpZ2h0LgpAQCAtMzEzLDE1ICszMDEsMTUgQEAgV2ViSW5zcGVjdG9yLlBvcG92ZXIucHJv
dG90eXBlID0gewogICAgICAgICB9CiAgICAgICAgIGNvbnNvbGUuZXJyb3IoIlVua25vd24gZWRn
ZS4iKTsKICAgICAgICAgcmV0dXJuICJhcnJvdy11cCI7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBf
c2V0QW5jaG9yUG9pbnQ6IGZ1bmN0aW9uKGFuY2hvclBvaW50KSB7CisgICAgX3NldEFuY2hvclBv
aW50KGFuY2hvclBvaW50KSB7CiAgICAgICAgIGFuY2hvclBvaW50LnggPSBNYXRoLmZsb29yKGFu
Y2hvclBvaW50LngpOwogICAgICAgICBhbmNob3JQb2ludC55ID0gTWF0aC5mbG9vcihhbmNob3JQ
b2ludC55KTsKICAgICAgICAgdGhpcy5fYW5jaG9yUG9pbnQgPSBhbmNob3JQb2ludDsKLSAgICB9
LAorICAgIH0KIAotICAgIF9hbmltYXRlRnJhbWU6IGZ1bmN0aW9uKHRvRnJhbWUsIHRvQW5jaG9y
KQorICAgIF9hbmltYXRlRnJhbWUodG9GcmFtZSwgdG9BbmNob3IpCiAgICAgewogICAgICAgICB2
YXIgc3RhcnRUaW1lID0gRGF0ZS5ub3coKTsKICAgICAgICAgdmFyIGR1cmF0aW9uID0gMzUwOwpA
QCAtMzU5LDkgKzM0Nyw5IEBAIFdlYkluc3BlY3Rvci5Qb3BvdmVyLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgfQogCiAgICAgICAgIGRyYXdCYWNrZ3JvdW5kLmNhbGwodGhpcyk7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBfZHJhd0JhY2tncm91bmQ6IGZ1bmN0aW9uKCkKKyAgICBfZHJhd0JhY2tncm91
bmQoKQogICAgIHsKICAgICAgICAgdmFyIHNjYWxlRmFjdG9yID0gd2luZG93LmRldmljZVBpeGVs
UmF0aW87CiAKQEAgLTQyOSw5ICs0MTcsOSBAQCBXZWJJbnNwZWN0b3IuUG9wb3Zlci5wcm90b3R5
cGUgPSB7CiAgICAgICAgIGZpbmFsQ29udGV4dC5zaGFkb3dDb2xvciA9ICJyZ2JhKDAsIDAsIDAs
IDAuNSkiOwogCiAgICAgICAgIGZpbmFsQ29udGV4dC5kcmF3SW1hZ2Uoc2NyYXRjaENhbnZhcywg
MCwgMCwgc2NhbGVkV2lkdGgsIHNjYWxlZEhlaWdodCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBf
YmVzdE1ldHJpY3NGb3JFZGdlOiBmdW5jdGlvbihwcmVmZXJyZWRTaXplLCB0YXJnZXRGcmFtZSwg
Y29udGFpbmVyRnJhbWUsIGVkZ2UpCisgICAgX2Jlc3RNZXRyaWNzRm9yRWRnZShwcmVmZXJyZWRT
aXplLCB0YXJnZXRGcmFtZSwgY29udGFpbmVyRnJhbWUsIGVkZ2UpCiAgICAgewogICAgICAgICB2
YXIgeCwgeTsKICAgICAgICAgdmFyIHdpZHRoID0gcHJlZmVycmVkU2l6ZS53aWR0aCArIChXZWJJ
bnNwZWN0b3IuUG9wb3Zlci5TaGFkb3dQYWRkaW5nICogMikgKyAoV2ViSW5zcGVjdG9yLlBvcG92
ZXIuQ29udGVudFBhZGRpbmcgKiAyKTsKQEAgLTQ5NCw5ICs0ODIsOSBAQCBXZWJJbnNwZWN0b3Iu
UG9wb3Zlci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBmcmFtZTogYmVzdEZyYW1lLAogICAg
ICAgICAgICAgY29udGVudFNpemU6IG5ldyBXZWJJbnNwZWN0b3IuU2l6ZSh3aWR0aCwgaGVpZ2h0
KQogICAgICAgICB9OwotICAgIH0sCisgICAgfQogCi0gICAgX2RyYXdGcmFtZTogZnVuY3Rpb24o
Y3R4LCBib3VuZHMsIGFuY2hvckVkZ2UpCisgICAgX2RyYXdGcmFtZShjdHgsIGJvdW5kcywgYW5j
aG9yRWRnZSkKICAgICB7CiAgICAgICAgIHZhciByID0gV2ViSW5zcGVjdG9yLlBvcG92ZXIuQ29y
bmVyUmFkaXVzOwogICAgICAgICB2YXIgYXJyb3dIYWxmTGVuZ3RoID0gV2ViSW5zcGVjdG9yLlBv
cG92ZXIuQW5jaG9yU2l6ZS53aWR0aCAvIDI7CkBAIC01NDYsOSArNTM0LDkgQEAgV2ViSW5zcGVj
dG9yLlBvcG92ZXIucHJvdG90eXBlID0gewogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICAgICAgY3R4LmNsb3NlUGF0aCgpOwotICAgIH0sCisgICAgfQogCi0gICAgX2FkZExpc3Rl
bmVyc0lmTmVlZGVkOiBmdW5jdGlvbigpCisgICAgX2FkZExpc3RlbmVyc0lmTmVlZGVkKCkKICAg
ICB7CiAgICAgICAgIGlmICghdGhpcy5faXNMaXN0ZW5pbmdGb3JQb3BvdmVyRXZlbnRzKSB7CiAg
ICAgICAgICAgICB0aGlzLl9pc0xpc3RlbmluZ0ZvclBvcG92ZXJFdmVudHMgPSB0cnVlOwpAQCAt
NTU4LDQgKzU0NiwxMiBAQCBXZWJJbnNwZWN0b3IuUG9wb3Zlci5wcm90b3R5cGUgPSB7CiAgICAg
fQogfTsKIAotV2ViSW5zcGVjdG9yLlBvcG92ZXIucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYklu
c3BlY3Rvci5PYmplY3QucHJvdG90eXBlOworV2ViSW5zcGVjdG9yLlBvcG92ZXIuRmFkZU91dENs
YXNzTmFtZSA9ICJmYWRlLW91dCI7CitXZWJJbnNwZWN0b3IuUG9wb3Zlci5jYW52YXNJZCA9IDA7
CitXZWJJbnNwZWN0b3IuUG9wb3Zlci5Db3JuZXJSYWRpdXMgPSA1OworV2ViSW5zcGVjdG9yLlBv
cG92ZXIuTWluV2lkdGggPSA0MDsKK1dlYkluc3BlY3Rvci5Qb3BvdmVyLk1pbkhlaWdodCA9IDQw
OworV2ViSW5zcGVjdG9yLlBvcG92ZXIuU2hhZG93UGFkZGluZyA9IDU7CitXZWJJbnNwZWN0b3Iu
UG9wb3Zlci5Db250ZW50UGFkZGluZyA9IDU7CitXZWJJbnNwZWN0b3IuUG9wb3Zlci5BbmNob3JT
aXplID0gbmV3IFdlYkluc3BlY3Rvci5TaXplKDIyLCAxMSk7CitXZWJJbnNwZWN0b3IuUG9wb3Zl
ci5TaGFkb3dFZGdlSW5zZXRzID0gbmV3IFdlYkluc3BlY3Rvci5FZGdlSW5zZXRzKFdlYkluc3Bl
Y3Rvci5Qb3BvdmVyLlNoYWRvd1BhZGRpbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUHJvYmVTZXREZXRhaWxzU2VjdGlvbi5qcyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Byb2JlU2V0RGV0YWlsc1Nl
Y3Rpb24uanMKaW5kZXggNzdhYTIxMzk3ZjhiNWYzMGJiMTExNTliMDdkMmQ2N2ZmZjkwMWMxOS4u
YmE1YjYyMzAwYTllYTAyNjdkODAxOTIxN2RkODQxMzY1NzE4MGE4ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUHJvYmVTZXREZXRhaWxzU2Vj
dGlvbi5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Q
cm9iZVNldERldGFpbHNTZWN0aW9uLmpzCkBAIC0xLDQgKzEsNSBAQAogLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQg
KEMpIDIwMTMgVW5pdmVyc2l0eSBvZiBXYXNoaW5ndG9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dApAQCAtMjMsNzEgKzI0LDY1IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLlByb2JlU2V0RGV0YWlsc1NlY3Rp
b24gPSBmdW5jdGlvbihwcm9iZVNldCkKK1dlYkluc3BlY3Rvci5Qcm9iZVNldERldGFpbHNTZWN0
aW9uID0gY2xhc3MgUHJvYmVTZXREZXRhaWxzU2VjdGlvbiBleHRlbmRzIFdlYkluc3BlY3Rvci5E
ZXRhaWxzU2VjdGlvbgogewotICAgIGNvbnNvbGUuYXNzZXJ0KHByb2JlU2V0IGluc3RhbmNlb2Yg
V2ViSW5zcGVjdG9yLlByb2JlU2V0LCAiSW52YWxpZCBQcm9iZVNldCBhcmd1bWVudDoiLCBwcm9i
ZVNldCk7CisgICAgY29uc3RydWN0b3IocHJvYmVTZXQpCisgICAgeworICAgICAgICBjb25zb2xl
LmFzc2VydChwcm9iZVNldCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Qcm9iZVNldCwgIkludmFs
aWQgUHJvYmVTZXQgYXJndW1lbnQ6IiwgcHJvYmVTZXQpOwogCi0gICAgdGhpcy5fbGlzdGVuZXJz
ID0gbmV3IFdlYkluc3BlY3Rvci5FdmVudExpc3RlbmVyU2V0KHRoaXMsICJQcm9iZVNldERldGFp
bHNTZWN0aW9uIFVJIGxpc3RlbmVycyIpOwotICAgIHRoaXMuX3Byb2JlU2V0ID0gcHJvYmVTZXQ7
CisgICAgICAgIHZhciBvcHRpb25zRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRp
diIpOworICAgICAgICBvcHRpb25zRWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5Q
cm9iZVNldERldGFpbHNTZWN0aW9uLlNlY3Rpb25PcHRpb25zU3R5bGVDbGFzc05hbWUpOwogCi0g
ICAgdmFyIG9wdGlvbnNFbGVtZW50ID0gdGhpcy5fb3B0aW9uc0VsZW1lbnQgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICBvcHRpb25zRWxlbWVudC5jbGFzc0xpc3QuYWRkKFdl
Ykluc3BlY3Rvci5Qcm9iZVNldERldGFpbHNTZWN0aW9uLlNlY3Rpb25PcHRpb25zU3R5bGVDbGFz
c05hbWUpOworICAgICAgICB2YXIgZGF0YUdyaWQgPSBuZXcgV2ViSW5zcGVjdG9yLlByb2JlU2V0
RGF0YUdyaWQocHJvYmVTZXQpOwogCi0gICAgdmFyIHJlbW92ZVByb2JlQnV0dG9uID0gb3B0aW9u
c0VsZW1lbnQuY3JlYXRlQ2hpbGQoImltZyIpOwotICAgIHJlbW92ZVByb2JlQnV0dG9uLmNsYXNz
TGlzdC5hZGQoV2ViSW5zcGVjdG9yLlByb2JlU2V0RGV0YWlsc1NlY3Rpb24uUHJvYmVSZW1vdmVT
dHlsZUNsYXNzTmFtZSk7Ci0gICAgcmVtb3ZlUHJvYmVCdXR0b24uY2xhc3NMaXN0LmFkZChXZWJJ
bnNwZWN0b3IuUHJvYmVTZXREZXRhaWxzU2VjdGlvbi5Qcm9iZUJ1dHRvbkVuYWJsZWRTdHlsZUNs
YXNzTmFtZSk7Ci0gICAgdGhpcy5fbGlzdGVuZXJzLnJlZ2lzdGVyKHJlbW92ZVByb2JlQnV0dG9u
LCAiY2xpY2siLCB0aGlzLl9yZW1vdmVCdXR0b25DbGlja2VkKTsKKyAgICAgICAgdmFyIHNpbmds
ZXRvblJvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisgICAgICAgIHNp
bmdsZXRvblJvdy5lbGVtZW50LmFwcGVuZENoaWxkKGRhdGFHcmlkLmVsZW1lbnQpOwogCi0gICAg
dmFyIGNsZWFyU2FtcGxlc0J1dHRvbiA9IG9wdGlvbnNFbGVtZW50LmNyZWF0ZUNoaWxkKCJpbWci
KTsKLSAgICBjbGVhclNhbXBsZXNCdXR0b24uY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuUHJv
YmVTZXREZXRhaWxzU2VjdGlvbi5Qcm9iZUNsZWFyU2FtcGxlc1N0eWxlQ2xhc3NOYW1lKTsKLSAg
ICBjbGVhclNhbXBsZXNCdXR0b24uY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuUHJvYmVTZXRE
ZXRhaWxzU2VjdGlvbi5Qcm9iZUJ1dHRvbkVuYWJsZWRTdHlsZUNsYXNzTmFtZSk7Ci0gICAgdGhp
cy5fbGlzdGVuZXJzLnJlZ2lzdGVyKGNsZWFyU2FtcGxlc0J1dHRvbiwgImNsaWNrIiwgdGhpcy5f
Y2xlYXJTYW1wbGVzQnV0dG9uQ2xpY2tlZCk7CisgICAgICAgIHZhciBwcm9iZVNlY3Rpb25Hcm91
cCA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Hcm91cChbc2luZ2xldG9uUm93XSk7
CiAKLSAgICB2YXIgYWRkUHJvYmVCdXR0b24gPSBvcHRpb25zRWxlbWVudC5jcmVhdGVDaGlsZCgi
aW1nIik7Ci0gICAgYWRkUHJvYmVCdXR0b24uY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuUHJv
YmVTZXREZXRhaWxzU2VjdGlvbi5BZGRQcm9iZVZhbHVlU3R5bGVDbGFzc05hbWUpOwotICAgIHRo
aXMuX2xpc3RlbmVycy5yZWdpc3RlcihhZGRQcm9iZUJ1dHRvbiwgImNsaWNrIiwgdGhpcy5fYWRk
UHJvYmVCdXR0b25DbGlja2VkKTsKKyAgICAgICAgc3VwZXIoInByb2JlIiwgIiIsIFtwcm9iZVNl
Y3Rpb25Hcm91cF0sIG9wdGlvbnNFbGVtZW50KTsKIAotICAgIC8vIFVwZGF0ZSB0aGUgc291cmNl
IGxpbmsgd2hlbiB0aGUgYnJlYWtwb2ludCdzIHJlc29sdmVkIHN0YXRlIGNoYW5nZXMsCi0gICAg
Ly8gc28gdGhhdCBpdCBjYW4gYmVjb21lIGEgbGl2ZSBsb2NhdGlvbiBsaW5rIHdoZW4gcG9zc2li
bGUuCi0gICAgdGhpcy5fdXBkYXRlTGlua0VsZW1lbnQoKTsKLSAgICB0aGlzLl9saXN0ZW5lcnMu
cmVnaXN0ZXIodGhpcy5fcHJvYmVTZXQuYnJlYWtwb2ludCwgV2ViSW5zcGVjdG9yLkJyZWFrcG9p
bnQuRXZlbnQuUmVzb2x2ZWRTdGF0ZURpZENoYW5nZSwgdGhpcy5fdXBkYXRlTGlua0VsZW1lbnQp
OworICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgicHJvYmUtc2V0Iik7CiAKLSAg
ICB0aGlzLl9kYXRhR3JpZCA9IG5ldyBXZWJJbnNwZWN0b3IuUHJvYmVTZXREYXRhR3JpZChwcm9i
ZVNldCk7Ci0gICAgdmFyIHNpbmdsZXRvblJvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1Nl
Y3Rpb25Sb3c7Ci0gICAgc2luZ2xldG9uUm93LmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fZGF0
YUdyaWQuZWxlbWVudCk7Ci0gICAgdmFyIHByb2JlU2VjdGlvbkdyb3VwID0gbmV3IFdlYkluc3Bl
Y3Rvci5EZXRhaWxzU2VjdGlvbkdyb3VwKFtzaW5nbGV0b25Sb3ddKTsKKyAgICAgICAgdGhpcy5f
b3B0aW9uc0VsZW1lbnQgPSBvcHRpb25zRWxlbWVudDsKIAotICAgIHZhciBkdW1teVRpdGxlID0g
IiI7Ci0gICAgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uLmNhbGwodGhpcywgInByb2JlIiwg
ZHVtbXlUaXRsZSwgW3Byb2JlU2VjdGlvbkdyb3VwXSwgb3B0aW9uc0VsZW1lbnQpOwotICAgIHRo
aXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5Qcm9iZVNldERldGFpbHNTZWN0
aW9uLlN0eWxlQ2xhc3NOYW1lKTsKKyAgICAgICAgdGhpcy5fbGlzdGVuZXJzID0gbmV3IFdlYklu
c3BlY3Rvci5FdmVudExpc3RlbmVyU2V0KHRoaXMsICJQcm9iZVNldERldGFpbHNTZWN0aW9uIFVJ
IGxpc3RlbmVycyIpOworICAgICAgICB0aGlzLl9wcm9iZVNldCA9IHByb2JlU2V0OworICAgICAg
ICB0aGlzLl9kYXRhR3JpZCA9IGRhdGFHcmlkOwogCi0gICAgdGhpcy5fbGlzdGVuZXJzLmluc3Rh
bGwoKTsKLX07CisgICAgICAgIHZhciByZW1vdmVQcm9iZUJ1dHRvbiA9IG9wdGlvbnNFbGVtZW50
LmNyZWF0ZUNoaWxkKCJpbWciKTsKKyAgICAgICAgcmVtb3ZlUHJvYmVCdXR0b24uY2xhc3NMaXN0
LmFkZChXZWJJbnNwZWN0b3IuUHJvYmVTZXREZXRhaWxzU2VjdGlvbi5Qcm9iZVJlbW92ZVN0eWxl
Q2xhc3NOYW1lKTsKKyAgICAgICAgcmVtb3ZlUHJvYmVCdXR0b24uY2xhc3NMaXN0LmFkZChXZWJJ
bnNwZWN0b3IuUHJvYmVTZXREZXRhaWxzU2VjdGlvbi5Qcm9iZUJ1dHRvbkVuYWJsZWRTdHlsZUNs
YXNzTmFtZSk7CisgICAgICAgIHRoaXMuX2xpc3RlbmVycy5yZWdpc3RlcihyZW1vdmVQcm9iZUJ1
dHRvbiwgImNsaWNrIiwgdGhpcy5fcmVtb3ZlQnV0dG9uQ2xpY2tlZCk7CiAKLVdlYkluc3BlY3Rv
ci5Qcm9iZVNldERldGFpbHNTZWN0aW9uLkFkZFByb2JlVmFsdWVTdHlsZUNsYXNzTmFtZSA9ICJw
cm9iZS1hZGQiOwotV2ViSW5zcGVjdG9yLlByb2JlU2V0RGV0YWlsc1NlY3Rpb24uRG9udEZsb2F0
TGlua1N0eWxlQ2xhc3NOYW1lID0gImRvbnQtZmxvYXQiOwotV2ViSW5zcGVjdG9yLlByb2JlU2V0
RGV0YWlsc1NlY3Rpb24uUHJvYmVCdXR0b25FbmFibGVkU3R5bGVDbGFzc05hbWUgPSAiZW5hYmxl
ZCI7Ci1XZWJJbnNwZWN0b3IuUHJvYmVTZXREZXRhaWxzU2VjdGlvbi5Qcm9iZVBvcG92ZXJFbGVt
ZW50U3R5bGVDbGFzc05hbWUgPSAicHJvYmUtcG9wb3ZlciI7Ci1XZWJJbnNwZWN0b3IuUHJvYmVT
ZXREZXRhaWxzU2VjdGlvbi5Qcm9iZUNsZWFyU2FtcGxlc1N0eWxlQ2xhc3NOYW1lID0gInByb2Jl
LWNsZWFyLXNhbXBsZXMiOwotV2ViSW5zcGVjdG9yLlByb2JlU2V0RGV0YWlsc1NlY3Rpb24uUHJv
YmVSZW1vdmVTdHlsZUNsYXNzTmFtZSA9ICJwcm9iZS1yZW1vdmUiOwotV2ViSW5zcGVjdG9yLlBy
b2JlU2V0RGV0YWlsc1NlY3Rpb24uU2VjdGlvbk9wdGlvbnNTdHlsZUNsYXNzTmFtZSA9ICJvcHRp
b25zIjsKLVdlYkluc3BlY3Rvci5Qcm9iZVNldERldGFpbHNTZWN0aW9uLlN0eWxlQ2xhc3NOYW1l
ID0gInByb2JlLXNldCI7CisgICAgICAgIHZhciBjbGVhclNhbXBsZXNCdXR0b24gPSBvcHRpb25z
RWxlbWVudC5jcmVhdGVDaGlsZCgiaW1nIik7CisgICAgICAgIGNsZWFyU2FtcGxlc0J1dHRvbi5j
bGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5Qcm9iZVNldERldGFpbHNTZWN0aW9uLlByb2JlQ2xl
YXJTYW1wbGVzU3R5bGVDbGFzc05hbWUpOworICAgICAgICBjbGVhclNhbXBsZXNCdXR0b24uY2xh
c3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuUHJvYmVTZXREZXRhaWxzU2VjdGlvbi5Qcm9iZUJ1dHRv
bkVuYWJsZWRTdHlsZUNsYXNzTmFtZSk7CisgICAgICAgIHRoaXMuX2xpc3RlbmVycy5yZWdpc3Rl
cihjbGVhclNhbXBsZXNCdXR0b24sICJjbGljayIsIHRoaXMuX2NsZWFyU2FtcGxlc0J1dHRvbkNs
aWNrZWQpOwogCi1XZWJJbnNwZWN0b3IuUHJvYmVTZXREZXRhaWxzU2VjdGlvbi5wcm90b3R5cGUg
PSB7Ci0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb24ucHJvdG90eXBl
LAotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuUHJvYmVTZXREZXRhaWxzU2VjdGlvbiwK
KyAgICAgICAgdmFyIGFkZFByb2JlQnV0dG9uID0gb3B0aW9uc0VsZW1lbnQuY3JlYXRlQ2hpbGQo
ImltZyIpOworICAgICAgICBhZGRQcm9iZUJ1dHRvbi5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rv
ci5Qcm9iZVNldERldGFpbHNTZWN0aW9uLkFkZFByb2JlVmFsdWVTdHlsZUNsYXNzTmFtZSk7Cisg
ICAgICAgIHRoaXMuX2xpc3RlbmVycy5yZWdpc3RlcihhZGRQcm9iZUJ1dHRvbiwgImNsaWNrIiwg
dGhpcy5fYWRkUHJvYmVCdXR0b25DbGlja2VkKTsKKworICAgICAgICAvLyBVcGRhdGUgdGhlIHNv
dXJjZSBsaW5rIHdoZW4gdGhlIGJyZWFrcG9pbnQncyByZXNvbHZlZCBzdGF0ZSBjaGFuZ2VzLAor
ICAgICAgICAvLyBzbyB0aGF0IGl0IGNhbiBiZWNvbWUgYSBsaXZlIGxvY2F0aW9uIGxpbmsgd2hl
biBwb3NzaWJsZS4KKyAgICAgICAgdGhpcy5fdXBkYXRlTGlua0VsZW1lbnQoKTsKKyAgICAgICAg
dGhpcy5fbGlzdGVuZXJzLnJlZ2lzdGVyKHRoaXMuX3Byb2JlU2V0LmJyZWFrcG9pbnQsIFdlYklu
c3BlY3Rvci5CcmVha3BvaW50LkV2ZW50LlJlc29sdmVkU3RhdGVEaWRDaGFuZ2UsIHRoaXMuX3Vw
ZGF0ZUxpbmtFbGVtZW50KTsKKworICAgICAgICB0aGlzLl9saXN0ZW5lcnMuaW5zdGFsbCgpOwor
ICAgIH0KIAogICAgIC8vIFB1YmxpYwogCi0gICAgY2xvc2VkOiBmdW5jdGlvbigpCisgICAgY2xv
c2VkKCkKICAgICB7CiAgICAgICAgIHRoaXMuX2xpc3RlbmVycy51bmluc3RhbGwodHJ1ZSk7CiAg
ICAgICAgIHRoaXMuZWxlbWVudC5yZW1vdmUoKTsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFBy
aXZhdGUKIAotICAgIF91cGRhdGVMaW5rRWxlbWVudDogZnVuY3Rpb24oKQorICAgIF91cGRhdGVM
aW5rRWxlbWVudCgpCiAgICAgewogICAgICAgICB2YXIgYnJlYWtwb2ludCA9IHRoaXMuX3Byb2Jl
U2V0LmJyZWFrcG9pbnQ7CiAgICAgICAgIHZhciB0aXRsZUVsZW1lbnQgPSBudWxsOwpAQCAtMTA4
LDkgKzEwMyw5IEBAIFdlYkluc3BlY3Rvci5Qcm9iZVNldERldGFpbHNTZWN0aW9uLnByb3RvdHlw
ZSA9IHsKIAogICAgICAgICB0aGlzLl9saW5rRWxlbWVudCA9IHRpdGxlRWxlbWVudDsKICAgICAg
ICAgdGhpcy5fb3B0aW9uc0VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fbGlua0VsZW1lbnQpOwot
ICAgIH0sCisgICAgfQogCi0gICAgX2FkZFByb2JlQnV0dG9uQ2xpY2tlZDogZnVuY3Rpb24oZXZl
bnQpCisgICAgX2FkZFByb2JlQnV0dG9uQ2xpY2tlZChldmVudCkKICAgICB7CiAgICAgICAgIGZ1
bmN0aW9uIGNyZWF0ZVByb2JlRnJvbUVudGVyZWRFeHByZXNzaW9uKHZpc2libGVQb3BvdmVyLCBl
dmVudCkKICAgICAgICAgewpAQCAtMTM0LDE1ICsxMjksMjQgQEAgV2ViSW5zcGVjdG9yLlByb2Jl
U2V0RGV0YWlsc1NlY3Rpb24ucHJvdG90eXBlID0gewogICAgICAgICB2YXIgdGFyZ2V0ID0gV2Vi
SW5zcGVjdG9yLlJlY3QucmVjdEZyb21DbGllbnRSZWN0KGV2ZW50LnRhcmdldC5nZXRCb3VuZGlu
Z0NsaWVudFJlY3QoKSk7CiAgICAgICAgIHBvcG92ZXIucHJlc2VudCh0YXJnZXQsIFtXZWJJbnNw
ZWN0b3IuUmVjdEVkZ2UuTUFYX1ksIFdlYkluc3BlY3Rvci5SZWN0RWRnZS5NSU5fWSwgV2ViSW5z
cGVjdG9yLlJlY3RFZGdlLk1BWF9YXSk7CiAgICAgICAgIHRleHRCb3guc2VsZWN0KCk7Ci0gICAg
fSwKKyAgICB9CiAKLSAgICBfcmVtb3ZlQnV0dG9uQ2xpY2tlZDogZnVuY3Rpb24oZXZlbnQpCisg
ICAgX3JlbW92ZUJ1dHRvbkNsaWNrZWQoZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLl9wcm9i
ZVNldC5jbGVhcigpOwotICAgIH0sCisgICAgfQogCi0gICAgX2NsZWFyU2FtcGxlc0J1dHRvbkNs
aWNrZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9jbGVhclNhbXBsZXNCdXR0b25DbGlja2VkKGV2
ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5fcHJvYmVTZXQuY2xlYXJTYW1wbGVzKCk7CiAgICAg
fQogfTsKKworV2ViSW5zcGVjdG9yLlByb2JlU2V0RGV0YWlsc1NlY3Rpb24uQWRkUHJvYmVWYWx1
ZVN0eWxlQ2xhc3NOYW1lID0gInByb2JlLWFkZCI7CitXZWJJbnNwZWN0b3IuUHJvYmVTZXREZXRh
aWxzU2VjdGlvbi5Eb250RmxvYXRMaW5rU3R5bGVDbGFzc05hbWUgPSAiZG9udC1mbG9hdCI7CitX
ZWJJbnNwZWN0b3IuUHJvYmVTZXREZXRhaWxzU2VjdGlvbi5Qcm9iZUJ1dHRvbkVuYWJsZWRTdHls
ZUNsYXNzTmFtZSA9ICJlbmFibGVkIjsKK1dlYkluc3BlY3Rvci5Qcm9iZVNldERldGFpbHNTZWN0
aW9uLlByb2JlUG9wb3ZlckVsZW1lbnRTdHlsZUNsYXNzTmFtZSA9ICJwcm9iZS1wb3BvdmVyIjsK
K1dlYkluc3BlY3Rvci5Qcm9iZVNldERldGFpbHNTZWN0aW9uLlByb2JlQ2xlYXJTYW1wbGVzU3R5
bGVDbGFzc05hbWUgPSAicHJvYmUtY2xlYXItc2FtcGxlcyI7CitXZWJJbnNwZWN0b3IuUHJvYmVT
ZXREZXRhaWxzU2VjdGlvbi5Qcm9iZVJlbW92ZVN0eWxlQ2xhc3NOYW1lID0gInByb2JlLXJlbW92
ZSI7CitXZWJJbnNwZWN0b3IuUHJvYmVTZXREZXRhaWxzU2VjdGlvbi5TZWN0aW9uT3B0aW9uc1N0
eWxlQ2xhc3NOYW1lID0gIm9wdGlvbnMiOworV2ViSW5zcGVjdG9yLlByb2JlU2V0RGV0YWlsc1Nl
Y3Rpb24uU3R5bGVDbGFzc05hbWUgPSAicHJvYmUtc2V0IjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNlVGltZWxpbmVEYXRhR3Jp
ZE5vZGVQYXRoQ29tcG9uZW50LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvUmVzb3VyY2VUaW1lbGluZURhdGFHcmlkTm9kZVBhdGhDb21wb25lbnQuanMKaW5k
ZXggYTQzMjJiOWEyNjQzMjk1MzBjZGVkNTZjMjBkZWEwNDRmNTY3MDJlNS4uNzEwNzkwNmEzZGRh
OTJmZTJmNTM5N2Y4YTZlZmMyMjRhNGZhOWJlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VUaW1lbGluZURhdGFHcmlkTm9kZVBh
dGhDb21wb25lbnQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvUmVzb3VyY2VUaW1lbGluZURhdGFHcmlkTm9kZVBhdGhDb21wb25lbnQuanMKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDMx
ICsyMywzMSBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdl
Ykluc3BlY3Rvci5SZXNvdXJjZVRpbWVsaW5lRGF0YUdyaWROb2RlUGF0aENvbXBvbmVudCA9IGZ1
bmN0aW9uKHJlc291cmNlVGltZWxpbmVEYXRhR3JpZE5vZGUpIHsKLSAgICB2YXIgcmVzb3VyY2Ug
PSByZXNvdXJjZVRpbWVsaW5lRGF0YUdyaWROb2RlLnJlY29yZC5yZXNvdXJjZTsKLSAgICB2YXIg
Y2xhc3NOYW1lcyA9IFtXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlRWxlbWVudC5SZXNvdXJjZUlj
b25TdHlsZUNsYXNzTmFtZSwgcmVzb3VyY2UudHlwZV07Ci0KLSAgICBXZWJJbnNwZWN0b3IuSGll
cmFyY2hpY2FsUGF0aENvbXBvbmVudC5jYWxsKHRoaXMsIHJlc291cmNlVGltZWxpbmVEYXRhR3Jp
ZE5vZGUuZGF0YS5uYW1lLCBjbGFzc05hbWVzLCByZXNvdXJjZSk7CitXZWJJbnNwZWN0b3IuUmVz
b3VyY2VUaW1lbGluZURhdGFHcmlkTm9kZVBhdGhDb21wb25lbnQgPSBjbGFzcyBSZXNvdXJjZVRp
bWVsaW5lRGF0YUdyaWROb2RlUGF0aENvbXBvbmVudCBleHRlbmRzIFdlYkluc3BlY3Rvci5IaWVy
YXJjaGljYWxQYXRoQ29tcG9uZW50Cit7CisgICAgY29uc3RydWN0b3IocmVzb3VyY2VUaW1lbGlu
ZURhdGFHcmlkTm9kZSkKKyAgICB7CisgICAgICAgIHZhciByZXNvdXJjZSA9IHJlc291cmNlVGlt
ZWxpbmVEYXRhR3JpZE5vZGUucmVjb3JkLnJlc291cmNlOworICAgICAgICB2YXIgY2xhc3NOYW1l
cyA9IFtXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlRWxlbWVudC5SZXNvdXJjZUljb25TdHlsZUNs
YXNzTmFtZSwgcmVzb3VyY2UudHlwZV07CiAKLSAgICB0aGlzLl9yZXNvdXJjZVRpbWVsaW5lRGF0
YUdyaWROb2RlID0gcmVzb3VyY2VUaW1lbGluZURhdGFHcmlkTm9kZTsKLX07CisgICAgICAgIHN1
cGVyKHJlc291cmNlVGltZWxpbmVEYXRhR3JpZE5vZGUuZGF0YS5uYW1lLCBjbGFzc05hbWVzLCBy
ZXNvdXJjZSk7CiAKLVdlYkluc3BlY3Rvci5SZXNvdXJjZVRpbWVsaW5lRGF0YUdyaWROb2RlUGF0
aENvbXBvbmVudC5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5S
ZXNvdXJjZVRpbWVsaW5lRGF0YUdyaWROb2RlUGF0aENvbXBvbmVudCwKKyAgICAgICAgdGhpcy5f
cmVzb3VyY2VUaW1lbGluZURhdGFHcmlkTm9kZSA9IHJlc291cmNlVGltZWxpbmVEYXRhR3JpZE5v
ZGU7CisgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgcmVzb3VyY2VUaW1lbGluZURh
dGFHcmlkTm9kZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fcmVzb3VyY2VUaW1lbGlu
ZURhdGFHcmlkTm9kZTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBwcmV2aW91c1NpYmxpbmco
KQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9yZXNvdXJjZVRpbWVsaW5lRGF0YUdyaWROb2Rl
LnByZXZpb3VzU2libGluZykKICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICByZXR1
cm4gbmV3IFdlYkluc3BlY3Rvci5SZXNvdXJjZVRpbWVsaW5lRGF0YUdyaWROb2RlUGF0aENvbXBv
bmVudCh0aGlzLl9yZXNvdXJjZVRpbWVsaW5lRGF0YUdyaWROb2RlLnByZXZpb3VzU2libGluZyk7
Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgbmV4dFNpYmxpbmcoKQogICAgIHsKQEAgLTU2LDUg
KzU2LDMgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlVGltZWxpbmVEYXRhR3JpZE5vZGVQYXRoQ29t
cG9uZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuUmVz
b3VyY2VUaW1lbGluZURhdGFHcmlkTm9kZVBhdGhDb21wb25lbnQodGhpcy5fcmVzb3VyY2VUaW1l
bGluZURhdGFHcmlkTm9kZS5uZXh0U2libGluZyk7CiAgICAgfQogfTsKLQotV2ViSW5zcGVjdG9y
LlJlc291cmNlVGltZWxpbmVEYXRhR3JpZE5vZGVQYXRoQ29tcG9uZW50LnByb3RvdHlwZS5fX3By
b3RvX18gPSBXZWJJbnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0aENvbXBvbmVudC5wcm90b3R5cGU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9T
ZWFyY2hCYXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9T
ZWFyY2hCYXIuanMKaW5kZXggODVkNDRkYjRkY2ZhMDg1OWI2ZjliZGFmM2Y1NzY0NzQ1ZTNkNDRk
YS4uNGY3ODgwY2QzN2I0MDA0YjI3ZThhY2FiMjhkZTEzNGEyNDFkN2JhMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2VhcmNoQmFyLmpzCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NlYXJjaEJhci5q
cwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMjMsNjEgKzIzLDU2IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAg
Ki8KIAotV2ViSW5zcGVjdG9yLlNlYXJjaEJhciA9IGZ1bmN0aW9uKGlkZW50aWZpZXIsIHBsYWNl
aG9sZGVyLCBkZWxlZ2F0ZSkgewotICAgIFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uSXRlbS5jYWxs
KHRoaXMsIGlkZW50aWZpZXIpOwotCi0gICAgdGhpcy5kZWxlZ2F0ZSA9IGRlbGVnYXRlOwotCi0g
ICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5TZWFyY2hCYXIuU3R5
bGVDbGFzc05hbWUpOworV2ViSW5zcGVjdG9yLlNlYXJjaEJhciA9IGNsYXNzIFNlYXJjaEJhciBl
eHRlbmRzIFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uSXRlbQoreworICAgIGNvbnN0cnVjdG9yKGlk
ZW50aWZpZXIsIHBsYWNlaG9sZGVyLCBkZWxlZ2F0ZSkKKyAgICB7CisgICAgICAgIHN1cGVyKGlk
ZW50aWZpZXIpOwogCi0gICAgdGhpcy5fa2V5Ym9hcmRTaG9ydGN1dEVzYyA9IG5ldyBXZWJJbnNw
ZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dChudWxsLCBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1
dC5LZXkuRXNjYXBlKTsKLSAgICB0aGlzLl9rZXlib2FyZFNob3J0Y3V0RW50ZXIgPSBuZXcgV2Vi
SW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQobnVsbCwgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hv
cnRjdXQuS2V5LkVudGVyKTsKKyAgICAgICAgdGhpcy5kZWxlZ2F0ZSA9IGRlbGVnYXRlOwogCi0g
ICAgdGhpcy5fc2VhcmNoSW5wdXQgPSB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImlucHV0IikpOwotICAgIHRoaXMuX3NlYXJjaElucHV0LnR5cGUgPSAi
c2VhcmNoIjsKLSAgICB0aGlzLl9zZWFyY2hJbnB1dC5zcGVsbGNoZWNrID0gZmFsc2U7Ci0gICAg
dGhpcy5fc2VhcmNoSW5wdXQuaW5jcmVtZW50YWwgPSB0cnVlOwotICAgIHRoaXMuX3NlYXJjaElu
cHV0LnNldEF0dHJpYnV0ZSgicmVzdWx0cyIsIDUpOwotICAgIHRoaXMuX3NlYXJjaElucHV0LnNl
dEF0dHJpYnV0ZSgiYXV0b3NhdmUiLCBpZGVudGlmaWVyICsgIi1hdXRvc2F2ZSIpOwotICAgIHRo
aXMuX3NlYXJjaElucHV0LnNldEF0dHJpYnV0ZSgicGxhY2Vob2xkZXIiLCBwbGFjZWhvbGRlcik7
Ci0gICAgdGhpcy5fc2VhcmNoSW5wdXQuYWRkRXZlbnRMaXN0ZW5lcigic2VhcmNoIiwgdGhpcy5f
aGFuZGxlU2VhcmNoRXZlbnQuYmluZCh0aGlzKSwgZmFsc2UpOwotICAgIHRoaXMuX3NlYXJjaElu
cHV0LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLCB0aGlzLl9oYW5kbGVLZXlkb3duRXZlbnQu
YmluZCh0aGlzKSwgZmFsc2UpOwotfTsKKyAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3Qu
YWRkKCJzZWFyY2gtYmFyIik7CiAKLVdlYkluc3BlY3Rvci5TZWFyY2hCYXIuU3R5bGVDbGFzc05h
bWUgPSAic2VhcmNoLWJhciI7Ci1XZWJJbnNwZWN0b3IuU2VhcmNoQmFyLkV2ZW50ID0gewotICAg
IFRleHRDaGFuZ2VkOiAic2VhcmNoYmFyLXRleHQtZGlkLWNoYW5nZSIKLX07CisgICAgICAgIHRo
aXMuX2tleWJvYXJkU2hvcnRjdXRFc2MgPSBuZXcgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRj
dXQobnVsbCwgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuS2V5LkVzY2FwZSk7CisgICAg
ICAgIHRoaXMuX2tleWJvYXJkU2hvcnRjdXRFbnRlciA9IG5ldyBXZWJJbnNwZWN0b3IuS2V5Ym9h
cmRTaG9ydGN1dChudWxsLCBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5LZXkuRW50ZXIp
OwogCi1XZWJJbnNwZWN0b3IuU2VhcmNoQmFyLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3Rv
cjogV2ViSW5zcGVjdG9yLlNlYXJjaEJhciwKKyAgICAgICAgdGhpcy5fc2VhcmNoSW5wdXQgPSB0
aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0Iikp
OworICAgICAgICB0aGlzLl9zZWFyY2hJbnB1dC50eXBlID0gInNlYXJjaCI7CisgICAgICAgIHRo
aXMuX3NlYXJjaElucHV0LnNwZWxsY2hlY2sgPSBmYWxzZTsKKyAgICAgICAgdGhpcy5fc2VhcmNo
SW5wdXQuaW5jcmVtZW50YWwgPSB0cnVlOworICAgICAgICB0aGlzLl9zZWFyY2hJbnB1dC5zZXRB
dHRyaWJ1dGUoInJlc3VsdHMiLCA1KTsKKyAgICAgICAgdGhpcy5fc2VhcmNoSW5wdXQuc2V0QXR0
cmlidXRlKCJhdXRvc2F2ZSIsIGlkZW50aWZpZXIgKyAiLWF1dG9zYXZlIik7CisgICAgICAgIHRo
aXMuX3NlYXJjaElucHV0LnNldEF0dHJpYnV0ZSgicGxhY2Vob2xkZXIiLCBwbGFjZWhvbGRlcik7
CisgICAgICAgIHRoaXMuX3NlYXJjaElucHV0LmFkZEV2ZW50TGlzdGVuZXIoInNlYXJjaCIsIHRo
aXMuX2hhbmRsZVNlYXJjaEV2ZW50LmJpbmQodGhpcyksIGZhbHNlKTsKKyAgICAgICAgdGhpcy5f
c2VhcmNoSW5wdXQuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsIHRoaXMuX2hhbmRsZUtleWRv
d25FdmVudC5iaW5kKHRoaXMpLCBmYWxzZSk7CisgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAg
ICBnZXQgdGV4dCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fc2VhcmNoSW5wdXQudmFs
dWU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgdGV4dChuZXdUZXh0KQogICAgIHsKICAgICAg
ICAgdGhpcy5fc2VhcmNoSW5wdXQudmFsdWUgPSBuZXdUZXh0OwotICAgIH0sCisgICAgfQogCi0g
ICAgZm9jdXM6IGZ1bmN0aW9uKCkKKyAgICBmb2N1cygpCiAgICAgewogICAgICAgICB0aGlzLl9z
ZWFyY2hJbnB1dC5mb2N1cygpOwogICAgICAgICB0aGlzLl9zZWFyY2hJbnB1dC5zZWxlY3QoKTsK
LSAgICB9LAorICAgIH0KIAogICAgIC8vIFByaXZhdGUKIAotICAgIF9oYW5kbGVTZWFyY2hFdmVu
dDogZnVuY3Rpb24oZXZlbnQpCisgICAgX2hhbmRsZVNlYXJjaEV2ZW50KGV2ZW50KQogICAgIHsK
ICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlNlYXJj
aEJhci5FdmVudC5UZXh0Q2hhbmdlZCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfaGFuZGxlS2V5
ZG93bkV2ZW50OiBmdW5jdGlvbihldmVudCkKKyAgICBfaGFuZGxlS2V5ZG93bkV2ZW50KGV2ZW50
KQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX2tleWJvYXJkU2hvcnRjdXRFc2MubWF0Y2hlc0V2
ZW50KGV2ZW50KSkgewogICAgICAgICAgICAgaWYgKHRoaXMuZGVsZWdhdGUgJiYgdHlwZW9mIHRo
aXMuZGVsZWdhdGUuc2VhcmNoQmFyV2FudHNUb0xvc2VGb2N1cyA9PT0gImZ1bmN0aW9uIikgewpA
QCAtOTUsNCArOTAsNiBAQCBXZWJJbnNwZWN0b3IuU2VhcmNoQmFyLnByb3RvdHlwZSA9IHsKICAg
ICB9CiB9OwogCi1XZWJJbnNwZWN0b3IuU2VhcmNoQmFyLnByb3RvdHlwZS5fX3Byb3RvX18gPSBX
ZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkl0ZW0ucHJvdG90eXBlOworV2ViSW5zcGVjdG9yLlNlYXJj
aEJhci5FdmVudCA9IHsKKyAgICBUZXh0Q2hhbmdlZDogInNlYXJjaGJhci10ZXh0LWRpZC1jaGFu
Z2UiCit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvU2xpZGVyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvU2xpZGVyLmpzCmluZGV4IGY0NWEwYjA0Yjg1YjQyZWY1NzBhMTc4NTEyZTAxM2MyYmIwMTM2
NGEuLjE1NDc3MWY1N2I5ZThhMzgwMTZiOTBmZjE2MTA5NzJlYTkwYmZhMzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NsaWRlci5qcworKysg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TbGlkZXIuanMKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIz
LDM3ICsyMywzNSBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAK
LVdlYkluc3BlY3Rvci5TbGlkZXIgPSBmdW5jdGlvbigpCitXZWJJbnNwZWN0b3IuU2xpZGVyID0g
Y2xhc3MgU2xpZGVyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogewotICAgIHRoaXMuX2Vs
ZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICB0aGlzLl9lbGVtZW50
LmNsYXNzTmFtZSA9ICJzbGlkZXIiOwotCi0gICAgdGhpcy5fa25vYiA9IHRoaXMuX2VsZW1lbnQu
YXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW1nIikpOworICAgIGNvbnN0cnVj
dG9yKCkKKyAgICB7CisgICAgICAgIHN1cGVyKCk7CiAKLSAgICB0aGlzLl92YWx1ZSA9IDA7Ci0g
ICAgdGhpcy5fa25vYlggPSAwOwotICAgIHRoaXMuX19tYXhYID0gMDsKKyAgICAgICAgdGhpcy5f
ZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICB0aGlzLl9l
bGVtZW50LmNsYXNzTmFtZSA9ICJzbGlkZXIiOwogCi0gICAgdGhpcy5fZWxlbWVudC5hZGRFdmVu
dExpc3RlbmVyKCJtb3VzZWRvd24iLCB0aGlzKTsKLX07CisgICAgICAgIHRoaXMuX2tub2IgPSB0
aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImltZyIpKTsK
IAotV2ViSW5zcGVjdG9yLlNsaWRlci5Lbm9iV2lkdGggPSAxMzsKKyAgICAgICAgdGhpcy5fdmFs
dWUgPSAwOworICAgICAgICB0aGlzLl9rbm9iWCA9IDA7CisgICAgICAgIHRoaXMuX19tYXhYID0g
MDsKIAotV2ViSW5zcGVjdG9yLlNsaWRlci5wcm90b3R5cGUgPSB7Ci0gICAgY29udHJ1Y3Rvcjog
V2ViSW5zcGVjdG9yLlNsaWRlciwKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5PYmplY3Qu
cHJvdG90eXBlLAorICAgICAgICB0aGlzLl9lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNl
ZG93biIsIHRoaXMpOworICAgIH0KIAogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IGVsZW1lbnQo
KQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQ7Ci0gICAgfSwKKyAgICB9CiAK
ICAgICBnZXQgdmFsdWUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3ZhbHVlOwotICAg
IH0sCisgICAgfQogCiAgICAgc2V0IHZhbHVlKHZhbHVlKQogICAgIHsKQEAgLTY5LDExICs2Nywx
MSBAQCBXZWJJbnNwZWN0b3IuU2xpZGVyLnByb3RvdHlwZSA9IHsKIAogICAgICAgICBpZiAodGhp
cy5kZWxlZ2F0ZSAmJiB0eXBlb2YgdGhpcy5kZWxlZ2F0ZS5zbGlkZXJWYWx1ZURpZENoYW5nZSA9
PT0gImZ1bmN0aW9uIikKICAgICAgICAgICAgIHRoaXMuZGVsZWdhdGUuc2xpZGVyVmFsdWVEaWRD
aGFuZ2UodGhpcywgdmFsdWUpOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJvdGVjdGVkCiAK
LSAgICBoYW5kbGVFdmVudDogZnVuY3Rpb24oZXZlbnQpCisgICAgaGFuZGxlRXZlbnQoZXZlbnQp
CiAgICAgewogICAgICAgICBzd2l0Y2ggKGV2ZW50LnR5cGUpIHsKICAgICAgICAgY2FzZSAibW91
c2Vkb3duIjoKQEAgLTg2LDExICs4NCwxMSBAQCBXZWJJbnNwZWN0b3IuU2xpZGVyLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgICAgIHRoaXMuX2hhbmRsZU1vdXNldXAoZXZlbnQpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByaXZhdGUKIAot
ICAgIF9oYW5kbGVNb3VzZWRvd246IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9oYW5kbGVNb3VzZWRv
d24oZXZlbnQpCiAgICAgewogICAgICAgICBpZiAoZXZlbnQudGFyZ2V0ICE9PSB0aGlzLl9rbm9i
KQogICAgICAgICAgICAgdGhpcy52YWx1ZSA9ICh0aGlzLl9sb2NhbFBvaW50Rm9yRXZlbnQoZXZl
bnQpLnggLSAzKSAvIHRoaXMuX21heFg7CkBAIC0xMDIsMzAgKzEwMCwzMCBAQCBXZWJJbnNwZWN0
b3IuU2xpZGVyLnByb3RvdHlwZSA9IHsKIAogICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5l
cigibW91c2Vtb3ZlIiwgdGhpcywgdHJ1ZSk7CiAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3Rl
bmVyKCJtb3VzZXVwIiwgdGhpcywgdHJ1ZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfaGFuZGxl
TW91c2Vtb3ZlOiBmdW5jdGlvbihldmVudCkKKyAgICBfaGFuZGxlTW91c2Vtb3ZlKGV2ZW50KQog
ICAgIHsKICAgICAgICAgdmFyIGR4ID0gdGhpcy5fbG9jYWxQb2ludEZvckV2ZW50KGV2ZW50KS54
IC0gdGhpcy5fc3RhcnRNb3VzZVg7CiAgICAgICAgIHZhciB4ID0gTWF0aC5tYXgoTWF0aC5taW4o
dGhpcy5fc3RhcnRLbm9iWCArIGR4LCB0aGlzLl9tYXhYKSwgMCk7CiAKICAgICAgICAgdGhpcy52
YWx1ZSA9IHggLyB0aGlzLl9tYXhYOwotICAgIH0sCisgICAgfQogCi0gICAgX2hhbmRsZU1vdXNl
dXA6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9oYW5kbGVNb3VzZXVwKGV2ZW50KQogICAgIHsKICAg
ICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJkcmFnZ2luZyIpOwogCiAgICAg
ICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLCB0aGlzLCB0cnVlKTsK
ICAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLCB0aGlzLCB0cnVl
KTsKLSAgICB9LAorICAgIH0KIAotICAgIF9sb2NhbFBvaW50Rm9yRXZlbnQ6IGZ1bmN0aW9uKGV2
ZW50KQorICAgIF9sb2NhbFBvaW50Rm9yRXZlbnQoZXZlbnQpCiAgICAgewogICAgICAgICAvLyBX
ZSBjb252ZXJ0IGFsbCBldmVudCBjb29yZGluYXRlcyBmcm9tIHBhZ2UgY29vcmRpbmF0ZXMgdG8g
bG9jYWwgY29vcmRpbmF0ZXMgc3VjaCB0aGF0IHRoZSBzbGlkZXIKICAgICAgICAgLy8gbWF5IGJl
IHRyYW5zZm9ybWVkIHVzaW5nIENTUyBUcmFuc2Zvcm1zIGFuZCBpbnRlcmFjdGlvbiB3b3JrcyBh
cyBleHBlY3RlZC4KICAgICAgICAgcmV0dXJuIHdpbmRvdy53ZWJraXRDb252ZXJ0UG9pbnRGcm9t
UGFnZVRvTm9kZSh0aGlzLl9lbGVtZW50LCBuZXcgV2ViS2l0UG9pbnQoZXZlbnQucGFnZVgsIGV2
ZW50LnBhZ2VZKSk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgX21heFgoKQogICAgIHsKQEAg
LTEzNSwzICsxMzMsNSBAQCBXZWJJbnNwZWN0b3IuU2xpZGVyLnByb3RvdHlwZSA9IHsKICAgICAg
ICAgcmV0dXJuIHRoaXMuX19tYXhYOwogICAgIH0KIH07CisKK1dlYkluc3BlY3Rvci5TbGlkZXIu
S25vYldpZHRoID0gMTM7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249501</attachid>
            <date>2015-03-26 11:19:07 -0700</date>
            <delta_ts>2015-03-26 16:40:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143107-20150326111828.patch</filename>
            <type>text/plain</type>
            <size>179675</size>
            <attacher name="Timothy Hatcher">timothy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgyMDE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCAw
MjFiNWY5YTczMzJmYjhhZTkxNWM5YzlhMmI2MmVhNjZiNmExMDczLi43ZjNmNDhkYzIyYTAwOTM2
NzY0NzE4NTlmYWM3OThmNTc2Y2Q2OWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSw0NyBAQAogMjAxNS0wMy0yNiAgVGltb3RoeSBIYXRjaGVyICA8dGltb3RoeUBhcHBsZS5j
b20+CiAKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQ29udmVydCBzb21lIFZpZXcgY2xhc3NlcyB0
byBFUzYgY2xhc3NlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTQzMTA3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBVc2VySW50ZXJmYWNlL1Byb3RvY29sL0luc3BlY3RvckJhY2tlbmQuanM6CisgICAg
ICAgICogVXNlckludGVyZmFjZS9Qcm90b2NvbC9JbnNwZWN0b3JGcm9udGVuZEFQSS5qczoKKyAg
ICAgICAgKEluc3BlY3RvckZyb250ZW5kQVBJLmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKTogVXBk
YXRlZCB0byB0aGUgcmlnaHQgZnVuY3Rpb24gcGF0aC4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNl
L1ZpZXdzL0JveE1vZGVsRGV0YWlsc1NlY3Rpb25Sb3cuanM6CisgICAgICAgICogVXNlckludGVy
ZmFjZS9WaWV3cy9CcmVha3BvaW50QWN0aW9uVmlldy5qczoKKyAgICAgICAgKiBVc2VySW50ZXJm
YWNlL1ZpZXdzL0NvZGVNaXJyb3JBZGRpdGlvbnMuanM6CisgICAgICAgICogVXNlckludGVyZmFj
ZS9WaWV3cy9Db2xvclBpY2tlci5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0Nv
bG9yV2hlZWwuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9Db250ZXh0TWVudS5q
czoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVFbGVtZW50UGF0aENvbXBv
bmVudC5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0RldGFpbHNTZWN0aW9uLmpz
OgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvRGV0YWlsc1NlY3Rpb25EYXRhR3JpZFJv
dy5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0RldGFpbHNTZWN0aW9uR3JvdXAu
anM6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9EZXRhaWxzU2VjdGlvblByb3BlcnRp
ZXNSb3cuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9EZXRhaWxzU2VjdGlvblJv
dy5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0RldGFpbHNTZWN0aW9uU2ltcGxl
Um93LmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvRGV0YWlsc1NlY3Rpb25UZXh0
Um93LmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvRWRpdGluZ1N1cHBvcnQuanM6
CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9FdmVudExpc3RlbmVyU2VjdGlvbi5qczoK
KyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0V2ZW50TGlzdGVuZXJTZWN0aW9uR3JvdXAu
anM6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9GaWx0ZXJCYXIuanM6CisgICAgICAg
ICogVXNlckludGVyZmFjZS9WaWV3cy9GaW5kQmFubmVyLmpzOgorICAgICAgICAqIFVzZXJJbnRl
cmZhY2UvVmlld3MvR2VuZXJhbFRyZWVFbGVtZW50UGF0aENvbXBvbmVudC5qczoKKyAgICAgICAg
KiBVc2VySW50ZXJmYWNlL1ZpZXdzL0dvVG9MaW5lRGlhbG9nLmpzOgorICAgICAgICAqIFVzZXJJ
bnRlcmZhY2UvVmlld3MvR3JhZGllbnRTbGlkZXIuanM6CisgICAgICAgICogVXNlckludGVyZmFj
ZS9WaWV3cy9IaWVyYXJjaGljYWxQYXRoQ29tcG9uZW50LmpzOgorICAgICAgICAqIFVzZXJJbnRl
cmZhY2UvVmlld3MvSGllcmFyY2hpY2FsUGF0aE5hdmlnYXRpb25JdGVtLmpzOgorICAgICAgICAq
IFVzZXJJbnRlcmZhY2UvVmlld3MvSG92ZXJNZW51LmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZh
Y2UvVmlld3MvUG9wb3Zlci5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1Byb2Jl
U2V0RGV0YWlsc1NlY3Rpb24uanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9SZXNv
dXJjZVRpbWVsaW5lRGF0YUdyaWROb2RlUGF0aENvbXBvbmVudC5qczoKKyAgICAgICAgKiBVc2Vy
SW50ZXJmYWNlL1ZpZXdzL1NlYXJjaEJhci5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Zp
ZXdzL1NsaWRlci5qczoKKyAgICAgICAgQ29udmVydGVkIHRvIEVTNiBja2Fzc2VzLgorCisyMDE1
LTAzLTI2ICBUaW1vdGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KKwogICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBDb252ZXJ0IEJhc2UgYW5kIFByb3RvY29sIGZpbGVzIHRvIEVTNiBjbGFz
c2VzCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDMx
MDYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJv
dG9jb2wvSW5zcGVjdG9yQmFja2VuZC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1Byb3RvY29sL0luc3BlY3RvckJhY2tlbmQuanMKaW5kZXggZTdiODA3YjM3NDUyNjM5
MTU2OTJiNzM1OWI0OTkyNTM1M2Y2NTlkMy4uZTQ1MTVmNzA2NmQzM2UyNjExNjAyM2YwYjU4YzJl
NzFiZDViOGM1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvUHJvdG9jb2wvSW5zcGVjdG9yQmFja2VuZC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9JbnNwZWN0b3JCYWNrZW5kLmpzCkBAIC0xLDYgKzEs
NiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTQgVW5pdmVyc2l0eSBvZiBXYXNoaW5ndG9u
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dApAQCAtMTgwLDcgKzE4MCw3IEBAIEluc3BlY3RvckJhY2tlbmRD
bGFzcyA9IGNsYXNzIEluc3BlY3RvckJhY2tlbmRDbGFzcwogICAgICAgICAgICAgdHJ5IHsKICAg
ICAgICAgICAgICAgICBjYWxsYmFjay5hcHBseShudWxsLCBjYWxsYmFja0FyZ3VtZW50cyk7CiAg
ICAgICAgICAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcigi
VW5jYXVnaHQgZXhjZXB0aW9uIGluIGluc3BlY3RvciBwYWdlIHdoaWxlIGRpc3BhdGNoaW5nIGNh
bGxiYWNrIGZvciBjb21tYW5kICIgKyBjb21tYW5kLnF1YWxpZmllZE5hbWUgKyAiOiAiLCBlKTsK
KyAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCJVbmNhdWdodCBleGNlcHRpb24gaW4gaW5z
cGVjdG9yIHBhZ2Ugd2hpbGUgZGlzcGF0Y2hpbmcgY2FsbGJhY2sgZm9yIGNvbW1hbmQgIiArIGNv
bW1hbmQucXVhbGlmaWVkTmFtZSArICI6ICIsIGUsIGUuc3RhY2spOwogICAgICAgICAgICAgfQog
CiAgICAgICAgICAgICB2YXIgcHJvY2Vzc2luZ0R1cmF0aW9uID0gRGF0ZS5ub3coKSAtIHByb2Nl
c3NpbmdTdGFydFRpbWU7CkBAIC0yMzIsNyArMjMyLDcgQEAgSW5zcGVjdG9yQmFja2VuZENsYXNz
ID0gY2xhc3MgSW5zcGVjdG9yQmFja2VuZENsYXNzCiAgICAgICAgIHRyeSB7CiAgICAgICAgICAg
ICBhZ2VudC5kaXNwYXRjaEV2ZW50KGV2ZW50TmFtZSwgZXZlbnRBcmd1bWVudHMpOwogICAgICAg
ICB9IGNhdGNoIChlKSB7Ci0gICAgICAgICAgICBjb25zb2xlLmVycm9yKCJVbmNhdWdodCBleGNl
cHRpb24gaW4gaW5zcGVjdG9yIHBhZ2Ugd2hpbGUgaGFuZGxpbmcgZXZlbnQgIiArIHF1YWxpZmll
ZE5hbWUgKyAiOiAiLCBlKTsKKyAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoIlVuY2F1Z2h0IGV4
Y2VwdGlvbiBpbiBpbnNwZWN0b3IgcGFnZSB3aGlsZSBoYW5kbGluZyBldmVudCAiICsgcXVhbGlm
aWVkTmFtZSArICI6ICIsIGUsIGUuc3RhY2spOwogICAgICAgICB9CiAKICAgICAgICAgdmFyIHBy
b2Nlc3NpbmdEdXJhdGlvbiA9IERhdGUubm93KCkgLSBwcm9jZXNzaW5nU3RhcnRUaW1lOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvSW5z
cGVjdG9yRnJvbnRlbmRBUEkuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Qcm90b2NvbC9JbnNwZWN0b3JGcm9udGVuZEFQSS5qcwppbmRleCA0YWQxNzFlNzgzMjA4Zjdi
YmYyZTJhYjg1NTRiNGI3NGY5MDc0YzBjLi4xYzhiMDQwMDEwZmFmZDFjMmEzM2U4Njg1YjY2Mzk2
N2ZhMDc3OTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Qcm90b2NvbC9JbnNwZWN0b3JGcm9udGVuZEFQSS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9JbnNwZWN0b3JGcm9udGVuZEFQSS5qcwpAQCAt
OTgsNyArOTgsNyBAQCBJbnNwZWN0b3JGcm9udGVuZEFQSSA9IHsKIAogICAgIGNvbnRleHRNZW51
SXRlbVNlbGVjdGVkOiBmdW5jdGlvbihpZCkKICAgICB7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5j
b250ZXh0TWVudUl0ZW1TZWxlY3RlZChpZCk7CisgICAgICAgIFdlYkluc3BlY3Rvci5Db250ZXh0
TWVudS5jb250ZXh0TWVudUl0ZW1TZWxlY3RlZChpZCk7CiAgICAgfSwKIAogICAgIGNvbnRleHRN
ZW51Q2xlYXJlZDogZnVuY3Rpb24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvQm94TW9kZWxEZXRhaWxzU2VjdGlvblJvdy5qcyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0JveE1vZGVsRGV0YWlsc1NlY3Rp
b25Sb3cuanMKaW5kZXggNWM0NzhiY2VjZDdkMWI1MDlkMDE1OTkyYjE1MDhlZGI0ZmQ0ZjM1My4u
ZmE0M2JhYzcxZTUyMjUyM2EyMmZjZWIzZjdiN2EyMjUwOGQ4NDMwYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQm94TW9kZWxEZXRhaWxzU2Vj
dGlvblJvdy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9Cb3hNb2RlbERldGFpbHNTZWN0aW9uUm93LmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywzOCArMjMsMzQgQEAKICAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuQm94TW9kZWxE
ZXRhaWxzU2VjdGlvblJvdyA9IGZ1bmN0aW9uKCkgewotICAgIFdlYkluc3BlY3Rvci5EZXRhaWxz
U2VjdGlvblJvdy5jYWxsKHRoaXMsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiTm8gQm94IE1vZGVs
IEluZm9ybWF0aW9uIikpOwotCi0gICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5z
cGVjdG9yLkJveE1vZGVsRGV0YWlsc1NlY3Rpb25Sb3cuU3R5bGVDbGFzc05hbWUpOwotCi0gICAg
dGhpcy5fbm9kZVN0eWxlcyA9IG51bGw7Ci19OworV2ViSW5zcGVjdG9yLkJveE1vZGVsRGV0YWls
c1NlY3Rpb25Sb3cgPSBjbGFzcyBCb3hNb2RlbERldGFpbHNTZWN0aW9uUm93IGV4dGVuZHMgV2Vi
SW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93Cit7CisgICAgY29uc3RydWN0b3IoKQorICAgIHsK
KyAgICAgICAgc3VwZXIoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJObyBCb3ggTW9kZWwgSW5mb3Jt
YXRpb24iKSk7CiAKLVdlYkluc3BlY3Rvci5Cb3hNb2RlbERldGFpbHNTZWN0aW9uUm93LlN0eWxl
Q2xhc3NOYW1lID0gImJveC1tb2RlbCI7Ci1XZWJJbnNwZWN0b3IuQm94TW9kZWxEZXRhaWxzU2Vj
dGlvblJvdy5TdHlsZVZhbHVlRGVsaW1pdGVycyA9ICIgXHhBMFx0XG5cIic6OywvKCkiOwotV2Vi
SW5zcGVjdG9yLkJveE1vZGVsRGV0YWlsc1NlY3Rpb25Sb3cuQ1NTTnVtYmVyUmVnZXggPSAvXigt
Pyg/OlxkKyg/OlwuXGQrKT98XC5cZCspKSQvOworICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NM
aXN0LmFkZChXZWJJbnNwZWN0b3IuQm94TW9kZWxEZXRhaWxzU2VjdGlvblJvdy5TdHlsZUNsYXNz
TmFtZSk7CiAKLVdlYkluc3BlY3Rvci5Cb3hNb2RlbERldGFpbHNTZWN0aW9uUm93LnByb3RvdHlw
ZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkJveE1vZGVsRGV0YWlsc1NlY3Rp
b25Sb3csCisgICAgICAgIHRoaXMuX25vZGVTdHlsZXMgPSBudWxsOworICAgIH0KIAogICAgIC8v
IFB1YmxpYwogCiAgICAgZ2V0IG5vZGVTdHlsZXMoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRo
aXMuX25vZGVTdHlsZXM7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgbm9kZVN0eWxlcyhub2Rl
U3R5bGVzKQogICAgIHsKICAgICAgICAgdGhpcy5fbm9kZVN0eWxlcyA9IG5vZGVTdHlsZXM7CiAK
ICAgICAgICAgdGhpcy5fcmVmcmVzaCgpOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJpdmF0
ZQogCi0gICAgX3JlZnJlc2g6IGZ1bmN0aW9uKCkKKyAgICBfcmVmcmVzaCgpCiAgICAgewogICAg
ICAgICBpZiAodGhpcy5faWdub3JlTmV4dFJlZnJlc2gpIHsKICAgICAgICAgICAgIGRlbGV0ZSB0
aGlzLl9pZ25vcmVOZXh0UmVmcmVzaDsKQEAgLTYyLDE0ICs1OCwxNCBAQCBXZWJJbnNwZWN0b3Iu
Qm94TW9kZWxEZXRhaWxzU2VjdGlvblJvdy5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAg
ICAgICB0aGlzLl91cGRhdGVNZXRyaWNzKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZ2V0UHJv
cGVydHlWYWx1ZUFzUHg6IGZ1bmN0aW9uKHN0eWxlLCBwcm9wZXJ0eU5hbWUpCisgICAgX2dldFBy
b3BlcnR5VmFsdWVBc1B4KHN0eWxlLCBwcm9wZXJ0eU5hbWUpCiAgICAgewogICAgICAgICByZXR1
cm4gTnVtYmVyKHN0eWxlLnByb3BlcnR5Rm9yTmFtZShwcm9wZXJ0eU5hbWUpLnZhbHVlLnJlcGxh
Y2UoL3B4JC8sICIiKSB8fCAwKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9nZXRCb3g6IGZ1bmN0
aW9uKGNvbXB1dGVkU3R5bGUsIGNvbXBvbmVudE5hbWUpCisgICAgX2dldEJveChjb21wdXRlZFN0
eWxlLCBjb21wb25lbnROYW1lKQogICAgIHsKICAgICAgICAgdmFyIHN1ZmZpeCA9IGNvbXBvbmVu
dE5hbWUgPT09ICJib3JkZXIiID8gIi13aWR0aCIgOiAiIjsKICAgICAgICAgdmFyIGxlZnQgPSB0
aGlzLl9nZXRQcm9wZXJ0eVZhbHVlQXNQeChjb21wdXRlZFN0eWxlLCBjb21wb25lbnROYW1lICsg
Ii1sZWZ0IiArIHN1ZmZpeCk7CkBAIC03Nyw5ICs3Myw5IEBAIFdlYkluc3BlY3Rvci5Cb3hNb2Rl
bERldGFpbHNTZWN0aW9uUm93LnByb3RvdHlwZSA9IHsKICAgICAgICAgdmFyIHJpZ2h0ID0gdGhp
cy5fZ2V0UHJvcGVydHlWYWx1ZUFzUHgoY29tcHV0ZWRTdHlsZSwgY29tcG9uZW50TmFtZSArICIt
cmlnaHQiICsgc3VmZml4KTsKICAgICAgICAgdmFyIGJvdHRvbSA9IHRoaXMuX2dldFByb3BlcnR5
VmFsdWVBc1B4KGNvbXB1dGVkU3R5bGUsIGNvbXBvbmVudE5hbWUgKyAiLWJvdHRvbSIgKyBzdWZm
aXgpOwogICAgICAgICByZXR1cm4ge2xlZnQsIHRvcCwgcmlnaHQsIGJvdHRvbX07Ci0gICAgfSwK
KyAgICB9CiAKLSAgICBfaGlnaGxpZ2h0RE9NTm9kZTogZnVuY3Rpb24oc2hvd0hpZ2hsaWdodCwg
bW9kZSwgZXZlbnQpCisgICAgX2hpZ2hsaWdodERPTU5vZGUoc2hvd0hpZ2hsaWdodCwgbW9kZSwg
ZXZlbnQpCiAgICAgewogICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsKIApAQCAtMTAx
LDkgKzk3LDkgQEAgV2ViSW5zcGVjdG9yLkJveE1vZGVsRGV0YWlsc1NlY3Rpb25Sb3cucHJvdG90
eXBlID0gewogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGVsZW1lbnQuY2xhc3NM
aXN0LnJlbW92ZSgiYWN0aXZlIik7CiAgICAgICAgIH0KLSAgICB9LAorICAgIH0KIAotICAgIF91
cGRhdGVNZXRyaWNzOiBmdW5jdGlvbigpCisgICAgX3VwZGF0ZU1ldHJpY3MoKQogICAgIHsKICAg
ICAgICAgLy8gVXBkYXRpbmcgd2l0aCBjb21wdXRlZCBzdHlsZS4KICAgICAgICAgdmFyIG1ldHJp
Y3NFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CkBAIC0yNTIsOSArMjQ4
LDkgQEAgV2ViSW5zcGVjdG9yLkJveE1vZGVsRGV0YWlsc1NlY3Rpb25Sb3cucHJvdG90eXBlID0g
ewogCiAgICAgICAgIHRoaXMuaGlkZUVtcHR5TWVzc2FnZSgpOwogICAgICAgICB0aGlzLmVsZW1l
bnQuYXBwZW5kQ2hpbGQobWV0cmljc0VsZW1lbnQpOwotICAgIH0sCisgICAgfQogCi0gICAgX3N0
YXJ0RWRpdGluZzogZnVuY3Rpb24odGFyZ2V0RWxlbWVudCwgYm94LCBzdHlsZVByb3BlcnR5LCBj
b21wdXRlZFN0eWxlKQorICAgIF9zdGFydEVkaXRpbmcodGFyZ2V0RWxlbWVudCwgYm94LCBzdHls
ZVByb3BlcnR5LCBjb21wdXRlZFN0eWxlKQogICAgIHsKICAgICAgICAgaWYgKFdlYkluc3BlY3Rv
ci5pc0JlaW5nRWRpdGVkKHRhcmdldEVsZW1lbnQpKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAt
Mjc1LDkgKzI3MSw5IEBAIFdlYkluc3BlY3Rvci5Cb3hNb2RlbERldGFpbHNTZWN0aW9uUm93LnBy
b3RvdHlwZSA9IHsKICAgICAgICAgV2ViSW5zcGVjdG9yLnN0YXJ0RWRpdGluZyh0YXJnZXRFbGVt
ZW50LCBjb25maWcpOwogCiAgICAgICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5zZXRCYXNlQW5k
RXh0ZW50KHRhcmdldEVsZW1lbnQsIDAsIHRhcmdldEVsZW1lbnQsIDEpOwotICAgIH0sCisgICAg
fQogCi0gICAgX2FsdGVyZWRGbG9hdE51bWJlcjogZnVuY3Rpb24obnVtYmVyLCBldmVudCkKKyAg
ICBfYWx0ZXJlZEZsb2F0TnVtYmVyKG51bWJlciwgZXZlbnQpCiAgICAgewogICAgICAgICB2YXIg
YXJyb3dLZXlQcmVzc2VkID0gKGV2ZW50LmtleUlkZW50aWZpZXIgPT09ICJVcCIgfHwgZXZlbnQu
a2V5SWRlbnRpZmllciA9PT0gIkRvd24iKTsKIApAQCAtMzAxLDkgKzI5Nyw5IEBAIFdlYkluc3Bl
Y3Rvci5Cb3hNb2RlbERldGFpbHNTZWN0aW9uUm93LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAg
IHJldHVybiBudWxsOwogCiAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBfaGFuZGxlS2V5RG93bjogZnVuY3Rpb24oY29udGV4dCwgc3R5bGVQcm9wZXJ0eSwgZXZl
bnQpCisgICAgX2hhbmRsZUtleURvd24oY29udGV4dCwgc3R5bGVQcm9wZXJ0eSwgZXZlbnQpCiAg
ICAgewogICAgICAgICBpZiAoIS9eKD86UGFnZSk/KD86VXB8RG93bikkLy50ZXN0KGV2ZW50Lmtl
eUlkZW50aWZpZXIpKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzYwLDIzICszNTYsMjMgQEAg
V2ViSW5zcGVjdG9yLkJveE1vZGVsRGV0YWlsc1NlY3Rpb25Sb3cucHJvdG90eXBlID0gewogICAg
ICAgICB0aGlzLl9pZ25vcmVOZXh0UmVmcmVzaCA9IHRydWU7CiAKICAgICAgICAgdGhpcy5fYXBw
bHlVc2VySW5wdXQoZWxlbWVudCwgcmVwbGFjZW1lbnRTdHJpbmcsIG9yaWdpbmFsVmFsdWUsIGNv
bnRleHQsIGZhbHNlKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9lZGl0aW5nRW5kZWQ6IGZ1bmN0
aW9uKGVsZW1lbnQsIGNvbnRleHQpCisgICAgX2VkaXRpbmdFbmRlZChlbGVtZW50LCBjb250ZXh0
KQogICAgIHsKICAgICAgICAgZGVsZXRlIHRoaXMub3JpZ2luYWxQcm9wZXJ0eURhdGE7CiAgICAg
ICAgIGRlbGV0ZSB0aGlzLnByZXZpb3VzUHJvcGVydHlEYXRhQ2FuZGlkYXRlOwogICAgICAgICBl
bGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoImtleWRvd24iLCBjb250ZXh0LmtleURvd25IYW5k
bGVyLCBmYWxzZSk7CiAgICAgICAgIGRlbGV0ZSB0aGlzLl9pc0VkaXRpbmdNZXRyaWNzOwotICAg
IH0sCisgICAgfQogCi0gICAgX2VkaXRpbmdDYW5jZWxsZWQ6IGZ1bmN0aW9uKGVsZW1lbnQsIGNv
bnRleHQpCisgICAgX2VkaXRpbmdDYW5jZWxsZWQoZWxlbWVudCwgY29udGV4dCkKICAgICB7CiAg
ICAgICAgIHRoaXMuX2VkaXRpbmdFbmRlZChlbGVtZW50LCBjb250ZXh0KTsKICAgICAgICAgdGhp
cy5fcmVmcmVzaCgpOwotICAgIH0sCisgICAgfQogCi0gICAgX2FwcGx5VXNlcklucHV0OiBmdW5j
dGlvbihlbGVtZW50LCB1c2VySW5wdXQsIHByZXZpb3VzQ29udGVudCwgY29udGV4dCwgY29tbWl0
RWRpdG9yKQorICAgIF9hcHBseVVzZXJJbnB1dChlbGVtZW50LCB1c2VySW5wdXQsIHByZXZpb3Vz
Q29udGVudCwgY29udGV4dCwgY29tbWl0RWRpdG9yKQogICAgIHsKICAgICAgICAgaWYgKGNvbW1p
dEVkaXRvciAmJiB1c2VySW5wdXQgPT09IHByZXZpb3VzQ29udGVudCkgewogICAgICAgICAgICAg
Ly8gTm90aGluZyBjaGFuZ2VkLCBzbyBjYW5jZWwuCkBAIC00MTksMTMgKzQxNSwxNSBAQCBXZWJJ
bnNwZWN0b3IuQm94TW9kZWxEZXRhaWxzU2VjdGlvblJvdy5wcm90b3R5cGUgPSB7CiAgICAgICAg
IHZhciBwcm9wZXJ0eSA9IHRoaXMuX25vZGVTdHlsZXMuaW5saW5lU3R5bGUucHJvcGVydHlGb3JO
YW1lKGNvbnRleHQuc3R5bGVQcm9wZXJ0eSk7CiAgICAgICAgIHByb3BlcnR5LnZhbHVlID0gdXNl
cklucHV0OwogICAgICAgICBwcm9wZXJ0eS5hZGQoKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9l
ZGl0aW5nQ29tbWl0dGVkOiBmdW5jdGlvbihlbGVtZW50LCB1c2VySW5wdXQsIHByZXZpb3VzQ29u
dGVudCwgY29udGV4dCkKKyAgICBfZWRpdGluZ0NvbW1pdHRlZChlbGVtZW50LCB1c2VySW5wdXQs
IHByZXZpb3VzQ29udGVudCwgY29udGV4dCkKICAgICB7CiAgICAgICAgIHRoaXMuX2VkaXRpbmdF
bmRlZChlbGVtZW50LCBjb250ZXh0KTsKICAgICAgICAgdGhpcy5fYXBwbHlVc2VySW5wdXQoZWxl
bWVudCwgdXNlcklucHV0LCBwcmV2aW91c0NvbnRlbnQsIGNvbnRleHQsIHRydWUpOwogICAgIH0K
IH07CiAKLVdlYkluc3BlY3Rvci5Cb3hNb2RlbERldGFpbHNTZWN0aW9uUm93LnByb3RvdHlwZS5f
X3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3cucHJvdG90eXBlOworV2Vi
SW5zcGVjdG9yLkJveE1vZGVsRGV0YWlsc1NlY3Rpb25Sb3cuU3R5bGVDbGFzc05hbWUgPSAiYm94
LW1vZGVsIjsKK1dlYkluc3BlY3Rvci5Cb3hNb2RlbERldGFpbHNTZWN0aW9uUm93LlN0eWxlVmFs
dWVEZWxpbWl0ZXJzID0gIiBceEEwXHRcblwiJzo7LC8oKSI7CitXZWJJbnNwZWN0b3IuQm94TW9k
ZWxEZXRhaWxzU2VjdGlvblJvdy5DU1NOdW1iZXJSZWdleCA9IC9eKC0/KD86XGQrKD86XC5cZCsp
P3xcLlxkKykpJC87CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9CcmVha3BvaW50QWN0aW9uVmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0JyZWFrcG9pbnRBY3Rpb25WaWV3LmpzCmluZGV4IDRjMWRi
MzA3ZGQ2OWUyMGZkZGFiMjg0NWY0OWMyNTQyMDM0ZmFmN2EuLmU5OTI5NmZkNGYzMjAzYmRkZGM5
OTU5YzUzMTZiNDY0YWQxOWUwN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0JyZWFrcG9pbnRBY3Rpb25WaWV3LmpzCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0JyZWFrcG9pbnRBY3Rpb25WaWV3Lmpz
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0yMywxMDcgKzIzLDEwNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
ICovCiAKLVdlYkluc3BlY3Rvci5CcmVha3BvaW50QWN0aW9uVmlldyA9IGZ1bmN0aW9uKGFjdGlv
biwgZGVsZWdhdGUsIG9taXRGb2N1cykKK1dlYkluc3BlY3Rvci5CcmVha3BvaW50QWN0aW9uVmll
dyA9IGNsYXNzIEJyZWFrcG9pbnRBY3Rpb25WaWV3IGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVj
dAogewotICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0
IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBlcigpLgotICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3Qu
Y2FsbCh0aGlzKTsKKyAgICBjb25zdHJ1Y3RvcihhY3Rpb24sIGRlbGVnYXRlLCBvbWl0Rm9jdXMp
CisgICAgeworICAgICAgICBzdXBlcigpOwogCi0gICAgY29uc29sZS5hc3NlcnQoYWN0aW9uKTsK
LSAgICBjb25zb2xlLmFzc2VydChkZWxlZ2F0ZSk7Ci0gICAgY29uc29sZS5hc3NlcnQoRGVidWdn
ZXJBZ2VudC5CcmVha3BvaW50QWN0aW9uVHlwZSk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGFj
dGlvbik7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGRlbGVnYXRlKTsKKyAgICAgICAgY29uc29s
ZS5hc3NlcnQoRGVidWdnZXJBZ2VudC5CcmVha3BvaW50QWN0aW9uVHlwZSk7CiAKLSAgICB0aGlz
Ll9hY3Rpb24gPSBhY3Rpb247Ci0gICAgdGhpcy5fZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICAg
ICAgdGhpcy5fYWN0aW9uID0gYWN0aW9uOworICAgICAgICB0aGlzLl9kZWxlZ2F0ZSA9IGRlbGVn
YXRlOwogCi0gICAgdGhpcy5fZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIp
OwotICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NOYW1lID0gImJyZWFrcG9pbnQtYWN0aW9uLWJsb2Nr
IjsKKyAgICAgICAgdGhpcy5fZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIp
OworICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTmFtZSA9ICJicmVha3BvaW50LWFjdGlvbi1i
bG9jayI7CiAKLSAgICB2YXIgaGVhZGVyID0gdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZChkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSk7Ci0gICAgaGVhZGVyLmNsYXNzTmFtZSA9ICJicmVh
a3BvaW50LWFjdGlvbi1ibG9jay1oZWFkZXIiOworICAgICAgICB2YXIgaGVhZGVyID0gdGhpcy5f
ZWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSk7CisgICAg
ICAgIGhlYWRlci5jbGFzc05hbWUgPSAiYnJlYWtwb2ludC1hY3Rpb24tYmxvY2staGVhZGVyIjsK
IAotICAgIHZhciBwaWNrZXIgPSBoZWFkZXIuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgic2VsZWN0IikpOwotICAgIHBpY2tlci5hZGRFdmVudExpc3RlbmVyKCJjaGFuZ2UiLCB0
aGlzLl9waWNrZXJDaGFuZ2VkLmJpbmQodGhpcykpOworICAgICAgICB2YXIgcGlja2VyID0gaGVh
ZGVyLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNlbGVjdCIpKTsKKyAgICAg
ICAgcGlja2VyLmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsIHRoaXMuX3BpY2tlckNoYW5nZWQu
YmluZCh0aGlzKSk7CiAKLSAgICBmb3IgKHZhciBrZXkgaW4gV2ViSW5zcGVjdG9yLkJyZWFrcG9p
bnRBY3Rpb24uVHlwZSkgewotICAgICAgICB2YXIgdHlwZSA9IFdlYkluc3BlY3Rvci5CcmVha3Bv
aW50QWN0aW9uLlR5cGVba2V5XTsKLSAgICAgICAgdmFyIG9wdGlvbiA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoIm9wdGlvbiIpOwotICAgICAgICBvcHRpb24udGV4dENvbnRlbnQgPSBXZWJJbnNw
ZWN0b3IuQnJlYWtwb2ludEFjdGlvblZpZXcuZGlzcGxheVN0cmluZ0ZvclR5cGUodHlwZSk7Ci0g
ICAgICAgIG9wdGlvbi5zZWxlY3RlZCA9IHRoaXMuX2FjdGlvbi50eXBlID09PSB0eXBlOwotICAg
ICAgICBvcHRpb24udmFsdWUgPSB0eXBlOwotICAgICAgICBwaWNrZXIuYWRkKG9wdGlvbik7Ci0g
ICAgfQorICAgICAgICBmb3IgKHZhciBrZXkgaW4gV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRBY3Rp
b24uVHlwZSkgeworICAgICAgICAgICAgdmFyIHR5cGUgPSBXZWJJbnNwZWN0b3IuQnJlYWtwb2lu
dEFjdGlvbi5UeXBlW2tleV07CisgICAgICAgICAgICB2YXIgb3B0aW9uID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgib3B0aW9uIik7CisgICAgICAgICAgICBvcHRpb24udGV4dENvbnRlbnQgPSBX
ZWJJbnNwZWN0b3IuQnJlYWtwb2ludEFjdGlvblZpZXcuZGlzcGxheVN0cmluZ0ZvclR5cGUodHlw
ZSk7CisgICAgICAgICAgICBvcHRpb24uc2VsZWN0ZWQgPSB0aGlzLl9hY3Rpb24udHlwZSA9PT0g
dHlwZTsKKyAgICAgICAgICAgIG9wdGlvbi52YWx1ZSA9IHR5cGU7CisgICAgICAgICAgICBwaWNr
ZXIuYWRkKG9wdGlvbik7CisgICAgICAgIH0KIAotICAgIHZhciBhcHBlbmRBY3Rpb25CdXR0b24g
PSBoZWFkZXIuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYnV0dG9uIikpOwot
ICAgIGFwcGVuZEFjdGlvbkJ1dHRvbi5jbGFzc05hbWUgPSAiYnJlYWtwb2ludC1hY3Rpb24tYXBw
ZW5kLWJ1dHRvbiI7Ci0gICAgYXBwZW5kQWN0aW9uQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNs
aWNrIiwgdGhpcy5fYXBwZW5kQWN0aW9uQnV0dG9uQ2xpY2tlZC5iaW5kKHRoaXMpKTsKLSAgICBh
cHBlbmRBY3Rpb25CdXR0b24udGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkFkZCBuZXcg
YnJlYWtwb2ludCBhY3Rpb24gYWZ0ZXIgdGhpcyBhY3Rpb24iKTsKKyAgICAgICAgdmFyIGFwcGVu
ZEFjdGlvbkJ1dHRvbiA9IGhlYWRlci5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJidXR0b24iKSk7CisgICAgICAgIGFwcGVuZEFjdGlvbkJ1dHRvbi5jbGFzc05hbWUgPSAiYnJl
YWtwb2ludC1hY3Rpb24tYXBwZW5kLWJ1dHRvbiI7CisgICAgICAgIGFwcGVuZEFjdGlvbkJ1dHRv
bi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX2FwcGVuZEFjdGlvbkJ1dHRvbkNsaWNr
ZWQuYmluZCh0aGlzKSk7CisgICAgICAgIGFwcGVuZEFjdGlvbkJ1dHRvbi50aXRsZSA9IFdlYklu
c3BlY3Rvci5VSVN0cmluZygiQWRkIG5ldyBicmVha3BvaW50IGFjdGlvbiBhZnRlciB0aGlzIGFj
dGlvbiIpOwogCi0gICAgdmFyIHJlbW92ZUFjdGlvbkJ1dHRvbiA9IGhlYWRlci5hcHBlbmRDaGls
ZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJidXR0b24iKSk7Ci0gICAgcmVtb3ZlQWN0aW9uQnV0
dG9uLmNsYXNzTmFtZSA9ICJicmVha3BvaW50LWFjdGlvbi1yZW1vdmUtYnV0dG9uIjsKLSAgICBy
ZW1vdmVBY3Rpb25CdXR0b24uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl9yZW1vdmVB
Y3Rpb24uYmluZCh0aGlzKSk7Ci0gICAgcmVtb3ZlQWN0aW9uQnV0dG9uLnRpdGxlID0gV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJSZW1vdmUgdGhpcyBicmVha3BvaW50IGFjdGlvbiIpOworICAgICAg
ICB2YXIgcmVtb3ZlQWN0aW9uQnV0dG9uID0gaGVhZGVyLmFwcGVuZENoaWxkKGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImJ1dHRvbiIpKTsKKyAgICAgICAgcmVtb3ZlQWN0aW9uQnV0dG9uLmNsYXNz
TmFtZSA9ICJicmVha3BvaW50LWFjdGlvbi1yZW1vdmUtYnV0dG9uIjsKKyAgICAgICAgcmVtb3Zl
QWN0aW9uQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fcmVtb3ZlQWN0aW9u
LmJpbmQodGhpcykpOworICAgICAgICByZW1vdmVBY3Rpb25CdXR0b24udGl0bGUgPSBXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIlJlbW92ZSB0aGlzIGJyZWFrcG9pbnQgYWN0aW9uIik7CiAKLSAgICB0
aGlzLl9ib2R5RWxlbWVudCA9IHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgiZGl2IikpOwotICAgIHRoaXMuX2JvZHlFbGVtZW50LmNsYXNzTmFtZSA9ICJi
cmVha3BvaW50LWFjdGlvbi1ibG9jay1ib2R5IjsKKyAgICAgICAgdGhpcy5fYm9keUVsZW1lbnQg
PSB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIp
KTsKKyAgICAgICAgdGhpcy5fYm9keUVsZW1lbnQuY2xhc3NOYW1lID0gImJyZWFrcG9pbnQtYWN0
aW9uLWJsb2NrLWJvZHkiOwogCi0gICAgdGhpcy5fdXBkYXRlQm9keShvbWl0Rm9jdXMpOwotfTsK
LQotV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRBY3Rpb25WaWV3LmRpc3BsYXlTdHJpbmdGb3JUeXBl
ID0gZnVuY3Rpb24odHlwZSkKLXsKLSAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNlIFdlYklu
c3BlY3Rvci5CcmVha3BvaW50QWN0aW9uLlR5cGUuTG9nOgotICAgICAgICByZXR1cm4gV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJMb2cgTWVzc2FnZSIpOwotICAgIGNhc2UgV2ViSW5zcGVjdG9yLkJy
ZWFrcG9pbnRBY3Rpb24uVHlwZS5FdmFsdWF0ZToKLSAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiRXZhbHVhdGUgSmF2YVNjcmlwdCIpOwotICAgIGNhc2UgV2ViSW5zcGVjdG9y
LkJyZWFrcG9pbnRBY3Rpb24uVHlwZS5Tb3VuZDoKLSAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiUGxheSBTb3VuZCIpOwotICAgIGNhc2UgV2ViSW5zcGVjdG9yLkJyZWFrcG9p
bnRBY3Rpb24uVHlwZS5Qcm9iZToKLSAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiUHJvYmUgRXhwcmVzc2lvbiIpOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KGZhbHNlKTsKLSAgICAgICAgcmV0dXJuICIiOworICAgICAgICB0aGlzLl91cGRhdGVCb2R5
KG9taXRGb2N1cyk7CiAgICAgfQotfTsKIAotV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRBY3Rpb25W
aWV3LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkJyZWFrcG9p
bnRBY3Rpb25WaWV3LAorICAgIC8vIFN0YXRpYworCisgICAgc3RhdGljIGRpc3BsYXlTdHJpbmdG
b3JUeXBlKHR5cGUpCisgICAgeworICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICAgICAgY2Fz
ZSBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludEFjdGlvbi5UeXBlLkxvZzoKKyAgICAgICAgICAgIHJl
dHVybiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkxvZyBNZXNzYWdlIik7CisgICAgICAgIGNhc2Ug
V2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRBY3Rpb24uVHlwZS5FdmFsdWF0ZToKKyAgICAgICAgICAg
IHJldHVybiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkV2YWx1YXRlIEphdmFTY3JpcHQiKTsKKyAg
ICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludEFjdGlvbi5UeXBlLlNvdW5kOgorICAg
ICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5VSVN0cmluZygiUGxheSBTb3VuZCIpOworICAg
ICAgICBjYXNlIFdlYkluc3BlY3Rvci5CcmVha3BvaW50QWN0aW9uLlR5cGUuUHJvYmU6CisgICAg
ICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJQcm9iZSBFeHByZXNzaW9uIik7
CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBjb25zb2xlLmFzc2VydChmYWxzZSk7Cisg
ICAgICAgICAgICByZXR1cm4gIiI7CisgICAgICAgIH0KKyAgICB9CiAKICAgICAvLyBQdWJsaWMK
IAogICAgIGdldCBhY3Rpb24oKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2FjdGlvbjsK
LSAgICB9LAorICAgIH0KIAogICAgIGdldCBlbGVtZW50KCkKICAgICB7CiAgICAgICAgIHJldHVy
biB0aGlzLl9lbGVtZW50OwotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJpdmF0ZQogCi0gICAg
X3BpY2tlckNoYW5nZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9waWNrZXJDaGFuZ2VkKGV2ZW50
KQogICAgIHsKICAgICAgICAgdmFyIG5ld1R5cGUgPSBldmVudC50YXJnZXQudmFsdWU7CiAgICAg
ICAgIHRoaXMuX2FjdGlvbiA9IHRoaXMuX2FjdGlvbi5icmVha3BvaW50LnJlY3JlYXRlQWN0aW9u
KG5ld1R5cGUsIHRoaXMuX2FjdGlvbik7CiAgICAgICAgIHRoaXMuX3VwZGF0ZUJvZHkoKTsKICAg
ICAgICAgdGhpcy5fZGVsZWdhdGUuYnJlYWtwb2ludEFjdGlvblZpZXdSZXNpemVkKHRoaXMpOwot
ICAgIH0sCisgICAgfQogCi0gICAgX2FwcGVuZEFjdGlvbkJ1dHRvbkNsaWNrZWQ6IGZ1bmN0aW9u
KGV2ZW50KQorICAgIF9hcHBlbmRBY3Rpb25CdXR0b25DbGlja2VkKGV2ZW50KQogICAgIHsKICAg
ICAgICAgdmFyIG5ld0FjdGlvbiA9IHRoaXMuX2FjdGlvbi5icmVha3BvaW50LmNyZWF0ZUFjdGlv
bihXZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5EZWZhdWx0QnJlYWtwb2ludEFjdGlvblR5cGUsIHRo
aXMuX2FjdGlvbik7CiAgICAgICAgIHRoaXMuX2RlbGVnYXRlLmJyZWFrcG9pbnRBY3Rpb25WaWV3
QXBwZW5kQWN0aW9uVmlldyh0aGlzLCBuZXdBY3Rpb24pOwotICAgIH0sCisgICAgfQogCi0gICAg
X3JlbW92ZUFjdGlvbjogZnVuY3Rpb24oKQorICAgIF9yZW1vdmVBY3Rpb24oKQogICAgIHsKICAg
ICAgICAgdGhpcy5fYWN0aW9uLmJyZWFrcG9pbnQucmVtb3ZlQWN0aW9uKHRoaXMuX2FjdGlvbik7
CiAgICAgICAgIHRoaXMuX2RlbGVnYXRlLmJyZWFrcG9pbnRBY3Rpb25WaWV3UmVtb3ZlQWN0aW9u
Vmlldyh0aGlzKTsKLSAgICB9LAorICAgIH0KIAotICAgIF91cGRhdGVCb2R5OiBmdW5jdGlvbihv
bWl0Rm9jdXMpCisgICAgX3VwZGF0ZUJvZHkob21pdEZvY3VzKQogICAgIHsKICAgICAgICAgdGhp
cy5fYm9keUVsZW1lbnQucmVtb3ZlQ2hpbGRyZW4oKTsKIApAQCAtMTgyLDE0ICsxODIsMTQgQEAg
V2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRBY3Rpb25WaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAg
ICAgIHRoaXMuX2JvZHlFbGVtZW50LmhpZGRlbiA9IHRydWU7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQotICAgIH0sCisgICAgfQogCi0gICAgX2xvZ0lucHV0Q2hhbmdlZDogZnVuY3Rp
b24oZXZlbnQpCisgICAgX2xvZ0lucHV0Q2hhbmdlZChldmVudCkKICAgICB7CiAgICAgICAgIHRo
aXMuX2FjdGlvbi5kYXRhID0gZXZlbnQudGFyZ2V0LnZhbHVlOwotICAgIH0sCisgICAgfQogCi0g
ICAgX2NvZGVNaXJyb3JCbHVycmVkOiBmdW5jdGlvbihldmVudCkKKyAgICBfY29kZU1pcnJvckJs
dXJyZWQoZXZlbnQpCiAgICAgewogICAgICAgICAvLyBUaHJvdyBhd2F5IHRoZSBleHByZXNzaW9u
IGlmIGl0J3MganVzdCB3aGl0ZXNwYWNlLgogICAgICAgICB2YXIgZGF0YSA9ICh0aGlzLl9jb2Rl
TWlycm9yLmdldFZhbHVlKCkgfHwgIiIpLnRyaW0oKTsKQEAgLTE5OCwxMiArMTk4LDEwIEBAIFdl
Ykluc3BlY3Rvci5CcmVha3BvaW50QWN0aW9uVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAg
ICB0aGlzLl9yZW1vdmVBY3Rpb24oKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgdGhpcy5f
YWN0aW9uLmRhdGEgPSBkYXRhOwotICAgIH0sCisgICAgfQogCi0gICAgX2NvZGVNaXJyb3JWaWV3
cG9ydENoYW5nZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9jb2RlTWlycm9yVmlld3BvcnRDaGFu
Z2VkKGV2ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5fZGVsZWdhdGUuYnJlYWtwb2ludEFjdGlv
blZpZXdSZXNpemVkKHRoaXMpOwogICAgIH0KIH07Ci0KLVdlYkluc3BlY3Rvci5CcmVha3BvaW50
QWN0aW9uVmlldy5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90
b3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9Db2RlTWlycm9yQWRkaXRpb25zLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvQ29kZU1pcnJvckFkZGl0aW9ucy5qcwppbmRleCAxOTA0NWI2MDM1M2Y5
OGI2NjBmNWY5YzhmNTViYjA1NjkwYWY0NzFjLi5iMmJiMTc4MDUyYWQ0NDVhMmFkZDBiYWFiM2U1
ZjJiY2JiNmVlNjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9Db2RlTWlycm9yQWRkaXRpb25zLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvZGVNaXJyb3JBZGRpdGlvbnMuanMKQEAgLTE4Miw3
ICsxODIsNyBAQAogCiAgICAgZnVuY3Rpb24gZXh0ZW5kZWRDU1NUb2tlbihzdHJlYW0sIHN0YXRl
KQogICAgIHsKLSAgICAgICAgY29uc3QgaGV4Q29sb3JSZWdleCA9IC8jKD86WzAtOWEtZkEtRl17
Nn18WzAtOWEtZkEtRl17M30pXGIvZzsKKyAgICAgICAgdmFyIGhleENvbG9yUmVnZXggPSAvIyg/
OlswLTlhLWZBLUZdezZ9fFswLTlhLWZBLUZdezN9KVxiL2c7CiAKICAgICAgICAgaWYgKHN0YXRl
Ll91cmxUb2tlbml6ZSkgewogICAgICAgICAgICAgLy8gQ2FsbCB0aGUgbGluayB0b2tlbml6ZXIg
aW5zdGVhZC4KQEAgLTUwMyw3ICs1MDMsNyBAQAogICAgICAgICB2YXIgZW5kID0gcmFuZ2UgaW5z
dGFuY2VvZiBXZWJJbnNwZWN0b3IuVGV4dFJhbmdlID8gcmFuZ2UuZW5kTGluZSArIDEgOiB0aGlz
LmxpbmVDb3VudCgpOwogCiAgICAgICAgIC8vIE1hdGNoZXMgcmdiYSgwLCAwLCAwLCAwLjUpLCBy
Z2IoMCwgMCwgMCksIGhzbCgpLCBoc2xhKCksICNmZmYsICNmZmZmZmYsIHdoaXRlCi0gICAgICAg
IGNvbnN0IGNvbG9yUmVnZXggPSAvKCg/OnJnYnxoc2wpYT9cKFteKV0rXCl8I1swLTlhLWZBLUZd
ezZ9fCNbMC05YS1mQS1GXXszfXxcYlx3K1xiKD8hWy0uXSkpL2c7CisgICAgICAgIHZhciBjb2xv
clJlZ2V4ID0gLygoPzpyZ2J8aHNsKWE/XChbXildK1wpfCNbMC05YS1mQS1GXXs2fXwjWzAtOWEt
ZkEtRl17M318XGJcdytcYig/IVstLl0pKS9nOwogCiAgICAgICAgIGZvciAodmFyIGxpbmVOdW1i
ZXIgPSBzdGFydDsgbGluZU51bWJlciA8IGVuZDsgKytsaW5lTnVtYmVyKSB7CiAgICAgICAgICAg
ICB2YXIgbGluZUNvbnRlbnQgPSB0aGlzLmdldExpbmUobGluZU51bWJlcik7CkBAIC01NjgsNyAr
NTY4LDcgQEAKICAgICAgICAgdmFyIHN0YXJ0ID0gcmFuZ2UgaW5zdGFuY2VvZiBXZWJJbnNwZWN0
b3IuVGV4dFJhbmdlID8gcmFuZ2Uuc3RhcnRMaW5lIDogMDsKICAgICAgICAgdmFyIGVuZCA9IHJh
bmdlIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlRleHRSYW5nZSA/IHJhbmdlLmVuZExpbmUgKyAx
IDogdGhpcy5saW5lQ291bnQoKTsKIAotICAgICAgICBjb25zdCBncmFkaWVudFJlZ2V4ID0gLyhy
ZXBlYXRpbmctKT8obGluZWFyfHJhZGlhbCktZ3JhZGllbnRccypcKFxzKi9nOworICAgICAgICB2
YXIgZ3JhZGllbnRSZWdleCA9IC8ocmVwZWF0aW5nLSk/KGxpbmVhcnxyYWRpYWwpLWdyYWRpZW50
XHMqXChccyovZzsKIAogICAgICAgICBmb3IgKHZhciBsaW5lTnVtYmVyID0gc3RhcnQ7IGxpbmVO
dW1iZXIgPCBlbmQ7ICsrbGluZU51bWJlcikgewogICAgICAgICAgICAgdmFyIGxpbmVDb250ZW50
ID0gdGhpcy5nZXRMaW5lKGxpbmVOdW1iZXIpOwpAQCAtNjUzLDIzICs2NTMsMjMgQEAKIAogICAg
IC8vIFJlZ2lzdGVyIHNvbWUgZXh0cmEgTUlNRS10eXBlcyBmb3IgQ29kZU1pcnJvci4gVGhlc2Ug
YXJlIGluIGFkZGl0aW9uIHRvIHRoZQogICAgIC8vIG9uZXMgQ29kZU1pcnJvciBhbHJlYWR5IHJl
Z2lzdGVycywgbGlrZSB0ZXh0L2h0bWwsIHRleHQvamF2YXNjcmlwdCwgZXRjLgotICAgIGNvbnN0
IGV4dHJhWE1MVHlwZXMgPSBbInRleHQveG1sIiwgInRleHQveHNsIl07CisgICAgdmFyIGV4dHJh
WE1MVHlwZXMgPSBbInRleHQveG1sIiwgInRleHQveHNsIl07CiAgICAgZXh0cmFYTUxUeXBlcy5m
b3JFYWNoKGZ1bmN0aW9uKHR5cGUpIHsKICAgICAgICAgQ29kZU1pcnJvci5kZWZpbmVNSU1FKHR5
cGUsICJ4bWwiKTsKICAgICB9KTsKIAotICAgIGNvbnN0IGV4dHJhSFRNTFR5cGVzID0gWyJhcHBs
aWNhdGlvbi94aHRtbCt4bWwiLCAiaW1hZ2Uvc3ZnK3htbCJdOworICAgIHZhciBleHRyYUhUTUxU
eXBlcyA9IFsiYXBwbGljYXRpb24veGh0bWwreG1sIiwgImltYWdlL3N2Zyt4bWwiXTsKICAgICBl
eHRyYUhUTUxUeXBlcy5mb3JFYWNoKGZ1bmN0aW9uKHR5cGUpIHsKICAgICAgICAgQ29kZU1pcnJv
ci5kZWZpbmVNSU1FKHR5cGUsICJodG1sbWl4ZWQiKTsKICAgICB9KTsKIAotICAgIGNvbnN0IGV4
dHJhSmF2YVNjcmlwdFR5cGVzID0gWyJ0ZXh0L2VjbWFzY3JpcHQiLCAiYXBwbGljYXRpb24vamF2
YXNjcmlwdCIsICJhcHBsaWNhdGlvbi9lY21hc2NyaXB0IiwgImFwcGxpY2F0aW9uL3gtamF2YXNj
cmlwdCIsCisgICAgdmFyIGV4dHJhSmF2YVNjcmlwdFR5cGVzID0gWyJ0ZXh0L2VjbWFzY3JpcHQi
LCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIsICJhcHBsaWNhdGlvbi9lY21hc2NyaXB0IiwgImFw
cGxpY2F0aW9uL3gtamF2YXNjcmlwdCIsCiAgICAgICAgICJ0ZXh0L3gtamF2YXNjcmlwdCIsICJ0
ZXh0L2phdmFzY3JpcHQxLjEiLCAidGV4dC9qYXZhc2NyaXB0MS4yIiwgInRleHQvamF2YXNjcmlw
dDEuMyIsICJ0ZXh0L2pzY3JpcHQiLCAidGV4dC9saXZlc2NyaXB0Il07CiAgICAgZXh0cmFKYXZh
U2NyaXB0VHlwZXMuZm9yRWFjaChmdW5jdGlvbih0eXBlKSB7CiAgICAgICAgIENvZGVNaXJyb3Iu
ZGVmaW5lTUlNRSh0eXBlLCAiamF2YXNjcmlwdCIpOwogICAgIH0pOwogCi0gICAgY29uc3QgZXh0
cmFKU09OVHlwZXMgPSBbImFwcGxpY2F0aW9uL3gtanNvbiIsICJ0ZXh0L3gtanNvbiJdOworICAg
IHZhciBleHRyYUpTT05UeXBlcyA9IFsiYXBwbGljYXRpb24veC1qc29uIiwgInRleHQveC1qc29u
Il07CiAgICAgZXh0cmFKU09OVHlwZXMuZm9yRWFjaChmdW5jdGlvbih0eXBlKSB7CiAgICAgICAg
IENvZGVNaXJyb3IuZGVmaW5lTUlNRSh0eXBlLCB7bmFtZTogImphdmFzY3JpcHQiLCBqc29uOiB0
cnVlfSk7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9Db2xvclBpY2tlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL0NvbG9yUGlja2VyLmpzCmluZGV4IDNkMTA3OTA3ZTBhMzRmNmUxZjAz
N2ZkZmNhODZjNTFhYzkyOWQ1YTAuLmY5MTY1M2E5ZGI2M2JkZDNlZWM1Yjk2YjUwMTRiOWVjZGE5
YzdhMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL0NvbG9yUGlja2VyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL0NvbG9yUGlja2VyLmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMyw1MCArMjMsNDMgQEAKICAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuQ29sb3JQaWNrZXIgPSBm
dW5jdGlvbigpCitXZWJJbnNwZWN0b3IuQ29sb3JQaWNrZXIgPSBjbGFzcyBDb2xvclBpY2tlciBl
eHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIHsKLSAgICAvLyBGSVhNRTogQ29udmVydCB0aGlz
IHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcywgYW5kIGNhbGwgc3VwZXIoKS4KLSAg
ICAvLyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7Ci0KLSAgICB0aGlzLl9jb2xvcldo
ZWVsID0gbmV3IFdlYkluc3BlY3Rvci5Db2xvcldoZWVsKCk7Ci0gICAgdGhpcy5fY29sb3JXaGVl
bC5kZWxlZ2F0ZSA9IHRoaXM7Ci0gICAgdGhpcy5fY29sb3JXaGVlbC5kaW1lbnNpb24gPSAyMDA7
CisgICAgY29uc3RydWN0b3IoKQorICAgIHsKKyAgICAgICAgc3VwZXIoKTsKIAotICAgIHRoaXMu
X2JyaWdodG5lc3NTbGlkZXIgPSBuZXcgV2ViSW5zcGVjdG9yLlNsaWRlcigpOwotICAgIHRoaXMu
X2JyaWdodG5lc3NTbGlkZXIuZGVsZWdhdGUgPSB0aGlzOwotICAgIHRoaXMuX2JyaWdodG5lc3NT
bGlkZXIuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJicmlnaHRuZXNzIik7CisgICAgICAgIHRoaXMu
X2NvbG9yV2hlZWwgPSBuZXcgV2ViSW5zcGVjdG9yLkNvbG9yV2hlZWwoKTsKKyAgICAgICAgdGhp
cy5fY29sb3JXaGVlbC5kZWxlZ2F0ZSA9IHRoaXM7CisgICAgICAgIHRoaXMuX2NvbG9yV2hlZWwu
ZGltZW5zaW9uID0gMjAwOwogCi0gICAgdGhpcy5fb3BhY2l0eVNsaWRlciA9IG5ldyBXZWJJbnNw
ZWN0b3IuU2xpZGVyKCk7Ci0gICAgdGhpcy5fb3BhY2l0eVNsaWRlci5kZWxlZ2F0ZSA9IHRoaXM7
Ci0gICAgdGhpcy5fb3BhY2l0eVNsaWRlci5lbGVtZW50LmNsYXNzTGlzdC5hZGQoIm9wYWNpdHki
KTsKKyAgICAgICAgdGhpcy5fYnJpZ2h0bmVzc1NsaWRlciA9IG5ldyBXZWJJbnNwZWN0b3IuU2xp
ZGVyKCk7CisgICAgICAgIHRoaXMuX2JyaWdodG5lc3NTbGlkZXIuZGVsZWdhdGUgPSB0aGlzOwor
ICAgICAgICB0aGlzLl9icmlnaHRuZXNzU2xpZGVyLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgiYnJp
Z2h0bmVzcyIpOwogCi0gICAgdGhpcy5fZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImRpdiIpOwotICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NOYW1lID0gImNvbG9yLXBpY2tlciI7Cisg
ICAgICAgIHRoaXMuX29wYWNpdHlTbGlkZXIgPSBuZXcgV2ViSW5zcGVjdG9yLlNsaWRlcigpOwor
ICAgICAgICB0aGlzLl9vcGFjaXR5U2xpZGVyLmRlbGVnYXRlID0gdGhpczsKKyAgICAgICAgdGhp
cy5fb3BhY2l0eVNsaWRlci5lbGVtZW50LmNsYXNzTGlzdC5hZGQoIm9wYWNpdHkiKTsKIAotICAg
IHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fY29sb3JXaGVlbC5lbGVtZW50KTsKLSAg
ICB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2JyaWdodG5lc3NTbGlkZXIuZWxlbWVu
dCk7Ci0gICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9vcGFjaXR5U2xpZGVyLmVs
ZW1lbnQpOworICAgICAgICB0aGlzLl9lbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
ZGl2Iik7CisgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NOYW1lID0gImNvbG9yLXBpY2tlciI7
CiAKLSAgICB0aGlzLl9vcGFjaXR5ID0gMDsKLSAgICB0aGlzLl9vcGFjaXR5UGF0dGVybiA9ICJ1
cmwoSW1hZ2VzL0NoZWNrZXJzLnN2ZykiOworICAgICAgICB0aGlzLl9lbGVtZW50LmFwcGVuZENo
aWxkKHRoaXMuX2NvbG9yV2hlZWwuZWxlbWVudCk7CisgICAgICAgIHRoaXMuX2VsZW1lbnQuYXBw
ZW5kQ2hpbGQodGhpcy5fYnJpZ2h0bmVzc1NsaWRlci5lbGVtZW50KTsKKyAgICAgICAgdGhpcy5f
ZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9vcGFjaXR5U2xpZGVyLmVsZW1lbnQpOwogCi0gICAg
dGhpcy5fY29sb3IgPSAid2hpdGUiOwotfTsKKyAgICAgICAgdGhpcy5fb3BhY2l0eSA9IDA7Cisg
ICAgICAgIHRoaXMuX29wYWNpdHlQYXR0ZXJuID0gInVybChJbWFnZXMvQ2hlY2tlcnMuc3ZnKSI7
CiAKLVdlYkluc3BlY3Rvci5Db2xvclBpY2tlci5FdmVudCA9IHsKLSAgICBDb2xvckNoYW5nZWQ6
ICJjc3MtY29sb3ItcGlja2VyLWNvbG9yLWNoYW5nZWQiCi19OwotCi1XZWJJbnNwZWN0b3IuQ29s
b3JQaWNrZXIucHJvdG90eXBlID0gewotICAgIGNvbnRydWN0b3I6IFdlYkluc3BlY3Rvci5Db2xv
clBpY2tlciwKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlLAor
ICAgICAgICB0aGlzLl9jb2xvciA9ICJ3aGl0ZSI7CisgICAgfQogCiAgICAgLy8gUHVibGljCiAK
ICAgICBnZXQgZWxlbWVudCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudDsK
LSAgICB9LAorICAgIH0KIAogICAgIHNldCBicmlnaHRuZXNzKGJyaWdodG5lc3MpCiAgICAgewpA
QCAtNzcsNyArNzAsNyBAQCBXZWJJbnNwZWN0b3IuQ29sb3JQaWNrZXIucHJvdG90eXBlID0gewog
CiAgICAgICAgIHRoaXMuX3VwZGF0ZUNvbG9yKCk7CiAgICAgICAgIHRoaXMuX3VwZGF0ZVNsaWRl
cnModGhpcy5fY29sb3JXaGVlbC5yYXdDb2xvciwgdGhpcy5fY29sb3JXaGVlbC50aW50ZWRDb2xv
cik7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgb3BhY2l0eShvcGFjaXR5KQogICAgIHsKQEAg
LTg2LDE3ICs3OSwxNyBAQCBXZWJJbnNwZWN0b3IuQ29sb3JQaWNrZXIucHJvdG90eXBlID0gewog
CiAgICAgICAgIHRoaXMuX29wYWNpdHkgPSBvcGFjaXR5OwogICAgICAgICB0aGlzLl91cGRhdGVD
b2xvcigpOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGNvbG9yV2hlZWwoKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIHRoaXMuX2NvbG9yV2hlZWw7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQg
Y29sb3IoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2NvbG9yOwotICAgIH0sCisgICAg
fQogCiAgICAgc2V0IGNvbG9yKGNvbG9yKQogICAgIHsKQEAgLTExMSwyNSArMTA0LDI1IEBAIFdl
Ykluc3BlY3Rvci5Db2xvclBpY2tlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX3VwZGF0
ZVNsaWRlcnModGhpcy5fY29sb3JXaGVlbC5yYXdDb2xvciwgY29sb3IpOwogCiAgICAgICAgIGRl
bGV0ZSB0aGlzLl9kb250VXBkYXRlQ29sb3I7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBjb2xvcldo
ZWVsQ29sb3JEaWRDaGFuZ2U6IGZ1bmN0aW9uKGNvbG9yV2hlZWwpCisgICAgY29sb3JXaGVlbENv
bG9yRGlkQ2hhbmdlKGNvbG9yV2hlZWwpCiAgICAgewogICAgICAgICB0aGlzLl91cGRhdGVDb2xv
cigpOwogICAgICAgICB0aGlzLl91cGRhdGVTbGlkZXJzKHRoaXMuX2NvbG9yV2hlZWwucmF3Q29s
b3IsIHRoaXMuX2NvbG9yV2hlZWwudGludGVkQ29sb3IpOwotICAgIH0sCisgICAgfQogCi0gICAg
c2xpZGVyVmFsdWVEaWRDaGFuZ2U6IGZ1bmN0aW9uKHNsaWRlciwgdmFsdWUpCisgICAgc2xpZGVy
VmFsdWVEaWRDaGFuZ2Uoc2xpZGVyLCB2YWx1ZSkKICAgICB7CiAgICAgICAgIGlmIChzbGlkZXIg
PT09IHRoaXMuX29wYWNpdHlTbGlkZXIpCiAgICAgICAgICAgICB0aGlzLm9wYWNpdHkgPSB2YWx1
ZTsKICAgICAgICAgZWxzZSBpZiAoc2xpZGVyID09PSB0aGlzLl9icmlnaHRuZXNzU2xpZGVyKQog
ICAgICAgICAgICAgdGhpcy5icmlnaHRuZXNzID0gdmFsdWU7Ci0gICAgfSwKKyAgICB9CiAKICAg
ICAvLyBQcml2YXRlCiAKLSAgICBfdXBkYXRlQ29sb3I6IGZ1bmN0aW9uKCkKKyAgICBfdXBkYXRl
Q29sb3IoKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX2RvbnRVcGRhdGVDb2xvcikKICAgICAg
ICAgICAgIHJldHVybjsKQEAgLTE0NCw5ICsxMzcsOSBAQCBXZWJJbnNwZWN0b3IuQ29sb3JQaWNr
ZXIucHJvdG90eXBlID0gewogCiAgICAgICAgIHRoaXMuX2NvbG9yID0gbmV3IFdlYkluc3BlY3Rv
ci5Db2xvcih0aGlzLl9jb2xvckZvcm1hdCwgY29tcG9uZW50cyk7CiAgICAgICAgIHRoaXMuZGlz
cGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5Db2xvclBpY2tlci5FdmVudC5Db2xv
ckNoYW5nZWQsIHtjb2xvcjogdGhpcy5fY29sb3J9KTsKLSAgICB9LAorICAgIH0KIAotICAgIF91
cGRhdGVTbGlkZXJzOiBmdW5jdGlvbihyYXdDb2xvciwgdGludGVkQ29sb3IpCisgICAgX3VwZGF0
ZVNsaWRlcnMocmF3Q29sb3IsIHRpbnRlZENvbG9yKQogICAgIHsKICAgICAgICAgdmFyIHJnYiA9
IHRoaXMuX2NvbG9yV2hlZWwudGludGVkQ29sb3IucmdiOwogICAgICAgICB2YXIgb3BhcXVlID0g
bmV3IFdlYkluc3BlY3Rvci5Db2xvcihXZWJJbnNwZWN0b3IuQ29sb3IuRm9ybWF0LlJHQkEsIHJn
Yi5jb25jYXQoMSkpLnRvU3RyaW5nKCk7CkBAIC0xNTYsMyArMTQ5LDcgQEAgV2ViSW5zcGVjdG9y
LkNvbG9yUGlja2VyLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fYnJpZ2h0bmVzc1NsaWRl
ci5lbGVtZW50LnN0eWxlLmJhY2tncm91bmRJbWFnZSA9ICJsaW5lYXItZ3JhZGllbnQoOTBkZWcs
IGJsYWNrLCAiICsgcmF3Q29sb3IgKyAiKSI7CiAgICAgfQogfTsKKworV2ViSW5zcGVjdG9yLkNv
bG9yUGlja2VyLkV2ZW50ID0geworICAgIENvbG9yQ2hhbmdlZDogImNzcy1jb2xvci1waWNrZXIt
Y29sb3ItY2hhbmdlZCIKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9Db2xvcldoZWVsLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvQ29sb3JXaGVlbC5qcwppbmRleCAwYTU3YTI5MDM0NTA4ZDEwNjVl
NjgwY2Y0MzFkYTI5MzZmYmJkZTllLi45MGY5MDcwZjEzN2QwMGNkMGZlZmQyOTUxYWZkYzg0M2U4
MWY5MmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9Db2xvcldoZWVsLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL0NvbG9yV2hlZWwuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDMwICsyMywyNyBAQAogICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5Db2xvcldoZWVsID0gZnVu
Y3Rpb24oKQorV2ViSW5zcGVjdG9yLkNvbG9yV2hlZWwgPSBjbGFzcyBDb2xvcldoZWVsIGV4dGVu
ZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogewotICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8g
YSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBlcigpLgotICAgIC8v
IFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKLQotICAgIHRoaXMuX3Jhd0NhbnZhcyA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpOwotICAgIHRoaXMuX3RpbnRlZENhbnZh
cyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpOwotICAgIHRoaXMuX2ZpbmFsQ2Fu
dmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7CisgICAgY29uc3RydWN0b3Io
KQorICAgIHsKKyAgICAgICAgc3VwZXIoKTsKIAotICAgIHRoaXMuX2Nyb3NzaGFpciA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgIHRoaXMuX2Nyb3NzaGFpci5jbGFzc05hbWUg
PSAiY3Jvc3NoYWlyIjsKKyAgICAgICAgdGhpcy5fcmF3Q2FudmFzID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgiY2FudmFzIik7CisgICAgICAgIHRoaXMuX3RpbnRlZENhbnZhcyA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpOworICAgICAgICB0aGlzLl9maW5hbENhbnZhcyA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpOwogCi0gICAgdGhpcy5fZWxlbWVudCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NOYW1l
ID0gImNvbG9yLXdoZWVsIjsKKyAgICAgICAgdGhpcy5fY3Jvc3NoYWlyID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIHRoaXMuX2Nyb3NzaGFpci5jbGFzc05hbWUgPSAi
Y3Jvc3NoYWlyIjsKIAotICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fZmluYWxD
YW52YXMpOwotICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fY3Jvc3NoYWlyKTsK
KyAgICAgICAgdGhpcy5fZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwor
ICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTmFtZSA9ICJjb2xvci13aGVlbCI7CiAKLSAgICB0
aGlzLl9maW5hbENhbnZhcy5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCB0aGlzKTsKLX07
CisgICAgICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fZmluYWxDYW52YXMpOwor
ICAgICAgICB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2Nyb3NzaGFpcik7CiAKLVdl
Ykluc3BlY3Rvci5Db2xvcldoZWVsLnByb3RvdHlwZSA9IHsKLSAgICBjb250cnVjdG9yOiBXZWJJ
bnNwZWN0b3IuQ29sb3JXaGVlbCwKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5PYmplY3Qu
cHJvdG90eXBlLAorICAgICAgICB0aGlzLl9maW5hbENhbnZhcy5hZGRFdmVudExpc3RlbmVyKCJt
b3VzZWRvd24iLCB0aGlzKTsKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIApAQCAtNjUsMjMgKzYy
LDIzIEBAIFdlYkluc3BlY3Rvci5Db2xvcldoZWVsLnByb3RvdHlwZSA9IHsKIAogICAgICAgICB0
aGlzLl9kcmF3UmF3Q2FudmFzKCk7CiAgICAgICAgIHRoaXMuX2RyYXcoKTsKLSAgICB9LAorICAg
IH0KIAogICAgIGdldCBlbGVtZW50KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9lbGVt
ZW50OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGJyaWdodG5lc3MoKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIHRoaXMuX2JyaWdodG5lc3M7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgYnJp
Z2h0bmVzcyhicmlnaHRuZXNzKQogICAgIHsKICAgICAgICAgdGhpcy5fYnJpZ2h0bmVzcyA9IGJy
aWdodG5lc3M7CiAgICAgICAgIHRoaXMuX2RyYXcoKTsKLSAgICB9LAorICAgIH0KIAogICAgIGdl
dCB0aW50ZWRDb2xvcigpCiAgICAgewpAQCAtODksMTQgKzg2LDE0IEBAIFdlYkluc3BlY3Rvci5D
b2xvcldoZWVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybiB0aGlzLl9jb2xvckF0
UG9pbnRXaXRoQnJpZ2h0bmVzcyh0aGlzLl9jcm9zc2hhaXJQb3NpdGlvbi54ICogd2luZG93LmRl
dmljZVBpeGVsUmF0aW8sIHRoaXMuX2Nyb3NzaGFpclBvc2l0aW9uLnkgKiB3aW5kb3cuZGV2aWNl
UGl4ZWxSYXRpbywgdGhpcy5fYnJpZ2h0bmVzcyk7CiAKICAgICAgICAgcmV0dXJuIG5ldyBXZWJJ
bnNwZWN0b3IuQ29sb3IoV2ViSW5zcGVjdG9yLkNvbG9yLkZvcm1hdC5SR0JBLCBbMCwgMCwgMCwg
MF0pOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IHRpbnRlZENvbG9yKHRpbnRlZENvbG9yKQog
ICAgIHsKICAgICAgICAgdmFyIGRhdGEgPSB0aGlzLl90aW50ZWRDb2xvclRvUG9pbnRBbmRCcmln
aHRuZXNzKHRpbnRlZENvbG9yKTsKICAgICAgICAgdGhpcy5fc2V0Q3Jvc3NoYWlyUG9zaXRpb24o
ZGF0YS5wb2ludCk7CiAgICAgICAgIHRoaXMuYnJpZ2h0bmVzcyA9IGRhdGEuYnJpZ2h0bmVzczsK
LSAgICB9LAorICAgIH0KIAogICAgIGdldCByYXdDb2xvcigpCiAgICAgewpAQCAtMTA0LDExICsx
MDEsMTEgQEAgV2ViSW5zcGVjdG9yLkNvbG9yV2hlZWwucHJvdG90eXBlID0gewogICAgICAgICAg
ICAgcmV0dXJuIHRoaXMuX2NvbG9yQXRQb2ludFdpdGhCcmlnaHRuZXNzKHRoaXMuX2Nyb3NzaGFp
clBvc2l0aW9uLnggKiB3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbywgdGhpcy5fY3Jvc3NoYWlyUG9z
aXRpb24ueSAqIHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvLCAxKTsKIAogICAgICAgICByZXR1cm4g
bmV3IFdlYkluc3BlY3Rvci5Db2xvcihXZWJJbnNwZWN0b3IuQ29sb3IuRm9ybWF0LlJHQkEsIFsw
LCAwLCAwLCAwXSk7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcm90ZWN0ZWQKIAotICAgIGhh
bmRsZUV2ZW50OiBmdW5jdGlvbihldmVudCkKKyAgICBoYW5kbGVFdmVudChldmVudCkKICAgICB7
CiAgICAgICAgIHN3aXRjaCAoZXZlbnQudHlwZSkgewogICAgICAgICBjYXNlICJtb3VzZWRvd24i
OgpAQCAtMTIxLDMwICsxMTgsMzAgQEAgV2ViSW5zcGVjdG9yLkNvbG9yV2hlZWwucHJvdG90eXBl
ID0gewogICAgICAgICAgICAgdGhpcy5faGFuZGxlTW91c2V1cChldmVudCk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJpdmF0ZQogCi0g
ICAgX2hhbmRsZU1vdXNlZG93bjogZnVuY3Rpb24oZXZlbnQpCisgICAgX2hhbmRsZU1vdXNlZG93
bihldmVudCkKICAgICB7CiAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW1v
dmUiLCB0aGlzLCB0cnVlKTsKICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNl
dXAiLCB0aGlzLCB0cnVlKTsKIAogICAgICAgICB0aGlzLl91cGRhdGVDb2xvckZvck1vdXNlRXZl
bnQoZXZlbnQpOwotICAgIH0sCisgICAgfQogCi0gICAgX2hhbmRsZU1vdXNlbW92ZTogZnVuY3Rp
b24oZXZlbnQpCisgICAgX2hhbmRsZU1vdXNlbW92ZShldmVudCkKICAgICB7CiAgICAgICAgIHRo
aXMuX3VwZGF0ZUNvbG9yRm9yTW91c2VFdmVudChldmVudCk7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICBfaGFuZGxlTW91c2V1cDogZnVuY3Rpb24oZXZlbnQpCisgICAgX2hhbmRsZU1vdXNldXAoZXZl
bnQpCiAgICAgewogICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2Vtb3Zl
IiwgdGhpcywgdHJ1ZSk7CiAgICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3Vz
ZXVwIiwgdGhpcywgdHJ1ZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcG9pbnRJbkNpcmNsZUZv
ckV2ZW50OiBmdW5jdGlvbihldmVudCkKKyAgICBfcG9pbnRJbkNpcmNsZUZvckV2ZW50KGV2ZW50
KQogICAgIHsKICAgICAgICAgZnVuY3Rpb24gZGlzdGFuY2UoYSwgYikKICAgICAgICAgewpAQCAt
MTY5LDkgKzE2Niw5IEBAIFdlYkluc3BlY3Rvci5Db2xvcldoZWVsLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgICAgIHBvaW50ID0gcG9pbnRPbkNpcmN1bWZlcmVuY2UoY2VudGVyLCB0aGlzLl9yYWRp
dXMsIGFuZ2xlKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gcG9pbnQ7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBfdXBkYXRlQ29sb3JGb3JNb3VzZUV2ZW50OiBmdW5jdGlvbihldmVudCkKKyAg
ICBfdXBkYXRlQ29sb3JGb3JNb3VzZUV2ZW50KGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIHBv
aW50ID0gdGhpcy5fcG9pbnRJbkNpcmNsZUZvckV2ZW50KGV2ZW50KTsKIApAQCAtMTc5LDE1ICsx
NzYsMTUgQEAgV2ViSW5zcGVjdG9yLkNvbG9yV2hlZWwucHJvdG90eXBlID0gewogCiAgICAgICAg
IGlmICh0aGlzLmRlbGVnYXRlICYmIHR5cGVvZiB0aGlzLmRlbGVnYXRlLmNvbG9yV2hlZWxDb2xv
ckRpZENoYW5nZSA9PT0gImZ1bmN0aW9uIikKICAgICAgICAgICAgIHRoaXMuZGVsZWdhdGUuY29s
b3JXaGVlbENvbG9yRGlkQ2hhbmdlKHRoaXMpOwotICAgIH0sCisgICAgfQogCi0gICAgX3NldENy
b3NzaGFpclBvc2l0aW9uOiBmdW5jdGlvbihwb2ludCkKKyAgICBfc2V0Q3Jvc3NoYWlyUG9zaXRp
b24ocG9pbnQpCiAgICAgewogICAgICAgICB0aGlzLl9jcm9zc2hhaXJQb3NpdGlvbiA9IHBvaW50
OwogICAgICAgICB0aGlzLl9jcm9zc2hhaXIuc3R5bGUud2Via2l0VHJhbnNmb3JtID0gInRyYW5z
bGF0ZSgiICsgTWF0aC5yb3VuZChwb2ludC54KSArICJweCwgIiArIE1hdGgucm91bmQocG9pbnQu
eSkgKyAicHgpIjsKLSAgICB9LAorICAgIH0KIAotICAgIF90aW50ZWRDb2xvclRvUG9pbnRBbmRC
cmlnaHRuZXNzOiBmdW5jdGlvbihjb2xvcikKKyAgICBfdGludGVkQ29sb3JUb1BvaW50QW5kQnJp
Z2h0bmVzcyhjb2xvcikKICAgICB7CiAgICAgICAgIHZhciByZ2IgPSBjb2xvci5yZ2I7CiAgICAg
ICAgIHZhciBoc3YgPSBXZWJJbnNwZWN0b3IuQ29sb3IucmdiMmhzdihyZ2JbMF0sIHJnYlsxXSwg
cmdiWzJdKTsKQEAgLTIwMCw5ICsxOTcsOSBAQCBXZWJJbnNwZWN0b3IuQ29sb3JXaGVlbC5wcm90
b3R5cGUgPSB7CiAgICAgICAgICAgICBwb2ludDogbmV3IFdlYkluc3BlY3Rvci5Qb2ludCh4LCB5
KSwKICAgICAgICAgICAgIGJyaWdodG5lc3M6IGhzdlsyXQogICAgICAgICB9OwotICAgIH0sCisg
ICAgfQogCi0gICAgX2RyYXdSYXdDYW52YXM6IGZ1bmN0aW9uKCkgeworICAgIF9kcmF3UmF3Q2Fu
dmFzKCkgewogICAgICAgICB2YXIgY3R4ID0gdGhpcy5fcmF3Q2FudmFzLmdldENvbnRleHQoIjJk
Iik7CiAKICAgICAgICAgdmFyIGRpbWVuc2lvbiA9IHRoaXMuX2RpbWVuc2lvbiAqIHdpbmRvdy5k
ZXZpY2VQaXhlbFJhdGlvOwpAQCAtMjI1LDkgKzIyMiw5IEBAIFdlYkluc3BlY3Rvci5Db2xvcldo
ZWVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBjdHgu
cHV0SW1hZ2VEYXRhKGltYWdlRGF0YSwgMCwgMCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfY29s
b3JBdFBvaW50V2l0aEJyaWdodG5lc3M6IGZ1bmN0aW9uKHgsIHksIGJyaWdodG5lc3MpCisgICAg
X2NvbG9yQXRQb2ludFdpdGhCcmlnaHRuZXNzKHgsIHksIGJyaWdodG5lc3MpCiAgICAgewogICAg
ICAgICB2YXIgY2VudGVyID0gdGhpcy5fZGltZW5zaW9uIC8gMiAqIHdpbmRvdy5kZXZpY2VQaXhl
bFJhdGlvOwogICAgICAgICB2YXIgeERpcyA9IHggLSBjZW50ZXI7CkBAIC0yNDksOSArMjQ2LDkg
QEAgV2ViSW5zcGVjdG9yLkNvbG9yV2hlZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAgTWF0
aC5yb3VuZChyZ2JbMl0gKiAyNTUpLAogICAgICAgICAgICAgMQogICAgICAgICBdKTsKLSAgICB9
LAorICAgIH0KIAotICAgIF9kcmF3VGludGVkQ2FudmFzOiBmdW5jdGlvbigpCisgICAgX2RyYXdU
aW50ZWRDYW52YXMoKQogICAgIHsKICAgICAgICAgdmFyIGN0eCA9IHRoaXMuX3RpbnRlZENhbnZh
cy5nZXRDb250ZXh0KCIyZCIpOwogICAgICAgICB2YXIgZGltZW5zaW9uID0gdGhpcy5fZGltZW5z
aW9uICogd2luZG93LmRldmljZVBpeGVsUmF0aW87CkBAIC0yNjQsOSArMjYxLDkgQEAgV2ViSW5z
cGVjdG9yLkNvbG9yV2hlZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAgY3R4LmZpbGxSZWN0
KDAsIDAsIGRpbWVuc2lvbiwgZGltZW5zaW9uKTsKICAgICAgICAgfQogICAgICAgICBjdHgucmVz
dG9yZSgpOwotICAgIH0sCisgICAgfQogCi0gICAgX2RyYXc6IGZ1bmN0aW9uKCkKKyAgICBfZHJh
dygpCiAgICAgewogICAgICAgICB0aGlzLl9kcmF3VGludGVkQ2FudmFzKCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRleHRNZW51
LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGV4dE1l
bnUuanMKaW5kZXggZmZjOWU2NTY1YTUxZjZjODZjNWRjY2RiZTY1NGEzNjk0ZmEzMDNmYy4uOWYx
NTVjMGM3NTIwNTM0NDQ5M2QyODdjYTA4Y2Q2YTAzZjQzZTQwZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGV4dE1lbnUuanMKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGV4dE1lbnUuanMK
QEAgLTEsNiArMSw2IEBACiAvKgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
QEAgLTI5LDM5ICsyOSw0NyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3Iu
Q29udGV4dE1lbnVJdGVtID0gZnVuY3Rpb24odG9wTGV2ZWxNZW51LCB0eXBlLCBsYWJlbCwgZGlz
YWJsZWQsIGNoZWNrZWQpCitXZWJJbnNwZWN0b3IuQ29udGV4dE1lbnVJdGVtID0gY2xhc3MgQ29u
dGV4dE1lbnVJdGVtIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogewotICAgIHRoaXMuX3R5
cGUgPSB0eXBlOwotICAgIHRoaXMuX2xhYmVsID0gbGFiZWw7Ci0gICAgdGhpcy5fZGlzYWJsZWQg
PSBkaXNhYmxlZDsKLSAgICB0aGlzLl9jaGVja2VkID0gY2hlY2tlZDsKLSAgICB0aGlzLl9jb250
ZXh0TWVudSA9IHRvcExldmVsTWVudTsKLSAgICBpZiAodHlwZSA9PT0gIml0ZW0iIHx8IHR5cGUg
PT09ICJjaGVja2JveCIpCi0gICAgICAgIHRoaXMuX2lkID0gdG9wTGV2ZWxNZW51Lm5leHRJZCgp
OwotfTsKKyAgICBjb25zdHJ1Y3Rvcih0b3BMZXZlbE1lbnUsIHR5cGUsIGxhYmVsLCBkaXNhYmxl
ZCwgY2hlY2tlZCkKKyAgICB7CisgICAgICAgIHN1cGVyKCk7CisKKyAgICAgICAgdGhpcy5fdHlw
ZSA9IHR5cGU7CisgICAgICAgIHRoaXMuX2xhYmVsID0gbGFiZWw7CisgICAgICAgIHRoaXMuX2Rp
c2FibGVkID0gZGlzYWJsZWQ7CisgICAgICAgIHRoaXMuX2NoZWNrZWQgPSBjaGVja2VkOworICAg
ICAgICB0aGlzLl9jb250ZXh0TWVudSA9IHRvcExldmVsTWVudSB8fCB0aGlzOworCisgICAgICAg
IGlmICh0eXBlID09PSAiaXRlbSIgfHwgdHlwZSA9PT0gImNoZWNrYm94IikKKyAgICAgICAgICAg
IHRoaXMuX2lkID0gdG9wTGV2ZWxNZW51Lm5leHRJZCgpOworICAgIH0KKworICAgIC8vIFB1Ymxp
YwogCi1XZWJJbnNwZWN0b3IuQ29udGV4dE1lbnVJdGVtLnByb3RvdHlwZSA9IHsKLSAgICBpZDog
ZnVuY3Rpb24oKQorICAgIGlkKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9pZDsKLSAg
ICB9LAorICAgIH0KIAotICAgIHR5cGU6IGZ1bmN0aW9uKCkKKyAgICB0eXBlKCkKICAgICB7CiAg
ICAgICAgIHJldHVybiB0aGlzLl90eXBlOwotICAgIH0sCisgICAgfQogCi0gICAgaXNFbmFibGVk
OiBmdW5jdGlvbigpCisgICAgaXNFbmFibGVkKCkKICAgICB7CiAgICAgICAgIHJldHVybiAhdGhp
cy5fZGlzYWJsZWQ7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzZXRFbmFibGVkOiBmdW5jdGlvbihl
bmFibGVkKQorICAgIHNldEVuYWJsZWQoZW5hYmxlZCkKICAgICB7CiAgICAgICAgIHRoaXMuX2Rp
c2FibGVkID0gIWVuYWJsZWQ7Ci0gICAgfSwKKyAgICB9CisKKyAgICAvLyBQcml2YXRlCiAKLSAg
ICBfYnVpbGREZXNjcmlwdG9yOiBmdW5jdGlvbigpCisgICAgX2J1aWxkRGVzY3JpcHRvcigpCiAg
ICAgewogICAgICAgICBzd2l0Y2ggKHRoaXMuX3R5cGUpIHsKICAgICAgICAgY2FzZSAiaXRlbSI6
CkBAIC03NCw5MSArODIsMTA5IEBAIFdlYkluc3BlY3Rvci5Db250ZXh0TWVudUl0ZW0ucHJvdG90
eXBlID0gewogICAgIH0KIH07CiAKLVdlYkluc3BlY3Rvci5Db250ZXh0U3ViTWVudUl0ZW0gPSBm
dW5jdGlvbih0b3BMZXZlbE1lbnUsIGxhYmVsLCBkaXNhYmxlZCkKK1dlYkluc3BlY3Rvci5Db250
ZXh0U3ViTWVudUl0ZW0gPSBjbGFzcyBDb250ZXh0U3ViTWVudUl0ZW0gZXh0ZW5kcyBXZWJJbnNw
ZWN0b3IuQ29udGV4dE1lbnVJdGVtCiB7Ci0gICAgV2ViSW5zcGVjdG9yLkNvbnRleHRNZW51SXRl
bS5jYWxsKHRoaXMsIHRvcExldmVsTWVudSwgInN1Yk1lbnUiLCBsYWJlbCwgZGlzYWJsZWQpOwot
ICAgIHRoaXMuX2l0ZW1zID0gW107Ci19OworICAgIGNvbnN0cnVjdG9yKHRvcExldmVsTWVudSwg
bGFiZWwsIGRpc2FibGVkKQorICAgIHsKKyAgICAgICAgc3VwZXIodG9wTGV2ZWxNZW51LCAic3Vi
TWVudSIsIGxhYmVsLCBkaXNhYmxlZCk7CisKKyAgICAgICAgdGhpcy5faXRlbXMgPSBbXTsKKyAg
ICB9CisKKyAgICAvLyBQdWJsaWMKIAotV2ViSW5zcGVjdG9yLkNvbnRleHRTdWJNZW51SXRlbS5w
cm90b3R5cGUgPSB7Ci0gICAgYXBwZW5kSXRlbTogZnVuY3Rpb24obGFiZWwsIGhhbmRsZXIsIGRp
c2FibGVkKQorICAgIGFwcGVuZEl0ZW0obGFiZWwsIGhhbmRsZXIsIGRpc2FibGVkKQogICAgIHsK
ICAgICAgICAgdmFyIGl0ZW0gPSBuZXcgV2ViSW5zcGVjdG9yLkNvbnRleHRNZW51SXRlbSh0aGlz
Ll9jb250ZXh0TWVudSwgIml0ZW0iLCBsYWJlbCwgZGlzYWJsZWQpOwogICAgICAgICB0aGlzLl9w
dXNoSXRlbShpdGVtKTsKICAgICAgICAgdGhpcy5fY29udGV4dE1lbnUuX3NldEhhbmRsZXIoaXRl
bS5pZCgpLCBoYW5kbGVyKTsKICAgICAgICAgcmV0dXJuIGl0ZW07Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBhcHBlbmRTdWJNZW51SXRlbTogZnVuY3Rpb24obGFiZWwsIGRpc2FibGVkKQorICAgIGFw
cGVuZFN1Yk1lbnVJdGVtKGxhYmVsLCBkaXNhYmxlZCkKICAgICB7CiAgICAgICAgIHZhciBpdGVt
ID0gbmV3IFdlYkluc3BlY3Rvci5Db250ZXh0U3ViTWVudUl0ZW0odGhpcy5fY29udGV4dE1lbnUs
IGxhYmVsLCBkaXNhYmxlZCk7CiAgICAgICAgIHRoaXMuX3B1c2hJdGVtKGl0ZW0pOwogICAgICAg
ICByZXR1cm4gaXRlbTsKLSAgICB9LAorICAgIH0KIAotICAgIGFwcGVuZENoZWNrYm94SXRlbTog
ZnVuY3Rpb24obGFiZWwsIGhhbmRsZXIsIGNoZWNrZWQsIGRpc2FibGVkKQorICAgIGFwcGVuZENo
ZWNrYm94SXRlbShsYWJlbCwgaGFuZGxlciwgY2hlY2tlZCwgZGlzYWJsZWQpCiAgICAgewogICAg
ICAgICB2YXIgaXRlbSA9IG5ldyBXZWJJbnNwZWN0b3IuQ29udGV4dE1lbnVJdGVtKHRoaXMuX2Nv
bnRleHRNZW51LCAiY2hlY2tib3giLCBsYWJlbCwgZGlzYWJsZWQsIGNoZWNrZWQpOwogICAgICAg
ICB0aGlzLl9wdXNoSXRlbShpdGVtKTsKICAgICAgICAgdGhpcy5fY29udGV4dE1lbnUuX3NldEhh
bmRsZXIoaXRlbS5pZCgpLCBoYW5kbGVyKTsKICAgICAgICAgcmV0dXJuIGl0ZW07Ci0gICAgfSwK
KyAgICB9CiAKLSAgICBhcHBlbmRTZXBhcmF0b3I6IGZ1bmN0aW9uKCkKKyAgICBhcHBlbmRTZXBh
cmF0b3IoKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX2l0ZW1zLmxlbmd0aCkKICAgICAgICAg
ICAgIHRoaXMuX3BlbmRpbmdTZXBhcmF0b3IgPSB0cnVlOwotICAgIH0sCisgICAgfQogCi0gICAg
X3B1c2hJdGVtOiBmdW5jdGlvbihpdGVtKQorICAgIF9wdXNoSXRlbShpdGVtKQogICAgIHsKICAg
ICAgICAgaWYgKHRoaXMuX3BlbmRpbmdTZXBhcmF0b3IpIHsKICAgICAgICAgICAgIHRoaXMuX2l0
ZW1zLnB1c2gobmV3IFdlYkluc3BlY3Rvci5Db250ZXh0TWVudUl0ZW0odGhpcy5fY29udGV4dE1l
bnUsICJzZXBhcmF0b3IiKSk7CiAgICAgICAgICAgICBkZWxldGUgdGhpcy5fcGVuZGluZ1NlcGFy
YXRvcjsKICAgICAgICAgfQogICAgICAgICB0aGlzLl9pdGVtcy5wdXNoKGl0ZW0pOwotICAgIH0s
CisgICAgfQogCi0gICAgaXNFbXB0eTogZnVuY3Rpb24oKQorICAgIGlzRW1wdHkoKQogICAgIHsK
ICAgICAgICAgcmV0dXJuICF0aGlzLl9pdGVtcy5sZW5ndGg7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICBfYnVpbGREZXNjcmlwdG9yOiBmdW5jdGlvbigpCisgICAgX2J1aWxkRGVzY3JpcHRvcigpCiAg
ICAgewogICAgICAgICB2YXIgcmVzdWx0ID0geyB0eXBlOiAic3ViTWVudSIsIGxhYmVsOiB0aGlz
Ll9sYWJlbCwgZW5hYmxlZDogIXRoaXMuX2Rpc2FibGVkLCBzdWJJdGVtczogW10gfTsKICAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9pdGVtcy5sZW5ndGg7ICsraSkKICAgICAgICAg
ICAgIHJlc3VsdC5zdWJJdGVtcy5wdXNoKHRoaXMuX2l0ZW1zW2ldLl9idWlsZERlc2NyaXB0b3Io
KSk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfSwKLQotICAgIF9fcHJvdG9fXzogV2Vi
SW5zcGVjdG9yLkNvbnRleHRNZW51SXRlbS5wcm90b3R5cGUKKyAgICB9CiB9OwogCi1XZWJJbnNw
ZWN0b3IuQ29udGV4dE1lbnUgPSBmdW5jdGlvbihldmVudCkgewotICAgIFdlYkluc3BlY3Rvci5D
b250ZXh0U3ViTWVudUl0ZW0uY2FsbCh0aGlzLCB0aGlzLCAiIik7Ci0gICAgdGhpcy5fZXZlbnQg
PSBldmVudDsKLSAgICB0aGlzLl9oYW5kbGVycyA9IHt9OwotICAgIHRoaXMuX2lkID0gMDsKLX07
CitXZWJJbnNwZWN0b3IuQ29udGV4dE1lbnUgPSBjbGFzcyBDb250ZXh0TWVudSBleHRlbmRzIFdl
Ykluc3BlY3Rvci5Db250ZXh0U3ViTWVudUl0ZW0KK3sKKyAgICBjb25zdHJ1Y3RvcihldmVudCkg
eworICAgICAgICBzdXBlcihudWxsLCAiIik7CisKKyAgICAgICAgdGhpcy5fZXZlbnQgPSBldmVu
dDsKKyAgICAgICAgdGhpcy5faGFuZGxlcnMgPSB7fTsKKyAgICAgICAgdGhpcy5faWQgPSAwOwor
ICAgIH0KKworICAgIC8vIFN0YXRpYwogCi1XZWJJbnNwZWN0b3IuQ29udGV4dE1lbnUucHJvdG90
eXBlID0geworICAgIHN0YXRpYyBjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChpZCkKKyAgICB7Cisg
ICAgICAgIGlmIChXZWJJbnNwZWN0b3IuQ29udGV4dE1lbnUuX2xhc3RDb250ZXh0TWVudSkKKyAg
ICAgICAgICAgIFdlYkluc3BlY3Rvci5Db250ZXh0TWVudS5fbGFzdENvbnRleHRNZW51Ll9pdGVt
U2VsZWN0ZWQoaWQpOworICAgIH0KKworICAgIHN0YXRpYyBjb250ZXh0TWVudUNsZWFyZWQoKQor
ICAgIHsKKyAgICAgICAgLy8gRklYTUU6IFVuZm9ydHVuYXRlbHksIGNvbnRleHRNZW51Q2xlYXJl
ZCBpcyBpbnZva2VkIGJldHdlZW4gc2hvdyBhbmQgaXRlbSBzZWxlY3RlZAorICAgICAgICAvLyBz
byB3ZSBjYW4ndCBkZWxldGUgbGFzdCBtZW51IG9iamVjdCBmcm9tIFdlYkluc3BlY3Rvci4gRml4
IHRoZSBjb250cmFjdC4KKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAotICAgIG5leHRJZDogZnVu
Y3Rpb24oKQorICAgIG5leHRJZCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5faWQrKzsK
LSAgICB9LAorICAgIH0KIAotICAgIHNob3c6IGZ1bmN0aW9uKCkKKyAgICBzaG93KCkKICAgICB7
CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2V2ZW50IGluc3RhbmNlb2YgTW91c2VFdmVu
dCk7CiAKICAgICAgICAgdmFyIG1lbnVPYmplY3QgPSB0aGlzLl9idWlsZERlc2NyaXB0b3IoKTsK
IAogICAgICAgICBpZiAobWVudU9iamVjdC5sZW5ndGgpIHsKLSAgICAgICAgICAgIFdlYkluc3Bl
Y3Rvci5fY29udGV4dE1lbnUgPSB0aGlzOworICAgICAgICAgICAgV2ViSW5zcGVjdG9yLkNvbnRl
eHRNZW51Ll9sYXN0Q29udGV4dE1lbnUgPSB0aGlzOworCiAgICAgICAgICAgICBpZiAodGhpcy5f
ZXZlbnQudHlwZSAhPT0gImNvbnRleHRtZW51IiAmJiB0eXBlb2YgSW5zcGVjdG9yRnJvbnRlbmRI
b3N0LmRpc3BhdGNoRXZlbnRBc0NvbnRleHRNZW51RXZlbnQgPT09ICJmdW5jdGlvbiIpIHsKICAg
ICAgICAgICAgICAgICB0aGlzLl9tZW51T2JqZWN0ID0gbWVudU9iamVjdDsKICAgICAgICAgICAg
ICAgICB0aGlzLl9ldmVudC50YXJnZXQuYWRkRXZlbnRMaXN0ZW5lcigiY29udGV4dG1lbnUiLCB0
aGlzLCB0cnVlKTsKQEAgLTE2Niw3OSArMTkyLDQxIEBAIFdlYkluc3BlY3Rvci5Db250ZXh0TWVu
dS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICBJbnNw
ZWN0b3JGcm9udGVuZEhvc3Quc2hvd0NvbnRleHRNZW51KHRoaXMuX2V2ZW50LCBtZW51T2JqZWN0
KTsKICAgICAgICAgfQorCiAgICAgICAgIGlmICh0aGlzLl9ldmVudCkKICAgICAgICAgICAgIHRo
aXMuX2V2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpOwotICAgIH0sCisgICAgfQogCiAg
ICAgLy8gUHJvdGVjdGVkCiAKLSAgICBoYW5kbGVFdmVudDogZnVuY3Rpb24oZXZlbnQpCisgICAg
aGFuZGxlRXZlbnQoZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLl9ldmVudC50YXJnZXQucmVt
b3ZlRXZlbnRMaXN0ZW5lcigiY29udGV4dG1lbnUiLCB0aGlzLCB0cnVlKTsKICAgICAgICAgSW5z
cGVjdG9yRnJvbnRlbmRIb3N0LnNob3dDb250ZXh0TWVudShldmVudCwgdGhpcy5fbWVudU9iamVj
dCk7CiAgICAgICAgIGRlbGV0ZSB0aGlzLl9tZW51T2JqZWN0OwogCiAgICAgICAgIGV2ZW50LnN0
b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJpdmF0
ZQogCi0gICAgX3NldEhhbmRsZXI6IGZ1bmN0aW9uKGlkLCBoYW5kbGVyKQorICAgIF9zZXRIYW5k
bGVyKGlkLCBoYW5kbGVyKQogICAgIHsKICAgICAgICAgaWYgKGhhbmRsZXIpCiAgICAgICAgICAg
ICB0aGlzLl9oYW5kbGVyc1tpZF0gPSBoYW5kbGVyOwotICAgIH0sCisgICAgfQogCi0gICAgX2J1
aWxkRGVzY3JpcHRvcjogZnVuY3Rpb24oKQorICAgIF9idWlsZERlc2NyaXB0b3IoKQogICAgIHsK
ICAgICAgICAgdmFyIHJlc3VsdCA9IFtdOwogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRo
aXMuX2l0ZW1zLmxlbmd0aDsgKytpKQogICAgICAgICAgICAgcmVzdWx0LnB1c2godGhpcy5faXRl
bXNbaV0uX2J1aWxkRGVzY3JpcHRvcigpKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9
LAorICAgIH0KIAotICAgIF9pdGVtU2VsZWN0ZWQ6IGZ1bmN0aW9uKGlkKQorICAgIF9pdGVtU2Vs
ZWN0ZWQoaWQpCiAgICAgewogICAgICAgICBpZiAodGhpcy5faGFuZGxlcnNbaWRdKQogICAgICAg
ICAgICAgdGhpcy5faGFuZGxlcnNbaWRdLmNhbGwodGhpcyk7Ci0gICAgfSwKLQotICAgIGFwcGVu
ZEFwcGxpY2FibGVJdGVtczogZnVuY3Rpb24odGFyZ2V0KQotICAgIHsKLSAgICAgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBXZWJJbnNwZWN0b3IuQ29udGV4dE1lbnUuX3Byb3ZpZGVycy5sZW5ndGg7
ICsraSkgewotICAgICAgICAgICAgdmFyIHByb3ZpZGVyID0gV2ViSW5zcGVjdG9yLkNvbnRleHRN
ZW51Ll9wcm92aWRlcnNbaV07Ci0gICAgICAgICAgICB0aGlzLmFwcGVuZFNlcGFyYXRvcigpOwot
ICAgICAgICAgICAgcHJvdmlkZXIuYXBwZW5kQXBwbGljYWJsZUl0ZW1zKHRoaXMuX2V2ZW50LCB0
aGlzLCB0YXJnZXQpOwotICAgICAgICAgICAgdGhpcy5hcHBlbmRTZXBhcmF0b3IoKTsKLSAgICAg
ICAgfQotICAgIH0sCi0KLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5Db250ZXh0U3ViTWVu
dUl0ZW0ucHJvdG90eXBlCi19OwotCi1XZWJJbnNwZWN0b3IuQ29udGV4dE1lbnUuUHJvdmlkZXIg
PSBmdW5jdGlvbigpCi17Ci19OwotCi1XZWJJbnNwZWN0b3IuQ29udGV4dE1lbnUuUHJvdmlkZXIu
cHJvdG90eXBlID0gewotICAgIGFwcGVuZEFwcGxpY2FibGVJdGVtczogZnVuY3Rpb24oZXZlbnQs
IGNvbnRleHRNZW51LCB0YXJnZXQpIHsgfQotfTsKLQotV2ViSW5zcGVjdG9yLkNvbnRleHRNZW51
LnJlZ2lzdGVyUHJvdmlkZXIgPSBmdW5jdGlvbihwcm92aWRlcikKLXsKLSAgICBXZWJJbnNwZWN0
b3IuQ29udGV4dE1lbnUuX3Byb3ZpZGVycy5wdXNoKHByb3ZpZGVyKTsKLX07Ci0KLVdlYkluc3Bl
Y3Rvci5Db250ZXh0TWVudS5fcHJvdmlkZXJzID0gW107Ci0KLVdlYkluc3BlY3Rvci5jb250ZXh0
TWVudUl0ZW1TZWxlY3RlZCA9IGZ1bmN0aW9uKGlkKQotewotICAgIGlmIChXZWJJbnNwZWN0b3Iu
X2NvbnRleHRNZW51KQotICAgICAgICBXZWJJbnNwZWN0b3IuX2NvbnRleHRNZW51Ll9pdGVtU2Vs
ZWN0ZWQoaWQpOwotfTsKLQotV2ViSW5zcGVjdG9yLmNvbnRleHRNZW51Q2xlYXJlZCA9IGZ1bmN0
aW9uKCkKLXsKLSAgICAvLyBGSVhNRTogVW5mb3J0dW5hdGVseSwgY29udGV4dE1lbnVDbGVhcmVk
IGlzIGludm9rZWQgYmV0d2VlbiBzaG93IGFuZCBpdGVtIHNlbGVjdGVkCi0gICAgLy8gc28gd2Ug
Y2FuJ3QgZGVsZXRlIGxhc3QgbWVudSBvYmplY3QgZnJvbSBXZWJJbnNwZWN0b3IuIEZpeCB0aGUg
Y29udHJhY3QuCisgICAgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVFbGVtZW50UGF0aENvbXBvbmVudC5qcyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVFbGVtZW50UGF0aENv
bXBvbmVudC5qcwppbmRleCA1MWM3YTE0MmZjNjc2ZmUxMjQ4NGNkZWJmM2EzOTg2NmQxY2Y1N2U3
Li4yMTA5NGUzZjVjZWE1YzNlNzY5NDNhOGE0MDllYzViNDg3OTdhOTQwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVlRWxlbWVudFBh
dGhDb21wb25lbnQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvRE9NVHJlZUVsZW1lbnRQYXRoQ29tcG9uZW50LmpzCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMyw5NSArMjMsODcgQEAKICAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuRE9N
VHJlZUVsZW1lbnRQYXRoQ29tcG9uZW50ID0gZnVuY3Rpb24oZG9tVHJlZUVsZW1lbnQsIHJlcHJl
c2VudGVkT2JqZWN0KSB7Ci0gICAgdmFyIG5vZGUgPSBkb21UcmVlRWxlbWVudC5yZXByZXNlbnRl
ZE9iamVjdDsKLQotICAgIHZhciB0aXRsZSA9IG51bGw7Ci0gICAgdmFyIGNsYXNzTmFtZSA9IG51
bGw7Ci0KLSAgICBzd2l0Y2ggKG5vZGUubm9kZVR5cGUoKSkgewotICAgIGNhc2UgTm9kZS5FTEVN
RU5UX05PREU6Ci0gICAgICAgIGNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5ET01UcmVlRWxlbWVu
dFBhdGhDb21wb25lbnQuRE9NRWxlbWVudEljb25TdHlsZUNsYXNzTmFtZTsKLSAgICAgICAgdGl0
bGUgPSBXZWJJbnNwZWN0b3IuZGlzcGxheU5hbWVGb3JOb2RlKG5vZGUpOwotICAgICAgICBicmVh
azsKLQotICAgIGNhc2UgTm9kZS5URVhUX05PREU6Ci0gICAgICAgIGNsYXNzTmFtZSA9IFdlYklu
c3BlY3Rvci5ET01UcmVlRWxlbWVudFBhdGhDb21wb25lbnQuRE9NVGV4dE5vZGVJY29uU3R5bGVD
bGFzc05hbWU7Ci0gICAgICAgIHRpdGxlID0gIlwiIiArIG5vZGUubm9kZVZhbHVlKCkudHJpbUVu
ZCgzMikgKyAiXCIiOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgTm9kZS5DT01NRU5UX05P
REU6Ci0gICAgICAgIGNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5ET01UcmVlRWxlbWVudFBhdGhD
b21wb25lbnQuRE9NQ29tbWVudEljb25TdHlsZUNsYXNzTmFtZTsKLSAgICAgICAgdGl0bGUgPSAi
PCEtLSIgKyBub2RlLm5vZGVWYWx1ZSgpLnRyaW1FbmQoMzIpICsgIi0tPiI7Ci0gICAgICAgIGJy
ZWFrOwotCi0gICAgY2FzZSBOb2RlLkRPQ1VNRU5UX1RZUEVfTk9ERToKLSAgICAgICAgY2xhc3NO
YW1lID0gV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50UGF0aENvbXBvbmVudC5ET01Eb2N1bWVu
dFR5cGVJY29uU3R5bGVDbGFzc05hbWU7Ci0gICAgICAgIHRpdGxlID0gIjwhRE9DVFlQRT4iOwot
ICAgICAgICBicmVhazsKLQotICAgIGNhc2UgTm9kZS5ET0NVTUVOVF9OT0RFOgotICAgICAgICBj
bGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1lbnRQYXRoQ29tcG9uZW50LkRPTURv
Y3VtZW50SWNvblN0eWxlQ2xhc3NOYW1lOwotICAgICAgICB0aXRsZSA9IG5vZGUubm9kZU5hbWVJ
bkNvcnJlY3RDYXNlKCk7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBOb2RlLkNEQVRBX1NF
Q1RJT05fTk9ERToKLSAgICAgICAgY2xhc3NOYW1lID0gV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVt
ZW50UGF0aENvbXBvbmVudC5ET01DaGFyYWN0ZXJEYXRhSWNvblN0eWxlQ2xhc3NOYW1lOwotICAg
ICAgICB0aXRsZSA9ICI8IVtDREFUQVsiICsgbm9kZS50cmltRW5kKDMyKSArICJdXT4iOwotICAg
ICAgICBicmVhazsKLQotICAgIGNhc2UgTm9kZS5ET0NVTUVOVF9GUkFHTUVOVF9OT0RFOgotICAg
ICAgICAvLyBGSVhNRTogQXQgc29tZSBwb2ludCB3ZSBtaWdodCB3YW50IGEgZGlmZmVyZW50IGlj
b24gZm9yIHRoaXMuCi0gICAgICAgIC8vIDxyZGFyOi8vcHJvYmxlbS8xMjgwMDk1MD4gTmVlZCBp
Y29uIGZvciBET0NVTUVOVF9GUkFHTUVOVF9OT0RFIGFuZCBQUk9DRVNTSU5HX0lOU1RSVUNUSU9O
X05PREUKLSAgICAgICAgY2xhc3NOYW1lID0gV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50UGF0
aENvbXBvbmVudC5ET01Eb2N1bWVudFR5cGVJY29uU3R5bGVDbGFzc05hbWU7Ci0gICAgICAgIGlm
IChub2RlLmlzSW5TaGFkb3dUcmVlKCkpCi0gICAgICAgICAgICB0aXRsZSA9IFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiU2hhZG93IENvbnRlbnQiKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAg
dGl0bGUgPSBXZWJJbnNwZWN0b3IuZGlzcGxheU5hbWVGb3JOb2RlKG5vZGUpOwotICAgICAgICBi
cmVhazsKLQotICAgIGNhc2UgTm9kZS5QUk9DRVNTSU5HX0lOU1RSVUNUSU9OX05PREU6Ci0gICAg
ICAgIC8vIEZJWE1FOiBBdCBzb21lIHBvaW50IHdlIG1pZ2h0IHdhbnQgYSBkaWZmZXJlbnQgaWNv
biBmb3IgdGhpcy4KLSAgICAgICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzEyODAwOTUwPiBOZWVkIGlj
b24gZm9yIERPQ1VNRU5UX0ZSQUdNRU5UX05PREUgYW5kIFBST0NFU1NJTkdfSU5TVFJVQ1RJT05f
Tk9ERS4KLSAgICAgICAgY2xhc3NOYW1lID0gV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50UGF0
aENvbXBvbmVudC5ET01Eb2N1bWVudFR5cGVJY29uU3R5bGVDbGFzc05hbWU7Ci0gICAgICAgIHRp
dGxlID0gbm9kZS5ub2RlTmFtZUluQ29ycmVjdENhc2UoKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAg
ICBkZWZhdWx0OgotICAgICAgICBjb25zb2xlLmVycm9yKCJVbmtub3duIERPTSBub2RlIHR5cGU6
ICIsIG5vZGUubm9kZVR5cGUoKSk7Ci0gICAgICAgIGNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5E
T01UcmVlRWxlbWVudFBhdGhDb21wb25lbnQuRE9NTm9kZUljb25TdHlsZUNsYXNzTmFtZTsKLSAg
ICAgICAgdGl0bGUgPSBub2RlLm5vZGVOYW1lSW5Db3JyZWN0Q2FzZSgpOwotICAgIH0KLQotICAg
IFdlYkluc3BlY3Rvci5IaWVyYXJjaGljYWxQYXRoQ29tcG9uZW50LmNhbGwodGhpcywgdGl0bGUs
IGNsYXNzTmFtZSwgcmVwcmVzZW50ZWRPYmplY3QgfHwgZG9tVHJlZUVsZW1lbnQucmVwcmVzZW50
ZWRPYmplY3QpOwotCi0gICAgdGhpcy5fZG9tVHJlZUVsZW1lbnQgPSBkb21UcmVlRWxlbWVudDsK
LX07CitXZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1lbnRQYXRoQ29tcG9uZW50ID0gY2xhc3MgRE9N
VHJlZUVsZW1lbnRQYXRoQ29tcG9uZW50IGV4dGVuZHMgV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNh
bFBhdGhDb21wb25lbnQKK3sKKyAgICBjb25zdHJ1Y3Rvcihkb21UcmVlRWxlbWVudCwgcmVwcmVz
ZW50ZWRPYmplY3QpCisgICAgeworICAgICAgICB2YXIgbm9kZSA9IGRvbVRyZWVFbGVtZW50LnJl
cHJlc2VudGVkT2JqZWN0OwogCi1XZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1lbnRQYXRoQ29tcG9u
ZW50LkRPTUVsZW1lbnRJY29uU3R5bGVDbGFzc05hbWUgPSAiZG9tLWVsZW1lbnQtaWNvbiI7Ci1X
ZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1lbnRQYXRoQ29tcG9uZW50LkRPTVRleHROb2RlSWNvblN0
eWxlQ2xhc3NOYW1lID0gImRvbS10ZXh0LW5vZGUtaWNvbiI7Ci1XZWJJbnNwZWN0b3IuRE9NVHJl
ZUVsZW1lbnRQYXRoQ29tcG9uZW50LkRPTUNvbW1lbnRJY29uU3R5bGVDbGFzc05hbWUgPSAiZG9t
LWNvbW1lbnQtaWNvbiI7Ci1XZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1lbnRQYXRoQ29tcG9uZW50
LkRPTURvY3VtZW50VHlwZUljb25TdHlsZUNsYXNzTmFtZSA9ICJkb20tZG9jdW1lbnQtdHlwZS1p
Y29uIjsKLVdlYkluc3BlY3Rvci5ET01UcmVlRWxlbWVudFBhdGhDb21wb25lbnQuRE9NRG9jdW1l
bnRJY29uU3R5bGVDbGFzc05hbWUgPSAiZG9tLWRvY3VtZW50LWljb24iOwotV2ViSW5zcGVjdG9y
LkRPTVRyZWVFbGVtZW50UGF0aENvbXBvbmVudC5ET01DaGFyYWN0ZXJEYXRhSWNvblN0eWxlQ2xh
c3NOYW1lID0gImRvbS1jaGFyYWN0ZXItZGF0YS1pY29uIjsKLVdlYkluc3BlY3Rvci5ET01UcmVl
RWxlbWVudFBhdGhDb21wb25lbnQuRE9NTm9kZUljb25TdHlsZUNsYXNzTmFtZSA9ICJkb20tbm9k
ZS1pY29uIjsKKyAgICAgICAgdmFyIHRpdGxlID0gbnVsbDsKKyAgICAgICAgdmFyIGNsYXNzTmFt
ZSA9IG51bGw7CiAKLVdlYkluc3BlY3Rvci5ET01UcmVlRWxlbWVudFBhdGhDb21wb25lbnQucHJv
dG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1lbnRQ
YXRoQ29tcG9uZW50LAorICAgICAgICBzd2l0Y2ggKG5vZGUubm9kZVR5cGUoKSkgeworICAgICAg
ICBjYXNlIE5vZGUuRUxFTUVOVF9OT0RFOgorICAgICAgICAgICAgY2xhc3NOYW1lID0gV2ViSW5z
cGVjdG9yLkRPTVRyZWVFbGVtZW50UGF0aENvbXBvbmVudC5ET01FbGVtZW50SWNvblN0eWxlQ2xh
c3NOYW1lOworICAgICAgICAgICAgdGl0bGUgPSBXZWJJbnNwZWN0b3IuZGlzcGxheU5hbWVGb3JO
b2RlKG5vZGUpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBOb2RlLlRFWFRf
Tk9ERToKKyAgICAgICAgICAgIGNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5ET01UcmVlRWxlbWVu
dFBhdGhDb21wb25lbnQuRE9NVGV4dE5vZGVJY29uU3R5bGVDbGFzc05hbWU7CisgICAgICAgICAg
ICB0aXRsZSA9ICJcIiIgKyBub2RlLm5vZGVWYWx1ZSgpLnRyaW1FbmQoMzIpICsgIlwiIjsKKyAg
ICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgTm9kZS5DT01NRU5UX05PREU6CisgICAg
ICAgICAgICBjbGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1lbnRQYXRoQ29tcG9u
ZW50LkRPTUNvbW1lbnRJY29uU3R5bGVDbGFzc05hbWU7CisgICAgICAgICAgICB0aXRsZSA9ICI8
IS0tIiArIG5vZGUubm9kZVZhbHVlKCkudHJpbUVuZCgzMikgKyAiLS0+IjsKKyAgICAgICAgICAg
IGJyZWFrOworCisgICAgICAgIGNhc2UgTm9kZS5ET0NVTUVOVF9UWVBFX05PREU6CisgICAgICAg
ICAgICBjbGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1lbnRQYXRoQ29tcG9uZW50
LkRPTURvY3VtZW50VHlwZUljb25TdHlsZUNsYXNzTmFtZTsKKyAgICAgICAgICAgIHRpdGxlID0g
IjwhRE9DVFlQRT4iOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBOb2RlLkRP
Q1VNRU5UX05PREU6CisgICAgICAgICAgICBjbGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuRE9NVHJl
ZUVsZW1lbnRQYXRoQ29tcG9uZW50LkRPTURvY3VtZW50SWNvblN0eWxlQ2xhc3NOYW1lOworICAg
ICAgICAgICAgdGl0bGUgPSBub2RlLm5vZGVOYW1lSW5Db3JyZWN0Q2FzZSgpOworICAgICAgICAg
ICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBOb2RlLkNEQVRBX1NFQ1RJT05fTk9ERToKKyAgICAg
ICAgICAgIGNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5ET01UcmVlRWxlbWVudFBhdGhDb21wb25l
bnQuRE9NQ2hhcmFjdGVyRGF0YUljb25TdHlsZUNsYXNzTmFtZTsKKyAgICAgICAgICAgIHRpdGxl
ID0gIjwhW0NEQVRBWyIgKyBub2RlLnRyaW1FbmQoMzIpICsgIl1dPiI7CisgICAgICAgICAgICBi
cmVhazsKKworICAgICAgICBjYXNlIE5vZGUuRE9DVU1FTlRfRlJBR01FTlRfTk9ERToKKyAgICAg
ICAgICAgIC8vIEZJWE1FOiBBdCBzb21lIHBvaW50IHdlIG1pZ2h0IHdhbnQgYSBkaWZmZXJlbnQg
aWNvbiBmb3IgdGhpcy4KKyAgICAgICAgICAgIC8vIDxyZGFyOi8vcHJvYmxlbS8xMjgwMDk1MD4g
TmVlZCBpY29uIGZvciBET0NVTUVOVF9GUkFHTUVOVF9OT0RFIGFuZCBQUk9DRVNTSU5HX0lOU1RS
VUNUSU9OX05PREUKKyAgICAgICAgICAgIGNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5ET01UcmVl
RWxlbWVudFBhdGhDb21wb25lbnQuRE9NRG9jdW1lbnRUeXBlSWNvblN0eWxlQ2xhc3NOYW1lOwor
ICAgICAgICAgICAgaWYgKG5vZGUuaXNJblNoYWRvd1RyZWUoKSkKKyAgICAgICAgICAgICAgICB0
aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2hhZG93IENvbnRlbnQiKTsKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0aXRsZSA9IFdlYkluc3BlY3Rvci5kaXNwbGF5TmFt
ZUZvck5vZGUobm9kZSk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIE5vZGUu
UFJPQ0VTU0lOR19JTlNUUlVDVElPTl9OT0RFOgorICAgICAgICAgICAgLy8gRklYTUU6IEF0IHNv
bWUgcG9pbnQgd2UgbWlnaHQgd2FudCBhIGRpZmZlcmVudCBpY29uIGZvciB0aGlzLgorICAgICAg
ICAgICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzEyODAwOTUwPiBOZWVkIGljb24gZm9yIERPQ1VNRU5U
X0ZSQUdNRU5UX05PREUgYW5kIFBST0NFU1NJTkdfSU5TVFJVQ1RJT05fTk9ERS4KKyAgICAgICAg
ICAgIGNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5ET01UcmVlRWxlbWVudFBhdGhDb21wb25lbnQu
RE9NRG9jdW1lbnRUeXBlSWNvblN0eWxlQ2xhc3NOYW1lOworICAgICAgICAgICAgdGl0bGUgPSBu
b2RlLm5vZGVOYW1lSW5Db3JyZWN0Q2FzZSgpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoIlVua25vd24gRE9NIG5vZGUg
dHlwZTogIiwgbm9kZS5ub2RlVHlwZSgpKTsKKyAgICAgICAgICAgIGNsYXNzTmFtZSA9IFdlYklu
c3BlY3Rvci5ET01UcmVlRWxlbWVudFBhdGhDb21wb25lbnQuRE9NTm9kZUljb25TdHlsZUNsYXNz
TmFtZTsKKyAgICAgICAgICAgIHRpdGxlID0gbm9kZS5ub2RlTmFtZUluQ29ycmVjdENhc2UoKTsK
KyAgICAgICAgfQorCisgICAgICAgIHN1cGVyKHRpdGxlLCBjbGFzc05hbWUsIHJlcHJlc2VudGVk
T2JqZWN0IHx8IGRvbVRyZWVFbGVtZW50LnJlcHJlc2VudGVkT2JqZWN0KTsKKworICAgICAgICB0
aGlzLl9kb21UcmVlRWxlbWVudCA9IGRvbVRyZWVFbGVtZW50OworICAgIH0KIAogICAgIC8vIFB1
YmxpYwogCiAgICAgZ2V0IGRvbVRyZWVFbGVtZW50KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0
aGlzLl9kb21UcmVlRWxlbWVudDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBwcmV2aW91c1Np
YmxpbmcoKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9kb21UcmVlRWxlbWVudC5wcmV2aW91
c1NpYmxpbmcpCiAgICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgcmV0dXJuIG5ldyBX
ZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1lbnRQYXRoQ29tcG9uZW50KHRoaXMuX2RvbVRyZWVFbGVt
ZW50LnByZXZpb3VzU2libGluZyk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgbmV4dFNpYmxp
bmcoKQogICAgIHsKQEAgLTEyMCwyMCArMTEyLDI2IEBAIFdlYkluc3BlY3Rvci5ET01UcmVlRWxl
bWVudFBhdGhDb21wb25lbnQucHJvdG90eXBlID0gewogICAgICAgICBpZiAodGhpcy5fZG9tVHJl
ZUVsZW1lbnQubmV4dFNpYmxpbmcuaXNDbG9zZVRhZygpKQogICAgICAgICAgICAgcmV0dXJuIG51
bGw7CiAgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50UGF0aENv
bXBvbmVudCh0aGlzLl9kb21UcmVlRWxlbWVudC5uZXh0U2libGluZyk7Ci0gICAgfSwKKyAgICB9
CiAKICAgICAvLyBQcm90ZWN0ZWQKIAotICAgIG1vdXNlT3ZlcjogZnVuY3Rpb24oKQorICAgIG1v
dXNlT3ZlcigpCiAgICAgewogICAgICAgICB2YXIgbm9kZUlkID0gdGhpcy5fZG9tVHJlZUVsZW1l
bnQucmVwcmVzZW50ZWRPYmplY3QuaWQ7CiAgICAgICAgIFdlYkluc3BlY3Rvci5kb21UcmVlTWFu
YWdlci5oaWdobGlnaHRET01Ob2RlKG5vZGVJZCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBtb3Vz
ZU91dDogZnVuY3Rpb24oKQorICAgIG1vdXNlT3V0KCkKICAgICB7CiAgICAgICAgIFdlYkluc3Bl
Y3Rvci5kb21UcmVlTWFuYWdlci5oaWRlRE9NTm9kZUhpZ2hsaWdodCgpOwogICAgIH0KIH07CiAK
LVdlYkluc3BlY3Rvci5ET01UcmVlRWxlbWVudFBhdGhDb21wb25lbnQucHJvdG90eXBlLl9fcHJv
dG9fXyA9IFdlYkluc3BlY3Rvci5IaWVyYXJjaGljYWxQYXRoQ29tcG9uZW50LnByb3RvdHlwZTsK
K1dlYkluc3BlY3Rvci5ET01UcmVlRWxlbWVudFBhdGhDb21wb25lbnQuRE9NRWxlbWVudEljb25T
dHlsZUNsYXNzTmFtZSA9ICJkb20tZWxlbWVudC1pY29uIjsKK1dlYkluc3BlY3Rvci5ET01UcmVl
RWxlbWVudFBhdGhDb21wb25lbnQuRE9NVGV4dE5vZGVJY29uU3R5bGVDbGFzc05hbWUgPSAiZG9t
LXRleHQtbm9kZS1pY29uIjsKK1dlYkluc3BlY3Rvci5ET01UcmVlRWxlbWVudFBhdGhDb21wb25l
bnQuRE9NQ29tbWVudEljb25TdHlsZUNsYXNzTmFtZSA9ICJkb20tY29tbWVudC1pY29uIjsKK1dl
Ykluc3BlY3Rvci5ET01UcmVlRWxlbWVudFBhdGhDb21wb25lbnQuRE9NRG9jdW1lbnRUeXBlSWNv
blN0eWxlQ2xhc3NOYW1lID0gImRvbS1kb2N1bWVudC10eXBlLWljb24iOworV2ViSW5zcGVjdG9y
LkRPTVRyZWVFbGVtZW50UGF0aENvbXBvbmVudC5ET01Eb2N1bWVudEljb25TdHlsZUNsYXNzTmFt
ZSA9ICJkb20tZG9jdW1lbnQtaWNvbiI7CitXZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1lbnRQYXRo
Q29tcG9uZW50LkRPTUNoYXJhY3RlckRhdGFJY29uU3R5bGVDbGFzc05hbWUgPSAiZG9tLWNoYXJh
Y3Rlci1kYXRhLWljb24iOworV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50UGF0aENvbXBvbmVu
dC5ET01Ob2RlSWNvblN0eWxlQ2xhc3NOYW1lID0gImRvbS1ub2RlLWljb24iOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGV0YWlsc1NlY3Rp
b24uanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EZXRhaWxz
U2VjdGlvbi5qcwppbmRleCAzOTY1NTUwODlmYjgwMjBkNzg1NzY4MmI5YjRiM2Y3OGI0YmJjOWUw
Li45ZWNkYzdjMWI2MjFhM2M1OTQ1OWZjNmNiMzk2Mjc3YmJhM2Y4N2IzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EZXRhaWxzU2VjdGlvbi5q
cworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EZXRhaWxz
U2VjdGlvbi5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMjMsODUgKzIzLDczIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uID0gZnVuY3Rpb24oaWRl
bnRpZmllciwgdGl0bGUsIGdyb3Vwcywgb3B0aW9uc0VsZW1lbnQsIGRlZmF1bHRDb2xsYXBzZWRT
ZXR0aW5nVmFsdWUpIHsKLSAgICAvLyBGSVhNRTogQ29udmVydCB0aGlzIHRvIGEgV2ViSW5zcGVj
dG9yLk9iamVjdCBzdWJjbGFzcywgYW5kIGNhbGwgc3VwZXIoKS4KLSAgICAvLyBXZWJJbnNwZWN0
b3IuT2JqZWN0LmNhbGwodGhpcyk7CitXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb24gPSBjbGFz
cyBEZXRhaWxzU2VjdGlvbiBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKK3sKKyAgICBjb25z
dHJ1Y3RvcihpZGVudGlmaWVyLCB0aXRsZSwgZ3JvdXBzLCBvcHRpb25zRWxlbWVudCwgZGVmYXVs
dENvbGxhcHNlZFNldHRpbmdWYWx1ZSkKKyAgICB7CisgICAgICAgIHN1cGVyKCk7CiAKLSAgICBj
b25zb2xlLmFzc2VydChpZGVudGlmaWVyKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoaWRlbnRp
Zmllcik7CiAKLSAgICB0aGlzLl9lbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2
Iik7Ci0gICAgdGhpcy5fZWxlbWVudC5jbGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuRGV0YWlsc1Nl
Y3Rpb24uU3R5bGVDbGFzc05hbWU7Ci0gICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKGlk
ZW50aWZpZXIpOworICAgICAgICB0aGlzLl9lbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiZGl2Iik7CisgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NOYW1lID0gV2ViSW5zcGVjdG9y
LkRldGFpbHNTZWN0aW9uLlN0eWxlQ2xhc3NOYW1lOworICAgICAgICB0aGlzLl9lbGVtZW50LmNs
YXNzTGlzdC5hZGQoaWRlbnRpZmllcik7CiAKLSAgICB0aGlzLl9oZWFkZXJFbGVtZW50ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgdGhpcy5faGVhZGVyRWxlbWVudC5hZGRF
dmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX2hlYWRlckVsZW1lbnRDbGlja2VkLmJpbmQodGhp
cykpOwotICAgIHRoaXMuX2hlYWRlckVsZW1lbnQuY2xhc3NOYW1lID0gV2ViSW5zcGVjdG9yLkRl
dGFpbHNTZWN0aW9uLkhlYWRlckVsZW1lbnRTdHlsZUNsYXNzTmFtZTsKLSAgICB0aGlzLl9lbGVt
ZW50LmFwcGVuZENoaWxkKHRoaXMuX2hlYWRlckVsZW1lbnQpOworICAgICAgICB0aGlzLl9oZWFk
ZXJFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIHRoaXMu
X2hlYWRlckVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl9oZWFkZXJFbGVt
ZW50Q2xpY2tlZC5iaW5kKHRoaXMpKTsKKyAgICAgICAgdGhpcy5faGVhZGVyRWxlbWVudC5jbGFz
c05hbWUgPSBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb24uSGVhZGVyRWxlbWVudFN0eWxlQ2xh
c3NOYW1lOworICAgICAgICB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2hlYWRlckVs
ZW1lbnQpOwogCi0gICAgaWYgKG9wdGlvbnNFbGVtZW50IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQp
IHsKLSAgICAgICAgdGhpcy5fb3B0aW9uc0VsZW1lbnQgPSBvcHRpb25zRWxlbWVudDsKLSAgICAg
ICAgdGhpcy5fb3B0aW9uc0VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwgdGhp
cy5fb3B0aW9uc0VsZW1lbnRNb3VzZURvd24uYmluZCh0aGlzKSk7Ci0gICAgICAgIHRoaXMuX29w
dGlvbnNFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLCB0aGlzLl9vcHRpb25zRWxl
bWVudE1vdXNlVXAuYmluZCh0aGlzKSk7Ci0gICAgICAgIHRoaXMuX2hlYWRlckVsZW1lbnQuYXBw
ZW5kQ2hpbGQodGhpcy5fb3B0aW9uc0VsZW1lbnQpOwotICAgIH0KKyAgICAgICAgaWYgKG9wdGlv
bnNFbGVtZW50IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpIHsKKyAgICAgICAgICAgIHRoaXMuX29w
dGlvbnNFbGVtZW50ID0gb3B0aW9uc0VsZW1lbnQ7CisgICAgICAgICAgICB0aGlzLl9vcHRpb25z
RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCB0aGlzLl9vcHRpb25zRWxlbWVu
dE1vdXNlRG93bi5iaW5kKHRoaXMpKTsKKyAgICAgICAgICAgIHRoaXMuX29wdGlvbnNFbGVtZW50
LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLCB0aGlzLl9vcHRpb25zRWxlbWVudE1vdXNlVXAu
YmluZCh0aGlzKSk7CisgICAgICAgICAgICB0aGlzLl9oZWFkZXJFbGVtZW50LmFwcGVuZENoaWxk
KHRoaXMuX29wdGlvbnNFbGVtZW50KTsKKyAgICAgICAgfQogCi0gICAgdGhpcy5fdGl0bGVFbGVt
ZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwotICAgIHRoaXMuX2hlYWRlckVs
ZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fdGl0bGVFbGVtZW50KTsKKyAgICAgICAgdGhpcy5fdGl0
bGVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOworICAgICAgICB0aGlz
Ll9oZWFkZXJFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX3RpdGxlRWxlbWVudCk7CiAKLSAgICB0
aGlzLl9jb250ZW50RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAg
IHRoaXMuX2NvbnRlbnRFbGVtZW50LmNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5EZXRhaWxzU2Vj
dGlvbi5Db250ZW50RWxlbWVudFN0eWxlQ2xhc3NOYW1lOwotICAgIHRoaXMuX2VsZW1lbnQuYXBw
ZW5kQ2hpbGQodGhpcy5fY29udGVudEVsZW1lbnQpOworICAgICAgICB0aGlzLl9jb250ZW50RWxl
bWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICB0aGlzLl9jb250
ZW50RWxlbWVudC5jbGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb24uQ29udGVu
dEVsZW1lbnRTdHlsZUNsYXNzTmFtZTsKKyAgICAgICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGls
ZCh0aGlzLl9jb250ZW50RWxlbWVudCk7CiAKLSAgICB0aGlzLl9nZW5lcmF0ZURpc2Nsb3N1cmVU
cmlhbmdsZXNJZk5lZWRlZCgpOworICAgICAgICB0aGlzLl9nZW5lcmF0ZURpc2Nsb3N1cmVUcmlh
bmdsZXNJZk5lZWRlZCgpOwogCi0gICAgdGhpcy5faWRlbnRpZmllciA9IGlkZW50aWZpZXI7Ci0g
ICAgdGhpcy50aXRsZSA9IHRpdGxlOwotICAgIHRoaXMuZ3JvdXBzID0gZ3JvdXBzIHx8IFtuZXcg
V2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uR3JvdXBdOworICAgICAgICB0aGlzLl9pZGVudGlm
aWVyID0gaWRlbnRpZmllcjsKKyAgICAgICAgdGhpcy50aXRsZSA9IHRpdGxlOworICAgICAgICB0
aGlzLmdyb3VwcyA9IGdyb3VwcyB8fCBbbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbkdy
b3VwXTsKIAotICAgIHRoaXMuX2NvbGxhcHNlZFNldHRpbmcgPSBuZXcgV2ViSW5zcGVjdG9yLlNl
dHRpbmcoaWRlbnRpZmllciArICItZGV0YWlscy1zZWN0aW9uLWNvbGxhcHNlZCIsICEhZGVmYXVs
dENvbGxhcHNlZFNldHRpbmdWYWx1ZSk7Ci0gICAgdGhpcy5jb2xsYXBzZWQgPSB0aGlzLl9jb2xs
YXBzZWRTZXR0aW5nLnZhbHVlOwotfTsKLQotV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uLlN0
eWxlQ2xhc3NOYW1lID0gImRldGFpbHMtc2VjdGlvbiI7Ci1XZWJJbnNwZWN0b3IuRGV0YWlsc1Nl
Y3Rpb24uSGVhZGVyRWxlbWVudFN0eWxlQ2xhc3NOYW1lID0gImhlYWRlciI7Ci1XZWJJbnNwZWN0
b3IuRGV0YWlsc1NlY3Rpb24uVGl0bGVFbGVtZW50U3R5bGVDbGFzc05hbWUgPSAidGl0bGUiOwot
V2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uLkNvbnRlbnRFbGVtZW50U3R5bGVDbGFzc05hbWUg
PSAiY29udGVudCI7Ci1XZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb24uQ29sbGFwc2VkU3R5bGVD
bGFzc05hbWUgPSAiY29sbGFwc2VkIjsKLVdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbi5Nb3Vz
ZU92ZXJPcHRpb25zRWxlbWVudFN0eWxlQ2xhc3NOYW1lID0gIm1vdXNlLW92ZXItb3B0aW9ucy1l
bGVtZW50IjsKLVdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbi5EaXNjbG9zdXJlVHJpYW5nbGVP
cGVuQ2FudmFzSWRlbnRpZmllciA9ICJkZXRhaWxzLXNlY3Rpb24tZGlzY2xvc3VyZS10cmlhbmds
ZS1vcGVuIjsKLVdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbi5EaXNjbG9zdXJlVHJpYW5nbGVD
bG9zZWRDYW52YXNJZGVudGlmaWVyID0gImRldGFpbHMtc2VjdGlvbi1kaXNjbG9zdXJlLXRyaWFu
Z2xlLWNsb3NlZCI7Ci1XZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb24uRGlzY2xvc3VyZVRyaWFu
Z2xlTm9ybWFsQ2FudmFzSWRlbnRpZmllclN1ZmZpeCA9ICItbm9ybWFsIjsKLVdlYkluc3BlY3Rv
ci5EZXRhaWxzU2VjdGlvbi5EaXNjbG9zdXJlVHJpYW5nbGVBY3RpdmVDYW52YXNJZGVudGlmaWVy
U3VmZml4ID0gIi1hY3RpdmUiOwotCi1XZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb24ucHJvdG90
eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb24sCisg
ICAgICAgIHRoaXMuX2NvbGxhcHNlZFNldHRpbmcgPSBuZXcgV2ViSW5zcGVjdG9yLlNldHRpbmco
aWRlbnRpZmllciArICItZGV0YWlscy1zZWN0aW9uLWNvbGxhcHNlZCIsICEhZGVmYXVsdENvbGxh
cHNlZFNldHRpbmdWYWx1ZSk7CisgICAgICAgIHRoaXMuY29sbGFwc2VkID0gdGhpcy5fY29sbGFw
c2VkU2V0dGluZy52YWx1ZTsKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBlbGVt
ZW50KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50OwotICAgIH0sCisgICAg
fQogCiAgICAgZ2V0IGlkZW50aWZpZXIoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2lk
ZW50aWZpZXI7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgdGl0bGUoKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIHRoaXMuX3RpdGxlRWxlbWVudC50ZXh0Q29udGVudDsKLSAgICB9LAorICAgIH0K
IAogICAgIHNldCB0aXRsZSh0aXRsZSkKICAgICB7CiAgICAgICAgIHRoaXMuX3RpdGxlRWxlbWVu
dC50ZXh0Q29udGVudCA9IHRpdGxlOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGNvbGxhcHNl
ZCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuY29udGFp
bnMoV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uLkNvbGxhcHNlZFN0eWxlQ2xhc3NOYW1lKTsK
LSAgICB9LAorICAgIH0KIAogICAgIHNldCBjb2xsYXBzZWQoZmxhZykKICAgICB7CkBAIC0xMTEs
MTIgKzk5LDEyIEBAIFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbi5wcm90b3R5cGUgPSB7CiAg
ICAgICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoV2ViSW5zcGVjdG9yLkRl
dGFpbHNTZWN0aW9uLkNvbGxhcHNlZFN0eWxlQ2xhc3NOYW1lKTsKIAogICAgICAgICB0aGlzLl9j
b2xsYXBzZWRTZXR0aW5nLnZhbHVlID0gZmxhZyB8fCBmYWxzZTsKLSAgICB9LAorICAgIH0KIAog
ICAgIGdldCBncm91cHMoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2dyb3VwczsKLSAg
ICB9LAorICAgIH0KIAogICAgIHNldCBncm91cHMoZ3JvdXBzKQogICAgIHsKQEAgLTEyNiwxMSAr
MTE0LDExIEBAIFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbi5wcm90b3R5cGUgPSB7CiAKICAg
ICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9ncm91cHMubGVuZ3RoOyArK2kpCiAgICAg
ICAgICAgICB0aGlzLl9jb250ZW50RWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9ncm91cHNbaV0u
ZWxlbWVudCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcml2YXRlCiAKLSAgICBfaGVhZGVy
RWxlbWVudENsaWNrZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9oZWFkZXJFbGVtZW50Q2xpY2tl
ZChldmVudCkKICAgICB7CiAgICAgICAgIGlmIChldmVudC50YXJnZXQuaXNTZWxmT3JEZXNjZW5k
YW50KHRoaXMuX29wdGlvbnNFbGVtZW50KSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTEzOCwx
OSArMTI2LDE5IEBAIFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbi5wcm90b3R5cGUgPSB7CiAg
ICAgICAgIHRoaXMuY29sbGFwc2VkID0gIXRoaXMuY29sbGFwc2VkOwogCiAgICAgICAgIHRoaXMu
X2VsZW1lbnQuc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZChmYWxzZSk7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBfb3B0aW9uc0VsZW1lbnRNb3VzZURvd246IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9vcHRp
b25zRWxlbWVudE1vdXNlRG93bihldmVudCkKICAgICB7CiAgICAgICAgIHRoaXMuX2hlYWRlckVs
ZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb24uTW91c2VPdmVy
T3B0aW9uc0VsZW1lbnRTdHlsZUNsYXNzTmFtZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfb3B0
aW9uc0VsZW1lbnRNb3VzZVVwOiBmdW5jdGlvbihldmVudCkKKyAgICBfb3B0aW9uc0VsZW1lbnRN
b3VzZVVwKGV2ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5faGVhZGVyRWxlbWVudC5jbGFzc0xp
c3QucmVtb3ZlKFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbi5Nb3VzZU92ZXJPcHRpb25zRWxl
bWVudFN0eWxlQ2xhc3NOYW1lKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9nZW5lcmF0ZURpc2Ns
b3N1cmVUcmlhbmdsZXNJZk5lZWRlZDogZnVuY3Rpb24oKQorICAgIF9nZW5lcmF0ZURpc2Nsb3N1
cmVUcmlhbmdsZXNJZk5lZWRlZCgpCiAgICAgewogICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLkRl
dGFpbHNTZWN0aW9uLl9nZW5lcmF0ZWREaXNjbG9zdXJlVHJpYW5nbGVzKQogICAgICAgICAgICAg
cmV0dXJuOwpAQCAtMTczLDQgKzE2MSwxMyBAQCBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb24u
cHJvdG90eXBlID0gewogICAgIH0KIH07CiAKLVdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbi5w
cm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGU7CitXZWJJ
bnNwZWN0b3IuRGV0YWlsc1NlY3Rpb24uU3R5bGVDbGFzc05hbWUgPSAiZGV0YWlscy1zZWN0aW9u
IjsKK1dlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbi5IZWFkZXJFbGVtZW50U3R5bGVDbGFzc05h
bWUgPSAiaGVhZGVyIjsKK1dlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbi5UaXRsZUVsZW1lbnRT
dHlsZUNsYXNzTmFtZSA9ICJ0aXRsZSI7CitXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb24uQ29u
dGVudEVsZW1lbnRTdHlsZUNsYXNzTmFtZSA9ICJjb250ZW50IjsKK1dlYkluc3BlY3Rvci5EZXRh
aWxzU2VjdGlvbi5Db2xsYXBzZWRTdHlsZUNsYXNzTmFtZSA9ICJjb2xsYXBzZWQiOworV2ViSW5z
cGVjdG9yLkRldGFpbHNTZWN0aW9uLk1vdXNlT3Zlck9wdGlvbnNFbGVtZW50U3R5bGVDbGFzc05h
bWUgPSAibW91c2Utb3Zlci1vcHRpb25zLWVsZW1lbnQiOworV2ViSW5zcGVjdG9yLkRldGFpbHNT
ZWN0aW9uLkRpc2Nsb3N1cmVUcmlhbmdsZU9wZW5DYW52YXNJZGVudGlmaWVyID0gImRldGFpbHMt
c2VjdGlvbi1kaXNjbG9zdXJlLXRyaWFuZ2xlLW9wZW4iOworV2ViSW5zcGVjdG9yLkRldGFpbHNT
ZWN0aW9uLkRpc2Nsb3N1cmVUcmlhbmdsZUNsb3NlZENhbnZhc0lkZW50aWZpZXIgPSAiZGV0YWls
cy1zZWN0aW9uLWRpc2Nsb3N1cmUtdHJpYW5nbGUtY2xvc2VkIjsKK1dlYkluc3BlY3Rvci5EZXRh
aWxzU2VjdGlvbi5EaXNjbG9zdXJlVHJpYW5nbGVOb3JtYWxDYW52YXNJZGVudGlmaWVyU3VmZml4
ID0gIi1ub3JtYWwiOworV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uLkRpc2Nsb3N1cmVUcmlh
bmdsZUFjdGl2ZUNhbnZhc0lkZW50aWZpZXJTdWZmaXggPSAiLWFjdGl2ZSI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EZXRhaWxzU2VjdGlv
bkRhdGFHcmlkUm93LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvRGV0YWlsc1NlY3Rpb25EYXRhR3JpZFJvdy5qcwppbmRleCA5NWI3YmQ0MzE5ZTFiZDdhMDZl
YTZjNDQ5MjE4M2EzYTU2ZDFhYjc1Li45NjRkNjkyNGJlODE4Njk3OWNjZDliZWQ0MjY0YTFlODM2
NmU1MjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9EZXRhaWxzU2VjdGlvbkRhdGFHcmlkUm93LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RldGFpbHNTZWN0aW9uRGF0YUdyaWRSb3cuanMKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIz
LDI1ICsyMywyMyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAK
LVdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbkRhdGFHcmlkUm93ID0gZnVuY3Rpb24oZGF0YUdy
aWQsIGVtcHR5TWVzc2FnZSkgewotICAgIFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdy5j
YWxsKHRoaXMsIGVtcHR5TWVzc2FnZSk7Ci0KLSAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFk
ZChXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25EYXRhR3JpZFJvdy5TdHlsZUNsYXNzTmFtZSk7
Ci0KLSAgICB0aGlzLmRhdGFHcmlkID0gZGF0YUdyaWQ7Ci19OworV2ViSW5zcGVjdG9yLkRldGFp
bHNTZWN0aW9uRGF0YUdyaWRSb3cgPSBjbGFzcyBEZXRhaWxzU2VjdGlvbkRhdGFHcmlkUm93IGV4
dGVuZHMgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93Cit7CisgICAgY29uc3RydWN0b3Io
ZGF0YUdyaWQsIGVtcHR5TWVzc2FnZSkKKyAgICB7CisgICAgICAgIHN1cGVyKGVtcHR5TWVzc2Fn
ZSk7CiAKLVdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbkRhdGFHcmlkUm93LlN0eWxlQ2xhc3NO
YW1lID0gImRhdGEtZ3JpZCI7CisgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJk
YXRhLWdyaWQiKTsKIAotV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uRGF0YUdyaWRSb3cucHJv
dG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25E
YXRhR3JpZFJvdywKKyAgICAgICAgdGhpcy5kYXRhR3JpZCA9IGRhdGFHcmlkOworICAgIH0KIAog
ICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IGRhdGFHcmlkKCkKICAgICB7CiAgICAgICAgIHJldHVy
biB0aGlzLl9kYXRhR3JpZDsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCBkYXRhR3JpZChkYXRh
R3JpZCkKICAgICB7CkBAIC01OSw1ICs1NywzIEBAIFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlv
bkRhdGFHcmlkUm93LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuc2hvd0VtcHR5TWVz
c2FnZSgpOwogICAgIH0KIH07Ci0KLVdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbkRhdGFHcmlk
Um93LnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3cu
cHJvdG90eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvRGV0YWlsc1NlY3Rpb25Hcm91cC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0RldGFpbHNTZWN0aW9uR3JvdXAuanMKaW5kZXggNjcyOWZhYTBm
MWM3NjlhZTJkOGJjZWMyODExZTQxYzU1ODAyMTMyNi4uZTVkOTA0YWIzYzQzZDNlZDFmMzk3ZDk5
YTMxOWIzMzFhYjQ1M2RkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvRGV0YWlsc1NlY3Rpb25Hcm91cC5qcworKysgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EZXRhaWxzU2VjdGlvbkdyb3VwLmpzCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywz
MiArMjMsMjkgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1X
ZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Hcm91cCA9IGZ1bmN0aW9uKHJvd3MpIHsKLSAgICAv
LyBGSVhNRTogQ29udmVydCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcywg
YW5kIGNhbGwgc3VwZXIoKS4KLSAgICAvLyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7
Ci0KLSAgICB0aGlzLl9lbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0g
ICAgdGhpcy5fZWxlbWVudC5jbGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25H
cm91cC5TdHlsZUNsYXNzTmFtZTsKLQotICAgIHRoaXMucm93cyA9IHJvd3M7Ci19OworV2ViSW5z
cGVjdG9yLkRldGFpbHNTZWN0aW9uR3JvdXAgPSBjbGFzcyBEZXRhaWxzU2VjdGlvbkdyb3VwIGV4
dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAoreworICAgIGNvbnN0cnVjdG9yKHJvd3MpCisgICAg
eworICAgICAgICBzdXBlcigpOwogCi1XZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Hcm91cC5T
dHlsZUNsYXNzTmFtZSA9ICJncm91cCI7CisgICAgICAgIHRoaXMuX2VsZW1lbnQgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc05hbWUg
PSAiZ3JvdXAiOwogCi1XZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Hcm91cC5wcm90b3R5cGUg
PSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbkdyb3VwLAor
ICAgICAgICB0aGlzLnJvd3MgPSByb3dzIHx8IFtdOworICAgIH0KIAogICAgIC8vIFB1YmxpYwog
CiAgICAgZ2V0IGVsZW1lbnQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQ7
Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgcm93cygpCiAgICAgewogICAgICAgICByZXR1cm4g
dGhpcy5fcm93czsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCByb3dzKHJvd3MpCiAgICAgewpA
QCAtNjAsNSArNTcsMyBAQCBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Hcm91cC5wcm90b3R5
cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX3Jvd3Nb
aV0uZWxlbWVudCk7CiAgICAgfQogfTsKLQotV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uR3Jv
dXAucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGV0
YWlsc1NlY3Rpb25Qcm9wZXJ0aWVzUm93LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvRGV0YWlsc1NlY3Rpb25Qcm9wZXJ0aWVzUm93LmpzCmluZGV4IGE5ODYx
NTI3NzEzZTVkYjk5OGUzYjhhNDBkMWViYTFkOGI0NWZmYjUuLmE0YmQ0ZWM3YzNkNzZhNTVkZjRi
YWU0ZTNlMTczODYzNzcyOTY1ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0RldGFpbHNTZWN0aW9uUHJvcGVydGllc1Jvdy5qcworKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EZXRhaWxzU2VjdGlvblBy
b3BlcnRpZXNSb3cuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEz
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywg
MjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTIzLDI2ICsyMywyNCBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblByb3BlcnRpZXNS
b3cgPSBmdW5jdGlvbihwcm9wZXJ0aWVzU2VjdGlvbiwgZW1wdHlNZXNzYWdlKSB7Ci0gICAgV2Vi
SW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93LmNhbGwodGhpcywgZW1wdHlNZXNzYWdlKTsKLQot
ICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlv
blByb3BlcnRpZXNSb3cuU3R5bGVDbGFzc05hbWUpOwotICAgIHRoaXMuZWxlbWVudC5jbGFzc0xp
c3QuYWRkKFdlYkluc3BlY3Rvci5TeW50YXhIaWdobGlnaHRlZFN0eWxlQ2xhc3NOYW1lKTsKLQot
ICAgIHRoaXMucHJvcGVydGllc1NlY3Rpb24gPSBwcm9wZXJ0aWVzU2VjdGlvbjsKLX07CitXZWJJ
bnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Qcm9wZXJ0aWVzUm93ID0gY2xhc3MgRGV0YWlsc1NlY3Rp
b25Qcm9wZXJ0aWVzUm93IGV4dGVuZHMgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93Cit7
CisgICAgY29uc3RydWN0b3IocHJvcGVydGllc1NlY3Rpb24sIGVtcHR5TWVzc2FnZSkKKyAgICB7
CisgICAgICAgIHN1cGVyKGVtcHR5TWVzc2FnZSk7CiAKLVdlYkluc3BlY3Rvci5EZXRhaWxzU2Vj
dGlvblByb3BlcnRpZXNSb3cuU3R5bGVDbGFzc05hbWUgPSAicHJvcGVydGllcyI7CisgICAgICAg
IHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJwcm9wZXJ0aWVzIik7CisgICAgICAgIHRoaXMu
ZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5TeW50YXhIaWdobGlnaHRlZFN0eWxl
Q2xhc3NOYW1lKTsKIAotV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUHJvcGVydGllc1Jvdy5w
cm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlv
blByb3BlcnRpZXNSb3csCisgICAgICAgIHRoaXMucHJvcGVydGllc1NlY3Rpb24gPSBwcm9wZXJ0
aWVzU2VjdGlvbjsKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBwcm9wZXJ0aWVz
U2VjdGlvbigpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fcHJvcGVydGllc1NlY3Rpb247
Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgcHJvcGVydGllc1NlY3Rpb24ocHJvcGVydGllc1Nl
Y3Rpb24pCiAgICAgewpAQCAtNTgsNSArNTYsMyBAQCBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rp
b25Qcm9wZXJ0aWVzUm93LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuc2hvd0VtcHR5
TWVzc2FnZSgpOwogICAgIH0KIH07Ci0KLVdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblByb3Bl
cnRpZXNSb3cucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlv
blJvdy5wcm90b3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9EZXRhaWxzU2VjdGlvblJvdy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RldGFpbHNTZWN0aW9uUm93LmpzCmluZGV4IGFjNWI4MDk3
YmFmOWFlMDk5YmRmNGMyMDJjNmI5Yzc2YjA0Mzc0YjIuLjhlOThkZjVmZTY1ZjYxM2U2N2NkMTdk
ZTY4MzY5OTY0N2M0NzUxMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL0RldGFpbHNTZWN0aW9uUm93LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RldGFpbHNTZWN0aW9uUm93LmpzCkBAIC0yMywz
MyArMjMsMjkgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1X
ZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3cgPSBmdW5jdGlvbihlbXB0eU1lc3NhZ2UpIHsK
LSAgICAvLyBGSVhNRTogQ29udmVydCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJj
bGFzcywgYW5kIGNhbGwgc3VwZXIoKS4KLSAgICAvLyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwo
dGhpcyk7Ci0KLSAgICB0aGlzLl9lbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2
Iik7Ci0gICAgdGhpcy5fZWxlbWVudC5jbGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuRGV0YWlsc1Nl
Y3Rpb25Sb3cuU3R5bGVDbGFzc05hbWU7Ci0KLSAgICB0aGlzLl9lbXB0eU1lc3NhZ2UgPSBlbXB0
eU1lc3NhZ2UgfHwgIiI7Ci19OworV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93ID0gY2xh
c3MgRGV0YWlsc1NlY3Rpb25Sb3cgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0Cit7CisgICAg
Y29uc3RydWN0b3IoZW1wdHlNZXNzYWdlKQorICAgIHsKKyAgICAgICAgc3VwZXIoKTsKIAotV2Vi
SW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93LlN0eWxlQ2xhc3NOYW1lID0gInJvdyI7Ci1XZWJJ
bnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3cuRW1wdHlTdHlsZUNsYXNzTmFtZSA9ICJlbXB0eSI7
CisgICAgICAgIHRoaXMuX2VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsK
KyAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc05hbWUgPSAicm93IjsKIAotV2ViSW5zcGVjdG9y
LkRldGFpbHNTZWN0aW9uUm93LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5z
cGVjdG9yLkRldGFpbHNTZWN0aW9uUm93LAorICAgICAgICB0aGlzLl9lbXB0eU1lc3NhZ2UgPSBl
bXB0eU1lc3NhZ2UgfHwgIiI7CisgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgZWxl
bWVudCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudDsKLSAgICB9LAorICAg
IH0KIAogICAgIGdldCBlbXB0eU1lc3NhZ2UoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMu
X2VtcHR5TWVzc2FnZTsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCBlbXB0eU1lc3NhZ2UoZW1w
dHlNZXNzYWdlKQogICAgIHsKQEAgLTU3LDkgKzUzLDkgQEAgV2ViSW5zcGVjdG9yLkRldGFpbHNT
ZWN0aW9uUm93LnByb3RvdHlwZSA9IHsKIAogICAgICAgICBpZiAoIXRoaXMuX2VsZW1lbnQuY2hp
bGROb2Rlcy5sZW5ndGgpCiAgICAgICAgICAgICB0aGlzLnNob3dFbXB0eU1lc3NhZ2UoKTsKLSAg
ICB9LAorICAgIH0KIAotICAgIHNob3dFbXB0eU1lc3NhZ2U6IGZ1bmN0aW9uKCkKKyAgICBzaG93
RW1wdHlNZXNzYWdlKCkKICAgICB7CiAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRk
KFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdy5FbXB0eVN0eWxlQ2xhc3NOYW1lKTsKIApA
QCAtNjgsMTMgKzY0LDEzIEBAIFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdy5wcm90b3R5
cGUgPSB7CiAgICAgICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fZW1wdHlN
ZXNzYWdlKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICB0aGlzLmVsZW1lbnQudGV4dENv
bnRlbnQgPSB0aGlzLl9lbXB0eU1lc3NhZ2U7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBoaWRlRW1w
dHlNZXNzYWdlOiBmdW5jdGlvbigpCisgICAgaGlkZUVtcHR5TWVzc2FnZSgpCiAgICAgewogICAg
ICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShXZWJJbnNwZWN0b3IuRGV0YWlsc1Nl
Y3Rpb25Sb3cuRW1wdHlTdHlsZUNsYXNzTmFtZSk7CiAgICAgICAgIHRoaXMuZWxlbWVudC5yZW1v
dmVDaGlsZHJlbigpOwogICAgIH0KIH07CiAKLVdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJv
dy5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGU7CitX
ZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3cuRW1wdHlTdHlsZUNsYXNzTmFtZSA9ICJlbXB0
eSI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9EZXRhaWxzU2VjdGlvblNpbXBsZVJvdy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL0RldGFpbHNTZWN0aW9uU2ltcGxlUm93LmpzCmluZGV4IDllNDljYjgx
ZjM3YjVjMGIwYjFkNjYzOWE5YjgyM2M1YmI5YzE5YmEuLmU0NDljNzVkZjcwNDg3N2JmNTYyODFl
ZGZhZmVlNTA3NTMzMzcyNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL0RldGFpbHNTZWN0aW9uU2ltcGxlUm93LmpzCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RldGFpbHNTZWN0aW9uU2ltcGxlUm93
LmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0yMyw3NCArMjMsNjggQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
ICAqLwogCi1XZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25TaW1wbGVSb3cgPSBmdW5jdGlvbihs
YWJlbCwgdmFsdWUpIHsKLSAgICBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3cuY2FsbCh0
aGlzKTsKLQotICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5EZXRh
aWxzU2VjdGlvblNpbXBsZVJvdy5TdHlsZUNsYXNzTmFtZSk7Ci0KLSAgICB0aGlzLl9sYWJlbEVs
ZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICB0aGlzLl9sYWJlbEVs
ZW1lbnQuY2xhc3NOYW1lID0gV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uU2ltcGxlUm93Lkxh
YmVsRWxlbWVudFN0eWxlQ2xhc3NOYW1lOwotICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0
aGlzLl9sYWJlbEVsZW1lbnQpOwotCi0gICAgdGhpcy5fdmFsdWVFbGVtZW50ID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgdGhpcy5fdmFsdWVFbGVtZW50LmNsYXNzTmFtZSA9
IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblNpbXBsZVJvdy5WYWx1ZUVsZW1lbnRTdHlsZUNs
YXNzTmFtZTsKLSAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fdmFsdWVFbGVtZW50
KTsKLQotICAgIC8vIFdvcmthcm91bmQgZm9yIDxyZGFyOi8vcHJvYmxlbS8xMjY2ODg3MD4gVHJp
cGxlLWNsaWNraW5nIHRleHQgd2l0aGluIGEKLSAgICAvLyA8ZGl2PiBzZXQgdG8gImRpc3BsYXk6
IHRhYmxlLWNlbGwiIHNlbGVjdHMgdGV4dCBvdXRzaWRlIHRoZSBjZWxsLgotICAgIC8vCi0gICAg
Ly8gT24gdHJpcGxlLWNsaWNrLCBhZGp1c3QgdGhlIHNlbGVjdGlvbiByYW5nZSB0byBpbmNsdWRl
IG9ubHkgdGhlIHZhbHVlCi0gICAgLy8gZWxlbWVudCBpZiB0aGUgc2VsZWN0aW9uIGV4dGVuZHMg
YmV5b25kIGl0LgotICAgIHZhciB2YWx1ZUVsZW1lbnRDbGlja2VkID0gZnVuY3Rpb24oZXZlbnQp
IHsKLSAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7Ci0KLSAgICAgICAgaWYgKGV2ZW50
LmRldGFpbCA8IDMpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgdmFyIGN1cnJlbnRT
ZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7Ci0gICAgICAgIGlmICghY3VycmVudFNl
bGVjdGlvbikKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICB2YXIgY3VycmVudFJhbmdl
ID0gY3VycmVudFNlbGVjdGlvbi5nZXRSYW5nZUF0KDApOwotICAgICAgICBpZiAoIWN1cnJlbnRS
YW5nZSB8fCBjdXJyZW50UmFuZ2Uuc3RhcnRDb250YWluZXIgPT09IGN1cnJlbnRSYW5nZS5lbmRD
b250YWluZXIpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgdmFyIGNvcnJlY3RlZFJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKLSAgICAgICAgY29ycmVjdGVkUmFuZ2Uuc2Vs
ZWN0Tm9kZUNvbnRlbnRzKGV2ZW50LmN1cnJlbnRUYXJnZXQpOwotICAgICAgICBjdXJyZW50U2Vs
ZWN0aW9uLnJlbW92ZUFsbFJhbmdlcygpOwotICAgICAgICBjdXJyZW50U2VsZWN0aW9uLmFkZFJh
bmdlKGNvcnJlY3RlZFJhbmdlKTsKLSAgICB9OwotICAgIHRoaXMuX3ZhbHVlRWxlbWVudC5hZGRF
dmVudExpc3RlbmVyKCJjbGljayIsIHZhbHVlRWxlbWVudENsaWNrZWQpOwotCi0gICAgdGhpcy5s
YWJlbCA9IGxhYmVsOwotICAgIHRoaXMudmFsdWUgPSB2YWx1ZTsKLX07Ci0KLVdlYkluc3BlY3Rv
ci5EZXRhaWxzU2VjdGlvblNpbXBsZVJvdy5TdHlsZUNsYXNzTmFtZSA9ICJzaW1wbGUiOwotV2Vi
SW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uU2ltcGxlUm93LkRhdGFTdHlsZUNsYXNzTmFtZSA9ICJk
YXRhIjsKLVdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblNpbXBsZVJvdy5FbXB0eVN0eWxlQ2xh
c3NOYW1lID0gImVtcHR5IjsKLVdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblNpbXBsZVJvdy5M
YWJlbEVsZW1lbnRTdHlsZUNsYXNzTmFtZSA9ICJsYWJlbCI7Ci1XZWJJbnNwZWN0b3IuRGV0YWls
c1NlY3Rpb25TaW1wbGVSb3cuVmFsdWVFbGVtZW50U3R5bGVDbGFzc05hbWUgPSAidmFsdWUiOwot
Ci1XZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25TaW1wbGVSb3cucHJvdG90eXBlID0gewotICAg
IGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25TaW1wbGVSb3csCitXZWJJ
bnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25TaW1wbGVSb3cgPSBjbGFzcyBEZXRhaWxzU2VjdGlvblNp
bXBsZVJvdyBleHRlbmRzIFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdworeworICAgIGNv
bnN0cnVjdG9yKGxhYmVsLCB2YWx1ZSkKKyAgICB7CisgICAgICAgIHN1cGVyKCk7CisKKyAgICAg
ICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoInNpbXBsZSIpOworCisgICAgICAgIHRoaXMu
X2xhYmVsRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICB0
aGlzLl9sYWJlbEVsZW1lbnQuY2xhc3NOYW1lID0gV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9u
U2ltcGxlUm93LkxhYmVsRWxlbWVudFN0eWxlQ2xhc3NOYW1lOworICAgICAgICB0aGlzLmVsZW1l
bnQuYXBwZW5kQ2hpbGQodGhpcy5fbGFiZWxFbGVtZW50KTsKKworICAgICAgICB0aGlzLl92YWx1
ZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgdGhpcy5f
dmFsdWVFbGVtZW50LmNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblNpbXBs
ZVJvdy5WYWx1ZUVsZW1lbnRTdHlsZUNsYXNzTmFtZTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmFw
cGVuZENoaWxkKHRoaXMuX3ZhbHVlRWxlbWVudCk7CisKKyAgICAgICAgLy8gV29ya2Fyb3VuZCBm
b3IgPHJkYXI6Ly9wcm9ibGVtLzEyNjY4ODcwPiBUcmlwbGUtY2xpY2tpbmcgdGV4dCB3aXRoaW4g
YQorICAgICAgICAvLyA8ZGl2PiBzZXQgdG8gImRpc3BsYXk6IHRhYmxlLWNlbGwiIHNlbGVjdHMg
dGV4dCBvdXRzaWRlIHRoZSBjZWxsLgorICAgICAgICAvLworICAgICAgICAvLyBPbiB0cmlwbGUt
Y2xpY2ssIGFkanVzdCB0aGUgc2VsZWN0aW9uIHJhbmdlIHRvIGluY2x1ZGUgb25seSB0aGUgdmFs
dWUKKyAgICAgICAgLy8gZWxlbWVudCBpZiB0aGUgc2VsZWN0aW9uIGV4dGVuZHMgV2ViSW5zcGVj
dG9yLmJleW9uZCBpdC4KKyAgICAgICAgdmFyIHZhbHVlRWxlbWVudENsaWNrZWQgPSBmdW5jdGlv
bihldmVudCkgeworICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7CisKKyAgICAg
ICAgICAgIGlmIChldmVudC5kZXRhaWwgPCAzKQorICAgICAgICAgICAgICAgIHJldHVybjsKKwor
ICAgICAgICAgICAgdmFyIGN1cnJlbnRTZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7
CisgICAgICAgICAgICBpZiAoIWN1cnJlbnRTZWxlY3Rpb24pCisgICAgICAgICAgICAgICAgcmV0
dXJuOworCisgICAgICAgICAgICB2YXIgY3VycmVudFJhbmdlID0gY3VycmVudFNlbGVjdGlvbi5n
ZXRSYW5nZUF0KDApOworICAgICAgICAgICAgaWYgKCFjdXJyZW50UmFuZ2UgfHwgY3VycmVudFJh
bmdlLnN0YXJ0Q29udGFpbmVyID09PSBjdXJyZW50UmFuZ2UuZW5kQ29udGFpbmVyKQorICAgICAg
ICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgdmFyIGNvcnJlY3RlZFJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICAgICAgICAgIGNvcnJlY3RlZFJhbmdlLnNlbGVjdE5v
ZGVDb250ZW50cyhldmVudC5jdXJyZW50VGFyZ2V0KTsKKyAgICAgICAgICAgIGN1cnJlbnRTZWxl
Y3Rpb24ucmVtb3ZlQWxsUmFuZ2VzKCk7CisgICAgICAgICAgICBjdXJyZW50U2VsZWN0aW9uLmFk
ZFJhbmdlKGNvcnJlY3RlZFJhbmdlKTsKKyAgICAgICAgfTsKKyAgICAgICAgdGhpcy5fdmFsdWVF
bGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdmFsdWVFbGVtZW50Q2xpY2tlZCk7CisK
KyAgICAgICAgdGhpcy5sYWJlbCA9IGxhYmVsOworICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7
CisgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgbGFiZWwoKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIHRoaXMuX2xhYmVsRWxlbWVudC50ZXh0Q29udGVudDsKLSAgICB9LAorICAgIH0K
IAogICAgIHNldCBsYWJlbChsYWJlbCkKICAgICB7CiAgICAgICAgIHRoaXMuX2xhYmVsRWxlbWVu
dC50ZXh0Q29udGVudCA9IGxhYmVsOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHZhbHVlKCkK
ICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl92YWx1ZTsKLSAgICB9LAorICAgIH0KIAogICAg
IHNldCB2YWx1ZSh2YWx1ZSkKICAgICB7CkBAIC0xMTcsNCArMTExLDcgQEAgV2ViSW5zcGVjdG9y
LkRldGFpbHNTZWN0aW9uU2ltcGxlUm93LnByb3RvdHlwZSA9IHsKICAgICB9CiB9OwogCi1XZWJJ
bnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25TaW1wbGVSb3cucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdl
Ykluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdy5wcm90b3R5cGU7CitXZWJJbnNwZWN0b3IuRGV0
YWlsc1NlY3Rpb25TaW1wbGVSb3cuRGF0YVN0eWxlQ2xhc3NOYW1lID0gImRhdGEiOworV2ViSW5z
cGVjdG9yLkRldGFpbHNTZWN0aW9uU2ltcGxlUm93LkVtcHR5U3R5bGVDbGFzc05hbWUgPSAiZW1w
dHkiOworV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uU2ltcGxlUm93LkxhYmVsRWxlbWVudFN0
eWxlQ2xhc3NOYW1lID0gImxhYmVsIjsKK1dlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblNpbXBs
ZVJvdy5WYWx1ZUVsZW1lbnRTdHlsZUNsYXNzTmFtZSA9ICJ2YWx1ZSI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EZXRhaWxzU2VjdGlvblRl
eHRSb3cuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EZXRh
aWxzU2VjdGlvblRleHRSb3cuanMKaW5kZXggOTQ5MGZmZTY0MzI4Y2JhNTk4NWQ5NjA2N2IxNzNj
NDFlZDRiNjY4OS4uNWI4ZWI5MDFjY2ZjMDI4MDAzZTJjYzZmMDQ5NmNmYTA2ZWNkYjM5MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGV0YWls
c1NlY3Rpb25UZXh0Um93LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL0RldGFpbHNTZWN0aW9uVGV4dFJvdy5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDE0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsMjcgKzIzLDIzIEBACiAgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkRldGFp
bHNTZWN0aW9uVGV4dFJvdyA9IGZ1bmN0aW9uKHRleHQpCitXZWJJbnNwZWN0b3IuRGV0YWlsc1Nl
Y3Rpb25UZXh0Um93ID0gY2xhc3MgRGV0YWlsc1NlY3Rpb25UZXh0Um93IGV4dGVuZHMgV2ViSW5z
cGVjdG9yLkRldGFpbHNTZWN0aW9uUm93CiB7Ci0gICAgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0
aW9uUm93LmNhbGwodGhpcyk7Ci0KLSAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJ
bnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25UZXh0Um93LlN0eWxlQ2xhc3NOYW1lKTsKLQotICAgIHRo
aXMuZWxlbWVudC50ZXh0Q29udGVudCA9IHRleHQ7Ci19OworICAgIGNvbnN0cnVjdG9yKHRleHQp
CisgICAgeworICAgICAgICBzdXBlcigpOwogCi1XZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25U
ZXh0Um93LlN0eWxlQ2xhc3NOYW1lID0gInRleHQiOworICAgICAgICB0aGlzLmVsZW1lbnQuY2xh
c3NMaXN0LmFkZCgidGV4dCIpOwogCi1XZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25UZXh0Um93
LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0
aW9uVGV4dFJvdywKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJv
dy5wcm90b3R5cGUsCisgICAgICAgIHRoaXMuZWxlbWVudC50ZXh0Q29udGVudCA9IHRleHQ7Cisg
ICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgdGV4dCgpCiAgICAgewogICAgICAgICBy
ZXR1cm4gdGhpcy5lbGVtZW50LnRleHRDb250ZW50OwotICAgIH0sCisgICAgfQogCiAgICAgc2V0
IHRleHQodGV4dCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9FZGl0aW5nU3VwcG9ydC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0VkaXRpbmdTdXBwb3J0LmpzCmluZGV4IGFjNTg2NDZjMGQ1
YjU4OWRlOWRjNzIzNzA0YWRmYjNkYTc3MWUzMDUuLmU0NjE1YTU2YzcxMDg1YmZkMDE2ZDM4YWNl
NGY2MDM0NmY5ZTUzYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0VkaXRpbmdTdXBwb3J0LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0VkaXRpbmdTdXBwb3J0LmpzCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01Nyw3ICs1Nyw3IEBAIFdl
Ykluc3BlY3Rvci5pc0VkaXRpbmdBbnlGaWVsZCA9IGZ1bmN0aW9uKCkKIAogV2ViSW5zcGVjdG9y
LmlzRXZlbnRUYXJnZXRBbkVkaXRhYmxlRmllbGQgPSBmdW5jdGlvbihldmVudCkKIHsKLSAgICBj
b25zdCB0ZXh0SW5wdXRUeXBlcyA9IHsidGV4dCI6IHRydWUsICJzZWFyY2giOiB0cnVlLCAidGVs
IjogdHJ1ZSwgInVybCI6IHRydWUsICJlbWFpbCI6IHRydWUsICJwYXNzd29yZCI6IHRydWV9Owor
ICAgIHZhciB0ZXh0SW5wdXRUeXBlcyA9IHsidGV4dCI6IHRydWUsICJzZWFyY2giOiB0cnVlLCAi
dGVsIjogdHJ1ZSwgInVybCI6IHRydWUsICJlbWFpbCI6IHRydWUsICJwYXNzd29yZCI6IHRydWV9
OwogICAgIGlmIChldmVudC50YXJnZXQgaW5zdGFuY2VvZiBIVE1MSW5wdXRFbGVtZW50KQogICAg
ICAgICByZXR1cm4gZXZlbnQudGFyZ2V0LnR5cGUgaW4gdGV4dElucHV0VHlwZXM7CiAKQEAgLTc0
LDI2ICs3NCwyNyBAQCBXZWJJbnNwZWN0b3IuaXNFdmVudFRhcmdldEFuRWRpdGFibGVGaWVsZCA9
IGZ1bmN0aW9uKGV2ZW50KQogICAgIHJldHVybiBmYWxzZTsKIH07CiAKLVdlYkluc3BlY3Rvci5F
ZGl0aW5nQ29uZmlnID0gZnVuY3Rpb24oY29tbWl0SGFuZGxlciwgY2FuY2VsSGFuZGxlciwgY29u
dGV4dCkKK1dlYkluc3BlY3Rvci5FZGl0aW5nQ29uZmlnID0gY2xhc3MgRWRpdGluZ0NvbmZpZwog
ewotICAgIHRoaXMuY29tbWl0SGFuZGxlciA9IGNvbW1pdEhhbmRsZXI7Ci0gICAgdGhpcy5jYW5j
ZWxIYW5kbGVyID0gY2FuY2VsSGFuZGxlcjsKLSAgICB0aGlzLmNvbnRleHQgPSBjb250ZXh0Owot
ICAgIHRoaXMuc3BlbGxjaGVjayA9IGZhbHNlOwotfTsKKyAgICBjb25zdHJ1Y3Rvcihjb21taXRI
YW5kbGVyLCBjYW5jZWxIYW5kbGVyLCBjb250ZXh0KQorICAgIHsKKyAgICAgICAgdGhpcy5jb21t
aXRIYW5kbGVyID0gY29tbWl0SGFuZGxlcjsKKyAgICAgICAgdGhpcy5jYW5jZWxIYW5kbGVyID0g
Y2FuY2VsSGFuZGxlcjsKKyAgICAgICAgdGhpcy5jb250ZXh0ID0gY29udGV4dDsKKyAgICAgICAg
dGhpcy5zcGVsbGNoZWNrID0gZmFsc2U7CisgICAgfQogCi1XZWJJbnNwZWN0b3IuRWRpdGluZ0Nv
bmZpZy5wcm90b3R5cGUgPSB7Ci0gICAgc2V0UGFzdGVIYW5kbGVyOiBmdW5jdGlvbihwYXN0ZUhh
bmRsZXIpCisgICAgc2V0UGFzdGVIYW5kbGVyKHBhc3RlSGFuZGxlcikKICAgICB7CiAgICAgICAg
IHRoaXMucGFzdGVIYW5kbGVyID0gcGFzdGVIYW5kbGVyOwotICAgIH0sCisgICAgfQogCi0gICAg
c2V0TXVsdGlsaW5lOiBmdW5jdGlvbihtdWx0aWxpbmUpCisgICAgc2V0TXVsdGlsaW5lKG11bHRp
bGluZSkKICAgICB7CiAgICAgICAgIHRoaXMubXVsdGlsaW5lID0gbXVsdGlsaW5lOwotICAgIH0s
CisgICAgfQogCi0gICAgc2V0Q3VzdG9tRmluaXNoSGFuZGxlcjogZnVuY3Rpb24oY3VzdG9tRmlu
aXNoSGFuZGxlcikKKyAgICBzZXRDdXN0b21GaW5pc2hIYW5kbGVyKGN1c3RvbUZpbmlzaEhhbmRs
ZXIpCiAgICAgewogICAgICAgICB0aGlzLmN1c3RvbUZpbmlzaEhhbmRsZXIgPSBjdXN0b21GaW5p
c2hIYW5kbGVyOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL0V2ZW50TGlzdGVuZXJTZWN0aW9uLmpzIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRXZlbnRMaXN0ZW5lclNlY3Rpb24uanMKaW5kZXgg
OWNjMzg2YzI1MjBhNTMxNjQxZjhmMDFjNGQ3NjYyYjM0NThkN2ZhOS4uOTY3MGI2N2I4YTkzMDIx
NWQ2NTliNGU2YmYzNTg3YzhmY2M1OTBmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRXZlbnRMaXN0ZW5lclNlY3Rpb24uanMKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRXZlbnRMaXN0ZW5lclNlY3Rp
b24uanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTIzLDI0ICsyMywyMyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogICovCiAKLVdlYkluc3BlY3Rvci5FdmVudExpc3RlbmVyU2VjdGlvbiA9IGZ1bmN0aW9uKHR5
cGUsIG5vZGVJZCkKK1dlYkluc3BlY3Rvci5FdmVudExpc3RlbmVyU2VjdGlvbiA9IGNsYXNzIEV2
ZW50TGlzdGVuZXJTZWN0aW9uIGV4dGVuZHMgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uCiB7
Ci0gICAgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uLmNhbGwodGhpcywgdHlwZSArICItZXZl
bnQtbGlzdGVuZXItc2VjdGlvbiIsIHR5cGUsIFtdLCBudWxsLCB0cnVlKTsKKyAgICBjb25zdHJ1
Y3Rvcih0eXBlLCBub2RlSWQpCisgICAgeworICAgICAgICBzdXBlcih0eXBlICsgIi1ldmVudC1s
aXN0ZW5lci1zZWN0aW9uIiwgdHlwZSwgW10sIG51bGwsIHRydWUpOwogCi0gICAgdGhpcy5lbGVt
ZW50LmNsYXNzTGlzdC5hZGQoImV2ZW50LWxpc3RlbmVyLXNlY3Rpb24iKTsKKyAgICAgICAgdGhp
cy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoImV2ZW50LWxpc3RlbmVyLXNlY3Rpb24iKTsKIAotICAg
IHRoaXMuX25vZGVJZCA9IG5vZGVJZDsKLX07CisgICAgICAgIHRoaXMuX25vZGVJZCA9IG5vZGVJ
ZDsKKyAgICB9CiAKLVdlYkluc3BlY3Rvci5FdmVudExpc3RlbmVyU2VjdGlvbi5wcm90b3R5cGUg
PSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5FdmVudExpc3RlbmVyU2VjdGlvbiwK
KyAgICAvLyBQdWJsaWMKIAotICAgIGFkZExpc3RlbmVyOiBmdW5jdGlvbihldmVudExpc3RlbmVy
KQorICAgIGFkZExpc3RlbmVyKGV2ZW50TGlzdGVuZXIpCiAgICAgewogICAgICAgICB2YXIgZ3Jv
dXBzID0gdGhpcy5ncm91cHM7CiAgICAgICAgIGdyb3Vwcy5wdXNoKG5ldyBXZWJJbnNwZWN0b3Iu
RXZlbnRMaXN0ZW5lclNlY3Rpb25Hcm91cChldmVudExpc3RlbmVyLCB0aGlzLl9ub2RlSWQpKTsK
ICAgICAgICAgdGhpcy5ncm91cHMgPSBncm91cHM7CiAgICAgfQogfTsKLQotV2ViSW5zcGVjdG9y
LkV2ZW50TGlzdGVuZXJTZWN0aW9uLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3Iu
RGV0YWlsc1NlY3Rpb24ucHJvdG90eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRXZlbnRMaXN0ZW5lclNlY3Rpb25Hcm91cC5qcyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0V2ZW50TGlzdGVuZXJTZWN0
aW9uR3JvdXAuanMKaW5kZXggNDE4ZmRiMTViNzZlZjc1N2RhMWNhMGRmMmFkZWMxYTQyNGMxM2Ni
MC4uMThlY2E3ODI1YjAxNGUyNGFjYjg2YjM0MjI2MDJlZTFlMGM4NWRkYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRXZlbnRMaXN0ZW5lclNl
Y3Rpb25Hcm91cC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9FdmVudExpc3RlbmVyU2VjdGlvbkdyb3VwLmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywyMyArMjMsMjUgQEAKICAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuRXZlbnRM
aXN0ZW5lclNlY3Rpb25Hcm91cCA9IGZ1bmN0aW9uKGV2ZW50TGlzdGVuZXIsIG5vZGVJZCkKK1dl
Ykluc3BlY3Rvci5FdmVudExpc3RlbmVyU2VjdGlvbkdyb3VwID0gY2xhc3MgRXZlbnRMaXN0ZW5l
clNlY3Rpb25Hcm91cCBleHRlbmRzIFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbkdyb3VwCiB7
Ci0gICAgdGhpcy5fZXZlbnRMaXN0ZW5lciA9IGV2ZW50TGlzdGVuZXI7Ci0gICAgdGhpcy5fbm9k
ZUlkID0gbm9kZUlkOworICAgIGNvbnN0cnVjdG9yKGV2ZW50TGlzdGVuZXIsIG5vZGVJZCkKKyAg
ICB7CisgICAgICAgIHN1cGVyKCk7CiAKLSAgICB2YXIgcm93cyA9IFtdOwotICAgIHJvd3MucHVz
aChuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uU2ltcGxlUm93KFdlYkluc3BlY3Rvci5V
SVN0cmluZygiTm9kZSIpLCB0aGlzLl9ub2RlVGV4dE9yTGluaygpKSk7Ci0gICAgcm93cy5wdXNo
KG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25TaW1wbGVSb3coV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJGdW5jdGlvbiIpLCB0aGlzLl9mdW5jdGlvblRleHRPckxpbmsoKSkpOwotICAgIHJv
d3MucHVzaChuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uU2ltcGxlUm93KFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiVHlwZSIpLCB0aGlzLl90eXBlKCkpKTsKKyAgICAgICAgdGhpcy5fZXZl
bnRMaXN0ZW5lciA9IGV2ZW50TGlzdGVuZXI7CisgICAgICAgIHRoaXMuX25vZGVJZCA9IG5vZGVJ
ZDsKIAotICAgIFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbkdyb3VwLmNhbGwodGhpcywgcm93
cyk7Ci19OworICAgICAgICB2YXIgcm93cyA9IFtdOworICAgICAgICByb3dzLnB1c2gobmV3IFdl
Ykluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblNpbXBsZVJvdyhXZWJJbnNwZWN0b3IuVUlTdHJpbmco
Ik5vZGUiKSwgdGhpcy5fbm9kZVRleHRPckxpbmsoKSkpOworICAgICAgICByb3dzLnB1c2gobmV3
IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblNpbXBsZVJvdyhXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIkZ1bmN0aW9uIiksIHRoaXMuX2Z1bmN0aW9uVGV4dE9yTGluaygpKSk7CisgICAgICAgIHJv
d3MucHVzaChuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uU2ltcGxlUm93KFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiVHlwZSIpLCB0aGlzLl90eXBlKCkpKTsKKyAgICAgICAgdGhpcy5yb3dz
ID0gcm93czsKKyAgICB9CiAKLVdlYkluc3BlY3Rvci5FdmVudExpc3RlbmVyU2VjdGlvbkdyb3Vw
LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkV2ZW50TGlzdGVu
ZXJTZWN0aW9uR3JvdXAsCisgICAgLy8gUHJpdmF0ZQogCi0gICAgX25vZGVUZXh0T3JMaW5rOiBm
dW5jdGlvbigpCisgICAgX25vZGVUZXh0T3JMaW5rKCkKICAgICB7CiAgICAgICAgIHZhciBub2Rl
ID0gdGhpcy5fZXZlbnRMaXN0ZW5lci5ub2RlOwogICAgICAgICBjb25zb2xlLmFzc2VydChub2Rl
KTsKQEAgLTUwLDkgKzUyLDkgQEAgV2ViSW5zcGVjdG9yLkV2ZW50TGlzdGVuZXJTZWN0aW9uR3Jv
dXAucHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0dXJuICJkb2N1bWVudCI7CiAKICAgICAg
ICAgcmV0dXJuIFdlYkluc3BlY3Rvci5saW5raWZ5Tm9kZVJlZmVyZW5jZShub2RlKTsKLSAgICB9
LAorICAgIH0KIAotICAgIF90eXBlOiBmdW5jdGlvbigpCisgICAgX3R5cGUoKQogICAgIHsKICAg
ICAgICAgaWYgKHRoaXMuX2V2ZW50TGlzdGVuZXIudXNlQ2FwdHVyZSkKICAgICAgICAgICAgIHJl
dHVybiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNhcHR1cmluZyIpOwpAQCAtNjEsOSArNjMsOSBA
QCBXZWJJbnNwZWN0b3IuRXZlbnRMaXN0ZW5lclNlY3Rpb25Hcm91cC5wcm90b3R5cGUgPSB7CiAg
ICAgICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJBdHRyaWJ1dGUiKTsKIAog
ICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJCdWJibGluZyIpOwotICAgIH0s
CisgICAgfQogCi0gICAgX2Z1bmN0aW9uVGV4dE9yTGluazogZnVuY3Rpb24oKQorICAgIF9mdW5j
dGlvblRleHRPckxpbmsoKQogICAgIHsKICAgICAgICAgdmFyIG1hdGNoID0gdGhpcy5fZXZlbnRM
aXN0ZW5lci5oYW5kbGVyQm9keS5tYXRjaCgvZnVuY3Rpb24gKFteXChdKz8pXCgvKTsKICAgICAg
ICAgaWYgKG1hdGNoKSB7CkBAIC05OCw1ICsxMDAsMyBAQCBXZWJJbnNwZWN0b3IuRXZlbnRMaXN0
ZW5lclNlY3Rpb25Hcm91cC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiBmcmFnbWVudDsK
ICAgICB9CiB9OwotCi1XZWJJbnNwZWN0b3IuRXZlbnRMaXN0ZW5lclNlY3Rpb25Hcm91cC5wcm90
b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uR3JvdXAucHJvdG90
eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvRmlsdGVyQmFyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvRmlsdGVyQmFyLmpzCmluZGV4IDJhYzgyMDcwODc0NGYzNmJkN2FkZGFiNzU0NDg5NzhlNDZh
MGU1MWIuLmE5ZjA2MDIwYTE2YTkyMWYwNmU4ODYyM2FjNGU3OTg3OGY2YjY5NDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0ZpbHRlckJhci5q
cworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9GaWx0ZXJC
YXIuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTIzLDY1ICsyMyw1NCBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogICovCiAKLVdlYkluc3BlY3Rvci5GaWx0ZXJCYXIgPSBmdW5jdGlvbihlbGVtZW50KSB7Ci0g
ICAgLy8gRklYTUU6IENvbnZlcnQgdGhpcyB0byBhIFdlYkluc3BlY3Rvci5PYmplY3Qgc3ViY2xh
c3MsIGFuZCBjYWxsIHN1cGVyKCkuCi0gICAgLy8gV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRo
aXMpOwotCi0gICAgdGhpcy5fZWxlbWVudCA9IGVsZW1lbnQgfHwgZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiZGl2Iik7Ci0gICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rv
ci5GaWx0ZXJCYXIuU3R5bGVDbGFzc05hbWUpOwotCi0gICAgdGhpcy5fZmlsdGVyc05hdmlnYXRp
b25CYXIgPSBuZXcgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXI7Ci0gICAgdGhpcy5fZWxlbWVu
dC5hcHBlbmRDaGlsZCh0aGlzLl9maWx0ZXJzTmF2aWdhdGlvbkJhci5lbGVtZW50KTsKLQotICAg
IHRoaXMuX2ZpbHRlckZ1bmN0aW9uc01hcCA9IG5ldyBNYXA7Ci0KLSAgICB0aGlzLl9pbnB1dEZp
ZWxkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTsKLSAgICB0aGlzLl9pbnB1dEZp
ZWxkLnR5cGUgPSAic2VhcmNoIjsKLSAgICB0aGlzLl9pbnB1dEZpZWxkLnNwZWxsY2hlY2sgPSBm
YWxzZTsKLSAgICB0aGlzLl9pbnB1dEZpZWxkLmluY3JlbWVudGFsID0gdHJ1ZTsKLSAgICB0aGlz
Ll9pbnB1dEZpZWxkLmFkZEV2ZW50TGlzdGVuZXIoInNlYXJjaCIsIHRoaXMuX2hhbmRsZUZpbHRl
ckNoYW5nZWQuYmluZCh0aGlzKSwgZmFsc2UpOwotICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hp
bGQodGhpcy5faW5wdXRGaWVsZCk7Ci19OworV2ViSW5zcGVjdG9yLkZpbHRlckJhciA9IGNsYXNz
IEZpbHRlckJhciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKK3sKKyAgICBjb25zdHJ1Y3Rv
cihlbGVtZW50KQorICAgIHsKKyAgICAgICAgc3VwZXIoKTsKIAotLy8gRklYTUU6IE1vdmUgdG8g
YSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzIGFuZCB3ZSBjYW4gcmVtb3ZlIHRoaXMuCi1X
ZWJJbnNwZWN0b3IuT2JqZWN0LmRlcHJlY2F0ZWRBZGRDb25zdHJ1Y3RvckZ1bmN0aW9ucyhXZWJJ
bnNwZWN0b3IuRmlsdGVyQmFyKTsKKyAgICAgICAgdGhpcy5fZWxlbWVudCA9IGVsZW1lbnQgfHwg
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xh
c3NMaXN0LmFkZCgiZmlsdGVyLWJhciIpOwogCi1XZWJJbnNwZWN0b3IuRmlsdGVyQmFyLlN0eWxl
Q2xhc3NOYW1lID0gImZpbHRlci1iYXIiOworICAgICAgICB0aGlzLl9maWx0ZXJzTmF2aWdhdGlv
bkJhciA9IG5ldyBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhcjsKKyAgICAgICAgdGhpcy5fZWxl
bWVudC5hcHBlbmRDaGlsZCh0aGlzLl9maWx0ZXJzTmF2aWdhdGlvbkJhci5lbGVtZW50KTsKIAot
V2ViSW5zcGVjdG9yLkZpbHRlckJhci5FdmVudCA9IHsKLSAgICBGaWx0ZXJEaWRDaGFuZ2U6ICJm
aWx0ZXItYmFyLXRleHQtZmlsdGVyLWRpZC1jaGFuZ2UiCi19OworICAgICAgICB0aGlzLl9maWx0
ZXJGdW5jdGlvbnNNYXAgPSBuZXcgTWFwOwogCi1XZWJJbnNwZWN0b3IuRmlsdGVyQmFyLnByb3Rv
dHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkZpbHRlckJhciwKLSAgICBf
X3Byb3RvX186IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlLAorICAgICAgICB0aGlzLl9p
bnB1dEZpZWxkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTsKKyAgICAgICAgdGhp
cy5faW5wdXRGaWVsZC50eXBlID0gInNlYXJjaCI7CisgICAgICAgIHRoaXMuX2lucHV0RmllbGQu
c3BlbGxjaGVjayA9IGZhbHNlOworICAgICAgICB0aGlzLl9pbnB1dEZpZWxkLmluY3JlbWVudGFs
ID0gdHJ1ZTsKKyAgICAgICAgdGhpcy5faW5wdXRGaWVsZC5hZGRFdmVudExpc3RlbmVyKCJzZWFy
Y2giLCB0aGlzLl9oYW5kbGVGaWx0ZXJDaGFuZ2VkLmJpbmQodGhpcyksIGZhbHNlKTsKKyAgICAg
ICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9pbnB1dEZpZWxkKTsKKyAgICB9CiAK
ICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBlbGVtZW50KCkKICAgICB7CiAgICAgICAgIHJldHVy
biB0aGlzLl9lbGVtZW50OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHBsYWNlaG9sZGVyKCkK
ICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9pbnB1dEZpZWxkLmdldEF0dHJpYnV0ZSgicGxh
Y2Vob2xkZXIiKTsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCBwbGFjZWhvbGRlcih0ZXh0KQog
ICAgIHsKICAgICAgICAgdGhpcy5faW5wdXRGaWVsZC5zZXRBdHRyaWJ1dGUoInBsYWNlaG9sZGVy
IiwgdGV4dCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgaW5wdXRGaWVsZCgpCiAgICAgewog
ICAgICAgICByZXR1cm4gdGhpcy5faW5wdXRGaWVsZDsKLSAgICB9LAorICAgIH0KIAogICAgIGdl
dCBmaWx0ZXJzKCkKICAgICB7CiAgICAgICAgIHJldHVybiB7dGV4dDogdGhpcy5faW5wdXRGaWVs
ZC52YWx1ZSwgZnVuY3Rpb25zOiBbLi4udGhpcy5fZmlsdGVyRnVuY3Rpb25zTWFwLnZhbHVlcygp
XX07Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgZmlsdGVycyhmaWx0ZXJzKQogICAgIHsKQEAg
LTkxLDkgKzgwLDkgQEAgV2ViSW5zcGVjdG9yLkZpbHRlckJhci5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIHRoaXMuX2lucHV0RmllbGQudmFsdWUgPSBmaWx0ZXJzLnRleHQgfHwgIiI7CiAgICAgICAg
IGlmIChvbGRUZXh0VmFsdWUgIT09IHRoaXMuX2lucHV0RmllbGQudmFsdWUpCiAgICAgICAgICAg
ICB0aGlzLl9oYW5kbGVGaWx0ZXJDaGFuZ2VkKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBhZGRG
aWx0ZXJCYXJCdXR0b246IGZ1bmN0aW9uKGlkZW50aWZpZXIsIGZpbHRlckZ1bmN0aW9uLCBhY3Rp
dmF0ZWRCeURlZmF1bHQsIGRlZmF1bHRUb29sVGlwLCBhY3RpdmF0ZWRUb29sVGlwLCBpbWFnZSwg
aW1hZ2VXaWR0aCwgaW1hZ2VIZWlnaHQsIHN1cHByZXNzRW1ib3NzKQorICAgIGFkZEZpbHRlckJh
ckJ1dHRvbihpZGVudGlmaWVyLCBmaWx0ZXJGdW5jdGlvbiwgYWN0aXZhdGVkQnlEZWZhdWx0LCBk
ZWZhdWx0VG9vbFRpcCwgYWN0aXZhdGVkVG9vbFRpcCwgaW1hZ2UsIGltYWdlV2lkdGgsIGltYWdl
SGVpZ2h0LCBzdXBwcmVzc0VtYm9zcykKICAgICB7CiAgICAgICAgIHZhciBmaWx0ZXJCYXJCdXR0
b24gPSBuZXcgV2ViSW5zcGVjdG9yLkZpbHRlckJhckJ1dHRvbihpZGVudGlmaWVyLCBmaWx0ZXJG
dW5jdGlvbiwgYWN0aXZhdGVkQnlEZWZhdWx0LCBkZWZhdWx0VG9vbFRpcCwgYWN0aXZhdGVkVG9v
bFRpcCwgaW1hZ2UsIGltYWdlV2lkdGgsIGltYWdlSGVpZ2h0LCBzdXBwcmVzc0VtYm9zcyk7CiAg
ICAgICAgIGZpbHRlckJhckJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5CdXR0
b25OYXZpZ2F0aW9uSXRlbS5FdmVudC5DbGlja2VkLCB0aGlzLl9oYW5kbGVGaWx0ZXJCYXJCdXR0
b25DbGlja2VkLCB0aGlzKTsKQEAgLTEwMywxMiArOTIsMTIgQEAgV2ViSW5zcGVjdG9yLkZpbHRl
ckJhci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9maWx0ZXJGdW5jdGlvbnNNYXAu
c2V0KGZpbHRlckJhckJ1dHRvbi5pZGVudGlmaWVyLCBmaWx0ZXJCYXJCdXR0b24uZmlsdGVyRnVu
Y3Rpb24pOwogICAgICAgICAgICAgdGhpcy5faGFuZGxlRmlsdGVyQ2hhbmdlZCgpOwogICAgICAg
ICB9Ci0gICAgfSwKKyAgICB9CiAKLSAgICBoYXNBY3RpdmVGaWx0ZXJzOiBmdW5jdGlvbigpCisg
ICAgaGFzQWN0aXZlRmlsdGVycygpCiAgICAgewogICAgICAgICByZXR1cm4gISF0aGlzLl9pbnB1
dEZpZWxkLnZhbHVlIHx8ICEhdGhpcy5fZmlsdGVyRnVuY3Rpb25zTWFwLnNpemU7Ci0gICAgfSwK
KyAgICB9CiAKICAgICAvLyBQcml2YXRlCiAKQEAgLTExNiw5ICsxMDUsOSBAQCBXZWJJbnNwZWN0
b3IuRmlsdGVyQmFyLnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAgIHZhciBmaWx0ZXJCYXJC
dXR0b24gPSBldmVudC50YXJnZXQ7CiAgICAgICAgIGZpbHRlckJhckJ1dHRvbi50b2dnbGUoKTsK
LSAgICB9LAorICAgIH0KIAotICAgIF9oYW5kbGVGaWx0ZXJCdXR0b25Ub2dnbGVkOiBmdW5jdGlv
bihldmVudCkKKyAgICBfaGFuZGxlRmlsdGVyQnV0dG9uVG9nZ2xlZChldmVudCkKICAgICB7CiAg
ICAgICAgIHZhciBmaWx0ZXJCYXJCdXR0b24gPSBldmVudC50YXJnZXQ7CiAgICAgICAgIGlmIChm
aWx0ZXJCYXJCdXR0b24uYWN0aXZhdGVkKQpAQCAtMTI2LDEwICsxMTUsMTQgQEAgV2ViSW5zcGVj
dG9yLkZpbHRlckJhci5wcm90b3R5cGUgPSB7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHRo
aXMuX2ZpbHRlckZ1bmN0aW9uc01hcC5kZWxldGUoZmlsdGVyQmFyQnV0dG9uLmlkZW50aWZpZXIp
OwogICAgICAgICB0aGlzLl9oYW5kbGVGaWx0ZXJDaGFuZ2VkKCk7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBfaGFuZGxlRmlsdGVyQ2hhbmdlZDogZnVuY3Rpb24oKQorICAgIF9oYW5kbGVGaWx0ZXJD
aGFuZ2VkKCkKICAgICB7CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdl
Ykluc3BlY3Rvci5GaWx0ZXJCYXIuRXZlbnQuRmlsdGVyRGlkQ2hhbmdlKTsKICAgICB9CiB9Owor
CitXZWJJbnNwZWN0b3IuRmlsdGVyQmFyLkV2ZW50ID0geworICAgIEZpbHRlckRpZENoYW5nZTog
ImZpbHRlci1iYXItdGV4dC1maWx0ZXItZGlkLWNoYW5nZSIKK307CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9GaW5kQmFubmVyLmpzIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRmluZEJhbm5lci5qcwppbmRl
eCBiZjljZWFlMDIwMWJiOWNmYzNhMWFkMmViYmJkYjA0YjdiYTUzYzdkLi42Zjc3NDBkZWM3ZjUx
NDY5ZjQ3YWFiM2JkNDJkODkwYjY1Y2Y2NDgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9GaW5kQmFubmVyLmpzCisrKyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0ZpbmRCYW5uZXIuanMKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDEyNyArMjMs
MTA4IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5z
cGVjdG9yLkZpbmRCYW5uZXIgPSBmdW5jdGlvbihkZWxlZ2F0ZSwgZWxlbWVudCkgewotICAgIC8v
IEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBh
bmQgY2FsbCBzdXBlcigpLgotICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsK
LQotICAgIHRoaXMuX2RlbGVnYXRlID0gZGVsZWdhdGUgfHwgbnVsbDsKLQotICAgIHRoaXMuX2Vs
ZW1lbnQgPSBlbGVtZW50IHx8IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgIHRo
aXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuRmluZEJhbm5lci5TdHlsZUNs
YXNzTmFtZSk7Ci0KLSAgICB0aGlzLl9yZXN1bHRDb3VudExhYmVsID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgibGFiZWwiKTsKLSAgICB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX3Jl
c3VsdENvdW50TGFiZWwpOwotCi0gICAgdGhpcy5fcHJldmlvdXNSZXN1bHRCdXR0b24gPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJidXR0b24iKTsKLSAgICB0aGlzLl9wcmV2aW91c1Jlc3VsdEJ1
dHRvbi5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5GaW5kQmFubmVyLlNlZ21lbnRlZEJ1dHRv
blN0eWxlQ2xhc3NOYW1lKTsKLSAgICB0aGlzLl9wcmV2aW91c1Jlc3VsdEJ1dHRvbi5jbGFzc0xp
c3QuYWRkKFdlYkluc3BlY3Rvci5GaW5kQmFubmVyLkxlZnRTZWdtZW50QnV0dG9uU3R5bGVDbGFz
c05hbWUpOwotICAgIHRoaXMuX3ByZXZpb3VzUmVzdWx0QnV0dG9uLmRpc2FibGVkID0gdHJ1ZTsK
LSAgICB0aGlzLl9wcmV2aW91c1Jlc3VsdEJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIs
IHRoaXMuX3ByZXZpb3VzUmVzdWx0QnV0dG9uQ2xpY2tlZC5iaW5kKHRoaXMpKTsKLSAgICB0aGlz
Ll9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX3ByZXZpb3VzUmVzdWx0QnV0dG9uKTsKLQotICAg
IHZhciBwcmV2aW91c1Jlc3VsdEJ1dHRvbkdseXBoRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImRpdiIpOwotICAgIHByZXZpb3VzUmVzdWx0QnV0dG9uR2x5cGhFbGVtZW50LmNsYXNz
TGlzdC5hZGQoV2ViSW5zcGVjdG9yLkZpbmRCYW5uZXIuU2VnbWVudEdseXBoU3R5bGVDbGFzc05h
bWUpOwotICAgIHRoaXMuX3ByZXZpb3VzUmVzdWx0QnV0dG9uLmFwcGVuZENoaWxkKHByZXZpb3Vz
UmVzdWx0QnV0dG9uR2x5cGhFbGVtZW50KTsKLQotICAgIHRoaXMuX25leHRSZXN1bHRCdXR0b24g
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJidXR0b24iKTsKLSAgICB0aGlzLl9uZXh0UmVzdWx0
QnV0dG9uLmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLkZpbmRCYW5uZXIuU2VnbWVudGVkQnV0
dG9uU3R5bGVDbGFzc05hbWUpOwotICAgIHRoaXMuX25leHRSZXN1bHRCdXR0b24uY2xhc3NMaXN0
LmFkZChXZWJJbnNwZWN0b3IuRmluZEJhbm5lci5SaWdodFNlZ21lbnRCdXR0b25TdHlsZUNsYXNz
TmFtZSk7Ci0gICAgdGhpcy5fbmV4dFJlc3VsdEJ1dHRvbi5kaXNhYmxlZCA9IHRydWU7Ci0gICAg
dGhpcy5fbmV4dFJlc3VsdEJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX25l
eHRSZXN1bHRCdXR0b25DbGlja2VkLmJpbmQodGhpcykpOwotICAgIHRoaXMuX2VsZW1lbnQuYXBw
ZW5kQ2hpbGQodGhpcy5fbmV4dFJlc3VsdEJ1dHRvbik7Ci0KLSAgICB2YXIgbmV4dFJlc3VsdEJ1
dHRvbkdseXBoRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgIG5l
eHRSZXN1bHRCdXR0b25HbHlwaEVsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuRmlu
ZEJhbm5lci5TZWdtZW50R2x5cGhTdHlsZUNsYXNzTmFtZSk7Ci0gICAgdGhpcy5fbmV4dFJlc3Vs
dEJ1dHRvbi5hcHBlbmRDaGlsZChuZXh0UmVzdWx0QnV0dG9uR2x5cGhFbGVtZW50KTsKLQotICAg
IHRoaXMuX2lucHV0RmllbGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpOwotICAg
IHRoaXMuX2lucHV0RmllbGQudHlwZSA9ICJzZWFyY2giOwotICAgIHRoaXMuX2lucHV0RmllbGQu
c3BlbGxjaGVjayA9IGZhbHNlOwotICAgIHRoaXMuX2lucHV0RmllbGQuaW5jcmVtZW50YWwgPSB0
cnVlOwotICAgIHRoaXMuX2lucHV0RmllbGQuc2V0QXR0cmlidXRlKCJyZXN1bHRzIiwgNSk7Ci0g
ICAgdGhpcy5faW5wdXRGaWVsZC5zZXRBdHRyaWJ1dGUoImF1dG9zYXZlIiwgImluc3BlY3Rvci1z
ZWFyY2giKTsKLSAgICB0aGlzLl9pbnB1dEZpZWxkLmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24i
LCB0aGlzLl9pbnB1dEZpZWxkS2V5RG93bi5iaW5kKHRoaXMpLCBmYWxzZSk7Ci0gICAgdGhpcy5f
aW5wdXRGaWVsZC5hZGRFdmVudExpc3RlbmVyKCJrZXl1cCIsIHRoaXMuX2lucHV0RmllbGRLZXlV
cC5iaW5kKHRoaXMpLCBmYWxzZSk7Ci0gICAgdGhpcy5faW5wdXRGaWVsZC5hZGRFdmVudExpc3Rl
bmVyKCJzZWFyY2giLCB0aGlzLl9pbnB1dEZpZWxkU2VhcmNoLmJpbmQodGhpcyksIGZhbHNlKTsK
LSAgICB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2lucHV0RmllbGQpOwotCi0gICAg
dGhpcy5fZG9uZUJ1dHRvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImJ1dHRvbiIpOwotICAg
IHRoaXMuX2RvbmVCdXR0b24udGV4dENvbnRlbnQgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkRv
bmUiKTsKLSAgICB0aGlzLl9kb25lQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhp
cy5fZG9uZUJ1dHRvbkNsaWNrZWQuYmluZCh0aGlzKSk7Ci0gICAgdGhpcy5fZWxlbWVudC5hcHBl
bmRDaGlsZCh0aGlzLl9kb25lQnV0dG9uKTsKLQotICAgIHRoaXMuX251bWJlck9mUmVzdWx0cyA9
IG51bGw7Ci0gICAgdGhpcy5fc2VhcmNoQmFja3dhcmRzID0gZmFsc2U7Ci0gICAgdGhpcy5fc2Vh
cmNoS2V5UHJlc3NlZCA9IGZhbHNlOwotICAgIHRoaXMuX3ByZXZpb3VzU2VhcmNoVmFsdWUgPSAi
IjsKLQotICAgIHRoaXMuX2hpZGVLZXlib2FyZFNob3J0Y3V0ID0gbmV3IFdlYkluc3BlY3Rvci5L
ZXlib2FyZFNob3J0Y3V0KG51bGwsIFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0LktleS5F
c2NhcGUsIHRoaXMuaGlkZS5iaW5kKHRoaXMpLCB0aGlzLl9lbGVtZW50KTsKLSAgICB0aGlzLl9w
b3B1bGF0ZUZpbmRLZXlib2FyZFNob3J0Y3V0ID0gbmV3IFdlYkluc3BlY3Rvci5LZXlib2FyZFNo
b3J0Y3V0KFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lk1vZGlmaWVyLkNvbW1hbmRPckNv
bnRyb2wsICJFIiwgdGhpcy5fcG9wdWxhdGVTZWFyY2hRdWVyeUZyb21TZWxlY3Rpb24uYmluZCh0
aGlzKSk7Ci0gICAgdGhpcy5fcG9wdWxhdGVGaW5kS2V5Ym9hcmRTaG9ydGN1dC5pbXBsaWNpdGx5
UHJldmVudHNEZWZhdWx0ID0gZmFsc2U7Ci0gICAgdGhpcy5fZmluZE5leHRLZXlib2FyZFNob3J0
Y3V0ID0gbmV3IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0KFdlYkluc3BlY3Rvci5LZXli
b2FyZFNob3J0Y3V0Lk1vZGlmaWVyLkNvbW1hbmRPckNvbnRyb2wsICJHIiwgdGhpcy5fbmV4dFJl
c3VsdEJ1dHRvbkNsaWNrZWQuYmluZCh0aGlzKSk7Ci0gICAgdGhpcy5fZmluZFByZXZpb3VzS2V5
Ym9hcmRTaG9ydGN1dCA9IG5ldyBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dChXZWJJbnNw
ZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5Nb2RpZmllci5TaGlmdCB8IFdlYkluc3BlY3Rvci5LZXli
b2FyZFNob3J0Y3V0Lk1vZGlmaWVyLkNvbW1hbmRPckNvbnRyb2wsICJHIiwgdGhpcy5fcHJldmlv
dXNSZXN1bHRCdXR0b25DbGlja2VkLmJpbmQodGhpcykpOwotCi0gICAgdGhpcy5fZ2VuZXJhdGVC
dXR0b25zR2x5cGhzSWZOZWVkZWQoKTsKLX07Ci0KLS8vIEZJWE1FOiBNb3ZlIHRvIGEgV2ViSW5z
cGVjdG9yLk9iamVjdCBzdWJjbGFzcyBhbmQgd2UgY2FuIHJlbW92ZSB0aGlzLgotV2ViSW5zcGVj
dG9yLk9iamVjdC5kZXByZWNhdGVkQWRkQ29uc3RydWN0b3JGdW5jdGlvbnMoV2ViSW5zcGVjdG9y
LkZpbmRCYW5uZXIpOwotCi1XZWJJbnNwZWN0b3IuRmluZEJhbm5lci5TdHlsZUNsYXNzTmFtZSA9
ICJmaW5kLWJhbm5lciI7Ci1XZWJJbnNwZWN0b3IuRmluZEJhbm5lci5TdXBwb3J0c0ZpbmRCYW5u
ZXJTdHlsZUNsYXNzTmFtZSA9ICJzdXBwb3J0cy1maW5kLWJhbm5lciI7Ci1XZWJJbnNwZWN0b3Iu
RmluZEJhbm5lci5TaG93aW5nRmluZEJhbm5lclN0eWxlQ2xhc3NOYW1lID0gInNob3dpbmctZmlu
ZC1iYW5uZXIiOwotV2ViSW5zcGVjdG9yLkZpbmRCYW5uZXIuTm9UcmFuc2l0aW9uU3R5bGVDbGFz
c05hbWUgPSAibm8tZmluZC1iYW5uZXItdHJhbnNpdGlvbiI7Ci1XZWJJbnNwZWN0b3IuRmluZEJh
bm5lci5TaG93aW5nU3R5bGVDbGFzc05hbWUgPSAic2hvd2luZyI7Ci1XZWJJbnNwZWN0b3IuRmlu
ZEJhbm5lci5TZWdtZW50ZWRCdXR0b25TdHlsZUNsYXNzTmFtZSA9ICJzZWdtZW50ZWQiOwotV2Vi
SW5zcGVjdG9yLkZpbmRCYW5uZXIuTGVmdFNlZ21lbnRCdXR0b25TdHlsZUNsYXNzTmFtZSA9ICJs
ZWZ0IjsKLVdlYkluc3BlY3Rvci5GaW5kQmFubmVyLlJpZ2h0U2VnbWVudEJ1dHRvblN0eWxlQ2xh
c3NOYW1lID0gInJpZ2h0IjsKLVdlYkluc3BlY3Rvci5GaW5kQmFubmVyLlNlZ21lbnRHbHlwaFN0
eWxlQ2xhc3NOYW1lID0gImdseXBoIjsKLQotV2ViSW5zcGVjdG9yLkZpbmRCYW5uZXIuRXZlbnQg
PSB7Ci0gICAgRGlkU2hvdzogImZpbmQtYmFubmVyLWRpZC1zaG93IiwKLSAgICBEaWRIaWRlOiAi
ZmluZC1iYW5uZXItZGlkLWhpZGUiCi19OwotCi1XZWJJbnNwZWN0b3IuRmluZEJhbm5lci5wcm90
b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5GaW5kQmFubmVyLAorV2Vi
SW5zcGVjdG9yLkZpbmRCYW5uZXIgPSBjbGFzcyBGaW5kQmFubmVyIGV4dGVuZHMgV2ViSW5zcGVj
dG9yLk9iamVjdAoreworICAgIGNvbnN0cnVjdG9yKGRlbGVnYXRlLCBlbGVtZW50KQorICAgIHsK
KyAgICAgICAgc3VwZXIoKTsKKworICAgICAgICB0aGlzLl9kZWxlZ2F0ZSA9IGRlbGVnYXRlIHx8
IG51bGw7CisKKyAgICAgICAgdGhpcy5fZWxlbWVudCA9IGVsZW1lbnQgfHwgZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZCgi
ZmluZC1iYW5uZXIiKTsKKworICAgICAgICB0aGlzLl9yZXN1bHRDb3VudExhYmVsID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgibGFiZWwiKTsKKyAgICAgICAgdGhpcy5fZWxlbWVudC5hcHBlbmRD
aGlsZCh0aGlzLl9yZXN1bHRDb3VudExhYmVsKTsKKworICAgICAgICB0aGlzLl9wcmV2aW91c1Jl
c3VsdEJ1dHRvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImJ1dHRvbiIpOworICAgICAgICB0
aGlzLl9wcmV2aW91c1Jlc3VsdEJ1dHRvbi5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5GaW5k
QmFubmVyLlNlZ21lbnRlZEJ1dHRvblN0eWxlQ2xhc3NOYW1lKTsKKyAgICAgICAgdGhpcy5fcHJl
dmlvdXNSZXN1bHRCdXR0b24uY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuRmluZEJhbm5lci5M
ZWZ0U2VnbWVudEJ1dHRvblN0eWxlQ2xhc3NOYW1lKTsKKyAgICAgICAgdGhpcy5fcHJldmlvdXNS
ZXN1bHRCdXR0b24uZGlzYWJsZWQgPSB0cnVlOworICAgICAgICB0aGlzLl9wcmV2aW91c1Jlc3Vs
dEJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX3ByZXZpb3VzUmVzdWx0QnV0
dG9uQ2xpY2tlZC5iaW5kKHRoaXMpKTsKKyAgICAgICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGls
ZCh0aGlzLl9wcmV2aW91c1Jlc3VsdEJ1dHRvbik7CisKKyAgICAgICAgdmFyIHByZXZpb3VzUmVz
dWx0QnV0dG9uR2x5cGhFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Cisg
ICAgICAgIHByZXZpb3VzUmVzdWx0QnV0dG9uR2x5cGhFbGVtZW50LmNsYXNzTGlzdC5hZGQoV2Vi
SW5zcGVjdG9yLkZpbmRCYW5uZXIuU2VnbWVudEdseXBoU3R5bGVDbGFzc05hbWUpOworICAgICAg
ICB0aGlzLl9wcmV2aW91c1Jlc3VsdEJ1dHRvbi5hcHBlbmRDaGlsZChwcmV2aW91c1Jlc3VsdEJ1
dHRvbkdseXBoRWxlbWVudCk7CisKKyAgICAgICAgdGhpcy5fbmV4dFJlc3VsdEJ1dHRvbiA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImJ1dHRvbiIpOworICAgICAgICB0aGlzLl9uZXh0UmVzdWx0
QnV0dG9uLmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLkZpbmRCYW5uZXIuU2VnbWVudGVkQnV0
dG9uU3R5bGVDbGFzc05hbWUpOworICAgICAgICB0aGlzLl9uZXh0UmVzdWx0QnV0dG9uLmNsYXNz
TGlzdC5hZGQoV2ViSW5zcGVjdG9yLkZpbmRCYW5uZXIuUmlnaHRTZWdtZW50QnV0dG9uU3R5bGVD
bGFzc05hbWUpOworICAgICAgICB0aGlzLl9uZXh0UmVzdWx0QnV0dG9uLmRpc2FibGVkID0gdHJ1
ZTsKKyAgICAgICAgdGhpcy5fbmV4dFJlc3VsdEJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCJjbGlj
ayIsIHRoaXMuX25leHRSZXN1bHRCdXR0b25DbGlja2VkLmJpbmQodGhpcykpOworICAgICAgICB0
aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX25leHRSZXN1bHRCdXR0b24pOworCisgICAg
ICAgIHZhciBuZXh0UmVzdWx0QnV0dG9uR2x5cGhFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiZGl2Iik7CisgICAgICAgIG5leHRSZXN1bHRCdXR0b25HbHlwaEVsZW1lbnQuY2xhc3NM
aXN0LmFkZChXZWJJbnNwZWN0b3IuRmluZEJhbm5lci5TZWdtZW50R2x5cGhTdHlsZUNsYXNzTmFt
ZSk7CisgICAgICAgIHRoaXMuX25leHRSZXN1bHRCdXR0b24uYXBwZW5kQ2hpbGQobmV4dFJlc3Vs
dEJ1dHRvbkdseXBoRWxlbWVudCk7CisKKyAgICAgICAgdGhpcy5faW5wdXRGaWVsZCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0Iik7CisgICAgICAgIHRoaXMuX2lucHV0RmllbGQudHlw
ZSA9ICJzZWFyY2giOworICAgICAgICB0aGlzLl9pbnB1dEZpZWxkLnNwZWxsY2hlY2sgPSBmYWxz
ZTsKKyAgICAgICAgdGhpcy5faW5wdXRGaWVsZC5pbmNyZW1lbnRhbCA9IHRydWU7CisgICAgICAg
IHRoaXMuX2lucHV0RmllbGQuc2V0QXR0cmlidXRlKCJyZXN1bHRzIiwgNSk7CisgICAgICAgIHRo
aXMuX2lucHV0RmllbGQuc2V0QXR0cmlidXRlKCJhdXRvc2F2ZSIsICJpbnNwZWN0b3Itc2VhcmNo
Iik7CisgICAgICAgIHRoaXMuX2lucHV0RmllbGQuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIs
IHRoaXMuX2lucHV0RmllbGRLZXlEb3duLmJpbmQodGhpcyksIGZhbHNlKTsKKyAgICAgICAgdGhp
cy5faW5wdXRGaWVsZC5hZGRFdmVudExpc3RlbmVyKCJrZXl1cCIsIHRoaXMuX2lucHV0RmllbGRL
ZXlVcC5iaW5kKHRoaXMpLCBmYWxzZSk7CisgICAgICAgIHRoaXMuX2lucHV0RmllbGQuYWRkRXZl
bnRMaXN0ZW5lcigic2VhcmNoIiwgdGhpcy5faW5wdXRGaWVsZFNlYXJjaC5iaW5kKHRoaXMpLCBm
YWxzZSk7CisgICAgICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5faW5wdXRGaWVs
ZCk7CisKKyAgICAgICAgdGhpcy5fZG9uZUJ1dHRvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImJ1dHRvbiIpOworICAgICAgICB0aGlzLl9kb25lQnV0dG9uLnRleHRDb250ZW50ID0gV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJEb25lIik7CisgICAgICAgIHRoaXMuX2RvbmVCdXR0b24uYWRkRXZl
bnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl9kb25lQnV0dG9uQ2xpY2tlZC5iaW5kKHRoaXMpKTsK
KyAgICAgICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9kb25lQnV0dG9uKTsKKwor
ICAgICAgICB0aGlzLl9udW1iZXJPZlJlc3VsdHMgPSBudWxsOworICAgICAgICB0aGlzLl9zZWFy
Y2hCYWNrd2FyZHMgPSBmYWxzZTsKKyAgICAgICAgdGhpcy5fc2VhcmNoS2V5UHJlc3NlZCA9IGZh
bHNlOworICAgICAgICB0aGlzLl9wcmV2aW91c1NlYXJjaFZhbHVlID0gIiI7CisKKyAgICAgICAg
dGhpcy5faGlkZUtleWJvYXJkU2hvcnRjdXQgPSBuZXcgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hv
cnRjdXQobnVsbCwgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuS2V5LkVzY2FwZSwgdGhp
cy5oaWRlLmJpbmQodGhpcyksIHRoaXMuX2VsZW1lbnQpOworICAgICAgICB0aGlzLl9wb3B1bGF0
ZUZpbmRLZXlib2FyZFNob3J0Y3V0ID0gbmV3IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0
KFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lk1vZGlmaWVyLkNvbW1hbmRPckNvbnRyb2ws
ICJFIiwgdGhpcy5fcG9wdWxhdGVTZWFyY2hRdWVyeUZyb21TZWxlY3Rpb24uYmluZCh0aGlzKSk7
CisgICAgICAgIHRoaXMuX3BvcHVsYXRlRmluZEtleWJvYXJkU2hvcnRjdXQuaW1wbGljaXRseVBy
ZXZlbnRzRGVmYXVsdCA9IGZhbHNlOworICAgICAgICB0aGlzLl9maW5kTmV4dEtleWJvYXJkU2hv
cnRjdXQgPSBuZXcgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQoV2ViSW5zcGVjdG9yLktl
eWJvYXJkU2hvcnRjdXQuTW9kaWZpZXIuQ29tbWFuZE9yQ29udHJvbCwgIkciLCB0aGlzLl9uZXh0
UmVzdWx0QnV0dG9uQ2xpY2tlZC5iaW5kKHRoaXMpKTsKKyAgICAgICAgdGhpcy5fZmluZFByZXZp
b3VzS2V5Ym9hcmRTaG9ydGN1dCA9IG5ldyBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dChX
ZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5Nb2RpZmllci5TaGlmdCB8IFdlYkluc3BlY3Rv
ci5LZXlib2FyZFNob3J0Y3V0Lk1vZGlmaWVyLkNvbW1hbmRPckNvbnRyb2wsICJHIiwgdGhpcy5f
cHJldmlvdXNSZXN1bHRCdXR0b25DbGlja2VkLmJpbmQodGhpcykpOworCisgICAgICAgIHRoaXMu
X2dlbmVyYXRlQnV0dG9uc0dseXBoc0lmTmVlZGVkKCk7CisgICAgfQogCiAgICAgLy8gUHVibGlj
CiAKICAgICBnZXQgZGVsZWdhdGUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2RlbGVn
YXRlOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IGRlbGVnYXRlKG5ld0RlbGVnYXRlKQogICAg
IHsKICAgICAgICAgdGhpcy5fZGVsZWdhdGUgPSBuZXdEZWxlZ2F0ZSB8fCBudWxsOwotICAgIH0s
CisgICAgfQogCiAgICAgZ2V0IGVsZW1lbnQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMu
X2VsZW1lbnQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgaW5wdXRGaWVsZCgpCiAgICAgewog
ICAgICAgICByZXR1cm4gdGhpcy5faW5wdXRGaWVsZDsKLSAgICB9LAorICAgIH0KIAogICAgIGdl
dCBzZWFyY2hRdWVyeSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5faW5wdXRGaWVsZC52
YWx1ZSB8fCAiIjsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCBzZWFyY2hRdWVyeShxdWVyeSkK
ICAgICB7CiAgICAgICAgIHRoaXMuX2lucHV0RmllbGQudmFsdWUgPSBxdWVyeSB8fCAiIjsKLSAg
ICB9LAorICAgIH0KIAogICAgIGdldCBudW1iZXJPZlJlc3VsdHMoKQogICAgIHsKICAgICAgICAg
cmV0dXJuIHRoaXMuX251bWJlck9mUmVzdWx0czsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCBu
dW1iZXJPZlJlc3VsdHMobnVtYmVyT2ZSZXN1bHRzKQogICAgIHsKQEAgLTE2MiwxNSArMTQzLDIx
IEBAIFdlYkluc3BlY3Rvci5GaW5kQmFubmVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRo
aXMuX3Jlc3VsdENvdW50TGFiZWwudGV4dENvbnRlbnQgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IjEgbWF0Y2giKTsKICAgICAgICAgZWxzZSBpZiAobnVtYmVyT2ZSZXN1bHRzID4gMSkKICAgICAg
ICAgICAgIHRoaXMuX3Jlc3VsdENvdW50TGFiZWwudGV4dENvbnRlbnQgPSBXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIiVkIG1hdGNoZXMiKS5mb3JtYXQobnVtYmVyT2ZSZXN1bHRzKTsKLSAgICB9LAor
ICAgIH0KIAogICAgIGdldCB0YXJnZXRFbGVtZW50KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0
aGlzLl90YXJnZXRFbGVtZW50OwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IHRhcmdldEVsZW1l
bnQoZWxlbWVudCkKICAgICB7CisgICAgICAgIGZ1bmN0aW9uIGRlbGF5ZWRXb3JrKCkKKyAgICAg
ICAgeworICAgICAgICAgICAgb2xkVGFyZ2V0RWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKFdlYklu
c3BlY3Rvci5GaW5kQmFubmVyLk5vVHJhbnNpdGlvblN0eWxlQ2xhc3NOYW1lKTsKKyAgICAgICAg
ICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShXZWJJbnNwZWN0b3IuRmluZEJhbm5l
ci5Ob1RyYW5zaXRpb25TdHlsZUNsYXNzTmFtZSk7CisgICAgICAgIH0KKwogICAgICAgICBpZiAo
dGhpcy5fdGFyZ2V0RWxlbWVudCkgewogICAgICAgICAgICAgdmFyIG9sZFRhcmdldEVsZW1lbnQg
PSB0aGlzLl90YXJnZXRFbGVtZW50OwogCkBAIC0xODEsMTIgKzE2OCw2IEBAIFdlYkluc3BlY3Rv
ci5GaW5kQmFubmVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xh
c3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuRmluZEJhbm5lci5Ob1RyYW5zaXRpb25TdHlsZUNsYXNz
TmFtZSk7CiAgICAgICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoV2ViSW5z
cGVjdG9yLkZpbmRCYW5uZXIuU2hvd2luZ1N0eWxlQ2xhc3NOYW1lKTsKIAotICAgICAgICAgICAg
ZnVuY3Rpb24gZGVsYXllZFdvcmsoKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIG9s
ZFRhcmdldEVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShXZWJJbnNwZWN0b3IuRmluZEJhbm5lci5O
b1RyYW5zaXRpb25TdHlsZUNsYXNzTmFtZSk7Ci0gICAgICAgICAgICAgICAgdGhpcy5fZWxlbWVu
dC5jbGFzc0xpc3QucmVtb3ZlKFdlYkluc3BlY3Rvci5GaW5kQmFubmVyLk5vVHJhbnNpdGlvblN0
eWxlQ2xhc3NOYW1lKTsKLSAgICAgICAgICAgIH0KLQogICAgICAgICAgICAgLy8gRGVsYXkgc28g
d2UgY2FuIHJlbW92ZSB0aGUgbm8gdHJhbnNpdGlvbiBzdHlsZSBjbGFzcyBhZnRlciB0aGUgb3Ro
ZXIgc3R5bGUgY2hhbmdlcyBhcmUgY29tbWl0dGVkLgogICAgICAgICAgICAgc2V0VGltZW91dChk
ZWxheWVkV29yay5iaW5kKHRoaXMpLCAwKTsKICAgICAgICAgfQpAQCAtMTk1LDE0ICsxNzYsMTQg
QEAgV2ViSW5zcGVjdG9yLkZpbmRCYW5uZXIucHJvdG90eXBlID0gewogCiAgICAgICAgIGlmICh0
aGlzLl90YXJnZXRFbGVtZW50KQogICAgICAgICAgICAgdGhpcy5fdGFyZ2V0RWxlbWVudC5jbGFz
c0xpc3QuYWRkKFdlYkluc3BlY3Rvci5GaW5kQmFubmVyLlN1cHBvcnRzRmluZEJhbm5lclN0eWxl
Q2xhc3NOYW1lKTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBzaG93aW5nKCkKICAgICB7CiAg
ICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyhXZWJJbnNwZWN0
b3IuRmluZEJhbm5lci5TaG93aW5nU3R5bGVDbGFzc05hbWUpOwotICAgIH0sCisgICAgfQogCi0g
ICAgc2hvdzogZnVuY3Rpb24oKQorICAgIHNob3coKQogICAgIHsKICAgICAgICAgY29uc29sZS5h
c3NlcnQodGhpcy5fdGFyZ2V0RWxlbWVudCk7CiAgICAgICAgIGlmICghdGhpcy5fdGFyZ2V0RWxl
bWVudCkKQEAgLTIyOCw5ICsyMDksOSBAQCBXZWJJbnNwZWN0b3IuRmluZEJhbm5lci5wcm90b3R5
cGUgPSB7CiAgICAgICAgIHNldFRpbWVvdXQoZGVsYXllZFdvcmsuYmluZCh0aGlzKSwgMCk7CiAK
ICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkZpbmRC
YW5uZXIuRXZlbnQuRGlkU2hvdyk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBoaWRlOiBmdW5jdGlv
bigpCisgICAgaGlkZSgpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl90YXJn
ZXRFbGVtZW50KTsKICAgICAgICAgaWYgKCF0aGlzLl90YXJnZXRFbGVtZW50KQpAQCAtMjQyLDI3
ICsyMjMsMjcgQEAgV2ViSW5zcGVjdG9yLkZpbmRCYW5uZXIucHJvdG90eXBlID0gewogICAgICAg
ICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoV2ViSW5zcGVjdG9yLkZpbmRCYW5uZXIu
U2hvd2luZ1N0eWxlQ2xhc3NOYW1lKTsKIAogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xp
c3RlbmVycyhXZWJJbnNwZWN0b3IuRmluZEJhbm5lci5FdmVudC5EaWRIaWRlKTsKLSAgICB9LAor
ICAgIH0KIAogICAgIC8vIFByaXZhdGUKIAotICAgIF9pbnB1dEZpZWxkS2V5RG93bjogZnVuY3Rp
b24oZXZlbnQpCisgICAgX2lucHV0RmllbGRLZXlEb3duKGV2ZW50KQogICAgIHsKICAgICAgICAg
aWYgKGV2ZW50LmtleUlkZW50aWZpZXIgPT09ICJTaGlmdCIpCiAgICAgICAgICAgICB0aGlzLl9z
ZWFyY2hCYWNrd2FyZHMgPSB0cnVlOwogICAgICAgICBlbHNlIGlmIChldmVudC5rZXlJZGVudGlm
aWVyID09PSAiRW50ZXIiKQogICAgICAgICAgICAgdGhpcy5fc2VhcmNoS2V5UHJlc3NlZCA9IHRy
dWU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfaW5wdXRGaWVsZEtleVVwOiBmdW5jdGlvbihldmVu
dCkKKyAgICBfaW5wdXRGaWVsZEtleVVwKGV2ZW50KQogICAgIHsKICAgICAgICAgaWYgKGV2ZW50
LmtleUlkZW50aWZpZXIgPT09ICJTaGlmdCIpCiAgICAgICAgICAgICB0aGlzLl9zZWFyY2hCYWNr
d2FyZHMgPSBmYWxzZTsKICAgICAgICAgZWxzZSBpZiAoZXZlbnQua2V5SWRlbnRpZmllciA9PT0g
IkVudGVyIikKICAgICAgICAgICAgIHRoaXMuX3NlYXJjaEtleVByZXNzZWQgPSBmYWxzZTsKLSAg
ICB9LAorICAgIH0KIAotICAgIF9pbnB1dEZpZWxkU2VhcmNoOiBmdW5jdGlvbihldmVudCkKKyAg
ICBfaW5wdXRGaWVsZFNlYXJjaChldmVudCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9pbnB1
dEZpZWxkLnZhbHVlKSB7CiAgICAgICAgICAgICBpZiAodGhpcy5fcHJldmlvdXNTZWFyY2hWYWx1
ZSAhPT0gdGhpcy5zZWFyY2hRdWVyeSkgewpAQCAtMjg1LDkgKzI2Niw5IEBAIFdlYkluc3BlY3Rv
ci5GaW5kQmFubmVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogCiAgICAgICAgIHRoaXMuX3By
ZXZpb3VzU2VhcmNoVmFsdWUgPSB0aGlzLnNlYXJjaFF1ZXJ5OwotICAgIH0sCisgICAgfQogCi0g
ICAgX3BvcHVsYXRlU2VhcmNoUXVlcnlGcm9tU2VsZWN0aW9uOiBmdW5jdGlvbihldmVudCkKKyAg
ICBfcG9wdWxhdGVTZWFyY2hRdWVyeUZyb21TZWxlY3Rpb24oZXZlbnQpCiAgICAgewogICAgICAg
ICBpZiAodGhpcy5fZGVsZWdhdGUgJiYgdHlwZW9mIHRoaXMuX2RlbGVnYXRlLmZpbmRCYW5uZXJT
ZWFyY2hRdWVyeUZvclNlbGVjdGlvbiA9PT0gImZ1bmN0aW9uIikgewogICAgICAgICAgICAgdmFy
IHF1ZXJ5ID0gdGhpcy5fZGVsZWdhdGUuZmluZEJhbm5lclNlYXJjaFF1ZXJ5Rm9yU2VsZWN0aW9u
KHRoaXMpOwpAQCAtMjk4LDI2ICsyNzksMjYgQEAgV2ViSW5zcGVjdG9yLkZpbmRCYW5uZXIucHJv
dG90eXBlID0gewogICAgICAgICAgICAgICAgICAgICB0aGlzLl9kZWxlZ2F0ZS5maW5kQmFubmVy
UGVyZm9ybVNlYXJjaCh0aGlzLCB0aGlzLnNlYXJjaFF1ZXJ5KTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQotICAgIH0sCisgICAgfQogCi0gICAgX3ByZXZpb3VzUmVzdWx0QnV0dG9uQ2xpY2tl
ZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX3ByZXZpb3VzUmVzdWx0QnV0dG9uQ2xpY2tlZChldmVu
dCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9kZWxlZ2F0ZSAmJiB0eXBlb2YgdGhpcy5fZGVs
ZWdhdGUuZmluZEJhbm5lclJldmVhbFByZXZpb3VzUmVzdWx0ID09PSAiZnVuY3Rpb24iKQogICAg
ICAgICAgICAgdGhpcy5fZGVsZWdhdGUuZmluZEJhbm5lclJldmVhbFByZXZpb3VzUmVzdWx0KHRo
aXMpOwotICAgIH0sCisgICAgfQogCi0gICAgX25leHRSZXN1bHRCdXR0b25DbGlja2VkOiBmdW5j
dGlvbihldmVudCkKKyAgICBfbmV4dFJlc3VsdEJ1dHRvbkNsaWNrZWQoZXZlbnQpCiAgICAgewog
ICAgICAgICBpZiAodGhpcy5fZGVsZWdhdGUgJiYgdHlwZW9mIHRoaXMuX2RlbGVnYXRlLmZpbmRC
YW5uZXJSZXZlYWxOZXh0UmVzdWx0ID09PSAiZnVuY3Rpb24iKQogICAgICAgICAgICAgdGhpcy5f
ZGVsZWdhdGUuZmluZEJhbm5lclJldmVhbE5leHRSZXN1bHQodGhpcyk7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBfZG9uZUJ1dHRvbkNsaWNrZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9kb25lQnV0
dG9uQ2xpY2tlZChldmVudCkKICAgICB7CiAgICAgICAgIHRoaXMuaGlkZSgpOwotICAgIH0sCisg
ICAgfQogCi0gICAgX2dlbmVyYXRlQnV0dG9uc0dseXBoc0lmTmVlZGVkOiBmdW5jdGlvbigpCisg
ICAgX2dlbmVyYXRlQnV0dG9uc0dseXBoc0lmTmVlZGVkKCkKICAgICB7CiAgICAgICAgIGlmIChX
ZWJJbnNwZWN0b3IuRmluZEJhbm5lci5fZ2VuZXJhdGVkQnV0dG9uc0dseXBocykKICAgICAgICAg
ICAgIHJldHVybjsKQEAgLTM0Miw0ICszMjMsMTYgQEAgV2ViSW5zcGVjdG9yLkZpbmRCYW5uZXIu
cHJvdG90eXBlID0gewogICAgIH0KIH07CiAKLVdlYkluc3BlY3Rvci5GaW5kQmFubmVyLnByb3Rv
dHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZTsKK1dlYkluc3Bl
Y3Rvci5GaW5kQmFubmVyLlN1cHBvcnRzRmluZEJhbm5lclN0eWxlQ2xhc3NOYW1lID0gInN1cHBv
cnRzLWZpbmQtYmFubmVyIjsKK1dlYkluc3BlY3Rvci5GaW5kQmFubmVyLlNob3dpbmdGaW5kQmFu
bmVyU3R5bGVDbGFzc05hbWUgPSAic2hvd2luZy1maW5kLWJhbm5lciI7CitXZWJJbnNwZWN0b3Iu
RmluZEJhbm5lci5Ob1RyYW5zaXRpb25TdHlsZUNsYXNzTmFtZSA9ICJuby1maW5kLWJhbm5lci10
cmFuc2l0aW9uIjsKK1dlYkluc3BlY3Rvci5GaW5kQmFubmVyLlNob3dpbmdTdHlsZUNsYXNzTmFt
ZSA9ICJzaG93aW5nIjsKK1dlYkluc3BlY3Rvci5GaW5kQmFubmVyLlNlZ21lbnRlZEJ1dHRvblN0
eWxlQ2xhc3NOYW1lID0gInNlZ21lbnRlZCI7CitXZWJJbnNwZWN0b3IuRmluZEJhbm5lci5MZWZ0
U2VnbWVudEJ1dHRvblN0eWxlQ2xhc3NOYW1lID0gImxlZnQiOworV2ViSW5zcGVjdG9yLkZpbmRC
YW5uZXIuUmlnaHRTZWdtZW50QnV0dG9uU3R5bGVDbGFzc05hbWUgPSAicmlnaHQiOworV2ViSW5z
cGVjdG9yLkZpbmRCYW5uZXIuU2VnbWVudEdseXBoU3R5bGVDbGFzc05hbWUgPSAiZ2x5cGgiOwor
CitXZWJJbnNwZWN0b3IuRmluZEJhbm5lci5FdmVudCA9IHsKKyAgICBEaWRTaG93OiAiZmluZC1i
YW5uZXItZGlkLXNob3ciLAorICAgIERpZEhpZGU6ICJmaW5kLWJhbm5lci1kaWQtaGlkZSIKK307
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9H
ZW5lcmFsVHJlZUVsZW1lbnRQYXRoQ29tcG9uZW50LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvR2VuZXJhbFRyZWVFbGVtZW50UGF0aENvbXBvbmVudC5qcwpp
bmRleCBkYjRhOTViOTJmZTM5NDdlYjgzNDUyZGE1NDcyOGE4MzI2YzJmN2JmLi40YTFkZTA1ZWI2
ZWYyZGZkMWY5ZWRkMTY5NzQwMGJmMDFmNGNmZmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9HZW5lcmFsVHJlZUVsZW1lbnRQYXRoQ29tcG9u
ZW50LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0dl
bmVyYWxUcmVlRWxlbWVudFBhdGhDb21wb25lbnQuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDIyICsyMywyMiBAQAogICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5HZW5lcmFs
VHJlZUVsZW1lbnRQYXRoQ29tcG9uZW50ID0gZnVuY3Rpb24oZ2VuZXJhbFRyZWVFbGVtZW50LCBy
ZXByZXNlbnRlZE9iamVjdCkgewotICAgIFdlYkluc3BlY3Rvci5IaWVyYXJjaGljYWxQYXRoQ29t
cG9uZW50LmNhbGwodGhpcywgZ2VuZXJhbFRyZWVFbGVtZW50Lm1haW5UaXRsZSwgZ2VuZXJhbFRy
ZWVFbGVtZW50LmNsYXNzTmFtZXMsIHJlcHJlc2VudGVkT2JqZWN0IHx8IGdlbmVyYWxUcmVlRWxl
bWVudC5yZXByZXNlbnRlZE9iamVjdCk7Ci0KLSAgICB0aGlzLl9nZW5lcmFsVHJlZUVsZW1lbnQg
PSBnZW5lcmFsVHJlZUVsZW1lbnQ7Ci0gICAgZ2VuZXJhbFRyZWVFbGVtZW50LmFkZEV2ZW50TGlz
dGVuZXIoV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudC5FdmVudC5NYWluVGl0bGVEaWRD
aGFuZ2UsIHRoaXMuX21haW5UaXRsZURpZENoYW5nZSwgdGhpcyk7Ci19OworV2ViSW5zcGVjdG9y
LkdlbmVyYWxUcmVlRWxlbWVudFBhdGhDb21wb25lbnQgPSBjbGFzcyBHZW5lcmFsVHJlZUVsZW1l
bnRQYXRoQ29tcG9uZW50IGV4dGVuZHMgV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhDb21w
b25lbnQKK3sKKyAgICBjb25zdHJ1Y3RvcihnZW5lcmFsVHJlZUVsZW1lbnQsIHJlcHJlc2VudGVk
T2JqZWN0KQorICAgIHsKKyAgICAgICAgc3VwZXIoZ2VuZXJhbFRyZWVFbGVtZW50Lm1haW5UaXRs
ZSwgZ2VuZXJhbFRyZWVFbGVtZW50LmNsYXNzTmFtZXMsIHJlcHJlc2VudGVkT2JqZWN0IHx8IGdl
bmVyYWxUcmVlRWxlbWVudC5yZXByZXNlbnRlZE9iamVjdCk7CiAKLVdlYkluc3BlY3Rvci5HZW5l
cmFsVHJlZUVsZW1lbnRQYXRoQ29tcG9uZW50LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3Rv
cjogV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudFBhdGhDb21wb25lbnQsCisgICAgICAg
IHRoaXMuX2dlbmVyYWxUcmVlRWxlbWVudCA9IGdlbmVyYWxUcmVlRWxlbWVudDsKKyAgICAgICAg
Z2VuZXJhbFRyZWVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkdlbmVyYWxU
cmVlRWxlbWVudC5FdmVudC5NYWluVGl0bGVEaWRDaGFuZ2UsIHRoaXMuX21haW5UaXRsZURpZENo
YW5nZSwgdGhpcyk7CisgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgZ2VuZXJhbFRy
ZWVFbGVtZW50KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9nZW5lcmFsVHJlZUVsZW1l
bnQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgcHJldmlvdXNTaWJsaW5nKCkKICAgICB7CkBA
IC01MCw3ICs1MCw3IEBAIFdlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnRQYXRoQ29tcG9u
ZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybiBudWxsOwogCiAgICAgICAgIHJl
dHVybiBuZXcgV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudFBhdGhDb21wb25lbnQocHJl
dmlvdXNTaWJsaW5nKTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBuZXh0U2libGluZygpCiAg
ICAgewpAQCAtNjIsMTQgKzYyLDEyIEBAIFdlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnRQ
YXRoQ29tcG9uZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybiBudWxsOwogCiAg
ICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudFBhdGhDb21w
b25lbnQobmV4dFNpYmxpbmcpOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJpdmF0ZQogCi0g
ICAgX21haW5UaXRsZURpZENoYW5nZTogZnVuY3Rpb24oZXZlbnQpCisgICAgX21haW5UaXRsZURp
ZENoYW5nZShldmVudCkKICAgICB7CiAgICAgICAgIHRoaXMuZGlzcGxheU5hbWUgPSB0aGlzLl9n
ZW5lcmFsVHJlZUVsZW1lbnQubWFpblRpdGxlOwogICAgIH0KIH07Ci0KLVdlYkluc3BlY3Rvci5H
ZW5lcmFsVHJlZUVsZW1lbnRQYXRoQ29tcG9uZW50LnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJ
bnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0aENvbXBvbmVudC5wcm90b3R5cGU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Hb1RvTGluZURpYWxv
Zy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0dvVG9MaW5l
RGlhbG9nLmpzCmluZGV4IGY1ZjdkNmQ0MWUxMzk4YTNjNjJjMWMzN2I2MmIzYzU0YTAxYThkZDQu
LjAyYmZjYzJkYTJiMDliZThkOTRkMDM0MjNmMGY0N2YxMmM2N2MzNjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0dvVG9MaW5lRGlhbG9nLmpz
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0dvVG9MaW5l
RGlhbG9nLmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0yMyw1MCArMjMsNDMgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuR29Ub0xpbmVEaWFsb2cgPSBmdW5jdGlvbigpCitX
ZWJJbnNwZWN0b3IuR29Ub0xpbmVEaWFsb2cgPSBjbGFzcyBHb1RvTGluZURpYWxvZyBleHRlbmRz
IFdlYkluc3BlY3Rvci5PYmplY3QKIHsKLSAgICAvLyBGSVhNRTogQ29udmVydCB0aGlzIHRvIGEg
V2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcywgYW5kIGNhbGwgc3VwZXIoKS4KLSAgICAvLyBX
ZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7Ci0KLSAgICB0aGlzLl9lbGVtZW50ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgdGhpcy5fZWxlbWVudC5jbGFzc05hbWUg
PSBXZWJJbnNwZWN0b3IuR29Ub0xpbmVEaWFsb2cuU3R5bGVDbGFzc05hbWU7Ci0KLSAgICB2YXIg
ZmllbGQgPSB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImRpdiIpKTsKLQotICAgIHRoaXMuX2lucHV0ID0gZmllbGQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiaW5wdXQiKSk7Ci0gICAgdGhpcy5faW5wdXQudHlwZSA9ICJ0ZXh0IjsK
LSAgICB0aGlzLl9pbnB1dC5wbGFjZWhvbGRlciA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiTGlu
ZSBOdW1iZXIiKTsKLSAgICB0aGlzLl9pbnB1dC5zcGVsbGNoZWNrID0gZmFsc2U7CisgICAgY29u
c3RydWN0b3IoKQorICAgIHsKKyAgICAgICAgc3VwZXIoKTsKIAotICAgIHRoaXMuX2NsZWFySWNv
biA9IGZpZWxkLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImltZyIpKTsKKyAg
ICAgICAgdGhpcy5fZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAg
ICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTmFtZSA9ICJnby10by1saW5lLWRpYWxvZyI7CiAKLSAg
ICB0aGlzLl9pbnB1dC5hZGRFdmVudExpc3RlbmVyKCJpbnB1dCIsIHRoaXMpOwotICAgIHRoaXMu
X2lucHV0LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLCB0aGlzKTsKLSAgICB0aGlzLl9pbnB1
dC5hZGRFdmVudExpc3RlbmVyKCJibHVyIiwgdGhpcyk7Ci0gICAgdGhpcy5fY2xlYXJJY29uLmFk
ZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsIHRoaXMpOwotICAgIHRoaXMuX2NsZWFySWNvbi5h
ZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMpOworICAgICAgICB2YXIgZmllbGQgPSB0aGlz
Ll9lbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpKTsKIAot
ICAgIHRoaXMuX2Rpc21pc3NpbmcgPSBmYWxzZTsKLX07CisgICAgICAgIHRoaXMuX2lucHV0ID0g
ZmllbGQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKSk7CisgICAg
ICAgIHRoaXMuX2lucHV0LnR5cGUgPSAidGV4dCI7CisgICAgICAgIHRoaXMuX2lucHV0LnBsYWNl
aG9sZGVyID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJMaW5lIE51bWJlciIpOworICAgICAgICB0
aGlzLl9pbnB1dC5zcGVsbGNoZWNrID0gZmFsc2U7CiAKLVdlYkluc3BlY3Rvci5Hb1RvTGluZURp
YWxvZy5TdHlsZUNsYXNzTmFtZSA9ICJnby10by1saW5lLWRpYWxvZyI7Ci1XZWJJbnNwZWN0b3Iu
R29Ub0xpbmVEaWFsb2cuTm9uRW1wdHlDbGFzc05hbWUgPSAibm9uLWVtcHR5IjsKKyAgICAgICAg
dGhpcy5fY2xlYXJJY29uID0gZmllbGQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiaW1nIikpOwogCi1XZWJJbnNwZWN0b3IuR29Ub0xpbmVEaWFsb2cucHJvdG90eXBlID0gewot
ICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuR29Ub0xpbmVEaWFsb2csCisgICAgICAgIHRo
aXMuX2lucHV0LmFkZEV2ZW50TGlzdGVuZXIoImlucHV0IiwgdGhpcyk7CisgICAgICAgIHRoaXMu
X2lucHV0LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLCB0aGlzKTsKKyAgICAgICAgdGhpcy5f
aW5wdXQuYWRkRXZlbnRMaXN0ZW5lcigiYmx1ciIsIHRoaXMpOworICAgICAgICB0aGlzLl9jbGVh
ckljb24uYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwgdGhpcyk7CisgICAgICAgIHRoaXMu
X2NsZWFySWNvbi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMpOwogCi0gICAgX19wcm90
b19fOiBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZSwKKyAgICAgICAgdGhpcy5fZGlzbWlz
c2luZyA9IGZhbHNlOworICAgIH0KIAogICAgIC8vIFB1YmxpYwogCi0gICAgcHJlc2VudDogZnVu
Y3Rpb24ocGFyZW50KQorICAgIHByZXNlbnQocGFyZW50KQogICAgIHsKICAgICAgICAgcGFyZW50
LmFwcGVuZENoaWxkKHRoaXMuX2VsZW1lbnQpOwogICAgICAgICB0aGlzLl9pbnB1dC5mb2N1cygp
OwogICAgICAgICB0aGlzLl9jbGVhcigpOwotICAgIH0sCisgICAgfQogCi0gICAgZGlzbWlzczog
ZnVuY3Rpb24oKQorICAgIGRpc21pc3MoKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX2Rpc21p
c3NpbmcpCiAgICAgICAgICAgICByZXR1cm47CkBAIC04MywxMSArNzYsMTEgQEAgV2ViSW5zcGVj
dG9yLkdvVG9MaW5lRGlhbG9nLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuZGVsZWdh
dGUuZ29Ub0xpbmVEaWFsb2dXYXNEaXNtaXNzZWQodGhpcyk7CiAKICAgICAgICAgdGhpcy5fZGlz
bWlzc2luZyA9IGZhbHNlOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJvdGVjdGVkCiAKLSAg
ICBoYW5kbGVFdmVudDogZnVuY3Rpb24oZXZlbnQpCisgICAgaGFuZGxlRXZlbnQoZXZlbnQpCiAg
ICAgewogICAgICAgICBzd2l0Y2ggKGV2ZW50LnR5cGUpIHsKICAgICAgICAgY2FzZSAiaW5wdXQi
OgpAQCAtMTA2LDI1ICs5OSwyNyBAQCBXZWJJbnNwZWN0b3IuR29Ub0xpbmVEaWFsb2cucHJvdG90
eXBlID0gewogICAgICAgICAgICAgdGhpcy5faGFuZGxlQ2xpY2tFdmVudChldmVudCk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJpdmF0
ZQogCi0gICAgX2hhbmRsZUlucHV0RXZlbnQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9oYW5kbGVJ
bnB1dEV2ZW50KGV2ZW50KQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX2lucHV0LnZhbHVlID09
PSAiIikKICAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShXZWJJbnNw
ZWN0b3IuR29Ub0xpbmVEaWFsb2cuTm9uRW1wdHlDbGFzc05hbWUpOwogICAgICAgICBlbHNlCiAg
ICAgICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLkdvVG9M
aW5lRGlhbG9nLk5vbkVtcHR5Q2xhc3NOYW1lKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9oYW5k
bGVLZXlkb3duRXZlbnQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9oYW5kbGVLZXlkb3duRXZlbnQo
ZXZlbnQpCiAgICAgewogICAgICAgICBpZiAoZXZlbnQua2V5Q29kZSA9PT0gV2ViSW5zcGVjdG9y
LktleWJvYXJkU2hvcnRjdXQuS2V5LkVzY2FwZS5rZXlDb2RlKSB7CiAgICAgICAgICAgICBpZiAo
dGhpcy5faW5wdXQudmFsdWUgPT09ICIiKQogICAgICAgICAgICAgICAgIHRoaXMuZGlzbWlzcygp
OwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHRoaXMuX2NsZWFyKCk7CisKKyAg
ICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgIH0gZWxzZSBpZiAoZXZl
bnQua2V5Q29kZSA9PT0gV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuS2V5LkVudGVyLmtl
eUNvZGUpIHsKICAgICAgICAgICAgIHZhciB2YWx1ZSA9IHBhcnNlSW50KHRoaXMuX2lucHV0LnZh
bHVlLCAxMCk7CiAKQEAgLTEzOSwzMSArMTM0LDM0IEBAIFdlYkluc3BlY3Rvci5Hb1RvTGluZURp
YWxvZy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIHRoaXMuX2lu
cHV0LnNlbGVjdCgpOworCiAgICAgICAgICAgICBJbnNwZWN0b3JGcm9udGVuZEhvc3QuYmVlcCgp
OwogICAgICAgICB9Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfaGFuZGxlQmx1ckV2ZW50OiBmdW5j
dGlvbihldmVudCkKKyAgICBfaGFuZGxlQmx1ckV2ZW50KGV2ZW50KQogICAgIHsKICAgICAgICAg
dGhpcy5kaXNtaXNzKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfaGFuZGxlTW91c2Vkb3duRXZl
bnQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9oYW5kbGVNb3VzZWRvd25FdmVudChldmVudCkKICAg
ICB7CiAgICAgICAgIHRoaXMuX2lucHV0LnNlbGVjdCgpOwogICAgICAgICAvLyBUaGlzIGVuc3Vy
ZXMgd2UgZG9uJ3QgZ2V0IGEgImJsdXIiIGV2ZW50IHRyaWdnZXJlZCBmb3IgdGhlIHRleHQgZmll
bGQKICAgICAgICAgLy8gd2hpY2ggd291bGQgZW5kIHVwIGRpbWlzc2luZyB0aGUgZGlhbG9nLCB3
aGljaCBpcyBub3QgdGhlIGludGVudC4KICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsK
LSAgICB9LAorICAgIH0KIAotICAgIF9oYW5kbGVDbGlja0V2ZW50OiBmdW5jdGlvbihldmVudCkK
KyAgICBfaGFuZGxlQ2xpY2tFdmVudChldmVudCkKICAgICB7CiAgICAgICAgIHRoaXMuX2NsZWFy
KCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfY2xlYXI6IGZ1bmN0aW9uKCkKKyAgICBfY2xlYXIo
KQogICAgIHsKICAgICAgICAgdGhpcy5faW5wdXQudmFsdWUgPSAiIjsKICAgICAgICAgdGhpcy5f
ZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKFdlYkluc3BlY3Rvci5Hb1RvTGluZURpYWxvZy5Ob25F
bXB0eUNsYXNzTmFtZSk7CiAgICAgfQogfTsKKworV2ViSW5zcGVjdG9yLkdvVG9MaW5lRGlhbG9n
Lk5vbkVtcHR5Q2xhc3NOYW1lID0gIm5vbi1lbXB0eSI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9HcmFkaWVudFNsaWRlci5qcyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0dyYWRpZW50U2xpZGVyLmpzCmlu
ZGV4IGM4OTBkNTZkYjMwZTM4OTlmMTdiNDFmNWQxMjI5YjAyMzgwMzk4NmUuLmZmODc4MjJmYjhk
M2FiOTdhYmRkYWE5NmY3YmNkMTMyYTU4MGNlMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0dyYWRpZW50U2xpZGVyLmpzCisrKyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0dyYWRpZW50U2xpZGVyLmpzCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuICBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTUgQXBwbGUgSW5jLiAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MjYsMzAgKzI2LDIzIEBACiAgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5HcmFkaWVu
dFNsaWRlciA9IGZ1bmN0aW9uKGRlbGVnYXRlKQorV2ViSW5zcGVjdG9yLkdyYWRpZW50U2xpZGVy
ID0gY2xhc3MgR3JhZGllbnRTbGlkZXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiB7Ci0g
ICAgdGhpcy5kZWxlZ2F0ZSA9IGRlbGVnYXRlOwotICAgIAotICAgIHRoaXMuX2VsZW1lbnQgPSBu
dWxsOwotICAgIHRoaXMuX3N0b3BzID0gW107Ci0gICAgdGhpcy5fa25vYnMgPSBbXTsKLSAgICAK
LSAgICB0aGlzLl9zZWxlY3RlZEtub2IgPSBudWxsOwotICAgIHRoaXMuX2NhbnZhcyA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpOworICAgIGNvbnN0cnVjdG9yKGRlbGVnYXRlKQor
ICAgIHsKKyAgICAgICAgc3VwZXIoKTsKIAotICAgIHRoaXMuX2tleWJvYXJkU2hvcnRjdXRFc2Mg
PSBuZXcgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQobnVsbCwgV2ViSW5zcGVjdG9yLktl
eWJvYXJkU2hvcnRjdXQuS2V5LkVzY2FwZSk7Ci19CisgICAgICAgIHRoaXMuZGVsZWdhdGUgPSBk
ZWxlZ2F0ZTsKIAotV2ViSW5zcGVjdG9yLkdyYWRpZW50U2xpZGVyLldpZHRoID0gMjM4OwotV2Vi
SW5zcGVjdG9yLkdyYWRpZW50U2xpZGVyLkhlaWdodCA9IDE5OworICAgICAgICB0aGlzLl9lbGVt
ZW50ID0gbnVsbDsKKyAgICAgICAgdGhpcy5fc3RvcHMgPSBbXTsKKyAgICAgICAgdGhpcy5fa25v
YnMgPSBbXTsKIAotV2ViSW5zcGVjdG9yLkdyYWRpZW50U2xpZGVyLlN0eWxlQ2xhc3NOYW1lID0g
ImdyYWRpZW50LXNsaWRlciI7Ci1XZWJJbnNwZWN0b3IuR3JhZGllbnRTbGlkZXIuQWRkQXJlYUNs
YXNzTmFtZSA9ICJhZGQtYXJlYSI7Ci1XZWJJbnNwZWN0b3IuR3JhZGllbnRTbGlkZXIuRGV0YWNo
aW5nQ2xhc3NOYW1lID0gImRldGFjaGluZyI7Ci1XZWJJbnNwZWN0b3IuR3JhZGllbnRTbGlkZXIu
U2hhZG93Q2xhc3NOYW1lID0gInNoYWRvdyI7CisgICAgICAgIHRoaXMuX3NlbGVjdGVkS25vYiA9
IG51bGw7CisgICAgICAgIHRoaXMuX2NhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNh
bnZhcyIpOwogCi1XZWJJbnNwZWN0b3IuR3JhZGllbnRTbGlkZXIucHJvdG90eXBlID0gewotICAg
IGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuR3JhZGllbnRTbGlkZXIsCisgICAgICAgIHRoaXMu
X2tleWJvYXJkU2hvcnRjdXRFc2MgPSBuZXcgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQo
bnVsbCwgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuS2V5LkVzY2FwZSk7CisgICAgfQog
CiAgICAgLy8gUHVibGljCiAKQEAgLTU3LDkgKzUwLDkgQEAgV2ViSW5zcGVjdG9yLkdyYWRpZW50
U2xpZGVyLnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fZWxlbWVudCkg
ewogICAgICAgICAgICAgdGhpcy5fZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRp
diIpOwotICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc05hbWUgPSBXZWJJbnNwZWN0b3Iu
R3JhZGllbnRTbGlkZXIuU3R5bGVDbGFzc05hbWU7CisgICAgICAgICAgICB0aGlzLl9lbGVtZW50
LmNsYXNzTmFtZSA9ICJncmFkaWVudC1zbGlkZXIiOwogICAgICAgICAgICAgdGhpcy5fZWxlbWVu
dC5hcHBlbmRDaGlsZCh0aGlzLl9jYW52YXMpOwotICAgICAgICAgICAgCisKICAgICAgICAgICAg
IHRoaXMuX2FkZEFyZWEgPSB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImRpdiIpKTsKICAgICAgICAgICAgIHRoaXMuX2FkZEFyZWEuYWRkRXZlbnRMaXN0
ZW5lcigibW91c2VvdmVyIiwgdGhpcyk7CiAgICAgICAgICAgICB0aGlzLl9hZGRBcmVhLmFkZEV2
ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIsIHRoaXMpOwpAQCAtNjgsMjggKzYxLDI4IEBAIFdlYklu
c3BlY3Rvci5HcmFkaWVudFNsaWRlci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9h
ZGRBcmVhLmNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5HcmFkaWVudFNsaWRlci5BZGRBcmVhQ2xh
c3NOYW1lOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50OwotICAgIH0s
CisgICAgfQogCiAgICAgZ2V0IHN0b3BzKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9z
dG9wczsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCBzdG9wcyhzdG9wcykKICAgICB7CiAgICAg
ICAgIHRoaXMuX3N0b3BzID0gc3RvcHM7CiAKICAgICAgICAgdGhpcy5fdXBkYXRlU3RvcHMoKTsK
LSAgICB9LAorICAgIH0KIAogICAgIGdldCBzZWxlY3RlZFN0b3AoKQogICAgIHsKICAgICAgICAg
cmV0dXJuIHRoaXMuX3NlbGVjdGVkS25vYiA/IHRoaXMuX3NlbGVjdGVkS25vYi5zdG9wIDogbnVs
bDsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByb3RlY3RlZAogCi0gICAgaGFuZGxlRXZlbnQ6
IGZ1bmN0aW9uKGV2ZW50KQorICAgIGhhbmRsZUV2ZW50KGV2ZW50KQogICAgIHsKICAgICAgICAg
c3dpdGNoIChldmVudC50eXBlKSB7CiAgICAgICAgIGNhc2UgIm1vdXNlb3ZlciI6CkBAIC0xMDUs
OSArOTgsOSBAQCBXZWJJbnNwZWN0b3IuR3JhZGllbnRTbGlkZXIucHJvdG90eXBlID0gewogICAg
ICAgICAgICAgdGhpcy5faGFuZGxlQ2xpY2soZXZlbnQpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KLSAgICB9LAorICAgIH0KIAotICAgIGhhbmRsZUtleWRvd25FdmVudDogZnVuY3Rp
b24oZXZlbnQpCisgICAgaGFuZGxlS2V5ZG93bkV2ZW50KGV2ZW50KQogICAgIHsKICAgICAgICAg
aWYgKCF0aGlzLl9rZXlib2FyZFNob3J0Y3V0RXNjLm1hdGNoZXNFdmVudChldmVudCkgfHwgIXRo
aXMuX3NlbGVjdGVkS25vYiB8fCAhdGhpcy5fc2VsZWN0ZWRLbm9iLnNlbGVjdGVkKQogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTE1LDIxICsxMDgsMjEgQEAgV2ViSW5zcGVjdG9yLkdy
YWRpZW50U2xpZGVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fc2VsZWN0ZWRLbm9iLnNl
bGVjdGVkID0gZmFsc2U7CiAKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBrbm9iWERpZENoYW5nZTogZnVuY3Rpb24oa25vYikKKyAgICBrbm9iWERpZENoYW5nZShr
bm9iKQogICAgIHsKICAgICAgICAga25vYi5zdG9wLm9mZnNldCA9IGtub2IueCAvIFdlYkluc3Bl
Y3Rvci5HcmFkaWVudFNsaWRlci5XaWR0aDsKICAgICAgICAgdGhpcy5fc29ydFN0b3BzKCk7CiAg
ICAgICAgIHRoaXMuX3VwZGF0ZUNhbnZhcygpOwotICAgIH0sCisgICAgfQogCi0gICAga25vYkNh
bkRldGFjaDogZnVuY3Rpb24oa25vYikKKyAgICBrbm9iQ2FuRGV0YWNoKGtub2IpCiAgICAgewog
ICAgICAgICByZXR1cm4gdGhpcy5fa25vYnMubGVuZ3RoID4gMjsKLSAgICB9LAorICAgIH0KIAot
ICAgIGtub2JXaWxsRGV0YWNoOiBmdW5jdGlvbihrbm9iKQorICAgIGtub2JXaWxsRGV0YWNoKGtu
b2IpCiAgICAgewogICAgICAgICBrbm9iLmVsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0
b3IuR3JhZGllbnRTbGlkZXIuRGV0YWNoaW5nQ2xhc3NOYW1lKTsKICAgICAgICAgCkBAIC0xMzcs
OSArMTMwLDkgQEAgV2ViSW5zcGVjdG9yLkdyYWRpZW50U2xpZGVyLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgdGhpcy5fa25vYnMucmVtb3ZlKGtub2IpOwogICAgICAgICB0aGlzLl9zb3J0U3RvcHMo
KTsKICAgICAgICAgdGhpcy5fdXBkYXRlQ2FudmFzKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBr
bm9iU2VsZWN0aW9uQ2hhbmdlZDogZnVuY3Rpb24oa25vYikKKyAgICBrbm9iU2VsZWN0aW9uQ2hh
bmdlZChrbm9iKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGVkS25vYiAmJiB0aGlz
Ll9zZWxlY3RlZEtub2IgIT09IGtub2IgJiYga25vYi5zZWxlY3RlZCkKICAgICAgICAgICAgIHRo
aXMuX3NlbGVjdGVkS25vYi5zZWxlY3RlZCA9IGZhbHNlOwpAQCAtMTUzLDMwICsxNDYsMzAgQEAg
V2ViSW5zcGVjdG9yLkdyYWRpZW50U2xpZGVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIFdl
Ykluc3BlY3Rvci5hZGRXaW5kb3dLZXlkb3duTGlzdGVuZXIodGhpcyk7CiAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5yZW1vdmVXaW5kb3dLZXlkb3duTGlzdGVuZXIodGhp
cyk7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcml2YXRlCiAKLSAgICBfaGFuZGxlTW91c2Vv
dmVyOiBmdW5jdGlvbihldmVudCkKKyAgICBfaGFuZGxlTW91c2VvdmVyKGV2ZW50KQogICAgIHsK
ICAgICAgICAgdGhpcy5fdXBkYXRlU2hhZG93S25vYihldmVudCk7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBfaGFuZGxlTW91c2Vtb3ZlOiBmdW5jdGlvbihldmVudCkKKyAgICBfaGFuZGxlTW91c2Vt
b3ZlKGV2ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5fdXBkYXRlU2hhZG93S25vYihldmVudCk7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfaGFuZGxlTW91c2VvdXQ6IGZ1bmN0aW9uKGV2ZW50KQor
ICAgIF9oYW5kbGVNb3VzZW91dChldmVudCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fc2hh
ZG93S25vYikKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICB0aGlzLl9zaGFkb3dLbm9i
LmVsZW1lbnQucmVtb3ZlKCk7CiAgICAgICAgIGRlbGV0ZSB0aGlzLl9zaGFkb3dLbm9iOwotICAg
IH0sCisgICAgfQogCi0gICAgX2hhbmRsZUNsaWNrOiBmdW5jdGlvbihldmVudCkKKyAgICBfaGFu
ZGxlQ2xpY2soZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLl91cGRhdGVTaGFkb3dLbm9iKGV2
ZW50KTsKIApAQCAtMTkyLDkgKzE4NSw5IEBAIFdlYkluc3BlY3Rvci5HcmFkaWVudFNsaWRlci5w
cm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2tub2JzW3RoaXMuX3N0b3BzLmluZGV4T2Yoc3Rv
cCldLnNlbGVjdGVkID0gdHJ1ZTsKIAogICAgICAgICBkZWxldGUgdGhpcy5fc2hhZG93S25vYjsK
LSAgICB9LAorICAgIH0KIAotICAgIF91cGRhdGVTaGFkb3dLbm9iOiBmdW5jdGlvbihldmVudCkK
KyAgICBfdXBkYXRlU2hhZG93S25vYihldmVudCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5f
c2hhZG93S25vYikgewogICAgICAgICAgICAgdGhpcy5fc2hhZG93S25vYiA9IG5ldyBXZWJJbnNw
ZWN0b3IuR3JhZGllbnRTbGlkZXJLbm9iKHRoaXMpOwpAQCAtMjA2LDIyICsxOTksMjIgQEAgV2Vi
SW5zcGVjdG9yLkdyYWRpZW50U2xpZGVyLnByb3RvdHlwZSA9IHsKIAogICAgICAgICB2YXIgY29s
b3JEYXRhID0gdGhpcy5fY2FudmFzLmdldENvbnRleHQoIjJkIikuZ2V0SW1hZ2VEYXRhKHRoaXMu
X3NoYWRvd0tub2IueCAtIDEsIDAsIDEsIDEpLmRhdGE7CiAgICAgICAgIHRoaXMuX3NoYWRvd0tu
b2Iud2VsbENvbG9yID0gbmV3IFdlYkluc3BlY3Rvci5Db2xvcihXZWJJbnNwZWN0b3IuQ29sb3Iu
Rm9ybWF0LlJHQiwgW2NvbG9yRGF0YVswXSwgY29sb3JEYXRhWzFdLCBjb2xvckRhdGFbMl0sIGNv
bG9yRGF0YVszXSAvIDI1NV0pOwotICAgIH0sCisgICAgfQogCi0gICAgX3NvcnRTdG9wczogZnVu
Y3Rpb24oKQorICAgIF9zb3J0U3RvcHMoKQogICAgIHsKICAgICAgICAgdGhpcy5fc3RvcHMuc29y
dChmdW5jdGlvbihhLCBiKSB7CiAgICAgICAgICAgICByZXR1cm4gYS5vZmZzZXQgLSBiLm9mZnNl
dDsKICAgICAgICAgfSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdXBkYXRlU3RvcHM6IGZ1bmN0
aW9uKCkKKyAgICBfdXBkYXRlU3RvcHMoKQogICAgIHsKICAgICAgICAgdGhpcy5fdXBkYXRlQ2Fu
dmFzKCk7CiAgICAgICAgIHRoaXMuX3VwZGF0ZUtub2JzKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICBfdXBkYXRlQ2FudmFzOiBmdW5jdGlvbigpCisgICAgX3VwZGF0ZUNhbnZhcygpCiAgICAgewog
ICAgICAgICB2YXIgdyA9IFdlYkluc3BlY3Rvci5HcmFkaWVudFNsaWRlci5XaWR0aDsKICAgICAg
ICAgdmFyIGggPSBXZWJJbnNwZWN0b3IuR3JhZGllbnRTbGlkZXIuSGVpZ2h0OwpAQCAtMjQwLDkg
KzIzMyw5IEBAIFdlYkluc3BlY3Rvci5HcmFkaWVudFNsaWRlci5wcm90b3R5cGUgPSB7CiAKICAg
ICAgICAgaWYgKHRoaXMuZGVsZWdhdGUgJiYgdHlwZW9mIHRoaXMuZGVsZWdhdGUuZ3JhZGllbnRT
bGlkZXJTdG9wc0RpZENoYW5nZSA9PT0gImZ1bmN0aW9uIikKICAgICAgICAgICAgIHRoaXMuZGVs
ZWdhdGUuZ3JhZGllbnRTbGlkZXJTdG9wc0RpZENoYW5nZSh0aGlzKTsKLSAgICB9LAorICAgIH0K
IAotICAgIF91cGRhdGVLbm9iczogZnVuY3Rpb24oKQorICAgIF91cGRhdGVLbm9icygpCiAgICAg
ewogICAgICAgICB2YXIgc2VsZWN0ZWRTdG9wID0gdGhpcy5fc2VsZWN0ZWRLbm9iID8gdGhpcy5f
c2VsZWN0ZWRLbm9iLnN0b3AgOiBudWxsOwogICAgICAgICAKQEAgLTI2NCw4NyArMjU3LDkxIEBA
IFdlYkluc3BlY3Rvci5HcmFkaWVudFNsaWRlci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBr
bm9iLnNlbGVjdGVkID0gc3RvcCA9PT0gc2VsZWN0ZWRTdG9wOwogICAgICAgICB9CiAgICAgfQot
fQorfTsKKworV2ViSW5zcGVjdG9yLkdyYWRpZW50U2xpZGVyLldpZHRoID0gMjM4OworV2ViSW5z
cGVjdG9yLkdyYWRpZW50U2xpZGVyLkhlaWdodCA9IDE5OwogCi1XZWJJbnNwZWN0b3IuR3JhZGll
bnRTbGlkZXJLbm9iID0gZnVuY3Rpb24oZGVsZWdhdGUpCitXZWJJbnNwZWN0b3IuR3JhZGllbnRT
bGlkZXIuQWRkQXJlYUNsYXNzTmFtZSA9ICJhZGQtYXJlYSI7CitXZWJJbnNwZWN0b3IuR3JhZGll
bnRTbGlkZXIuRGV0YWNoaW5nQ2xhc3NOYW1lID0gImRldGFjaGluZyI7CitXZWJJbnNwZWN0b3Iu
R3JhZGllbnRTbGlkZXIuU2hhZG93Q2xhc3NOYW1lID0gInNoYWRvdyI7CisKK1dlYkluc3BlY3Rv
ci5HcmFkaWVudFNsaWRlcktub2IgPSBjbGFzcyBHcmFkaWVudFNsaWRlcktub2IgZXh0ZW5kcyBX
ZWJJbnNwZWN0b3IuT2JqZWN0CiB7Ci0gICAgdGhpcy5feCA9IDA7Ci0gICAgdGhpcy5feSA9IDA7
Ci0gICAgdGhpcy5fc3RvcCA9IG51bGw7Ci0gICAgCi0gICAgdGhpcy5kZWxlZ2F0ZSA9IGRlbGVn
YXRlOwotICAgIAotICAgIHRoaXMuX2VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJk
aXYiKTsKLSAgICB0aGlzLl9lbGVtZW50LmNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5HcmFkaWVu
dFNsaWRlcktub2IuU3R5bGVDbGFzc05hbWU7CisgICAgY29uc3RydWN0b3IoZGVsZWdhdGUpCisg
ICAgeworICAgICAgICBzdXBlcigpOwogCi0gICAgLy8gQ2hlY2tlcnMgcGF0dGVybi4KLSAgICB0
aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImltZyIpKTsK
KyAgICAgICAgdGhpcy5feCA9IDA7CisgICAgICAgIHRoaXMuX3kgPSAwOworICAgICAgICB0aGlz
Ll9zdG9wID0gbnVsbDsKIAotICAgIHRoaXMuX3dlbGwgPSB0aGlzLl9lbGVtZW50LmFwcGVuZENo
aWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpKTsKKyAgICAgICAgdGhpcy5kZWxlZ2F0
ZSA9IGRlbGVnYXRlOwogCi0gICAgdGhpcy5fZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3Vz
ZWRvd24iLCB0aGlzKTsKLX07CisgICAgICAgIHRoaXMuX2VsZW1lbnQgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc05hbWUgPSAiZ3Jh
ZGllbnQtc2xpZGVyLWtub2IiOwogCi1XZWJJbnNwZWN0b3IuR3JhZGllbnRTbGlkZXJLbm9iLlN0
eWxlQ2xhc3NOYW1lID0gImdyYWRpZW50LXNsaWRlci1rbm9iIjsKLVdlYkluc3BlY3Rvci5HcmFk
aWVudFNsaWRlcktub2IuU2VsZWN0ZWRDbGFzc05hbWUgPSAic2VsZWN0ZWQiOwotV2ViSW5zcGVj
dG9yLkdyYWRpZW50U2xpZGVyS25vYi5GYWRlT3V0Q2xhc3NOYW1lID0gImZhZGUtb3V0IjsKKyAg
ICAgICAgLy8gQ2hlY2tlcnMgcGF0dGVybi4KKyAgICAgICAgdGhpcy5fZWxlbWVudC5hcHBlbmRD
aGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbWciKSk7CiAKLVdlYkluc3BlY3Rvci5HcmFk
aWVudFNsaWRlcktub2IucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0
b3IuR3JhZGllbnRTbGlkZXJLbm9iLAorICAgICAgICB0aGlzLl93ZWxsID0gdGhpcy5fZWxlbWVu
dC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSk7CisKKyAgICAgICAg
dGhpcy5fZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCB0aGlzKTsKKyAgICB9
CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBlbGVtZW50KCkKICAgICB7CiAgICAgICAgIHJl
dHVybiB0aGlzLl9lbGVtZW50OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHN0b3AoKQogICAg
IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3N0b3A7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQg
c3RvcChzdG9wKQogICAgIHsKICAgICAgICAgdGhpcy53ZWxsQ29sb3IgPSBzdG9wLmNvbG9yOwog
ICAgICAgICB0aGlzLl9zdG9wID0gc3RvcDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCB4KCkK
ICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl94OwotICAgIH0sCisgICAgfQogICAgIAogICAg
IHNldCB4KHgpIHsKICAgICAgICAgdGhpcy5feCA9IHg7CiAgICAgICAgIHRoaXMuX3VwZGF0ZVRy
YW5zZm9ybSgpOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHkoKQogICAgIHsKICAgICAgICAg
cmV0dXJuIHRoaXMuX3g7Ci0gICAgfSwKKyAgICB9CiAgICAgCiAgICAgc2V0IHkoeSkgewogICAg
ICAgICB0aGlzLl95ID0geTsKICAgICAgICAgdGhpcy5fdXBkYXRlVHJhbnNmb3JtKCk7Ci0gICAg
fSwKKyAgICB9CiAKICAgICBnZXQgd2VsbENvbG9yKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0
aGlzLl93ZWxsQ29sb3I7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgd2VsbENvbG9yKGNvbG9y
KQogICAgIHsKICAgICAgICAgdGhpcy5fd2VsbENvbG9yID0gY29sb3I7CiAgICAgICAgIHRoaXMu
X3dlbGwuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gY29sb3I7Ci0gICAgfSwKKyAgICB9CiAKICAg
ICBnZXQgc2VsZWN0ZWQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQuY2xh
c3NMaXN0LmNvbnRhaW5zKFdlYkluc3BlY3Rvci5HcmFkaWVudFNsaWRlcktub2IuU2VsZWN0ZWRD
bGFzc05hbWUpOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IHNlbGVjdGVkKHNlbGVjdGVkKQog
ICAgIHsKQEAgLTM1NSwxMSArMzUyLDExIEBAIFdlYkluc3BlY3Rvci5HcmFkaWVudFNsaWRlcktu
b2IucHJvdG90eXBlID0gewogICAgICAgICAKICAgICAgICAgaWYgKHRoaXMuZGVsZWdhdGUgJiYg
dHlwZW9mIHRoaXMuZGVsZWdhdGUua25vYlNlbGVjdGlvbkNoYW5nZWQgPT09ICJmdW5jdGlvbiIp
CiAgICAgICAgICAgICB0aGlzLmRlbGVnYXRlLmtub2JTZWxlY3Rpb25DaGFuZ2VkKHRoaXMpOwot
ICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJvdGVjdGVkCiAKLSAgICBoYW5kbGVFdmVudDogZnVu
Y3Rpb24oZXZlbnQpCisgICAgaGFuZGxlRXZlbnQoZXZlbnQpCiAgICAgewogICAgICAgICBldmVu
dC5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsKQEAg
LTM3OCwxMSArMzc1LDExIEBAIFdlYkluc3BlY3Rvci5HcmFkaWVudFNsaWRlcktub2IucHJvdG90
eXBlID0gewogICAgICAgICAgICAgdGhpcy5faGFuZGxlVHJhbnNpdGlvbkVuZChldmVudCk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJp
dmF0ZQogCi0gICAgX2hhbmRsZU1vdXNlZG93bjogZnVuY3Rpb24oZXZlbnQpCisgICAgX2hhbmRs
ZU1vdXNlZG93bihldmVudCkKICAgICB7CiAgICAgICAgIHRoaXMuX21vdmVkID0gZmFsc2U7CiAg
ICAgICAgIHRoaXMuX2RldGFjaGluZyA9IGZhbHNlOwpAQCAtMzkzLDkgKzM5MCw5IEBAIFdlYklu
c3BlY3Rvci5HcmFkaWVudFNsaWRlcktub2IucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9z
dGFydFggPSB0aGlzLng7CiAgICAgICAgIHRoaXMuX3N0YXJ0TW91c2VYID0gZXZlbnQucGFnZVg7
CiAgICAgICAgIHRoaXMuX3N0YXJ0TW91c2VZID0gZXZlbnQucGFnZVk7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBfaGFuZGxlTW91c2Vtb3ZlOiBmdW5jdGlvbihldmVudCkKKyAgICBfaGFuZGxlTW91
c2Vtb3ZlKGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIHcgPSBXZWJJbnNwZWN0b3IuR3JhZGll
bnRTbGlkZXIuV2lkdGg7CiAKQEAgLTQyMSw5ICs0MTgsOSBAQCBXZWJJbnNwZWN0b3IuR3JhZGll
bnRTbGlkZXJLbm9iLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMueSA9IGV2ZW50LnBh
Z2VZIC0gdGhpcy5fc3RhcnRNb3VzZVk7CiAgICAgICAgIGVsc2UgaWYgKHRoaXMuZGVsZWdhdGUg
JiYgdHlwZW9mIHRoaXMuZGVsZWdhdGUua25vYlhEaWRDaGFuZ2UgPT09ICJmdW5jdGlvbiIpCiAg
ICAgICAgICAgICB0aGlzLmRlbGVnYXRlLmtub2JYRGlkQ2hhbmdlKHRoaXMpOwotICAgIH0sCisg
ICAgfQogCi0gICAgX2hhbmRsZU1vdXNldXA6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9oYW5kbGVN
b3VzZXVwKGV2ZW50KQogICAgIHsKICAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIo
Im1vdXNlbW92ZSIsIHRoaXMsIHRydWUpOwogICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0
ZW5lcigibW91c2V1cCIsIHRoaXMsIHRydWUpOwpAQCAtNDM0LDE3ICs0MzEsMjAgQEAgV2ViSW5z
cGVjdG9yLkdyYWRpZW50U2xpZGVyS25vYi5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlz
LnNlbGVjdGVkID0gZmFsc2U7CiAgICAgICAgIH0gZWxzZSBpZiAoIXRoaXMuX21vdmVkKQogICAg
ICAgICAgICAgdGhpcy5zZWxlY3RlZCA9ICF0aGlzLnNlbGVjdGVkOwotICAgIH0sCisgICAgfQog
Ci0gICAgX2hhbmRsZVRyYW5zaXRpb25FbmQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9oYW5kbGVU
cmFuc2l0aW9uRW5kKGV2ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5lbGVtZW50LnJlbW92ZUV2
ZW50TGlzdGVuZXIoInRyYW5zaXRpb25lbmQiLCB0aGlzKTsKICAgICAgICAgdGhpcy5lbGVtZW50
LmNsYXNzTGlzdC5yZW1vdmUoV2ViSW5zcGVjdG9yLkdyYWRpZW50U2xpZGVyS25vYi5GYWRlT3V0
Q2xhc3NOYW1lKTsKICAgICAgICAgdGhpcy5lbGVtZW50LnJlbW92ZSgpOwotICAgIH0sCisgICAg
fQogCi0gICAgX3VwZGF0ZVRyYW5zZm9ybTogZnVuY3Rpb24oKQorICAgIF91cGRhdGVUcmFuc2Zv
cm0oKQogICAgIHsKICAgICAgICAgdGhpcy5lbGVtZW50LnN0eWxlLndlYmtpdFRyYW5zZm9ybSA9
ICJ0cmFuc2xhdGUzZCgiICsgdGhpcy5feCArICJweCwgIiArIHRoaXMuX3kgKyAicHgsIDApIjsK
ICAgICB9Ci19Cit9OworCitXZWJJbnNwZWN0b3IuR3JhZGllbnRTbGlkZXJLbm9iLlNlbGVjdGVk
Q2xhc3NOYW1lID0gInNlbGVjdGVkIjsKK1dlYkluc3BlY3Rvci5HcmFkaWVudFNsaWRlcktub2Iu
RmFkZU91dENsYXNzTmFtZSA9ICJmYWRlLW91dCI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9IaWVyYXJjaGljYWxQYXRoQ29tcG9uZW50Lmpz
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvSGllcmFyY2hpY2Fs
UGF0aENvbXBvbmVudC5qcwppbmRleCBhZDEzM2EyMzhjZGNlZmE3YjIxZjhhNjdkODgyZDc5MTcx
NDRkNDkyLi5jZmI0ZjBlODg3NjY4YjVlNDYwNzIyYjZiNjE5OWRmOTQ0OTRmYmM1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9IaWVyYXJjaGlj
YWxQYXRoQ29tcG9uZW50LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL0hpZXJhcmNoaWNhbFBhdGhDb21wb25lbnQuanMKQEAgLTIzLDEwNCArMjMsODEg
QEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0
b3IuSGllcmFyY2hpY2FsUGF0aENvbXBvbmVudCA9IGZ1bmN0aW9uKGRpc3BsYXlOYW1lLCBzdHls
ZUNsYXNzTmFtZXMsIHJlcHJlc2VudGVkT2JqZWN0LCB0ZXh0T25seSwgc2hvd1NlbGVjdG9yQXJy
b3dzKQorV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhDb21wb25lbnQgPSBjbGFzcyBIaWVy
YXJjaGljYWxQYXRoQ29tcG9uZW50IGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogewotICAg
IC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNz
LCBhbmQgY2FsbCBzdXBlcigpLgotICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlz
KTsKLQotICAgIGNvbnNvbGUuYXNzZXJ0KGRpc3BsYXlOYW1lKTsKLSAgICBjb25zb2xlLmFzc2Vy
dChzdHlsZUNsYXNzTmFtZXMpOwotCi0gICAgdGhpcy5fcmVwcmVzZW50ZWRPYmplY3QgPSByZXBy
ZXNlbnRlZE9iamVjdCB8fCBudWxsOwotCi0gICAgdGhpcy5fZWxlbWVudCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NOYW1lID0gV2ViSW5z
cGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhDb21wb25lbnQuU3R5bGVDbGFzc05hbWU7CisgICAgY29u
c3RydWN0b3IoZGlzcGxheU5hbWUsIHN0eWxlQ2xhc3NOYW1lcywgcmVwcmVzZW50ZWRPYmplY3Qs
IHRleHRPbmx5LCBzaG93U2VsZWN0b3JBcnJvd3MpCisgICAgeworICAgICAgICBzdXBlcigpOwog
Ci0gICAgaWYgKCEoc3R5bGVDbGFzc05hbWVzIGluc3RhbmNlb2YgQXJyYXkpKQotICAgICAgICBz
dHlsZUNsYXNzTmFtZXMgPSBbc3R5bGVDbGFzc05hbWVzXTsKKyAgICAgICAgY29uc29sZS5hc3Nl
cnQoZGlzcGxheU5hbWUpOworICAgICAgICBjb25zb2xlLmFzc2VydChzdHlsZUNsYXNzTmFtZXMp
OwogCi0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHlsZUNsYXNzTmFtZXMubGVuZ3RoOyArK2kp
IHsKLSAgICAgICAgaWYgKCFzdHlsZUNsYXNzTmFtZXNbaV0pCi0gICAgICAgICAgICBjb250aW51
ZTsKLSAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKHN0eWxlQ2xhc3NOYW1lc1tp
XSk7Ci0gICAgfQorICAgICAgICB0aGlzLl9yZXByZXNlbnRlZE9iamVjdCA9IHJlcHJlc2VudGVk
T2JqZWN0IHx8IG51bGw7CiAKLSAgICBpZiAoIXRleHRPbmx5KSB7Ci0gICAgICAgIHRoaXMuX2lj
b25FbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW1nIik7Ci0gICAgICAgIHRoaXMu
X2ljb25FbGVtZW50LmNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5IaWVyYXJjaGljYWxQYXRoQ29t
cG9uZW50Lkljb25FbGVtZW50U3R5bGVDbGFzc05hbWU7Ci0gICAgICAgIHRoaXMuX2VsZW1lbnQu
YXBwZW5kQ2hpbGQodGhpcy5faWNvbkVsZW1lbnQpOwotICAgIH0gZWxzZQotICAgICAgICB0aGlz
Ll9lbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhDb21w
b25lbnQuVGV4dE9ubHlTdHlsZUNsYXNzTmFtZSk7CisgICAgICAgIHRoaXMuX2VsZW1lbnQgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFz
c05hbWUgPSAiaGllcmFyY2hpY2FsLXBhdGgtY29tcG9uZW50IjsKIAotICAgIHRoaXMuX3RpdGxl
RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgIHRoaXMuX3RpdGxl
RWxlbWVudC5jbGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0aENvbXBvbmVu
dC5UaXRsZUVsZW1lbnRTdHlsZUNsYXNzTmFtZTsKLSAgICB0aGlzLl9lbGVtZW50LmFwcGVuZENo
aWxkKHRoaXMuX3RpdGxlRWxlbWVudCk7CisgICAgICAgIGlmICghKHN0eWxlQ2xhc3NOYW1lcyBp
bnN0YW5jZW9mIEFycmF5KSkKKyAgICAgICAgICAgIHN0eWxlQ2xhc3NOYW1lcyA9IFtzdHlsZUNs
YXNzTmFtZXNdOwogCi0gICAgdGhpcy5fdGl0bGVDb250ZW50RWxlbWVudCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgIHRoaXMuX3RpdGxlQ29udGVudEVsZW1lbnQuY2xhc3NO
YW1lID0gV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhDb21wb25lbnQuVGl0bGVDb250ZW50
RWxlbWVudFN0eWxlQ2xhc3NOYW1lOwotICAgIHRoaXMuX3RpdGxlRWxlbWVudC5hcHBlbmRDaGls
ZCh0aGlzLl90aXRsZUNvbnRlbnRFbGVtZW50KTsKLQotICAgIHRoaXMuX3NlcGFyYXRvckVsZW1l
bnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICB0aGlzLl9zZXBhcmF0b3JF
bGVtZW50LmNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5IaWVyYXJjaGljYWxQYXRoQ29tcG9uZW50
LlNlcGFyYXRvckVsZW1lbnRTdHlsZUNsYXNzTmFtZTsKLSAgICB0aGlzLl9lbGVtZW50LmFwcGVu
ZENoaWxkKHRoaXMuX3NlcGFyYXRvckVsZW1lbnQpOworICAgICAgICBmb3IgKHZhciBpID0gMDsg
aSA8IHN0eWxlQ2xhc3NOYW1lcy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgaWYgKCFzdHls
ZUNsYXNzTmFtZXNbaV0pCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB0
aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoc3R5bGVDbGFzc05hbWVzW2ldKTsKKyAgICAgICAg
fQogCi0gICAgdGhpcy5fc2VsZWN0RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNl
bGVjdCIpOwotICAgIHRoaXMuX3NlbGVjdEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vv
dmVyIiwgdGhpcy5fc2VsZWN0RWxlbWVudE1vdXNlT3Zlci5iaW5kKHRoaXMpKTsKLSAgICB0aGlz
Ll9zZWxlY3RFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlb3V0IiwgdGhpcy5fc2VsZWN0
RWxlbWVudE1vdXNlT3V0LmJpbmQodGhpcykpOwotICAgIHRoaXMuX3NlbGVjdEVsZW1lbnQuYWRk
RXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwgdGhpcy5fc2VsZWN0RWxlbWVudE1vdXNlRG93bi5i
aW5kKHRoaXMpKTsKLSAgICB0aGlzLl9zZWxlY3RFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1v
dXNldXAiLCB0aGlzLl9zZWxlY3RFbGVtZW50TW91c2VVcC5iaW5kKHRoaXMpKTsKLSAgICB0aGlz
Ll9zZWxlY3RFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsIHRoaXMuX3NlbGVjdEVs
ZW1lbnRTZWxlY3Rpb25DaGFuZ2VkLmJpbmQodGhpcykpOwotICAgIHRoaXMuX2VsZW1lbnQuYXBw
ZW5kQ2hpbGQodGhpcy5fc2VsZWN0RWxlbWVudCk7CisgICAgICAgIGlmICghdGV4dE9ubHkpIHsK
KyAgICAgICAgICAgIHRoaXMuX2ljb25FbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
aW1nIik7CisgICAgICAgICAgICB0aGlzLl9pY29uRWxlbWVudC5jbGFzc05hbWUgPSBXZWJJbnNw
ZWN0b3IuSGllcmFyY2hpY2FsUGF0aENvbXBvbmVudC5JY29uRWxlbWVudFN0eWxlQ2xhc3NOYW1l
OworICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9pY29uRWxlbWVu
dCk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3Qu
YWRkKFdlYkluc3BlY3Rvci5IaWVyYXJjaGljYWxQYXRoQ29tcG9uZW50LlRleHRPbmx5U3R5bGVD
bGFzc05hbWUpOwogCi0gICAgdGhpcy5fcHJldmlvdXNTaWJsaW5nID0gbnVsbDsKLSAgICB0aGlz
Ll9uZXh0U2libGluZyA9IG51bGw7CisgICAgICAgIHRoaXMuX3RpdGxlRWxlbWVudCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICB0aGlzLl90aXRsZUVsZW1lbnQuY2xh
c3NOYW1lID0gV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhDb21wb25lbnQuVGl0bGVFbGVt
ZW50U3R5bGVDbGFzc05hbWU7CisgICAgICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhp
cy5fdGl0bGVFbGVtZW50KTsKIAotICAgIHRoaXMuX3RydW5jYXRlZERpc3BsYXlOYW1lTGVuZ3Ro
ID0gMDsKKyAgICAgICAgdGhpcy5fdGl0bGVDb250ZW50RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImRpdiIpOworICAgICAgICB0aGlzLl90aXRsZUNvbnRlbnRFbGVtZW50LmNsYXNz
TmFtZSA9IFdlYkluc3BlY3Rvci5IaWVyYXJjaGljYWxQYXRoQ29tcG9uZW50LlRpdGxlQ29udGVu
dEVsZW1lbnRTdHlsZUNsYXNzTmFtZTsKKyAgICAgICAgdGhpcy5fdGl0bGVFbGVtZW50LmFwcGVu
ZENoaWxkKHRoaXMuX3RpdGxlQ29udGVudEVsZW1lbnQpOwogCi0gICAgdGhpcy5zZWxlY3RvckFy
cm93cyA9IHNob3dTZWxlY3RvckFycm93czsKLSAgICB0aGlzLmRpc3BsYXlOYW1lID0gZGlzcGxh
eU5hbWU7Ci19OworICAgICAgICB0aGlzLl9zZXBhcmF0b3JFbGVtZW50ID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIHRoaXMuX3NlcGFyYXRvckVsZW1lbnQuY2xhc3NO
YW1lID0gV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhDb21wb25lbnQuU2VwYXJhdG9yRWxl
bWVudFN0eWxlQ2xhc3NOYW1lOworICAgICAgICB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRo
aXMuX3NlcGFyYXRvckVsZW1lbnQpOwogCi1XZWJJbnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0aENv
bXBvbmVudC5TdHlsZUNsYXNzTmFtZSA9ICJoaWVyYXJjaGljYWwtcGF0aC1jb21wb25lbnQiOwot
V2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhDb21wb25lbnQuSGlkZGVuU3R5bGVDbGFzc05h
bWUgPSAiaGlkZGVuIjsKLVdlYkluc3BlY3Rvci5IaWVyYXJjaGljYWxQYXRoQ29tcG9uZW50LkNv
bGxhcHNlZFN0eWxlQ2xhc3NOYW1lID0gImNvbGxhcHNlZCI7Ci1XZWJJbnNwZWN0b3IuSGllcmFy
Y2hpY2FsUGF0aENvbXBvbmVudC5JY29uRWxlbWVudFN0eWxlQ2xhc3NOYW1lID0gImljb24iOwot
V2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhDb21wb25lbnQuVGV4dE9ubHlTdHlsZUNsYXNz
TmFtZSA9ICJ0ZXh0LW9ubHkiOwotV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhDb21wb25l
bnQuU2hvd1NlbGVjdG9yQXJyb3dzU3R5bGVDbGFzc05hbWUgPSAic2hvdy1zZWxlY3Rvci1hcnJv
d3MiOwotV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhDb21wb25lbnQuVGl0bGVFbGVtZW50
U3R5bGVDbGFzc05hbWUgPSAidGl0bGUiOwotV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhD
b21wb25lbnQuVGl0bGVDb250ZW50RWxlbWVudFN0eWxlQ2xhc3NOYW1lID0gImNvbnRlbnQiOwot
V2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhDb21wb25lbnQuU2VsZWN0b3JBcnJvd3NFbGVt
ZW50U3R5bGVDbGFzc05hbWUgPSAic2VsZWN0b3ItYXJyb3dzIjsKLVdlYkluc3BlY3Rvci5IaWVy
YXJjaGljYWxQYXRoQ29tcG9uZW50LlNlcGFyYXRvckVsZW1lbnRTdHlsZUNsYXNzTmFtZSA9ICJz
ZXBhcmF0b3IiOworICAgICAgICB0aGlzLl9zZWxlY3RFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgic2VsZWN0Iik7CisgICAgICAgIHRoaXMuX3NlbGVjdEVsZW1lbnQuYWRkRXZlbnRM
aXN0ZW5lcigibW91c2VvdmVyIiwgdGhpcy5fc2VsZWN0RWxlbWVudE1vdXNlT3Zlci5iaW5kKHRo
aXMpKTsKKyAgICAgICAgdGhpcy5fc2VsZWN0RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3Vz
ZW91dCIsIHRoaXMuX3NlbGVjdEVsZW1lbnRNb3VzZU91dC5iaW5kKHRoaXMpKTsKKyAgICAgICAg
dGhpcy5fc2VsZWN0RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCB0aGlzLl9z
ZWxlY3RFbGVtZW50TW91c2VEb3duLmJpbmQodGhpcykpOworICAgICAgICB0aGlzLl9zZWxlY3RF
bGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLCB0aGlzLl9zZWxlY3RFbGVtZW50TW91
c2VVcC5iaW5kKHRoaXMpKTsKKyAgICAgICAgdGhpcy5fc2VsZWN0RWxlbWVudC5hZGRFdmVudExp
c3RlbmVyKCJjaGFuZ2UiLCB0aGlzLl9zZWxlY3RFbGVtZW50U2VsZWN0aW9uQ2hhbmdlZC5iaW5k
KHRoaXMpKTsKKyAgICAgICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9zZWxlY3RF
bGVtZW50KTsKIAotV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhDb21wb25lbnQuTWluaW11
bVdpZHRoID0gMzI7Ci1XZWJJbnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0aENvbXBvbmVudC5NaW5p
bXVtV2lkdGhDb2xsYXBzZWQgPSAyNDsKLVdlYkluc3BlY3Rvci5IaWVyYXJjaGljYWxQYXRoQ29t
cG9uZW50Lk1pbmltdW1XaWR0aEZvck9uZUNoYXJhY3RlclRydW5jYXRlZFRpdGxlID0gNTQ7Ci1X
ZWJJbnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0aENvbXBvbmVudC5TZWxlY3RvckFycm93c1dpZHRo
ID0gMTI7CisgICAgICAgIHRoaXMuX3ByZXZpb3VzU2libGluZyA9IG51bGw7CisgICAgICAgIHRo
aXMuX25leHRTaWJsaW5nID0gbnVsbDsKIAotV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhD
b21wb25lbnQuRXZlbnQgPSB7Ci0gICAgU2libGluZ1dhc1NlbGVjdGVkOiAiaGllcmFyY2hpY2Fs
LXBhdGgtY29tcG9uZW50LXNpYmxpbmctd2FzLXNlbGVjdGVkIiwKLSAgICBDbGlja2VkOiAiaGll
cmFyY2hpY2FsLXBhdGgtY29tcG9uZW50LWNsaWNrZWQiCi19OworICAgICAgICB0aGlzLl90cnVu
Y2F0ZWREaXNwbGF5TmFtZUxlbmd0aCA9IDA7CiAKLVdlYkluc3BlY3Rvci5IaWVyYXJjaGljYWxQ
YXRoQ29tcG9uZW50LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9y
LkhpZXJhcmNoaWNhbFBhdGhDb21wb25lbnQsCisgICAgICAgIHRoaXMuc2VsZWN0b3JBcnJvd3Mg
PSBzaG93U2VsZWN0b3JBcnJvd3M7CisgICAgICAgIHRoaXMuZGlzcGxheU5hbWUgPSBkaXNwbGF5
TmFtZTsKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBlbGVtZW50KCkKICAgICB7
CiAgICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0
IHJlcHJlc2VudGVkT2JqZWN0KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9yZXByZXNl
bnRlZE9iamVjdDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBkaXNwbGF5TmFtZSgpCiAgICAg
ewogICAgICAgICByZXR1cm4gdGhpcy5fZGlzcGxheU5hbWU7Ci0gICAgfSwKKyAgICB9CiAKICAg
ICBzZXQgZGlzcGxheU5hbWUobmV3RGlzcGxheU5hbWUpCiAgICAgewpAQCAtMTMxLDEyICsxMDgs
MTIgQEAgV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhDb21wb25lbnQucHJvdG90eXBlID0g
ewogICAgICAgICB0aGlzLl9kaXNwbGF5TmFtZSA9IG5ld0Rpc3BsYXlOYW1lOwogCiAgICAgICAg
IHRoaXMuX3VwZGF0ZUVsZW1lbnRUaXRsZUFuZFRleHQoKTsKLSAgICB9LAorICAgIH0KIAogICAg
IGdldCB0cnVuY2F0ZWREaXNwbGF5TmFtZUxlbmd0aCgpCiAgICAgewogICAgICAgICByZXR1cm4g
dGhpcy5fdHJ1bmNhdGVkRGlzcGxheU5hbWVMZW5ndGg7Ci0gICAgfSwKKyAgICB9CiAKICAgICBz
ZXQgdHJ1bmNhdGVkRGlzcGxheU5hbWVMZW5ndGgodHJ1bmNhdGVkRGlzcGxheU5hbWVMZW5ndGgp
CiAgICAgewpAQCAtMTQ4LDcgKzEyNSw3IEBAIFdlYkluc3BlY3Rvci5IaWVyYXJjaGljYWxQYXRo
Q29tcG9uZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fdHJ1bmNhdGVkRGlzcGxheU5h
bWVMZW5ndGggPSB0cnVuY2F0ZWREaXNwbGF5TmFtZUxlbmd0aDsKIAogICAgICAgICB0aGlzLl91
cGRhdGVFbGVtZW50VGl0bGVBbmRUZXh0KCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgbWlu
aW11bVdpZHRoKCkKICAgICB7CkBAIC0xNTcsNyArMTM0LDcgQEAgV2ViSW5zcGVjdG9yLkhpZXJh
cmNoaWNhbFBhdGhDb21wb25lbnQucHJvdG90eXBlID0gewogICAgICAgICBpZiAodGhpcy5zZWxl
Y3RvckFycm93cykKICAgICAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuSGllcmFyY2hpY2Fs
UGF0aENvbXBvbmVudC5NaW5pbXVtV2lkdGggKyBXZWJJbnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0
aENvbXBvbmVudC5TZWxlY3RvckFycm93c1dpZHRoOwogICAgICAgICByZXR1cm4gV2ViSW5zcGVj
dG9yLkhpZXJhcmNoaWNhbFBhdGhDb21wb25lbnQuTWluaW11bVdpZHRoOwotICAgIH0sCisgICAg
fQogCiAgICAgZ2V0IGZvcmNlZFdpZHRoKCkKICAgICB7CkBAIC0xNjUsNyArMTQyLDcgQEAgV2Vi
SW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhDb21wb25lbnQucHJvdG90eXBlID0gewogICAgICAg
ICBpZiAodHlwZW9mIG1heFdpZHRoID09PSAic3RyaW5nIikKICAgICAgICAgICAgIHJldHVybiBw
YXJzZUludChtYXhXaWR0aCk7CiAgICAgICAgIHJldHVybiBudWxsOwotICAgIH0sCisgICAgfQog
CiAgICAgc2V0IGZvcmNlZFdpZHRoKHdpZHRoKQogICAgIHsKQEAgLTE4NCwxMiArMTYxLDEyIEBA
IFdlYkluc3BlY3Rvci5IaWVyYXJjaGljYWxQYXRoQ29tcG9uZW50LnByb3RvdHlwZSA9IHsKICAg
ICAgICAgICAgIHRoaXMuX2VsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoIndpZHRoIiwgTWF0aC5t
YXgoMSwgd2lkdGgpICsgInB4Iik7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgdGhpcy5f
ZWxlbWVudC5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgid2lkdGgiKTsKLSAgICB9LAorICAgIH0KIAog
ICAgIGdldCBoaWRkZW4oKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQuY2xh
c3NMaXN0LmNvbnRhaW5zKFdlYkluc3BlY3Rvci5IaWVyYXJjaGljYWxQYXRoQ29tcG9uZW50Lkhp
ZGRlblN0eWxlQ2xhc3NOYW1lKTsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCBoaWRkZW4oZmxh
ZykKICAgICB7CkBAIC0xOTcsMTIgKzE3NCwxMiBAQCBXZWJJbnNwZWN0b3IuSGllcmFyY2hpY2Fs
UGF0aENvbXBvbmVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9lbGVtZW50LmNs
YXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhDb21wb25lbnQuSGlkZGVu
U3R5bGVDbGFzc05hbWUpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICB0aGlzLl9lbGVtZW50
LmNsYXNzTGlzdC5yZW1vdmUoV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhDb21wb25lbnQu
SGlkZGVuU3R5bGVDbGFzc05hbWUpOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGNvbGxhcHNl
ZCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuY29udGFp
bnMoV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhDb21wb25lbnQuQ29sbGFwc2VkU3R5bGVD
bGFzc05hbWUpOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IGNvbGxhcHNlZChmbGFnKQogICAg
IHsKQEAgLTIxMCwxMiArMTg3LDEyIEBAIFdlYkluc3BlY3Rvci5IaWVyYXJjaGljYWxQYXRoQ29t
cG9uZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0
LmFkZChXZWJJbnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0aENvbXBvbmVudC5Db2xsYXBzZWRTdHls
ZUNsYXNzTmFtZSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xh
c3NMaXN0LnJlbW92ZShXZWJJbnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0aENvbXBvbmVudC5Db2xs
YXBzZWRTdHlsZUNsYXNzTmFtZSk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgc2VsZWN0b3JB
cnJvd3MoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmNv
bnRhaW5zKFdlYkluc3BlY3Rvci5IaWVyYXJjaGljYWxQYXRoQ29tcG9uZW50LlNob3dTZWxlY3Rv
ckFycm93c1N0eWxlQ2xhc3NOYW1lKTsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCBzZWxlY3Rv
ckFycm93cyhmbGFnKQogICAgIHsKQEAgLTIzMywzMSArMjEwLDMxIEBAIFdlYkluc3BlY3Rvci5I
aWVyYXJjaGljYWxQYXRoQ29tcG9uZW50LnByb3RvdHlwZSA9IHsKIAogICAgICAgICAgICAgdGhp
cy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKFdlYkluc3BlY3Rvci5IaWVyYXJjaGljYWxQYXRo
Q29tcG9uZW50LlNob3dTZWxlY3RvckFycm93c1N0eWxlQ2xhc3NOYW1lKTsKICAgICAgICAgfQot
ICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHByZXZpb3VzU2libGluZygpCiAgICAgewogICAgICAg
ICByZXR1cm4gdGhpcy5fcHJldmlvdXNTaWJsaW5nOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0
IHByZXZpb3VzU2libGluZyhuZXdTbGlibGluZykKICAgICB7CiAgICAgICAgIHRoaXMuX3ByZXZp
b3VzU2libGluZyA9IG5ld1NsaWJsaW5nIHx8IG51bGw7Ci0gICAgfSwKKyAgICB9CiAKICAgICBn
ZXQgbmV4dFNpYmxpbmcoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX25leHRTaWJsaW5n
OwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IG5leHRTaWJsaW5nKG5ld1NsaWJsaW5nKQogICAg
IHsKICAgICAgICAgdGhpcy5fbmV4dFNpYmxpbmcgPSBuZXdTbGlibGluZyB8fCBudWxsOwotICAg
IH0sCisgICAgfQogCiAgICAgLy8gUHJpdmF0ZQogCi0gICAgX3VwZGF0ZUVsZW1lbnRUaXRsZUFu
ZFRleHQ6IGZ1bmN0aW9uKCkKKyAgICBfdXBkYXRlRWxlbWVudFRpdGxlQW5kVGV4dCgpCiAgICAg
ewogICAgICAgICB2YXIgdHJ1bmNhdGVkRGlzcGxheU5hbWUgPSB0aGlzLl9kaXNwbGF5TmFtZTsK
ICAgICAgICAgaWYgKHRoaXMuX3RydW5jYXRlZERpc3BsYXlOYW1lTGVuZ3RoICYmIHRydW5jYXRl
ZERpc3BsYXlOYW1lLmxlbmd0aCA+IHRoaXMuX3RydW5jYXRlZERpc3BsYXlOYW1lTGVuZ3RoKQpA
QCAtMjY1LDE2ICsyNDIsMTYgQEAgV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhDb21wb25l
bnQucHJvdG90eXBlID0gewogCiAgICAgICAgIHRoaXMuX2VsZW1lbnQudGl0bGUgPSB0aGlzLl9k
aXNwbGF5TmFtZTsKICAgICAgICAgdGhpcy5fdGl0bGVDb250ZW50RWxlbWVudC50ZXh0Q29udGVu
dCA9IHRydW5jYXRlZERpc3BsYXlOYW1lOwotICAgIH0sCisgICAgfQogCi0gICAgX3VwZGF0ZVNl
bGVjdEVsZW1lbnQ6IGZ1bmN0aW9uKCkKKyAgICBfdXBkYXRlU2VsZWN0RWxlbWVudCgpCiAgICAg
ewogICAgICAgICB0aGlzLl9zZWxlY3RFbGVtZW50LnJlbW92ZUNoaWxkcmVuKCk7CiAKICAgICAg
ICAgZnVuY3Rpb24gY3JlYXRlT3B0aW9uKGNvbXBvbmVudCkKICAgICAgICAgewogICAgICAgICAg
ICAgdmFyIG9wdGlvbkVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJvcHRpb24iKTsK
LSAgICAgICAgICAgIGNvbnN0IG1heFBvcHVwTWVudUxlbmd0aCA9IDEzMDsgLy8gPHJkYXI6Ly9w
cm9ibGVtLzEzNDQ1Mzc0PiA8c2VsZWN0PiB3aXRoIHZlcnkgbG9uZyBvcHRpb24gaGFzIGNsaXBw
ZWQgdGV4dCBhbmQgcG9wdXAgbWVudSBpcyBzdGlsbCB2ZXJ5IHdpZGUKKyAgICAgICAgICAgIHZh
ciBtYXhQb3B1cE1lbnVMZW5ndGggPSAxMzA7IC8vIDxyZGFyOi8vcHJvYmxlbS8xMzQ0NTM3ND4g
PHNlbGVjdD4gd2l0aCB2ZXJ5IGxvbmcgb3B0aW9uIGhhcyBjbGlwcGVkIHRleHQgYW5kIHBvcHVw
IG1lbnUgaXMgc3RpbGwgdmVyeSB3aWRlCiAgICAgICAgICAgICBvcHRpb25FbGVtZW50LnRleHRD
b250ZW50ID0gY29tcG9uZW50LmRpc3BsYXlOYW1lLmxlbmd0aCA8PSBtYXhQb3B1cE1lbnVMZW5n
dGggPyBjb21wb25lbnQuZGlzcGxheU5hbWUgOiBjb21wb25lbnQuZGlzcGxheU5hbWUuc3Vic3Ry
aW5nKDAsIG1heFBvcHVwTWVudUxlbmd0aCkgKyAiXHUyMDI2IjsKICAgICAgICAgICAgIG9wdGlv
bkVsZW1lbnQuX3BhdGhDb21wb25lbnQgPSBjb21wb25lbnQ7CiAgICAgICAgICAgICByZXR1cm4g
b3B0aW9uRWxlbWVudDsKQEAgLTMwNywzNCArMjg0LDUyIEBAIFdlYkluc3BlY3Rvci5IaWVyYXJj
aGljYWxQYXRoQ29tcG9uZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuX3NlbGVj
dEVsZW1lbnQuc2VsZWN0ZWRJbmRleCA9IC0xOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICB0
aGlzLl9zZWxlY3RFbGVtZW50LnNlbGVjdGVkSW5kZXggPSBwcmV2aW91c1NpYmxpbmdDb3VudDsK
LSAgICB9LAorICAgIH0KIAotICAgIF9zZWxlY3RFbGVtZW50TW91c2VPdmVyOiBmdW5jdGlvbihl
dmVudCkKKyAgICBfc2VsZWN0RWxlbWVudE1vdXNlT3ZlcihldmVudCkKICAgICB7CiAgICAgICAg
IGlmICh0eXBlb2YgdGhpcy5tb3VzZU92ZXIgPT09ICJmdW5jdGlvbiIpCiAgICAgICAgICAgICB0
aGlzLm1vdXNlT3ZlcigpOwotICAgIH0sCisgICAgfQogCi0gICAgX3NlbGVjdEVsZW1lbnRNb3Vz
ZU91dDogZnVuY3Rpb24oZXZlbnQpCisgICAgX3NlbGVjdEVsZW1lbnRNb3VzZU91dChldmVudCkK
ICAgICB7CiAgICAgICAgIGlmICh0eXBlb2YgdGhpcy5tb3VzZU91dCA9PT0gImZ1bmN0aW9uIikK
ICAgICAgICAgICAgIHRoaXMubW91c2VPdXQoKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9zZWxl
Y3RFbGVtZW50TW91c2VEb3duOiBmdW5jdGlvbihldmVudCkKKyAgICBfc2VsZWN0RWxlbWVudE1v
dXNlRG93bihldmVudCkKICAgICB7CiAgICAgICAgIHRoaXMuX3VwZGF0ZVNlbGVjdEVsZW1lbnQo
KTsKLSAgICB9LAorICAgIH0KIAotICAgIF9zZWxlY3RFbGVtZW50TW91c2VVcDogZnVuY3Rpb24o
ZXZlbnQpCisgICAgX3NlbGVjdEVsZW1lbnRNb3VzZVVwKGV2ZW50KQogICAgIHsKICAgICAgICAg
dGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBh
dGhDb21wb25lbnQuRXZlbnQuQ2xpY2tlZCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfc2VsZWN0
RWxlbWVudFNlbGVjdGlvbkNoYW5nZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9zZWxlY3RFbGVt
ZW50U2VsZWN0aW9uQ2hhbmdlZChldmVudCkKICAgICB7CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hF
dmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5IaWVyYXJjaGljYWxQYXRoQ29tcG9uZW50LkV2
ZW50LlNpYmxpbmdXYXNTZWxlY3RlZCwge3BhdGhDb21wb25lbnQ6IHRoaXMuX3NlbGVjdEVsZW1l
bnRbdGhpcy5fc2VsZWN0RWxlbWVudC5zZWxlY3RlZEluZGV4XS5fcGF0aENvbXBvbmVudH0pOwog
ICAgIH0KIH07CiAKLVdlYkluc3BlY3Rvci5IaWVyYXJjaGljYWxQYXRoQ29tcG9uZW50LnByb3Rv
dHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZTsKK1dlYkluc3Bl
Y3Rvci5IaWVyYXJjaGljYWxQYXRoQ29tcG9uZW50LkhpZGRlblN0eWxlQ2xhc3NOYW1lID0gImhp
ZGRlbiI7CitXZWJJbnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0aENvbXBvbmVudC5Db2xsYXBzZWRT
dHlsZUNsYXNzTmFtZSA9ICJjb2xsYXBzZWQiOworV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBh
dGhDb21wb25lbnQuSWNvbkVsZW1lbnRTdHlsZUNsYXNzTmFtZSA9ICJpY29uIjsKK1dlYkluc3Bl
Y3Rvci5IaWVyYXJjaGljYWxQYXRoQ29tcG9uZW50LlRleHRPbmx5U3R5bGVDbGFzc05hbWUgPSAi
dGV4dC1vbmx5IjsKK1dlYkluc3BlY3Rvci5IaWVyYXJjaGljYWxQYXRoQ29tcG9uZW50LlNob3dT
ZWxlY3RvckFycm93c1N0eWxlQ2xhc3NOYW1lID0gInNob3ctc2VsZWN0b3ItYXJyb3dzIjsKK1dl
Ykluc3BlY3Rvci5IaWVyYXJjaGljYWxQYXRoQ29tcG9uZW50LlRpdGxlRWxlbWVudFN0eWxlQ2xh
c3NOYW1lID0gInRpdGxlIjsKK1dlYkluc3BlY3Rvci5IaWVyYXJjaGljYWxQYXRoQ29tcG9uZW50
LlRpdGxlQ29udGVudEVsZW1lbnRTdHlsZUNsYXNzTmFtZSA9ICJjb250ZW50IjsKK1dlYkluc3Bl
Y3Rvci5IaWVyYXJjaGljYWxQYXRoQ29tcG9uZW50LlNlbGVjdG9yQXJyb3dzRWxlbWVudFN0eWxl
Q2xhc3NOYW1lID0gInNlbGVjdG9yLWFycm93cyI7CitXZWJJbnNwZWN0b3IuSGllcmFyY2hpY2Fs
UGF0aENvbXBvbmVudC5TZXBhcmF0b3JFbGVtZW50U3R5bGVDbGFzc05hbWUgPSAic2VwYXJhdG9y
IjsKKworV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhDb21wb25lbnQuTWluaW11bVdpZHRo
ID0gMzI7CitXZWJJbnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0aENvbXBvbmVudC5NaW5pbXVtV2lk
dGhDb2xsYXBzZWQgPSAyNDsKK1dlYkluc3BlY3Rvci5IaWVyYXJjaGljYWxQYXRoQ29tcG9uZW50
Lk1pbmltdW1XaWR0aEZvck9uZUNoYXJhY3RlclRydW5jYXRlZFRpdGxlID0gNTQ7CitXZWJJbnNw
ZWN0b3IuSGllcmFyY2hpY2FsUGF0aENvbXBvbmVudC5TZWxlY3RvckFycm93c1dpZHRoID0gMTI7
CisKK1dlYkluc3BlY3Rvci5IaWVyYXJjaGljYWxQYXRoQ29tcG9uZW50LkV2ZW50ID0geworICAg
IFNpYmxpbmdXYXNTZWxlY3RlZDogImhpZXJhcmNoaWNhbC1wYXRoLWNvbXBvbmVudC1zaWJsaW5n
LXdhcy1zZWxlY3RlZCIsCisgICAgQ2xpY2tlZDogImhpZXJhcmNoaWNhbC1wYXRoLWNvbXBvbmVu
dC1jbGlja2VkIgorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0hpZXJhcmNoaWNhbFBhdGhOYXZpZ2F0aW9uSXRlbS5qcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0hpZXJhcmNoaWNhbFBhdGhOYXZpZ2F0
aW9uSXRlbS5qcwppbmRleCBkZWZhYzU5YjI0Y2RkNzlhMWE3MWNiMjQ4NmRhZWMyMGI2N2NmZTE3
Li5lMGU4NTgxMjIxYzViYmYzMDUxMzJhMGFmMjY3MmQ1NTVkZGJiYTgzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9IaWVyYXJjaGljYWxQYXRo
TmF2aWdhdGlvbkl0ZW0uanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvSGllcmFyY2hpY2FsUGF0aE5hdmlnYXRpb25JdGVtLmpzCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywyOCArMjMsMjEg
QEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0
b3IuSGllcmFyY2hpY2FsUGF0aE5hdmlnYXRpb25JdGVtID0gZnVuY3Rpb24oaWRlbnRpZmllciwg
Y29tcG9uZW50cykgewotICAgIFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uSXRlbS5jYWxsKHRoaXMs
IGlkZW50aWZpZXIpOwotCi0gICAgdGhpcy5jb21wb25lbnRzID0gY29tcG9uZW50czsKLX07Ci0K
LVdlYkluc3BlY3Rvci5IaWVyYXJjaGljYWxQYXRoTmF2aWdhdGlvbkl0ZW0uU3R5bGVDbGFzc05h
bWUgPSAiaGllcmFyY2hpY2FsLXBhdGgiOwotV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhO
YXZpZ2F0aW9uSXRlbS5BbHdheXNTaG93TGFzdFBhdGhDb21wb25lbnRTZXBhcmF0b3JTdHlsZUNs
YXNzTmFtZSA9ICJhbHdheXMtc2hvdy1sYXN0LXBhdGgtY29tcG9uZW50LXNlcGFyYXRvciI7Ci0K
LVdlYkluc3BlY3Rvci5IaWVyYXJjaGljYWxQYXRoTmF2aWdhdGlvbkl0ZW0uRXZlbnQgPSB7Ci0g
ICAgUGF0aENvbXBvbmVudFdhc1NlbGVjdGVkOiAiaGllcmFyY2hpY2FsLXBhdGgtbmF2aWdhdGlv
bi1pdGVtLXBhdGgtY29tcG9uZW50LXdhcy1zZWxlY3RlZCIKLX07CitXZWJJbnNwZWN0b3IuSGll
cmFyY2hpY2FsUGF0aE5hdmlnYXRpb25JdGVtID0gY2xhc3MgSGllcmFyY2hpY2FsUGF0aE5hdmln
YXRpb25JdGVtIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25JdGVtCit7CisgICAgY29u
c3RydWN0b3IoaWRlbnRpZmllciwgY29tcG9uZW50cykKKyAgICB7CisgICAgICAgIHN1cGVyKGlk
ZW50aWZpZXIpOwogCi1XZWJJbnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0aE5hdmlnYXRpb25JdGVt
LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNh
bFBhdGhOYXZpZ2F0aW9uSXRlbSwKKyAgICAgICAgdGhpcy5jb21wb25lbnRzID0gY29tcG9uZW50
czsKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBjb21wb25lbnRzKCkKICAgICB7
CiAgICAgICAgIHJldHVybiB0aGlzLl9jb21wb25lbnRzOwotICAgIH0sCisgICAgfQogCiAgICAg
c2V0IGNvbXBvbmVudHMobmV3Q29tcG9uZW50cykKICAgICB7CkBAIC02OSwxNyArNjIsMTcgQEAg
V2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhOYXZpZ2F0aW9uSXRlbS5wcm90b3R5cGUgPSB7
CiAgICAgICAgIC8vIFVwZGF0ZSBsYXlvdXQgZm9yIHRoZSBzbyBvdGhlciBpdGVtcyBjYW4gYWRq
dXN0IHRvIHRoZSBleHRyYSBzcGFjZSAob3IgbGFjayB0aGVyZW9mKSB0b28uCiAgICAgICAgIGlm
ICh0aGlzLnBhcmVudE5hdmlnYXRpb25CYXIpCiAgICAgICAgICAgICB0aGlzLnBhcmVudE5hdmln
YXRpb25CYXIudXBkYXRlTGF5b3V0U29vbigpOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGxh
c3RDb21wb25lbnQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2NvbXBvbmVudHMubGFz
dFZhbHVlIHx8IG51bGw7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgYWx3YXlzU2hvd0xhc3RQ
YXRoQ29tcG9uZW50U2VwYXJhdG9yKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLmVsZW1l
bnQuY2xhc3NMaXN0LmNvbnRhaW5zKFdlYkluc3BlY3Rvci5IaWVyYXJjaGljYWxQYXRoTmF2aWdh
dGlvbkl0ZW0uQWx3YXlzU2hvd0xhc3RQYXRoQ29tcG9uZW50U2VwYXJhdG9yU3R5bGVDbGFzc05h
bWUpOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IGFsd2F5c1Nob3dMYXN0UGF0aENvbXBvbmVu
dFNlcGFyYXRvcihmbGFnKQogICAgIHsKQEAgLTg3LDkgKzgwLDkgQEAgV2ViSW5zcGVjdG9yLkhp
ZXJhcmNoaWNhbFBhdGhOYXZpZ2F0aW9uSXRlbS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0
aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0aE5h
dmlnYXRpb25JdGVtLkFsd2F5c1Nob3dMYXN0UGF0aENvbXBvbmVudFNlcGFyYXRvclN0eWxlQ2xh
c3NOYW1lKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlz
dC5yZW1vdmUoV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhOYXZpZ2F0aW9uSXRlbS5BbHdh
eXNTaG93TGFzdFBhdGhDb21wb25lbnRTZXBhcmF0b3JTdHlsZUNsYXNzTmFtZSk7Ci0gICAgfSwK
KyAgICB9CiAKLSAgICB1cGRhdGVMYXlvdXQ6IGZ1bmN0aW9uKGV4cGFuZE9ubHkpCisgICAgdXBk
YXRlTGF5b3V0KGV4cGFuZE9ubHkpCiAgICAgewogICAgICAgICB2YXIgbmF2aWdhdGlvbkJhciA9
IHRoaXMucGFyZW50TmF2aWdhdGlvbkJhcjsKICAgICAgICAgaWYgKCFuYXZpZ2F0aW9uQmFyKQpA
QCAtMjIyLDE2ICsyMTUsMjUgQEAgV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhOYXZpZ2F0
aW9uSXRlbS5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgLy8gU2V0IHRoZSB0b29sIHRpcCBvZiB0
aGUgY29sbGFwc2VkIGNvbXBvbmVudC4KICAgICAgICAgdGhpcy5fY29sbGFwc2VkQ29tcG9uZW50
LmVsZW1lbnQudGl0bGUgPSBoaWRkZW5EaXNwbGF5TmFtZXMuam9pbigiXG4iKTsKLSAgICB9LAor
ICAgIH0KIAotICAgIC8vIFByaXZhdGUKKyAgICAvLyBQcm90ZWN0ZWQKIAotICAgIF9hZGRpdGlv
bmFsQ2xhc3NOYW1lczogW1dlYkluc3BlY3Rvci5IaWVyYXJjaGljYWxQYXRoTmF2aWdhdGlvbkl0
ZW0uU3R5bGVDbGFzc05hbWVdLAorICAgIGdldCBhZGRpdGlvbmFsQ2xhc3NOYW1lcygpCisgICAg
eworICAgICAgICByZXR1cm4gWyJoaWVyYXJjaGljYWwtcGF0aCJdOworICAgIH0KIAotICAgIF9z
aWJsaW5nUGF0aENvbXBvbmVudFdhc1NlbGVjdGVkOiBmdW5jdGlvbihldmVudCkKKyAgICAvLyBQ
cml2YXRlCisKKyAgICBfc2libGluZ1BhdGhDb21wb25lbnRXYXNTZWxlY3RlZChldmVudCkKICAg
ICB7CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5I
aWVyYXJjaGljYWxQYXRoTmF2aWdhdGlvbkl0ZW0uRXZlbnQuUGF0aENvbXBvbmVudFdhc1NlbGVj
dGVkLCBldmVudC5kYXRhKTsKICAgICB9CiB9OwogCi1XZWJJbnNwZWN0b3IuSGllcmFyY2hpY2Fs
UGF0aE5hdmlnYXRpb25JdGVtLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuTmF2
aWdhdGlvbkl0ZW0ucHJvdG90eXBlOworV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhOYXZp
Z2F0aW9uSXRlbS5BbHdheXNTaG93TGFzdFBhdGhDb21wb25lbnRTZXBhcmF0b3JTdHlsZUNsYXNz
TmFtZSA9ICJhbHdheXMtc2hvdy1sYXN0LXBhdGgtY29tcG9uZW50LXNlcGFyYXRvciI7CisKK1dl
Ykluc3BlY3Rvci5IaWVyYXJjaGljYWxQYXRoTmF2aWdhdGlvbkl0ZW0uRXZlbnQgPSB7CisgICAg
UGF0aENvbXBvbmVudFdhc1NlbGVjdGVkOiAiaGllcmFyY2hpY2FsLXBhdGgtbmF2aWdhdGlvbi1p
dGVtLXBhdGgtY29tcG9uZW50LXdhcy1zZWxlY3RlZCIKK307CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Ib3Zlck1lbnUuanMgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Ib3Zlck1lbnUuanMKaW5kZXggYjli
YWYyMjk4NzRkMzEzODQwMGJlOWQ2MmQ0ZmM3NGZjNmYyY2I3OS4uZTVlZGIzZmMxYWIzMDRlZjAx
ZTY3ZTk2NmM5YjgzMWNhZWMxNDY0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvSG92ZXJNZW51LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0hvdmVyTWVudS5qcwpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsMzggKzIzLDMyIEBACiAg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkhv
dmVyTWVudSA9IGZ1bmN0aW9uKGRlbGVnYXRlKQorV2ViSW5zcGVjdG9yLkhvdmVyTWVudSA9IGNs
YXNzIEhvdmVyTWVudSBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIHsKLSAgICAvLyBGSVhN
RTogQ29udmVydCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcywgYW5kIGNh
bGwgc3VwZXIoKS4KLSAgICAvLyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7Ci0KLSAg
ICB0aGlzLmRlbGVnYXRlID0gZGVsZWdhdGU7Ci0KLSAgICB0aGlzLl9lbGVtZW50ID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgdGhpcy5fZWxlbWVudC5jbGFzc05hbWUgPSBX
ZWJJbnNwZWN0b3IuSG92ZXJNZW51LlN0eWxlQ2xhc3NOYW1lOwotICAgIHRoaXMuX2VsZW1lbnQu
YWRkRXZlbnRMaXN0ZW5lcigidHJhbnNpdGlvbmVuZCIsIHRoaXMsIHRydWUpOworICAgIGNvbnN0
cnVjdG9yKGRlbGVnYXRlKQorICAgIHsKKyAgICAgICAgc3VwZXIoKTsKIAotICAgIHRoaXMuX291
dGxpbmVFbGVtZW50ID0gdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInN2ZyIpKTsKKyAgICAgICAg
dGhpcy5kZWxlZ2F0ZSA9IGRlbGVnYXRlOwogCi0gICAgdGhpcy5fYnV0dG9uID0gdGhpcy5fZWxl
bWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbWciKSk7Ci0gICAgdGhp
cy5fYnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcyk7Ci19CisgICAgICAgIHRo
aXMuX2VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgdGhp
cy5fZWxlbWVudC5jbGFzc05hbWUgPSAiaG92ZXItbWVudSI7CisgICAgICAgIHRoaXMuX2VsZW1l
bnQuYWRkRXZlbnRMaXN0ZW5lcigidHJhbnNpdGlvbmVuZCIsIHRoaXMsIHRydWUpOwogCi1XZWJJ
bnNwZWN0b3IuSG92ZXJNZW51LlN0eWxlQ2xhc3NOYW1lID0gImhvdmVyLW1lbnUiOwotV2ViSW5z
cGVjdG9yLkhvdmVyTWVudS5WaXNpYmxlQ2xhc3NOYW1lID0gInZpc2libGUiOworICAgICAgICB0
aGlzLl9vdXRsaW5lRWxlbWVudCA9IHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJzdmciKSk7CiAK
LVdlYkluc3BlY3Rvci5Ib3Zlck1lbnUucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBX
ZWJJbnNwZWN0b3IuSG92ZXJNZW51LAotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLk9iamVj
dC5wcm90b3R5cGUsCisgICAgICAgIHRoaXMuX2J1dHRvbiA9IHRoaXMuX2VsZW1lbnQuYXBwZW5k
Q2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW1nIikpOworICAgICAgICB0aGlzLl9idXR0
b24uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzKTsKKyAgICB9CiAKICAgICAvLyBQdWJs
aWMKIAogICAgIGdldCBlbGVtZW50KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9lbGVt
ZW50OwotICAgIH0sCisgICAgfQogCi0gICAgcHJlc2VudDogZnVuY3Rpb24ocmVjdHMpCisgICAg
cHJlc2VudChyZWN0cykKICAgICB7CiAgICAgICAgIHRoaXMuX291dGxpbmVFbGVtZW50LnRleHRD
b250ZW50ID0gIiI7CiAKQEAgLTYzLDkgKzU3LDkgQEAgV2ViSW5zcGVjdG9yLkhvdmVyTWVudS5w
cm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNw
ZWN0b3IuSG92ZXJNZW51LlZpc2libGVDbGFzc05hbWUpOwogCiAgICAgICAgIHdpbmRvdy5hZGRF
dmVudExpc3RlbmVyKCJzY3JvbGwiLCB0aGlzLCB0cnVlKTsKLSAgICB9LAorICAgIH0KIAotICAg
IGRpc21pc3M6IGZ1bmN0aW9uKGRpc2NyZXRlKQorICAgIGRpc21pc3MoZGlzY3JldGUpCiAgICAg
ewogICAgICAgICBpZiAodGhpcy5fZWxlbWVudC5wYXJlbnROb2RlICE9PSBkb2N1bWVudC5ib2R5
KQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtNzYsMTEgKzcwLDExIEBAIFdlYkluc3BlY3Rvci5I
b3Zlck1lbnUucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5y
ZW1vdmUoV2ViSW5zcGVjdG9yLkhvdmVyTWVudS5WaXNpYmxlQ2xhc3NOYW1lKTsKIAogICAgICAg
ICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigic2Nyb2xsIiwgdGhpcywgdHJ1ZSk7Ci0gICAg
fSwKKyAgICB9CiAKICAgICAvLyBQcm90ZWN0ZWQKIAotICAgIGhhbmRsZUV2ZW50OiBmdW5jdGlv
bihldmVudCkKKyAgICBoYW5kbGVFdmVudChldmVudCkKICAgICB7CiAgICAgICAgIHN3aXRjaCAo
ZXZlbnQudHlwZSkgewogICAgICAgICBjYXNlICJzY3JvbGwiOgpAQCAtOTUsMTcgKzg5LDE3IEBA
IFdlYkluc3BlY3Rvci5Ib3Zlck1lbnUucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgIHRo
aXMuX2VsZW1lbnQucmVtb3ZlKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAg
IH0sCisgICAgfQogCiAgICAgLy8gUHJpdmF0ZQogCi0gICAgX2hhbmRsZUNsaWNrRXZlbnQ6IGZ1
bmN0aW9uKGV2ZW50KQorICAgIF9oYW5kbGVDbGlja0V2ZW50KGV2ZW50KQogICAgIHsKICAgICAg
ICAgaWYgKHRoaXMuZGVsZWdhdGUgJiYgdHlwZW9mIHRoaXMuZGVsZWdhdGUuaG92ZXJNZW51QnV0
dG9uV2FzUHJlc3NlZCA9PT0gImZ1bmN0aW9uIikKICAgICAgICAgICAgIHRoaXMuZGVsZWdhdGUu
aG92ZXJNZW51QnV0dG9uV2FzUHJlc3NlZCh0aGlzKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9k
cmF3T3V0bGluZTogZnVuY3Rpb24ocmVjdHMpCisgICAgX2RyYXdPdXRsaW5lKHJlY3RzKQogICAg
IHsKICAgICAgICAgdmFyIGJ1dHRvbldpZHRoID0gdGhpcy5fYnV0dG9uLndpZHRoOwogICAgICAg
ICB2YXIgYnV0dG9uSGVpZ2h0ID0gdGhpcy5fYnV0dG9uLmhlaWdodDsKQEAgLTEzNSwxMSArMTI5
LDExIEBAIFdlYkluc3BlY3Rvci5Ib3Zlck1lbnUucHJvdG90eXBlID0gewogCiAgICAgICAgIHRo
aXMuX2J1dHRvbi5zdHlsZS5sZWZ0ID0gKGxhc3RSZWN0Lm1heFgoKSAtIGJvdW5kcy5taW5YKCkg
LSBidXR0b25XaWR0aCkgKyAicHgiOwogICAgICAgICB0aGlzLl9idXR0b24uc3R5bGUudG9wID0g
KGxhc3RSZWN0Lm1heFkoKSAtIGJvdW5kcy5taW5ZKCkgLSBidXR0b25IZWlnaHQpICsgInB4IjsK
LSAgICB9LAorICAgIH0KIAotICAgIF9hZGRSZWN0OiBmdW5jdGlvbihyZWN0KQorICAgIF9hZGRS
ZWN0KHJlY3QpCiAgICAgewotICAgICAgICBjb25zdCByID0gNDsKKyAgICAgICAgdmFyIHIgPSA0
OwogCiAgICAgICAgIHZhciBzdmdSZWN0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJyZWN0Iik7CiAgICAgICAgIHN2Z1JlY3Quc2V0QXR0
cmlidXRlKCJ4IiwgMSk7CkBAIC0xNDksMjQgKzE0MywyNCBAQCBXZWJJbnNwZWN0b3IuSG92ZXJN
ZW51LnByb3RvdHlwZSA9IHsKICAgICAgICAgc3ZnUmVjdC5zZXRBdHRyaWJ1dGUoInJ4Iiwgcik7
CiAgICAgICAgIHN2Z1JlY3Quc2V0QXR0cmlidXRlKCJyeSIsIHIpOwogICAgICAgICByZXR1cm4g
dGhpcy5fb3V0bGluZUVsZW1lbnQuYXBwZW5kQ2hpbGQoc3ZnUmVjdCk7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBfYWRkUGF0aDogZnVuY3Rpb24oY29tbWFuZHMsIHR4LCB0eSkKKyAgICBfYWRkUGF0
aChjb21tYW5kcywgdHgsIHR5KQogICAgIHsKICAgICAgICAgdmFyIHBhdGggPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInBhdGgiKTsKICAg
ICAgICAgcGF0aC5zZXRBdHRyaWJ1dGUoImQiLCBjb21tYW5kcy5qb2luKCIgIikpOwogICAgICAg
ICBwYXRoLnNldEF0dHJpYnV0ZSgidHJhbnNmb3JtIiwgInRyYW5zbGF0ZSgiICsgKHR4ICsgMSkg
KyAiLCIgKyAodHkgKyAxKSArICIpIik7CiAgICAgICAgIHJldHVybiB0aGlzLl9vdXRsaW5lRWxl
bWVudC5hcHBlbmRDaGlsZChwYXRoKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9kcmF3U2luZ2xl
TGluZTogZnVuY3Rpb24ocmVjdCkKKyAgICBfZHJhd1NpbmdsZUxpbmUocmVjdCkKICAgICB7CiAg
ICAgICAgIHRoaXMuX2FkZFJlY3QocmVjdC5wYWQoMikpOwotICAgIH0sCisgICAgfQogCi0gICAg
X2RyYXdUd29Ob25PdmVybGFwcGluZ0xpbmVzOiBmdW5jdGlvbihyZWN0cykKKyAgICBfZHJhd1R3
b05vbk92ZXJsYXBwaW5nTGluZXMocmVjdHMpCiAgICAgewotICAgICAgICBjb25zdCByID0gNDsK
KyAgICAgICAgdmFyIHIgPSA0OwogCiAgICAgICAgIHZhciBmaXJzdFJlY3QgPSByZWN0c1swXS5w
YWQoMik7CiAgICAgICAgIHZhciBzZWNvbmRSZWN0ID0gcmVjdHNbMV0ucGFkKDIpOwpAQCAtMTkz
LDEyICsxODcsMTIgQEAgV2ViSW5zcGVjdG9yLkhvdmVyTWVudS5wcm90b3R5cGUgPSB7CiAgICAg
ICAgICAgICAicSIsIDAsIHIsIC1yLCByLAogICAgICAgICAgICAgIkgiLCByZWN0Lm1pblgoKQog
ICAgICAgICBdLCB0eCwgdHkpOwotICAgIH0sCisgICAgfQogICAgIAotICAgIF9kcmF3T3Zlcmxh
cHBpbmdMaW5lczogZnVuY3Rpb24ocmVjdHMpCisgICAgX2RyYXdPdmVybGFwcGluZ0xpbmVzKHJl
Y3RzKQogICAgIHsKLSAgICAgICAgY29uc3QgUEFERElORyA9IDI7Ci0gICAgICAgIGNvbnN0IHIg
PSA0OworICAgICAgICB2YXIgUEFERElORyA9IDI7CisgICAgICAgIHZhciByID0gNDsKIAogICAg
ICAgICB2YXIgbWluWCA9IE51bWJlci5NQVhfVkFMVUU7CiAgICAgICAgIHZhciBtYXhYID0gLU51
bWJlci5NQVhfVkFMVUU7CkBAIC0yMTksNyArMjEzLDcgQEAgV2ViSW5zcGVjdG9yLkhvdmVyTWVu
dS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm4gdGhpcy5fYWRkUmVjdChuZXcgV2Vi
SW5zcGVjdG9yLlJlY3QobWluWCwgbWluWSwgbWF4WCAtIG1pblgsIG1heFkgLSBtaW5ZKSk7CiAg
ICAgICAgIAogICAgICAgICB2YXIgbGFzdExpbmVNaW5ZID0gcmVjdHMubGFzdFZhbHVlLm1pblko
KSArIFBBRERJTkc7Ci0gICAgICAgIGlmIChyZWN0c1swXS5taW5YKCkgPT09IG1pblggKyBQQURE
SU5HKQorICAgICAgICBpZiAocmVjdHNbMF0ubWluWCgpID09PSBtaW5YICsgUEFERElORykgewog
ICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2FkZFBhdGgoWwogICAgICAgICAgICAgICAgICJNIiwg
bWluWCArIHIsIG1pblksCiAgICAgICAgICAgICAgICAgIkgiLCBtYXhYIC0gciwKQEAgLTIzNSw5
ICsyMjksMTAgQEAgV2ViSW5zcGVjdG9yLkhvdmVyTWVudS5wcm90b3R5cGUgPSB7CiAgICAgICAg
ICAgICAgICAgIlYiLCBtaW5ZICsgciwKICAgICAgICAgICAgICAgICAicSIsIDAsIC1yLCByLCAt
cgogICAgICAgICAgICAgXSwgLW1pblgsIC1taW5ZKTsKLSAgICAgICAgCisgICAgICAgIH0KKwog
ICAgICAgICB2YXIgZmlyc3RMaW5lTWF4WSA9IHJlY3RzWzBdLm1heFkoKSAtIFBBRERJTkc7Ci0g
ICAgICAgIGlmIChyZWN0cy5sYXN0VmFsdWUubWF4WCgpID09PSBtYXhYIC0gUEFERElORykKKyAg
ICAgICAgaWYgKHJlY3RzLmxhc3RWYWx1ZS5tYXhYKCkgPT09IG1heFggLSBQQURESU5HKSB7CiAg
ICAgICAgICAgICByZXR1cm4gdGhpcy5fYWRkUGF0aChbCiAgICAgICAgICAgICAgICAgIk0iLCBm
aXJzdExpbmVNaW5YICsgciwgbWluWSwKICAgICAgICAgICAgICAgICAiSCIsIG1heFggLSByLApA
QCAtMjUzLDcgKzI0OCw4IEBAIFdlYkluc3BlY3Rvci5Ib3Zlck1lbnUucHJvdG90eXBlID0gewog
ICAgICAgICAgICAgICAgICJWIiwgbWluWSArIHIsCiAgICAgICAgICAgICAgICAgInEiLCAwLCAt
ciwgciwgLXIKICAgICAgICAgICAgIF0sIC1taW5YLCAtbWluWSk7Ci0gICAgICAgIAorICAgICAg
ICB9CisKICAgICAgICAgcmV0dXJuIHRoaXMuX2FkZFBhdGgoWwogICAgICAgICAgICAgIk0iLCBm
aXJzdExpbmVNaW5YICsgciwgbWluWSwKICAgICAgICAgICAgICJIIiwgbWF4WCAtIHIsCkBAIC0y
NzQsNCArMjcwLDYgQEAgV2ViSW5zcGVjdG9yLkhvdmVyTWVudS5wcm90b3R5cGUgPSB7CiAgICAg
ICAgICAgICAicSIsIDAsIC1yLCByLCAtcgogICAgICAgICBdLCAtbWluWCwgLW1pblkpOwogICAg
IH0KLX0KK307CisKK1dlYkluc3BlY3Rvci5Ib3Zlck1lbnUuVmlzaWJsZUNsYXNzTmFtZSA9ICJ2
aXNpYmxlIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL1BvcG92ZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9Qb3BvdmVyLmpzCmluZGV4IGY2ZDk5YzUxMzAxNDEyMzc1MDJiODRlYjRkZjIwODk2OWY4
MDk4ZjAuLmM1ODdiMmFiY2YxYzdlZWQxZDFhNTQyODJiMmNhYmNkMTVlZmE5ZWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1BvcG92ZXIuanMK
KysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUG9wb3Zlci5q
cwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMjMsNjAgKzIzLDQ4IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAg
Ki8KIAotV2ViSW5zcGVjdG9yLlBvcG92ZXIgPSBmdW5jdGlvbihkZWxlZ2F0ZSkgewotICAgIC8v
IEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBh
bmQgY2FsbCBzdXBlcigpLgotICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsK
LQotICAgIHRoaXMuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKLSAgICB0aGlzLl9lZGdlID0gbnVsbDsK
LSAgICB0aGlzLl9mcmFtZSA9IG5ldyBXZWJJbnNwZWN0b3IuUmVjdDsKLSAgICB0aGlzLl9jb250
ZW50ID0gbnVsbDsKLSAgICB0aGlzLl90YXJnZXRGcmFtZSA9IG5ldyBXZWJJbnNwZWN0b3IuUmVj
dDsKLSAgICB0aGlzLl9hbmNob3JQb2ludCA9IG5ldyBXZWJJbnNwZWN0b3IuUG9pbnQ7Ci0gICAg
dGhpcy5fcHJlZmVycmVkRWRnZXMgPSBudWxsOworV2ViSW5zcGVjdG9yLlBvcG92ZXIgPSBjbGFz
cyBQb3BvdmVyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAoreworICAgIGNvbnN0cnVjdG9y
KGRlbGVnYXRlKQorICAgIHsKKyAgICAgICAgc3VwZXIoKTsKIAotICAgIHRoaXMuX2NvbnRlbnRO
ZWVkc1VwZGF0ZSA9IGZhbHNlOworICAgICAgICB0aGlzLmRlbGVnYXRlID0gZGVsZWdhdGU7Cisg
ICAgICAgIHRoaXMuX2VkZ2UgPSBudWxsOworICAgICAgICB0aGlzLl9mcmFtZSA9IG5ldyBXZWJJ
bnNwZWN0b3IuUmVjdDsKKyAgICAgICAgdGhpcy5fY29udGVudCA9IG51bGw7CisgICAgICAgIHRo
aXMuX3RhcmdldEZyYW1lID0gbmV3IFdlYkluc3BlY3Rvci5SZWN0OworICAgICAgICB0aGlzLl9h
bmNob3JQb2ludCA9IG5ldyBXZWJJbnNwZWN0b3IuUG9pbnQ7CisgICAgICAgIHRoaXMuX3ByZWZl
cnJlZEVkZ2VzID0gbnVsbDsKIAotICAgIHRoaXMuX2VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJkaXYiKTsKLSAgICB0aGlzLl9lbGVtZW50LmNsYXNzTmFtZSA9IFdlYkluc3BlY3Rv
ci5Qb3BvdmVyLlN0eWxlQ2xhc3NOYW1lOwotICAgIHRoaXMuX2NhbnZhc0lkID0gInBvcG92ZXIt
IiArIChXZWJJbnNwZWN0b3IuUG9wb3Zlci5jYW52YXNJZCsrKTsKLSAgICB0aGlzLl9lbGVtZW50
LnN0eWxlLmJhY2tncm91bmRJbWFnZSA9ICItd2Via2l0LWNhbnZhcygiICsgdGhpcy5fY2FudmFz
SWQgKyAiKSI7Ci0gICAgdGhpcy5fZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJ0cmFuc2l0aW9u
ZW5kIiwgdGhpcywgdHJ1ZSk7CisgICAgICAgIHRoaXMuX2NvbnRlbnROZWVkc1VwZGF0ZSA9IGZh
bHNlOwogCi0gICAgdGhpcy5fY29udGFpbmVyID0gdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZChk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSk7Ci0gICAgdGhpcy5fY29udGFpbmVyLmNsYXNz
TmFtZSA9ICJjb250YWluZXIiOwotfTsKKyAgICAgICAgdGhpcy5fZWxlbWVudCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTmFtZSA9
ICJwb3BvdmVyIjsKKyAgICAgICAgdGhpcy5fY2FudmFzSWQgPSAicG9wb3Zlci0iICsgKFdlYklu
c3BlY3Rvci5Qb3BvdmVyLmNhbnZhc0lkKyspOworICAgICAgICB0aGlzLl9lbGVtZW50LnN0eWxl
LmJhY2tncm91bmRJbWFnZSA9ICItd2Via2l0LWNhbnZhcygiICsgdGhpcy5fY2FudmFzSWQgKyAi
KSI7CisgICAgICAgIHRoaXMuX2VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigidHJhbnNpdGlvbmVu
ZCIsIHRoaXMsIHRydWUpOwogCi1XZWJJbnNwZWN0b3IuUG9wb3Zlci5TdHlsZUNsYXNzTmFtZSA9
ICJwb3BvdmVyIjsKLVdlYkluc3BlY3Rvci5Qb3BvdmVyLkZhZGVPdXRDbGFzc05hbWUgPSAiZmFk
ZS1vdXQiOwotV2ViSW5zcGVjdG9yLlBvcG92ZXIuY2FudmFzSWQgPSAwOwotV2ViSW5zcGVjdG9y
LlBvcG92ZXIuQ29ybmVyUmFkaXVzID0gNTsKLVdlYkluc3BlY3Rvci5Qb3BvdmVyLk1pbldpZHRo
ID0gNDA7Ci1XZWJJbnNwZWN0b3IuUG9wb3Zlci5NaW5IZWlnaHQgPSA0MDsKLVdlYkluc3BlY3Rv
ci5Qb3BvdmVyLlNoYWRvd1BhZGRpbmcgPSA1OwotV2ViSW5zcGVjdG9yLlBvcG92ZXIuQ29udGVu
dFBhZGRpbmcgPSA1OwotV2ViSW5zcGVjdG9yLlBvcG92ZXIuQW5jaG9yU2l6ZSA9IG5ldyBXZWJJ
bnNwZWN0b3IuU2l6ZSgyMiwgMTEpOwotV2ViSW5zcGVjdG9yLlBvcG92ZXIuU2hhZG93RWRnZUlu
c2V0cyA9IG5ldyBXZWJJbnNwZWN0b3IuRWRnZUluc2V0cyhXZWJJbnNwZWN0b3IuUG9wb3Zlci5T
aGFkb3dQYWRkaW5nKTsKLQotV2ViSW5zcGVjdG9yLlBvcG92ZXIucHJvdG90eXBlID0gewotICAg
IGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuUG9wb3ZlciwKKyAgICAgICAgdGhpcy5fY29udGFp
bmVyID0gdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJk
aXYiKSk7CisgICAgICAgIHRoaXMuX2NvbnRhaW5lci5jbGFzc05hbWUgPSAiY29udGFpbmVyIjsK
KyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBlbGVtZW50KCkKICAgICB7CiAgICAg
ICAgIHJldHVybiB0aGlzLl9lbGVtZW50OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGZyYW1l
KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9mcmFtZTsKLSAgICB9LAorICAgIH0KIAog
ICAgIGdldCB2aXNpYmxlKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50LnBh
cmVudE5vZGUgPT09IGRvY3VtZW50LmJvZHkgJiYgIXRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmNv
bnRhaW5zKFdlYkluc3BlY3Rvci5Qb3BvdmVyLkZhZGVPdXRDbGFzc05hbWUpOwotICAgIH0sCisg
ICAgfQogCiAgICAgc2V0IGZyYW1lKGZyYW1lKQogICAgIHsKQEAgLTg2LDcgKzc0LDcgQEAgV2Vi
SW5zcGVjdG9yLlBvcG92ZXIucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9lbGVtZW50LnN0
eWxlLmhlaWdodCA9IGZyYW1lLnNpemUuaGVpZ2h0ICsgInB4IjsKICAgICAgICAgdGhpcy5fZWxl
bWVudC5zdHlsZS5iYWNrZ3JvdW5kU2l6ZSA9IGZyYW1lLnNpemUud2lkdGggKyAicHggIiArIGZy
YW1lLnNpemUuaGVpZ2h0ICsgInB4IjsKICAgICAgICAgdGhpcy5fZnJhbWUgPSBmcmFtZTsKLSAg
ICB9LAorICAgIH0KIAogICAgIHNldCBjb250ZW50KGNvbnRlbnQpCiAgICAgewpAQCAtOTksOSAr
ODcsOSBAQCBXZWJJbnNwZWN0b3IuUG9wb3Zlci5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgaWYg
KHRoaXMudmlzaWJsZSkKICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZSh0cnVlKTsKLSAgICB9LAor
ICAgIH0KIAotICAgIHVwZGF0ZTogZnVuY3Rpb24oKQorICAgIHVwZGF0ZSgpCiAgICAgewogICAg
ICAgICBpZiAoIXRoaXMudmlzaWJsZSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTExMyw5ICsx
MDEsOSBAQCBXZWJJbnNwZWN0b3IuUG9wb3Zlci5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgaWYg
KHByZXZpb3VzbHlGb2N1c2VkRWxlbWVudCkKICAgICAgICAgICAgIHByZXZpb3VzbHlGb2N1c2Vk
RWxlbWVudC5mb2N1cygpOwotICAgIH0sCisgICAgfQogCi0gICAgcHJlc2VudDogZnVuY3Rpb24o
dGFyZ2V0RnJhbWUsIHByZWZlcnJlZEVkZ2VzKQorICAgIHByZXNlbnQodGFyZ2V0RnJhbWUsIHBy
ZWZlcnJlZEVkZ2VzKQogICAgIHsKICAgICAgICAgdGhpcy5fdGFyZ2V0RnJhbWUgPSB0YXJnZXRG
cmFtZTsKICAgICAgICAgdGhpcy5fcHJlZmVycmVkRWRnZXMgPSBwcmVmZXJyZWRFZGdlczsKQEAg
LTEyNiw5ICsxMTQsOSBAQCBXZWJJbnNwZWN0b3IuUG9wb3Zlci5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIHRoaXMuX2FkZExpc3RlbmVyc0lmTmVlZGVkKCk7CiAKICAgICAgICAgdGhpcy5fdXBkYXRl
KCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBwcmVzZW50TmV3Q29udGVudFdpdGhGcmFtZTogZnVu
Y3Rpb24oY29udGVudCwgdGFyZ2V0RnJhbWUsIHByZWZlcnJlZEVkZ2VzKQorICAgIHByZXNlbnRO
ZXdDb250ZW50V2l0aEZyYW1lKGNvbnRlbnQsIHRhcmdldEZyYW1lLCBwcmVmZXJyZWRFZGdlcykK
ICAgICB7CiAgICAgICAgIHRoaXMuX2NvbnRlbnQgPSBjb250ZW50OwogICAgICAgICB0aGlzLl9j
b250ZW50TmVlZHNVcGRhdGUgPSB0cnVlOwpAQCAtMTQwLDkgKzEyOCw5IEBAIFdlYkluc3BlY3Rv
ci5Qb3BvdmVyLnByb3RvdHlwZSA9IHsKIAogICAgICAgICB2YXIgc2hvdWxkQW5pbWF0ZSA9IHRo
aXMudmlzaWJsZTsKICAgICAgICAgdGhpcy5fdXBkYXRlKHNob3VsZEFuaW1hdGUpOwotICAgIH0s
CisgICAgfQogCi0gICAgZGlzbWlzczogZnVuY3Rpb24oKQorICAgIGRpc21pc3MoKQogICAgIHsK
ICAgICAgICAgaWYgKHRoaXMuX2VsZW1lbnQucGFyZW50Tm9kZSAhPT0gZG9jdW1lbnQuYm9keSkK
ICAgICAgICAgICAgIHJldHVybjsKQEAgLTE1Niw5ICsxNDQsOSBAQCBXZWJJbnNwZWN0b3IuUG9w
b3Zlci5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgaWYgKHRoaXMuZGVsZWdhdGUgJiYgdHlwZW9m
IHRoaXMuZGVsZWdhdGUud2lsbERpc21pc3NQb3BvdmVyID09PSAiZnVuY3Rpb24iKQogICAgICAg
ICAgICAgdGhpcy5kZWxlZ2F0ZS53aWxsRGlzbWlzc1BvcG92ZXIodGhpcyk7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBoYW5kbGVFdmVudDogZnVuY3Rpb24oZXZlbnQpCisgICAgaGFuZGxlRXZlbnQo
ZXZlbnQpCiAgICAgewogICAgICAgICBzd2l0Y2ggKGV2ZW50LnR5cGUpIHsKICAgICAgICAgY2Fz
ZSAibW91c2Vkb3duIjoKQEAgLTE3NiwxMSArMTY0LDExIEBAIFdlYkluc3BlY3Rvci5Qb3BvdmVy
LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJpdmF0ZQogCi0gICAgX3VwZGF0ZTog
ZnVuY3Rpb24oc2hvdWxkQW5pbWF0ZSkKKyAgICBfdXBkYXRlKHNob3VsZEFuaW1hdGUpCiAgICAg
ewogICAgICAgICBpZiAoc2hvdWxkQW5pbWF0ZSkKICAgICAgICAgICAgIHZhciBwcmV2aW91c0Vk
Z2UgPSB0aGlzLl9lZGdlOwpAQCAtMjEyLDcgKzIwMCw3IEBAIFdlYkluc3BlY3Rvci5Qb3BvdmVy
LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuX3ByZWZlcnJlZFNpemUgPSBuZXcgV2Vi
SW5zcGVjdG9yLlNpemUoTWF0aC5jZWlsKHBvcG92ZXJCb3VuZHMud2lkdGgpLCBNYXRoLmNlaWwo
cG9wb3ZlckJvdW5kcy5oZWlnaHQpKTsKICAgICAgICAgfQogCi0gICAgICAgIGNvbnN0IHRpdGxl
QmFyT2Zmc2V0ID0gV2ViSW5zcGVjdG9yLlBsYXRmb3JtLm5hbWUgPT09ICJtYWMiICYmICFXZWJJ
bnNwZWN0b3IuUGxhdGZvcm0uaXNMZWdhY3lNYWNPUyA/IDIyIDogMDsKKyAgICAgICAgdmFyIHRp
dGxlQmFyT2Zmc2V0ID0gV2ViSW5zcGVjdG9yLlBsYXRmb3JtLm5hbWUgPT09ICJtYWMiICYmICFX
ZWJJbnNwZWN0b3IuUGxhdGZvcm0uaXNMZWdhY3lNYWNPUyA/IDIyIDogMDsKICAgICAgICAgdmFy
IGNvbnRhaW5lckZyYW1lID0gbmV3IFdlYkluc3BlY3Rvci5SZWN0KDAsIHRpdGxlQmFyT2Zmc2V0
LCB3aW5kb3cuaW5uZXJXaWR0aCwgd2luZG93LmlubmVySGVpZ2h0IC0gdGl0bGVCYXJPZmZzZXQp
OwogICAgICAgICAvLyBUaGUgZnJhbWUgb2YgdGhlIHdpbmRvdyB3aXRoIGEgbGl0dGxlIGluc2V0
IHRvIG1ha2Ugc3VyZSB3ZSBoYXZlIHJvb20gZm9yIHNoYWRvd3MuCiAgICAgICAgIGNvbnRhaW5l
ckZyYW1lID0gY29udGFpbmVyRnJhbWUuaW5zZXQoV2ViSW5zcGVjdG9yLlBvcG92ZXIuU2hhZG93
RWRnZUluc2V0cyk7CkBAIC0yOTcsOSArMjg1LDkgQEAgV2ViSW5zcGVjdG9yLlBvcG92ZXIucHJv
dG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgdGhpcy5fY29udGVudE5lZWRzVXBkYXRl
ID0gZmFsc2U7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfY3NzQ2xhc3NOYW1lRm9yRWRnZTogZnVu
Y3Rpb24oKQorICAgIF9jc3NDbGFzc05hbWVGb3JFZGdlKCkKICAgICB7CiAgICAgICAgIHN3aXRj
aCAodGhpcy5fZWRnZSkgewogICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5SZWN0RWRnZS5NSU5f
WDogLy8gRGlzcGxheWVkIG9uIHRoZSBsZWZ0IG9mIHRoZSB0YXJnZXQsIGFycm93IHBvaW50cyBy
aWdodC4KQEAgLTMxMywxNSArMzAxLDE1IEBAIFdlYkluc3BlY3Rvci5Qb3BvdmVyLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgfQogICAgICAgICBjb25zb2xlLmVycm9yKCJVbmtub3duIGVkZ2UuIik7
CiAgICAgICAgIHJldHVybiAiYXJyb3ctdXAiOwotICAgIH0sCisgICAgfQogCi0gICAgX3NldEFu
Y2hvclBvaW50OiBmdW5jdGlvbihhbmNob3JQb2ludCkgeworICAgIF9zZXRBbmNob3JQb2ludChh
bmNob3JQb2ludCkgewogICAgICAgICBhbmNob3JQb2ludC54ID0gTWF0aC5mbG9vcihhbmNob3JQ
b2ludC54KTsKICAgICAgICAgYW5jaG9yUG9pbnQueSA9IE1hdGguZmxvb3IoYW5jaG9yUG9pbnQu
eSk7CiAgICAgICAgIHRoaXMuX2FuY2hvclBvaW50ID0gYW5jaG9yUG9pbnQ7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBfYW5pbWF0ZUZyYW1lOiBmdW5jdGlvbih0b0ZyYW1lLCB0b0FuY2hvcikKKyAg
ICBfYW5pbWF0ZUZyYW1lKHRvRnJhbWUsIHRvQW5jaG9yKQogICAgIHsKICAgICAgICAgdmFyIHN0
YXJ0VGltZSA9IERhdGUubm93KCk7CiAgICAgICAgIHZhciBkdXJhdGlvbiA9IDM1MDsKQEAgLTM1
OSw5ICszNDcsOSBAQCBXZWJJbnNwZWN0b3IuUG9wb3Zlci5wcm90b3R5cGUgPSB7CiAgICAgICAg
IH0KIAogICAgICAgICBkcmF3QmFja2dyb3VuZC5jYWxsKHRoaXMpOwotICAgIH0sCisgICAgfQog
Ci0gICAgX2RyYXdCYWNrZ3JvdW5kOiBmdW5jdGlvbigpCisgICAgX2RyYXdCYWNrZ3JvdW5kKCkK
ICAgICB7CiAgICAgICAgIHZhciBzY2FsZUZhY3RvciA9IHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlv
OwogCkBAIC00MjksOSArNDE3LDkgQEAgV2ViSW5zcGVjdG9yLlBvcG92ZXIucHJvdG90eXBlID0g
ewogICAgICAgICBmaW5hbENvbnRleHQuc2hhZG93Q29sb3IgPSAicmdiYSgwLCAwLCAwLCAwLjUp
IjsKIAogICAgICAgICBmaW5hbENvbnRleHQuZHJhd0ltYWdlKHNjcmF0Y2hDYW52YXMsIDAsIDAs
IHNjYWxlZFdpZHRoLCBzY2FsZWRIZWlnaHQpOwotICAgIH0sCisgICAgfQogCi0gICAgX2Jlc3RN
ZXRyaWNzRm9yRWRnZTogZnVuY3Rpb24ocHJlZmVycmVkU2l6ZSwgdGFyZ2V0RnJhbWUsIGNvbnRh
aW5lckZyYW1lLCBlZGdlKQorICAgIF9iZXN0TWV0cmljc0ZvckVkZ2UocHJlZmVycmVkU2l6ZSwg
dGFyZ2V0RnJhbWUsIGNvbnRhaW5lckZyYW1lLCBlZGdlKQogICAgIHsKICAgICAgICAgdmFyIHgs
IHk7CiAgICAgICAgIHZhciB3aWR0aCA9IHByZWZlcnJlZFNpemUud2lkdGggKyAoV2ViSW5zcGVj
dG9yLlBvcG92ZXIuU2hhZG93UGFkZGluZyAqIDIpICsgKFdlYkluc3BlY3Rvci5Qb3BvdmVyLkNv
bnRlbnRQYWRkaW5nICogMik7CkBAIC00OTQsOSArNDgyLDkgQEAgV2ViSW5zcGVjdG9yLlBvcG92
ZXIucHJvdG90eXBlID0gewogICAgICAgICAgICAgZnJhbWU6IGJlc3RGcmFtZSwKICAgICAgICAg
ICAgIGNvbnRlbnRTaXplOiBuZXcgV2ViSW5zcGVjdG9yLlNpemUod2lkdGgsIGhlaWdodCkKICAg
ICAgICAgfTsKLSAgICB9LAorICAgIH0KIAotICAgIF9kcmF3RnJhbWU6IGZ1bmN0aW9uKGN0eCwg
Ym91bmRzLCBhbmNob3JFZGdlKQorICAgIF9kcmF3RnJhbWUoY3R4LCBib3VuZHMsIGFuY2hvckVk
Z2UpCiAgICAgewogICAgICAgICB2YXIgciA9IFdlYkluc3BlY3Rvci5Qb3BvdmVyLkNvcm5lclJh
ZGl1czsKICAgICAgICAgdmFyIGFycm93SGFsZkxlbmd0aCA9IFdlYkluc3BlY3Rvci5Qb3BvdmVy
LkFuY2hvclNpemUud2lkdGggLyAyOwpAQCAtNTQ2LDkgKzUzNCw5IEBAIFdlYkluc3BlY3Rvci5Q
b3BvdmVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAg
ICAgIGN0eC5jbG9zZVBhdGgoKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9hZGRMaXN0ZW5lcnNJ
Zk5lZWRlZDogZnVuY3Rpb24oKQorICAgIF9hZGRMaXN0ZW5lcnNJZk5lZWRlZCgpCiAgICAgewog
ICAgICAgICBpZiAoIXRoaXMuX2lzTGlzdGVuaW5nRm9yUG9wb3ZlckV2ZW50cykgewogICAgICAg
ICAgICAgdGhpcy5faXNMaXN0ZW5pbmdGb3JQb3BvdmVyRXZlbnRzID0gdHJ1ZTsKQEAgLTU1OCw0
ICs1NDYsMTIgQEAgV2ViSW5zcGVjdG9yLlBvcG92ZXIucHJvdG90eXBlID0gewogICAgIH0KIH07
CiAKLVdlYkluc3BlY3Rvci5Qb3BvdmVyLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0
b3IuT2JqZWN0LnByb3RvdHlwZTsKK1dlYkluc3BlY3Rvci5Qb3BvdmVyLkZhZGVPdXRDbGFzc05h
bWUgPSAiZmFkZS1vdXQiOworV2ViSW5zcGVjdG9yLlBvcG92ZXIuY2FudmFzSWQgPSAwOworV2Vi
SW5zcGVjdG9yLlBvcG92ZXIuQ29ybmVyUmFkaXVzID0gNTsKK1dlYkluc3BlY3Rvci5Qb3BvdmVy
Lk1pbldpZHRoID0gNDA7CitXZWJJbnNwZWN0b3IuUG9wb3Zlci5NaW5IZWlnaHQgPSA0MDsKK1dl
Ykluc3BlY3Rvci5Qb3BvdmVyLlNoYWRvd1BhZGRpbmcgPSA1OworV2ViSW5zcGVjdG9yLlBvcG92
ZXIuQ29udGVudFBhZGRpbmcgPSA1OworV2ViSW5zcGVjdG9yLlBvcG92ZXIuQW5jaG9yU2l6ZSA9
IG5ldyBXZWJJbnNwZWN0b3IuU2l6ZSgyMiwgMTEpOworV2ViSW5zcGVjdG9yLlBvcG92ZXIuU2hh
ZG93RWRnZUluc2V0cyA9IG5ldyBXZWJJbnNwZWN0b3IuRWRnZUluc2V0cyhXZWJJbnNwZWN0b3Iu
UG9wb3Zlci5TaGFkb3dQYWRkaW5nKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Byb2JlU2V0RGV0YWlsc1NlY3Rpb24uanMgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Qcm9iZVNldERldGFpbHNTZWN0aW9u
LmpzCmluZGV4IDc3YWEyMTM5N2Y4YjVmMzBiYjExMTU5YjA3ZDJkNjdmZmY5MDFjMTkuLmJhNWI2
MjMwMGE5ZWEwMjY3ZDgwMTkyMTdkZDg0MTM2NTcxODBhOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Byb2JlU2V0RGV0YWlsc1NlY3Rpb24u
anMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUHJvYmVT
ZXREZXRhaWxzU2VjdGlvbi5qcwpAQCAtMSw0ICsxLDUgQEAKIC8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAy
MDEzIFVuaXZlcnNpdHkgb2YgV2FzaGluZ3Rvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKQEAgLTIzLDcxICsyNCw2NSBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5Qcm9iZVNldERldGFpbHNTZWN0aW9uID0g
ZnVuY3Rpb24ocHJvYmVTZXQpCitXZWJJbnNwZWN0b3IuUHJvYmVTZXREZXRhaWxzU2VjdGlvbiA9
IGNsYXNzIFByb2JlU2V0RGV0YWlsc1NlY3Rpb24gZXh0ZW5kcyBXZWJJbnNwZWN0b3IuRGV0YWls
c1NlY3Rpb24KIHsKLSAgICBjb25zb2xlLmFzc2VydChwcm9iZVNldCBpbnN0YW5jZW9mIFdlYklu
c3BlY3Rvci5Qcm9iZVNldCwgIkludmFsaWQgUHJvYmVTZXQgYXJndW1lbnQ6IiwgcHJvYmVTZXQp
OworICAgIGNvbnN0cnVjdG9yKHByb2JlU2V0KQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3Nl
cnQocHJvYmVTZXQgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuUHJvYmVTZXQsICJJbnZhbGlkIFBy
b2JlU2V0IGFyZ3VtZW50OiIsIHByb2JlU2V0KTsKIAotICAgIHRoaXMuX2xpc3RlbmVycyA9IG5l
dyBXZWJJbnNwZWN0b3IuRXZlbnRMaXN0ZW5lclNldCh0aGlzLCAiUHJvYmVTZXREZXRhaWxzU2Vj
dGlvbiBVSSBsaXN0ZW5lcnMiKTsKLSAgICB0aGlzLl9wcm9iZVNldCA9IHByb2JlU2V0OworICAg
ICAgICB2YXIgb3B0aW9uc0VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsK
KyAgICAgICAgb3B0aW9uc0VsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuUHJvYmVT
ZXREZXRhaWxzU2VjdGlvbi5TZWN0aW9uT3B0aW9uc1N0eWxlQ2xhc3NOYW1lKTsKIAotICAgIHZh
ciBvcHRpb25zRWxlbWVudCA9IHRoaXMuX29wdGlvbnNFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgiZGl2Iik7Ci0gICAgb3B0aW9uc0VsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNw
ZWN0b3IuUHJvYmVTZXREZXRhaWxzU2VjdGlvbi5TZWN0aW9uT3B0aW9uc1N0eWxlQ2xhc3NOYW1l
KTsKKyAgICAgICAgdmFyIGRhdGFHcmlkID0gbmV3IFdlYkluc3BlY3Rvci5Qcm9iZVNldERhdGFH
cmlkKHByb2JlU2V0KTsKIAotICAgIHZhciByZW1vdmVQcm9iZUJ1dHRvbiA9IG9wdGlvbnNFbGVt
ZW50LmNyZWF0ZUNoaWxkKCJpbWciKTsKLSAgICByZW1vdmVQcm9iZUJ1dHRvbi5jbGFzc0xpc3Qu
YWRkKFdlYkluc3BlY3Rvci5Qcm9iZVNldERldGFpbHNTZWN0aW9uLlByb2JlUmVtb3ZlU3R5bGVD
bGFzc05hbWUpOwotICAgIHJlbW92ZVByb2JlQnV0dG9uLmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVj
dG9yLlByb2JlU2V0RGV0YWlsc1NlY3Rpb24uUHJvYmVCdXR0b25FbmFibGVkU3R5bGVDbGFzc05h
bWUpOwotICAgIHRoaXMuX2xpc3RlbmVycy5yZWdpc3RlcihyZW1vdmVQcm9iZUJ1dHRvbiwgImNs
aWNrIiwgdGhpcy5fcmVtb3ZlQnV0dG9uQ2xpY2tlZCk7CisgICAgICAgIHZhciBzaW5nbGV0b25S
b3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworICAgICAgICBzaW5nbGV0
b25Sb3cuZWxlbWVudC5hcHBlbmRDaGlsZChkYXRhR3JpZC5lbGVtZW50KTsKIAotICAgIHZhciBj
bGVhclNhbXBsZXNCdXR0b24gPSBvcHRpb25zRWxlbWVudC5jcmVhdGVDaGlsZCgiaW1nIik7Ci0g
ICAgY2xlYXJTYW1wbGVzQnV0dG9uLmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLlByb2JlU2V0
RGV0YWlsc1NlY3Rpb24uUHJvYmVDbGVhclNhbXBsZXNTdHlsZUNsYXNzTmFtZSk7Ci0gICAgY2xl
YXJTYW1wbGVzQnV0dG9uLmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLlByb2JlU2V0RGV0YWls
c1NlY3Rpb24uUHJvYmVCdXR0b25FbmFibGVkU3R5bGVDbGFzc05hbWUpOwotICAgIHRoaXMuX2xp
c3RlbmVycy5yZWdpc3RlcihjbGVhclNhbXBsZXNCdXR0b24sICJjbGljayIsIHRoaXMuX2NsZWFy
U2FtcGxlc0J1dHRvbkNsaWNrZWQpOworICAgICAgICB2YXIgcHJvYmVTZWN0aW9uR3JvdXAgPSBu
ZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uR3JvdXAoW3NpbmdsZXRvblJvd10pOwogCi0g
ICAgdmFyIGFkZFByb2JlQnV0dG9uID0gb3B0aW9uc0VsZW1lbnQuY3JlYXRlQ2hpbGQoImltZyIp
OwotICAgIGFkZFByb2JlQnV0dG9uLmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLlByb2JlU2V0
RGV0YWlsc1NlY3Rpb24uQWRkUHJvYmVWYWx1ZVN0eWxlQ2xhc3NOYW1lKTsKLSAgICB0aGlzLl9s
aXN0ZW5lcnMucmVnaXN0ZXIoYWRkUHJvYmVCdXR0b24sICJjbGljayIsIHRoaXMuX2FkZFByb2Jl
QnV0dG9uQ2xpY2tlZCk7CisgICAgICAgIHN1cGVyKCJwcm9iZSIsICIiLCBbcHJvYmVTZWN0aW9u
R3JvdXBdLCBvcHRpb25zRWxlbWVudCk7CiAKLSAgICAvLyBVcGRhdGUgdGhlIHNvdXJjZSBsaW5r
IHdoZW4gdGhlIGJyZWFrcG9pbnQncyByZXNvbHZlZCBzdGF0ZSBjaGFuZ2VzLAotICAgIC8vIHNv
IHRoYXQgaXQgY2FuIGJlY29tZSBhIGxpdmUgbG9jYXRpb24gbGluayB3aGVuIHBvc3NpYmxlLgot
ICAgIHRoaXMuX3VwZGF0ZUxpbmtFbGVtZW50KCk7Ci0gICAgdGhpcy5fbGlzdGVuZXJzLnJlZ2lz
dGVyKHRoaXMuX3Byb2JlU2V0LmJyZWFrcG9pbnQsIFdlYkluc3BlY3Rvci5CcmVha3BvaW50LkV2
ZW50LlJlc29sdmVkU3RhdGVEaWRDaGFuZ2UsIHRoaXMuX3VwZGF0ZUxpbmtFbGVtZW50KTsKKyAg
ICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoInByb2JlLXNldCIpOwogCi0gICAgdGhp
cy5fZGF0YUdyaWQgPSBuZXcgV2ViSW5zcGVjdG9yLlByb2JlU2V0RGF0YUdyaWQocHJvYmVTZXQp
OwotICAgIHZhciBzaW5nbGV0b25Sb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9u
Um93OwotICAgIHNpbmdsZXRvblJvdy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2RhdGFHcmlk
LmVsZW1lbnQpOwotICAgIHZhciBwcm9iZVNlY3Rpb25Hcm91cCA9IG5ldyBXZWJJbnNwZWN0b3Iu
RGV0YWlsc1NlY3Rpb25Hcm91cChbc2luZ2xldG9uUm93XSk7CisgICAgICAgIHRoaXMuX29wdGlv
bnNFbGVtZW50ID0gb3B0aW9uc0VsZW1lbnQ7CiAKLSAgICB2YXIgZHVtbXlUaXRsZSA9ICIiOwot
ICAgIFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbi5jYWxsKHRoaXMsICJwcm9iZSIsIGR1bW15
VGl0bGUsIFtwcm9iZVNlY3Rpb25Hcm91cF0sIG9wdGlvbnNFbGVtZW50KTsKLSAgICB0aGlzLmVs
ZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuUHJvYmVTZXREZXRhaWxzU2VjdGlvbi5T
dHlsZUNsYXNzTmFtZSk7CisgICAgICAgIHRoaXMuX2xpc3RlbmVycyA9IG5ldyBXZWJJbnNwZWN0
b3IuRXZlbnRMaXN0ZW5lclNldCh0aGlzLCAiUHJvYmVTZXREZXRhaWxzU2VjdGlvbiBVSSBsaXN0
ZW5lcnMiKTsKKyAgICAgICAgdGhpcy5fcHJvYmVTZXQgPSBwcm9iZVNldDsKKyAgICAgICAgdGhp
cy5fZGF0YUdyaWQgPSBkYXRhR3JpZDsKIAotICAgIHRoaXMuX2xpc3RlbmVycy5pbnN0YWxsKCk7
Ci19OworICAgICAgICB2YXIgcmVtb3ZlUHJvYmVCdXR0b24gPSBvcHRpb25zRWxlbWVudC5jcmVh
dGVDaGlsZCgiaW1nIik7CisgICAgICAgIHJlbW92ZVByb2JlQnV0dG9uLmNsYXNzTGlzdC5hZGQo
V2ViSW5zcGVjdG9yLlByb2JlU2V0RGV0YWlsc1NlY3Rpb24uUHJvYmVSZW1vdmVTdHlsZUNsYXNz
TmFtZSk7CisgICAgICAgIHJlbW92ZVByb2JlQnV0dG9uLmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVj
dG9yLlByb2JlU2V0RGV0YWlsc1NlY3Rpb24uUHJvYmVCdXR0b25FbmFibGVkU3R5bGVDbGFzc05h
bWUpOworICAgICAgICB0aGlzLl9saXN0ZW5lcnMucmVnaXN0ZXIocmVtb3ZlUHJvYmVCdXR0b24s
ICJjbGljayIsIHRoaXMuX3JlbW92ZUJ1dHRvbkNsaWNrZWQpOwogCi1XZWJJbnNwZWN0b3IuUHJv
YmVTZXREZXRhaWxzU2VjdGlvbi5BZGRQcm9iZVZhbHVlU3R5bGVDbGFzc05hbWUgPSAicHJvYmUt
YWRkIjsKLVdlYkluc3BlY3Rvci5Qcm9iZVNldERldGFpbHNTZWN0aW9uLkRvbnRGbG9hdExpbmtT
dHlsZUNsYXNzTmFtZSA9ICJkb250LWZsb2F0IjsKLVdlYkluc3BlY3Rvci5Qcm9iZVNldERldGFp
bHNTZWN0aW9uLlByb2JlQnV0dG9uRW5hYmxlZFN0eWxlQ2xhc3NOYW1lID0gImVuYWJsZWQiOwot
V2ViSW5zcGVjdG9yLlByb2JlU2V0RGV0YWlsc1NlY3Rpb24uUHJvYmVQb3BvdmVyRWxlbWVudFN0
eWxlQ2xhc3NOYW1lID0gInByb2JlLXBvcG92ZXIiOwotV2ViSW5zcGVjdG9yLlByb2JlU2V0RGV0
YWlsc1NlY3Rpb24uUHJvYmVDbGVhclNhbXBsZXNTdHlsZUNsYXNzTmFtZSA9ICJwcm9iZS1jbGVh
ci1zYW1wbGVzIjsKLVdlYkluc3BlY3Rvci5Qcm9iZVNldERldGFpbHNTZWN0aW9uLlByb2JlUmVt
b3ZlU3R5bGVDbGFzc05hbWUgPSAicHJvYmUtcmVtb3ZlIjsKLVdlYkluc3BlY3Rvci5Qcm9iZVNl
dERldGFpbHNTZWN0aW9uLlNlY3Rpb25PcHRpb25zU3R5bGVDbGFzc05hbWUgPSAib3B0aW9ucyI7
Ci1XZWJJbnNwZWN0b3IuUHJvYmVTZXREZXRhaWxzU2VjdGlvbi5TdHlsZUNsYXNzTmFtZSA9ICJw
cm9iZS1zZXQiOworICAgICAgICB2YXIgY2xlYXJTYW1wbGVzQnV0dG9uID0gb3B0aW9uc0VsZW1l
bnQuY3JlYXRlQ2hpbGQoImltZyIpOworICAgICAgICBjbGVhclNhbXBsZXNCdXR0b24uY2xhc3NM
aXN0LmFkZChXZWJJbnNwZWN0b3IuUHJvYmVTZXREZXRhaWxzU2VjdGlvbi5Qcm9iZUNsZWFyU2Ft
cGxlc1N0eWxlQ2xhc3NOYW1lKTsKKyAgICAgICAgY2xlYXJTYW1wbGVzQnV0dG9uLmNsYXNzTGlz
dC5hZGQoV2ViSW5zcGVjdG9yLlByb2JlU2V0RGV0YWlsc1NlY3Rpb24uUHJvYmVCdXR0b25FbmFi
bGVkU3R5bGVDbGFzc05hbWUpOworICAgICAgICB0aGlzLl9saXN0ZW5lcnMucmVnaXN0ZXIoY2xl
YXJTYW1wbGVzQnV0dG9uLCAiY2xpY2siLCB0aGlzLl9jbGVhclNhbXBsZXNCdXR0b25DbGlja2Vk
KTsKIAotV2ViSW5zcGVjdG9yLlByb2JlU2V0RGV0YWlsc1NlY3Rpb24ucHJvdG90eXBlID0gewot
ICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uLnByb3RvdHlwZSwKLSAg
ICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLlByb2JlU2V0RGV0YWlsc1NlY3Rpb24sCisgICAg
ICAgIHZhciBhZGRQcm9iZUJ1dHRvbiA9IG9wdGlvbnNFbGVtZW50LmNyZWF0ZUNoaWxkKCJpbWci
KTsKKyAgICAgICAgYWRkUHJvYmVCdXR0b24uY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuUHJv
YmVTZXREZXRhaWxzU2VjdGlvbi5BZGRQcm9iZVZhbHVlU3R5bGVDbGFzc05hbWUpOworICAgICAg
ICB0aGlzLl9saXN0ZW5lcnMucmVnaXN0ZXIoYWRkUHJvYmVCdXR0b24sICJjbGljayIsIHRoaXMu
X2FkZFByb2JlQnV0dG9uQ2xpY2tlZCk7CisKKyAgICAgICAgLy8gVXBkYXRlIHRoZSBzb3VyY2Ug
bGluayB3aGVuIHRoZSBicmVha3BvaW50J3MgcmVzb2x2ZWQgc3RhdGUgY2hhbmdlcywKKyAgICAg
ICAgLy8gc28gdGhhdCBpdCBjYW4gYmVjb21lIGEgbGl2ZSBsb2NhdGlvbiBsaW5rIHdoZW4gcG9z
c2libGUuCisgICAgICAgIHRoaXMuX3VwZGF0ZUxpbmtFbGVtZW50KCk7CisgICAgICAgIHRoaXMu
X2xpc3RlbmVycy5yZWdpc3Rlcih0aGlzLl9wcm9iZVNldC5icmVha3BvaW50LCBXZWJJbnNwZWN0
b3IuQnJlYWtwb2ludC5FdmVudC5SZXNvbHZlZFN0YXRlRGlkQ2hhbmdlLCB0aGlzLl91cGRhdGVM
aW5rRWxlbWVudCk7CisKKyAgICAgICAgdGhpcy5fbGlzdGVuZXJzLmluc3RhbGwoKTsKKyAgICB9
CiAKICAgICAvLyBQdWJsaWMKIAotICAgIGNsb3NlZDogZnVuY3Rpb24oKQorICAgIGNsb3NlZCgp
CiAgICAgewogICAgICAgICB0aGlzLl9saXN0ZW5lcnMudW5pbnN0YWxsKHRydWUpOwogICAgICAg
ICB0aGlzLmVsZW1lbnQucmVtb3ZlKCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcml2YXRl
CiAKLSAgICBfdXBkYXRlTGlua0VsZW1lbnQ6IGZ1bmN0aW9uKCkKKyAgICBfdXBkYXRlTGlua0Vs
ZW1lbnQoKQogICAgIHsKICAgICAgICAgdmFyIGJyZWFrcG9pbnQgPSB0aGlzLl9wcm9iZVNldC5i
cmVha3BvaW50OwogICAgICAgICB2YXIgdGl0bGVFbGVtZW50ID0gbnVsbDsKQEAgLTEwOCw5ICsx
MDMsOSBAQCBXZWJJbnNwZWN0b3IuUHJvYmVTZXREZXRhaWxzU2VjdGlvbi5wcm90b3R5cGUgPSB7
CiAKICAgICAgICAgdGhpcy5fbGlua0VsZW1lbnQgPSB0aXRsZUVsZW1lbnQ7CiAgICAgICAgIHRo
aXMuX29wdGlvbnNFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2xpbmtFbGVtZW50KTsKLSAgICB9
LAorICAgIH0KIAotICAgIF9hZGRQcm9iZUJ1dHRvbkNsaWNrZWQ6IGZ1bmN0aW9uKGV2ZW50KQor
ICAgIF9hZGRQcm9iZUJ1dHRvbkNsaWNrZWQoZXZlbnQpCiAgICAgewogICAgICAgICBmdW5jdGlv
biBjcmVhdGVQcm9iZUZyb21FbnRlcmVkRXhwcmVzc2lvbih2aXNpYmxlUG9wb3ZlciwgZXZlbnQp
CiAgICAgICAgIHsKQEAgLTEzNCwxNSArMTI5LDI0IEBAIFdlYkluc3BlY3Rvci5Qcm9iZVNldERl
dGFpbHNTZWN0aW9uLnByb3RvdHlwZSA9IHsKICAgICAgICAgdmFyIHRhcmdldCA9IFdlYkluc3Bl
Y3Rvci5SZWN0LnJlY3RGcm9tQ2xpZW50UmVjdChldmVudC50YXJnZXQuZ2V0Qm91bmRpbmdDbGll
bnRSZWN0KCkpOwogICAgICAgICBwb3BvdmVyLnByZXNlbnQodGFyZ2V0LCBbV2ViSW5zcGVjdG9y
LlJlY3RFZGdlLk1BWF9ZLCBXZWJJbnNwZWN0b3IuUmVjdEVkZ2UuTUlOX1ksIFdlYkluc3BlY3Rv
ci5SZWN0RWRnZS5NQVhfWF0pOwogICAgICAgICB0ZXh0Qm94LnNlbGVjdCgpOwotICAgIH0sCisg
ICAgfQogCi0gICAgX3JlbW92ZUJ1dHRvbkNsaWNrZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9y
ZW1vdmVCdXR0b25DbGlja2VkKGV2ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5fcHJvYmVTZXQu
Y2xlYXIoKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9jbGVhclNhbXBsZXNCdXR0b25DbGlja2Vk
OiBmdW5jdGlvbihldmVudCkKKyAgICBfY2xlYXJTYW1wbGVzQnV0dG9uQ2xpY2tlZChldmVudCkK
ICAgICB7CiAgICAgICAgIHRoaXMuX3Byb2JlU2V0LmNsZWFyU2FtcGxlcygpOwogICAgIH0KIH07
CisKK1dlYkluc3BlY3Rvci5Qcm9iZVNldERldGFpbHNTZWN0aW9uLkFkZFByb2JlVmFsdWVTdHls
ZUNsYXNzTmFtZSA9ICJwcm9iZS1hZGQiOworV2ViSW5zcGVjdG9yLlByb2JlU2V0RGV0YWlsc1Nl
Y3Rpb24uRG9udEZsb2F0TGlua1N0eWxlQ2xhc3NOYW1lID0gImRvbnQtZmxvYXQiOworV2ViSW5z
cGVjdG9yLlByb2JlU2V0RGV0YWlsc1NlY3Rpb24uUHJvYmVCdXR0b25FbmFibGVkU3R5bGVDbGFz
c05hbWUgPSAiZW5hYmxlZCI7CitXZWJJbnNwZWN0b3IuUHJvYmVTZXREZXRhaWxzU2VjdGlvbi5Q
cm9iZVBvcG92ZXJFbGVtZW50U3R5bGVDbGFzc05hbWUgPSAicHJvYmUtcG9wb3ZlciI7CitXZWJJ
bnNwZWN0b3IuUHJvYmVTZXREZXRhaWxzU2VjdGlvbi5Qcm9iZUNsZWFyU2FtcGxlc1N0eWxlQ2xh
c3NOYW1lID0gInByb2JlLWNsZWFyLXNhbXBsZXMiOworV2ViSW5zcGVjdG9yLlByb2JlU2V0RGV0
YWlsc1NlY3Rpb24uUHJvYmVSZW1vdmVTdHlsZUNsYXNzTmFtZSA9ICJwcm9iZS1yZW1vdmUiOwor
V2ViSW5zcGVjdG9yLlByb2JlU2V0RGV0YWlsc1NlY3Rpb24uU2VjdGlvbk9wdGlvbnNTdHlsZUNs
YXNzTmFtZSA9ICJvcHRpb25zIjsKK1dlYkluc3BlY3Rvci5Qcm9iZVNldERldGFpbHNTZWN0aW9u
LlN0eWxlQ2xhc3NOYW1lID0gInByb2JlLXNldCI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZVRpbWVsaW5lRGF0YUdyaWROb2Rl
UGF0aENvbXBvbmVudC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL1Jlc291cmNlVGltZWxpbmVEYXRhR3JpZE5vZGVQYXRoQ29tcG9uZW50LmpzCmluZGV4IGE0
MzIyYjlhMjY0MzI5NTMwY2RlZDU2YzIwZGVhMDQ0ZjU2NzAyZTUuLjcxMDc5MDZhM2RkYTkyZmUy
ZjUzOTdmOGE2ZWZjMjI0YTRmYTliZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNlVGltZWxpbmVEYXRhR3JpZE5vZGVQYXRoQ29t
cG9uZW50LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L1Jlc291cmNlVGltZWxpbmVEYXRhR3JpZE5vZGVQYXRoQ29tcG9uZW50LmpzCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywzMSArMjMs
MzEgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNw
ZWN0b3IuUmVzb3VyY2VUaW1lbGluZURhdGFHcmlkTm9kZVBhdGhDb21wb25lbnQgPSBmdW5jdGlv
bihyZXNvdXJjZVRpbWVsaW5lRGF0YUdyaWROb2RlKSB7Ci0gICAgdmFyIHJlc291cmNlID0gcmVz
b3VyY2VUaW1lbGluZURhdGFHcmlkTm9kZS5yZWNvcmQucmVzb3VyY2U7Ci0gICAgdmFyIGNsYXNz
TmFtZXMgPSBbV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZUVsZW1lbnQuUmVzb3VyY2VJY29uU3R5
bGVDbGFzc05hbWUsIHJlc291cmNlLnR5cGVdOwotCi0gICAgV2ViSW5zcGVjdG9yLkhpZXJhcmNo
aWNhbFBhdGhDb21wb25lbnQuY2FsbCh0aGlzLCByZXNvdXJjZVRpbWVsaW5lRGF0YUdyaWROb2Rl
LmRhdGEubmFtZSwgY2xhc3NOYW1lcywgcmVzb3VyY2UpOworV2ViSW5zcGVjdG9yLlJlc291cmNl
VGltZWxpbmVEYXRhR3JpZE5vZGVQYXRoQ29tcG9uZW50ID0gY2xhc3MgUmVzb3VyY2VUaW1lbGlu
ZURhdGFHcmlkTm9kZVBhdGhDb21wb25lbnQgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuSGllcmFyY2hp
Y2FsUGF0aENvbXBvbmVudAoreworICAgIGNvbnN0cnVjdG9yKHJlc291cmNlVGltZWxpbmVEYXRh
R3JpZE5vZGUpCisgICAgeworICAgICAgICB2YXIgcmVzb3VyY2UgPSByZXNvdXJjZVRpbWVsaW5l
RGF0YUdyaWROb2RlLnJlY29yZC5yZXNvdXJjZTsKKyAgICAgICAgdmFyIGNsYXNzTmFtZXMgPSBb
V2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZUVsZW1lbnQuUmVzb3VyY2VJY29uU3R5bGVDbGFzc05h
bWUsIHJlc291cmNlLnR5cGVdOwogCi0gICAgdGhpcy5fcmVzb3VyY2VUaW1lbGluZURhdGFHcmlk
Tm9kZSA9IHJlc291cmNlVGltZWxpbmVEYXRhR3JpZE5vZGU7Ci19OworICAgICAgICBzdXBlcihy
ZXNvdXJjZVRpbWVsaW5lRGF0YUdyaWROb2RlLmRhdGEubmFtZSwgY2xhc3NOYW1lcywgcmVzb3Vy
Y2UpOwogCi1XZWJJbnNwZWN0b3IuUmVzb3VyY2VUaW1lbGluZURhdGFHcmlkTm9kZVBhdGhDb21w
b25lbnQucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuUmVzb3Vy
Y2VUaW1lbGluZURhdGFHcmlkTm9kZVBhdGhDb21wb25lbnQsCisgICAgICAgIHRoaXMuX3Jlc291
cmNlVGltZWxpbmVEYXRhR3JpZE5vZGUgPSByZXNvdXJjZVRpbWVsaW5lRGF0YUdyaWROb2RlOwor
ICAgIH0KIAogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IHJlc291cmNlVGltZWxpbmVEYXRhR3Jp
ZE5vZGUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc291cmNlVGltZWxpbmVEYXRh
R3JpZE5vZGU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgcHJldmlvdXNTaWJsaW5nKCkKICAg
ICB7CiAgICAgICAgIGlmICghdGhpcy5fcmVzb3VyY2VUaW1lbGluZURhdGFHcmlkTm9kZS5wcmV2
aW91c1NpYmxpbmcpCiAgICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgcmV0dXJuIG5l
dyBXZWJJbnNwZWN0b3IuUmVzb3VyY2VUaW1lbGluZURhdGFHcmlkTm9kZVBhdGhDb21wb25lbnQo
dGhpcy5fcmVzb3VyY2VUaW1lbGluZURhdGFHcmlkTm9kZS5wcmV2aW91c1NpYmxpbmcpOwotICAg
IH0sCisgICAgfQogCiAgICAgZ2V0IG5leHRTaWJsaW5nKCkKICAgICB7CkBAIC01Niw1ICs1Niwz
IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZVRpbWVsaW5lRGF0YUdyaWROb2RlUGF0aENvbXBvbmVu
dC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlJlc291cmNl
VGltZWxpbmVEYXRhR3JpZE5vZGVQYXRoQ29tcG9uZW50KHRoaXMuX3Jlc291cmNlVGltZWxpbmVE
YXRhR3JpZE5vZGUubmV4dFNpYmxpbmcpOwogICAgIH0KIH07Ci0KLVdlYkluc3BlY3Rvci5SZXNv
dXJjZVRpbWVsaW5lRGF0YUdyaWROb2RlUGF0aENvbXBvbmVudC5wcm90b3R5cGUuX19wcm90b19f
ID0gV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhDb21wb25lbnQucHJvdG90eXBlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2VhcmNo
QmFyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2VhcmNo
QmFyLmpzCmluZGV4IDg1ZDQ0ZGI0ZGNmYTA4NTliNmY5YmRhZjNmNTc2NDc0NWUzZDQ0ZGEuLjRm
Nzg4MGNkMzdiNDAwNGIyN2U4YWNhYjI4ZGUxMzRhMjQxZDdiYTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NlYXJjaEJhci5qcworKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TZWFyY2hCYXIuanMKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIz
LDYxICsyMyw1NiBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAK
LVdlYkluc3BlY3Rvci5TZWFyY2hCYXIgPSBmdW5jdGlvbihpZGVudGlmaWVyLCBwbGFjZWhvbGRl
ciwgZGVsZWdhdGUpIHsKLSAgICBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkl0ZW0uY2FsbCh0aGlz
LCBpZGVudGlmaWVyKTsKLQotICAgIHRoaXMuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKLQotICAgIHRo
aXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuU2VhcmNoQmFyLlN0eWxlQ2xh
c3NOYW1lKTsKK1dlYkluc3BlY3Rvci5TZWFyY2hCYXIgPSBjbGFzcyBTZWFyY2hCYXIgZXh0ZW5k
cyBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkl0ZW0KK3sKKyAgICBjb25zdHJ1Y3RvcihpZGVudGlm
aWVyLCBwbGFjZWhvbGRlciwgZGVsZWdhdGUpCisgICAgeworICAgICAgICBzdXBlcihpZGVudGlm
aWVyKTsKIAotICAgIHRoaXMuX2tleWJvYXJkU2hvcnRjdXRFc2MgPSBuZXcgV2ViSW5zcGVjdG9y
LktleWJvYXJkU2hvcnRjdXQobnVsbCwgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuS2V5
LkVzY2FwZSk7Ci0gICAgdGhpcy5fa2V5Ym9hcmRTaG9ydGN1dEVudGVyID0gbmV3IFdlYkluc3Bl
Y3Rvci5LZXlib2FyZFNob3J0Y3V0KG51bGwsIFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0
LktleS5FbnRlcik7CisgICAgICAgIHRoaXMuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKIAotICAgIHRo
aXMuX3NlYXJjaElucHV0ID0gdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJpbnB1dCIpKTsKLSAgICB0aGlzLl9zZWFyY2hJbnB1dC50eXBlID0gInNlYXJj
aCI7Ci0gICAgdGhpcy5fc2VhcmNoSW5wdXQuc3BlbGxjaGVjayA9IGZhbHNlOwotICAgIHRoaXMu
X3NlYXJjaElucHV0LmluY3JlbWVudGFsID0gdHJ1ZTsKLSAgICB0aGlzLl9zZWFyY2hJbnB1dC5z
ZXRBdHRyaWJ1dGUoInJlc3VsdHMiLCA1KTsKLSAgICB0aGlzLl9zZWFyY2hJbnB1dC5zZXRBdHRy
aWJ1dGUoImF1dG9zYXZlIiwgaWRlbnRpZmllciArICItYXV0b3NhdmUiKTsKLSAgICB0aGlzLl9z
ZWFyY2hJbnB1dC5zZXRBdHRyaWJ1dGUoInBsYWNlaG9sZGVyIiwgcGxhY2Vob2xkZXIpOwotICAg
IHRoaXMuX3NlYXJjaElucHV0LmFkZEV2ZW50TGlzdGVuZXIoInNlYXJjaCIsIHRoaXMuX2hhbmRs
ZVNlYXJjaEV2ZW50LmJpbmQodGhpcyksIGZhbHNlKTsKLSAgICB0aGlzLl9zZWFyY2hJbnB1dC5h
ZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIiwgdGhpcy5faGFuZGxlS2V5ZG93bkV2ZW50LmJpbmQo
dGhpcyksIGZhbHNlKTsKLX07CisgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZCgi
c2VhcmNoLWJhciIpOwogCi1XZWJJbnNwZWN0b3IuU2VhcmNoQmFyLlN0eWxlQ2xhc3NOYW1lID0g
InNlYXJjaC1iYXIiOwotV2ViSW5zcGVjdG9yLlNlYXJjaEJhci5FdmVudCA9IHsKLSAgICBUZXh0
Q2hhbmdlZDogInNlYXJjaGJhci10ZXh0LWRpZC1jaGFuZ2UiCi19OworICAgICAgICB0aGlzLl9r
ZXlib2FyZFNob3J0Y3V0RXNjID0gbmV3IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0KG51
bGwsIFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0LktleS5Fc2NhcGUpOworICAgICAgICB0
aGlzLl9rZXlib2FyZFNob3J0Y3V0RW50ZXIgPSBuZXcgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hv
cnRjdXQobnVsbCwgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuS2V5LkVudGVyKTsKIAot
V2ViSW5zcGVjdG9yLlNlYXJjaEJhci5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdl
Ykluc3BlY3Rvci5TZWFyY2hCYXIsCisgICAgICAgIHRoaXMuX3NlYXJjaElucHV0ID0gdGhpcy5f
ZWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpKTsKKyAg
ICAgICAgdGhpcy5fc2VhcmNoSW5wdXQudHlwZSA9ICJzZWFyY2giOworICAgICAgICB0aGlzLl9z
ZWFyY2hJbnB1dC5zcGVsbGNoZWNrID0gZmFsc2U7CisgICAgICAgIHRoaXMuX3NlYXJjaElucHV0
LmluY3JlbWVudGFsID0gdHJ1ZTsKKyAgICAgICAgdGhpcy5fc2VhcmNoSW5wdXQuc2V0QXR0cmli
dXRlKCJyZXN1bHRzIiwgNSk7CisgICAgICAgIHRoaXMuX3NlYXJjaElucHV0LnNldEF0dHJpYnV0
ZSgiYXV0b3NhdmUiLCBpZGVudGlmaWVyICsgIi1hdXRvc2F2ZSIpOworICAgICAgICB0aGlzLl9z
ZWFyY2hJbnB1dC5zZXRBdHRyaWJ1dGUoInBsYWNlaG9sZGVyIiwgcGxhY2Vob2xkZXIpOworICAg
ICAgICB0aGlzLl9zZWFyY2hJbnB1dC5hZGRFdmVudExpc3RlbmVyKCJzZWFyY2giLCB0aGlzLl9o
YW5kbGVTZWFyY2hFdmVudC5iaW5kKHRoaXMpLCBmYWxzZSk7CisgICAgICAgIHRoaXMuX3NlYXJj
aElucHV0LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLCB0aGlzLl9oYW5kbGVLZXlkb3duRXZl
bnQuYmluZCh0aGlzKSwgZmFsc2UpOworICAgIH0KIAogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0
IHRleHQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3NlYXJjaElucHV0LnZhbHVlOwot
ICAgIH0sCisgICAgfQogCiAgICAgc2V0IHRleHQobmV3VGV4dCkKICAgICB7CiAgICAgICAgIHRo
aXMuX3NlYXJjaElucHV0LnZhbHVlID0gbmV3VGV4dDsKLSAgICB9LAorICAgIH0KIAotICAgIGZv
Y3VzOiBmdW5jdGlvbigpCisgICAgZm9jdXMoKQogICAgIHsKICAgICAgICAgdGhpcy5fc2VhcmNo
SW5wdXQuZm9jdXMoKTsKICAgICAgICAgdGhpcy5fc2VhcmNoSW5wdXQuc2VsZWN0KCk7Ci0gICAg
fSwKKyAgICB9CiAKICAgICAvLyBQcml2YXRlCiAKLSAgICBfaGFuZGxlU2VhcmNoRXZlbnQ6IGZ1
bmN0aW9uKGV2ZW50KQorICAgIF9oYW5kbGVTZWFyY2hFdmVudChldmVudCkKICAgICB7CiAgICAg
ICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5TZWFyY2hCYXIu
RXZlbnQuVGV4dENoYW5nZWQpOwotICAgIH0sCisgICAgfQogCi0gICAgX2hhbmRsZUtleWRvd25F
dmVudDogZnVuY3Rpb24oZXZlbnQpCisgICAgX2hhbmRsZUtleWRvd25FdmVudChldmVudCkKICAg
ICB7CiAgICAgICAgIGlmICh0aGlzLl9rZXlib2FyZFNob3J0Y3V0RXNjLm1hdGNoZXNFdmVudChl
dmVudCkpIHsKICAgICAgICAgICAgIGlmICh0aGlzLmRlbGVnYXRlICYmIHR5cGVvZiB0aGlzLmRl
bGVnYXRlLnNlYXJjaEJhcldhbnRzVG9Mb3NlRm9jdXMgPT09ICJmdW5jdGlvbiIpIHsKQEAgLTk1
LDQgKzkwLDYgQEAgV2ViSW5zcGVjdG9yLlNlYXJjaEJhci5wcm90b3R5cGUgPSB7CiAgICAgfQog
fTsKIAotV2ViSW5zcGVjdG9yLlNlYXJjaEJhci5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5z
cGVjdG9yLk5hdmlnYXRpb25JdGVtLnByb3RvdHlwZTsKK1dlYkluc3BlY3Rvci5TZWFyY2hCYXIu
RXZlbnQgPSB7CisgICAgVGV4dENoYW5nZWQ6ICJzZWFyY2hiYXItdGV4dC1kaWQtY2hhbmdlIgor
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L1NsaWRlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Ns
aWRlci5qcwppbmRleCBmNDVhMGIwNGI4NWI0MmVmNTcwYTE3ODUxMmUwMTNjMmJiMDEzNjRhLi4x
NTQ3NzFmNTdiOWU4YTM4MDE2YjkwZmYxNjEwOTcyZWE5MGJmYTMyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TbGlkZXIuanMKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2xpZGVyLmpzCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywzNyAr
MjMsMzUgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJ
bnNwZWN0b3IuU2xpZGVyID0gZnVuY3Rpb24oKQorV2ViSW5zcGVjdG9yLlNsaWRlciA9IGNsYXNz
IFNsaWRlciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIHsKLSAgICB0aGlzLl9lbGVtZW50
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgdGhpcy5fZWxlbWVudC5jbGFz
c05hbWUgPSAic2xpZGVyIjsKLQotICAgIHRoaXMuX2tub2IgPSB0aGlzLl9lbGVtZW50LmFwcGVu
ZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImltZyIpKTsKKyAgICBjb25zdHJ1Y3Rvcigp
CisgICAgeworICAgICAgICBzdXBlcigpOwogCi0gICAgdGhpcy5fdmFsdWUgPSAwOwotICAgIHRo
aXMuX2tub2JYID0gMDsKLSAgICB0aGlzLl9fbWF4WCA9IDA7CisgICAgICAgIHRoaXMuX2VsZW1l
bnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgdGhpcy5fZWxlbWVu
dC5jbGFzc05hbWUgPSAic2xpZGVyIjsKIAotICAgIHRoaXMuX2VsZW1lbnQuYWRkRXZlbnRMaXN0
ZW5lcigibW91c2Vkb3duIiwgdGhpcyk7Ci19OworICAgICAgICB0aGlzLl9rbm9iID0gdGhpcy5f
ZWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbWciKSk7CiAKLVdl
Ykluc3BlY3Rvci5TbGlkZXIuS25vYldpZHRoID0gMTM7CisgICAgICAgIHRoaXMuX3ZhbHVlID0g
MDsKKyAgICAgICAgdGhpcy5fa25vYlggPSAwOworICAgICAgICB0aGlzLl9fbWF4WCA9IDA7CiAK
LVdlYkluc3BlY3Rvci5TbGlkZXIucHJvdG90eXBlID0gewotICAgIGNvbnRydWN0b3I6IFdlYklu
c3BlY3Rvci5TbGlkZXIsCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3Rv
dHlwZSwKKyAgICAgICAgdGhpcy5fZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24i
LCB0aGlzKTsKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBlbGVtZW50KCkKICAg
ICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50OwotICAgIH0sCisgICAgfQogCiAgICAg
Z2V0IHZhbHVlKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl92YWx1ZTsKLSAgICB9LAor
ICAgIH0KIAogICAgIHNldCB2YWx1ZSh2YWx1ZSkKICAgICB7CkBAIC02OSwxMSArNjcsMTEgQEAg
V2ViSW5zcGVjdG9yLlNsaWRlci5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgaWYgKHRoaXMuZGVs
ZWdhdGUgJiYgdHlwZW9mIHRoaXMuZGVsZWdhdGUuc2xpZGVyVmFsdWVEaWRDaGFuZ2UgPT09ICJm
dW5jdGlvbiIpCiAgICAgICAgICAgICB0aGlzLmRlbGVnYXRlLnNsaWRlclZhbHVlRGlkQ2hhbmdl
KHRoaXMsIHZhbHVlKTsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByb3RlY3RlZAogCi0gICAg
aGFuZGxlRXZlbnQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIGhhbmRsZUV2ZW50KGV2ZW50KQogICAg
IHsKICAgICAgICAgc3dpdGNoIChldmVudC50eXBlKSB7CiAgICAgICAgIGNhc2UgIm1vdXNlZG93
biI6CkBAIC04NiwxMSArODQsMTEgQEAgV2ViSW5zcGVjdG9yLlNsaWRlci5wcm90b3R5cGUgPSB7
CiAgICAgICAgICAgICB0aGlzLl9oYW5kbGVNb3VzZXVwKGV2ZW50KTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcml2YXRlCiAKLSAgICBf
aGFuZGxlTW91c2Vkb3duOiBmdW5jdGlvbihldmVudCkKKyAgICBfaGFuZGxlTW91c2Vkb3duKGV2
ZW50KQogICAgIHsKICAgICAgICAgaWYgKGV2ZW50LnRhcmdldCAhPT0gdGhpcy5fa25vYikKICAg
ICAgICAgICAgIHRoaXMudmFsdWUgPSAodGhpcy5fbG9jYWxQb2ludEZvckV2ZW50KGV2ZW50KS54
IC0gMykgLyB0aGlzLl9tYXhYOwpAQCAtMTAyLDMwICsxMDAsMzAgQEAgV2ViSW5zcGVjdG9yLlNs
aWRlci5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1v
dXNlbW92ZSIsIHRoaXMsIHRydWUpOwogICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigi
bW91c2V1cCIsIHRoaXMsIHRydWUpOwotICAgIH0sCisgICAgfQogCi0gICAgX2hhbmRsZU1vdXNl
bW92ZTogZnVuY3Rpb24oZXZlbnQpCisgICAgX2hhbmRsZU1vdXNlbW92ZShldmVudCkKICAgICB7
CiAgICAgICAgIHZhciBkeCA9IHRoaXMuX2xvY2FsUG9pbnRGb3JFdmVudChldmVudCkueCAtIHRo
aXMuX3N0YXJ0TW91c2VYOwogICAgICAgICB2YXIgeCA9IE1hdGgubWF4KE1hdGgubWluKHRoaXMu
X3N0YXJ0S25vYlggKyBkeCwgdGhpcy5fbWF4WCksIDApOwogCiAgICAgICAgIHRoaXMudmFsdWUg
PSB4IC8gdGhpcy5fbWF4WDsKLSAgICB9LAorICAgIH0KIAotICAgIF9oYW5kbGVNb3VzZXVwOiBm
dW5jdGlvbihldmVudCkKKyAgICBfaGFuZGxlTW91c2V1cChldmVudCkKICAgICB7CiAgICAgICAg
IHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgiZHJhZ2dpbmciKTsKIAogICAgICAgICB3
aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2Vtb3ZlIiwgdGhpcywgdHJ1ZSk7CiAgICAg
ICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZXVwIiwgdGhpcywgdHJ1ZSk7Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBfbG9jYWxQb2ludEZvckV2ZW50OiBmdW5jdGlvbihldmVudCkK
KyAgICBfbG9jYWxQb2ludEZvckV2ZW50KGV2ZW50KQogICAgIHsKICAgICAgICAgLy8gV2UgY29u
dmVydCBhbGwgZXZlbnQgY29vcmRpbmF0ZXMgZnJvbSBwYWdlIGNvb3JkaW5hdGVzIHRvIGxvY2Fs
IGNvb3JkaW5hdGVzIHN1Y2ggdGhhdCB0aGUgc2xpZGVyCiAgICAgICAgIC8vIG1heSBiZSB0cmFu
c2Zvcm1lZCB1c2luZyBDU1MgVHJhbnNmb3JtcyBhbmQgaW50ZXJhY3Rpb24gd29ya3MgYXMgZXhw
ZWN0ZWQuCiAgICAgICAgIHJldHVybiB3aW5kb3cud2Via2l0Q29udmVydFBvaW50RnJvbVBhZ2VU
b05vZGUodGhpcy5fZWxlbWVudCwgbmV3IFdlYktpdFBvaW50KGV2ZW50LnBhZ2VYLCBldmVudC5w
YWdlWSkpOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IF9tYXhYKCkKICAgICB7CkBAIC0xMzUs
MyArMTMzLDUgQEAgV2ViSW5zcGVjdG9yLlNsaWRlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJl
dHVybiB0aGlzLl9fbWF4WDsKICAgICB9CiB9OworCitXZWJJbnNwZWN0b3IuU2xpZGVyLktub2JX
aWR0aCA9IDEzOwo=
</data>
<flag name="review"
          id="274321"
          type_id="1"
          status="+"
          setter="joepeck"
    />
          </attachment>
      

    </bug>

</bugzilla>