<?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>109832</bug_id>
          
          <creation_ts>2013-02-14 07:40:04 -0800</creation_ts>
          <short_desc>Web Inspector: Move profiler tools into separate panels</short_desc>
          <delta_ts>2013-02-28 06:45:48 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexei Filippov">alph</reporter>
          <assigned_to name="Alexei Filippov">alph</assigned_to>
          <cc>apavlov</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>vsevik</cc>
    
    <cc>web-inspector-bugs</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>833066</commentid>
    <comment_count>0</comment_count>
    <who name="Alexei Filippov">alph</who>
    <bug_when>2013-02-14 07:40:04 -0800</bug_when>
    <thetext>Put each profiler tool into a separate panel.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>833069</commentid>
    <comment_count>1</comment_count>
      <attachid>188349</attachid>
    <who name="Alexei Filippov">alph</who>
    <bug_when>2013-02-14 07:42:51 -0800</bug_when>
    <thetext>Created attachment 188349
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>833105</commentid>
    <comment_count>2</comment_count>
      <attachid>188363</attachid>
    <who name="Alexei Filippov">alph</who>
    <bug_when>2013-02-14 08:39:08 -0800</bug_when>
    <thetext>Created attachment 188363
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>833138</commentid>
    <comment_count>3</comment_count>
      <attachid>188363</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2013-02-14 09:20:41 -0800</bug_when>
    <thetext>Comment on attachment 188363
Patch

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

&gt; Source/WebCore/inspector/front-end/CPUProfileView.js:578
&gt; +    WebInspector.ProfileType.call(this, WebInspector.CPUProfileType.TypeId, WebInspector.UIString(&quot;Collect JavaScript CPU Profile&quot;), panel);

So what is profiles panel now? Making a dependency from profile type descriptor to the UI component does not sound right to me.

&gt; Source/WebCore/inspector/front-end/inspector.js:295
&gt; +            // TODO(alph): route to the appropriate profiler

// FIXME: (with no name)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>842127</commentid>
    <comment_count>4</comment_count>
      <attachid>190320</attachid>
    <who name="Alexei Filippov">alph</who>
    <bug_when>2013-02-26 10:05:47 -0800</bug_when>
    <thetext>Created attachment 190320
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>843947</commentid>
    <comment_count>5</comment_count>
      <attachid>190320</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2013-02-28 03:33:09 -0800</bug_when>
    <thetext>Comment on attachment 190320
Patch

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

&gt; Source/WebCore/ChangeLog:8
&gt; +        This is a first part of the fix that puts each profiler tool into a separate panel.

Please provide some details on what&apos;s happening in this change.

&gt; Source/WebCore/inspector/front-end/ProfilesPanel.js:339
&gt; +    var singleProfileMode = typeof name !== &quot;undefined&quot;;

Can you explain this logic? Also, move this below, no need to have it before super constructor call.

&gt; Source/WebCore/inspector/front-end/ProfilesPanel.js:781
&gt; +                    profile.view(this).dataGrid.highlightObjectByHeapSnapshotId(snapshotObjectId);

You should bind the callback to make sure that this is what you expect it to be.

&gt; Source/WebCore/inspector/front-end/inspector.js:57
&gt; +            if (WebInspector.experimentsSettings.canvasInspection.isEnabled())

You should skip it for workers.

&gt; Source/WebCore/inspector/front-end/inspector.js:59
&gt; +            if (WebInspector.experimentsSettings.nativeMemorySnapshots.isEnabled()) {

You should skip them for workers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844001</commentid>
    <comment_count>6</comment_count>
      <attachid>190320</attachid>
    <who name="Alexei Filippov">alph</who>
    <bug_when>2013-02-28 05:03:00 -0800</bug_when>
    <thetext>Comment on attachment 190320
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:8
&gt;&gt; +        This is a first part of the fix that puts each profiler tool into a separate panel.
&gt; 
&gt; Please provide some details on what&apos;s happening in this change.

ok

&gt;&gt; Source/WebCore/inspector/front-end/ProfilesPanel.js:339
&gt;&gt; +    var singleProfileMode = typeof name !== &quot;undefined&quot;;
&gt; 
&gt; Can you explain this logic? Also, move this below, no need to have it before super constructor call.

Added a comment. I can&apos;t move it below the next line as it changes the name variable.

&gt;&gt; Source/WebCore/inspector/front-end/ProfilesPanel.js:781
&gt;&gt; +                    profile.view(this).dataGrid.highlightObjectByHeapSnapshotId(snapshotObjectId);
&gt; 
&gt; You should bind the callback to make sure that this is what you expect it to be.

done

&gt;&gt; Source/WebCore/inspector/front-end/inspector.js:57
&gt;&gt; +            if (WebInspector.experimentsSettings.canvasInspection.isEnabled())
&gt; 
&gt; You should skip it for workers.

ok

&gt;&gt; Source/WebCore/inspector/front-end/inspector.js:59
&gt;&gt; +            if (WebInspector.experimentsSettings.nativeMemorySnapshots.isEnabled()) {
&gt; 
&gt; You should skip them for workers.

ok</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844002</commentid>
    <comment_count>7</comment_count>
      <attachid>190709</attachid>
    <who name="Alexei Filippov">alph</who>
    <bug_when>2013-02-28 05:05:24 -0800</bug_when>
    <thetext>Created attachment 190709
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844036</commentid>
    <comment_count>8</comment_count>
      <attachid>190709</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-28 06:45:44 -0800</bug_when>
    <thetext>Comment on attachment 190709
Patch

Clearing flags on attachment: 190709

Committed r144304: &lt;http://trac.webkit.org/changeset/144304&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844037</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-28 06:45:48 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>188349</attachid>
            <date>2013-02-14 07:42:51 -0800</date>
            <delta_ts>2013-02-14 08:39:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109832-20130214193918.patch</filename>
            <type>text/plain</type>
            <size>40260</size>
            <attacher name="Alexei Filippov">alph</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyODc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDEzZGNjMjYzMjg4YzA3
ZmE4YjkyZDMyMTNmMDRhNjZlZGJhNmNiMC4uY2NlMDU4MzIzMjQ3N2Q2NDg0YmZmOTk1Nzc4ZDE2
MThkNzIxOTg1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgxIEBACisyMDEzLTAyLTE0ICBBbGV4
ZWkgRmlsaXBwb3YgIDxhbHBoQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVjdG9y
OiBNb3ZlIHByb2ZpbGVyIHRvb2xzIGludG8gc2VwYXJhdGUgcGFuZWxzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDk4MzIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGlzIGEgZmlyc3QgcGFydCBv
ZiB0aGUgZml4IHRoYXQgcHV0cyBlYWNoIHByb2ZpbGVyIHRvb2wgaW50byBhIHNlcGFyYXRlIHBh
bmVsLgorCisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9DUFVQcm9maWxlVmlldy5qczoK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5DUFVQcm9maWxlVHlwZSk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuQ1BVUHJvZmlsZVR5cGUucHJvdG90eXBlLnN0YXJ0UmVjb3JkaW5nUHJvZmlsZSk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuQ1BVUHJvZmlsZVR5cGUucHJvdG90eXBlLnN0b3BSZWNvcmRp
bmdQcm9maWxlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0NTU1NlbGVjdG9yUHJv
ZmlsZVZpZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU2VsZWN0b3JQcm9maWxlVHlw
ZSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9DYW52YXNQcm9maWxlVmlldy5qczoK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5DYW52YXNQcm9maWxlVHlwZSk6CisgICAgICAgICogaW5z
cGVjdG9yL2Zyb250LWVuZC9IZWFwU25hcHNob3RWaWV3LmpzOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkhlYXBTbmFwc2hvdFByb2ZpbGVUeXBlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFw
U25hcHNob3RQcm9maWxlVHlwZS5wcm90b3R5cGUuX2FkZEhlYXBTbmFwc2hvdENodW5rKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RQcm9maWxlVHlwZS5wcm90b3R5cGUuX2Zp
bmlzaEhlYXBTbmFwc2hvdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UHJv
ZmlsZVR5cGUucHJvdG90eXBlLl9yZXBvcnRIZWFwU25hcHNob3RQcm9ncmVzcyk6CisgICAgICAg
ICogaW5zcGVjdG9yL2Zyb250LWVuZC9OYXRpdmVNZW1vcnlTbmFwc2hvdFZpZXcuanM6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuTmF0aXZlU25hcHNob3RQcm9maWxlVHlwZSk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuTmF0aXZlTWVtb3J5UHJvZmlsZVR5cGUpOgorICAgICAgICAqIGluc3BlY3Rv
ci9mcm9udC1lbmQvUHJvZmlsZXNQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm9m
aWxlVHlwZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvZmlsZVR5cGUucHJvdG90eXBlLnBh
bmVsKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm9maWxlVHlwZS5wcm90b3R5cGUuX3Jlc2V0
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm9maWxlVHlwZS5wcm90b3R5cGUuX2FkZFByb2Zp
bGVIZWFkZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlByb2ZpbGVIZWFkZXIucHJvdG90eXBl
LnZpZXcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwucHJvdG90eXBlLnRvZ2dsZVJlY29yZEJ1dHRvbik6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbC5wcm90b3R5cGUuX3Jlc2V0KToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVsLnByb3RvdHlwZS5fcmVnaXN0ZXJQ
cm9maWxlVHlwZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbC5wcm90b3R5
cGUuX3JlbW92ZVByb2ZpbGVIZWFkZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlByb2ZpbGVz
UGFuZWwucHJvdG90eXBlLl9wb3B1bGF0ZVByb2ZpbGVzLnZhcik6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuUHJvZmlsZXNQYW5lbC5wcm90b3R5cGUuX3BvcHVsYXRlUHJvZmlsZXMucG9wdWxhdGVD
YWxsYmFjayk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbC5wcm90b3R5cGUu
X3BvcHVsYXRlUHJvZmlsZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwu
cHJvdG90eXBlLnNldFJlY29yZGluZ1Byb2ZpbGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlBy
b2ZpbGVzUGFuZWwucHJvdG90eXBlLnRha2VIZWFwU25hcHNob3QuZG9uZSk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbC5wcm90b3R5cGUudGFrZUhlYXBTbmFwc2hvdCk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuTWVtb3J5RGlzcGF0Y2hlcik6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuTWVtb3J5RGlzcGF0Y2hlci5nZXRJbnN0YW5jZSk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuTWVtb3J5RGlzcGF0Y2hlci5wcm90b3R5cGUucmVnaXN0ZXJQcm9maWxlVHlwZSk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuTWVtb3J5RGlzcGF0Y2hlci5wcm90b3R5cGUuYWRkTmF0aXZlU25h
cHNob3RDaHVuayk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvZmlsZXJEaXNwYXRjaGVyKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm9maWxlckRpc3BhdGNoZXIuZ2V0SW5zdGFuY2UpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlByb2ZpbGVyRGlzcGF0Y2hlci5wcm90b3R5cGUucmVnaXN0
ZXJQcm9maWxlVHlwZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvZmlsZXJEaXNwYXRjaGVy
LnByb3RvdHlwZS5hZGRQcm9maWxlSGVhZGVyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm9m
aWxlckRpc3BhdGNoZXIucHJvdG90eXBlLmFkZEhlYXBTbmFwc2hvdENodW5rKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5Qcm9maWxlckRpc3BhdGNoZXIucHJvdG90eXBlLmZpbmlzaEhlYXBTbmFw
c2hvdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvZmlsZXJEaXNwYXRjaGVyLnByb3RvdHlw
ZS5zZXRSZWNvcmRpbmdQcm9maWxlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm9maWxlckRp
c3BhdGNoZXIucHJvdG90eXBlLnJlc2V0UHJvZmlsZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlByb2ZpbGVyRGlzcGF0Y2hlci5wcm90b3R5cGUucmVwb3J0SGVhcFNuYXBzaG90UHJvZ3Jlc3Mp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBQcm9maWxlckRpc3BhdGNoZXIpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkhlYXBQcm9maWxlckRpc3BhdGNoZXIuZ2V0SW5zdGFuY2UpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkhlYXBQcm9maWxlckRpc3BhdGNoZXIucHJvdG90eXBlLnJlZ2lz
dGVyUHJvZmlsZVR5cGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBQcm9maWxlckRpc3Bh
dGNoZXIucHJvdG90eXBlLmFkZFByb2ZpbGVIZWFkZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkhlYXBQcm9maWxlckRpc3BhdGNoZXIucHJvdG90eXBlLmFkZEhlYXBTbmFwc2hvdENodW5rKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwUHJvZmlsZXJEaXNwYXRjaGVyLnByb3RvdHlwZS5m
aW5pc2hIZWFwU25hcHNob3QpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBQcm9maWxlckRp
c3BhdGNoZXIucHJvdG90eXBlLnJlc2V0UHJvZmlsZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkhlYXBQcm9maWxlckRpc3BhdGNoZXIucHJvdG90eXBlLnJlcG9ydEhlYXBTbmFwc2hvdFByb2dy
ZXNzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm9maWxlU2lkZWJhclRyZWVFbGVtZW50LnBy
b3RvdHlwZS5oYW5kbGVDb250ZXh0TWVudUV2ZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Q
cm9maWxlR3JvdXBTaWRlYmFyVHJlZUVsZW1lbnQucHJvdG90eXBlLm9uc2VsZWN0KToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5DUFVQcm9maWxlclBhbmVsKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5DU1NTZWxlY3RvclByb2ZpbGVyUGFuZWwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBQ
cm9maWxlclBhbmVsKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DYW52YXNQcm9maWxlclBhbmVs
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5NZW1vcnlDaGFydFByb2ZpbGVyUGFuZWwpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLk5hdGl2ZU1lbW9yeVByb2ZpbGVyUGFuZWwpOgorICAgICAgICAq
IGluc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3MuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
RXhwZXJpbWVudHNTZXR0aW5ncyk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNw
ZWN0b3IuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuX3BhbmVsRGVzY3JpcHRvcnMpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLl9wcm9maWxlc0xpbmtpZmllcik6CisgICAgICAgIChXZWJJbnNw
ZWN0b3Iuc2hvd1Byb2ZpbGVGb3JVUkwpOgorCiAyMDEzLTAyLTE0ICBZdXJ5IFNlbWlraGF0c2t5
ICA8eXVyeXNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IGRvbid0IGNy
ZWF0ZSBzdGF0aWMgbG9jYWwgc3RyaW5nIGZvciBwcm9ncmFtIGxpdGVyYWwgaW4gSW5zcGVjdG9y
VGltZWxpbmVBZ2VudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9DUFVQcm9maWxlVmlldy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvQ1BVUHJvZmlsZVZpZXcuanMKaW5kZXggNDZhZTU0MjM4ZDk2ZGVkNDU3ZjA0MjI3MGFkMDk4
MDYxZWI1MTY0Yy4uNTEyMjU2Yjc3ZWI0Y2QzYmQ1ZWQ1NThmMGE3ZmMwOWZjZWVhNzZiYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9DUFVQcm9maWxlVmll
dy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NQVVByb2ZpbGVW
aWV3LmpzCkBAIC01NzEsMTAgKzU3MSwxMSBAQCBXZWJJbnNwZWN0b3IuQ1BVUHJvZmlsZVZpZXcu
cHJvdG90eXBlID0gewogLyoqCiAgKiBAY29uc3RydWN0b3IKICAqIEBleHRlbmRzIHtXZWJJbnNw
ZWN0b3IuUHJvZmlsZVR5cGV9CisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVs
fSBwYW5lbAogICovCi1XZWJJbnNwZWN0b3IuQ1BVUHJvZmlsZVR5cGUgPSBmdW5jdGlvbigpCitX
ZWJJbnNwZWN0b3IuQ1BVUHJvZmlsZVR5cGUgPSBmdW5jdGlvbihwYW5lbCkKIHsKLSAgICBXZWJJ
bnNwZWN0b3IuUHJvZmlsZVR5cGUuY2FsbCh0aGlzLCBXZWJJbnNwZWN0b3IuQ1BVUHJvZmlsZVR5
cGUuVHlwZUlkLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNvbGxlY3QgSmF2YVNjcmlwdCBDUFUg
UHJvZmlsZSIpKTsKKyAgICBXZWJJbnNwZWN0b3IuUHJvZmlsZVR5cGUuY2FsbCh0aGlzLCBXZWJJ
bnNwZWN0b3IuQ1BVUHJvZmlsZVR5cGUuVHlwZUlkLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNv
bGxlY3QgSmF2YVNjcmlwdCBDUFUgUHJvZmlsZSIpLCBwYW5lbCk7CiAgICAgdGhpcy5fcmVjb3Jk
aW5nID0gZmFsc2U7CiAgICAgV2ViSW5zcGVjdG9yLkNQVVByb2ZpbGVUeXBlLmluc3RhbmNlID0g
dGhpczsKIH0KQEAgLTYyMCw2ICs2MjEsNyBAQCBXZWJJbnNwZWN0b3IuQ1BVUHJvZmlsZVR5cGUu
cHJvdG90eXBlID0gewogICAgIHN0YXJ0UmVjb3JkaW5nUHJvZmlsZTogZnVuY3Rpb24oKQogICAg
IHsKICAgICAgICAgdGhpcy5fcmVjb3JkaW5nID0gdHJ1ZTsKKyAgICAgICAgdGhpcy5fcGFuZWwu
c2V0UmVjb3JkaW5nUHJvZmlsZSh0aGlzLmlkLCB0cnVlKTsKICAgICAgICAgV2ViSW5zcGVjdG9y
LnVzZXJNZXRyaWNzLlByb2ZpbGVzQ1BVUHJvZmlsZVRha2VuLnJlY29yZCgpOwogICAgICAgICBQ
cm9maWxlckFnZW50LnN0YXJ0KCk7CiAgICAgfSwKQEAgLTYyNyw2ICs2MjksNyBAQCBXZWJJbnNw
ZWN0b3IuQ1BVUHJvZmlsZVR5cGUucHJvdG90eXBlID0gewogICAgIHN0b3BSZWNvcmRpbmdQcm9m
aWxlOiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICB0aGlzLl9yZWNvcmRpbmcgPSBmYWxzZTsK
KyAgICAgICAgdGhpcy5fcGFuZWwuc2V0UmVjb3JkaW5nUHJvZmlsZSh0aGlzLmlkLCBmYWxzZSk7
CiAgICAgICAgIFByb2ZpbGVyQWdlbnQuc3RvcCgpOwogICAgIH0sCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ1NTU2VsZWN0b3JQcm9maWxlVmlldy5q
cyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ1NTU2VsZWN0b3JQcm9maWxl
Vmlldy5qcwppbmRleCBiMDEwN2UwN2ExMDI4Nzk2MmRmMmQ5N2QxZmI2ZmMyYmU1NTdkMTAyLi5j
YzMyODBiNjliODg3YjkyOTg5MWQ5MjY2OTZlNDEzNjY5MjQ1NzNjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NTU1NlbGVjdG9yUHJvZmlsZVZpZXcuanMK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9DU1NTZWxlY3RvclByb2Zp
bGVWaWV3LmpzCkBAIC0yNjcsMTAgKzI2NywxMSBAQCBXZWJJbnNwZWN0b3IuQ1NTU2VsZWN0b3JQ
cm9maWxlVmlldy5wcm90b3R5cGUgPSB7CiAvKioKICAqIEBjb25zdHJ1Y3RvcgogICogQGV4dGVu
ZHMge1dlYkluc3BlY3Rvci5Qcm9maWxlVHlwZX0KKyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlBy
b2ZpbGVzUGFuZWx9IHBhbmVsCiAgKi8KLVdlYkluc3BlY3Rvci5DU1NTZWxlY3RvclByb2ZpbGVU
eXBlID0gZnVuY3Rpb24oKQorV2ViSW5zcGVjdG9yLkNTU1NlbGVjdG9yUHJvZmlsZVR5cGUgPSBm
dW5jdGlvbihwYW5lbCkKIHsKLSAgICBXZWJJbnNwZWN0b3IuUHJvZmlsZVR5cGUuY2FsbCh0aGlz
LCBXZWJJbnNwZWN0b3IuQ1NTU2VsZWN0b3JQcm9maWxlVHlwZS5UeXBlSWQsIFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiQ29sbGVjdCBDU1MgU2VsZWN0b3IgUHJvZmlsZSIpKTsKKyAgICBXZWJJbnNw
ZWN0b3IuUHJvZmlsZVR5cGUuY2FsbCh0aGlzLCBXZWJJbnNwZWN0b3IuQ1NTU2VsZWN0b3JQcm9m
aWxlVHlwZS5UeXBlSWQsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ29sbGVjdCBDU1MgU2VsZWN0
b3IgUHJvZmlsZSIpLCBwYW5lbCk7CiAgICAgdGhpcy5fcmVjb3JkaW5nID0gZmFsc2U7CiAgICAg
dGhpcy5fcHJvZmlsZVVpZCA9IDE7CiAgICAgV2ViSW5zcGVjdG9yLkNTU1NlbGVjdG9yUHJvZmls
ZVR5cGUuaW5zdGFuY2UgPSB0aGlzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9DYW52YXNQcm9maWxlVmlldy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvQ2FudmFzUHJvZmlsZVZpZXcuanMKaW5kZXggZTE3YWZlZDk2N2NlOWU3
ZTU1Mjg4MTc2ZTg1YWZmZTA1ZTNiNjZmNC4uNzAyOTYwOTc2MjhmN2NjMjNlNjczYTZlNTRiNGIy
NjRjYTFmYzE3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9DYW52YXNQcm9maWxlVmlldy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL0NhbnZhc1Byb2ZpbGVWaWV3LmpzCkBAIC0zNzEsMTAgKzM3MSwxMSBAQCBXZWJJbnNw
ZWN0b3IuQ2FudmFzUHJvZmlsZVZpZXcucHJvdG90eXBlID0gewogLyoqCiAgKiBAY29uc3RydWN0
b3IKICAqIEBleHRlbmRzIHtXZWJJbnNwZWN0b3IuUHJvZmlsZVR5cGV9CisgKiBAcGFyYW0ge1dl
Ykluc3BlY3Rvci5Qcm9maWxlc1BhbmVsfSBwYW5lbAogICovCi1XZWJJbnNwZWN0b3IuQ2FudmFz
UHJvZmlsZVR5cGUgPSBmdW5jdGlvbigpCitXZWJJbnNwZWN0b3IuQ2FudmFzUHJvZmlsZVR5cGUg
PSBmdW5jdGlvbihwYW5lbCkKIHsKLSAgICBXZWJJbnNwZWN0b3IuUHJvZmlsZVR5cGUuY2FsbCh0
aGlzLCBXZWJJbnNwZWN0b3IuQ2FudmFzUHJvZmlsZVR5cGUuVHlwZUlkLCBXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIkNhcHR1cmUgQ2FudmFzIEZyYW1lIikpOworICAgIFdlYkluc3BlY3Rvci5Qcm9m
aWxlVHlwZS5jYWxsKHRoaXMsIFdlYkluc3BlY3Rvci5DYW52YXNQcm9maWxlVHlwZS5UeXBlSWQs
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ2FwdHVyZSBDYW52YXMgRnJhbWUiKSwgcGFuZWwpOwog
ICAgIHRoaXMuX25leHRQcm9maWxlVWlkID0gMTsKICAgICB0aGlzLl9yZWNvcmRpbmcgPSBmYWxz
ZTsKICAgICB0aGlzLl9sYXN0UHJvZmlsZUhlYWRlciA9IG51bGw7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdFZpZXcuanMgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdFZpZXcuanMKaW5kZXgg
NzkzNzlkOTBlMzE3ZGY3NDY0MTBmZGFjNjY4MzI3OTEyYzUyMjg0NS4uN2U5YWJjZmI4MzRiZDJj
YWEzYThjYzY4NzgzMmQ3ZWU1NjhlN2MwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9IZWFwU25hcHNob3RWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90Vmlldy5qcwpAQCAtNzUzLDE1ICs3NTMs
MzEgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFZpZXcucHJvdG90eXBlID0gewogLyoqCiAg
KiBAY29uc3RydWN0b3IKICAqIEBleHRlbmRzIHtXZWJJbnNwZWN0b3IuUHJvZmlsZVR5cGV9Cisg
KiBAcGFyYW0ge1dlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVsfSBwYW5lbAogICovCi1XZWJJbnNw
ZWN0b3IuSGVhcFNuYXBzaG90UHJvZmlsZVR5cGUgPSBmdW5jdGlvbigpCitXZWJJbnNwZWN0b3Iu
SGVhcFNuYXBzaG90UHJvZmlsZVR5cGUgPSBmdW5jdGlvbihwYW5lbCkKIHsKLSAgICBXZWJJbnNw
ZWN0b3IuUHJvZmlsZVR5cGUuY2FsbCh0aGlzLCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UHJv
ZmlsZVR5cGUuVHlwZUlkLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlRha2UgSGVhcCBTbmFwc2hv
dCIpKTsKKyAgICBXZWJJbnNwZWN0b3IuUHJvZmlsZVR5cGUuY2FsbCh0aGlzLCBXZWJJbnNwZWN0
b3IuSGVhcFNuYXBzaG90UHJvZmlsZVR5cGUuVHlwZUlkLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IlRha2UgSGVhcCBTbmFwc2hvdCIpLCBwYW5lbCk7CiB9CiAKIFdlYkluc3BlY3Rvci5IZWFwU25h
cHNob3RQcm9maWxlVHlwZS5UeXBlSWQgPSAiSEVBUCI7CiAKIFdlYkluc3BlY3Rvci5IZWFwU25h
cHNob3RQcm9maWxlVHlwZS5wcm90b3R5cGUgPSB7CisgICAgX2FkZEhlYXBTbmFwc2hvdENodW5r
OiBmdW5jdGlvbih1aWQsIGNodW5rKQorICAgIHsKKyAgICAgICAgdGhpcy5fcGFuZWwuX2FkZEhl
YXBTbmFwc2hvdENodW5rKHVpZCwgY2h1bmspOworICAgIH0sCisKKyAgICBfZmluaXNoSGVhcFNu
YXBzaG90OiBmdW5jdGlvbih1aWQpCisgICAgeworICAgICAgICB0aGlzLl9wYW5lbC5fZmluaXNo
SGVhcFNuYXBzaG90KHVpZCk7CisgICAgfSwKKworICAgIF9yZXBvcnRIZWFwU25hcHNob3RQcm9n
cmVzczogZnVuY3Rpb24oZG9uZSwgdG90YWwpCisgICAgeworICAgICAgICB0aGlzLl9wYW5lbC5f
cmVwb3J0SGVhcFNuYXBzaG90UHJvZ3Jlc3MoZG9uZSwgdG90YWwpOworICAgIH0sCisKICAgICBn
ZXQgYnV0dG9uVG9vbHRpcCgpCiAgICAgewogICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJUYWtlIGhlYXAgc25hcHNob3QuIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05hdGl2ZU1lbW9yeVNuYXBzaG90Vmlldy5qcyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmF0aXZlTWVtb3J5U25hcHNob3RWaWV3Lmpz
CmluZGV4IGVlMDg5OTVjNTNlMjUxOTMzMzg2MGM1ZDJhNGE1ZTA3NThjYzhmZTAuLjlmZWNiYWIz
ODRmY2U0MWZhYTg1MjdiMjZhOGY5ZGRmYjAzMzI0ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmF0aXZlTWVtb3J5U25hcHNob3RWaWV3LmpzCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmF0aXZlTWVtb3J5U25hcHNob3RW
aWV3LmpzCkBAIC0yMzUsMTAgKzIzNSwxMSBAQCBXZWJJbnNwZWN0b3IuTmF0aXZlU25hcHNob3RO
b2RlLnByb3RvdHlwZSA9IHsKIC8qKgogICogQGNvbnN0cnVjdG9yCiAgKiBAZXh0ZW5kcyB7V2Vi
SW5zcGVjdG9yLlByb2ZpbGVUeXBlfQorICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuUHJvZmlsZXNQ
YW5lbH0gcGFuZWwKICAqLwotV2ViSW5zcGVjdG9yLk5hdGl2ZVNuYXBzaG90UHJvZmlsZVR5cGUg
PSBmdW5jdGlvbigpCitXZWJJbnNwZWN0b3IuTmF0aXZlU25hcHNob3RQcm9maWxlVHlwZSA9IGZ1
bmN0aW9uKHBhbmVsKQogewotICAgIFdlYkluc3BlY3Rvci5Qcm9maWxlVHlwZS5jYWxsKHRoaXMs
IFdlYkluc3BlY3Rvci5OYXRpdmVTbmFwc2hvdFByb2ZpbGVUeXBlLlR5cGVJZCwgV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJUYWtlIE5hdGl2ZSBIZWFwIFNuYXBzaG90IikpOworICAgIFdlYkluc3Bl
Y3Rvci5Qcm9maWxlVHlwZS5jYWxsKHRoaXMsIFdlYkluc3BlY3Rvci5OYXRpdmVTbmFwc2hvdFBy
b2ZpbGVUeXBlLlR5cGVJZCwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJUYWtlIE5hdGl2ZSBIZWFw
IFNuYXBzaG90IiksIHBhbmVsKTsKICAgICB0aGlzLl9uZXh0UHJvZmlsZVVpZCA9IDE7CiB9CiAK
QEAgLTQ2NiwxMCArNDY3LDExIEBAIFdlYkluc3BlY3Rvci5OYXRpdmVIZWFwU25hcHNob3RWaWV3
LnByb3RvdHlwZSA9IHsKIC8qKgogICogQGNvbnN0cnVjdG9yCiAgKiBAZXh0ZW5kcyB7V2ViSW5z
cGVjdG9yLlByb2ZpbGVUeXBlfQorICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5l
bH0gcGFuZWwKICAqLwotV2ViSW5zcGVjdG9yLk5hdGl2ZU1lbW9yeVByb2ZpbGVUeXBlID0gZnVu
Y3Rpb24oKQorV2ViSW5zcGVjdG9yLk5hdGl2ZU1lbW9yeVByb2ZpbGVUeXBlID0gZnVuY3Rpb24o
cGFuZWwpCiB7Ci0gICAgV2ViSW5zcGVjdG9yLlByb2ZpbGVUeXBlLmNhbGwodGhpcywgV2ViSW5z
cGVjdG9yLk5hdGl2ZU1lbW9yeVByb2ZpbGVUeXBlLlR5cGVJZCwgV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJDYXB0dXJlIE5hdGl2ZSBNZW1vcnkgRGlzdHJpYnV0aW9uIikpOworICAgIFdlYkluc3Bl
Y3Rvci5Qcm9maWxlVHlwZS5jYWxsKHRoaXMsIFdlYkluc3BlY3Rvci5OYXRpdmVNZW1vcnlQcm9m
aWxlVHlwZS5UeXBlSWQsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ2FwdHVyZSBOYXRpdmUgTWVt
b3J5IERpc3RyaWJ1dGlvbiIpLCBwYW5lbCk7CiAgICAgdGhpcy5fbmV4dFByb2ZpbGVVaWQgPSAx
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1By
b2ZpbGVzUGFuZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2Zp
bGVzUGFuZWwuanMKaW5kZXggNmU3YWI0ZjA2YzNiMDJkM2Y3MzNiOGRmNGQ4ZjVlMWJmN2M3NjQx
Ny4uZGMzMTBjOGJhMzNjMDBhODcxNjRjMTU2ZjM2NmZjMzFlODExZDRjOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlc1BhbmVsLmpzCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUHJvZmlsZXNQYW5lbC5qcwpAQCAt
MzAsMTEgKzMwLDEzIEBAIGNvbnN0IFVzZXJJbml0aWF0ZWRQcm9maWxlTmFtZSA9ICJvcmcud2Vi
a2l0LnByb2ZpbGVzLnVzZXItaW5pdGlhdGVkIjsKICAqIEBleHRlbmRzIHtXZWJJbnNwZWN0b3Iu
T2JqZWN0fQogICogQHBhcmFtIHtzdHJpbmd9IGlkCiAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQor
ICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbH0gcGFuZWwKICAqLwotV2ViSW5z
cGVjdG9yLlByb2ZpbGVUeXBlID0gZnVuY3Rpb24oaWQsIG5hbWUpCitXZWJJbnNwZWN0b3IuUHJv
ZmlsZVR5cGUgPSBmdW5jdGlvbihpZCwgbmFtZSwgcGFuZWwpCiB7CiAgICAgdGhpcy5faWQgPSBp
ZDsKICAgICB0aGlzLl9uYW1lID0gbmFtZTsKKyAgICB0aGlzLl9wYW5lbCA9IHBhbmVsOwogICAg
IC8qKgogICAgICAqIEB0eXBlIHtXZWJJbnNwZWN0b3IuU2lkZWJhclNlY3Rpb25UcmVlRWxlbWVu
dH0KICAgICAgKi8KQEAgLTgwLDEwICs4MiwyMyBAQCBXZWJJbnNwZWN0b3IuUHJvZmlsZVR5cGUu
cHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfSwKIAorICAgIC8qKgor
ICAgICAqIEByZXR1cm4ge1dlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVsfQorICAgICAqLworICAg
IHBhbmVsOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fcGFuZWw7Cisg
ICAgfSwKKwogICAgIHJlc2V0OiBmdW5jdGlvbigpCiAgICAgewogICAgIH0sCiAKKyAgICBfcmVz
ZXQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMuX3BhbmVsLl9yZXNldCgpOworICAg
IH0sCisKICAgICBnZXQgZGVzY3JpcHRpb24oKQogICAgIHsKICAgICAgICAgcmV0dXJuICIiOwpA
QCAtOTcsNiArMTEyLDExIEBAIFdlYkluc3BlY3Rvci5Qcm9maWxlVHlwZS5wcm90b3R5cGUgPSB7
CiAgICAgICAgIHJldHVybiBudWxsOwogICAgIH0sCiAKKyAgICBfYWRkUHJvZmlsZUhlYWRlcjog
ZnVuY3Rpb24ocHJvZmlsZSkKKyAgICB7CisgICAgICAgIHRoaXMuX3BhbmVsLmFkZFByb2ZpbGVI
ZWFkZXIodGhpcy5jcmVhdGVQcm9maWxlKHByb2ZpbGUpKTsKKyAgICB9LAorCiAgICAgLy8gTXVz
dCBiZSBpbXBsZW1lbnRlZCBieSBzdWJjbGFzc2VzLgogICAgIC8qKgogICAgICAqIEBwYXJhbSB7
c3RyaW5nPX0gdGl0bGUKQEAgLTE3MSw3ICsxOTEsNyBAQCBXZWJJbnNwZWN0b3IuUHJvZmlsZUhl
YWRlci5wcm90b3R5cGUgPSB7CiAgICAgdmlldzogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAg
aWYgKCF0aGlzLl92aWV3KQotICAgICAgICAgICAgdGhpcy5fdmlldyA9IHRoaXMuY3JlYXRlVmll
dyhXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbC5faW5zdGFuY2UpOworICAgICAgICAgICAgdGhp
cy5fdmlldyA9IHRoaXMuY3JlYXRlVmlldyh0aGlzLnByb2ZpbGVUeXBlKCkucGFuZWwoKSk7CiAg
ICAgICAgIHJldHVybiB0aGlzLl92aWV3OwogICAgIH0sCiAKQEAgLTIzMiwxMSArMjUyLDEzIEBA
IFdlYkluc3BlY3Rvci5Qcm9maWxlSGVhZGVyLnByb3RvdHlwZSA9IHsKICAqIEBjb25zdHJ1Y3Rv
cgogICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5QYW5lbH0KICAqIEBpbXBsZW1lbnRzIHtXZWJJ
bnNwZWN0b3IuQ29udGV4dE1lbnUuUHJvdmlkZXJ9CisgKiBAcGFyYW0ge3N0cmluZz19IG5hbWUK
ICAqLwotV2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwgPSBmdW5jdGlvbigpCitXZWJJbnNwZWN0
b3IuUHJvZmlsZXNQYW5lbCA9IGZ1bmN0aW9uKG5hbWUpCiB7Ci0gICAgV2ViSW5zcGVjdG9yLlBh
bmVsLmNhbGwodGhpcywgInByb2ZpbGVzIik7Ci0gICAgV2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFu
ZWwuX2luc3RhbmNlID0gdGhpczsKKyAgICB2YXIgc2luZ2xlUHJvZmlsZU1vZGUgPSB0eXBlb2Yg
bmFtZSAhPT0gInVuZGVmaW5lZCI7CisgICAgbmFtZSA9IG5hbWUgfHwgInByb2ZpbGVzIjsKKyAg
ICBXZWJJbnNwZWN0b3IuUGFuZWwuY2FsbCh0aGlzLCBuYW1lKTsKICAgICB0aGlzLnJlZ2lzdGVy
UmVxdWlyZWRDU1MoInBhbmVsRW5hYmxlclZpZXcuY3NzIik7CiAgICAgdGhpcy5yZWdpc3RlclJl
cXVpcmVkQ1NTKCJoZWFwUHJvZmlsZXIuY3NzIik7CiAgICAgdGhpcy5yZWdpc3RlclJlcXVpcmVk
Q1NTKCJwcm9maWxlc1BhbmVsLmNzcyIpOwpAQCAtMjQ0LDE0ICsyNjYsMTcgQEAgV2ViSW5zcGVj
dG9yLlByb2ZpbGVzUGFuZWwgPSBmdW5jdGlvbigpCiAgICAgdGhpcy5jcmVhdGVTaWRlYmFyVmll
d1dpdGhUcmVlKCk7CiAKICAgICB0aGlzLnByb2ZpbGVzSXRlbVRyZWVFbGVtZW50ID0gbmV3IFdl
Ykluc3BlY3Rvci5Qcm9maWxlc1NpZGViYXJUcmVlRWxlbWVudCh0aGlzKTsKLSAgICB0aGlzLnNp
ZGViYXJUcmVlLmFwcGVuZENoaWxkKHRoaXMucHJvZmlsZXNJdGVtVHJlZUVsZW1lbnQpOworICAg
IGlmICghc2luZ2xlUHJvZmlsZU1vZGUpIHsKKyAgICAgICAgdGhpcy5zaWRlYmFyVHJlZS5hcHBl
bmRDaGlsZCh0aGlzLnByb2ZpbGVzSXRlbVRyZWVFbGVtZW50KTsKKyAgICB9CiAKKyAgICB0aGlz
Ll9zaW5nbGVQcm9maWxlTW9kZSA9IHNpbmdsZVByb2ZpbGVNb2RlOwogICAgIHRoaXMuX3Byb2Zp
bGVUeXBlc0J5SWRNYXAgPSB7fTsKIAogICAgIHZhciBwYW5lbEVuYWJsZXJIZWFkaW5nID0gV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJZb3UgbmVlZCB0byBlbmFibGUgcHJvZmlsaW5nIGJlZm9yZSB5
b3UgY2FuIHVzZSB0aGUgUHJvZmlsZXMgcGFuZWwuIik7CiAgICAgdmFyIHBhbmVsRW5hYmxlckRp
c2NsYWltZXIgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkVuYWJsaW5nIHByb2ZpbGluZyB3aWxs
IG1ha2Ugc2NyaXB0cyBydW4gc2xvd2VyLiIpOwogICAgIHZhciBwYW5lbEVuYWJsZXJCdXR0b24g
PSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkVuYWJsZSBQcm9maWxpbmciKTsKLSAgICB0aGlzLnBh
bmVsRW5hYmxlclZpZXcgPSBuZXcgV2ViSW5zcGVjdG9yLlBhbmVsRW5hYmxlclZpZXcoInByb2Zp
bGVzIiwgcGFuZWxFbmFibGVySGVhZGluZywgcGFuZWxFbmFibGVyRGlzY2xhaW1lciwgcGFuZWxF
bmFibGVyQnV0dG9uKTsKKyAgICB0aGlzLnBhbmVsRW5hYmxlclZpZXcgPSBuZXcgV2ViSW5zcGVj
dG9yLlBhbmVsRW5hYmxlclZpZXcobmFtZSwgcGFuZWxFbmFibGVySGVhZGluZywgcGFuZWxFbmFi
bGVyRGlzY2xhaW1lciwgcGFuZWxFbmFibGVyQnV0dG9uKTsKICAgICB0aGlzLnBhbmVsRW5hYmxl
clZpZXcuYWRkRXZlbnRMaXN0ZW5lcigiZW5hYmxlIGNsaWNrZWQiLCB0aGlzLmVuYWJsZVByb2Zp
bGVyLCB0aGlzKTsKIAogICAgIHRoaXMucHJvZmlsZVZpZXdzID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiZGl2Iik7CkBAIC0yODksMjUgKzMxNCwyNiBAQCBXZWJJbnNwZWN0b3IuUHJvZmlsZXNQ
YW5lbCA9IGZ1bmN0aW9uKCkKICAgICB0aGlzLl9wcm9maWxlcyA9IFtdOwogICAgIHRoaXMuX3By
b2ZpbGVyRW5hYmxlZCA9ICFDYXBhYmlsaXRpZXMucHJvZmlsZXJDYXVzZXNSZWNvbXBpbGF0aW9u
OwogCi0gICAgdGhpcy5fbGF1bmNoZXJWaWV3ID0gbmV3IFdlYkluc3BlY3Rvci5Qcm9maWxlTGF1
bmNoZXJWaWV3KHRoaXMpOwotICAgIHRoaXMuX2xhdW5jaGVyVmlldy5hZGRFdmVudExpc3RlbmVy
KFdlYkluc3BlY3Rvci5Qcm9maWxlTGF1bmNoZXJWaWV3LkV2ZW50VHlwZXMuUHJvZmlsZVR5cGVT
ZWxlY3RlZCwgdGhpcy5fb25Qcm9maWxlVHlwZVNlbGVjdGVkLCB0aGlzKTsKLSAgICB0aGlzLl9y
ZXNldCgpOwotCi0gICAgdGhpcy5fcmVnaXN0ZXJQcm9maWxlVHlwZShuZXcgV2ViSW5zcGVjdG9y
LkNQVVByb2ZpbGVUeXBlKCkpOwotICAgIGlmICghV2ViSW5zcGVjdG9yLldvcmtlck1hbmFnZXIu
aXNXb3JrZXJGcm9udGVuZCgpKQotICAgICAgICB0aGlzLl9yZWdpc3RlclByb2ZpbGVUeXBlKG5l
dyBXZWJJbnNwZWN0b3IuQ1NTU2VsZWN0b3JQcm9maWxlVHlwZSgpKTsKLSAgICBpZiAoQ2FwYWJp
bGl0aWVzLmhlYXBQcm9maWxlclByZXNlbnQpCi0gICAgICAgIHRoaXMuX3JlZ2lzdGVyUHJvZmls
ZVR5cGUobmV3IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RQcm9maWxlVHlwZSgpKTsKLSAgICBp
ZiAoV2ViSW5zcGVjdG9yLmV4cGVyaW1lbnRzU2V0dGluZ3MubmF0aXZlTWVtb3J5U25hcHNob3Rz
LmlzRW5hYmxlZCgpKSB7Ci0gICAgICAgIHRoaXMuX3JlZ2lzdGVyUHJvZmlsZVR5cGUobmV3IFdl
Ykluc3BlY3Rvci5OYXRpdmVNZW1vcnlQcm9maWxlVHlwZSgpKTsKLSAgICAgICAgdGhpcy5fcmVn
aXN0ZXJQcm9maWxlVHlwZShuZXcgV2ViSW5zcGVjdG9yLk5hdGl2ZVNuYXBzaG90UHJvZmlsZVR5
cGUoKSk7Ci0gICAgfQotICAgIGlmIChXZWJJbnNwZWN0b3IuZXhwZXJpbWVudHNTZXR0aW5ncy5j
YW52YXNJbnNwZWN0aW9uLmlzRW5hYmxlZCgpKQotICAgICAgICB0aGlzLl9yZWdpc3RlclByb2Zp
bGVUeXBlKG5ldyBXZWJJbnNwZWN0b3IuQ2FudmFzUHJvZmlsZVR5cGUoKSk7CisgICAgaWYgKCFz
aW5nbGVQcm9maWxlTW9kZSkgeworICAgICAgICB0aGlzLl9sYXVuY2hlclZpZXcgPSBuZXcgV2Vi
SW5zcGVjdG9yLlByb2ZpbGVMYXVuY2hlclZpZXcodGhpcyk7CisgICAgICAgIHRoaXMuX2xhdW5j
aGVyVmlldy5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Qcm9maWxlTGF1bmNoZXJWaWV3
LkV2ZW50VHlwZXMuUHJvZmlsZVR5cGVTZWxlY3RlZCwgdGhpcy5fb25Qcm9maWxlVHlwZVNlbGVj
dGVkLCB0aGlzKTsKKyAgICAgICAgdmFyIGRpc3BhdGNoZXIgPSBXZWJJbnNwZWN0b3IuUHJvZmls
ZXJEaXNwYXRjaGVyLmdldEluc3RhbmNlKCk7CisgICAgICAgIGRpc3BhdGNoZXIucmVnaXN0ZXJQ
cm9maWxlVHlwZShuZXcgV2ViSW5zcGVjdG9yLkNQVVByb2ZpbGVUeXBlKHRoaXMpKTsKKyAgICAg
ICAgaWYgKCFXZWJJbnNwZWN0b3IuV29ya2VyTWFuYWdlci5pc1dvcmtlckZyb250ZW5kKCkpCisg
ICAgICAgICAgICBkaXNwYXRjaGVyLnJlZ2lzdGVyUHJvZmlsZVR5cGUobmV3IFdlYkluc3BlY3Rv
ci5DU1NTZWxlY3RvclByb2ZpbGVUeXBlKHRoaXMpKTsKKyAgICAgICAgaWYgKENhcGFiaWxpdGll
cy5oZWFwUHJvZmlsZXJQcmVzZW50KQorICAgICAgICAgICAgV2ViSW5zcGVjdG9yLkhlYXBQcm9m
aWxlckRpc3BhdGNoZXIuZ2V0SW5zdGFuY2UoKS5yZWdpc3RlclByb2ZpbGVUeXBlKG5ldyBXZWJJ
bnNwZWN0b3IuSGVhcFNuYXBzaG90UHJvZmlsZVR5cGUodGhpcykpOworICAgICAgICBpZiAoV2Vi
SW5zcGVjdG9yLmV4cGVyaW1lbnRzU2V0dGluZ3MuY2FudmFzSW5zcGVjdGlvbi5pc0VuYWJsZWQo
KSkKKyAgICAgICAgICAgIGRpc3BhdGNoZXIucmVnaXN0ZXJQcm9maWxlVHlwZShuZXcgV2ViSW5z
cGVjdG9yLkNhbnZhc1Byb2ZpbGVUeXBlKHRoaXMpKTsKKyAgICAgICAgaWYgKFdlYkluc3BlY3Rv
ci5leHBlcmltZW50c1NldHRpbmdzLm5hdGl2ZU1lbW9yeVNuYXBzaG90cy5pc0VuYWJsZWQoKSkg
eworICAgICAgICAgICAgZGlzcGF0Y2hlciA9IFdlYkluc3BlY3Rvci5NZW1vcnlEaXNwYXRjaGVy
LmdldEluc3RhbmNlKCk7CisgICAgICAgICAgICBkaXNwYXRjaGVyLnJlZ2lzdGVyUHJvZmlsZVR5
cGUobmV3IFdlYkluc3BlY3Rvci5OYXRpdmVTbmFwc2hvdFByb2ZpbGVUeXBlKHRoaXMpKTsKKyAg
ICAgICAgICAgIGRpc3BhdGNoZXIucmVnaXN0ZXJQcm9maWxlVHlwZShuZXcgV2ViSW5zcGVjdG9y
Lk5hdGl2ZU1lbW9yeVByb2ZpbGVUeXBlKHRoaXMpKTsKKyAgICAgICAgfQorICAgIH0gZWxzZQor
ICAgICAgICB0aGlzLl9sYXVuY2hlclZpZXcgPSBuZXcgV2ViSW5zcGVjdG9yLlZpZXcodGhpcyk7
CiAKLSAgICBJbnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVyUHJvZmlsZXJEaXNwYXRjaGVyKG5ldyBX
ZWJJbnNwZWN0b3IuUHJvZmlsZXJEaXNwYXRjaGVyKHRoaXMpKTsKLSAgICBJbnNwZWN0b3JCYWNr
ZW5kLnJlZ2lzdGVySGVhcFByb2ZpbGVyRGlzcGF0Y2hlcihuZXcgV2ViSW5zcGVjdG9yLkhlYXBQ
cm9maWxlckRpc3BhdGNoZXIodGhpcykpOwotICAgIEluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJN
ZW1vcnlEaXNwYXRjaGVyKG5ldyBXZWJJbnNwZWN0b3IuTWVtb3J5RGlzcGF0Y2hlcih0aGlzKSk7
CisgICAgdGhpcy5fcmVzZXQoKTsKIAogICAgIHRoaXMuX2NyZWF0ZUZpbGVTZWxlY3RvckVsZW1l
bnQoKTsKICAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY29udGV4dG1lbnUiLCB0
aGlzLl9oYW5kbGVDb250ZXh0TWVudUV2ZW50LmJpbmQodGhpcyksIHRydWUpOwpAQCAtMzU4LDEw
ICszODQsMTIgQEAgV2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwucHJvdG90eXBlID0gewogICAg
ICAgICB2YXIgaXNQcm9maWxpbmcgPSB0aGlzLl9zZWxlY3RlZFByb2ZpbGVUeXBlLmJ1dHRvbkNs
aWNrZWQodGhpcyk7CiAgICAgICAgIHRoaXMucmVjb3JkQnV0dG9uLnRvZ2dsZWQgPSBpc1Byb2Zp
bGluZzsKICAgICAgICAgdGhpcy5yZWNvcmRCdXR0b24udGl0bGUgPSB0aGlzLl9zZWxlY3RlZFBy
b2ZpbGVUeXBlLmJ1dHRvblRvb2x0aXA7Ci0gICAgICAgIGlmIChpc1Byb2ZpbGluZykKLSAgICAg
ICAgICAgIHRoaXMuX2xhdW5jaGVyVmlldy5wcm9maWxlU3RhcnRlZCgpOwotICAgICAgICBlbHNl
Ci0gICAgICAgICAgICB0aGlzLl9sYXVuY2hlclZpZXcucHJvZmlsZUZpbmlzaGVkKCk7CisgICAg
ICAgIGlmICghdGhpcy5fc2luZ2xlUHJvZmlsZU1vZGUpIHsKKyAgICAgICAgICAgIGlmIChpc1By
b2ZpbGluZykKKyAgICAgICAgICAgICAgICB0aGlzLl9sYXVuY2hlclZpZXcucHJvZmlsZVN0YXJ0
ZWQoKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0aGlzLl9sYXVuY2hlclZp
ZXcucHJvZmlsZUZpbmlzaGVkKCk7CisgICAgICAgIH0KICAgICB9LAogCiAgICAgd2FzU2hvd246
IGZ1bmN0aW9uKCkKQEAgLTQzNSw3ICs0NjMsNyBAQCBXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5l
bC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB2YXIgcHJvZmlsZVR5cGUgPSB0aGlzLl9wcm9m
aWxlVHlwZXNCeUlkTWFwW2lkXTsKICAgICAgICAgICAgIHZhciB0cmVlRWxlbWVudCA9IHByb2Zp
bGVUeXBlLnRyZWVFbGVtZW50OwogICAgICAgICAgICAgdHJlZUVsZW1lbnQucmVtb3ZlQ2hpbGRy
ZW4oKTsKLSAgICAgICAgICAgIHRyZWVFbGVtZW50LmhpZGRlbiA9IHRydWU7CisgICAgICAgICAg
ICB0cmVlRWxlbWVudC5oaWRkZW4gPSAhdGhpcy5fc2luZ2xlUHJvZmlsZU1vZGU7CiAgICAgICAg
ICAgICBwcm9maWxlVHlwZS5yZXNldCgpOwogICAgICAgICB9CiAKQEAgLTQ0Nyw3ICs0NzUsOCBA
QCBXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMu
cmVjb3JkQnV0dG9uLnRvZ2dsZWQgPSBmYWxzZTsKICAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGVk
UHJvZmlsZVR5cGUpCiAgICAgICAgICAgICB0aGlzLnJlY29yZEJ1dHRvbi50aXRsZSA9IHRoaXMu
X3NlbGVjdGVkUHJvZmlsZVR5cGUuYnV0dG9uVG9vbHRpcDsKLSAgICAgICAgdGhpcy5fbGF1bmNo
ZXJWaWV3LnByb2ZpbGVGaW5pc2hlZCgpOworICAgICAgICBpZiAoIXRoaXMuX3NpbmdsZVByb2Zp
bGVNb2RlKQorICAgICAgICAgICAgdGhpcy5fbGF1bmNoZXJWaWV3LnByb2ZpbGVGaW5pc2hlZCgp
OwogCiAgICAgICAgIHRoaXMuc2lkZWJhclRyZWVFbGVtZW50LnJlbW92ZVN0eWxlQ2xhc3MoInNv
bWUtZXhwYW5kYWJsZSIpOwogCkBAIC00ODcsOSArNTE2LDEyIEBAIFdlYkluc3BlY3Rvci5Qcm9m
aWxlc1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICBfcmVnaXN0ZXJQcm9maWxlVHlwZTogZnVuY3Rp
b24ocHJvZmlsZVR5cGUpCiAgICAgewogICAgICAgICB0aGlzLl9wcm9maWxlVHlwZXNCeUlkTWFw
W3Byb2ZpbGVUeXBlLmlkXSA9IHByb2ZpbGVUeXBlOwotICAgICAgICB0aGlzLl9sYXVuY2hlclZp
ZXcuYWRkUHJvZmlsZVR5cGUocHJvZmlsZVR5cGUpOworICAgICAgICBpZiAodGhpcy5fc2luZ2xl
UHJvZmlsZU1vZGUpCisgICAgICAgICAgICB0aGlzLl9zZWxlY3RlZFByb2ZpbGVUeXBlID0gcHJv
ZmlsZVR5cGU7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRoaXMuX2xhdW5jaGVyVmlldy5h
ZGRQcm9maWxlVHlwZShwcm9maWxlVHlwZSk7CiAgICAgICAgIHByb2ZpbGVUeXBlLnRyZWVFbGVt
ZW50ID0gbmV3IFdlYkluc3BlY3Rvci5TaWRlYmFyU2VjdGlvblRyZWVFbGVtZW50KHByb2ZpbGVU
eXBlLnRyZWVJdGVtVGl0bGUsIG51bGwsIHRydWUpOwotICAgICAgICBwcm9maWxlVHlwZS50cmVl
RWxlbWVudC5oaWRkZW4gPSB0cnVlOworICAgICAgICBwcm9maWxlVHlwZS50cmVlRWxlbWVudC5o
aWRkZW4gPSAhdGhpcy5fc2luZ2xlUHJvZmlsZU1vZGU7CiAgICAgICAgIHRoaXMuc2lkZWJhclRy
ZWUuYXBwZW5kQ2hpbGQocHJvZmlsZVR5cGUudHJlZUVsZW1lbnQpOwogICAgICAgICBwcm9maWxl
VHlwZS50cmVlRWxlbWVudC5jaGlsZHJlbkxpc3RFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNv
bnRleHRtZW51IiwgdGhpcy5faGFuZGxlQ29udGV4dE1lbnVFdmVudC5iaW5kKHRoaXMpLCB0cnVl
KTsKICAgICAgICAgcHJvZmlsZVR5cGUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuUHJv
ZmlsZVR5cGUuRXZlbnRzLlZpZXdVcGRhdGVkLCB0aGlzLl91cGRhdGVQcm9maWxlVHlwZVNwZWNp
ZmljVUksIHRoaXMpOwpAQCAtNjQzLDcgKzY3NSw3IEBAIFdlYkluc3BlY3Rvci5Qcm9maWxlc1Bh
bmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKCFzaWRlYmFyUGFyZW50LmNoaWxkcmVuLmxl
bmd0aCkgewogICAgICAgICAgICAgdGhpcy5wcm9maWxlc0l0ZW1UcmVlRWxlbWVudC5zZWxlY3Qo
KTsKICAgICAgICAgICAgIHRoaXMuX3Nob3dMYXVuY2hlclZpZXcoKTsKLSAgICAgICAgICAgIHNp
ZGViYXJQYXJlbnQuaGlkZGVuID0gdHJ1ZTsKKyAgICAgICAgICAgIHNpZGViYXJQYXJlbnQuaGlk
ZGVuID0gIXRoaXMuX3NpbmdsZVByb2ZpbGVNb2RlOwogICAgICAgICB9CiAgICAgfSwKIApAQCAt
MTA5NywxOSArMTEyOSwyMCBAQCBXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbC5wcm90b3R5cGUg
PSB7CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgLyoqCi0gICAgICAgICAqIEBwYXJh
bSB7P3N0cmluZ30gdHlwZQorICAgICAgICAgKiBAcGFyYW0gez9zdHJpbmd9IHR5cGVJZAogICAg
ICAgICAgKiBAcGFyYW0gez9zdHJpbmd9IGVycm9yCiAgICAgICAgICAqIEBwYXJhbSB7QXJyYXku
PFByb2ZpbGVyQWdlbnQuUHJvZmlsZUhlYWRlcj59IHByb2ZpbGVIZWFkZXJzCiAgICAgICAgICAq
LwotICAgICAgICBmdW5jdGlvbiBwb3B1bGF0ZUNhbGxiYWNrKHR5cGUsIGVycm9yLCBwcm9maWxl
SGVhZGVycykgeworICAgICAgICBmdW5jdGlvbiBwb3B1bGF0ZUNhbGxiYWNrKHR5cGVJZCwgZXJy
b3IsIHByb2ZpbGVIZWFkZXJzKSB7CiAgICAgICAgICAgICBpZiAoZXJyb3IpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICAgICAgcHJvZmlsZUhlYWRlcnMuc29ydChmdW5jdGlvbihh
LCBiKSB7IHJldHVybiBhLnVpZCAtIGIudWlkOyB9KTsKICAgICAgICAgICAgIHZhciBwcm9maWxl
SGVhZGVyc0xlbmd0aCA9IHByb2ZpbGVIZWFkZXJzLmxlbmd0aDsKICAgICAgICAgICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgcHJvZmlsZUhlYWRlcnNMZW5ndGg7ICsraSkgewogICAgICAgICAgICAg
ICAgIHZhciBwcm9maWxlSGVhZGVyID0gcHJvZmlsZUhlYWRlcnNbaV07Ci0gICAgICAgICAgICAg
ICAgdmFyIHByb2ZpbGVUeXBlID0gdGhpcy5nZXRQcm9maWxlVHlwZSh0eXBlIHx8IHByb2ZpbGVI
ZWFkZXIudHlwZUlkKTsKLSAgICAgICAgICAgICAgICB0aGlzLmFkZFByb2ZpbGVIZWFkZXIocHJv
ZmlsZVR5cGUuY3JlYXRlUHJvZmlsZShwcm9maWxlSGVhZGVyKSk7CisgICAgICAgICAgICAgICAg
dmFyIHByb2ZpbGVUeXBlID0gdGhpcy5nZXRQcm9maWxlVHlwZSh0eXBlSWQgfHwgcHJvZmlsZUhl
YWRlci50eXBlSWQpOworICAgICAgICAgICAgICAgIGlmIChwcm9maWxlVHlwZSkKKyAgICAgICAg
ICAgICAgICAgICAgdGhpcy5hZGRQcm9maWxlSGVhZGVyKHByb2ZpbGVUeXBlLmNyZWF0ZVByb2Zp
bGUocHJvZmlsZUhlYWRlcikpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKQEAgLTExNTYs
MTEgKzExODksMTMgQEAgV2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwucHJvdG90eXBlID0gewog
ICAgICAgICB0aGlzLnJlY29yZEJ1dHRvbi50b2dnbGVkID0gaXNQcm9maWxpbmc7CiAgICAgICAg
IHRoaXMucmVjb3JkQnV0dG9uLnRpdGxlID0gcHJvZmlsZVR5cGVPYmplY3QuYnV0dG9uVG9vbHRp
cDsKICAgICAgICAgaWYgKGlzUHJvZmlsaW5nKSB7Ci0gICAgICAgICAgICB0aGlzLl9sYXVuY2hl
clZpZXcucHJvZmlsZVN0YXJ0ZWQoKTsKKyAgICAgICAgICAgIGlmICghdGhpcy5fc2luZ2xlUHJv
ZmlsZU1vZGUpCisgICAgICAgICAgICAgICAgdGhpcy5fbGF1bmNoZXJWaWV3LnByb2ZpbGVTdGFy
dGVkKCk7CiAgICAgICAgICAgICBpZiAoIXRoaXMuZmluZFRlbXBvcmFyeVByb2ZpbGUocHJvZmls
ZVR5cGUpKQogICAgICAgICAgICAgICAgIHRoaXMuYWRkUHJvZmlsZUhlYWRlcihwcm9maWxlVHlw
ZU9iamVjdC5jcmVhdGVUZW1wb3JhcnlQcm9maWxlKCkpOwogICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgdGhpcy5fbGF1bmNoZXJWaWV3LnByb2ZpbGVGaW5pc2hlZCgpOworICAgICAgICAg
ICAgaWYgKCF0aGlzLl9zaW5nbGVQcm9maWxlTW9kZSkKKyAgICAgICAgICAgICAgICB0aGlzLl9s
YXVuY2hlclZpZXcucHJvZmlsZUZpbmlzaGVkKCk7CiAgICAgICAgICAgICB0aGlzLl9yZW1vdmVU
ZW1wb3JhcnlQcm9maWxlKHByb2ZpbGVUeXBlKTsKICAgICAgICAgfQogICAgIH0sCkBAIC0xMTcy
LDkgKzEyMDcsMTEgQEAgV2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwucHJvdG90eXBlID0gewog
ICAgICAgICAgICAgdmFyIHByb2ZpbGVUeXBlT2JqZWN0ID0gdGhpcy5nZXRQcm9maWxlVHlwZShX
ZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UHJvZmlsZVR5cGUuVHlwZUlkKTsKICAgICAgICAgICAg
IHRoaXMuYWRkUHJvZmlsZUhlYWRlcihwcm9maWxlVHlwZU9iamVjdC5jcmVhdGVUZW1wb3JhcnlQ
cm9maWxlKCkpOwogICAgICAgICB9Ci0gICAgICAgIHRoaXMuX2xhdW5jaGVyVmlldy5wcm9maWxl
U3RhcnRlZCgpOworICAgICAgICBpZiAoIXRoaXMuX3NpbmdsZVByb2ZpbGVNb2RlKQorICAgICAg
ICAgICAgdGhpcy5fbGF1bmNoZXJWaWV3LnByb2ZpbGVTdGFydGVkKCk7CiAgICAgICAgIGZ1bmN0
aW9uIGRvbmUoKSB7Ci0gICAgICAgICAgICB0aGlzLl9sYXVuY2hlclZpZXcucHJvZmlsZUZpbmlz
aGVkKCk7CisgICAgICAgICAgICBpZiAoIXRoaXMuX3NpbmdsZVByb2ZpbGVNb2RlKQorICAgICAg
ICAgICAgICAgIHRoaXMuX2xhdW5jaGVyVmlldy5wcm9maWxlRmluaXNoZWQoKTsKICAgICAgICAg
fQogICAgICAgICBIZWFwUHJvZmlsZXJBZ2VudC50YWtlSGVhcFNuYXBzaG90KHRydWUsIGRvbmUu
YmluZCh0aGlzKSk7CiAgICAgICAgIFdlYkluc3BlY3Rvci51c2VyTWV0cmljcy5Qcm9maWxlc0hl
YXBQcm9maWxlVGFrZW4ucmVjb3JkKCk7CkBAIC0xMjM2LDE0ICsxMjczLDMwIEBAIFdlYkluc3Bl
Y3Rvci5Qcm9maWxlc1BhbmVsLnByb3RvdHlwZSA9IHsKIC8qKgogICogQGNvbnN0cnVjdG9yCiAg
KiBAaW1wbGVtZW50cyB7TWVtb3J5QWdlbnQuRGlzcGF0Y2hlcn0KLSAqIEBwYXJhbSB7V2ViSW5z
cGVjdG9yLlByb2ZpbGVzUGFuZWx9IHByb2ZpbGVzUGFuZWwKICAqLwotV2ViSW5zcGVjdG9yLk1l
bW9yeURpc3BhdGNoZXIgPSBmdW5jdGlvbihwcm9maWxlc1BhbmVsKQorV2ViSW5zcGVjdG9yLk1l
bW9yeURpc3BhdGNoZXIgPSBmdW5jdGlvbigpCiB7Ci0gICAgdGhpcy5fcHJvZmlsZXNQYW5lbCA9
IHByb2ZpbGVzUGFuZWw7CisgICAgdGhpcy5fcHJvZmlsZVR5cGVzQnlJZE1hcCA9IHt9OworICAg
IEluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJNZW1vcnlEaXNwYXRjaGVyKHRoaXMpOworfQorCitX
ZWJJbnNwZWN0b3IuTWVtb3J5RGlzcGF0Y2hlci5nZXRJbnN0YW5jZSA9IGZ1bmN0aW9uKCkKK3sK
KyAgICBpZiAoIVdlYkluc3BlY3Rvci5NZW1vcnlEaXNwYXRjaGVyLl9pbnN0YW5jZSkKKyAgICAg
ICAgV2ViSW5zcGVjdG9yLk1lbW9yeURpc3BhdGNoZXIuX2luc3RhbmNlID0gbmV3IFdlYkluc3Bl
Y3Rvci5NZW1vcnlEaXNwYXRjaGVyKCk7CisgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5NZW1vcnlE
aXNwYXRjaGVyLl9pbnN0YW5jZTsKIH0KIAogV2ViSW5zcGVjdG9yLk1lbW9yeURpc3BhdGNoZXIu
cHJvdG90eXBlID0geworICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlByb2Zp
bGVUeXBlfSBwcm9maWxlVHlwZQorICAgICAqLworICAgIHJlZ2lzdGVyUHJvZmlsZVR5cGU6IGZ1
bmN0aW9uKHByb2ZpbGVUeXBlKQorICAgIHsKKyAgICAgICAgdGhpcy5fcHJvZmlsZVR5cGVzQnlJ
ZE1hcFtwcm9maWxlVHlwZS5pZF0gPSBwcm9maWxlVHlwZTsKKyAgICAgICAgcHJvZmlsZVR5cGUu
cGFuZWwoKS5fcmVnaXN0ZXJQcm9maWxlVHlwZShwcm9maWxlVHlwZSk7CisgICAgfSwKKwogCiAg
ICAgLyoqCiAgICAgICogQG92ZXJyaWRlCkBAIC0xMjUxLDcgKzEzMDQsOCBAQCBXZWJJbnNwZWN0
b3IuTWVtb3J5RGlzcGF0Y2hlci5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgYWRkTmF0aXZl
U25hcHNob3RDaHVuazogZnVuY3Rpb24oY2h1bmspCiAgICAgewotICAgICAgICB2YXIgcHJvZmls
ZSA9IHRoaXMuX3Byb2ZpbGVzUGFuZWwuZmluZFRlbXBvcmFyeVByb2ZpbGUoV2ViSW5zcGVjdG9y
Lk5hdGl2ZVNuYXBzaG90UHJvZmlsZVR5cGUuVHlwZUlkKTsKKyAgICAgICAgdmFyIHByb2ZpbGVU
eXBlID0gdGhpcy5fcHJvZmlsZVR5cGVzQnlJZE1hcFtXZWJJbnNwZWN0b3IuTmF0aXZlU25hcHNo
b3RQcm9maWxlVHlwZS5UeXBlSWRdOworICAgICAgICB2YXIgcHJvZmlsZSA9IHByb2ZpbGVUeXBl
LnBhbmVsKCkuZmluZFRlbXBvcmFyeVByb2ZpbGUoV2ViSW5zcGVjdG9yLk5hdGl2ZVNuYXBzaG90
UHJvZmlsZVR5cGUuVHlwZUlkKTsKICAgICAgICAgaWYgKCFwcm9maWxlKQogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICBwcm9maWxlLmFkZE5hdGl2ZVNuYXBzaG90Q2h1bmsoY2h1bmspOwpA
QCAtMTI2MSwyMSArMTMxNSw0MCBAQCBXZWJJbnNwZWN0b3IuTWVtb3J5RGlzcGF0Y2hlci5wcm90
b3R5cGUgPSB7CiAvKioKICAqIEBjb25zdHJ1Y3RvcgogICogQGltcGxlbWVudHMge1Byb2ZpbGVy
QWdlbnQuRGlzcGF0Y2hlcn0KLSAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFuZWx9
IHByb2ZpbGVzUGFuZWwKICAqLwotV2ViSW5zcGVjdG9yLlByb2ZpbGVyRGlzcGF0Y2hlciA9IGZ1
bmN0aW9uKHByb2ZpbGVzUGFuZWwpCitXZWJJbnNwZWN0b3IuUHJvZmlsZXJEaXNwYXRjaGVyID0g
ZnVuY3Rpb24oKQogewotICAgIHRoaXMuX3Byb2ZpbGVzUGFuZWwgPSBwcm9maWxlc1BhbmVsOwor
ICAgIHRoaXMuX3Byb2ZpbGVUeXBlc0J5SWRNYXAgPSB7fTsKKyAgICBJbnNwZWN0b3JCYWNrZW5k
LnJlZ2lzdGVyUHJvZmlsZXJEaXNwYXRjaGVyKHRoaXMpOworfQorCisvKioKKyAqIEByZXR1cm4g
e1dlYkluc3BlY3Rvci5Qcm9maWxlckRpc3BhdGNoZXJ9CisgKi8KK1dlYkluc3BlY3Rvci5Qcm9m
aWxlckRpc3BhdGNoZXIuZ2V0SW5zdGFuY2UgPSBmdW5jdGlvbigpCit7CisgICAgaWYgKCFXZWJJ
bnNwZWN0b3IuUHJvZmlsZXJEaXNwYXRjaGVyLl9pbnN0YW5jZSkKKyAgICAgICAgV2ViSW5zcGVj
dG9yLlByb2ZpbGVyRGlzcGF0Y2hlci5faW5zdGFuY2UgPSBuZXcgV2ViSW5zcGVjdG9yLlByb2Zp
bGVyRGlzcGF0Y2hlcigpOworICAgIHJldHVybiBXZWJJbnNwZWN0b3IuUHJvZmlsZXJEaXNwYXRj
aGVyLl9pbnN0YW5jZTsKIH0KIAogV2ViSW5zcGVjdG9yLlByb2ZpbGVyRGlzcGF0Y2hlci5wcm90
b3R5cGUgPSB7CiAgICAgLyoqCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuUHJvZmlsZVR5
cGV9IHByb2ZpbGVUeXBlCisgICAgICovCisgICAgcmVnaXN0ZXJQcm9maWxlVHlwZTogZnVuY3Rp
b24ocHJvZmlsZVR5cGUpCisgICAgeworICAgICAgICB0aGlzLl9wcm9maWxlVHlwZXNCeUlkTWFw
W3Byb2ZpbGVUeXBlLmlkXSA9IHByb2ZpbGVUeXBlOworICAgICAgICBwcm9maWxlVHlwZS5wYW5l
bCgpLl9yZWdpc3RlclByb2ZpbGVUeXBlKHByb2ZpbGVUeXBlKTsKKyAgICB9LAorCisgICAgLyoq
CiAgICAgICogQHBhcmFtIHtQcm9maWxlckFnZW50LlByb2ZpbGVIZWFkZXJ9IHByb2ZpbGUKICAg
ICAgKi8KICAgICBhZGRQcm9maWxlSGVhZGVyOiBmdW5jdGlvbihwcm9maWxlKQogICAgIHsKLSAg
ICAgICAgdmFyIHByb2ZpbGVUeXBlID0gdGhpcy5fcHJvZmlsZXNQYW5lbC5nZXRQcm9maWxlVHlw
ZShwcm9maWxlLnR5cGVJZCk7Ci0gICAgICAgIHRoaXMuX3Byb2ZpbGVzUGFuZWwuYWRkUHJvZmls
ZUhlYWRlcihwcm9maWxlVHlwZS5jcmVhdGVQcm9maWxlKHByb2ZpbGUpKTsKKyAgICAgICAgdmFy
IHByb2ZpbGVUeXBlID0gdGhpcy5fcHJvZmlsZVR5cGVzQnlJZE1hcFtwcm9maWxlLnR5cGVJZF07
CisgICAgICAgIHByb2ZpbGVUeXBlLl9hZGRQcm9maWxlSGVhZGVyKHByb2ZpbGUpOwogICAgIH0s
CiAKICAgICAvKioKQEAgLTEyODUsNyArMTM1OCw4IEBAIFdlYkluc3BlY3Rvci5Qcm9maWxlckRp
c3BhdGNoZXIucHJvdG90eXBlID0gewogICAgICAqLwogICAgIGFkZEhlYXBTbmFwc2hvdENodW5r
OiBmdW5jdGlvbih1aWQsIGNodW5rKQogICAgIHsKLSAgICAgICAgdGhpcy5fcHJvZmlsZXNQYW5l
bC5fYWRkSGVhcFNuYXBzaG90Q2h1bmsodWlkLCBjaHVuayk7CisgICAgICAgIHZhciBwcm9maWxl
VHlwZSA9IHRoaXMuX3Byb2ZpbGVUeXBlc0J5SWRNYXBbV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hv
dFByb2ZpbGVUeXBlLlR5cGVJZF07CisgICAgICAgIHByb2ZpbGVUeXBlLl9hZGRIZWFwU25hcHNo
b3RDaHVuayh1aWQsIGNodW5rKTsKICAgICB9LAogCiAgICAgLyoqCkBAIC0xMjk0LDcgKzEzNjgs
OCBAQCBXZWJJbnNwZWN0b3IuUHJvZmlsZXJEaXNwYXRjaGVyLnByb3RvdHlwZSA9IHsKICAgICAg
Ki8KICAgICBmaW5pc2hIZWFwU25hcHNob3Q6IGZ1bmN0aW9uKHVpZCkKICAgICB7Ci0gICAgICAg
IHRoaXMuX3Byb2ZpbGVzUGFuZWwuX2ZpbmlzaEhlYXBTbmFwc2hvdCh1aWQpOworICAgICAgICB2
YXIgcHJvZmlsZVR5cGUgPSB0aGlzLl9wcm9maWxlVHlwZXNCeUlkTWFwW1dlYkluc3BlY3Rvci5I
ZWFwU25hcHNob3RQcm9maWxlVHlwZS5UeXBlSWRdOworICAgICAgICBwcm9maWxlVHlwZS5fZmlu
aXNoSGVhcFNuYXBzaG90KHVpZCk7CiAgICAgfSwKIAogICAgIC8qKgpAQCAtMTMwMyw3ICsxMzc4
LDggQEAgV2ViSW5zcGVjdG9yLlByb2ZpbGVyRGlzcGF0Y2hlci5wcm90b3R5cGUgPSB7CiAgICAg
ICovCiAgICAgc2V0UmVjb3JkaW5nUHJvZmlsZTogZnVuY3Rpb24oaXNQcm9maWxpbmcpCiAgICAg
ewotICAgICAgICB0aGlzLl9wcm9maWxlc1BhbmVsLnNldFJlY29yZGluZ1Byb2ZpbGUoV2ViSW5z
cGVjdG9yLkNQVVByb2ZpbGVUeXBlLlR5cGVJZCwgaXNQcm9maWxpbmcpOworICAgICAgICB2YXIg
cHJvZmlsZVR5cGUgPSB0aGlzLl9wcm9maWxlVHlwZXNCeUlkTWFwW1dlYkluc3BlY3Rvci5DUFVQ
cm9maWxlVHlwZS5UeXBlSWRdOworICAgICAgICBwcm9maWxlVHlwZS5zZXRSZWNvcmRpbmdQcm9m
aWxlKGlzUHJvZmlsaW5nKTsKICAgICB9LAogCiAgICAgLyoqCkBAIC0xMzExLDcgKzEzODcsOCBA
QCBXZWJJbnNwZWN0b3IuUHJvZmlsZXJEaXNwYXRjaGVyLnByb3RvdHlwZSA9IHsKICAgICAgKi8K
ICAgICByZXNldFByb2ZpbGVzOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICB0aGlzLl9wcm9m
aWxlc1BhbmVsLl9yZXNldCgpOworICAgICAgICBmb3IgKHZhciBpZCBpbiB0aGlzLl9wcm9maWxl
VHlwZXNCeUlkTWFwKQorICAgICAgICAgICAgdGhpcy5fcHJvZmlsZVR5cGVzQnlJZE1hcFtpZF0u
X3Jlc2V0KCk7CiAgICAgfSwKIAogICAgIC8qKgpAQCAtMTMyMSwyOCArMTM5OCw0OCBAQCBXZWJJ
bnNwZWN0b3IuUHJvZmlsZXJEaXNwYXRjaGVyLnByb3RvdHlwZSA9IHsKICAgICAgKi8KICAgICBy
ZXBvcnRIZWFwU25hcHNob3RQcm9ncmVzczogZnVuY3Rpb24oZG9uZSwgdG90YWwpCiAgICAgewot
ICAgICAgICB0aGlzLl9wcm9maWxlc1BhbmVsLl9yZXBvcnRIZWFwU25hcHNob3RQcm9ncmVzcyhk
b25lLCB0b3RhbCk7CisgICAgICAgIHZhciBwcm9maWxlVHlwZSA9IHRoaXMuX3Byb2ZpbGVUeXBl
c0J5SWRNYXBbV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFByb2ZpbGVUeXBlLlR5cGVJZF07Cisg
ICAgICAgIHByb2ZpbGVUeXBlLl9yZXBvcnRIZWFwU25hcHNob3RQcm9ncmVzcyhkb25lLCB0b3Rh
bCk7CiAgICAgfQogfQogCiAvKioKICAqIEBjb25zdHJ1Y3RvcgogICogQGltcGxlbWVudHMge0hl
YXBQcm9maWxlckFnZW50LkRpc3BhdGNoZXJ9Ci0gKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5Qcm9m
aWxlc1BhbmVsfSBwcm9maWxlc1BhbmVsCiAgKi8KLVdlYkluc3BlY3Rvci5IZWFwUHJvZmlsZXJE
aXNwYXRjaGVyID0gZnVuY3Rpb24ocHJvZmlsZXNQYW5lbCkKK1dlYkluc3BlY3Rvci5IZWFwUHJv
ZmlsZXJEaXNwYXRjaGVyID0gZnVuY3Rpb24oKQogewotICAgIHRoaXMuX3Byb2ZpbGVzUGFuZWwg
PSBwcm9maWxlc1BhbmVsOworICAgIHRoaXMuX3Byb2ZpbGVUeXBlc0J5SWRNYXAgPSB7fTsKKyAg
ICBJbnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVySGVhcFByb2ZpbGVyRGlzcGF0Y2hlcih0aGlzKTsK
K30KKworLyoqCisgKiBAcmV0dXJuIHtXZWJJbnNwZWN0b3IuSGVhcFByb2ZpbGVyRGlzcGF0Y2hl
cn0KKyAqLworV2ViSW5zcGVjdG9yLkhlYXBQcm9maWxlckRpc3BhdGNoZXIuZ2V0SW5zdGFuY2Ug
PSBmdW5jdGlvbigpCit7CisgICAgaWYgKCFXZWJJbnNwZWN0b3IuSGVhcFByb2ZpbGVyRGlzcGF0
Y2hlci5faW5zdGFuY2UpCisgICAgICAgIFdlYkluc3BlY3Rvci5IZWFwUHJvZmlsZXJEaXNwYXRj
aGVyLl9pbnN0YW5jZSA9IG5ldyBXZWJJbnNwZWN0b3IuSGVhcFByb2ZpbGVyRGlzcGF0Y2hlcigp
OworICAgIHJldHVybiBXZWJJbnNwZWN0b3IuSGVhcFByb2ZpbGVyRGlzcGF0Y2hlci5faW5zdGFu
Y2U7CiB9CiAKIFdlYkluc3BlY3Rvci5IZWFwUHJvZmlsZXJEaXNwYXRjaGVyLnByb3RvdHlwZSA9
IHsKICAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5Qcm9maWxlVHlwZX0gcHJv
ZmlsZVR5cGUKKyAgICAgKi8KKyAgICByZWdpc3RlclByb2ZpbGVUeXBlOiBmdW5jdGlvbihwcm9m
aWxlVHlwZSkKKyAgICB7CisgICAgICAgIHRoaXMuX3Byb2ZpbGVUeXBlc0J5SWRNYXBbcHJvZmls
ZVR5cGUuaWRdID0gcHJvZmlsZVR5cGU7CisgICAgICAgIHByb2ZpbGVUeXBlLnBhbmVsKCkuX3Jl
Z2lzdGVyUHJvZmlsZVR5cGUocHJvZmlsZVR5cGUpOworICAgIH0sCisKKyAgICAvKioKICAgICAg
KiBAcGFyYW0ge0hlYXBQcm9maWxlckFnZW50LlByb2ZpbGVIZWFkZXJ9IHByb2ZpbGUKICAgICAg
Ki8KICAgICBhZGRQcm9maWxlSGVhZGVyOiBmdW5jdGlvbihwcm9maWxlKQogICAgIHsKLSAgICAg
ICAgdmFyIHByb2ZpbGVUeXBlID0gdGhpcy5fcHJvZmlsZXNQYW5lbC5nZXRQcm9maWxlVHlwZShX
ZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UHJvZmlsZVR5cGUuVHlwZUlkKTsKLSAgICAgICAgdGhp
cy5fcHJvZmlsZXNQYW5lbC5hZGRQcm9maWxlSGVhZGVyKHByb2ZpbGVUeXBlLmNyZWF0ZVByb2Zp
bGUocHJvZmlsZSkpOworICAgICAgICB2YXIgcHJvZmlsZVR5cGUgPSB0aGlzLl9wcm9maWxlVHlw
ZXNCeUlkTWFwW1dlYkluc3BlY3Rvci5IZWFwU25hcHNob3RQcm9maWxlVHlwZS5UeXBlSWRdOwor
ICAgICAgICBwcm9maWxlVHlwZS5wYW5lbCgpLmFkZFByb2ZpbGVIZWFkZXIocHJvZmlsZVR5cGUu
Y3JlYXRlUHJvZmlsZShwcm9maWxlKSk7CiAgICAgfSwKIAogICAgIC8qKgpAQCAtMTM1Miw3ICsx
NDQ5LDggQEAgV2ViSW5zcGVjdG9yLkhlYXBQcm9maWxlckRpc3BhdGNoZXIucHJvdG90eXBlID0g
ewogICAgICAqLwogICAgIGFkZEhlYXBTbmFwc2hvdENodW5rOiBmdW5jdGlvbih1aWQsIGNodW5r
KQogICAgIHsKLSAgICAgICAgdGhpcy5fcHJvZmlsZXNQYW5lbC5fYWRkSGVhcFNuYXBzaG90Q2h1
bmsodWlkLCBjaHVuayk7CisgICAgICAgIHZhciBwcm9maWxlVHlwZSA9IHRoaXMuX3Byb2ZpbGVU
eXBlc0J5SWRNYXBbV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFByb2ZpbGVUeXBlLlR5cGVJZF07
CisgICAgICAgIHByb2ZpbGVUeXBlLnBhbmVsKCkuX2FkZEhlYXBTbmFwc2hvdENodW5rKHVpZCwg
Y2h1bmspOwogICAgIH0sCiAKICAgICAvKioKQEAgLTEzNjEsNyArMTQ1OSw4IEBAIFdlYkluc3Bl
Y3Rvci5IZWFwUHJvZmlsZXJEaXNwYXRjaGVyLnByb3RvdHlwZSA9IHsKICAgICAgKi8KICAgICBm
aW5pc2hIZWFwU25hcHNob3Q6IGZ1bmN0aW9uKHVpZCkKICAgICB7Ci0gICAgICAgIHRoaXMuX3By
b2ZpbGVzUGFuZWwuX2ZpbmlzaEhlYXBTbmFwc2hvdCh1aWQpOworICAgICAgICB2YXIgcHJvZmls
ZVR5cGUgPSB0aGlzLl9wcm9maWxlVHlwZXNCeUlkTWFwW1dlYkluc3BlY3Rvci5IZWFwU25hcHNo
b3RQcm9maWxlVHlwZS5UeXBlSWRdOworICAgICAgICBwcm9maWxlVHlwZS5wYW5lbCgpLl9maW5p
c2hIZWFwU25hcHNob3QodWlkKTsKICAgICB9LAogCiAgICAgLyoqCkBAIC0xMzY5LDcgKzE0Njgs
OCBAQCBXZWJJbnNwZWN0b3IuSGVhcFByb2ZpbGVyRGlzcGF0Y2hlci5wcm90b3R5cGUgPSB7CiAg
ICAgICovCiAgICAgcmVzZXRQcm9maWxlczogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgdGhp
cy5fcHJvZmlsZXNQYW5lbC5fcmVzZXQoKTsKKyAgICAgICAgZm9yICh2YXIgaWQgaW4gdGhpcy5f
cHJvZmlsZVR5cGVzQnlJZE1hcCkKKyAgICAgICAgICAgIHRoaXMuX3Byb2ZpbGVUeXBlc0J5SWRN
YXBbaWRdLl9yZXNldCgpOwogICAgIH0sCiAKICAgICAvKioKQEAgLTEzNzksNyArMTQ3OSw4IEBA
IFdlYkluc3BlY3Rvci5IZWFwUHJvZmlsZXJEaXNwYXRjaGVyLnByb3RvdHlwZSA9IHsKICAgICAg
Ki8KICAgICByZXBvcnRIZWFwU25hcHNob3RQcm9ncmVzczogZnVuY3Rpb24oZG9uZSwgdG90YWwp
CiAgICAgewotICAgICAgICB0aGlzLl9wcm9maWxlc1BhbmVsLl9yZXBvcnRIZWFwU25hcHNob3RQ
cm9ncmVzcyhkb25lLCB0b3RhbCk7CisgICAgICAgIHZhciBwcm9maWxlVHlwZSA9IHRoaXMuX3By
b2ZpbGVUeXBlc0J5SWRNYXBbV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFByb2ZpbGVUeXBlLlR5
cGVJZF07CisgICAgICAgIHByb2ZpbGVUeXBlLnBhbmVsKCkuX3JlcG9ydEhlYXBTbmFwc2hvdFBy
b2dyZXNzKGRvbmUsIHRvdGFsKTsKICAgICB9CiB9CiAKQEAgLTE0NTIsNyArMTU1Myw3IEBAIFdl
Ykluc3BlY3Rvci5Qcm9maWxlU2lkZWJhclRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICB7
CiAgICAgICAgIHZhciBwcm9maWxlID0gdGhpcy5wcm9maWxlOwogICAgICAgICB2YXIgY29udGV4
dE1lbnUgPSBuZXcgV2ViSW5zcGVjdG9yLkNvbnRleHRNZW51KGV2ZW50KTsKLSAgICAgICAgdmFy
IHByb2ZpbGVzUGFuZWwgPSBXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbC5faW5zdGFuY2U7Cisg
ICAgICAgIHZhciBwcm9maWxlc1BhbmVsID0gcHJvZmlsZS5wcm9maWxlVHlwZSgpLnBhbmVsOwog
ICAgICAgICAvLyBGSVhNRTogdXNlIGNvbnRleHQgbWVudSBwcm92aWRlcgogICAgICAgICBpZiAo
cHJvZmlsZS5jYW5TYXZlVG9GaWxlKCkpIHsKICAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVu
ZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTYXZlIEhlYXAgU25hcHNob3RcdTIwMjYiKSwg
cHJvZmlsZS5zYXZlVG9GaWxlLmJpbmQocHJvZmlsZSkpOwpAQCAtMTQ4Miw4ICsxNTgzLDEwIEBA
IFdlYkluc3BlY3Rvci5Qcm9maWxlR3JvdXBTaWRlYmFyVHJlZUVsZW1lbnQgPSBmdW5jdGlvbih0
aXRsZSwgc3VidGl0bGUpCiBXZWJJbnNwZWN0b3IuUHJvZmlsZUdyb3VwU2lkZWJhclRyZWVFbGVt
ZW50LnByb3RvdHlwZSA9IHsKICAgICBvbnNlbGVjdDogZnVuY3Rpb24oKQogICAgIHsKLSAgICAg
ICAgaWYgKHRoaXMuY2hpbGRyZW4ubGVuZ3RoID4gMCkKLSAgICAgICAgICAgIFdlYkluc3BlY3Rv
ci5Qcm9maWxlc1BhbmVsLl9pbnN0YW5jZS5zaG93UHJvZmlsZSh0aGlzLmNoaWxkcmVuW3RoaXMu
Y2hpbGRyZW4ubGVuZ3RoIC0gMV0ucHJvZmlsZSk7CisgICAgICAgIGlmICh0aGlzLmNoaWxkcmVu
Lmxlbmd0aCA+IDApIHsKKyAgICAgICAgICAgIHZhciBwcm9maWxlc1BhbmVsID0gLyoqIEAgdHlw
ZSB7V2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFuZWx9ICovIFdlYkluc3BlY3Rvci5wYW5lbCgicHJv
ZmlsZXMiKTsKKyAgICAgICAgICAgIHByb2ZpbGVzUGFuZWwuc2hvd1Byb2ZpbGUodGhpcy5jaGls
ZHJlblt0aGlzLmNoaWxkcmVuLmxlbmd0aCAtIDFdLnByb2ZpbGUpOworICAgICAgICB9CiAgICAg
fSwKIAogICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLlNpZGViYXJUcmVlRWxlbWVudC5wcm90
b3R5cGUKQEAgLTE1MTYsNiArMTYxOSw4NSBAQCBXZWJJbnNwZWN0b3IuUHJvZmlsZXNTaWRlYmFy
VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLlNp
ZGViYXJUcmVlRWxlbWVudC5wcm90b3R5cGUKIH0KIAorCisvKioKKyAqIEBjb25zdHJ1Y3Rvcgor
ICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVsfQorICovCitXZWJJbnNwZWN0
b3IuQ1BVUHJvZmlsZXJQYW5lbCA9IGZ1bmN0aW9uKCkKK3sKKyAgICBXZWJJbnNwZWN0b3IuUHJv
ZmlsZXNQYW5lbC5jYWxsKHRoaXMsICJjcHUtcHJvZmlsZXIiKTsKKyAgICBXZWJJbnNwZWN0b3Iu
UHJvZmlsZXJEaXNwYXRjaGVyLmdldEluc3RhbmNlKCkucmVnaXN0ZXJQcm9maWxlVHlwZShuZXcg
V2ViSW5zcGVjdG9yLkNQVVByb2ZpbGVUeXBlKHRoaXMpKTsKK30KKworV2ViSW5zcGVjdG9yLkNQ
VVByb2ZpbGVyUGFuZWwucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5Qcm9maWxl
c1BhbmVsLnByb3RvdHlwZTsKKworCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQGV4dGVuZHMg
e1dlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVsfQorICovCitXZWJJbnNwZWN0b3IuQ1NTU2VsZWN0
b3JQcm9maWxlclBhbmVsID0gZnVuY3Rpb24oKQoreworICAgIFdlYkluc3BlY3Rvci5Qcm9maWxl
c1BhbmVsLmNhbGwodGhpcywgImNzcy1wcm9maWxlciIpOworICAgIFdlYkluc3BlY3Rvci5Qcm9m
aWxlckRpc3BhdGNoZXIuZ2V0SW5zdGFuY2UoKS5yZWdpc3RlclByb2ZpbGVUeXBlKG5ldyBXZWJJ
bnNwZWN0b3IuQ1NTU2VsZWN0b3JQcm9maWxlVHlwZSh0aGlzKSk7Cit9CisKK1dlYkluc3BlY3Rv
ci5DU1NTZWxlY3RvclByb2ZpbGVyUGFuZWwucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3Bl
Y3Rvci5Qcm9maWxlc1BhbmVsLnByb3RvdHlwZTsKKworCisvKioKKyAqIEBjb25zdHJ1Y3Rvcgor
ICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVsfQorICovCitXZWJJbnNwZWN0
b3IuSGVhcFByb2ZpbGVyUGFuZWwgPSBmdW5jdGlvbigpCit7CisgICAgV2ViSW5zcGVjdG9yLlBy
b2ZpbGVzUGFuZWwuY2FsbCh0aGlzLCAiaGVhcC1wcm9maWxlciIpOworICAgIFdlYkluc3BlY3Rv
ci5IZWFwUHJvZmlsZXJEaXNwYXRjaGVyLmdldEluc3RhbmNlKCkucmVnaXN0ZXJQcm9maWxlVHlw
ZShuZXcgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFByb2ZpbGVUeXBlKHRoaXMpKTsKK30KKwor
V2ViSW5zcGVjdG9yLkhlYXBQcm9maWxlclBhbmVsLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJ
bnNwZWN0b3IuUHJvZmlsZXNQYW5lbC5wcm90b3R5cGU7CisKKworLyoqCisgKiBAY29uc3RydWN0
b3IKKyAqIEBleHRlbmRzIHtXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbH0KKyAqLworV2ViSW5z
cGVjdG9yLkNhbnZhc1Byb2ZpbGVyUGFuZWwgPSBmdW5jdGlvbigpCit7CisgICAgV2ViSW5zcGVj
dG9yLlByb2ZpbGVzUGFuZWwuY2FsbCh0aGlzLCAiY2FudmFzLXByb2ZpbGVyIik7CisgICAgV2Vi
SW5zcGVjdG9yLlByb2ZpbGVyRGlzcGF0Y2hlci5nZXRJbnN0YW5jZSgpLnJlZ2lzdGVyUHJvZmls
ZVR5cGUobmV3IFdlYkluc3BlY3Rvci5DYW52YXNQcm9maWxlVHlwZSh0aGlzKSk7Cit9CisKK1dl
Ykluc3BlY3Rvci5DYW52YXNQcm9maWxlclBhbmVsLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJ
bnNwZWN0b3IuUHJvZmlsZXNQYW5lbC5wcm90b3R5cGU7CisKKworLyoqCisgKiBAY29uc3RydWN0
b3IKKyAqIEBleHRlbmRzIHtXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbH0KKyAqLworV2ViSW5z
cGVjdG9yLk1lbW9yeUNoYXJ0UHJvZmlsZXJQYW5lbCA9IGZ1bmN0aW9uKCkKK3sKKyAgICBXZWJJ
bnNwZWN0b3IuUHJvZmlsZXNQYW5lbC5jYWxsKHRoaXMsICJtZW1vcnktY2hhcnQtcHJvZmlsZXIi
KTsKKyAgICBXZWJJbnNwZWN0b3IuTWVtb3J5RGlzcGF0Y2hlci5nZXRJbnN0YW5jZSgpLnJlZ2lz
dGVyUHJvZmlsZVR5cGUobmV3IFdlYkluc3BlY3Rvci5OYXRpdmVNZW1vcnlQcm9maWxlVHlwZSh0
aGlzKSk7Cit9CisKK1dlYkluc3BlY3Rvci5NZW1vcnlDaGFydFByb2ZpbGVyUGFuZWwucHJvdG90
eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVsLnByb3RvdHlwZTsKKwor
CisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5Qcm9maWxl
c1BhbmVsfQorICovCitXZWJJbnNwZWN0b3IuTmF0aXZlTWVtb3J5UHJvZmlsZXJQYW5lbCA9IGZ1
bmN0aW9uKCkKK3sKKyAgICBXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbC5jYWxsKHRoaXMsICJt
ZW1vcnktc25hcHNob3QtcHJvZmlsZXIiKTsKKyAgICBXZWJJbnNwZWN0b3IuTWVtb3J5RGlzcGF0
Y2hlci5nZXRJbnN0YW5jZSgpLnJlZ2lzdGVyUHJvZmlsZVR5cGUobmV3IFdlYkluc3BlY3Rvci5O
YXRpdmVTbmFwc2hvdFByb2ZpbGVUeXBlKHRoaXMpKTsKK30KKworV2ViSW5zcGVjdG9yLk5hdGl2
ZU1lbW9yeVByb2ZpbGVyUGFuZWwucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5Q
cm9maWxlc1BhbmVsLnByb3RvdHlwZTsKKworCiBpbXBvcnRTY3JpcHQoIlByb2ZpbGVEYXRhR3Jp
ZFRyZWUuanMiKTsKIGltcG9ydFNjcmlwdCgiQm90dG9tVXBQcm9maWxlRGF0YUdyaWRUcmVlLmpz
Iik7CiBpbXBvcnRTY3JpcHQoIkNQVVByb2ZpbGVWaWV3LmpzIik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdzLmpzIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5ncy5qcwppbmRleCA2NzAzZWJlNDc2ZjAyY2Jm
ZWQyYTI5MjQ3N2VkYmQ4MWJkNDMxOTZjLi5iNzUzZmNlY2MzNTI1MDYwNDA3MWI0YTAwMWQwYjMz
ZWU5N2YyYjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1NldHRpbmdzLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2V0
dGluZ3MuanMKQEAgLTIxNCw2ICsyMTQsNyBAQCBXZWJJbnNwZWN0b3IuRXhwZXJpbWVudHNTZXR0
aW5ncyA9IGZ1bmN0aW9uKCkKICAgICB0aGlzLmZpbGVTeXN0ZW1Qcm9qZWN0ID0gdGhpcy5fY3Jl
YXRlRXhwZXJpbWVudCgiZmlsZVN5c3RlbVByb2plY3QiLCAiRmlsZSBzeXN0ZW0gZm9sZGVycyBp
biBTb3VyY2VzIFBhbmVsIik7CiAgICAgdGhpcy5ob3Jpem9udGFsUGFuZWxTcGxpdCA9IHRoaXMu
X2NyZWF0ZUV4cGVyaW1lbnQoImhvcml6b250YWxQYW5lbFNwbGl0IiwgIkFsbG93IGhvcml6b250
YWwgc3BsaXQgaW4gRWxlbWVudHMgYW5kIFNvdXJjZXMgcGFuZWxzIik7CiAgICAgdGhpcy5zaG93
V2hpdGVzcGFjZUluRWRpdG9yID0gdGhpcy5fY3JlYXRlRXhwZXJpbWVudCgic2hvd1doaXRlc3Bh
Y2VJbkVkaXRvciIsICJTaG93IHdoaXRlc3BhY2UgY2hhcmFjdGVycyBpbiBlZGl0b3IiKTsKKyAg
ICB0aGlzLnNlcGFyYXRlUHJvZmlsZXJzID0gdGhpcy5fY3JlYXRlRXhwZXJpbWVudCgic2VwYXJh
dGVQcm9maWxlcnMiLCAiU2VwYXJhdGUgcHJvZmlsZXIgdG9vbHMiKTsKIAogICAgIHRoaXMuX2Ns
ZWFuVXBTZXR0aW5nKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL2luc3BlY3Rvci5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvaW5zcGVjdG9yLmpzCmluZGV4IDIxOWJmYThkMTMwZTJmNDM3ZDQ4ODM1YTI0Y2E0OWZhZmRi
ZjI1OTguLmE2NDcyZWU5ZjE3ZWVhNmZlMzM4ZWEzMTBmM2ZhM2Q2OTA2MmY3YjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzCkBAIC00Niwx
MiArNDYsMjggQEAgdmFyIFdlYkluc3BlY3RvciA9IHsKICAgICAgICAgdmFyIGF1ZGl0cyA9IG5l
dyBXZWJJbnNwZWN0b3IuUGFuZWxEZXNjcmlwdG9yKCJhdWRpdHMiLCBXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIkF1ZGl0cyIpLCAiQXVkaXRzUGFuZWwiLCAiQXVkaXRzUGFuZWwuanMiKTsKICAgICAg
ICAgdmFyIGNvbnNvbGUgPSBuZXcgV2ViSW5zcGVjdG9yLlBhbmVsRGVzY3JpcHRvcigiY29uc29s
ZSIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ29uc29sZSIpLCAiQ29uc29sZVBhbmVsIik7CiAg
ICAgICAgIHZhciBhbGxEZXNjcmlwdG9ycyA9IFtlbGVtZW50cywgcmVzb3VyY2VzLCBuZXR3b3Jr
LCBzY3JpcHRzLCB0aW1lbGluZSwgcHJvZmlsZXMsIGF1ZGl0cywgY29uc29sZV07CisgICAgICAg
IHZhciBhbGxQcm9maWxlcnMgPSBbcHJvZmlsZXNdOworICAgICAgICBpZiAoV2ViSW5zcGVjdG9y
LmV4cGVyaW1lbnRzU2V0dGluZ3Muc2VwYXJhdGVQcm9maWxlcnMuaXNFbmFibGVkKCkpIHsKKyAg
ICAgICAgICAgIGFsbFByb2ZpbGVycyA9IFtdOworICAgICAgICAgICAgYWxsUHJvZmlsZXJzLnB1
c2gobmV3IFdlYkluc3BlY3Rvci5QYW5lbERlc2NyaXB0b3IoImNwdS1wcm9maWxlciIsIFdlYklu
c3BlY3Rvci5VSVN0cmluZygiQ1BVIFByb2ZpbGVyIiksICJDUFVQcm9maWxlclBhbmVsIiwgIlBy
b2ZpbGVzUGFuZWwuanMiKSk7CisgICAgICAgICAgICBpZiAoIVdlYkluc3BlY3Rvci5Xb3JrZXJN
YW5hZ2VyLmlzV29ya2VyRnJvbnRlbmQoKSkKKyAgICAgICAgICAgICAgICBhbGxQcm9maWxlcnMu
cHVzaChuZXcgV2ViSW5zcGVjdG9yLlBhbmVsRGVzY3JpcHRvcigiY3NzLXByb2ZpbGVyIiwgV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJDU1MgU2VsZWN0b3IgUHJvZmlsZXIiKSwgIkNTU1NlbGVjdG9y
UHJvZmlsZXJQYW5lbCIsICJQcm9maWxlc1BhbmVsLmpzIikpOworICAgICAgICAgICAgaWYgKENh
cGFiaWxpdGllcy5oZWFwUHJvZmlsZXJQcmVzZW50KQorICAgICAgICAgICAgICAgIGFsbFByb2Zp
bGVycy5wdXNoKG5ldyBXZWJJbnNwZWN0b3IuUGFuZWxEZXNjcmlwdG9yKCJoZWFwLXByb2ZpbGVy
IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJIZWFwIFByb2ZpbGVyIiksICJIZWFwUHJvZmlsZXJQ
YW5lbCIsICJQcm9maWxlc1BhbmVsLmpzIikpOworICAgICAgICAgICAgaWYgKFdlYkluc3BlY3Rv
ci5leHBlcmltZW50c1NldHRpbmdzLmNhbnZhc0luc3BlY3Rpb24uaXNFbmFibGVkKCkpCisgICAg
ICAgICAgICAgICAgYWxsUHJvZmlsZXJzLnB1c2gobmV3IFdlYkluc3BlY3Rvci5QYW5lbERlc2Ny
aXB0b3IoImNhbnZhcy1wcm9maWxlciIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ2FudmFzIFBy
b2ZpbGVyIiksICJDYW52YXNQcm9maWxlclBhbmVsIiwgIlByb2ZpbGVzUGFuZWwuanMiKSk7Cisg
ICAgICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLmV4cGVyaW1lbnRzU2V0dGluZ3MubmF0aXZlTWVt
b3J5U25hcHNob3RzLmlzRW5hYmxlZCgpKSB7CisgICAgICAgICAgICAgICAgYWxsUHJvZmlsZXJz
LnB1c2gobmV3IFdlYkluc3BlY3Rvci5QYW5lbERlc2NyaXB0b3IoIm1lbW9yeS1jaGFydC1wcm9m
aWxlciIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiTmF0aXZlIE1lbW9yeSBDaGFydCIpLCAiTWVt
b3J5Q2hhcnRQcm9maWxlclBhbmVsIiwgIlByb2ZpbGVzUGFuZWwuanMiKSk7CisgICAgICAgICAg
ICAgICAgYWxsUHJvZmlsZXJzLnB1c2gobmV3IFdlYkluc3BlY3Rvci5QYW5lbERlc2NyaXB0b3Io
Im1lbW9yeS1zbmFwc2hvdC1wcm9maWxlciIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiTmF0aXZl
IE1lbW9yeSBQcm9maWxlciIpLCAiTmF0aXZlTWVtb3J5UHJvZmlsZXJQYW5lbCIsICJQcm9maWxl
c1BhbmVsLmpzIikpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgQXJyYXkucHJvdG90eXBl
LnNwbGljZS5iaW5kKGFsbERlc2NyaXB0b3JzLCBhbGxEZXNjcmlwdG9ycy5pbmRleE9mKHByb2Zp
bGVzKSwgMSkuYXBwbHkobnVsbCwgYWxsUHJvZmlsZXJzKTsKKyAgICAgICAgfQogCiAgICAgICAg
IHZhciBwYW5lbERlc2NyaXB0b3JzID0gW107CiAgICAgICAgIGlmIChXZWJJbnNwZWN0b3IuV29y
a2VyTWFuYWdlci5pc1dvcmtlckZyb250ZW5kKCkpIHsKICAgICAgICAgICAgIHBhbmVsRGVzY3Jp
cHRvcnMucHVzaChzY3JpcHRzKTsKICAgICAgICAgICAgIHBhbmVsRGVzY3JpcHRvcnMucHVzaCh0
aW1lbGluZSk7Ci0gICAgICAgICAgICBwYW5lbERlc2NyaXB0b3JzLnB1c2gocHJvZmlsZXMpOwor
ICAgICAgICAgICAgcGFuZWxEZXNjcmlwdG9ycyA9IHBhbmVsRGVzY3JpcHRvcnMuY29uY2F0KGFs
bFByb2ZpbGVycyk7CiAgICAgICAgICAgICBwYW5lbERlc2NyaXB0b3JzLnB1c2goY29uc29sZSk7
CiAgICAgICAgICAgICByZXR1cm4gcGFuZWxEZXNjcmlwdG9yczsKICAgICAgICAgfQpAQCAtMjc2
LDggKzI5MiwxMSBAQCB2YXIgV2ViSW5zcGVjdG9yID0gewogICAgIHsKICAgICAgICAgdmFyIHBy
b2ZpbGVTdHJpbmdNYXRjaGVzID0gV2ViSW5zcGVjdG9yLlByb2ZpbGVVUkxSZWdFeHAuZXhlYyh0
aXRsZSk7CiAgICAgICAgIGlmIChwcm9maWxlU3RyaW5nTWF0Y2hlcykgewotICAgICAgICAgICAg
dmFyIHByb2ZpbGVzUGFuZWwgPSAvKiogQCB0eXBlIHtXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5l
bH0gKi8gV2ViSW5zcGVjdG9yLnBhbmVsKCJwcm9maWxlcyIpOwotICAgICAgICAgICAgdGl0bGUg
PSBXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbC5faW5zdGFuY2UuZGlzcGxheVRpdGxlRm9yUHJv
ZmlsZUxpbmsocHJvZmlsZVN0cmluZ01hdGNoZXNbMl0sIHByb2ZpbGVTdHJpbmdNYXRjaGVzWzFd
KTsKKyAgICAgICAgICAgIC8vIFRPRE8oYWxwaCk6IHJvdXRlIHRvIHRoZSBhcHByb3ByaWF0ZSBw
cm9maWxlcgorICAgICAgICAgICAgLy8gQ3VycmVudGx5IG9ubHkgQ1BVIHByb2ZpbGVyIFVSTHMg
YXJlIGluIHVzZS4KKyAgICAgICAgICAgIHZhciBjcHVQcm9maWxlck5hbWUgPSBXZWJJbnNwZWN0
b3IuZXhwZXJpbWVudHNTZXR0aW5ncy5zZXBhcmF0ZVByb2ZpbGVycy5pc0VuYWJsZWQoKSA/ICJj
cHUtcHJvZmlsZXIiIDogInByb2ZpbGVzIjsKKyAgICAgICAgICAgIHZhciBwcm9maWxlc1BhbmVs
ID0gLyoqIEAgdHlwZSB7V2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFuZWx9ICovIFdlYkluc3BlY3Rv
ci5wYW5lbChjcHVQcm9maWxlck5hbWUpOworICAgICAgICAgICAgdGl0bGUgPSBwcm9maWxlc1Bh
bmVsLmRpc3BsYXlUaXRsZUZvclByb2ZpbGVMaW5rKHByb2ZpbGVTdHJpbmdNYXRjaGVzWzJdLCBw
cm9maWxlU3RyaW5nTWF0Y2hlc1sxXSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHRpdGxl
OwogICAgIH0sCkBAIC05ODUsNyArMTAwNCwxMCBAQCBXZWJJbnNwZWN0b3IuX3Nob3dBbmNob3JM
b2NhdGlvbkluUGFuZWwgPSBmdW5jdGlvbihhbmNob3IsIHBhbmVsKQogCiBXZWJJbnNwZWN0b3Iu
c2hvd1Byb2ZpbGVGb3JVUkwgPSBmdW5jdGlvbih1cmwpCiB7Ci0gICAgV2ViSW5zcGVjdG9yLnNo
b3dQYW5lbCgicHJvZmlsZXMiKS5zaG93UHJvZmlsZUZvclVSTCh1cmwpOworICAgIC8vIFRPRE8o
YWxwaCk6IHJvdXRlIHRvIHRoZSBhcHByb3ByaWF0ZSBwcm9maWxlcgorICAgIC8vIEN1cnJlbnRs
eSBvbmx5IENQVSBwcm9maWxlciBVUkxzIGFyZSBpbiB1c2UuCisgICAgdmFyIGNwdVByb2ZpbGVy
TmFtZSA9IFdlYkluc3BlY3Rvci5leHBlcmltZW50c1NldHRpbmdzLnNlcGFyYXRlUHJvZmlsZXJz
LmlzRW5hYmxlZCgpID8gImNwdS1wcm9maWxlciIgOiAicHJvZmlsZXMiOworICAgIFdlYkluc3Bl
Y3Rvci5zaG93UGFuZWwoY3B1UHJvZmlsZXJOYW1lKS5zaG93UHJvZmlsZUZvclVSTCh1cmwpOwog
fQogCiBXZWJJbnNwZWN0b3IuZXZhbHVhdGVJbkNvbnNvbGUgPSBmdW5jdGlvbihleHByZXNzaW9u
LCBzaG93UmVzdWx0T25seSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>188363</attachid>
            <date>2013-02-14 08:39:08 -0800</date>
            <delta_ts>2013-02-26 10:05:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109832-20130214203534.patch</filename>
            <type>text/plain</type>
            <size>40258</size>
            <attacher name="Alexei Filippov">alph</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyODc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDEzZGNjMjYzMjg4YzA3
ZmE4YjkyZDMyMTNmMDRhNjZlZGJhNmNiMC4uY2NlMDU4MzIzMjQ3N2Q2NDg0YmZmOTk1Nzc4ZDE2
MThkNzIxOTg1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgxIEBACisyMDEzLTAyLTE0ICBBbGV4
ZWkgRmlsaXBwb3YgIDxhbHBoQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVjdG9y
OiBNb3ZlIHByb2ZpbGVyIHRvb2xzIGludG8gc2VwYXJhdGUgcGFuZWxzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDk4MzIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGlzIGEgZmlyc3QgcGFydCBv
ZiB0aGUgZml4IHRoYXQgcHV0cyBlYWNoIHByb2ZpbGVyIHRvb2wgaW50byBhIHNlcGFyYXRlIHBh
bmVsLgorCisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9DUFVQcm9maWxlVmlldy5qczoK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5DUFVQcm9maWxlVHlwZSk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuQ1BVUHJvZmlsZVR5cGUucHJvdG90eXBlLnN0YXJ0UmVjb3JkaW5nUHJvZmlsZSk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuQ1BVUHJvZmlsZVR5cGUucHJvdG90eXBlLnN0b3BSZWNvcmRp
bmdQcm9maWxlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0NTU1NlbGVjdG9yUHJv
ZmlsZVZpZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU2VsZWN0b3JQcm9maWxlVHlw
ZSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9DYW52YXNQcm9maWxlVmlldy5qczoK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5DYW52YXNQcm9maWxlVHlwZSk6CisgICAgICAgICogaW5z
cGVjdG9yL2Zyb250LWVuZC9IZWFwU25hcHNob3RWaWV3LmpzOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkhlYXBTbmFwc2hvdFByb2ZpbGVUeXBlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFw
U25hcHNob3RQcm9maWxlVHlwZS5wcm90b3R5cGUuX2FkZEhlYXBTbmFwc2hvdENodW5rKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RQcm9maWxlVHlwZS5wcm90b3R5cGUuX2Zp
bmlzaEhlYXBTbmFwc2hvdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UHJv
ZmlsZVR5cGUucHJvdG90eXBlLl9yZXBvcnRIZWFwU25hcHNob3RQcm9ncmVzcyk6CisgICAgICAg
ICogaW5zcGVjdG9yL2Zyb250LWVuZC9OYXRpdmVNZW1vcnlTbmFwc2hvdFZpZXcuanM6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuTmF0aXZlU25hcHNob3RQcm9maWxlVHlwZSk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuTmF0aXZlTWVtb3J5UHJvZmlsZVR5cGUpOgorICAgICAgICAqIGluc3BlY3Rv
ci9mcm9udC1lbmQvUHJvZmlsZXNQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm9m
aWxlVHlwZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvZmlsZVR5cGUucHJvdG90eXBlLnBh
bmVsKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm9maWxlVHlwZS5wcm90b3R5cGUuX3Jlc2V0
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm9maWxlVHlwZS5wcm90b3R5cGUuX2FkZFByb2Zp
bGVIZWFkZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlByb2ZpbGVIZWFkZXIucHJvdG90eXBl
LnZpZXcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwucHJvdG90eXBlLnRvZ2dsZVJlY29yZEJ1dHRvbik6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbC5wcm90b3R5cGUuX3Jlc2V0KToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVsLnByb3RvdHlwZS5fcmVnaXN0ZXJQ
cm9maWxlVHlwZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbC5wcm90b3R5
cGUuX3JlbW92ZVByb2ZpbGVIZWFkZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlByb2ZpbGVz
UGFuZWwucHJvdG90eXBlLl9wb3B1bGF0ZVByb2ZpbGVzLnZhcik6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuUHJvZmlsZXNQYW5lbC5wcm90b3R5cGUuX3BvcHVsYXRlUHJvZmlsZXMucG9wdWxhdGVD
YWxsYmFjayk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbC5wcm90b3R5cGUu
X3BvcHVsYXRlUHJvZmlsZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwu
cHJvdG90eXBlLnNldFJlY29yZGluZ1Byb2ZpbGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlBy
b2ZpbGVzUGFuZWwucHJvdG90eXBlLnRha2VIZWFwU25hcHNob3QuZG9uZSk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbC5wcm90b3R5cGUudGFrZUhlYXBTbmFwc2hvdCk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuTWVtb3J5RGlzcGF0Y2hlcik6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuTWVtb3J5RGlzcGF0Y2hlci5nZXRJbnN0YW5jZSk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuTWVtb3J5RGlzcGF0Y2hlci5wcm90b3R5cGUucmVnaXN0ZXJQcm9maWxlVHlwZSk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuTWVtb3J5RGlzcGF0Y2hlci5wcm90b3R5cGUuYWRkTmF0aXZlU25h
cHNob3RDaHVuayk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvZmlsZXJEaXNwYXRjaGVyKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm9maWxlckRpc3BhdGNoZXIuZ2V0SW5zdGFuY2UpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlByb2ZpbGVyRGlzcGF0Y2hlci5wcm90b3R5cGUucmVnaXN0
ZXJQcm9maWxlVHlwZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvZmlsZXJEaXNwYXRjaGVy
LnByb3RvdHlwZS5hZGRQcm9maWxlSGVhZGVyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm9m
aWxlckRpc3BhdGNoZXIucHJvdG90eXBlLmFkZEhlYXBTbmFwc2hvdENodW5rKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5Qcm9maWxlckRpc3BhdGNoZXIucHJvdG90eXBlLmZpbmlzaEhlYXBTbmFw
c2hvdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvZmlsZXJEaXNwYXRjaGVyLnByb3RvdHlw
ZS5zZXRSZWNvcmRpbmdQcm9maWxlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm9maWxlckRp
c3BhdGNoZXIucHJvdG90eXBlLnJlc2V0UHJvZmlsZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlByb2ZpbGVyRGlzcGF0Y2hlci5wcm90b3R5cGUucmVwb3J0SGVhcFNuYXBzaG90UHJvZ3Jlc3Mp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBQcm9maWxlckRpc3BhdGNoZXIpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkhlYXBQcm9maWxlckRpc3BhdGNoZXIuZ2V0SW5zdGFuY2UpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkhlYXBQcm9maWxlckRpc3BhdGNoZXIucHJvdG90eXBlLnJlZ2lz
dGVyUHJvZmlsZVR5cGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBQcm9maWxlckRpc3Bh
dGNoZXIucHJvdG90eXBlLmFkZFByb2ZpbGVIZWFkZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkhlYXBQcm9maWxlckRpc3BhdGNoZXIucHJvdG90eXBlLmFkZEhlYXBTbmFwc2hvdENodW5rKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwUHJvZmlsZXJEaXNwYXRjaGVyLnByb3RvdHlwZS5m
aW5pc2hIZWFwU25hcHNob3QpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBQcm9maWxlckRp
c3BhdGNoZXIucHJvdG90eXBlLnJlc2V0UHJvZmlsZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkhlYXBQcm9maWxlckRpc3BhdGNoZXIucHJvdG90eXBlLnJlcG9ydEhlYXBTbmFwc2hvdFByb2dy
ZXNzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm9maWxlU2lkZWJhclRyZWVFbGVtZW50LnBy
b3RvdHlwZS5oYW5kbGVDb250ZXh0TWVudUV2ZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Q
cm9maWxlR3JvdXBTaWRlYmFyVHJlZUVsZW1lbnQucHJvdG90eXBlLm9uc2VsZWN0KToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5DUFVQcm9maWxlclBhbmVsKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5DU1NTZWxlY3RvclByb2ZpbGVyUGFuZWwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBQ
cm9maWxlclBhbmVsKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DYW52YXNQcm9maWxlclBhbmVs
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5NZW1vcnlDaGFydFByb2ZpbGVyUGFuZWwpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLk5hdGl2ZU1lbW9yeVByb2ZpbGVyUGFuZWwpOgorICAgICAgICAq
IGluc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3MuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
RXhwZXJpbWVudHNTZXR0aW5ncyk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNw
ZWN0b3IuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuX3BhbmVsRGVzY3JpcHRvcnMpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLl9wcm9maWxlc0xpbmtpZmllcik6CisgICAgICAgIChXZWJJbnNw
ZWN0b3Iuc2hvd1Byb2ZpbGVGb3JVUkwpOgorCiAyMDEzLTAyLTE0ICBZdXJ5IFNlbWlraGF0c2t5
ICA8eXVyeXNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IGRvbid0IGNy
ZWF0ZSBzdGF0aWMgbG9jYWwgc3RyaW5nIGZvciBwcm9ncmFtIGxpdGVyYWwgaW4gSW5zcGVjdG9y
VGltZWxpbmVBZ2VudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9DUFVQcm9maWxlVmlldy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvQ1BVUHJvZmlsZVZpZXcuanMKaW5kZXggNDZhZTU0MjM4ZDk2ZGVkNDU3ZjA0MjI3MGFkMDk4
MDYxZWI1MTY0Yy4uNTEyMjU2Yjc3ZWI0Y2QzYmQ1ZWQ1NThmMGE3ZmMwOWZjZWVhNzZiYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9DUFVQcm9maWxlVmll
dy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NQVVByb2ZpbGVW
aWV3LmpzCkBAIC01NzEsMTAgKzU3MSwxMSBAQCBXZWJJbnNwZWN0b3IuQ1BVUHJvZmlsZVZpZXcu
cHJvdG90eXBlID0gewogLyoqCiAgKiBAY29uc3RydWN0b3IKICAqIEBleHRlbmRzIHtXZWJJbnNw
ZWN0b3IuUHJvZmlsZVR5cGV9CisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVs
fSBwYW5lbAogICovCi1XZWJJbnNwZWN0b3IuQ1BVUHJvZmlsZVR5cGUgPSBmdW5jdGlvbigpCitX
ZWJJbnNwZWN0b3IuQ1BVUHJvZmlsZVR5cGUgPSBmdW5jdGlvbihwYW5lbCkKIHsKLSAgICBXZWJJ
bnNwZWN0b3IuUHJvZmlsZVR5cGUuY2FsbCh0aGlzLCBXZWJJbnNwZWN0b3IuQ1BVUHJvZmlsZVR5
cGUuVHlwZUlkLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNvbGxlY3QgSmF2YVNjcmlwdCBDUFUg
UHJvZmlsZSIpKTsKKyAgICBXZWJJbnNwZWN0b3IuUHJvZmlsZVR5cGUuY2FsbCh0aGlzLCBXZWJJ
bnNwZWN0b3IuQ1BVUHJvZmlsZVR5cGUuVHlwZUlkLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNv
bGxlY3QgSmF2YVNjcmlwdCBDUFUgUHJvZmlsZSIpLCBwYW5lbCk7CiAgICAgdGhpcy5fcmVjb3Jk
aW5nID0gZmFsc2U7CiAgICAgV2ViSW5zcGVjdG9yLkNQVVByb2ZpbGVUeXBlLmluc3RhbmNlID0g
dGhpczsKIH0KQEAgLTYyMCw2ICs2MjEsNyBAQCBXZWJJbnNwZWN0b3IuQ1BVUHJvZmlsZVR5cGUu
cHJvdG90eXBlID0gewogICAgIHN0YXJ0UmVjb3JkaW5nUHJvZmlsZTogZnVuY3Rpb24oKQogICAg
IHsKICAgICAgICAgdGhpcy5fcmVjb3JkaW5nID0gdHJ1ZTsKKyAgICAgICAgdGhpcy5fcGFuZWwu
c2V0UmVjb3JkaW5nUHJvZmlsZSh0aGlzLmlkLCB0cnVlKTsKICAgICAgICAgV2ViSW5zcGVjdG9y
LnVzZXJNZXRyaWNzLlByb2ZpbGVzQ1BVUHJvZmlsZVRha2VuLnJlY29yZCgpOwogICAgICAgICBQ
cm9maWxlckFnZW50LnN0YXJ0KCk7CiAgICAgfSwKQEAgLTYyNyw2ICs2MjksNyBAQCBXZWJJbnNw
ZWN0b3IuQ1BVUHJvZmlsZVR5cGUucHJvdG90eXBlID0gewogICAgIHN0b3BSZWNvcmRpbmdQcm9m
aWxlOiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICB0aGlzLl9yZWNvcmRpbmcgPSBmYWxzZTsK
KyAgICAgICAgdGhpcy5fcGFuZWwuc2V0UmVjb3JkaW5nUHJvZmlsZSh0aGlzLmlkLCBmYWxzZSk7
CiAgICAgICAgIFByb2ZpbGVyQWdlbnQuc3RvcCgpOwogICAgIH0sCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ1NTU2VsZWN0b3JQcm9maWxlVmlldy5q
cyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ1NTU2VsZWN0b3JQcm9maWxl
Vmlldy5qcwppbmRleCBiMDEwN2UwN2ExMDI4Nzk2MmRmMmQ5N2QxZmI2ZmMyYmU1NTdkMTAyLi5j
YzMyODBiNjliODg3YjkyOTg5MWQ5MjY2OTZlNDEzNjY5MjQ1NzNjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NTU1NlbGVjdG9yUHJvZmlsZVZpZXcuanMK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9DU1NTZWxlY3RvclByb2Zp
bGVWaWV3LmpzCkBAIC0yNjcsMTAgKzI2NywxMSBAQCBXZWJJbnNwZWN0b3IuQ1NTU2VsZWN0b3JQ
cm9maWxlVmlldy5wcm90b3R5cGUgPSB7CiAvKioKICAqIEBjb25zdHJ1Y3RvcgogICogQGV4dGVu
ZHMge1dlYkluc3BlY3Rvci5Qcm9maWxlVHlwZX0KKyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlBy
b2ZpbGVzUGFuZWx9IHBhbmVsCiAgKi8KLVdlYkluc3BlY3Rvci5DU1NTZWxlY3RvclByb2ZpbGVU
eXBlID0gZnVuY3Rpb24oKQorV2ViSW5zcGVjdG9yLkNTU1NlbGVjdG9yUHJvZmlsZVR5cGUgPSBm
dW5jdGlvbihwYW5lbCkKIHsKLSAgICBXZWJJbnNwZWN0b3IuUHJvZmlsZVR5cGUuY2FsbCh0aGlz
LCBXZWJJbnNwZWN0b3IuQ1NTU2VsZWN0b3JQcm9maWxlVHlwZS5UeXBlSWQsIFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiQ29sbGVjdCBDU1MgU2VsZWN0b3IgUHJvZmlsZSIpKTsKKyAgICBXZWJJbnNw
ZWN0b3IuUHJvZmlsZVR5cGUuY2FsbCh0aGlzLCBXZWJJbnNwZWN0b3IuQ1NTU2VsZWN0b3JQcm9m
aWxlVHlwZS5UeXBlSWQsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ29sbGVjdCBDU1MgU2VsZWN0
b3IgUHJvZmlsZSIpLCBwYW5lbCk7CiAgICAgdGhpcy5fcmVjb3JkaW5nID0gZmFsc2U7CiAgICAg
dGhpcy5fcHJvZmlsZVVpZCA9IDE7CiAgICAgV2ViSW5zcGVjdG9yLkNTU1NlbGVjdG9yUHJvZmls
ZVR5cGUuaW5zdGFuY2UgPSB0aGlzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9DYW52YXNQcm9maWxlVmlldy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvQ2FudmFzUHJvZmlsZVZpZXcuanMKaW5kZXggZTE3YWZlZDk2N2NlOWU3
ZTU1Mjg4MTc2ZTg1YWZmZTA1ZTNiNjZmNC4uNzAyOTYwOTc2MjhmN2NjMjNlNjczYTZlNTRiNGIy
NjRjYTFmYzE3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9DYW52YXNQcm9maWxlVmlldy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL0NhbnZhc1Byb2ZpbGVWaWV3LmpzCkBAIC0zNzEsMTAgKzM3MSwxMSBAQCBXZWJJbnNw
ZWN0b3IuQ2FudmFzUHJvZmlsZVZpZXcucHJvdG90eXBlID0gewogLyoqCiAgKiBAY29uc3RydWN0
b3IKICAqIEBleHRlbmRzIHtXZWJJbnNwZWN0b3IuUHJvZmlsZVR5cGV9CisgKiBAcGFyYW0ge1dl
Ykluc3BlY3Rvci5Qcm9maWxlc1BhbmVsfSBwYW5lbAogICovCi1XZWJJbnNwZWN0b3IuQ2FudmFz
UHJvZmlsZVR5cGUgPSBmdW5jdGlvbigpCitXZWJJbnNwZWN0b3IuQ2FudmFzUHJvZmlsZVR5cGUg
PSBmdW5jdGlvbihwYW5lbCkKIHsKLSAgICBXZWJJbnNwZWN0b3IuUHJvZmlsZVR5cGUuY2FsbCh0
aGlzLCBXZWJJbnNwZWN0b3IuQ2FudmFzUHJvZmlsZVR5cGUuVHlwZUlkLCBXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIkNhcHR1cmUgQ2FudmFzIEZyYW1lIikpOworICAgIFdlYkluc3BlY3Rvci5Qcm9m
aWxlVHlwZS5jYWxsKHRoaXMsIFdlYkluc3BlY3Rvci5DYW52YXNQcm9maWxlVHlwZS5UeXBlSWQs
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ2FwdHVyZSBDYW52YXMgRnJhbWUiKSwgcGFuZWwpOwog
ICAgIHRoaXMuX25leHRQcm9maWxlVWlkID0gMTsKICAgICB0aGlzLl9yZWNvcmRpbmcgPSBmYWxz
ZTsKICAgICB0aGlzLl9sYXN0UHJvZmlsZUhlYWRlciA9IG51bGw7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdFZpZXcuanMgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdFZpZXcuanMKaW5kZXgg
NzkzNzlkOTBlMzE3ZGY3NDY0MTBmZGFjNjY4MzI3OTEyYzUyMjg0NS4uN2U5YWJjZmI4MzRiZDJj
YWEzYThjYzY4NzgzMmQ3ZWU1NjhlN2MwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9IZWFwU25hcHNob3RWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90Vmlldy5qcwpAQCAtNzUzLDE1ICs3NTMs
MzEgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFZpZXcucHJvdG90eXBlID0gewogLyoqCiAg
KiBAY29uc3RydWN0b3IKICAqIEBleHRlbmRzIHtXZWJJbnNwZWN0b3IuUHJvZmlsZVR5cGV9Cisg
KiBAcGFyYW0ge1dlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVsfSBwYW5lbAogICovCi1XZWJJbnNw
ZWN0b3IuSGVhcFNuYXBzaG90UHJvZmlsZVR5cGUgPSBmdW5jdGlvbigpCitXZWJJbnNwZWN0b3Iu
SGVhcFNuYXBzaG90UHJvZmlsZVR5cGUgPSBmdW5jdGlvbihwYW5lbCkKIHsKLSAgICBXZWJJbnNw
ZWN0b3IuUHJvZmlsZVR5cGUuY2FsbCh0aGlzLCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UHJv
ZmlsZVR5cGUuVHlwZUlkLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlRha2UgSGVhcCBTbmFwc2hv
dCIpKTsKKyAgICBXZWJJbnNwZWN0b3IuUHJvZmlsZVR5cGUuY2FsbCh0aGlzLCBXZWJJbnNwZWN0
b3IuSGVhcFNuYXBzaG90UHJvZmlsZVR5cGUuVHlwZUlkLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IlRha2UgSGVhcCBTbmFwc2hvdCIpLCBwYW5lbCk7CiB9CiAKIFdlYkluc3BlY3Rvci5IZWFwU25h
cHNob3RQcm9maWxlVHlwZS5UeXBlSWQgPSAiSEVBUCI7CiAKIFdlYkluc3BlY3Rvci5IZWFwU25h
cHNob3RQcm9maWxlVHlwZS5wcm90b3R5cGUgPSB7CisgICAgX2FkZEhlYXBTbmFwc2hvdENodW5r
OiBmdW5jdGlvbih1aWQsIGNodW5rKQorICAgIHsKKyAgICAgICAgdGhpcy5fcGFuZWwuX2FkZEhl
YXBTbmFwc2hvdENodW5rKHVpZCwgY2h1bmspOworICAgIH0sCisKKyAgICBfZmluaXNoSGVhcFNu
YXBzaG90OiBmdW5jdGlvbih1aWQpCisgICAgeworICAgICAgICB0aGlzLl9wYW5lbC5fZmluaXNo
SGVhcFNuYXBzaG90KHVpZCk7CisgICAgfSwKKworICAgIF9yZXBvcnRIZWFwU25hcHNob3RQcm9n
cmVzczogZnVuY3Rpb24oZG9uZSwgdG90YWwpCisgICAgeworICAgICAgICB0aGlzLl9wYW5lbC5f
cmVwb3J0SGVhcFNuYXBzaG90UHJvZ3Jlc3MoZG9uZSwgdG90YWwpOworICAgIH0sCisKICAgICBn
ZXQgYnV0dG9uVG9vbHRpcCgpCiAgICAgewogICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJUYWtlIGhlYXAgc25hcHNob3QuIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05hdGl2ZU1lbW9yeVNuYXBzaG90Vmlldy5qcyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmF0aXZlTWVtb3J5U25hcHNob3RWaWV3Lmpz
CmluZGV4IGVlMDg5OTVjNTNlMjUxOTMzMzg2MGM1ZDJhNGE1ZTA3NThjYzhmZTAuLjlmZWNiYWIz
ODRmY2U0MWZhYTg1MjdiMjZhOGY5ZGRmYjAzMzI0ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmF0aXZlTWVtb3J5U25hcHNob3RWaWV3LmpzCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmF0aXZlTWVtb3J5U25hcHNob3RW
aWV3LmpzCkBAIC0yMzUsMTAgKzIzNSwxMSBAQCBXZWJJbnNwZWN0b3IuTmF0aXZlU25hcHNob3RO
b2RlLnByb3RvdHlwZSA9IHsKIC8qKgogICogQGNvbnN0cnVjdG9yCiAgKiBAZXh0ZW5kcyB7V2Vi
SW5zcGVjdG9yLlByb2ZpbGVUeXBlfQorICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuUHJvZmlsZXNQ
YW5lbH0gcGFuZWwKICAqLwotV2ViSW5zcGVjdG9yLk5hdGl2ZVNuYXBzaG90UHJvZmlsZVR5cGUg
PSBmdW5jdGlvbigpCitXZWJJbnNwZWN0b3IuTmF0aXZlU25hcHNob3RQcm9maWxlVHlwZSA9IGZ1
bmN0aW9uKHBhbmVsKQogewotICAgIFdlYkluc3BlY3Rvci5Qcm9maWxlVHlwZS5jYWxsKHRoaXMs
IFdlYkluc3BlY3Rvci5OYXRpdmVTbmFwc2hvdFByb2ZpbGVUeXBlLlR5cGVJZCwgV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJUYWtlIE5hdGl2ZSBIZWFwIFNuYXBzaG90IikpOworICAgIFdlYkluc3Bl
Y3Rvci5Qcm9maWxlVHlwZS5jYWxsKHRoaXMsIFdlYkluc3BlY3Rvci5OYXRpdmVTbmFwc2hvdFBy
b2ZpbGVUeXBlLlR5cGVJZCwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJUYWtlIE5hdGl2ZSBIZWFw
IFNuYXBzaG90IiksIHBhbmVsKTsKICAgICB0aGlzLl9uZXh0UHJvZmlsZVVpZCA9IDE7CiB9CiAK
QEAgLTQ2NiwxMCArNDY3LDExIEBAIFdlYkluc3BlY3Rvci5OYXRpdmVIZWFwU25hcHNob3RWaWV3
LnByb3RvdHlwZSA9IHsKIC8qKgogICogQGNvbnN0cnVjdG9yCiAgKiBAZXh0ZW5kcyB7V2ViSW5z
cGVjdG9yLlByb2ZpbGVUeXBlfQorICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5l
bH0gcGFuZWwKICAqLwotV2ViSW5zcGVjdG9yLk5hdGl2ZU1lbW9yeVByb2ZpbGVUeXBlID0gZnVu
Y3Rpb24oKQorV2ViSW5zcGVjdG9yLk5hdGl2ZU1lbW9yeVByb2ZpbGVUeXBlID0gZnVuY3Rpb24o
cGFuZWwpCiB7Ci0gICAgV2ViSW5zcGVjdG9yLlByb2ZpbGVUeXBlLmNhbGwodGhpcywgV2ViSW5z
cGVjdG9yLk5hdGl2ZU1lbW9yeVByb2ZpbGVUeXBlLlR5cGVJZCwgV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJDYXB0dXJlIE5hdGl2ZSBNZW1vcnkgRGlzdHJpYnV0aW9uIikpOworICAgIFdlYkluc3Bl
Y3Rvci5Qcm9maWxlVHlwZS5jYWxsKHRoaXMsIFdlYkluc3BlY3Rvci5OYXRpdmVNZW1vcnlQcm9m
aWxlVHlwZS5UeXBlSWQsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ2FwdHVyZSBOYXRpdmUgTWVt
b3J5IERpc3RyaWJ1dGlvbiIpLCBwYW5lbCk7CiAgICAgdGhpcy5fbmV4dFByb2ZpbGVVaWQgPSAx
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1By
b2ZpbGVzUGFuZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2Zp
bGVzUGFuZWwuanMKaW5kZXggNmU3YWI0ZjA2YzNiMDJkM2Y3MzNiOGRmNGQ4ZjVlMWJmN2M3NjQx
Ny4uZjExMmY4ZTA0NzJiZTQwY2QzYWQ2N2ZjMDlhMjkyOTZhZTY4OTk2MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlc1BhbmVsLmpzCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUHJvZmlsZXNQYW5lbC5qcwpAQCAt
MzAsMTEgKzMwLDEzIEBAIGNvbnN0IFVzZXJJbml0aWF0ZWRQcm9maWxlTmFtZSA9ICJvcmcud2Vi
a2l0LnByb2ZpbGVzLnVzZXItaW5pdGlhdGVkIjsKICAqIEBleHRlbmRzIHtXZWJJbnNwZWN0b3Iu
T2JqZWN0fQogICogQHBhcmFtIHtzdHJpbmd9IGlkCiAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQor
ICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbH0gcGFuZWwKICAqLwotV2ViSW5z
cGVjdG9yLlByb2ZpbGVUeXBlID0gZnVuY3Rpb24oaWQsIG5hbWUpCitXZWJJbnNwZWN0b3IuUHJv
ZmlsZVR5cGUgPSBmdW5jdGlvbihpZCwgbmFtZSwgcGFuZWwpCiB7CiAgICAgdGhpcy5faWQgPSBp
ZDsKICAgICB0aGlzLl9uYW1lID0gbmFtZTsKKyAgICB0aGlzLl9wYW5lbCA9IHBhbmVsOwogICAg
IC8qKgogICAgICAqIEB0eXBlIHtXZWJJbnNwZWN0b3IuU2lkZWJhclNlY3Rpb25UcmVlRWxlbWVu
dH0KICAgICAgKi8KQEAgLTgwLDEwICs4MiwyMyBAQCBXZWJJbnNwZWN0b3IuUHJvZmlsZVR5cGUu
cHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfSwKIAorICAgIC8qKgor
ICAgICAqIEByZXR1cm4ge1dlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVsfQorICAgICAqLworICAg
IHBhbmVsOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fcGFuZWw7Cisg
ICAgfSwKKwogICAgIHJlc2V0OiBmdW5jdGlvbigpCiAgICAgewogICAgIH0sCiAKKyAgICBfcmVz
ZXQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMuX3BhbmVsLl9yZXNldCgpOworICAg
IH0sCisKICAgICBnZXQgZGVzY3JpcHRpb24oKQogICAgIHsKICAgICAgICAgcmV0dXJuICIiOwpA
QCAtOTcsNiArMTEyLDExIEBAIFdlYkluc3BlY3Rvci5Qcm9maWxlVHlwZS5wcm90b3R5cGUgPSB7
CiAgICAgICAgIHJldHVybiBudWxsOwogICAgIH0sCiAKKyAgICBfYWRkUHJvZmlsZUhlYWRlcjog
ZnVuY3Rpb24ocHJvZmlsZSkKKyAgICB7CisgICAgICAgIHRoaXMuX3BhbmVsLmFkZFByb2ZpbGVI
ZWFkZXIodGhpcy5jcmVhdGVQcm9maWxlKHByb2ZpbGUpKTsKKyAgICB9LAorCiAgICAgLy8gTXVz
dCBiZSBpbXBsZW1lbnRlZCBieSBzdWJjbGFzc2VzLgogICAgIC8qKgogICAgICAqIEBwYXJhbSB7
c3RyaW5nPX0gdGl0bGUKQEAgLTE3MSw3ICsxOTEsNyBAQCBXZWJJbnNwZWN0b3IuUHJvZmlsZUhl
YWRlci5wcm90b3R5cGUgPSB7CiAgICAgdmlldzogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAg
aWYgKCF0aGlzLl92aWV3KQotICAgICAgICAgICAgdGhpcy5fdmlldyA9IHRoaXMuY3JlYXRlVmll
dyhXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbC5faW5zdGFuY2UpOworICAgICAgICAgICAgdGhp
cy5fdmlldyA9IHRoaXMuY3JlYXRlVmlldyh0aGlzLnByb2ZpbGVUeXBlKCkucGFuZWwoKSk7CiAg
ICAgICAgIHJldHVybiB0aGlzLl92aWV3OwogICAgIH0sCiAKQEAgLTIzMiwxMSArMjUyLDEzIEBA
IFdlYkluc3BlY3Rvci5Qcm9maWxlSGVhZGVyLnByb3RvdHlwZSA9IHsKICAqIEBjb25zdHJ1Y3Rv
cgogICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5QYW5lbH0KICAqIEBpbXBsZW1lbnRzIHtXZWJJ
bnNwZWN0b3IuQ29udGV4dE1lbnUuUHJvdmlkZXJ9CisgKiBAcGFyYW0ge3N0cmluZz19IG5hbWUK
ICAqLwotV2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwgPSBmdW5jdGlvbigpCitXZWJJbnNwZWN0
b3IuUHJvZmlsZXNQYW5lbCA9IGZ1bmN0aW9uKG5hbWUpCiB7Ci0gICAgV2ViSW5zcGVjdG9yLlBh
bmVsLmNhbGwodGhpcywgInByb2ZpbGVzIik7Ci0gICAgV2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFu
ZWwuX2luc3RhbmNlID0gdGhpczsKKyAgICB2YXIgc2luZ2xlUHJvZmlsZU1vZGUgPSB0eXBlb2Yg
bmFtZSAhPT0gInVuZGVmaW5lZCI7CisgICAgbmFtZSA9IG5hbWUgfHwgInByb2ZpbGVzIjsKKyAg
ICBXZWJJbnNwZWN0b3IuUGFuZWwuY2FsbCh0aGlzLCBuYW1lKTsKICAgICB0aGlzLnJlZ2lzdGVy
UmVxdWlyZWRDU1MoInBhbmVsRW5hYmxlclZpZXcuY3NzIik7CiAgICAgdGhpcy5yZWdpc3RlclJl
cXVpcmVkQ1NTKCJoZWFwUHJvZmlsZXIuY3NzIik7CiAgICAgdGhpcy5yZWdpc3RlclJlcXVpcmVk
Q1NTKCJwcm9maWxlc1BhbmVsLmNzcyIpOwpAQCAtMjQ0LDE0ICsyNjYsMTcgQEAgV2ViSW5zcGVj
dG9yLlByb2ZpbGVzUGFuZWwgPSBmdW5jdGlvbigpCiAgICAgdGhpcy5jcmVhdGVTaWRlYmFyVmll
d1dpdGhUcmVlKCk7CiAKICAgICB0aGlzLnByb2ZpbGVzSXRlbVRyZWVFbGVtZW50ID0gbmV3IFdl
Ykluc3BlY3Rvci5Qcm9maWxlc1NpZGViYXJUcmVlRWxlbWVudCh0aGlzKTsKLSAgICB0aGlzLnNp
ZGViYXJUcmVlLmFwcGVuZENoaWxkKHRoaXMucHJvZmlsZXNJdGVtVHJlZUVsZW1lbnQpOworICAg
IGlmICghc2luZ2xlUHJvZmlsZU1vZGUpIHsKKyAgICAgICAgdGhpcy5zaWRlYmFyVHJlZS5hcHBl
bmRDaGlsZCh0aGlzLnByb2ZpbGVzSXRlbVRyZWVFbGVtZW50KTsKKyAgICB9CiAKKyAgICB0aGlz
Ll9zaW5nbGVQcm9maWxlTW9kZSA9IHNpbmdsZVByb2ZpbGVNb2RlOwogICAgIHRoaXMuX3Byb2Zp
bGVUeXBlc0J5SWRNYXAgPSB7fTsKIAogICAgIHZhciBwYW5lbEVuYWJsZXJIZWFkaW5nID0gV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJZb3UgbmVlZCB0byBlbmFibGUgcHJvZmlsaW5nIGJlZm9yZSB5
b3UgY2FuIHVzZSB0aGUgUHJvZmlsZXMgcGFuZWwuIik7CiAgICAgdmFyIHBhbmVsRW5hYmxlckRp
c2NsYWltZXIgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkVuYWJsaW5nIHByb2ZpbGluZyB3aWxs
IG1ha2Ugc2NyaXB0cyBydW4gc2xvd2VyLiIpOwogICAgIHZhciBwYW5lbEVuYWJsZXJCdXR0b24g
PSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkVuYWJsZSBQcm9maWxpbmciKTsKLSAgICB0aGlzLnBh
bmVsRW5hYmxlclZpZXcgPSBuZXcgV2ViSW5zcGVjdG9yLlBhbmVsRW5hYmxlclZpZXcoInByb2Zp
bGVzIiwgcGFuZWxFbmFibGVySGVhZGluZywgcGFuZWxFbmFibGVyRGlzY2xhaW1lciwgcGFuZWxF
bmFibGVyQnV0dG9uKTsKKyAgICB0aGlzLnBhbmVsRW5hYmxlclZpZXcgPSBuZXcgV2ViSW5zcGVj
dG9yLlBhbmVsRW5hYmxlclZpZXcobmFtZSwgcGFuZWxFbmFibGVySGVhZGluZywgcGFuZWxFbmFi
bGVyRGlzY2xhaW1lciwgcGFuZWxFbmFibGVyQnV0dG9uKTsKICAgICB0aGlzLnBhbmVsRW5hYmxl
clZpZXcuYWRkRXZlbnRMaXN0ZW5lcigiZW5hYmxlIGNsaWNrZWQiLCB0aGlzLmVuYWJsZVByb2Zp
bGVyLCB0aGlzKTsKIAogICAgIHRoaXMucHJvZmlsZVZpZXdzID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiZGl2Iik7CkBAIC0yODksMjUgKzMxNCwyNiBAQCBXZWJJbnNwZWN0b3IuUHJvZmlsZXNQ
YW5lbCA9IGZ1bmN0aW9uKCkKICAgICB0aGlzLl9wcm9maWxlcyA9IFtdOwogICAgIHRoaXMuX3By
b2ZpbGVyRW5hYmxlZCA9ICFDYXBhYmlsaXRpZXMucHJvZmlsZXJDYXVzZXNSZWNvbXBpbGF0aW9u
OwogCi0gICAgdGhpcy5fbGF1bmNoZXJWaWV3ID0gbmV3IFdlYkluc3BlY3Rvci5Qcm9maWxlTGF1
bmNoZXJWaWV3KHRoaXMpOwotICAgIHRoaXMuX2xhdW5jaGVyVmlldy5hZGRFdmVudExpc3RlbmVy
KFdlYkluc3BlY3Rvci5Qcm9maWxlTGF1bmNoZXJWaWV3LkV2ZW50VHlwZXMuUHJvZmlsZVR5cGVT
ZWxlY3RlZCwgdGhpcy5fb25Qcm9maWxlVHlwZVNlbGVjdGVkLCB0aGlzKTsKLSAgICB0aGlzLl9y
ZXNldCgpOwotCi0gICAgdGhpcy5fcmVnaXN0ZXJQcm9maWxlVHlwZShuZXcgV2ViSW5zcGVjdG9y
LkNQVVByb2ZpbGVUeXBlKCkpOwotICAgIGlmICghV2ViSW5zcGVjdG9yLldvcmtlck1hbmFnZXIu
aXNXb3JrZXJGcm9udGVuZCgpKQotICAgICAgICB0aGlzLl9yZWdpc3RlclByb2ZpbGVUeXBlKG5l
dyBXZWJJbnNwZWN0b3IuQ1NTU2VsZWN0b3JQcm9maWxlVHlwZSgpKTsKLSAgICBpZiAoQ2FwYWJp
bGl0aWVzLmhlYXBQcm9maWxlclByZXNlbnQpCi0gICAgICAgIHRoaXMuX3JlZ2lzdGVyUHJvZmls
ZVR5cGUobmV3IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RQcm9maWxlVHlwZSgpKTsKLSAgICBp
ZiAoV2ViSW5zcGVjdG9yLmV4cGVyaW1lbnRzU2V0dGluZ3MubmF0aXZlTWVtb3J5U25hcHNob3Rz
LmlzRW5hYmxlZCgpKSB7Ci0gICAgICAgIHRoaXMuX3JlZ2lzdGVyUHJvZmlsZVR5cGUobmV3IFdl
Ykluc3BlY3Rvci5OYXRpdmVNZW1vcnlQcm9maWxlVHlwZSgpKTsKLSAgICAgICAgdGhpcy5fcmVn
aXN0ZXJQcm9maWxlVHlwZShuZXcgV2ViSW5zcGVjdG9yLk5hdGl2ZVNuYXBzaG90UHJvZmlsZVR5
cGUoKSk7Ci0gICAgfQotICAgIGlmIChXZWJJbnNwZWN0b3IuZXhwZXJpbWVudHNTZXR0aW5ncy5j
YW52YXNJbnNwZWN0aW9uLmlzRW5hYmxlZCgpKQotICAgICAgICB0aGlzLl9yZWdpc3RlclByb2Zp
bGVUeXBlKG5ldyBXZWJJbnNwZWN0b3IuQ2FudmFzUHJvZmlsZVR5cGUoKSk7CisgICAgaWYgKCFz
aW5nbGVQcm9maWxlTW9kZSkgeworICAgICAgICB0aGlzLl9sYXVuY2hlclZpZXcgPSBuZXcgV2Vi
SW5zcGVjdG9yLlByb2ZpbGVMYXVuY2hlclZpZXcodGhpcyk7CisgICAgICAgIHRoaXMuX2xhdW5j
aGVyVmlldy5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Qcm9maWxlTGF1bmNoZXJWaWV3
LkV2ZW50VHlwZXMuUHJvZmlsZVR5cGVTZWxlY3RlZCwgdGhpcy5fb25Qcm9maWxlVHlwZVNlbGVj
dGVkLCB0aGlzKTsKKyAgICAgICAgdmFyIGRpc3BhdGNoZXIgPSBXZWJJbnNwZWN0b3IuUHJvZmls
ZXJEaXNwYXRjaGVyLmdldEluc3RhbmNlKCk7CisgICAgICAgIGRpc3BhdGNoZXIucmVnaXN0ZXJQ
cm9maWxlVHlwZShuZXcgV2ViSW5zcGVjdG9yLkNQVVByb2ZpbGVUeXBlKHRoaXMpKTsKKyAgICAg
ICAgaWYgKCFXZWJJbnNwZWN0b3IuV29ya2VyTWFuYWdlci5pc1dvcmtlckZyb250ZW5kKCkpCisg
ICAgICAgICAgICBkaXNwYXRjaGVyLnJlZ2lzdGVyUHJvZmlsZVR5cGUobmV3IFdlYkluc3BlY3Rv
ci5DU1NTZWxlY3RvclByb2ZpbGVUeXBlKHRoaXMpKTsKKyAgICAgICAgaWYgKENhcGFiaWxpdGll
cy5oZWFwUHJvZmlsZXJQcmVzZW50KQorICAgICAgICAgICAgV2ViSW5zcGVjdG9yLkhlYXBQcm9m
aWxlckRpc3BhdGNoZXIuZ2V0SW5zdGFuY2UoKS5yZWdpc3RlclByb2ZpbGVUeXBlKG5ldyBXZWJJ
bnNwZWN0b3IuSGVhcFNuYXBzaG90UHJvZmlsZVR5cGUodGhpcykpOworICAgICAgICBpZiAoV2Vi
SW5zcGVjdG9yLmV4cGVyaW1lbnRzU2V0dGluZ3MuY2FudmFzSW5zcGVjdGlvbi5pc0VuYWJsZWQo
KSkKKyAgICAgICAgICAgIGRpc3BhdGNoZXIucmVnaXN0ZXJQcm9maWxlVHlwZShuZXcgV2ViSW5z
cGVjdG9yLkNhbnZhc1Byb2ZpbGVUeXBlKHRoaXMpKTsKKyAgICAgICAgaWYgKFdlYkluc3BlY3Rv
ci5leHBlcmltZW50c1NldHRpbmdzLm5hdGl2ZU1lbW9yeVNuYXBzaG90cy5pc0VuYWJsZWQoKSkg
eworICAgICAgICAgICAgZGlzcGF0Y2hlciA9IFdlYkluc3BlY3Rvci5NZW1vcnlEaXNwYXRjaGVy
LmdldEluc3RhbmNlKCk7CisgICAgICAgICAgICBkaXNwYXRjaGVyLnJlZ2lzdGVyUHJvZmlsZVR5
cGUobmV3IFdlYkluc3BlY3Rvci5OYXRpdmVTbmFwc2hvdFByb2ZpbGVUeXBlKHRoaXMpKTsKKyAg
ICAgICAgICAgIGRpc3BhdGNoZXIucmVnaXN0ZXJQcm9maWxlVHlwZShuZXcgV2ViSW5zcGVjdG9y
Lk5hdGl2ZU1lbW9yeVByb2ZpbGVUeXBlKHRoaXMpKTsKKyAgICAgICAgfQorICAgIH0gZWxzZQor
ICAgICAgICB0aGlzLl9sYXVuY2hlclZpZXcgPSBuZXcgV2ViSW5zcGVjdG9yLlZpZXcoKTsKIAot
ICAgIEluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJQcm9maWxlckRpc3BhdGNoZXIobmV3IFdlYklu
c3BlY3Rvci5Qcm9maWxlckRpc3BhdGNoZXIodGhpcykpOwotICAgIEluc3BlY3RvckJhY2tlbmQu
cmVnaXN0ZXJIZWFwUHJvZmlsZXJEaXNwYXRjaGVyKG5ldyBXZWJJbnNwZWN0b3IuSGVhcFByb2Zp
bGVyRGlzcGF0Y2hlcih0aGlzKSk7Ci0gICAgSW5zcGVjdG9yQmFja2VuZC5yZWdpc3Rlck1lbW9y
eURpc3BhdGNoZXIobmV3IFdlYkluc3BlY3Rvci5NZW1vcnlEaXNwYXRjaGVyKHRoaXMpKTsKKyAg
ICB0aGlzLl9yZXNldCgpOwogCiAgICAgdGhpcy5fY3JlYXRlRmlsZVNlbGVjdG9yRWxlbWVudCgp
OwogICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjb250ZXh0bWVudSIsIHRoaXMu
X2hhbmRsZUNvbnRleHRNZW51RXZlbnQuYmluZCh0aGlzKSwgdHJ1ZSk7CkBAIC0zNTgsMTAgKzM4
NCwxMiBAQCBXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAg
IHZhciBpc1Byb2ZpbGluZyA9IHRoaXMuX3NlbGVjdGVkUHJvZmlsZVR5cGUuYnV0dG9uQ2xpY2tl
ZCh0aGlzKTsKICAgICAgICAgdGhpcy5yZWNvcmRCdXR0b24udG9nZ2xlZCA9IGlzUHJvZmlsaW5n
OwogICAgICAgICB0aGlzLnJlY29yZEJ1dHRvbi50aXRsZSA9IHRoaXMuX3NlbGVjdGVkUHJvZmls
ZVR5cGUuYnV0dG9uVG9vbHRpcDsKLSAgICAgICAgaWYgKGlzUHJvZmlsaW5nKQotICAgICAgICAg
ICAgdGhpcy5fbGF1bmNoZXJWaWV3LnByb2ZpbGVTdGFydGVkKCk7Ci0gICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIHRoaXMuX2xhdW5jaGVyVmlldy5wcm9maWxlRmluaXNoZWQoKTsKKyAgICAgICAg
aWYgKCF0aGlzLl9zaW5nbGVQcm9maWxlTW9kZSkgeworICAgICAgICAgICAgaWYgKGlzUHJvZmls
aW5nKQorICAgICAgICAgICAgICAgIHRoaXMuX2xhdW5jaGVyVmlldy5wcm9maWxlU3RhcnRlZCgp
OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRoaXMuX2xhdW5jaGVyVmlldy5w
cm9maWxlRmluaXNoZWQoKTsKKyAgICAgICAgfQogICAgIH0sCiAKICAgICB3YXNTaG93bjogZnVu
Y3Rpb24oKQpAQCAtNDM1LDcgKzQ2Myw3IEBAIFdlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVsLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgICAgIHZhciBwcm9maWxlVHlwZSA9IHRoaXMuX3Byb2ZpbGVU
eXBlc0J5SWRNYXBbaWRdOwogICAgICAgICAgICAgdmFyIHRyZWVFbGVtZW50ID0gcHJvZmlsZVR5
cGUudHJlZUVsZW1lbnQ7CiAgICAgICAgICAgICB0cmVlRWxlbWVudC5yZW1vdmVDaGlsZHJlbigp
OwotICAgICAgICAgICAgdHJlZUVsZW1lbnQuaGlkZGVuID0gdHJ1ZTsKKyAgICAgICAgICAgIHRy
ZWVFbGVtZW50LmhpZGRlbiA9ICF0aGlzLl9zaW5nbGVQcm9maWxlTW9kZTsKICAgICAgICAgICAg
IHByb2ZpbGVUeXBlLnJlc2V0KCk7CiAgICAgICAgIH0KIApAQCAtNDQ3LDcgKzQ3NSw4IEBAIFdl
Ykluc3BlY3Rvci5Qcm9maWxlc1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5yZWNv
cmRCdXR0b24udG9nZ2xlZCA9IGZhbHNlOwogICAgICAgICBpZiAodGhpcy5fc2VsZWN0ZWRQcm9m
aWxlVHlwZSkKICAgICAgICAgICAgIHRoaXMucmVjb3JkQnV0dG9uLnRpdGxlID0gdGhpcy5fc2Vs
ZWN0ZWRQcm9maWxlVHlwZS5idXR0b25Ub29sdGlwOwotICAgICAgICB0aGlzLl9sYXVuY2hlclZp
ZXcucHJvZmlsZUZpbmlzaGVkKCk7CisgICAgICAgIGlmICghdGhpcy5fc2luZ2xlUHJvZmlsZU1v
ZGUpCisgICAgICAgICAgICB0aGlzLl9sYXVuY2hlclZpZXcucHJvZmlsZUZpbmlzaGVkKCk7CiAK
ICAgICAgICAgdGhpcy5zaWRlYmFyVHJlZUVsZW1lbnQucmVtb3ZlU3R5bGVDbGFzcygic29tZS1l
eHBhbmRhYmxlIik7CiAKQEAgLTQ4Nyw5ICs1MTYsMTIgQEAgV2ViSW5zcGVjdG9yLlByb2ZpbGVz
UGFuZWwucHJvdG90eXBlID0gewogICAgIF9yZWdpc3RlclByb2ZpbGVUeXBlOiBmdW5jdGlvbihw
cm9maWxlVHlwZSkKICAgICB7CiAgICAgICAgIHRoaXMuX3Byb2ZpbGVUeXBlc0J5SWRNYXBbcHJv
ZmlsZVR5cGUuaWRdID0gcHJvZmlsZVR5cGU7Ci0gICAgICAgIHRoaXMuX2xhdW5jaGVyVmlldy5h
ZGRQcm9maWxlVHlwZShwcm9maWxlVHlwZSk7CisgICAgICAgIGlmICh0aGlzLl9zaW5nbGVQcm9m
aWxlTW9kZSkKKyAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkUHJvZmlsZVR5cGUgPSBwcm9maWxl
VHlwZTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdGhpcy5fbGF1bmNoZXJWaWV3LmFkZFBy
b2ZpbGVUeXBlKHByb2ZpbGVUeXBlKTsKICAgICAgICAgcHJvZmlsZVR5cGUudHJlZUVsZW1lbnQg
PSBuZXcgV2ViSW5zcGVjdG9yLlNpZGViYXJTZWN0aW9uVHJlZUVsZW1lbnQocHJvZmlsZVR5cGUu
dHJlZUl0ZW1UaXRsZSwgbnVsbCwgdHJ1ZSk7Ci0gICAgICAgIHByb2ZpbGVUeXBlLnRyZWVFbGVt
ZW50LmhpZGRlbiA9IHRydWU7CisgICAgICAgIHByb2ZpbGVUeXBlLnRyZWVFbGVtZW50LmhpZGRl
biA9ICF0aGlzLl9zaW5nbGVQcm9maWxlTW9kZTsKICAgICAgICAgdGhpcy5zaWRlYmFyVHJlZS5h
cHBlbmRDaGlsZChwcm9maWxlVHlwZS50cmVlRWxlbWVudCk7CiAgICAgICAgIHByb2ZpbGVUeXBl
LnRyZWVFbGVtZW50LmNoaWxkcmVuTGlzdEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY29udGV4
dG1lbnUiLCB0aGlzLl9oYW5kbGVDb250ZXh0TWVudUV2ZW50LmJpbmQodGhpcyksIHRydWUpOwog
ICAgICAgICBwcm9maWxlVHlwZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Qcm9maWxl
VHlwZS5FdmVudHMuVmlld1VwZGF0ZWQsIHRoaXMuX3VwZGF0ZVByb2ZpbGVUeXBlU3BlY2lmaWNV
SSwgdGhpcyk7CkBAIC02NDMsNyArNjc1LDcgQEAgV2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwu
cHJvdG90eXBlID0gewogICAgICAgICBpZiAoIXNpZGViYXJQYXJlbnQuY2hpbGRyZW4ubGVuZ3Ro
KSB7CiAgICAgICAgICAgICB0aGlzLnByb2ZpbGVzSXRlbVRyZWVFbGVtZW50LnNlbGVjdCgpOwog
ICAgICAgICAgICAgdGhpcy5fc2hvd0xhdW5jaGVyVmlldygpOwotICAgICAgICAgICAgc2lkZWJh
clBhcmVudC5oaWRkZW4gPSB0cnVlOworICAgICAgICAgICAgc2lkZWJhclBhcmVudC5oaWRkZW4g
PSAhdGhpcy5fc2luZ2xlUHJvZmlsZU1vZGU7CiAgICAgICAgIH0KICAgICB9LAogCkBAIC0xMDk3
LDE5ICsxMTI5LDIwIEBAIFdlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVsLnByb3RvdHlwZSA9IHsK
ICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAvKioKLSAgICAgICAgICogQHBhcmFtIHs/
c3RyaW5nfSB0eXBlCisgICAgICAgICAqIEBwYXJhbSB7P3N0cmluZ30gdHlwZUlkCiAgICAgICAg
ICAqIEBwYXJhbSB7P3N0cmluZ30gZXJyb3IKICAgICAgICAgICogQHBhcmFtIHtBcnJheS48UHJv
ZmlsZXJBZ2VudC5Qcm9maWxlSGVhZGVyPn0gcHJvZmlsZUhlYWRlcnMKICAgICAgICAgICovCi0g
ICAgICAgIGZ1bmN0aW9uIHBvcHVsYXRlQ2FsbGJhY2sodHlwZSwgZXJyb3IsIHByb2ZpbGVIZWFk
ZXJzKSB7CisgICAgICAgIGZ1bmN0aW9uIHBvcHVsYXRlQ2FsbGJhY2sodHlwZUlkLCBlcnJvciwg
cHJvZmlsZUhlYWRlcnMpIHsKICAgICAgICAgICAgIGlmIChlcnJvcikKICAgICAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgICAgICBwcm9maWxlSGVhZGVycy5zb3J0KGZ1bmN0aW9uKGEsIGIp
IHsgcmV0dXJuIGEudWlkIC0gYi51aWQ7IH0pOwogICAgICAgICAgICAgdmFyIHByb2ZpbGVIZWFk
ZXJzTGVuZ3RoID0gcHJvZmlsZUhlYWRlcnMubGVuZ3RoOwogICAgICAgICAgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBwcm9maWxlSGVhZGVyc0xlbmd0aDsgKytpKSB7CiAgICAgICAgICAgICAgICAg
dmFyIHByb2ZpbGVIZWFkZXIgPSBwcm9maWxlSGVhZGVyc1tpXTsKLSAgICAgICAgICAgICAgICB2
YXIgcHJvZmlsZVR5cGUgPSB0aGlzLmdldFByb2ZpbGVUeXBlKHR5cGUgfHwgcHJvZmlsZUhlYWRl
ci50eXBlSWQpOwotICAgICAgICAgICAgICAgIHRoaXMuYWRkUHJvZmlsZUhlYWRlcihwcm9maWxl
VHlwZS5jcmVhdGVQcm9maWxlKHByb2ZpbGVIZWFkZXIpKTsKKyAgICAgICAgICAgICAgICB2YXIg
cHJvZmlsZVR5cGUgPSB0aGlzLmdldFByb2ZpbGVUeXBlKHR5cGVJZCB8fCBwcm9maWxlSGVhZGVy
LnR5cGVJZCk7CisgICAgICAgICAgICAgICAgaWYgKHByb2ZpbGVUeXBlKQorICAgICAgICAgICAg
ICAgICAgICB0aGlzLmFkZFByb2ZpbGVIZWFkZXIocHJvZmlsZVR5cGUuY3JlYXRlUHJvZmlsZShw
cm9maWxlSGVhZGVyKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIApAQCAtMTE1NiwxMSAr
MTE4OSwxMyBAQCBXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIHRoaXMucmVjb3JkQnV0dG9uLnRvZ2dsZWQgPSBpc1Byb2ZpbGluZzsKICAgICAgICAgdGhp
cy5yZWNvcmRCdXR0b24udGl0bGUgPSBwcm9maWxlVHlwZU9iamVjdC5idXR0b25Ub29sdGlwOwog
ICAgICAgICBpZiAoaXNQcm9maWxpbmcpIHsKLSAgICAgICAgICAgIHRoaXMuX2xhdW5jaGVyVmll
dy5wcm9maWxlU3RhcnRlZCgpOworICAgICAgICAgICAgaWYgKCF0aGlzLl9zaW5nbGVQcm9maWxl
TW9kZSkKKyAgICAgICAgICAgICAgICB0aGlzLl9sYXVuY2hlclZpZXcucHJvZmlsZVN0YXJ0ZWQo
KTsKICAgICAgICAgICAgIGlmICghdGhpcy5maW5kVGVtcG9yYXJ5UHJvZmlsZShwcm9maWxlVHlw
ZSkpCiAgICAgICAgICAgICAgICAgdGhpcy5hZGRQcm9maWxlSGVhZGVyKHByb2ZpbGVUeXBlT2Jq
ZWN0LmNyZWF0ZVRlbXBvcmFyeVByb2ZpbGUoKSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICB0aGlzLl9sYXVuY2hlclZpZXcucHJvZmlsZUZpbmlzaGVkKCk7CisgICAgICAgICAgICBp
ZiAoIXRoaXMuX3NpbmdsZVByb2ZpbGVNb2RlKQorICAgICAgICAgICAgICAgIHRoaXMuX2xhdW5j
aGVyVmlldy5wcm9maWxlRmluaXNoZWQoKTsKICAgICAgICAgICAgIHRoaXMuX3JlbW92ZVRlbXBv
cmFyeVByb2ZpbGUocHJvZmlsZVR5cGUpOwogICAgICAgICB9CiAgICAgfSwKQEAgLTExNzIsOSAr
MTIwNywxMSBAQCBXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAg
ICAgICAgICB2YXIgcHJvZmlsZVR5cGVPYmplY3QgPSB0aGlzLmdldFByb2ZpbGVUeXBlKFdlYklu
c3BlY3Rvci5IZWFwU25hcHNob3RQcm9maWxlVHlwZS5UeXBlSWQpOwogICAgICAgICAgICAgdGhp
cy5hZGRQcm9maWxlSGVhZGVyKHByb2ZpbGVUeXBlT2JqZWN0LmNyZWF0ZVRlbXBvcmFyeVByb2Zp
bGUoKSk7CiAgICAgICAgIH0KLSAgICAgICAgdGhpcy5fbGF1bmNoZXJWaWV3LnByb2ZpbGVTdGFy
dGVkKCk7CisgICAgICAgIGlmICghdGhpcy5fc2luZ2xlUHJvZmlsZU1vZGUpCisgICAgICAgICAg
ICB0aGlzLl9sYXVuY2hlclZpZXcucHJvZmlsZVN0YXJ0ZWQoKTsKICAgICAgICAgZnVuY3Rpb24g
ZG9uZSgpIHsKLSAgICAgICAgICAgIHRoaXMuX2xhdW5jaGVyVmlldy5wcm9maWxlRmluaXNoZWQo
KTsKKyAgICAgICAgICAgIGlmICghdGhpcy5fc2luZ2xlUHJvZmlsZU1vZGUpCisgICAgICAgICAg
ICAgICAgdGhpcy5fbGF1bmNoZXJWaWV3LnByb2ZpbGVGaW5pc2hlZCgpOwogICAgICAgICB9CiAg
ICAgICAgIEhlYXBQcm9maWxlckFnZW50LnRha2VIZWFwU25hcHNob3QodHJ1ZSwgZG9uZS5iaW5k
KHRoaXMpKTsKICAgICAgICAgV2ViSW5zcGVjdG9yLnVzZXJNZXRyaWNzLlByb2ZpbGVzSGVhcFBy
b2ZpbGVUYWtlbi5yZWNvcmQoKTsKQEAgLTEyMzYsMTQgKzEyNzMsMzAgQEAgV2ViSW5zcGVjdG9y
LlByb2ZpbGVzUGFuZWwucHJvdG90eXBlID0gewogLyoqCiAgKiBAY29uc3RydWN0b3IKICAqIEBp
bXBsZW1lbnRzIHtNZW1vcnlBZ2VudC5EaXNwYXRjaGVyfQotICogQHBhcmFtIHtXZWJJbnNwZWN0
b3IuUHJvZmlsZXNQYW5lbH0gcHJvZmlsZXNQYW5lbAogICovCi1XZWJJbnNwZWN0b3IuTWVtb3J5
RGlzcGF0Y2hlciA9IGZ1bmN0aW9uKHByb2ZpbGVzUGFuZWwpCitXZWJJbnNwZWN0b3IuTWVtb3J5
RGlzcGF0Y2hlciA9IGZ1bmN0aW9uKCkKIHsKLSAgICB0aGlzLl9wcm9maWxlc1BhbmVsID0gcHJv
ZmlsZXNQYW5lbDsKKyAgICB0aGlzLl9wcm9maWxlVHlwZXNCeUlkTWFwID0ge307CisgICAgSW5z
cGVjdG9yQmFja2VuZC5yZWdpc3Rlck1lbW9yeURpc3BhdGNoZXIodGhpcyk7Cit9CisKK1dlYklu
c3BlY3Rvci5NZW1vcnlEaXNwYXRjaGVyLmdldEluc3RhbmNlID0gZnVuY3Rpb24oKQoreworICAg
IGlmICghV2ViSW5zcGVjdG9yLk1lbW9yeURpc3BhdGNoZXIuX2luc3RhbmNlKQorICAgICAgICBX
ZWJJbnNwZWN0b3IuTWVtb3J5RGlzcGF0Y2hlci5faW5zdGFuY2UgPSBuZXcgV2ViSW5zcGVjdG9y
Lk1lbW9yeURpc3BhdGNoZXIoKTsKKyAgICByZXR1cm4gV2ViSW5zcGVjdG9yLk1lbW9yeURpc3Bh
dGNoZXIuX2luc3RhbmNlOwogfQogCiBXZWJJbnNwZWN0b3IuTWVtb3J5RGlzcGF0Y2hlci5wcm90
b3R5cGUgPSB7CisgICAgLyoqCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuUHJvZmlsZVR5
cGV9IHByb2ZpbGVUeXBlCisgICAgICovCisgICAgcmVnaXN0ZXJQcm9maWxlVHlwZTogZnVuY3Rp
b24ocHJvZmlsZVR5cGUpCisgICAgeworICAgICAgICB0aGlzLl9wcm9maWxlVHlwZXNCeUlkTWFw
W3Byb2ZpbGVUeXBlLmlkXSA9IHByb2ZpbGVUeXBlOworICAgICAgICBwcm9maWxlVHlwZS5wYW5l
bCgpLl9yZWdpc3RlclByb2ZpbGVUeXBlKHByb2ZpbGVUeXBlKTsKKyAgICB9LAorCiAKICAgICAv
KioKICAgICAgKiBAb3ZlcnJpZGUKQEAgLTEyNTEsNyArMTMwNCw4IEBAIFdlYkluc3BlY3Rvci5N
ZW1vcnlEaXNwYXRjaGVyLnByb3RvdHlwZSA9IHsKICAgICAgKi8KICAgICBhZGROYXRpdmVTbmFw
c2hvdENodW5rOiBmdW5jdGlvbihjaHVuaykKICAgICB7Ci0gICAgICAgIHZhciBwcm9maWxlID0g
dGhpcy5fcHJvZmlsZXNQYW5lbC5maW5kVGVtcG9yYXJ5UHJvZmlsZShXZWJJbnNwZWN0b3IuTmF0
aXZlU25hcHNob3RQcm9maWxlVHlwZS5UeXBlSWQpOworICAgICAgICB2YXIgcHJvZmlsZVR5cGUg
PSB0aGlzLl9wcm9maWxlVHlwZXNCeUlkTWFwW1dlYkluc3BlY3Rvci5OYXRpdmVTbmFwc2hvdFBy
b2ZpbGVUeXBlLlR5cGVJZF07CisgICAgICAgIHZhciBwcm9maWxlID0gcHJvZmlsZVR5cGUucGFu
ZWwoKS5maW5kVGVtcG9yYXJ5UHJvZmlsZShXZWJJbnNwZWN0b3IuTmF0aXZlU25hcHNob3RQcm9m
aWxlVHlwZS5UeXBlSWQpOwogICAgICAgICBpZiAoIXByb2ZpbGUpCiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIHByb2ZpbGUuYWRkTmF0aXZlU25hcHNob3RDaHVuayhjaHVuayk7CkBAIC0x
MjYxLDIxICsxMzE1LDQwIEBAIFdlYkluc3BlY3Rvci5NZW1vcnlEaXNwYXRjaGVyLnByb3RvdHlw
ZSA9IHsKIC8qKgogICogQGNvbnN0cnVjdG9yCiAgKiBAaW1wbGVtZW50cyB7UHJvZmlsZXJBZ2Vu
dC5EaXNwYXRjaGVyfQotICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbH0gcHJv
ZmlsZXNQYW5lbAogICovCi1XZWJJbnNwZWN0b3IuUHJvZmlsZXJEaXNwYXRjaGVyID0gZnVuY3Rp
b24ocHJvZmlsZXNQYW5lbCkKK1dlYkluc3BlY3Rvci5Qcm9maWxlckRpc3BhdGNoZXIgPSBmdW5j
dGlvbigpCiB7Ci0gICAgdGhpcy5fcHJvZmlsZXNQYW5lbCA9IHByb2ZpbGVzUGFuZWw7CisgICAg
dGhpcy5fcHJvZmlsZVR5cGVzQnlJZE1hcCA9IHt9OworICAgIEluc3BlY3RvckJhY2tlbmQucmVn
aXN0ZXJQcm9maWxlckRpc3BhdGNoZXIodGhpcyk7Cit9CisKKy8qKgorICogQHJldHVybiB7V2Vi
SW5zcGVjdG9yLlByb2ZpbGVyRGlzcGF0Y2hlcn0KKyAqLworV2ViSW5zcGVjdG9yLlByb2ZpbGVy
RGlzcGF0Y2hlci5nZXRJbnN0YW5jZSA9IGZ1bmN0aW9uKCkKK3sKKyAgICBpZiAoIVdlYkluc3Bl
Y3Rvci5Qcm9maWxlckRpc3BhdGNoZXIuX2luc3RhbmNlKQorICAgICAgICBXZWJJbnNwZWN0b3Iu
UHJvZmlsZXJEaXNwYXRjaGVyLl9pbnN0YW5jZSA9IG5ldyBXZWJJbnNwZWN0b3IuUHJvZmlsZXJE
aXNwYXRjaGVyKCk7CisgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5Qcm9maWxlckRpc3BhdGNoZXIu
X2luc3RhbmNlOwogfQogCiBXZWJJbnNwZWN0b3IuUHJvZmlsZXJEaXNwYXRjaGVyLnByb3RvdHlw
ZSA9IHsKICAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5Qcm9maWxlVHlwZX0g
cHJvZmlsZVR5cGUKKyAgICAgKi8KKyAgICByZWdpc3RlclByb2ZpbGVUeXBlOiBmdW5jdGlvbihw
cm9maWxlVHlwZSkKKyAgICB7CisgICAgICAgIHRoaXMuX3Byb2ZpbGVUeXBlc0J5SWRNYXBbcHJv
ZmlsZVR5cGUuaWRdID0gcHJvZmlsZVR5cGU7CisgICAgICAgIHByb2ZpbGVUeXBlLnBhbmVsKCku
X3JlZ2lzdGVyUHJvZmlsZVR5cGUocHJvZmlsZVR5cGUpOworICAgIH0sCisKKyAgICAvKioKICAg
ICAgKiBAcGFyYW0ge1Byb2ZpbGVyQWdlbnQuUHJvZmlsZUhlYWRlcn0gcHJvZmlsZQogICAgICAq
LwogICAgIGFkZFByb2ZpbGVIZWFkZXI6IGZ1bmN0aW9uKHByb2ZpbGUpCiAgICAgewotICAgICAg
ICB2YXIgcHJvZmlsZVR5cGUgPSB0aGlzLl9wcm9maWxlc1BhbmVsLmdldFByb2ZpbGVUeXBlKHBy
b2ZpbGUudHlwZUlkKTsKLSAgICAgICAgdGhpcy5fcHJvZmlsZXNQYW5lbC5hZGRQcm9maWxlSGVh
ZGVyKHByb2ZpbGVUeXBlLmNyZWF0ZVByb2ZpbGUocHJvZmlsZSkpOworICAgICAgICB2YXIgcHJv
ZmlsZVR5cGUgPSB0aGlzLl9wcm9maWxlVHlwZXNCeUlkTWFwW3Byb2ZpbGUudHlwZUlkXTsKKyAg
ICAgICAgcHJvZmlsZVR5cGUuX2FkZFByb2ZpbGVIZWFkZXIocHJvZmlsZSk7CiAgICAgfSwKIAog
ICAgIC8qKgpAQCAtMTI4NSw3ICsxMzU4LDggQEAgV2ViSW5zcGVjdG9yLlByb2ZpbGVyRGlzcGF0
Y2hlci5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgYWRkSGVhcFNuYXBzaG90Q2h1bms6IGZ1
bmN0aW9uKHVpZCwgY2h1bmspCiAgICAgewotICAgICAgICB0aGlzLl9wcm9maWxlc1BhbmVsLl9h
ZGRIZWFwU25hcHNob3RDaHVuayh1aWQsIGNodW5rKTsKKyAgICAgICAgdmFyIHByb2ZpbGVUeXBl
ID0gdGhpcy5fcHJvZmlsZVR5cGVzQnlJZE1hcFtXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UHJv
ZmlsZVR5cGUuVHlwZUlkXTsKKyAgICAgICAgcHJvZmlsZVR5cGUuX2FkZEhlYXBTbmFwc2hvdENo
dW5rKHVpZCwgY2h1bmspOwogICAgIH0sCiAKICAgICAvKioKQEAgLTEyOTQsNyArMTM2OCw4IEBA
IFdlYkluc3BlY3Rvci5Qcm9maWxlckRpc3BhdGNoZXIucHJvdG90eXBlID0gewogICAgICAqLwog
ICAgIGZpbmlzaEhlYXBTbmFwc2hvdDogZnVuY3Rpb24odWlkKQogICAgIHsKLSAgICAgICAgdGhp
cy5fcHJvZmlsZXNQYW5lbC5fZmluaXNoSGVhcFNuYXBzaG90KHVpZCk7CisgICAgICAgIHZhciBw
cm9maWxlVHlwZSA9IHRoaXMuX3Byb2ZpbGVUeXBlc0J5SWRNYXBbV2ViSW5zcGVjdG9yLkhlYXBT
bmFwc2hvdFByb2ZpbGVUeXBlLlR5cGVJZF07CisgICAgICAgIHByb2ZpbGVUeXBlLl9maW5pc2hI
ZWFwU25hcHNob3QodWlkKTsKICAgICB9LAogCiAgICAgLyoqCkBAIC0xMzAzLDcgKzEzNzgsOCBA
QCBXZWJJbnNwZWN0b3IuUHJvZmlsZXJEaXNwYXRjaGVyLnByb3RvdHlwZSA9IHsKICAgICAgKi8K
ICAgICBzZXRSZWNvcmRpbmdQcm9maWxlOiBmdW5jdGlvbihpc1Byb2ZpbGluZykKICAgICB7Ci0g
ICAgICAgIHRoaXMuX3Byb2ZpbGVzUGFuZWwuc2V0UmVjb3JkaW5nUHJvZmlsZShXZWJJbnNwZWN0
b3IuQ1BVUHJvZmlsZVR5cGUuVHlwZUlkLCBpc1Byb2ZpbGluZyk7CisgICAgICAgIHZhciBwcm9m
aWxlVHlwZSA9IHRoaXMuX3Byb2ZpbGVUeXBlc0J5SWRNYXBbV2ViSW5zcGVjdG9yLkNQVVByb2Zp
bGVUeXBlLlR5cGVJZF07CisgICAgICAgIHByb2ZpbGVUeXBlLnNldFJlY29yZGluZ1Byb2ZpbGUo
aXNQcm9maWxpbmcpOwogICAgIH0sCiAKICAgICAvKioKQEAgLTEzMTEsNyArMTM4Nyw4IEBAIFdl
Ykluc3BlY3Rvci5Qcm9maWxlckRpc3BhdGNoZXIucHJvdG90eXBlID0gewogICAgICAqLwogICAg
IHJlc2V0UHJvZmlsZXM6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIHRoaXMuX3Byb2ZpbGVz
UGFuZWwuX3Jlc2V0KCk7CisgICAgICAgIGZvciAodmFyIGlkIGluIHRoaXMuX3Byb2ZpbGVUeXBl
c0J5SWRNYXApCisgICAgICAgICAgICB0aGlzLl9wcm9maWxlVHlwZXNCeUlkTWFwW2lkXS5fcmVz
ZXQoKTsKICAgICB9LAogCiAgICAgLyoqCkBAIC0xMzIxLDI4ICsxMzk4LDQ4IEBAIFdlYkluc3Bl
Y3Rvci5Qcm9maWxlckRpc3BhdGNoZXIucHJvdG90eXBlID0gewogICAgICAqLwogICAgIHJlcG9y
dEhlYXBTbmFwc2hvdFByb2dyZXNzOiBmdW5jdGlvbihkb25lLCB0b3RhbCkKICAgICB7Ci0gICAg
ICAgIHRoaXMuX3Byb2ZpbGVzUGFuZWwuX3JlcG9ydEhlYXBTbmFwc2hvdFByb2dyZXNzKGRvbmUs
IHRvdGFsKTsKKyAgICAgICAgdmFyIHByb2ZpbGVUeXBlID0gdGhpcy5fcHJvZmlsZVR5cGVzQnlJ
ZE1hcFtXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UHJvZmlsZVR5cGUuVHlwZUlkXTsKKyAgICAg
ICAgcHJvZmlsZVR5cGUuX3JlcG9ydEhlYXBTbmFwc2hvdFByb2dyZXNzKGRvbmUsIHRvdGFsKTsK
ICAgICB9CiB9CiAKIC8qKgogICogQGNvbnN0cnVjdG9yCiAgKiBAaW1wbGVtZW50cyB7SGVhcFBy
b2ZpbGVyQWdlbnQuRGlzcGF0Y2hlcn0KLSAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlByb2ZpbGVz
UGFuZWx9IHByb2ZpbGVzUGFuZWwKICAqLwotV2ViSW5zcGVjdG9yLkhlYXBQcm9maWxlckRpc3Bh
dGNoZXIgPSBmdW5jdGlvbihwcm9maWxlc1BhbmVsKQorV2ViSW5zcGVjdG9yLkhlYXBQcm9maWxl
ckRpc3BhdGNoZXIgPSBmdW5jdGlvbigpCiB7Ci0gICAgdGhpcy5fcHJvZmlsZXNQYW5lbCA9IHBy
b2ZpbGVzUGFuZWw7CisgICAgdGhpcy5fcHJvZmlsZVR5cGVzQnlJZE1hcCA9IHt9OworICAgIElu
c3BlY3RvckJhY2tlbmQucmVnaXN0ZXJIZWFwUHJvZmlsZXJEaXNwYXRjaGVyKHRoaXMpOworfQor
CisvKioKKyAqIEByZXR1cm4ge1dlYkluc3BlY3Rvci5IZWFwUHJvZmlsZXJEaXNwYXRjaGVyfQor
ICovCitXZWJJbnNwZWN0b3IuSGVhcFByb2ZpbGVyRGlzcGF0Y2hlci5nZXRJbnN0YW5jZSA9IGZ1
bmN0aW9uKCkKK3sKKyAgICBpZiAoIVdlYkluc3BlY3Rvci5IZWFwUHJvZmlsZXJEaXNwYXRjaGVy
Ll9pbnN0YW5jZSkKKyAgICAgICAgV2ViSW5zcGVjdG9yLkhlYXBQcm9maWxlckRpc3BhdGNoZXIu
X2luc3RhbmNlID0gbmV3IFdlYkluc3BlY3Rvci5IZWFwUHJvZmlsZXJEaXNwYXRjaGVyKCk7Cisg
ICAgcmV0dXJuIFdlYkluc3BlY3Rvci5IZWFwUHJvZmlsZXJEaXNwYXRjaGVyLl9pbnN0YW5jZTsK
IH0KIAogV2ViSW5zcGVjdG9yLkhlYXBQcm9maWxlckRpc3BhdGNoZXIucHJvdG90eXBlID0gewog
ICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlByb2ZpbGVUeXBlfSBwcm9maWxl
VHlwZQorICAgICAqLworICAgIHJlZ2lzdGVyUHJvZmlsZVR5cGU6IGZ1bmN0aW9uKHByb2ZpbGVU
eXBlKQorICAgIHsKKyAgICAgICAgdGhpcy5fcHJvZmlsZVR5cGVzQnlJZE1hcFtwcm9maWxlVHlw
ZS5pZF0gPSBwcm9maWxlVHlwZTsKKyAgICAgICAgcHJvZmlsZVR5cGUucGFuZWwoKS5fcmVnaXN0
ZXJQcm9maWxlVHlwZShwcm9maWxlVHlwZSk7CisgICAgfSwKKworICAgIC8qKgogICAgICAqIEBw
YXJhbSB7SGVhcFByb2ZpbGVyQWdlbnQuUHJvZmlsZUhlYWRlcn0gcHJvZmlsZQogICAgICAqLwog
ICAgIGFkZFByb2ZpbGVIZWFkZXI6IGZ1bmN0aW9uKHByb2ZpbGUpCiAgICAgewotICAgICAgICB2
YXIgcHJvZmlsZVR5cGUgPSB0aGlzLl9wcm9maWxlc1BhbmVsLmdldFByb2ZpbGVUeXBlKFdlYklu
c3BlY3Rvci5IZWFwU25hcHNob3RQcm9maWxlVHlwZS5UeXBlSWQpOwotICAgICAgICB0aGlzLl9w
cm9maWxlc1BhbmVsLmFkZFByb2ZpbGVIZWFkZXIocHJvZmlsZVR5cGUuY3JlYXRlUHJvZmlsZShw
cm9maWxlKSk7CisgICAgICAgIHZhciBwcm9maWxlVHlwZSA9IHRoaXMuX3Byb2ZpbGVUeXBlc0J5
SWRNYXBbV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFByb2ZpbGVUeXBlLlR5cGVJZF07CisgICAg
ICAgIHByb2ZpbGVUeXBlLnBhbmVsKCkuYWRkUHJvZmlsZUhlYWRlcihwcm9maWxlVHlwZS5jcmVh
dGVQcm9maWxlKHByb2ZpbGUpKTsKICAgICB9LAogCiAgICAgLyoqCkBAIC0xMzUyLDcgKzE0NDks
OCBAQCBXZWJJbnNwZWN0b3IuSGVhcFByb2ZpbGVyRGlzcGF0Y2hlci5wcm90b3R5cGUgPSB7CiAg
ICAgICovCiAgICAgYWRkSGVhcFNuYXBzaG90Q2h1bms6IGZ1bmN0aW9uKHVpZCwgY2h1bmspCiAg
ICAgewotICAgICAgICB0aGlzLl9wcm9maWxlc1BhbmVsLl9hZGRIZWFwU25hcHNob3RDaHVuayh1
aWQsIGNodW5rKTsKKyAgICAgICAgdmFyIHByb2ZpbGVUeXBlID0gdGhpcy5fcHJvZmlsZVR5cGVz
QnlJZE1hcFtXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UHJvZmlsZVR5cGUuVHlwZUlkXTsKKyAg
ICAgICAgcHJvZmlsZVR5cGUucGFuZWwoKS5fYWRkSGVhcFNuYXBzaG90Q2h1bmsodWlkLCBjaHVu
ayk7CiAgICAgfSwKIAogICAgIC8qKgpAQCAtMTM2MSw3ICsxNDU5LDggQEAgV2ViSW5zcGVjdG9y
LkhlYXBQcm9maWxlckRpc3BhdGNoZXIucHJvdG90eXBlID0gewogICAgICAqLwogICAgIGZpbmlz
aEhlYXBTbmFwc2hvdDogZnVuY3Rpb24odWlkKQogICAgIHsKLSAgICAgICAgdGhpcy5fcHJvZmls
ZXNQYW5lbC5fZmluaXNoSGVhcFNuYXBzaG90KHVpZCk7CisgICAgICAgIHZhciBwcm9maWxlVHlw
ZSA9IHRoaXMuX3Byb2ZpbGVUeXBlc0J5SWRNYXBbV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFBy
b2ZpbGVUeXBlLlR5cGVJZF07CisgICAgICAgIHByb2ZpbGVUeXBlLnBhbmVsKCkuX2ZpbmlzaEhl
YXBTbmFwc2hvdCh1aWQpOwogICAgIH0sCiAKICAgICAvKioKQEAgLTEzNjksNyArMTQ2OCw4IEBA
IFdlYkluc3BlY3Rvci5IZWFwUHJvZmlsZXJEaXNwYXRjaGVyLnByb3RvdHlwZSA9IHsKICAgICAg
Ki8KICAgICByZXNldFByb2ZpbGVzOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICB0aGlzLl9w
cm9maWxlc1BhbmVsLl9yZXNldCgpOworICAgICAgICBmb3IgKHZhciBpZCBpbiB0aGlzLl9wcm9m
aWxlVHlwZXNCeUlkTWFwKQorICAgICAgICAgICAgdGhpcy5fcHJvZmlsZVR5cGVzQnlJZE1hcFtp
ZF0uX3Jlc2V0KCk7CiAgICAgfSwKIAogICAgIC8qKgpAQCAtMTM3OSw3ICsxNDc5LDggQEAgV2Vi
SW5zcGVjdG9yLkhlYXBQcm9maWxlckRpc3BhdGNoZXIucHJvdG90eXBlID0gewogICAgICAqLwog
ICAgIHJlcG9ydEhlYXBTbmFwc2hvdFByb2dyZXNzOiBmdW5jdGlvbihkb25lLCB0b3RhbCkKICAg
ICB7Ci0gICAgICAgIHRoaXMuX3Byb2ZpbGVzUGFuZWwuX3JlcG9ydEhlYXBTbmFwc2hvdFByb2dy
ZXNzKGRvbmUsIHRvdGFsKTsKKyAgICAgICAgdmFyIHByb2ZpbGVUeXBlID0gdGhpcy5fcHJvZmls
ZVR5cGVzQnlJZE1hcFtXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UHJvZmlsZVR5cGUuVHlwZUlk
XTsKKyAgICAgICAgcHJvZmlsZVR5cGUucGFuZWwoKS5fcmVwb3J0SGVhcFNuYXBzaG90UHJvZ3Jl
c3MoZG9uZSwgdG90YWwpOwogICAgIH0KIH0KIApAQCAtMTQ1Miw3ICsxNTUzLDcgQEAgV2ViSW5z
cGVjdG9yLlByb2ZpbGVTaWRlYmFyVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgIHsKICAg
ICAgICAgdmFyIHByb2ZpbGUgPSB0aGlzLnByb2ZpbGU7CiAgICAgICAgIHZhciBjb250ZXh0TWVu
dSA9IG5ldyBXZWJJbnNwZWN0b3IuQ29udGV4dE1lbnUoZXZlbnQpOwotICAgICAgICB2YXIgcHJv
ZmlsZXNQYW5lbCA9IFdlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVsLl9pbnN0YW5jZTsKKyAgICAg
ICAgdmFyIHByb2ZpbGVzUGFuZWwgPSBwcm9maWxlLnByb2ZpbGVUeXBlKCkucGFuZWwoKTsKICAg
ICAgICAgLy8gRklYTUU6IHVzZSBjb250ZXh0IG1lbnUgcHJvdmlkZXIKICAgICAgICAgaWYgKHBy
b2ZpbGUuY2FuU2F2ZVRvRmlsZSgpKSB7CiAgICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJ
dGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2F2ZSBIZWFwIFNuYXBzaG90XHUyMDI2IiksIHBy
b2ZpbGUuc2F2ZVRvRmlsZS5iaW5kKHByb2ZpbGUpKTsKQEAgLTE0ODIsOCArMTU4MywxMCBAQCBX
ZWJJbnNwZWN0b3IuUHJvZmlsZUdyb3VwU2lkZWJhclRyZWVFbGVtZW50ID0gZnVuY3Rpb24odGl0
bGUsIHN1YnRpdGxlKQogV2ViSW5zcGVjdG9yLlByb2ZpbGVHcm91cFNpZGViYXJUcmVlRWxlbWVu
dC5wcm90b3R5cGUgPSB7CiAgICAgb25zZWxlY3Q6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAg
IGlmICh0aGlzLmNoaWxkcmVuLmxlbmd0aCA+IDApCi0gICAgICAgICAgICBXZWJJbnNwZWN0b3Iu
UHJvZmlsZXNQYW5lbC5faW5zdGFuY2Uuc2hvd1Byb2ZpbGUodGhpcy5jaGlsZHJlblt0aGlzLmNo
aWxkcmVuLmxlbmd0aCAtIDFdLnByb2ZpbGUpOworICAgICAgICBpZiAodGhpcy5jaGlsZHJlbi5s
ZW5ndGggPiAwKSB7CisgICAgICAgICAgICB2YXIgcHJvZmlsZXNQYW5lbCA9IC8qKiBAIHR5cGUg
e1dlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVsfSAqLyBXZWJJbnNwZWN0b3IucGFuZWwoInByb2Zp
bGVzIik7CisgICAgICAgICAgICBwcm9maWxlc1BhbmVsLnNob3dQcm9maWxlKHRoaXMuY2hpbGRy
ZW5bdGhpcy5jaGlsZHJlbi5sZW5ndGggLSAxXS5wcm9maWxlKTsKKyAgICAgICAgfQogICAgIH0s
CiAKICAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5TaWRlYmFyVHJlZUVsZW1lbnQucHJvdG90
eXBlCkBAIC0xNTE2LDYgKzE2MTksODUgQEAgV2ViSW5zcGVjdG9yLlByb2ZpbGVzU2lkZWJhclRy
ZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5TaWRl
YmFyVHJlZUVsZW1lbnQucHJvdG90eXBlCiB9CiAKKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAq
IEBleHRlbmRzIHtXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbH0KKyAqLworV2ViSW5zcGVjdG9y
LkNQVVByb2ZpbGVyUGFuZWwgPSBmdW5jdGlvbigpCit7CisgICAgV2ViSW5zcGVjdG9yLlByb2Zp
bGVzUGFuZWwuY2FsbCh0aGlzLCAiY3B1LXByb2ZpbGVyIik7CisgICAgV2ViSW5zcGVjdG9yLlBy
b2ZpbGVyRGlzcGF0Y2hlci5nZXRJbnN0YW5jZSgpLnJlZ2lzdGVyUHJvZmlsZVR5cGUobmV3IFdl
Ykluc3BlY3Rvci5DUFVQcm9maWxlVHlwZSh0aGlzKSk7Cit9CisKK1dlYkluc3BlY3Rvci5DUFVQ
cm9maWxlclBhbmVsLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuUHJvZmlsZXNQ
YW5lbC5wcm90b3R5cGU7CisKKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBleHRlbmRzIHtX
ZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbH0KKyAqLworV2ViSW5zcGVjdG9yLkNTU1NlbGVjdG9y
UHJvZmlsZXJQYW5lbCA9IGZ1bmN0aW9uKCkKK3sKKyAgICBXZWJJbnNwZWN0b3IuUHJvZmlsZXNQ
YW5lbC5jYWxsKHRoaXMsICJjc3MtcHJvZmlsZXIiKTsKKyAgICBXZWJJbnNwZWN0b3IuUHJvZmls
ZXJEaXNwYXRjaGVyLmdldEluc3RhbmNlKCkucmVnaXN0ZXJQcm9maWxlVHlwZShuZXcgV2ViSW5z
cGVjdG9yLkNTU1NlbGVjdG9yUHJvZmlsZVR5cGUodGhpcykpOworfQorCitXZWJJbnNwZWN0b3Iu
Q1NTU2VsZWN0b3JQcm9maWxlclBhbmVsLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0
b3IuUHJvZmlsZXNQYW5lbC5wcm90b3R5cGU7CisKKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAq
IEBleHRlbmRzIHtXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbH0KKyAqLworV2ViSW5zcGVjdG9y
LkhlYXBQcm9maWxlclBhbmVsID0gZnVuY3Rpb24oKQoreworICAgIFdlYkluc3BlY3Rvci5Qcm9m
aWxlc1BhbmVsLmNhbGwodGhpcywgImhlYXAtcHJvZmlsZXIiKTsKKyAgICBXZWJJbnNwZWN0b3Iu
SGVhcFByb2ZpbGVyRGlzcGF0Y2hlci5nZXRJbnN0YW5jZSgpLnJlZ2lzdGVyUHJvZmlsZVR5cGUo
bmV3IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RQcm9maWxlVHlwZSh0aGlzKSk7Cit9CisKK1dl
Ykluc3BlY3Rvci5IZWFwUHJvZmlsZXJQYW5lbC5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5z
cGVjdG9yLlByb2ZpbGVzUGFuZWwucHJvdG90eXBlOworCisKKy8qKgorICogQGNvbnN0cnVjdG9y
CisgKiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFuZWx9CisgKi8KK1dlYkluc3Bl
Y3Rvci5DYW52YXNQcm9maWxlclBhbmVsID0gZnVuY3Rpb24oKQoreworICAgIFdlYkluc3BlY3Rv
ci5Qcm9maWxlc1BhbmVsLmNhbGwodGhpcywgImNhbnZhcy1wcm9maWxlciIpOworICAgIFdlYklu
c3BlY3Rvci5Qcm9maWxlckRpc3BhdGNoZXIuZ2V0SW5zdGFuY2UoKS5yZWdpc3RlclByb2ZpbGVU
eXBlKG5ldyBXZWJJbnNwZWN0b3IuQ2FudmFzUHJvZmlsZVR5cGUodGhpcykpOworfQorCitXZWJJ
bnNwZWN0b3IuQ2FudmFzUHJvZmlsZXJQYW5lbC5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5z
cGVjdG9yLlByb2ZpbGVzUGFuZWwucHJvdG90eXBlOworCisKKy8qKgorICogQGNvbnN0cnVjdG9y
CisgKiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFuZWx9CisgKi8KK1dlYkluc3Bl
Y3Rvci5NZW1vcnlDaGFydFByb2ZpbGVyUGFuZWwgPSBmdW5jdGlvbigpCit7CisgICAgV2ViSW5z
cGVjdG9yLlByb2ZpbGVzUGFuZWwuY2FsbCh0aGlzLCAibWVtb3J5LWNoYXJ0LXByb2ZpbGVyIik7
CisgICAgV2ViSW5zcGVjdG9yLk1lbW9yeURpc3BhdGNoZXIuZ2V0SW5zdGFuY2UoKS5yZWdpc3Rl
clByb2ZpbGVUeXBlKG5ldyBXZWJJbnNwZWN0b3IuTmF0aXZlTWVtb3J5UHJvZmlsZVR5cGUodGhp
cykpOworfQorCitXZWJJbnNwZWN0b3IuTWVtb3J5Q2hhcnRQcm9maWxlclBhbmVsLnByb3RvdHlw
ZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbC5wcm90b3R5cGU7CisKKwor
LyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBleHRlbmRzIHtXZWJJbnNwZWN0b3IuUHJvZmlsZXNQ
YW5lbH0KKyAqLworV2ViSW5zcGVjdG9yLk5hdGl2ZU1lbW9yeVByb2ZpbGVyUGFuZWwgPSBmdW5j
dGlvbigpCit7CisgICAgV2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwuY2FsbCh0aGlzLCAibWVt
b3J5LXNuYXBzaG90LXByb2ZpbGVyIik7CisgICAgV2ViSW5zcGVjdG9yLk1lbW9yeURpc3BhdGNo
ZXIuZ2V0SW5zdGFuY2UoKS5yZWdpc3RlclByb2ZpbGVUeXBlKG5ldyBXZWJJbnNwZWN0b3IuTmF0
aXZlU25hcHNob3RQcm9maWxlVHlwZSh0aGlzKSk7Cit9CisKK1dlYkluc3BlY3Rvci5OYXRpdmVN
ZW1vcnlQcm9maWxlclBhbmVsLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuUHJv
ZmlsZXNQYW5lbC5wcm90b3R5cGU7CisKKwogaW1wb3J0U2NyaXB0KCJQcm9maWxlRGF0YUdyaWRU
cmVlLmpzIik7CiBpbXBvcnRTY3JpcHQoIkJvdHRvbVVwUHJvZmlsZURhdGFHcmlkVHJlZS5qcyIp
OwogaW1wb3J0U2NyaXB0KCJDUFVQcm9maWxlVmlldy5qcyIpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5ncy5qcyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3MuanMKaW5kZXggNjcwM2ViZTQ3NmYwMmNiZmVk
MmEyOTI0NzdlZGJkODFiZDQzMTk2Yy4uYjc1M2ZjZWNjMzUyNTA2MDQwNzFiNGEwMDFkMGIzM2Vl
OTdmMmIxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9T
ZXR0aW5ncy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRp
bmdzLmpzCkBAIC0yMTQsNiArMjE0LDcgQEAgV2ViSW5zcGVjdG9yLkV4cGVyaW1lbnRzU2V0dGlu
Z3MgPSBmdW5jdGlvbigpCiAgICAgdGhpcy5maWxlU3lzdGVtUHJvamVjdCA9IHRoaXMuX2NyZWF0
ZUV4cGVyaW1lbnQoImZpbGVTeXN0ZW1Qcm9qZWN0IiwgIkZpbGUgc3lzdGVtIGZvbGRlcnMgaW4g
U291cmNlcyBQYW5lbCIpOwogICAgIHRoaXMuaG9yaXpvbnRhbFBhbmVsU3BsaXQgPSB0aGlzLl9j
cmVhdGVFeHBlcmltZW50KCJob3Jpem9udGFsUGFuZWxTcGxpdCIsICJBbGxvdyBob3Jpem9udGFs
IHNwbGl0IGluIEVsZW1lbnRzIGFuZCBTb3VyY2VzIHBhbmVscyIpOwogICAgIHRoaXMuc2hvd1do
aXRlc3BhY2VJbkVkaXRvciA9IHRoaXMuX2NyZWF0ZUV4cGVyaW1lbnQoInNob3dXaGl0ZXNwYWNl
SW5FZGl0b3IiLCAiU2hvdyB3aGl0ZXNwYWNlIGNoYXJhY3RlcnMgaW4gZWRpdG9yIik7CisgICAg
dGhpcy5zZXBhcmF0ZVByb2ZpbGVycyA9IHRoaXMuX2NyZWF0ZUV4cGVyaW1lbnQoInNlcGFyYXRl
UHJvZmlsZXJzIiwgIlNlcGFyYXRlIHByb2ZpbGVyIHRvb2xzIik7CiAKICAgICB0aGlzLl9jbGVh
blVwU2V0dGluZygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9pbnNwZWN0b3IuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L2luc3BlY3Rvci5qcwppbmRleCAyMTliZmE4ZDEzMGUyZjQzN2Q0ODgzNWEyNGNhNDlmYWZkYmYy
NTk4Li5hNjQ3MmVlOWYxN2VlYTZmZTMzOGVhMzEwZjNmYTNkNjkwNjJmN2I4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcworKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcwpAQCAtNDYsMTIg
KzQ2LDI4IEBAIHZhciBXZWJJbnNwZWN0b3IgPSB7CiAgICAgICAgIHZhciBhdWRpdHMgPSBuZXcg
V2ViSW5zcGVjdG9yLlBhbmVsRGVzY3JpcHRvcigiYXVkaXRzIiwgV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJBdWRpdHMiKSwgIkF1ZGl0c1BhbmVsIiwgIkF1ZGl0c1BhbmVsLmpzIik7CiAgICAgICAg
IHZhciBjb25zb2xlID0gbmV3IFdlYkluc3BlY3Rvci5QYW5lbERlc2NyaXB0b3IoImNvbnNvbGUi
LCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNvbnNvbGUiKSwgIkNvbnNvbGVQYW5lbCIpOwogICAg
ICAgICB2YXIgYWxsRGVzY3JpcHRvcnMgPSBbZWxlbWVudHMsIHJlc291cmNlcywgbmV0d29yaywg
c2NyaXB0cywgdGltZWxpbmUsIHByb2ZpbGVzLCBhdWRpdHMsIGNvbnNvbGVdOworICAgICAgICB2
YXIgYWxsUHJvZmlsZXJzID0gW3Byb2ZpbGVzXTsKKyAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5l
eHBlcmltZW50c1NldHRpbmdzLnNlcGFyYXRlUHJvZmlsZXJzLmlzRW5hYmxlZCgpKSB7CisgICAg
ICAgICAgICBhbGxQcm9maWxlcnMgPSBbXTsKKyAgICAgICAgICAgIGFsbFByb2ZpbGVycy5wdXNo
KG5ldyBXZWJJbnNwZWN0b3IuUGFuZWxEZXNjcmlwdG9yKCJjcHUtcHJvZmlsZXIiLCBXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIkNQVSBQcm9maWxlciIpLCAiQ1BVUHJvZmlsZXJQYW5lbCIsICJQcm9m
aWxlc1BhbmVsLmpzIikpOworICAgICAgICAgICAgaWYgKCFXZWJJbnNwZWN0b3IuV29ya2VyTWFu
YWdlci5pc1dvcmtlckZyb250ZW5kKCkpCisgICAgICAgICAgICAgICAgYWxsUHJvZmlsZXJzLnB1
c2gobmV3IFdlYkluc3BlY3Rvci5QYW5lbERlc2NyaXB0b3IoImNzcy1wcm9maWxlciIsIFdlYklu
c3BlY3Rvci5VSVN0cmluZygiQ1NTIFNlbGVjdG9yIFByb2ZpbGVyIiksICJDU1NTZWxlY3RvclBy
b2ZpbGVyUGFuZWwiLCAiUHJvZmlsZXNQYW5lbC5qcyIpKTsKKyAgICAgICAgICAgIGlmIChDYXBh
YmlsaXRpZXMuaGVhcFByb2ZpbGVyUHJlc2VudCkKKyAgICAgICAgICAgICAgICBhbGxQcm9maWxl
cnMucHVzaChuZXcgV2ViSW5zcGVjdG9yLlBhbmVsRGVzY3JpcHRvcigiaGVhcC1wcm9maWxlciIs
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiSGVhcCBQcm9maWxlciIpLCAiSGVhcFByb2ZpbGVyUGFu
ZWwiLCAiUHJvZmlsZXNQYW5lbC5qcyIpKTsKKyAgICAgICAgICAgIGlmIChXZWJJbnNwZWN0b3Iu
ZXhwZXJpbWVudHNTZXR0aW5ncy5jYW52YXNJbnNwZWN0aW9uLmlzRW5hYmxlZCgpKQorICAgICAg
ICAgICAgICAgIGFsbFByb2ZpbGVycy5wdXNoKG5ldyBXZWJJbnNwZWN0b3IuUGFuZWxEZXNjcmlw
dG9yKCJjYW52YXMtcHJvZmlsZXIiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNhbnZhcyBQcm9m
aWxlciIpLCAiQ2FudmFzUHJvZmlsZXJQYW5lbCIsICJQcm9maWxlc1BhbmVsLmpzIikpOworICAg
ICAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5leHBlcmltZW50c1NldHRpbmdzLm5hdGl2ZU1lbW9y
eVNuYXBzaG90cy5pc0VuYWJsZWQoKSkgeworICAgICAgICAgICAgICAgIGFsbFByb2ZpbGVycy5w
dXNoKG5ldyBXZWJJbnNwZWN0b3IuUGFuZWxEZXNjcmlwdG9yKCJtZW1vcnktY2hhcnQtcHJvZmls
ZXIiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk5hdGl2ZSBNZW1vcnkgQ2hhcnQiKSwgIk1lbW9y
eUNoYXJ0UHJvZmlsZXJQYW5lbCIsICJQcm9maWxlc1BhbmVsLmpzIikpOworICAgICAgICAgICAg
ICAgIGFsbFByb2ZpbGVycy5wdXNoKG5ldyBXZWJJbnNwZWN0b3IuUGFuZWxEZXNjcmlwdG9yKCJt
ZW1vcnktc25hcHNob3QtcHJvZmlsZXIiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk5hdGl2ZSBN
ZW1vcnkgUHJvZmlsZXIiKSwgIk5hdGl2ZU1lbW9yeVByb2ZpbGVyUGFuZWwiLCAiUHJvZmlsZXNQ
YW5lbC5qcyIpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEFycmF5LnByb3RvdHlwZS5z
cGxpY2UuYmluZChhbGxEZXNjcmlwdG9ycywgYWxsRGVzY3JpcHRvcnMuaW5kZXhPZihwcm9maWxl
cyksIDEpLmFwcGx5KG51bGwsIGFsbFByb2ZpbGVycyk7CisgICAgICAgIH0KIAogICAgICAgICB2
YXIgcGFuZWxEZXNjcmlwdG9ycyA9IFtdOwogICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLldvcmtl
ck1hbmFnZXIuaXNXb3JrZXJGcm9udGVuZCgpKSB7CiAgICAgICAgICAgICBwYW5lbERlc2NyaXB0
b3JzLnB1c2goc2NyaXB0cyk7CiAgICAgICAgICAgICBwYW5lbERlc2NyaXB0b3JzLnB1c2godGlt
ZWxpbmUpOwotICAgICAgICAgICAgcGFuZWxEZXNjcmlwdG9ycy5wdXNoKHByb2ZpbGVzKTsKKyAg
ICAgICAgICAgIHBhbmVsRGVzY3JpcHRvcnMgPSBwYW5lbERlc2NyaXB0b3JzLmNvbmNhdChhbGxQ
cm9maWxlcnMpOwogICAgICAgICAgICAgcGFuZWxEZXNjcmlwdG9ycy5wdXNoKGNvbnNvbGUpOwog
ICAgICAgICAgICAgcmV0dXJuIHBhbmVsRGVzY3JpcHRvcnM7CiAgICAgICAgIH0KQEAgLTI3Niw4
ICsyOTIsMTEgQEAgdmFyIFdlYkluc3BlY3RvciA9IHsKICAgICB7CiAgICAgICAgIHZhciBwcm9m
aWxlU3RyaW5nTWF0Y2hlcyA9IFdlYkluc3BlY3Rvci5Qcm9maWxlVVJMUmVnRXhwLmV4ZWModGl0
bGUpOwogICAgICAgICBpZiAocHJvZmlsZVN0cmluZ01hdGNoZXMpIHsKLSAgICAgICAgICAgIHZh
ciBwcm9maWxlc1BhbmVsID0gLyoqIEAgdHlwZSB7V2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFuZWx9
ICovIFdlYkluc3BlY3Rvci5wYW5lbCgicHJvZmlsZXMiKTsKLSAgICAgICAgICAgIHRpdGxlID0g
V2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwuX2luc3RhbmNlLmRpc3BsYXlUaXRsZUZvclByb2Zp
bGVMaW5rKHByb2ZpbGVTdHJpbmdNYXRjaGVzWzJdLCBwcm9maWxlU3RyaW5nTWF0Y2hlc1sxXSk7
CisgICAgICAgICAgICAvLyBUT0RPKGFscGgpOiByb3V0ZSB0byB0aGUgYXBwcm9wcmlhdGUgcHJv
ZmlsZXIKKyAgICAgICAgICAgIC8vIEN1cnJlbnRseSBvbmx5IENQVSBwcm9maWxlciBVUkxzIGFy
ZSBpbiB1c2UuCisgICAgICAgICAgICB2YXIgY3B1UHJvZmlsZXJOYW1lID0gV2ViSW5zcGVjdG9y
LmV4cGVyaW1lbnRzU2V0dGluZ3Muc2VwYXJhdGVQcm9maWxlcnMuaXNFbmFibGVkKCkgPyAiY3B1
LXByb2ZpbGVyIiA6ICJwcm9maWxlcyI7CisgICAgICAgICAgICB2YXIgcHJvZmlsZXNQYW5lbCA9
IC8qKiBAIHR5cGUge1dlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVsfSAqLyBXZWJJbnNwZWN0b3Iu
cGFuZWwoY3B1UHJvZmlsZXJOYW1lKTsKKyAgICAgICAgICAgIHRpdGxlID0gcHJvZmlsZXNQYW5l
bC5kaXNwbGF5VGl0bGVGb3JQcm9maWxlTGluayhwcm9maWxlU3RyaW5nTWF0Y2hlc1syXSwgcHJv
ZmlsZVN0cmluZ01hdGNoZXNbMV0pOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiB0aXRsZTsK
ICAgICB9LApAQCAtOTg1LDcgKzEwMDQsMTAgQEAgV2ViSW5zcGVjdG9yLl9zaG93QW5jaG9yTG9j
YXRpb25JblBhbmVsID0gZnVuY3Rpb24oYW5jaG9yLCBwYW5lbCkKIAogV2ViSW5zcGVjdG9yLnNo
b3dQcm9maWxlRm9yVVJMID0gZnVuY3Rpb24odXJsKQogewotICAgIFdlYkluc3BlY3Rvci5zaG93
UGFuZWwoInByb2ZpbGVzIikuc2hvd1Byb2ZpbGVGb3JVUkwodXJsKTsKKyAgICAvLyBUT0RPKGFs
cGgpOiByb3V0ZSB0byB0aGUgYXBwcm9wcmlhdGUgcHJvZmlsZXIKKyAgICAvLyBDdXJyZW50bHkg
b25seSBDUFUgcHJvZmlsZXIgVVJMcyBhcmUgaW4gdXNlLgorICAgIHZhciBjcHVQcm9maWxlck5h
bWUgPSBXZWJJbnNwZWN0b3IuZXhwZXJpbWVudHNTZXR0aW5ncy5zZXBhcmF0ZVByb2ZpbGVycy5p
c0VuYWJsZWQoKSA/ICJjcHUtcHJvZmlsZXIiIDogInByb2ZpbGVzIjsKKyAgICBXZWJJbnNwZWN0
b3Iuc2hvd1BhbmVsKGNwdVByb2ZpbGVyTmFtZSkuc2hvd1Byb2ZpbGVGb3JVUkwodXJsKTsKIH0K
IAogV2ViSW5zcGVjdG9yLmV2YWx1YXRlSW5Db25zb2xlID0gZnVuY3Rpb24oZXhwcmVzc2lvbiwg
c2hvd1Jlc3VsdE9ubHkpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>190320</attachid>
            <date>2013-02-26 10:05:47 -0800</date>
            <delta_ts>2013-02-28 05:05:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109832-20130226220201.patch</filename>
            <type>text/plain</type>
            <size>24027</size>
            <attacher name="Alexei Filippov">alph</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0MDI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjBhZDg1OGMxZTAyMjdi
NmYzNmEyNzI3NzZmYTYwNWNkYzNkZTFhNS4uZjA5NWMzNzA4MTM5MTZjYmNlZjlmYzJhM2FhNmFi
NTAwYmM2NTg0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDEzLTAyLTI2ICBBbGV4
ZWkgRmlsaXBwb3YgIDxhbHBoQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVjdG9y
OiBNb3ZlIHByb2ZpbGVyIHRvb2xzIGludG8gc2VwYXJhdGUgcGFuZWxzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDk4MzIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGlzIGEgZmlyc3QgcGFydCBv
ZiB0aGUgZml4IHRoYXQgcHV0cyBlYWNoIHByb2ZpbGVyIHRvb2wgaW50byBhIHNlcGFyYXRlIHBh
bmVsLgorCisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlTGF1bmNoZXJWaWV3
LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlByb2ZpbGVMYXVuY2hlclZpZXcpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlByb2ZpbGVMYXVuY2hlclZpZXcucHJvdG90eXBlLmFkZFByb2ZpbGVU
eXBlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVzUGFuZWwuanM6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuUHJvZmlsZUhlYWRlci5wcm90b3R5cGUudmlldyk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuUHJvZmlsZUhlYWRlci5wcm90b3R5cGUuY3JlYXRlVmlldyk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuUHJvZmlsZXNQYW5lbC5wcm90b3R5cGUuX2hhbmRsZUNvbnRleHRNZW51RXZlbnQpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwucHJvdG90eXBlLl9hZGRQcm9maWxlSGVh
ZGVyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVsLnByb3RvdHlwZS5fcmVt
b3ZlUHJvZmlsZUhlYWRlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbC5w
cm90b3R5cGUuX3Nob3dQcm9maWxlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm9maWxlc1Bh
bmVsLnByb3RvdHlwZS5fc2VhcmNoYWJsZVZpZXdzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Q
cm9maWxlU2lkZWJhclRyZWVFbGVtZW50LnByb3RvdHlwZS5oYW5kbGVDb250ZXh0TWVudUV2ZW50
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm9maWxlR3JvdXBTaWRlYmFyVHJlZUVsZW1lbnQp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlByb2ZpbGVHcm91cFNpZGViYXJUcmVlRWxlbWVudC5w
cm90b3R5cGUub25zZWxlY3QpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNQVVByb2ZpbGVyUGFu
ZWwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1NlbGVjdG9yUHJvZmlsZXJQYW5lbCk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFByb2ZpbGVyUGFuZWwpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkNhbnZhc1Byb2ZpbGVyUGFuZWwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk1lbW9y
eUNoYXJ0UHJvZmlsZXJQYW5lbCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmF0aXZlTWVtb3J5
UHJvZmlsZXJQYW5lbCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5ncy5q
czoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FeHBlcmltZW50c1NldHRpbmdzKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5jc3M6CisgICAgICAgICgudG9vbGJhci1p
dGVtLmNwdS1wcm9maWxlciAudG9vbGJhci1pY29uKToKKyAgICAgICAgKC50b29sYmFyLWl0ZW0u
Y3NzLXByb2ZpbGVyIC50b29sYmFyLWljb24pOgorICAgICAgICAoLnRvb2xiYXItaXRlbS5oZWFw
LXByb2ZpbGVyIC50b29sYmFyLWljb24pOgorICAgICAgICAoLnRvb2xiYXItaXRlbS5jYW52YXMt
cHJvZmlsZXIgLnRvb2xiYXItaWNvbik6CisgICAgICAgICgudG9vbGJhci1pdGVtLm1lbW9yeS1j
aGFydC1wcm9maWxlciAudG9vbGJhci1pY29uKToKKyAgICAgICAgKC50b29sYmFyLWl0ZW0ubWVt
b3J5LXNuYXBzaG90LXByb2ZpbGVyIC50b29sYmFyLWljb24pOgorICAgICAgICAqIGluc3BlY3Rv
ci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLl9wYW5lbERl
c2NyaXB0b3JzKToKKwogMjAxMy0wMi0yNiAgQWxleGFuZGVyIFBhdmxvdiAgPGFwYXZsb3ZAY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IENTU0FnZW50LnNldFN0eWxlU2hl
ZXRUZXh0IGNyYXNoZXMgb24gaW5saW5lIHN0eWxlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlTGF1bmNoZXJWaWV3LmpzIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlTGF1bmNoZXJWaWV3LmpzCmluZGV4IGM4
NWMwYjNlY2FjZmQ2YTNjY2VjMmZiYTU0ODU4NzU5ZjI3NjhiNzAuLmEyMmRhZDEyZTgzNDkyNWE4
Y2RiZTUxNGJjZTBmYmY0MDE1OTNmYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvUHJvZmlsZUxhdW5jaGVyVmlldy5qcworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVMYXVuY2hlclZpZXcuanMKQEAgLTMxLDEyICsz
MSwxNSBAQAogLyoqCiAgKiBAY29uc3RydWN0b3IKICAqIEBleHRlbmRzIHtXZWJJbnNwZWN0b3Iu
Vmlld30KKyAqIEBwYXJhbSB7IVdlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVsfSBwcm9maWxlc1Bh
bmVsCisgKiBAcGFyYW0ge2Jvb2xlYW59IHNpbmdsZVByb2ZpbGVNb2RlCiAgKi8KLVdlYkluc3Bl
Y3Rvci5Qcm9maWxlTGF1bmNoZXJWaWV3ID0gZnVuY3Rpb24ocHJvZmlsZXNQYW5lbCkKK1dlYklu
c3BlY3Rvci5Qcm9maWxlTGF1bmNoZXJWaWV3ID0gZnVuY3Rpb24ocHJvZmlsZXNQYW5lbCwgc2lu
Z2xlUHJvZmlsZU1vZGUpCiB7CiAgICAgV2ViSW5zcGVjdG9yLlZpZXcuY2FsbCh0aGlzKTsKIAog
ICAgIHRoaXMuX3BhbmVsID0gcHJvZmlsZXNQYW5lbDsKKyAgICB0aGlzLl9zaW5nbGVQcm9maWxl
TW9kZSA9IHNpbmdsZVByb2ZpbGVNb2RlOwogICAgIHRoaXMuX3Byb2ZpbGVSdW5uaW5nID0gZmFs
c2U7CiAKICAgICB0aGlzLmVsZW1lbnQuYWRkU3R5bGVDbGFzcygicHJvZmlsZS1sYXVuY2hlci12
aWV3Iik7CkBAIC00NCw4ICs0NywxMCBAQCBXZWJJbnNwZWN0b3IuUHJvZmlsZUxhdW5jaGVyVmll
dyA9IGZ1bmN0aW9uKHByb2ZpbGVzUGFuZWwpCiAKICAgICB0aGlzLl9jb250ZW50RWxlbWVudCA9
IHRoaXMuZWxlbWVudC5jcmVhdGVDaGlsZCgiZGl2IiwgInByb2ZpbGUtbGF1bmNoZXItdmlldy1j
b250ZW50Iik7CiAKLSAgICB2YXIgaGVhZGVyID0gdGhpcy5fY29udGVudEVsZW1lbnQuY3JlYXRl
Q2hpbGQoImgxIik7Ci0gICAgaGVhZGVyLnRleHRDb250ZW50ID0gV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJTZWxlY3QgcHJvZmlsaW5nIHR5cGUiKTsKKyAgICBpZiAoIXNpbmdsZVByb2ZpbGVNb2Rl
KSB7CisgICAgICAgIHZhciBoZWFkZXIgPSB0aGlzLl9jb250ZW50RWxlbWVudC5jcmVhdGVDaGls
ZCgiaDEiKTsKKyAgICAgICAgaGVhZGVyLnRleHRDb250ZW50ID0gV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJTZWxlY3QgcHJvZmlsaW5nIHR5cGUiKTsKKyAgICB9CiAKICAgICB0aGlzLl9wcm9maWxl
VHlwZVNlbGVjdG9yRm9ybSA9IHRoaXMuX2NvbnRlbnRFbGVtZW50LmNyZWF0ZUNoaWxkKCJmb3Jt
Iik7CiAKQEAgLTczLDIyICs3OCwzMCBAQCBXZWJJbnNwZWN0b3IuUHJvZmlsZUxhdW5jaGVyVmll
dy5wcm90b3R5cGUgPSB7CiAgICAgYWRkUHJvZmlsZVR5cGU6IGZ1bmN0aW9uKHByb2ZpbGVUeXBl
KQogICAgIHsKICAgICAgICAgdmFyIGNoZWNrZWQgPSAhdGhpcy5fcHJvZmlsZVR5cGVTZWxlY3Rv
ckZvcm0uY2hpbGRyZW4ubGVuZ3RoOwotICAgICAgICB2YXIgbGFiZWxFbGVtZW50ID0gdGhpcy5f
cHJvZmlsZVR5cGVTZWxlY3RvckZvcm0uY3JlYXRlQ2hpbGQoImxhYmVsIik7Ci0gICAgICAgIGxh
YmVsRWxlbWVudC50ZXh0Q29udGVudCA9IHByb2ZpbGVUeXBlLm5hbWU7Ci0gICAgICAgIHZhciBv
cHRpb25FbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTsKLSAgICAgICAg
bGFiZWxFbGVtZW50Lmluc2VydEJlZm9yZShvcHRpb25FbGVtZW50LCBsYWJlbEVsZW1lbnQuZmly
c3RDaGlsZCk7Ci0gICAgICAgIG9wdGlvbkVsZW1lbnQudHlwZSA9ICJyYWRpbyI7Ci0gICAgICAg
IG9wdGlvbkVsZW1lbnQubmFtZSA9ICJwcm9maWxlLXR5cGUiOwotICAgICAgICBpZiAoY2hlY2tl
ZCkgewotICAgICAgICAgICAgb3B0aW9uRWxlbWVudC5jaGVja2VkID0gY2hlY2tlZDsKLSAgICAg
ICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5Qcm9maWxl
TGF1bmNoZXJWaWV3LkV2ZW50VHlwZXMuUHJvZmlsZVR5cGVTZWxlY3RlZCwgcHJvZmlsZVR5cGUp
OworICAgICAgICB2YXIgbGFiZWxFbGVtZW50OworICAgICAgICBpZiAodGhpcy5fc2luZ2xlUHJv
ZmlsZU1vZGUpCisgICAgICAgICAgICBsYWJlbEVsZW1lbnQgPSB0aGlzLl9wcm9maWxlVHlwZVNl
bGVjdG9yRm9ybS5jcmVhdGVDaGlsZCgiaDEiKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICBsYWJlbEVsZW1lbnQgPSB0aGlzLl9wcm9maWxlVHlwZVNlbGVjdG9yRm9ybS5jcmVhdGVDaGls
ZCgibGFiZWwiKTsKKyAgICAgICAgICAgIGxhYmVsRWxlbWVudC50ZXh0Q29udGVudCA9IHByb2Zp
bGVUeXBlLm5hbWU7CisgICAgICAgICAgICB2YXIgb3B0aW9uRWxlbWVudCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImlucHV0Iik7CisgICAgICAgICAgICBsYWJlbEVsZW1lbnQuaW5zZXJ0QmVm
b3JlKG9wdGlvbkVsZW1lbnQsIGxhYmVsRWxlbWVudC5maXJzdENoaWxkKTsKKyAgICAgICAgICAg
IG9wdGlvbkVsZW1lbnQudHlwZSA9ICJyYWRpbyI7CisgICAgICAgICAgICBvcHRpb25FbGVtZW50
Lm5hbWUgPSAicHJvZmlsZS10eXBlIjsKKyAgICAgICAgICAgIG9wdGlvbkVsZW1lbnQuc3R5bGUu
aGlkZGVuID0gdHJ1ZTsKKyAgICAgICAgICAgIGlmIChjaGVja2VkKSB7CisgICAgICAgICAgICAg
ICAgb3B0aW9uRWxlbWVudC5jaGVja2VkID0gY2hlY2tlZDsKKyAgICAgICAgICAgICAgICB0aGlz
LmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuUHJvZmlsZUxhdW5jaGVyVmll
dy5FdmVudFR5cGVzLlByb2ZpbGVUeXBlU2VsZWN0ZWQsIHByb2ZpbGVUeXBlKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIG9wdGlvbkVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdl
IiwgdGhpcy5fcHJvZmlsZVR5cGVDaGFuZ2VkLmJpbmQodGhpcywgcHJvZmlsZVR5cGUpLCBmYWxz
ZSk7CiAgICAgICAgIH0KLSAgICAgICAgb3B0aW9uRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJj
aGFuZ2UiLCB0aGlzLl9wcm9maWxlVHlwZUNoYW5nZWQuYmluZCh0aGlzLCBwcm9maWxlVHlwZSks
IGZhbHNlKTsKICAgICAgICAgdmFyIGRlc2NyaXB0aW9uRWxlbWVudCA9IGxhYmVsRWxlbWVudC5j
cmVhdGVDaGlsZCgicCIpOwogICAgICAgICBkZXNjcmlwdGlvbkVsZW1lbnQudGV4dENvbnRlbnQg
PSBwcm9maWxlVHlwZS5kZXNjcmlwdGlvbjsKICAgICAgICAgdmFyIGRlY29yYXRpb25FbGVtZW50
ID0gcHJvZmlsZVR5cGUuZGVjb3JhdGlvbkVsZW1lbnQoKTsKICAgICAgICAgaWYgKGRlY29yYXRp
b25FbGVtZW50KQogICAgICAgICAgICAgbGFiZWxFbGVtZW50LmFwcGVuZENoaWxkKGRlY29yYXRp
b25FbGVtZW50KTsKKyAgICAgICAgaWYgKHRoaXMuX3NpbmdsZVByb2ZpbGVNb2RlKQorICAgICAg
ICAgICAgdGhpcy5fcHJvZmlsZVR5cGVDaGFuZ2VkKHByb2ZpbGVUeXBlKTsKICAgICB9LAogCiAg
ICAgX2NvbnRyb2xCdXR0b25DbGlja2VkOiBmdW5jdGlvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVzUGFuZWwuanMgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVzUGFuZWwuanMKaW5kZXggYjUwYTRmMjJh
M2U1NTYxNTE5Mjg2Nzc0OTQzOTJmOWY4NjIxOWI1OS4uMmNhYWQ3NTcwNjczZmE5MzRlMjg3ZDkx
MmQxZmY2ZjNhOWUzOTYxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9Qcm9maWxlc1BhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvUHJvZmlsZXNQYW5lbC5qcwpAQCAtMjY4LDIwICsyNjgsMjEgQEAgV2ViSW5zcGVj
dG9yLlByb2ZpbGVIZWFkZXIucHJvdG90eXBlID0gewogICAgIH0sCiAKICAgICAvKioKKyAgICAg
KiBAcGFyYW0geyFXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbH0gcGFuZWwKICAgICAgKiBAcmV0
dXJuIHshV2ViSW5zcGVjdG9yLlZpZXd9CiAgICAgICovCi0gICAgdmlldzogZnVuY3Rpb24oKQor
ICAgIHZpZXc6IGZ1bmN0aW9uKHBhbmVsKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl92aWV3
KQotICAgICAgICAgICAgdGhpcy5fdmlldyA9IHRoaXMuY3JlYXRlVmlldyhXZWJJbnNwZWN0b3Iu
UHJvZmlsZXNQYW5lbC5faW5zdGFuY2UpOworICAgICAgICAgICAgdGhpcy5fdmlldyA9IHRoaXMu
Y3JlYXRlVmlldyhwYW5lbCk7CiAgICAgICAgIHJldHVybiB0aGlzLl92aWV3OwogICAgIH0sCiAK
ICAgICAvKioKLSAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVsfSBwcm9m
aWxlc1BhbmVsCisgICAgICogQHBhcmFtIHshV2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFuZWx9IHBh
bmVsCiAgICAgICogQHJldHVybiB7IVdlYkluc3BlY3Rvci5WaWV3fQogICAgICAqLwotICAgIGNy
ZWF0ZVZpZXc6IGZ1bmN0aW9uKHByb2ZpbGVzUGFuZWwpCisgICAgY3JlYXRlVmlldzogZnVuY3Rp
b24ocGFuZWwpCiAgICAgewogICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIk5vdCBpbXBsZW1lbnRl
ZC4iKTsKICAgICB9LApAQCAtMzMxLDExICszMzIsMTMgQEAgV2ViSW5zcGVjdG9yLlByb2ZpbGVI
ZWFkZXIucHJvdG90eXBlID0gewogICogQGNvbnN0cnVjdG9yCiAgKiBAZXh0ZW5kcyB7V2ViSW5z
cGVjdG9yLlBhbmVsfQogICogQGltcGxlbWVudHMge1dlYkluc3BlY3Rvci5Db250ZXh0TWVudS5Q
cm92aWRlcn0KKyAqIEBwYXJhbSB7c3RyaW5nPX0gbmFtZQogICovCi1XZWJJbnNwZWN0b3IuUHJv
ZmlsZXNQYW5lbCA9IGZ1bmN0aW9uKCkKK1dlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVsID0gZnVu
Y3Rpb24obmFtZSkKIHsKLSAgICBXZWJJbnNwZWN0b3IuUGFuZWwuY2FsbCh0aGlzLCAicHJvZmls
ZXMiKTsKLSAgICBXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbC5faW5zdGFuY2UgPSB0aGlzOwor
ICAgIHZhciBzaW5nbGVQcm9maWxlTW9kZSA9IHR5cGVvZiBuYW1lICE9PSAidW5kZWZpbmVkIjsK
KyAgICBuYW1lID0gbmFtZSB8fCAicHJvZmlsZXMiOworICAgIFdlYkluc3BlY3Rvci5QYW5lbC5j
YWxsKHRoaXMsIG5hbWUpOwogICAgIHRoaXMucmVnaXN0ZXJSZXF1aXJlZENTUygicGFuZWxFbmFi
bGVyVmlldy5jc3MiKTsKICAgICB0aGlzLnJlZ2lzdGVyUmVxdWlyZWRDU1MoImhlYXBQcm9maWxl
ci5jc3MiKTsKICAgICB0aGlzLnJlZ2lzdGVyUmVxdWlyZWRDU1MoInByb2ZpbGVzUGFuZWwuY3Nz
Iik7CkBAIC0zNDUsMTIgKzM0OCwxMyBAQCBXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbCA9IGZ1
bmN0aW9uKCkKICAgICB0aGlzLnByb2ZpbGVzSXRlbVRyZWVFbGVtZW50ID0gbmV3IFdlYkluc3Bl
Y3Rvci5Qcm9maWxlc1NpZGViYXJUcmVlRWxlbWVudCh0aGlzKTsKICAgICB0aGlzLnNpZGViYXJU
cmVlLmFwcGVuZENoaWxkKHRoaXMucHJvZmlsZXNJdGVtVHJlZUVsZW1lbnQpOwogCisgICAgdGhp
cy5fc2luZ2xlUHJvZmlsZU1vZGUgPSBzaW5nbGVQcm9maWxlTW9kZTsKICAgICB0aGlzLl9wcm9m
aWxlVHlwZXNCeUlkTWFwID0ge307CiAKICAgICB2YXIgcGFuZWxFbmFibGVySGVhZGluZyA9IFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiWW91IG5lZWQgdG8gZW5hYmxlIHByb2ZpbGluZyBiZWZvcmUg
eW91IGNhbiB1c2UgdGhlIFByb2ZpbGVzIHBhbmVsLiIpOwogICAgIHZhciBwYW5lbEVuYWJsZXJE
aXNjbGFpbWVyID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJFbmFibGluZyBwcm9maWxpbmcgd2ls
bCBtYWtlIHNjcmlwdHMgcnVuIHNsb3dlci4iKTsKICAgICB2YXIgcGFuZWxFbmFibGVyQnV0dG9u
ID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJFbmFibGUgUHJvZmlsaW5nIik7Ci0gICAgdGhpcy5w
YW5lbEVuYWJsZXJWaWV3ID0gbmV3IFdlYkluc3BlY3Rvci5QYW5lbEVuYWJsZXJWaWV3KCJwcm9m
aWxlcyIsIHBhbmVsRW5hYmxlckhlYWRpbmcsIHBhbmVsRW5hYmxlckRpc2NsYWltZXIsIHBhbmVs
RW5hYmxlckJ1dHRvbik7CisgICAgdGhpcy5wYW5lbEVuYWJsZXJWaWV3ID0gbmV3IFdlYkluc3Bl
Y3Rvci5QYW5lbEVuYWJsZXJWaWV3KG5hbWUsIHBhbmVsRW5hYmxlckhlYWRpbmcsIHBhbmVsRW5h
YmxlckRpc2NsYWltZXIsIHBhbmVsRW5hYmxlckJ1dHRvbik7CiAgICAgdGhpcy5wYW5lbEVuYWJs
ZXJWaWV3LmFkZEV2ZW50TGlzdGVuZXIoImVuYWJsZSBjbGlja2VkIiwgdGhpcy5lbmFibGVQcm9m
aWxlciwgdGhpcyk7CiAKICAgICB0aGlzLnByb2ZpbGVWaWV3cyA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImRpdiIpOwpAQCAtMzg2LDIxICszOTAsMjMgQEAgV2ViSW5zcGVjdG9yLlByb2ZpbGVz
UGFuZWwgPSBmdW5jdGlvbigpCiAKICAgICB0aGlzLl9wcm9maWxlckVuYWJsZWQgPSAhQ2FwYWJp
bGl0aWVzLnByb2ZpbGVyQ2F1c2VzUmVjb21waWxhdGlvbjsKIAotICAgIHRoaXMuX2xhdW5jaGVy
VmlldyA9IG5ldyBXZWJJbnNwZWN0b3IuUHJvZmlsZUxhdW5jaGVyVmlldyh0aGlzKTsKKyAgICB0
aGlzLl9sYXVuY2hlclZpZXcgPSBuZXcgV2ViSW5zcGVjdG9yLlByb2ZpbGVMYXVuY2hlclZpZXco
dGhpcywgc2luZ2xlUHJvZmlsZU1vZGUpOwogICAgIHRoaXMuX2xhdW5jaGVyVmlldy5hZGRFdmVu
dExpc3RlbmVyKFdlYkluc3BlY3Rvci5Qcm9maWxlTGF1bmNoZXJWaWV3LkV2ZW50VHlwZXMuUHJv
ZmlsZVR5cGVTZWxlY3RlZCwgdGhpcy5fb25Qcm9maWxlVHlwZVNlbGVjdGVkLCB0aGlzKTsKICAg
ICB0aGlzLl9yZXNldCgpOwogCi0gICAgdGhpcy5fcmVnaXN0ZXJQcm9maWxlVHlwZShuZXcgV2Vi
SW5zcGVjdG9yLkNQVVByb2ZpbGVUeXBlKCkpOwotICAgIGlmICghV2ViSW5zcGVjdG9yLldvcmtl
ck1hbmFnZXIuaXNXb3JrZXJGcm9udGVuZCgpKQotICAgICAgICB0aGlzLl9yZWdpc3RlclByb2Zp
bGVUeXBlKG5ldyBXZWJJbnNwZWN0b3IuQ1NTU2VsZWN0b3JQcm9maWxlVHlwZSgpKTsKLSAgICBp
ZiAoQ2FwYWJpbGl0aWVzLmhlYXBQcm9maWxlclByZXNlbnQpCi0gICAgICAgIHRoaXMuX3JlZ2lz
dGVyUHJvZmlsZVR5cGUobmV3IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RQcm9maWxlVHlwZSgp
KTsKLSAgICBpZiAoV2ViSW5zcGVjdG9yLmV4cGVyaW1lbnRzU2V0dGluZ3MubmF0aXZlTWVtb3J5
U25hcHNob3RzLmlzRW5hYmxlZCgpKSB7Ci0gICAgICAgIHRoaXMuX3JlZ2lzdGVyUHJvZmlsZVR5
cGUobmV3IFdlYkluc3BlY3Rvci5OYXRpdmVNZW1vcnlQcm9maWxlVHlwZSgpKTsKLSAgICAgICAg
dGhpcy5fcmVnaXN0ZXJQcm9maWxlVHlwZShuZXcgV2ViSW5zcGVjdG9yLk5hdGl2ZVNuYXBzaG90
UHJvZmlsZVR5cGUoKSk7CisgICAgaWYgKCFzaW5nbGVQcm9maWxlTW9kZSkgeworICAgICAgICB0
aGlzLl9yZWdpc3RlclByb2ZpbGVUeXBlKG5ldyBXZWJJbnNwZWN0b3IuQ1BVUHJvZmlsZVR5cGUo
KSk7CisgICAgICAgIGlmICghV2ViSW5zcGVjdG9yLldvcmtlck1hbmFnZXIuaXNXb3JrZXJGcm9u
dGVuZCgpKQorICAgICAgICAgICAgdGhpcy5fcmVnaXN0ZXJQcm9maWxlVHlwZShuZXcgV2ViSW5z
cGVjdG9yLkNTU1NlbGVjdG9yUHJvZmlsZVR5cGUoKSk7CisgICAgICAgIGlmIChDYXBhYmlsaXRp
ZXMuaGVhcFByb2ZpbGVyUHJlc2VudCkKKyAgICAgICAgICAgIHRoaXMuX3JlZ2lzdGVyUHJvZmls
ZVR5cGUobmV3IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RQcm9maWxlVHlwZSgpKTsKKyAgICAg
ICAgaWYgKFdlYkluc3BlY3Rvci5leHBlcmltZW50c1NldHRpbmdzLm5hdGl2ZU1lbW9yeVNuYXBz
aG90cy5pc0VuYWJsZWQoKSkgeworICAgICAgICAgICAgdGhpcy5fcmVnaXN0ZXJQcm9maWxlVHlw
ZShuZXcgV2ViSW5zcGVjdG9yLk5hdGl2ZVNuYXBzaG90UHJvZmlsZVR5cGUoKSk7CisgICAgICAg
ICAgICB0aGlzLl9yZWdpc3RlclByb2ZpbGVUeXBlKG5ldyBXZWJJbnNwZWN0b3IuTmF0aXZlTWVt
b3J5UHJvZmlsZVR5cGUoKSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5l
eHBlcmltZW50c1NldHRpbmdzLmNhbnZhc0luc3BlY3Rpb24uaXNFbmFibGVkKCkpCisgICAgICAg
ICAgICB0aGlzLl9yZWdpc3RlclByb2ZpbGVUeXBlKG5ldyBXZWJJbnNwZWN0b3IuQ2FudmFzUHJv
ZmlsZVR5cGUoKSk7CiAgICAgfQotICAgIGlmIChXZWJJbnNwZWN0b3IuZXhwZXJpbWVudHNTZXR0
aW5ncy5jYW52YXNJbnNwZWN0aW9uLmlzRW5hYmxlZCgpKQotICAgICAgICB0aGlzLl9yZWdpc3Rl
clByb2ZpbGVUeXBlKG5ldyBXZWJJbnNwZWN0b3IuQ2FudmFzUHJvZmlsZVR5cGUoKSk7CiAKICAg
ICB0aGlzLl9jcmVhdGVGaWxlU2VsZWN0b3JFbGVtZW50KCk7CiAgICAgdGhpcy5lbGVtZW50LmFk
ZEV2ZW50TGlzdGVuZXIoImNvbnRleHRtZW51IiwgdGhpcy5faGFuZGxlQ29udGV4dE1lbnVFdmVu
dC5iaW5kKHRoaXMpLCB0cnVlKTsKQEAgLTU2OSw3ICs1NzUsNyBAQCBXZWJJbnNwZWN0b3IuUHJv
ZmlsZXNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX3Byb2ZpbGVUeXBlc0J5SWRN
YXBbcHJvZmlsZVR5cGUuaWRdID0gcHJvZmlsZVR5cGU7CiAgICAgICAgIHRoaXMuX2xhdW5jaGVy
Vmlldy5hZGRQcm9maWxlVHlwZShwcm9maWxlVHlwZSk7CiAgICAgICAgIHByb2ZpbGVUeXBlLnRy
ZWVFbGVtZW50ID0gbmV3IFdlYkluc3BlY3Rvci5TaWRlYmFyU2VjdGlvblRyZWVFbGVtZW50KHBy
b2ZpbGVUeXBlLnRyZWVJdGVtVGl0bGUsIG51bGwsIHRydWUpOwotICAgICAgICBwcm9maWxlVHlw
ZS50cmVlRWxlbWVudC5oaWRkZW4gPSB0cnVlOworICAgICAgICBwcm9maWxlVHlwZS50cmVlRWxl
bWVudC5oaWRkZW4gPSAhdGhpcy5fc2luZ2xlUHJvZmlsZU1vZGU7CiAgICAgICAgIHRoaXMuc2lk
ZWJhclRyZWUuYXBwZW5kQ2hpbGQocHJvZmlsZVR5cGUudHJlZUVsZW1lbnQpOwogICAgICAgICBw
cm9maWxlVHlwZS50cmVlRWxlbWVudC5jaGlsZHJlbkxpc3RFbGVtZW50LmFkZEV2ZW50TGlzdGVu
ZXIoImNvbnRleHRtZW51IiwgdGhpcy5faGFuZGxlQ29udGV4dE1lbnVFdmVudC5iaW5kKHRoaXMp
LCB0cnVlKTsKICAgICAgICAgZnVuY3Rpb24gb25BZGRQcm9maWxlSGVhZGVyKGV2ZW50KQpAQCAt
NjAxLDcgKzYwNyw3IEBAIFdlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVsLnByb3RvdHlwZSA9IHsK
ICAgICAgICAgaWYgKCFlbGVtZW50KQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBpZiAo
ZWxlbWVudC50cmVlRWxlbWVudCAmJiBlbGVtZW50LnRyZWVFbGVtZW50LmhhbmRsZUNvbnRleHRN
ZW51RXZlbnQpIHsKLSAgICAgICAgICAgIGVsZW1lbnQudHJlZUVsZW1lbnQuaGFuZGxlQ29udGV4
dE1lbnVFdmVudChldmVudCk7CisgICAgICAgICAgICBlbGVtZW50LnRyZWVFbGVtZW50LmhhbmRs
ZUNvbnRleHRNZW51RXZlbnQoZXZlbnQsIHRoaXMpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAgICAgICAgIGlmIChlbGVtZW50ICE9PSB0aGlzLmVsZW1lbnQgfHwgZXZlbnQuc3Jj
RWxlbWVudCA9PT0gdGhpcy5zaWRlYmFyRWxlbWVudCkgewpAQCAtNjQ5LDcgKzY1NSw3IEBAIFdl
Ykluc3BlY3Rvci5Qcm9maWxlc1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGdyb3Vw
LnB1c2gocHJvZmlsZSk7CiAgICAgICAgICAgICBpZiAoZ3JvdXAubGVuZ3RoID09PSAyKSB7CiAg
ICAgICAgICAgICAgICAgLy8gTWFrZSBhIGdyb3VwIFRyZWVFbGVtZW50IG5vdyB0aGF0IHRoZXJl
IGFyZSAyIHByb2ZpbGVzLgotICAgICAgICAgICAgICAgIGdyb3VwLl9wcm9maWxlc1RyZWVFbGVt
ZW50ID0gbmV3IFdlYkluc3BlY3Rvci5Qcm9maWxlR3JvdXBTaWRlYmFyVHJlZUVsZW1lbnQocHJv
ZmlsZS50aXRsZSk7CisgICAgICAgICAgICAgICAgZ3JvdXAuX3Byb2ZpbGVzVHJlZUVsZW1lbnQg
PSBuZXcgV2ViSW5zcGVjdG9yLlByb2ZpbGVHcm91cFNpZGViYXJUcmVlRWxlbWVudCh0aGlzLCBw
cm9maWxlLnRpdGxlKTsKIAogICAgICAgICAgICAgICAgIC8vIEluc2VydCBhdCB0aGUgc2FtZSBp
bmRleCBmb3IgdGhlIGZpcnN0IHByb2ZpbGUgb2YgdGhlIGdyb3VwLgogICAgICAgICAgICAgICAg
IHZhciBpbmRleCA9IHNpZGViYXJQYXJlbnQuY2hpbGRyZW4uaW5kZXhPZihncm91cFswXS5fcHJv
ZmlsZXNUcmVlRWxlbWVudCk7CkBAIC03MjUsNyArNzMxLDcgQEAgV2ViSW5zcGVjdG9yLlByb2Zp
bGVzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICBpZiAoIXNpZGViYXJQYXJlbnQuY2hpbGRy
ZW4ubGVuZ3RoKSB7CiAgICAgICAgICAgICB0aGlzLnByb2ZpbGVzSXRlbVRyZWVFbGVtZW50LnNl
bGVjdCgpOwogICAgICAgICAgICAgdGhpcy5fc2hvd0xhdW5jaGVyVmlldygpOwotICAgICAgICAg
ICAgc2lkZWJhclBhcmVudC5oaWRkZW4gPSB0cnVlOworICAgICAgICAgICAgc2lkZWJhclBhcmVu
dC5oaWRkZW4gPSAhdGhpcy5fc2luZ2xlUHJvZmlsZU1vZGU7CiAgICAgICAgIH0KICAgICB9LAog
CkBAIC03MzcsNyArNzQzLDcgQEAgV2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwucHJvdG90eXBl
ID0gewogICAgICAgICBpZiAoIXByb2ZpbGUgfHwgcHJvZmlsZS5pc1RlbXBvcmFyeSkKICAgICAg
ICAgICAgIHJldHVybjsKIAotICAgICAgICB2YXIgdmlldyA9IHByb2ZpbGUudmlldygpOworICAg
ICAgICB2YXIgdmlldyA9IHByb2ZpbGUudmlldyh0aGlzKTsKICAgICAgICAgaWYgKHZpZXcgPT09
IHRoaXMudmlzaWJsZVZpZXcpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTc3MSw4ICs3Nzcs
OCBAQCBXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAg
ICAvLyBGSVhNRTogYWxsb3cgdG8gY2hvb3NlIHNuYXBzaG90IGlmIHRoZXJlIGFyZSBzZXZlcmFs
IG9wdGlvbnMuCiAgICAgICAgICAgICBpZiAocHJvZmlsZS5tYXhKU09iamVjdElkID49IHNuYXBz
aG90T2JqZWN0SWQpIHsKICAgICAgICAgICAgICAgICB0aGlzLl9zaG93UHJvZmlsZShwcm9maWxl
KTsKLSAgICAgICAgICAgICAgICBwcm9maWxlLnZpZXcoKS5jaGFuZ2VWaWV3KHZpZXdOYW1lLCBm
dW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICAgICAgcHJvZmlsZS52aWV3KCkuZGF0YUdyaWQu
aGlnaGxpZ2h0T2JqZWN0QnlIZWFwU25hcHNob3RJZChzbmFwc2hvdE9iamVjdElkKTsKKyAgICAg
ICAgICAgICAgICBwcm9maWxlLnZpZXcodGhpcykuY2hhbmdlVmlldyh2aWV3TmFtZSwgZnVuY3Rp
b24oKSB7CisgICAgICAgICAgICAgICAgICAgIHByb2ZpbGUudmlldyh0aGlzKS5kYXRhR3JpZC5o
aWdobGlnaHRPYmplY3RCeUhlYXBTbmFwc2hvdElkKHNuYXBzaG90T2JqZWN0SWQpOwogICAgICAg
ICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQpAQCAt
MTAwNyw3ICsxMDEzLDcgQEAgV2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwucHJvdG90eXBlID0g
ewogICAgICAgICB2YXIgcHJvZmlsZXMgPSB0aGlzLl9nZXRBbGxQcm9maWxlcygpOwogICAgICAg
ICB2YXIgc2VhcmNoYWJsZVZpZXdzID0gW107CiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
cHJvZmlsZXMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIHZhciB2aWV3ID0gcHJvZmlsZXNb
aV0udmlldygpOworICAgICAgICAgICAgdmFyIHZpZXcgPSBwcm9maWxlc1tpXS52aWV3KHRoaXMp
OwogICAgICAgICAgICAgaWYgKHZpZXcucGVyZm9ybVNlYXJjaCkKICAgICAgICAgICAgICAgICBz
ZWFyY2hhYmxlVmlld3MucHVzaCh2aWV3KQogICAgICAgICB9CkBAIC0xMjY3LDE5ICsxMjczLDE5
IEBAIFdlYkluc3BlY3Rvci5Qcm9maWxlU2lkZWJhclRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsK
IAogICAgIC8qKgogICAgICAqIEBwYXJhbSB7IUV2ZW50fSBldmVudAorICAgICAqIEBwYXJhbSB7
IVdlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVsfSBwYW5lbAogICAgICAqLwotICAgIGhhbmRsZUNv
bnRleHRNZW51RXZlbnQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIGhhbmRsZUNvbnRleHRNZW51RXZl
bnQ6IGZ1bmN0aW9uKGV2ZW50LCBwYW5lbCkKICAgICB7CiAgICAgICAgIHZhciBwcm9maWxlID0g
dGhpcy5wcm9maWxlOwogICAgICAgICB2YXIgY29udGV4dE1lbnUgPSBuZXcgV2ViSW5zcGVjdG9y
LkNvbnRleHRNZW51KGV2ZW50KTsKLSAgICAgICAgdmFyIHByb2ZpbGVzUGFuZWwgPSBXZWJJbnNw
ZWN0b3IuUHJvZmlsZXNQYW5lbC5faW5zdGFuY2U7CiAgICAgICAgIC8vIEZJWE1FOiB1c2UgY29u
dGV4dCBtZW51IHByb3ZpZGVyCiAgICAgICAgIGlmIChwcm9maWxlLmNhblNhdmVUb0ZpbGUoKSkg
ewogICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIlNhdmUgSGVhcCBTbmFwc2hvdFx1MjAyNiIpLCBwcm9maWxlLnNhdmVUb0ZpbGUuYmluZChw
cm9maWxlKSk7Ci0gICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiTG9hZCBIZWFwIFNuYXBzaG90XHUyMDI2IiksIHByb2ZpbGVzUGFuZWwuX2Zp
bGVTZWxlY3RvckVsZW1lbnQuY2xpY2suYmluZChwcm9maWxlc1BhbmVsLl9maWxlU2VsZWN0b3JF
bGVtZW50KSk7CisgICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiTG9hZCBIZWFwIFNuYXBzaG90XHUyMDI2IiksIHBhbmVsLl9maWxlU2VsZWN0
b3JFbGVtZW50LmNsaWNrLmJpbmQocGFuZWwuX2ZpbGVTZWxlY3RvckVsZW1lbnQpKTsKICAgICAg
ICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJEZWxl
dGUgSGVhcCBTbmFwc2hvdCIpLCB0aGlzLm9uZGVsZXRlLmJpbmQodGhpcykpOwogICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIkxvYWQgSGVhcCBTbmFwc2hvdFx1MjAyNiIpLCBwcm9maWxlc1BhbmVsLl9maWxl
U2VsZWN0b3JFbGVtZW50LmNsaWNrLmJpbmQocHJvZmlsZXNQYW5lbC5fZmlsZVNlbGVjdG9yRWxl
bWVudCkpOworICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIkxvYWQgSGVhcCBTbmFwc2hvdFx1MjAyNiIpLCBwYW5lbC5fZmlsZVNlbGVjdG9y
RWxlbWVudC5jbGljay5iaW5kKHBhbmVsLl9maWxlU2VsZWN0b3JFbGVtZW50KSk7CiAgICAgICAg
ICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZygiRGVsZXRl
IHByb2ZpbGUiKSwgdGhpcy5vbmRlbGV0ZS5iaW5kKHRoaXMpKTsKICAgICAgICAgfQogICAgICAg
ICBjb250ZXh0TWVudS5zaG93KCk7CkBAIC0xMjkxLDE5ICsxMjk3LDIxIEBAIFdlYkluc3BlY3Rv
ci5Qcm9maWxlU2lkZWJhclRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKIC8qKgogICogQGNvbnN0
cnVjdG9yCiAgKiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLlNpZGViYXJUcmVlRWxlbWVudH0KKyAq
IEBwYXJhbSB7V2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFuZWx9IHBhbmVsCiAgKiBAcGFyYW0ge3N0
cmluZ30gdGl0bGUKICAqIEBwYXJhbSB7c3RyaW5nPX0gc3VidGl0bGUKICAqLwotV2ViSW5zcGVj
dG9yLlByb2ZpbGVHcm91cFNpZGViYXJUcmVlRWxlbWVudCA9IGZ1bmN0aW9uKHRpdGxlLCBzdWJ0
aXRsZSkKK1dlYkluc3BlY3Rvci5Qcm9maWxlR3JvdXBTaWRlYmFyVHJlZUVsZW1lbnQgPSBmdW5j
dGlvbihwYW5lbCwgdGl0bGUsIHN1YnRpdGxlKQogewogICAgIFdlYkluc3BlY3Rvci5TaWRlYmFy
VHJlZUVsZW1lbnQuY2FsbCh0aGlzLCAicHJvZmlsZS1ncm91cC1zaWRlYmFyLXRyZWUtaXRlbSIs
IHRpdGxlLCBzdWJ0aXRsZSwgbnVsbCwgdHJ1ZSk7CisgICAgdGhpcy5fcGFuZWwgPSBwYW5lbDsK
IH0KIAogV2ViSW5zcGVjdG9yLlByb2ZpbGVHcm91cFNpZGViYXJUcmVlRWxlbWVudC5wcm90b3R5
cGUgPSB7CiAgICAgb25zZWxlY3Q6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIGlmICh0aGlz
LmNoaWxkcmVuLmxlbmd0aCA+IDApCi0gICAgICAgICAgICBXZWJJbnNwZWN0b3IuUHJvZmlsZXNQ
YW5lbC5faW5zdGFuY2UuX3Nob3dQcm9maWxlKHRoaXMuY2hpbGRyZW5bdGhpcy5jaGlsZHJlbi5s
ZW5ndGggLSAxXS5wcm9maWxlKTsKKyAgICAgICAgICAgIHRoaXMuX3BhbmVsLl9zaG93UHJvZmls
ZSh0aGlzLmNoaWxkcmVuW3RoaXMuY2hpbGRyZW4ubGVuZ3RoIC0gMV0ucHJvZmlsZSk7CiAgICAg
fSwKIAogICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLlNpZGViYXJUcmVlRWxlbWVudC5wcm90
b3R5cGUKQEAgLTEzMzYsNiArMTM0NCw4NSBAQCBXZWJJbnNwZWN0b3IuUHJvZmlsZXNTaWRlYmFy
VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLlNp
ZGViYXJUcmVlRWxlbWVudC5wcm90b3R5cGUKIH0KIAorCisvKioKKyAqIEBjb25zdHJ1Y3Rvcgor
ICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVsfQorICovCitXZWJJbnNwZWN0
b3IuQ1BVUHJvZmlsZXJQYW5lbCA9IGZ1bmN0aW9uKCkKK3sKKyAgICBXZWJJbnNwZWN0b3IuUHJv
ZmlsZXNQYW5lbC5jYWxsKHRoaXMsICJjcHUtcHJvZmlsZXIiKTsKKyAgICB0aGlzLl9yZWdpc3Rl
clByb2ZpbGVUeXBlKG5ldyBXZWJJbnNwZWN0b3IuQ1BVUHJvZmlsZVR5cGUoKSk7Cit9CisKK1dl
Ykluc3BlY3Rvci5DUFVQcm9maWxlclBhbmVsLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNw
ZWN0b3IuUHJvZmlsZXNQYW5lbC5wcm90b3R5cGU7CisKKworLyoqCisgKiBAY29uc3RydWN0b3IK
KyAqIEBleHRlbmRzIHtXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbH0KKyAqLworV2ViSW5zcGVj
dG9yLkNTU1NlbGVjdG9yUHJvZmlsZXJQYW5lbCA9IGZ1bmN0aW9uKCkKK3sKKyAgICBXZWJJbnNw
ZWN0b3IuUHJvZmlsZXNQYW5lbC5jYWxsKHRoaXMsICJjc3MtcHJvZmlsZXIiKTsKKyAgICB0aGlz
Ll9yZWdpc3RlclByb2ZpbGVUeXBlKG5ldyBXZWJJbnNwZWN0b3IuQ1NTU2VsZWN0b3JQcm9maWxl
VHlwZSgpKTsKK30KKworV2ViSW5zcGVjdG9yLkNTU1NlbGVjdG9yUHJvZmlsZXJQYW5lbC5wcm90
b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwucHJvdG90eXBlOwor
CisKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLlByb2Zp
bGVzUGFuZWx9CisgKi8KK1dlYkluc3BlY3Rvci5IZWFwUHJvZmlsZXJQYW5lbCA9IGZ1bmN0aW9u
KCkKK3sKKyAgICBXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbC5jYWxsKHRoaXMsICJoZWFwLXBy
b2ZpbGVyIik7CisgICAgdGhpcy5fcmVnaXN0ZXJQcm9maWxlVHlwZShuZXcgV2ViSW5zcGVjdG9y
LkhlYXBTbmFwc2hvdFByb2ZpbGVUeXBlKCkpOworfQorCitXZWJJbnNwZWN0b3IuSGVhcFByb2Zp
bGVyUGFuZWwucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVs
LnByb3RvdHlwZTsKKworCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQGV4dGVuZHMge1dlYklu
c3BlY3Rvci5Qcm9maWxlc1BhbmVsfQorICovCitXZWJJbnNwZWN0b3IuQ2FudmFzUHJvZmlsZXJQ
YW5lbCA9IGZ1bmN0aW9uKCkKK3sKKyAgICBXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbC5jYWxs
KHRoaXMsICJjYW52YXMtcHJvZmlsZXIiKTsKKyAgICB0aGlzLl9yZWdpc3RlclByb2ZpbGVUeXBl
KG5ldyBXZWJJbnNwZWN0b3IuQ2FudmFzUHJvZmlsZVR5cGUoKSk7Cit9CisKK1dlYkluc3BlY3Rv
ci5DYW52YXNQcm9maWxlclBhbmVsLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3Iu
UHJvZmlsZXNQYW5lbC5wcm90b3R5cGU7CisKKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBl
eHRlbmRzIHtXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbH0KKyAqLworV2ViSW5zcGVjdG9yLk1l
bW9yeUNoYXJ0UHJvZmlsZXJQYW5lbCA9IGZ1bmN0aW9uKCkKK3sKKyAgICBXZWJJbnNwZWN0b3Iu
UHJvZmlsZXNQYW5lbC5jYWxsKHRoaXMsICJtZW1vcnktY2hhcnQtcHJvZmlsZXIiKTsKKyAgICB0
aGlzLl9yZWdpc3RlclByb2ZpbGVUeXBlKG5ldyBXZWJJbnNwZWN0b3IuTmF0aXZlTWVtb3J5UHJv
ZmlsZVR5cGUoKSk7Cit9CisKK1dlYkluc3BlY3Rvci5NZW1vcnlDaGFydFByb2ZpbGVyUGFuZWwu
cHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVsLnByb3RvdHlw
ZTsKKworCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5Q
cm9maWxlc1BhbmVsfQorICovCitXZWJJbnNwZWN0b3IuTmF0aXZlTWVtb3J5UHJvZmlsZXJQYW5l
bCA9IGZ1bmN0aW9uKCkKK3sKKyAgICBXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbC5jYWxsKHRo
aXMsICJtZW1vcnktc25hcHNob3QtcHJvZmlsZXIiKTsKKyAgICB0aGlzLl9yZWdpc3RlclByb2Zp
bGVUeXBlKG5ldyBXZWJJbnNwZWN0b3IuTmF0aXZlU25hcHNob3RQcm9maWxlVHlwZSgpKTsKK30K
KworV2ViSW5zcGVjdG9yLk5hdGl2ZU1lbW9yeVByb2ZpbGVyUGFuZWwucHJvdG90eXBlLl9fcHJv
dG9fXyA9IFdlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVsLnByb3RvdHlwZTsKKworCiBpbXBvcnRT
Y3JpcHQoIlByb2ZpbGVEYXRhR3JpZFRyZWUuanMiKTsKIGltcG9ydFNjcmlwdCgiQm90dG9tVXBQ
cm9maWxlRGF0YUdyaWRUcmVlLmpzIik7CiBpbXBvcnRTY3JpcHQoIkNQVVByb2ZpbGVWaWV3Lmpz
Iik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRp
bmdzLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5ncy5qcwpp
bmRleCAxZTVlMjg3NTUxODQzNzgwOGY1OGJjMTFkNjQxZGM0YWIxMTIyMTVhLi5hZDY5ODVkYTMy
NmViMTcwNTEyZTgxM2Q3NDY4ZTA3NWNhNGJlNjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdzLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3MuanMKQEAgLTIxNSw2ICsyMTUsNyBAQCBXZWJJbnNw
ZWN0b3IuRXhwZXJpbWVudHNTZXR0aW5ncyA9IGZ1bmN0aW9uKCkKICAgICB0aGlzLmZpbGVTeXN0
ZW1Qcm9qZWN0ID0gdGhpcy5fY3JlYXRlRXhwZXJpbWVudCgiZmlsZVN5c3RlbVByb2plY3QiLCAi
RmlsZSBzeXN0ZW0gZm9sZGVycyBpbiBTb3VyY2VzIFBhbmVsIik7CiAgICAgdGhpcy5zaG93V2hp
dGVzcGFjZUluRWRpdG9yID0gdGhpcy5fY3JlYXRlRXhwZXJpbWVudCgic2hvd1doaXRlc3BhY2VJ
bkVkaXRvciIsICJTaG93IHdoaXRlc3BhY2UgY2hhcmFjdGVycyBpbiBlZGl0b3IiKTsKICAgICB0
aGlzLnRleHRFZGl0b3JTbWFydEJyYWNlcyA9IHRoaXMuX2NyZWF0ZUV4cGVyaW1lbnQoInRleHRF
ZGl0b3JTbWFydEJyYWNlcyIsICJFbmFibGUgc21hcnQgYnJhY2VzIGluIHRleHQgZWRpdG9yIik7
CisgICAgdGhpcy5zZXBhcmF0ZVByb2ZpbGVycyA9IHRoaXMuX2NyZWF0ZUV4cGVyaW1lbnQoInNl
cGFyYXRlUHJvZmlsZXJzIiwgIlNlcGFyYXRlIHByb2ZpbGVyIHRvb2xzIik7CiAKICAgICB0aGlz
Ll9jbGVhblVwU2V0dGluZygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuY3NzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9pbnNwZWN0b3IuY3NzCmluZGV4IGZlNWNmYjI1Y2QzMzgxMjBhZmQ5NzczMGY5MWM4
ZDRmNWUwNGVlOTkuLmM0Y2I1NjAyZWE4NzMxOTA2YzU5NDY4NzIwZGM0MWFjMzEwY2VhNDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmNz
cworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5jc3MK
QEAgLTQ3NSw2ICs0NzUsMzAgQEAgYm9keS5kb2NrLXRvLWJvdHRvbSAudG9vbGJhci1pdGVtLnRp
bWVsaW5lIC50b29sYmFyLWljb24gewogICAgIGJhY2tncm91bmQtcG9zaXRpb24teDogLTE2MHB4
OwogfQogCisudG9vbGJhci1pdGVtLmNwdS1wcm9maWxlciAudG9vbGJhci1pY29uIHsKKyAgICBi
YWNrZ3JvdW5kLXBvc2l0aW9uLXg6IC0xNjBweDsKK30KKworLnRvb2xiYXItaXRlbS5jc3MtcHJv
ZmlsZXIgLnRvb2xiYXItaWNvbiB7CisgICAgYmFja2dyb3VuZC1wb3NpdGlvbi14OiAtMTYwcHg7
Cit9CisKKy50b29sYmFyLWl0ZW0uaGVhcC1wcm9maWxlciAudG9vbGJhci1pY29uIHsKKyAgICBi
YWNrZ3JvdW5kLXBvc2l0aW9uLXg6IC0xNjBweDsKK30KKworLnRvb2xiYXItaXRlbS5jYW52YXMt
cHJvZmlsZXIgLnRvb2xiYXItaWNvbiB7CisgICAgYmFja2dyb3VuZC1wb3NpdGlvbi14OiAtMTYw
cHg7Cit9CisKKy50b29sYmFyLWl0ZW0ubWVtb3J5LWNoYXJ0LXByb2ZpbGVyIC50b29sYmFyLWlj
b24geworICAgIGJhY2tncm91bmQtcG9zaXRpb24teDogLTE2MHB4OworfQorCisudG9vbGJhci1p
dGVtLm1lbW9yeS1zbmFwc2hvdC1wcm9maWxlciAudG9vbGJhci1pY29uIHsKKyAgICBiYWNrZ3Jv
dW5kLXBvc2l0aW9uLXg6IC0xNjBweDsKK30KKwogYm9keS5kb2NrLXRvLWJvdHRvbSAudG9vbGJh
ci1pdGVtLnByb2ZpbGVzIC50b29sYmFyLWljb24gewogICAgIGJhY2tncm91bmQtcG9zaXRpb24t
eDogLTEyMHB4OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9pbnNwZWN0b3IuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2lu
c3BlY3Rvci5qcwppbmRleCAxNGM4Y2RiODA3NTNjODlmOGU3ODdmNWVlNjE3YzUyZTk2ODMzODM3
Li5iYTZlM2E4ODkyODdhMzRiNDE3M2M4MmI1YmY3ZmE5NGJhNGE1ZmY3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcwpAQCAtNDYsMTIgKzQ2
LDI4IEBAIHZhciBXZWJJbnNwZWN0b3IgPSB7CiAgICAgICAgIHZhciBhdWRpdHMgPSBuZXcgV2Vi
SW5zcGVjdG9yLlBhbmVsRGVzY3JpcHRvcigiYXVkaXRzIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJBdWRpdHMiKSwgIkF1ZGl0c1BhbmVsIiwgIkF1ZGl0c1BhbmVsLmpzIik7CiAgICAgICAgIHZh
ciBjb25zb2xlID0gbmV3IFdlYkluc3BlY3Rvci5QYW5lbERlc2NyaXB0b3IoImNvbnNvbGUiLCBX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNvbnNvbGUiKSwgIkNvbnNvbGVQYW5lbCIpOwogICAgICAg
ICB2YXIgYWxsRGVzY3JpcHRvcnMgPSBbZWxlbWVudHMsIHJlc291cmNlcywgbmV0d29yaywgc2Ny
aXB0cywgdGltZWxpbmUsIHByb2ZpbGVzLCBhdWRpdHMsIGNvbnNvbGVdOworICAgICAgICB2YXIg
YWxsUHJvZmlsZXJzID0gW3Byb2ZpbGVzXTsKKyAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5leHBl
cmltZW50c1NldHRpbmdzLnNlcGFyYXRlUHJvZmlsZXJzLmlzRW5hYmxlZCgpKSB7CisgICAgICAg
ICAgICBhbGxQcm9maWxlcnMgPSBbXTsKKyAgICAgICAgICAgIGFsbFByb2ZpbGVycy5wdXNoKG5l
dyBXZWJJbnNwZWN0b3IuUGFuZWxEZXNjcmlwdG9yKCJjcHUtcHJvZmlsZXIiLCBXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIkNQVSBQcm9maWxlciIpLCAiQ1BVUHJvZmlsZXJQYW5lbCIsICJQcm9maWxl
c1BhbmVsLmpzIikpOworICAgICAgICAgICAgaWYgKCFXZWJJbnNwZWN0b3IuV29ya2VyTWFuYWdl
ci5pc1dvcmtlckZyb250ZW5kKCkpCisgICAgICAgICAgICAgICAgYWxsUHJvZmlsZXJzLnB1c2go
bmV3IFdlYkluc3BlY3Rvci5QYW5lbERlc2NyaXB0b3IoImNzcy1wcm9maWxlciIsIFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiQ1NTIFByb2ZpbGVyIiksICJDU1NTZWxlY3RvclByb2ZpbGVyUGFuZWwi
LCAiUHJvZmlsZXNQYW5lbC5qcyIpKTsKKyAgICAgICAgICAgIGlmIChDYXBhYmlsaXRpZXMuaGVh
cFByb2ZpbGVyUHJlc2VudCkKKyAgICAgICAgICAgICAgICBhbGxQcm9maWxlcnMucHVzaChuZXcg
V2ViSW5zcGVjdG9yLlBhbmVsRGVzY3JpcHRvcigiaGVhcC1wcm9maWxlciIsIFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiSGVhcCBQcm9maWxlciIpLCAiSGVhcFByb2ZpbGVyUGFuZWwiLCAiUHJvZmls
ZXNQYW5lbC5qcyIpKTsKKyAgICAgICAgICAgIGlmIChXZWJJbnNwZWN0b3IuZXhwZXJpbWVudHNT
ZXR0aW5ncy5jYW52YXNJbnNwZWN0aW9uLmlzRW5hYmxlZCgpKQorICAgICAgICAgICAgICAgIGFs
bFByb2ZpbGVycy5wdXNoKG5ldyBXZWJJbnNwZWN0b3IuUGFuZWxEZXNjcmlwdG9yKCJjYW52YXMt
cHJvZmlsZXIiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNhbnZhcyBQcm9maWxlciIpLCAiQ2Fu
dmFzUHJvZmlsZXJQYW5lbCIsICJQcm9maWxlc1BhbmVsLmpzIikpOworICAgICAgICAgICAgaWYg
KFdlYkluc3BlY3Rvci5leHBlcmltZW50c1NldHRpbmdzLm5hdGl2ZU1lbW9yeVNuYXBzaG90cy5p
c0VuYWJsZWQoKSkgeworICAgICAgICAgICAgICAgIGFsbFByb2ZpbGVycy5wdXNoKG5ldyBXZWJJ
bnNwZWN0b3IuUGFuZWxEZXNjcmlwdG9yKCJtZW1vcnktY2hhcnQtcHJvZmlsZXIiLCBXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIk1lbW9yeSBEaXN0cmlidXRpb24iKSwgIk1lbW9yeUNoYXJ0UHJvZmls
ZXJQYW5lbCIsICJQcm9maWxlc1BhbmVsLmpzIikpOworICAgICAgICAgICAgICAgIGFsbFByb2Zp
bGVycy5wdXNoKG5ldyBXZWJJbnNwZWN0b3IuUGFuZWxEZXNjcmlwdG9yKCJtZW1vcnktc25hcHNo
b3QtcHJvZmlsZXIiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk1lbW9yeSBTbmFwc2hvdHMiKSwg
Ik5hdGl2ZU1lbW9yeVByb2ZpbGVyUGFuZWwiLCAiUHJvZmlsZXNQYW5lbC5qcyIpKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIEFycmF5LnByb3RvdHlwZS5zcGxpY2UuYmluZChhbGxEZXNj
cmlwdG9ycywgYWxsRGVzY3JpcHRvcnMuaW5kZXhPZihwcm9maWxlcyksIDEpLmFwcGx5KG51bGws
IGFsbFByb2ZpbGVycyk7CisgICAgICAgIH0KIAogICAgICAgICB2YXIgcGFuZWxEZXNjcmlwdG9y
cyA9IFtdOwogICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLldvcmtlck1hbmFnZXIuaXNXb3JrZXJG
cm9udGVuZCgpKSB7CiAgICAgICAgICAgICBwYW5lbERlc2NyaXB0b3JzLnB1c2goc2NyaXB0cyk7
CiAgICAgICAgICAgICBwYW5lbERlc2NyaXB0b3JzLnB1c2godGltZWxpbmUpOwotICAgICAgICAg
ICAgcGFuZWxEZXNjcmlwdG9ycy5wdXNoKHByb2ZpbGVzKTsKKyAgICAgICAgICAgIHBhbmVsRGVz
Y3JpcHRvcnMgPSBwYW5lbERlc2NyaXB0b3JzLmNvbmNhdChhbGxQcm9maWxlcnMpOwogICAgICAg
ICAgICAgcGFuZWxEZXNjcmlwdG9ycy5wdXNoKGNvbnNvbGUpOwogICAgICAgICAgICAgcmV0dXJu
IHBhbmVsRGVzY3JpcHRvcnM7CiAgICAgICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>190709</attachid>
            <date>2013-02-28 05:05:24 -0800</date>
            <delta_ts>2013-02-28 06:45:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109832-20130228170135.patch</filename>
            <type>text/plain</type>
            <size>24607</size>
            <attacher name="Alexei Filippov">alph</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0MjgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjkxNmYyZWE0MjlhMjFi
NzU1OTRkMjIzOWE3MGEzOTZlMjM2ZmQ1Ny4uNmIyZmZiNDIxOTg3NGY5YmU5YTMwNTNjNTRmMzhl
NWJlNTkxNzQ2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDEzLTAyLTI4ICBBbGV4
ZWkgRmlsaXBwb3YgIDxhbHBoQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVjdG9y
OiBNb3ZlIHByb2ZpbGVyIHRvb2xzIGludG8gc2VwYXJhdGUgcGFuZWxzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDk4MzIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGlzIGEgZmlyc3QgcGFydCBv
ZiB0aGUgZml4IHRoYXQgcHV0cyBlYWNoIHByb2ZpbGVyIHRvb2wgaW50byBhIHNlcGFyYXRlIHBh
bmVsLgorICAgICAgICBUaGUgZml4IGludHJvZHVjZXMgc2VwYXJhdGUgcGFuZWxzIGZvciBlYWNo
IHByb2ZpbGVyIHR5cGUuCisgICAgICAgIFRoZXJlIGFyZSBub3cgc2l4IHBhbmVsIChpbmNsdWRp
bmcgZXhwZXJpbWVudGFsKToKKyAgICAgICAgICAxLiBKUyBDUFUgcHJvZmlsZXIKKyAgICAgICAg
ICAyLiBDU1MgU2VsZWN0b3IgcHJvZmlsZXIKKyAgICAgICAgICAzLiBKUyBIZWFwIHByb2ZpbGVy
CisgICAgICAgICAgNC4gQ2FudmFzIHByb2ZpZXIKKyAgICAgICAgICA1LiBOYXRpdmUgbWVtb3J5
IHNuYXBzaG90cworICAgICAgICAgIDYuIE5hdGl2ZSBtZW1vcnkgZGlzdHJpYnV0aW9uCisgICAg
ICAgIFRoZSBuZXcgZnVuY3Rpb25hbGl0eSBpcyBwdXQgYmVoaW5kIGV4cGVyaW1lbnRhbCBmbGFn
LgorCisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlTGF1bmNoZXJWaWV3Lmpz
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlByb2ZpbGVMYXVuY2hlclZpZXcpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlByb2ZpbGVMYXVuY2hlclZpZXcucHJvdG90eXBlLmFkZFByb2ZpbGVUeXBl
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVzUGFuZWwuanM6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuUHJvZmlsZUhlYWRlci5wcm90b3R5cGUudmlldyk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuUHJvZmlsZUhlYWRlci5wcm90b3R5cGUuY3JlYXRlVmlldyk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
UHJvZmlsZXNQYW5lbC5wcm90b3R5cGUuX2hhbmRsZUNvbnRleHRNZW51RXZlbnQpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwucHJvdG90eXBlLl9hZGRQcm9maWxlSGVhZGVy
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVsLnByb3RvdHlwZS5fcmVtb3Zl
UHJvZmlsZUhlYWRlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbC5wcm90
b3R5cGUuX3Nob3dQcm9maWxlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVs
LnByb3RvdHlwZS5fc2VhcmNoYWJsZVZpZXdzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm9m
aWxlU2lkZWJhclRyZWVFbGVtZW50LnByb3RvdHlwZS5oYW5kbGVDb250ZXh0TWVudUV2ZW50KToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm9maWxlR3JvdXBTaWRlYmFyVHJlZUVsZW1lbnQpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlByb2ZpbGVHcm91cFNpZGViYXJUcmVlRWxlbWVudC5wcm90
b3R5cGUub25zZWxlY3QpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNQVVByb2ZpbGVyUGFuZWwp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1NlbGVjdG9yUHJvZmlsZXJQYW5lbCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuSGVhcFByb2ZpbGVyUGFuZWwpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkNhbnZhc1Byb2ZpbGVyUGFuZWwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk1lbW9yeUNo
YXJ0UHJvZmlsZXJQYW5lbCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmF0aXZlTWVtb3J5UHJv
ZmlsZXJQYW5lbCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5ncy5qczoK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5FeHBlcmltZW50c1NldHRpbmdzKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5jc3M6CisgICAgICAgICgudG9vbGJhci1pdGVt
LmNwdS1wcm9maWxlciAudG9vbGJhci1pY29uKToKKyAgICAgICAgKC50b29sYmFyLWl0ZW0uY3Nz
LXByb2ZpbGVyIC50b29sYmFyLWljb24pOgorICAgICAgICAoLnRvb2xiYXItaXRlbS5oZWFwLXBy
b2ZpbGVyIC50b29sYmFyLWljb24pOgorICAgICAgICAoLnRvb2xiYXItaXRlbS5jYW52YXMtcHJv
ZmlsZXIgLnRvb2xiYXItaWNvbik6CisgICAgICAgICgudG9vbGJhci1pdGVtLm1lbW9yeS1jaGFy
dC1wcm9maWxlciAudG9vbGJhci1pY29uKToKKyAgICAgICAgKC50b29sYmFyLWl0ZW0ubWVtb3J5
LXNuYXBzaG90LXByb2ZpbGVyIC50b29sYmFyLWljb24pOgorICAgICAgICAqIGluc3BlY3Rvci9m
cm9udC1lbmQvaW5zcGVjdG9yLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLl9wYW5lbERlc2Ny
aXB0b3JzKToKKwogMjAxMy0wMi0yOCAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29t
PgogCiAgICAgICAgIFJlc291cmNlUmVxdWVzdENGTmV0LmNwcCB3b24ndCBjb21waWxlIGFmdGVy
IHIxNDQyMTYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
UHJvZmlsZUxhdW5jaGVyVmlldy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvUHJvZmlsZUxhdW5jaGVyVmlldy5qcwppbmRleCBjODVjMGIzZWNhY2ZkNmEzY2NlYzJmYmE1
NDg1ODc1OWYyNzY4YjcwLi5hMjJkYWQxMmU4MzQ5MjVhOGNkYmU1MTRiY2UwZmJmNDAxNTkzZmFj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVM
YXVuY2hlclZpZXcuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Q
cm9maWxlTGF1bmNoZXJWaWV3LmpzCkBAIC0zMSwxMiArMzEsMTUgQEAKIC8qKgogICogQGNvbnN0
cnVjdG9yCiAgKiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLlZpZXd9CisgKiBAcGFyYW0geyFXZWJJ
bnNwZWN0b3IuUHJvZmlsZXNQYW5lbH0gcHJvZmlsZXNQYW5lbAorICogQHBhcmFtIHtib29sZWFu
fSBzaW5nbGVQcm9maWxlTW9kZQogICovCi1XZWJJbnNwZWN0b3IuUHJvZmlsZUxhdW5jaGVyVmll
dyA9IGZ1bmN0aW9uKHByb2ZpbGVzUGFuZWwpCitXZWJJbnNwZWN0b3IuUHJvZmlsZUxhdW5jaGVy
VmlldyA9IGZ1bmN0aW9uKHByb2ZpbGVzUGFuZWwsIHNpbmdsZVByb2ZpbGVNb2RlKQogewogICAg
IFdlYkluc3BlY3Rvci5WaWV3LmNhbGwodGhpcyk7CiAKICAgICB0aGlzLl9wYW5lbCA9IHByb2Zp
bGVzUGFuZWw7CisgICAgdGhpcy5fc2luZ2xlUHJvZmlsZU1vZGUgPSBzaW5nbGVQcm9maWxlTW9k
ZTsKICAgICB0aGlzLl9wcm9maWxlUnVubmluZyA9IGZhbHNlOwogCiAgICAgdGhpcy5lbGVtZW50
LmFkZFN0eWxlQ2xhc3MoInByb2ZpbGUtbGF1bmNoZXItdmlldyIpOwpAQCAtNDQsOCArNDcsMTAg
QEAgV2ViSW5zcGVjdG9yLlByb2ZpbGVMYXVuY2hlclZpZXcgPSBmdW5jdGlvbihwcm9maWxlc1Bh
bmVsKQogCiAgICAgdGhpcy5fY29udGVudEVsZW1lbnQgPSB0aGlzLmVsZW1lbnQuY3JlYXRlQ2hp
bGQoImRpdiIsICJwcm9maWxlLWxhdW5jaGVyLXZpZXctY29udGVudCIpOwogCi0gICAgdmFyIGhl
YWRlciA9IHRoaXMuX2NvbnRlbnRFbGVtZW50LmNyZWF0ZUNoaWxkKCJoMSIpOwotICAgIGhlYWRl
ci50ZXh0Q29udGVudCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2VsZWN0IHByb2ZpbGluZyB0
eXBlIik7CisgICAgaWYgKCFzaW5nbGVQcm9maWxlTW9kZSkgeworICAgICAgICB2YXIgaGVhZGVy
ID0gdGhpcy5fY29udGVudEVsZW1lbnQuY3JlYXRlQ2hpbGQoImgxIik7CisgICAgICAgIGhlYWRl
ci50ZXh0Q29udGVudCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2VsZWN0IHByb2ZpbGluZyB0
eXBlIik7CisgICAgfQogCiAgICAgdGhpcy5fcHJvZmlsZVR5cGVTZWxlY3RvckZvcm0gPSB0aGlz
Ll9jb250ZW50RWxlbWVudC5jcmVhdGVDaGlsZCgiZm9ybSIpOwogCkBAIC03MywyMiArNzgsMzAg
QEAgV2ViSW5zcGVjdG9yLlByb2ZpbGVMYXVuY2hlclZpZXcucHJvdG90eXBlID0gewogICAgIGFk
ZFByb2ZpbGVUeXBlOiBmdW5jdGlvbihwcm9maWxlVHlwZSkKICAgICB7CiAgICAgICAgIHZhciBj
aGVja2VkID0gIXRoaXMuX3Byb2ZpbGVUeXBlU2VsZWN0b3JGb3JtLmNoaWxkcmVuLmxlbmd0aDsK
LSAgICAgICAgdmFyIGxhYmVsRWxlbWVudCA9IHRoaXMuX3Byb2ZpbGVUeXBlU2VsZWN0b3JGb3Jt
LmNyZWF0ZUNoaWxkKCJsYWJlbCIpOwotICAgICAgICBsYWJlbEVsZW1lbnQudGV4dENvbnRlbnQg
PSBwcm9maWxlVHlwZS5uYW1lOwotICAgICAgICB2YXIgb3B0aW9uRWxlbWVudCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImlucHV0Iik7Ci0gICAgICAgIGxhYmVsRWxlbWVudC5pbnNlcnRCZWZv
cmUob3B0aW9uRWxlbWVudCwgbGFiZWxFbGVtZW50LmZpcnN0Q2hpbGQpOwotICAgICAgICBvcHRp
b25FbGVtZW50LnR5cGUgPSAicmFkaW8iOwotICAgICAgICBvcHRpb25FbGVtZW50Lm5hbWUgPSAi
cHJvZmlsZS10eXBlIjsKLSAgICAgICAgaWYgKGNoZWNrZWQpIHsKLSAgICAgICAgICAgIG9wdGlv
bkVsZW1lbnQuY2hlY2tlZCA9IGNoZWNrZWQ7Ci0gICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZl
bnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuUHJvZmlsZUxhdW5jaGVyVmlldy5FdmVudFR5cGVz
LlByb2ZpbGVUeXBlU2VsZWN0ZWQsIHByb2ZpbGVUeXBlKTsKKyAgICAgICAgdmFyIGxhYmVsRWxl
bWVudDsKKyAgICAgICAgaWYgKHRoaXMuX3NpbmdsZVByb2ZpbGVNb2RlKQorICAgICAgICAgICAg
bGFiZWxFbGVtZW50ID0gdGhpcy5fcHJvZmlsZVR5cGVTZWxlY3RvckZvcm0uY3JlYXRlQ2hpbGQo
ImgxIik7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbGFiZWxFbGVtZW50ID0gdGhpcy5f
cHJvZmlsZVR5cGVTZWxlY3RvckZvcm0uY3JlYXRlQ2hpbGQoImxhYmVsIik7CisgICAgICAgICAg
ICBsYWJlbEVsZW1lbnQudGV4dENvbnRlbnQgPSBwcm9maWxlVHlwZS5uYW1lOworICAgICAgICAg
ICAgdmFyIG9wdGlvbkVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpOwor
ICAgICAgICAgICAgbGFiZWxFbGVtZW50Lmluc2VydEJlZm9yZShvcHRpb25FbGVtZW50LCBsYWJl
bEVsZW1lbnQuZmlyc3RDaGlsZCk7CisgICAgICAgICAgICBvcHRpb25FbGVtZW50LnR5cGUgPSAi
cmFkaW8iOworICAgICAgICAgICAgb3B0aW9uRWxlbWVudC5uYW1lID0gInByb2ZpbGUtdHlwZSI7
CisgICAgICAgICAgICBvcHRpb25FbGVtZW50LnN0eWxlLmhpZGRlbiA9IHRydWU7CisgICAgICAg
ICAgICBpZiAoY2hlY2tlZCkgeworICAgICAgICAgICAgICAgIG9wdGlvbkVsZW1lbnQuY2hlY2tl
ZCA9IGNoZWNrZWQ7CisgICAgICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5l
cnMoV2ViSW5zcGVjdG9yLlByb2ZpbGVMYXVuY2hlclZpZXcuRXZlbnRUeXBlcy5Qcm9maWxlVHlw
ZVNlbGVjdGVkLCBwcm9maWxlVHlwZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBvcHRp
b25FbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsIHRoaXMuX3Byb2ZpbGVUeXBlQ2hh
bmdlZC5iaW5kKHRoaXMsIHByb2ZpbGVUeXBlKSwgZmFsc2UpOwogICAgICAgICB9Ci0gICAgICAg
IG9wdGlvbkVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIiwgdGhpcy5fcHJvZmlsZVR5
cGVDaGFuZ2VkLmJpbmQodGhpcywgcHJvZmlsZVR5cGUpLCBmYWxzZSk7CiAgICAgICAgIHZhciBk
ZXNjcmlwdGlvbkVsZW1lbnQgPSBsYWJlbEVsZW1lbnQuY3JlYXRlQ2hpbGQoInAiKTsKICAgICAg
ICAgZGVzY3JpcHRpb25FbGVtZW50LnRleHRDb250ZW50ID0gcHJvZmlsZVR5cGUuZGVzY3JpcHRp
b247CiAgICAgICAgIHZhciBkZWNvcmF0aW9uRWxlbWVudCA9IHByb2ZpbGVUeXBlLmRlY29yYXRp
b25FbGVtZW50KCk7CiAgICAgICAgIGlmIChkZWNvcmF0aW9uRWxlbWVudCkKICAgICAgICAgICAg
IGxhYmVsRWxlbWVudC5hcHBlbmRDaGlsZChkZWNvcmF0aW9uRWxlbWVudCk7CisgICAgICAgIGlm
ICh0aGlzLl9zaW5nbGVQcm9maWxlTW9kZSkKKyAgICAgICAgICAgIHRoaXMuX3Byb2ZpbGVUeXBl
Q2hhbmdlZChwcm9maWxlVHlwZSk7CiAgICAgfSwKIAogICAgIF9jb250cm9sQnV0dG9uQ2xpY2tl
ZDogZnVuY3Rpb24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9Qcm9maWxlc1BhbmVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9Qcm9maWxlc1BhbmVsLmpzCmluZGV4IGI1MGE0ZjIyYTNlNTU2MTUxOTI4Njc3NDk0MzkyZjlm
ODYyMTliNTkuLjkzMDA2MmUyZGM0ODE2ODk5OTMxOGIxMTYyMzgzMWYzOTczMjYzMGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUHJvZmlsZXNQYW5lbC5q
cworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVzUGFuZWwu
anMKQEAgLTI2OCwyMCArMjY4LDIxIEBAIFdlYkluc3BlY3Rvci5Qcm9maWxlSGVhZGVyLnByb3Rv
dHlwZSA9IHsKICAgICB9LAogCiAgICAgLyoqCisgICAgICogQHBhcmFtIHshV2ViSW5zcGVjdG9y
LlByb2ZpbGVzUGFuZWx9IHBhbmVsCiAgICAgICogQHJldHVybiB7IVdlYkluc3BlY3Rvci5WaWV3
fQogICAgICAqLwotICAgIHZpZXc6IGZ1bmN0aW9uKCkKKyAgICB2aWV3OiBmdW5jdGlvbihwYW5l
bCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fdmlldykKLSAgICAgICAgICAgIHRoaXMuX3Zp
ZXcgPSB0aGlzLmNyZWF0ZVZpZXcoV2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwuX2luc3RhbmNl
KTsKKyAgICAgICAgICAgIHRoaXMuX3ZpZXcgPSB0aGlzLmNyZWF0ZVZpZXcocGFuZWwpOwogICAg
ICAgICByZXR1cm4gdGhpcy5fdmlldzsKICAgICB9LAogCiAgICAgLyoqCi0gICAgICogQHBhcmFt
IHtXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbH0gcHJvZmlsZXNQYW5lbAorICAgICAqIEBwYXJh
bSB7IVdlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVsfSBwYW5lbAogICAgICAqIEByZXR1cm4geyFX
ZWJJbnNwZWN0b3IuVmlld30KICAgICAgKi8KLSAgICBjcmVhdGVWaWV3OiBmdW5jdGlvbihwcm9m
aWxlc1BhbmVsKQorICAgIGNyZWF0ZVZpZXc6IGZ1bmN0aW9uKHBhbmVsKQogICAgIHsKICAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCJOb3QgaW1wbGVtZW50ZWQuIik7CiAgICAgfSwKQEAgLTMzMSwx
MSArMzMyLDE0IEBAIFdlYkluc3BlY3Rvci5Qcm9maWxlSGVhZGVyLnByb3RvdHlwZSA9IHsKICAq
IEBjb25zdHJ1Y3RvcgogICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5QYW5lbH0KICAqIEBpbXBs
ZW1lbnRzIHtXZWJJbnNwZWN0b3IuQ29udGV4dE1lbnUuUHJvdmlkZXJ9CisgKiBAcGFyYW0ge3N0
cmluZz19IG5hbWUKICAqLwotV2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwgPSBmdW5jdGlvbigp
CitXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbCA9IGZ1bmN0aW9uKG5hbWUpCiB7Ci0gICAgV2Vi
SW5zcGVjdG9yLlBhbmVsLmNhbGwodGhpcywgInByb2ZpbGVzIik7Ci0gICAgV2ViSW5zcGVjdG9y
LlByb2ZpbGVzUGFuZWwuX2luc3RhbmNlID0gdGhpczsKKyAgICAvLyBJZiB0aGUgbmFtZSBpcyBu
b3Qgc3BlY2lmaWVkIHRoZSBQcm9maWxlc1BhbmVsIHdvcmtzIGluIG11bHRpLXByb2ZpbGUgbW9k
ZS4KKyAgICB2YXIgc2luZ2xlUHJvZmlsZU1vZGUgPSB0eXBlb2YgbmFtZSAhPT0gInVuZGVmaW5l
ZCI7CisgICAgbmFtZSA9IG5hbWUgfHwgInByb2ZpbGVzIjsKKyAgICBXZWJJbnNwZWN0b3IuUGFu
ZWwuY2FsbCh0aGlzLCBuYW1lKTsKICAgICB0aGlzLnJlZ2lzdGVyUmVxdWlyZWRDU1MoInBhbmVs
RW5hYmxlclZpZXcuY3NzIik7CiAgICAgdGhpcy5yZWdpc3RlclJlcXVpcmVkQ1NTKCJoZWFwUHJv
ZmlsZXIuY3NzIik7CiAgICAgdGhpcy5yZWdpc3RlclJlcXVpcmVkQ1NTKCJwcm9maWxlc1BhbmVs
LmNzcyIpOwpAQCAtMzQ1LDEyICszNDksMTMgQEAgV2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwg
PSBmdW5jdGlvbigpCiAgICAgdGhpcy5wcm9maWxlc0l0ZW1UcmVlRWxlbWVudCA9IG5ldyBXZWJJ
bnNwZWN0b3IuUHJvZmlsZXNTaWRlYmFyVHJlZUVsZW1lbnQodGhpcyk7CiAgICAgdGhpcy5zaWRl
YmFyVHJlZS5hcHBlbmRDaGlsZCh0aGlzLnByb2ZpbGVzSXRlbVRyZWVFbGVtZW50KTsKIAorICAg
IHRoaXMuX3NpbmdsZVByb2ZpbGVNb2RlID0gc2luZ2xlUHJvZmlsZU1vZGU7CiAgICAgdGhpcy5f
cHJvZmlsZVR5cGVzQnlJZE1hcCA9IHt9OwogCiAgICAgdmFyIHBhbmVsRW5hYmxlckhlYWRpbmcg
PSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIllvdSBuZWVkIHRvIGVuYWJsZSBwcm9maWxpbmcgYmVm
b3JlIHlvdSBjYW4gdXNlIHRoZSBQcm9maWxlcyBwYW5lbC4iKTsKICAgICB2YXIgcGFuZWxFbmFi
bGVyRGlzY2xhaW1lciA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiRW5hYmxpbmcgcHJvZmlsaW5n
IHdpbGwgbWFrZSBzY3JpcHRzIHJ1biBzbG93ZXIuIik7CiAgICAgdmFyIHBhbmVsRW5hYmxlckJ1
dHRvbiA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiRW5hYmxlIFByb2ZpbGluZyIpOwotICAgIHRo
aXMucGFuZWxFbmFibGVyVmlldyA9IG5ldyBXZWJJbnNwZWN0b3IuUGFuZWxFbmFibGVyVmlldygi
cHJvZmlsZXMiLCBwYW5lbEVuYWJsZXJIZWFkaW5nLCBwYW5lbEVuYWJsZXJEaXNjbGFpbWVyLCBw
YW5lbEVuYWJsZXJCdXR0b24pOworICAgIHRoaXMucGFuZWxFbmFibGVyVmlldyA9IG5ldyBXZWJJ
bnNwZWN0b3IuUGFuZWxFbmFibGVyVmlldyhuYW1lLCBwYW5lbEVuYWJsZXJIZWFkaW5nLCBwYW5l
bEVuYWJsZXJEaXNjbGFpbWVyLCBwYW5lbEVuYWJsZXJCdXR0b24pOwogICAgIHRoaXMucGFuZWxF
bmFibGVyVmlldy5hZGRFdmVudExpc3RlbmVyKCJlbmFibGUgY2xpY2tlZCIsIHRoaXMuZW5hYmxl
UHJvZmlsZXIsIHRoaXMpOwogCiAgICAgdGhpcy5wcm9maWxlVmlld3MgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJkaXYiKTsKQEAgLTM4NiwyMSArMzkxLDIzIEBAIFdlYkluc3BlY3Rvci5Qcm9m
aWxlc1BhbmVsID0gZnVuY3Rpb24oKQogCiAgICAgdGhpcy5fcHJvZmlsZXJFbmFibGVkID0gIUNh
cGFiaWxpdGllcy5wcm9maWxlckNhdXNlc1JlY29tcGlsYXRpb247CiAKLSAgICB0aGlzLl9sYXVu
Y2hlclZpZXcgPSBuZXcgV2ViSW5zcGVjdG9yLlByb2ZpbGVMYXVuY2hlclZpZXcodGhpcyk7Cisg
ICAgdGhpcy5fbGF1bmNoZXJWaWV3ID0gbmV3IFdlYkluc3BlY3Rvci5Qcm9maWxlTGF1bmNoZXJW
aWV3KHRoaXMsIHNpbmdsZVByb2ZpbGVNb2RlKTsKICAgICB0aGlzLl9sYXVuY2hlclZpZXcuYWRk
RXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuUHJvZmlsZUxhdW5jaGVyVmlldy5FdmVudFR5cGVz
LlByb2ZpbGVUeXBlU2VsZWN0ZWQsIHRoaXMuX29uUHJvZmlsZVR5cGVTZWxlY3RlZCwgdGhpcyk7
CiAgICAgdGhpcy5fcmVzZXQoKTsKIAotICAgIHRoaXMuX3JlZ2lzdGVyUHJvZmlsZVR5cGUobmV3
IFdlYkluc3BlY3Rvci5DUFVQcm9maWxlVHlwZSgpKTsKLSAgICBpZiAoIVdlYkluc3BlY3Rvci5X
b3JrZXJNYW5hZ2VyLmlzV29ya2VyRnJvbnRlbmQoKSkKLSAgICAgICAgdGhpcy5fcmVnaXN0ZXJQ
cm9maWxlVHlwZShuZXcgV2ViSW5zcGVjdG9yLkNTU1NlbGVjdG9yUHJvZmlsZVR5cGUoKSk7Ci0g
ICAgaWYgKENhcGFiaWxpdGllcy5oZWFwUHJvZmlsZXJQcmVzZW50KQotICAgICAgICB0aGlzLl9y
ZWdpc3RlclByb2ZpbGVUeXBlKG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UHJvZmlsZVR5
cGUoKSk7Ci0gICAgaWYgKFdlYkluc3BlY3Rvci5leHBlcmltZW50c1NldHRpbmdzLm5hdGl2ZU1l
bW9yeVNuYXBzaG90cy5pc0VuYWJsZWQoKSkgewotICAgICAgICB0aGlzLl9yZWdpc3RlclByb2Zp
bGVUeXBlKG5ldyBXZWJJbnNwZWN0b3IuTmF0aXZlTWVtb3J5UHJvZmlsZVR5cGUoKSk7Ci0gICAg
ICAgIHRoaXMuX3JlZ2lzdGVyUHJvZmlsZVR5cGUobmV3IFdlYkluc3BlY3Rvci5OYXRpdmVTbmFw
c2hvdFByb2ZpbGVUeXBlKCkpOworICAgIGlmICghc2luZ2xlUHJvZmlsZU1vZGUpIHsKKyAgICAg
ICAgdGhpcy5fcmVnaXN0ZXJQcm9maWxlVHlwZShuZXcgV2ViSW5zcGVjdG9yLkNQVVByb2ZpbGVU
eXBlKCkpOworICAgICAgICBpZiAoIVdlYkluc3BlY3Rvci5Xb3JrZXJNYW5hZ2VyLmlzV29ya2Vy
RnJvbnRlbmQoKSkKKyAgICAgICAgICAgIHRoaXMuX3JlZ2lzdGVyUHJvZmlsZVR5cGUobmV3IFdl
Ykluc3BlY3Rvci5DU1NTZWxlY3RvclByb2ZpbGVUeXBlKCkpOworICAgICAgICBpZiAoQ2FwYWJp
bGl0aWVzLmhlYXBQcm9maWxlclByZXNlbnQpCisgICAgICAgICAgICB0aGlzLl9yZWdpc3RlclBy
b2ZpbGVUeXBlKG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UHJvZmlsZVR5cGUoKSk7Cisg
ICAgICAgIGlmIChXZWJJbnNwZWN0b3IuZXhwZXJpbWVudHNTZXR0aW5ncy5uYXRpdmVNZW1vcnlT
bmFwc2hvdHMuaXNFbmFibGVkKCkpIHsKKyAgICAgICAgICAgIHRoaXMuX3JlZ2lzdGVyUHJvZmls
ZVR5cGUobmV3IFdlYkluc3BlY3Rvci5OYXRpdmVTbmFwc2hvdFByb2ZpbGVUeXBlKCkpOworICAg
ICAgICAgICAgdGhpcy5fcmVnaXN0ZXJQcm9maWxlVHlwZShuZXcgV2ViSW5zcGVjdG9yLk5hdGl2
ZU1lbW9yeVByb2ZpbGVUeXBlKCkpOworICAgICAgICB9CisgICAgICAgIGlmIChXZWJJbnNwZWN0
b3IuZXhwZXJpbWVudHNTZXR0aW5ncy5jYW52YXNJbnNwZWN0aW9uLmlzRW5hYmxlZCgpKQorICAg
ICAgICAgICAgdGhpcy5fcmVnaXN0ZXJQcm9maWxlVHlwZShuZXcgV2ViSW5zcGVjdG9yLkNhbnZh
c1Byb2ZpbGVUeXBlKCkpOwogICAgIH0KLSAgICBpZiAoV2ViSW5zcGVjdG9yLmV4cGVyaW1lbnRz
U2V0dGluZ3MuY2FudmFzSW5zcGVjdGlvbi5pc0VuYWJsZWQoKSkKLSAgICAgICAgdGhpcy5fcmVn
aXN0ZXJQcm9maWxlVHlwZShuZXcgV2ViSW5zcGVjdG9yLkNhbnZhc1Byb2ZpbGVUeXBlKCkpOwog
CiAgICAgdGhpcy5fY3JlYXRlRmlsZVNlbGVjdG9yRWxlbWVudCgpOwogICAgIHRoaXMuZWxlbWVu
dC5hZGRFdmVudExpc3RlbmVyKCJjb250ZXh0bWVudSIsIHRoaXMuX2hhbmRsZUNvbnRleHRNZW51
RXZlbnQuYmluZCh0aGlzKSwgdHJ1ZSk7CkBAIC01NjksNyArNTc2LDcgQEAgV2ViSW5zcGVjdG9y
LlByb2ZpbGVzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9wcm9maWxlVHlwZXNC
eUlkTWFwW3Byb2ZpbGVUeXBlLmlkXSA9IHByb2ZpbGVUeXBlOwogICAgICAgICB0aGlzLl9sYXVu
Y2hlclZpZXcuYWRkUHJvZmlsZVR5cGUocHJvZmlsZVR5cGUpOwogICAgICAgICBwcm9maWxlVHlw
ZS50cmVlRWxlbWVudCA9IG5ldyBXZWJJbnNwZWN0b3IuU2lkZWJhclNlY3Rpb25UcmVlRWxlbWVu
dChwcm9maWxlVHlwZS50cmVlSXRlbVRpdGxlLCBudWxsLCB0cnVlKTsKLSAgICAgICAgcHJvZmls
ZVR5cGUudHJlZUVsZW1lbnQuaGlkZGVuID0gdHJ1ZTsKKyAgICAgICAgcHJvZmlsZVR5cGUudHJl
ZUVsZW1lbnQuaGlkZGVuID0gIXRoaXMuX3NpbmdsZVByb2ZpbGVNb2RlOwogICAgICAgICB0aGlz
LnNpZGViYXJUcmVlLmFwcGVuZENoaWxkKHByb2ZpbGVUeXBlLnRyZWVFbGVtZW50KTsKICAgICAg
ICAgcHJvZmlsZVR5cGUudHJlZUVsZW1lbnQuY2hpbGRyZW5MaXN0RWxlbWVudC5hZGRFdmVudExp
c3RlbmVyKCJjb250ZXh0bWVudSIsIHRoaXMuX2hhbmRsZUNvbnRleHRNZW51RXZlbnQuYmluZCh0
aGlzKSwgdHJ1ZSk7CiAgICAgICAgIGZ1bmN0aW9uIG9uQWRkUHJvZmlsZUhlYWRlcihldmVudCkK
QEAgLTYwMSw3ICs2MDgsNyBAQCBXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbC5wcm90b3R5cGUg
PSB7CiAgICAgICAgIGlmICghZWxlbWVudCkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
aWYgKGVsZW1lbnQudHJlZUVsZW1lbnQgJiYgZWxlbWVudC50cmVlRWxlbWVudC5oYW5kbGVDb250
ZXh0TWVudUV2ZW50KSB7Ci0gICAgICAgICAgICBlbGVtZW50LnRyZWVFbGVtZW50LmhhbmRsZUNv
bnRleHRNZW51RXZlbnQoZXZlbnQpOworICAgICAgICAgICAgZWxlbWVudC50cmVlRWxlbWVudC5o
YW5kbGVDb250ZXh0TWVudUV2ZW50KGV2ZW50LCB0aGlzKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogICAgICAgICBpZiAoZWxlbWVudCAhPT0gdGhpcy5lbGVtZW50IHx8IGV2ZW50
LnNyY0VsZW1lbnQgPT09IHRoaXMuc2lkZWJhckVsZW1lbnQpIHsKQEAgLTY0OSw3ICs2NTYsNyBA
QCBXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBn
cm91cC5wdXNoKHByb2ZpbGUpOwogICAgICAgICAgICAgaWYgKGdyb3VwLmxlbmd0aCA9PT0gMikg
ewogICAgICAgICAgICAgICAgIC8vIE1ha2UgYSBncm91cCBUcmVlRWxlbWVudCBub3cgdGhhdCB0
aGVyZSBhcmUgMiBwcm9maWxlcy4KLSAgICAgICAgICAgICAgICBncm91cC5fcHJvZmlsZXNUcmVl
RWxlbWVudCA9IG5ldyBXZWJJbnNwZWN0b3IuUHJvZmlsZUdyb3VwU2lkZWJhclRyZWVFbGVtZW50
KHByb2ZpbGUudGl0bGUpOworICAgICAgICAgICAgICAgIGdyb3VwLl9wcm9maWxlc1RyZWVFbGVt
ZW50ID0gbmV3IFdlYkluc3BlY3Rvci5Qcm9maWxlR3JvdXBTaWRlYmFyVHJlZUVsZW1lbnQodGhp
cywgcHJvZmlsZS50aXRsZSk7CiAKICAgICAgICAgICAgICAgICAvLyBJbnNlcnQgYXQgdGhlIHNh
bWUgaW5kZXggZm9yIHRoZSBmaXJzdCBwcm9maWxlIG9mIHRoZSBncm91cC4KICAgICAgICAgICAg
ICAgICB2YXIgaW5kZXggPSBzaWRlYmFyUGFyZW50LmNoaWxkcmVuLmluZGV4T2YoZ3JvdXBbMF0u
X3Byb2ZpbGVzVHJlZUVsZW1lbnQpOwpAQCAtNzI1LDcgKzczMiw3IEBAIFdlYkluc3BlY3Rvci5Q
cm9maWxlc1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKCFzaWRlYmFyUGFyZW50LmNo
aWxkcmVuLmxlbmd0aCkgewogICAgICAgICAgICAgdGhpcy5wcm9maWxlc0l0ZW1UcmVlRWxlbWVu
dC5zZWxlY3QoKTsKICAgICAgICAgICAgIHRoaXMuX3Nob3dMYXVuY2hlclZpZXcoKTsKLSAgICAg
ICAgICAgIHNpZGViYXJQYXJlbnQuaGlkZGVuID0gdHJ1ZTsKKyAgICAgICAgICAgIHNpZGViYXJQ
YXJlbnQuaGlkZGVuID0gIXRoaXMuX3NpbmdsZVByb2ZpbGVNb2RlOwogICAgICAgICB9CiAgICAg
fSwKIApAQCAtNzM3LDcgKzc0NCw3IEBAIFdlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVsLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgaWYgKCFwcm9maWxlIHx8IHByb2ZpbGUuaXNUZW1wb3JhcnkpCiAg
ICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgdmFyIHZpZXcgPSBwcm9maWxlLnZpZXcoKTsK
KyAgICAgICAgdmFyIHZpZXcgPSBwcm9maWxlLnZpZXcodGhpcyk7CiAgICAgICAgIGlmICh2aWV3
ID09PSB0aGlzLnZpc2libGVWaWV3KQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC03NzEsOCAr
Nzc4LDkgQEAgV2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwucHJvdG90eXBlID0gewogICAgICAg
ICAgICAgLy8gRklYTUU6IGFsbG93IHRvIGNob29zZSBzbmFwc2hvdCBpZiB0aGVyZSBhcmUgc2V2
ZXJhbCBvcHRpb25zLgogICAgICAgICAgICAgaWYgKHByb2ZpbGUubWF4SlNPYmplY3RJZCA+PSBz
bmFwc2hvdE9iamVjdElkKSB7CiAgICAgICAgICAgICAgICAgdGhpcy5fc2hvd1Byb2ZpbGUocHJv
ZmlsZSk7Ci0gICAgICAgICAgICAgICAgcHJvZmlsZS52aWV3KCkuY2hhbmdlVmlldyh2aWV3TmFt
ZSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgICAgIHByb2ZpbGUudmlldygpLmRhdGFH
cmlkLmhpZ2hsaWdodE9iamVjdEJ5SGVhcFNuYXBzaG90SWQoc25hcHNob3RPYmplY3RJZCk7Cisg
ICAgICAgICAgICAgICAgdmFyIHZpZXcgPSBwcm9maWxlLnZpZXcodGhpcyk7CisgICAgICAgICAg
ICAgICAgdmlldy5jaGFuZ2VWaWV3KHZpZXdOYW1lLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAg
ICAgICAgICAgdmlldy5kYXRhR3JpZC5oaWdobGlnaHRPYmplY3RCeUhlYXBTbmFwc2hvdElkKHNu
YXBzaG90T2JqZWN0SWQpOwogICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgfQpAQCAtMTAwNyw3ICsxMDE1LDcgQEAgV2ViSW5zcGVjdG9yLlBy
b2ZpbGVzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB2YXIgcHJvZmlsZXMgPSB0aGlzLl9n
ZXRBbGxQcm9maWxlcygpOwogICAgICAgICB2YXIgc2VhcmNoYWJsZVZpZXdzID0gW107CiAgICAg
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcHJvZmlsZXMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAg
ICAgIHZhciB2aWV3ID0gcHJvZmlsZXNbaV0udmlldygpOworICAgICAgICAgICAgdmFyIHZpZXcg
PSBwcm9maWxlc1tpXS52aWV3KHRoaXMpOwogICAgICAgICAgICAgaWYgKHZpZXcucGVyZm9ybVNl
YXJjaCkKICAgICAgICAgICAgICAgICBzZWFyY2hhYmxlVmlld3MucHVzaCh2aWV3KQogICAgICAg
ICB9CkBAIC0xMjY3LDE5ICsxMjc1LDE5IEBAIFdlYkluc3BlY3Rvci5Qcm9maWxlU2lkZWJhclRy
ZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKIAogICAgIC8qKgogICAgICAqIEBwYXJhbSB7IUV2ZW50
fSBldmVudAorICAgICAqIEBwYXJhbSB7IVdlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVsfSBwYW5l
bAogICAgICAqLwotICAgIGhhbmRsZUNvbnRleHRNZW51RXZlbnQ6IGZ1bmN0aW9uKGV2ZW50KQor
ICAgIGhhbmRsZUNvbnRleHRNZW51RXZlbnQ6IGZ1bmN0aW9uKGV2ZW50LCBwYW5lbCkKICAgICB7
CiAgICAgICAgIHZhciBwcm9maWxlID0gdGhpcy5wcm9maWxlOwogICAgICAgICB2YXIgY29udGV4
dE1lbnUgPSBuZXcgV2ViSW5zcGVjdG9yLkNvbnRleHRNZW51KGV2ZW50KTsKLSAgICAgICAgdmFy
IHByb2ZpbGVzUGFuZWwgPSBXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbC5faW5zdGFuY2U7CiAg
ICAgICAgIC8vIEZJWE1FOiB1c2UgY29udGV4dCBtZW51IHByb3ZpZGVyCiAgICAgICAgIGlmIChw
cm9maWxlLmNhblNhdmVUb0ZpbGUoKSkgewogICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5k
SXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNhdmUgSGVhcCBTbmFwc2hvdFx1MjAyNiIpLCBw
cm9maWxlLnNhdmVUb0ZpbGUuYmluZChwcm9maWxlKSk7Ci0gICAgICAgICAgICBjb250ZXh0TWVu
dS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZygiTG9hZCBIZWFwIFNuYXBzaG90XHUy
MDI2IiksIHByb2ZpbGVzUGFuZWwuX2ZpbGVTZWxlY3RvckVsZW1lbnQuY2xpY2suYmluZChwcm9m
aWxlc1BhbmVsLl9maWxlU2VsZWN0b3JFbGVtZW50KSk7CisgICAgICAgICAgICBjb250ZXh0TWVu
dS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZygiTG9hZCBIZWFwIFNuYXBzaG90XHUy
MDI2IiksIHBhbmVsLl9maWxlU2VsZWN0b3JFbGVtZW50LmNsaWNrLmJpbmQocGFuZWwuX2ZpbGVT
ZWxlY3RvckVsZW1lbnQpKTsKICAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJEZWxldGUgSGVhcCBTbmFwc2hvdCIpLCB0aGlzLm9uZGVsZXRl
LmJpbmQodGhpcykpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgY29udGV4dE1lbnUu
YXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkxvYWQgSGVhcCBTbmFwc2hvdFx1MjAy
NiIpLCBwcm9maWxlc1BhbmVsLl9maWxlU2VsZWN0b3JFbGVtZW50LmNsaWNrLmJpbmQocHJvZmls
ZXNQYW5lbC5fZmlsZVNlbGVjdG9yRWxlbWVudCkpOworICAgICAgICAgICAgY29udGV4dE1lbnUu
YXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkxvYWQgSGVhcCBTbmFwc2hvdFx1MjAy
NiIpLCBwYW5lbC5fZmlsZVNlbGVjdG9yRWxlbWVudC5jbGljay5iaW5kKHBhbmVsLl9maWxlU2Vs
ZWN0b3JFbGVtZW50KSk7CiAgICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYklu
c3BlY3Rvci5VSVN0cmluZygiRGVsZXRlIHByb2ZpbGUiKSwgdGhpcy5vbmRlbGV0ZS5iaW5kKHRo
aXMpKTsKICAgICAgICAgfQogICAgICAgICBjb250ZXh0TWVudS5zaG93KCk7CkBAIC0xMjkxLDE5
ICsxMjk5LDIxIEBAIFdlYkluc3BlY3Rvci5Qcm9maWxlU2lkZWJhclRyZWVFbGVtZW50LnByb3Rv
dHlwZSA9IHsKIC8qKgogICogQGNvbnN0cnVjdG9yCiAgKiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9y
LlNpZGViYXJUcmVlRWxlbWVudH0KKyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFu
ZWx9IHBhbmVsCiAgKiBAcGFyYW0ge3N0cmluZ30gdGl0bGUKICAqIEBwYXJhbSB7c3RyaW5nPX0g
c3VidGl0bGUKICAqLwotV2ViSW5zcGVjdG9yLlByb2ZpbGVHcm91cFNpZGViYXJUcmVlRWxlbWVu
dCA9IGZ1bmN0aW9uKHRpdGxlLCBzdWJ0aXRsZSkKK1dlYkluc3BlY3Rvci5Qcm9maWxlR3JvdXBT
aWRlYmFyVHJlZUVsZW1lbnQgPSBmdW5jdGlvbihwYW5lbCwgdGl0bGUsIHN1YnRpdGxlKQogewog
ICAgIFdlYkluc3BlY3Rvci5TaWRlYmFyVHJlZUVsZW1lbnQuY2FsbCh0aGlzLCAicHJvZmlsZS1n
cm91cC1zaWRlYmFyLXRyZWUtaXRlbSIsIHRpdGxlLCBzdWJ0aXRsZSwgbnVsbCwgdHJ1ZSk7Cisg
ICAgdGhpcy5fcGFuZWwgPSBwYW5lbDsKIH0KIAogV2ViSW5zcGVjdG9yLlByb2ZpbGVHcm91cFNp
ZGViYXJUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgb25zZWxlY3Q6IGZ1bmN0aW9uKCkK
ICAgICB7CiAgICAgICAgIGlmICh0aGlzLmNoaWxkcmVuLmxlbmd0aCA+IDApCi0gICAgICAgICAg
ICBXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbC5faW5zdGFuY2UuX3Nob3dQcm9maWxlKHRoaXMu
Y2hpbGRyZW5bdGhpcy5jaGlsZHJlbi5sZW5ndGggLSAxXS5wcm9maWxlKTsKKyAgICAgICAgICAg
IHRoaXMuX3BhbmVsLl9zaG93UHJvZmlsZSh0aGlzLmNoaWxkcmVuW3RoaXMuY2hpbGRyZW4ubGVu
Z3RoIC0gMV0ucHJvZmlsZSk7CiAgICAgfSwKIAogICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9y
LlNpZGViYXJUcmVlRWxlbWVudC5wcm90b3R5cGUKQEAgLTEzMzYsNiArMTM0Niw4NSBAQCBXZWJJ
bnNwZWN0b3IuUHJvZmlsZXNTaWRlYmFyVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgIF9f
cHJvdG9fXzogV2ViSW5zcGVjdG9yLlNpZGViYXJUcmVlRWxlbWVudC5wcm90b3R5cGUKIH0KIAor
CisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5Qcm9maWxl
c1BhbmVsfQorICovCitXZWJJbnNwZWN0b3IuQ1BVUHJvZmlsZXJQYW5lbCA9IGZ1bmN0aW9uKCkK
K3sKKyAgICBXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbC5jYWxsKHRoaXMsICJjcHUtcHJvZmls
ZXIiKTsKKyAgICB0aGlzLl9yZWdpc3RlclByb2ZpbGVUeXBlKG5ldyBXZWJJbnNwZWN0b3IuQ1BV
UHJvZmlsZVR5cGUoKSk7Cit9CisKK1dlYkluc3BlY3Rvci5DUFVQcm9maWxlclBhbmVsLnByb3Rv
dHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbC5wcm90b3R5cGU7CisK
KworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBleHRlbmRzIHtXZWJJbnNwZWN0b3IuUHJvZmls
ZXNQYW5lbH0KKyAqLworV2ViSW5zcGVjdG9yLkNTU1NlbGVjdG9yUHJvZmlsZXJQYW5lbCA9IGZ1
bmN0aW9uKCkKK3sKKyAgICBXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbC5jYWxsKHRoaXMsICJj
c3MtcHJvZmlsZXIiKTsKKyAgICB0aGlzLl9yZWdpc3RlclByb2ZpbGVUeXBlKG5ldyBXZWJJbnNw
ZWN0b3IuQ1NTU2VsZWN0b3JQcm9maWxlVHlwZSgpKTsKK30KKworV2ViSW5zcGVjdG9yLkNTU1Nl
bGVjdG9yUHJvZmlsZXJQYW5lbC5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLlBy
b2ZpbGVzUGFuZWwucHJvdG90eXBlOworCisKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKiBAZXh0
ZW5kcyB7V2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFuZWx9CisgKi8KK1dlYkluc3BlY3Rvci5IZWFw
UHJvZmlsZXJQYW5lbCA9IGZ1bmN0aW9uKCkKK3sKKyAgICBXZWJJbnNwZWN0b3IuUHJvZmlsZXNQ
YW5lbC5jYWxsKHRoaXMsICJoZWFwLXByb2ZpbGVyIik7CisgICAgdGhpcy5fcmVnaXN0ZXJQcm9m
aWxlVHlwZShuZXcgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFByb2ZpbGVUeXBlKCkpOworfQor
CitXZWJJbnNwZWN0b3IuSGVhcFByb2ZpbGVyUGFuZWwucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdl
Ykluc3BlY3Rvci5Qcm9maWxlc1BhbmVsLnByb3RvdHlwZTsKKworCisvKioKKyAqIEBjb25zdHJ1
Y3RvcgorICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVsfQorICovCitXZWJJ
bnNwZWN0b3IuQ2FudmFzUHJvZmlsZXJQYW5lbCA9IGZ1bmN0aW9uKCkKK3sKKyAgICBXZWJJbnNw
ZWN0b3IuUHJvZmlsZXNQYW5lbC5jYWxsKHRoaXMsICJjYW52YXMtcHJvZmlsZXIiKTsKKyAgICB0
aGlzLl9yZWdpc3RlclByb2ZpbGVUeXBlKG5ldyBXZWJJbnNwZWN0b3IuQ2FudmFzUHJvZmlsZVR5
cGUoKSk7Cit9CisKK1dlYkluc3BlY3Rvci5DYW52YXNQcm9maWxlclBhbmVsLnByb3RvdHlwZS5f
X3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbC5wcm90b3R5cGU7CisKKworLyoq
CisgKiBAY29uc3RydWN0b3IKKyAqIEBleHRlbmRzIHtXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5l
bH0KKyAqLworV2ViSW5zcGVjdG9yLk1lbW9yeUNoYXJ0UHJvZmlsZXJQYW5lbCA9IGZ1bmN0aW9u
KCkKK3sKKyAgICBXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbC5jYWxsKHRoaXMsICJtZW1vcnkt
Y2hhcnQtcHJvZmlsZXIiKTsKKyAgICB0aGlzLl9yZWdpc3RlclByb2ZpbGVUeXBlKG5ldyBXZWJJ
bnNwZWN0b3IuTmF0aXZlTWVtb3J5UHJvZmlsZVR5cGUoKSk7Cit9CisKK1dlYkluc3BlY3Rvci5N
ZW1vcnlDaGFydFByb2ZpbGVyUGFuZWwucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rv
ci5Qcm9maWxlc1BhbmVsLnByb3RvdHlwZTsKKworCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICog
QGV4dGVuZHMge1dlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVsfQorICovCitXZWJJbnNwZWN0b3Iu
TmF0aXZlTWVtb3J5UHJvZmlsZXJQYW5lbCA9IGZ1bmN0aW9uKCkKK3sKKyAgICBXZWJJbnNwZWN0
b3IuUHJvZmlsZXNQYW5lbC5jYWxsKHRoaXMsICJtZW1vcnktc25hcHNob3QtcHJvZmlsZXIiKTsK
KyAgICB0aGlzLl9yZWdpc3RlclByb2ZpbGVUeXBlKG5ldyBXZWJJbnNwZWN0b3IuTmF0aXZlU25h
cHNob3RQcm9maWxlVHlwZSgpKTsKK30KKworV2ViSW5zcGVjdG9yLk5hdGl2ZU1lbW9yeVByb2Zp
bGVyUGFuZWwucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVs
LnByb3RvdHlwZTsKKworCiBpbXBvcnRTY3JpcHQoIlByb2ZpbGVEYXRhR3JpZFRyZWUuanMiKTsK
IGltcG9ydFNjcmlwdCgiQm90dG9tVXBQcm9maWxlRGF0YUdyaWRUcmVlLmpzIik7CiBpbXBvcnRT
Y3JpcHQoIkNQVVByb2ZpbGVWaWV3LmpzIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdzLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9TZXR0aW5ncy5qcwppbmRleCAxZTVlMjg3NTUxODQzNzgwOGY1OGJjMTFkNjQx
ZGM0YWIxMTIyMTVhLi5hZDY5ODVkYTMyNmViMTcwNTEyZTgxM2Q3NDY4ZTA3NWNhNGJlNjRlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdzLmpz
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3MuanMKQEAg
LTIxNSw2ICsyMTUsNyBAQCBXZWJJbnNwZWN0b3IuRXhwZXJpbWVudHNTZXR0aW5ncyA9IGZ1bmN0
aW9uKCkKICAgICB0aGlzLmZpbGVTeXN0ZW1Qcm9qZWN0ID0gdGhpcy5fY3JlYXRlRXhwZXJpbWVu
dCgiZmlsZVN5c3RlbVByb2plY3QiLCAiRmlsZSBzeXN0ZW0gZm9sZGVycyBpbiBTb3VyY2VzIFBh
bmVsIik7CiAgICAgdGhpcy5zaG93V2hpdGVzcGFjZUluRWRpdG9yID0gdGhpcy5fY3JlYXRlRXhw
ZXJpbWVudCgic2hvd1doaXRlc3BhY2VJbkVkaXRvciIsICJTaG93IHdoaXRlc3BhY2UgY2hhcmFj
dGVycyBpbiBlZGl0b3IiKTsKICAgICB0aGlzLnRleHRFZGl0b3JTbWFydEJyYWNlcyA9IHRoaXMu
X2NyZWF0ZUV4cGVyaW1lbnQoInRleHRFZGl0b3JTbWFydEJyYWNlcyIsICJFbmFibGUgc21hcnQg
YnJhY2VzIGluIHRleHQgZWRpdG9yIik7CisgICAgdGhpcy5zZXBhcmF0ZVByb2ZpbGVycyA9IHRo
aXMuX2NyZWF0ZUV4cGVyaW1lbnQoInNlcGFyYXRlUHJvZmlsZXJzIiwgIlNlcGFyYXRlIHByb2Zp
bGVyIHRvb2xzIik7CiAKICAgICB0aGlzLl9jbGVhblVwU2V0dGluZygpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuY3NzIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuY3NzCmluZGV4IDIyNDUz
NjQ0MzliZTAwMzViZTcxMDU3N2E4ZmNiMTI0ZGExYzE4ZTIuLjFmMGFjNWVlNzJiMDUwNThlMTFh
MzMwNWM4MTM1MjlkNGNjZDgyZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvaW5zcGVjdG9yLmNzcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL2luc3BlY3Rvci5jc3MKQEAgLTQ3NSw2ICs0NzUsMzAgQEAgYm9keS5kb2NrLXRv
LWJvdHRvbSAudG9vbGJhci1pdGVtLnRpbWVsaW5lIC50b29sYmFyLWljb24gewogICAgIGJhY2tn
cm91bmQtcG9zaXRpb24teDogLTE2MHB4OwogfQogCisudG9vbGJhci1pdGVtLmNwdS1wcm9maWxl
ciAudG9vbGJhci1pY29uIHsKKyAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uLXg6IC0xNjBweDsKK30K
KworLnRvb2xiYXItaXRlbS5jc3MtcHJvZmlsZXIgLnRvb2xiYXItaWNvbiB7CisgICAgYmFja2dy
b3VuZC1wb3NpdGlvbi14OiAtMTYwcHg7Cit9CisKKy50b29sYmFyLWl0ZW0uaGVhcC1wcm9maWxl
ciAudG9vbGJhci1pY29uIHsKKyAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uLXg6IC0xNjBweDsKK30K
KworLnRvb2xiYXItaXRlbS5jYW52YXMtcHJvZmlsZXIgLnRvb2xiYXItaWNvbiB7CisgICAgYmFj
a2dyb3VuZC1wb3NpdGlvbi14OiAtMTYwcHg7Cit9CisKKy50b29sYmFyLWl0ZW0ubWVtb3J5LWNo
YXJ0LXByb2ZpbGVyIC50b29sYmFyLWljb24geworICAgIGJhY2tncm91bmQtcG9zaXRpb24teDog
LTE2MHB4OworfQorCisudG9vbGJhci1pdGVtLm1lbW9yeS1zbmFwc2hvdC1wcm9maWxlciAudG9v
bGJhci1pY29uIHsKKyAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uLXg6IC0xNjBweDsKK30KKwogYm9k
eS5kb2NrLXRvLWJvdHRvbSAudG9vbGJhci1pdGVtLnByb2ZpbGVzIC50b29sYmFyLWljb24gewog
ICAgIGJhY2tncm91bmQtcG9zaXRpb24teDogLTEyMHB4OwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcwppbmRleCAxNGM4Y2RiODA3NTNjODlm
OGU3ODdmNWVlNjE3YzUyZTk2ODMzODM3Li5lMmMwY2NhMmRlNjAwMDRhZjBhMDRkZjMxZTM4NTAw
ZWM5N2M3OGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L2luc3BlY3Rvci5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2lu
c3BlY3Rvci5qcwpAQCAtNDYsMTIgKzQ2LDI4IEBAIHZhciBXZWJJbnNwZWN0b3IgPSB7CiAgICAg
ICAgIHZhciBhdWRpdHMgPSBuZXcgV2ViSW5zcGVjdG9yLlBhbmVsRGVzY3JpcHRvcigiYXVkaXRz
IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJBdWRpdHMiKSwgIkF1ZGl0c1BhbmVsIiwgIkF1ZGl0
c1BhbmVsLmpzIik7CiAgICAgICAgIHZhciBjb25zb2xlID0gbmV3IFdlYkluc3BlY3Rvci5QYW5l
bERlc2NyaXB0b3IoImNvbnNvbGUiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNvbnNvbGUiKSwg
IkNvbnNvbGVQYW5lbCIpOwogICAgICAgICB2YXIgYWxsRGVzY3JpcHRvcnMgPSBbZWxlbWVudHMs
IHJlc291cmNlcywgbmV0d29yaywgc2NyaXB0cywgdGltZWxpbmUsIHByb2ZpbGVzLCBhdWRpdHMs
IGNvbnNvbGVdOworICAgICAgICB2YXIgYWxsUHJvZmlsZXJzID0gW3Byb2ZpbGVzXTsKKyAgICAg
ICAgaWYgKFdlYkluc3BlY3Rvci5leHBlcmltZW50c1NldHRpbmdzLnNlcGFyYXRlUHJvZmlsZXJz
LmlzRW5hYmxlZCgpKSB7CisgICAgICAgICAgICBhbGxQcm9maWxlcnMgPSBbXTsKKyAgICAgICAg
ICAgIGFsbFByb2ZpbGVycy5wdXNoKG5ldyBXZWJJbnNwZWN0b3IuUGFuZWxEZXNjcmlwdG9yKCJj
cHUtcHJvZmlsZXIiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNQVSBQcm9maWxlciIpLCAiQ1BV
UHJvZmlsZXJQYW5lbCIsICJQcm9maWxlc1BhbmVsLmpzIikpOworICAgICAgICAgICAgaWYgKCFX
ZWJJbnNwZWN0b3IuV29ya2VyTWFuYWdlci5pc1dvcmtlckZyb250ZW5kKCkpCisgICAgICAgICAg
ICAgICAgYWxsUHJvZmlsZXJzLnB1c2gobmV3IFdlYkluc3BlY3Rvci5QYW5lbERlc2NyaXB0b3Io
ImNzcy1wcm9maWxlciIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ1NTIFByb2ZpbGVyIiksICJD
U1NTZWxlY3RvclByb2ZpbGVyUGFuZWwiLCAiUHJvZmlsZXNQYW5lbC5qcyIpKTsKKyAgICAgICAg
ICAgIGlmIChDYXBhYmlsaXRpZXMuaGVhcFByb2ZpbGVyUHJlc2VudCkKKyAgICAgICAgICAgICAg
ICBhbGxQcm9maWxlcnMucHVzaChuZXcgV2ViSW5zcGVjdG9yLlBhbmVsRGVzY3JpcHRvcigiaGVh
cC1wcm9maWxlciIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiSGVhcCBQcm9maWxlciIpLCAiSGVh
cFByb2ZpbGVyUGFuZWwiLCAiUHJvZmlsZXNQYW5lbC5qcyIpKTsKKyAgICAgICAgICAgIGlmICgh
V2ViSW5zcGVjdG9yLldvcmtlck1hbmFnZXIuaXNXb3JrZXJGcm9udGVuZCgpICYmIFdlYkluc3Bl
Y3Rvci5leHBlcmltZW50c1NldHRpbmdzLmNhbnZhc0luc3BlY3Rpb24uaXNFbmFibGVkKCkpCisg
ICAgICAgICAgICAgICAgYWxsUHJvZmlsZXJzLnB1c2gobmV3IFdlYkluc3BlY3Rvci5QYW5lbERl
c2NyaXB0b3IoImNhbnZhcy1wcm9maWxlciIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ2FudmFz
IFByb2ZpbGVyIiksICJDYW52YXNQcm9maWxlclBhbmVsIiwgIlByb2ZpbGVzUGFuZWwuanMiKSk7
CisgICAgICAgICAgICBpZiAoIVdlYkluc3BlY3Rvci5Xb3JrZXJNYW5hZ2VyLmlzV29ya2VyRnJv
bnRlbmQoKSAmJiBXZWJJbnNwZWN0b3IuZXhwZXJpbWVudHNTZXR0aW5ncy5uYXRpdmVNZW1vcnlT
bmFwc2hvdHMuaXNFbmFibGVkKCkpIHsKKyAgICAgICAgICAgICAgICBhbGxQcm9maWxlcnMucHVz
aChuZXcgV2ViSW5zcGVjdG9yLlBhbmVsRGVzY3JpcHRvcigibWVtb3J5LWNoYXJ0LXByb2ZpbGVy
IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJNZW1vcnkgRGlzdHJpYnV0aW9uIiksICJNZW1vcnlD
aGFydFByb2ZpbGVyUGFuZWwiLCAiUHJvZmlsZXNQYW5lbC5qcyIpKTsKKyAgICAgICAgICAgICAg
ICBhbGxQcm9maWxlcnMucHVzaChuZXcgV2ViSW5zcGVjdG9yLlBhbmVsRGVzY3JpcHRvcigibWVt
b3J5LXNuYXBzaG90LXByb2ZpbGVyIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJNZW1vcnkgU25h
cHNob3RzIiksICJOYXRpdmVNZW1vcnlQcm9maWxlclBhbmVsIiwgIlByb2ZpbGVzUGFuZWwuanMi
KSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBBcnJheS5wcm90b3R5cGUuc3BsaWNlLmJp
bmQoYWxsRGVzY3JpcHRvcnMsIGFsbERlc2NyaXB0b3JzLmluZGV4T2YocHJvZmlsZXMpLCAxKS5h
cHBseShudWxsLCBhbGxQcm9maWxlcnMpOworICAgICAgICB9CiAKICAgICAgICAgdmFyIHBhbmVs
RGVzY3JpcHRvcnMgPSBbXTsKICAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5Xb3JrZXJNYW5hZ2Vy
LmlzV29ya2VyRnJvbnRlbmQoKSkgewogICAgICAgICAgICAgcGFuZWxEZXNjcmlwdG9ycy5wdXNo
KHNjcmlwdHMpOwogICAgICAgICAgICAgcGFuZWxEZXNjcmlwdG9ycy5wdXNoKHRpbWVsaW5lKTsK
LSAgICAgICAgICAgIHBhbmVsRGVzY3JpcHRvcnMucHVzaChwcm9maWxlcyk7CisgICAgICAgICAg
ICBwYW5lbERlc2NyaXB0b3JzID0gcGFuZWxEZXNjcmlwdG9ycy5jb25jYXQoYWxsUHJvZmlsZXJz
KTsKICAgICAgICAgICAgIHBhbmVsRGVzY3JpcHRvcnMucHVzaChjb25zb2xlKTsKICAgICAgICAg
ICAgIHJldHVybiBwYW5lbERlc2NyaXB0b3JzOwogICAgICAgICB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>