<?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>56980</bug_id>
          
          <creation_ts>2011-03-23 17:44:01 -0700</creation_ts>
          <short_desc>web audio: Properly sample-rate convert audio assets in chromium port</short_desc>
          <delta_ts>2011-03-24 19:13:57 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Chris Rogers">crogers</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>kbr</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>372569</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2011-03-23 17:44:01 -0700</bug_when>
    <thetext>web audio: Properly sample-rate convert audio assets in chromium port</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>372577</commentid>
    <comment_count>1</comment_count>
      <attachid>86727</attachid>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2011-03-23 17:54:59 -0700</bug_when>
    <thetext>Created attachment 86727
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>372589</commentid>
    <comment_count>2</comment_count>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2011-03-23 18:12:19 -0700</bug_when>
    <thetext>In looking over this again, I see that it would be more efficient to mix-to-mono first, before sample-rate converting.  I&apos;ll upload a new patch changing that part, but the other parts can still be reviewed...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>372593</commentid>
    <comment_count>3</comment_count>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2011-03-23 18:20:46 -0700</bug_when>
    <thetext>I also need to conditionally compile AudioBus::createBySampleRateConverting for chromium-only, or provide an implementation for the mac-port as well.

It&apos;s not actually needed for the mac port, so will probably conditionally compile.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>372628</commentid>
    <comment_count>4</comment_count>
      <attachid>86727</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-03-23 19:43:22 -0700</bug_when>
    <thetext>Comment on attachment 86727
Patch

Looks fine to me. Why don&apos;t you upload the final version of the patch and I&apos;ll r+ that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>373085</commentid>
    <comment_count>5</comment_count>
      <attachid>86835</attachid>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2011-03-24 14:13:14 -0700</bug_when>
    <thetext>Created attachment 86835
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>373088</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2011-03-24 14:15:06 -0700</bug_when>
    <thetext>AudioBus::createBySampleRateConverting() is now not compiled in for the mac port, since it&apos;s not needed there.

I added #if ENABLE(WEB_AUDIO)
to SincResampler which was missing it before.

For efficiency, the resampling now first mixes down to mono (if necessary)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>373167</commentid>
    <comment_count>7</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-03-24 16:15:34 -0700</bug_when>
    <thetext>Looks good. r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>373172</commentid>
    <comment_count>8</comment_count>
      <attachid>86853</attachid>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2011-03-24 16:19:08 -0700</bug_when>
    <thetext>Created attachment 86853
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>373173</commentid>
    <comment_count>9</comment_count>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2011-03-24 16:20:54 -0700</bug_when>
    <thetext>Sorry, Ken I just uploaded another patch with a very minor change to conditionally include:


#if !PLATFORM(MAC)
#include &quot;SincResampler.h&quot;
#endif</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>373198</commentid>
    <comment_count>10</comment_count>
      <attachid>86853</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-03-24 16:50:18 -0700</bug_when>
    <thetext>Comment on attachment 86853
Patch

OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>373268</commentid>
    <comment_count>11</comment_count>
      <attachid>86853</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-03-24 19:13:52 -0700</bug_when>
    <thetext>Comment on attachment 86853
Patch

Clearing flags on attachment: 86853

Committed r81931: &lt;http://trac.webkit.org/changeset/81931&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>373269</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-03-24 19:13:57 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>86727</attachid>
            <date>2011-03-23 17:54:59 -0700</date>
            <delta_ts>2011-03-24 14:13:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-56980-20110323175457.patch</filename>
            <type>text/plain</type>
            <size>9722</size>
            <attacher name="Chris Rogers">crogers</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgxODMwKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTEtMDMtMjMgIENocmlzIFJv
Z2VycyAgPGNyb2dlcnNAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICB3ZWIgYXVkaW86IFByb3Blcmx5IHNhbXBsZS1yYXRlIGNvbnZl
cnQgYXVkaW8gYXNzZXRzIGluIGNocm9taXVtIHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2OTgwCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIHNp
bmNlIGF1ZGlvIEFQSSBpcyBub3QgeWV0IGltcGxlbWVudGVkLgorCisgICAgICAgICogV2ViQ29y
ZS5neXBpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0F1ZGlvQnVzLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvQnVzOjpjcmVhdGVCeVNhbXBsZVJhdGVDb252ZXJ0aW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvQnVzOjpjcmVhdGVCeU1peGluZ1RvTW9ubyk6CisgICAgICAgICog
cGxhdGZvcm0vYXVkaW8vQXVkaW9CdXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9IUlRG
S2VybmVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RBdmVyYWdlR3JvdXBEZWxheSk6
CisgICAgICAgIChXZWJDb3JlOjpIUlRGS2VybmVsOjpIUlRGS2VybmVsKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9hdWRpby9jaHJvbWl1bS9BdWRpb0J1c0Nocm9taXVtLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkF1ZGlvQnVzOjpsb2FkUGxhdGZvcm1SZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3Jl
OjpjcmVhdGVCdXNGcm9tSW5NZW1vcnlBdWRpb0ZpbGUpOgorCiAyMDExLTAzLTIzICBCcmFkeSBF
aWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBBdHRlbXB0IHRvIGZpeCB0aGUg
YnVpbGQgZm9yIHBsYXRmb3JtcyB0aGF0IGhhdmUgdGhlIGljb24gZGF0YWJhc2UgCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpCShyZXZpc2lvbiA4MTgzMCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaQkod29ya2luZyBjb3B5KQpAQCAtMzYxNSw2ICszNjE1LDggQEAKICAgICAgICAgICAgICdw
bGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXJTdGFnZS5oJywKICAgICAgICAgICAgICdwbGF0
Zm9ybS9hdWRpby9SZXZlcmJJbnB1dEJ1ZmZlci5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3Jt
L2F1ZGlvL1JldmVyYklucHV0QnVmZmVyLmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2F1ZGlv
L1NpbmNSZXNhbXBsZXIuY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9hdWRpby9TaW5jUmVz
YW1wbGVyLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2F1ZGlvL1ZlY3Rvck1hdGguY3BwJywK
ICAgICAgICAgICAgICdwbGF0Zm9ybS9hdWRpby9WZWN0b3JNYXRoLmgnLAogICAgICAgICAgICAg
J3BsYXRmb3JtL2F1ZGlvL2Nocm9taXVtL0F1ZGlvQnVzQ2hyb21pdW0uY3BwJywKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQnVzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0J1cy5jcHAJKHJldmlzaW9uIDgxODMw
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9CdXMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAKICNpbmNsdWRlICJBdWRpb0J1cy5oIgogCisjaW5j
bHVkZSAiU2luY1Jlc2FtcGxlci5oIgogI2luY2x1ZGUgIlZlY3Rvck1hdGguaCIKICNpbmNsdWRl
IDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8YXNzZXJ0Lmg+CkBAIC0zNjAsNiArMzYxLDc3IEBAIHZv
aWQgQXVkaW9CdXM6OnN1bVdpdGhHYWluRnJvbShjb25zdCBBdWQKICAgICBwcm9jZXNzV2l0aEdh
aW5Gcm9tKHNvdXJjZUJ1cywgbGFzdE1peEdhaW4sIHRhcmdldEdhaW4sIHRydWUpOwogfQogCitQ
YXNzT3duUHRyPEF1ZGlvQnVzPiBBdWRpb0J1czo6Y3JlYXRlQnlTYW1wbGVSYXRlQ29udmVydGlu
ZyhBdWRpb0J1cyogc291cmNlQnVzLCBib29sIG1peFRvTW9ubywgZG91YmxlIG5ld1NhbXBsZVJh
dGUpCit7CisgICAgLy8gc291cmNlQnVzJ3Mgc2FtcGxlLXJhdGUgbXVzdCBiZSBrbm93bi4KKyAg
ICBBU1NFUlQoc291cmNlQnVzICYmIHNvdXJjZUJ1cy0+c2FtcGxlUmF0ZSgpKTsKKyAgICBpZiAo
IXNvdXJjZUJ1cyB8fCAhc291cmNlQnVzLT5zYW1wbGVSYXRlKCkpCisgICAgICAgIHJldHVybiAw
OworCisgICAgZG91YmxlIHNvdXJjZVNhbXBsZVJhdGUgPSBzb3VyY2VCdXMtPnNhbXBsZVJhdGUo
KTsKKyAgICBkb3VibGUgZGVzdGluYXRpb25TYW1wbGVSYXRlID0gbmV3U2FtcGxlUmF0ZTsKKyAg
ICB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzID0gc291cmNlQnVzLT5udW1iZXJPZkNoYW5uZWxz
KCk7CisKKyAgICBpZiAobnVtYmVyT2ZDaGFubmVscyA9PSAxKQorICAgICAgICBtaXhUb01vbm8g
PSBmYWxzZTsgLy8gYWxyZWFkeSBtb25vCisgICAgICAgIAorICAgIGlmIChzb3VyY2VTYW1wbGVS
YXRlID09IGRlc3RpbmF0aW9uU2FtcGxlUmF0ZSkgeworICAgICAgICAvLyBObyBzYW1wbGUtcmF0
ZSBjb252ZXJzaW9uIGlzIG5lY2Vzc2FyeS4KKyAgICAgICAgaWYgKG1peFRvTW9ubykKKyAgICAg
ICAgICAgIHJldHVybiBBdWRpb0J1czo6Y3JlYXRlQnlNaXhpbmdUb01vbm8oc291cmNlQnVzKTsK
KworICAgICAgICAvLyBSZXR1cm4gZXhhY3QgY29weS4KKyAgICAgICAgcmV0dXJuIEF1ZGlvQnVz
OjpjcmVhdGVCdWZmZXJGcm9tUmFuZ2Uoc291cmNlQnVzLCAwLCBzb3VyY2VCdXMtPmxlbmd0aCgp
KTsKKyAgICB9IAorCisgICAgZG91YmxlIHNhbXBsZVJhdGVSYXRpbyA9IHNvdXJjZVNhbXBsZVJh
dGUgLyBkZXN0aW5hdGlvblNhbXBsZVJhdGU7CisgICAgaW50IHNvdXJjZUxlbmd0aCA9IHNvdXJj
ZUJ1cy0+bGVuZ3RoKCk7CisgICAgaW50IGRlc3RpbmF0aW9uTGVuZ3RoID0gc291cmNlTGVuZ3Ro
IC8gc2FtcGxlUmF0ZVJhdGlvOworCisgICAgT3duUHRyPEF1ZGlvQnVzPiBkZXN0aW5hdGlvbkJ1
cyhhZG9wdFB0cihuZXcgQXVkaW9CdXMobnVtYmVyT2ZDaGFubmVscywgZGVzdGluYXRpb25MZW5n
dGgpKSk7CisKKyAgICAvLyBTYW1wbGUtcmF0ZSBjb252ZXJ0IGVhY2ggY2hhbm5lbC4KKyAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZDaGFubmVsczsgKytpKSB7CisgICAgICAg
IGZsb2F0KiBzb3VyY2UgPSBzb3VyY2VCdXMtPmNoYW5uZWwoaSktPmRhdGEoKTsKKyAgICAgICAg
ZmxvYXQqIGRlc3RpbmF0aW9uID0gZGVzdGluYXRpb25CdXMtPmNoYW5uZWwoaSktPmRhdGEoKTsK
KworICAgICAgICBTaW5jUmVzYW1wbGVyIHJlc2FtcGxlcihzYW1wbGVSYXRlUmF0aW8pOworICAg
ICAgICByZXNhbXBsZXIucHJvY2Vzcyhzb3VyY2UsIGRlc3RpbmF0aW9uLCBzb3VyY2VMZW5ndGgp
OworICAgIH0KKworICAgIGlmIChtaXhUb01vbm8pCisgICAgICAgIHJldHVybiBBdWRpb0J1czo6
Y3JlYXRlQnlNaXhpbmdUb01vbm8oZGVzdGluYXRpb25CdXMuZ2V0KCkpOworCisgICAgcmV0dXJu
IGRlc3RpbmF0aW9uQnVzLnJlbGVhc2UoKTsKK30KKworUGFzc093blB0cjxBdWRpb0J1cz4gQXVk
aW9CdXM6OmNyZWF0ZUJ5TWl4aW5nVG9Nb25vKEF1ZGlvQnVzKiBzb3VyY2VCdXMpCit7CisgICAg
c3dpdGNoIChzb3VyY2VCdXMtPm51bWJlck9mQ2hhbm5lbHMoKSkgeworICAgIGNhc2UgMToKKyAg
ICAgICAgLy8gU2ltcGx5IGNyZWF0ZSBhbiBleGFjdCBjb3B5LgorICAgICAgICByZXR1cm4gQXVk
aW9CdXM6OmNyZWF0ZUJ1ZmZlckZyb21SYW5nZShzb3VyY2VCdXMsIDAsIHNvdXJjZUJ1cy0+bGVu
Z3RoKCkpOworICAgIGNhc2UgMjoKKyAgICAgICAgeworICAgICAgICAgICAgdW5zaWduZWQgbiA9
IHNvdXJjZUJ1cy0+bGVuZ3RoKCk7CisgICAgICAgICAgICBPd25QdHI8QXVkaW9CdXM+IGRlc3Rp
bmF0aW9uQnVzKGFkb3B0UHRyKG5ldyBBdWRpb0J1cygxLCBuKSkpOworCisgICAgICAgICAgICBm
bG9hdCogc291cmNlTCA9IHNvdXJjZUJ1cy0+Y2hhbm5lbCgwKS0+ZGF0YSgpOworICAgICAgICAg
ICAgZmxvYXQqIHNvdXJjZVIgPSBzb3VyY2VCdXMtPmNoYW5uZWwoMSktPmRhdGEoKTsKKyAgICAg
ICAgICAgIGZsb2F0KiBkZXN0aW5hdGlvbiA9IGRlc3RpbmF0aW9uQnVzLT5jaGFubmVsKDApLT5k
YXRhKCk7CisgICAgICAgIAorICAgICAgICAgICAgLy8gRG8gdGhlIG1vbm8gbWl4ZG93bi4KKyAg
ICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBuOyArK2kpCisgICAgICAgICAgICAg
ICAgZGVzdGluYXRpb25baV0gPSAwLjUgKiAoc291cmNlTFtpXSArIHNvdXJjZVJbaV0pOworCisg
ICAgICAgICAgICByZXR1cm4gZGVzdGluYXRpb25CdXMucmVsZWFzZSgpOworICAgICAgICB9Cisg
ICAgfQorCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIDA7Cit9CisKIH0g
Ly8gV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVURJTykKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQnVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9CdXMuaAkocmV2aXNpb24gODE4MzApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0J1cy5oCSh3b3JraW5nIGNvcHkpCkBAIC04
OSw2ICs4OSwxNCBAQCBwdWJsaWM6CiAgICAgLy8gMCBtYXkgYmUgcmV0dXJuZWQgaWYgdGhlIHJh
bmdlIGRvZXMgbm90IGZpdCBpbiB0aGUgc291cmNlQnVmZmVyCiAgICAgc3RhdGljIFBhc3NPd25Q
dHI8QXVkaW9CdXM+IGNyZWF0ZUJ1ZmZlckZyb21SYW5nZShBdWRpb0J1cyogc291cmNlQnVmZmVy
LCB1bnNpZ25lZCBzdGFydEZyYW1lLCB1bnNpZ25lZCBlbmRGcmFtZSk7CiAKKyAgICAvLyBDcmVh
dGVzIGEgbmV3IEF1ZGlvQnVzIGJ5IHNhbXBsZS1yYXRlIGNvbnZlcnRpbmcgc291cmNlQnVzIHRv
IHRoZSBuZXdTYW1wbGVSYXRlLgorICAgIC8vIHNldFNhbXBsZVJhdGUoKSBtdXN0IGhhdmUgYmVl
biBwcmV2aW91c2x5IGNhbGxlZCBvbiBzb3VyY2VCdXMuCisgICAgc3RhdGljIFBhc3NPd25QdHI8
QXVkaW9CdXM+IGNyZWF0ZUJ5U2FtcGxlUmF0ZUNvbnZlcnRpbmcoQXVkaW9CdXMqIHNvdXJjZUJ1
cywgYm9vbCBtaXhUb01vbm8sIGRvdWJsZSBuZXdTYW1wbGVSYXRlKTsKKworICAgIC8vIENyZWF0
ZXMgYSBuZXcgQXVkaW9CdXMgYnkgbWl4aW5nIGFsbCB0aGUgY2hhbm5lbHMgZG93biB0byBtb25v
LgorICAgIC8vIElmIHNvdXJjZUJ1cyBpcyBhbHJlYWR5IG1vbm8sIHRoZW4gdGhlIHJldHVybmVk
IEF1ZGlvQnVzIHdpbGwgc2ltcGx5IGJlIGEgY29weS4KKyAgICBzdGF0aWMgUGFzc093blB0cjxB
dWRpb0J1cz4gY3JlYXRlQnlNaXhpbmdUb01vbm8oQXVkaW9CdXMqIHNvdXJjZUJ1cyk7CisKICAg
ICAvLyBTY2FsZXMgYWxsIHNhbXBsZXMgYnkgdGhlIHNhbWUgYW1vdW50LgogICAgIHZvaWQgc2Nh
bGUoZG91YmxlIHNjYWxlKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
SFJURktlcm5lbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vSFJURktlcm5lbC5jcHAJKHJldmlzaW9uIDgxODMwKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vSFJURktlcm5lbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDE3ICs0NSwx
OCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBUaGlzIHJlcHJlc2VudHMgdGhlIGluaXRpYWwg
ZGVsYXkgYmVmb3JlIHRoZSBtb3N0IGVuZXJnZXRpYyBwYXJ0IG9mIHRoZSBpbXB1bHNlIHJlc3Bv
bnNlLgogLy8gVGhlIHNhbXBsZS1mcmFtZSBkZWxheSBpcyByZW1vdmVkIGZyb20gdGhlIGltcHVs
c2VQIGltcHVsc2UgcmVzcG9uc2UsIGFuZCB0aGlzIHZhbHVlICBpcyByZXR1cm5lZC4KIC8vIHRo
ZSBsZW5ndGggb2YgdGhlIHBhc3NlZCBpbiBBdWRpb0NoYW5uZWwgbXVzdCBiZSBhIHBvd2VyIG9m
IDIuCi1zdGF0aWMgZG91YmxlIGV4dHJhY3RBdmVyYWdlR3JvdXBEZWxheShBdWRpb0NoYW5uZWwq
IGNoYW5uZWwpCitzdGF0aWMgZG91YmxlIGV4dHJhY3RBdmVyYWdlR3JvdXBEZWxheShBdWRpb0No
YW5uZWwqIGNoYW5uZWwsIHNpemVfdCBhbmFseXNpc0ZGVFNpemUpCiB7CiAgICAgQVNTRVJUKGNo
YW5uZWwpOwogICAgICAgICAKICAgICBmbG9hdCogaW1wdWxzZVAgPSBjaGFubmVsLT5kYXRhKCk7
Ci0gICAgc2l6ZV90IGxlbmd0aCA9IGNoYW5uZWwtPmxlbmd0aCgpOwogICAgIAotICAgIC8vIENo
ZWNrIHRoYXQgbGVuZ3RoIGlzIHBvd2VyLW9mLTI7Ci0gICAgQVNTRVJUKDFVTCA8PCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4obG9nMihsZW5ndGgpKSA9PSBsZW5ndGgpOworICAgIEFTU0VSVChjaGFu
bmVsLT5sZW5ndGgoKSA+PSBhbmFseXNpc0ZGVFNpemUpOworICAgIAorICAgIC8vIENoZWNrIGZv
ciBwb3dlci1vZi0yLgorICAgIEFTU0VSVCgxVUwgPDwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGxv
ZzIoYW5hbHlzaXNGRlRTaXplKSkgPT0gYW5hbHlzaXNGRlRTaXplKTsKIAotICAgIEZGVEZyYW1l
IGVzdGltYXRpb25GcmFtZShsZW5ndGgpOworICAgIEZGVEZyYW1lIGVzdGltYXRpb25GcmFtZShh
bmFseXNpc0ZGVFNpemUpOwogICAgIGVzdGltYXRpb25GcmFtZS5kb0ZGVChpbXB1bHNlUCk7CiAK
ICAgICBkb3VibGUgZnJhbWVEZWxheSA9IGVzdGltYXRpb25GcmFtZS5leHRyYWN0QXZlcmFnZUdy
b3VwRGVsYXkoKTsKQEAgLTcxLDcgKzcyLDcgQEAgSFJURktlcm5lbDo6SFJURktlcm5lbChBdWRp
b0NoYW5uZWwqIGNoYQogICAgIEFTU0VSVChjaGFubmVsKTsKIAogICAgIC8vIERldGVybWluZSB0
aGUgbGVhZGluZyBkZWxheSAoYXZlcmFnZSBncm91cCBkZWxheSkgZm9yIHRoZSByZXNwb25zZS4K
LSAgICBtX2ZyYW1lRGVsYXkgPSBleHRyYWN0QXZlcmFnZUdyb3VwRGVsYXkoY2hhbm5lbCk7Cisg
ICAgbV9mcmFtZURlbGF5ID0gZXh0cmFjdEF2ZXJhZ2VHcm91cERlbGF5KGNoYW5uZWwsIGZmdFNp
emUgLyAyKTsKIAogICAgIGZsb2F0KiBpbXB1bHNlUmVzcG9uc2UgPSBjaGFubmVsLT5kYXRhKCk7
CiAgICAgc2l6ZV90IHJlc3BvbnNlTGVuZ3RoID0gY2hhbm5lbC0+bGVuZ3RoKCk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jaHJvbWl1bS9BdWRpb0J1c0Nocm9taXVtLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jaHJvbWl1bS9B
dWRpb0J1c0Nocm9taXVtLmNwcAkocmV2aXNpb24gODE4MzApCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9jaHJvbWl1bS9BdWRpb0J1c0Nocm9taXVtLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzYsMjIgKzM2LDMwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUGFzc093blB0cjxB
dWRpb0J1cz4gQXVkaW9CdXM6OmxvYWRQbGF0Zm9ybVJlc291cmNlKGNvbnN0IGNoYXIqIG5hbWUs
IGRvdWJsZSBzYW1wbGVSYXRlKQogewotICAgIHJldHVybiBQbGF0Zm9ybUJyaWRnZTo6bG9hZFBs
YXRmb3JtQXVkaW9SZXNvdXJjZShuYW1lLCBzYW1wbGVSYXRlKTsKKyAgICAvLyBGSVhNRTogdGhl
IHNhbXBsZVJhdGUgcGFyYW1ldGVyIGlzIGlnbm9yZWQuIEl0IHNob3VsZCBiZSByZW1vdmVkIGZy
b20gdGhlIEFQSS4KKyAgICBPd25QdHI8QXVkaW9CdXM+IGF1ZGlvQnVzID0gUGxhdGZvcm1Ccmlk
Z2U6OmxvYWRQbGF0Zm9ybUF1ZGlvUmVzb3VyY2UobmFtZSwgc2FtcGxlUmF0ZSk7CisgICAgaWYg
KCFhdWRpb0J1cy5nZXQoKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgCisgICAgLy8gSWYgdGhl
IGJ1cyBpcyBhbHJlYWR5IGF0IHRoZSByZXF1ZXN0ZWQgc2FtcGxlLXJhdGUgdGhlbiByZXR1cm4g
YXMgaXMuCisgICAgaWYgKGF1ZGlvQnVzLT5zYW1wbGVSYXRlKCkgPT0gc2FtcGxlUmF0ZSkKKyAg
ICAgICAgcmV0dXJuIGF1ZGlvQnVzLnJlbGVhc2UoKTsKKyAgICAKKyAgICByZXR1cm4gQXVkaW9C
dXM6OmNyZWF0ZUJ5U2FtcGxlUmF0ZUNvbnZlcnRpbmcoYXVkaW9CdXMuZ2V0KCksIGZhbHNlLCBz
YW1wbGVSYXRlKTsKIH0KIAogUGFzc093blB0cjxBdWRpb0J1cz4gY3JlYXRlQnVzRnJvbUluTWVt
b3J5QXVkaW9GaWxlKGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBkYXRhU2l6ZSwgYm9vbCBtaXhU
b01vbm8sIGRvdWJsZSBzYW1wbGVSYXRlKQogeworICAgIC8vIEZJWE1FOiB0aGUgc2FtcGxlUmF0
ZSBwYXJhbWV0ZXIgaXMgaWdub3JlZC4gSXQgc2hvdWxkIGJlIHJlbW92ZWQgZnJvbSB0aGUgQVBJ
LgogICAgIE93blB0cjxBdWRpb0J1cz4gYXVkaW9CdXMgPSBQbGF0Zm9ybUJyaWRnZTo6ZGVjb2Rl
QXVkaW9GaWxlRGF0YShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSksIGRhdGFTaXplLCBz
YW1wbGVSYXRlKTsKLSAgICBpZiAoYXVkaW9CdXMuZ2V0KCkgJiYgYXVkaW9CdXMtPm51bWJlck9m
Q2hhbm5lbHMoKSA9PSAyICYmIG1peFRvTW9ubykgewotICAgICAgICBPd25QdHI8QXVkaW9CdXM+
IG1vbm9BdWRpb0J1cyA9IGFkb3B0UHRyKG5ldyBBdWRpb0J1cygxLCBhdWRpb0J1cy0+bGVuZ3Ro
KCkpKTsKLQotICAgICAgICAvLyBGSVhNRTogQXVkaW9CdXM6OmNvcHlGcm9tKCkgc2hvdWxkIGJl
IGFibGUgdG8gZG8gYSBkb3dubWl4IHRvIG1vbm8uCi0gICAgICAgIC8vIGZvciBub3cgc2ltcGx5
IGNvcHkgdGhlIGxlZnQgY2hhbm5lbC4KLSAgICAgICAgbW9ub0F1ZGlvQnVzLT5jaGFubmVsKDAp
LT5jb3B5RnJvbShhdWRpb0J1cy0+Y2hhbm5lbCgwKSk7Ci0gICAgICAgIHJldHVybiBtb25vQXVk
aW9CdXMucmVsZWFzZSgpOwotICAgIH0KKyAgICBpZiAoIWF1ZGlvQnVzLmdldCgpKQorICAgICAg
cmV0dXJuIDA7CisgICAgICAKKyAgICAvLyBJZiB0aGUgYnVzIG5lZWRzIG5vIGNvbnZlcnNpb24g
dGhlbiByZXR1cm4gYXMgaXMuCisgICAgaWYgKCghbWl4VG9Nb25vIHx8IGF1ZGlvQnVzLT5udW1i
ZXJPZkNoYW5uZWxzKCkgPT0gMSkgJiYgYXVkaW9CdXMtPnNhbXBsZVJhdGUoKSA9PSBzYW1wbGVS
YXRlKQorICAgICAgICByZXR1cm4gYXVkaW9CdXMucmVsZWFzZSgpOwogICAgIAotICAgIHJldHVy
biBhdWRpb0J1cy5yZWxlYXNlKCk7CisgICAgcmV0dXJuIEF1ZGlvQnVzOjpjcmVhdGVCeVNhbXBs
ZVJhdGVDb252ZXJ0aW5nKGF1ZGlvQnVzLmdldCgpLCBtaXhUb01vbm8sIHNhbXBsZVJhdGUpOyAg
ICAKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>86835</attachid>
            <date>2011-03-24 14:13:14 -0700</date>
            <delta_ts>2011-03-24 16:19:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-56980-20110324141314.patch</filename>
            <type>text/plain</type>
            <size>10993</size>
            <attacher name="Chris Rogers">crogers</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgxODk1KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTEtMDMtMjQgIENocmlzIFJv
Z2VycyAgPGNyb2dlcnNAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICB3ZWIgYXVkaW86IFByb3Blcmx5IHNhbXBsZS1yYXRlIGNvbnZl
cnQgYXVkaW8gYXNzZXRzIGluIGNocm9taXVtIHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2OTgwCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIHNp
bmNlIGF1ZGlvIEFQSSBpcyBub3QgeWV0IGltcGxlbWVudGVkLgorCisgICAgICAgICogV2ViQ29y
ZS5neXBpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0F1ZGlvQnVzLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvQnVzOjpjcmVhdGVCeVNhbXBsZVJhdGVDb252ZXJ0aW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvQnVzOjpjcmVhdGVCeU1peGluZ1RvTW9ubyk6CisgICAgICAgICog
cGxhdGZvcm0vYXVkaW8vQXVkaW9CdXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9IUlRG
S2VybmVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RBdmVyYWdlR3JvdXBEZWxheSk6
CisgICAgICAgIChXZWJDb3JlOjpIUlRGS2VybmVsOjpIUlRGS2VybmVsKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9hdWRpby9TaW5jUmVzYW1wbGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRp
by9jaHJvbWl1bS9BdWRpb0J1c0Nocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
QnVzOjpsb2FkUGxhdGZvcm1SZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVCdXNG
cm9tSW5NZW1vcnlBdWRpb0ZpbGUpOgorCiAyMDExLTAzLTI0ICBCcmFkeSBFaWRzb24gIDxiZWlk
c29uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIFJvYmVuLgpJbmRleDog
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaQkocmV2aXNpb24gODE4ODcpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTM2MTcsNiArMzYxNyw4IEBACiAgICAgICAgICAgICAn
cGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyU3RhZ2UuaCcsCiAgICAgICAgICAgICAncGxh
dGZvcm0vYXVkaW8vUmV2ZXJiSW5wdXRCdWZmZXIuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9y
bS9hdWRpby9SZXZlcmJJbnB1dEJ1ZmZlci5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9hdWRp
by9TaW5jUmVzYW1wbGVyLmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0vYXVkaW8vU2luY1Jl
c2FtcGxlci5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9hdWRpby9WZWN0b3JNYXRoLmNwcCcs
CiAgICAgICAgICAgICAncGxhdGZvcm0vYXVkaW8vVmVjdG9yTWF0aC5oJywKICAgICAgICAgICAg
ICdwbGF0Zm9ybS9hdWRpby9jaHJvbWl1bS9BdWRpb0J1c0Nocm9taXVtLmNwcCcsCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0J1cy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9CdXMuY3BwCShyZXZpc2lvbiA4MTg4
NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQnVzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQAogCiAjaW5jbHVkZSAiQXVkaW9CdXMuaCIKIAorI2lu
Y2x1ZGUgIlNpbmNSZXNhbXBsZXIuaCIKICNpbmNsdWRlICJWZWN0b3JNYXRoLmgiCiAjaW5jbHVk
ZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPGFzc2VydC5oPgpAQCAtMzYwLDYgKzM2MSw5MCBAQCB2
b2lkIEF1ZGlvQnVzOjpzdW1XaXRoR2FpbkZyb20oY29uc3QgQXVkCiAgICAgcHJvY2Vzc1dpdGhH
YWluRnJvbShzb3VyY2VCdXMsIGxhc3RNaXhHYWluLCB0YXJnZXRHYWluLCB0cnVlKTsKIH0KIAor
I2lmICFQTEFURk9STShNQUMpCitQYXNzT3duUHRyPEF1ZGlvQnVzPiBBdWRpb0J1czo6Y3JlYXRl
QnlTYW1wbGVSYXRlQ29udmVydGluZyhBdWRpb0J1cyogc291cmNlQnVzLCBib29sIG1peFRvTW9u
bywgZG91YmxlIG5ld1NhbXBsZVJhdGUpCit7CisgICAgLy8gc291cmNlQnVzJ3Mgc2FtcGxlLXJh
dGUgbXVzdCBiZSBrbm93bi4KKyAgICBBU1NFUlQoc291cmNlQnVzICYmIHNvdXJjZUJ1cy0+c2Ft
cGxlUmF0ZSgpKTsKKyAgICBpZiAoIXNvdXJjZUJ1cyB8fCAhc291cmNlQnVzLT5zYW1wbGVSYXRl
KCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgZG91YmxlIHNvdXJjZVNhbXBsZVJhdGUgPSBz
b3VyY2VCdXMtPnNhbXBsZVJhdGUoKTsKKyAgICBkb3VibGUgZGVzdGluYXRpb25TYW1wbGVSYXRl
ID0gbmV3U2FtcGxlUmF0ZTsKKyAgICB1bnNpZ25lZCBudW1iZXJPZlNvdXJjZUNoYW5uZWxzID0g
c291cmNlQnVzLT5udW1iZXJPZkNoYW5uZWxzKCk7CisKKyAgICBpZiAobnVtYmVyT2ZTb3VyY2VD
aGFubmVscyA9PSAxKQorICAgICAgICBtaXhUb01vbm8gPSBmYWxzZTsgLy8gYWxyZWFkeSBtb25v
CisgICAgICAgIAorICAgIGlmIChzb3VyY2VTYW1wbGVSYXRlID09IGRlc3RpbmF0aW9uU2FtcGxl
UmF0ZSkgeworICAgICAgICAvLyBObyBzYW1wbGUtcmF0ZSBjb252ZXJzaW9uIGlzIG5lY2Vzc2Fy
eS4KKyAgICAgICAgaWYgKG1peFRvTW9ubykKKyAgICAgICAgICAgIHJldHVybiBBdWRpb0J1czo6
Y3JlYXRlQnlNaXhpbmdUb01vbm8oc291cmNlQnVzKTsKKworICAgICAgICAvLyBSZXR1cm4gZXhh
Y3QgY29weS4KKyAgICAgICAgcmV0dXJuIEF1ZGlvQnVzOjpjcmVhdGVCdWZmZXJGcm9tUmFuZ2Uo
c291cmNlQnVzLCAwLCBzb3VyY2VCdXMtPmxlbmd0aCgpKTsKKyAgICB9CisgICAgCisgICAgLy8g
Rmlyc3QsIG1peCB0byBtb25vIChpZiBuZWNlc3NhcnkpIHRoZW4gc2FtcGxlLXJhdGUgY29udmVy
dC4KKyAgICBBdWRpb0J1cyogcmVzYW1wbGVyU291cmNlQnVzOworICAgIE93blB0cjxBdWRpb0J1
cz4gbWl4ZWRNb25vQnVzOworICAgIGlmIChtaXhUb01vbm8pIHsKKyAgICAgICAgbWl4ZWRNb25v
QnVzID0gQXVkaW9CdXM6OmNyZWF0ZUJ5TWl4aW5nVG9Nb25vKHNvdXJjZUJ1cyk7CisgICAgICAg
IHJlc2FtcGxlclNvdXJjZUJ1cyA9IG1peGVkTW9ub0J1cy5nZXQoKTsKKyAgICB9IGVsc2Ugewor
ICAgICAgICAvLyBEaXJlY3RseSByZXNhbXBsZSB3aXRob3V0IGRvd24tbWl4aW5nLgorICAgICAg
ICByZXNhbXBsZXJTb3VyY2VCdXMgPSBzb3VyY2VCdXM7CisgICAgfQorCisgICAgLy8gQ2FsY3Vs
YXRlIGRlc3RpbmF0aW9uIGxlbmd0aCBiYXNlZCBvbiB0aGUgc2FtcGxlLXJhdGVzLgorICAgIGRv
dWJsZSBzYW1wbGVSYXRlUmF0aW8gPSBzb3VyY2VTYW1wbGVSYXRlIC8gZGVzdGluYXRpb25TYW1w
bGVSYXRlOworICAgIGludCBzb3VyY2VMZW5ndGggPSByZXNhbXBsZXJTb3VyY2VCdXMtPmxlbmd0
aCgpOworICAgIGludCBkZXN0aW5hdGlvbkxlbmd0aCA9IHNvdXJjZUxlbmd0aCAvIHNhbXBsZVJh
dGVSYXRpbzsKKworICAgIC8vIENyZWF0ZSBkZXN0aW5hdGlvbiBidXMgd2l0aCBzYW1lIG51bWJl
ciBvZiBjaGFubmVscy4KKyAgICB1bnNpZ25lZCBudW1iZXJPZkRlc3RpbmF0aW9uQ2hhbm5lbHMg
PSByZXNhbXBsZXJTb3VyY2VCdXMtPm51bWJlck9mQ2hhbm5lbHMoKTsKKyAgICBPd25QdHI8QXVk
aW9CdXM+IGRlc3RpbmF0aW9uQnVzKGFkb3B0UHRyKG5ldyBBdWRpb0J1cyhudW1iZXJPZkRlc3Rp
bmF0aW9uQ2hhbm5lbHMsIGRlc3RpbmF0aW9uTGVuZ3RoKSkpOworCisgICAgLy8gU2FtcGxlLXJh
dGUgY29udmVydCBlYWNoIGNoYW5uZWwuCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51
bWJlck9mRGVzdGluYXRpb25DaGFubmVsczsgKytpKSB7CisgICAgICAgIGZsb2F0KiBzb3VyY2Ug
PSByZXNhbXBsZXJTb3VyY2VCdXMtPmNoYW5uZWwoaSktPmRhdGEoKTsKKyAgICAgICAgZmxvYXQq
IGRlc3RpbmF0aW9uID0gZGVzdGluYXRpb25CdXMtPmNoYW5uZWwoaSktPmRhdGEoKTsKKworICAg
ICAgICBTaW5jUmVzYW1wbGVyIHJlc2FtcGxlcihzYW1wbGVSYXRlUmF0aW8pOworICAgICAgICBy
ZXNhbXBsZXIucHJvY2Vzcyhzb3VyY2UsIGRlc3RpbmF0aW9uLCBzb3VyY2VMZW5ndGgpOworICAg
IH0KKworICAgIHJldHVybiBkZXN0aW5hdGlvbkJ1cy5yZWxlYXNlKCk7Cit9CisjZW5kaWYgLy8g
IVBMQVRGT1JNKE1BQykKKworUGFzc093blB0cjxBdWRpb0J1cz4gQXVkaW9CdXM6OmNyZWF0ZUJ5
TWl4aW5nVG9Nb25vKEF1ZGlvQnVzKiBzb3VyY2VCdXMpCit7CisgICAgc3dpdGNoIChzb3VyY2VC
dXMtPm51bWJlck9mQ2hhbm5lbHMoKSkgeworICAgIGNhc2UgMToKKyAgICAgICAgLy8gU2ltcGx5
IGNyZWF0ZSBhbiBleGFjdCBjb3B5LgorICAgICAgICByZXR1cm4gQXVkaW9CdXM6OmNyZWF0ZUJ1
ZmZlckZyb21SYW5nZShzb3VyY2VCdXMsIDAsIHNvdXJjZUJ1cy0+bGVuZ3RoKCkpOworICAgIGNh
c2UgMjoKKyAgICAgICAgeworICAgICAgICAgICAgdW5zaWduZWQgbiA9IHNvdXJjZUJ1cy0+bGVu
Z3RoKCk7CisgICAgICAgICAgICBPd25QdHI8QXVkaW9CdXM+IGRlc3RpbmF0aW9uQnVzKGFkb3B0
UHRyKG5ldyBBdWRpb0J1cygxLCBuKSkpOworCisgICAgICAgICAgICBmbG9hdCogc291cmNlTCA9
IHNvdXJjZUJ1cy0+Y2hhbm5lbCgwKS0+ZGF0YSgpOworICAgICAgICAgICAgZmxvYXQqIHNvdXJj
ZVIgPSBzb3VyY2VCdXMtPmNoYW5uZWwoMSktPmRhdGEoKTsKKyAgICAgICAgICAgIGZsb2F0KiBk
ZXN0aW5hdGlvbiA9IGRlc3RpbmF0aW9uQnVzLT5jaGFubmVsKDApLT5kYXRhKCk7CisgICAgICAg
IAorICAgICAgICAgICAgLy8gRG8gdGhlIG1vbm8gbWl4ZG93bi4KKyAgICAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBuOyArK2kpCisgICAgICAgICAgICAgICAgZGVzdGluYXRpb25b
aV0gPSAwLjUgKiAoc291cmNlTFtpXSArIHNvdXJjZVJbaV0pOworCisgICAgICAgICAgICByZXR1
cm4gZGVzdGluYXRpb25CdXMucmVsZWFzZSgpOworICAgICAgICB9CisgICAgfQorCisgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIDA7Cit9CisKIH0gLy8gV2ViQ29yZQogCiAj
ZW5kaWYgLy8gRU5BQkxFKFdFQl9BVURJTykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL0F1ZGlvQnVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vQXVkaW9CdXMuaAkocmV2aXNpb24gODE4ODcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9BdWRpb0J1cy5oCSh3b3JraW5nIGNvcHkpCkBAIC04OSw2ICs4OSwxOCBAQCBw
dWJsaWM6CiAgICAgLy8gMCBtYXkgYmUgcmV0dXJuZWQgaWYgdGhlIHJhbmdlIGRvZXMgbm90IGZp
dCBpbiB0aGUgc291cmNlQnVmZmVyCiAgICAgc3RhdGljIFBhc3NPd25QdHI8QXVkaW9CdXM+IGNy
ZWF0ZUJ1ZmZlckZyb21SYW5nZShBdWRpb0J1cyogc291cmNlQnVmZmVyLCB1bnNpZ25lZCBzdGFy
dEZyYW1lLCB1bnNpZ25lZCBlbmRGcmFtZSk7CiAKKworI2lmICFQTEFURk9STShNQUMpCisgICAg
Ly8gQ3JlYXRlcyBhIG5ldyBBdWRpb0J1cyBieSBzYW1wbGUtcmF0ZSBjb252ZXJ0aW5nIHNvdXJj
ZUJ1cyB0byB0aGUgbmV3U2FtcGxlUmF0ZS4KKyAgICAvLyBzZXRTYW1wbGVSYXRlKCkgbXVzdCBo
YXZlIGJlZW4gcHJldmlvdXNseSBjYWxsZWQgb24gc291cmNlQnVzLgorICAgIC8vIE5vdGU6IHNh
bXBsZS1yYXRlIGNvbnZlcnNpb24gaXMgYWxyZWFkeSBoYW5kbGVkIGluIHRoZSBmaWxlLXJlYWRp
bmcgY29kZSBmb3IgdGhlIG1hYyBwb3J0LCBzbyB3ZSBkb24ndCBuZWVkIHRoaXMuCisgICAgc3Rh
dGljIFBhc3NPd25QdHI8QXVkaW9CdXM+IGNyZWF0ZUJ5U2FtcGxlUmF0ZUNvbnZlcnRpbmcoQXVk
aW9CdXMqIHNvdXJjZUJ1cywgYm9vbCBtaXhUb01vbm8sIGRvdWJsZSBuZXdTYW1wbGVSYXRlKTsK
KyNlbmRpZgorCisgICAgLy8gQ3JlYXRlcyBhIG5ldyBBdWRpb0J1cyBieSBtaXhpbmcgYWxsIHRo
ZSBjaGFubmVscyBkb3duIHRvIG1vbm8uCisgICAgLy8gSWYgc291cmNlQnVzIGlzIGFscmVhZHkg
bW9ubywgdGhlbiB0aGUgcmV0dXJuZWQgQXVkaW9CdXMgd2lsbCBzaW1wbHkgYmUgYSBjb3B5Lgor
ICAgIHN0YXRpYyBQYXNzT3duUHRyPEF1ZGlvQnVzPiBjcmVhdGVCeU1peGluZ1RvTW9ubyhBdWRp
b0J1cyogc291cmNlQnVzKTsKKwogICAgIC8vIFNjYWxlcyBhbGwgc2FtcGxlcyBieSB0aGUgc2Ft
ZSBhbW91bnQuCiAgICAgdm9pZCBzY2FsZShkb3VibGUgc2NhbGUpOwogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGS2VybmVsLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGS2VybmVsLmNwcAkocmV2aXNpb24gODE4ODcp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGS2VybmVsLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDUsMTcgKzQ1LDE4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIFRoaXMg
cmVwcmVzZW50cyB0aGUgaW5pdGlhbCBkZWxheSBiZWZvcmUgdGhlIG1vc3QgZW5lcmdldGljIHBh
cnQgb2YgdGhlIGltcHVsc2UgcmVzcG9uc2UuCiAvLyBUaGUgc2FtcGxlLWZyYW1lIGRlbGF5IGlz
IHJlbW92ZWQgZnJvbSB0aGUgaW1wdWxzZVAgaW1wdWxzZSByZXNwb25zZSwgYW5kIHRoaXMgdmFs
dWUgIGlzIHJldHVybmVkLgogLy8gdGhlIGxlbmd0aCBvZiB0aGUgcGFzc2VkIGluIEF1ZGlvQ2hh
bm5lbCBtdXN0IGJlIGEgcG93ZXIgb2YgMi4KLXN0YXRpYyBkb3VibGUgZXh0cmFjdEF2ZXJhZ2VH
cm91cERlbGF5KEF1ZGlvQ2hhbm5lbCogY2hhbm5lbCkKK3N0YXRpYyBkb3VibGUgZXh0cmFjdEF2
ZXJhZ2VHcm91cERlbGF5KEF1ZGlvQ2hhbm5lbCogY2hhbm5lbCwgc2l6ZV90IGFuYWx5c2lzRkZU
U2l6ZSkKIHsKICAgICBBU1NFUlQoY2hhbm5lbCk7CiAgICAgICAgIAogICAgIGZsb2F0KiBpbXB1
bHNlUCA9IGNoYW5uZWwtPmRhdGEoKTsKLSAgICBzaXplX3QgbGVuZ3RoID0gY2hhbm5lbC0+bGVu
Z3RoKCk7CiAgICAgCi0gICAgLy8gQ2hlY2sgdGhhdCBsZW5ndGggaXMgcG93ZXItb2YtMjsKLSAg
ICBBU1NFUlQoMVVMIDw8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihsb2cyKGxlbmd0aCkpID09IGxl
bmd0aCk7CisgICAgQVNTRVJUKGNoYW5uZWwtPmxlbmd0aCgpID49IGFuYWx5c2lzRkZUU2l6ZSk7
CisgICAgCisgICAgLy8gQ2hlY2sgZm9yIHBvd2VyLW9mLTIuCisgICAgQVNTRVJUKDFVTCA8PCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4obG9nMihhbmFseXNpc0ZGVFNpemUpKSA9PSBhbmFseXNpc0ZG
VFNpemUpOwogCi0gICAgRkZURnJhbWUgZXN0aW1hdGlvbkZyYW1lKGxlbmd0aCk7CisgICAgRkZU
RnJhbWUgZXN0aW1hdGlvbkZyYW1lKGFuYWx5c2lzRkZUU2l6ZSk7CiAgICAgZXN0aW1hdGlvbkZy
YW1lLmRvRkZUKGltcHVsc2VQKTsKIAogICAgIGRvdWJsZSBmcmFtZURlbGF5ID0gZXN0aW1hdGlv
bkZyYW1lLmV4dHJhY3RBdmVyYWdlR3JvdXBEZWxheSgpOwpAQCAtNzEsNyArNzIsNyBAQCBIUlRG
S2VybmVsOjpIUlRGS2VybmVsKEF1ZGlvQ2hhbm5lbCogY2hhCiAgICAgQVNTRVJUKGNoYW5uZWwp
OwogCiAgICAgLy8gRGV0ZXJtaW5lIHRoZSBsZWFkaW5nIGRlbGF5IChhdmVyYWdlIGdyb3VwIGRl
bGF5KSBmb3IgdGhlIHJlc3BvbnNlLgotICAgIG1fZnJhbWVEZWxheSA9IGV4dHJhY3RBdmVyYWdl
R3JvdXBEZWxheShjaGFubmVsKTsKKyAgICBtX2ZyYW1lRGVsYXkgPSBleHRyYWN0QXZlcmFnZUdy
b3VwRGVsYXkoY2hhbm5lbCwgZmZ0U2l6ZSAvIDIpOwogCiAgICAgZmxvYXQqIGltcHVsc2VSZXNw
b25zZSA9IGNoYW5uZWwtPmRhdGEoKTsKICAgICBzaXplX3QgcmVzcG9uc2VMZW5ndGggPSBjaGFu
bmVsLT5sZW5ndGgoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1NpbmNS
ZXNhbXBsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L1NpbmNSZXNhbXBsZXIuY3BwCShyZXZpc2lvbiA4MTg4NykKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL1NpbmNSZXNhbXBsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsy
OCw4IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKIAorI2lmIEVOQUJMRShXRUJfQVVESU8pCisK
ICNpbmNsdWRlICJTaW5jUmVzYW1wbGVyLmgiCiAKICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5o
PgpAQCAtMzM2LDMgKzMzOCw1IEBAIHZvaWQgU2luY1Jlc2FtcGxlcjo6cHJvY2VzcyhmbG9hdCog
c291cmMKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdF
Ql9BVURJTykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2Nocm9taXVtL0F1
ZGlvQnVzQ2hyb21pdW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL2Nocm9taXVtL0F1ZGlvQnVzQ2hyb21pdW0uY3BwCShyZXZpc2lvbiA4MTg4NykKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2Nocm9taXVtL0F1ZGlvQnVzQ2hyb21pdW0u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiwyMiArMzYsMzAgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBQYXNzT3duUHRyPEF1ZGlvQnVzPiBBdWRpb0J1czo6bG9hZFBsYXRmb3JtUmVzb3VyY2Uo
Y29uc3QgY2hhciogbmFtZSwgZG91YmxlIHNhbXBsZVJhdGUpCiB7Ci0gICAgcmV0dXJuIFBsYXRm
b3JtQnJpZGdlOjpsb2FkUGxhdGZvcm1BdWRpb1Jlc291cmNlKG5hbWUsIHNhbXBsZVJhdGUpOwor
ICAgIC8vIEZJWE1FOiB0aGUgc2FtcGxlUmF0ZSBwYXJhbWV0ZXIgaXMgaWdub3JlZC4gSXQgc2hv
dWxkIGJlIHJlbW92ZWQgZnJvbSB0aGUgQVBJLgorICAgIE93blB0cjxBdWRpb0J1cz4gYXVkaW9C
dXMgPSBQbGF0Zm9ybUJyaWRnZTo6bG9hZFBsYXRmb3JtQXVkaW9SZXNvdXJjZShuYW1lLCBzYW1w
bGVSYXRlKTsKKyAgICBpZiAoIWF1ZGlvQnVzLmdldCgpKQorICAgICAgICByZXR1cm4gMDsKKyAg
ICAKKyAgICAvLyBJZiB0aGUgYnVzIGlzIGFscmVhZHkgYXQgdGhlIHJlcXVlc3RlZCBzYW1wbGUt
cmF0ZSB0aGVuIHJldHVybiBhcyBpcy4KKyAgICBpZiAoYXVkaW9CdXMtPnNhbXBsZVJhdGUoKSA9
PSBzYW1wbGVSYXRlKQorICAgICAgICByZXR1cm4gYXVkaW9CdXMucmVsZWFzZSgpOworICAgIAor
ICAgIHJldHVybiBBdWRpb0J1czo6Y3JlYXRlQnlTYW1wbGVSYXRlQ29udmVydGluZyhhdWRpb0J1
cy5nZXQoKSwgZmFsc2UsIHNhbXBsZVJhdGUpOwogfQogCiBQYXNzT3duUHRyPEF1ZGlvQnVzPiBj
cmVhdGVCdXNGcm9tSW5NZW1vcnlBdWRpb0ZpbGUoY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IGRh
dGFTaXplLCBib29sIG1peFRvTW9ubywgZG91YmxlIHNhbXBsZVJhdGUpCiB7CisgICAgLy8gRklY
TUU6IHRoZSBzYW1wbGVSYXRlIHBhcmFtZXRlciBpcyBpZ25vcmVkLiBJdCBzaG91bGQgYmUgcmVt
b3ZlZCBmcm9tIHRoZSBBUEkuCiAgICAgT3duUHRyPEF1ZGlvQnVzPiBhdWRpb0J1cyA9IFBsYXRm
b3JtQnJpZGdlOjpkZWNvZGVBdWRpb0ZpbGVEYXRhKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihk
YXRhKSwgZGF0YVNpemUsIHNhbXBsZVJhdGUpOwotICAgIGlmIChhdWRpb0J1cy5nZXQoKSAmJiBh
dWRpb0J1cy0+bnVtYmVyT2ZDaGFubmVscygpID09IDIgJiYgbWl4VG9Nb25vKSB7Ci0gICAgICAg
IE93blB0cjxBdWRpb0J1cz4gbW9ub0F1ZGlvQnVzID0gYWRvcHRQdHIobmV3IEF1ZGlvQnVzKDEs
IGF1ZGlvQnVzLT5sZW5ndGgoKSkpOwotCi0gICAgICAgIC8vIEZJWE1FOiBBdWRpb0J1czo6Y29w
eUZyb20oKSBzaG91bGQgYmUgYWJsZSB0byBkbyBhIGRvd25taXggdG8gbW9uby4KLSAgICAgICAg
Ly8gZm9yIG5vdyBzaW1wbHkgY29weSB0aGUgbGVmdCBjaGFubmVsLgotICAgICAgICBtb25vQXVk
aW9CdXMtPmNoYW5uZWwoMCktPmNvcHlGcm9tKGF1ZGlvQnVzLT5jaGFubmVsKDApKTsKLSAgICAg
ICAgcmV0dXJuIG1vbm9BdWRpb0J1cy5yZWxlYXNlKCk7Ci0gICAgfQorICAgIGlmICghYXVkaW9C
dXMuZ2V0KCkpCisgICAgICByZXR1cm4gMDsKKyAgICAgIAorICAgIC8vIElmIHRoZSBidXMgbmVl
ZHMgbm8gY29udmVyc2lvbiB0aGVuIHJldHVybiBhcyBpcy4KKyAgICBpZiAoKCFtaXhUb01vbm8g
fHwgYXVkaW9CdXMtPm51bWJlck9mQ2hhbm5lbHMoKSA9PSAxKSAmJiBhdWRpb0J1cy0+c2FtcGxl
UmF0ZSgpID09IHNhbXBsZVJhdGUpCisgICAgICAgIHJldHVybiBhdWRpb0J1cy5yZWxlYXNlKCk7
CiAgICAgCi0gICAgcmV0dXJuIGF1ZGlvQnVzLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gQXVkaW9C
dXM6OmNyZWF0ZUJ5U2FtcGxlUmF0ZUNvbnZlcnRpbmcoYXVkaW9CdXMuZ2V0KCksIG1peFRvTW9u
bywgc2FtcGxlUmF0ZSk7ICAgIAogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>86853</attachid>
            <date>2011-03-24 16:19:08 -0700</date>
            <delta_ts>2011-03-24 19:13:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-56980-20110324161907.patch</filename>
            <type>text/plain</type>
            <size>11020</size>
            <attacher name="Chris Rogers">crogers</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgxOTE1KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTEtMDMtMjQgIENocmlzIFJv
Z2VycyAgPGNyb2dlcnNAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICB3ZWIgYXVkaW86IFByb3Blcmx5IHNhbXBsZS1yYXRlIGNvbnZl
cnQgYXVkaW8gYXNzZXRzIGluIGNocm9taXVtIHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2OTgwCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIHNp
bmNlIGF1ZGlvIEFQSSBpcyBub3QgeWV0IGltcGxlbWVudGVkLgorCisgICAgICAgICogV2ViQ29y
ZS5neXBpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0F1ZGlvQnVzLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvQnVzOjpjcmVhdGVCeVNhbXBsZVJhdGVDb252ZXJ0aW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvQnVzOjpjcmVhdGVCeU1peGluZ1RvTW9ubyk6CisgICAgICAgICog
cGxhdGZvcm0vYXVkaW8vQXVkaW9CdXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9IUlRG
S2VybmVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RBdmVyYWdlR3JvdXBEZWxheSk6
CisgICAgICAgIChXZWJDb3JlOjpIUlRGS2VybmVsOjpIUlRGS2VybmVsKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9hdWRpby9TaW5jUmVzYW1wbGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRp
by9jaHJvbWl1bS9BdWRpb0J1c0Nocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
QnVzOjpsb2FkUGxhdGZvcm1SZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVCdXNG
cm9tSW5NZW1vcnlBdWRpb0ZpbGUpOgorCiAyMDExLTAzLTI0ICBNaWtlIFJlZWQgIDxyZWVkQGdv
b2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgSmFtZXMgUm9iaW5zb24uCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpCShyZXZpc2lvbiA4MTg4NykKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaQkod29ya2luZyBjb3B5KQpAQCAtMzYxNyw2ICszNjE3LDggQEAKICAgICAgICAgICAgICdw
bGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXJTdGFnZS5oJywKICAgICAgICAgICAgICdwbGF0
Zm9ybS9hdWRpby9SZXZlcmJJbnB1dEJ1ZmZlci5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3Jt
L2F1ZGlvL1JldmVyYklucHV0QnVmZmVyLmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2F1ZGlv
L1NpbmNSZXNhbXBsZXIuY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9hdWRpby9TaW5jUmVz
YW1wbGVyLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2F1ZGlvL1ZlY3Rvck1hdGguY3BwJywK
ICAgICAgICAgICAgICdwbGF0Zm9ybS9hdWRpby9WZWN0b3JNYXRoLmgnLAogICAgICAgICAgICAg
J3BsYXRmb3JtL2F1ZGlvL2Nocm9taXVtL0F1ZGlvQnVzQ2hyb21pdW0uY3BwJywKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQnVzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0J1cy5jcHAJKHJldmlzaW9uIDgxODg3
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9CdXMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMiw2ICszMiw5IEBACiAKICNpbmNsdWRlICJBdWRpb0J1cy5oIgogCisjaWYg
IVBMQVRGT1JNKE1BQykKKyNpbmNsdWRlICJTaW5jUmVzYW1wbGVyLmgiCisjZW5kaWYKICNpbmNs
dWRlICJWZWN0b3JNYXRoLmgiCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPGFzc2Vy
dC5oPgpAQCAtMzYwLDYgKzM2Myw5MCBAQCB2b2lkIEF1ZGlvQnVzOjpzdW1XaXRoR2FpbkZyb20o
Y29uc3QgQXVkCiAgICAgcHJvY2Vzc1dpdGhHYWluRnJvbShzb3VyY2VCdXMsIGxhc3RNaXhHYWlu
LCB0YXJnZXRHYWluLCB0cnVlKTsKIH0KIAorI2lmICFQTEFURk9STShNQUMpCitQYXNzT3duUHRy
PEF1ZGlvQnVzPiBBdWRpb0J1czo6Y3JlYXRlQnlTYW1wbGVSYXRlQ29udmVydGluZyhBdWRpb0J1
cyogc291cmNlQnVzLCBib29sIG1peFRvTW9ubywgZG91YmxlIG5ld1NhbXBsZVJhdGUpCit7Cisg
ICAgLy8gc291cmNlQnVzJ3Mgc2FtcGxlLXJhdGUgbXVzdCBiZSBrbm93bi4KKyAgICBBU1NFUlQo
c291cmNlQnVzICYmIHNvdXJjZUJ1cy0+c2FtcGxlUmF0ZSgpKTsKKyAgICBpZiAoIXNvdXJjZUJ1
cyB8fCAhc291cmNlQnVzLT5zYW1wbGVSYXRlKCkpCisgICAgICAgIHJldHVybiAwOworCisgICAg
ZG91YmxlIHNvdXJjZVNhbXBsZVJhdGUgPSBzb3VyY2VCdXMtPnNhbXBsZVJhdGUoKTsKKyAgICBk
b3VibGUgZGVzdGluYXRpb25TYW1wbGVSYXRlID0gbmV3U2FtcGxlUmF0ZTsKKyAgICB1bnNpZ25l
ZCBudW1iZXJPZlNvdXJjZUNoYW5uZWxzID0gc291cmNlQnVzLT5udW1iZXJPZkNoYW5uZWxzKCk7
CisKKyAgICBpZiAobnVtYmVyT2ZTb3VyY2VDaGFubmVscyA9PSAxKQorICAgICAgICBtaXhUb01v
bm8gPSBmYWxzZTsgLy8gYWxyZWFkeSBtb25vCisgICAgICAgIAorICAgIGlmIChzb3VyY2VTYW1w
bGVSYXRlID09IGRlc3RpbmF0aW9uU2FtcGxlUmF0ZSkgeworICAgICAgICAvLyBObyBzYW1wbGUt
cmF0ZSBjb252ZXJzaW9uIGlzIG5lY2Vzc2FyeS4KKyAgICAgICAgaWYgKG1peFRvTW9ubykKKyAg
ICAgICAgICAgIHJldHVybiBBdWRpb0J1czo6Y3JlYXRlQnlNaXhpbmdUb01vbm8oc291cmNlQnVz
KTsKKworICAgICAgICAvLyBSZXR1cm4gZXhhY3QgY29weS4KKyAgICAgICAgcmV0dXJuIEF1ZGlv
QnVzOjpjcmVhdGVCdWZmZXJGcm9tUmFuZ2Uoc291cmNlQnVzLCAwLCBzb3VyY2VCdXMtPmxlbmd0
aCgpKTsKKyAgICB9CisgICAgCisgICAgLy8gRmlyc3QsIG1peCB0byBtb25vIChpZiBuZWNlc3Nh
cnkpIHRoZW4gc2FtcGxlLXJhdGUgY29udmVydC4KKyAgICBBdWRpb0J1cyogcmVzYW1wbGVyU291
cmNlQnVzOworICAgIE93blB0cjxBdWRpb0J1cz4gbWl4ZWRNb25vQnVzOworICAgIGlmIChtaXhU
b01vbm8pIHsKKyAgICAgICAgbWl4ZWRNb25vQnVzID0gQXVkaW9CdXM6OmNyZWF0ZUJ5TWl4aW5n
VG9Nb25vKHNvdXJjZUJ1cyk7CisgICAgICAgIHJlc2FtcGxlclNvdXJjZUJ1cyA9IG1peGVkTW9u
b0J1cy5nZXQoKTsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBEaXJlY3RseSByZXNhbXBsZSB3
aXRob3V0IGRvd24tbWl4aW5nLgorICAgICAgICByZXNhbXBsZXJTb3VyY2VCdXMgPSBzb3VyY2VC
dXM7CisgICAgfQorCisgICAgLy8gQ2FsY3VsYXRlIGRlc3RpbmF0aW9uIGxlbmd0aCBiYXNlZCBv
biB0aGUgc2FtcGxlLXJhdGVzLgorICAgIGRvdWJsZSBzYW1wbGVSYXRlUmF0aW8gPSBzb3VyY2VT
YW1wbGVSYXRlIC8gZGVzdGluYXRpb25TYW1wbGVSYXRlOworICAgIGludCBzb3VyY2VMZW5ndGgg
PSByZXNhbXBsZXJTb3VyY2VCdXMtPmxlbmd0aCgpOworICAgIGludCBkZXN0aW5hdGlvbkxlbmd0
aCA9IHNvdXJjZUxlbmd0aCAvIHNhbXBsZVJhdGVSYXRpbzsKKworICAgIC8vIENyZWF0ZSBkZXN0
aW5hdGlvbiBidXMgd2l0aCBzYW1lIG51bWJlciBvZiBjaGFubmVscy4KKyAgICB1bnNpZ25lZCBu
dW1iZXJPZkRlc3RpbmF0aW9uQ2hhbm5lbHMgPSByZXNhbXBsZXJTb3VyY2VCdXMtPm51bWJlck9m
Q2hhbm5lbHMoKTsKKyAgICBPd25QdHI8QXVkaW9CdXM+IGRlc3RpbmF0aW9uQnVzKGFkb3B0UHRy
KG5ldyBBdWRpb0J1cyhudW1iZXJPZkRlc3RpbmF0aW9uQ2hhbm5lbHMsIGRlc3RpbmF0aW9uTGVu
Z3RoKSkpOworCisgICAgLy8gU2FtcGxlLXJhdGUgY29udmVydCBlYWNoIGNoYW5uZWwuCisgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mRGVzdGluYXRpb25DaGFubmVsczsgKytp
KSB7CisgICAgICAgIGZsb2F0KiBzb3VyY2UgPSByZXNhbXBsZXJTb3VyY2VCdXMtPmNoYW5uZWwo
aSktPmRhdGEoKTsKKyAgICAgICAgZmxvYXQqIGRlc3RpbmF0aW9uID0gZGVzdGluYXRpb25CdXMt
PmNoYW5uZWwoaSktPmRhdGEoKTsKKworICAgICAgICBTaW5jUmVzYW1wbGVyIHJlc2FtcGxlcihz
YW1wbGVSYXRlUmF0aW8pOworICAgICAgICByZXNhbXBsZXIucHJvY2Vzcyhzb3VyY2UsIGRlc3Rp
bmF0aW9uLCBzb3VyY2VMZW5ndGgpOworICAgIH0KKworICAgIHJldHVybiBkZXN0aW5hdGlvbkJ1
cy5yZWxlYXNlKCk7Cit9CisjZW5kaWYgLy8gIVBMQVRGT1JNKE1BQykKKworUGFzc093blB0cjxB
dWRpb0J1cz4gQXVkaW9CdXM6OmNyZWF0ZUJ5TWl4aW5nVG9Nb25vKEF1ZGlvQnVzKiBzb3VyY2VC
dXMpCit7CisgICAgc3dpdGNoIChzb3VyY2VCdXMtPm51bWJlck9mQ2hhbm5lbHMoKSkgeworICAg
IGNhc2UgMToKKyAgICAgICAgLy8gU2ltcGx5IGNyZWF0ZSBhbiBleGFjdCBjb3B5LgorICAgICAg
ICByZXR1cm4gQXVkaW9CdXM6OmNyZWF0ZUJ1ZmZlckZyb21SYW5nZShzb3VyY2VCdXMsIDAsIHNv
dXJjZUJ1cy0+bGVuZ3RoKCkpOworICAgIGNhc2UgMjoKKyAgICAgICAgeworICAgICAgICAgICAg
dW5zaWduZWQgbiA9IHNvdXJjZUJ1cy0+bGVuZ3RoKCk7CisgICAgICAgICAgICBPd25QdHI8QXVk
aW9CdXM+IGRlc3RpbmF0aW9uQnVzKGFkb3B0UHRyKG5ldyBBdWRpb0J1cygxLCBuKSkpOworCisg
ICAgICAgICAgICBmbG9hdCogc291cmNlTCA9IHNvdXJjZUJ1cy0+Y2hhbm5lbCgwKS0+ZGF0YSgp
OworICAgICAgICAgICAgZmxvYXQqIHNvdXJjZVIgPSBzb3VyY2VCdXMtPmNoYW5uZWwoMSktPmRh
dGEoKTsKKyAgICAgICAgICAgIGZsb2F0KiBkZXN0aW5hdGlvbiA9IGRlc3RpbmF0aW9uQnVzLT5j
aGFubmVsKDApLT5kYXRhKCk7CisgICAgICAgIAorICAgICAgICAgICAgLy8gRG8gdGhlIG1vbm8g
bWl4ZG93bi4KKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBuOyArK2kpCisg
ICAgICAgICAgICAgICAgZGVzdGluYXRpb25baV0gPSAwLjUgKiAoc291cmNlTFtpXSArIHNvdXJj
ZVJbaV0pOworCisgICAgICAgICAgICByZXR1cm4gZGVzdGluYXRpb25CdXMucmVsZWFzZSgpOwor
ICAgICAgICB9CisgICAgfQorCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJu
IDA7Cit9CisKIH0gLy8gV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVURJTykKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQnVzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9CdXMuaAkocmV2aXNpb24gODE4
ODcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0J1cy5oCSh3b3JraW5n
IGNvcHkpCkBAIC04OSw2ICs4OSwxOCBAQCBwdWJsaWM6CiAgICAgLy8gMCBtYXkgYmUgcmV0dXJu
ZWQgaWYgdGhlIHJhbmdlIGRvZXMgbm90IGZpdCBpbiB0aGUgc291cmNlQnVmZmVyCiAgICAgc3Rh
dGljIFBhc3NPd25QdHI8QXVkaW9CdXM+IGNyZWF0ZUJ1ZmZlckZyb21SYW5nZShBdWRpb0J1cyog
c291cmNlQnVmZmVyLCB1bnNpZ25lZCBzdGFydEZyYW1lLCB1bnNpZ25lZCBlbmRGcmFtZSk7CiAK
KworI2lmICFQTEFURk9STShNQUMpCisgICAgLy8gQ3JlYXRlcyBhIG5ldyBBdWRpb0J1cyBieSBz
YW1wbGUtcmF0ZSBjb252ZXJ0aW5nIHNvdXJjZUJ1cyB0byB0aGUgbmV3U2FtcGxlUmF0ZS4KKyAg
ICAvLyBzZXRTYW1wbGVSYXRlKCkgbXVzdCBoYXZlIGJlZW4gcHJldmlvdXNseSBjYWxsZWQgb24g
c291cmNlQnVzLgorICAgIC8vIE5vdGU6IHNhbXBsZS1yYXRlIGNvbnZlcnNpb24gaXMgYWxyZWFk
eSBoYW5kbGVkIGluIHRoZSBmaWxlLXJlYWRpbmcgY29kZSBmb3IgdGhlIG1hYyBwb3J0LCBzbyB3
ZSBkb24ndCBuZWVkIHRoaXMuCisgICAgc3RhdGljIFBhc3NPd25QdHI8QXVkaW9CdXM+IGNyZWF0
ZUJ5U2FtcGxlUmF0ZUNvbnZlcnRpbmcoQXVkaW9CdXMqIHNvdXJjZUJ1cywgYm9vbCBtaXhUb01v
bm8sIGRvdWJsZSBuZXdTYW1wbGVSYXRlKTsKKyNlbmRpZgorCisgICAgLy8gQ3JlYXRlcyBhIG5l
dyBBdWRpb0J1cyBieSBtaXhpbmcgYWxsIHRoZSBjaGFubmVscyBkb3duIHRvIG1vbm8uCisgICAg
Ly8gSWYgc291cmNlQnVzIGlzIGFscmVhZHkgbW9ubywgdGhlbiB0aGUgcmV0dXJuZWQgQXVkaW9C
dXMgd2lsbCBzaW1wbHkgYmUgYSBjb3B5LgorICAgIHN0YXRpYyBQYXNzT3duUHRyPEF1ZGlvQnVz
PiBjcmVhdGVCeU1peGluZ1RvTW9ubyhBdWRpb0J1cyogc291cmNlQnVzKTsKKwogICAgIC8vIFNj
YWxlcyBhbGwgc2FtcGxlcyBieSB0aGUgc2FtZSBhbW91bnQuCiAgICAgdm9pZCBzY2FsZShkb3Vi
bGUgc2NhbGUpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGS2Vy
bmVsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRG
S2VybmVsLmNwcAkocmV2aXNpb24gODE4ODcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9IUlRGS2VybmVsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsMTcgKzQ1LDE4IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIC8vIFRoaXMgcmVwcmVzZW50cyB0aGUgaW5pdGlhbCBkZWxheSBi
ZWZvcmUgdGhlIG1vc3QgZW5lcmdldGljIHBhcnQgb2YgdGhlIGltcHVsc2UgcmVzcG9uc2UuCiAv
LyBUaGUgc2FtcGxlLWZyYW1lIGRlbGF5IGlzIHJlbW92ZWQgZnJvbSB0aGUgaW1wdWxzZVAgaW1w
dWxzZSByZXNwb25zZSwgYW5kIHRoaXMgdmFsdWUgIGlzIHJldHVybmVkLgogLy8gdGhlIGxlbmd0
aCBvZiB0aGUgcGFzc2VkIGluIEF1ZGlvQ2hhbm5lbCBtdXN0IGJlIGEgcG93ZXIgb2YgMi4KLXN0
YXRpYyBkb3VibGUgZXh0cmFjdEF2ZXJhZ2VHcm91cERlbGF5KEF1ZGlvQ2hhbm5lbCogY2hhbm5l
bCkKK3N0YXRpYyBkb3VibGUgZXh0cmFjdEF2ZXJhZ2VHcm91cERlbGF5KEF1ZGlvQ2hhbm5lbCog
Y2hhbm5lbCwgc2l6ZV90IGFuYWx5c2lzRkZUU2l6ZSkKIHsKICAgICBBU1NFUlQoY2hhbm5lbCk7
CiAgICAgICAgIAogICAgIGZsb2F0KiBpbXB1bHNlUCA9IGNoYW5uZWwtPmRhdGEoKTsKLSAgICBz
aXplX3QgbGVuZ3RoID0gY2hhbm5lbC0+bGVuZ3RoKCk7CiAgICAgCi0gICAgLy8gQ2hlY2sgdGhh
dCBsZW5ndGggaXMgcG93ZXItb2YtMjsKLSAgICBBU1NFUlQoMVVMIDw8IHN0YXRpY19jYXN0PHVu
c2lnbmVkPihsb2cyKGxlbmd0aCkpID09IGxlbmd0aCk7CisgICAgQVNTRVJUKGNoYW5uZWwtPmxl
bmd0aCgpID49IGFuYWx5c2lzRkZUU2l6ZSk7CisgICAgCisgICAgLy8gQ2hlY2sgZm9yIHBvd2Vy
LW9mLTIuCisgICAgQVNTRVJUKDFVTCA8PCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obG9nMihhbmFs
eXNpc0ZGVFNpemUpKSA9PSBhbmFseXNpc0ZGVFNpemUpOwogCi0gICAgRkZURnJhbWUgZXN0aW1h
dGlvbkZyYW1lKGxlbmd0aCk7CisgICAgRkZURnJhbWUgZXN0aW1hdGlvbkZyYW1lKGFuYWx5c2lz
RkZUU2l6ZSk7CiAgICAgZXN0aW1hdGlvbkZyYW1lLmRvRkZUKGltcHVsc2VQKTsKIAogICAgIGRv
dWJsZSBmcmFtZURlbGF5ID0gZXN0aW1hdGlvbkZyYW1lLmV4dHJhY3RBdmVyYWdlR3JvdXBEZWxh
eSgpOwpAQCAtNzEsNyArNzIsNyBAQCBIUlRGS2VybmVsOjpIUlRGS2VybmVsKEF1ZGlvQ2hhbm5l
bCogY2hhCiAgICAgQVNTRVJUKGNoYW5uZWwpOwogCiAgICAgLy8gRGV0ZXJtaW5lIHRoZSBsZWFk
aW5nIGRlbGF5IChhdmVyYWdlIGdyb3VwIGRlbGF5KSBmb3IgdGhlIHJlc3BvbnNlLgotICAgIG1f
ZnJhbWVEZWxheSA9IGV4dHJhY3RBdmVyYWdlR3JvdXBEZWxheShjaGFubmVsKTsKKyAgICBtX2Zy
YW1lRGVsYXkgPSBleHRyYWN0QXZlcmFnZUdyb3VwRGVsYXkoY2hhbm5lbCwgZmZ0U2l6ZSAvIDIp
OwogCiAgICAgZmxvYXQqIGltcHVsc2VSZXNwb25zZSA9IGNoYW5uZWwtPmRhdGEoKTsKICAgICBz
aXplX3QgcmVzcG9uc2VMZW5ndGggPSBjaGFubmVsLT5sZW5ndGgoKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1NpbmNSZXNhbXBsZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1NpbmNSZXNhbXBsZXIuY3BwCShyZXZpc2lvbiA4
MTg4NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1NpbmNSZXNhbXBsZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw4IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIK
IAorI2lmIEVOQUJMRShXRUJfQVVESU8pCisKICNpbmNsdWRlICJTaW5jUmVzYW1wbGVyLmgiCiAK
ICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgpAQCAtMzM2LDMgKzMzOCw1IEBAIHZvaWQgU2lu
Y1Jlc2FtcGxlcjo6cHJvY2VzcyhmbG9hdCogc291cmMKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVURJTykKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL2Nocm9taXVtL0F1ZGlvQnVzQ2hyb21pdW0uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2Nocm9taXVtL0F1ZGlvQnVzQ2hyb21p
dW0uY3BwCShyZXZpc2lvbiA4MTg4NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L2Nocm9taXVtL0F1ZGlvQnVzQ2hyb21pdW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiwyMiAr
MzYsMzAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBQYXNzT3duUHRyPEF1ZGlvQnVzPiBBdWRp
b0J1czo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoY29uc3QgY2hhciogbmFtZSwgZG91YmxlIHNhbXBs
ZVJhdGUpCiB7Ci0gICAgcmV0dXJuIFBsYXRmb3JtQnJpZGdlOjpsb2FkUGxhdGZvcm1BdWRpb1Jl
c291cmNlKG5hbWUsIHNhbXBsZVJhdGUpOworICAgIC8vIEZJWE1FOiB0aGUgc2FtcGxlUmF0ZSBw
YXJhbWV0ZXIgaXMgaWdub3JlZC4gSXQgc2hvdWxkIGJlIHJlbW92ZWQgZnJvbSB0aGUgQVBJLgor
ICAgIE93blB0cjxBdWRpb0J1cz4gYXVkaW9CdXMgPSBQbGF0Zm9ybUJyaWRnZTo6bG9hZFBsYXRm
b3JtQXVkaW9SZXNvdXJjZShuYW1lLCBzYW1wbGVSYXRlKTsKKyAgICBpZiAoIWF1ZGlvQnVzLmdl
dCgpKQorICAgICAgICByZXR1cm4gMDsKKyAgICAKKyAgICAvLyBJZiB0aGUgYnVzIGlzIGFscmVh
ZHkgYXQgdGhlIHJlcXVlc3RlZCBzYW1wbGUtcmF0ZSB0aGVuIHJldHVybiBhcyBpcy4KKyAgICBp
ZiAoYXVkaW9CdXMtPnNhbXBsZVJhdGUoKSA9PSBzYW1wbGVSYXRlKQorICAgICAgICByZXR1cm4g
YXVkaW9CdXMucmVsZWFzZSgpOworICAgIAorICAgIHJldHVybiBBdWRpb0J1czo6Y3JlYXRlQnlT
YW1wbGVSYXRlQ29udmVydGluZyhhdWRpb0J1cy5nZXQoKSwgZmFsc2UsIHNhbXBsZVJhdGUpOwog
fQogCiBQYXNzT3duUHRyPEF1ZGlvQnVzPiBjcmVhdGVCdXNGcm9tSW5NZW1vcnlBdWRpb0ZpbGUo
Y29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IGRhdGFTaXplLCBib29sIG1peFRvTW9ubywgZG91Ymxl
IHNhbXBsZVJhdGUpCiB7CisgICAgLy8gRklYTUU6IHRoZSBzYW1wbGVSYXRlIHBhcmFtZXRlciBp
cyBpZ25vcmVkLiBJdCBzaG91bGQgYmUgcmVtb3ZlZCBmcm9tIHRoZSBBUEkuCiAgICAgT3duUHRy
PEF1ZGlvQnVzPiBhdWRpb0J1cyA9IFBsYXRmb3JtQnJpZGdlOjpkZWNvZGVBdWRpb0ZpbGVEYXRh
KHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihkYXRhKSwgZGF0YVNpemUsIHNhbXBsZVJhdGUpOwot
ICAgIGlmIChhdWRpb0J1cy5nZXQoKSAmJiBhdWRpb0J1cy0+bnVtYmVyT2ZDaGFubmVscygpID09
IDIgJiYgbWl4VG9Nb25vKSB7Ci0gICAgICAgIE93blB0cjxBdWRpb0J1cz4gbW9ub0F1ZGlvQnVz
ID0gYWRvcHRQdHIobmV3IEF1ZGlvQnVzKDEsIGF1ZGlvQnVzLT5sZW5ndGgoKSkpOwotCi0gICAg
ICAgIC8vIEZJWE1FOiBBdWRpb0J1czo6Y29weUZyb20oKSBzaG91bGQgYmUgYWJsZSB0byBkbyBh
IGRvd25taXggdG8gbW9uby4KLSAgICAgICAgLy8gZm9yIG5vdyBzaW1wbHkgY29weSB0aGUgbGVm
dCBjaGFubmVsLgotICAgICAgICBtb25vQXVkaW9CdXMtPmNoYW5uZWwoMCktPmNvcHlGcm9tKGF1
ZGlvQnVzLT5jaGFubmVsKDApKTsKLSAgICAgICAgcmV0dXJuIG1vbm9BdWRpb0J1cy5yZWxlYXNl
KCk7Ci0gICAgfQorICAgIGlmICghYXVkaW9CdXMuZ2V0KCkpCisgICAgICByZXR1cm4gMDsKKyAg
ICAgIAorICAgIC8vIElmIHRoZSBidXMgbmVlZHMgbm8gY29udmVyc2lvbiB0aGVuIHJldHVybiBh
cyBpcy4KKyAgICBpZiAoKCFtaXhUb01vbm8gfHwgYXVkaW9CdXMtPm51bWJlck9mQ2hhbm5lbHMo
KSA9PSAxKSAmJiBhdWRpb0J1cy0+c2FtcGxlUmF0ZSgpID09IHNhbXBsZVJhdGUpCisgICAgICAg
IHJldHVybiBhdWRpb0J1cy5yZWxlYXNlKCk7CiAgICAgCi0gICAgcmV0dXJuIGF1ZGlvQnVzLnJl
bGVhc2UoKTsKKyAgICByZXR1cm4gQXVkaW9CdXM6OmNyZWF0ZUJ5U2FtcGxlUmF0ZUNvbnZlcnRp
bmcoYXVkaW9CdXMuZ2V0KCksIG1peFRvTW9ubywgc2FtcGxlUmF0ZSk7ICAgIAogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>