<?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>77668</bug_id>
          
          <creation_ts>2012-02-02 12:29:55 -0800</creation_ts>
          <short_desc>[chromium] Ensure that the cc thread animation framework continues to tick when the tab is backgrounded</short_desc>
          <delta_ts>2012-03-08 19:25:58 -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>WebCore Misc.</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>76468</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter>vollick</reporter>
          <assigned_to>vollick</assigned_to>
          <cc>cc-bugs</cc>
    
    <cc>jamesr</cc>
    
    <cc>jgw</cc>
    
    <cc>nduca</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>548060</commentid>
    <comment_count>0</comment_count>
    <who name="">vollick</who>
    <bug_when>2012-02-02 12:29:55 -0800</bug_when>
    <thetext>Currently, the framework is driven by CCLayerTreeHostImpl::animate, which does not get called when the tab is backgrounded. Will need to find a way to periodically tick the animation so that we can inform js when animations are started, possibly using a CCTimer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563683</commentid>
    <comment_count>1</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-02-23 16:46:31 -0800</bug_when>
    <thetext>This feels pretty similar to the issue of RAF-driven animations on the main thread (RAF isn&apos;t pumped in background tabs, but animation events still should fire).  What was the resolution of that, Joel?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564307</commentid>
    <comment_count>2</comment_count>
    <who name="Joel Webber">jgw</who>
    <bug_when>2012-02-24 07:06:16 -0800</bug_when>
    <thetext>(In reply to comment #1)
&gt; This feels pretty similar to the issue of RAF-driven animations on the main thread (RAF isn&apos;t pumped in background tabs, but animation events still should fire).  What was the resolution of that, Joel?

The current state of affairs is pretty hacky, but I believe necessarily so (at least for the time being). AnimationControllerPrivate::animationFrameCallbackFired() (ultimately called from FrameView::serviceScriptedAnimations()) just makes sure the page&apos;s animations get updated at the right time.

AnimationController&apos;s timer is still firing happily in the background, which is the only simple way to make sure all the animation events get fired. A more aggressive fix would change the timer to fire only when the next *event* is needed, rather than the next 40fps animation tick. I thought it best to get things working first, though, as this starts to get fairly messy, especially with the #if ENABLE(REQUEST_ANIMATION_FRAME) stuff.

Even the less-frequently-firing timer is still &quot;wrong&quot; in that events aren&apos;t guaranteed to fire precisely when you&apos;d expect them -- they&apos;re practically guaranteed to fire slightly before or after the animation has been rendered in the expected state. I haven&apos;t seen this problem in the wild, but I&apos;m pretty sure you could construct an example that used animation events for sequencing, that would have slight hitching artifacts.

I believe the best general approach would be to drive the events solely from animation-frame callbacks, and use the timer only as a fallback for background tabs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>573246</commentid>
    <comment_count>3</comment_count>
      <attachid>130695</attachid>
    <who name="">vollick</who>
    <bug_when>2012-03-07 14:33:26 -0800</bug_when>
    <thetext>Created attachment 130695
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>573619</commentid>
    <comment_count>4</comment_count>
      <attachid>130695</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-03-07 22:28:47 -0800</bug_when>
    <thetext>Comment on attachment 130695
Patch

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

This doesn&apos;t seem too outrageous but the fact that we&apos;re adding a ticking mechanism to CCLayerTreeHostImpl when it hasn&apos;t needed one before gives me slight pause.  Should we perhaps be telling the scheduler to tick at a low rate in background pages while animations are active?

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:44
&gt; +const double lowFrequencyAnimationIntervalMs = 300;

can we make this seconds? one less thing to worry about for the ms-&gt;sec conversion

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:61
&gt; +        m_layerTreeHostImpl-&gt;animate(WTF::monotonicallyIncreasingTime());

don&apos;t need the WTF:: here - &lt;wtf/CurrentTime.h&gt; pulls this into the global namespace with a using statement and there&apos;s no ambiguity here

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:94
&gt; +    m_lowFrequencyAnimationTimeSource = CCDelayBasedTimeSource::create(lowFrequencyAnimationIntervalMs, CCProxy::hasImplThread() ? CCProxy::implThread() : CCProxy::mainThread());

hm, i wonder if we need a way to say &quot;my current ccproxy&quot; from CCLayerTreeHostImpl. the fact that we haven&apos;t had this in the past makes me wonder about this a bit...

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:105
&gt; +    m_lowFrequencyAnimationTimeSource-&gt;setActive(false);

is there any way that destroying the client (the time source adapter here) can deactivate the timer instead of  having to clean up ourselves?

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:424
&gt; +    m_lowFrequencyAnimationTimeSource-&gt;setActive(!visible);

i think we need to figure out a way to have this only tick when there are actually animations active that might benefit from the tick (which is the minority case). in all other cases, background tabs should be silent</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>573677</commentid>
    <comment_count>5</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-03-08 00:08:30 -0800</bug_when>
    <thetext>Great first pass Ian.

I do think we should get the DBTS timer moved into the proxy, eventually. But that makes the animate() call *not* pat of the scheduledActionDrawAndCommit, opting instead for a scheduledActionAnimate. But, this requires a whole new setNeedsAnimate flow, which might be a bit harder to get right. I&apos;d really like to get to a good-enough state first, then do a followon patch to move animation scheduling into the proxy.

I do think we need a computation of *whether* to tick in the background. Thats a key building block.

James would you be comfortable with using a timer for the next week or two while we get things correct, then we go back and move things into the proxy as a follow-on? Ian, if james agrees, you need to make sure to set expectations with @backer that you&apos;re signed up for stuff even after the switch is thrown.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>573852</commentid>
    <comment_count>6</comment_count>
      <attachid>130826</attachid>
    <who name="">vollick</who>
    <bug_when>2012-03-08 08:36:52 -0800</bug_when>
    <thetext>Created attachment 130826
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>573936</commentid>
    <comment_count>7</comment_count>
      <attachid>130847</attachid>
    <who name="">vollick</who>
    <bug_when>2012-03-08 10:43:06 -0800</bug_when>
    <thetext>Created attachment 130847
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>573941</commentid>
    <comment_count>8</comment_count>
    <who name="">vollick</who>
    <bug_when>2012-03-08 10:48:43 -0800</bug_when>
    <thetext>Noteworthy changes
 - Added logic in CCLayerTreeHostImpl to turn on the background ticking only when animations can benefit
 - Added a unit test that ensures that animations are ticked in the background.


(In reply to comment #4)
&gt; (From update of attachment 130695 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=130695&amp;action=review
&gt; 
&gt; This doesn&apos;t seem too outrageous but the fact that we&apos;re adding a ticking mechanism to CCLayerTreeHostImpl when it hasn&apos;t needed one before gives me slight pause.  Should we perhaps be telling the scheduler to tick at a low rate in background pages while animations are active?

Yes, that sounds better. As Nat was suggesting earlier, could this be an acceptable first step, and I create a bug for moving the background ticking into the proxy? I would certainly be able to see that bug through.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:44
&gt; &gt; +const double lowFrequencyAnimationIntervalMs = 300;
&gt; 
&gt; can we make this seconds? one less thing to worry about for the ms-&gt;sec conversion
Done.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:61
&gt; &gt; +        m_layerTreeHostImpl-&gt;animate(WTF::monotonicallyIncreasingTime());
&gt; 
&gt; don&apos;t need the WTF:: here - &lt;wtf/CurrentTime.h&gt; pulls this into the global namespace with a using statement and there&apos;s no ambiguity here
Done.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:94
&gt; &gt; +    m_lowFrequencyAnimationTimeSource = CCDelayBasedTimeSource::create(lowFrequencyAnimationIntervalMs, CCProxy::hasImplThread() ? CCProxy::implThread() : CCProxy::mainThread());
&gt; 
&gt; hm, i wonder if we need a way to say &quot;my current ccproxy&quot; from CCLayerTreeHostImpl. the fact that we haven&apos;t had this in the past makes me wonder about this a bit...
Added CCProxy::currentThread()
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:105
&gt; &gt; +    m_lowFrequencyAnimationTimeSource-&gt;setActive(false);
&gt; 
&gt; is there any way that destroying the client (the time source adapter here) can deactivate the timer instead of  having to clean up ourselves?
Done.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:424
&gt; &gt; +    m_lowFrequencyAnimationTimeSource-&gt;setActive(!visible);
&gt; 
&gt; i think we need to figure out a way to have this only tick when there are actually animations active that might benefit from the tick (which is the minority case). in all other cases, background tabs should be silent
I now only start the timer if there are active animations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>573944</commentid>
    <comment_count>9</comment_count>
    <who name="">vollick</who>
    <bug_when>2012-03-08 10:49:35 -0800</bug_when>
    <thetext>&gt; I do think we need a computation of *whether* to tick in the background. Thats a key building block.
Agreed. I&apos;ve added some logic for this in CCLayerTreeHostImpl</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>573993</commentid>
    <comment_count>10</comment_count>
      <attachid>130847</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-03-08 11:20:45 -0800</bug_when>
    <thetext>Comment on attachment 130847
Patch

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

R=me w/ nits

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:44
&gt; +const double lowFrequencyAnimationInterval = 0.3;

we tick setTimeout()s at 1Hz for background tabs, can we use the same value for this?

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:50
&gt; +class CCLayerTreeHostImplTimeSourceAdapter : public CCTimeSourceClient {
&gt; +public:

add WTF_MAKE_NONCOPYABLE as well to hide copy/assignment c&apos;tors

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:73
&gt; +    explicit CCLayerTreeHostImplTimeSourceAdapter(CCLayerTreeHostImpl* layerTreeHostImpl, PassRefPtr&lt;CCDelayBasedTimeSource&gt; timeSource)

now you don&apos;t need explicit (since it&apos;s a 2-arg c&apos;tor). Isn&apos;t C++ fun?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>574009</commentid>
    <comment_count>11</comment_count>
      <attachid>130867</attachid>
    <who name="">vollick</who>
    <bug_when>2012-03-08 11:32:37 -0800</bug_when>
    <thetext>Created attachment 130867
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>574010</commentid>
    <comment_count>12</comment_count>
    <who name="">vollick</who>
    <bug_when>2012-03-08 11:34:05 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 130847 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=130847&amp;action=review
&gt; 
&gt; R=me w/ nits
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:44
&gt; &gt; +const double lowFrequencyAnimationInterval = 0.3;
&gt; 
&gt; we tick setTimeout()s at 1Hz for background tabs, can we use the same value for this?
Done.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:50
&gt; &gt; +class CCLayerTreeHostImplTimeSourceAdapter : public CCTimeSourceClient {
&gt; &gt; +public:
&gt; 
&gt; add WTF_MAKE_NONCOPYABLE as well to hide copy/assignment c&apos;tors
Done.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:73
&gt; &gt; +    explicit CCLayerTreeHostImplTimeSourceAdapter(CCLayerTreeHostImpl* layerTreeHostImpl, PassRefPtr&lt;CCDelayBasedTimeSource&gt; timeSource)
&gt; 
&gt; now you don&apos;t need explicit (since it&apos;s a 2-arg c&apos;tor). Isn&apos;t C++ fun?
Whoops! Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>574068</commentid>
    <comment_count>13</comment_count>
      <attachid>130875</attachid>
    <who name="">vollick</who>
    <bug_when>2012-03-08 12:18:30 -0800</bug_when>
    <thetext>Created attachment 130875
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>574084</commentid>
    <comment_count>14</comment_count>
      <attachid>130880</attachid>
    <who name="">vollick</who>
    <bug_when>2012-03-08 12:32:02 -0800</bug_when>
    <thetext>Created attachment 130880
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>574507</commentid>
    <comment_count>15</comment_count>
      <attachid>130880</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-08 19:25:53 -0800</bug_when>
    <thetext>Comment on attachment 130880
Patch

Clearing flags on attachment: 130880

Committed r110252: &lt;http://trac.webkit.org/changeset/110252&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>574508</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-08 19:25:58 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130695</attachid>
            <date>2012-03-07 14:33:26 -0800</date>
            <delta_ts>2012-03-08 08:36:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77668-20120307173322.patch</filename>
            <type>text/plain</type>
            <size>5444</size>
            <attacher>vollick</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5OTM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjU3MDg4NTA1OThhZjc1
NTVkYjZmMjY5N2UxNWVjMmNhMTMxMDU4Yi4uYTE4MGFmNWYwNDEwZGQ1ZDk4YzRmMzIxZDUxMDQy
ZmY3ZTY3ZWVhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDEyLTAzLTA3ICBJYW4g
Vm9sbGljayAgPHZvbGxpY2tAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gRW5z
dXJlIHRoYXQgdGhlIGNjIHRocmVhZCBhbmltYXRpb24gZnJhbWV3b3JrIGNvbnRpbnVlcyB0byB0
aWNrIHdoZW4gdGhlIHRhYiBpcyBiYWNrZ3JvdW5kZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3NjY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiAoT09QUyEpCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcDoK
KyAgICAgICAgKENDTGF5ZXJUcmVlSG9zdEltcGxUaW1lU291cmNlQWRhcHRlcik6CisgICAgICAg
IChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsVGltZVNvdXJjZUFkYXB0ZXI6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsVGltZVNvdXJjZUFkYXB0ZXI6
On5DQ0xheWVyVHJlZUhvc3RJbXBsVGltZVNvdXJjZUFkYXB0ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NMYXllclRyZWVIb3N0SW1wbFRpbWVTb3VyY2VBZGFwdGVyOjpvblRpbWVyVGljayk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsVGltZVNvdXJjZUFkYXB0ZXI6OkND
TGF5ZXJUcmVlSG9zdEltcGxUaW1lU291cmNlQWRhcHRlcik6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OkNDTGF5ZXJUcmVlSG9zdElt
cGwpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6fkNDTGF5ZXJUcmVl
SG9zdEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6c2V0Vmlz
aWJsZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRy
ZWVIb3N0SW1wbC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChDQ0xheWVyVHJlZUhv
c3RJbXBsKToKKwogMjAxMi0wMy0wNiAgRGF2aWQgQ29ydm95c2llciAgPGRhdmlkLmNvcnZveXNp
ZXJAb3JhbmdlLmNvbT4KIAogICAgICAgICBVbnJlbGVhc2VkIGdzdF9vYmplY3RfcmVmZXJlbmNl
IHRvIGF1ZGlvIHNpbmsgaW4gTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJl
ZUhvc3RJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCmluZGV4IGY3MTVhZTM1ZDE3ZjkwYjc0ZGIyMmRj
MGYzYzk0ZTY2NzA1MTk5OWEuLmNlNGJiNDY5OGM0OTc1ZjhkOTUyYjhmODgxN2I3NjdmNDM5NThh
MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCkBAIC0zMSw2ICsz
MSw3IEBACiAjaW5jbHVkZSAiTGF5ZXJSZW5kZXJlckNocm9taXVtLmgiCiAjaW5jbHVkZSAiVHJh
Y2VFdmVudC5oIgogI2luY2x1ZGUgImNjL0NDRGFtYWdlVHJhY2tlci5oIgorI2luY2x1ZGUgImNj
L0NDRGVsYXlCYXNlZFRpbWVTb3VyY2UuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVySXRlcmF0b3Iu
aCIKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3QuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVy
VHJlZUhvc3RDb21tb24uaCIKQEAgLTM5LDggKzQwLDM2IEBACiAjaW5jbHVkZSAiY2MvQ0NUaHJl
YWRUYXNrLmgiCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAKK25hbWVzcGFjZSB7Citj
b25zdCBkb3VibGUgbG93RnJlcXVlbmN5QW5pbWF0aW9uSW50ZXJ2YWxNcyA9IDMwMDsKK30gLy8g
bmFtZXNwYWNlCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ0NMYXllclRyZWVIb3N0
SW1wbFRpbWVTb3VyY2VBZGFwdGVyIDogcHVibGljIENDVGltZVNvdXJjZUNsaWVudCB7CitwdWJs
aWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8Q0NMYXllclRyZWVIb3N0SW1wbFRpbWVTb3VyY2VB
ZGFwdGVyPiBjcmVhdGUoQ0NMYXllclRyZWVIb3N0SW1wbCogbGF5ZXJUcmVlSG9zdEltcGwpCisg
ICAgeworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IENDTGF5ZXJUcmVlSG9zdEltcGxUaW1l
U291cmNlQWRhcHRlcihsYXllclRyZWVIb3N0SW1wbCkpOworICAgIH0KKyAgICB2aXJ0dWFsIH5D
Q0xheWVyVHJlZUhvc3RJbXBsVGltZVNvdXJjZUFkYXB0ZXIoKQorICAgIHsKKyAgICB9CisKKyAg
ICB2aXJ0dWFsIHZvaWQgb25UaW1lclRpY2soKQorICAgIHsKKyAgICAgICAgbV9sYXllclRyZWVI
b3N0SW1wbC0+YW5pbWF0ZShXVEY6Om1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpKTsKKyAg
ICB9CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgQ0NMYXllclRyZWVIb3N0SW1wbFRpbWVTb3Vy
Y2VBZGFwdGVyKENDTGF5ZXJUcmVlSG9zdEltcGwqIGxheWVyVHJlZUhvc3RJbXBsKQorICAgICAg
ICAgICAgOiBtX2xheWVyVHJlZUhvc3RJbXBsKGxheWVyVHJlZUhvc3RJbXBsKQorICAgIHsKKyAg
ICB9CisKKyAgICBDQ0xheWVyVHJlZUhvc3RJbXBsKiBtX2xheWVyVHJlZUhvc3RJbXBsOworfTsK
KwogUGFzc093blB0cjxDQ0xheWVyVHJlZUhvc3RJbXBsPiBDQ0xheWVyVHJlZUhvc3RJbXBsOjpj
cmVhdGUoY29uc3QgQ0NTZXR0aW5ncyYgc2V0dGluZ3MsIENDTGF5ZXJUcmVlSG9zdEltcGxDbGll
bnQqIGNsaWVudCkKIHsKICAgICByZXR1cm4gYWRvcHRQdHIobmV3IENDTGF5ZXJUcmVlSG9zdElt
cGwoc2V0dGluZ3MsIGNsaWVudCkpOwpAQCAtNjIsNiArOTEsOSBAQCBDQ0xheWVyVHJlZUhvc3RJ
bXBsOjpDQ0xheWVyVHJlZUhvc3RJbXBsKGNvbnN0IENDU2V0dGluZ3MmIHNldHRpbmdzLCBDQ0xh
eWVyVHJlZQogICAgICwgbV9waW5jaEdlc3R1cmVBY3RpdmUoZmFsc2UpCiB7CiAgICAgQVNTRVJU
KENDUHJveHk6OmlzSW1wbFRocmVhZCgpKTsKKyAgICBtX2xvd0ZyZXF1ZW5jeUFuaW1hdGlvblRp
bWVTb3VyY2UgPSBDQ0RlbGF5QmFzZWRUaW1lU291cmNlOjpjcmVhdGUobG93RnJlcXVlbmN5QW5p
bWF0aW9uSW50ZXJ2YWxNcywgQ0NQcm94eTo6aGFzSW1wbFRocmVhZCgpID8gQ0NQcm94eTo6aW1w
bFRocmVhZCgpIDogQ0NQcm94eTo6bWFpblRocmVhZCgpKTsKKyAgICBtX3RpbWVTb3VyY2VDbGll
bnRBZGFwdGVyID0gQ0NMYXllclRyZWVIb3N0SW1wbFRpbWVTb3VyY2VBZGFwdGVyOjpjcmVhdGUo
dGhpcyk7CisgICAgbV9sb3dGcmVxdWVuY3lBbmltYXRpb25UaW1lU291cmNlLT5zZXRDbGllbnQo
bV90aW1lU291cmNlQ2xpZW50QWRhcHRlci5nZXQoKSk7CiB9CiAKIENDTGF5ZXJUcmVlSG9zdElt
cGw6On5DQ0xheWVyVHJlZUhvc3RJbXBsKCkKQEAgLTcwLDYgKzEwMiw3IEBAIENDTGF5ZXJUcmVl
SG9zdEltcGw6On5DQ0xheWVyVHJlZUhvc3RJbXBsKCkKICAgICBUUkFDRV9FVkVOVCgiQ0NMYXll
clRyZWVIb3N0SW1wbDo6fkNDTGF5ZXJUcmVlSG9zdEltcGwoKSIsIHRoaXMsIDApOwogICAgIGlm
IChtX2xheWVyUmVuZGVyZXIpCiAgICAgICAgIG1fbGF5ZXJSZW5kZXJlci0+Y2xvc2UoKTsKKyAg
ICBtX2xvd0ZyZXF1ZW5jeUFuaW1hdGlvblRpbWVTb3VyY2UtPnNldEFjdGl2ZShmYWxzZSk7CiB9
CiAKIHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6YmVnaW5Db21taXQoKQpAQCAtMzg3LDYgKzQy
MCw4IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6c2V0VmlzaWJsZShib29sIHZpc2libGUp
CiAKICAgICBpZiAobV9sYXllclJlbmRlcmVyKQogICAgICAgICBtX2xheWVyUmVuZGVyZXItPnNl
dFZpc2libGUodmlzaWJsZSk7CisKKyAgICBtX2xvd0ZyZXF1ZW5jeUFuaW1hdGlvblRpbWVTb3Vy
Y2UtPnNldEFjdGl2ZSghdmlzaWJsZSk7CiB9CiAKIGJvb2wgQ0NMYXllclRyZWVIb3N0SW1wbDo6
aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29u
dGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaAppbmRleCBmZjQ3ZWIwOGZj
MjgzNzAwMjczMzJmOTg1YjdiMWM4ZjJjZGI5ZTdlLi5hMjU2YTI3M2ZkYjBmMjBmODY5NzhhZTAy
MGIwYmUyMjZlMzNiZTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCkBA
IC0zNyw4ICszNywxMCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDQ0NvbXBsZXRp
b25FdmVudDsKK2NsYXNzIENDRGVsYXlCYXNlZFRpbWVTb3VyY2U7CiBjbGFzcyBDQ1BhZ2VTY2Fs
ZUFuaW1hdGlvbjsKIGNsYXNzIENDTGF5ZXJJbXBsOworY2xhc3MgQ0NMYXllclRyZWVIb3N0SW1w
bFRpbWVTb3VyY2VBZGFwdGVyOwogY2xhc3MgTGF5ZXJSZW5kZXJlckNocm9taXVtOwogY2xhc3Mg
VGV4dHVyZUFsbG9jYXRvcjsKIHN0cnVjdCBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzOwpAQCAt
MTc2LDYgKzE3OCwxMCBAQCBwcml2YXRlOgogCiAgICAgT3duUHRyPENDUGFnZVNjYWxlQW5pbWF0
aW9uPiBtX3BhZ2VTY2FsZUFuaW1hdGlvbjsKIAorICAgIC8vIFRoZXNlIGFyZSB1c2VkIGZvciB0
aWNraW5nIGFuaW1hdGlvbnMgc2xvd2x5IHdoZW4gaGlkZGVuLgorICAgIE93blB0cjxDQ0xheWVy
VHJlZUhvc3RJbXBsVGltZVNvdXJjZUFkYXB0ZXI+IG1fdGltZVNvdXJjZUNsaWVudEFkYXB0ZXI7
CisgICAgUmVmUHRyPENDRGVsYXlCYXNlZFRpbWVTb3VyY2U+IG1fbG93RnJlcXVlbmN5QW5pbWF0
aW9uVGltZVNvdXJjZTsKKwogICAgIENDTGF5ZXJTb3J0ZXIgbV9sYXllclNvcnRlcjsKIAogICAg
IEZsb2F0UmVjdCBtX3Jvb3REYW1hZ2VSZWN0Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130826</attachid>
            <date>2012-03-08 08:36:52 -0800</date>
            <delta_ts>2012-03-08 10:43:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77668-20120308113651.patch</filename>
            <type>text/plain</type>
            <size>12759</size>
            <attacher>vollick</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5OTM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjU3MDg4NTA1OThhZjc1
NTVkYjZmMjY5N2UxNWVjMmNhMTMxMDU4Yi4uYjcyYzNlNWZkOWUyMWYwNTU4ZDdlZmRjZjEwYTll
ZDhiNzQyOTFiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDEyLTAzLTA4ICBJYW4g
Vm9sbGljayAgPHZvbGxpY2tAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gRW5z
dXJlIHRoYXQgdGhlIGNjIHRocmVhZCBhbmltYXRpb24gZnJhbWV3b3JrIGNvbnRpbnVlcyB0byB0
aWNrIHdoZW4gdGhlIHRhYiBpcyBiYWNrZ3JvdW5kZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3NjY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdGVkIGluIENDTGF5ZXJUcmVlSG9zdFRlc3RUaWNr
QW5pbWF0aW9uV2hpbGVCYWNrZ3JvdW5kZWQKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwOgorICAgICAgICAoQ0NMYXllclRy
ZWVIb3N0SW1wbFRpbWVTb3VyY2VBZGFwdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJU
cmVlSG9zdEltcGxUaW1lU291cmNlQWRhcHRlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDTGF5ZXJUcmVlSG9zdEltcGxUaW1lU291cmNlQWRhcHRlcjo6fkNDTGF5ZXJUcmVlSG9zdElt
cGxUaW1lU291cmNlQWRhcHRlcik6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJ
bXBsVGltZVNvdXJjZUFkYXB0ZXI6Om9uVGltZXJUaWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkND
TGF5ZXJUcmVlSG9zdEltcGxUaW1lU291cmNlQWRhcHRlcjo6c2V0QWN0aXZlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGxUaW1lU291cmNlQWRhcHRlcjo6Q0NMYXllclRy
ZWVIb3N0SW1wbFRpbWVTb3VyY2VBZGFwdGVyKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6Q0NMYXllclRyZWVIb3N0SW1wbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsOjpzZXRWaXNpYmxlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmg6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKENDTGF5ZXJUcmVlSG9zdEltcGwpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NQcm94eTo6Y3VycmVudFRocmVhZCk6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNDUHJveHk6OmlzTWFpblRocmVhZCk6CisgICAgICAgIChXZWJD
b3JlOjpDQ1Byb3h5Ojppc0ltcGxUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NQcm94eTo6
c2V0Q3VycmVudFRocmVhZElzSW1wbFRocmVhZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NQcm94eS5oOgorICAgICAgICAoQ0NQcm94eSk6CisKIDIwMTItMDMt
MDYgIERhdmlkIENvcnZveXNpZXIgIDxkYXZpZC5jb3J2b3lzaWVyQG9yYW5nZS5jb20+CiAKICAg
ICAgICAgVW5yZWxlYXNlZCBnc3Rfb2JqZWN0X3JlZmVyZW5jZSB0byBhdWRpbyBzaW5rIGluIE1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBi
N2NjMDhlOGJkNDk3ZjU0NWY5YjE4ZWYwZTI1MjY1YjI2YzVkZDE5Li4wMTY0NTYyYWRlYWRkNWM3
NjYwNTE3MTFjYjkxZGM2YjczM2NiMTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDI0IEBACisyMDEyLTAzLTA4ICBJYW4gVm9sbGljayAgPHZvbGxpY2tAY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gRW5zdXJlIHRoYXQgdGhlIGNjIHRocmVhZCBhbmlt
YXRpb24gZnJhbWV3b3JrIGNvbnRpbnVlcyB0byB0aWNrIHdoZW4gdGhlIHRhYiBpcyBiYWNrZ3Jv
dW5kZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3
NjY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB0
ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcDoKKyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVI
b3N0VGVzdDo6cG9zdEFkZEluc3RhbnRBbmltYXRpb25Ub01haW5UaHJlYWQpOgorICAgICAgICAo
Q0NMYXllclRyZWVIb3N0VGVzdCk6CisgICAgICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3Q6
OmRpc3BhdGNoQWRkSW5zdGFudEFuaW1hdGlvbik6CisgICAgICAgIChXVEY6OkNDTGF5ZXJUcmVl
SG9zdFRlc3Q6OmRpc3BhdGNoQWRkQW5pbWF0aW9uKToKKyAgICAgICAgKFdURjo6Q0NMYXllclRy
ZWVIb3N0VGVzdEFkZEFuaW1hdGlvbjo6YmVnaW5UZXN0KToKKyAgICAgICAgKFdURik6CisgICAg
ICAgIChDQ0xheWVyVHJlZUhvc3RUZXN0VGlja0FuaW1hdGlvbldoaWxlQmFja2dyb3VuZGVkKToK
KyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdFRpY2tBbmltYXRpb25XaGlsZUJhY2tn
cm91bmRlZDo6Q0NMYXllclRyZWVIb3N0VGVzdFRpY2tBbmltYXRpb25XaGlsZUJhY2tncm91bmRl
ZCk6CisgICAgICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3RUaWNrQW5pbWF0aW9uV2hpbGVC
YWNrZ3JvdW5kZWQ6OmJlZ2luVGVzdCk6CisgICAgICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRl
c3RUaWNrQW5pbWF0aW9uV2hpbGVCYWNrZ3JvdW5kZWQ6OmFuaW1hdGVMYXllcnMpOgorICAgICAg
ICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0VGlja0FuaW1hdGlvbldoaWxlQmFja2dyb3VuZGVk
OjphZnRlclRlc3QpOgorICAgICAgICAoV1RGOjpURVNUX0YpOgorCiAyMDEyLTAzLTA2ICBUYWth
c2hpIFRveW9zaGltYSAgPHRveW9zaGltQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbQ2hyb21p
dW1dIFtXZWJTb2NrZXRdIEFkZCBXZWJTb2NrZXQgZXh0ZW5zaW9ucyBxdWVyeSBXZWJLaXQgQVBJ
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCmluZGV4IGY3MTVhZTM1ZDE3
ZjkwYjc0ZGIyMmRjMGYzYzk0ZTY2NzA1MTk5OWEuLmVkNDMwODI0ZTU3MjQwNWNkMzk2YzhjMGM4
MjRmNWVhNTVkZmNjMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3Bw
CkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiTGF5ZXJSZW5kZXJlckNocm9taXVtLmgiCiAj
aW5jbHVkZSAiVHJhY2VFdmVudC5oIgogI2luY2x1ZGUgImNjL0NDRGFtYWdlVHJhY2tlci5oIgor
I2luY2x1ZGUgImNjL0NDRGVsYXlCYXNlZFRpbWVTb3VyY2UuaCIKICNpbmNsdWRlICJjYy9DQ0xh
eWVySXRlcmF0b3IuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3QuaCIKICNpbmNsdWRl
ICJjYy9DQ0xheWVyVHJlZUhvc3RDb21tb24uaCIKQEAgLTM5LDggKzQwLDQ2IEBACiAjaW5jbHVk
ZSAiY2MvQ0NUaHJlYWRUYXNrLmgiCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAKK25h
bWVzcGFjZSB7Citjb25zdCBkb3VibGUgbG93RnJlcXVlbmN5QW5pbWF0aW9uSW50ZXJ2YWwgPSAw
LjM7Cit9IC8vIG5hbWVzcGFjZQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENDTGF5
ZXJUcmVlSG9zdEltcGxUaW1lU291cmNlQWRhcHRlciA6IHB1YmxpYyBDQ1RpbWVTb3VyY2VDbGll
bnQgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPENDTGF5ZXJUcmVlSG9zdEltcGxU
aW1lU291cmNlQWRhcHRlcj4gY3JlYXRlKENDTGF5ZXJUcmVlSG9zdEltcGwqIGxheWVyVHJlZUhv
c3RJbXBsLCBQYXNzUmVmUHRyPENDRGVsYXlCYXNlZFRpbWVTb3VyY2U+IHRpbWVTb3VyY2UpCisg
ICAgeworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IENDTGF5ZXJUcmVlSG9zdEltcGxUaW1l
U291cmNlQWRhcHRlcihsYXllclRyZWVIb3N0SW1wbCwgdGltZVNvdXJjZSkpOworICAgIH0KKyAg
ICB2aXJ0dWFsIH5DQ0xheWVyVHJlZUhvc3RJbXBsVGltZVNvdXJjZUFkYXB0ZXIoKQorICAgIHsK
KyAgICAgICAgbV90aW1lU291cmNlLT5zZXRDbGllbnQoMCk7CisgICAgICAgIG1fdGltZVNvdXJj
ZS0+c2V0QWN0aXZlKGZhbHNlKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgb25UaW1lclRp
Y2soKQorICAgIHsKKyAgICAgICAgbV9sYXllclRyZWVIb3N0SW1wbC0+YW5pbWF0ZShtb25vdG9u
aWNhbGx5SW5jcmVhc2luZ1RpbWUoKSAqIDEwMDAuMCk7CisgICAgfQorCisgICAgdm9pZCBzZXRB
Y3RpdmUoYm9vbCBhY3RpdmUpCisgICAgeworICAgICAgICBtX3RpbWVTb3VyY2UtPnNldEFjdGl2
ZShhY3RpdmUpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBDQ0xheWVyVHJlZUhv
c3RJbXBsVGltZVNvdXJjZUFkYXB0ZXIoQ0NMYXllclRyZWVIb3N0SW1wbCogbGF5ZXJUcmVlSG9z
dEltcGwsIFBhc3NSZWZQdHI8Q0NEZWxheUJhc2VkVGltZVNvdXJjZT4gdGltZVNvdXJjZSkKKyAg
ICAgICAgOiBtX2xheWVyVHJlZUhvc3RJbXBsKGxheWVyVHJlZUhvc3RJbXBsKQorICAgICAgICAs
IG1fdGltZVNvdXJjZSh0aW1lU291cmNlKQorICAgIHsKKyAgICAgICAgbV90aW1lU291cmNlLT5z
ZXRDbGllbnQodGhpcyk7CisgICAgfQorCisgICAgQ0NMYXllclRyZWVIb3N0SW1wbCogbV9sYXll
clRyZWVIb3N0SW1wbDsKKyAgICBSZWZQdHI8Q0NEZWxheUJhc2VkVGltZVNvdXJjZT4gbV90aW1l
U291cmNlOworfTsKKwogUGFzc093blB0cjxDQ0xheWVyVHJlZUhvc3RJbXBsPiBDQ0xheWVyVHJl
ZUhvc3RJbXBsOjpjcmVhdGUoY29uc3QgQ0NTZXR0aW5ncyYgc2V0dGluZ3MsIENDTGF5ZXJUcmVl
SG9zdEltcGxDbGllbnQqIGNsaWVudCkKIHsKICAgICByZXR1cm4gYWRvcHRQdHIobmV3IENDTGF5
ZXJUcmVlSG9zdEltcGwoc2V0dGluZ3MsIGNsaWVudCkpOwpAQCAtNjAsNiArOTksNyBAQCBDQ0xh
eWVyVHJlZUhvc3RJbXBsOjpDQ0xheWVyVHJlZUhvc3RJbXBsKGNvbnN0IENDU2V0dGluZ3MmIHNl
dHRpbmdzLCBDQ0xheWVyVHJlZQogICAgICwgbV9tYXhQYWdlU2NhbGUoMCkKICAgICAsIG1fbmVl
ZHNBbmltYXRlTGF5ZXJzKGZhbHNlKQogICAgICwgbV9waW5jaEdlc3R1cmVBY3RpdmUoZmFsc2Up
CisgICAgLCBtX3RpbWVTb3VyY2VDbGllbnRBZGFwdGVyKENDTGF5ZXJUcmVlSG9zdEltcGxUaW1l
U291cmNlQWRhcHRlcjo6Y3JlYXRlKHRoaXMsIENDRGVsYXlCYXNlZFRpbWVTb3VyY2U6OmNyZWF0
ZShsb3dGcmVxdWVuY3lBbmltYXRpb25JbnRlcnZhbCAqIDEwMDAuMCwgQ0NQcm94eTo6Y3VycmVu
dFRocmVhZCgpKSkpCiB7CiAgICAgQVNTRVJUKENDUHJveHk6OmlzSW1wbFRocmVhZCgpKTsKIH0K
QEAgLTM4Nyw2ICs0MjcsOSBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OnNldFZpc2libGUo
Ym9vbCB2aXNpYmxlKQogCiAgICAgaWYgKG1fbGF5ZXJSZW5kZXJlcikKICAgICAgICAgbV9sYXll
clJlbmRlcmVyLT5zZXRWaXNpYmxlKHZpc2libGUpOworCisgICAgY29uc3QgYm9vbCBzaG91bGRU
aWNrSW5CYWNrZ3JvdW5kID0gIXZpc2libGUgJiYgbV9uZWVkc0FuaW1hdGVMYXllcnM7CisgICAg
bV90aW1lU291cmNlQ2xpZW50QWRhcHRlci0+c2V0QWN0aXZlKHNob3VsZFRpY2tJbkJhY2tncm91
bmQpOwogfQogCiBib29sIENDTGF5ZXJUcmVlSG9zdEltcGw6OmluaXRpYWxpemVMYXllclJlbmRl
cmVyKFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhv
c3RJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyVHJlZUhvc3RJbXBsLmgKaW5kZXggZmY0N2ViMDhmYzI4MzcwMDI3MzMyZjk4NWI3YjFj
OGYyY2RiOWU3ZS4uODFjNjIwYmZkN2UzYWVmOGZhODcwOGI1MjEzN2RiOGVkZmM5NDliZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllclRyZWVIb3N0SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaApAQCAtMzksNiArMzksNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDQ0NvbXBsZXRpb25FdmVudDsKIGNsYXNzIENDUGFnZVNj
YWxlQW5pbWF0aW9uOwogY2xhc3MgQ0NMYXllckltcGw7CitjbGFzcyBDQ0xheWVyVHJlZUhvc3RJ
bXBsVGltZVNvdXJjZUFkYXB0ZXI7CiBjbGFzcyBMYXllclJlbmRlcmVyQ2hyb21pdW07CiBjbGFz
cyBUZXh0dXJlQWxsb2NhdG9yOwogc3RydWN0IExheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXM7CkBA
IC0xNzYsNiArMTc3LDkgQEAgcHJpdmF0ZToKIAogICAgIE93blB0cjxDQ1BhZ2VTY2FsZUFuaW1h
dGlvbj4gbV9wYWdlU2NhbGVBbmltYXRpb247CiAKKyAgICAvLyBUaGlzIGlzIHVzZWQgZm9yIHRp
Y2tpbmcgYW5pbWF0aW9ucyBzbG93bHkgd2hlbiBoaWRkZW4uCisgICAgT3duUHRyPENDTGF5ZXJU
cmVlSG9zdEltcGxUaW1lU291cmNlQWRhcHRlcj4gbV90aW1lU291cmNlQ2xpZW50QWRhcHRlcjsK
KwogICAgIENDTGF5ZXJTb3J0ZXIgbV9sYXllclNvcnRlcjsKIAogICAgIEZsb2F0UmVjdCBtX3Jv
b3REYW1hZ2VSZWN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmNwcAppbmRleCBlNGQ2MDE0NTExYmMxYzVkYjBlNjg3
YmQxZjY4M2ZhZTgwMzZjNWFhLi45ZWJiNzFkYzdkMzQxYTI3OWI3YTdmNjQ3ZGJhNWVkZjE4NDMw
YjdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1Byb3h5LmNwcApAQCAtNjksMjggKzY5LDM4IEBAIENDVGhyZWFkKiBDQ1By
b3h5OjppbXBsVGhyZWFkKCkKICAgICByZXR1cm4gc19pbXBsVGhyZWFkOwogfQogCitDQ1RocmVh
ZCogQ0NQcm94eTo6Y3VycmVudFRocmVhZCgpCit7CisgICAgVGhyZWFkSWRlbnRpZmllciBjdXJy
ZW50VGhyZWFkSWRlbnRpZmllciA9IFdURjo6Y3VycmVudFRocmVhZCgpOworICAgIGlmIChzX21h
aW5UaHJlYWQgJiYgc19tYWluVGhyZWFkLT50aHJlYWRJRCgpID09IGN1cnJlbnRUaHJlYWRJZGVu
dGlmaWVyKQorICAgICAgICByZXR1cm4gc19tYWluVGhyZWFkOworICAgIGlmIChzX2ltcGxUaHJl
YWQgJiYgc19pbXBsVGhyZWFkLT50aHJlYWRJRCgpID09IGN1cnJlbnRUaHJlYWRJZGVudGlmaWVy
KQorICAgICAgICByZXR1cm4gc19pbXBsVGhyZWFkOworICAgIHJldHVybiAwOworfQorCiAjaWZu
ZGVmIE5ERUJVRwogYm9vbCBDQ1Byb3h5Ojppc01haW5UaHJlYWQoKQogewogICAgIEFTU0VSVChz
X21haW5UaHJlYWQpOwotICAgIGlmIChpbXBsVGhyZWFkSXNPdmVycmlkZGVuICYmIGN1cnJlbnRU
aHJlYWQoKSA9PSB0aHJlYWRJRE92ZXJyaWRlblRvQmVJbXBsVGhyZWFkKQorICAgIGlmIChpbXBs
VGhyZWFkSXNPdmVycmlkZGVuICYmIFdURjo6Y3VycmVudFRocmVhZCgpID09IHRocmVhZElET3Zl
cnJpZGVuVG9CZUltcGxUaHJlYWQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4g
Y3VycmVudFRocmVhZCgpID09IHNfbWFpblRocmVhZC0+dGhyZWFkSUQoKTsKKyAgICByZXR1cm4g
V1RGOjpjdXJyZW50VGhyZWFkKCkgPT0gc19tYWluVGhyZWFkLT50aHJlYWRJRCgpOwogfQogCiBi
b29sIENDUHJveHk6OmlzSW1wbFRocmVhZCgpCiB7CiAgICAgV1RGOjpUaHJlYWRJZGVudGlmaWVy
IGltcGxUaHJlYWRJRCA9IHNfaW1wbFRocmVhZCA/IHNfaW1wbFRocmVhZC0+dGhyZWFkSUQoKSA6
IDA7Ci0gICAgaWYgKGltcGxUaHJlYWRJc092ZXJyaWRkZW4gJiYgY3VycmVudFRocmVhZCgpID09
IHRocmVhZElET3ZlcnJpZGVuVG9CZUltcGxUaHJlYWQpCisgICAgaWYgKGltcGxUaHJlYWRJc092
ZXJyaWRkZW4gJiYgV1RGOjpjdXJyZW50VGhyZWFkKCkgPT0gdGhyZWFkSURPdmVycmlkZW5Ub0Jl
SW1wbFRocmVhZCkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuIGN1cnJlbnRUaHJl
YWQoKSA9PSBpbXBsVGhyZWFkSUQ7CisgICAgcmV0dXJuIFdURjo6Y3VycmVudFRocmVhZCgpID09
IGltcGxUaHJlYWRJRDsKIH0KIAogdm9pZCBDQ1Byb3h5OjpzZXRDdXJyZW50VGhyZWFkSXNJbXBs
VGhyZWFkKGJvb2wgaXNJbXBsVGhyZWFkKQogewogICAgIGltcGxUaHJlYWRJc092ZXJyaWRkZW4g
PSBpc0ltcGxUaHJlYWQ7CiAgICAgaWYgKGlzSW1wbFRocmVhZCkKLSAgICAgICAgdGhyZWFkSURP
dmVycmlkZW5Ub0JlSW1wbFRocmVhZCA9IGN1cnJlbnRUaHJlYWQoKTsKKyAgICAgICAgdGhyZWFk
SURPdmVycmlkZW5Ub0JlSW1wbFRocmVhZCA9IFdURjo6Y3VycmVudFRocmVhZCgpOwogfQogI2Vu
ZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDUHJveHkuaAppbmRleCBhNTQ2ODAyMTJiNTg3ODQxMGNmYWY3OGVmYzdjYzYzN2Nm
Y2QxYmM0Li4wMTYyMjZjYTUxMjAxMzFmY2ZlM2ZjMTMzMTlhYzcxNjA4NzY3NTliIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQ
cm94eS5oCkBAIC01Myw2ICs1Myw5IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBzZXRJbXBs
VGhyZWFkKENDVGhyZWFkKik7CiAgICAgc3RhdGljIENDVGhyZWFkKiBpbXBsVGhyZWFkKCk7CiAK
KyAgICAvLyBSZXR1cm5zIDAgaWYgdGhlIGN1cnJlbnQgdGhyZWFkIGlzIG5laXRoZXIgdGhlIG1h
aW4gdGhyZWFkIG5vciB0aGUgaW1wbCB0aHJlYWQuCisgICAgc3RhdGljIENDVGhyZWFkKiBjdXJy
ZW50VGhyZWFkKCk7CisKICAgICB2aXJ0dWFsIH5DQ1Byb3h5KCk7CiAKICAgICB2aXJ0dWFsIGJv
b2wgY29tcG9zaXRlQW5kUmVhZGJhY2sodm9pZCAqcGl4ZWxzLCBjb25zdCBJbnRSZWN0JikgPSAw
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhv
c3RUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0
VGVzdC5jcHAKaW5kZXggZDdkZDA1NTk1YmZlNTI2YTUwN2U4YjcyZTQ4ZGE3YzE4Njc2MzQ5NS4u
NDI0MmJjZTIzYWJhYTliYTcyNjFhNTkxOWNmODNmYTU4M2M1MWRmNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCkBAIC0y
ODYsNiArMjg2LDExIEBAIHB1YmxpYzoKICAgICAgICAgY2FsbE9uTWFpblRocmVhZChDQ0xheWVy
VHJlZUhvc3RUZXN0OjpkaXNwYXRjaEFkZEFuaW1hdGlvbiwgdGhpcyk7CiAgICAgfQogCisgICAg
dm9pZCBwb3N0QWRkSW5zdGFudEFuaW1hdGlvblRvTWFpblRocmVhZCgpCisgICAgeworICAgICAg
ICBjYWxsT25NYWluVGhyZWFkKENDTGF5ZXJUcmVlSG9zdFRlc3Q6OmRpc3BhdGNoQWRkSW5zdGFu
dEFuaW1hdGlvbiwgdGhpcyk7CisgICAgfQorCiAgICAgdm9pZCBwb3N0U2V0TmVlZHNDb21taXRU
b01haW5UaHJlYWQoKQogICAgIHsKICAgICAgICAgY2FsbE9uTWFpblRocmVhZChDQ0xheWVyVHJl
ZUhvc3RUZXN0OjpkaXNwYXRjaFNldE5lZWRzQ29tbWl0LCB0aGlzKTsKQEAgLTM0Myw3ICszNDgs
NyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgICAgdGVzdC0+bV9sYXllclRyZWVIb3N0LT5zZXROZWVk
c0FuaW1hdGUoKTsKICAgICB9CiAKLSAgICBzdGF0aWMgdm9pZCBkaXNwYXRjaEFkZEFuaW1hdGlv
bih2b2lkKiBzZWxmKQorICAgIHN0YXRpYyB2b2lkIGRpc3BhdGNoQWRkSW5zdGFudEFuaW1hdGlv
bih2b2lkKiBzZWxmKQogICAgIHsKICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAg
ICBDQ0xheWVyVHJlZUhvc3RUZXN0KiB0ZXN0ID0gc3RhdGljX2Nhc3Q8Q0NMYXllclRyZWVIb3N0
VGVzdCo+KHNlbGYpOwpAQCAtMzUyLDYgKzM1NywxNSBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgICAg
YWRkT3BhY2l0eVRyYW5zaXRpb25Ub0xheWVyKCp0ZXN0LT5tX2xheWVyVHJlZUhvc3QtPnJvb3RM
YXllcigpLCAwLCAwLCAxKTsKICAgICB9CiAKKyAgICBzdGF0aWMgdm9pZCBkaXNwYXRjaEFkZEFu
aW1hdGlvbih2b2lkKiBzZWxmKQorICAgIHsKKyAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CisgICAgICBDQ0xheWVyVHJlZUhvc3RUZXN0KiB0ZXN0ID0gc3RhdGljX2Nhc3Q8Q0NMYXllclRy
ZWVIb3N0VGVzdCo+KHNlbGYpOworICAgICAgQVNTRVJUKHRlc3QpOworICAgICAgaWYgKHRlc3Qt
Pm1fbGF5ZXJUcmVlSG9zdCAmJiB0ZXN0LT5tX2xheWVyVHJlZUhvc3QtPnJvb3RMYXllcigpKQor
ICAgICAgICAgIGFkZE9wYWNpdHlUcmFuc2l0aW9uVG9MYXllcigqdGVzdC0+bV9sYXllclRyZWVI
b3N0LT5yb290TGF5ZXIoKSwgMTAwMDAsIDAsIDEpOworICAgIH0KKwogICAgIHN0YXRpYyB2b2lk
IGRpc3BhdGNoU2V0TmVlZHNBbmltYXRlQW5kQ29tbWl0KHZvaWQqIHNlbGYpCiAgICAgewogICAg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKQEAgLTg0MSw3ICs4NTUsNyBAQCBwdWJsaWM6CiAK
ICAgICB2aXJ0dWFsIHZvaWQgYmVnaW5UZXN0KCkKICAgICB7Ci0gICAgICAgIHBvc3RBZGRBbmlt
YXRpb25Ub01haW5UaHJlYWQoKTsKKyAgICAgICAgcG9zdEFkZEluc3RhbnRBbmltYXRpb25Ub01h
aW5UaHJlYWQoKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIHZvaWQgYW5pbWF0ZUxheWVycyhDQ0xh
eWVyVHJlZUhvc3RJbXBsKiBsYXllclRyZWVIb3N0SW1wbCkKQEAgLTg4Myw2ICs4OTcsNDMgQEAg
VEVTVF9GKENDTGF5ZXJUcmVlSG9zdFRlc3RBZGRBbmltYXRpb24sIHJ1bk11bHRpVGhyZWFkKQog
ICAgIHJ1blRlc3RUaHJlYWRlZCgpOwogfQogCisvLyBFbnN1cmVzIHRoYXQgYW5pbWF0aW9ucyBj
b250aW51ZSB0byBiZSB0aWNrZWQgd2hlbiB3ZSBhcmUgYmFja2dyb3VuZGVkLgorY2xhc3MgQ0NM
YXllclRyZWVIb3N0VGVzdFRpY2tBbmltYXRpb25XaGlsZUJhY2tncm91bmRlZCA6IHB1YmxpYyBD
Q0xheWVyVHJlZUhvc3RUZXN0VGhyZWFkT25seSB7CitwdWJsaWM6CisgICAgQ0NMYXllclRyZWVI
b3N0VGVzdFRpY2tBbmltYXRpb25XaGlsZUJhY2tncm91bmRlZCgpCisgICAgICAgIDogbV9udW1B
bmltYXRlcygwKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgYmVnaW5UZXN0KCkK
KyAgICB7CisgICAgICAgIHBvc3RBZGRBbmltYXRpb25Ub01haW5UaHJlYWQoKTsKKyAgICB9CisK
KyAgICB2aXJ0dWFsIHZvaWQgYW5pbWF0ZUxheWVycyhDQ0xheWVyVHJlZUhvc3RJbXBsKiBsYXll
clRyZWVIb3N0SW1wbCkKKyAgICB7CisgICAgICAgIGlmICghbV9udW1BbmltYXRlcykgeworICAg
ICAgICAgICAgLy8gV2UgaGF2ZSBhIGxvbmcgYW5pbWF0aW9uIHJ1bm5pbmcuIEl0IHNob3VsZCBj
b250aW51ZSB0byB0aWNrIGV2ZW4gaWYgd2UgYXJlIG5vdCB2aXNpYmxlLgorICAgICAgICAgICAg
cG9zdFNldFZpc2libGVUb01haW5UaHJlYWQoZmFsc2UpOworICAgICAgICAgICAgbV9udW1Bbmlt
YXRlcysrOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGVuZFRlc3Qo
KTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgYWZ0ZXJUZXN0KCkKKyAgICB7CisgICAgfQor
Citwcml2YXRlOgorICAgIGludCBtX251bUFuaW1hdGVzOworfTsKKworVEVTVF9GKENDTGF5ZXJU
cmVlSG9zdFRlc3RUaWNrQW5pbWF0aW9uV2hpbGVCYWNrZ3JvdW5kZWQsIHJ1bk11bHRpVGhyZWFk
KQoreworICAgIHJ1blRlc3RUaHJlYWRlZCgpOworfQorCiBjbGFzcyBDQ0xheWVyVHJlZUhvc3RU
ZXN0U2Nyb2xsU2ltcGxlIDogcHVibGljIENDTGF5ZXJUcmVlSG9zdFRlc3RUaHJlYWRPbmx5IHsK
IHB1YmxpYzoKICAgICBDQ0xheWVyVHJlZUhvc3RUZXN0U2Nyb2xsU2ltcGxlKCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130847</attachid>
            <date>2012-03-08 10:43:06 -0800</date>
            <delta_ts>2012-03-08 11:32:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77668-20120308134304.patch</filename>
            <type>text/plain</type>
            <size>13243</size>
            <attacher>vollick</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5OTM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjU3MDg4NTA1OThhZjc1
NTVkYjZmMjY5N2UxNWVjMmNhMTMxMDU4Yi4uMGMyNjdhYzQwOGQ4ZmM2NGFmNWJmZmZlNGIzYzNk
ZDI0MmFlNjA4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDEyLTAzLTA4ICBJYW4g
Vm9sbGljayAgPHZvbGxpY2tAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gRW5z
dXJlIHRoYXQgdGhlIGNjIHRocmVhZCBhbmltYXRpb24gZnJhbWV3b3JrIGNvbnRpbnVlcyB0byB0
aWNrIHdoZW4gdGhlIHRhYiBpcyBiYWNrZ3JvdW5kZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3NjY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdGVkIGluIENDTGF5ZXJUcmVlSG9zdFRlc3RUaWNr
QW5pbWF0aW9uV2hpbGVCYWNrZ3JvdW5kZWQKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwOgorICAgICAgICAoQ0NMYXllclRy
ZWVIb3N0SW1wbFRpbWVTb3VyY2VBZGFwdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJU
cmVlSG9zdEltcGxUaW1lU291cmNlQWRhcHRlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDTGF5ZXJUcmVlSG9zdEltcGxUaW1lU291cmNlQWRhcHRlcjo6fkNDTGF5ZXJUcmVlSG9zdElt
cGxUaW1lU291cmNlQWRhcHRlcik6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJ
bXBsVGltZVNvdXJjZUFkYXB0ZXI6Om9uVGltZXJUaWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkND
TGF5ZXJUcmVlSG9zdEltcGxUaW1lU291cmNlQWRhcHRlcjo6c2V0QWN0aXZlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGxUaW1lU291cmNlQWRhcHRlcjo6Q0NMYXllclRy
ZWVIb3N0SW1wbFRpbWVTb3VyY2VBZGFwdGVyKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6Q0NMYXllclRyZWVIb3N0SW1wbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsOjpzZXRWaXNpYmxlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OmFuaW1hdGVMYXllcnMpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaDoK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ0NMYXllclRyZWVIb3N0SW1wbCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDQ1Byb3h5OjpjdXJyZW50VGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NQcm94eTo6aXNNYWluVGhyZWFkKToKKyAgICAgICAgKFdlYkNv
cmU6OkNDUHJveHk6OmlzSW1wbFRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Byb3h5Ojpz
ZXRDdXJyZW50VGhyZWFkSXNJbXBsVGhyZWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1Byb3h5Lmg6CisgICAgICAgIChDQ1Byb3h5KToKKwogMjAxMi0wMy0w
NiAgRGF2aWQgQ29ydm95c2llciAgPGRhdmlkLmNvcnZveXNpZXJAb3JhbmdlLmNvbT4KIAogICAg
ICAgICBVbnJlbGVhc2VkIGdzdF9vYmplY3RfcmVmZXJlbmNlIHRvIGF1ZGlvIHNpbmsgaW4gTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGI3
Y2MwOGU4YmQ0OTdmNTQ1ZjliMThlZjBlMjUyNjViMjZjNWRkMTkuLjAxNjQ1NjJhZGVhZGQ1Yzc2
NjA1MTcxMWNiOTFkYzZiNzMzY2IxNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjQgQEAKKzIwMTItMDMtMDggIElhbiBWb2xsaWNrICA8dm9sbGlja0BjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBFbnN1cmUgdGhhdCB0aGUgY2MgdGhyZWFkIGFuaW1h
dGlvbiBmcmFtZXdvcmsgY29udGludWVzIHRvIHRpY2sgd2hlbiB0aGUgdGFiIGlzIGJhY2tncm91
bmRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzc2
NjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHRl
c3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwOgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhv
c3RUZXN0Ojpwb3N0QWRkSW5zdGFudEFuaW1hdGlvblRvTWFpblRocmVhZCk6CisgICAgICAgIChD
Q0xheWVyVHJlZUhvc3RUZXN0KToKKyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdDo6
ZGlzcGF0Y2hBZGRJbnN0YW50QW5pbWF0aW9uKToKKyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVI
b3N0VGVzdDo6ZGlzcGF0Y2hBZGRBbmltYXRpb24pOgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJl
ZUhvc3RUZXN0QWRkQW5pbWF0aW9uOjpiZWdpblRlc3QpOgorICAgICAgICAoV1RGKToKKyAgICAg
ICAgKENDTGF5ZXJUcmVlSG9zdFRlc3RUaWNrQW5pbWF0aW9uV2hpbGVCYWNrZ3JvdW5kZWQpOgor
ICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0VGlja0FuaW1hdGlvbldoaWxlQmFja2dy
b3VuZGVkOjpDQ0xheWVyVHJlZUhvc3RUZXN0VGlja0FuaW1hdGlvbldoaWxlQmFja2dyb3VuZGVk
KToKKyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdFRpY2tBbmltYXRpb25XaGlsZUJh
Y2tncm91bmRlZDo6YmVnaW5UZXN0KToKKyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVIb3N0VGVz
dFRpY2tBbmltYXRpb25XaGlsZUJhY2tncm91bmRlZDo6YW5pbWF0ZUxheWVycyk6CisgICAgICAg
IChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3RUaWNrQW5pbWF0aW9uV2hpbGVCYWNrZ3JvdW5kZWQ6
OmFmdGVyVGVzdCk6CisgICAgICAgIChXVEY6OlRFU1RfRik6CisKIDIwMTItMDMtMDYgIFRha2Fz
aGkgVG95b3NoaW1hICA8dG95b3NoaW1AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtDaHJvbWl1
bV0gW1dlYlNvY2tldF0gQWRkIFdlYlNvY2tldCBleHRlbnNpb25zIHF1ZXJ5IFdlYktpdCBBUEkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKaW5kZXggZjcxNWFlMzVkMTdm
OTBiNzRkYjIyZGMwZjNjOTRlNjY3MDUxOTk5YS4uMGU5MzIzNmRjMjMwMjU5N2M0NzYyNmUzNTg3
Y2QwNDRhODhmYzFkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAK
QEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJMYXllclJlbmRlcmVyQ2hyb21pdW0uaCIKICNp
bmNsdWRlICJUcmFjZUV2ZW50LmgiCiAjaW5jbHVkZSAiY2MvQ0NEYW1hZ2VUcmFja2VyLmgiCisj
aW5jbHVkZSAiY2MvQ0NEZWxheUJhc2VkVGltZVNvdXJjZS5oIgogI2luY2x1ZGUgImNjL0NDTGF5
ZXJJdGVyYXRvci5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdC5oIgogI2luY2x1ZGUg
ImNjL0NDTGF5ZXJUcmVlSG9zdENvbW1vbi5oIgpAQCAtMzksOCArNDAsNDcgQEAKICNpbmNsdWRl
ICJjYy9DQ1RocmVhZFRhc2suaCIKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KIAorbmFt
ZXNwYWNlIHsKK2NvbnN0IGRvdWJsZSBsb3dGcmVxdWVuY3lBbmltYXRpb25JbnRlcnZhbCA9IDAu
MzsKK30gLy8gbmFtZXNwYWNlCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ0NMYXll
clRyZWVIb3N0SW1wbFRpbWVTb3VyY2VBZGFwdGVyIDogcHVibGljIENDVGltZVNvdXJjZUNsaWVu
dCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8Q0NMYXllclRyZWVIb3N0SW1wbFRp
bWVTb3VyY2VBZGFwdGVyPiBjcmVhdGUoQ0NMYXllclRyZWVIb3N0SW1wbCogbGF5ZXJUcmVlSG9z
dEltcGwsIFBhc3NSZWZQdHI8Q0NEZWxheUJhc2VkVGltZVNvdXJjZT4gdGltZVNvdXJjZSkKKyAg
ICB7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ0NMYXllclRyZWVIb3N0SW1wbFRpbWVT
b3VyY2VBZGFwdGVyKGxheWVyVHJlZUhvc3RJbXBsLCB0aW1lU291cmNlKSk7CisgICAgfQorICAg
IHZpcnR1YWwgfkNDTGF5ZXJUcmVlSG9zdEltcGxUaW1lU291cmNlQWRhcHRlcigpCisgICAgewor
ICAgICAgICBtX3RpbWVTb3VyY2UtPnNldENsaWVudCgwKTsKKyAgICAgICAgbV90aW1lU291cmNl
LT5zZXRBY3RpdmUoZmFsc2UpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBvblRpbWVyVGlj
aygpCisgICAgeworICAgICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5hbmltYXRlKG1vbm90b25p
Y2FsbHlJbmNyZWFzaW5nVGltZSgpICogMTAwMC4wKTsKKyAgICB9CisKKyAgICB2b2lkIHNldEFj
dGl2ZShib29sIGFjdGl2ZSkKKyAgICB7CisgICAgICAgIGlmIChhY3RpdmUgIT0gbV90aW1lU291
cmNlLT5hY3RpdmUoKSkKKyAgICAgICAgICAgIG1fdGltZVNvdXJjZS0+c2V0QWN0aXZlKGFjdGl2
ZSk7CisgICAgfQorCitwcml2YXRlOgorICAgIGV4cGxpY2l0IENDTGF5ZXJUcmVlSG9zdEltcGxU
aW1lU291cmNlQWRhcHRlcihDQ0xheWVyVHJlZUhvc3RJbXBsKiBsYXllclRyZWVIb3N0SW1wbCwg
UGFzc1JlZlB0cjxDQ0RlbGF5QmFzZWRUaW1lU291cmNlPiB0aW1lU291cmNlKQorICAgICAgICA6
IG1fbGF5ZXJUcmVlSG9zdEltcGwobGF5ZXJUcmVlSG9zdEltcGwpCisgICAgICAgICwgbV90aW1l
U291cmNlKHRpbWVTb3VyY2UpCisgICAgeworICAgICAgICBtX3RpbWVTb3VyY2UtPnNldENsaWVu
dCh0aGlzKTsKKyAgICB9CisKKyAgICBDQ0xheWVyVHJlZUhvc3RJbXBsKiBtX2xheWVyVHJlZUhv
c3RJbXBsOworICAgIFJlZlB0cjxDQ0RlbGF5QmFzZWRUaW1lU291cmNlPiBtX3RpbWVTb3VyY2U7
Cit9OworCiBQYXNzT3duUHRyPENDTGF5ZXJUcmVlSG9zdEltcGw+IENDTGF5ZXJUcmVlSG9zdElt
cGw6OmNyZWF0ZShjb25zdCBDQ1NldHRpbmdzJiBzZXR0aW5ncywgQ0NMYXllclRyZWVIb3N0SW1w
bENsaWVudCogY2xpZW50KQogewogICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ0NMYXllclRyZWVI
b3N0SW1wbChzZXR0aW5ncywgY2xpZW50KSk7CkBAIC02MCw2ICsxMDAsNyBAQCBDQ0xheWVyVHJl
ZUhvc3RJbXBsOjpDQ0xheWVyVHJlZUhvc3RJbXBsKGNvbnN0IENDU2V0dGluZ3MmIHNldHRpbmdz
LCBDQ0xheWVyVHJlZQogICAgICwgbV9tYXhQYWdlU2NhbGUoMCkKICAgICAsIG1fbmVlZHNBbmlt
YXRlTGF5ZXJzKGZhbHNlKQogICAgICwgbV9waW5jaEdlc3R1cmVBY3RpdmUoZmFsc2UpCisgICAg
LCBtX3RpbWVTb3VyY2VDbGllbnRBZGFwdGVyKENDTGF5ZXJUcmVlSG9zdEltcGxUaW1lU291cmNl
QWRhcHRlcjo6Y3JlYXRlKHRoaXMsIENDRGVsYXlCYXNlZFRpbWVTb3VyY2U6OmNyZWF0ZShsb3dG
cmVxdWVuY3lBbmltYXRpb25JbnRlcnZhbCAqIDEwMDAuMCwgQ0NQcm94eTo6Y3VycmVudFRocmVh
ZCgpKSkpCiB7CiAgICAgQVNTRVJUKENDUHJveHk6OmlzSW1wbFRocmVhZCgpKTsKIH0KQEAgLTM4
Nyw2ICs0MjgsOSBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OnNldFZpc2libGUoYm9vbCB2
aXNpYmxlKQogCiAgICAgaWYgKG1fbGF5ZXJSZW5kZXJlcikKICAgICAgICAgbV9sYXllclJlbmRl
cmVyLT5zZXRWaXNpYmxlKHZpc2libGUpOworCisgICAgY29uc3QgYm9vbCBzaG91bGRUaWNrSW5C
YWNrZ3JvdW5kID0gIXZpc2libGUgJiYgbV9uZWVkc0FuaW1hdGVMYXllcnM7CisgICAgbV90aW1l
U291cmNlQ2xpZW50QWRhcHRlci0+c2V0QWN0aXZlKHNob3VsZFRpY2tJbkJhY2tncm91bmQpOwog
fQogCiBib29sIENDTGF5ZXJUcmVlSG9zdEltcGw6OmluaXRpYWxpemVMYXllclJlbmRlcmVyKFBh
c3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQpCkBAIC02OTgsNiArNzQyLDkgQEAg
dm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjphbmltYXRlTGF5ZXJzKGRvdWJsZSBmcmFtZUJlZ2lu
VGltZU1zKQogCiAgICAgaWYgKGRpZEFuaW1hdGUpCiAgICAgICAgIG1fY2xpZW50LT5zZXROZWVk
c1JlZHJhd09uSW1wbFRocmVhZCgpOworCisgICAgY29uc3QgYm9vbCBzaG91bGRUaWNrSW5CYWNr
Z3JvdW5kID0gbV9uZWVkc0FuaW1hdGVMYXllcnMgJiYgIW1fdmlzaWJsZTsKKyAgICBtX3RpbWVT
b3VyY2VDbGllbnRBZGFwdGVyLT5zZXRBY3RpdmUoc2hvdWxkVGlja0luQmFja2dyb3VuZCk7CiB9
CiAKIHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6c2VuZENvbnRleHRMb3N0QW5kUmVzdG9yZWRO
b3RpZmljYXRpb24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCmluZGV4IGZm
NDdlYjA4ZmMyODM3MDAyNzMzMmY5ODViN2IxYzhmMmNkYjllN2UuLjgxYzYyMGJmZDdlM2FlZjhm
YTg3MDhiNTIxMzdkYjhlZGZjOTQ5YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJ
bXBsLmgKQEAgLTM5LDYgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ0NDb21w
bGV0aW9uRXZlbnQ7CiBjbGFzcyBDQ1BhZ2VTY2FsZUFuaW1hdGlvbjsKIGNsYXNzIENDTGF5ZXJJ
bXBsOworY2xhc3MgQ0NMYXllclRyZWVIb3N0SW1wbFRpbWVTb3VyY2VBZGFwdGVyOwogY2xhc3Mg
TGF5ZXJSZW5kZXJlckNocm9taXVtOwogY2xhc3MgVGV4dHVyZUFsbG9jYXRvcjsKIHN0cnVjdCBM
YXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzOwpAQCAtMTc2LDYgKzE3Nyw5IEBAIHByaXZhdGU6CiAK
ICAgICBPd25QdHI8Q0NQYWdlU2NhbGVBbmltYXRpb24+IG1fcGFnZVNjYWxlQW5pbWF0aW9uOwog
CisgICAgLy8gVGhpcyBpcyB1c2VkIGZvciB0aWNraW5nIGFuaW1hdGlvbnMgc2xvd2x5IHdoZW4g
aGlkZGVuLgorICAgIE93blB0cjxDQ0xheWVyVHJlZUhvc3RJbXBsVGltZVNvdXJjZUFkYXB0ZXI+
IG1fdGltZVNvdXJjZUNsaWVudEFkYXB0ZXI7CisKICAgICBDQ0xheWVyU29ydGVyIG1fbGF5ZXJT
b3J0ZXI7CiAKICAgICBGbG9hdFJlY3QgbV9yb290RGFtYWdlUmVjdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5jcHAK
aW5kZXggZTRkNjAxNDUxMWJjMWM1ZGIwZTY4N2JkMWY2ODNmYWU4MDM2YzVhYS4uOWViYjcxZGM3
ZDM0MWEyNzliN2E3ZjY0N2RiYTVlZGYxODQzMGI3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5jcHAKQEAgLTY5
LDI4ICs2OSwzOCBAQCBDQ1RocmVhZCogQ0NQcm94eTo6aW1wbFRocmVhZCgpCiAgICAgcmV0dXJu
IHNfaW1wbFRocmVhZDsKIH0KIAorQ0NUaHJlYWQqIENDUHJveHk6OmN1cnJlbnRUaHJlYWQoKQor
eworICAgIFRocmVhZElkZW50aWZpZXIgY3VycmVudFRocmVhZElkZW50aWZpZXIgPSBXVEY6OmN1
cnJlbnRUaHJlYWQoKTsKKyAgICBpZiAoc19tYWluVGhyZWFkICYmIHNfbWFpblRocmVhZC0+dGhy
ZWFkSUQoKSA9PSBjdXJyZW50VGhyZWFkSWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuIHNfbWFp
blRocmVhZDsKKyAgICBpZiAoc19pbXBsVGhyZWFkICYmIHNfaW1wbFRocmVhZC0+dGhyZWFkSUQo
KSA9PSBjdXJyZW50VGhyZWFkSWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuIHNfaW1wbFRocmVh
ZDsKKyAgICByZXR1cm4gMDsKK30KKwogI2lmbmRlZiBOREVCVUcKIGJvb2wgQ0NQcm94eTo6aXNN
YWluVGhyZWFkKCkKIHsKICAgICBBU1NFUlQoc19tYWluVGhyZWFkKTsKLSAgICBpZiAoaW1wbFRo
cmVhZElzT3ZlcnJpZGRlbiAmJiBjdXJyZW50VGhyZWFkKCkgPT0gdGhyZWFkSURPdmVycmlkZW5U
b0JlSW1wbFRocmVhZCkKKyAgICBpZiAoaW1wbFRocmVhZElzT3ZlcnJpZGRlbiAmJiBXVEY6OmN1
cnJlbnRUaHJlYWQoKSA9PSB0aHJlYWRJRE92ZXJyaWRlblRvQmVJbXBsVGhyZWFkKQogICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIGN1cnJlbnRUaHJlYWQoKSA9PSBzX21haW5UaHJl
YWQtPnRocmVhZElEKCk7CisgICAgcmV0dXJuIFdURjo6Y3VycmVudFRocmVhZCgpID09IHNfbWFp
blRocmVhZC0+dGhyZWFkSUQoKTsKIH0KIAogYm9vbCBDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKQog
ewogICAgIFdURjo6VGhyZWFkSWRlbnRpZmllciBpbXBsVGhyZWFkSUQgPSBzX2ltcGxUaHJlYWQg
PyBzX2ltcGxUaHJlYWQtPnRocmVhZElEKCkgOiAwOwotICAgIGlmIChpbXBsVGhyZWFkSXNPdmVy
cmlkZGVuICYmIGN1cnJlbnRUaHJlYWQoKSA9PSB0aHJlYWRJRE92ZXJyaWRlblRvQmVJbXBsVGhy
ZWFkKQorICAgIGlmIChpbXBsVGhyZWFkSXNPdmVycmlkZGVuICYmIFdURjo6Y3VycmVudFRocmVh
ZCgpID09IHRocmVhZElET3ZlcnJpZGVuVG9CZUltcGxUaHJlYWQpCiAgICAgICAgIHJldHVybiB0
cnVlOwotICAgIHJldHVybiBjdXJyZW50VGhyZWFkKCkgPT0gaW1wbFRocmVhZElEOworICAgIHJl
dHVybiBXVEY6OmN1cnJlbnRUaHJlYWQoKSA9PSBpbXBsVGhyZWFkSUQ7CiB9CiAKIHZvaWQgQ0NQ
cm94eTo6c2V0Q3VycmVudFRocmVhZElzSW1wbFRocmVhZChib29sIGlzSW1wbFRocmVhZCkKIHsK
ICAgICBpbXBsVGhyZWFkSXNPdmVycmlkZGVuID0gaXNJbXBsVGhyZWFkOwogICAgIGlmIChpc0lt
cGxUaHJlYWQpCi0gICAgICAgIHRocmVhZElET3ZlcnJpZGVuVG9CZUltcGxUaHJlYWQgPSBjdXJy
ZW50VGhyZWFkKCk7CisgICAgICAgIHRocmVhZElET3ZlcnJpZGVuVG9CZUltcGxUaHJlYWQgPSBX
VEY6OmN1cnJlbnRUaHJlYWQoKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmgKaW5kZXggYTU0Njgw
MjEyYjU4Nzg0MTBjZmFmNzhlZmM3Y2M2MzdjZmNkMWJjNC4uMDE2MjI2Y2E1MTIwMTMxZmNmZTNm
YzEzMzE5YWM3MTYwODc2NzU5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaApAQCAtNTMsNiArNTMsOSBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIHZvaWQgc2V0SW1wbFRocmVhZChDQ1RocmVhZCopOwogICAgIHN0YXRp
YyBDQ1RocmVhZCogaW1wbFRocmVhZCgpOwogCisgICAgLy8gUmV0dXJucyAwIGlmIHRoZSBjdXJy
ZW50IHRocmVhZCBpcyBuZWl0aGVyIHRoZSBtYWluIHRocmVhZCBub3IgdGhlIGltcGwgdGhyZWFk
LgorICAgIHN0YXRpYyBDQ1RocmVhZCogY3VycmVudFRocmVhZCgpOworCiAgICAgdmlydHVhbCB+
Q0NQcm94eSgpOwogCiAgICAgdmlydHVhbCBib29sIGNvbXBvc2l0ZUFuZFJlYWRiYWNrKHZvaWQg
KnBpeGVscywgY29uc3QgSW50UmVjdCYpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCmluZGV4IGQ3ZGQwNTU5NWJmZTUy
NmE1MDdlOGI3MmU0OGRhN2MxODY3NjM0OTUuLjQyNDJiY2UyM2FiYWE5YmE3MjYxYTU5MTljZjgz
ZmE1ODNjNTFkZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NM
YXllclRyZWVIb3N0VGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9D
Q0xheWVyVHJlZUhvc3RUZXN0LmNwcApAQCAtMjg2LDYgKzI4NiwxMSBAQCBwdWJsaWM6CiAgICAg
ICAgIGNhbGxPbk1haW5UaHJlYWQoQ0NMYXllclRyZWVIb3N0VGVzdDo6ZGlzcGF0Y2hBZGRBbmlt
YXRpb24sIHRoaXMpOwogICAgIH0KIAorICAgIHZvaWQgcG9zdEFkZEluc3RhbnRBbmltYXRpb25U
b01haW5UaHJlYWQoKQorICAgIHsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChDQ0xheWVyVHJl
ZUhvc3RUZXN0OjpkaXNwYXRjaEFkZEluc3RhbnRBbmltYXRpb24sIHRoaXMpOworICAgIH0KKwog
ICAgIHZvaWQgcG9zdFNldE5lZWRzQ29tbWl0VG9NYWluVGhyZWFkKCkKICAgICB7CiAgICAgICAg
IGNhbGxPbk1haW5UaHJlYWQoQ0NMYXllclRyZWVIb3N0VGVzdDo6ZGlzcGF0Y2hTZXROZWVkc0Nv
bW1pdCwgdGhpcyk7CkBAIC0zNDMsNyArMzQ4LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICAgIHRl
c3QtPm1fbGF5ZXJUcmVlSG9zdC0+c2V0TmVlZHNBbmltYXRlKCk7CiAgICAgfQogCi0gICAgc3Rh
dGljIHZvaWQgZGlzcGF0Y2hBZGRBbmltYXRpb24odm9pZCogc2VsZikKKyAgICBzdGF0aWMgdm9p
ZCBkaXNwYXRjaEFkZEluc3RhbnRBbmltYXRpb24odm9pZCogc2VsZikKICAgICB7CiAgICAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgICAgQ0NMYXllclRyZWVIb3N0VGVzdCogdGVzdCA9
IHN0YXRpY19jYXN0PENDTGF5ZXJUcmVlSG9zdFRlc3QqPihzZWxmKTsKQEAgLTM1Miw2ICszNTcs
MTUgQEAgcHJvdGVjdGVkOgogICAgICAgICAgIGFkZE9wYWNpdHlUcmFuc2l0aW9uVG9MYXllcigq
dGVzdC0+bV9sYXllclRyZWVIb3N0LT5yb290TGF5ZXIoKSwgMCwgMCwgMSk7CiAgICAgfQogCisg
ICAgc3RhdGljIHZvaWQgZGlzcGF0Y2hBZGRBbmltYXRpb24odm9pZCogc2VsZikKKyAgICB7Cisg
ICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgICAgQ0NMYXllclRyZWVIb3N0VGVzdCog
dGVzdCA9IHN0YXRpY19jYXN0PENDTGF5ZXJUcmVlSG9zdFRlc3QqPihzZWxmKTsKKyAgICAgIEFT
U0VSVCh0ZXN0KTsKKyAgICAgIGlmICh0ZXN0LT5tX2xheWVyVHJlZUhvc3QgJiYgdGVzdC0+bV9s
YXllclRyZWVIb3N0LT5yb290TGF5ZXIoKSkKKyAgICAgICAgICBhZGRPcGFjaXR5VHJhbnNpdGlv
blRvTGF5ZXIoKnRlc3QtPm1fbGF5ZXJUcmVlSG9zdC0+cm9vdExheWVyKCksIDEwMDAwLCAwLCAx
KTsKKyAgICB9CisKICAgICBzdGF0aWMgdm9pZCBkaXNwYXRjaFNldE5lZWRzQW5pbWF0ZUFuZENv
bW1pdCh2b2lkKiBzZWxmKQogICAgIHsKICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CkBA
IC04NDEsNyArODU1LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGJlZ2luVGVzdCgp
CiAgICAgewotICAgICAgICBwb3N0QWRkQW5pbWF0aW9uVG9NYWluVGhyZWFkKCk7CisgICAgICAg
IHBvc3RBZGRJbnN0YW50QW5pbWF0aW9uVG9NYWluVGhyZWFkKCk7CiAgICAgfQogCiAgICAgdmly
dHVhbCB2b2lkIGFuaW1hdGVMYXllcnMoQ0NMYXllclRyZWVIb3N0SW1wbCogbGF5ZXJUcmVlSG9z
dEltcGwpCkBAIC04ODMsNiArODk3LDQzIEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RUZXN0QWRk
QW5pbWF0aW9uLCBydW5NdWx0aVRocmVhZCkKICAgICBydW5UZXN0VGhyZWFkZWQoKTsKIH0KIAor
Ly8gRW5zdXJlcyB0aGF0IGFuaW1hdGlvbnMgY29udGludWUgdG8gYmUgdGlja2VkIHdoZW4gd2Ug
YXJlIGJhY2tncm91bmRlZC4KK2NsYXNzIENDTGF5ZXJUcmVlSG9zdFRlc3RUaWNrQW5pbWF0aW9u
V2hpbGVCYWNrZ3JvdW5kZWQgOiBwdWJsaWMgQ0NMYXllclRyZWVIb3N0VGVzdFRocmVhZE9ubHkg
eworcHVibGljOgorICAgIENDTGF5ZXJUcmVlSG9zdFRlc3RUaWNrQW5pbWF0aW9uV2hpbGVCYWNr
Z3JvdW5kZWQoKQorICAgICAgICA6IG1fbnVtQW5pbWF0ZXMoMCkKKyAgICB7CisgICAgfQorCisg
ICAgdmlydHVhbCB2b2lkIGJlZ2luVGVzdCgpCisgICAgeworICAgICAgICBwb3N0QWRkQW5pbWF0
aW9uVG9NYWluVGhyZWFkKCk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGFuaW1hdGVMYXll
cnMoQ0NMYXllclRyZWVIb3N0SW1wbCogbGF5ZXJUcmVlSG9zdEltcGwpCisgICAgeworICAgICAg
ICBpZiAoIW1fbnVtQW5pbWF0ZXMpIHsKKyAgICAgICAgICAgIC8vIFdlIGhhdmUgYSBsb25nIGFu
aW1hdGlvbiBydW5uaW5nLiBJdCBzaG91bGQgY29udGludWUgdG8gdGljayBldmVuIGlmIHdlIGFy
ZSBub3QgdmlzaWJsZS4KKyAgICAgICAgICAgIHBvc3RTZXRWaXNpYmxlVG9NYWluVGhyZWFkKGZh
bHNlKTsKKyAgICAgICAgICAgIG1fbnVtQW5pbWF0ZXMrKzsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorICAgICAgICBlbmRUZXN0KCk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lk
IGFmdGVyVGVzdCgpCisgICAgeworICAgIH0KKworcHJpdmF0ZToKKyAgICBpbnQgbV9udW1Bbmlt
YXRlczsKK307CisKK1RFU1RfRihDQ0xheWVyVHJlZUhvc3RUZXN0VGlja0FuaW1hdGlvbldoaWxl
QmFja2dyb3VuZGVkLCBydW5NdWx0aVRocmVhZCkKK3sKKyAgICBydW5UZXN0VGhyZWFkZWQoKTsK
K30KKwogY2xhc3MgQ0NMYXllclRyZWVIb3N0VGVzdFNjcm9sbFNpbXBsZSA6IHB1YmxpYyBDQ0xh
eWVyVHJlZUhvc3RUZXN0VGhyZWFkT25seSB7CiBwdWJsaWM6CiAgICAgQ0NMYXllclRyZWVIb3N0
VGVzdFNjcm9sbFNpbXBsZSgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130867</attachid>
            <date>2012-03-08 11:32:37 -0800</date>
            <delta_ts>2012-03-08 12:18:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77668-20120308143236.patch</filename>
            <type>text/plain</type>
            <size>13297</size>
            <attacher>vollick</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5OTM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjU3MDg4NTA1OThhZjc1
NTVkYjZmMjY5N2UxNWVjMmNhMTMxMDU4Yi4uMGMyNjdhYzQwOGQ4ZmM2NGFmNWJmZmZlNGIzYzNk
ZDI0MmFlNjA4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDEyLTAzLTA4ICBJYW4g
Vm9sbGljayAgPHZvbGxpY2tAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gRW5z
dXJlIHRoYXQgdGhlIGNjIHRocmVhZCBhbmltYXRpb24gZnJhbWV3b3JrIGNvbnRpbnVlcyB0byB0
aWNrIHdoZW4gdGhlIHRhYiBpcyBiYWNrZ3JvdW5kZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3NjY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdGVkIGluIENDTGF5ZXJUcmVlSG9zdFRlc3RUaWNr
QW5pbWF0aW9uV2hpbGVCYWNrZ3JvdW5kZWQKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwOgorICAgICAgICAoQ0NMYXllclRy
ZWVIb3N0SW1wbFRpbWVTb3VyY2VBZGFwdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJU
cmVlSG9zdEltcGxUaW1lU291cmNlQWRhcHRlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDTGF5ZXJUcmVlSG9zdEltcGxUaW1lU291cmNlQWRhcHRlcjo6fkNDTGF5ZXJUcmVlSG9zdElt
cGxUaW1lU291cmNlQWRhcHRlcik6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJ
bXBsVGltZVNvdXJjZUFkYXB0ZXI6Om9uVGltZXJUaWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkND
TGF5ZXJUcmVlSG9zdEltcGxUaW1lU291cmNlQWRhcHRlcjo6c2V0QWN0aXZlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGxUaW1lU291cmNlQWRhcHRlcjo6Q0NMYXllclRy
ZWVIb3N0SW1wbFRpbWVTb3VyY2VBZGFwdGVyKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6Q0NMYXllclRyZWVIb3N0SW1wbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsOjpzZXRWaXNpYmxlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OmFuaW1hdGVMYXllcnMpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaDoK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ0NMYXllclRyZWVIb3N0SW1wbCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDQ1Byb3h5OjpjdXJyZW50VGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NQcm94eTo6aXNNYWluVGhyZWFkKToKKyAgICAgICAgKFdlYkNv
cmU6OkNDUHJveHk6OmlzSW1wbFRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Byb3h5Ojpz
ZXRDdXJyZW50VGhyZWFkSXNJbXBsVGhyZWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1Byb3h5Lmg6CisgICAgICAgIChDQ1Byb3h5KToKKwogMjAxMi0wMy0w
NiAgRGF2aWQgQ29ydm95c2llciAgPGRhdmlkLmNvcnZveXNpZXJAb3JhbmdlLmNvbT4KIAogICAg
ICAgICBVbnJlbGVhc2VkIGdzdF9vYmplY3RfcmVmZXJlbmNlIHRvIGF1ZGlvIHNpbmsgaW4gTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGI3
Y2MwOGU4YmQ0OTdmNTQ1ZjliMThlZjBlMjUyNjViMjZjNWRkMTkuLjAxNjQ1NjJhZGVhZGQ1Yzc2
NjA1MTcxMWNiOTFkYzZiNzMzY2IxNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjQgQEAKKzIwMTItMDMtMDggIElhbiBWb2xsaWNrICA8dm9sbGlja0BjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBFbnN1cmUgdGhhdCB0aGUgY2MgdGhyZWFkIGFuaW1h
dGlvbiBmcmFtZXdvcmsgY29udGludWVzIHRvIHRpY2sgd2hlbiB0aGUgdGFiIGlzIGJhY2tncm91
bmRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzc2
NjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHRl
c3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwOgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhv
c3RUZXN0Ojpwb3N0QWRkSW5zdGFudEFuaW1hdGlvblRvTWFpblRocmVhZCk6CisgICAgICAgIChD
Q0xheWVyVHJlZUhvc3RUZXN0KToKKyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdDo6
ZGlzcGF0Y2hBZGRJbnN0YW50QW5pbWF0aW9uKToKKyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVI
b3N0VGVzdDo6ZGlzcGF0Y2hBZGRBbmltYXRpb24pOgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJl
ZUhvc3RUZXN0QWRkQW5pbWF0aW9uOjpiZWdpblRlc3QpOgorICAgICAgICAoV1RGKToKKyAgICAg
ICAgKENDTGF5ZXJUcmVlSG9zdFRlc3RUaWNrQW5pbWF0aW9uV2hpbGVCYWNrZ3JvdW5kZWQpOgor
ICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0VGlja0FuaW1hdGlvbldoaWxlQmFja2dy
b3VuZGVkOjpDQ0xheWVyVHJlZUhvc3RUZXN0VGlja0FuaW1hdGlvbldoaWxlQmFja2dyb3VuZGVk
KToKKyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdFRpY2tBbmltYXRpb25XaGlsZUJh
Y2tncm91bmRlZDo6YmVnaW5UZXN0KToKKyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVIb3N0VGVz
dFRpY2tBbmltYXRpb25XaGlsZUJhY2tncm91bmRlZDo6YW5pbWF0ZUxheWVycyk6CisgICAgICAg
IChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3RUaWNrQW5pbWF0aW9uV2hpbGVCYWNrZ3JvdW5kZWQ6
OmFmdGVyVGVzdCk6CisgICAgICAgIChXVEY6OlRFU1RfRik6CisKIDIwMTItMDMtMDYgIFRha2Fz
aGkgVG95b3NoaW1hICA8dG95b3NoaW1AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtDaHJvbWl1
bV0gW1dlYlNvY2tldF0gQWRkIFdlYlNvY2tldCBleHRlbnNpb25zIHF1ZXJ5IFdlYktpdCBBUEkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKaW5kZXggZjcxNWFlMzVkMTdm
OTBiNzRkYjIyZGMwZjNjOTRlNjY3MDUxOTk5YS4uYWQ2ODc1ZmFmYjRlOTg0NGYwOGRlMzQwNzJj
ZTc2Y2ZhNzUxN2YwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAK
QEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJMYXllclJlbmRlcmVyQ2hyb21pdW0uaCIKICNp
bmNsdWRlICJUcmFjZUV2ZW50LmgiCiAjaW5jbHVkZSAiY2MvQ0NEYW1hZ2VUcmFja2VyLmgiCisj
aW5jbHVkZSAiY2MvQ0NEZWxheUJhc2VkVGltZVNvdXJjZS5oIgogI2luY2x1ZGUgImNjL0NDTGF5
ZXJJdGVyYXRvci5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdC5oIgogI2luY2x1ZGUg
ImNjL0NDTGF5ZXJUcmVlSG9zdENvbW1vbi5oIgpAQCAtMzksOCArNDAsNDggQEAKICNpbmNsdWRl
ICJjYy9DQ1RocmVhZFRhc2suaCIKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KIAorbmFt
ZXNwYWNlIHsKK2NvbnN0IGRvdWJsZSBsb3dGcmVxdWVuY3lBbmltYXRpb25JbnRlcnZhbCA9IDE7
Cit9IC8vIG5hbWVzcGFjZQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENDTGF5ZXJU
cmVlSG9zdEltcGxUaW1lU291cmNlQWRhcHRlciA6IHB1YmxpYyBDQ1RpbWVTb3VyY2VDbGllbnQg
eworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENDTGF5ZXJUcmVlSG9zdEltcGxUaW1lU291cmNl
QWRhcHRlcik7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8Q0NMYXllclRyZWVIb3N0
SW1wbFRpbWVTb3VyY2VBZGFwdGVyPiBjcmVhdGUoQ0NMYXllclRyZWVIb3N0SW1wbCogbGF5ZXJU
cmVlSG9zdEltcGwsIFBhc3NSZWZQdHI8Q0NEZWxheUJhc2VkVGltZVNvdXJjZT4gdGltZVNvdXJj
ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ0NMYXllclRyZWVIb3N0SW1w
bFRpbWVTb3VyY2VBZGFwdGVyKGxheWVyVHJlZUhvc3RJbXBsLCB0aW1lU291cmNlKSk7CisgICAg
fQorICAgIHZpcnR1YWwgfkNDTGF5ZXJUcmVlSG9zdEltcGxUaW1lU291cmNlQWRhcHRlcigpCisg
ICAgeworICAgICAgICBtX3RpbWVTb3VyY2UtPnNldENsaWVudCgwKTsKKyAgICAgICAgbV90aW1l
U291cmNlLT5zZXRBY3RpdmUoZmFsc2UpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBvblRp
bWVyVGljaygpCisgICAgeworICAgICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5hbmltYXRlKG1v
bm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpICogMTAwMC4wKTsKKyAgICB9CisKKyAgICB2b2lk
IHNldEFjdGl2ZShib29sIGFjdGl2ZSkKKyAgICB7CisgICAgICAgIGlmIChhY3RpdmUgIT0gbV90
aW1lU291cmNlLT5hY3RpdmUoKSkKKyAgICAgICAgICAgIG1fdGltZVNvdXJjZS0+c2V0QWN0aXZl
KGFjdGl2ZSk7CisgICAgfQorCitwcml2YXRlOgorICAgIENDTGF5ZXJUcmVlSG9zdEltcGxUaW1l
U291cmNlQWRhcHRlcihDQ0xheWVyVHJlZUhvc3RJbXBsKiBsYXllclRyZWVIb3N0SW1wbCwgUGFz
c1JlZlB0cjxDQ0RlbGF5QmFzZWRUaW1lU291cmNlPiB0aW1lU291cmNlKQorICAgICAgICA6IG1f
bGF5ZXJUcmVlSG9zdEltcGwobGF5ZXJUcmVlSG9zdEltcGwpCisgICAgICAgICwgbV90aW1lU291
cmNlKHRpbWVTb3VyY2UpCisgICAgeworICAgICAgICBtX3RpbWVTb3VyY2UtPnNldENsaWVudCh0
aGlzKTsKKyAgICB9CisKKyAgICBDQ0xheWVyVHJlZUhvc3RJbXBsKiBtX2xheWVyVHJlZUhvc3RJ
bXBsOworICAgIFJlZlB0cjxDQ0RlbGF5QmFzZWRUaW1lU291cmNlPiBtX3RpbWVTb3VyY2U7Cit9
OworCiBQYXNzT3duUHRyPENDTGF5ZXJUcmVlSG9zdEltcGw+IENDTGF5ZXJUcmVlSG9zdEltcGw6
OmNyZWF0ZShjb25zdCBDQ1NldHRpbmdzJiBzZXR0aW5ncywgQ0NMYXllclRyZWVIb3N0SW1wbENs
aWVudCogY2xpZW50KQogewogICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ0NMYXllclRyZWVIb3N0
SW1wbChzZXR0aW5ncywgY2xpZW50KSk7CkBAIC02MCw2ICsxMDEsNyBAQCBDQ0xheWVyVHJlZUhv
c3RJbXBsOjpDQ0xheWVyVHJlZUhvc3RJbXBsKGNvbnN0IENDU2V0dGluZ3MmIHNldHRpbmdzLCBD
Q0xheWVyVHJlZQogICAgICwgbV9tYXhQYWdlU2NhbGUoMCkKICAgICAsIG1fbmVlZHNBbmltYXRl
TGF5ZXJzKGZhbHNlKQogICAgICwgbV9waW5jaEdlc3R1cmVBY3RpdmUoZmFsc2UpCisgICAgLCBt
X3RpbWVTb3VyY2VDbGllbnRBZGFwdGVyKENDTGF5ZXJUcmVlSG9zdEltcGxUaW1lU291cmNlQWRh
cHRlcjo6Y3JlYXRlKHRoaXMsIENDRGVsYXlCYXNlZFRpbWVTb3VyY2U6OmNyZWF0ZShsb3dGcmVx
dWVuY3lBbmltYXRpb25JbnRlcnZhbCAqIDEwMDAuMCwgQ0NQcm94eTo6Y3VycmVudFRocmVhZCgp
KSkpCiB7CiAgICAgQVNTRVJUKENDUHJveHk6OmlzSW1wbFRocmVhZCgpKTsKIH0KQEAgLTM4Nyw2
ICs0MjksOSBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OnNldFZpc2libGUoYm9vbCB2aXNp
YmxlKQogCiAgICAgaWYgKG1fbGF5ZXJSZW5kZXJlcikKICAgICAgICAgbV9sYXllclJlbmRlcmVy
LT5zZXRWaXNpYmxlKHZpc2libGUpOworCisgICAgY29uc3QgYm9vbCBzaG91bGRUaWNrSW5CYWNr
Z3JvdW5kID0gIXZpc2libGUgJiYgbV9uZWVkc0FuaW1hdGVMYXllcnM7CisgICAgbV90aW1lU291
cmNlQ2xpZW50QWRhcHRlci0+c2V0QWN0aXZlKHNob3VsZFRpY2tJbkJhY2tncm91bmQpOwogfQog
CiBib29sIENDTGF5ZXJUcmVlSG9zdEltcGw6OmluaXRpYWxpemVMYXllclJlbmRlcmVyKFBhc3NS
ZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQpCkBAIC02OTgsNiArNzQzLDkgQEAgdm9p
ZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjphbmltYXRlTGF5ZXJzKGRvdWJsZSBmcmFtZUJlZ2luVGlt
ZU1zKQogCiAgICAgaWYgKGRpZEFuaW1hdGUpCiAgICAgICAgIG1fY2xpZW50LT5zZXROZWVkc1Jl
ZHJhd09uSW1wbFRocmVhZCgpOworCisgICAgY29uc3QgYm9vbCBzaG91bGRUaWNrSW5CYWNrZ3Jv
dW5kID0gbV9uZWVkc0FuaW1hdGVMYXllcnMgJiYgIW1fdmlzaWJsZTsKKyAgICBtX3RpbWVTb3Vy
Y2VDbGllbnRBZGFwdGVyLT5zZXRBY3RpdmUoc2hvdWxkVGlja0luQmFja2dyb3VuZCk7CiB9CiAK
IHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6c2VuZENvbnRleHRMb3N0QW5kUmVzdG9yZWROb3Rp
ZmljYXRpb24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCmluZGV4IGZmNDdl
YjA4ZmMyODM3MDAyNzMzMmY5ODViN2IxYzhmMmNkYjllN2UuLjgxYzYyMGJmZDdlM2FlZjhmYTg3
MDhiNTIxMzdkYjhlZGZjOTQ5YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBs
LmgKQEAgLTM5LDYgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ0NDb21wbGV0
aW9uRXZlbnQ7CiBjbGFzcyBDQ1BhZ2VTY2FsZUFuaW1hdGlvbjsKIGNsYXNzIENDTGF5ZXJJbXBs
OworY2xhc3MgQ0NMYXllclRyZWVIb3N0SW1wbFRpbWVTb3VyY2VBZGFwdGVyOwogY2xhc3MgTGF5
ZXJSZW5kZXJlckNocm9taXVtOwogY2xhc3MgVGV4dHVyZUFsbG9jYXRvcjsKIHN0cnVjdCBMYXll
clJlbmRlcmVyQ2FwYWJpbGl0aWVzOwpAQCAtMTc2LDYgKzE3Nyw5IEBAIHByaXZhdGU6CiAKICAg
ICBPd25QdHI8Q0NQYWdlU2NhbGVBbmltYXRpb24+IG1fcGFnZVNjYWxlQW5pbWF0aW9uOwogCisg
ICAgLy8gVGhpcyBpcyB1c2VkIGZvciB0aWNraW5nIGFuaW1hdGlvbnMgc2xvd2x5IHdoZW4gaGlk
ZGVuLgorICAgIE93blB0cjxDQ0xheWVyVHJlZUhvc3RJbXBsVGltZVNvdXJjZUFkYXB0ZXI+IG1f
dGltZVNvdXJjZUNsaWVudEFkYXB0ZXI7CisKICAgICBDQ0xheWVyU29ydGVyIG1fbGF5ZXJTb3J0
ZXI7CiAKICAgICBGbG9hdFJlY3QgbV9yb290RGFtYWdlUmVjdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5jcHAKaW5k
ZXggZTRkNjAxNDUxMWJjMWM1ZGIwZTY4N2JkMWY2ODNmYWU4MDM2YzVhYS4uOWViYjcxZGM3ZDM0
MWEyNzliN2E3ZjY0N2RiYTVlZGYxODQzMGI3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5jcHAKQEAgLTY5LDI4
ICs2OSwzOCBAQCBDQ1RocmVhZCogQ0NQcm94eTo6aW1wbFRocmVhZCgpCiAgICAgcmV0dXJuIHNf
aW1wbFRocmVhZDsKIH0KIAorQ0NUaHJlYWQqIENDUHJveHk6OmN1cnJlbnRUaHJlYWQoKQorewor
ICAgIFRocmVhZElkZW50aWZpZXIgY3VycmVudFRocmVhZElkZW50aWZpZXIgPSBXVEY6OmN1cnJl
bnRUaHJlYWQoKTsKKyAgICBpZiAoc19tYWluVGhyZWFkICYmIHNfbWFpblRocmVhZC0+dGhyZWFk
SUQoKSA9PSBjdXJyZW50VGhyZWFkSWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuIHNfbWFpblRo
cmVhZDsKKyAgICBpZiAoc19pbXBsVGhyZWFkICYmIHNfaW1wbFRocmVhZC0+dGhyZWFkSUQoKSA9
PSBjdXJyZW50VGhyZWFkSWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuIHNfaW1wbFRocmVhZDsK
KyAgICByZXR1cm4gMDsKK30KKwogI2lmbmRlZiBOREVCVUcKIGJvb2wgQ0NQcm94eTo6aXNNYWlu
VGhyZWFkKCkKIHsKICAgICBBU1NFUlQoc19tYWluVGhyZWFkKTsKLSAgICBpZiAoaW1wbFRocmVh
ZElzT3ZlcnJpZGRlbiAmJiBjdXJyZW50VGhyZWFkKCkgPT0gdGhyZWFkSURPdmVycmlkZW5Ub0Jl
SW1wbFRocmVhZCkKKyAgICBpZiAoaW1wbFRocmVhZElzT3ZlcnJpZGRlbiAmJiBXVEY6OmN1cnJl
bnRUaHJlYWQoKSA9PSB0aHJlYWRJRE92ZXJyaWRlblRvQmVJbXBsVGhyZWFkKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIGN1cnJlbnRUaHJlYWQoKSA9PSBzX21haW5UaHJlYWQt
PnRocmVhZElEKCk7CisgICAgcmV0dXJuIFdURjo6Y3VycmVudFRocmVhZCgpID09IHNfbWFpblRo
cmVhZC0+dGhyZWFkSUQoKTsKIH0KIAogYm9vbCBDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKQogewog
ICAgIFdURjo6VGhyZWFkSWRlbnRpZmllciBpbXBsVGhyZWFkSUQgPSBzX2ltcGxUaHJlYWQgPyBz
X2ltcGxUaHJlYWQtPnRocmVhZElEKCkgOiAwOwotICAgIGlmIChpbXBsVGhyZWFkSXNPdmVycmlk
ZGVuICYmIGN1cnJlbnRUaHJlYWQoKSA9PSB0aHJlYWRJRE92ZXJyaWRlblRvQmVJbXBsVGhyZWFk
KQorICAgIGlmIChpbXBsVGhyZWFkSXNPdmVycmlkZGVuICYmIFdURjo6Y3VycmVudFRocmVhZCgp
ID09IHRocmVhZElET3ZlcnJpZGVuVG9CZUltcGxUaHJlYWQpCiAgICAgICAgIHJldHVybiB0cnVl
OwotICAgIHJldHVybiBjdXJyZW50VGhyZWFkKCkgPT0gaW1wbFRocmVhZElEOworICAgIHJldHVy
biBXVEY6OmN1cnJlbnRUaHJlYWQoKSA9PSBpbXBsVGhyZWFkSUQ7CiB9CiAKIHZvaWQgQ0NQcm94
eTo6c2V0Q3VycmVudFRocmVhZElzSW1wbFRocmVhZChib29sIGlzSW1wbFRocmVhZCkKIHsKICAg
ICBpbXBsVGhyZWFkSXNPdmVycmlkZGVuID0gaXNJbXBsVGhyZWFkOwogICAgIGlmIChpc0ltcGxU
aHJlYWQpCi0gICAgICAgIHRocmVhZElET3ZlcnJpZGVuVG9CZUltcGxUaHJlYWQgPSBjdXJyZW50
VGhyZWFkKCk7CisgICAgICAgIHRocmVhZElET3ZlcnJpZGVuVG9CZUltcGxUaHJlYWQgPSBXVEY6
OmN1cnJlbnRUaHJlYWQoKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmgKaW5kZXggYTU0NjgwMjEy
YjU4Nzg0MTBjZmFmNzhlZmM3Y2M2MzdjZmNkMWJjNC4uMDE2MjI2Y2E1MTIwMTMxZmNmZTNmYzEz
MzE5YWM3MTYwODc2NzU5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaApAQCAtNTMsNiArNTMsOSBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIHZvaWQgc2V0SW1wbFRocmVhZChDQ1RocmVhZCopOwogICAgIHN0YXRpYyBD
Q1RocmVhZCogaW1wbFRocmVhZCgpOwogCisgICAgLy8gUmV0dXJucyAwIGlmIHRoZSBjdXJyZW50
IHRocmVhZCBpcyBuZWl0aGVyIHRoZSBtYWluIHRocmVhZCBub3IgdGhlIGltcGwgdGhyZWFkLgor
ICAgIHN0YXRpYyBDQ1RocmVhZCogY3VycmVudFRocmVhZCgpOworCiAgICAgdmlydHVhbCB+Q0NQ
cm94eSgpOwogCiAgICAgdmlydHVhbCBib29sIGNvbXBvc2l0ZUFuZFJlYWRiYWNrKHZvaWQgKnBp
eGVscywgY29uc3QgSW50UmVjdCYpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCmluZGV4IGQ3ZGQwNTU5NWJmZTUyNmE1
MDdlOGI3MmU0OGRhN2MxODY3NjM0OTUuLjQyNDJiY2UyM2FiYWE5YmE3MjYxYTU5MTljZjgzZmE1
ODNjNTFkZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXll
clRyZWVIb3N0VGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xh
eWVyVHJlZUhvc3RUZXN0LmNwcApAQCAtMjg2LDYgKzI4NiwxMSBAQCBwdWJsaWM6CiAgICAgICAg
IGNhbGxPbk1haW5UaHJlYWQoQ0NMYXllclRyZWVIb3N0VGVzdDo6ZGlzcGF0Y2hBZGRBbmltYXRp
b24sIHRoaXMpOwogICAgIH0KIAorICAgIHZvaWQgcG9zdEFkZEluc3RhbnRBbmltYXRpb25Ub01h
aW5UaHJlYWQoKQorICAgIHsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChDQ0xheWVyVHJlZUhv
c3RUZXN0OjpkaXNwYXRjaEFkZEluc3RhbnRBbmltYXRpb24sIHRoaXMpOworICAgIH0KKwogICAg
IHZvaWQgcG9zdFNldE5lZWRzQ29tbWl0VG9NYWluVGhyZWFkKCkKICAgICB7CiAgICAgICAgIGNh
bGxPbk1haW5UaHJlYWQoQ0NMYXllclRyZWVIb3N0VGVzdDo6ZGlzcGF0Y2hTZXROZWVkc0NvbW1p
dCwgdGhpcyk7CkBAIC0zNDMsNyArMzQ4LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICAgIHRlc3Qt
Pm1fbGF5ZXJUcmVlSG9zdC0+c2V0TmVlZHNBbmltYXRlKCk7CiAgICAgfQogCi0gICAgc3RhdGlj
IHZvaWQgZGlzcGF0Y2hBZGRBbmltYXRpb24odm9pZCogc2VsZikKKyAgICBzdGF0aWMgdm9pZCBk
aXNwYXRjaEFkZEluc3RhbnRBbmltYXRpb24odm9pZCogc2VsZikKICAgICB7CiAgICAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOwogICAgICAgQ0NMYXllclRyZWVIb3N0VGVzdCogdGVzdCA9IHN0
YXRpY19jYXN0PENDTGF5ZXJUcmVlSG9zdFRlc3QqPihzZWxmKTsKQEAgLTM1Miw2ICszNTcsMTUg
QEAgcHJvdGVjdGVkOgogICAgICAgICAgIGFkZE9wYWNpdHlUcmFuc2l0aW9uVG9MYXllcigqdGVz
dC0+bV9sYXllclRyZWVIb3N0LT5yb290TGF5ZXIoKSwgMCwgMCwgMSk7CiAgICAgfQogCisgICAg
c3RhdGljIHZvaWQgZGlzcGF0Y2hBZGRBbmltYXRpb24odm9pZCogc2VsZikKKyAgICB7CisgICAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgICAgQ0NMYXllclRyZWVIb3N0VGVzdCogdGVz
dCA9IHN0YXRpY19jYXN0PENDTGF5ZXJUcmVlSG9zdFRlc3QqPihzZWxmKTsKKyAgICAgIEFTU0VS
VCh0ZXN0KTsKKyAgICAgIGlmICh0ZXN0LT5tX2xheWVyVHJlZUhvc3QgJiYgdGVzdC0+bV9sYXll
clRyZWVIb3N0LT5yb290TGF5ZXIoKSkKKyAgICAgICAgICBhZGRPcGFjaXR5VHJhbnNpdGlvblRv
TGF5ZXIoKnRlc3QtPm1fbGF5ZXJUcmVlSG9zdC0+cm9vdExheWVyKCksIDEwMDAwLCAwLCAxKTsK
KyAgICB9CisKICAgICBzdGF0aWMgdm9pZCBkaXNwYXRjaFNldE5lZWRzQW5pbWF0ZUFuZENvbW1p
dCh2b2lkKiBzZWxmKQogICAgIHsKICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CkBAIC04
NDEsNyArODU1LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGJlZ2luVGVzdCgpCiAg
ICAgewotICAgICAgICBwb3N0QWRkQW5pbWF0aW9uVG9NYWluVGhyZWFkKCk7CisgICAgICAgIHBv
c3RBZGRJbnN0YW50QW5pbWF0aW9uVG9NYWluVGhyZWFkKCk7CiAgICAgfQogCiAgICAgdmlydHVh
bCB2b2lkIGFuaW1hdGVMYXllcnMoQ0NMYXllclRyZWVIb3N0SW1wbCogbGF5ZXJUcmVlSG9zdElt
cGwpCkBAIC04ODMsNiArODk3LDQzIEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RUZXN0QWRkQW5p
bWF0aW9uLCBydW5NdWx0aVRocmVhZCkKICAgICBydW5UZXN0VGhyZWFkZWQoKTsKIH0KIAorLy8g
RW5zdXJlcyB0aGF0IGFuaW1hdGlvbnMgY29udGludWUgdG8gYmUgdGlja2VkIHdoZW4gd2UgYXJl
IGJhY2tncm91bmRlZC4KK2NsYXNzIENDTGF5ZXJUcmVlSG9zdFRlc3RUaWNrQW5pbWF0aW9uV2hp
bGVCYWNrZ3JvdW5kZWQgOiBwdWJsaWMgQ0NMYXllclRyZWVIb3N0VGVzdFRocmVhZE9ubHkgewor
cHVibGljOgorICAgIENDTGF5ZXJUcmVlSG9zdFRlc3RUaWNrQW5pbWF0aW9uV2hpbGVCYWNrZ3Jv
dW5kZWQoKQorICAgICAgICA6IG1fbnVtQW5pbWF0ZXMoMCkKKyAgICB7CisgICAgfQorCisgICAg
dmlydHVhbCB2b2lkIGJlZ2luVGVzdCgpCisgICAgeworICAgICAgICBwb3N0QWRkQW5pbWF0aW9u
VG9NYWluVGhyZWFkKCk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGFuaW1hdGVMYXllcnMo
Q0NMYXllclRyZWVIb3N0SW1wbCogbGF5ZXJUcmVlSG9zdEltcGwpCisgICAgeworICAgICAgICBp
ZiAoIW1fbnVtQW5pbWF0ZXMpIHsKKyAgICAgICAgICAgIC8vIFdlIGhhdmUgYSBsb25nIGFuaW1h
dGlvbiBydW5uaW5nLiBJdCBzaG91bGQgY29udGludWUgdG8gdGljayBldmVuIGlmIHdlIGFyZSBu
b3QgdmlzaWJsZS4KKyAgICAgICAgICAgIHBvc3RTZXRWaXNpYmxlVG9NYWluVGhyZWFkKGZhbHNl
KTsKKyAgICAgICAgICAgIG1fbnVtQW5pbWF0ZXMrKzsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorICAgICAgICBlbmRUZXN0KCk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGFm
dGVyVGVzdCgpCisgICAgeworICAgIH0KKworcHJpdmF0ZToKKyAgICBpbnQgbV9udW1BbmltYXRl
czsKK307CisKK1RFU1RfRihDQ0xheWVyVHJlZUhvc3RUZXN0VGlja0FuaW1hdGlvbldoaWxlQmFj
a2dyb3VuZGVkLCBydW5NdWx0aVRocmVhZCkKK3sKKyAgICBydW5UZXN0VGhyZWFkZWQoKTsKK30K
KwogY2xhc3MgQ0NMYXllclRyZWVIb3N0VGVzdFNjcm9sbFNpbXBsZSA6IHB1YmxpYyBDQ0xheWVy
VHJlZUhvc3RUZXN0VGhyZWFkT25seSB7CiBwdWJsaWM6CiAgICAgQ0NMYXllclRyZWVIb3N0VGVz
dFNjcm9sbFNpbXBsZSgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130875</attachid>
            <date>2012-03-08 12:18:30 -0800</date>
            <delta_ts>2012-03-08 12:31:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77668-20120308151829.patch</filename>
            <type>text/plain</type>
            <size>13344</size>
            <attacher>vollick</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwMTg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2Y5OTUyM2Y1OTQwMzY3
ODcxNTEwMTBkYzU5OGI2OGFlZWM5OTBkMi4uNDM5NjVmOGM1YjcwODcxMDRmMzE3MTQ5MDUyMzcy
YmE5OWZmOTNiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDEyLTAzLTA4ICBJYW4g
Vm9sbGljayAgPHZvbGxpY2tAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gRW5z
dXJlIHRoYXQgdGhlIGNjIHRocmVhZCBhbmltYXRpb24gZnJhbWV3b3JrIGNvbnRpbnVlcyB0byB0
aWNrIHdoZW4gdGhlIHRhYiBpcyBiYWNrZ3JvdW5kZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3NjY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdGVkIGluIENDTGF5ZXJUcmVlSG9zdFRlc3RUaWNr
QW5pbWF0aW9uV2hpbGVCYWNrZ3JvdW5kZWQKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwOgorICAgICAgICAoQ0NMYXllclRy
ZWVIb3N0SW1wbFRpbWVTb3VyY2VBZGFwdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJU
cmVlSG9zdEltcGxUaW1lU291cmNlQWRhcHRlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDTGF5ZXJUcmVlSG9zdEltcGxUaW1lU291cmNlQWRhcHRlcjo6fkNDTGF5ZXJUcmVlSG9zdElt
cGxUaW1lU291cmNlQWRhcHRlcik6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJ
bXBsVGltZVNvdXJjZUFkYXB0ZXI6Om9uVGltZXJUaWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkND
TGF5ZXJUcmVlSG9zdEltcGxUaW1lU291cmNlQWRhcHRlcjo6c2V0QWN0aXZlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGxUaW1lU291cmNlQWRhcHRlcjo6Q0NMYXllclRy
ZWVIb3N0SW1wbFRpbWVTb3VyY2VBZGFwdGVyKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6Q0NMYXllclRyZWVIb3N0SW1wbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsOjpzZXRWaXNpYmxlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OmFuaW1hdGVMYXllcnMpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaDoK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ0NMYXllclRyZWVIb3N0SW1wbCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDQ1Byb3h5OjpjdXJyZW50VGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NQcm94eTo6aXNNYWluVGhyZWFkKToKKyAgICAgICAgKFdlYkNv
cmU6OkNDUHJveHk6OmlzSW1wbFRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Byb3h5Ojpz
ZXRDdXJyZW50VGhyZWFkSXNJbXBsVGhyZWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1Byb3h5Lmg6CisgICAgICAgIChDQ1Byb3h5KToKKwogMjAxMi0wMy0w
OCAgU2NvdHQgQnllciAgPHNjb3R0YnllckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgSGF2ZSBT
Y3JvbGxBbmltYXRvck5vbmUgdXNlIHJlcXVlc3RBbmltYXRpb25GcmFtZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZwppbmRleCA5ODBkMDFjMzc0MGRlN2M0ZjUzNzM0MDMwNjlmNjljOGI0N2Y5YjAw
Li5iMzVhMmJiNmI1MjQzODY4NTE4MTAwYTQ2YTk2ODNkNmZiNWMwODEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDEyLTAzLTA4ICBJYW4gVm9sbGljayAg
PHZvbGxpY2tAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gRW5zdXJlIHRoYXQg
dGhlIGNjIHRocmVhZCBhbmltYXRpb24gZnJhbWV3b3JrIGNvbnRpbnVlcyB0byB0aWNrIHdoZW4g
dGhlIHRhYiBpcyBiYWNrZ3JvdW5kZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTc3NjY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiB0ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcDoKKyAgICAgICAg
KFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdDo6cG9zdEFkZEluc3RhbnRBbmltYXRpb25Ub01haW5U
aHJlYWQpOgorICAgICAgICAoQ0NMYXllclRyZWVIb3N0VGVzdCk6CisgICAgICAgIChXVEY6OkND
TGF5ZXJUcmVlSG9zdFRlc3Q6OmRpc3BhdGNoQWRkSW5zdGFudEFuaW1hdGlvbik6CisgICAgICAg
IChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3Q6OmRpc3BhdGNoQWRkQW5pbWF0aW9uKToKKyAgICAg
ICAgKFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdEFkZEFuaW1hdGlvbjo6YmVnaW5UZXN0KToKKyAg
ICAgICAgKFdURik6CisgICAgICAgIChDQ0xheWVyVHJlZUhvc3RUZXN0VGlja0FuaW1hdGlvbldo
aWxlQmFja2dyb3VuZGVkKToKKyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdFRpY2tB
bmltYXRpb25XaGlsZUJhY2tncm91bmRlZDo6Q0NMYXllclRyZWVIb3N0VGVzdFRpY2tBbmltYXRp
b25XaGlsZUJhY2tncm91bmRlZCk6CisgICAgICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3RU
aWNrQW5pbWF0aW9uV2hpbGVCYWNrZ3JvdW5kZWQ6OmJlZ2luVGVzdCk6CisgICAgICAgIChXVEY6
OkNDTGF5ZXJUcmVlSG9zdFRlc3RUaWNrQW5pbWF0aW9uV2hpbGVCYWNrZ3JvdW5kZWQ6OmFuaW1h
dGVMYXllcnMpOgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0VGlja0FuaW1hdGlv
bldoaWxlQmFja2dyb3VuZGVkOjphZnRlclRlc3QpOgorICAgICAgICAoV1RGOjpURVNUX0YpOgor
CiAyMDEyLTAzLTA4ICBTY290dCBCeWVyICA8c2NvdHRieWVyQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBIYXZlIFNjcm9sbEFuaW1hdG9yTm9uZSB1c2UgcmVxdWVzdEFuaW1hdGlvbkZyYW1lCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyVHJlZUhvc3RJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCmluZGV4IDkyNWM4Y2M0YzA2NjEy
ZDQxNTJmMDk5YWQ3MjYwOGEzNzgyMGM4MGEuLmY1YzRkNjY1OGIwMGY3NTgwNGNhODhkNWJhMWQ1
ODZjYmU2NWQ2NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCkBA
IC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiTGF5ZXJSZW5kZXJlckNocm9taXVtLmgiCiAjaW5j
bHVkZSAiVHJhY2VFdmVudC5oIgogI2luY2x1ZGUgImNjL0NDRGFtYWdlVHJhY2tlci5oIgorI2lu
Y2x1ZGUgImNjL0NDRGVsYXlCYXNlZFRpbWVTb3VyY2UuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVy
SXRlcmF0b3IuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3QuaCIKICNpbmNsdWRlICJj
Yy9DQ0xheWVyVHJlZUhvc3RDb21tb24uaCIKQEAgLTM5LDggKzQwLDQ4IEBACiAjaW5jbHVkZSAi
Y2MvQ0NUaHJlYWRUYXNrLmgiCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAKK25hbWVz
cGFjZSB7Citjb25zdCBkb3VibGUgbG93RnJlcXVlbmN5QW5pbWF0aW9uSW50ZXJ2YWwgPSAxOwor
fSAvLyBuYW1lc3BhY2UKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBDQ0xheWVyVHJl
ZUhvc3RJbXBsVGltZVNvdXJjZUFkYXB0ZXIgOiBwdWJsaWMgQ0NUaW1lU291cmNlQ2xpZW50IHsK
KyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDQ0xheWVyVHJlZUhvc3RJbXBsVGltZVNvdXJjZUFk
YXB0ZXIpOworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPENDTGF5ZXJUcmVlSG9zdElt
cGxUaW1lU291cmNlQWRhcHRlcj4gY3JlYXRlKENDTGF5ZXJUcmVlSG9zdEltcGwqIGxheWVyVHJl
ZUhvc3RJbXBsLCBQYXNzUmVmUHRyPENDRGVsYXlCYXNlZFRpbWVTb3VyY2U+IHRpbWVTb3VyY2Up
CisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IENDTGF5ZXJUcmVlSG9zdEltcGxU
aW1lU291cmNlQWRhcHRlcihsYXllclRyZWVIb3N0SW1wbCwgdGltZVNvdXJjZSkpOworICAgIH0K
KyAgICB2aXJ0dWFsIH5DQ0xheWVyVHJlZUhvc3RJbXBsVGltZVNvdXJjZUFkYXB0ZXIoKQorICAg
IHsKKyAgICAgICAgbV90aW1lU291cmNlLT5zZXRDbGllbnQoMCk7CisgICAgICAgIG1fdGltZVNv
dXJjZS0+c2V0QWN0aXZlKGZhbHNlKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgb25UaW1l
clRpY2soKQorICAgIHsKKyAgICAgICAgbV9sYXllclRyZWVIb3N0SW1wbC0+YW5pbWF0ZShtb25v
dG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSAqIDEwMDAuMCk7CisgICAgfQorCisgICAgdm9pZCBz
ZXRBY3RpdmUoYm9vbCBhY3RpdmUpCisgICAgeworICAgICAgICBpZiAoYWN0aXZlICE9IG1fdGlt
ZVNvdXJjZS0+YWN0aXZlKCkpCisgICAgICAgICAgICBtX3RpbWVTb3VyY2UtPnNldEFjdGl2ZShh
Y3RpdmUpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBDQ0xheWVyVHJlZUhvc3RJbXBsVGltZVNv
dXJjZUFkYXB0ZXIoQ0NMYXllclRyZWVIb3N0SW1wbCogbGF5ZXJUcmVlSG9zdEltcGwsIFBhc3NS
ZWZQdHI8Q0NEZWxheUJhc2VkVGltZVNvdXJjZT4gdGltZVNvdXJjZSkKKyAgICAgICAgOiBtX2xh
eWVyVHJlZUhvc3RJbXBsKGxheWVyVHJlZUhvc3RJbXBsKQorICAgICAgICAsIG1fdGltZVNvdXJj
ZSh0aW1lU291cmNlKQorICAgIHsKKyAgICAgICAgbV90aW1lU291cmNlLT5zZXRDbGllbnQodGhp
cyk7CisgICAgfQorCisgICAgQ0NMYXllclRyZWVIb3N0SW1wbCogbV9sYXllclRyZWVIb3N0SW1w
bDsKKyAgICBSZWZQdHI8Q0NEZWxheUJhc2VkVGltZVNvdXJjZT4gbV90aW1lU291cmNlOworfTsK
KwogUGFzc093blB0cjxDQ0xheWVyVHJlZUhvc3RJbXBsPiBDQ0xheWVyVHJlZUhvc3RJbXBsOjpj
cmVhdGUoY29uc3QgQ0NTZXR0aW5ncyYgc2V0dGluZ3MsIENDTGF5ZXJUcmVlSG9zdEltcGxDbGll
bnQqIGNsaWVudCkKIHsKICAgICByZXR1cm4gYWRvcHRQdHIobmV3IENDTGF5ZXJUcmVlSG9zdElt
cGwoc2V0dGluZ3MsIGNsaWVudCkpOwpAQCAtNjAsNiArMTAxLDcgQEAgQ0NMYXllclRyZWVIb3N0
SW1wbDo6Q0NMYXllclRyZWVIb3N0SW1wbChjb25zdCBDQ1NldHRpbmdzJiBzZXR0aW5ncywgQ0NM
YXllclRyZWUKICAgICAsIG1fbWF4UGFnZVNjYWxlKDApCiAgICAgLCBtX25lZWRzQW5pbWF0ZUxh
eWVycyhmYWxzZSkKICAgICAsIG1fcGluY2hHZXN0dXJlQWN0aXZlKGZhbHNlKQorICAgICwgbV90
aW1lU291cmNlQ2xpZW50QWRhcHRlcihDQ0xheWVyVHJlZUhvc3RJbXBsVGltZVNvdXJjZUFkYXB0
ZXI6OmNyZWF0ZSh0aGlzLCBDQ0RlbGF5QmFzZWRUaW1lU291cmNlOjpjcmVhdGUobG93RnJlcXVl
bmN5QW5pbWF0aW9uSW50ZXJ2YWwgKiAxMDAwLjAsIENDUHJveHk6OmN1cnJlbnRUaHJlYWQoKSkp
KQogewogICAgIEFTU0VSVChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7CiB9CkBAIC0zOTgsNiAr
NDQwLDkgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpzZXRWaXNpYmxlKGJvb2wgdmlzaWJs
ZSkKICAgICAvLyBwcm9jZXNzIG9uIHZpc2liaWxpdHkgY2hhbmdlLgogICAgIGlmICh2aXNpYmxl
ICYmIG1fbGF5ZXJSZW5kZXJlci0+Y2FwYWJpbGl0aWVzKCkudXNpbmdQYXJ0aWFsU3dhcCkKICAg
ICAgICAgc2V0RnVsbFJvb3RMYXllckRhbWFnZSgpOworCisgICAgY29uc3QgYm9vbCBzaG91bGRU
aWNrSW5CYWNrZ3JvdW5kID0gIXZpc2libGUgJiYgbV9uZWVkc0FuaW1hdGVMYXllcnM7CisgICAg
bV90aW1lU291cmNlQ2xpZW50QWRhcHRlci0+c2V0QWN0aXZlKHNob3VsZFRpY2tJbkJhY2tncm91
bmQpOwogfQogCiBib29sIENDTGF5ZXJUcmVlSG9zdEltcGw6OmluaXRpYWxpemVMYXllclJlbmRl
cmVyKFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQpCkBAIC03MTEsNiArNzU2
LDkgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjphbmltYXRlTGF5ZXJzKGRvdWJsZSBmcmFt
ZUJlZ2luVGltZU1zKQogCiAgICAgaWYgKGRpZEFuaW1hdGUpCiAgICAgICAgIG1fY2xpZW50LT5z
ZXROZWVkc1JlZHJhd09uSW1wbFRocmVhZCgpOworCisgICAgY29uc3QgYm9vbCBzaG91bGRUaWNr
SW5CYWNrZ3JvdW5kID0gbV9uZWVkc0FuaW1hdGVMYXllcnMgJiYgIW1fdmlzaWJsZTsKKyAgICBt
X3RpbWVTb3VyY2VDbGllbnRBZGFwdGVyLT5zZXRBY3RpdmUoc2hvdWxkVGlja0luQmFja2dyb3Vu
ZCk7CiB9CiAKIHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6c2VuZERpZExvc2VDb250ZXh0UmVj
dXJzaXZlKENDTGF5ZXJJbXBsKiBjdXJyZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0
SW1wbC5oCmluZGV4IGEwYjM1ZjJkYzk4OGVkODliYmE1OWM4YmEyODRiMDRlZGE0MDNkMDMuLmUz
NDcxMWIzYWQ0M2Q2OWNlYjdhZTA1OGZiYzhlOTgyODlhZjdjMDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdElt
cGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyVHJlZUhvc3RJbXBsLmgKQEAgLTQwLDYgKzQwLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgQ0NDb21wbGV0aW9uRXZlbnQ7CiBjbGFzcyBDQ1BhZ2VTY2FsZUFuaW1hdGlvbjsK
IGNsYXNzIENDTGF5ZXJJbXBsOworY2xhc3MgQ0NMYXllclRyZWVIb3N0SW1wbFRpbWVTb3VyY2VB
ZGFwdGVyOworY2xhc3MgTGF5ZXJSZW5kZXJlckNocm9taXVtOwogY2xhc3MgVGV4dHVyZUFsbG9j
YXRvcjsKIHN0cnVjdCBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzOwogY2xhc3MgVHJhbnNmb3Jt
YXRpb25NYXRyaXg7CkBAIC0xNzgsNiArMTgwLDkgQEAgcHJpdmF0ZToKIAogICAgIE93blB0cjxD
Q1BhZ2VTY2FsZUFuaW1hdGlvbj4gbV9wYWdlU2NhbGVBbmltYXRpb247CiAKKyAgICAvLyBUaGlz
IGlzIHVzZWQgZm9yIHRpY2tpbmcgYW5pbWF0aW9ucyBzbG93bHkgd2hlbiBoaWRkZW4uCisgICAg
T3duUHRyPENDTGF5ZXJUcmVlSG9zdEltcGxUaW1lU291cmNlQWRhcHRlcj4gbV90aW1lU291cmNl
Q2xpZW50QWRhcHRlcjsKKwogICAgIENDTGF5ZXJTb3J0ZXIgbV9sYXllclNvcnRlcjsKIAogICAg
IEZsb2F0UmVjdCBtX3Jvb3REYW1hZ2VSZWN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmNwcAppbmRleCBlNGQ2MDE0
NTExYmMxYzVkYjBlNjg3YmQxZjY4M2ZhZTgwMzZjNWFhLi45ZWJiNzFkYzdkMzQxYTI3OWI3YTdm
NjQ3ZGJhNWVkZjE4NDMwYjdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmNwcApAQCAtNjksMjggKzY5LDM4IEBA
IENDVGhyZWFkKiBDQ1Byb3h5OjppbXBsVGhyZWFkKCkKICAgICByZXR1cm4gc19pbXBsVGhyZWFk
OwogfQogCitDQ1RocmVhZCogQ0NQcm94eTo6Y3VycmVudFRocmVhZCgpCit7CisgICAgVGhyZWFk
SWRlbnRpZmllciBjdXJyZW50VGhyZWFkSWRlbnRpZmllciA9IFdURjo6Y3VycmVudFRocmVhZCgp
OworICAgIGlmIChzX21haW5UaHJlYWQgJiYgc19tYWluVGhyZWFkLT50aHJlYWRJRCgpID09IGN1
cnJlbnRUaHJlYWRJZGVudGlmaWVyKQorICAgICAgICByZXR1cm4gc19tYWluVGhyZWFkOworICAg
IGlmIChzX2ltcGxUaHJlYWQgJiYgc19pbXBsVGhyZWFkLT50aHJlYWRJRCgpID09IGN1cnJlbnRU
aHJlYWRJZGVudGlmaWVyKQorICAgICAgICByZXR1cm4gc19pbXBsVGhyZWFkOworICAgIHJldHVy
biAwOworfQorCiAjaWZuZGVmIE5ERUJVRwogYm9vbCBDQ1Byb3h5Ojppc01haW5UaHJlYWQoKQog
ewogICAgIEFTU0VSVChzX21haW5UaHJlYWQpOwotICAgIGlmIChpbXBsVGhyZWFkSXNPdmVycmlk
ZGVuICYmIGN1cnJlbnRUaHJlYWQoKSA9PSB0aHJlYWRJRE92ZXJyaWRlblRvQmVJbXBsVGhyZWFk
KQorICAgIGlmIChpbXBsVGhyZWFkSXNPdmVycmlkZGVuICYmIFdURjo6Y3VycmVudFRocmVhZCgp
ID09IHRocmVhZElET3ZlcnJpZGVuVG9CZUltcGxUaHJlYWQpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICByZXR1cm4gY3VycmVudFRocmVhZCgpID09IHNfbWFpblRocmVhZC0+dGhyZWFkSUQo
KTsKKyAgICByZXR1cm4gV1RGOjpjdXJyZW50VGhyZWFkKCkgPT0gc19tYWluVGhyZWFkLT50aHJl
YWRJRCgpOwogfQogCiBib29sIENDUHJveHk6OmlzSW1wbFRocmVhZCgpCiB7CiAgICAgV1RGOjpU
aHJlYWRJZGVudGlmaWVyIGltcGxUaHJlYWRJRCA9IHNfaW1wbFRocmVhZCA/IHNfaW1wbFRocmVh
ZC0+dGhyZWFkSUQoKSA6IDA7Ci0gICAgaWYgKGltcGxUaHJlYWRJc092ZXJyaWRkZW4gJiYgY3Vy
cmVudFRocmVhZCgpID09IHRocmVhZElET3ZlcnJpZGVuVG9CZUltcGxUaHJlYWQpCisgICAgaWYg
KGltcGxUaHJlYWRJc092ZXJyaWRkZW4gJiYgV1RGOjpjdXJyZW50VGhyZWFkKCkgPT0gdGhyZWFk
SURPdmVycmlkZW5Ub0JlSW1wbFRocmVhZCkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0
dXJuIGN1cnJlbnRUaHJlYWQoKSA9PSBpbXBsVGhyZWFkSUQ7CisgICAgcmV0dXJuIFdURjo6Y3Vy
cmVudFRocmVhZCgpID09IGltcGxUaHJlYWRJRDsKIH0KIAogdm9pZCBDQ1Byb3h5OjpzZXRDdXJy
ZW50VGhyZWFkSXNJbXBsVGhyZWFkKGJvb2wgaXNJbXBsVGhyZWFkKQogewogICAgIGltcGxUaHJl
YWRJc092ZXJyaWRkZW4gPSBpc0ltcGxUaHJlYWQ7CiAgICAgaWYgKGlzSW1wbFRocmVhZCkKLSAg
ICAgICAgdGhyZWFkSURPdmVycmlkZW5Ub0JlSW1wbFRocmVhZCA9IGN1cnJlbnRUaHJlYWQoKTsK
KyAgICAgICAgdGhyZWFkSURPdmVycmlkZW5Ub0JlSW1wbFRocmVhZCA9IFdURjo6Y3VycmVudFRo
cmVhZCgpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaAppbmRleCBhNTQ2ODAyMTJiNTg3ODQxMGNm
YWY3OGVmYzdjYzYzN2NmY2QxYmM0Li4wMTYyMjZjYTUxMjAxMzFmY2ZlM2ZjMTMzMTlhYzcxNjA4
NzY3NTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1Byb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NQcm94eS5oCkBAIC01Myw2ICs1Myw5IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgdm9pZCBzZXRJbXBsVGhyZWFkKENDVGhyZWFkKik7CiAgICAgc3RhdGljIENDVGhyZWFkKiBp
bXBsVGhyZWFkKCk7CiAKKyAgICAvLyBSZXR1cm5zIDAgaWYgdGhlIGN1cnJlbnQgdGhyZWFkIGlz
IG5laXRoZXIgdGhlIG1haW4gdGhyZWFkIG5vciB0aGUgaW1wbCB0aHJlYWQuCisgICAgc3RhdGlj
IENDVGhyZWFkKiBjdXJyZW50VGhyZWFkKCk7CisKICAgICB2aXJ0dWFsIH5DQ1Byb3h5KCk7CiAK
ICAgICB2aXJ0dWFsIGJvb2wgY29tcG9zaXRlQW5kUmVhZGJhY2sodm9pZCAqcGl4ZWxzLCBjb25z
dCBJbnRSZWN0JikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
Q0NMYXllclRyZWVIb3N0VGVzdC5jcHAKaW5kZXggMTI4YmQwYjBjMjM4Mzk1Y2QwYzY2M2MxMDVm
MDFmZjg3NjQwYTc4Yy4uZmE3NWRlYzBjNzVjMTBhY2JiYjE4NmQ0ODJlMWViOGNjMjk4YjViNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RU
ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9z
dFRlc3QuY3BwCkBAIC0yOTAsNiArMjkwLDExIEBAIHB1YmxpYzoKICAgICAgICAgY2FsbE9uTWFp
blRocmVhZChDQ0xheWVyVHJlZUhvc3RUZXN0OjpkaXNwYXRjaEFkZEFuaW1hdGlvbiwgdGhpcyk7
CiAgICAgfQogCisgICAgdm9pZCBwb3N0QWRkSW5zdGFudEFuaW1hdGlvblRvTWFpblRocmVhZCgp
CisgICAgeworICAgICAgICBjYWxsT25NYWluVGhyZWFkKENDTGF5ZXJUcmVlSG9zdFRlc3Q6OmRp
c3BhdGNoQWRkSW5zdGFudEFuaW1hdGlvbiwgdGhpcyk7CisgICAgfQorCiAgICAgdm9pZCBwb3N0
U2V0TmVlZHNDb21taXRUb01haW5UaHJlYWQoKQogICAgIHsKICAgICAgICAgY2FsbE9uTWFpblRo
cmVhZChDQ0xheWVyVHJlZUhvc3RUZXN0OjpkaXNwYXRjaFNldE5lZWRzQ29tbWl0LCB0aGlzKTsK
QEAgLTM0Nyw3ICszNTIsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgICAgdGVzdC0+bV9sYXllclRy
ZWVIb3N0LT5zZXROZWVkc0FuaW1hdGUoKTsKICAgICB9CiAKLSAgICBzdGF0aWMgdm9pZCBkaXNw
YXRjaEFkZEFuaW1hdGlvbih2b2lkKiBzZWxmKQorICAgIHN0YXRpYyB2b2lkIGRpc3BhdGNoQWRk
SW5zdGFudEFuaW1hdGlvbih2b2lkKiBzZWxmKQogICAgIHsKICAgICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CiAgICAgICBDQ0xheWVyVHJlZUhvc3RUZXN0KiB0ZXN0ID0gc3RhdGljX2Nhc3Q8
Q0NMYXllclRyZWVIb3N0VGVzdCo+KHNlbGYpOwpAQCAtMzU2LDYgKzM2MSwxNSBAQCBwcm90ZWN0
ZWQ6CiAgICAgICAgICAgYWRkT3BhY2l0eVRyYW5zaXRpb25Ub0xheWVyKCp0ZXN0LT5tX2xheWVy
VHJlZUhvc3QtPnJvb3RMYXllcigpLCAwLCAwLCAxKTsKICAgICB9CiAKKyAgICBzdGF0aWMgdm9p
ZCBkaXNwYXRjaEFkZEFuaW1hdGlvbih2b2lkKiBzZWxmKQorICAgIHsKKyAgICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CisgICAgICBDQ0xheWVyVHJlZUhvc3RUZXN0KiB0ZXN0ID0gc3RhdGlj
X2Nhc3Q8Q0NMYXllclRyZWVIb3N0VGVzdCo+KHNlbGYpOworICAgICAgQVNTRVJUKHRlc3QpOwor
ICAgICAgaWYgKHRlc3QtPm1fbGF5ZXJUcmVlSG9zdCAmJiB0ZXN0LT5tX2xheWVyVHJlZUhvc3Qt
PnJvb3RMYXllcigpKQorICAgICAgICAgIGFkZE9wYWNpdHlUcmFuc2l0aW9uVG9MYXllcigqdGVz
dC0+bV9sYXllclRyZWVIb3N0LT5yb290TGF5ZXIoKSwgMTAwMDAsIDAsIDEpOworICAgIH0KKwog
ICAgIHN0YXRpYyB2b2lkIGRpc3BhdGNoU2V0TmVlZHNBbmltYXRlQW5kQ29tbWl0KHZvaWQqIHNl
bGYpCiAgICAgewogICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKQEAgLTg0NSw3ICs4NTks
NyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgYmVnaW5UZXN0KCkKICAgICB7Ci0gICAg
ICAgIHBvc3RBZGRBbmltYXRpb25Ub01haW5UaHJlYWQoKTsKKyAgICAgICAgcG9zdEFkZEluc3Rh
bnRBbmltYXRpb25Ub01haW5UaHJlYWQoKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIHZvaWQgYW5p
bWF0ZUxheWVycyhDQ0xheWVyVHJlZUhvc3RJbXBsKiBsYXllclRyZWVIb3N0SW1wbCkKQEAgLTg4
Nyw2ICs5MDEsNDMgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdFRlc3RBZGRBbmltYXRpb24sIHJ1
bk11bHRpVGhyZWFkKQogICAgIHJ1blRlc3RUaHJlYWRlZCgpOwogfQogCisvLyBFbnN1cmVzIHRo
YXQgYW5pbWF0aW9ucyBjb250aW51ZSB0byBiZSB0aWNrZWQgd2hlbiB3ZSBhcmUgYmFja2dyb3Vu
ZGVkLgorY2xhc3MgQ0NMYXllclRyZWVIb3N0VGVzdFRpY2tBbmltYXRpb25XaGlsZUJhY2tncm91
bmRlZCA6IHB1YmxpYyBDQ0xheWVyVHJlZUhvc3RUZXN0VGhyZWFkT25seSB7CitwdWJsaWM6Cisg
ICAgQ0NMYXllclRyZWVIb3N0VGVzdFRpY2tBbmltYXRpb25XaGlsZUJhY2tncm91bmRlZCgpCisg
ICAgICAgIDogbV9udW1BbmltYXRlcygwKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZv
aWQgYmVnaW5UZXN0KCkKKyAgICB7CisgICAgICAgIHBvc3RBZGRBbmltYXRpb25Ub01haW5UaHJl
YWQoKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgYW5pbWF0ZUxheWVycyhDQ0xheWVyVHJl
ZUhvc3RJbXBsKiBsYXllclRyZWVIb3N0SW1wbCkKKyAgICB7CisgICAgICAgIGlmICghbV9udW1B
bmltYXRlcykgeworICAgICAgICAgICAgLy8gV2UgaGF2ZSBhIGxvbmcgYW5pbWF0aW9uIHJ1bm5p
bmcuIEl0IHNob3VsZCBjb250aW51ZSB0byB0aWNrIGV2ZW4gaWYgd2UgYXJlIG5vdCB2aXNpYmxl
LgorICAgICAgICAgICAgcG9zdFNldFZpc2libGVUb01haW5UaHJlYWQoZmFsc2UpOworICAgICAg
ICAgICAgbV9udW1BbmltYXRlcysrOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9Cisg
ICAgICAgIGVuZFRlc3QoKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgYWZ0ZXJUZXN0KCkK
KyAgICB7CisgICAgfQorCitwcml2YXRlOgorICAgIGludCBtX251bUFuaW1hdGVzOworfTsKKwor
VEVTVF9GKENDTGF5ZXJUcmVlSG9zdFRlc3RUaWNrQW5pbWF0aW9uV2hpbGVCYWNrZ3JvdW5kZWQs
IHJ1bk11bHRpVGhyZWFkKQoreworICAgIHJ1blRlc3RUaHJlYWRlZCgpOworfQorCiBjbGFzcyBD
Q0xheWVyVHJlZUhvc3RUZXN0U2Nyb2xsU2ltcGxlIDogcHVibGljIENDTGF5ZXJUcmVlSG9zdFRl
c3RUaHJlYWRPbmx5IHsKIHB1YmxpYzoKICAgICBDQ0xheWVyVHJlZUhvc3RUZXN0U2Nyb2xsU2lt
cGxlKCkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130880</attachid>
            <date>2012-03-08 12:32:02 -0800</date>
            <delta_ts>2012-03-08 19:25:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77668-20120308153201.patch</filename>
            <type>text/plain</type>
            <size>13344</size>
            <attacher>vollick</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwMTg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2Y5OTUyM2Y1OTQwMzY3
ODcxNTEwMTBkYzU5OGI2OGFlZWM5OTBkMi4uNDM5NjVmOGM1YjcwODcxMDRmMzE3MTQ5MDUyMzcy
YmE5OWZmOTNiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDEyLTAzLTA4ICBJYW4g
Vm9sbGljayAgPHZvbGxpY2tAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gRW5z
dXJlIHRoYXQgdGhlIGNjIHRocmVhZCBhbmltYXRpb24gZnJhbWV3b3JrIGNvbnRpbnVlcyB0byB0
aWNrIHdoZW4gdGhlIHRhYiBpcyBiYWNrZ3JvdW5kZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3NjY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdGVkIGluIENDTGF5ZXJUcmVlSG9zdFRlc3RUaWNr
QW5pbWF0aW9uV2hpbGVCYWNrZ3JvdW5kZWQKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwOgorICAgICAgICAoQ0NMYXllclRy
ZWVIb3N0SW1wbFRpbWVTb3VyY2VBZGFwdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJU
cmVlSG9zdEltcGxUaW1lU291cmNlQWRhcHRlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDTGF5ZXJUcmVlSG9zdEltcGxUaW1lU291cmNlQWRhcHRlcjo6fkNDTGF5ZXJUcmVlSG9zdElt
cGxUaW1lU291cmNlQWRhcHRlcik6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJ
bXBsVGltZVNvdXJjZUFkYXB0ZXI6Om9uVGltZXJUaWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkND
TGF5ZXJUcmVlSG9zdEltcGxUaW1lU291cmNlQWRhcHRlcjo6c2V0QWN0aXZlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGxUaW1lU291cmNlQWRhcHRlcjo6Q0NMYXllclRy
ZWVIb3N0SW1wbFRpbWVTb3VyY2VBZGFwdGVyKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6Q0NMYXllclRyZWVIb3N0SW1wbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsOjpzZXRWaXNpYmxlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OmFuaW1hdGVMYXllcnMpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaDoK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ0NMYXllclRyZWVIb3N0SW1wbCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDQ1Byb3h5OjpjdXJyZW50VGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NQcm94eTo6aXNNYWluVGhyZWFkKToKKyAgICAgICAgKFdlYkNv
cmU6OkNDUHJveHk6OmlzSW1wbFRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Byb3h5Ojpz
ZXRDdXJyZW50VGhyZWFkSXNJbXBsVGhyZWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1Byb3h5Lmg6CisgICAgICAgIChDQ1Byb3h5KToKKwogMjAxMi0wMy0w
OCAgU2NvdHQgQnllciAgPHNjb3R0YnllckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgSGF2ZSBT
Y3JvbGxBbmltYXRvck5vbmUgdXNlIHJlcXVlc3RBbmltYXRpb25GcmFtZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZwppbmRleCA5ODBkMDFjMzc0MGRlN2M0ZjUzNzM0MDMwNjlmNjljOGI0N2Y5YjAw
Li5iMzVhMmJiNmI1MjQzODY4NTE4MTAwYTQ2YTk2ODNkNmZiNWMwODEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDEyLTAzLTA4ICBJYW4gVm9sbGljayAg
PHZvbGxpY2tAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gRW5zdXJlIHRoYXQg
dGhlIGNjIHRocmVhZCBhbmltYXRpb24gZnJhbWV3b3JrIGNvbnRpbnVlcyB0byB0aWNrIHdoZW4g
dGhlIHRhYiBpcyBiYWNrZ3JvdW5kZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTc3NjY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiB0ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcDoKKyAgICAgICAg
KFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdDo6cG9zdEFkZEluc3RhbnRBbmltYXRpb25Ub01haW5U
aHJlYWQpOgorICAgICAgICAoQ0NMYXllclRyZWVIb3N0VGVzdCk6CisgICAgICAgIChXVEY6OkND
TGF5ZXJUcmVlSG9zdFRlc3Q6OmRpc3BhdGNoQWRkSW5zdGFudEFuaW1hdGlvbik6CisgICAgICAg
IChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3Q6OmRpc3BhdGNoQWRkQW5pbWF0aW9uKToKKyAgICAg
ICAgKFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdEFkZEFuaW1hdGlvbjo6YmVnaW5UZXN0KToKKyAg
ICAgICAgKFdURik6CisgICAgICAgIChDQ0xheWVyVHJlZUhvc3RUZXN0VGlja0FuaW1hdGlvbldo
aWxlQmFja2dyb3VuZGVkKToKKyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdFRpY2tB
bmltYXRpb25XaGlsZUJhY2tncm91bmRlZDo6Q0NMYXllclRyZWVIb3N0VGVzdFRpY2tBbmltYXRp
b25XaGlsZUJhY2tncm91bmRlZCk6CisgICAgICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3RU
aWNrQW5pbWF0aW9uV2hpbGVCYWNrZ3JvdW5kZWQ6OmJlZ2luVGVzdCk6CisgICAgICAgIChXVEY6
OkNDTGF5ZXJUcmVlSG9zdFRlc3RUaWNrQW5pbWF0aW9uV2hpbGVCYWNrZ3JvdW5kZWQ6OmFuaW1h
dGVMYXllcnMpOgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0VGlja0FuaW1hdGlv
bldoaWxlQmFja2dyb3VuZGVkOjphZnRlclRlc3QpOgorICAgICAgICAoV1RGOjpURVNUX0YpOgor
CiAyMDEyLTAzLTA4ICBTY290dCBCeWVyICA8c2NvdHRieWVyQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBIYXZlIFNjcm9sbEFuaW1hdG9yTm9uZSB1c2UgcmVxdWVzdEFuaW1hdGlvbkZyYW1lCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyVHJlZUhvc3RJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCmluZGV4IDkyNWM4Y2M0YzA2NjEy
ZDQxNTJmMDk5YWQ3MjYwOGEzNzgyMGM4MGEuLmY1YzRkNjY1OGIwMGY3NTgwNGNhODhkNWJhMWQ1
ODZjYmU2NWQ2NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCkBA
IC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiTGF5ZXJSZW5kZXJlckNocm9taXVtLmgiCiAjaW5j
bHVkZSAiVHJhY2VFdmVudC5oIgogI2luY2x1ZGUgImNjL0NDRGFtYWdlVHJhY2tlci5oIgorI2lu
Y2x1ZGUgImNjL0NDRGVsYXlCYXNlZFRpbWVTb3VyY2UuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVy
SXRlcmF0b3IuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3QuaCIKICNpbmNsdWRlICJj
Yy9DQ0xheWVyVHJlZUhvc3RDb21tb24uaCIKQEAgLTM5LDggKzQwLDQ4IEBACiAjaW5jbHVkZSAi
Y2MvQ0NUaHJlYWRUYXNrLmgiCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAKK25hbWVz
cGFjZSB7Citjb25zdCBkb3VibGUgbG93RnJlcXVlbmN5QW5pbWF0aW9uSW50ZXJ2YWwgPSAxOwor
fSAvLyBuYW1lc3BhY2UKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBDQ0xheWVyVHJl
ZUhvc3RJbXBsVGltZVNvdXJjZUFkYXB0ZXIgOiBwdWJsaWMgQ0NUaW1lU291cmNlQ2xpZW50IHsK
KyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDQ0xheWVyVHJlZUhvc3RJbXBsVGltZVNvdXJjZUFk
YXB0ZXIpOworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPENDTGF5ZXJUcmVlSG9zdElt
cGxUaW1lU291cmNlQWRhcHRlcj4gY3JlYXRlKENDTGF5ZXJUcmVlSG9zdEltcGwqIGxheWVyVHJl
ZUhvc3RJbXBsLCBQYXNzUmVmUHRyPENDRGVsYXlCYXNlZFRpbWVTb3VyY2U+IHRpbWVTb3VyY2Up
CisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IENDTGF5ZXJUcmVlSG9zdEltcGxU
aW1lU291cmNlQWRhcHRlcihsYXllclRyZWVIb3N0SW1wbCwgdGltZVNvdXJjZSkpOworICAgIH0K
KyAgICB2aXJ0dWFsIH5DQ0xheWVyVHJlZUhvc3RJbXBsVGltZVNvdXJjZUFkYXB0ZXIoKQorICAg
IHsKKyAgICAgICAgbV90aW1lU291cmNlLT5zZXRDbGllbnQoMCk7CisgICAgICAgIG1fdGltZVNv
dXJjZS0+c2V0QWN0aXZlKGZhbHNlKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgb25UaW1l
clRpY2soKQorICAgIHsKKyAgICAgICAgbV9sYXllclRyZWVIb3N0SW1wbC0+YW5pbWF0ZShtb25v
dG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSAqIDEwMDAuMCk7CisgICAgfQorCisgICAgdm9pZCBz
ZXRBY3RpdmUoYm9vbCBhY3RpdmUpCisgICAgeworICAgICAgICBpZiAoYWN0aXZlICE9IG1fdGlt
ZVNvdXJjZS0+YWN0aXZlKCkpCisgICAgICAgICAgICBtX3RpbWVTb3VyY2UtPnNldEFjdGl2ZShh
Y3RpdmUpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBDQ0xheWVyVHJlZUhvc3RJbXBsVGltZVNv
dXJjZUFkYXB0ZXIoQ0NMYXllclRyZWVIb3N0SW1wbCogbGF5ZXJUcmVlSG9zdEltcGwsIFBhc3NS
ZWZQdHI8Q0NEZWxheUJhc2VkVGltZVNvdXJjZT4gdGltZVNvdXJjZSkKKyAgICAgICAgOiBtX2xh
eWVyVHJlZUhvc3RJbXBsKGxheWVyVHJlZUhvc3RJbXBsKQorICAgICAgICAsIG1fdGltZVNvdXJj
ZSh0aW1lU291cmNlKQorICAgIHsKKyAgICAgICAgbV90aW1lU291cmNlLT5zZXRDbGllbnQodGhp
cyk7CisgICAgfQorCisgICAgQ0NMYXllclRyZWVIb3N0SW1wbCogbV9sYXllclRyZWVIb3N0SW1w
bDsKKyAgICBSZWZQdHI8Q0NEZWxheUJhc2VkVGltZVNvdXJjZT4gbV90aW1lU291cmNlOworfTsK
KwogUGFzc093blB0cjxDQ0xheWVyVHJlZUhvc3RJbXBsPiBDQ0xheWVyVHJlZUhvc3RJbXBsOjpj
cmVhdGUoY29uc3QgQ0NTZXR0aW5ncyYgc2V0dGluZ3MsIENDTGF5ZXJUcmVlSG9zdEltcGxDbGll
bnQqIGNsaWVudCkKIHsKICAgICByZXR1cm4gYWRvcHRQdHIobmV3IENDTGF5ZXJUcmVlSG9zdElt
cGwoc2V0dGluZ3MsIGNsaWVudCkpOwpAQCAtNjAsNiArMTAxLDcgQEAgQ0NMYXllclRyZWVIb3N0
SW1wbDo6Q0NMYXllclRyZWVIb3N0SW1wbChjb25zdCBDQ1NldHRpbmdzJiBzZXR0aW5ncywgQ0NM
YXllclRyZWUKICAgICAsIG1fbWF4UGFnZVNjYWxlKDApCiAgICAgLCBtX25lZWRzQW5pbWF0ZUxh
eWVycyhmYWxzZSkKICAgICAsIG1fcGluY2hHZXN0dXJlQWN0aXZlKGZhbHNlKQorICAgICwgbV90
aW1lU291cmNlQ2xpZW50QWRhcHRlcihDQ0xheWVyVHJlZUhvc3RJbXBsVGltZVNvdXJjZUFkYXB0
ZXI6OmNyZWF0ZSh0aGlzLCBDQ0RlbGF5QmFzZWRUaW1lU291cmNlOjpjcmVhdGUobG93RnJlcXVl
bmN5QW5pbWF0aW9uSW50ZXJ2YWwgKiAxMDAwLjAsIENDUHJveHk6OmN1cnJlbnRUaHJlYWQoKSkp
KQogewogICAgIEFTU0VSVChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7CiB9CkBAIC0zOTgsNiAr
NDQwLDkgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpzZXRWaXNpYmxlKGJvb2wgdmlzaWJs
ZSkKICAgICAvLyBwcm9jZXNzIG9uIHZpc2liaWxpdHkgY2hhbmdlLgogICAgIGlmICh2aXNpYmxl
ICYmIG1fbGF5ZXJSZW5kZXJlci0+Y2FwYWJpbGl0aWVzKCkudXNpbmdQYXJ0aWFsU3dhcCkKICAg
ICAgICAgc2V0RnVsbFJvb3RMYXllckRhbWFnZSgpOworCisgICAgY29uc3QgYm9vbCBzaG91bGRU
aWNrSW5CYWNrZ3JvdW5kID0gIXZpc2libGUgJiYgbV9uZWVkc0FuaW1hdGVMYXllcnM7CisgICAg
bV90aW1lU291cmNlQ2xpZW50QWRhcHRlci0+c2V0QWN0aXZlKHNob3VsZFRpY2tJbkJhY2tncm91
bmQpOwogfQogCiBib29sIENDTGF5ZXJUcmVlSG9zdEltcGw6OmluaXRpYWxpemVMYXllclJlbmRl
cmVyKFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQpCkBAIC03MTEsNiArNzU2
LDkgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjphbmltYXRlTGF5ZXJzKGRvdWJsZSBmcmFt
ZUJlZ2luVGltZU1zKQogCiAgICAgaWYgKGRpZEFuaW1hdGUpCiAgICAgICAgIG1fY2xpZW50LT5z
ZXROZWVkc1JlZHJhd09uSW1wbFRocmVhZCgpOworCisgICAgY29uc3QgYm9vbCBzaG91bGRUaWNr
SW5CYWNrZ3JvdW5kID0gbV9uZWVkc0FuaW1hdGVMYXllcnMgJiYgIW1fdmlzaWJsZTsKKyAgICBt
X3RpbWVTb3VyY2VDbGllbnRBZGFwdGVyLT5zZXRBY3RpdmUoc2hvdWxkVGlja0luQmFja2dyb3Vu
ZCk7CiB9CiAKIHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6c2VuZERpZExvc2VDb250ZXh0UmVj
dXJzaXZlKENDTGF5ZXJJbXBsKiBjdXJyZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0
SW1wbC5oCmluZGV4IGEwYjM1ZjJkYzk4OGVkODliYmE1OWM4YmEyODRiMDRlZGE0MDNkMDMuLmUz
NDcxMWIzYWQ0M2Q2OWNlYjdhZTA1OGZiYzhlOTgyODlhZjdjMDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdElt
cGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyVHJlZUhvc3RJbXBsLmgKQEAgLTQwLDYgKzQwLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgQ0NDb21wbGV0aW9uRXZlbnQ7CiBjbGFzcyBDQ1BhZ2VTY2FsZUFuaW1hdGlvbjsK
IGNsYXNzIENDTGF5ZXJJbXBsOworY2xhc3MgQ0NMYXllclRyZWVIb3N0SW1wbFRpbWVTb3VyY2VB
ZGFwdGVyOworY2xhc3MgTGF5ZXJSZW5kZXJlckNocm9taXVtOwogY2xhc3MgVGV4dHVyZUFsbG9j
YXRvcjsKIHN0cnVjdCBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzOwogY2xhc3MgVHJhbnNmb3Jt
YXRpb25NYXRyaXg7CkBAIC0xNzgsNiArMTgwLDkgQEAgcHJpdmF0ZToKIAogICAgIE93blB0cjxD
Q1BhZ2VTY2FsZUFuaW1hdGlvbj4gbV9wYWdlU2NhbGVBbmltYXRpb247CiAKKyAgICAvLyBUaGlz
IGlzIHVzZWQgZm9yIHRpY2tpbmcgYW5pbWF0aW9ucyBzbG93bHkgd2hlbiBoaWRkZW4uCisgICAg
T3duUHRyPENDTGF5ZXJUcmVlSG9zdEltcGxUaW1lU291cmNlQWRhcHRlcj4gbV90aW1lU291cmNl
Q2xpZW50QWRhcHRlcjsKKwogICAgIENDTGF5ZXJTb3J0ZXIgbV9sYXllclNvcnRlcjsKIAogICAg
IEZsb2F0UmVjdCBtX3Jvb3REYW1hZ2VSZWN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmNwcAppbmRleCBlNGQ2MDE0
NTExYmMxYzVkYjBlNjg3YmQxZjY4M2ZhZTgwMzZjNWFhLi45ZWJiNzFkYzdkMzQxYTI3OWI3YTdm
NjQ3ZGJhNWVkZjE4NDMwYjdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmNwcApAQCAtNjksMjggKzY5LDM4IEBA
IENDVGhyZWFkKiBDQ1Byb3h5OjppbXBsVGhyZWFkKCkKICAgICByZXR1cm4gc19pbXBsVGhyZWFk
OwogfQogCitDQ1RocmVhZCogQ0NQcm94eTo6Y3VycmVudFRocmVhZCgpCit7CisgICAgVGhyZWFk
SWRlbnRpZmllciBjdXJyZW50VGhyZWFkSWRlbnRpZmllciA9IFdURjo6Y3VycmVudFRocmVhZCgp
OworICAgIGlmIChzX21haW5UaHJlYWQgJiYgc19tYWluVGhyZWFkLT50aHJlYWRJRCgpID09IGN1
cnJlbnRUaHJlYWRJZGVudGlmaWVyKQorICAgICAgICByZXR1cm4gc19tYWluVGhyZWFkOworICAg
IGlmIChzX2ltcGxUaHJlYWQgJiYgc19pbXBsVGhyZWFkLT50aHJlYWRJRCgpID09IGN1cnJlbnRU
aHJlYWRJZGVudGlmaWVyKQorICAgICAgICByZXR1cm4gc19pbXBsVGhyZWFkOworICAgIHJldHVy
biAwOworfQorCiAjaWZuZGVmIE5ERUJVRwogYm9vbCBDQ1Byb3h5Ojppc01haW5UaHJlYWQoKQog
ewogICAgIEFTU0VSVChzX21haW5UaHJlYWQpOwotICAgIGlmIChpbXBsVGhyZWFkSXNPdmVycmlk
ZGVuICYmIGN1cnJlbnRUaHJlYWQoKSA9PSB0aHJlYWRJRE92ZXJyaWRlblRvQmVJbXBsVGhyZWFk
KQorICAgIGlmIChpbXBsVGhyZWFkSXNPdmVycmlkZGVuICYmIFdURjo6Y3VycmVudFRocmVhZCgp
ID09IHRocmVhZElET3ZlcnJpZGVuVG9CZUltcGxUaHJlYWQpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICByZXR1cm4gY3VycmVudFRocmVhZCgpID09IHNfbWFpblRocmVhZC0+dGhyZWFkSUQo
KTsKKyAgICByZXR1cm4gV1RGOjpjdXJyZW50VGhyZWFkKCkgPT0gc19tYWluVGhyZWFkLT50aHJl
YWRJRCgpOwogfQogCiBib29sIENDUHJveHk6OmlzSW1wbFRocmVhZCgpCiB7CiAgICAgV1RGOjpU
aHJlYWRJZGVudGlmaWVyIGltcGxUaHJlYWRJRCA9IHNfaW1wbFRocmVhZCA/IHNfaW1wbFRocmVh
ZC0+dGhyZWFkSUQoKSA6IDA7Ci0gICAgaWYgKGltcGxUaHJlYWRJc092ZXJyaWRkZW4gJiYgY3Vy
cmVudFRocmVhZCgpID09IHRocmVhZElET3ZlcnJpZGVuVG9CZUltcGxUaHJlYWQpCisgICAgaWYg
KGltcGxUaHJlYWRJc092ZXJyaWRkZW4gJiYgV1RGOjpjdXJyZW50VGhyZWFkKCkgPT0gdGhyZWFk
SURPdmVycmlkZW5Ub0JlSW1wbFRocmVhZCkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0
dXJuIGN1cnJlbnRUaHJlYWQoKSA9PSBpbXBsVGhyZWFkSUQ7CisgICAgcmV0dXJuIFdURjo6Y3Vy
cmVudFRocmVhZCgpID09IGltcGxUaHJlYWRJRDsKIH0KIAogdm9pZCBDQ1Byb3h5OjpzZXRDdXJy
ZW50VGhyZWFkSXNJbXBsVGhyZWFkKGJvb2wgaXNJbXBsVGhyZWFkKQogewogICAgIGltcGxUaHJl
YWRJc092ZXJyaWRkZW4gPSBpc0ltcGxUaHJlYWQ7CiAgICAgaWYgKGlzSW1wbFRocmVhZCkKLSAg
ICAgICAgdGhyZWFkSURPdmVycmlkZW5Ub0JlSW1wbFRocmVhZCA9IGN1cnJlbnRUaHJlYWQoKTsK
KyAgICAgICAgdGhyZWFkSURPdmVycmlkZW5Ub0JlSW1wbFRocmVhZCA9IFdURjo6Y3VycmVudFRo
cmVhZCgpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaAppbmRleCBhNTQ2ODAyMTJiNTg3ODQxMGNm
YWY3OGVmYzdjYzYzN2NmY2QxYmM0Li4wMTYyMjZjYTUxMjAxMzFmY2ZlM2ZjMTMzMTlhYzcxNjA4
NzY3NTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1Byb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NQcm94eS5oCkBAIC01Myw2ICs1Myw5IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgdm9pZCBzZXRJbXBsVGhyZWFkKENDVGhyZWFkKik7CiAgICAgc3RhdGljIENDVGhyZWFkKiBp
bXBsVGhyZWFkKCk7CiAKKyAgICAvLyBSZXR1cm5zIDAgaWYgdGhlIGN1cnJlbnQgdGhyZWFkIGlz
IG5laXRoZXIgdGhlIG1haW4gdGhyZWFkIG5vciB0aGUgaW1wbCB0aHJlYWQuCisgICAgc3RhdGlj
IENDVGhyZWFkKiBjdXJyZW50VGhyZWFkKCk7CisKICAgICB2aXJ0dWFsIH5DQ1Byb3h5KCk7CiAK
ICAgICB2aXJ0dWFsIGJvb2wgY29tcG9zaXRlQW5kUmVhZGJhY2sodm9pZCAqcGl4ZWxzLCBjb25z
dCBJbnRSZWN0JikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
Q0NMYXllclRyZWVIb3N0VGVzdC5jcHAKaW5kZXggMTI4YmQwYjBjMjM4Mzk1Y2QwYzY2M2MxMDVm
MDFmZjg3NjQwYTc4Yy4uZmE3NWRlYzBjNzVjMTBhY2JiYjE4NmQ0ODJlMWViOGNjMjk4YjViNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RU
ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9z
dFRlc3QuY3BwCkBAIC0yOTAsNiArMjkwLDExIEBAIHB1YmxpYzoKICAgICAgICAgY2FsbE9uTWFp
blRocmVhZChDQ0xheWVyVHJlZUhvc3RUZXN0OjpkaXNwYXRjaEFkZEFuaW1hdGlvbiwgdGhpcyk7
CiAgICAgfQogCisgICAgdm9pZCBwb3N0QWRkSW5zdGFudEFuaW1hdGlvblRvTWFpblRocmVhZCgp
CisgICAgeworICAgICAgICBjYWxsT25NYWluVGhyZWFkKENDTGF5ZXJUcmVlSG9zdFRlc3Q6OmRp
c3BhdGNoQWRkSW5zdGFudEFuaW1hdGlvbiwgdGhpcyk7CisgICAgfQorCiAgICAgdm9pZCBwb3N0
U2V0TmVlZHNDb21taXRUb01haW5UaHJlYWQoKQogICAgIHsKICAgICAgICAgY2FsbE9uTWFpblRo
cmVhZChDQ0xheWVyVHJlZUhvc3RUZXN0OjpkaXNwYXRjaFNldE5lZWRzQ29tbWl0LCB0aGlzKTsK
QEAgLTM0Nyw3ICszNTIsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgICAgdGVzdC0+bV9sYXllclRy
ZWVIb3N0LT5zZXROZWVkc0FuaW1hdGUoKTsKICAgICB9CiAKLSAgICBzdGF0aWMgdm9pZCBkaXNw
YXRjaEFkZEFuaW1hdGlvbih2b2lkKiBzZWxmKQorICAgIHN0YXRpYyB2b2lkIGRpc3BhdGNoQWRk
SW5zdGFudEFuaW1hdGlvbih2b2lkKiBzZWxmKQogICAgIHsKICAgICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CiAgICAgICBDQ0xheWVyVHJlZUhvc3RUZXN0KiB0ZXN0ID0gc3RhdGljX2Nhc3Q8
Q0NMYXllclRyZWVIb3N0VGVzdCo+KHNlbGYpOwpAQCAtMzU2LDYgKzM2MSwxNSBAQCBwcm90ZWN0
ZWQ6CiAgICAgICAgICAgYWRkT3BhY2l0eVRyYW5zaXRpb25Ub0xheWVyKCp0ZXN0LT5tX2xheWVy
VHJlZUhvc3QtPnJvb3RMYXllcigpLCAwLCAwLCAxKTsKICAgICB9CiAKKyAgICBzdGF0aWMgdm9p
ZCBkaXNwYXRjaEFkZEFuaW1hdGlvbih2b2lkKiBzZWxmKQorICAgIHsKKyAgICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CisgICAgICBDQ0xheWVyVHJlZUhvc3RUZXN0KiB0ZXN0ID0gc3RhdGlj
X2Nhc3Q8Q0NMYXllclRyZWVIb3N0VGVzdCo+KHNlbGYpOworICAgICAgQVNTRVJUKHRlc3QpOwor
ICAgICAgaWYgKHRlc3QtPm1fbGF5ZXJUcmVlSG9zdCAmJiB0ZXN0LT5tX2xheWVyVHJlZUhvc3Qt
PnJvb3RMYXllcigpKQorICAgICAgICAgIGFkZE9wYWNpdHlUcmFuc2l0aW9uVG9MYXllcigqdGVz
dC0+bV9sYXllclRyZWVIb3N0LT5yb290TGF5ZXIoKSwgMTAwMDAsIDAsIDEpOworICAgIH0KKwog
ICAgIHN0YXRpYyB2b2lkIGRpc3BhdGNoU2V0TmVlZHNBbmltYXRlQW5kQ29tbWl0KHZvaWQqIHNl
bGYpCiAgICAgewogICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKQEAgLTg0NSw3ICs4NTks
NyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgYmVnaW5UZXN0KCkKICAgICB7Ci0gICAg
ICAgIHBvc3RBZGRBbmltYXRpb25Ub01haW5UaHJlYWQoKTsKKyAgICAgICAgcG9zdEFkZEluc3Rh
bnRBbmltYXRpb25Ub01haW5UaHJlYWQoKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIHZvaWQgYW5p
bWF0ZUxheWVycyhDQ0xheWVyVHJlZUhvc3RJbXBsKiBsYXllclRyZWVIb3N0SW1wbCkKQEAgLTg4
Nyw2ICs5MDEsNDMgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdFRlc3RBZGRBbmltYXRpb24sIHJ1
bk11bHRpVGhyZWFkKQogICAgIHJ1blRlc3RUaHJlYWRlZCgpOwogfQogCisvLyBFbnN1cmVzIHRo
YXQgYW5pbWF0aW9ucyBjb250aW51ZSB0byBiZSB0aWNrZWQgd2hlbiB3ZSBhcmUgYmFja2dyb3Vu
ZGVkLgorY2xhc3MgQ0NMYXllclRyZWVIb3N0VGVzdFRpY2tBbmltYXRpb25XaGlsZUJhY2tncm91
bmRlZCA6IHB1YmxpYyBDQ0xheWVyVHJlZUhvc3RUZXN0VGhyZWFkT25seSB7CitwdWJsaWM6Cisg
ICAgQ0NMYXllclRyZWVIb3N0VGVzdFRpY2tBbmltYXRpb25XaGlsZUJhY2tncm91bmRlZCgpCisg
ICAgICAgIDogbV9udW1BbmltYXRlcygwKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZv
aWQgYmVnaW5UZXN0KCkKKyAgICB7CisgICAgICAgIHBvc3RBZGRBbmltYXRpb25Ub01haW5UaHJl
YWQoKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgYW5pbWF0ZUxheWVycyhDQ0xheWVyVHJl
ZUhvc3RJbXBsKiBsYXllclRyZWVIb3N0SW1wbCkKKyAgICB7CisgICAgICAgIGlmICghbV9udW1B
bmltYXRlcykgeworICAgICAgICAgICAgLy8gV2UgaGF2ZSBhIGxvbmcgYW5pbWF0aW9uIHJ1bm5p
bmcuIEl0IHNob3VsZCBjb250aW51ZSB0byB0aWNrIGV2ZW4gaWYgd2UgYXJlIG5vdCB2aXNpYmxl
LgorICAgICAgICAgICAgcG9zdFNldFZpc2libGVUb01haW5UaHJlYWQoZmFsc2UpOworICAgICAg
ICAgICAgbV9udW1BbmltYXRlcysrOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9Cisg
ICAgICAgIGVuZFRlc3QoKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgYWZ0ZXJUZXN0KCkK
KyAgICB7CisgICAgfQorCitwcml2YXRlOgorICAgIGludCBtX251bUFuaW1hdGVzOworfTsKKwor
VEVTVF9GKENDTGF5ZXJUcmVlSG9zdFRlc3RUaWNrQW5pbWF0aW9uV2hpbGVCYWNrZ3JvdW5kZWQs
IHJ1bk11bHRpVGhyZWFkKQoreworICAgIHJ1blRlc3RUaHJlYWRlZCgpOworfQorCiBjbGFzcyBD
Q0xheWVyVHJlZUhvc3RUZXN0U2Nyb2xsU2ltcGxlIDogcHVibGljIENDTGF5ZXJUcmVlSG9zdFRl
c3RUaHJlYWRPbmx5IHsKIHB1YmxpYzoKICAgICBDQ0xheWVyVHJlZUhvc3RUZXN0U2Nyb2xsU2lt
cGxlKCkK
</data>

          </attachment>
      

    </bug>

</bugzilla>