<?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>88707</bug_id>
          
          <creation_ts>2012-06-09 05:34:29 -0700</creation_ts>
          <short_desc>Web Inspector: Implement snippets evaluation.</short_desc>
          <delta_ts>2012-07-02 07:56: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>
          <dependson>90385</dependson>
          <blocked>75094</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Vsevolod Vlasov">vsevik</reporter>
          <assigned_to name="Vsevolod Vlasov">vsevik</assigned_to>
          <cc>abarth</cc>
    
    <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>jochen</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>syoichi</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>645301</commentid>
    <comment_count>0</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-06-09 05:34:29 -0700</bug_when>
    <thetext>Patch to follow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>645306</commentid>
    <comment_count>1</comment_count>
      <attachid>146697</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-06-09 05:54:11 -0700</bug_when>
    <thetext>Created attachment 146697
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>645315</commentid>
    <comment_count>2</comment_count>
      <attachid>146697</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-06-09 06:40:48 -0700</bug_when>
    <thetext>Comment on attachment 146697
Patch

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

&gt; Source/WebCore/inspector/front-end/BreakpointManager.js:302
&gt; +            var oldFakeUILocation = /** @type {WebInspector.UILocation} */ this._uiLocations.get(this._fakeRawLocation);

Isn&apos;t this the same as this._primaryUILocation ?

&gt; Source/WebCore/inspector/front-end/BreakpointManager.js:303
&gt; +            if (oldFakeUILocation) {

Can it be 0?

&gt; Source/WebCore/inspector/front-end/BreakpointManager.js:360
&gt; +        if (this._enabled &amp;&amp; this._primaryUILocation.uiLocationToRawLocation()) {

This little twist changes the way breakpoint manager interacts with the debugger. I would add a comment. And I don&apos;t think I like it anyways.

&gt; Source/WebCore/inspector/front-end/DebuggerModel.js:138
&gt; +        if (rawLocation.scriptId) {

I hate to say it, but I feel like debugging capabilities in the snippet editor are not worth making the underlying models so much more complex.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>655661</commentid>
    <comment_count>3</comment_count>
      <attachid>149075</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-06-22 11:42:07 -0700</bug_when>
    <thetext>Created attachment 149075
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>661428</commentid>
    <comment_count>4</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-07-02 05:52:13 -0700</bug_when>
    <thetext>Committed r121673: &lt;http://trac.webkit.org/changeset/121673&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>146697</attachid>
            <date>2012-06-09 05:54:11 -0700</date>
            <delta_ts>2012-06-22 11:41:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88707-20120609165409.patch</filename>
            <type>text/plain</type>
            <size>28823</size>
            <attacher name="Vsevolod Vlasov">vsevik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5OTAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTU3ODk1ZDIyNDJhNGJl
NDI3MTVlMzM3Y2Q2YWM5MTg1ZTdiYzIzOS4uY2FmYTc4YTY2ZGU5ZjI5NzZhYjRhODVmYzc5YjQy
NWIyYjgzYzM3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDEyLTA2LTA5ICBWc2V2
b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IEltcGxlbWVudCBzbmlwcGV0cyBldmFsdWF0aW9uLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODg3MDcKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnRlZCBzbmlwcGV0IGV2YWx1YXRpb24g
YW5kIGFkanVzdGVkIGJyZWFrcG9pbnRzIGJlaGF2aW9yIHdoZW4gZWRpdGluZyBzbmlwcGV0Lgor
CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9CcmVha3BvaW50TWFuYWdlci5qczogQWRk
ZWQgQnJlYWtwb2ludC5fZmFrZVJhd0xvY2F0aW9uIHRvIGNvcnJlY3RseSB1cGRhdGUgYnJlYWtw
b2ludCdzIFVJTG9jYXRpb24gd2hlbiBlZGl0aW5nL2V2YWx1YXRpbmcgc25pcHBldC4KKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5CcmVha3BvaW50TWFuYWdlci5CcmVha3BvaW50LnByb3RvdHlwZS5f
bG9jYXRpb25VcGRhdGVkLmdldCBpZik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQnJlYWtwb2lu
dE1hbmFnZXIuQnJlYWtwb2ludC5wcm90b3R5cGUuX2xvY2F0aW9uVXBkYXRlZCk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuQnJlYWtwb2ludE1hbmFnZXIuQnJlYWtwb2ludC5wcm90b3R5cGUuX3Vw
ZGF0ZUJyZWFrcG9pbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRNYW5hZ2Vy
LkJyZWFrcG9pbnQucHJvdG90eXBlLl9yZXNldExvY2F0aW9ucyk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuQnJlYWtwb2ludE1hbmFnZXIuQnJlYWtwb2ludC5wcm90b3R5cGUuX2Zha2VCcmVha3Bv
aW50QXRQcmltYXJ5TG9jYXRpb24pOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRGVi
dWdnZXJNb2RlbC5qczogQWRkZWQgc291cmNlVVJMIHRvIERlYnVnZ2VyTW9kZWwuTG9jYXRpb24g
YW5kIHN1cHBvcnRlZCBzZXR0aW5nIGJyZWFrcG9pbnQgYnkgc291cmNlVVJMIHdpdGhvdXQgc2Ny
aXB0LgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwuTG9jYXRpb24pOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwucHJvdG90eXBlLnNldEJyZWFrcG9pbnRC
eVNjcmlwdExvY2F0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLnBy
b3RvdHlwZS5jcmVhdGVSYXdMb2NhdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdn
ZXJNb2RlbC5wcm90b3R5cGUuY3JlYXRlUmF3TG9jYXRpb25CeVVSTCk6CisgICAgICAgICogaW5z
cGVjdG9yL2Zyb250LWVuZC9KYXZhU2NyaXB0U291cmNlLmpzOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkphdmFTY3JpcHRTb3VyY2UucHJvdG90eXBlLnN1cHBvcnRzRW5hYmxlZEJyZWFrcG9pbnRz
V2hpbGVFZGl0aW5nKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0phdmFTY3JpcHRT
b3VyY2VGcmFtZS5qczogSW1wbGVtZW50ZWQgZGlmZmVyZW50IGJyZWFrcG9pbnRzIGJlaGF2aW9y
IGZvciBzbmlwcGV0IGVkaXRpbmcgKGJyZWFrcG9pbnRzIGFyZSBub3QgZGlzYWJsZWQgd2hpbGUg
ZWRpdGluZykuCisgICAgICAgIChXZWJJbnNwZWN0b3IuSmF2YVNjcmlwdFNvdXJjZUZyYW1lLnBy
b3RvdHlwZS5hZnRlclRleHRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5KYXZhU2Ny
aXB0U291cmNlRnJhbWUucHJvdG90eXBlLmJlZm9yZVRleHRDaGFuZ2VkKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5KYXZhU2NyaXB0U291cmNlRnJhbWUucHJvdG90eXBlLl9kaWRFZGl0Q29udGVu
dCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSmF2YVNjcmlwdFNvdXJjZUZyYW1lLnByb3RvdHlw
ZS5fcmVtb3ZlQnJlYWtwb2ludHNCZWZvcmVFZGl0aW5nKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5KYXZhU2NyaXB0U291cmNlRnJhbWUucHJvdG90eXBlLl9yZXN0b3JlQnJlYWtwb2ludHNBZnRl
ckVkaXRpbmcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkphdmFTY3JpcHRTb3VyY2VGcmFtZS5w
cm90b3R5cGUuX2FkZEJyZWFrcG9pbnREZWNvcmF0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5KYXZhU2NyaXB0U291cmNlRnJhbWUucHJvdG90eXBlLl9vbk1vdXNlRG93bik6CisgICAgICAg
ICogaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHQuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
U2NyaXB0LnByb3RvdHlwZS5yYXdMb2NhdGlvblRvVUlMb2NhdGlvbik6CisgICAgICAgICogaW5z
cGVjdG9yL2Zyb250LWVuZC9TY3JpcHRTbmlwcGV0TW9kZWwuanM6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuU2NyaXB0U25pcHBldE1vZGVsLnByb3RvdHlwZS5kZWxldGVTY3JpcHRTbmlwcGV0KToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRTbmlwcGV0TW9kZWwucHJvdG90eXBlLl9zZXRT
Y3JpcHRTbmlwcGV0Q29udGVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0U25pcHBl
dE1vZGVsLnByb3RvdHlwZS5ldmFsdWF0ZVNjcmlwdFNuaXBwZXQpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlNjcmlwdFNuaXBwZXRNb2RlbC5wcm90b3R5cGUuX3JlbW92ZUJyZWFrcG9pbnRzKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRTbmlwcGV0TW9kZWwucHJvdG90eXBlLl9yZXN0
b3JlQnJlYWtwb2ludHMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdFNuaXBwZXRNb2Rl
bC5wcm90b3R5cGUuX3NvdXJjZVVSTEZvclNuaXBwZXRJZCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuU25pcHBldEphdmFTY3JpcHRTb3VyY2UucHJvdG90eXBlLndvcmtpbmdDb3B5Q29tbWl0dGVk
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TbmlwcGV0SmF2YVNjcmlwdFNvdXJjZS5wcm90b3R5
cGUud29ya2luZ0NvcHlDaGFuZ2VkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TbmlwcGV0SmF2
YVNjcmlwdFNvdXJjZS5wcm90b3R5cGUuZXZhbHVhdGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlNuaXBwZXRKYXZhU2NyaXB0U291cmNlLnByb3RvdHlwZS5zdXBwb3J0c0VuYWJsZWRCcmVha3Bv
aW50c1doaWxlRWRpdGluZyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU25pcHBldEphdmFTY3Jp
cHRTb3VyY2UucHJvdG90eXBlLmJyZWFrcG9pbnRTdG9yYWdlSWQpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9mcm9udC1lbmQvU2NyaXB0c05hdmlnYXRvci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5TbmlwcGV0c05hdmlnYXRvclZpZXcucHJvdG90eXBlLl9oYW5kbGVFdmFsdWF0ZVNuaXBwZXQp
OgorCiAyMDEyLTA2LTA4ICBWc2V2b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IEluY3JlYXNlIHNpemUgbGltaXRzIGZvciByZXNvdXJj
ZSBjb250ZW50IGNhY2hlZCBpbiBJbnNwZWN0b3JSZXNvdXJjZUFnZW50LgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9CcmVha3BvaW50TWFuYWdlci5qcyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQnJlYWtwb2ludE1hbmFnZXIuanMK
aW5kZXggZjFiZjkzNWNjNmQ0MmI0NWQ0MzZlZjViYmYzMzk2MmYxYjI1NGIwMi4uMjIzZDdlMmM3
MzIwZDdhMDkzZmM4ZjU1MjVmNzk5OGMyMTFmZjU5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9CcmVha3BvaW50TWFuYWdlci5qcworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0JyZWFrcG9pbnRNYW5hZ2VyLmpzCkBAIC0yOTgs
NiArMjk4LDEzIEBAIFdlYkluc3BlY3Rvci5CcmVha3BvaW50TWFuYWdlci5CcmVha3BvaW50LnBy
b3RvdHlwZSA9IHsKICAgICAgICAgdmFyIG9sZFVJTG9jYXRpb24gPSAvKiogQHR5cGUge1dlYklu
c3BlY3Rvci5VSUxvY2F0aW9ufSAqLyB0aGlzLl91aUxvY2F0aW9ucy5nZXQobG9jYXRpb24pOwog
ICAgICAgICBpZiAob2xkVUlMb2NhdGlvbikKICAgICAgICAgICAgIHRoaXMuX2JyZWFrcG9pbnRN
YW5hZ2VyLl91aUxvY2F0aW9uUmVtb3ZlZCh0aGlzLCBvbGRVSUxvY2F0aW9uKTsKKyAgICAgICAg
aWYgKHRoaXMuX2Zha2VSYXdMb2NhdGlvbikgeworICAgICAgICAgICAgdmFyIG9sZEZha2VVSUxv
Y2F0aW9uID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuVUlMb2NhdGlvbn0gKi8gdGhpcy5fdWlM
b2NhdGlvbnMuZ2V0KHRoaXMuX2Zha2VSYXdMb2NhdGlvbik7CisgICAgICAgICAgICBpZiAob2xk
RmFrZVVJTG9jYXRpb24pIHsKKyAgICAgICAgICAgICAgICB0aGlzLl91aUxvY2F0aW9ucy5yZW1v
dmUodGhpcy5fZmFrZVJhd0xvY2F0aW9uKTsKKyAgICAgICAgICAgICAgICB0aGlzLl9icmVha3Bv
aW50TWFuYWdlci5fdWlMb2NhdGlvblJlbW92ZWQodGhpcywgb2xkRmFrZVVJTG9jYXRpb24pOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgICAgIHRoaXMuX3VpTG9jYXRpb25zLnB1dChs
b2NhdGlvbiwgdWlMb2NhdGlvbik7CiAgICAgICAgIHRoaXMuX2JyZWFrcG9pbnRNYW5hZ2VyLl91
aUxvY2F0aW9uQWRkZWQodGhpcywgdWlMb2NhdGlvbik7CiAgICAgfSwKQEAgLTM1MCw3ICszNTcs
NyBAQCBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludE1hbmFnZXIuQnJlYWtwb2ludC5wcm90b3R5cGUg
PSB7CiAgICAgICAgIHRoaXMuX2NvbmRpdGlvbiA9IGNvbmRpdGlvbjsKICAgICAgICAgdGhpcy5f
YnJlYWtwb2ludE1hbmFnZXIuX3N0b3JhZ2UuX3VwZGF0ZUJyZWFrcG9pbnQodGhpcyk7CiAKLSAg
ICAgICAgaWYgKHRoaXMuX2VuYWJsZWQpIHsKKyAgICAgICAgaWYgKHRoaXMuX2VuYWJsZWQgJiYg
dGhpcy5fcHJpbWFyeVVJTG9jYXRpb24udWlMb2NhdGlvblRvUmF3TG9jYXRpb24oKSkgewogICAg
ICAgICAgICAgdGhpcy5fc2V0SW5EZWJ1Z2dlcigpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CkBAIC00MjYsNiArNDMzLDcgQEAgV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRNYW5hZ2Vy
LkJyZWFrcG9pbnQucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5fbGl2ZUxvY2F0aW9u
c1tpXS5kaXNwb3NlKCk7CiAgICAgICAgIHRoaXMuX2xpdmVMb2NhdGlvbnMgPSBbXTsKIAorICAg
ICAgICBkZWxldGUgdGhpcy5fZmFrZVJhd0xvY2F0aW9uOwogICAgICAgICB0aGlzLl91aUxvY2F0
aW9ucyA9IG5ldyBNYXAoKTsKICAgICB9LAogCkBAIC00NDAsNyArNDQ4LDggQEAgV2ViSW5zcGVj
dG9yLkJyZWFrcG9pbnRNYW5hZ2VyLkJyZWFrcG9pbnQucHJvdG90eXBlID0gewogICAgIF9mYWtl
QnJlYWtwb2ludEF0UHJpbWFyeUxvY2F0aW9uOiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICB0
aGlzLl9yZXNldExvY2F0aW9ucygpOwotICAgICAgICB0aGlzLl91aUxvY2F0aW9ucy5wdXQoe30s
IHRoaXMuX3ByaW1hcnlVSUxvY2F0aW9uKTsKKyAgICAgICAgdGhpcy5fZmFrZVJhd0xvY2F0aW9u
ID0ge307CisgICAgICAgIHRoaXMuX3VpTG9jYXRpb25zLnB1dCh0aGlzLl9mYWtlUmF3TG9jYXRp
b24sIHRoaXMuX3ByaW1hcnlVSUxvY2F0aW9uKTsKICAgICAgICAgdGhpcy5fYnJlYWtwb2ludE1h
bmFnZXIuX3VpTG9jYXRpb25BZGRlZCh0aGlzLCB0aGlzLl9wcmltYXJ5VUlMb2NhdGlvbik7CiAg
ICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9E
ZWJ1Z2dlck1vZGVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZWJ1
Z2dlck1vZGVsLmpzCmluZGV4IGZhMTZlMGU2ZTYxODIyNzI1NTMzNWZkOTUyOGFlMGRjY2FhYjFh
ZDcuLmEwNmJhNGQzNzFjNzM3YTExODJkYzAyNTc3N2MyZTcxMDBjNTliYjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVidWdnZXJNb2RlbC5qcworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RlYnVnZ2VyTW9kZWwuanMKQEAg
LTUyLDEyICs1MiwxNCBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbCA9IGZ1bmN0aW9uKCkK
ICAqIEBpbXBsZW1lbnRzIHtXZWJJbnNwZWN0b3IuUmF3TG9jYXRpb259CiAgKiBAZXh0ZW5kcyB7
RGVidWdnZXJBZ2VudC5Mb2NhdGlvbn0KICAqIEBwYXJhbSB7c3RyaW5nfSBzY3JpcHRJZAorICog
QHBhcmFtIHtzdHJpbmd9IHNvdXJjZVVSTAogICogQHBhcmFtIHtudW1iZXJ9IGxpbmVOdW1iZXIK
ICAqIEBwYXJhbSB7bnVtYmVyfSBjb2x1bW5OdW1iZXIKICAqLwotV2ViSW5zcGVjdG9yLkRlYnVn
Z2VyTW9kZWwuTG9jYXRpb24gPSBmdW5jdGlvbihzY3JpcHRJZCwgbGluZU51bWJlciwgY29sdW1u
TnVtYmVyKQorV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwuTG9jYXRpb24gPSBmdW5jdGlvbihz
Y3JpcHRJZCwgc291cmNlVVJMLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiB7CiAgICAgdGhp
cy5zY3JpcHRJZCA9IHNjcmlwdElkOworICAgIHRoaXMuc291cmNlVVJMID0gc291cmNlVVJMOwog
ICAgIHRoaXMubGluZU51bWJlciA9IGxpbmVOdW1iZXI7CiAgICAgdGhpcy5jb2x1bW5OdW1iZXIg
PSBjb2x1bW5OdW1iZXI7CiB9CkBAIC0xMzMsMTEgKzEzNSwxNCBAQCBXZWJJbnNwZWN0b3IuRGVi
dWdnZXJNb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgc2V0QnJlYWtwb2ludEJ5U2Ny
aXB0TG9jYXRpb246IGZ1bmN0aW9uKHJhd0xvY2F0aW9uLCBjb25kaXRpb24sIGNhbGxiYWNrKQog
ICAgIHsKLSAgICAgICAgdmFyIHNjcmlwdCA9IHRoaXMuc2NyaXB0Rm9ySWQocmF3TG9jYXRpb24u
c2NyaXB0SWQpOwotICAgICAgICBpZiAoc2NyaXB0LnNvdXJjZVVSTCkKLSAgICAgICAgICAgIHRo
aXMuc2V0QnJlYWtwb2ludChzY3JpcHQuc291cmNlVVJMLCByYXdMb2NhdGlvbi5saW5lTnVtYmVy
LCByYXdMb2NhdGlvbi5jb2x1bW5OdW1iZXIsIGNvbmRpdGlvbiwgY2FsbGJhY2spOwotICAgICAg
ICBlbHNlCi0gICAgICAgICAgICB0aGlzLnNldEJyZWFrcG9pbnRCeVNvdXJjZUlkKHJhd0xvY2F0
aW9uLCBjb25kaXRpb24sIGNhbGxiYWNrKTsKKyAgICAgICAgaWYgKHJhd0xvY2F0aW9uLnNjcmlw
dElkKSB7CisgICAgICAgICAgICB2YXIgc2NyaXB0ID0gdGhpcy5zY3JpcHRGb3JJZChyYXdMb2Nh
dGlvbi5zY3JpcHRJZCk7CisgICAgICAgICAgICBpZiAoc2NyaXB0LnNvdXJjZVVSTCkKKyAgICAg
ICAgICAgICAgICB0aGlzLnNldEJyZWFrcG9pbnQoc2NyaXB0LnNvdXJjZVVSTCwgcmF3TG9jYXRp
b24ubGluZU51bWJlciwgcmF3TG9jYXRpb24uY29sdW1uTnVtYmVyLCBjb25kaXRpb24sIGNhbGxi
YWNrKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0aGlzLnNldEJyZWFrcG9p
bnRCeVNvdXJjZUlkKHJhd0xvY2F0aW9uLCBjb25kaXRpb24sIGNhbGxiYWNrKTsKKyAgICAgICAg
fSBlbHNlCisgICAgICAgICAgICB0aGlzLnNldEJyZWFrcG9pbnQocmF3TG9jYXRpb24uc291cmNl
VVJMLCByYXdMb2NhdGlvbi5saW5lTnVtYmVyLCByYXdMb2NhdGlvbi5jb2x1bW5OdW1iZXIsIGNv
bmRpdGlvbiwgY2FsbGJhY2spOwogICAgIH0sCiAKICAgICAvKioKQEAgLTM3OCw3ICszODMsNyBA
QCBXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgewogICAgICAg
ICBpZiAoc2NyaXB0LnNvdXJjZVVSTCkKICAgICAgICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZVJh
d0xvY2F0aW9uQnlVUkwoc2NyaXB0LnNvdXJjZVVSTCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVy
KQotICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLkxvY2F0aW9u
KHNjcmlwdC5zY3JpcHRJZCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyKTsKKyAgICAgICAgcmV0
dXJuIG5ldyBXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5Mb2NhdGlvbihzY3JpcHQuc2NyaXB0
SWQsICIiLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpOwogICAgIH0sCiAKICAgICAvKioKQEAg
LTQwMiw3ICs0MDcsNyBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5wcm90b3R5cGUgPSB7
CiAgICAgICAgICAgICBjbG9zZXN0U2NyaXB0ID0gc2NyaXB0OwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGNsb3Nlc3RTY3JpcHQgPyBuZXcgV2ViSW5zcGVj
dG9yLkRlYnVnZ2VyTW9kZWwuTG9jYXRpb24oY2xvc2VzdFNjcmlwdC5zY3JpcHRJZCwgbGluZU51
bWJlciwgY29sdW1uTnVtYmVyKSA6IG51bGw7CisgICAgICAgIHJldHVybiBjbG9zZXN0U2NyaXB0
ID8gbmV3IFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLkxvY2F0aW9uKGNsb3Nlc3RTY3JpcHQu
c2NyaXB0SWQsICIiLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpIDogbnVsbDsKICAgICB9LAog
CiAgICAgLyoqCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0phdmFTY3JpcHRTb3VyY2UuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0phdmFTY3JpcHRTb3VyY2UuanMKaW5kZXggMWE0ZDg1MTUxNDBhNmEwMDhkOTI4YmE5ZDFhMTk0
ZGNjMGQ5ZjM2Yi4uZjlhZWJmYjg5ZTQxYzM2NGUzMmQwZGQ1YjMwZmE3ODJmZTBjMjRmNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9KYXZhU2NyaXB0U291
cmNlLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSmF2YVNjcmlw
dFNvdXJjZS5qcwpAQCAtMTY0LDYgKzE2NCwxNCBAQCBXZWJJbnNwZWN0b3IuSmF2YVNjcmlwdFNv
dXJjZS5wcm90b3R5cGUgPSB7CiAgICAgfSwKIAogICAgIC8qKgorICAgICAqIEByZXR1cm4ge2Jv
b2xlYW59CisgICAgICovCisgICAgc3VwcG9ydHNFbmFibGVkQnJlYWtwb2ludHNXaGlsZUVkaXRp
bmc6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9LAorCisg
ICAgLyoqCiAgICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICAqLwogICAgIGJyZWFrcG9pbnRT
dG9yYWdlSWQ6IGZ1bmN0aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvSmF2YVNjcmlwdFNvdXJjZUZyYW1lLmpzIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9KYXZhU2NyaXB0U291cmNlRnJhbWUuanMKaW5kZXggZjUzNDg3NmM1
NjhhYzZhODJkNDAzM2E5YWNiNWMyYmNlZTVhMGNkZC4uMmU4ZWRiNGJmYzk5ZDliMmUxYzM4ZGRm
MTcwNjNlYjA0N2M1NWVkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9KYXZhU2NyaXB0U291cmNlRnJhbWUuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9KYXZhU2NyaXB0U291cmNlRnJhbWUuanMKQEAgLTE1MCwxMyArMTUw
LDMwIEBAIFdlYkluc3BlY3Rvci5KYXZhU2NyaXB0U291cmNlRnJhbWUucHJvdG90eXBlID0gewog
ICAgIGFmdGVyVGV4dENoYW5nZWQ6IGZ1bmN0aW9uKG9sZFJhbmdlLCBuZXdSYW5nZSkKICAgICB7
CiAgICAgICAgIHRoaXMuX2phdmFTY3JpcHRTb3VyY2Uuc2V0V29ya2luZ0NvcHkodGhpcy50ZXh0
TW9kZWwudGV4dCk7Ci0gICAgICAgIGlmICghdGhpcy5famF2YVNjcmlwdFNvdXJjZS5pc0RpcnR5
KCkpCi0gICAgICAgICAgICB0aGlzLl9kaWRFZGl0Q29udGVudChudWxsKTsKKyAgICAgICAgdGhp
cy5fcmVzdG9yZUJyZWFrcG9pbnRzQWZ0ZXJFZGl0aW5nKCk7CiAgICAgfSwKIAogICAgIGJlZm9y
ZVRleHRDaGFuZ2VkOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICBpZiAoIXRoaXMuX2phdmFT
Y3JpcHRTb3VyY2UuaXNEaXJ0eSgpKSB7CisgICAgICAgIHRoaXMuX3JlbW92ZUJyZWFrcG9pbnRz
QmVmb3JlRWRpdGluZygpOworICAgICAgICBXZWJJbnNwZWN0b3IuU291cmNlRnJhbWUucHJvdG90
eXBlLmJlZm9yZVRleHRDaGFuZ2VkLmNhbGwodGhpcyk7CisgICAgfSwKKworICAgIF9kaWRFZGl0
Q29udGVudDogZnVuY3Rpb24oZXJyb3IpCisgICAgeworICAgICAgICBkZWxldGUgdGhpcy5faXND
b21taXR0aW5nRWRpdGluZzsKKworICAgICAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgICAgIFdl
Ykluc3BlY3Rvci5sb2coZXJyb3IsIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdl
TGV2ZWwuRXJyb3IsIHRydWUpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAg
ICAgIGlmICghdGhpcy5famF2YVNjcmlwdFNvdXJjZS5zdXBwb3J0c0VuYWJsZWRCcmVha3BvaW50
c1doaWxlRWRpdGluZygpKQorICAgICAgICAgICAgdGhpcy5fcmVzdG9yZUJyZWFrcG9pbnRzQWZ0
ZXJFZGl0aW5nKCk7CisgICAgfSwKKworICAgIF9yZW1vdmVCcmVha3BvaW50c0JlZm9yZUVkaXRp
bmc6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5famF2YVNjcmlwdFNvdXJj
ZS5pc0RpcnR5KCkgfHwgdGhpcy5famF2YVNjcmlwdFNvdXJjZS5zdXBwb3J0c0VuYWJsZWRCcmVh
a3BvaW50c1doaWxlRWRpdGluZygpKSB7CiAgICAgICAgICAgICAvLyBEaXNhYmxlIGFsbCBicmVh
a3BvaW50cyBpbiB0aGUgbW9kZWwsIHN0b3JlIHRoZW0gYXMgbXV0ZWQgYnJlYWtwb2ludHMuCiAg
ICAgICAgICAgICB2YXIgYnJlYWtwb2ludExvY2F0aW9ucyA9IHRoaXMuX2JyZWFrcG9pbnRNYW5h
Z2VyLmJyZWFrcG9pbnRMb2NhdGlvbnNGb3JVSVNvdXJjZUNvZGUodGhpcy5famF2YVNjcmlwdFNv
dXJjZSk7CiAgICAgICAgICAgICB2YXIgbGluZU51bWJlcnMgPSB7fTsKQEAgLTE2NywyNyArMTg0
LDIwIEBAIFdlYkluc3BlY3Rvci5KYXZhU2NyaXB0U291cmNlRnJhbWUucHJvdG90eXBlID0gewog
ICAgICAgICAgICAgICAgIHRoaXMuX2FkZEJyZWFrcG9pbnREZWNvcmF0aW9uKGJyZWFrcG9pbnRM
b2NhdGlvbnNbaV0udWlMb2NhdGlvbi5saW5lTnVtYmVyLCBicmVha3BvaW50LmNvbmRpdGlvbigp
LCBicmVha3BvaW50LmVuYWJsZWQoKSwgdHJ1ZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
LQotICAgICAgICBXZWJJbnNwZWN0b3IuU291cmNlRnJhbWUucHJvdG90eXBlLmJlZm9yZVRleHRD
aGFuZ2VkLmNhbGwodGhpcyk7CiAgICAgfSwKIAotICAgIF9kaWRFZGl0Q29udGVudDogZnVuY3Rp
b24oZXJyb3IpCisgICAgX3Jlc3RvcmVCcmVha3BvaW50c0FmdGVyRWRpdGluZzogZnVuY3Rpb24o
KQogICAgIHsKLSAgICAgICAgZGVsZXRlIHRoaXMuX2lzQ29tbWl0dGluZ0VkaXRpbmc7Ci0KLSAg
ICAgICAgaWYgKGVycm9yKSB7Ci0gICAgICAgICAgICBXZWJJbnNwZWN0b3IubG9nKGVycm9yLCBX
ZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZUxldmVsLkVycm9yLCB0cnVlKTsKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIFJlc3RvcmUgYWxsIG11
dGVkIGJyZWFrcG9pbnRzLgotICAgICAgICBmb3IgKHZhciBsaW5lTnVtYmVyID0gMDsgbGluZU51
bWJlciA8IHRoaXMudGV4dE1vZGVsLmxpbmVzQ291bnQ7ICsrbGluZU51bWJlcikgewotICAgICAg
ICAgICAgdmFyIGJyZWFrcG9pbnREZWNvcmF0aW9uID0gdGhpcy50ZXh0TW9kZWwuZ2V0QXR0cmli
dXRlKGxpbmVOdW1iZXIsICJicmVha3BvaW50Iik7Ci0gICAgICAgICAgICBpZiAoYnJlYWtwb2lu
dERlY29yYXRpb24pIHsKLSAgICAgICAgICAgICAgICAvLyBSZW1vdmUgZmFrZSBkZWNvcmF0aW9u
Ci0gICAgICAgICAgICAgICAgdGhpcy5fcmVtb3ZlQnJlYWtwb2ludERlY29yYXRpb24obGluZU51
bWJlcik7Ci0gICAgICAgICAgICAgICAgLy8gU2V0IG5ldyBicmVha3BvaW50Ci0gICAgICAgICAg
ICAgICAgdGhpcy5fc2V0QnJlYWtwb2ludChsaW5lTnVtYmVyLCBicmVha3BvaW50RGVjb3JhdGlv
bi5jb25kaXRpb24sIGJyZWFrcG9pbnREZWNvcmF0aW9uLmVuYWJsZWQpOworICAgICAgICBpZiAo
IXRoaXMuX2phdmFTY3JpcHRTb3VyY2UuaXNEaXJ0eSgpIHx8IHRoaXMuX2phdmFTY3JpcHRTb3Vy
Y2Uuc3VwcG9ydHNFbmFibGVkQnJlYWtwb2ludHNXaGlsZUVkaXRpbmcoKSkgeworICAgICAgICAg
ICAgLy8gUmVzdG9yZSBhbGwgbXV0ZWQgYnJlYWtwb2ludHMuCisgICAgICAgICAgICBmb3IgKHZh
ciBsaW5lTnVtYmVyID0gMDsgbGluZU51bWJlciA8IHRoaXMudGV4dE1vZGVsLmxpbmVzQ291bnQ7
ICsrbGluZU51bWJlcikgeworICAgICAgICAgICAgICAgIHZhciBicmVha3BvaW50RGVjb3JhdGlv
biA9IHRoaXMudGV4dE1vZGVsLmdldEF0dHJpYnV0ZShsaW5lTnVtYmVyLCAiYnJlYWtwb2ludCIp
OworICAgICAgICAgICAgICAgIGlmIChicmVha3BvaW50RGVjb3JhdGlvbikgeworICAgICAgICAg
ICAgICAgICAgICAvLyBSZW1vdmUgZmFrZSBkZWNvcmF0aW9uCisgICAgICAgICAgICAgICAgICAg
IHRoaXMuX3JlbW92ZUJyZWFrcG9pbnREZWNvcmF0aW9uKGxpbmVOdW1iZXIpOworICAgICAgICAg
ICAgICAgICAgICAvLyBTZXQgbmV3IGJyZWFrcG9pbnQKKyAgICAgICAgICAgICAgICAgICAgdGhp
cy5fc2V0QnJlYWtwb2ludChsaW5lTnVtYmVyLCBicmVha3BvaW50RGVjb3JhdGlvbi5jb25kaXRp
b24sIGJyZWFrcG9pbnREZWNvcmF0aW9uLmVuYWJsZWQpOworICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0sCkBAIC0zMjUsNyArMzM1LDcgQEAgV2ViSW5z
cGVjdG9yLkphdmFTY3JpcHRTb3VyY2VGcmFtZS5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgdGhp
cy50ZXh0Vmlld2VyLmJlZ2luVXBkYXRlcygpOwogICAgICAgICB0aGlzLnRleHRWaWV3ZXIuYWRk
RGVjb3JhdGlvbihsaW5lTnVtYmVyLCAid2Via2l0LWJyZWFrcG9pbnQiKTsKLSAgICAgICAgaWYg
KCFlbmFibGVkIHx8IG11dGVkV2hpbGVFZGl0aW5nKQorICAgICAgICBpZiAoIWVuYWJsZWQgfHwg
KG11dGVkV2hpbGVFZGl0aW5nICYmICF0aGlzLl9qYXZhU2NyaXB0U291cmNlLnN1cHBvcnRzRW5h
YmxlZEJyZWFrcG9pbnRzV2hpbGVFZGl0aW5nKCkpKQogICAgICAgICAgICAgdGhpcy50ZXh0Vmll
d2VyLmFkZERlY29yYXRpb24obGluZU51bWJlciwgIndlYmtpdC1icmVha3BvaW50LWRpc2FibGVk
Iik7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHRoaXMudGV4dFZpZXdlci5yZW1vdmVEZWNv
cmF0aW9uKGxpbmVOdW1iZXIsICJ3ZWJraXQtYnJlYWtwb2ludC1kaXNhYmxlZCIpOwpAQCAtMzQ4
LDcgKzM1OCw3IEBAIFdlYkluc3BlY3Rvci5KYXZhU2NyaXB0U291cmNlRnJhbWUucHJvdG90eXBl
ID0gewogCiAgICAgX29uTW91c2VEb3duOiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAg
IGlmICh0aGlzLl9qYXZhU2NyaXB0U291cmNlLmlzRGlydHkoKSkKKyAgICAgICAgaWYgKHRoaXMu
X2phdmFTY3JpcHRTb3VyY2UuaXNEaXJ0eSgpICYmICF0aGlzLl9qYXZhU2NyaXB0U291cmNlLnN1
cHBvcnRzRW5hYmxlZEJyZWFrcG9pbnRzV2hpbGVFZGl0aW5nKCkpCiAgICAgICAgICAgICByZXR1
cm47CiAKICAgICAgICAgaWYgKGV2ZW50LmJ1dHRvbiAhPSAwIHx8IGV2ZW50LmFsdEtleSB8fCBl
dmVudC5jdHJsS2V5IHx8IGV2ZW50Lm1ldGFLZXkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvU2NyaXB0LmpzCmluZGV4IGM5ZmNkM2EyM2VmYmEyNzBkMjkzMzU2MTUwZjM2
ODFlZDQwZGQwNDQuLjZiZTAzMTUxMTEyYjc5MGVkYTZhYzdhMTQ5YzQzMzI5ZjEyNTYxYTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0LmpzCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0LmpzCkBAIC0xNzMs
NyArMTczLDcgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdC5wcm90b3R5cGUgPSB7CiAgICAgICovCiAg
ICAgcmF3TG9jYXRpb25Ub1VJTG9jYXRpb246IGZ1bmN0aW9uKGxpbmVOdW1iZXIsIGNvbHVtbk51
bWJlcikKICAgICB7Ci0gICAgICAgIHZhciB1aUxvY2F0aW9uID0gdGhpcy5fc291cmNlTWFwcGlu
Zy5yYXdMb2NhdGlvblRvVUlMb2NhdGlvbihuZXcgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwu
TG9jYXRpb24odGhpcy5zY3JpcHRJZCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyIHx8IDApKTsK
KyAgICAgICAgdmFyIHVpTG9jYXRpb24gPSB0aGlzLl9zb3VyY2VNYXBwaW5nLnJhd0xvY2F0aW9u
VG9VSUxvY2F0aW9uKG5ldyBXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5Mb2NhdGlvbih0aGlz
LnNjcmlwdElkLCAiIiwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyIHx8IDApKTsKICAgICAgICAg
cmV0dXJuIHVpTG9jYXRpb24udWlTb3VyY2VDb2RlLm92ZXJyaWRlTG9jYXRpb24odWlMb2NhdGlv
bik7CiAgICAgfSwKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9TY3JpcHRTbmlwcGV0TW9kZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL1NjcmlwdFNuaXBwZXRNb2RlbC5qcwppbmRleCA5NTkzMDg5Y2QxMjhmNDNhMGVkNTZl
MWRhYWZkMzljNDIxYjFhZmE2Li5hOWY4YzAxYjY0YTQ1YmNjMzgxZDU5NmNmZTM2NmZiNDEzOTkz
OGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Njcmlw
dFNuaXBwZXRNb2RlbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1NjcmlwdFNuaXBwZXRNb2RlbC5qcwpAQCAtNDcsNyArNDcsNyBAQCBXZWJJbnNwZWN0b3IuU2Ny
aXB0U25pcHBldE1vZGVsID0gZnVuY3Rpb24oKQogICAgICAgICB0aGlzLl9hZGRTY3JpcHRTbmlw
cGV0KHNuaXBwZXRzW2ldKTsKIH0KIAotV2ViSW5zcGVjdG9yLlNjcmlwdFNuaXBwZXRNb2RlbC5l
dmFsdWF0ZWRTbmlwcGV0RXh0cmFMaW5lc0NvdW50ID0gMjsKK1dlYkluc3BlY3Rvci5TY3JpcHRT
bmlwcGV0TW9kZWwuZXZhbHVhdGVkU25pcHBldEV4dHJhTGluZXNDb3VudCA9IDM7CiBXZWJJbnNw
ZWN0b3IuU2NyaXB0U25pcHBldE1vZGVsLnNuaXBwZXRTb3VyY2VVUkxQcmVmaXggPSAic25pcHBl
dHM6Ly8iOwogCiBXZWJJbnNwZWN0b3IuU2NyaXB0U25pcHBldE1vZGVsLnByb3RvdHlwZSA9IHsK
QEAgLTg3LDYgKzg3LDcgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdFNuaXBwZXRNb2RlbC5wcm90b3R5
cGUgPSB7CiAgICAgewogICAgICAgICB2YXIgc25pcHBldCA9IHRoaXMuX3NuaXBwZXRTdG9yYWdl
LnNuaXBwZXRGb3JJZChzbmlwcGV0SmF2YVNjcmlwdFNvdXJjZS5zbmlwcGV0SWQpOwogICAgICAg
ICB0aGlzLl9zbmlwcGV0U3RvcmFnZS5kZWxldGVTbmlwcGV0KHNuaXBwZXQpOworICAgICAgICB0
aGlzLl9yZW1vdmVCcmVha3BvaW50cyhzbmlwcGV0SmF2YVNjcmlwdFNvdXJjZSk7CiAgICAgICAg
IHRoaXMuX3JlbGVhc2VTbmlwcGV0U2NyaXB0KHNuaXBwZXRKYXZhU2NyaXB0U291cmNlKTsKICAg
ICAgICAgZGVsZXRlIHRoaXMuX3NuaXBwZXRKYXZhU2NyaXB0U291cmNlRm9yU25pcHBldElkW3Nu
aXBwZXQuaWRdOwogICAgICAgICB0aGlzLl9zbmlwcGV0U2NyaXB0TWFwcGluZy5fZmlyZVVJU291
cmNlQ29kZVJlbW92ZWQoc25pcHBldEphdmFTY3JpcHRTb3VyY2UpOwpAQCAtMTA5LDcgKzExMCw3
IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRTbmlwcGV0TW9kZWwucHJvdG90eXBlID0gewogICAgICAq
IEBwYXJhbSB7V2ViSW5zcGVjdG9yLlNuaXBwZXRKYXZhU2NyaXB0U291cmNlfSBzbmlwcGV0SmF2
YVNjcmlwdFNvdXJjZQogICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuZXdDb250ZW50CiAgICAgICov
Ci0gICAgc2V0U2NyaXB0U25pcHBldENvbnRlbnQ6IGZ1bmN0aW9uKHNuaXBwZXRKYXZhU2NyaXB0
U291cmNlLCBuZXdDb250ZW50KQorICAgIF9zZXRTY3JpcHRTbmlwcGV0Q29udGVudDogZnVuY3Rp
b24oc25pcHBldEphdmFTY3JpcHRTb3VyY2UsIG5ld0NvbnRlbnQpCiAgICAgewogICAgICAgICB2
YXIgc25pcHBldCA9IHRoaXMuX3NuaXBwZXRTdG9yYWdlLnNuaXBwZXRGb3JJZChzbmlwcGV0SmF2
YVNjcmlwdFNvdXJjZS5zbmlwcGV0SWQpOwogICAgICAgICBzbmlwcGV0LmNvbnRlbnQgPSBuZXdD
b250ZW50OwpAQCAtMTE5LDE2ICsxMjAsMzkgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdFNuaXBwZXRN
b2RlbC5wcm90b3R5cGUgPSB7CiAgICAgLyoqCiAgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3Iu
U25pcHBldEphdmFTY3JpcHRTb3VyY2V9IHNuaXBwZXRKYXZhU2NyaXB0U291cmNlCiAgICAgICov
Ci0gICAgZXZhbHVhdGVTY3JpcHRTbmlwcGV0OiBmdW5jdGlvbihzbmlwcGV0SmF2YVNjcmlwdFNv
dXJjZSkKKyAgICBfc2NyaXB0U25pcHBldEVkaXRlZDogZnVuY3Rpb24oc25pcHBldEphdmFTY3Jp
cHRTb3VyY2UpCiAgICAgeworICAgICAgICB2YXIgc2NyaXB0ID0gdGhpcy5fc2NyaXB0Rm9yVUlT
b3VyY2VDb2RlLmdldChzbmlwcGV0SmF2YVNjcmlwdFNvdXJjZSk7CisgICAgICAgIGlmICghc2Ny
aXB0KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAKKyAgICAgICAgdmFyIGJyZWFrcG9p
bnRMb2NhdGlvbnMgPSB0aGlzLl9yZW1vdmVCcmVha3BvaW50cyhzbmlwcGV0SmF2YVNjcmlwdFNv
dXJjZSk7CiAgICAgICAgIHRoaXMuX3JlbGVhc2VTbmlwcGV0U2NyaXB0KHNuaXBwZXRKYXZhU2Ny
aXB0U291cmNlKTsKKyAgICAgICAgdGhpcy5fcmVzdG9yZUJyZWFrcG9pbnRzKHNuaXBwZXRKYXZh
U2NyaXB0U291cmNlLCBicmVha3BvaW50TG9jYXRpb25zKTsKKyAgICB9LAorCisgICAgLyoqCisg
ICAgICogQHBhcmFtIHtzdHJpbmd9IHNuaXBwZXRJZAorICAgICAqIEByZXR1cm4ge3N0cmluZ30K
KyAgICAgKi8KKyAgICBfbmV4dEV2YWx1YXRpb25Tb3VyY2VVUkw6IGZ1bmN0aW9uKHNuaXBwZXRJ
ZCkKKyAgICB7CiAgICAgICAgIHZhciBldmFsdWF0aW9uSW5kZXggPSB0aGlzLl9sYXN0U25pcHBl
dEV2YWx1YXRpb25JbmRleFNldHRpbmcuZ2V0KCkgKyAxOwogICAgICAgICB0aGlzLl9sYXN0U25p
cHBldEV2YWx1YXRpb25JbmRleFNldHRpbmcuc2V0KGV2YWx1YXRpb25JbmRleCk7CisgICAgICAg
IHJldHVybiB0aGlzLl9zb3VyY2VVUkxGb3JTbmlwcGV0SWQoc25pcHBldElkLCBldmFsdWF0aW9u
SW5kZXgpOworICAgIH0sCiAKLSAgICAgICAgdmFyIHNuaXBwZXQgPSB0aGlzLl9zbmlwcGV0U3Rv
cmFnZS5zbmlwcGV0Rm9ySWQoc25pcHBldEphdmFTY3JpcHRTb3VyY2Uuc25pcHBldElkKTsKLSAg
ICAgICAgdmFyIHNvdXJjZVVSTCA9IHRoaXMuX3NvdXJjZVVSTEZvclNuaXBwZXQoc25pcHBldCwg
ZXZhbHVhdGlvbkluZGV4KTsKLSAgICAgICAgc25pcHBldC5fbGFzdEV2YWx1YXRpb25Tb3VyY2VV
UkwgPSBzb3VyY2VVUkw7Ci0gICAgICAgIHZhciBleHByZXNzaW9uID0gIlxuLy9AIHNvdXJjZVVS
TD0iICsgc291cmNlVVJMICsgIlxuIiArIHNuaXBwZXQuY29udGVudDsKKyAgICAvKioKKyAgICAg
KiBAcGFyYW0ge1dlYkluc3BlY3Rvci5TbmlwcGV0SmF2YVNjcmlwdFNvdXJjZX0gc25pcHBldEph
dmFTY3JpcHRTb3VyY2UKKyAgICAgKi8KKyAgICBldmFsdWF0ZVNjcmlwdFNuaXBwZXQ6IGZ1bmN0
aW9uKHNuaXBwZXRKYXZhU2NyaXB0U291cmNlKQorICAgIHsKKyAgICAgICAgdmFyIGJyZWFrcG9p
bnRMb2NhdGlvbnMgPSB0aGlzLl9yZW1vdmVCcmVha3BvaW50cyhzbmlwcGV0SmF2YVNjcmlwdFNv
dXJjZSk7CisgICAgICAgIHRoaXMuX3JlbGVhc2VTbmlwcGV0U2NyaXB0KHNuaXBwZXRKYXZhU2Ny
aXB0U291cmNlKTsKKyAgICAgICAgc25pcHBldEphdmFTY3JpcHRTb3VyY2UuX2V2YWx1YXRpb25T
b3VyY2VVUkwgPSB0aGlzLl9uZXh0RXZhbHVhdGlvblNvdXJjZVVSTChzbmlwcGV0SmF2YVNjcmlw
dFNvdXJjZS5zbmlwcGV0SWQpOworICAgICAgICB0aGlzLl9yZXN0b3JlQnJlYWtwb2ludHMoc25p
cHBldEphdmFTY3JpcHRTb3VyY2UsIGJyZWFrcG9pbnRMb2NhdGlvbnMpOworCisgICAgICAgIHZh
ciBleHByZXNzaW9uID0gIlxuLy9AIHNvdXJjZVVSTD0iICsgc25pcHBldEphdmFTY3JpcHRTb3Vy
Y2UuX2V2YWx1YXRpb25Tb3VyY2VVUkwgKyAiXG4iICsgc25pcHBldEphdmFTY3JpcHRTb3VyY2Uu
d29ya2luZ0NvcHkoKTsKICAgICAgICAgV2ViSW5zcGVjdG9yLmV2YWx1YXRlSW5Db25zb2xlKGV4
cHJlc3Npb24sIHRydWUpOwogICAgIH0sCiAKQEAgLTE1NSwxNSArMTc5LDEzIEBAIFdlYkluc3Bl
Y3Rvci5TY3JpcHRTbmlwcGV0TW9kZWwucHJvdG90eXBlID0gewogICAgICAqLwogICAgIF91aUxv
Y2F0aW9uVG9SYXdMb2NhdGlvbjogZnVuY3Rpb24odWlTb3VyY2VDb2RlLCBsaW5lTnVtYmVyLCBj
b2x1bW5OdW1iZXIpCiAgICAgewotICAgICAgICB2YXIgc2NyaXB0ID0gdGhpcy5fc2NyaXB0Rm9y
VUlTb3VyY2VDb2RlLmdldCh1aVNvdXJjZUNvZGUpOwotICAgICAgICBpZiAoIXNjcmlwdCkKLSAg
ICAgICAgICAgIHJldHVybiBudWxsOwotCiAgICAgICAgIGlmICh1aVNvdXJjZUNvZGUuaXNTbmlw
cGV0KSB7Ci0gICAgICAgICAgICB2YXIgcmF3TGluZU51bWJlciA9IGxpbmVOdW1iZXIgKyBXZWJJ
bnNwZWN0b3IuU2NyaXB0U25pcHBldE1vZGVsLmV2YWx1YXRlZFNuaXBwZXRFeHRyYUxpbmVzQ291
bnQ7Ci0gICAgICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwuY3JlYXRl
UmF3TG9jYXRpb24oc2NyaXB0LCByYXdMaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpOworICAgICAg
ICAgICAgdmFyIHNvdXJjZVVSTCA9IHVpU291cmNlQ29kZS5fZXZhbHVhdGlvblNvdXJjZVVSTCB8
fCB1aVNvdXJjZUNvZGUuYnJlYWtwb2ludFN0b3JhZ2VJZCgpOworICAgICAgICAgICAgdmFyIGFk
anVzdGVkTGluZU51bWJlciA9IGxpbmVOdW1iZXIgKyBXZWJJbnNwZWN0b3IuU2NyaXB0U25pcHBl
dE1vZGVsLmV2YWx1YXRlZFNuaXBwZXRFeHRyYUxpbmVzQ291bnQ7CisgICAgICAgICAgICByZXR1
cm4gbmV3IFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLkxvY2F0aW9uKCIiLCBzb3VyY2VVUkws
IGFkanVzdGVkTGluZU51bWJlciwgY29sdW1uTnVtYmVyKTsKICAgICAgICAgfQogCisgICAgICAg
IHZhciBzY3JpcHQgPSB0aGlzLl9zY3JpcHRGb3JVSVNvdXJjZUNvZGUuZ2V0KHVpU291cmNlQ29k
ZSk7CiAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbC5jcmVhdGVSYXdM
b2NhdGlvbihzY3JpcHQsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcik7CiAgICAgfSwKIApAQCAt
MTk5LDcgKzIyMSw3IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRTbmlwcGV0TW9kZWwucHJvdG90eXBl
ID0gewogICAgIHsKICAgICAgICAgdmFyIHNuaXBwZXRJZCA9IHRoaXMuX3NuaXBwZXRJZEZvclNv
dXJjZVVSTChzY3JpcHQuc291cmNlVVJMKTsKICAgICAgICAgdmFyIHNuaXBwZXRKYXZhU2NyaXB0
U291cmNlID0gdGhpcy5fc25pcHBldEphdmFTY3JpcHRTb3VyY2VGb3JTbmlwcGV0SWRbc25pcHBl
dElkXTsKLSAgICAgICAgaWYgKCFzbmlwcGV0SmF2YVNjcmlwdFNvdXJjZSkgeworICAgICAgICBp
ZiAoIXNuaXBwZXRKYXZhU2NyaXB0U291cmNlIHx8IHNuaXBwZXRKYXZhU2NyaXB0U291cmNlLl9l
dmFsdWF0aW9uU291cmNlVVJMICE9PSBzY3JpcHQuc291cmNlVVJMKSB7CiAgICAgICAgICAgICB0
aGlzLl9jcmVhdGVVSVNvdXJjZUNvZGVGb3JTY3JpcHQoc2NyaXB0KTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQpAQCAtMjI1LDYgKzI0NywzMSBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0
U25pcHBldE1vZGVsLnByb3RvdHlwZSA9IHsKIAogICAgIC8qKgogICAgICAqIEBwYXJhbSB7V2Vi
SW5zcGVjdG9yLlNuaXBwZXRKYXZhU2NyaXB0U291cmNlfSBzbmlwcGV0SmF2YVNjcmlwdFNvdXJj
ZQorICAgICAqIEByZXR1cm4ge0FycmF5LjxPYmplY3Q+fQorICAgICAqLworICAgIF9yZW1vdmVC
cmVha3BvaW50czogZnVuY3Rpb24oc25pcHBldEphdmFTY3JpcHRTb3VyY2UpCisgICAgeworICAg
ICAgICB2YXIgYnJlYWtwb2ludExvY2F0aW9ucyA9IFdlYkluc3BlY3Rvci5icmVha3BvaW50TWFu
YWdlci5icmVha3BvaW50TG9jYXRpb25zRm9yVUlTb3VyY2VDb2RlKHNuaXBwZXRKYXZhU2NyaXB0
U291cmNlKTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBicmVha3BvaW50TG9jYXRpb25z
Lmxlbmd0aDsgKytpKQorICAgICAgICAgICAgYnJlYWtwb2ludExvY2F0aW9uc1tpXS5icmVha3Bv
aW50LnJlbW92ZSgpOworICAgICAgICByZXR1cm4gYnJlYWtwb2ludExvY2F0aW9uczsKKyAgICB9
LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuU25pcHBldEphdmFTY3Jp
cHRTb3VyY2V9IHNuaXBwZXRKYXZhU2NyaXB0U291cmNlCisgICAgICogQHBhcmFtIHtBcnJheS48
T2JqZWN0Pn0gYnJlYWtwb2ludExvY2F0aW9ucworICAgICAqLworICAgIF9yZXN0b3JlQnJlYWtw
b2ludHM6IGZ1bmN0aW9uKHNuaXBwZXRKYXZhU2NyaXB0U291cmNlLCBicmVha3BvaW50TG9jYXRp
b25zKQorICAgIHsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBicmVha3BvaW50TG9jYXRp
b25zLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICB2YXIgdWlMb2NhdGlvbiA9IGJyZWFrcG9p
bnRMb2NhdGlvbnNbaV0udWlMb2NhdGlvbjsKKyAgICAgICAgICAgIHZhciBicmVha3BvaW50ID0g
YnJlYWtwb2ludExvY2F0aW9uc1tpXS5icmVha3BvaW50OworICAgICAgICAgICAgV2ViSW5zcGVj
dG9yLmJyZWFrcG9pbnRNYW5hZ2VyLnNldEJyZWFrcG9pbnQodWlMb2NhdGlvbi51aVNvdXJjZUNv
ZGUsIHVpTG9jYXRpb24ubGluZU51bWJlciwgYnJlYWtwb2ludC5jb25kaXRpb24oKSwgYnJlYWtw
b2ludC5lbmFibGVkKCkpOworICAgICAgICB9CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBw
YXJhbSB7V2ViSW5zcGVjdG9yLlNuaXBwZXRKYXZhU2NyaXB0U291cmNlfSBzbmlwcGV0SmF2YVNj
cmlwdFNvdXJjZQogICAgICAqLwogICAgIF9yZWxlYXNlU25pcHBldFNjcmlwdDogZnVuY3Rpb24o
c25pcHBldEphdmFTY3JpcHRTb3VyY2UpCiAgICAgewpAQCAtMjM0LDIwICsyODEsMjAgQEAgV2Vi
SW5zcGVjdG9yLlNjcmlwdFNuaXBwZXRNb2RlbC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgZGVs
ZXRlIHRoaXMuX3VpU291cmNlQ29kZUZvclNjcmlwdElkW3NjcmlwdC5zY3JpcHRJZF07CiAgICAg
ICAgIHRoaXMuX3NjcmlwdEZvclVJU291cmNlQ29kZS5yZW1vdmUoc25pcHBldEphdmFTY3JpcHRT
b3VyY2UpOwotCisgICAgICAgIGRlbGV0ZSBzbmlwcGV0SmF2YVNjcmlwdFNvdXJjZS5fZXZhbHVh
dGlvblNvdXJjZVVSTDsKICAgICAgICAgdGhpcy5fY3JlYXRlVUlTb3VyY2VDb2RlRm9yU2NyaXB0
KHNjcmlwdCk7CiAgICAgfSwKIAogICAgIC8qKgotICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9y
LlNuaXBwZXR9IHNuaXBwZXQKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gc25pcHBldElkCiAgICAg
ICogQHBhcmFtIHtzdHJpbmd9IGV2YWx1YXRpb25JbmRleAogICAgICAqIEByZXR1cm4ge3N0cmlu
Z30KICAgICAgKi8KLSAgICBfc291cmNlVVJMRm9yU25pcHBldDogZnVuY3Rpb24oc25pcHBldCwg
ZXZhbHVhdGlvbkluZGV4KQorICAgIF9zb3VyY2VVUkxGb3JTbmlwcGV0SWQ6IGZ1bmN0aW9uKHNu
aXBwZXRJZCwgZXZhbHVhdGlvbkluZGV4KQogICAgIHsKICAgICAgICAgdmFyIHNuaXBwZXRQcmVm
aXggPSBXZWJJbnNwZWN0b3IuU2NyaXB0U25pcHBldE1vZGVsLnNuaXBwZXRTb3VyY2VVUkxQcmVm
aXg7CiAgICAgICAgIHZhciBldmFsdWF0aW9uU3VmZml4ID0gZXZhbHVhdGlvbkluZGV4ID8gIl8i
ICsgZXZhbHVhdGlvbkluZGV4IDogIiI7Ci0gICAgICAgIHJldHVybiBzbmlwcGV0UHJlZml4ICsg
c25pcHBldC5pZCArIGV2YWx1YXRpb25TdWZmaXg7CisgICAgICAgIHJldHVybiBzbmlwcGV0UHJl
Zml4ICsgc25pcHBldElkICsgZXZhbHVhdGlvblN1ZmZpeDsKICAgICB9LAogCiAgICAgLyoqCkBA
IC0yNjQsMjEgKzMxMSw2IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRTbmlwcGV0TW9kZWwucHJvdG90
eXBlID0gewogICAgICAgICByZXR1cm4gc25pcHBldElkOwogICAgIH0sCiAKLSAgICAvKioKLSAg
ICAgKiBAcGFyYW0ge3N0cmluZ30gc291cmNlVVJMCi0gICAgICogQHJldHVybiB7V2ViSW5zcGVj
dG9yLlNuaXBwZXR8bnVsbH0KLSAgICAgKi8KLSAgICBfc25pcHBldEZvclNvdXJjZVVSTDogZnVu
Y3Rpb24oc291cmNlVVJMKQotICAgIHsKLSAgICAgICAgdmFyIHNuaXBwZXRJZCA9IHRoaXMuX3Nu
aXBwZXRJZEZvclNvdXJjZVVSTChzb3VyY2VVUkwpOwotICAgICAgICBpZiAoIXNuaXBwZXRJZCkK
LSAgICAgICAgICAgIHJldHVybiBudWxsOwotICAgICAgICB2YXIgc25pcHBldCA9IHRoaXMuX3Nu
aXBwZXRTdG9yYWdlLnNuaXBwZXRGb3JJZChzbmlwcGV0SWQpOwotICAgICAgICBpZiAoIXNuaXBw
ZXQgfHwgc25pcHBldC5fbGFzdEV2YWx1YXRpb25Tb3VyY2VVUkwgIT09IHNvdXJjZVVSTCkKLSAg
ICAgICAgICAgIHJldHVybiBudWxsOwotICAgICAgICByZXR1cm4gc25pcHBldDsKLSAgICB9LAot
CiAgICAgX3Jlc2V0OiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICB2YXIgcmVtb3ZlZFVJU291
cmNlQ29kZXMgPSB0aGlzLl9yZWxlYXNlZFVJU291cmNlQ29kZXMoKTsKQEAgLTMyMSwxMCArMzUz
LDM2IEBAIFdlYkluc3BlY3Rvci5TbmlwcGV0SmF2YVNjcmlwdFNvdXJjZS5wcm90b3R5cGUgPSB7
CiAgICAgICovCiAgICAgd29ya2luZ0NvcHlDb21taXR0ZWQ6IGZ1bmN0aW9uKGNhbGxiYWNrKQog
ICAgIHsgIAotICAgICAgICB0aGlzLl9zY3JpcHRTbmlwcGV0TW9kZWwuc2V0U2NyaXB0U25pcHBl
dENvbnRlbnQodGhpcywgdGhpcy53b3JraW5nQ29weSgpKTsKKyAgICAgICAgdGhpcy5fc2NyaXB0
U25pcHBldE1vZGVsLl9zZXRTY3JpcHRTbmlwcGV0Q29udGVudCh0aGlzLCB0aGlzLndvcmtpbmdD
b3B5KCkpOwogICAgICAgICBjYWxsYmFjayhudWxsKTsKICAgICB9LAogCisgICAgd29ya2luZ0Nv
cHlDaGFuZ2VkOiBmdW5jdGlvbigpCisgICAgeyAgCisgICAgICAgIHRoaXMuX3NjcmlwdFNuaXBw
ZXRNb2RlbC5fc2NyaXB0U25pcHBldEVkaXRlZCh0aGlzKTsKKyAgICB9LAorCisgICAgZXZhbHVh
dGU6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMuX3NjcmlwdFNuaXBwZXRNb2RlbC5l
dmFsdWF0ZVNjcmlwdFNuaXBwZXQodGhpcyk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBy
ZXR1cm4ge2Jvb2xlYW59CisgICAgICovCisgICAgc3VwcG9ydHNFbmFibGVkQnJlYWtwb2ludHNX
aGlsZUVkaXRpbmc6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0sCisKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CisgICAgICovCisgICAgYnJl
YWtwb2ludFN0b3JhZ2VJZDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuICJzbmlw
cGV0czovLyIgKyB0aGlzLnNuaXBwZXRJZDsKKyAgICB9LAorCiAgICAgLyoqCiAgICAgICogQHJl
dHVybiB7c3RyaW5nfQogICAgICAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9TY3JpcHRzTmF2aWdhdG9yLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9TY3JpcHRzTmF2aWdhdG9yLmpzCmluZGV4IGE2ZGVhNTljMmU1OGZkZTEw
NGMxMzU3Njc1MjBhOWQ2ODRmYWNjMGEuLmZlNTJkNDMwYWVhNzMzM2M1MDVhMjA0MjQxMDFhYzVk
ZTRkMDYzYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
U2NyaXB0c05hdmlnYXRvci5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1NjcmlwdHNOYXZpZ2F0b3IuanMKQEAgLTIzMiw3ICsyMzIsMTAgQEAgV2ViSW5zcGVjdG9y
LlNuaXBwZXRzTmF2aWdhdG9yVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgX2hhbmRs
ZUV2YWx1YXRlU25pcHBldDogZnVuY3Rpb24odWlTb3VyY2VDb2RlLCBldmVudCkKICAgICB7Ci0g
ICAgICAgIC8vIEZJWE1FOiBUbyBiZSBpbXBsZW1lbnRlZC4KKyAgICAgICAgaWYgKCF1aVNvdXJj
ZUNvZGUuaXNTbmlwcGV0KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB2YXIgc25pcHBl
dEphdmFTY3JpcHRTb3VyY2UgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5TbmlwcGV0SmF2YVNj
cmlwdFNvdXJjZX0gKi8gdWlTb3VyY2VDb2RlOworICAgICAgICBzbmlwcGV0SmF2YVNjcmlwdFNv
dXJjZS5ldmFsdWF0ZSgpOwogICAgIH0sCiAKICAgICAvKioKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA1OTIxYjAwZjgwOWIw
ZTQ3MDFlZGMxNDA3ODRhOGQ0YTQxMjkwMDdiLi5kYjRkMWQ2Nzc4YTQyNDEwZmIxMjMzNDNhNzE1
N2NlMjUyM2RlODc4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTItMDYtMDkgIFZzZXZvbG9k
IFZsYXNvdiAgPHZzZXZpa0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjog
SW1wbGVtZW50IHNuaXBwZXRzIGV2YWx1YXRpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODcwNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL2JyZWFrcG9pbnQtbWFu
YWdlci5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHQtc25pcHBldC1t
b2RlbC5odG1sOgorCiAyMDEyLTA2LTA5ICBTdWRhcnNhbmEgTmFnaW5lbmkgIDxzdWRhcnNhbmEu
bmFnaW5lbmlAbGludXguaW50ZWwuY29tPgogCiAgICAgICAgIFtFRkxdIEdhcmRlbmluZyBmYWls
dXJlIGNhc2Ugb24gRUZMIGJ1aWxkIGJvdApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2RlYnVnZ2VyL2JyZWFrcG9pbnQtbWFuYWdlci5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2RlYnVnZ2VyL2JyZWFrcG9pbnQtbWFuYWdlci5odG1sCmluZGV4IDBiNWViNmFlMWY2YzE5
MDZmODUzMmRjOWRlYmY0MmY4NDVkYzQxNWEuLmQ2ZmIxMzg4NzJmNmJlZGM0MjU5NGRmNWViYTdm
MmY2ZDllZDE3ZDggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9i
cmVha3BvaW50LW1hbmFnZXIuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdn
ZXIvYnJlYWtwb2ludC1tYW5hZ2VyLmh0bWwKQEAgLTE2LDcgKzE2LDcgQEAgZnVuY3Rpb24gdGVz
dCgpCiAKICAgICAgICAgdWlMb2NhdGlvblRvUmF3TG9jYXRpb246IGZ1bmN0aW9uKHVpU291cmNl
Q29kZSwgbGluZU51bWJlcikKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG5ldyBXZWJJ
bnNwZWN0b3IuRGVidWdnZXJNb2RlbC5Mb2NhdGlvbih1aVNvdXJjZUNvZGUudXJsLCBsaW5lTnVt
YmVyLCAwKTsKKyAgICAgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9k
ZWwuTG9jYXRpb24odWlTb3VyY2VDb2RlLnVybCwgIiIsIGxpbmVOdW1iZXIsIDApOwogICAgICAg
ICB9CiAgICAgfTsKIApAQCAtMjgsNyArMjgsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKIAogICAgICAg
ICB1aUxvY2F0aW9uVG9SYXdMb2NhdGlvbjogZnVuY3Rpb24odWlTb3VyY2VDb2RlLCBsaW5lTnVt
YmVyKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5EZWJ1
Z2dlck1vZGVsLkxvY2F0aW9uKHVpU291cmNlQ29kZS51cmwsIGxpbmVOdW1iZXIgLSAxMCwgMCk7
CisgICAgICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLkxvY2F0
aW9uKHVpU291cmNlQ29kZS51cmwsICIiLCBsaW5lTnVtYmVyIC0gMTAsIDApOwogICAgICAgICB9
CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3Nj
cmlwdC1zbmlwcGV0LW1vZGVsLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIv
c2NyaXB0LXNuaXBwZXQtbW9kZWwuaHRtbAppbmRleCA1MmRiMTI0MzNkYmQ2ZTlmZTIwZGY5NWM4
NTNhYjhlMGE4OWRjYzFmLi41NDIwNzNhZDMwYTJmZDg2OTFhZjJiMDljYWE5MzY5YTU4ZTM4MWZm
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0LXNuaXBw
ZXQtbW9kZWwuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0
LXNuaXBwZXQtbW9kZWwuaHRtbApAQCAtMjYsNyArMjYsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAg
ICAgICAgICAgIHZhciBjb250ZW50ID0gIiI7CiAgICAgICAgICAgICBjb250ZW50ICs9ICIvLyBU
aGlzIHNuaXBwZXQgZG9lcyBub3RoaW5nLlxuIjsKICAgICAgICAgICAgIGNvbnRlbnQgKz0gInZh
ciBpID0gMisyO1xuIjsKLSAgICAgICAgICAgIFdlYkluc3BlY3Rvci5zY3JpcHRTbmlwcGV0TW9k
ZWwuc2V0U2NyaXB0U25pcHBldENvbnRlbnQoc25pcHBldEphdmFTY3JpcHRTb3VyY2UxLCBjb250
ZW50KTsKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5zY3JpcHRTbmlwcGV0TW9kZWwuX3NldFNj
cmlwdFNuaXBwZXRDb250ZW50KHNuaXBwZXRKYXZhU2NyaXB0U291cmNlMSwgY29udGVudCk7CiAK
ICAgICAgICAgICAgIHZhciBzbmlwcGV0SmF2YVNjcmlwdFNvdXJjZTIgPSBXZWJJbnNwZWN0b3Iu
c2NyaXB0U25pcHBldE1vZGVsLmNyZWF0ZVNjcmlwdFNuaXBwZXQoKTsKICAgICAgICAgICAgIFdl
Ykluc3BlY3Rvci5zY3JpcHRTbmlwcGV0TW9kZWwucmVuYW1lU2NyaXB0U25pcHBldChzbmlwcGV0
SmF2YVNjcmlwdFNvdXJjZTIsICJTbmlwcGV0MiIpOwpAQCAtMzYsMTUgKzM2LDE2IEBAIGZ1bmN0
aW9uIHRlc3QoKQogICAgICAgICAgICAgY29udGVudCArPSAie1xuIjsKICAgICAgICAgICAgIGNv
bnRlbnQgKz0gIiAgICB2YXIgIGkgPSAyKzI7XG4iOwogICAgICAgICAgICAgY29udGVudCArPSAi
fVxuIjsKLSAgICAgICAgICAgIFdlYkluc3BlY3Rvci5zY3JpcHRTbmlwcGV0TW9kZWwuc2V0U2Ny
aXB0U25pcHBldENvbnRlbnQoc25pcHBldEphdmFTY3JpcHRTb3VyY2UyLCBjb250ZW50KTsKKyAg
ICAgICAgICAgIFdlYkluc3BlY3Rvci5zY3JpcHRTbmlwcGV0TW9kZWwuX3NldFNjcmlwdFNuaXBw
ZXRDb250ZW50KHNuaXBwZXRKYXZhU2NyaXB0U291cmNlMiwgY29udGVudCk7CiAKICAgICAgICAg
ICAgIGZ1bmN0aW9uIGV2YWx1YXRlU25pcHBldEFuZER1bXBFdmFsdWF0aW9uRGV0YWlscyhzbmlw
cGV0SmF2YVNjcmlwdFNvdXJjZSwgY2FsbGJhY2spCiAgICAgICAgICAgICB7CiAgICAgICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5hZGRTbmlmZmVyKFdlYkluc3BlY3Rvci5TbmlwcGV0U2NyaXB0
TWFwcGluZy5wcm90b3R5cGUsICJhZGRTY3JpcHQiLCBkdW1wU2NyaXB0KTsKICAgICAgICAgICAg
ICAgICBXZWJJbnNwZWN0b3Iuc2NyaXB0U25pcHBldE1vZGVsLmV2YWx1YXRlU2NyaXB0U25pcHBl
dChzbmlwcGV0SmF2YVNjcmlwdFNvdXJjZSk7Ci0gICAgICAgICAgICAgICAgdmFyIHNuaXBwZXQg
PSBXZWJJbnNwZWN0b3Iuc2NyaXB0U25pcHBldE1vZGVsLl9zbmlwcGV0U3RvcmFnZS5zbmlwcGV0
Rm9ySWQoc25pcHBldEphdmFTY3JpcHRTb3VyY2Uuc25pcHBldElkKTsKLSAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiTGFzdCBldmFsdWF0aW9uIHNvdXJjZSB1cmwgZm9y
IHNuaXBwZXQ6ICIgKyBzbmlwcGV0Ll9sYXN0RXZhbHVhdGlvblNvdXJjZVVSTCk7Ci0gICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoc25pcHBldCwgV2ViSW5zcGVjdG9y
LnNjcmlwdFNuaXBwZXRNb2RlbC5fc25pcHBldEZvclNvdXJjZVVSTChzbmlwcGV0Ll9sYXN0RXZh
bHVhdGlvblNvdXJjZVVSTCksICJTbmlwcGV0IGNhbiBub3QgYmUgaWRlbnRpZmllZCBieSBpdHMg
ZXZhbHVhdGlvbiBzb3VyY2VVUkwuIik7CisgICAgICAgICAgICAgICAgdmFyIGV2YWx1YXRpb25T
b3VyY2VVUkwgPSBzbmlwcGV0SmF2YVNjcmlwdFNvdXJjZS5fZXZhbHVhdGlvblNvdXJjZVVSTDsK
KyAgICAgICAgICAgICAgICB2YXIgc25pcHBldElkID0gc25pcHBldEphdmFTY3JpcHRTb3VyY2Uu
c25pcHBldElkOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJMYXN0
IGV2YWx1YXRpb24gc291cmNlIHVybCBmb3Igc25pcHBldDogIiArIGV2YWx1YXRpb25Tb3VyY2VV
UkwpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKHNuaXBwZXRJ
ZCwgV2ViSW5zcGVjdG9yLnNjcmlwdFNuaXBwZXRNb2RlbC5fc25pcHBldElkRm9yU291cmNlVVJM
KGV2YWx1YXRpb25Tb3VyY2VVUkwpLCAiU25pcHBldCBjYW4gbm90IGJlIGlkZW50aWZpZWQgYnkg
aXRzIGV2YWx1YXRpb24gc291cmNlVVJMLiIpOwogCiAgICAgICAgICAgICAgICAgZnVuY3Rpb24g
ZHVtcFNjcmlwdChzY3JpcHQpCiAgICAgICAgICAgICAgICAgewo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149075</attachid>
            <date>2012-06-22 11:42:07 -0700</date>
            <delta_ts>2012-07-02 02:30:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88707-20120622224205.patch</filename>
            <type>text/plain</type>
            <size>29411</size>
            <attacher name="Vsevolod Vlasov">vsevik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxMDI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjYxNDUxOTcwYzU5OGM1
MmM0NTUyMjQ2YmIyZTY1MjJlYTU2NmFjYS4uZDk3MmIyNTk2YTkzY2Y3YjYwMzQ5NTdhNGE2OGJm
NTdhMmQ0NTRhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDEyLTA2LTIyICBWc2V2
b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IEltcGxlbWVudCBzbmlwcGV0cyBldmFsdWF0aW9uLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODg3MDcKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnRlZCBzbmlwcGV0IGV2YWx1YXRpb24g
YW5kIGFkanVzdGVkIGJyZWFrcG9pbnRzIGJlaGF2aW9yIHdoZW4gZWRpdGluZyBzbmlwcGV0Lgor
ICAgICAgICBTbmlwcGV0cyBhcmUgZXZhbHVhdGVkIHVzaW5nIHNlcGFyYXRlIGNvbXBpbGUgYW5k
IHJ1bi4KKyAgICAgICAgQnJlYWtwb2ludHMgYXJlIHVwZGF0ZWQgYWZ0ZXIgY29tcGlsYXRpb24g
KG9uY2Ugc2NyaXB0SWQgaXMgYXZhaWxhYmxlIHRoZXkgY2FuIGJlIHNldCBpbiBkZWJ1Z2dlciku
CisgICAgICAgIElmIHNlcGFyYXRlIGNvbXBpbGUgYW5kIHJ1biBpcyBub3Qgc3VwcG9ydGVkIGJ5
IHBvcnQgb3IgZGVidWdnZXIgaXMgcGF1c2VkIHdlIGZhbGwgYmFjayB0byBldmFsdWF0aW9uIGlu
IGNvbnNvbGUuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnNvbGVWaWV3Lmpz
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnNvbGVWaWV3LnByb3RvdHlwZS5ydW5TY3JpcHQu
cnVuQ2FsbGJhY2spOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnNvbGVWaWV3LnByb3RvdHlw
ZS5ydW5TY3JpcHQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnNvbGVWaWV3LnByb3RvdHlw
ZS5fcHJpbnRSZXN1bHQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvSmF2YVNjcmlw
dFNvdXJjZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5KYXZhU2NyaXB0U291cmNlLnByb3Rv
dHlwZS5zdXBwb3J0c0VuYWJsZWRCcmVha3BvaW50c1doaWxlRWRpdGluZyk6CisgICAgICAgICog
aW5zcGVjdG9yL2Zyb250LWVuZC9KYXZhU2NyaXB0U291cmNlRnJhbWUuanM6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuSmF2YVNjcmlwdFNvdXJjZUZyYW1lLnByb3RvdHlwZS5hZnRlclRleHRDaGFu
Z2VkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5KYXZhU2NyaXB0U291cmNlRnJhbWUucHJvdG90
eXBlLmJlZm9yZVRleHRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5KYXZhU2NyaXB0
U291cmNlRnJhbWUucHJvdG90eXBlLl9kaWRFZGl0Q29udGVudCk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuSmF2YVNjcmlwdFNvdXJjZUZyYW1lLnByb3RvdHlwZS5fcmVtb3ZlQnJlYWtwb2ludHNC
ZWZvcmVFZGl0aW5nKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5KYXZhU2NyaXB0U291cmNlRnJh
bWUucHJvdG90eXBlLl9yZXN0b3JlQnJlYWtwb2ludHNBZnRlckVkaXRpbmcpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkphdmFTY3JpcHRTb3VyY2VGcmFtZS5wcm90b3R5cGUuX2FkZEJyZWFrcG9p
bnREZWNvcmF0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5KYXZhU2NyaXB0U291cmNlRnJh
bWUucHJvdG90eXBlLl9vbk1vdXNlRG93bik6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVu
ZC9TY3JpcHRTbmlwcGV0TW9kZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0U25p
cHBldE1vZGVsLnByb3RvdHlwZS5kZWxldGVTY3JpcHRTbmlwcGV0KToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5TY3JpcHRTbmlwcGV0TW9kZWwucHJvdG90eXBlLl9zZXRTY3JpcHRTbmlwcGV0Q29u
dGVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0U25pcHBldE1vZGVsLnByb3RvdHlw
ZS5ldmFsdWF0ZVNjcmlwdFNuaXBwZXQuY29tcGlsZUNhbGxiYWNrKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5TY3JpcHRTbmlwcGV0TW9kZWwucHJvdG90eXBlLmV2YWx1YXRlU2NyaXB0U25pcHBl
dCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0U25pcHBldE1vZGVsLnByb3RvdHlwZS5f
cmF3TG9jYXRpb25Ub1VJTG9jYXRpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdFNu
aXBwZXRNb2RlbC5wcm90b3R5cGUuX3JlbW92ZUJyZWFrcG9pbnRzKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5TY3JpcHRTbmlwcGV0TW9kZWwucHJvdG90eXBlLl9yZXN0b3JlQnJlYWtwb2ludHMp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdFNuaXBwZXRNb2RlbC5wcm90b3R5cGUuX2V2
YWx1YXRpb25Tb3VyY2VVUkwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNuaXBwZXRKYXZhU2Ny
aXB0U291cmNlLnByb3RvdHlwZS5pc0RpdmVyZ2VkRnJvbVZNKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5TbmlwcGV0SmF2YVNjcmlwdFNvdXJjZS5wcm90b3R5cGUud29ya2luZ0NvcHlDb21taXR0
ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNuaXBwZXRKYXZhU2NyaXB0U291cmNlLnByb3Rv
dHlwZS53b3JraW5nQ29weUNoYW5nZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNuaXBwZXRK
YXZhU2NyaXB0U291cmNlLnByb3RvdHlwZS5ldmFsdWF0ZSk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuU25pcHBldEphdmFTY3JpcHRTb3VyY2UucHJvdG90eXBlLnN1cHBvcnRzRW5hYmxlZEJyZWFr
cG9pbnRzV2hpbGVFZGl0aW5nKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TbmlwcGV0SmF2YVNj
cmlwdFNvdXJjZS5wcm90b3R5cGUuYnJlYWtwb2ludFN0b3JhZ2VJZCk6CisgICAgICAgICogaW5z
cGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzTmF2aWdhdG9yLmpzOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlNuaXBwZXRzTmF2aWdhdG9yVmlldy5wcm90b3R5cGUuX2hhbmRsZUV2YWx1YXRlU25pcHBl
dCk6CisKIDIwMTItMDYtMjIgIElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IHBhcnRpYWxseSBpbnN0cnVtZW50IERPTSBUcmVl
IG5hdGl2ZSBtZW1vcnkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9T
Y3JpcHREZWJ1Z1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRE
ZWJ1Z1NlcnZlci5jcHAKaW5kZXggZjk1ZjJiNmEyMmRkYjgwMTk5MjRjZmFhYzk2OTJlYzUzY2Jj
OThiNi4uNTcyYjMzOWExZDcyZmY3MjIwMjJhN2E4MjIzODMyMjlhYjAwOTRjOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmNwcApAQCAtNDUx
LDYgKzQ1MSw4IEBAIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmNsZWFyQ29tcGlsZWRTY3JpcHRz
KCkKIAogdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6cnVuU2NyaXB0KFNjcmlwdFN0YXRlKiBzdGF0
ZSwgY29uc3QgU3RyaW5nJiBzY3JpcHRJZCwgU2NyaXB0VmFsdWUqIHJlc3VsdCwgYm9vbCogd2Fz
VGhyb3duLCBTdHJpbmcqIGV4Y2VwdGlvbk1lc3NhZ2UpCiB7CisgICAgaWYgKCFtX2NvbXBpbGVk
U2NyaXB0cy5jb250YWlucyhzY3JpcHRJZCkpCisgICAgICAgIHJldHVybjsKICAgICB2ODo6SGFu
ZGxlU2NvcGUgaGFuZGxlU2NvcGU7CiAgICAgT3duSGFuZGxlPHY4OjpTY3JpcHQ+KiBzY3JpcHRP
d25IYW5kbGUgPSBtX2NvbXBpbGVkU2NyaXB0cy5nZXQoc2NyaXB0SWQpOwogICAgIHY4OjpMb2Nh
bDx2ODo6U2NyaXB0PiBzY3JpcHQgPSB2ODo6TG9jYWw8djg6OlNjcmlwdD46Ok5ldyhzY3JpcHRP
d25IYW5kbGUtPmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvQ29uc29sZVZpZXcuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL0NvbnNvbGVWaWV3LmpzCmluZGV4IGMwNmU5NDdiNmZjNDhjYTExMDUxNzIyODFlNTMzYmRm
ZDc1ZDA1MjMuLmJjMGY1NDFlMzM2Mzg0M2E2ZjQ3OTg2ZWI2ZTM5NjJkNmUwNmRkYzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29uc29sZVZpZXcuanMK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db25zb2xlVmlldy5qcwpA
QCAtNzEyLDYgKzcxMiwzMSBAQCBXZWJJbnNwZWN0b3IuQ29uc29sZVZpZXcucHJvdG90eXBlID0g
ewogICAgICAgICB0aGlzLl9hcHBlbmRDb21tYW5kKHN0ciwgIiIsIHRydWUsIGZhbHNlKTsKICAg
ICB9LAogCisgICAgcnVuU2NyaXB0OiBmdW5jdGlvbihzY3JpcHRJZCkKKyAgICB7CisgICAgICAg
IHZhciBjb250ZXh0SWQgPSBXZWJJbnNwZWN0b3IuY29uc29sZVZpZXcuX2N1cnJlbnRFdmFsdWF0
aW9uQ29udGV4dElkKCk7CisgICAgICAgIERlYnVnZ2VyQWdlbnQucnVuU2NyaXB0KGNvbnRleHRJ
ZCwgc2NyaXB0SWQsICJjb25zb2xlIiwgZmFsc2UsIHJ1bkNhbGxiYWNrLmJpbmQodGhpcykpOwor
ICAgICAgICBXZWJJbnNwZWN0b3IudXNlck1ldHJpY3MuQ29uc29sZUV2YWx1YXRlZC5yZWNvcmQo
KTsKKworICAgICAgICBmdW5jdGlvbiBydW5DYWxsYmFjayhlcnJvciwgcmVzdWx0LCB3YXNUaHJv
d24pCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChlcnJvcikgeworICAgICAgICAgICAgICAg
IGNvbnNvbGUuZXJyb3IoZXJyb3IpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgdGhpcy5fcHJpbnRSZXN1bHQocmVzdWx0
LCB3YXNUaHJvd24pOworICAgICAgICB9CisgICAgfSwKKworICAgIF9wcmludFJlc3VsdDogZnVu
Y3Rpb24ocmVzdWx0LCB3YXNUaHJvd24pCisgICAgeworICAgICAgICBpZiAoIXJlc3VsdCkKKyAg
ICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlzLl9hcHBlbmRDb25zb2xlTWVzc2FnZShu
ZXcgV2ViSW5zcGVjdG9yLkNvbnNvbGVDb21tYW5kUmVzdWx0KHJlc3VsdCwgd2FzVGhyb3duLCBu
dWxsLCB0aGlzLl9saW5raWZpZXIpKTsKKyAgICB9LAorCiAgICAgX2FwcGVuZENvbW1hbmQ6IGZ1
bmN0aW9uKHRleHQsIG5ld1Byb21wdFRleHQsIHVzZUNvbW1hbmRMaW5lQVBJLCBzaG93UmVzdWx0
T25seSkKICAgICB7CiAgICAgICAgIGlmICghc2hvd1Jlc3VsdE9ubHkpIHsKQEAgLTczMCw4ICs3
NTUsOCBAQCBXZWJJbnNwZWN0b3IuQ29uc29sZVZpZXcucHJvdG90eXBlID0gewogICAgICAgICAg
ICAgICAgIHRoaXMucHJvbXB0LnB1c2hIaXN0b3J5SXRlbSh0ZXh0KTsKICAgICAgICAgICAgICAg
ICBXZWJJbnNwZWN0b3Iuc2V0dGluZ3MuY29uc29sZUhpc3Rvcnkuc2V0KHRoaXMucHJvbXB0Lmhp
c3RvcnlEYXRhLnNsaWNlKC0zMCkpOwogICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB0aGlz
Ll9hcHBlbmRDb25zb2xlTWVzc2FnZShuZXcgV2ViSW5zcGVjdG9yLkNvbnNvbGVDb21tYW5kUmVz
dWx0KHJlc3VsdCwgd2FzVGhyb3duLCBjb21tYW5kTWVzc2FnZSwgdGhpcy5fbGlua2lmaWVyKSk7
CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHRoaXMuX3ByaW50UmVzdWx0KHJlc3VsdCwgd2Fz
VGhyb3duKTsKICAgICAgICAgfQogICAgICAgICB0aGlzLmV2YWxJbkluc3BlY3RlZFdpbmRvdyh0
ZXh0LCAiY29uc29sZSIsIHVzZUNvbW1hbmRMaW5lQVBJLCBmYWxzZSwgZmFsc2UsIHByaW50UmVz
dWx0LmJpbmQodGhpcykpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0phdmFTY3JpcHRTb3VyY2UuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0phdmFTY3JpcHRTb3VyY2UuanMKaW5kZXggNjQ4N2NiYjQwMzQzZTQ1NDUzMDEx
MmYxMzFkY2RkOThiMjU4OGIxMC4uNmU2YzY1YmQyMDZlOGIyMDg0YTc3M2FhYzI0NmYyMWU3NWZl
NTI0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9KYXZh
U2NyaXB0U291cmNlLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
SmF2YVNjcmlwdFNvdXJjZS5qcwpAQCAtMTYwLDYgKzE2MCwxNCBAQCBXZWJJbnNwZWN0b3IuSmF2
YVNjcmlwdFNvdXJjZS5wcm90b3R5cGUgPSB7CiAgICAgfSwKIAogICAgIC8qKgorICAgICAqIEBy
ZXR1cm4ge2Jvb2xlYW59CisgICAgICovCisgICAgc3VwcG9ydHNFbmFibGVkQnJlYWtwb2ludHNX
aGlsZUVkaXRpbmc6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9LAorCisgICAgLyoqCiAgICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICAqLwogICAgIGJy
ZWFrcG9pbnRTdG9yYWdlSWQ6IGZ1bmN0aW9uKCkKQEAgLTE4OCw3ICsxOTYsNyBAQCBXZWJJbnNw
ZWN0b3IuSmF2YVNjcmlwdFNvdXJjZS5wcm90b3R5cGUgPSB7CiAgICAgICogQHBhcmFtIHtmdW5j
dGlvbig/c3RyaW5nKX0gY2FsbGJhY2sKICAgICAgKi8KICAgICB3b3JraW5nQ29weUNvbW1pdHRl
ZDogZnVuY3Rpb24oY2FsbGJhY2spCi0gICAgeyAgCisgICAgewogICAgICAgICAvKioKICAgICAg
ICAgICogQHBhcmFtIHs/c3RyaW5nfSBlcnJvcgogICAgICAgICAgKi8KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSmF2YVNjcmlwdFNvdXJjZUZyYW1lLmpz
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9KYXZhU2NyaXB0U291cmNlRnJh
bWUuanMKaW5kZXggYzIzMWUwMzRkMzAzZmI5ZDZjYjgwYWE3N2ZkNTc5MDI3NDhiZTY5Zi4uNDEz
MGU4MmU4ODFmYmUxMWI4OTNhYWYwZTVmMGZjNjE0ZjI5OTE4YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9KYXZhU2NyaXB0U291cmNlRnJhbWUuanMKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9KYXZhU2NyaXB0U291cmNlRnJh
bWUuanMKQEAgLTE0OSwxNCArMTQ5LDMyIEBAIFdlYkluc3BlY3Rvci5KYXZhU2NyaXB0U291cmNl
RnJhbWUucHJvdG90eXBlID0gewogCiAgICAgYWZ0ZXJUZXh0Q2hhbmdlZDogZnVuY3Rpb24ob2xk
UmFuZ2UsIG5ld1JhbmdlKQogICAgIHsKKyAgICAgICAgV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1l
LnByb3RvdHlwZS5hZnRlclRleHRDaGFuZ2VkLmNhbGwodGhpcyk7CiAgICAgICAgIHRoaXMuX2ph
dmFTY3JpcHRTb3VyY2Uuc2V0V29ya2luZ0NvcHkodGhpcy50ZXh0TW9kZWwudGV4dCk7Ci0gICAg
ICAgIGlmICghdGhpcy5famF2YVNjcmlwdFNvdXJjZS5pc0RpcnR5KCkpCi0gICAgICAgICAgICB0
aGlzLl9kaWRFZGl0Q29udGVudChudWxsKTsKKyAgICAgICAgdGhpcy5fcmVzdG9yZUJyZWFrcG9p
bnRzQWZ0ZXJFZGl0aW5nKCk7CiAgICAgfSwKIAogICAgIGJlZm9yZVRleHRDaGFuZ2VkOiBmdW5j
dGlvbigpCiAgICAgewotICAgICAgICBpZiAoIXRoaXMuX2phdmFTY3JpcHRTb3VyY2UuaXNEaXJ0
eSgpKSB7CisgICAgICAgIFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZS5wcm90b3R5cGUuYmVmb3Jl
VGV4dENoYW5nZWQuY2FsbCh0aGlzKTsKKyAgICAgICAgdGhpcy5fcmVtb3ZlQnJlYWtwb2ludHNC
ZWZvcmVFZGl0aW5nKCk7CisgICAgfSwKKworICAgIF9kaWRFZGl0Q29udGVudDogZnVuY3Rpb24o
ZXJyb3IpCisgICAgeworICAgICAgICBkZWxldGUgdGhpcy5faXNDb21taXR0aW5nRWRpdGluZzsK
KworICAgICAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5sb2coZXJy
b3IsIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlTGV2ZWwuRXJyb3IsIHRydWUp
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmICghdGhpcy5famF2
YVNjcmlwdFNvdXJjZS5zdXBwb3J0c0VuYWJsZWRCcmVha3BvaW50c1doaWxlRWRpdGluZygpKQor
ICAgICAgICAgICAgdGhpcy5fcmVzdG9yZUJyZWFrcG9pbnRzQWZ0ZXJFZGl0aW5nKCk7CisgICAg
fSwKKworICAgIF9yZW1vdmVCcmVha3BvaW50c0JlZm9yZUVkaXRpbmc6IGZ1bmN0aW9uKCkKKyAg
ICB7CisgICAgICAgIGlmICghdGhpcy5famF2YVNjcmlwdFNvdXJjZS5pc0RpcnR5KCkgfHwgdGhp
cy5famF2YVNjcmlwdFNvdXJjZS5zdXBwb3J0c0VuYWJsZWRCcmVha3BvaW50c1doaWxlRWRpdGlu
ZygpKSB7CiAgICAgICAgICAgICAvLyBEaXNhYmxlIGFsbCBicmVha3BvaW50cyBpbiB0aGUgbW9k
ZWwsIHN0b3JlIHRoZW0gYXMgbXV0ZWQgYnJlYWtwb2ludHMuCiAgICAgICAgICAgICB2YXIgYnJl
YWtwb2ludExvY2F0aW9ucyA9IHRoaXMuX2JyZWFrcG9pbnRNYW5hZ2VyLmJyZWFrcG9pbnRMb2Nh
dGlvbnNGb3JVSVNvdXJjZUNvZGUodGhpcy5famF2YVNjcmlwdFNvdXJjZSk7CiAgICAgICAgICAg
ICB2YXIgbGluZU51bWJlcnMgPSB7fTsKQEAgLTE2OCwyNyArMTg2LDIwIEBAIFdlYkluc3BlY3Rv
ci5KYXZhU2NyaXB0U291cmNlRnJhbWUucHJvdG90eXBlID0gewogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgdGhpcy5jbGVhckV4ZWN1dGlvbkxpbmUoKTsKICAgICAgICAgfQotCi0gICAgICAg
IFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZS5wcm90b3R5cGUuYmVmb3JlVGV4dENoYW5nZWQuY2Fs
bCh0aGlzKTsKICAgICB9LAogCi0gICAgX2RpZEVkaXRDb250ZW50OiBmdW5jdGlvbihlcnJvcikK
KyAgICBfcmVzdG9yZUJyZWFrcG9pbnRzQWZ0ZXJFZGl0aW5nOiBmdW5jdGlvbigpCiAgICAgewot
ICAgICAgICBkZWxldGUgdGhpcy5faXNDb21taXR0aW5nRWRpdGluZzsKLQotICAgICAgICBpZiAo
ZXJyb3IpIHsKLSAgICAgICAgICAgIFdlYkluc3BlY3Rvci5sb2coZXJyb3IsIFdlYkluc3BlY3Rv
ci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlTGV2ZWwuRXJyb3IsIHRydWUpOwotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gUmVzdG9yZSBhbGwgbXV0ZWQgYnJlYWtw
b2ludHMuCi0gICAgICAgIGZvciAodmFyIGxpbmVOdW1iZXIgPSAwOyBsaW5lTnVtYmVyIDwgdGhp
cy50ZXh0TW9kZWwubGluZXNDb3VudDsgKytsaW5lTnVtYmVyKSB7Ci0gICAgICAgICAgICB2YXIg
YnJlYWtwb2ludERlY29yYXRpb24gPSB0aGlzLnRleHRNb2RlbC5nZXRBdHRyaWJ1dGUobGluZU51
bWJlciwgImJyZWFrcG9pbnQiKTsKLSAgICAgICAgICAgIGlmIChicmVha3BvaW50RGVjb3JhdGlv
bikgewotICAgICAgICAgICAgICAgIC8vIFJlbW92ZSBmYWtlIGRlY29yYXRpb24KLSAgICAgICAg
ICAgICAgICB0aGlzLl9yZW1vdmVCcmVha3BvaW50RGVjb3JhdGlvbihsaW5lTnVtYmVyKTsKLSAg
ICAgICAgICAgICAgICAvLyBTZXQgbmV3IGJyZWFrcG9pbnQKLSAgICAgICAgICAgICAgICB0aGlz
Ll9zZXRCcmVha3BvaW50KGxpbmVOdW1iZXIsIGJyZWFrcG9pbnREZWNvcmF0aW9uLmNvbmRpdGlv
biwgYnJlYWtwb2ludERlY29yYXRpb24uZW5hYmxlZCk7CisgICAgICAgIGlmICghdGhpcy5famF2
YVNjcmlwdFNvdXJjZS5pc0RpcnR5KCkgfHwgdGhpcy5famF2YVNjcmlwdFNvdXJjZS5zdXBwb3J0
c0VuYWJsZWRCcmVha3BvaW50c1doaWxlRWRpdGluZygpKSB7CisgICAgICAgICAgICAvLyBSZXN0
b3JlIGFsbCBtdXRlZCBicmVha3BvaW50cy4KKyAgICAgICAgICAgIGZvciAodmFyIGxpbmVOdW1i
ZXIgPSAwOyBsaW5lTnVtYmVyIDwgdGhpcy50ZXh0TW9kZWwubGluZXNDb3VudDsgKytsaW5lTnVt
YmVyKSB7CisgICAgICAgICAgICAgICAgdmFyIGJyZWFrcG9pbnREZWNvcmF0aW9uID0gdGhpcy50
ZXh0TW9kZWwuZ2V0QXR0cmlidXRlKGxpbmVOdW1iZXIsICJicmVha3BvaW50Iik7CisgICAgICAg
ICAgICAgICAgaWYgKGJyZWFrcG9pbnREZWNvcmF0aW9uKSB7CisgICAgICAgICAgICAgICAgICAg
IC8vIFJlbW92ZSBmYWtlIGRlY29yYXRpb24KKyAgICAgICAgICAgICAgICAgICAgdGhpcy5fcmVt
b3ZlQnJlYWtwb2ludERlY29yYXRpb24obGluZU51bWJlcik7CisgICAgICAgICAgICAgICAgICAg
IC8vIFNldCBuZXcgYnJlYWtwb2ludAorICAgICAgICAgICAgICAgICAgICB0aGlzLl9zZXRCcmVh
a3BvaW50KGxpbmVOdW1iZXIsIGJyZWFrcG9pbnREZWNvcmF0aW9uLmNvbmRpdGlvbiwgYnJlYWtw
b2ludERlY29yYXRpb24uZW5hYmxlZCk7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
fQogICAgICAgICB9CiAgICAgfSwKQEAgLTMyNiw3ICszMzcsNyBAQCBXZWJJbnNwZWN0b3IuSmF2
YVNjcmlwdFNvdXJjZUZyYW1lLnByb3RvdHlwZSA9IHsKIAogICAgICAgICB0aGlzLnRleHRWaWV3
ZXIuYmVnaW5VcGRhdGVzKCk7CiAgICAgICAgIHRoaXMudGV4dFZpZXdlci5hZGREZWNvcmF0aW9u
KGxpbmVOdW1iZXIsICJ3ZWJraXQtYnJlYWtwb2ludCIpOwotICAgICAgICBpZiAoIWVuYWJsZWQg
fHwgbXV0ZWRXaGlsZUVkaXRpbmcpCisgICAgICAgIGlmICghZW5hYmxlZCB8fCAobXV0ZWRXaGls
ZUVkaXRpbmcgJiYgIXRoaXMuX2phdmFTY3JpcHRTb3VyY2Uuc3VwcG9ydHNFbmFibGVkQnJlYWtw
b2ludHNXaGlsZUVkaXRpbmcoKSkpCiAgICAgICAgICAgICB0aGlzLnRleHRWaWV3ZXIuYWRkRGVj
b3JhdGlvbihsaW5lTnVtYmVyLCAid2Via2l0LWJyZWFrcG9pbnQtZGlzYWJsZWQiKTsKICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgdGhpcy50ZXh0Vmlld2VyLnJlbW92ZURlY29yYXRpb24obGlu
ZU51bWJlciwgIndlYmtpdC1icmVha3BvaW50LWRpc2FibGVkIik7CkBAIC0zNDksNyArMzYwLDcg
QEAgV2ViSW5zcGVjdG9yLkphdmFTY3JpcHRTb3VyY2VGcmFtZS5wcm90b3R5cGUgPSB7CiAKICAg
ICBfb25Nb3VzZURvd246IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKLSAgICAgICAgaWYgKHRoaXMu
X2phdmFTY3JpcHRTb3VyY2UuaXNEaXJ0eSgpKQorICAgICAgICBpZiAodGhpcy5famF2YVNjcmlw
dFNvdXJjZS5pc0RpcnR5KCkgJiYgIXRoaXMuX2phdmFTY3JpcHRTb3VyY2Uuc3VwcG9ydHNFbmFi
bGVkQnJlYWtwb2ludHNXaGlsZUVkaXRpbmcoKSkKICAgICAgICAgICAgIHJldHVybjsKIAogICAg
ICAgICBpZiAoZXZlbnQuYnV0dG9uICE9IDAgfHwgZXZlbnQuYWx0S2V5IHx8IGV2ZW50LmN0cmxL
ZXkgfHwgZXZlbnQubWV0YUtleSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvU2NyaXB0U25pcHBldE1vZGVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9TY3JpcHRTbmlwcGV0TW9kZWwuanMKaW5kZXggOTU5MzA4OWNkMTI4ZjQz
YTBlZDU2ZTFkYWFmZDM5YzQyMWIxYWZhNi4uNmVjZGJlOTlmZGQ4NzVkMjY3Y2UwZWRiMzhkNzQw
YjMzYThkODhlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9TY3JpcHRTbmlwcGV0TW9kZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9TY3JpcHRTbmlwcGV0TW9kZWwuanMKQEAgLTQ3LDggKzQ3LDcgQEAgV2ViSW5zcGVj
dG9yLlNjcmlwdFNuaXBwZXRNb2RlbCA9IGZ1bmN0aW9uKCkKICAgICAgICAgdGhpcy5fYWRkU2Ny
aXB0U25pcHBldChzbmlwcGV0c1tpXSk7CiB9CiAKLVdlYkluc3BlY3Rvci5TY3JpcHRTbmlwcGV0
TW9kZWwuZXZhbHVhdGVkU25pcHBldEV4dHJhTGluZXNDb3VudCA9IDI7Ci1XZWJJbnNwZWN0b3Iu
U2NyaXB0U25pcHBldE1vZGVsLnNuaXBwZXRTb3VyY2VVUkxQcmVmaXggPSAic25pcHBldHM6Ly8i
OworV2ViSW5zcGVjdG9yLlNjcmlwdFNuaXBwZXRNb2RlbC5zbmlwcGV0U291cmNlVVJMUHJlZml4
ID0gInNuaXBwZXRzOi8vLyI7CiAKIFdlYkluc3BlY3Rvci5TY3JpcHRTbmlwcGV0TW9kZWwucHJv
dG90eXBlID0gewogICAgIC8qKgpAQCAtODcsNiArODYsNyBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0
U25pcHBldE1vZGVsLnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAgIHZhciBzbmlwcGV0ID0g
dGhpcy5fc25pcHBldFN0b3JhZ2Uuc25pcHBldEZvcklkKHNuaXBwZXRKYXZhU2NyaXB0U291cmNl
LnNuaXBwZXRJZCk7CiAgICAgICAgIHRoaXMuX3NuaXBwZXRTdG9yYWdlLmRlbGV0ZVNuaXBwZXQo
c25pcHBldCk7CisgICAgICAgIHRoaXMuX3JlbW92ZUJyZWFrcG9pbnRzKHNuaXBwZXRKYXZhU2Ny
aXB0U291cmNlKTsKICAgICAgICAgdGhpcy5fcmVsZWFzZVNuaXBwZXRTY3JpcHQoc25pcHBldEph
dmFTY3JpcHRTb3VyY2UpOwogICAgICAgICBkZWxldGUgdGhpcy5fc25pcHBldEphdmFTY3JpcHRT
b3VyY2VGb3JTbmlwcGV0SWRbc25pcHBldC5pZF07CiAgICAgICAgIHRoaXMuX3NuaXBwZXRTY3Jp
cHRNYXBwaW5nLl9maXJlVUlTb3VyY2VDb2RlUmVtb3ZlZChzbmlwcGV0SmF2YVNjcmlwdFNvdXJj
ZSk7CkBAIC0xMDcsOSArMTA3LDE5IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRTbmlwcGV0TW9kZWwu
cHJvdG90eXBlID0gewogCiAgICAgLyoqCiAgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuU25p
cHBldEphdmFTY3JpcHRTb3VyY2V9IHNuaXBwZXRKYXZhU2NyaXB0U291cmNlCisgICAgICogQHJl
dHVybiB7Ym9vbGVhbn0KKyAgICAgKi8KKyAgICBfaXNEaXZlcmdlZEZyb21WTTogZnVuY3Rpb24o
c25pcHBldEphdmFTY3JpcHRTb3VyY2UpCisgICAgeworICAgICAgICB2YXIgc2NyaXB0ID0gdGhp
cy5fc2NyaXB0Rm9yVUlTb3VyY2VDb2RlLmdldChzbmlwcGV0SmF2YVNjcmlwdFNvdXJjZSk7Cisg
ICAgICAgIHJldHVybiAhc2NyaXB0OworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0g
e1dlYkluc3BlY3Rvci5TbmlwcGV0SmF2YVNjcmlwdFNvdXJjZX0gc25pcHBldEphdmFTY3JpcHRT
b3VyY2UKICAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmV3Q29udGVudAogICAgICAqLwotICAgIHNl
dFNjcmlwdFNuaXBwZXRDb250ZW50OiBmdW5jdGlvbihzbmlwcGV0SmF2YVNjcmlwdFNvdXJjZSwg
bmV3Q29udGVudCkKKyAgICBfc2V0U2NyaXB0U25pcHBldENvbnRlbnQ6IGZ1bmN0aW9uKHNuaXBw
ZXRKYXZhU2NyaXB0U291cmNlLCBuZXdDb250ZW50KQogICAgIHsKICAgICAgICAgdmFyIHNuaXBw
ZXQgPSB0aGlzLl9zbmlwcGV0U3RvcmFnZS5zbmlwcGV0Rm9ySWQoc25pcHBldEphdmFTY3JpcHRT
b3VyY2Uuc25pcHBldElkKTsKICAgICAgICAgc25pcHBldC5jb250ZW50ID0gbmV3Q29udGVudDsK
QEAgLTExOSwxNyArMTI5LDgxIEBAIFdlYkluc3BlY3Rvci5TY3JpcHRTbmlwcGV0TW9kZWwucHJv
dG90eXBlID0gewogICAgIC8qKgogICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlNuaXBwZXRK
YXZhU2NyaXB0U291cmNlfSBzbmlwcGV0SmF2YVNjcmlwdFNvdXJjZQogICAgICAqLwotICAgIGV2
YWx1YXRlU2NyaXB0U25pcHBldDogZnVuY3Rpb24oc25pcHBldEphdmFTY3JpcHRTb3VyY2UpCisg
ICAgX3NjcmlwdFNuaXBwZXRFZGl0ZWQ6IGZ1bmN0aW9uKHNuaXBwZXRKYXZhU2NyaXB0U291cmNl
KQogICAgIHsKKyAgICAgICAgdmFyIHNjcmlwdCA9IHRoaXMuX3NjcmlwdEZvclVJU291cmNlQ29k
ZS5nZXQoc25pcHBldEphdmFTY3JpcHRTb3VyY2UpOworICAgICAgICBpZiAoIXNjcmlwdCkKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgCisgICAgICAgIHZhciBicmVha3BvaW50TG9jYXRp
b25zID0gdGhpcy5fcmVtb3ZlQnJlYWtwb2ludHMoc25pcHBldEphdmFTY3JpcHRTb3VyY2UpOwog
ICAgICAgICB0aGlzLl9yZWxlYXNlU25pcHBldFNjcmlwdChzbmlwcGV0SmF2YVNjcmlwdFNvdXJj
ZSk7CisgICAgICAgIHRoaXMuX3Jlc3RvcmVCcmVha3BvaW50cyhzbmlwcGV0SmF2YVNjcmlwdFNv
dXJjZSwgYnJlYWtwb2ludExvY2F0aW9ucyk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBw
YXJhbSB7c3RyaW5nfSBzbmlwcGV0SWQKKyAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CisgICAgICov
CisgICAgX25leHRFdmFsdWF0aW9uSW5kZXg6IGZ1bmN0aW9uKHNuaXBwZXRJZCkKKyAgICB7CiAg
ICAgICAgIHZhciBldmFsdWF0aW9uSW5kZXggPSB0aGlzLl9sYXN0U25pcHBldEV2YWx1YXRpb25J
bmRleFNldHRpbmcuZ2V0KCkgKyAxOwogICAgICAgICB0aGlzLl9sYXN0U25pcHBldEV2YWx1YXRp
b25JbmRleFNldHRpbmcuc2V0KGV2YWx1YXRpb25JbmRleCk7CisgICAgICAgIHJldHVybiBldmFs
dWF0aW9uSW5kZXg7CisgICAgfSwKIAotICAgICAgICB2YXIgc25pcHBldCA9IHRoaXMuX3NuaXBw
ZXRTdG9yYWdlLnNuaXBwZXRGb3JJZChzbmlwcGV0SmF2YVNjcmlwdFNvdXJjZS5zbmlwcGV0SWQp
OwotICAgICAgICB2YXIgc291cmNlVVJMID0gdGhpcy5fc291cmNlVVJMRm9yU25pcHBldChzbmlw
cGV0LCBldmFsdWF0aW9uSW5kZXgpOwotICAgICAgICBzbmlwcGV0Ll9sYXN0RXZhbHVhdGlvblNv
dXJjZVVSTCA9IHNvdXJjZVVSTDsKLSAgICAgICAgdmFyIGV4cHJlc3Npb24gPSAiXG4vL0Agc291
cmNlVVJMPSIgKyBzb3VyY2VVUkwgKyAiXG4iICsgc25pcHBldC5jb250ZW50OwotICAgICAgICBX
ZWJJbnNwZWN0b3IuZXZhbHVhdGVJbkNvbnNvbGUoZXhwcmVzc2lvbiwgdHJ1ZSk7CisgICAgLyoq
CisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuU25pcHBldEphdmFTY3JpcHRTb3VyY2V9IHNu
aXBwZXRKYXZhU2NyaXB0U291cmNlCisgICAgICovCisgICAgZXZhbHVhdGVTY3JpcHRTbmlwcGV0
OiBmdW5jdGlvbihzbmlwcGV0SmF2YVNjcmlwdFNvdXJjZSkKKyAgICB7CisgICAgICAgIHZhciBi
cmVha3BvaW50TG9jYXRpb25zID0gdGhpcy5fcmVtb3ZlQnJlYWtwb2ludHMoc25pcHBldEphdmFT
Y3JpcHRTb3VyY2UpOworICAgICAgICB0aGlzLl9yZWxlYXNlU25pcHBldFNjcmlwdChzbmlwcGV0
SmF2YVNjcmlwdFNvdXJjZSk7CisgICAgICAgIHRoaXMuX3Jlc3RvcmVCcmVha3BvaW50cyhzbmlw
cGV0SmF2YVNjcmlwdFNvdXJjZSwgYnJlYWtwb2ludExvY2F0aW9ucyk7CisgICAgICAgIHZhciBl
dmFsdWF0aW9uSW5kZXggPSB0aGlzLl9uZXh0RXZhbHVhdGlvbkluZGV4KHNuaXBwZXRKYXZhU2Ny
aXB0U291cmNlLnNuaXBwZXRJZCk7CisgICAgICAgIHNuaXBwZXRKYXZhU2NyaXB0U291cmNlLl9l
dmFsdWF0aW9uSW5kZXggPSBldmFsdWF0aW9uSW5kZXg7CisgICAgICAgIHZhciBldmFsdWF0aW9u
VXJsID0gdGhpcy5fZXZhbHVhdGlvblNvdXJjZVVSTChzbmlwcGV0SmF2YVNjcmlwdFNvdXJjZSk7
CisKKyAgICAgICAgdmFyIGV4cHJlc3Npb24gPSBzbmlwcGV0SmF2YVNjcmlwdFNvdXJjZS53b3Jr
aW5nQ29weSgpOworICAgICAgICAKKyAgICAgICAgLy8gSW4gb3JkZXIgdG8gc3RvcCBvbiB0aGUg
YnJlYWtwb2ludHMgZHVyaW5nIHRoZSBzbmlwcGV0IGV2YWx1YXRpb24gd2UgbmVlZCB0byBjb21w
aWxlIGFuZCBydW4gaXQgc2VwYXJhdGVseS4KKyAgICAgICAgLy8gSWYgc2VwYXJhdGUgY29tcGls
YXRpb24gYW5kIGV4ZWN1dGlvbiBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBwb3J0IHdlIGZhbGwg
YmFjayB0byBldmFsdWF0aW9uIGluIGNvbnNvbGUuCisgICAgICAgIC8vIEluIGNhc2Ugd2UgZG9u
J3QgbmVlZCB0aGF0IHNpbmNlIGRlYnVnZ2VyIGlzIGFscmVhZHkgcGF1c2VkLgorICAgICAgICAv
LyBXZSBkbyB0aGUgc2FtZSB3aGVuIHdlIGFyZSBzdG9wcGVkIG9uIHRoZSBjYWxsIGZyYW1lICBz
aW5jZSBkZWJ1Z2dlciBpcyBhbHJlYWR5IHBhdXNlZCBhbmQgY2FuIG5vdCBzdG9wIG9uIGJyZWFr
cG9pbnQgYW55bW9yZS4KKyAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLnNl
bGVjdGVkQ2FsbEZyYW1lKCkgfHwgIUNhcGFiaWxpdGllcy5zZXBhcmF0ZVNjcmlwdENvbXBpbGF0
aW9uQW5kRXhlY3V0aW9uRW5hYmxlZCkgeworICAgICAgICAgICAgdmFyIGV4cHJlc3Npb24gPSBz
bmlwcGV0SmF2YVNjcmlwdFNvdXJjZS53b3JraW5nQ29weSgpICsgIlxuLy9AIHNvdXJjZVVSTD0i
ICsgc25pcHBldEphdmFTY3JpcHRTb3VyY2UudXJsICsgIlxuIjsKKyAgICAgICAgICAgIFdlYklu
c3BlY3Rvci5ldmFsdWF0ZUluQ29uc29sZShleHByZXNzaW9uLCB0cnVlKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgV2ViSW5zcGVjdG9yLnNob3dD
b25zb2xlKCk7CisgICAgICAgIERlYnVnZ2VyQWdlbnQuY29tcGlsZVNjcmlwdChleHByZXNzaW9u
LCBldmFsdWF0aW9uVXJsLCBjb21waWxlQ2FsbGJhY2suYmluZCh0aGlzKSk7CisKKyAgICAgICAg
ZnVuY3Rpb24gY29tcGlsZUNhbGxiYWNrKGVycm9yLCBzY3JpcHRJZCwgc3ludGF4RXJyb3JNZXNz
YWdlKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIXNuaXBwZXRKYXZhU2NyaXB0U291cmNl
IHx8IHNuaXBwZXRKYXZhU2NyaXB0U291cmNlLl9ldmFsdWF0aW9uSW5kZXggIT09IGV2YWx1YXRp
b25JbmRleCkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIGlmIChlcnJv
cikgeworICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpOworICAgICAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCFzY3JpcHRJZCkg
eworICAgICAgICAgICAgICAgIHZhciBjb25zb2xlTWVzc2FnZSA9IFdlYkluc3BlY3Rvci5Db25z
b2xlTWVzc2FnZS5jcmVhdGUoCisgICAgICAgICAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3Iu
Q29uc29sZU1lc3NhZ2UuTWVzc2FnZVNvdXJjZS5KUywKKyAgICAgICAgICAgICAgICAgICAgICAg
IFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlTGV2ZWwuRXJyb3IsCisgICAgICAg
ICAgICAgICAgICAgICAgICBzeW50YXhFcnJvck1lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAg
ICAgICBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZVR5cGUuTG9nLAorICAgICAg
ICAgICAgICAgICAgICAgICAgIiIsIDAsIDEsIG51bGwsIG51bGwsIG51bGwpOworICAgICAgICAg
ICAgICAgIFdlYkluc3BlY3Rvci5jb25zb2xlLmFkZE1lc3NhZ2UoY29uc29sZU1lc3NhZ2UpOwor
ICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFy
IGJyZWFrcG9pbnRMb2NhdGlvbnMgPSB0aGlzLl9yZW1vdmVCcmVha3BvaW50cyhzbmlwcGV0SmF2
YVNjcmlwdFNvdXJjZSk7CisgICAgICAgICAgICB0aGlzLl9yZXN0b3JlQnJlYWtwb2ludHMoc25p
cHBldEphdmFTY3JpcHRTb3VyY2UsIGJyZWFrcG9pbnRMb2NhdGlvbnMpOworCisgICAgICAgICAg
ICBXZWJJbnNwZWN0b3IuY29uc29sZVZpZXcucnVuU2NyaXB0KHNjcmlwdElkKTsKKyAgICAgICAg
fQogICAgIH0sCiAKICAgICAvKioKQEAgLTEzOSwxMSArMjEzLDYgQEAgV2ViSW5zcGVjdG9yLlNj
cmlwdFNuaXBwZXRNb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgX3Jhd0xvY2F0aW9uVG9VSUxvY2F0
aW9uOiBmdW5jdGlvbihyYXdMb2NhdGlvbikKICAgICB7CiAgICAgICAgIHZhciB1aVNvdXJjZUNv
ZGUgPSB0aGlzLl91aVNvdXJjZUNvZGVGb3JTY3JpcHRJZFtyYXdMb2NhdGlvbi5zY3JpcHRJZF07
Ci0gICAgICAgIGlmICh1aVNvdXJjZUNvZGUuaXNTbmlwcGV0KSB7Ci0gICAgICAgICAgICB2YXIg
dWlMaW5lTnVtYmVyID0gcmF3TG9jYXRpb24ubGluZU51bWJlciAtIFdlYkluc3BlY3Rvci5TY3Jp
cHRTbmlwcGV0TW9kZWwuZXZhbHVhdGVkU25pcHBldEV4dHJhTGluZXNDb3VudDsKLSAgICAgICAg
ICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlVJTG9jYXRpb24odWlTb3VyY2VDb2RlLCB1aUxp
bmVOdW1iZXIsIHJhd0xvY2F0aW9uLmNvbHVtbk51bWJlciB8fCAwKTsKLSAgICAgICAgfQotCiAg
ICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlVJTG9jYXRpb24odWlTb3VyY2VDb2RlLCBy
YXdMb2NhdGlvbi5saW5lTnVtYmVyLCByYXdMb2NhdGlvbi5jb2x1bW5OdW1iZXIgfHwgMCk7CiAg
ICAgfSwKIApAQCAtMTU5LDExICsyMjgsNiBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0U25pcHBldE1v
ZGVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKCFzY3JpcHQpCiAgICAgICAgICAgICByZXR1
cm4gbnVsbDsKIAotICAgICAgICBpZiAodWlTb3VyY2VDb2RlLmlzU25pcHBldCkgewotICAgICAg
ICAgICAgdmFyIHJhd0xpbmVOdW1iZXIgPSBsaW5lTnVtYmVyICsgV2ViSW5zcGVjdG9yLlNjcmlw
dFNuaXBwZXRNb2RlbC5ldmFsdWF0ZWRTbmlwcGV0RXh0cmFMaW5lc0NvdW50OwotICAgICAgICAg
ICAgcmV0dXJuIFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLmNyZWF0ZVJhd0xvY2F0aW9uKHNj
cmlwdCwgcmF3TGluZU51bWJlciwgY29sdW1uTnVtYmVyKTsKLSAgICAgICAgfQotCiAgICAgICAg
IHJldHVybiBXZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbC5jcmVhdGVSYXdMb2NhdGlvbihzY3Jp
cHQsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcik7CiAgICAgfSwKIApAQCAtMTk5LDcgKzI2Myw4
IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRTbmlwcGV0TW9kZWwucHJvdG90eXBlID0gewogICAgIHsK
ICAgICAgICAgdmFyIHNuaXBwZXRJZCA9IHRoaXMuX3NuaXBwZXRJZEZvclNvdXJjZVVSTChzY3Jp
cHQuc291cmNlVVJMKTsKICAgICAgICAgdmFyIHNuaXBwZXRKYXZhU2NyaXB0U291cmNlID0gdGhp
cy5fc25pcHBldEphdmFTY3JpcHRTb3VyY2VGb3JTbmlwcGV0SWRbc25pcHBldElkXTsKLSAgICAg
ICAgaWYgKCFzbmlwcGV0SmF2YVNjcmlwdFNvdXJjZSkgeworICAgICAgICAKKyAgICAgICAgaWYg
KCFzbmlwcGV0SmF2YVNjcmlwdFNvdXJjZSB8fCB0aGlzLl9ldmFsdWF0aW9uU291cmNlVVJMKHNu
aXBwZXRKYXZhU2NyaXB0U291cmNlKSAhPT0gc2NyaXB0LnNvdXJjZVVSTCkgewogICAgICAgICAg
ICAgdGhpcy5fY3JlYXRlVUlTb3VyY2VDb2RlRm9yU2NyaXB0KHNjcmlwdCk7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KQEAgLTIyNSw2ICsyOTAsMzEgQEAgV2ViSW5zcGVjdG9yLlNj
cmlwdFNuaXBwZXRNb2RlbC5wcm90b3R5cGUgPSB7CiAKICAgICAvKioKICAgICAgKiBAcGFyYW0g
e1dlYkluc3BlY3Rvci5TbmlwcGV0SmF2YVNjcmlwdFNvdXJjZX0gc25pcHBldEphdmFTY3JpcHRT
b3VyY2UKKyAgICAgKiBAcmV0dXJuIHtBcnJheS48T2JqZWN0Pn0KKyAgICAgKi8KKyAgICBfcmVt
b3ZlQnJlYWtwb2ludHM6IGZ1bmN0aW9uKHNuaXBwZXRKYXZhU2NyaXB0U291cmNlKQorICAgIHsK
KyAgICAgICAgdmFyIGJyZWFrcG9pbnRMb2NhdGlvbnMgPSBXZWJJbnNwZWN0b3IuYnJlYWtwb2lu
dE1hbmFnZXIuYnJlYWtwb2ludExvY2F0aW9uc0ZvclVJU291cmNlQ29kZShzbmlwcGV0SmF2YVNj
cmlwdFNvdXJjZSk7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYnJlYWtwb2ludExvY2F0
aW9ucy5sZW5ndGg7ICsraSkKKyAgICAgICAgICAgIGJyZWFrcG9pbnRMb2NhdGlvbnNbaV0uYnJl
YWtwb2ludC5yZW1vdmUoKTsKKyAgICAgICAgcmV0dXJuIGJyZWFrcG9pbnRMb2NhdGlvbnM7Cisg
ICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlNuaXBwZXRKYXZh
U2NyaXB0U291cmNlfSBzbmlwcGV0SmF2YVNjcmlwdFNvdXJjZQorICAgICAqIEBwYXJhbSB7QXJy
YXkuPE9iamVjdD59IGJyZWFrcG9pbnRMb2NhdGlvbnMKKyAgICAgKi8KKyAgICBfcmVzdG9yZUJy
ZWFrcG9pbnRzOiBmdW5jdGlvbihzbmlwcGV0SmF2YVNjcmlwdFNvdXJjZSwgYnJlYWtwb2ludExv
Y2F0aW9ucykKKyAgICB7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYnJlYWtwb2ludExv
Y2F0aW9ucy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgdmFyIHVpTG9jYXRpb24gPSBicmVh
a3BvaW50TG9jYXRpb25zW2ldLnVpTG9jYXRpb247CisgICAgICAgICAgICB2YXIgYnJlYWtwb2lu
dCA9IGJyZWFrcG9pbnRMb2NhdGlvbnNbaV0uYnJlYWtwb2ludDsKKyAgICAgICAgICAgIFdlYklu
c3BlY3Rvci5icmVha3BvaW50TWFuYWdlci5zZXRCcmVha3BvaW50KHVpTG9jYXRpb24udWlTb3Vy
Y2VDb2RlLCB1aUxvY2F0aW9uLmxpbmVOdW1iZXIsIGJyZWFrcG9pbnQuY29uZGl0aW9uKCksIGJy
ZWFrcG9pbnQuZW5hYmxlZCgpKTsKKyAgICAgICAgfQorICAgIH0sCisKKyAgICAvKioKKyAgICAg
KiBAcGFyYW0ge1dlYkluc3BlY3Rvci5TbmlwcGV0SmF2YVNjcmlwdFNvdXJjZX0gc25pcHBldEph
dmFTY3JpcHRTb3VyY2UKICAgICAgKi8KICAgICBfcmVsZWFzZVNuaXBwZXRTY3JpcHQ6IGZ1bmN0
aW9uKHNuaXBwZXRKYXZhU2NyaXB0U291cmNlKQogICAgIHsKQEAgLTIzNCwyMCArMzI0LDE5IEBA
IFdlYkluc3BlY3Rvci5TY3JpcHRTbmlwcGV0TW9kZWwucHJvdG90eXBlID0gewogCiAgICAgICAg
IGRlbGV0ZSB0aGlzLl91aVNvdXJjZUNvZGVGb3JTY3JpcHRJZFtzY3JpcHQuc2NyaXB0SWRdOwog
ICAgICAgICB0aGlzLl9zY3JpcHRGb3JVSVNvdXJjZUNvZGUucmVtb3ZlKHNuaXBwZXRKYXZhU2Ny
aXB0U291cmNlKTsKLQorICAgICAgICBkZWxldGUgc25pcHBldEphdmFTY3JpcHRTb3VyY2UuX2V2
YWx1YXRpb25JbmRleDsKICAgICAgICAgdGhpcy5fY3JlYXRlVUlTb3VyY2VDb2RlRm9yU2NyaXB0
KHNjcmlwdCk7CiAgICAgfSwKIAogICAgIC8qKgotICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9y
LlNuaXBwZXR9IHNuaXBwZXQKLSAgICAgKiBAcGFyYW0ge3N0cmluZ30gZXZhbHVhdGlvbkluZGV4
CisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuU25pcHBldEphdmFTY3JpcHRTb3VyY2V9IHNu
aXBwZXRKYXZhU2NyaXB0U291cmNlCiAgICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICAqLwot
ICAgIF9zb3VyY2VVUkxGb3JTbmlwcGV0OiBmdW5jdGlvbihzbmlwcGV0LCBldmFsdWF0aW9uSW5k
ZXgpCisgICAgX2V2YWx1YXRpb25Tb3VyY2VVUkw6IGZ1bmN0aW9uKHNuaXBwZXRKYXZhU2NyaXB0
U291cmNlKQogICAgIHsKICAgICAgICAgdmFyIHNuaXBwZXRQcmVmaXggPSBXZWJJbnNwZWN0b3Iu
U2NyaXB0U25pcHBldE1vZGVsLnNuaXBwZXRTb3VyY2VVUkxQcmVmaXg7Ci0gICAgICAgIHZhciBl
dmFsdWF0aW9uU3VmZml4ID0gZXZhbHVhdGlvbkluZGV4ID8gIl8iICsgZXZhbHVhdGlvbkluZGV4
IDogIiI7Ci0gICAgICAgIHJldHVybiBzbmlwcGV0UHJlZml4ICsgc25pcHBldC5pZCArIGV2YWx1
YXRpb25TdWZmaXg7CisgICAgICAgIHZhciBldmFsdWF0aW9uU3VmZml4ID0gIl8iICsgc25pcHBl
dEphdmFTY3JpcHRTb3VyY2UuX2V2YWx1YXRpb25JbmRleDsKKyAgICAgICAgcmV0dXJuIHNuaXBw
ZXRQcmVmaXggKyBzbmlwcGV0SmF2YVNjcmlwdFNvdXJjZS5zbmlwcGV0SWQgKyBldmFsdWF0aW9u
U3VmZml4OwogICAgIH0sCiAKICAgICAvKioKQEAgLTI2NCwyMSArMzUzLDYgQEAgV2ViSW5zcGVj
dG9yLlNjcmlwdFNuaXBwZXRNb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiBzbmlw
cGV0SWQ7CiAgICAgfSwKIAotICAgIC8qKgotICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzb3VyY2VV
UkwKLSAgICAgKiBAcmV0dXJuIHtXZWJJbnNwZWN0b3IuU25pcHBldHxudWxsfQotICAgICAqLwot
ICAgIF9zbmlwcGV0Rm9yU291cmNlVVJMOiBmdW5jdGlvbihzb3VyY2VVUkwpCi0gICAgewotICAg
ICAgICB2YXIgc25pcHBldElkID0gdGhpcy5fc25pcHBldElkRm9yU291cmNlVVJMKHNvdXJjZVVS
TCk7Ci0gICAgICAgIGlmICghc25pcHBldElkKQotICAgICAgICAgICAgcmV0dXJuIG51bGw7Ci0g
ICAgICAgIHZhciBzbmlwcGV0ID0gdGhpcy5fc25pcHBldFN0b3JhZ2Uuc25pcHBldEZvcklkKHNu
aXBwZXRJZCk7Ci0gICAgICAgIGlmICghc25pcHBldCB8fCBzbmlwcGV0Ll9sYXN0RXZhbHVhdGlv
blNvdXJjZVVSTCAhPT0gc291cmNlVVJMKQotICAgICAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAg
ICAgIHJldHVybiBzbmlwcGV0OwotICAgIH0sCi0KICAgICBfcmVzZXQ6IGZ1bmN0aW9uKCkKICAg
ICB7CiAgICAgICAgIHZhciByZW1vdmVkVUlTb3VyY2VDb2RlcyA9IHRoaXMuX3JlbGVhc2VkVUlT
b3VyY2VDb2RlcygpOwpAQCAtMzE3LDE0ICszOTEsNDggQEAgV2ViSW5zcGVjdG9yLlNuaXBwZXRK
YXZhU2NyaXB0U291cmNlLnByb3RvdHlwZSA9IHsKICAgICB9LAogCiAgICAgLyoqCisgICAgICog
QHJldHVybiB7Ym9vbGVhbn0KKyAgICAgKi8KKyAgICBpc0RpdmVyZ2VkRnJvbVZNOiBmdW5jdGlv
bigpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fc2NyaXB0U25pcHBldE1vZGVsLl9pc0Rp
dmVyZ2VkRnJvbVZNKHRoaXMpOworICAgIH0sCisKKyAgICAvKioKICAgICAgKiBAcGFyYW0ge2Z1
bmN0aW9uKD9zdHJpbmcpfSBjYWxsYmFjawogICAgICAqLwogICAgIHdvcmtpbmdDb3B5Q29tbWl0
dGVkOiBmdW5jdGlvbihjYWxsYmFjaykKICAgICB7ICAKLSAgICAgICAgdGhpcy5fc2NyaXB0U25p
cHBldE1vZGVsLnNldFNjcmlwdFNuaXBwZXRDb250ZW50KHRoaXMsIHRoaXMud29ya2luZ0NvcHko
KSk7CisgICAgICAgIHRoaXMuX3NjcmlwdFNuaXBwZXRNb2RlbC5fc2V0U2NyaXB0U25pcHBldENv
bnRlbnQodGhpcywgdGhpcy53b3JraW5nQ29weSgpKTsKICAgICAgICAgY2FsbGJhY2sobnVsbCk7
CiAgICAgfSwKIAorICAgIHdvcmtpbmdDb3B5Q2hhbmdlZDogZnVuY3Rpb24oKQorICAgIHsgIAor
ICAgICAgICB0aGlzLl9zY3JpcHRTbmlwcGV0TW9kZWwuX3NjcmlwdFNuaXBwZXRFZGl0ZWQodGhp
cyk7CisgICAgfSwKKworICAgIGV2YWx1YXRlOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0
aGlzLl9zY3JpcHRTbmlwcGV0TW9kZWwuZXZhbHVhdGVTY3JpcHRTbmlwcGV0KHRoaXMpOworICAg
IH0sCisKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtib29sZWFufQorICAgICAqLworICAgIHN1
cHBvcnRzRW5hYmxlZEJyZWFrcG9pbnRzV2hpbGVFZGl0aW5nOiBmdW5jdGlvbigpCisgICAgewor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHJldHVybiB7
c3RyaW5nfQorICAgICAqLworICAgIGJyZWFrcG9pbnRTdG9yYWdlSWQ6IGZ1bmN0aW9uKCkKKyAg
ICB7CisgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuU2NyaXB0U25pcHBldE1vZGVsLnNuaXBw
ZXRTb3VyY2VVUkxQcmVmaXggKyB0aGlzLnNuaXBwZXRJZDsKKyAgICB9LAorCiAgICAgLyoqCiAg
ICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzTmF2aWdhdG9yLmpzIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzTmF2aWdhdG9yLmpzCmluZGV4IGE2ZGVhNTlj
MmU1OGZkZTEwNGMxMzU3Njc1MjBhOWQ2ODRmYWNjMGEuLmZlNTJkNDMwYWVhNzMzM2M1MDVhMjA0
MjQxMDFhYzVkZTRkMDYzYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvU2NyaXB0c05hdmlnYXRvci5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1NjcmlwdHNOYXZpZ2F0b3IuanMKQEAgLTIzMiw3ICsyMzIsMTAgQEAgV2Vi
SW5zcGVjdG9yLlNuaXBwZXRzTmF2aWdhdG9yVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICovCiAg
ICAgX2hhbmRsZUV2YWx1YXRlU25pcHBldDogZnVuY3Rpb24odWlTb3VyY2VDb2RlLCBldmVudCkK
ICAgICB7Ci0gICAgICAgIC8vIEZJWE1FOiBUbyBiZSBpbXBsZW1lbnRlZC4KKyAgICAgICAgaWYg
KCF1aVNvdXJjZUNvZGUuaXNTbmlwcGV0KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB2
YXIgc25pcHBldEphdmFTY3JpcHRTb3VyY2UgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5Tbmlw
cGV0SmF2YVNjcmlwdFNvdXJjZX0gKi8gdWlTb3VyY2VDb2RlOworICAgICAgICBzbmlwcGV0SmF2
YVNjcmlwdFNvdXJjZS5ldmFsdWF0ZSgpOwogICAgIH0sCiAKICAgICAvKioKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAyNDFm
NDcyMzZmOWUzZTZjODc2MjZiYTBlMjExMWVkZTU4NGYyYjdlLi41YWI2ODI0NTdjZGQyOTU1ZWMx
NWI4M2UzZmNiODYxMjQ0MWI3MjdjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
KysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTItMDYtMjIg
IFZzZXZvbG9kIFZsYXNvdiAgPHZzZXZpa0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIElu
c3BlY3RvcjogSW1wbGVtZW50IHNuaXBwZXRzIGV2YWx1YXRpb24uCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODcwNworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL3Njcmlw
dC1zbmlwcGV0LW1vZGVsLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdn
ZXIvc2NyaXB0LXNuaXBwZXQtbW9kZWwuaHRtbDoKKwogMjAxMi0wNi0yMiAgw4Fkw6FtIEthbGxh
aSAgPGthZGFtQGluZi51LXN6ZWdlZC5odT4KIAogICAgICAgICBbUXRdIFVucmV2aWV3ZWQgZ2Fy
ZGVuaW5nLiBTa2lwIGZhaWxpbmcgdGVzdCBhZnRlciByMTIxMDE5LgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdC1zbmlwcGV0LW1vZGVsLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHQtc25pcHBldC1tb2Rl
bC1leHBlY3RlZC50eHQKaW5kZXggMjIyYjdhNDYxOGI4NTJiMTcxYTdiZWMwZTUzOGRhOGQ2ODE1
NDA5Yi4uMTdjZWZjMWFlMmNjOGUzN2Q4M2I1NzdiZmQ2NzNjMjcwOWM5Y2RhMiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdC1zbmlwcGV0LW1vZGVsLWV4
cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0LXNu
aXBwZXQtbW9kZWwtZXhwZWN0ZWQudHh0CkBAIC0zLDExICszLDE3IEBAIFRlc3RzIHNjcmlwdCBz
bmlwcGV0IG1vZGVsLgogRGVidWdnZXIgd2FzIGVuYWJsZWQuCiAKIFJ1bm5pbmc6IHRlc3RFdmFs
dWF0ZQotTGFzdCBldmFsdWF0aW9uIHNvdXJjZSB1cmwgZm9yIHNuaXBwZXQ6IHNuaXBwZXRzOi8v
MV8xCi1TbmlwcGV0IHNjcmlwdCBhZGRlZCwgc291cmNlVVJMID0gc25pcHBldHM6Ly8xXzEKLUxh
c3QgZXZhbHVhdGlvbiBzb3VyY2UgdXJsIGZvciBzbmlwcGV0OiBzbmlwcGV0czovLzJfMgotU25p
cHBldCBzY3JpcHQgYWRkZWQsIHNvdXJjZVVSTCA9IHNuaXBwZXRzOi8vMl8yCi1MYXN0IGV2YWx1
YXRpb24gc291cmNlIHVybCBmb3Igc25pcHBldDogc25pcHBldHM6Ly8xXzMKLVNuaXBwZXQgc2Ny
aXB0IGFkZGVkLCBzb3VyY2VVUkwgPSBzbmlwcGV0czovLzFfMworTGFzdCBldmFsdWF0aW9uIHNv
dXJjZSB1cmwgZm9yIHNuaXBwZXQ6IHNuaXBwZXRzOi8vLzFfMQorU25pcHBldCBzY3JpcHQgYWRk
ZWQsIHNvdXJjZVVSTCA9IHNuaXBwZXRzOi8vLzFfMQorU25pcHBldCBleGVjdXRpb24gcmVzdWx0
OiB1bmRlZmluZWQKK0xhc3QgZXZhbHVhdGlvbiBzb3VyY2UgdXJsIGZvciBzbmlwcGV0OiBzbmlw
cGV0czovLy8yXzIKK1NuaXBwZXQgc2NyaXB0IGFkZGVkLCBzb3VyY2VVUkwgPSBzbmlwcGV0czov
Ly8yXzIKK1NuaXBwZXQgZXhlY3V0aW9uIHJlc3VsdDogZnVuY3Rpb24gZG9lc05vdGhpbmcoKQor
eworICAgIHZhciAgaSA9IDIrMjsKK30KK0xhc3QgZXZhbHVhdGlvbiBzb3VyY2UgdXJsIGZvciBz
bmlwcGV0OiBzbmlwcGV0czovLy8xXzMKK1NuaXBwZXQgc2NyaXB0IGFkZGVkLCBzb3VyY2VVUkwg
PSBzbmlwcGV0czovLy8xXzMKK1NuaXBwZXQgZXhlY3V0aW9uIHJlc3VsdDogdW5kZWZpbmVkCiBE
ZWJ1Z2dlciB3YXMgZGlzYWJsZWQuCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9kZWJ1Z2dlci9zY3JpcHQtc25pcHBldC1tb2RlbC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2RlYnVnZ2VyL3NjcmlwdC1zbmlwcGV0LW1vZGVsLmh0bWwKaW5kZXggNTJkYjEyNDMzZGJk
NmU5ZmUyMGRmOTVjODUzYWI4ZTBhODlkY2MxZi4uNzY3ZWZiODcyNmVmYTViZjgwNzFiNTVkZWMz
Y2ZiZjY0NTUyZDNkZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2Vy
L3NjcmlwdC1zbmlwcGV0LW1vZGVsLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Rl
YnVnZ2VyL3NjcmlwdC1zbmlwcGV0LW1vZGVsLmh0bWwKQEAgLTI2LDI5ICsyNiwzNyBAQCBmdW5j
dGlvbiB0ZXN0KCkKICAgICAgICAgICAgIHZhciBjb250ZW50ID0gIiI7CiAgICAgICAgICAgICBj
b250ZW50ICs9ICIvLyBUaGlzIHNuaXBwZXQgZG9lcyBub3RoaW5nLlxuIjsKICAgICAgICAgICAg
IGNvbnRlbnQgKz0gInZhciBpID0gMisyO1xuIjsKLSAgICAgICAgICAgIFdlYkluc3BlY3Rvci5z
Y3JpcHRTbmlwcGV0TW9kZWwuc2V0U2NyaXB0U25pcHBldENvbnRlbnQoc25pcHBldEphdmFTY3Jp
cHRTb3VyY2UxLCBjb250ZW50KTsKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5zY3JpcHRTbmlw
cGV0TW9kZWwuX3NldFNjcmlwdFNuaXBwZXRDb250ZW50KHNuaXBwZXRKYXZhU2NyaXB0U291cmNl
MSwgY29udGVudCk7CiAKICAgICAgICAgICAgIHZhciBzbmlwcGV0SmF2YVNjcmlwdFNvdXJjZTIg
PSBXZWJJbnNwZWN0b3Iuc2NyaXB0U25pcHBldE1vZGVsLmNyZWF0ZVNjcmlwdFNuaXBwZXQoKTsK
ICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5zY3JpcHRTbmlwcGV0TW9kZWwucmVuYW1lU2NyaXB0
U25pcHBldChzbmlwcGV0SmF2YVNjcmlwdFNvdXJjZTIsICJTbmlwcGV0MiIpOwogICAgICAgICAg
ICAgY29udGVudCA9ICIiOwotICAgICAgICAgICAgY29udGVudCArPSAiLy8gVGhpcyBzbmlwcGV0
IGNyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGRvZXMgbm90aGluZy5cbiI7CisgICAgICAgICAgICBj
b250ZW50ICs9ICIvLyBUaGlzIHNuaXBwZXQgY3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgZG9lcyBu
b3RoaW5nIGFuZCByZXR1cm5zIGl0LlxuIjsKICAgICAgICAgICAgIGNvbnRlbnQgKz0gImZ1bmN0
aW9uIGRvZXNOb3RoaW5nKClcbiI7CiAgICAgICAgICAgICBjb250ZW50ICs9ICJ7XG4iOwogICAg
ICAgICAgICAgY29udGVudCArPSAiICAgIHZhciAgaSA9IDIrMjtcbiI7Ci0gICAgICAgICAgICBj
b250ZW50ICs9ICJ9XG4iOwotICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnNjcmlwdFNuaXBwZXRN
b2RlbC5zZXRTY3JpcHRTbmlwcGV0Q29udGVudChzbmlwcGV0SmF2YVNjcmlwdFNvdXJjZTIsIGNv
bnRlbnQpOworICAgICAgICAgICAgY29udGVudCArPSAifTtcbiI7CisgICAgICAgICAgICBjb250
ZW50ICs9ICJkb2VzTm90aGluZztcbiI7CisgICAgICAgICAgICBXZWJJbnNwZWN0b3Iuc2NyaXB0
U25pcHBldE1vZGVsLl9zZXRTY3JpcHRTbmlwcGV0Q29udGVudChzbmlwcGV0SmF2YVNjcmlwdFNv
dXJjZTIsIGNvbnRlbnQpOwogCiAgICAgICAgICAgICBmdW5jdGlvbiBldmFsdWF0ZVNuaXBwZXRB
bmREdW1wRXZhbHVhdGlvbkRldGFpbHMoc25pcHBldEphdmFTY3JpcHRTb3VyY2UsIGNhbGxiYWNr
KQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkU25pZmZl
cihXZWJJbnNwZWN0b3IuU25pcHBldFNjcmlwdE1hcHBpbmcucHJvdG90eXBlLCAiYWRkU2NyaXB0
IiwgZHVtcFNjcmlwdCk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRTbmlmZmVy
KFdlYkluc3BlY3Rvci5Db25zb2xlVmlldy5wcm90b3R5cGUsICJfcHJpbnRSZXN1bHQiLCBkdW1w
UmVzdWx0KTsKICAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3Iuc2NyaXB0U25pcHBldE1vZGVs
LmV2YWx1YXRlU2NyaXB0U25pcHBldChzbmlwcGV0SmF2YVNjcmlwdFNvdXJjZSk7Ci0gICAgICAg
ICAgICAgICAgdmFyIHNuaXBwZXQgPSBXZWJJbnNwZWN0b3Iuc2NyaXB0U25pcHBldE1vZGVsLl9z
bmlwcGV0U3RvcmFnZS5zbmlwcGV0Rm9ySWQoc25pcHBldEphdmFTY3JpcHRTb3VyY2Uuc25pcHBl
dElkKTsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiTGFzdCBldmFs
dWF0aW9uIHNvdXJjZSB1cmwgZm9yIHNuaXBwZXQ6ICIgKyBzbmlwcGV0Ll9sYXN0RXZhbHVhdGlv
blNvdXJjZVVSTCk7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMo
c25pcHBldCwgV2ViSW5zcGVjdG9yLnNjcmlwdFNuaXBwZXRNb2RlbC5fc25pcHBldEZvclNvdXJj
ZVVSTChzbmlwcGV0Ll9sYXN0RXZhbHVhdGlvblNvdXJjZVVSTCksICJTbmlwcGV0IGNhbiBub3Qg
YmUgaWRlbnRpZmllZCBieSBpdHMgZXZhbHVhdGlvbiBzb3VyY2VVUkwuIik7CisgICAgICAgICAg
ICAgICAgdmFyIGV2YWx1YXRpb25Tb3VyY2VVUkwgPSBXZWJJbnNwZWN0b3Iuc2NyaXB0U25pcHBl
dE1vZGVsLl9ldmFsdWF0aW9uU291cmNlVVJMKHNuaXBwZXRKYXZhU2NyaXB0U291cmNlKTsKKyAg
ICAgICAgICAgICAgICB2YXIgc25pcHBldElkID0gc25pcHBldEphdmFTY3JpcHRTb3VyY2Uuc25p
cHBldElkOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJMYXN0IGV2
YWx1YXRpb24gc291cmNlIHVybCBmb3Igc25pcHBldDogIiArIGV2YWx1YXRpb25Tb3VyY2VVUkwp
OworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKHNuaXBwZXRJZCwg
V2ViSW5zcGVjdG9yLnNjcmlwdFNuaXBwZXRNb2RlbC5fc25pcHBldElkRm9yU291cmNlVVJMKGV2
YWx1YXRpb25Tb3VyY2VVUkwpLCAiU25pcHBldCBjYW4gbm90IGJlIGlkZW50aWZpZWQgYnkgaXRz
IGV2YWx1YXRpb24gc291cmNlVVJMLiIpOwogCiAgICAgICAgICAgICAgICAgZnVuY3Rpb24gZHVt
cFNjcmlwdChzY3JpcHQpCiAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiU25pcHBldCBzY3JpcHQgYWRkZWQsIHNvdXJjZVVSTCA9
ICIgKyBzY3JpcHQuc291cmNlVVJMKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
ICAgICBmdW5jdGlvbiBkdW1wUmVzdWx0KHJlc3VsdCwgd2FzVGhyb3duKQorICAgICAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIlNuaXBw
ZXQgZXhlY3V0aW9uIHJlc3VsdDogIiArIHJlc3VsdC5kZXNjcmlwdGlvbik7CiAgICAgICAgICAg
ICAgICAgICAgIGNhbGxiYWNrKCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQo=
</data>
<flag name="review"
          id="156990"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
          </attachment>
      

    </bug>

</bugzilla>