<?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>93872</bug_id>
          
          <creation_ts>2012-08-13 11:19:10 -0700</creation_ts>
          <short_desc>[Qt] Replace use of internal Weak smart pointer with JSWeakObjectMap</short_desc>
          <delta_ts>2012-08-17 05:32:20 -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>New Bugs</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>60842</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Hausmann">hausmann</reporter>
          <assigned_to name="Simon Hausmann">hausmann</assigned_to>
          <cc>cmarcelo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>693856</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-08-13 11:19:10 -0700</bug_when>
    <thetext>[Qt] Replace use of internal Weak smart pointer with JSWeakObjectMap</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>693884</commentid>
    <comment_count>1</comment_count>
      <attachid>158057</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-08-13 11:37:07 -0700</bug_when>
    <thetext>Created attachment 158057
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>693900</commentid>
    <comment_count>2</comment_count>
      <attachid>158057</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-08-13 11:51:43 -0700</bug_when>
    <thetext>Comment on attachment 158057
Patch

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

&gt; Source/WebCore/ChangeLog:16
&gt; +        The intent of replacing the use of the internal Weak smart pointer with
&gt; +        public JSC C API is slightly more complex. JSWeakObjectMap is special
&gt; +        in the sense that its life-time is tied to the life-time of the JS
&gt; +        global object, which in turn is subject to garbage collection. In order
&gt; +        to maximize re-use of the same map across different JSContextRef instances,
&gt; +        we use the associated global context ref as owner of the weak maps. The key
&gt; +        in the weak map is the identity (pointer) of the runtime method object itself.
&gt; +        The iteration through the maps is tedious, but should usually not go beyond
&gt; +        just a few.

Would be nice if you wrote about the advantage of switching to the JSWeakObjectMap. Like what does it solve</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>693911</commentid>
    <comment_count>3</comment_count>
      <attachid>158064</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-08-13 11:59:18 -0700</bug_when>
    <thetext>Created attachment 158064
Patch

New version explaining the motivation :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>693931</commentid>
    <comment_count>4</comment_count>
      <attachid>158064</attachid>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2012-08-13 12:16:35 -0700</bug_when>
    <thetext>Comment on attachment 158064
Patch

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

&gt; Source/WebCore/bridge/qt/qt_runtime.cpp:1320
&gt; +        if (obj) {
&gt; +            JSObjectSetPrivate(obj, 0);
&gt; +            JSWeakObjectMapRemove(it-&gt;first, it-&gt;second, this);

Since we don&apos;t expect obj to be in more than one map, could we return here after finding one?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>693937</commentid>
    <comment_count>5</comment_count>
      <attachid>158064</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-08-13 12:23:20 -0700</bug_when>
    <thetext>Comment on attachment 158064
Patch

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

&gt; Source/WebCore/bridge/qt/qt_runtime.cpp:1303
&gt; +
&gt; +

double newline :-)

&gt; Source/WebCore/bridge/qt/qt_runtime.cpp:1316
&gt; +    for (WeakRuntimeMethodMap::const_iterator it = weakRuntimeMethodCache.begin(), end = weakRuntimeMethodCache.end();
&gt; +         it != end; ++it) {

I know this looks nice, but it differs from how to normally do it. Apparently I was pointed out that the style guide says to not use iterators when being able to iterate knowing the size. I am not sure I agree with that, but just pointing out

&gt; Source/WebCore/bridge/qt/qt_runtime.cpp:1318
&gt; +        JSObjectRef obj = JSWeakObjectMapGet(it-&gt;first, it-&gt;second, this);
&gt; +        if (obj) {

merge to one line?

&gt; Source/WebCore/bridge/qt/qt_runtime.cpp:1374
&gt; +        JSObjectRef cachedMethod = JSWeakObjectMapGet(cache-&gt;first, cache-&gt;second, this);
&gt; +        if (cachedMethod)

Merge to one line?

&gt; Source/WebCore/bridge/qt/qt_runtime.cpp:1412
&gt; +    JSWeakObjectMapRef map = 0;

why = 0 when you are setting it both places</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>693938</commentid>
    <comment_count>6</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-08-13 12:24:27 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 158064 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=158064&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/bridge/qt/qt_runtime.cpp:1320
&gt; &gt; +        if (obj) {
&gt; &gt; +            JSObjectSetPrivate(obj, 0);
&gt; &gt; +            JSWeakObjectMapRemove(it-&gt;first, it-&gt;second, this);
&gt; 
&gt; Since we don&apos;t expect obj to be in more than one map, could we return here after finding one?

Right now that is indeed not possible, given that the same QObject exposed in two different script environments leads to two different QtInstance objects and thus different RuntimeMethod objects. But in the future we&apos;re going to remove QtInstance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>693945</commentid>
    <comment_count>7</comment_count>
      <attachid>158064</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-08-13 12:27:11 -0700</bug_when>
    <thetext>Comment on attachment 158064
Patch

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

Thanks for the review :)

&gt;&gt; Source/WebCore/bridge/qt/qt_runtime.cpp:1316
&gt;&gt; +         it != end; ++it) {
&gt; 
&gt; I know this looks nice, but it differs from how to normally do it. Apparently I was pointed out that the style guide says to not use iterators when being able to iterate knowing the size. I am not sure I agree with that, but just pointing out

The data structure in question is a set, so the iterators are the only way to efficiently iterate. I agree that for vectors indexing is preferred.

&gt;&gt; Source/WebCore/bridge/qt/qt_runtime.cpp:1318
&gt;&gt; +        if (obj) {
&gt; 
&gt; merge to one line?

Good idea, I need to make that pattern a habit :)

&gt;&gt; Source/WebCore/bridge/qt/qt_runtime.cpp:1412
&gt;&gt; +    JSWeakObjectMapRef map = 0;
&gt; 
&gt; why = 0 when you are setting it both places

Unnecessary paranoia :) - I&apos;ll remove the initialization.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>693946</commentid>
    <comment_count>8</comment_count>
      <attachid>158073</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-08-13 12:27:45 -0700</bug_when>
    <thetext>Created attachment 158073
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694023</commentid>
    <comment_count>9</comment_count>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2012-08-13 13:29:44 -0700</bug_when>
    <thetext>LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694036</commentid>
    <comment_count>10</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-08-13 13:45:27 -0700</bug_when>
    <thetext>Committed r125444: &lt;http://trac.webkit.org/changeset/125444&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694099</commentid>
    <comment_count>11</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-08-13 14:37:38 -0700</bug_when>
    <thetext>Reverted r125444 for reason:

Broke some tests

Committed r125452: &lt;http://trac.webkit.org/changeset/125452&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694103</commentid>
    <comment_count>12</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-08-13 14:39:02 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; Reverted r125444 for reason:
&gt; 
&gt; Broke some tests
&gt; 
&gt; Committed r125452: &lt;http://trac.webkit.org/changeset/125452&gt;

Example crash log:

http://build.webkit.org/results/Qt%20Linux%20Release/r125448%20(50754)/sputnik/Conformance/07_Lexical_Conventions/7.4_Comments/S7.4_A5-crash-log.txt

from

http://build.webkit.org/builders/Qt%20Linux%20Release/builds/50754

Will look into it tomorrow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694949</commentid>
    <comment_count>13</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-08-14 07:29:23 -0700</bug_when>
    <thetext>Another way to reproduce the crash:

gdb --args /path/to/DRT `find LayoutTests/fast/js`</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697082</commentid>
    <comment_count>14</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-08-16 06:59:53 -0700</bug_when>
    <thetext>The crash is caused by accessing the weak map that is associated with a global object that&apos;s been deleted already.

The solution appears to be to have a separate js context for the weak map that is created in the same context _group_. It is allowed to share objects across contexts in the same group.

The weak map has no destructor, it is GC&apos;ed when the context&apos;s global object is collected. Therefore we simply refcount on the context that &quot;owns&quot; the weak map.

New patch coming up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697085</commentid>
    <comment_count>15</comment_count>
      <attachid>158805</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-08-16 07:02:14 -0700</bug_when>
    <thetext>Created attachment 158805
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697105</commentid>
    <comment_count>16</comment_count>
      <attachid>158805</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-08-16 07:22:17 -0700</bug_when>
    <thetext>Comment on attachment 158805
Patch

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

r=me... but you already filled that in

&gt; Source/WebCore/bridge/qt/qt_instance.cpp:50
&gt; +    // Deleted by GC when m_context&apos;s globalObject gets collected

Missed . though

&gt; Source/WebCore/bridge/qt/qt_instance.cpp:67
&gt; +    // Just us and the ref in the weakMaps left?

Why is this a question?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697114</commentid>
    <comment_count>17</comment_count>
      <attachid>158805</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-08-16 07:33:50 -0700</bug_when>
    <thetext>Comment on attachment 158805
Patch

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

&gt;&gt; Source/WebCore/bridge/qt/qt_instance.cpp:50
&gt;&gt; +    // Deleted by GC when m_context&apos;s globalObject gets collected
&gt; 
&gt; Missed . though

Oops, will fix.

&gt;&gt; Source/WebCore/bridge/qt/qt_instance.cpp:67
&gt;&gt; +    // Just us and the ref in the weakMaps left?
&gt; 
&gt; Why is this a question?

Ok, got the hint ;). Will be a bit more elaborate when landing. Basically if this is the last WeakMap instance left, then we
should delete the context from the global weakMaps.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697177</commentid>
    <comment_count>18</comment_count>
      <attachid>158805</attachid>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2012-08-16 08:44:05 -0700</bug_when>
    <thetext>Comment on attachment 158805
Patch

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

&gt; Source/WebCore/bridge/qt/qt_instance.cpp:56
&gt; +    if (m_context)

Simon, it&apos;s not clear to me when this could happen.

&gt; Source/WebCore/bridge/qt/qt_instance.cpp:83
&gt; +        WeakMapSet::iterator cachedMap = weakMaps.find(group);
&gt; +        if (cachedMap == weakMaps.end()) {
&gt; +            m_impl = adoptRef(new WeakMapImpl(group));
&gt; +            weakMaps.add(group, m_impl);
&gt; +        } else
&gt; +            m_impl = cachedMap-&gt;second;

Minor suggestion: you could use the HashMap::add idiom here. Instead of find() use add() passing 0 (or nullptr) as new value, if its a new entry you set directly in the value (second) of the iterator add() gives you back.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697186</commentid>
    <comment_count>19</comment_count>
      <attachid>158805</attachid>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2012-08-16 08:57:18 -0700</bug_when>
    <thetext>Comment on attachment 158805
Patch

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

&gt;&gt; Source/WebCore/bridge/qt/qt_instance.cpp:56
&gt;&gt; +    if (m_context)
&gt; 
&gt; Simon, it&apos;s not clear to me when this could happen.

Sorry. I meant to say: when this couldn&apos;t happen. I don&apos;t see m_context being cleared and I don&apos;t think JSC clears it behind our back, so even if the context goes away I would expect this to evaluate to true... Could it even go away while we still hold a retained ref (implicitly retained by Create call)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697985</commentid>
    <comment_count>20</comment_count>
      <attachid>158805</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-08-17 00:43:37 -0700</bug_when>
    <thetext>Comment on attachment 158805
Patch

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

&gt;&gt;&gt; Source/WebCore/bridge/qt/qt_instance.cpp:56
&gt;&gt;&gt; +    if (m_context)
&gt;&gt; 
&gt;&gt; Simon, it&apos;s not clear to me when this could happen.
&gt; 
&gt; Sorry. I meant to say: when this couldn&apos;t happen. I don&apos;t see m_context being cleared and I don&apos;t think JSC clears it behind our back, so even if the context goes away I would expect this to evaluate to true... Could it even go away while we still hold a retained ref (implicitly retained by Create call)?

You&apos;re right, this was a left-over from moving the code around a few iterations earlier. The if is indeed redundant, I&apos;ll remove it. Thanks :)

&gt;&gt; Source/WebCore/bridge/qt/qt_instance.cpp:83
&gt;&gt; +            m_impl = cachedMap-&gt;second;
&gt; 
&gt; Minor suggestion: you could use the HashMap::add idiom here. Instead of find() use add() passing 0 (or nullptr) as new value, if its a new entry you set directly in the value (second) of the iterator add() gives you back.

Lovely, I&apos;ll go for that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>698056</commentid>
    <comment_count>21</comment_count>
      <attachid>159049</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-08-17 01:59:21 -0700</bug_when>
    <thetext>Created attachment 159049
Patch

Updated patch for review, taking Caio&apos;s comments into account</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>698096</commentid>
    <comment_count>22</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-08-17 02:43:02 -0700</bug_when>
    <thetext>Committed r125873: &lt;http://trac.webkit.org/changeset/125873&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>698239</commentid>
    <comment_count>23</comment_count>
      <attachid>159049</attachid>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2012-08-17 05:21:23 -0700</bug_when>
    <thetext>Comment on attachment 159049
Patch

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

&gt; Source/WebCore/bridge/qt/qt_instance.cpp:80
&gt; +            entry.iterator-&gt;second = new WeakMapImpl(group);

It seems to me that we still need the adoptRef() here.

Optionally, we could have a WeakMapImpl::create that calls adoptRef(new ...) and returns a PassRefPtr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>698249</commentid>
    <comment_count>24</comment_count>
      <attachid>159049</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-08-17 05:26:10 -0700</bug_when>
    <thetext>Comment on attachment 159049
Patch

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

&gt;&gt; Source/WebCore/bridge/qt/qt_instance.cpp:80
&gt;&gt; +            entry.iterator-&gt;second = new WeakMapImpl(group);
&gt; 
&gt; It seems to me that we still need the adoptRef() here.
&gt; 
&gt; Optionally, we could have a WeakMapImpl::create that calls adoptRef(new ...) and returns a PassRefPtr.

Argh, good catch! I&apos;ll land a quick follow-up fix right away with adoptRef.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>698256</commentid>
    <comment_count>25</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-08-17 05:32:20 -0700</bug_when>
    <thetext>Hotfix landed in http://trac.webkit.org/changeset/125887</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158057</attachid>
            <date>2012-08-13 11:37:07 -0700</date>
            <delta_ts>2012-08-13 11:59:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-93872-20120813203746.patch</filename>
            <type>text/plain</type>
            <size>6677</size>
            <attacher name="Simon Hausmann">hausmann</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1NDI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
YmM0YjhlYTAyODM4YzQyYzVkMGQ5ZDQ4Y2Y2OWY4OTdkN2Y1YzNkLi5hZDIzZDJlYTgwZmU2ZTFi
ZDM4NTZhMWM3OWJiYTk1YmY3N2Q5ZTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMiBAQAorMjAxMi0wOC0xMyAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBu
b2tpYS5jb20+CisKKyAgICAgICAgW1F0XSBSZXBsYWNlIHVzZSBvZiBpbnRlcm5hbCBXZWFrIHNt
YXJ0IHBvaW50ZXIgd2l0aCBKU1dlYWtPYmplY3RNYXAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkzODcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUYXJnZXQucHJpOiBBZGQgbWlzc2luZyBKU1dlYWtP
YmplY3RNYXAgZmlsZSB0byBidWlsZC4KKwogMjAxMi0wOC0xMiAgQWxsYW4gU2FuZGZlbGQgSmVu
c2VuICA8YWxsYW4uamVuc2VuQG5va2lhLmNvbT4KIAogICAgICAgICBEb2Vzbid0IGJ1aWxkIHdp
dGggRU5BQkxFX0pJVD0wCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzQwMjY0Y2I5ZGYwNTA3ZTlhODBhZDExMTA0
YWQ2MTIyODRiMDE5MC4uMmM3ZWI3YTNmOTMwNzlkOTRjMDIyNTEzZTcwN2MxMDBmYmZiOGMwNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwpAQCAtMSw1ICsxLDMwIEBACiAyMDEyLTA4LTEzICBTaW1vbiBIYXVzbWFubiAg
PHNpbW9uLmhhdXNtYW5uQG5va2lhLmNvbT4KIAorICAgICAgICBbUXRdIFJlcGxhY2UgdXNlIG9m
IGludGVybmFsIFdlYWsgc21hcnQgcG9pbnRlciB3aXRoIEpTV2Vha09iamVjdE1hcAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTM4NzIKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgaW50ZW50IG9mIHJl
cGxhY2luZyB0aGUgdXNlIG9mIHRoZSBpbnRlcm5hbCBXZWFrIHNtYXJ0IHBvaW50ZXIgd2l0aAor
ICAgICAgICBwdWJsaWMgSlNDIEMgQVBJIGlzIHNsaWdodGx5IG1vcmUgY29tcGxleC4gSlNXZWFr
T2JqZWN0TWFwIGlzIHNwZWNpYWwKKyAgICAgICAgaW4gdGhlIHNlbnNlIHRoYXQgaXRzIGxpZmUt
dGltZSBpcyB0aWVkIHRvIHRoZSBsaWZlLXRpbWUgb2YgdGhlIEpTCisgICAgICAgIGdsb2JhbCBv
YmplY3QsIHdoaWNoIGluIHR1cm4gaXMgc3ViamVjdCB0byBnYXJiYWdlIGNvbGxlY3Rpb24uIElu
IG9yZGVyCisgICAgICAgIHRvIG1heGltaXplIHJlLXVzZSBvZiB0aGUgc2FtZSBtYXAgYWNyb3Nz
IGRpZmZlcmVudCBKU0NvbnRleHRSZWYgaW5zdGFuY2VzLAorICAgICAgICB3ZSB1c2UgdGhlIGFz
c29jaWF0ZWQgZ2xvYmFsIGNvbnRleHQgcmVmIGFzIG93bmVyIG9mIHRoZSB3ZWFrIG1hcHMuIFRo
ZSBrZXkKKyAgICAgICAgaW4gdGhlIHdlYWsgbWFwIGlzIHRoZSBpZGVudGl0eSAocG9pbnRlcikg
b2YgdGhlIHJ1bnRpbWUgbWV0aG9kIG9iamVjdCBpdHNlbGYuCisgICAgICAgIFRoZSBpdGVyYXRp
b24gdGhyb3VnaCB0aGUgbWFwcyBpcyB0ZWRpb3VzLCBidXQgc2hvdWxkIHVzdWFsbHkgbm90IGdv
IGJleW9uZAorICAgICAgICBqdXN0IGEgZmV3LgorCisgICAgICAgICogYnJpZGdlL3F0L3F0X3J1
bnRpbWUuY3BwOgorICAgICAgICAoQmluZGluZ3MpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6
bWV0aG9kTWFwQ2xlYW5lcik6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpRdFJ1bnRpbWVNZXRo
b2Q6On5RdFJ1bnRpbWVNZXRob2QpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6UXRSdW50aW1l
TWV0aG9kOjpqc09iamVjdFJlZik6CisgICAgICAgICogYnJpZGdlL3F0L3F0X3J1bnRpbWUuaDoK
KyAgICAgICAgKFF0UnVudGltZU1ldGhvZCk6CisKKzIwMTItMDgtMTMgIFNpbW9uIEhhdXNtYW5u
ICA8c2ltb24uaGF1c21hbm5Abm9raWEuY29tPgorCiAgICAgICAgIFtRdF0gUG9ydCBtZXRhIG1l
dGhvZC9zaWduYWwvc2xvdCBoYW5kbGluZyBpbiBydW4tdGltZSBicmlkZ2UgdG8gdXNlIEpTQyBD
IEFQSQogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTM0
NzYKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1RhcmdldC5wcmkgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaQppbmRleCAzZDBlNDFkZjQzZGFkOWE5NjFmMTBm
MWQ1MzFiMjU3YWJiYTEyMTI4Li5hMTJlNTg1NmVmZWYzZWM4ZTBkNzVmNTI5YjlkNzdiMjM2NzYw
YTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaQorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaQpAQCAtNDAsNiArNDAsNyBAQCBTT1VSQ0VT
ICs9IFwKICAgICBBUEkvSlNPYmplY3RSZWYuY3BwIFwKICAgICBBUEkvSlNTdHJpbmdSZWYuY3Bw
IFwKICAgICBBUEkvSlNWYWx1ZVJlZi5jcHAgXAorICAgIEFQSS9KU1dlYWtPYmplY3RNYXBSZWZQ
cml2YXRlLmNwcCBcCiAgICAgQVBJL09wYXF1ZUpTU3RyaW5nLmNwcCBcCiAgICAgYXNzZW1ibGVy
L0FSTUFzc2VtYmxlci5jcHAgXAogICAgIGFzc2VtYmxlci9BUk12N0Fzc2VtYmxlci5jcHAgXApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuY3BwIGIvU291
cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuY3BwCmluZGV4IGNhYTkyMGM4ZGNlYWI0
NWI3ZmUyODE0ZWE2NDk4M2E0ZjI3NDc0MTguLjc2MDk1NzY3ZjVjYTg2OGE2YTI1ZThlYzc3NTE0
ZTZjYmJkMjYyNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9ydW50
aW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcnVudGltZS5jcHAKQEAg
LTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJKU09iamVjdC5oIgogI2luY2x1ZGUgIkpTUmV0YWlu
UHRyLmgiCiAjaW5jbHVkZSAiSlNVaW50OENsYW1wZWRBcnJheS5oIgorI2luY2x1ZGUgIkpTV2Vh
a09iamVjdE1hcFJlZlByaXZhdGUuaCIKICNpbmNsdWRlICJPYmplY3RQcm90b3R5cGUuaCIKICNp
bmNsdWRlICJQcm9wZXJ0eU5hbWVBcnJheS5oIgogI2luY2x1ZGUgInFkYXRldGltZS5oIgpAQCAt
MTI5MCw2ICsxMjkxLDE2IEBAIHN0YXRpYyBKU0NsYXNzUmVmIHByb3RvdHlwZUZvclNpZ25hbHNB
bmRTbG90cygpCiAgICAgcmV0dXJuIGNsczsKIH0KIAordHlwZWRlZiBIYXNoTWFwPEpTR2xvYmFs
Q29udGV4dFJlZiwgSlNXZWFrT2JqZWN0TWFwUmVmPiBXZWFrUnVudGltZU1ldGhvZE1hcDsKK3N0
YXRpYyBXZWFrUnVudGltZU1ldGhvZE1hcCB3ZWFrUnVudGltZU1ldGhvZENhY2hlOworCitzdGF0
aWMgdm9pZCBtZXRob2RNYXBDbGVhbmVyKEpTV2Vha09iamVjdE1hcFJlZiwgdm9pZCogZGF0YSkK
K3sKKyAgICBKU0dsb2JhbENvbnRleHRSZWYgcmVmID0gc3RhdGljX2Nhc3Q8SlNHbG9iYWxDb250
ZXh0UmVmPihkYXRhKTsKKyAgICB3ZWFrUnVudGltZU1ldGhvZENhY2hlLnJlbW92ZShyZWYpOwor
fQorCisKIFF0UnVudGltZU1ldGhvZDo6UXRSdW50aW1lTWV0aG9kKEpTQ29udGV4dFJlZiBjdHgs
IEpTVmFsdWVSZWYqIGV4Y2VwdGlvbiwgUU9iamVjdCogb2JqZWN0LCBjb25zdCBRQnl0ZUFycmF5
JiBpZGVudGlmaWVyLCBpbnQgaW5kZXgsIGludCBmbGFncywgUXRJbnN0YW5jZSogaW5zdGFuY2Up
CiAgICAgOiBtX29iamVjdChvYmplY3QpCiAgICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikK
QEAgLTEzMDEsOCArMTMxMiwxNCBAQCBRdFJ1bnRpbWVNZXRob2Q6OlF0UnVudGltZU1ldGhvZChK
U0NvbnRleHRSZWYgY3R4LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24sIFFPYmplYwogCiBRdFJ1bnRp
bWVNZXRob2Q6On5RdFJ1bnRpbWVNZXRob2QoKQogewotICAgIGlmIChtX2pzT2JqZWN0KQotICAg
ICAgICBKU09iamVjdFNldFByaXZhdGUodG9SZWYobV9qc09iamVjdC5nZXQoKSksIDApOworICAg
IGZvciAoV2Vha1J1bnRpbWVNZXRob2RNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gd2Vha1J1bnRp
bWVNZXRob2RDYWNoZS5iZWdpbigpLCBlbmQgPSB3ZWFrUnVudGltZU1ldGhvZENhY2hlLmVuZCgp
OworICAgICAgICAgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgIEpTT2JqZWN0UmVmIG9iaiA9
IEpTV2Vha09iamVjdE1hcEdldChpdC0+Zmlyc3QsIGl0LT5zZWNvbmQsIHRoaXMpOworICAgICAg
ICBpZiAob2JqKSB7CisgICAgICAgICAgICBKU09iamVjdFNldFByaXZhdGUob2JqLCAwKTsKKyAg
ICAgICAgICAgIEpTV2Vha09iamVjdE1hcFJlbW92ZShpdC0+Zmlyc3QsIGl0LT5zZWNvbmQsIHRo
aXMpOworICAgICAgICB9CisgICAgfQogfQogCiBKU1ZhbHVlUmVmIFF0UnVudGltZU1ldGhvZDo6
Y2FsbChKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0
UmVmIC8qdGhpc09iamVjdCovLCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJl
ZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQpAQCAtMTM1MCw4ICsxMzY3LDEz
IEBAIEpTVmFsdWVSZWYgUXRSdW50aW1lTWV0aG9kOjpkaXNjb25uZWN0KEpTQ29udGV4dFJlZiBj
b250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvCiAKIEpTT2JqZWN0UmVmIFF0UnVudGltZU1ldGhv
ZDo6anNPYmplY3RSZWYoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYqIGV4Y2VwdGlv
bikKIHsKLSAgICBpZiAobV9qc09iamVjdCkKLSAgICAgICAgcmV0dXJuIHRvUmVmKG1fanNPYmpl
Y3QuZ2V0KCkpOworICAgIEpTR2xvYmFsQ29udGV4dFJlZiBnbG9iYWxDb250ZXh0ID0gSlNDb250
ZXh0R2V0R2xvYmFsQ29udGV4dChjb250ZXh0KTsKKyAgICBXZWFrUnVudGltZU1ldGhvZE1hcDo6
aXRlcmF0b3IgY2FjaGUgPSB3ZWFrUnVudGltZU1ldGhvZENhY2hlLmZpbmQoZ2xvYmFsQ29udGV4
dCk7CisgICAgaWYgKGNhY2hlICE9IHdlYWtSdW50aW1lTWV0aG9kQ2FjaGUuZW5kKCkpIHsKKyAg
ICAgICAgSlNPYmplY3RSZWYgY2FjaGVkTWV0aG9kID0gSlNXZWFrT2JqZWN0TWFwR2V0KGNhY2hl
LT5maXJzdCwgY2FjaGUtPnNlY29uZCwgdGhpcyk7CisgICAgICAgIGlmIChjYWNoZWRNZXRob2Qp
CisgICAgICAgICAgICByZXR1cm4gY2FjaGVkTWV0aG9kOworICAgIH0KIAogICAgIHN0YXRpYyBj
b25zdCBKU0NsYXNzRGVmaW5pdGlvbiBjbGFzc0RlZkZvckNvbm5lY3QgPSB7CiAgICAgICAgIDAs
IDAsICJjb25uZWN0IiwgMCwgMCwgMCwKQEAgLTEzODcsNyArMTQwOSwxNCBAQCBKU09iamVjdFJl
ZiBRdFJ1bnRpbWVNZXRob2Q6OmpzT2JqZWN0UmVmKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1Zh
bHVlUmVmKiBleGNlcAogICAgIEpTT2JqZWN0U2V0UHJvcGVydHkoY29udGV4dCwgb2JqZWN0LCBs
ZW5ndGhTdHIsIEpTVmFsdWVNYWtlTnVtYmVyKGNvbnRleHQsIDApLCBhdHRyaWJ1dGVzLCBleGNl
cHRpb24pOwogICAgIEpTT2JqZWN0U2V0UHJvcGVydHkoY29udGV4dCwgb2JqZWN0LCBuYW1lU3Ry
LCBKU1ZhbHVlTWFrZVN0cmluZyhjb250ZXh0LCBhY3R1YWxOYW1lU3RyLmdldCgpKSwgYXR0cmli
dXRlcywgZXhjZXB0aW9uKTsKIAotICAgIG1fanNPYmplY3QgPSBQYXNzV2VhazxKU09iamVjdD4o
dG9KUyhvYmplY3QpKTsKKyAgICBKU1dlYWtPYmplY3RNYXBSZWYgbWFwID0gMDsKKyAgICBpZiAo
Y2FjaGUgPT0gd2Vha1J1bnRpbWVNZXRob2RDYWNoZS5lbmQoKSkgeworICAgICAgICBtYXAgPSBK
U1dlYWtPYmplY3RNYXBDcmVhdGUoZ2xvYmFsQ29udGV4dCwgZ2xvYmFsQ29udGV4dCwgbWV0aG9k
TWFwQ2xlYW5lcik7CisgICAgICAgIHdlYWtSdW50aW1lTWV0aG9kQ2FjaGUuYWRkKGdsb2JhbENv
bnRleHQsIG1hcCk7CisgICAgfSBlbHNlCisgICAgICAgIG1hcCA9IGNhY2hlLT5zZWNvbmQ7Cisg
ICAgSlNXZWFrT2JqZWN0TWFwU2V0KGdsb2JhbENvbnRleHQsIG1hcCwgdGhpcywgb2JqZWN0KTsK
KwogICAgIHJldHVybiBvYmplY3Q7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9xdC9xdF9ydW50aW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcnVudGlt
ZS5oCmluZGV4IDc2M2FjYmE1ZDA1OWU4MTk4YmJmNmU0ZWYwZDkzYjFjNGZhZGM1MzYuLmI4ODgx
NzNlMzg2ZWFkYTYxODYzYjYwYjYyYzE4OWVjOWVlMTBlMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9xdC9xdF9ydW50aW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdl
L3F0L3F0X3J1bnRpbWUuaApAQCAtMTIyLDcgKzEyMiw2IEBAIHByaXZhdGU6CiAgICAgUUJ5dGVB
cnJheSBtX2lkZW50aWZpZXI7CiAgICAgaW50IG1faW5kZXg7CiAgICAgaW50IG1fZmxhZ3M7Ci0g
ICAgV2VhazxKU09iamVjdD4gbV9qc09iamVjdDsKICAgICBRdEluc3RhbmNlKiBtX2luc3RhbmNl
OwogfTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158064</attachid>
            <date>2012-08-13 11:59:18 -0700</date>
            <delta_ts>2012-08-13 12:27:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-93872-20120813205856.patch</filename>
            <type>text/plain</type>
            <size>6740</size>
            <attacher name="Simon Hausmann">hausmann</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1NDMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
YmM0YjhlYTAyODM4YzQyYzVkMGQ5ZDQ4Y2Y2OWY4OTdkN2Y1YzNkLi5hZDIzZDJlYTgwZmU2ZTFi
ZDM4NTZhMWM3OWJiYTk1YmY3N2Q5ZTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMiBAQAorMjAxMi0wOC0xMyAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBu
b2tpYS5jb20+CisKKyAgICAgICAgW1F0XSBSZXBsYWNlIHVzZSBvZiBpbnRlcm5hbCBXZWFrIHNt
YXJ0IHBvaW50ZXIgd2l0aCBKU1dlYWtPYmplY3RNYXAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkzODcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUYXJnZXQucHJpOiBBZGQgbWlzc2luZyBKU1dlYWtP
YmplY3RNYXAgZmlsZSB0byBidWlsZC4KKwogMjAxMi0wOC0xMiAgQWxsYW4gU2FuZGZlbGQgSmVu
c2VuICA8YWxsYW4uamVuc2VuQG5va2lhLmNvbT4KIAogICAgICAgICBEb2Vzbid0IGJ1aWxkIHdp
dGggRU5BQkxFX0pJVD0wCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWNjNmE5ZTM5NDAwZGM3MTk1ZDdlZmM0ZjRh
M2ExZDA1OGRjODYzNi4uMGI0ODA3ZDE1MDNiYTY5NzExNmY1N2NhNmVkZDAyZjQ5MjNjODE0MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEyLTA4LTEzICBTaW1vbiBIYXVzbWFubiAg
PHNpbW9uLmhhdXNtYW5uQG5va2lhLmNvbT4KKworICAgICAgICBbUXRdIFJlcGxhY2UgdXNlIG9m
IGludGVybmFsIFdlYWsgc21hcnQgcG9pbnRlciB3aXRoIEpTV2Vha09iamVjdE1hcAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTM4NzIKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgaW50ZW50aW9uIG9m
IHRoaXMgcGF0Y2ggc2VyaWVzIGlzIHRvIHJlcGxhY2UgdXNlIG9mIGludGVybmFsIEpTQworICAg
ICAgICBBUEkgd2l0aCB1c2Ugb2YgdGhlIHN0YWJsZSBhbmQgcHVibGljIEMgQVBJLgorCisgICAg
ICAgIFRoZSBKU0M6OldlYWsgdGVtcGxhdGUgaXMgaW50ZXJuYWwgQVBJIGFuZCB0aGUgb25seSBw
YXJ0IG9mIHRoZSBDIEFQSQorICAgICAgICB0aGF0IGV4cG9zZXMgc2ltaWxhciBmdW5jdGlvbmFs
aXR5IGlzIHRoZSBKU1dlYWtPYmplY3RNYXAuIEl0IGlzCisgICAgICAgIHNwZWNpYWwgaW4gdGhl
IHNlbnNlIHRoYXQgaXRzIGxpZmUtdGltZSBpcyB0aWVkIHRvIHRoZSBsaWZlLXRpbWUgb2YgdGhl
CisgICAgICAgIEpTIGdsb2JhbCBvYmplY3QsIHdoaWNoIGluIHR1cm4gaXMgc3ViamVjdCB0byBn
YXJiYWdlIGNvbGxlY3Rpb24uIEluCisgICAgICAgIG9yZGVyIHRvIG1heGltaXplIHJlLXVzZSBv
ZiB0aGUgc2FtZSBtYXAgYWNyb3NzIGRpZmZlcmVudCBKU0NvbnRleHRSZWYKKyAgICAgICAgaW5z
dGFuY2VzLCB3ZSB1c2UgdGhlIGFzc29jaWF0ZWQgZ2xvYmFsIGNvbnRleHQgcmVmIGFzIG93bmVy
IG9mIHRoZQorICAgICAgICB3ZWFrIG1hcHMuIFRoZSBrZXkgaW4gdGhlIHdlYWsgbWFwIGlzIHRo
ZSBpZGVudGl0eSAocG9pbnRlcikgb2YgdGhlCisgICAgICAgIHJ1bnRpbWUgbWV0aG9kIG9iamVj
dCBpdHNlbGYuICBUaGUgaXRlcmF0aW9uIHRocm91Z2ggdGhlIG1hcHMgaXMKKyAgICAgICAgdGVk
aW91cywgYnV0IHNob3VsZCB1c3VhbGx5IG5vdCBnbyBiZXlvbmQganVzdCBhIGZldy4KKworICAg
ICAgICAqIGJyaWRnZS9xdC9xdF9ydW50aW1lLmNwcDoKKyAgICAgICAgKEJpbmRpbmdzKToKKyAg
ICAgICAgKEpTQzo6QmluZGluZ3M6Om1ldGhvZE1hcENsZWFuZXIpOgorICAgICAgICAoSlNDOjpC
aW5kaW5nczo6UXRSdW50aW1lTWV0aG9kOjp+UXRSdW50aW1lTWV0aG9kKToKKyAgICAgICAgKEpT
Qzo6QmluZGluZ3M6OlF0UnVudGltZU1ldGhvZDo6anNPYmplY3RSZWYpOgorICAgICAgICAqIGJy
aWRnZS9xdC9xdF9ydW50aW1lLmg6CisgICAgICAgIChRdFJ1bnRpbWVNZXRob2QpOgorCiAyMDEy
LTA2LTI0ICBSb2JlcnQgSG9nYW4gIDxyb2JlcnRAd2Via2l0Lm9yZz4KIAogICAgICAgICBDU1Mg
Mi4xIGZhaWx1cmU6IFdvcmQtc3BhY2luZyBhZmZlY3RzIGVhY2ggc3BhY2UgYW5kIG5vbi1icmVh
a2luZyBzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1RhcmdldC5wcmkg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaQppbmRleCAzZDBlNDFkZjQzZGFkOWE5
NjFmMTBmMWQ1MzFiMjU3YWJiYTEyMTI4Li5hMTJlNTg1NmVmZWYzZWM4ZTBkNzVmNTI5YjlkNzdi
MjM2NzYwYTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaQor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaQpAQCAtNDAsNiArNDAsNyBAQCBT
T1VSQ0VTICs9IFwKICAgICBBUEkvSlNPYmplY3RSZWYuY3BwIFwKICAgICBBUEkvSlNTdHJpbmdS
ZWYuY3BwIFwKICAgICBBUEkvSlNWYWx1ZVJlZi5jcHAgXAorICAgIEFQSS9KU1dlYWtPYmplY3RN
YXBSZWZQcml2YXRlLmNwcCBcCiAgICAgQVBJL09wYXF1ZUpTU3RyaW5nLmNwcCBcCiAgICAgYXNz
ZW1ibGVyL0FSTUFzc2VtYmxlci5jcHAgXAogICAgIGFzc2VtYmxlci9BUk12N0Fzc2VtYmxlci5j
cHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuY3BwCmluZGV4IGNhYTkyMGM4
ZGNlYWI0NWI3ZmUyODE0ZWE2NDk4M2E0ZjI3NDc0MTguLjc2MDk1NzY3ZjVjYTg2OGE2YTI1ZThl
Yzc3NTE0ZTZjYmJkMjYyNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9x
dF9ydW50aW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcnVudGltZS5j
cHAKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJKU09iamVjdC5oIgogI2luY2x1ZGUgIkpT
UmV0YWluUHRyLmgiCiAjaW5jbHVkZSAiSlNVaW50OENsYW1wZWRBcnJheS5oIgorI2luY2x1ZGUg
IkpTV2Vha09iamVjdE1hcFJlZlByaXZhdGUuaCIKICNpbmNsdWRlICJPYmplY3RQcm90b3R5cGUu
aCIKICNpbmNsdWRlICJQcm9wZXJ0eU5hbWVBcnJheS5oIgogI2luY2x1ZGUgInFkYXRldGltZS5o
IgpAQCAtMTI5MCw2ICsxMjkxLDE2IEBAIHN0YXRpYyBKU0NsYXNzUmVmIHByb3RvdHlwZUZvclNp
Z25hbHNBbmRTbG90cygpCiAgICAgcmV0dXJuIGNsczsKIH0KIAordHlwZWRlZiBIYXNoTWFwPEpT
R2xvYmFsQ29udGV4dFJlZiwgSlNXZWFrT2JqZWN0TWFwUmVmPiBXZWFrUnVudGltZU1ldGhvZE1h
cDsKK3N0YXRpYyBXZWFrUnVudGltZU1ldGhvZE1hcCB3ZWFrUnVudGltZU1ldGhvZENhY2hlOwor
CitzdGF0aWMgdm9pZCBtZXRob2RNYXBDbGVhbmVyKEpTV2Vha09iamVjdE1hcFJlZiwgdm9pZCog
ZGF0YSkKK3sKKyAgICBKU0dsb2JhbENvbnRleHRSZWYgcmVmID0gc3RhdGljX2Nhc3Q8SlNHbG9i
YWxDb250ZXh0UmVmPihkYXRhKTsKKyAgICB3ZWFrUnVudGltZU1ldGhvZENhY2hlLnJlbW92ZShy
ZWYpOworfQorCisKIFF0UnVudGltZU1ldGhvZDo6UXRSdW50aW1lTWV0aG9kKEpTQ29udGV4dFJl
ZiBjdHgsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbiwgUU9iamVjdCogb2JqZWN0LCBjb25zdCBRQnl0
ZUFycmF5JiBpZGVudGlmaWVyLCBpbnQgaW5kZXgsIGludCBmbGFncywgUXRJbnN0YW5jZSogaW5z
dGFuY2UpCiAgICAgOiBtX29iamVjdChvYmplY3QpCiAgICAgLCBtX2lkZW50aWZpZXIoaWRlbnRp
ZmllcikKQEAgLTEzMDEsOCArMTMxMiwxNCBAQCBRdFJ1bnRpbWVNZXRob2Q6OlF0UnVudGltZU1l
dGhvZChKU0NvbnRleHRSZWYgY3R4LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24sIFFPYmplYwogCiBR
dFJ1bnRpbWVNZXRob2Q6On5RdFJ1bnRpbWVNZXRob2QoKQogewotICAgIGlmIChtX2pzT2JqZWN0
KQotICAgICAgICBKU09iamVjdFNldFByaXZhdGUodG9SZWYobV9qc09iamVjdC5nZXQoKSksIDAp
OworICAgIGZvciAoV2Vha1J1bnRpbWVNZXRob2RNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gd2Vh
a1J1bnRpbWVNZXRob2RDYWNoZS5iZWdpbigpLCBlbmQgPSB3ZWFrUnVudGltZU1ldGhvZENhY2hl
LmVuZCgpOworICAgICAgICAgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgIEpTT2JqZWN0UmVm
IG9iaiA9IEpTV2Vha09iamVjdE1hcEdldChpdC0+Zmlyc3QsIGl0LT5zZWNvbmQsIHRoaXMpOwor
ICAgICAgICBpZiAob2JqKSB7CisgICAgICAgICAgICBKU09iamVjdFNldFByaXZhdGUob2JqLCAw
KTsKKyAgICAgICAgICAgIEpTV2Vha09iamVjdE1hcFJlbW92ZShpdC0+Zmlyc3QsIGl0LT5zZWNv
bmQsIHRoaXMpOworICAgICAgICB9CisgICAgfQogfQogCiBKU1ZhbHVlUmVmIFF0UnVudGltZU1l
dGhvZDo6Y2FsbChKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpT
T2JqZWN0UmVmIC8qdGhpc09iamVjdCovLCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNW
YWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQpAQCAtMTM1MCw4ICsx
MzY3LDEzIEBAIEpTVmFsdWVSZWYgUXRSdW50aW1lTWV0aG9kOjpkaXNjb25uZWN0KEpTQ29udGV4
dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvCiAKIEpTT2JqZWN0UmVmIFF0UnVudGlt
ZU1ldGhvZDo6anNPYmplY3RSZWYoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYqIGV4
Y2VwdGlvbikKIHsKLSAgICBpZiAobV9qc09iamVjdCkKLSAgICAgICAgcmV0dXJuIHRvUmVmKG1f
anNPYmplY3QuZ2V0KCkpOworICAgIEpTR2xvYmFsQ29udGV4dFJlZiBnbG9iYWxDb250ZXh0ID0g
SlNDb250ZXh0R2V0R2xvYmFsQ29udGV4dChjb250ZXh0KTsKKyAgICBXZWFrUnVudGltZU1ldGhv
ZE1hcDo6aXRlcmF0b3IgY2FjaGUgPSB3ZWFrUnVudGltZU1ldGhvZENhY2hlLmZpbmQoZ2xvYmFs
Q29udGV4dCk7CisgICAgaWYgKGNhY2hlICE9IHdlYWtSdW50aW1lTWV0aG9kQ2FjaGUuZW5kKCkp
IHsKKyAgICAgICAgSlNPYmplY3RSZWYgY2FjaGVkTWV0aG9kID0gSlNXZWFrT2JqZWN0TWFwR2V0
KGNhY2hlLT5maXJzdCwgY2FjaGUtPnNlY29uZCwgdGhpcyk7CisgICAgICAgIGlmIChjYWNoZWRN
ZXRob2QpCisgICAgICAgICAgICByZXR1cm4gY2FjaGVkTWV0aG9kOworICAgIH0KIAogICAgIHN0
YXRpYyBjb25zdCBKU0NsYXNzRGVmaW5pdGlvbiBjbGFzc0RlZkZvckNvbm5lY3QgPSB7CiAgICAg
ICAgIDAsIDAsICJjb25uZWN0IiwgMCwgMCwgMCwKQEAgLTEzODcsNyArMTQwOSwxNCBAQCBKU09i
amVjdFJlZiBRdFJ1bnRpbWVNZXRob2Q6OmpzT2JqZWN0UmVmKEpTQ29udGV4dFJlZiBjb250ZXh0
LCBKU1ZhbHVlUmVmKiBleGNlcAogICAgIEpTT2JqZWN0U2V0UHJvcGVydHkoY29udGV4dCwgb2Jq
ZWN0LCBsZW5ndGhTdHIsIEpTVmFsdWVNYWtlTnVtYmVyKGNvbnRleHQsIDApLCBhdHRyaWJ1dGVz
LCBleGNlcHRpb24pOwogICAgIEpTT2JqZWN0U2V0UHJvcGVydHkoY29udGV4dCwgb2JqZWN0LCBu
YW1lU3RyLCBKU1ZhbHVlTWFrZVN0cmluZyhjb250ZXh0LCBhY3R1YWxOYW1lU3RyLmdldCgpKSwg
YXR0cmlidXRlcywgZXhjZXB0aW9uKTsKIAotICAgIG1fanNPYmplY3QgPSBQYXNzV2VhazxKU09i
amVjdD4odG9KUyhvYmplY3QpKTsKKyAgICBKU1dlYWtPYmplY3RNYXBSZWYgbWFwID0gMDsKKyAg
ICBpZiAoY2FjaGUgPT0gd2Vha1J1bnRpbWVNZXRob2RDYWNoZS5lbmQoKSkgeworICAgICAgICBt
YXAgPSBKU1dlYWtPYmplY3RNYXBDcmVhdGUoZ2xvYmFsQ29udGV4dCwgZ2xvYmFsQ29udGV4dCwg
bWV0aG9kTWFwQ2xlYW5lcik7CisgICAgICAgIHdlYWtSdW50aW1lTWV0aG9kQ2FjaGUuYWRkKGds
b2JhbENvbnRleHQsIG1hcCk7CisgICAgfSBlbHNlCisgICAgICAgIG1hcCA9IGNhY2hlLT5zZWNv
bmQ7CisgICAgSlNXZWFrT2JqZWN0TWFwU2V0KGdsb2JhbENvbnRleHQsIG1hcCwgdGhpcywgb2Jq
ZWN0KTsKKwogICAgIHJldHVybiBvYmplY3Q7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JyaWRnZS9xdC9xdF9ydW50aW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRf
cnVudGltZS5oCmluZGV4IDc2M2FjYmE1ZDA1OWU4MTk4YmJmNmU0ZWYwZDkzYjFjNGZhZGM1MzYu
LmI4ODgxNzNlMzg2ZWFkYTYxODYzYjYwYjYyYzE4OWVjOWVlMTBlMjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9ydW50aW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YnJpZGdlL3F0L3F0X3J1bnRpbWUuaApAQCAtMTIyLDcgKzEyMiw2IEBAIHByaXZhdGU6CiAgICAg
UUJ5dGVBcnJheSBtX2lkZW50aWZpZXI7CiAgICAgaW50IG1faW5kZXg7CiAgICAgaW50IG1fZmxh
Z3M7Ci0gICAgV2VhazxKU09iamVjdD4gbV9qc09iamVjdDsKICAgICBRdEluc3RhbmNlKiBtX2lu
c3RhbmNlOwogfTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158073</attachid>
            <date>2012-08-13 12:27:45 -0700</date>
            <delta_ts>2012-08-16 07:02:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-93872-20120813212722.patch</filename>
            <type>text/plain</type>
            <size>6697</size>
            <attacher name="Simon Hausmann">hausmann</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1NDMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
YmM0YjhlYTAyODM4YzQyYzVkMGQ5ZDQ4Y2Y2OWY4OTdkN2Y1YzNkLi5hZDIzZDJlYTgwZmU2ZTFi
ZDM4NTZhMWM3OWJiYTk1YmY3N2Q5ZTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMiBAQAorMjAxMi0wOC0xMyAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBu
b2tpYS5jb20+CisKKyAgICAgICAgW1F0XSBSZXBsYWNlIHVzZSBvZiBpbnRlcm5hbCBXZWFrIHNt
YXJ0IHBvaW50ZXIgd2l0aCBKU1dlYWtPYmplY3RNYXAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkzODcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUYXJnZXQucHJpOiBBZGQgbWlzc2luZyBKU1dlYWtP
YmplY3RNYXAgZmlsZSB0byBidWlsZC4KKwogMjAxMi0wOC0xMiAgQWxsYW4gU2FuZGZlbGQgSmVu
c2VuICA8YWxsYW4uamVuc2VuQG5va2lhLmNvbT4KIAogICAgICAgICBEb2Vzbid0IGJ1aWxkIHdp
dGggRU5BQkxFX0pJVD0wCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWNjNmE5ZTM5NDAwZGM3MTk1ZDdlZmM0ZjRh
M2ExZDA1OGRjODYzNi4uMGI0ODA3ZDE1MDNiYTY5NzExNmY1N2NhNmVkZDAyZjQ5MjNjODE0MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEyLTA4LTEzICBTaW1vbiBIYXVzbWFubiAg
PHNpbW9uLmhhdXNtYW5uQG5va2lhLmNvbT4KKworICAgICAgICBbUXRdIFJlcGxhY2UgdXNlIG9m
IGludGVybmFsIFdlYWsgc21hcnQgcG9pbnRlciB3aXRoIEpTV2Vha09iamVjdE1hcAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTM4NzIKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgaW50ZW50aW9uIG9m
IHRoaXMgcGF0Y2ggc2VyaWVzIGlzIHRvIHJlcGxhY2UgdXNlIG9mIGludGVybmFsIEpTQworICAg
ICAgICBBUEkgd2l0aCB1c2Ugb2YgdGhlIHN0YWJsZSBhbmQgcHVibGljIEMgQVBJLgorCisgICAg
ICAgIFRoZSBKU0M6OldlYWsgdGVtcGxhdGUgaXMgaW50ZXJuYWwgQVBJIGFuZCB0aGUgb25seSBw
YXJ0IG9mIHRoZSBDIEFQSQorICAgICAgICB0aGF0IGV4cG9zZXMgc2ltaWxhciBmdW5jdGlvbmFs
aXR5IGlzIHRoZSBKU1dlYWtPYmplY3RNYXAuIEl0IGlzCisgICAgICAgIHNwZWNpYWwgaW4gdGhl
IHNlbnNlIHRoYXQgaXRzIGxpZmUtdGltZSBpcyB0aWVkIHRvIHRoZSBsaWZlLXRpbWUgb2YgdGhl
CisgICAgICAgIEpTIGdsb2JhbCBvYmplY3QsIHdoaWNoIGluIHR1cm4gaXMgc3ViamVjdCB0byBn
YXJiYWdlIGNvbGxlY3Rpb24uIEluCisgICAgICAgIG9yZGVyIHRvIG1heGltaXplIHJlLXVzZSBv
ZiB0aGUgc2FtZSBtYXAgYWNyb3NzIGRpZmZlcmVudCBKU0NvbnRleHRSZWYKKyAgICAgICAgaW5z
dGFuY2VzLCB3ZSB1c2UgdGhlIGFzc29jaWF0ZWQgZ2xvYmFsIGNvbnRleHQgcmVmIGFzIG93bmVy
IG9mIHRoZQorICAgICAgICB3ZWFrIG1hcHMuIFRoZSBrZXkgaW4gdGhlIHdlYWsgbWFwIGlzIHRo
ZSBpZGVudGl0eSAocG9pbnRlcikgb2YgdGhlCisgICAgICAgIHJ1bnRpbWUgbWV0aG9kIG9iamVj
dCBpdHNlbGYuICBUaGUgaXRlcmF0aW9uIHRocm91Z2ggdGhlIG1hcHMgaXMKKyAgICAgICAgdGVk
aW91cywgYnV0IHNob3VsZCB1c3VhbGx5IG5vdCBnbyBiZXlvbmQganVzdCBhIGZldy4KKworICAg
ICAgICAqIGJyaWRnZS9xdC9xdF9ydW50aW1lLmNwcDoKKyAgICAgICAgKEJpbmRpbmdzKToKKyAg
ICAgICAgKEpTQzo6QmluZGluZ3M6Om1ldGhvZE1hcENsZWFuZXIpOgorICAgICAgICAoSlNDOjpC
aW5kaW5nczo6UXRSdW50aW1lTWV0aG9kOjp+UXRSdW50aW1lTWV0aG9kKToKKyAgICAgICAgKEpT
Qzo6QmluZGluZ3M6OlF0UnVudGltZU1ldGhvZDo6anNPYmplY3RSZWYpOgorICAgICAgICAqIGJy
aWRnZS9xdC9xdF9ydW50aW1lLmg6CisgICAgICAgIChRdFJ1bnRpbWVNZXRob2QpOgorCiAyMDEy
LTA2LTI0ICBSb2JlcnQgSG9nYW4gIDxyb2JlcnRAd2Via2l0Lm9yZz4KIAogICAgICAgICBDU1Mg
Mi4xIGZhaWx1cmU6IFdvcmQtc3BhY2luZyBhZmZlY3RzIGVhY2ggc3BhY2UgYW5kIG5vbi1icmVh
a2luZyBzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1RhcmdldC5wcmkg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaQppbmRleCAzZDBlNDFkZjQzZGFkOWE5
NjFmMTBmMWQ1MzFiMjU3YWJiYTEyMTI4Li5hMTJlNTg1NmVmZWYzZWM4ZTBkNzVmNTI5YjlkNzdi
MjM2NzYwYTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaQor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaQpAQCAtNDAsNiArNDAsNyBAQCBT
T1VSQ0VTICs9IFwKICAgICBBUEkvSlNPYmplY3RSZWYuY3BwIFwKICAgICBBUEkvSlNTdHJpbmdS
ZWYuY3BwIFwKICAgICBBUEkvSlNWYWx1ZVJlZi5jcHAgXAorICAgIEFQSS9KU1dlYWtPYmplY3RN
YXBSZWZQcml2YXRlLmNwcCBcCiAgICAgQVBJL09wYXF1ZUpTU3RyaW5nLmNwcCBcCiAgICAgYXNz
ZW1ibGVyL0FSTUFzc2VtYmxlci5jcHAgXAogICAgIGFzc2VtYmxlci9BUk12N0Fzc2VtYmxlci5j
cHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuY3BwCmluZGV4IGNhYTkyMGM4
ZGNlYWI0NWI3ZmUyODE0ZWE2NDk4M2E0ZjI3NDc0MTguLmQyMDAxMjkwNDMzNTFkMWYwMmY2YmQ0
ZDMyOTQzODUzNjY2YWE5OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9x
dF9ydW50aW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcnVudGltZS5j
cHAKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJKU09iamVjdC5oIgogI2luY2x1ZGUgIkpT
UmV0YWluUHRyLmgiCiAjaW5jbHVkZSAiSlNVaW50OENsYW1wZWRBcnJheS5oIgorI2luY2x1ZGUg
IkpTV2Vha09iamVjdE1hcFJlZlByaXZhdGUuaCIKICNpbmNsdWRlICJPYmplY3RQcm90b3R5cGUu
aCIKICNpbmNsdWRlICJQcm9wZXJ0eU5hbWVBcnJheS5oIgogI2luY2x1ZGUgInFkYXRldGltZS5o
IgpAQCAtMTI5MCw2ICsxMjkxLDE1IEBAIHN0YXRpYyBKU0NsYXNzUmVmIHByb3RvdHlwZUZvclNp
Z25hbHNBbmRTbG90cygpCiAgICAgcmV0dXJuIGNsczsKIH0KIAordHlwZWRlZiBIYXNoTWFwPEpT
R2xvYmFsQ29udGV4dFJlZiwgSlNXZWFrT2JqZWN0TWFwUmVmPiBXZWFrUnVudGltZU1ldGhvZE1h
cDsKK3N0YXRpYyBXZWFrUnVudGltZU1ldGhvZE1hcCB3ZWFrUnVudGltZU1ldGhvZENhY2hlOwor
CitzdGF0aWMgdm9pZCBtZXRob2RNYXBDbGVhbmVyKEpTV2Vha09iamVjdE1hcFJlZiwgdm9pZCog
ZGF0YSkKK3sKKyAgICBKU0dsb2JhbENvbnRleHRSZWYgcmVmID0gc3RhdGljX2Nhc3Q8SlNHbG9i
YWxDb250ZXh0UmVmPihkYXRhKTsKKyAgICB3ZWFrUnVudGltZU1ldGhvZENhY2hlLnJlbW92ZShy
ZWYpOworfQorCiBRdFJ1bnRpbWVNZXRob2Q6OlF0UnVudGltZU1ldGhvZChKU0NvbnRleHRSZWYg
Y3R4LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24sIFFPYmplY3QqIG9iamVjdCwgY29uc3QgUUJ5dGVB
cnJheSYgaWRlbnRpZmllciwgaW50IGluZGV4LCBpbnQgZmxhZ3MsIFF0SW5zdGFuY2UqIGluc3Rh
bmNlKQogICAgIDogbV9vYmplY3Qob2JqZWN0KQogICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZp
ZXIpCkBAIC0xMzAxLDggKzEzMTEsMTMgQEAgUXRSdW50aW1lTWV0aG9kOjpRdFJ1bnRpbWVNZXRo
b2QoSlNDb250ZXh0UmVmIGN0eCwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uLCBRT2JqZWMKIAogUXRS
dW50aW1lTWV0aG9kOjp+UXRSdW50aW1lTWV0aG9kKCkKIHsKLSAgICBpZiAobV9qc09iamVjdCkK
LSAgICAgICAgSlNPYmplY3RTZXRQcml2YXRlKHRvUmVmKG1fanNPYmplY3QuZ2V0KCkpLCAwKTsK
KyAgICBmb3IgKFdlYWtSdW50aW1lTWV0aG9kTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IHdlYWtS
dW50aW1lTWV0aG9kQ2FjaGUuYmVnaW4oKSwgZW5kID0gd2Vha1J1bnRpbWVNZXRob2RDYWNoZS5l
bmQoKTsKKyAgICAgICAgIGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICBpZiAoSlNPYmplY3RS
ZWYgb2JqID0gSlNXZWFrT2JqZWN0TWFwR2V0KGl0LT5maXJzdCwgaXQtPnNlY29uZCwgdGhpcykp
IHsKKyAgICAgICAgICAgIEpTT2JqZWN0U2V0UHJpdmF0ZShvYmosIDApOworICAgICAgICAgICAg
SlNXZWFrT2JqZWN0TWFwUmVtb3ZlKGl0LT5maXJzdCwgaXQtPnNlY29uZCwgdGhpcyk7CisgICAg
ICAgIH0KKyAgICB9CiB9CiAKIEpTVmFsdWVSZWYgUXRSdW50aW1lTWV0aG9kOjpjYWxsKEpTQ29u
dGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgLyp0aGlz
T2JqZWN0Ki8sIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50
c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCkBAIC0xMzUwLDggKzEzNjUsMTIgQEAgSlNWYWx1
ZVJlZiBRdFJ1bnRpbWVNZXRob2Q6OmRpc2Nvbm5lY3QoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpT
T2JqZWN0UmVmIGZ1bmN0aW8KIAogSlNPYmplY3RSZWYgUXRSdW50aW1lTWV0aG9kOjpqc09iamVj
dFJlZihKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewotICAg
IGlmIChtX2pzT2JqZWN0KQotICAgICAgICByZXR1cm4gdG9SZWYobV9qc09iamVjdC5nZXQoKSk7
CisgICAgSlNHbG9iYWxDb250ZXh0UmVmIGdsb2JhbENvbnRleHQgPSBKU0NvbnRleHRHZXRHbG9i
YWxDb250ZXh0KGNvbnRleHQpOworICAgIFdlYWtSdW50aW1lTWV0aG9kTWFwOjppdGVyYXRvciBj
YWNoZSA9IHdlYWtSdW50aW1lTWV0aG9kQ2FjaGUuZmluZChnbG9iYWxDb250ZXh0KTsKKyAgICBp
ZiAoY2FjaGUgIT0gd2Vha1J1bnRpbWVNZXRob2RDYWNoZS5lbmQoKSkgeworICAgICAgICBpZiAo
SlNPYmplY3RSZWYgY2FjaGVkTWV0aG9kID0gSlNXZWFrT2JqZWN0TWFwR2V0KGNhY2hlLT5maXJz
dCwgY2FjaGUtPnNlY29uZCwgdGhpcykpCisgICAgICAgICAgICByZXR1cm4gY2FjaGVkTWV0aG9k
OworICAgIH0KIAogICAgIHN0YXRpYyBjb25zdCBKU0NsYXNzRGVmaW5pdGlvbiBjbGFzc0RlZkZv
ckNvbm5lY3QgPSB7CiAgICAgICAgIDAsIDAsICJjb25uZWN0IiwgMCwgMCwgMCwKQEAgLTEzODcs
NyArMTQwNiwxNCBAQCBKU09iamVjdFJlZiBRdFJ1bnRpbWVNZXRob2Q6OmpzT2JqZWN0UmVmKEpT
Q29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmKiBleGNlcAogICAgIEpTT2JqZWN0U2V0UHJv
cGVydHkoY29udGV4dCwgb2JqZWN0LCBsZW5ndGhTdHIsIEpTVmFsdWVNYWtlTnVtYmVyKGNvbnRl
eHQsIDApLCBhdHRyaWJ1dGVzLCBleGNlcHRpb24pOwogICAgIEpTT2JqZWN0U2V0UHJvcGVydHko
Y29udGV4dCwgb2JqZWN0LCBuYW1lU3RyLCBKU1ZhbHVlTWFrZVN0cmluZyhjb250ZXh0LCBhY3R1
YWxOYW1lU3RyLmdldCgpKSwgYXR0cmlidXRlcywgZXhjZXB0aW9uKTsKIAotICAgIG1fanNPYmpl
Y3QgPSBQYXNzV2VhazxKU09iamVjdD4odG9KUyhvYmplY3QpKTsKKyAgICBKU1dlYWtPYmplY3RN
YXBSZWYgbWFwOworICAgIGlmIChjYWNoZSA9PSB3ZWFrUnVudGltZU1ldGhvZENhY2hlLmVuZCgp
KSB7CisgICAgICAgIG1hcCA9IEpTV2Vha09iamVjdE1hcENyZWF0ZShnbG9iYWxDb250ZXh0LCBn
bG9iYWxDb250ZXh0LCBtZXRob2RNYXBDbGVhbmVyKTsKKyAgICAgICAgd2Vha1J1bnRpbWVNZXRo
b2RDYWNoZS5hZGQoZ2xvYmFsQ29udGV4dCwgbWFwKTsKKyAgICB9IGVsc2UKKyAgICAgICAgbWFw
ID0gY2FjaGUtPnNlY29uZDsKKyAgICBKU1dlYWtPYmplY3RNYXBTZXQoZ2xvYmFsQ29udGV4dCwg
bWFwLCB0aGlzLCBvYmplY3QpOworCiAgICAgcmV0dXJuIG9iamVjdDsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuaCBiL1NvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9xdC9xdF9ydW50aW1lLmgKaW5kZXggNzYzYWNiYTVkMDU5ZTgxOThiYmY2ZTRlZjBk
OTNiMWM0ZmFkYzUzNi4uYjg4ODE3M2UzODZlYWRhNjE4NjNiNjBiNjJjMTg5ZWM5ZWUxMGUyMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcnVudGltZS5oCkBAIC0xMjIsNyArMTIyLDYgQEAg
cHJpdmF0ZToKICAgICBRQnl0ZUFycmF5IG1faWRlbnRpZmllcjsKICAgICBpbnQgbV9pbmRleDsK
ICAgICBpbnQgbV9mbGFnczsKLSAgICBXZWFrPEpTT2JqZWN0PiBtX2pzT2JqZWN0OwogICAgIFF0
SW5zdGFuY2UqIG1faW5zdGFuY2U7CiB9OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158805</attachid>
            <date>2012-08-16 07:02:14 -0700</date>
            <delta_ts>2012-08-17 01:59:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-93872-20120816160254.patch</filename>
            <type>text/plain</type>
            <size>9067</size>
            <attacher name="Simon Hausmann">hausmann</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1NTUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
ZjExYzgxNmIxYWRjZTJjMDYzNmMwMjhlNWZhNzdlMzgxY2JjYjZiLi42ZDFkYTg0MjNlYzBiMmQ0
ZmI4OTc4ZTExNDA5MGNjMmRkNmJlOWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMiBAQAorMjAxMi0wOC0xNCAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBu
b2tpYS5jb20+CisKKyAgICAgICAgW1F0XSBSZXBsYWNlIHVzZSBvZiBpbnRlcm5hbCBXZWFrIHNt
YXJ0IHBvaW50ZXIgd2l0aCBKU1dlYWtPYmplY3RNYXAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkzODcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2Vu
bmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCisKKyAgICAgICAgKiBUYXJnZXQucHJpOiBBZGQgbWlz
c2luZyBKU1dlYWtPYmplY3RNYXAgZmlsZSB0byBidWlsZC4KKwogMjAxMi0wOC0xNCAgR2Fib3Ig
QmFsbGFiYXMgIDxnYWJvcmJAaW5mLnUtc3plZ2VkLmh1PgogCiAgICAgICAgIFJlbmFtZSBmdW5j
dGlvbnMgaW4gdGhlIEFSTSBwb3J0IG9mIERGRy1KSVQgZm9yIGJldHRlciBjb2RlIHJlYWRhYmls
aXR5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IDQ3ZmJhYTViMGZjNDIxOTNhNDE1OTQxOTQ0ZGIxZWU5MDJiMDRk
N2UuLmFhNDAyMDE3Yzk3MjAyYmMzNGUxZmVlZmE0NmFjNmRmOTM0Mjk1NmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSw0MiBAQAorMjAxMi0wOC0xNCAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVz
bWFubkBub2tpYS5jb20+CisKKyAgICAgICAgW1F0XSBSZXBsYWNlIHVzZSBvZiBpbnRlcm5hbCBX
ZWFrIHNtYXJ0IHBvaW50ZXIgd2l0aCBKU1dlYWtPYmplY3RNYXAKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkzODcyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCisKKyAgICAgICAgVGhlIGludGVudGlvbiBv
ZiB0aGlzIHBhdGNoIHNlcmllcyBpcyB0byByZXBsYWNlIHVzZSBvZiBpbnRlcm5hbCBKU0MKKyAg
ICAgICAgQVBJIHdpdGggdXNlIG9mIHRoZSBzdGFibGUgYW5kIHB1YmxpYyBDIEFQSS4KKworICAg
ICAgICBUaGUgSlNDOjpXZWFrIHRlbXBsYXRlIGlzIGludGVybmFsIEFQSSBhbmQgdGhlIG9ubHkg
cGFydCBvZiB0aGUgQyBBUEkKKyAgICAgICAgdGhhdCBleHBvc2VzIHNpbWlsYXIgZnVuY3Rpb25h
bGl0eSBpcyB0aGUgSlNXZWFrT2JqZWN0TWFwLiBJdCBpcworICAgICAgICBzcGVjaWFsIGluIHRo
ZSBzZW5zZSB0aGF0IGl0cyBsaWZlLXRpbWUgaXMgdGllZCB0byB0aGUgbGlmZS10aW1lIG9mIHRo
ZQorICAgICAgICBKUyBnbG9iYWwgb2JqZWN0LCB3aGljaCBpbiB0dXJuIGlzIHN1YmplY3QgdG8g
Z2FyYmFnZSBjb2xsZWN0aW9uLiBJbgorICAgICAgICBvcmRlciB0byBtYXhpbWl6ZSByZS11c2Ug
b2YgdGhlIHNhbWUgbWFwIGFjcm9zcyBkaWZmZXJlbnQgSlNDb250ZXh0UmVmCisgICAgICAgIGlu
c3RhbmNlcywgd2UgdXNlIG9uZSBKU1dlYWtPYmplY3RNYXAgcGVyIGNvbnRleHQgZ3JvdXAgYW5k
IHN0b3JlIHRoZQorICAgICAgICBtYXAgaW4gYSBzZXBhcmF0ZSBjb250ZXh0LgorCisgICAgICAg
ICogYnJpZGdlL3F0L3F0X2luc3RhbmNlLmNwcDoKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OnVu
dXNlZFdlYWtPYmplY3RNYXBDYWxsYmFjayk6CisgICAgICAgIChCaW5kaW5ncyk6CisgICAgICAg
IChKU0M6OkJpbmRpbmdzOjpXZWFrTWFwSW1wbDo6V2Vha01hcEltcGwpOgorICAgICAgICAoSlND
OjpCaW5kaW5nczo6V2Vha01hcEltcGw6On5XZWFrTWFwSW1wbCk6CisgICAgICAgIChKU0M6OkJp
bmRpbmdzOjpXZWFrTWFwOjp+V2Vha01hcCk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpXZWFr
TWFwOjpzZXQpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6V2Vha01hcDo6Z2V0KToKKyAgICAg
ICAgKEpTQzo6QmluZGluZ3M6OldlYWtNYXA6OnJlbW92ZSk6CisgICAgICAgICogYnJpZGdlL3F0
L3F0X2luc3RhbmNlLmg6CisgICAgICAgIChXZWFrTWFwSW1wbCk6CisgICAgICAgIChCaW5kaW5n
cyk6CisgICAgICAgIChXZWFrTWFwKToKKyAgICAgICAgKFF0SW5zdGFuY2UpOgorICAgICAgICAq
IGJyaWRnZS9xdC9xdF9ydW50aW1lLmNwcDoKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OlF0UnVu
dGltZU1ldGhvZDo6flF0UnVudGltZU1ldGhvZCk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpR
dFJ1bnRpbWVNZXRob2Q6OmpzT2JqZWN0UmVmKToKKyAgICAgICAgKiBicmlkZ2UvcXQvcXRfcnVu
dGltZS5oOgorICAgICAgICAoUXRSdW50aW1lTWV0aG9kKToKKworCiAyMDEyLTA4LTE0ICBFZCBC
YWtlciAgPGVkYmFrZXJAcmltLmNvbT4KIAogICAgICAgICBbQmxhY2tCZXJyeV0gTGF5ZXJBbmlt
YXRpb24gaXMgbm90IGltbXV0YWJsZSwgd2hpY2ggbWFrZXMgZGVyZWZlcmVuY2luZyBhbiBleHBl
bnNpdmUgb3BlcmF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0
LnByaSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJnZXQucHJpCmluZGV4IDNkMGU0MWRmNDNk
YWQ5YTk2MWYxMGYxZDUzMWIyNTdhYmJhMTIxMjguLmExMmU1ODU2ZWZlZjNlYzhlMGQ3NWY1Mjli
OWQ3N2IyMzY3NjBhNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJnZXQu
cHJpCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJnZXQucHJpCkBAIC00MCw2ICs0MCw3
IEBAIFNPVVJDRVMgKz0gXAogICAgIEFQSS9KU09iamVjdFJlZi5jcHAgXAogICAgIEFQSS9KU1N0
cmluZ1JlZi5jcHAgXAogICAgIEFQSS9KU1ZhbHVlUmVmLmNwcCBcCisgICAgQVBJL0pTV2Vha09i
amVjdE1hcFJlZlByaXZhdGUuY3BwIFwKICAgICBBUEkvT3BhcXVlSlNTdHJpbmcuY3BwIFwKICAg
ICBhc3NlbWJsZXIvQVJNQXNzZW1ibGVyLmNwcCBcCiAgICAgYXNzZW1ibGVyL0FSTXY3QXNzZW1i
bGVyLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfaW5zdGFu
Y2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X2luc3RhbmNlLmNwcAppbmRleCA1
MTNkNzExZGI1NjU5MTI4ZDBkZjQ3YmE2MDQ2NjRkM2E4ZWQ0ODNlLi5jZDYxMzYwM2Q5YjZlMWMy
YzQ3ZjRkODFlMDRhNmE2ZmVhMzFlNGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlk
Z2UvcXQvcXRfaW5zdGFuY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9p
bnN0YW5jZS5jcHAKQEAgLTQwLDYgKzQwLDY1IEBACiBuYW1lc3BhY2UgSlNDIHsKIG5hbWVzcGFj
ZSBCaW5kaW5ncyB7CiAKK3N0YXRpYyB2b2lkIHVudXNlZFdlYWtPYmplY3RNYXBDYWxsYmFjayhK
U1dlYWtPYmplY3RNYXBSZWYsIHZvaWQqKQoreworfQorCitXZWFrTWFwSW1wbDo6V2Vha01hcElt
cGwoSlNDb250ZXh0R3JvdXBSZWYgZ3JvdXApCit7CisgICAgbV9jb250ZXh0ID0gSlNHbG9iYWxD
b250ZXh0Q3JlYXRlSW5Hcm91cChncm91cCwgMCk7CisgICAgLy8gRGVsZXRlZCBieSBHQyB3aGVu
IG1fY29udGV4dCdzIGdsb2JhbE9iamVjdCBnZXRzIGNvbGxlY3RlZAorICAgIG1fbWFwID0gSlNX
ZWFrT2JqZWN0TWFwQ3JlYXRlKG1fY29udGV4dCwgMCwgdW51c2VkV2Vha09iamVjdE1hcENhbGxi
YWNrKTsKK30KKworV2Vha01hcEltcGw6On5XZWFrTWFwSW1wbCgpCit7CisgICAgaWYgKG1fY29u
dGV4dCkKKyAgICAgICAgSlNHbG9iYWxDb250ZXh0UmVsZWFzZShtX2NvbnRleHQpOworICAgIG1f
Y29udGV4dCA9IDA7CisgICAgbV9tYXAgPSAwOworfQorCit0eXBlZGVmIEhhc2hNYXA8SlNDb250
ZXh0R3JvdXBSZWYsIFJlZlB0cjxXZWFrTWFwSW1wbD4gPiBXZWFrTWFwU2V0Oworc3RhdGljIFdl
YWtNYXBTZXQgd2Vha01hcHM7CisKK1dlYWtNYXA6On5XZWFrTWFwKCkKK3sKKyAgICAvLyBKdXN0
IHVzIGFuZCB0aGUgcmVmIGluIHRoZSB3ZWFrTWFwcyBsZWZ0PworICAgIGlmIChtX2ltcGwgJiYg
bV9pbXBsLT5yZWZDb3VudCgpID09IDIpIHsKKyAgICAgICAgd2Vha01hcHMucmVtb3ZlKEpTQ29u
dGV4dEdldEdyb3VwKG1faW1wbC0+bV9jb250ZXh0KSk7CisgICAgICAgIEFTU0VSVChtX2ltcGwt
Pmhhc09uZVJlZigpKTsKKyAgICB9Cit9CisKK3ZvaWQgV2Vha01hcDo6c2V0KEpTQ29udGV4dFJl
ZiBjb250ZXh0LCB2b2lkICprZXksIEpTT2JqZWN0UmVmIG9iamVjdCkKK3sKKyAgICBpZiAoIW1f
aW1wbCkgeworICAgICAgICBKU0NvbnRleHRHcm91cFJlZiBncm91cCA9IEpTQ29udGV4dEdldEdy
b3VwKGNvbnRleHQpOworICAgICAgICBXZWFrTWFwU2V0OjppdGVyYXRvciBjYWNoZWRNYXAgPSB3
ZWFrTWFwcy5maW5kKGdyb3VwKTsKKyAgICAgICAgaWYgKGNhY2hlZE1hcCA9PSB3ZWFrTWFwcy5l
bmQoKSkgeworICAgICAgICAgICAgbV9pbXBsID0gYWRvcHRSZWYobmV3IFdlYWtNYXBJbXBsKGdy
b3VwKSk7CisgICAgICAgICAgICB3ZWFrTWFwcy5hZGQoZ3JvdXAsIG1faW1wbCk7CisgICAgICAg
IH0gZWxzZQorICAgICAgICAgICAgbV9pbXBsID0gY2FjaGVkTWFwLT5zZWNvbmQ7CisgICAgfQor
ICAgIEpTV2Vha09iamVjdE1hcFNldChtX2ltcGwtPm1fY29udGV4dCwgbV9pbXBsLT5tX21hcCwg
a2V5LCBvYmplY3QpOworfQorCitKU09iamVjdFJlZiBXZWFrTWFwOjpnZXQodm9pZCoga2V5KQor
eworICAgIGlmICghbV9pbXBsKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gSlNXZWFr
T2JqZWN0TWFwR2V0KG1faW1wbC0+bV9jb250ZXh0LCBtX2ltcGwtPm1fbWFwLCBrZXkpOworfQor
Cit2b2lkIFdlYWtNYXA6OnJlbW92ZSh2b2lkICprZXkpCit7CisgICAgaWYgKCFtX2ltcGwpCisg
ICAgICAgIHJldHVybjsKKyAgICBKU1dlYWtPYmplY3RNYXBSZW1vdmUobV9pbXBsLT5tX2NvbnRl
eHQsIG1faW1wbC0+bV9tYXAsIGtleSk7Cit9CisKIC8vIENhY2hlIFF0SW5zdGFuY2VzCiB0eXBl
ZGVmIFFNdWx0aUhhc2g8dm9pZCosIFF0SW5zdGFuY2UqPiBRT2JqZWN0SW5zdGFuY2VNYXA7CiBz
dGF0aWMgUU9iamVjdEluc3RhbmNlTWFwIGNhY2hlZEluc3RhbmNlczsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9pbnN0YW5jZS5oIGIvU291cmNlL1dlYkNvcmUvYnJp
ZGdlL3F0L3F0X2luc3RhbmNlLmgKaW5kZXggY2RkNzM0YWZjNTNhODAxYjI2NGFkOWNmMmM0MzMx
ZWVmNjRkM2Y3My4uZTVkMmE5M2FhODU0ZmFiMGMzZDhhNjkwNGQyYmYyYmFiNGE0NWY0NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X2luc3RhbmNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X2luc3RhbmNlLmgKQEAgLTIxLDYgKzIxLDcgQEAKICNk
ZWZpbmUgcXRfaW5zdGFuY2VfaAogCiAjaW5jbHVkZSAiQnJpZGdlSlNDLmgiCisjaW5jbHVkZSAi
SlNXZWFrT2JqZWN0TWFwUmVmUHJpdmF0ZS5oIgogI2luY2x1ZGUgPFFQb2ludGVyPgogI2luY2x1
ZGUgIldlYWsuaCIKICNpbmNsdWRlICJydW50aW1lX3Jvb3QuaCIKQEAgLTM1LDYgKzM2LDI3IEBA
IGNsYXNzIFF0Q2xhc3M7CiBjbGFzcyBRdEZpZWxkOwogY2xhc3MgUXRSdW50aW1lTWV0aG9kOwog
CitjbGFzcyBXZWFrTWFwSW1wbCA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYWtNYXBJbXBsPiB7Citw
dWJsaWM6CisgICAgV2Vha01hcEltcGwoSlNDb250ZXh0R3JvdXBSZWYpOworICAgIH5XZWFrTWFw
SW1wbCgpOworCisgICAgSlNHbG9iYWxDb250ZXh0UmVmIG1fY29udGV4dDsKKyAgICBKU1dlYWtP
YmplY3RNYXBSZWYgbV9tYXA7Cit9OworCitjbGFzcyBXZWFrTWFwIHsKK3B1YmxpYzoKKyAgICB+
V2Vha01hcCgpOworCisgICAgdm9pZCBzZXQoSlNDb250ZXh0UmVmLCB2b2lkKiBrZXksIEpTT2Jq
ZWN0UmVmKTsKKyAgICBKU09iamVjdFJlZiBnZXQodm9pZCoga2V5KTsKKyAgICB2b2lkIHJlbW92
ZSh2b2lkKiBrZXkpOworCitwcml2YXRlOgorICAgIFJlZlB0cjxXZWFrTWFwSW1wbD4gbV9pbXBs
OworfTsKKwogY2xhc3MgUXRJbnN0YW5jZSA6IHB1YmxpYyBJbnN0YW5jZSB7CiBwdWJsaWM6CiAg
ICAgZW51bSBWYWx1ZU93bmVyc2hpcCB7CkBAIC04MSwxMSArMTAzLDEzIEBAIHByaXZhdGU6CiAK
ICAgICBmcmllbmQgY2xhc3MgUXRDbGFzczsKICAgICBmcmllbmQgY2xhc3MgUXRGaWVsZDsKKyAg
ICBmcmllbmQgY2xhc3MgUXRSdW50aW1lTWV0aG9kOwogICAgIFF0SW5zdGFuY2UoUU9iamVjdCos
IFBhc3NSZWZQdHI8Um9vdE9iamVjdD4sIFZhbHVlT3duZXJzaGlwKTsgLy8gRmFjdG9yeSBwcm9k
dWNlZCBvbmx5Li4KICAgICBtdXRhYmxlIFF0Q2xhc3MqIG1fY2xhc3M7CiAgICAgUVBvaW50ZXI8
UU9iamVjdD4gbV9vYmplY3Q7CiAgICAgUU9iamVjdCogbV9oYXNoa2V5OwogICAgIG11dGFibGUg
UUhhc2g8UUJ5dGVBcnJheSwgUXRSdW50aW1lTWV0aG9kKj4gbV9tZXRob2RzOworICAgIFdlYWtN
YXAgbV9jYWNoZWRNZXRob2RzOwogICAgIG11dGFibGUgUUhhc2g8UVN0cmluZywgUXRGaWVsZCo+
IG1fZmllbGRzOwogICAgIFZhbHVlT3duZXJzaGlwIG1fb3duZXJzaGlwOwogfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9ydW50aW1lLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JyaWRnZS9xdC9xdF9ydW50aW1lLmNwcAppbmRleCAyY2QyZjU4MzlhMDY3OWY5ZWM1MzFh
NDU4ZGQ3NGFmZWQwNGFhMmViLi5hZDUwN2I0Nzc3MzVlMjJiYmZjN2JmZDI4NGY1YjAwZjY3MTU3
YjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcnVudGltZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuY3BwCkBAIC0xMzAxLDgg
KzEzMDEsOSBAQCBRdFJ1bnRpbWVNZXRob2Q6OlF0UnVudGltZU1ldGhvZChKU0NvbnRleHRSZWYg
Y3R4LCBRT2JqZWN0KiBvYmplY3QsIGNvbnN0IFFCeXRlQQogCiBRdFJ1bnRpbWVNZXRob2Q6On5R
dFJ1bnRpbWVNZXRob2QoKQogewotICAgIGlmIChtX2pzT2JqZWN0KQotICAgICAgICBKU09iamVj
dFNldFByaXZhdGUodG9SZWYobV9qc09iamVjdC5nZXQoKSksIDApOworICAgIGlmIChKU09iamVj
dFJlZiBjYWNoZWRXcmFwcGVyID0gbV9pbnN0YW5jZS0+bV9jYWNoZWRNZXRob2RzLmdldCh0aGlz
KSkKKyAgICAgICAgSlNPYmplY3RTZXRQcml2YXRlKGNhY2hlZFdyYXBwZXIsIDApOworICAgIG1f
aW5zdGFuY2UtPm1fY2FjaGVkTWV0aG9kcy5yZW1vdmUodGhpcyk7CiB9CiAKIEpTVmFsdWVSZWYg
UXRSdW50aW1lTWV0aG9kOjpjYWxsKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBm
dW5jdGlvbiwgSlNPYmplY3RSZWYgLyp0aGlzT2JqZWN0Ki8sIHNpemVfdCBhcmd1bWVudENvdW50
LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCkBA
IC0xMzUwLDggKzEzNTEsOCBAQCBKU1ZhbHVlUmVmIFF0UnVudGltZU1ldGhvZDo6ZGlzY29ubmVj
dChKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3RpbwogCiBKU09iamVjdFJl
ZiBRdFJ1bnRpbWVNZXRob2Q6OmpzT2JqZWN0UmVmKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1Zh
bHVlUmVmKiBleGNlcHRpb24pCiB7Ci0gICAgaWYgKG1fanNPYmplY3QpCi0gICAgICAgIHJldHVy
biB0b1JlZihtX2pzT2JqZWN0LmdldCgpKTsKKyAgICBpZiAoSlNPYmplY3RSZWYgY2FjaGVkV3Jh
cHBlciA9IG1faW5zdGFuY2UtPm1fY2FjaGVkTWV0aG9kcy5nZXQodGhpcykpCisgICAgICAgIHJl
dHVybiBjYWNoZWRXcmFwcGVyOwogCiAgICAgc3RhdGljIGNvbnN0IEpTQ2xhc3NEZWZpbml0aW9u
IGNsYXNzRGVmRm9yQ29ubmVjdCA9IHsKICAgICAgICAgMCwgMCwgImNvbm5lY3QiLCAwLCAwLCAw
LApAQCAtMTM4Nyw3ICsxMzg4LDggQEAgSlNPYmplY3RSZWYgUXRSdW50aW1lTWV0aG9kOjpqc09i
amVjdFJlZihKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiogZXhjZXAKICAgICBKU09i
amVjdFNldFByb3BlcnR5KGNvbnRleHQsIG9iamVjdCwgbGVuZ3RoU3RyLCBKU1ZhbHVlTWFrZU51
bWJlcihjb250ZXh0LCAwKSwgYXR0cmlidXRlcywgZXhjZXB0aW9uKTsKICAgICBKU09iamVjdFNl
dFByb3BlcnR5KGNvbnRleHQsIG9iamVjdCwgbmFtZVN0ciwgSlNWYWx1ZU1ha2VTdHJpbmcoY29u
dGV4dCwgYWN0dWFsTmFtZVN0ci5nZXQoKSksIGF0dHJpYnV0ZXMsIGV4Y2VwdGlvbik7CiAKLSAg
ICBtX2pzT2JqZWN0ID0gUGFzc1dlYWs8SlNPYmplY3Q+KHRvSlMob2JqZWN0KSk7CisgICAgbV9p
bnN0YW5jZS0+bV9jYWNoZWRNZXRob2RzLnNldChjb250ZXh0LCB0aGlzLCBvYmplY3QpOworCiAg
ICAgcmV0dXJuIG9iamVjdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdl
L3F0L3F0X3J1bnRpbWUuaCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9ydW50aW1lLmgK
aW5kZXggOTg3NTZkMTMzMmMzYmQxM2VmYjQ4MjE4NGIwMGQ2YWZkYTQ2MGE1NS4uYTkxZTRmNTEz
ZWRlNGQ1MmM2ZDY4ZWJiMWZkZjVmZDI4NGNiNzhiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQv
cXRfcnVudGltZS5oCkBAIC0xMjIsNyArMTIyLDYgQEAgcHJpdmF0ZToKICAgICBRQnl0ZUFycmF5
IG1faWRlbnRpZmllcjsKICAgICBpbnQgbV9pbmRleDsKICAgICBpbnQgbV9mbGFnczsKLSAgICBX
ZWFrPEpTT2JqZWN0PiBtX2pzT2JqZWN0OwogICAgIFF0SW5zdGFuY2UqIG1faW5zdGFuY2U7CiB9
OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>159049</attachid>
            <date>2012-08-17 01:59:21 -0700</date>
            <delta_ts>2012-08-17 05:26:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-93872-20120817110003.patch</filename>
            <type>text/plain</type>
            <size>8997</size>
            <attacher name="Simon Hausmann">hausmann</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1Nzc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
MjE1MTllYmRlYmE4MmQ1OGJhMDc0MDE3YzMzNDVhYTA0MmFiNjUwLi5lYWFjNjE3MjI2OTBhMDA0
ZTM4N2E4ZjY2YjQzNTZhMDVkY2FmYWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMiBAQAorMjAxMi0wOC0xNiAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBu
b2tpYS5jb20+CisKKyAgICAgICAgW1F0XSBSZXBsYWNlIHVzZSBvZiBpbnRlcm5hbCBXZWFrIHNt
YXJ0IHBvaW50ZXIgd2l0aCBKU1dlYWtPYmplY3RNYXAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkzODcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUYXJnZXQucHJpOiBBZGQgbWlzc2luZyBKU1dlYWtP
YmplY3RNYXAgZmlsZSB0byBidWlsZC4KKwogMjAxMi0wOC0xNSAgQnJ1bm8gZGUgT2xpdmVpcmEg
QWJpbmFkZXIgIDxicnVuby5hYmluYWRlckBiYXN5c2tvbS5jb20+CiAKICAgICAgICAgW2NzczMt
dGV4dF0gQWRkIENTUzMgVGV4dCBkZWNvcmF0aW9uIGNvbXBpbGUgZmxhZwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4
IGExYjdiNTBkZGZmNGZlMmU5ODRjMDY4N2FjODY0NDFjMDU4MDY0ZDUuLjFiNmQ5MGQwZGQ4YWI3
ODUzYTVjMDFhZWQ2YjcyZDY3NmQwZGU4ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MiBAQAor
MjAxMi0wOC0xNiAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBub2tpYS5jb20+CisK
KyAgICAgICAgW1F0XSBSZXBsYWNlIHVzZSBvZiBpbnRlcm5hbCBXZWFrIHNtYXJ0IHBvaW50ZXIg
d2l0aCBKU1dlYWtPYmplY3RNYXAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTkzODcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVGhlIGludGVudGlvbiBvZiB0aGlzIHBhdGNoIHNlcmllcyBpcyB0byByZXBs
YWNlIHVzZSBvZiBpbnRlcm5hbCBKU0MKKyAgICAgICAgQVBJIHdpdGggdXNlIG9mIHRoZSBzdGFi
bGUgYW5kIHB1YmxpYyBDIEFQSS4KKworICAgICAgICBUaGUgSlNDOjpXZWFrIHRlbXBsYXRlIGlz
IGludGVybmFsIEFQSSBhbmQgdGhlIG9ubHkgcGFydCBvZiB0aGUgQyBBUEkKKyAgICAgICAgdGhh
dCBleHBvc2VzIHNpbWlsYXIgZnVuY3Rpb25hbGl0eSBpcyB0aGUgSlNXZWFrT2JqZWN0TWFwLiBJ
dCBpcworICAgICAgICBzcGVjaWFsIGluIHRoZSBzZW5zZSB0aGF0IGl0cyBsaWZlLXRpbWUgaXMg
dGllZCB0byB0aGUgbGlmZS10aW1lIG9mIHRoZQorICAgICAgICBKUyBnbG9iYWwgb2JqZWN0LCB3
aGljaCBpbiB0dXJuIGlzIHN1YmplY3QgdG8gZ2FyYmFnZSBjb2xsZWN0aW9uLiBJbgorICAgICAg
ICBvcmRlciB0byBtYXhpbWl6ZSByZS11c2Ugb2YgdGhlIHNhbWUgbWFwIGFjcm9zcyBkaWZmZXJl
bnQgSlNDb250ZXh0UmVmCisgICAgICAgIGluc3RhbmNlcywgd2UgdXNlIG9uZSBKU1dlYWtPYmpl
Y3RNYXAgcGVyIGNvbnRleHQgZ3JvdXAgYW5kIHN0b3JlIHRoZQorICAgICAgICBtYXAgaW4gYSBz
ZXBhcmF0ZSBjb250ZXh0LgorCisgICAgICAgICogYnJpZGdlL3F0L3F0X2luc3RhbmNlLmNwcDoK
KyAgICAgICAgKEpTQzo6QmluZGluZ3M6OnVudXNlZFdlYWtPYmplY3RNYXBDYWxsYmFjayk6Cisg
ICAgICAgIChCaW5kaW5ncyk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpXZWFrTWFwSW1wbDo6
V2Vha01hcEltcGwpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6V2Vha01hcEltcGw6On5XZWFr
TWFwSW1wbCk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpXZWFrTWFwOjp+V2Vha01hcCk6Cisg
ICAgICAgIChKU0M6OkJpbmRpbmdzOjpXZWFrTWFwOjpzZXQpOgorICAgICAgICAoSlNDOjpCaW5k
aW5nczo6V2Vha01hcDo6Z2V0KToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OldlYWtNYXA6OnJl
bW92ZSk6CisgICAgICAgICogYnJpZGdlL3F0L3F0X2luc3RhbmNlLmg6CisgICAgICAgIChXZWFr
TWFwSW1wbCk6CisgICAgICAgIChCaW5kaW5ncyk6CisgICAgICAgIChXZWFrTWFwKToKKyAgICAg
ICAgKFF0SW5zdGFuY2UpOgorICAgICAgICAqIGJyaWRnZS9xdC9xdF9ydW50aW1lLmNwcDoKKyAg
ICAgICAgKEpTQzo6QmluZGluZ3M6OlF0UnVudGltZU1ldGhvZDo6flF0UnVudGltZU1ldGhvZCk6
CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpRdFJ1bnRpbWVNZXRob2Q6OmpzT2JqZWN0UmVmKToK
KyAgICAgICAgKiBicmlkZ2UvcXQvcXRfcnVudGltZS5oOgorICAgICAgICAoUXRSdW50aW1lTWV0
aG9kKToKKworCiAyMDEyLTA4LTE2ICBNYXJjZWxvIExpcmEgIDxtYXJjZWxvLmxpcmFAb3BlbmJv
c3NhLm9yZz4KIAogICAgICAgICBbUXRdIElucHV0IG1ldGhvZCBoaW50cyBhcmUgbm90IGJlaW5n
IHNldC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJnZXQucHJpIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL1RhcmdldC5wcmkKaW5kZXggNTM0MDAzMjBhNDExMTlhODZjNzU5
YjE2MjU3MmYxMmIzYzNlYmZmMS4uZTg2MjIzNjNjNTdmYWZjZjRiMmMyYjQxZDBkYWIxYzkwZWM2
MWQwNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1RhcmdldC5wcmkKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL1RhcmdldC5wcmkKQEAgLTQwLDYgKzQwLDcgQEAgU09VUkNF
UyArPSBcCiAgICAgQVBJL0pTT2JqZWN0UmVmLmNwcCBcCiAgICAgQVBJL0pTU3RyaW5nUmVmLmNw
cCBcCiAgICAgQVBJL0pTVmFsdWVSZWYuY3BwIFwKKyAgICBBUEkvSlNXZWFrT2JqZWN0TWFwUmVm
UHJpdmF0ZS5jcHAgXAogICAgIEFQSS9PcGFxdWVKU1N0cmluZy5jcHAgXAogICAgIGFzc2VtYmxl
ci9BUk1Bc3NlbWJsZXIuY3BwIFwKICAgICBhc3NlbWJsZXIvQVJNdjdBc3NlbWJsZXIuY3BwIFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9pbnN0YW5jZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfaW5zdGFuY2UuY3BwCmluZGV4IDUxM2Q3MTFkYjU2
NTkxMjhkMGRmNDdiYTYwNDY2NGQzYThlZDQ4M2UuLmQyMzFjNjQwNTY4NTYxYzY2Y2JhZTc5M2U5
YTRmNjAyZDMyZDc5ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9p
bnN0YW5jZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X2luc3RhbmNlLmNw
cApAQCAtNDAsNiArNDAsNjMgQEAKIG5hbWVzcGFjZSBKU0MgewogbmFtZXNwYWNlIEJpbmRpbmdz
IHsKIAorc3RhdGljIHZvaWQgdW51c2VkV2Vha09iamVjdE1hcENhbGxiYWNrKEpTV2Vha09iamVj
dE1hcFJlZiwgdm9pZCopCit7Cit9CisKK1dlYWtNYXBJbXBsOjpXZWFrTWFwSW1wbChKU0NvbnRl
eHRHcm91cFJlZiBncm91cCkKK3sKKyAgICBtX2NvbnRleHQgPSBKU0dsb2JhbENvbnRleHRDcmVh
dGVJbkdyb3VwKGdyb3VwLCAwKTsKKyAgICAvLyBEZWxldGVkIGJ5IEdDIHdoZW4gbV9jb250ZXh0
J3MgZ2xvYmFsT2JqZWN0IGdldHMgY29sbGVjdGVkLgorICAgIG1fbWFwID0gSlNXZWFrT2JqZWN0
TWFwQ3JlYXRlKG1fY29udGV4dCwgMCwgdW51c2VkV2Vha09iamVjdE1hcENhbGxiYWNrKTsKK30K
KworV2Vha01hcEltcGw6On5XZWFrTWFwSW1wbCgpCit7CisgICAgSlNHbG9iYWxDb250ZXh0UmVs
ZWFzZShtX2NvbnRleHQpOworICAgIG1fY29udGV4dCA9IDA7CisgICAgbV9tYXAgPSAwOworfQor
Cit0eXBlZGVmIEhhc2hNYXA8SlNDb250ZXh0R3JvdXBSZWYsIFJlZlB0cjxXZWFrTWFwSW1wbD4g
PiBXZWFrTWFwU2V0Oworc3RhdGljIFdlYWtNYXBTZXQgd2Vha01hcHM7CisKK1dlYWtNYXA6On5X
ZWFrTWFwKCkKK3sKKyAgICAvLyBJZiB0aGlzIGlzIHRoZSBsYXN0IFdlYWtNYXAgaW5zdGFuY2Ug
bGVmdCwgdGhlbiB3ZSBzaG91bGQgcmVtb3ZlCisgICAgLy8gdGhlIGNhY2hlZCBXZWFrTWFwSW1w
bCBmcm9tIHRoZSBnbG9iYWwgd2Vha01hcHMsIHRvby4KKyAgICBpZiAobV9pbXBsICYmIG1faW1w
bC0+cmVmQ291bnQoKSA9PSAyKSB7CisgICAgICAgIHdlYWtNYXBzLnJlbW92ZShKU0NvbnRleHRH
ZXRHcm91cChtX2ltcGwtPm1fY29udGV4dCkpOworICAgICAgICBBU1NFUlQobV9pbXBsLT5oYXNP
bmVSZWYoKSk7CisgICAgfQorfQorCit2b2lkIFdlYWtNYXA6OnNldChKU0NvbnRleHRSZWYgY29u
dGV4dCwgdm9pZCAqa2V5LCBKU09iamVjdFJlZiBvYmplY3QpCit7CisgICAgaWYgKCFtX2ltcGwp
IHsKKyAgICAgICAgSlNDb250ZXh0R3JvdXBSZWYgZ3JvdXAgPSBKU0NvbnRleHRHZXRHcm91cChj
b250ZXh0KTsKKyAgICAgICAgV2Vha01hcFNldDo6QWRkUmVzdWx0IGVudHJ5ID0gd2Vha01hcHMu
YWRkKGdyb3VwLCAwKTsKKyAgICAgICAgaWYgKGVudHJ5LmlzTmV3RW50cnkpCisgICAgICAgICAg
ICBlbnRyeS5pdGVyYXRvci0+c2Vjb25kID0gbmV3IFdlYWtNYXBJbXBsKGdyb3VwKTsKKyAgICAg
ICAgbV9pbXBsID0gZW50cnkuaXRlcmF0b3ItPnNlY29uZDsKKyAgICB9CisgICAgSlNXZWFrT2Jq
ZWN0TWFwU2V0KG1faW1wbC0+bV9jb250ZXh0LCBtX2ltcGwtPm1fbWFwLCBrZXksIG9iamVjdCk7
Cit9CisKK0pTT2JqZWN0UmVmIFdlYWtNYXA6OmdldCh2b2lkKiBrZXkpCit7CisgICAgaWYgKCFt
X2ltcGwpCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBKU1dlYWtPYmplY3RNYXBHZXQo
bV9pbXBsLT5tX2NvbnRleHQsIG1faW1wbC0+bV9tYXAsIGtleSk7Cit9CisKK3ZvaWQgV2Vha01h
cDo6cmVtb3ZlKHZvaWQgKmtleSkKK3sKKyAgICBpZiAoIW1faW1wbCkKKyAgICAgICAgcmV0dXJu
OworICAgIEpTV2Vha09iamVjdE1hcFJlbW92ZShtX2ltcGwtPm1fY29udGV4dCwgbV9pbXBsLT5t
X21hcCwga2V5KTsKK30KKwogLy8gQ2FjaGUgUXRJbnN0YW5jZXMKIHR5cGVkZWYgUU11bHRpSGFz
aDx2b2lkKiwgUXRJbnN0YW5jZSo+IFFPYmplY3RJbnN0YW5jZU1hcDsKIHN0YXRpYyBRT2JqZWN0
SW5zdGFuY2VNYXAgY2FjaGVkSW5zdGFuY2VzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YnJpZGdlL3F0L3F0X2luc3RhbmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfaW5z
dGFuY2UuaAppbmRleCBjZGQ3MzRhZmM1M2E4MDFiMjY0YWQ5Y2YyYzQzMzFlZWY2NGQzZjczLi5l
NWQyYTkzYWE4NTRmYWIwYzNkOGE2OTA0ZDJiZjJiYWI0YTQ1ZjQ2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfaW5zdGFuY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
cmlkZ2UvcXQvcXRfaW5zdGFuY2UuaApAQCAtMjEsNiArMjEsNyBAQAogI2RlZmluZSBxdF9pbnN0
YW5jZV9oCiAKICNpbmNsdWRlICJCcmlkZ2VKU0MuaCIKKyNpbmNsdWRlICJKU1dlYWtPYmplY3RN
YXBSZWZQcml2YXRlLmgiCiAjaW5jbHVkZSA8UVBvaW50ZXI+CiAjaW5jbHVkZSAiV2Vhay5oIgog
I2luY2x1ZGUgInJ1bnRpbWVfcm9vdC5oIgpAQCAtMzUsNiArMzYsMjcgQEAgY2xhc3MgUXRDbGFz
czsKIGNsYXNzIFF0RmllbGQ7CiBjbGFzcyBRdFJ1bnRpbWVNZXRob2Q7CiAKK2NsYXNzIFdlYWtN
YXBJbXBsIDogcHVibGljIFJlZkNvdW50ZWQ8V2Vha01hcEltcGw+IHsKK3B1YmxpYzoKKyAgICBX
ZWFrTWFwSW1wbChKU0NvbnRleHRHcm91cFJlZik7CisgICAgfldlYWtNYXBJbXBsKCk7CisKKyAg
ICBKU0dsb2JhbENvbnRleHRSZWYgbV9jb250ZXh0OworICAgIEpTV2Vha09iamVjdE1hcFJlZiBt
X21hcDsKK307CisKK2NsYXNzIFdlYWtNYXAgeworcHVibGljOgorICAgIH5XZWFrTWFwKCk7CisK
KyAgICB2b2lkIHNldChKU0NvbnRleHRSZWYsIHZvaWQqIGtleSwgSlNPYmplY3RSZWYpOworICAg
IEpTT2JqZWN0UmVmIGdldCh2b2lkKiBrZXkpOworICAgIHZvaWQgcmVtb3ZlKHZvaWQqIGtleSk7
CisKK3ByaXZhdGU6CisgICAgUmVmUHRyPFdlYWtNYXBJbXBsPiBtX2ltcGw7Cit9OworCiBjbGFz
cyBRdEluc3RhbmNlIDogcHVibGljIEluc3RhbmNlIHsKIHB1YmxpYzoKICAgICBlbnVtIFZhbHVl
T3duZXJzaGlwIHsKQEAgLTgxLDExICsxMDMsMTMgQEAgcHJpdmF0ZToKIAogICAgIGZyaWVuZCBj
bGFzcyBRdENsYXNzOwogICAgIGZyaWVuZCBjbGFzcyBRdEZpZWxkOworICAgIGZyaWVuZCBjbGFz
cyBRdFJ1bnRpbWVNZXRob2Q7CiAgICAgUXRJbnN0YW5jZShRT2JqZWN0KiwgUGFzc1JlZlB0cjxS
b290T2JqZWN0PiwgVmFsdWVPd25lcnNoaXApOyAvLyBGYWN0b3J5IHByb2R1Y2VkIG9ubHkuLgog
ICAgIG11dGFibGUgUXRDbGFzcyogbV9jbGFzczsKICAgICBRUG9pbnRlcjxRT2JqZWN0PiBtX29i
amVjdDsKICAgICBRT2JqZWN0KiBtX2hhc2hrZXk7CiAgICAgbXV0YWJsZSBRSGFzaDxRQnl0ZUFy
cmF5LCBRdFJ1bnRpbWVNZXRob2QqPiBtX21ldGhvZHM7CisgICAgV2Vha01hcCBtX2NhY2hlZE1l
dGhvZHM7CiAgICAgbXV0YWJsZSBRSGFzaDxRU3RyaW5nLCBRdEZpZWxkKj4gbV9maWVsZHM7CiAg
ICAgVmFsdWVPd25lcnNoaXAgbV9vd25lcnNoaXA7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0
L3F0X3J1bnRpbWUuY3BwCmluZGV4IDJjZDJmNTgzOWEwNjc5ZjllYzUzMWE0NThkZDc0YWZlZDA0
YWEyZWIuLmFkNTA3YjQ3NzczNWUyMmJiZmM3YmZkMjg0ZjViMDBmNjcxNTdiN2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9ydW50aW1lLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9icmlkZ2UvcXQvcXRfcnVudGltZS5jcHAKQEAgLTEzMDEsOCArMTMwMSw5IEBAIFF0
UnVudGltZU1ldGhvZDo6UXRSdW50aW1lTWV0aG9kKEpTQ29udGV4dFJlZiBjdHgsIFFPYmplY3Qq
IG9iamVjdCwgY29uc3QgUUJ5dGVBCiAKIFF0UnVudGltZU1ldGhvZDo6flF0UnVudGltZU1ldGhv
ZCgpCiB7Ci0gICAgaWYgKG1fanNPYmplY3QpCi0gICAgICAgIEpTT2JqZWN0U2V0UHJpdmF0ZSh0
b1JlZihtX2pzT2JqZWN0LmdldCgpKSwgMCk7CisgICAgaWYgKEpTT2JqZWN0UmVmIGNhY2hlZFdy
YXBwZXIgPSBtX2luc3RhbmNlLT5tX2NhY2hlZE1ldGhvZHMuZ2V0KHRoaXMpKQorICAgICAgICBK
U09iamVjdFNldFByaXZhdGUoY2FjaGVkV3JhcHBlciwgMCk7CisgICAgbV9pbnN0YW5jZS0+bV9j
YWNoZWRNZXRob2RzLnJlbW92ZSh0aGlzKTsKIH0KIAogSlNWYWx1ZVJlZiBRdFJ1bnRpbWVNZXRo
b2Q6OmNhbGwoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09i
amVjdFJlZiAvKnRoaXNPYmplY3QqLywgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFs
dWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKQEAgLTEzNTAsOCArMTM1
MSw4IEBAIEpTVmFsdWVSZWYgUXRSdW50aW1lTWV0aG9kOjpkaXNjb25uZWN0KEpTQ29udGV4dFJl
ZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvCiAKIEpTT2JqZWN0UmVmIFF0UnVudGltZU1l
dGhvZDo6anNPYmplY3RSZWYoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYqIGV4Y2Vw
dGlvbikKIHsKLSAgICBpZiAobV9qc09iamVjdCkKLSAgICAgICAgcmV0dXJuIHRvUmVmKG1fanNP
YmplY3QuZ2V0KCkpOworICAgIGlmIChKU09iamVjdFJlZiBjYWNoZWRXcmFwcGVyID0gbV9pbnN0
YW5jZS0+bV9jYWNoZWRNZXRob2RzLmdldCh0aGlzKSkKKyAgICAgICAgcmV0dXJuIGNhY2hlZFdy
YXBwZXI7CiAKICAgICBzdGF0aWMgY29uc3QgSlNDbGFzc0RlZmluaXRpb24gY2xhc3NEZWZGb3JD
b25uZWN0ID0gewogICAgICAgICAwLCAwLCAiY29ubmVjdCIsIDAsIDAsIDAsCkBAIC0xMzg3LDcg
KzEzODgsOCBAQCBKU09iamVjdFJlZiBRdFJ1bnRpbWVNZXRob2Q6OmpzT2JqZWN0UmVmKEpTQ29u
dGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmKiBleGNlcAogICAgIEpTT2JqZWN0U2V0UHJvcGVy
dHkoY29udGV4dCwgb2JqZWN0LCBsZW5ndGhTdHIsIEpTVmFsdWVNYWtlTnVtYmVyKGNvbnRleHQs
IDApLCBhdHRyaWJ1dGVzLCBleGNlcHRpb24pOwogICAgIEpTT2JqZWN0U2V0UHJvcGVydHkoY29u
dGV4dCwgb2JqZWN0LCBuYW1lU3RyLCBKU1ZhbHVlTWFrZVN0cmluZyhjb250ZXh0LCBhY3R1YWxO
YW1lU3RyLmdldCgpKSwgYXR0cmlidXRlcywgZXhjZXB0aW9uKTsKIAotICAgIG1fanNPYmplY3Qg
PSBQYXNzV2VhazxKU09iamVjdD4odG9KUyhvYmplY3QpKTsKKyAgICBtX2luc3RhbmNlLT5tX2Nh
Y2hlZE1ldGhvZHMuc2V0KGNvbnRleHQsIHRoaXMsIG9iamVjdCk7CisKICAgICByZXR1cm4gb2Jq
ZWN0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcnVudGlt
ZS5oIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuaAppbmRleCA5ODc1NmQx
MzMyYzNiZDEzZWZiNDgyMTg0YjAwZDZhZmRhNDYwYTU1Li5hOTFlNGY1MTNlZGU0ZDUyYzZkNjhl
YmIxZmRmNWZkMjg0Y2I3OGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQv
cXRfcnVudGltZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9ydW50aW1lLmgK
QEAgLTEyMiw3ICsxMjIsNiBAQCBwcml2YXRlOgogICAgIFFCeXRlQXJyYXkgbV9pZGVudGlmaWVy
OwogICAgIGludCBtX2luZGV4OwogICAgIGludCBtX2ZsYWdzOwotICAgIFdlYWs8SlNPYmplY3Q+
IG1fanNPYmplY3Q7CiAgICAgUXRJbnN0YW5jZSogbV9pbnN0YW5jZTsKIH07CiAK
</data>
<flag name="review"
          id="169279"
          type_id="1"
          status="+"
          setter="kenneth"
    />
          </attachment>
      

    </bug>

</bugzilla>