<?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>76417</bug_id>
          
          <creation_ts>2012-01-16 19:00:11 -0800</creation_ts>
          <short_desc>Only create AudioBus with required number of channels for AudioNodeOutput</short_desc>
          <delta_ts>2012-01-19 16:42:17 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Audio</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="Raymond">rgbbones</reporter>
          <assigned_to name="Raymond">rgbbones</assigned_to>
          <cc>crogers</cc>
    
    <cc>kbr</cc>
    
    <cc>rolandsteiner</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>536845</commentid>
    <comment_count>0</comment_count>
    <who name="Raymond">rgbbones</who>
    <bug_when>2012-01-16 19:00:11 -0800</bug_when>
    <thetext>Only create AudioBus with required number of channels for AudioNodeOutput</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>536862</commentid>
    <comment_count>1</comment_count>
      <attachid>122705</attachid>
    <who name="Raymond">rgbbones</who>
    <bug_when>2012-01-16 20:08:18 -0800</bug_when>
    <thetext>Created attachment 122705
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>536863</commentid>
    <comment_count>2</comment_count>
    <who name="Raymond">rgbbones</who>
    <bug_when>2012-01-16 20:10:12 -0800</bug_when>
    <thetext>Hi

this patch is aim to create AudioBus on demand for AudioNodeOutput to :

1. Save memory
2. Help to support multi-channels for WebAudio later more easily.

My goal is also apply this to AudioNodeInput, While since AudioNodeInput&apos;s case is slightly complicated than AudioNodeOutput due to the similar change might involve changes in AudioNode&apos;s checkNumberOfChannelsForInput and thus its subclass, So I would prefer to do it in a separate patch when this patch is accepted.

One thing I am not quite sure is that it seems to me the original design is to pre-allocate all memories upon node creation, is that aim to help the render thread run more smoothly? However, since this memory allocation work is done at the beginning or end of a rendering quantum, and also in some audio processor class they also do memory allocations upon channels change, so I think this might not be a big deal, and after all, channels number rarely changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537346</commentid>
    <comment_count>3</comment_count>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2012-01-17 14:13:22 -0800</bug_when>
    <thetext>Raymond, thanks for the patch.

As it stands right now the re-allocation of AudioBus is not thread-safe with the audio thread.  For example, a mono bus might be deleted and a new stereo bus created, but meanwhile the audio thread is using the mono bus.

Two solutions I can see:

1) Waste even more memory and allocate storage for up to six channels.  This doesn&apos;t seem like a great solution

2) Make it thread-safe using a similar approach to what we now do for connections (see pre and post-render tasks in AudioContext)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537479</commentid>
    <comment_count>4</comment_count>
    <who name="Raymond">rgbbones</who>
    <bug_when>2012-01-17 17:21:14 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; Raymond, thanks for the patch.
&gt; 
&gt; As it stands right now the re-allocation of AudioBus is not thread-safe with the audio thread.  For example, a mono bus might be deleted and a new stereo bus created, but meanwhile the audio thread is using the mono bus.
&gt; 
&gt; Two solutions I can see:
&gt; 
&gt; 1) Waste even more memory and allocate storage for up to six channels.  This doesn&apos;t seem like a great solution
&gt; 
&gt; 2) Make it thread-safe using a similar approach to what we now do for connections (see pre and post-render tasks in AudioContext)

Hi Roger

thanks for the review. I did pay attention to the thread-safe issue, while maybe I miss some code path? But as far as I can see at present:

AudioNodeOutput::updateInternalBus is called by AudioNodeOutput::updateNumberOfChannels which is called by two function : AudioNodeOutput::updateRenderingState and AudioNodeOutput::setNumberOfChannels.

In both case, AudioNodeOutput::updateNumberOfChannels will only be invoked  at the very start or end of a rendering quantum, which is the same case as the connections handle dirty input/output node.

so is there any other case I miss here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537489</commentid>
    <comment_count>5</comment_count>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2012-01-17 17:33:10 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; &gt; Raymond, thanks for the patch.
&gt; &gt; 
&gt; &gt; As it stands right now the re-allocation of AudioBus is not thread-safe with the audio thread.  For example, a mono bus might be deleted and a new stereo bus created, but meanwhile the audio thread is using the mono bus.
&gt; &gt; 
&gt; &gt; Two solutions I can see:
&gt; &gt; 
&gt; &gt; 1) Waste even more memory and allocate storage for up to six channels.  This doesn&apos;t seem like a great solution
&gt; &gt; 
&gt; &gt; 2) Make it thread-safe using a similar approach to what we now do for connections (see pre and post-render tasks in AudioContext)
&gt; 
&gt; Hi Roger
&gt; 
&gt; thanks for the review. I did pay attention to the thread-safe issue, while maybe I miss some code path? But as far as I can see at present:
&gt; 
&gt; AudioNodeOutput::updateInternalBus is called by AudioNodeOutput::updateNumberOfChannels which is called by two function : AudioNodeOutput::updateRenderingState and AudioNodeOutput::setNumberOfChannels.
&gt; 
&gt; In both case, AudioNodeOutput::updateNumberOfChannels will only be invoked  at the very start or end of a rendering quantum, which is the same case as the connections handle dirty input/output node.
&gt; 
&gt; so is there any other case I miss here?

Sorry, you&apos;re right.  I even see we have an ASSERT in updateNumberOfChannels()...

This looks fine to me with one minor comment fix (but I&apos;m not a reviewer).

by the way, no worries, but my name is &quot;Chris&quot; :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537490</commentid>
    <comment_count>6</comment_count>
      <attachid>122705</attachid>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2012-01-17 17:34:22 -0800</bug_when>
    <thetext>Comment on attachment 122705
Patch

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

&gt; Source/WebCore/webaudio/AudioNodeOutput.h:113
&gt; +    // m_internalBus must only be changed in the audio thread (or constructor).

It would be good to be exact here about where in the audio thread it&apos;s safe:

&quot;in the audio thread&quot; -&gt; &quot;in the audio thread with the context&apos;s graph lock&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537499</commentid>
    <comment_count>7</comment_count>
    <who name="Raymond">rgbbones</who>
    <bug_when>2012-01-17 17:41:53 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 122705 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=122705&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/webaudio/AudioNodeOutput.h:113
&gt; &gt; +    // m_internalBus must only be changed in the audio thread (or constructor).
&gt; 
&gt; It would be good to be exact here about where in the audio thread it&apos;s safe:
&gt; 
&gt; &quot;in the audio thread&quot; -&gt; &quot;in the audio thread with the context&apos;s graph lock&quot;

Oh, right, exactly. I will update the patch.
Thanks Chris ;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537507</commentid>
    <comment_count>8</comment_count>
      <attachid>122852</attachid>
    <who name="Raymond">rgbbones</who>
    <bug_when>2012-01-17 17:50:52 -0800</bug_when>
    <thetext>Created attachment 122852
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538168</commentid>
    <comment_count>9</comment_count>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2012-01-18 14:26:35 -0800</bug_when>
    <thetext>Thanks - looks fine to me!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538369</commentid>
    <comment_count>10</comment_count>
      <attachid>122852</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-01-18 17:55:10 -0800</bug_when>
    <thetext>Comment on attachment 122852
Patch

rs=me based on crogers&apos; review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538405</commentid>
    <comment_count>11</comment_count>
      <attachid>122852</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-18 19:23:11 -0800</bug_when>
    <thetext>Comment on attachment 122852
Patch

Clearing flags on attachment: 122852

Committed r105373: &lt;http://trac.webkit.org/changeset/105373&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538406</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-18 19:23:15 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538526</commentid>
    <comment_count>13</comment_count>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2012-01-18 23:55:39 -0800</bug_when>
    <thetext>In line 50: ASSERT(numberOfChannels &gt;= 0 &amp;&amp; numberOfChannels &lt;= MaxNumberOfChannels);

numberOfChannels is &apos;unsigned&apos;, so it&apos;s always &gt;= 0 (this causes compile issues when warnings are treated as errors)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538527</commentid>
    <comment_count>14</comment_count>
    <who name="Raymond">rgbbones</who>
    <bug_when>2012-01-19 00:00:18 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; In line 50: ASSERT(numberOfChannels &gt;= 0 &amp;&amp; numberOfChannels &lt;= MaxNumberOfChannels);
&gt; 
&gt; numberOfChannels is &apos;unsigned&apos;, so it&apos;s always &gt;= 0 (this causes compile issues when warnings are treated as errors)

oops... will try to fix this issue together with other patch later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538536</commentid>
    <comment_count>15</comment_count>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2012-01-19 00:31:58 -0800</bug_when>
    <thetext>I took the liberty and removed that part of the clause in r105390.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>539150</commentid>
    <comment_count>16</comment_count>
    <who name="Raymond">rgbbones</who>
    <bug_when>2012-01-19 16:42:17 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; I took the liberty and removed that part of the clause in r105390.

Thanks a lot!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122705</attachid>
            <date>2012-01-16 20:08:18 -0800</date>
            <delta_ts>2012-01-17 17:50:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76417-20120117121233.patch</filename>
            <type>text/plain</type>
            <size>6024</size>
            <attacher name="Raymond">rgbbones</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1MTA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWVmZThkN2JlYWQ5ZjAz
NDIwN2VhOGQ4NjU1Njg0YzkwOWFhM2JjNi4uMDU4MDUzZTc1MGI4YWZmYWMzYWY2NzgxNTkzMjg2
NjM4YWM4ZjIwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEyLTAxLTE2ICBSYXlt
b25kIExpdSAgPHJheW1vbmQubGl1QGludGVsLmNvbT4KKworICAgICAgICBPbmx5IGNyZWF0ZSBB
dWRpb0J1cyB3aXRoIHJlcXVpcmVkIG51bWJlciBvZiBjaGFubmVscyBmb3IgQXVkaW9Ob2RlT3V0
cHV0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjQx
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIHRl
c3RzIHJlcXVpcmVkLgorCisgICAgICAgICogd2ViYXVkaW8vQXVkaW9Ob2RlT3V0cHV0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvTm9kZU91dHB1dDo6QXVkaW9Ob2RlT3V0cHV0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvTm9kZU91dHB1dDo6c2V0TnVtYmVyT2ZDaGFubmVscyk6Cisg
ICAgICAgIChXZWJDb3JlOjpBdWRpb05vZGVPdXRwdXQ6OnVwZGF0ZUludGVybmFsQnVzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvTm9kZU91dHB1dDo6dXBkYXRlTnVtYmVyT2ZDaGFubmVscyk6
CisgICAgICAgIChXZWJDb3JlOjpBdWRpb05vZGVPdXRwdXQ6OnB1bGwpOgorICAgICAgICAqIHdl
YmF1ZGlvL0F1ZGlvTm9kZU91dHB1dC5oOgorCiAyMDEyLTAxLTE2ICBKb24gTGVlICA8am9ubGVl
QGFwcGxlLmNvbT4KIAogICAgICAgICBCdWlsZCBmaXggZm9yIHIxMDUwODYuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb05vZGVPdXRwdXQuY3BwIGIvU291cmNlL1dl
YkNvcmUvd2ViYXVkaW8vQXVkaW9Ob2RlT3V0cHV0LmNwcAppbmRleCA0Yzc3N2U2YmQ3NTBhYmY1
ZjBiNDViMWY1MzYyNTQwY2RkOTAzNmExLi5kMjJiZGFmMmExMDc3ZTM1ZmZiODY4MjE2YjU5YjM1
MWJiNGYxYWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb05vZGVP
dXRwdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvTm9kZU91dHB1dC5j
cHAKQEAgLTM1LDI0ICszNSwyOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKy8vIFRoaXMg
aXMgY29uc2lkZXJpbmcgdGhhdCA1LjEgKDYgY2hhbm5lbHMpIGlzIHRoZSBsYXJnZXN0IHdlJ2xs
IGV2ZXIgZGVhbCB3aXRoLgorLy8gSXQgY2FuIGVhc2lseSBiZSBpbmNyZWFzZWQgdG8gc3VwcG9y
dCBtb3JlIGlmIHRoZSB3ZWIgYXVkaW8gc3BlY2lmaWNhdGlvbiBpcyB1cGRhdGVkLgorY29uc3Qg
dW5zaWduZWQgTWF4TnVtYmVyT2ZDaGFubmVscyA9IDY7CisKIEF1ZGlvTm9kZU91dHB1dDo6QXVk
aW9Ob2RlT3V0cHV0KEF1ZGlvTm9kZSogbm9kZSwgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscykK
ICAgICA6IG1fbm9kZShub2RlKQogICAgICwgbV9udW1iZXJPZkNoYW5uZWxzKG51bWJlck9mQ2hh
bm5lbHMpCiAgICAgLCBtX2Rlc2lyZWROdW1iZXJPZkNoYW5uZWxzKG51bWJlck9mQ2hhbm5lbHMp
Ci0gICAgLCBtX2ludGVybmFsT3V0cHV0QnVzKDApCiAgICAgLCBtX2FjdHVhbERlc3RpbmF0aW9u
QnVzKDApCiAgICAgLCBtX2lzRW5hYmxlZCh0cnVlKQogICAgICwgbV9yZW5kZXJpbmdGYW5PdXRD
b3VudCgwKQogewotICAgIG1fbW9ub0ludGVybmFsQnVzID0gYWRvcHRQdHIobmV3IEF1ZGlvQnVz
KDEsIEF1ZGlvTm9kZTo6UHJvY2Vzc2luZ1NpemVJbkZyYW1lcykpOwotICAgIG1fc3RlcmVvSW50
ZXJuYWxCdXMgPSBhZG9wdFB0cihuZXcgQXVkaW9CdXMoMiwgQXVkaW9Ob2RlOjpQcm9jZXNzaW5n
U2l6ZUluRnJhbWVzKSk7Ci0gICAgc2V0SW50ZXJuYWxCdXMoKTsKKyAgICBBU1NFUlQobnVtYmVy
T2ZDaGFubmVscyA+PSAwICYmIG51bWJlck9mQ2hhbm5lbHMgPD0gTWF4TnVtYmVyT2ZDaGFubmVs
cyk7CisKKyAgICBtX2ludGVybmFsQnVzID0gYWRvcHRQdHIobmV3IEF1ZGlvQnVzKG51bWJlck9m
Q2hhbm5lbHMsIEF1ZGlvTm9kZTo6UHJvY2Vzc2luZ1NpemVJbkZyYW1lcykpOworICAgIG1fYWN0
dWFsRGVzdGluYXRpb25CdXMgPSBtX2ludGVybmFsQnVzLmdldCgpOwogfQogCiB2b2lkIEF1ZGlv
Tm9kZU91dHB1dDo6c2V0TnVtYmVyT2ZDaGFubmVscyh1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxz
KQogeworICAgIEFTU0VSVChudW1iZXJPZkNoYW5uZWxzIDw9IE1heE51bWJlck9mQ2hhbm5lbHMp
OwogICAgIEFTU0VSVChjb250ZXh0KCktPmlzR3JhcGhPd25lcigpKTsKLSAgICAKKwogICAgIG1f
ZGVzaXJlZE51bWJlck9mQ2hhbm5lbHMgPSBudW1iZXJPZkNoYW5uZWxzOwogCiAgICAgaWYgKGNv
bnRleHQoKS0+aXNBdWRpb1RocmVhZCgpKSB7CkBAIC02NCwyMyArNjksMTUgQEAgdm9pZCBBdWRp
b05vZGVPdXRwdXQ6OnNldE51bWJlck9mQ2hhbm5lbHModW5zaWduZWQgbnVtYmVyT2ZDaGFubmVs
cykKICAgICB9CiB9CiAKLXZvaWQgQXVkaW9Ob2RlT3V0cHV0OjpzZXRJbnRlcm5hbEJ1cygpCit2
b2lkIEF1ZGlvTm9kZU91dHB1dDo6dXBkYXRlSW50ZXJuYWxCdXMoKQogewotICAgIHN3aXRjaCAo
bV9udW1iZXJPZkNoYW5uZWxzKSB7Ci0gICAgY2FzZSAwOgotICAgIGNhc2UgMToKLSAgICAgICAg
bV9pbnRlcm5hbE91dHB1dEJ1cyA9IG1fbW9ub0ludGVybmFsQnVzLmdldCgpOwotICAgICAgICBi
cmVhazsKLSAgICBjYXNlIDI6Ci0gICAgICAgIG1faW50ZXJuYWxPdXRwdXRCdXMgPSBtX3N0ZXJl
b0ludGVybmFsQnVzLmdldCgpOwotICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAg
ICAvLyBGSVhNRTogbGF0ZXIgd2UgY2FuIGZ1bGx5IGltcGxlbWVudCBtb3JlIHRoYW4gc3RlcmVv
LCA1LjEsIGV0Yy4KLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7ICAgICAgICAgICAgCi0g
ICAgfQorICAgIGlmIChudW1iZXJPZkNoYW5uZWxzKCkgPT0gbV9pbnRlcm5hbEJ1cy0+bnVtYmVy
T2ZDaGFubmVscygpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2ludGVybmFsQnVzID0gYWRv
cHRQdHIobmV3IEF1ZGlvQnVzKG51bWJlck9mQ2hhbm5lbHMoKSwgQXVkaW9Ob2RlOjpQcm9jZXNz
aW5nU2l6ZUluRnJhbWVzKSk7CiAKICAgICAvLyBUaGlzIG1heSBsYXRlciBiZSBjaGFuZ2VkIGlu
IHB1bGwoKSB0byBwb2ludCB0byBhbiBpbi1wbGFjZSBidXMgd2l0aCB0aGUgc2FtZSBudW1iZXIg
b2YgY2hhbm5lbHMuCi0gICAgbV9hY3R1YWxEZXN0aW5hdGlvbkJ1cyA9IG1faW50ZXJuYWxPdXRw
dXRCdXM7CisgICAgbV9hY3R1YWxEZXN0aW5hdGlvbkJ1cyA9IG1faW50ZXJuYWxCdXMuZ2V0KCk7
CiB9CiAKIHZvaWQgQXVkaW9Ob2RlT3V0cHV0Ojp1cGRhdGVSZW5kZXJpbmdTdGF0ZSgpCkBAIC05
NSw3ICs5Miw3IEBAIHZvaWQgQXVkaW9Ob2RlT3V0cHV0Ojp1cGRhdGVOdW1iZXJPZkNoYW5uZWxz
KCkKIAogICAgIGlmIChtX251bWJlck9mQ2hhbm5lbHMgIT0gbV9kZXNpcmVkTnVtYmVyT2ZDaGFu
bmVscykgewogICAgICAgICBtX251bWJlck9mQ2hhbm5lbHMgPSBtX2Rlc2lyZWROdW1iZXJPZkNo
YW5uZWxzOwotICAgICAgICBzZXRJbnRlcm5hbEJ1cygpOworICAgICAgICB1cGRhdGVJbnRlcm5h
bEJ1cygpOwogICAgICAgICBwcm9wYWdhdGVDaGFubmVsQ291bnQoKTsKICAgICB9CiB9CkBAIC0x
MjgsNyArMTI1LDcgQEAgQXVkaW9CdXMqIEF1ZGlvTm9kZU91dHB1dDo6cHVsbChBdWRpb0J1cyog
aW5QbGFjZUJ1cywgc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykKICAgICBib29sIGlzSW5QbGFjZSA9
IGluUGxhY2VCdXMgJiYgaW5QbGFjZUJ1cy0+bnVtYmVyT2ZDaGFubmVscygpID09IG51bWJlck9m
Q2hhbm5lbHMoKSAmJiBtX3JlbmRlcmluZ0Zhbk91dENvdW50ID09IDE7CiAKICAgICAvLyBTZXR1
cCB0aGUgYWN0dWFsIGRlc3RpbmF0aW9uIGJ1cyBmb3IgcHJvY2Vzc2luZyB3aGVuIG91ciBub2Rl
J3MgcHJvY2VzcygpIG1ldGhvZCBnZXRzIGNhbGxlZCBpbiBwcm9jZXNzSWZOZWNlc3NhcnkoKSBi
ZWxvdy4KLSAgICBtX2FjdHVhbERlc3RpbmF0aW9uQnVzID0gaXNJblBsYWNlID8gaW5QbGFjZUJ1
cyA6IG1faW50ZXJuYWxPdXRwdXRCdXM7CisgICAgbV9hY3R1YWxEZXN0aW5hdGlvbkJ1cyA9IGlz
SW5QbGFjZSA/IGluUGxhY2VCdXMgOiBtX2ludGVybmFsQnVzLmdldCgpOwogCiAgICAgbm9kZSgp
LT5wcm9jZXNzSWZOZWNlc3NhcnkoZnJhbWVzVG9Qcm9jZXNzKTsKICAgICByZXR1cm4gbV9hY3R1
YWxEZXN0aW5hdGlvbkJ1czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1
ZGlvTm9kZU91dHB1dC5oIGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9Ob2RlT3V0cHV0
LmgKaW5kZXggNzExNGIzODlkYzQzMWZhMThhOThlZGQ4NDJlOWE4NmM4OTBmODEwNC4uODE0Y2Yw
NzAzODVmZDA2Y2ZlNTU3M2ZjZjQ3ZDliMWU5YTllYmZmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd2ViYXVkaW8vQXVkaW9Ob2RlT3V0cHV0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd2Vi
YXVkaW8vQXVkaW9Ob2RlT3V0cHV0LmgKQEAgLTkzLDkgKzkzLDkgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGFkZElucHV0KEF1ZGlvTm9kZUlucHV0Kik7CiAgICAgdm9pZCByZW1vdmVJbnB1dChBdWRp
b05vZGVJbnB1dCopOwogCi0gICAgLy8gc2V0SW50ZXJuYWxCdXMoKSBzZXRzIG1faW50ZXJuYWxP
dXRwdXRCdXMgYXBwcm9wcmlhdGVseSBmb3IgdGhlIG51bWJlciBvZiBjaGFubmVscy4KKyAgICAv
LyB1cGRhdGVJbnRlcm5hbEJ1cygpIHVwZGF0ZXMgbV9pbnRlcm5hbEJ1cyBhcHByb3ByaWF0ZWx5
IGZvciB0aGUgbnVtYmVyIG9mIGNoYW5uZWxzLgogICAgIC8vIEl0IGlzIGNhbGxlZCBpbiB0aGUg
Y29uc3RydWN0b3Igb3IgaW4gdGhlIGF1ZGlvIHRocmVhZCB3aXRoIHRoZSBjb250ZXh0J3MgZ3Jh
cGggbG9jay4KLSAgICB2b2lkIHNldEludGVybmFsQnVzKCk7CisgICAgdm9pZCB1cGRhdGVJbnRl
cm5hbEJ1cygpOwogCiAgICAgLy8gQW5ub3VuY2UgdG8gYW55IG5vZGVzIHdlJ3JlIGNvbm5lY3Rl
ZCB0byB0aGF0IHdlIGNoYW5nZWQgb3VyIGNoYW5uZWwgY291bnQgZm9yIGl0cyBpbnB1dC4KICAg
ICAvLyBJdCBtdXN0IGJlIGNhbGxlZCBpbiB0aGUgYXVkaW8gdGhyZWFkIHdpdGggdGhlIGNvbnRl
eHQncyBncmFwaCBsb2NrLgpAQCAtMTEwLDExICsxMTAsOCBAQCBwcml2YXRlOgogICAgIHVuc2ln
bmVkIG1fbnVtYmVyT2ZDaGFubmVsczsKICAgICB1bnNpZ25lZCBtX2Rlc2lyZWROdW1iZXJPZkNo
YW5uZWxzOwogICAgIAotICAgIC8vIG1faW50ZXJuYWxPdXRwdXRCdXMgd2lsbCBwb2ludCB0byBl
aXRoZXIgbV9tb25vSW50ZXJuYWxCdXMgb3IgbV9zdGVyZW9JbnRlcm5hbEJ1cy4KLSAgICAvLyBJ
dCBtdXN0IG9ubHkgYmUgY2hhbmdlZCBpbiB0aGUgYXVkaW8gdGhyZWFkIChvciBjb25zdHJ1Y3Rv
cikuCi0gICAgQXVkaW9CdXMqIG1faW50ZXJuYWxPdXRwdXRCdXM7Ci0gICAgT3duUHRyPEF1ZGlv
QnVzPiBtX21vbm9JbnRlcm5hbEJ1czsKLSAgICBPd25QdHI8QXVkaW9CdXM+IG1fc3RlcmVvSW50
ZXJuYWxCdXM7CisgICAgLy8gbV9pbnRlcm5hbEJ1cyBtdXN0IG9ubHkgYmUgY2hhbmdlZCBpbiB0
aGUgYXVkaW8gdGhyZWFkIChvciBjb25zdHJ1Y3RvcikuCisgICAgT3duUHRyPEF1ZGlvQnVzPiBt
X2ludGVybmFsQnVzOwogCiAgICAgLy8gbV9hY3R1YWxEZXN0aW5hdGlvbkJ1cyBpcyBzZXQgaW4g
cHVsbCgpIGFuZCB3aWxsIGVpdGhlciBwb2ludCB0byBvbmUgb2Ygb3VyIGludGVybmFsIGJ1c3Nl
cyBvciB0byB0aGUgaW4tcGxhY2UgYnVzLgogICAgIC8vIEl0IG11c3Qgb25seSBiZSBjaGFuZ2Vk
IGluIHRoZSBhdWRpbyB0aHJlYWQgKG9yIGNvbnN0cnVjdG9yKS4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122852</attachid>
            <date>2012-01-17 17:50:52 -0800</date>
            <delta_ts>2012-01-18 19:23:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76417-20120118095508.patch</filename>
            <type>text/plain</type>
            <size>6104</size>
            <attacher name="Raymond">rgbbones</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1MTk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTVkZDk4NWJkMTY3NTE5
YmEyODVjZWNhZmFkNzY0MzI4OGExNWJhYS4uZGZiMmYxZmRjYTE1YzlhNTkwN2VhYjc0MDY3YjE2
NTIzNTdjMGZmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEyLTAxLTE3ICBSYXlt
b25kIExpdSAgPHJheW1vbmQubGl1QGludGVsLmNvbT4KKworICAgICAgICBPbmx5IGNyZWF0ZSBB
dWRpb0J1cyB3aXRoIHJlcXVpcmVkIG51bWJlciBvZiBjaGFubmVscyBmb3IgQXVkaW9Ob2RlT3V0
cHV0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjQx
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5l
dyB0ZXN0cyByZXF1aXJlZC4KKworICAgICAgICAqIHdlYmF1ZGlvL0F1ZGlvTm9kZU91dHB1dC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb05vZGVPdXRwdXQ6OkF1ZGlvTm9kZU91dHB1dCk6
CisgICAgICAgIChXZWJDb3JlOjpBdWRpb05vZGVPdXRwdXQ6OnNldE51bWJlck9mQ2hhbm5lbHMp
OgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Ob2RlT3V0cHV0Ojp1cGRhdGVJbnRlcm5hbEJ1cyk6
CisgICAgICAgIChXZWJDb3JlOjpBdWRpb05vZGVPdXRwdXQ6OnVwZGF0ZU51bWJlck9mQ2hhbm5l
bHMpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Ob2RlT3V0cHV0OjpwdWxsKToKKyAgICAgICAg
KiB3ZWJhdWRpby9BdWRpb05vZGVPdXRwdXQuaDoKKwogMjAxMi0wMS0xNyAgQW5kcmVhcyBLbGlu
ZyAgPGF3ZXNvbWVrbGluZ0BhcHBsZS5jb20+CiAKICAgICAgICAgU3BhY2VTcGxpdFN0cmluZzog
U2hhcmUgZXF1aXZhbGVudCBzdHJpbmcgcGllY2UgdmVjdG9ycy4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvTm9kZU91dHB1dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93
ZWJhdWRpby9BdWRpb05vZGVPdXRwdXQuY3BwCmluZGV4IDRjNzc3ZTZiZDc1MGFiZjVmMGI0NWIx
ZjUzNjI1NDBjZGQ5MDM2YTEuLmQyMmJkYWYyYTEwNzdlMzVmZmI4NjgyMTZiNTliMzUxYmI0ZjFh
ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvTm9kZU91dHB1dC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9Ob2RlT3V0cHV0LmNwcApAQCAt
MzUsMjQgKzM1LDI5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorLy8gVGhpcyBpcyBjb25z
aWRlcmluZyB0aGF0IDUuMSAoNiBjaGFubmVscykgaXMgdGhlIGxhcmdlc3Qgd2UnbGwgZXZlciBk
ZWFsIHdpdGguCisvLyBJdCBjYW4gZWFzaWx5IGJlIGluY3JlYXNlZCB0byBzdXBwb3J0IG1vcmUg
aWYgdGhlIHdlYiBhdWRpbyBzcGVjaWZpY2F0aW9uIGlzIHVwZGF0ZWQuCitjb25zdCB1bnNpZ25l
ZCBNYXhOdW1iZXJPZkNoYW5uZWxzID0gNjsKKwogQXVkaW9Ob2RlT3V0cHV0OjpBdWRpb05vZGVP
dXRwdXQoQXVkaW9Ob2RlKiBub2RlLCB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzKQogICAgIDog
bV9ub2RlKG5vZGUpCiAgICAgLCBtX251bWJlck9mQ2hhbm5lbHMobnVtYmVyT2ZDaGFubmVscykK
ICAgICAsIG1fZGVzaXJlZE51bWJlck9mQ2hhbm5lbHMobnVtYmVyT2ZDaGFubmVscykKLSAgICAs
IG1faW50ZXJuYWxPdXRwdXRCdXMoMCkKICAgICAsIG1fYWN0dWFsRGVzdGluYXRpb25CdXMoMCkK
ICAgICAsIG1faXNFbmFibGVkKHRydWUpCiAgICAgLCBtX3JlbmRlcmluZ0Zhbk91dENvdW50KDAp
CiB7Ci0gICAgbV9tb25vSW50ZXJuYWxCdXMgPSBhZG9wdFB0cihuZXcgQXVkaW9CdXMoMSwgQXVk
aW9Ob2RlOjpQcm9jZXNzaW5nU2l6ZUluRnJhbWVzKSk7Ci0gICAgbV9zdGVyZW9JbnRlcm5hbEJ1
cyA9IGFkb3B0UHRyKG5ldyBBdWRpb0J1cygyLCBBdWRpb05vZGU6OlByb2Nlc3NpbmdTaXplSW5G
cmFtZXMpKTsKLSAgICBzZXRJbnRlcm5hbEJ1cygpOworICAgIEFTU0VSVChudW1iZXJPZkNoYW5u
ZWxzID49IDAgJiYgbnVtYmVyT2ZDaGFubmVscyA8PSBNYXhOdW1iZXJPZkNoYW5uZWxzKTsKKwor
ICAgIG1faW50ZXJuYWxCdXMgPSBhZG9wdFB0cihuZXcgQXVkaW9CdXMobnVtYmVyT2ZDaGFubmVs
cywgQXVkaW9Ob2RlOjpQcm9jZXNzaW5nU2l6ZUluRnJhbWVzKSk7CisgICAgbV9hY3R1YWxEZXN0
aW5hdGlvbkJ1cyA9IG1faW50ZXJuYWxCdXMuZ2V0KCk7CiB9CiAKIHZvaWQgQXVkaW9Ob2RlT3V0
cHV0OjpzZXROdW1iZXJPZkNoYW5uZWxzKHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMpCiB7Cisg
ICAgQVNTRVJUKG51bWJlck9mQ2hhbm5lbHMgPD0gTWF4TnVtYmVyT2ZDaGFubmVscyk7CiAgICAg
QVNTRVJUKGNvbnRleHQoKS0+aXNHcmFwaE93bmVyKCkpOwotICAgIAorCiAgICAgbV9kZXNpcmVk
TnVtYmVyT2ZDaGFubmVscyA9IG51bWJlck9mQ2hhbm5lbHM7CiAKICAgICBpZiAoY29udGV4dCgp
LT5pc0F1ZGlvVGhyZWFkKCkpIHsKQEAgLTY0LDIzICs2OSwxNSBAQCB2b2lkIEF1ZGlvTm9kZU91
dHB1dDo6c2V0TnVtYmVyT2ZDaGFubmVscyh1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzKQogICAg
IH0KIH0KIAotdm9pZCBBdWRpb05vZGVPdXRwdXQ6OnNldEludGVybmFsQnVzKCkKK3ZvaWQgQXVk
aW9Ob2RlT3V0cHV0Ojp1cGRhdGVJbnRlcm5hbEJ1cygpCiB7Ci0gICAgc3dpdGNoIChtX251bWJl
ck9mQ2hhbm5lbHMpIHsKLSAgICBjYXNlIDA6Ci0gICAgY2FzZSAxOgotICAgICAgICBtX2ludGVy
bmFsT3V0cHV0QnVzID0gbV9tb25vSW50ZXJuYWxCdXMuZ2V0KCk7Ci0gICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgMjoKLSAgICAgICAgbV9pbnRlcm5hbE91dHB1dEJ1cyA9IG1fc3RlcmVvSW50ZXJu
YWxCdXMuZ2V0KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIC8vIEZJ
WE1FOiBsYXRlciB3ZSBjYW4gZnVsbHkgaW1wbGVtZW50IG1vcmUgdGhhbiBzdGVyZW8sIDUuMSwg
ZXRjLgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgICAgICAgICAgICAKLSAgICB9Cisg
ICAgaWYgKG51bWJlck9mQ2hhbm5lbHMoKSA9PSBtX2ludGVybmFsQnVzLT5udW1iZXJPZkNoYW5u
ZWxzKCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1faW50ZXJuYWxCdXMgPSBhZG9wdFB0cihu
ZXcgQXVkaW9CdXMobnVtYmVyT2ZDaGFubmVscygpLCBBdWRpb05vZGU6OlByb2Nlc3NpbmdTaXpl
SW5GcmFtZXMpKTsKIAogICAgIC8vIFRoaXMgbWF5IGxhdGVyIGJlIGNoYW5nZWQgaW4gcHVsbCgp
IHRvIHBvaW50IHRvIGFuIGluLXBsYWNlIGJ1cyB3aXRoIHRoZSBzYW1lIG51bWJlciBvZiBjaGFu
bmVscy4KLSAgICBtX2FjdHVhbERlc3RpbmF0aW9uQnVzID0gbV9pbnRlcm5hbE91dHB1dEJ1czsK
KyAgICBtX2FjdHVhbERlc3RpbmF0aW9uQnVzID0gbV9pbnRlcm5hbEJ1cy5nZXQoKTsKIH0KIAog
dm9pZCBBdWRpb05vZGVPdXRwdXQ6OnVwZGF0ZVJlbmRlcmluZ1N0YXRlKCkKQEAgLTk1LDcgKzky
LDcgQEAgdm9pZCBBdWRpb05vZGVPdXRwdXQ6OnVwZGF0ZU51bWJlck9mQ2hhbm5lbHMoKQogCiAg
ICAgaWYgKG1fbnVtYmVyT2ZDaGFubmVscyAhPSBtX2Rlc2lyZWROdW1iZXJPZkNoYW5uZWxzKSB7
CiAgICAgICAgIG1fbnVtYmVyT2ZDaGFubmVscyA9IG1fZGVzaXJlZE51bWJlck9mQ2hhbm5lbHM7
Ci0gICAgICAgIHNldEludGVybmFsQnVzKCk7CisgICAgICAgIHVwZGF0ZUludGVybmFsQnVzKCk7
CiAgICAgICAgIHByb3BhZ2F0ZUNoYW5uZWxDb3VudCgpOwogICAgIH0KIH0KQEAgLTEyOCw3ICsx
MjUsNyBAQCBBdWRpb0J1cyogQXVkaW9Ob2RlT3V0cHV0OjpwdWxsKEF1ZGlvQnVzKiBpblBsYWNl
QnVzLCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKQogICAgIGJvb2wgaXNJblBsYWNlID0gaW5QbGFj
ZUJ1cyAmJiBpblBsYWNlQnVzLT5udW1iZXJPZkNoYW5uZWxzKCkgPT0gbnVtYmVyT2ZDaGFubmVs
cygpICYmIG1fcmVuZGVyaW5nRmFuT3V0Q291bnQgPT0gMTsKIAogICAgIC8vIFNldHVwIHRoZSBh
Y3R1YWwgZGVzdGluYXRpb24gYnVzIGZvciBwcm9jZXNzaW5nIHdoZW4gb3VyIG5vZGUncyBwcm9j
ZXNzKCkgbWV0aG9kIGdldHMgY2FsbGVkIGluIHByb2Nlc3NJZk5lY2Vzc2FyeSgpIGJlbG93Lgot
ICAgIG1fYWN0dWFsRGVzdGluYXRpb25CdXMgPSBpc0luUGxhY2UgPyBpblBsYWNlQnVzIDogbV9p
bnRlcm5hbE91dHB1dEJ1czsKKyAgICBtX2FjdHVhbERlc3RpbmF0aW9uQnVzID0gaXNJblBsYWNl
ID8gaW5QbGFjZUJ1cyA6IG1faW50ZXJuYWxCdXMuZ2V0KCk7CiAKICAgICBub2RlKCktPnByb2Nl
c3NJZk5lY2Vzc2FyeShmcmFtZXNUb1Byb2Nlc3MpOwogICAgIHJldHVybiBtX2FjdHVhbERlc3Rp
bmF0aW9uQnVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9Ob2Rl
T3V0cHV0LmggYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb05vZGVPdXRwdXQuaAppbmRl
eCA3MTE0YjM4OWRjNDMxZmExOGE5OGVkZDg0MmU5YTg2Yzg5MGY4MTA0Li43MjE2NGM3NDlhOTVi
YTllNWJkNWIzNGI3ZTkwNzEyNDE3MmVlNTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
ZWJhdWRpby9BdWRpb05vZGVPdXRwdXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9B
dWRpb05vZGVPdXRwdXQuaApAQCAtOTMsOSArOTMsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgYWRk
SW5wdXQoQXVkaW9Ob2RlSW5wdXQqKTsKICAgICB2b2lkIHJlbW92ZUlucHV0KEF1ZGlvTm9kZUlu
cHV0Kik7CiAKLSAgICAvLyBzZXRJbnRlcm5hbEJ1cygpIHNldHMgbV9pbnRlcm5hbE91dHB1dEJ1
cyBhcHByb3ByaWF0ZWx5IGZvciB0aGUgbnVtYmVyIG9mIGNoYW5uZWxzLgorICAgIC8vIHVwZGF0
ZUludGVybmFsQnVzKCkgdXBkYXRlcyBtX2ludGVybmFsQnVzIGFwcHJvcHJpYXRlbHkgZm9yIHRo
ZSBudW1iZXIgb2YgY2hhbm5lbHMuCiAgICAgLy8gSXQgaXMgY2FsbGVkIGluIHRoZSBjb25zdHJ1
Y3RvciBvciBpbiB0aGUgYXVkaW8gdGhyZWFkIHdpdGggdGhlIGNvbnRleHQncyBncmFwaCBsb2Nr
LgotICAgIHZvaWQgc2V0SW50ZXJuYWxCdXMoKTsKKyAgICB2b2lkIHVwZGF0ZUludGVybmFsQnVz
KCk7CiAKICAgICAvLyBBbm5vdW5jZSB0byBhbnkgbm9kZXMgd2UncmUgY29ubmVjdGVkIHRvIHRo
YXQgd2UgY2hhbmdlZCBvdXIgY2hhbm5lbCBjb3VudCBmb3IgaXRzIGlucHV0LgogICAgIC8vIEl0
IG11c3QgYmUgY2FsbGVkIGluIHRoZSBhdWRpbyB0aHJlYWQgd2l0aCB0aGUgY29udGV4dCdzIGdy
YXBoIGxvY2suCkBAIC0xMTAsMTEgKzExMCw4IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9u
dW1iZXJPZkNoYW5uZWxzOwogICAgIHVuc2lnbmVkIG1fZGVzaXJlZE51bWJlck9mQ2hhbm5lbHM7
CiAgICAgCi0gICAgLy8gbV9pbnRlcm5hbE91dHB1dEJ1cyB3aWxsIHBvaW50IHRvIGVpdGhlciBt
X21vbm9JbnRlcm5hbEJ1cyBvciBtX3N0ZXJlb0ludGVybmFsQnVzLgotICAgIC8vIEl0IG11c3Qg
b25seSBiZSBjaGFuZ2VkIGluIHRoZSBhdWRpbyB0aHJlYWQgKG9yIGNvbnN0cnVjdG9yKS4KLSAg
ICBBdWRpb0J1cyogbV9pbnRlcm5hbE91dHB1dEJ1czsKLSAgICBPd25QdHI8QXVkaW9CdXM+IG1f
bW9ub0ludGVybmFsQnVzOwotICAgIE93blB0cjxBdWRpb0J1cz4gbV9zdGVyZW9JbnRlcm5hbEJ1
czsKKyAgICAvLyBtX2ludGVybmFsQnVzIG11c3Qgb25seSBiZSBjaGFuZ2VkIGluIHRoZSBhdWRp
byB0aHJlYWQgd2l0aCB0aGUgY29udGV4dCdzIGdyYXBoIGxvY2sgKG9yIGNvbnN0cnVjdG9yKS4K
KyAgICBPd25QdHI8QXVkaW9CdXM+IG1faW50ZXJuYWxCdXM7CiAKICAgICAvLyBtX2FjdHVhbERl
c3RpbmF0aW9uQnVzIGlzIHNldCBpbiBwdWxsKCkgYW5kIHdpbGwgZWl0aGVyIHBvaW50IHRvIG9u
ZSBvZiBvdXIgaW50ZXJuYWwgYnVzc2VzIG9yIHRvIHRoZSBpbi1wbGFjZSBidXMuCiAgICAgLy8g
SXQgbXVzdCBvbmx5IGJlIGNoYW5nZWQgaW4gdGhlIGF1ZGlvIHRocmVhZCAob3IgY29uc3RydWN0
b3IpLgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>