<?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>84852</bug_id>
          
          <creation_ts>2012-04-25 05:43:51 -0700</creation_ts>
          <short_desc>Web Inspector: move sourcemap-agnostic part of the debugger presentation model into the raw debugger.</short_desc>
          <delta_ts>2012-04-25 06:30:32 -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 (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Pavel Feldman">pfeldman</reporter>
          <assigned_to name="Pavel Feldman">pfeldman</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>609674</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-04-25 05:43:51 -0700</bug_when>
    <thetext>There is no need to keep that much debugging functionality in the debugger presentation model. It all perfectly applies to the raw script debugger.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>609678</commentid>
    <comment_count>1</comment_count>
      <attachid>138795</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-04-25 05:47:36 -0700</bug_when>
    <thetext>Created attachment 138795
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>609697</commentid>
    <comment_count>2</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-04-25 06:30:32 -0700</bug_when>
    <thetext>Committed r115192: &lt;http://trac.webkit.org/changeset/115192&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>138795</attachid>
            <date>2012-04-25 05:47:36 -0700</date>
            <delta_ts>2012-04-25 06:26:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-84852-20120425164734.patch</filename>
            <type>text/plain</type>
            <size>57344</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE1MTg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTFkODdhODZlZmM5ZjNj
OTIzNTBiOWJhNDEyMDgwZmM0MzhlMWJjNS4uMTljMTUxMGU2NzM5MDEzNzM0NWYwODliODc4ZDI0
YTNiNGMzYmUxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc5IEBACisyMDEyLTA0LTI1ICBQYXZl
bCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IG1vdmUgc291cmNlbWFwLWFnbm9zdGljIHBhcnQgb2YgdGhlIGRlYnVnZ2VyIHByZXNlbnRh
dGlvbiBtb2RlbCBpbnRvIHRoZSByYXcgZGVidWdnZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NDg1MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZXJlIGlzIG5vIG5lZWQgdG8ga2VlcCB0aGF0IG11
Y2ggZGVidWdnaW5nIGZ1bmN0aW9uYWxpdHkgaW4gdGhlIGRlYnVnZ2VyIHByZXNlbnRhdGlvbiBt
b2RlbC4KKyAgICAgICAgSXQgYWxsIHBlcmZlY3RseSBhcHBsaWVzIHRvIHRoZSByYXcgc2NyaXB0
IGRlYnVnZ2VyLiBNZXRob2RzIGZvciBzZWxlY3RpbmcgY2FsbCBmcmFtZXMsIGFjdGl2YXRpbmcg
YnJlYWtwb2ludHMKKyAgICAgICAgYW5kIHBhdXNlZCBkZXRhaWxzIHdlcmUgbW92ZWQgdG8gdGhl
IFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLgorCisgICAgICAgICogaW5zcGVjdG9yL2Zyb250
LWVuZC9CcmVha3BvaW50TWFuYWdlci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5CcmVha3Bv
aW50TWFuYWdlci5wcm90b3R5cGUuX3JlbW92ZUJyZWFrcG9pbnRGcm9tVUkpOgorICAgICAgICAq
IGluc3BlY3Rvci9mcm9udC1lbmQvQ2FsbFN0YWNrU2lkZWJhclBhbmUuanM6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuQ2FsbFN0YWNrU2lkZWJhclBhbmUpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkNhbGxTdGFja1NpZGViYXJQYW5lLnByb3RvdHlwZS51cGRhdGUpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkNhbGxTdGFja1NpZGViYXJQYW5lLnByb3RvdHlwZS5zZXRTZWxlY3RlZENhbGxGcmFt
ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ2FsbFN0YWNrU2lkZWJhclBhbmUucHJvdG90eXBl
Ll9zZWxlY3RlZENhbGxGcmFtZUluZGV4KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DYWxsU3Rh
Y2tTaWRlYmFyUGFuZS5wcm90b3R5cGUuX3BsYWNhcmRTZWxlY3RlZCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuQ2FsbFN0YWNrU2lkZWJhclBhbmUuUGxhY2FyZCk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuQ2FsbFN0YWNrU2lkZWJhclBhbmUuUGxhY2FyZC5wcm90b3R5cGUuX3VwZGF0ZSk6Cisg
ICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9Db25zb2xlVmlldy5qczoKKyAgICAgICAgKiBp
bnNwZWN0b3IvZnJvbnQtZW5kL0RlYnVnZ2VyTW9kZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuRGVidWdnZXJNb2RlbC5wcm90b3R5cGUuX2dsb2JhbE9iamVjdENsZWFyZWQpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwucHJvdG90eXBlLl9kaWRFZGl0U2NyaXB0U291
cmNlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLnByb3RvdHlwZS5fc2V0
RGVidWdnZXJQYXVzZWREZXRhaWxzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1v
ZGVsLnByb3RvdHlwZS5fcGF1c2VkU2NyaXB0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1
Z2dlck1vZGVsLnByb3RvdHlwZS5fcmVzdW1lZFNjcmlwdCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuRGVidWdnZXJNb2RlbC5wcm90b3R5cGUuaXNQYXVzZWQpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkRlYnVnZ2VyTW9kZWwucHJvdG90eXBlLnNldFNlbGVjdGVkQ2FsbEZyYW1lLnVwZGF0ZUV4
ZWN1dGlvbkxpbmUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwucHJvdG90
eXBlLnNldFNlbGVjdGVkQ2FsbEZyYW1lKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dl
ck1vZGVsLnByb3RvdHlwZS5zZWxlY3RlZENhbGxGcmFtZSk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuRGVidWdnZXJNb2RlbC5wcm90b3R5cGUuZXZhbHVhdGVPblNlbGVjdGVkQ2FsbEZyYW1lKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLnByb3RvdHlwZS5nZXRTZWxlY3Rl
ZENhbGxGcmFtZVZhcmlhYmxlcy5wcm9wZXJ0aWVzQ29sbGVjdGVkKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5EZWJ1Z2dlck1vZGVsLnByb3RvdHlwZS5nZXRTZWxlY3RlZENhbGxGcmFtZVZhcmlh
Ymxlcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5wcm90b3R5cGUuc2V0
QnJlYWtwb2ludHNBY3RpdmUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwu
cHJvdG90eXBlLmJyZWFrcG9pbnRzQWN0aXZlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1
Z2dlck1vZGVsLkNhbGxGcmFtZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2Rl
bC5DYWxsRnJhbWUucHJvdG90eXBlLmdldCBzY3JpcHQpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkRlYnVnZ2VyTW9kZWwuQ2FsbEZyYW1lLnByb3RvdHlwZS5nZXQgdHlwZSk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5DYWxsRnJhbWUucHJvdG90eXBlLmdldCBzY29wZUNo
YWluKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLkNhbGxGcmFtZS5wcm90
b3R5cGUuZ2V0IHRoaXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwuQ2Fs
bEZyYW1lLnByb3RvdHlwZS5nZXQgZnVuY3Rpb25OYW1lKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5EZWJ1Z2dlck1vZGVsLkNhbGxGcmFtZS5wcm90b3R5cGUuZ2V0IGxvY2F0aW9uKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLkNhbGxGcmFtZS5wcm90b3R5cGUuZXZhbHVh
dGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwuQ2FsbEZyYW1lLnByb3Rv
dHlwZS5jcmVhdGVMaXZlTG9jYXRpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2Vy
TW9kZWwuQ2FsbEZyYW1lLnByb3RvdHlwZS5kaXNwb3NlKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5EZWJ1Z2dlclBhdXNlZERldGFpbHMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2Vy
UGF1c2VkRGV0YWlscy5wcm90b3R5cGUuZGlzcG9zZSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zy
b250LWVuZC9EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLmpzOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRl
YnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwucHJvdG90eXBlLmNyZWF0ZUxpdmVMb2NhdGlvbik6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUu
X3BhcnNlZFNjcmlwdFNvdXJjZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVz
ZW50YXRpb25Nb2RlbC5wcm90b3R5cGUuX2NhbGxGcmFtZVNlbGVjdGVkKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZS5zZXRTY3JpcHRT
b3VyY2UuZGlkRWRpdFNjcmlwdFNvdXJjZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdn
ZXJQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUuc2V0U2NyaXB0U291cmNlKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZS5fZGVidWdn
ZXJSZXNldCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9KYXZhU2NyaXB0U291cmNl
LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkphdmFTY3JpcHRTb3VyY2UucHJvdG90eXBlLnNl
dEJyZWFrcG9pbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvSmF2YVNjcmlwdFNv
dXJjZUZyYW1lLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkphdmFTY3JpcHRTb3VyY2VGcmFt
ZS5wcm90b3R5cGUuX3Jlc29sdmVPYmplY3RGb3JQb3BvdmVyKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvZnJvbnQtZW5kL1NjcmlwdC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHQucHJv
dG90eXBlLnNldFNvdXJjZU1hcHBpbmcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdC5w
cm90b3R5cGUuY3JlYXRlTGl2ZUxvY2F0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3Jp
cHQuTG9jYXRpb24ucHJvdG90eXBlLnVwZGF0ZSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250
LWVuZC9TY3JpcHRNYXBwaW5nLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkxpdmVMb2NhdGlv
bik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTGl2ZUxvY2F0aW9uLnByb3RvdHlwZS51cGRhdGUp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkxpdmVMb2NhdGlvbi5wcm90b3R5cGUuZGlzcG9zZSk6
CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanM6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZS5fY29uc29sZUNvbW1hbmRFdmFs
dWF0ZWRJblNlbGVjdGVkQ2FsbEZyYW1lKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRz
UGFuZWwucHJvdG90eXBlLl9kZWJ1Z2dlclBhdXNlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
U2NyaXB0c1BhbmVsLnByb3RvdHlwZS5fY2FsbEZyYW1lU2VsZWN0ZWQpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUuX3RvZ2dsZUJyZWFrcG9pbnRzQ2xpY2tl
ZCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9VSVNvdXJjZUNvZGUuanM6CisKIDIw
MTItMDQtMjUgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgV2ViIEluc3BlY3RvcjogdXNlIGNvbXBvc2l0ZSBub2RlIHByb3ZpZGVyIGZvciBkaWZmIG5v
ZGVzIGluIGhlYXAgcHJvZmlsZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvQnJlYWtwb2ludE1hbmFnZXIuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL0JyZWFrcG9pbnRNYW5hZ2VyLmpzCmluZGV4IGMyZTEwYzI0Zjk2MDgwZmM5
NDAwNDlkZDU2OGUyZWYwOWUxNWU1OWYuLjcyNzE1NTQyNWZkYTM2NmRiZTI3OTQ4N2U1ODU3YjU4
Y2Y5OTc1ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
QnJlYWtwb2ludE1hbmFnZXIuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9CcmVha3BvaW50TWFuYWdlci5qcwpAQCAtMjA0LDcgKzIwNCw2IEBAIFdlYkluc3BlY3Rv
ci5CcmVha3BvaW50TWFuYWdlci5wcm90b3R5cGUgPSB7CiAgICAgewogICAgICAgICB2YXIgdWlT
b3VyY2VDb2RlID0gdWlCcmVha3BvaW50LnVpU291cmNlQ29kZTsKICAgICAgICAgdmFyIGxpbmVO
dW1iZXIgPSB1aUJyZWFrcG9pbnQubGluZU51bWJlcjsKLSAgICAgICAgY29uc29sZS5hc3NlcnQo
dWlTb3VyY2VDb2RlLmJyZWFrcG9pbnRzKClbbGluZU51bWJlcl0gPT09IHVpQnJlYWtwb2ludCk7
CiAgICAgICAgIHVpU291cmNlQ29kZS5icmVha3BvaW50UmVtb3ZlZChsaW5lTnVtYmVyKTsKICAg
ICAgICAgdWlCcmVha3BvaW50LmJyZWFrcG9pbnQucmVtb3ZlVUlCcmVha3BvaW50KCk7CiAgICAg
fSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ2FsbFN0
YWNrU2lkZWJhclBhbmUuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0Nh
bGxTdGFja1NpZGViYXJQYW5lLmpzCmluZGV4IGIyYjM4ODYzNzgyOTRjN2M5YjYwYmE3ZmU1YmMy
ZDdjNTJhYWUzNTMuLjQ1NGMxM2NjYjAyMmY3MzBiNjkzZjM5OTIxNWIxOTUwMDY3YjUyZTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ2FsbFN0YWNrU2lk
ZWJhclBhbmUuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9DYWxs
U3RhY2tTaWRlYmFyUGFuZS5qcwpAQCAtMjcsMTAgKzI3LDEwIEBACiAgKiBAY29uc3RydWN0b3IK
ICAqIEBleHRlbmRzIHtXZWJJbnNwZWN0b3IuU2lkZWJhclBhbmV9CiAgKi8KLVdlYkluc3BlY3Rv
ci5DYWxsU3RhY2tTaWRlYmFyUGFuZSA9IGZ1bmN0aW9uKG1vZGVsKQorV2ViSW5zcGVjdG9yLkNh
bGxTdGFja1NpZGViYXJQYW5lID0gZnVuY3Rpb24oKQogewogICAgIFdlYkluc3BlY3Rvci5TaWRl
YmFyUGFuZS5jYWxsKHRoaXMsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ2FsbCBTdGFjayIpKTsK
LSAgICB0aGlzLl9tb2RlbCA9IG1vZGVsOworICAgIHRoaXMuX21vZGVsID0gV2ViSW5zcGVjdG9y
LmRlYnVnZ2VyTW9kZWw7CiAKICAgICB0aGlzLmJvZHlFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIo
ImNvbnRleHRtZW51IiwgdGhpcy5fY29udGV4dE1lbnUuYmluZCh0aGlzKSwgdHJ1ZSk7CiB9CkBA
IC0zOSwxMSArMzksNiBAQCBXZWJJbnNwZWN0b3IuQ2FsbFN0YWNrU2lkZWJhclBhbmUucHJvdG90
eXBlID0gewogICAgIHVwZGF0ZTogZnVuY3Rpb24oY2FsbEZyYW1lcykKICAgICB7CiAgICAgICAg
IHRoaXMuYm9keUVsZW1lbnQucmVtb3ZlQ2hpbGRyZW4oKTsKLQotICAgICAgICBpZiAodGhpcy5w
bGFjYXJkcykgewotICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLnBsYWNhcmRz
Lmxlbmd0aDsgKytpKQotICAgICAgICAgICAgICAgIHRoaXMucGxhY2FyZHNbaV0uZGlzY2FyZCgp
OwotICAgICAgICB9CiAgICAgICAgIHRoaXMucGxhY2FyZHMgPSBbXTsKIAogICAgICAgICBpZiAo
IWNhbGxGcmFtZXMpIHsKQEAgLTU2LDE5ICs1MSwxOCBAQCBXZWJJbnNwZWN0b3IuQ2FsbFN0YWNr
U2lkZWJhclBhbmUucHJvdG90eXBlID0gewogCiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
Y2FsbEZyYW1lcy5sZW5ndGg7ICsraSkgewogICAgICAgICAgICAgdmFyIGNhbGxGcmFtZSA9IGNh
bGxGcmFtZXNbaV07Ci0gICAgICAgICAgICB2YXIgcGxhY2FyZCA9IHRoaXMuX21vZGVsLmNyZWF0
ZVBsYWNhcmQoY2FsbEZyYW1lKTsKLSAgICAgICAgICAgIHBsYWNhcmQuY2FsbEZyYW1lID0gY2Fs
bEZyYW1lOworICAgICAgICAgICAgdmFyIHBsYWNhcmQgPSBuZXcgV2ViSW5zcGVjdG9yLkNhbGxT
dGFja1NpZGViYXJQYW5lLlBsYWNhcmQoY2FsbEZyYW1lKTsKICAgICAgICAgICAgIHBsYWNhcmQu
ZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX3BsYWNhcmRTZWxlY3RlZC5i
aW5kKHRoaXMsIHBsYWNhcmQpLCBmYWxzZSk7CiAgICAgICAgICAgICB0aGlzLnBsYWNhcmRzLnB1
c2gocGxhY2FyZCk7CiAgICAgICAgICAgICB0aGlzLmJvZHlFbGVtZW50LmFwcGVuZENoaWxkKHBs
YWNhcmQuZWxlbWVudCk7CiAgICAgICAgIH0KICAgICB9LAogCi0gICAgc2V0IHNlbGVjdGVkQ2Fs
bEZyYW1lKHgpCisgICAgc2V0U2VsZWN0ZWRDYWxsRnJhbWU6IGZ1bmN0aW9uKHgpCiAgICAgewog
ICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMucGxhY2FyZHMubGVuZ3RoOyArK2kpIHsK
ICAgICAgICAgICAgIHZhciBwbGFjYXJkID0gdGhpcy5wbGFjYXJkc1tpXTsKLSAgICAgICAgICAg
IHBsYWNhcmQuc2VsZWN0ZWQgPSAocGxhY2FyZC5jYWxsRnJhbWUgPT09IHgpOworICAgICAgICAg
ICAgcGxhY2FyZC5zZWxlY3RlZCA9IChwbGFjYXJkLl9jYWxsRnJhbWUgPT09IHgpOwogICAgICAg
ICB9CiAgICAgfSwKIApAQCAtOTcsMTEgKzkxLDExIEBAIFdlYkluc3BlY3Rvci5DYWxsU3RhY2tT
aWRlYmFyUGFuZS5wcm90b3R5cGUgPSB7CiAKICAgICBfc2VsZWN0ZWRDYWxsRnJhbWVJbmRleDog
ZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLl9tb2RlbC5zZWxlY3RlZENhbGxG
cmFtZSkKKyAgICAgICAgaWYgKCF0aGlzLl9tb2RlbC5zZWxlY3RlZENhbGxGcmFtZSgpKQogICAg
ICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMucGxh
Y2FyZHMubGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAgIHZhciBwbGFjYXJkID0gdGhpcy5wbGFj
YXJkc1tpXTsKLSAgICAgICAgICAgIGlmIChwbGFjYXJkLmNhbGxGcmFtZSA9PT0gdGhpcy5fbW9k
ZWwuc2VsZWN0ZWRDYWxsRnJhbWUpCisgICAgICAgICAgICBpZiAocGxhY2FyZC5fY2FsbEZyYW1l
ID09PSB0aGlzLl9tb2RlbC5zZWxlY3RlZENhbGxGcmFtZSgpKQogICAgICAgICAgICAgICAgIHJl
dHVybiBpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiAtMTsKQEAgLTEwOSw3ICsxMDMsNyBA
QCBXZWJJbnNwZWN0b3IuQ2FsbFN0YWNrU2lkZWJhclBhbmUucHJvdG90eXBlID0gewogCiAgICAg
X3BsYWNhcmRTZWxlY3RlZDogZnVuY3Rpb24ocGxhY2FyZCkKICAgICB7Ci0gICAgICAgIHRoaXMu
X21vZGVsLnNlbGVjdGVkQ2FsbEZyYW1lID0gcGxhY2FyZC5jYWxsRnJhbWU7CisgICAgICAgIHRo
aXMuX21vZGVsLnNldFNlbGVjdGVkQ2FsbEZyYW1lKHBsYWNhcmQuX2NhbGxGcmFtZSk7CiAgICAg
fSwKIAogICAgIF9jb250ZXh0TWVudTogZnVuY3Rpb24oZXZlbnQpCkBAIC0xNTYsMyArMTUwLDI0
IEBAIFdlYkluc3BlY3Rvci5DYWxsU3RhY2tTaWRlYmFyUGFuZS5wcm90b3R5cGUgPSB7CiB9CiAK
IFdlYkluc3BlY3Rvci5DYWxsU3RhY2tTaWRlYmFyUGFuZS5wcm90b3R5cGUuX19wcm90b19fID0g
V2ViSW5zcGVjdG9yLlNpZGViYXJQYW5lLnByb3RvdHlwZTsKKworLyoqCisgKiBAY29uc3RydWN0
b3IKKyAqIEBleHRlbmRzIHtXZWJJbnNwZWN0b3IuUGxhY2FyZH0KKyAqIEBwYXJhbSB7V2ViSW5z
cGVjdG9yLkRlYnVnZ2VyTW9kZWwuQ2FsbEZyYW1lfSBjYWxsRnJhbWUKKyAqLworV2ViSW5zcGVj
dG9yLkNhbGxTdGFja1NpZGViYXJQYW5lLlBsYWNhcmQgPSBmdW5jdGlvbihjYWxsRnJhbWUpCit7
CisgICAgV2ViSW5zcGVjdG9yLlBsYWNhcmQuY2FsbCh0aGlzLCBjYWxsRnJhbWUuZnVuY3Rpb25O
YW1lIHx8IFdlYkluc3BlY3Rvci5VSVN0cmluZygiKGFub255bW91cyBmdW5jdGlvbikiKSwgIiIp
OworICAgIGNhbGxGcmFtZS5jcmVhdGVMaXZlTG9jYXRpb24odGhpcy5fdXBkYXRlLmJpbmQodGhp
cykpOworICAgIHRoaXMuX2NhbGxGcmFtZSA9IGNhbGxGcmFtZTsKK30KKworV2ViSW5zcGVjdG9y
LkNhbGxTdGFja1NpZGViYXJQYW5lLlBsYWNhcmQucHJvdG90eXBlID0geworICAgIF91cGRhdGU6
IGZ1bmN0aW9uKHVpTG9jYXRpb24pCisgICAgeworICAgICAgICB0aGlzLnN1YnRpdGxlID0gV2Vi
SW5zcGVjdG9yLmRpc3BsYXlOYW1lRm9yVVJMKHVpTG9jYXRpb24udWlTb3VyY2VDb2RlLnVybCkg
KyAiOiIgKyAodWlMb2NhdGlvbi5saW5lTnVtYmVyICsgMSk7CisgICAgfQorfQorCitXZWJJbnNw
ZWN0b3IuQ2FsbFN0YWNrU2lkZWJhclBhbmUuUGxhY2FyZC5wcm90b3R5cGUuX19wcm90b19fID0g
V2ViSW5zcGVjdG9yLlBsYWNhcmQucHJvdG90eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db25zb2xlVmlldy5qcyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvQ29uc29sZVZpZXcuanMKaW5kZXggOWZlMTJlYmFlYTZiZGRkY2Y0
ODM5ZGYyNDM2MTMxOGJhNjI0NGQ0YS4uNjgzY2NmMTMxOTM3YjQ1NzRlMTJkNGQ4YmE1YWY1ZTVi
ZTgxYmYxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9D
b25zb2xlVmlldy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0Nv
bnNvbGVWaWV3LmpzCkBAIC0zNzIsOCArMzcyLDggQEAgV2ViSW5zcGVjdG9yLkNvbnNvbGVWaWV3
LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAg
IGlmICghZXhwcmVzc2lvblN0cmluZyAmJiBXZWJJbnNwZWN0b3IuZGVidWdnZXJQcmVzZW50YXRp
b25Nb2RlbC5zZWxlY3RlZENhbGxGcmFtZSkKLSAgICAgICAgICAgIFdlYkluc3BlY3Rvci5kZWJ1
Z2dlclByZXNlbnRhdGlvbk1vZGVsLmdldFNlbGVjdGVkQ2FsbEZyYW1lVmFyaWFibGVzKHJlY2Vp
dmVkUHJvcGVydHlOYW1lcy5iaW5kKHRoaXMpKTsKKyAgICAgICAgaWYgKCFleHByZXNzaW9uU3Ry
aW5nICYmIFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLnNlbGVjdGVkQ2FsbEZyYW1lKCkpCisg
ICAgICAgICAgICBXZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbC5nZXRTZWxlY3RlZENhbGxGcmFt
ZVZhcmlhYmxlcyhyZWNlaXZlZFByb3BlcnR5TmFtZXMuYmluZCh0aGlzKSk7CiAgICAgICAgIGVs
c2UKICAgICAgICAgICAgIHRoaXMuZXZhbEluSW5zcGVjdGVkV2luZG93KGV4cHJlc3Npb25TdHJp
bmcsICJjb21wbGV0aW9uIiwgdHJ1ZSwgdHJ1ZSwgZmFsc2UsIGV2YWx1YXRlZC5iaW5kKHRoaXMp
KTsKIApAQCAtNTkyLDggKzU5Miw4IEBAIFdlYkluc3BlY3Rvci5Db25zb2xlVmlldy5wcm90b3R5
cGUgPSB7CiAgICAgICovCiAgICAgZXZhbEluSW5zcGVjdGVkV2luZG93OiBmdW5jdGlvbihleHBy
ZXNzaW9uLCBvYmplY3RHcm91cCwgaW5jbHVkZUNvbW1hbmRMaW5lQVBJLCBkb05vdFBhdXNlT25F
eGNlcHRpb25zQW5kTXV0ZUNvbnNvbGUsIHJldHVybkJ5VmFsdWUsIGNhbGxiYWNrKQogICAgIHsK
LSAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5kZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnNlbGVj
dGVkQ2FsbEZyYW1lKSB7Ci0gICAgICAgICAgICBXZWJJbnNwZWN0b3IuZGVidWdnZXJQcmVzZW50
YXRpb25Nb2RlbC5ldmFsdWF0ZUluU2VsZWN0ZWRDYWxsRnJhbWUoZXhwcmVzc2lvbiwgb2JqZWN0
R3JvdXAsIGluY2x1ZGVDb21tYW5kTGluZUFQSSwgZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11
dGVDb25zb2xlLCByZXR1cm5CeVZhbHVlLCBjYWxsYmFjayk7CisgICAgICAgIGlmIChXZWJJbnNw
ZWN0b3IuZGVidWdnZXJNb2RlbC5zZWxlY3RlZENhbGxGcmFtZSgpKSB7CisgICAgICAgICAgICBX
ZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbC5ldmFsdWF0ZU9uU2VsZWN0ZWRDYWxsRnJhbWUoZXhw
cmVzc2lvbiwgb2JqZWN0R3JvdXAsIGluY2x1ZGVDb21tYW5kTGluZUFQSSwgZG9Ob3RQYXVzZU9u
RXhjZXB0aW9uc0FuZE11dGVDb25zb2xlLCByZXR1cm5CeVZhbHVlLCBjYWxsYmFjayk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9EZWJ1Z2dlck1vZGVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9EZWJ1Z2dlck1vZGVsLmpzCmluZGV4IDM0ZjE2MDE1MDhmMTdiNDMw
NjA3ZGFiOGQ1ZDJhYzdlYTNjOWMyYWUuLjU0NDMxMTJjNDcxMjNkODcyYTllMmI1OWMzNDdmNmNk
OGRlODQ2MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
RGVidWdnZXJNb2RlbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0RlYnVnZ2VyTW9kZWwuanMKQEAgLTQ3LDE5ICs0Nyw2IEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dl
ck1vZGVsID0gZnVuY3Rpb24oKQogCiAvKioKICAqIEBjb25zdHJ1Y3RvcgotICogQHBhcmFtIHtB
cnJheS48RGVidWdnZXJBZ2VudC5DYWxsRnJhbWU+fSBjYWxsRnJhbWVzCi0gKiBAcGFyYW0ge3N0
cmluZ30gcmVhc29uCi0gKiBAcGFyYW0geyp9IGF1eERhdGEKLSAqLwotV2ViSW5zcGVjdG9yLkRl
YnVnZ2VyUGF1c2VkRGV0YWlscyA9IGZ1bmN0aW9uKGNhbGxGcmFtZXMsIHJlYXNvbiwgYXV4RGF0
YSkKLXsKLSAgICB0aGlzLmNhbGxGcmFtZXMgPSBjYWxsRnJhbWVzOwotICAgIHRoaXMucmVhc29u
ID0gcmVhc29uOwotICAgIHRoaXMuYXV4RGF0YSA9IGF1eERhdGE7Ci19Ci0KLS8qKgotICogQGNv
bnN0cnVjdG9yCiAgKiBAZXh0ZW5kcyB7RGVidWdnZXJBZ2VudC5Mb2NhdGlvbn0KICAqIEBwYXJh
bSB7V2ViSW5zcGVjdG9yLlNjcmlwdH0gc2NyaXB0CiAgKiBAcGFyYW0ge251bWJlcn0gbGluZU51
bWJlcgpAQCAtNzMsMTQgKzYwLDE4IEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLkxvY2F0
aW9uID0gZnVuY3Rpb24oc2NyaXB0LCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiB9CiAKIFdl
Ykluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLkV2ZW50cyA9IHsKLSAgICBEZWJ1Z2dlcldhc0VuYWJs
ZWQ6ICJkZWJ1Z2dlci13YXMtZW5hYmxlZCIsCi0gICAgRGVidWdnZXJXYXNEaXNhYmxlZDogImRl
YnVnZ2VyLXdhcy1kaXNhYmxlZCIsCi0gICAgRGVidWdnZXJQYXVzZWQ6ICJkZWJ1Z2dlci1wYXVz
ZWQiLAotICAgIERlYnVnZ2VyUmVzdW1lZDogImRlYnVnZ2VyLXJlc3VtZWQiLAotICAgIFBhcnNl
ZFNjcmlwdFNvdXJjZTogInBhcnNlZC1zY3JpcHQtc291cmNlIiwKLSAgICBGYWlsZWRUb1BhcnNl
U2NyaXB0U291cmNlOiAiZmFpbGVkLXRvLXBhcnNlLXNjcmlwdC1zb3VyY2UiLAotICAgIEJyZWFr
cG9pbnRSZXNvbHZlZDogImJyZWFrcG9pbnQtcmVzb2x2ZWQiLAotICAgIEdsb2JhbE9iamVjdENs
ZWFyZWQ6ICJnbG9iYWwtb2JqZWN0LWNsZWFyZWQiCisgICAgRGVidWdnZXJXYXNFbmFibGVkOiAi
RGVidWdnZXJXYXNFbmFibGVkIiwKKyAgICBEZWJ1Z2dlcldhc0Rpc2FibGVkOiAiRGVidWdnZXJX
YXNEaXNhYmxlZCIsCisgICAgRGVidWdnZXJQYXVzZWQ6ICJEZWJ1Z2dlclBhdXNlZCIsCisgICAg
RGVidWdnZXJSZXN1bWVkOiAiRGVidWdnZXJSZXN1bWVkIiwKKyAgICBQYXJzZWRTY3JpcHRTb3Vy
Y2U6ICJQYXJzZWRTY3JpcHRTb3VyY2UiLAorICAgIEZhaWxlZFRvUGFyc2VTY3JpcHRTb3VyY2U6
ICJGYWlsZWRUb1BhcnNlU2NyaXB0U291cmNlIiwKKyAgICBCcmVha3BvaW50UmVzb2x2ZWQ6ICJC
cmVha3BvaW50UmVzb2x2ZWQiLAorICAgIEdsb2JhbE9iamVjdENsZWFyZWQ6ICJHbG9iYWxPYmpl
Y3RDbGVhcmVkIiwKKyAgICBDYWxsRnJhbWVTZWxlY3RlZDogIkNhbGxGcmFtZVNlbGVjdGVkIiwK
KyAgICBFeGVjdXRpb25MaW5lQ2hhbmdlZDogIkV4ZWN1dGlvbkxpbmVDaGFuZ2VkIiwKKyAgICBD
b25zb2xlQ29tbWFuZEV2YWx1YXRlZEluU2VsZWN0ZWRDYWxsRnJhbWU6ICJDb25zb2xlQ29tbWFu
ZEV2YWx1YXRlZEluU2VsZWN0ZWRDYWxsRnJhbWUiLAorICAgIEJyZWFrcG9pbnRzQWN0aXZlU3Rh
dGVDaGFuZ2VkOiAiQnJlYWtwb2ludHNBY3RpdmVTdGF0ZUNoYW5nZWQiCiB9CiAKIFdlYkluc3Bl
Y3Rvci5EZWJ1Z2dlck1vZGVsLkJyZWFrUmVhc29uID0gewpAQCAtMjIxLDcgKzIxMiw3IEBAIFdl
Ykluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLnByb3RvdHlwZSA9IHsKIAogICAgIF9nbG9iYWxPYmpl
Y3RDbGVhcmVkOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICB0aGlzLl9kZWJ1Z2dlclBhdXNl
ZERldGFpbHMgPSBudWxsOworICAgICAgICB0aGlzLl9zZXREZWJ1Z2dlclBhdXNlZERldGFpbHMo
bnVsbCk7CiAgICAgICAgIHRoaXMuX3NjcmlwdHMgPSB7fTsKICAgICAgICAgdGhpcy5kaXNwYXRj
aEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwuRXZlbnRzLkdsb2Jh
bE9iamVjdENsZWFyZWQpOwogICAgIH0sCkBAIC0yNjIsOSArMjUzLDkgQEAgV2ViSW5zcGVjdG9y
LkRlYnVnZ2VyTW9kZWwucHJvdG90eXBlID0gewogICAgICAqLwogICAgIF9kaWRFZGl0U2NyaXB0
U291cmNlOiBmdW5jdGlvbihzY3JpcHRJZCwgbmV3U291cmNlLCBjYWxsYmFjaywgZXJyb3IsIGNh
bGxGcmFtZXMpCiAgICAgewotICAgICAgICBpZiAoIWVycm9yICYmIGNhbGxGcmFtZXMgJiYgY2Fs
bEZyYW1lcy5sZW5ndGgpCi0gICAgICAgICAgICB0aGlzLl9kZWJ1Z2dlclBhdXNlZERldGFpbHMu
Y2FsbEZyYW1lcyA9IGNhbGxGcmFtZXM7CiAgICAgICAgIGNhbGxiYWNrKGVycm9yKTsKKyAgICAg
ICAgaWYgKCFlcnJvciAmJiBjYWxsRnJhbWVzICYmIGNhbGxGcmFtZXMubGVuZ3RoKQorICAgICAg
ICAgICAgdGhpcy5fcGF1c2VkU2NyaXB0KGNhbGxGcmFtZXMsIHRoaXMuX2RlYnVnZ2VyUGF1c2Vk
RGV0YWlscy5yZWFzb24sIHRoaXMuX2RlYnVnZ2VyUGF1c2VkRGV0YWlscy5hdXhEYXRhKTsKICAg
ICB9LAogCiAgICAgLyoqCkBAIC0yODQsMTkgKzI3NSwzNyBAQCBXZWJJbnNwZWN0b3IuRGVidWdn
ZXJNb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgfSwKIAogICAgIC8qKgorICAgICAqIEBwYXJhbSB7
P1dlYkluc3BlY3Rvci5EZWJ1Z2dlclBhdXNlZERldGFpbHN9IGRlYnVnZ2VyUGF1c2VkRGV0YWls
cworICAgICAqLworICAgIF9zZXREZWJ1Z2dlclBhdXNlZERldGFpbHM6IGZ1bmN0aW9uKGRlYnVn
Z2VyUGF1c2VkRGV0YWlscykKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9kZWJ1Z2dlclBhdXNl
ZERldGFpbHMpCisgICAgICAgICAgICB0aGlzLl9kZWJ1Z2dlclBhdXNlZERldGFpbHMuZGlzcG9z
ZSgpOworICAgICAgICB0aGlzLl9kZWJ1Z2dlclBhdXNlZERldGFpbHMgPSBkZWJ1Z2dlclBhdXNl
ZERldGFpbHM7CisgICAgICAgIGlmICh0aGlzLl9kZWJ1Z2dlclBhdXNlZERldGFpbHMpCisgICAg
ICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRGVidWdn
ZXJNb2RlbC5FdmVudHMuRGVidWdnZXJQYXVzZWQsIHRoaXMuX2RlYnVnZ2VyUGF1c2VkRGV0YWls
cyk7CisgICAgICAgIGlmIChkZWJ1Z2dlclBhdXNlZERldGFpbHMpCisgICAgICAgICAgICB0aGlz
LnNldFNlbGVjdGVkQ2FsbEZyYW1lKGRlYnVnZ2VyUGF1c2VkRGV0YWlscy5jYWxsRnJhbWVzWzBd
KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdGhpcy5zZXRTZWxlY3RlZENhbGxGcmFtZShu
dWxsKTsKKyAgICB9LAorCisgICAgLyoqCiAgICAgICogQHBhcmFtIHtBcnJheS48RGVidWdnZXJB
Z2VudC5DYWxsRnJhbWU+fSBjYWxsRnJhbWVzCiAgICAgICogQHBhcmFtIHtzdHJpbmd9IHJlYXNv
bgogICAgICAqIEBwYXJhbSB7Kn0gYXV4RGF0YQogICAgICAqLwogICAgIF9wYXVzZWRTY3JpcHQ6
IGZ1bmN0aW9uKGNhbGxGcmFtZXMsIHJlYXNvbiwgYXV4RGF0YSkKICAgICB7Ci0gICAgICAgIHRo
aXMuX2RlYnVnZ2VyUGF1c2VkRGV0YWlscyA9IG5ldyBXZWJJbnNwZWN0b3IuRGVidWdnZXJQYXVz
ZWREZXRhaWxzKGNhbGxGcmFtZXMsIHJlYXNvbiwgYXV4RGF0YSk7Ci0gICAgICAgIHRoaXMuZGlz
cGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLkV2ZW50cy5E
ZWJ1Z2dlclBhdXNlZCwgdGhpcy5fZGVidWdnZXJQYXVzZWREZXRhaWxzKTsKKyAgICAgICAgdGhp
cy5fc2V0RGVidWdnZXJQYXVzZWREZXRhaWxzKG5ldyBXZWJJbnNwZWN0b3IuRGVidWdnZXJQYXVz
ZWREZXRhaWxzKHRoaXMsIGNhbGxGcmFtZXMsIHJlYXNvbiwgYXV4RGF0YSkpOwogICAgIH0sCiAK
ICAgICBfcmVzdW1lZFNjcmlwdDogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgdGhpcy5fZGVi
dWdnZXJQYXVzZWREZXRhaWxzID0gbnVsbDsKKyAgICAgICAgdGhpcy5fc2V0RGVidWdnZXJQYXVz
ZWREZXRhaWxzKG51bGwpOworICAgICAgICBpZiAodGhpcy5fZXhlY3V0aW9uTGluZUxpdmVMb2Nh
dGlvbikKKyAgICAgICAgICAgIHRoaXMuX2V4ZWN1dGlvbkxpbmVMaXZlTG9jYXRpb24uZGlzcG9z
ZSgpOworICAgICAgICB0aGlzLl9leGVjdXRpb25MaW5lTGl2ZUxvY2F0aW9uID0gbnVsbDsKICAg
ICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkRlYnVnZ2Vy
TW9kZWwuRXZlbnRzLkRlYnVnZ2VyUmVzdW1lZCk7CiAgICAgfSwKIApAQCAtMzczLDYgKzM4Miwx
MTQgQEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwucHJvdG90eXBlID0gewogICAgIGlzUGF1
c2VkOiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICByZXR1cm4gISF0aGlzLmRlYnVnZ2VyUGF1
c2VkRGV0YWlscygpOworICAgIH0sCisKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7P1dlYklu
c3BlY3Rvci5EZWJ1Z2dlck1vZGVsLkNhbGxGcmFtZX0gY2FsbEZyYW1lCisgICAgICovCisgICAg
c2V0U2VsZWN0ZWRDYWxsRnJhbWU6IGZ1bmN0aW9uKGNhbGxGcmFtZSkKKyAgICB7CisgICAgICAg
IGlmICh0aGlzLl9leGVjdXRpb25MaW5lTGl2ZUxvY2F0aW9uKQorICAgICAgICAgICAgdGhpcy5f
ZXhlY3V0aW9uTGluZUxpdmVMb2NhdGlvbi5kaXNwb3NlKCk7CisgICAgICAgIGRlbGV0ZSB0aGlz
Ll9leGVjdXRpb25MaW5lTGl2ZUxvY2F0aW9uOworCisgICAgICAgIHRoaXMuX3NlbGVjdGVkQ2Fs
bEZyYW1lID0gY2FsbEZyYW1lOworICAgICAgICBpZiAoIXRoaXMuX3NlbGVjdGVkQ2FsbEZyYW1l
KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlz
dGVuZXJzKFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLkV2ZW50cy5DYWxsRnJhbWVTZWxlY3Rl
ZCwgY2FsbEZyYW1lKTsKKworICAgICAgICBmdW5jdGlvbiB1cGRhdGVFeGVjdXRpb25MaW5lKHVp
TG9jYXRpb24pCisgICAgICAgIHsKKyAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlz
dGVuZXJzKFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLkV2ZW50cy5FeGVjdXRpb25MaW5lQ2hh
bmdlZCwgdWlMb2NhdGlvbik7CisgICAgICAgIH0KKyAgICAgICAgdGhpcy5fZXhlY3V0aW9uTGlu
ZUxpdmVMb2NhdGlvbiA9IGNhbGxGcmFtZS5zY3JpcHQuY3JlYXRlTGl2ZUxvY2F0aW9uKGNhbGxG
cmFtZS5fcGF5bG9hZC5sb2NhdGlvbiwgdXBkYXRlRXhlY3V0aW9uTGluZS5iaW5kKHRoaXMpKTsK
KyAgICB9LAorCisgICAgLyoqCisgICAgICogQHJldHVybiB7P1dlYkluc3BlY3Rvci5EZWJ1Z2dl
ck1vZGVsLkNhbGxGcmFtZX0KKyAgICAgKi8KKyAgICBzZWxlY3RlZENhbGxGcmFtZTogZnVuY3Rp
b24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkQ2FsbEZyYW1lOworICAg
IH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gY29kZQorICAgICAqIEBwYXJh
bSB7c3RyaW5nfSBvYmplY3RHcm91cAorICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gaW5jbHVkZUNv
bW1hbmRMaW5lQVBJCisgICAgICogQHBhcmFtIHtib29sZWFufSBkb05vdFBhdXNlT25FeGNlcHRp
b25zQW5kTXV0ZUNvbnNvbGUKKyAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IHJldHVybkJ5VmFsdWUK
KyAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKD9XZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0LCBib29s
ZWFuLCBSdW50aW1lQWdlbnQuUmVtb3RlT2JqZWN0PSl9IGNhbGxiYWNrCisgICAgICovCisgICAg
ZXZhbHVhdGVPblNlbGVjdGVkQ2FsbEZyYW1lOiBmdW5jdGlvbihjb2RlLCBvYmplY3RHcm91cCwg
aW5jbHVkZUNvbW1hbmRMaW5lQVBJLCBkb05vdFBhdXNlT25FeGNlcHRpb25zQW5kTXV0ZUNvbnNv
bGUsIHJldHVybkJ5VmFsdWUsIGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgLyoqCisgICAgICAg
ICAqIEBwYXJhbSB7P1J1bnRpbWVBZ2VudC5SZW1vdGVPYmplY3R9IHJlc3VsdAorICAgICAgICAg
KiBAcGFyYW0ge2Jvb2xlYW49fSB3YXNUaHJvd24KKyAgICAgICAgICovCisgICAgICAgIGZ1bmN0
aW9uIGRpZEV2YWx1YXRlKHJlc3VsdCwgd2FzVGhyb3duKQorICAgICAgICB7CisgICAgICAgICAg
ICBpZiAocmV0dXJuQnlWYWx1ZSkKKyAgICAgICAgICAgICAgICBjYWxsYmFjayhudWxsLCAhIXdh
c1Rocm93biwgd2FzVGhyb3duID8gbnVsbCA6IHJlc3VsdCk7CisgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgY2FsbGJhY2soV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdC5mcm9tUGF5
bG9hZChyZXN1bHQpLCAhIXdhc1Rocm93bik7CisKKyAgICAgICAgICAgIGlmIChvYmplY3RHcm91
cCA9PT0gImNvbnNvbGUiKQorICAgICAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlz
dGVuZXJzKFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLkV2ZW50cy5Db25zb2xlQ29tbWFuZEV2
YWx1YXRlZEluU2VsZWN0ZWRDYWxsRnJhbWUpOworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5z
ZWxlY3RlZENhbGxGcmFtZSgpLmV2YWx1YXRlKGNvZGUsIG9iamVjdEdyb3VwLCBpbmNsdWRlQ29t
bWFuZExpbmVBUEksIGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZSwgcmV0dXJu
QnlWYWx1ZSwgZGlkRXZhbHVhdGUuYmluZCh0aGlzKSk7CisgICAgfSwKKworICAgIC8qKgorICAg
ICAqIEBwYXJhbSB7ZnVuY3Rpb24oT2JqZWN0KX0gY2FsbGJhY2sKKyAgICAgKi8KKyAgICBnZXRT
ZWxlY3RlZENhbGxGcmFtZVZhcmlhYmxlczogZnVuY3Rpb24oY2FsbGJhY2spCisgICAgeworICAg
ICAgICB2YXIgcmVzdWx0ID0geyB0aGlzOiB0cnVlIH07CisKKyAgICAgICAgdmFyIHNlbGVjdGVk
Q2FsbEZyYW1lID0gdGhpcy5fc2VsZWN0ZWRDYWxsRnJhbWU7CisgICAgICAgIGlmICghc2VsZWN0
ZWRDYWxsRnJhbWUpCisgICAgICAgICAgICBjYWxsYmFjayhyZXN1bHQpOworCisgICAgICAgIHZh
ciBwZW5kaW5nUmVxdWVzdHMgPSAwOworCisgICAgICAgIGZ1bmN0aW9uIHByb3BlcnRpZXNDb2xs
ZWN0ZWQocHJvcGVydGllcykKKyAgICAgICAgeworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7
IHByb3BlcnRpZXMgJiYgaSA8IHByb3BlcnRpZXMubGVuZ3RoOyArK2kpCisgICAgICAgICAgICAg
ICAgcmVzdWx0W3Byb3BlcnRpZXNbaV0ubmFtZV0gPSB0cnVlOworICAgICAgICAgICAgaWYgKC0t
cGVuZGluZ1JlcXVlc3RzID09IDApCisgICAgICAgICAgICAgICAgY2FsbGJhY2socmVzdWx0KTsK
KyAgICAgICAgfQorCisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2VsZWN0ZWRDYWxsRnJh
bWUuc2NvcGVDaGFpbi5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgdmFyIHNjb3BlID0gc2Vs
ZWN0ZWRDYWxsRnJhbWUuc2NvcGVDaGFpbltpXTsKKyAgICAgICAgICAgIHZhciBvYmplY3QgPSBX
ZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0LmZyb21QYXlsb2FkKHNjb3BlLm9iamVjdCk7CisgICAg
ICAgICAgICBwZW5kaW5nUmVxdWVzdHMrKzsKKyAgICAgICAgICAgIG9iamVjdC5nZXRBbGxQcm9w
ZXJ0aWVzKHByb3BlcnRpZXNDb2xsZWN0ZWQpOworICAgICAgICB9CisgICAgfSwKKworICAgIC8q
KgorICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gYWN0aXZlCisgICAgICovCisgICAgc2V0QnJlYWtw
b2ludHNBY3RpdmU6IGZ1bmN0aW9uKGFjdGl2ZSkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9i
cmVha3BvaW50c0FjdGl2ZSA9PT0gYWN0aXZlKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB0aGlzLl9icmVha3BvaW50c0FjdGl2ZSA9IGFjdGl2ZTsKKyAgICAgICAgRGVidWdnZXJBZ2Vu
dC5zZXRCcmVha3BvaW50c0FjdGl2ZShhY3RpdmUpOworICAgICAgICB0aGlzLmRpc3BhdGNoRXZl
bnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5FdmVudHMuQnJlYWtwb2lu
dHNBY3RpdmVTdGF0ZUNoYW5nZWQsIGFjdGl2ZSk7CisgICAgfSwKKworICAgIC8qKgorICAgICAq
IEByZXR1cm4ge2Jvb2xlYW59CisgICAgICovCisgICAgYnJlYWtwb2ludHNBY3RpdmU6IGZ1bmN0
aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9icmVha3BvaW50c0FjdGl2ZTsKICAg
ICB9CiB9CiAKQEAgLTQ1Miw2ICs1NjksMTQzIEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlckRpc3Bh
dGNoZXIucHJvdG90eXBlID0gewogfQogCiAvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQHBhcmFt
IHtXZWJJbnNwZWN0b3IuU2NyaXB0fSBzY3JpcHQKKyAqIEBwYXJhbSB7RGVidWdnZXJBZ2VudC5D
YWxsRnJhbWV9IHBheWxvYWQKKyAqLworV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwuQ2FsbEZy
YW1lID0gZnVuY3Rpb24oc2NyaXB0LCBwYXlsb2FkKQoreworICAgIHRoaXMuX3NjcmlwdCA9IHNj
cmlwdDsKKyAgICB0aGlzLl9wYXlsb2FkID0gcGF5bG9hZDsKKyAgICB0aGlzLl9sb2NhdGlvbnMg
PSBbXTsKK30KKworV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwuQ2FsbEZyYW1lLnByb3RvdHlw
ZSA9IHsKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtXZWJJbnNwZWN0b3IuU2NyaXB0fQorICAg
ICAqLworICAgIGdldCBzY3JpcHQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3Njcmlw
dDsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHJldHVybiB7c3RyaW5nfQorICAgICAqLwor
ICAgIGdldCB0eXBlKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9wYXlsb2FkLnR5cGU7
CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEByZXR1cm4ge0FycmF5LjxEZWJ1Z2dlckFnZW50
LlNjb3BlPn0KKyAgICAgKi8KKyAgICBnZXQgc2NvcGVDaGFpbigpCisgICAgeworICAgICAgICBy
ZXR1cm4gdGhpcy5fcGF5bG9hZC5zY29wZUNoYWluOworICAgIH0sCisKKyAgICAvKioKKyAgICAg
KiBAcmV0dXJuIHtSdW50aW1lQWdlbnQuUmVtb3RlT2JqZWN0fQorICAgICAqLworICAgIGdldCB0
aGlzKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9wYXlsb2FkLnRoaXM7CisgICAgfSwK
KworICAgIC8qKgorICAgICAqIEByZXR1cm4ge3N0cmluZ30KKyAgICAgKi8KKyAgICBnZXQgZnVu
Y3Rpb25OYW1lKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9wYXlsb2FkLmZ1bmN0aW9u
TmFtZTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHJldHVybiB7c3RyaW5nfQorICAgICAq
LworICAgIGdldCBsb2NhdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fcGF5bG9h
ZC5sb2NhdGlvbjsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJpbmd9IGNv
ZGUKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gb2JqZWN0R3JvdXAKKyAgICAgKiBAcGFyYW0ge2Jv
b2xlYW59IGluY2x1ZGVDb21tYW5kTGluZUFQSQorICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gZG9O
b3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlCisgICAgICogQHBhcmFtIHtib29sZWFu
fSByZXR1cm5CeVZhbHVlCisgICAgICogQHBhcmFtIHtmdW5jdGlvbig/UnVudGltZUFnZW50LlJl
bW90ZU9iamVjdCwgYm9vbGVhbj0pPX0gY2FsbGJhY2sKKyAgICAgKi8KKyAgICBldmFsdWF0ZTog
ZnVuY3Rpb24oY29kZSwgb2JqZWN0R3JvdXAsIGluY2x1ZGVDb21tYW5kTGluZUFQSSwgZG9Ob3RQ
YXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlLCByZXR1cm5CeVZhbHVlLCBjYWxsYmFjaykK
KyAgICB7CisgICAgICAgIC8qKgorICAgICAgICAgKiBAdGhpcyB7V2ViSW5zcGVjdG9yLkRlYnVn
Z2VyTW9kZWwuQ2FsbEZyYW1lfQorICAgICAgICAgKiBAcGFyYW0gez9Qcm90b2NvbC5FcnJvcn0g
ZXJyb3IKKyAgICAgICAgICogQHBhcmFtIHtSdW50aW1lQWdlbnQuUmVtb3RlT2JqZWN0fSByZXN1
bHQKKyAgICAgICAgICogQHBhcmFtIHtib29sZWFuPX0gd2FzVGhyb3duCisgICAgICAgICAqLwor
ICAgICAgICBmdW5jdGlvbiBkaWRFdmFsdWF0ZU9uQ2FsbEZyYW1lKGVycm9yLCByZXN1bHQsIHdh
c1Rocm93bikKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGVycm9yKSB7CisgICAgICAgICAg
ICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7CisgICAgICAgICAgICAgICAgY2FsbGJhY2sobnVs
bCwgZmFsc2UpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGNhbGxiYWNrKHJlc3VsdCwgd2FzVGhyb3duKTsKKyAgICAgICAgfQorICAgICAgICBE
ZWJ1Z2dlckFnZW50LmV2YWx1YXRlT25DYWxsRnJhbWUodGhpcy5fcGF5bG9hZC5jYWxsRnJhbWVJ
ZCwgY29kZSwgb2JqZWN0R3JvdXAsIGluY2x1ZGVDb21tYW5kTGluZUFQSSwgZG9Ob3RQYXVzZU9u
RXhjZXB0aW9uc0FuZE11dGVDb25zb2xlLCByZXR1cm5CeVZhbHVlLCBkaWRFdmFsdWF0ZU9uQ2Fs
bEZyYW1lLmJpbmQodGhpcykpOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge2Z1
bmN0aW9uKFdlYkluc3BlY3Rvci5VSUxvY2F0aW9uKTooYm9vbGVhbnx1bmRlZmluZWQpfSB1cGRh
dGVEZWxlZ2F0ZQorICAgICAqLworICAgIGNyZWF0ZUxpdmVMb2NhdGlvbjogZnVuY3Rpb24odXBk
YXRlRGVsZWdhdGUpCisgICAgeworICAgICAgICB2YXIgbG9jYXRpb24gPSB0aGlzLl9zY3JpcHQu
Y3JlYXRlTGl2ZUxvY2F0aW9uKHRoaXMuX3BheWxvYWQubG9jYXRpb24sIHVwZGF0ZURlbGVnYXRl
KTsKKyAgICAgICAgdGhpcy5fbG9jYXRpb25zLnB1c2gobG9jYXRpb24pOworICAgICAgICByZXR1
cm4gbG9jYXRpb247CisgICAgfSwKKworICAgIGRpc3Bvc2U6IGZ1bmN0aW9uKHVwZGF0ZURlbGVn
YXRlKQorICAgIHsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9sb2NhdGlvbnMu
bGVuZ3RoOyArK2kpCisgICAgICAgICAgICB0aGlzLl9sb2NhdGlvbnNbaV0uZGlzcG9zZSgpOwor
ICAgICAgICB0aGlzLl9sb2NhdGlvbnMgPSBbXTsKKyAgICB9Cit9CisKKy8qKgorICogQGNvbnN0
cnVjdG9yCisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsfSBtb2RlbAorICog
QHBhcmFtIHtBcnJheS48RGVidWdnZXJBZ2VudC5DYWxsRnJhbWU+fSBjYWxsRnJhbWVzCisgKiBA
cGFyYW0ge3N0cmluZ30gcmVhc29uCisgKiBAcGFyYW0geyp9IGF1eERhdGEKKyAqLworV2ViSW5z
cGVjdG9yLkRlYnVnZ2VyUGF1c2VkRGV0YWlscyA9IGZ1bmN0aW9uKG1vZGVsLCBjYWxsRnJhbWVz
LCByZWFzb24sIGF1eERhdGEpCit7CisgICAgdGhpcy5jYWxsRnJhbWVzID0gW107CisgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBjYWxsRnJhbWVzLmxlbmd0aDsgKytpKSB7CisgICAgICAgIHZhciBj
YWxsRnJhbWUgPSBjYWxsRnJhbWVzW2ldOworICAgICAgICB2YXIgc2NyaXB0ID0gbW9kZWwuc2Ny
aXB0Rm9ySWQoY2FsbEZyYW1lLmxvY2F0aW9uLnNjcmlwdElkKTsKKyAgICAgICAgaWYgKHNjcmlw
dCkKKyAgICAgICAgICAgIHRoaXMuY2FsbEZyYW1lcy5wdXNoKG5ldyBXZWJJbnNwZWN0b3IuRGVi
dWdnZXJNb2RlbC5DYWxsRnJhbWUoc2NyaXB0LCBjYWxsRnJhbWUpKTsKKyAgICB9CisgICAgdGhp
cy5yZWFzb24gPSByZWFzb247CisgICAgdGhpcy5hdXhEYXRhID0gYXV4RGF0YTsKK30KKworV2Vi
SW5zcGVjdG9yLkRlYnVnZ2VyUGF1c2VkRGV0YWlscy5wcm90b3R5cGUgPSB7CisgICAgZGlzcG9z
ZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmNh
bGxGcmFtZXMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIHZhciBjYWxsRnJhbWUgPSB0aGlz
LmNhbGxGcmFtZXNbaV07CisgICAgICAgICAgICBjYWxsRnJhbWUuZGlzcG9zZSgpOworICAgICAg
ICB9CisgICAgfQorfQorCisvKioKICAqIEB0eXBlIHs/V2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9k
ZWx9CiAgKi8KIFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsID0gbnVsbDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVidWdnZXJQcmVzZW50YXRpb25N
b2RlbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVidWdnZXJQcmVz
ZW50YXRpb25Nb2RlbC5qcwppbmRleCAyNjYwYzEwZDBkOGEzYzdiYjg1ZGY1NTE1ZDExN2U0NDBk
YWY4NDFmLi5mM2RjODA2NmI4N2Y4MDE4MGJmMjYwNzk3ZDEzMjk4MDYxZTdjNGE2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RlYnVnZ2VyUHJlc2VudGF0
aW9uTW9kZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZWJ1
Z2dlclByZXNlbnRhdGlvbk1vZGVsLmpzCkBAIC00Nyw4ICs0Nyw3IEBAIFdlYkluc3BlY3Rvci5E
ZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsID0gZnVuY3Rpb24oKQogCiAgICAgV2ViSW5zcGVjdG9y
LmRlYnVnZ2VyTW9kZWwuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2Rl
bC5FdmVudHMuUGFyc2VkU2NyaXB0U291cmNlLCB0aGlzLl9wYXJzZWRTY3JpcHRTb3VyY2UsIHRo
aXMpOwogICAgIFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2Vi
SW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwuRXZlbnRzLkZhaWxlZFRvUGFyc2VTY3JpcHRTb3VyY2Us
IHRoaXMuX2ZhaWxlZFRvUGFyc2VTY3JpcHRTb3VyY2UsIHRoaXMpOwotICAgIFdlYkluc3BlY3Rv
ci5kZWJ1Z2dlck1vZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9k
ZWwuRXZlbnRzLkRlYnVnZ2VyUGF1c2VkLCB0aGlzLl9kZWJ1Z2dlclBhdXNlZCwgdGhpcyk7Ci0g
ICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0
b3IuRGVidWdnZXJNb2RlbC5FdmVudHMuRGVidWdnZXJSZXN1bWVkLCB0aGlzLl9kZWJ1Z2dlclJl
c3VtZWQsIHRoaXMpOworICAgIFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLmFkZEV2ZW50TGlz
dGVuZXIoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwuRXZlbnRzLkNhbGxGcmFtZVNlbGVjdGVk
LCB0aGlzLl9jYWxsRnJhbWVTZWxlY3RlZCwgdGhpcyk7CiAgICAgV2ViSW5zcGVjdG9yLmRlYnVn
Z2VyTW9kZWwuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5FdmVu
dHMuR2xvYmFsT2JqZWN0Q2xlYXJlZCwgdGhpcy5fZGVidWdnZXJSZXNldCwgdGhpcyk7CiAKICAg
ICBXZWJJbnNwZWN0b3IuY29uc29sZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Db25z
b2xlTW9kZWwuRXZlbnRzLk1lc3NhZ2VBZGRlZCwgdGhpcy5fY29uc29sZU1lc3NhZ2VBZGRlZCwg
dGhpcyk7CkBAIC02MCwxNCArNTksNyBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRp
b25Nb2RlbCA9IGZ1bmN0aW9uKCkKIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1v
ZGVsLkV2ZW50cyA9IHsKICAgICBVSVNvdXJjZUNvZGVBZGRlZDogInNvdXJjZS1maWxlLWFkZGVk
IiwKICAgICBVSVNvdXJjZUNvZGVSZXBsYWNlZDogInNvdXJjZS1maWxlLXJlcGxhY2VkIiwKLSAg
ICBVSVNvdXJjZUNvZGVSZW1vdmVkOiAic291cmNlLWZpbGUtcmVtb3ZlZCIsCi0gICAgRGVidWdn
ZXJQYXVzZWQ6ICJkZWJ1Z2dlci1wYXVzZWQiLAotICAgIERlYnVnZ2VyUmVzdW1lZDogImRlYnVn
Z2VyLXJlc3VtZWQiLAotICAgIERlYnVnZ2VyUmVzZXQ6ICJkZWJ1Z2dlci1yZXNldCIsCi0gICAg
Q2FsbEZyYW1lU2VsZWN0ZWQ6ICJjYWxsLWZyYW1lLXNlbGVjdGVkIiwKLSAgICBDb25zb2xlQ29t
bWFuZEV2YWx1YXRlZEluU2VsZWN0ZWRDYWxsRnJhbWU6ICJjb25zb2xlLWNvbW1hbmQtZXZhbHVh
dGVkLWluLXNlbGVjdGVkLWNhbGwtZnJhbWUiLAotICAgIEV4ZWN1dGlvbkxpbmVDaGFuZ2VkOiAi
ZXhlY3V0aW9uLWxpbmUtY2hhbmdlZCIsCi0gICAgQnJlYWtwb2ludHNBY3RpdmVTdGF0ZUNoYW5n
ZWQ6ICJicmVha3BvaW50cy1hY3RpdmUtc3RhdGUtY2hhbmdlZCIKKyAgICBVSVNvdXJjZUNvZGVS
ZW1vdmVkOiAic291cmNlLWZpbGUtcmVtb3ZlZCIKIH0KIAogV2ViSW5zcGVjdG9yLkRlYnVnZ2Vy
UHJlc2VudGF0aW9uTW9kZWwucHJvdG90eXBlID0gewpAQCAtODUsMTUgKzc3LDYgQEAgV2ViSW5z
cGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwucHJvdG90eXBlID0gewogICAgIH0sCiAK
ICAgICAvKioKLSAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5QcmVzZW50YXRpb25DYWxsRnJh
bWV9IGNhbGxGcmFtZQotICAgICAqIEByZXR1cm4ge1dlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNl
bnRhdGlvbk1vZGVsLkNhbGxGcmFtZVBsYWNhcmR9Ci0gICAgICovCi0gICAgY3JlYXRlUGxhY2Fy
ZDogZnVuY3Rpb24oY2FsbEZyYW1lKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNw
ZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5DYWxsRnJhbWVQbGFjYXJkKGNhbGxGcmFt
ZSwgdGhpcyk7Ci0gICAgfSwKLQotICAgIC8qKgogICAgICAqIEBwYXJhbSB7RGVidWdnZXJBZ2Vu
dC5Mb2NhdGlvbn0gcmF3TG9jYXRpb24KICAgICAgKiBAcmV0dXJuIHs/V2ViSW5zcGVjdG9yLlVJ
TG9jYXRpb259CiAgICAgICovCkBAIC0xMTYsMTIgKzk5LDEyIEBAIFdlYkluc3BlY3Rvci5EZWJ1
Z2dlclByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAvKioKICAgICAgKiBAcGFy
YW0ge0RlYnVnZ2VyQWdlbnQuTG9jYXRpb259IHJhd0xvY2F0aW9uCiAgICAgICogQHBhcmFtIHtm
dW5jdGlvbihXZWJJbnNwZWN0b3IuVUlMb2NhdGlvbik6KGJvb2xlYW58dW5kZWZpbmVkKX0gdXBk
YXRlRGVsZWdhdGUKLSAgICAgKiBAcmV0dXJuIHtXZWJJbnNwZWN0b3IuU2NyaXB0LkxvY2F0aW9u
fQorICAgICAqIEByZXR1cm4ge1dlYkluc3BlY3Rvci5MaXZlTG9jYXRpb259CiAgICAgICovCiAg
ICAgY3JlYXRlTGl2ZUxvY2F0aW9uOiBmdW5jdGlvbihyYXdMb2NhdGlvbiwgdXBkYXRlRGVsZWdh
dGUpCiAgICAgewogICAgICAgICB2YXIgc2NyaXB0ID0gV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9k
ZWwuc2NyaXB0Rm9ySWQocmF3TG9jYXRpb24uc2NyaXB0SWQpOwotICAgICAgICByZXR1cm4gc2Ny
aXB0LmNyZWF0ZUxvY2F0aW9uKHJhd0xvY2F0aW9uLCB1cGRhdGVEZWxlZ2F0ZSk7CisgICAgICAg
IHJldHVybiBzY3JpcHQuY3JlYXRlTGl2ZUxvY2F0aW9uKHJhd0xvY2F0aW9uLCB1cGRhdGVEZWxl
Z2F0ZSk7CiAgICAgfSwKIAogICAgIC8qKgpAQCAtMTMyLDYgKzExNSw5IEBAIFdlYkluc3BlY3Rv
ci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgdmFyIHNj
cmlwdCA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlNjcmlwdH0gKi8gZXZlbnQuZGF0YTsKICAg
ICAgICAgdGhpcy5fc2NyaXB0TWFwcGluZy5hZGRTY3JpcHQoc2NyaXB0KTsKICAgICAgICAgdGhp
cy5fYWRkUGVuZGluZ0NvbnNvbGVNZXNzYWdlc1RvU2NyaXB0KHNjcmlwdCk7CisKKyAgICAgICAg
d2luZG93Lm15UGFyc2VkcyA9IHdpbmRvdy5teVBhcnNlZHMgfHwgW107CisgICAgICAgIHdpbmRv
dy5teVBhcnNlZHMucHVzaChzY3JpcHQuc291cmNlVVJMKTsKICAgICB9LAogCiAgICAgLyoqCkBA
IC0xNDIsNiArMTI4LDEyIEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVs
LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fcGFyc2VkU2NyaXB0U291cmNlKGV2ZW50KTsK
ICAgICB9LAogCisgICAgX2NhbGxGcmFtZVNlbGVjdGVkOiBmdW5jdGlvbihldmVudCkKKyAgICB7
CisgICAgICAgIHZhciBjYWxsRnJhbWUgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5EZWJ1Z2dl
ck1vZGVsLkNhbGxGcmFtZX0gKi8gZXZlbnQuZGF0YTsKKyAgICAgICAgdGhpcy5fc2NyaXB0TWFw
cGluZy5mb3JjZVVwZGF0ZVNvdXJjZU1hcHBpbmcoY2FsbEZyYW1lLmxvY2F0aW9uKTsKKyAgICB9
LAorCiAgICAgLyoqCiAgICAgICogQHJldHVybiB7QXJyYXkuPFdlYkluc3BlY3Rvci5VSVNvdXJj
ZUNvZGU+fQogICAgICAqLwpAQCAtMjA5LDkgKzIwMSw2IEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dl
clByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICByZXNvdXJj
ZS5hZGRSZXZpc2lvbihuZXdTb3VyY2UpOwogCiAgICAgICAgICAgICB1aVNvdXJjZUNvZGUuY29u
dGVudENoYW5nZWQobmV3U291cmNlKTsKLQotICAgICAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5k
ZWJ1Z2dlck1vZGVsLmNhbGxGcmFtZXMpCi0gICAgICAgICAgICAgICAgdGhpcy5fZGVidWdnZXJQ
YXVzZWQoKTsKICAgICAgICAgfQogICAgICAgICBXZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbC5z
ZXRTY3JpcHRTb3VyY2Uoc2NyaXB0LnNjcmlwdElkLCBuZXdTb3VyY2UsIGRpZEVkaXRTY3JpcHRT
b3VyY2UuYmluZCh0aGlzKSk7CiAgICAgfSwKQEAgLTMxNywxNDEgKzMwNiwxMiBAQCBXZWJJbnNw
ZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRo
aXMuX2JyZWFrcG9pbnRNYW5hZ2VyLnJlbW92ZUFsbEJyZWFrcG9pbnRzKCk7CiAgICAgfSwKIAot
ICAgIF9kZWJ1Z2dlclBhdXNlZDogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdmFyIGNhbGxG
cmFtZXMgPSBXZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbC5jYWxsRnJhbWVzOwotICAgICAgICB0
aGlzLl9wcmVzZW50YXRpb25DYWxsRnJhbWVzID0gW107Ci0gICAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgY2FsbEZyYW1lcy5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgdmFyIGNhbGxGcmFt
ZSA9IGNhbGxGcmFtZXNbaV07Ci0gICAgICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLmRlYnVnZ2Vy
TW9kZWwuc2NyaXB0Rm9ySWQoY2FsbEZyYW1lLmxvY2F0aW9uLnNjcmlwdElkKSkKLSAgICAgICAg
ICAgICAgICB0aGlzLl9wcmVzZW50YXRpb25DYWxsRnJhbWVzLnB1c2gobmV3IFdlYkluc3BlY3Rv
ci5QcmVzZW50YXRpb25DYWxsRnJhbWUoY2FsbEZyYW1lLCBpLCB0aGlzKSk7Ci0gICAgICAgIH0K
LSAgICAgICAgdmFyIGRldGFpbHMgPSBXZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbC5kZWJ1Z2dl
clBhdXNlZERldGFpbHMoKTsKLSAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMo
V2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuRXZlbnRzLkRlYnVnZ2VyUGF1
c2VkLCB7IGNhbGxGcmFtZXM6IHRoaXMuX3ByZXNlbnRhdGlvbkNhbGxGcmFtZXMsIGRldGFpbHM6
IGRldGFpbHMgfSk7Ci0gICAgICAgIHRoaXMuc2VsZWN0ZWRDYWxsRnJhbWUgPSB0aGlzLl9wcmVz
ZW50YXRpb25DYWxsRnJhbWVzWzBdOwotICAgIH0sCi0KLSAgICBfZGVidWdnZXJSZXN1bWVkOiBm
dW5jdGlvbigpCi0gICAgewotICAgICAgICB0aGlzLl9wcmVzZW50YXRpb25DYWxsRnJhbWVzID0g
W107Ci0gICAgICAgIHRoaXMuc2VsZWN0ZWRDYWxsRnJhbWUgPSBudWxsOwotICAgICAgICB0aGlz
LmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRp
b25Nb2RlbC5FdmVudHMuRGVidWdnZXJSZXN1bWVkKTsKLSAgICB9LAotCi0gICAgc2V0IHNlbGVj
dGVkQ2FsbEZyYW1lKGNhbGxGcmFtZSkKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzLl9leGVjdXRp
b25MaW5lTGl2ZUxvY2F0aW9uKQotICAgICAgICAgICAgdGhpcy5fZXhlY3V0aW9uTGluZUxpdmVM
b2NhdGlvbi5kaXNwb3NlKCk7Ci0gICAgICAgIGRlbGV0ZSB0aGlzLl9leGVjdXRpb25MaW5lTGl2
ZUxvY2F0aW9uOwotCi0gICAgICAgIHRoaXMuX3NlbGVjdGVkQ2FsbEZyYW1lID0gY2FsbEZyYW1l
OwotICAgICAgICBpZiAoIXRoaXMuX3NlbGVjdGVkQ2FsbEZyYW1lKQotICAgICAgICAgICAgcmV0
dXJuOwotCi0gICAgICAgIHRoaXMuX3NjcmlwdE1hcHBpbmcuZm9yY2VVcGRhdGVTb3VyY2VNYXBw
aW5nKGNhbGxGcmFtZS5fY2FsbEZyYW1lLmxvY2F0aW9uKTsKLSAgICAgICAgdGhpcy5kaXNwYXRj
aEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwu
RXZlbnRzLkNhbGxGcmFtZVNlbGVjdGVkLCBjYWxsRnJhbWUpOwotCi0gICAgICAgIGZ1bmN0aW9u
IHVwZGF0ZUV4ZWN1dGlvbkxpbmUodWlMb2NhdGlvbikKLSAgICAgICAgewotICAgICAgICAgICAg
dGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2Vu
dGF0aW9uTW9kZWwuRXZlbnRzLkV4ZWN1dGlvbkxpbmVDaGFuZ2VkLCB1aUxvY2F0aW9uKTsKLSAg
ICAgICAgfQotICAgICAgICB0aGlzLl9leGVjdXRpb25MaW5lTGl2ZUxvY2F0aW9uID0gdGhpcy5j
cmVhdGVMaXZlTG9jYXRpb24oY2FsbEZyYW1lLl9jYWxsRnJhbWUubG9jYXRpb24sIHVwZGF0ZUV4
ZWN1dGlvbkxpbmUuYmluZCh0aGlzKSk7Ci0gICAgfSwKLQotICAgIC8qKgotICAgICAqIEByZXR1
cm4gez9XZWJJbnNwZWN0b3IuUHJlc2VudGF0aW9uQ2FsbEZyYW1lfQotICAgICAqLwotICAgIGdl
dCBzZWxlY3RlZENhbGxGcmFtZSgpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fc2VsZWN0
ZWRDYWxsRnJhbWU7Ci0gICAgfSwKLQotICAgIC8qKgotICAgICAqIEBwYXJhbSB7c3RyaW5nfSBj
b2RlCi0gICAgICogQHBhcmFtIHtzdHJpbmd9IG9iamVjdEdyb3VwCi0gICAgICogQHBhcmFtIHti
b29sZWFufSBpbmNsdWRlQ29tbWFuZExpbmVBUEkKLSAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGRv
Tm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZQotICAgICAqIEBwYXJhbSB7Ym9vbGVh
bn0gcmV0dXJuQnlWYWx1ZQotICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oP1dlYkluc3BlY3Rvci5S
ZW1vdGVPYmplY3QsIGJvb2xlYW4sIFJ1bnRpbWVBZ2VudC5SZW1vdGVPYmplY3Q9KX0gY2FsbGJh
Y2sKLSAgICAgKi8KLSAgICBldmFsdWF0ZUluU2VsZWN0ZWRDYWxsRnJhbWU6IGZ1bmN0aW9uKGNv
ZGUsIG9iamVjdEdyb3VwLCBpbmNsdWRlQ29tbWFuZExpbmVBUEksIGRvTm90UGF1c2VPbkV4Y2Vw
dGlvbnNBbmRNdXRlQ29uc29sZSwgcmV0dXJuQnlWYWx1ZSwgY2FsbGJhY2spCi0gICAgewotICAg
ICAgICAvKioKLSAgICAgICAgICogQHBhcmFtIHs/UnVudGltZUFnZW50LlJlbW90ZU9iamVjdH0g
cmVzdWx0Ci0gICAgICAgICAqIEBwYXJhbSB7Ym9vbGVhbj19IHdhc1Rocm93bgotICAgICAgICAg
Ki8KLSAgICAgICAgZnVuY3Rpb24gZGlkRXZhbHVhdGUocmVzdWx0LCB3YXNUaHJvd24pCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIGlmIChyZXR1cm5CeVZhbHVlKQotICAgICAgICAgICAgICAgIGNh
bGxiYWNrKG51bGwsICEhd2FzVGhyb3duLCB3YXNUaHJvd24gPyBudWxsIDogcmVzdWx0KTsKLSAg
ICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBjYWxsYmFjayhXZWJJbnNwZWN0b3IuUmVt
b3RlT2JqZWN0LmZyb21QYXlsb2FkKHJlc3VsdCksICEhd2FzVGhyb3duKTsKLQotICAgICAgICAg
ICAgaWYgKG9iamVjdEdyb3VwID09PSAiY29uc29sZSIpCi0gICAgICAgICAgICAgICAgdGhpcy5k
aXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9u
TW9kZWwuRXZlbnRzLkNvbnNvbGVDb21tYW5kRXZhbHVhdGVkSW5TZWxlY3RlZENhbGxGcmFtZSk7
Ci0gICAgICAgIH0KLQotICAgICAgICB0aGlzLnNlbGVjdGVkQ2FsbEZyYW1lLmV2YWx1YXRlKGNv
ZGUsIG9iamVjdEdyb3VwLCBpbmNsdWRlQ29tbWFuZExpbmVBUEksIGRvTm90UGF1c2VPbkV4Y2Vw
dGlvbnNBbmRNdXRlQ29uc29sZSwgcmV0dXJuQnlWYWx1ZSwgZGlkRXZhbHVhdGUuYmluZCh0aGlz
KSk7Ci0gICAgfSwKLQotICAgIC8qKgotICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oT2JqZWN0KX0g
Y2FsbGJhY2sKLSAgICAgKi8KLSAgICBnZXRTZWxlY3RlZENhbGxGcmFtZVZhcmlhYmxlczogZnVu
Y3Rpb24oY2FsbGJhY2spCi0gICAgewotICAgICAgICB2YXIgcmVzdWx0ID0geyB0aGlzOiB0cnVl
IH07Ci0KLSAgICAgICAgdmFyIHNlbGVjdGVkQ2FsbEZyYW1lID0gdGhpcy5zZWxlY3RlZENhbGxG
cmFtZTsKLSAgICAgICAgaWYgKCFzZWxlY3RlZENhbGxGcmFtZSkKLSAgICAgICAgICAgIGNhbGxi
YWNrKHJlc3VsdCk7Ci0KLSAgICAgICAgdmFyIHBlbmRpbmdSZXF1ZXN0cyA9IDA7Ci0KLSAgICAg
ICAgZnVuY3Rpb24gcHJvcGVydGllc0NvbGxlY3RlZChwcm9wZXJ0aWVzKQotICAgICAgICB7Ci0g
ICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgcHJvcGVydGllcyAmJiBpIDwgcHJvcGVydGllcy5s
ZW5ndGg7ICsraSkKLSAgICAgICAgICAgICAgICByZXN1bHRbcHJvcGVydGllc1tpXS5uYW1lXSA9
IHRydWU7Ci0gICAgICAgICAgICBpZiAoLS1wZW5kaW5nUmVxdWVzdHMgPT0gMCkKLSAgICAgICAg
ICAgICAgICBjYWxsYmFjayhyZXN1bHQpOwotICAgICAgICB9Ci0KLSAgICAgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBzZWxlY3RlZENhbGxGcmFtZS5zY29wZUNoYWluLmxlbmd0aDsgKytpKSB7Ci0g
ICAgICAgICAgICB2YXIgc2NvcGUgPSBzZWxlY3RlZENhbGxGcmFtZS5zY29wZUNoYWluW2ldOwot
ICAgICAgICAgICAgdmFyIG9iamVjdCA9IFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QuZnJvbVBh
eWxvYWQoc2NvcGUub2JqZWN0KTsKLSAgICAgICAgICAgIHBlbmRpbmdSZXF1ZXN0cysrOwotICAg
ICAgICAgICAgb2JqZWN0LmdldEFsbFByb3BlcnRpZXMocHJvcGVydGllc0NvbGxlY3RlZCk7Ci0g
ICAgICAgIH0KLSAgICB9LAotCiAgICAgX2RlYnVnZ2VyUmVzZXQ6IGZ1bmN0aW9uKCkKICAgICB7
CiAgICAgICAgIHRoaXMuX3NjcmlwdE1hcHBpbmcucmVzZXQoKTsKLSAgICAgICAgdGhpcy5fcHJl
c2VudGF0aW9uQ2FsbEZyYW1lcyA9IFtdOwotICAgICAgICB0aGlzLl9zZWxlY3RlZENhbGxGcmFt
ZSA9IG51bGw7CiAgICAgICAgIHRoaXMuX2JyZWFrcG9pbnRNYW5hZ2VyLmRlYnVnZ2VyUmVzZXQo
KTsKICAgICAgICAgdGhpcy5fcGVuZGluZ0NvbnNvbGVNZXNzYWdlcyA9IHt9OwogICAgICAgICB0
aGlzLl9jb25zb2xlTWVzc2FnZUxpdmVMb2NhdGlvbnMgPSBbXTsKLSAgICAgICAgdGhpcy5kaXNw
YXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9k
ZWwuRXZlbnRzLkRlYnVnZ2VyUmVzZXQpOwotICAgIH0sCi0KLSAgICAvKioKLSAgICAgKiBAcGFy
YW0ge2Jvb2xlYW59IGFjdGl2ZQotICAgICAqLwotICAgIHNldEJyZWFrcG9pbnRzQWN0aXZlOiBm
dW5jdGlvbihhY3RpdmUpCi0gICAgewotICAgICAgICBpZiAodGhpcy5fYnJlYWtwb2ludHNBY3Rp
dmUgPT09IGFjdGl2ZSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgdGhpcy5fYnJlYWtw
b2ludHNBY3RpdmUgPSBhY3RpdmU7Ci0gICAgICAgIERlYnVnZ2VyQWdlbnQuc2V0QnJlYWtwb2lu
dHNBY3RpdmUoYWN0aXZlKTsKLSAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMo
V2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuRXZlbnRzLkJyZWFrcG9pbnRz
QWN0aXZlU3RhdGVDaGFuZ2VkLCBhY3RpdmUpOwotICAgIH0sCi0KLSAgICAvKioKLSAgICAgKiBA
cmV0dXJuIHtib29sZWFufQotICAgICAqLwotICAgIGJyZWFrcG9pbnRzQWN0aXZlOiBmdW5jdGlv
bigpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fYnJlYWtwb2ludHNBY3RpdmU7CiAgICAg
fQogfQogCkBAIC00NzIsMTIwICszMzIsNiBAQCBXZWJJbnNwZWN0b3IuUHJlc2VudGF0aW9uQ29u
c29sZU1lc3NhZ2UgPSBmdW5jdGlvbih1aVNvdXJjZUNvZGUsIGxpbmVOdW1iZXIsIG9yaQogCiAv
KioKICAqIEBjb25zdHJ1Y3RvcgotICogQHBhcmFtIHtEZWJ1Z2dlckFnZW50LkNhbGxGcmFtZX0g
Y2FsbEZyYW1lCi0gKiBAcGFyYW0ge251bWJlcn0gaW5kZXgKLSAqIEBwYXJhbSB7V2ViSW5zcGVj
dG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWx9IG1vZGVsCi0gKi8KLVdlYkluc3BlY3Rvci5Q
cmVzZW50YXRpb25DYWxsRnJhbWUgPSBmdW5jdGlvbihjYWxsRnJhbWUsIGluZGV4LCBtb2RlbCkK
LXsKLSAgICB0aGlzLl9jYWxsRnJhbWUgPSBjYWxsRnJhbWU7Ci0gICAgdGhpcy5faW5kZXggPSBp
bmRleDsKLSAgICB0aGlzLl9tb2RlbCA9IG1vZGVsOwotfQotCi1XZWJJbnNwZWN0b3IuUHJlc2Vu
dGF0aW9uQ2FsbEZyYW1lLnByb3RvdHlwZSA9IHsKLSAgICAvKioKLSAgICAgKiBAcmV0dXJuIHtz
dHJpbmd9Ci0gICAgICovCi0gICAgZ2V0IHR5cGUoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRo
aXMuX2NhbGxGcmFtZS50eXBlOwotICAgIH0sCi0KLSAgICAvKioKLSAgICAgKiBAcmV0dXJuIHtB
cnJheS48RGVidWdnZXJBZ2VudC5TY29wZT59Ci0gICAgICovCi0gICAgZ2V0IHNjb3BlQ2hhaW4o
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2NhbGxGcmFtZS5zY29wZUNoYWluOwotICAg
IH0sCi0KLSAgICAvKioKLSAgICAgKiBAcmV0dXJuIHtSdW50aW1lQWdlbnQuUmVtb3RlT2JqZWN0
fQotICAgICAqLwotICAgIGdldCB0aGlzKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9j
YWxsRnJhbWUudGhpczsKLSAgICB9LAotCi0gICAgLyoqCi0gICAgICogQHJldHVybiB7bnVtYmVy
fQotICAgICAqLwotICAgIGdldCBpbmRleCgpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5f
aW5kZXg7Ci0gICAgfSwKLQotICAgIC8qKgotICAgICAqIEBwYXJhbSB7c3RyaW5nfSBjb2RlCi0g
ICAgICogQHBhcmFtIHtzdHJpbmd9IG9iamVjdEdyb3VwCi0gICAgICogQHBhcmFtIHtib29sZWFu
fSBpbmNsdWRlQ29tbWFuZExpbmVBUEkKLSAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGRvTm90UGF1
c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZQotICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gcmV0
dXJuQnlWYWx1ZQotICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oP1J1bnRpbWVBZ2VudC5SZW1vdGVP
YmplY3QsIGJvb2xlYW49KT19IGNhbGxiYWNrCi0gICAgICovCi0gICAgZXZhbHVhdGU6IGZ1bmN0
aW9uKGNvZGUsIG9iamVjdEdyb3VwLCBpbmNsdWRlQ29tbWFuZExpbmVBUEksIGRvTm90UGF1c2VP
bkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZSwgcmV0dXJuQnlWYWx1ZSwgY2FsbGJhY2spCi0gICAg
ewotICAgICAgICAvKioKLSAgICAgICAgICogQHRoaXMge1dlYkluc3BlY3Rvci5QcmVzZW50YXRp
b25DYWxsRnJhbWV9Ci0gICAgICAgICAqIEBwYXJhbSB7P1Byb3RvY29sLkVycm9yfSBlcnJvcgot
ICAgICAgICAgKiBAcGFyYW0ge1J1bnRpbWVBZ2VudC5SZW1vdGVPYmplY3R9IHJlc3VsdAotICAg
ICAgICAgKiBAcGFyYW0ge2Jvb2xlYW49fSB3YXNUaHJvd24KLSAgICAgICAgICovCi0gICAgICAg
IGZ1bmN0aW9uIGRpZEV2YWx1YXRlT25DYWxsRnJhbWUoZXJyb3IsIHJlc3VsdCwgd2FzVGhyb3du
KQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgICAgICAgICBj
b25zb2xlLmVycm9yKGVycm9yKTsKLSAgICAgICAgICAgICAgICBjYWxsYmFjayhudWxsLCBmYWxz
ZSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
Y2FsbGJhY2socmVzdWx0LCB3YXNUaHJvd24pOwotICAgICAgICB9Ci0gICAgICAgIERlYnVnZ2Vy
QWdlbnQuZXZhbHVhdGVPbkNhbGxGcmFtZSh0aGlzLl9jYWxsRnJhbWUuY2FsbEZyYW1lSWQsIGNv
ZGUsIG9iamVjdEdyb3VwLCBpbmNsdWRlQ29tbWFuZExpbmVBUEksIGRvTm90UGF1c2VPbkV4Y2Vw
dGlvbnNBbmRNdXRlQ29uc29sZSwgcmV0dXJuQnlWYWx1ZSwgZGlkRXZhbHVhdGVPbkNhbGxGcmFt
ZS5iaW5kKHRoaXMpKTsKLSAgICB9LAotCi0gICAgLyoqCi0gICAgICogQHBhcmFtIHtmdW5jdGlv
bihXZWJJbnNwZWN0b3IuVUlMb2NhdGlvbil9IGNhbGxiYWNrCi0gICAgICovCi0gICAgdWlMb2Nh
dGlvbjogZnVuY3Rpb24oY2FsbGJhY2spCi0gICAgewotICAgICAgICBmdW5jdGlvbiBsb2NhdGlv
blVwZGF0ZWQodWlMb2NhdGlvbikKLSAgICAgICAgewotICAgICAgICAgICAgY2FsbGJhY2sodWlM
b2NhdGlvbik7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICB0
aGlzLl9tb2RlbC5jcmVhdGVMaXZlTG9jYXRpb24odGhpcy5fY2FsbEZyYW1lLmxvY2F0aW9uLCBs
b2NhdGlvblVwZGF0ZWQuYmluZCh0aGlzKSk7Ci0gICAgfQotfQotCi0vKioKLSAqIEBjb25zdHJ1
Y3RvcgotICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5QbGFjYXJkfQotICogQHBhcmFtIHtXZWJJ
bnNwZWN0b3IuUHJlc2VudGF0aW9uQ2FsbEZyYW1lfSBjYWxsRnJhbWUKLSAqIEBwYXJhbSB7V2Vi
SW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWx9IG1vZGVsCi0gKi8KLVdlYkluc3Bl
Y3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLkNhbGxGcmFtZVBsYWNhcmQgPSBmdW5jdGlv
bihjYWxsRnJhbWUsIG1vZGVsKQotewotICAgIFdlYkluc3BlY3Rvci5QbGFjYXJkLmNhbGwodGhp
cywgY2FsbEZyYW1lLl9jYWxsRnJhbWUuZnVuY3Rpb25OYW1lIHx8IFdlYkluc3BlY3Rvci5VSVN0
cmluZygiKGFub255bW91cyBmdW5jdGlvbikiKSwgIiIpOwotICAgIHRoaXMuX2xpdmVMb2NhdGlv
biA9IG1vZGVsLmNyZWF0ZUxpdmVMb2NhdGlvbihjYWxsRnJhbWUuX2NhbGxGcmFtZS5sb2NhdGlv
biwgdGhpcy5fdXBkYXRlLmJpbmQodGhpcykpOwotfQotCi1XZWJJbnNwZWN0b3IuRGVidWdnZXJQ
cmVzZW50YXRpb25Nb2RlbC5DYWxsRnJhbWVQbGFjYXJkLnByb3RvdHlwZSA9IHsKLSAgICBkaXNj
YXJkOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB0aGlzLl9saXZlTG9jYXRpb24uZGlzcG9z
ZSgpOwotICAgIH0sCi0KLSAgICBfdXBkYXRlOiBmdW5jdGlvbih1aUxvY2F0aW9uKQotICAgIHsK
LSAgICAgICAgdGhpcy5zdWJ0aXRsZSA9IFdlYkluc3BlY3Rvci5kaXNwbGF5TmFtZUZvclVSTCh1
aUxvY2F0aW9uLnVpU291cmNlQ29kZS51cmwpICsgIjoiICsgKHVpTG9jYXRpb24ubGluZU51bWJl
ciArIDEpOwotICAgIH0KLX0KLQotV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9k
ZWwuQ2FsbEZyYW1lUGxhY2FyZC5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLlBs
YWNhcmQucHJvdG90eXBlOwotCi0vKioKLSAqIEBjb25zdHJ1Y3RvcgogICogQGltcGxlbWVudHMg
e1dlYkluc3BlY3Rvci5SZXNvdXJjZURvbWFpbk1vZGVsQmluZGluZ30KICAqIEBwYXJhbSB7V2Vi
SW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWx9IG1vZGVsCiAgKi8KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSmF2YVNjcmlwdFNvdXJjZS5q
cyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSmF2YVNjcmlwdFNvdXJjZS5q
cwppbmRleCAzOWIxZDQ4ZTc5ZTAwMjE3ZmRkNGUwOGJlNjNmZWQxYWQ3OWNmYjdiLi42OWYzMjIy
MDY0YTBlOWQ2NjljNTUyNWFmMzIzZWU3NzkzYTBmNzU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0phdmFTY3JpcHRTb3VyY2UuanMKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9KYXZhU2NyaXB0U291cmNlLmpzCkBAIC0xMjQs
NyArMTI0LDcgQEAgV2ViSW5zcGVjdG9yLkphdmFTY3JpcHRTb3VyY2UucHJvdG90eXBlID0gewog
ICAgIHNldEJyZWFrcG9pbnQ6IGZ1bmN0aW9uKGxpbmVOdW1iZXIsIGNvbmRpdGlvbiwgZW5hYmxl
ZCkKICAgICB7CiAgICAgICAgIHRoaXMuX2JyZWFrcG9pbnRNYW5hZ2VyLnNldEJyZWFrcG9pbnQo
dGhpcywgbGluZU51bWJlciwgY29uZGl0aW9uLCBlbmFibGVkKTsKLSAgICAgICAgdGhpcy5fbW9k
ZWwuc2V0QnJlYWtwb2ludHNBY3RpdmUodHJ1ZSk7CisgICAgICAgIFdlYkluc3BlY3Rvci5kZWJ1
Z2dlck1vZGVsLnNldEJyZWFrcG9pbnRzQWN0aXZlKHRydWUpOwogICAgIH0sCiAKICAgICAvKioK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSmF2YVNjcmlw
dFNvdXJjZUZyYW1lLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9KYXZh
U2NyaXB0U291cmNlRnJhbWUuanMKaW5kZXggYmUyMGE4MTJhMGNiOGIyZmRmYjljZjA1NmU3ODli
OTU0NDk4YmY2Yi4uMGE4NjU5MTdiMjdlYzQ0MGI4YjlhYjk5MmQ3OTY5YjlhZjliZTI2YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9KYXZhU2NyaXB0U291
cmNlRnJhbWUuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9KYXZh
U2NyaXB0U291cmNlRnJhbWUuanMKQEAgLTI3OSw3ICsyNzksNyBAQCBXZWJJbnNwZWN0b3IuSmF2
YVNjcmlwdFNvdXJjZUZyYW1lLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICB0aGlzLl9o
aWdobGlnaHRFbGVtZW50LmFkZFN0eWxlQ2xhc3MoInNvdXJjZS1mcmFtZS1ldmFsLWV4cHJlc3Np
b24iKTsKICAgICAgICAgfQogCi0gICAgICAgIHZhciBzZWxlY3RlZENhbGxGcmFtZSA9IHRoaXMu
X21vZGVsLnNlbGVjdGVkQ2FsbEZyYW1lOworICAgICAgICB2YXIgc2VsZWN0ZWRDYWxsRnJhbWUg
PSBXZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbC5zZWxlY3RlZENhbGxGcmFtZSgpOwogICAgICAg
ICBzZWxlY3RlZENhbGxGcmFtZS5ldmFsdWF0ZSh0aGlzLl9oaWdobGlnaHRFbGVtZW50LnRleHRD
b250ZW50LCBvYmplY3RHcm91cE5hbWUsIGZhbHNlLCB0cnVlLCBmYWxzZSwgc2hvd09iamVjdFBv
cG92ZXIuYmluZCh0aGlzKSk7CiAgICAgfSwKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHQuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1NjcmlwdC5qcwppbmRleCA0YzlmMjdhYmIwMmI2M2I2MDBmMzA4MDI0ZTU0ZmNi
NGNiNTZiYTJlLi45NWFiZmVmYTkzYjc0N2QyZDA4ODUxYWI4OWY3OTZmYWRlNjFlOGFlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdC5qcworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdC5qcwpAQCAtMTQ4LDcg
KzE0OCw3IEBAIFdlYkluc3BlY3Rvci5TY3JpcHQucHJvdG90eXBlID0gewogICAgIHsKICAgICAg
ICAgdGhpcy5fc291cmNlTWFwcGluZyA9IHNvdXJjZU1hcHBpbmc7CiAgICAgICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgdGhpcy5fbG9jYXRpb25zLmxlbmd0aDsgKytpKQotICAgICAgICAgICAgdGhp
cy5fbG9jYXRpb25zW2ldLl91cGRhdGUoKTsKKyAgICAgICAgICAgIHRoaXMuX2xvY2F0aW9uc1tp
XS51cGRhdGUoKTsKICAgICB9LAogCiAgICAgLyoqCkBAIC0xNTYsMTcgKzE1NiwxOSBAQCBXZWJJ
bnNwZWN0b3IuU2NyaXB0LnByb3RvdHlwZSA9IHsKICAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKFdl
Ykluc3BlY3Rvci5VSUxvY2F0aW9uKTooYm9vbGVhbnx1bmRlZmluZWQpfSB1cGRhdGVEZWxlZ2F0
ZQogICAgICAqIEByZXR1cm4ge1dlYkluc3BlY3Rvci5TY3JpcHQuTG9jYXRpb259CiAgICAgICov
Ci0gICAgY3JlYXRlTG9jYXRpb246IGZ1bmN0aW9uKHJhd0xvY2F0aW9uLCB1cGRhdGVEZWxlZ2F0
ZSkKKyAgICBjcmVhdGVMaXZlTG9jYXRpb246IGZ1bmN0aW9uKHJhd0xvY2F0aW9uLCB1cGRhdGVE
ZWxlZ2F0ZSkKICAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHJhd0xvY2F0aW9uLnNjcmlw
dElkID09PSB0aGlzLnNjcmlwdElkKTsKICAgICAgICAgdmFyIGxvY2F0aW9uID0gbmV3IFdlYklu
c3BlY3Rvci5TY3JpcHQuTG9jYXRpb24odGhpcywgcmF3TG9jYXRpb24sIHVwZGF0ZURlbGVnYXRl
KTsKICAgICAgICAgdGhpcy5fbG9jYXRpb25zLnB1c2gobG9jYXRpb24pOwotICAgICAgICBsb2Nh
dGlvbi5fdXBkYXRlKCk7CisgICAgICAgIGxvY2F0aW9uLnVwZGF0ZSgpOwogICAgICAgICByZXR1
cm4gbG9jYXRpb247CiAgICAgfQogfQogCiAvKioKICAqIEBjb25zdHJ1Y3RvcgorICogQGltcGxl
bWVudHMge1dlYkluc3BlY3Rvci5MaXZlTG9jYXRpb259CiAgKiBAcGFyYW0ge1dlYkluc3BlY3Rv
ci5TY3JpcHR9IHNjcmlwdAogICogQHBhcmFtIHtEZWJ1Z2dlckFnZW50LkxvY2F0aW9ufSByYXdM
b2NhdGlvbgogICogQHBhcmFtIHtmdW5jdGlvbihXZWJJbnNwZWN0b3IuVUlMb2NhdGlvbik6KGJv
b2xlYW58dW5kZWZpbmVkKX0gdXBkYXRlRGVsZWdhdGUKQEAgLTE4NCw3ICsxODYsNyBAQCBXZWJJ
bnNwZWN0b3IuU2NyaXB0LkxvY2F0aW9uLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fc2Ny
aXB0Ll9sb2NhdGlvbnMucmVtb3ZlKHRoaXMpOwogICAgIH0sCiAKLSAgICBfdXBkYXRlOiBmdW5j
dGlvbigpCisgICAgdXBkYXRlOiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMu
X3NjcmlwdC5fc291cmNlTWFwcGluZykKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0TWFwcGluZy5qcyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0TWFwcGluZy5qcwppbmRleCA1
OTc0MmU5ODE2Nzk5MjI5NzkyNDIxYzRhOTg1NmRmMTQzYjQ0NzJjLi44MmY1ZjA2OWE3MDRlNmVk
M2Y2ZmEwZWM5NTI0YWUzZGJhYTg3ZmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL1NjcmlwdE1hcHBpbmcuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9TY3JpcHRNYXBwaW5nLmpzCkBAIC00NCw2ICs0NCwxOSBAQCBXZWJJ
bnNwZWN0b3IuVUlMb2NhdGlvbiA9IGZ1bmN0aW9uKHVpU291cmNlQ29kZSwgbGluZU51bWJlciwg
Y29sdW1uTnVtYmVyKQogLyoqCiAgKiBAaW50ZXJmYWNlCiAgKi8KK1dlYkluc3BlY3Rvci5MaXZl
TG9jYXRpb24gPSBmdW5jdGlvbigpCit7Cit9CisKK1dlYkluc3BlY3Rvci5MaXZlTG9jYXRpb24u
cHJvdG90eXBlID0geworICAgIHVwZGF0ZTogZnVuY3Rpb24ocmF3TG9jYXRpb24pIHsgfSwKKwor
ICAgIGRpc3Bvc2U6IGZ1bmN0aW9uKCkgeyB9Cit9CisKKy8qKgorICogQGludGVyZmFjZQorICov
CiBXZWJJbnNwZWN0b3IuU291cmNlTWFwcGluZyA9IGZ1bmN0aW9uKCkKIHsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanMKaW5kZXgg
ZDdiODY0MDcwZTFkNjdiNDFhMThkODJlNDc0MGY0ODgyOTMzMTNkOS4uOWE1YjQ4YWUxMDk5Nzk2
ZDI2M2UyN2I0YmMxNTdkNTQ4ZjkxYmQ0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanMKQEAgLTg4LDcgKzg4LDcgQEAgV2ViSW5z
cGVjdG9yLlNjcmlwdHNQYW5lbCA9IGZ1bmN0aW9uKHByZXNlbnRhdGlvbk1vZGVsKQogCiAgICAg
dGhpcy5zaWRlYmFyUGFuZXMgPSB7fTsKICAgICB0aGlzLnNpZGViYXJQYW5lcy53YXRjaEV4cHJl
c3Npb25zID0gbmV3IFdlYkluc3BlY3Rvci5XYXRjaEV4cHJlc3Npb25zU2lkZWJhclBhbmUoKTsK
LSAgICB0aGlzLnNpZGViYXJQYW5lcy5jYWxsc3RhY2sgPSBuZXcgV2ViSW5zcGVjdG9yLkNhbGxT
dGFja1NpZGViYXJQYW5lKHRoaXMuX3ByZXNlbnRhdGlvbk1vZGVsKTsKKyAgICB0aGlzLnNpZGVi
YXJQYW5lcy5jYWxsc3RhY2sgPSBuZXcgV2ViSW5zcGVjdG9yLkNhbGxTdGFja1NpZGViYXJQYW5l
KCk7CiAgICAgdGhpcy5zaWRlYmFyUGFuZXMuc2NvcGVjaGFpbiA9IG5ldyBXZWJJbnNwZWN0b3Iu
U2NvcGVDaGFpblNpZGViYXJQYW5lKCk7CiAgICAgdGhpcy5zaWRlYmFyUGFuZXMuanNCcmVha3Bv
aW50cyA9IG5ldyBXZWJJbnNwZWN0b3IuSmF2YVNjcmlwdEJyZWFrcG9pbnRzU2lkZWJhclBhbmUo
dGhpcy5fcHJlc2VudGF0aW9uTW9kZWwsIHRoaXMuX3Nob3dTb3VyY2VMaW5lLmJpbmQodGhpcykp
OwogICAgIGlmIChDYXBhYmlsaXRpZXMubmF0aXZlSW5zdHJ1bWVudGF0aW9uRW5hYmxlZCkgewpA
QCAtMTU2LDE3ICsxNTYsMTcgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbCA9IGZ1bmN0aW9u
KHByZXNlbnRhdGlvbk1vZGVsKQogCiAgICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwuYWRk
RXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5FdmVudHMuRGVidWdnZXJX
YXNFbmFibGVkLCB0aGlzLl9kZWJ1Z2dlcldhc0VuYWJsZWQsIHRoaXMpOwogICAgIFdlYkluc3Bl
Y3Rvci5kZWJ1Z2dlck1vZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRlYnVnZ2Vy
TW9kZWwuRXZlbnRzLkRlYnVnZ2VyV2FzRGlzYWJsZWQsIHRoaXMuX2RlYnVnZ2VyV2FzRGlzYWJs
ZWQsIHRoaXMpOworICAgIFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLmFkZEV2ZW50TGlzdGVu
ZXIoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwuRXZlbnRzLkRlYnVnZ2VyUGF1c2VkLCB0aGlz
Ll9kZWJ1Z2dlclBhdXNlZCwgdGhpcyk7CisgICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwu
YWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5FdmVudHMuRGVidWdn
ZXJSZXN1bWVkLCB0aGlzLl9kZWJ1Z2dlclJlc3VtZWQsIHRoaXMpOworICAgIFdlYkluc3BlY3Rv
ci5kZWJ1Z2dlck1vZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9k
ZWwuRXZlbnRzLkNhbGxGcmFtZVNlbGVjdGVkLCB0aGlzLl9jYWxsRnJhbWVTZWxlY3RlZCwgdGhp
cyk7CisgICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwuYWRkRXZlbnRMaXN0ZW5lcihXZWJJ
bnNwZWN0b3IuRGVidWdnZXJNb2RlbC5FdmVudHMuQ29uc29sZUNvbW1hbmRFdmFsdWF0ZWRJblNl
bGVjdGVkQ2FsbEZyYW1lLCB0aGlzLl9jb25zb2xlQ29tbWFuZEV2YWx1YXRlZEluU2VsZWN0ZWRD
YWxsRnJhbWUsIHRoaXMpOworICAgIFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLmFkZEV2ZW50
TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwuRXZlbnRzLkV4ZWN1dGlvbkxpbmVD
aGFuZ2VkLCB0aGlzLl9leGVjdXRpb25MaW5lQ2hhbmdlZCwgdGhpcyk7CisgICAgV2ViSW5zcGVj
dG9yLmRlYnVnZ2VyTW9kZWwuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRGVidWdnZXJN
b2RlbC5FdmVudHMuR2xvYmFsT2JqZWN0Q2xlYXJlZCwgdGhpcy5fcmVzZXQuYmluZCh0aGlzLCBm
YWxzZSkpOworICAgIFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLmFkZEV2ZW50TGlzdGVuZXIo
V2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwuRXZlbnRzLkJyZWFrcG9pbnRzQWN0aXZlU3RhdGVD
aGFuZ2VkLCB0aGlzLl9icmVha3BvaW50c0FjdGl2ZVN0YXRlQ2hhbmdlZCwgdGhpcyk7CiAKICAg
ICB0aGlzLl9wcmVzZW50YXRpb25Nb2RlbC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5E
ZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLkV2ZW50cy5VSVNvdXJjZUNvZGVBZGRlZCwgdGhpcy5f
aGFuZGxlVUlTb3VyY2VDb2RlQWRkZWQsIHRoaXMpCiAgICAgdGhpcy5fcHJlc2VudGF0aW9uTW9k
ZWwuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2Rl
bC5FdmVudHMuVUlTb3VyY2VDb2RlUmVwbGFjZWQsIHRoaXMuX3VpU291cmNlQ29kZVJlcGxhY2Vk
LCB0aGlzKTsKICAgICB0aGlzLl9wcmVzZW50YXRpb25Nb2RlbC5hZGRFdmVudExpc3RlbmVyKFdl
Ykluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLkV2ZW50cy5VSVNvdXJjZUNvZGVS
ZW1vdmVkLCB0aGlzLl91aVNvdXJjZUNvZGVSZW1vdmVkLCB0aGlzKTsKLSAgICB0aGlzLl9wcmVz
ZW50YXRpb25Nb2RlbC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNl
bnRhdGlvbk1vZGVsLkV2ZW50cy5EZWJ1Z2dlclBhdXNlZCwgdGhpcy5fZGVidWdnZXJQYXVzZWQs
IHRoaXMpOwotICAgIHRoaXMuX3ByZXNlbnRhdGlvbk1vZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2Vi
SW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuRXZlbnRzLkRlYnVnZ2VyUmVzdW1l
ZCwgdGhpcy5fZGVidWdnZXJSZXN1bWVkLCB0aGlzKTsKLSAgICB0aGlzLl9wcmVzZW50YXRpb25N
b2RlbC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1v
ZGVsLkV2ZW50cy5DYWxsRnJhbWVTZWxlY3RlZCwgdGhpcy5fY2FsbEZyYW1lU2VsZWN0ZWQsIHRo
aXMpOwotICAgIHRoaXMuX3ByZXNlbnRhdGlvbk1vZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5z
cGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuRXZlbnRzLkNvbnNvbGVDb21tYW5kRXZh
bHVhdGVkSW5TZWxlY3RlZENhbGxGcmFtZSwgdGhpcy5fY29uc29sZUNvbW1hbmRFdmFsdWF0ZWRJ
blNlbGVjdGVkQ2FsbEZyYW1lLCB0aGlzKTsKLSAgICB0aGlzLl9wcmVzZW50YXRpb25Nb2RlbC5h
ZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLkV2
ZW50cy5FeGVjdXRpb25MaW5lQ2hhbmdlZCwgdGhpcy5fZXhlY3V0aW9uTGluZUNoYW5nZWQsIHRo
aXMpOwotICAgIHRoaXMuX3ByZXNlbnRhdGlvbk1vZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5z
cGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuRXZlbnRzLkRlYnVnZ2VyUmVzZXQsIHRo
aXMuX3Jlc2V0LmJpbmQodGhpcywgZmFsc2UpKTsKLSAgICB0aGlzLl9wcmVzZW50YXRpb25Nb2Rl
bC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVs
LkV2ZW50cy5CcmVha3BvaW50c0FjdGl2ZVN0YXRlQ2hhbmdlZCwgdGhpcy5fYnJlYWtwb2ludHNB
Y3RpdmVTdGF0ZUNoYW5nZWQsIHRoaXMpOwogCiAgICAgdmFyIGVuYWJsZURlYnVnZ2VyID0gIUNh
cGFiaWxpdGllcy5kZWJ1Z2dlckNhdXNlc1JlY29tcGlsYXRpb24gfHwgV2ViSW5zcGVjdG9yLnNl
dHRpbmdzLmRlYnVnZ2VyRW5hYmxlZC5nZXQoKTsKICAgICBpZiAoZW5hYmxlRGVidWdnZXIpCkBA
IC0zMTYsMTMgKzMxNiwxMiBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZSA9
IHsKIAogICAgIF9jb25zb2xlQ29tbWFuZEV2YWx1YXRlZEluU2VsZWN0ZWRDYWxsRnJhbWU6IGZ1
bmN0aW9uKGV2ZW50KQogICAgIHsKLSAgICAgICAgdGhpcy5zaWRlYmFyUGFuZXMuc2NvcGVjaGFp
bi51cGRhdGUodGhpcy5fcHJlc2VudGF0aW9uTW9kZWwuc2VsZWN0ZWRDYWxsRnJhbWUpOworICAg
ICAgICB0aGlzLnNpZGViYXJQYW5lcy5zY29wZWNoYWluLnVwZGF0ZShXZWJJbnNwZWN0b3IuZGVi
dWdnZXJNb2RlbC5zZWxlY3RlZENhbGxGcmFtZSgpKTsKICAgICB9LAogCiAgICAgX2RlYnVnZ2Vy
UGF1c2VkOiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIHZhciBjYWxsRnJhbWVzID0g
ZXZlbnQuZGF0YS5jYWxsRnJhbWVzOwotICAgICAgICB2YXIgZGV0YWlscyA9IGV2ZW50LmRhdGEu
ZGV0YWlsczsKKyAgICAgICAgdmFyIGRldGFpbHMgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5E
ZWJ1Z2dlclBhdXNlZERldGFpbHN9ICovIGV2ZW50LmRhdGE7CiAKICAgICAgICAgdGhpcy5fcGF1
c2VkID0gdHJ1ZTsKICAgICAgICAgdGhpcy5fd2FpdGluZ1RvUGF1c2UgPSBmYWxzZTsKQEAgLTMz
MSw3ICszMzAsNyBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgdGhpcy5fdXBkYXRlRGVidWdnZXJCdXR0b25zKCk7CiAKICAgICAgICAgV2ViSW5zcGVj
dG9yLmluc3BlY3RvclZpZXcuc2V0Q3VycmVudFBhbmVsKHRoaXMpOwotICAgICAgICB0aGlzLnNp
ZGViYXJQYW5lcy5jYWxsc3RhY2sudXBkYXRlKGNhbGxGcmFtZXMpOworICAgICAgICB0aGlzLnNp
ZGViYXJQYW5lcy5jYWxsc3RhY2sudXBkYXRlKGRldGFpbHMuY2FsbEZyYW1lcyk7CiAKICAgICAg
ICAgaWYgKGRldGFpbHMucmVhc29uID09PSBXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5CcmVh
a1JlYXNvbi5ET00pIHsKICAgICAgICAgICAgIHRoaXMuc2lkZWJhclBhbmVzLmRvbUJyZWFrcG9p
bnRzLmhpZ2hsaWdodEJyZWFrcG9pbnQoZGV0YWlscy5hdXhEYXRhKTsKQEAgLTM1OCw3ICszNTcs
NyBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAg
ICAgICB0aGlzLnNpZGViYXJQYW5lcy5qc0JyZWFrcG9pbnRzLmhpZ2hsaWdodEJyZWFrcG9pbnQo
dWlMb2NhdGlvbi51aVNvdXJjZUNvZGUsIHVpTG9jYXRpb24ubGluZU51bWJlcik7CiAgICAgICAg
ICAgICAgICAgdGhpcy5zaWRlYmFyUGFuZXMuY2FsbHN0YWNrLnNldFN0YXR1cyhXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIlBhdXNlZCBvbiBhIEphdmFTY3JpcHQgYnJlYWtwb2ludC4iKSk7CiAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICBjYWxsRnJhbWVzWzBdLnVpTG9jYXRpb24oZGlkR2V0VUlM
b2NhdGlvbi5iaW5kKHRoaXMpKTsKKyAgICAgICAgICAgIGRldGFpbHMuY2FsbEZyYW1lc1swXS5j
cmVhdGVMaXZlTG9jYXRpb24oZGlkR2V0VUlMb2NhdGlvbi5iaW5kKHRoaXMpKTsKICAgICAgICAg
fQogCiAgICAgICAgIHdpbmRvdy5mb2N1cygpOwpAQCAtNjEwLDggKzYwOSw4IEBAIFdlYkluc3Bl
Y3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlID0gewogCiAgICAgICAgIHRoaXMuc2lkZWJhclBh
bmVzLnNjb3BlY2hhaW4udXBkYXRlKGNhbGxGcmFtZSk7CiAgICAgICAgIHRoaXMuc2lkZWJhclBh
bmVzLndhdGNoRXhwcmVzc2lvbnMucmVmcmVzaEV4cHJlc3Npb25zKCk7Ci0gICAgICAgIHRoaXMu
c2lkZWJhclBhbmVzLmNhbGxzdGFjay5zZWxlY3RlZENhbGxGcmFtZSA9IGNhbGxGcmFtZTsKLSAg
ICAgICAgY2FsbEZyYW1lLnVpTG9jYXRpb24odGhpcy5fcmV2ZWFsRXhlY3V0aW9uTGluZS5iaW5k
KHRoaXMpKTsKKyAgICAgICAgdGhpcy5zaWRlYmFyUGFuZXMuY2FsbHN0YWNrLnNldFNlbGVjdGVk
Q2FsbEZyYW1lKGNhbGxGcmFtZSk7CisgICAgICAgIGNhbGxGcmFtZS5jcmVhdGVMaXZlTG9jYXRp
b24odGhpcy5fcmV2ZWFsRXhlY3V0aW9uTGluZS5iaW5kKHRoaXMpKTsKICAgICB9LAogCiAgICAg
X2VkaXRvckNsb3NlZDogZnVuY3Rpb24oZXZlbnQpCkBAIC04MTcsNyArODE2LDcgQEAgV2ViSW5z
cGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUgPSB7CiAKICAgICBfdG9nZ2xlQnJlYWtwb2lu
dHNDbGlja2VkOiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIHRoaXMuX3ByZXNlbnRh
dGlvbk1vZGVsLnNldEJyZWFrcG9pbnRzQWN0aXZlKCF0aGlzLl9wcmVzZW50YXRpb25Nb2RlbC5i
cmVha3BvaW50c0FjdGl2ZSgpKTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwu
c2V0QnJlYWtwb2ludHNBY3RpdmUoIVdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLmJyZWFrcG9p
bnRzQWN0aXZlKCkpOwogICAgIH0sCiAKICAgICBfYnJlYWtwb2ludHNBY3RpdmVTdGF0ZUNoYW5n
ZWQ6IGZ1bmN0aW9uKGV2ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9VSVNvdXJjZUNvZGUuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL1VJU291cmNlQ29kZS5qcwppbmRleCBlYTc0YzY4OGRjNzk4MzRlMjYyMjI2NWY3ZjBm
NzJjM2QxZGQwNzcxLi4wNzFjNTI4YzI2NWExZmIwMzQ2ZDgxNDU5Yzk5MWE3ODQ0YmVlMWYyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1VJU291cmNlQ29k
ZS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1VJU291cmNlQ29k
ZS5qcwpAQCAtMjgsNiArMjgsNyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCisKIC8qKgogICog
QGNvbnN0cnVjdG9yCiAgKiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLk9iamVjdH0KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA4
ODgwMTUxZTU5YjFmMWQ1MjJjNTUyYWU3N2MxNGRjNDBmZDk5NGNjLi5iZTNmZjEwMzJjOWU3YTJh
YTc2MWVjYWIzYjdjNjIwNTkxZTEyZTMxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTItMDQt
MjUgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2Vi
IEluc3BlY3RvcjogbW92ZSBzb3VyY2VtYXAtYWdub3N0aWMgcGFydCBvZiB0aGUgZGVidWdnZXIg
cHJlc2VudGF0aW9uIG1vZGVsIGludG8gdGhlIHJhdyBkZWJ1Z2dlci4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg0ODUyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9k
ZWJ1Z2dlci10ZXN0LmpzOgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci9jYWxsc3RhY2st
cGxhY2FyZHMtZGlzY2FyZGVkLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL2Rl
YnVnZ2VyLWJyZWFrcG9pbnRzLW5vdC1hY3RpdmF0ZWQtb24tcmVsb2FkLmh0bWw6CisgICAgICAg
ICogaW5zcGVjdG9yL2RlYnVnZ2VyL2xpdmUtZWRpdC1leHBlY3RlZC50eHQ6CisgICAgICAgICog
aW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdHMtcGFuZWwuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvZGVidWdnZXIvc2VsZWN0ZWQtY2FsbC1mcmFtZS1hZnRlci1mb3JtYXR0aW5nLXNvdXJjZS5o
dG1sOgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci9zZXQtYnJlYWtwb2ludC5odG1sOgor
CiAyMDEyLTA0LTI1ICBZdXJ5IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFdlYiBJbnNwZWN0b3I6IHVzZSBjb21wb3NpdGUgbm9kZSBwcm92aWRlciBmb3IgZGlm
ZiBub2RlcyBpbiBoZWFwIHByb2ZpbGVyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2luc3BlY3Rvci9kZWJ1Z2dlci10ZXN0LmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9p
bnNwZWN0b3IvZGVidWdnZXItdGVzdC5qcwppbmRleCBlM2RlOTBjMjljNmQzZjU4NDZlMzcyNDVm
MzVjNjlmNzIwZmEzOThhLi5kZGU2NjkxZWJlN2E2ZDNkNWMyOGFlZTJmZjU3ZDMxYmE1MjRiYzcx
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci10
ZXN0LmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXRl
c3QuanMKQEAgLTI2LDcgKzI2LDcgQEAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZURlYnVnZ2VyVGVz
dCA9IGZ1bmN0aW9uKCkKIHsKICAgICB2YXIgc2NyaXB0c1BhbmVsID0gV2ViSW5zcGVjdG9yLnBh
bmVscy5zY3JpcHRzOwogCi0gICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyUHJlc2VudGF0aW9uTW9k
ZWwuc2V0QnJlYWtwb2ludHNBY3RpdmUodHJ1ZSk7CisgICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2Vy
TW9kZWwuc2V0QnJlYWtwb2ludHNBY3RpdmUodHJ1ZSk7CiAgICAgSW5zcGVjdG9yVGVzdC5yZXN1
bWVFeGVjdXRpb24oZGlzYWJsZURlYnVnZ2VyKTsKIAogICAgIGZ1bmN0aW9uIGRpc2FibGVEZWJ1
Z2dlcigpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvY2FsbHN0
YWNrLXBsYWNhcmRzLWRpc2NhcmRlZC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVn
Z2VyL2NhbGxzdGFjay1wbGFjYXJkcy1kaXNjYXJkZWQuaHRtbAppbmRleCA0NjNkMTRmYWI5YjA4
N2U5MGYzOTNkMDM4MWQ2YjQxMzBmNWQ3MWNmLi4zNGY0NWE1MWYxODRmZmM2YjIzYWE4ZDFhMzYx
MDhjOTA5NmRiODA2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIv
Y2FsbHN0YWNrLXBsYWNhcmRzLWRpc2NhcmRlZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9kZWJ1Z2dlci9jYWxsc3RhY2stcGxhY2FyZHMtZGlzY2FyZGVkLmh0bWwKQEAgLTE0LDEz
ICsxNCwxMyBAQCB2YXIgdGVzdCA9IGZ1bmN0aW9uKCkKICAgICBJbnNwZWN0b3JUZXN0LnJ1bkRl
YnVnZ2VyVGVzdFN1aXRlKFsKICAgICAgICAgZnVuY3Rpb24gdGVzdENhbGxTdGFja1BsYWNhcmRz
RGlzY2FyZGVkKG5leHQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIFdlYkluc3BlY3Rvci5kZWJ1
Z2dlclByZXNlbnRhdGlvbk1vZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRlYnVn
Z2VyUHJlc2VudGF0aW9uTW9kZWwuRXZlbnRzLkRlYnVnZ2VyUGF1c2VkLCBkaWRQYXVzZSwgdGhp
cyk7CisgICAgICAgICAgICBXZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbC5hZGRFdmVudExpc3Rl
bmVyKFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLkV2ZW50cy5EZWJ1Z2dlclBhdXNlZCwgZGlk
UGF1c2UsIHRoaXMpOwogICAgICAgICAgICAgdmFyIHByZXZpb3VzQ291bnQgPSB1bmRlZmluZWQ7
CiAgICAgICAgICAgICBmdW5jdGlvbiBkaWRQYXVzZShldmVudCkKICAgICAgICAgICAgIHsKICAg
ICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiUmVjZWl2ZWQgRGVidWdnZXJQ
YXVzZWQgZXZlbnQuIik7CiAgICAgICAgICAgICAgICAgdmFyIGNhbGxGcmFtZSA9IGV2ZW50LmRh
dGEuY2FsbEZyYW1lc1swXTsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3Vs
dCgiRnVuY3Rpb24gbmFtZTogIiArIGNhbGxGcmFtZS5fY2FsbEZyYW1lLmZ1bmN0aW9uTmFtZSk7
CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIkZ1bmN0aW9uIG5hbWU6
ICIgKyBjYWxsRnJhbWUuZnVuY3Rpb25OYW1lKTsKICAgICAgICAgICAgICAgICB2YXIgY291bnQg
PSBsaXZlTG9jYXRpb25zQ291bnQoKTsKICAgICAgICAgICAgICAgICBpZiAocHJldmlvdXNDb3Vu
dCAhPT0gdW5kZWZpbmVkICYmIGNvdW50ICE9PSBwcmV2aW91c0NvdW50KQogICAgICAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiRkFJTEVEOiBMaXZlIGxvY2F0aW9ucyBj
b3VudCBoYXMgY2hhbmdlZCEiKTsKQEAgLTU0LDEwICs1NCwxMCBAQCB2YXIgdGVzdCA9IGZ1bmN0
aW9uKCkKIAogICAgIGZ1bmN0aW9uIGxpdmVMb2NhdGlvbnNDb3VudCgpCiAgICAgewotICAgICAg
ICB2YXIgbG9jYXRpb25zID0gV2ViSW5zcGVjdG9yLmRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwu
X3NjcmlwdE1hcHBpbmcuX2xpdmVMb2NhdGlvbnNGb3JTY3JpcHRJZDsKICAgICAgICAgdmFyIGNv
dW50ID0gMDsKLSAgICAgICAgZm9yIChpZCBpbiBsb2NhdGlvbnMpCi0gICAgICAgICAgICBjb3Vu
dCArPSBsb2NhdGlvbnNbaWRdLmxlbmd0aDsKKyAgICAgICAgdmFyIHNjcmlwdHMgPSBXZWJJbnNw
ZWN0b3IuZGVidWdnZXJNb2RlbC5zY3JpcHRzOworICAgICAgICBmb3IgKHZhciBpZCBpbiBzY3Jp
cHRzKQorICAgICAgICAgICAgY291bnQgKz0gc2NyaXB0c1tpZF0uX2xvY2F0aW9ucy5sZW5ndGg7
CiAgICAgICAgIHJldHVybiBjb3VudDsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZGVidWdnZXIvZGVidWdnZXItYnJlYWtwb2ludHMtbm90LWFjdGl2YXRlZC1v
bi1yZWxvYWQuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9kZWJ1Z2dlci1i
cmVha3BvaW50cy1ub3QtYWN0aXZhdGVkLW9uLXJlbG9hZC5odG1sCmluZGV4IDkzMDY0ZWQxMGY4
NTkzMDhmYTFlZWVhZWQ5ZmU1ZWQ0MzcwMTA2OTQuLjNiNTk0YzFhM2YzODdhYzkwY2YxMWZlMjgx
MDAwNDNiMDg4ZDg2OWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dl
ci9kZWJ1Z2dlci1icmVha3BvaW50cy1ub3QtYWN0aXZhdGVkLW9uLXJlbG9hZC5odG1sCisrKyBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9kZWJ1Z2dlci1icmVha3BvaW50cy1ub3Qt
YWN0aXZhdGVkLW9uLXJlbG9hZC5odG1sCkBAIC0zNyw3ICszNyw3IEBAIHZhciB0ZXN0ID0gZnVu
Y3Rpb24oKQogICAgIGZ1bmN0aW9uIHN0ZXA0KCkKICAgICB7CiAgICAgICAgIEluc3BlY3RvclRl
c3QuYWRkUmVzdWx0KCJNYWluIHJlc291cmNlIHdhcyBzaG93bi4iKTsKLSAgICAgICAgaWYgKCFX
ZWJJbnNwZWN0b3IuZGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5icmVha3BvaW50c0FjdGl2ZSgp
KQorICAgICAgICBpZiAoIVdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLmJyZWFrcG9pbnRzQWN0
aXZlKCkpCiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiQnJlYWtwb2ludHMg
YXJlIGRlYWN0aXZhdGVkLiIpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmFkZFJlc3VsdCgiRXJyb3I6IGJyZWFrcG9pbnRzIGFyZSBhY3RpdmF0ZWQuIik7CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvbGl2ZS1lZGl0LWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9saXZlLWVkaXQtZXhwZWN0ZWQu
dHh0CmluZGV4IGY1NGVkNmU3MTYwY2U4ZTFlMGNiM2I5ZWQ3NWQ2YzUxYWE2ODgzNGIuLmUzMDA1
NWQ1MjQ1NmI1ZWRiNjEyMWFmNDUyYjdhNGZiODI0ZWYwN2UgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9saXZlLWVkaXQtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9saXZlLWVkaXQtZXhwZWN0ZWQudHh0CkBAIC0xMyw2
ICsxMyw3IEBAIGZ1bmN0aW9uIGYoKQogCiBSdW5uaW5nOiB0ZXN0TGl2ZUVkaXRXaGVuUGF1c2Vk
CiBTY3JpcHQgZXhlY3V0aW9uIHBhdXNlZC4KK1NjcmlwdCBleGVjdXRpb24gcGF1c2VkLgogU2Ny
aXB0IGV4ZWN1dGlvbiByZXN1bWVkLgogCiBSdW5uaW5nOiB0ZXN0Tm9DcmFzaFdoZW5Pbmx5T25l
RnVuY3Rpb25PblN0YWNrCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdn
ZXIvc2NyaXB0cy1wYW5lbC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3Nj
cmlwdHMtcGFuZWwuaHRtbAppbmRleCAzZDFhMjMxYjk3Y2YwMjU3NWYyYzBlYmZiZDNjMjI2NTYy
Yjc2ZmU0Li5kNzM4ZjdjMzU4YTg2ZDA3MzI1ZDJiMDlmOTU3ZGEyNThkNDllNzNmIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0cy1wYW5lbC5odG1sCisr
KyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHRzLXBhbmVsLmh0bWwKQEAg
LTI3LDcgKzI3LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIG1vZGVsLl9yZXNldCA9IGZ1
bmN0aW9uKHByZXNlcnZlZEl0ZW1zKQogICAgICAgICB7CiAgICAgICAgICAgICB1aVNvdXJjZUNv
ZGVzID0gcHJlc2VydmVkSXRlbXMgfHwgW107Ci0gICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZl
bnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5FdmVu
dHMuRGVidWdnZXJSZXNldCwgbnVsbCk7CisgICAgICAgICAgICBXZWJJbnNwZWN0b3IuZGVidWdn
ZXJNb2RlbC5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9k
ZWwuRXZlbnRzLkdsb2JhbE9iamVjdENsZWFyZWQpOwogICAgICAgICB9CiAgICAgICAgIG1vZGVs
Ll9yZXBsYWNlVUlTb3VyY2VDb2RlcyA9IGZ1bmN0aW9uKG9sZFVJU291cmNlQ29kZUxpc3QsIG5l
d1VJU291cmNlQ29kZUxpc3QpCiAgICAgICAgIHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9kZWJ1Z2dlci9zZWxlY3RlZC1jYWxsLWZyYW1lLWFmdGVyLWZvcm1hdHRpbmctc291
cmNlLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2VsZWN0ZWQtY2FsbC1m
cmFtZS1hZnRlci1mb3JtYXR0aW5nLXNvdXJjZS5odG1sCmluZGV4IDZlOWRlNDNkZWQ0NDA1NWI2
MWYyYjcyMTNhMmM5YmE2NzAxNDk0N2MuLmU3NTM2MTUyZTQ0ODcxZjQ0YTQ0OWFmZjQ1ZWUxYWEx
MGMyNmY3OWYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zZWxl
Y3RlZC1jYWxsLWZyYW1lLWFmdGVyLWZvcm1hdHRpbmctc291cmNlLmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NlbGVjdGVkLWNhbGwtZnJhbWUtYWZ0ZXItZm9ybWF0
dGluZy1zb3VyY2UuaHRtbApAQCAtMzUsMTEgKzM1LDExIEBAIHZhciB0ZXN0ID0gZnVuY3Rpb24o
KQogCiAgICAgZnVuY3Rpb24gc3RlcDMoY2FsbEZyYW1lcykKICAgICB7Ci0gICAgICAgIFdlYklu
c3BlY3Rvci5kZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnNlbGVjdGVkQ2FsbEZyYW1lID0gV2Vi
SW5zcGVjdG9yLmRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuX3ByZXNlbnRhdGlvbkNhbGxGcmFt
ZXNbMV07CisgICAgICAgIFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLnNldFNlbGVjdGVkQ2Fs
bEZyYW1lKFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLmRlYnVnZ2VyUGF1c2VkRGV0YWlscygp
LmNhbGxGcmFtZXNbMV0pOwogICAgICAgICBwYW5lbC5fdG9nZ2xlRm9ybWF0U291cmNlKCk7Ci0g
ICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKCJ0ZXN0RnVuY3Rpb24iLCBXZWJJbnNw
ZWN0b3IuZGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5zZWxlY3RlZENhbGxGcmFtZS5fY2FsbEZy
YW1lLmZ1bmN0aW9uTmFtZSk7CisgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKCJ0
ZXN0RnVuY3Rpb24iLCBXZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbC5zZWxlY3RlZENhbGxGcmFt
ZSgpLmZ1bmN0aW9uTmFtZSk7CiAgICAgICAgIHBhbmVsLl90b2dnbGVGb3JtYXRTb3VyY2UoKTsK
LSAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoInRlc3RGdW5jdGlvbiIsIFdlYklu
c3BlY3Rvci5kZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnNlbGVjdGVkQ2FsbEZyYW1lLl9jYWxs
RnJhbWUuZnVuY3Rpb25OYW1lKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMo
InRlc3RGdW5jdGlvbiIsIFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLnNlbGVjdGVkQ2FsbEZy
YW1lKCkuZnVuY3Rpb25OYW1lKTsKICAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZURlYnVn
Z2VyVGVzdCgpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9k
ZWJ1Z2dlci9zZXQtYnJlYWtwb2ludC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVn
Z2VyL3NldC1icmVha3BvaW50Lmh0bWwKaW5kZXggOGEwYjNkY2NhZWI1NmUwODRhNWNhYmM3Nzk3
ZDdmYzJiNWU1YzJlMC4uODJjZWJhZGNiNDA5NWFhMTc4YzAzMDhhMzVhOTdlMTY4MWJiMDkzNSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NldC1icmVha3BvaW50
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NldC1icmVha3BvaW50
Lmh0bWwKQEAgLTMyLDEwICszMiwxMCBAQCB2YXIgdGVzdCA9IGZ1bmN0aW9uKCkKICAgICAgICAg
ICAgICAgICBjdXJyZW50U291cmNlRnJhbWUgPSBzb3VyY2VGcmFtZTsKICAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiU2NyaXB0IHNvdXJjZSB3YXMgc2hvd24uIik7CiAg
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5zZXRCcmVha3BvaW50KGN1cnJlbnRTb3VyY2VG
cmFtZSwgMTYsICIiLCB0cnVlKTsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnJ1blRl
c3RGdW5jdGlvbkFuZFdhaXRVbnRpbFBhdXNlZChkaWRQYXVzZWQpOworICAgICAgICAgICAgICAg
IEluc3BlY3RvclRlc3QucnVuVGVzdEZ1bmN0aW9uQW5kV2FpdFVudGlsUGF1c2VkKGRpZFBhdXNl
KTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgZnVuY3Rpb24gZGlkUGF1c2VkKGNhbGxG
cmFtZXMpCisgICAgICAgICAgICBmdW5jdGlvbiBkaWRQYXVzZShjYWxsRnJhbWVzKQogICAgICAg
ICAgICAgewogICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJTY3JpcHQg
ZXhlY3V0aW9uIHBhdXNlZC4iKTsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNhcHR1
cmVTdGFja1RyYWNlKGNhbGxGcmFtZXMpOwpAQCAtNjUsMTEgKzY1LDExIEBAIHZhciB0ZXN0ID0g
ZnVuY3Rpb24oKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIGN1cnJlbnRTb3VyY2VG
cmFtZSA9IHNvdXJjZUZyYW1lOwogICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Quc2V0QnJl
YWtwb2ludChjdXJyZW50U291cmNlRnJhbWUsIDYsICIiLCB0cnVlKTsKLSAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LndhaXRVbnRpbFBhdXNlZChkaWRQYXVzZWQpOworICAgICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3Qud2FpdFVudGlsUGF1c2VkKGRpZFBhdXNlKTsKICAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJzZXRUaW1lb3V0KG9uZUxpbmVUZXN0
RnVuY3Rpb24sIDApIik7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGZ1bmN0aW9uIGRp
ZFBhdXNlZChjYWxsRnJhbWVzKQorICAgICAgICAgICAgZnVuY3Rpb24gZGlkUGF1c2UoY2FsbEZy
YW1lcykKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNhcHR1
cmVTdGFja1RyYWNlKGNhbGxGcmFtZXMpOwogICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
cmVtb3ZlQnJlYWtwb2ludChjdXJyZW50U291cmNlRnJhbWUsIDYpOwpAQCAtODUsMTEgKzg1LDEx
IEBAIHZhciB0ZXN0ID0gZnVuY3Rpb24oKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAg
IGN1cnJlbnRTb3VyY2VGcmFtZSA9IHNvdXJjZUZyYW1lOwogICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3Quc2V0QnJlYWtwb2ludChjdXJyZW50U291cmNlRnJhbWUsIDEwLCAiIiwgdHJ1ZSk7
Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC53YWl0VW50aWxQYXVzZWQoZGlkUGF1c2Vk
KTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LndhaXRVbnRpbFBhdXNlZChkaWRQYXVz
ZSk7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgic2V0VGlt
ZW91dChvbmVMaW5lVGVzdEZ1bmN0aW9uMiwgMCkiKTsKICAgICAgICAgICAgIH0KIAotICAgICAg
ICAgICAgZnVuY3Rpb24gZGlkUGF1c2VkKGNhbGxGcmFtZXMpCisgICAgICAgICAgICBmdW5jdGlv
biBkaWRQYXVzZShjYWxsRnJhbWVzKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuY2FwdHVyZVN0YWNrVHJhY2UoY2FsbEZyYW1lcyk7CiAgICAgICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5yZW1vdmVCcmVha3BvaW50KGN1cnJlbnRTb3VyY2VGcmFtZSwgMTAp
Owo=
</data>
<flag name="review"
          id="144251"
          type_id="1"
          status="+"
          setter="yurys"
    />
          </attachment>
      

    </bug>

</bugzilla>