<?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>64076</bug_id>
          
          <creation_ts>2011-07-07 02:14:58 -0700</creation_ts>
          <short_desc>webkitAudioContext does not do proper sanity checking on its arguments.</short_desc>
          <delta_ts>2011-07-12 12:17:17 -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>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Windows Vista</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P1</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Berend-Jan Wever">skylined</reporter>
          <assigned_to name="Chris Rogers">crogers</assigned_to>
          <cc>crogers</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>kbr</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>433360</commentid>
    <comment_count>0</comment_count>
    <who name="Berend-Jan Wever">skylined</who>
    <bug_when>2011-07-07 02:14:58 -0700</bug_when>
    <thetext>Chromium https://code.google.com/p/chromium/issues/detail?id=88638
Split off from bug 63997.

webkitAudioContext takes three arguments, which should be non-zero positive values that are limited by the amount of available memory. The code is currently not doing proper checks, which causes crashes when you supply invalid arguments:

Repro:
&lt;script&gt;
  // This should not crash but simply output &quot;PASS&quot;.
  var aiArgs = [
      [-1,1,1], [0,1,1],
      [1,-1,1], [1,0,1],
      [1,1,-1], [1,1,0],
      [0x7FFFFFFF, 0x7FFFFFFF, 0x7FFFFFFF]],
      bFail = false;
  if (!window.webkitAudioContext) {
    document.write(&apos;DISABLED&apos;);
  } else {
    for (var i = 0; i &lt; aiArgs.length; i++) {
      var code = &apos;new webkitAudioContext(&apos; + aiArgs[i].join(&apos;,&apos;) + &apos;)&apos;;
      try { eval(code); }
      catch (e) { continue; }
      document.write(&apos;FAIL: &apos; + code);
      bFail = true;
    }
    if (!bFail) document.write(&apos;PASS&apos;);
  }
&lt;/script&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>433380</commentid>
    <comment_count>1</comment_count>
    <who name="Berend-Jan Wever">skylined</who>
    <bug_when>2011-07-07 03:53:06 -0700</bug_when>
    <thetext>See also bug 63997</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>434420</commentid>
    <comment_count>2</comment_count>
      <attachid>100193</attachid>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2011-07-08 17:47:23 -0700</bug_when>
    <thetext>Created attachment 100193
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>434426</commentid>
    <comment_count>3</comment_count>
      <attachid>100193</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-08 18:03:50 -0700</bug_when>
    <thetext>Comment on attachment 100193
Patch

Attachment 100193 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/8997835</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>434429</commentid>
    <comment_count>4</comment_count>
      <attachid>100193</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-07-08 18:12:51 -0700</bug_when>
    <thetext>Comment on attachment 100193
Patch

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

&gt; Source/WebCore/bindings/js/JSAudioContextCustom.cpp:78
&gt; +        signed numberOfChannels = exec-&gt;argument(0).toInt32(exec);
&gt; +        signed numberOfFrames = exec-&gt;argument(1).toInt32(exec);

Why not use int32 rather than signed?

&gt; Source/WebCore/bindings/js/JSAudioContextCustom.cpp:135
&gt; +    signed numberOfChannels = exec-&gt;argument(0).toInt32(exec);
&gt; +    signed numberOfFrames = exec-&gt;argument(1).toInt32(exec);

Same here.

&gt; Source/WebCore/bindings/v8/custom/V8AudioContextCustom.cpp:70
&gt; +        signed numberOfChannels = toInt32(args[0], ok);

Same here.

&gt; Source/WebCore/bindings/v8/custom/V8AudioContextCustom.cpp:74
&gt; +        signed numberOfFrames = toInt32(args[1], ok);

Same here.

&gt; Source/WebCore/bindings/v8/custom/V8AudioContextCustom.cpp:133
&gt; +    signed numberOfChannels = toInt32(args[0], ok);

And here.

&gt; Source/WebCore/bindings/v8/custom/V8AudioContextCustom.cpp:137
&gt; +    signed numberOfFrames = toInt32(args[1], ok);

And here.

&gt; Source/WebCore/webaudio/AudioContext.cpp:91
&gt; +PassRefPtr&lt;AudioContext&gt; AudioContext::createOfflineContext(Document* document, unsigned numberOfChannels, size_t numberOfFrames, double sampleRate, ExceptionCode&amp; ec)

Why is numberOfChannels still unsigned if the caller is passing signed? Similar for numberOfFrames.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>434430</commentid>
    <comment_count>5</comment_count>
      <attachid>100193</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-07-08 18:13:25 -0700</bug_when>
    <thetext>Comment on attachment 100193
Patch

On second thought I&apos;m r-&apos;ing this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>434444</commentid>
    <comment_count>6</comment_count>
      <attachid>100199</attachid>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2011-07-08 18:56:59 -0700</bug_when>
    <thetext>Created attachment 100199
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>434445</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2011-07-08 18:58:36 -0700</bug_when>
    <thetext>Fixed signed -&gt; int32_t

The actual API is unsigned, but it seems useful to do bounds checking on the parameters as signed, since negative values can be easily dealt with.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>434446</commentid>
    <comment_count>8</comment_count>
      <attachid>100199</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-08 19:02:08 -0700</bug_when>
    <thetext>Comment on attachment 100199
Patch

Attachment 100199 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/8999738</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>434448</commentid>
    <comment_count>9</comment_count>
      <attachid>100200</attachid>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2011-07-08 19:07:16 -0700</bug_when>
    <thetext>Created attachment 100200
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>434449</commentid>
    <comment_count>10</comment_count>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2011-07-08 19:07:58 -0700</bug_when>
    <thetext>Sorry - last patch fixes cr-linux compile error</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435813</commentid>
    <comment_count>11</comment_count>
      <attachid>100200</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-07-12 11:36:59 -0700</bug_when>
    <thetext>Comment on attachment 100200
Patch

OK, looks good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435850</commentid>
    <comment_count>12</comment_count>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2011-07-12 12:17:17 -0700</bug_when>
    <thetext>Committed r90839: &lt;http://trac.webkit.org/changeset/90839&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>100193</attachid>
            <date>2011-07-08 17:47:23 -0700</date>
            <delta_ts>2011-07-08 18:56:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-64076-20110708174722.patch</filename>
            <type>text/plain</type>
            <size>9990</size>
            <attacher name="Chris Rogers">crogers</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkwNjc0KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTEtMDctMDggIENocmlzIFJv
Z2VycyAgPGNyb2dlcnNAZ29vZ2xlLmNvbT4KKworICAgICAgICB3ZWJraXRBdWRpb0NvbnRleHQg
ZG9lcyBub3QgZG8gcHJvcGVyIHNhbml0eSBjaGVja2luZyBvbiBpdHMgYXJndW1lbnRzLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjQwNzYKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMg
c2luY2UgYXVkaW8gQVBJIGlzIG5vdCB5ZXQgaW1wbGVtZW50ZWQuCisKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0F1ZGlvQ29udGV4dEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0F1
ZGlvQ29udGV4dENvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU0F1ZGlvQ29udGV4dCk6CisgICAgICAg
IChXZWJDb3JlOjpKU0F1ZGlvQ29udGV4dDo6Y3JlYXRlQnVmZmVyKToKKyAgICAgICAgKiBiaW5k
aW5ncy92OC9jdXN0b20vVjhBdWRpb0NvbnRleHRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VjhBdWRpb0NvbnRleHQ6OmNvbnN0cnVjdG9yQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29y
ZTo6VjhBdWRpb0NvbnRleHQ6OmNyZWF0ZUJ1ZmZlckNhbGxiYWNrKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9hdWRpby9IUlRGRGF0YWJhc2VMb2FkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhSVEZE
YXRhYmFzZUxvYWRlcjo6ZGF0YWJhc2VTYW1wbGVSYXRlKToKKyAgICAgICAgKiB3ZWJhdWRpby9B
dWRpb0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0OjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0OjpjcmVhdGVPZmZsaW5lQ29udGV4dCk6
CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OmNyZWF0ZUJ1ZmZlcik6CisgICAgICAg
ICogd2ViYXVkaW8vQXVkaW9Db250ZXh0Lmg6CisKIDIwMTEtMDctMDggIEFkYW0gQmFydGggIDxh
YmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByOTA2
NjIuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvQ29udGV4dEN1c3Rv
bS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb0Nv
bnRleHRDdXN0b20uY3BwCShyZXZpc2lvbiA5MDY3MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQXVkaW9Db250ZXh0Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzQsMTEg
Kzc0LDI1IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNBdWRpb0NvbnQKICAgICAg
ICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDMpCiAgICAgICAgICAgICByZXR1cm4gdGhy
b3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsICJOb3QgZW5vdWdoIGFyZ3Vt
ZW50cyIpKTsKIAotICAgICAgICB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzID0gZXhlYy0+YXJn
dW1lbnQoMCkudG9JbnQzMihleGVjKTsKLSAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZGcmFtZXMg
PSBleGVjLT5hcmd1bWVudCgxKS50b0ludDMyKGV4ZWMpOworICAgICAgICBzaWduZWQgbnVtYmVy
T2ZDaGFubmVscyA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvSW50MzIoZXhlYyk7CisgICAgICAgIHNp
Z25lZCBudW1iZXJPZkZyYW1lcyA9IGV4ZWMtPmFyZ3VtZW50KDEpLnRvSW50MzIoZXhlYyk7CiAg
ICAgICAgIGZsb2F0IHNhbXBsZVJhdGUgPSBleGVjLT5hcmd1bWVudCgyKS50b0Zsb2F0KGV4ZWMp
OwotCi0gICAgICAgIGF1ZGlvQ29udGV4dCA9IEF1ZGlvQ29udGV4dDo6Y3JlYXRlT2ZmbGluZUNv
bnRleHQoZG9jdW1lbnQsIG51bWJlck9mQ2hhbm5lbHMsIG51bWJlck9mRnJhbWVzLCBzYW1wbGVS
YXRlKTsKKyAgICAgICAgCisgICAgICAgIGlmIChudW1iZXJPZkNoYW5uZWxzIDw9IDAgfHwgbnVt
YmVyT2ZDaGFubmVscyA+IDEwKQorICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVj
LCBjcmVhdGVTeW50YXhFcnJvcihleGVjLCAiSW52YWxpZCBudW1iZXIgb2YgY2hhbm5lbHMiKSk7
CisKKyAgICAgICAgaWYgKG51bWJlck9mRnJhbWVzIDw9IDApCisgICAgICAgICAgICByZXR1cm4g
dGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsICJJbnZhbGlkIG51bWJl
ciBvZiBmcmFtZXMiKSk7CisKKyAgICAgICAgaWYgKHNhbXBsZVJhdGUgPD0gMCkKKyAgICAgICAg
ICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlU3ludGF4RXJyb3IoZXhlYywgIklu
dmFsaWQgc2FtcGxlIHJhdGUiKSk7CisKKyAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Cisg
ICAgICAgIGF1ZGlvQ29udGV4dCA9IEF1ZGlvQ29udGV4dDo6Y3JlYXRlT2ZmbGluZUNvbnRleHQo
ZG9jdW1lbnQsIG51bWJlck9mQ2hhbm5lbHMsIG51bWJlck9mRnJhbWVzLCBzYW1wbGVSYXRlLCBl
Yyk7CisgICAgICAgIGlmIChlYykgeworICAgICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMs
IGVjKTsKKyAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgICAgICB9CiAgICAg
fQogCiAgICAgaWYgKCFhdWRpb0NvbnRleHQuZ2V0KCkpCkBAIC0xMTcsMTAgKzEzMSwxOSBAQCBK
U1ZhbHVlIEpTQXVkaW9Db250ZXh0OjpjcmVhdGVCdWZmZXIoRXhlCiAgICAgaWYgKGV4ZWMtPmFy
Z3VtZW50Q291bnQoKSA8IDMpCiAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0
ZVN5bnRheEVycm9yKGV4ZWMsICJOb3QgZW5vdWdoIGFyZ3VtZW50cyIpKTsKICAgICAKLSAgICB1
bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzID0gZXhlYy0+YXJndW1lbnQoMCkudG9JbnQzMihleGVj
KTsKLSAgICB1bnNpZ25lZCBudW1iZXJPZkZyYW1lcyA9IGV4ZWMtPmFyZ3VtZW50KDEpLnRvSW50
MzIoZXhlYyk7CisgICAgc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMgPSBleGVjLT5hcmd1bWVudCgw
KS50b0ludDMyKGV4ZWMpOworICAgIHNpZ25lZCBudW1iZXJPZkZyYW1lcyA9IGV4ZWMtPmFyZ3Vt
ZW50KDEpLnRvSW50MzIoZXhlYyk7CiAgICAgZmxvYXQgc2FtcGxlUmF0ZSA9IGV4ZWMtPmFyZ3Vt
ZW50KDIpLnRvRmxvYXQoZXhlYyk7CiAKKyAgICBpZiAobnVtYmVyT2ZDaGFubmVscyA8PSAwIHx8
IG51bWJlck9mQ2hhbm5lbHMgPiAxMCkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVj
LCBjcmVhdGVTeW50YXhFcnJvcihleGVjLCAiSW52YWxpZCBudW1iZXIgb2YgY2hhbm5lbHMiKSk7
CisKKyAgICBpZiAobnVtYmVyT2ZGcmFtZXMgPD0gMCkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1F
cnJvcihleGVjLCBjcmVhdGVTeW50YXhFcnJvcihleGVjLCAiSW52YWxpZCBudW1iZXIgb2YgZnJh
bWVzIikpOworCisgICAgaWYgKHNhbXBsZVJhdGUgPD0gMCkKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1FcnJvcihleGVjLCBjcmVhdGVTeW50YXhFcnJvcihleGVjLCAiSW52YWxpZCBzYW1wbGUgcmF0
ZSIpKTsKKwogICAgIFJlZlB0cjxBdWRpb0J1ZmZlcj4gYXVkaW9CdWZmZXIgPSBhdWRpb0NvbnRl
eHQtPmNyZWF0ZUJ1ZmZlcihudW1iZXJPZkNoYW5uZWxzLCBudW1iZXJPZkZyYW1lcywgc2FtcGxl
UmF0ZSk7CiAgICAgaWYgKCFhdWRpb0J1ZmZlci5nZXQoKSkKICAgICAgICAgcmV0dXJuIHRocm93
RXJyb3IoZXhlYywgY3JlYXRlU3ludGF4RXJyb3IoZXhlYywgIkVycm9yIGNyZWF0aW5nIEF1ZGlv
QnVmZmVyIikpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QXVk
aW9Db250ZXh0Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhBdWRpb0NvbnRleHRDdXN0b20uY3BwCShyZXZpc2lvbiA5MDY3MSkKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEF1ZGlvQ29udGV4dEN1c3RvbS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQzLDkgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IFY4QXVkaW9Db250ZXh0OjpjbwogewogICAgIElOQ19TVEFUUygiRE9NLkF1ZGlvQ29udGV4dC5D
b250cnVjdG9yIik7CiAKKyAgICBpZiAoIWFyZ3MuSXNDb25zdHJ1Y3RDYWxsKCkpCisgICAgICAg
IHJldHVybiB0aHJvd0Vycm9yKCJBdWRpb0NvbnRleHQgY29uc3RydWN0b3IgY2Fubm90IGJlIGNh
bGxlZCBhcyBhIGZ1bmN0aW9uLiIpOworCiAgICAgRnJhbWUqIGZyYW1lID0gVjhQcm94eTo6cmV0
cmlldmVGcmFtZUZvckN1cnJlbnRDb250ZXh0KCk7CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAg
cmV0dXJuIHRocm93RXJyb3IoIkF1ZGlvQ29udGV4dCBjb25zdHJ1Y3RvciBhc3NvY2lhdGVkIGZy
YW1lIGlzIHVuYXZhaWxhYmxlIiwgVjhQcm94eTo6UmVmZXJlbmNlRXJyb3IpOwpAQCAtNjQsMTcg
KzY3LDIyIEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEF1ZGlvQ29udGV4dDo6Y28KIAogICAg
ICAgICBib29sIG9rID0gZmFsc2U7CiAKLSAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVs
cyA9IHRvSW50MzIoYXJnc1swXSwgb2spOwotICAgICAgICBpZiAoIW9rKQorICAgICAgICBzaWdu
ZWQgbnVtYmVyT2ZDaGFubmVscyA9IHRvSW50MzIoYXJnc1swXSwgb2spOworICAgICAgICBpZiAo
IW9rIHx8IG51bWJlck9mQ2hhbm5lbHMgPD0gMCB8fCBudW1iZXJPZkNoYW5uZWxzID4gMTApCiAg
ICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigiSW52YWxpZCBudW1iZXIgb2YgY2hhbm5lbHMi
LCBWOFByb3h5OjpTeW50YXhFcnJvcik7CiAKLSAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZGcmFt
ZXMgPSB0b0ludDMyKGFyZ3NbMV0sIG9rKTsKLSAgICAgICAgaWYgKCFvaykKKyAgICAgICAgc2ln
bmVkIG51bWJlck9mRnJhbWVzID0gdG9JbnQzMihhcmdzWzFdLCBvayk7CisgICAgICAgIGlmICgh
b2sgfHwgbnVtYmVyT2ZGcmFtZXMgPD0gMCkKICAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9y
KCJJbnZhbGlkIG51bWJlciBvZiBmcmFtZXMiLCBWOFByb3h5OjpTeW50YXhFcnJvcik7CiAKICAg
ICAgICAgZmxvYXQgc2FtcGxlUmF0ZSA9IHRvRmxvYXQoYXJnc1syXSk7CisgICAgICAgIGlmIChz
YW1wbGVSYXRlIDw9IDApCisgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigiSW52YWxpZCBz
YW1wbGUgcmF0ZSIsIFY4UHJveHk6OlN5bnRheEVycm9yKTsKIAotICAgICAgICBhdWRpb0NvbnRl
eHQgPSBBdWRpb0NvbnRleHQ6OmNyZWF0ZU9mZmxpbmVDb250ZXh0KGRvY3VtZW50LCBudW1iZXJP
ZkNoYW5uZWxzLCBudW1iZXJPZkZyYW1lcywgc2FtcGxlUmF0ZSk7CisgICAgICAgIEV4Y2VwdGlv
bkNvZGUgZWMgPSAwOworICAgICAgICBhdWRpb0NvbnRleHQgPSBBdWRpb0NvbnRleHQ6OmNyZWF0
ZU9mZmxpbmVDb250ZXh0KGRvY3VtZW50LCBudW1iZXJPZkNoYW5uZWxzLCBudW1iZXJPZkZyYW1l
cywgc2FtcGxlUmF0ZSwgZWMpOworICAgICAgICBpZiAoZWMpCisgICAgICAgICAgICByZXR1cm4g
dGhyb3dFcnJvcihlYyk7CiAgICAgfQogCiAgICAgaWYgKCFhdWRpb0NvbnRleHQuZ2V0KCkpCkBA
IC0xMjIsMTIgKzEzMCwxMiBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhBdWRpb0NvbnRleHQ6
OmNyCiAKICAgICBib29sIG9rID0gZmFsc2U7CiAgICAgCi0gICAgdW5zaWduZWQgbnVtYmVyT2ZD
aGFubmVscyA9IHRvSW50MzIoYXJnc1swXSwgb2spOwotICAgIGlmICghb2spCisgICAgc2lnbmVk
IG51bWJlck9mQ2hhbm5lbHMgPSB0b0ludDMyKGFyZ3NbMF0sIG9rKTsKKyAgICBpZiAoIW9rIHx8
IG51bWJlck9mQ2hhbm5lbHMgPD0gMCB8fCBudW1iZXJPZkNoYW5uZWxzID4gMTApCiAgICAgICAg
IHJldHVybiB0aHJvd0Vycm9yKCJJbnZhbGlkIG51bWJlciBvZiBjaGFubmVscyIsIFY4UHJveHk6
OlN5bnRheEVycm9yKTsKICAgICAKLSAgICB1bnNpZ25lZCBudW1iZXJPZkZyYW1lcyA9IHRvSW50
MzIoYXJnc1sxXSwgb2spOwotICAgIGlmICghb2spCisgICAgc2lnbmVkIG51bWJlck9mRnJhbWVz
ID0gdG9JbnQzMihhcmdzWzFdLCBvayk7CisgICAgaWYgKCFvayB8fCBudW1iZXJPZkZyYW1lcyA8
PSAwKQogICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigiSW52YWxpZCBudW1iZXIgb2YgZnJhbWVz
IiwgVjhQcm94eTo6U3ludGF4RXJyb3IpOwogICAgIAogICAgIGZsb2F0IHNhbXBsZVJhdGUgPSB0
b0Zsb2F0KGFyZ3NbMl0pOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJU
RkRhdGFiYXNlTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vSFJURkRhdGFiYXNlTG9hZGVyLmgJKHJldmlzaW9uIDkwNjcxKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkRhdGFiYXNlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTYwLDYgKzYwLDggQEAgcHVibGljOgogICAgIHZvaWQgd2FpdEZvckxvYWRlclRocmVhZENv
bXBsZXRpb24oKTsKICAgICAKICAgICBIUlRGRGF0YWJhc2UqIGRhdGFiYXNlKCkgeyByZXR1cm4g
bV9ocnRmRGF0YWJhc2UuZ2V0KCk7IH0KKworICAgIGRvdWJsZSBkYXRhYmFzZVNhbXBsZVJhdGUo
KSBjb25zdCB7IHJldHVybiBtX2RhdGFiYXNlU2FtcGxlUmF0ZTsgfQogICAgIAogICAgIC8vIENh
bGxlZCBpbiBhc3luY2hyb25vdXMgbG9hZGluZyB0aHJlYWQuCiAgICAgdm9pZCBsb2FkKCk7CkBA
IC03Nyw4ICs3OSw2IEBAIHByaXZhdGU6CiAgICAgLy8gVGhpcyBtdXN0IGJlIGNhbGxlZCBmcm9t
IHRoZSBtYWluIHRocmVhZC4KICAgICB2b2lkIGxvYWRBc3luY2hyb25vdXNseSgpOwogCi0gICAg
ZG91YmxlIGRhdGFiYXNlU2FtcGxlUmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YWJhc2VTYW1w
bGVSYXRlOyB9Ci0KICAgICBzdGF0aWMgSFJURkRhdGFiYXNlTG9hZGVyKiBzX2xvYWRlcjsgLy8g
c2luZ2xldG9uCiAgICAgT3duUHRyPEhSVEZEYXRhYmFzZT4gbV9ocnRmRGF0YWJhc2U7CiAgICAg
VGhyZWFkSWRlbnRpZmllciBtX2RhdGFiYXNlTG9hZGVyVGhyZWFkOwpJbmRleDogU291cmNlL1dl
YkNvcmUvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCShyZXZpc2lvbiA5MDY3MSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcy
LDE0ICs3MiwzNCBAQCBjb25zdCBpbnQgVW5kZWZpbmVkVGhyZWFkSWRlbnRpZmllciA9IDB4CiBj
b25zdCB1bnNpZ25lZCBNYXhOb2Rlc1RvRGVsZXRlUGVyUXVhbnR1bSA9IDEwOwogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CisgICAgCituYW1lc3BhY2UgeworICAgIAorYm9vbCBpc1NhbXBsZVJhdGVS
YW5nZUdvb2QoZG91YmxlIHNhbXBsZVJhdGUpCit7CisgICAgcmV0dXJuIHNhbXBsZVJhdGUgPj0g
MjIwNTAgJiYgc2FtcGxlUmF0ZSA8PSA5NjAwMDsKK30KKworfQogCiBQYXNzUmVmUHRyPEF1ZGlv
Q29udGV4dD4gQXVkaW9Db250ZXh0OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQogeworICAg
IEFTU0VSVChkb2N1bWVudCk7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBBdWRpb0NvbnRleHQo
ZG9jdW1lbnQpKTsKIH0KIAotUGFzc1JlZlB0cjxBdWRpb0NvbnRleHQ+IEF1ZGlvQ29udGV4dDo6
Y3JlYXRlT2ZmbGluZUNvbnRleHQoRG9jdW1lbnQqIGRvY3VtZW50LCB1bnNpZ25lZCBudW1iZXJP
ZkNoYW5uZWxzLCBzaXplX3QgbnVtYmVyT2ZGcmFtZXMsIGRvdWJsZSBzYW1wbGVSYXRlKQorUGFz
c1JlZlB0cjxBdWRpb0NvbnRleHQ+IEF1ZGlvQ29udGV4dDo6Y3JlYXRlT2ZmbGluZUNvbnRleHQo
RG9jdW1lbnQqIGRvY3VtZW50LCB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzLCBzaXplX3QgbnVt
YmVyT2ZGcmFtZXMsIGRvdWJsZSBzYW1wbGVSYXRlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAg
ICBBU1NFUlQoZG9jdW1lbnQpOworCisgICAgLy8gRklYTUU6IG9mZmxpbmUgY29udGV4dHMgaGF2
ZSBsaW1pdGF0aW9ucyBvbiBzdXBwb3J0ZWQgc2FtcGxlLXJhdGVzLgorICAgIC8vIEN1cnJlbnRs
eSBhbGwgQXVkaW9Db250ZXh0cyBtdXN0IGhhdmUgdGhlIHNhbWUgc2FtcGxlLXJhdGUuCisgICAg
SFJURkRhdGFiYXNlTG9hZGVyKiBsb2FkZXIgPSBIUlRGRGF0YWJhc2VMb2FkZXI6OmxvYWRlcigp
OworICAgIGlmIChudW1iZXJPZkNoYW5uZWxzID4gMTAgfHwgIWlzU2FtcGxlUmF0ZVJhbmdlR29v
ZChzYW1wbGVSYXRlKSB8fCBsb2FkZXIgJiYgbG9hZGVyLT5kYXRhYmFzZVNhbXBsZVJhdGUoKSAh
PSBzYW1wbGVSYXRlKSB7CisgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAgcmV0dXJu
IDA7CisgICAgfQorCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBBdWRpb0NvbnRleHQoZG9jdW1l
bnQsIG51bWJlck9mQ2hhbm5lbHMsIG51bWJlck9mRnJhbWVzLCBzYW1wbGVSYXRlKSk7CiB9CiAK
QEAgLTIzNiw2ICsyNTYsOSBAQCB2b2lkIEF1ZGlvQ29udGV4dDo6cmVmQnVmZmVyKFBhc3NSZWZQ
dHI8CiAKIFBhc3NSZWZQdHI8QXVkaW9CdWZmZXI+IEF1ZGlvQ29udGV4dDo6Y3JlYXRlQnVmZmVy
KHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdCBudW1iZXJPZkZyYW1lcywgZG91Ymxl
IHNhbXBsZVJhdGUpCiB7CisgICAgaWYgKCFpc1NhbXBsZVJhdGVSYW5nZUdvb2Qoc2FtcGxlUmF0
ZSkgfHwgbnVtYmVyT2ZDaGFubmVscyA+IDEwIHx8ICFudW1iZXJPZkZyYW1lcykKKyAgICAgICAg
cmV0dXJuIDA7CisgICAgCiAgICAgcmV0dXJuIEF1ZGlvQnVmZmVyOjpjcmVhdGUobnVtYmVyT2ZD
aGFubmVscywgbnVtYmVyT2ZGcmFtZXMsIHNhbXBsZVJhdGUpOwogfQogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS93ZWJhdWRpby9BdWRpb0NvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS93ZWJhdWRpby9BdWRpb0NvbnRleHQuaAkocmV2aXNpb24gOTA2NzEpCisrKyBTb3VyY2Uv
V2ViQ29yZS93ZWJhdWRpby9BdWRpb0NvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtNzEsNyAr
NzEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8QXVkaW9Db250ZXh0PiBjcmVh
dGUoRG9jdW1lbnQqKTsKIAogICAgIC8vIENyZWF0ZSBhbiBBdWRpb0NvbnRleHQgZm9yIG9mZmxp
bmUgKG5vbi1yZWFsdGltZSkgcmVuZGVyaW5nLgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEF1ZGlv
Q29udGV4dD4gY3JlYXRlT2ZmbGluZUNvbnRleHQoRG9jdW1lbnQqLCB1bnNpZ25lZCBudW1iZXJP
ZkNoYW5uZWxzLCBzaXplX3QgbnVtYmVyT2ZGcmFtZXMsIGRvdWJsZSBzYW1wbGVSYXRlKTsKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxBdWRpb0NvbnRleHQ+IGNyZWF0ZU9mZmxpbmVDb250ZXh0KERv
Y3VtZW50KiwgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywgc2l6ZV90IG51bWJlck9mRnJhbWVz
LCBkb3VibGUgc2FtcGxlUmF0ZSwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgdmlydHVhbCB+QXVk
aW9Db250ZXh0KCk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>100199</attachid>
            <date>2011-07-08 18:56:59 -0700</date>
            <delta_ts>2011-07-08 19:07:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-64076-20110708185658.patch</filename>
            <type>text/plain</type>
            <size>9998</size>
            <attacher name="Chris Rogers">crogers</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkwNjc0KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTEtMDctMDggIENocmlzIFJv
Z2VycyAgPGNyb2dlcnNAZ29vZ2xlLmNvbT4KKworICAgICAgICB3ZWJraXRBdWRpb0NvbnRleHQg
ZG9lcyBub3QgZG8gcHJvcGVyIHNhbml0eSBjaGVja2luZyBvbiBpdHMgYXJndW1lbnRzLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjQwNzYKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMg
c2luY2UgYXVkaW8gQVBJIGlzIG5vdCB5ZXQgaW1wbGVtZW50ZWQuCisKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0F1ZGlvQ29udGV4dEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0F1
ZGlvQ29udGV4dENvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU0F1ZGlvQ29udGV4dCk6CisgICAgICAg
IChXZWJDb3JlOjpKU0F1ZGlvQ29udGV4dDo6Y3JlYXRlQnVmZmVyKToKKyAgICAgICAgKiBiaW5k
aW5ncy92OC9jdXN0b20vVjhBdWRpb0NvbnRleHRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VjhBdWRpb0NvbnRleHQ6OmNvbnN0cnVjdG9yQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29y
ZTo6VjhBdWRpb0NvbnRleHQ6OmNyZWF0ZUJ1ZmZlckNhbGxiYWNrKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9hdWRpby9IUlRGRGF0YWJhc2VMb2FkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhSVEZE
YXRhYmFzZUxvYWRlcjo6ZGF0YWJhc2VTYW1wbGVSYXRlKToKKyAgICAgICAgKiB3ZWJhdWRpby9B
dWRpb0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0OjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0OjpjcmVhdGVPZmZsaW5lQ29udGV4dCk6
CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OmNyZWF0ZUJ1ZmZlcik6CisgICAgICAg
ICogd2ViYXVkaW8vQXVkaW9Db250ZXh0Lmg6CisKIDIwMTEtMDctMDggIEFkYW0gQmFydGggIDxh
YmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByOTA2
NjIuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvQ29udGV4dEN1c3Rv
bS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb0Nv
bnRleHRDdXN0b20uY3BwCShyZXZpc2lvbiA5MDY3MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQXVkaW9Db250ZXh0Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzQsMTEg
Kzc0LDI1IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNBdWRpb0NvbnQKICAgICAg
ICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDMpCiAgICAgICAgICAgICByZXR1cm4gdGhy
b3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsICJOb3QgZW5vdWdoIGFyZ3Vt
ZW50cyIpKTsKIAotICAgICAgICB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzID0gZXhlYy0+YXJn
dW1lbnQoMCkudG9JbnQzMihleGVjKTsKLSAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZGcmFtZXMg
PSBleGVjLT5hcmd1bWVudCgxKS50b0ludDMyKGV4ZWMpOworICAgICAgICBpbnQzMl90IG51bWJl
ck9mQ2hhbm5lbHMgPSBleGVjLT5hcmd1bWVudCgwKS50b0ludDMyKGV4ZWMpOworICAgICAgICBp
bnQzMl90IG51bWJlck9mRnJhbWVzID0gZXhlYy0+YXJndW1lbnQoMSkudG9JbnQzMihleGVjKTsK
ICAgICAgICAgZmxvYXQgc2FtcGxlUmF0ZSA9IGV4ZWMtPmFyZ3VtZW50KDIpLnRvRmxvYXQoZXhl
Yyk7Ci0KLSAgICAgICAgYXVkaW9Db250ZXh0ID0gQXVkaW9Db250ZXh0OjpjcmVhdGVPZmZsaW5l
Q29udGV4dChkb2N1bWVudCwgbnVtYmVyT2ZDaGFubmVscywgbnVtYmVyT2ZGcmFtZXMsIHNhbXBs
ZVJhdGUpOworICAgICAgICAKKyAgICAgICAgaWYgKG51bWJlck9mQ2hhbm5lbHMgPD0gMCB8fCBu
dW1iZXJPZkNoYW5uZWxzID4gMTApCisgICAgICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4
ZWMsIGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsICJJbnZhbGlkIG51bWJlciBvZiBjaGFubmVscyIp
KTsKKworICAgICAgICBpZiAobnVtYmVyT2ZGcmFtZXMgPD0gMCkKKyAgICAgICAgICAgIHJldHVy
biB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlU3ludGF4RXJyb3IoZXhlYywgIkludmFsaWQgbnVt
YmVyIG9mIGZyYW1lcyIpKTsKKworICAgICAgICBpZiAoc2FtcGxlUmF0ZSA8PSAwKQorICAgICAg
ICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVTeW50YXhFcnJvcihleGVjLCAi
SW52YWxpZCBzYW1wbGUgcmF0ZSIpKTsKKworICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsK
KyAgICAgICAgYXVkaW9Db250ZXh0ID0gQXVkaW9Db250ZXh0OjpjcmVhdGVPZmZsaW5lQ29udGV4
dChkb2N1bWVudCwgbnVtYmVyT2ZDaGFubmVscywgbnVtYmVyT2ZGcmFtZXMsIHNhbXBsZVJhdGUs
IGVjKTsKKyAgICAgICAgaWYgKGVjKSB7CisgICAgICAgICAgICBzZXRET01FeGNlcHRpb24oZXhl
YywgZWMpOworICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgICAgIH0KICAg
ICB9CiAKICAgICBpZiAoIWF1ZGlvQ29udGV4dC5nZXQoKSkKQEAgLTExNywxMCArMTMxLDE5IEBA
IEpTVmFsdWUgSlNBdWRpb0NvbnRleHQ6OmNyZWF0ZUJ1ZmZlcihFeGUKICAgICBpZiAoZXhlYy0+
YXJndW1lbnRDb3VudCgpIDwgMykKICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgY3Jl
YXRlU3ludGF4RXJyb3IoZXhlYywgIk5vdCBlbm91Z2ggYXJndW1lbnRzIikpOwogICAgIAotICAg
IHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMgPSBleGVjLT5hcmd1bWVudCgwKS50b0ludDMyKGV4
ZWMpOwotICAgIHVuc2lnbmVkIG51bWJlck9mRnJhbWVzID0gZXhlYy0+YXJndW1lbnQoMSkudG9J
bnQzMihleGVjKTsKKyAgICBpbnQzMl90IG51bWJlck9mQ2hhbm5lbHMgPSBleGVjLT5hcmd1bWVu
dCgwKS50b0ludDMyKGV4ZWMpOworICAgIGludDMyX3QgbnVtYmVyT2ZGcmFtZXMgPSBleGVjLT5h
cmd1bWVudCgxKS50b0ludDMyKGV4ZWMpOwogICAgIGZsb2F0IHNhbXBsZVJhdGUgPSBleGVjLT5h
cmd1bWVudCgyKS50b0Zsb2F0KGV4ZWMpOwogCisgICAgaWYgKG51bWJlck9mQ2hhbm5lbHMgPD0g
MCB8fCBudW1iZXJPZkNoYW5uZWxzID4gMTApCisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Io
ZXhlYywgY3JlYXRlU3ludGF4RXJyb3IoZXhlYywgIkludmFsaWQgbnVtYmVyIG9mIGNoYW5uZWxz
IikpOworCisgICAgaWYgKG51bWJlck9mRnJhbWVzIDw9IDApCisgICAgICAgIHJldHVybiB0aHJv
d1ZNRXJyb3IoZXhlYywgY3JlYXRlU3ludGF4RXJyb3IoZXhlYywgIkludmFsaWQgbnVtYmVyIG9m
IGZyYW1lcyIpKTsKKworICAgIGlmIChzYW1wbGVSYXRlIDw9IDApCisgICAgICAgIHJldHVybiB0
aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlU3ludGF4RXJyb3IoZXhlYywgIkludmFsaWQgc2FtcGxl
IHJhdGUiKSk7CisKICAgICBSZWZQdHI8QXVkaW9CdWZmZXI+IGF1ZGlvQnVmZmVyID0gYXVkaW9D
b250ZXh0LT5jcmVhdGVCdWZmZXIobnVtYmVyT2ZDaGFubmVscywgbnVtYmVyT2ZGcmFtZXMsIHNh
bXBsZVJhdGUpOwogICAgIGlmICghYXVkaW9CdWZmZXIuZ2V0KCkpCiAgICAgICAgIHJldHVybiB0
aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsICJFcnJvciBjcmVhdGluZyBB
dWRpb0J1ZmZlciIpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OEF1ZGlvQ29udGV4dEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4QXVkaW9Db250ZXh0Q3VzdG9tLmNwcAkocmV2aXNpb24gOTA2NzEp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhBdWRpb0NvbnRleHRDdXN0
b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw5IEBAIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBWOEF1ZGlvQ29udGV4dDo6Y28KIHsKICAgICBJTkNfU1RBVFMoIkRPTS5BdWRpb0NvbnRl
eHQuQ29udHJ1Y3RvciIpOwogCisgICAgaWYgKCFhcmdzLklzQ29uc3RydWN0Q2FsbCgpKQorICAg
ICAgICByZXR1cm4gdGhyb3dFcnJvcigiQXVkaW9Db250ZXh0IGNvbnN0cnVjdG9yIGNhbm5vdCBi
ZSBjYWxsZWQgYXMgYSBmdW5jdGlvbi4iKTsKKwogICAgIEZyYW1lKiBmcmFtZSA9IFY4UHJveHk6
OnJldHJpZXZlRnJhbWVGb3JDdXJyZW50Q29udGV4dCgpOwogICAgIGlmICghZnJhbWUpCiAgICAg
ICAgIHJldHVybiB0aHJvd0Vycm9yKCJBdWRpb0NvbnRleHQgY29uc3RydWN0b3IgYXNzb2NpYXRl
ZCBmcmFtZSBpcyB1bmF2YWlsYWJsZSIsIFY4UHJveHk6OlJlZmVyZW5jZUVycm9yKTsKQEAgLTY0
LDE3ICs2NywyMiBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhBdWRpb0NvbnRleHQ6OmNvCiAK
ICAgICAgICAgYm9vbCBvayA9IGZhbHNlOwogCi0gICAgICAgIHVuc2lnbmVkIG51bWJlck9mQ2hh
bm5lbHMgPSB0b0ludDMyKGFyZ3NbMF0sIG9rKTsKLSAgICAgICAgaWYgKCFvaykKKyAgICAgICAg
aW50MzJfdCBudW1iZXJPZkNoYW5uZWxzID0gdG9JbnQzMihhcmdzWzBdLCBvayk7CisgICAgICAg
IGlmICghb2sgfHwgbnVtYmVyT2ZDaGFubmVscyA8PSAwIHx8IG51bWJlck9mQ2hhbm5lbHMgPiAx
MCkKICAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJJbnZhbGlkIG51bWJlciBvZiBjaGFu
bmVscyIsIFY4UHJveHk6OlN5bnRheEVycm9yKTsKIAotICAgICAgICB1bnNpZ25lZCBudW1iZXJP
ZkZyYW1lcyA9IHRvSW50MzIoYXJnc1sxXSwgb2spOwotICAgICAgICBpZiAoIW9rKQorICAgICAg
ICBpbnQzMl90IG51bWJlck9mRnJhbWVzID0gdG9JbnQzMihhcmdzWzFdLCBvayk7CisgICAgICAg
IGlmICghb2sgfHwgbnVtYmVyT2ZGcmFtZXMgPD0gMCkKICAgICAgICAgICAgIHJldHVybiB0aHJv
d0Vycm9yKCJJbnZhbGlkIG51bWJlciBvZiBmcmFtZXMiLCBWOFByb3h5OjpTeW50YXhFcnJvcik7
CiAKICAgICAgICAgZmxvYXQgc2FtcGxlUmF0ZSA9IHRvRmxvYXQoYXJnc1syXSk7CisgICAgICAg
IGlmIChzYW1wbGVSYXRlIDw9IDApCisgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigiSW52
YWxpZCBzYW1wbGUgcmF0ZSIsIFY4UHJveHk6OlN5bnRheEVycm9yKTsKIAotICAgICAgICBhdWRp
b0NvbnRleHQgPSBBdWRpb0NvbnRleHQ6OmNyZWF0ZU9mZmxpbmVDb250ZXh0KGRvY3VtZW50LCBu
dW1iZXJPZkNoYW5uZWxzLCBudW1iZXJPZkZyYW1lcywgc2FtcGxlUmF0ZSk7CisgICAgICAgIEV4
Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgICAgICBhdWRpb0NvbnRleHQgPSBBdWRpb0NvbnRleHQ6
OmNyZWF0ZU9mZmxpbmVDb250ZXh0KGRvY3VtZW50LCBudW1iZXJPZkNoYW5uZWxzLCBudW1iZXJP
ZkZyYW1lcywgc2FtcGxlUmF0ZSwgZWMpOworICAgICAgICBpZiAoZWMpCisgICAgICAgICAgICBy
ZXR1cm4gdGhyb3dFcnJvcihlYyk7CiAgICAgfQogCiAgICAgaWYgKCFhdWRpb0NvbnRleHQuZ2V0
KCkpCkBAIC0xMjIsMTIgKzEzMCwxMiBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhBdWRpb0Nv
bnRleHQ6OmNyCiAKICAgICBib29sIG9rID0gZmFsc2U7CiAgICAgCi0gICAgdW5zaWduZWQgbnVt
YmVyT2ZDaGFubmVscyA9IHRvSW50MzIoYXJnc1swXSwgb2spOwotICAgIGlmICghb2spCisgICAg
aW50MzJfdCBudW1iZXJPZkNoYW5uZWxzID0gdG9JbnQzMihhcmdzWzBdLCBvayk7CisgICAgaWYg
KCFvayB8fCBudW1iZXJPZkNoYW5uZWxzIDw9IDAgfHwgbnVtYmVyT2ZDaGFubmVscyA+IDEwKQog
ICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigiSW52YWxpZCBudW1iZXIgb2YgY2hhbm5lbHMiLCBW
OFByb3h5OjpTeW50YXhFcnJvcik7CiAgICAgCi0gICAgdW5zaWduZWQgbnVtYmVyT2ZGcmFtZXMg
PSB0b0ludDMyKGFyZ3NbMV0sIG9rKTsKLSAgICBpZiAoIW9rKQorICAgIGludDMyX3QgbnVtYmVy
T2ZGcmFtZXMgPSB0b0ludDMyKGFyZ3NbMV0sIG9rKTsKKyAgICBpZiAoIW9rIHx8IG51bWJlck9m
RnJhbWVzIDw9IDApCiAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJJbnZhbGlkIG51bWJlciBv
ZiBmcmFtZXMiLCBWOFByb3h5OjpTeW50YXhFcnJvcik7CiAgICAgCiAgICAgZmxvYXQgc2FtcGxl
UmF0ZSA9IHRvRmxvYXQoYXJnc1syXSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9IUlRGRGF0YWJhc2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9IUlRGRGF0YWJhc2VMb2FkZXIuaAkocmV2aXNpb24gOTA2NzEpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRGF0YWJhc2VMb2FkZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNjAsNiArNjAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCB3YWl0Rm9yTG9hZGVy
VGhyZWFkQ29tcGxldGlvbigpOwogICAgIAogICAgIEhSVEZEYXRhYmFzZSogZGF0YWJhc2UoKSB7
IHJldHVybiBtX2hydGZEYXRhYmFzZS5nZXQoKTsgfQorCisgICAgZG91YmxlIGRhdGFiYXNlU2Ft
cGxlUmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YWJhc2VTYW1wbGVSYXRlOyB9CiAgICAgCiAg
ICAgLy8gQ2FsbGVkIGluIGFzeW5jaHJvbm91cyBsb2FkaW5nIHRocmVhZC4KICAgICB2b2lkIGxv
YWQoKTsKQEAgLTc3LDggKzc5LDYgQEAgcHJpdmF0ZToKICAgICAvLyBUaGlzIG11c3QgYmUgY2Fs
bGVkIGZyb20gdGhlIG1haW4gdGhyZWFkLgogICAgIHZvaWQgbG9hZEFzeW5jaHJvbm91c2x5KCk7
CiAKLSAgICBkb3VibGUgZGF0YWJhc2VTYW1wbGVSYXRlKCkgY29uc3QgeyByZXR1cm4gbV9kYXRh
YmFzZVNhbXBsZVJhdGU7IH0KLQogICAgIHN0YXRpYyBIUlRGRGF0YWJhc2VMb2FkZXIqIHNfbG9h
ZGVyOyAvLyBzaW5nbGV0b24KICAgICBPd25QdHI8SFJURkRhdGFiYXNlPiBtX2hydGZEYXRhYmFz
ZTsKICAgICBUaHJlYWRJZGVudGlmaWVyIG1fZGF0YWJhc2VMb2FkZXJUaHJlYWQ7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAJKHJldmlzaW9uIDkwNjcxKQor
KysgU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNzIsMTQgKzcyLDM0IEBAIGNvbnN0IGludCBVbmRlZmluZWRUaHJlYWRJZGVudGlmaWVy
ID0gMHgKIGNvbnN0IHVuc2lnbmVkIE1heE5vZGVzVG9EZWxldGVQZXJRdWFudHVtID0gMTA7CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICAKK25hbWVzcGFjZSB7CisgICAgCitib29sIGlzU2Ft
cGxlUmF0ZVJhbmdlR29vZChkb3VibGUgc2FtcGxlUmF0ZSkKK3sKKyAgICByZXR1cm4gc2FtcGxl
UmF0ZSA+PSAyMjA1MCAmJiBzYW1wbGVSYXRlIDw9IDk2MDAwOworfQorCit9CiAKIFBhc3NSZWZQ
dHI8QXVkaW9Db250ZXh0PiBBdWRpb0NvbnRleHQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQp
CiB7CisgICAgQVNTRVJUKGRvY3VtZW50KTsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEF1ZGlv
Q29udGV4dChkb2N1bWVudCkpOwogfQogCi1QYXNzUmVmUHRyPEF1ZGlvQ29udGV4dD4gQXVkaW9D
b250ZXh0OjpjcmVhdGVPZmZsaW5lQ29udGV4dChEb2N1bWVudCogZG9jdW1lbnQsIHVuc2lnbmVk
IG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdCBudW1iZXJPZkZyYW1lcywgZG91YmxlIHNhbXBsZVJh
dGUpCitQYXNzUmVmUHRyPEF1ZGlvQ29udGV4dD4gQXVkaW9Db250ZXh0OjpjcmVhdGVPZmZsaW5l
Q29udGV4dChEb2N1bWVudCogZG9jdW1lbnQsIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIHNp
emVfdCBudW1iZXJPZkZyYW1lcywgZG91YmxlIHNhbXBsZVJhdGUsIEV4Y2VwdGlvbkNvZGUmIGVj
KQogeworICAgIEFTU0VSVChkb2N1bWVudCk7CisKKyAgICAvLyBGSVhNRTogb2ZmbGluZSBjb250
ZXh0cyBoYXZlIGxpbWl0YXRpb25zIG9uIHN1cHBvcnRlZCBzYW1wbGUtcmF0ZXMuCisgICAgLy8g
Q3VycmVudGx5IGFsbCBBdWRpb0NvbnRleHRzIG11c3QgaGF2ZSB0aGUgc2FtZSBzYW1wbGUtcmF0
ZS4KKyAgICBIUlRGRGF0YWJhc2VMb2FkZXIqIGxvYWRlciA9IEhSVEZEYXRhYmFzZUxvYWRlcjo6
bG9hZGVyKCk7CisgICAgaWYgKG51bWJlck9mQ2hhbm5lbHMgPiAxMCB8fCAhaXNTYW1wbGVSYXRl
UmFuZ2VHb29kKHNhbXBsZVJhdGUpIHx8IGxvYWRlciAmJiBsb2FkZXItPmRhdGFiYXNlU2FtcGxl
UmF0ZSgpICE9IHNhbXBsZVJhdGUpIHsKKyAgICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAg
ICByZXR1cm4gMDsKKyAgICB9CisKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEF1ZGlvQ29udGV4
dChkb2N1bWVudCwgbnVtYmVyT2ZDaGFubmVscywgbnVtYmVyT2ZGcmFtZXMsIHNhbXBsZVJhdGUp
KTsKIH0KIApAQCAtMjM2LDYgKzI1Niw5IEBAIHZvaWQgQXVkaW9Db250ZXh0OjpyZWZCdWZmZXIo
UGFzc1JlZlB0cjwKIAogUGFzc1JlZlB0cjxBdWRpb0J1ZmZlcj4gQXVkaW9Db250ZXh0OjpjcmVh
dGVCdWZmZXIodW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywgc2l6ZV90IG51bWJlck9mRnJhbWVz
LCBkb3VibGUgc2FtcGxlUmF0ZSkKIHsKKyAgICBpZiAoIWlzU2FtcGxlUmF0ZVJhbmdlR29vZChz
YW1wbGVSYXRlKSB8fCBudW1iZXJPZkNoYW5uZWxzID4gMTAgfHwgIW51bWJlck9mRnJhbWVzKQor
ICAgICAgICByZXR1cm4gMDsKKyAgICAKICAgICByZXR1cm4gQXVkaW9CdWZmZXI6OmNyZWF0ZShu
dW1iZXJPZkNoYW5uZWxzLCBudW1iZXJPZkZyYW1lcywgc2FtcGxlUmF0ZSk7CiB9CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oCShyZXZpc2lvbiA5MDY3MSkKKysr
IFNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBA
IC03MSw3ICs3MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxBdWRpb0NvbnRl
eHQ+IGNyZWF0ZShEb2N1bWVudCopOwogCiAgICAgLy8gQ3JlYXRlIGFuIEF1ZGlvQ29udGV4dCBm
b3Igb2ZmbGluZSAobm9uLXJlYWx0aW1lKSByZW5kZXJpbmcuCi0gICAgc3RhdGljIFBhc3NSZWZQ
dHI8QXVkaW9Db250ZXh0PiBjcmVhdGVPZmZsaW5lQ29udGV4dChEb2N1bWVudCosIHVuc2lnbmVk
IG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdCBudW1iZXJPZkZyYW1lcywgZG91YmxlIHNhbXBsZVJh
dGUpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPEF1ZGlvQ29udGV4dD4gY3JlYXRlT2ZmbGluZUNv
bnRleHQoRG9jdW1lbnQqLCB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzLCBzaXplX3QgbnVtYmVy
T2ZGcmFtZXMsIGRvdWJsZSBzYW1wbGVSYXRlLCBFeGNlcHRpb25Db2RlJik7CiAKICAgICB2aXJ0
dWFsIH5BdWRpb0NvbnRleHQoKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>100200</attachid>
            <date>2011-07-08 19:07:16 -0700</date>
            <delta_ts>2011-07-12 11:36:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-64076-20110708190715.patch</filename>
            <type>text/plain</type>
            <size>10000</size>
            <attacher name="Chris Rogers">crogers</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkwNjc0KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTEtMDctMDggIENocmlzIFJv
Z2VycyAgPGNyb2dlcnNAZ29vZ2xlLmNvbT4KKworICAgICAgICB3ZWJraXRBdWRpb0NvbnRleHQg
ZG9lcyBub3QgZG8gcHJvcGVyIHNhbml0eSBjaGVja2luZyBvbiBpdHMgYXJndW1lbnRzLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjQwNzYKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMg
c2luY2UgYXVkaW8gQVBJIGlzIG5vdCB5ZXQgaW1wbGVtZW50ZWQuCisKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0F1ZGlvQ29udGV4dEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0F1
ZGlvQ29udGV4dENvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU0F1ZGlvQ29udGV4dCk6CisgICAgICAg
IChXZWJDb3JlOjpKU0F1ZGlvQ29udGV4dDo6Y3JlYXRlQnVmZmVyKToKKyAgICAgICAgKiBiaW5k
aW5ncy92OC9jdXN0b20vVjhBdWRpb0NvbnRleHRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VjhBdWRpb0NvbnRleHQ6OmNvbnN0cnVjdG9yQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29y
ZTo6VjhBdWRpb0NvbnRleHQ6OmNyZWF0ZUJ1ZmZlckNhbGxiYWNrKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9hdWRpby9IUlRGRGF0YWJhc2VMb2FkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhSVEZE
YXRhYmFzZUxvYWRlcjo6ZGF0YWJhc2VTYW1wbGVSYXRlKToKKyAgICAgICAgKiB3ZWJhdWRpby9B
dWRpb0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0OjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0OjpjcmVhdGVPZmZsaW5lQ29udGV4dCk6
CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OmNyZWF0ZUJ1ZmZlcik6CisgICAgICAg
ICogd2ViYXVkaW8vQXVkaW9Db250ZXh0Lmg6CisKIDIwMTEtMDctMDggIEFkYW0gQmFydGggIDxh
YmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByOTA2
NjIuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvQ29udGV4dEN1c3Rv
bS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb0Nv
bnRleHRDdXN0b20uY3BwCShyZXZpc2lvbiA5MDY3MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQXVkaW9Db250ZXh0Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzQsMTEg
Kzc0LDI1IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNBdWRpb0NvbnQKICAgICAg
ICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDMpCiAgICAgICAgICAgICByZXR1cm4gdGhy
b3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsICJOb3QgZW5vdWdoIGFyZ3Vt
ZW50cyIpKTsKIAotICAgICAgICB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzID0gZXhlYy0+YXJn
dW1lbnQoMCkudG9JbnQzMihleGVjKTsKLSAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZGcmFtZXMg
PSBleGVjLT5hcmd1bWVudCgxKS50b0ludDMyKGV4ZWMpOworICAgICAgICBpbnQzMl90IG51bWJl
ck9mQ2hhbm5lbHMgPSBleGVjLT5hcmd1bWVudCgwKS50b0ludDMyKGV4ZWMpOworICAgICAgICBp
bnQzMl90IG51bWJlck9mRnJhbWVzID0gZXhlYy0+YXJndW1lbnQoMSkudG9JbnQzMihleGVjKTsK
ICAgICAgICAgZmxvYXQgc2FtcGxlUmF0ZSA9IGV4ZWMtPmFyZ3VtZW50KDIpLnRvRmxvYXQoZXhl
Yyk7Ci0KLSAgICAgICAgYXVkaW9Db250ZXh0ID0gQXVkaW9Db250ZXh0OjpjcmVhdGVPZmZsaW5l
Q29udGV4dChkb2N1bWVudCwgbnVtYmVyT2ZDaGFubmVscywgbnVtYmVyT2ZGcmFtZXMsIHNhbXBs
ZVJhdGUpOworICAgICAgICAKKyAgICAgICAgaWYgKG51bWJlck9mQ2hhbm5lbHMgPD0gMCB8fCBu
dW1iZXJPZkNoYW5uZWxzID4gMTApCisgICAgICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4
ZWMsIGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsICJJbnZhbGlkIG51bWJlciBvZiBjaGFubmVscyIp
KTsKKworICAgICAgICBpZiAobnVtYmVyT2ZGcmFtZXMgPD0gMCkKKyAgICAgICAgICAgIHJldHVy
biB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlU3ludGF4RXJyb3IoZXhlYywgIkludmFsaWQgbnVt
YmVyIG9mIGZyYW1lcyIpKTsKKworICAgICAgICBpZiAoc2FtcGxlUmF0ZSA8PSAwKQorICAgICAg
ICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVTeW50YXhFcnJvcihleGVjLCAi
SW52YWxpZCBzYW1wbGUgcmF0ZSIpKTsKKworICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsK
KyAgICAgICAgYXVkaW9Db250ZXh0ID0gQXVkaW9Db250ZXh0OjpjcmVhdGVPZmZsaW5lQ29udGV4
dChkb2N1bWVudCwgbnVtYmVyT2ZDaGFubmVscywgbnVtYmVyT2ZGcmFtZXMsIHNhbXBsZVJhdGUs
IGVjKTsKKyAgICAgICAgaWYgKGVjKSB7CisgICAgICAgICAgICBzZXRET01FeGNlcHRpb24oZXhl
YywgZWMpOworICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgICAgIH0KICAg
ICB9CiAKICAgICBpZiAoIWF1ZGlvQ29udGV4dC5nZXQoKSkKQEAgLTExNywxMCArMTMxLDE5IEBA
IEpTVmFsdWUgSlNBdWRpb0NvbnRleHQ6OmNyZWF0ZUJ1ZmZlcihFeGUKICAgICBpZiAoZXhlYy0+
YXJndW1lbnRDb3VudCgpIDwgMykKICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgY3Jl
YXRlU3ludGF4RXJyb3IoZXhlYywgIk5vdCBlbm91Z2ggYXJndW1lbnRzIikpOwogICAgIAotICAg
IHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMgPSBleGVjLT5hcmd1bWVudCgwKS50b0ludDMyKGV4
ZWMpOwotICAgIHVuc2lnbmVkIG51bWJlck9mRnJhbWVzID0gZXhlYy0+YXJndW1lbnQoMSkudG9J
bnQzMihleGVjKTsKKyAgICBpbnQzMl90IG51bWJlck9mQ2hhbm5lbHMgPSBleGVjLT5hcmd1bWVu
dCgwKS50b0ludDMyKGV4ZWMpOworICAgIGludDMyX3QgbnVtYmVyT2ZGcmFtZXMgPSBleGVjLT5h
cmd1bWVudCgxKS50b0ludDMyKGV4ZWMpOwogICAgIGZsb2F0IHNhbXBsZVJhdGUgPSBleGVjLT5h
cmd1bWVudCgyKS50b0Zsb2F0KGV4ZWMpOwogCisgICAgaWYgKG51bWJlck9mQ2hhbm5lbHMgPD0g
MCB8fCBudW1iZXJPZkNoYW5uZWxzID4gMTApCisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Io
ZXhlYywgY3JlYXRlU3ludGF4RXJyb3IoZXhlYywgIkludmFsaWQgbnVtYmVyIG9mIGNoYW5uZWxz
IikpOworCisgICAgaWYgKG51bWJlck9mRnJhbWVzIDw9IDApCisgICAgICAgIHJldHVybiB0aHJv
d1ZNRXJyb3IoZXhlYywgY3JlYXRlU3ludGF4RXJyb3IoZXhlYywgIkludmFsaWQgbnVtYmVyIG9m
IGZyYW1lcyIpKTsKKworICAgIGlmIChzYW1wbGVSYXRlIDw9IDApCisgICAgICAgIHJldHVybiB0
aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlU3ludGF4RXJyb3IoZXhlYywgIkludmFsaWQgc2FtcGxl
IHJhdGUiKSk7CisKICAgICBSZWZQdHI8QXVkaW9CdWZmZXI+IGF1ZGlvQnVmZmVyID0gYXVkaW9D
b250ZXh0LT5jcmVhdGVCdWZmZXIobnVtYmVyT2ZDaGFubmVscywgbnVtYmVyT2ZGcmFtZXMsIHNh
bXBsZVJhdGUpOwogICAgIGlmICghYXVkaW9CdWZmZXIuZ2V0KCkpCiAgICAgICAgIHJldHVybiB0
aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsICJFcnJvciBjcmVhdGluZyBB
dWRpb0J1ZmZlciIpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OEF1ZGlvQ29udGV4dEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4QXVkaW9Db250ZXh0Q3VzdG9tLmNwcAkocmV2aXNpb24gOTA2NzEp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhBdWRpb0NvbnRleHRDdXN0
b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw5IEBAIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBWOEF1ZGlvQ29udGV4dDo6Y28KIHsKICAgICBJTkNfU1RBVFMoIkRPTS5BdWRpb0NvbnRl
eHQuQ29udHJ1Y3RvciIpOwogCisgICAgaWYgKCFhcmdzLklzQ29uc3RydWN0Q2FsbCgpKQorICAg
ICAgICByZXR1cm4gdGhyb3dFcnJvcigiQXVkaW9Db250ZXh0IGNvbnN0cnVjdG9yIGNhbm5vdCBi
ZSBjYWxsZWQgYXMgYSBmdW5jdGlvbi4iKTsKKwogICAgIEZyYW1lKiBmcmFtZSA9IFY4UHJveHk6
OnJldHJpZXZlRnJhbWVGb3JDdXJyZW50Q29udGV4dCgpOwogICAgIGlmICghZnJhbWUpCiAgICAg
ICAgIHJldHVybiB0aHJvd0Vycm9yKCJBdWRpb0NvbnRleHQgY29uc3RydWN0b3IgYXNzb2NpYXRl
ZCBmcmFtZSBpcyB1bmF2YWlsYWJsZSIsIFY4UHJveHk6OlJlZmVyZW5jZUVycm9yKTsKQEAgLTY0
LDE3ICs2NywyMiBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhBdWRpb0NvbnRleHQ6OmNvCiAK
ICAgICAgICAgYm9vbCBvayA9IGZhbHNlOwogCi0gICAgICAgIHVuc2lnbmVkIG51bWJlck9mQ2hh
bm5lbHMgPSB0b0ludDMyKGFyZ3NbMF0sIG9rKTsKLSAgICAgICAgaWYgKCFvaykKKyAgICAgICAg
aW50MzJfdCBudW1iZXJPZkNoYW5uZWxzID0gdG9JbnQzMihhcmdzWzBdLCBvayk7CisgICAgICAg
IGlmICghb2sgfHwgbnVtYmVyT2ZDaGFubmVscyA8PSAwIHx8IG51bWJlck9mQ2hhbm5lbHMgPiAx
MCkKICAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJJbnZhbGlkIG51bWJlciBvZiBjaGFu
bmVscyIsIFY4UHJveHk6OlN5bnRheEVycm9yKTsKIAotICAgICAgICB1bnNpZ25lZCBudW1iZXJP
ZkZyYW1lcyA9IHRvSW50MzIoYXJnc1sxXSwgb2spOwotICAgICAgICBpZiAoIW9rKQorICAgICAg
ICBpbnQzMl90IG51bWJlck9mRnJhbWVzID0gdG9JbnQzMihhcmdzWzFdLCBvayk7CisgICAgICAg
IGlmICghb2sgfHwgbnVtYmVyT2ZGcmFtZXMgPD0gMCkKICAgICAgICAgICAgIHJldHVybiB0aHJv
d0Vycm9yKCJJbnZhbGlkIG51bWJlciBvZiBmcmFtZXMiLCBWOFByb3h5OjpTeW50YXhFcnJvcik7
CiAKICAgICAgICAgZmxvYXQgc2FtcGxlUmF0ZSA9IHRvRmxvYXQoYXJnc1syXSk7CisgICAgICAg
IGlmIChzYW1wbGVSYXRlIDw9IDApCisgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigiSW52
YWxpZCBzYW1wbGUgcmF0ZSIsIFY4UHJveHk6OlN5bnRheEVycm9yKTsKIAotICAgICAgICBhdWRp
b0NvbnRleHQgPSBBdWRpb0NvbnRleHQ6OmNyZWF0ZU9mZmxpbmVDb250ZXh0KGRvY3VtZW50LCBu
dW1iZXJPZkNoYW5uZWxzLCBudW1iZXJPZkZyYW1lcywgc2FtcGxlUmF0ZSk7CisgICAgICAgIEV4
Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgICAgICBhdWRpb0NvbnRleHQgPSBBdWRpb0NvbnRleHQ6
OmNyZWF0ZU9mZmxpbmVDb250ZXh0KGRvY3VtZW50LCBudW1iZXJPZkNoYW5uZWxzLCBudW1iZXJP
ZkZyYW1lcywgc2FtcGxlUmF0ZSwgZWMpOworICAgICAgICBpZiAoZWMpCisgICAgICAgICAgICBy
ZXR1cm4gdGhyb3dFcnJvcihlYyk7CiAgICAgfQogCiAgICAgaWYgKCFhdWRpb0NvbnRleHQuZ2V0
KCkpCkBAIC0xMjIsMTIgKzEzMCwxMiBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhBdWRpb0Nv
bnRleHQ6OmNyCiAKICAgICBib29sIG9rID0gZmFsc2U7CiAgICAgCi0gICAgdW5zaWduZWQgbnVt
YmVyT2ZDaGFubmVscyA9IHRvSW50MzIoYXJnc1swXSwgb2spOwotICAgIGlmICghb2spCisgICAg
aW50MzJfdCBudW1iZXJPZkNoYW5uZWxzID0gdG9JbnQzMihhcmdzWzBdLCBvayk7CisgICAgaWYg
KCFvayB8fCBudW1iZXJPZkNoYW5uZWxzIDw9IDAgfHwgbnVtYmVyT2ZDaGFubmVscyA+IDEwKQog
ICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigiSW52YWxpZCBudW1iZXIgb2YgY2hhbm5lbHMiLCBW
OFByb3h5OjpTeW50YXhFcnJvcik7CiAgICAgCi0gICAgdW5zaWduZWQgbnVtYmVyT2ZGcmFtZXMg
PSB0b0ludDMyKGFyZ3NbMV0sIG9rKTsKLSAgICBpZiAoIW9rKQorICAgIGludDMyX3QgbnVtYmVy
T2ZGcmFtZXMgPSB0b0ludDMyKGFyZ3NbMV0sIG9rKTsKKyAgICBpZiAoIW9rIHx8IG51bWJlck9m
RnJhbWVzIDw9IDApCiAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJJbnZhbGlkIG51bWJlciBv
ZiBmcmFtZXMiLCBWOFByb3h5OjpTeW50YXhFcnJvcik7CiAgICAgCiAgICAgZmxvYXQgc2FtcGxl
UmF0ZSA9IHRvRmxvYXQoYXJnc1syXSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9IUlRGRGF0YWJhc2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9IUlRGRGF0YWJhc2VMb2FkZXIuaAkocmV2aXNpb24gOTA2NzEpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRGF0YWJhc2VMb2FkZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNjAsNiArNjAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCB3YWl0Rm9yTG9hZGVy
VGhyZWFkQ29tcGxldGlvbigpOwogICAgIAogICAgIEhSVEZEYXRhYmFzZSogZGF0YWJhc2UoKSB7
IHJldHVybiBtX2hydGZEYXRhYmFzZS5nZXQoKTsgfQorCisgICAgZG91YmxlIGRhdGFiYXNlU2Ft
cGxlUmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YWJhc2VTYW1wbGVSYXRlOyB9CiAgICAgCiAg
ICAgLy8gQ2FsbGVkIGluIGFzeW5jaHJvbm91cyBsb2FkaW5nIHRocmVhZC4KICAgICB2b2lkIGxv
YWQoKTsKQEAgLTc3LDggKzc5LDYgQEAgcHJpdmF0ZToKICAgICAvLyBUaGlzIG11c3QgYmUgY2Fs
bGVkIGZyb20gdGhlIG1haW4gdGhyZWFkLgogICAgIHZvaWQgbG9hZEFzeW5jaHJvbm91c2x5KCk7
CiAKLSAgICBkb3VibGUgZGF0YWJhc2VTYW1wbGVSYXRlKCkgY29uc3QgeyByZXR1cm4gbV9kYXRh
YmFzZVNhbXBsZVJhdGU7IH0KLQogICAgIHN0YXRpYyBIUlRGRGF0YWJhc2VMb2FkZXIqIHNfbG9h
ZGVyOyAvLyBzaW5nbGV0b24KICAgICBPd25QdHI8SFJURkRhdGFiYXNlPiBtX2hydGZEYXRhYmFz
ZTsKICAgICBUaHJlYWRJZGVudGlmaWVyIG1fZGF0YWJhc2VMb2FkZXJUaHJlYWQ7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAJKHJldmlzaW9uIDkwNjcxKQor
KysgU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNzIsMTQgKzcyLDM0IEBAIGNvbnN0IGludCBVbmRlZmluZWRUaHJlYWRJZGVudGlmaWVy
ID0gMHgKIGNvbnN0IHVuc2lnbmVkIE1heE5vZGVzVG9EZWxldGVQZXJRdWFudHVtID0gMTA7CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICAKK25hbWVzcGFjZSB7CisgICAgCitib29sIGlzU2Ft
cGxlUmF0ZVJhbmdlR29vZChkb3VibGUgc2FtcGxlUmF0ZSkKK3sKKyAgICByZXR1cm4gc2FtcGxl
UmF0ZSA+PSAyMjA1MCAmJiBzYW1wbGVSYXRlIDw9IDk2MDAwOworfQorCit9CiAKIFBhc3NSZWZQ
dHI8QXVkaW9Db250ZXh0PiBBdWRpb0NvbnRleHQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQp
CiB7CisgICAgQVNTRVJUKGRvY3VtZW50KTsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEF1ZGlv
Q29udGV4dChkb2N1bWVudCkpOwogfQogCi1QYXNzUmVmUHRyPEF1ZGlvQ29udGV4dD4gQXVkaW9D
b250ZXh0OjpjcmVhdGVPZmZsaW5lQ29udGV4dChEb2N1bWVudCogZG9jdW1lbnQsIHVuc2lnbmVk
IG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdCBudW1iZXJPZkZyYW1lcywgZG91YmxlIHNhbXBsZVJh
dGUpCitQYXNzUmVmUHRyPEF1ZGlvQ29udGV4dD4gQXVkaW9Db250ZXh0OjpjcmVhdGVPZmZsaW5l
Q29udGV4dChEb2N1bWVudCogZG9jdW1lbnQsIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIHNp
emVfdCBudW1iZXJPZkZyYW1lcywgZG91YmxlIHNhbXBsZVJhdGUsIEV4Y2VwdGlvbkNvZGUmIGVj
KQogeworICAgIEFTU0VSVChkb2N1bWVudCk7CisKKyAgICAvLyBGSVhNRTogb2ZmbGluZSBjb250
ZXh0cyBoYXZlIGxpbWl0YXRpb25zIG9uIHN1cHBvcnRlZCBzYW1wbGUtcmF0ZXMuCisgICAgLy8g
Q3VycmVudGx5IGFsbCBBdWRpb0NvbnRleHRzIG11c3QgaGF2ZSB0aGUgc2FtZSBzYW1wbGUtcmF0
ZS4KKyAgICBIUlRGRGF0YWJhc2VMb2FkZXIqIGxvYWRlciA9IEhSVEZEYXRhYmFzZUxvYWRlcjo6
bG9hZGVyKCk7CisgICAgaWYgKG51bWJlck9mQ2hhbm5lbHMgPiAxMCB8fCAhaXNTYW1wbGVSYXRl
UmFuZ2VHb29kKHNhbXBsZVJhdGUpIHx8IChsb2FkZXIgJiYgbG9hZGVyLT5kYXRhYmFzZVNhbXBs
ZVJhdGUoKSAhPSBzYW1wbGVSYXRlKSkgeworICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CisgICAg
ICAgIHJldHVybiAwOworICAgIH0KKwogICAgIHJldHVybiBhZG9wdFJlZihuZXcgQXVkaW9Db250
ZXh0KGRvY3VtZW50LCBudW1iZXJPZkNoYW5uZWxzLCBudW1iZXJPZkZyYW1lcywgc2FtcGxlUmF0
ZSkpOwogfQogCkBAIC0yMzYsNiArMjU2LDkgQEAgdm9pZCBBdWRpb0NvbnRleHQ6OnJlZkJ1ZmZl
cihQYXNzUmVmUHRyPAogCiBQYXNzUmVmUHRyPEF1ZGlvQnVmZmVyPiBBdWRpb0NvbnRleHQ6OmNy
ZWF0ZUJ1ZmZlcih1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzLCBzaXplX3QgbnVtYmVyT2ZGcmFt
ZXMsIGRvdWJsZSBzYW1wbGVSYXRlKQogeworICAgIGlmICghaXNTYW1wbGVSYXRlUmFuZ2VHb29k
KHNhbXBsZVJhdGUpIHx8IG51bWJlck9mQ2hhbm5lbHMgPiAxMCB8fCAhbnVtYmVyT2ZGcmFtZXMp
CisgICAgICAgIHJldHVybiAwOworICAgIAogICAgIHJldHVybiBBdWRpb0J1ZmZlcjo6Y3JlYXRl
KG51bWJlck9mQ2hhbm5lbHMsIG51bWJlck9mRnJhbWVzLCBzYW1wbGVSYXRlKTsKIH0KIApJbmRl
eDogU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmgJKHJldmlzaW9uIDkwNjcxKQor
KysgU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmgJKHdvcmtpbmcgY29weSkK
QEAgLTcxLDcgKzcxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEF1ZGlvQ29u
dGV4dD4gY3JlYXRlKERvY3VtZW50Kik7CiAKICAgICAvLyBDcmVhdGUgYW4gQXVkaW9Db250ZXh0
IGZvciBvZmZsaW5lIChub24tcmVhbHRpbWUpIHJlbmRlcmluZy4KLSAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxBdWRpb0NvbnRleHQ+IGNyZWF0ZU9mZmxpbmVDb250ZXh0KERvY3VtZW50KiwgdW5zaWdu
ZWQgbnVtYmVyT2ZDaGFubmVscywgc2l6ZV90IG51bWJlck9mRnJhbWVzLCBkb3VibGUgc2FtcGxl
UmF0ZSk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8QXVkaW9Db250ZXh0PiBjcmVhdGVPZmZsaW5l
Q29udGV4dChEb2N1bWVudCosIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdCBudW1i
ZXJPZkZyYW1lcywgZG91YmxlIHNhbXBsZVJhdGUsIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIHZp
cnR1YWwgfkF1ZGlvQ29udGV4dCgpOwogCg==
</data>
<flag name="review"
          id="94851"
          type_id="1"
          status="+"
          setter="kbr"
    />
          </attachment>
      

    </bug>

</bugzilla>