<?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>36906</bug_id>
          
          <creation_ts>2010-03-31 16:22:36 -0700</creation_ts>
          <short_desc>(non-generated) code should only use CanvasRenderingContext::canvas as a CanvasSurface.</short_desc>
          <delta_ts>2010-04-02 13:49:50 -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>All</rep_platform>
          <op_sys>All</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>
          <dependson>37042</dependson>
          <blocked>34909</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="David Levin">levin</reporter>
          <assigned_to name="David Levin">levin</assigned_to>
          <cc>darin</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>206796</commentid>
    <comment_count>0</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2010-03-31 16:22:36 -0700</bug_when>
    <thetext>&quot;non-generated&quot; because this change will not touch the idl.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207423</commentid>
    <comment_count>1</comment_count>
      <attachid>52342</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2010-04-01 14:53:54 -0700</bug_when>
    <thetext>Created attachment 52342
Proposed fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207429</commentid>
    <comment_count>2</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-04-01 14:59:32 -0700</bug_when>
    <thetext>Attachment 52342 did not build on qt:
Build output: http://webkit-commit-queue.appspot.com/results/1568160</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207439</commentid>
    <comment_count>3</comment_count>
      <attachid>52344</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2010-04-01 15:22:55 -0700</bug_when>
    <thetext>Created attachment 52344
Proposed fix.

Fixes the qt build problem (and any platform on which dashboard support isn&apos;t enabled).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207471</commentid>
    <comment_count>4</comment_count>
      <attachid>52344</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-04-01 16:25:57 -0700</bug_when>
    <thetext>Comment on attachment 52344
Proposed fix.

&gt; +RenderBox* CanvasSurface::domRenderBox() const

&gt; +RenderStyle* CanvasSurface::domComputedStyle()

Why do these two function names start with the prefix, DOM? Would the names be ambiguous or confusing without it? I suggest removing it.

&gt; +CanvasRenderingContext2D::CanvasRenderingContext2D(HTMLCanvasElement* canvas, bool inCompatMode, bool usesDashbardCompatibilityMode)

I don&apos;t think there&apos;s enough context here for the names inCompatMode and m_inCompatMode. In WebCore::Document it&apos;s already a pretty weak name, but here it&apos;s even weaker. I think usesCompatParseModeForCSS would be better. You might be able to think of something even better.

&gt; +    // Silence unused warnings when dashboard support isn&apos;t enabled.
&gt; +    ((void) usesDashbardCompatibilityMode);

This should be:

#if !ENABLE(DASHBOARD_SUPPORT)
    ASSERT_UNUSED(usesDashboardCompatibilityMode, !usesDashboardCompatibilityMode);
#endif

The &quot;cast to void&quot; unused parameter idiom should never be used directly, only through either the UNUSED_PARAM or ASSERT_UNUSED macro.

review- primarily because of the cast to void</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208029</commentid>
    <comment_count>5</comment_count>
      <attachid>52443</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2010-04-02 13:14:52 -0700</bug_when>
    <thetext>Created attachment 52443
Proposed fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208032</commentid>
    <comment_count>6</comment_count>
      <attachid>52444</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2010-04-02 13:18:09 -0700</bug_when>
    <thetext>Created attachment 52444
Proposed fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208034</commentid>
    <comment_count>7</comment_count>
      <attachid>52443</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-04-02 13:19:49 -0700</bug_when>
    <thetext>Comment on attachment 52443
Proposed fix.

You forgot to set review? on this. Or was it intentional? This is only a diff from what you previously posted. Is that to help me see what you did in response to my suggestions?

&gt; +    RenderStyle* computedStyle() {  return HTMLElement::computedStyle(); }

There&apos;s an extra space here after the &quot;{&quot; character.

&gt; -    CSSParser parser(!m_inCompatMode); // Use the parse mode of the canvas&apos; document when parsing CSS.
&gt; +    CSSParser parser(!m_usesCSSCompatibilityParseMode);

Heh, now that I see this I wish we had reversed the sense so it was strict, but that would be inconvenient for the caller, so I retract that suggestion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208035</commentid>
    <comment_count>8</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-04-02 13:19:59 -0700</bug_when>
    <thetext>I see now. Heh, jumped the gun.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208036</commentid>
    <comment_count>9</comment_count>
      <attachid>52444</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-04-02 13:20:51 -0700</bug_when>
    <thetext>Comment on attachment 52444
Proposed fix.

&gt; +    RenderStyle* computedStyle() {  return HTMLElement::computedStyle(); }

Extra space after the &quot;{&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208039</commentid>
    <comment_count>10</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2010-04-02 13:25:14 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 52443 [details])
&gt; You forgot to set review? on this. Or was it intentional? This is only a diff
&gt; from what you previously posted. Is that to help me see what you did in
&gt; response to my suggestions?

No, I goofed when I told git the revision number to do the diff from. Sorry about that (but the change is completely there). (I had a minor error in the ChangeLog that I caught last time when I removed the r?.)

I&apos;ll fix the space issue and commit. Thx!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208043</commentid>
    <comment_count>11</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2010-04-02 13:32:25 -0700</bug_when>
    <thetext>Committed as http://trac.webkit.org/changeset/57020</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208047</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-04-02 13:47:10 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/57020 might have broken Chromium Win Release, Chromium Mac Release, and Chromium Linux Release</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52342</attachid>
            <date>2010-04-01 14:53:54 -0700</date>
            <delta_ts>2010-04-01 15:22:55 -0700</delta_ts>
            <desc>Proposed fix.</desc>
            <filename>bug36906.txt</filename>
            <type>text/plain</type>
            <size>14717</size>
            <attacher name="David Levin">levin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA1Y2YzNzI4Li43MjVkNjY2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTAtMDQt
MDEgIERhdmlkIExldmluICA8bGV2aW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIChub24tZ2VuZXJhdGVkKSBjb2RlIHNob3Vs
ZCBvbmx5IHVzZSBDYW52YXNSZW5kZXJpbmdDb250ZXh0OjpjYW52YXMgYXMgYSBDYW52YXNTdXJm
YWNlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzY5
MDYKKworICAgICAgICAqIGZhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtZ3JhZGllbnQt
YWRkU3RvcC1lcnJvci5qczogQ2hhbmdlZCB0aGUgdGVzdAorICAgICAgICB0byBjcmVhdGUgYSBu
ZXcgY2FudmFzIGFmdGVyIHN3aXRjaGluZyB0byBkYXNoYm9hcmQgY29tcGF0aWJsaXR5IG1vZGUs
IHdoaWNoIGlzCisgICAgICAgIG5lZWRlZCBub3cgdGhhdCB0aGUgY29tcGF0aWJpbGl0eSBtb2Rl
IGlzIGNhY2hlZCBpbiB0aGUgY2FudmFzLgorCiAyMDEwLTAzLTMxICBBbmRyZXcgU2NoZXJrdXMg
IDxzY2hlcmt1c0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRG1pdHJ5IFRp
dG92LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2Nh
bnZhcy1ncmFkaWVudC1hZGRTdG9wLWVycm9yLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMv
c2NyaXB0LXRlc3RzL2NhbnZhcy1ncmFkaWVudC1hZGRTdG9wLWVycm9yLmpzCmluZGV4IGNjODg4
ZjcuLmViNjk4M2IgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10
ZXN0cy9jYW52YXMtZ3JhZGllbnQtYWRkU3RvcC1lcnJvci5qcworKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLWdyYWRpZW50LWFkZFN0b3AtZXJyb3IuanMK
QEAgLTEyLDcgKzEyLDggQEAgaWYgKHRoaXMubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKIH0gZWxz
ZSB7CiAgICAgZGVidWcoIlRoZSBmb2xsb3dpbmcgdGVzdHMgd2lsbCBmYWlsIGluIHRoZSBicm93
c2VyIGFzIHdlIGNhbiBvbmx5IGVuYWJsZSBkYXNoYm9hcmQgY29tcGF0aWJpbGl0eSBtb2RlIGlu
IERSVC4iKQogfQotCisvLyBDcmVhdGUgYSBuZXcgY29udGV4dCBzbyB0aGF0IHdpbGwgYmUgY3Jl
YXRlZCB1c2luZyBkYXNoYm9hcmQgY29tcGF0aWJpbGl0eSBtb2RlLgorY3R4ID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgnY2FudmFzJykuZ2V0Q29udGV4dCgnMmQnKTsKIHZhciBncmFkaWVudCA9
IGN0eC5jcmVhdGVMaW5lYXJHcmFkaWVudCgwLCAwLCAwLCAxMDApOwogc2hvdWxkQmVVbmRlZmlu
ZWQoImdyYWRpZW50LmFkZENvbG9yU3RvcCgxLCAncmdiKE5hTiUsIE5hTiUsIE5hTiUpJykiKTsK
IHZhciBncmFkaWVudCA9IGN0eC5jcmVhdGVSYWRpYWxHcmFkaWVudCgwLCAwLCAwLCAxMDAsIDAs
IDApOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwpp
bmRleCA5M2ZhNTc3Li43ODUzY2M0IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDEwLTA0LTAxICBEYXZpZCBM
ZXZpbiAgPGxldmluQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAobm9uLWdlbmVyYXRlZCkgY29kZSBzaG91bGQgb25seSB1c2Ug
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDo6Y2FudmFzIGFzIGEgQ2FudmFzU3VyZmFjZS4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM2OTA2CisKKyAgICAg
ICAgKiBkb20vQ2FudmFzU3VyZmFjZS5jcHA6IEFkZGVkIG1ldGhvZCBmb3IgaXRlbXMgdGhhdCB3
ZXJlIGRlcGVuZGluZyBvbgorICAgICAgICBDYW52YXNSZW5kZXJpbmdDb250ZXh0OjpjYW52YXMo
KSBiZWluZyBhbiBIVE1MRWxlbWVudCgpLCBzbyB0aGF0IGl0IGNhbiBiZQorICAgICAgICBkZWFs
IHdpdGggaW4gb25lIHBsYWNlLgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzU3VyZmFjZTo6c2Vj
dXJpdHlPcmlnaW4pOiBPbmx5IHVzZWQgYnkgbWV0aG9kcyB0aGF0IGFyZQorICAgICAgICBvbmx5
IHJ1biBpbiB0aGUgZG9jdW1lbnQgY29udGV4dC4KKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1N1
cmZhY2U6OmRvbVJlbmRlckJveCk6IFdpbGwgbGlrZWx5IHJldHVybiAwIGluIGEgd29ya2VyIGNv
bnRleHQuCisgICAgICAgIChXZWJDb3JlOjpDYW52YXNTdXJmYWNlOjpkb21Db21wdXRlZFN0eWxl
KTogVXNlZCBieSBzZXRGb250LiBUQkQgZm9yIHRoZSB3b3JrZXIgY29udGV4dC4KKyAgICAgICAg
KFdlYkNvcmU6OkNhbnZhc1N1cmZhY2U6OnN0eWxlU2VsZWN0b3IpOiBVc2VkIGJ5IHNldEZvbnQu
IFRCRCBmb3IgdGhlIHdvcmtlciBjb250ZXh0LgorICAgICAgICAqIGRvbS9DYW52YXNTdXJmYWNl
Lmg6IERlY2xhcmF0aW9uIGFkZGl0aW9ucy4KKyAgICAgICAgKiBodG1sL0hUTUxDYW52YXNFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDYW52YXNFbGVtZW50OjpnZXRDb250ZXh0
KTogUGFzc2luZyBpbiBzb21lIGluZm9ybWF0aW9uIGludG8KKyAgICAgICAgdGhlIENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRCBjb25zdHJ1Y3RvciB0byBlbGltaW5hdGUgc29tZSB1c2VzIG9mIGRv
Y3VtZW50CisgICAgICAgIGluc2lkZSBvZiB0aGUgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEIGNs
YXNzLgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6
IEFsbCBvZiB0aGVzZSBjaGFuZ2VzIGFyZSBhYm91dAorICAgICAgICByZW1vdmluZyBkb2N1bWVu
dCB1c2FnZSBlaXRoZXIgYnkgdXNpbmcgYSBib29sIHRoYXQgaXMgc2V0IGluIHRoZSBjb25zdHJ1
Y3RvciBvcgorICAgICAgICBieSBjYWxsaW5nIG9uZSBvZiB0aGUgbmV3IG1ldGhvZHMgYWRkZWQg
dG8gQ2FudmFzU3VyZmFjZS4KKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRDo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRDo6Y2xlYXJQYXRoRm9yRGFzaGJvYXJkQmFja3dhcmRDb21wYXRp
YmlsaXR5TW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6
OmNoZWNrT3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RDo6cHJlcGFyZUdyYWRpZW50Rm9yRGFzaGJvYXJkKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRDo6Y3JlYXRlUGF0dGVybik6CisgICAgICAgIChXZWJDb3JlOjpD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldEZvbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3VGV4dEludGVybmFsKToKKyAgICAgICAgKiBodG1s
L2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaDoKKyAgICAgICAgKiBodG1sL2NhbnZh
cy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwOiBSZW1vdmVkIHNvbWUgZHVwbGljYXRlIGluY2x1
ZGVzLgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjptYXJrQ29udGV4
dENoYW5nZWQpOiBSZW1vdmVkIGFueSB1c2FnZSBvZiB0aGUgZmFjdCB0aGF0CisgICAgICAgIGNh
bnZhcygpIGlzIGFuIEhUTUxFbGVtZW50IGJ5IGNhbGxpbmcgYSBDYW52YXNTdXJmYWNlIG1ldGhv
ZC4KKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6cmVzaGFwZSk6IERp
dHRvLgorCiAyMDEwLTAzLTMxICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gRmlzaGVyLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20v
Q2FudmFzU3VyZmFjZS5jcHAgYi9XZWJDb3JlL2RvbS9DYW52YXNTdXJmYWNlLmNwcAppbmRleCBh
YTBhMGJlLi5lYjkxNTc2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9DYW52YXNTdXJmYWNlLmNw
cAorKysgYi9XZWJDb3JlL2RvbS9DYW52YXNTdXJmYWNlLmNwcApAQCAtMzAsNiArMzAsNyBAQAog
I2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNs
dWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJIVE1MQ2FudmFzRWxlbWVudC5oIgog
I2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgog
CkBAIC0xNTQsNCArMTU1LDI2IEBAIEFmZmluZVRyYW5zZm9ybSBDYW52YXNTdXJmYWNlOjpiYXNl
VHJhbnNmb3JtKCkgY29uc3QKICAgICByZXR1cm4gdHJhbnNmb3JtOwogfQogCisvLyBGSVhNRTog
RXZlcnl0aGluZyBiZWxvdyBoZXJlIHJlbGllcyBvbiBDYW52YXNTdXJmYWNlIHJlYWxseSBiZWlu
ZworLy8gYSBIVE1MQ2FudmFzRWxlbWVudC4KK2NvbnN0IFNlY3VyaXR5T3JpZ2luJiBDYW52YXNT
dXJmYWNlOjpzZWN1cml0eU9yaWdpbigpIGNvbnN0Cit7CisgICAgcmV0dXJuICooc3RhdGljX2Nh
c3Q8Y29uc3QgSFRNTENhbnZhc0VsZW1lbnQqPih0aGlzKS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlP
cmlnaW4oKSk7Cit9CisKK1JlbmRlckJveCogQ2FudmFzU3VyZmFjZTo6ZG9tUmVuZGVyQm94KCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSFRNTENhbnZhc0VsZW1lbnQq
Pih0aGlzKS0+cmVuZGVyQm94KCk7Cit9CisKK1JlbmRlclN0eWxlKiBDYW52YXNTdXJmYWNlOjpk
b21Db21wdXRlZFN0eWxlKCkKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTENhbnZhc0Vs
ZW1lbnQqPih0aGlzKS0+Y29tcHV0ZWRTdHlsZSgpOworfQorCitDU1NTdHlsZVNlbGVjdG9yKiBD
YW52YXNTdXJmYWNlOjpzdHlsZVNlbGVjdG9yKCkKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
SFRNTENhbnZhc0VsZW1lbnQqPih0aGlzKS0+ZG9jdW1lbnQoKS0+c3R5bGVTZWxlY3RvcigpOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9DYW52
YXNTdXJmYWNlLmggYi9XZWJDb3JlL2RvbS9DYW52YXNTdXJmYWNlLmgKaW5kZXggMjJmNzlkMS4u
ZGMxY2NlYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vQ2FudmFzU3VyZmFjZS5oCisrKyBiL1dl
YkNvcmUvZG9tL0NhbnZhc1N1cmZhY2UuaApAQCAtNDMsNiArNDMsMTEgQEAgY2xhc3MgSW1hZ2VC
dWZmZXI7CiBjbGFzcyBJbnRQb2ludDsKIGNsYXNzIFN0cmluZzsKIAorY2xhc3MgQ1NTU3R5bGVT
ZWxlY3RvcjsKK2NsYXNzIFJlbmRlckJveDsKK2NsYXNzIFJlbmRlclN0eWxlOworY2xhc3MgU2Vj
dXJpdHlPcmlnaW47CisKIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CiAKIGNsYXNzIENhbnZh
c1N1cmZhY2UgOiBwdWJsaWMgTm9uY29weWFibGUgewpAQCAtNzIsNiArNzcsMTEgQEAgcHVibGlj
OgogCiAgICAgQWZmaW5lVHJhbnNmb3JtIGJhc2VUcmFuc2Zvcm0oKSBjb25zdDsKIAorICAgIGNv
bnN0IFNlY3VyaXR5T3JpZ2luJiBzZWN1cml0eU9yaWdpbigpIGNvbnN0OworICAgIFJlbmRlckJv
eCogZG9tUmVuZGVyQm94KCkgY29uc3Q7CisgICAgUmVuZGVyU3R5bGUqIGRvbUNvbXB1dGVkU3R5
bGUoKTsKKyAgICBDU1NTdHlsZVNlbGVjdG9yKiBzdHlsZVNlbGVjdG9yKCk7CisKIHByb3RlY3Rl
ZDoKICAgICB2b2lkIHNldFN1cmZhY2VTaXplKGNvbnN0IEludFNpemUmKTsKICAgICBib29sIGhh
c0NyZWF0ZWRJbWFnZUJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1faGFzQ3JlYXRlZEltYWdlQnVm
ZmVyOyB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwIGIv
V2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAppbmRleCA4NjFjOWJiLi41OTdjYTlk
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCisrKyBiL1dl
YkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKQEAgLTEzMyw4ICsxMzMsMTMgQEAgQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dCogSFRNTENhbnZhc0VsZW1lbnQ6OmdldENvbnRleHQoY29uc3Qg
U3RyaW5nJiB0eXBlLCBDYW52YXMKICAgICBpZiAodHlwZSA9PSAiMmQiKSB7CiAgICAgICAgIGlm
IChtX2NvbnRleHQgJiYgIW1fY29udGV4dC0+aXMyZCgpKQogICAgICAgICAgICAgcmV0dXJuIDA7
Ci0gICAgICAgIGlmICghbV9jb250ZXh0KQotICAgICAgICAgICAgbV9jb250ZXh0ID0gbmV3IENh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRCh0aGlzKTsKKyAgICAgICAgaWYgKCFtX2NvbnRleHQpIHsK
KyAgICAgICAgICAgIGJvb2wgdXNlc0Rhc2hiYXJkQ29tcGF0aWJpbGl0eU1vZGUgPSBmYWxzZTsK
KyAgICAgICAgICAgIGlmIChTZXR0aW5ncyogc2V0dGluZ3MgPSBkb2N1bWVudCgpLT5zZXR0aW5n
cygpKQorICAgICAgICAgICAgICAgIHVzZXNEYXNoYmFyZENvbXBhdGliaWxpdHlNb2RlID0gc2V0
dGluZ3MtPnVzZXNEYXNoYm9hcmRCYWNrd2FyZENvbXBhdGliaWxpdHlNb2RlKCk7CisKKyAgICAg
ICAgICAgIG1fY29udGV4dCA9IG5ldyBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQodGhpcywgZG9j
dW1lbnQoKS0+aW5Db21wYXRNb2RlKCksIHVzZXNEYXNoYmFyZENvbXBhdGliaWxpdHlNb2RlKTsK
KyAgICAgICAgfQogICAgICAgICByZXR1cm4gbV9jb250ZXh0LmdldCgpOwogICAgIH0KICNpZiBF
TkFCTEUoM0RfQ0FOVkFTKSAgICAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcCBiL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJELmNwcAppbmRleCA2ZmU3NGY5Li5iNWQzYTNlIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKKysrIGIvV2Vi
Q29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCkBAIC0zOSw3ICsz
OSw2IEBACiAjaW5jbHVkZSAiQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24uaCIKICNpbmNsdWRl
ICJDU1NQcm9wZXJ0eU5hbWVzLmgiCiAjaW5jbHVkZSAiQ1NTU3R5bGVTZWxlY3Rvci5oIgotI2lu
Y2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUg
IkZsb2F0Q29udmVyc2lvbi5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgpAQCAtOTAs
MTEgKzg5LDExIEBAIHByaXZhdGU6CiAgICAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEKiBtX2Nh
bnZhc0NvbnRleHQ7CiB9OwogCi0KLQotQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQoSFRNTENhbnZhc0VsZW1lbnQqIGNhbnZhcykKK0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRDo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEKEhUTUxDYW52YXNFbGVtZW50
KiBjYW52YXMsIGJvb2wgaW5Db21wYXRNb2RlLCBib29sIHVzZXNEYXNoYmFyZENvbXBhdGliaWxp
dHlNb2RlKQogICAgIDogQ2FudmFzUmVuZGVyaW5nQ29udGV4dChjYW52YXMpCiAgICAgLCBtX3N0
YXRlU3RhY2soMSkKKyAgICAsIG1faW5Db21wYXRNb2RlKGluQ29tcGF0TW9kZSkKKyAgICAsIG1f
dXNlc0Rhc2hiYXJkQ29tcGF0aWJpbGl0eU1vZGUodXNlc0Rhc2hiYXJkQ29tcGF0aWJpbGl0eU1v
ZGUpCiB7CiAgICAgLy8gTWFrZSBzdXJlIHRoYXQgZXZlbiBpZiB0aGUgZHJhd2luZ0NvbnRleHQo
KSBoYXMgYSBkaWZmZXJlbnQgZGVmYXVsdAogICAgIC8vIHRoaWNrbmVzcywgaXQgaXMgaW4gc3lu
YyB3aXRoIHRoZSBjYW52YXMgdGhpY2tuZXNzLgpAQCAtNjM2LDkgKzYzNSw4IEBAIHZvaWQgQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEOjpyZWN0KGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHdpZHRo
LCBmbG9hdCBoZWlnaHQpCiAjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQogdm9pZCBDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNsZWFyUGF0aEZvckRhc2hib2FyZEJhY2t3YXJkQ29tcGF0
aWJpbGl0eU1vZGUoKQogewotICAgIGlmIChTZXR0aW5ncyogc2V0dGluZ3MgPSBjYW52YXMoKS0+
ZG9jdW1lbnQoKS0+c2V0dGluZ3MoKSkKLSAgICAgICAgaWYgKHNldHRpbmdzLT51c2VzRGFzaGJv
YXJkQmFja3dhcmRDb21wYXRpYmlsaXR5TW9kZSgpKQotICAgICAgICAgICAgbV9wYXRoLmNsZWFy
KCk7CisgICAgaWYgKG1fdXNlc0Rhc2hiYXJkQ29tcGF0aWJpbGl0eU1vZGUpCisgICAgICAgIG1f
cGF0aC5jbGVhcigpOwogfQogI2VuZGlmCiAKQEAgLTk0MSw3ICs5MzksNyBAQCBzdGF0aWMgaW5s
aW5lIEZsb2F0UmVjdCBub3JtYWxpemVSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKIAogdm9p
ZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNoZWNrT3JpZ2luKGNvbnN0IEtVUkwmIHVybCkK
IHsKLSAgICBpZiAoY2FudmFzKCktPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCktPnRhaW50
c0NhbnZhcyh1cmwpKQorICAgIGlmIChjYW52YXMoKS0+c2VjdXJpdHlPcmlnaW4oKS50YWludHND
YW52YXModXJsKSkKICAgICAgICAgY2FudmFzKCktPnNldE9yaWdpblRhaW50ZWQoKTsKIH0KIApA
QCAtMTE2MSw5ICsxMTU5LDggQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldENv
bXBvc2l0ZU9wZXJhdGlvbihjb25zdCBTdHJpbmcmIG9wZXJhdGlvbikKIHZvaWQgQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjpwcmVwYXJlR3JhZGllbnRGb3JEYXNoYm9hcmQoQ2FudmFzR3JhZGll
bnQqIGdyYWRpZW50KSBjb25zdAogewogI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkKLSAg
ICBpZiAoU2V0dGluZ3MqIHNldHRpbmdzID0gY2FudmFzKCktPmRvY3VtZW50KCktPnNldHRpbmdz
KCkpCi0gICAgICAgIGlmIChzZXR0aW5ncy0+dXNlc0Rhc2hib2FyZEJhY2t3YXJkQ29tcGF0aWJp
bGl0eU1vZGUoKSkKLSAgICAgICAgICAgIGdyYWRpZW50LT5zZXREYXNoYm9hcmRDb21wYXRpYmls
aXR5TW9kZSgpOworICAgIGlmIChtX3VzZXNEYXNoYmFyZENvbXBhdGliaWxpdHlNb2RlKQorICAg
ICAgICBncmFkaWVudC0+c2V0RGFzaGJvYXJkQ29tcGF0aWJpbGl0eU1vZGUoKTsKICNlbHNlCiAg
ICAgVU5VU0VEX1BBUkFNKGdyYWRpZW50KTsKICNlbmRpZgpAQCAtMTIxMSw3ICsxMjA4LDcgQEAg
UGFzc1JlZlB0cjxDYW52YXNQYXR0ZXJuPiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNyZWF0
ZVBhdHRlcm4oSFRNTEltYWdlRWxlbWUKICAgICBpZiAoIWNhY2hlZEltYWdlIHx8ICFpbWFnZS0+
Y2FjaGVkSW1hZ2UoKS0+aW1hZ2UoKSkKICAgICAgICAgcmV0dXJuIENhbnZhc1BhdHRlcm46OmNy
ZWF0ZShJbWFnZTo6bnVsbEltYWdlKCksIHJlcGVhdFgsIHJlcGVhdFksIHRydWUpOwogCi0gICAg
Ym9vbCBvcmlnaW5DbGVhbiA9ICFjYW52YXMoKS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4o
KS0+dGFpbnRzQ2FudmFzKEtVUkwoS1VSTCgpLCBjYWNoZWRJbWFnZS0+dXJsKCkpKSAmJiBjYWNo
ZWRJbWFnZS0+aW1hZ2UoKS0+aGFzU2luZ2xlU2VjdXJpdHlPcmlnaW4oKTsKKyAgICBib29sIG9y
aWdpbkNsZWFuID0gIWNhbnZhcygpLT5zZWN1cml0eU9yaWdpbigpLnRhaW50c0NhbnZhcyhLVVJM
KEtVUkwoKSwgY2FjaGVkSW1hZ2UtPnVybCgpKSkgJiYgY2FjaGVkSW1hZ2UtPmltYWdlKCktPmhh
c1NpbmdsZVNlY3VyaXR5T3JpZ2luKCk7CiAgICAgcmV0dXJuIENhbnZhc1BhdHRlcm46OmNyZWF0
ZShjYWNoZWRJbWFnZS0+aW1hZ2UoKSwgcmVwZWF0WCwgcmVwZWF0WSwgb3JpZ2luQ2xlYW4pOwog
fQogCkBAIC0xMzY5LDcgKzEzNjYsNyBAQCBTdHJpbmcgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
Ojpmb250KCkgY29uc3QKIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRGb250KGNv
bnN0IFN0cmluZyYgbmV3Rm9udCkKIHsKICAgICBSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFy
YXRpb24+IHRlbXBEZWNsID0gQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OmNyZWF0ZSgpOwot
ICAgIENTU1BhcnNlciBwYXJzZXIoIWNhbnZhcygpLT5kb2N1bWVudCgpLT5pbkNvbXBhdE1vZGUo
KSk7IC8vIFVzZSB0aGUgcGFyc2UgbW9kZSBvZiB0aGUgY2FudmFzJyBkb2N1bWVudCB3aGVuIHBh
cnNpbmcgQ1NTLgorICAgIENTU1BhcnNlciBwYXJzZXIoIW1faW5Db21wYXRNb2RlKTsgLy8gVXNl
IHRoZSBwYXJzZSBtb2RlIG9mIHRoZSBjYW52YXMnIGRvY3VtZW50IHdoZW4gcGFyc2luZyBDU1Mu
CiAgICAgICAgIAogICAgIFN0cmluZyBkZWNsYXJhdGlvblRleHQoImZvbnQ6ICIpOwogICAgIGRl
Y2xhcmF0aW9uVGV4dCArPSBuZXdGb250OwpAQCAtMTM4MywxMSArMTM4MCwxMSBAQCB2b2lkIENh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0Rm9udChjb25zdCBTdHJpbmcmIG5ld0ZvbnQpCiAg
ICAgLy8gTWFwIHRoZSA8Y2FudmFzPiBmb250IGludG8gdGhlIHRleHQgc3R5bGUuIElmIHRoZSBm
b250IHVzZXMga2V5d29yZHMgbGlrZSBsYXJnZXIvc21hbGxlciwgdGhlc2Ugd2lsbCB3b3JrCiAg
ICAgLy8gcmVsYXRpdmUgdG8gdGhlIGNhbnZhcy4KICAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IG5l
d1N0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZSgpOwotICAgIGlmIChjYW52YXMoKS0+Y29tcHV0
ZWRTdHlsZSgpKQotICAgICAgICBuZXdTdHlsZS0+c2V0Rm9udERlc2NyaXB0aW9uKGNhbnZhcygp
LT5jb21wdXRlZFN0eWxlKCktPmZvbnREZXNjcmlwdGlvbigpKTsKKyAgICBpZiAoUmVuZGVyU3R5
bGUqIGNvbXB1dGVkU3R5bGUgPSBjYW52YXMoKS0+ZG9tQ29tcHV0ZWRTdHlsZSgpKQorICAgICAg
ICBuZXdTdHlsZS0+c2V0Rm9udERlc2NyaXB0aW9uKGNvbXB1dGVkU3R5bGUtPmZvbnREZXNjcmlw
dGlvbigpKTsKIAogICAgIC8vIE5vdyBtYXAgdGhlIGZvbnQgcHJvcGVydHkgaW50byB0aGUgc3R5
bGUuCi0gICAgQ1NTU3R5bGVTZWxlY3Rvciogc3R5bGVTZWxlY3RvciA9IGNhbnZhcygpLT5kb2N1
bWVudCgpLT5zdHlsZVNlbGVjdG9yKCk7CisgICAgQ1NTU3R5bGVTZWxlY3Rvciogc3R5bGVTZWxl
Y3RvciA9IGNhbnZhcygpLT5zdHlsZVNlbGVjdG9yKCk7CiAgICAgc3R5bGVTZWxlY3Rvci0+YXBw
bHlQcm9wZXJ0eVRvU3R5bGUoQ1NTUHJvcGVydHlGb250LCB0ZW1wRGVjbC0+Z2V0UHJvcGVydHlD
U1NWYWx1ZShDU1NQcm9wZXJ0eUZvbnQpLmdldCgpLCBuZXdTdHlsZS5nZXQoKSk7CiAgICAgCiAg
ICAgc3RhdGUoKS5tX2ZvbnQgPSBuZXdTdHlsZS0+Zm9udCgpOwpAQCAtMTQ2MSw4ICsxNDU4LDkg
QEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdUZXh0SW50ZXJuYWwoY29uc3Qg
U3RyaW5nJiB0ZXh0LCBmbG9hdCB4LCBmbG8KICAgICAvLyBGSVhNRTogSGFuZGxlIG1heFdpZHRo
LgogICAgIC8vIEZJWE1FOiBOZWVkIHRvIHR1cm4gb2ZmIGZvbnQgc21vb3RoaW5nLgogCi0gICAg
Ym9vbCBydGwgPSBjYW52YXMoKS0+Y29tcHV0ZWRTdHlsZSgpID8gY2FudmFzKCktPmNvbXB1dGVk
U3R5bGUoKS0+ZGlyZWN0aW9uKCkgPT0gUlRMIDogZmFsc2U7Ci0gICAgYm9vbCBvdmVycmlkZSA9
IGNhbnZhcygpLT5jb21wdXRlZFN0eWxlKCkgPyBjYW52YXMoKS0+Y29tcHV0ZWRTdHlsZSgpLT51
bmljb2RlQmlkaSgpID09IE92ZXJyaWRlIDogZmFsc2U7CisgICAgUmVuZGVyU3R5bGUqIGNvbXB1
dGVkU3R5bGUgPSBjYW52YXMoKS0+ZG9tQ29tcHV0ZWRTdHlsZSgpOworICAgIGJvb2wgcnRsID0g
Y29tcHV0ZWRTdHlsZSA/IGNvbXB1dGVkU3R5bGUtPmRpcmVjdGlvbigpID09IFJUTCA6IGZhbHNl
OworICAgIGJvb2wgb3ZlcnJpZGUgPSBjb21wdXRlZFN0eWxlID8gY29tcHV0ZWRTdHlsZS0+dW5p
Y29kZUJpZGkoKSA9PSBPdmVycmlkZSA6IGZhbHNlOwogCiAgICAgdW5zaWduZWQgbGVuZ3RoID0g
dGV4dC5sZW5ndGgoKTsKICAgICBjb25zdCBVQ2hhciogc3RyaW5nID0gdGV4dC5jaGFyYWN0ZXJz
KCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRC5oIGIvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaApp
bmRleCA1NTNmZmQyLi4zZGU5MmIxIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oCisrKyBiL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJELmgKQEAgLTU3LDcgKzU3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiAgICAgY2xhc3MgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEIDogcHVibGljIENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQgewogICAgIHB1YmxpYzoKLSAgICAgICAgQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEKEhUTUxDYW52YXNFbGVtZW50Kik7CisgICAgICAgIENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRChIVE1MQ2FudmFzRWxlbWVudCosIGJvb2wgaW5Db21wYXRNb2RlLCBib29sIHVzZXNEYXNo
YmFyZENvbXBhdGliaWxpdHlNb2RlKTsKIAogICAgICAgICB2aXJ0dWFsIH5DYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQoKTsKICAgICAgICAgCkBAIC0yNjMsNiArMjYzLDggQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICB2b2lkIGNoZWNrT3JpZ2luKGNvbnN0IFN0cmluZyYpOwogCiAgICAg
ICAgIFZlY3RvcjxTdGF0ZSwgMT4gbV9zdGF0ZVN0YWNrOworICAgICAgICBib29sIG1faW5Db21w
YXRNb2RlOworICAgICAgICBib29sIG1fdXNlc0Rhc2hiYXJkQ29tcGF0aWJpbGl0eU1vZGU7CiAg
ICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwIGIvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IDQwNTlkN2YuLmNkNDc2NjcgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTQ2LDEyICs0
Niw2IEBACiAjaW5jbHVkZSAiV2ViR0xUZXh0dXJlLmgiCiAjaW5jbHVkZSAiV2ViR0xTaGFkZXIu
aCIKICNpbmNsdWRlICJXZWJHTFVuaWZvcm1Mb2NhdGlvbi5oIgotI2luY2x1ZGUgIkhUTUxDYW52
YXNFbGVtZW50LmgiCi0jaW5jbHVkZSAiSFRNTEltYWdlRWxlbWVudC5oIgotI2luY2x1ZGUgIklt
YWdlQnVmZmVyLmgiCi0jaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKLSNpbmNsdWRlICJSZW5k
ZXJCb3guaCIKLSNpbmNsdWRlICJSZW5kZXJMYXllci5oIgogCiAjaW5jbHVkZSA8d3RmL0J5dGVB
cnJheS5oPgogCkBAIC0xMDgsOSArMTAyLDEwIEBAIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6fldl
YkdMUmVuZGVyaW5nQ29udGV4dCgpCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6bWFya0Nv
bnRleHRDaGFuZ2VkKCkKIHsKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0gICAg
aWYgKGNhbnZhcygpLT5yZW5kZXJCb3goKSAmJiBjYW52YXMoKS0+cmVuZGVyQm94KCktPmhhc0xh
eWVyKCkgJiYgY2FudmFzKCktPnJlbmRlckJveCgpLT5sYXllcigpLT5oYXNBY2NlbGVyYXRlZENv
bXBvc2l0aW5nKCkpIHsKLSAgICAgICAgY2FudmFzKCktPnJlbmRlckJveCgpLT5sYXllcigpLT5y
ZW5kZXJlckNvbnRlbnRDaGFuZ2VkKCk7Ci0gICAgfSBlbHNlIHsKKyAgICBSZW5kZXJCb3gqIHJl
bmRlckJveCA9IGNhbnZhcygpLT5kb21SZW5kZXJCb3goKTsKKyAgICBpZiAocmVuZGVyQm94ICYm
IHJlbmRlckJveC0+aGFzTGF5ZXIoKSAmJiByZW5kZXJCb3gtPmxheWVyKCktPmhhc0FjY2VsZXJh
dGVkQ29tcG9zaXRpbmcoKSkKKyAgICAgICAgcmVuZGVyQm94LT5sYXllcigpLT5yZW5kZXJlckNv
bnRlbnRDaGFuZ2VkKCk7CisgICAgZWxzZSB7CiAjZW5kaWYKICAgICAgICAgaWYgKCFtX21hcmtl
ZENhbnZhc0RpcnR5KSB7CiAgICAgICAgICAgICAvLyBNYWtlIHN1cmUgdGhlIGNhbnZhcydzIGlt
YWdlIGJ1ZmZlciBpcyBhbGxvY2F0ZWQuCkBAIC0xNDIsOCArMTM3LDkgQEAgdm9pZCBXZWJHTFJl
bmRlcmluZ0NvbnRleHQ6OnJlc2hhcGUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQogewogICAgIGlm
IChtX25lZWRzVXBkYXRlKSB7CiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotICAg
ICAgICBpZiAoY2FudmFzKCktPnJlbmRlckJveCgpICYmIGNhbnZhcygpLT5yZW5kZXJCb3goKS0+
aGFzTGF5ZXIoKSkKLSAgICAgICAgICAgIGNhbnZhcygpLT5yZW5kZXJCb3goKS0+bGF5ZXIoKS0+
cmVuZGVyZXJDb250ZW50Q2hhbmdlZCgpOworICAgICAgICBSZW5kZXJCb3gqIHJlbmRlckJveCA9
IGNhbnZhcygpLT5kb21SZW5kZXJCb3goKTsKKyAgICAgICAgaWYgKHJlbmRlckJveCAmJiByZW5k
ZXJCb3gtPmhhc0xheWVyKCkpCisgICAgICAgICAgICByZW5kZXJCb3gtPmxheWVyKCktPnJlbmRl
cmVyQ29udGVudENoYW5nZWQoKTsKICNlbmRpZgogICAgICAgICBtX25lZWRzVXBkYXRlID0gZmFs
c2U7CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52344</attachid>
            <date>2010-04-01 15:22:55 -0700</date>
            <delta_ts>2010-04-02 13:14:52 -0700</delta_ts>
            <desc>Proposed fix.</desc>
            <filename>bug36906.txt</filename>
            <type>text/plain</type>
            <size>14982</size>
            <attacher name="David Levin">levin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA1Y2YzNzI4Li43MjVkNjY2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTAtMDQt
MDEgIERhdmlkIExldmluICA8bGV2aW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIChub24tZ2VuZXJhdGVkKSBjb2RlIHNob3Vs
ZCBvbmx5IHVzZSBDYW52YXNSZW5kZXJpbmdDb250ZXh0OjpjYW52YXMgYXMgYSBDYW52YXNTdXJm
YWNlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzY5
MDYKKworICAgICAgICAqIGZhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtZ3JhZGllbnQt
YWRkU3RvcC1lcnJvci5qczogQ2hhbmdlZCB0aGUgdGVzdAorICAgICAgICB0byBjcmVhdGUgYSBu
ZXcgY2FudmFzIGFmdGVyIHN3aXRjaGluZyB0byBkYXNoYm9hcmQgY29tcGF0aWJsaXR5IG1vZGUs
IHdoaWNoIGlzCisgICAgICAgIG5lZWRlZCBub3cgdGhhdCB0aGUgY29tcGF0aWJpbGl0eSBtb2Rl
IGlzIGNhY2hlZCBpbiB0aGUgY2FudmFzLgorCiAyMDEwLTAzLTMxICBBbmRyZXcgU2NoZXJrdXMg
IDxzY2hlcmt1c0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRG1pdHJ5IFRp
dG92LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2Nh
bnZhcy1ncmFkaWVudC1hZGRTdG9wLWVycm9yLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMv
c2NyaXB0LXRlc3RzL2NhbnZhcy1ncmFkaWVudC1hZGRTdG9wLWVycm9yLmpzCmluZGV4IGNjODg4
ZjcuLmViNjk4M2IgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10
ZXN0cy9jYW52YXMtZ3JhZGllbnQtYWRkU3RvcC1lcnJvci5qcworKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLWdyYWRpZW50LWFkZFN0b3AtZXJyb3IuanMK
QEAgLTEyLDcgKzEyLDggQEAgaWYgKHRoaXMubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKIH0gZWxz
ZSB7CiAgICAgZGVidWcoIlRoZSBmb2xsb3dpbmcgdGVzdHMgd2lsbCBmYWlsIGluIHRoZSBicm93
c2VyIGFzIHdlIGNhbiBvbmx5IGVuYWJsZSBkYXNoYm9hcmQgY29tcGF0aWJpbGl0eSBtb2RlIGlu
IERSVC4iKQogfQotCisvLyBDcmVhdGUgYSBuZXcgY29udGV4dCBzbyB0aGF0IHdpbGwgYmUgY3Jl
YXRlZCB1c2luZyBkYXNoYm9hcmQgY29tcGF0aWJpbGl0eSBtb2RlLgorY3R4ID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgnY2FudmFzJykuZ2V0Q29udGV4dCgnMmQnKTsKIHZhciBncmFkaWVudCA9
IGN0eC5jcmVhdGVMaW5lYXJHcmFkaWVudCgwLCAwLCAwLCAxMDApOwogc2hvdWxkQmVVbmRlZmlu
ZWQoImdyYWRpZW50LmFkZENvbG9yU3RvcCgxLCAncmdiKE5hTiUsIE5hTiUsIE5hTiUpJykiKTsK
IHZhciBncmFkaWVudCA9IGN0eC5jcmVhdGVSYWRpYWxHcmFkaWVudCgwLCAwLCAwLCAxMDAsIDAs
IDApOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwpp
bmRleCA5M2ZhNTc3Li43ODUzY2M0IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDEwLTA0LTAxICBEYXZpZCBM
ZXZpbiAgPGxldmluQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAobm9uLWdlbmVyYXRlZCkgY29kZSBzaG91bGQgb25seSB1c2Ug
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDo6Y2FudmFzIGFzIGEgQ2FudmFzU3VyZmFjZS4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM2OTA2CisKKyAgICAg
ICAgKiBkb20vQ2FudmFzU3VyZmFjZS5jcHA6IEFkZGVkIG1ldGhvZCBmb3IgaXRlbXMgdGhhdCB3
ZXJlIGRlcGVuZGluZyBvbgorICAgICAgICBDYW52YXNSZW5kZXJpbmdDb250ZXh0OjpjYW52YXMo
KSBiZWluZyBhbiBIVE1MRWxlbWVudCgpLCBzbyB0aGF0IGl0IGNhbiBiZQorICAgICAgICBkZWFs
IHdpdGggaW4gb25lIHBsYWNlLgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzU3VyZmFjZTo6c2Vj
dXJpdHlPcmlnaW4pOiBPbmx5IHVzZWQgYnkgbWV0aG9kcyB0aGF0IGFyZQorICAgICAgICBvbmx5
IHJ1biBpbiB0aGUgZG9jdW1lbnQgY29udGV4dC4KKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1N1
cmZhY2U6OmRvbVJlbmRlckJveCk6IFdpbGwgbGlrZWx5IHJldHVybiAwIGluIGEgd29ya2VyIGNv
bnRleHQuCisgICAgICAgIChXZWJDb3JlOjpDYW52YXNTdXJmYWNlOjpkb21Db21wdXRlZFN0eWxl
KTogVXNlZCBieSBzZXRGb250LiBUQkQgZm9yIHRoZSB3b3JrZXIgY29udGV4dC4KKyAgICAgICAg
KFdlYkNvcmU6OkNhbnZhc1N1cmZhY2U6OnN0eWxlU2VsZWN0b3IpOiBVc2VkIGJ5IHNldEZvbnQu
IFRCRCBmb3IgdGhlIHdvcmtlciBjb250ZXh0LgorICAgICAgICAqIGRvbS9DYW52YXNTdXJmYWNl
Lmg6IERlY2xhcmF0aW9uIGFkZGl0aW9ucy4KKyAgICAgICAgKiBodG1sL0hUTUxDYW52YXNFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDYW52YXNFbGVtZW50OjpnZXRDb250ZXh0
KTogUGFzc2luZyBpbiBzb21lIGluZm9ybWF0aW9uIGludG8KKyAgICAgICAgdGhlIENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRCBjb25zdHJ1Y3RvciB0byBlbGltaW5hdGUgc29tZSB1c2VzIG9mIGRv
Y3VtZW50CisgICAgICAgIGluc2lkZSBvZiB0aGUgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEIGNs
YXNzLgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6
IEFsbCBvZiB0aGVzZSBjaGFuZ2VzIGFyZSBhYm91dAorICAgICAgICByZW1vdmluZyBkb2N1bWVu
dCB1c2FnZSBlaXRoZXIgYnkgdXNpbmcgYSBib29sIHRoYXQgaXMgc2V0IGluIHRoZSBjb25zdHJ1
Y3RvciBvcgorICAgICAgICBieSBjYWxsaW5nIG9uZSBvZiB0aGUgbmV3IG1ldGhvZHMgYWRkZWQg
dG8gQ2FudmFzU3VyZmFjZS4KKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRDo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRDo6Y2xlYXJQYXRoRm9yRGFzaGJvYXJkQmFja3dhcmRDb21wYXRp
YmlsaXR5TW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6
OmNoZWNrT3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RDo6cHJlcGFyZUdyYWRpZW50Rm9yRGFzaGJvYXJkKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRDo6Y3JlYXRlUGF0dGVybik6CisgICAgICAgIChXZWJDb3JlOjpD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldEZvbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3VGV4dEludGVybmFsKToKKyAgICAgICAgKiBodG1s
L2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaDoKKyAgICAgICAgKiBodG1sL2NhbnZh
cy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwOiBSZW1vdmVkIHNvbWUgZHVwbGljYXRlIGluY2x1
ZGVzLgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjptYXJrQ29udGV4
dENoYW5nZWQpOiBSZW1vdmVkIGFueSB1c2FnZSBvZiB0aGUgZmFjdCB0aGF0CisgICAgICAgIGNh
bnZhcygpIGlzIGFuIEhUTUxFbGVtZW50IGJ5IGNhbGxpbmcgYSBDYW52YXNTdXJmYWNlIG1ldGhv
ZC4KKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6cmVzaGFwZSk6IERp
dHRvLgorCiAyMDEwLTAzLTMxICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gRmlzaGVyLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20v
Q2FudmFzU3VyZmFjZS5jcHAgYi9XZWJDb3JlL2RvbS9DYW52YXNTdXJmYWNlLmNwcAppbmRleCBh
YTBhMGJlLi5lYjkxNTc2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9DYW52YXNTdXJmYWNlLmNw
cAorKysgYi9XZWJDb3JlL2RvbS9DYW52YXNTdXJmYWNlLmNwcApAQCAtMzAsNiArMzAsNyBAQAog
I2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNs
dWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJIVE1MQ2FudmFzRWxlbWVudC5oIgog
I2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgog
CkBAIC0xNTQsNCArMTU1LDI2IEBAIEFmZmluZVRyYW5zZm9ybSBDYW52YXNTdXJmYWNlOjpiYXNl
VHJhbnNmb3JtKCkgY29uc3QKICAgICByZXR1cm4gdHJhbnNmb3JtOwogfQogCisvLyBGSVhNRTog
RXZlcnl0aGluZyBiZWxvdyBoZXJlIHJlbGllcyBvbiBDYW52YXNTdXJmYWNlIHJlYWxseSBiZWlu
ZworLy8gYSBIVE1MQ2FudmFzRWxlbWVudC4KK2NvbnN0IFNlY3VyaXR5T3JpZ2luJiBDYW52YXNT
dXJmYWNlOjpzZWN1cml0eU9yaWdpbigpIGNvbnN0Cit7CisgICAgcmV0dXJuICooc3RhdGljX2Nh
c3Q8Y29uc3QgSFRNTENhbnZhc0VsZW1lbnQqPih0aGlzKS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlP
cmlnaW4oKSk7Cit9CisKK1JlbmRlckJveCogQ2FudmFzU3VyZmFjZTo6ZG9tUmVuZGVyQm94KCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSFRNTENhbnZhc0VsZW1lbnQq
Pih0aGlzKS0+cmVuZGVyQm94KCk7Cit9CisKK1JlbmRlclN0eWxlKiBDYW52YXNTdXJmYWNlOjpk
b21Db21wdXRlZFN0eWxlKCkKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTENhbnZhc0Vs
ZW1lbnQqPih0aGlzKS0+Y29tcHV0ZWRTdHlsZSgpOworfQorCitDU1NTdHlsZVNlbGVjdG9yKiBD
YW52YXNTdXJmYWNlOjpzdHlsZVNlbGVjdG9yKCkKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
SFRNTENhbnZhc0VsZW1lbnQqPih0aGlzKS0+ZG9jdW1lbnQoKS0+c3R5bGVTZWxlY3RvcigpOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9DYW52
YXNTdXJmYWNlLmggYi9XZWJDb3JlL2RvbS9DYW52YXNTdXJmYWNlLmgKaW5kZXggMjJmNzlkMS4u
ZGMxY2NlYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vQ2FudmFzU3VyZmFjZS5oCisrKyBiL1dl
YkNvcmUvZG9tL0NhbnZhc1N1cmZhY2UuaApAQCAtNDMsNiArNDMsMTEgQEAgY2xhc3MgSW1hZ2VC
dWZmZXI7CiBjbGFzcyBJbnRQb2ludDsKIGNsYXNzIFN0cmluZzsKIAorY2xhc3MgQ1NTU3R5bGVT
ZWxlY3RvcjsKK2NsYXNzIFJlbmRlckJveDsKK2NsYXNzIFJlbmRlclN0eWxlOworY2xhc3MgU2Vj
dXJpdHlPcmlnaW47CisKIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CiAKIGNsYXNzIENhbnZh
c1N1cmZhY2UgOiBwdWJsaWMgTm9uY29weWFibGUgewpAQCAtNzIsNiArNzcsMTEgQEAgcHVibGlj
OgogCiAgICAgQWZmaW5lVHJhbnNmb3JtIGJhc2VUcmFuc2Zvcm0oKSBjb25zdDsKIAorICAgIGNv
bnN0IFNlY3VyaXR5T3JpZ2luJiBzZWN1cml0eU9yaWdpbigpIGNvbnN0OworICAgIFJlbmRlckJv
eCogZG9tUmVuZGVyQm94KCkgY29uc3Q7CisgICAgUmVuZGVyU3R5bGUqIGRvbUNvbXB1dGVkU3R5
bGUoKTsKKyAgICBDU1NTdHlsZVNlbGVjdG9yKiBzdHlsZVNlbGVjdG9yKCk7CisKIHByb3RlY3Rl
ZDoKICAgICB2b2lkIHNldFN1cmZhY2VTaXplKGNvbnN0IEludFNpemUmKTsKICAgICBib29sIGhh
c0NyZWF0ZWRJbWFnZUJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1faGFzQ3JlYXRlZEltYWdlQnVm
ZmVyOyB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwIGIv
V2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAppbmRleCA4NjFjOWJiLi5lZjg1MzIz
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCisrKyBiL1dl
YkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKQEAgLTEzMyw4ICsxMzMsMTQgQEAgQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dCogSFRNTENhbnZhc0VsZW1lbnQ6OmdldENvbnRleHQoY29uc3Qg
U3RyaW5nJiB0eXBlLCBDYW52YXMKICAgICBpZiAodHlwZSA9PSAiMmQiKSB7CiAgICAgICAgIGlm
IChtX2NvbnRleHQgJiYgIW1fY29udGV4dC0+aXMyZCgpKQogICAgICAgICAgICAgcmV0dXJuIDA7
Ci0gICAgICAgIGlmICghbV9jb250ZXh0KQotICAgICAgICAgICAgbV9jb250ZXh0ID0gbmV3IENh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRCh0aGlzKTsKKyAgICAgICAgaWYgKCFtX2NvbnRleHQpIHsK
KyAgICAgICAgICAgIGJvb2wgdXNlc0Rhc2hiYXJkQ29tcGF0aWJpbGl0eU1vZGUgPSBmYWxzZTsK
KyNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCisgICAgICAgICAgICBpZiAoU2V0dGluZ3Mq
IHNldHRpbmdzID0gZG9jdW1lbnQoKS0+c2V0dGluZ3MoKSkKKyAgICAgICAgICAgICAgICB1c2Vz
RGFzaGJhcmRDb21wYXRpYmlsaXR5TW9kZSA9IHNldHRpbmdzLT51c2VzRGFzaGJvYXJkQmFja3dh
cmRDb21wYXRpYmlsaXR5TW9kZSgpOworI2VuZGlmCisgICAgICAgICAgICBtX2NvbnRleHQgPSBu
ZXcgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEKHRoaXMsIGRvY3VtZW50KCktPmluQ29tcGF0TW9k
ZSgpLCB1c2VzRGFzaGJhcmRDb21wYXRpYmlsaXR5TW9kZSk7CisgICAgICAgIH0KICAgICAgICAg
cmV0dXJuIG1fY29udGV4dC5nZXQoKTsKICAgICB9CiAjaWYgRU5BQkxFKDNEX0NBTlZBUykgICAg
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RC5jcHAgYi9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAK
aW5kZXggNmZlNzRmOS4uYmRlMWE2OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL2NhbnZhcy9D
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcApAQCAtMzksNyArMzksNiBAQAogI2luY2x1ZGUgIkNT
U011dGFibGVTdHlsZURlY2xhcmF0aW9uLmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5o
IgogI2luY2x1ZGUgIkNTU1N0eWxlU2VsZWN0b3IuaCIKLSNpbmNsdWRlICJEb2N1bWVudC5oIgog
I2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJGbG9hdENvbnZlcnNpb24uaCIK
ICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKQEAgLTkwLDEyICs4OSwxNyBAQCBwcml2YXRl
OgogICAgIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCogbV9jYW52YXNDb250ZXh0OwogfTsKIAot
Ci0KLUNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEKEhU
TUxDYW52YXNFbGVtZW50KiBjYW52YXMpCitDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OkNhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRChIVE1MQ2FudmFzRWxlbWVudCogY2FudmFzLCBib29sIGluQ29t
cGF0TW9kZSwgYm9vbCB1c2VzRGFzaGJhcmRDb21wYXRpYmlsaXR5TW9kZSkKICAgICA6IENhbnZh
c1JlbmRlcmluZ0NvbnRleHQoY2FudmFzKQogICAgICwgbV9zdGF0ZVN0YWNrKDEpCisgICAgLCBt
X2luQ29tcGF0TW9kZShpbkNvbXBhdE1vZGUpCisjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JU
KQorICAgICwgbV91c2VzRGFzaGJhcmRDb21wYXRpYmlsaXR5TW9kZSh1c2VzRGFzaGJhcmRDb21w
YXRpYmlsaXR5TW9kZSkKKyNlbmRpZgogeworICAgIC8vIFNpbGVuY2UgdW51c2VkIHdhcm5pbmdz
IHdoZW4gZGFzaGJvYXJkIHN1cHBvcnQgaXNuJ3QgZW5hYmxlZC4KKyAgICAoKHZvaWQpIHVzZXNE
YXNoYmFyZENvbXBhdGliaWxpdHlNb2RlKTsKKwogICAgIC8vIE1ha2Ugc3VyZSB0aGF0IGV2ZW4g
aWYgdGhlIGRyYXdpbmdDb250ZXh0KCkgaGFzIGEgZGlmZmVyZW50IGRlZmF1bHQKICAgICAvLyB0
aGlja25lc3MsIGl0IGlzIGluIHN5bmMgd2l0aCB0aGUgY2FudmFzIHRoaWNrbmVzcy4KICAgICBz
ZXRMaW5lV2lkdGgobGluZVdpZHRoKCkpOwpAQCAtNjM2LDkgKzY0MCw4IEBAIHZvaWQgQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEOjpyZWN0KGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHdpZHRoLCBm
bG9hdCBoZWlnaHQpCiAjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQogdm9pZCBDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ6OmNsZWFyUGF0aEZvckRhc2hib2FyZEJhY2t3YXJkQ29tcGF0aWJp
bGl0eU1vZGUoKQogewotICAgIGlmIChTZXR0aW5ncyogc2V0dGluZ3MgPSBjYW52YXMoKS0+ZG9j
dW1lbnQoKS0+c2V0dGluZ3MoKSkKLSAgICAgICAgaWYgKHNldHRpbmdzLT51c2VzRGFzaGJvYXJk
QmFja3dhcmRDb21wYXRpYmlsaXR5TW9kZSgpKQotICAgICAgICAgICAgbV9wYXRoLmNsZWFyKCk7
CisgICAgaWYgKG1fdXNlc0Rhc2hiYXJkQ29tcGF0aWJpbGl0eU1vZGUpCisgICAgICAgIG1fcGF0
aC5jbGVhcigpOwogfQogI2VuZGlmCiAKQEAgLTk0MSw3ICs5NDQsNyBAQCBzdGF0aWMgaW5saW5l
IEZsb2F0UmVjdCBub3JtYWxpemVSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKIAogdm9pZCBD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNoZWNrT3JpZ2luKGNvbnN0IEtVUkwmIHVybCkKIHsK
LSAgICBpZiAoY2FudmFzKCktPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCktPnRhaW50c0Nh
bnZhcyh1cmwpKQorICAgIGlmIChjYW52YXMoKS0+c2VjdXJpdHlPcmlnaW4oKS50YWludHNDYW52
YXModXJsKSkKICAgICAgICAgY2FudmFzKCktPnNldE9yaWdpblRhaW50ZWQoKTsKIH0KIApAQCAt
MTE2MSw5ICsxMTY0LDggQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldENvbXBv
c2l0ZU9wZXJhdGlvbihjb25zdCBTdHJpbmcmIG9wZXJhdGlvbikKIHZvaWQgQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEOjpwcmVwYXJlR3JhZGllbnRGb3JEYXNoYm9hcmQoQ2FudmFzR3JhZGllbnQq
IGdyYWRpZW50KSBjb25zdAogewogI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkKLSAgICBp
ZiAoU2V0dGluZ3MqIHNldHRpbmdzID0gY2FudmFzKCktPmRvY3VtZW50KCktPnNldHRpbmdzKCkp
Ci0gICAgICAgIGlmIChzZXR0aW5ncy0+dXNlc0Rhc2hib2FyZEJhY2t3YXJkQ29tcGF0aWJpbGl0
eU1vZGUoKSkKLSAgICAgICAgICAgIGdyYWRpZW50LT5zZXREYXNoYm9hcmRDb21wYXRpYmlsaXR5
TW9kZSgpOworICAgIGlmIChtX3VzZXNEYXNoYmFyZENvbXBhdGliaWxpdHlNb2RlKQorICAgICAg
ICBncmFkaWVudC0+c2V0RGFzaGJvYXJkQ29tcGF0aWJpbGl0eU1vZGUoKTsKICNlbHNlCiAgICAg
VU5VU0VEX1BBUkFNKGdyYWRpZW50KTsKICNlbmRpZgpAQCAtMTIxMSw3ICsxMjEzLDcgQEAgUGFz
c1JlZlB0cjxDYW52YXNQYXR0ZXJuPiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNyZWF0ZVBh
dHRlcm4oSFRNTEltYWdlRWxlbWUKICAgICBpZiAoIWNhY2hlZEltYWdlIHx8ICFpbWFnZS0+Y2Fj
aGVkSW1hZ2UoKS0+aW1hZ2UoKSkKICAgICAgICAgcmV0dXJuIENhbnZhc1BhdHRlcm46OmNyZWF0
ZShJbWFnZTo6bnVsbEltYWdlKCksIHJlcGVhdFgsIHJlcGVhdFksIHRydWUpOwogCi0gICAgYm9v
bCBvcmlnaW5DbGVhbiA9ICFjYW52YXMoKS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+
dGFpbnRzQ2FudmFzKEtVUkwoS1VSTCgpLCBjYWNoZWRJbWFnZS0+dXJsKCkpKSAmJiBjYWNoZWRJ
bWFnZS0+aW1hZ2UoKS0+aGFzU2luZ2xlU2VjdXJpdHlPcmlnaW4oKTsKKyAgICBib29sIG9yaWdp
bkNsZWFuID0gIWNhbnZhcygpLT5zZWN1cml0eU9yaWdpbigpLnRhaW50c0NhbnZhcyhLVVJMKEtV
UkwoKSwgY2FjaGVkSW1hZ2UtPnVybCgpKSkgJiYgY2FjaGVkSW1hZ2UtPmltYWdlKCktPmhhc1Np
bmdsZVNlY3VyaXR5T3JpZ2luKCk7CiAgICAgcmV0dXJuIENhbnZhc1BhdHRlcm46OmNyZWF0ZShj
YWNoZWRJbWFnZS0+aW1hZ2UoKSwgcmVwZWF0WCwgcmVwZWF0WSwgb3JpZ2luQ2xlYW4pOwogfQog
CkBAIC0xMzY5LDcgKzEzNzEsNyBAQCBTdHJpbmcgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpm
b250KCkgY29uc3QKIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRGb250KGNvbnN0
IFN0cmluZyYgbmV3Rm9udCkKIHsKICAgICBSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRp
b24+IHRlbXBEZWNsID0gQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OmNyZWF0ZSgpOwotICAg
IENTU1BhcnNlciBwYXJzZXIoIWNhbnZhcygpLT5kb2N1bWVudCgpLT5pbkNvbXBhdE1vZGUoKSk7
IC8vIFVzZSB0aGUgcGFyc2UgbW9kZSBvZiB0aGUgY2FudmFzJyBkb2N1bWVudCB3aGVuIHBhcnNp
bmcgQ1NTLgorICAgIENTU1BhcnNlciBwYXJzZXIoIW1faW5Db21wYXRNb2RlKTsgLy8gVXNlIHRo
ZSBwYXJzZSBtb2RlIG9mIHRoZSBjYW52YXMnIGRvY3VtZW50IHdoZW4gcGFyc2luZyBDU1MuCiAg
ICAgICAgIAogICAgIFN0cmluZyBkZWNsYXJhdGlvblRleHQoImZvbnQ6ICIpOwogICAgIGRlY2xh
cmF0aW9uVGV4dCArPSBuZXdGb250OwpAQCAtMTM4MywxMSArMTM4NSwxMSBAQCB2b2lkIENhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0Rm9udChjb25zdCBTdHJpbmcmIG5ld0ZvbnQpCiAgICAg
Ly8gTWFwIHRoZSA8Y2FudmFzPiBmb250IGludG8gdGhlIHRleHQgc3R5bGUuIElmIHRoZSBmb250
IHVzZXMga2V5d29yZHMgbGlrZSBsYXJnZXIvc21hbGxlciwgdGhlc2Ugd2lsbCB3b3JrCiAgICAg
Ly8gcmVsYXRpdmUgdG8gdGhlIGNhbnZhcy4KICAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IG5ld1N0
eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZSgpOwotICAgIGlmIChjYW52YXMoKS0+Y29tcHV0ZWRT
dHlsZSgpKQotICAgICAgICBuZXdTdHlsZS0+c2V0Rm9udERlc2NyaXB0aW9uKGNhbnZhcygpLT5j
b21wdXRlZFN0eWxlKCktPmZvbnREZXNjcmlwdGlvbigpKTsKKyAgICBpZiAoUmVuZGVyU3R5bGUq
IGNvbXB1dGVkU3R5bGUgPSBjYW52YXMoKS0+ZG9tQ29tcHV0ZWRTdHlsZSgpKQorICAgICAgICBu
ZXdTdHlsZS0+c2V0Rm9udERlc2NyaXB0aW9uKGNvbXB1dGVkU3R5bGUtPmZvbnREZXNjcmlwdGlv
bigpKTsKIAogICAgIC8vIE5vdyBtYXAgdGhlIGZvbnQgcHJvcGVydHkgaW50byB0aGUgc3R5bGUu
Ci0gICAgQ1NTU3R5bGVTZWxlY3Rvciogc3R5bGVTZWxlY3RvciA9IGNhbnZhcygpLT5kb2N1bWVu
dCgpLT5zdHlsZVNlbGVjdG9yKCk7CisgICAgQ1NTU3R5bGVTZWxlY3Rvciogc3R5bGVTZWxlY3Rv
ciA9IGNhbnZhcygpLT5zdHlsZVNlbGVjdG9yKCk7CiAgICAgc3R5bGVTZWxlY3Rvci0+YXBwbHlQ
cm9wZXJ0eVRvU3R5bGUoQ1NTUHJvcGVydHlGb250LCB0ZW1wRGVjbC0+Z2V0UHJvcGVydHlDU1NW
YWx1ZShDU1NQcm9wZXJ0eUZvbnQpLmdldCgpLCBuZXdTdHlsZS5nZXQoKSk7CiAgICAgCiAgICAg
c3RhdGUoKS5tX2ZvbnQgPSBuZXdTdHlsZS0+Zm9udCgpOwpAQCAtMTQ2MSw4ICsxNDYzLDkgQEAg
dm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdUZXh0SW50ZXJuYWwoY29uc3QgU3Ry
aW5nJiB0ZXh0LCBmbG9hdCB4LCBmbG8KICAgICAvLyBGSVhNRTogSGFuZGxlIG1heFdpZHRoLgog
ICAgIC8vIEZJWE1FOiBOZWVkIHRvIHR1cm4gb2ZmIGZvbnQgc21vb3RoaW5nLgogCi0gICAgYm9v
bCBydGwgPSBjYW52YXMoKS0+Y29tcHV0ZWRTdHlsZSgpID8gY2FudmFzKCktPmNvbXB1dGVkU3R5
bGUoKS0+ZGlyZWN0aW9uKCkgPT0gUlRMIDogZmFsc2U7Ci0gICAgYm9vbCBvdmVycmlkZSA9IGNh
bnZhcygpLT5jb21wdXRlZFN0eWxlKCkgPyBjYW52YXMoKS0+Y29tcHV0ZWRTdHlsZSgpLT51bmlj
b2RlQmlkaSgpID09IE92ZXJyaWRlIDogZmFsc2U7CisgICAgUmVuZGVyU3R5bGUqIGNvbXB1dGVk
U3R5bGUgPSBjYW52YXMoKS0+ZG9tQ29tcHV0ZWRTdHlsZSgpOworICAgIGJvb2wgcnRsID0gY29t
cHV0ZWRTdHlsZSA/IGNvbXB1dGVkU3R5bGUtPmRpcmVjdGlvbigpID09IFJUTCA6IGZhbHNlOwor
ICAgIGJvb2wgb3ZlcnJpZGUgPSBjb21wdXRlZFN0eWxlID8gY29tcHV0ZWRTdHlsZS0+dW5pY29k
ZUJpZGkoKSA9PSBPdmVycmlkZSA6IGZhbHNlOwogCiAgICAgdW5zaWduZWQgbGVuZ3RoID0gdGV4
dC5sZW5ndGgoKTsKICAgICBjb25zdCBVQ2hhciogc3RyaW5nID0gdGV4dC5jaGFyYWN0ZXJzKCk7
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RC5oIGIvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaAppbmRl
eCA1NTNmZmQyLi5hYTE5MmIwIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRC5oCisrKyBiL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJELmgKQEAgLTU3LDcgKzU3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiAgICAgY2xhc3MgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEIDogcHVibGljIENhbnZhc1JlbmRl
cmluZ0NvbnRleHQgewogICAgIHB1YmxpYzoKLSAgICAgICAgQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEKEhUTUxDYW52YXNFbGVtZW50Kik7CisgICAgICAgIENhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RChIVE1MQ2FudmFzRWxlbWVudCosIGJvb2wgaW5Db21wYXRNb2RlLCBib29sIHVzZXNEYXNoYmFy
ZENvbXBhdGliaWxpdHlNb2RlKTsKIAogICAgICAgICB2aXJ0dWFsIH5DYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQoKTsKICAgICAgICAgCkBAIC0yNjMsNiArMjYzLDEwIEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgdm9pZCBjaGVja09yaWdpbihjb25zdCBTdHJpbmcmKTsKIAogICAgICAg
ICBWZWN0b3I8U3RhdGUsIDE+IG1fc3RhdGVTdGFjazsKKyAgICAgICAgYm9vbCBtX2luQ29tcGF0
TW9kZTsKKyNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCisgICAgICAgIGJvb2wgbV91c2Vz
RGFzaGJhcmRDb21wYXRpYmlsaXR5TW9kZTsKKyNlbmRpZgogICAgIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJp
bmdDb250ZXh0LmNwcCBiL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0
LmNwcAppbmRleCA0MDU5ZDdmLi5jZDQ3NjY3IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC00NiwxMiArNDYsNiBAQAogI2luY2x1ZGUgIldl
YkdMVGV4dHVyZS5oIgogI2luY2x1ZGUgIldlYkdMU2hhZGVyLmgiCiAjaW5jbHVkZSAiV2ViR0xV
bmlmb3JtTG9jYXRpb24uaCIKLSNpbmNsdWRlICJIVE1MQ2FudmFzRWxlbWVudC5oIgotI2luY2x1
ZGUgIkhUTUxJbWFnZUVsZW1lbnQuaCIKLSNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgotI2luY2x1
ZGUgIk5vdEltcGxlbWVudGVkLmgiCi0jaW5jbHVkZSAiUmVuZGVyQm94LmgiCi0jaW5jbHVkZSAi
UmVuZGVyTGF5ZXIuaCIKIAogI2luY2x1ZGUgPHd0Zi9CeXRlQXJyYXkuaD4KIApAQCAtMTA4LDkg
KzEwMiwxMCBAQCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6On5XZWJHTFJlbmRlcmluZ0NvbnRleHQo
KQogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6Om1hcmtDb250ZXh0Q2hhbmdlZCgpCiB7CiAj
aWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotICAgIGlmIChjYW52YXMoKS0+cmVuZGVy
Qm94KCkgJiYgY2FudmFzKCktPnJlbmRlckJveCgpLT5oYXNMYXllcigpICYmIGNhbnZhcygpLT5y
ZW5kZXJCb3goKS0+bGF5ZXIoKS0+aGFzQWNjZWxlcmF0ZWRDb21wb3NpdGluZygpKSB7Ci0gICAg
ICAgIGNhbnZhcygpLT5yZW5kZXJCb3goKS0+bGF5ZXIoKS0+cmVuZGVyZXJDb250ZW50Q2hhbmdl
ZCgpOwotICAgIH0gZWxzZSB7CisgICAgUmVuZGVyQm94KiByZW5kZXJCb3ggPSBjYW52YXMoKS0+
ZG9tUmVuZGVyQm94KCk7CisgICAgaWYgKHJlbmRlckJveCAmJiByZW5kZXJCb3gtPmhhc0xheWVy
KCkgJiYgcmVuZGVyQm94LT5sYXllcigpLT5oYXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nKCkpCisg
ICAgICAgIHJlbmRlckJveC0+bGF5ZXIoKS0+cmVuZGVyZXJDb250ZW50Q2hhbmdlZCgpOworICAg
IGVsc2UgewogI2VuZGlmCiAgICAgICAgIGlmICghbV9tYXJrZWRDYW52YXNEaXJ0eSkgewogICAg
ICAgICAgICAgLy8gTWFrZSBzdXJlIHRoZSBjYW52YXMncyBpbWFnZSBidWZmZXIgaXMgYWxsb2Nh
dGVkLgpAQCAtMTQyLDggKzEzNyw5IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpyZXNo
YXBlKGludCB3aWR0aCwgaW50IGhlaWdodCkKIHsKICAgICBpZiAobV9uZWVkc1VwZGF0ZSkgewog
I2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLSAgICAgICAgaWYgKGNhbnZhcygpLT5y
ZW5kZXJCb3goKSAmJiBjYW52YXMoKS0+cmVuZGVyQm94KCktPmhhc0xheWVyKCkpCi0gICAgICAg
ICAgICBjYW52YXMoKS0+cmVuZGVyQm94KCktPmxheWVyKCktPnJlbmRlcmVyQ29udGVudENoYW5n
ZWQoKTsKKyAgICAgICAgUmVuZGVyQm94KiByZW5kZXJCb3ggPSBjYW52YXMoKS0+ZG9tUmVuZGVy
Qm94KCk7CisgICAgICAgIGlmIChyZW5kZXJCb3ggJiYgcmVuZGVyQm94LT5oYXNMYXllcigpKQor
ICAgICAgICAgICAgcmVuZGVyQm94LT5sYXllcigpLT5yZW5kZXJlckNvbnRlbnRDaGFuZ2VkKCk7
CiAjZW5kaWYKICAgICAgICAgbV9uZWVkc1VwZGF0ZSA9IGZhbHNlOwogICAgIH0K
</data>
<flag name="review"
          id="35802"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52443</attachid>
            <date>2010-04-02 13:14:52 -0700</date>
            <delta_ts>2010-04-02 13:19:49 -0700</delta_ts>
            <desc>Proposed fix.</desc>
            <filename>bug36906.txt</filename>
            <type>text/plain</type>
            <size>10523</size>
            <attacher name="David Levin">levin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBkZDdmYjRkLi5jMzMyYzA1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTAtMDQt
MDIgIERhdmlkIExldmluICA8bGV2aW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIChub24tZ2VuZXJhdGVkKSBjb2RlIHNob3Vs
ZCBvbmx5IHVzZSBDYW52YXNSZW5kZXJpbmdDb250ZXh0OjpjYW52YXMgYXMgYSBDYW52YXNTdXJm
YWNlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzY5
MDYKKworICAgICAgICAqIGZhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtZ3JhZGllbnQt
YWRkU3RvcC1lcnJvci5qczogQ2hhbmdlZCB0aGUgdGVzdAorICAgICAgICB0byBjcmVhdGUgYSBu
ZXcgY2FudmFzIGFmdGVyIHN3aXRjaGluZyB0byBkYXNoYm9hcmQgY29tcGF0aWJsaXR5IG1vZGUs
IHdoaWNoIGlzCisgICAgICAgIG5lZWRlZCBub3cgdGhhdCB0aGUgY29tcGF0aWJpbGl0eSBtb2Rl
IGlzIGNhY2hlZCBpbiB0aGUgY2FudmFzLgorCiAyMDEwLTA0LTAxICBKYW1lcyBSb2JpbnNvbiAg
PGphbWVzckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2Vy
LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCA0OGFjM2MwLi42YTMwZDRmIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDEwLTA0LTAyICBEYXZpZCBMZXZp
biAgPGxldmluQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAobm9uLWdlbmVyYXRlZCkgY29kZSBzaG91bGQgb25seSB1c2UgQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDo6Y2FudmFzIGFzIGEgQ2FudmFzU3VyZmFjZS4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM2OTA2CisKKyAgICAgICAg
KiBkb20vQ2FudmFzU3VyZmFjZS5jcHA6IEFkZGVkIG1ldGhvZHMgZm9yIGl0ZW1zIHRoYXQgZGVw
ZW5kZWQgb24KKyAgICAgICAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDo6Y2FudmFzKCkgYmVpbmcg
YW4gSFRNTEVsZW1lbnQoKSwgc28gdGhhdCB0aGlzIHVzYWdlCisgICAgICAgIGNhbiBiZSBkZWFs
dCB3aXRoIGluIG9uZSBwbGFjZS4KKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1N1cmZhY2U6OnNl
Y3VyaXR5T3JpZ2luKTogT25seSB1c2VkIGJ5IG1ldGhvZHMgdGhhdCBhcmUKKyAgICAgICAgb25s
eSBydW4gaW4gdGhlIGRvY3VtZW50IGNvbnRleHQuCisgICAgICAgIChXZWJDb3JlOjpDYW52YXNT
dXJmYWNlOjpyZW5kZXJCb3gpOiBXaWxsIGxpa2VseSByZXR1cm4gMCBpbiBhIHdvcmtlciBjb250
ZXh0LgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzU3VyZmFjZTo6Y29tcHV0ZWRTdHlsZSk6IFVz
ZWQgYnkgc2V0Rm9udC4gVEJEIGZvciB0aGUgd29ya2VyIGNvbnRleHQuCisgICAgICAgIChXZWJD
b3JlOjpDYW52YXNTdXJmYWNlOjpzdHlsZVNlbGVjdG9yKTogVXNlZCBieSBzZXRGb250LiBUQkQg
Zm9yIHRoZSB3b3JrZXIgY29udGV4dC4KKyAgICAgICAgKiBkb20vQ2FudmFzU3VyZmFjZS5oOgor
ICAgICAgICAqIGh0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTENhbnZhc0VsZW1lbnQ6OmdldENvbnRleHQpOiBQYXNzaW5nIGluIGluZm9ybWF0aW9uIGlu
dG8KKyAgICAgICAgdGhlIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCBjb25zdHJ1Y3RvciB0byBl
bGltaW5hdGUgc29tZSB1c2VzIG9mIGRvY3VtZW50CisgICAgICAgIGluc2lkZSBvZiB0aGUgQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEIGNsYXNzLgorICAgICAgICAqIGh0bWwvSFRNTENhbnZhc0Vs
ZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDYW52YXNFbGVtZW50OjpyZW5kZXJCb3gp
OiBBZGRlZCB0byBkaXNhbWJpZ3VhdGUgYmV0d2VlbgorICAgICAgICAoV2ViQ29yZTo6SFRNTENh
bnZhc0VsZW1lbnQ6OmNvbXB1dGVkU3R5bGUpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6IEFsbCBvZiB0aGVzZSBjaGFuZ2VzIGFyZSBhYm91dAor
ICAgICAgICByZW1vdmluZyBkb2N1bWVudCB1c2FnZSBlaXRoZXIgYnkgdXNpbmcgYSBib29sIHRo
YXQgaXMgc2V0IGluIHRoZSBjb25zdHJ1Y3RvciBvcgorICAgICAgICBieSBjYWxsaW5nIG9uZSBv
ZiB0aGUgbmV3IG1ldGhvZHMgYWRkZWQgdG8gQ2FudmFzU3VyZmFjZS4KKyAgICAgICAgKFdlYkNv
cmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEKToK
KyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Y2xlYXJQYXRoRm9y
RGFzaGJvYXJkQmFja3dhcmRDb21wYXRpYmlsaXR5TW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNoZWNrT3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6
OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6cHJlcGFyZUdyYWRpZW50Rm9yRGFzaGJvYXJkKToK
KyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Y3JlYXRlUGF0dGVy
bik6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldEZvbnQp
OgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3VGV4dElu
dGVybmFsKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQu
aDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwOiBSZW1v
dmVkIHNvbWUgZHVwbGljYXRlIGluY2x1ZGVzLgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5k
ZXJpbmdDb250ZXh0OjptYXJrQ29udGV4dENoYW5nZWQpOiBSZWR1Y2VkIGNhbGxzIHRvIHJlbmRl
ckJveAorICAgICAgICAgYXMgaXQgbWF5IGJlY29tZSBzbGlnaHRseSBtb3JlIGV4cGVuc2l2ZSBp
biB0aGUgZnV0dXJlLgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojpy
ZXNoYXBlKTogRGl0dG8uCisKIDIwMTAtMDQtMDEgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2RvbS9DYW52YXNTdXJmYWNlLmNwcCBiL1dlYkNvcmUvZG9tL0NhbnZhc1N1
cmZhY2UuY3BwCmluZGV4IGViOTE1NzYuLmRjN2U0ZTEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9t
L0NhbnZhc1N1cmZhY2UuY3BwCisrKyBiL1dlYkNvcmUvZG9tL0NhbnZhc1N1cmZhY2UuY3BwCkBA
IC0xNjIsMTIgKzE2MiwxMiBAQCBjb25zdCBTZWN1cml0eU9yaWdpbiYgQ2FudmFzU3VyZmFjZTo6
c2VjdXJpdHlPcmlnaW4oKSBjb25zdAogICAgIHJldHVybiAqKHN0YXRpY19jYXN0PGNvbnN0IEhU
TUxDYW52YXNFbGVtZW50Kj4odGhpcyktPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkpOwog
fQogCi1SZW5kZXJCb3gqIENhbnZhc1N1cmZhY2U6OmRvbVJlbmRlckJveCgpIGNvbnN0CitSZW5k
ZXJCb3gqIENhbnZhc1N1cmZhY2U6OnJlbmRlckJveCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PGNvbnN0IEhUTUxDYW52YXNFbGVtZW50Kj4odGhpcyktPnJlbmRlckJveCgpOwog
fQogCi1SZW5kZXJTdHlsZSogQ2FudmFzU3VyZmFjZTo6ZG9tQ29tcHV0ZWRTdHlsZSgpCitSZW5k
ZXJTdHlsZSogQ2FudmFzU3VyZmFjZTo6Y29tcHV0ZWRTdHlsZSgpCiB7CiAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PEhUTUxDYW52YXNFbGVtZW50Kj4odGhpcyktPmNvbXB1dGVkU3R5bGUoKTsKIH0K
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0NhbnZhc1N1cmZhY2UuaCBiL1dlYkNvcmUvZG9tL0Nh
bnZhc1N1cmZhY2UuaAppbmRleCBkYzFjY2VhLi5mNTMxN2U1IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2RvbS9DYW52YXNTdXJmYWNlLmgKKysrIGIvV2ViQ29yZS9kb20vQ2FudmFzU3VyZmFjZS5oCkBA
IC03OCw4ICs3OCw4IEBAIHB1YmxpYzoKICAgICBBZmZpbmVUcmFuc2Zvcm0gYmFzZVRyYW5zZm9y
bSgpIGNvbnN0OwogCiAgICAgY29uc3QgU2VjdXJpdHlPcmlnaW4mIHNlY3VyaXR5T3JpZ2luKCkg
Y29uc3Q7Ci0gICAgUmVuZGVyQm94KiBkb21SZW5kZXJCb3goKSBjb25zdDsKLSAgICBSZW5kZXJT
dHlsZSogZG9tQ29tcHV0ZWRTdHlsZSgpOworICAgIFJlbmRlckJveCogcmVuZGVyQm94KCkgY29u
c3Q7CisgICAgUmVuZGVyU3R5bGUqIGNvbXB1dGVkU3R5bGUoKTsKICAgICBDU1NTdHlsZVNlbGVj
dG9yKiBzdHlsZVNlbGVjdG9yKCk7CiAKIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
aHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1l
bnQuY3BwCmluZGV4IDU5N2NhOWQuLmVmODUzMjMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9I
VE1MQ2FudmFzRWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50
LmNwcApAQCAtMTM1LDkgKzEzNSwxMCBAQCBDYW52YXNSZW5kZXJpbmdDb250ZXh0KiBIVE1MQ2Fu
dmFzRWxlbWVudDo6Z2V0Q29udGV4dChjb25zdCBTdHJpbmcmIHR5cGUsIENhbnZhcwogICAgICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgICAgIGlmICghbV9jb250ZXh0KSB7CiAgICAgICAgICAgICBi
b29sIHVzZXNEYXNoYmFyZENvbXBhdGliaWxpdHlNb2RlID0gZmFsc2U7CisjaWYgRU5BQkxFKERB
U0hCT0FSRF9TVVBQT1JUKQogICAgICAgICAgICAgaWYgKFNldHRpbmdzKiBzZXR0aW5ncyA9IGRv
Y3VtZW50KCktPnNldHRpbmdzKCkpCiAgICAgICAgICAgICAgICAgdXNlc0Rhc2hiYXJkQ29tcGF0
aWJpbGl0eU1vZGUgPSBzZXR0aW5ncy0+dXNlc0Rhc2hib2FyZEJhY2t3YXJkQ29tcGF0aWJpbGl0
eU1vZGUoKTsKLQorI2VuZGlmCiAgICAgICAgICAgICBtX2NvbnRleHQgPSBuZXcgQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEKHRoaXMsIGRvY3VtZW50KCktPmluQ29tcGF0TW9kZSgpLCB1c2VzRGFz
aGJhcmRDb21wYXRpYmlsaXR5TW9kZSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIG1fY29u
dGV4dC5nZXQoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5o
IGIvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmgKaW5kZXggNzllNmYxNS4uNjk4MTY4
MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmgKKysrIGIvV2Vi
Q29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmgKQEAgLTgxLDYgKzgxLDkgQEAgcHVibGljOgog
CiAgICAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dCogcmVuZGVyaW5nQ29udGV4dCgpIGNvbnN0IHsg
cmV0dXJuIG1fY29udGV4dC5nZXQoKTsgfQogCisgICAgUmVuZGVyQm94KiByZW5kZXJCb3goKSBj
b25zdCB7IHJldHVybiBIVE1MRWxlbWVudDo6cmVuZGVyQm94KCk7IH0KKyAgICBSZW5kZXJTdHls
ZSogY29tcHV0ZWRTdHlsZSgpIHsgIHJldHVybiBIVE1MRWxlbWVudDo6Y29tcHV0ZWRTdHlsZSgp
OyB9CisKICNpZiBFTkFCTEUoM0RfQ0FOVkFTKSAgICAKICAgICBib29sIGlzM0QoKSBjb25zdDsK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQuY3BwIGIvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQuY3BwCmluZGV4IGI1ZDNhM2UuLjU1ODczY2QgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAorKysgYi9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKQEAgLTg5LDEyICs4OSwxOCBAQCBwcml2
YXRlOgogICAgIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCogbV9jYW52YXNDb250ZXh0OwogfTsK
IAotQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQoSFRN
TENhbnZhc0VsZW1lbnQqIGNhbnZhcywgYm9vbCBpbkNvbXBhdE1vZGUsIGJvb2wgdXNlc0Rhc2hi
YXJkQ29tcGF0aWJpbGl0eU1vZGUpCitDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OkNhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRChIVE1MQ2FudmFzRWxlbWVudCogY2FudmFzLCBib29sIHVzZXNDU1ND
b21wYXRpYmlsaXR5UGFyc2VNb2RlLCBib29sIHVzZXNEYXNoYmFyZENvbXBhdGliaWxpdHlNb2Rl
KQogICAgIDogQ2FudmFzUmVuZGVyaW5nQ29udGV4dChjYW52YXMpCiAgICAgLCBtX3N0YXRlU3Rh
Y2soMSkKLSAgICAsIG1faW5Db21wYXRNb2RlKGluQ29tcGF0TW9kZSkKKyAgICAsIG1fdXNlc0NT
U0NvbXBhdGliaWxpdHlQYXJzZU1vZGUodXNlc0NTU0NvbXBhdGliaWxpdHlQYXJzZU1vZGUpCisj
aWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQogICAgICwgbV91c2VzRGFzaGJhcmRDb21wYXRp
YmlsaXR5TW9kZSh1c2VzRGFzaGJhcmRDb21wYXRpYmlsaXR5TW9kZSkKKyNlbmRpZgogeworI2lm
ICFFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCisgICBBU1NFUlRfVU5VU0VEKHVzZXNEYXNoYm9h
cmRDb21wYXRpYmlsaXR5TW9kZSwgIXVzZXNEYXNoYm9hcmRDb21wYXRpYmlsaXR5TW9kZSk7Cisj
ZW5kaWYKKwogICAgIC8vIE1ha2Ugc3VyZSB0aGF0IGV2ZW4gaWYgdGhlIGRyYXdpbmdDb250ZXh0
KCkgaGFzIGEgZGlmZmVyZW50IGRlZmF1bHQKICAgICAvLyB0aGlja25lc3MsIGl0IGlzIGluIHN5
bmMgd2l0aCB0aGUgY2FudmFzIHRoaWNrbmVzcy4KICAgICBzZXRMaW5lV2lkdGgobGluZVdpZHRo
KCkpOwpAQCAtMTM2Niw3ICsxMzcyLDcgQEAgU3RyaW5nIENhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RDo6Zm9udCgpIGNvbnN0CiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0Rm9udChj
b25zdCBTdHJpbmcmIG5ld0ZvbnQpCiB7CiAgICAgUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xh
cmF0aW9uPiB0ZW1wRGVjbCA9IENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpjcmVhdGUoKTsK
LSAgICBDU1NQYXJzZXIgcGFyc2VyKCFtX2luQ29tcGF0TW9kZSk7IC8vIFVzZSB0aGUgcGFyc2Ug
bW9kZSBvZiB0aGUgY2FudmFzJyBkb2N1bWVudCB3aGVuIHBhcnNpbmcgQ1NTLgorICAgIENTU1Bh
cnNlciBwYXJzZXIoIW1fdXNlc0NTU0NvbXBhdGliaWxpdHlQYXJzZU1vZGUpOwogICAgICAgICAK
ICAgICBTdHJpbmcgZGVjbGFyYXRpb25UZXh0KCJmb250OiAiKTsKICAgICBkZWNsYXJhdGlvblRl
eHQgKz0gbmV3Rm9udDsKQEAgLTEzODAsNyArMTM4Niw3IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEOjpzZXRGb250KGNvbnN0IFN0cmluZyYgbmV3Rm9udCkKICAgICAvLyBNYXAgdGhl
IDxjYW52YXM+IGZvbnQgaW50byB0aGUgdGV4dCBzdHlsZS4gSWYgdGhlIGZvbnQgdXNlcyBrZXl3
b3JkcyBsaWtlIGxhcmdlci9zbWFsbGVyLCB0aGVzZSB3aWxsIHdvcmsKICAgICAvLyByZWxhdGl2
ZSB0byB0aGUgY2FudmFzLgogICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gbmV3U3R5bGUgPSBSZW5k
ZXJTdHlsZTo6Y3JlYXRlKCk7Ci0gICAgaWYgKFJlbmRlclN0eWxlKiBjb21wdXRlZFN0eWxlID0g
Y2FudmFzKCktPmRvbUNvbXB1dGVkU3R5bGUoKSkKKyAgICBpZiAoUmVuZGVyU3R5bGUqIGNvbXB1
dGVkU3R5bGUgPSBjYW52YXMoKS0+Y29tcHV0ZWRTdHlsZSgpKQogICAgICAgICBuZXdTdHlsZS0+
c2V0Rm9udERlc2NyaXB0aW9uKGNvbXB1dGVkU3R5bGUtPmZvbnREZXNjcmlwdGlvbigpKTsKIAog
ICAgIC8vIE5vdyBtYXAgdGhlIGZvbnQgcHJvcGVydHkgaW50byB0aGUgc3R5bGUuCkBAIC0xNDU4
LDcgKzE0NjQsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd1RleHRJbnRl
cm5hbChjb25zdCBTdHJpbmcmIHRleHQsIGZsb2F0IHgsIGZsbwogICAgIC8vIEZJWE1FOiBIYW5k
bGUgbWF4V2lkdGguCiAgICAgLy8gRklYTUU6IE5lZWQgdG8gdHVybiBvZmYgZm9udCBzbW9vdGhp
bmcuCiAKLSAgICBSZW5kZXJTdHlsZSogY29tcHV0ZWRTdHlsZSA9IGNhbnZhcygpLT5kb21Db21w
dXRlZFN0eWxlKCk7CisgICAgUmVuZGVyU3R5bGUqIGNvbXB1dGVkU3R5bGUgPSBjYW52YXMoKS0+
Y29tcHV0ZWRTdHlsZSgpOwogICAgIGJvb2wgcnRsID0gY29tcHV0ZWRTdHlsZSA/IGNvbXB1dGVk
U3R5bGUtPmRpcmVjdGlvbigpID09IFJUTCA6IGZhbHNlOwogICAgIGJvb2wgb3ZlcnJpZGUgPSBj
b21wdXRlZFN0eWxlID8gY29tcHV0ZWRTdHlsZS0+dW5pY29kZUJpZGkoKSA9PSBPdmVycmlkZSA6
IGZhbHNlOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRC5oIGIvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQuaAppbmRleCAzZGU5MmIxLi5hZTAyNWJjIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oCisrKyBiL1dlYkNvcmUvaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmgKQEAgLTU3LDcgKzU3LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiAgICAgY2xhc3MgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEIDogcHVibGljIENh
bnZhc1JlbmRlcmluZ0NvbnRleHQgewogICAgIHB1YmxpYzoKLSAgICAgICAgQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEKEhUTUxDYW52YXNFbGVtZW50KiwgYm9vbCBpbkNvbXBhdE1vZGUsIGJvb2wg
dXNlc0Rhc2hiYXJkQ29tcGF0aWJpbGl0eU1vZGUpOworICAgICAgICBDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQoSFRNTENhbnZhc0VsZW1lbnQqLCBib29sIHVzZXNDU1NDb21wYXRpYmlsaXR5UGFy
c2VNb2RlLCBib29sIHVzZXNEYXNoYmFyZENvbXBhdGliaWxpdHlNb2RlKTsKIAogICAgICAgICB2
aXJ0dWFsIH5DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQoKTsKICAgICAgICAgCkBAIC0yNjMsOCAr
MjYzLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBjaGVja09yaWdpbihj
b25zdCBTdHJpbmcmKTsKIAogICAgICAgICBWZWN0b3I8U3RhdGUsIDE+IG1fc3RhdGVTdGFjazsK
LSAgICAgICAgYm9vbCBtX2luQ29tcGF0TW9kZTsKKyAgICAgICAgYm9vbCBtX3VzZXNDU1NDb21w
YXRpYmlsaXR5UGFyc2VNb2RlOworI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkKICAgICAg
ICAgYm9vbCBtX3VzZXNEYXNoYmFyZENvbXBhdGliaWxpdHlNb2RlOworI2VuZGlmCiAgICAgfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwIGIvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJl
bmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IGNkNDc2NjcuLjIwNGJmYjUgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTEwMiw3ICsxMDIsNyBA
QCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6On5XZWJHTFJlbmRlcmluZ0NvbnRleHQoKQogdm9pZCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6Om1hcmtDb250ZXh0Q2hhbmdlZCgpCiB7CiAjaWYgVVNFKEFD
Q0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotICAgIFJlbmRlckJveCogcmVuZGVyQm94ID0gY2FudmFz
KCktPmRvbVJlbmRlckJveCgpOworICAgIFJlbmRlckJveCogcmVuZGVyQm94ID0gY2FudmFzKCkt
PnJlbmRlckJveCgpOwogICAgIGlmIChyZW5kZXJCb3ggJiYgcmVuZGVyQm94LT5oYXNMYXllcigp
ICYmIHJlbmRlckJveC0+bGF5ZXIoKS0+aGFzQWNjZWxlcmF0ZWRDb21wb3NpdGluZygpKQogICAg
ICAgICByZW5kZXJCb3gtPmxheWVyKCktPnJlbmRlcmVyQ29udGVudENoYW5nZWQoKTsKICAgICBl
bHNlIHsKQEAgLTEzNyw3ICsxMzcsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6cmVz
aGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpCiB7CiAgICAgaWYgKG1fbmVlZHNVcGRhdGUpIHsK
ICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0gICAgICAgIFJlbmRlckJveCogcmVu
ZGVyQm94ID0gY2FudmFzKCktPmRvbVJlbmRlckJveCgpOworICAgICAgICBSZW5kZXJCb3gqIHJl
bmRlckJveCA9IGNhbnZhcygpLT5yZW5kZXJCb3goKTsKICAgICAgICAgaWYgKHJlbmRlckJveCAm
JiByZW5kZXJCb3gtPmhhc0xheWVyKCkpCiAgICAgICAgICAgICByZW5kZXJCb3gtPmxheWVyKCkt
PnJlbmRlcmVyQ29udGVudENoYW5nZWQoKTsKICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52444</attachid>
            <date>2010-04-02 13:18:09 -0700</date>
            <delta_ts>2010-04-02 13:20:51 -0700</delta_ts>
            <desc>Proposed fix.</desc>
            <filename>bug36906.txt</filename>
            <type>text/plain</type>
            <size>10571</size>
            <attacher name="David Levin">levin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBkZDdmYjRkLi5jMzMyYzA1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTAtMDQt
MDIgIERhdmlkIExldmluICA8bGV2aW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIChub24tZ2VuZXJhdGVkKSBjb2RlIHNob3Vs
ZCBvbmx5IHVzZSBDYW52YXNSZW5kZXJpbmdDb250ZXh0OjpjYW52YXMgYXMgYSBDYW52YXNTdXJm
YWNlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzY5
MDYKKworICAgICAgICAqIGZhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtZ3JhZGllbnQt
YWRkU3RvcC1lcnJvci5qczogQ2hhbmdlZCB0aGUgdGVzdAorICAgICAgICB0byBjcmVhdGUgYSBu
ZXcgY2FudmFzIGFmdGVyIHN3aXRjaGluZyB0byBkYXNoYm9hcmQgY29tcGF0aWJsaXR5IG1vZGUs
IHdoaWNoIGlzCisgICAgICAgIG5lZWRlZCBub3cgdGhhdCB0aGUgY29tcGF0aWJpbGl0eSBtb2Rl
IGlzIGNhY2hlZCBpbiB0aGUgY2FudmFzLgorCiAyMDEwLTA0LTAxICBKYW1lcyBSb2JpbnNvbiAg
PGphbWVzckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2Vy
LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCA0OGFjM2MwLi4wNjQyZWIwIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDEwLTA0LTAyICBEYXZpZCBMZXZp
biAgPGxldmluQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAobm9uLWdlbmVyYXRlZCkgY29kZSBzaG91bGQgb25seSB1c2UgQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDo6Y2FudmFzIGFzIGEgQ2FudmFzU3VyZmFjZS4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM2OTA2CisKKyAgICAgICAg
KiBkb20vQ2FudmFzU3VyZmFjZS5jcHA6IEFkZGVkIG1ldGhvZHMgZm9yIGl0ZW1zIHRoYXQgZGVw
ZW5kZWQgb24KKyAgICAgICAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDo6Y2FudmFzKCkgYmVpbmcg
YW4gSFRNTEVsZW1lbnQoKSwgc28gdGhhdCB0aGlzIHVzYWdlCisgICAgICAgIGNhbiBiZSBkZWFs
dCB3aXRoIGluIG9uZSBwbGFjZS4KKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1N1cmZhY2U6OnNl
Y3VyaXR5T3JpZ2luKTogT25seSB1c2VkIGJ5IG1ldGhvZHMgdGhhdCBhcmUKKyAgICAgICAgb25s
eSBydW4gaW4gdGhlIGRvY3VtZW50IGNvbnRleHQuCisgICAgICAgIChXZWJDb3JlOjpDYW52YXNT
dXJmYWNlOjpyZW5kZXJCb3gpOiBXaWxsIGxpa2VseSByZXR1cm4gMCBpbiBhIHdvcmtlciBjb250
ZXh0LgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzU3VyZmFjZTo6Y29tcHV0ZWRTdHlsZSk6IFVz
ZWQgYnkgc2V0Rm9udC4gUmV0dXJuIHZhbHVlIGlzIFRCRCBmb3IKKyAgICAgICAgdGhlIHdvcmtl
ciBjb250ZXh0LgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzU3VyZmFjZTo6c3R5bGVTZWxlY3Rv
cik6IERpdHRvLgorICAgICAgICAqIGRvbS9DYW52YXNTdXJmYWNlLmg6CisgICAgICAgICogaHRt
bC9IVE1MQ2FudmFzRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxl
bWVudDo6Z2V0Q29udGV4dCk6IFBhc3NpbmcgaW4gaW5mb3JtYXRpb24gaW50bworICAgICAgICB0
aGUgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEIGNvbnN0cnVjdG9yIHRvIGVsaW1pbmF0ZSBzb21l
IHVzZXMgb2YgZG9jdW1lbnQKKyAgICAgICAgaW5zaWRlIG9mIHRoZSBDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQgY2xhc3MuCisgICAgICAgICogaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OnJlbmRlckJveCk6IEFkZGVkIHRvIGRp
c2FtYmlndWF0ZSBiZXR3ZWVuIHRoZQorICAgICAgICB0d28gcGFyZW50IGNsYXNzIHZlcnNpb25z
IG9mIHRoZSBtZXRob2QuCisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6Y29t
cHV0ZWRTdHlsZSk6IERpdHRvLgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRC5jcHA6IEFsbCBvZiB0aGVzZSBjaGFuZ2VzIGFyZSBhYm91dAorICAgICAgICBy
ZW1vdmluZyBkb2N1bWVudCB1c2FnZSBlaXRoZXIgYnkgdXNpbmcgYSBib29sIHRoYXQgaXMgc2V0
IGluIHRoZSBjb25zdHJ1Y3RvciBvcgorICAgICAgICBieSBjYWxsaW5nIG9uZSBvZiB0aGUgbmV3
IG1ldGhvZHMgYWRkZWQgdG8gQ2FudmFzU3VyZmFjZS4KKyAgICAgICAgKFdlYkNvcmU6OkNhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRDo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEKToKKyAgICAgICAg
KFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Y2xlYXJQYXRoRm9yRGFzaGJvYXJk
QmFja3dhcmRDb21wYXRpYmlsaXR5TW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQ6OmNoZWNrT3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRDo6cHJlcGFyZUdyYWRpZW50Rm9yRGFzaGJvYXJkKToKKyAgICAgICAg
KFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Y3JlYXRlUGF0dGVybik6CisgICAg
ICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldEZvbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3VGV4dEludGVybmFsKToK
KyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaDoKKyAgICAg
ICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwOiBSZW1vdmVkIHNvbWUg
ZHVwbGljYXRlIGluY2x1ZGVzLgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250
ZXh0OjptYXJrQ29udGV4dENoYW5nZWQpOiBSZWR1Y2VkIGNhbGxzIHRvIHJlbmRlckJveAorICAg
ICAgICAgYXMgaXQgbWF5IGJlY29tZSBzbGlnaHRseSBtb3JlIGV4cGVuc2l2ZSBpbiB0aGUgZnV0
dXJlLgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpyZXNoYXBlKTog
RGl0dG8uCisKIDIwMTAtMDQtMDEgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCmRpZmYgLS1naXQgYS9XZWJD
b3JlL2RvbS9DYW52YXNTdXJmYWNlLmNwcCBiL1dlYkNvcmUvZG9tL0NhbnZhc1N1cmZhY2UuY3Bw
CmluZGV4IGViOTE1NzYuLmRjN2U0ZTEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0NhbnZhc1N1
cmZhY2UuY3BwCisrKyBiL1dlYkNvcmUvZG9tL0NhbnZhc1N1cmZhY2UuY3BwCkBAIC0xNjIsMTIg
KzE2MiwxMiBAQCBjb25zdCBTZWN1cml0eU9yaWdpbiYgQ2FudmFzU3VyZmFjZTo6c2VjdXJpdHlP
cmlnaW4oKSBjb25zdAogICAgIHJldHVybiAqKHN0YXRpY19jYXN0PGNvbnN0IEhUTUxDYW52YXNF
bGVtZW50Kj4odGhpcyktPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkpOwogfQogCi1SZW5k
ZXJCb3gqIENhbnZhc1N1cmZhY2U6OmRvbVJlbmRlckJveCgpIGNvbnN0CitSZW5kZXJCb3gqIENh
bnZhc1N1cmZhY2U6OnJlbmRlckJveCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PGNvbnN0IEhUTUxDYW52YXNFbGVtZW50Kj4odGhpcyktPnJlbmRlckJveCgpOwogfQogCi1SZW5k
ZXJTdHlsZSogQ2FudmFzU3VyZmFjZTo6ZG9tQ29tcHV0ZWRTdHlsZSgpCitSZW5kZXJTdHlsZSog
Q2FudmFzU3VyZmFjZTo6Y29tcHV0ZWRTdHlsZSgpCiB7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PEhUTUxDYW52YXNFbGVtZW50Kj4odGhpcyktPmNvbXB1dGVkU3R5bGUoKTsKIH0KZGlmZiAtLWdp
dCBhL1dlYkNvcmUvZG9tL0NhbnZhc1N1cmZhY2UuaCBiL1dlYkNvcmUvZG9tL0NhbnZhc1N1cmZh
Y2UuaAppbmRleCBkYzFjY2VhLi5mNTMxN2U1IDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9DYW52
YXNTdXJmYWNlLmgKKysrIGIvV2ViQ29yZS9kb20vQ2FudmFzU3VyZmFjZS5oCkBAIC03OCw4ICs3
OCw4IEBAIHB1YmxpYzoKICAgICBBZmZpbmVUcmFuc2Zvcm0gYmFzZVRyYW5zZm9ybSgpIGNvbnN0
OwogCiAgICAgY29uc3QgU2VjdXJpdHlPcmlnaW4mIHNlY3VyaXR5T3JpZ2luKCkgY29uc3Q7Ci0g
ICAgUmVuZGVyQm94KiBkb21SZW5kZXJCb3goKSBjb25zdDsKLSAgICBSZW5kZXJTdHlsZSogZG9t
Q29tcHV0ZWRTdHlsZSgpOworICAgIFJlbmRlckJveCogcmVuZGVyQm94KCkgY29uc3Q7CisgICAg
UmVuZGVyU3R5bGUqIGNvbXB1dGVkU3R5bGUoKTsKICAgICBDU1NTdHlsZVNlbGVjdG9yKiBzdHls
ZVNlbGVjdG9yKCk7CiAKIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1M
Q2FudmFzRWxlbWVudC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCmlu
ZGV4IDU5N2NhOWQuLmVmODUzMjMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFz
RWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcApAQCAt
MTM1LDkgKzEzNSwxMCBAQCBDYW52YXNSZW5kZXJpbmdDb250ZXh0KiBIVE1MQ2FudmFzRWxlbWVu
dDo6Z2V0Q29udGV4dChjb25zdCBTdHJpbmcmIHR5cGUsIENhbnZhcwogICAgICAgICAgICAgcmV0
dXJuIDA7CiAgICAgICAgIGlmICghbV9jb250ZXh0KSB7CiAgICAgICAgICAgICBib29sIHVzZXNE
YXNoYmFyZENvbXBhdGliaWxpdHlNb2RlID0gZmFsc2U7CisjaWYgRU5BQkxFKERBU0hCT0FSRF9T
VVBQT1JUKQogICAgICAgICAgICAgaWYgKFNldHRpbmdzKiBzZXR0aW5ncyA9IGRvY3VtZW50KCkt
PnNldHRpbmdzKCkpCiAgICAgICAgICAgICAgICAgdXNlc0Rhc2hiYXJkQ29tcGF0aWJpbGl0eU1v
ZGUgPSBzZXR0aW5ncy0+dXNlc0Rhc2hib2FyZEJhY2t3YXJkQ29tcGF0aWJpbGl0eU1vZGUoKTsK
LQorI2VuZGlmCiAgICAgICAgICAgICBtX2NvbnRleHQgPSBuZXcgQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEKHRoaXMsIGRvY3VtZW50KCktPmluQ29tcGF0TW9kZSgpLCB1c2VzRGFzaGJhcmRDb21w
YXRpYmlsaXR5TW9kZSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIG1fY29udGV4dC5nZXQo
KTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oIGIvV2ViQ29y
ZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmgKaW5kZXggNzllNmYxNS4uNjk4MTY4MiAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmgKKysrIGIvV2ViQ29yZS9odG1s
L0hUTUxDYW52YXNFbGVtZW50LmgKQEAgLTgxLDYgKzgxLDkgQEAgcHVibGljOgogCiAgICAgQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dCogcmVuZGVyaW5nQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1f
Y29udGV4dC5nZXQoKTsgfQogCisgICAgUmVuZGVyQm94KiByZW5kZXJCb3goKSBjb25zdCB7IHJl
dHVybiBIVE1MRWxlbWVudDo6cmVuZGVyQm94KCk7IH0KKyAgICBSZW5kZXJTdHlsZSogY29tcHV0
ZWRTdHlsZSgpIHsgIHJldHVybiBIVE1MRWxlbWVudDo6Y29tcHV0ZWRTdHlsZSgpOyB9CisKICNp
ZiBFTkFCTEUoM0RfQ0FOVkFTKSAgICAKICAgICBib29sIGlzM0QoKSBjb25zdDsKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQu
Y3BwIGIvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCmlu
ZGV4IGI1ZDNhM2UuLjU1ODczY2QgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAorKysgYi9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKQEAgLTg5LDEyICs4OSwxOCBAQCBwcml2YXRlOgogICAg
IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCogbV9jYW52YXNDb250ZXh0OwogfTsKIAotQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQoSFRNTENhbnZhc0Vs
ZW1lbnQqIGNhbnZhcywgYm9vbCBpbkNvbXBhdE1vZGUsIGJvb2wgdXNlc0Rhc2hiYXJkQ29tcGF0
aWJpbGl0eU1vZGUpCitDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OkNhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRChIVE1MQ2FudmFzRWxlbWVudCogY2FudmFzLCBib29sIHVzZXNDU1NDb21wYXRpYmls
aXR5UGFyc2VNb2RlLCBib29sIHVzZXNEYXNoYmFyZENvbXBhdGliaWxpdHlNb2RlKQogICAgIDog
Q2FudmFzUmVuZGVyaW5nQ29udGV4dChjYW52YXMpCiAgICAgLCBtX3N0YXRlU3RhY2soMSkKLSAg
ICAsIG1faW5Db21wYXRNb2RlKGluQ29tcGF0TW9kZSkKKyAgICAsIG1fdXNlc0NTU0NvbXBhdGli
aWxpdHlQYXJzZU1vZGUodXNlc0NTU0NvbXBhdGliaWxpdHlQYXJzZU1vZGUpCisjaWYgRU5BQkxF
KERBU0hCT0FSRF9TVVBQT1JUKQogICAgICwgbV91c2VzRGFzaGJhcmRDb21wYXRpYmlsaXR5TW9k
ZSh1c2VzRGFzaGJhcmRDb21wYXRpYmlsaXR5TW9kZSkKKyNlbmRpZgogeworI2lmICFFTkFCTEUo
REFTSEJPQVJEX1NVUFBPUlQpCisgICBBU1NFUlRfVU5VU0VEKHVzZXNEYXNoYm9hcmRDb21wYXRp
YmlsaXR5TW9kZSwgIXVzZXNEYXNoYm9hcmRDb21wYXRpYmlsaXR5TW9kZSk7CisjZW5kaWYKKwog
ICAgIC8vIE1ha2Ugc3VyZSB0aGF0IGV2ZW4gaWYgdGhlIGRyYXdpbmdDb250ZXh0KCkgaGFzIGEg
ZGlmZmVyZW50IGRlZmF1bHQKICAgICAvLyB0aGlja25lc3MsIGl0IGlzIGluIHN5bmMgd2l0aCB0
aGUgY2FudmFzIHRoaWNrbmVzcy4KICAgICBzZXRMaW5lV2lkdGgobGluZVdpZHRoKCkpOwpAQCAt
MTM2Niw3ICsxMzcyLDcgQEAgU3RyaW5nIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Zm9udCgp
IGNvbnN0CiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0Rm9udChjb25zdCBTdHJp
bmcmIG5ld0ZvbnQpCiB7CiAgICAgUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiB0
ZW1wRGVjbCA9IENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpjcmVhdGUoKTsKLSAgICBDU1NQ
YXJzZXIgcGFyc2VyKCFtX2luQ29tcGF0TW9kZSk7IC8vIFVzZSB0aGUgcGFyc2UgbW9kZSBvZiB0
aGUgY2FudmFzJyBkb2N1bWVudCB3aGVuIHBhcnNpbmcgQ1NTLgorICAgIENTU1BhcnNlciBwYXJz
ZXIoIW1fdXNlc0NTU0NvbXBhdGliaWxpdHlQYXJzZU1vZGUpOwogICAgICAgICAKICAgICBTdHJp
bmcgZGVjbGFyYXRpb25UZXh0KCJmb250OiAiKTsKICAgICBkZWNsYXJhdGlvblRleHQgKz0gbmV3
Rm9udDsKQEAgLTEzODAsNyArMTM4Niw3IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
OjpzZXRGb250KGNvbnN0IFN0cmluZyYgbmV3Rm9udCkKICAgICAvLyBNYXAgdGhlIDxjYW52YXM+
IGZvbnQgaW50byB0aGUgdGV4dCBzdHlsZS4gSWYgdGhlIGZvbnQgdXNlcyBrZXl3b3JkcyBsaWtl
IGxhcmdlci9zbWFsbGVyLCB0aGVzZSB3aWxsIHdvcmsKICAgICAvLyByZWxhdGl2ZSB0byB0aGUg
Y2FudmFzLgogICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gbmV3U3R5bGUgPSBSZW5kZXJTdHlsZTo6
Y3JlYXRlKCk7Ci0gICAgaWYgKFJlbmRlclN0eWxlKiBjb21wdXRlZFN0eWxlID0gY2FudmFzKCkt
PmRvbUNvbXB1dGVkU3R5bGUoKSkKKyAgICBpZiAoUmVuZGVyU3R5bGUqIGNvbXB1dGVkU3R5bGUg
PSBjYW52YXMoKS0+Y29tcHV0ZWRTdHlsZSgpKQogICAgICAgICBuZXdTdHlsZS0+c2V0Rm9udERl
c2NyaXB0aW9uKGNvbXB1dGVkU3R5bGUtPmZvbnREZXNjcmlwdGlvbigpKTsKIAogICAgIC8vIE5v
dyBtYXAgdGhlIGZvbnQgcHJvcGVydHkgaW50byB0aGUgc3R5bGUuCkBAIC0xNDU4LDcgKzE0NjQs
NyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd1RleHRJbnRlcm5hbChjb25z
dCBTdHJpbmcmIHRleHQsIGZsb2F0IHgsIGZsbwogICAgIC8vIEZJWE1FOiBIYW5kbGUgbWF4V2lk
dGguCiAgICAgLy8gRklYTUU6IE5lZWQgdG8gdHVybiBvZmYgZm9udCBzbW9vdGhpbmcuCiAKLSAg
ICBSZW5kZXJTdHlsZSogY29tcHV0ZWRTdHlsZSA9IGNhbnZhcygpLT5kb21Db21wdXRlZFN0eWxl
KCk7CisgICAgUmVuZGVyU3R5bGUqIGNvbXB1dGVkU3R5bGUgPSBjYW52YXMoKS0+Y29tcHV0ZWRT
dHlsZSgpOwogICAgIGJvb2wgcnRsID0gY29tcHV0ZWRTdHlsZSA/IGNvbXB1dGVkU3R5bGUtPmRp
cmVjdGlvbigpID09IFJUTCA6IGZhbHNlOwogICAgIGJvb2wgb3ZlcnJpZGUgPSBjb21wdXRlZFN0
eWxlID8gY29tcHV0ZWRTdHlsZS0+dW5pY29kZUJpZGkoKSA9PSBPdmVycmlkZSA6IGZhbHNlOwog
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RC5oIGIvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaAppbmRl
eCAzZGU5MmIxLi5hZTAyNWJjIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRC5oCisrKyBiL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJELmgKQEAgLTU3LDcgKzU3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiAgICAgY2xhc3MgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEIDogcHVibGljIENhbnZhc1JlbmRl
cmluZ0NvbnRleHQgewogICAgIHB1YmxpYzoKLSAgICAgICAgQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEKEhUTUxDYW52YXNFbGVtZW50KiwgYm9vbCBpbkNvbXBhdE1vZGUsIGJvb2wgdXNlc0Rhc2hi
YXJkQ29tcGF0aWJpbGl0eU1vZGUpOworICAgICAgICBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQo
SFRNTENhbnZhc0VsZW1lbnQqLCBib29sIHVzZXNDU1NDb21wYXRpYmlsaXR5UGFyc2VNb2RlLCBi
b29sIHVzZXNEYXNoYmFyZENvbXBhdGliaWxpdHlNb2RlKTsKIAogICAgICAgICB2aXJ0dWFsIH5D
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQoKTsKICAgICAgICAgCkBAIC0yNjMsOCArMjYzLDEwIEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBjaGVja09yaWdpbihjb25zdCBTdHJp
bmcmKTsKIAogICAgICAgICBWZWN0b3I8U3RhdGUsIDE+IG1fc3RhdGVTdGFjazsKLSAgICAgICAg
Ym9vbCBtX2luQ29tcGF0TW9kZTsKKyAgICAgICAgYm9vbCBtX3VzZXNDU1NDb21wYXRpYmlsaXR5
UGFyc2VNb2RlOworI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkKICAgICAgICAgYm9vbCBt
X3VzZXNEYXNoYmFyZENvbXBhdGliaWxpdHlNb2RlOworI2VuZGlmCiAgICAgfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJl
bmRlcmluZ0NvbnRleHQuY3BwIGIvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0Nv
bnRleHQuY3BwCmluZGV4IGNkNDc2NjcuLjIwNGJmYjUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTEwMiw3ICsxMDIsNyBAQCBXZWJHTFJl
bmRlcmluZ0NvbnRleHQ6On5XZWJHTFJlbmRlcmluZ0NvbnRleHQoKQogdm9pZCBXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6Om1hcmtDb250ZXh0Q2hhbmdlZCgpCiB7CiAjaWYgVVNFKEFDQ0VMRVJBVEVE
X0NPTVBPU0lUSU5HKQotICAgIFJlbmRlckJveCogcmVuZGVyQm94ID0gY2FudmFzKCktPmRvbVJl
bmRlckJveCgpOworICAgIFJlbmRlckJveCogcmVuZGVyQm94ID0gY2FudmFzKCktPnJlbmRlckJv
eCgpOwogICAgIGlmIChyZW5kZXJCb3ggJiYgcmVuZGVyQm94LT5oYXNMYXllcigpICYmIHJlbmRl
ckJveC0+bGF5ZXIoKS0+aGFzQWNjZWxlcmF0ZWRDb21wb3NpdGluZygpKQogICAgICAgICByZW5k
ZXJCb3gtPmxheWVyKCktPnJlbmRlcmVyQ29udGVudENoYW5nZWQoKTsKICAgICBlbHNlIHsKQEAg
LTEzNyw3ICsxMzcsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6cmVzaGFwZShpbnQg
d2lkdGgsIGludCBoZWlnaHQpCiB7CiAgICAgaWYgKG1fbmVlZHNVcGRhdGUpIHsKICNpZiBVU0Uo
QUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0gICAgICAgIFJlbmRlckJveCogcmVuZGVyQm94ID0g
Y2FudmFzKCktPmRvbVJlbmRlckJveCgpOworICAgICAgICBSZW5kZXJCb3gqIHJlbmRlckJveCA9
IGNhbnZhcygpLT5yZW5kZXJCb3goKTsKICAgICAgICAgaWYgKHJlbmRlckJveCAmJiByZW5kZXJC
b3gtPmhhc0xheWVyKCkpCiAgICAgICAgICAgICByZW5kZXJCb3gtPmxheWVyKCktPnJlbmRlcmVy
Q29udGVudENoYW5nZWQoKTsKICNlbmRpZgo=
</data>
<flag name="review"
          id="35927"
          type_id="1"
          status="+"
          setter="darin"
    />
    <flag name="commit-queue"
          id="35928"
          type_id="3"
          status="-"
          setter="levin"
    />
          </attachment>
      

    </bug>

</bugzilla>