<?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>135249</bug_id>
          
          <creation_ts>2014-07-24 12:37:50 -0700</creation_ts>
          <short_desc>Web Inspector: convert ReplayManager to a promise-based API</short_desc>
          <delta_ts>2014-08-06 11:30:17 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>135608</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brian Burg">burg</reporter>
          <assigned_to name="Brian Burg">burg</assigned_to>
          <cc>graouts</cc>
    
    <cc>joepeck</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1024558</commentid>
    <comment_count>0</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-07-24 12:37:50 -0700</bug_when>
    <thetext>This allows the client code to handle fewer replay state cases because the replay manager can asynchronously &quot;make it so&quot;. It also makes capture/replay more robust, because the manager can asynchronously disable breakpoints, continue the debugger, etc. before carrying out commands.

For example, if a startCapturing() command is issued during replay, the manager can construct a promise chain to stop replaying, unload the current segment, and start capturing. Without an async promise API, each client would have to manually get the replay engine to an acceptable state.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1024559</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2014-07-24 12:38:27 -0700</bug_when>
    <thetext>&lt;rdar://problem/17798570&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1024565</commentid>
    <comment_count>2</comment_count>
      <attachid>235448</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-07-24 13:03:49 -0700</bug_when>
    <thetext>Created attachment 235448
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1026887</commentid>
    <comment_count>3</comment_count>
      <attachid>235448</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2014-08-05 11:06:40 -0700</bug_when>
    <thetext>Comment on attachment 235448
Patch

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

&gt; Source/WebInspectorUI/UserInterface/Controllers/ReplayManager.js:231
&gt; +    switchSession: function(sessionId) { // --&gt; ()

What is the &quot;// --&gt; ()&quot; for?

&gt; Source/WebInspectorUI/UserInterface/Controllers/ReplayManager.js:253
&gt; +            })
&gt; +            .then(function ensureSessionDataIsLoaded(session) {

I like these on the same line.

&gt; Source/WebInspectorUI/UserInterface/Views/ReplayDashboardView.js:124
&gt; +        }).then(function() {

Yay! Same line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1026928</commentid>
    <comment_count>4</comment_count>
      <attachid>235448</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-08-05 12:47:22 -0700</bug_when>
    <thetext>Comment on attachment 235448
Patch

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

&gt;&gt; Source/WebInspectorUI/UserInterface/Controllers/ReplayManager.js:231
&gt;&gt; +    switchSession: function(sessionId) { // --&gt; ()
&gt; 
&gt; What is the &quot;// --&gt; ()&quot; for?

This is my (crappy) syntax for documenting which functions return a promise, and what the fulfilled promise value is (if any). Contrast to the getSegment() function.

&gt;&gt; Source/WebInspectorUI/UserInterface/Controllers/ReplayManager.js:253
&gt;&gt; +            .then(function ensureSessionDataIsLoaded(session) {
&gt; 
&gt; I like these on the same line.

OK</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1027224</commentid>
    <comment_count>5</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-08-06 11:03:29 -0700</bug_when>
    <thetext>If it&apos;s okay with you, I&apos;m going to land this without the UI changes, since those aren&apos;t reviewed yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1027238</commentid>
    <comment_count>6</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-08-06 11:30:17 -0700</bug_when>
    <thetext>Committed r172161: &lt;http://trac.webkit.org/changeset/172161&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>235448</attachid>
            <date>2014-07-24 13:03:49 -0700</date>
            <delta_ts>2014-08-05 12:47:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-135249-20140724130334.patch</filename>
            <type>text/plain</type>
            <size>24879</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTcxMjQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDdjZGVmZWM4N2JhNWVm
YWM5ODM3N2U0NGI0MGM4ZDBlZTA2OGMyZC4uYjcwNjQ3ZWU0ODAyYWZjMGVkMDViNTBmYWM4ZDI0
ZGRlNWFlOWY3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE0LTA3LTI0ICBCcmlh
biBKLiBCdXJnICA8YnVyZ0Bjcy53YXNoaW5ndG9uLmVkdT4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiBjb252ZXJ0IFJlcGxheU1hbmFnZXIgdG8gYSBwcm9taXNlLWJhc2VkIEFQSQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM1MjQ5CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4IHNvbWUgYXNzZXJ0
aW9ucyB0byBtYXRjaCBSZXBsYXlDb250cm9sbGVyJ3MgcHJlY29uZGl0aW9ucy4KKworICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXBsYXlBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JSZXBsYXlBZ2VudDo6cmVwbGF5VG9Qb3NpdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JSZXBsYXlBZ2VudDo6cmVwbGF5VG9Db21wbGV0aW9uKToKKwogMjAxNC0w
Ny0yMyAgQnJpYW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rvbi5lZHU+CiAKICAgICAgICAg
V2ViIEluc3BlY3RvcjogYWRkIGVqZWN0IGN1cnJlbnQgcmVjb3JkaW5nIGJ1dHRvbiB0byB0aGUg
cmVwbGF5IGRhc2hib2FyZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKaW5kZXggZDE2NmQ0NzdlOTYy
NTI1N2RlZDAwOTNmZWYyYzIyMWYxNjBhNDk1Yi4uYjQ5NGNhODE5YjM4MzU5ODNhYTBhMDUxMWEx
ZDcxZDU3ZGNmMjM5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNTcgQEAK
IDIwMTQtMDctMjQgIEJyaWFuIEouIEJ1cmcgIDxidXJnQGNzLndhc2hpbmd0b24uZWR1PgogCisg
ICAgICAgIFdlYiBJbnNwZWN0b3I6IGNvbnZlcnQgUmVwbGF5TWFuYWdlciB0byBhIHByb21pc2Ut
YmFzZWQgQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMzUyNDkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBDb252ZXJ0IHJlcGxheSBjb21tYW5kcyB0byBhbiBhc3luY2hyb25vdXMsIHByb21pc2UtYmFz
ZWQgQVBJLiBUaGlzIGFkZHJlc3NlcworICAgICAgICB0d28gcHJvYmxlbXMgd2l0aCBhIHN5bmNo
cm9ub3VzIHJlcGxheSBBUEk6IGNsaWVudHMgY2FuIG9ubHkgdXNlIHRoZSBzeW5jaHJvbm91cwor
ICAgICAgICBBUEkgaWYgc2Vzc2lvbiBhbmQgc2VnbWVudCBzdGF0ZSBhcmUgZXhhY3RseSBjb3Jy
ZWN0LCBhbmQgdHJ5aW5nIHRvIGNoYW5nZSBzdGF0ZQorICAgICAgICB0byBtYXRjaCB0aGlzIHJl
cXVpcmVtZW50IHJlcXVpcmVzIGNoYWluaW5nIG11bHRpcGxlIGNvbW1hbmRzIGFuZCBldmVudHMu
CisKKyAgICAgICAgVGhlIGFzeW5jaHJvbm91cyBBUEkgYWxsb3dzIGNsaWVudHMgdG8gaXNzdWUg
cmVwbGF5IGNvbW1hbmRzIHdpdGggaW1wdW5pdHksCisgICAgICAgIGFzIGxvbmcgYXMgdGhleSBj
YW4gYmUgdW5hbWJpZ3VvdXNseSBoYW5kbGVkLiBGb3IgZXhhbXBsZSwgaXNzdWluZworICAgICAg
ICBwYXVzZVBsYXliYWNrKigpIHdoaWxlIGNhcHR1cmluZyBpcyBub3QgYWxsb3dlZCwgYnV0IGlz
c3Vpbmcgc3RhcnRDYXB0dXJpbmcoKQorICAgICAgICB3aGlsZSByZXBsYXlpbmcgaXMgYWxsb3dl
ZC4gVGhlIEFQSSBhbHNvIGhpZGVzIGltcGxlbWVudGF0aW9uIGRldGFpbHMgdGhhdAorICAgICAg
ICBhcmUgbm90IGltcG9ydGFudCwgc3VjaCBhcyBzdGVwcyB0byB1bnBhdXNlIG9yIHRlbXBvcmFy
aWx5IGRpc2FibGUgdGhlIGRlYnVnZ2VyLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBjbGVh
bnMgdXAgdXNlcyBvZiBwcm9taXNlcywgc3VjaCBhcyBhZGRpbmcgZXJyb3IgcmUtdGhyb3dpbmcu
CisgICAgICAgIEl0IGFkZHMgcmV0dXJuIHR5cGUgYW5ub3RhdGlvbnMgdG8gcHVibGljIFJlcGxh
eU1hbmFnZXIgYXN5bmNocm9ub3VzIG1ldGhvZHMuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNl
L0NvbnRyb2xsZXJzL1JlcGxheU1hbmFnZXIuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVw
bGF5TWFuYWdlci5jYXRjaCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVwbGF5TWFuYWdlcik6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVwbGF5TWFuYWdlci5wcm90b3R5cGUuY3JlYXRlU2Vz
c2lvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVwbGF5TWFuYWdlci5wcm90b3R5cGUuc3dp
dGNoU2Vzc2lvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVwbGF5TWFuYWdlci5wcm90b3R5
cGUuc3RhcnRDYXB0dXJpbmcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlcGxheU1hbmFnZXIu
cHJvdG90eXBlLnN0b3BDYXB0dXJpbmcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlcGxheU1h
bmFnZXIucHJvdG90eXBlLnJlcGxheVRvUG9zaXRpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlJlcGxheU1hbmFnZXIucHJvdG90eXBlLnJlcGxheVRvQ29tcGxldGlvbik6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuUmVwbGF5TWFuYWdlci5wcm90b3R5cGUuc2Vzc2lvbkNyZWF0ZWQuY2F0Y2gp
OiByZS10aHJvdy4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXBsYXlNYW5hZ2VyLnByb3RvdHlw
ZS5zZWdtZW50Q29tcGxldGVkLmNhdGNoKTogcmUtdGhyb3cuCisgICAgICAgIChXZWJJbnNwZWN0
b3IuUmVwbGF5TWFuYWdlci5wcm90b3R5cGUuc2VnbWVudENvbXBsZXRlZC5jYXRjaCk6IHJlLXRo
cm93LgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlcGxheU1hbmFnZXIucHJvdG90eXBlLnNlZ21l
bnRVbmxvYWRlZC5jYXRjaCk6IHJlLXRocm93LgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlcGxh
eU1hbmFnZXIucHJvdG90eXBlLnNlc3Npb25DcmVhdGVkLmNhdGVjaCk6IHJlLXRocm93LgorCisg
ICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9SZXBsYXlEYXNoYm9hcmRWaWV3LmpzOiBTd2l0
Y2ggdG8gdXNlIHRoZSBwcm9taXNlLWJhc2VkIEFQSS4KKyAgICAgICAgRGVib3VuY2UgYnV0dG9u
cyB3aGVuIHRoZXkgYXJlIGNsaWNrZWQgYW5kIHJlYWN0aXZhdGUgd2hlbiBhbiBhY3Rpb24gaXMg
dGFrZW4uCisKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXBsYXlEYXNoYm9hcmRWaWV3LnByb3Rv
dHlwZS5fY2FwdHVyZUJ1dHRvbkl0ZW1DbGlja2VkLnRoZW4pOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlJlcGxheURhc2hib2FyZFZpZXcucHJvdG90eXBlLl9jYXB0dXJlQnV0dG9uSXRlbUNsaWNr
ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlcGxheURhc2hib2FyZFZpZXcucHJvdG90eXBl
Ll9yZXBsYXlCdXR0b25JdGVtQ2xpY2tlZC50aGVuKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5S
ZXBsYXlEYXNoYm9hcmRWaWV3LnByb3RvdHlwZS5fcmVwbGF5QnV0dG9uSXRlbUNsaWNrZWQpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlJlcGxheURhc2hib2FyZFZpZXcucHJvdG90eXBlLl9lamVj
dEJ1dHRvbkl0ZW1DbGlja2VkLmNhdGNoKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXBsYXlE
YXNoYm9hcmRWaWV3LnByb3RvdHlwZS5fZWplY3RCdXR0b25JdGVtQ2xpY2tlZC50aGVuKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5SZXBsYXlEYXNoYm9hcmRWaWV3LnByb3RvdHlwZS5fZWplY3RC
dXR0b25JdGVtQ2xpY2tlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVwbGF5RGFzaGJvYXJk
Vmlldy5wcm90b3R5cGUuX2NhcHR1cmVTdG9wcGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5S
ZXBsYXlEYXNoYm9hcmRWaWV3LnByb3RvdHlwZS5fcGxheWJhY2tTdGFydGVkKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5SZXBsYXlEYXNoYm9hcmRWaWV3LnByb3RvdHlwZS5fcGxheWJhY2tQYXVz
ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlcGxheURhc2hib2FyZFZpZXcucHJvdG90eXBl
Ll9wbGF5YmFja0ZpbmlzaGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXBsYXlEYXNoYm9h
cmRWaWV3LnByb3RvdHlwZS5fYWN0aXZlU2Vzc2lvbkNoYW5nZWQpOgorCisyMDE0LTA3LTI0ICBC
cmlhbiBKLiBCdXJnICA8YnVyZ0Bjcy53YXNoaW5ndG9uLmVkdT4KKwogICAgICAgICBXZWIgSW5z
cGVjdG9yOiBwcm90b2NvbCBjb21tYW5kIGludm9jYXRpb25zIHNob3VsZCByZXR1cm4gYSBwcm9t
aXNlIGlmIG5vIGNhbGxiYWNrIGlzIHN1cHBsaWVkCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzA3MDIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclJlcGxheUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JSZXBsYXlBZ2VudC5jcHAKaW5kZXggZTYxMDE0MDQyZmRlZjY2OTJi
YTg3YTFmMWRmOTRkZWY1YmY1YmNmNC4uNmM3OGVhNGUxMzE1NWE3MDMwZmI0Nzk2MDFhY2VlNGNj
ZmZjMDg3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJl
cGxheUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVw
bGF5QWdlbnQuY3BwCkBAIC0zNTMsOCArMzUzLDggQEAgdm9pZCBJbnNwZWN0b3JSZXBsYXlBZ2Vu
dDo6cmVwbGF5VG9Qb3NpdGlvbihFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFJlZlAK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChzZXNzaW9uU3RhdGUoKSAhPSBTZXNz
aW9uU3RhdGU6OkluYWN0aXZlKSB7Ci0gICAgICAgICplcnJvclN0cmluZyA9IEFTQ0lJTGl0ZXJh
bCgiQ2FuJ3Qgc3RhcnQgcmVwbGF5IHdoaWxlIGNhcHR1cmUgb3IgcGxheWJhY2sgaXMgaW4gcHJv
Z3Jlc3MuIik7CisgICAgaWYgKHNlc3Npb25TdGF0ZSgpID09IFNlc3Npb25TdGF0ZTo6Q2FwdHVy
aW5nKSB7CisgICAgICAgICplcnJvclN0cmluZyA9IEFTQ0lJTGl0ZXJhbCgiQ2FuJ3Qgc3RhcnQg
cmVwbGF5IHdoaWxlIGNhcHR1cmUgaXMgaW4gcHJvZ3Jlc3MuIik7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKQEAgLTM2Myw4ICszNjMsOCBAQCB2b2lkIEluc3BlY3RvclJlcGxheUFnZW50Ojpy
ZXBsYXlUb1Bvc2l0aW9uKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgUmVmUAogCiB2
b2lkIEluc3BlY3RvclJlcGxheUFnZW50OjpyZXBsYXlUb0NvbXBsZXRpb24oRXJyb3JTdHJpbmcq
IGVycm9yU3RyaW5nLCBib29sIGZhc3RSZXBsYXkpCiB7Ci0gICAgaWYgKHNlc3Npb25TdGF0ZSgp
ICE9IFNlc3Npb25TdGF0ZTo6SW5hY3RpdmUpIHsKLSAgICAgICAgKmVycm9yU3RyaW5nID0gQVND
SUlMaXRlcmFsKCJDYW4ndCBzdGFydCByZXBsYXkgd2hpbGUgY2FwdHVyZSBvciBwbGF5YmFjayBp
cyBpbiBwcm9ncmVzcy4iKTsKKyAgICBpZiAoc2Vzc2lvblN0YXRlKCkgPT0gU2Vzc2lvblN0YXRl
OjpDYXB0dXJpbmcpIHsKKyAgICAgICAgKmVycm9yU3RyaW5nID0gQVNDSUlMaXRlcmFsKCJDYW4n
dCBzdGFydCByZXBsYXkgd2hpbGUgY2FwdHVyZSBpcyBpbiBwcm9ncmVzcy4iKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvQ29udHJvbGxlcnMvUmVwbGF5TWFuYWdlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1JlcGxheU1hbmFnZXIuanMKaW5kZXggYTI4
OGUyNDM0ODA1ZWExZGIxODlmMGExN2RmYmZlNGM1NDZhNDQwMS4uMThmNTJiMjQ2Y2I3YzM2YTkx
OTY5OGM0NzdhYWNmMmI0MTdlYWY1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvUmVwbGF5TWFuYWdlci5qcworKysgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9SZXBsYXlNYW5hZ2VyLmpz
CkBAIC01Miw3ICs1Miw3IEBAIFdlYkluc3BlY3Rvci5SZXBsYXlNYW5hZ2VyID0gZnVuY3Rpb24o
KQogCiAgICAgdmFyIGluc3RhbmNlID0gdGhpczsKIAotICAgIHRoaXMuX2luaXRpYWxpemF0aW9u
UHJvbWlzZSA9IFJlcGxheUFnZW50LmN1cnJlbnRSZXBsYXlTdGF0ZS5wcm9taXNlKCkKKyAgICB0
aGlzLl9pbml0aWFsaXphdGlvblByb21pc2UgPSBSZXBsYXlBZ2VudC5jdXJyZW50UmVwbGF5U3Rh
dGUoKQogICAgICAgICAudGhlbihmdW5jdGlvbihwYXlsb2FkKSB7CiAgICAgICAgICAgICBjb25z
b2xlLmFzc2VydChwYXlsb2FkLnNlc3Npb25TdGF0ZSBpbiBXZWJJbnNwZWN0b3IuUmVwbGF5TWFu
YWdlci5TZXNzaW9uU3RhdGUsICJVbmtub3duIHNlc3Npb24gc3RhdGU6ICIgKyBwYXlsb2FkLnNl
c3Npb25TdGF0ZSk7CiAgICAgICAgICAgICBjb25zb2xlLmFzc2VydChwYXlsb2FkLnNlZ21lbnRT
dGF0ZSBpbiBXZWJJbnNwZWN0b3IuUmVwbGF5TWFuYWdlci5TZWdtZW50U3RhdGUsICJVbmtub3du
IHNlZ21lbnQgc3RhdGU6ICIgKyBwYXlsb2FkLnNlZ21lbnRTdGF0ZSk7CkBAIC02NiwxNCArNjYs
MTUgQEAgV2ViSW5zcGVjdG9yLlJlcGxheU1hbmFnZXIgPSBmdW5jdGlvbigpCiAgICAgICAgICAg
ICBpbnN0YW5jZS5faW5pdGlhbGl6ZWQgPSB0cnVlOwogICAgICAgICB9KQogICAgICAgICAudGhl
bihmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIHJldHVybiBSZXBsYXlBZ2VudC5nZXRBdmFpbGFi
bGVTZXNzaW9ucy5wcm9taXNlKCk7CisgICAgICAgICAgICByZXR1cm4gUmVwbGF5QWdlbnQuZ2V0
QXZhaWxhYmxlU2Vzc2lvbnMoKTsKICAgICAgICAgfSkKICAgICAgICAgLnRoZW4oZnVuY3Rpb24o
cGF5bG9hZCkgewogICAgICAgICAgICAgZm9yICh2YXIgc2Vzc2lvbklkIG9mIHBheWxvYWQuaWRz
KQogICAgICAgICAgICAgICAgIGluc3RhbmNlLnNlc3Npb25DcmVhdGVkKHNlc3Npb25JZCk7CiAg
ICAgICAgIH0pCi0gICAgICAgIC5jYXRjaChmdW5jdGlvbihlcnIpIHsKLSAgICAgICAgICAgIGNv
bnNvbGUuZXJyb3IoIlJlcGxheU1hbmFnZXIgaW5pdGlhbGl6YXRpb24gZmFpbGVkOiAiLCBlcnIp
OworICAgICAgICAuY2F0Y2goZnVuY3Rpb24oZXJyb3IpIHsKKyAgICAgICAgICAgIGNvbnNvbGUu
ZXJyb3IoIlJlcGxheU1hbmFnZXIgaW5pdGlhbGl6YXRpb24gZmFpbGVkOiAiLCBlcnJvcik7Cisg
ICAgICAgICAgICB0aHJvdyBlcnJvcjsKICAgICAgICAgfSk7CiB9OwogCkBAIC0xNzUsNiArMTc2
LDcgQEAgV2ViSW5zcGVjdG9yLlJlcGxheU1hbmFnZXIucHJvdG90eXBlID0gewogICAgICAgICBy
ZXR1cm4gdGhpcy5faW5pdGlhbGl6YXRpb25Qcm9taXNlOwogICAgIH0sCiAKKyAgICAvLyBSZXR1
cm4gYSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gYSBzZXNzaW9uLCBpZiBpdCBleGlzdHMuCiAg
ICAgZ2V0U2Vzc2lvbjogZnVuY3Rpb24oc2Vzc2lvbklkKSAvLyAtLT4gKFdlYkluc3BlY3Rvci5S
ZXBsYXlTZXNzaW9uKQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5faW5pdGlh
bGl6ZWQpOwpAQCAtMTkxLDYgKzE5Myw3IEBAIFdlYkluc3BlY3Rvci5SZXBsYXlNYW5hZ2VyLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIG5ld1Byb21pc2U7CiAgICAgfSwKIAorICAgIC8v
IFJldHVybiBhIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byBhIHNlc3Npb24gc2VnbWVudCwgaWYg
aXQgZXhpc3RzLgogICAgIGdldFNlZ21lbnQ6IGZ1bmN0aW9uKHNlZ21lbnRJZCkgLy8gLS0+IChX
ZWJJbnNwZWN0b3IuUmVwbGF5U2Vzc2lvblNlZ21lbnQpCiAgICAgewogICAgICAgICBjb25zb2xl
LmFzc2VydCh0aGlzLl9pbml0aWFsaXplZCk7CkBAIC0yMDcsNyArMjEwLDggQEAgV2ViSW5zcGVj
dG9yLlJlcGxheU1hbmFnZXIucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gbmV3UHJvbWlz
ZTsKICAgICB9LAogCi0gICAgLy8gQ3JlYXRlIGEgbmV3IHNlc3Npb24uIFJldHVybnMgYSBwcm9t
aXNlIHRoYXQgY2FuIHJlc29sdmUgdG8gdGhlIGNyZWF0ZWQgc2Vzc2lvbiBpZGVudGlmaWVyLgor
ICAgIC8vIENyZWF0ZSBhIG5ldywgZW1wdHkgc2Vzc2lvbi4KKyAgICAvLyBSZXR1cm5zIGEgcHJv
bWlzZSB0aGF0IGNhbiByZXNvbHZlIHRvIHRoZSBjcmVhdGVkIHNlc3Npb24gaWRlbnRpZmllci4K
ICAgICBjcmVhdGVTZXNzaW9uOiBmdW5jdGlvbigpIC8vIC0tPiAoc2Vzc2lvbklkKQogICAgIHsK
ICAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5faW5pdGlhbGl6ZWQpOwpAQCAtMjE4LDIzICsy
MjIsMjAzIEBAIFdlYkluc3BlY3Rvci5SZXBsYXlNYW5hZ2VyLnByb3RvdHlwZSA9IHsKICAgICAg
ICAgICAgIH0pCiAgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24oZXJyb3IpIHsKICAgICAgICAg
ICAgICAgICBjb25zb2xlLmVycm9yKCJGYWlsZWQgdG8gY3JlYXRlIG5ldyBzZXNzaW9uOiAiLCBl
cnJvcik7CisgICAgICAgICAgICAgICAgdGhyb3cgZXJyb3I7CiAgICAgICAgICAgICB9KTsKICAg
ICB9LAogCi0gICAgc3dpdGNoU2Vzc2lvbjogZnVuY3Rpb24oc2Vzc2lvbklkKSB7Ci0gICAgICAg
IGNvbnNvbGUuYXNzZXJ0KHRoaXMuc2Vzc2lvblN0YXRlID09PSBXZWJJbnNwZWN0b3IuUmVwbGF5
TWFuYWdlci5TZXNzaW9uU3RhdGUuSW5hY3RpdmUpOwotICAgICAgICBjb25zb2xlLmFzc2VydCh0
aGlzLnNlZ21lbnRTdGF0ZSA9PT0gV2ViSW5zcGVjdG9yLlJlcGxheU1hbmFnZXIuU2VnbWVudFN0
YXRlLlVubG9hZGVkKTsKKyAgICAvLyBTd2l0Y2ggdG8gdGhlIHNwZWNpZmllZCBzZXNzaW9uLgor
ICAgIC8vIFJldHVybnMgYSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgc3dpdGNoIGNv
bXBsZXRlcy4KKyAgICBzd2l0Y2hTZXNzaW9uOiBmdW5jdGlvbihzZXNzaW9uSWQpIHsgLy8gLS0+
ICgpCisgICAgICAgIHZhciBtYW5hZ2VyID0gdGhpczsKKyAgICAgICAgdmFyIHJlc3VsdCA9IHRo
aXMud2FpdFVudGlsSW5pdGlhbGl6ZWQoKTsKKworICAgICAgICBpZiAodGhpcy5zZXNzaW9uU3Rh
dGUgPT09IFdlYkluc3BlY3Rvci5SZXBsYXlNYW5hZ2VyLlNlc3Npb25TdGF0ZS5DYXB0dXJpbmcp
IHsKKyAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdC50aGVuKGZ1bmN0aW9uKCkgeworICAgICAg
ICAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IucmVwbGF5TWFuYWdlci5zdG9wQ2FwdHVyaW5n
KCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICh0aGlzLnNlc3Np
b25TdGF0ZSA9PT0gV2ViSW5zcGVjdG9yLlJlcGxheU1hbmFnZXIuU2Vzc2lvblN0YXRlLlJlcGxh
eWluZykgeworICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LnRoZW4oZnVuY3Rpb24oKSB7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5yZXBsYXlNYW5hZ2VyLnN0b3BQbGF5
YmFjaygpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KIAotICAgICAgICAvLyBFbnN1cmUg
dGhhdCB0aGUgc2Vzc2lvbidzIGRhdGEgaGFzIGJlZW4gbG9hZGVkIGJlZm9yZSBzd2l0Y2hpbmcg
dG8gaXQuCi0gICAgICAgIHJldHVybiB0aGlzLmdldFNlc3Npb24oc2Vzc2lvbklkKQotICAgICAg
ICAgICAgLnRoZW4oZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgICAgIHJldHVybiBSZXBsYXlB
Z2VudC5zd2l0Y2hTZXNzaW9uKHNlc3Npb25JZCk7CisgICAgICAgIHJlc3VsdCA9IHJlc3VsdC50
aGVuKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KG1hbmFnZXIu
c2Vzc2lvblN0YXRlID09PSBXZWJJbnNwZWN0b3IuUmVwbGF5TWFuYWdlci5TZXNzaW9uU3RhdGUu
SW5hY3RpdmUpOworICAgICAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KG1hbmFnZXIuc2VnbWVu
dFN0YXRlID09PSBXZWJJbnNwZWN0b3IuUmVwbGF5TWFuYWdlci5TZWdtZW50U3RhdGUuVW5sb2Fk
ZWQpOworCisgICAgICAgICAgICAgICAgcmV0dXJuIG1hbmFnZXIuZ2V0U2Vzc2lvbihzZXNzaW9u
SWQpOworICAgICAgICAgICAgfSkKKyAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIGVuc3VyZVNl
c3Npb25EYXRhSXNMb2FkZWQoc2Vzc2lvbikgeworICAgICAgICAgICAgICAgIHJldHVybiBSZXBs
YXlBZ2VudC5zd2l0Y2hTZXNzaW9uKHNlc3Npb24uaWRlbnRpZmllcik7CiAgICAgICAgICAgICB9
KQogICAgICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uKGVycm9yKSB7CiAgICAgICAgICAgICAgICAg
Y29uc29sZS5lcnJvcigiRmFpbGVkIHRvIHN3aXRjaCB0byBzZXNzaW9uOiAiLCBlcnJvcik7Cisg
ICAgICAgICAgICAgICAgdGhyb3cgZXJyb3I7CisgICAgICAgICAgICB9KTsKKworICAgICAgICBy
ZXR1cm4gcmVzdWx0OworICAgIH0sCisKKyAgICAvLyBTdGFydCBjYXB0dXJpbmcgaW50byB0aGUg
Y3VycmVudCBzZXNzaW9uIGFzIHNvb24gYXMgcG9zc2libGUuCisgICAgLy8gUmV0dXJucyBhIHBy
b21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIGNhcHR1cmluZyBiZWdpbnMuCisgICAgc3RhcnRDYXB0
dXJpbmc6IGZ1bmN0aW9uKCkgLy8gLS0+ICgpCisgICAgeworICAgICAgICB2YXIgbWFuYWdlciA9
IHRoaXM7CisgICAgICAgIHZhciByZXN1bHQgPSB0aGlzLndhaXRVbnRpbEluaXRpYWxpemVkKCk7
CisKKyAgICAgICAgaWYgKHRoaXMuc2Vzc2lvblN0YXRlID09PSBXZWJJbnNwZWN0b3IuUmVwbGF5
TWFuYWdlci5TZXNzaW9uU3RhdGUuQ2FwdHVyaW5nKQorICAgICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsgLy8gQWxyZWFkeSBjYXB0dXJpbmcuCisKKyAgICAgICAgaWYgKHRoaXMuc2Vzc2lvblN0YXRl
ID09PSBXZWJJbnNwZWN0b3IuUmVwbGF5TWFuYWdlci5TZXNzaW9uU3RhdGUuUmVwbGF5aW5nKSB7
CisgICAgICAgICAgICByZXN1bHQgPSByZXN1bHQudGhlbihmdW5jdGlvbigpIHsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLnJlcGxheU1hbmFnZXIuc3RvcFBsYXliYWNrKCk7
CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorCisgICAgICAgIHJlc3VsdCA9IHJlc3VsdC50
aGVuKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KG1hbmFnZXIu
c2Vzc2lvblN0YXRlID09PSBXZWJJbnNwZWN0b3IuUmVwbGF5TWFuYWdlci5TZXNzaW9uU3RhdGUu
SW5hY3RpdmUpOworICAgICAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KG1hbmFnZXIuc2VnbWVu
dFN0YXRlID09PSBXZWJJbnNwZWN0b3IuUmVwbGF5TWFuYWdlci5TZWdtZW50U3RhdGUuVW5sb2Fk
ZWQpOworCisgICAgICAgICAgICAgICAgcmV0dXJuIFJlcGxheUFnZW50LnN0YXJ0Q2FwdHVyaW5n
KCk7CisgICAgICAgICAgICB9KQorICAgICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uKGVycm9yKSB7
CisgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcigiRmFpbGVkIHRvIHN0YXJ0IGNhcHR1cmlu
ZzogIiwgZXJyb3IpOworICAgICAgICAgICAgICAgIHRocm93IGVycm9yOworICAgICAgICAgICAg
fSk7CisKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9LAorCisgICAgLy8gU3RvcCBjYXB0
dXJpbmcgaW50byB0aGUgY3VycmVudCBzZXNzaW9uIGFzIHNvb24gYXMgcG9zc2libGUuCisgICAg
Ly8gUmV0dXJucyBhIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIGNhcHR1cmluZyBlbmRzLgor
ICAgIHN0b3BDYXB0dXJpbmc6IGZ1bmN0aW9uKCkgLy8gLS0+ICgpCisgICAgeworICAgICAgICBj
b25zb2xlLmFzc2VydCh0aGlzLnNlc3Npb25TdGF0ZSA9PT0gV2ViSW5zcGVjdG9yLlJlcGxheU1h
bmFnZXIuU2Vzc2lvblN0YXRlLkNhcHR1cmluZywgIkNhbm5vdCBzdG9wIGNhcHR1cmluZyB1bmxl
c3MgY2FwdHVyZSBpcyBhY3RpdmUuIik7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuc2Vn
bWVudFN0YXRlID09PSBXZWJJbnNwZWN0b3IuUmVwbGF5TWFuYWdlci5TZWdtZW50U3RhdGUuQXBw
ZW5kaW5nKTsKKworICAgICAgICByZXR1cm4gUmVwbGF5QWdlbnQuc3RvcENhcHR1cmluZygpCisg
ICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24oZXJyb3IpIHsKKyAgICAgICAgICAgICAgICBjb25z
b2xlLmVycm9yKCJGYWlsZWQgdG8gc3RvcCBjYXB0dXJpbmc6ICIsIGVycm9yKTsKKyAgICAgICAg
ICAgICAgICB0aHJvdyBlcnJvcjsKICAgICAgICAgICAgIH0pOwogICAgIH0sCiAKKyAgICAvLyBQ
YXVzZSBwbGF5YmFjayBhcyBzb29uIGFzIHBvc3NpYmxlLgorICAgIC8vIFJldHVybnMgYSBwcm9t
aXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiBwbGF5YmFjayBpcyBwYXVzZWQuCisgICAgcGF1c2VQbGF5
YmFjazogZnVuY3Rpb24oKSAvLyAtLT4gKCkKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0
KHRoaXMuc2Vzc2lvblN0YXRlICE9PSBXZWJJbnNwZWN0b3IuUmVwbGF5TWFuYWdlci5TZXNzaW9u
U3RhdGUuQ2FwdHVyaW5nLCAiQ2Fubm90IHBhdXNlIHBsYXliYWNrIHdoaWxlIGNhcHR1cmluZy4i
KTsKKworICAgICAgICB2YXIgbWFuYWdlciA9IHRoaXM7CisgICAgICAgIHZhciByZXN1bHQgPSB0
aGlzLndhaXRVbnRpbEluaXRpYWxpemVkKCk7CisKKyAgICAgICAgaWYgKHRoaXMuc2Vzc2lvblN0
YXRlID09PSBXZWJJbnNwZWN0b3IuUmVwbGF5TWFuYWdlci5TZXNzaW9uU3RhdGUuSW5hY3RpdmUp
CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OyAvLyBBbHJlYWR5IHN0b3BwZWQuCisKKyAgICAg
ICAgaWYgKHRoaXMuc2Vzc2lvblN0YXRlICE9PSBXZWJJbnNwZWN0b3IuUmVwbGF5TWFuYWdlci5T
ZWdtZW50U3RhdGUuRGlzcGF0Y2hpbmcpCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OyAvLyBB
bHJlYWR5IHN0b3BwZWQuCisKKyAgICAgICAgcmVzdWx0ID0gcmVzdWx0LnRoZW4oZnVuY3Rpb24o
KSB7CisgICAgICAgICAgICAgICAgY29uc29sZS5hc3NlcnQobWFuYWdlci5zZXNzaW9uU3RhdGUg
PT09IFdlYkluc3BlY3Rvci5SZXBsYXlNYW5hZ2VyLlNlc3Npb25TdGF0ZS5SZXBsYXlpbmcpOwor
ICAgICAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KG1hbmFnZXIuc2VnbWVudFN0YXRlID09PSBX
ZWJJbnNwZWN0b3IuUmVwbGF5TWFuYWdlci5TZWdtZW50U3RhdGUuRGlzcGF0Y2hpbmcpOworCisg
ICAgICAgICAgICAgICAgcmV0dXJuIFJlcGxheUFnZW50LnBhdXNlUGxheWJhY2soKTsKKyAgICAg
ICAgICAgIH0pCisgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24oZXJyb3IpIHsKKyAgICAgICAg
ICAgICAgICBjb25zb2xlLmVycm9yKCJGYWlsZWQgdG8gcGF1c2UgcGxheWJhY2s6ICIsIGVycm9y
KTsKKyAgICAgICAgICAgICAgICB0aHJvdyBlcnJvcjsKKyAgICAgICAgICAgIH0pOworCisgICAg
ICAgIHJldHVybiByZXN1bHQ7CisgICAgfSwKKworICAgIC8vIFBhdXNlIHBsYXliYWNrIGFuZCB1
bmxvYWQgdGhlIGN1cnJlbnQgc2Vzc2lvbiBzZWdtZW50IGFzIHNvb24gYXMgcG9zc2libGUuCisg
ICAgLy8gUmV0dXJucyBhIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBjdXJyZW50IHNl
Z21lbnQgaXMgdW5sb2FkZWQuCisgICAgc3RvcFBsYXliYWNrOiBmdW5jdGlvbigpIC8vIC0tPiAo
KQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5zZXNzaW9uU3RhdGUgIT09IFdl
Ykluc3BlY3Rvci5SZXBsYXlNYW5hZ2VyLlNlc3Npb25TdGF0ZS5DYXB0dXJpbmcsICJDYW5ub3Qg
c3RvcCBwbGF5YmFjayB3aGlsZSBjYXB0dXJpbmcuIik7CisKKyAgICAgICAgdmFyIG1hbmFnZXIg
PSB0aGlzOworICAgICAgICB2YXIgcmVzdWx0ID0gdGhpcy53YWl0VW50aWxJbml0aWFsaXplZCgp
OworCisgICAgICAgIGlmICh0aGlzLnNlc3Npb25TdGF0ZSA9PT0gV2ViSW5zcGVjdG9yLlJlcGxh
eU1hbmFnZXIuU2Vzc2lvblN0YXRlLkluYWN0aXZlKQorICAgICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsgLy8gQWxyZWFkeSBzdG9wcGVkLgorCisgICAgICAgIHJlc3VsdCA9IHJlc3VsdC50aGVuKGZ1
bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KG1hbmFnZXIuc2Vzc2lv
blN0YXRlID09PSBXZWJJbnNwZWN0b3IuUmVwbGF5TWFuYWdlci5TZXNzaW9uU3RhdGUuUmVwbGF5
aW5nKTsKKyAgICAgICAgICAgICAgICBjb25zb2xlLmFzc2VydChtYW5hZ2VyLnNlZ21lbnRTdGF0
ZSAhPT0gV2ViSW5zcGVjdG9yLlJlcGxheU1hbmFnZXIuU2VnbWVudFN0YXRlLkFwcGVuZGluZyk7
CisKKyAgICAgICAgICAgICAgICByZXR1cm4gUmVwbGF5QWdlbnQuc3RvcFBsYXliYWNrKCk7Cisg
ICAgICAgICAgICB9KQorICAgICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uKGVycm9yKSB7CisgICAg
ICAgICAgICAgICAgY29uc29sZS5lcnJvcigiRmFpbGVkIHRvIHN0b3AgcGxheWJhY2s6ICIsIGVy
cm9yKTsKKyAgICAgICAgICAgICAgICB0aHJvdyBlcnJvcjsKKyAgICAgICAgICAgIH0pOworCisg
ICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfSwKKworICAgIC8vIFJlcGxheSB0byB0aGUgc3Bl
Y2lmaWVkIHBvc2l0aW9uIGFzIHNvb24gYXMgcG9zc2libGUgdXNpbmcgdGhlIGN1cnJlbnQgcmVw
bGF5IHNwZWVkLgorICAgIC8vIFJldHVybnMgYSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiBy
ZXBsYXkgaGFzIGJlZ3VuIChOT1Qgd2hlbiB0aGUgcG9zaXRpb24gaXMgcmVhY2hlZCkuCisgICAg
cmVwbGF5VG9Qb3NpdGlvbjogZnVuY3Rpb24ocmVwbGF5UG9zaXRpb24pIC8vIC0tPiAoKQorICAg
IHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQocmVwbGF5UG9zaXRpb24gaW5zdGFuY2VvZiBXZWJJ
bnNwZWN0b3IuUmVwbGF5UG9zaXRpb24sICJDYW5ub3QgcmVwbGF5IHRvIGEgcG9zaXRpb24gd2hp
bGUgY2FwdHVyaW5nLiIpOworCisgICAgICAgIHZhciBtYW5hZ2VyID0gdGhpczsKKyAgICAgICAg
dmFyIHJlc3VsdCA9IHRoaXMud2FpdFVudGlsSW5pdGlhbGl6ZWQoKTsKKworICAgICAgICBpZiAo
dGhpcy5zZXNzaW9uU3RhdGUgPT09IFdlYkluc3BlY3Rvci5SZXBsYXlNYW5hZ2VyLlNlc3Npb25T
dGF0ZS5DYXB0dXJpbmcpIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdC50aGVuKGZ1bmN0
aW9uKCkgeworICAgICAgICAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IucmVwbGF5TWFuYWdl
ci5zdG9wQ2FwdHVyaW5nKCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorCisgICAgICAg
IHJlc3VsdCA9IHJlc3VsdC50aGVuKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KG1hbmFnZXIuc2Vzc2lvblN0YXRlICE9PSBXZWJJbnNwZWN0b3IuUmVwbGF5TWFu
YWdlci5TZXNzaW9uU3RhdGUuQ2FwdHVyaW5nKTsKKyAgICAgICAgICAgICAgICBjb25zb2xlLmFz
c2VydChtYW5hZ2VyLnNlZ21lbnRTdGF0ZSAhPT0gV2ViSW5zcGVjdG9yLlJlcGxheU1hbmFnZXIu
U2VnbWVudFN0YXRlLkFwcGVuZGluZyk7CisKKyAgICAgICAgICAgICAgICByZXR1cm4gUmVwbGF5
QWdlbnQucmVwbGF5VG9Qb3NpdGlvbihyZXBsYXlQb3NpdGlvbiwgbWFuYWdlci5wbGF5YmFja1Nw
ZWVkID09PSBXZWJJbnNwZWN0b3IuUmVwbGF5TWFuYWdlci5QbGF5YmFja1NwZWVkLkZhc3RGb3J3
YXJkKTsKKyAgICAgICAgICAgIH0pCisgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24oZXJyb3Ip
IHsKKyAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCJGYWlsZWQgdG8gc3RhcnQgcGxheWJh
Y2sgdG8gcG9zaXRpb246ICIsIHJlcGxheVBvc2l0aW9uLCBlcnJvcik7CisgICAgICAgICAgICAg
ICAgdGhyb3cgZXJyb3I7CisgICAgICAgICAgICB9KTsKKworICAgICAgICByZXR1cm4gcmVzdWx0
OworICAgIH0sCisKKyAgICAvLyBSZXBsYXkgdG8gdGhlIGVuZCBvZiB0aGUgc2Vzc2lvbiBhcyBz
b29uIGFzIHBvc3NpYmxlIHVzaW5nIHRoZSBjdXJyZW50IHJlcGxheSBzcGVlZC4KKyAgICAvLyBS
ZXR1cm5zIGEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gcmVwbGF5IGhhcyBiZWd1biAoTk9U
IHdoZW4gdGhlIGVuZCBpcyByZWFjaGVkKS4KKyAgICByZXBsYXlUb0NvbXBsZXRpb246IGZ1bmN0
aW9uKCkgLy8gLS0+ICgpCisgICAgeworICAgICAgICB2YXIgbWFuYWdlciA9IHRoaXM7CisgICAg
ICAgIHZhciByZXN1bHQgPSB0aGlzLndhaXRVbnRpbEluaXRpYWxpemVkKCk7CisKKyAgICAgICAg
aWYgKHRoaXMuc2VnbWVudFN0YXRlID09PSBXZWJJbnNwZWN0b3IuUmVwbGF5TWFuYWdlci5TZWdt
ZW50U3RhdGUuRGlzcGF0Y2hpbmcpCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OyAvLyBBbHJl
YWR5IHJ1bm5pbmcuCisKKyAgICAgICAgaWYgKHRoaXMuc2Vzc2lvblN0YXRlID09PSBXZWJJbnNw
ZWN0b3IuUmVwbGF5TWFuYWdlci5TZXNzaW9uU3RhdGUuQ2FwdHVyaW5nKSB7CisgICAgICAgICAg
ICByZXN1bHQgPSByZXN1bHQudGhlbihmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICByZXR1
cm4gV2ViSW5zcGVjdG9yLnJlcGxheU1hbmFnZXIuc3RvcENhcHR1cmluZygpOworICAgICAgICAg
ICAgfSk7CisgICAgICAgIH0KKworICAgICAgICByZXN1bHQgPSByZXN1bHQudGhlbihmdW5jdGlv
bigpIHsKKyAgICAgICAgICAgICAgICBjb25zb2xlLmFzc2VydChtYW5hZ2VyLnNlc3Npb25TdGF0
ZSAhPT0gV2ViSW5zcGVjdG9yLlJlcGxheU1hbmFnZXIuU2Vzc2lvblN0YXRlLkNhcHR1cmluZyk7
CisgICAgICAgICAgICAgICAgY29uc29sZS5hc3NlcnQobWFuYWdlci5zZWdtZW50U3RhdGUgPT09
IFdlYkluc3BlY3Rvci5SZXBsYXlNYW5hZ2VyLlNlZ21lbnRTdGF0ZS5Mb2FkZWQgfHwgbWFuYWdl
ci5zZWdtZW50U3RhdGUgPT09IFdlYkluc3BlY3Rvci5SZXBsYXlNYW5hZ2VyLlNlZ21lbnRTdGF0
ZS5VbmxvYWRlZCk7CisKKyAgICAgICAgICAgICAgICByZXR1cm4gUmVwbGF5QWdlbnQucmVwbGF5
VG9Db21wbGV0aW9uKG1hbmFnZXIucGxheWJhY2tTcGVlZCA9PT0gV2ViSW5zcGVjdG9yLlJlcGxh
eU1hbmFnZXIuUGxheWJhY2tTcGVlZC5GYXN0Rm9yd2FyZCkKKyAgICAgICAgICAgIH0pCisgICAg
ICAgICAgICAuY2F0Y2goZnVuY3Rpb24oZXJyb3IpIHsKKyAgICAgICAgICAgICAgICBjb25zb2xl
LmVycm9yKCJGYWlsZWQgdG8gc3RhcnQgcGxheWJhY2sgdG8gY29tcGxldGlvbjogIiwgZXJyb3Ip
OworICAgICAgICAgICAgICAgIHRocm93IGVycm9yOworICAgICAgICAgICAgfSk7CisKKyAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9LAorCiAgICAgLy8gUHJvdGVjdGVkIChjYWxsZWQgYnkg
UmVwbGF5T2JzZXJ2ZXIpCiAKICAgICAvLyBTaW5jZSB0aGVzZSBtZXRob2RzIHVwZGF0ZSBzZXNz
aW9uIGFuZCBzZWdtZW50IHN0YXRlLCB0aGV5IGRlcGVuZCBvbiB0aGUgbWFuYWdlcgpAQCAtMzIz
LDYgKzUwNyw3IEBAIFdlYkluc3BlY3Rvci5SZXBsYXlNYW5hZ2VyLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgICAgIH0pCiAgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24oZXJyb3IpIHsKICAgICAg
ICAgICAgICAgICBjb25zb2xlLmVycm9yKCJFcnJvciBvYnRhaW5pbmcgc2Vzc2lvbiBkYXRhOiAi
LCBlcnJvcik7CisgICAgICAgICAgICAgICAgdGhyb3cgZXJyb3I7CiAgICAgICAgICAgICB9KTsK
IAogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuUmVw
bGF5TWFuYWdlci5FdmVudC5TZXNzaW9uQWRkZWQsIHtzZXNzaW9uSWQ6IHNlc3Npb25JZH0pOwpA
QCAtNDA2LDYgKzU5MSw3IEBAIFdlYkluc3BlY3Rvci5SZXBsYXlNYW5hZ2VyLnByb3RvdHlwZSA9
IHsKICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24oZXJyb3IpIHsK
ICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCJFcnJvciBvYnRhaW5pbmcgc2VnbWVudCBk
YXRhOiAiLCBlcnJvcik7CisgICAgICAgICAgICAgICAgdGhyb3cgZXJyb3I7CiAgICAgICAgICAg
ICB9KTsKICAgICB9LAogCkBAIC00MjEsMTAgKzYwNyw5IEBAIFdlYkluc3BlY3Rvci5SZXBsYXlN
YW5hZ2VyLnByb3RvdHlwZSA9IHsKIAogICAgICAgICB2YXIgbWFuYWdlciA9IHRoaXM7CiAKLSAg
ICAgICAgLy8gV2FpdCBmb3IgYW55IG91dHN0YW5kaW5nIHByb21pc2UgdG8gc2V0dGxlIHNvIGl0
IGRvZXNuJ3QgZ2V0IHJlLWFkZGVkLgogICAgICAgICB0aGlzLmdldFNlZ21lbnQoc2VnbWVudElk
KQogICAgICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uKGVycm9yKSB7Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpOworICAgICAgICAgICAgICAgIC8vIFdhaXQgZm9yIGFu
eSBvdXRzdGFuZGluZyBwcm9taXNlIHRvIHNldHRsZSBzbyBpdCBkb2Vzbid0IGdldCByZS1hZGRl
ZC4KICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAudGhlbihmdW5jdGlvbigpIHsKICAgICAg
ICAgICAgICAgICBtYW5hZ2VyLl9zZWdtZW50UHJvbWlzZXMuZGVsZXRlKHNlZ21lbnRJZCk7CkBA
IC00NjQsNjIgKzY0OSw2IEBAIFdlYkluc3BlY3Rvci5SZXBsYXlNYW5hZ2VyLnByb3RvdHlwZSA9
IHsKIAogICAgIC8vIFByaXZhdGUKIAotICAgIC8vIEZJWE1FOiB0aGVzZSBtZXRob2RzIHNob3Vs
ZCBiZSBwcml2YXRlIGFuZCBvbmx5IGFjY2Vzc2VkIGJ5IGltcGxlbWVudGF0aW9ucyBvZiB0aGUg
cHVibGljIEFQSSwKLSAgICAvLyB3aGljaCBzaG91bGQgcHJvcGVybHkgY2hhaW4gYXN5bmMgY2Fs
bHMgbGVhZGluZyB1cCB0byB0aGVzZSBsb3ctbGV2ZWwgYmFja2VuZCBjYWxscy4gT3RoZXJ3aXNl
LAotICAgIC8vIHRoZWlyIHByZWNvbmRpdGlvbnMgb24gc2Vzc2lvbiBhbmQgc2VnbWVudCBzdGF0
ZSBhcmUgdG9vIHN0cm9uZyBmb3Igc2NlbmFyaW9zIHRyaWdnZXJlZCBieSB0aGUgVUkuCi0KLSAg
ICBzdGFydENhcHR1cmluZzogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgY29uc29sZS5hc3Nl
cnQodGhpcy5zZXNzaW9uU3RhdGUgPT09IFdlYkluc3BlY3Rvci5SZXBsYXlNYW5hZ2VyLlNlc3Np
b25TdGF0ZS5JbmFjdGl2ZSk7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuc2VnbWVudFN0
YXRlID09PSBXZWJJbnNwZWN0b3IuUmVwbGF5TWFuYWdlci5TZWdtZW50U3RhdGUuVW5sb2FkZWQp
OwotCi0gICAgICAgIFJlcGxheUFnZW50LnN0YXJ0Q2FwdHVyaW5nKCk7Ci0gICAgfSwKLQotICAg
IHN0b3BDYXB0dXJpbmc6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0
KHRoaXMuc2Vzc2lvblN0YXRlID09PSBXZWJJbnNwZWN0b3IuUmVwbGF5TWFuYWdlci5TZXNzaW9u
U3RhdGUuQ2FwdHVyaW5nKTsKLSAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5zZWdtZW50U3Rh
dGUgPT09IFdlYkluc3BlY3Rvci5SZXBsYXlNYW5hZ2VyLlNlZ21lbnRTdGF0ZS5BcHBlbmRpbmcp
OwotCi0gICAgICAgIFJlcGxheUFnZW50LnN0b3BDYXB0dXJpbmcoKTsKLSAgICB9LAotCi0gICAg
cmVwbGF5VG9NYXJrSW5kZXg6IGZ1bmN0aW9uKHJlcGxheVBvc2l0aW9uKQotICAgIHsKLSAgICAg
ICAgY29uc29sZS5hc3NlcnQocmVwbGF5UG9zaXRpb24gaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3Iu
UmVwbGF5UG9zaXRpb24pOwotCi0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuc2Vzc2lvblN0
YXRlICE9PSBXZWJJbnNwZWN0b3IuUmVwbGF5TWFuYWdlci5TZXNzaW9uU3RhdGUuQ2FwdHVyaW5n
KTsKLSAgICAgICAgLy8gRklYTUU6IE9uY2UgdGhlIHB1YmxpYyBBUEkgaXMgYXN5bmNocm9ub3Vz
LCB3ZSBzaG91bGQgYXNzZXJ0IHRoYXQgc2VnbWVudFN0YXRlIGlzIExvYWRlZC4KLQotICAgICAg
ICBSZXBsYXlBZ2VudC5yZXBsYXlUb1Bvc2l0aW9uKHJlcGxheVBvc2l0aW9uLCB0aGlzLnBsYXli
YWNrU3BlZWQgPT09IFdlYkluc3BlY3Rvci5SZXBsYXlNYW5hZ2VyLlBsYXliYWNrU3BlZWQuRmFz
dEZvcndhcmQpOwotICAgIH0sCi0KLSAgICByZXBsYXlUb0NvbXBsZXRpb246IGZ1bmN0aW9uKCkK
LSAgICB7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuc2Vzc2lvblN0YXRlICE9PSBXZWJJ
bnNwZWN0b3IuUmVwbGF5TWFuYWdlci5TZXNzaW9uU3RhdGUuQ2FwdHVyaW5nKTsKLSAgICAgICAg
Ly8gRklYTUU6IE9uY2UgdGhlIHB1YmxpYyBBUEkgaXMgYXN5bmNocm9ub3VzLCB3ZSBzaG91bGQg
YXNzZXJ0IHRoYXQgc2VnbWVudFN0YXRlIGlzIExvYWRlZC4KLQotICAgICAgICBSZXBsYXlBZ2Vu
dC5yZXBsYXlUb0NvbXBsZXRpb24odGhpcy5wbGF5YmFja1NwZWVkID09PSBXZWJJbnNwZWN0b3Iu
UmVwbGF5TWFuYWdlci5QbGF5YmFja1NwZWVkLkZhc3RGb3J3YXJkKTsKLSAgICB9LAotCi0gICAg
cGF1c2VQbGF5YmFjazogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgY29uc29sZS5hc3NlcnQo
dGhpcy5zZXNzaW9uU3RhdGUgPT09IFdlYkluc3BlY3Rvci5SZXBsYXlNYW5hZ2VyLlNlc3Npb25T
dGF0ZS5SZXBsYXlpbmcpOwotICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLnNlZ21lbnRTdGF0
ZSA9PT0gV2ViSW5zcGVjdG9yLlJlcGxheU1hbmFnZXIuU2VnbWVudFN0YXRlLkRpc3BhdGNoaW5n
KTsKLQotICAgICAgICBSZXBsYXlBZ2VudC5wYXVzZVBsYXliYWNrKCk7Ci0gICAgfSwKLQotICAg
IHN0b3BQbGF5YmFjazogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgY29uc29sZS5hc3NlcnQo
dGhpcy5zZXNzaW9uU3RhdGUgPT09IFdlYkluc3BlY3Rvci5SZXBsYXlNYW5hZ2VyLlNlc3Npb25T
dGF0ZS5SZXBsYXlpbmcpOwotICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLnNlZ21lbnRTdGF0
ZSA9PT0gV2ViSW5zcGVjdG9yLlJlcGxheU1hbmFnZXIuU2VnbWVudFN0YXRlLkxvYWRlZCk7Ci0K
LSAgICAgICAgUmVwbGF5QWdlbnQuc3RvcFBsYXliYWNrKCk7Ci0gICAgfSwKLQotICAgIC8vIFBy
aXZhdGUKLQogICAgIF9jaGFuZ2VTZXNzaW9uU3RhdGU6IGZ1bmN0aW9uKG5ld1N0YXRlKQogICAg
IHsKICAgICAgICAgLy8gV2FybiBhYm91dCBuby1vcCBzdGF0ZSBjaGFuZ2VzLiBXZSBzaG91bGRu
J3QgYmUgc2VlaW5nIHRoZW0uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9SZXBsYXlEYXNoYm9hcmRWaWV3LmpzIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVwbGF5RGFzaGJvYXJkVmlldy5qcwppbmRleCA0
YjNkZjQzNzM0MDQzMWVmMjFhYmMyNDI5MDc0MGNmNjhlMWYxN2MwLi44NGE5MWEyZTI3MDE4MGM2
ZDBjZTg4ZjYyY2UwODlkOTFjOTc5NDA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9SZXBsYXlEYXNoYm9hcmRWaWV3LmpzCisrKyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1JlcGxheURhc2hib2FyZFZpZXcu
anMKQEAgLTg2LDIyICs4Niw0NCBAQCBXZWJJbnNwZWN0b3IuUmVwbGF5RGFzaGJvYXJkVmlldy5w
cm90b3R5cGUgPSB7CiAKICAgICBfY2FwdHVyZUJ1dHRvbkl0ZW1DbGlja2VkOiBmdW5jdGlvbigp
CiAgICAgeworICAgICAgICAvLyBEZWJvdW5jZS4KKyAgICAgICAgdmFyIGJ1dHRvbiA9IHRoaXMu
X2NhcHR1cmVCdXR0b25JdGVtOworICAgICAgICBidXR0b24uZW5hYmxlZCA9IGZhbHNlOworCisg
ICAgICAgIHZhciByZXN1bHQgPSBudWxsOworCiAgICAgICAgIGlmIChXZWJJbnNwZWN0b3IucmVw
bGF5TWFuYWdlci5zZXNzaW9uU3RhdGUgIT09IFdlYkluc3BlY3Rvci5SZXBsYXlNYW5hZ2VyLlNl
c3Npb25TdGF0ZS5DYXB0dXJpbmcpCi0gICAgICAgICAgICBXZWJJbnNwZWN0b3IucmVwbGF5TWFu
YWdlci5zdGFydENhcHR1cmluZygpOworICAgICAgICAgICAgcmVzdWx0ID0gV2ViSW5zcGVjdG9y
LnJlcGxheU1hbmFnZXIuc3RhcnRDYXB0dXJpbmcoKTsKICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgV2ViSW5zcGVjdG9yLnJlcGxheU1hbmFnZXIuc3RvcENhcHR1cmluZygpOworICAgICAgICAg
ICAgcmVzdWx0ID0gV2ViSW5zcGVjdG9yLnJlcGxheU1hbmFnZXIuc3RvcENhcHR1cmluZygpOwor
CisgICAgICAgIHJlc3VsdC5jYXRjaChmdW5jdGlvbihlcnJvcikgeworICAgICAgICAgICAgY29u
c29sZS5lcnJvcigiRmFpbGVkIHRvIHN0YXJ0IG9yIHN0b3AgY2FwdHVyaW5nOiAiLCBlcnJvcik7
CisgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBidXR0b24uZW5hYmxl
ZCA9IHRydWU7CisgICAgICAgIH0pOwogICAgIH0sCiAKICAgICBfcmVwbGF5QnV0dG9uSXRlbUNs
aWNrZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQoV2Vi
SW5zcGVjdG9yLnJlcGxheU1hbmFnZXIuc2Vzc2lvblN0YXRlICE9PSBXZWJJbnNwZWN0b3IuUmVw
bGF5TWFuYWdlci5TZXNzaW9uU3RhdGUuQ2FwdHVyaW5nLCAiVHJpZWQgdG8gc3RhcnQgcmVwbGF5
aW5nIHdoaWxlIFNlc3Npb25TdGF0ZSBpcyBDYXB0dXJpbmchIik7CiAKLSAgICAgICAgaWYgKFdl
Ykluc3BlY3Rvci5yZXBsYXlNYW5hZ2VyLnNlc3Npb25TdGF0ZSA9PT0gV2ViSW5zcGVjdG9yLlJl
cGxheU1hbmFnZXIuU2Vzc2lvblN0YXRlLkluYWN0aXZlKQotICAgICAgICAgICAgV2ViSW5zcGVj
dG9yLnJlcGxheU1hbmFnZXIucmVwbGF5VG9Db21wbGV0aW9uKCk7Ci0gICAgICAgIGVsc2UgaWYg
KFdlYkluc3BlY3Rvci5yZXBsYXlNYW5hZ2VyLnNlZ21lbnRTdGF0ZSA9PT0gV2ViSW5zcGVjdG9y
LlJlcGxheU1hbmFnZXIuU2VnbWVudFN0YXRlLkRpc3BhdGNoaW5nKQotICAgICAgICAgICAgV2Vi
SW5zcGVjdG9yLnJlcGxheU1hbmFnZXIucGF1c2VQbGF5YmFjaygpOworICAgICAgICAvLyBEZWJv
dW5jZS4KKyAgICAgICAgdmFyIGJ1dHRvbiA9IHRoaXMuX3JlcGxheUJ1dHRvbkl0ZW07CisgICAg
ICAgIGJ1dHRvbi5lbmFibGVkID0gZmFsc2U7CisKKyAgICAgICAgdmFyIHJlc3VsdCA9IG51bGw7
CisKKyAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5yZXBsYXlNYW5hZ2VyLnNlZ21lbnRTdGF0ZSA9
PT0gV2ViSW5zcGVjdG9yLlJlcGxheU1hbmFnZXIuU2VnbWVudFN0YXRlLkRpc3BhdGNoaW5nKQor
ICAgICAgICAgICAgcmVzdWx0ID0gV2ViSW5zcGVjdG9yLnJlcGxheU1hbmFnZXIucGF1c2VQbGF5
YmFjaygpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBXZWJJbnNwZWN0b3IucmVwbGF5TWFu
YWdlci5yZXBsYXlUb0NvbXBsZXRpb24oKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IFdlYkluc3Bl
Y3Rvci5yZXBsYXlNYW5hZ2VyLnJlcGxheVRvQ29tcGxldGlvbigpOworCisgICAgICAgIHJlc3Vs
dC5jYXRjaChmdW5jdGlvbihlcnJvcikgeworICAgICAgICAgICAgY29uc29sZS5lcnJvcigiRmFp
bGVkIHRvIHBsYXkgb3IgcGF1c2U6ICIsIGVycm9yKTsKKyAgICAgICAgfSkudGhlbihmdW5jdGlv
bigpIHsKKyAgICAgICAgICAgIGJ1dHRvbi5lbmFibGVkID0gdHJ1ZTsKKyAgICAgICAgfSk7CiAg
ICAgfSwKIAogICAgIF9lamVjdEJ1dHRvbkl0ZW1DbGlja2VkOiBmdW5jdGlvbihldmVudCkKQEAg
LTExNCwxNyArMTM2LDE4IEBAIFdlYkluc3BlY3Rvci5SZXBsYXlEYXNoYm9hcmRWaWV3LnByb3Rv
dHlwZSA9IHsKIAogICAgICAgICBXZWJJbnNwZWN0b3IucmVwbGF5TWFuYWdlci5jcmVhdGVTZXNz
aW9uKCkKICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIHN3aXRjaFRvRW1wdHlTZXNzaW9uKHNl
c3Npb25JZCkgewotICAgICAgICAgICAgICAgIGJ1dHRvbi5lbmFibGVkID0gdHJ1ZTsKICAgICAg
ICAgICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLnJlcGxheU1hbmFnZXIuc3dpdGNoU2Vzc2lv
bihzZXNzaW9uSWQpOwogICAgICAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24oZXJyb3IpIHsKLSAg
ICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCJGYWlsZWQgdG8gZWplY3QgY3VycmVjdCByZWNv
cmRpbmc6ICIsIGVycm9yKTsKKyAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCJGYWlsZWQg
dG8gZWplY3QgY3VycmVudCByZWNvcmRpbmc6ICIsIGVycm9yKTsKKyAgICAgICAgICAgIH0pLnRo
ZW4oZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgYnV0dG9uLmVuYWJsZWQgPSB0cnVlOwog
ICAgICAgICAgICAgfSk7CiAgICAgfSwKIAogICAgIF9jYXB0dXJlU3RhcnRlZDogZnVuY3Rpb24o
KQogICAgIHsKLSAgICAgICAgdGhpcy5fY2FwdHVyZUJ1dHRvbkl0ZW0uaGlkZGVuID0gZmFsc2U7
CiAgICAgICAgIHRoaXMuX2NhcHR1cmVCdXR0b25JdGVtLmFjdGl2YXRlZCA9IHRydWU7CisgICAg
ICAgIHRoaXMuX2NhcHR1cmVCdXR0b25JdGVtLmhpZGRlbiA9IGZhbHNlOwogICAgICAgICB0aGlz
Ll9yZXBsYXlCdXR0b25JdGVtLmhpZGRlbiA9IHRydWU7CiAgICAgICAgIHRoaXMuX2VqZWN0QnV0
dG9uSXRlbS5oaWRkZW4gPSB0cnVlOwogICAgIH0sCkBAIC0xMzksMTEgKzE2MiwxMyBAQCBXZWJJ
bnNwZWN0b3IuUmVwbGF5RGFzaGJvYXJkVmlldy5wcm90b3R5cGUgPSB7CiAKICAgICBfcGxheWJh
Y2tTdGFydGVkOiBmdW5jdGlvbigpCiAgICAgeworICAgICAgICAvLyBTaG93IHRoZSBwYXVzZSBi
dXR0b24uCiAgICAgICAgIHRoaXMuX3JlcGxheUJ1dHRvbkl0ZW0udG9nZ2xlZCA9IHRydWU7CiAg
ICAgfSwKIAogICAgIF9wbGF5YmFja1BhdXNlZDogZnVuY3Rpb24oKQogICAgIHsKKyAgICAgICAg
Ly8gU2hvdyB0aGUgcGxheSBidXR0b24uCiAgICAgICAgIHRoaXMuX3JlcGxheUJ1dHRvbkl0ZW0u
dG9nZ2xlZCA9IGZhbHNlOwogICAgIH0sCiAK
</data>
<flag name="review"
          id="260013"
          type_id="1"
          status="+"
          setter="timothy"
    />
          </attachment>
      

    </bug>

</bugzilla>