<?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>80629</bug_id>
          
          <creation_ts>2012-03-08 12:59:37 -0800</creation_ts>
          <short_desc>[chromium] Canvas acceleration is not restored after context loss</short_desc>
          <delta_ts>2012-03-12 14:52:32 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Canvas</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Stephen White">senorblanco</reporter>
          <assigned_to name="Stephen White">senorblanco</assigned_to>
          <cc>cc-bugs</cc>
    
    <cc>jamesr</cc>
    
    <cc>vangelis</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>574108</commentid>
    <comment_count>0</comment_count>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2012-03-08 12:59:37 -0800</bug_when>
    <thetext>1)  Load a page containing &lt;canvas&gt; in Chrome.
2)  Check that acceleration is active (e.g., FPS meter).
3)  Kill the GPU process.
4)  Reload the page.
5)  GPU acceleration is not restored.

See also http://crbug.com/117394.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>574136</commentid>
    <comment_count>1</comment_count>
      <attachid>130892</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2012-03-08 13:35:19 -0800</bug_when>
    <thetext>Created attachment 130892
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>574260</commentid>
    <comment_count>2</comment_count>
      <attachid>130910</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2012-03-08 14:59:30 -0800</bug_when>
    <thetext>Created attachment 130910
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>574298</commentid>
    <comment_count>3</comment_count>
      <attachid>130910</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-03-08 15:20:30 -0800</bug_when>
    <thetext>Comment on attachment 130910
Patch

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

Would you mind (briefly) describing the semantics in SharedGraphicsContext3D.h? I believe the rules are something like: every caller can hold a ref for as long as they like to the returned context. they should periodically check to see if it&apos;s been lost. if the context has been lost, they should drop their ref and go ask SharedGraphicsContext3D for a new context. they may or may not get one. does that sound about right?

&gt; Source/WebCore/ChangeLog:9
&gt; +        Tested manually by killing the GPU process (no testing infrastructure
&gt; +        to simulate lost context yet).

have you seen LayoutTests/platform/chromium/compositing/lost-context-* ?

&gt; Source/WebCore/platform/graphics/gpu/SharedGraphicsContext3D.cpp:49
&gt; +        if (m_context &amp;&amp; !m_context-&gt;makeContextCurrent()) {

are you sure that if we lose a context we can&apos;t make it current? i think this may need to be separate conditions

if we do have a non-null context and we can&apos;t make it current, i don&apos;t think that means implies that getGraphicsResetStatusARB() is going to return something other than NO_ERROR - what if we can&apos;t allocate a command buffer at all?

&gt; Source/WebCore/platform/graphics/gpu/SharedGraphicsContext3D.cpp:53
&gt; +                // If we still can&apos;t make it current, just give up.

i think this function might be a little clearer if structured as:

if (m_context &amp;&amp; it&apos;s lost or we can&apos;t make it current)
    m_context.clear();

if (!m_context)
  m_context = new thingy

return m_context.get()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>574318</commentid>
    <comment_count>4</comment_count>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2012-03-08 15:33:56 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 130910 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=130910&amp;action=review
&gt; 
&gt; Would you mind (briefly) describing the semantics in SharedGraphicsContext3D.h? I believe the rules are something like: every caller can hold a ref for as long as they like to the returned context. they should periodically check to see if it&apos;s been lost. if the context has been lost, they should drop their ref and go ask SharedGraphicsContext3D for a new context. they may or may not get one. does that sound about right?

That sounds right.  I&apos;ll put that in a comment.

&gt; &gt; Source/WebCore/ChangeLog:9
&gt; &gt; +        Tested manually by killing the GPU process (no testing infrastructure
&gt; &gt; +        to simulate lost context yet).
&gt; 
&gt; have you seen LayoutTests/platform/chromium/compositing/lost-context-* ?

Unfortunately, it&apos;s compositor specific.  I tried plumbing through a similar loseCanvasContext() call in LayoutTestController, and it turned into kudzu that quickly spread to a ridiculous number of files.  I think the right thing to do something at a lower level, perhaps something like this:
https://chromiumcodereview.appspot.com/9609008/patch/19001/20007.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/gpu/SharedGraphicsContext3D.cpp:49
&gt; &gt; +        if (m_context &amp;&amp; !m_context-&gt;makeContextCurrent()) {
&gt; 
&gt; are you sure that if we lose a context we can&apos;t make it current? i think this may need to be separate conditions

When I did that, things went all crashy-crashy.  Not sure why...  I&apos;ll investigate further.

&gt; if we do have a non-null context and we can&apos;t make it current, i don&apos;t think that means implies that getGraphicsResetStatusARB() is going to return something other than NO_ERROR - what if we can&apos;t allocate a command buffer at all?

I thought GraphicsContext3D::create() would return NULL in that case?

&gt; &gt; Source/WebCore/platform/graphics/gpu/SharedGraphicsContext3D.cpp:53
&gt; &gt; +                // If we still can&apos;t make it current, just give up.
&gt; 
&gt; i think this function might be a little clearer if structured as:
&gt; 
&gt; if (m_context &amp;&amp; it&apos;s lost or we can&apos;t make it current)
&gt;     m_context.clear();
&gt; 
&gt; if (!m_context)
&gt;   m_context = new thingy
&gt; 
&gt; return m_context.get()

Better, but not quite right, since we still need to check if we can make it current the second time.  Let me riff on it..</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>574328</commentid>
    <comment_count>5</comment_count>
      <attachid>130925</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2012-03-08 15:44:38 -0800</bug_when>
    <thetext>Created attachment 130925
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>574330</commentid>
    <comment_count>6</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-03-08 15:46:54 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; &gt; if we do have a non-null context and we can&apos;t make it current, i don&apos;t think that means implies that getGraphicsResetStatusARB() is going to return something other than NO_ERROR - what if we can&apos;t allocate a command buffer at all?
&gt; 
&gt; I thought GraphicsContext3D::create() would return NULL in that case?

The initialization is in two phases.  The first phase tries to establish a renderer&lt;-&gt;GPU IPC channel if it doesn&apos;t exist and returns NULL if this fails or if it doesn&apos;t like something about the attributes.  The second phase of initialization takes place on the first makeContextCurrent() call and it&apos;s what actually creates the GLContext, command buffer, etc.  The second phase also binds you to a particular thread.

GraphicsContext3D::create() -&gt; WebGraphicsContext3DCommandBufferImpl::Initialize()
first makeContextCurrent() Call -&gt; WebGraphicsContext3DCommandBufferImpl::MaybeInitializeGL()


If we can establish a GPU channel, but we can&apos;t actually spin up a command buffer (maybe we&apos;re out of virtual address space to map the command buffer in), then GraphicsContext3D::create will return something non-NULL and the first makeContextCurrent() will return false.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>574335</commentid>
    <comment_count>7</comment_count>
      <attachid>130925</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2012-03-08 15:49:46 -0800</bug_when>
    <thetext>Comment on attachment 130925
Patch

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

&gt; Source/WebCore/platform/graphics/gpu/SharedGraphicsContext3D.h:38
&gt; +    // The caller may ref on this pointer as long as they like.

Whoops, that grammar is weird on.  Fixing on...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>574336</commentid>
    <comment_count>8</comment_count>
      <attachid>130925</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-03-08 15:50:03 -0800</bug_when>
    <thetext>Comment on attachment 130925
Patch

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

R=me but looking at the code I&apos;m pretty sure you gotta flip the makeCurrent and extension query around or it&apos;ll crash. Try inducing a failure in MaybeInitializeGL() to test that theory out

&gt; Source/WebCore/platform/graphics/gpu/SharedGraphicsContext3D.cpp:40
&gt; +        if (m_context &amp;&amp; ((m_context-&gt;getExtensions()-&gt;getGraphicsResetStatusARB() != GraphicsContext3D::NO_ERROR) || !m_context-&gt;makeContextCurrent()))

nit: don&apos;t we have to make the context current before querying the extensions? i think these have to be flipped around. obviously if we can&apos;t make the context current we shouldn&apos;t try to look at its extensions bits either.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>574338</commentid>
    <comment_count>9</comment_count>
      <attachid>130926</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2012-03-08 15:51:23 -0800</bug_when>
    <thetext>Created attachment 130926
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>574341</commentid>
    <comment_count>10</comment_count>
      <attachid>130928</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2012-03-08 15:56:36 -0800</bug_when>
    <thetext>Created attachment 130928
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>574347</commentid>
    <comment_count>11</comment_count>
      <attachid>130928</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-03-08 16:03:07 -0800</bug_when>
    <thetext>Comment on attachment 130928
Patch

R=me. Definitely want to kick the tires a bit manually to flush stuff out - maybe make every Nth context initialization fail in different places and kill the GPU process a whole bunch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>574370</commentid>
    <comment_count>12</comment_count>
      <attachid>130935</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2012-03-08 16:29:38 -0800</bug_when>
    <thetext>Created attachment 130935
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576264</commentid>
    <comment_count>13</comment_count>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2012-03-12 10:47:23 -0700</bug_when>
    <thetext>Further manual testing (by forcing the return of NULL on the 2nd call to SharedGraphicsContext3D::get()) revealed that other parts of the code were not yet ready to handle this case.  In particular, checking for context loss in Canvas2DLayerChromium::drawsContext() was crashing (but sadly, not in Debug, so I&apos;m not sure what&apos;s going on there -- the pointer should still be valid).  I&apos;ve put in the same change as in WebGLLayerChromium:  check for context loss in Canvas2DLayerChromium::paintContentsIfDirty(), and check that flag in Canvas2DLayerChromium::setNeedsDisplayRect().

In order to make things clearer, I&apos;m also going to return an actual PassRefPtr from SharedGraphicsContext3D::get(), to force the caller to evaluate ownership.  This required the patch to get a little bigger, as I audited the bare ptr usage throughout the code:

Canvas2DLayerChromium will own the ref used for canvas 2D.

PlatformContextSkia: removed the bare context ptr and replaced it with a bool, since that&apos;s how it was being used anyway.

AcceleratedDeviceContext will still own a bare ptr, since its lifetime is as long as the Canvas2DLayerChromium (and in fact, I think we can will rework this callback to hold only a C2DLC pointer, instead of GC3D, and perhaps be owned by C2DLC instead, to ensure lifetime -- Justin to follow up).

RateLimiter also holds a bare pointer, so we must ensure we call stopRateLimiter() it when the CLC2D goes away (the same is done in WebGL).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576273</commentid>
    <comment_count>14</comment_count>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2012-03-12 10:53:19 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; This required the patch to get a little bigger, as I audited the bare ptr usage throughout the code:

Note:  one place I wasn&apos;t sure about is the new call WebViewImpl::sharedGraphicsContext3D().  As I understand it, this will only be used to set up a texture for Pepper, so as long as the pointer isn&apos;t stored, a bare ptr is fine.  If it is, we should probably change this to be ref&apos;ed too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576275</commentid>
    <comment_count>15</comment_count>
      <attachid>131350</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2012-03-12 10:56:48 -0700</bug_when>
    <thetext>Created attachment 131350
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576306</commentid>
    <comment_count>16</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-03-12 11:23:38 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (In reply to comment #13)
&gt; &gt; This required the patch to get a little bigger, as I audited the bare ptr usage throughout the code:
&gt; 
&gt; Note:  one place I wasn&apos;t sure about is the new call WebViewImpl::sharedGraphicsContext3D().  As I understand it, this will only be used to set up a texture for Pepper, so as long as the pointer isn&apos;t stored, a bare ptr is fine.

Correct - callers don&apos;t have ownership of this pointer and shouldn&apos;t be storing it.  It only needs to be valid for the callstack.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576514</commentid>
    <comment_count>17</comment_count>
      <attachid>131350</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-03-12 14:21:30 -0700</bug_when>
    <thetext>Comment on attachment 131350
Patch

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

Looks good!

&gt; Source/WebCore/platform/graphics/chromium/cc/CCRenderSurface.cpp:228
&gt; +    return CCRenderSurfaceFilters::apply(m_filters, m_contentsTexture-&gt;textureId(), m_contentRect.size(), SharedGraphicsContext3D::get().get());

get().get() - nice. need some more data().data().data() up in here

&gt; Source/WebCore/platform/graphics/skia/ImageBufferSkia.cpp:113
&gt;      data-&gt;m_platformLayer = Canvas2DLayerChromium::create(context3D, size);

i think i&apos;d find the ownership a bit easier to follow if this was a .release() call, just to make it clear that ownership of the local is being transferred to the Canvas2DLayerChromium and the layer was responsible for holding the context alive. i couldn&apos;t tell when initially looking at this why this function was taking a reference in a local and who was holding the ref after this function returned.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576554</commentid>
    <comment_count>18</comment_count>
      <attachid>131350</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2012-03-12 14:46:31 -0700</bug_when>
    <thetext>Comment on attachment 131350
Patch

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

&gt; Source/WebCore/platform/graphics/skia/ImageBufferSkia.cpp:113
&gt;      data-&gt;m_platformLayer = Canvas2DLayerChromium::create(context3D, size);

Cool, I didn&apos;t know about RefPtr::release()!  Will fix on landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576566</commentid>
    <comment_count>19</comment_count>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2012-03-12 14:52:32 -0700</bug_when>
    <thetext>Committed r110483: &lt;http://trac.webkit.org/changeset/110483&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130892</attachid>
            <date>2012-03-08 13:35:19 -0800</date>
            <delta_ts>2012-03-08 14:59:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80629-20120308163517.patch</filename>
            <type>text/plain</type>
            <size>2112</size>
            <attacher name="Stephen White">senorblanco</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExMDE5NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDEyLTAzLTA4ICBTdGVwaGVu
IFdoaXRlICA8c2Vub3JibGFuY29AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0g
Q2FudmFzIGFjY2VsZXJhdGlvbiBpcyBub3QgcmVzdG9yZWQgYWZ0ZXIgY29udGV4dCBsb3NzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDYyOQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIHRlc3RzIHll
dC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9TaGFyZWRHcmFwaGljc0NvbnRl
eHQzRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRHcmFwaGljc0NvbnRleHQzRDo6Z2V0
KToKKwogMjAxMi0wMy0wOCAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS8xMDk4MTE3Mz4gRGFzaGJvYXJkIHJlZ2lvbnMgc2hvdWxkIG5v
dCBiZSBpbiBkZXZpY2Ugc3BhY2UKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9TaGFyZWRHcmFwaGljc0NvbnRleHQzRC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1NoYXJlZEdyYXBoaWNzQ29udGV4dDNELmNw
cAkocmV2aXNpb24gMTEwMTk1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L1NoYXJlZEdyYXBoaWNzQ29udGV4dDNELmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiAr
MjcsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogCiAjaW5jbHVkZSAiU2hhcmVkR3JhcGhpY3ND
b250ZXh0M0QuaCIKKyNpbmNsdWRlICJFeHRlbnNpb25zM0QuaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCkBAIC0zOSw4ICs0MCwxOCBAQCBHcmFwaGljc0NvbnRleHQzRCogU2hhcmVkR3JhcGhp
Y3NDb250ZXh0CiAgICAgYXR0cmlidXRlcy5jYW5SZWNvdmVyRnJvbUNvbnRleHRMb3NzID0gZmFs
c2U7IC8vIENhbnZhcyBjb250ZXh0cyBjYW4gbm90IGhhbmRsZSBsb3N0IGNvbnRleHRzLgogICAg
IGF0dHJpYnV0ZXMuc2hhcmVSZXNvdXJjZXMgPSB0cnVlOwogICAgIHN0YXRpYyBHcmFwaGljc0Nv
bnRleHQzRCogY29udGV4dCA9IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGUoYXR0cmlidXRlcywg
MCkubGVha1JlZigpOwotICAgIGlmIChjb250ZXh0ICYmICFjb250ZXh0LT5tYWtlQ29udGV4dEN1
cnJlbnQoKSkKLSAgICAgICAgY29udGV4dCA9IDA7CisgICAgaWYgKGNvbnRleHQgJiYgIWNvbnRl
eHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKSB7CisgICAgICAgIC8vIElmIGNvbnRleHQgd2FzIGxv
c3Qgc2luY2UgbGFzdCB0aW1lLCByZS1jcmVhdGUgaXQuCisgICAgICAgIGlmIChjb250ZXh0LT5n
ZXRFeHRlbnNpb25zKCkgJiYgY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5nZXRHcmFwaGljc1Jl
c2V0U3RhdHVzQVJCKCkgIT0gR3JhcGhpY3NDb250ZXh0M0Q6Ok5PX0VSUk9SKSB7CisgICAgICAg
ICAgICBkZWxldGUgY29udGV4dDsKKyAgICAgICAgICAgIGNvbnRleHQgPSBHcmFwaGljc0NvbnRl
eHQzRDo6Y3JlYXRlKGF0dHJpYnV0ZXMsIDApLmxlYWtSZWYoKTsKKyAgICAgICAgICAgIC8vIElm
IHdlIHN0aWxsIGNhbid0IG1ha2UgaXQgY3VycmVudCwganVzdCBnaXZlIHVwLgorICAgICAgICAg
ICAgaWYgKGNvbnRleHQgJiYgIWNvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKSB7CisgICAg
ICAgICAgICAgICAgZGVsZXRlIGNvbnRleHQ7CisgICAgICAgICAgICAgICAgY29udGV4dCA9IDA7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CiAgICAgcmV0dXJuIGNvbnRleHQ7CiB9
CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130910</attachid>
            <date>2012-03-08 14:59:30 -0800</date>
            <delta_ts>2012-03-08 15:44:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80629-20120308175929.patch</filename>
            <type>text/plain</type>
            <size>3149</size>
            <attacher name="Stephen White">senorblanco</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExMDIwOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDEyLTAzLTA4ICBTdGVwaGVu
IFdoaXRlICA8c2Vub3JibGFuY29AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0g
Q2FudmFzIGFjY2VsZXJhdGlvbiBpcyBub3QgcmVzdG9yZWQgYWZ0ZXIgY29udGV4dCBsb3NzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDYyOQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3RlZCBtYW51
YWxseSBieSBraWxsaW5nIHRoZSBHUFUgcHJvY2VzcyAobm8gdGVzdGluZyBpbmZyYXN0cnVjdHVy
ZQorICAgICAgICB0byBzaW11bGF0ZSBsb3N0IGNvbnRleHQgeWV0KS4KKworICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2dwdS9TaGFyZWRHcmFwaGljc0NvbnRleHQzRC5jcHA6CisgICAgICAg
IChTaGFyZWRHcmFwaGljc0NvbnRleHQzREltcGwpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVk
R3JhcGhpY3NDb250ZXh0M0RJbXBsOjpTaGFyZWRHcmFwaGljc0NvbnRleHQzREltcGwpOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhcmVkR3JhcGhpY3NDb250ZXh0M0RJbXBsOjpnZXQpOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRHcmFwaGljc0NvbnRleHQzRDo6
Z2V0KToKKwogMjAxMi0wMy0wOCAgVG9ueSBDaGFuZyAgPHRvbnlAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIGltcGxlbWVudCBmbGV4Ym94IHdyYXAtcmV2ZXJzZQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1NoYXJlZEdyYXBoaWNzQ29udGV4dDNELmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvU2hhcmVkR3Jh
cGhpY3NDb250ZXh0M0QuY3BwCShyZXZpc2lvbiAxMTAxOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvU2hhcmVkR3JhcGhpY3NDb250ZXh0M0QuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNywyMSArMjcsNDUgQEAKICNpbmNsdWRlICJjb25maWcuaCIKIAogI2luY2x1
ZGUgIlNoYXJlZEdyYXBoaWNzQ29udGV4dDNELmgiCisjaW5jbHVkZSAiRXh0ZW5zaW9uczNELmgi
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgU2hhcmVkR3JhcGhpY3NDb250ZXh0M0RJ
bXBsIHsKK3B1YmxpYzoKKyAgICBTaGFyZWRHcmFwaGljc0NvbnRleHQzREltcGwoKSA6IG1fY29u
dGV4dCgwKSB7IH0KKyAgICBHcmFwaGljc0NvbnRleHQzRCogZ2V0KCkKKyAgICB7CisgICAgICAg
IEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJpYnV0ZXM7CisgICAgICAgIGF0dHJp
YnV0ZXMuZGVwdGggPSBmYWxzZTsKKyAgICAgICAgYXR0cmlidXRlcy5zdGVuY2lsID0gdHJ1ZTsK
KyAgICAgICAgYXR0cmlidXRlcy5hbnRpYWxpYXMgPSBmYWxzZTsKKyAgICAgICAgYXR0cmlidXRl
cy5jYW5SZWNvdmVyRnJvbUNvbnRleHRMb3NzID0gZmFsc2U7CisgICAgICAgIGF0dHJpYnV0ZXMu
c2hhcmVSZXNvdXJjZXMgPSB0cnVlOworCisgICAgICAgIGlmICghbV9jb250ZXh0KQorICAgICAg
ICAgICAgbV9jb250ZXh0ID0gR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZShhdHRyaWJ1dGVzLCAw
KTsKKworICAgICAgICBpZiAobV9jb250ZXh0ICYmICFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3Vy
cmVudCgpKSB7CisgICAgICAgICAgICAvLyBJZiBjb250ZXh0IHdhcyBsb3N0IHNpbmNlIGxhc3Qg
dGltZSwgcmUtY3JlYXRlIGl0LgorICAgICAgICAgICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5z
aW9ucygpICYmIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5nZXRHcmFwaGljc1Jlc2V0U3Rh
dHVzQVJCKCkgIT0gR3JhcGhpY3NDb250ZXh0M0Q6Ok5PX0VSUk9SKSB7CisgICAgICAgICAgICAg
ICAgbV9jb250ZXh0ID0gR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZShhdHRyaWJ1dGVzLCAwKTsK
KyAgICAgICAgICAgICAgICAvLyBJZiB3ZSBzdGlsbCBjYW4ndCBtYWtlIGl0IGN1cnJlbnQsIGp1
c3QgZ2l2ZSB1cC4KKyAgICAgICAgICAgICAgICBpZiAobV9jb250ZXh0ICYmICFtX2NvbnRleHQt
Pm1ha2VDb250ZXh0Q3VycmVudCgpKQorICAgICAgICAgICAgICAgICAgICBtX2NvbnRleHQuY2xl
YXIoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBtX2NvbnRl
eHQuZ2V0KCk7CisgICAgfQorcHJpdmF0ZToKKyAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+
IG1fY29udGV4dDsKK307CisKIEdyYXBoaWNzQ29udGV4dDNEKiBTaGFyZWRHcmFwaGljc0NvbnRl
eHQzRDo6Z2V0KCkKIHsKLSAgICBHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRyaWJ1
dGVzOwotICAgIGF0dHJpYnV0ZXMuZGVwdGggPSBmYWxzZTsKLSAgICBhdHRyaWJ1dGVzLnN0ZW5j
aWwgPSB0cnVlOwotICAgIGF0dHJpYnV0ZXMuYW50aWFsaWFzID0gZmFsc2U7Ci0gICAgYXR0cmli
dXRlcy5jYW5SZWNvdmVyRnJvbUNvbnRleHRMb3NzID0gZmFsc2U7IC8vIENhbnZhcyBjb250ZXh0
cyBjYW4gbm90IGhhbmRsZSBsb3N0IGNvbnRleHRzLgotICAgIGF0dHJpYnV0ZXMuc2hhcmVSZXNv
dXJjZXMgPSB0cnVlOwotICAgIHN0YXRpYyBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCA9IEdy
YXBoaWNzQ29udGV4dDNEOjpjcmVhdGUoYXR0cmlidXRlcywgMCkubGVha1JlZigpOwotICAgIGlm
IChjb250ZXh0ICYmICFjb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgY29u
dGV4dCA9IDA7Ci0gICAgcmV0dXJuIGNvbnRleHQ7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChT
aGFyZWRHcmFwaGljc0NvbnRleHQzREltcGwsIGltcGwsICgpKTsKKyAgICByZXR1cm4gaW1wbC5n
ZXQoKTsKIH0KIAogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130925</attachid>
            <date>2012-03-08 15:44:38 -0800</date>
            <delta_ts>2012-03-08 15:51:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80629-20120308184436.patch</filename>
            <type>text/plain</type>
            <size>3753</size>
            <attacher name="Stephen White">senorblanco</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExMDIwOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDEyLTAzLTA4ICBTdGVwaGVu
IFdoaXRlICA8c2Vub3JibGFuY29AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0g
Q2FudmFzIGFjY2VsZXJhdGlvbiBpcyBub3QgcmVzdG9yZWQgYWZ0ZXIgY29udGV4dCBsb3NzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDYyOQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3RlZCBtYW51
YWxseSBieSBraWxsaW5nIHRoZSBHUFUgcHJvY2VzcyAobm8gdGVzdGluZyBpbmZyYXN0cnVjdHVy
ZQorICAgICAgICB0byBzaW11bGF0ZSBsb3N0IGNvbnRleHQgeWV0KS4KKworICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2dwdS9TaGFyZWRHcmFwaGljc0NvbnRleHQzRC5jcHA6CisgICAgICAg
IChTaGFyZWRHcmFwaGljc0NvbnRleHQzREltcGwpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVk
R3JhcGhpY3NDb250ZXh0M0RJbXBsOjpTaGFyZWRHcmFwaGljc0NvbnRleHQzREltcGwpOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhcmVkR3JhcGhpY3NDb250ZXh0M0RJbXBsOjpnZXQpOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRHcmFwaGljc0NvbnRleHQzRDo6
Z2V0KToKKwogMjAxMi0wMy0wOCAgVG9ueSBDaGFuZyAgPHRvbnlAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIGltcGxlbWVudCBmbGV4Ym94IHdyYXAtcmV2ZXJzZQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1NoYXJlZEdyYXBoaWNzQ29udGV4dDNELmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvU2hhcmVkR3Jh
cGhpY3NDb250ZXh0M0QuY3BwCShyZXZpc2lvbiAxMTAxOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvU2hhcmVkR3JhcGhpY3NDb250ZXh0M0QuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNywyMSArMjcsNDIgQEAKICNpbmNsdWRlICJjb25maWcuaCIKIAogI2luY2x1
ZGUgIlNoYXJlZEdyYXBoaWNzQ29udGV4dDNELmgiCisjaW5jbHVkZSAiRXh0ZW5zaW9uczNELmgi
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgU2hhcmVkR3JhcGhpY3NDb250ZXh0M0RJ
bXBsIHsKK3B1YmxpYzoKKyAgICBTaGFyZWRHcmFwaGljc0NvbnRleHQzREltcGwoKSA6IG1fY29u
dGV4dCgwKSB7IH0KKyAgICBHcmFwaGljc0NvbnRleHQzRCogZ2V0KCkKKyAgICB7CisgICAgICAg
IC8vIElmIHdlIGxvc3QgdGhlIGNvbnRleHQsIG9yIGNhbid0IG1ha2UgaXQgY3VycmVudCwgY3Jl
YXRlIGEgbmV3IG9uZS4KKyAgICAgICAgaWYgKG1fY29udGV4dCAmJiAoKG1fY29udGV4dC0+Z2V0
RXh0ZW5zaW9ucygpLT5nZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkgIT0gR3JhcGhpY3NDb250
ZXh0M0Q6Ok5PX0VSUk9SKSB8fCAhbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkpCisg
ICAgICAgICAgICBtX2NvbnRleHQuY2xlYXIoKTsKKworICAgICAgICBpZiAoIW1fY29udGV4dCkg
eworICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cmlidXRlczsK
KyAgICAgICAgICAgIGF0dHJpYnV0ZXMuZGVwdGggPSBmYWxzZTsKKyAgICAgICAgICAgIGF0dHJp
YnV0ZXMuc3RlbmNpbCA9IHRydWU7CisgICAgICAgICAgICBhdHRyaWJ1dGVzLmFudGlhbGlhcyA9
IGZhbHNlOworICAgICAgICAgICAgYXR0cmlidXRlcy5jYW5SZWNvdmVyRnJvbUNvbnRleHRMb3Nz
ID0gZmFsc2U7CisgICAgICAgICAgICBhdHRyaWJ1dGVzLnNoYXJlUmVzb3VyY2VzID0gdHJ1ZTsK
KyAgICAgICAgICAgIG1fY29udGV4dCA9IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGUoYXR0cmli
dXRlcywgMCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAobV9jb250ZXh0ICYmICFtX2NvbnRl
eHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQorICAgICAgICAgICAgbV9jb250ZXh0LmNsZWFyKCk7
CisKKyAgICAgICAgcmV0dXJuIG1fY29udGV4dC5nZXQoKTsKKyAgICB9Citwcml2YXRlOgorICAg
IFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gbV9jb250ZXh0OworfTsKKwogR3JhcGhpY3NDb250
ZXh0M0QqIFNoYXJlZEdyYXBoaWNzQ29udGV4dDNEOjpnZXQoKQogewotICAgIEdyYXBoaWNzQ29u
dGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJpYnV0ZXM7Ci0gICAgYXR0cmlidXRlcy5kZXB0aCA9IGZh
bHNlOwotICAgIGF0dHJpYnV0ZXMuc3RlbmNpbCA9IHRydWU7Ci0gICAgYXR0cmlidXRlcy5hbnRp
YWxpYXMgPSBmYWxzZTsKLSAgICBhdHRyaWJ1dGVzLmNhblJlY292ZXJGcm9tQ29udGV4dExvc3Mg
PSBmYWxzZTsgLy8gQ2FudmFzIGNvbnRleHRzIGNhbiBub3QgaGFuZGxlIGxvc3QgY29udGV4dHMu
Ci0gICAgYXR0cmlidXRlcy5zaGFyZVJlc291cmNlcyA9IHRydWU7Ci0gICAgc3RhdGljIEdyYXBo
aWNzQ29udGV4dDNEKiBjb250ZXh0ID0gR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZShhdHRyaWJ1
dGVzLCAwKS5sZWFrUmVmKCk7Ci0gICAgaWYgKGNvbnRleHQgJiYgIWNvbnRleHQtPm1ha2VDb250
ZXh0Q3VycmVudCgpKQotICAgICAgICBjb250ZXh0ID0gMDsKLSAgICByZXR1cm4gY29udGV4dDsK
KyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFNoYXJlZEdyYXBoaWNzQ29udGV4dDNESW1wbCwgaW1w
bCwgKCkpOworICAgIHJldHVybiBpbXBsLmdldCgpOwogfQogCiB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvU2hhcmVkR3JhcGhpY3NDb250ZXh0M0QuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvU2hhcmVkR3Jh
cGhpY3NDb250ZXh0M0QuaAkocmV2aXNpb24gMTEwMTk1KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L1NoYXJlZEdyYXBoaWNzQ29udGV4dDNELmgJKHdvcmtpbmcgY29w
eSkKQEAgLTMyLDggKzMyLDE0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorCiBjbGFzcyBT
aGFyZWRHcmFwaGljc0NvbnRleHQzRCB7CiBwdWJsaWM6CisgICAgLy8gVGhlIGNhbGxlciBtYXkg
cmVmIG9uIHRoaXMgcG9pbnRlciBhcyBsb25nIGFzIHRoZXkgbGlrZS4KKyAgICAvLyBIb3dldmVy
LCB0aGUgY29udGV4dCBzaG91bGQgYmUgY2hlY2tlZCBwZXJpb2RpY2FsbHkgdG8gZGV0ZXJtaW5l
IGlmIGl0CisgICAgLy8gaGFzIGJlZW4gbG9zdC4gVGhlIGVhc2llc3Qgd2F5IHRvIGRvIHRoYXQg
aXMgdG8gc2ltcGx5IGNhbGwgdGhpcworICAgIC8vIGZ1bmN0aW9uIGFnYWluLiBOb3RlIHRoYXQg
dGhlIHJldHVybiB2YWx1ZSBtYXkgYmUgMCBpZiB0aGUKKyAgICAvLyBHUFUgaXMgdW5hdmFpbGFi
bGUuCiAgICAgc3RhdGljIEdyYXBoaWNzQ29udGV4dDNEKiBnZXQoKTsKIH07CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130926</attachid>
            <date>2012-03-08 15:51:23 -0800</date>
            <delta_ts>2012-03-08 15:56:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80629-20120308185122.patch</filename>
            <type>text/plain</type>
            <size>3763</size>
            <attacher name="Stephen White">senorblanco</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExMDIwOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDEyLTAzLTA4ICBTdGVwaGVu
IFdoaXRlICA8c2Vub3JibGFuY29AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0g
Q2FudmFzIGFjY2VsZXJhdGlvbiBpcyBub3QgcmVzdG9yZWQgYWZ0ZXIgY29udGV4dCBsb3NzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDYyOQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3RlZCBtYW51
YWxseSBieSBraWxsaW5nIHRoZSBHUFUgcHJvY2VzcyAobm8gdGVzdGluZyBpbmZyYXN0cnVjdHVy
ZQorICAgICAgICB0byBzaW11bGF0ZSBsb3N0IGNvbnRleHQgeWV0KS4KKworICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2dwdS9TaGFyZWRHcmFwaGljc0NvbnRleHQzRC5jcHA6CisgICAgICAg
IChTaGFyZWRHcmFwaGljc0NvbnRleHQzREltcGwpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVk
R3JhcGhpY3NDb250ZXh0M0RJbXBsOjpTaGFyZWRHcmFwaGljc0NvbnRleHQzREltcGwpOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhcmVkR3JhcGhpY3NDb250ZXh0M0RJbXBsOjpnZXQpOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRHcmFwaGljc0NvbnRleHQzRDo6
Z2V0KToKKwogMjAxMi0wMy0wOCAgVG9ueSBDaGFuZyAgPHRvbnlAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIGltcGxlbWVudCBmbGV4Ym94IHdyYXAtcmV2ZXJzZQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1NoYXJlZEdyYXBoaWNzQ29udGV4dDNELmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvU2hhcmVkR3Jh
cGhpY3NDb250ZXh0M0QuY3BwCShyZXZpc2lvbiAxMTAxOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvU2hhcmVkR3JhcGhpY3NDb250ZXh0M0QuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNywyMSArMjcsNDIgQEAKICNpbmNsdWRlICJjb25maWcuaCIKIAogI2luY2x1
ZGUgIlNoYXJlZEdyYXBoaWNzQ29udGV4dDNELmgiCisjaW5jbHVkZSAiRXh0ZW5zaW9uczNELmgi
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgU2hhcmVkR3JhcGhpY3NDb250ZXh0M0RJ
bXBsIHsKK3B1YmxpYzoKKyAgICBTaGFyZWRHcmFwaGljc0NvbnRleHQzREltcGwoKSA6IG1fY29u
dGV4dCgwKSB7IH0KKyAgICBHcmFwaGljc0NvbnRleHQzRCogZ2V0KCkKKyAgICB7CisgICAgICAg
IC8vIElmIHdlIGxvc3QgdGhlIGNvbnRleHQsIG9yIGNhbid0IG1ha2UgaXQgY3VycmVudCwgY3Jl
YXRlIGEgbmV3IG9uZS4KKyAgICAgICAgaWYgKG1fY29udGV4dCAmJiAoKG1fY29udGV4dC0+Z2V0
RXh0ZW5zaW9ucygpLT5nZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkgIT0gR3JhcGhpY3NDb250
ZXh0M0Q6Ok5PX0VSUk9SKSB8fCAhbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkpCisg
ICAgICAgICAgICBtX2NvbnRleHQuY2xlYXIoKTsKKworICAgICAgICBpZiAoIW1fY29udGV4dCkg
eworICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cmlidXRlczsK
KyAgICAgICAgICAgIGF0dHJpYnV0ZXMuZGVwdGggPSBmYWxzZTsKKyAgICAgICAgICAgIGF0dHJp
YnV0ZXMuc3RlbmNpbCA9IHRydWU7CisgICAgICAgICAgICBhdHRyaWJ1dGVzLmFudGlhbGlhcyA9
IGZhbHNlOworICAgICAgICAgICAgYXR0cmlidXRlcy5jYW5SZWNvdmVyRnJvbUNvbnRleHRMb3Nz
ID0gZmFsc2U7CisgICAgICAgICAgICBhdHRyaWJ1dGVzLnNoYXJlUmVzb3VyY2VzID0gdHJ1ZTsK
KyAgICAgICAgICAgIG1fY29udGV4dCA9IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGUoYXR0cmli
dXRlcywgMCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAobV9jb250ZXh0ICYmICFtX2NvbnRl
eHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQorICAgICAgICAgICAgbV9jb250ZXh0LmNsZWFyKCk7
CisKKyAgICAgICAgcmV0dXJuIG1fY29udGV4dC5nZXQoKTsKKyAgICB9Citwcml2YXRlOgorICAg
IFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gbV9jb250ZXh0OworfTsKKwogR3JhcGhpY3NDb250
ZXh0M0QqIFNoYXJlZEdyYXBoaWNzQ29udGV4dDNEOjpnZXQoKQogewotICAgIEdyYXBoaWNzQ29u
dGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJpYnV0ZXM7Ci0gICAgYXR0cmlidXRlcy5kZXB0aCA9IGZh
bHNlOwotICAgIGF0dHJpYnV0ZXMuc3RlbmNpbCA9IHRydWU7Ci0gICAgYXR0cmlidXRlcy5hbnRp
YWxpYXMgPSBmYWxzZTsKLSAgICBhdHRyaWJ1dGVzLmNhblJlY292ZXJGcm9tQ29udGV4dExvc3Mg
PSBmYWxzZTsgLy8gQ2FudmFzIGNvbnRleHRzIGNhbiBub3QgaGFuZGxlIGxvc3QgY29udGV4dHMu
Ci0gICAgYXR0cmlidXRlcy5zaGFyZVJlc291cmNlcyA9IHRydWU7Ci0gICAgc3RhdGljIEdyYXBo
aWNzQ29udGV4dDNEKiBjb250ZXh0ID0gR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZShhdHRyaWJ1
dGVzLCAwKS5sZWFrUmVmKCk7Ci0gICAgaWYgKGNvbnRleHQgJiYgIWNvbnRleHQtPm1ha2VDb250
ZXh0Q3VycmVudCgpKQotICAgICAgICBjb250ZXh0ID0gMDsKLSAgICByZXR1cm4gY29udGV4dDsK
KyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFNoYXJlZEdyYXBoaWNzQ29udGV4dDNESW1wbCwgaW1w
bCwgKCkpOworICAgIHJldHVybiBpbXBsLmdldCgpOwogfQogCiB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvU2hhcmVkR3JhcGhpY3NDb250ZXh0M0QuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvU2hhcmVkR3Jh
cGhpY3NDb250ZXh0M0QuaAkocmV2aXNpb24gMTEwMTk1KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L1NoYXJlZEdyYXBoaWNzQ29udGV4dDNELmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM0LDYgKzM0LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU2hhcmVk
R3JhcGhpY3NDb250ZXh0M0QgewogcHVibGljOgorICAgIC8vIFRoZSBjYWxsZXIgbWF5IHJlZiB0
aGlzIHBvaW50ZXIsIGFuZCBoYW5nIG9udG8gaXQgYXMgbG9uZyBhcyB0aGV5IGxpa2UuCisgICAg
Ly8gSG93ZXZlciwgdGhlIGNvbnRleHQgc2hvdWxkIGJlIGNoZWNrZWQgcGVyaW9kaWNhbGx5IHRv
IGRldGVybWluZSBpZiBpdAorICAgIC8vIGhhcyBiZWVuIGxvc3QuIFRoZSBlYXNpZXN0IHdheSB0
byBkbyB0aGF0IGlzIHRvIHNpbXBseSBjYWxsIHRoaXMKKyAgICAvLyBmdW5jdGlvbiBhZ2Fpbi4g
Tm90ZSB0aGF0IHRoZSByZXR1cm4gdmFsdWUgbWF5IGJlIDAgaWYgdGhlCisgICAgLy8gR1BVIGlz
IHVuYXZhaWxhYmxlLgogICAgIHN0YXRpYyBHcmFwaGljc0NvbnRleHQzRCogZ2V0KCk7CiB9Owog
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130928</attachid>
            <date>2012-03-08 15:56:36 -0800</date>
            <delta_ts>2012-03-08 16:29:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80629-20120308185635.patch</filename>
            <type>text/plain</type>
            <size>3763</size>
            <attacher name="Stephen White">senorblanco</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExMDIwOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDEyLTAzLTA4ICBTdGVwaGVu
IFdoaXRlICA8c2Vub3JibGFuY29AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0g
Q2FudmFzIGFjY2VsZXJhdGlvbiBpcyBub3QgcmVzdG9yZWQgYWZ0ZXIgY29udGV4dCBsb3NzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDYyOQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3RlZCBtYW51
YWxseSBieSBraWxsaW5nIHRoZSBHUFUgcHJvY2VzcyAobm8gdGVzdGluZyBpbmZyYXN0cnVjdHVy
ZQorICAgICAgICB0byBzaW11bGF0ZSBsb3N0IGNvbnRleHQgeWV0KS4KKworICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2dwdS9TaGFyZWRHcmFwaGljc0NvbnRleHQzRC5jcHA6CisgICAgICAg
IChTaGFyZWRHcmFwaGljc0NvbnRleHQzREltcGwpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVk
R3JhcGhpY3NDb250ZXh0M0RJbXBsOjpTaGFyZWRHcmFwaGljc0NvbnRleHQzREltcGwpOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhcmVkR3JhcGhpY3NDb250ZXh0M0RJbXBsOjpnZXQpOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRHcmFwaGljc0NvbnRleHQzRDo6
Z2V0KToKKwogMjAxMi0wMy0wOCAgVG9ueSBDaGFuZyAgPHRvbnlAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIGltcGxlbWVudCBmbGV4Ym94IHdyYXAtcmV2ZXJzZQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1NoYXJlZEdyYXBoaWNzQ29udGV4dDNELmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvU2hhcmVkR3Jh
cGhpY3NDb250ZXh0M0QuY3BwCShyZXZpc2lvbiAxMTAxOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvU2hhcmVkR3JhcGhpY3NDb250ZXh0M0QuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNywyMSArMjcsNDIgQEAKICNpbmNsdWRlICJjb25maWcuaCIKIAogI2luY2x1
ZGUgIlNoYXJlZEdyYXBoaWNzQ29udGV4dDNELmgiCisjaW5jbHVkZSAiRXh0ZW5zaW9uczNELmgi
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgU2hhcmVkR3JhcGhpY3NDb250ZXh0M0RJ
bXBsIHsKK3B1YmxpYzoKKyAgICBTaGFyZWRHcmFwaGljc0NvbnRleHQzREltcGwoKSA6IG1fY29u
dGV4dCgwKSB7IH0KKyAgICBHcmFwaGljc0NvbnRleHQzRCogZ2V0KCkKKyAgICB7CisgICAgICAg
IC8vIElmIHdlIGxvc3QgdGhlIGNvbnRleHQsIG9yIGNhbid0IG1ha2UgaXQgY3VycmVudCwgY3Jl
YXRlIGEgbmV3IG9uZS4KKyAgICAgICAgaWYgKG1fY29udGV4dCAmJiAoIW1fY29udGV4dC0+bWFr
ZUNvbnRleHRDdXJyZW50KCkgfHwgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5nZXRHcmFw
aGljc1Jlc2V0U3RhdHVzQVJCKCkgIT0gR3JhcGhpY3NDb250ZXh0M0Q6Ok5PX0VSUk9SKSkpCisg
ICAgICAgICAgICBtX2NvbnRleHQuY2xlYXIoKTsKKworICAgICAgICBpZiAoIW1fY29udGV4dCkg
eworICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cmlidXRlczsK
KyAgICAgICAgICAgIGF0dHJpYnV0ZXMuZGVwdGggPSBmYWxzZTsKKyAgICAgICAgICAgIGF0dHJp
YnV0ZXMuc3RlbmNpbCA9IHRydWU7CisgICAgICAgICAgICBhdHRyaWJ1dGVzLmFudGlhbGlhcyA9
IGZhbHNlOworICAgICAgICAgICAgYXR0cmlidXRlcy5jYW5SZWNvdmVyRnJvbUNvbnRleHRMb3Nz
ID0gZmFsc2U7CisgICAgICAgICAgICBhdHRyaWJ1dGVzLnNoYXJlUmVzb3VyY2VzID0gdHJ1ZTsK
KyAgICAgICAgICAgIG1fY29udGV4dCA9IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGUoYXR0cmli
dXRlcywgMCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAobV9jb250ZXh0ICYmICFtX2NvbnRl
eHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQorICAgICAgICAgICAgbV9jb250ZXh0LmNsZWFyKCk7
CisKKyAgICAgICAgcmV0dXJuIG1fY29udGV4dC5nZXQoKTsKKyAgICB9Citwcml2YXRlOgorICAg
IFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gbV9jb250ZXh0OworfTsKKwogR3JhcGhpY3NDb250
ZXh0M0QqIFNoYXJlZEdyYXBoaWNzQ29udGV4dDNEOjpnZXQoKQogewotICAgIEdyYXBoaWNzQ29u
dGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJpYnV0ZXM7Ci0gICAgYXR0cmlidXRlcy5kZXB0aCA9IGZh
bHNlOwotICAgIGF0dHJpYnV0ZXMuc3RlbmNpbCA9IHRydWU7Ci0gICAgYXR0cmlidXRlcy5hbnRp
YWxpYXMgPSBmYWxzZTsKLSAgICBhdHRyaWJ1dGVzLmNhblJlY292ZXJGcm9tQ29udGV4dExvc3Mg
PSBmYWxzZTsgLy8gQ2FudmFzIGNvbnRleHRzIGNhbiBub3QgaGFuZGxlIGxvc3QgY29udGV4dHMu
Ci0gICAgYXR0cmlidXRlcy5zaGFyZVJlc291cmNlcyA9IHRydWU7Ci0gICAgc3RhdGljIEdyYXBo
aWNzQ29udGV4dDNEKiBjb250ZXh0ID0gR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZShhdHRyaWJ1
dGVzLCAwKS5sZWFrUmVmKCk7Ci0gICAgaWYgKGNvbnRleHQgJiYgIWNvbnRleHQtPm1ha2VDb250
ZXh0Q3VycmVudCgpKQotICAgICAgICBjb250ZXh0ID0gMDsKLSAgICByZXR1cm4gY29udGV4dDsK
KyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFNoYXJlZEdyYXBoaWNzQ29udGV4dDNESW1wbCwgaW1w
bCwgKCkpOworICAgIHJldHVybiBpbXBsLmdldCgpOwogfQogCiB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvU2hhcmVkR3JhcGhpY3NDb250ZXh0M0QuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvU2hhcmVkR3Jh
cGhpY3NDb250ZXh0M0QuaAkocmV2aXNpb24gMTEwMTk1KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L1NoYXJlZEdyYXBoaWNzQ29udGV4dDNELmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM0LDYgKzM0LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU2hhcmVk
R3JhcGhpY3NDb250ZXh0M0QgewogcHVibGljOgorICAgIC8vIFRoZSBjYWxsZXIgbWF5IHJlZiB0
aGlzIHBvaW50ZXIsIGFuZCBoYW5nIG9udG8gaXQgYXMgbG9uZyBhcyB0aGV5IGxpa2UuCisgICAg
Ly8gSG93ZXZlciwgdGhlIGNvbnRleHQgc2hvdWxkIGJlIGNoZWNrZWQgcGVyaW9kaWNhbGx5IHRv
IGRldGVybWluZSBpZiBpdAorICAgIC8vIGhhcyBiZWVuIGxvc3QuIFRoZSBlYXNpZXN0IHdheSB0
byBkbyB0aGF0IGlzIHRvIHNpbXBseSBjYWxsIHRoaXMKKyAgICAvLyBmdW5jdGlvbiBhZ2Fpbi4g
Tm90ZSB0aGF0IHRoZSByZXR1cm4gdmFsdWUgbWF5IGJlIDAgaWYgdGhlCisgICAgLy8gR1BVIGlz
IHVuYXZhaWxhYmxlLgogICAgIHN0YXRpYyBHcmFwaGljc0NvbnRleHQzRCogZ2V0KCk7CiB9Owog
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130935</attachid>
            <date>2012-03-08 16:29:38 -0800</date>
            <delta_ts>2012-03-12 10:56:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80629-20120308192937.patch</filename>
            <type>text/plain</type>
            <size>3911</size>
            <attacher name="Stephen White">senorblanco</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExMDIyOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDEyLTAzLTA4ICBTdGVwaGVu
IFdoaXRlICA8c2Vub3JibGFuY29AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0g
Q2FudmFzIGFjY2VsZXJhdGlvbiBpcyBub3QgcmVzdG9yZWQgYWZ0ZXIgY29udGV4dCBsb3NzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDYyOQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3RlZCBtYW51
YWxseSBieSBraWxsaW5nIHRoZSBHUFUgcHJvY2VzcyAobm8gdGVzdGluZyBpbmZyYXN0cnVjdHVy
ZQorICAgICAgICB0byBzaW11bGF0ZSBsb3N0IGNvbnRleHQgeWV0KS4KKworICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2dwdS9TaGFyZWRHcmFwaGljc0NvbnRleHQzRC5jcHA6CisgICAgICAg
IChTaGFyZWRHcmFwaGljc0NvbnRleHQzREltcGwpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVk
R3JhcGhpY3NDb250ZXh0M0RJbXBsOjpTaGFyZWRHcmFwaGljc0NvbnRleHQzREltcGwpOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhcmVkR3JhcGhpY3NDb250ZXh0M0RJbXBsOjpnZXQpOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRHcmFwaGljc0NvbnRleHQzRDo6
Z2V0KToKKwogMjAxMi0wMy0wOCAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFVzZSBhbiBleHBsaWNpdCBhdHRyaWJ1dGUgdG8gc2lnbmFsIHRoYXQgYSBj
b250ZXh0IHByZWZlcnMgdG8gdXNlIGEgZGlzY3JldGUgR1BVCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvU2hhcmVkR3JhcGhpY3NDb250ZXh0M0QuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9TaGFyZWRHcmFw
aGljc0NvbnRleHQzRC5jcHAJKHJldmlzaW9uIDExMDIyOSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dwdS9TaGFyZWRHcmFwaGljc0NvbnRleHQzRC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI3LDIyICsyNyw0MyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogCiAjaW5jbHVk
ZSAiU2hhcmVkR3JhcGhpY3NDb250ZXh0M0QuaCIKKyNpbmNsdWRlICJFeHRlbnNpb25zM0QuaCIK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBTaGFyZWRHcmFwaGljc0NvbnRleHQzRElt
cGwgeworcHVibGljOgorICAgIFNoYXJlZEdyYXBoaWNzQ29udGV4dDNESW1wbCgpIDogbV9jb250
ZXh0KDApIHsgfQorICAgIEdyYXBoaWNzQ29udGV4dDNEKiBnZXQoKQorICAgIHsKKyAgICAgICAg
Ly8gSWYgd2UgbG9zdCB0aGUgY29udGV4dCwgb3IgY2FuJ3QgbWFrZSBpdCBjdXJyZW50LCBjcmVh
dGUgYSBuZXcgb25lLgorICAgICAgICBpZiAobV9jb250ZXh0ICYmICghbV9jb250ZXh0LT5tYWtl
Q29udGV4dEN1cnJlbnQoKSB8fCAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPmdldEdyYXBo
aWNzUmVzZXRTdGF0dXNBUkIoKSAhPSBHcmFwaGljc0NvbnRleHQzRDo6Tk9fRVJST1IpKSkKKyAg
ICAgICAgICAgIG1fY29udGV4dC5jbGVhcigpOworCisgICAgICAgIGlmICghbV9jb250ZXh0KSB7
CisgICAgICAgICAgICBHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRyaWJ1dGVzOwor
ICAgICAgICAgICAgYXR0cmlidXRlcy5kZXB0aCA9IGZhbHNlOworICAgICAgICAgICAgYXR0cmli
dXRlcy5zdGVuY2lsID0gdHJ1ZTsKKyAgICAgICAgICAgIGF0dHJpYnV0ZXMuYW50aWFsaWFzID0g
ZmFsc2U7CisgICAgICAgICAgICBhdHRyaWJ1dGVzLmNhblJlY292ZXJGcm9tQ29udGV4dExvc3Mg
PSBmYWxzZTsKKyAgICAgICAgICAgIGF0dHJpYnV0ZXMuc2hhcmVSZXNvdXJjZXMgPSB0cnVlOwor
ICAgICAgICAgICAgYXR0cmlidXRlcy5wcmVmZXJEaXNjcmV0ZUdQVSA9IHRydWU7CisgICAgICAg
ICAgICBtX2NvbnRleHQgPSBHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlKGF0dHJpYnV0ZXMsIDAp
OworICAgICAgICB9CisKKyAgICAgICAgaWYgKG1fY29udGV4dCAmJiAhbV9jb250ZXh0LT5tYWtl
Q29udGV4dEN1cnJlbnQoKSkKKyAgICAgICAgICAgIG1fY29udGV4dC5jbGVhcigpOworCisgICAg
ICAgIHJldHVybiBtX2NvbnRleHQuZ2V0KCk7CisgICAgfQorcHJpdmF0ZToKKyAgICBSZWZQdHI8
R3JhcGhpY3NDb250ZXh0M0Q+IG1fY29udGV4dDsKK307CisKIEdyYXBoaWNzQ29udGV4dDNEKiBT
aGFyZWRHcmFwaGljc0NvbnRleHQzRDo6Z2V0KCkKIHsKLSAgICBHcmFwaGljc0NvbnRleHQzRDo6
QXR0cmlidXRlcyBhdHRyaWJ1dGVzOwotICAgIGF0dHJpYnV0ZXMuZGVwdGggPSBmYWxzZTsKLSAg
ICBhdHRyaWJ1dGVzLnN0ZW5jaWwgPSB0cnVlOwotICAgIGF0dHJpYnV0ZXMuYW50aWFsaWFzID0g
ZmFsc2U7Ci0gICAgYXR0cmlidXRlcy5jYW5SZWNvdmVyRnJvbUNvbnRleHRMb3NzID0gZmFsc2U7
IC8vIENhbnZhcyBjb250ZXh0cyBjYW4gbm90IGhhbmRsZSBsb3N0IGNvbnRleHRzLgotICAgIGF0
dHJpYnV0ZXMuc2hhcmVSZXNvdXJjZXMgPSB0cnVlOwotICAgIGF0dHJpYnV0ZXMucHJlZmVyRGlz
Y3JldGVHUFUgPSB0cnVlOwotICAgIHN0YXRpYyBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCA9
IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGUoYXR0cmlidXRlcywgMCkubGVha1JlZigpOwotICAg
IGlmIChjb250ZXh0ICYmICFjb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAg
Y29udGV4dCA9IDA7Ci0gICAgcmV0dXJuIGNvbnRleHQ7CisgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChTaGFyZWRHcmFwaGljc0NvbnRleHQzREltcGwsIGltcGwsICgpKTsKKyAgICByZXR1cm4gaW1w
bC5nZXQoKTsKIH0KIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L1NoYXJlZEdyYXBoaWNzQ29udGV4dDNELmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1NoYXJlZEdyYXBoaWNzQ29udGV4dDNELmgJKHJldmlz
aW9uIDExMDIyOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9TaGFy
ZWRHcmFwaGljc0NvbnRleHQzRC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCwxMSBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNoYXJlZEdyYXBoaWNzQ29udGV4dDNEIHsKIHB1
YmxpYzoKKyAgICAvLyBUaGUgY2FsbGVyIG1heSByZWYgdGhpcyBwb2ludGVyLCBhbmQgaGFuZyBv
bnRvIGl0IGFzIGxvbmcgYXMgdGhleSBsaWtlLgorICAgIC8vIEhvd2V2ZXIsIHRoZSBjb250ZXh0
IHNob3VsZCBiZSBjaGVja2VkIHBlcmlvZGljYWxseSB0byBkZXRlcm1pbmUgaWYgaXQKKyAgICAv
LyBoYXMgYmVlbiBsb3N0LiBUaGUgZWFzaWVzdCB3YXkgdG8gZG8gdGhhdCBpcyB0byBzaW1wbHkg
Y2FsbCB0aGlzCisgICAgLy8gZnVuY3Rpb24gYWdhaW4uIE5vdGUgdGhhdCB0aGUgcmV0dXJuIHZh
bHVlIG1heSBiZSAwIGlmIHRoZQorICAgIC8vIEdQVSBpcyB1bmF2YWlsYWJsZS4KICAgICBzdGF0
aWMgR3JhcGhpY3NDb250ZXh0M0QqIGdldCgpOwogfTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131350</attachid>
            <date>2012-03-12 10:56:48 -0700</date>
            <delta_ts>2012-03-12 14:46:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80629-20120312135647.patch</filename>
            <type>text/plain</type>
            <size>14719</size>
            <attacher name="Stephen White">senorblanco</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExMDQ0MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQyIEBACisyMDEyLTAzLTEyICBTdGVwaGVu
IFdoaXRlICA8c2Vub3JibGFuY29AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0g
UmVzdG9yZSBjYW52YXMyRCBhY2NlbGVyYXRpb24gYWZ0ZXIgY29udGV4dCBsb3NzLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODA2MjkKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0
aW5nIGNhbnZhcyB0ZXN0cywgYW5kIG1hbnVhbCB0ZXN0aW5nIChraWxsaW5nIHRoZSBHUFUKKyAg
ICAgICAgcHJvY2VzcykuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9D
YW52YXMyRExheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzMkRMYXll
ckNocm9taXVtOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzMkRMYXllckNocm9t
aXVtOjpDYW52YXMyRExheWVyQ2hyb21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzMkRM
YXllckNocm9taXVtOjpzZXROZWVkc0Rpc3BsYXlSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNh
bnZhczJETGF5ZXJDaHJvbWl1bTo6ZHJhd3NDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNh
bnZhczJETGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50c0lmRGlydHkpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5oOgorICAgICAg
ICAoQ2FudmFzMkRMYXllckNocm9taXVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZW5k
ZXJTdXJmYWNlOjphcHBseUZpbHRlcnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dw
dS9TaGFyZWRHcmFwaGljc0NvbnRleHQzRC5jcHA6CisgICAgICAgIChTaGFyZWRHcmFwaGljc0Nv
bnRleHQzREltcGwpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkR3JhcGhpY3NDb250ZXh0M0RJ
bXBsOjpTaGFyZWRHcmFwaGljc0NvbnRleHQzREltcGwpOgorICAgICAgICAoV2ViQ29yZTo6U2hh
cmVkR3JhcGhpY3NDb250ZXh0M0RJbXBsOjpnZXQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChXZWJDb3JlOjpTaGFyZWRHcmFwaGljc0NvbnRleHQzRDo6Z2V0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9ncHUvU2hhcmVkR3JhcGhpY3NDb250ZXh0M0QuaDoKKyAgICAgICAg
KFNoYXJlZEdyYXBoaWNzQ29udGV4dDNEKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9z
a2lhL0ltYWdlQnVmZmVyU2tpYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVBY2NlbGVy
YXRlZENhbnZhcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9QbGF0Zm9ybUNv
bnRleHRTa2lhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ29udGV4dFNraWE6OlBs
YXRmb3JtQ29udGV4dFNraWEpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvc2tpYS9QbGF0Zm9ybUNvbnRleHRTa2lhLmg6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ29udGV4dFNraWE6OmlzQWNjZWxlcmF0ZWQp
OgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1Db250ZXh0U2tpYTo6c2V0QWNjZWxlcmF0ZWQp
OgorICAgICAgICAoUGxhdGZvcm1Db250ZXh0U2tpYSk6CisKIDIwMTItMDMtMTIgIFBhdmVsIEZl
bGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3Rvcjog
cmVjb2duaXplIEZsb2F0KkFycmF5IGFuZCBJbnQqQXJyYXkgYXMgYXJyYXlzLgpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9t
aXVtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uY3BwCShyZXZpc2lvbiAxMTA0NDIpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hy
b21pdW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSwxNCArNDUsMTUgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1QYXNzUmVmUHRyPENhbnZhczJETGF5ZXJDaHJvbWl1bT4gQ2FudmFzMkRM
YXllckNocm9taXVtOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIGNvbnN0IElu
dFNpemUmIHNpemUpCitQYXNzUmVmUHRyPENhbnZhczJETGF5ZXJDaHJvbWl1bT4gQ2FudmFzMkRM
YXllckNocm9taXVtOjpjcmVhdGUoUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4
dCwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENhbnZh
czJETGF5ZXJDaHJvbWl1bShjb250ZXh0LCBzaXplKSk7CiB9CiAKLUNhbnZhczJETGF5ZXJDaHJv
bWl1bTo6Q2FudmFzMkRMYXllckNocm9taXVtKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBj
b25zdCBJbnRTaXplJiBzaXplKQorQ2FudmFzMkRMYXllckNocm9taXVtOjpDYW52YXMyRExheWVy
Q2hyb21pdW0oUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dCwgY29uc3QgSW50
U2l6ZSYgc2l6ZSkKICAgICA6IENhbnZhc0xheWVyQ2hyb21pdW0oKQogICAgICwgbV9jb250ZXh0
KGNvbnRleHQpCisgICAgLCBtX2NvbnRleHRMb3N0KGZhbHNlKQogICAgICwgbV9zaXplKHNpemUp
CiAgICAgLCBtX2JhY2tUZXh0dXJlSWQoMCkKICAgICAsIG1fZmJvKDApCkBAIC02Nyw2ICs2OCw4
IEBAIENhbnZhczJETGF5ZXJDaHJvbWl1bTo6fkNhbnZhczJETGF5ZXJDaHIKIHsKICAgICBpZiAo
bV91c2VEb3VibGVCdWZmZXJpbmcgJiYgbV9mYm8pCiAgICAgICAgR0xDKG1fY29udGV4dCwgbV9j
b250ZXh0LT5kZWxldGVGcmFtZWJ1ZmZlcihtX2ZibykpOworICAgIGlmIChtX2NvbnRleHQgJiYg
bGF5ZXJUcmVlSG9zdCgpKQorICAgICAgICBsYXllclRyZWVIb3N0KCktPnN0b3BSYXRlTGltaXRl
cihtX2NvbnRleHQuZ2V0KCkpOwogfQogCiB2b2lkIENhbnZhczJETGF5ZXJDaHJvbWl1bTo6c2V0
VGV4dHVyZUlkKHVuc2lnbmVkIHRleHR1cmVJZCkKQEAgLTgwLDEzICs4MywxMyBAQCB2b2lkIENh
bnZhczJETGF5ZXJDaHJvbWl1bTo6c2V0TmVlZHNEaXNwCiAgICAgTGF5ZXJDaHJvbWl1bTo6c2V0
TmVlZHNEaXNwbGF5UmVjdChkaXJ0eVJlY3QpOwogCiAgICAgaWYgKGxheWVyVHJlZUhvc3QoKSkK
LSAgICAgICAgbGF5ZXJUcmVlSG9zdCgpLT5zdGFydFJhdGVMaW1pdGVyKG1fY29udGV4dCk7Cisg
ICAgICAgIGxheWVyVHJlZUhvc3QoKS0+c3RhcnRSYXRlTGltaXRlcihtX2NvbnRleHQuZ2V0KCkp
OwogfQogCiBib29sIENhbnZhczJETGF5ZXJDaHJvbWl1bTo6ZHJhd3NDb250ZW50KCkgY29uc3QK
IHsKICAgICByZXR1cm4gTGF5ZXJDaHJvbWl1bTo6ZHJhd3NDb250ZW50KCkgJiYgbV9iYWNrVGV4
dHVyZUlkICYmICFtX3NpemUuaXNFbXB0eSgpCi0gICAgICAgICYmIG1fY29udGV4dCAmJiAobV9j
b250ZXh0LT5nZXRFeHRlbnNpb25zKCktPmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKSA9PSBH
cmFwaGljc0NvbnRleHQzRDo6Tk9fRVJST1IpOworICAgICAgICAmJiAhbV9jb250ZXh0TG9zdDsK
IH0KIAogdm9pZCBDYW52YXMyRExheWVyQ2hyb21pdW06OnNldENhbnZhcyhTa0NhbnZhcyogY2Fu
dmFzKQpAQCAtMTExLDYgKzExNCwxMCBAQCB2b2lkIENhbnZhczJETGF5ZXJDaHJvbWl1bTo6cGFp
bnRDb250ZW50CiAgICAgYm9vbCBzdWNjZXNzID0gbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJl
bnQoKTsKICAgICBBU1NFUlRfVU5VU0VEKHN1Y2Nlc3MsIHN1Y2Nlc3MpOwogCisgICAgbV9jb250
ZXh0TG9zdCA9IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5nZXRHcmFwaGljc1Jlc2V0U3Rh
dHVzQVJCKCkgIT0gR3JhcGhpY3NDb250ZXh0M0Q6Ok5PX0VSUk9SOworICAgIGlmIChtX2NvbnRl
eHRMb3N0KQorICAgICAgICByZXR1cm47CisKICAgICBpZiAobV9jYW52YXMpIHsKICAgICAgICAg
VFJBQ0VfRVZFTlQoIlNrRGVmZXJyZWRDYW52YXM6OmZsdXNoIiwgbV9jYW52YXMsIDApOwogICAg
ICAgICBtX2NhbnZhcy0+Zmx1c2goKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJv
bWl1bS5oCShyZXZpc2lvbiAxMTA0NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uaAkod29ya2luZyBjb3B5KQpAQCAt
NDcsNyArNDcsNyBAQCBjbGFzcyBSZWdpb247CiAvLyBBIGxheWVyIGNvbnRhaW5pbmcgYW4gYWNj
ZWxlcmF0ZWQgMmQgY2FudmFzCiBjbGFzcyBDYW52YXMyRExheWVyQ2hyb21pdW0gOiBwdWJsaWMg
Q2FudmFzTGF5ZXJDaHJvbWl1bSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8Q2Fu
dmFzMkRMYXllckNocm9taXVtPiBjcmVhdGUoR3JhcGhpY3NDb250ZXh0M0QqLCBjb25zdCBJbnRT
aXplJik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8Q2FudmFzMkRMYXllckNocm9taXVtPiBjcmVh
dGUoUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4sIGNvbnN0IEludFNpemUmKTsKICAgICB2
aXJ0dWFsIH5DYW52YXMyRExheWVyQ2hyb21pdW0oKTsKIAogICAgIHZvaWQgc2V0VGV4dHVyZUlk
KHVuc2lnbmVkKTsKQEAgLTY1LDEyICs2NSwxMyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDYW52
YXMoU2tDYW52YXMqKTsKIAogcHJpdmF0ZToKLSAgICBDYW52YXMyRExheWVyQ2hyb21pdW0oR3Jh
cGhpY3NDb250ZXh0M0QqLCBjb25zdCBJbnRTaXplJik7CisgICAgQ2FudmFzMkRMYXllckNocm9t
aXVtKFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+LCBjb25zdCBJbnRTaXplJik7CiAKICAg
ICBmcmllbmQgY2xhc3MgQ2FudmFzMkRMYXllckNocm9taXVtVGVzdDsKICAgICB2b2lkIHNldFRl
eHR1cmVNYW5hZ2VyKFRleHR1cmVNYW5hZ2VyKik7CiAKLSAgICBHcmFwaGljc0NvbnRleHQzRCog
bV9jb250ZXh0OworICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gbV9jb250ZXh0OworICAg
IGJvb2wgbV9jb250ZXh0TG9zdDsKICAgICBJbnRTaXplIG1fc2l6ZTsKICAgICB1bnNpZ25lZCBt
X2JhY2tUZXh0dXJlSWQ7CiAgICAgUGxhdGZvcm0zRE9iamVjdCBtX2ZibzsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmNwcAkocmV2aXNpb24gMTEwNDQyKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjI1LDcgKzIyNSw3IEBAIFNrQml0bWFwIENDUmVuZGVyU3VyZmFj
ZTo6YXBwbHlGaWx0ZXJzKEwKICAgICAgICAgcmV0dXJuIFNrQml0bWFwKCk7CiAKICAgICBsYXll
clJlbmRlcmVyLT5jb250ZXh0KCktPmZsdXNoKCk7Ci0gICAgcmV0dXJuIENDUmVuZGVyU3VyZmFj
ZUZpbHRlcnM6OmFwcGx5KG1fZmlsdGVycywgbV9jb250ZW50c1RleHR1cmUtPnRleHR1cmVJZCgp
LCBtX2NvbnRlbnRSZWN0LnNpemUoKSwgU2hhcmVkR3JhcGhpY3NDb250ZXh0M0Q6OmdldCgpKTsK
KyAgICByZXR1cm4gQ0NSZW5kZXJTdXJmYWNlRmlsdGVyczo6YXBwbHkobV9maWx0ZXJzLCBtX2Nv
bnRlbnRzVGV4dHVyZS0+dGV4dHVyZUlkKCksIG1fY29udGVudFJlY3Quc2l6ZSgpLCBTaGFyZWRH
cmFwaGljc0NvbnRleHQzRDo6Z2V0KCkuZ2V0KCkpOwogfQogCiBTdHJpbmcgQ0NSZW5kZXJTdXJm
YWNlOjpuYW1lKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9TaGFyZWRHcmFwaGljc0NvbnRleHQzRC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1NoYXJlZEdyYXBoaWNzQ29udGV4dDNELmNwcAko
cmV2aXNpb24gMTEwNDQyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L1NoYXJlZEdyYXBoaWNzQ29udGV4dDNELmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsMjIgKzI3
LDQzIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKICNpbmNsdWRlICJTaGFyZWRHcmFwaGljc0Nv
bnRleHQzRC5oIgorI2luY2x1ZGUgIkV4dGVuc2lvbnMzRC5oIgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLUdyYXBoaWNzQ29udGV4dDNEKiBTaGFyZWRHcmFwaGljc0NvbnRleHQzRDo6Z2V0KCkK
K2NsYXNzIFNoYXJlZEdyYXBoaWNzQ29udGV4dDNESW1wbCB7CitwdWJsaWM6CisgICAgU2hhcmVk
R3JhcGhpY3NDb250ZXh0M0RJbXBsKCkgOiBtX2NvbnRleHQoMCkgeyB9CisgICAgUGFzc1JlZlB0
cjxHcmFwaGljc0NvbnRleHQzRD4gZ2V0KCkKKyAgICB7CisgICAgICAgIC8vIElmIHdlIGxvc3Qg
dGhlIGNvbnRleHQsIG9yIGNhbid0IG1ha2UgaXQgY3VycmVudCwgY3JlYXRlIGEgbmV3IG9uZS4K
KyAgICAgICAgaWYgKG1fY29udGV4dCAmJiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50
KCkgfHwgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5nZXRHcmFwaGljc1Jlc2V0U3RhdHVz
QVJCKCkgIT0gR3JhcGhpY3NDb250ZXh0M0Q6Ok5PX0VSUk9SKSkpCisgICAgICAgICAgICBtX2Nv
bnRleHQuY2xlYXIoKTsKKworICAgICAgICBpZiAoIW1fY29udGV4dCkgeworICAgICAgICAgICAg
R3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cmlidXRlczsKKyAgICAgICAgICAgIGF0
dHJpYnV0ZXMuZGVwdGggPSBmYWxzZTsKKyAgICAgICAgICAgIGF0dHJpYnV0ZXMuc3RlbmNpbCA9
IHRydWU7CisgICAgICAgICAgICBhdHRyaWJ1dGVzLmFudGlhbGlhcyA9IGZhbHNlOworICAgICAg
ICAgICAgYXR0cmlidXRlcy5jYW5SZWNvdmVyRnJvbUNvbnRleHRMb3NzID0gZmFsc2U7CisgICAg
ICAgICAgICBhdHRyaWJ1dGVzLnNoYXJlUmVzb3VyY2VzID0gdHJ1ZTsKKyAgICAgICAgICAgIGF0
dHJpYnV0ZXMucHJlZmVyRGlzY3JldGVHUFUgPSB0cnVlOworICAgICAgICAgICAgbV9jb250ZXh0
ID0gR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZShhdHRyaWJ1dGVzLCAwKTsKKyAgICAgICAgfQor
CisgICAgICAgIGlmIChtX2NvbnRleHQgJiYgIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50
KCkpCisgICAgICAgICAgICBtX2NvbnRleHQuY2xlYXIoKTsKKworICAgICAgICByZXR1cm4gbV9j
b250ZXh0OworICAgIH0KK3ByaXZhdGU6CisgICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBt
X2NvbnRleHQ7Cit9OworCitQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBTaGFyZWRHcmFw
aGljc0NvbnRleHQzRDo6Z2V0KCkKIHsKLSAgICBHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRl
cyBhdHRyaWJ1dGVzOwotICAgIGF0dHJpYnV0ZXMuZGVwdGggPSBmYWxzZTsKLSAgICBhdHRyaWJ1
dGVzLnN0ZW5jaWwgPSB0cnVlOwotICAgIGF0dHJpYnV0ZXMuYW50aWFsaWFzID0gZmFsc2U7Ci0g
ICAgYXR0cmlidXRlcy5jYW5SZWNvdmVyRnJvbUNvbnRleHRMb3NzID0gZmFsc2U7IC8vIENhbnZh
cyBjb250ZXh0cyBjYW4gbm90IGhhbmRsZSBsb3N0IGNvbnRleHRzLgotICAgIGF0dHJpYnV0ZXMu
c2hhcmVSZXNvdXJjZXMgPSB0cnVlOwotICAgIGF0dHJpYnV0ZXMucHJlZmVyRGlzY3JldGVHUFUg
PSB0cnVlOwotICAgIHN0YXRpYyBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCA9IEdyYXBoaWNz
Q29udGV4dDNEOjpjcmVhdGUoYXR0cmlidXRlcywgMCkubGVha1JlZigpOwotICAgIGlmIChjb250
ZXh0ICYmICFjb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgY29udGV4dCA9
IDA7Ci0gICAgcmV0dXJuIGNvbnRleHQ7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTaGFyZWRH
cmFwaGljc0NvbnRleHQzREltcGwsIGltcGwsICgpKTsKKyAgICByZXR1cm4gaW1wbC5nZXQoKTsK
IH0KIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1NoYXJl
ZEdyYXBoaWNzQ29udGV4dDNELmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L1NoYXJlZEdyYXBoaWNzQ29udGV4dDNELmgJKHJldmlzaW9uIDExMDQ0
MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9TaGFyZWRHcmFwaGlj
c0NvbnRleHQzRC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCwxMiBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIFNoYXJlZEdyYXBoaWNzQ29udGV4dDNEIHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgR3JhcGhpY3NDb250ZXh0M0QqIGdldCgpOworICAgIC8vIFRoZSBjYWxsZXIgbWF5
IHJlZiB0aGlzIHBvaW50ZXIsIGFuZCBoYW5nIG9udG8gaXQgYXMgbG9uZyBhcyB0aGV5IGxpa2Uu
CisgICAgLy8gSG93ZXZlciwgdGhlIGNvbnRleHQgc2hvdWxkIGJlIGNoZWNrZWQgcGVyaW9kaWNh
bGx5IHRvIGRldGVybWluZSBpZiBpdAorICAgIC8vIGhhcyBiZWVuIGxvc3QuIFRoZSBlYXNpZXN0
IHdheSB0byBkbyB0aGF0IGlzIHRvIHNpbXBseSBjYWxsIHRoaXMKKyAgICAvLyBmdW5jdGlvbiBh
Z2Fpbi4gTm90ZSB0aGF0IHRoZSByZXR1cm4gdmFsdWUgbWF5IGJlIDAgaWYgdGhlCisgICAgLy8g
R1BVIGlzIHVuYXZhaWxhYmxlLgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4
dDNEPiBnZXQoKTsKIH07CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3NraWEvSW1hZ2VCdWZmZXJTa2lhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0ltYWdlQnVmZmVyU2tpYS5jcHAJKHJldmlzaW9uIDEx
MDQ0MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvSW1hZ2VCdWZm
ZXJTa2lhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODUsNyArODUsNyBAQCBwcml2YXRlOgogCiBz
dGF0aWMgU2tDYW52YXMqIGNyZWF0ZUFjY2VsZXJhdGVkQ2FudmFzKGNvbnN0IEludFNpemUmIHNp
emUsIEltYWdlQnVmZmVyRGF0YSogZGF0YSwgRGVmZXJyYWxNb2RlIGRlZmVycmFsTW9kZSkKIHsK
LSAgICBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dDNEID0gU2hhcmVkR3JhcGhpY3NDb250ZXh0
M0Q6OmdldCgpOworICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dDNEID0gU2hh
cmVkR3JhcGhpY3NDb250ZXh0M0Q6OmdldCgpOwogICAgIGlmICghY29udGV4dDNEKQogICAgICAg
ICByZXR1cm4gMDsKICAgICBHckNvbnRleHQqIGdyID0gY29udGV4dDNELT5nckNvbnRleHQoKTsK
QEAgLTEwNCwxMSArMTA0LDExIEBAIHN0YXRpYyBTa0NhbnZhcyogY3JlYXRlQWNjZWxlcmF0ZWRD
YW52YXMKICAgICBTa0NhbnZhcyogY2FudmFzOwogICAgIFNrQXV0b1RVbnJlZjxTa0RldmljZT4g
ZGV2aWNlKG5ldyBTa0dwdURldmljZShnciwgdGV4dHVyZS5nZXQoKSkpOwogICAgIGlmIChkZWZl
cnJhbE1vZGUgPT0gRGVmZXJyZWQpIHsKLSAgICAgICAgU2tBdXRvVFVucmVmPEFjY2VsZXJhdGVk
RGV2aWNlQ29udGV4dD4gZGV2aWNlQ29udGV4dChuZXcgQWNjZWxlcmF0ZWREZXZpY2VDb250ZXh0
KGNvbnRleHQzRCkpOworICAgICAgICBTa0F1dG9UVW5yZWY8QWNjZWxlcmF0ZWREZXZpY2VDb250
ZXh0PiBkZXZpY2VDb250ZXh0KG5ldyBBY2NlbGVyYXRlZERldmljZUNvbnRleHQoY29udGV4dDNE
LmdldCgpKSk7CiAgICAgICAgIGNhbnZhcyA9IG5ldyBTa0RlZmVycmVkQ2FudmFzKGRldmljZS5n
ZXQoKSwgZGV2aWNlQ29udGV4dC5nZXQoKSk7CiAgICAgfSBlbHNlCiAgICAgICAgIGNhbnZhcyA9
IG5ldyBTa0NhbnZhcyhkZXZpY2UuZ2V0KCkpOwotICAgIGRhdGEtPm1fcGxhdGZvcm1Db250ZXh0
LnNldEdyYXBoaWNzQ29udGV4dDNEKGNvbnRleHQzRCk7CisgICAgZGF0YS0+bV9wbGF0Zm9ybUNv
bnRleHQuc2V0QWNjZWxlcmF0ZWQodHJ1ZSk7CiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lU
SU5HKQogICAgIGRhdGEtPm1fcGxhdGZvcm1MYXllciA9IENhbnZhczJETGF5ZXJDaHJvbWl1bTo6
Y3JlYXRlKGNvbnRleHQzRCwgc2l6ZSk7CiAgICAgZGF0YS0+bV9wbGF0Zm9ybUxheWVyLT5zZXRU
ZXh0dXJlSWQodGV4dHVyZS5nZXQoKS0+Z2V0VGV4dHVyZUhhbmRsZSgpKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvUGxhdGZvcm1Db250ZXh0U2tpYS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9QbGF0
Zm9ybUNvbnRleHRTa2lhLmNwcAkocmV2aXNpb24gMTEwNDQyKQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9QbGF0Zm9ybUNvbnRleHRTa2lhLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTgxLDkgKzE4MSw5IEBAIFBsYXRmb3JtQ29udGV4dFNraWE6OlBsYXRmb3JtQ29u
dGV4dFNraWEKICAgICA6IG1fY2FudmFzKGNhbnZhcykKICAgICAsIG1fdHJhY2tPcGFxdWVSZWdp
b24oZmFsc2UpCiAgICAgLCBtX3ByaW50aW5nKGZhbHNlKQorICAgICwgbV9hY2NlbGVyYXRlZChm
YWxzZSkKICAgICAsIG1fZGVmZXJyZWQoZmFsc2UpCiAgICAgLCBtX2RyYXdpbmdUb0ltYWdlQnVm
ZmVyKGZhbHNlKQotICAgICwgbV9ncHVDb250ZXh0KDApCiB7CiAgICAgbV9zdGF0ZVN0YWNrLmFw
cGVuZChTdGF0ZSgpKTsKICAgICBtX3N0YXRlID0gJm1fc3RhdGVTdGFjay5sYXN0KCk7CkBAIC02
MDIsMTEgKzYwMiw2IEBAIHZvaWQgUGxhdGZvcm1Db250ZXh0U2tpYTo6YXBwbHlDbGlwRnJvbUkK
ICAgICBtX2NhbnZhcy0+cmVzdG9yZSgpOwogfQogCi12b2lkIFBsYXRmb3JtQ29udGV4dFNraWE6
OnNldEdyYXBoaWNzQ29udGV4dDNEKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KQotewotICAg
IG1fZ3B1Q29udGV4dCA9IGNvbnRleHQ7Ci19Ci0KIHZvaWQgUGxhdGZvcm1Db250ZXh0U2tpYTo6
ZGlkRHJhd1JlY3QoY29uc3QgU2tSZWN0JiByZWN0LCBjb25zdCBTa1BhaW50JiBwYWludCwgY29u
c3QgU2tCaXRtYXAqIGJpdG1hcCkKIHsKICAgICBpZiAobV90cmFja09wYXF1ZVJlZ2lvbikKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvUGxhdGZvcm1Db250ZXh0
U2tpYS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Nr
aWEvUGxhdGZvcm1Db250ZXh0U2tpYS5oCShyZXZpc2lvbiAxMTA0NDIpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1BsYXRmb3JtQ29udGV4dFNraWEuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDcsNyArNDcsNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBlbnVtIENv
bXBvc2l0ZU9wZXJhdG9yOwotY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7CiBjbGFzcyBUZXh0dXJl
OwogCiAvLyBUaGlzIGNsYXNzIGhvbGRzIHRoZSBwbGF0Zm9ybS1zcGVjaWZpYyBzdGF0ZSBmb3Ig
R3JhcGhpY3NDb250ZXh0LiBXZSBwdXQKQEAgLTE4MSw4ICsxODAsOCBAQCBwdWJsaWM6CiAgICAg
dm9pZCBjbGVhckltYWdlUmVzYW1wbGluZ0hpbnQoKTsKICAgICBib29sIGhhc0ltYWdlUmVzYW1w
bGluZ0hpbnQoKSBjb25zdDsKIAotICAgIGJvb2wgaXNBY2NlbGVyYXRlZCgpIGNvbnN0IHsgcmV0
dXJuIG1fZ3B1Q29udGV4dDsgfQotICAgIHZvaWQgc2V0R3JhcGhpY3NDb250ZXh0M0QoR3JhcGhp
Y3NDb250ZXh0M0QqKTsKKyAgICBib29sIGlzQWNjZWxlcmF0ZWQoKSBjb25zdCB7IHJldHVybiBt
X2FjY2VsZXJhdGVkOyB9CisgICAgdm9pZCBzZXRBY2NlbGVyYXRlZChib29sIGFjY2VsZXJhdGVk
KSB7IG1fYWNjZWxlcmF0ZWQgPSBhY2NlbGVyYXRlZDsgfQogCiAgICAgLy8gVHJ1ZSBpZiB0aGlz
IGNvbnRleHQgaXMgZGVmZXJyaW5nIGRyYXcgY2FsbHMgdG8gYmUgZXhlY3V0ZWQgbGF0ZXIuCiAg
ICAgLy8gV2UgbmVlZCB0byBrbm93IHRoaXMgZm9yIGNvbnRleHQtdG8tY29udGV4dCBkcmF3cywg
aW4gb3JkZXIgdG8ga25vdyBpZgpAQCAtMjM3LDkgKzIzNiw5IEBAIHByaXZhdGU6CiAgICAgSW50
U2l6ZSBtX2ltYWdlUmVzYW1wbGluZ0hpbnRTcmNTaXplOwogICAgIEZsb2F0U2l6ZSBtX2ltYWdl
UmVzYW1wbGluZ0hpbnREc3RTaXplOwogICAgIGJvb2wgbV9wcmludGluZzsKKyAgICBib29sIG1f
YWNjZWxlcmF0ZWQ7CiAgICAgYm9vbCBtX2RlZmVycmVkOwogICAgIGJvb2wgbV9kcmF3aW5nVG9J
bWFnZUJ1ZmZlcjsKLSAgICBHcmFwaGljc0NvbnRleHQzRCogbV9ncHVDb250ZXh0OwogfTsKIAog
fQpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExMDQ0MikKKysrIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MTYgQEAKKzIwMTItMDMtMTIgIFN0ZXBoZW4gV2hpdGUgIDxzZW5vcmJsYW5jb0BjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBSZXN0b3JlIGNhbnZhczJEIGFjY2VsZXJhdGlvbiBh
ZnRlciBjb250ZXh0IGxvc3MuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD04MDYyOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIENvdmVyZWQgYnkgZXhpc3RpbmcgY2FudmFzIHRlc3RzLCBhbmQgbWFudWFsIHRl
c3RpbmcgKGtpbGxpbmcgdGhlIEdQVQorICAgICAgICBwcm9jZXNzKS4KKworICAgICAgICAqIHNy
Yy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzaGFyZWRH
cmFwaGljc0NvbnRleHQzRCk6CisKIDIwMTItMDMtMTIgIERhbmEgSmFuc2VucyAgPGRhbmFrakBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBDbGVhbiB1cCBjdWxsaW5nIHRlc3Rz
IGFuZCB0ZW1wbGF0aXplIHRvIHRlc3QgaW1wbCBjb25zdHJ1Y3RzCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCShyZXZpc2lvbiAxMTA0NDIpCisrKyBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMzNDMsNyArMzM0Myw3IEBAIFdlYkdyYXBoaWNzQ29udGV4dDNEKiBXZWJWaWV3SW1wbDo6
c2hhcmUKICAgICBpZiAoIW1fcGFnZS0+c2V0dGluZ3MoKS0+YWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0VuYWJsZWQoKSB8fCAhYWxsb3dzQWNjZWxlcmF0ZWRDb21wb3NpdGluZygpKQogICAgICAgICBy
ZXR1cm4gMDsKIAotICAgIHJldHVybiBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmV4dHJhY3RX
ZWJHcmFwaGljc0NvbnRleHQzRChTaGFyZWRHcmFwaGljc0NvbnRleHQzRDo6Z2V0KCkpOworICAg
IHJldHVybiBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmV4dHJhY3RXZWJHcmFwaGljc0NvbnRl
eHQzRChTaGFyZWRHcmFwaGljc0NvbnRleHQzRDo6Z2V0KCkuZ2V0KCkpOwogfQogCiB2b2lkIFdl
YlZpZXdJbXBsOjpzZXRWaXNpYmlsaXR5U3RhdGUoV2ViUGFnZVZpc2liaWxpdHlTdGF0ZSB2aXNp
YmlsaXR5U3RhdGUsCg==
</data>
<flag name="review"
          id="134642"
          type_id="1"
          status="+"
          setter="jamesr"
    />
          </attachment>
      

    </bug>

</bugzilla>