<?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>115330</bug_id>
          
          <creation_ts>2013-04-28 11:28:39 -0700</creation_ts>
          <short_desc>Need a LayoutMilestone to fire when we have done our first paint after suppressing incremental layout</short_desc>
          <delta_ts>2013-04-29 14:53:44 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Beth Dakin">bdakin</reporter>
          <assigned_to name="Beth Dakin">bdakin</assigned_to>
          <cc>aestes</cc>
    
    <cc>bdakin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>jonlee</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>882398</commentid>
    <comment_count>0</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2013-04-28 11:28:39 -0700</bug_when>
    <thetext>Clients that use the suppressesIncrementalRendering API have requested a LayoutMilestone indicating when rendering is not longer being suppressed. Patch forthcoming.

&lt;rdar://problem/12722365&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>882401</commentid>
    <comment_count>1</comment_count>
      <attachid>199967</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2013-04-28 11:59:45 -0700</bug_when>
    <thetext>Created attachment 199967
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>882403</commentid>
    <comment_count>2</comment_count>
      <attachid>199967</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2013-04-28 12:17:21 -0700</bug_when>
    <thetext>Comment on attachment 199967
Patch

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

&gt; Source/WebCore/dom/Document.cpp:1302
&gt;      if (renderer())
&gt;          renderer()-&gt;repaint();

This is so bogus. It doesn&apos;t cause compositing layers to paint.

&gt; Source/WebCore/dom/Document.cpp:1305
&gt; +    if (page()-&gt;requestedLayoutMilestones() &amp; DidFirstPaintAfterSuppressedIncrementalRendering)
&gt; +        frame()-&gt;loader()-&gt;didLayout(DidFirstPaintAfterSuppressedIncrementalRendering);

There&apos;s some irony here: didLayout(DidFirstPaint... (layout vs. paint).

And I think this is wrong. I think you need to wait for the first compositing layer flush after this, especially since we have logic to suppress compositing layer flushes.

&gt; Source/WebCore/page/LayoutMilestones.h:36
&gt; +    DidFirstPaintAfterSuppressedIncrementalRendering = 1 &lt;&lt; 4

Many of our so-called layout milestones are more about painting :-\</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>882404</commentid>
    <comment_count>3</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2013-04-28 12:18:46 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 199967 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=199967&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/Document.cpp:1302
&gt; &gt;      if (renderer())
&gt; &gt;          renderer()-&gt;repaint();
&gt; 
&gt; This is so bogus. It doesn&apos;t cause compositing layers to paint.
&gt; 
&gt; &gt; Source/WebCore/dom/Document.cpp:1305
&gt; &gt; +    if (page()-&gt;requestedLayoutMilestones() &amp; DidFirstPaintAfterSuppressedIncrementalRendering)
&gt; &gt; +        frame()-&gt;loader()-&gt;didLayout(DidFirstPaintAfterSuppressedIncrementalRendering);
&gt; 
&gt; There&apos;s some irony here: didLayout(DidFirstPaint... (layout vs. paint).
&gt; 
&gt; And I think this is wrong. I think you need to wait for the first compositing layer flush after this, especially since we have logic to suppress compositing layer flushes.

... if we&apos;re in compositing mode.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>882410</commentid>
    <comment_count>4</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-04-28 13:10:45 -0700</bug_when>
    <thetext>I vote for renderingMilestones!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>882417</commentid>
    <comment_count>5</comment_count>
      <attachid>199971</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2013-04-28 15:13:53 -0700</bug_when>
    <thetext>Created attachment 199971
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>882428</commentid>
    <comment_count>6</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2013-04-28 17:12:01 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 199967 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=199967&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/Document.cpp:1302
&gt; &gt;      if (renderer())
&gt; &gt;          renderer()-&gt;repaint();
&gt; 
&gt; This is so bogus. It doesn&apos;t cause compositing layers to paint.

This has been here since App Mode was implemented, so it&apos;s probably my fault. What&apos;s the right thing to do here? At the time I did this my understanding was that the combination of renderer()-&gt;repaint() and FrameView::updateCompositingLayersAfterLayout() did the right thing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>882429</commentid>
    <comment_count>7</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2013-04-28 17:14:34 -0700</bug_when>
    <thetext>Is RenderView::repaintViewAndCompositedLayers() what we want?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>882445</commentid>
    <comment_count>8</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2013-04-28 20:06:52 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Is RenderView::repaintViewAndCompositedLayers() what we want?

Yes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>882703</commentid>
    <comment_count>9</comment_count>
      <attachid>200033</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2013-04-29 11:36:15 -0700</bug_when>
    <thetext>Created attachment 200033
Patch

Oh yeah, sorry I forgot to address that. Thanks for brining it up again, Andy! Here&apos;s a patch that uses repaintViewAndCompositedLayers() instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>882714</commentid>
    <comment_count>10</comment_count>
      <attachid>200033</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2013-04-29 12:03:36 -0700</bug_when>
    <thetext>Comment on attachment 200033
Patch

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

&gt; Source/WebCore/rendering/RenderLayerCompositor.cpp:385
&gt; +        if (m_headerLayerAwaitingFirstFlush) {
&gt; +            m_headerLayerAwaitingFirstFlush = false;
&gt; +            if (page-&gt;requestedLayoutMilestones() &amp; DidFirstFlushForHeaderLayer)
&gt; +                milestonesAchieved |= DidFirstFlushForHeaderLayer;
&gt; +        }
&gt; +
&gt; +        if (frameView &amp;&amp; frameView-&gt;isAwaitingFirstPaintAfterSuppressedRendering()) {

Why is m_headerLayerAwaitingFirstFlush here, but isAwaitingFirstPaintAfterSuppressedRendering on FrameView? Because the first is strictly layer-based?

Maybe we should add FrameView::m_milestonesPendingPaint or something, rather than a new flag for each one.

&gt; Source/WebKit2/ChangeLog:21
&gt; +        This null-check is necessary now since this code ends up running at 
&gt; +        WebFrame::init() time while we&apos;re setting up the Document. 
&gt; +        setVisualUpdatesAllowed(true) has always been called as a part of that process, 
&gt; +        and now the updateLayout(), ends up calling this code too, but we don&apos;t actually 
&gt; +        have a mainFrame yet since it&apos;s still being created.

Does this mean we&apos;re doing an extra layout from before? Why isn&apos;t true the default value for VisualUpdatesAllowed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>882720</commentid>
    <comment_count>11</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2013-04-29 12:21:11 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 200033 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=200033&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/rendering/RenderLayerCompositor.cpp:385
&gt; &gt; +        if (m_headerLayerAwaitingFirstFlush) {
&gt; &gt; +            m_headerLayerAwaitingFirstFlush = false;
&gt; &gt; +            if (page-&gt;requestedLayoutMilestones() &amp; DidFirstFlushForHeaderLayer)
&gt; &gt; +                milestonesAchieved |= DidFirstFlushForHeaderLayer;
&gt; &gt; +        }
&gt; &gt; +
&gt; &gt; +        if (frameView &amp;&amp; frameView-&gt;isAwaitingFirstPaintAfterSuppressedRendering()) {
&gt; 
&gt; Why is m_headerLayerAwaitingFirstFlush here, but isAwaitingFirstPaintAfterSuppressedRendering on FrameView? Because the first is strictly layer-based?
&gt; 

That was my thinking, yes.

&gt; Maybe we should add FrameView::m_milestonesPendingPaint or something, rather than a new flag for each one.
&gt; 

That&apos;s a good idea! I will do that.

&gt; &gt; Source/WebKit2/ChangeLog:21
&gt; &gt; +        This null-check is necessary now since this code ends up running at 
&gt; &gt; +        WebFrame::init() time while we&apos;re setting up the Document. 
&gt; &gt; +        setVisualUpdatesAllowed(true) has always been called as a part of that process, 
&gt; &gt; +        and now the updateLayout(), ends up calling this code too, but we don&apos;t actually 
&gt; &gt; +        have a mainFrame yet since it&apos;s still being created.
&gt; 
&gt; Does this mean we&apos;re doing an extra layout from before? Why isn&apos;t true the default value for VisualUpdatesAllowed?

Simon and I looked at this in person. It does default to true, but ends up getting set to false and then true again because of code propagated by FrameLoader::init(). It&apos;s kind of weird, but it seems okay.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>882743</commentid>
    <comment_count>12</comment_count>
      <attachid>200043</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2013-04-29 13:29:26 -0700</bug_when>
    <thetext>Created attachment 200043
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>882758</commentid>
    <comment_count>13</comment_count>
      <attachid>200043</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2013-04-29 14:09:38 -0700</bug_when>
    <thetext>Comment on attachment 200043
Patch

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

&gt; Source/WebCore/page/FrameView.cpp:3567
&gt; +    if (Page* page = m_frame-&gt;page()) {
&gt; +        if (m_milestonesPendingPaint &amp; DidFirstPaintAfterSuppressedIncrementalRendering) {
&gt; +            removePaintPendingMilestones(DidFirstPaintAfterSuppressedIncrementalRendering);
&gt; +            if (page-&gt;requestedLayoutMilestones() &amp; DidFirstPaintAfterSuppressedIncrementalRendering)
&gt; +                frame()-&gt;loader()-&gt;didLayout(DidFirstPaintAfterSuppressedIncrementalRendering);
&gt; +        }
&gt; +    }

It would be nice to wrap up the &quot;remove and fire&quot; code here and in RenderLayerCompositor into one place.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>882778</commentid>
    <comment_count>14</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2013-04-29 14:53:44 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 200043 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=200043&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/page/FrameView.cpp:3567
&gt; &gt; +    if (Page* page = m_frame-&gt;page()) {
&gt; &gt; +        if (m_milestonesPendingPaint &amp; DidFirstPaintAfterSuppressedIncrementalRendering) {
&gt; &gt; +            removePaintPendingMilestones(DidFirstPaintAfterSuppressedIncrementalRendering);
&gt; &gt; +            if (page-&gt;requestedLayoutMilestones() &amp; DidFirstPaintAfterSuppressedIncrementalRendering)
&gt; &gt; +                frame()-&gt;loader()-&gt;didLayout(DidFirstPaintAfterSuppressedIncrementalRendering);
&gt; &gt; +        }
&gt; &gt; +    }
&gt; 
&gt; It would be nice to wrap up the &quot;remove and fire&quot; code here and in RenderLayerCompositor into one place.

I consolidated this in a new function called FrameView::firePaintRelatedMilestones()

http://trac.webkit.org/changeset/149317</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>199967</attachid>
            <date>2013-04-28 11:59:45 -0700</date>
            <delta_ts>2013-04-28 15:13:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>for-review.txt</filename>
            <type>text/plain</type>
            <size>6778</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0OTI1OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBACisyMDEzLTA0LTI4ICBCZXRoIERh
a2luICA8YmRha2luQGFwcGxlLmNvbT4KKworICAgICAgICBOZWVkIGEgTGF5b3V0TWlsZXN0b25l
IHRvIGZpcmUgd2hlbiB3ZSBoYXZlIGRvbmUgb3VyIGZpcnN0IHBhaW50IGFmdGVyIHN1cHByZXNz
aW5nIAorICAgICAgICBpbmNyZW1lbnRhbCBsYXlvdXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNTMzMAorICAgICAgICAtYW5kIGNvcnJlc3BvbmRp
bmctCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMjcyMjM2NT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJZiBsYXlvdXQgaXMgbmVlZGVkIHdoZW4g
c2V0VmlzdWFsVXBkYXRlc0FsbG93ZWQodHJ1ZSkgaXMgY2FsbGVkLCB3ZSBuZWVkIHRvIAorICAg
ICAgICB1cGRhdGUgaXQgc28gdGhhdCB3ZSBjYW4gZ3VhcmFudGVlIHRoZSBmaXJzdCBwYWludCBp
cyByZWFsbHkgaGFwcGVuaW5nIGF0IHRoaXMgCisgICAgICAgIHRpbWUuCisgICAgICAgICogZG9t
L0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzZXRWaXN1YWxVcGRh
dGVzQWxsb3dlZCk6CisKKyAgICAgICAgTmV3IG1pbGxzdG9uZSBpcyBjYWxsZWQgRGlkRmlyc3RQ
YWludEFmdGVyU3VwcHJlc3NlZEluY3JlbWVudGFsUmVuZGVyaW5nLgorICAgICAgICAqIHBhZ2Uv
TGF5b3V0TWlsZXN0b25lcy5oOgorCiAyMDEzLTA0LTI4ICBDaHJpc3RvcGhlIER1bWV6ICA8Y2gu
ZHVtZXpAc2lzYS5zYW1zdW5nLmNvbT4KIAogICAgICAgICBHZXQgcmlkIG9mIFtDYWxsYmFja10g
SURMIGV4dGVuZGVkIGF0dHJpYnV0ZSBmb3IgcGFyYW1ldGVycwpJbmRleDogU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuY3BwCShyZXZpc2lvbiAxNDkyNTgpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjkwLDExICsxMjkwLDggQEAgdm9pZCBEb2N1bWVu
dDo6c2V0VmlzdWFsVXBkYXRlc0FsbG93ZWQoYgogCiAgICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcg
PSB2aWV3KCk7CiAgICAgYm9vbCBuZWVkc0xheW91dCA9IGZyYW1lVmlldyAmJiByZW5kZXJlcigp
ICYmIChmcmFtZVZpZXctPmxheW91dFBlbmRpbmcoKSB8fCByZW5kZXJlcigpLT5uZWVkc0xheW91
dCgpKTsKLSAgICBpZiAobmVlZHNMYXlvdXQpIHsKLSAgICAgICAgLy8gVGhlcmUgbWlnaHQgYmUg
YSBsYXlvdXQgcGVuZGluZywgc28gbWFrZSBzdXJlIHdlIGRvbid0IHVwZGF0ZSB0aGUgc2NyZWVu
IHdpdGggYm9ndXMgZGF0YS4KLSAgICAgICAgLy8gVGhlIGxheW91dCB3aWxsIGFjdHVhbGx5IHVw
ZGF0ZSB0aGUgY29tcG9zaXRpbmcgbGF5ZXJzIGFuZCByZXBhaW50IGlmIG5lZWRlZC4KLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAobmVlZHNMYXlvdXQpCisgICAgICAgIHVwZGF0ZUxh
eW91dCgpOwogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIGlmICh2aWV3
KCkpCkBAIC0xMzAzLDYgKzEzMDAsOSBAQCB2b2lkIERvY3VtZW50OjpzZXRWaXN1YWxVcGRhdGVz
QWxsb3dlZChiCiAKICAgICBpZiAocmVuZGVyZXIoKSkKICAgICAgICAgcmVuZGVyZXIoKS0+cmVw
YWludCgpOworCisgICAgaWYgKHBhZ2UoKS0+cmVxdWVzdGVkTGF5b3V0TWlsZXN0b25lcygpICYg
RGlkRmlyc3RQYWludEFmdGVyU3VwcHJlc3NlZEluY3JlbWVudGFsUmVuZGVyaW5nKQorICAgICAg
ICBmcmFtZSgpLT5sb2FkZXIoKS0+ZGlkTGF5b3V0KERpZEZpcnN0UGFpbnRBZnRlclN1cHByZXNz
ZWRJbmNyZW1lbnRhbFJlbmRlcmluZyk7CiB9CiAKIHZvaWQgRG9jdW1lbnQ6OnZpc3VhbFVwZGF0
ZXNTdXBwcmVzc2lvblRpbWVyRmlyZWQoVGltZXI8RG9jdW1lbnQ+KikKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvTGF5b3V0TWlsZXN0b25lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvTGF5b3V0TWlsZXN0b25lcy5oCShyZXZpc2lvbiAxNDkyNTgpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wYWdlL0xheW91dE1pbGVzdG9uZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyAr
MzIsOCBAQCBlbnVtIExheW91dE1pbGVzdG9uZUZsYWcgewogICAgIERpZEZpcnN0TGF5b3V0ID0g
MSA8PCAwLAogICAgIERpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCA9IDEgPDwgMSwKICAg
ICBEaWRIaXRSZWxldmFudFJlcGFpbnRlZE9iamVjdHNBcmVhVGhyZXNob2xkID0gMSA8PCAyLAot
ICAgIERpZEZpcnN0Rmx1c2hGb3JIZWFkZXJMYXllciA9IDEgPDwgMworICAgIERpZEZpcnN0Rmx1
c2hGb3JIZWFkZXJMYXllciA9IDEgPDwgMywKKyAgICBEaWRGaXJzdFBhaW50QWZ0ZXJTdXBwcmVz
c2VkSW5jcmVtZW50YWxSZW5kZXJpbmcgPSAxIDw8IDQKIH07CiAKIHR5cGVkZWYgdW5zaWduZWQg
TGF5b3V0TWlsZXN0b25lczsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0OTI1OSkKKysrIFNv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3IEBACisy
MDEzLTA0LTI4ICBCZXRoIERha2luICA8YmRha2luQGFwcGxlLmNvbT4KKworICAgICAgICBOZWVk
IGEgTGF5b3V0TWlsZXN0b25lIHRvIGZpcmUgd2hlbiB3ZSBoYXZlIGRvbmUgb3VyIGZpcnN0IHBh
aW50IGFmdGVyIHN1cHByZXNzaW5nIAorICAgICAgICBpbmNyZW1lbnRhbCBsYXlvdXQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNTMzMAorICAgICAg
ICAtYW5kIGNvcnJlc3BvbmRpbmctCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMjcyMjM2NT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOZXcgbWls
bHN0b25lLgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS1BhZ2VMb2FkVHlwZXMuaDoKKyAgICAg
ICAgKiBTaGFyZWQvQVBJL2MvV0tTaGFyZWRBUElDYXN0Lmg6CisgICAgICAgIChXZWJLaXQ6OnRv
V0tMYXlvdXRNaWxlc3RvbmVzKToKKyAgICAgICAgKFdlYktpdDo6dG9MYXlvdXRNaWxlc3RvbmVz
KToKKworICAgICAgICBUaGlzIG51bGwtY2hlY2sgaXMgbmVjZXNzYXJ5IG5vdyBzaW5jZSB0aGlz
IGNvZGUgZW5kcyB1cCBydW5uaW5nIGF0IAorICAgICAgICBXZWJGcmFtZTo6aW5pdCgpIHRpbWUg
d2hpbGUgd2UncmUgc2V0dGluZyB1cCB0aGUgRG9jdW1lbnQuIAorICAgICAgICBzZXRWaXN1YWxV
cGRhdGVzQWxsb3dlZCh0cnVlKSBoYXMgYWx3YXlzIGJlZW4gY2FsbGVkIGFzIGEgcGFydCBvZiB0
aGF0IHByb2Nlc3MsIAorICAgICAgICBhbmQgbm93IHRoZSB1cGRhdGVMYXlvdXQoKSwgZW5kcyB1
cCBjYWxsaW5nIHRoaXMgY29kZSB0b28sIGJ1dCB3ZSBkb24ndCBhY3R1YWxseSAKKyAgICAgICAg
aGF2ZSBhIG1haW5GcmFtZSB5ZXQgc2luY2UgaXQncyBzdGlsbCBiZWluZyBjcmVhdGVkLgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6ZmluZExhcmdlc3RGcmFtZUluRnJhbWVTZXQpOgorCiAyMDEzLTA0LTI2
ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIE93
blB0cjxQbHVnaW5Db250cm9sbGVyUHJveHk+IGZvciBzdG9yaW5nIHBsdWctaW4gY29udHJvbGxl
cnMgaW4gV2ViUHJvY2Vzc0Nvbm5lY3Rpb24KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9B
UEkvYy9XS1BhZ2VMb2FkVHlwZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvQVBJL2MvV0tQYWdlTG9hZFR5cGVzLmgJKHJldmlzaW9uIDE0OTI1OCkKKysrIFNvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1BhZ2VMb2FkVHlwZXMuaAkod29ya2luZyBjb3B5KQpAQCAt
NTIsNyArNTIsOCBAQCBlbnVtIHsKICAgICBrV0tEaWRGaXJzdExheW91dCA9IDEgPDwgMCwKICAg
ICBrV0tEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQgPSAxIDw8IDEsCiAgICAga1dLRGlk
SGl0UmVsZXZhbnRSZXBhaW50ZWRPYmplY3RzQXJlYVRocmVzaG9sZCA9IDEgPDwgMiwKLSAgICBr
V0tSZXNlcnZlZCA9IDEgPDwgMyAvLyBOb3RlIHRoYXQgdGhlIGZvdXJ0aCBtZW1iZXIgb2YgdGhp
cyBlbnVtIGlzIGFjdHVhbGx5IHByaXZhdGUgYW5kIGRlZmluZWQgaW4gV0tQYWdlTG9hZFR5cGVz
UHJpdmF0ZS5oCisgICAga1dLUmVzZXJ2ZWQgPSAxIDw8IDMsIC8vIE5vdGUgdGhhdCB0aGUgZm91
cnRoIG1lbWJlciBvZiB0aGlzIGVudW0gaXMgYWN0dWFsbHkgcHJpdmF0ZSBhbmQgZGVmaW5lZCBp
biBXS1BhZ2VMb2FkVHlwZXNQcml2YXRlLmgKKyAgICBrV0tEaWRGaXJzdFBhaW50QWZ0ZXJTdXBw
cmVzc2VkSW5jcmVtZW50YWxSZW5kZXJpbmcgPSAxIDw8IDQKIH07CiB0eXBlZGVmIHVpbnQzMl90
IFdLTGF5b3V0TWlsZXN0b25lczsKIApJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9j
L1dLU2hhcmVkQVBJQ2FzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9B
UEkvYy9XS1NoYXJlZEFQSUNhc3QuaAkocmV2aXNpb24gMTQ5MjU4KQorKysgU291cmNlL1dlYktp
dDIvU2hhcmVkL0FQSS9jL1dLU2hhcmVkQVBJQ2FzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC04MDIs
NiArODAyLDggQEAgaW5saW5lIFdLTGF5b3V0TWlsZXN0b25lcyB0b1dLTGF5b3V0TWlsZQogICAg
ICAgICB3a01pbGVzdG9uZXMgfD0ga1dLRGlkSGl0UmVsZXZhbnRSZXBhaW50ZWRPYmplY3RzQXJl
YVRocmVzaG9sZDsKICAgICBpZiAobWlsZXN0b25lcyAmIFdlYkNvcmU6OkRpZEZpcnN0Rmx1c2hG
b3JIZWFkZXJMYXllcikKICAgICAgICAgd2tNaWxlc3RvbmVzIHw9IGtXS0RpZEZpcnN0Rmx1c2hG
b3JIZWFkZXJMYXllcjsKKyAgICBpZiAobWlsZXN0b25lcyAmIFdlYkNvcmU6OkRpZEZpcnN0UGFp
bnRBZnRlclN1cHByZXNzZWRJbmNyZW1lbnRhbFJlbmRlcmluZykKKyAgICAgICAgd2tNaWxlc3Rv
bmVzIHw9IGtXS0RpZEZpcnN0UGFpbnRBZnRlclN1cHByZXNzZWRJbmNyZW1lbnRhbFJlbmRlcmlu
ZzsKICAgICAKICAgICByZXR1cm4gd2tNaWxlc3RvbmVzOwogfQpAQCAtODE4LDYgKzgyMCw4IEBA
IGlubGluZSBXZWJDb3JlOjpMYXlvdXRNaWxlc3RvbmVzIHRvTGF5b3UKICAgICAgICAgbWlsZXN0
b25lcyB8PSBXZWJDb3JlOjpEaWRIaXRSZWxldmFudFJlcGFpbnRlZE9iamVjdHNBcmVhVGhyZXNo
b2xkOwogICAgIGlmICh3a01pbGVzdG9uZXMgJiBrV0tEaWRGaXJzdEZsdXNoRm9ySGVhZGVyTGF5
ZXIpCiAgICAgICAgIG1pbGVzdG9uZXMgfD0gV2ViQ29yZTo6RGlkRmlyc3RGbHVzaEZvckhlYWRl
ckxheWVyOworICAgIGlmICh3a01pbGVzdG9uZXMgJiBrV0tEaWRGaXJzdFBhaW50QWZ0ZXJTdXBw
cmVzc2VkSW5jcmVtZW50YWxSZW5kZXJpbmcpCisgICAgICAgIG1pbGVzdG9uZXMgfD0gV2ViQ29y
ZTo6RGlkRmlyc3RQYWludEFmdGVyU3VwcHJlc3NlZEluY3JlbWVudGFsUmVuZGVyaW5nOwogICAg
IAogICAgIHJldHVybiBtaWxlc3RvbmVzOwogfQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNw
cAkocmV2aXNpb24gMTQ5MjU4KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NCw3ICs4NCw3
IEBAIHN0YXRpYyBXZWJGcmFtZSogZmluZExhcmdlc3RGcmFtZUluRnJhbWUKICAgICAvLyBBcHBy
b3hpbWF0ZSB3aGF0IGEgdXNlciBjb3VsZCBjb25zaWRlciBhIGRlZmF1bHQgdGFyZ2V0IGZyYW1l
IGZvciBhcHBsaWNhdGlvbiBtZW51IG9wZXJhdGlvbnMuCiAKICAgICBXZWJGcmFtZSogbWFpbkZy
YW1lID0gcGFnZS0+bWFpbldlYkZyYW1lKCk7Ci0gICAgaWYgKCFtYWluRnJhbWUtPmlzRnJhbWVT
ZXQoKSkKKyAgICBpZiAoIW1haW5GcmFtZSB8fCAhbWFpbkZyYW1lLT5pc0ZyYW1lU2V0KCkpCiAg
ICAgICAgIHJldHVybiAwOwogCiAgICAgV2ViRnJhbWUqIGxhcmdlc3RTb0ZhciA9IDA7Cg==
</data>
<flag name="review"
          id="221445"
          type_id="1"
          status="-"
          setter="simon.fraser"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>199971</attachid>
            <date>2013-04-28 15:13:53 -0700</date>
            <delta_ts>2013-04-29 11:36:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>for-review-2.txt</filename>
            <type>text/plain</type>
            <size>13046</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0OTI2MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ1IEBACisyMDEzLTA0LTI4ICBCZXRoIERh
a2luICA8YmRha2luQGFwcGxlLmNvbT4KKworICAgICAgICBOZWVkIGEgTGF5b3V0TWlsZXN0b25l
IHRvIGZpcmUgd2hlbiB3ZSBoYXZlIGRvbmUgb3VyIGZpcnN0IHBhaW50IGFmdGVyIHN1cHByZXNz
aW5nIAorICAgICAgICBpbmNyZW1lbnRhbCBsYXlvdXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNTMzMAorICAgICAgICAtYW5kIGNvcnJlc3BvbmRp
bmctCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMjcyMjM2NT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUbyBtZWV0IHRoZSBuZWVkcyBvZiBhbGwg
b2Ygb3VyIGNsaWVudHMsIHdlIHJlYWxseSBuZWVkIHR3byBtaWxlc3RvbmVzLiBPbmUgCisgICAg
ICAgIGluZGljYXRpbmcgdGhhdCBhIGxheW91dCBoYXMgaGFwcGVuZWQgYWZ0ZXIgc2V0VmlzdWFs
VXBkYXRlc0FsbG93ZWQodHJ1ZSksIGFuZCAKKyAgICAgICAgYW5vdGhlciBpbmRpY2F0aW5nIHRo
YXQgcGFpbnRpbmcgaGFzIGhhcHBlbmVkLgorCisgICAgICAgIElmIGxheW91dCBpcyBuZWVkZWQg
d2hlbiBzZXRWaXN1YWxVcGRhdGVzQWxsb3dlZCh0cnVlKSBpcyBjYWxsZWQsIHdlIG5lZWQgdG8g
CisgICAgICAgIHVwZGF0ZSBpdCBzbyB0aGF0IHdlIGNhbiBndWFyYW50ZWUgdGhlIGZpcnN0IHBh
aW50IGlzIHJlYWxseSBoYXBwZW5pbmcgYXQgdGhpcyAKKyAgICAgICAgdGltZS4gQWxzbyBmaXJl
IHRoZSBEaWRGaXJzdExheW91dEFmdGVyU3VwcHJlc3NlZEluY3JlbWVudGFsUmVuZGVyaW5nIG1p
bGVzdG9uZSwgCisgICAgICAgIGFuZCBjYWxsIEZyYW1lVmlldzo6IHNldElzQXdhaXRpbmdGaXJz
dFBhaW50QWZ0ZXJTdXBwcmVzc2VkUmVuZGVyaW5nKHRydWUpIHRvIHNldCAKKyAgICAgICAgdXAg
dGhlIHBhaW50aW5nIG1pbGVzdG9uZS4KKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNldFZpc3VhbFVwZGF0ZXNBbGxvd2VkKToKKworICAg
ICAgICBGb3Igbm9uLWFjY2VsZXJhdGVkIHBhaW50aW5nLCB3ZSBjYW4gZmlyZSAKKyAgICAgICAg
RGlkRmlyc3RQYWludEFmdGVyU3VwcHJlc3NlZEluY3JlbWVudGFsUmVuZGVyaW5nIGhlcmUuCisg
ICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3
OjpGcmFtZVZpZXcpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpwYWludENvbnRlbnRz
KToKKworICAgICAgICBOZXcgYm9vbCB0byBrZWVwIHRyYWNrIG9mIG91ciBwZW5kaW5nIG5lZWQg
dG8gc2VuZCB0aGUgcGFpbnRpbmcgbWlsZXN0b25lLgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3
Lmg6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmlzQXdhaXRpbmdGaXJzdFBhaW50QWZ0
ZXJTdXBwcmVzc2VkUmVuZGVyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6c2V0
SXNBd2FpdGluZ0ZpcnN0UGFpbnRBZnRlclN1cHByZXNzZWRSZW5kZXJpbmcpOgorICAgICAgICAo
RnJhbWVWaWV3KToKKworICAgICAgICBUd28gbmV3IG1pbGVzdG9uZXMuCisgICAgICAgICogcGFn
ZS9MYXlvdXRNaWxlc3RvbmVzLmg6CisKKyAgICAgICAgRm9yIGFjY2VsZXJhdGVkIHBhaW50aW5n
LCB3ZSBjYW4gZmlyZSAKKyAgICAgICAgRGlkRmlyc3RQYWludEFmdGVyU3VwcHJlc3NlZEluY3Jl
bWVudGFsUmVuZGVyaW5nIGhlcmUuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQ29t
cG9zaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OmZs
dXNoUGVuZGluZ0xheWVyQ2hhbmdlcyk6CisKIDIwMTMtMDQtMjggIERlYW4gSmFja3NvbiAgPGRp
bm9AYXBwbGUuY29tPgogCiAgICAgICAgIFtNYWNdIERpc2FibGUgY2FudmFzIGJhY2tpbmcgc3Rv
cmUgc2NhbGluZyAoSElHSF9EUElfQ0FOVkFTKQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
CShyZXZpc2lvbiAxNDkyNTgpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMjkwLDEwICsxMjkwLDE0IEBAIHZvaWQgRG9jdW1lbnQ6OnNldFZp
c3VhbFVwZGF0ZXNBbGxvd2VkKGIKIAogICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0gdmlldygp
OwogICAgIGJvb2wgbmVlZHNMYXlvdXQgPSBmcmFtZVZpZXcgJiYgcmVuZGVyZXIoKSAmJiAoZnJh
bWVWaWV3LT5sYXlvdXRQZW5kaW5nKCkgfHwgcmVuZGVyZXIoKS0+bmVlZHNMYXlvdXQoKSk7Ci0g
ICAgaWYgKG5lZWRzTGF5b3V0KSB7Ci0gICAgICAgIC8vIFRoZXJlIG1pZ2h0IGJlIGEgbGF5b3V0
IHBlbmRpbmcsIHNvIG1ha2Ugc3VyZSB3ZSBkb24ndCB1cGRhdGUgdGhlIHNjcmVlbiB3aXRoIGJv
Z3VzIGRhdGEuCi0gICAgICAgIC8vIFRoZSBsYXlvdXQgd2lsbCBhY3R1YWxseSB1cGRhdGUgdGhl
IGNvbXBvc2l0aW5nIGxheWVycyBhbmQgcmVwYWludCBpZiBuZWVkZWQuCi0gICAgICAgIHJldHVy
bjsKKyAgICBpZiAobmVlZHNMYXlvdXQpCisgICAgICAgIHVwZGF0ZUxheW91dCgpOworCisgICAg
aWYgKFBhZ2UqIHBhZ2UgPSB0aGlzLT5wYWdlKCkpIHsKKyAgICAgICAgaWYgKGZyYW1lKCkgPT0g
cGFnZS0+bWFpbkZyYW1lKCkpCisgICAgICAgICAgICBmcmFtZVZpZXctPnNldElzQXdhaXRpbmdG
aXJzdFBhaW50QWZ0ZXJTdXBwcmVzc2VkUmVuZGVyaW5nKHRydWUpOworICAgICAgICBpZiAocGFn
ZS0+cmVxdWVzdGVkTGF5b3V0TWlsZXN0b25lcygpICYgRGlkRmlyc3RMYXlvdXRBZnRlclN1cHBy
ZXNzZWRJbmNyZW1lbnRhbFJlbmRlcmluZykKKyAgICAgICAgICAgIGZyYW1lKCktPmxvYWRlcigp
LT5kaWRMYXlvdXQoRGlkRmlyc3RMYXlvdXRBZnRlclN1cHByZXNzZWRJbmNyZW1lbnRhbFJlbmRl
cmluZyk7CiAgICAgfQogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAkocmV2aXNpb24gMTQ5MjU4KQorKysgU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTgsNiArMTk4LDcg
QEAgRnJhbWVWaWV3OjpGcmFtZVZpZXcoRnJhbWUqIGZyYW1lKQogICAgICwgbV9kaWRSdW5BdXRv
c2l6ZShmYWxzZSkKICAgICAsIG1faGVhZGVySGVpZ2h0KDApCiAgICAgLCBtX2Zvb3RlckhlaWdo
dCgwKQorICAgICwgbV9hd2FpdGluZ0ZpcnN0UGFpbnRBZnRlclN1cHByZXNzZWRSZW5kZXJpbmco
ZmFsc2UpCiAjaWYgRU5BQkxFKENTU19GSUxURVJTKQogICAgICwgbV9oYXNTb2Z0d2FyZUZpbHRl
cnMoZmFsc2UpCiAjZW5kaWYKQEAgLTM1NTYsNiArMzU1NywxNCBAQCB2b2lkIEZyYW1lVmlldzo6
cGFpbnRDb250ZW50cyhHcmFwaGljc0NvCiAgICAgICAgIHNDdXJyZW50UGFpbnRUaW1lU3RhbXAg
PSAwOwogCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRQYWludChyZW5kZXJWaWV3
LCBwLCByZWN0KTsKKworICAgIGlmIChQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpKSB7Cisg
ICAgICAgIGlmIChtX2F3YWl0aW5nRmlyc3RQYWludEFmdGVyU3VwcHJlc3NlZFJlbmRlcmluZykg
eworICAgICAgICAgICAgbV9hd2FpdGluZ0ZpcnN0UGFpbnRBZnRlclN1cHByZXNzZWRSZW5kZXJp
bmcgPSBmYWxzZTsKKyAgICAgICAgICAgIGlmIChwYWdlLT5yZXF1ZXN0ZWRMYXlvdXRNaWxlc3Rv
bmVzKCkgJiBEaWRGaXJzdFBhaW50QWZ0ZXJTdXBwcmVzc2VkSW5jcmVtZW50YWxSZW5kZXJpbmcp
CisgICAgICAgICAgICAgICAgZnJhbWUoKS0+bG9hZGVyKCktPmRpZExheW91dChEaWRGaXJzdFBh
aW50QWZ0ZXJTdXBwcmVzc2VkSW5jcmVtZW50YWxSZW5kZXJpbmcpOworICAgICAgICB9CisgICAg
fQogfQogCiB2b2lkIEZyYW1lVmlldzo6c2V0UGFpbnRCZWhhdmlvcihQYWludEJlaGF2aW9yIGJl
aGF2aW9yKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCShyZXZpc2lvbiAxNDkyNTgpCisr
KyBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCSh3b3JraW5nIGNvcHkpCkBAIC00MjEs
NiArNDIxLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsU3RhcnRMaXZlUmVzaXpl
KCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxFbmRMaXZlUmVzaXplKCkgT1ZFUlJJ
REU7CiAKKyAgICBib29sIGlzQXdhaXRpbmdGaXJzdFBhaW50QWZ0ZXJTdXBwcmVzc2VkUmVuZGVy
aW5nKCkgeyByZXR1cm4gbV9hd2FpdGluZ0ZpcnN0UGFpbnRBZnRlclN1cHByZXNzZWRSZW5kZXJp
bmc7IH0KKyAgICB2b2lkIHNldElzQXdhaXRpbmdGaXJzdFBhaW50QWZ0ZXJTdXBwcmVzc2VkUmVu
ZGVyaW5nKGJvb2wgaXNBd2FpdGluZykgeyBtX2F3YWl0aW5nRmlyc3RQYWludEFmdGVyU3VwcHJl
c3NlZFJlbmRlcmluZyA9IGlzQXdhaXRpbmc7IH0KKwogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwg
Ym9vbCBzY3JvbGxDb250ZW50c0Zhc3RQYXRoKGNvbnN0IEludFNpemUmIHNjcm9sbERlbHRhLCBj
b25zdCBJbnRSZWN0JiByZWN0VG9TY3JvbGwsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KTsKICAg
ICB2aXJ0dWFsIHZvaWQgc2Nyb2xsQ29udGVudHNTbG93UGF0aChjb25zdCBJbnRSZWN0JiB1cGRh
dGVSZWN0KTsKQEAgLTYyMyw2ICs2MjYsOCBAQCBwcml2YXRlOgogICAgIGludCBtX2hlYWRlckhl
aWdodDsKICAgICBpbnQgbV9mb290ZXJIZWlnaHQ7CiAKKyAgICBib29sIG1fYXdhaXRpbmdGaXJz
dFBhaW50QWZ0ZXJTdXBwcmVzc2VkUmVuZGVyaW5nOworCiAgICAgc3RhdGljIGRvdWJsZSBzX25v
cm1hbERlZmVycmVkUmVwYWludERlbGF5OwogICAgIHN0YXRpYyBkb3VibGUgc19pbml0aWFsRGVm
ZXJyZWRSZXBhaW50RGVsYXlEdXJpbmdMb2FkaW5nOwogICAgIHN0YXRpYyBkb3VibGUgc19tYXhE
ZWZlcnJlZFJlcGFpbnREZWxheUR1cmluZ0xvYWRpbmc7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
YWdlL0xheW91dE1pbGVzdG9uZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdl
L0xheW91dE1pbGVzdG9uZXMuaAkocmV2aXNpb24gMTQ5MjU4KQorKysgU291cmNlL1dlYkNvcmUv
cGFnZS9MYXlvdXRNaWxlc3RvbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDExICsyOCwxNiBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKy8vIEZJWE1FOiBTb21lIG9mIHRoZXNlIG1pbGVz
dG9uZXMgYXJlIGFib3V0IGxheW91dCwgYW5kIG90aGVycyBhcmUgYWJvdXQgcGFpbnRpbmcuCisv
LyBXZSBzaG91bGQgZWl0aGVyIHJlLW5hbWUgdGhlbSB0byBzb21ldGhpbmcgbW9yZSBnZW5lcmlj
LCBvciBzcGxpdCB0aGVtIGludG8KKy8vIHR3byBlbnVtcyAtLSBvbmUgZm9yIHBhaW50aW5nIGFu
ZCBvbmUgZm9yIGxheW91dC4KIGVudW0gTGF5b3V0TWlsZXN0b25lRmxhZyB7CiAgICAgRGlkRmly
c3RMYXlvdXQgPSAxIDw8IDAsCiAgICAgRGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0ID0g
MSA8PCAxLAogICAgIERpZEhpdFJlbGV2YW50UmVwYWludGVkT2JqZWN0c0FyZWFUaHJlc2hvbGQg
PSAxIDw8IDIsCi0gICAgRGlkRmlyc3RGbHVzaEZvckhlYWRlckxheWVyID0gMSA8PCAzCisgICAg
RGlkRmlyc3RGbHVzaEZvckhlYWRlckxheWVyID0gMSA8PCAzLAorICAgIERpZEZpcnN0TGF5b3V0
QWZ0ZXJTdXBwcmVzc2VkSW5jcmVtZW50YWxSZW5kZXJpbmcgPSAxIDw8IDQsCisgICAgRGlkRmly
c3RQYWludEFmdGVyU3VwcHJlc3NlZEluY3JlbWVudGFsUmVuZGVyaW5nID0gMSA8PCA1CiB9Owog
CiB0eXBlZGVmIHVuc2lnbmVkIExheW91dE1pbGVzdG9uZXM7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAkocmV2aXNpb24g
MTQ5MjU4KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRv
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2MSw4ICszNjEsOCBAQCB2b2lkIFJlbmRlckxheWVy
Q29tcG9zaXRvcjo6Zmx1c2hQZW5kaW5nCiAgICAgQVNTRVJUKCFtX2ZsdXNoaW5nTGF5ZXJzKTsK
ICAgICBtX2ZsdXNoaW5nTGF5ZXJzID0gdHJ1ZTsKIAorICAgIEZyYW1lVmlldyogZnJhbWVWaWV3
ID0gbV9yZW5kZXJWaWV3ID8gbV9yZW5kZXJWaWV3LT5mcmFtZVZpZXcoKSA6IDA7CiAgICAgaWYg
KEdyYXBoaWNzTGF5ZXIqIHJvb3RMYXllciA9IHJvb3RHcmFwaGljc0xheWVyKCkpIHsKLSAgICAg
ICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBtX3JlbmRlclZpZXcgPyBtX3JlbmRlclZpZXctPmZy
YW1lVmlldygpIDogMDsKICAgICAgICAgaWYgKGZyYW1lVmlldykgewogICAgICAgICAgICAgLy8g
SGF2aW5nIGEgbV9jbGlwTGF5ZXIgaW5kaWNhdGVzIHRoYXQgd2UncmUgZG9pbmcgc2Nyb2xsaW5n
IHZpYSBHcmFwaGljc0xheWVycy4KICAgICAgICAgICAgIEludFJlY3QgdmlzaWJsZVJlY3QgPSBt
X2NsaXBMYXllciA/IEludFJlY3QoSW50UG9pbnQoKSwgZnJhbWVWaWV3LT5jb250ZW50c1NpemUo
KSkgOiBmcmFtZVZpZXctPnZpc2libGVDb250ZW50UmVjdCgpOwpAQCAtMzczLDEzICszNzMsMjQg
QEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmZsdXNoUGVuZGluZwogICAgIEFTU0VSVCht
X2ZsdXNoaW5nTGF5ZXJzKTsKICAgICBtX2ZsdXNoaW5nTGF5ZXJzID0gZmFsc2U7CiAKLSAgICBp
ZiAobV9oZWFkZXJMYXllckF3YWl0aW5nRmlyc3RGbHVzaCkgewotICAgICAgICBtX2hlYWRlckxh
eWVyQXdhaXRpbmdGaXJzdEZsdXNoID0gZmFsc2U7Ci0gICAgICAgIGlmIChQYWdlKiBwYWdlID0g
dGhpcy0+cGFnZSgpKSB7Ci0gICAgICAgICAgICBpZiAocGFnZS0+cmVxdWVzdGVkTGF5b3V0TWls
ZXN0b25lcygpICYgRGlkRmlyc3RGbHVzaEZvckhlYWRlckxheWVyKSB7Ci0gICAgICAgICAgICAg
ICAgaWYgKEZyYW1lKiBmcmFtZSA9IHBhZ2UtPm1haW5GcmFtZSgpKQotICAgICAgICAgICAgICAg
ICAgICBmcmFtZS0+bG9hZGVyKCktPmRpZExheW91dChEaWRGaXJzdEZsdXNoRm9ySGVhZGVyTGF5
ZXIpOwotICAgICAgICAgICAgfQorICAgIGlmIChQYWdlKiBwYWdlID0gdGhpcy0+cGFnZSgpKSB7
CisgICAgICAgIExheW91dE1pbGVzdG9uZXMgbWlsZXN0b25lc0FjaGlldmVkID0gMDsKKworICAg
ICAgICBpZiAobV9oZWFkZXJMYXllckF3YWl0aW5nRmlyc3RGbHVzaCkgeworICAgICAgICAgICAg
bV9oZWFkZXJMYXllckF3YWl0aW5nRmlyc3RGbHVzaCA9IGZhbHNlOworICAgICAgICAgICAgaWYg
KHBhZ2UtPnJlcXVlc3RlZExheW91dE1pbGVzdG9uZXMoKSAmIERpZEZpcnN0Rmx1c2hGb3JIZWFk
ZXJMYXllcikKKyAgICAgICAgICAgICAgICBtaWxlc3RvbmVzQWNoaWV2ZWQgfD0gRGlkRmlyc3RG
bHVzaEZvckhlYWRlckxheWVyOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGZyYW1lVmlldyAm
JiBmcmFtZVZpZXctPmlzQXdhaXRpbmdGaXJzdFBhaW50QWZ0ZXJTdXBwcmVzc2VkUmVuZGVyaW5n
KCkpIHsKKyAgICAgICAgICAgIGZyYW1lVmlldy0+c2V0SXNBd2FpdGluZ0ZpcnN0UGFpbnRBZnRl
clN1cHByZXNzZWRSZW5kZXJpbmcoZmFsc2UpOworICAgICAgICAgICAgaWYgKHBhZ2UtPnJlcXVl
c3RlZExheW91dE1pbGVzdG9uZXMoKSAmIERpZEZpcnN0UGFpbnRBZnRlclN1cHByZXNzZWRJbmNy
ZW1lbnRhbFJlbmRlcmluZykKKyAgICAgICAgICAgICAgICBtaWxlc3RvbmVzQWNoaWV2ZWQgfD0g
RGlkRmlyc3RQYWludEFmdGVyU3VwcHJlc3NlZEluY3JlbWVudGFsUmVuZGVyaW5nOworICAgICAg
ICB9CisgICAgICAgICAgICAKKyAgICAgICAgaWYgKG1pbGVzdG9uZXNBY2hpZXZlZCkgeworICAg
ICAgICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IHBhZ2UtPm1haW5GcmFtZSgpKQorICAgICAgICAg
ICAgICAgIGZyYW1lLT5sb2FkZXIoKS0+ZGlkTGF5b3V0KG1pbGVzdG9uZXNBY2hpZXZlZCk7CiAg
ICAgICAgIH0KICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0OTI1OSkKKysrIFNv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3IEBACisy
MDEzLTA0LTI4ICBCZXRoIERha2luICA8YmRha2luQGFwcGxlLmNvbT4KKworICAgICAgICBOZWVk
IGEgTGF5b3V0TWlsZXN0b25lIHRvIGZpcmUgd2hlbiB3ZSBoYXZlIGRvbmUgb3VyIGZpcnN0IHBh
aW50IGFmdGVyIHN1cHByZXNzaW5nIAorICAgICAgICBpbmNyZW1lbnRhbCBsYXlvdXQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNTMzMAorICAgICAg
ICAtYW5kIGNvcnJlc3BvbmRpbmctCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMjcyMjM2NT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUd28gbmV3
IG1pbGxzdG9uZXMuCisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLUGFnZUxvYWRUeXBlcy5oOgor
ICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS1NoYXJlZEFQSUNhc3QuaDoKKyAgICAgICAgKFdlYktp
dDo6dG9XS0xheW91dE1pbGVzdG9uZXMpOgorICAgICAgICAoV2ViS2l0Ojp0b0xheW91dE1pbGVz
dG9uZXMpOgorCisgICAgICAgIFRoaXMgbnVsbC1jaGVjayBpcyBuZWNlc3Nhcnkgbm93IHNpbmNl
IHRoaXMgY29kZSBlbmRzIHVwIHJ1bm5pbmcgYXQgCisgICAgICAgIFdlYkZyYW1lOjppbml0KCkg
dGltZSB3aGlsZSB3ZSdyZSBzZXR0aW5nIHVwIHRoZSBEb2N1bWVudC4gCisgICAgICAgIHNldFZp
c3VhbFVwZGF0ZXNBbGxvd2VkKHRydWUpIGhhcyBhbHdheXMgYmVlbiBjYWxsZWQgYXMgYSBwYXJ0
IG9mIHRoYXQgcHJvY2VzcywgCisgICAgICAgIGFuZCBub3cgdGhlIHVwZGF0ZUxheW91dCgpLCBl
bmRzIHVwIGNhbGxpbmcgdGhpcyBjb2RlIHRvbywgYnV0IHdlIGRvbid0IGFjdHVhbGx5IAorICAg
ICAgICBoYXZlIGEgbWFpbkZyYW1lIHlldCBzaW5jZSBpdCdzIHN0aWxsIGJlaW5nIGNyZWF0ZWQu
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpmaW5kTGFyZ2VzdEZyYW1lSW5GcmFtZVNldCk6CisKIDIwMTMt
MDQtMjYgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBV
c2UgT3duUHRyPFBsdWdpbkNvbnRyb2xsZXJQcm94eT4gZm9yIHN0b3JpbmcgcGx1Zy1pbiBjb250
cm9sbGVycyBpbiBXZWJQcm9jZXNzQ29ubmVjdGlvbgpJbmRleDogU291cmNlL1dlYktpdDIvU2hh
cmVkL0FQSS9jL1dLUGFnZUxvYWRUeXBlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1NoYXJlZC9BUEkvYy9XS1BhZ2VMb2FkVHlwZXMuaAkocmV2aXNpb24gMTQ5MjU4KQorKysgU291
cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLUGFnZUxvYWRUeXBlcy5oCSh3b3JraW5nIGNvcHkp
CkBAIC01Miw3ICs1Miw5IEBAIGVudW0gewogICAgIGtXS0RpZEZpcnN0TGF5b3V0ID0gMSA8PCAw
LAogICAgIGtXS0RpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCA9IDEgPDwgMSwKICAgICBr
V0tEaWRIaXRSZWxldmFudFJlcGFpbnRlZE9iamVjdHNBcmVhVGhyZXNob2xkID0gMSA8PCAyLAot
ICAgIGtXS1Jlc2VydmVkID0gMSA8PCAzIC8vIE5vdGUgdGhhdCB0aGUgZm91cnRoIG1lbWJlciBv
ZiB0aGlzIGVudW0gaXMgYWN0dWFsbHkgcHJpdmF0ZSBhbmQgZGVmaW5lZCBpbiBXS1BhZ2VMb2Fk
VHlwZXNQcml2YXRlLmgKKyAgICBrV0tSZXNlcnZlZCA9IDEgPDwgMywgLy8gTm90ZSB0aGF0IHRo
ZSBmb3VydGggbWVtYmVyIG9mIHRoaXMgZW51bSBpcyBhY3R1YWxseSBwcml2YXRlIGFuZCBkZWZp
bmVkIGluIFdLUGFnZUxvYWRUeXBlc1ByaXZhdGUuaAorICAgIGtXS0RpZEZpcnN0TGF5b3V0QWZ0
ZXJTdXBwcmVzc2VkSW5jcmVtZW50YWxSZW5kZXJpbmcgPSAxIDw8IDQsCisgICAga1dLRGlkRmly
c3RQYWludEFmdGVyU3VwcHJlc3NlZEluY3JlbWVudGFsUmVuZGVyaW5nID0gMSA8PCA1CiB9Owog
dHlwZWRlZiB1aW50MzJfdCBXS0xheW91dE1pbGVzdG9uZXM7CiAKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1NoYXJlZC9BUEkvYy9XS1NoYXJlZEFQSUNhc3QuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tTaGFyZWRBUElDYXN0LmgJKHJldmlzaW9uIDE0OTI1OCkK
KysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1NoYXJlZEFQSUNhc3QuaAkod29ya2lu
ZyBjb3B5KQpAQCAtODAyLDYgKzgwMiwxMCBAQCBpbmxpbmUgV0tMYXlvdXRNaWxlc3RvbmVzIHRv
V0tMYXlvdXRNaWxlCiAgICAgICAgIHdrTWlsZXN0b25lcyB8PSBrV0tEaWRIaXRSZWxldmFudFJl
cGFpbnRlZE9iamVjdHNBcmVhVGhyZXNob2xkOwogICAgIGlmIChtaWxlc3RvbmVzICYgV2ViQ29y
ZTo6RGlkRmlyc3RGbHVzaEZvckhlYWRlckxheWVyKQogICAgICAgICB3a01pbGVzdG9uZXMgfD0g
a1dLRGlkRmlyc3RGbHVzaEZvckhlYWRlckxheWVyOworICAgIGlmIChtaWxlc3RvbmVzICYgV2Vi
Q29yZTo6RGlkRmlyc3RMYXlvdXRBZnRlclN1cHByZXNzZWRJbmNyZW1lbnRhbFJlbmRlcmluZykK
KyAgICAgICAgd2tNaWxlc3RvbmVzIHw9IGtXS0RpZEZpcnN0TGF5b3V0QWZ0ZXJTdXBwcmVzc2Vk
SW5jcmVtZW50YWxSZW5kZXJpbmc7CisgICAgaWYgKG1pbGVzdG9uZXMgJiBXZWJDb3JlOjpEaWRG
aXJzdFBhaW50QWZ0ZXJTdXBwcmVzc2VkSW5jcmVtZW50YWxSZW5kZXJpbmcpCisgICAgICAgIHdr
TWlsZXN0b25lcyB8PSBrV0tEaWRGaXJzdFBhaW50QWZ0ZXJTdXBwcmVzc2VkSW5jcmVtZW50YWxS
ZW5kZXJpbmc7CiAgICAgCiAgICAgcmV0dXJuIHdrTWlsZXN0b25lczsKIH0KQEAgLTgxOCw2ICs4
MjIsMTAgQEAgaW5saW5lIFdlYkNvcmU6OkxheW91dE1pbGVzdG9uZXMgdG9MYXlvdQogICAgICAg
ICBtaWxlc3RvbmVzIHw9IFdlYkNvcmU6OkRpZEhpdFJlbGV2YW50UmVwYWludGVkT2JqZWN0c0Fy
ZWFUaHJlc2hvbGQ7CiAgICAgaWYgKHdrTWlsZXN0b25lcyAmIGtXS0RpZEZpcnN0Rmx1c2hGb3JI
ZWFkZXJMYXllcikKICAgICAgICAgbWlsZXN0b25lcyB8PSBXZWJDb3JlOjpEaWRGaXJzdEZsdXNo
Rm9ySGVhZGVyTGF5ZXI7CisgICAgaWYgKHdrTWlsZXN0b25lcyAmIGtXS0RpZEZpcnN0TGF5b3V0
QWZ0ZXJTdXBwcmVzc2VkSW5jcmVtZW50YWxSZW5kZXJpbmcpCisgICAgICAgIG1pbGVzdG9uZXMg
fD0gV2ViQ29yZTo6RGlkRmlyc3RMYXlvdXRBZnRlclN1cHByZXNzZWRJbmNyZW1lbnRhbFJlbmRl
cmluZzsKKyAgICBpZiAod2tNaWxlc3RvbmVzICYga1dLRGlkRmlyc3RQYWludEFmdGVyU3VwcHJl
c3NlZEluY3JlbWVudGFsUmVuZGVyaW5nKQorICAgICAgICBtaWxlc3RvbmVzIHw9IFdlYkNvcmU6
OkRpZEZpcnN0UGFpbnRBZnRlclN1cHByZXNzZWRJbmNyZW1lbnRhbFJlbmRlcmluZzsKICAgICAK
ICAgICByZXR1cm4gbWlsZXN0b25lczsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAJ
KHJldmlzaW9uIDE0OTI1OCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODQsNyArODQsNyBA
QCBzdGF0aWMgV2ViRnJhbWUqIGZpbmRMYXJnZXN0RnJhbWVJbkZyYW1lCiAgICAgLy8gQXBwcm94
aW1hdGUgd2hhdCBhIHVzZXIgY291bGQgY29uc2lkZXIgYSBkZWZhdWx0IHRhcmdldCBmcmFtZSBm
b3IgYXBwbGljYXRpb24gbWVudSBvcGVyYXRpb25zLgogCiAgICAgV2ViRnJhbWUqIG1haW5GcmFt
ZSA9IHBhZ2UtPm1haW5XZWJGcmFtZSgpOwotICAgIGlmICghbWFpbkZyYW1lLT5pc0ZyYW1lU2V0
KCkpCisgICAgaWYgKCFtYWluRnJhbWUgfHwgIW1haW5GcmFtZS0+aXNGcmFtZVNldCgpKQogICAg
ICAgICByZXR1cm4gMDsKIAogICAgIFdlYkZyYW1lKiBsYXJnZXN0U29GYXIgPSAwOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>200033</attachid>
            <date>2013-04-29 11:36:15 -0700</date>
            <delta_ts>2013-04-29 13:29:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>for-review-3.txt</filename>
            <type>text/plain</type>
            <size>13410</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0OTI2MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ1IEBACisyMDEzLTA0LTI4ICBCZXRoIERh
a2luICA8YmRha2luQGFwcGxlLmNvbT4KKworICAgICAgICBOZWVkIGEgTGF5b3V0TWlsZXN0b25l
IHRvIGZpcmUgd2hlbiB3ZSBoYXZlIGRvbmUgb3VyIGZpcnN0IHBhaW50IGFmdGVyIHN1cHByZXNz
aW5nIAorICAgICAgICBpbmNyZW1lbnRhbCBsYXlvdXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNTMzMAorICAgICAgICAtYW5kIGNvcnJlc3BvbmRp
bmctCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMjcyMjM2NT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUbyBtZWV0IHRoZSBuZWVkcyBvZiBhbGwg
b2Ygb3VyIGNsaWVudHMsIHdlIHJlYWxseSBuZWVkIHR3byBtaWxlc3RvbmVzLiBPbmUgCisgICAg
ICAgIGluZGljYXRpbmcgdGhhdCBhIGxheW91dCBoYXMgaGFwcGVuZWQgYWZ0ZXIgc2V0VmlzdWFs
VXBkYXRlc0FsbG93ZWQodHJ1ZSksIGFuZCAKKyAgICAgICAgYW5vdGhlciBpbmRpY2F0aW5nIHRo
YXQgcGFpbnRpbmcgaGFzIGhhcHBlbmVkLgorCisgICAgICAgIElmIGxheW91dCBpcyBuZWVkZWQg
d2hlbiBzZXRWaXN1YWxVcGRhdGVzQWxsb3dlZCh0cnVlKSBpcyBjYWxsZWQsIHdlIG5lZWQgdG8g
CisgICAgICAgIHVwZGF0ZSBpdCBzbyB0aGF0IHdlIGNhbiBndWFyYW50ZWUgdGhlIGZpcnN0IHBh
aW50IGlzIHJlYWxseSBoYXBwZW5pbmcgYXQgdGhpcyAKKyAgICAgICAgdGltZS4gQWxzbyBmaXJl
IHRoZSBEaWRGaXJzdExheW91dEFmdGVyU3VwcHJlc3NlZEluY3JlbWVudGFsUmVuZGVyaW5nIG1p
bGVzdG9uZSwgCisgICAgICAgIGFuZCBjYWxsIEZyYW1lVmlldzo6IHNldElzQXdhaXRpbmdGaXJz
dFBhaW50QWZ0ZXJTdXBwcmVzc2VkUmVuZGVyaW5nKHRydWUpIHRvIHNldCAKKyAgICAgICAgdXAg
dGhlIHBhaW50aW5nIG1pbGVzdG9uZS4KKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNldFZpc3VhbFVwZGF0ZXNBbGxvd2VkKToKKworICAg
ICAgICBGb3Igbm9uLWFjY2VsZXJhdGVkIHBhaW50aW5nLCB3ZSBjYW4gZmlyZSAKKyAgICAgICAg
RGlkRmlyc3RQYWludEFmdGVyU3VwcHJlc3NlZEluY3JlbWVudGFsUmVuZGVyaW5nIGhlcmUuCisg
ICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3
OjpGcmFtZVZpZXcpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpwYWludENvbnRlbnRz
KToKKworICAgICAgICBOZXcgYm9vbCB0byBrZWVwIHRyYWNrIG9mIG91ciBwZW5kaW5nIG5lZWQg
dG8gc2VuZCB0aGUgcGFpbnRpbmcgbWlsZXN0b25lLgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3
Lmg6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmlzQXdhaXRpbmdGaXJzdFBhaW50QWZ0
ZXJTdXBwcmVzc2VkUmVuZGVyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6c2V0
SXNBd2FpdGluZ0ZpcnN0UGFpbnRBZnRlclN1cHByZXNzZWRSZW5kZXJpbmcpOgorICAgICAgICAo
RnJhbWVWaWV3KToKKworICAgICAgICBUd28gbmV3IG1pbGVzdG9uZXMuCisgICAgICAgICogcGFn
ZS9MYXlvdXRNaWxlc3RvbmVzLmg6CisKKyAgICAgICAgRm9yIGFjY2VsZXJhdGVkIHBhaW50aW5n
LCB3ZSBjYW4gZmlyZSAKKyAgICAgICAgRGlkRmlyc3RQYWludEFmdGVyU3VwcHJlc3NlZEluY3Jl
bWVudGFsUmVuZGVyaW5nIGhlcmUuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQ29t
cG9zaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OmZs
dXNoUGVuZGluZ0xheWVyQ2hhbmdlcyk6CisKIDIwMTMtMDQtMjggIERlYW4gSmFja3NvbiAgPGRp
bm9AYXBwbGUuY29tPgogCiAgICAgICAgIFtNYWNdIERpc2FibGUgY2FudmFzIGJhY2tpbmcgc3Rv
cmUgc2NhbGluZyAoSElHSF9EUElfQ0FOVkFTKQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
CShyZXZpc2lvbiAxNDkyNTgpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMjkwLDEwICsxMjkwLDE0IEBAIHZvaWQgRG9jdW1lbnQ6OnNldFZp
c3VhbFVwZGF0ZXNBbGxvd2VkKGIKIAogICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0gdmlldygp
OwogICAgIGJvb2wgbmVlZHNMYXlvdXQgPSBmcmFtZVZpZXcgJiYgcmVuZGVyZXIoKSAmJiAoZnJh
bWVWaWV3LT5sYXlvdXRQZW5kaW5nKCkgfHwgcmVuZGVyZXIoKS0+bmVlZHNMYXlvdXQoKSk7Ci0g
ICAgaWYgKG5lZWRzTGF5b3V0KSB7Ci0gICAgICAgIC8vIFRoZXJlIG1pZ2h0IGJlIGEgbGF5b3V0
IHBlbmRpbmcsIHNvIG1ha2Ugc3VyZSB3ZSBkb24ndCB1cGRhdGUgdGhlIHNjcmVlbiB3aXRoIGJv
Z3VzIGRhdGEuCi0gICAgICAgIC8vIFRoZSBsYXlvdXQgd2lsbCBhY3R1YWxseSB1cGRhdGUgdGhl
IGNvbXBvc2l0aW5nIGxheWVycyBhbmQgcmVwYWludCBpZiBuZWVkZWQuCi0gICAgICAgIHJldHVy
bjsKKyAgICBpZiAobmVlZHNMYXlvdXQpCisgICAgICAgIHVwZGF0ZUxheW91dCgpOworCisgICAg
aWYgKFBhZ2UqIHBhZ2UgPSB0aGlzLT5wYWdlKCkpIHsKKyAgICAgICAgaWYgKGZyYW1lKCkgPT0g
cGFnZS0+bWFpbkZyYW1lKCkpCisgICAgICAgICAgICBmcmFtZVZpZXctPnNldElzQXdhaXRpbmdG
aXJzdFBhaW50QWZ0ZXJTdXBwcmVzc2VkUmVuZGVyaW5nKHRydWUpOworICAgICAgICBpZiAocGFn
ZS0+cmVxdWVzdGVkTGF5b3V0TWlsZXN0b25lcygpICYgRGlkRmlyc3RMYXlvdXRBZnRlclN1cHBy
ZXNzZWRJbmNyZW1lbnRhbFJlbmRlcmluZykKKyAgICAgICAgICAgIGZyYW1lKCktPmxvYWRlcigp
LT5kaWRMYXlvdXQoRGlkRmlyc3RMYXlvdXRBZnRlclN1cHByZXNzZWRJbmNyZW1lbnRhbFJlbmRl
cmluZyk7CiAgICAgfQogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpAQCAtMTMw
MSw4ICsxMzA1LDggQEAgdm9pZCBEb2N1bWVudDo6c2V0VmlzdWFsVXBkYXRlc0FsbG93ZWQoYgog
ICAgICAgICB2aWV3KCktPnVwZGF0ZUNvbXBvc2l0aW5nTGF5ZXJzQWZ0ZXJMYXlvdXQoKTsKICNl
bmRpZgogCi0gICAgaWYgKHJlbmRlcmVyKCkpCi0gICAgICAgIHJlbmRlcmVyKCktPnJlcGFpbnQo
KTsKKyAgICBpZiAoUmVuZGVyVmlldyogcmVuZGVyVmlldyA9IHRoaXMtPnJlbmRlclZpZXcoKSkK
KyAgICAgICAgcmVuZGVyVmlldy0+cmVwYWludFZpZXdBbmRDb21wb3NpdGVkTGF5ZXJzKCk7CiB9
CiAKIHZvaWQgRG9jdW1lbnQ6OnZpc3VhbFVwZGF0ZXNTdXBwcmVzc2lvblRpbWVyRmlyZWQoVGlt
ZXI8RG9jdW1lbnQ+KikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAJKHJldmlzaW9u
IDE0OTI1OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTk4LDYgKzE5OCw3IEBAIEZyYW1lVmlldzo6RnJhbWVWaWV3KEZyYW1lKiBmcmFt
ZSkKICAgICAsIG1fZGlkUnVuQXV0b3NpemUoZmFsc2UpCiAgICAgLCBtX2hlYWRlckhlaWdodCgw
KQogICAgICwgbV9mb290ZXJIZWlnaHQoMCkKKyAgICAsIG1fYXdhaXRpbmdGaXJzdFBhaW50QWZ0
ZXJTdXBwcmVzc2VkUmVuZGVyaW5nKGZhbHNlKQogI2lmIEVOQUJMRShDU1NfRklMVEVSUykKICAg
ICAsIG1faGFzU29mdHdhcmVGaWx0ZXJzKGZhbHNlKQogI2VuZGlmCkBAIC0zNTU2LDYgKzM1NTcs
MTQgQEAgdm9pZCBGcmFtZVZpZXc6OnBhaW50Q29udGVudHMoR3JhcGhpY3NDbwogICAgICAgICBz
Q3VycmVudFBhaW50VGltZVN0YW1wID0gMDsKIAogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6ZGlkUGFpbnQocmVuZGVyVmlldywgcCwgcmVjdCk7CisKKyAgICBpZiAoUGFnZSogcGFnZSA9
IG1fZnJhbWUtPnBhZ2UoKSkgeworICAgICAgICBpZiAobV9hd2FpdGluZ0ZpcnN0UGFpbnRBZnRl
clN1cHByZXNzZWRSZW5kZXJpbmcpIHsKKyAgICAgICAgICAgIG1fYXdhaXRpbmdGaXJzdFBhaW50
QWZ0ZXJTdXBwcmVzc2VkUmVuZGVyaW5nID0gZmFsc2U7CisgICAgICAgICAgICBpZiAocGFnZS0+
cmVxdWVzdGVkTGF5b3V0TWlsZXN0b25lcygpICYgRGlkRmlyc3RQYWludEFmdGVyU3VwcHJlc3Nl
ZEluY3JlbWVudGFsUmVuZGVyaW5nKQorICAgICAgICAgICAgICAgIGZyYW1lKCktPmxvYWRlcigp
LT5kaWRMYXlvdXQoRGlkRmlyc3RQYWludEFmdGVyU3VwcHJlc3NlZEluY3JlbWVudGFsUmVuZGVy
aW5nKTsKKyAgICAgICAgfQorICAgIH0KIH0KIAogdm9pZCBGcmFtZVZpZXc6OnNldFBhaW50QmVo
YXZpb3IoUGFpbnRCZWhhdmlvciBiZWhhdmlvcikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcu
aAkocmV2aXNpb24gMTQ5MjU4KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAko
d29ya2luZyBjb3B5KQpAQCAtNDIxLDYgKzQyMSw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgd2lsbFN0YXJ0TGl2ZVJlc2l6ZSgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCB3aWxs
RW5kTGl2ZVJlc2l6ZSgpIE9WRVJSSURFOwogCisgICAgYm9vbCBpc0F3YWl0aW5nRmlyc3RQYWlu
dEFmdGVyU3VwcHJlc3NlZFJlbmRlcmluZygpIHsgcmV0dXJuIG1fYXdhaXRpbmdGaXJzdFBhaW50
QWZ0ZXJTdXBwcmVzc2VkUmVuZGVyaW5nOyB9CisgICAgdm9pZCBzZXRJc0F3YWl0aW5nRmlyc3RQ
YWludEFmdGVyU3VwcHJlc3NlZFJlbmRlcmluZyhib29sIGlzQXdhaXRpbmcpIHsgbV9hd2FpdGlu
Z0ZpcnN0UGFpbnRBZnRlclN1cHByZXNzZWRSZW5kZXJpbmcgPSBpc0F3YWl0aW5nOyB9CisKIHBy
b3RlY3RlZDoKICAgICB2aXJ0dWFsIGJvb2wgc2Nyb2xsQ29udGVudHNGYXN0UGF0aChjb25zdCBJ
bnRTaXplJiBzY3JvbGxEZWx0YSwgY29uc3QgSW50UmVjdCYgcmVjdFRvU2Nyb2xsLCBjb25zdCBJ
bnRSZWN0JiBjbGlwUmVjdCk7CiAgICAgdmlydHVhbCB2b2lkIHNjcm9sbENvbnRlbnRzU2xvd1Bh
dGgoY29uc3QgSW50UmVjdCYgdXBkYXRlUmVjdCk7CkBAIC02MjMsNiArNjI2LDggQEAgcHJpdmF0
ZToKICAgICBpbnQgbV9oZWFkZXJIZWlnaHQ7CiAgICAgaW50IG1fZm9vdGVySGVpZ2h0OwogCisg
ICAgYm9vbCBtX2F3YWl0aW5nRmlyc3RQYWludEFmdGVyU3VwcHJlc3NlZFJlbmRlcmluZzsKKwog
ICAgIHN0YXRpYyBkb3VibGUgc19ub3JtYWxEZWZlcnJlZFJlcGFpbnREZWxheTsKICAgICBzdGF0
aWMgZG91YmxlIHNfaW5pdGlhbERlZmVycmVkUmVwYWludERlbGF5RHVyaW5nTG9hZGluZzsKICAg
ICBzdGF0aWMgZG91YmxlIHNfbWF4RGVmZXJyZWRSZXBhaW50RGVsYXlEdXJpbmdMb2FkaW5nOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9MYXlvdXRNaWxlc3RvbmVzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGFnZS9MYXlvdXRNaWxlc3RvbmVzLmgJKHJldmlzaW9uIDE0OTI1
OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvTGF5b3V0TWlsZXN0b25lcy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yOCwxMSArMjgsMTYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCisvLyBGSVhN
RTogU29tZSBvZiB0aGVzZSBtaWxlc3RvbmVzIGFyZSBhYm91dCBsYXlvdXQsIGFuZCBvdGhlcnMg
YXJlIGFib3V0IHBhaW50aW5nLgorLy8gV2Ugc2hvdWxkIGVpdGhlciByZS1uYW1lIHRoZW0gdG8g
c29tZXRoaW5nIG1vcmUgZ2VuZXJpYywgb3Igc3BsaXQgdGhlbSBpbnRvCisvLyB0d28gZW51bXMg
LS0gb25lIGZvciBwYWludGluZyBhbmQgb25lIGZvciBsYXlvdXQuCiBlbnVtIExheW91dE1pbGVz
dG9uZUZsYWcgewogICAgIERpZEZpcnN0TGF5b3V0ID0gMSA8PCAwLAogICAgIERpZEZpcnN0Vmlz
dWFsbHlOb25FbXB0eUxheW91dCA9IDEgPDwgMSwKICAgICBEaWRIaXRSZWxldmFudFJlcGFpbnRl
ZE9iamVjdHNBcmVhVGhyZXNob2xkID0gMSA8PCAyLAotICAgIERpZEZpcnN0Rmx1c2hGb3JIZWFk
ZXJMYXllciA9IDEgPDwgMworICAgIERpZEZpcnN0Rmx1c2hGb3JIZWFkZXJMYXllciA9IDEgPDwg
MywKKyAgICBEaWRGaXJzdExheW91dEFmdGVyU3VwcHJlc3NlZEluY3JlbWVudGFsUmVuZGVyaW5n
ID0gMSA8PCA0LAorICAgIERpZEZpcnN0UGFpbnRBZnRlclN1cHByZXNzZWRJbmNyZW1lbnRhbFJl
bmRlcmluZyA9IDEgPDwgNQogfTsKIAogdHlwZWRlZiB1bnNpZ25lZCBMYXlvdXRNaWxlc3RvbmVz
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29t
cG9zaXRvci5jcHAJKHJldmlzaW9uIDE0OTI1OCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNjEsOCArMzYx
LDggQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmZsdXNoUGVuZGluZwogICAgIEFTU0VS
VCghbV9mbHVzaGluZ0xheWVycyk7CiAgICAgbV9mbHVzaGluZ0xheWVycyA9IHRydWU7CiAKKyAg
ICBGcmFtZVZpZXcqIGZyYW1lVmlldyA9IG1fcmVuZGVyVmlldyA/IG1fcmVuZGVyVmlldy0+ZnJh
bWVWaWV3KCkgOiAwOwogICAgIGlmIChHcmFwaGljc0xheWVyKiByb290TGF5ZXIgPSByb290R3Jh
cGhpY3NMYXllcigpKSB7Ci0gICAgICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0gbV9yZW5kZXJW
aWV3ID8gbV9yZW5kZXJWaWV3LT5mcmFtZVZpZXcoKSA6IDA7CiAgICAgICAgIGlmIChmcmFtZVZp
ZXcpIHsKICAgICAgICAgICAgIC8vIEhhdmluZyBhIG1fY2xpcExheWVyIGluZGljYXRlcyB0aGF0
IHdlJ3JlIGRvaW5nIHNjcm9sbGluZyB2aWEgR3JhcGhpY3NMYXllcnMuCiAgICAgICAgICAgICBJ
bnRSZWN0IHZpc2libGVSZWN0ID0gbV9jbGlwTGF5ZXIgPyBJbnRSZWN0KEludFBvaW50KCksIGZy
YW1lVmlldy0+Y29udGVudHNTaXplKCkpIDogZnJhbWVWaWV3LT52aXNpYmxlQ29udGVudFJlY3Qo
KTsKQEAgLTM3MywxMyArMzczLDI0IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpmbHVz
aFBlbmRpbmcKICAgICBBU1NFUlQobV9mbHVzaGluZ0xheWVycyk7CiAgICAgbV9mbHVzaGluZ0xh
eWVycyA9IGZhbHNlOwogCi0gICAgaWYgKG1faGVhZGVyTGF5ZXJBd2FpdGluZ0ZpcnN0Rmx1c2gp
IHsKLSAgICAgICAgbV9oZWFkZXJMYXllckF3YWl0aW5nRmlyc3RGbHVzaCA9IGZhbHNlOwotICAg
ICAgICBpZiAoUGFnZSogcGFnZSA9IHRoaXMtPnBhZ2UoKSkgewotICAgICAgICAgICAgaWYgKHBh
Z2UtPnJlcXVlc3RlZExheW91dE1pbGVzdG9uZXMoKSAmIERpZEZpcnN0Rmx1c2hGb3JIZWFkZXJM
YXllcikgewotICAgICAgICAgICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBwYWdlLT5tYWluRnJh
bWUoKSkKLSAgICAgICAgICAgICAgICAgICAgZnJhbWUtPmxvYWRlcigpLT5kaWRMYXlvdXQoRGlk
Rmlyc3RGbHVzaEZvckhlYWRlckxheWVyKTsKLSAgICAgICAgICAgIH0KKyAgICBpZiAoUGFnZSog
cGFnZSA9IHRoaXMtPnBhZ2UoKSkgeworICAgICAgICBMYXlvdXRNaWxlc3RvbmVzIG1pbGVzdG9u
ZXNBY2hpZXZlZCA9IDA7CisKKyAgICAgICAgaWYgKG1faGVhZGVyTGF5ZXJBd2FpdGluZ0ZpcnN0
Rmx1c2gpIHsKKyAgICAgICAgICAgIG1faGVhZGVyTGF5ZXJBd2FpdGluZ0ZpcnN0Rmx1c2ggPSBm
YWxzZTsKKyAgICAgICAgICAgIGlmIChwYWdlLT5yZXF1ZXN0ZWRMYXlvdXRNaWxlc3RvbmVzKCkg
JiBEaWRGaXJzdEZsdXNoRm9ySGVhZGVyTGF5ZXIpCisgICAgICAgICAgICAgICAgbWlsZXN0b25l
c0FjaGlldmVkIHw9IERpZEZpcnN0Rmx1c2hGb3JIZWFkZXJMYXllcjsKKyAgICAgICAgfQorCisg
ICAgICAgIGlmIChmcmFtZVZpZXcgJiYgZnJhbWVWaWV3LT5pc0F3YWl0aW5nRmlyc3RQYWludEFm
dGVyU3VwcHJlc3NlZFJlbmRlcmluZygpKSB7CisgICAgICAgICAgICBmcmFtZVZpZXctPnNldElz
QXdhaXRpbmdGaXJzdFBhaW50QWZ0ZXJTdXBwcmVzc2VkUmVuZGVyaW5nKGZhbHNlKTsKKyAgICAg
ICAgICAgIGlmIChwYWdlLT5yZXF1ZXN0ZWRMYXlvdXRNaWxlc3RvbmVzKCkgJiBEaWRGaXJzdFBh
aW50QWZ0ZXJTdXBwcmVzc2VkSW5jcmVtZW50YWxSZW5kZXJpbmcpCisgICAgICAgICAgICAgICAg
bWlsZXN0b25lc0FjaGlldmVkIHw9IERpZEZpcnN0UGFpbnRBZnRlclN1cHByZXNzZWRJbmNyZW1l
bnRhbFJlbmRlcmluZzsKKyAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgIGlmIChtaWxl
c3RvbmVzQWNoaWV2ZWQpIHsKKyAgICAgICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBwYWdlLT5t
YWluRnJhbWUoKSkKKyAgICAgICAgICAgICAgICBmcmFtZS0+bG9hZGVyKCktPmRpZExheW91dCht
aWxlc3RvbmVzQWNoaWV2ZWQpOwogICAgICAgICB9CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAxNDkyNTkpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwyNyBAQAorMjAxMy0wNC0yOCAgQmV0aCBEYWtpbiAgPGJkYWtpbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgTmVlZCBhIExheW91dE1pbGVzdG9uZSB0byBmaXJlIHdoZW4gd2Ug
aGF2ZSBkb25lIG91ciBmaXJzdCBwYWludCBhZnRlciBzdXBwcmVzc2luZyAKKyAgICAgICAgaW5j
cmVtZW50YWwgbGF5b3V0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMTUzMzAKKyAgICAgICAgLWFuZCBjb3JyZXNwb25kaW5nLQorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vMTI3MjIzNjU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVHdvIG5ldyBtaWxsc3RvbmVzLgorICAgICAgICAqIFNoYXJlZC9BUEkv
Yy9XS1BhZ2VMb2FkVHlwZXMuaDoKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tTaGFyZWRBUElD
YXN0Lmg6CisgICAgICAgIChXZWJLaXQ6OnRvV0tMYXlvdXRNaWxlc3RvbmVzKToKKyAgICAgICAg
KFdlYktpdDo6dG9MYXlvdXRNaWxlc3RvbmVzKToKKworICAgICAgICBUaGlzIG51bGwtY2hlY2sg
aXMgbmVjZXNzYXJ5IG5vdyBzaW5jZSB0aGlzIGNvZGUgZW5kcyB1cCBydW5uaW5nIGF0IAorICAg
ICAgICBXZWJGcmFtZTo6aW5pdCgpIHRpbWUgd2hpbGUgd2UncmUgc2V0dGluZyB1cCB0aGUgRG9j
dW1lbnQuIAorICAgICAgICBzZXRWaXN1YWxVcGRhdGVzQWxsb3dlZCh0cnVlKSBoYXMgYWx3YXlz
IGJlZW4gY2FsbGVkIGFzIGEgcGFydCBvZiB0aGF0IHByb2Nlc3MsIAorICAgICAgICBhbmQgbm93
IHRoZSB1cGRhdGVMYXlvdXQoKSwgZW5kcyB1cCBjYWxsaW5nIHRoaXMgY29kZSB0b28sIGJ1dCB3
ZSBkb24ndCBhY3R1YWxseSAKKyAgICAgICAgaGF2ZSBhIG1haW5GcmFtZSB5ZXQgc2luY2UgaXQn
cyBzdGlsbCBiZWluZyBjcmVhdGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6ZmluZExhcmdlc3RGcmFt
ZUluRnJhbWVTZXQpOgorCiAyMDEzLTA0LTI2ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBh
cHBsZS5jb20+CiAKICAgICAgICAgVXNlIE93blB0cjxQbHVnaW5Db250cm9sbGVyUHJveHk+IGZv
ciBzdG9yaW5nIHBsdWctaW4gY29udHJvbGxlcnMgaW4gV2ViUHJvY2Vzc0Nvbm5lY3Rpb24KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1BhZ2VMb2FkVHlwZXMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tQYWdlTG9hZFR5cGVzLmgJKHJl
dmlzaW9uIDE0OTI1OCkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1BhZ2VMb2Fk
VHlwZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNTIsNyArNTIsOSBAQCBlbnVtIHsKICAgICBrV0tE
aWRGaXJzdExheW91dCA9IDEgPDwgMCwKICAgICBrV0tEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlM
YXlvdXQgPSAxIDw8IDEsCiAgICAga1dLRGlkSGl0UmVsZXZhbnRSZXBhaW50ZWRPYmplY3RzQXJl
YVRocmVzaG9sZCA9IDEgPDwgMiwKLSAgICBrV0tSZXNlcnZlZCA9IDEgPDwgMyAvLyBOb3RlIHRo
YXQgdGhlIGZvdXJ0aCBtZW1iZXIgb2YgdGhpcyBlbnVtIGlzIGFjdHVhbGx5IHByaXZhdGUgYW5k
IGRlZmluZWQgaW4gV0tQYWdlTG9hZFR5cGVzUHJpdmF0ZS5oCisgICAga1dLUmVzZXJ2ZWQgPSAx
IDw8IDMsIC8vIE5vdGUgdGhhdCB0aGUgZm91cnRoIG1lbWJlciBvZiB0aGlzIGVudW0gaXMgYWN0
dWFsbHkgcHJpdmF0ZSBhbmQgZGVmaW5lZCBpbiBXS1BhZ2VMb2FkVHlwZXNQcml2YXRlLmgKKyAg
ICBrV0tEaWRGaXJzdExheW91dEFmdGVyU3VwcHJlc3NlZEluY3JlbWVudGFsUmVuZGVyaW5nID0g
MSA8PCA0LAorICAgIGtXS0RpZEZpcnN0UGFpbnRBZnRlclN1cHByZXNzZWRJbmNyZW1lbnRhbFJl
bmRlcmluZyA9IDEgPDwgNQogfTsKIHR5cGVkZWYgdWludDMyX3QgV0tMYXlvdXRNaWxlc3RvbmVz
OwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tTaGFyZWRBUElDYXN0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLU2hhcmVkQVBJQ2Fz
dC5oCShyZXZpc2lvbiAxNDkyNTgpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tT
aGFyZWRBUElDYXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTgwMiw2ICs4MDIsMTAgQEAgaW5saW5l
IFdLTGF5b3V0TWlsZXN0b25lcyB0b1dLTGF5b3V0TWlsZQogICAgICAgICB3a01pbGVzdG9uZXMg
fD0ga1dLRGlkSGl0UmVsZXZhbnRSZXBhaW50ZWRPYmplY3RzQXJlYVRocmVzaG9sZDsKICAgICBp
ZiAobWlsZXN0b25lcyAmIFdlYkNvcmU6OkRpZEZpcnN0Rmx1c2hGb3JIZWFkZXJMYXllcikKICAg
ICAgICAgd2tNaWxlc3RvbmVzIHw9IGtXS0RpZEZpcnN0Rmx1c2hGb3JIZWFkZXJMYXllcjsKKyAg
ICBpZiAobWlsZXN0b25lcyAmIFdlYkNvcmU6OkRpZEZpcnN0TGF5b3V0QWZ0ZXJTdXBwcmVzc2Vk
SW5jcmVtZW50YWxSZW5kZXJpbmcpCisgICAgICAgIHdrTWlsZXN0b25lcyB8PSBrV0tEaWRGaXJz
dExheW91dEFmdGVyU3VwcHJlc3NlZEluY3JlbWVudGFsUmVuZGVyaW5nOworICAgIGlmIChtaWxl
c3RvbmVzICYgV2ViQ29yZTo6RGlkRmlyc3RQYWludEFmdGVyU3VwcHJlc3NlZEluY3JlbWVudGFs
UmVuZGVyaW5nKQorICAgICAgICB3a01pbGVzdG9uZXMgfD0ga1dLRGlkRmlyc3RQYWludEFmdGVy
U3VwcHJlc3NlZEluY3JlbWVudGFsUmVuZGVyaW5nOwogICAgIAogICAgIHJldHVybiB3a01pbGVz
dG9uZXM7CiB9CkBAIC04MTgsNiArODIyLDEwIEBAIGlubGluZSBXZWJDb3JlOjpMYXlvdXRNaWxl
c3RvbmVzIHRvTGF5b3UKICAgICAgICAgbWlsZXN0b25lcyB8PSBXZWJDb3JlOjpEaWRIaXRSZWxl
dmFudFJlcGFpbnRlZE9iamVjdHNBcmVhVGhyZXNob2xkOwogICAgIGlmICh3a01pbGVzdG9uZXMg
JiBrV0tEaWRGaXJzdEZsdXNoRm9ySGVhZGVyTGF5ZXIpCiAgICAgICAgIG1pbGVzdG9uZXMgfD0g
V2ViQ29yZTo6RGlkRmlyc3RGbHVzaEZvckhlYWRlckxheWVyOworICAgIGlmICh3a01pbGVzdG9u
ZXMgJiBrV0tEaWRGaXJzdExheW91dEFmdGVyU3VwcHJlc3NlZEluY3JlbWVudGFsUmVuZGVyaW5n
KQorICAgICAgICBtaWxlc3RvbmVzIHw9IFdlYkNvcmU6OkRpZEZpcnN0TGF5b3V0QWZ0ZXJTdXBw
cmVzc2VkSW5jcmVtZW50YWxSZW5kZXJpbmc7CisgICAgaWYgKHdrTWlsZXN0b25lcyAmIGtXS0Rp
ZEZpcnN0UGFpbnRBZnRlclN1cHByZXNzZWRJbmNyZW1lbnRhbFJlbmRlcmluZykKKyAgICAgICAg
bWlsZXN0b25lcyB8PSBXZWJDb3JlOjpEaWRGaXJzdFBhaW50QWZ0ZXJTdXBwcmVzc2VkSW5jcmVt
ZW50YWxSZW5kZXJpbmc7CiAgICAgCiAgICAgcmV0dXJuIG1pbGVzdG9uZXM7CiB9CkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuY3BwCShyZXZpc2lvbiAxNDkyNTgpCisrKyBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTg0LDcgKzg0LDcgQEAgc3RhdGljIFdlYkZyYW1lKiBmaW5kTGFyZ2VzdEZyYW1l
SW5GcmFtZQogICAgIC8vIEFwcHJveGltYXRlIHdoYXQgYSB1c2VyIGNvdWxkIGNvbnNpZGVyIGEg
ZGVmYXVsdCB0YXJnZXQgZnJhbWUgZm9yIGFwcGxpY2F0aW9uIG1lbnUgb3BlcmF0aW9ucy4KIAog
ICAgIFdlYkZyYW1lKiBtYWluRnJhbWUgPSBwYWdlLT5tYWluV2ViRnJhbWUoKTsKLSAgICBpZiAo
IW1haW5GcmFtZS0+aXNGcmFtZVNldCgpKQorICAgIGlmICghbWFpbkZyYW1lIHx8ICFtYWluRnJh
bWUtPmlzRnJhbWVTZXQoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBXZWJGcmFtZSogbGFy
Z2VzdFNvRmFyID0gMDsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>200043</attachid>
            <date>2013-04-29 13:29:26 -0700</date>
            <delta_ts>2013-04-29 14:09:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>for-review-4.txt</filename>
            <type>text/plain</type>
            <size>15431</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0OTMwOCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ5IEBACisyMDEzLTA0LTI5ICBCZXRoIERh
a2luICA8YmRha2luQGFwcGxlLmNvbT4KKworICAgICAgICBOZWVkIGEgTGF5b3V0TWlsZXN0b25l
IHRvIGZpcmUgd2hlbiB3ZSBoYXZlIGRvbmUgb3VyIGZpcnN0IHBhaW50IGFmdGVyIHN1cHByZXNz
aW5nIAorICAgICAgICBpbmNyZW1lbnRhbCBsYXlvdXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNTMzMAorICAgICAgICAtYW5kIGNvcnJlc3BvbmRp
bmctCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMjcyMjM2NT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUbyBtZWV0IHRoZSBuZWVkcyBvZiBhbGwg
b2Ygb3VyIGNsaWVudHMsIHdlIHJlYWxseSBuZWVkIHR3byBtaWxlc3RvbmVzLiBPbmUgCisgICAg
ICAgIGluZGljYXRpbmcgdGhhdCBhIGxheW91dCBoYXMgaGFwcGVuZWQgYWZ0ZXIgc2V0VmlzdWFs
VXBkYXRlc0FsbG93ZWQodHJ1ZSksIGFuZCAKKyAgICAgICAgYW5vdGhlciBpbmRpY2F0aW5nIHRo
YXQgcGFpbnRpbmcgaGFzIGhhcHBlbmVkLgorCisgICAgICAgIElmIGxheW91dCBpcyBuZWVkZWQg
d2hlbiBzZXRWaXN1YWxVcGRhdGVzQWxsb3dlZCh0cnVlKSBpcyBjYWxsZWQsIHdlIG5lZWQgdG8g
CisgICAgICAgIHVwZGF0ZSBpdCBzbyB0aGF0IHdlIGNhbiBndWFyYW50ZWUgdGhlIGZpcnN0IHBh
aW50IGlzIHJlYWxseSBoYXBwZW5pbmcgYXQgdGhpcyAKKyAgICAgICAgdGltZS4gQWxzbyBmaXJl
IHRoZSBEaWRGaXJzdExheW91dEFmdGVyU3VwcHJlc3NlZEluY3JlbWVudGFsUmVuZGVyaW5nIG1p
bGVzdG9uZSwgCisgICAgICAgIGFuZCBjYWxsIGFkZCBEaWRGaXJzdFBhaW50QWZ0ZXJTdXBwcmVz
c2VkSW5jcmVtZW50YWxSZW5kZXJpbmcgdG8gdGhlIEZyYW1lVmlldydzIAorICAgICAgICBwZW5k
aW5nIHBhaW50IG1pbGVzdG9uZXMuIAorICAgICAgICB1cCB0aGUgcGFpbnRpbmcgbWlsZXN0b25l
LgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dDo6c2V0VmlzdWFsVXBkYXRlc0FsbG93ZWQpOgorCisgICAgICAgIEZyYW1lVmlldyBub3cgc3Rv
cmVzIG1fbWlsZXN0b25lc1BlbmRpbmdQYWludC4gV2UnbGwgc2VuZCBhbmQgY2xlYXIgdGhlbSBv
bmNlIHdlIAorICAgICAgICBoYXZlIHBhaW50ZWQuCisgICAgICAgICogcGFnZS9GcmFtZVZpZXcu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpGcmFtZVZpZXcpOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVWaWV3OjpwYWludENvbnRlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lVmlldzo6YWRkUGFpbnRQZW5kaW5nTWlsZXN0b25lcyk6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZVZpZXc6OnJlbW92ZVBhaW50UGVuZGluZ01pbGVzdG9uZXMpOgorICAgICAgICAqIHBhZ2Uv
RnJhbWVWaWV3Lmg6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6Om1pbGVzdG9uZXNQZW5k
aW5nUGFpbnQpOgorCisgICAgICAgIFR3byBuZXcgbWlsZXN0b25lcy4KKyAgICAgICAgKiBwYWdl
L0xheW91dE1pbGVzdG9uZXMuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorCisgICAgICAgIFdlIGRv
bid0IG5lZWQgbV9oZWFkZXJMYXllckF3YWl0aW5nRmlyc3RGbHVzaCBhbnltb3JlIHNpbmNlIHdl
IGNhbiB1c2UgRnJhbWVWaWV3J3MgCisgICAgICAgIHBlbmRpbmcgcGFpbnQgbWlsZXN0b25lcyBp
bnN0ZWFkLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpSZW5kZXJMYXllckNvbXBv
c2l0b3IpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpmbHVzaFBl
bmRpbmdMYXllckNoYW5nZXMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3Np
dG9yOjp1cGRhdGVMYXllckZvckhlYWRlcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxh
eWVyQ29tcG9zaXRvci5oOgorICAgICAgICAoUmVuZGVyTGF5ZXJDb21wb3NpdG9yKToKKwogMjAx
My0wNC0yOSAgRGFrZXIgRmVybmFuZGVzIFBpbmhlaXJvICA8ZGFrZXIucGluaGVpcm9Ab3BlbmJv
c3NhLm9yZz4KIAogICAgICAgICBSZW1vdmUgdW51c2VkIG1ldGhvZCBSZW5kZXJNZXRlcjo6dmFs
dWVSYXRpbygpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDE0OTI1OCkK
KysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEy
OTAsMTAgKzEyOTAsMTQgQEAgdm9pZCBEb2N1bWVudDo6c2V0VmlzdWFsVXBkYXRlc0FsbG93ZWQo
YgogCiAgICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSB2aWV3KCk7CiAgICAgYm9vbCBuZWVkc0xh
eW91dCA9IGZyYW1lVmlldyAmJiByZW5kZXJlcigpICYmIChmcmFtZVZpZXctPmxheW91dFBlbmRp
bmcoKSB8fCByZW5kZXJlcigpLT5uZWVkc0xheW91dCgpKTsKLSAgICBpZiAobmVlZHNMYXlvdXQp
IHsKLSAgICAgICAgLy8gVGhlcmUgbWlnaHQgYmUgYSBsYXlvdXQgcGVuZGluZywgc28gbWFrZSBz
dXJlIHdlIGRvbid0IHVwZGF0ZSB0aGUgc2NyZWVuIHdpdGggYm9ndXMgZGF0YS4KLSAgICAgICAg
Ly8gVGhlIGxheW91dCB3aWxsIGFjdHVhbGx5IHVwZGF0ZSB0aGUgY29tcG9zaXRpbmcgbGF5ZXJz
IGFuZCByZXBhaW50IGlmIG5lZWRlZC4KLSAgICAgICAgcmV0dXJuOworICAgIGlmIChuZWVkc0xh
eW91dCkKKyAgICAgICAgdXBkYXRlTGF5b3V0KCk7CisKKyAgICBpZiAoUGFnZSogcGFnZSA9IHRo
aXMtPnBhZ2UoKSkgeworICAgICAgICBpZiAoZnJhbWUoKSA9PSBwYWdlLT5tYWluRnJhbWUoKSkK
KyAgICAgICAgICAgIGZyYW1lVmlldy0+YWRkUGFpbnRQZW5kaW5nTWlsZXN0b25lcyhEaWRGaXJz
dFBhaW50QWZ0ZXJTdXBwcmVzc2VkSW5jcmVtZW50YWxSZW5kZXJpbmcpOworICAgICAgICBpZiAo
cGFnZS0+cmVxdWVzdGVkTGF5b3V0TWlsZXN0b25lcygpICYgRGlkRmlyc3RMYXlvdXRBZnRlclN1
cHByZXNzZWRJbmNyZW1lbnRhbFJlbmRlcmluZykKKyAgICAgICAgICAgIGZyYW1lKCktPmxvYWRl
cigpLT5kaWRMYXlvdXQoRGlkRmlyc3RMYXlvdXRBZnRlclN1cHByZXNzZWRJbmNyZW1lbnRhbFJl
bmRlcmluZyk7CiAgICAgfQogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpAQCAt
MTMwMSw4ICsxMzA1LDggQEAgdm9pZCBEb2N1bWVudDo6c2V0VmlzdWFsVXBkYXRlc0FsbG93ZWQo
YgogICAgICAgICB2aWV3KCktPnVwZGF0ZUNvbXBvc2l0aW5nTGF5ZXJzQWZ0ZXJMYXlvdXQoKTsK
ICNlbmRpZgogCi0gICAgaWYgKHJlbmRlcmVyKCkpCi0gICAgICAgIHJlbmRlcmVyKCktPnJlcGFp
bnQoKTsKKyAgICBpZiAoUmVuZGVyVmlldyogcmVuZGVyVmlldyA9IHRoaXMtPnJlbmRlclZpZXco
KSkKKyAgICAgICAgcmVuZGVyVmlldy0+cmVwYWludFZpZXdBbmRDb21wb3NpdGVkTGF5ZXJzKCk7
CiB9CiAKIHZvaWQgRG9jdW1lbnQ6OnZpc3VhbFVwZGF0ZXNTdXBwcmVzc2lvblRpbWVyRmlyZWQo
VGltZXI8RG9jdW1lbnQ+KikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAJKHJldmlz
aW9uIDE0OTI1OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTk4LDYgKzE5OCw3IEBAIEZyYW1lVmlldzo6RnJhbWVWaWV3KEZyYW1lKiBm
cmFtZSkKICAgICAsIG1fZGlkUnVuQXV0b3NpemUoZmFsc2UpCiAgICAgLCBtX2hlYWRlckhlaWdo
dCgwKQogICAgICwgbV9mb290ZXJIZWlnaHQoMCkKKyAgICAsIG1fbWlsZXN0b25lc1BlbmRpbmdQ
YWludCgwKQogI2lmIEVOQUJMRShDU1NfRklMVEVSUykKICAgICAsIG1faGFzU29mdHdhcmVGaWx0
ZXJzKGZhbHNlKQogI2VuZGlmCkBAIC0zNTU2LDYgKzM1NTcsMTQgQEAgdm9pZCBGcmFtZVZpZXc6
OnBhaW50Q29udGVudHMoR3JhcGhpY3NDbwogICAgICAgICBzQ3VycmVudFBhaW50VGltZVN0YW1w
ID0gMDsKIAogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUGFpbnQocmVuZGVyVmll
dywgcCwgcmVjdCk7CisKKyAgICBpZiAoUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKSkgewor
ICAgICAgICBpZiAobV9taWxlc3RvbmVzUGVuZGluZ1BhaW50ICYgRGlkRmlyc3RQYWludEFmdGVy
U3VwcHJlc3NlZEluY3JlbWVudGFsUmVuZGVyaW5nKSB7CisgICAgICAgICAgICByZW1vdmVQYWlu
dFBlbmRpbmdNaWxlc3RvbmVzKERpZEZpcnN0UGFpbnRBZnRlclN1cHByZXNzZWRJbmNyZW1lbnRh
bFJlbmRlcmluZyk7CisgICAgICAgICAgICBpZiAocGFnZS0+cmVxdWVzdGVkTGF5b3V0TWlsZXN0
b25lcygpICYgRGlkRmlyc3RQYWludEFmdGVyU3VwcHJlc3NlZEluY3JlbWVudGFsUmVuZGVyaW5n
KQorICAgICAgICAgICAgICAgIGZyYW1lKCktPmxvYWRlcigpLT5kaWRMYXlvdXQoRGlkRmlyc3RQ
YWludEFmdGVyU3VwcHJlc3NlZEluY3JlbWVudGFsUmVuZGVyaW5nKTsKKyAgICAgICAgfQorICAg
IH0KIH0KIAogdm9pZCBGcmFtZVZpZXc6OnNldFBhaW50QmVoYXZpb3IoUGFpbnRCZWhhdmlvciBi
ZWhhdmlvcikKQEAgLTQxMjUsNCArNDEzNCwxNCBAQCB2b2lkIEZyYW1lVmlldzo6d2lsbFJlbW92
ZVNjcm9sbGJhcihTY3JvCiAgICAgfQogfQogCit2b2lkIEZyYW1lVmlldzo6YWRkUGFpbnRQZW5k
aW5nTWlsZXN0b25lcyhMYXlvdXRNaWxlc3RvbmVzIG1pbGVzdG9uZXMpCit7CisgICAgbV9taWxl
c3RvbmVzUGVuZGluZ1BhaW50IHw9IG1pbGVzdG9uZXM7Cit9CisKK3ZvaWQgRnJhbWVWaWV3Ojpy
ZW1vdmVQYWludFBlbmRpbmdNaWxlc3RvbmVzKExheW91dE1pbGVzdG9uZXMgbWlsZXN0b25lcykK
K3sKKyAgICBtX21pbGVzdG9uZXNQZW5kaW5nUGFpbnQgJj0gfm1pbGVzdG9uZXM7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAkocmV2aXNp
b24gMTQ5MjU4KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAkod29ya2luZyBj
b3B5KQpAQCAtNDIxLDYgKzQyMSwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHdpbGxT
dGFydExpdmVSZXNpemUoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbEVuZExpdmVS
ZXNpemUoKSBPVkVSUklERTsKIAorICAgIHZvaWQgYWRkUGFpbnRQZW5kaW5nTWlsZXN0b25lcyhM
YXlvdXRNaWxlc3RvbmVzKTsKKyAgICB2b2lkIHJlbW92ZVBhaW50UGVuZGluZ01pbGVzdG9uZXMo
TGF5b3V0TWlsZXN0b25lcyk7CisgICAgTGF5b3V0TWlsZXN0b25lcyBtaWxlc3RvbmVzUGVuZGlu
Z1BhaW50KCkgY29uc3QgeyByZXR1cm4gbV9taWxlc3RvbmVzUGVuZGluZ1BhaW50OyB9CisKIHBy
b3RlY3RlZDoKICAgICB2aXJ0dWFsIGJvb2wgc2Nyb2xsQ29udGVudHNGYXN0UGF0aChjb25zdCBJ
bnRTaXplJiBzY3JvbGxEZWx0YSwgY29uc3QgSW50UmVjdCYgcmVjdFRvU2Nyb2xsLCBjb25zdCBJ
bnRSZWN0JiBjbGlwUmVjdCk7CiAgICAgdmlydHVhbCB2b2lkIHNjcm9sbENvbnRlbnRzU2xvd1Bh
dGgoY29uc3QgSW50UmVjdCYgdXBkYXRlUmVjdCk7CkBAIC02MjMsNiArNjI3LDggQEAgcHJpdmF0
ZToKICAgICBpbnQgbV9oZWFkZXJIZWlnaHQ7CiAgICAgaW50IG1fZm9vdGVySGVpZ2h0OwogCisg
ICAgTGF5b3V0TWlsZXN0b25lcyBtX21pbGVzdG9uZXNQZW5kaW5nUGFpbnQ7CisKICAgICBzdGF0
aWMgZG91YmxlIHNfbm9ybWFsRGVmZXJyZWRSZXBhaW50RGVsYXk7CiAgICAgc3RhdGljIGRvdWJs
ZSBzX2luaXRpYWxEZWZlcnJlZFJlcGFpbnREZWxheUR1cmluZ0xvYWRpbmc7CiAgICAgc3RhdGlj
IGRvdWJsZSBzX21heERlZmVycmVkUmVwYWludERlbGF5RHVyaW5nTG9hZGluZzsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BhZ2UvTGF5b3V0TWlsZXN0b25lcy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvTGF5b3V0TWlsZXN0b25lcy5oCShyZXZpc2lvbiAxNDkyNTgpCisrKyBT
b3VyY2UvV2ViQ29yZS9wYWdlL0xheW91dE1pbGVzdG9uZXMuaAkod29ya2luZyBjb3B5KQpAQCAt
MjgsMTEgKzI4LDE2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorLy8gRklYTUU6IFNvbWUg
b2YgdGhlc2UgbWlsZXN0b25lcyBhcmUgYWJvdXQgbGF5b3V0LCBhbmQgb3RoZXJzIGFyZSBhYm91
dCBwYWludGluZy4KKy8vIFdlIHNob3VsZCBlaXRoZXIgcmUtbmFtZSB0aGVtIHRvIHNvbWV0aGlu
ZyBtb3JlIGdlbmVyaWMsIG9yIHNwbGl0IHRoZW0gaW50bworLy8gdHdvIGVudW1zIC0tIG9uZSBm
b3IgcGFpbnRpbmcgYW5kIG9uZSBmb3IgbGF5b3V0LgogZW51bSBMYXlvdXRNaWxlc3RvbmVGbGFn
IHsKICAgICBEaWRGaXJzdExheW91dCA9IDEgPDwgMCwKICAgICBEaWRGaXJzdFZpc3VhbGx5Tm9u
RW1wdHlMYXlvdXQgPSAxIDw8IDEsCiAgICAgRGlkSGl0UmVsZXZhbnRSZXBhaW50ZWRPYmplY3Rz
QXJlYVRocmVzaG9sZCA9IDEgPDwgMiwKLSAgICBEaWRGaXJzdEZsdXNoRm9ySGVhZGVyTGF5ZXIg
PSAxIDw8IDMKKyAgICBEaWRGaXJzdEZsdXNoRm9ySGVhZGVyTGF5ZXIgPSAxIDw8IDMsCisgICAg
RGlkRmlyc3RMYXlvdXRBZnRlclN1cHByZXNzZWRJbmNyZW1lbnRhbFJlbmRlcmluZyA9IDEgPDwg
NCwKKyAgICBEaWRGaXJzdFBhaW50QWZ0ZXJTdXBwcmVzc2VkSW5jcmVtZW50YWxSZW5kZXJpbmcg
PSAxIDw8IDUKIH07CiAKIHR5cGVkZWYgdW5zaWduZWQgTGF5b3V0TWlsZXN0b25lczsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3Iu
Y3BwCShyZXZpc2lvbiAxNDkyNTgpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXJDb21wb3NpdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjE0LDcgKzIxNCw2IEBAIFJl
bmRlckxheWVyQ29tcG9zaXRvcjo6UmVuZGVyTGF5ZXJDb21wb3MKICAgICAsIG1fbGF5ZXJGbHVz
aFRocm90dGxpbmdFbmFibGVkKGZhbHNlKQogICAgICwgbV9sYXllckZsdXNoVGhyb3R0bGluZ1Rl
bXBvcmFyaWx5RGlzYWJsZWRGb3JJbnRlcmFjdGlvbihmYWxzZSkKICAgICAsIG1faGFzUGVuZGlu
Z0xheWVyRmx1c2goZmFsc2UpCi0gICAgLCBtX2hlYWRlckxheWVyQXdhaXRpbmdGaXJzdEZsdXNo
KGZhbHNlKQogI2lmICFMT0dfRElTQUJMRUQKICAgICAsIG1fcm9vdExheWVyVXBkYXRlQ291bnQo
MCkKICAgICAsIG1fb2JsaWdhdGVDb21wb3NpdGVkTGF5ZXJDb3VudCgwKQpAQCAtMzYxLDggKzM2
MCw4IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpmbHVzaFBlbmRpbmcKICAgICBBU1NF
UlQoIW1fZmx1c2hpbmdMYXllcnMpOwogICAgIG1fZmx1c2hpbmdMYXllcnMgPSB0cnVlOwogCisg
ICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBtX3JlbmRlclZpZXcgPyBtX3JlbmRlclZpZXctPmZy
YW1lVmlldygpIDogMDsKICAgICBpZiAoR3JhcGhpY3NMYXllciogcm9vdExheWVyID0gcm9vdEdy
YXBoaWNzTGF5ZXIoKSkgewotICAgICAgICBGcmFtZVZpZXcqIGZyYW1lVmlldyA9IG1fcmVuZGVy
VmlldyA/IG1fcmVuZGVyVmlldy0+ZnJhbWVWaWV3KCkgOiAwOwogICAgICAgICBpZiAoZnJhbWVW
aWV3KSB7CiAgICAgICAgICAgICAvLyBIYXZpbmcgYSBtX2NsaXBMYXllciBpbmRpY2F0ZXMgdGhh
dCB3ZSdyZSBkb2luZyBzY3JvbGxpbmcgdmlhIEdyYXBoaWNzTGF5ZXJzLgogICAgICAgICAgICAg
SW50UmVjdCB2aXNpYmxlUmVjdCA9IG1fY2xpcExheWVyID8gSW50UmVjdChJbnRQb2ludCgpLCBm
cmFtZVZpZXctPmNvbnRlbnRzU2l6ZSgpKSA6IGZyYW1lVmlldy0+dmlzaWJsZUNvbnRlbnRSZWN0
KCk7CkBAIC0zNzMsMTMgKzM3MiwyNyBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6Zmx1
c2hQZW5kaW5nCiAgICAgQVNTRVJUKG1fZmx1c2hpbmdMYXllcnMpOwogICAgIG1fZmx1c2hpbmdM
YXllcnMgPSBmYWxzZTsKIAotICAgIGlmIChtX2hlYWRlckxheWVyQXdhaXRpbmdGaXJzdEZsdXNo
KSB7Ci0gICAgICAgIG1faGVhZGVyTGF5ZXJBd2FpdGluZ0ZpcnN0Rmx1c2ggPSBmYWxzZTsKLSAg
ICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSB0aGlzLT5wYWdlKCkpIHsKLSAgICAgICAgICAgIGlmIChw
YWdlLT5yZXF1ZXN0ZWRMYXlvdXRNaWxlc3RvbmVzKCkgJiBEaWRGaXJzdEZsdXNoRm9ySGVhZGVy
TGF5ZXIpIHsKLSAgICAgICAgICAgICAgICBpZiAoRnJhbWUqIGZyYW1lID0gcGFnZS0+bWFpbkZy
YW1lKCkpCi0gICAgICAgICAgICAgICAgICAgIGZyYW1lLT5sb2FkZXIoKS0+ZGlkTGF5b3V0KERp
ZEZpcnN0Rmx1c2hGb3JIZWFkZXJMYXllcik7Ci0gICAgICAgICAgICB9CisgICAgUGFnZSogcGFn
ZSA9IHRoaXMtPnBhZ2UoKTsKKyAgICBpZiAocGFnZSAmJiBmcmFtZVZpZXcpIHsKKyAgICAgICAg
TGF5b3V0TWlsZXN0b25lcyBtaWxlc3RvbmVzUGVuZGluZ1BhaW50ID0gZnJhbWVWaWV3LT5taWxl
c3RvbmVzUGVuZGluZ1BhaW50KCk7CisgICAgICAgIExheW91dE1pbGVzdG9uZXMgbWlsZXN0b25l
c0FjaGlldmVkID0gMDsKKworICAgICAgICAvLyBNYWtlIHN1cmUgdGhlIHBlbmRpbmcgcGFpbnQg
bWlsZXN0b25lcyBoYXZlIGFjdHVhbGx5IGJlZW4gcmVxdWVzdGVkIGJlZm9yZSB3ZSBzZW5kIHRo
ZW0uCisgICAgICAgIGlmIChtaWxlc3RvbmVzUGVuZGluZ1BhaW50ICYgRGlkRmlyc3RGbHVzaEZv
ckhlYWRlckxheWVyKSB7CisgICAgICAgICAgICBpZiAocGFnZS0+cmVxdWVzdGVkTGF5b3V0TWls
ZXN0b25lcygpICYgRGlkRmlyc3RGbHVzaEZvckhlYWRlckxheWVyKQorICAgICAgICAgICAgICAg
IG1pbGVzdG9uZXNBY2hpZXZlZCB8PSBEaWRGaXJzdEZsdXNoRm9ySGVhZGVyTGF5ZXI7CisgICAg
ICAgIH0KKworICAgICAgICBpZiAobWlsZXN0b25lc1BlbmRpbmdQYWludCAmIERpZEZpcnN0UGFp
bnRBZnRlclN1cHByZXNzZWRJbmNyZW1lbnRhbFJlbmRlcmluZykgeworICAgICAgICAgICAgaWYg
KHBhZ2UtPnJlcXVlc3RlZExheW91dE1pbGVzdG9uZXMoKSAmIERpZEZpcnN0UGFpbnRBZnRlclN1
cHByZXNzZWRJbmNyZW1lbnRhbFJlbmRlcmluZykKKyAgICAgICAgICAgICAgICBtaWxlc3RvbmVz
QWNoaWV2ZWQgfD0gRGlkRmlyc3RQYWludEFmdGVyU3VwcHJlc3NlZEluY3JlbWVudGFsUmVuZGVy
aW5nOworICAgICAgICB9CisKKyAgICAgICAgZnJhbWVWaWV3LT5yZW1vdmVQYWludFBlbmRpbmdN
aWxlc3RvbmVzKG1pbGVzdG9uZXNQZW5kaW5nUGFpbnQpOworCisgICAgICAgIGlmIChtaWxlc3Rv
bmVzQWNoaWV2ZWQpIHsKKyAgICAgICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBwYWdlLT5tYWlu
RnJhbWUoKSkKKyAgICAgICAgICAgICAgICBmcmFtZS0+bG9hZGVyKCktPmRpZExheW91dChtaWxl
c3RvbmVzQWNoaWV2ZWQpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0yNTI0LDcgKzI1MzcsNyBA
QCBHcmFwaGljc0xheWVyKiBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwCiAgICAgICAgIG1fbGF5
ZXJGb3JIZWFkZXItPnNldE5hbWUoImhlYWRlciIpOwogI2VuZGlmCiAgICAgICAgIG1fc2Nyb2xs
TGF5ZXItPmFkZENoaWxkQmVsb3cobV9sYXllckZvckhlYWRlci5nZXQoKSwgbV9yb290Q29udGVu
dExheWVyLmdldCgpKTsKLSAgICAgICAgbV9oZWFkZXJMYXllckF3YWl0aW5nRmlyc3RGbHVzaCA9
IHRydWU7CisgICAgICAgIG1fcmVuZGVyVmlldy0+ZnJhbWVWaWV3KCktPmFkZFBhaW50UGVuZGlu
Z01pbGVzdG9uZXMoRGlkRmlyc3RGbHVzaEZvckhlYWRlckxheWVyKTsKICAgICB9CiAKICAgICBt
X2xheWVyRm9ySGVhZGVyLT5zZXRQb3NpdGlvbihGbG9hdFBvaW50KDAsIDApKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgJKHJl
dmlzaW9uIDE0OTI1OCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNv
bXBvc2l0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNDQ5LDcgKzQ0OSw2IEBAIHByaXZhdGU6CiAg
ICAgYm9vbCBtX2xheWVyRmx1c2hUaHJvdHRsaW5nRW5hYmxlZDsKICAgICBib29sIG1fbGF5ZXJG
bHVzaFRocm90dGxpbmdUZW1wb3JhcmlseURpc2FibGVkRm9ySW50ZXJhY3Rpb247CiAgICAgYm9v
bCBtX2hhc1BlbmRpbmdMYXllckZsdXNoOwotICAgIGJvb2wgbV9oZWFkZXJMYXllckF3YWl0aW5n
Rmlyc3RGbHVzaDsKIAogI2lmICFMT0dfRElTQUJMRUQKICAgICBpbnQgbV9yb290TGF5ZXJVcGRh
dGVDb3VudDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0OTI1OSkKKysrIFNvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3IEBACisyMDEzLTA0LTI4
ICBCZXRoIERha2luICA8YmRha2luQGFwcGxlLmNvbT4KKworICAgICAgICBOZWVkIGEgTGF5b3V0
TWlsZXN0b25lIHRvIGZpcmUgd2hlbiB3ZSBoYXZlIGRvbmUgb3VyIGZpcnN0IHBhaW50IGFmdGVy
IHN1cHByZXNzaW5nIAorICAgICAgICBpbmNyZW1lbnRhbCBsYXlvdXQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNTMzMAorICAgICAgICAtYW5kIGNv
cnJlc3BvbmRpbmctCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMjcyMjM2NT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUd28gbmV3IG1pbGxzdG9u
ZXMuCisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLUGFnZUxvYWRUeXBlcy5oOgorICAgICAgICAq
IFNoYXJlZC9BUEkvYy9XS1NoYXJlZEFQSUNhc3QuaDoKKyAgICAgICAgKFdlYktpdDo6dG9XS0xh
eW91dE1pbGVzdG9uZXMpOgorICAgICAgICAoV2ViS2l0Ojp0b0xheW91dE1pbGVzdG9uZXMpOgor
CisgICAgICAgIFRoaXMgbnVsbC1jaGVjayBpcyBuZWNlc3Nhcnkgbm93IHNpbmNlIHRoaXMgY29k
ZSBlbmRzIHVwIHJ1bm5pbmcgYXQgCisgICAgICAgIFdlYkZyYW1lOjppbml0KCkgdGltZSB3aGls
ZSB3ZSdyZSBzZXR0aW5nIHVwIHRoZSBEb2N1bWVudC4gCisgICAgICAgIHNldFZpc3VhbFVwZGF0
ZXNBbGxvd2VkKHRydWUpIGhhcyBhbHdheXMgYmVlbiBjYWxsZWQgYXMgYSBwYXJ0IG9mIHRoYXQg
cHJvY2VzcywgCisgICAgICAgIGFuZCBub3cgdGhlIHVwZGF0ZUxheW91dCgpLCBlbmRzIHVwIGNh
bGxpbmcgdGhpcyBjb2RlIHRvbywgYnV0IHdlIGRvbid0IGFjdHVhbGx5IAorICAgICAgICBoYXZl
IGEgbWFpbkZyYW1lIHlldCBzaW5jZSBpdCdzIHN0aWxsIGJlaW5nIGNyZWF0ZWQuCisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpmaW5kTGFyZ2VzdEZyYW1lSW5GcmFtZVNldCk6CisKIDIwMTMtMDQtMjYgIEFu
ZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBVc2UgT3duUHRy
PFBsdWdpbkNvbnRyb2xsZXJQcm94eT4gZm9yIHN0b3JpbmcgcGx1Zy1pbiBjb250cm9sbGVycyBp
biBXZWJQcm9jZXNzQ29ubmVjdGlvbgpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9j
L1dLUGFnZUxvYWRUeXBlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9B
UEkvYy9XS1BhZ2VMb2FkVHlwZXMuaAkocmV2aXNpb24gMTQ5MjU4KQorKysgU291cmNlL1dlYktp
dDIvU2hhcmVkL0FQSS9jL1dLUGFnZUxvYWRUeXBlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC01Miw3
ICs1Miw5IEBAIGVudW0gewogICAgIGtXS0RpZEZpcnN0TGF5b3V0ID0gMSA8PCAwLAogICAgIGtX
S0RpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCA9IDEgPDwgMSwKICAgICBrV0tEaWRIaXRS
ZWxldmFudFJlcGFpbnRlZE9iamVjdHNBcmVhVGhyZXNob2xkID0gMSA8PCAyLAotICAgIGtXS1Jl
c2VydmVkID0gMSA8PCAzIC8vIE5vdGUgdGhhdCB0aGUgZm91cnRoIG1lbWJlciBvZiB0aGlzIGVu
dW0gaXMgYWN0dWFsbHkgcHJpdmF0ZSBhbmQgZGVmaW5lZCBpbiBXS1BhZ2VMb2FkVHlwZXNQcml2
YXRlLmgKKyAgICBrV0tSZXNlcnZlZCA9IDEgPDwgMywgLy8gTm90ZSB0aGF0IHRoZSBmb3VydGgg
bWVtYmVyIG9mIHRoaXMgZW51bSBpcyBhY3R1YWxseSBwcml2YXRlIGFuZCBkZWZpbmVkIGluIFdL
UGFnZUxvYWRUeXBlc1ByaXZhdGUuaAorICAgIGtXS0RpZEZpcnN0TGF5b3V0QWZ0ZXJTdXBwcmVz
c2VkSW5jcmVtZW50YWxSZW5kZXJpbmcgPSAxIDw8IDQsCisgICAga1dLRGlkRmlyc3RQYWludEFm
dGVyU3VwcHJlc3NlZEluY3JlbWVudGFsUmVuZGVyaW5nID0gMSA8PCA1CiB9OwogdHlwZWRlZiB1
aW50MzJfdCBXS0xheW91dE1pbGVzdG9uZXM7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9BUEkvYy9XS1NoYXJlZEFQSUNhc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQVBJL2MvV0tTaGFyZWRBUElDYXN0LmgJKHJldmlzaW9uIDE0OTI1OCkKKysrIFNvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1NoYXJlZEFQSUNhc3QuaAkod29ya2luZyBjb3B5KQpA
QCAtODAyLDYgKzgwMiwxMCBAQCBpbmxpbmUgV0tMYXlvdXRNaWxlc3RvbmVzIHRvV0tMYXlvdXRN
aWxlCiAgICAgICAgIHdrTWlsZXN0b25lcyB8PSBrV0tEaWRIaXRSZWxldmFudFJlcGFpbnRlZE9i
amVjdHNBcmVhVGhyZXNob2xkOwogICAgIGlmIChtaWxlc3RvbmVzICYgV2ViQ29yZTo6RGlkRmly
c3RGbHVzaEZvckhlYWRlckxheWVyKQogICAgICAgICB3a01pbGVzdG9uZXMgfD0ga1dLRGlkRmly
c3RGbHVzaEZvckhlYWRlckxheWVyOworICAgIGlmIChtaWxlc3RvbmVzICYgV2ViQ29yZTo6RGlk
Rmlyc3RMYXlvdXRBZnRlclN1cHByZXNzZWRJbmNyZW1lbnRhbFJlbmRlcmluZykKKyAgICAgICAg
d2tNaWxlc3RvbmVzIHw9IGtXS0RpZEZpcnN0TGF5b3V0QWZ0ZXJTdXBwcmVzc2VkSW5jcmVtZW50
YWxSZW5kZXJpbmc7CisgICAgaWYgKG1pbGVzdG9uZXMgJiBXZWJDb3JlOjpEaWRGaXJzdFBhaW50
QWZ0ZXJTdXBwcmVzc2VkSW5jcmVtZW50YWxSZW5kZXJpbmcpCisgICAgICAgIHdrTWlsZXN0b25l
cyB8PSBrV0tEaWRGaXJzdFBhaW50QWZ0ZXJTdXBwcmVzc2VkSW5jcmVtZW50YWxSZW5kZXJpbmc7
CiAgICAgCiAgICAgcmV0dXJuIHdrTWlsZXN0b25lczsKIH0KQEAgLTgxOCw2ICs4MjIsMTAgQEAg
aW5saW5lIFdlYkNvcmU6OkxheW91dE1pbGVzdG9uZXMgdG9MYXlvdQogICAgICAgICBtaWxlc3Rv
bmVzIHw9IFdlYkNvcmU6OkRpZEhpdFJlbGV2YW50UmVwYWludGVkT2JqZWN0c0FyZWFUaHJlc2hv
bGQ7CiAgICAgaWYgKHdrTWlsZXN0b25lcyAmIGtXS0RpZEZpcnN0Rmx1c2hGb3JIZWFkZXJMYXll
cikKICAgICAgICAgbWlsZXN0b25lcyB8PSBXZWJDb3JlOjpEaWRGaXJzdEZsdXNoRm9ySGVhZGVy
TGF5ZXI7CisgICAgaWYgKHdrTWlsZXN0b25lcyAmIGtXS0RpZEZpcnN0TGF5b3V0QWZ0ZXJTdXBw
cmVzc2VkSW5jcmVtZW50YWxSZW5kZXJpbmcpCisgICAgICAgIG1pbGVzdG9uZXMgfD0gV2ViQ29y
ZTo6RGlkRmlyc3RMYXlvdXRBZnRlclN1cHByZXNzZWRJbmNyZW1lbnRhbFJlbmRlcmluZzsKKyAg
ICBpZiAod2tNaWxlc3RvbmVzICYga1dLRGlkRmlyc3RQYWludEFmdGVyU3VwcHJlc3NlZEluY3Jl
bWVudGFsUmVuZGVyaW5nKQorICAgICAgICBtaWxlc3RvbmVzIHw9IFdlYkNvcmU6OkRpZEZpcnN0
UGFpbnRBZnRlclN1cHByZXNzZWRJbmNyZW1lbnRhbFJlbmRlcmluZzsKICAgICAKICAgICByZXR1
cm4gbWlsZXN0b25lczsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAJKHJldmlzaW9u
IDE0OTI1OCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODQsNyArODQsNyBAQCBzdGF0aWMg
V2ViRnJhbWUqIGZpbmRMYXJnZXN0RnJhbWVJbkZyYW1lCiAgICAgLy8gQXBwcm94aW1hdGUgd2hh
dCBhIHVzZXIgY291bGQgY29uc2lkZXIgYSBkZWZhdWx0IHRhcmdldCBmcmFtZSBmb3IgYXBwbGlj
YXRpb24gbWVudSBvcGVyYXRpb25zLgogCiAgICAgV2ViRnJhbWUqIG1haW5GcmFtZSA9IHBhZ2Ut
Pm1haW5XZWJGcmFtZSgpOwotICAgIGlmICghbWFpbkZyYW1lLT5pc0ZyYW1lU2V0KCkpCisgICAg
aWYgKCFtYWluRnJhbWUgfHwgIW1haW5GcmFtZS0+aXNGcmFtZVNldCgpKQogICAgICAgICByZXR1
cm4gMDsKIAogICAgIFdlYkZyYW1lKiBsYXJnZXN0U29GYXIgPSAwOwo=
</data>
<flag name="review"
          id="221544"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>