<?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>83648</bug_id>
          
          <creation_ts>2012-04-10 17:57:17 -0700</creation_ts>
          <short_desc>AudioContext createChannelSplitter() method should have optional argument for number of outputs</short_desc>
          <delta_ts>2012-04-11 20:49:07 -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>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>
          
          <blocked>83667</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Rogers">crogers</reporter>
          <assigned_to name="Raymond">rgbbones</assigned_to>
          <cc>abarth</cc>
    
    <cc>crogers</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>haraken</cc>
    
    <cc>ojan</cc>
    
    <cc>rgbbones</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>599865</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2012-04-10 17:57:17 -0700</bug_when>
    <thetext>createChannelSplitter() currently creates a hard-coded number of six outputs.  The default should be six, but an optional argument should allow more (up to a certain limit) and will throw an exception if it exceeds this limit.

The limit can be AudioContext::maxNumberOfChannels()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>599933</commentid>
    <comment_count>1</comment_count>
      <attachid>136605</attachid>
    <who name="Raymond">rgbbones</who>
    <bug_when>2012-04-10 19:11:16 -0700</bug_when>
    <thetext>Created attachment 136605
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>599935</commentid>
    <comment_count>2</comment_count>
    <who name="Raymond">rgbbones</who>
    <bug_when>2012-04-10 19:14:39 -0700</bug_when>
    <thetext>Hi Chris

Patch for this issue. seems channel-splitter doesn&apos;t have a layout test yet also. Is Raymond Toy working on it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>599987</commentid>
    <comment_count>3</comment_count>
      <attachid>136605</attachid>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2012-04-10 20:27:43 -0700</bug_when>
    <thetext>Comment on attachment 136605
Patch

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

Thanks Raymond - seems pretty good.  I know it&apos;s a pain to create the layout tests, but now would be a good time to write one :)

If you&apos;re interested, we should also create a similar patch for AudioChannelMerger to make numberOfInputs be an optional argument...

&gt; Source/WebCore/Modules/webaudio/AudioContext.cpp:463
&gt; +    // Set output to 5.1 by default.

I know this file made reference to 5.1 before, but since the AudioChannelSplitter doesn&apos;t interpret the channel layout, I think we should be more general and have the comment say:

// Set output to default number of channels.

But thinking more about this, I would just remove the comment, since you can use the constant (as explained below)

&gt; Source/WebCore/Modules/webaudio/AudioContext.cpp:464
&gt; +    return createChannelSplitter(6, ec);

And instead of using a hard-coded constant 6 here, keep the constant NumberOfOutputs at the top of the file (but rename it DefaultNumberOfChannels)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600062</commentid>
    <comment_count>4</comment_count>
      <attachid>136631</attachid>
    <who name="Raymond">rgbbones</who>
    <bug_when>2012-04-10 23:31:43 -0700</bug_when>
    <thetext>Created attachment 136631
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600064</commentid>
    <comment_count>5</comment_count>
    <who name="Raymond">rgbbones</who>
    <bug_when>2012-04-10 23:34:10 -0700</bug_when>
    <thetext>(In reply to comment #3)
Hi Chris 

Thanks for the review. Patch updated.

&gt; 
&gt; &gt; Source/WebCore/Modules/webaudio/AudioContext.cpp:464
&gt; &gt; +    return createChannelSplitter(6, ec);
&gt; 
&gt; And instead of using a hard-coded constant 6 here, keep the constant NumberOfOutputs at the top of the file (but rename it DefaultNumberOfChannels)

Since this constant var is now defined in audioContext.cpp. Thus I have name it ChannelSplitterDefaultNumberOfOutputs instead. And put it near the function instead of file head.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600070</commentid>
    <comment_count>6</comment_count>
    <who name="Raymond">rgbbones</who>
    <bug_when>2012-04-10 23:44:03 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 136605 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=136605&amp;action=review
&gt; 
&gt; Thanks Raymond - seems pretty good.  I know it&apos;s a pain to create the layout tests, but now would be a good time to write one :)

And I open another bug at : https://bugs.webkit.org/show_bug.cgi?id=83667 for layout test case, since it involves test cases cover codes that other than this patch is changing. Please take a review there also ;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600223</commentid>
    <comment_count>7</comment_count>
      <attachid>136631</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-04-11 06:24:29 -0700</bug_when>
    <thetext>Comment on attachment 136631
Patch

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

&gt; Source/WebCore/ChangeLog:3
&gt; +        AudioContext createChannelSplitter() method should have optional argument for number of outputs

Do you have any spec that supports this change?

It seems the spec (https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/specification.html) does not have such an optional argument.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600364</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2012-04-11 10:21:22 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 136631 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=136631&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:3
&gt; &gt; +        AudioContext createChannelSplitter() method should have optional argument for number of outputs
&gt; 
&gt; Do you have any spec that supports this change?
&gt; 
&gt; It seems the spec (https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/specification.html) does not have such an optional argument.

I am in the process of updating the Web Audio editor&apos;s draft.  I should be able to get this in today.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600370</commentid>
    <comment_count>9</comment_count>
      <attachid>136631</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-04-11 10:29:12 -0700</bug_when>
    <thetext>Comment on attachment 136631
Patch

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

The change looks OK. r- due to missing tests.

&gt;&gt;&gt; Source/WebCore/ChangeLog:3
&gt;&gt;&gt; +        AudioContext createChannelSplitter() method should have optional argument for number of outputs
&gt;&gt; 
&gt;&gt; Do you have any spec that supports this change?
&gt;&gt; 
&gt;&gt; It seems the spec (https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/specification.html) does not have such an optional argument.
&gt; 
&gt; I am in the process of updating the Web Audio editor&apos;s draft.  I should be able to get this in today.

OK. It might be good to include the link to the spec in this ChangeLog.

&gt; Source/WebCore/ChangeLog:7
&gt; +

Does any existing test cover this change? If so, you can write &quot;Test: xxx.html (No change in test results)&quot;. Otherwise, please add a test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600760</commentid>
    <comment_count>10</comment_count>
    <who name="Raymond">rgbbones</who>
    <bug_when>2012-04-11 17:43:09 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:7
&gt; &gt; +
&gt; 
&gt; Does any existing test cover this change? If so, you can write &quot;Test: xxx.html (No change in test results)&quot;. Otherwise, please add a test.

I have a test case written at https://bugs.webkit.org/show_bug.cgi?id=83667, so I should merge that patch with this one?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600765</commentid>
    <comment_count>11</comment_count>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2012-04-11 17:51:11 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (In reply to comment #9)
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/ChangeLog:7
&gt; &gt; &gt; +
&gt; &gt; 
&gt; &gt; Does any existing test cover this change? If so, you can write &quot;Test: xxx.html (No change in test results)&quot;. Otherwise, please add a test.
&gt; 
&gt; I have a test case written at https://bugs.webkit.org/show_bug.cgi?id=83667, so I should merge that patch with this one?

Hi Raymond, yes it&apos;s probably best to merge that patch into this bug.  But first please address my review comments there.

By the way, the latest editor&apos;s draft now includes the spec update for createChannelSplitter() and createChannelMerger():
https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/specification.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600786</commentid>
    <comment_count>12</comment_count>
      <attachid>136804</attachid>
    <who name="Raymond">rgbbones</who>
    <bug_when>2012-04-11 18:21:00 -0700</bug_when>
    <thetext>Created attachment 136804
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600787</commentid>
    <comment_count>13</comment_count>
    <who name="Raymond">rgbbones</who>
    <bug_when>2012-04-11 18:23:17 -0700</bug_when>
    <thetext>Hi

Patch updated. Layout test case added/merged from https://bugs.webkit.org/show_bug.cgi?id=83667. With the comments there addressed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600792</commentid>
    <comment_count>14</comment_count>
      <attachid>136804</attachid>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2012-04-11 18:40:18 -0700</bug_when>
    <thetext>Comment on attachment 136804
Patch

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

Looks very good - just a couple final nits:

&gt; Source/WebCore/Modules/webaudio/AudioContext.cpp:461
&gt; +const unsigned ChannelSplitterDefaultNumberOfOutputs = 6;

I would move this constant inside of the AudioContext::createChannelSplitter() method below (after line 464)

&gt; LayoutTests/webaudio/audiochannelsplitter.html:4
&gt; +Tests that AudioChannelSplitter working correctly.

working -&gt; works

&gt; LayoutTests/webaudio/audiochannelsplitter.html:31
&gt; +

please remove extra blank line</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600795</commentid>
    <comment_count>15</comment_count>
      <attachid>136805</attachid>
    <who name="Raymond">rgbbones</who>
    <bug_when>2012-04-11 18:48:16 -0700</bug_when>
    <thetext>Created attachment 136805
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600796</commentid>
    <comment_count>16</comment_count>
    <who name="Raymond">rgbbones</who>
    <bug_when>2012-04-11 18:49:33 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (From update of attachment 136804 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=136804&amp;action=review
&gt; 
&gt; Looks very good - just a couple final nits:
&gt; 

Done ;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600836</commentid>
    <comment_count>17</comment_count>
      <attachid>136805</attachid>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2012-04-11 20:18:46 -0700</bug_when>
    <thetext>Comment on attachment 136805
Patch

Thanks Raymond!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600852</commentid>
    <comment_count>18</comment_count>
      <attachid>136805</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-11 20:49:01 -0700</bug_when>
    <thetext>Comment on attachment 136805
Patch

Clearing flags on attachment: 136805

Committed r113940: &lt;http://trac.webkit.org/changeset/113940&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600853</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-11 20:49:07 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136605</attachid>
            <date>2012-04-10 19:11:16 -0700</date>
            <delta_ts>2012-04-10 23:31:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83648-20120411101702.patch</filename>
            <type>text/plain</type>
            <size>7610</size>
            <attacher name="Raymond">rgbbones</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzNzg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2IzZTlkZTM4ZDA0NGNk
M2RmNTJiMzQ2ZDQ1YjQ5OThlNWZiM2JmOC4uZGJiZGYzZWZkNGI4YmFlZTcyMDQ1M2QyYjhhYWZi
ZTliODEwYzYxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEyLTA0LTEwICBSYXlt
b25kIExpdSAgPHJheW1vbmQubGl1QGludGVsLmNvbT4KKworICAgICAgICBBdWRpb0NvbnRleHQg
Y3JlYXRlQ2hhbm5lbFNwbGl0dGVyKCkgbWV0aG9kIHNob3VsZCBoYXZlIG9wdGlvbmFsIGFyZ3Vt
ZW50IGZvciBudW1iZXIgb2Ygb3V0cHV0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9ODM2NDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9DaGFubmVsU3BsaXR0ZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9DaGFubmVsU3BsaXR0ZXI6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBdWRpb0NoYW5uZWxTcGxpdHRlcjo6QXVkaW9DaGFubmVsU3BsaXR0
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9DaGFubmVsU3BsaXR0ZXI6OnByb2Nlc3MpOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9DaGFubmVsU3BsaXR0ZXIuaDoKKyAgICAg
ICAgKEF1ZGlvQ2hhbm5lbFNwbGl0dGVyKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OmNyZWF0ZUNo
YW5uZWxTcGxpdHRlcik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBNb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvQ29udGV4dC5oOgorICAgICAgICAoQXVkaW9Db250ZXh0KToKKyAgICAgICAg
KiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5pZGw6CisKIDIwMTItMDQtMTAgIFBldGVy
IFJ5YmluICA8cGV0ZXIucnliaW5AZ21haWwuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6
IENvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHk6IGRvIG5vdCBleHBvc2UgcmF3IG1ldGhvZHMgZnJv
bSBnZW5lcmF0ZWQgdHlwZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9DaGFubmVsU3BsaXR0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb0NoYW5uZWxTcGxpdHRlci5jcHAKaW5kZXggZTVjYzcyYTg2YjZhMDExNDc1
ZTNkNmE4Mzg3NWY4YzU2YTNmNDhiZS4uZjc4MzYxNWZjNjE2ZDFmNjZkMjY5YjA0OTM5NWNjYzMz
Zjg3OTExOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0NoYW5uZWxTcGxpdHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0NoYW5uZWxTcGxpdHRlci5jcHAKQEAgLTI4LDIyICsyOCwyNyBAQAogCiAjaW5jbHVk
ZSAiQXVkaW9DaGFubmVsU3BsaXR0ZXIuaCIKIAorI2luY2x1ZGUgIkF1ZGlvQ29udGV4dC5oIgog
I2luY2x1ZGUgIkF1ZGlvTm9kZUlucHV0LmgiCiAjaW5jbHVkZSAiQXVkaW9Ob2RlT3V0cHV0Lmgi
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKLS8vIFRoaXMgaXMgY29uc2lkZXJpbmcgdGhh
dCA1LjEgKDYgY2hhbm5lbHMpIGlzIHRoZSBsYXJnZXN0IHdlJ2xsIGV2ZXIgZGVhbCB3aXRoLgot
Ly8gSXQgY2FuIGVhc2lseSBiZSBpbmNyZWFzZWQgdG8gc3VwcG9ydCBtb3JlIGlmIHRoZSB3ZWIg
YXVkaW8gc3BlY2lmaWNhdGlvbiBpcyB1cGRhdGVkLgotY29uc3QgdW5zaWduZWQgTnVtYmVyT2ZP
dXRwdXRzID0gNjsKK1Bhc3NSZWZQdHI8QXVkaW9DaGFubmVsU3BsaXR0ZXI+IEF1ZGlvQ2hhbm5l
bFNwbGl0dGVyOjpjcmVhdGUoQXVkaW9Db250ZXh0KiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRl
LCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dHMpCit7CisgICAgaWYgKCFudW1iZXJPZk91dHB1dHMg
fHwgbnVtYmVyT2ZPdXRwdXRzID4gQXVkaW9Db250ZXh0OjptYXhOdW1iZXJPZkNoYW5uZWxzKCkp
CisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBBdWRpb0NoYW5u
ZWxTcGxpdHRlcihjb250ZXh0LCBzYW1wbGVSYXRlLCBudW1iZXJPZk91dHB1dHMpKTsgICAgICAK
K30KIAotQXVkaW9DaGFubmVsU3BsaXR0ZXI6OkF1ZGlvQ2hhbm5lbFNwbGl0dGVyKEF1ZGlvQ29u
dGV4dCogY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKK0F1ZGlvQ2hhbm5lbFNwbGl0dGVyOjpB
dWRpb0NoYW5uZWxTcGxpdHRlcihBdWRpb0NvbnRleHQqIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJh
dGUsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0cykKICAgICA6IEF1ZGlvTm9kZShjb250ZXh0LCBz
YW1wbGVSYXRlKQogewogICAgIGFkZElucHV0KGFkb3B0UHRyKG5ldyBBdWRpb05vZGVJbnB1dCh0
aGlzKSkpOwogCiAgICAgLy8gQ3JlYXRlIGEgZml4ZWQgbnVtYmVyIG9mIG91dHB1dHMgKGFibGUg
dG8gaGFuZGxlIHRoZSBtYXhpbXVtIG51bWJlciBvZiBjaGFubmVscyBmZWQgdG8gYW4gaW5wdXQp
LgotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBOdW1iZXJPZk91dHB1dHM7ICsraSkKKyAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZPdXRwdXRzOyArK2kpCiAgICAgICAg
IGFkZE91dHB1dChhZG9wdFB0cihuZXcgQXVkaW9Ob2RlT3V0cHV0KHRoaXMsIDEpKSk7CiAgICAg
CiAgICAgc2V0Tm9kZVR5cGUoTm9kZVR5cGVDaGFubmVsU3BsaXR0ZXIpOwpAQCAtNTksOCArNjQs
NyBAQCB2b2lkIEF1ZGlvQ2hhbm5lbFNwbGl0dGVyOjpwcm9jZXNzKHNpemVfdCBmcmFtZXNUb1By
b2Nlc3MpCiAgICAgCiAgICAgdW5zaWduZWQgbnVtYmVyT2ZTb3VyY2VDaGFubmVscyA9IHNvdXJj
ZS0+bnVtYmVyT2ZDaGFubmVscygpOwogICAgIAotICAgIEFTU0VSVChudW1iZXJPZk91dHB1dHMo
KSA9PSBOdW1iZXJPZk91dHB1dHMpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBOdW1i
ZXJPZk91dHB1dHM7ICsraSkgeworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1iZXJP
Zk91dHB1dHMoKTsgKytpKSB7CiAgICAgICAgIEF1ZGlvQnVzKiBkZXN0aW5hdGlvbiA9IG91dHB1
dChpKS0+YnVzKCk7CiAgICAgICAgIEFTU0VSVChkZXN0aW5hdGlvbik7CiAgICAgICAgIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NoYW5uZWxTcGxp
dHRlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NoYW5uZWxTcGxp
dHRlci5oCmluZGV4IGM4MjY1MGE3MzQzNGNmZWE4MmRmNDBlMzNlNWFmODUxNWI3NWEzMjAuLmY1
NTc4YWMwMWM2Y2U3OGVkMmZlY2I3MDc3OGE5NWUyZWFhNmM3YjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9DaGFubmVsU3BsaXR0ZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ2hhbm5lbFNwbGl0dGVyLmgKQEAg
LTM0LDEwICszNCw3IEBAIGNsYXNzIEF1ZGlvQ29udGV4dDsKICAgICAKIGNsYXNzIEF1ZGlvQ2hh
bm5lbFNwbGl0dGVyIDogcHVibGljIEF1ZGlvTm9kZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBh
c3NSZWZQdHI8QXVkaW9DaGFubmVsU3BsaXR0ZXI+IGNyZWF0ZShBdWRpb0NvbnRleHQqIGNvbnRl
eHQsIGZsb2F0IHNhbXBsZVJhdGUpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IEF1ZGlvQ2hhbm5lbFNwbGl0dGVyKGNvbnRleHQsIHNhbXBsZVJhdGUpKTsgICAgICAKLSAgICB9
CisgICAgc3RhdGljIFBhc3NSZWZQdHI8QXVkaW9DaGFubmVsU3BsaXR0ZXI+IGNyZWF0ZShBdWRp
b0NvbnRleHQqLCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dHMpOwog
CiAgICAgLy8gQXVkaW9Ob2RlCiAgICAgdmlydHVhbCB2b2lkIHByb2Nlc3Moc2l6ZV90IGZyYW1l
c1RvUHJvY2Vzcyk7CkBAIC00Nyw3ICs0NCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBkb3Vi
bGUgdGFpbFRpbWUoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiAwOyB9CiAgICAgdmlydHVhbCBk
b3VibGUgbGF0ZW5jeVRpbWUoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiAwOyB9CiAKLSAgICBB
dWRpb0NoYW5uZWxTcGxpdHRlcihBdWRpb0NvbnRleHQqLCBmbG9hdCBzYW1wbGVSYXRlKTsKKyAg
ICBBdWRpb0NoYW5uZWxTcGxpdHRlcihBdWRpb0NvbnRleHQqLCBmbG9hdCBzYW1wbGVSYXRlLCB1
bnNpZ25lZCBudW1iZXJPZk91dHB1dHMpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCmlu
ZGV4IGU4OTg0NjczZmY3YjU1MmU0NmMxOTYyOGU3ZGU5MzZjZGE5NjQ1NjkuLjhjYjIzYzMwOGI3
YjhjMjEzOWY2ZDQ4MDU4ZmRiN2IyZjlmMmI0MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKQEAgLTQ1OCwxMSArNDU4LDI1IEBAIFBh
c3NSZWZQdHI8RGVsYXlOb2RlPiBBdWRpb0NvbnRleHQ6OmNyZWF0ZURlbGF5Tm9kZShkb3VibGUg
bWF4RGVsYXlUaW1lKQogICAgIHJldHVybiBEZWxheU5vZGU6OmNyZWF0ZSh0aGlzLCBtX2Rlc3Rp
bmF0aW9uTm9kZS0+c2FtcGxlUmF0ZSgpLCBtYXhEZWxheVRpbWUpOwogfQogCi1QYXNzUmVmUHRy
PEF1ZGlvQ2hhbm5lbFNwbGl0dGVyPiBBdWRpb0NvbnRleHQ6OmNyZWF0ZUNoYW5uZWxTcGxpdHRl
cigpCitQYXNzUmVmUHRyPEF1ZGlvQ2hhbm5lbFNwbGl0dGVyPiBBdWRpb0NvbnRleHQ6OmNyZWF0
ZUNoYW5uZWxTcGxpdHRlcihFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICAvLyBTZXQgb3V0cHV0
IHRvIDUuMSBieSBkZWZhdWx0LgorICAgIHJldHVybiBjcmVhdGVDaGFubmVsU3BsaXR0ZXIoNiwg
ZWMpOworfQorCitQYXNzUmVmUHRyPEF1ZGlvQ2hhbm5lbFNwbGl0dGVyPiBBdWRpb0NvbnRleHQ6
OmNyZWF0ZUNoYW5uZWxTcGxpdHRlcihzaXplX3QgbnVtYmVyT2ZPdXRwdXRzLCBFeGNlcHRpb25D
b2RlJiBlYykKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGxhenlJbml0aWFs
aXplKCk7Ci0gICAgcmV0dXJuIEF1ZGlvQ2hhbm5lbFNwbGl0dGVyOjpjcmVhdGUodGhpcywgbV9k
ZXN0aW5hdGlvbk5vZGUtPnNhbXBsZVJhdGUoKSk7CisKKyAgICBSZWZQdHI8QXVkaW9DaGFubmVs
U3BsaXR0ZXI+IG5vZGUgPSBBdWRpb0NoYW5uZWxTcGxpdHRlcjo6Y3JlYXRlKHRoaXMsIG1fZGVz
dGluYXRpb25Ob2RlLT5zYW1wbGVSYXRlKCksIG51bWJlck9mT3V0cHV0cyk7CisKKyAgICBpZiAo
IW5vZGUuZ2V0KCkpIHsKKyAgICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICByZXR1cm4g
MDsKKyAgICB9CisKKyAgICByZXR1cm4gbm9kZTsKIH0KIAogUGFzc1JlZlB0cjxBdWRpb0NoYW5u
ZWxNZXJnZXI+IEF1ZGlvQ29udGV4dDo6Y3JlYXRlQ2hhbm5lbE1lcmdlcigpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaAppbmRleCAzYjI5NmQ1Mjc3
NmExOGU0OWY4ZTc4ZTZhOWE5MDdiYzIzMGM1NTc1Li4wMWIwYzZmZDhiMGJhOGRkOWZhMDA2OWRi
ZjQyY2U0MDg5NzhjMmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9Db250ZXh0LmgKQEAgLTEyNiw3ICsxMjYsOCBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0
cjxKYXZhU2NyaXB0QXVkaW9Ob2RlPiBjcmVhdGVKYXZhU2NyaXB0Tm9kZShzaXplX3QgYnVmZmVy
U2l6ZSwgRXhjZXB0aW9uQ29kZSYpOwogICAgIFBhc3NSZWZQdHI8SmF2YVNjcmlwdEF1ZGlvTm9k
ZT4gY3JlYXRlSmF2YVNjcmlwdE5vZGUoc2l6ZV90IGJ1ZmZlclNpemUsIHNpemVfdCBudW1iZXJP
ZklucHV0Q2hhbm5lbHMsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBQYXNzUmVmUHRyPEphdmFTY3Jp
cHRBdWRpb05vZGU+IGNyZWF0ZUphdmFTY3JpcHROb2RlKHNpemVfdCBidWZmZXJTaXplLCBzaXpl
X3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBzaXplX3QgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywg
RXhjZXB0aW9uQ29kZSYpOwotICAgIFBhc3NSZWZQdHI8QXVkaW9DaGFubmVsU3BsaXR0ZXI+IGNy
ZWF0ZUNoYW5uZWxTcGxpdHRlcigpOworICAgIFBhc3NSZWZQdHI8QXVkaW9DaGFubmVsU3BsaXR0
ZXI+IGNyZWF0ZUNoYW5uZWxTcGxpdHRlcihFeGNlcHRpb25Db2RlJik7CisgICAgUGFzc1JlZlB0
cjxBdWRpb0NoYW5uZWxTcGxpdHRlcj4gY3JlYXRlQ2hhbm5lbFNwbGl0dGVyKHNpemVfdCBudW1i
ZXJPZk91dHB1dHMsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBQYXNzUmVmUHRyPEF1ZGlvQ2hhbm5l
bE1lcmdlcj4gY3JlYXRlQ2hhbm5lbE1lcmdlcigpOwogICAgIFBhc3NSZWZQdHI8T3NjaWxsYXRv
cj4gY3JlYXRlT3NjaWxsYXRvcigpOwogICAgIFBhc3NSZWZQdHI8V2F2ZVRhYmxlPiBjcmVhdGVX
YXZlVGFibGUoRmxvYXQzMkFycmF5KiByZWFsLCBGbG9hdDMyQXJyYXkqIGltYWcsIEV4Y2VwdGlv
bkNvZGUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9Db250ZXh0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250
ZXh0LmlkbAppbmRleCBlZDA1YTk0YTlhMmM3ZmVkNWEyZjUxNzMyYjVjMjA5OWNkODRhMWRhLi5h
MTI5YjA4MTYxMzhiOTQ5YmU2MGIwZTRmZjgwY2MzMzZiNWMwNDliIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5pZGwKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaWRsCkBAIC03OCw3ICs3OCw4
IEBAIG1vZHVsZSB3ZWJhdWRpbyB7CiAgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsK
IAogICAgICAgICAvLyBDaGFubmVsIHNwbGl0dGluZyBhbmQgbWVyZ2luZwotICAgICAgICBBdWRp
b0NoYW5uZWxTcGxpdHRlciBjcmVhdGVDaGFubmVsU3BsaXR0ZXIoKTsKKyAgICAgICAgQXVkaW9D
aGFubmVsU3BsaXR0ZXIgY3JlYXRlQ2hhbm5lbFNwbGl0dGVyKGluIFtPcHRpb25hbF0gdW5zaWdu
ZWQgbG9uZyBudW1iZXJPZk91dHB1dHMpCisgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9u
KTsKICAgICAgICAgQXVkaW9DaGFubmVsTWVyZ2VyIGNyZWF0ZUNoYW5uZWxNZXJnZXIoKTsKIAog
ICAgICAgICAvLyBPZmZsaW5lIHJlbmRlcmluZwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136631</attachid>
            <date>2012-04-10 23:31:43 -0700</date>
            <delta_ts>2012-04-11 18:20:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83648-20120411143729.patch</filename>
            <type>text/plain</type>
            <size>7669</size>
            <attacher name="Raymond">rgbbones</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzNzg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2IzZTlkZTM4ZDA0NGNk
M2RmNTJiMzQ2ZDQ1YjQ5OThlNWZiM2JmOC4uOTAxZWU5ZTM0MTg1OTRmNjY2Yzc2YmQ4MjExNmYz
YTAxNTFmZGQyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEyLTA0LTEwICBSYXlt
b25kIExpdSAgPHJheW1vbmQubGl1QGludGVsLmNvbT4KKworICAgICAgICBBdWRpb0NvbnRleHQg
Y3JlYXRlQ2hhbm5lbFNwbGl0dGVyKCkgbWV0aG9kIHNob3VsZCBoYXZlIG9wdGlvbmFsIGFyZ3Vt
ZW50IGZvciBudW1iZXIgb2Ygb3V0cHV0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9ODM2NDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9DaGFubmVsU3BsaXR0ZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9DaGFubmVsU3BsaXR0ZXI6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBdWRpb0NoYW5uZWxTcGxpdHRlcjo6QXVkaW9DaGFubmVsU3BsaXR0
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9DaGFubmVsU3BsaXR0ZXI6OnByb2Nlc3MpOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9DaGFubmVsU3BsaXR0ZXIuaDoKKyAgICAg
ICAgKEF1ZGlvQ2hhbm5lbFNwbGl0dGVyKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvQ29udGV4dDo6Y3JlYXRlQ2hhbm5lbFNwbGl0dGVyKToKKyAgICAgICAgKiBNb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvQ29udGV4dC5oOgorICAgICAgICAoQXVkaW9Db250ZXh0KToKKyAgICAgICAg
KiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5pZGw6CisKIDIwMTItMDQtMTAgIFBldGVy
IFJ5YmluICA8cGV0ZXIucnliaW5AZ21haWwuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6
IENvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHk6IGRvIG5vdCBleHBvc2UgcmF3IG1ldGhvZHMgZnJv
bSBnZW5lcmF0ZWQgdHlwZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9DaGFubmVsU3BsaXR0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb0NoYW5uZWxTcGxpdHRlci5jcHAKaW5kZXggZTVjYzcyYTg2YjZhMDExNDc1
ZTNkNmE4Mzg3NWY4YzU2YTNmNDhiZS4uZjc4MzYxNWZjNjE2ZDFmNjZkMjY5YjA0OTM5NWNjYzMz
Zjg3OTExOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0NoYW5uZWxTcGxpdHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0NoYW5uZWxTcGxpdHRlci5jcHAKQEAgLTI4LDIyICsyOCwyNyBAQAogCiAjaW5jbHVk
ZSAiQXVkaW9DaGFubmVsU3BsaXR0ZXIuaCIKIAorI2luY2x1ZGUgIkF1ZGlvQ29udGV4dC5oIgog
I2luY2x1ZGUgIkF1ZGlvTm9kZUlucHV0LmgiCiAjaW5jbHVkZSAiQXVkaW9Ob2RlT3V0cHV0Lmgi
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKLS8vIFRoaXMgaXMgY29uc2lkZXJpbmcgdGhh
dCA1LjEgKDYgY2hhbm5lbHMpIGlzIHRoZSBsYXJnZXN0IHdlJ2xsIGV2ZXIgZGVhbCB3aXRoLgot
Ly8gSXQgY2FuIGVhc2lseSBiZSBpbmNyZWFzZWQgdG8gc3VwcG9ydCBtb3JlIGlmIHRoZSB3ZWIg
YXVkaW8gc3BlY2lmaWNhdGlvbiBpcyB1cGRhdGVkLgotY29uc3QgdW5zaWduZWQgTnVtYmVyT2ZP
dXRwdXRzID0gNjsKK1Bhc3NSZWZQdHI8QXVkaW9DaGFubmVsU3BsaXR0ZXI+IEF1ZGlvQ2hhbm5l
bFNwbGl0dGVyOjpjcmVhdGUoQXVkaW9Db250ZXh0KiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRl
LCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dHMpCit7CisgICAgaWYgKCFudW1iZXJPZk91dHB1dHMg
fHwgbnVtYmVyT2ZPdXRwdXRzID4gQXVkaW9Db250ZXh0OjptYXhOdW1iZXJPZkNoYW5uZWxzKCkp
CisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBBdWRpb0NoYW5u
ZWxTcGxpdHRlcihjb250ZXh0LCBzYW1wbGVSYXRlLCBudW1iZXJPZk91dHB1dHMpKTsgICAgICAK
K30KIAotQXVkaW9DaGFubmVsU3BsaXR0ZXI6OkF1ZGlvQ2hhbm5lbFNwbGl0dGVyKEF1ZGlvQ29u
dGV4dCogY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKK0F1ZGlvQ2hhbm5lbFNwbGl0dGVyOjpB
dWRpb0NoYW5uZWxTcGxpdHRlcihBdWRpb0NvbnRleHQqIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJh
dGUsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0cykKICAgICA6IEF1ZGlvTm9kZShjb250ZXh0LCBz
YW1wbGVSYXRlKQogewogICAgIGFkZElucHV0KGFkb3B0UHRyKG5ldyBBdWRpb05vZGVJbnB1dCh0
aGlzKSkpOwogCiAgICAgLy8gQ3JlYXRlIGEgZml4ZWQgbnVtYmVyIG9mIG91dHB1dHMgKGFibGUg
dG8gaGFuZGxlIHRoZSBtYXhpbXVtIG51bWJlciBvZiBjaGFubmVscyBmZWQgdG8gYW4gaW5wdXQp
LgotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBOdW1iZXJPZk91dHB1dHM7ICsraSkKKyAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZPdXRwdXRzOyArK2kpCiAgICAgICAg
IGFkZE91dHB1dChhZG9wdFB0cihuZXcgQXVkaW9Ob2RlT3V0cHV0KHRoaXMsIDEpKSk7CiAgICAg
CiAgICAgc2V0Tm9kZVR5cGUoTm9kZVR5cGVDaGFubmVsU3BsaXR0ZXIpOwpAQCAtNTksOCArNjQs
NyBAQCB2b2lkIEF1ZGlvQ2hhbm5lbFNwbGl0dGVyOjpwcm9jZXNzKHNpemVfdCBmcmFtZXNUb1By
b2Nlc3MpCiAgICAgCiAgICAgdW5zaWduZWQgbnVtYmVyT2ZTb3VyY2VDaGFubmVscyA9IHNvdXJj
ZS0+bnVtYmVyT2ZDaGFubmVscygpOwogICAgIAotICAgIEFTU0VSVChudW1iZXJPZk91dHB1dHMo
KSA9PSBOdW1iZXJPZk91dHB1dHMpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBOdW1i
ZXJPZk91dHB1dHM7ICsraSkgeworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1iZXJP
Zk91dHB1dHMoKTsgKytpKSB7CiAgICAgICAgIEF1ZGlvQnVzKiBkZXN0aW5hdGlvbiA9IG91dHB1
dChpKS0+YnVzKCk7CiAgICAgICAgIEFTU0VSVChkZXN0aW5hdGlvbik7CiAgICAgICAgIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NoYW5uZWxTcGxp
dHRlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NoYW5uZWxTcGxp
dHRlci5oCmluZGV4IGM4MjY1MGE3MzQzNGNmZWE4MmRmNDBlMzNlNWFmODUxNWI3NWEzMjAuLmY1
NTc4YWMwMWM2Y2U3OGVkMmZlY2I3MDc3OGE5NWUyZWFhNmM3YjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9DaGFubmVsU3BsaXR0ZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ2hhbm5lbFNwbGl0dGVyLmgKQEAg
LTM0LDEwICszNCw3IEBAIGNsYXNzIEF1ZGlvQ29udGV4dDsKICAgICAKIGNsYXNzIEF1ZGlvQ2hh
bm5lbFNwbGl0dGVyIDogcHVibGljIEF1ZGlvTm9kZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBh
c3NSZWZQdHI8QXVkaW9DaGFubmVsU3BsaXR0ZXI+IGNyZWF0ZShBdWRpb0NvbnRleHQqIGNvbnRl
eHQsIGZsb2F0IHNhbXBsZVJhdGUpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IEF1ZGlvQ2hhbm5lbFNwbGl0dGVyKGNvbnRleHQsIHNhbXBsZVJhdGUpKTsgICAgICAKLSAgICB9
CisgICAgc3RhdGljIFBhc3NSZWZQdHI8QXVkaW9DaGFubmVsU3BsaXR0ZXI+IGNyZWF0ZShBdWRp
b0NvbnRleHQqLCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dHMpOwog
CiAgICAgLy8gQXVkaW9Ob2RlCiAgICAgdmlydHVhbCB2b2lkIHByb2Nlc3Moc2l6ZV90IGZyYW1l
c1RvUHJvY2Vzcyk7CkBAIC00Nyw3ICs0NCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBkb3Vi
bGUgdGFpbFRpbWUoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiAwOyB9CiAgICAgdmlydHVhbCBk
b3VibGUgbGF0ZW5jeVRpbWUoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiAwOyB9CiAKLSAgICBB
dWRpb0NoYW5uZWxTcGxpdHRlcihBdWRpb0NvbnRleHQqLCBmbG9hdCBzYW1wbGVSYXRlKTsKKyAg
ICBBdWRpb0NoYW5uZWxTcGxpdHRlcihBdWRpb0NvbnRleHQqLCBmbG9hdCBzYW1wbGVSYXRlLCB1
bnNpZ25lZCBudW1iZXJPZk91dHB1dHMpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCmlu
ZGV4IGU4OTg0NjczZmY3YjU1MmU0NmMxOTYyOGU3ZGU5MzZjZGE5NjQ1NjkuLjJiZTk2MWFhOWE5
MGQ0YTdmYmRlZjYyZjg0NmEyOTdiZjE1MWIzNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKQEAgLTQ1OCwxMSArNDU4LDI2IEBAIFBh
c3NSZWZQdHI8RGVsYXlOb2RlPiBBdWRpb0NvbnRleHQ6OmNyZWF0ZURlbGF5Tm9kZShkb3VibGUg
bWF4RGVsYXlUaW1lKQogICAgIHJldHVybiBEZWxheU5vZGU6OmNyZWF0ZSh0aGlzLCBtX2Rlc3Rp
bmF0aW9uTm9kZS0+c2FtcGxlUmF0ZSgpLCBtYXhEZWxheVRpbWUpOwogfQogCi1QYXNzUmVmUHRy
PEF1ZGlvQ2hhbm5lbFNwbGl0dGVyPiBBdWRpb0NvbnRleHQ6OmNyZWF0ZUNoYW5uZWxTcGxpdHRl
cigpCitjb25zdCB1bnNpZ25lZCBDaGFubmVsU3BsaXR0ZXJEZWZhdWx0TnVtYmVyT2ZPdXRwdXRz
ID0gNjsKKworUGFzc1JlZlB0cjxBdWRpb0NoYW5uZWxTcGxpdHRlcj4gQXVkaW9Db250ZXh0Ojpj
cmVhdGVDaGFubmVsU3BsaXR0ZXIoRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgcmV0dXJuIGNy
ZWF0ZUNoYW5uZWxTcGxpdHRlcihDaGFubmVsU3BsaXR0ZXJEZWZhdWx0TnVtYmVyT2ZPdXRwdXRz
LCBlYyk7Cit9CisKK1Bhc3NSZWZQdHI8QXVkaW9DaGFubmVsU3BsaXR0ZXI+IEF1ZGlvQ29udGV4
dDo6Y3JlYXRlQ2hhbm5lbFNwbGl0dGVyKHNpemVfdCBudW1iZXJPZk91dHB1dHMsIEV4Y2VwdGlv
bkNvZGUmIGVjKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgbGF6eUluaXRp
YWxpemUoKTsKLSAgICByZXR1cm4gQXVkaW9DaGFubmVsU3BsaXR0ZXI6OmNyZWF0ZSh0aGlzLCBt
X2Rlc3RpbmF0aW9uTm9kZS0+c2FtcGxlUmF0ZSgpKTsKKworICAgIFJlZlB0cjxBdWRpb0NoYW5u
ZWxTcGxpdHRlcj4gbm9kZSA9IEF1ZGlvQ2hhbm5lbFNwbGl0dGVyOjpjcmVhdGUodGhpcywgbV9k
ZXN0aW5hdGlvbk5vZGUtPnNhbXBsZVJhdGUoKSwgbnVtYmVyT2ZPdXRwdXRzKTsKKworICAgIGlm
ICghbm9kZS5nZXQoKSkgeworICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CisgICAgICAgIHJldHVy
biAwOworICAgIH0KKworICAgIHJldHVybiBub2RlOwogfQogCiBQYXNzUmVmUHRyPEF1ZGlvQ2hh
bm5lbE1lcmdlcj4gQXVkaW9Db250ZXh0OjpjcmVhdGVDaGFubmVsTWVyZ2VyKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oCmluZGV4IDNiMjk2ZDUy
Nzc2YTE4ZTQ5ZjhlNzhlNmE5YTkwN2JjMjMwYzU1NzUuLjAxYjBjNmZkOGIwYmE4ZGQ5ZmEwMDY5
ZGJmNDJjZTQwODk3OGMyZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9Db250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0NvbnRleHQuaApAQCAtMTI2LDcgKzEyNiw4IEBAIHB1YmxpYzoKICAgICBQYXNzUmVm
UHRyPEphdmFTY3JpcHRBdWRpb05vZGU+IGNyZWF0ZUphdmFTY3JpcHROb2RlKHNpemVfdCBidWZm
ZXJTaXplLCBFeGNlcHRpb25Db2RlJik7CiAgICAgUGFzc1JlZlB0cjxKYXZhU2NyaXB0QXVkaW9O
b2RlPiBjcmVhdGVKYXZhU2NyaXB0Tm9kZShzaXplX3QgYnVmZmVyU2l6ZSwgc2l6ZV90IG51bWJl
ck9mSW5wdXRDaGFubmVscywgRXhjZXB0aW9uQ29kZSYpOwogICAgIFBhc3NSZWZQdHI8SmF2YVNj
cmlwdEF1ZGlvTm9kZT4gY3JlYXRlSmF2YVNjcmlwdE5vZGUoc2l6ZV90IGJ1ZmZlclNpemUsIHNp
emVfdCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHNpemVfdCBudW1iZXJPZk91dHB1dENoYW5uZWxz
LCBFeGNlcHRpb25Db2RlJik7Ci0gICAgUGFzc1JlZlB0cjxBdWRpb0NoYW5uZWxTcGxpdHRlcj4g
Y3JlYXRlQ2hhbm5lbFNwbGl0dGVyKCk7CisgICAgUGFzc1JlZlB0cjxBdWRpb0NoYW5uZWxTcGxp
dHRlcj4gY3JlYXRlQ2hhbm5lbFNwbGl0dGVyKEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBQYXNzUmVm
UHRyPEF1ZGlvQ2hhbm5lbFNwbGl0dGVyPiBjcmVhdGVDaGFubmVsU3BsaXR0ZXIoc2l6ZV90IG51
bWJlck9mT3V0cHV0cywgRXhjZXB0aW9uQ29kZSYpOwogICAgIFBhc3NSZWZQdHI8QXVkaW9DaGFu
bmVsTWVyZ2VyPiBjcmVhdGVDaGFubmVsTWVyZ2VyKCk7CiAgICAgUGFzc1JlZlB0cjxPc2NpbGxh
dG9yPiBjcmVhdGVPc2NpbGxhdG9yKCk7CiAgICAgUGFzc1JlZlB0cjxXYXZlVGFibGU+IGNyZWF0
ZVdhdmVUYWJsZShGbG9hdDMyQXJyYXkqIHJlYWwsIEZsb2F0MzJBcnJheSogaW1hZywgRXhjZXB0
aW9uQ29kZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb0NvbnRleHQuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Nv
bnRleHQuaWRsCmluZGV4IGVkMDVhOTRhOWEyYzdmZWQ1YTJmNTE3MzJiNWMyMDk5Y2Q4NGExZGEu
LmExMjliMDgxNjEzOGI5NDliZTYwYjBlNGZmODBjYzMzNmI1YzA0OWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmlkbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5pZGwKQEAgLTc4LDcgKzc4
LDggQEAgbW9kdWxlIHdlYmF1ZGlvIHsKICAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24p
OwogCiAgICAgICAgIC8vIENoYW5uZWwgc3BsaXR0aW5nIGFuZCBtZXJnaW5nCi0gICAgICAgIEF1
ZGlvQ2hhbm5lbFNwbGl0dGVyIGNyZWF0ZUNoYW5uZWxTcGxpdHRlcigpOworICAgICAgICBBdWRp
b0NoYW5uZWxTcGxpdHRlciBjcmVhdGVDaGFubmVsU3BsaXR0ZXIoaW4gW09wdGlvbmFsXSB1bnNp
Z25lZCBsb25nIG51bWJlck9mT3V0cHV0cykKKyAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRp
b24pOwogICAgICAgICBBdWRpb0NoYW5uZWxNZXJnZXIgY3JlYXRlQ2hhbm5lbE1lcmdlcigpOwog
CiAgICAgICAgIC8vIE9mZmxpbmUgcmVuZGVyaW5nCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136804</attachid>
            <date>2012-04-11 18:21:00 -0700</date>
            <delta_ts>2012-04-11 18:48:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83648-20120412092647.patch</filename>
            <type>text/plain</type>
            <size>13394</size>
            <attacher name="Raymond">rgbbones</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzOTE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjAxMTdjMjMxNWI0YmQ3
ZGMzNWQxMDhjMDFmNGM2ZmI1MzJhMTMwNi4uZGM0Y2ViNGQ4ODRhYjAzMmY3MzljMDA3Y2Y0MzE3
NThkOGU5MGZjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEyLTA0LTExICBSYXlt
b25kIExpdSAgPHJheW1vbmQubGl1QGludGVsLmNvbT4KKworICAgICAgICBBdWRpb0NvbnRleHQg
Y3JlYXRlQ2hhbm5lbFNwbGl0dGVyKCkgbWV0aG9kIHNob3VsZCBoYXZlIG9wdGlvbmFsIGFyZ3Vt
ZW50IGZvciBudW1iZXIgb2Ygb3V0cHV0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9ODM2NDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBDaGVjayBodHRwczovL2R2Y3MudzMub3JnL2hnL2F1ZGlvL3Jhdy1m
aWxlL3RpcC93ZWJhdWRpby9zcGVjaWZpY2F0aW9uLmh0bWwgZm9yIHRoZSBvcHRpb25hbCBhcmd1
bWVudC4KKworICAgICAgICBUZXN0OiB3ZWJhdWRpby9hdWRpb2NoYW5uZWxzcGxpdHRlci5odG1s
CisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ2hhbm5lbFNwbGl0dGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ2hhbm5lbFNwbGl0dGVyOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9DaGFubmVsU3BsaXR0ZXI6OkF1ZGlvQ2hhbm5lbFNwbGl0dGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ2hhbm5lbFNwbGl0dGVyOjpwcm9jZXNzKToKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ2hhbm5lbFNwbGl0dGVyLmg6CisgICAgICAgIChB
dWRpb0NoYW5uZWxTcGxpdHRlcik6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Nv
bnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Nv
bnRleHQ6OmNyZWF0ZUNoYW5uZWxTcGxpdHRlcik6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0NvbnRleHQuaDoKKyAgICAgICAgKEF1ZGlvQ29udGV4dCk6CisgICAgICAgICogTW9k
dWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaWRsOgorCiAyMDEyLTA0LTExICBBbGV4IE5pY29s
YW91ICA8YW5pY29sYW9AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gV2hlbiBy
ZW5kZXJpbmcgZ29lcyBpZGxlLCBkbyBub3QgY291bnQgdGhhdCB0aW1lIGFnYWluc3QgZnJhbWUg
cmF0ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0No
YW5uZWxTcGxpdHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
Q2hhbm5lbFNwbGl0dGVyLmNwcAppbmRleCBlNWNjNzJhODZiNmEwMTE0NzVlM2Q2YTgzODc1Zjhj
NTZhM2Y0OGJlLi5mNzgzNjE1ZmM2MTZkMWY2NmQyNjliMDQ5Mzk1Y2NjMzNmODc5MTE5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ2hhbm5lbFNwbGl0
dGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ2hhbm5l
bFNwbGl0dGVyLmNwcApAQCAtMjgsMjIgKzI4LDI3IEBACiAKICNpbmNsdWRlICJBdWRpb0NoYW5u
ZWxTcGxpdHRlci5oIgogCisjaW5jbHVkZSAiQXVkaW9Db250ZXh0LmgiCiAjaW5jbHVkZSAiQXVk
aW9Ob2RlSW5wdXQuaCIKICNpbmNsdWRlICJBdWRpb05vZGVPdXRwdXQuaCIKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgIAotLy8gVGhpcyBpcyBjb25zaWRlcmluZyB0aGF0IDUuMSAoNiBjaGFu
bmVscykgaXMgdGhlIGxhcmdlc3Qgd2UnbGwgZXZlciBkZWFsIHdpdGguCi0vLyBJdCBjYW4gZWFz
aWx5IGJlIGluY3JlYXNlZCB0byBzdXBwb3J0IG1vcmUgaWYgdGhlIHdlYiBhdWRpbyBzcGVjaWZp
Y2F0aW9uIGlzIHVwZGF0ZWQuCi1jb25zdCB1bnNpZ25lZCBOdW1iZXJPZk91dHB1dHMgPSA2Owor
UGFzc1JlZlB0cjxBdWRpb0NoYW5uZWxTcGxpdHRlcj4gQXVkaW9DaGFubmVsU3BsaXR0ZXI6OmNy
ZWF0ZShBdWRpb0NvbnRleHQqIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG51
bWJlck9mT3V0cHV0cykKK3sKKyAgICBpZiAoIW51bWJlck9mT3V0cHV0cyB8fCBudW1iZXJPZk91
dHB1dHMgPiBBdWRpb0NvbnRleHQ6Om1heE51bWJlck9mQ2hhbm5lbHMoKSkKKyAgICAgICAgcmV0
dXJuIDA7CisKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEF1ZGlvQ2hhbm5lbFNwbGl0dGVyKGNv
bnRleHQsIHNhbXBsZVJhdGUsIG51bWJlck9mT3V0cHV0cykpOyAgICAgIAorfQogCi1BdWRpb0No
YW5uZWxTcGxpdHRlcjo6QXVkaW9DaGFubmVsU3BsaXR0ZXIoQXVkaW9Db250ZXh0KiBjb250ZXh0
LCBmbG9hdCBzYW1wbGVSYXRlKQorQXVkaW9DaGFubmVsU3BsaXR0ZXI6OkF1ZGlvQ2hhbm5lbFNw
bGl0dGVyKEF1ZGlvQ29udGV4dCogY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQg
bnVtYmVyT2ZPdXRwdXRzKQogICAgIDogQXVkaW9Ob2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpCiB7
CiAgICAgYWRkSW5wdXQoYWRvcHRQdHIobmV3IEF1ZGlvTm9kZUlucHV0KHRoaXMpKSk7CiAKICAg
ICAvLyBDcmVhdGUgYSBmaXhlZCBudW1iZXIgb2Ygb3V0cHV0cyAoYWJsZSB0byBoYW5kbGUgdGhl
IG1heGltdW0gbnVtYmVyIG9mIGNoYW5uZWxzIGZlZCB0byBhbiBpbnB1dCkuCi0gICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IE51bWJlck9mT3V0cHV0czsgKytpKQorICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBudW1iZXJPZk91dHB1dHM7ICsraSkKICAgICAgICAgYWRkT3V0cHV0KGFk
b3B0UHRyKG5ldyBBdWRpb05vZGVPdXRwdXQodGhpcywgMSkpKTsKICAgICAKICAgICBzZXROb2Rl
VHlwZShOb2RlVHlwZUNoYW5uZWxTcGxpdHRlcik7CkBAIC01OSw4ICs2NCw3IEBAIHZvaWQgQXVk
aW9DaGFubmVsU3BsaXR0ZXI6OnByb2Nlc3Moc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykKICAgICAK
ICAgICB1bnNpZ25lZCBudW1iZXJPZlNvdXJjZUNoYW5uZWxzID0gc291cmNlLT5udW1iZXJPZkNo
YW5uZWxzKCk7CiAgICAgCi0gICAgQVNTRVJUKG51bWJlck9mT3V0cHV0cygpID09IE51bWJlck9m
T3V0cHV0cyk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IE51bWJlck9mT3V0cHV0czsg
KytpKSB7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mT3V0cHV0cygpOyAr
K2kpIHsKICAgICAgICAgQXVkaW9CdXMqIGRlc3RpbmF0aW9uID0gb3V0cHV0KGkpLT5idXMoKTsK
ICAgICAgICAgQVNTRVJUKGRlc3RpbmF0aW9uKTsKICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ2hhbm5lbFNwbGl0dGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ2hhbm5lbFNwbGl0dGVyLmgKaW5kZXgg
YzgyNjUwYTczNDM0Y2ZlYTgyZGY0MGUzM2U1YWY4NTE1Yjc1YTMyMC4uZjU1NzhhYzAxYzZjZTc4
ZWQyZmVjYjcwNzc4YTk1ZTJlYWE2YzdiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb0NoYW5uZWxTcGxpdHRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9DaGFubmVsU3BsaXR0ZXIuaApAQCAtMzQsMTAgKzM0LDcg
QEAgY2xhc3MgQXVkaW9Db250ZXh0OwogICAgIAogY2xhc3MgQXVkaW9DaGFubmVsU3BsaXR0ZXIg
OiBwdWJsaWMgQXVkaW9Ob2RlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxBdWRp
b0NoYW5uZWxTcGxpdHRlcj4gY3JlYXRlKEF1ZGlvQ29udGV4dCogY29udGV4dCwgZmxvYXQgc2Ft
cGxlUmF0ZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQXVkaW9DaGFubmVs
U3BsaXR0ZXIoY29udGV4dCwgc2FtcGxlUmF0ZSkpOyAgICAgIAotICAgIH0KKyAgICBzdGF0aWMg
UGFzc1JlZlB0cjxBdWRpb0NoYW5uZWxTcGxpdHRlcj4gY3JlYXRlKEF1ZGlvQ29udGV4dCosIGZs
b2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0cyk7CiAKICAgICAvLyBBdWRp
b05vZGUKICAgICB2aXJ0dWFsIHZvaWQgcHJvY2VzcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKTsK
QEAgLTQ3LDcgKzQ0LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGRvdWJsZSB0YWlsVGltZSgp
IGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIDA7IH0KICAgICB2aXJ0dWFsIGRvdWJsZSBsYXRlbmN5
VGltZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIDA7IH0KIAotICAgIEF1ZGlvQ2hhbm5lbFNw
bGl0dGVyKEF1ZGlvQ29udGV4dCosIGZsb2F0IHNhbXBsZVJhdGUpOworICAgIEF1ZGlvQ2hhbm5l
bFNwbGl0dGVyKEF1ZGlvQ29udGV4dCosIGZsb2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG51bWJl
ck9mT3V0cHV0cyk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKaW5kZXggZTg5ODQ2NzNm
ZjdiNTUyZTQ2YzE5NjI4ZTdkZTkzNmNkYTk2NDU2OS4uMmJlOTYxYWE5YTkwZDRhN2ZiZGVmNjJm
ODQ2YTI5N2JmMTUxYjM1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9Db250ZXh0LmNwcApAQCAtNDU4LDExICs0NTgsMjYgQEAgUGFzc1JlZlB0cjxEZWxh
eU5vZGU+IEF1ZGlvQ29udGV4dDo6Y3JlYXRlRGVsYXlOb2RlKGRvdWJsZSBtYXhEZWxheVRpbWUp
CiAgICAgcmV0dXJuIERlbGF5Tm9kZTo6Y3JlYXRlKHRoaXMsIG1fZGVzdGluYXRpb25Ob2RlLT5z
YW1wbGVSYXRlKCksIG1heERlbGF5VGltZSk7CiB9CiAKLVBhc3NSZWZQdHI8QXVkaW9DaGFubmVs
U3BsaXR0ZXI+IEF1ZGlvQ29udGV4dDo6Y3JlYXRlQ2hhbm5lbFNwbGl0dGVyKCkKK2NvbnN0IHVu
c2lnbmVkIENoYW5uZWxTcGxpdHRlckRlZmF1bHROdW1iZXJPZk91dHB1dHMgPSA2OworCitQYXNz
UmVmUHRyPEF1ZGlvQ2hhbm5lbFNwbGl0dGVyPiBBdWRpb0NvbnRleHQ6OmNyZWF0ZUNoYW5uZWxT
cGxpdHRlcihFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICByZXR1cm4gY3JlYXRlQ2hhbm5lbFNw
bGl0dGVyKENoYW5uZWxTcGxpdHRlckRlZmF1bHROdW1iZXJPZk91dHB1dHMsIGVjKTsKK30KKwor
UGFzc1JlZlB0cjxBdWRpb0NoYW5uZWxTcGxpdHRlcj4gQXVkaW9Db250ZXh0OjpjcmVhdGVDaGFu
bmVsU3BsaXR0ZXIoc2l6ZV90IG51bWJlck9mT3V0cHV0cywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7
CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBsYXp5SW5pdGlhbGl6ZSgpOwotICAg
IHJldHVybiBBdWRpb0NoYW5uZWxTcGxpdHRlcjo6Y3JlYXRlKHRoaXMsIG1fZGVzdGluYXRpb25O
b2RlLT5zYW1wbGVSYXRlKCkpOworCisgICAgUmVmUHRyPEF1ZGlvQ2hhbm5lbFNwbGl0dGVyPiBu
b2RlID0gQXVkaW9DaGFubmVsU3BsaXR0ZXI6OmNyZWF0ZSh0aGlzLCBtX2Rlc3RpbmF0aW9uTm9k
ZS0+c2FtcGxlUmF0ZSgpLCBudW1iZXJPZk91dHB1dHMpOworCisgICAgaWYgKCFub2RlLmdldCgp
KSB7CisgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQor
CisgICAgcmV0dXJuIG5vZGU7CiB9CiAKIFBhc3NSZWZQdHI8QXVkaW9DaGFubmVsTWVyZ2VyPiBB
dWRpb0NvbnRleHQ6OmNyZWF0ZUNoYW5uZWxNZXJnZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmgKaW5kZXggM2IyOTZkNTI3NzZhMThlNDlmOGU3
OGU2YTlhOTA3YmMyMzBjNTU3NS4uMDFiMGM2ZmQ4YjBiYThkZDlmYTAwNjlkYmY0MmNlNDA4OTc4
YzJlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Nv
bnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4
dC5oCkBAIC0xMjYsNyArMTI2LDggQEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8SmF2YVNjcmlw
dEF1ZGlvTm9kZT4gY3JlYXRlSmF2YVNjcmlwdE5vZGUoc2l6ZV90IGJ1ZmZlclNpemUsIEV4Y2Vw
dGlvbkNvZGUmKTsKICAgICBQYXNzUmVmUHRyPEphdmFTY3JpcHRBdWRpb05vZGU+IGNyZWF0ZUph
dmFTY3JpcHROb2RlKHNpemVfdCBidWZmZXJTaXplLCBzaXplX3QgbnVtYmVyT2ZJbnB1dENoYW5u
ZWxzLCBFeGNlcHRpb25Db2RlJik7CiAgICAgUGFzc1JlZlB0cjxKYXZhU2NyaXB0QXVkaW9Ob2Rl
PiBjcmVhdGVKYXZhU2NyaXB0Tm9kZShzaXplX3QgYnVmZmVyU2l6ZSwgc2l6ZV90IG51bWJlck9m
SW5wdXRDaGFubmVscywgc2l6ZV90IG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIEV4Y2VwdGlvbkNv
ZGUmKTsKLSAgICBQYXNzUmVmUHRyPEF1ZGlvQ2hhbm5lbFNwbGl0dGVyPiBjcmVhdGVDaGFubmVs
U3BsaXR0ZXIoKTsKKyAgICBQYXNzUmVmUHRyPEF1ZGlvQ2hhbm5lbFNwbGl0dGVyPiBjcmVhdGVD
aGFubmVsU3BsaXR0ZXIoRXhjZXB0aW9uQ29kZSYpOworICAgIFBhc3NSZWZQdHI8QXVkaW9DaGFu
bmVsU3BsaXR0ZXI+IGNyZWF0ZUNoYW5uZWxTcGxpdHRlcihzaXplX3QgbnVtYmVyT2ZPdXRwdXRz
LCBFeGNlcHRpb25Db2RlJik7CiAgICAgUGFzc1JlZlB0cjxBdWRpb0NoYW5uZWxNZXJnZXI+IGNy
ZWF0ZUNoYW5uZWxNZXJnZXIoKTsKICAgICBQYXNzUmVmUHRyPE9zY2lsbGF0b3I+IGNyZWF0ZU9z
Y2lsbGF0b3IoKTsKICAgICBQYXNzUmVmUHRyPFdhdmVUYWJsZT4gY3JlYXRlV2F2ZVRhYmxlKEZs
b2F0MzJBcnJheSogcmVhbCwgRmxvYXQzMkFycmF5KiBpbWFnLCBFeGNlcHRpb25Db2RlJik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5p
ZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5pZGwKaW5k
ZXggZWQwNWE5NGE5YTJjN2ZlZDVhMmY1MTczMmI1YzIwOTljZDg0YTFkYS4uYTEyOWIwODE2MTM4
Yjk0OWJlNjBiMGU0ZmY4MGNjMzM2YjVjMDQ5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmlkbApAQCAtNzgsNyArNzgsOCBAQCBtb2R1bGUg
d2ViYXVkaW8gewogICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAKICAgICAgICAg
Ly8gQ2hhbm5lbCBzcGxpdHRpbmcgYW5kIG1lcmdpbmcKLSAgICAgICAgQXVkaW9DaGFubmVsU3Bs
aXR0ZXIgY3JlYXRlQ2hhbm5lbFNwbGl0dGVyKCk7CisgICAgICAgIEF1ZGlvQ2hhbm5lbFNwbGl0
dGVyIGNyZWF0ZUNoYW5uZWxTcGxpdHRlcihpbiBbT3B0aW9uYWxdIHVuc2lnbmVkIGxvbmcgbnVt
YmVyT2ZPdXRwdXRzKQorICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAgICAgICAg
IEF1ZGlvQ2hhbm5lbE1lcmdlciBjcmVhdGVDaGFubmVsTWVyZ2VyKCk7CiAKICAgICAgICAgLy8g
T2ZmbGluZSByZW5kZXJpbmcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA2YmI4NWZjN2JiY2JiM2ViZmVmMzNkM2NmY2NhMTI5
Nzg3NGVkODhhLi44YTUzMzY3YmI4OTIwZDMxZTYxMWY3YmU5MmM0Njg4NzhiMmRjMjZhIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDQtMTEgIFJheW1vbmQgTGl1ICA8cmF5bW9uZC5saXVA
aW50ZWwuY29tPgorCisgICAgICAgIEF1ZGlvQ29udGV4dCBjcmVhdGVDaGFubmVsU3BsaXR0ZXIo
KSBtZXRob2Qgc2hvdWxkIGhhdmUgb3B0aW9uYWwgYXJndW1lbnQgZm9yIG51bWJlciBvZiBvdXRw
dXRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MzY0
OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENoZWNr
IGh0dHBzOi8vZHZjcy53My5vcmcvaGcvYXVkaW8vcmF3LWZpbGUvdGlwL3dlYmF1ZGlvL3NwZWNp
ZmljYXRpb24uaHRtbCBmb3IgdGhlIG9wdGlvbmFsIGFyZ3VtZW50LgorCisgICAgICAgICogd2Vi
YXVkaW8vYXVkaW9jaGFubmVsc3BsaXR0ZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiB3ZWJhdWRpby9hdWRpb2NoYW5uZWxzcGxpdHRlci5odG1sOiBBZGRlZC4KKwogMjAxMi0wNC0x
MSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCB0
d28gZmxha3kgcGx1Zy1pbiB0ZXN0cy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmF1ZGlv
L2F1ZGlvY2hhbm5lbHNwbGl0dGVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmF1ZGlv
L2F1ZGlvY2hhbm5lbHNwbGl0dGVyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYzhmNDY3Yzk4
YTcwMmRjMGIyNjY0ZTZhOWUzNWRjOTNhNzMwYTI0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvd2ViYXVkaW8vYXVkaW9jaGFubmVsc3BsaXR0ZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsMTEgQEAKK1Rlc3RzIEF1ZGlvQ2hhbm5lbFNwbGl0dGVyLgorCitPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCisKK1BBU1MgRXhjZXB0aW9uIGJlZW4gdGhyb3duIGZvciBudW1iZXJPZk91dHB1
dHMgPD0gMC4KK1BBU1MgRXhjZXB0aW9uIGJlZW4gdGhyb3duIGZvciBudW1iZXJPZk91dHB1dHMg
Pj0gMzIuCitQQVNTIENvcnJlY3RseSBleGNoYW5nZWQgbGVmdCBhbmQgcmlnaHQgY2hhbm5lbHMu
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViYXVkaW8vYXVkaW9jaGFubmVsc3BsaXR0ZXIuaHRtbCBi
L0xheW91dFRlc3RzL3dlYmF1ZGlvL2F1ZGlvY2hhbm5lbHNwbGl0dGVyLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZDQwODZiMjUxZjU1ODJkNmYxOGU2NmQwMWM4ZjUzZDllYmY2YjBhNgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3dlYmF1ZGlvL2F1ZGlvY2hhbm5lbHNwbGl0dGVyLmh0bWwKQEAg
LTAsMCArMSwxMzEgQEAKKzwhRE9DVFlQRSBodG1sPgorCis8IS0tCitUZXN0cyB0aGF0IEF1ZGlv
Q2hhbm5lbFNwbGl0dGVyIHdvcmtpbmcgY29ycmVjdGx5LgorLS0+CisKKzxodG1sPgorPGhlYWQ+
Cis8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0icmVzb3VyY2VzL2F1ZGlv
LXRlc3RpbmcuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorCis8Ym9keT4KKworPGRpdiBpZD0iZGVz
Y3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxzY3JpcHQ+Citk
ZXNjcmlwdGlvbigiVGVzdHMgQXVkaW9DaGFubmVsU3BsaXR0ZXIuIik7CisKK3ZhciBzYW1wbGVS
YXRlID0gNDQxMDAuMDsKK3ZhciBsZW5ndGhJblNhbXBsZUZyYW1lcyA9IDUxMjsKKwordmFyIGNv
bnRleHQgPSAwOwordmFyIHNvdXJjZUJ1ZmZlcjsKK3ZhciBzb3VyY2VOb2RlOwordmFyIGNoYW5u
ZWxTcGxpdHRlcjsKK3ZhciBjaGFubmVsTWVyZ2VyOworCitmdW5jdGlvbiBjcmVhdGVTdGVyZW9C
dWZmZXJXaXRoRENPZmZzZXQobGVuZ3RoLCBzYW1wbGVSYXRlLCBvZmZzZXQpIHsKKworICAgIHZh
ciBidWZmZXIgPSBjb250ZXh0LmNyZWF0ZUJ1ZmZlcigyLCBsZW5ndGgsIHNhbXBsZVJhdGUpOwor
ICAgIHZhciBuID0gYnVmZmVyLmxlbmd0aDsKKyAgICB2YXIgY2hhbm5lbEwgPSBidWZmZXIuZ2V0
Q2hhbm5lbERhdGEoMCk7CisgICAgdmFyIGNoYW5uZWxSID0gYnVmZmVyLmdldENoYW5uZWxEYXRh
KDEpOworCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuOyArK2kpIHsKKyAgICAgICAgY2hhbm5l
bExbaV0gPSBvZmZzZXQ7CisgICAgICAgIGNoYW5uZWxSW2ldID0gLTEuMCAqIG9mZnNldDsKKyAg
ICB9CisKKyAgICByZXR1cm4gYnVmZmVyOworfQorCisvLyBjaGVja1Jlc3VsdCgpIGNoZWNrcyB0
aGF0IHRoZSByZW5kZXJlZCBidWZmZXIgaXMgc3RlcmVvIGFuZCB0aGF0IHRoZSBsZWZ0IGNoYW5u
ZWwgaXMgYWxsIC0xIGFuZCByaWdodCBjaGFubmVsIGFsbCArMS4KKy8vIEluIG90aGVyIHdvcmRz
LCB3ZSd2ZSByZXZlcnNlZCB0aGUgb3JkZXIgb2YgdGhlIHR3byBjaGFubmVscy4KK2Z1bmN0aW9u
IGNoZWNrUmVzdWx0KGV2ZW50KSB7CisgICAgdmFyIGJ1ZmZlciA9IGV2ZW50LnJlbmRlcmVkQnVm
ZmVyOworCisgICAgdmFyIHN1Y2Nlc3MgPSB0cnVlOworCisgICAgaWYgKGJ1ZmZlci5udW1iZXJP
ZkNoYW5uZWxzID09IDIpIHsKKyAgICAgICAgdmFyIGJ1ZmZlckRhdGFMID0gYnVmZmVyLmdldENo
YW5uZWxEYXRhKDApOworICAgICAgICB2YXIgYnVmZmVyRGF0YVIgPSBidWZmZXIuZ2V0Q2hhbm5l
bERhdGEoMSk7CisKKyAgICAgICAgLy8gR28gdGhyb3VnaCBldmVyeSBzYW1wbGUgYW5kIG1ha2Ug
c3VyZSBpdCdzIGFsbCAtMSBmb3IgdGhlIGxlZnQtY2hhbm5lbCwgYW5kIGFsbCArMSBmb3IgdGhl
IHJpZ2h0LWNoYW5uZWwuCisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYnVmZmVyLmxlbmd0
aDsgKytpKSB7CisgICAgICAgICAgICBpZiAoYnVmZmVyRGF0YUxbaV0gIT0gLTEgfHwgYnVmZmVy
RGF0YVJbaV0gIT0gMSkgeworICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSBmYWxzZTsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0gZWxzZSB7
CisgICAgICAgIHN1Y2Nlc3MgPSBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoc3VjY2Vzcykgewor
ICAgICAgICB0ZXN0UGFzc2VkKCJDb3JyZWN0bHkgZXhjaGFuZ2VkIGxlZnQgYW5kIHJpZ2h0IGNo
YW5uZWxzLiIpOworICAgIH0gZWxzZSB7CisgICAgICAgIHRlc3RGYWlsZWQoIkVycm9yIG9uIGV4
Y2hhbmdpbmcgbGVmdCBhbmQgcmlnaHQgY2hhbm5lbHMuIik7CisgICAgfQorCisgICAgZmluaXNo
SlNUZXN0KCk7Cit9CisKK2Z1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNU
ZXh0KCk7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAg
ICB9CisKKyAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAvLyBDcmVhdGUg
c3RlcmVvIG9mZmxpbmUgYXVkaW8gY29udGV4dC4KKyAgICBjb250ZXh0ID0gbmV3IHdlYmtpdEF1
ZGlvQ29udGV4dCgyLCBsZW5ndGhJblNhbXBsZUZyYW1lcywgc2FtcGxlUmF0ZSk7CisKKyAgICB0
cnkgeworICAgICAgICB2YXIgc3BsaXR0ZXJub2RlID0gY29udGV4dC5jcmVhdGVDaGFubmVsU3Bs
aXR0ZXIoMCk7CisgICAgICAgIHRlc3RGYWlsZWQoIkV4Y2VwdGlvbiBzaG91bGQgYmUgdGhyb3du
IGZvciBudW1iZXJPZk91dHB1dHMgPD0gMC4iKTsKKyAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAg
dGVzdFBhc3NlZCgiRXhjZXB0aW9uIGJlZW4gdGhyb3duIGZvciBudW1iZXJPZk91dHB1dHMgPD0g
MC4iKTsKKyAgICB9CisKKyAgICB0cnkgeworICAgICAgICB2YXIgc3BsaXR0ZXJub2RlID0gY29u
dGV4dC5jcmVhdGVDaGFubmVsU3BsaXR0ZXIoMzMpOworICAgICAgICB0ZXN0RmFpbGVkKCJFeGNl
cHRpb24gc2hvdWxkIGJlIHRocm93biBmb3IgbnVtZXJPZk91dHB1dHMgPj0gMzIuIik7CisgICAg
fSBjYXRjaChlKSB7CisgICAgICAgIHRlc3RQYXNzZWQoIkV4Y2VwdGlvbiBiZWVuIHRocm93biBm
b3IgbnVtYmVyT2ZPdXRwdXRzID49IDMyLiIpOworICAgIH0KKworICAgIC8vIENyZWF0ZSBhIHN0
ZXJlbyBidWZmZXIsIHdpdGggYWxsICsxIHZhbHVlcyBpbiBsZWZ0IGNoYW5uZWwsIGFsbCAtMSBp
biByaWdodCBjaGFubmVsLgorICAgIHNvdXJjZUJ1ZmZlciA9IGNyZWF0ZVN0ZXJlb0J1ZmZlcldp
dGhEQ09mZnNldChsZW5ndGhJblNhbXBsZUZyYW1lcywgc2FtcGxlUmF0ZSwgMSk7CisKKyAgICBz
b3VyY2VOb2RlID0gY29udGV4dC5jcmVhdGVCdWZmZXJTb3VyY2UoKTsKKyAgICBzb3VyY2VOb2Rl
LmJ1ZmZlciA9IHNvdXJjZUJ1ZmZlcjsKKworICAgIC8vIENyZWF0ZSBhIGNoYW5uZWwgc3BsaXR0
ZXIgYW5kIGNvbm5lY3QgaXQgc28gdGhhdCBpdCBzcGxpdCB0aGUgc3RlcmVvIHN0cmVhbSBpbnRv
IHR3byBtb25vIHN0cmVhbXMuCisgICAgY2hhbm5lbFNwbGl0dGVyID0gY29udGV4dC5jcmVhdGVD
aGFubmVsU3BsaXR0ZXIoMik7CisgICAgc291cmNlTm9kZS5jb25uZWN0KGNoYW5uZWxTcGxpdHRl
cik7CisKKyAgICAvLyBDcmVhdGUgYSBjaGFubmVsIG1lcmdlciB0byBtZXJnZSB0aGUgb3V0cHV0
IG9mIGNoYW5uZWwgc3BsaXR0ZXIuCisgICAgY2hhbm5lbE1lcmdlciA9IGNvbnRleHQuY3JlYXRl
Q2hhbm5lbE1lcmdlcigpOworICAgIGNoYW5uZWxNZXJnZXIuY29ubmVjdChjb250ZXh0LmRlc3Rp
bmF0aW9uKTsKKworICAgIC8vIFdoZW4gbWVyZ2luZywgZXhjaGFuZ2UgY2hhbm5lbCBsYXlvdXQ6
IGxlZnQtPnJpZ2h0LCByaWdodC0+bGVmdAorICAgIGNoYW5uZWxTcGxpdHRlci5jb25uZWN0KGNo
YW5uZWxNZXJnZXIsIDAsIDEpOworICAgIGNoYW5uZWxTcGxpdHRlci5jb25uZWN0KGNoYW5uZWxN
ZXJnZXIsIDEsIDApOworCisgICAgc291cmNlTm9kZS5ub3RlT24oMCk7CisKKyAgICBjb250ZXh0
Lm9uY29tcGxldGUgPSBjaGVja1Jlc3VsdDsKKyAgICBjb250ZXh0LnN0YXJ0UmVuZGVyaW5nKCk7
Cit9CisKK3J1blRlc3QoKTsKKworPC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi9mYXN0L2pz
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136805</attachid>
            <date>2012-04-11 18:48:16 -0700</date>
            <delta_ts>2012-04-11 20:49:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83648-20120412095403.patch</filename>
            <type>text/plain</type>
            <size>13392</size>
            <attacher name="Raymond">rgbbones</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzOTE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjAxMTdjMjMxNWI0YmQ3
ZGMzNWQxMDhjMDFmNGM2ZmI1MzJhMTMwNi4uZjM3ODJkZTE3NmJkMDhjNzYzNzdhNGVhMTFjYTdl
YmIzYjI1MjlhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEyLTA0LTExICBSYXlt
b25kIExpdSAgPHJheW1vbmQubGl1QGludGVsLmNvbT4KKworICAgICAgICBBdWRpb0NvbnRleHQg
Y3JlYXRlQ2hhbm5lbFNwbGl0dGVyKCkgbWV0aG9kIHNob3VsZCBoYXZlIG9wdGlvbmFsIGFyZ3Vt
ZW50IGZvciBudW1iZXIgb2Ygb3V0cHV0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9ODM2NDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBDaGVjayBodHRwczovL2R2Y3MudzMub3JnL2hnL2F1ZGlvL3Jhdy1m
aWxlL3RpcC93ZWJhdWRpby9zcGVjaWZpY2F0aW9uLmh0bWwgZm9yIHRoZSBvcHRpb25hbCBhcmd1
bWVudC4KKworICAgICAgICBUZXN0OiB3ZWJhdWRpby9hdWRpb2NoYW5uZWxzcGxpdHRlci5odG1s
CisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ2hhbm5lbFNwbGl0dGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ2hhbm5lbFNwbGl0dGVyOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9DaGFubmVsU3BsaXR0ZXI6OkF1ZGlvQ2hhbm5lbFNwbGl0dGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ2hhbm5lbFNwbGl0dGVyOjpwcm9jZXNzKToKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ2hhbm5lbFNwbGl0dGVyLmg6CisgICAgICAgIChB
dWRpb0NoYW5uZWxTcGxpdHRlcik6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Nv
bnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0OjpjcmVhdGVDaGFubmVs
U3BsaXR0ZXIpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0NvbnRleHQuaDoKKyAgICAgICAgKEF1ZGlvQ29udGV4dCk6CisgICAgICAgICogTW9k
dWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaWRsOgorCiAyMDEyLTA0LTExICBBbGV4IE5pY29s
YW91ICA8YW5pY29sYW9AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gV2hlbiBy
ZW5kZXJpbmcgZ29lcyBpZGxlLCBkbyBub3QgY291bnQgdGhhdCB0aW1lIGFnYWluc3QgZnJhbWUg
cmF0ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0No
YW5uZWxTcGxpdHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
Q2hhbm5lbFNwbGl0dGVyLmNwcAppbmRleCBlNWNjNzJhODZiNmEwMTE0NzVlM2Q2YTgzODc1Zjhj
NTZhM2Y0OGJlLi5mNzgzNjE1ZmM2MTZkMWY2NmQyNjliMDQ5Mzk1Y2NjMzNmODc5MTE5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ2hhbm5lbFNwbGl0
dGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ2hhbm5l
bFNwbGl0dGVyLmNwcApAQCAtMjgsMjIgKzI4LDI3IEBACiAKICNpbmNsdWRlICJBdWRpb0NoYW5u
ZWxTcGxpdHRlci5oIgogCisjaW5jbHVkZSAiQXVkaW9Db250ZXh0LmgiCiAjaW5jbHVkZSAiQXVk
aW9Ob2RlSW5wdXQuaCIKICNpbmNsdWRlICJBdWRpb05vZGVPdXRwdXQuaCIKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgIAotLy8gVGhpcyBpcyBjb25zaWRlcmluZyB0aGF0IDUuMSAoNiBjaGFu
bmVscykgaXMgdGhlIGxhcmdlc3Qgd2UnbGwgZXZlciBkZWFsIHdpdGguCi0vLyBJdCBjYW4gZWFz
aWx5IGJlIGluY3JlYXNlZCB0byBzdXBwb3J0IG1vcmUgaWYgdGhlIHdlYiBhdWRpbyBzcGVjaWZp
Y2F0aW9uIGlzIHVwZGF0ZWQuCi1jb25zdCB1bnNpZ25lZCBOdW1iZXJPZk91dHB1dHMgPSA2Owor
UGFzc1JlZlB0cjxBdWRpb0NoYW5uZWxTcGxpdHRlcj4gQXVkaW9DaGFubmVsU3BsaXR0ZXI6OmNy
ZWF0ZShBdWRpb0NvbnRleHQqIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG51
bWJlck9mT3V0cHV0cykKK3sKKyAgICBpZiAoIW51bWJlck9mT3V0cHV0cyB8fCBudW1iZXJPZk91
dHB1dHMgPiBBdWRpb0NvbnRleHQ6Om1heE51bWJlck9mQ2hhbm5lbHMoKSkKKyAgICAgICAgcmV0
dXJuIDA7CisKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEF1ZGlvQ2hhbm5lbFNwbGl0dGVyKGNv
bnRleHQsIHNhbXBsZVJhdGUsIG51bWJlck9mT3V0cHV0cykpOyAgICAgIAorfQogCi1BdWRpb0No
YW5uZWxTcGxpdHRlcjo6QXVkaW9DaGFubmVsU3BsaXR0ZXIoQXVkaW9Db250ZXh0KiBjb250ZXh0
LCBmbG9hdCBzYW1wbGVSYXRlKQorQXVkaW9DaGFubmVsU3BsaXR0ZXI6OkF1ZGlvQ2hhbm5lbFNw
bGl0dGVyKEF1ZGlvQ29udGV4dCogY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQg
bnVtYmVyT2ZPdXRwdXRzKQogICAgIDogQXVkaW9Ob2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpCiB7
CiAgICAgYWRkSW5wdXQoYWRvcHRQdHIobmV3IEF1ZGlvTm9kZUlucHV0KHRoaXMpKSk7CiAKICAg
ICAvLyBDcmVhdGUgYSBmaXhlZCBudW1iZXIgb2Ygb3V0cHV0cyAoYWJsZSB0byBoYW5kbGUgdGhl
IG1heGltdW0gbnVtYmVyIG9mIGNoYW5uZWxzIGZlZCB0byBhbiBpbnB1dCkuCi0gICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IE51bWJlck9mT3V0cHV0czsgKytpKQorICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBudW1iZXJPZk91dHB1dHM7ICsraSkKICAgICAgICAgYWRkT3V0cHV0KGFk
b3B0UHRyKG5ldyBBdWRpb05vZGVPdXRwdXQodGhpcywgMSkpKTsKICAgICAKICAgICBzZXROb2Rl
VHlwZShOb2RlVHlwZUNoYW5uZWxTcGxpdHRlcik7CkBAIC01OSw4ICs2NCw3IEBAIHZvaWQgQXVk
aW9DaGFubmVsU3BsaXR0ZXI6OnByb2Nlc3Moc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykKICAgICAK
ICAgICB1bnNpZ25lZCBudW1iZXJPZlNvdXJjZUNoYW5uZWxzID0gc291cmNlLT5udW1iZXJPZkNo
YW5uZWxzKCk7CiAgICAgCi0gICAgQVNTRVJUKG51bWJlck9mT3V0cHV0cygpID09IE51bWJlck9m
T3V0cHV0cyk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IE51bWJlck9mT3V0cHV0czsg
KytpKSB7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mT3V0cHV0cygpOyAr
K2kpIHsKICAgICAgICAgQXVkaW9CdXMqIGRlc3RpbmF0aW9uID0gb3V0cHV0KGkpLT5idXMoKTsK
ICAgICAgICAgQVNTRVJUKGRlc3RpbmF0aW9uKTsKICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ2hhbm5lbFNwbGl0dGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ2hhbm5lbFNwbGl0dGVyLmgKaW5kZXgg
YzgyNjUwYTczNDM0Y2ZlYTgyZGY0MGUzM2U1YWY4NTE1Yjc1YTMyMC4uZjU1NzhhYzAxYzZjZTc4
ZWQyZmVjYjcwNzc4YTk1ZTJlYWE2YzdiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb0NoYW5uZWxTcGxpdHRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9DaGFubmVsU3BsaXR0ZXIuaApAQCAtMzQsMTAgKzM0LDcg
QEAgY2xhc3MgQXVkaW9Db250ZXh0OwogICAgIAogY2xhc3MgQXVkaW9DaGFubmVsU3BsaXR0ZXIg
OiBwdWJsaWMgQXVkaW9Ob2RlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxBdWRp
b0NoYW5uZWxTcGxpdHRlcj4gY3JlYXRlKEF1ZGlvQ29udGV4dCogY29udGV4dCwgZmxvYXQgc2Ft
cGxlUmF0ZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQXVkaW9DaGFubmVs
U3BsaXR0ZXIoY29udGV4dCwgc2FtcGxlUmF0ZSkpOyAgICAgIAotICAgIH0KKyAgICBzdGF0aWMg
UGFzc1JlZlB0cjxBdWRpb0NoYW5uZWxTcGxpdHRlcj4gY3JlYXRlKEF1ZGlvQ29udGV4dCosIGZs
b2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0cyk7CiAKICAgICAvLyBBdWRp
b05vZGUKICAgICB2aXJ0dWFsIHZvaWQgcHJvY2VzcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKTsK
QEAgLTQ3LDcgKzQ0LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGRvdWJsZSB0YWlsVGltZSgp
IGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIDA7IH0KICAgICB2aXJ0dWFsIGRvdWJsZSBsYXRlbmN5
VGltZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIDA7IH0KIAotICAgIEF1ZGlvQ2hhbm5lbFNw
bGl0dGVyKEF1ZGlvQ29udGV4dCosIGZsb2F0IHNhbXBsZVJhdGUpOworICAgIEF1ZGlvQ2hhbm5l
bFNwbGl0dGVyKEF1ZGlvQ29udGV4dCosIGZsb2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG51bWJl
ck9mT3V0cHV0cyk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKaW5kZXggZTg5ODQ2NzNm
ZjdiNTUyZTQ2YzE5NjI4ZTdkZTkzNmNkYTk2NDU2OS4uNmMxZTE3ZWMyMTMwZWFlM2EwNmE0OTk4
OWJkZDAwNDRjYjg0MGM2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9Db250ZXh0LmNwcApAQCAtNDU4LDExICs0NTgsMjUgQEAgUGFzc1JlZlB0cjxEZWxh
eU5vZGU+IEF1ZGlvQ29udGV4dDo6Y3JlYXRlRGVsYXlOb2RlKGRvdWJsZSBtYXhEZWxheVRpbWUp
CiAgICAgcmV0dXJuIERlbGF5Tm9kZTo6Y3JlYXRlKHRoaXMsIG1fZGVzdGluYXRpb25Ob2RlLT5z
YW1wbGVSYXRlKCksIG1heERlbGF5VGltZSk7CiB9CiAKLVBhc3NSZWZQdHI8QXVkaW9DaGFubmVs
U3BsaXR0ZXI+IEF1ZGlvQ29udGV4dDo6Y3JlYXRlQ2hhbm5lbFNwbGl0dGVyKCkKK1Bhc3NSZWZQ
dHI8QXVkaW9DaGFubmVsU3BsaXR0ZXI+IEF1ZGlvQ29udGV4dDo6Y3JlYXRlQ2hhbm5lbFNwbGl0
dGVyKEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGNvbnN0IHVuc2lnbmVkIENoYW5uZWxTcGxp
dHRlckRlZmF1bHROdW1iZXJPZk91dHB1dHMgPSA2OworICAgIHJldHVybiBjcmVhdGVDaGFubmVs
U3BsaXR0ZXIoQ2hhbm5lbFNwbGl0dGVyRGVmYXVsdE51bWJlck9mT3V0cHV0cywgZWMpOworfQor
CitQYXNzUmVmUHRyPEF1ZGlvQ2hhbm5lbFNwbGl0dGVyPiBBdWRpb0NvbnRleHQ6OmNyZWF0ZUNo
YW5uZWxTcGxpdHRlcihzaXplX3QgbnVtYmVyT2ZPdXRwdXRzLCBFeGNlcHRpb25Db2RlJiBlYykK
IHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGxhenlJbml0aWFsaXplKCk7Ci0g
ICAgcmV0dXJuIEF1ZGlvQ2hhbm5lbFNwbGl0dGVyOjpjcmVhdGUodGhpcywgbV9kZXN0aW5hdGlv
bk5vZGUtPnNhbXBsZVJhdGUoKSk7CisKKyAgICBSZWZQdHI8QXVkaW9DaGFubmVsU3BsaXR0ZXI+
IG5vZGUgPSBBdWRpb0NoYW5uZWxTcGxpdHRlcjo6Y3JlYXRlKHRoaXMsIG1fZGVzdGluYXRpb25O
b2RlLT5zYW1wbGVSYXRlKCksIG51bWJlck9mT3V0cHV0cyk7CisKKyAgICBpZiAoIW5vZGUuZ2V0
KCkpIHsKKyAgICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICByZXR1cm4gMDsKKyAgICB9
CisKKyAgICByZXR1cm4gbm9kZTsKIH0KIAogUGFzc1JlZlB0cjxBdWRpb0NoYW5uZWxNZXJnZXI+
IEF1ZGlvQ29udGV4dDo6Y3JlYXRlQ2hhbm5lbE1lcmdlcigpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaAppbmRleCAzYjI5NmQ1Mjc3NmExOGU0OWY4
ZTc4ZTZhOWE5MDdiYzIzMGM1NTc1Li4wMWIwYzZmZDhiMGJhOGRkOWZhMDA2OWRiZjQyY2U0MDg5
NzhjMmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
Q29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250
ZXh0LmgKQEAgLTEyNiw3ICsxMjYsOCBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxKYXZhU2Ny
aXB0QXVkaW9Ob2RlPiBjcmVhdGVKYXZhU2NyaXB0Tm9kZShzaXplX3QgYnVmZmVyU2l6ZSwgRXhj
ZXB0aW9uQ29kZSYpOwogICAgIFBhc3NSZWZQdHI8SmF2YVNjcmlwdEF1ZGlvTm9kZT4gY3JlYXRl
SmF2YVNjcmlwdE5vZGUoc2l6ZV90IGJ1ZmZlclNpemUsIHNpemVfdCBudW1iZXJPZklucHV0Q2hh
bm5lbHMsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBQYXNzUmVmUHRyPEphdmFTY3JpcHRBdWRpb05v
ZGU+IGNyZWF0ZUphdmFTY3JpcHROb2RlKHNpemVfdCBidWZmZXJTaXplLCBzaXplX3QgbnVtYmVy
T2ZJbnB1dENoYW5uZWxzLCBzaXplX3QgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgRXhjZXB0aW9u
Q29kZSYpOwotICAgIFBhc3NSZWZQdHI8QXVkaW9DaGFubmVsU3BsaXR0ZXI+IGNyZWF0ZUNoYW5u
ZWxTcGxpdHRlcigpOworICAgIFBhc3NSZWZQdHI8QXVkaW9DaGFubmVsU3BsaXR0ZXI+IGNyZWF0
ZUNoYW5uZWxTcGxpdHRlcihFeGNlcHRpb25Db2RlJik7CisgICAgUGFzc1JlZlB0cjxBdWRpb0No
YW5uZWxTcGxpdHRlcj4gY3JlYXRlQ2hhbm5lbFNwbGl0dGVyKHNpemVfdCBudW1iZXJPZk91dHB1
dHMsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBQYXNzUmVmUHRyPEF1ZGlvQ2hhbm5lbE1lcmdlcj4g
Y3JlYXRlQ2hhbm5lbE1lcmdlcigpOwogICAgIFBhc3NSZWZQdHI8T3NjaWxsYXRvcj4gY3JlYXRl
T3NjaWxsYXRvcigpOwogICAgIFBhc3NSZWZQdHI8V2F2ZVRhYmxlPiBjcmVhdGVXYXZlVGFibGUo
RmxvYXQzMkFycmF5KiByZWFsLCBGbG9hdDMyQXJyYXkqIGltYWcsIEV4Y2VwdGlvbkNvZGUmKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0
LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmlkbApp
bmRleCBlZDA1YTk0YTlhMmM3ZmVkNWEyZjUxNzMyYjVjMjA5OWNkODRhMWRhLi5hMTI5YjA4MTYx
MzhiOTQ5YmU2MGIwZTRmZjgwY2MzMzZiNWMwNDliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaWRsCkBAIC03OCw3ICs3OCw4IEBAIG1vZHVs
ZSB3ZWJhdWRpbyB7CiAgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKIAogICAgICAg
ICAvLyBDaGFubmVsIHNwbGl0dGluZyBhbmQgbWVyZ2luZwotICAgICAgICBBdWRpb0NoYW5uZWxT
cGxpdHRlciBjcmVhdGVDaGFubmVsU3BsaXR0ZXIoKTsKKyAgICAgICAgQXVkaW9DaGFubmVsU3Bs
aXR0ZXIgY3JlYXRlQ2hhbm5lbFNwbGl0dGVyKGluIFtPcHRpb25hbF0gdW5zaWduZWQgbG9uZyBu
dW1iZXJPZk91dHB1dHMpCisgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICAgICAg
ICAgQXVkaW9DaGFubmVsTWVyZ2VyIGNyZWF0ZUNoYW5uZWxNZXJnZXIoKTsKIAogICAgICAgICAv
LyBPZmZsaW5lIHJlbmRlcmluZwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDZiYjg1ZmM3YmJjYmIzZWJmZWYzM2QzY2ZjY2Ex
Mjk3ODc0ZWQ4OGEuLjhhNTMzNjdiYjg5MjBkMzFlNjExZjdiZTkyYzQ2ODg3OGIyZGMyNmEgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wNC0xMSAgUmF5bW9uZCBMaXUgIDxyYXltb25kLmxp
dUBpbnRlbC5jb20+CisKKyAgICAgICAgQXVkaW9Db250ZXh0IGNyZWF0ZUNoYW5uZWxTcGxpdHRl
cigpIG1ldGhvZCBzaG91bGQgaGF2ZSBvcHRpb25hbCBhcmd1bWVudCBmb3IgbnVtYmVyIG9mIG91
dHB1dHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgz
NjQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2hl
Y2sgaHR0cHM6Ly9kdmNzLnczLm9yZy9oZy9hdWRpby9yYXctZmlsZS90aXAvd2ViYXVkaW8vc3Bl
Y2lmaWNhdGlvbi5odG1sIGZvciB0aGUgb3B0aW9uYWwgYXJndW1lbnQuCisKKyAgICAgICAgKiB3
ZWJhdWRpby9hdWRpb2NoYW5uZWxzcGxpdHRlci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIHdlYmF1ZGlvL2F1ZGlvY2hhbm5lbHNwbGl0dGVyLmh0bWw6IEFkZGVkLgorCiAyMDEyLTA0
LTExICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRk
IHR3byBmbGFreSBwbHVnLWluIHRlc3RzLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViYXVk
aW8vYXVkaW9jaGFubmVsc3BsaXR0ZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViYXVk
aW8vYXVkaW9jaGFubmVsc3BsaXR0ZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNjOGY0Njdj
OThhNzAyZGMwYjI2NjRlNmE5ZTM1ZGM5M2E3MzBhMjQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy93ZWJhdWRpby9hdWRpb2NoYW5uZWxzcGxpdHRlci1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSwxMSBAQAorVGVzdHMgQXVkaW9DaGFubmVsU3BsaXR0ZXIuCisKK09uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KKworUEFTUyBFeGNlcHRpb24gYmVlbiB0aHJvd24gZm9yIG51bWJlck9mT3V0
cHV0cyA8PSAwLgorUEFTUyBFeGNlcHRpb24gYmVlbiB0aHJvd24gZm9yIG51bWJlck9mT3V0cHV0
cyA+PSAzMi4KK1BBU1MgQ29ycmVjdGx5IGV4Y2hhbmdlZCBsZWZ0IGFuZCByaWdodCBjaGFubmVs
cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJhdWRpby9hdWRpb2NoYW5uZWxzcGxpdHRlci5odG1s
IGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8vYXVkaW9jaGFubmVsc3BsaXR0ZXIuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5iMDdhNjVjYmZmMTE0MzMyY2NmOTU2OTQyMjE3MTBlYTQyZjVjOWZjCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8vYXVkaW9jaGFubmVsc3BsaXR0ZXIuaHRtbApA
QCAtMCwwICsxLDEzMCBAQAorPCFET0NUWVBFIGh0bWw+CisKKzwhLS0KK1Rlc3RzIHRoYXQgQXVk
aW9DaGFubmVsU3BsaXR0ZXIgd29ya3MgY29ycmVjdGx5LgorLS0+CisKKzxodG1sPgorPGhlYWQ+
Cis8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0icmVzb3VyY2VzL2F1ZGlv
LXRlc3RpbmcuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorCis8Ym9keT4KKworPGRpdiBpZD0iZGVz
Y3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxzY3JpcHQ+Citk
ZXNjcmlwdGlvbigiVGVzdHMgQXVkaW9DaGFubmVsU3BsaXR0ZXIuIik7CisKK3ZhciBzYW1wbGVS
YXRlID0gNDQxMDAuMDsKK3ZhciBsZW5ndGhJblNhbXBsZUZyYW1lcyA9IDUxMjsKKwordmFyIGNv
bnRleHQgPSAwOwordmFyIHNvdXJjZUJ1ZmZlcjsKK3ZhciBzb3VyY2VOb2RlOwordmFyIGNoYW5u
ZWxTcGxpdHRlcjsKK3ZhciBjaGFubmVsTWVyZ2VyOworCitmdW5jdGlvbiBjcmVhdGVTdGVyZW9C
dWZmZXJXaXRoRENPZmZzZXQobGVuZ3RoLCBzYW1wbGVSYXRlLCBvZmZzZXQpIHsKKyAgICB2YXIg
YnVmZmVyID0gY29udGV4dC5jcmVhdGVCdWZmZXIoMiwgbGVuZ3RoLCBzYW1wbGVSYXRlKTsKKyAg
ICB2YXIgbiA9IGJ1ZmZlci5sZW5ndGg7CisgICAgdmFyIGNoYW5uZWxMID0gYnVmZmVyLmdldENo
YW5uZWxEYXRhKDApOworICAgIHZhciBjaGFubmVsUiA9IGJ1ZmZlci5nZXRDaGFubmVsRGF0YSgx
KTsKKworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgKytpKSB7CisgICAgICAgIGNoYW5uZWxM
W2ldID0gb2Zmc2V0OworICAgICAgICBjaGFubmVsUltpXSA9IC0xLjAgKiBvZmZzZXQ7CisgICAg
fQorCisgICAgcmV0dXJuIGJ1ZmZlcjsKK30KKworLy8gY2hlY2tSZXN1bHQoKSBjaGVja3MgdGhh
dCB0aGUgcmVuZGVyZWQgYnVmZmVyIGlzIHN0ZXJlbyBhbmQgdGhhdCB0aGUgbGVmdCBjaGFubmVs
IGlzIGFsbCAtMSBhbmQgcmlnaHQgY2hhbm5lbCBhbGwgKzEuCisvLyBJbiBvdGhlciB3b3Jkcywg
d2UndmUgcmV2ZXJzZWQgdGhlIG9yZGVyIG9mIHRoZSB0d28gY2hhbm5lbHMuCitmdW5jdGlvbiBj
aGVja1Jlc3VsdChldmVudCkgeworICAgIHZhciBidWZmZXIgPSBldmVudC5yZW5kZXJlZEJ1ZmZl
cjsKKworICAgIHZhciBzdWNjZXNzID0gdHJ1ZTsKKworICAgIGlmIChidWZmZXIubnVtYmVyT2ZD
aGFubmVscyA9PSAyKSB7CisgICAgICAgIHZhciBidWZmZXJEYXRhTCA9IGJ1ZmZlci5nZXRDaGFu
bmVsRGF0YSgwKTsKKyAgICAgICAgdmFyIGJ1ZmZlckRhdGFSID0gYnVmZmVyLmdldENoYW5uZWxE
YXRhKDEpOworCisgICAgICAgIC8vIEdvIHRocm91Z2ggZXZlcnkgc2FtcGxlIGFuZCBtYWtlIHN1
cmUgaXQncyBhbGwgLTEgZm9yIHRoZSBsZWZ0LWNoYW5uZWwsIGFuZCBhbGwgKzEgZm9yIHRoZSBy
aWdodC1jaGFubmVsLgorICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJ1ZmZlci5sZW5ndGg7
ICsraSkgeworICAgICAgICAgICAgaWYgKGJ1ZmZlckRhdGFMW2ldICE9IC0xIHx8IGJ1ZmZlckRh
dGFSW2ldICE9IDEpIHsKKyAgICAgICAgICAgICAgICBzdWNjZXNzID0gZmFsc2U7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9IGVsc2Ugewor
ICAgICAgICBzdWNjZXNzID0gZmFsc2U7CisgICAgfQorCisgICAgaWYgKHN1Y2Nlc3MpIHsKKyAg
ICAgICAgdGVzdFBhc3NlZCgiQ29ycmVjdGx5IGV4Y2hhbmdlZCBsZWZ0IGFuZCByaWdodCBjaGFu
bmVscy4iKTsKKyAgICB9IGVsc2UgeworICAgICAgICB0ZXN0RmFpbGVkKCJFcnJvciBvbiBleGNo
YW5naW5nIGxlZnQgYW5kIHJpZ2h0IGNoYW5uZWxzLiIpOworICAgIH0KKworICAgIGZpbmlzaEpT
VGVzdCgpOworfQorCitmdW5jdGlvbiBydW5UZXN0KCkgeworICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCgpOworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAg
fQorCisgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgLy8gQ3JlYXRlIHN0
ZXJlbyBvZmZsaW5lIGF1ZGlvIGNvbnRleHQuCisgICAgY29udGV4dCA9IG5ldyB3ZWJraXRBdWRp
b0NvbnRleHQoMiwgbGVuZ3RoSW5TYW1wbGVGcmFtZXMsIHNhbXBsZVJhdGUpOworCisgICAgdHJ5
IHsKKyAgICAgICAgdmFyIHNwbGl0dGVybm9kZSA9IGNvbnRleHQuY3JlYXRlQ2hhbm5lbFNwbGl0
dGVyKDApOworICAgICAgICB0ZXN0RmFpbGVkKCJFeGNlcHRpb24gc2hvdWxkIGJlIHRocm93biBm
b3IgbnVtYmVyT2ZPdXRwdXRzIDw9IDAuIik7CisgICAgfSBjYXRjaChlKSB7CisgICAgICAgIHRl
c3RQYXNzZWQoIkV4Y2VwdGlvbiBiZWVuIHRocm93biBmb3IgbnVtYmVyT2ZPdXRwdXRzIDw9IDAu
Iik7CisgICAgfQorCisgICAgdHJ5IHsKKyAgICAgICAgdmFyIHNwbGl0dGVybm9kZSA9IGNvbnRl
eHQuY3JlYXRlQ2hhbm5lbFNwbGl0dGVyKDMzKTsKKyAgICAgICAgdGVzdEZhaWxlZCgiRXhjZXB0
aW9uIHNob3VsZCBiZSB0aHJvd24gZm9yIG51bWVyT2ZPdXRwdXRzID49IDMyLiIpOworICAgIH0g
Y2F0Y2goZSkgeworICAgICAgICB0ZXN0UGFzc2VkKCJFeGNlcHRpb24gYmVlbiB0aHJvd24gZm9y
IG51bWJlck9mT3V0cHV0cyA+PSAzMi4iKTsKKyAgICB9CisKKyAgICAvLyBDcmVhdGUgYSBzdGVy
ZW8gYnVmZmVyLCB3aXRoIGFsbCArMSB2YWx1ZXMgaW4gbGVmdCBjaGFubmVsLCBhbGwgLTEgaW4g
cmlnaHQgY2hhbm5lbC4KKyAgICBzb3VyY2VCdWZmZXIgPSBjcmVhdGVTdGVyZW9CdWZmZXJXaXRo
RENPZmZzZXQobGVuZ3RoSW5TYW1wbGVGcmFtZXMsIHNhbXBsZVJhdGUsIDEpOworCisgICAgc291
cmNlTm9kZSA9IGNvbnRleHQuY3JlYXRlQnVmZmVyU291cmNlKCk7CisgICAgc291cmNlTm9kZS5i
dWZmZXIgPSBzb3VyY2VCdWZmZXI7CisKKyAgICAvLyBDcmVhdGUgYSBjaGFubmVsIHNwbGl0dGVy
IGFuZCBjb25uZWN0IGl0IHNvIHRoYXQgaXQgc3BsaXQgdGhlIHN0ZXJlbyBzdHJlYW0gaW50byB0
d28gbW9ubyBzdHJlYW1zLgorICAgIGNoYW5uZWxTcGxpdHRlciA9IGNvbnRleHQuY3JlYXRlQ2hh
bm5lbFNwbGl0dGVyKDIpOworICAgIHNvdXJjZU5vZGUuY29ubmVjdChjaGFubmVsU3BsaXR0ZXIp
OworCisgICAgLy8gQ3JlYXRlIGEgY2hhbm5lbCBtZXJnZXIgdG8gbWVyZ2UgdGhlIG91dHB1dCBv
ZiBjaGFubmVsIHNwbGl0dGVyLgorICAgIGNoYW5uZWxNZXJnZXIgPSBjb250ZXh0LmNyZWF0ZUNo
YW5uZWxNZXJnZXIoKTsKKyAgICBjaGFubmVsTWVyZ2VyLmNvbm5lY3QoY29udGV4dC5kZXN0aW5h
dGlvbik7CisKKyAgICAvLyBXaGVuIG1lcmdpbmcsIGV4Y2hhbmdlIGNoYW5uZWwgbGF5b3V0OiBs
ZWZ0LT5yaWdodCwgcmlnaHQtPmxlZnQKKyAgICBjaGFubmVsU3BsaXR0ZXIuY29ubmVjdChjaGFu
bmVsTWVyZ2VyLCAwLCAxKTsKKyAgICBjaGFubmVsU3BsaXR0ZXIuY29ubmVjdChjaGFubmVsTWVy
Z2VyLCAxLCAwKTsKKworICAgIHNvdXJjZU5vZGUubm90ZU9uKDApOworCisgICAgY29udGV4dC5v
bmNvbXBsZXRlID0gY2hlY2tSZXN1bHQ7CisgICAgY29udGV4dC5zdGFydFJlbmRlcmluZygpOwor
fQorCitydW5UZXN0KCk7CisKKzwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>