<?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>163400</bug_id>
          
          <creation_ts>2016-10-13 12:53:52 -0700</creation_ts>
          <short_desc>Web Inspector: Cleanup parts of DebuggerManager</short_desc>
          <delta_ts>2016-10-15 00:25:12 -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>WebKit 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>DoNotImportToRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Joseph Pecoraro">joepeck</reporter>
          <assigned_to name="Joseph Pecoraro">joepeck</assigned_to>
          <cc>bburg</cc>
    
    <cc>joepeck</cc>
    
    <cc>mattbaker</cc>
    
    <cc>nvasilyev</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1239917</commentid>
    <comment_count>0</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2016-10-13 12:53:52 -0700</bug_when>
    <thetext>Summary:
Cleanup parts of DebuggerManager

  - public methods are all over the place, can be much better grouped
  - modernize some uses of let/for loops
  - declare all members in constructor (for clarity)
  - some public methods have unused features (addBreakpoint)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239921</commentid>
    <comment_count>1</comment_count>
      <attachid>291506</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2016-10-13 12:58:34 -0700</bug_when>
    <thetext>Created attachment 291506
[PATCH] Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239923</commentid>
    <comment_count>2</comment_count>
      <attachid>291507</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2016-10-13 13:01:50 -0700</bug_when>
    <thetext>Created attachment 291507
[PATCH] Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239936</commentid>
    <comment_count>3</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2016-10-13 13:41:57 -0700</bug_when>
    <thetext>This doesn&apos;t apply because of other patches still out for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1240574</commentid>
    <comment_count>4</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2016-10-15 00:25:12 -0700</bug_when>
    <thetext>&lt;https://trac.webkit.org/changeset/207371&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>291506</attachid>
            <date>2016-10-13 12:58:34 -0700</date>
            <delta_ts>2016-10-13 13:01:50 -0700</delta_ts>
            <desc>[PATCH] Proposed Fix</desc>
            <filename>modernize-1.patch</filename>
            <type>text/plain</type>
            <size>26965</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDJlMzQyODAuLmZjNTRlZGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDcxIEBACiAyMDE2LTEwLTEzICBKb3NlcGggUGVjb3Jh
cm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQ2xlYW51
cCBwYXJ0cyBvZiBEZWJ1Z2dlck1hbmFnZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE2MzQwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9Db250cm9sbGVycy9EZWJ1Z2dlck1h
bmFnZXIuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdnZXJNYW5hZ2VyLnJlc3RvcmVC
cmVha3BvaW50c1Nvb24pOgorCisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdnZXJNYW5hZ2Vy
LnByb3RvdHlwZS5nZXQgcGF1c2VkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1h
bmFnZXIucHJvdG90eXBlLmdldCBwYXVzZVJlYXNvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
RGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5nZXQgcGF1c2VEYXRhKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBlLmdldCBjYWxsRnJhbWVzKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBlLmdldCBhY3RpdmVDYWxs
RnJhbWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTWFuYWdlci5wcm90b3R5cGUu
c2V0IGFjdGl2ZUNhbGxGcmFtZSk6CisgICAgICAgIFB1dCBzaW1wbGUgYWNjZXNzb3JzIGF0IHRo
ZSB0b3AuCisKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBl
LmdldCBhbGxFeGNlcHRpb25zQnJlYWtwb2ludCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVi
dWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5nZXQgYWxsVW5jYXVnaHRFeGNlcHRpb25zQnJlYWtwb2lu
dCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5nZXQg
YnJlYWtwb2ludHMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTWFuYWdlci5wcm90
b3R5cGUuYnJlYWtwb2ludEZvcklkZW50aWZpZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRl
YnVnZ2VyTWFuYWdlci5wcm90b3R5cGUuYnJlYWtwb2ludHNGb3JTb3VyY2VDb2RlKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBlLmlzQnJlYWtwb2ludFJl
bW92YWJsZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdnZXJNYW5hZ2VyLnByb3RvdHlw
ZS5pc0JyZWFrcG9pbnRFZGl0YWJsZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdnZXJN
YW5hZ2VyLnByb3RvdHlwZS5nZXQgYnJlYWtwb2ludHNEaXNhYmxlZFRlbXBvcmFyaWx5KToKKyAg
ICAgICAgR3JvdXAgcHVibGljIGJyZWFrcG9pbnQgc3RhdGUgYW5kIGFjY2VzcyBtZXRob2RzLgor
CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5zY3JpcHRG
b3JJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1hbmFnZXIucHJv
dG90eXBlLnNjcmlwdHNGb3JVUkwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTWFu
YWdlci5wcm90b3R5cGUuZ2V0IHNlYXJjaGFibGVTY3JpcHRzKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBlLmdldCBrbm93bk5vblJlc291cmNlU2NyaXB0
cyk6CisgICAgICAgIEdyb3VwIHB1YmxpYyBzY3JpcHQgYWNjZXNzIG1ldGhvZHMuCisKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBlLnBhdXNlKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBlLnJlc3VtZSk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuRGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5zdGVwT3Zlcik6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5zdGVwSW50byk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5zdGVwT3V0
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBlLmNvbnRp
bnVlVG9Mb2NhdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdnZXJNYW5hZ2VyLnBy
b3RvdHlwZS5hZGRCcmVha3BvaW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1h
bmFnZXIucHJvdG90eXBlLnJlbW92ZUJyZWFrcG9pbnQpOgorICAgICAgICBHcm91cCBhbmQgbW9k
ZXJuaXplIHB1YmxpYyBtZXRob2RzIHRoYXQgcGVyZm9ybSBhY3Rpb25zLgorCisgICAgICAgIChX
ZWJJbnNwZWN0b3IuRGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5uZXh0QnJlYWtwb2ludEFjdGlv
bklkZW50aWZpZXIpOgorICAgICAgICBNaXNjLiBtZXRob2RzLgorCisgICAgICAgIChXZWJJbnNw
ZWN0b3IuRGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5icmVha3BvaW50UmVzb2x2ZWQpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTWFuYWdlci5wcm90b3R5cGUucmVzZXQpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTWFuYWdlci5wcm90b3R5cGUucGxheUJyZWFrcG9p
bnRBY3Rpb25Tb3VuZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdnZXJNYW5hZ2VyLnBy
b3RvdHlwZS5zY3JpcHREaWRQYXJzZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdnZXJN
YW5hZ2VyLnByb3RvdHlwZS5fc2V0QnJlYWtwb2ludC5kaWRTZXRCcmVha3BvaW50KToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBlLl9zZXRCcmVha3BvaW50
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBlLl9icmVh
a3BvaW50RWRpdGFibGVQcm9wZXJ0eURpZENoYW5nZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
RGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5fdXBkYXRlQnJlYWtPbkV4Y2VwdGlvbnNTdGF0ZSk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5fYXNzb2Np
YXRlQnJlYWtwb2ludHNXaXRoU291cmNlQ29kZSk6CisgICAgICAgIE1pbm9yIGNsZWFudXAgaW4g
cHJvdGVjdGVkIGFuZCBwcml2YXRlIG1ldGhvZHMuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNl
L01vZGVscy9CcmVha3BvaW50QWN0aW9uLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkJyZWFr
cG9pbnRBY3Rpb24pOgorICAgICAgICBHZXR0aW5nIHRoZSBuZXh0IGlkZW50aWZpZXIgaXMgYW4g
YWN0aW9uIHNvIGl0IHNob3VsZCBiZSBhIGZ1bmN0aW9uIGNhbGwuCisKKyAgICAgICAgKiBVc2Vy
SW50ZXJmYWNlL1ZpZXdzL1NvdXJjZUNvZGVUZXh0RWRpdG9yLmpzOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yLnByb3RvdHlwZS50ZXh0RWRpdG9yQnJlYWtwb2lu
dEFkZGVkKToKKyAgICAgICAgUmVtb3ZlIHVudXNlZCBwYXJhbWV0ZXIuCisKKzIwMTYtMTAtMTMg
IEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKwogICAgICAgICBXZWIgSW5z
cGVjdG9yOiBVbnVzZWQgQnJlYWtwb2ludCBnZXR0ZXIvc2V0dGVyIGZvciAiaWQiIC0gc2hvdWxk
IGJlICJpZGVudGlmaWVyIgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTYzMzk1CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL0NvbnRyb2xsZXJzL0RlYnVnZ2VyTWFuYWdlci5qcyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0RlYnVnZ2VyTWFuYWdlci5qcwppbmRl
eCBhZDg5MjFiLi5jOWVjNDM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Db250cm9sbGVycy9EZWJ1Z2dlck1hbmFnZXIuanMKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRGVidWdnZXJNYW5hZ2VyLmpz
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCwgMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTQ4LDcgKzQ4LDcgQEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTWFuYWdlciA9
IGNsYXNzIERlYnVnZ2VyTWFuYWdlciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAgICAg
ICAgdGhpcy5fYWxsRXhjZXB0aW9uc0JyZWFrcG9pbnRFbmFibGVkU2V0dGluZyA9IG5ldyBXZWJJ
bnNwZWN0b3IuU2V0dGluZygiYnJlYWstb24tYWxsLWV4Y2VwdGlvbnMiLCBmYWxzZSk7CiAgICAg
ICAgIHRoaXMuX2FsbFVuY2F1Z2h0RXhjZXB0aW9uc0JyZWFrcG9pbnRFbmFibGVkU2V0dGluZyA9
IG5ldyBXZWJJbnNwZWN0b3IuU2V0dGluZygiYnJlYWstb24tYWxsLXVuY2F1Z2h0LWV4Y2VwdGlv
bnMiLCBmYWxzZSk7CiAKLSAgICAgICAgdmFyIHNwZWNpYWxCcmVha3BvaW50TG9jYXRpb24gPSBu
ZXcgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVMb2NhdGlvbihudWxsLCBJbmZpbml0eSwgSW5maW5p
dHkpOworICAgICAgICBsZXQgc3BlY2lhbEJyZWFrcG9pbnRMb2NhdGlvbiA9IG5ldyBXZWJJbnNw
ZWN0b3IuU291cmNlQ29kZUxvY2F0aW9uKG51bGwsIEluZmluaXR5LCBJbmZpbml0eSk7CiAKICAg
ICAgICAgdGhpcy5fYWxsRXhjZXB0aW9uc0JyZWFrcG9pbnQgPSBuZXcgV2ViSW5zcGVjdG9yLkJy
ZWFrcG9pbnQoc3BlY2lhbEJyZWFrcG9pbnRMb2NhdGlvbiwgIXRoaXMuX2FsbEV4Y2VwdGlvbnNC
cmVha3BvaW50RW5hYmxlZFNldHRpbmcudmFsdWUpOwogICAgICAgICB0aGlzLl9hbGxFeGNlcHRp
b25zQnJlYWtwb2ludC5yZXNvbHZlZCA9IHRydWU7CkBAIC04NSw5ICs4NSwxMSBAQCBXZWJJbnNw
ZWN0b3IuRGVidWdnZXJNYW5hZ2VyID0gY2xhc3MgRGVidWdnZXJNYW5hZ2VyIGV4dGVuZHMgV2Vi
SW5zcGVjdG9yLk9iamVjdAogCiAgICAgICAgIHRoaXMuX3VwZGF0ZUJyZWFrT25FeGNlcHRpb25z
U3RhdGUoKTsKIAorICAgICAgICB0aGlzLl9pZ25vcmVCcmVha3BvaW50RGlzcGxheUxvY2F0aW9u
RGlkQ2hhbmdlRXZlbnQgPSBmYWxzZTsKKwogICAgICAgICBmdW5jdGlvbiByZXN0b3JlQnJlYWtw
b2ludHNTb29uKCkgewogICAgICAgICAgICAgdGhpcy5fcmVzdG9yaW5nQnJlYWtwb2ludHMgPSB0
cnVlOwotICAgICAgICAgICAgZm9yICh2YXIgY29va2llIG9mIHRoaXMuX2JyZWFrcG9pbnRzU2V0
dGluZy52YWx1ZSkKKyAgICAgICAgICAgIGZvciAobGV0IGNvb2tpZSBvZiB0aGlzLl9icmVha3Bv
aW50c1NldHRpbmcudmFsdWUpCiAgICAgICAgICAgICAgICAgdGhpcy5hZGRCcmVha3BvaW50KG5l
dyBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludChjb29raWUpKTsKICAgICAgICAgICAgIHRoaXMuX3Jl
c3RvcmluZ0JyZWFrcG9pbnRzID0gZmFsc2U7CiAgICAgICAgIH0KQEAgLTk5LDI5ICsxMDEsNiBA
QCBXZWJJbnNwZWN0b3IuRGVidWdnZXJNYW5hZ2VyID0gY2xhc3MgRGVidWdnZXJNYW5hZ2VyIGV4
dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogCiAgICAgLy8gUHVibGljCiAKLSAgICBnZXQgYnJl
YWtwb2ludHNFbmFibGVkKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9icmVha3BvaW50
c0VuYWJsZWRTZXR0aW5nLnZhbHVlOwotICAgIH0KLQotICAgIHNldCBicmVha3BvaW50c0VuYWJs
ZWQoZW5hYmxlZCkKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzLl9icmVha3BvaW50c0VuYWJsZWRT
ZXR0aW5nLnZhbHVlID09PSBlbmFibGVkKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAg
IGNvbnNvbGUuYXNzZXJ0KCEoZW5hYmxlZCAmJiB0aGlzLmJyZWFrcG9pbnRzRGlzYWJsZWRUZW1w
b3JhcmlseSksICJTaG91bGQgbm90IGVuYWJsZSBicmVha3BvaW50cyB3aGVuIHdlIGFyZSB0ZW1w
b3JhcmlseSBkaXNhYmxpbmcgYnJlYWtwb2ludHMuIik7Ci0gICAgICAgIGlmIChlbmFibGVkICYm
IHRoaXMuYnJlYWtwb2ludHNEaXNhYmxlZFRlbXBvcmFyaWx5KQotICAgICAgICAgICAgcmV0dXJu
OwotCi0gICAgICAgIHRoaXMuX2JyZWFrcG9pbnRzRW5hYmxlZFNldHRpbmcudmFsdWUgPSBlbmFi
bGVkOwotCi0gICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rv
ci5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuQnJlYWtwb2ludHNFbmFibGVkRGlkQ2hhbmdlKTsKLQot
ICAgICAgICBEZWJ1Z2dlckFnZW50LnNldEJyZWFrcG9pbnRzQWN0aXZlKGVuYWJsZWQpOwotCi0g
ICAgICAgIHRoaXMuX3VwZGF0ZUJyZWFrT25FeGNlcHRpb25zU3RhdGUoKTsKLSAgICB9Ci0KICAg
ICBnZXQgcGF1c2VkKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9wYXVzZWQ7CkBAIC0x
NTcsMTEzICsxMzYsNiBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJNYW5hZ2VyID0gY2xhc3MgRGVi
dWdnZXJNYW5hZ2VyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAgICB0aGlzLmRp
c3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRGVidWdnZXJNYW5hZ2VyLkV2ZW50
LkFjdGl2ZUNhbGxGcmFtZURpZENoYW5nZSk7CiAgICAgfQogCi0gICAgcGF1c2UoKQotICAgIHsK
LSAgICAgICAgaWYgKHRoaXMuX3BhdXNlZCkKLSAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJl
c29sdmUoKTsKLQotICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNw
ZWN0b3IuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LldhaXRpbmdUb1BhdXNlKTsKLQotICAgICAgICB2
YXIgbGlzdGVuZXIgPSBuZXcgV2ViSW5zcGVjdG9yLkV2ZW50TGlzdGVuZXIodGhpcywgdHJ1ZSk7
Ci0KLSAgICAgICAgdmFyIG1hbmFnZXJSZXN1bHQgPSBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNv
bHZlLCByZWplY3QpIHsKLSAgICAgICAgICAgIGxpc3RlbmVyLmNvbm5lY3QoV2ViSW5zcGVjdG9y
LmRlYnVnZ2VyTWFuYWdlciwgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5QYXVz
ZWQsIHJlc29sdmUpOwotICAgICAgICB9KTsKLQotICAgICAgICB2YXIgcHJvdG9jb2xSZXN1bHQg
PSBEZWJ1Z2dlckFnZW50LnBhdXNlKCkKLSAgICAgICAgICAgIC5jYXRjaChmdW5jdGlvbihlcnJv
cikgewotICAgICAgICAgICAgICAgIGxpc3RlbmVyLmRpc2Nvbm5lY3QoKTsKLSAgICAgICAgICAg
ICAgICBjb25zb2xlLmVycm9yKCJEZWJ1Z2dlck1hbmFnZXIucGF1c2UgZmFpbGVkOiAiLCBlcnJv
cik7Ci0gICAgICAgICAgICAgICAgdGhyb3cgZXJyb3I7Ci0gICAgICAgICAgICB9KTsKLQotICAg
ICAgICByZXR1cm4gUHJvbWlzZS5hbGwoW21hbmFnZXJSZXN1bHQsIHByb3RvY29sUmVzdWx0XSk7
Ci0gICAgfQotCi0gICAgcmVzdW1lKCkKLSAgICB7Ci0gICAgICAgIGlmICghdGhpcy5fcGF1c2Vk
KQotICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpOwotCi0gICAgICAgIHZhciBs
aXN0ZW5lciA9IG5ldyBXZWJJbnNwZWN0b3IuRXZlbnRMaXN0ZW5lcih0aGlzLCB0cnVlKTsKLQot
ICAgICAgICB2YXIgbWFuYWdlclJlc3VsdCA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUs
IHJlamVjdCkgewotICAgICAgICAgICAgbGlzdGVuZXIuY29ubmVjdChXZWJJbnNwZWN0b3IuZGVi
dWdnZXJNYW5hZ2VyLCBXZWJJbnNwZWN0b3IuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlJlc3VtZWQs
IHJlc29sdmUpOwotICAgICAgICB9KTsKLQotICAgICAgICB2YXIgcHJvdG9jb2xSZXN1bHQgPSBE
ZWJ1Z2dlckFnZW50LnJlc3VtZSgpCi0gICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24oZXJyb3Ip
IHsKLSAgICAgICAgICAgICAgICBsaXN0ZW5lci5kaXNjb25uZWN0KCk7Ci0gICAgICAgICAgICAg
ICAgY29uc29sZS5lcnJvcigiRGVidWdnZXJNYW5hZ2VyLnJlc3VtZSBmYWlsZWQ6ICIsIGVycm9y
KTsKLSAgICAgICAgICAgICAgICB0aHJvdyBlcnJvcjsKLSAgICAgICAgICAgIH0pOwotCi0gICAg
ICAgIHJldHVybiBQcm9taXNlLmFsbChbbWFuYWdlclJlc3VsdCwgcHJvdG9jb2xSZXN1bHRdKTsK
LSAgICB9Ci0KLSAgICBzdGVwT3ZlcigpCi0gICAgewotICAgICAgICBpZiAoIXRoaXMuX3BhdXNl
ZCkKLSAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoIkNhbm5vdCBz
dGVwIG92ZXIgYmVjYXVzZSBkZWJ1Z2dlciBpcyBub3QgcGF1c2VkLiIpKTsKLQotICAgICAgICB2
YXIgbGlzdGVuZXIgPSBuZXcgV2ViSW5zcGVjdG9yLkV2ZW50TGlzdGVuZXIodGhpcywgdHJ1ZSk7
Ci0KLSAgICAgICAgdmFyIG1hbmFnZXJSZXN1bHQgPSBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNv
bHZlLCByZWplY3QpIHsKLSAgICAgICAgICAgIGxpc3RlbmVyLmNvbm5lY3QoV2ViSW5zcGVjdG9y
LmRlYnVnZ2VyTWFuYWdlciwgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5BY3Rp
dmVDYWxsRnJhbWVEaWRDaGFuZ2UsIHJlc29sdmUpOwotICAgICAgICB9KTsKLQotICAgICAgICB2
YXIgcHJvdG9jb2xSZXN1bHQgPSBEZWJ1Z2dlckFnZW50LnN0ZXBPdmVyKCkKLSAgICAgICAgICAg
IC5jYXRjaChmdW5jdGlvbihlcnJvcikgewotICAgICAgICAgICAgICAgIGxpc3RlbmVyLmRpc2Nv
bm5lY3QoKTsKLSAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCJEZWJ1Z2dlck1hbmFnZXIu
c3RlcE92ZXIgZmFpbGVkOiAiLCBlcnJvcik7Ci0gICAgICAgICAgICAgICAgdGhyb3cgZXJyb3I7
Ci0gICAgICAgICAgICB9KTsKLQotICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoW21hbmFnZXJS
ZXN1bHQsIHByb3RvY29sUmVzdWx0XSk7Ci0gICAgfQotCi0gICAgc3RlcEludG8oKQotICAgIHsK
LSAgICAgICAgaWYgKCF0aGlzLl9wYXVzZWQpCi0gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5y
ZWplY3QobmV3IEVycm9yKCJDYW5ub3Qgc3RlcCBpbnRvIGJlY2F1c2UgZGVidWdnZXIgaXMgbm90
IHBhdXNlZC4iKSk7Ci0KLSAgICAgICAgdmFyIGxpc3RlbmVyID0gbmV3IFdlYkluc3BlY3Rvci5F
dmVudExpc3RlbmVyKHRoaXMsIHRydWUpOwotCi0gICAgICAgIHZhciBtYW5hZ2VyUmVzdWx0ID0g
bmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7Ci0gICAgICAgICAgICBsaXN0
ZW5lci5jb25uZWN0KFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1hbmFnZXIsIFdlYkluc3BlY3Rvci5E
ZWJ1Z2dlck1hbmFnZXIuRXZlbnQuQWN0aXZlQ2FsbEZyYW1lRGlkQ2hhbmdlLCByZXNvbHZlKTsK
LSAgICAgICAgfSk7Ci0KLSAgICAgICAgdmFyIHByb3RvY29sUmVzdWx0ID0gRGVidWdnZXJBZ2Vu
dC5zdGVwSW50bygpCi0gICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24oZXJyb3IpIHsKLSAgICAg
ICAgICAgICAgICBsaXN0ZW5lci5kaXNjb25uZWN0KCk7Ci0gICAgICAgICAgICAgICAgY29uc29s
ZS5lcnJvcigiRGVidWdnZXJNYW5hZ2VyLnN0ZXBJbnRvIGZhaWxlZDogIiwgZXJyb3IpOwotICAg
ICAgICAgICAgICAgIHRocm93IGVycm9yOwotICAgICAgICAgICAgfSk7Ci0KLSAgICAgICAgcmV0
dXJuIFByb21pc2UuYWxsKFttYW5hZ2VyUmVzdWx0LCBwcm90b2NvbFJlc3VsdF0pOwotICAgIH0K
LQotICAgIHN0ZXBPdXQoKQotICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLl9wYXVzZWQpCi0gICAg
ICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCJDYW5ub3Qgc3RlcCBvdXQg
YmVjYXVzZSBkZWJ1Z2dlciBpcyBub3QgcGF1c2VkLiIpKTsKLQotICAgICAgICB2YXIgbGlzdGVu
ZXIgPSBuZXcgV2ViSW5zcGVjdG9yLkV2ZW50TGlzdGVuZXIodGhpcywgdHJ1ZSk7Ci0KLSAgICAg
ICAgdmFyIG1hbmFnZXJSZXN1bHQgPSBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWpl
Y3QpIHsKLSAgICAgICAgICAgIGxpc3RlbmVyLmNvbm5lY3QoV2ViSW5zcGVjdG9yLmRlYnVnZ2Vy
TWFuYWdlciwgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5BY3RpdmVDYWxsRnJh
bWVEaWRDaGFuZ2UsIHJlc29sdmUpOwotICAgICAgICB9KTsKLQotICAgICAgICB2YXIgcHJvdG9j
b2xSZXN1bHQgPSBEZWJ1Z2dlckFnZW50LnN0ZXBPdXQoKQotICAgICAgICAgICAgLmNhdGNoKGZ1
bmN0aW9uKGVycm9yKSB7Ci0gICAgICAgICAgICAgICAgbGlzdGVuZXIuZGlzY29ubmVjdCgpOwot
ICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoIkRlYnVnZ2VyTWFuYWdlci5zdGVwT3V0IGZh
aWxlZDogIiwgZXJyb3IpOwotICAgICAgICAgICAgICAgIHRocm93IGVycm9yOwotICAgICAgICAg
ICAgfSk7Ci0KLSAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKFttYW5hZ2VyUmVzdWx0LCBwcm90
b2NvbFJlc3VsdF0pOwotICAgIH0KLQogICAgIGdldCBhbGxFeGNlcHRpb25zQnJlYWtwb2ludCgp
CiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fYWxsRXhjZXB0aW9uc0JyZWFrcG9pbnQ7CkBA
IC0yNzksMTIgKzE1MSwxNyBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJNYW5hZ2VyID0gY2xhc3Mg
RGVidWdnZXJNYW5hZ2VyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAgICByZXR1
cm4gdGhpcy5fYnJlYWtwb2ludHM7CiAgICAgfQogCisgICAgYnJlYWtwb2ludEZvcklkZW50aWZp
ZXIoaWQpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fYnJlYWtwb2ludElkTWFwLmdldChp
ZCkgfHwgbnVsbDsKKyAgICB9CisKICAgICBicmVha3BvaW50c0ZvclNvdXJjZUNvZGUoc291cmNl
Q29kZSkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHNvdXJjZUNvZGUgaW5zdGFuY2Vv
ZiBXZWJJbnNwZWN0b3IuUmVzb3VyY2UgfHwgc291cmNlQ29kZSBpbnN0YW5jZW9mIFdlYkluc3Bl
Y3Rvci5TY3JpcHQpOwogCiAgICAgICAgIGlmIChzb3VyY2VDb2RlIGluc3RhbmNlb2YgV2ViSW5z
cGVjdG9yLlNvdXJjZU1hcFJlc291cmNlKSB7Ci0gICAgICAgICAgICB2YXIgb3JpZ2luYWxTb3Vy
Y2VDb2RlQnJlYWtwb2ludHMgPSB0aGlzLmJyZWFrcG9pbnRzRm9yU291cmNlQ29kZShzb3VyY2VD
b2RlLnNvdXJjZU1hcC5vcmlnaW5hbFNvdXJjZUNvZGUpOworICAgICAgICAgICAgbGV0IG9yaWdp
bmFsU291cmNlQ29kZUJyZWFrcG9pbnRzID0gdGhpcy5icmVha3BvaW50c0ZvclNvdXJjZUNvZGUo
c291cmNlQ29kZS5zb3VyY2VNYXAub3JpZ2luYWxTb3VyY2VDb2RlKTsKICAgICAgICAgICAgIHJl
dHVybiBvcmlnaW5hbFNvdXJjZUNvZGVCcmVha3BvaW50cy5maWx0ZXIoZnVuY3Rpb24oYnJlYWtw
b2ludCkgewogICAgICAgICAgICAgICAgIHJldHVybiBicmVha3BvaW50LnNvdXJjZUNvZGVMb2Nh
dGlvbi5kaXNwbGF5U291cmNlQ29kZSA9PT0gc291cmNlQ29kZTsKICAgICAgICAgICAgIH0pOwpA
QCAtMzA3LDkgKzE4NCw0MiBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJNYW5hZ2VyID0gY2xhc3Mg
RGVidWdnZXJNYW5hZ2VyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAgICByZXR1
cm4gW107CiAgICAgfQogCi0gICAgYnJlYWtwb2ludEZvcklkZW50aWZpZXIoaWQpCisgICAgaXNC
cmVha3BvaW50UmVtb3ZhYmxlKGJyZWFrcG9pbnQpCiAgICAgewotICAgICAgICByZXR1cm4gdGhp
cy5fYnJlYWtwb2ludElkTWFwLmdldChpZCkgfHwgbnVsbDsKKyAgICAgICAgcmV0dXJuIGJyZWFr
cG9pbnQgIT09IHRoaXMuX2FsbEV4Y2VwdGlvbnNCcmVha3BvaW50ICYmIGJyZWFrcG9pbnQgIT09
IHRoaXMuX2FsbFVuY2F1Z2h0RXhjZXB0aW9uc0JyZWFrcG9pbnQ7CisgICAgfQorCisgICAgaXNC
cmVha3BvaW50RWRpdGFibGUoYnJlYWtwb2ludCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlz
LmlzQnJlYWtwb2ludFJlbW92YWJsZShicmVha3BvaW50KTsKKyAgICB9CisKKyAgICBnZXQgYnJl
YWtwb2ludHNFbmFibGVkKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9icmVha3BvaW50
c0VuYWJsZWRTZXR0aW5nLnZhbHVlOworICAgIH0KKworICAgIHNldCBicmVha3BvaW50c0VuYWJs
ZWQoZW5hYmxlZCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9icmVha3BvaW50c0VuYWJsZWRT
ZXR0aW5nLnZhbHVlID09PSBlbmFibGVkKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
IGNvbnNvbGUuYXNzZXJ0KCEoZW5hYmxlZCAmJiB0aGlzLmJyZWFrcG9pbnRzRGlzYWJsZWRUZW1w
b3JhcmlseSksICJTaG91bGQgbm90IGVuYWJsZSBicmVha3BvaW50cyB3aGVuIHdlIGFyZSB0ZW1w
b3JhcmlseSBkaXNhYmxpbmcgYnJlYWtwb2ludHMuIik7CisgICAgICAgIGlmIChlbmFibGVkICYm
IHRoaXMuYnJlYWtwb2ludHNEaXNhYmxlZFRlbXBvcmFyaWx5KQorICAgICAgICAgICAgcmV0dXJu
OworCisgICAgICAgIHRoaXMuX2JyZWFrcG9pbnRzRW5hYmxlZFNldHRpbmcudmFsdWUgPSBlbmFi
bGVkOworCisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rv
ci5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuQnJlYWtwb2ludHNFbmFibGVkRGlkQ2hhbmdlKTsKKwor
ICAgICAgICBEZWJ1Z2dlckFnZW50LnNldEJyZWFrcG9pbnRzQWN0aXZlKGVuYWJsZWQpOworCisg
ICAgICAgIHRoaXMuX3VwZGF0ZUJyZWFrT25FeGNlcHRpb25zU3RhdGUoKTsKKyAgICB9CisKKyAg
ICBnZXQgYnJlYWtwb2ludHNEaXNhYmxlZFRlbXBvcmFyaWx5KCkKKyAgICB7CisgICAgICAgIHJl
dHVybiB0aGlzLl90ZW1wb3JhcmlseURpc2FibGVkQnJlYWtwb2ludHNSZXN0b3JlU2V0dGluZy52
YWx1ZSAhPT0gbnVsbDsKICAgICB9CiAKICAgICBzY3JpcHRGb3JJZGVudGlmaWVyKGlkKQpAQCAt
MzIzLDExICsyMzMsNiBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJNYW5hZ2VyID0gY2xhc3MgRGVi
dWdnZXJNYW5hZ2VyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAgICByZXR1cm4g
dGhpcy5fc2NyaXB0Q29udGVudElkZW50aWZpZXJNYXAuZ2V0KHVybCkgfHwgW107CiAgICAgfQog
Ci0gICAgY29udGludWVUb0xvY2F0aW9uKHNjcmlwdElkZW50aWZpZXIsIGxpbmVOdW1iZXIsIGNv
bHVtbk51bWJlcikKLSAgICB7Ci0gICAgICAgIERlYnVnZ2VyQWdlbnQuY29udGludWVUb0xvY2F0
aW9uKHtzY3JpcHRJZDogc2NyaXB0SWRlbnRpZmllciwgbGluZU51bWJlciwgY29sdW1uTnVtYmVy
fSk7Ci0gICAgfQotCiAgICAgZ2V0IHNlYXJjaGFibGVTY3JpcHRzKCkKICAgICB7CiAgICAgICAg
IHJldHVybiB0aGlzLmtub3duTm9uUmVzb3VyY2VTY3JpcHRzLmZpbHRlcigoc2NyaXB0KSA9PiAh
IXNjcmlwdC5jb250ZW50SWRlbnRpZmllcik7CkBAIC0zNDcsOSArMjUyLDEyMSBAQCBXZWJJbnNw
ZWN0b3IuRGVidWdnZXJNYW5hZ2VyID0gY2xhc3MgRGVidWdnZXJNYW5hZ2VyIGV4dGVuZHMgV2Vi
SW5zcGVjdG9yLk9iamVjdAogICAgICAgICByZXR1cm4ga25vd25TY3JpcHRzOwogICAgIH0KIAot
ICAgIGFkZEJyZWFrcG9pbnQoYnJlYWtwb2ludCwgc2tpcEV2ZW50RGlzcGF0Y2gsIHNob3VsZFNw
ZWN1bGF0aXZlbHlSZXNvbHZlKQorICAgIHBhdXNlKCkKICAgICB7Ci0gICAgICAgIGNvbnNvbGUu
YXNzZXJ0KGJyZWFrcG9pbnQgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludCwgIkJh
ZCBhcmd1bWVudCB0byBEZWJ1Z2dlck1hbmdlci5hZGRCcmVha3BvaW50OiAiLCBicmVha3BvaW50
KTsKKyAgICAgICAgaWYgKHRoaXMuX3BhdXNlZCkKKyAgICAgICAgICAgIHJldHVybiBQcm9taXNl
LnJlc29sdmUoKTsKKworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJ
bnNwZWN0b3IuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LldhaXRpbmdUb1BhdXNlKTsKKworICAgICAg
ICBsZXQgbGlzdGVuZXIgPSBuZXcgV2ViSW5zcGVjdG9yLkV2ZW50TGlzdGVuZXIodGhpcywgdHJ1
ZSk7CisKKyAgICAgICAgbGV0IG1hbmFnZXJSZXN1bHQgPSBuZXcgUHJvbWlzZShmdW5jdGlvbihy
ZXNvbHZlLCByZWplY3QpIHsKKyAgICAgICAgICAgIGxpc3RlbmVyLmNvbm5lY3QoV2ViSW5zcGVj
dG9yLmRlYnVnZ2VyTWFuYWdlciwgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5Q
YXVzZWQsIHJlc29sdmUpOworICAgICAgICB9KTsKKworICAgICAgICBsZXQgcHJvdG9jb2xSZXN1
bHQgPSBEZWJ1Z2dlckFnZW50LnBhdXNlKCkKKyAgICAgICAgICAgIC5jYXRjaChmdW5jdGlvbihl
cnJvcikgeworICAgICAgICAgICAgICAgIGxpc3RlbmVyLmRpc2Nvbm5lY3QoKTsKKyAgICAgICAg
ICAgICAgICBjb25zb2xlLmVycm9yKCJEZWJ1Z2dlck1hbmFnZXIucGF1c2UgZmFpbGVkOiAiLCBl
cnJvcik7CisgICAgICAgICAgICAgICAgdGhyb3cgZXJyb3I7CisgICAgICAgICAgICB9KTsKKwor
ICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoW21hbmFnZXJSZXN1bHQsIHByb3RvY29sUmVzdWx0
XSk7CisgICAgfQorCisgICAgcmVzdW1lKCkKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5fcGF1
c2VkKQorICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpOworCisgICAgICAgIGxl
dCBsaXN0ZW5lciA9IG5ldyBXZWJJbnNwZWN0b3IuRXZlbnRMaXN0ZW5lcih0aGlzLCB0cnVlKTsK
KworICAgICAgICBsZXQgbWFuYWdlclJlc3VsdCA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29s
dmUsIHJlamVjdCkgeworICAgICAgICAgICAgbGlzdGVuZXIuY29ubmVjdChXZWJJbnNwZWN0b3Iu
ZGVidWdnZXJNYW5hZ2VyLCBXZWJJbnNwZWN0b3IuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlJlc3Vt
ZWQsIHJlc29sdmUpOworICAgICAgICB9KTsKKworICAgICAgICBsZXQgcHJvdG9jb2xSZXN1bHQg
PSBEZWJ1Z2dlckFnZW50LnJlc3VtZSgpCisgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24oZXJy
b3IpIHsKKyAgICAgICAgICAgICAgICBsaXN0ZW5lci5kaXNjb25uZWN0KCk7CisgICAgICAgICAg
ICAgICAgY29uc29sZS5lcnJvcigiRGVidWdnZXJNYW5hZ2VyLnJlc3VtZSBmYWlsZWQ6ICIsIGVy
cm9yKTsKKyAgICAgICAgICAgICAgICB0aHJvdyBlcnJvcjsKKyAgICAgICAgICAgIH0pOworCisg
ICAgICAgIHJldHVybiBQcm9taXNlLmFsbChbbWFuYWdlclJlc3VsdCwgcHJvdG9jb2xSZXN1bHRd
KTsKKyAgICB9CisKKyAgICBzdGVwT3ZlcigpCisgICAgeworICAgICAgICBpZiAoIXRoaXMuX3Bh
dXNlZCkKKyAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoIkNhbm5v
dCBzdGVwIG92ZXIgYmVjYXVzZSBkZWJ1Z2dlciBpcyBub3QgcGF1c2VkLiIpKTsKKworICAgICAg
ICBsZXQgbGlzdGVuZXIgPSBuZXcgV2ViSW5zcGVjdG9yLkV2ZW50TGlzdGVuZXIodGhpcywgdHJ1
ZSk7CisKKyAgICAgICAgbGV0IG1hbmFnZXJSZXN1bHQgPSBuZXcgUHJvbWlzZShmdW5jdGlvbihy
ZXNvbHZlLCByZWplY3QpIHsKKyAgICAgICAgICAgIGxpc3RlbmVyLmNvbm5lY3QoV2ViSW5zcGVj
dG9yLmRlYnVnZ2VyTWFuYWdlciwgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5B
Y3RpdmVDYWxsRnJhbWVEaWRDaGFuZ2UsIHJlc29sdmUpOworICAgICAgICB9KTsKKworICAgICAg
ICBsZXQgcHJvdG9jb2xSZXN1bHQgPSBEZWJ1Z2dlckFnZW50LnN0ZXBPdmVyKCkKKyAgICAgICAg
ICAgIC5jYXRjaChmdW5jdGlvbihlcnJvcikgeworICAgICAgICAgICAgICAgIGxpc3RlbmVyLmRp
c2Nvbm5lY3QoKTsKKyAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCJEZWJ1Z2dlck1hbmFn
ZXIuc3RlcE92ZXIgZmFpbGVkOiAiLCBlcnJvcik7CisgICAgICAgICAgICAgICAgdGhyb3cgZXJy
b3I7CisgICAgICAgICAgICB9KTsKKworICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoW21hbmFn
ZXJSZXN1bHQsIHByb3RvY29sUmVzdWx0XSk7CisgICAgfQorCisgICAgc3RlcEludG8oKQorICAg
IHsKKyAgICAgICAgaWYgKCF0aGlzLl9wYXVzZWQpCisgICAgICAgICAgICByZXR1cm4gUHJvbWlz
ZS5yZWplY3QobmV3IEVycm9yKCJDYW5ub3Qgc3RlcCBpbnRvIGJlY2F1c2UgZGVidWdnZXIgaXMg
bm90IHBhdXNlZC4iKSk7CisKKyAgICAgICAgbGV0IGxpc3RlbmVyID0gbmV3IFdlYkluc3BlY3Rv
ci5FdmVudExpc3RlbmVyKHRoaXMsIHRydWUpOworCisgICAgICAgIGxldCBtYW5hZ2VyUmVzdWx0
ID0gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7CisgICAgICAgICAgICBs
aXN0ZW5lci5jb25uZWN0KFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1hbmFnZXIsIFdlYkluc3BlY3Rv
ci5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuQWN0aXZlQ2FsbEZyYW1lRGlkQ2hhbmdlLCByZXNvbHZl
KTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgbGV0IHByb3RvY29sUmVzdWx0ID0gRGVidWdnZXJB
Z2VudC5zdGVwSW50bygpCisgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24oZXJyb3IpIHsKKyAg
ICAgICAgICAgICAgICBsaXN0ZW5lci5kaXNjb25uZWN0KCk7CisgICAgICAgICAgICAgICAgY29u
c29sZS5lcnJvcigiRGVidWdnZXJNYW5hZ2VyLnN0ZXBJbnRvIGZhaWxlZDogIiwgZXJyb3IpOwor
ICAgICAgICAgICAgICAgIHRocm93IGVycm9yOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAg
cmV0dXJuIFByb21pc2UuYWxsKFttYW5hZ2VyUmVzdWx0LCBwcm90b2NvbFJlc3VsdF0pOworICAg
IH0KKworICAgIHN0ZXBPdXQoKQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLl9wYXVzZWQpCisg
ICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCJDYW5ub3Qgc3RlcCBv
dXQgYmVjYXVzZSBkZWJ1Z2dlciBpcyBub3QgcGF1c2VkLiIpKTsKKworICAgICAgICBsZXQgbGlz
dGVuZXIgPSBuZXcgV2ViSW5zcGVjdG9yLkV2ZW50TGlzdGVuZXIodGhpcywgdHJ1ZSk7CisKKyAg
ICAgICAgbGV0IG1hbmFnZXJSZXN1bHQgPSBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCBy
ZWplY3QpIHsKKyAgICAgICAgICAgIGxpc3RlbmVyLmNvbm5lY3QoV2ViSW5zcGVjdG9yLmRlYnVn
Z2VyTWFuYWdlciwgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5BY3RpdmVDYWxs
RnJhbWVEaWRDaGFuZ2UsIHJlc29sdmUpOworICAgICAgICB9KTsKKworICAgICAgICBsZXQgcHJv
dG9jb2xSZXN1bHQgPSBEZWJ1Z2dlckFnZW50LnN0ZXBPdXQoKQorICAgICAgICAgICAgLmNhdGNo
KGZ1bmN0aW9uKGVycm9yKSB7CisgICAgICAgICAgICAgICAgbGlzdGVuZXIuZGlzY29ubmVjdCgp
OworICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoIkRlYnVnZ2VyTWFuYWdlci5zdGVwT3V0
IGZhaWxlZDogIiwgZXJyb3IpOworICAgICAgICAgICAgICAgIHRocm93IGVycm9yOworICAgICAg
ICAgICAgfSk7CisKKyAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKFttYW5hZ2VyUmVzdWx0LCBw
cm90b2NvbFJlc3VsdF0pOworICAgIH0KKworICAgIGNvbnRpbnVlVG9Mb2NhdGlvbihzY3JpcHRJ
ZCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIERlYnVn
Z2VyQWdlbnQuY29udGludWVUb0xvY2F0aW9uKHtzY3JpcHRJZCwgbGluZU51bWJlciwgY29sdW1u
TnVtYmVyfSk7CisgICAgfQorCisgICAgYWRkQnJlYWtwb2ludChicmVha3BvaW50LCBzaG91bGRT
cGVjdWxhdGl2ZWx5UmVzb2x2ZSkKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGJyZWFr
cG9pbnQgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludCk7CiAgICAgICAgIGlmICgh
YnJlYWtwb2ludCkKICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMzczLDIyICszOTAsMjEgQEAg
V2ViSW5zcGVjdG9yLkRlYnVnZ2VyTWFuYWdlciA9IGNsYXNzIERlYnVnZ2VyTWFuYWdlciBleHRl
bmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIAogICAgICAgICB0aGlzLl9icmVha3BvaW50cy5wdXNo
KGJyZWFrcG9pbnQpOwogCi0gICAgICAgIGZ1bmN0aW9uIHNwZWN1bGF0aXZlbHlSZXNvbHZlQnJl
YWtwb2ludChicmVha3BvaW50KSB7Ci0gICAgICAgICAgICBicmVha3BvaW50LnJlc29sdmVkID0g
dHJ1ZTsKKyAgICAgICAgaWYgKCFicmVha3BvaW50LmRpc2FibGVkKSB7CisgICAgICAgICAgICB0
aGlzLl9zZXRCcmVha3BvaW50KGJyZWFrcG9pbnQsIChicmVha3BvaW50KSA9PiB7CisgICAgICAg
ICAgICAgICAgaWYgKHNob3VsZFNwZWN1bGF0aXZlbHlSZXNvbHZlKQorICAgICAgICAgICAgICAg
ICAgICBicmVha3BvaW50LnJlc29sdmVkID0gdHJ1ZTsKKyAgICAgICAgICAgIH0pOwogICAgICAg
ICB9CiAKLSAgICAgICAgaWYgKCFicmVha3BvaW50LmRpc2FibGVkKQotICAgICAgICAgICAgdGhp
cy5fc2V0QnJlYWtwb2ludChicmVha3BvaW50LCBzaG91bGRTcGVjdWxhdGl2ZWx5UmVzb2x2ZSA/
IHNwZWN1bGF0aXZlbHlSZXNvbHZlQnJlYWtwb2ludC5iaW5kKG51bGwsIGJyZWFrcG9pbnQpIDog
bnVsbCk7Ci0KICAgICAgICAgdGhpcy5fc2F2ZUJyZWFrcG9pbnRzKCk7CiAKLSAgICAgICAgaWYg
KCFza2lwRXZlbnREaXNwYXRjaCkKLSAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlz
dGVuZXJzKFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuQnJlYWtwb2ludEFkZGVk
LCB7YnJlYWtwb2ludH0pOworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhX
ZWJJbnNwZWN0b3IuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LkJyZWFrcG9pbnRBZGRlZCwge2JyZWFr
cG9pbnR9KTsKICAgICB9CiAKICAgICByZW1vdmVCcmVha3BvaW50KGJyZWFrcG9pbnQpCiAgICAg
ewotICAgICAgICBjb25zb2xlLmFzc2VydChicmVha3BvaW50KTsKKyAgICAgICAgY29uc29sZS5h
c3NlcnQoYnJlYWtwb2ludCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5CcmVha3BvaW50KTsKICAg
ICAgICAgaWYgKCFicmVha3BvaW50KQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC00MjgsNiAr
NDQ0LDEzIEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1hbmFnZXIgPSBjbGFzcyBEZWJ1Z2dlck1h
bmFnZXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hF
dmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuQnJlYWtw
b2ludFJlbW92ZWQsIHticmVha3BvaW50fSk7CiAgICAgfQogCisgICAgbmV4dEJyZWFrcG9pbnRB
Y3Rpb25JZGVudGlmaWVyKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9uZXh0QnJlYWtw
b2ludEFjdGlvbklkZW50aWZpZXIrKzsKKyAgICB9CisKKyAgICAvLyBQcm90ZWN0ZWQgKENhbGxl
ZCBmcm9tIFdlYkluc3BlY3Rvci5EZWJ1Z2dlck9ic2VydmVyKQorCiAgICAgYnJlYWtwb2ludFJl
c29sdmVkKGJyZWFrcG9pbnRJZGVudGlmaWVyLCBsb2NhdGlvbikKICAgICB7CiAgICAgICAgIC8v
IENhbGxlZCBmcm9tIFdlYkluc3BlY3Rvci5EZWJ1Z2dlck9ic2VydmVyLgpAQCAtNDQwLDcgKzQ2
Myw3IEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1hbmFnZXIgPSBjbGFzcyBEZWJ1Z2dlck1hbmFn
ZXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGJy
ZWFrcG9pbnQuaWRlbnRpZmllciA9PT0gYnJlYWtwb2ludElkZW50aWZpZXIpOwogCiAgICAgICAg
IGlmICghYnJlYWtwb2ludC5zb3VyY2VDb2RlTG9jYXRpb24uc291cmNlQ29kZSkgewotICAgICAg
ICAgICAgdmFyIHNvdXJjZUNvZGVMb2NhdGlvbiA9IHRoaXMuX3NvdXJjZUNvZGVMb2NhdGlvbkZy
b21QYXlsb2FkKGxvY2F0aW9uKTsKKyAgICAgICAgICAgIGxldCBzb3VyY2VDb2RlTG9jYXRpb24g
PSB0aGlzLl9zb3VyY2VDb2RlTG9jYXRpb25Gcm9tUGF5bG9hZChsb2NhdGlvbik7CiAgICAgICAg
ICAgICBicmVha3BvaW50LnNvdXJjZUNvZGVMb2NhdGlvbi5zb3VyY2VDb2RlID0gc291cmNlQ29k
ZUxvY2F0aW9uLnNvdXJjZUNvZGU7CiAgICAgICAgIH0KIApAQCAtNDUxLDcgKzQ3NCw3IEBAIFdl
Ykluc3BlY3Rvci5EZWJ1Z2dlck1hbmFnZXIgPSBjbGFzcyBEZWJ1Z2dlck1hbmFnZXIgZXh0ZW5k
cyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgewogICAgICAgICAvLyBDYWxsZWQgZnJvbSBXZWJJ
bnNwZWN0b3IuRGVidWdnZXJPYnNlcnZlci4KIAotICAgICAgICB2YXIgd2FzUGF1c2VkID0gdGhp
cy5fcGF1c2VkOworICAgICAgICBsZXQgd2FzUGF1c2VkID0gdGhpcy5fcGF1c2VkOwogCiAgICAg
ICAgIFdlYkluc3BlY3Rvci5TY3JpcHQucmVzZXRVbmlxdWVEaXNwbGF5TmFtZU51bWJlcnMoKTsK
IApAQCAtNDY3LDggKzQ5MCw3IEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1hbmFnZXIgPSBjbGFz
cyBEZWJ1Z2dlck1hbmFnZXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAKICAgICAgICAg
Ly8gTWFyayBhbGwgdGhlIGJyZWFrcG9pbnRzIGFzIHVucmVzb2x2ZWQuIFRoZXkgd2lsbCBiZSBy
ZXBvcnRlZCBhcyByZXNvbHZlZCB3aGVuCiAgICAgICAgIC8vIGJyZWFrcG9pbnRSZXNvbHZlZCBp
cyBjYWxsZWQgYXMgdGhlIHBhZ2UgbG9hZHMuCi0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
dGhpcy5fYnJlYWtwb2ludHMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIHZhciBicmVha3Bv
aW50ID0gdGhpcy5fYnJlYWtwb2ludHNbaV07CisgICAgICAgIGZvciAobGV0IGJyZWFrcG9pbnQg
b2YgdGhpcy5fYnJlYWtwb2ludHMpIHsKICAgICAgICAgICAgIGJyZWFrcG9pbnQucmVzb2x2ZWQg
PSBmYWxzZTsKICAgICAgICAgICAgIGlmIChicmVha3BvaW50LnNvdXJjZUNvZGVMb2NhdGlvbi5z
b3VyY2VDb2RlKQogICAgICAgICAgICAgICAgIGJyZWFrcG9pbnQuc291cmNlQ29kZUxvY2F0aW9u
LnNvdXJjZUNvZGUgPSBudWxsOwpAQCAtNTQ0LDExICs1NjYsMTUgQEAgV2ViSW5zcGVjdG9yLkRl
YnVnZ2VyTWFuYWdlciA9IGNsYXNzIERlYnVnZ2VyTWFuYWdlciBleHRlbmRzIFdlYkluc3BlY3Rv
ci5PYmplY3QKIAogICAgIHBsYXlCcmVha3BvaW50QWN0aW9uU291bmQoYnJlYWtwb2ludEFjdGlv
bklkZW50aWZpZXIpCiAgICAgeworICAgICAgICAvLyBDYWxsZWQgZnJvbSBXZWJJbnNwZWN0b3Iu
RGVidWdnZXJPYnNlcnZlci4KKwogICAgICAgICBJbnNwZWN0b3JGcm9udGVuZEhvc3QuYmVlcCgp
OwogICAgIH0KIAogICAgIHNjcmlwdERpZFBhcnNlKHNjcmlwdElkZW50aWZpZXIsIHVybCwgc3Rh
cnRMaW5lLCBzdGFydENvbHVtbiwgZW5kTGluZSwgZW5kQ29sdW1uLCBpc0NvbnRlbnRTY3JpcHQs
IHNvdXJjZVVSTCwgc291cmNlTWFwVVJMKQogICAgIHsKKyAgICAgICAgLy8gQ2FsbGVkIGZyb20g
V2ViSW5zcGVjdG9yLkRlYnVnZ2VyT2JzZXJ2ZXIuCisKICAgICAgICAgLy8gRG9uJ3QgYWRkIHRo
ZSBzY3JpcHQgYWdhaW4gaWYgaXQgaXMgYWxyZWFkeSBrbm93bi4KICAgICAgICAgaWYgKHRoaXMu
X3NjcmlwdElkTWFwLmhhcyhzY3JpcHRJZGVudGlmaWVyKSkgewogICAgICAgICAgICAgY29uc3Qg
c2NyaXB0ID0gdGhpcy5fc2NyaXB0SWRNYXAuZ2V0KHNjcmlwdElkZW50aWZpZXIpOwpAQCAtNTg5
LDIxICs2MTUsNiBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJNYW5hZ2VyID0gY2xhc3MgRGVidWdn
ZXJNYW5hZ2VyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAgICB0aGlzLmRpc3Bh
dGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlNj
cmlwdEFkZGVkLCB7c2NyaXB0fSk7CiAgICAgfQogCi0gICAgaXNCcmVha3BvaW50UmVtb3ZhYmxl
KGJyZWFrcG9pbnQpCi0gICAgewotICAgICAgICByZXR1cm4gYnJlYWtwb2ludCAhPT0gdGhpcy5f
YWxsRXhjZXB0aW9uc0JyZWFrcG9pbnQgJiYgYnJlYWtwb2ludCAhPT0gdGhpcy5fYWxsVW5jYXVn
aHRFeGNlcHRpb25zQnJlYWtwb2ludDsKLSAgICB9Ci0KLSAgICBpc0JyZWFrcG9pbnRFZGl0YWJs
ZShicmVha3BvaW50KQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuaXNCcmVha3BvaW50UmVt
b3ZhYmxlKGJyZWFrcG9pbnQpOwotICAgIH0KLQotICAgIGdldCBuZXh0QnJlYWtwb2ludEFjdGlv
bklkZW50aWZpZXIoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX25leHRCcmVha3BvaW50
QWN0aW9uSWRlbnRpZmllcisrOwotICAgIH0KLQogICAgIC8vIFByaXZhdGUKIAogICAgIF9zb3Vy
Y2VDb2RlTG9jYXRpb25Gcm9tUGF5bG9hZChwYXlsb2FkKQpAQCAtNzI5LDcgKzc0MCw3IEBAIFdl
Ykluc3BlY3Rvci5EZWJ1Z2dlck1hbmFnZXIgPSBjbGFzcyBEZWJ1Z2dlck1hbmFnZXIgZXh0ZW5k
cyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgICAgICAgICBpZiAoIShsb2NhdGlvbnMgaW5zdGFu
Y2VvZiBBcnJheSkpCiAgICAgICAgICAgICAgICAgbG9jYXRpb25zID0gW2xvY2F0aW9uc107CiAK
LSAgICAgICAgICAgIGZvciAodmFyIGxvY2F0aW9uIG9mIGxvY2F0aW9ucykKKyAgICAgICAgICAg
IGZvciAobGV0IGxvY2F0aW9uIG9mIGxvY2F0aW9ucykKICAgICAgICAgICAgICAgICB0aGlzLmJy
ZWFrcG9pbnRSZXNvbHZlZChicmVha3BvaW50SWRlbnRpZmllciwgbG9jYXRpb24pOwogCiAgICAg
ICAgICAgICBpZiAodHlwZW9mIGNhbGxiYWNrID09PSAiZnVuY3Rpb24iKQpAQCAtODAxLDcgKzgx
Miw3IEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1hbmFnZXIgPSBjbGFzcyBEZWJ1Z2dlck1hbmFn
ZXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgICAgIGlmICh0aGlzLl9pZ25vcmVC
cmVha3BvaW50RGlzcGxheUxvY2F0aW9uRGlkQ2hhbmdlRXZlbnQpCiAgICAgICAgICAgICByZXR1
cm47CiAKLSAgICAgICAgdmFyIGJyZWFrcG9pbnQgPSBldmVudC50YXJnZXQ7CisgICAgICAgIGxl
dCBicmVha3BvaW50ID0gZXZlbnQudGFyZ2V0OwogICAgICAgICBpZiAoIWJyZWFrcG9pbnQuaWRl
bnRpZmllciB8fCBicmVha3BvaW50LmRpc2FibGVkKQogICAgICAgICAgICAgcmV0dXJuOwogCkBA
IC04NjEsMTYgKzg3MiwxMSBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJNYW5hZ2VyID0gY2xhc3Mg
RGVidWdnZXJNYW5hZ2VyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogCiAgICAgICAgIGZ1
bmN0aW9uIGJyZWFrcG9pbnRSZW1vdmVkKCkKICAgICAgICAgewotICAgICAgICAgICAgLy8gQWRk
IHRoZSBicmVha3BvaW50IHdpdGggaXRzIG5ldyBjb25kaXRpb24gYW5kIGdldCBhIG5ldyBpZC4K
KyAgICAgICAgICAgIC8vIEFkZCB0aGUgYnJlYWtwb2ludCB3aXRoIGl0cyBuZXcgcHJvcGVydGll
cyBhbmQgZ2V0IGEgbmV3IGlkLgogICAgICAgICAgICAgdGhpcy5fc2V0QnJlYWtwb2ludChicmVh
a3BvaW50KTsKICAgICAgICAgfQogICAgIH0KIAotICAgIGdldCBicmVha3BvaW50c0Rpc2FibGVk
VGVtcG9yYXJpbHkoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX3RlbXBvcmFyaWx5RGlz
YWJsZWRCcmVha3BvaW50c1Jlc3RvcmVTZXR0aW5nLnZhbHVlICE9PSBudWxsOwotICAgIH0KLQog
ICAgIF9zdGFydERpc2FibGluZ0JyZWFrcG9pbnRzVGVtcG9yYXJpbHkoKQogICAgIHsKICAgICAg
ICAgY29uc29sZS5hc3NlcnQoIXRoaXMuYnJlYWtwb2ludHNEaXNhYmxlZFRlbXBvcmFyaWx5LCAi
QWxyZWFkeSB0ZW1wb3JhcmlseSBkaXNhYmxpbmcgYnJlYWtwb2ludHMuIik7CkBAIC05MzYsNyAr
OTQyLDcgQEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTWFuYWdlciA9IGNsYXNzIERlYnVnZ2VyTWFu
YWdlciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIAogICAgIF91cGRhdGVCcmVha09uRXhj
ZXB0aW9uc1N0YXRlKCkKICAgICB7Ci0gICAgICAgIHZhciBzdGF0ZSA9ICJub25lIjsKKyAgICAg
ICAgbGV0IHN0YXRlID0gIm5vbmUiOwogCiAgICAgICAgIGlmICh0aGlzLl9icmVha3BvaW50c0Vu
YWJsZWRTZXR0aW5nLnZhbHVlKSB7CiAgICAgICAgICAgICBpZiAoIXRoaXMuX2FsbEV4Y2VwdGlv
bnNCcmVha3BvaW50LmRpc2FibGVkKQpAQCAtOTc1LDkgKzk4MSw4IEBAIFdlYkluc3BlY3Rvci5E
ZWJ1Z2dlck1hbmFnZXIgPSBjbGFzcyBEZWJ1Z2dlck1hbmFnZXIgZXh0ZW5kcyBXZWJJbnNwZWN0
b3IuT2JqZWN0CiAgICAgewogICAgICAgICB0aGlzLl9pZ25vcmVCcmVha3BvaW50RGlzcGxheUxv
Y2F0aW9uRGlkQ2hhbmdlRXZlbnQgPSB0cnVlOwogCi0gICAgICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgYnJlYWtwb2ludHMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIHZhciBicmVha3BvaW50
ID0gYnJlYWtwb2ludHNbaV07Ci0gICAgICAgICAgICBpZiAoYnJlYWtwb2ludC5zb3VyY2VDb2Rl
TG9jYXRpb24uc291cmNlQ29kZSA9PT0gbnVsbCkKKyAgICAgICAgZm9yIChsZXQgYnJlYWtwb2lu
dCBvZiBicmVha3BvaW50cykgeworICAgICAgICAgICAgaWYgKCFicmVha3BvaW50LnNvdXJjZUNv
ZGVMb2NhdGlvbi5zb3VyY2VDb2RlKQogICAgICAgICAgICAgICAgIGJyZWFrcG9pbnQuc291cmNl
Q29kZUxvY2F0aW9uLnNvdXJjZUNvZGUgPSBzb3VyY2VDb2RlOwogICAgICAgICAgICAgLy8gU291
cmNlQ29kZXMgY2FuIGJlIHVuZXF1YWwgaWYgdGhlIFNvdXJjZUNvZGVMb2NhdGlvbiBpcyBhc3Nv
Y2lhdGVkIHdpdGggYSBTY3JpcHQgYW5kIHdlIGFyZSBsb29raW5nIGF0IHRoZSBSZXNvdXJjZS4K
ICAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGJyZWFrcG9pbnQuc291cmNlQ29kZUxvY2F0aW9u
LnNvdXJjZUNvZGUgPT09IHNvdXJjZUNvZGUgfHwgYnJlYWtwb2ludC5zb3VyY2VDb2RlTG9jYXRp
b24uc291cmNlQ29kZS5jb250ZW50SWRlbnRpZmllciA9PT0gc291cmNlQ29kZS5jb250ZW50SWRl
bnRpZmllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Nb2RlbHMvQnJlYWtwb2ludEFjdGlvbi5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL01vZGVscy9CcmVha3BvaW50QWN0aW9uLmpzCmluZGV4IGUxOTc0MzQuLjcxMjQ5
YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVs
cy9CcmVha3BvaW50QWN0aW9uLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL01vZGVscy9CcmVha3BvaW50QWN0aW9uLmpzCkBAIC00NCw3ICs0NCw3IEBAIFdlYklu
c3BlY3Rvci5CcmVha3BvaW50QWN0aW9uID0gY2xhc3MgQnJlYWtwb2ludEFjdGlvbiBleHRlbmRz
IFdlYkluc3BlY3Rvci5PYmplCiAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCJVbmV4cGVjdGVk
IHR5cGUgcGFzc2VkIHRvIFdlYkluc3BlY3Rvci5CcmVha3BvaW50QWN0aW9uIik7CiAKICAgICAg
ICAgY29uc29sZS5hc3NlcnQodHlwZW9mIHRoaXMuX3R5cGUgPT09ICJzdHJpbmciKTsKLSAgICAg
ICAgdGhpcy5faWQgPSBXZWJJbnNwZWN0b3IuZGVidWdnZXJNYW5hZ2VyLm5leHRCcmVha3BvaW50
QWN0aW9uSWRlbnRpZmllcjsKKyAgICAgICAgdGhpcy5faWQgPSBXZWJJbnNwZWN0b3IuZGVidWdn
ZXJNYW5hZ2VyLm5leHRCcmVha3BvaW50QWN0aW9uSWRlbnRpZmllcigpOwogICAgIH0KIAogICAg
IC8vIFB1YmxpYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvU291cmNlQ29kZVRleHRFZGl0b3IuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9Tb3VyY2VDb2RlVGV4dEVkaXRvci5qcwppbmRleCBjNTYxMDIx
Li5lZTg3NjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9Tb3VyY2VDb2RlVGV4dEVkaXRvci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9Tb3VyY2VDb2RlVGV4dEVkaXRvci5qcwpAQCAtMTEwNCw5
ICsxMTA0LDggQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yID0gY2xhc3MgU291
cmNlQ29kZVRleHRFZGl0b3IgZXh0ZW5kcyBXZWJJbnNwZWMKICAgICAgICAgdGhpcy5fYWRkQnJl
YWtwb2ludFdpdGhFZGl0b3JMaW5lSW5mbyhicmVha3BvaW50LCBsaW5lSW5mbyk7CiAKICAgICAg
ICAgdGhpcy5faWdub3JlQnJlYWtwb2ludEFkZGVkQnJlYWtwb2ludCA9IGJyZWFrcG9pbnQ7Ci0g
ICAgICAgIHZhciBzaG91bGRTa2lwRXZlbnREaXNwYXRjaCA9IGZhbHNlOwotICAgICAgICB2YXIg
c2hvdWxkU3BlY3VsYXRpdmVseVJlc29sdmVCcmVha3BvaW50ID0gdHJ1ZTsKLSAgICAgICAgV2Vi
SW5zcGVjdG9yLmRlYnVnZ2VyTWFuYWdlci5hZGRCcmVha3BvaW50KGJyZWFrcG9pbnQsIHNob3Vs
ZFNraXBFdmVudERpc3BhdGNoLCBzaG91bGRTcGVjdWxhdGl2ZWx5UmVzb2x2ZUJyZWFrcG9pbnQp
OworICAgICAgICBjb25zdCBzaG91bGRTcGVjdWxhdGl2ZWx5UmVzb2x2ZUJyZWFrcG9pbnQgPSB0
cnVlOworICAgICAgICBXZWJJbnNwZWN0b3IuZGVidWdnZXJNYW5hZ2VyLmFkZEJyZWFrcG9pbnQo
YnJlYWtwb2ludCwgc2hvdWxkU3BlY3VsYXRpdmVseVJlc29sdmVCcmVha3BvaW50KTsKICAgICAg
ICAgdGhpcy5faWdub3JlQnJlYWtwb2ludEFkZGVkQnJlYWtwb2ludCA9IG51bGw7CiAKICAgICAg
ICAgLy8gUmV0dXJuIHRoZSBtb3JlIGFjY3VyYXRlIGxvY2F0aW9uIGFuZCBicmVha3BvaW50IGlu
Zm8uCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>291507</attachid>
            <date>2016-10-13 13:01:50 -0700</date>
            <delta_ts>2016-10-14 15:38:26 -0700</delta_ts>
            <desc>[PATCH] Proposed Fix</desc>
            <filename>cleanup-2.patch</filename>
            <type>text/plain</type>
            <size>26955</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDJlMzQyODAuLmZjNTRlZGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDcxIEBACiAyMDE2LTEwLTEzICBKb3NlcGggUGVjb3Jh
cm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQ2xlYW51
cCBwYXJ0cyBvZiBEZWJ1Z2dlck1hbmFnZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE2MzQwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9Db250cm9sbGVycy9EZWJ1Z2dlck1h
bmFnZXIuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdnZXJNYW5hZ2VyLnJlc3RvcmVC
cmVha3BvaW50c1Nvb24pOgorCisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdnZXJNYW5hZ2Vy
LnByb3RvdHlwZS5nZXQgcGF1c2VkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1h
bmFnZXIucHJvdG90eXBlLmdldCBwYXVzZVJlYXNvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
RGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5nZXQgcGF1c2VEYXRhKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBlLmdldCBjYWxsRnJhbWVzKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBlLmdldCBhY3RpdmVDYWxs
RnJhbWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTWFuYWdlci5wcm90b3R5cGUu
c2V0IGFjdGl2ZUNhbGxGcmFtZSk6CisgICAgICAgIFB1dCBzaW1wbGUgYWNjZXNzb3JzIGF0IHRo
ZSB0b3AuCisKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBl
LmdldCBhbGxFeGNlcHRpb25zQnJlYWtwb2ludCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVi
dWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5nZXQgYWxsVW5jYXVnaHRFeGNlcHRpb25zQnJlYWtwb2lu
dCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5nZXQg
YnJlYWtwb2ludHMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTWFuYWdlci5wcm90
b3R5cGUuYnJlYWtwb2ludEZvcklkZW50aWZpZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRl
YnVnZ2VyTWFuYWdlci5wcm90b3R5cGUuYnJlYWtwb2ludHNGb3JTb3VyY2VDb2RlKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBlLmlzQnJlYWtwb2ludFJl
bW92YWJsZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdnZXJNYW5hZ2VyLnByb3RvdHlw
ZS5pc0JyZWFrcG9pbnRFZGl0YWJsZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdnZXJN
YW5hZ2VyLnByb3RvdHlwZS5nZXQgYnJlYWtwb2ludHNEaXNhYmxlZFRlbXBvcmFyaWx5KToKKyAg
ICAgICAgR3JvdXAgcHVibGljIGJyZWFrcG9pbnQgc3RhdGUgYW5kIGFjY2VzcyBtZXRob2RzLgor
CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5zY3JpcHRG
b3JJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1hbmFnZXIucHJv
dG90eXBlLnNjcmlwdHNGb3JVUkwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTWFu
YWdlci5wcm90b3R5cGUuZ2V0IHNlYXJjaGFibGVTY3JpcHRzKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBlLmdldCBrbm93bk5vblJlc291cmNlU2NyaXB0
cyk6CisgICAgICAgIEdyb3VwIHB1YmxpYyBzY3JpcHQgYWNjZXNzIG1ldGhvZHMuCisKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBlLnBhdXNlKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBlLnJlc3VtZSk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuRGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5zdGVwT3Zlcik6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5zdGVwSW50byk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5zdGVwT3V0
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBlLmNvbnRp
bnVlVG9Mb2NhdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdnZXJNYW5hZ2VyLnBy
b3RvdHlwZS5hZGRCcmVha3BvaW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1h
bmFnZXIucHJvdG90eXBlLnJlbW92ZUJyZWFrcG9pbnQpOgorICAgICAgICBHcm91cCBhbmQgbW9k
ZXJuaXplIHB1YmxpYyBtZXRob2RzIHRoYXQgcGVyZm9ybSBhY3Rpb25zLgorCisgICAgICAgIChX
ZWJJbnNwZWN0b3IuRGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5uZXh0QnJlYWtwb2ludEFjdGlv
bklkZW50aWZpZXIpOgorICAgICAgICBNaXNjLiBtZXRob2RzLgorCisgICAgICAgIChXZWJJbnNw
ZWN0b3IuRGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5icmVha3BvaW50UmVzb2x2ZWQpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTWFuYWdlci5wcm90b3R5cGUucmVzZXQpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTWFuYWdlci5wcm90b3R5cGUucGxheUJyZWFrcG9p
bnRBY3Rpb25Tb3VuZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdnZXJNYW5hZ2VyLnBy
b3RvdHlwZS5zY3JpcHREaWRQYXJzZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdnZXJN
YW5hZ2VyLnByb3RvdHlwZS5fc2V0QnJlYWtwb2ludC5kaWRTZXRCcmVha3BvaW50KToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBlLl9zZXRCcmVha3BvaW50
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBlLl9icmVh
a3BvaW50RWRpdGFibGVQcm9wZXJ0eURpZENoYW5nZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
RGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5fdXBkYXRlQnJlYWtPbkV4Y2VwdGlvbnNTdGF0ZSk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5fYXNzb2Np
YXRlQnJlYWtwb2ludHNXaXRoU291cmNlQ29kZSk6CisgICAgICAgIE1pbm9yIGNsZWFudXAgaW4g
cHJvdGVjdGVkIGFuZCBwcml2YXRlIG1ldGhvZHMuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNl
L01vZGVscy9CcmVha3BvaW50QWN0aW9uLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkJyZWFr
cG9pbnRBY3Rpb24pOgorICAgICAgICBHZXR0aW5nIHRoZSBuZXh0IGlkZW50aWZpZXIgaXMgYW4g
YWN0aW9uIHNvIGl0IHNob3VsZCBiZSBhIGZ1bmN0aW9uIGNhbGwuCisKKyAgICAgICAgKiBVc2Vy
SW50ZXJmYWNlL1ZpZXdzL1NvdXJjZUNvZGVUZXh0RWRpdG9yLmpzOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yLnByb3RvdHlwZS50ZXh0RWRpdG9yQnJlYWtwb2lu
dEFkZGVkKToKKyAgICAgICAgUmVtb3ZlIHVudXNlZCBwYXJhbWV0ZXIuCisKKzIwMTYtMTAtMTMg
IEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKwogICAgICAgICBXZWIgSW5z
cGVjdG9yOiBVbnVzZWQgQnJlYWtwb2ludCBnZXR0ZXIvc2V0dGVyIGZvciAiaWQiIC0gc2hvdWxk
IGJlICJpZGVudGlmaWVyIgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTYzMzk1CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL0NvbnRyb2xsZXJzL0RlYnVnZ2VyTWFuYWdlci5qcyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0RlYnVnZ2VyTWFuYWdlci5qcwppbmRl
eCBhZDg5MjFiLi4xYWQ4MzYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Db250cm9sbGVycy9EZWJ1Z2dlck1hbmFnZXIuanMKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRGVidWdnZXJNYW5hZ2VyLmpz
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCwgMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTQ4LDcgKzQ4LDcgQEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTWFuYWdlciA9
IGNsYXNzIERlYnVnZ2VyTWFuYWdlciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAgICAg
ICAgdGhpcy5fYWxsRXhjZXB0aW9uc0JyZWFrcG9pbnRFbmFibGVkU2V0dGluZyA9IG5ldyBXZWJJ
bnNwZWN0b3IuU2V0dGluZygiYnJlYWstb24tYWxsLWV4Y2VwdGlvbnMiLCBmYWxzZSk7CiAgICAg
ICAgIHRoaXMuX2FsbFVuY2F1Z2h0RXhjZXB0aW9uc0JyZWFrcG9pbnRFbmFibGVkU2V0dGluZyA9
IG5ldyBXZWJJbnNwZWN0b3IuU2V0dGluZygiYnJlYWstb24tYWxsLXVuY2F1Z2h0LWV4Y2VwdGlv
bnMiLCBmYWxzZSk7CiAKLSAgICAgICAgdmFyIHNwZWNpYWxCcmVha3BvaW50TG9jYXRpb24gPSBu
ZXcgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVMb2NhdGlvbihudWxsLCBJbmZpbml0eSwgSW5maW5p
dHkpOworICAgICAgICBsZXQgc3BlY2lhbEJyZWFrcG9pbnRMb2NhdGlvbiA9IG5ldyBXZWJJbnNw
ZWN0b3IuU291cmNlQ29kZUxvY2F0aW9uKG51bGwsIEluZmluaXR5LCBJbmZpbml0eSk7CiAKICAg
ICAgICAgdGhpcy5fYWxsRXhjZXB0aW9uc0JyZWFrcG9pbnQgPSBuZXcgV2ViSW5zcGVjdG9yLkJy
ZWFrcG9pbnQoc3BlY2lhbEJyZWFrcG9pbnRMb2NhdGlvbiwgIXRoaXMuX2FsbEV4Y2VwdGlvbnNC
cmVha3BvaW50RW5hYmxlZFNldHRpbmcudmFsdWUpOwogICAgICAgICB0aGlzLl9hbGxFeGNlcHRp
b25zQnJlYWtwb2ludC5yZXNvbHZlZCA9IHRydWU7CkBAIC04NSw5ICs4NSwxMSBAQCBXZWJJbnNw
ZWN0b3IuRGVidWdnZXJNYW5hZ2VyID0gY2xhc3MgRGVidWdnZXJNYW5hZ2VyIGV4dGVuZHMgV2Vi
SW5zcGVjdG9yLk9iamVjdAogCiAgICAgICAgIHRoaXMuX3VwZGF0ZUJyZWFrT25FeGNlcHRpb25z
U3RhdGUoKTsKIAorICAgICAgICB0aGlzLl9pZ25vcmVCcmVha3BvaW50RGlzcGxheUxvY2F0aW9u
RGlkQ2hhbmdlRXZlbnQgPSBmYWxzZTsKKwogICAgICAgICBmdW5jdGlvbiByZXN0b3JlQnJlYWtw
b2ludHNTb29uKCkgewogICAgICAgICAgICAgdGhpcy5fcmVzdG9yaW5nQnJlYWtwb2ludHMgPSB0
cnVlOwotICAgICAgICAgICAgZm9yICh2YXIgY29va2llIG9mIHRoaXMuX2JyZWFrcG9pbnRzU2V0
dGluZy52YWx1ZSkKKyAgICAgICAgICAgIGZvciAobGV0IGNvb2tpZSBvZiB0aGlzLl9icmVha3Bv
aW50c1NldHRpbmcudmFsdWUpCiAgICAgICAgICAgICAgICAgdGhpcy5hZGRCcmVha3BvaW50KG5l
dyBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludChjb29raWUpKTsKICAgICAgICAgICAgIHRoaXMuX3Jl
c3RvcmluZ0JyZWFrcG9pbnRzID0gZmFsc2U7CiAgICAgICAgIH0KQEAgLTk5LDI5ICsxMDEsNiBA
QCBXZWJJbnNwZWN0b3IuRGVidWdnZXJNYW5hZ2VyID0gY2xhc3MgRGVidWdnZXJNYW5hZ2VyIGV4
dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogCiAgICAgLy8gUHVibGljCiAKLSAgICBnZXQgYnJl
YWtwb2ludHNFbmFibGVkKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9icmVha3BvaW50
c0VuYWJsZWRTZXR0aW5nLnZhbHVlOwotICAgIH0KLQotICAgIHNldCBicmVha3BvaW50c0VuYWJs
ZWQoZW5hYmxlZCkKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzLl9icmVha3BvaW50c0VuYWJsZWRT
ZXR0aW5nLnZhbHVlID09PSBlbmFibGVkKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAg
IGNvbnNvbGUuYXNzZXJ0KCEoZW5hYmxlZCAmJiB0aGlzLmJyZWFrcG9pbnRzRGlzYWJsZWRUZW1w
b3JhcmlseSksICJTaG91bGQgbm90IGVuYWJsZSBicmVha3BvaW50cyB3aGVuIHdlIGFyZSB0ZW1w
b3JhcmlseSBkaXNhYmxpbmcgYnJlYWtwb2ludHMuIik7Ci0gICAgICAgIGlmIChlbmFibGVkICYm
IHRoaXMuYnJlYWtwb2ludHNEaXNhYmxlZFRlbXBvcmFyaWx5KQotICAgICAgICAgICAgcmV0dXJu
OwotCi0gICAgICAgIHRoaXMuX2JyZWFrcG9pbnRzRW5hYmxlZFNldHRpbmcudmFsdWUgPSBlbmFi
bGVkOwotCi0gICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rv
ci5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuQnJlYWtwb2ludHNFbmFibGVkRGlkQ2hhbmdlKTsKLQot
ICAgICAgICBEZWJ1Z2dlckFnZW50LnNldEJyZWFrcG9pbnRzQWN0aXZlKGVuYWJsZWQpOwotCi0g
ICAgICAgIHRoaXMuX3VwZGF0ZUJyZWFrT25FeGNlcHRpb25zU3RhdGUoKTsKLSAgICB9Ci0KICAg
ICBnZXQgcGF1c2VkKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9wYXVzZWQ7CkBAIC0x
NTcsMTEzICsxMzYsNiBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJNYW5hZ2VyID0gY2xhc3MgRGVi
dWdnZXJNYW5hZ2VyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAgICB0aGlzLmRp
c3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRGVidWdnZXJNYW5hZ2VyLkV2ZW50
LkFjdGl2ZUNhbGxGcmFtZURpZENoYW5nZSk7CiAgICAgfQogCi0gICAgcGF1c2UoKQotICAgIHsK
LSAgICAgICAgaWYgKHRoaXMuX3BhdXNlZCkKLSAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJl
c29sdmUoKTsKLQotICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNw
ZWN0b3IuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LldhaXRpbmdUb1BhdXNlKTsKLQotICAgICAgICB2
YXIgbGlzdGVuZXIgPSBuZXcgV2ViSW5zcGVjdG9yLkV2ZW50TGlzdGVuZXIodGhpcywgdHJ1ZSk7
Ci0KLSAgICAgICAgdmFyIG1hbmFnZXJSZXN1bHQgPSBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNv
bHZlLCByZWplY3QpIHsKLSAgICAgICAgICAgIGxpc3RlbmVyLmNvbm5lY3QoV2ViSW5zcGVjdG9y
LmRlYnVnZ2VyTWFuYWdlciwgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5QYXVz
ZWQsIHJlc29sdmUpOwotICAgICAgICB9KTsKLQotICAgICAgICB2YXIgcHJvdG9jb2xSZXN1bHQg
PSBEZWJ1Z2dlckFnZW50LnBhdXNlKCkKLSAgICAgICAgICAgIC5jYXRjaChmdW5jdGlvbihlcnJv
cikgewotICAgICAgICAgICAgICAgIGxpc3RlbmVyLmRpc2Nvbm5lY3QoKTsKLSAgICAgICAgICAg
ICAgICBjb25zb2xlLmVycm9yKCJEZWJ1Z2dlck1hbmFnZXIucGF1c2UgZmFpbGVkOiAiLCBlcnJv
cik7Ci0gICAgICAgICAgICAgICAgdGhyb3cgZXJyb3I7Ci0gICAgICAgICAgICB9KTsKLQotICAg
ICAgICByZXR1cm4gUHJvbWlzZS5hbGwoW21hbmFnZXJSZXN1bHQsIHByb3RvY29sUmVzdWx0XSk7
Ci0gICAgfQotCi0gICAgcmVzdW1lKCkKLSAgICB7Ci0gICAgICAgIGlmICghdGhpcy5fcGF1c2Vk
KQotICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpOwotCi0gICAgICAgIHZhciBs
aXN0ZW5lciA9IG5ldyBXZWJJbnNwZWN0b3IuRXZlbnRMaXN0ZW5lcih0aGlzLCB0cnVlKTsKLQot
ICAgICAgICB2YXIgbWFuYWdlclJlc3VsdCA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUs
IHJlamVjdCkgewotICAgICAgICAgICAgbGlzdGVuZXIuY29ubmVjdChXZWJJbnNwZWN0b3IuZGVi
dWdnZXJNYW5hZ2VyLCBXZWJJbnNwZWN0b3IuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlJlc3VtZWQs
IHJlc29sdmUpOwotICAgICAgICB9KTsKLQotICAgICAgICB2YXIgcHJvdG9jb2xSZXN1bHQgPSBE
ZWJ1Z2dlckFnZW50LnJlc3VtZSgpCi0gICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24oZXJyb3Ip
IHsKLSAgICAgICAgICAgICAgICBsaXN0ZW5lci5kaXNjb25uZWN0KCk7Ci0gICAgICAgICAgICAg
ICAgY29uc29sZS5lcnJvcigiRGVidWdnZXJNYW5hZ2VyLnJlc3VtZSBmYWlsZWQ6ICIsIGVycm9y
KTsKLSAgICAgICAgICAgICAgICB0aHJvdyBlcnJvcjsKLSAgICAgICAgICAgIH0pOwotCi0gICAg
ICAgIHJldHVybiBQcm9taXNlLmFsbChbbWFuYWdlclJlc3VsdCwgcHJvdG9jb2xSZXN1bHRdKTsK
LSAgICB9Ci0KLSAgICBzdGVwT3ZlcigpCi0gICAgewotICAgICAgICBpZiAoIXRoaXMuX3BhdXNl
ZCkKLSAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoIkNhbm5vdCBz
dGVwIG92ZXIgYmVjYXVzZSBkZWJ1Z2dlciBpcyBub3QgcGF1c2VkLiIpKTsKLQotICAgICAgICB2
YXIgbGlzdGVuZXIgPSBuZXcgV2ViSW5zcGVjdG9yLkV2ZW50TGlzdGVuZXIodGhpcywgdHJ1ZSk7
Ci0KLSAgICAgICAgdmFyIG1hbmFnZXJSZXN1bHQgPSBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNv
bHZlLCByZWplY3QpIHsKLSAgICAgICAgICAgIGxpc3RlbmVyLmNvbm5lY3QoV2ViSW5zcGVjdG9y
LmRlYnVnZ2VyTWFuYWdlciwgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5BY3Rp
dmVDYWxsRnJhbWVEaWRDaGFuZ2UsIHJlc29sdmUpOwotICAgICAgICB9KTsKLQotICAgICAgICB2
YXIgcHJvdG9jb2xSZXN1bHQgPSBEZWJ1Z2dlckFnZW50LnN0ZXBPdmVyKCkKLSAgICAgICAgICAg
IC5jYXRjaChmdW5jdGlvbihlcnJvcikgewotICAgICAgICAgICAgICAgIGxpc3RlbmVyLmRpc2Nv
bm5lY3QoKTsKLSAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCJEZWJ1Z2dlck1hbmFnZXIu
c3RlcE92ZXIgZmFpbGVkOiAiLCBlcnJvcik7Ci0gICAgICAgICAgICAgICAgdGhyb3cgZXJyb3I7
Ci0gICAgICAgICAgICB9KTsKLQotICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoW21hbmFnZXJS
ZXN1bHQsIHByb3RvY29sUmVzdWx0XSk7Ci0gICAgfQotCi0gICAgc3RlcEludG8oKQotICAgIHsK
LSAgICAgICAgaWYgKCF0aGlzLl9wYXVzZWQpCi0gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5y
ZWplY3QobmV3IEVycm9yKCJDYW5ub3Qgc3RlcCBpbnRvIGJlY2F1c2UgZGVidWdnZXIgaXMgbm90
IHBhdXNlZC4iKSk7Ci0KLSAgICAgICAgdmFyIGxpc3RlbmVyID0gbmV3IFdlYkluc3BlY3Rvci5F
dmVudExpc3RlbmVyKHRoaXMsIHRydWUpOwotCi0gICAgICAgIHZhciBtYW5hZ2VyUmVzdWx0ID0g
bmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7Ci0gICAgICAgICAgICBsaXN0
ZW5lci5jb25uZWN0KFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1hbmFnZXIsIFdlYkluc3BlY3Rvci5E
ZWJ1Z2dlck1hbmFnZXIuRXZlbnQuQWN0aXZlQ2FsbEZyYW1lRGlkQ2hhbmdlLCByZXNvbHZlKTsK
LSAgICAgICAgfSk7Ci0KLSAgICAgICAgdmFyIHByb3RvY29sUmVzdWx0ID0gRGVidWdnZXJBZ2Vu
dC5zdGVwSW50bygpCi0gICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24oZXJyb3IpIHsKLSAgICAg
ICAgICAgICAgICBsaXN0ZW5lci5kaXNjb25uZWN0KCk7Ci0gICAgICAgICAgICAgICAgY29uc29s
ZS5lcnJvcigiRGVidWdnZXJNYW5hZ2VyLnN0ZXBJbnRvIGZhaWxlZDogIiwgZXJyb3IpOwotICAg
ICAgICAgICAgICAgIHRocm93IGVycm9yOwotICAgICAgICAgICAgfSk7Ci0KLSAgICAgICAgcmV0
dXJuIFByb21pc2UuYWxsKFttYW5hZ2VyUmVzdWx0LCBwcm90b2NvbFJlc3VsdF0pOwotICAgIH0K
LQotICAgIHN0ZXBPdXQoKQotICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLl9wYXVzZWQpCi0gICAg
ICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCJDYW5ub3Qgc3RlcCBvdXQg
YmVjYXVzZSBkZWJ1Z2dlciBpcyBub3QgcGF1c2VkLiIpKTsKLQotICAgICAgICB2YXIgbGlzdGVu
ZXIgPSBuZXcgV2ViSW5zcGVjdG9yLkV2ZW50TGlzdGVuZXIodGhpcywgdHJ1ZSk7Ci0KLSAgICAg
ICAgdmFyIG1hbmFnZXJSZXN1bHQgPSBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWpl
Y3QpIHsKLSAgICAgICAgICAgIGxpc3RlbmVyLmNvbm5lY3QoV2ViSW5zcGVjdG9yLmRlYnVnZ2Vy
TWFuYWdlciwgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5BY3RpdmVDYWxsRnJh
bWVEaWRDaGFuZ2UsIHJlc29sdmUpOwotICAgICAgICB9KTsKLQotICAgICAgICB2YXIgcHJvdG9j
b2xSZXN1bHQgPSBEZWJ1Z2dlckFnZW50LnN0ZXBPdXQoKQotICAgICAgICAgICAgLmNhdGNoKGZ1
bmN0aW9uKGVycm9yKSB7Ci0gICAgICAgICAgICAgICAgbGlzdGVuZXIuZGlzY29ubmVjdCgpOwot
ICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoIkRlYnVnZ2VyTWFuYWdlci5zdGVwT3V0IGZh
aWxlZDogIiwgZXJyb3IpOwotICAgICAgICAgICAgICAgIHRocm93IGVycm9yOwotICAgICAgICAg
ICAgfSk7Ci0KLSAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKFttYW5hZ2VyUmVzdWx0LCBwcm90
b2NvbFJlc3VsdF0pOwotICAgIH0KLQogICAgIGdldCBhbGxFeGNlcHRpb25zQnJlYWtwb2ludCgp
CiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fYWxsRXhjZXB0aW9uc0JyZWFrcG9pbnQ7CkBA
IC0yNzksMTIgKzE1MSwxNyBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJNYW5hZ2VyID0gY2xhc3Mg
RGVidWdnZXJNYW5hZ2VyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAgICByZXR1
cm4gdGhpcy5fYnJlYWtwb2ludHM7CiAgICAgfQogCisgICAgYnJlYWtwb2ludEZvcklkZW50aWZp
ZXIoaWQpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fYnJlYWtwb2ludElkTWFwLmdldChp
ZCkgfHwgbnVsbDsKKyAgICB9CisKICAgICBicmVha3BvaW50c0ZvclNvdXJjZUNvZGUoc291cmNl
Q29kZSkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHNvdXJjZUNvZGUgaW5zdGFuY2Vv
ZiBXZWJJbnNwZWN0b3IuUmVzb3VyY2UgfHwgc291cmNlQ29kZSBpbnN0YW5jZW9mIFdlYkluc3Bl
Y3Rvci5TY3JpcHQpOwogCiAgICAgICAgIGlmIChzb3VyY2VDb2RlIGluc3RhbmNlb2YgV2ViSW5z
cGVjdG9yLlNvdXJjZU1hcFJlc291cmNlKSB7Ci0gICAgICAgICAgICB2YXIgb3JpZ2luYWxTb3Vy
Y2VDb2RlQnJlYWtwb2ludHMgPSB0aGlzLmJyZWFrcG9pbnRzRm9yU291cmNlQ29kZShzb3VyY2VD
b2RlLnNvdXJjZU1hcC5vcmlnaW5hbFNvdXJjZUNvZGUpOworICAgICAgICAgICAgbGV0IG9yaWdp
bmFsU291cmNlQ29kZUJyZWFrcG9pbnRzID0gdGhpcy5icmVha3BvaW50c0ZvclNvdXJjZUNvZGUo
c291cmNlQ29kZS5zb3VyY2VNYXAub3JpZ2luYWxTb3VyY2VDb2RlKTsKICAgICAgICAgICAgIHJl
dHVybiBvcmlnaW5hbFNvdXJjZUNvZGVCcmVha3BvaW50cy5maWx0ZXIoZnVuY3Rpb24oYnJlYWtw
b2ludCkgewogICAgICAgICAgICAgICAgIHJldHVybiBicmVha3BvaW50LnNvdXJjZUNvZGVMb2Nh
dGlvbi5kaXNwbGF5U291cmNlQ29kZSA9PT0gc291cmNlQ29kZTsKICAgICAgICAgICAgIH0pOwpA
QCAtMzA3LDkgKzE4NCw0MiBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJNYW5hZ2VyID0gY2xhc3Mg
RGVidWdnZXJNYW5hZ2VyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAgICByZXR1
cm4gW107CiAgICAgfQogCi0gICAgYnJlYWtwb2ludEZvcklkZW50aWZpZXIoaWQpCisgICAgaXNC
cmVha3BvaW50UmVtb3ZhYmxlKGJyZWFrcG9pbnQpCiAgICAgewotICAgICAgICByZXR1cm4gdGhp
cy5fYnJlYWtwb2ludElkTWFwLmdldChpZCkgfHwgbnVsbDsKKyAgICAgICAgcmV0dXJuIGJyZWFr
cG9pbnQgIT09IHRoaXMuX2FsbEV4Y2VwdGlvbnNCcmVha3BvaW50ICYmIGJyZWFrcG9pbnQgIT09
IHRoaXMuX2FsbFVuY2F1Z2h0RXhjZXB0aW9uc0JyZWFrcG9pbnQ7CisgICAgfQorCisgICAgaXNC
cmVha3BvaW50RWRpdGFibGUoYnJlYWtwb2ludCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlz
LmlzQnJlYWtwb2ludFJlbW92YWJsZShicmVha3BvaW50KTsKKyAgICB9CisKKyAgICBnZXQgYnJl
YWtwb2ludHNFbmFibGVkKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9icmVha3BvaW50
c0VuYWJsZWRTZXR0aW5nLnZhbHVlOworICAgIH0KKworICAgIHNldCBicmVha3BvaW50c0VuYWJs
ZWQoZW5hYmxlZCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9icmVha3BvaW50c0VuYWJsZWRT
ZXR0aW5nLnZhbHVlID09PSBlbmFibGVkKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
IGNvbnNvbGUuYXNzZXJ0KCEoZW5hYmxlZCAmJiB0aGlzLmJyZWFrcG9pbnRzRGlzYWJsZWRUZW1w
b3JhcmlseSksICJTaG91bGQgbm90IGVuYWJsZSBicmVha3BvaW50cyB3aGVuIHdlIGFyZSB0ZW1w
b3JhcmlseSBkaXNhYmxpbmcgYnJlYWtwb2ludHMuIik7CisgICAgICAgIGlmIChlbmFibGVkICYm
IHRoaXMuYnJlYWtwb2ludHNEaXNhYmxlZFRlbXBvcmFyaWx5KQorICAgICAgICAgICAgcmV0dXJu
OworCisgICAgICAgIHRoaXMuX2JyZWFrcG9pbnRzRW5hYmxlZFNldHRpbmcudmFsdWUgPSBlbmFi
bGVkOworCisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rv
ci5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuQnJlYWtwb2ludHNFbmFibGVkRGlkQ2hhbmdlKTsKKwor
ICAgICAgICBEZWJ1Z2dlckFnZW50LnNldEJyZWFrcG9pbnRzQWN0aXZlKGVuYWJsZWQpOworCisg
ICAgICAgIHRoaXMuX3VwZGF0ZUJyZWFrT25FeGNlcHRpb25zU3RhdGUoKTsKKyAgICB9CisKKyAg
ICBnZXQgYnJlYWtwb2ludHNEaXNhYmxlZFRlbXBvcmFyaWx5KCkKKyAgICB7CisgICAgICAgIHJl
dHVybiB0aGlzLl90ZW1wb3JhcmlseURpc2FibGVkQnJlYWtwb2ludHNSZXN0b3JlU2V0dGluZy52
YWx1ZSAhPT0gbnVsbDsKICAgICB9CiAKICAgICBzY3JpcHRGb3JJZGVudGlmaWVyKGlkKQpAQCAt
MzIzLDExICsyMzMsNiBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJNYW5hZ2VyID0gY2xhc3MgRGVi
dWdnZXJNYW5hZ2VyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAgICByZXR1cm4g
dGhpcy5fc2NyaXB0Q29udGVudElkZW50aWZpZXJNYXAuZ2V0KHVybCkgfHwgW107CiAgICAgfQog
Ci0gICAgY29udGludWVUb0xvY2F0aW9uKHNjcmlwdElkZW50aWZpZXIsIGxpbmVOdW1iZXIsIGNv
bHVtbk51bWJlcikKLSAgICB7Ci0gICAgICAgIERlYnVnZ2VyQWdlbnQuY29udGludWVUb0xvY2F0
aW9uKHtzY3JpcHRJZDogc2NyaXB0SWRlbnRpZmllciwgbGluZU51bWJlciwgY29sdW1uTnVtYmVy
fSk7Ci0gICAgfQotCiAgICAgZ2V0IHNlYXJjaGFibGVTY3JpcHRzKCkKICAgICB7CiAgICAgICAg
IHJldHVybiB0aGlzLmtub3duTm9uUmVzb3VyY2VTY3JpcHRzLmZpbHRlcigoc2NyaXB0KSA9PiAh
IXNjcmlwdC5jb250ZW50SWRlbnRpZmllcik7CkBAIC0zNDcsOSArMjUyLDEyMSBAQCBXZWJJbnNw
ZWN0b3IuRGVidWdnZXJNYW5hZ2VyID0gY2xhc3MgRGVidWdnZXJNYW5hZ2VyIGV4dGVuZHMgV2Vi
SW5zcGVjdG9yLk9iamVjdAogICAgICAgICByZXR1cm4ga25vd25TY3JpcHRzOwogICAgIH0KIAot
ICAgIGFkZEJyZWFrcG9pbnQoYnJlYWtwb2ludCwgc2tpcEV2ZW50RGlzcGF0Y2gsIHNob3VsZFNw
ZWN1bGF0aXZlbHlSZXNvbHZlKQorICAgIHBhdXNlKCkKICAgICB7Ci0gICAgICAgIGNvbnNvbGUu
YXNzZXJ0KGJyZWFrcG9pbnQgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludCwgIkJh
ZCBhcmd1bWVudCB0byBEZWJ1Z2dlck1hbmdlci5hZGRCcmVha3BvaW50OiAiLCBicmVha3BvaW50
KTsKKyAgICAgICAgaWYgKHRoaXMuX3BhdXNlZCkKKyAgICAgICAgICAgIHJldHVybiBQcm9taXNl
LnJlc29sdmUoKTsKKworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJ
bnNwZWN0b3IuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LldhaXRpbmdUb1BhdXNlKTsKKworICAgICAg
ICBsZXQgbGlzdGVuZXIgPSBuZXcgV2ViSW5zcGVjdG9yLkV2ZW50TGlzdGVuZXIodGhpcywgdHJ1
ZSk7CisKKyAgICAgICAgbGV0IG1hbmFnZXJSZXN1bHQgPSBuZXcgUHJvbWlzZShmdW5jdGlvbihy
ZXNvbHZlLCByZWplY3QpIHsKKyAgICAgICAgICAgIGxpc3RlbmVyLmNvbm5lY3QoV2ViSW5zcGVj
dG9yLmRlYnVnZ2VyTWFuYWdlciwgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5Q
YXVzZWQsIHJlc29sdmUpOworICAgICAgICB9KTsKKworICAgICAgICBsZXQgcHJvdG9jb2xSZXN1
bHQgPSBEZWJ1Z2dlckFnZW50LnBhdXNlKCkKKyAgICAgICAgICAgIC5jYXRjaChmdW5jdGlvbihl
cnJvcikgeworICAgICAgICAgICAgICAgIGxpc3RlbmVyLmRpc2Nvbm5lY3QoKTsKKyAgICAgICAg
ICAgICAgICBjb25zb2xlLmVycm9yKCJEZWJ1Z2dlck1hbmFnZXIucGF1c2UgZmFpbGVkOiAiLCBl
cnJvcik7CisgICAgICAgICAgICAgICAgdGhyb3cgZXJyb3I7CisgICAgICAgICAgICB9KTsKKwor
ICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoW21hbmFnZXJSZXN1bHQsIHByb3RvY29sUmVzdWx0
XSk7CisgICAgfQorCisgICAgcmVzdW1lKCkKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5fcGF1
c2VkKQorICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpOworCisgICAgICAgIGxl
dCBsaXN0ZW5lciA9IG5ldyBXZWJJbnNwZWN0b3IuRXZlbnRMaXN0ZW5lcih0aGlzLCB0cnVlKTsK
KworICAgICAgICBsZXQgbWFuYWdlclJlc3VsdCA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29s
dmUsIHJlamVjdCkgeworICAgICAgICAgICAgbGlzdGVuZXIuY29ubmVjdChXZWJJbnNwZWN0b3Iu
ZGVidWdnZXJNYW5hZ2VyLCBXZWJJbnNwZWN0b3IuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlJlc3Vt
ZWQsIHJlc29sdmUpOworICAgICAgICB9KTsKKworICAgICAgICBsZXQgcHJvdG9jb2xSZXN1bHQg
PSBEZWJ1Z2dlckFnZW50LnJlc3VtZSgpCisgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24oZXJy
b3IpIHsKKyAgICAgICAgICAgICAgICBsaXN0ZW5lci5kaXNjb25uZWN0KCk7CisgICAgICAgICAg
ICAgICAgY29uc29sZS5lcnJvcigiRGVidWdnZXJNYW5hZ2VyLnJlc3VtZSBmYWlsZWQ6ICIsIGVy
cm9yKTsKKyAgICAgICAgICAgICAgICB0aHJvdyBlcnJvcjsKKyAgICAgICAgICAgIH0pOworCisg
ICAgICAgIHJldHVybiBQcm9taXNlLmFsbChbbWFuYWdlclJlc3VsdCwgcHJvdG9jb2xSZXN1bHRd
KTsKKyAgICB9CisKKyAgICBzdGVwT3ZlcigpCisgICAgeworICAgICAgICBpZiAoIXRoaXMuX3Bh
dXNlZCkKKyAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoIkNhbm5v
dCBzdGVwIG92ZXIgYmVjYXVzZSBkZWJ1Z2dlciBpcyBub3QgcGF1c2VkLiIpKTsKKworICAgICAg
ICBsZXQgbGlzdGVuZXIgPSBuZXcgV2ViSW5zcGVjdG9yLkV2ZW50TGlzdGVuZXIodGhpcywgdHJ1
ZSk7CisKKyAgICAgICAgbGV0IG1hbmFnZXJSZXN1bHQgPSBuZXcgUHJvbWlzZShmdW5jdGlvbihy
ZXNvbHZlLCByZWplY3QpIHsKKyAgICAgICAgICAgIGxpc3RlbmVyLmNvbm5lY3QoV2ViSW5zcGVj
dG9yLmRlYnVnZ2VyTWFuYWdlciwgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5B
Y3RpdmVDYWxsRnJhbWVEaWRDaGFuZ2UsIHJlc29sdmUpOworICAgICAgICB9KTsKKworICAgICAg
ICBsZXQgcHJvdG9jb2xSZXN1bHQgPSBEZWJ1Z2dlckFnZW50LnN0ZXBPdmVyKCkKKyAgICAgICAg
ICAgIC5jYXRjaChmdW5jdGlvbihlcnJvcikgeworICAgICAgICAgICAgICAgIGxpc3RlbmVyLmRp
c2Nvbm5lY3QoKTsKKyAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCJEZWJ1Z2dlck1hbmFn
ZXIuc3RlcE92ZXIgZmFpbGVkOiAiLCBlcnJvcik7CisgICAgICAgICAgICAgICAgdGhyb3cgZXJy
b3I7CisgICAgICAgICAgICB9KTsKKworICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoW21hbmFn
ZXJSZXN1bHQsIHByb3RvY29sUmVzdWx0XSk7CisgICAgfQorCisgICAgc3RlcEludG8oKQorICAg
IHsKKyAgICAgICAgaWYgKCF0aGlzLl9wYXVzZWQpCisgICAgICAgICAgICByZXR1cm4gUHJvbWlz
ZS5yZWplY3QobmV3IEVycm9yKCJDYW5ub3Qgc3RlcCBpbnRvIGJlY2F1c2UgZGVidWdnZXIgaXMg
bm90IHBhdXNlZC4iKSk7CisKKyAgICAgICAgbGV0IGxpc3RlbmVyID0gbmV3IFdlYkluc3BlY3Rv
ci5FdmVudExpc3RlbmVyKHRoaXMsIHRydWUpOworCisgICAgICAgIGxldCBtYW5hZ2VyUmVzdWx0
ID0gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7CisgICAgICAgICAgICBs
aXN0ZW5lci5jb25uZWN0KFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1hbmFnZXIsIFdlYkluc3BlY3Rv
ci5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuQWN0aXZlQ2FsbEZyYW1lRGlkQ2hhbmdlLCByZXNvbHZl
KTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgbGV0IHByb3RvY29sUmVzdWx0ID0gRGVidWdnZXJB
Z2VudC5zdGVwSW50bygpCisgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24oZXJyb3IpIHsKKyAg
ICAgICAgICAgICAgICBsaXN0ZW5lci5kaXNjb25uZWN0KCk7CisgICAgICAgICAgICAgICAgY29u
c29sZS5lcnJvcigiRGVidWdnZXJNYW5hZ2VyLnN0ZXBJbnRvIGZhaWxlZDogIiwgZXJyb3IpOwor
ICAgICAgICAgICAgICAgIHRocm93IGVycm9yOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAg
cmV0dXJuIFByb21pc2UuYWxsKFttYW5hZ2VyUmVzdWx0LCBwcm90b2NvbFJlc3VsdF0pOworICAg
IH0KKworICAgIHN0ZXBPdXQoKQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLl9wYXVzZWQpCisg
ICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCJDYW5ub3Qgc3RlcCBv
dXQgYmVjYXVzZSBkZWJ1Z2dlciBpcyBub3QgcGF1c2VkLiIpKTsKKworICAgICAgICBsZXQgbGlz
dGVuZXIgPSBuZXcgV2ViSW5zcGVjdG9yLkV2ZW50TGlzdGVuZXIodGhpcywgdHJ1ZSk7CisKKyAg
ICAgICAgbGV0IG1hbmFnZXJSZXN1bHQgPSBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCBy
ZWplY3QpIHsKKyAgICAgICAgICAgIGxpc3RlbmVyLmNvbm5lY3QoV2ViSW5zcGVjdG9yLmRlYnVn
Z2VyTWFuYWdlciwgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5BY3RpdmVDYWxs
RnJhbWVEaWRDaGFuZ2UsIHJlc29sdmUpOworICAgICAgICB9KTsKKworICAgICAgICBsZXQgcHJv
dG9jb2xSZXN1bHQgPSBEZWJ1Z2dlckFnZW50LnN0ZXBPdXQoKQorICAgICAgICAgICAgLmNhdGNo
KGZ1bmN0aW9uKGVycm9yKSB7CisgICAgICAgICAgICAgICAgbGlzdGVuZXIuZGlzY29ubmVjdCgp
OworICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoIkRlYnVnZ2VyTWFuYWdlci5zdGVwT3V0
IGZhaWxlZDogIiwgZXJyb3IpOworICAgICAgICAgICAgICAgIHRocm93IGVycm9yOworICAgICAg
ICAgICAgfSk7CisKKyAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKFttYW5hZ2VyUmVzdWx0LCBw
cm90b2NvbFJlc3VsdF0pOworICAgIH0KKworICAgIGNvbnRpbnVlVG9Mb2NhdGlvbihzY3JpcHRJ
ZCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIERlYnVn
Z2VyQWdlbnQuY29udGludWVUb0xvY2F0aW9uKHtzY3JpcHRJZCwgbGluZU51bWJlciwgY29sdW1u
TnVtYmVyfSk7CisgICAgfQorCisgICAgYWRkQnJlYWtwb2ludChicmVha3BvaW50LCBzaG91bGRT
cGVjdWxhdGl2ZWx5UmVzb2x2ZSkKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGJyZWFr
cG9pbnQgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludCk7CiAgICAgICAgIGlmICgh
YnJlYWtwb2ludCkKICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMzczLDIyICszOTAsMjEgQEAg
V2ViSW5zcGVjdG9yLkRlYnVnZ2VyTWFuYWdlciA9IGNsYXNzIERlYnVnZ2VyTWFuYWdlciBleHRl
bmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIAogICAgICAgICB0aGlzLl9icmVha3BvaW50cy5wdXNo
KGJyZWFrcG9pbnQpOwogCi0gICAgICAgIGZ1bmN0aW9uIHNwZWN1bGF0aXZlbHlSZXNvbHZlQnJl
YWtwb2ludChicmVha3BvaW50KSB7Ci0gICAgICAgICAgICBicmVha3BvaW50LnJlc29sdmVkID0g
dHJ1ZTsKKyAgICAgICAgaWYgKCFicmVha3BvaW50LmRpc2FibGVkKSB7CisgICAgICAgICAgICB0
aGlzLl9zZXRCcmVha3BvaW50KGJyZWFrcG9pbnQsICgpID0+IHsKKyAgICAgICAgICAgICAgICBp
ZiAoc2hvdWxkU3BlY3VsYXRpdmVseVJlc29sdmUpCisgICAgICAgICAgICAgICAgICAgIGJyZWFr
cG9pbnQucmVzb2x2ZWQgPSB0cnVlOworICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KIAotICAg
ICAgICBpZiAoIWJyZWFrcG9pbnQuZGlzYWJsZWQpCi0gICAgICAgICAgICB0aGlzLl9zZXRCcmVh
a3BvaW50KGJyZWFrcG9pbnQsIHNob3VsZFNwZWN1bGF0aXZlbHlSZXNvbHZlID8gc3BlY3VsYXRp
dmVseVJlc29sdmVCcmVha3BvaW50LmJpbmQobnVsbCwgYnJlYWtwb2ludCkgOiBudWxsKTsKLQog
ICAgICAgICB0aGlzLl9zYXZlQnJlYWtwb2ludHMoKTsKIAotICAgICAgICBpZiAoIXNraXBFdmVu
dERpc3BhdGNoKQotICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2Vi
SW5zcGVjdG9yLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5CcmVha3BvaW50QWRkZWQsIHticmVha3Bv
aW50fSk7CisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rv
ci5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuQnJlYWtwb2ludEFkZGVkLCB7YnJlYWtwb2ludH0pOwog
ICAgIH0KIAogICAgIHJlbW92ZUJyZWFrcG9pbnQoYnJlYWtwb2ludCkKICAgICB7Ci0gICAgICAg
IGNvbnNvbGUuYXNzZXJ0KGJyZWFrcG9pbnQpOworICAgICAgICBjb25zb2xlLmFzc2VydChicmVh
a3BvaW50IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQpOwogICAgICAgICBpZiAo
IWJyZWFrcG9pbnQpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTQyOCw2ICs0NDQsMTMgQEAg
V2ViSW5zcGVjdG9yLkRlYnVnZ2VyTWFuYWdlciA9IGNsYXNzIERlYnVnZ2VyTWFuYWdlciBleHRl
bmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0
ZW5lcnMoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5CcmVha3BvaW50UmVtb3Zl
ZCwge2JyZWFrcG9pbnR9KTsKICAgICB9CiAKKyAgICBuZXh0QnJlYWtwb2ludEFjdGlvbklkZW50
aWZpZXIoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX25leHRCcmVha3BvaW50QWN0aW9u
SWRlbnRpZmllcisrOworICAgIH0KKworICAgIC8vIFByb3RlY3RlZCAoQ2FsbGVkIGZyb20gV2Vi
SW5zcGVjdG9yLkRlYnVnZ2VyT2JzZXJ2ZXIpCisKICAgICBicmVha3BvaW50UmVzb2x2ZWQoYnJl
YWtwb2ludElkZW50aWZpZXIsIGxvY2F0aW9uKQogICAgIHsKICAgICAgICAgLy8gQ2FsbGVkIGZy
b20gV2ViSW5zcGVjdG9yLkRlYnVnZ2VyT2JzZXJ2ZXIuCkBAIC00NDAsNyArNDYzLDcgQEAgV2Vi
SW5zcGVjdG9yLkRlYnVnZ2VyTWFuYWdlciA9IGNsYXNzIERlYnVnZ2VyTWFuYWdlciBleHRlbmRz
IFdlYkluc3BlY3Rvci5PYmplY3QKICAgICAgICAgY29uc29sZS5hc3NlcnQoYnJlYWtwb2ludC5p
ZGVudGlmaWVyID09PSBicmVha3BvaW50SWRlbnRpZmllcik7CiAKICAgICAgICAgaWYgKCFicmVh
a3BvaW50LnNvdXJjZUNvZGVMb2NhdGlvbi5zb3VyY2VDb2RlKSB7Ci0gICAgICAgICAgICB2YXIg
c291cmNlQ29kZUxvY2F0aW9uID0gdGhpcy5fc291cmNlQ29kZUxvY2F0aW9uRnJvbVBheWxvYWQo
bG9jYXRpb24pOworICAgICAgICAgICAgbGV0IHNvdXJjZUNvZGVMb2NhdGlvbiA9IHRoaXMuX3Nv
dXJjZUNvZGVMb2NhdGlvbkZyb21QYXlsb2FkKGxvY2F0aW9uKTsKICAgICAgICAgICAgIGJyZWFr
cG9pbnQuc291cmNlQ29kZUxvY2F0aW9uLnNvdXJjZUNvZGUgPSBzb3VyY2VDb2RlTG9jYXRpb24u
c291cmNlQ29kZTsKICAgICAgICAgfQogCkBAIC00NTEsNyArNDc0LDcgQEAgV2ViSW5zcGVjdG9y
LkRlYnVnZ2VyTWFuYWdlciA9IGNsYXNzIERlYnVnZ2VyTWFuYWdlciBleHRlbmRzIFdlYkluc3Bl
Y3Rvci5PYmplY3QKICAgICB7CiAgICAgICAgIC8vIENhbGxlZCBmcm9tIFdlYkluc3BlY3Rvci5E
ZWJ1Z2dlck9ic2VydmVyLgogCi0gICAgICAgIHZhciB3YXNQYXVzZWQgPSB0aGlzLl9wYXVzZWQ7
CisgICAgICAgIGxldCB3YXNQYXVzZWQgPSB0aGlzLl9wYXVzZWQ7CiAKICAgICAgICAgV2ViSW5z
cGVjdG9yLlNjcmlwdC5yZXNldFVuaXF1ZURpc3BsYXlOYW1lTnVtYmVycygpOwogCkBAIC00Njcs
OCArNDkwLDcgQEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTWFuYWdlciA9IGNsYXNzIERlYnVnZ2Vy
TWFuYWdlciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIAogICAgICAgICAvLyBNYXJrIGFs
bCB0aGUgYnJlYWtwb2ludHMgYXMgdW5yZXNvbHZlZC4gVGhleSB3aWxsIGJlIHJlcG9ydGVkIGFz
IHJlc29sdmVkIHdoZW4KICAgICAgICAgLy8gYnJlYWtwb2ludFJlc29sdmVkIGlzIGNhbGxlZCBh
cyB0aGUgcGFnZSBsb2Fkcy4KLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9icmVh
a3BvaW50cy5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgdmFyIGJyZWFrcG9pbnQgPSB0aGlz
Ll9icmVha3BvaW50c1tpXTsKKyAgICAgICAgZm9yIChsZXQgYnJlYWtwb2ludCBvZiB0aGlzLl9i
cmVha3BvaW50cykgewogICAgICAgICAgICAgYnJlYWtwb2ludC5yZXNvbHZlZCA9IGZhbHNlOwog
ICAgICAgICAgICAgaWYgKGJyZWFrcG9pbnQuc291cmNlQ29kZUxvY2F0aW9uLnNvdXJjZUNvZGUp
CiAgICAgICAgICAgICAgICAgYnJlYWtwb2ludC5zb3VyY2VDb2RlTG9jYXRpb24uc291cmNlQ29k
ZSA9IG51bGw7CkBAIC01NDQsMTEgKzU2NiwxNSBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJNYW5h
Z2VyID0gY2xhc3MgRGVidWdnZXJNYW5hZ2VyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAog
CiAgICAgcGxheUJyZWFrcG9pbnRBY3Rpb25Tb3VuZChicmVha3BvaW50QWN0aW9uSWRlbnRpZmll
cikKICAgICB7CisgICAgICAgIC8vIENhbGxlZCBmcm9tIFdlYkluc3BlY3Rvci5EZWJ1Z2dlck9i
c2VydmVyLgorCiAgICAgICAgIEluc3BlY3RvckZyb250ZW5kSG9zdC5iZWVwKCk7CiAgICAgfQog
CiAgICAgc2NyaXB0RGlkUGFyc2Uoc2NyaXB0SWRlbnRpZmllciwgdXJsLCBzdGFydExpbmUsIHN0
YXJ0Q29sdW1uLCBlbmRMaW5lLCBlbmRDb2x1bW4sIGlzQ29udGVudFNjcmlwdCwgc291cmNlVVJM
LCBzb3VyY2VNYXBVUkwpCiAgICAgeworICAgICAgICAvLyBDYWxsZWQgZnJvbSBXZWJJbnNwZWN0
b3IuRGVidWdnZXJPYnNlcnZlci4KKwogICAgICAgICAvLyBEb24ndCBhZGQgdGhlIHNjcmlwdCBh
Z2FpbiBpZiBpdCBpcyBhbHJlYWR5IGtub3duLgogICAgICAgICBpZiAodGhpcy5fc2NyaXB0SWRN
YXAuaGFzKHNjcmlwdElkZW50aWZpZXIpKSB7CiAgICAgICAgICAgICBjb25zdCBzY3JpcHQgPSB0
aGlzLl9zY3JpcHRJZE1hcC5nZXQoc2NyaXB0SWRlbnRpZmllcik7CkBAIC01ODksMjEgKzYxNSw2
IEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1hbmFnZXIgPSBjbGFzcyBEZWJ1Z2dlck1hbmFnZXIg
ZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRv
TGlzdGVuZXJzKFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuU2NyaXB0QWRkZWQs
IHtzY3JpcHR9KTsKICAgICB9CiAKLSAgICBpc0JyZWFrcG9pbnRSZW1vdmFibGUoYnJlYWtwb2lu
dCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBicmVha3BvaW50ICE9PSB0aGlzLl9hbGxFeGNlcHRp
b25zQnJlYWtwb2ludCAmJiBicmVha3BvaW50ICE9PSB0aGlzLl9hbGxVbmNhdWdodEV4Y2VwdGlv
bnNCcmVha3BvaW50OwotICAgIH0KLQotICAgIGlzQnJlYWtwb2ludEVkaXRhYmxlKGJyZWFrcG9p
bnQpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5pc0JyZWFrcG9pbnRSZW1vdmFibGUoYnJl
YWtwb2ludCk7Ci0gICAgfQotCi0gICAgZ2V0IG5leHRCcmVha3BvaW50QWN0aW9uSWRlbnRpZmll
cigpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fbmV4dEJyZWFrcG9pbnRBY3Rpb25JZGVu
dGlmaWVyKys7Ci0gICAgfQotCiAgICAgLy8gUHJpdmF0ZQogCiAgICAgX3NvdXJjZUNvZGVMb2Nh
dGlvbkZyb21QYXlsb2FkKHBheWxvYWQpCkBAIC03MjksNyArNzQwLDcgQEAgV2ViSW5zcGVjdG9y
LkRlYnVnZ2VyTWFuYWdlciA9IGNsYXNzIERlYnVnZ2VyTWFuYWdlciBleHRlbmRzIFdlYkluc3Bl
Y3Rvci5PYmplY3QKICAgICAgICAgICAgIGlmICghKGxvY2F0aW9ucyBpbnN0YW5jZW9mIEFycmF5
KSkKICAgICAgICAgICAgICAgICBsb2NhdGlvbnMgPSBbbG9jYXRpb25zXTsKIAotICAgICAgICAg
ICAgZm9yICh2YXIgbG9jYXRpb24gb2YgbG9jYXRpb25zKQorICAgICAgICAgICAgZm9yIChsZXQg
bG9jYXRpb24gb2YgbG9jYXRpb25zKQogICAgICAgICAgICAgICAgIHRoaXMuYnJlYWtwb2ludFJl
c29sdmVkKGJyZWFrcG9pbnRJZGVudGlmaWVyLCBsb2NhdGlvbik7CiAKICAgICAgICAgICAgIGlm
ICh0eXBlb2YgY2FsbGJhY2sgPT09ICJmdW5jdGlvbiIpCkBAIC04MDEsNyArODEyLDcgQEAgV2Vi
SW5zcGVjdG9yLkRlYnVnZ2VyTWFuYWdlciA9IGNsYXNzIERlYnVnZ2VyTWFuYWdlciBleHRlbmRz
IFdlYkluc3BlY3Rvci5PYmplY3QKICAgICAgICAgaWYgKHRoaXMuX2lnbm9yZUJyZWFrcG9pbnRE
aXNwbGF5TG9jYXRpb25EaWRDaGFuZ2VFdmVudCkKICAgICAgICAgICAgIHJldHVybjsKIAotICAg
ICAgICB2YXIgYnJlYWtwb2ludCA9IGV2ZW50LnRhcmdldDsKKyAgICAgICAgbGV0IGJyZWFrcG9p
bnQgPSBldmVudC50YXJnZXQ7CiAgICAgICAgIGlmICghYnJlYWtwb2ludC5pZGVudGlmaWVyIHx8
IGJyZWFrcG9pbnQuZGlzYWJsZWQpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTg2MSwxNiAr
ODcyLDExIEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1hbmFnZXIgPSBjbGFzcyBEZWJ1Z2dlck1h
bmFnZXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAKICAgICAgICAgZnVuY3Rpb24gYnJl
YWtwb2ludFJlbW92ZWQoKQogICAgICAgICB7Ci0gICAgICAgICAgICAvLyBBZGQgdGhlIGJyZWFr
cG9pbnQgd2l0aCBpdHMgbmV3IGNvbmRpdGlvbiBhbmQgZ2V0IGEgbmV3IGlkLgorICAgICAgICAg
ICAgLy8gQWRkIHRoZSBicmVha3BvaW50IHdpdGggaXRzIG5ldyBwcm9wZXJ0aWVzIGFuZCBnZXQg
YSBuZXcgaWQuCiAgICAgICAgICAgICB0aGlzLl9zZXRCcmVha3BvaW50KGJyZWFrcG9pbnQpOwog
ICAgICAgICB9CiAgICAgfQogCi0gICAgZ2V0IGJyZWFrcG9pbnRzRGlzYWJsZWRUZW1wb3Jhcmls
eSgpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fdGVtcG9yYXJpbHlEaXNhYmxlZEJyZWFr
cG9pbnRzUmVzdG9yZVNldHRpbmcudmFsdWUgIT09IG51bGw7Ci0gICAgfQotCiAgICAgX3N0YXJ0
RGlzYWJsaW5nQnJlYWtwb2ludHNUZW1wb3JhcmlseSgpCiAgICAgewogICAgICAgICBjb25zb2xl
LmFzc2VydCghdGhpcy5icmVha3BvaW50c0Rpc2FibGVkVGVtcG9yYXJpbHksICJBbHJlYWR5IHRl
bXBvcmFyaWx5IGRpc2FibGluZyBicmVha3BvaW50cy4iKTsKQEAgLTkzNiw3ICs5NDIsNyBAQCBX
ZWJJbnNwZWN0b3IuRGVidWdnZXJNYW5hZ2VyID0gY2xhc3MgRGVidWdnZXJNYW5hZ2VyIGV4dGVu
ZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogCiAgICAgX3VwZGF0ZUJyZWFrT25FeGNlcHRpb25zU3Rh
dGUoKQogICAgIHsKLSAgICAgICAgdmFyIHN0YXRlID0gIm5vbmUiOworICAgICAgICBsZXQgc3Rh
dGUgPSAibm9uZSI7CiAKICAgICAgICAgaWYgKHRoaXMuX2JyZWFrcG9pbnRzRW5hYmxlZFNldHRp
bmcudmFsdWUpIHsKICAgICAgICAgICAgIGlmICghdGhpcy5fYWxsRXhjZXB0aW9uc0JyZWFrcG9p
bnQuZGlzYWJsZWQpCkBAIC05NzUsOSArOTgxLDggQEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTWFu
YWdlciA9IGNsYXNzIERlYnVnZ2VyTWFuYWdlciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QK
ICAgICB7CiAgICAgICAgIHRoaXMuX2lnbm9yZUJyZWFrcG9pbnREaXNwbGF5TG9jYXRpb25EaWRD
aGFuZ2VFdmVudCA9IHRydWU7CiAKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBicmVha3Bv
aW50cy5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgdmFyIGJyZWFrcG9pbnQgPSBicmVha3Bv
aW50c1tpXTsKLSAgICAgICAgICAgIGlmIChicmVha3BvaW50LnNvdXJjZUNvZGVMb2NhdGlvbi5z
b3VyY2VDb2RlID09PSBudWxsKQorICAgICAgICBmb3IgKGxldCBicmVha3BvaW50IG9mIGJyZWFr
cG9pbnRzKSB7CisgICAgICAgICAgICBpZiAoIWJyZWFrcG9pbnQuc291cmNlQ29kZUxvY2F0aW9u
LnNvdXJjZUNvZGUpCiAgICAgICAgICAgICAgICAgYnJlYWtwb2ludC5zb3VyY2VDb2RlTG9jYXRp
b24uc291cmNlQ29kZSA9IHNvdXJjZUNvZGU7CiAgICAgICAgICAgICAvLyBTb3VyY2VDb2RlcyBj
YW4gYmUgdW5lcXVhbCBpZiB0aGUgU291cmNlQ29kZUxvY2F0aW9uIGlzIGFzc29jaWF0ZWQgd2l0
aCBhIFNjcmlwdCBhbmQgd2UgYXJlIGxvb2tpbmcgYXQgdGhlIFJlc291cmNlLgogICAgICAgICAg
ICAgY29uc29sZS5hc3NlcnQoYnJlYWtwb2ludC5zb3VyY2VDb2RlTG9jYXRpb24uc291cmNlQ29k
ZSA9PT0gc291cmNlQ29kZSB8fCBicmVha3BvaW50LnNvdXJjZUNvZGVMb2NhdGlvbi5zb3VyY2VD
b2RlLmNvbnRlbnRJZGVudGlmaWVyID09PSBzb3VyY2VDb2RlLmNvbnRlbnRJZGVudGlmaWVyKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9C
cmVha3BvaW50QWN0aW9uLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
TW9kZWxzL0JyZWFrcG9pbnRBY3Rpb24uanMKaW5kZXggZTE5NzQzNC4uNzEyNDlhNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0JyZWFrcG9p
bnRBY3Rpb24uanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9k
ZWxzL0JyZWFrcG9pbnRBY3Rpb24uanMKQEAgLTQ0LDcgKzQ0LDcgQEAgV2ViSW5zcGVjdG9yLkJy
ZWFrcG9pbnRBY3Rpb24gPSBjbGFzcyBCcmVha3BvaW50QWN0aW9uIGV4dGVuZHMgV2ViSW5zcGVj
dG9yLk9iamUKICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoIlVuZXhwZWN0ZWQgdHlwZSBwYXNz
ZWQgdG8gV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRBY3Rpb24iKTsKIAogICAgICAgICBjb25zb2xl
LmFzc2VydCh0eXBlb2YgdGhpcy5fdHlwZSA9PT0gInN0cmluZyIpOwotICAgICAgICB0aGlzLl9p
ZCA9IFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1hbmFnZXIubmV4dEJyZWFrcG9pbnRBY3Rpb25JZGVu
dGlmaWVyOworICAgICAgICB0aGlzLl9pZCA9IFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1hbmFnZXIu
bmV4dEJyZWFrcG9pbnRBY3Rpb25JZGVudGlmaWVyKCk7CiAgICAgfQogCiAgICAgLy8gUHVibGlj
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9T
b3VyY2VDb2RlVGV4dEVkaXRvci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL1NvdXJjZUNvZGVUZXh0RWRpdG9yLmpzCmluZGV4IGM1NjEwMjEuLmVlODc2MjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Nv
dXJjZUNvZGVUZXh0RWRpdG9yLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL1NvdXJjZUNvZGVUZXh0RWRpdG9yLmpzCkBAIC0xMTA0LDkgKzExMDQsOCBA
QCBXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3IgPSBjbGFzcyBTb3VyY2VDb2RlVGV4
dEVkaXRvciBleHRlbmRzIFdlYkluc3BlYwogICAgICAgICB0aGlzLl9hZGRCcmVha3BvaW50V2l0
aEVkaXRvckxpbmVJbmZvKGJyZWFrcG9pbnQsIGxpbmVJbmZvKTsKIAogICAgICAgICB0aGlzLl9p
Z25vcmVCcmVha3BvaW50QWRkZWRCcmVha3BvaW50ID0gYnJlYWtwb2ludDsKLSAgICAgICAgdmFy
IHNob3VsZFNraXBFdmVudERpc3BhdGNoID0gZmFsc2U7Ci0gICAgICAgIHZhciBzaG91bGRTcGVj
dWxhdGl2ZWx5UmVzb2x2ZUJyZWFrcG9pbnQgPSB0cnVlOwotICAgICAgICBXZWJJbnNwZWN0b3Iu
ZGVidWdnZXJNYW5hZ2VyLmFkZEJyZWFrcG9pbnQoYnJlYWtwb2ludCwgc2hvdWxkU2tpcEV2ZW50
RGlzcGF0Y2gsIHNob3VsZFNwZWN1bGF0aXZlbHlSZXNvbHZlQnJlYWtwb2ludCk7CisgICAgICAg
IGNvbnN0IHNob3VsZFNwZWN1bGF0aXZlbHlSZXNvbHZlQnJlYWtwb2ludCA9IHRydWU7CisgICAg
ICAgIFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1hbmFnZXIuYWRkQnJlYWtwb2ludChicmVha3BvaW50
LCBzaG91bGRTcGVjdWxhdGl2ZWx5UmVzb2x2ZUJyZWFrcG9pbnQpOwogICAgICAgICB0aGlzLl9p
Z25vcmVCcmVha3BvaW50QWRkZWRCcmVha3BvaW50ID0gbnVsbDsKIAogICAgICAgICAvLyBSZXR1
cm4gdGhlIG1vcmUgYWNjdXJhdGUgbG9jYXRpb24gYW5kIGJyZWFrcG9pbnQgaW5mby4K
</data>
<flag name="review"
          id="314637"
          type_id="1"
          status="+"
          setter="timothy"
    />
          </attachment>
      

    </bug>

</bugzilla>