<?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>144650</bug_id>
          
          <creation_ts>2015-05-05 17:37:37 -0700</creation_ts>
          <short_desc>Web Inspector: REGRESSION (Tabs): Issues reloading a resource with breakpoints</short_desc>
          <delta_ts>2015-05-11 16:20:01 -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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Joseph Pecoraro">joepeck</reporter>
          <assigned_to name="Timothy Hatcher">timothy</assigned_to>
          <cc>burg</cc>
    
    <cc>graouts</cc>
    
    <cc>joepeck</cc>
    
    <cc>jonowells</cc>
    
    <cc>mattbaker</cc>
    
    <cc>nvasilyev</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1091963</commentid>
    <comment_count>0</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-05-05 17:37:37 -0700</bug_when>
    <thetext>* SUMMARY
REGRESSION(Tabs) Issues reloading a resource with breakpoints

* STEPS TO REPRODUCE
1. Inspect &lt;http://bogojoker.com/shell/&gt;
2. Set a breakpoint on easySlider.min.js:56:21 (&quot;if (autoplay) {&quot;)
3. Cmd+R to reload
  =&gt; Duplicate breakpoints, with 1 inactive and one on the pre-pretty-printed line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1091964</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-05-05 17:37:52 -0700</bug_when>
    <thetext>&lt;rdar://problem/20829494&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1091969</commentid>
    <comment_count>2</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-05-05 17:51:20 -0700</bug_when>
    <thetext>Tracing SourceCodeTextEditor.prototype.close calls I see ResourceSidebarPanel closes its views when the main resource changes:

    Views/SourceCodeTextEditor.js:130:20: CONSOLE LOG close called
    Views/SourceCodeTextEditor.js:131:22: CONSOLE TRACE
    0: close(Views/SourceCodeTextEditor.js:131:22)
    1: closed(Views/TextResourceContentView.js:120:31)
    2: _disassociateFromContentView(Views/ContentViewContainer.js:459:27)
    3: closeAllContentViews(Views/ContentViewContainer.js:384:46)
    4: closed(Views/ClusterContentView.js:85:56)
    5: closed(Views/ResourceClusterContentView.js:135:62)
    6: _disassociateFromContentView(Views/ContentViewContainer.js:459:27)
    7: closeAllContentViews(Views/ContentViewContainer.js:384:46)
    8: _mainFrameMainResourceDidChange(Views/ResourceSidebarPanel.js:170:70)
    9: _mainResourceDidChange(Views/ResourceSidebarPanel.js:160:45)
    10: dispatch(Base/Object.js:124:55)
    11: dispatchEventToListeners(Base/Object.js:139:21)
    12: _dispatchMainResourceDidChangeEvent(Models/Frame.js:474:38)
    13: commitProvisionalLoad(Models/Frame.js:138:53)
    14: frameDidNavigate(Controllers/FrameResourceManager.js:105:40)
    15: frameNavigated(Protocol/PageObserver.js:42:59)
    16: dispatchEvent(Protocol/InspectorBackend.js:353:42)
    17: _dispatchEvent(Protocol/InspectorBackend.js:233:32)
    18: dispatch(Protocol/InspectorBackend.js:88:32)
    19: dispatchNextQueuedMessageFromBackend(Protocol/MessageDispatcher.js:42:34)

Other panels, like the DebuggerSidebarPanel should probably be doing the same.

In this case, what I&apos;m seeing is the old ContentView without a sidebar tree element, and selecting the _new_ easySlider.min.js tree element gives me what I expect.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1092013</commentid>
    <comment_count>3</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-05-05 19:56:21 -0700</bug_when>
    <thetext>I count a jumble of issues investigating this:

1. DebuggerSidebarPanel needs to clear content views and tree elements on main resource changes.
  - closeAllContentViews
  - breakpointsContentTreeOutline, remove non-global folder tree elements

2. BreakpointTreeElement restoration doesn&apos;t work
  - display source code for a WebInspector.Breakpoint represented object

3. Cookie saving is cumulative instead of replacing
  - TabContentView adds new cookie state onto its cookie instead of replacing the cookie

4. TabContentView.restoreStateFromCookie(causedByReload) parameter is never set
  - sounds like a missed opportunity, but it is always unused

5. Order of operations on WebInspector.Frame.Event.MainResourceDidChange is problematic
  - Main.js performs state restoration on MainResourceDidChange
  - NavigationSidebarPanels (Resources, Debugger, etc) perform clean up MainResourceDidChange
  - Typically, Main.js will do its work first, which may be very problematic in restoration!

So, I&apos;m going to hesitantly attach a patch, but Tim, feel free to take over this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1092016</commentid>
    <comment_count>4</comment_count>
      <attachid>252441</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-05-05 20:07:08 -0700</bug_when>
    <thetext>Created attachment 252441
[PATCH] Progress

I noticed that DOM Node restoration is failing. I believe it was failing before my changes as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1092017</commentid>
    <comment_count>5</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-05-05 20:09:38 -0700</bug_when>
    <thetext>&gt; 5. Order of operations on WebInspector.Frame.Event.MainResourceDidChange is
&gt; problematic
&gt;   - Main.js performs state restoration on MainResourceDidChange
&gt;   - NavigationSidebarPanels (Resources, Debugger, etc) perform clean up
&gt; MainResourceDidChange
&gt;   - Typically, Main.js will do its work first, which may be very problematic
&gt; in restoration!

The reason this is problematic was because of this scenario:

  (1) DebuggerSidebarPanel wants to remove its ResourceTreeElements for the old Frame and add ResourceTreeElements for the new Frame
  (2) State restoration wants to find a ResourceTreeElement basically just via URL

On reload, in cases where (2) happens before (1), then the ResourceTreeElement found during restoration was the OLD ResourceTreeElement, that immediately gets removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1092149</commentid>
    <comment_count>6</comment_count>
      <attachid>252441</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2015-05-06 07:41:51 -0700</bug_when>
    <thetext>Comment on attachment 252441
[PATCH] Progress

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

&gt; Source/WebInspectorUI/UserInterface/Views/ContentView.js:124
&gt; +        console.error(&quot;Unknown ContentView&quot;, representedObject);
&gt; +
&gt;          throw &quot;Can&apos;t make a ContentView for an unknown representedObject.&quot;;

I&apos;ve been considering removing the throw here and just doing a console.error.

&gt; Source/WebInspectorUI/UserInterface/Views/DebuggerSidebarPanel.js:393
&gt; +        for (var i = this._breakpointsContentTreeOutline.children.length - 1; i &gt;= 0; --i) {
&gt; +            var treeElement = this._breakpointsContentTreeOutline.children[i];
&gt; +            if (treeElement !== this._globalBreakpointsFolderTreeElement)
&gt; +                this._breakpointsContentTreeOutline.removeChildAtIndex(i, true, true);
&gt; +        }

You should not need to do this. DebuggerSidebarPanel opts-in to NavigationSidebarPanel&apos;s autoPruneOldTopLevelResourceTreeElements. That will remove ResourceTreeElements that go away on MainResourceDidChange, ChildFrameWasRemoved, and ResourceWasRemoved events. The closeAllContentViews is all we should need.

&gt; Source/WebInspectorUI/UserInterface/Views/DebuggerSidebarPanel.js:429
&gt; +        // FIXME: Is this needed, now that we clear everything on main resource changes?

Yes, since NavigationSidebarPanel does not auto-prune these.

&gt; Source/WebInspectorUI/UserInterface/Views/TabContentView.js:127
&gt; -        var cookie = this._cookieSetting.value || {};
&gt; +        var cookie = {};

Ah, yes. I see how this was wrong now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1093240</commentid>
    <comment_count>7</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2015-05-08 11:21:23 -0700</bug_when>
    <thetext>I&apos;ll take this over from Joe since he is out on vacation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1093904</commentid>
    <comment_count>8</comment_count>
      <attachid>252894</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2015-05-11 15:10:11 -0700</bug_when>
    <thetext>Created attachment 252894
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1093913</commentid>
    <comment_count>9</comment_count>
      <attachid>252894</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2015-05-11 15:38:17 -0700</bug_when>
    <thetext>Comment on attachment 252894
Patch

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

r=me, with some speling mistakes. Naming suggestions are sort of advisory, since this patch didn&apos;t establish the naming convention.

&gt; Source/WebInspectorUI/ChangeLog:5
&gt; +

I really appreciate the big list of issues here :)

&gt; Source/WebInspectorUI/UserInterface/Base/Main.js:1147
&gt; +WebInspector._restoreCookieForOpenTabs = function(causedByNaviation)

&quot;navigation&quot;

&gt; Source/WebInspectorUI/UserInterface/Views/ContentViewContainer.js:379
&gt; +        var oldCurrentContentView = this.currentContentView;

visibleContentView? shownContentView? oldCurrent is awkward.

&gt; Source/WebInspectorUI/UserInterface/Views/DebuggerSidebarPanel.js:390
&gt; +            // prune normally happen on a delay.

&quot;happens&quot; on an later event loop turn.

&gt; Source/WebInspectorUI/UserInterface/Views/NavigationSidebarPanel.js:71
&gt; +        this._autoPruneOldTopLevelResourceTreeElements = autoPruneOldTopLevelResourceTreeElements || false;

Why not !!autoPruneOldTopLevelResourceElements?

As for the autoPruneOldXXX, I think a naming convention like autoPruneStaleXXX better conveys why it&apos;s being pruned.

And for a flag, this._shouldAutoPruneTopLevelResourceTreeElements makes it clear what purpose it serves (a policy decision).

&gt; Source/WebInspectorUI/UserInterface/Views/NavigationSidebarPanel.js:420
&gt; +    pruneOldResourceTreeElements()

See naming note above.

&gt; Source/WebInspectorUI/UserInterface/Views/NavigationSidebarPanel.js:424
&gt; +            this._checkForOldResourcesTimeoutIdentifier = undefined;

Why not delete?

&gt; Source/WebInspectorUI/UserInterface/Views/NavigationSidebarPanel.js:-620
&gt; -        this._checkForOldResourcesTimeoutIdentifier = setTimeout(delayedWork.bind(this), 0);

(We really should make a helper method to do this coalescing, I go cross-eyed looking for mistakes every time it&apos;s reimplemented.)

&gt; Source/WebInspectorUI/UserInterface/Views/TabContentView.js:110
&gt; +    restoreStateFromCookie: function(causedByNaviation)

&quot;navigation&quot;

&gt; Source/WebInspectorUI/UserInterface/Views/TabContentView.js:115
&gt;          var matchTypeOnlyDelayForReload = 2000;

Might as well fix this variable name to be consistent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1093936</commentid>
    <comment_count>10</comment_count>
      <attachid>252894</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2015-05-11 16:19:52 -0700</bug_when>
    <thetext>Comment on attachment 252894
Patch

https://trac.webkit.org/r184130</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252441</attachid>
            <date>2015-05-05 20:07:08 -0700</date>
            <delta_ts>2015-05-11 15:09:59 -0700</delta_ts>
            <desc>[PATCH] Progress</desc>
            <filename>progress.patch</filename>
            <type>text/plain</type>
            <size>7417</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvTWFp
bi5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvTWFpbi5qcwpp
bmRleCA2MmZmYjA3Li4xNGE3MjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9CYXNlL01haW4uanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvQmFzZS9NYWluLmpzCkBAIC0xMTE2LDcgKzExMTYsMTEgQEAgV2ViSW5zcGVj
dG9yLl9tYWluUmVzb3VyY2VEaWRDaGFuZ2UgPSBmdW5jdGlvbihldmVudCkKIAogICAgIHRoaXMu
X2luUHJvdmlzaW9uYWxMb2FkID0gZmFsc2U7CiAKLSAgICB0aGlzLl9yZXN0b3JlQ29va2llRm9y
T3BlblRhYnMoKTsKKyAgICAvLyBGSVhNRTogUnVuIGNvb2tpZSByZXN0b3JhdGlvbiBhZnRlciB3
ZSBhcmUgc3VyZSBhbGwgb2YgdGhlIFRhYnMgYW5kCisgICAgLy8gTmF2aWdhdGlvblNpZGViYXJQ
YW5lbHMgaGF2ZSB1cGRhdGVkIHdpdGggcmVzcGVjdCB0byB0aGUgbWFpbiByZXNvdXJjZSBjaGFu
Z2UuCisgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgdGhpcy5fcmVzdG9yZUNv
b2tpZUZvck9wZW5UYWJzKCk7CisgICAgfS5iaW5kKHRoaXMpLCAwKTsKIAogICAgIHRoaXMuX3Vw
ZGF0ZURvd25sb2FkVG9vbGJhckJ1dHRvbigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRWaWV3LmpzCmluZGV4IDU5OTNi
ZmMuLmJiMjYxNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL0NvbnRlbnRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRWaWV3LmpzCkBAIC01Nyw2ICs1NywxMSBAQCBXZWJJbnNw
ZWN0b3IuQ29udGVudFZpZXcgPSBmdW5jdGlvbihyZXByZXNlbnRlZE9iamVjdCwgZXh0cmFBcmd1
bWVudHMpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuUmVuZGVyaW5n
RnJhbWVUaW1lbGluZVZpZXcocmVwcmVzZW50ZWRPYmplY3QsIGV4dHJhQXJndW1lbnRzKTsKICAg
ICAgICAgfQogCisgICAgICAgIGlmIChyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYklu
c3BlY3Rvci5CcmVha3BvaW50KSB7CisgICAgICAgICAgICBpZiAocmVwcmVzZW50ZWRPYmplY3Qu
c291cmNlQ29kZUxvY2F0aW9uKQorICAgICAgICAgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVj
dG9yLkNvbnRlbnRWaWV3KHJlcHJlc2VudGVkT2JqZWN0LnNvdXJjZUNvZGVMb2NhdGlvbi5kaXNw
bGF5U291cmNlQ29kZSwgZXh0cmFBcmd1bWVudHMpOworICAgICAgICB9CisKICAgICAgICAgaWYg
KHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VPYmpl
Y3QpCiAgICAgICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5ET01TdG9yYWdlQ29udGVu
dFZpZXcocmVwcmVzZW50ZWRPYmplY3QsIGV4dHJhQXJndW1lbnRzKTsKIApAQCAtMTE0LDYgKzEx
OSw4IEBAIFdlYkluc3BlY3Rvci5Db250ZW50VmlldyA9IGZ1bmN0aW9uKHJlcHJlc2VudGVkT2Jq
ZWN0LCBleHRyYUFyZ3VtZW50cykKIAogICAgICAgICBjb25zb2xlLmFzc2VydCghV2ViSW5zcGVj
dG9yLkNvbnRlbnRWaWV3LmlzVmlld2FibGUocmVwcmVzZW50ZWRPYmplY3QpKTsKIAorICAgICAg
ICBjb25zb2xlLmVycm9yKCJVbmtub3duIENvbnRlbnRWaWV3IiwgcmVwcmVzZW50ZWRPYmplY3Qp
OworCiAgICAgICAgIHRocm93ICJDYW4ndCBtYWtlIGEgQ29udGVudFZpZXcgZm9yIGFuIHVua25v
d24gcmVwcmVzZW50ZWRPYmplY3QuIjsKICAgICB9CiAKQEAgLTE0Nyw2ICsxNTQsOCBAQCBXZWJJ
bnNwZWN0b3IuQ29udGVudFZpZXcuaXNWaWV3YWJsZSA9IGZ1bmN0aW9uKHJlcHJlc2VudGVkT2Jq
ZWN0KQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBpZiAocmVwcmVzZW50ZWRPYmplY3QgaW5z
dGFuY2VvZiBXZWJJbnNwZWN0b3IuVGltZWxpbmUpCiAgICAgICAgIHJldHVybiB0cnVlOworICAg
IGlmIChyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5CcmVha3BvaW50
KQorICAgICAgICByZXR1cm4gcmVwcmVzZW50ZWRPYmplY3Quc291cmNlQ29kZUxvY2F0aW9uOwog
ICAgIGlmIChyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5ET01TdG9y
YWdlT2JqZWN0KQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBpZiAocmVwcmVzZW50ZWRPYmpl
Y3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuQ29va2llU3RvcmFnZU9iamVjdCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RlYnVnZ2VyU2lk
ZWJhclBhbmVsLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
RGVidWdnZXJTaWRlYmFyUGFuZWwuanMKaW5kZXggY2MwNWE2Ny4uNjEyM2MxNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGVidWdnZXJTaWRl
YmFyUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvRGVidWdnZXJTaWRlYmFyUGFuZWwuanMKQEAgLTIyNywxMSArMjI3LDE1IEBAIFdlYkluc3Bl
Y3Rvci5EZWJ1Z2dlclNpZGViYXJQYW5lbCA9IGNsYXNzIERlYnVnZ2VyU2lkZWJhclBhbmVsIGV4
dGVuZHMgV2ViSW5zcGVjCiAKICAgICAgICAgdmFyIHJlcHJlc2VudGVkT2JqZWN0ID0gc2VsZWN0
ZWRUcmVlRWxlbWVudC5yZXByZXNlbnRlZE9iamVjdDsKIAotICAgICAgICBpZiAocmVwcmVzZW50
ZWRPYmplY3QgPT09IFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1hbmFnZXIuYWxsRXhjZXB0aW9uc0Jy
ZWFrcG9pbnQpCisgICAgICAgIGlmIChyZXByZXNlbnRlZE9iamVjdCA9PT0gV2ViSW5zcGVjdG9y
LmRlYnVnZ2VyTWFuYWdlci5hbGxFeGNlcHRpb25zQnJlYWtwb2ludCkgewogICAgICAgICAgICAg
Y29va2llW1dlYkluc3BlY3Rvci5EZWJ1Z2dlclNpZGViYXJQYW5lbC5TZWxlY3RlZEFsbEV4Y2Vw
dGlvbnNDb29raWVLZXldID0gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQog
Ci0gICAgICAgIGlmIChyZXByZXNlbnRlZE9iamVjdCA9PT0gV2ViSW5zcGVjdG9yLmRlYnVnZ2Vy
TWFuYWdlci5hbGxVbmNhdWdodEV4Y2VwdGlvbnNCcmVha3BvaW50KQorICAgICAgICBpZiAocmVw
cmVzZW50ZWRPYmplY3QgPT09IFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1hbmFnZXIuYWxsVW5jYXVn
aHRFeGNlcHRpb25zQnJlYWtwb2ludCkgewogICAgICAgICAgICAgY29va2llW1dlYkluc3BlY3Rv
ci5EZWJ1Z2dlclNpZGViYXJQYW5lbC5TZWxlY3RlZEFsbFVuY2F1Z2h0RXhjZXB0aW9uc0Nvb2tp
ZUtleV0gPSB0cnVlOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAKICAgICAgICAg
c3VwZXIuc2F2ZVN0YXRlVG9Db29raWUoY29va2llKTsKICAgICB9CkBAIC0zODAsNiArMzg0LDE0
IEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclNpZGViYXJQYW5lbCA9IGNsYXNzIERlYnVnZ2VyU2lk
ZWJhclBhbmVsIGV4dGVuZHMgV2ViSW5zcGVjCiAKICAgICBfbWFpblJlc291cmNlQ2hhbmdlZChl
dmVudCkKICAgICB7CisgICAgICAgIHRoaXMuY29udGVudEJyb3dzZXIuY29udGVudFZpZXdDb250
YWluZXIuY2xvc2VBbGxDb250ZW50Vmlld3MoKTsKKworICAgICAgICBmb3IgKHZhciBpID0gdGhp
cy5fYnJlYWtwb2ludHNDb250ZW50VHJlZU91dGxpbmUuY2hpbGRyZW4ubGVuZ3RoIC0gMTsgaSA+
PSAwOyAtLWkpIHsKKyAgICAgICAgICAgIHZhciB0cmVlRWxlbWVudCA9IHRoaXMuX2JyZWFrcG9p
bnRzQ29udGVudFRyZWVPdXRsaW5lLmNoaWxkcmVuW2ldOworICAgICAgICAgICAgaWYgKHRyZWVF
bGVtZW50ICE9PSB0aGlzLl9nbG9iYWxCcmVha3BvaW50c0ZvbGRlclRyZWVFbGVtZW50KQorICAg
ICAgICAgICAgICAgIHRoaXMuX2JyZWFrcG9pbnRzQ29udGVudFRyZWVPdXRsaW5lLnJlbW92ZUNo
aWxkQXRJbmRleChpLCB0cnVlLCB0cnVlKTsKKyAgICAgICAgfQorCiAgICAgICAgIHZhciByZXNv
dXJjZSA9IGV2ZW50LnRhcmdldC5tYWluUmVzb3VyY2U7CiAgICAgICAgIHRoaXMuX2FkZFRyZWVF
bGVtZW50Rm9yU291cmNlQ29kZVRvQ29udGVudFRyZWVPdXRsaW5lKHJlc291cmNlKTsKICAgICAg
ICAgdGhpcy5fYWRkQnJlYWtwb2ludHNGb3JTb3VyY2VDb2RlKHJlc291cmNlKTsKQEAgLTQxNCw2
ICs0MjYsNyBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJTaWRlYmFyUGFuZWwgPSBjbGFzcyBEZWJ1
Z2dlclNpZGViYXJQYW5lbCBleHRlbmRzIFdlYkluc3BlYwogCiAgICAgX3NjcmlwdHNDbGVhcmVk
KGV2ZW50KQogICAgIHsKKyAgICAgICAgLy8gRklYTUU6IElzIHRoaXMgbmVlZGVkLCBub3cgdGhh
dCB3ZSBjbGVhciBldmVyeXRoaW5nIG9uIG1haW4gcmVzb3VyY2UgY2hhbmdlcz8KICAgICAgICAg
Zm9yICh2YXIgaSA9IHRoaXMuX2JyZWFrcG9pbnRzQ29udGVudFRyZWVPdXRsaW5lLmNoaWxkcmVu
Lmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7CiAgICAgICAgICAgICB2YXIgdHJlZUVsZW1lbnQg
PSB0aGlzLl9icmVha3BvaW50c0NvbnRlbnRUcmVlT3V0bGluZS5jaGlsZHJlbltpXTsKICAgICAg
ICAgICAgIGlmICghKHRyZWVFbGVtZW50IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlNjcmlwdFRy
ZWVFbGVtZW50KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL05hdmlnYXRpb25TaWRlYmFyUGFuZWwuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLmpzCmluZGV4IDBh
YjQzNzcuLjRmMmQ5N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL05hdmlnYXRpb25TaWRlYmFyUGFuZWwuanMKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTmF2aWdhdGlvblNpZGViYXJQYW5lbC5qcwpA
QCAtMTc5LDcgKzE3OSw3IEBAIFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsID0g
Y2xhc3MgTmF2aWdhdGlvblNpZGViYXJQYW5lbCBleHRlbmRzIFdlYkluCiAKICAgICBzaG93RGVm
YXVsdENvbnRlbnRWaWV3KCkKICAgICB7Ci0gICAgICAgIC8vIEltcGxlbW5ldGVkIGJ5IHN1YmNs
YXNzZXMgaWYgbmVlZGVkIHRvIHNob3cgYSBjb250ZW50IHZpZXcgd2hlbiBubyBleGlzdGluZyB0
cmVlIGVsZW1lbnQgaXMgc2VsZWN0ZWQuCisgICAgICAgIC8vIEltcGxlbWVudGVkIGJ5IHN1YmNs
YXNzZXMgaWYgbmVlZGVkIHRvIHNob3cgYSBjb250ZW50IHZpZXcgd2hlbiBubyBleGlzdGluZyB0
cmVlIGVsZW1lbnQgaXMgc2VsZWN0ZWQuCiAgICAgfQogCiAgICAgc2hvd0RlZmF1bHRDb250ZW50
Vmlld0ZvclRyZWVFbGVtZW50KHRyZWVFbGVtZW50KQpAQCAtMTg4LDYgKzE4OCw3IEBAIFdlYklu
c3BlY3Rvci5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsID0gY2xhc3MgTmF2aWdhdGlvblNpZGViYXJQ
YW5lbCBleHRlbmRzIFdlYkluCiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRyZWVFbGVtZW50LnJl
cHJlc2VudGVkT2JqZWN0KTsKICAgICAgICAgaWYgKCF0cmVlRWxlbWVudCB8fCAhdHJlZUVsZW1l
bnQucmVwcmVzZW50ZWRPYmplY3QpCiAgICAgICAgICAgICByZXR1cm47CisKICAgICAgICAgdGhp
cy5jb250ZW50QnJvd3Nlci5zaG93Q29udGVudFZpZXdGb3JSZXByZXNlbnRlZE9iamVjdCh0cmVl
RWxlbWVudC5yZXByZXNlbnRlZE9iamVjdCk7CiAgICAgICAgIHRyZWVFbGVtZW50LnJldmVhbEFu
ZFNlbGVjdCh0cnVlLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSk7CiAgICAgfQpAQCAtNTE5LDcgKzUyMCw3
IEBAIFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsID0gY2xhc3MgTmF2aWdhdGlv
blNpZGViYXJQYW5lbCBleHRlbmRzIFdlYkluCiAgICAgICAgIHRoaXMuX3VwZGF0ZUNvbnRlbnRP
dmVyZmxvd1NoYWRvd1Zpc2liaWxpdHlTb29uKCk7CiAKICAgICAgICAgaWYgKHRoaXMuc2VsZWN0
ZWQpCi0gICAgICAgICAgICB0aGlzLl9jaGVja0VsZW1lbnRzRm9yUGVuZGluZ1ZpZXdTdGF0ZUNv
b2tpZSh0cmVlRWxlbWVudCk7CisgICAgICAgICAgICB0aGlzLl9jaGVja0VsZW1lbnRzRm9yUGVu
ZGluZ1ZpZXdTdGF0ZUNvb2tpZShbdHJlZUVsZW1lbnRdKTsKICAgICB9CiAKICAgICBfdHJlZUVs
ZW1lbnRFeHBhbmRlZE9yQ29sbGFwc2VkKHRyZWVFbGVtZW50KQpAQCAtNjY0LDkgKzY2NSw2IEBA
IFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsID0gY2xhc3MgTmF2aWdhdGlvblNp
ZGViYXJQYW5lbCBleHRlbmRzIFdlYkluCiAgICAgICAgICAgICB9KTsKICAgICAgICAgfQogCi0g
ICAgICAgIGlmICghKHRyZWVFbGVtZW50cyBpbnN0YW5jZW9mIEFycmF5KSkKLSAgICAgICAgICAg
IHRyZWVFbGVtZW50cyA9IFt0cmVlRWxlbWVudHNdOwotCiAgICAgICAgIHZhciBtYXRjaGVkRWxl
bWVudCA9IG51bGw7CiAgICAgICAgIHRyZWVFbGVtZW50cy5zb21lKGZ1bmN0aW9uKGVsZW1lbnQp
IHsKICAgICAgICAgICAgIGlmICh0cmVlRWxlbWVudE1hdGNoZXNDb29raWUuY2FsbCh0aGlzLCBl
bGVtZW50KSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvVGFiQ29udGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9UYWJDb250ZW50Vmlldy5qcwppbmRleCAyZDhkZjE3Li41MDUzOWVlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UYWJD
b250ZW50Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9UYWJDb250ZW50Vmlldy5qcwpAQCAtMTI0LDcgKzEyNCw3IEBAIFdlYkluc3BlY3Rvci5U
YWJDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlmICghdGhpcy5uYXZpZ2F0aW9u
U2lkZWJhclBhbmVsKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIHZhciBjb29raWUg
PSB0aGlzLl9jb29raWVTZXR0aW5nLnZhbHVlIHx8IHt9OworICAgICAgICB2YXIgY29va2llID0g
e307CiAgICAgICAgIHRoaXMubmF2aWdhdGlvblNpZGViYXJQYW5lbC5zYXZlU3RhdGVUb0Nvb2tp
ZShjb29raWUpOwogICAgICAgICB0aGlzLl9jb29raWVTZXR0aW5nLnZhbHVlID0gY29va2llOwog
ICAgIH0sCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252894</attachid>
            <date>2015-05-11 15:10:11 -0700</date>
            <delta_ts>2015-05-11 15:38:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-144650-20150511150848.patch</filename>
            <type>text/plain</type>
            <size>20478</size>
            <attacher name="Timothy Hatcher">timothy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg0MTA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCA3
OTQ4MjdlMzFlOTAzZmU0OTQxMDdlZjY2NTM2MGMzZTJkYjc0YjNmLi4yMjk3OTM1NzlhNGE2ODJk
NTQxNGIyNDdiYTZmMmM1YTQxNmE5OTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSw2MSBAQAogMjAxNS0wNS0xMSAgVGltb3RoeSBIYXRjaGVyICA8dGltb3RoeUBhcHBsZS5j
b20+CiAKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUkVHUkVTU0lPTiAoVGFicyk6IElzc3VlcyBy
ZWxvYWRpbmcgYSByZXNvdXJjZSB3aXRoIGJyZWFrcG9pbnRzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDQ2NTAKKworICAgICAgICBGaXggYSBudW1i
ZXIgb2YgaXNzdWVzIHdpdGggRGVidWdnZXIgdGFiIGFuZCBuYXZpZ2F0aW9uL3JlbG9hZGluZzoK
KyAgICAgICAgLSBDbG9zZSBvbGQgY29udGVudCB2aWV3cyBpbiB0aGUgRGVidWdnZXIgdGFiIHdo
ZW4gbWFpbiBmcmFtZSBuYXZpZ2F0ZXMuCisgICAgICAgIC0gUHJ1bmUgb2xkIHJlc291cmNlIHRy
ZWUgZWxlbWVudHMgYmVmb3JlIGF0dGVtcHRpbmcgdG8gcmVzdG9yZSBhIGNvb2tpZSB0aGF0IG1p
Z2h0IG1hdGNoIGFuIG9sZCByZXNvdXJjZS4KKyAgICAgICAgLSBBbGxvdyBicmVha3BvaW50IHNl
bGVjdGlvbnMgdG8gYmUgcmVzdG9yZWQgZnJvbSBhIHNhdmVkIGNvb2tpZS4KKyAgICAgICAgLSBG
aXggYW4gYXNzZXJ0IHdoZW4gY2xvc2luZyBhIGNvbnRlbnQgdmlldyB0aGF0IGlzbid0IHRoZSBj
dXJyZW50IGluZGV4LCBidXQgaXMgdGhlIGN1cnJlbnQgdmlldy4KKyAgICAgICAgLSBBdm9pZCBj
YWxsaW5nIGNsb3NlZCgpIG11bHRpcGxlIHRpbWVzIHdoZW4gYSBDb250ZW50VmlldyBpcyBpbiB0
aGUgYmFjay9mb3J3YXJkIGxpc3QgbW9yZSB0aGFuIG9uY2UuCisgICAgICAgIC0gTWFrZSByZXN0
b3JlU3RhdGVGcm9tQ29va2llIHByb3Blcmx5IHNldCBhbmQgdXNlIHRoZSBjYXVzZWRCeU5hdmln
YXRpb24gYXJndW1lbnQgZm9yIGEgbG9uZ2VyIHJlc3RvcmUgZGVsYXkuCisgICAgICAgIC0gQ3Jl
YXRlIGEgbmV3IGNvb2tpZSBvYmplY3QgcGVyIHRhYiBpbnN0ZWFkIG9mIGl0IGJlaW5nIGN1bXVs
YXRpdmUgZnJvbSB0aGUgcHJldmlvdXMgY29va2llLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9CYXNlL01haW4uanM6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuX21haW5SZXNvdXJjZURpZENoYW5nZSk6IERlbGF5IGNhbGxp
bmcgX3Jlc3RvcmVDb29raWVGb3JPcGVuVGFicyB0byBnaXZlIHRpbWUgZm9yIHNpZGViYXJzCisg
ICAgICAgIGFuZCB0YWJzIHRvIHJlc3BvbmQgdG8gdGhlIG1haW4gcmVzb3VyY2UgY2hhbmdlLgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLl9yZXN0b3JlQ29va2llRm9yT3BlblRhYnMpOiBSZW5hbWUg
Y2F1c2VkQnlSZWxvYWQgdG8gY2F1c2VkQnlOYXZpZ2F0aW9uLiBOb3RoaW5nIHNwZWNpYWwgYWJv
dXQKKyAgICAgICAgcmVsb2FkIHNpbmNlIHdlIHJlc3RvcmUgb24gYWxsIG5hdmlnYXRpb24uCisK
KyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRWaWV3LmpzOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3KTogU3VwcG9ydCBCcmVha3BvaW50IGFzIGEgcmVwcmVz
ZW50ZWQgb2JqZWN0LCB3aGljaCBoYXBwZW5zIGR1cmluZyBhIGNvb2tpZSByZXN0b3JlLgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3LmlzVmlld2FibGUpOiBEaXR0by4KKworICAg
ICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudFZpZXdDb250YWluZXIuanM6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuQ29udGVudFZpZXdDb250YWluZXIucHJvdG90eXBlLmNsb3NlQWxs
Q29udGVudFZpZXdzKTogRGlzYXNzb2NpYXRlIGlmIHRoZSB2aWV3IGlzIGN1cnJlbnQgYW5kIG5v
dCBqdXN0CisgICAgICAgIHRoZSBjdXJyZW50IGVudHJ5IGluZGV4LiBUaGlzIG1hdGNoZXMgb3Ro
ZXIgY2xvc2UgZnVuY3Rpb25zLiBUaGlzIGZpeGVzIGFuIGFzc2VydCBpbiBfZGlzYXNzb2NpYXRl
RnJvbUNvbnRlbnRWaWV3LgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29udGFp
bmVyLnByb3RvdHlwZS5fZGlzYXNzb2NpYXRlRnJvbUNvbnRlbnRWaWV3KTogRG9uJ3QgZGlzYXNz
b2NpYXRlIG11bHRpcGxlIHRpbWVzLiBUaGlzCisgICAgICAgIGF2b2lkcyBjYWxsaW5nIHRoZSBj
bG9zZWQoKSBmdW5jdGlvbiBvbiBhIHZpZXcgbW9yZSB0aGFuIG9uY2UuCisKKyAgICAgICAgKiBV
c2VySW50ZXJmYWNlL1ZpZXdzL0RlYnVnZ2VyU2lkZWJhclBhbmVsLmpzOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkRlYnVnZ2VyU2lkZWJhclBhbmVsLnByb3RvdHlwZS5zYXZlU3RhdGVUb0Nvb2tp
ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdnZXJTaWRlYmFyUGFuZWwucHJvdG90eXBl
Ll9tYWluUmVzb3VyY2VEaWRDaGFuZ2UpOiBSZW5hbWVkIGZyb20gX21haW5SZXNvdXJjZUNoYW5n
ZWQuCisgICAgICAgIENsb3NlIGFsbCBjb250ZW50IHZpZXdzIGlmIHRoaXMgaXMgdGhlIG1haW4g
ZnJhbWUuIEFsc28gcHJ1bmUgYWxsIG9sZCByZXNvdXJjZXMuIERvaW5nIHRoaXMgbm93IGF2b2lk
cyBhIGZsYXNoCisgICAgICAgIG9mIGhhdmluZyBvbGQgYW5kIG5ldyByZXNvdXJjZXMgaW4gdGhl
IHRyZWUgY2F1c2VkIGJ5IHRoZSBkZWZhdWx0IGRlbGF5IGluIE5hdmlnYXRpb25TaWRlYmFyUGFu
ZWwncyBfY2hlY2tGb3JPbGRSZXNvdXJjZXMuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Zp
ZXdzL05hdmlnYXRpb25TaWRlYmFyUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmF2
aWdhdGlvblNpZGViYXJQYW5lbCk6IFNldCBfYXV0b1BydW5lT2xkVG9wTGV2ZWxSZXNvdXJjZVRy
ZWVFbGVtZW50cyBmb3IgbGF0ZXIuCisgICAgICAgIChXZWJJbnNwZWN0b3IuTmF2aWdhdGlvblNp
ZGViYXJQYW5lbC5wcm90b3R5cGUuZ2V0IGNvbnRlbnRUcmVlT3V0bGluZVRvQXV0b1BydW5lKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLnBy
b3RvdHlwZS5zaG93RGVmYXVsdENvbnRlbnRWaWV3KTogRml4IHR5cG8uCisgICAgICAgIChXZWJJ
bnNwZWN0b3IuTmF2aWdhdGlvblNpZGViYXJQYW5lbC5wcm90b3R5cGUuc2hvd0RlZmF1bHRDb250
ZW50Vmlld0ZvclRyZWVFbGVtZW50KTogRml4IHdoaXRlc3BhY2UuCisgICAgICAgIChXZWJJbnNw
ZWN0b3IuTmF2aWdhdGlvblNpZGViYXJQYW5lbC5wcm90b3R5cGUucHJ1bmVPbGRSZXNvdXJjZVRy
ZWVFbGVtZW50cyk6IEFkZGVkLiBCcm9rZW4gb3V0IGZyb20KKyAgICAgICAgX2NoZWNrRm9yT2xk
UmVzb3VyY2VzLmRlbGF5ZWRXb3JrIHNvIGl0IGNhbiBiZSBjYWxsZWQgbWFudWFsbHkuIEFsc28g
Y2hlY2sgYWxsIHZpc2libGUgdHJlZSBvdXRsaW5lcy4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5O
YXZpZ2F0aW9uU2lkZWJhclBhbmVsLnByb3RvdHlwZS5fdHJlZUVsZW1lbnRBZGRlZE9yQ2hhbmdl
ZCk6IFBhc3MgdHJlZUVsZW1lbnQgaW4gYW4gYXJyYXkuCisgICAgICAgIChXZWJJbnNwZWN0b3Iu
TmF2aWdhdGlvblNpZGViYXJQYW5lbC5wcm90b3R5cGUuX2NoZWNrRm9yT2xkUmVzb3VyY2VzSWZO
ZWVkZWQpOiBBZGRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uU2lkZWJhclBh
bmVsLnByb3RvdHlwZS5fY2hlY2tGb3JPbGRSZXNvdXJjZXMpOiBDYWxsIHBydW5lT2xkUmVzb3Vy
Y2VUcmVlRWxlbWVudHMgb24gYSBkZWxheS4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5OYXZpZ2F0
aW9uU2lkZWJhclBhbmVsLnByb3RvdHlwZS5fY2hlY2tGb3JPbGRSZXNvdXJjZXMuZGVsYXllZFdv
cmspOiBEZWxldGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFu
ZWwucHJvdG90eXBlLl9jaGVja091dGxpbmVzRm9yUGVuZGluZ1ZpZXdTdGF0ZUNvb2tpZSk6IENh
bGwgX2NoZWNrRm9yT2xkUmVzb3VyY2VzSWZOZWVkZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3Iu
TmF2aWdhdGlvblNpZGViYXJQYW5lbC5wcm90b3R5cGUuX2NoZWNrRWxlbWVudHNGb3JQZW5kaW5n
Vmlld1N0YXRlQ29va2llKTogUmVtb3ZlIGFycmF5IGZvbGRpbmcgY29kZS4KKworICAgICAgICAq
IFVzZXJJbnRlcmZhY2UvVmlld3MvVGFiQ29udGVudFZpZXcuanM6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuVGFiQ29udGVudFZpZXcucHJvdG90eXBlLnJlc3RvcmVTdGF0ZUZyb21Db29raWUpOiBS
ZW5hbWUgY2F1c2VkQnlSZWxvYWQgdG8gY2F1c2VkQnlOYXZpZ2F0aW9uLgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlRhYkNvbnRlbnRWaWV3LnByb3RvdHlwZS5zYXZlU3RhdGVUb0Nvb2tpZSk6IERv
bid0IGFsbG93IHRoZSBjb29raWUgdG8gYnVpbGQgb24gdGhlIG9sZCBjb29raWUuCisKKzIwMTUt
MDUtMTEgIFRpbW90aHkgSGF0Y2hlciAgPHRpbW90aHlAYXBwbGUuY29tPgorCiAgICAgICAgIFdl
YiBJbnNwZWN0b3I6IE5hdmlnYXRpb25TaWRlYmFyUGFuZWwgbGVha3Mgc29tZSBldmVudCBsaXN0
ZW5lcnMKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0
NDUyMwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9C
YXNlL01haW4uanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL01h
aW4uanMKaW5kZXggOWM2ZDczMGIzNDIxYjYxZWUxNDdhNGUyODlmZjZlNDI0Zjg0ODYyYy4uMGFm
NGEyNzQ4MjM0MDcwNDY1ODkwMmEyZjgxNjAzNzY4ZmU0ZmU3ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9NYWluLmpzCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvTWFpbi5qcwpAQCAtMTEyNSw3ICsxMTI1
LDkgQEAgV2ViSW5zcGVjdG9yLl9tYWluUmVzb3VyY2VEaWRDaGFuZ2UgPSBmdW5jdGlvbihldmVu
dCkKIAogICAgIHRoaXMuX2luUHJvdmlzaW9uYWxMb2FkID0gZmFsc2U7CiAKLSAgICB0aGlzLl9y
ZXN0b3JlQ29va2llRm9yT3BlblRhYnMoKTsKKyAgICAvLyBSdW4gY29va2llIHJlc3RvcmF0aW9u
IGFmdGVyIHdlIGFyZSBzdXJlIGFsbCBvZiB0aGUgVGFicyBhbmQgTmF2aWdhdGlvblNpZGViYXJQ
YW5lbHMKKyAgICAvLyBoYXZlIHVwZGF0ZWQgd2l0aCByZXNwZWN0IHRvIHRoZSBtYWluIHJlc291
cmNlIGNoYW5nZS4KKyAgICBzZXRUaW1lb3V0KHRoaXMuX3Jlc3RvcmVDb29raWVGb3JPcGVuVGFi
cy5iaW5kKHRoaXMsIHRydWUpKTsKIAogICAgIHRoaXMuX3VwZGF0ZURvd25sb2FkVG9vbGJhckJ1
dHRvbigpOwogCkBAIC0xMTQyLDEzICsxMTQ0LDEzIEBAIFdlYkluc3BlY3Rvci5fcHJvdmlzaW9u
YWxMb2FkU3RhcnRlZCA9IGZ1bmN0aW9uKGV2ZW50KQogICAgIHRoaXMuX2luUHJvdmlzaW9uYWxM
b2FkID0gdHJ1ZTsKIH07CiAKLVdlYkluc3BlY3Rvci5fcmVzdG9yZUNvb2tpZUZvck9wZW5UYWJz
ID0gZnVuY3Rpb24oY2F1c2VkQnlSZWxvYWQpCitXZWJJbnNwZWN0b3IuX3Jlc3RvcmVDb29raWVG
b3JPcGVuVGFicyA9IGZ1bmN0aW9uKGNhdXNlZEJ5TmF2aWF0aW9uKQogewogICAgIGZvciAodmFy
IHRhYkJhckl0ZW0gb2YgdGhpcy50YWJCYXIudGFiQmFySXRlbXMpIHsKICAgICAgICAgdmFyIHRh
YkNvbnRlbnRWaWV3ID0gdGFiQmFySXRlbS5yZXByZXNlbnRlZE9iamVjdDsKICAgICAgICAgaWYg
KCEodGFiQ29udGVudFZpZXcgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuVGFiQ29udGVudFZpZXcp
KQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIHRhYkNvbnRlbnRWaWV3LnJlc3RvcmVT
dGF0ZUZyb21Db29raWUoY2F1c2VkQnlSZWxvYWQpOworICAgICAgICB0YWJDb250ZW50Vmlldy5y
ZXN0b3JlU3RhdGVGcm9tQ29va2llKGNhdXNlZEJ5TmF2aWF0aW9uKTsKICAgICB9CiB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250
ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0Nv
bnRlbnRWaWV3LmpzCmluZGV4IDU5OTNiZmNkODA4MjM5NzE2ZmQ3MjkyYjI3MTE5Yjk1YWYwMmRh
MDAuLjFhNGFjZDAxMjBiZjY5NjgxZjM3YmM3YTJjOGUwZDkxY2QyYWZlNmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRWaWV3Lmpz
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRW
aWV3LmpzCkBAIC01Nyw2ICs1NywxMSBAQCBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcgPSBmdW5j
dGlvbihyZXByZXNlbnRlZE9iamVjdCwgZXh0cmFBcmd1bWVudHMpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuUmVuZGVyaW5nRnJhbWVUaW1lbGluZVZpZXcocmVwcmVz
ZW50ZWRPYmplY3QsIGV4dHJhQXJndW1lbnRzKTsKICAgICAgICAgfQogCisgICAgICAgIGlmIChy
ZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5CcmVha3BvaW50KSB7Cisg
ICAgICAgICAgICBpZiAocmVwcmVzZW50ZWRPYmplY3Quc291cmNlQ29kZUxvY2F0aW9uKQorICAg
ICAgICAgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3KHJlcHJlc2Vu
dGVkT2JqZWN0LnNvdXJjZUNvZGVMb2NhdGlvbi5kaXNwbGF5U291cmNlQ29kZSwgZXh0cmFBcmd1
bWVudHMpOworICAgICAgICB9CisKICAgICAgICAgaWYgKHJlcHJlc2VudGVkT2JqZWN0IGluc3Rh
bmNlb2YgV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VPYmplY3QpCiAgICAgICAgICAgICByZXR1cm4g
bmV3IFdlYkluc3BlY3Rvci5ET01TdG9yYWdlQ29udGVudFZpZXcocmVwcmVzZW50ZWRPYmplY3Qs
IGV4dHJhQXJndW1lbnRzKTsKIApAQCAtMTQ3LDYgKzE1Miw4IEBAIFdlYkluc3BlY3Rvci5Db250
ZW50Vmlldy5pc1ZpZXdhYmxlID0gZnVuY3Rpb24ocmVwcmVzZW50ZWRPYmplY3QpCiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIGlmIChyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYklu
c3BlY3Rvci5UaW1lbGluZSkKICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHJlcHJlc2Vu
dGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQpCisgICAgICAgIHJl
dHVybiByZXByZXNlbnRlZE9iamVjdC5zb3VyY2VDb2RlTG9jYXRpb247CiAgICAgaWYgKHJlcHJl
c2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VPYmplY3QpCiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIGlmIChyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9m
IFdlYkluc3BlY3Rvci5Db29raWVTdG9yYWdlT2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudFZpZXdDb250YWluZXIuanMg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250ZW50Vmlld0Nv
bnRhaW5lci5qcwppbmRleCBlYjNiNWYzMzcwOTMzNGJlMjgzMGQ5MzAzYWZkNjNhY2M0OTE5ODc3
Li44NjU2YmYyMDllYjYzMWQzMWFiNTU0NDRlZDVjNDU0NzRiMWFmMzRmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250ZW50Vmlld0NvbnRh
aW5lci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9D
b250ZW50Vmlld0NvbnRhaW5lci5qcwpAQCAtMzc2LDEwICszNzYsMTIgQEAgV2ViSW5zcGVjdG9y
LkNvbnRlbnRWaWV3Q29udGFpbmVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogCisgICAgICAgIHZhciBvbGRDdXJyZW50Q29udGVudFZpZXcgPSB0aGlzLmN1
cnJlbnRDb250ZW50VmlldzsKKwogICAgICAgICAvLyBIaWRlIGFuZCBkaXNhc3NvY2lhdGUgd2l0
aCBhbGwgdGhlIGNvbnRlbnQgdmlld3MuCiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhp
cy5fYmFja0ZvcndhcmRMaXN0Lmxlbmd0aDsgKytpKSB7CiAgICAgICAgICAgICB2YXIgZW50cnkg
PSB0aGlzLl9iYWNrRm9yd2FyZExpc3RbaV07Ci0gICAgICAgICAgICBpZiAoaSA9PT0gdGhpcy5f
Y3VycmVudEluZGV4KQorICAgICAgICAgICAgaWYgKGVudHJ5LmNvbnRlbnRWaWV3ID09PSBvbGRD
dXJyZW50Q29udGVudFZpZXcpCiAgICAgICAgICAgICAgICAgdGhpcy5faGlkZUVudHJ5KGVudHJ5
KTsKICAgICAgICAgICAgIHRoaXMuX2Rpc2Fzc29jaWF0ZUZyb21Db250ZW50VmlldyhlbnRyeS5j
b250ZW50Vmlldyk7CiAgICAgICAgIH0KQEAgLTQ1MCw2ICs0NTIsOSBAQCBXZWJJbnNwZWN0b3Iu
Q29udGVudFZpZXdDb250YWluZXIucHJvdG90eXBlID0gewogICAgIHsKICAgICAgICAgY29uc29s
ZS5hc3NlcnQoIWNvbnRlbnRWaWV3LnZpc2libGUpOwogCisgICAgICAgIGlmICghY29udGVudFZp
ZXcuX3BhcmVudENvbnRhaW5lcikKKyAgICAgICAgICAgIHJldHVybjsKKwogICAgICAgICBjb250
ZW50Vmlldy5fcGFyZW50Q29udGFpbmVyID0gbnVsbDsKIAogICAgICAgICB2YXIgcmVwcmVzZW50
ZWRPYmplY3QgPSBjb250ZW50Vmlldy5yZXByZXNlbnRlZE9iamVjdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RlYnVnZ2VyU2lkZWJhclBh
bmVsLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGVidWdn
ZXJTaWRlYmFyUGFuZWwuanMKaW5kZXggY2MwNWE2NzEyNDVlMzY0Yzc2OWVhM2VmNTgyZGM5MDE5
MjVhN2RhNy4uZTNiZjFmZjk4NjgwYWZkMmRkNDhmZGQ0Mjg4MjIyOTVhZjQ3NDRlNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGVidWdnZXJT
aWRlYmFyUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvRGVidWdnZXJTaWRlYmFyUGFuZWwuanMKQEAgLTMxLDcgKzMxLDcgQEAgV2ViSW5zcGVj
dG9yLkRlYnVnZ2VyU2lkZWJhclBhbmVsID0gY2xhc3MgRGVidWdnZXJTaWRlYmFyUGFuZWwgZXh0
ZW5kcyBXZWJJbnNwZWMKIAogICAgICAgICB0aGlzLmNvbnRlbnRCcm93c2VyID0gY29udGVudEJy
b3dzZXI7CiAKLSAgICAgICAgV2ViSW5zcGVjdG9yLkZyYW1lLmFkZEV2ZW50TGlzdGVuZXIoV2Vi
SW5zcGVjdG9yLkZyYW1lLkV2ZW50Lk1haW5SZXNvdXJjZURpZENoYW5nZSwgdGhpcy5fbWFpblJl
c291cmNlQ2hhbmdlZCwgdGhpcyk7CisgICAgICAgIFdlYkluc3BlY3Rvci5GcmFtZS5hZGRFdmVu
dExpc3RlbmVyKFdlYkluc3BlY3Rvci5GcmFtZS5FdmVudC5NYWluUmVzb3VyY2VEaWRDaGFuZ2Us
IHRoaXMuX21haW5SZXNvdXJjZURpZENoYW5nZSwgdGhpcyk7CiAgICAgICAgIFdlYkluc3BlY3Rv
ci5GcmFtZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5GcmFtZS5FdmVudC5SZXNvdXJj
ZVdhc0FkZGVkLCB0aGlzLl9yZXNvdXJjZUFkZGVkLCB0aGlzKTsKIAogICAgICAgICBXZWJJbnNw
ZWN0b3IuZGVidWdnZXJNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRlYnVn
Z2VyTWFuYWdlci5FdmVudC5CcmVha3BvaW50c0VuYWJsZWREaWRDaGFuZ2UsIHRoaXMuX2JyZWFr
cG9pbnRzRW5hYmxlZERpZENoYW5nZSwgdGhpcyk7CkBAIC0yMjcsMTEgKzIyNywxNSBAQCBXZWJJ
bnNwZWN0b3IuRGVidWdnZXJTaWRlYmFyUGFuZWwgPSBjbGFzcyBEZWJ1Z2dlclNpZGViYXJQYW5l
bCBleHRlbmRzIFdlYkluc3BlYwogCiAgICAgICAgIHZhciByZXByZXNlbnRlZE9iamVjdCA9IHNl
bGVjdGVkVHJlZUVsZW1lbnQucmVwcmVzZW50ZWRPYmplY3Q7CiAKLSAgICAgICAgaWYgKHJlcHJl
c2VudGVkT2JqZWN0ID09PSBXZWJJbnNwZWN0b3IuZGVidWdnZXJNYW5hZ2VyLmFsbEV4Y2VwdGlv
bnNCcmVha3BvaW50KQorICAgICAgICBpZiAocmVwcmVzZW50ZWRPYmplY3QgPT09IFdlYkluc3Bl
Y3Rvci5kZWJ1Z2dlck1hbmFnZXIuYWxsRXhjZXB0aW9uc0JyZWFrcG9pbnQpIHsKICAgICAgICAg
ICAgIGNvb2tpZVtXZWJJbnNwZWN0b3IuRGVidWdnZXJTaWRlYmFyUGFuZWwuU2VsZWN0ZWRBbGxF
eGNlcHRpb25zQ29va2llS2V5XSA9IHRydWU7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KIAotICAgICAgICBpZiAocmVwcmVzZW50ZWRPYmplY3QgPT09IFdlYkluc3BlY3Rvci5kZWJ1
Z2dlck1hbmFnZXIuYWxsVW5jYXVnaHRFeGNlcHRpb25zQnJlYWtwb2ludCkKKyAgICAgICAgaWYg
KHJlcHJlc2VudGVkT2JqZWN0ID09PSBXZWJJbnNwZWN0b3IuZGVidWdnZXJNYW5hZ2VyLmFsbFVu
Y2F1Z2h0RXhjZXB0aW9uc0JyZWFrcG9pbnQpIHsKICAgICAgICAgICAgIGNvb2tpZVtXZWJJbnNw
ZWN0b3IuRGVidWdnZXJTaWRlYmFyUGFuZWwuU2VsZWN0ZWRBbGxVbmNhdWdodEV4Y2VwdGlvbnND
b29raWVLZXldID0gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQogCiAgICAg
ICAgIHN1cGVyLnNhdmVTdGF0ZVRvQ29va2llKGNvb2tpZSk7CiAgICAgfQpAQCAtMzc4LDggKzM4
MiwxNiBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJTaWRlYmFyUGFuZWwgPSBjbGFzcyBEZWJ1Z2dl
clNpZGViYXJQYW5lbCBleHRlbmRzIFdlYkluc3BlYwogICAgICAgICB0aGlzLl9hZGRJc3N1ZXNG
b3JTb3VyY2VDb2RlKHJlc291cmNlKTsKICAgICB9CiAKLSAgICBfbWFpblJlc291cmNlQ2hhbmdl
ZChldmVudCkKKyAgICBfbWFpblJlc291cmNlRGlkQ2hhbmdlKGV2ZW50KQogICAgIHsKKyAgICAg
ICAgaWYgKGV2ZW50LnRhcmdldC5pc01haW5GcmFtZSgpKSB7CisgICAgICAgICAgICAvLyBBZ2dy
ZXNzaXZlbHkgcHJ1bmUgcmVzb3VyY2VzIG5vdyBzbyB0aGUgb2xkIHJlc291cmNlcyBhcmUgcmVt
b3ZlZCBiZWZvcmUKKyAgICAgICAgICAgIC8vIHRoZSBuZXcgbWFpbiByZXNvdXJjZSBpcyBhZGRl
ZCBiZWxvdy4gVGhpcyBhdm9pZHMgYSB2aXN1YWwgZmxhc2ggd2hlbiB0aGUKKyAgICAgICAgICAg
IC8vIHBydW5lIG5vcm1hbGx5IGhhcHBlbiBvbiBhIGRlbGF5LgorICAgICAgICAgICAgdGhpcy5w
cnVuZU9sZFJlc291cmNlVHJlZUVsZW1lbnRzKCk7CisgICAgICAgICAgICB0aGlzLmNvbnRlbnRC
cm93c2VyLmNvbnRlbnRWaWV3Q29udGFpbmVyLmNsb3NlQWxsQ29udGVudFZpZXdzKCk7CisgICAg
ICAgIH0KKwogICAgICAgICB2YXIgcmVzb3VyY2UgPSBldmVudC50YXJnZXQubWFpblJlc291cmNl
OwogICAgICAgICB0aGlzLl9hZGRUcmVlRWxlbWVudEZvclNvdXJjZUNvZGVUb0NvbnRlbnRUcmVl
T3V0bGluZShyZXNvdXJjZSk7CiAgICAgICAgIHRoaXMuX2FkZEJyZWFrcG9pbnRzRm9yU291cmNl
Q29kZShyZXNvdXJjZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLmpzIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTmF2aWdhdGlvblNpZGViYXJQYW5lbC5qcwppbmRl
eCAzNTM1ZTQ5MDBjNDEwN2Y1Njc1YzUwZDk3NzZmZGIxMmYxMGY4NjZlLi40ZDRkYjA5MGU3MzIw
ZDQxNjMxYThiMTM2YWMyODUwMWFiN2IzZGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLmpzCisrKyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05hdmlnYXRpb25TaWRl
YmFyUGFuZWwuanMKQEAgLTY4LDcgKzY4LDkgQEAgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25TaWRl
YmFyUGFuZWwgPSBjbGFzcyBOYXZpZ2F0aW9uU2lkZWJhclBhbmVsIGV4dGVuZHMgV2ViSW4KICAg
ICAgICAgdGhpcy5fZ2VuZXJhdGVTdHlsZVJ1bGVzSWZOZWVkZWQoKTsKICAgICAgICAgdGhpcy5f
Z2VuZXJhdGVEaXNjbG9zdXJlVHJpYW5nbGVzSWZOZWVkZWQoKTsKIAotICAgICAgICBpZiAoYXV0
b1BydW5lT2xkVG9wTGV2ZWxSZXNvdXJjZVRyZWVFbGVtZW50cykgeworICAgICAgICB0aGlzLl9h
dXRvUHJ1bmVPbGRUb3BMZXZlbFJlc291cmNlVHJlZUVsZW1lbnRzID0gYXV0b1BydW5lT2xkVG9w
TGV2ZWxSZXNvdXJjZVRyZWVFbGVtZW50cyB8fCBmYWxzZTsKKworICAgICAgICBpZiAodGhpcy5f
YXV0b1BydW5lT2xkVG9wTGV2ZWxSZXNvdXJjZVRyZWVFbGVtZW50cykgewogICAgICAgICAgICAg
V2ViSW5zcGVjdG9yLkZyYW1lLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkZyYW1lLkV2
ZW50Lk1haW5SZXNvdXJjZURpZENoYW5nZSwgdGhpcy5fY2hlY2tGb3JPbGRSZXNvdXJjZXMsIHRo
aXMpOwogICAgICAgICAgICAgV2ViSW5zcGVjdG9yLkZyYW1lLmFkZEV2ZW50TGlzdGVuZXIoV2Vi
SW5zcGVjdG9yLkZyYW1lLkV2ZW50LkNoaWxkRnJhbWVXYXNSZW1vdmVkLCB0aGlzLl9jaGVja0Zv
ck9sZFJlc291cmNlcywgdGhpcyk7CiAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuRnJhbWUuYWRk
RXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRnJhbWUuRXZlbnQuUmVzb3VyY2VXYXNSZW1vdmVk
LCB0aGlzLl9jaGVja0Zvck9sZFJlc291cmNlcywgdGhpcyk7CkBAIC0xMjEsMTEgKzEyMyw2IEBA
IFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsID0gY2xhc3MgTmF2aWdhdGlvblNp
ZGViYXJQYW5lbCBleHRlbmRzIFdlYkluCiAgICAgICAgIHRoaXMuX3VwZGF0ZUZpbHRlcigpOwog
ICAgIH0KIAotICAgIGdldCBjb250ZW50VHJlZU91dGxpbmVUb0F1dG9QcnVuZSgpCi0gICAgewot
ICAgICAgICByZXR1cm4gdGhpcy5fY29udGVudFRyZWVPdXRsaW5lOwotICAgIH0KLQogICAgIGdl
dCB2aXNpYmxlQ29udGVudFRyZWVPdXRsaW5lcygpCiAgICAgewogICAgICAgICByZXR1cm4gdGhp
cy5fdmlzaWJsZUNvbnRlbnRUcmVlT3V0bGluZXM7CkBAIC0xODYsNyArMTgzLDcgQEAgV2ViSW5z
cGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwgPSBjbGFzcyBOYXZpZ2F0aW9uU2lkZWJhclBh
bmVsIGV4dGVuZHMgV2ViSW4KIAogICAgIHNob3dEZWZhdWx0Q29udGVudFZpZXcoKQogICAgIHsK
LSAgICAgICAgLy8gSW1wbGVtbmV0ZWQgYnkgc3ViY2xhc3NlcyBpZiBuZWVkZWQgdG8gc2hvdyBh
IGNvbnRlbnQgdmlldyB3aGVuIG5vIGV4aXN0aW5nIHRyZWUgZWxlbWVudCBpcyBzZWxlY3RlZC4K
KyAgICAgICAgLy8gSW1wbGVtZW50ZWQgYnkgc3ViY2xhc3NlcyBpZiBuZWVkZWQgdG8gc2hvdyBh
IGNvbnRlbnQgdmlldyB3aGVuIG5vIGV4aXN0aW5nIHRyZWUgZWxlbWVudCBpcyBzZWxlY3RlZC4K
ICAgICB9CiAKICAgICBzaG93RGVmYXVsdENvbnRlbnRWaWV3Rm9yVHJlZUVsZW1lbnQodHJlZUVs
ZW1lbnQpCkBAIC0xOTUsNiArMTkyLDcgQEAgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFy
UGFuZWwgPSBjbGFzcyBOYXZpZ2F0aW9uU2lkZWJhclBhbmVsIGV4dGVuZHMgV2ViSW4KICAgICAg
ICAgY29uc29sZS5hc3NlcnQodHJlZUVsZW1lbnQucmVwcmVzZW50ZWRPYmplY3QpOwogICAgICAg
ICBpZiAoIXRyZWVFbGVtZW50IHx8ICF0cmVlRWxlbWVudC5yZXByZXNlbnRlZE9iamVjdCkKICAg
ICAgICAgICAgIHJldHVybjsKKwogICAgICAgICB0aGlzLmNvbnRlbnRCcm93c2VyLnNob3dDb250
ZW50Vmlld0ZvclJlcHJlc2VudGVkT2JqZWN0KHRyZWVFbGVtZW50LnJlcHJlc2VudGVkT2JqZWN0
KTsKICAgICAgICAgdHJlZUVsZW1lbnQucmV2ZWFsQW5kU2VsZWN0KHRydWUsIGZhbHNlLCB0cnVl
LCB0cnVlKTsKICAgICB9CkBAIC00MTcsNiArNDE1LDMxIEBAIFdlYkluc3BlY3Rvci5OYXZpZ2F0
aW9uU2lkZWJhclBhbmVsID0gY2xhc3MgTmF2aWdhdGlvblNpZGViYXJQYW5lbCBleHRlbmRzIFdl
YkluCiAgICAgICAgIHRoaXMuX3VwZGF0ZUNvbnRlbnRPdmVyZmxvd1NoYWRvd1Zpc2liaWxpdHko
KTsKICAgICB9CiAKKyAgICAvLyBQcm90ZWN0ZWQKKworICAgIHBydW5lT2xkUmVzb3VyY2VUcmVl
RWxlbWVudHMoKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX2NoZWNrRm9yT2xkUmVzb3VyY2Vz
VGltZW91dElkZW50aWZpZXIpIHsKKyAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLl9jaGVj
a0Zvck9sZFJlc291cmNlc1RpbWVvdXRJZGVudGlmaWVyKTsKKyAgICAgICAgICAgIHRoaXMuX2No
ZWNrRm9yT2xkUmVzb3VyY2VzVGltZW91dElkZW50aWZpZXIgPSB1bmRlZmluZWQ7CisgICAgICAg
IH0KKworICAgICAgICBmb3IgKHZhciBjb250ZW50VHJlZU91dGxpbmUgb2YgdGhpcy5fdmlzaWJs
ZUNvbnRlbnRUcmVlT3V0bGluZXMpIHsKKyAgICAgICAgICAgIC8vIENoZWNrIGFsbCB0aGUgUmVz
b3VyY2VUcmVlRWxlbWVudHMgYXQgdGhlIHRvcCBsZXZlbCB0byBtYWtlIHN1cmUgdGhlaXIgUmVz
b3VyY2Ugc3RpbGwgaGFzIGEgcGFyZW50RnJhbWUgaW4gdGhlIGZyYW1lIGhpZXJhcmNoeS4KKyAg
ICAgICAgICAgIC8vIElmIHRoZSBwYXJlbnRGcmFtZSBpcyBubyBsb25nZXIgaW4gdGhlIGZyYW1l
IGhpZXJhcmNoeSB3ZSBrbm93IGl0IHdhcyByZW1vdmVkIGR1ZSB0byBhIG5hdmlnYXRpb24gb3Ig
c29tZSBvdGhlciBwYWdlIGNoYW5nZSBhbmQKKyAgICAgICAgICAgIC8vIHdlIHNob3VsZCByZW1v
dmUgdGhlIGlzc3VlcyBmb3IgdGhhdCByZXNvdXJjZS4KKyAgICAgICAgICAgIGZvciAodmFyIGkg
PSBjb250ZW50VHJlZU91dGxpbmUuY2hpbGRyZW4ubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHsK
KyAgICAgICAgICAgICAgICB2YXIgdHJlZUVsZW1lbnQgPSBjb250ZW50VHJlZU91dGxpbmUuY2hp
bGRyZW5baV07CisgICAgICAgICAgICAgICAgaWYgKCEodHJlZUVsZW1lbnQgaW5zdGFuY2VvZiBX
ZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlRWxlbWVudCkpCisgICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlOworCisgICAgICAgICAgICAgICAgdmFyIHJlc291cmNlID0gdHJlZUVsZW1lbnQucmVz
b3VyY2U7CisgICAgICAgICAgICAgICAgaWYgKCFyZXNvdXJjZS5wYXJlbnRGcmFtZSB8fCByZXNv
dXJjZS5wYXJlbnRGcmFtZS5pc0RldGFjaGVkKCkpCisgICAgICAgICAgICAgICAgICAgIGNvbnRl
bnRUcmVlT3V0bGluZS5yZW1vdmVDaGlsZEF0SW5kZXgoaSwgdHJ1ZSwgdHJ1ZSk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICB9CisKICAgICAvLyBQcml2YXRlCiAgICAgCiAgICAgX3Vw
ZGF0ZUNvbnRlbnRPdmVyZmxvd1NoYWRvd1Zpc2liaWxpdHlTb29uKCkKQEAgLTUzMSw3ICs1NTQs
NyBAQCBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvblNpZGViYXJQYW5lbCA9IGNsYXNzIE5hdmlnYXRp
b25TaWRlYmFyUGFuZWwgZXh0ZW5kcyBXZWJJbgogICAgICAgICB0aGlzLl91cGRhdGVDb250ZW50
T3ZlcmZsb3dTaGFkb3dWaXNpYmlsaXR5U29vbigpOwogCiAgICAgICAgIGlmICh0aGlzLnNlbGVj
dGVkKQotICAgICAgICAgICAgdGhpcy5fY2hlY2tFbGVtZW50c0ZvclBlbmRpbmdWaWV3U3RhdGVD
b29raWUodHJlZUVsZW1lbnQpOworICAgICAgICAgICAgdGhpcy5fY2hlY2tFbGVtZW50c0ZvclBl
bmRpbmdWaWV3U3RhdGVDb29raWUoW3RyZWVFbGVtZW50XSk7CiAKICAgICAgICAgdGhpcy50cmVl
RWxlbWVudEFkZGVkT3JDaGFuZ2VkKHRyZWVFbGVtZW50KTsKICAgICB9CkBAIC01ODgsMzYgKzYx
MSwyMiBAQCBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvblNpZGViYXJQYW5lbCA9IGNsYXNzIE5hdmln
YXRpb25TaWRlYmFyUGFuZWwgZXh0ZW5kcyBXZWJJbgogICAgICAgICBnZW5lcmF0ZUNvbG9yZWRJ
bWFnZXNGb3JDU1MoIkltYWdlcy9EaXNjbG9zdXJlVHJpYW5nbGVTbWFsbENsb3NlZC5zdmciLCBz
cGVjaWZpY2F0aW9ucywgMTMsIDEzLCBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvblNpZGViYXJQYW5l
bC5EaXNjbG9zdXJlVHJpYW5nbGVDbG9zZWRDYW52YXNJZGVudGlmaWVyKTsKICAgICB9CiAKLSAg
ICBfY2hlY2tGb3JPbGRSZXNvdXJjZXMoZXZlbnQpCisgICAgX2NoZWNrRm9yT2xkUmVzb3VyY2Vz
SWZOZWVkZWQoKQogICAgIHsKLSAgICAgICAgaWYgKHRoaXMuX2NoZWNrRm9yT2xkUmVzb3VyY2Vz
VGltZW91dElkZW50aWZpZXIpCisgICAgICAgIGlmICghdGhpcy5fY2hlY2tGb3JPbGRSZXNvdXJj
ZXNUaW1lb3V0SWRlbnRpZmllciB8fCAhdGhpcy5fYXV0b1BydW5lT2xkVG9wTGV2ZWxSZXNvdXJj
ZVRyZWVFbGVtZW50cykKICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgdGhpcy5wcnVuZU9s
ZFJlc291cmNlVHJlZUVsZW1lbnRzKCk7CisgICAgfQogCi0gICAgICAgIGZ1bmN0aW9uIGRlbGF5
ZWRXb3JrKCkKLSAgICAgICAgewotICAgICAgICAgICAgZGVsZXRlIHRoaXMuX2NoZWNrRm9yT2xk
UmVzb3VyY2VzVGltZW91dElkZW50aWZpZXI7Ci0KLSAgICAgICAgICAgIHZhciBjb250ZW50VHJl
ZU91dGxpbmUgPSB0aGlzLmNvbnRlbnRUcmVlT3V0bGluZVRvQXV0b1BydW5lOwotCi0gICAgICAg
ICAgICAvLyBDaGVjayBhbGwgdGhlIFJlc291cmNlVHJlZUVsZW1lbnRzIGF0IHRoZSB0b3AgbGV2
ZWwgdG8gbWFrZSBzdXJlIHRoZWlyIFJlc291cmNlIHN0aWxsIGhhcyBhIHBhcmVudEZyYW1lIGlu
IHRoZSBmcmFtZSBoaWVyYXJjaHkuCi0gICAgICAgICAgICAvLyBJZiB0aGUgcGFyZW50RnJhbWUg
aXMgbm8gbG9uZ2VyIGluIHRoZSBmcmFtZSBoaWVyYXJjaHkgd2Uga25vdyBpdCB3YXMgcmVtb3Zl
ZCBkdWUgdG8gYSBuYXZpZ2F0aW9uIG9yIHNvbWUgb3RoZXIgcGFnZSBjaGFuZ2UgYW5kCi0gICAg
ICAgICAgICAvLyB3ZSBzaG91bGQgcmVtb3ZlIHRoZSBpc3N1ZXMgZm9yIHRoYXQgcmVzb3VyY2Uu
Ci0gICAgICAgICAgICBmb3IgKHZhciBpID0gY29udGVudFRyZWVPdXRsaW5lLmNoaWxkcmVuLmxl
bmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7Ci0gICAgICAgICAgICAgICAgdmFyIHRyZWVFbGVtZW50
ID0gY29udGVudFRyZWVPdXRsaW5lLmNoaWxkcmVuW2ldOwotICAgICAgICAgICAgICAgIGlmICgh
KHRyZWVFbGVtZW50IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZUVsZW1lbnQp
KQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAgICAgIHZhciBy
ZXNvdXJjZSA9IHRyZWVFbGVtZW50LnJlc291cmNlOwotICAgICAgICAgICAgICAgIGlmICghcmVz
b3VyY2UucGFyZW50RnJhbWUgfHwgcmVzb3VyY2UucGFyZW50RnJhbWUuaXNEZXRhY2hlZCgpKQot
ICAgICAgICAgICAgICAgICAgICBjb250ZW50VHJlZU91dGxpbmUucmVtb3ZlQ2hpbGRBdEluZGV4
KGksIHRydWUsIHRydWUpOwotICAgICAgICAgICAgfQorICAgIF9jaGVja0Zvck9sZFJlc291cmNl
cyhldmVudCkKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2F1dG9QcnVuZU9s
ZFRvcExldmVsUmVzb3VyY2VUcmVlRWxlbWVudHMpOwogCi0gICAgICAgICAgICBpZiAodHlwZW9m
IHRoaXMuX3VwZGF0ZUVtcHR5Q29udGVudFBsYWNlaG9sZGVyID09PSAiZnVuY3Rpb24iKQotICAg
ICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUVtcHR5Q29udGVudFBsYWNlaG9sZGVyKCk7Ci0gICAg
ICAgIH0KKyAgICAgICAgaWYgKHRoaXMuX2NoZWNrRm9yT2xkUmVzb3VyY2VzVGltZW91dElkZW50
aWZpZXIpCisgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgLy8gQ2hlY2sgb24gYSBkZWxh
eSB0byBjb2FsZXNjZSBtdWx0aXBsZSBjYWxscyB0byBfY2hlY2tGb3JPbGRSZXNvdXJjZXMuCi0g
ICAgICAgIHRoaXMuX2NoZWNrRm9yT2xkUmVzb3VyY2VzVGltZW91dElkZW50aWZpZXIgPSBzZXRU
aW1lb3V0KGRlbGF5ZWRXb3JrLmJpbmQodGhpcyksIDApOworICAgICAgICB0aGlzLl9jaGVja0Zv
ck9sZFJlc291cmNlc1RpbWVvdXRJZGVudGlmaWVyID0gc2V0VGltZW91dCh0aGlzLnBydW5lT2xk
UmVzb3VyY2VUcmVlRWxlbWVudHMuYmluZCh0aGlzKSk7CiAgICAgfQogCiAgICAgX2lzVHJlZUVs
ZW1lbnRXaXRob3V0UmVwcmVzZW50ZWRPYmplY3QodHJlZUVsZW1lbnQpCkBAIC02MzMsNiArNjQy
LDggQEAgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwgPSBjbGFzcyBOYXZpZ2F0
aW9uU2lkZWJhclBhbmVsIGV4dGVuZHMgV2ViSW4KICAgICAgICAgaWYgKCF0aGlzLl9wZW5kaW5n
Vmlld1N0YXRlQ29va2llKQogICAgICAgICAgICAgcmV0dXJuOwogCisgICAgICAgIHRoaXMuX2No
ZWNrRm9yT2xkUmVzb3VyY2VzSWZOZWVkZWQoKTsKKwogICAgICAgICB2YXIgdmlzaWJsZVRyZWVF
bGVtZW50cyA9IFtdOwogICAgICAgICB0aGlzLl92aXNpYmxlQ29udGVudFRyZWVPdXRsaW5lcy5m
b3JFYWNoKGZ1bmN0aW9uKG91dGxpbmUpIHsKICAgICAgICAgICAgIHZhciBjdXJyZW50VHJlZUVs
ZW1lbnQgPSBvdXRsaW5lLmhhc0NoaWxkcmVuID8gb3V0bGluZS5jaGlsZHJlblswXSA6IG51bGw7
CkBAIC02NzgsOSArNjg5LDYgQEAgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwg
PSBjbGFzcyBOYXZpZ2F0aW9uU2lkZWJhclBhbmVsIGV4dGVuZHMgV2ViSW4KICAgICAgICAgICAg
IH0pOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKCEodHJlZUVsZW1lbnRzIGluc3RhbmNlb2Yg
QXJyYXkpKQotICAgICAgICAgICAgdHJlZUVsZW1lbnRzID0gW3RyZWVFbGVtZW50c107Ci0KICAg
ICAgICAgdmFyIG1hdGNoZWRFbGVtZW50ID0gbnVsbDsKICAgICAgICAgdHJlZUVsZW1lbnRzLnNv
bWUoZnVuY3Rpb24oZWxlbWVudCkgewogICAgICAgICAgICAgaWYgKHRyZWVFbGVtZW50TWF0Y2hl
c0Nvb2tpZS5jYWxsKHRoaXMsIGVsZW1lbnQpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UYWJDb250ZW50Vmlldy5qcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RhYkNvbnRlbnRWaWV3LmpzCmluZGV4
IDJkOGRmMTczNzI5OTY3YjNkMjQ5OTg4YWMyYmU3ZDdiYTBlYzRiYjIuLmEyOTU1NzlkZGQ4YTRh
NDcyNGI1NzI5Mjk0OWQ3MDRkZTFmNjdiNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RhYkNvbnRlbnRWaWV3LmpzCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RhYkNvbnRlbnRWaWV3LmpzCkBAIC0x
MDcsNyArMTA3LDcgQEAgV2ViSW5zcGVjdG9yLlRhYkNvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0sCiAKLSAgICByZXN0b3JlU3RhdGVGcm9tQ29v
a2llOiBmdW5jdGlvbihjYXVzZWRCeVJlbG9hZCkKKyAgICByZXN0b3JlU3RhdGVGcm9tQ29va2ll
OiBmdW5jdGlvbihjYXVzZWRCeU5hdmlhdGlvbikKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5u
YXZpZ2F0aW9uU2lkZWJhclBhbmVsKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTE1LDcgKzEx
NSw3IEBAIFdlYkluc3BlY3Rvci5UYWJDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAg
IHZhciBtYXRjaFR5cGVPbmx5RGVsYXlGb3JSZWxvYWQgPSAyMDAwOwogICAgICAgICB2YXIgbWF0
Y2hUeXBlT25seURlbGF5Rm9yUmVvcGVuID0gMTAwMDsKIAotICAgICAgICB2YXIgcmVsYXhNYXRj
aERlbGF5ID0gY2F1c2VkQnlSZWxvYWQgPyBtYXRjaFR5cGVPbmx5RGVsYXlGb3JSZWxvYWQgOiBt
YXRjaFR5cGVPbmx5RGVsYXlGb3JSZW9wZW47CisgICAgICAgIHZhciByZWxheE1hdGNoRGVsYXkg
PSBjYXVzZWRCeU5hdmlhdGlvbiA/IG1hdGNoVHlwZU9ubHlEZWxheUZvclJlbG9hZCA6IG1hdGNo
VHlwZU9ubHlEZWxheUZvclJlb3BlbjsKICAgICAgICAgdGhpcy5uYXZpZ2F0aW9uU2lkZWJhclBh
bmVsLnJlc3RvcmVTdGF0ZUZyb21Db29raWUodGhpcy5fY29va2llU2V0dGluZy52YWx1ZSB8fCB7
fSwgcmVsYXhNYXRjaERlbGF5KTsKICAgICB9LAogCkBAIC0xMjQsNyArMTI0LDcgQEAgV2ViSW5z
cGVjdG9yLlRhYkNvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKCF0aGlzLm5h
dmlnYXRpb25TaWRlYmFyUGFuZWwpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgdmFy
IGNvb2tpZSA9IHRoaXMuX2Nvb2tpZVNldHRpbmcudmFsdWUgfHwge307CisgICAgICAgIHZhciBj
b29raWUgPSB7fTsKICAgICAgICAgdGhpcy5uYXZpZ2F0aW9uU2lkZWJhclBhbmVsLnNhdmVTdGF0
ZVRvQ29va2llKGNvb2tpZSk7CiAgICAgICAgIHRoaXMuX2Nvb2tpZVNldHRpbmcudmFsdWUgPSBj
b29raWU7CiAgICAgfSwK
</data>
<flag name="review"
          id="277760"
          type_id="1"
          status="+"
          setter="burg"
    />
    <flag name="commit-queue"
          id="277761"
          type_id="3"
          status="-"
          setter="burg"
    />
          </attachment>
      

    </bug>

</bugzilla>