<?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>44863</bug_id>
          
          <creation_ts>2010-08-30 03:20:56 -0700</creation_ts>
          <short_desc>Renderer ASSERT failure in Chrome when using click-to-play</short_desc>
          <delta_ts>2010-09-02 02:38:25 -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>Plug-ins</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P1</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Bernhard Bauer">bauerb</reporter>
          <assigned_to name="Dave Hyatt">hyatt</assigned_to>
          <cc>abarth</cc>
    
    <cc>eric</cc>
    
    <cc>fishd</cc>
    
    <cc>hyatt</cc>
    
    <cc>jamesr</cc>
    
    <cc>jochen</cc>
    
    <cc>mitz</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>271373</commentid>
    <comment_count>0</comment_count>
    <who name="Bernhard Bauer">bauerb</who>
    <bug_when>2010-08-30 03:20:56 -0700</bug_when>
    <thetext>Steps to reproduce:
1. Start Chrome with --enable-click-to-play
2. Navigate to a site with blocked plugins
3. Aw, Snap!

The assertion failure is an ASSERT(!root-&gt;needsLayout()) in FrameView.cpp (root being the WebCore::RenderView), caused by a style change setting root-&gt;m_normalChildNeedsLayout to true after root-&gt;layout() was called. It looks like it was introduced in http://trac.webkit.org/changeset/66115.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>271374</commentid>
    <comment_count>1</comment_count>
    <who name="Bernhard Bauer">bauerb</who>
    <bug_when>2010-08-30 03:25:09 -0700</bug_when>
    <thetext>(See http://crbug.com/53817)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>271449</commentid>
    <comment_count>2</comment_count>
    <who name="Bernhard Bauer">bauerb</who>
    <bug_when>2010-08-30 08:55:15 -0700</bug_when>
    <thetext>Stack trace to the point where root-&gt;m_normalChildNeedsLayout is set: 

#0  WebCore::RenderObject::markContainingBlocksForLayout (this=0x8eb2cdc, scheduleRelayout=true, newRoot=0x0) at RenderObject.h:967
#1  0x023446d3 in WebCore::RenderObject::setNeedsLayout (this=0x8eb2cdc, b=true, markParents=true) at RenderObject.h:886
#2  0x02315d7f in WebCore::RenderObject::setNeedsLayoutAndPrefWidthsRecalc (this=0x8eb2cdc) at RenderObject.h:467
#3  0x0230c934 in WebCore::RenderObject::styleDidChange (this=0x8eb2cdc, diff=WebCore::StyleDifferenceLayout, oldStyle=0x8d4b120) at /build/chromium/src/third_party/WebKit/WebCore/WebCore.gyp/../rendering/RenderObject.cpp:1879
#4  0x022a6a3a in WebCore::RenderBoxModelObject::styleDidChange (this=0x8eb2cdc, diff=WebCore::StyleDifferenceLayout, oldStyle=0x8d4b120) at /build/chromium/src/third_party/WebKit/WebCore/WebCore.gyp/../rendering/RenderBoxModelObject.cpp:282
#5  0x0229c577 in WebCore::RenderBox::styleDidChange (this=0x8eb2cdc, diff=WebCore::StyleDifferenceLayout, oldStyle=0x8d4b120) at /build/chromium/src/third_party/WebKit/WebCore/WebCore.gyp/../rendering/RenderBox.cpp:168
#6  0x0226a34a in WebCore::RenderBlock::styleDidChange (this=0x8eb2cdc, diff=WebCore::StyleDifferenceLayout, oldStyle=0x8d4b120) at /build/chromium/src/third_party/WebKit/WebCore/WebCore.gyp/../rendering/RenderBlock.cpp:233
#7  0x0230eb5a in WebCore::RenderObject::setStyle (this=0x8eb2cdc, style=@0xbfffa96c) at /build/chromium/src/third_party/WebKit/WebCore/WebCore.gyp/../rendering/RenderObject.cpp:1753
#8  0x0230c5f3 in WebCore::RenderObject::setAnimatableStyle (this=0x8eb2cdc, style=@0xbfffa99c) at /build/chromium/src/third_party/WebKit/WebCore/WebCore.gyp/../rendering/RenderObject.cpp:1679
#9  0x01e26e5b in WebCore::Node::setRenderStyle (this=0x8eb29e0, s=@0xbfffaa04) at /build/chromium/src/third_party/WebKit/WebCore/WebCore.gyp/../dom/Node.cpp:1436
#10 0x01e0ba46 in WebCore::Element::recalcStyle (this=0x8eb29e0, change=WebCore::Node::Force) at /build/chromium/src/third_party/WebKit/WebCore/WebCore.gyp/../dom/Element.cpp:935
#11 0x01dda1d8 in WebCore::Document::recalcStyle (this=0x9818200, change=WebCore::Node::Force) at /build/chromium/src/third_party/WebKit/WebCore/WebCore.gyp/../dom/Document.cpp:1447
#12 0x01dd9e9e in WebCore::Document::updateStyleIfNeeded (this=0x9818200) at /build/chromium/src/third_party/WebKit/WebCore/WebCore.gyp/../dom/Document.cpp:1491
#13 0x01ebf2ea in WebCore::SelectionController::updateAppearance (this=0x99376a4) at /build/chromium/src/third_party/WebKit/WebCore/WebCore.gyp/../editing/SelectionController.cpp:1437
#14 0x020ff917 in WebCore::FrameView::layout (this=0x98dbe00, allowSubtree=true) at /build/chromium/src/third_party/WebKit/WebCore/WebCore.gyp/../page/FrameView.cpp:785
#15 0x0210046a in WebCore::FrameView::visibleContentsResized (this=0x98dbe00) at /build/chromium/src/third_party/WebKit/WebCore/WebCore.gyp/../page/FrameView.cpp:1217
#16 0x02210e27 in WebCore::ScrollView::updateScrollbars (this=0x98dbe00, desiredOffset=@0x98dbe88) at /build/chromium/src/third_party/WebKit/WebCore/WebCore.gyp/../platform/ScrollView.cpp:345
#17 0x02211a88 in WebCore::ScrollView::setFrameRect (this=0x98dbe00, newRect=@0xbfffae70) at /build/chromium/src/third_party/WebKit/WebCore/WebCore.gyp/../platform/ScrollView.cpp:693
#18 0x02100e36 in WebCore::FrameView::setFrameRect (this=0x98dbe00, newRect=@0xbfffae70) at /build/chromium/src/third_party/WebKit/WebCore/WebCore.gyp/../page/FrameView.cpp:338
#19 0x021462ca in WebCore::Widget::resize (this=0x98dbe00, w=640, h=360) at Widget.h:158
#20 0x01c3c222 in WebKit::WebViewImpl::resize (this=0x8eb1420, newSize=@0xbfffaf38) at /build/chromium/src/third_party/WebKit/WebKit/chromium/src/WebViewImpl.cpp:906
#21 0x01749e3b in WebViewPlugin::updateGeometry (this=0x8eb13d0, frame_rect=@0xbfffaf8c, clip_rect=@0xbfffaf7c, cut_out_rects=@0xbfffafd8, is_visible=false) at /build/chromium/src/webkit/support/../glue/plugins/webview_plugin.cc:121
#22 0x01c2c098 in WebKit::WebPluginContainerImpl::reportGeometry (this=0x8eb0b30) at /build/chromium/src/third_party/WebKit/WebKit/chromium/src/WebPluginContainerImpl.cpp:286
#23 0x01c2c7f4 in WebKit::WebPluginContainerImpl::setParent (this=0x8eb0b30, view=0x980e600) at /build/chromium/src/third_party/WebKit/WebKit/chromium/src/WebPluginContainerImpl.cpp:221
#24 0x02210a2f in WebCore::ScrollView::addChild (this=0x980e600, prpChild=@0xbfffb08c) at /build/chromium/src/third_party/WebKit/WebCore/WebCore.gyp/../platform/ScrollView.cpp:69
#25 0x0238df5b in WebCore::moveWidgetToParentSoon (child=0x8eb0b30, parent=0x980e600) at /build/chromium/src/third_party/WebKit/WebCore/WebCore.gyp/../rendering/RenderWidget.cpp:90
#26 0x0238e1e7 in WebCore::RenderWidget::setWidget (this=0x8eaf45c, widget=@0xbfffb11c) at /build/chromium/src/third_party/WebKit/WebCore/WebCore.gyp/../rendering/RenderWidget.cpp:211
#27 0x023185f4 in WebCore::RenderPart::setWidget (this=0x8eaf45c, widget=@0xbfffb18c) at /build/chromium/src/third_party/WebKit/WebCore/WebCore.gyp/../rendering/RenderPart.cpp:50
#28 0x0209191c in WebCore::SubframeLoader::loadPlugin (this=0x90373a0, renderer=0x8eaf45c, url=@0xbfffb234, mimeType=@0xbfffb49c, paramNames=@0xbfffb420, paramValues=@0xbfffb414, useFallback=false) at /build/chromium/src/third_party/WebKit/WebCore/WebCore.gyp/../loader/SubframeLoader.cpp:350
#29 0x020926f1 in WebCore::SubframeLoader::requestObject (this=0x90373a0, renderer=0x8eaf45c, url=@0xbfffb4a0, frameName=@0x3c26ae4, mimeType=@0xbfffb49c, paramNames=@0xbfffb420, paramValues=@0xbfffb414) at /build/chromium/src/third_party/WebKit/WebCore/WebCore.gyp/../loader/SubframeLoader.cpp:129
#30 0x022b3634 in WebCore::RenderEmbeddedObject::updateWidget (this=0x8eaf45c, onlyCreateNonNetscapePlugins=false) at /build/chromium/src/third_party/WebKit/WebCore/WebCore.gyp/../rendering/RenderEmbeddedObject.cpp:278
#31 0x020fcc7a in WebCore::FrameView::updateWidgets (this=0x980e600) at /build/chromium/src/third_party/WebKit/WebCore/WebCore.gyp/../page/FrameView.cpp:1583
#32 0x020fcfc9 in WebCore::FrameView::performPostLayoutTasks (this=0x980e600) at /build/chromium/src/third_party/WebKit/WebCore/WebCore.gyp/../page/FrameView.cpp:1613
#33 0x020ffb0c in WebCore::FrameView::layout (this=0x980e600, allowSubtree=true) at /build/chromium/src/third_party/WebKit/WebCore/WebCore.gyp/../page/FrameView.cpp:826
#34 0x01dd9c6f in WebCore::Document::updateLayout (this=0x9815200) at /build/chromium/src/third_party/WebKit/WebCore/WebCore.gyp/../dom/Document.cpp:1523
#35 0x01ddba43 in WebCore::Document::updateLayoutIgnorePendingStylesheets (this=0x9815200) at /build/chromium/src/third_party/WebKit/WebCore/WebCore.gyp/../dom/Document.cpp:1554
#36 0x01f71391 in WebCore::HTMLEmbedElement::renderWidgetForJSBindings (this=0x8eadd50) at /build/chromium/src/third_party/WebKit/WebCore/WebCore.gyp/../html/HTMLEmbedElement.cpp:72
#37 0x01fa7802 in WebCore::HTMLPlugInElement::pluginWidget (this=0x8eadd50) at /build/chromium/src/third_party/WebKit/WebCore/WebCore.gyp/../html/HTMLPlugInElement.cpp:103
#38 0x01fa7d50 in WebCore::HTMLPlugInElement::getInstance (this=0x8eadd50) at /build/chromium/src/third_party/WebKit/WebCore/WebCore.gyp/../html/HTMLPlugInElement.cpp:95
#39 0x01c8f262 in WebCore::npObjectNamedGetter&lt;WebCore::V8HTMLEmbedElement&gt; (name={&lt;v8::Handle&lt;v8::String&gt;&gt; = {val_ = 0x9844c4c}, &lt;No data fields&gt;}, info=@0xbfffb8a8) at /build/chromium/src/third_party/WebKit/WebCore/WebCore.gyp/../bindings/v8/custom/V8HTMLPlugInElementCustom.cpp:51
#40 0x01c8f346 in WebCore::V8HTMLEmbedElement::namedPropertyGetter (name={&lt;v8::Handle&lt;v8::String&gt;&gt; = {val_ = 0x9844c4c}, &lt;No data fields&gt;}, info=@0xbfffb8a8) at /build/chromium/src/third_party/WebKit/WebCore/WebCore.gyp/../bindings/v8/custom/V8HTMLPlugInElementCustom.cpp:86
#41 0x013bac03 in v8::internal::JSObject::GetPropertyWithInterceptor (this=0x1804a8d5, receiver=0x1804a8d5, name=0xaf17a51, attributes=0xbfffb9cc) at /build/chromium/src/v8/tools/gyp/../../src/objects.cc:6780
#42 0x013bafe9 in v8::internal::Object::GetProperty (this=0x1804a8d5, receiver=0x1804a8d5, result=0xbfffb99c, name=0xaf17a51, attributes=0xbfffb9cc) at /build/chromium/src/v8/tools/gyp/../../src/objects.cc:505
#43 0x0136c26d in v8::internal::CallICBase::LoadFunction (this=0xbfffba28, state=v8::internal::UNINITIALIZED, object={location_ = 0xbfffba80}, name={location_ = 0xbfffba7c}) at /build/chromium/src/v8/tools/gyp/../../src/ic.cc:522
#44 0x0136c50d in v8::internal::CallIC_Miss (args={&lt;v8::internal::Embedded&gt; = {&lt;No data fields&gt;}, length_ = 2, arguments_ = 0xbfffba80}) at /build/chromium/src/v8/tools/gyp/../../src/ic.cc:1551
#45 0x0af200ae in ?? ()
#46 0x0af34280 in ?? ()
#47 0x16d9d3de in ?? ()
#48 0x16d9b86b in ?? ()
#49 0x16d8b2ee in ?? ()
#50 0x16d88489 in ?? ()
#51 0x16d890e3 in ?? ()
#52 0x19776a29 in ?? ()
#53 0x19774328 in ?? ()
#54 0x1976d591 in ?? ()
#55 0x1976d2de in ?? ()
#56 0x194fb8fd in ?? ()
#57 0x194f9c0a in ?? ()
#58 0x0af215df in ?? ()
#59 0x19495f09 in ?? ()
#60 0x0af215df in ?? ()
#61 0x0af2cbcc in ?? ()
#62 0x0c5e0e58 in ?? ()
#63 0x0af215df in ?? ()
#64 0x1977599d in ?? ()
#65 0x0af215df in ?? ()
#66 0x163745f1 in ?? ()
#67 0x16375d22 in ?? ()
#68 0x0af215df in ?? ()
#69 0x0af2cbcc in ?? ()
#70 0x0c5e0e58 in ?? ()
#71 0x0af215df in ?? ()
#72 0x0af2f291 in ?? ()
#73 0x0af20fe2 in ?? ()
#74 0x0131c409 in v8::internal::Invoke (construct=false, func={location_ = 0x9844c2c}, receiver={location_ = 0x9844c30}, argc=1, args=0xbfffc080, has_pending_exception=0xbfffbfbf) at /build/chromium/src/v8/tools/gyp/../../src/execution.cc:94
#75 0x0131c915 in v8::internal::Execution::Call (func={location_ = 0x9844c2c}, receiver={location_ = 0x9844c30}, argc=1, args=0xbfffc080, pending_exception=0xbfffbfbf) at /build/chromium/src/v8/tools/gyp/../../src/execution.cc:121
#76 0x012c800b in v8::Function::Call (this=0x9844c2c, recv={val_ = 0x9844c30}, argc=1, argv=0xbfffc080) at /build/chromium/src/v8/tools/gyp/../../src/api.cc:2795
#77 0x01cd783a in WebCore::V8Proxy::callFunction (this=0x8d1c3f0, function={val_ = 0x9844c2c}, receiver={val_ = 0x9844c30}, argc=1, args=0xbfffc080) at /build/chromium/src/third_party/WebKit/WebCore/WebCore.gyp/../bindings/v8/V8Proxy.cpp:525
#78 0x01c8231b in WebCore::V8EventListener::callListenerFunction (this=0x8e8baf0, context=0x9815238, jsEvent={val_ = 0x9844c10}, event=0x8e96630) at /build/chromium/src/third_party/WebKit/WebCore/WebCore.gyp/../bindings/v8/custom/V8CustomEventListener.cpp:75
#79 0x01cbc87e in WebCore::V8AbstractEventListener::invokeEventHandler (this=0x8e8baf0, context=0x9815238, event=0x8e96630, jsEvent={val_ = 0x9844c10}) at /build/chromium/src/third_party/WebKit/WebCore/WebCore.gyp/../bindings/v8/V8AbstractEventListener.cpp:151
#80 0x01cbcd95 in WebCore::V8AbstractEventListener::handleEvent (this=0x8e8baf0, context=0x9815238, event=0x8e96630) at /build/chromium/src/third_party/WebKit/WebCore/WebCore.gyp/../bindings/v8/V8AbstractEventListener.cpp:94
#81 0x01e142c6 in WebCore::EventTarget::fireEventListeners (this=0x9819200, event=0x8e96630, d=0x9819458, entry=@0x8e8bda0) at /build/chromium/src/third_party/WebKit/WebCore/WebCore.gyp/../dom/EventTarget.cpp:339
#82 0x01e14962 in WebCore::EventTarget::fireEventListeners (this=0x9819200, event=0x8e96630) at /build/chromium/src/third_party/WebKit/WebCore/WebCore.gyp/../dom/EventTarget.cpp:300
#83 0x01e14af2 in WebCore::EventTarget::dispatchEvent (this=0x9819200, event=@0xbfffc28c) at /build/chromium/src/third_party/WebKit/WebCore/WebCore.gyp/../dom/EventTarget.cpp:286
#84 0x024e7942 in WebCore::XMLHttpRequestProgressEventThrottle::dispatchEvent (this=0x98194b8, event=@0xbfffc2e0, progressEventAction=WebCore::FlushProgressEvent) at /build/chromium/src/third_party/WebKit/WebCore/WebCore.gyp/../xml/XMLHttpRequestProgressEventThrottle.cpp:81
#85 0x024e3fcd in WebCore::XMLHttpRequest::callReadyStateChangeListener (this=0x9819200) at /build/chromium/src/third_party/WebKit/WebCore/WebCore.gyp/../xml/XMLHttpRequest.cpp:287
#86 0x024e41c3 in WebCore::XMLHttpRequest::changeState (this=0x9819200, newState=WebCore::XMLHttpRequest::DONE) at /build/chromium/src/third_party/WebKit/WebCore/WebCore.gyp/../xml/XMLHttpRequest.cpp:270
#87 0x024e47cb in WebCore::XMLHttpRequest::didFinishLoading (this=0x9819200, identifier=92) at /build/chromium/src/third_party/WebKit/WebCore/WebCore.gyp/../xml/XMLHttpRequest.cpp:913
#88 0x02058e41 in WebCore::DocumentThreadableLoader::didFinishLoading (this=0x8e8bde0, identifier=92) at /build/chromium/src/third_party/WebKit/WebCore/WebCore.gyp/../loader/DocumentThreadableLoader.cpp:245
#89 0x0205956b in WebCore::DocumentThreadableLoader::didFinishLoading (this=0x8e8bde0, loader=0x9919400) at /build/chromium/src/third_party/WebKit/WebCore/WebCore.gyp/../loader/DocumentThreadableLoader.cpp:235
#90 0x02093508 in WebCore::SubresourceLoader::didFinishLoading (this=0x9919400) at /build/chromium/src/third_party/WebKit/WebCore/WebCore.gyp/../loader/SubresourceLoader.cpp:183
#91 0x0208e526 in WebCore::ResourceLoader::didFinishLoading (this=0x9919400) at /build/chromium/src/third_party/WebKit/WebCore/WebCore.gyp/../loader/ResourceLoader.cpp:444
#92 0x01bead40 in WebCore::ResourceHandleInternal::didFinishLoading (this=0x8e8c4c0) at /build/chromium/src/third_party/WebKit/WebKit/chromium/src/ResourceHandle.cpp:191
#93 0x01788919 in webkit_glue::WebURLLoaderImpl::Context::OnCompletedRequest (this=0x8e8c400, status=@0xbfffc634, security_info=@0xbfffc63c) at /build/chromium/src/webkit/support/../glue/weburlloader_impl.cc:614
#94 0x000f3561 in ResourceDispatcher::OnRequestComplete (this=0xab05790, request_id=92, status=@0xbfffc634, security_info=@0xbfffc63c) at /build/chromium/src/chrome/common/resource_dispatcher.cc:471
#95 0x000f50ce in DispatchToMethod&lt;ResourceDispatcher, void (ResourceDispatcher::*)(int, URLRequestStatus const&amp;, std::string const&amp;), int, URLRequestStatus, std::string&gt; (obj=0xab05790, method={__pfn = 0xf33fc &lt;ResourceDispatcher::OnRequestComplete(int, URLRequestStatus const&amp;, std::string const&amp;)&gt;, __delta = 0}, arg=@0xbfffc630) at tuple.h:560
#96 0x000f7578 in IPC::MessageWithTuple&lt;Tuple3&lt;int, URLRequestStatus, std::string&gt; &gt;::Dispatch&lt;ResourceDispatcher, void (ResourceDispatcher::*)(int, URLRequestStatus const&amp;, std::string const&amp;)&gt; (msg=0xa9083fc, obj=0xab05790, func={__pfn = 0xf33fc &lt;ResourceDispatcher::OnRequestComplete(int, URLRequestStatus const&amp;, std::string const&amp;)&gt;, __delta = 0}) at ipc_message_utils.h:944
#97 0x000f2d55 in ResourceDispatcher::DispatchMessage (this=0xab05790, message=@0xa9083fc) at /build/chromium/src/chrome/common/resource_dispatcher.cc:540
#98 0x000f4001 in ResourceDispatcher::OnMessageReceived (this=0xab05790, message=@0xa9083fc) at /build/chromium/src/chrome/common/resource_dispatcher.cc:306
#99 0x0011e312 in ChildThread::OnMessageReceived (this=0xab05c64, msg=@0xa9083fc) at /build/chromium/src/chrome/common/child_thread.cc:139
#100 0x0167d880 in IPC::ChannelProxy::Context::OnDispatchMessage (this=0xab05430, message=@0xa9083fc) at /build/chromium/src/ipc/ipc_channel_proxy.cc:206
#101 0x0167e87e in DispatchToMethod&lt;IPC::ChannelProxy::Context, void (IPC::ChannelProxy::Context::*)(IPC::Message const&amp;), IPC::Message&gt; (obj=0xab05430, method={__pfn = 0x167d7f0 &lt;IPC::ChannelProxy::Context::OnDispatchMessage(IPC::Message const&amp;)&gt;, __delta = 0}, arg=@0xa9083fc) at tuple.h:547
#102 0x0167e8b9 in RunnableMethod&lt;IPC::ChannelProxy::Context, void (IPC::ChannelProxy::Context::*)(IPC::Message const&amp;), Tuple1&lt;IPC::Message&gt; &gt;::Run (this=0xa9083e0) at task.h:327
#103 0x00bdef81 in MessageLoop::RunTask (this=0xbfffe584, task=0xa9083e0) at /build/chromium/src/base/message_loop.cc:408
#104 0x00bdf031 in MessageLoop::DeferOrRunPendingTask (this=0xbfffe584, pending_task=@0xbfffcd1c) at /build/chromium/src/base/message_loop.cc:417
#105 0x00bdf2c1 in MessageLoop::DoWork (this=0xbfffe584) at /build/chromium/src/base/message_loop.cc:524
#106 0x00c404ca in base::MessagePumpCFRunLoopBase::RunWork (this=0xae00d20) at /build/chromium/src/base/message_pump_mac.mm:291
#107 0x00c4050f in base::MessagePumpCFRunLoopBase::RunWorkSource (info=0xae00d20) at /build/chromium/src/base/message_pump_mac.mm:269
#108 0x967a5f91 in __CFRunLoopDoSources0 ()
#109 0x967a3bbf in __CFRunLoopRun ()
#110 0x967a3094 in CFRunLoopRunSpecific ()
#111 0x967a2ec1 in CFRunLoopRunInMode ()
#112 0x97cd2f9c in RunCurrentEventLoopInMode ()
#113 0x97cd2d51 in ReceiveNextEventCommon ()
#114 0x97cd2bd6 in BlockUntilNextEventMatchingListInMode ()
#115 0x95cf7a89 in _DPSNextEvent ()
#116 0x95cf72ca in -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] ()
#117 0x95cb955b in -[NSApplication run] ()
#118 0x00c4000c in base::MessagePumpNSApplication::DoRun (this=0xae00d20, delegate=0xbfffe584) at /build/chromium/src/base/message_pump_mac.mm:677
#119 0x00c405fb in base::MessagePumpCFRunLoopBase::Run (this=0xae00d20, delegate=0xbfffe584) at /build/chromium/src/base/message_pump_mac.mm:213
#120 0x00bdfacc in MessageLoop::RunInternal (this=0xbfffe584) at /build/chromium/src/base/message_loop.cc:256
#121 0x00bdfae7 in MessageLoop::RunHandler (this=0xbfffe584) at /build/chromium/src/base/message_loop.cc:228
#122 0x00bdfb4b in MessageLoop::Run (this=0xbfffe584) at /build/chromium/src/base/message_loop.cc:206
#123 0x00b33484 in RendererMain (parameters=@0xbfffeffc) at /build/chromium/src/chrome/renderer/renderer_main.cc:294
#124 0x00008f44 in ChromeMain (argc=7, argv=0xbffff190) at /build/chromium/src/chrome/app/chrome_dll_main.cc:807
#125 0x00001f52 in main (argc=7, argv=0xbffff190) at /build/chromium/src/chrome/app/chrome_exe_main.mm:16

The stack trace for the failing ASSERT is pretty much the same, starting at frame 14, in FrameView.cpp:805, so I&apos;m not repeating it here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>272068</commentid>
    <comment_count>3</comment_count>
      <attachid>66043</attachid>
    <who name="Bernhard Bauer">bauerb</who>
    <bug_when>2010-08-31 06:34:12 -0700</bug_when>
    <thetext>Created attachment 66043
Always run pending style recalcs when layouting.

It seems this is caused by a pending style recalculation when FrameView::layout is called. 

If a style recalc is pending, Document::updateStyleIfNeeded is called from m_frame-&gt;selection()-&gt;updateAppearance() in FrameView.cpp:784, which is after the layout has happened, so it sets the layout flag again.

My solution is to call updateStyleIfNeeded before layouting, which can conveniently done by moving it out of the else clause around FrameView.cpp:657.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>272111</commentid>
    <comment_count>4</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-08-31 08:35:36 -0700</bug_when>
    <thetext>Dave Hyatt should review this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>272143</commentid>
    <comment_count>5</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2010-08-31 09:39:56 -0700</bug_when>
    <thetext>I thought reapplyStyles actually called styleSelectorChanged, so I don&apos;t quite understand why this is happening.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>272145</commentid>
    <comment_count>6</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2010-08-31 09:45:00 -0700</bug_when>
    <thetext>The implementation of reapplyStyles contains:

m_doc-&gt;styleSelectorChanged(RecalcStyleImmediately);

I wouldn&apos;t think you could have a pending style recalculation after calling that.  Let me look into the implementation of that method.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>272153</commentid>
    <comment_count>7</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2010-08-31 09:53:49 -0700</bug_when>
    <thetext>I&apos;m going to take this bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>272155</commentid>
    <comment_count>8</comment_count>
      <attachid>66043</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2010-08-31 09:54:31 -0700</bug_when>
    <thetext>Comment on attachment 66043
Always run pending style recalcs when layouting.

Clearing flags.  I&apos;m going to make a more comprehensive change here to eliminate the ability to even have this confusion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>272632</commentid>
    <comment_count>9</comment_count>
      <attachid>66166</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2010-08-31 21:51:22 -0700</bug_when>
    <thetext>Created attachment 66166
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>272634</commentid>
    <comment_count>10</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-08-31 22:03:12 -0700</bug_when>
    <thetext>Attachment 66166 did not build on qt:
Build output: http://queues.webkit.org/results/3932006</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>272639</commentid>
    <comment_count>11</comment_count>
      <attachid>66166</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-08-31 22:17:17 -0700</bug_when>
    <thetext>Comment on attachment 66166
Patch

&gt;  void FrameView::enterCompositingMode()
&gt;  {
&gt;  #if USE(ACCELERATED_COMPOSITING)
&gt; -    if (RenderView* view = m_frame-&gt;contentRenderer())
&gt; +    if (RenderView* view = m_frame-&gt;contentRenderer()) {
&gt;          view-&gt;compositor()-&gt;enableCompositingMode();
&gt; +        if (!needsLayout())
&gt; +            view-&gt;compositor()-&gt;scheduleCompositingLayerUpdate();
&gt; +    }

Why isn&apos;t the updateCompositingLayers() at the end of recalcStyle() enough here? scheduleCompositingLayerUpdate() was added for a very specific case, and I&apos;m trying to avoid more timer proliferation.

&gt; +    if (Frame* frame = core([self _frame])) {
&gt; +        if (frame-&gt;document() &amp;&amp; frame-&gt;document()-&gt;inPageCache())
&gt; +            return;
&gt; +        frame-&gt;document()-&gt;scheduleForcedStyleRecalc();

Should scheduleForcedStyleRecalc() do the inPageCache() check?

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>272648</commentid>
    <comment_count>12</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2010-08-31 23:01:15 -0700</bug_when>
    <thetext>Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>272649</commentid>
    <comment_count>13</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2010-08-31 23:03:45 -0700</bug_when>
    <thetext>I think it&apos;s not enough because you still haven&apos;t done the recalc style yet.  Maybe a better fix would be to force layerTreeAsText to update style after it does update layout.

It seems like layerTreeAsText is updating layout (which updates style and layout), but then we&apos;re left in a state because of the post tasks of needing to recalc style again (but I think it&apos;s just for a compositing update).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>272653</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-31 23:06:27 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/66577 might have broken Qt Linux ARMv5 Release</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>272809</commentid>
    <comment_count>15</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-09-01 08:18:51 -0700</bug_when>
    <thetext>Maybe this is because plugin&apos;s specifically do an enableCompositingMode() outside of a style recalc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>273278</commentid>
    <comment_count>16</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-09-02 02:33:23 -0700</bug_when>
    <thetext>There is suspicion this caused the fast/css/display-none-inline-style-change-crash failures on the SnowLeopard Bot.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>273280</commentid>
    <comment_count>17</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-09-02 02:35:18 -0700</bug_when>
    <thetext>--- /Volumes/Data/WebKit-BuildSlave/snowleopard-intel-release-tests/build/layout-test-results/fast/css/display-none-inline-style-change-crash-expected.txt	2010-09-01 23:31:45.000000000 -0700
+++ /Volumes/Data/WebKit-BuildSlave/snowleopard-intel-release-tests/build/layout-test-results/fast/css/display-none-inline-style-change-crash-actual.txt	2010-09-01 23:31:45.000000000 -0700
@@ -1,3 +1,4 @@
+ALERT: 1 rule(s) were returned from getMatchedCSSRules, expected zero.
 Test for http://bugs.webkit.org/show_bug.cgi?id=15887 REGRESSION (r27576): Crash in RenderStyle::affectedByHoverRules clicking link on Digg.
 
 This test should not crash.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>273281</commentid>
    <comment_count>18</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-09-02 02:37:18 -0700</bug_when>
    <thetext>http://build.webkit.org/builders/SnowLeopard%20Intel%20Release%20(Tests)/builds/16779

Was the first build to show this failure.  And

http://build.webkit.org/builders/SnowLeopard%20Intel%20Release%20(Tests)/builds/16776 was of the revision right before.  So that rather strongly indicates this change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>273283</commentid>
    <comment_count>19</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-09-02 02:38:25 -0700</bug_when>
    <thetext>I&apos;m not sure why the sheriff bot didn&apos;t say anything.

And sorry, I meant:
http://build.webkit.org/builders/SnowLeopard%20Intel%20Release%20(Tests)/builds/16778
in my previous comment. :)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>66043</attachid>
            <date>2010-08-31 06:34:12 -0700</date>
            <delta_ts>2010-08-31 21:51:22 -0700</delta_ts>
            <desc>Always run pending style recalcs when layouting.</desc>
            <filename>issue44863.patch</filename>
            <type>text/plain</type>
            <size>1027</size>
            <attacher name="Bernhard Bauer">bauerb</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MWJkZGVhOC4uMzE1NjViZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMC0wOC0zMSAgQmVybmhhcmQgQmF1
ZXIgIDxiYXVlcmJAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFsd2F5cyBydW4gcGVuZGluZyBzdHlsZSByZWNhbGNzIHdoZW4g
bGF5b3V0aW5nLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NDQ4NjMKKworICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lVmlldzo6bGF5b3V0KToKKwogMjAxMC0wOC0zMCAgRXJpYyBDYXJsc29uICA8ZXJp
Yy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYW4gQmVybnN0ZWlu
LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9XZWJDb3JlL3BhZ2Uv
RnJhbWVWaWV3LmNwcAppbmRleCA1MWVkMDU2Li5iYmVmZTY3IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3BhZ2UvRnJhbWVWaWV3LmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApAQCAt
NjU0LDggKzY1NCw3IEBAIHZvaWQgRnJhbWVWaWV3OjpsYXlvdXQoYm9vbCBhbGxvd1N1YnRyZWUp
CiAgICAgLy8gdGhlIGxheW91dCBiZWF0cyBhbnkgc29ydCBvZiBzdHlsZSByZWNhbGMgdXBkYXRl
IHRoYXQgbmVlZHMgdG8gb2NjdXIuCiAgICAgaWYgKG1fZnJhbWUtPm5lZWRzUmVhcHBseVN0eWxl
cygpKQogICAgICAgICBtX2ZyYW1lLT5yZWFwcGx5U3R5bGVzKCk7Ci0gICAgZWxzZQotICAgICAg
ICBkb2N1bWVudC0+dXBkYXRlU3R5bGVJZk5lZWRlZCgpOworICAgIGRvY3VtZW50LT51cGRhdGVT
dHlsZUlmTmVlZGVkKCk7CiAgICAgCiAgICAgYm9vbCBzdWJ0cmVlID0gbV9sYXlvdXRSb290Owog
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>66166</attachid>
            <date>2010-08-31 21:51:22 -0700</date>
            <delta_ts>2010-08-31 22:17:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>39024</size>
            <attacher name="Dave Hyatt">hyatt</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NjU3MykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDkgQEAKKzIwMTAtMDgtMzEgIERhdmUgSHlhdHQgIDxoeWF0dEBhcHBsZS5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ0ODYzLCBkaXNlbnRhbmdsZSBzdHls
ZSByZWNhbGMgZnJvbSBsYXlvdXQsIHNvIHRoYXQKKyAgICAgICAgdGhlIGZvcm1lciBjYW4gb2Nj
dXIgaW4gbW9yZSBwbGFjZXMgd2l0aG91dCBoYXZpbmcgdG8gZG8gdGhlIGxhdHRlci4KKworICAg
ICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIHBhZ2UvRm9jdXNDb250cm9sbGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZvY3VzQ29udHJvbGxlcjo6c2V0QWN0aXZlKToKKyAgICAg
ICAgKiBwYWdlL0ZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpGcmFtZSk6Cisg
ICAgICAgICogcGFnZS9GcmFtZS5oOgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6ZW50ZXJDb21wb3NpdGluZ01vZGUpOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpsYXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVW
aWV3OjpuZWVkc0xheW91dCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnVwZGF0ZUxh
eW91dEFuZFN0eWxlSWZOZWVkZWRSZWN1cnNpdmUpOgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3
Lmg6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNj
aGVkdWxlRm9yY2VkU3R5bGVSZWNhbGNGb3JBbGxQYWdlcyk6CisgICAgICAgICogcGFnZS9QYWdl
Lmg6CisgICAgICAgICogcGFnZS9TZXR0aW5ncy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZXRO
ZWVkc1JlY2FsY1N0eWxlSW5BbGxGcmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6c2V0TG9hZHNJ
bWFnZXNBdXRvbWF0aWNhbGx5SW5BbGxGcmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6U2V0dGlu
Z3M6OnNldFN0YW5kYXJkRm9udEZhbWlseSk6CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nczo6
c2V0Rml4ZWRGb250RmFtaWx5KToKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjpzZXRTZXJp
ZkZvbnRGYW1pbHkpOgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6OnNldFNhbnNTZXJpZkZv
bnRGYW1pbHkpOgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6OnNldEN1cnNpdmVGb250RmFt
aWx5KToKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjpzZXRGYW50YXN5Rm9udEZhbWlseSk6
CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nczo6c2V0TWluaW11bUZvbnRTaXplKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNldHRpbmdzOjpzZXRNaW5pbXVtTG9naWNhbEZvbnRTaXplKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNldHRpbmdzOjpzZXREZWZhdWx0Rm9udFNpemUpOgorICAgICAgICAoV2Vi
Q29yZTo6U2V0dGluZ3M6OnNldERlZmF1bHRGaXhlZEZvbnRTaXplKToKKyAgICAgICAgKFdlYkNv
cmU6OlNldHRpbmdzOjpzZXRMb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkpOgorICAgICAgICAoV2Vi
Q29yZTo6U2V0dGluZ3M6OnNldFRleHRBcmVhc0FyZVJlc2l6YWJsZSk6CisgICAgICAgIChXZWJD
b3JlOjpTZXR0aW5nczo6c2V0QXV0aG9yQW5kVXNlclN0eWxlc0VuYWJsZWQpOgorICAgICAgICAo
V2ViQ29yZTo6U2V0dGluZ3M6OnNldEZvbnRSZW5kZXJpbmdNb2RlKToKKyAgICAgICAgKFdlYkNv
cmU6OlNldHRpbmdzOjpzZXRab29tTW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nczo6
c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6U2V0
dGluZ3M6OnNldFNob3dEZWJ1Z0JvcmRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6
OnNldFNob3dSZXBhaW50Q291bnRlcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1l
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjpwbGF0Zm9ybUNvbG9yc0RpZENo
YW5nZSk6CisKIDIwMTAtMDgtMzEgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCkluZGV4OiBXZWJDb3JlL1dl
YkNvcmUuZXhwLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHJldmlz
aW9uIDY2NDg4KQorKysgV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAt
NTc4LDcgKzU3OCw2IEBAIF9fWk43V2ViQ29yZTVDYWNoZTEzZ2V0U3RhdGlzdGljc0V2CiBfX1pO
N1dlYkNvcmU1Q2FjaGUxM3NldENhcGFjaXRpZXNFampqCiBfX1pON1dlYkNvcmU1RnJhbWUxMGNy
ZWF0ZVZpZXdFUktOU183SW50U2l6ZUVSS05TXzVDb2xvckViUzNfYk5TXzEzU2Nyb2xsYmFyTW9k
ZUViUzdfYgogX19aTjdXZWJDb3JlNUZyYW1lMTBmaW5kU3RyaW5nRVJLTjNXVEY2U3RyaW5nRWJi
YmIKLV9fWk43V2ViQ29yZTVGcmFtZTEzcmVhcHBseVN0eWxlc0V2CiBfX1pON1dlYkNvcmU1RnJh
bWUxNGZyYW1lRm9yV2lkZ2V0RVBLTlNfNldpZGdldEUKIF9fWk43V2ViQ29yZTVGcmFtZTE1cmV2
ZWFsU2VsZWN0aW9uRVJLTlNfMTVTY3JvbGxBbGlnbm1lbnRFYgogX19aTjdXZWJDb3JlNUZyYW1l
MjBzZXRTZWxlY3Rpb25Gcm9tTm9uZUV2CkBAIC02NzYsNiArNjc1LDggQEAgX19aTjdXZWJDb3Jl
OERvY3VtZW50MjRzZXRTaG91bGRDcmVhdGVSZQogX19aTjdXZWJDb3JlOERvY3VtZW50MjZwYWdl
U2l6ZUFuZE1hcmdpbnNJblBpeGVsc0VpUk5TXzdJbnRTaXplRVJpUzNfUzNfUzNfCiBfX1pON1dl
YkNvcmU4RG9jdW1lbnQyN3JlbW92ZU1lZGlhQ2FuU3RhcnRMaXN0ZW5lckVQTlNfMjFNZWRpYUNh
blN0YXJ0TGlzdGVuZXJFCiBfX1pON1dlYkNvcmU4RG9jdW1lbnQzNnVwZGF0ZUxheW91dElnbm9y
ZVBlbmRpbmdTdHlsZXNoZWV0c0V2CitfX1pON1dlYkNvcmU4RG9jdW1lbnQyNXNjaGVkdWxlRm9y
Y2VkU3R5bGVSZWNhbGNFdgorX19aTjdXZWJDb3JlOERvY3VtZW50MjBzdHlsZVNlbGVjdG9yQ2hh
bmdlZEVOU18yM1N0eWxlU2VsZWN0b3JVcGRhdGVGbGFnRQogX19aTjdXZWJDb3JlOERvY3VtZW50
NGhlYWRFdgogX19aTjdXZWJDb3JlOEZvcm1EYXRhNmNyZWF0ZUVQS3ZtCiBfX1pON1dlYkNvcmU4
Rm9ybURhdGFEMUV2CkBAIC03NjksOCArNzcwLDggQEAgX19aTjdXZWJDb3JlOUZyYW1lVmlldzE4
dXBkYXRlQ29udHJvbFRpbgogX19aTjdXZWJDb3JlOUZyYW1lVmlldzIwZW50ZXJDb21wb3NpdGlu
Z01vZGVFdgogX19aTjdXZWJDb3JlOUZyYW1lVmlldzIxZmx1c2hEZWZlcnJlZFJlcGFpbnRzRXYK
IF9fWk43V2ViQ29yZTlGcmFtZVZpZXcyMnNldEJhc2VCYWNrZ3JvdW5kQ29sb3JFTlNfNUNvbG9y
RQotX19aTjdXZWJDb3JlOUZyYW1lVmlldzIzbGF5b3V0SWZOZWVkZWRSZWN1cnNpdmVFdgogX19a
TjdXZWJDb3JlOUZyYW1lVmlldzIzdXBkYXRlQ2FuSGF2ZVNjcm9sbGJhcnNFdgorX19aTjdXZWJD
b3JlOUZyYW1lVmlldzM3dXBkYXRlTGF5b3V0QW5kU3R5bGVJZk5lZWRlZFJlY3Vyc2l2ZUV2CiBf
X1pON1dlYkNvcmU5RnJhbWVWaWV3MjRmb3JjZUxheW91dEZvclBhZ2luYXRpb25FUktOU185Rmxv
YXRTaXplRWZOU181RnJhbWUxOUFkanVzdFZpZXdTaXplT3JOb3RFCiBfX1pON1dlYkNvcmU5RnJh
bWVWaWV3MjlzZXRTaG91bGRVcGRhdGVXaGlsZU9mZnNjcmVlbkViCiBfX1pON1dlYkNvcmU5RnJh
bWVWaWV3MjlzeW5jQ29tcG9zaXRpbmdTdGF0ZVJlY3Vyc2l2ZUV2CkluZGV4OiBXZWJDb3JlL3Bh
Z2UvRm9jdXNDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRm9jdXND
b250cm9sbGVyLmNwcAkocmV2aXNpb24gNjY0ODgpCisrKyBXZWJDb3JlL3BhZ2UvRm9jdXNDb250
cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjQ0LDcgKzY0NCw3IEBAIHZvaWQgRm9jdXND
b250cm9sbGVyOjpzZXRBY3RpdmUoYm9vbCBhY3QKIAogICAgIGlmIChGcmFtZVZpZXcqIHZpZXcg
PSBtX3BhZ2UtPm1haW5GcmFtZSgpLT52aWV3KCkpIHsKICAgICAgICAgaWYgKCF2aWV3LT5wbGF0
Zm9ybVdpZGdldCgpKSB7Ci0gICAgICAgICAgICB2aWV3LT5sYXlvdXRJZk5lZWRlZFJlY3Vyc2l2
ZSgpOworICAgICAgICAgICAgdmlldy0+dXBkYXRlTGF5b3V0QW5kU3R5bGVJZk5lZWRlZFJlY3Vy
c2l2ZSgpOwogICAgICAgICAgICAgdmlldy0+dXBkYXRlQ29udHJvbFRpbnRzKCk7CiAgICAgICAg
IH0KICAgICB9CkluZGV4OiBXZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcGFnZS9GcmFtZS5jcHAJKHJldmlzaW9uIDY2NDg4KQorKysgV2ViQ29yZS9wYWdlL0Zy
YW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ2LDcgKzE0Niw2IEBAIGlubGluZSBGcmFtZTo6
RnJhbWUoUGFnZSogcGFnZSwgSFRNTEZyYW0KICNlbmRpZgogICAgICwgbV9oaWdobGlnaHRUZXh0
TWF0Y2hlcyhmYWxzZSkKICAgICAsIG1faW5WaWV3U291cmNlTW9kZShmYWxzZSkKLSAgICAsIG1f
bmVlZHNSZWFwcGx5U3R5bGVzKGZhbHNlKQogICAgICwgbV9pc0Rpc2Nvbm5lY3RlZChmYWxzZSkK
ICAgICAsIG1fZXhjbHVkZUZyb21UZXh0U2VhcmNoKGZhbHNlKQogewpAQCAtNjMwLDQwICs2Mjks
NiBAQCB2b2lkIEZyYW1lOjpzZXRQcmludGluZyhib29sIHByaW50aW5nLCBjCiAgICAgICAgIGNo
aWxkLT5zZXRQcmludGluZyhwcmludGluZywgcGFnZVNpemUsIG1heGltdW1TaHJpbmtSYXRpbywg
c2hvdWxkQWRqdXN0Vmlld1NpemUpOwogfQogCi12b2lkIEZyYW1lOjpzZXROZWVkc1JlYXBwbHlT
dHlsZXMoKQotewotICAgIC8vIFdoZW4gdGhlIGZyYW1lIGlzIG5vdCBzaG93aW5nIHdlYiBjb250
ZW50LCBpdCBkb2Vzbid0IG1ha2Ugc2Vuc2UgdG8gYXBwbHkgc3R5bGVzLgotICAgIC8vIElmIHdl
IHRyaWVkLCB3ZSdkIGVuZCB1cCBkb2luZyB0aGluZ3Mgd2l0aCB0aGUgZG9jdW1lbnQsIGJ1dCB0
aGUgZG9jdW1lbnQsIGlmIG9uZQotICAgIC8vIGV4aXN0cywgaXMgbm90IGN1cnJlbnRseSBzaG93
biBhbmQgc2hvdWxkIGJlIGluIHRoZSBwYWdlIGNhY2hlLgotICAgIGlmICghbV9sb2FkZXIuY2xp
ZW50KCktPmhhc0hUTUxWaWV3KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChtX25lZWRz
UmVhcHBseVN0eWxlcykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9uZWVkc1JlYXBwbHlTdHls
ZXMgPSB0cnVlOwotCi0gICAgLy8gRnJhbWVWaWV3J3MgImxheW91dCIgdGltZXIgaW5jbHVkZXMg
cmVhcHBseVN0eWxlcywgc28gZGVzcGl0ZSBpdHMKLSAgICAvLyBuYW1lLCBpdCdzIHdoYXQgd2Ug
d2FudCB0byBjYWxsIGhlcmUuCi0gICAgaWYgKHZpZXcoKSkKLSAgICAgICAgdmlldygpLT5zY2hl
ZHVsZVJlbGF5b3V0KCk7Ci19Ci0KLXZvaWQgRnJhbWU6OnJlYXBwbHlTdHlsZXMoKQotewotICAg
IG1fbmVlZHNSZWFwcGx5U3R5bGVzID0gZmFsc2U7Ci0KLSAgICAvLyBGSVhNRTogVGhpcyBjYWxs
IGRvZXNuJ3QgcmVhbGx5IG1ha2Ugc2Vuc2UgaW4gYSBmdW5jdGlvbiBjYWxsZWQgcmVhcHBseVN0
eWxlcy4KLSAgICAvLyBXZSBzaG91bGQgcHJvYmFibHkgZXZlbnR1YWxseSBtb3ZlIGl0IGludG8g
aXRzIG93biBmdW5jdGlvbi4KLSAgICBtX2RvYy0+ZG9jTG9hZGVyKCktPnNldEF1dG9Mb2FkSW1h
Z2VzKG1fcGFnZSAmJiBtX3BhZ2UtPnNldHRpbmdzKCktPmxvYWRzSW1hZ2VzQXV0b21hdGljYWxs
eSgpKTsKLQotICAgIC8vIEZJWE1FOiBJdCdzIG5vdCBlbnRpcmVseSBjbGVhciB3aHkgdGhlIGZv
bGxvd2luZyBpcyBuZWVkZWQuCi0gICAgLy8gVGhlIGRvY3VtZW50IGF1dG9tYXRpY2FsbHkgZG9l
cyB0aGlzIGFzIHJlcXVpcmVkIHdoZW4geW91IHNldCB0aGUgc3R5bGUgc2hlZXQuCi0gICAgLy8g
QnV0IHdlIGhhZCBwcm9ibGVtcyB3aGVuIHRoaXMgY29kZSB3YXMgcmVtb3ZlZC4gRGV0YWlscyBh
cmUgaW4KLSAgICAvLyA8aHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODA3
OT4uCi0gICAgbV9kb2MtPnN0eWxlU2VsZWN0b3JDaGFuZ2VkKFJlY2FsY1N0eWxlSW1tZWRpYXRl
bHkpOwotfQotCiB2b2lkIEZyYW1lOjppbmplY3RVc2VyU2NyaXB0cyhVc2VyU2NyaXB0SW5qZWN0
aW9uVGltZSBpbmplY3Rpb25UaW1lKQogewogICAgIGlmICghbV9wYWdlKQpJbmRleDogV2ViQ29y
ZS9wYWdlL0ZyYW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0ZyYW1lLmgJKHJldmlz
aW9uIDY2NDg4KQorKysgV2ViQ29yZS9wYWdlL0ZyYW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2
NCwxMCArMTY0LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIGNsZWFyVGlt
ZXJzKCk7CiAgICAgICAgIHN0YXRpYyB2b2lkIGNsZWFyVGltZXJzKEZyYW1lVmlldyosIERvY3Vt
ZW50Kik7CiAKLSAgICAgICAgdm9pZCBzZXROZWVkc1JlYXBwbHlTdHlsZXMoKTsKLSAgICAgICAg
Ym9vbCBuZWVkc1JlYXBwbHlTdHlsZXMoKSBjb25zdDsKLSAgICAgICAgdm9pZCByZWFwcGx5U3R5
bGVzKCk7Ci0KICAgICAgICAgU3RyaW5nIGRvY3VtZW50VHlwZVN0cmluZygpIGNvbnN0OwogCiAg
ICAgICAgIC8vIFRoaXMgbWV0aG9kIC0tIGFuZCB0aGUgY29ycmVzcG9uZGluZyBsaXN0IG9mIGZv
cm1lciBET00gd2luZG93cyAtLQpAQCAtMzI4LDcgKzMyNCw2IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogICAgICAgICBib29sIG1faGlnaGxpZ2h0VGV4dE1hdGNoZXM7CiAgICAgICAgIGJvb2wg
bV9pblZpZXdTb3VyY2VNb2RlOwotICAgICAgICBib29sIG1fbmVlZHNSZWFwcGx5U3R5bGVzOwog
ICAgICAgICBib29sIG1faXNEaXNjb25uZWN0ZWQ7CiAgICAgICAgIGJvb2wgbV9leGNsdWRlRnJv
bVRleHRTZWFyY2g7CiAKQEAgLTM5NywxMSArMzkyLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICBtX21hcmsgPSBzOwogICAgIH0KIAotICAgIGlubGluZSBib29sIEZyYW1lOjpuZWVk
c1JlYXBwbHlTdHlsZXMoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fbmVlZHNSZWFw
cGx5U3R5bGVzOwotICAgIH0KLQogICAgIGlubGluZSBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlv
biogRnJhbWU6OnR5cGluZ1N0eWxlKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBtX3R5
cGluZ1N0eWxlLmdldCgpOwpJbmRleDogV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAJKHJldmlzaW9uIDY2NDg4KQorKysg
V2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxOSw4ICs1MTks
MTEgQEAgYm9vbCBGcmFtZVZpZXc6Omhhc0NvbXBvc2l0ZWRDb250ZW50KCkgYwogdm9pZCBGcmFt
ZVZpZXc6OmVudGVyQ29tcG9zaXRpbmdNb2RlKCkKIHsKICNpZiBVU0UoQUNDRUxFUkFURURfQ09N
UE9TSVRJTkcpCi0gICAgaWYgKFJlbmRlclZpZXcqIHZpZXcgPSBtX2ZyYW1lLT5jb250ZW50UmVu
ZGVyZXIoKSkKKyAgICBpZiAoUmVuZGVyVmlldyogdmlldyA9IG1fZnJhbWUtPmNvbnRlbnRSZW5k
ZXJlcigpKSB7CiAgICAgICAgIHZpZXctPmNvbXBvc2l0b3IoKS0+ZW5hYmxlQ29tcG9zaXRpbmdN
b2RlKCk7CisgICAgICAgIGlmICghbmVlZHNMYXlvdXQoKSkKKyAgICAgICAgICAgIHZpZXctPmNv
bXBvc2l0b3IoKS0+c2NoZWR1bGVDb21wb3NpdGluZ0xheWVyVXBkYXRlKCk7CisgICAgfQogI2Vu
ZGlmCiB9CiAKQEAgLTY1MiwxMCArNjU1LDcgQEAgdm9pZCBGcmFtZVZpZXc6OmxheW91dChib29s
IGFsbG93U3VidHJlZQogCiAgICAgLy8gQWx3YXlzIGVuc3VyZSBvdXIgc3R5bGUgaW5mbyBpcyB1
cC10by1kYXRlLiAgVGhpcyBjYW4gaGFwcGVuIGluIHNpdHVhdGlvbnMgd2hlcmUKICAgICAvLyB0
aGUgbGF5b3V0IGJlYXRzIGFueSBzb3J0IG9mIHN0eWxlIHJlY2FsYyB1cGRhdGUgdGhhdCBuZWVk
cyB0byBvY2N1ci4KLSAgICBpZiAobV9mcmFtZS0+bmVlZHNSZWFwcGx5U3R5bGVzKCkpCi0gICAg
ICAgIG1fZnJhbWUtPnJlYXBwbHlTdHlsZXMoKTsKLSAgICBlbHNlCi0gICAgICAgIGRvY3VtZW50
LT51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CisgICAgZG9jdW1lbnQtPnVwZGF0ZVN0eWxlSWZOZWVk
ZWQoKTsKICAgICAKICAgICBib29sIHN1YnRyZWUgPSBtX2xheW91dFJvb3Q7CiAKQEAgLTE0MzAs
MTIgKzE0MzAsOSBAQCBib29sIEZyYW1lVmlldzo6bmVlZHNMYXlvdXQoKSBjb25zdAogICAgIGlm
ICghbV9mcmFtZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIFJlbmRlclZpZXcqIHJvb3Qg
PSBtX2ZyYW1lLT5jb250ZW50UmVuZGVyZXIoKTsKLSAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBt
X2ZyYW1lLT5kb2N1bWVudCgpOwogICAgIHJldHVybiBsYXlvdXRQZW5kaW5nKCkKICAgICAgICAg
fHwgKHJvb3QgJiYgcm9vdC0+bmVlZHNMYXlvdXQoKSkKICAgICAgICAgfHwgbV9sYXlvdXRSb290
Ci0gICAgICAgIHx8IChkb2N1bWVudCAmJiBkb2N1bWVudC0+Y2hpbGROZWVkc1N0eWxlUmVjYWxj
KCkpIC8vIGNhbiBvY2N1ciB3aGVuIHVzaW5nIFdlYktpdCBPYmpDIGludGVyZmFjZQotICAgICAg
ICB8fCBtX2ZyYW1lLT5uZWVkc1JlYXBwbHlTdHlsZXMoKQogICAgICAgICB8fCAobV9kZWZlclNl
dE5lZWRzTGF5b3V0cyAmJiBtX3NldE5lZWRzTGF5b3V0V2FzRGVmZXJyZWQpOwogfQogCkBAIC0x
OTk4LDcgKzE5OTUsNyBAQCB2b2lkIEZyYW1lVmlldzo6c2V0Tm9kZVRvRHJhdyhOb2RlKiBub2Rl
CiAgICAgbV9ub2RlVG9EcmF3ID0gbm9kZTsKIH0KIAotdm9pZCBGcmFtZVZpZXc6OmxheW91dElm
TmVlZGVkUmVjdXJzaXZlKCkKK3ZvaWQgRnJhbWVWaWV3Ojp1cGRhdGVMYXlvdXRBbmRTdHlsZUlm
TmVlZGVkUmVjdXJzaXZlKCkKIHsKICAgICAvLyBXZSBoYXZlIHRvIGNyYXdsIG91ciBlbnRpcmUg
dHJlZSBsb29raW5nIGZvciBhbnkgRnJhbWVWaWV3cyB0aGF0IG5lZWQKICAgICAvLyBsYXlvdXQg
YW5kIG1ha2Ugc3VyZSB0aGV5IGFyZSB1cCB0byBkYXRlLgpAQCAtMjAwOSw2ICsyMDA2LDggQEAg
dm9pZCBGcmFtZVZpZXc6OmxheW91dElmTmVlZGVkUmVjdXJzaXZlKAogICAgIC8vIHJlZ2lvbiBi
dXQgdGhlbiBiZWNvbWUgaW5jbHVkZWQgbGF0ZXIgYnkgdGhlIHNlY29uZCBmcmFtZSBhZGRpbmcg
cmVjdHMgdG8gdGhlIGRpcnR5IHJlZ2lvbgogICAgIC8vIHdoZW4gaXQgbGF5cyBvdXQuCiAKKyAg
ICBtX2ZyYW1lLT5kb2N1bWVudCgpLT51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CisKICAgICBpZiAo
bmVlZHNMYXlvdXQoKSkKICAgICAgICAgbGF5b3V0KCk7CiAKQEAgLTIwMTcsMTAgKzIwMTYsMTAg
QEAgdm9pZCBGcmFtZVZpZXc6OmxheW91dElmTmVlZGVkUmVjdXJzaXZlKAogICAgIGZvciAoSGFz
aFNldDxSZWZQdHI8V2lkZ2V0PiA+Ojpjb25zdF9pdGVyYXRvciBjdXJyZW50ID0gdmlld0NoaWxk
cmVuLT5iZWdpbigpOyBjdXJyZW50ICE9IGVuZDsgKytjdXJyZW50KSB7CiAgICAgICAgIFdpZGdl
dCogd2lkZ2V0ID0gKCpjdXJyZW50KS5nZXQoKTsKICAgICAgICAgaWYgKHdpZGdldC0+aXNGcmFt
ZVZpZXcoKSkKLSAgICAgICAgICAgIHN0YXRpY19jYXN0PEZyYW1lVmlldyo+KHdpZGdldCktPmxh
eW91dElmTmVlZGVkUmVjdXJzaXZlKCk7CisgICAgICAgICAgICBzdGF0aWNfY2FzdDxGcmFtZVZp
ZXcqPih3aWRnZXQpLT51cGRhdGVMYXlvdXRBbmRTdHlsZUlmTmVlZGVkUmVjdXJzaXZlKCk7CiAg
ICAgfQogCi0gICAgLy8gbGF5b3V0SWZOZWVkZWRSZWN1cnNpdmUgaXMgY2FsbGVkIHdoZW4gd2Ug
bmVlZCB0byBtYWtlIHN1cmUgbGF5b3V0IGlzIHVwLXRvLWRhdGUgYmVmb3JlCisgICAgLy8gdXBk
YXRlTGF5b3V0QW5kU3R5bGVJZk5lZWRlZFJlY3Vyc2l2ZSBpcyBjYWxsZWQgd2hlbiB3ZSBuZWVk
IHRvIG1ha2Ugc3VyZSBzdHlsZSBhbmQgbGF5b3V0IGFyZSB1cC10by1kYXRlIGJlZm9yZQogICAg
IC8vIHBhaW50aW5nLCBzbyB3ZSBuZWVkIHRvIGZsdXNoIG91dCBhbnkgZGVmZXJyZWQgcmVwYWlu
dHMgdG9vLgogICAgIGZsdXNoRGVmZXJyZWRSZXBhaW50cygpOwogfQpJbmRleDogV2ViQ29yZS9w
YWdlL0ZyYW1lVmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAko
cmV2aXNpb24gNjY0ODgpCisrKyBXZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTE5Myw3ICsxOTMsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgZG91YmxlIGN1cnJl
bnRQYWludFRpbWVTdGFtcCgpIHsgcmV0dXJuIHNDdXJyZW50UGFpbnRUaW1lU3RhbXA7IH0gLy8g
cmV0dXJucyAwIGlmIG5vdCBwYWludGluZwogICAgIAotICAgIHZvaWQgbGF5b3V0SWZOZWVkZWRS
ZWN1cnNpdmUoKTsKKyAgICB2b2lkIHVwZGF0ZUxheW91dEFuZFN0eWxlSWZOZWVkZWRSZWN1cnNp
dmUoKTsKICAgICB2b2lkIGZsdXNoRGVmZXJyZWRSZXBhaW50cygpOwogCiAgICAgdm9pZCBzZXRJ
c1Zpc3VhbGx5Tm9uRW1wdHkoKSB7IG1faXNWaXN1YWxseU5vbkVtcHR5ID0gdHJ1ZTsgfQpJbmRl
eDogV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9QYWdl
LmNwcAkocmV2aXNpb24gNjY0ODgpCisrKyBXZWJDb3JlL3BhZ2UvUGFnZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQwNiwxNCArNDA2LDE0IEBAIHZvaWQgUGFnZTo6aW5pdEdyb3VwKCkKICAgICBt
X2dyb3VwID0gbV9zaW5nbGVQYWdlR3JvdXAuZ2V0KCk7CiB9CiAKLXZvaWQgUGFnZTo6c2V0TmVl
ZHNSZWFwcGx5U3R5bGVzKCkKK3ZvaWQgUGFnZTo6c2NoZWR1bGVGb3JjZWRTdHlsZVJlY2FsY0Zv
ckFsbFBhZ2VzKCkKIHsKICAgICBpZiAoIWFsbFBhZ2VzKQogICAgICAgICByZXR1cm47CiAgICAg
SGFzaFNldDxQYWdlKj46Oml0ZXJhdG9yIGVuZCA9IGFsbFBhZ2VzLT5lbmQoKTsKICAgICBmb3Ig
KEhhc2hTZXQ8UGFnZSo+OjppdGVyYXRvciBpdCA9IGFsbFBhZ2VzLT5iZWdpbigpOyBpdCAhPSBl
bmQ7ICsraXQpCiAgICAgICAgIGZvciAoRnJhbWUqIGZyYW1lID0gKCppdCktPm1haW5GcmFtZSgp
OyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLT50cmF2ZXJzZU5leHQoKSkKLSAgICAgICAg
ICAgIGZyYW1lLT5zZXROZWVkc1JlYXBwbHlTdHlsZXMoKTsKKyAgICAgICAgICAgIGZyYW1lLT5k
b2N1bWVudCgpLT5zY2hlZHVsZUZvcmNlZFN0eWxlUmVjYWxjKCk7CiB9CiAKIHZvaWQgUGFnZTo6
cmVmcmVzaFBsdWdpbnMoYm9vbCByZWxvYWQpCkluZGV4OiBXZWJDb3JlL3BhZ2UvUGFnZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9QYWdlLmgJKHJldmlzaW9uIDY2NDg4KQorKysgV2Vi
Q29yZS9wYWdlL1BhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtOTEsNyArOTEsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBQYWdlIDogcHVibGljIE5vbmNvcHlhYmxlIHsKICAg
ICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyB2b2lkIHNldE5lZWRzUmVhcHBseVN0eWxlcygpOwor
ICAgICAgICBzdGF0aWMgdm9pZCBzY2hlZHVsZUZvcmNlZFN0eWxlUmVjYWxjRm9yQWxsUGFnZXMo
KTsKIAogICAgICAgICAvLyBJdCBpcyB1cCB0byB0aGUgcGxhdGZvcm0gdG8gZW5zdXJlIHRoYXQg
bm9uLW51bGwgY2xpZW50cyBhcmUgcHJvdmlkZWQgd2hlcmUgcmVxdWlyZWQuCiAgICAgICAgIHN0
cnVjdCBQYWdlQ2xpZW50cyB7CkluZGV4OiBXZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAJKHJldmlzaW9uIDY2NDg4KQorKysg
V2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBA
QAogCiAjaW5jbHVkZSAiQmFja0ZvcndhcmRMaXN0LmgiCiAjaW5jbHVkZSAiRGF0YWJhc2UuaCIK
KyNpbmNsdWRlICJEb2NMb2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZy
YW1lVHJlZS5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgpAQCAtNDEsMTAgKzQyLDE2IEBAIHVz
aW5nIG5hbWVzcGFjZSBzdGQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIHZvaWQg
c2V0TmVlZHNSZWFwcGx5U3R5bGVzSW5BbGxGcmFtZXMoUGFnZSogcGFnZSkKK3N0YXRpYyB2b2lk
IHNldE5lZWRzUmVjYWxjU3R5bGVJbkFsbEZyYW1lcyhQYWdlKiBwYWdlKQogewogICAgIGZvciAo
RnJhbWUqIGZyYW1lID0gcGFnZS0+bWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50
cmVlKCktPnRyYXZlcnNlTmV4dCgpKQotICAgICAgICBmcmFtZS0+c2V0TmVlZHNSZWFwcGx5U3R5
bGVzKCk7CisgICAgICAgIGZyYW1lLT5kb2N1bWVudCgpLT5zdHlsZVNlbGVjdG9yQ2hhbmdlZChE
ZWZlclJlY2FsY1N0eWxlKTsKK30KKworc3RhdGljIHZvaWQgc2V0TG9hZHNJbWFnZXNBdXRvbWF0
aWNhbGx5SW5BbGxGcmFtZXMoUGFnZSogcGFnZSkKK3sKKyAgICBmb3IgKEZyYW1lKiBmcmFtZSA9
IHBhZ2UtPm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLT50cmF2ZXJz
ZU5leHQoKSkKKyAgICAgICAgZnJhbWUtPmRvY3VtZW50KCktPmRvY0xvYWRlcigpLT5zZXRBdXRv
TG9hZEltYWdlcyhwYWdlLT5zZXR0aW5ncygpLT5sb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkoKSk7
CiB9CiAKICNpZiBVU0UoU0FGQVJJX1RIRU1FKQpAQCAtMTUxLDcgKzE1OCw3IEBAIHZvaWQgU2V0
dGluZ3M6OnNldFN0YW5kYXJkRm9udEZhbWlseShjb24KICAgICAgICAgcmV0dXJuOwogCiAgICAg
bV9zdGFuZGFyZEZvbnRGYW1pbHkgPSBzdGFuZGFyZEZvbnRGYW1pbHk7Ci0gICAgc2V0TmVlZHNS
ZWFwcGx5U3R5bGVzSW5BbGxGcmFtZXMobV9wYWdlKTsKKyAgICBzZXROZWVkc1JlY2FsY1N0eWxl
SW5BbGxGcmFtZXMobV9wYWdlKTsKIH0KIAogdm9pZCBTZXR0aW5nczo6c2V0Rml4ZWRGb250RmFt
aWx5KGNvbnN0IEF0b21pY1N0cmluZyYgZml4ZWRGb250RmFtaWx5KQpAQCAtMTYwLDcgKzE2Nyw3
IEBAIHZvaWQgU2V0dGluZ3M6OnNldEZpeGVkRm9udEZhbWlseShjb25zdCAKICAgICAgICAgcmV0
dXJuOwogICAgICAgICAKICAgICBtX2ZpeGVkRm9udEZhbWlseSA9IGZpeGVkRm9udEZhbWlseTsK
LSAgICBzZXROZWVkc1JlYXBwbHlTdHlsZXNJbkFsbEZyYW1lcyhtX3BhZ2UpOworICAgIHNldE5l
ZWRzUmVjYWxjU3R5bGVJbkFsbEZyYW1lcyhtX3BhZ2UpOwogfQogCiB2b2lkIFNldHRpbmdzOjpz
ZXRTZXJpZkZvbnRGYW1pbHkoY29uc3QgQXRvbWljU3RyaW5nJiBzZXJpZkZvbnRGYW1pbHkpCkBA
IC0xNjksNyArMTc2LDcgQEAgdm9pZCBTZXR0aW5nczo6c2V0U2VyaWZGb250RmFtaWx5KGNvbnN0
IAogICAgICAgICByZXR1cm47CiAgICAgICAgIAogICAgIG1fc2VyaWZGb250RmFtaWx5ID0gc2Vy
aWZGb250RmFtaWx5OwotICAgIHNldE5lZWRzUmVhcHBseVN0eWxlc0luQWxsRnJhbWVzKG1fcGFn
ZSk7CisgICAgc2V0TmVlZHNSZWNhbGNTdHlsZUluQWxsRnJhbWVzKG1fcGFnZSk7CiB9CiAKIHZv
aWQgU2V0dGluZ3M6OnNldFNhbnNTZXJpZkZvbnRGYW1pbHkoY29uc3QgQXRvbWljU3RyaW5nJiBz
YW5zU2VyaWZGb250RmFtaWx5KQpAQCAtMTc4LDcgKzE4NSw3IEBAIHZvaWQgU2V0dGluZ3M6OnNl
dFNhbnNTZXJpZkZvbnRGYW1pbHkoY28KICAgICAgICAgcmV0dXJuOwogICAgICAgICAKICAgICBt
X3NhbnNTZXJpZkZvbnRGYW1pbHkgPSBzYW5zU2VyaWZGb250RmFtaWx5OyAKLSAgICBzZXROZWVk
c1JlYXBwbHlTdHlsZXNJbkFsbEZyYW1lcyhtX3BhZ2UpOworICAgIHNldE5lZWRzUmVjYWxjU3R5
bGVJbkFsbEZyYW1lcyhtX3BhZ2UpOwogfQogCiB2b2lkIFNldHRpbmdzOjpzZXRDdXJzaXZlRm9u
dEZhbWlseShjb25zdCBBdG9taWNTdHJpbmcmIGN1cnNpdmVGb250RmFtaWx5KQpAQCAtMTg3LDcg
KzE5NCw3IEBAIHZvaWQgU2V0dGluZ3M6OnNldEN1cnNpdmVGb250RmFtaWx5KGNvbnMKICAgICAg
ICAgcmV0dXJuOwogICAgICAgICAKICAgICBtX2N1cnNpdmVGb250RmFtaWx5ID0gY3Vyc2l2ZUZv
bnRGYW1pbHk7Ci0gICAgc2V0TmVlZHNSZWFwcGx5U3R5bGVzSW5BbGxGcmFtZXMobV9wYWdlKTsK
KyAgICBzZXROZWVkc1JlY2FsY1N0eWxlSW5BbGxGcmFtZXMobV9wYWdlKTsKIH0KIAogdm9pZCBT
ZXR0aW5nczo6c2V0RmFudGFzeUZvbnRGYW1pbHkoY29uc3QgQXRvbWljU3RyaW5nJiBmYW50YXN5
Rm9udEZhbWlseSkKQEAgLTE5Niw3ICsyMDMsNyBAQCB2b2lkIFNldHRpbmdzOjpzZXRGYW50YXN5
Rm9udEZhbWlseShjb25zCiAgICAgICAgIHJldHVybjsKICAgICAgICAgCiAgICAgbV9mYW50YXN5
Rm9udEZhbWlseSA9IGZhbnRhc3lGb250RmFtaWx5OwotICAgIHNldE5lZWRzUmVhcHBseVN0eWxl
c0luQWxsRnJhbWVzKG1fcGFnZSk7CisgICAgc2V0TmVlZHNSZWNhbGNTdHlsZUluQWxsRnJhbWVz
KG1fcGFnZSk7CiB9CiAKIHZvaWQgU2V0dGluZ3M6OnNldE1pbmltdW1Gb250U2l6ZShpbnQgbWlu
aW11bUZvbnRTaXplKQpAQCAtMjA1LDcgKzIxMiw3IEBAIHZvaWQgU2V0dGluZ3M6OnNldE1pbmlt
dW1Gb250U2l6ZShpbnQgbWkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9taW5pbXVtRm9udFNp
emUgPSBtaW5pbXVtRm9udFNpemU7Ci0gICAgc2V0TmVlZHNSZWFwcGx5U3R5bGVzSW5BbGxGcmFt
ZXMobV9wYWdlKTsKKyAgICBzZXROZWVkc1JlY2FsY1N0eWxlSW5BbGxGcmFtZXMobV9wYWdlKTsK
IH0KIAogdm9pZCBTZXR0aW5nczo6c2V0TWluaW11bUxvZ2ljYWxGb250U2l6ZShpbnQgbWluaW11
bUxvZ2ljYWxGb250U2l6ZSkKQEAgLTIxNCw3ICsyMjEsNyBAQCB2b2lkIFNldHRpbmdzOjpzZXRN
aW5pbXVtTG9naWNhbEZvbnRTaXplCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fbWluaW11bUxv
Z2ljYWxGb250U2l6ZSA9IG1pbmltdW1Mb2dpY2FsRm9udFNpemU7Ci0gICAgc2V0TmVlZHNSZWFw
cGx5U3R5bGVzSW5BbGxGcmFtZXMobV9wYWdlKTsKKyAgICBzZXROZWVkc1JlY2FsY1N0eWxlSW5B
bGxGcmFtZXMobV9wYWdlKTsKIH0KIAogdm9pZCBTZXR0aW5nczo6c2V0RGVmYXVsdEZvbnRTaXpl
KGludCBkZWZhdWx0Rm9udFNpemUpCkBAIC0yMjMsNyArMjMwLDcgQEAgdm9pZCBTZXR0aW5nczo6
c2V0RGVmYXVsdEZvbnRTaXplKGludCBkZQogICAgICAgICByZXR1cm47CiAKICAgICBtX2RlZmF1
bHRGb250U2l6ZSA9IGRlZmF1bHRGb250U2l6ZTsKLSAgICBzZXROZWVkc1JlYXBwbHlTdHlsZXNJ
bkFsbEZyYW1lcyhtX3BhZ2UpOworICAgIHNldE5lZWRzUmVjYWxjU3R5bGVJbkFsbEZyYW1lcyht
X3BhZ2UpOwogfQogCiB2b2lkIFNldHRpbmdzOjpzZXREZWZhdWx0Rml4ZWRGb250U2l6ZShpbnQg
ZGVmYXVsdEZvbnRTaXplKQpAQCAtMjMyLDEyICsyMzksMTMgQEAgdm9pZCBTZXR0aW5nczo6c2V0
RGVmYXVsdEZpeGVkRm9udFNpemUoaQogICAgICAgICByZXR1cm47CiAKICAgICBtX2RlZmF1bHRG
aXhlZEZvbnRTaXplID0gZGVmYXVsdEZvbnRTaXplOwotICAgIHNldE5lZWRzUmVhcHBseVN0eWxl
c0luQWxsRnJhbWVzKG1fcGFnZSk7CisgICAgc2V0TmVlZHNSZWNhbGNTdHlsZUluQWxsRnJhbWVz
KG1fcGFnZSk7CiB9CiAKIHZvaWQgU2V0dGluZ3M6OnNldExvYWRzSW1hZ2VzQXV0b21hdGljYWxs
eShib29sIGxvYWRzSW1hZ2VzQXV0b21hdGljYWxseSkKIHsKICAgICBtX2xvYWRzSW1hZ2VzQXV0
b21hdGljYWxseSA9IGxvYWRzSW1hZ2VzQXV0b21hdGljYWxseTsKKyAgICBzZXRMb2Fkc0ltYWdl
c0F1dG9tYXRpY2FsbHlJbkFsbEZyYW1lcyhtX3BhZ2UpOwogfQogCiB2b2lkIFNldHRpbmdzOjpz
ZXRKYXZhU2NyaXB0RW5hYmxlZChib29sIGlzSmF2YVNjcmlwdEVuYWJsZWQpCkBAIC0zNDIsNyAr
MzUwLDcgQEAgdm9pZCBTZXR0aW5nczo6c2V0VGV4dEFyZWFzQXJlUmVzaXphYmxlKAogICAgICAg
ICByZXR1cm47CiAKICAgICBtX3RleHRBcmVhc0FyZVJlc2l6YWJsZSA9IHRleHRBcmVhc0FyZVJl
c2l6YWJsZTsKLSAgICBzZXROZWVkc1JlYXBwbHlTdHlsZXNJbkFsbEZyYW1lcyhtX3BhZ2UpOwor
ICAgIHNldE5lZWRzUmVjYWxjU3R5bGVJbkFsbEZyYW1lcyhtX3BhZ2UpOwogfQogCiB2b2lkIFNl
dHRpbmdzOjpzZXRFZGl0YWJsZUxpbmtCZWhhdmlvcihFZGl0YWJsZUxpbmtCZWhhdmlvciBlZGl0
YWJsZUxpbmtCZWhhdmlvcikKQEAgLTQ0Miw3ICs0NTAsNyBAQCB2b2lkIFNldHRpbmdzOjpzZXRB
dXRob3JBbmRVc2VyU3R5bGVzRW5hCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fYXV0aG9yQW5k
VXNlclN0eWxlc0VuYWJsZWQgPSBhdXRob3JBbmRVc2VyU3R5bGVzRW5hYmxlZDsKLSAgICBzZXRO
ZWVkc1JlYXBwbHlTdHlsZXNJbkFsbEZyYW1lcyhtX3BhZ2UpOworICAgIHNldE5lZWRzUmVjYWxj
U3R5bGVJbkFsbEZyYW1lcyhtX3BhZ2UpOwogfQogCiB2b2lkIFNldHRpbmdzOjpzZXRGb250UmVu
ZGVyaW5nTW9kZShGb250UmVuZGVyaW5nTW9kZSBtb2RlKQpAQCAtNDUwLDcgKzQ1OCw3IEBAIHZv
aWQgU2V0dGluZ3M6OnNldEZvbnRSZW5kZXJpbmdNb2RlKEZvbnQKICAgICBpZiAoZm9udFJlbmRl
cmluZ01vZGUoKSA9PSBtb2RlKQogICAgICAgICByZXR1cm47CiAgICAgbV9mb250UmVuZGVyaW5n
TW9kZSA9IG1vZGU7Ci0gICAgc2V0TmVlZHNSZWFwcGx5U3R5bGVzSW5BbGxGcmFtZXMobV9wYWdl
KTsKKyAgICBzZXROZWVkc1JlY2FsY1N0eWxlSW5BbGxGcmFtZXMobV9wYWdlKTsKIH0KIAogRm9u
dFJlbmRlcmluZ01vZGUgU2V0dGluZ3M6OmZvbnRSZW5kZXJpbmdNb2RlKCkgY29uc3QKQEAgLTUw
NCw3ICs1MTIsNyBAQCB2b2lkIFNldHRpbmdzOjpzZXRab29tTW9kZShab29tTW9kZSBtb2RlCiAg
ICAgICAgIHJldHVybjsKICAgICAKICAgICBtX3pvb21Nb2RlID0gbW9kZTsKLSAgICBzZXROZWVk
c1JlYXBwbHlTdHlsZXNJbkFsbEZyYW1lcyhtX3BhZ2UpOworICAgIHNldE5lZWRzUmVjYWxjU3R5
bGVJbkFsbEZyYW1lcyhtX3BhZ2UpOwogfQogCiB2b2lkIFNldHRpbmdzOjpzZXRFbmZvcmNlQ1NT
TUlNRVR5cGVJbk5vUXVpcmtzTW9kZShib29sIGVuZm9yY2VDU1NNSU1FVHlwZUluTm9RdWlya3NN
b2RlKQpAQCAtNTU1LDcgKzU2Myw3IEBAIHZvaWQgU2V0dGluZ3M6OnNldEFjY2VsZXJhdGVkQ29t
cG9zaXRpbmcKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKICAgICBtX2FjY2VsZXJhdGVkQ29t
cG9zaXRpbmdFbmFibGVkID0gZW5hYmxlZDsKLSAgICBzZXROZWVkc1JlYXBwbHlTdHlsZXNJbkFs
bEZyYW1lcyhtX3BhZ2UpOworICAgIHNldE5lZWRzUmVjYWxjU3R5bGVJbkFsbEZyYW1lcyhtX3Bh
Z2UpOwogfQogCiB2b2lkIFNldHRpbmdzOjpzZXRTaG93RGVidWdCb3JkZXJzKGJvb2wgZW5hYmxl
ZCkKQEAgLTU2NCw3ICs1NzIsNyBAQCB2b2lkIFNldHRpbmdzOjpzZXRTaG93RGVidWdCb3JkZXJz
KGJvb2wgCiAgICAgICAgIHJldHVybjsKICAgICAgICAgCiAgICAgbV9zaG93RGVidWdCb3JkZXJz
ID0gZW5hYmxlZDsKLSAgICBzZXROZWVkc1JlYXBwbHlTdHlsZXNJbkFsbEZyYW1lcyhtX3BhZ2Up
OworICAgIHNldE5lZWRzUmVjYWxjU3R5bGVJbkFsbEZyYW1lcyhtX3BhZ2UpOwogfQogCiB2b2lk
IFNldHRpbmdzOjpzZXRTaG93UmVwYWludENvdW50ZXIoYm9vbCBlbmFibGVkKQpAQCAtNTczLDcg
KzU4MSw3IEBAIHZvaWQgU2V0dGluZ3M6OnNldFNob3dSZXBhaW50Q291bnRlcihib28KICAgICAg
ICAgcmV0dXJuOwogICAgICAgICAKICAgICBtX3Nob3dSZXBhaW50Q291bnRlciA9IGVuYWJsZWQ7
Ci0gICAgc2V0TmVlZHNSZWFwcGx5U3R5bGVzSW5BbGxGcmFtZXMobV9wYWdlKTsKKyAgICBzZXRO
ZWVkc1JlY2FsY1N0eWxlSW5BbGxGcmFtZXMobV9wYWdlKTsKIH0KIAogdm9pZCBTZXR0aW5nczo6
c2V0RXhwZXJpbWVudGFsTm90aWZpY2F0aW9uc0VuYWJsZWQoYm9vbCBlbmFibGVkKQpJbmRleDog
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcAkocmV2aXNpb24gNjY0ODgpCisrKyBXZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMzksNyArMTAzOSw3
IEBAIHZvaWQgUmVuZGVyVGhlbWU6OnBsYXRmb3JtQ29sb3JzRGlkQ2hhbmcKICAgICBtX2FjdGl2
ZUxpc3RCb3hTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IgPSBDb2xvcigpOwogICAgIG1faW5hY3Rp
dmVMaXN0Qm94U2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yID0gQ29sb3IoKTsKIAotICAgIFBhZ2U6
OnNldE5lZWRzUmVhcHBseVN0eWxlcygpOworICAgIFBhZ2U6OnNjaGVkdWxlRm9yY2VkU3R5bGVS
ZWNhbGNGb3JBbGxQYWdlcygpOwogfQogCiBDb2xvciBSZW5kZXJUaGVtZTo6c3lzdGVtQ29sb3Io
aW50IGNzc1ZhbHVlSWQpIGNvbnN0CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDY2NTczKQor
KysgV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEz
IEBACisyMDEwLTA4LTMxICBEYXZlIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NDg2MywgZGlzZW50YW5nbGUgc3R5bGUgcmVjYWxjIGZy
b20gbGF5b3V0LCBzbyB0aGF0CisgICAgICAgIHRoZSBmb3JtZXIgY2FuIG9jY3VyIGluIG1vcmUg
cGxhY2VzIHdpdGhvdXQgaGF2aW5nIHRvIGRvIHRoZSBsYXR0ZXIuCisKKyAgICAgICAgKiBzcmMv
V2ViRnJhbWVJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVJbXBsOjpsYXlvdXQp
OgorCiAyMDEwLTA4LTMxICBLaW51a28gWWFzdWRhICA8a2ludWtvQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBKaWFuIExpLgpJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJGcmFtZUltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJh
bWVJbXBsLmNwcAkocmV2aXNpb24gNjY0ODgpCisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZy
YW1lSW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4MTYsNyArMTgxNiw3IEBAIHZvaWQgV2Vi
RnJhbWVJbXBsOjpsYXlvdXQoKQogICAgIC8vIGxheW91dCB0aGlzIGZyYW1lCiAgICAgRnJhbWVW
aWV3KiB2aWV3ID0gbV9mcmFtZS0+dmlldygpOwogICAgIGlmICh2aWV3KQotICAgICAgICB2aWV3
LT5sYXlvdXRJZk5lZWRlZFJlY3Vyc2l2ZSgpOworICAgICAgICB2aWV3LT51cGRhdGVMYXlvdXRB
bmRTdHlsZUlmTmVlZGVkUmVjdXJzaXZlKCk7CiB9CiAKIHZvaWQgV2ViRnJhbWVJbXBsOjpwYWlu
dFdpdGhDb250ZXh0KEdyYXBoaWNzQ29udGV4dCYgZ2MsIGNvbnN0IFdlYlJlY3QmIHJlY3QpCklu
ZGV4OiBXZWJLaXQvZWZsL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZWZsL0NoYW5n
ZUxvZwkocmV2aXNpb24gNjY1NzMpCisrKyBXZWJLaXQvZWZsL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDEwLTA4LTMxICBEYXZlIEh5YXR0ICA8aHlhdHRAYXBw
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NDg2MywgZGlzZW50YW5n
bGUgc3R5bGUgcmVjYWxjIGZyb20gbGF5b3V0LCBzbyB0aGF0CisgICAgICAgIHRoZSBmb3JtZXIg
Y2FuIG9jY3VyIGluIG1vcmUgcGxhY2VzIHdpdGhvdXQgaGF2aW5nIHRvIGRvIHRoZSBsYXR0ZXIu
CisKKyAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgorICAgICAgICAoZXdrX3ZpZXdfbGF5b3V0
X2lmX25lZWRlZF9yZWN1cnNpdmUpOgorCiAyMDEwLTA4LTMxICBTYW0gV2VpbmlnICA8c2FtQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCkluZGV4OiBXZWJL
aXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2VmbC9ld2svZXdr
X3ZpZXcuY3BwCShyZXZpc2lvbiA2NjQ4OCkKKysrIFdlYktpdC9lZmwvZXdrL2V3a192aWV3LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjg1MCw3ICsyODUwLDcgQEAgdm9pZCBld2tfdmlld19sYXlv
dXRfaWZfbmVlZGVkX3JlY3Vyc2l2ZQogICAgICAgICBFUlIoIm5vIG1haW4gZnJhbWUgdmlldyIp
OwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIHYtPmxheW91dElmTmVlZGVkUmVjdXJzaXZl
KCk7CisgICAgdi0+dXBkYXRlTGF5b3V0QW5kU3R5bGVJZk5lZWRlZFJlY3Vyc2l2ZSgpOwogfQog
CiB2b2lkIGV3a192aWV3X3Njcm9sbHNfcHJvY2VzcyhFd2tfVmlld19TbWFydF9EYXRhKiBzZCkK
SW5kZXg6IFdlYktpdC9ndGsvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvQ2hh
bmdlTG9nCShyZXZpc2lvbiA2NjU3MykKKysrIFdlYktpdC9ndGsvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTAtMDgtMzEgIERhdmUgSHlhdHQgIDxoeWF0dEBh
cHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ0ODYzLCBkaXNlbnRh
bmdsZSBzdHlsZSByZWNhbGMgZnJvbSBsYXlvdXQsIHNvIHRoYXQKKyAgICAgICAgdGhlIGZvcm1l
ciBjYW4gb2NjdXIgaW4gbW9yZSBwbGFjZXMgd2l0aG91dCBoYXZpbmcgdG8gZG8gdGhlIGxhdHRl
ci4KKworICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKHdlYmtp
dF93ZWJfdmlld19leHBvc2VfZXZlbnQpOgorCiAyMDEwLTA4LTMxICBNYXJ0aW4gUm9iaW5zb24g
IDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBHdXN0YXZvIE5v
cm9uaGEgU2lsdmEuCkluZGV4OiBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAkocmV2aXNp
b24gNjY0ODgpCisrKyBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTE5LDcgKzUxOSw3IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRfd2ViX3Zp
ZXdfZXhwb3NlX2UKIAogICAgIEZyYW1lKiBmcmFtZSA9IGNvcmUod2ViVmlldyktPm1haW5GcmFt
ZSgpOwogICAgIGlmIChmcmFtZS0+Y29udGVudFJlbmRlcmVyKCkgJiYgZnJhbWUtPnZpZXcoKSkg
ewotICAgICAgICBmcmFtZS0+dmlldygpLT5sYXlvdXRJZk5lZWRlZFJlY3Vyc2l2ZSgpOworICAg
ICAgICBmcmFtZS0+dmlldygpLT51cGRhdGVMYXlvdXRBbmRTdHlsZUlmTmVlZGVkUmVjdXJzaXZl
KCk7CiAKICAgICAgICAgY2Fpcm9fdCogY3IgPSBnZGtfY2Fpcm9fY3JlYXRlKGV2ZW50LT53aW5k
b3cpOwogICAgICAgICBHcmFwaGljc0NvbnRleHQgY3R4KGNyKTsKSW5kZXg6IFdlYktpdC9tYWMv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiA2
NjU3MykKKysrIFdlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MzMgQEAKKzIwMTAtMDgtMzEgIERhdmUgSHlhdHQgIDxoeWF0dEBhcHBsZS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ0ODYzLCBkaXNlbnRhbmdsZSBzdHlsZSByZWNhbGMg
ZnJvbSBsYXlvdXQsIHNvIHRoYXQKKyAgICAgICAgdGhlIGZvcm1lciBjYW4gb2NjdXIgaW4gbW9y
ZSBwbGFjZXMgd2l0aG91dCBoYXZpbmcgdG8gZG8gdGhlIGxhdHRlci4KKworICAgICAgICBFbGlt
aW5hdGUgTWFjLXNwZWNpZmljIGNvZGUgZm9yIHN0eWxlIHJlLWFwcGxpY2F0aW9uIGFuZCByZWN1
cnNpdmUgbGF5b3V0L3N0eWxlIHVwZGF0aW5nIGluIAorICAgICAgICBmYXZvciBvZiB0aGUgY3Jv
c3MtcGxhdGZvcm0gY29kZSB0aGF0IGFsbCB0aGUgb3RoZXIgcG9ydHMgdXNlLgorCisgICAgICAg
ICogQ2FyYm9uL0hJV2ViVmlldy5tbToKKyAgICAgICAgKERyYXcpOgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgorICAgICAgICAoV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmZvcmNlTGF5b3V0KToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxWaWV3Lm1t
OgorICAgICAgICAoLVtXZWJIVE1MVmlldyBfcHJvcGFnYXRlRGlydHlSZWN0c1RvT3BhcXVlQW5j
ZXN0b3JzXSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IHZpZXdXaWxsRHJhd10pOgorICAgICAg
ICAoLVtXZWJIVE1MVmlldyBfcmVjdXJzaXZlRGlzcGxheVJlY3RJZk5lZWRlZElnbm9yaW5nT3Bh
Y2l0eTppc1Zpc2libGVSZWN0OnJlY3RJc1Zpc2libGVSZWN0Rm9yVmlldzp0b3BWaWV3Ol0pOgor
ICAgICAgICAoLVtXZWJIVE1MVmlldyBfcmVjdXJzaXZlRGlzcGxheUFsbERpcnR5V2l0aExvY2tG
b2N1czp2aXNSZWN0Ol0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBfcmVjdXJzaXZlOmRpc3Bs
YXlSZWN0SWdub3JpbmdPcGFjaXR5OmluQ29udGV4dDp0b3BWaWV3Ol0pOgorICAgICAgICAoLVtX
ZWJIVE1MVmlldyByZWFwcGx5U3R5bGVzXSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IGxheW91
dFRvTWluaW11bVBhZ2VXaWR0aDpoZWlnaHQ6bWF4aW11bVBhZ2VXaWR0aDphZGp1c3RpbmdWaWV3
U2l6ZTpdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgc2V0TmVlZHNUb0FwcGx5U3R5bGVzOl0p
OgorICAgICAgICAoLVtXZWJIVE1MVmlldyBfc2V0UHJpbnRpbmc6bWluaW11bVBhZ2VXaWR0aDpo
ZWlnaHQ6bWF4aW11bVBhZ2VXaWR0aDphZGp1c3RWaWV3U2l6ZTpwYWdpbmF0ZVNjcmVlbkNvbnRl
bnQ6XSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IF9sYXlvdXRJZk5lZWRlZF0pOgorICAgICAg
ICAoLVtXZWJIVE1MVmlldyBfd2ViX3VwZGF0ZUxheW91dEFuZFN0eWxlSWZOZWVkZWRSZWN1cnNp
dmVdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxWaWV3SW50ZXJuYWwuaDoKKyAgICAgICAg
KiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgtW1dlYlZpZXcgX3ZpZXdXaWxsRHJhd0lu
dGVybmFsXSk6CisKIDIwMTAtMDgtMzEgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KSW5kZXg6IFdlYktpdC9tYWMvQ2FyYm9u
L0hJV2ViVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL0NhcmJvbi9ISVdlYlZpZXcu
bW0JKHJldmlzaW9uIDY2NDg4KQorKysgV2ViS2l0L21hYy9DYXJib24vSElXZWJWaWV3Lm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0zNTYsNyArMzU2LDcgQEAgRHJhdyggSElXZWJWaWV3KiBpblZpZXcs
IFJnbkhhbmRsZSBsaW1pdAogCiAgICAgTlNWaWV3IDxXZWJEb2N1bWVudFZpZXc+ICpkb2N1bWVu
dFZpZXcgPSBbW1tpblZpZXctPmZXZWJWaWV3IG1haW5GcmFtZV0gZnJhbWVWaWV3XSBkb2N1bWVu
dFZpZXddOwogICAgIGlmIChbZG9jdW1lbnRWaWV3IGlzS2luZE9mQ2xhc3M6W1dlYkhUTUxWaWV3
IGNsYXNzXV0pCi0gICAgICAgIFsoV2ViSFRNTFZpZXcgKilkb2N1bWVudFZpZXcgX3dlYl9sYXlv
dXRJZk5lZWRlZFJlY3Vyc2l2ZV07CisgICAgICAgIFsoV2ViSFRNTFZpZXcgKilkb2N1bWVudFZp
ZXcgX3dlYl91cGRhdGVMYXlvdXRBbmRTdHlsZUlmTmVlZGVkUmVjdXJzaXZlXTsKIAogICAgIGlm
ICggaW5WaWV3LT5mSXNDb21wb3NpdGVkICkKICAgICAgICAgW2luVmlldy0+ZldlYlZpZXcgZGlz
cGxheUlmTmVlZGVkSW5SZWN0OiAqKE5TUmVjdCopJmhpUmVjdF07CkluZGV4OiBXZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0JKHJldmlzaW9u
IDY2NDg4KQorKysgV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5tbQkod29ya2luZyBjb3B5KQpAQCAtMjQxLDggKzI0MSw2IEBAIGJvb2wgV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6Omhhc0hUTUxWaWV3KCkKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZvcmNl
TGF5b3V0KCkKIHsKICAgICBOU1ZpZXcgPFdlYkRvY3VtZW50Vmlldz4gKnZpZXcgPSBbbV93ZWJG
cmFtZS0+X3ByaXZhdGUtPndlYkZyYW1lVmlldyBkb2N1bWVudFZpZXddOwotICAgIGlmIChbdmll
dyBpc0tpbmRPZkNsYXNzOltXZWJIVE1MVmlldyBjbGFzc11dKQotICAgICAgICBbKFdlYkhUTUxW
aWV3ICopdmlldyBzZXROZWVkc1RvQXBwbHlTdHlsZXM6WUVTXTsKICAgICBbdmlldyBzZXROZWVk
c0xheW91dDpZRVNdOwogICAgIFt2aWV3IGxheW91dF07CiB9CkluZGV4OiBXZWJLaXQvbWFjL1dl
YlZpZXcvV2ViSFRNTFZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJWaWV3L1dl
YkhUTUxWaWV3Lm1tCShyZXZpc2lvbiA2NjQ4OCkKKysrIFdlYktpdC9tYWMvV2ViVmlldy9XZWJI
VE1MVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtNDQzLDcgKzQ0Myw2IEBAIHN0cnVjdCBXZWJI
VE1MVmlld0ludGVycHJldEtleUV2ZW50c1BhcmEKIEBpbnRlcmZhY2UgV2ViSFRNTFZpZXdQcml2
YXRlIDogTlNPYmplY3QgewogQHB1YmxpYwogICAgIEJPT0wgY2xvc2VkOwotICAgIEJPT0wgbmVl
ZHNUb0FwcGx5U3R5bGVzOwogICAgIEJPT0wgaWdub3JpbmdNb3VzZURyYWdnZWRFdmVudHM7CiAg
ICAgQk9PTCBwcmludGluZzsKICAgICBCT09MIGF2b2lkaW5nUHJpbnRPcnBoYW47CkBAIC0xMjkw
LDcgKzEyODksNyBAQCAtICh2b2lkKWRpZEFkZFN1YnZpZXc6KE5TVmlldyAqKXN1YnZpZXcKIC0g
KHZvaWQpX3Byb3BhZ2F0ZURpcnR5UmVjdHNUb09wYXF1ZUFuY2VzdG9ycwogewogICAgIGlmICgh
W1tzZWxmIF93ZWJWaWV3XSBkcmF3c0JhY2tncm91bmRdKQotICAgICAgICBbc2VsZiBfd2ViX2xh
eW91dElmTmVlZGVkUmVjdXJzaXZlXTsKKyAgICAgICAgW3NlbGYgX3dlYl91cGRhdGVMYXlvdXRB
bmRTdHlsZUlmTmVlZGVkUmVjdXJzaXZlXTsKICAgICBbc3VwZXIgX3Byb3BhZ2F0ZURpcnR5UmVj
dHNUb09wYXF1ZUFuY2VzdG9yc107CiB9CiAKQEAgLTEzMDIsNyArMTMwMSw3IEBAIC0gKHZvaWQp
dmlld1dpbGxEcmF3CiAgICAgLy8gU28gY2hlY2sgaWYgdGhlIGRhdGFTb3VyY2UgaXMgbmlsIGJl
Zm9yZSBjYWxsaW5nIFtzZWxmIF9pc1RvcEhUTUxWaWV3XSwgdGhpcyBjYW4gYmUgcmVtb3ZlZAog
ICAgIC8vIG9uY2UgdGhlIEZJWE1FIGluIF9pc1RvcEhUTUxWaWV3IGlzIGZpeGVkLgogICAgIGlm
IChfcHJpdmF0ZS0+ZGF0YVNvdXJjZSAmJiBbc2VsZiBfaXNUb3BIVE1MVmlld10pCi0gICAgICAg
IFtzZWxmIF93ZWJfbGF5b3V0SWZOZWVkZWRSZWN1cnNpdmVdOworICAgICAgICBbc2VsZiBfd2Vi
X3VwZGF0ZUxheW91dEFuZFN0eWxlSWZOZWVkZWRSZWN1cnNpdmVdOwogICAgIFtzdXBlciB2aWV3
V2lsbERyYXddOwogfQogCkBAIC0xMzIwLDcgKzEzMTksNyBAQCAtICh2b2lkKV9yZWN1cnNpdmVE
aXNwbGF5UmVjdElmTmVlZGVkSWduCiAgICAgICAgICAgICBbc2VsZiBfd2ViX3NldFByaW50aW5n
TW9kZVJlY3Vyc2l2ZV07CiAjaWZuZGVmIEJVSUxESU5HX09OX1RJR0VSCiAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgIFtzZWxmIF93ZWJfbGF5b3V0SWZOZWVkZWRSZWN1cnNpdmVdOworICAgICAg
ICAgICAgW3NlbGYgX3dlYl91cGRhdGVMYXlvdXRBbmRTdHlsZUlmTmVlZGVkUmVjdXJzaXZlXTsK
ICNlbmRpZgogICAgIH0gZWxzZSBpZiAod2FzSW5QcmludGluZ01vZGUpCiAgICAgICAgIFtzZWxm
IF93ZWJfY2xlYXJQcmludGluZ01vZGVSZWN1cnNpdmVdOwpAQCAtMTMzNiwxMiArMTMzNSwxMiBA
QCAtICh2b2lkKV9yZWN1cnNpdmVEaXNwbGF5UmVjdElmTmVlZGVkSWduCiAgICAgICAgIFtzZWxm
IGdldFJlY3RzQmVpbmdEcmF3bjowIGNvdW50OiZyZWN0Q291bnRdOwogICAgICAgICBpZiAocmVj
dENvdW50KSB7CiAgICAgICAgICAgICBMT0dfRVJST1IoIlZpZXcgbmVlZHMgbGF5b3V0LiBFaXRo
ZXIgLXZpZXdXaWxsRHJhdyB3YXNuJ3QgY2FsbGVkIG9yIGxheW91dCB3YXMgaW52YWxpZGF0ZWQg
ZHVyaW5nIHRoZSBkaXNwbGF5IG9wZXJhdGlvbi4gUGVyZm9ybWluZyBsYXlvdXQgbm93LiIpOwot
ICAgICAgICAgICAgW3NlbGYgX3dlYl9sYXlvdXRJZk5lZWRlZFJlY3Vyc2l2ZV07CisgICAgICAg
ICAgICBbc2VsZiBfd2ViX3VwZGF0ZUxheW91dEFuZFN0eWxlSWZOZWVkZWRSZWN1cnNpdmVdOwog
ICAgICAgICB9CiAgICAgfQogI2Vsc2UKICAgICAvLyBCZWNhdXNlIFRpZ2VyIGRvZXMgbm90IGhh
dmUgdmlld1dpbGxEcmF3IHdlIG5lZWQgdG8gZG8gbGF5b3V0IGhlcmUuCi0gICAgW3NlbGYgX3dl
Yl9sYXlvdXRJZk5lZWRlZFJlY3Vyc2l2ZV07CisgICAgW3NlbGYgX3dlYl91cGRhdGVMYXlvdXRB
bmRTdHlsZUlmTmVlZGVkUmVjdXJzaXZlXTsKICAgICBbX3N1YnZpZXdzIG1ha2VPYmplY3RzUGVy
Zm9ybVNlbGVjdG9yOkBzZWxlY3RvcihfcHJvcGFnYXRlRGlydHlSZWN0c1RvT3BhcXVlQW5jZXN0
b3JzKV07CiAjZW5kaWYKIApAQCAtMTM3Myw3ICsxMzcyLDcgQEAgLSAodm9pZClfcmVjdXJzaXZl
RGlzcGxheUFsbERpcnR5V2l0aExvYwogICAgICAgICAgICAgICAgIFtzZWxmIF93ZWJfc2V0UHJp
bnRpbmdNb2RlUmVjdXJzaXZlXTsKICNpZm5kZWYgQlVJTERJTkdfT05fVElHRVIKICAgICAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgICAgICBbc2VsZiBfd2ViX2xheW91dElmTmVlZGVkUmVjdXJz
aXZlXTsKKyAgICAgICAgICAgICAgICBbc2VsZiBfd2ViX3VwZGF0ZUxheW91dEFuZFN0eWxlSWZO
ZWVkZWRSZWN1cnNpdmVdOwogI2VuZGlmCiAgICAgICAgIH0gZWxzZSBpZiAod2FzSW5QcmludGlu
Z01vZGUpCiAgICAgICAgICAgICBbc2VsZiBfd2ViX2NsZWFyUHJpbnRpbmdNb2RlUmVjdXJzaXZl
XTsKQEAgLTEzODMsNyArMTM4Miw3IEBAIC0gKHZvaWQpX3JlY3Vyc2l2ZURpc3BsYXlBbGxEaXJ0
eVdpdGhMb2MKICAgICAgICAgLy8gQmVjYXVzZSBUaWdlciBkb2VzIG5vdCBoYXZlIHZpZXdXaWxs
RHJhdyB3ZSBuZWVkIHRvIGRvIGxheW91dCBoZXJlLgogICAgICAgICBOU1JlY3QgYm91bmRzQmVm
b3JlTGF5b3V0ID0gW3NlbGYgYm91bmRzXTsKICAgICAgICAgaWYgKCFOU0lzRW1wdHlSZWN0KHZp
c1JlY3QpKQotICAgICAgICAgICAgW3NlbGYgX3dlYl9sYXlvdXRJZk5lZWRlZFJlY3Vyc2l2ZV07
CisgICAgICAgICAgICBbc2VsZiBfd2ViX3VwZGF0ZUxheW91dEFuZFN0eWxlSWZOZWVkZWRSZWN1
cnNpdmVdOwogCiAgICAgICAgIC8vIElmIGxheW91dCBjaGFuZ2VzIHRoZSB2aWV3J3MgYm91bmRz
LCB0aGVuIHdlIG5lZWQgdG8gcmVjb21wdXRlIHRoZSB2aXNSZWN0LgogICAgICAgICAvLyBUaGF0
J3MgYmVjYXVzZSB0aGUgdmlzUmVjdCBwYXNzZWQgdG8gdXMgd2FzIGJhc2VkIG9uIHRoZSBib3Vu
ZHMgYXQgdGhlIHRpbWUKQEAgLTE0MTYsNyArMTQxNSw3IEBAIC0gKHZvaWQpX3JlY3Vyc2l2ZToo
Qk9PTClyZWN1cnNlIGRpc3BsYXkKIHsKICNpZmRlZiBCVUlMRElOR19PTl9USUdFUiAKICAgICAv
LyBCZWNhdXNlIFRpZ2VyIGRvZXMgbm90IGhhdmUgdmlld1dpbGxEcmF3IHdlIG5lZWQgdG8gZG8g
bGF5b3V0IGhlcmUuCi0gICAgW3NlbGYgX3dlYl9sYXlvdXRJZk5lZWRlZFJlY3Vyc2l2ZV07Cisg
ICAgW3NlbGYgX3dlYl91cGRhdGVMYXlvdXRBbmRTdHlsZUlmTmVlZGVkUmVjdXJzaXZlXTsKICNl
bmRpZgogCiAgICAgW3NlbGYgX3NldEFzaWRlU3Vidmlld3NdOwpAQCAtMzExNywzNyArMzExNiwy
MyBAQCAtICh2b2lkKXdpbGxSZW1vdmVTdWJ2aWV3OihOU1ZpZXcgKilzdWJ2CiAKIC0gKHZvaWQp
cmVhcHBseVN0eWxlcwogewotICAgIGlmICghX3ByaXZhdGUtPm5lZWRzVG9BcHBseVN0eWxlcykK
LSAgICAgICAgcmV0dXJuOwotICAgIAogI2lmZGVmIExPR19USU1FUwogICAgIGRvdWJsZSBzdGFy
dCA9IENGQWJzb2x1dGVUaW1lR2V0Q3VycmVudCgpOwogI2VuZGlmCiAKLSAgICBpZiAoRnJhbWUq
IGNvcmVGcmFtZSA9IGNvcmUoW3NlbGYgX2ZyYW1lXSkpIHsKLSAgICAgICAgaWYgKEZyYW1lVmll
dyogY29yZVZpZXcgPSBjb3JlRnJhbWUtPnZpZXcoKSkKLSAgICAgICAgICAgIGNvcmVWaWV3LT5z
ZXRNZWRpYVR5cGUoX3ByaXZhdGUtPnByaW50aW5nID8gInByaW50IiA6ICJzY3JlZW4iKTsKLSAg
ICAgICAgaWYgKERvY3VtZW50KiBkb2N1bWVudCA9IGNvcmVGcmFtZS0+ZG9jdW1lbnQoKSkgewot
ICAgICAgICAgICAgZG9jdW1lbnQtPnNldFBhZ2luYXRlZEZvclNjcmVlbihfcHJpdmF0ZS0+cGFn
aW5hdGVTY3JlZW5Db250ZW50KTsKLSAgICAgICAgICAgIGRvY3VtZW50LT5zZXRQcmludGluZyhf
cHJpdmF0ZS0+cHJpbnRpbmcpOwotICAgICAgICB9Ci0gICAgICAgIGNvcmVGcmFtZS0+cmVhcHBs
eVN0eWxlcygpOwotICAgIH0KKyAgICBpZiAoRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoW3NlbGYg
X2ZyYW1lXSkpCisgICAgICAgIGNvcmVGcmFtZS0+ZG9jdW1lbnQoKS0+c3R5bGVTZWxlY3RvckNo
YW5nZWQoUmVjYWxjU3R5bGVJbW1lZGlhdGVseSk7CiAgICAgCiAjaWZkZWYgTE9HX1RJTUVTICAg
ICAgICAKICAgICBkb3VibGUgdGhpc1RpbWUgPSBDRkFic29sdXRlVGltZUdldEN1cnJlbnQoKSAt
IHN0YXJ0OwogICAgIExPRyhUaW1pbmcsICIlcyBhcHBseSBzdHlsZSBzZWNvbmRzID0gJWYiLCBb
c2VsZiBVUkxdLCB0aGlzVGltZSk7CiAjZW5kaWYKLQotICAgIF9wcml2YXRlLT5uZWVkc1RvQXBw
bHlTdHlsZXMgPSBOTzsKIH0KIAogLy8gRG8gYSBsYXlvdXQsIGJ1dCBzZXQgdXAgYSBuZXcgZml4
ZWQgd2lkdGggZm9yIHRoZSBwdXJwb3NlcyBvZiBkb2luZyBwcmludGluZyBsYXlvdXQuCiAvLyBt
aW5QYWdlV2lkdGg9PTAgaW1wbGllcyBhIG5vbi1wcmludGluZyBsYXlvdXQKIC0gKHZvaWQpbGF5
b3V0VG9NaW5pbXVtUGFnZVdpZHRoOihmbG9hdCltaW5QYWdlV2lkdGggaGVpZ2h0OihmbG9hdClt
aW5QYWdlSGVpZ2h0IG1heGltdW1QYWdlV2lkdGg6KGZsb2F0KW1heFBhZ2VXaWR0aCBhZGp1c3Rp
bmdWaWV3U2l6ZTooQk9PTClhZGp1c3RWaWV3U2l6ZQotewotICAgIFtzZWxmIHJlYXBwbHlTdHls
ZXNdOwotICAgIAoreyAgICAKICAgICBpZiAoIVtzZWxmIF9uZWVkc0xheW91dF0pCiAgICAgICAg
IHJldHVybjsKIApAQCAtMzMwOCw3ICszMjkzLDEzIEBAIC0gKHZvaWQpc2V0TmVlZHNMYXlvdXQ6
IChCT09MKWZsYWcKIC0gKHZvaWQpc2V0TmVlZHNUb0FwcGx5U3R5bGVzOiAoQk9PTClmbGFnCiB7
CiAgICAgTE9HKFZpZXcsICIlQCBzZXROZWVkc1RvQXBwbHlTdHlsZXM6JUAiLCBzZWxmLCBmbGFn
ID8gQCJZRVMiIDogQCJOTyIpOwotICAgIF9wcml2YXRlLT5uZWVkc1RvQXBwbHlTdHlsZXMgPSBm
bGFnOworICAgIGlmICghZmxhZykKKyAgICAgICAgcmV0dXJuOyAvLyBUaGVyZSdzIG5vIHdheSB0
byBzYXkgeW91IGRvbid0IG5lZWQgYSBzdHlsZSByZWNhbGMuCisgICAgaWYgKEZyYW1lKiBmcmFt
ZSA9IGNvcmUoW3NlbGYgX2ZyYW1lXSkpIHsKKyAgICAgICAgaWYgKGZyYW1lLT5kb2N1bWVudCgp
ICYmIGZyYW1lLT5kb2N1bWVudCgpLT5pblBhZ2VDYWNoZSgpKQorICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+c2NoZWR1bGVGb3JjZWRTdHlsZVJlY2FsYygp
OworICAgIH0KIH0KIAogLSAodm9pZClkcmF3U2luZ2xlUmVjdDooTlNSZWN0KXJlY3QKQEAgLTM4
ODMsNyArMzg3NCwxOCBAQCAtICh2b2lkKV9zZXRQcmludGluZzooQk9PTClwcmludGluZyBtaW5p
CiAgICAgX3ByaXZhdGUtPnBhZ2luYXRlU2NyZWVuQ29udGVudCA9IHBhZ2luYXRlU2NyZWVuQ29u
dGVudDsKICAgICBpZiAoIXByaW50aW5nICYmICFwYWdpbmF0ZVNjcmVlbkNvbnRlbnQpCiAgICAg
ICAgIF9wcml2YXRlLT5hdm9pZGluZ1ByaW50T3JwaGFuID0gTk87Ci0gICAgW3NlbGYgc2V0TmVl
ZHNUb0FwcGx5U3R5bGVzOllFU107CisgICAgCisgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUo
W3NlbGYgX2ZyYW1lXSk7CisgICAgaWYgKGNvcmVGcmFtZSkgeworICAgICAgICBpZiAoRnJhbWVW
aWV3KiBjb3JlVmlldyA9IGNvcmVGcmFtZS0+dmlldygpKQorICAgICAgICAgICAgY29yZVZpZXct
PnNldE1lZGlhVHlwZShfcHJpdmF0ZS0+cHJpbnRpbmcgPyAicHJpbnQiIDogInNjcmVlbiIpOwor
ICAgICAgICBpZiAoRG9jdW1lbnQqIGRvY3VtZW50ID0gY29yZUZyYW1lLT5kb2N1bWVudCgpKSB7
CisgICAgICAgICAgICBkb2N1bWVudC0+c2V0UGFnaW5hdGVkRm9yU2NyZWVuKF9wcml2YXRlLT5w
YWdpbmF0ZVNjcmVlbkNvbnRlbnQpOworICAgICAgICAgICAgZG9jdW1lbnQtPnNldFByaW50aW5n
KF9wcml2YXRlLT5wcmludGluZyk7CisgICAgICAgICAgICBkb2N1bWVudC0+c3R5bGVTZWxlY3Rv
ckNoYW5nZWQoUmVjYWxjU3R5bGVJbW1lZGlhdGVseSk7CisgICAgICAgIH0KKyAgICB9CisKICAg
ICBbc2VsZiBzZXROZWVkc0xheW91dDpZRVNdOwogICAgIFtzZWxmIGxheW91dFRvTWluaW11bVBh
Z2VXaWR0aDptaW5QYWdlV2lkdGggaGVpZ2h0Om1pblBhZ2VIZWlnaHQgbWF4aW11bVBhZ2VXaWR0
aDptYXhQYWdlV2lkdGggYWRqdXN0aW5nVmlld1NpemU6YWRqdXN0Vmlld1NpemVdOwogICAgIGlm
ICghcHJpbnRpbmcpIHsKQEAgLTU1MDcsMzEgKzU1MDksMTYgQEAgLSAodm9pZClfbGF5b3V0SWZO
ZWVkZWQKIHsKICAgICBBU1NFUlQoIV9wcml2YXRlLT5zdWJ2aWV3c1NldEFzaWRlKTsKIAotICAg
IGlmIChfcHJpdmF0ZS0+bmVlZHNUb0FwcGx5U3R5bGVzIHx8IFtzZWxmIF9uZWVkc0xheW91dF0p
CisgICAgaWYgKFtzZWxmIF9uZWVkc0xheW91dF0pCiAgICAgICAgIFtzZWxmIGxheW91dF07CiB9
CiAKLS0gKHZvaWQpX3dlYl9sYXlvdXRJZk5lZWRlZFJlY3Vyc2l2ZQorLSAodm9pZClfd2ViX3Vw
ZGF0ZUxheW91dEFuZFN0eWxlSWZOZWVkZWRSZWN1cnNpdmUKIHsKLSAgICBbc2VsZiBfbGF5b3V0
SWZOZWVkZWRdOwotCi0jaWZuZGVmIE5ERUJVRwotICAgIF9wcml2YXRlLT5lbnVtZXJhdGluZ1N1
YnZpZXdzID0gWUVTOwotI2VuZGlmCi0KLSAgICBOU011dGFibGVBcnJheSAqZGVzY2VuZGFudFdl
YkhUTUxWaWV3cyA9IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdOwotCi0gICAgW3NlbGYg
X3dlYl9hZGREZXNjZW5kYW50V2ViSFRNTFZpZXdzVG9BcnJheTpkZXNjZW5kYW50V2ViSFRNTFZp
ZXdzXTsKLQotICAgIHVuc2lnbmVkIGNvdW50ID0gW2Rlc2NlbmRhbnRXZWJIVE1MVmlld3MgY291
bnRdOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjb3VudDsgKytpKQotICAgICAgICBb
W2Rlc2NlbmRhbnRXZWJIVE1MVmlld3Mgb2JqZWN0QXRJbmRleDppXSBfbGF5b3V0SWZOZWVkZWRd
OwotCi0gICAgW2Rlc2NlbmRhbnRXZWJIVE1MVmlld3MgcmVsZWFzZV07Ci0KLSNpZm5kZWYgTkRF
QlVHCi0gICAgX3ByaXZhdGUtPmVudW1lcmF0aW5nU3Vidmlld3MgPSBOTzsKLSNlbmRpZgorICAg
IFdlYkZyYW1lICp3ZWJGcmFtZSA9IFtzZWxmIF9mcmFtZV07CisgICAgRnJhbWUqIGNvcmVGcmFt
ZSA9IGNvcmUod2ViRnJhbWUpOworICAgIGlmIChjb3JlRnJhbWUgJiYgY29yZUZyYW1lLT52aWV3
KCkpCisgICAgICAgIGNvcmVGcmFtZS0+dmlldygpLT51cGRhdGVMYXlvdXRBbmRTdHlsZUlmTmVl
ZGVkUmVjdXJzaXZlKCk7CiB9CiAKIC0gKHZvaWQpIF9kZXN0cm95QWxsV2ViUGx1Z2lucwpJbmRl
eDogV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3SW50ZXJuYWwuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXdJbnRlcm5hbC5oCShyZXZpc2lvbiA2NjQ4
OCkKKysrIFdlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlld0ludGVybmFsLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTU5LDcgKzU5LDcgQEAgQGludGVyZmFjZSBXZWJIVE1MVmlldyAoV2ViSW50ZXJu
YWwpCiAjZW5kaWYKIC0gKFdlYkNvcmU6OkNhY2hlZEltYWdlKilwcm9taXNlZERyYWdUSUZGRGF0
YVNvdXJjZTsKIC0gKHZvaWQpc2V0UHJvbWlzZWREcmFnVElGRkRhdGFTb3VyY2U6KFdlYkNvcmU6
OkNhY2hlZEltYWdlKilzb3VyY2U7Ci0tICh2b2lkKV93ZWJfbGF5b3V0SWZOZWVkZWRSZWN1cnNp
dmU7CistICh2b2lkKV93ZWJfdXBkYXRlTGF5b3V0QW5kU3R5bGVJZk5lZWRlZFJlY3Vyc2l2ZTsK
IC0gKHZvaWQpX2Rlc3Ryb3lBbGxXZWJQbHVnaW5zOwogLSAoQk9PTClfbmVlZHNMYXlvdXQ7CiAK
SW5kZXg6IFdlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCShyZXZpc2lvbiA2NjQ4OCkKKysrIFdlYktpdC9tYWMv
V2ViVmlldy9XZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC04NDIsNyArODQyLDcgQEAgLSAo
dm9pZClfdmlld1dpbGxEcmF3SW50ZXJuYWwKIHsKICAgICBGcmFtZSogZnJhbWUgPSBbc2VsZiBf
bWFpbkNvcmVGcmFtZV07CiAgICAgaWYgKGZyYW1lICYmIGZyYW1lLT52aWV3KCkpCi0gICAgICAg
IGZyYW1lLT52aWV3KCktPmxheW91dElmTmVlZGVkUmVjdXJzaXZlKCk7CisgICAgICAgIGZyYW1l
LT52aWV3KCktPnVwZGF0ZUxheW91dEFuZFN0eWxlSWZOZWVkZWRSZWN1cnNpdmUoKTsKIH0KIAog
I2VuZGlmCkluZGV4OiBXZWJLaXQvcXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9x
dC9DaGFuZ2VMb2cJKHJldmlzaW9uIDY2NTczKQorKysgV2ViS2l0L3F0L0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDEwLTA4LTMxICBEYXZlIEh5YXR0ICA8aHlh
dHRAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NDg2MywgZGlz
ZW50YW5nbGUgc3R5bGUgcmVjYWxjIGZyb20gbGF5b3V0LCBzbyB0aGF0CisgICAgICAgIHRoZSBm
b3JtZXIgY2FuIG9jY3VyIGluIG1vcmUgcGxhY2VzIHdpdGhvdXQgaGF2aW5nIHRvIGRvIHRoZSBs
YXR0ZXIuCisKKyAgICAgICAgKiBBcGkvcXdlYmVsZW1lbnQuY3BwOgorICAgICAgICAoUVdlYkVs
ZW1lbnQ6OnJlbmRlcik6CisgICAgICAgICogQXBpL3F3ZWJmcmFtZS5jcHA6CisgICAgICAgIChR
V2ViRnJhbWVQcml2YXRlOjpyZW5kZXJSZWxhdGl2ZUNvb3Jkcyk6CisKIDIwMTAtMDgtMzEgIEJl
bmphbWluIFBvdWxhaW4gIDxiZW5qYW1pbi5wb3VsYWluQG5va2lhLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KSW5kZXg6IFdlYktpdC9xdC9B
cGkvcXdlYmVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9xdC9BcGkvcXdlYmVsZW1l
bnQuY3BwCShyZXZpc2lvbiA2NjQ4OCkKKysrIFdlYktpdC9xdC9BcGkvcXdlYmVsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNDQ2LDcgKzE0NDYsNyBAQCB2b2lkIFFXZWJFbGVtZW50Ojpy
ZW5kZXIoUVBhaW50ZXIqIHBhaW50CiAKICAgICBGcmFtZVZpZXcqIHZpZXcgPSBmcmFtZS0+dmll
dygpOwogCi0gICAgdmlldy0+bGF5b3V0SWZOZWVkZWRSZWN1cnNpdmUoKTsKKyAgICB2aWV3LT51
cGRhdGVMYXlvdXRBbmRTdHlsZUlmTmVlZGVkUmVjdXJzaXZlKCk7CiAKICAgICBJbnRSZWN0IHJl
Y3QgPSBlLT5nZXRSZWN0KCk7CiAKSW5kZXg6IFdlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5jcHAJKHJldmlzaW9uIDY2NDg4
KQorKysgV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODYs
NyArMjg2LDcgQEAgdm9pZCBRV2ViRnJhbWVQcml2YXRlOjpyZW5kZXJSZWxhdGl2ZUNvbwogICAg
IFFQYWludGVyKiBwYWludGVyID0gY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCk7CiAKICAgICBX
ZWJDb3JlOjpGcmFtZVZpZXcqIHZpZXcgPSBmcmFtZS0+dmlldygpOwotICAgIHZpZXctPmxheW91
dElmTmVlZGVkUmVjdXJzaXZlKCk7CisgICAgdmlldy0+dXBkYXRlTGF5b3V0QW5kU3R5bGVJZk5l
ZWRlZFJlY3Vyc2l2ZSgpOwogCiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB2ZWN0b3Iuc2l6ZSgp
OyArK2kpIHsKICAgICAgICAgY29uc3QgUVJlY3QmIGNsaXBSZWN0ID0gdmVjdG9yLmF0KGkpOwpJ
bmRleDogV2ViS2l0L3dpbi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9DaGFu
Z2VMb2cJKHJldmlzaW9uIDY2NTczKQorKysgV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxMC0wOC0zMSAgRGF2ZSBIeWF0dCAgPGh5YXR0QGFw
cGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDQ4NjMsIGRpc2VudGFu
Z2xlIHN0eWxlIHJlY2FsYyBmcm9tIGxheW91dCwgc28gdGhhdAorICAgICAgICB0aGUgZm9ybWVy
IGNhbiBvY2N1ciBpbiBtb3JlIHBsYWNlcyB3aXRob3V0IGhhdmluZyB0byBkbyB0aGUgbGF0dGVy
LgorCisgICAgICAgICogV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViRnJhbWU6OnBhaW50RG9j
dW1lbnRSZWN0VG9Db250ZXh0KToKKyAgICAgICAgKiBXZWJWaWV3LmNwcDoKKyAgICAgICAgKFdl
YlZpZXc6OnVwZGF0ZUJhY2tpbmdTdG9yZSk6CisKIDIwMTAtMDgtMzAgIEFkYW0gUm9iZW4gIDxh
cm9iZW5AYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBjcmFzaCBvbiBsYXVuY2ggb24gV2luZG93
cyBkdWUgdG8gY2hhbmdpbmcgSVdlYkZyYW1lUHJpdmF0ZSdzCkluZGV4OiBXZWJLaXQvd2luL1dl
YkZyYW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYkZyYW1lLmNwcAkocmV2aXNp
b24gNjY0ODgpCisrKyBXZWJLaXQvd2luL1dlYkZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzQwLDcgKzM0MCw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRnJhbWU6OnBhaW4K
ICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAogICAgIC8vIFdlIGNhbid0IHBhaW50IHdpdGggYSBs
YXlvdXQgc3RpbGwgcGVuZGluZy4KLSAgICB2aWV3LT5sYXlvdXRJZk5lZWRlZFJlY3Vyc2l2ZSgp
OworICAgIHZpZXctPnVwZGF0ZUxheW91dEFuZFN0eWxlSWZOZWVkZWRSZWN1cnNpdmUoKTsKIAog
ICAgIEhEQyBkYyA9IHJlaW50ZXJwcmV0X2Nhc3Q8SERDPihzdGF0aWNfY2FzdDxVTE9ORzY0Pihk
ZXZpY2VDb250ZXh0KSk7CiAgICAgR3JhcGhpY3NDb250ZXh0IGdjKGRjKTsKSW5kZXg6IFdlYktp
dC93aW4vV2ViVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAko
cmV2aXNpb24gNjY0ODgpCisrKyBXZWJLaXQvd2luL1dlYlZpZXcuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC05MTAsNyArOTEwLDcgQEAgdm9pZCBXZWJWaWV3Ojp1cGRhdGVCYWNraW5nU3RvcmUoRnJh
bWVWaQogICAgICAgICAvLyBEbyBhIGxheW91dCBmaXJzdCBzbyB0aGF0IGV2ZXJ5dGhpbmcgd2Ug
cmVuZGVyIHRvIHRoZSBiYWNraW5nIHN0b3JlIGlzIGFsd2F5cyBjdXJyZW50LgogICAgICAgICBp
ZiAoRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUobV9tYWluRnJhbWUpKQogICAgICAgICAgICAgaWYg
KEZyYW1lVmlldyogdmlldyA9IGNvcmVGcmFtZS0+dmlldygpKQotICAgICAgICAgICAgICAgIHZp
ZXctPmxheW91dElmTmVlZGVkUmVjdXJzaXZlKCk7CisgICAgICAgICAgICAgICAgdmlldy0+dXBk
YXRlTGF5b3V0QW5kU3R5bGVJZk5lZWRlZFJlY3Vyc2l2ZSgpOwogCiAgICAgICAgIFZlY3RvcjxJ
bnRSZWN0PiBwYWludFJlY3RzOwogICAgICAgICBpZiAoIWJhY2tpbmdTdG9yZUNvbXBsZXRlbHlE
aXJ0eSAmJiBtX2JhY2tpbmdTdG9yZURpcnR5UmVnaW9uKSB7CkluZGV4OiBXZWJLaXQvd3gvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93eC9DaGFuZ2VMb2cJKHJldmlzaW9uIDY2NTcz
KQorKysgV2ViS2l0L3d4L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBA
CisyMDEwLTA4LTMxICBEYXZlIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD00NDg2MywgZGlzZW50YW5nbGUgc3R5bGUgcmVjYWxjIGZyb20g
bGF5b3V0LCBzbyB0aGF0CisgICAgICAgIHRoZSBmb3JtZXIgY2FuIG9jY3VyIGluIG1vcmUgcGxh
Y2VzIHdpdGhvdXQgaGF2aW5nIHRvIGRvIHRoZSBsYXR0ZXIuCisKKyAgICAgICAgKiBXZWJWaWV3
LmNwcDoKKyAgICAgICAgKHd4V2ViVmlldzo6T25QYWludCk6CisKIDIwMTAtMDgtMjggIEtldmlu
IE9sbGl2aWVyICA8a2V2aW5vQHRoZW9sbGl2aWVycy5jb20+CiAKICAgICAgICAgW3d4XSBCdWls
ZCBmaXggYWZ0ZXIgcGFyc2VNb2RlIC0+IGNvbXBhdGliaWxpdHlNb2RlIHJlbmFtZS4KSW5kZXg6
IFdlYktpdC93eC9XZWJWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd3gvV2ViVmlldy5j
cHAJKHJldmlzaW9uIDY2NDg4KQorKysgV2ViS2l0L3d4L1dlYlZpZXcuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC02ODQsNyArNjg0LDcgQEAgdm9pZCB3eFdlYlZpZXc6Ok9uUGFpbnQod3hQYWludEV2
ZW50JiBldgogICAgICAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0IGdjKCZkYyk7CiAj
ZW5kaWYKICAgICAgICAgICAgIGlmIChmcmFtZS0+Y29udGVudFJlbmRlcmVyKCkpIHsKLSAgICAg
ICAgICAgICAgICBmcmFtZS0+dmlldygpLT5sYXlvdXRJZk5lZWRlZFJlY3Vyc2l2ZSgpOworICAg
ICAgICAgICAgICAgIGZyYW1lLT52aWV3KCktPnVwZGF0ZUxheW91dEFuZFN0eWxlSWZOZWVkZWRS
ZWN1cnNpdmUoKTsKICAgICAgICAgICAgICAgICBmcmFtZS0+dmlldygpLT5wYWludCgmZ2MsIHBh
aW50UmVjdCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
</data>
<flag name="review"
          id="55098"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>