<?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>106634</bug_id>
          
          <creation_ts>2013-01-10 23:39:02 -0800</creation_ts>
          <short_desc>Distribution state becomes inconsistent with content/shadow reprojection</short_desc>
          <delta_ts>2013-01-20 23:01:09 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>97279</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Shinya Kawanaka">shinyak</reporter>
          <assigned_to name="Shinya Kawanaka">shinyak</assigned_to>
          <cc>ojan.autocc</cc>
    
    <cc>webcomponents-bugzilla</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>804998</commentid>
    <comment_count>0</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2013-01-10 23:39:02 -0800</bug_when>
    <thetext>Repro:

&lt;script&gt;if (window.testRunner) testRunner.waitUntilDone(); var nodes = Array();
var shadows = [document.createElement(&apos;div&apos;).webkitCreateShadowRoot()];
var text = Array();
function boom() {
try { nodes[2].setAttribute(&apos;class&apos;, &apos;c2&apos;); } catch(e) {}
try { nodes[3] = document.createElement(&apos;abbr&apos;); } catch(e) {}
try { document.documentElement.appendChild(nodes[3]); } catch (e) {}
try { nodes[8] = document.createElement(&apos;th&apos;); } catch(e) {}
try { shadows[3] = nodes[5].webkitCreateShadowRoot(); } catch (e) {}
try { shadows[4] = nodes[3].webkitCreateShadowRoot(); } catch (e) {}
try { nodes[19] = document.createElement(&apos;details&apos;); } catch(e) {}
try { nodes[19].setAttribute(&apos;class&apos;, &apos;c12&apos;); } catch(e) {}
try { shadows[7] = nodes[3].webkitCreateShadowRoot(); } catch (e) {}
try { shadows[19] = nodes[31].webkitCreateShadowRoot(); } catch (e) {}
try { nodes[98] = document.createElement(&apos;shadow&apos;); } catch(e) {}
try { nodes[19].appendChild(nodes[98]); } catch(e) {}
try { text[32] = document.createTextNode(&apos;-979400190&apos;); } catch(e) {}
try { nodes[98].appendChild(text[32]); } catch(e) {}
try { text[38] = document.createTextNode(&apos;1052734043&apos;); } catch(e) {}
try { shadows[7].appendChild(nodes[19]); } catch(e) {}
try { shadows[4].appendChild(text[38]); } catch(e) {}
setTimeout(&apos;try { nodes[8].appendChild(text[32]); } catch(e) {}&apos;, 95);
setTimeout(&apos;clear();&apos;, 700);
}
window.onload = boom;
&lt;/script&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804999</commentid>
    <comment_count>1</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2013-01-10 23:39:28 -0800</bug_when>
    <thetext>third_party/WebKit/Source/WebCore/dom/ComposedShadowTreeWalker.cpp(202) : static WebCore::Node *WebCore::ComposedShadowTreeWalker::traverseBackToYoungerShadowRoot(const WebCore::Node *, WebCore::ComposedShadowTreeWalker::TraversalDirection)
1   0x7fc5bf1e9d4a
2   0x7fc5bf1e96b1
3   0x7fc5bf1e82df
4   0x7fc5bf1e7eaf
5   0x7fc5bf9bfd08
6   0x7fc5bf9bd1ab
7   0x7fc5bf9b81cc
8   0x7fc5bf9ba70c
9   0x7fc5bf6875c8
10  0x7fc5bf6877ee
11  0x7fc5bf20ffd5
12  0x7fc5bf1ffe44
13  0x7fc5bf687918
14  0x7fc5c15897bf
15  0x7fc5bf6b36f4
16  0x7fc5bf68af71
17  0x7fc5bfb53f8c
18  0x7fc5bf6581e9
19  0x7fc5bf68bbac
20  0x7fc5bfb53f8c
21  0x7fc5bf6581e9
22  0x7fc5bf68bbac
23  0x7fc5bf68c314
24  0x7fc5bf2dadb1
25  0x7fc5bf2c70b9
26  0x7fc5bf2b61e9
27  0x7fc5bf4e905a
28  0x7fc5c185bac6
29  0x7fc5c185ad59
30  0x7fc5a812f282
31  0x7fc5a8138214
ASAN:SIGSEGV
=================================================================
==2619== ERROR: AddressSanitizer: SEGV on unknown address 0x0000bbadbeef (pc 0x7fc5bf1e9d8e sp 0x7fffe61a2b60 bp 0x7fffe61a2db0 T0)
AddressSanitizer can not provide additional info.
    #0 0x7fc5bf1e9d8d in WebCore::ComposedShadowTreeWalker::traverseBackToYoungerShadowRoot(WebCore::Node const*, WebCore::ComposedShadowTreeWalker::TraversalDirection) third_party/WebKit/Source/WebCore/dom/ComposedShadowTreeWalker.cpp:202
    #1 0x7fc5bf1e96b0 in WebCore::ComposedShadowTreeWalker::traverseSiblingInCurrentTree(WebCore::Node const*, WebCore::ComposedShadowTreeWalker::TraversalDirection) third_party/WebKit/Source/WebCore/dom/ComposedShadowTreeWalker.cpp:190
    #2 0x7fc5bf1e82de in WebCore::ComposedShadowTreeWalker::traverseSiblingOrBackToInsertionPoint(WebCore::Node const*, WebCore::ComposedShadowTreeWalker::TraversalDirection) third_party/WebKit/Source/WebCore/dom/ComposedShadowTreeWalker.cpp:174
    #3 0x7fc5bf1e7eae in WebCore::ComposedShadowTreeWalker::nextSibling() third_party/WebKit/Source/WebCore/dom/ComposedShadowTreeWalker.cpp:149
    #4 0x7fc5bf9bfd07 in WebCore::NodeRenderingTraversal::nextSiblingSlow(WebCore::Node const*) third_party/WebKit/Source/WebCore/dom/NodeRenderingTraversal.cpp:64
    #5 0x7fc5bf9bd1aa in WebCore::NodeRenderingTraversal::nextSibling(WebCore::Node const*) third_party/WebKit/Source/WebCore/dom/NodeRenderingTraversal.h:96
    #6 0x7fc5bf9b81cb in WebCore::NodeRenderingContext::nextRenderer() const third_party/WebKit/Source/WebCore/dom/NodeRenderingContext.cpp:89
    #7 0x7fc5bf9ba70b in WebCore::NodeRenderingContext::createRendererForElementIfNeeded() third_party/WebKit/Source/WebCore/dom/NodeRenderingContext.cpp:229
    #8 0x7fc5bf6875c7 in WebCore::Element::createRendererIfNeeded() third_party/WebKit/Source/WebCore/dom/Element.cpp:1161
    #9 0x7fc5bf6877ed in WebCore::Element::attach() third_party/WebKit/Source/WebCore/dom/Element.cpp:1170
    #10 0x7fc5bf20ffd4 in WebCore::ContainerNode::attachChildren() third_party/WebKit/Source/WebCore/dom/ContainerNode.h:206
    #11 0x7fc5bf1ffe43 in WebCore::ContainerNode::attach() third_party/WebKit/Source/WebCore/dom/ContainerNode.cpp:786
    #12 0x7fc5bf687917 in WebCore::Element::attach() third_party/WebKit/Source/WebCore/dom/Element.cpp:1184
    #13 0x7fc5c15897be in WebCore::InsertionPoint::attach() third_party/WebKit/Source/WebCore/html/shadow/InsertionPoint.cpp:63
    #14 0x7fc5bf6b36f3 in WebCore::Node::reattach() third_party/WebKit/Source/WebCore/dom/Node.h:883
    #15 0x7fc5bf68af70 in WebCore::Element::recalcStyle(WebCore::Node::StyleChange) third_party/WebKit/Source/WebCore/dom/Element.cpp:1295
    #16 0x7fc5bfb53f8b in WebCore::ShadowRoot::recalcStyle(WebCore::Node::StyleChange) third_party/WebKit/Source/WebCore/dom/ShadowRoot.cpp:217
    #17 0x7fc5bf6581e8 in WebCore::ElementShadow::recalcStyle(WebCore::Node::StyleChange) third_party/WebKit/Source/WebCore/dom/ElementShadow.cpp:165
    #18 0x7fc5bf68bbab in WebCore::Element::recalcStyle(WebCore::Node::StyleChange) third_party/WebKit/Source/WebCore/dom/Element.cpp:1336
    #19 0x7fc5bfb53f8b in WebCore::ShadowRoot::recalcStyle(WebCore::Node::StyleChange) third_party/WebKit/Source/WebCore/dom/ShadowRoot.cpp:217
    #20 0x7fc5bf6581e8 in WebCore::ElementShadow::recalcStyle(WebCore::Node::StyleChange) third_party/WebKit/Source/WebCore/dom/ElementShadow.cpp:165
    #21 0x7fc5bf68bbab in WebCore::Element::recalcStyle(WebCore::Node::StyleChange) third_party/WebKit/Source/WebCore/dom/Element.cpp:1336
    #22 0x7fc5bf68c313 in WebCore::Element::recalcStyle(WebCore::Node::StyleChange) third_party/WebKit/Source/WebCore/dom/Element.cpp:1360
    #23 0x7fc5bf2dadb0 in WebCore::Document::recalcStyle(WebCore::Node::StyleChange) third_party/WebKit/Source/WebCore/dom/Document.cpp:1824
    #24 0x7fc5bf2c70b8 in WebCore::Document::updateStyleIfNeeded() third_party/WebKit/Source/WebCore/dom/Document.cpp:1867
    #25 0x7fc5bf2b61e8 in WebCore::Document::styleRecalcTimerFired(WebCore::Timer&lt;WebCore::Document&gt;*) third_party/WebKit/Source/WebCore/dom/Document.cpp:1757
    #26 0x7fc5bf4e9059 in WebCore::Timer&lt;WebCore::Document&gt;::fired() third_party/WebKit/Source/WebCore/platform/Timer.h:106
    #27 0x7fc5c185bac5 in WebCore::ThreadTimers::sharedTimerFiredInternal() third_party/WebKit/Source/WebCore/platform/ThreadTimers.cpp:116
    #28 0x7fc5c185ad58 in WebCore::ThreadTimers::sharedTimerFired() third_party/WebKit/Source/WebCore/platform/ThreadTimers.cpp:93
    #29 0x7fc5a812f281 in webkit_glue::WebKitPlatformSupportImpl::DoTimeout() ./webkit/glue/webkitplatformsupport_impl.h:163
    #30 0x7fc5a8138213 in base::internal::RunnableAdapter&lt;void (webkit_glue::WebKitPlatformSupportImpl::*)()&gt;::Run(webkit_glue::WebKitPlatformSupportImpl*) ./base/bind_internal.h:134
    #31 0x7fc5a8137e07 in base::internal::InvokeHelper&lt;false, void, base::internal::RunnableAdapter&lt;void (webkit_glue::WebKitPlatformSupportImpl::*)()&gt;, void (webkit_glue::WebKitPlatformSupportImpl*)&gt;::MakeItSo(base::internal::RunnableAdapter&lt;void (webkit_glue::WebKitPlatformSupportImpl::*)()&gt;, webkit_glue::WebKitPlatformSupportImpl*) ./base/bind_internal.h:871
    #32 0x7fc5a8137af1 in base::internal::Invoker&lt;1, base::internal::BindState&lt;base::internal::RunnableAdapter&lt;void (webkit_glue::WebKitPlatformSupportImpl::*)()&gt;, void (webkit_glue::WebKitPlatformSupportImpl*), void (base::internal::UnretainedWrapper&lt;webkit_glue::WebKitPlatformSupportImpl&gt;)&gt;, void (webkit_glue::WebKitPlatformSupportImpl*)&gt;::Run(base::internal::BindStateBase*) ./base/bind_internal.h:1173
    #33 0x7fc5afc2c302 in base::Callback&lt;void ()&gt;::Run() const ./base/callback.h:396
    #34 0x7fc5b02d6027 in base::Timer::RunScheduledTask() base/timer.cc:181
    #35 0x7fc5b02d6a12 in base::BaseTimerTaskInternal::Run() base/timer.cc:46
    #36 0x7fc5b02d9873 in base::internal::RunnableAdapter&lt;void (base::BaseTimerTaskInternal::*)()&gt;::Run(base::BaseTimerTaskInternal*) ./base/bind_internal.h:134
    #37 0x7fc5b02d9467 in base::internal::InvokeHelper&lt;false, void, base::internal::RunnableAdapter&lt;void (base::BaseTimerTaskInternal::*)()&gt;, void (base::BaseTimerTaskInternal*)&gt;::MakeItSo(base::internal::RunnableAdapter&lt;void (base::BaseTimerTaskInternal::*)()&gt;, base::BaseTimerTaskInternal*) ./base/bind_internal.h:871
    #38 0x7fc5b02d912d in base::internal::Invoker&lt;1, base::internal::BindState&lt;base::internal::RunnableAdapter&lt;void (base::BaseTimerTaskInternal::*)()&gt;, void (base::BaseTimerTaskInternal*), void (base::internal::OwnedWrapper&lt;base::BaseTimerTaskInternal&gt;)&gt;, void (base::BaseTimerTaskInternal*)&gt;::Run(base::internal::BindStateBase*) ./base/bind_internal.h:1173
    #39 0x7fc5afc2c302 in base::Callback&lt;void ()&gt;::Run() const ./base/callback.h:396
    #40 0x7fc5afe5da51 in MessageLoop::RunTask(base::PendingTask const&amp;) base/message_loop.cc:473
    #41 0x7fc5afe5f788 in MessageLoop::DeferOrRunPendingTask(base::PendingTask const&amp;) base/message_loop.cc:485
    #42 0x7fc5afe5fe89 in MessageLoop::DoWork() base/message_loop.cc:668
    #43 0x7fc5afb2963b in base::MessagePumpGlib::HandleDispatch() base/message_pump_glib.cc:268
    #44 0x7fc5afb2b64e in (anonymous namespace)::WorkSourceDispatch(_GSource*, int (*)(void*), void*) base/message_pump_glib.cc:105
    #45 0x7fc5a14d5d52 in g_main_dispatch /build/buildd/glib2.0-2.32.3/./glib/gmain.c:2539
Stats: 15M malloced (92M for red zones) by 92632 calls
Stats: 1M realloced by 1516 calls
Stats: 13M freed by 75446 calls
Stats: 3M really freed by 20477 calls
Stats: 89M (22818 full pages) mmaped in 178 calls
  mmaps   by size class: 10:71029; 11:1275; 12:896; 13:192; 14:160; 15:80; 16:24; 17:4; 18:18; 19:1;
  mallocs by size class: 10:89745; 11:1433; 12:895; 13:187; 14:236; 15:96; 16:18; 17:4; 18:17; 19:1;
  frees   by size class: 10:73184; 11:1303; 12:451; 13:169; 14:221; 15:87; 16:10; 17:3; 18:17; 19:1;
  rfrees  by size class: 10:19994; 11:313; 12:25; 13:28; 14:95; 15:16; 16:1; 18:5;
Stats: malloc large: 136 small slow: 3178</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>807033</commentid>
    <comment_count>2</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2013-01-14 23:43:30 -0800</bug_when>
    <thetext>It turned out that distribution become inconsistent in the current implementation if reprojection is used.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>808012</commentid>
    <comment_count>3</comment_count>
      <attachid>182915</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2013-01-15 20:44:47 -0800</bug_when>
    <thetext>Created attachment 182915
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>808019</commentid>
    <comment_count>4</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2013-01-15 20:48:27 -0800</bug_when>
    <thetext>Currently distribution validity is not correct. This is because we introduced content-reprojection.
When we modify the children of host or ShadowRoot, we have to invalidate distribution for some of elements having ElementShadow in ShadowDOM.
Also, when we ensure distribution, we have to check parent TreeScope&apos;s distribution has been finished. If not, we have to do it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>808028</commentid>
    <comment_count>5</comment_count>
      <attachid>182916</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2013-01-15 21:19:30 -0800</bug_when>
    <thetext>Created attachment 182916
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>808373</commentid>
    <comment_count>6</comment_count>
      <attachid>182916</attachid>
    <who name="Dominic Cooney">dominicc</who>
    <bug_when>2013-01-16 07:48:24 -0800</bug_when>
    <thetext>Comment on attachment 182916
Patch

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

&gt; Source/WebCore/ChangeLog:3
&gt; +        Distribution becomes inconsistent state with content/shadow reprojection

Nit:

Distribution state becomes inconsistent with …

&gt; Source/WebCore/ChangeLog:8
&gt; +        When distribution nested ShadowDOM is resolved before resolving ShadowDOM, distribution could become inconsistent state.

It is not 100% clear what you mean here. Do you mean that nested Shadow DOM is done first, and because of this, distribution state can become inconsistent? Or do you mean that if nested Shadow DOM distribution happens to be done first, distribution state can become inconsistent?

&gt; Source/WebCore/ChangeLog:23
&gt; +        element of SR4 does not have InsertionPoint in direct children.

This seems to confuse describing the current buggy implementation (&quot;we’re invalidating SR1’s distribution only&quot;) with what should be happening (&quot;we don’t invalidate SR4’s distribution because …&quot;). That  part about SR4 is not a critical point related to this bug, right?

I think this comment could be friendlier if it explained why being a child of a host is special, ie because only the children of hosts are distributed.

Also: What about fallback content being reprojected? Is there an edge case there?

&gt; Source/WebCore/dom/ElementShadow.cpp:125
&gt; +    ASSERT(youngestShadowRoot());

This assertion should go in ensureDistributionFromAncestor, not here.

&gt; LayoutTests/fast/dom/shadow/distribution-crash.html:11
&gt; +    testRunner.waitUntilDone();

Consider using the helpers in resources/js-test-pre.js etc.

&gt; LayoutTests/fast/dom/shadow/distribution-crash.html:18
&gt; +shadowRoot2.innerHTML = &apos;&lt;details&gt;&lt;shadow id=&quot;shadow&quot;&gt;something 2&lt;/shadow&gt;&lt;/details&gt;&apos;;

Is using details necessary? Because unless you realize that details uses Shadow DOM, the point of the test is a bit mysterious.

&gt; LayoutTests/fast/dom/shadow/distribution-crash.html:22
&gt; +    shadow.removeChild(shadow.firstChild);

Maybe shadow.firstChild.remove() is more succinct?

&gt; LayoutTests/fast/dom/shadow/nested-reprojection-inconsistent.html:12
&gt; +shadowRoot1.innerHTML = &apos;&lt;div id=&quot;div1&quot;&gt;&lt;/div&gt;&apos;;

You could simplify this by not using an ID and just retrieving it with shadowRoot1.firstChild. Similarly with other elements below.

&gt; LayoutTests/fast/dom/shadow/nested-reprojection-inconsistent.html:32
&gt; +&lt;/script&gt;

successfullyParsed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>809075</commentid>
    <comment_count>7</comment_count>
      <attachid>182916</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2013-01-16 22:13:10 -0800</bug_when>
    <thetext>Comment on attachment 182916
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:3
&gt;&gt; +        Distribution becomes inconsistent state with content/shadow reprojection
&gt; 
&gt; Nit:
&gt; 
&gt; Distribution state becomes inconsistent with …

Done

&gt;&gt; Source/WebCore/ChangeLog:8
&gt;&gt; +        When distribution nested ShadowDOM is resolved before resolving ShadowDOM, distribution could become inconsistent state.
&gt; 
&gt; It is not 100% clear what you mean here. Do you mean that nested Shadow DOM is done first, and because of this, distribution state can become inconsistent? Or do you mean that if nested Shadow DOM distribution happens to be done first, distribution state can become inconsistent?

The latter. Update the ChangeLog.

&gt;&gt; Source/WebCore/ChangeLog:23
&gt;&gt; +        element of SR4 does not have InsertionPoint in direct children.
&gt; 
&gt; This seems to confuse describing the current buggy implementation (&quot;we’re invalidating SR1’s distribution only&quot;) with what should be happening (&quot;we don’t invalidate SR4’s distribution because …&quot;). That  part about SR4 is not a critical point related to this bug, right?
&gt; 
&gt; I think this comment could be friendlier if it explained why being a child of a host is special, ie because only the children of hosts are distributed.
&gt; 
&gt; Also: What about fallback content being reprojected? Is there an edge case there?

&gt; What about fallback content being reprojected? Is there an edge case there?
When distributing a fallback element, we have to check grand parent node has ElementShadow.
However, in reprojecting, basically we should be able to handle it as the normal distributed elements.

&gt;&gt; Source/WebCore/dom/ElementShadow.cpp:125
&gt;&gt; +    ASSERT(youngestShadowRoot());
&gt; 
&gt; This assertion should go in ensureDistributionFromAncestor, not here.

I don&apos;t think this ASSERT is necessary if it&apos;s in ensureDistributionFromAncestor(). Removed.

&gt;&gt; LayoutTests/fast/dom/shadow/distribution-crash.html:11
&gt;&gt; +    testRunner.waitUntilDone();
&gt; 
&gt; Consider using the helpers in resources/js-test-pre.js etc.

Done

&gt;&gt; LayoutTests/fast/dom/shadow/distribution-crash.html:18
&gt;&gt; +shadowRoot2.innerHTML = &apos;&lt;details&gt;&lt;shadow id=&quot;shadow&quot;&gt;something 2&lt;/shadow&gt;&lt;/details&gt;&apos;;
&gt; 
&gt; Is using details necessary? Because unless you realize that details uses Shadow DOM, the point of the test is a bit mysterious.

It just came from the fuzzer. I&apos;ve replaced it with complicated div.

&gt;&gt; LayoutTests/fast/dom/shadow/distribution-crash.html:22
&gt;&gt; +    shadow.removeChild(shadow.firstChild);
&gt; 
&gt; Maybe shadow.firstChild.remove() is more succinct?

OK.

&gt;&gt; LayoutTests/fast/dom/shadow/nested-reprojection-inconsistent.html:12
&gt;&gt; +shadowRoot1.innerHTML = &apos;&lt;div id=&quot;div1&quot;&gt;&lt;/div&gt;&apos;;
&gt; 
&gt; You could simplify this by not using an ID and just retrieving it with shadowRoot1.firstChild. Similarly with other elements below.

I think it is easy to understand if the variable name is corresponding to id, though...

&gt;&gt; LayoutTests/fast/dom/shadow/nested-reprojection-inconsistent.html:32
&gt;&gt; +&lt;/script&gt;
&gt; 
&gt; successfullyParsed?

finishJSTest() will automatically make successfullyParsed true if no error was found, I think.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>809079</commentid>
    <comment_count>8</comment_count>
      <attachid>183121</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2013-01-16 22:15:50 -0800</bug_when>
    <thetext>Created attachment 183121
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811733</commentid>
    <comment_count>9</comment_count>
      <attachid>183121</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2013-01-20 18:45:53 -0800</bug_when>
    <thetext>Comment on attachment 183121
Patch

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

&gt; Source/WebCore/html/shadow/ContentDistributor.cpp:349
&gt; +void ContentDistributor::ensureDistributionFromAncestor(Node* source)

It looks we can now simply call this ensureDistribution() since the &quot;ensure&quot; should be always drom the ancestor.

&gt; Source/WebCore/html/shadow/ContentDistributor.cpp:365
&gt; +        elementShadows[i - 1]-&gt;ensureDistribution();

It looks we no longer need ElementShadow::ensureDistribution(). No other place uses it. Is that right?

&gt; Source/WebCore/html/shadow/ContentDistributor.cpp:388
&gt; +                }

Could you clarify or elaborate what is happening here?

&gt; Source/WebCore/html/shadow/ContentDistributor.cpp:390
&gt; +        }

I guess this new code should be orthogonal to node&apos;s attached() state.

&gt; Source/WebCore/html/shadow/ContentDistributor.h:137
&gt; +    static void ensureDistributionFromAncestor(Node* source);

Nit: could be container node. Or, we have an overload for shadow root.

&gt; Source/WebCore/html/shadow/ContentDistributor.h:149
&gt; +    bool distributionIsValid() const { return m_validity == Valid; }

Nit: It&apos;s fine to just call this isValid(). This is &quot;distributor&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811789</commentid>
    <comment_count>10</comment_count>
      <attachid>183710</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2013-01-20 22:00:08 -0800</bug_when>
    <thetext>Created attachment 183710
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811790</commentid>
    <comment_count>11</comment_count>
      <attachid>183121</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2013-01-20 22:00:48 -0800</bug_when>
    <thetext>Comment on attachment 183121
Patch

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

&gt;&gt; Source/WebCore/html/shadow/ContentDistributor.cpp:349
&gt;&gt; +void ContentDistributor::ensureDistributionFromAncestor(Node* source)
&gt; 
&gt; It looks we can now simply call this ensureDistribution() since the &quot;ensure&quot; should be always drom the ancestor.

Done.

&gt;&gt; Source/WebCore/html/shadow/ContentDistributor.cpp:365
&gt;&gt; +        elementShadows[i - 1]-&gt;ensureDistribution();
&gt; 
&gt; It looks we no longer need ElementShadow::ensureDistribution(). No other place uses it. Is that right?

Right. Done.

&gt;&gt; Source/WebCore/html/shadow/ContentDistributor.cpp:388
&gt;&gt; +                }
&gt; 
&gt; Could you clarify or elaborate what is happening here?

yes.

&gt;&gt; Source/WebCore/html/shadow/ContentDistributor.cpp:390
&gt;&gt; +        }
&gt; 
&gt; I guess this new code should be orthogonal to node&apos;s attached() state.

Right. And I think this should be moved in invalidate(). not here.

&gt;&gt; Source/WebCore/html/shadow/ContentDistributor.h:137
&gt;&gt; +    static void ensureDistributionFromAncestor(Node* source);
&gt; 
&gt; Nit: could be container node. Or, we have an overload for shadow root.

Hmm.. I think we only need a method taking a ShadowRoot.

&gt;&gt; Source/WebCore/html/shadow/ContentDistributor.h:149
&gt;&gt; +    bool distributionIsValid() const { return m_validity == Valid; }
&gt; 
&gt; Nit: It&apos;s fine to just call this isValid(). This is &quot;distributor&quot;.

Done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811832</commentid>
    <comment_count>12</comment_count>
      <attachid>183710</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-20 23:01:04 -0800</bug_when>
    <thetext>Comment on attachment 183710
Patch

Clearing flags on attachment: 183710

Committed r140299: &lt;http://trac.webkit.org/changeset/140299&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811833</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-20 23:01:09 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182915</attachid>
            <date>2013-01-15 20:44:47 -0800</date>
            <delta_ts>2013-01-15 21:19:28 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-106634-20130116134149.patch</filename>
            <type>text/plain</type>
            <size>13922</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5ODEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjRjZDNhZGJjNGIyZTI1
ZWI4NzEwMWQ0NjQ4MGM2OGRlYjRkZGY2Ny4uZGNmZjYxMTZhZjBlMTJjMzgxZWJmMTY5NzVlZDhi
M2MyZDkxNzJmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEzLTAxLTE1ICBTaGlu
eWEgS2F3YW5ha2EgIDxzaGlueWFrQGNocm9taXVtLm9yZz4KKworICAgICAgICBBU1NFUlQgdHJp
Z2dlcmVkIGluIFdlYkNvcmU6OkNvbXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6dHJhdmVyc2VCYWNr
VG9Zb3VuZ2VyU2hhZG93Um9vdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTA2NjM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVGVzdHM6IGZhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRpb24tY3Jhc2guaHRt
bAorICAgICAgICAgICAgICAgZmFzdC9kb20vc2hhZG93L25lc3RlZC1yZXByb2plY3Rpb24taW5j
b25zaXN0ZW50Lmh0bWwKKworICAgICAgICAqIGRvbS9FbGVtZW50U2hhZG93LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkVsZW1lbnRTaGFkb3c6OmF0dGFjaCk6CisgICAgICAgICogZG9tL0VsZW1l
bnRTaGFkb3cuaDoKKyAgICAgICAgKEVsZW1lbnRTaGFkb3cpOgorICAgICAgICAqIGh0bWwvc2hh
ZG93L0NvbnRlbnREaXN0cmlidXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RGlz
dHJpYnV0b3I6OmRpc3RyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudERpc3RyaWJ1
dG9yOjplbnN1cmVEaXN0cmlidXRpb25Gcm9tQW5jZXN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGVudERpc3RyaWJ1dG9yOjppbnZhbGlkYXRlRGlzdHJpYnV0aW9uKToKKyAgICAgICAgKiBo
dG1sL3NoYWRvdy9Db250ZW50RGlzdHJpYnV0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRl
bnREaXN0cmlidXRvcjo6ZGlzdHJpYnV0aW9uSXNWYWxpZCk6CisgICAgICAgICogaHRtbC9zaGFk
b3cvSFRNTFNoYWRvd0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNoYWRvd0Vs
ZW1lbnQ6Om9sZGVyU2hhZG93Um9vdCk6CisgICAgICAgICogaHRtbC9zaGFkb3cvSW5zZXJ0aW9u
UG9pbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zZXJ0aW9uUG9pbnQ6OmF0dGFjaCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNlcnRpb25Qb2ludDo6ZGV0YWNoKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc2VydGlvblBvaW50OjpnZXREaXN0cmlidXRlZE5vZGVzKToKKyAgICAgICAgKFdlYkNv
cmU6OnJlc29sdmVSZXByb2plY3Rpb24pOgorCiAyMDEzLTAxLTE1ICBBbnR0aSBLb2l2aXN0byAg
PGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBBU1NFUlQoIW1fcXVldWUua2lsbGVkKCkgJiYg
bV90aHJlYWRJRCkgaGl0IGluIFN0b3JhZ2VUaHJlYWQ6OnNjaGVkdWxlVGFzayBvbiBsb3cgbWVt
b3J5IHdhcm5pbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50U2hhZG93
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50U2hhZG93LmNwcAppbmRleCA3MjAxZDMy
NzUyMjA3YTU1YjdhNzgwNWExOWY4NGI4NGVlNGRhZjZiLi5kYjRkMmFkNzg1NDkyNGEwN2Y4ZWM1
NGEwMDg2MTk2ZDg3YTc2ZTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dFNoYWRvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRTaGFkb3cuY3BwCkBA
IC0xMjIsNyArMTIyLDkgQEAgdm9pZCBFbGVtZW50U2hhZG93OjpyZW1vdmVBbGxTaGFkb3dSb290
cygpCiAKIHZvaWQgRWxlbWVudFNoYWRvdzo6YXR0YWNoKCkKIHsKLSAgICBlbnN1cmVEaXN0cmli
dXRpb24oKTsKKyAgICBBU1NFUlQoeW91bmdlc3RTaGFkb3dSb290KCkpOworICAgIENvbnRlbnRE
aXN0cmlidXRvcjo6ZW5zdXJlRGlzdHJpYnV0aW9uRnJvbUFuY2VzdG9yKHlvdW5nZXN0U2hhZG93
Um9vdCgpKTsKKwogICAgIGZvciAoU2hhZG93Um9vdCogcm9vdCA9IHlvdW5nZXN0U2hhZG93Um9v
dCgpOyByb290OyByb290ID0gcm9vdC0+b2xkZXJTaGFkb3dSb290KCkpIHsKICAgICAgICAgaWYg
KCFyb290LT5hdHRhY2hlZCgpKQogICAgICAgICAgICAgcm9vdC0+YXR0YWNoKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFNoYWRvdy5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnRTaGFkb3cuaAppbmRleCA5MWY2NzkxNjg4NmQ0YTkzNGIxM2FlNzc0OTZiNzAx
YjZkMmVhNjI2Li5mYzNlYjNjZjQxNTMxODg3ZjQxZDJhNGIyYjU2ZGVhYmEwZjk2N2Q2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFNoYWRvdy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50U2hhZG93LmgKQEAgLTY1LDYgKzY1LDcgQEAgcHVibGljOgogCiAg
ICAgdm9pZCBpbnZhbGlkYXRlRGlzdHJpYnV0aW9uKCkgeyBtX2Rpc3RyaWJ1dG9yLmludmFsaWRh
dGVEaXN0cmlidXRpb24oaG9zdCgpKTsgfQogICAgIHZvaWQgZW5zdXJlRGlzdHJpYnV0aW9uKCkg
eyBtX2Rpc3RyaWJ1dG9yLmVuc3VyZURpc3RyaWJ1dGlvbihob3N0KCkpOyB9CisKICAgICB2b2lk
IGRpZEFmZmVjdFNlbGVjdG9yKEFmZmVjdGVkU2VsZWN0b3JNYXNrIG1hc2spIHsgbV9kaXN0cmli
dXRvci5kaWRBZmZlY3RTZWxlY3Rvcihob3N0KCksIG1hc2spOyB9CiAgICAgdm9pZCB3aWxsQWZm
ZWN0U2VsZWN0b3IoKSB7IG1fZGlzdHJpYnV0b3Iud2lsbEFmZmVjdFNlbGVjdG9yKGhvc3QoKSk7
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3Ry
aWJ1dG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnREaXN0cmlidXRv
ci5jcHAKaW5kZXggODY3YTE3NDU3YjUyOWVmMDg5ZDgwYjBmZDg4M2UxNGE2MmM3ZWUzOC4uYTM1
ZWNhNjEzMzQ1ODQ1MGVlYjZmZTJmMGQwODIxY2Q1NTlhZTZhOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50RGlzdHJpYnV0b3IuY3BwCkBAIC0yMTMsNiArMjEz
LDcgQEAgdm9pZCBDb250ZW50RGlzdHJpYnV0b3I6OmRpc3RyaWJ1dGUoRWxlbWVudCogaG9zdCkK
IHsKICAgICBBU1NFUlQobmVlZHNEaXN0cmlidXRpb24oKSk7CiAgICAgQVNTRVJUKG1fbm9kZVRv
SW5zZXJ0aW9uUG9pbnQuaXNFbXB0eSgpKTsKKyAgICBBU1NFUlQoIWhvc3QtPmNvbnRhaW5pbmdT
aGFkb3dSb290KCkgfHwgaG9zdC0+Y29udGFpbmluZ1NoYWRvd1Jvb3QoKS0+b3duZXIoKS0+ZGlz
dHJpYnV0b3IoKS5kaXN0cmlidXRpb25Jc1ZhbGlkKCkpOwogCiAgICAgbV92YWxpZGl0eSA9IFZh
bGlkOwogCkBAIC0zNDUsMTggKzM0NiwyMyBAQCB2b2lkIENvbnRlbnREaXN0cmlidXRvcjo6ZW5z
dXJlRGlzdHJpYnV0aW9uKEVsZW1lbnQqIGhvc3QpCiAgICAgZGlzdHJpYnV0ZShob3N0KTsKIH0K
IAotdm9pZCBDb250ZW50RGlzdHJpYnV0b3I6OmVuc3VyZURpc3RyaWJ1dGlvbkZyb21Eb2N1bWVu
dChFbGVtZW50KiBzb3VyY2UpCit2b2lkIENvbnRlbnREaXN0cmlidXRvcjo6ZW5zdXJlRGlzdHJp
YnV0aW9uRnJvbUFuY2VzdG9yKE5vZGUqIHNvdXJjZSkKIHsKICAgICBDb250YWluZXJOb2RlKiBt
YXlTaGFkb3cgPSBzb3VyY2UtPnRyZWVTY29wZSgpLT5yb290Tm9kZSgpOwogICAgIGlmICghbWF5
U2hhZG93LT5pc1NoYWRvd1Jvb3QoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgVmVjdG9yPEVs
ZW1lbnQqLCA4PiBob3N0czsKLSAgICBmb3IgKEVsZW1lbnQqIGN1cnJlbnQgPSB0b1NoYWRvd1Jv
b3QobWF5U2hhZG93KS0+aG9zdCgpOyBjdXJyZW50OyBjdXJyZW50ID0gY3VycmVudC0+c2hhZG93
SG9zdCgpKQotICAgICAgICBob3N0cy5hcHBlbmQoY3VycmVudCk7CisgICAgVmVjdG9yPEVsZW1l
bnRTaGFkb3cqLCA4PiBlbGVtZW50U2hhZG93czsKKyAgICBmb3IgKEVsZW1lbnQqIGN1cnJlbnQg
PSB0b1NoYWRvd1Jvb3QobWF5U2hhZG93KS0+aG9zdCgpOyBjdXJyZW50OyBjdXJyZW50ID0gY3Vy
cmVudC0+c2hhZG93SG9zdCgpKSB7CisgICAgICAgIEVsZW1lbnRTaGFkb3cqIGVsZW1lbnRTaGFk
b3cgPSBjdXJyZW50LT5zaGFkb3coKTsKKyAgICAgICAgaWYgKCFlbGVtZW50U2hhZG93LT5kaXN0
cmlidXRvcigpLm5lZWRzRGlzdHJpYnV0aW9uKCkpCisgICAgICAgICAgICBicmVhazsKKworICAg
ICAgICBlbGVtZW50U2hhZG93cy5hcHBlbmQoZWxlbWVudFNoYWRvdyk7CisgICAgfQogCi0gICAg
Zm9yIChzaXplX3QgaSA9IGhvc3RzLnNpemUoKTsgaSA+IDA7IC0taSkKLSAgICAgICAgaG9zdHNb
aSAtIDFdLT5zaGFkb3coKS0+ZW5zdXJlRGlzdHJpYnV0aW9uKCk7CisgICAgZm9yIChzaXplX3Qg
aSA9IGVsZW1lbnRTaGFkb3dzLnNpemUoKTsgaSA+IDA7IC0taSkKKyAgICAgICAgZWxlbWVudFNo
YWRvd3NbaSAtIDFdLT5lbnN1cmVEaXN0cmlidXRpb24oKTsKIH0KIAogCkBAIC0zNjksNiArMzc1
LDE5IEBAIHZvaWQgQ29udGVudERpc3RyaWJ1dG9yOjppbnZhbGlkYXRlRGlzdHJpYnV0aW9uKEVs
ZW1lbnQqIGhvc3QpCiAgICAgICAgIGZvciAoTm9kZSogbiA9IGhvc3QtPmZpcnN0Q2hpbGQoKTsg
bjsgbiA9IG4tPm5leHRTaWJsaW5nKCkpCiAgICAgICAgICAgICBuLT5sYXp5UmVhdHRhY2goKTsK
ICAgICAgICAgaG9zdC0+c2V0TmVlZHNTdHlsZVJlY2FsYygpOworCisgICAgICAgIGZvciAoU2hh
ZG93Um9vdCogc2hhZG93Um9vdCA9IGhvc3QtPnNoYWRvd1Jvb3QoKTsgc2hhZG93Um9vdDsgc2hh
ZG93Um9vdCA9IHNoYWRvd1Jvb3QtPm9sZGVyU2hhZG93Um9vdCgpKSB7CisgICAgICAgICAgICBj
b25zdCBWZWN0b3I8UmVmUHRyPEluc2VydGlvblBvaW50PiA+JiBpbnNlcnRpb25Qb2ludHMgPSBz
aGFkb3dSb290LT5lbnN1cmVTY29wZURpc3RyaWJ1dGlvbigpLT5lbnN1cmVJbnNlcnRpb25Qb2lu
dExpc3Qoc2hhZG93Um9vdCk7CisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGlu
c2VydGlvblBvaW50cy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgICAgIGlmICghaW5zZXJ0
aW9uUG9pbnRzW2ldLT5pc0FjdGl2ZSgpKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiAoRWxlbWVudCogcGFyZW50ID0g
aW5zZXJ0aW9uUG9pbnRzW2ldLT5wYXJlbnRFbGVtZW50KCkpIHsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKEVsZW1lbnRTaGFkb3cqIHNoYWRvdyA9IHBhcmVudC0+c2hhZG93KCkpCisgICAgICAg
ICAgICAgICAgICAgICAgICBzaGFkb3ctPmludmFsaWRhdGVEaXN0cmlidXRpb24oKTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAo
ZGlkTmVlZEludmFsaWRhdGlvbikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9D
b250ZW50RGlzdHJpYnV0b3IuaAppbmRleCA0NjBkNDEzNWQ5OTBlOGZmNjk2NzU3ZDU2MmEwYjBi
MTNlZjczNjgyLi42ZTI1N2I1YjEzNjQ1NDZkNDdiYzU2YzRjMTdjYjBmN2U2NGJkNzRhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50RGlzdHJpYnV0b3IuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50RGlzdHJpYnV0b3IuaApAQCAt
MTM0LDcgKzEzNCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZEFmZmVjdFNlbGVjdG9yKEVsZW1l
bnQqIGhvc3QsIEFmZmVjdGVkU2VsZWN0b3JNYXNrKTsKICAgICB2b2lkIHdpbGxBZmZlY3RTZWxl
Y3RvcihFbGVtZW50KiBob3N0KTsKIAotICAgIHN0YXRpYyB2b2lkIGVuc3VyZURpc3RyaWJ1dGlv
bkZyb21Eb2N1bWVudChFbGVtZW50KiBzb3VyY2UpOworICAgIHN0YXRpYyB2b2lkIGVuc3VyZURp
c3RyaWJ1dGlvbkZyb21BbmNlc3RvcihOb2RlKiBzb3VyY2UpOwogCiBwcml2YXRlOgogICAgIHZv
aWQgZGlzdHJpYnV0ZShFbGVtZW50KiBob3N0KTsKQEAgLTE0Niw2ICsxNDYsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgc2V0TmVlZHNTZWxlY3RGZWF0dXJlU2V0KCkgeyBtX25lZWRzU2VsZWN0RmVh
dHVyZVNldCA9IHRydWU7IH0KIAogICAgIHZvaWQgc2V0VmFsaWRpdHkoVmFsaWRpdHkgdmFsaWRp
dHkpIHsgbV92YWxpZGl0eSA9IHZhbGlkaXR5OyB9CisgICAgYm9vbCBkaXN0cmlidXRpb25Jc1Zh
bGlkKCkgY29uc3QgeyByZXR1cm4gbV92YWxpZGl0eSA9PSBWYWxpZDsgfQogICAgIGJvb2wgbmVl
ZHNEaXN0cmlidXRpb24oKSBjb25zdDsKICAgICBib29sIG5lZWRzSW52YWxpZGF0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV92YWxpZGl0eSAhPSBJbnZhbGlkYXRlZDsgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MU2hhZG93RWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MU2hhZG93RWxlbWVudC5jcHAKaW5kZXggNjM3NGRjN2Rj
YTQyZTdjNDcxYTdiM2IyNTdiYjk4YmQ0MDgyNDNmMy4uNjU3YmE5MWI1OTRmNzkzNTJjM2I3MTAw
NzZiNDdhNDgwNDI3ZjA3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
SFRNTFNoYWRvd0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hU
TUxTaGFkb3dFbGVtZW50LmNwcApAQCAtNjEsNyArNjEsNyBAQCBTaGFkb3dSb290KiBIVE1MU2hh
ZG93RWxlbWVudDo6b2xkZXJTaGFkb3dSb290KCkKICAgICBpZiAoIXRyZWVTY29wZSgpLT5yb290
Tm9kZSgpLT5pc1NoYWRvd1Jvb3QoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBDb250ZW50
RGlzdHJpYnV0b3I6OmVuc3VyZURpc3RyaWJ1dGlvbkZyb21Eb2N1bWVudCh0aGlzKTsKKyAgICBD
b250ZW50RGlzdHJpYnV0b3I6OmVuc3VyZURpc3RyaWJ1dGlvbkZyb21BbmNlc3Rvcih0aGlzKTsK
IAogICAgIFNoYWRvd1Jvb3QqIG9sZGVyID0gdG9TaGFkb3dSb290KHRyZWVTY29wZSgpLT5yb290
Tm9kZSgpKS0+b2xkZXJTaGFkb3dSb290KCk7CiAgICAgaWYgKCFvbGRlciB8fCBvbGRlci0+dHlw
ZSgpICE9IFNoYWRvd1Jvb3Q6OkF1dGhvclNoYWRvd1Jvb3QgfHwgU2NvcGVDb250ZW50RGlzdHJp
YnV0aW9uOjphc3NpZ25lZFRvKG9sZGVyKSAhPSB0aGlzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuY3BwCmluZGV4IDk2ZmIyNTAwZjIwYWM3YWZjOTNjOGFl
OGU1ZjJlYzI3YmVjN2VkZWUuLmIxZGYzZTMwNjdhNTZhMGYxZjlhOTg1MmIwMTg3MmNiZWJjZmY0
OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5jcHAK
QEAgLTUzLDggKzUzLDcgQEAgSW5zZXJ0aW9uUG9pbnQ6On5JbnNlcnRpb25Qb2ludCgpCiAKIHZv
aWQgSW5zZXJ0aW9uUG9pbnQ6OmF0dGFjaCgpCiB7Ci0gICAgaWYgKFNoYWRvd1Jvb3QqIHJvb3Qg
PSBjb250YWluaW5nU2hhZG93Um9vdCgpKQotICAgICAgICByb290LT5vd25lcigpLT5lbnN1cmVE
aXN0cmlidXRpb24oKTsKKyAgICBDb250ZW50RGlzdHJpYnV0b3I6OmVuc3VyZURpc3RyaWJ1dGlv
bkZyb21BbmNlc3Rvcih0aGlzKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZGlzdHJp
YnV0aW9uLnNpemUoKTsgKytpKSB7CiAgICAgICAgIGlmICghbV9kaXN0cmlidXRpb24uYXQoaSkt
PmF0dGFjaGVkKCkpCiAgICAgICAgICAgICBtX2Rpc3RyaWJ1dGlvbi5hdChpKS0+YXR0YWNoKCk7
CkBAIC02NSw4ICs2NCw3IEBAIHZvaWQgSW5zZXJ0aW9uUG9pbnQ6OmF0dGFjaCgpCiAKIHZvaWQg
SW5zZXJ0aW9uUG9pbnQ6OmRldGFjaCgpCiB7Ci0gICAgaWYgKFNoYWRvd1Jvb3QqIHJvb3QgPSBj
b250YWluaW5nU2hhZG93Um9vdCgpKQotICAgICAgICByb290LT5vd25lcigpLT5lbnN1cmVEaXN0
cmlidXRpb24oKTsKKyAgICBDb250ZW50RGlzdHJpYnV0b3I6OmVuc3VyZURpc3RyaWJ1dGlvbkZy
b21BbmNlc3Rvcih0aGlzKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZGlzdHJpYnV0
aW9uLnNpemUoKTsgKytpKQogICAgICAgICBtX2Rpc3RyaWJ1dGlvbi5hdChpKS0+ZGV0YWNoKCk7
CiAKQEAgLTk5LDcgKzk3LDcgQEAgYm9vbCBJbnNlcnRpb25Qb2ludDo6aXNBY3RpdmUoKSBjb25z
dAogCiBQYXNzUmVmUHRyPE5vZGVMaXN0PiBJbnNlcnRpb25Qb2ludDo6Z2V0RGlzdHJpYnV0ZWRO
b2RlcygpIGNvbnN0CiB7Ci0gICAgQ29udGVudERpc3RyaWJ1dG9yOjplbnN1cmVEaXN0cmlidXRp
b25Gcm9tRG9jdW1lbnQoY29uc3RfY2FzdDxJbnNlcnRpb25Qb2ludCo+KHRoaXMpKTsKKyAgICBD
b250ZW50RGlzdHJpYnV0b3I6OmVuc3VyZURpc3RyaWJ1dGlvbkZyb21BbmNlc3Rvcihjb25zdF9j
YXN0PEluc2VydGlvblBvaW50Kj4odGhpcykpOwogCiAgICAgVmVjdG9yPFJlZlB0cjxOb2RlPiA+
IG5vZGVzOwogCkBAIC0yMDQsNyArMjAyLDcgQEAgSW5zZXJ0aW9uUG9pbnQqIHJlc29sdmVSZXBy
b2plY3Rpb24oY29uc3QgTm9kZSogcHJvamVjdGVkTm9kZSkKIAogICAgIHdoaWxlIChjdXJyZW50
KSB7CiAgICAgICAgIGlmIChFbGVtZW50U2hhZG93KiBzaGFkb3cgPSBzaGFkb3dPZlBhcmVudEZv
ckRpc3RyaWJ1dGlvbihjdXJyZW50KSkgewotICAgICAgICAgICAgc2hhZG93LT5lbnN1cmVEaXN0
cmlidXRpb24oKTsKKyAgICAgICAgICAgIENvbnRlbnREaXN0cmlidXRvcjo6ZW5zdXJlRGlzdHJp
YnV0aW9uRnJvbUFuY2VzdG9yKGNvbnN0X2Nhc3Q8Tm9kZSo+KGN1cnJlbnQpKTsKICAgICAgICAg
ICAgIGlmIChJbnNlcnRpb25Qb2ludCogaW5zZXJ0ZWRUbyA9IHNoYWRvdy0+ZGlzdHJpYnV0b3Io
KS5maW5kSW5zZXJ0aW9uUG9pbnRGb3IocHJvamVjdGVkTm9kZSkpIHsKICAgICAgICAgICAgICAg
ICBjdXJyZW50ID0gaW5zZXJ0ZWRUbzsKICAgICAgICAgICAgICAgICBpbnNlcnRpb25Qb2ludCA9
IGluc2VydGVkVG87CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKaW5kZXggMjQ5MjU1YjAxOTQ2NzBmOGM1NGYyYWQ0YWE1ODg3YjM0YTNl
MDM0Mi4uZDdlNDljZGI3NGJlMDQzMmQ4MmYyOWJiNDNjZjdmNTRkZmE4NjJhOCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE1IEBACisyMDEzLTAxLTE1ICBTaGlueWEgS2F3YW5ha2EgIDxzaGlueWFrQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBBU1NFUlQgdHJpZ2dlcmVkIGluIFdlYkNvcmU6OkNvbXBvc2Vk
U2hhZG93VHJlZVdhbGtlcjo6dHJhdmVyc2VCYWNrVG9Zb3VuZ2VyU2hhZG93Um9vdAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA2NjM0CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2RvbS9zaGFk
b3cvZGlzdHJpYnV0aW9uLWNyYXNoLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFz
dC9kb20vc2hhZG93L2Rpc3RyaWJ1dGlvbi1jcmFzaC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2RvbS9zaGFkb3cvbmVzdGVkLXJlcHJvamVjdGlvbi1pbmNvbnNpc3RlbnQtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvbmVzdGVkLXJlcHJvamVjdGlv
bi1pbmNvbnNpc3RlbnQuaHRtbDogQWRkZWQuCisKIDIwMTMtMDEtMTUgIEVtaWwgQSBFa2x1bmQg
IDxlYWVAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQgbWFjIHJlYmFzZWxpbmUg
Zm9yIHIxMzk3OTguCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlz
dHJpYnV0aW9uLWNyYXNoLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRv
dy9kaXN0cmlidXRpb24tY3Jhc2gtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ3ZjlhODM5MTk0
NTFjYjA3ZTMzZDQxOWI3MzhiNWNmNzc2MzQ4MmIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0aW9uLWNyYXNoLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDUgQEAKK1doZW4gbW9kaWZ5aW5nIEluc2VydGlvblBvaW50J3MgY2hpbGQsIGRpc3Ry
aWJ1dGlvbiBzaG91bGQgbm90IGNhdXNlIGNyYXNoLgorCitQQVNTIHVubGVzcyBjcmFzaC4KKwor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0aW9uLWNy
YXNoLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0aW9uLWNyYXNo
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNjI3MjNmMjc3MWQzNWJkZDMzM2FkN2UwMGIxZTZlMzBkZjdkMWU1
YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmli
dXRpb24tY3Jhc2guaHRtbApAQCAtMCwwICsxLDI3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
Pjxib2R5PgorCis8cD5XaGVuIG1vZGlmeWluZyBJbnNlcnRpb25Qb2ludCdzIGNoaWxkLCBkaXN0
cmlidXRpb24gc2hvdWxkIG5vdCBjYXVzZSBjcmFzaC48L3A+Cis8cD5QQVNTIHVubGVzcyBjcmFz
aC48L3A+CisKKzxkaXYgaWQ9Imhvc3QiPjwvZGl2PgorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVz
dFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIu
d2FpdFVudGlsRG9uZSgpOworfQorCit2YXIgc2hhZG93Um9vdDEgPSBob3N0LndlYmtpdENyZWF0
ZVNoYWRvd1Jvb3QoKTsKK3ZhciBzaGFkb3dSb290MiA9IGhvc3Qud2Via2l0Q3JlYXRlU2hhZG93
Um9vdCgpOworCitzaGFkb3dSb290MS5pbm5lckhUTUwgPSAnc29tZXRoaW5nIDEnOworc2hhZG93
Um9vdDIuaW5uZXJIVE1MID0gJzxkZXRhaWxzPjxzaGFkb3cgaWQ9InNoYWRvdyI+c29tZXRoaW5n
IDI8L3NoYWRvdz48L2RldGFpbHM+JzsKKwordmFyIHNoYWRvdyA9IHNoYWRvd1Jvb3QyLmdldEVs
ZW1lbnRCeUlkKCdzaGFkb3cnKTsKK3NldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgc2hhZG93
LnJlbW92ZUNoaWxkKHNoYWRvdy5maXJzdENoaWxkKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworfSwgMCk7Cis8L3NjcmlwdD4K
KzwvYm9keT48L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cv
bmVzdGVkLXJlcHJvamVjdGlvbi1pbmNvbnNpc3RlbnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvZmFzdC9kb20vc2hhZG93L25lc3RlZC1yZXByb2plY3Rpb24taW5jb25zaXN0ZW50LWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4zYmI0ZjBmOTk2YTVjNTFkZDIxYTRjZmRjZTBhNzJmOGQ3MTVi
MWRmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L25lc3Rl
ZC1yZXByb2plY3Rpb24taW5jb25zaXN0ZW50LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDkgQEAK
K1doZW4gd2UgbW9kaWZ5IGhvc3QgY2hpbGRyZW4gYW5kIGdldCBkaXN0cmlidXRlZCBub2RlcyBp
biBuZXN0ZWQgU2hhZG93RE9NLCBkaXN0cmlidXRpb24gc2hvdWxkIG9jY3VyIGZyb20gdGhlIGhv
c3QuCisKK1BBU1MgY29udGVudC5nZXREaXN0cmlidXRlZE5vZGVzKCkubGVuZ3RoIGlzIDIKK1BB
U1MgY29udGVudC5nZXREaXN0cmlidXRlZE5vZGVzKCkuaXRlbSgwKSBpcyBkaXYxCitQQVNTIGNv
bnRlbnQuZ2V0RGlzdHJpYnV0ZWROb2RlcygpLml0ZW0oMSkgaXMgYWRkZWREaXYKK1BBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvbmVzdGVkLXJlcHJvamVjdGlvbi1pbmNvbnNpc3Rl
bnQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9uZXN0ZWQtcmVwcm9qZWN0aW9u
LWluY29uc2lzdGVudC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcxMjk5NTk2NWViYTU4ZWE1MjM4ODFkYjcw
NGIwNDI5ODkzNTIyODcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9z
aGFkb3cvbmVzdGVkLXJlcHJvamVjdGlvbi1pbmNvbnNpc3RlbnQuaHRtbApAQCAtMCwwICsxLDM0
IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPjxib2R5PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pz
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CisKKzxwPldoZW4gd2UgbW9kaWZ5
IGhvc3QgY2hpbGRyZW4gYW5kIGdldCBkaXN0cmlidXRlZCBub2RlcyBpbiBuZXN0ZWQgU2hhZG93
RE9NLCBkaXN0cmlidXRpb24gc2hvdWxkIG9jY3VyIGZyb20gdGhlIGhvc3QuPC9wPgorPGRpdiBp
ZD0iaG9zdCI+PC9kaXY+Cis8cHJlIGlkPSJjb25zb2xlIj48L3ByZT4KKzxzY3JpcHQ+Citqc1Rl
c3RJc0FzeW5jID0gdHJ1ZTsKKwordmFyIHNoYWRvd1Jvb3QxID0gaG9zdC53ZWJraXRDcmVhdGVT
aGFkb3dSb290KCk7CitzaGFkb3dSb290MS5pbm5lckhUTUwgPSAnPGRpdiBpZD0iZGl2MSI+PC9k
aXY+JzsKK3ZhciBkaXYxID0gc2hhZG93Um9vdDEuZ2V0RWxlbWVudEJ5SWQoJ2RpdjEnKTsKKwor
dmFyIHNoYWRvd1Jvb3QyID0gaG9zdC53ZWJraXRDcmVhdGVTaGFkb3dSb290KCk7CitzaGFkb3dS
b290Mi5pbm5lckhUTUwgPSAnPGRpdiBpZD0iZGl2MiI+PHNoYWRvdz48L3NoYWRvdz48L2Rpdj4n
OwordmFyIGRpdjIgPSBzaGFkb3dSb290Mi5nZXRFbGVtZW50QnlJZCgnZGl2MicpOwordmFyIHNo
YWRvd1Jvb3QzID0gZGl2Mi53ZWJraXRDcmVhdGVTaGFkb3dSb290KCk7CitzaGFkb3dSb290My5p
bm5lckhUTUwgPSAnPGNvbnRlbnQgaWQ9ImNvbnRlbnQiPjwvY29udGVudD4nOwordmFyIGNvbnRl
bnQgPSBzaGFkb3dSb290My5nZXRFbGVtZW50QnlJZCgnY29udGVudCcpOworCitzZXRUaW1lb3V0
KGZ1bmN0aW9uKCkgeworICAgIGFkZGVkRGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2
Jyk7CisgICAgc2hhZG93Um9vdDEuYXBwZW5kQ2hpbGQoYWRkZWREaXYpOworCisgICAgc2hvdWxk
QmUoJ2NvbnRlbnQuZ2V0RGlzdHJpYnV0ZWROb2RlcygpLmxlbmd0aCcsICcyJyk7CisgICAgc2hv
dWxkQmUoJ2NvbnRlbnQuZ2V0RGlzdHJpYnV0ZWROb2RlcygpLml0ZW0oMCknLCAnZGl2MScpOwor
ICAgIHNob3VsZEJlKCdjb250ZW50LmdldERpc3RyaWJ1dGVkTm9kZXMoKS5pdGVtKDEpJywgJ2Fk
ZGVkRGl2Jyk7CisKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30sIDApOworPC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8
L2JvZHk+PC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182916</attachid>
            <date>2013-01-15 21:19:30 -0800</date>
            <delta_ts>2013-01-16 22:15:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106634-20130116141632.patch</filename>
            <type>text/plain</type>
            <size>14704</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5ODEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjRjZDNhZGJjNGIyZTI1
ZWI4NzEwMWQ0NjQ4MGM2OGRlYjRkZGY2Ny4uMDU4MGZkYmVhMWQ1ZTg4OTA1NTc5ZWZiZGNiODIy
YTQxNGI2YWI2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDEzLTAxLTE1ICBTaGlu
eWEgS2F3YW5ha2EgIDxzaGlueWFrQGNocm9taXVtLm9yZz4KKworICAgICAgICBEaXN0cmlidXRp
b24gYmVjb21lcyBpbmNvbnNpc3RlbnQgc3RhdGUgd2l0aCBjb250ZW50L3NoYWRvdyByZXByb2pl
Y3Rpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEw
NjYzNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdo
ZW4gZGlzdHJpYnV0aW9uIG5lc3RlZCBTaGFkb3dET00gaXMgcmVzb2x2ZWQgYmVmb3JlIHJlc29s
dmluZyBTaGFkb3dET00sIGRpc3RyaWJ1dGlvbiBjb3VsZCBiZWNvbWUgaW5jb25zaXN0ZW50IHN0
YXRlLgorCisgICAgICAgIExldCdzIGNvbnNpZGVyIHRoZSBmb2xsb3dpbmcgZXhhbXBsZToKKwor
ICAgICAgICAgIGhvc3QgLS0tIFNSMQorICAgICAgICAgICAgICAgICAgICB8LS0gZGl2IC0tLS0t
LS0tLSBTUjIKKyAgICAgICAgICAgICAgICAgICAgICAgICB8LWNvbnRlbnQxICAgIHwtLSBkaXYg
LS0tLS0tLS0tIFNSMworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8LXNoYWRvdyAgICAgIHwtY29udGVudDIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfC1kaXYgLS0gU1I0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwtZGl2CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwtY29udGVudDMKKworICAgICAgICBXaGVuIHdlIGFkZCBhbiBl
bGVtZW50IGFzIGEgY2hpbGQgb2YgaG9zdCwgdGhlIGVsZW1lbnQgc2hvdWxkIGJlIGRpc3RyaWJ1
dGVkIHRvIGNvbnRlbnQxLCBzaGFkb3csIGFuZCBjb250ZW50Mi4KKyAgICAgICAgSG93ZXZlciwg
d2UncmUgaW52YWxpZGF0aW5nIFNSMSdzIGRpc3RyaWJ1dGlvbiBvbmx5LiBTbyB3aGVuIHdlIHJl
c29sdmUgU1IzJ3MgZGlzdHJpYnV0aW9uIGJlZm9yZSBTUjEncyBkaXN0cmlidXRpb24sCisgICAg
ICAgIHRoZSBhZGRlZCBlbGVtZW50IHdvbid0IGJlIGRpc3RyaWJ1dGVkIGNvcnJlY3RseS4gTm90
ZSB0aGF0IHdlIGRvbid0IGludmFsaWRhdGUgU1I0J3MgZGlzdHJpYnV0aW9uIGJlY2F1c2UgdGhl
IGhvc3QKKyAgICAgICAgZWxlbWVudCBvZiBTUjQgZG9lcyBub3QgaGF2ZSBJbnNlcnRpb25Qb2lu
dCBpbiBkaXJlY3QgY2hpbGRyZW4uCisKKyAgICAgICAgSW4gdGhpcyBwYXRjaCwgd2hlbiB3ZSBp
bnZhbGlkYXRlIGRpc3RyaWJ1dGlvbiwgd2UgYWxzbyBpbnZhbGlkYXRlIG5lY2Vzc2FyeSBuZXN0
ZWQgU2hhZG93RE9NJ3MgZGlzdHJpYnV0aW9uLgorICAgICAgICBBbHNvLCB3aGVuIHdlIHJlc29s
dmUgZGlzdHJpYnV0aW9uLCB3ZSByZXNvbHZlIGRpc3RyaWJ1dGlvbiBmcm9tIGFuY2VzdG9yLgor
CisgICAgICAgIFRlc3RzOiBmYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0aW9uLWNyYXNoLmh0bWwK
KyAgICAgICAgICAgICAgIGZhc3QvZG9tL3NoYWRvdy9uZXN0ZWQtcmVwcm9qZWN0aW9uLWluY29u
c2lzdGVudC5odG1sCisKKyAgICAgICAgKiBkb20vRWxlbWVudFNoYWRvdy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpFbGVtZW50U2hhZG93OjphdHRhY2gpOiBTaG91bGQgcmVzb2x2ZSBkaXN0cmli
dXRpb24gZnJvbSBhbmNlc3Rvci4KKyAgICAgICAgKiBodG1sL3NoYWRvdy9Db250ZW50RGlzdHJp
YnV0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudERpc3RyaWJ1dG9yOjpkaXN0cmli
dXRlKTogQWRkZWQgQVNTRVJUIHRoYXQgdGhlIHBhcmVudCBTaGFkb3dSb290J3MgZGlzdHJpYnV0
aW9uIGlzIHJlc29sdmVkLgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudERpc3RyaWJ1dG9yOjpl
bnN1cmVEaXN0cmlidXRpb25Gcm9tQW5jZXN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVu
dERpc3RyaWJ1dG9yOjppbnZhbGlkYXRlRGlzdHJpYnV0aW9uKTogRm9yIGVhY2ggSW5zZXJ0aW9u
UG9pbnQsIHdlIGhhdmUgdG8gaW52YWxpZGF0ZQorICAgICAgICBpdHMgcGFyZW50IGVsZW1lbnQn
cyBkaXN0cmlidXRpb24gKGlmIGl0IGhhcyBFbGVtZW50U2hhZG93KS4KKyAgICAgICAgKiBodG1s
L3NoYWRvdy9Db250ZW50RGlzdHJpYnV0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRE
aXN0cmlidXRvcjo6ZGlzdHJpYnV0aW9uSXNWYWxpZCk6CisgICAgICAgICogaHRtbC9zaGFkb3cv
SFRNTFNoYWRvd0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNoYWRvd0VsZW1l
bnQ6Om9sZGVyU2hhZG93Um9vdCk6IFNob3VsZCByZXNvbHZlIGRpc3RyaWJ1dGlvbiBmcm9tIGFu
Y2VzdG9yLgorICAgICAgICAqIGh0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Okluc2VydGlvblBvaW50OjphdHRhY2gpOiBkaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6Okluc2VydGlvblBvaW50OjpkZXRhY2gpOiBkaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
Okluc2VydGlvblBvaW50OjpnZXREaXN0cmlidXRlZE5vZGVzKTogZGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpyZXNvbHZlUmVwcm9qZWN0aW9uKTogZGl0dG8uCisKIDIwMTMtMDEtMTUgIEFudHRp
IEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIEFTU0VSVCghbV9xdWV1ZS5r
aWxsZWQoKSAmJiBtX3RocmVhZElEKSBoaXQgaW4gU3RvcmFnZVRocmVhZDo6c2NoZWR1bGVUYXNr
IG9uIGxvdyBtZW1vcnkgd2FybmluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnRTaGFkb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRTaGFkb3cuY3BwCmlu
ZGV4IDcyMDFkMzI3NTIyMDdhNTViN2E3ODA1YTE5Zjg0Yjg0ZWU0ZGFmNmIuLmRiNGQyYWQ3ODU0
OTI0YTA3ZjhlYzU0YTAwODYxOTZkODdhNzZlMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50U2hhZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFNo
YWRvdy5jcHAKQEAgLTEyMiw3ICsxMjIsOSBAQCB2b2lkIEVsZW1lbnRTaGFkb3c6OnJlbW92ZUFs
bFNoYWRvd1Jvb3RzKCkKIAogdm9pZCBFbGVtZW50U2hhZG93OjphdHRhY2goKQogewotICAgIGVu
c3VyZURpc3RyaWJ1dGlvbigpOworICAgIEFTU0VSVCh5b3VuZ2VzdFNoYWRvd1Jvb3QoKSk7Cisg
ICAgQ29udGVudERpc3RyaWJ1dG9yOjplbnN1cmVEaXN0cmlidXRpb25Gcm9tQW5jZXN0b3IoeW91
bmdlc3RTaGFkb3dSb290KCkpOworCiAgICAgZm9yIChTaGFkb3dSb290KiByb290ID0geW91bmdl
c3RTaGFkb3dSb290KCk7IHJvb3Q7IHJvb3QgPSByb290LT5vbGRlclNoYWRvd1Jvb3QoKSkgewog
ICAgICAgICBpZiAoIXJvb3QtPmF0dGFjaGVkKCkpCiAgICAgICAgICAgICByb290LT5hdHRhY2go
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnREaXN0cmli
dXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50RGlzdHJpYnV0b3Iu
Y3BwCmluZGV4IDg2N2ExNzQ1N2I1MjllZjA4OWQ4MGIwZmQ4ODNlMTRhNjJjN2VlMzguLmEzNWVj
YTYxMzM0NTg0NTBlZWI2ZmUyZjBkMDgyMWNkNTU5YWU2YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnREaXN0cmlidXRvci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmNwcApAQCAtMjEzLDYgKzIxMyw3
IEBAIHZvaWQgQ29udGVudERpc3RyaWJ1dG9yOjpkaXN0cmlidXRlKEVsZW1lbnQqIGhvc3QpCiB7
CiAgICAgQVNTRVJUKG5lZWRzRGlzdHJpYnV0aW9uKCkpOwogICAgIEFTU0VSVChtX25vZGVUb0lu
c2VydGlvblBvaW50LmlzRW1wdHkoKSk7CisgICAgQVNTRVJUKCFob3N0LT5jb250YWluaW5nU2hh
ZG93Um9vdCgpIHx8IGhvc3QtPmNvbnRhaW5pbmdTaGFkb3dSb290KCktPm93bmVyKCktPmRpc3Ry
aWJ1dG9yKCkuZGlzdHJpYnV0aW9uSXNWYWxpZCgpKTsKIAogICAgIG1fdmFsaWRpdHkgPSBWYWxp
ZDsKIApAQCAtMzQ1LDE4ICszNDYsMjMgQEAgdm9pZCBDb250ZW50RGlzdHJpYnV0b3I6OmVuc3Vy
ZURpc3RyaWJ1dGlvbihFbGVtZW50KiBob3N0KQogICAgIGRpc3RyaWJ1dGUoaG9zdCk7CiB9CiAK
LXZvaWQgQ29udGVudERpc3RyaWJ1dG9yOjplbnN1cmVEaXN0cmlidXRpb25Gcm9tRG9jdW1lbnQo
RWxlbWVudCogc291cmNlKQordm9pZCBDb250ZW50RGlzdHJpYnV0b3I6OmVuc3VyZURpc3RyaWJ1
dGlvbkZyb21BbmNlc3RvcihOb2RlKiBzb3VyY2UpCiB7CiAgICAgQ29udGFpbmVyTm9kZSogbWF5
U2hhZG93ID0gc291cmNlLT50cmVlU2NvcGUoKS0+cm9vdE5vZGUoKTsKICAgICBpZiAoIW1heVNo
YWRvdy0+aXNTaGFkb3dSb290KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFZlY3RvcjxFbGVt
ZW50KiwgOD4gaG9zdHM7Ci0gICAgZm9yIChFbGVtZW50KiBjdXJyZW50ID0gdG9TaGFkb3dSb290
KG1heVNoYWRvdyktPmhvc3QoKTsgY3VycmVudDsgY3VycmVudCA9IGN1cnJlbnQtPnNoYWRvd0hv
c3QoKSkKLSAgICAgICAgaG9zdHMuYXBwZW5kKGN1cnJlbnQpOworICAgIFZlY3RvcjxFbGVtZW50
U2hhZG93KiwgOD4gZWxlbWVudFNoYWRvd3M7CisgICAgZm9yIChFbGVtZW50KiBjdXJyZW50ID0g
dG9TaGFkb3dSb290KG1heVNoYWRvdyktPmhvc3QoKTsgY3VycmVudDsgY3VycmVudCA9IGN1cnJl
bnQtPnNoYWRvd0hvc3QoKSkgeworICAgICAgICBFbGVtZW50U2hhZG93KiBlbGVtZW50U2hhZG93
ID0gY3VycmVudC0+c2hhZG93KCk7CisgICAgICAgIGlmICghZWxlbWVudFNoYWRvdy0+ZGlzdHJp
YnV0b3IoKS5uZWVkc0Rpc3RyaWJ1dGlvbigpKQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAg
ICAgZWxlbWVudFNoYWRvd3MuYXBwZW5kKGVsZW1lbnRTaGFkb3cpOworICAgIH0KIAotICAgIGZv
ciAoc2l6ZV90IGkgPSBob3N0cy5zaXplKCk7IGkgPiAwOyAtLWkpCi0gICAgICAgIGhvc3RzW2kg
LSAxXS0+c2hhZG93KCktPmVuc3VyZURpc3RyaWJ1dGlvbigpOworICAgIGZvciAoc2l6ZV90IGkg
PSBlbGVtZW50U2hhZG93cy5zaXplKCk7IGkgPiAwOyAtLWkpCisgICAgICAgIGVsZW1lbnRTaGFk
b3dzW2kgLSAxXS0+ZW5zdXJlRGlzdHJpYnV0aW9uKCk7CiB9CiAKIApAQCAtMzY5LDYgKzM3NSwx
OSBAQCB2b2lkIENvbnRlbnREaXN0cmlidXRvcjo6aW52YWxpZGF0ZURpc3RyaWJ1dGlvbihFbGVt
ZW50KiBob3N0KQogICAgICAgICBmb3IgKE5vZGUqIG4gPSBob3N0LT5maXJzdENoaWxkKCk7IG47
IG4gPSBuLT5uZXh0U2libGluZygpKQogICAgICAgICAgICAgbi0+bGF6eVJlYXR0YWNoKCk7CiAg
ICAgICAgIGhvc3QtPnNldE5lZWRzU3R5bGVSZWNhbGMoKTsKKworICAgICAgICBmb3IgKFNoYWRv
d1Jvb3QqIHNoYWRvd1Jvb3QgPSBob3N0LT5zaGFkb3dSb290KCk7IHNoYWRvd1Jvb3Q7IHNoYWRv
d1Jvb3QgPSBzaGFkb3dSb290LT5vbGRlclNoYWRvd1Jvb3QoKSkgeworICAgICAgICAgICAgY29u
c3QgVmVjdG9yPFJlZlB0cjxJbnNlcnRpb25Qb2ludD4gPiYgaW5zZXJ0aW9uUG9pbnRzID0gc2hh
ZG93Um9vdC0+ZW5zdXJlU2NvcGVEaXN0cmlidXRpb24oKS0+ZW5zdXJlSW5zZXJ0aW9uUG9pbnRM
aXN0KHNoYWRvd1Jvb3QpOworICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpbnNl
cnRpb25Qb2ludHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgICAgICBpZiAoIWluc2VydGlv
blBvaW50c1tpXS0+aXNBY3RpdmUoKSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYgKEVsZW1lbnQqIHBhcmVudCA9IGlu
c2VydGlvblBvaW50c1tpXS0+cGFyZW50RWxlbWVudCgpKSB7CisgICAgICAgICAgICAgICAgICAg
IGlmIChFbGVtZW50U2hhZG93KiBzaGFkb3cgPSBwYXJlbnQtPnNoYWRvdygpKQorICAgICAgICAg
ICAgICAgICAgICAgICAgc2hhZG93LT5pbnZhbGlkYXRlRGlzdHJpYnV0aW9uKCk7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgfQogCiAgICAgaWYgKGRp
ZE5lZWRJbnZhbGlkYXRpb24pIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L0NvbnRlbnREaXN0cmlidXRvci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29u
dGVudERpc3RyaWJ1dG9yLmgKaW5kZXggNDYwZDQxMzVkOTkwZThmZjY5Njc1N2Q1NjJhMGIwYjEz
ZWY3MzY4Mi4uNmUyNTdiNWIxMzY0NTQ2ZDQ3YmM1NmM0YzE3Y2IwZjdlNjRiZDc0YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmgKQEAgLTEz
NCw3ICsxMzQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRBZmZlY3RTZWxlY3RvcihFbGVtZW50
KiBob3N0LCBBZmZlY3RlZFNlbGVjdG9yTWFzayk7CiAgICAgdm9pZCB3aWxsQWZmZWN0U2VsZWN0
b3IoRWxlbWVudCogaG9zdCk7CiAKLSAgICBzdGF0aWMgdm9pZCBlbnN1cmVEaXN0cmlidXRpb25G
cm9tRG9jdW1lbnQoRWxlbWVudCogc291cmNlKTsKKyAgICBzdGF0aWMgdm9pZCBlbnN1cmVEaXN0
cmlidXRpb25Gcm9tQW5jZXN0b3IoTm9kZSogc291cmNlKTsKIAogcHJpdmF0ZToKICAgICB2b2lk
IGRpc3RyaWJ1dGUoRWxlbWVudCogaG9zdCk7CkBAIC0xNDYsNiArMTQ2LDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIHNldE5lZWRzU2VsZWN0RmVhdHVyZVNldCgpIHsgbV9uZWVkc1NlbGVjdEZlYXR1
cmVTZXQgPSB0cnVlOyB9CiAKICAgICB2b2lkIHNldFZhbGlkaXR5KFZhbGlkaXR5IHZhbGlkaXR5
KSB7IG1fdmFsaWRpdHkgPSB2YWxpZGl0eTsgfQorICAgIGJvb2wgZGlzdHJpYnV0aW9uSXNWYWxp
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsaWRpdHkgPT0gVmFsaWQ7IH0KICAgICBib29sIG5lZWRz
RGlzdHJpYnV0aW9uKCkgY29uc3Q7CiAgICAgYm9vbCBuZWVkc0ludmFsaWRhdGlvbigpIGNvbnN0
IHsgcmV0dXJuIG1fdmFsaWRpdHkgIT0gSW52YWxpZGF0ZWQ7IH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTFNoYWRvd0VsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvSFRNTFNoYWRvd0VsZW1lbnQuY3BwCmluZGV4IDYzNzRkYzdkY2E0
MmU3YzQ3MWE3YjNiMjU3YmI5OGJkNDA4MjQzZjMuLjY1N2JhOTFiNTk0Zjc5MzUyYzNiNzEwMDc2
YjQ3YTQ4MDQyN2YwN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hU
TUxTaGFkb3dFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1M
U2hhZG93RWxlbWVudC5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgU2hhZG93Um9vdCogSFRNTFNoYWRv
d0VsZW1lbnQ6Om9sZGVyU2hhZG93Um9vdCgpCiAgICAgaWYgKCF0cmVlU2NvcGUoKS0+cm9vdE5v
ZGUoKS0+aXNTaGFkb3dSb290KCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgQ29udGVudERp
c3RyaWJ1dG9yOjplbnN1cmVEaXN0cmlidXRpb25Gcm9tRG9jdW1lbnQodGhpcyk7CisgICAgQ29u
dGVudERpc3RyaWJ1dG9yOjplbnN1cmVEaXN0cmlidXRpb25Gcm9tQW5jZXN0b3IodGhpcyk7CiAK
ICAgICBTaGFkb3dSb290KiBvbGRlciA9IHRvU2hhZG93Um9vdCh0cmVlU2NvcGUoKS0+cm9vdE5v
ZGUoKSktPm9sZGVyU2hhZG93Um9vdCgpOwogICAgIGlmICghb2xkZXIgfHwgb2xkZXItPnR5cGUo
KSAhPSBTaGFkb3dSb290OjpBdXRob3JTaGFkb3dSb290IHx8IFNjb3BlQ29udGVudERpc3RyaWJ1
dGlvbjo6YXNzaWduZWRUbyhvbGRlcikgIT0gdGhpcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L0luc2VydGlvblBvaW50LmNwcAppbmRleCA5NmZiMjUwMGYyMGFjN2FmYzkzYzhhZThl
NWYyZWMyN2JlYzdlZGVlLi5iMWRmM2UzMDY3YTU2YTBmMWY5YTk4NTJiMDE4NzJjYmViY2ZmNDhh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuY3BwCkBA
IC01Myw4ICs1Myw3IEBAIEluc2VydGlvblBvaW50Ojp+SW5zZXJ0aW9uUG9pbnQoKQogCiB2b2lk
IEluc2VydGlvblBvaW50OjphdHRhY2goKQogewotICAgIGlmIChTaGFkb3dSb290KiByb290ID0g
Y29udGFpbmluZ1NoYWRvd1Jvb3QoKSkKLSAgICAgICAgcm9vdC0+b3duZXIoKS0+ZW5zdXJlRGlz
dHJpYnV0aW9uKCk7CisgICAgQ29udGVudERpc3RyaWJ1dG9yOjplbnN1cmVEaXN0cmlidXRpb25G
cm9tQW5jZXN0b3IodGhpcyk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2Rpc3RyaWJ1
dGlvbi5zaXplKCk7ICsraSkgewogICAgICAgICBpZiAoIW1fZGlzdHJpYnV0aW9uLmF0KGkpLT5h
dHRhY2hlZCgpKQogICAgICAgICAgICAgbV9kaXN0cmlidXRpb24uYXQoaSktPmF0dGFjaCgpOwpA
QCAtNjUsOCArNjQsNyBAQCB2b2lkIEluc2VydGlvblBvaW50OjphdHRhY2goKQogCiB2b2lkIElu
c2VydGlvblBvaW50OjpkZXRhY2goKQogewotICAgIGlmIChTaGFkb3dSb290KiByb290ID0gY29u
dGFpbmluZ1NoYWRvd1Jvb3QoKSkKLSAgICAgICAgcm9vdC0+b3duZXIoKS0+ZW5zdXJlRGlzdHJp
YnV0aW9uKCk7CisgICAgQ29udGVudERpc3RyaWJ1dG9yOjplbnN1cmVEaXN0cmlidXRpb25Gcm9t
QW5jZXN0b3IodGhpcyk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2Rpc3RyaWJ1dGlv
bi5zaXplKCk7ICsraSkKICAgICAgICAgbV9kaXN0cmlidXRpb24uYXQoaSktPmRldGFjaCgpOwog
CkBAIC05OSw3ICs5Nyw3IEBAIGJvb2wgSW5zZXJ0aW9uUG9pbnQ6OmlzQWN0aXZlKCkgY29uc3QK
IAogUGFzc1JlZlB0cjxOb2RlTGlzdD4gSW5zZXJ0aW9uUG9pbnQ6OmdldERpc3RyaWJ1dGVkTm9k
ZXMoKSBjb25zdAogewotICAgIENvbnRlbnREaXN0cmlidXRvcjo6ZW5zdXJlRGlzdHJpYnV0aW9u
RnJvbURvY3VtZW50KGNvbnN0X2Nhc3Q8SW5zZXJ0aW9uUG9pbnQqPih0aGlzKSk7CisgICAgQ29u
dGVudERpc3RyaWJ1dG9yOjplbnN1cmVEaXN0cmlidXRpb25Gcm9tQW5jZXN0b3IoY29uc3RfY2Fz
dDxJbnNlcnRpb25Qb2ludCo+KHRoaXMpKTsKIAogICAgIFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiBu
b2RlczsKIApAQCAtMjA0LDcgKzIwMiw3IEBAIEluc2VydGlvblBvaW50KiByZXNvbHZlUmVwcm9q
ZWN0aW9uKGNvbnN0IE5vZGUqIHByb2plY3RlZE5vZGUpCiAKICAgICB3aGlsZSAoY3VycmVudCkg
ewogICAgICAgICBpZiAoRWxlbWVudFNoYWRvdyogc2hhZG93ID0gc2hhZG93T2ZQYXJlbnRGb3JE
aXN0cmlidXRpb24oY3VycmVudCkpIHsKLSAgICAgICAgICAgIHNoYWRvdy0+ZW5zdXJlRGlzdHJp
YnV0aW9uKCk7CisgICAgICAgICAgICBDb250ZW50RGlzdHJpYnV0b3I6OmVuc3VyZURpc3RyaWJ1
dGlvbkZyb21BbmNlc3Rvcihjb25zdF9jYXN0PE5vZGUqPihjdXJyZW50KSk7CiAgICAgICAgICAg
ICBpZiAoSW5zZXJ0aW9uUG9pbnQqIGluc2VydGVkVG8gPSBzaGFkb3ctPmRpc3RyaWJ1dG9yKCku
ZmluZEluc2VydGlvblBvaW50Rm9yKHByb2plY3RlZE5vZGUpKSB7CiAgICAgICAgICAgICAgICAg
Y3VycmVudCA9IGluc2VydGVkVG87CiAgICAgICAgICAgICAgICAgaW5zZXJ0aW9uUG9pbnQgPSBp
bnNlcnRlZFRvOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCmluZGV4IDI0OTI1NWIwMTk0NjcwZjhjNTRmMmFkNGFhNTg4N2IzNGEzZTAz
NDIuLjVhYjBiNmI3YjUxOTI2N2Q0NDM1YjRmZDhhOTYyMWM4ZmVkNzkxZDcgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAxMy0wMS0xNSAgU2hpbnlhIEthd2FuYWthICA8c2hpbnlha0BjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgRGlzdHJpYnV0aW9uIGJlY29tZXMgaW5jb25zaXN0ZW50IHN0YXRl
IHdpdGggY29udGVudC9zaGFkb3cgcmVwcm9qZWN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDY2MzQKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRpb24t
Y3Jhc2gtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvZGlz
dHJpYnV0aW9uLWNyYXNoLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9u
ZXN0ZWQtcmVwcm9qZWN0aW9uLWluY29uc2lzdGVudC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvZG9tL3NoYWRvdy9uZXN0ZWQtcmVwcm9qZWN0aW9uLWluY29uc2lzdGVudC5o
dG1sOiBBZGRlZC4KKwogMjAxMy0wMS0xNSAgRW1pbCBBIEVrbHVuZCAgPGVhZUBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCBtYWMgcmViYXNlbGluZSBmb3IgcjEzOTc5OC4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRpb24tY3Jhc2gt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGlvbi1j
cmFzaC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDdmOWE4MzkxOTQ1MWNiMDdlMzNkNDE5Yjcz
OGI1Y2Y3NzYzNDgyYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3No
YWRvdy9kaXN0cmlidXRpb24tY3Jhc2gtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNSBAQAorV2hl
biBtb2RpZnlpbmcgSW5zZXJ0aW9uUG9pbnQncyBjaGlsZCwgZGlzdHJpYnV0aW9uIHNob3VsZCBu
b3QgY2F1c2UgY3Jhc2guCisKK1BBU1MgdW5sZXNzIGNyYXNoLgorCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRpb24tY3Jhc2guaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRpb24tY3Jhc2guaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42MjcyM2YyNzcxZDM1YmRkMzMzYWQ3ZTAwYjFlNmUzMGRmN2QxZTVhCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGlvbi1jcmFzaC5odG1s
CkBAIC0wLDAgKzEsMjcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+PGJvZHk+CisKKzxwPldo
ZW4gbW9kaWZ5aW5nIEluc2VydGlvblBvaW50J3MgY2hpbGQsIGRpc3RyaWJ1dGlvbiBzaG91bGQg
bm90IGNhdXNlIGNyYXNoLjwvcD4KKzxwPlBBU1MgdW5sZXNzIGNyYXNoLjwvcD4KKworPGRpdiBp
ZD0iaG9zdCI+PC9kaXY+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAg
dGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7
Cit9CisKK3ZhciBzaGFkb3dSb290MSA9IGhvc3Qud2Via2l0Q3JlYXRlU2hhZG93Um9vdCgpOwor
dmFyIHNoYWRvd1Jvb3QyID0gaG9zdC53ZWJraXRDcmVhdGVTaGFkb3dSb290KCk7CisKK3NoYWRv
d1Jvb3QxLmlubmVySFRNTCA9ICdzb21ldGhpbmcgMSc7CitzaGFkb3dSb290Mi5pbm5lckhUTUwg
PSAnPGRldGFpbHM+PHNoYWRvdyBpZD0ic2hhZG93Ij5zb21ldGhpbmcgMjwvc2hhZG93PjwvZGV0
YWlscz4nOworCit2YXIgc2hhZG93ID0gc2hhZG93Um9vdDIuZ2V0RWxlbWVudEJ5SWQoJ3NoYWRv
dycpOworc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICBzaGFkb3cucmVtb3ZlQ2hpbGQoc2hh
ZG93LmZpcnN0Q2hpbGQpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVz
dFJ1bm5lci5ub3RpZnlEb25lKCk7Cit9LCAwKTsKKzwvc2NyaXB0PgorPC9ib2R5PjwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9uZXN0ZWQtcmVwcm9qZWN0
aW9uLWluY29uc2lzdGVudC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFk
b3cvbmVzdGVkLXJlcHJvamVjdGlvbi1pbmNvbnNpc3RlbnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjNiYjRmMGY5OTZhNWM1MWRkMjFhNGNmZGNlMGE3MmY4ZDcxNWIxZGYKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvbmVzdGVkLXJlcHJvamVjdGlvbi1p
bmNvbnNpc3RlbnQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOSBAQAorV2hlbiB3ZSBtb2RpZnkg
aG9zdCBjaGlsZHJlbiBhbmQgZ2V0IGRpc3RyaWJ1dGVkIG5vZGVzIGluIG5lc3RlZCBTaGFkb3dE
T00sIGRpc3RyaWJ1dGlvbiBzaG91bGQgb2NjdXIgZnJvbSB0aGUgaG9zdC4KKworUEFTUyBjb250
ZW50LmdldERpc3RyaWJ1dGVkTm9kZXMoKS5sZW5ndGggaXMgMgorUEFTUyBjb250ZW50LmdldERp
c3RyaWJ1dGVkTm9kZXMoKS5pdGVtKDApIGlzIGRpdjEKK1BBU1MgY29udGVudC5nZXREaXN0cmli
dXRlZE5vZGVzKCkuaXRlbSgxKSBpcyBhZGRlZERpdgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL3NoYWRvdy9uZXN0ZWQtcmVwcm9qZWN0aW9uLWluY29uc2lzdGVudC5odG1sIGIvTGF5b3V0
VGVzdHMvZmFzdC9kb20vc2hhZG93L25lc3RlZC1yZXByb2plY3Rpb24taW5jb25zaXN0ZW50Lmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNzEyOTk1OTY1ZWJhNThlYTUyMzg4MWRiNzA0YjA0Mjk4OTM1MjI4Nwot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9uZXN0ZWQtcmVw
cm9qZWN0aW9uLWluY29uc2lzdGVudC5odG1sCkBAIC0wLDAgKzEsMzQgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+PGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKworPHA+V2hlbiB3ZSBtb2RpZnkgaG9zdCBjaGlsZHJlbiBh
bmQgZ2V0IGRpc3RyaWJ1dGVkIG5vZGVzIGluIG5lc3RlZCBTaGFkb3dET00sIGRpc3RyaWJ1dGlv
biBzaG91bGQgb2NjdXIgZnJvbSB0aGUgaG9zdC48L3A+Cis8ZGl2IGlkPSJob3N0Ij48L2Rpdj4K
KzxwcmUgaWQ9ImNvbnNvbGUiPjwvcHJlPgorPHNjcmlwdD4KK2pzVGVzdElzQXN5bmMgPSB0cnVl
OworCit2YXIgc2hhZG93Um9vdDEgPSBob3N0LndlYmtpdENyZWF0ZVNoYWRvd1Jvb3QoKTsKK3No
YWRvd1Jvb3QxLmlubmVySFRNTCA9ICc8ZGl2IGlkPSJkaXYxIj48L2Rpdj4nOwordmFyIGRpdjEg
PSBzaGFkb3dSb290MS5nZXRFbGVtZW50QnlJZCgnZGl2MScpOworCit2YXIgc2hhZG93Um9vdDIg
PSBob3N0LndlYmtpdENyZWF0ZVNoYWRvd1Jvb3QoKTsKK3NoYWRvd1Jvb3QyLmlubmVySFRNTCA9
ICc8ZGl2IGlkPSJkaXYyIj48c2hhZG93Pjwvc2hhZG93PjwvZGl2Pic7Cit2YXIgZGl2MiA9IHNo
YWRvd1Jvb3QyLmdldEVsZW1lbnRCeUlkKCdkaXYyJyk7Cit2YXIgc2hhZG93Um9vdDMgPSBkaXYy
LndlYmtpdENyZWF0ZVNoYWRvd1Jvb3QoKTsKK3NoYWRvd1Jvb3QzLmlubmVySFRNTCA9ICc8Y29u
dGVudCBpZD0iY29udGVudCI+PC9jb250ZW50Pic7Cit2YXIgY29udGVudCA9IHNoYWRvd1Jvb3Qz
LmdldEVsZW1lbnRCeUlkKCdjb250ZW50Jyk7CisKK3NldFRpbWVvdXQoZnVuY3Rpb24oKSB7Cisg
ICAgYWRkZWREaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICBzaGFkb3dS
b290MS5hcHBlbmRDaGlsZChhZGRlZERpdik7CisKKyAgICBzaG91bGRCZSgnY29udGVudC5nZXRE
aXN0cmlidXRlZE5vZGVzKCkubGVuZ3RoJywgJzInKTsKKyAgICBzaG91bGRCZSgnY29udGVudC5n
ZXREaXN0cmlidXRlZE5vZGVzKCkuaXRlbSgwKScsICdkaXYxJyk7CisgICAgc2hvdWxkQmUoJ2Nv
bnRlbnQuZ2V0RGlzdHJpYnV0ZWROb2RlcygpLml0ZW0oMSknLCAnYWRkZWREaXYnKTsKKworICAg
IGZpbmlzaEpTVGVzdCgpOworfSwgMCk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT48L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183121</attachid>
            <date>2013-01-16 22:15:50 -0800</date>
            <delta_ts>2013-01-20 22:00:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106634-20130117151251.patch</filename>
            <type>text/plain</type>
            <size>17207</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5OTQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGQ5MmY5M2M3ZmY0Y2Vh
MjhjMTBlMDQxNzgxZDY2OWZkMmE5Y2U1ZS4uODEyNzQ1ZjMxM2E1ZDQ5YTI1NDU2YTUyMmJlNmUy
ZjIzYzgxMjZlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDEzLTAxLTE1ICBTaGlu
eWEgS2F3YW5ha2EgIDxzaGlueWFrQGNocm9taXVtLm9yZz4KKworICAgICAgICBEaXN0cmlidXRp
b24gc3RhdGUgYmVjb21lcyBpbmNvbnNpc3RlbnQgd2l0aCBjb250ZW50L3NoYWRvdyByZXByb2pl
Y3Rpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEw
NjYzNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERp
c3RyaWJ1dGlvbiBzaG91bGQgYmUgcmVzb2x2ZWQgZnJvbSBzaGFsbG93ZXIgU2hhZG93RE9NIHRv
IGRlZXBlciBTaGFkb3cgRE9NLiBIb3dldmVyLCBpbiB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlv
biwKKyAgICAgICAgdGhlcmUgaXMgYSBjYXNlIHRoYXQgZGlzdHJpYnV0aW9uIGZvciBkZWVwZXIg
U2hhZG93RE9NIGhhcHBlbnMgdG8gYmUgcmVzb2x2ZWQgYmVmb3JlIGRpc3RyaWJ1dGlvbiBmb3Ig
c2hhbGxvd2VyIFNoYWRvd0RPTS4KKworICAgICAgICBIZXJlLCB3ZSBoYXZlIDIgcHJvYmxlbXMg
YWJvdXQgZGlzdHJpYnV0aW9uLgorICAgICAgICAxKSBJbnZhbGlkYXRpb24gc3RhdGUgaXMgbm90
IHByb3BhZ2F0ZWQgdG8gbmVzdGVkICg9IGRlZXBlcikgU2hhZG93RE9NLgorICAgICAgICAgICAg
LSBUaGlzIGNhdXNlcyBuZXN0ZWQgU2hhZG93RE9NIGxvb2tzIGhhdmluZyBhIHZhbGlkIGRpc3Ry
aWJ1dGlvbiB0aG91Z2ggaXQgc2hvdWxkIGJlIGludmFsaWQuCisgICAgICAgIDIpIFdlIGFyZSBu
b3QgcmVzb2x2aW5nIHNoYWxsb3dlciBTaGFkb3dET00gd2hlbiBvbmx5IGRlZXBlciBTaGFkb3dE
T00ncyBkaXN0cmlidXRpb24gaXMgbmVlZGVkLgorICAgICAgICAgICAgLSBCZWNhdXNlIG9mICgx
KSwgd2UgaGF2ZSB0byBjaGVjayBhbGwgdGhlIGFuY2VzdG9yIFNoYWRvd0RPTS4KKworICAgICAg
ICBGb3IgKDEpLCB3ZSBjaGFuZ2UgaW52YWxpZGF0ZURpc3RyaWJ1dGlvbigpIHRvIGludmFsaWRh
dGUgbmVzdGVkIFNoYWRvd0RPTSdzIGRpc3RyaWJ1dGlvbiBhcyB3ZWxsLgorICAgICAgICBGb3Ig
KDIpLCB3aGVuIHJlc29sdmluZyBkaXN0cmlidXRpb24sIHdlIHdpbGwgY2hlY2sgdGhlIGFuY2Vz
dG9yIFNoYWRvd0RPTSdzIGRpc3RyaWJ1dGlvbiBzdGF0ZS4gSWYgdGhlIGFuY2VzdG9yJ3MKKyAg
ICAgICAgZGlzdHJpYnV0aW9uIGlzIG5vdCB2YWxpZCwgd2UgcmVzb2x2ZSBpdCBmaXJzdC4KKwor
ICAgICAgICBGb3Igb3B0aW1pemF0aW9uIG9mICgxKSwgYWN0dWFsbHkgd2UgY2FuIHNraXAgaW52
YWxpZGF0aW5nIGRpc3RyaWJ1dGlvbiBvZiBzb21lIFNoYWRvd0RPTXMuCisgICAgICAgIElmIFNo
YWRvd1Jvb3Qgb2YgZGVlcGVyIFNoYWRvd0RPTSBkb2VzIG5vdCBoYXZlIGFuIEluc2VydGlvblBv
aW50IGFzIGNoaWxkcmVuLCB3ZSBjYW4gc2tpcCBpbnZhbGlkYXRpbmcKKyAgICAgICAgaXRzIGRp
c3RyaWJ1dGlvbiwgYmVjYXVzZSBvbmx5IGNoaWxkcmVuIGNhbiBiZSBkaXN0cmlidXRlZCB0byBJ
bnNlcnRpb25Qb2ludC4KKworICAgICAgICBUZXN0czogZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1
dGlvbi1jcmFzaC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9zaGFkb3cvbmVzdGVkLXJl
cHJvamVjdGlvbi1pbmNvbnNpc3RlbnQuaHRtbAorCisgICAgICAgICogZG9tL0VsZW1lbnRTaGFk
b3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFNoYWRvdzo6YXR0YWNoKTogU2hvdWxk
IHJlc29sdmUgZGlzdHJpYnV0aW9uIGZyb20gYW5jZXN0b3IuCisgICAgICAgICogaHRtbC9zaGFk
b3cvQ29udGVudERpc3RyaWJ1dG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnREaXN0
cmlidXRvcjo6ZGlzdHJpYnV0ZSk6IEFkZGVkIEFTU0VSVCB0aGF0IHRoZSBwYXJlbnQgU2hhZG93
Um9vdCdzIGRpc3RyaWJ1dGlvbiBpcyByZXNvbHZlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRl
bnREaXN0cmlidXRvcjo6ZW5zdXJlRGlzdHJpYnV0aW9uRnJvbUFuY2VzdG9yKToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRlbnREaXN0cmlidXRvcjo6aW52YWxpZGF0ZURpc3RyaWJ1dGlvbik6IEZv
ciBlYWNoIEluc2VydGlvblBvaW50LCB3ZSBoYXZlIHRvIGludmFsaWRhdGUKKyAgICAgICAgaXRz
IHBhcmVudCBlbGVtZW50J3MgZGlzdHJpYnV0aW9uIChpZiBpdCBoYXMgRWxlbWVudFNoYWRvdyku
CisgICAgICAgICogaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmg6CisgICAgICAgIChX
ZWJDb3JlOjpDb250ZW50RGlzdHJpYnV0b3I6OmRpc3RyaWJ1dGlvbklzVmFsaWQpOgorICAgICAg
ICAqIGh0bWwvc2hhZG93L0hUTUxTaGFkb3dFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxTaGFkb3dFbGVtZW50OjpvbGRlclNoYWRvd1Jvb3QpOiBTaG91bGQgcmVzb2x2ZSBkaXN0
cmlidXRpb24gZnJvbSBhbmNlc3Rvci4KKyAgICAgICAgKiBodG1sL3NoYWRvdy9JbnNlcnRpb25Q
b2ludC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNlcnRpb25Qb2ludDo6YXR0YWNoKTogZGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpJbnNlcnRpb25Qb2ludDo6ZGV0YWNoKTogZGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpJbnNlcnRpb25Qb2ludDo6Z2V0RGlzdHJpYnV0ZWROb2Rlcyk6IGRp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6cmVzb2x2ZVJlcHJvamVjdGlvbik6IGRpdHRvLgorCiAy
MDEzLTAxLTE2ICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29tPgogCiAgICAgICAg
IFdlYkNvcmU6OlNjcmlwdFJ1bm5lcjo6dGltZXJGaXJlZCgpIGlzIHJlcG9ydGVkIHRvIGNyYXNo
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRTaGFkb3cuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRTaGFkb3cuY3BwCmluZGV4IDcyMDFkMzI3NTIyMDdhNTVi
N2E3ODA1YTE5Zjg0Yjg0ZWU0ZGFmNmIuLmExNWQwNTUxMDFiMjQ4ZTU3N2Y0ZWU1ZTBkZTM3Zjc2
ZTI0MWQ5ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50U2hhZG93LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFNoYWRvdy5jcHAKQEAgLTEyMiw3ICsx
MjIsOCBAQCB2b2lkIEVsZW1lbnRTaGFkb3c6OnJlbW92ZUFsbFNoYWRvd1Jvb3RzKCkKIAogdm9p
ZCBFbGVtZW50U2hhZG93OjphdHRhY2goKQogewotICAgIGVuc3VyZURpc3RyaWJ1dGlvbigpOwor
ICAgIENvbnRlbnREaXN0cmlidXRvcjo6ZW5zdXJlRGlzdHJpYnV0aW9uRnJvbUFuY2VzdG9yKHlv
dW5nZXN0U2hhZG93Um9vdCgpKTsKKwogICAgIGZvciAoU2hhZG93Um9vdCogcm9vdCA9IHlvdW5n
ZXN0U2hhZG93Um9vdCgpOyByb290OyByb290ID0gcm9vdC0+b2xkZXJTaGFkb3dSb290KCkpIHsK
ICAgICAgICAgaWYgKCFyb290LT5hdHRhY2hlZCgpKQogICAgICAgICAgICAgcm9vdC0+YXR0YWNo
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50RGlzdHJp
YnV0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9y
LmNwcAppbmRleCA4NjdhMTc0NTdiNTI5ZWYwODlkODBiMGZkODgzZTE0YTYyYzdlZTM4Li5hMzVl
Y2E2MTMzNDU4NDUwZWViNmZlMmYwZDA4MjFjZDU1OWFlNmE5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50RGlzdHJpYnV0b3IuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnREaXN0cmlidXRvci5jcHAKQEAgLTIxMyw2ICsyMTMs
NyBAQCB2b2lkIENvbnRlbnREaXN0cmlidXRvcjo6ZGlzdHJpYnV0ZShFbGVtZW50KiBob3N0KQog
ewogICAgIEFTU0VSVChuZWVkc0Rpc3RyaWJ1dGlvbigpKTsKICAgICBBU1NFUlQobV9ub2RlVG9J
bnNlcnRpb25Qb2ludC5pc0VtcHR5KCkpOworICAgIEFTU0VSVCghaG9zdC0+Y29udGFpbmluZ1No
YWRvd1Jvb3QoKSB8fCBob3N0LT5jb250YWluaW5nU2hhZG93Um9vdCgpLT5vd25lcigpLT5kaXN0
cmlidXRvcigpLmRpc3RyaWJ1dGlvbklzVmFsaWQoKSk7CiAKICAgICBtX3ZhbGlkaXR5ID0gVmFs
aWQ7CiAKQEAgLTM0NSwxOCArMzQ2LDIzIEBAIHZvaWQgQ29udGVudERpc3RyaWJ1dG9yOjplbnN1
cmVEaXN0cmlidXRpb24oRWxlbWVudCogaG9zdCkKICAgICBkaXN0cmlidXRlKGhvc3QpOwogfQog
Ci12b2lkIENvbnRlbnREaXN0cmlidXRvcjo6ZW5zdXJlRGlzdHJpYnV0aW9uRnJvbURvY3VtZW50
KEVsZW1lbnQqIHNvdXJjZSkKK3ZvaWQgQ29udGVudERpc3RyaWJ1dG9yOjplbnN1cmVEaXN0cmli
dXRpb25Gcm9tQW5jZXN0b3IoTm9kZSogc291cmNlKQogewogICAgIENvbnRhaW5lck5vZGUqIG1h
eVNoYWRvdyA9IHNvdXJjZS0+dHJlZVNjb3BlKCktPnJvb3ROb2RlKCk7CiAgICAgaWYgKCFtYXlT
aGFkb3ctPmlzU2hhZG93Um9vdCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBWZWN0b3I8RWxl
bWVudCosIDg+IGhvc3RzOwotICAgIGZvciAoRWxlbWVudCogY3VycmVudCA9IHRvU2hhZG93Um9v
dChtYXlTaGFkb3cpLT5ob3N0KCk7IGN1cnJlbnQ7IGN1cnJlbnQgPSBjdXJyZW50LT5zaGFkb3dI
b3N0KCkpCi0gICAgICAgIGhvc3RzLmFwcGVuZChjdXJyZW50KTsKKyAgICBWZWN0b3I8RWxlbWVu
dFNoYWRvdyosIDg+IGVsZW1lbnRTaGFkb3dzOworICAgIGZvciAoRWxlbWVudCogY3VycmVudCA9
IHRvU2hhZG93Um9vdChtYXlTaGFkb3cpLT5ob3N0KCk7IGN1cnJlbnQ7IGN1cnJlbnQgPSBjdXJy
ZW50LT5zaGFkb3dIb3N0KCkpIHsKKyAgICAgICAgRWxlbWVudFNoYWRvdyogZWxlbWVudFNoYWRv
dyA9IGN1cnJlbnQtPnNoYWRvdygpOworICAgICAgICBpZiAoIWVsZW1lbnRTaGFkb3ctPmRpc3Ry
aWJ1dG9yKCkubmVlZHNEaXN0cmlidXRpb24oKSkKKyAgICAgICAgICAgIGJyZWFrOworCisgICAg
ICAgIGVsZW1lbnRTaGFkb3dzLmFwcGVuZChlbGVtZW50U2hhZG93KTsKKyAgICB9CiAKLSAgICBm
b3IgKHNpemVfdCBpID0gaG9zdHMuc2l6ZSgpOyBpID4gMDsgLS1pKQotICAgICAgICBob3N0c1tp
IC0gMV0tPnNoYWRvdygpLT5lbnN1cmVEaXN0cmlidXRpb24oKTsKKyAgICBmb3IgKHNpemVfdCBp
ID0gZWxlbWVudFNoYWRvd3Muc2l6ZSgpOyBpID4gMDsgLS1pKQorICAgICAgICBlbGVtZW50U2hh
ZG93c1tpIC0gMV0tPmVuc3VyZURpc3RyaWJ1dGlvbigpOwogfQogCiAKQEAgLTM2OSw2ICszNzUs
MTkgQEAgdm9pZCBDb250ZW50RGlzdHJpYnV0b3I6OmludmFsaWRhdGVEaXN0cmlidXRpb24oRWxl
bWVudCogaG9zdCkKICAgICAgICAgZm9yIChOb2RlKiBuID0gaG9zdC0+Zmlyc3RDaGlsZCgpOyBu
OyBuID0gbi0+bmV4dFNpYmxpbmcoKSkKICAgICAgICAgICAgIG4tPmxhenlSZWF0dGFjaCgpOwog
ICAgICAgICBob3N0LT5zZXROZWVkc1N0eWxlUmVjYWxjKCk7CisKKyAgICAgICAgZm9yIChTaGFk
b3dSb290KiBzaGFkb3dSb290ID0gaG9zdC0+c2hhZG93Um9vdCgpOyBzaGFkb3dSb290OyBzaGFk
b3dSb290ID0gc2hhZG93Um9vdC0+b2xkZXJTaGFkb3dSb290KCkpIHsKKyAgICAgICAgICAgIGNv
bnN0IFZlY3RvcjxSZWZQdHI8SW5zZXJ0aW9uUG9pbnQ+ID4mIGluc2VydGlvblBvaW50cyA9IHNo
YWRvd1Jvb3QtPmVuc3VyZVNjb3BlRGlzdHJpYnV0aW9uKCktPmVuc3VyZUluc2VydGlvblBvaW50
TGlzdChzaGFkb3dSb290KTsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaW5z
ZXJ0aW9uUG9pbnRzLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICAgICAgaWYgKCFpbnNlcnRp
b25Qb2ludHNbaV0tPmlzQWN0aXZlKCkpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGlmIChFbGVtZW50KiBwYXJlbnQgPSBp
bnNlcnRpb25Qb2ludHNbaV0tPnBhcmVudEVsZW1lbnQoKSkgeworICAgICAgICAgICAgICAgICAg
ICBpZiAoRWxlbWVudFNoYWRvdyogc2hhZG93ID0gcGFyZW50LT5zaGFkb3coKSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHNoYWRvdy0+aW52YWxpZGF0ZURpc3RyaWJ1dGlvbigpOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgIH0KIAogICAgIGlmIChk
aWROZWVkSW52YWxpZGF0aW9uKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9Db250ZW50RGlzdHJpYnV0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0Nv
bnRlbnREaXN0cmlidXRvci5oCmluZGV4IDQ2MGQ0MTM1ZDk5MGU4ZmY2OTY3NTdkNTYyYTBiMGIx
M2VmNzM2ODIuLjZlMjU3YjViMTM2NDU0NmQ0N2JjNTZjNGMxN2NiMGY3ZTY0YmQ3NGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnREaXN0cmlidXRvci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnREaXN0cmlidXRvci5oCkBAIC0x
MzQsNyArMTM0LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkQWZmZWN0U2VsZWN0b3IoRWxlbWVu
dCogaG9zdCwgQWZmZWN0ZWRTZWxlY3Rvck1hc2spOwogICAgIHZvaWQgd2lsbEFmZmVjdFNlbGVj
dG9yKEVsZW1lbnQqIGhvc3QpOwogCi0gICAgc3RhdGljIHZvaWQgZW5zdXJlRGlzdHJpYnV0aW9u
RnJvbURvY3VtZW50KEVsZW1lbnQqIHNvdXJjZSk7CisgICAgc3RhdGljIHZvaWQgZW5zdXJlRGlz
dHJpYnV0aW9uRnJvbUFuY2VzdG9yKE5vZGUqIHNvdXJjZSk7CiAKIHByaXZhdGU6CiAgICAgdm9p
ZCBkaXN0cmlidXRlKEVsZW1lbnQqIGhvc3QpOwpAQCAtMTQ2LDYgKzE0Niw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBzZXROZWVkc1NlbGVjdEZlYXR1cmVTZXQoKSB7IG1fbmVlZHNTZWxlY3RGZWF0
dXJlU2V0ID0gdHJ1ZTsgfQogCiAgICAgdm9pZCBzZXRWYWxpZGl0eShWYWxpZGl0eSB2YWxpZGl0
eSkgeyBtX3ZhbGlkaXR5ID0gdmFsaWRpdHk7IH0KKyAgICBib29sIGRpc3RyaWJ1dGlvbklzVmFs
aWQoKSBjb25zdCB7IHJldHVybiBtX3ZhbGlkaXR5ID09IFZhbGlkOyB9CiAgICAgYm9vbCBuZWVk
c0Rpc3RyaWJ1dGlvbigpIGNvbnN0OwogICAgIGJvb2wgbmVlZHNJbnZhbGlkYXRpb24oKSBjb25z
dCB7IHJldHVybiBtX3ZhbGlkaXR5ICE9IEludmFsaWRhdGVkOyB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxTaGFkb3dFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxTaGFkb3dFbGVtZW50LmNwcAppbmRleCA2Mzc0ZGM3ZGNh
NDJlN2M0NzFhN2IzYjI1N2JiOThiZDQwODI0M2YzLi42NTdiYTkxYjU5NGY3OTM1MmMzYjcxMDA3
NmI0N2E0ODA0MjdmMDdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9I
VE1MU2hhZG93RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRN
TFNoYWRvd0VsZW1lbnQuY3BwCkBAIC02MSw3ICs2MSw3IEBAIFNoYWRvd1Jvb3QqIEhUTUxTaGFk
b3dFbGVtZW50OjpvbGRlclNoYWRvd1Jvb3QoKQogICAgIGlmICghdHJlZVNjb3BlKCktPnJvb3RO
b2RlKCktPmlzU2hhZG93Um9vdCgpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIENvbnRlbnRE
aXN0cmlidXRvcjo6ZW5zdXJlRGlzdHJpYnV0aW9uRnJvbURvY3VtZW50KHRoaXMpOworICAgIENv
bnRlbnREaXN0cmlidXRvcjo6ZW5zdXJlRGlzdHJpYnV0aW9uRnJvbUFuY2VzdG9yKHRoaXMpOwog
CiAgICAgU2hhZG93Um9vdCogb2xkZXIgPSB0b1NoYWRvd1Jvb3QodHJlZVNjb3BlKCktPnJvb3RO
b2RlKCkpLT5vbGRlclNoYWRvd1Jvb3QoKTsKICAgICBpZiAoIW9sZGVyIHx8IG9sZGVyLT50eXBl
KCkgIT0gU2hhZG93Um9vdDo6QXV0aG9yU2hhZG93Um9vdCB8fCBTY29wZUNvbnRlbnREaXN0cmli
dXRpb246OmFzc2lnbmVkVG8ob2xkZXIpICE9IHRoaXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9JbnNlcnRpb25Qb2ludC5jcHAKaW5kZXggOTZmYjI1MDBmMjBhYzdhZmM5M2M4YWU4
ZTVmMmVjMjdiZWM3ZWRlZS4uYjFkZjNlMzA2N2E1NmEwZjFmOWE5ODUyYjAxODcyY2JlYmNmZjQ4
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmNwcApA
QCAtNTMsOCArNTMsNyBAQCBJbnNlcnRpb25Qb2ludDo6fkluc2VydGlvblBvaW50KCkKIAogdm9p
ZCBJbnNlcnRpb25Qb2ludDo6YXR0YWNoKCkKIHsKLSAgICBpZiAoU2hhZG93Um9vdCogcm9vdCA9
IGNvbnRhaW5pbmdTaGFkb3dSb290KCkpCi0gICAgICAgIHJvb3QtPm93bmVyKCktPmVuc3VyZURp
c3RyaWJ1dGlvbigpOworICAgIENvbnRlbnREaXN0cmlidXRvcjo6ZW5zdXJlRGlzdHJpYnV0aW9u
RnJvbUFuY2VzdG9yKHRoaXMpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9kaXN0cmli
dXRpb24uc2l6ZSgpOyArK2kpIHsKICAgICAgICAgaWYgKCFtX2Rpc3RyaWJ1dGlvbi5hdChpKS0+
YXR0YWNoZWQoKSkKICAgICAgICAgICAgIG1fZGlzdHJpYnV0aW9uLmF0KGkpLT5hdHRhY2goKTsK
QEAgLTY1LDggKzY0LDcgQEAgdm9pZCBJbnNlcnRpb25Qb2ludDo6YXR0YWNoKCkKIAogdm9pZCBJ
bnNlcnRpb25Qb2ludDo6ZGV0YWNoKCkKIHsKLSAgICBpZiAoU2hhZG93Um9vdCogcm9vdCA9IGNv
bnRhaW5pbmdTaGFkb3dSb290KCkpCi0gICAgICAgIHJvb3QtPm93bmVyKCktPmVuc3VyZURpc3Ry
aWJ1dGlvbigpOworICAgIENvbnRlbnREaXN0cmlidXRvcjo6ZW5zdXJlRGlzdHJpYnV0aW9uRnJv
bUFuY2VzdG9yKHRoaXMpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9kaXN0cmlidXRp
b24uc2l6ZSgpOyArK2kpCiAgICAgICAgIG1fZGlzdHJpYnV0aW9uLmF0KGkpLT5kZXRhY2goKTsK
IApAQCAtOTksNyArOTcsNyBAQCBib29sIEluc2VydGlvblBvaW50Ojppc0FjdGl2ZSgpIGNvbnN0
CiAKIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IEluc2VydGlvblBvaW50OjpnZXREaXN0cmlidXRlZE5v
ZGVzKCkgY29uc3QKIHsKLSAgICBDb250ZW50RGlzdHJpYnV0b3I6OmVuc3VyZURpc3RyaWJ1dGlv
bkZyb21Eb2N1bWVudChjb25zdF9jYXN0PEluc2VydGlvblBvaW50Kj4odGhpcykpOworICAgIENv
bnRlbnREaXN0cmlidXRvcjo6ZW5zdXJlRGlzdHJpYnV0aW9uRnJvbUFuY2VzdG9yKGNvbnN0X2Nh
c3Q8SW5zZXJ0aW9uUG9pbnQqPih0aGlzKSk7CiAKICAgICBWZWN0b3I8UmVmUHRyPE5vZGU+ID4g
bm9kZXM7CiAKQEAgLTIwNCw3ICsyMDIsNyBAQCBJbnNlcnRpb25Qb2ludCogcmVzb2x2ZVJlcHJv
amVjdGlvbihjb25zdCBOb2RlKiBwcm9qZWN0ZWROb2RlKQogCiAgICAgd2hpbGUgKGN1cnJlbnQp
IHsKICAgICAgICAgaWYgKEVsZW1lbnRTaGFkb3cqIHNoYWRvdyA9IHNoYWRvd09mUGFyZW50Rm9y
RGlzdHJpYnV0aW9uKGN1cnJlbnQpKSB7Ci0gICAgICAgICAgICBzaGFkb3ctPmVuc3VyZURpc3Ry
aWJ1dGlvbigpOworICAgICAgICAgICAgQ29udGVudERpc3RyaWJ1dG9yOjplbnN1cmVEaXN0cmli
dXRpb25Gcm9tQW5jZXN0b3IoY29uc3RfY2FzdDxOb2RlKj4oY3VycmVudCkpOwogICAgICAgICAg
ICAgaWYgKEluc2VydGlvblBvaW50KiBpbnNlcnRlZFRvID0gc2hhZG93LT5kaXN0cmlidXRvcigp
LmZpbmRJbnNlcnRpb25Qb2ludEZvcihwcm9qZWN0ZWROb2RlKSkgewogICAgICAgICAgICAgICAg
IGN1cnJlbnQgPSBpbnNlcnRlZFRvOwogICAgICAgICAgICAgICAgIGluc2VydGlvblBvaW50ID0g
aW5zZXJ0ZWRUbzsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwppbmRleCA1YjY4ZDJlOTBiNTBmMjBlNDE4ZmJlOGYxYzAzODE0ZDIwOTE5
YTcyLi4yOWQ2ZDU2MTdkMWFkZWIyY2Q5N2VhZDJkZGNkMmUxN2YyZThkNzI3IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTUgQEAKKzIwMTMtMDEtMTUgIFNoaW55YSBLYXdhbmFrYSAgPHNoaW55YWtAY2hyb21p
dW0ub3JnPgorCisgICAgICAgIERpc3RyaWJ1dGlvbiBzdGF0ZSBiZWNvbWVzIGluY29uc2lzdGVu
dCB3aXRoIGNvbnRlbnQvc2hhZG93IHJlcHJvamVjdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA2NjM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0aW9u
LWNyYXNoLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L2Rp
c3RyaWJ1dGlvbi1jcmFzaC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cv
bmVzdGVkLXJlcHJvamVjdGlvbi1pbmNvbnNpc3RlbnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvbmVzdGVkLXJlcHJvamVjdGlvbi1pbmNvbnNpc3RlbnQu
aHRtbDogQWRkZWQuCisKIDIwMTMtMDEtMTYgIFZpY3RvciBDYXJidW5lICA8dmNhcmJ1bmVAY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIEN1ZXMgbm90IHJlbmRlcmVkIHdoZW4gdGhleSBzaG91bGQg
YmUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRpb24t
Y3Jhc2gtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1
dGlvbi1jcmFzaC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWRmOGM5YzRkNDJiYWMxZDM5NDMy
MzQ4MzViYjU1ZWQ2NDI1NmRhMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL3NoYWRvdy9kaXN0cmlidXRpb24tY3Jhc2gtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOCBA
QAorV2hlbiBtb2RpZnlpbmcgSW5zZXJ0aW9uUG9pbnQncyBjaGlsZCwgZGlzdHJpYnV0aW9uIHNo
b3VsZCBub3QgY2F1c2UgY3Jhc2guCisKK1BBU1MgdW5sZXNzIGNyYXNoLgorCitQQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGlvbi1jcmFzaC5odG1sIGIvTGF5b3V0
VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGlvbi1jcmFzaC5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjQyYjRhZDYxODIyNGQxMTM4YzBmMThmZDhlMGEwODY1ZmE1N2NiMzYKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0aW9uLWNyYXNoLmh0bWwK
QEAgLTAsMCArMSw0NCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD48Ym9keT4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorCis8cD5X
aGVuIG1vZGlmeWluZyBJbnNlcnRpb25Qb2ludCdzIGNoaWxkLCBkaXN0cmlidXRpb24gc2hvdWxk
IG5vdCBjYXVzZSBjcmFzaC48L3A+Cis8cD5QQVNTIHVubGVzcyBjcmFzaC48L3A+CisKKzxkaXYg
aWQ9Imhvc3QiPjwvZGl2PgorPHByZSBpZD0iY29uc29sZSI+PC9wcmU+CisKKzxzY3JpcHQ+Citq
c1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworZnVuY3Rpb24gY3JlYXRlRWxlbWVudExpa2VEZXRhaWxz
KCkKK3sKKyAgICB2YXIgZGV0YWlscyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwor
ICAgIHZhciBzaGFkb3dSb290ID0gZGV0YWlscy53ZWJraXRDcmVhdGVTaGFkb3dSb290KCk7CisK
KyAgICBzaGFkb3dSb290LmlubmVySFRNTCA9ICc8Y29udGVudCBzZWxlY3Q9ImRpdi5zdW1tYXJ5
Ij48L2NvbnRlbnQ+PGNvbnRlbnQ+PC9jb250ZW50Pic7CisKKyAgICB2YXIgZGVmYXVsdFN1bW1h
cnkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICBkZWZhdWx0U3VtbWFyeS53
ZWJraXRDcmVhdGVTaGFkb3dSb290KCkuaW5uZXJIVE1MID0gJ0RlZmF1bHQgU3VtbWFyeSc7Cisg
ICAgc2hhZG93Um9vdC5maXJzdENoaWxkLmFwcGVuZENoaWxkKGRlZmF1bHRTdW1tYXJ5KTsKKwor
ICAgIHJldHVybiBkZXRhaWxzOyAgICAKK30KKwordmFyIHNoYWRvd1Jvb3QxID0gaG9zdC53ZWJr
aXRDcmVhdGVTaGFkb3dSb290KCk7CitzaGFkb3dSb290MS5pbm5lckhUTUwgPSAnc29tZXRoaW5n
IDEnOworCit2YXIgc2hhZG93Um9vdDIgPSBob3N0LndlYmtpdENyZWF0ZVNoYWRvd1Jvb3QoKTsK
K3ZhciBkZXRhaWxzID0gY3JlYXRlRWxlbWVudExpa2VEZXRhaWxzKCk7CitkZXRhaWxzLmlubmVy
SFRNTCA9ICc8c2hhZG93IGlkPSJzaGFkb3ciPnNvbWV0aGluZyAyPC9zaGFkb3c+JzsKK3NoYWRv
d1Jvb3QyLmFwcGVuZENoaWxkKGRldGFpbHMpOworCit2YXIgc2hhZG93ID0gZGV0YWlscy5maXJz
dENoaWxkOworc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICBzaGFkb3cuZmlyc3RDaGlsZC5y
ZW1vdmUoKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30sIDApOworPC9zY3JpcHQ+CisKKzxzY3Jp
cHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwv
Ym9keT48L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvbmVz
dGVkLXJlcHJvamVjdGlvbi1pbmNvbnNpc3RlbnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vc2hhZG93L25lc3RlZC1yZXByb2plY3Rpb24taW5jb25zaXN0ZW50LWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi43ZjlhNDRlYmYwOTY4YmQ2ZmEwN2EyN2FhYzA1ZGZhZmVlZTMyNWFi
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L25lc3RlZC1y
ZXByb2plY3Rpb24taW5jb25zaXN0ZW50LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDI2IEBACitX
aGVuIHdlIG1vZGlmeSBob3N0IGNoaWxkcmVuIGFuZCBnZXQgZGlzdHJpYnV0ZWQgbm9kZXMgaW4g
bmVzdGVkIFNoYWRvd0RPTSwgZGlzdHJpYnV0aW9uIHNob3VsZCBvY2N1ciBmcm9tIHRoZSBob3N0
LgorCitBZGRzIGEgZGl2IHRvIFNoYWRvd1Jvb3QuCitQQVNTIGNvbnRlbnQuZ2V0RGlzdHJpYnV0
ZWROb2RlcygpLmxlbmd0aCBpcyAyCitQQVNTIGNvbnRlbnQuZ2V0RGlzdHJpYnV0ZWROb2Rlcygp
Lml0ZW0oMCkgaXMgZGl2MQorUEFTUyBjb250ZW50LmdldERpc3RyaWJ1dGVkTm9kZXMoKS5pdGVt
KDEpIGlzIGFkZGVkRGl2CisKK0FkZHMgYSBkaXYgYXMgZmFsbGJhY2sgY29udGVudAorUEFTUyBj
b250ZW50LmdldERpc3RyaWJ1dGVkTm9kZXMoKS5sZW5ndGggaXMgMworUEFTUyBjb250ZW50Lmdl
dERpc3RyaWJ1dGVkTm9kZXMoKS5pdGVtKDApIGlzIGRpdjEKK1BBU1MgY29udGVudC5nZXREaXN0
cmlidXRlZE5vZGVzKCkuaXRlbSgxKSBpcyBhbm90aGVyQWRkZWREaXYKK1BBU1MgY29udGVudC5n
ZXREaXN0cmlidXRlZE5vZGVzKCkuaXRlbSgyKSBpcyBhZGRlZERpdgorCitSZW1vdmVzIHRoZSBm
aXJzdCBhZGRlZCBkaXYKK1BBU1MgY29udGVudC5nZXREaXN0cmlidXRlZE5vZGVzKCkubGVuZ3Ro
IGlzIDIKK1BBU1MgY29udGVudC5nZXREaXN0cmlidXRlZE5vZGVzKCkuaXRlbSgwKSBpcyBkaXYx
CitQQVNTIGNvbnRlbnQuZ2V0RGlzdHJpYnV0ZWROb2RlcygpLml0ZW0oMSkgaXMgYW5vdGhlckFk
ZGVkRGl2CisKK1JlbW92ZXMgdGhlIHNlY29uZCBhZGRlZCBkaXYKK1BBU1MgY29udGVudC5nZXRE
aXN0cmlidXRlZE5vZGVzKCkubGVuZ3RoIGlzIDEKK1BBU1MgY29udGVudC5nZXREaXN0cmlidXRl
ZE5vZGVzKCkuaXRlbSgwKSBpcyBkaXYxCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9z
aGFkb3cvbmVzdGVkLXJlcHJvamVjdGlvbi1pbmNvbnNpc3RlbnQuaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL3NoYWRvdy9uZXN0ZWQtcmVwcm9qZWN0aW9uLWluY29uc2lzdGVudC5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjI3MTE4NGU1YzBkMDQ0MDA5MDYzZTRjMmFjYTEzMzA2ZjllMTgzZDIKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvbmVzdGVkLXJlcHJvamVj
dGlvbi1pbmNvbnNpc3RlbnQuaHRtbApAQCAtMCwwICsxLDczIEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPjxib2R5PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+CisKKzxwPldoZW4gd2UgbW9kaWZ5IGhvc3QgY2hpbGRyZW4gYW5kIGdl
dCBkaXN0cmlidXRlZCBub2RlcyBpbiBuZXN0ZWQgU2hhZG93RE9NLCBkaXN0cmlidXRpb24gc2hv
dWxkIG9jY3VyIGZyb20gdGhlIGhvc3QuPC9wPgorCis8ZGl2IGlkPSJjb250YWluZXIiPgorICAg
IDxkaXYgaWQ9Imhvc3QxIj48L2Rpdj4KKzwvZGl2PgorPHByZSBpZD0iY29uc29sZSI+PC9wcmU+
CisKKzxzY3JpcHQ+Citqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKwordmFyIHNoYWRvd1Jvb3QxMSA9
IGhvc3QxLndlYmtpdENyZWF0ZVNoYWRvd1Jvb3QoKTsKK3NoYWRvd1Jvb3QxMS5pbm5lckhUTUwg
PSAnPGRpdj48L2Rpdj48c2hhZG93Pjwvc2hhZG93Pic7Cit2YXIgZGl2MSA9IHNoYWRvd1Jvb3Qx
MS5maXJzdENoaWxkOwordmFyIHNoYWRvdzEgPSBzaGFkb3dSb290MTEubGFzdENoaWxkOworCit2
YXIgc2hhZG93Um9vdDEyID0gaG9zdDEud2Via2l0Q3JlYXRlU2hhZG93Um9vdCgpOworc2hhZG93
Um9vdDEyLmlubmVySFRNTCA9ICc8ZGl2PjxzaGFkb3c+PC9zaGFkb3c+PC9kaXY+JzsKK3ZhciBo
b3N0MiA9IHNoYWRvd1Jvb3QxMi5maXJzdENoaWxkOworCit2YXIgc2hhZG93Um9vdDIxID0gaG9z
dDIud2Via2l0Q3JlYXRlU2hhZG93Um9vdCgpOworc2hhZG93Um9vdDIxLmlubmVySFRNTCA9ICc8
Y29udGVudD48L2NvbnRlbnQ+JzsKKwordmFyIHNoYWRvd1Jvb3QyMiA9IGhvc3QyLndlYmtpdENy
ZWF0ZVNoYWRvd1Jvb3QoKTsKK3NoYWRvd1Jvb3QyMi5pbm5lckhUTUwgPSAnPGRpdj48c2hhZG93
Pjwvc2hhZG93PjwvZGl2Pic7Cit2YXIgaG9zdDMgPSBzaGFkb3dSb290MjIuZmlyc3RDaGlsZDsK
KwordmFyIHNoYWRvd1Jvb3QzMSA9IGhvc3QzLndlYmtpdENyZWF0ZVNoYWRvd1Jvb3QoKTsKK3No
YWRvd1Jvb3QzMS5pbm5lckhUTUwgPSAnPGNvbnRlbnQ+PC9jb250ZW50Pic7CisKK3ZhciBjb250
ZW50ID0gc2hhZG93Um9vdDMxLmZpcnN0Q2hpbGQ7CisKK3NldFRpbWVvdXQoZnVuY3Rpb24oKSB7
CisgICAgZGVidWcoJ0FkZHMgYSBkaXYgdG8gU2hhZG93Um9vdC4nKTsKKyAgICBhZGRlZERpdiA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHNoYWRvd1Jvb3QxMS5hcHBlbmRD
aGlsZChhZGRlZERpdik7CisgICAgc2hvdWxkQmUoJ2NvbnRlbnQuZ2V0RGlzdHJpYnV0ZWROb2Rl
cygpLmxlbmd0aCcsICcyJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRlbnQuZ2V0RGlzdHJpYnV0ZWRO
b2RlcygpLml0ZW0oMCknLCAnZGl2MScpOworICAgIHNob3VsZEJlKCdjb250ZW50LmdldERpc3Ry
aWJ1dGVkTm9kZXMoKS5pdGVtKDEpJywgJ2FkZGVkRGl2Jyk7CisgICAgZGVidWcoJycpOworCisK
KyAgICBkZWJ1ZygnQWRkcyBhIGRpdiBhcyBmYWxsYmFjayBjb250ZW50Jyk7CisgICAgYW5vdGhl
ckFkZGVkRGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgc2hhZG93MS5h
cHBlbmRDaGlsZChhbm90aGVyQWRkZWREaXYpOworICAgIHNob3VsZEJlKCdjb250ZW50LmdldERp
c3RyaWJ1dGVkTm9kZXMoKS5sZW5ndGgnLCAnMycpOworICAgIHNob3VsZEJlKCdjb250ZW50Lmdl
dERpc3RyaWJ1dGVkTm9kZXMoKS5pdGVtKDApJywgJ2RpdjEnKTsKKyAgICBzaG91bGRCZSgnY29u
dGVudC5nZXREaXN0cmlidXRlZE5vZGVzKCkuaXRlbSgxKScsICdhbm90aGVyQWRkZWREaXYnKTsK
KyAgICBzaG91bGRCZSgnY29udGVudC5nZXREaXN0cmlidXRlZE5vZGVzKCkuaXRlbSgyKScsICdh
ZGRlZERpdicpOworICAgIGRlYnVnKCcnKTsKKworICAgIGRlYnVnKCdSZW1vdmVzIHRoZSBmaXJz
dCBhZGRlZCBkaXYnKTsKKyAgICBhZGRlZERpdi5yZW1vdmUoKTsKKyAgICBzaG91bGRCZSgnY29u
dGVudC5nZXREaXN0cmlidXRlZE5vZGVzKCkubGVuZ3RoJywgJzInKTsKKyAgICBzaG91bGRCZSgn
Y29udGVudC5nZXREaXN0cmlidXRlZE5vZGVzKCkuaXRlbSgwKScsICdkaXYxJyk7CisgICAgc2hv
dWxkQmUoJ2NvbnRlbnQuZ2V0RGlzdHJpYnV0ZWROb2RlcygpLml0ZW0oMSknLCAnYW5vdGhlckFk
ZGVkRGl2Jyk7CisgICAgZGVidWcoJycpOworCisgICAgZGVidWcoJ1JlbW92ZXMgdGhlIHNlY29u
ZCBhZGRlZCBkaXYnKTsKKyAgICBhbm90aGVyQWRkZWREaXYucmVtb3ZlKCk7CisgICAgc2hvdWxk
QmUoJ2NvbnRlbnQuZ2V0RGlzdHJpYnV0ZWROb2RlcygpLmxlbmd0aCcsICcxJyk7CisgICAgc2hv
dWxkQmUoJ2NvbnRlbnQuZ2V0RGlzdHJpYnV0ZWROb2RlcygpLml0ZW0oMCknLCAnZGl2MScpOwor
ICAgIGRlYnVnKCcnKTsKKworICAgIGNvbnRhaW5lci5pbm5lckhUTUwgPSAiIjsKKyAgICBmaW5p
c2hKU1Rlc3QoKTsKK30sIDApOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVz
b3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+PC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183710</attachid>
            <date>2013-01-20 22:00:08 -0800</date>
            <delta_ts>2013-01-20 23:01:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106634-20130121145704.patch</filename>
            <type>text/plain</type>
            <size>18617</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQwMjkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDk2MmQxY2Q4MDk1MmY3
Yzc3YjAyOTNkY2U4NzI4ZmU4NmZmOGE5MS4uMDY3YTdiZGYzOGRjMWNiZjUzZDIzMDc2OGE3YmU5
NDNhZTM2ZTFmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDEzLTAxLTIwICBTaGlu
eWEgS2F3YW5ha2EgIDxzaGlueWFrQGNocm9taXVtLm9yZz4KKworICAgICAgICBEaXN0cmlidXRp
b24gc3RhdGUgYmVjb21lcyBpbmNvbnNpc3RlbnQgd2l0aCBjb250ZW50L3NoYWRvdyByZXByb2pl
Y3Rpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEw
NjYzNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERp
c3RyaWJ1dGlvbiBzaG91bGQgYmUgcmVzb2x2ZWQgZnJvbSBzaGFsbG93ZXIgU2hhZG93RE9NIHRv
IGRlZXBlciBTaGFkb3cgRE9NLiBIb3dldmVyLCBpbiB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlv
biwKKyAgICAgICAgdGhlcmUgaXMgYSBjYXNlIHRoYXQgZGlzdHJpYnV0aW9uIGZvciBkZWVwZXIg
U2hhZG93RE9NIGhhcHBlbnMgdG8gYmUgcmVzb2x2ZWQgYmVmb3JlIGRpc3RyaWJ1dGlvbgorICAg
ICAgICBmb3Igc2hhbGxvd2VyIFNoYWRvd0RPTSBpcyByZXNvbHZlZC4KKworICAgICAgICBIZXJl
LCB3ZSBoYXZlIDIgcHJvYmxlbXMgYWJvdXQgZGlzdHJpYnV0aW9uLgorICAgICAgICAxKSBJbnZh
bGlkYXRpb24gc3RhdGUgaXMgbm90IHByb3BhZ2F0ZWQgdG8gbmVzdGVkICg9IGRlZXBlcikgU2hh
ZG93RE9NLgorICAgICAgICAgICAgLSBUaGlzIGNhdXNlcyBkZWVwZXIgU2hhZG93RE9NIGxvb2tz
IGhhdmluZyBhIHZhbGlkIGRpc3RyaWJ1dGlvbiB0aG91Z2ggaXQgc2hvdWxkIGJlIGludmFsaWQu
CisgICAgICAgIDIpIFdlIGFyZSBub3QgcmVzb2x2aW5nIHNoYWxsb3dlciBTaGFkb3dET00gd2hl
biBkZWVwZXIgU2hhZG93RE9NJ3MgZGlzdHJpYnV0aW9uIGlzIG5lZWRlZC4KKyAgICAgICAgICAg
IC0gQmVjYXVzZSBvZiAoMSksIHdlIGhhdmUgdG8gY2hlY2sgYWxsIHRoZSBhbmNlc3RvciBTaGFk
b3dET00uCisKKyAgICAgICAgRm9yICgxKSwgd2UgY2hhbmdlIGludmFsaWRhdGUoKSB0byBpbnZh
bGlkYXRlIG5lc3RlZCBTaGFkb3dET00ncyBkaXN0cmlidXRpb24gYXMgd2VsbC4KKyAgICAgICAg
Rm9yICgyKSwgd2hlbiByZXNvbHZpbmcgZGlzdHJpYnV0aW9uLCB3ZSB3aWxsIGNoZWNrIHRoZSBh
bmNlc3RvciBTaGFkb3dET00ncyBkaXN0cmlidXRpb24gc3RhdGUuIElmIHRoZSBhbmNlc3Rvcidz
CisgICAgICAgIGRpc3RyaWJ1dGlvbiBpcyBub3QgdmFsaWQsIHdlIHJlc29sdmUgaXQgZmlyc3Qu
CisKKyAgICAgICAgRm9yIG9wdGltaXphdGlvbiBvZiAoMSksIGFjdHVhbGx5IHdlIGNhbiBza2lw
IGludmFsaWRhdGluZyBkaXN0cmlidXRpb24gb2Ygc29tZSBTaGFkb3dET01zLgorICAgICAgICBJ
ZiBTaGFkb3dSb290IG9mIGRlZXBlciBTaGFkb3dET00gZG9lcyBub3QgaGF2ZSBhbiBJbnNlcnRp
b25Qb2ludCBhcyBjaGlsZHJlbiwgd2UgY2FuIHNraXAgaW52YWxpZGF0aW5nCisgICAgICAgIGl0
cyBkaXN0cmlidXRpb24sIGJlY2F1c2Ugb25seSBjaGlsZHJlbiBjYW4gYmUgZGlzdHJpYnV0ZWQg
dG8gSW5zZXJ0aW9uUG9pbnQuCisKKyAgICAgICAgVGVzdHM6IGZhc3QvZG9tL3NoYWRvdy9kaXN0
cmlidXRpb24tY3Jhc2guaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vc2hhZG93L25lc3Rl
ZC1yZXByb2plY3Rpb24taW5jb25zaXN0ZW50Lmh0bWwKKworICAgICAgICAqIGRvbS9FbGVtZW50
U2hhZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRTaGFkb3c6OmF0dGFjaCk6IFNo
b3VsZCByZXNvbHZlIGRpc3RyaWJ1dGlvbiBmcm9tIGFuY2VzdG9yLgorICAgICAgICAqIGRvbS9F
bGVtZW50U2hhZG93Lmg6CisgICAgICAgICogaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9y
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnREaXN0cmlidXRvcjo6ZGlzdHJpYnV0ZSk6
IEFkZGVkIEFTU0VSVCB0aGF0IHRoZSBwYXJlbnQgU2hhZG93Um9vdCdzIGRpc3RyaWJ1dGlvbiBp
cyByZXNvbHZlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnREaXN0cmlidXRvcjo6aW52YWxp
ZGF0ZSk6IEZvciBlYWNoIEluc2VydGlvblBvaW50LCB3ZSBoYXZlIHRvIGludmFsaWRhdGUKKyAg
ICAgICAgaXRzIHBhcmVudCBlbGVtZW50J3MgZGlzdHJpYnV0aW9uIChpZiBpdCBoYXMgRWxlbWVu
dFNoYWRvdykuCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RGlzdHJpYnV0b3I6OmVuc3VyZURp
c3RyaWJ1dGlvbik6CisgICAgICAgICogaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmg6
CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RGlzdHJpYnV0b3I6OmlzVmFsaWQpOgorICAgICAg
ICAqIGh0bWwvc2hhZG93L0hUTUxTaGFkb3dFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxTaGFkb3dFbGVtZW50OjpvbGRlclNoYWRvd1Jvb3QpOiBTaG91bGQgcmVzb2x2ZSBkaXN0
cmlidXRpb24gZnJvbSBhbmNlc3Rvci4KKyAgICAgICAgKiBodG1sL3NoYWRvdy9JbnNlcnRpb25Q
b2ludC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNlcnRpb25Qb2ludDo6YXR0YWNoKTogZGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpJbnNlcnRpb25Qb2ludDo6ZGV0YWNoKTogZGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpJbnNlcnRpb25Qb2ludDo6Z2V0RGlzdHJpYnV0ZWROb2Rlcyk6IGRp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6cmVzb2x2ZVJlcHJvamVjdGlvbik6IGRpdHRvLgorCiAy
MDEzLTAxLTIwICBHeXV5b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+CiAKICAg
ICAgICAgQ2xlYW4gdXAgbWlzc2luZyAqZXhwbGljaXQqIGtleXdvcmQgaW4gY3RvcnMgb2YgV2Vi
Q29yZS9yZW5kZXJpbmcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFNo
YWRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFNoYWRvdy5jcHAKaW5kZXggNzIw
MWQzMjc1MjIwN2E1NWI3YTc4MDVhMTlmODRiODRlZTRkYWY2Yi4uMzJkZDRmMDRkNTdhZWFjNDAz
MmVlYWYyZmQxZWZjY2Y1MjY4YWU0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnRTaGFkb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50U2hhZG93LmNw
cApAQCAtMTIyLDcgKzEyMiw4IEBAIHZvaWQgRWxlbWVudFNoYWRvdzo6cmVtb3ZlQWxsU2hhZG93
Um9vdHMoKQogCiB2b2lkIEVsZW1lbnRTaGFkb3c6OmF0dGFjaCgpCiB7Ci0gICAgZW5zdXJlRGlz
dHJpYnV0aW9uKCk7CisgICAgQ29udGVudERpc3RyaWJ1dG9yOjplbnN1cmVEaXN0cmlidXRpb24o
eW91bmdlc3RTaGFkb3dSb290KCkpOworCiAgICAgZm9yIChTaGFkb3dSb290KiByb290ID0geW91
bmdlc3RTaGFkb3dSb290KCk7IHJvb3Q7IHJvb3QgPSByb290LT5vbGRlclNoYWRvd1Jvb3QoKSkg
ewogICAgICAgICBpZiAoIXJvb3QtPmF0dGFjaGVkKCkpCiAgICAgICAgICAgICByb290LT5hdHRh
Y2goKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50U2hhZG93LmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFNoYWRvdy5oCmluZGV4IDkxZjY3OTE2ODg2ZDRhOTM0
YjEzYWU3NzQ5NmI3MDFiNmQyZWE2MjYuLjg5MzM2M2JiYTg3YjQ4OGU3YWZkMTJkMDI4NWNkNGE1
NDQ0MWVhNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50U2hhZG93LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRTaGFkb3cuaApAQCAtNjQsNyArNjQsNiBA
QCBwdWJsaWM6CiAgICAgdm9pZCByZWNhbGNTdHlsZShOb2RlOjpTdHlsZUNoYW5nZSk7CiAKICAg
ICB2b2lkIGludmFsaWRhdGVEaXN0cmlidXRpb24oKSB7IG1fZGlzdHJpYnV0b3IuaW52YWxpZGF0
ZURpc3RyaWJ1dGlvbihob3N0KCkpOyB9Ci0gICAgdm9pZCBlbnN1cmVEaXN0cmlidXRpb24oKSB7
IG1fZGlzdHJpYnV0b3IuZW5zdXJlRGlzdHJpYnV0aW9uKGhvc3QoKSk7IH0KICAgICB2b2lkIGRp
ZEFmZmVjdFNlbGVjdG9yKEFmZmVjdGVkU2VsZWN0b3JNYXNrIG1hc2spIHsgbV9kaXN0cmlidXRv
ci5kaWRBZmZlY3RTZWxlY3Rvcihob3N0KCksIG1hc2spOyB9CiAgICAgdm9pZCB3aWxsQWZmZWN0
U2VsZWN0b3IoKSB7IG1fZGlzdHJpYnV0b3Iud2lsbEFmZmVjdFNlbGVjdG9yKGhvc3QoKSk7IH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1
dG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnREaXN0cmlidXRvci5j
cHAKaW5kZXggODY3YTE3NDU3YjUyOWVmMDg5ZDgwYjBmZDg4M2UxNGE2MmM3ZWUzOC4uNjM3NDI0
YWQyN2VlNTRiMDk1YTg1MDU2MmQ0MTk3ZWNlZmM2YjFjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9Db250ZW50RGlzdHJpYnV0b3IuY3BwCkBAIC0yMTMsNiArMjEzLDcg
QEAgdm9pZCBDb250ZW50RGlzdHJpYnV0b3I6OmRpc3RyaWJ1dGUoRWxlbWVudCogaG9zdCkKIHsK
ICAgICBBU1NFUlQobmVlZHNEaXN0cmlidXRpb24oKSk7CiAgICAgQVNTRVJUKG1fbm9kZVRvSW5z
ZXJ0aW9uUG9pbnQuaXNFbXB0eSgpKTsKKyAgICBBU1NFUlQoIWhvc3QtPmNvbnRhaW5pbmdTaGFk
b3dSb290KCkgfHwgaG9zdC0+Y29udGFpbmluZ1NoYWRvd1Jvb3QoKS0+b3duZXIoKS0+ZGlzdHJp
YnV0b3IoKS5pc1ZhbGlkKCkpOwogCiAgICAgbV92YWxpZGl0eSA9IFZhbGlkOwogCkBAIC0yODAs
NiArMjgxLDE1IEBAIGJvb2wgQ29udGVudERpc3RyaWJ1dG9yOjppbnZhbGlkYXRlKEVsZW1lbnQq
IGhvc3QpCiAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGluc2VydGlvblBvaW50
cy5zaXplKCk7ICsraSkgewogICAgICAgICAgICAgICAgIG5lZWRzUmVhdHRhY2ggPSBuZWVkc1Jl
YXR0YWNoIHx8IHRydWU7CiAgICAgICAgICAgICAgICAgaW5zZXJ0aW9uUG9pbnRzW2ldLT5jbGVh
ckRpc3RyaWJ1dGlvbigpOworCisgICAgICAgICAgICAgICAgLy8gQWZ0ZXIgaW5zZXJ0aW9uUG9p
bnQncyBkaXN0cmlidXRpb24gaXMgaW52YWxpZGF0ZWQsIGl0cyByZXByb2plY3Rpb24gc2hvdWxk
IGFsc28gYmUgaW52YWxpZGF0ZWQuCisgICAgICAgICAgICAgICAgaWYgKCFpbnNlcnRpb25Qb2lu
dHNbaV0tPmlzQWN0aXZlKCkpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAg
ICAgICAgICAgICAgaWYgKEVsZW1lbnQqIHBhcmVudCA9IGluc2VydGlvblBvaW50c1tpXS0+cGFy
ZW50RWxlbWVudCgpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChFbGVtZW50U2hhZG93KiBz
aGFkb3cgPSBwYXJlbnQtPnNoYWRvdygpKQorICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93
LT5pbnZhbGlkYXRlRGlzdHJpYnV0aW9uKCk7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtMzM4LDI1ICszNDgsMjEgQEAgdm9pZCBDb250ZW50
RGlzdHJpYnV0b3I6OmRpc3RyaWJ1dGVOb2RlQ2hpbGRyZW5UbyhJbnNlcnRpb25Qb2ludCogaW5z
ZXJ0aW9uUG9pbnQKICAgICBpbnNlcnRpb25Qb2ludC0+c2V0RGlzdHJpYnV0aW9uKGRpc3RyaWJ1
dGlvbik7CiB9CiAKLXZvaWQgQ29udGVudERpc3RyaWJ1dG9yOjplbnN1cmVEaXN0cmlidXRpb24o
RWxlbWVudCogaG9zdCkKK3ZvaWQgQ29udGVudERpc3RyaWJ1dG9yOjplbnN1cmVEaXN0cmlidXRp
b24oU2hhZG93Um9vdCogc2hhZG93Um9vdCkKIHsKLSAgICBpZiAoIW5lZWRzRGlzdHJpYnV0aW9u
KCkpCi0gICAgICAgIHJldHVybjsKLSAgICBkaXN0cmlidXRlKGhvc3QpOwotfQorICAgIEFTU0VS
VChzaGFkb3dSb290KTsKIAotdm9pZCBDb250ZW50RGlzdHJpYnV0b3I6OmVuc3VyZURpc3RyaWJ1
dGlvbkZyb21Eb2N1bWVudChFbGVtZW50KiBzb3VyY2UpCi17Ci0gICAgQ29udGFpbmVyTm9kZSog
bWF5U2hhZG93ID0gc291cmNlLT50cmVlU2NvcGUoKS0+cm9vdE5vZGUoKTsKLSAgICBpZiAoIW1h
eVNoYWRvdy0+aXNTaGFkb3dSb290KCkpCi0gICAgICAgIHJldHVybjsKKyAgICBWZWN0b3I8RWxl
bWVudFNoYWRvdyosIDg+IGVsZW1lbnRTaGFkb3dzOworICAgIGZvciAoRWxlbWVudCogY3VycmVu
dCA9IHNoYWRvd1Jvb3QtPmhvc3QoKTsgY3VycmVudDsgY3VycmVudCA9IGN1cnJlbnQtPnNoYWRv
d0hvc3QoKSkgeworICAgICAgICBFbGVtZW50U2hhZG93KiBlbGVtZW50U2hhZG93ID0gY3VycmVu
dC0+c2hhZG93KCk7CisgICAgICAgIGlmICghZWxlbWVudFNoYWRvdy0+ZGlzdHJpYnV0b3IoKS5u
ZWVkc0Rpc3RyaWJ1dGlvbigpKQorICAgICAgICAgICAgYnJlYWs7CiAKLSAgICBWZWN0b3I8RWxl
bWVudCosIDg+IGhvc3RzOwotICAgIGZvciAoRWxlbWVudCogY3VycmVudCA9IHRvU2hhZG93Um9v
dChtYXlTaGFkb3cpLT5ob3N0KCk7IGN1cnJlbnQ7IGN1cnJlbnQgPSBjdXJyZW50LT5zaGFkb3dI
b3N0KCkpCi0gICAgICAgIGhvc3RzLmFwcGVuZChjdXJyZW50KTsKKyAgICAgICAgZWxlbWVudFNo
YWRvd3MuYXBwZW5kKGVsZW1lbnRTaGFkb3cpOworICAgIH0KIAotICAgIGZvciAoc2l6ZV90IGkg
PSBob3N0cy5zaXplKCk7IGkgPiAwOyAtLWkpCi0gICAgICAgIGhvc3RzW2kgLSAxXS0+c2hhZG93
KCktPmVuc3VyZURpc3RyaWJ1dGlvbigpOworICAgIGZvciAoc2l6ZV90IGkgPSBlbGVtZW50U2hh
ZG93cy5zaXplKCk7IGkgPiAwOyAtLWkpCisgICAgICAgIGVsZW1lbnRTaGFkb3dzW2kgLSAxXS0+
ZGlzdHJpYnV0b3IoKS5kaXN0cmlidXRlKGVsZW1lbnRTaGFkb3dzW2kgLSAxXS0+aG9zdCgpKTsK
IH0KIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50RGlz
dHJpYnV0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnREaXN0cmlidXRv
ci5oCmluZGV4IDQ2MGQ0MTM1ZDk5MGU4ZmY2OTY3NTdkNTYyYTBiMGIxM2VmNzM2ODIuLmRmZWFi
OGNjN2ZkYmU1MGFkZjYxMDdlOGQ2MGEwZGYyMjg0MTZkMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnREaXN0cmlidXRvci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L0NvbnRlbnREaXN0cmlidXRvci5oCkBAIC0xMjgsMTMgKzEyOCwxMiBA
QCBwdWJsaWM6CiAgICAgdm9pZCBkaXN0cmlidXRlU2VsZWN0aW9uc1RvKEluc2VydGlvblBvaW50
KiwgY29uc3QgQ29udGVudERpc3RyaWJ1dGlvbiYgcG9vbCwgVmVjdG9yPGJvb2w+JiBkaXN0cmli
dXRlZCk7CiAgICAgdm9pZCBkaXN0cmlidXRlTm9kZUNoaWxkcmVuVG8oSW5zZXJ0aW9uUG9pbnQq
LCBDb250YWluZXJOb2RlKik7CiAKLSAgICB2b2lkIGVuc3VyZURpc3RyaWJ1dGlvbihFbGVtZW50
KiBob3N0KTsKICAgICB2b2lkIGludmFsaWRhdGVEaXN0cmlidXRpb24oRWxlbWVudCogaG9zdCk7
CiAgICAgdm9pZCBkaWRTaGFkb3dCb3VuZGFyeUNoYW5nZShFbGVtZW50KiBob3N0KTsKICAgICB2
b2lkIGRpZEFmZmVjdFNlbGVjdG9yKEVsZW1lbnQqIGhvc3QsIEFmZmVjdGVkU2VsZWN0b3JNYXNr
KTsKICAgICB2b2lkIHdpbGxBZmZlY3RTZWxlY3RvcihFbGVtZW50KiBob3N0KTsKIAotICAgIHN0
YXRpYyB2b2lkIGVuc3VyZURpc3RyaWJ1dGlvbkZyb21Eb2N1bWVudChFbGVtZW50KiBzb3VyY2Up
OworICAgIHN0YXRpYyB2b2lkIGVuc3VyZURpc3RyaWJ1dGlvbihTaGFkb3dSb290Kik7CiAKIHBy
aXZhdGU6CiAgICAgdm9pZCBkaXN0cmlidXRlKEVsZW1lbnQqIGhvc3QpOwpAQCAtMTQ2LDYgKzE0
NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXROZWVkc1NlbGVjdEZlYXR1cmVTZXQoKSB7IG1f
bmVlZHNTZWxlY3RGZWF0dXJlU2V0ID0gdHJ1ZTsgfQogCiAgICAgdm9pZCBzZXRWYWxpZGl0eShW
YWxpZGl0eSB2YWxpZGl0eSkgeyBtX3ZhbGlkaXR5ID0gdmFsaWRpdHk7IH0KKyAgICBib29sIGlz
VmFsaWQoKSBjb25zdCB7IHJldHVybiBtX3ZhbGlkaXR5ID09IFZhbGlkOyB9CiAgICAgYm9vbCBu
ZWVkc0Rpc3RyaWJ1dGlvbigpIGNvbnN0OwogICAgIGJvb2wgbmVlZHNJbnZhbGlkYXRpb24oKSBj
b25zdCB7IHJldHVybiBtX3ZhbGlkaXR5ICE9IEludmFsaWRhdGVkOyB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxTaGFkb3dFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxTaGFkb3dFbGVtZW50LmNwcAppbmRleCA2Mzc0ZGM3
ZGNhNDJlN2M0NzFhN2IzYjI1N2JiOThiZDQwODI0M2YzLi40NjVjNzYyY2I2NzE1NTE3Nzk5ZDgx
MzViMjZhNjY1YmY3MTNiNWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9IVE1MU2hhZG93RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
SFRNTFNoYWRvd0VsZW1lbnQuY3BwCkBAIC01OCwxMiArNTgsMTMgQEAgSFRNTFNoYWRvd0VsZW1l
bnQ6On5IVE1MU2hhZG93RWxlbWVudCgpCiAKIFNoYWRvd1Jvb3QqIEhUTUxTaGFkb3dFbGVtZW50
OjpvbGRlclNoYWRvd1Jvb3QoKQogewotICAgIGlmICghdHJlZVNjb3BlKCktPnJvb3ROb2RlKCkt
PmlzU2hhZG93Um9vdCgpKQorICAgIFNoYWRvd1Jvb3QqIGNvbnRhaW5pbmdSb290ID0gY29udGFp
bmluZ1NoYWRvd1Jvb3QoKTsKKyAgICBpZiAoIWNvbnRhaW5pbmdSb290KQogICAgICAgICByZXR1
cm4gMDsKIAotICAgIENvbnRlbnREaXN0cmlidXRvcjo6ZW5zdXJlRGlzdHJpYnV0aW9uRnJvbURv
Y3VtZW50KHRoaXMpOworICAgIENvbnRlbnREaXN0cmlidXRvcjo6ZW5zdXJlRGlzdHJpYnV0aW9u
KGNvbnRhaW5pbmdSb290KTsKIAotICAgIFNoYWRvd1Jvb3QqIG9sZGVyID0gdG9TaGFkb3dSb290
KHRyZWVTY29wZSgpLT5yb290Tm9kZSgpKS0+b2xkZXJTaGFkb3dSb290KCk7CisgICAgU2hhZG93
Um9vdCogb2xkZXIgPSBjb250YWluaW5nUm9vdC0+b2xkZXJTaGFkb3dSb290KCk7CiAgICAgaWYg
KCFvbGRlciB8fCBvbGRlci0+dHlwZSgpICE9IFNoYWRvd1Jvb3Q6OkF1dGhvclNoYWRvd1Jvb3Qg
fHwgU2NvcGVDb250ZW50RGlzdHJpYnV0aW9uOjphc3NpZ25lZFRvKG9sZGVyKSAhPSB0aGlzKQog
ICAgICAgICByZXR1cm4gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvSW5zZXJ0aW9uUG9pbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0
aW9uUG9pbnQuY3BwCmluZGV4IDk2ZmIyNTAwZjIwYWM3YWZjOTNjOGFlOGU1ZjJlYzI3YmVjN2Vk
ZWUuLmUwODMxOGJmZjVhOGUwYmJjMDQ0NGZjODc4NmQzOTEzZjk4YzdjOTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5jcHAKQEAgLTUzLDggKzUzLDgg
QEAgSW5zZXJ0aW9uUG9pbnQ6On5JbnNlcnRpb25Qb2ludCgpCiAKIHZvaWQgSW5zZXJ0aW9uUG9p
bnQ6OmF0dGFjaCgpCiB7Ci0gICAgaWYgKFNoYWRvd1Jvb3QqIHJvb3QgPSBjb250YWluaW5nU2hh
ZG93Um9vdCgpKQotICAgICAgICByb290LT5vd25lcigpLT5lbnN1cmVEaXN0cmlidXRpb24oKTsK
KyAgICBpZiAoU2hhZG93Um9vdCogc2hhZG93Um9vdCA9IGNvbnRhaW5pbmdTaGFkb3dSb290KCkp
CisgICAgICAgIENvbnRlbnREaXN0cmlidXRvcjo6ZW5zdXJlRGlzdHJpYnV0aW9uKHNoYWRvd1Jv
b3QpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9kaXN0cmlidXRpb24uc2l6ZSgpOyAr
K2kpIHsKICAgICAgICAgaWYgKCFtX2Rpc3RyaWJ1dGlvbi5hdChpKS0+YXR0YWNoZWQoKSkKICAg
ICAgICAgICAgIG1fZGlzdHJpYnV0aW9uLmF0KGkpLT5hdHRhY2goKTsKQEAgLTY1LDggKzY1LDkg
QEAgdm9pZCBJbnNlcnRpb25Qb2ludDo6YXR0YWNoKCkKIAogdm9pZCBJbnNlcnRpb25Qb2ludDo6
ZGV0YWNoKCkKIHsKLSAgICBpZiAoU2hhZG93Um9vdCogcm9vdCA9IGNvbnRhaW5pbmdTaGFkb3dS
b290KCkpCi0gICAgICAgIHJvb3QtPm93bmVyKCktPmVuc3VyZURpc3RyaWJ1dGlvbigpOworICAg
IGlmIChTaGFkb3dSb290KiBzaGFkb3dSb290ID0gY29udGFpbmluZ1NoYWRvd1Jvb3QoKSkKKyAg
ICAgICAgQ29udGVudERpc3RyaWJ1dG9yOjplbnN1cmVEaXN0cmlidXRpb24oc2hhZG93Um9vdCk7
CisKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZGlzdHJpYnV0aW9uLnNpemUoKTsgKytp
KQogICAgICAgICBtX2Rpc3RyaWJ1dGlvbi5hdChpKS0+ZGV0YWNoKCk7CiAKQEAgLTk5LDcgKzEw
MCw4IEBAIGJvb2wgSW5zZXJ0aW9uUG9pbnQ6OmlzQWN0aXZlKCkgY29uc3QKIAogUGFzc1JlZlB0
cjxOb2RlTGlzdD4gSW5zZXJ0aW9uUG9pbnQ6OmdldERpc3RyaWJ1dGVkTm9kZXMoKSBjb25zdAog
ewotICAgIENvbnRlbnREaXN0cmlidXRvcjo6ZW5zdXJlRGlzdHJpYnV0aW9uRnJvbURvY3VtZW50
KGNvbnN0X2Nhc3Q8SW5zZXJ0aW9uUG9pbnQqPih0aGlzKSk7CisgICAgaWYgKFNoYWRvd1Jvb3Qq
IHNoYWRvd1Jvb3QgPSBjb250YWluaW5nU2hhZG93Um9vdCgpKQorICAgICAgICBDb250ZW50RGlz
dHJpYnV0b3I6OmVuc3VyZURpc3RyaWJ1dGlvbihzaGFkb3dSb290KTsKIAogICAgIFZlY3RvcjxS
ZWZQdHI8Tm9kZT4gPiBub2RlczsKIApAQCAtMjA0LDcgKzIwNiw4IEBAIEluc2VydGlvblBvaW50
KiByZXNvbHZlUmVwcm9qZWN0aW9uKGNvbnN0IE5vZGUqIHByb2plY3RlZE5vZGUpCiAKICAgICB3
aGlsZSAoY3VycmVudCkgewogICAgICAgICBpZiAoRWxlbWVudFNoYWRvdyogc2hhZG93ID0gc2hh
ZG93T2ZQYXJlbnRGb3JEaXN0cmlidXRpb24oY3VycmVudCkpIHsKLSAgICAgICAgICAgIHNoYWRv
dy0+ZW5zdXJlRGlzdHJpYnV0aW9uKCk7CisgICAgICAgICAgICBpZiAoU2hhZG93Um9vdCogcm9v
dCA9IGN1cnJlbnQtPmNvbnRhaW5pbmdTaGFkb3dSb290KCkpCisgICAgICAgICAgICAgICAgQ29u
dGVudERpc3RyaWJ1dG9yOjplbnN1cmVEaXN0cmlidXRpb24ocm9vdCk7CiAgICAgICAgICAgICBp
ZiAoSW5zZXJ0aW9uUG9pbnQqIGluc2VydGVkVG8gPSBzaGFkb3ctPmRpc3RyaWJ1dG9yKCkuZmlu
ZEluc2VydGlvblBvaW50Rm9yKHByb2plY3RlZE5vZGUpKSB7CiAgICAgICAgICAgICAgICAgY3Vy
cmVudCA9IGluc2VydGVkVG87CiAgICAgICAgICAgICAgICAgaW5zZXJ0aW9uUG9pbnQgPSBpbnNl
cnRlZFRvOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCmluZGV4IDViZDVlNGU5YzQ2OGJkYTEwZjRmZTNjMGRkMGZkMzAwOTQ0MGE3ZDgu
LjczZjQ3N2M3NjhiOGEwYzJhZGFmNWRjZTYyYzI3NmVlNTljNzdlNTQgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNSBAQAorMjAxMy0wMS0yMCAgU2hpbnlhIEthd2FuYWthICA8c2hpbnlha0BjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgRGlzdHJpYnV0aW9uIHN0YXRlIGJlY29tZXMgaW5jb25zaXN0ZW50IHdp
dGggY29udGVudC9zaGFkb3cgcmVwcm9qZWN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDY2MzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRpb24tY3Jh
c2gtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvZGlzdHJp
YnV0aW9uLWNyYXNoLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9uZXN0
ZWQtcmVwcm9qZWN0aW9uLWluY29uc2lzdGVudC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvZG9tL3NoYWRvdy9uZXN0ZWQtcmVwcm9qZWN0aW9uLWluY29uc2lzdGVudC5odG1s
OiBBZGRlZC4KKwogMjAxMy0wMS0yMCAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgUmUtbGF5b3V0IGNoaWxkIGJsb2NrcyB3aGVuIGJvcmRlci9wYWRkaW5nIG9m
IHRoZSBib3gtc2l6aW5nOmJvcmRlci1ib3ggcGFyZW50IGlzIHVwZGF0ZWQKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRpb24tY3Jhc2gtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGlvbi1jcmFzaC1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uOWRmOGM5YzRkNDJiYWMxZDM5NDMyMzQ4MzViYjU1ZWQ2NDI1
NmRhMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0
cmlidXRpb24tY3Jhc2gtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOCBAQAorV2hlbiBtb2RpZnlp
bmcgSW5zZXJ0aW9uUG9pbnQncyBjaGlsZCwgZGlzdHJpYnV0aW9uIHNob3VsZCBub3QgY2F1c2Ug
Y3Jhc2guCisKK1BBU1MgdW5sZXNzIGNyYXNoLgorCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9k
b20vc2hhZG93L2Rpc3RyaWJ1dGlvbi1jcmFzaC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20v
c2hhZG93L2Rpc3RyaWJ1dGlvbi1jcmFzaC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQyYjRhZDYxODIyNGQx
MTM4YzBmMThmZDhlMGEwODY1ZmE1N2NiMzYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0aW9uLWNyYXNoLmh0bWwKQEAgLTAsMCArMSw0NCBA
QAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD48Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorCis8cD5XaGVuIG1vZGlmeWluZyBJ
bnNlcnRpb25Qb2ludCdzIGNoaWxkLCBkaXN0cmlidXRpb24gc2hvdWxkIG5vdCBjYXVzZSBjcmFz
aC48L3A+Cis8cD5QQVNTIHVubGVzcyBjcmFzaC48L3A+CisKKzxkaXYgaWQ9Imhvc3QiPjwvZGl2
PgorPHByZSBpZD0iY29uc29sZSI+PC9wcmU+CisKKzxzY3JpcHQ+Citqc1Rlc3RJc0FzeW5jID0g
dHJ1ZTsKKworZnVuY3Rpb24gY3JlYXRlRWxlbWVudExpa2VEZXRhaWxzKCkKK3sKKyAgICB2YXIg
ZGV0YWlscyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHZhciBzaGFkb3dS
b290ID0gZGV0YWlscy53ZWJraXRDcmVhdGVTaGFkb3dSb290KCk7CisKKyAgICBzaGFkb3dSb290
LmlubmVySFRNTCA9ICc8Y29udGVudCBzZWxlY3Q9ImRpdi5zdW1tYXJ5Ij48L2NvbnRlbnQ+PGNv
bnRlbnQ+PC9jb250ZW50Pic7CisKKyAgICB2YXIgZGVmYXVsdFN1bW1hcnkgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICBkZWZhdWx0U3VtbWFyeS53ZWJraXRDcmVhdGVTaGFk
b3dSb290KCkuaW5uZXJIVE1MID0gJ0RlZmF1bHQgU3VtbWFyeSc7CisgICAgc2hhZG93Um9vdC5m
aXJzdENoaWxkLmFwcGVuZENoaWxkKGRlZmF1bHRTdW1tYXJ5KTsKKworICAgIHJldHVybiBkZXRh
aWxzOyAgICAKK30KKwordmFyIHNoYWRvd1Jvb3QxID0gaG9zdC53ZWJraXRDcmVhdGVTaGFkb3dS
b290KCk7CitzaGFkb3dSb290MS5pbm5lckhUTUwgPSAnc29tZXRoaW5nIDEnOworCit2YXIgc2hh
ZG93Um9vdDIgPSBob3N0LndlYmtpdENyZWF0ZVNoYWRvd1Jvb3QoKTsKK3ZhciBkZXRhaWxzID0g
Y3JlYXRlRWxlbWVudExpa2VEZXRhaWxzKCk7CitkZXRhaWxzLmlubmVySFRNTCA9ICc8c2hhZG93
IGlkPSJzaGFkb3ciPnNvbWV0aGluZyAyPC9zaGFkb3c+JzsKK3NoYWRvd1Jvb3QyLmFwcGVuZENo
aWxkKGRldGFpbHMpOworCit2YXIgc2hhZG93ID0gZGV0YWlscy5maXJzdENoaWxkOworc2V0VGlt
ZW91dChmdW5jdGlvbigpIHsKKyAgICBzaGFkb3cuZmlyc3RDaGlsZC5yZW1vdmUoKTsKKyAgICBm
aW5pc2hKU1Rlc3QoKTsKK30sIDApOworPC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT48L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvbmVzdGVkLXJlcHJvamVjdGlv
bi1pbmNvbnNpc3RlbnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93
L25lc3RlZC1yZXByb2plY3Rpb24taW5jb25zaXN0ZW50LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li43ZjlhNDRlYmYwOTY4YmQ2ZmEwN2EyN2FhYzA1ZGZhZmVlZTMyNWFiCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L25lc3RlZC1yZXByb2plY3Rpb24taW5j
b25zaXN0ZW50LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDI2IEBACitXaGVuIHdlIG1vZGlmeSBo
b3N0IGNoaWxkcmVuIGFuZCBnZXQgZGlzdHJpYnV0ZWQgbm9kZXMgaW4gbmVzdGVkIFNoYWRvd0RP
TSwgZGlzdHJpYnV0aW9uIHNob3VsZCBvY2N1ciBmcm9tIHRoZSBob3N0LgorCitBZGRzIGEgZGl2
IHRvIFNoYWRvd1Jvb3QuCitQQVNTIGNvbnRlbnQuZ2V0RGlzdHJpYnV0ZWROb2RlcygpLmxlbmd0
aCBpcyAyCitQQVNTIGNvbnRlbnQuZ2V0RGlzdHJpYnV0ZWROb2RlcygpLml0ZW0oMCkgaXMgZGl2
MQorUEFTUyBjb250ZW50LmdldERpc3RyaWJ1dGVkTm9kZXMoKS5pdGVtKDEpIGlzIGFkZGVkRGl2
CisKK0FkZHMgYSBkaXYgYXMgZmFsbGJhY2sgY29udGVudAorUEFTUyBjb250ZW50LmdldERpc3Ry
aWJ1dGVkTm9kZXMoKS5sZW5ndGggaXMgMworUEFTUyBjb250ZW50LmdldERpc3RyaWJ1dGVkTm9k
ZXMoKS5pdGVtKDApIGlzIGRpdjEKK1BBU1MgY29udGVudC5nZXREaXN0cmlidXRlZE5vZGVzKCku
aXRlbSgxKSBpcyBhbm90aGVyQWRkZWREaXYKK1BBU1MgY29udGVudC5nZXREaXN0cmlidXRlZE5v
ZGVzKCkuaXRlbSgyKSBpcyBhZGRlZERpdgorCitSZW1vdmVzIHRoZSBmaXJzdCBhZGRlZCBkaXYK
K1BBU1MgY29udGVudC5nZXREaXN0cmlidXRlZE5vZGVzKCkubGVuZ3RoIGlzIDIKK1BBU1MgY29u
dGVudC5nZXREaXN0cmlidXRlZE5vZGVzKCkuaXRlbSgwKSBpcyBkaXYxCitQQVNTIGNvbnRlbnQu
Z2V0RGlzdHJpYnV0ZWROb2RlcygpLml0ZW0oMSkgaXMgYW5vdGhlckFkZGVkRGl2CisKK1JlbW92
ZXMgdGhlIHNlY29uZCBhZGRlZCBkaXYKK1BBU1MgY29udGVudC5nZXREaXN0cmlidXRlZE5vZGVz
KCkubGVuZ3RoIGlzIDEKK1BBU1MgY29udGVudC5nZXREaXN0cmlidXRlZE5vZGVzKCkuaXRlbSgw
KSBpcyBkaXYxCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvbmVzdGVkLXJl
cHJvamVjdGlvbi1pbmNvbnNpc3RlbnQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRv
dy9uZXN0ZWQtcmVwcm9qZWN0aW9uLWluY29uc2lzdGVudC5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI3MTE4
NGU1YzBkMDQ0MDA5MDYzZTRjMmFjYTEzMzA2ZjllMTgzZDIKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvbmVzdGVkLXJlcHJvamVjdGlvbi1pbmNvbnNpc3Rl
bnQuaHRtbApAQCAtMCwwICsxLDczIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPjxib2R5Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
CisKKzxwPldoZW4gd2UgbW9kaWZ5IGhvc3QgY2hpbGRyZW4gYW5kIGdldCBkaXN0cmlidXRlZCBu
b2RlcyBpbiBuZXN0ZWQgU2hhZG93RE9NLCBkaXN0cmlidXRpb24gc2hvdWxkIG9jY3VyIGZyb20g
dGhlIGhvc3QuPC9wPgorCis8ZGl2IGlkPSJjb250YWluZXIiPgorICAgIDxkaXYgaWQ9Imhvc3Qx
Ij48L2Rpdj4KKzwvZGl2PgorPHByZSBpZD0iY29uc29sZSI+PC9wcmU+CisKKzxzY3JpcHQ+Citq
c1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKwordmFyIHNoYWRvd1Jvb3QxMSA9IGhvc3QxLndlYmtpdENy
ZWF0ZVNoYWRvd1Jvb3QoKTsKK3NoYWRvd1Jvb3QxMS5pbm5lckhUTUwgPSAnPGRpdj48L2Rpdj48
c2hhZG93Pjwvc2hhZG93Pic7Cit2YXIgZGl2MSA9IHNoYWRvd1Jvb3QxMS5maXJzdENoaWxkOwor
dmFyIHNoYWRvdzEgPSBzaGFkb3dSb290MTEubGFzdENoaWxkOworCit2YXIgc2hhZG93Um9vdDEy
ID0gaG9zdDEud2Via2l0Q3JlYXRlU2hhZG93Um9vdCgpOworc2hhZG93Um9vdDEyLmlubmVySFRN
TCA9ICc8ZGl2PjxzaGFkb3c+PC9zaGFkb3c+PC9kaXY+JzsKK3ZhciBob3N0MiA9IHNoYWRvd1Jv
b3QxMi5maXJzdENoaWxkOworCit2YXIgc2hhZG93Um9vdDIxID0gaG9zdDIud2Via2l0Q3JlYXRl
U2hhZG93Um9vdCgpOworc2hhZG93Um9vdDIxLmlubmVySFRNTCA9ICc8Y29udGVudD48L2NvbnRl
bnQ+JzsKKwordmFyIHNoYWRvd1Jvb3QyMiA9IGhvc3QyLndlYmtpdENyZWF0ZVNoYWRvd1Jvb3Qo
KTsKK3NoYWRvd1Jvb3QyMi5pbm5lckhUTUwgPSAnPGRpdj48c2hhZG93Pjwvc2hhZG93PjwvZGl2
Pic7Cit2YXIgaG9zdDMgPSBzaGFkb3dSb290MjIuZmlyc3RDaGlsZDsKKwordmFyIHNoYWRvd1Jv
b3QzMSA9IGhvc3QzLndlYmtpdENyZWF0ZVNoYWRvd1Jvb3QoKTsKK3NoYWRvd1Jvb3QzMS5pbm5l
ckhUTUwgPSAnPGNvbnRlbnQ+PC9jb250ZW50Pic7CisKK3ZhciBjb250ZW50ID0gc2hhZG93Um9v
dDMxLmZpcnN0Q2hpbGQ7CisKK3NldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgZGVidWcoJ0Fk
ZHMgYSBkaXYgdG8gU2hhZG93Um9vdC4nKTsKKyAgICBhZGRlZERpdiA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ2RpdicpOworICAgIHNoYWRvd1Jvb3QxMS5hcHBlbmRDaGlsZChhZGRlZERpdik7
CisgICAgc2hvdWxkQmUoJ2NvbnRlbnQuZ2V0RGlzdHJpYnV0ZWROb2RlcygpLmxlbmd0aCcsICcy
Jyk7CisgICAgc2hvdWxkQmUoJ2NvbnRlbnQuZ2V0RGlzdHJpYnV0ZWROb2RlcygpLml0ZW0oMCkn
LCAnZGl2MScpOworICAgIHNob3VsZEJlKCdjb250ZW50LmdldERpc3RyaWJ1dGVkTm9kZXMoKS5p
dGVtKDEpJywgJ2FkZGVkRGl2Jyk7CisgICAgZGVidWcoJycpOworCisKKyAgICBkZWJ1ZygnQWRk
cyBhIGRpdiBhcyBmYWxsYmFjayBjb250ZW50Jyk7CisgICAgYW5vdGhlckFkZGVkRGl2ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgc2hhZG93MS5hcHBlbmRDaGlsZChhbm90
aGVyQWRkZWREaXYpOworICAgIHNob3VsZEJlKCdjb250ZW50LmdldERpc3RyaWJ1dGVkTm9kZXMo
KS5sZW5ndGgnLCAnMycpOworICAgIHNob3VsZEJlKCdjb250ZW50LmdldERpc3RyaWJ1dGVkTm9k
ZXMoKS5pdGVtKDApJywgJ2RpdjEnKTsKKyAgICBzaG91bGRCZSgnY29udGVudC5nZXREaXN0cmli
dXRlZE5vZGVzKCkuaXRlbSgxKScsICdhbm90aGVyQWRkZWREaXYnKTsKKyAgICBzaG91bGRCZSgn
Y29udGVudC5nZXREaXN0cmlidXRlZE5vZGVzKCkuaXRlbSgyKScsICdhZGRlZERpdicpOworICAg
IGRlYnVnKCcnKTsKKworICAgIGRlYnVnKCdSZW1vdmVzIHRoZSBmaXJzdCBhZGRlZCBkaXYnKTsK
KyAgICBhZGRlZERpdi5yZW1vdmUoKTsKKyAgICBzaG91bGRCZSgnY29udGVudC5nZXREaXN0cmli
dXRlZE5vZGVzKCkubGVuZ3RoJywgJzInKTsKKyAgICBzaG91bGRCZSgnY29udGVudC5nZXREaXN0
cmlidXRlZE5vZGVzKCkuaXRlbSgwKScsICdkaXYxJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRlbnQu
Z2V0RGlzdHJpYnV0ZWROb2RlcygpLml0ZW0oMSknLCAnYW5vdGhlckFkZGVkRGl2Jyk7CisgICAg
ZGVidWcoJycpOworCisgICAgZGVidWcoJ1JlbW92ZXMgdGhlIHNlY29uZCBhZGRlZCBkaXYnKTsK
KyAgICBhbm90aGVyQWRkZWREaXYucmVtb3ZlKCk7CisgICAgc2hvdWxkQmUoJ2NvbnRlbnQuZ2V0
RGlzdHJpYnV0ZWROb2RlcygpLmxlbmd0aCcsICcxJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRlbnQu
Z2V0RGlzdHJpYnV0ZWROb2RlcygpLml0ZW0oMCknLCAnZGl2MScpOworICAgIGRlYnVnKCcnKTsK
KworICAgIGNvbnRhaW5lci5pbm5lckhUTUwgPSAiIjsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30s
IDApOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+PC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>