<?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>56339</bug_id>
          
          <creation_ts>2011-03-14 14:46:21 -0700</creation_ts>
          <short_desc>[Qt] WebGL content not shown when accelerated compositing is enabled</short_desc>
          <delta_ts>2011-03-16 17:58:21 -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>Layout and Rendering</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>Qt, QtTriaged</keywords>
          <priority>P5</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Jarkko Sakkinen">jarkko.j.sakkinen</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric</cc>
    
    <cc>jarkko.j.sakkinen</cc>
    
    <cc>kenneth</cc>
    
    <cc>noam</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>367256</commentid>
    <comment_count>0</comment_count>
    <who name="Jarkko Sakkinen">jarkko.j.sakkinen</who>
    <bug_when>2011-03-14 14:46:21 -0700</bug_when>
    <thetext>Before, the class GraphicsLayer had functions:

    virtual void setContentsToGraphicsContext3D(const GraphicsContext3D*);
    virtual void setGraphicsContext3DNeedsDisplay();

Now these are gone and a new function have been added:

    virtual void setContentsToCanvas(PlatformLayer*);

This causes a problem because PlatformLayer is defined as QGraphicsObject. This gives no way to acquire FBO texture of GraphicsContext3D.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>367308</commentid>
    <comment_count>1</comment_count>
    <who name="Jarkko Sakkinen">jarkko.j.sakkinen</who>
    <bug_when>2011-03-14 15:52:25 -0700</bug_when>
    <thetext>Internal QGraphicsObject derived class that blits the FBO into QPixmap might solve this. I&apos;m going to try out this solution.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>367316</commentid>
    <comment_count>2</comment_count>
    <who name="Jarkko Sakkinen">jarkko.j.sakkinen</who>
    <bug_when>2011-03-14 16:04:58 -0700</bug_when>
    <thetext>I&apos;m going to try following:

- Remove deprecated functions from GraphicsLayerQt (see description)
- Remove Canvas3DContentType and all the code that uses it.
- Implement setContentsToCanvas() that simply calls setContentsToMedia().
- Inside GraphicsContext3DQt.cpp create QGraphicsObject implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>367612</commentid>
    <comment_count>3</comment_count>
    <who name="Jarkko Sakkinen">jarkko.j.sakkinen</who>
    <bug_when>2011-03-15 04:18:37 -0700</bug_when>
    <thetext>Started writing fix for this issue. I hope I&apos;ll get something out tomorrow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>367632</commentid>
    <comment_count>4</comment_count>
    <who name="Jarkko Sakkinen">jarkko.j.sakkinen</who>
    <bug_when>2011-03-15 05:51:34 -0700</bug_when>
    <thetext>Initial implementation works (fixes the issue) but patch is not ready *yet*. Time to test how call sequences go with different options.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>367641</commentid>
    <comment_count>5</comment_count>
    <who name="Jarkko Sakkinen">jarkko.j.sakkinen</who>
    <bug_when>2011-03-15 06:59:49 -0700</bug_when>
    <thetext>Update: I adjusted code so that only for accelerated compositing texture mapping is used. For other cases memory copy is used. The point for this is that only with that configuration the direct texture mapping is stable with transformations of the webkit rendering pipeline. I think this is how it should work. Conservative support for non accelerated pipeline and GPU assisted blitting for accelerated compositing pipeline.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>367642</commentid>
    <comment_count>6</comment_count>
    <who name="Jarkko Sakkinen">jarkko.j.sakkinen</who>
    <bug_when>2011-03-15 07:01:00 -0700</bug_when>
    <thetext>At least that is the best compromise in order to get this releasable state :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>367648</commentid>
    <comment_count>7</comment_count>
    <who name="Jarkko Sakkinen">jarkko.j.sakkinen</who>
    <bug_when>2011-03-15 07:17:55 -0700</bug_when>
    <thetext>Tested that calls only paint() and paintIntoCanvas() when AC is enabled. Seems to work correctly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>367650</commentid>
    <comment_count>8</comment_count>
      <attachid>85802</attachid>
    <who name="Jarkko Sakkinen">jarkko.j.sakkinen</who>
    <bug_when>2011-03-15 07:24:22 -0700</bug_when>
    <thetext>Created attachment 85802
Fixes the issue by adapting to internal API changes.

Direct texture mapping enabled only for AC with QGLWidget viewport case. Other cases use memory copy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>367695</commentid>
    <comment_count>9</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2011-03-15 09:15:31 -0700</bug_when>
    <thetext>LGTM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>368325</commentid>
    <comment_count>10</comment_count>
    <who name="Jarkko Sakkinen">jarkko.j.sakkinen</who>
    <bug_when>2011-03-16 07:53:28 -0700</bug_when>
    <thetext>I&apos;ll revise the patch a bit:
- There was a merge conflict in GraphicsContext3DQt.cpp with latest upstream version. Fixing this.
- Removing #include &quot;GraphicsContext3D.h&quot; from GraphicsLayerQt.h. Not needed anymore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>368387</commentid>
    <comment_count>11</comment_count>
      <attachid>85941</attachid>
    <who name="Jarkko Sakkinen">jarkko.j.sakkinen</who>
    <bug_when>2011-03-16 10:59:18 -0700</bug_when>
    <thetext>Created attachment 85941
Made adjustments mentioned in comments section</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>368392</commentid>
    <comment_count>12</comment_count>
      <attachid>85943</attachid>
    <who name="Jarkko Sakkinen">jarkko.j.sakkinen</who>
    <bug_when>2011-03-16 11:05:49 -0700</bug_when>
    <thetext>Created attachment 85943
forgot changelog entry from previous patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>368457</commentid>
    <comment_count>13</comment_count>
      <attachid>85943</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2011-03-16 12:37:38 -0700</bug_when>
    <thetext>Comment on attachment 85943
forgot changelog entry from previous patch.

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

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

Would be good with a bit of summary of what you actually did</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>368561</commentid>
    <comment_count>14</comment_count>
      <attachid>85982</attachid>
    <who name="Jarkko Sakkinen">jarkko.j.sakkinen</who>
    <bug_when>2011-03-16 14:51:01 -0700</bug_when>
    <thetext>Created attachment 85982
Added description what the changeset actually does.

I think it now describes in a nutshell what is happening.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>368564</commentid>
    <comment_count>15</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2011-03-16 14:55:22 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; Created an attachment (id=85982) [details]
&gt; Added description what the changeset actually does.
&gt; 
&gt; I think it now describes in a nutshell what is happening.

Great! :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>368665</commentid>
    <comment_count>16</comment_count>
      <attachid>85982</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-03-16 17:16:40 -0700</bug_when>
    <thetext>Comment on attachment 85982
Added description what the changeset actually does.

Clearing flags on attachment: 85982

Committed r81298: &lt;http://trac.webkit.org/changeset/81298&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>368666</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-03-16 17:16:44 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>368696</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-16 17:58:21 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/81298 might have broken SnowLeopard Intel Release (Tests)
The following tests are not passing:
http/tests/filesystem/resolve-uri.html</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>85802</attachid>
            <date>2011-03-15 07:24:22 -0700</date>
            <delta_ts>2011-03-16 10:59:18 -0700</delta_ts>
            <desc>Fixes the issue by adapting to internal API changes.</desc>
            <filename>56399.diff</filename>
            <type>text/plain</type>
            <size>12355</size>
            <attacher name="Jarkko Sakkinen">jarkko.j.sakkinen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA0Yjk1ZDBmLi4yMGE0YjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUg
QEAKKzIwMTEtMDMtMTUgIEphcmtrbyBTYWtraW5lbiAgPGphcmtrby5qLnNha2tpbmVuQGdtYWls
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBb
UXRdIFdlYkdMIGNvbnRlbnQgbm90IHNob3duIHdoZW4gYWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcg
aXMgZW5hYmxlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NTYzMzkKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNE
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpHcmFwaGlj
c0NvbnRleHQzREludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
SW50ZXJuYWw6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50
ZXJuYWw6OmJvdW5kaW5nUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQz
RDo6cGxhdGZvcm1MYXllcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6
cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0M0Q6OnJlc2hhcGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0dy
YXBoaWNzTGF5ZXJRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyUXRJbXBs
OjpHcmFwaGljc0xheWVyUXRJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJR
dEltcGw6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJRdEltcGw6OmZs
dXNoQ2hhbmdlcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyUXQ6OnNldENvbnRl
bnRzVG9DYW52YXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzTGF5
ZXJRdC5oOgorCiAyMDExLTAzLTE1ICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFl1cnkgU2VtaWtoYXRza3kuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAppbmRl
eCBhOWRiNjUwLi4zODQ4NjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgKQEAgLTQ2MSw3ICs0NjEsNyBAQCBwdWJsaWM6
CiAgICAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCBwbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNE
KCk7CiAgICAgUGxhdGZvcm0zRE9iamVjdCBwbGF0Zm9ybVRleHR1cmUoKSBjb25zdDsKICNpZiBV
U0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0gICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1M
YXllcigpIGNvbnN0IHsgcmV0dXJuIDA7IH0KKyAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxh
eWVyKCkgY29uc3Q7CiAjZW5kaWYKICNlbHNlCiAgICAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHQz
RCBwbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEKCkgY29uc3QgeyByZXR1cm4gTnVsbFBsYXRmb3Jt
R3JhcGhpY3NDb250ZXh0M0Q7IH0KQEAgLTc1OSw3ICs3NTksNiBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhDYW52YXNSZW5kZXJpbmdDb250ZXh0KiBj
b250ZXh0KTsKIAogI2lmIFBMQVRGT1JNKFFUKQotICAgIHZvaWQgcGFpbnQoUVBhaW50ZXIqIHBh
aW50ZXIsIGNvbnN0IFFSZWN0JiByZWN0KSBjb25zdDsKICAgICBib29sIHBhaW50c0ludG9DYW52
YXNCdWZmZXIoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAjZWxpZiBQTEFURk9STShDSFJPTUlV
TSkKICAgICBib29sIHBhaW50c0ludG9DYW52YXNCdWZmZXIoKSBjb25zdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0
M0RRdC5jcHAKaW5kZXggYjg0OTIxNC4uZjQyZDFkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAK
QEAgLTI4LDkgKzI4LDEyIEBACiAjaW5jbHVkZSAiSG9zdFdpbmRvdy5oIgogI2luY2x1ZGUgIklt
YWdlQnVmZmVyLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKLSNpbmNsdWRlICJRV2Vi
UGFnZUNsaWVudC5oIgorI2luY2x1ZGUgIlBhZ2VDbGllbnRRdC5oIgorI2luY2x1ZGUgInF3ZWJw
YWdlLmgiCiAjaW5jbHVkZSA8UUFic3RyYWN0U2Nyb2xsQXJlYT4KKyNpbmNsdWRlIDxRR3JhcGhp
Y3NPYmplY3Q+CiAjaW5jbHVkZSA8UUdMQ29udGV4dD4KKyNpbmNsdWRlIDxRU3R5bGVPcHRpb25H
cmFwaGljc0l0ZW0+CiAjaW5jbHVkZSA8d3RmL1VudXNlZFBhcmFtLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvQ1N0cmluZy5oPgogCkBAIC0xNDUsMTMgKzE0OCwxNSBAQCB0eXBlZGVmIHZvaWQgKEFQ
SUVOVFJZKiBnbFZlcnRleEF0dHJpYjRmVHlwZSkgKEdMdWludCwgY29uc3QgR0xmbG9hdCwgY29u
c3QgR0xmbAogdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xWZXJ0ZXhBdHRyaWI0ZnZUeXBlKSAo
R0x1aW50LCBjb25zdCBHTGZsb2F0Kik7CiB0eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFZlcnRl
eEF0dHJpYlBvaW50ZXJUeXBlKSAoR0x1aW50LCBHTGludCwgR0xlbnVtLCBHTGJvb2xlYW4sIEdM
c2l6ZWksIGNvbnN0IEdMdm9pZCopOwogCi1jbGFzcyBHcmFwaGljc0NvbnRleHQzREludGVybmFs
IHsKK2NsYXNzIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwgOiBwdWJsaWMgUUdyYXBoaWNzT2Jq
ZWN0IHsKIHB1YmxpYzoKICAgICBHcmFwaGljc0NvbnRleHQzREludGVybmFsKEdyYXBoaWNzQ29u
dGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJzLCBIb3N0V2luZG93KiBob3N0V2luZG93KTsKICAgICB+
R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbCgpOwogCiAgICAgYm9vbCBpc0NvbnRleHRWYWxpZCgp
IHsgcmV0dXJuIG1fY29udGV4dFZhbGlkOyB9CiAgICAgUUdMV2lkZ2V0KiBnZXRPd25lckdMV2lk
Z2V0KFFXZWJQYWdlQ2xpZW50KiB3ZWJQYWdlQ2xpZW50KTsKKyAgICB2b2lkIHBhaW50KFFQYWlu
dGVyKiwgY29uc3QgUVN0eWxlT3B0aW9uR3JhcGhpY3NJdGVtKiwgUVdpZGdldCopOworICAgIFFS
ZWN0RiBib3VuZGluZ1JlY3QoKSBjb25zdDsKIAogICAgIGdsQWN0aXZlVGV4dHVyZVR5cGUgYWN0
aXZlVGV4dHVyZTsKICAgICBnbEF0dGFjaFNoYWRlclR5cGUgYXR0YWNoU2hhZGVyOwpAQCAtMjQ3
LDYgKzI1Miw4IEBAIHB1YmxpYzoKICAgICBHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBt
X2F0dHJzOwogICAgIEhvc3RXaW5kb3cqIG1faG9zdFdpbmRvdzsKICAgICBRR0xXaWRnZXQqIG1f
Z2xXaWRnZXQ7CisgICAgUUdMV2lkZ2V0KiBtX293bmVyR0xXaWRnZXQ7CisgICAgUVJlY3RGIG1f
Ym91bmRpbmdSZWN0OwogICAgIEdMdWludCBtX3RleHR1cmU7CiAgICAgR0x1aW50IG1fbWFpbkZi
bzsKICAgICBHTHVpbnQgbV9jdXJyZW50RmJvOwpAQCAtMjgxLDE3ICsyODgsMjYgQEAgR3JhcGhp
Y3NDb250ZXh0M0RJbnRlcm5hbDo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbChHcmFwaGljc0Nv
bnRleHQzRDo6QXR0cmlidXQKICAgICA6IG1fYXR0cnMoYXR0cnMpCiAgICAgLCBtX2hvc3RXaW5k
b3coaG9zdFdpbmRvdykKICAgICAsIG1fZ2xXaWRnZXQoMCkKKyAgICAsIG1fb3duZXJHTFdpZGdl
dCgwKQogICAgICwgbV90ZXh0dXJlKDApCiAgICAgLCBtX21haW5GYm8oMCkKICAgICAsIG1fY3Vy
cmVudEZibygwKQogICAgICwgbV9kZXB0aEJ1ZmZlcigwKQogICAgICwgbV9jb250ZXh0VmFsaWQo
dHJ1ZSkKIHsKLSAgICBRV2ViUGFnZUNsaWVudCogd2ViUGFnZUNsaWVudCA9IGhvc3RXaW5kb3ct
PnBsYXRmb3JtUGFnZUNsaWVudCgpOwotICAgIFFHTFdpZGdldCogb3duZXJHTFdpZGdldCAgPSBn
ZXRPd25lckdMV2lkZ2V0KHdlYlBhZ2VDbGllbnQpOworICAgIFBhZ2VDbGllbnRRV2lkZ2V0KiB3
ZWJQYWdlQ2xpZW50CisgICAgICAgID0gc3RhdGljX2Nhc3Q8UGFnZUNsaWVudFFXaWRnZXQqPiho
b3N0V2luZG93LT5wbGF0Zm9ybVBhZ2VDbGllbnQoKSk7CiAKLSAgICBpZiAob3duZXJHTFdpZGdl
dCkgCi0gICAgICAgIG1fZ2xXaWRnZXQgPSBuZXcgUUdMV2lkZ2V0KDAsIG93bmVyR0xXaWRnZXQp
OworI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKyAgICBpZiAod2ViUGFnZUNsaWVu
dC0+cGFnZS0+c2V0dGluZ3MoKS0+dGVzdEF0dHJpYnV0ZShRV2ViU2V0dGluZ3M6OkFjY2VsZXJh
dGVkQ29tcG9zaXRpbmdFbmFibGVkKSkgeworICAgICAgICBRQWJzdHJhY3RTY3JvbGxBcmVhKiBz
Y3JvbGxBcmVhID0gcW9iamVjdF9jYXN0PFFBYnN0cmFjdFNjcm9sbEFyZWEqPih3ZWJQYWdlQ2xp
ZW50LT5vd25lcldpZGdldCgpKTsKKyAgICAgICAgaWYgKHNjcm9sbEFyZWEpCisgICAgICAgICAg
ICBtX293bmVyR0xXaWRnZXQgPSBxb2JqZWN0X2Nhc3Q8UUdMV2lkZ2V0Kj4oc2Nyb2xsQXJlYS0+
dmlld3BvcnQoKSk7CisgICAgfQorI2VuZGlmCisKKyAgICBpZiAobV9vd25lckdMV2lkZ2V0KQor
ICAgICAgICBtX2dsV2lkZ2V0ID0gbmV3IFFHTFdpZGdldCgwLCBtX293bmVyR0xXaWRnZXQpOwog
ICAgIGVsc2UgewogICAgICAgICBRR0xGb3JtYXQgZm9ybWF0OwogICAgICAgICBmb3JtYXQuc2V0
RGVwdGgodHJ1ZSk7CkBAIC00NTQsMTQgKzQ3MCwzMiBAQCBHcmFwaGljc0NvbnRleHQzREludGVy
bmFsOjp+R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbCgpCiAgICAgbV9nbFdpZGdldCA9IDA7CiB9
CiAKLVFHTFdpZGdldCogR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Z2V0T3duZXJHTFdpZGdl
dChRV2ViUGFnZUNsaWVudCogd2ViUGFnZUNsaWVudCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJ
bnRlcm5hbDo6cGFpbnQoUVBhaW50ZXIqIHBhaW50ZXIsIGNvbnN0IFFTdHlsZU9wdGlvbkdyYXBo
aWNzSXRlbSogb3B0aW9uLCBRV2lkZ2V0KiB3aWRnZXQpCiB7Ci0gICAgUUFic3RyYWN0U2Nyb2xs
QXJlYSogc2Nyb2xsQXJlYSA9IHFvYmplY3RfY2FzdDxRQWJzdHJhY3RTY3JvbGxBcmVhKj4od2Vi
UGFnZUNsaWVudC0+b3duZXJXaWRnZXQoKSk7CisgICAgUV9VTlVTRUQod2lkZ2V0KTsKIAotICAg
IGlmIChzY3JvbGxBcmVhKSAKLSAgICAgICAgcmV0dXJuIHFvYmplY3RfY2FzdDxRR0xXaWRnZXQq
PihzY3JvbGxBcmVhLT52aWV3cG9ydCgpKTsKKyAgICBRUmVjdEYgcmVjdCA9IG9wdGlvbiA/IG9w
dGlvbi0+cmVjdCA6IGJvdW5kaW5nUmVjdCgpOwogCi0gICAgcmV0dXJuIDA7CisjaWYgUVRfVkVS
U0lPTiA+PSBRVF9WRVJTSU9OX0NIRUNLKDQsIDcsIDApCisgICAgLy8gVXNlIGRpcmVjdCB0ZXh0
dXJlIG1hcHBpbmcgaWYgV2ViR0wgY2FudmFzIGhhcyBhIHNoYXJlZCBPcGVuR0wgY29udGV4dAor
ICAgIC8vIHdpdGggYnJvd3NlcnMgT3BlbkdMIGNvbnRleHQuCisgICAgaWYgKG1fb3duZXJHTFdp
ZGdldCkgeworICAgICAgICBtX293bmVyR0xXaWRnZXQtPmRyYXdUZXh0dXJlKHJlY3QsIG1fdGV4
dHVyZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKworICAgIC8vIEFsdGVybmF0
aXZlbHkgcmVhZCBwaXhlbHMgdG8gYSBtZW1vcnkgYnVmZmVyLgorICAgIG1fZ2xXaWRnZXQtPm1h
a2VDdXJyZW50KCk7CisgICAgYmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFN
RUJVRkZFUiwgbV9tYWluRmJvKTsKKyAgICBnbFJlYWRQaXhlbHMoLyogeCAqLyAwLCAvKiB5ICov
IDAsIHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEs
IEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFLCBtX3BpeGVscy5iaXRzKCkpOworICAg
IHBhaW50ZXItPmRyYXdJbWFnZSgvKiB4ICovIDAsIC8qIHkgKi8gMCwgbV9waXhlbHMucmdiU3dh
cHBlZCgpLnRyYW5zZm9ybWVkKFFNYXRyaXgoKS5yb3RhdGUoMTgwKSkpOworICAgIGJpbmRGcmFt
ZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fY3VycmVudEZibyk7Cit9
CisKK1FSZWN0RiBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpib3VuZGluZ1JlY3QoKSBjb25z
dAoreworICAgIHJldHVybiBtX2JvdW5kaW5nUmVjdDsKIH0KIAogdm9pZCogR3JhcGhpY3NDb250
ZXh0M0RJbnRlcm5hbDo6Z2V0UHJvY0FkZHJlc3MoY29uc3QgU3RyaW5nJiBwcm9jKQpAQCAtNTEx
LDYgKzU0NSwxMSBAQCBQbGF0Zm9ybTNET2JqZWN0IEdyYXBoaWNzQ29udGV4dDNEOjpwbGF0Zm9y
bVRleHR1cmUoKSBjb25zdAogICAgIHJldHVybiBtX2ludGVybmFsLT5tX3RleHR1cmU7CiB9CiAK
K1BsYXRmb3JtTGF5ZXIqIEdyYXBoaWNzQ29udGV4dDNEOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9pbnRlcm5hbC5nZXQoKTsKK30KKwogdm9pZCBHcmFwaGljc0NvbnRl
eHQzRDo6bWFrZUNvbnRleHRDdXJyZW50KCkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0
LT5tYWtlQ3VycmVudCgpOwpAQCAtNTIyLDI0ICs1NjEsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dDNEOjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhDYW52YXNSZW5kZXJpbmdDb250ZXh0
KiBjbwogICAgIEhUTUxDYW52YXNFbGVtZW50KiBjYW52YXMgPSBjb250ZXh0LT5jYW52YXMoKTsK
ICAgICBJbWFnZUJ1ZmZlciogaW1hZ2VCdWZmZXIgPSBjYW52YXMtPmJ1ZmZlcigpOwogICAgIFFQ
YWludGVyKiBwYWludGVyID0gaW1hZ2VCdWZmZXItPmNvbnRleHQoKS0+cGxhdGZvcm1Db250ZXh0
KCk7Ci0gICAgcGFpbnQocGFpbnRlciwgUVJlY3QoUVBvaW50KDAsIDApLCBRU2l6ZShtX2N1cnJl
bnRXaWR0aCwgbV9jdXJyZW50SGVpZ2h0KSkpOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dDNE
OjpwYWludChRUGFpbnRlciogcGFpbnRlciwgY29uc3QgUVJlY3QmIHJlY3QpIGNvbnN0Ci17Ci0j
aWYgUVRfVkVSU0lPTiA+PSBRVF9WRVJTSU9OX0NIRUNLKDQsIDcsIDApCi0gICAgUVdlYlBhZ2VD
bGllbnQqIHdlYlBhZ2VDbGllbnQgPSBtX2ludGVybmFsLT5tX2hvc3RXaW5kb3ctPnBsYXRmb3Jt
UGFnZUNsaWVudCgpOwotICAgIFFHTFdpZGdldCogb3duZXJHTFdpZGdldCAgPSBtX2ludGVybmFs
LT5nZXRPd25lckdMV2lkZ2V0KHdlYlBhZ2VDbGllbnQpOwotICAgIGlmIChvd25lckdMV2lkZ2V0
KSB7Ci0gICAgICAgIG93bmVyR0xXaWRnZXQtPmRyYXdUZXh0dXJlKHJlY3QsIG1faW50ZXJuYWwt
Pm1fdGV4dHVyZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9IAotI2VuZGlmCi0gICAgbV9pbnRl
cm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5iaW5kRnJh
bWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX2ludGVybmFsLT5tX21h
aW5GYm8pOwotICAgIGdsUmVhZFBpeGVscygvKiB4ICovIDAsIC8qIHkgKi8gMCwgbV9jdXJyZW50
V2lkdGgsIG1fY3VycmVudEhlaWdodCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEsIEdyYXBoaWNz
Q29udGV4dDNEOjpVTlNJR05FRF9CWVRFLCBtX2ludGVybmFsLT5tX3BpeGVscy5iaXRzKCkpOwot
ICAgIHBhaW50ZXItPmRyYXdJbWFnZSgvKiB4ICovIDAsIC8qIHkgKi8gMCwgbV9pbnRlcm5hbC0+
bV9waXhlbHMucmdiU3dhcHBlZCgpLnRyYW5zZm9ybWVkKFFNYXRyaXgoKS5yb3RhdGUoMTgwKSkp
OwotICAgIG1faW50ZXJuYWwtPmJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJB
TUVCVUZGRVIsIG1faW50ZXJuYWwtPm1fY3VycmVudEZibyk7IAorICAgIG1faW50ZXJuYWwtPnBh
aW50KHBhaW50ZXIsIDAsIDApOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpyZXNoYXBl
KGludCB3aWR0aCwgaW50IGhlaWdodCkKQEAgLTU1MCw2ICs1NzIsNyBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dDNEOjpyZXNoYXBlKGludCB3aWR0aCwgaW50IGhlaWdodCkKICAgICBtX2N1cnJlbnRX
aWR0aCA9IHdpZHRoOwogICAgIG1fY3VycmVudEhlaWdodCA9IGhlaWdodDsKIAorICAgIG1faW50
ZXJuYWwtPm1fYm91bmRpbmdSZWN0ID0gUVJlY3RGKFFQb2ludEYoMCwgMCksIFFTaXplRih3aWR0
aCwgaGVpZ2h0KSk7CiAgICAgbV9pbnRlcm5hbC0+bV9waXhlbHMgPSBRSW1hZ2UobV9jdXJyZW50
V2lkdGgsIG1fY3VycmVudEhlaWdodCwgUUltYWdlOjpGb3JtYXRfQVJHQjMyKTsKIAogICAgIG1f
aW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0xheWVyUXQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NMYXllclF0LmNwcAppbmRleCBm
M2NmYzQ3Li4xZjc3ZmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9xdC9HcmFwaGljc0xheWVyUXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3F0L0dyYXBoaWNzTGF5ZXJRdC5jcHAKQEAgLTMxMCwxMCArMzEwLDYgQEAgcHVi
bGljOgogICAgICAgICB9CiAgICAgfSBtX3N0YXRlOwogCi0jaWYgRU5BQkxFKFdFQkdMKQotICAg
IGNvbnN0IEdyYXBoaWNzQ29udGV4dDNEKiBtX2djM0Q7Ci0jZW5kaWYKLQogI2lmbmRlZiBRVF9O
T19BTklNQVRJT04KICAgICBmcmllbmQgY2xhc3MgQW5pbWF0aW9uUXRCYXNlOwogI2VuZGlmCkBA
IC0zNDAsOSArMzM2LDYgQEAgR3JhcGhpY3NMYXllclF0SW1wbDo6R3JhcGhpY3NMYXllclF0SW1w
bChHcmFwaGljc0xheWVyUXQqIG5ld0xheWVyKQogI2lmIEVOQUJMRShUSUxFRF9CQUNLSU5HX1NU
T1JFKQogICAgICwgbV90aWxlZEJhY2tpbmdTdG9yZSgwKQogI2VuZGlmCi0jaWYgRU5BQkxFKFdF
QkdMKQotICAgICwgbV9nYzNEKDApCi0jZW5kaWYKIHsKICAgICAvLyBXZSB1c2UgZ3JhcGhpY3Mt
dmlldyBmb3IgY29tcG9zaXRpbmctb25seSwgbm90IGZvciBpbnRlcmFjdGl2aXR5LgogICAgIHNl
dEFjY2VwdGVkTW91c2VCdXR0b25zKFF0OjpOb0J1dHRvbik7CkBAIC02NjUsMTEgKzY1OCw2IEBA
IHZvaWQgR3JhcGhpY3NMYXllclF0SW1wbDo6cGFpbnQoUVBhaW50ZXIqIHBhaW50ZXIsIGNvbnN0
IFFTdHlsZU9wdGlvbkdyYXBoaWNzSXRlCiAgICAgY2FzZSBNZWRpYUNvbnRlbnRUeXBlOgogICAg
ICAgICAvLyB3ZSBkb24ndCBuZWVkIHRvIHBhaW50IGFueXRoaW5nOiB3ZSBoYXZlIGEgUUdyYXBo
aWNzSXRlbSBmcm9tIHRoZSBtZWRpYSBlbGVtZW50CiAgICAgICAgIGJyZWFrOwotI2lmIEVOQUJM
RShXRUJHTCkKLSAgICBjYXNlIENhbnZhczNEQ29udGVudFR5cGU6Ci0gICAgICAgIG1fZ2MzRC0+
cGFpbnQocGFpbnRlciwgb3B0aW9uLT5yZWN0KTsKLSAgICAgICAgYnJlYWs7Ci0jZW5kaWYKICAg
ICB9CiB9CiAKQEAgLTgwOCwxNiArNzk2LDYgQEAgdm9pZCBHcmFwaGljc0xheWVyUXRJbXBsOjpm
bHVzaENoYW5nZXMoYm9vbCByZWN1cnNpdmUsIGJvb2wgZm9yY2VVcGRhdGVUcmFuc2Zvcm0KIAog
ICAgICAgICAgICAgc2V0RmxhZyhJdGVtSGFzTm9Db250ZW50cywgIW1fbGF5ZXItPmRyYXdzQ29u
dGVudCgpKTsKICAgICAgICAgICAgIGJyZWFrOwotCi0jaWYgRU5BQkxFKFdFQkdMKQotICAgICAg
ICBjYXNlIENhbnZhczNEQ29udGVudFR5cGU6Ci0gICAgICAgICAgICBpZiAobV9wZW5kaW5nQ29u
dGVudC5jb250ZW50VHlwZSAhPSBtX2N1cnJlbnRDb250ZW50LmNvbnRlbnRUeXBlKQotICAgICAg
ICAgICAgICAgIHVwZGF0ZSgpOwotCi0gICAgICAgICAgICBzZXRDYWNoZU1vZGUoTm9DYWNoZSk7
Ci0gICAgICAgICAgICBzZXRGbGFnKEl0ZW1IYXNOb0NvbnRlbnRzLCBmYWxzZSk7Ci0gICAgICAg
ICAgICBicmVhazsKLSNlbmRpZgogICAgICAgICB9CiAgICAgfQogCkBAIC0xMjY4LDIzICsxMjQ2
LDYgQEAgdm9pZCBHcmFwaGljc0xheWVyUXQ6OnNldENvbnRlbnRzQmFja2dyb3VuZENvbG9yKGNv
bnN0IENvbG9yJiBjb2xvcikKICAgICBHcmFwaGljc0xheWVyOjpzZXRDb250ZW50c0JhY2tncm91
bmRDb2xvcihjb2xvcik7CiB9CiAKLSNpZiBFTkFCTEUoV0VCR0wpCi12b2lkIEdyYXBoaWNzTGF5
ZXJRdDo6c2V0Q29udGVudHNUb0dyYXBoaWNzQ29udGV4dDNEKGNvbnN0IEdyYXBoaWNzQ29udGV4
dDNEKiBjdHgpCi17Ci0gICAgaWYgKGN0eCA9PSBtX2ltcGwtPm1fZ2MzRCkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgbV9pbXBsLT5tX3BlbmRpbmdDb250ZW50LmNvbnRlbnRUeXBlID0gR3JhcGhp
Y3NMYXllclF0SW1wbDo6Q2FudmFzM0RDb250ZW50VHlwZTsKLSAgICBtX2ltcGwtPm1fZ2MzRCA9
IGN0eDsKLSAgICBtX2ltcGwtPm5vdGlmeUNoYW5nZShHcmFwaGljc0xheWVyUXRJbXBsOjpDb250
ZW50Q2hhbmdlKTsKLX0KLQotdm9pZCBHcmFwaGljc0xheWVyUXQ6OnNldEdyYXBoaWNzQ29udGV4
dDNETmVlZHNEaXNwbGF5KCkKLXsKLSAgICBzZXROZWVkc0Rpc3BsYXkoKTsKLX0KLSNlbmRpZgot
CiB2b2lkIEdyYXBoaWNzTGF5ZXJRdDo6c2V0Q29udGVudHNUb01lZGlhKFBsYXRmb3JtTGF5ZXIq
IG1lZGlhKQogewogICAgIGlmIChtZWRpYSkgewpAQCAtMTI5Nyw2ICsxMjU4LDExIEBAIHZvaWQg
R3JhcGhpY3NMYXllclF0OjpzZXRDb250ZW50c1RvTWVkaWEoUGxhdGZvcm1MYXllciogbWVkaWEp
CiAgICAgR3JhcGhpY3NMYXllcjo6c2V0Q29udGVudHNUb01lZGlhKG1lZGlhKTsKIH0KIAordm9p
ZCBHcmFwaGljc0xheWVyUXQ6OnNldENvbnRlbnRzVG9DYW52YXMoUGxhdGZvcm1MYXllciogY2Fu
dmFzKQoreworICAgIHNldENvbnRlbnRzVG9NZWRpYShjYW52YXMpOworfQorCiAvKiBccmVpbXAg
KEdyYXBoaWNzTGF5ZXIuaCkKICovCiB2b2lkIEdyYXBoaWNzTGF5ZXJRdDo6c2V0Q29udGVudHNP
cmllbnRhdGlvbihDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3JpZW50YXRpb24gb3JpZW50YXRpb24p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGlj
c0xheWVyUXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNz
TGF5ZXJRdC5oCmluZGV4IDU2OWJkOGQuLjBhMjM4ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzTGF5ZXJRdC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzTGF5ZXJRdC5oCkBAIC03OCwxMSAr
NzgsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzVG9JbWFnZShJbWFn
ZSopOwogICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c05lZWRzRGlzcGxheSgpOwogICAgIHZp
cnR1YWwgdm9pZCBzZXRDb250ZW50c1RvTWVkaWEoUGxhdGZvcm1MYXllciopOworICAgIHZpcnR1
YWwgdm9pZCBzZXRDb250ZW50c1RvQ2FudmFzKFBsYXRmb3JtTGF5ZXIqKTsKICAgICB2aXJ0dWFs
IHZvaWQgc2V0Q29udGVudHNCYWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29sb3ImKTsKLSNpZiBFTkFC
TEUoV0VCR0wpCi0gICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzVG9HcmFwaGljc0NvbnRleHQz
RChjb25zdCBHcmFwaGljc0NvbnRleHQzRCopOwotICAgIHZpcnR1YWwgdm9pZCBzZXRHcmFwaGlj
c0NvbnRleHQzRE5lZWRzRGlzcGxheSgpOwotI2VuZGlmCiAgICAgdmlydHVhbCB2b2lkIHNldENv
bnRlbnRzT3JpZW50YXRpb24oQ29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uIG9yaWVu
dGF0aW9uKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzdHJpYnV0ZU9wYWNpdHkoZmxvYXQpOwogICAg
IHZpcnR1YWwgZmxvYXQgYWNjdW11bGF0ZWRPcGFjaXR5KCkgY29uc3Q7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>85941</attachid>
            <date>2011-03-16 10:59:18 -0700</date>
            <delta_ts>2011-03-16 11:05:49 -0700</delta_ts>
            <desc>Made adjustments mentioned in comments section</desc>
            <filename>56339-2.diff</filename>
            <type>text/plain</type>
            <size>11580</size>
            <attacher name="Jarkko Sakkinen">jarkko.j.sakkinen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dDNELmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQzRC5oCmluZGV4IDQ1NWMzODkuLmNmYzRkYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaApAQCAtNDYxLDcgKzQ2MSw3
IEBAIHB1YmxpYzoKICAgICBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEIHBsYXRmb3JtR3JhcGhp
Y3NDb250ZXh0M0QoKTsKICAgICBQbGF0Zm9ybTNET2JqZWN0IHBsYXRmb3JtVGV4dHVyZSgpIGNv
bnN0OwogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLSAgICBQbGF0Zm9ybUxheWVy
KiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgeyByZXR1cm4gMDsgfQorICAgIFBsYXRmb3JtTGF5ZXIq
IHBsYXRmb3JtTGF5ZXIoKSBjb25zdDsKICNlbmRpZgogI2Vsc2UKICAgICBQbGF0Zm9ybUdyYXBo
aWNzQ29udGV4dDNEIHBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0QoKSBjb25zdCB7IHJldHVybiBO
dWxsUGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRDsgfQpAQCAtNzYwLDcgKzc2MCw2IEBAIHB1Ymxp
YzoKICAgICBQYXNzUmVmUHRyPEltYWdlRGF0YT4gcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9JbWFn
ZURhdGEoKTsKIAogI2lmIFBMQVRGT1JNKFFUKQotICAgIHZvaWQgcGFpbnQoUVBhaW50ZXIqIHBh
aW50ZXIsIGNvbnN0IFFSZWN0JiByZWN0KSBjb25zdDsKICAgICBib29sIHBhaW50c0ludG9DYW52
YXNCdWZmZXIoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAjZWxpZiBQTEFURk9STShDSFJPTUlV
TSkKICAgICBib29sIHBhaW50c0ludG9DYW52YXNCdWZmZXIoKSBjb25zdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0
M0RRdC5jcHAKaW5kZXggNDI0MWIwMC4uYWYxNTNhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAK
QEAgLTI3LDEwICsyNywxNCBAQAogI2luY2x1ZGUgIkhUTUxDYW52YXNFbGVtZW50LmgiCiAjaW5j
bHVkZSAiSG9zdFdpbmRvdy5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCisjaW5jbHVkZSAi
SW1hZ2VEYXRhLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKLSNpbmNsdWRlICJRV2Vi
UGFnZUNsaWVudC5oIgorI2luY2x1ZGUgIlBhZ2VDbGllbnRRdC5oIgorI2luY2x1ZGUgInF3ZWJw
YWdlLmgiCiAjaW5jbHVkZSA8UUFic3RyYWN0U2Nyb2xsQXJlYT4KKyNpbmNsdWRlIDxRR3JhcGhp
Y3NPYmplY3Q+CiAjaW5jbHVkZSA8UUdMQ29udGV4dD4KKyNpbmNsdWRlIDxRU3R5bGVPcHRpb25H
cmFwaGljc0l0ZW0+CiAjaW5jbHVkZSA8d3RmL1VudXNlZFBhcmFtLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvQ1N0cmluZy5oPgogCkBAIC0xNDUsMTMgKzE0OSwxNSBAQCB0eXBlZGVmIHZvaWQgKEFQ
SUVOVFJZKiBnbFZlcnRleEF0dHJpYjRmVHlwZSkgKEdMdWludCwgY29uc3QgR0xmbG9hdCwgY29u
c3QgR0xmbAogdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xWZXJ0ZXhBdHRyaWI0ZnZUeXBlKSAo
R0x1aW50LCBjb25zdCBHTGZsb2F0Kik7CiB0eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFZlcnRl
eEF0dHJpYlBvaW50ZXJUeXBlKSAoR0x1aW50LCBHTGludCwgR0xlbnVtLCBHTGJvb2xlYW4sIEdM
c2l6ZWksIGNvbnN0IEdMdm9pZCopOwogCi1jbGFzcyBHcmFwaGljc0NvbnRleHQzREludGVybmFs
IHsKK2NsYXNzIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwgOiBwdWJsaWMgUUdyYXBoaWNzT2Jq
ZWN0IHsKIHB1YmxpYzoKICAgICBHcmFwaGljc0NvbnRleHQzREludGVybmFsKEdyYXBoaWNzQ29u
dGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJzLCBIb3N0V2luZG93KiBob3N0V2luZG93KTsKICAgICB+
R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbCgpOwogCiAgICAgYm9vbCBpc0NvbnRleHRWYWxpZCgp
IHsgcmV0dXJuIG1fY29udGV4dFZhbGlkOyB9CiAgICAgUUdMV2lkZ2V0KiBnZXRPd25lckdMV2lk
Z2V0KFFXZWJQYWdlQ2xpZW50KiB3ZWJQYWdlQ2xpZW50KTsKKyAgICB2b2lkIHBhaW50KFFQYWlu
dGVyKiwgY29uc3QgUVN0eWxlT3B0aW9uR3JhcGhpY3NJdGVtKiwgUVdpZGdldCopOworICAgIFFS
ZWN0RiBib3VuZGluZ1JlY3QoKSBjb25zdDsKIAogICAgIGdsQWN0aXZlVGV4dHVyZVR5cGUgYWN0
aXZlVGV4dHVyZTsKICAgICBnbEF0dGFjaFNoYWRlclR5cGUgYXR0YWNoU2hhZGVyOwpAQCAtMjQ3
LDYgKzI1Myw4IEBAIHB1YmxpYzoKICAgICBHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBt
X2F0dHJzOwogICAgIEhvc3RXaW5kb3cqIG1faG9zdFdpbmRvdzsKICAgICBRR0xXaWRnZXQqIG1f
Z2xXaWRnZXQ7CisgICAgUUdMV2lkZ2V0KiBtX293bmVyR0xXaWRnZXQ7CisgICAgUVJlY3RGIG1f
Ym91bmRpbmdSZWN0OwogICAgIEdMdWludCBtX3RleHR1cmU7CiAgICAgR0x1aW50IG1fbWFpbkZi
bzsKICAgICBHTHVpbnQgbV9jdXJyZW50RmJvOwpAQCAtMjgxLDE3ICsyODksMjYgQEAgR3JhcGhp
Y3NDb250ZXh0M0RJbnRlcm5hbDo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbChHcmFwaGljc0Nv
bnRleHQzRDo6QXR0cmlidXQKICAgICA6IG1fYXR0cnMoYXR0cnMpCiAgICAgLCBtX2hvc3RXaW5k
b3coaG9zdFdpbmRvdykKICAgICAsIG1fZ2xXaWRnZXQoMCkKKyAgICAsIG1fb3duZXJHTFdpZGdl
dCgwKQogICAgICwgbV90ZXh0dXJlKDApCiAgICAgLCBtX21haW5GYm8oMCkKICAgICAsIG1fY3Vy
cmVudEZibygwKQogICAgICwgbV9kZXB0aEJ1ZmZlcigwKQogICAgICwgbV9jb250ZXh0VmFsaWQo
dHJ1ZSkKIHsKLSAgICBRV2ViUGFnZUNsaWVudCogd2ViUGFnZUNsaWVudCA9IGhvc3RXaW5kb3ct
PnBsYXRmb3JtUGFnZUNsaWVudCgpOwotICAgIFFHTFdpZGdldCogb3duZXJHTFdpZGdldCAgPSBn
ZXRPd25lckdMV2lkZ2V0KHdlYlBhZ2VDbGllbnQpOworICAgIFBhZ2VDbGllbnRRV2lkZ2V0KiB3
ZWJQYWdlQ2xpZW50CisgICAgICAgID0gc3RhdGljX2Nhc3Q8UGFnZUNsaWVudFFXaWRnZXQqPiho
b3N0V2luZG93LT5wbGF0Zm9ybVBhZ2VDbGllbnQoKSk7CiAKLSAgICBpZiAob3duZXJHTFdpZGdl
dCkgCi0gICAgICAgIG1fZ2xXaWRnZXQgPSBuZXcgUUdMV2lkZ2V0KDAsIG93bmVyR0xXaWRnZXQp
OworI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKyAgICBpZiAod2ViUGFnZUNsaWVu
dC0+cGFnZS0+c2V0dGluZ3MoKS0+dGVzdEF0dHJpYnV0ZShRV2ViU2V0dGluZ3M6OkFjY2VsZXJh
dGVkQ29tcG9zaXRpbmdFbmFibGVkKSkgeworICAgICAgICBRQWJzdHJhY3RTY3JvbGxBcmVhKiBz
Y3JvbGxBcmVhID0gcW9iamVjdF9jYXN0PFFBYnN0cmFjdFNjcm9sbEFyZWEqPih3ZWJQYWdlQ2xp
ZW50LT5vd25lcldpZGdldCgpKTsKKyAgICAgICAgaWYgKHNjcm9sbEFyZWEpCisgICAgICAgICAg
ICBtX293bmVyR0xXaWRnZXQgPSBxb2JqZWN0X2Nhc3Q8UUdMV2lkZ2V0Kj4oc2Nyb2xsQXJlYS0+
dmlld3BvcnQoKSk7CisgICAgfQorI2VuZGlmCisKKyAgICBpZiAobV9vd25lckdMV2lkZ2V0KQor
ICAgICAgICBtX2dsV2lkZ2V0ID0gbmV3IFFHTFdpZGdldCgwLCBtX293bmVyR0xXaWRnZXQpOwog
ICAgIGVsc2UgewogICAgICAgICBRR0xGb3JtYXQgZm9ybWF0OwogICAgICAgICBmb3JtYXQuc2V0
RGVwdGgodHJ1ZSk7CkBAIC00NTQsMTQgKzQ3MSwzMiBAQCBHcmFwaGljc0NvbnRleHQzREludGVy
bmFsOjp+R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbCgpCiAgICAgbV9nbFdpZGdldCA9IDA7CiB9
CiAKLVFHTFdpZGdldCogR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Z2V0T3duZXJHTFdpZGdl
dChRV2ViUGFnZUNsaWVudCogd2ViUGFnZUNsaWVudCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJ
bnRlcm5hbDo6cGFpbnQoUVBhaW50ZXIqIHBhaW50ZXIsIGNvbnN0IFFTdHlsZU9wdGlvbkdyYXBo
aWNzSXRlbSogb3B0aW9uLCBRV2lkZ2V0KiB3aWRnZXQpCiB7Ci0gICAgUUFic3RyYWN0U2Nyb2xs
QXJlYSogc2Nyb2xsQXJlYSA9IHFvYmplY3RfY2FzdDxRQWJzdHJhY3RTY3JvbGxBcmVhKj4od2Vi
UGFnZUNsaWVudC0+b3duZXJXaWRnZXQoKSk7CisgICAgUV9VTlVTRUQod2lkZ2V0KTsKIAotICAg
IGlmIChzY3JvbGxBcmVhKSAKLSAgICAgICAgcmV0dXJuIHFvYmplY3RfY2FzdDxRR0xXaWRnZXQq
PihzY3JvbGxBcmVhLT52aWV3cG9ydCgpKTsKKyAgICBRUmVjdEYgcmVjdCA9IG9wdGlvbiA/IG9w
dGlvbi0+cmVjdCA6IGJvdW5kaW5nUmVjdCgpOwogCi0gICAgcmV0dXJuIDA7CisjaWYgUVRfVkVS
U0lPTiA+PSBRVF9WRVJTSU9OX0NIRUNLKDQsIDcsIDApCisgICAgLy8gVXNlIGRpcmVjdCB0ZXh0
dXJlIG1hcHBpbmcgaWYgV2ViR0wgY2FudmFzIGhhcyBhIHNoYXJlZCBPcGVuR0wgY29udGV4dAor
ICAgIC8vIHdpdGggYnJvd3NlcnMgT3BlbkdMIGNvbnRleHQuCisgICAgaWYgKG1fb3duZXJHTFdp
ZGdldCkgeworICAgICAgICBtX293bmVyR0xXaWRnZXQtPmRyYXdUZXh0dXJlKHJlY3QsIG1fdGV4
dHVyZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKworICAgIC8vIEFsdGVybmF0
aXZlbHkgcmVhZCBwaXhlbHMgdG8gYSBtZW1vcnkgYnVmZmVyLgorICAgIG1fZ2xXaWRnZXQtPm1h
a2VDdXJyZW50KCk7CisgICAgYmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFN
RUJVRkZFUiwgbV9tYWluRmJvKTsKKyAgICBnbFJlYWRQaXhlbHMoLyogeCAqLyAwLCAvKiB5ICov
IDAsIHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEs
IEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFLCBtX3BpeGVscy5iaXRzKCkpOworICAg
IHBhaW50ZXItPmRyYXdJbWFnZSgvKiB4ICovIDAsIC8qIHkgKi8gMCwgbV9waXhlbHMucmdiU3dh
cHBlZCgpLnRyYW5zZm9ybWVkKFFNYXRyaXgoKS5yb3RhdGUoMTgwKSkpOworICAgIGJpbmRGcmFt
ZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fY3VycmVudEZibyk7Cit9
CisKK1FSZWN0RiBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpib3VuZGluZ1JlY3QoKSBjb25z
dAoreworICAgIHJldHVybiBtX2JvdW5kaW5nUmVjdDsKIH0KIAogdm9pZCogR3JhcGhpY3NDb250
ZXh0M0RJbnRlcm5hbDo6Z2V0UHJvY0FkZHJlc3MoY29uc3QgU3RyaW5nJiBwcm9jKQpAQCAtNTEx
LDYgKzU0NiwxMSBAQCBQbGF0Zm9ybTNET2JqZWN0IEdyYXBoaWNzQ29udGV4dDNEOjpwbGF0Zm9y
bVRleHR1cmUoKSBjb25zdAogICAgIHJldHVybiBtX2ludGVybmFsLT5tX3RleHR1cmU7CiB9CiAK
K1BsYXRmb3JtTGF5ZXIqIEdyYXBoaWNzQ29udGV4dDNEOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9pbnRlcm5hbC5nZXQoKTsKK30KKwogdm9pZCBHcmFwaGljc0NvbnRl
eHQzRDo6bWFrZUNvbnRleHRDdXJyZW50KCkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0
LT5tYWtlQ3VycmVudCgpOwpAQCAtNTIyLDcgKzU2Miw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
M0Q6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKENhbnZhc1JlbmRlcmluZ0NvbnRleHQq
IGNvCiAgICAgSFRNTENhbnZhc0VsZW1lbnQqIGNhbnZhcyA9IGNvbnRleHQtPmNhbnZhcygpOwog
ICAgIEltYWdlQnVmZmVyKiBpbWFnZUJ1ZmZlciA9IGNhbnZhcy0+YnVmZmVyKCk7CiAgICAgUVBh
aW50ZXIqIHBhaW50ZXIgPSBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpLT5wbGF0Zm9ybUNvbnRleHQo
KTsKLSAgICBwYWludChwYWludGVyLCBRUmVjdChRUG9pbnQoMCwgMCksIFFTaXplKG1fY3VycmVu
dFdpZHRoLCBtX2N1cnJlbnRIZWlnaHQpKSk7CisgICAgbV9pbnRlcm5hbC0+cGFpbnQocGFpbnRl
ciwgMCwgMCk7CiB9CiAKIFBhc3NSZWZQdHI8SW1hZ2VEYXRhPiBHcmFwaGljc0NvbnRleHQzRDo6
cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9JbWFnZURhdGEoKQpAQCAtNTMyLDIzICs1NzIsNiBAQCBQ
YXNzUmVmUHRyPEltYWdlRGF0YT4gR3JhcGhpY3NDb250ZXh0M0Q6OnBhaW50UmVuZGVyaW5nUmVz
dWx0c1RvSW1hZ2VEYXRhKCkKICAgICByZXR1cm4gMDsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRl
eHQzRDo6cGFpbnQoUVBhaW50ZXIqIHBhaW50ZXIsIGNvbnN0IFFSZWN0JiByZWN0KSBjb25zdAot
ewotI2lmIFFUX1ZFUlNJT04gPj0gUVRfVkVSU0lPTl9DSEVDSyg0LCA3LCAwKQotICAgIFFXZWJQ
YWdlQ2xpZW50KiB3ZWJQYWdlQ2xpZW50ID0gbV9pbnRlcm5hbC0+bV9ob3N0V2luZG93LT5wbGF0
Zm9ybVBhZ2VDbGllbnQoKTsKLSAgICBRR0xXaWRnZXQqIG93bmVyR0xXaWRnZXQgID0gbV9pbnRl
cm5hbC0+Z2V0T3duZXJHTFdpZGdldCh3ZWJQYWdlQ2xpZW50KTsKLSAgICBpZiAob3duZXJHTFdp
ZGdldCkgewotICAgICAgICBvd25lckdMV2lkZ2V0LT5kcmF3VGV4dHVyZShyZWN0LCBtX2ludGVy
bmFsLT5tX3RleHR1cmUpOwotICAgICAgICByZXR1cm47Ci0gICAgfSAKLSNlbmRpZgotICAgIG1f
aW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+Ymlu
ZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9pbnRlcm5hbC0+
bV9tYWluRmJvKTsKLSAgICBnbFJlYWRQaXhlbHMoLyogeCAqLyAwLCAvKiB5ICovIDAsIG1fY3Vy
cmVudFdpZHRoLCBtX2N1cnJlbnRIZWlnaHQsIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBLCBHcmFw
aGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSwgbV9pbnRlcm5hbC0+bV9waXhlbHMuYml0cygp
KTsKLSAgICBwYWludGVyLT5kcmF3SW1hZ2UoLyogeCAqLyAwLCAvKiB5ICovIDAsIG1faW50ZXJu
YWwtPm1fcGl4ZWxzLnJnYlN3YXBwZWQoKS50cmFuc2Zvcm1lZChRTWF0cml4KCkucm90YXRlKDE4
MCkpKTsKLSAgICBtX2ludGVybmFsLT5iaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6
OkZSQU1FQlVGRkVSLCBtX2ludGVybmFsLT5tX2N1cnJlbnRGYm8pOyAKLX0KLQogdm9pZCBHcmFw
aGljc0NvbnRleHQzRDo6cmVzaGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpCiB7CiAgICAgaWYg
KCgod2lkdGggPT0gbV9jdXJyZW50V2lkdGgpICYmIChoZWlnaHQgPT0gbV9jdXJyZW50SGVpZ2h0
KSkgfHwgKCFtX2ludGVybmFsKSkKQEAgLTU1Nyw2ICs1ODAsNyBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjpyZXNoYXBlKGludCB3aWR0aCwgaW50IGhlaWdodCkKICAgICBtX2N1cnJlbnRXaWR0
aCA9IHdpZHRoOwogICAgIG1fY3VycmVudEhlaWdodCA9IGhlaWdodDsKIAorICAgIG1faW50ZXJu
YWwtPm1fYm91bmRpbmdSZWN0ID0gUVJlY3RGKFFQb2ludEYoMCwgMCksIFFTaXplRih3aWR0aCwg
aGVpZ2h0KSk7CiAgICAgbV9pbnRlcm5hbC0+bV9waXhlbHMgPSBRSW1hZ2UobV9jdXJyZW50V2lk
dGgsIG1fY3VycmVudEhlaWdodCwgUUltYWdlOjpGb3JtYXRfQVJHQjMyKTsKIAogICAgIG1faW50
ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0xheWVyUXQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NMYXllclF0LmNwcAppbmRleCBmM2Nm
YzQ3Li4xZjc3ZmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9xdC9HcmFwaGljc0xheWVyUXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3F0L0dyYXBoaWNzTGF5ZXJRdC5jcHAKQEAgLTMxMCwxMCArMzEwLDYgQEAgcHVibGlj
OgogICAgICAgICB9CiAgICAgfSBtX3N0YXRlOwogCi0jaWYgRU5BQkxFKFdFQkdMKQotICAgIGNv
bnN0IEdyYXBoaWNzQ29udGV4dDNEKiBtX2djM0Q7Ci0jZW5kaWYKLQogI2lmbmRlZiBRVF9OT19B
TklNQVRJT04KICAgICBmcmllbmQgY2xhc3MgQW5pbWF0aW9uUXRCYXNlOwogI2VuZGlmCkBAIC0z
NDAsOSArMzM2LDYgQEAgR3JhcGhpY3NMYXllclF0SW1wbDo6R3JhcGhpY3NMYXllclF0SW1wbChH
cmFwaGljc0xheWVyUXQqIG5ld0xheWVyKQogI2lmIEVOQUJMRShUSUxFRF9CQUNLSU5HX1NUT1JF
KQogICAgICwgbV90aWxlZEJhY2tpbmdTdG9yZSgwKQogI2VuZGlmCi0jaWYgRU5BQkxFKFdFQkdM
KQotICAgICwgbV9nYzNEKDApCi0jZW5kaWYKIHsKICAgICAvLyBXZSB1c2UgZ3JhcGhpY3Mtdmll
dyBmb3IgY29tcG9zaXRpbmctb25seSwgbm90IGZvciBpbnRlcmFjdGl2aXR5LgogICAgIHNldEFj
Y2VwdGVkTW91c2VCdXR0b25zKFF0OjpOb0J1dHRvbik7CkBAIC02NjUsMTEgKzY1OCw2IEBAIHZv
aWQgR3JhcGhpY3NMYXllclF0SW1wbDo6cGFpbnQoUVBhaW50ZXIqIHBhaW50ZXIsIGNvbnN0IFFT
dHlsZU9wdGlvbkdyYXBoaWNzSXRlCiAgICAgY2FzZSBNZWRpYUNvbnRlbnRUeXBlOgogICAgICAg
ICAvLyB3ZSBkb24ndCBuZWVkIHRvIHBhaW50IGFueXRoaW5nOiB3ZSBoYXZlIGEgUUdyYXBoaWNz
SXRlbSBmcm9tIHRoZSBtZWRpYSBlbGVtZW50CiAgICAgICAgIGJyZWFrOwotI2lmIEVOQUJMRShX
RUJHTCkKLSAgICBjYXNlIENhbnZhczNEQ29udGVudFR5cGU6Ci0gICAgICAgIG1fZ2MzRC0+cGFp
bnQocGFpbnRlciwgb3B0aW9uLT5yZWN0KTsKLSAgICAgICAgYnJlYWs7Ci0jZW5kaWYKICAgICB9
CiB9CiAKQEAgLTgwOCwxNiArNzk2LDYgQEAgdm9pZCBHcmFwaGljc0xheWVyUXRJbXBsOjpmbHVz
aENoYW5nZXMoYm9vbCByZWN1cnNpdmUsIGJvb2wgZm9yY2VVcGRhdGVUcmFuc2Zvcm0KIAogICAg
ICAgICAgICAgc2V0RmxhZyhJdGVtSGFzTm9Db250ZW50cywgIW1fbGF5ZXItPmRyYXdzQ29udGVu
dCgpKTsKICAgICAgICAgICAgIGJyZWFrOwotCi0jaWYgRU5BQkxFKFdFQkdMKQotICAgICAgICBj
YXNlIENhbnZhczNEQ29udGVudFR5cGU6Ci0gICAgICAgICAgICBpZiAobV9wZW5kaW5nQ29udGVu
dC5jb250ZW50VHlwZSAhPSBtX2N1cnJlbnRDb250ZW50LmNvbnRlbnRUeXBlKQotICAgICAgICAg
ICAgICAgIHVwZGF0ZSgpOwotCi0gICAgICAgICAgICBzZXRDYWNoZU1vZGUoTm9DYWNoZSk7Ci0g
ICAgICAgICAgICBzZXRGbGFnKEl0ZW1IYXNOb0NvbnRlbnRzLCBmYWxzZSk7Ci0gICAgICAgICAg
ICBicmVhazsKLSNlbmRpZgogICAgICAgICB9CiAgICAgfQogCkBAIC0xMjY4LDIzICsxMjQ2LDYg
QEAgdm9pZCBHcmFwaGljc0xheWVyUXQ6OnNldENvbnRlbnRzQmFja2dyb3VuZENvbG9yKGNvbnN0
IENvbG9yJiBjb2xvcikKICAgICBHcmFwaGljc0xheWVyOjpzZXRDb250ZW50c0JhY2tncm91bmRD
b2xvcihjb2xvcik7CiB9CiAKLSNpZiBFTkFCTEUoV0VCR0wpCi12b2lkIEdyYXBoaWNzTGF5ZXJR
dDo6c2V0Q29udGVudHNUb0dyYXBoaWNzQ29udGV4dDNEKGNvbnN0IEdyYXBoaWNzQ29udGV4dDNE
KiBjdHgpCi17Ci0gICAgaWYgKGN0eCA9PSBtX2ltcGwtPm1fZ2MzRCkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgbV9pbXBsLT5tX3BlbmRpbmdDb250ZW50LmNvbnRlbnRUeXBlID0gR3JhcGhpY3NM
YXllclF0SW1wbDo6Q2FudmFzM0RDb250ZW50VHlwZTsKLSAgICBtX2ltcGwtPm1fZ2MzRCA9IGN0
eDsKLSAgICBtX2ltcGwtPm5vdGlmeUNoYW5nZShHcmFwaGljc0xheWVyUXRJbXBsOjpDb250ZW50
Q2hhbmdlKTsKLX0KLQotdm9pZCBHcmFwaGljc0xheWVyUXQ6OnNldEdyYXBoaWNzQ29udGV4dDNE
TmVlZHNEaXNwbGF5KCkKLXsKLSAgICBzZXROZWVkc0Rpc3BsYXkoKTsKLX0KLSNlbmRpZgotCiB2
b2lkIEdyYXBoaWNzTGF5ZXJRdDo6c2V0Q29udGVudHNUb01lZGlhKFBsYXRmb3JtTGF5ZXIqIG1l
ZGlhKQogewogICAgIGlmIChtZWRpYSkgewpAQCAtMTI5Nyw2ICsxMjU4LDExIEBAIHZvaWQgR3Jh
cGhpY3NMYXllclF0OjpzZXRDb250ZW50c1RvTWVkaWEoUGxhdGZvcm1MYXllciogbWVkaWEpCiAg
ICAgR3JhcGhpY3NMYXllcjo6c2V0Q29udGVudHNUb01lZGlhKG1lZGlhKTsKIH0KIAordm9pZCBH
cmFwaGljc0xheWVyUXQ6OnNldENvbnRlbnRzVG9DYW52YXMoUGxhdGZvcm1MYXllciogY2FudmFz
KQoreworICAgIHNldENvbnRlbnRzVG9NZWRpYShjYW52YXMpOworfQorCiAvKiBccmVpbXAgKEdy
YXBoaWNzTGF5ZXIuaCkKICovCiB2b2lkIEdyYXBoaWNzTGF5ZXJRdDo6c2V0Q29udGVudHNPcmll
bnRhdGlvbihDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3JpZW50YXRpb24gb3JpZW50YXRpb24pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0xh
eWVyUXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzTGF5
ZXJRdC5oCmluZGV4IDU2OWJkOGQuLjJhZjk4ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzTGF5ZXJRdC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzTGF5ZXJRdC5oCkBAIC0yMCw5ICsyMCw2
IEBACiAjaWZuZGVmIEdyYXBoaWNzTGF5ZXJRdF9oCiAjZGVmaW5lIEdyYXBoaWNzTGF5ZXJRdF9o
CiAKLSNpZiBFTkFCTEUoV0VCR0wpCi0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKLSNl
bmRpZgogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXIuaCIKICNpbmNsdWRlICJHcmFwaGljc0xheWVy
Q2xpZW50LmgiCiAKQEAgLTc4LDExICs3NSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
c2V0Q29udGVudHNUb0ltYWdlKEltYWdlKik7CiAgICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRz
TmVlZHNEaXNwbGF5KCk7CiAgICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzVG9NZWRpYShQbGF0
Zm9ybUxheWVyKik7CisgICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzVG9DYW52YXMoUGxhdGZv
cm1MYXllciopOwogICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c0JhY2tncm91bmRDb2xvcihj
b25zdCBDb2xvciYpOwotI2lmIEVOQUJMRShXRUJHTCkKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q29u
dGVudHNUb0dyYXBoaWNzQ29udGV4dDNEKGNvbnN0IEdyYXBoaWNzQ29udGV4dDNEKik7Ci0gICAg
dmlydHVhbCB2b2lkIHNldEdyYXBoaWNzQ29udGV4dDNETmVlZHNEaXNwbGF5KCk7Ci0jZW5kaWYK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNPcmllbnRhdGlvbihDb21wb3NpdGluZ0Nvb3Jk
aW5hdGVzT3JpZW50YXRpb24gb3JpZW50YXRpb24pOwogICAgIHZpcnR1YWwgdm9pZCBkaXN0cmli
dXRlT3BhY2l0eShmbG9hdCk7CiAgICAgdmlydHVhbCBmbG9hdCBhY2N1bXVsYXRlZE9wYWNpdHko
KSBjb25zdDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>85943</attachid>
            <date>2011-03-16 11:05:49 -0700</date>
            <delta_ts>2011-03-16 14:51:01 -0700</delta_ts>
            <desc>forgot changelog entry from previous patch.</desc>
            <filename>56339-3.diff</filename>
            <type>text/plain</type>
            <size>12878</size>
            <attacher name="Jarkko Sakkinen">jarkko.j.sakkinen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA5ZjUzOTlkLi4wNTdjZjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUg
QEAKKzIwMTEtMDMtMTYgIEphcmtrbyBTYWtraW5lbiAgPGphcmtrby5qLnNha2tpbmVuQGdtYWls
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBb
UXRdIFdlYkdMIGNvbnRlbnQgbm90IHNob3duIHdoZW4gYWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcg
aXMgZW5hYmxlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NTYzMzkKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNE
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpHcmFwaGlj
c0NvbnRleHQzREludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
SW50ZXJuYWw6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50
ZXJuYWw6OmJvdW5kaW5nUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQz
RDo6cGxhdGZvcm1MYXllcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6
cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0M0Q6OnJlc2hhcGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0dy
YXBoaWNzTGF5ZXJRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyUXRJbXBs
OjpHcmFwaGljc0xheWVyUXRJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJR
dEltcGw6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJRdEltcGw6OmZs
dXNoQ2hhbmdlcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyUXQ6OnNldENvbnRl
bnRzVG9DYW52YXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzTGF5
ZXJRdC5oOgorCiAyMDExLTAzLTE2ICBBbmRyZXkgQWRhaWtpbiAgPGFhbmRyZXlAZ29vZ2xlLmNv
bT4KIAogICAgICAgICBSZXZpZXdlZCBieSBZdXJ5IFNlbWlraGF0c2t5LgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgKaW5kZXgg
NDU1YzM4OS4uY2ZjNGRhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCkBAIC00NjEsNyArNDYxLDcgQEAgcHVibGljOgog
ICAgIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0QgcGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCgp
OwogICAgIFBsYXRmb3JtM0RPYmplY3QgcGxhdGZvcm1UZXh0dXJlKCkgY29uc3Q7CiAjaWYgVVNF
KEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5
ZXIoKSBjb25zdCB7IHJldHVybiAwOyB9CisgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXll
cigpIGNvbnN0OwogI2VuZGlmCiAjZWxzZQogICAgIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0Qg
cGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCgpIGNvbnN0IHsgcmV0dXJuIE51bGxQbGF0Zm9ybUdy
YXBoaWNzQ29udGV4dDNEOyB9CkBAIC03NjAsNyArNzYwLDYgQEAgcHVibGljOgogICAgIFBhc3NS
ZWZQdHI8SW1hZ2VEYXRhPiBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0ltYWdlRGF0YSgpOwogCiAj
aWYgUExBVEZPUk0oUVQpCi0gICAgdm9pZCBwYWludChRUGFpbnRlciogcGFpbnRlciwgY29uc3Qg
UVJlY3QmIHJlY3QpIGNvbnN0OwogICAgIGJvb2wgcGFpbnRzSW50b0NhbnZhc0J1ZmZlcigpIGNv
bnN0IHsgcmV0dXJuIHRydWU7IH0KICNlbGlmIFBMQVRGT1JNKENIUk9NSVVNKQogICAgIGJvb2wg
cGFpbnRzSW50b0NhbnZhc0J1ZmZlcigpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcAppbmRl
eCA0MjQxYjAwLi5hZjE1M2E5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcApAQCAtMjcsMTAgKzI3
LDE0IEBACiAjaW5jbHVkZSAiSFRNTENhbnZhc0VsZW1lbnQuaCIKICNpbmNsdWRlICJIb3N0V2lu
ZG93LmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKKyNpbmNsdWRlICJJbWFnZURhdGEuaCIK
ICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgotI2luY2x1ZGUgIlFXZWJQYWdlQ2xpZW50Lmgi
CisjaW5jbHVkZSAiUGFnZUNsaWVudFF0LmgiCisjaW5jbHVkZSAicXdlYnBhZ2UuaCIKICNpbmNs
dWRlIDxRQWJzdHJhY3RTY3JvbGxBcmVhPgorI2luY2x1ZGUgPFFHcmFwaGljc09iamVjdD4KICNp
bmNsdWRlIDxRR0xDb250ZXh0PgorI2luY2x1ZGUgPFFTdHlsZU9wdGlvbkdyYXBoaWNzSXRlbT4K
ICNpbmNsdWRlIDx3dGYvVW51c2VkUGFyYW0uaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5n
Lmg+CiAKQEAgLTE0NSwxMyArMTQ5LDE1IEBAIHR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVmVy
dGV4QXR0cmliNGZUeXBlKSAoR0x1aW50LCBjb25zdCBHTGZsb2F0LCBjb25zdCBHTGZsCiB0eXBl
ZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFZlcnRleEF0dHJpYjRmdlR5cGUpIChHTHVpbnQsIGNvbnN0
IEdMZmxvYXQqKTsKIHR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVmVydGV4QXR0cmliUG9pbnRl
clR5cGUpIChHTHVpbnQsIEdMaW50LCBHTGVudW0sIEdMYm9vbGVhbiwgR0xzaXplaSwgY29uc3Qg
R0x2b2lkKik7CiAKLWNsYXNzIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwgeworY2xhc3MgR3Jh
cGhpY3NDb250ZXh0M0RJbnRlcm5hbCA6IHB1YmxpYyBRR3JhcGhpY3NPYmplY3QgewogcHVibGlj
OgogICAgIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwoR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJp
YnV0ZXMgYXR0cnMsIEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cpOwogICAgIH5HcmFwaGljc0NvbnRl
eHQzREludGVybmFsKCk7CiAKICAgICBib29sIGlzQ29udGV4dFZhbGlkKCkgeyByZXR1cm4gbV9j
b250ZXh0VmFsaWQ7IH0KICAgICBRR0xXaWRnZXQqIGdldE93bmVyR0xXaWRnZXQoUVdlYlBhZ2VD
bGllbnQqIHdlYlBhZ2VDbGllbnQpOworICAgIHZvaWQgcGFpbnQoUVBhaW50ZXIqLCBjb25zdCBR
U3R5bGVPcHRpb25HcmFwaGljc0l0ZW0qLCBRV2lkZ2V0Kik7CisgICAgUVJlY3RGIGJvdW5kaW5n
UmVjdCgpIGNvbnN0OwogCiAgICAgZ2xBY3RpdmVUZXh0dXJlVHlwZSBhY3RpdmVUZXh0dXJlOwog
ICAgIGdsQXR0YWNoU2hhZGVyVHlwZSBhdHRhY2hTaGFkZXI7CkBAIC0yNDcsNiArMjUzLDggQEAg
cHVibGljOgogICAgIEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIG1fYXR0cnM7CiAgICAg
SG9zdFdpbmRvdyogbV9ob3N0V2luZG93OwogICAgIFFHTFdpZGdldCogbV9nbFdpZGdldDsKKyAg
ICBRR0xXaWRnZXQqIG1fb3duZXJHTFdpZGdldDsKKyAgICBRUmVjdEYgbV9ib3VuZGluZ1JlY3Q7
CiAgICAgR0x1aW50IG1fdGV4dHVyZTsKICAgICBHTHVpbnQgbV9tYWluRmJvOwogICAgIEdMdWlu
dCBtX2N1cnJlbnRGYm87CkBAIC0yODEsMTcgKzI4OSwyNiBAQCBHcmFwaGljc0NvbnRleHQzRElu
dGVybmFsOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsKEdyYXBoaWNzQ29udGV4dDNEOjpBdHRy
aWJ1dAogICAgIDogbV9hdHRycyhhdHRycykKICAgICAsIG1faG9zdFdpbmRvdyhob3N0V2luZG93
KQogICAgICwgbV9nbFdpZGdldCgwKQorICAgICwgbV9vd25lckdMV2lkZ2V0KDApCiAgICAgLCBt
X3RleHR1cmUoMCkKICAgICAsIG1fbWFpbkZibygwKQogICAgICwgbV9jdXJyZW50RmJvKDApCiAg
ICAgLCBtX2RlcHRoQnVmZmVyKDApCiAgICAgLCBtX2NvbnRleHRWYWxpZCh0cnVlKQogewotICAg
IFFXZWJQYWdlQ2xpZW50KiB3ZWJQYWdlQ2xpZW50ID0gaG9zdFdpbmRvdy0+cGxhdGZvcm1QYWdl
Q2xpZW50KCk7Ci0gICAgUUdMV2lkZ2V0KiBvd25lckdMV2lkZ2V0ICA9IGdldE93bmVyR0xXaWRn
ZXQod2ViUGFnZUNsaWVudCk7CisgICAgUGFnZUNsaWVudFFXaWRnZXQqIHdlYlBhZ2VDbGllbnQK
KyAgICAgICAgPSBzdGF0aWNfY2FzdDxQYWdlQ2xpZW50UVdpZGdldCo+KGhvc3RXaW5kb3ctPnBs
YXRmb3JtUGFnZUNsaWVudCgpKTsKIAotICAgIGlmIChvd25lckdMV2lkZ2V0KSAKLSAgICAgICAg
bV9nbFdpZGdldCA9IG5ldyBRR0xXaWRnZXQoMCwgb3duZXJHTFdpZGdldCk7CisjaWYgVVNFKEFD
Q0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorICAgIGlmICh3ZWJQYWdlQ2xpZW50LT5wYWdlLT5zZXR0
aW5ncygpLT50ZXN0QXR0cmlidXRlKFFXZWJTZXR0aW5nczo6QWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0VuYWJsZWQpKSB7CisgICAgICAgIFFBYnN0cmFjdFNjcm9sbEFyZWEqIHNjcm9sbEFyZWEgPSBx
b2JqZWN0X2Nhc3Q8UUFic3RyYWN0U2Nyb2xsQXJlYSo+KHdlYlBhZ2VDbGllbnQtPm93bmVyV2lk
Z2V0KCkpOworICAgICAgICBpZiAoc2Nyb2xsQXJlYSkKKyAgICAgICAgICAgIG1fb3duZXJHTFdp
ZGdldCA9IHFvYmplY3RfY2FzdDxRR0xXaWRnZXQqPihzY3JvbGxBcmVhLT52aWV3cG9ydCgpKTsK
KyAgICB9CisjZW5kaWYKKworICAgIGlmIChtX293bmVyR0xXaWRnZXQpCisgICAgICAgIG1fZ2xX
aWRnZXQgPSBuZXcgUUdMV2lkZ2V0KDAsIG1fb3duZXJHTFdpZGdldCk7CiAgICAgZWxzZSB7CiAg
ICAgICAgIFFHTEZvcm1hdCBmb3JtYXQ7CiAgICAgICAgIGZvcm1hdC5zZXREZXB0aCh0cnVlKTsK
QEAgLTQ1NCwxNCArNDcxLDMyIEBAIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6On5HcmFwaGlj
c0NvbnRleHQzREludGVybmFsKCkKICAgICBtX2dsV2lkZ2V0ID0gMDsKIH0KIAotUUdMV2lkZ2V0
KiBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpnZXRPd25lckdMV2lkZ2V0KFFXZWJQYWdlQ2xp
ZW50KiB3ZWJQYWdlQ2xpZW50KQordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpwYWlu
dChRUGFpbnRlciogcGFpbnRlciwgY29uc3QgUVN0eWxlT3B0aW9uR3JhcGhpY3NJdGVtKiBvcHRp
b24sIFFXaWRnZXQqIHdpZGdldCkKIHsKLSAgICBRQWJzdHJhY3RTY3JvbGxBcmVhKiBzY3JvbGxB
cmVhID0gcW9iamVjdF9jYXN0PFFBYnN0cmFjdFNjcm9sbEFyZWEqPih3ZWJQYWdlQ2xpZW50LT5v
d25lcldpZGdldCgpKTsKKyAgICBRX1VOVVNFRCh3aWRnZXQpOwogCi0gICAgaWYgKHNjcm9sbEFy
ZWEpIAotICAgICAgICByZXR1cm4gcW9iamVjdF9jYXN0PFFHTFdpZGdldCo+KHNjcm9sbEFyZWEt
PnZpZXdwb3J0KCkpOworICAgIFFSZWN0RiByZWN0ID0gb3B0aW9uID8gb3B0aW9uLT5yZWN0IDog
Ym91bmRpbmdSZWN0KCk7CiAKLSAgICByZXR1cm4gMDsKKyNpZiBRVF9WRVJTSU9OID49IFFUX1ZF
UlNJT05fQ0hFQ0soNCwgNywgMCkKKyAgICAvLyBVc2UgZGlyZWN0IHRleHR1cmUgbWFwcGluZyBp
ZiBXZWJHTCBjYW52YXMgaGFzIGEgc2hhcmVkIE9wZW5HTCBjb250ZXh0CisgICAgLy8gd2l0aCBi
cm93c2VycyBPcGVuR0wgY29udGV4dC4KKyAgICBpZiAobV9vd25lckdMV2lkZ2V0KSB7CisgICAg
ICAgIG1fb3duZXJHTFdpZGdldC0+ZHJhd1RleHR1cmUocmVjdCwgbV90ZXh0dXJlKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorCisgICAgLy8gQWx0ZXJuYXRpdmVseSByZWFkIHBp
eGVscyB0byBhIG1lbW9yeSBidWZmZXIuCisgICAgbV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsK
KyAgICBiaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX21h
aW5GYm8pOworICAgIGdsUmVhZFBpeGVscygvKiB4ICovIDAsIC8qIHkgKi8gMCwgcmVjdC53aWR0
aCgpLCByZWN0LmhlaWdodCgpLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSwgR3JhcGhpY3NDb250
ZXh0M0Q6OlVOU0lHTkVEX0JZVEUsIG1fcGl4ZWxzLmJpdHMoKSk7CisgICAgcGFpbnRlci0+ZHJh
d0ltYWdlKC8qIHggKi8gMCwgLyogeSAqLyAwLCBtX3BpeGVscy5yZ2JTd2FwcGVkKCkudHJhbnNm
b3JtZWQoUU1hdHJpeCgpLnJvdGF0ZSgxODApKSk7CisgICAgYmluZEZyYW1lYnVmZmVyKEdyYXBo
aWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9jdXJyZW50RmJvKTsKK30KKworUVJlY3RGIEdy
YXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmJvdW5kaW5nUmVjdCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1fYm91bmRpbmdSZWN0OwogfQogCiB2b2lkKiBHcmFwaGljc0NvbnRleHQzREludGVybmFs
OjpnZXRQcm9jQWRkcmVzcyhjb25zdCBTdHJpbmcmIHByb2MpCkBAIC01MTEsNiArNTQ2LDExIEBA
IFBsYXRmb3JtM0RPYmplY3QgR3JhcGhpY3NDb250ZXh0M0Q6OnBsYXRmb3JtVGV4dHVyZSgpIGNv
bnN0CiAgICAgcmV0dXJuIG1faW50ZXJuYWwtPm1fdGV4dHVyZTsKIH0KIAorUGxhdGZvcm1MYXll
ciogR3JhcGhpY3NDb250ZXh0M0Q6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAoreworICAgIHJldHVy
biBtX2ludGVybmFsLmdldCgpOworfQorCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjptYWtlQ29u
dGV4dEN1cnJlbnQoKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50
KCk7CkBAIC01MjIsNyArNTYyLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cGFpbnRSZW5k
ZXJpbmdSZXN1bHRzVG9DYW52YXMoQ2FudmFzUmVuZGVyaW5nQ29udGV4dCogY28KICAgICBIVE1M
Q2FudmFzRWxlbWVudCogY2FudmFzID0gY29udGV4dC0+Y2FudmFzKCk7CiAgICAgSW1hZ2VCdWZm
ZXIqIGltYWdlQnVmZmVyID0gY2FudmFzLT5idWZmZXIoKTsKICAgICBRUGFpbnRlciogcGFpbnRl
ciA9IGltYWdlQnVmZmVyLT5jb250ZXh0KCktPnBsYXRmb3JtQ29udGV4dCgpOwotICAgIHBhaW50
KHBhaW50ZXIsIFFSZWN0KFFQb2ludCgwLCAwKSwgUVNpemUobV9jdXJyZW50V2lkdGgsIG1fY3Vy
cmVudEhlaWdodCkpKTsKKyAgICBtX2ludGVybmFsLT5wYWludChwYWludGVyLCAwLCAwKTsKIH0K
IAogUGFzc1JlZlB0cjxJbWFnZURhdGE+IEdyYXBoaWNzQ29udGV4dDNEOjpwYWludFJlbmRlcmlu
Z1Jlc3VsdHNUb0ltYWdlRGF0YSgpCkBAIC01MzIsMjMgKzU3Miw2IEBAIFBhc3NSZWZQdHI8SW1h
Z2VEYXRhPiBHcmFwaGljc0NvbnRleHQzRDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9JbWFnZURh
dGEoKQogICAgIHJldHVybiAwOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpwYWludChR
UGFpbnRlciogcGFpbnRlciwgY29uc3QgUVJlY3QmIHJlY3QpIGNvbnN0Ci17Ci0jaWYgUVRfVkVS
U0lPTiA+PSBRVF9WRVJTSU9OX0NIRUNLKDQsIDcsIDApCi0gICAgUVdlYlBhZ2VDbGllbnQqIHdl
YlBhZ2VDbGllbnQgPSBtX2ludGVybmFsLT5tX2hvc3RXaW5kb3ctPnBsYXRmb3JtUGFnZUNsaWVu
dCgpOwotICAgIFFHTFdpZGdldCogb3duZXJHTFdpZGdldCAgPSBtX2ludGVybmFsLT5nZXRPd25l
ckdMV2lkZ2V0KHdlYlBhZ2VDbGllbnQpOwotICAgIGlmIChvd25lckdMV2lkZ2V0KSB7Ci0gICAg
ICAgIG93bmVyR0xXaWRnZXQtPmRyYXdUZXh0dXJlKHJlY3QsIG1faW50ZXJuYWwtPm1fdGV4dHVy
ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9IAotI2VuZGlmCi0gICAgbV9pbnRlcm5hbC0+bV9n
bFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5iaW5kRnJhbWVidWZmZXIo
R3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX2ludGVybmFsLT5tX21haW5GYm8pOwot
ICAgIGdsUmVhZFBpeGVscygvKiB4ICovIDAsIC8qIHkgKi8gMCwgbV9jdXJyZW50V2lkdGgsIG1f
Y3VycmVudEhlaWdodCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEsIEdyYXBoaWNzQ29udGV4dDNE
OjpVTlNJR05FRF9CWVRFLCBtX2ludGVybmFsLT5tX3BpeGVscy5iaXRzKCkpOwotICAgIHBhaW50
ZXItPmRyYXdJbWFnZSgvKiB4ICovIDAsIC8qIHkgKi8gMCwgbV9pbnRlcm5hbC0+bV9waXhlbHMu
cmdiU3dhcHBlZCgpLnRyYW5zZm9ybWVkKFFNYXRyaXgoKS5yb3RhdGUoMTgwKSkpOwotICAgIG1f
aW50ZXJuYWwtPmJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIs
IG1faW50ZXJuYWwtPm1fY3VycmVudEZibyk7IAotfQotCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNE
OjpyZXNoYXBlKGludCB3aWR0aCwgaW50IGhlaWdodCkKIHsKICAgICBpZiAoKCh3aWR0aCA9PSBt
X2N1cnJlbnRXaWR0aCkgJiYgKGhlaWdodCA9PSBtX2N1cnJlbnRIZWlnaHQpKSB8fCAoIW1faW50
ZXJuYWwpKQpAQCAtNTU3LDYgKzU4MCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnJlc2hh
cGUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQogICAgIG1fY3VycmVudFdpZHRoID0gd2lkdGg7CiAg
ICAgbV9jdXJyZW50SGVpZ2h0ID0gaGVpZ2h0OwogCisgICAgbV9pbnRlcm5hbC0+bV9ib3VuZGlu
Z1JlY3QgPSBRUmVjdEYoUVBvaW50RigwLCAwKSwgUVNpemVGKHdpZHRoLCBoZWlnaHQpKTsKICAg
ICBtX2ludGVybmFsLT5tX3BpeGVscyA9IFFJbWFnZShtX2N1cnJlbnRXaWR0aCwgbV9jdXJyZW50
SGVpZ2h0LCBRSW1hZ2U6OkZvcm1hdF9BUkdCMzIpOwogCiAgICAgbV9pbnRlcm5hbC0+bV9nbFdp
ZGdldC0+bWFrZUN1cnJlbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3F0L0dyYXBoaWNzTGF5ZXJRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9xdC9HcmFwaGljc0xheWVyUXQuY3BwCmluZGV4IGYzY2ZjNDcuLjFmNzdmYzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNz
TGF5ZXJRdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3Jh
cGhpY3NMYXllclF0LmNwcApAQCAtMzEwLDEwICszMTAsNiBAQCBwdWJsaWM6CiAgICAgICAgIH0K
ICAgICB9IG1fc3RhdGU7CiAKLSNpZiBFTkFCTEUoV0VCR0wpCi0gICAgY29uc3QgR3JhcGhpY3ND
b250ZXh0M0QqIG1fZ2MzRDsKLSNlbmRpZgotCiAjaWZuZGVmIFFUX05PX0FOSU1BVElPTgogICAg
IGZyaWVuZCBjbGFzcyBBbmltYXRpb25RdEJhc2U7CiAjZW5kaWYKQEAgLTM0MCw5ICszMzYsNiBA
QCBHcmFwaGljc0xheWVyUXRJbXBsOjpHcmFwaGljc0xheWVyUXRJbXBsKEdyYXBoaWNzTGF5ZXJR
dCogbmV3TGF5ZXIpCiAjaWYgRU5BQkxFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCiAgICAgLCBtX3Rp
bGVkQmFja2luZ1N0b3JlKDApCiAjZW5kaWYKLSNpZiBFTkFCTEUoV0VCR0wpCi0gICAgLCBtX2dj
M0QoMCkKLSNlbmRpZgogewogICAgIC8vIFdlIHVzZSBncmFwaGljcy12aWV3IGZvciBjb21wb3Np
dGluZy1vbmx5LCBub3QgZm9yIGludGVyYWN0aXZpdHkuCiAgICAgc2V0QWNjZXB0ZWRNb3VzZUJ1
dHRvbnMoUXQ6Ok5vQnV0dG9uKTsKQEAgLTY2NSwxMSArNjU4LDYgQEAgdm9pZCBHcmFwaGljc0xh
eWVyUXRJbXBsOjpwYWludChRUGFpbnRlciogcGFpbnRlciwgY29uc3QgUVN0eWxlT3B0aW9uR3Jh
cGhpY3NJdGUKICAgICBjYXNlIE1lZGlhQ29udGVudFR5cGU6CiAgICAgICAgIC8vIHdlIGRvbid0
IG5lZWQgdG8gcGFpbnQgYW55dGhpbmc6IHdlIGhhdmUgYSBRR3JhcGhpY3NJdGVtIGZyb20gdGhl
IG1lZGlhIGVsZW1lbnQKICAgICAgICAgYnJlYWs7Ci0jaWYgRU5BQkxFKFdFQkdMKQotICAgIGNh
c2UgQ2FudmFzM0RDb250ZW50VHlwZToKLSAgICAgICAgbV9nYzNELT5wYWludChwYWludGVyLCBv
cHRpb24tPnJlY3QpOwotICAgICAgICBicmVhazsKLSNlbmRpZgogICAgIH0KIH0KIApAQCAtODA4
LDE2ICs3OTYsNiBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJRdEltcGw6OmZsdXNoQ2hhbmdlcyhib29s
IHJlY3Vyc2l2ZSwgYm9vbCBmb3JjZVVwZGF0ZVRyYW5zZm9ybQogCiAgICAgICAgICAgICBzZXRG
bGFnKEl0ZW1IYXNOb0NvbnRlbnRzLCAhbV9sYXllci0+ZHJhd3NDb250ZW50KCkpOwogICAgICAg
ICAgICAgYnJlYWs7Ci0KLSNpZiBFTkFCTEUoV0VCR0wpCi0gICAgICAgIGNhc2UgQ2FudmFzM0RD
b250ZW50VHlwZToKLSAgICAgICAgICAgIGlmIChtX3BlbmRpbmdDb250ZW50LmNvbnRlbnRUeXBl
ICE9IG1fY3VycmVudENvbnRlbnQuY29udGVudFR5cGUpCi0gICAgICAgICAgICAgICAgdXBkYXRl
KCk7Ci0KLSAgICAgICAgICAgIHNldENhY2hlTW9kZShOb0NhY2hlKTsKLSAgICAgICAgICAgIHNl
dEZsYWcoSXRlbUhhc05vQ29udGVudHMsIGZhbHNlKTsKLSAgICAgICAgICAgIGJyZWFrOwotI2Vu
ZGlmCiAgICAgICAgIH0KICAgICB9CiAKQEAgLTEyNjgsMjMgKzEyNDYsNiBAQCB2b2lkIEdyYXBo
aWNzTGF5ZXJRdDo6c2V0Q29udGVudHNCYWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9y
KQogICAgIEdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzQmFja2dyb3VuZENvbG9yKGNvbG9yKTsK
IH0KIAotI2lmIEVOQUJMRShXRUJHTCkKLXZvaWQgR3JhcGhpY3NMYXllclF0OjpzZXRDb250ZW50
c1RvR3JhcGhpY3NDb250ZXh0M0QoY29uc3QgR3JhcGhpY3NDb250ZXh0M0QqIGN0eCkKLXsKLSAg
ICBpZiAoY3R4ID09IG1faW1wbC0+bV9nYzNEKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX2lt
cGwtPm1fcGVuZGluZ0NvbnRlbnQuY29udGVudFR5cGUgPSBHcmFwaGljc0xheWVyUXRJbXBsOjpD
YW52YXMzRENvbnRlbnRUeXBlOwotICAgIG1faW1wbC0+bV9nYzNEID0gY3R4OwotICAgIG1faW1w
bC0+bm90aWZ5Q2hhbmdlKEdyYXBoaWNzTGF5ZXJRdEltcGw6OkNvbnRlbnRDaGFuZ2UpOwotfQot
Ci12b2lkIEdyYXBoaWNzTGF5ZXJRdDo6c2V0R3JhcGhpY3NDb250ZXh0M0ROZWVkc0Rpc3BsYXko
KQotewotICAgIHNldE5lZWRzRGlzcGxheSgpOwotfQotI2VuZGlmCi0KIHZvaWQgR3JhcGhpY3NM
YXllclF0OjpzZXRDb250ZW50c1RvTWVkaWEoUGxhdGZvcm1MYXllciogbWVkaWEpCiB7CiAgICAg
aWYgKG1lZGlhKSB7CkBAIC0xMjk3LDYgKzEyNTgsMTEgQEAgdm9pZCBHcmFwaGljc0xheWVyUXQ6
OnNldENvbnRlbnRzVG9NZWRpYShQbGF0Zm9ybUxheWVyKiBtZWRpYSkKICAgICBHcmFwaGljc0xh
eWVyOjpzZXRDb250ZW50c1RvTWVkaWEobWVkaWEpOwogfQogCit2b2lkIEdyYXBoaWNzTGF5ZXJR
dDo6c2V0Q29udGVudHNUb0NhbnZhcyhQbGF0Zm9ybUxheWVyKiBjYW52YXMpCit7CisgICAgc2V0
Q29udGVudHNUb01lZGlhKGNhbnZhcyk7Cit9CisKIC8qIFxyZWltcCAoR3JhcGhpY3NMYXllci5o
KQogKi8KIHZvaWQgR3JhcGhpY3NMYXllclF0OjpzZXRDb250ZW50c09yaWVudGF0aW9uKENvbXBv
c2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzTGF5ZXJRdC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NMYXllclF0LmgKaW5kZXgg
NTY5YmQ4ZC4uMmFmOThmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvcXQvR3JhcGhpY3NMYXllclF0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvcXQvR3JhcGhpY3NMYXllclF0LmgKQEAgLTIwLDkgKzIwLDYgQEAKICNpZm5kZWYg
R3JhcGhpY3NMYXllclF0X2gKICNkZWZpbmUgR3JhcGhpY3NMYXllclF0X2gKIAotI2lmIEVOQUJM
RShXRUJHTCkKLSNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgotI2VuZGlmCiAjaW5jbHVk
ZSAiR3JhcGhpY3NMYXllci5oIgogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDbGllbnQuaCIKIApA
QCAtNzgsMTEgKzc1LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1Rv
SW1hZ2UoSW1hZ2UqKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNOZWVkc0Rpc3BsYXko
KTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNUb01lZGlhKFBsYXRmb3JtTGF5ZXIqKTsK
KyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNUb0NhbnZhcyhQbGF0Zm9ybUxheWVyKik7CiAg
ICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzQmFja2dyb3VuZENvbG9yKGNvbnN0IENvbG9yJik7
Ci0jaWYgRU5BQkxFKFdFQkdMKQotICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1RvR3JhcGhp
Y3NDb250ZXh0M0QoY29uc3QgR3JhcGhpY3NDb250ZXh0M0QqKTsKLSAgICB2aXJ0dWFsIHZvaWQg
c2V0R3JhcGhpY3NDb250ZXh0M0ROZWVkc0Rpc3BsYXkoKTsKLSNlbmRpZgogICAgIHZpcnR1YWwg
dm9pZCBzZXRDb250ZW50c09yaWVudGF0aW9uKENvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRh
dGlvbiBvcmllbnRhdGlvbik7CiAgICAgdmlydHVhbCB2b2lkIGRpc3RyaWJ1dGVPcGFjaXR5KGZs
b2F0KTsKICAgICB2aXJ0dWFsIGZsb2F0IGFjY3VtdWxhdGVkT3BhY2l0eSgpIGNvbnN0Owo=
</data>
<flag name="review"
          id="78144"
          type_id="1"
          status="+"
          setter="kenneth"
    />
    <flag name="commit-queue"
          id="78145"
          type_id="3"
          status="-"
          setter="kenneth"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>85982</attachid>
            <date>2011-03-16 14:51:01 -0700</date>
            <delta_ts>2011-03-16 17:16:40 -0700</delta_ts>
            <desc>Added description what the changeset actually does.</desc>
            <filename>56339-4.diff</filename>
            <type>text/plain</type>
            <size>13148</size>
            <attacher name="Jarkko Sakkinen">jarkko.j.sakkinen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA5ZjUzOTlkLi5lN2M3MjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAg
QEAKKzIwMTEtMDMtMTYgIEphcmtrbyBTYWtraW5lbiAgPGphcmtrby5qLnNha2tpbmVuQGdtYWls
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBb
UXRdIFdlYkdMIGNvbnRlbnQgbm90IHNob3duIHdoZW4gYWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcg
aXMgZW5hYmxlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NTYzMzkKKworICAgICAgICBSZW1vdmVkIGFsbCBwcmV2aW91c2x5IGltcGxlbWVudGVkIFdl
YkdMIGNvZGUgZnJvbSBHcmFwaGljc0xheWVyUXQKKyAgICAgICAgYmVjYXVzZSBBUEkgaGFzIGNo
YW5nZWQuIEdyYXBoaWNzQ29udGV4dDNEIHByb3ZpZGVzIFBsYXRmb3JtTGF5ZXIKKyAgICAgICAg
dGhhdCBpcyBhZGRlZCBhcyBhIGNoaWxkIG9mIEdyYXBoaWNzTGF5ZXIgYW5kIGlzIHRoZXJlZm9y
ZSBwYWludGVkCisgICAgICAgIHRocm91Z2ggUUdyYXBoaWNzVmlldyBwaXBlbGluZS4KKworICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpHcmFwaGljc0NvbnRleHQzREludGVy
bmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnBhaW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmJvdW5kaW5n
UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6cGxhdGZvcm1MYXll
cik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6cGFpbnRSZW5kZXJpbmdS
ZXN1bHRzVG9DYW52YXMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnJl
c2hhcGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzTGF5ZXJRdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyUXRJbXBsOjpHcmFwaGljc0xheWVy
UXRJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJRdEltcGw6OnBhaW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJRdEltcGw6OmZsdXNoQ2hhbmdlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyUXQ6OnNldENvbnRlbnRzVG9DYW52YXMpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzTGF5ZXJRdC5oOgorCiAyMDEx
LTAzLTE2ICBBbmRyZXkgQWRhaWtpbiAgPGFhbmRyZXlAZ29vZ2xlLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBZdXJ5IFNlbWlraGF0c2t5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgKaW5kZXggNDU1YzM4OS4uY2ZjNGRh
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0M0QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQzRC5oCkBAIC00NjEsNyArNDYxLDcgQEAgcHVibGljOgogICAgIFBsYXRmb3JtR3Jh
cGhpY3NDb250ZXh0M0QgcGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCgpOwogICAgIFBsYXRmb3Jt
M0RPYmplY3QgcGxhdGZvcm1UZXh0dXJlKCkgY29uc3Q7CiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NP
TVBPU0lUSU5HKQotICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCB7IHJl
dHVybiAwOyB9CisgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0OwogI2Vu
ZGlmCiAjZWxzZQogICAgIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0QgcGxhdGZvcm1HcmFwaGlj
c0NvbnRleHQzRCgpIGNvbnN0IHsgcmV0dXJuIE51bGxQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNE
OyB9CkBAIC03NjAsNyArNzYwLDYgQEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8SW1hZ2VEYXRh
PiBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0ltYWdlRGF0YSgpOwogCiAjaWYgUExBVEZPUk0oUVQp
Ci0gICAgdm9pZCBwYWludChRUGFpbnRlciogcGFpbnRlciwgY29uc3QgUVJlY3QmIHJlY3QpIGNv
bnN0OwogICAgIGJvb2wgcGFpbnRzSW50b0NhbnZhc0J1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIHRy
dWU7IH0KICNlbGlmIFBMQVRGT1JNKENIUk9NSVVNKQogICAgIGJvb2wgcGFpbnRzSW50b0NhbnZh
c0J1ZmZlcigpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcAppbmRleCA0MjQxYjAwLi5hZjE1
M2E5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFw
aGljc0NvbnRleHQzRFF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcApAQCAtMjcsMTAgKzI3LDE0IEBACiAjaW5jbHVk
ZSAiSFRNTENhbnZhc0VsZW1lbnQuaCIKICNpbmNsdWRlICJIb3N0V2luZG93LmgiCiAjaW5jbHVk
ZSAiSW1hZ2VCdWZmZXIuaCIKKyNpbmNsdWRlICJJbWFnZURhdGEuaCIKICNpbmNsdWRlICJOb3RJ
bXBsZW1lbnRlZC5oIgotI2luY2x1ZGUgIlFXZWJQYWdlQ2xpZW50LmgiCisjaW5jbHVkZSAiUGFn
ZUNsaWVudFF0LmgiCisjaW5jbHVkZSAicXdlYnBhZ2UuaCIKICNpbmNsdWRlIDxRQWJzdHJhY3RT
Y3JvbGxBcmVhPgorI2luY2x1ZGUgPFFHcmFwaGljc09iamVjdD4KICNpbmNsdWRlIDxRR0xDb250
ZXh0PgorI2luY2x1ZGUgPFFTdHlsZU9wdGlvbkdyYXBoaWNzSXRlbT4KICNpbmNsdWRlIDx3dGYv
VW51c2VkUGFyYW0uaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKQEAgLTE0NSwx
MyArMTQ5LDE1IEBAIHR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVmVydGV4QXR0cmliNGZUeXBl
KSAoR0x1aW50LCBjb25zdCBHTGZsb2F0LCBjb25zdCBHTGZsCiB0eXBlZGVmIHZvaWQgKEFQSUVO
VFJZKiBnbFZlcnRleEF0dHJpYjRmdlR5cGUpIChHTHVpbnQsIGNvbnN0IEdMZmxvYXQqKTsKIHR5
cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVmVydGV4QXR0cmliUG9pbnRlclR5cGUpIChHTHVpbnQs
IEdMaW50LCBHTGVudW0sIEdMYm9vbGVhbiwgR0xzaXplaSwgY29uc3QgR0x2b2lkKik7CiAKLWNs
YXNzIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwgeworY2xhc3MgR3JhcGhpY3NDb250ZXh0M0RJ
bnRlcm5hbCA6IHB1YmxpYyBRR3JhcGhpY3NPYmplY3QgewogcHVibGljOgogICAgIEdyYXBoaWNz
Q29udGV4dDNESW50ZXJuYWwoR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cnMsIEhv
c3RXaW5kb3cqIGhvc3RXaW5kb3cpOwogICAgIH5HcmFwaGljc0NvbnRleHQzREludGVybmFsKCk7
CiAKICAgICBib29sIGlzQ29udGV4dFZhbGlkKCkgeyByZXR1cm4gbV9jb250ZXh0VmFsaWQ7IH0K
ICAgICBRR0xXaWRnZXQqIGdldE93bmVyR0xXaWRnZXQoUVdlYlBhZ2VDbGllbnQqIHdlYlBhZ2VD
bGllbnQpOworICAgIHZvaWQgcGFpbnQoUVBhaW50ZXIqLCBjb25zdCBRU3R5bGVPcHRpb25HcmFw
aGljc0l0ZW0qLCBRV2lkZ2V0Kik7CisgICAgUVJlY3RGIGJvdW5kaW5nUmVjdCgpIGNvbnN0Owog
CiAgICAgZ2xBY3RpdmVUZXh0dXJlVHlwZSBhY3RpdmVUZXh0dXJlOwogICAgIGdsQXR0YWNoU2hh
ZGVyVHlwZSBhdHRhY2hTaGFkZXI7CkBAIC0yNDcsNiArMjUzLDggQEAgcHVibGljOgogICAgIEdy
YXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIG1fYXR0cnM7CiAgICAgSG9zdFdpbmRvdyogbV9o
b3N0V2luZG93OwogICAgIFFHTFdpZGdldCogbV9nbFdpZGdldDsKKyAgICBRR0xXaWRnZXQqIG1f
b3duZXJHTFdpZGdldDsKKyAgICBRUmVjdEYgbV9ib3VuZGluZ1JlY3Q7CiAgICAgR0x1aW50IG1f
dGV4dHVyZTsKICAgICBHTHVpbnQgbV9tYWluRmJvOwogICAgIEdMdWludCBtX2N1cnJlbnRGYm87
CkBAIC0yODEsMTcgKzI4OSwyNiBAQCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpHcmFwaGlj
c0NvbnRleHQzREludGVybmFsKEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dAogICAgIDogbV9h
dHRycyhhdHRycykKICAgICAsIG1faG9zdFdpbmRvdyhob3N0V2luZG93KQogICAgICwgbV9nbFdp
ZGdldCgwKQorICAgICwgbV9vd25lckdMV2lkZ2V0KDApCiAgICAgLCBtX3RleHR1cmUoMCkKICAg
ICAsIG1fbWFpbkZibygwKQogICAgICwgbV9jdXJyZW50RmJvKDApCiAgICAgLCBtX2RlcHRoQnVm
ZmVyKDApCiAgICAgLCBtX2NvbnRleHRWYWxpZCh0cnVlKQogewotICAgIFFXZWJQYWdlQ2xpZW50
KiB3ZWJQYWdlQ2xpZW50ID0gaG9zdFdpbmRvdy0+cGxhdGZvcm1QYWdlQ2xpZW50KCk7Ci0gICAg
UUdMV2lkZ2V0KiBvd25lckdMV2lkZ2V0ICA9IGdldE93bmVyR0xXaWRnZXQod2ViUGFnZUNsaWVu
dCk7CisgICAgUGFnZUNsaWVudFFXaWRnZXQqIHdlYlBhZ2VDbGllbnQKKyAgICAgICAgPSBzdGF0
aWNfY2FzdDxQYWdlQ2xpZW50UVdpZGdldCo+KGhvc3RXaW5kb3ctPnBsYXRmb3JtUGFnZUNsaWVu
dCgpKTsKIAotICAgIGlmIChvd25lckdMV2lkZ2V0KSAKLSAgICAgICAgbV9nbFdpZGdldCA9IG5l
dyBRR0xXaWRnZXQoMCwgb3duZXJHTFdpZGdldCk7CisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBP
U0lUSU5HKQorICAgIGlmICh3ZWJQYWdlQ2xpZW50LT5wYWdlLT5zZXR0aW5ncygpLT50ZXN0QXR0
cmlidXRlKFFXZWJTZXR0aW5nczo6QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQpKSB7Cisg
ICAgICAgIFFBYnN0cmFjdFNjcm9sbEFyZWEqIHNjcm9sbEFyZWEgPSBxb2JqZWN0X2Nhc3Q8UUFi
c3RyYWN0U2Nyb2xsQXJlYSo+KHdlYlBhZ2VDbGllbnQtPm93bmVyV2lkZ2V0KCkpOworICAgICAg
ICBpZiAoc2Nyb2xsQXJlYSkKKyAgICAgICAgICAgIG1fb3duZXJHTFdpZGdldCA9IHFvYmplY3Rf
Y2FzdDxRR0xXaWRnZXQqPihzY3JvbGxBcmVhLT52aWV3cG9ydCgpKTsKKyAgICB9CisjZW5kaWYK
KworICAgIGlmIChtX293bmVyR0xXaWRnZXQpCisgICAgICAgIG1fZ2xXaWRnZXQgPSBuZXcgUUdM
V2lkZ2V0KDAsIG1fb3duZXJHTFdpZGdldCk7CiAgICAgZWxzZSB7CiAgICAgICAgIFFHTEZvcm1h
dCBmb3JtYXQ7CiAgICAgICAgIGZvcm1hdC5zZXREZXB0aCh0cnVlKTsKQEAgLTQ1NCwxNCArNDcx
LDMyIEBAIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6On5HcmFwaGljc0NvbnRleHQzREludGVy
bmFsKCkKICAgICBtX2dsV2lkZ2V0ID0gMDsKIH0KIAotUUdMV2lkZ2V0KiBHcmFwaGljc0NvbnRl
eHQzREludGVybmFsOjpnZXRPd25lckdMV2lkZ2V0KFFXZWJQYWdlQ2xpZW50KiB3ZWJQYWdlQ2xp
ZW50KQordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpwYWludChRUGFpbnRlciogcGFp
bnRlciwgY29uc3QgUVN0eWxlT3B0aW9uR3JhcGhpY3NJdGVtKiBvcHRpb24sIFFXaWRnZXQqIHdp
ZGdldCkKIHsKLSAgICBRQWJzdHJhY3RTY3JvbGxBcmVhKiBzY3JvbGxBcmVhID0gcW9iamVjdF9j
YXN0PFFBYnN0cmFjdFNjcm9sbEFyZWEqPih3ZWJQYWdlQ2xpZW50LT5vd25lcldpZGdldCgpKTsK
KyAgICBRX1VOVVNFRCh3aWRnZXQpOwogCi0gICAgaWYgKHNjcm9sbEFyZWEpIAotICAgICAgICBy
ZXR1cm4gcW9iamVjdF9jYXN0PFFHTFdpZGdldCo+KHNjcm9sbEFyZWEtPnZpZXdwb3J0KCkpOwor
ICAgIFFSZWN0RiByZWN0ID0gb3B0aW9uID8gb3B0aW9uLT5yZWN0IDogYm91bmRpbmdSZWN0KCk7
CiAKLSAgICByZXR1cm4gMDsKKyNpZiBRVF9WRVJTSU9OID49IFFUX1ZFUlNJT05fQ0hFQ0soNCwg
NywgMCkKKyAgICAvLyBVc2UgZGlyZWN0IHRleHR1cmUgbWFwcGluZyBpZiBXZWJHTCBjYW52YXMg
aGFzIGEgc2hhcmVkIE9wZW5HTCBjb250ZXh0CisgICAgLy8gd2l0aCBicm93c2VycyBPcGVuR0wg
Y29udGV4dC4KKyAgICBpZiAobV9vd25lckdMV2lkZ2V0KSB7CisgICAgICAgIG1fb3duZXJHTFdp
ZGdldC0+ZHJhd1RleHR1cmUocmVjdCwgbV90ZXh0dXJlKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKyNlbmRpZgorCisgICAgLy8gQWx0ZXJuYXRpdmVseSByZWFkIHBpeGVscyB0byBhIG1lbW9y
eSBidWZmZXIuCisgICAgbV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKKyAgICBiaW5kRnJhbWVi
dWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX21haW5GYm8pOworICAgIGds
UmVhZFBpeGVscygvKiB4ICovIDAsIC8qIHkgKi8gMCwgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdo
dCgpLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVE
X0JZVEUsIG1fcGl4ZWxzLmJpdHMoKSk7CisgICAgcGFpbnRlci0+ZHJhd0ltYWdlKC8qIHggKi8g
MCwgLyogeSAqLyAwLCBtX3BpeGVscy5yZ2JTd2FwcGVkKCkudHJhbnNmb3JtZWQoUU1hdHJpeCgp
LnJvdGF0ZSgxODApKSk7CisgICAgYmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpG
UkFNRUJVRkZFUiwgbV9jdXJyZW50RmJvKTsKK30KKworUVJlY3RGIEdyYXBoaWNzQ29udGV4dDNE
SW50ZXJuYWw6OmJvdW5kaW5nUmVjdCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fYm91bmRpbmdS
ZWN0OwogfQogCiB2b2lkKiBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpnZXRQcm9jQWRkcmVz
cyhjb25zdCBTdHJpbmcmIHByb2MpCkBAIC01MTEsNiArNTQ2LDExIEBAIFBsYXRmb3JtM0RPYmpl
Y3QgR3JhcGhpY3NDb250ZXh0M0Q6OnBsYXRmb3JtVGV4dHVyZSgpIGNvbnN0CiAgICAgcmV0dXJu
IG1faW50ZXJuYWwtPm1fdGV4dHVyZTsKIH0KIAorUGxhdGZvcm1MYXllciogR3JhcGhpY3NDb250
ZXh0M0Q6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAoreworICAgIHJldHVybiBtX2ludGVybmFsLmdl
dCgpOworfQorCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjptYWtlQ29udGV4dEN1cnJlbnQoKQog
ewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CkBAIC01MjIsNyAr
NTYyLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9D
YW52YXMoQ2FudmFzUmVuZGVyaW5nQ29udGV4dCogY28KICAgICBIVE1MQ2FudmFzRWxlbWVudCog
Y2FudmFzID0gY29udGV4dC0+Y2FudmFzKCk7CiAgICAgSW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVy
ID0gY2FudmFzLT5idWZmZXIoKTsKICAgICBRUGFpbnRlciogcGFpbnRlciA9IGltYWdlQnVmZmVy
LT5jb250ZXh0KCktPnBsYXRmb3JtQ29udGV4dCgpOwotICAgIHBhaW50KHBhaW50ZXIsIFFSZWN0
KFFQb2ludCgwLCAwKSwgUVNpemUobV9jdXJyZW50V2lkdGgsIG1fY3VycmVudEhlaWdodCkpKTsK
KyAgICBtX2ludGVybmFsLT5wYWludChwYWludGVyLCAwLCAwKTsKIH0KIAogUGFzc1JlZlB0cjxJ
bWFnZURhdGE+IEdyYXBoaWNzQ29udGV4dDNEOjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0ltYWdl
RGF0YSgpCkBAIC01MzIsMjMgKzU3Miw2IEBAIFBhc3NSZWZQdHI8SW1hZ2VEYXRhPiBHcmFwaGlj
c0NvbnRleHQzRDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9JbWFnZURhdGEoKQogICAgIHJldHVy
biAwOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpwYWludChRUGFpbnRlciogcGFpbnRl
ciwgY29uc3QgUVJlY3QmIHJlY3QpIGNvbnN0Ci17Ci0jaWYgUVRfVkVSU0lPTiA+PSBRVF9WRVJT
SU9OX0NIRUNLKDQsIDcsIDApCi0gICAgUVdlYlBhZ2VDbGllbnQqIHdlYlBhZ2VDbGllbnQgPSBt
X2ludGVybmFsLT5tX2hvc3RXaW5kb3ctPnBsYXRmb3JtUGFnZUNsaWVudCgpOwotICAgIFFHTFdp
ZGdldCogb3duZXJHTFdpZGdldCAgPSBtX2ludGVybmFsLT5nZXRPd25lckdMV2lkZ2V0KHdlYlBh
Z2VDbGllbnQpOwotICAgIGlmIChvd25lckdMV2lkZ2V0KSB7Ci0gICAgICAgIG93bmVyR0xXaWRn
ZXQtPmRyYXdUZXh0dXJlKHJlY3QsIG1faW50ZXJuYWwtPm1fdGV4dHVyZSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9IAotI2VuZGlmCi0gICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1
cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5iaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0
M0Q6OkZSQU1FQlVGRkVSLCBtX2ludGVybmFsLT5tX21haW5GYm8pOwotICAgIGdsUmVhZFBpeGVs
cygvKiB4ICovIDAsIC8qIHkgKi8gMCwgbV9jdXJyZW50V2lkdGgsIG1fY3VycmVudEhlaWdodCwg
R3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEsIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRF
LCBtX2ludGVybmFsLT5tX3BpeGVscy5iaXRzKCkpOwotICAgIHBhaW50ZXItPmRyYXdJbWFnZSgv
KiB4ICovIDAsIC8qIHkgKi8gMCwgbV9pbnRlcm5hbC0+bV9waXhlbHMucmdiU3dhcHBlZCgpLnRy
YW5zZm9ybWVkKFFNYXRyaXgoKS5yb3RhdGUoMTgwKSkpOwotICAgIG1faW50ZXJuYWwtPmJpbmRG
cmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1faW50ZXJuYWwtPm1f
Y3VycmVudEZibyk7IAotfQotCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpyZXNoYXBlKGludCB3
aWR0aCwgaW50IGhlaWdodCkKIHsKICAgICBpZiAoKCh3aWR0aCA9PSBtX2N1cnJlbnRXaWR0aCkg
JiYgKGhlaWdodCA9PSBtX2N1cnJlbnRIZWlnaHQpKSB8fCAoIW1faW50ZXJuYWwpKQpAQCAtNTU3
LDYgKzU4MCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnJlc2hhcGUoaW50IHdpZHRoLCBp
bnQgaGVpZ2h0KQogICAgIG1fY3VycmVudFdpZHRoID0gd2lkdGg7CiAgICAgbV9jdXJyZW50SGVp
Z2h0ID0gaGVpZ2h0OwogCisgICAgbV9pbnRlcm5hbC0+bV9ib3VuZGluZ1JlY3QgPSBRUmVjdEYo
UVBvaW50RigwLCAwKSwgUVNpemVGKHdpZHRoLCBoZWlnaHQpKTsKICAgICBtX2ludGVybmFsLT5t
X3BpeGVscyA9IFFJbWFnZShtX2N1cnJlbnRXaWR0aCwgbV9jdXJyZW50SGVpZ2h0LCBRSW1hZ2U6
OkZvcm1hdF9BUkdCMzIpOwogCiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJl
bnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dy
YXBoaWNzTGF5ZXJRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9H
cmFwaGljc0xheWVyUXQuY3BwCmluZGV4IGYzY2ZjNDcuLjFmNzdmYzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzTGF5ZXJRdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NMYXllclF0LmNw
cApAQCAtMzEwLDEwICszMTAsNiBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICB9IG1fc3RhdGU7
CiAKLSNpZiBFTkFCTEUoV0VCR0wpCi0gICAgY29uc3QgR3JhcGhpY3NDb250ZXh0M0QqIG1fZ2Mz
RDsKLSNlbmRpZgotCiAjaWZuZGVmIFFUX05PX0FOSU1BVElPTgogICAgIGZyaWVuZCBjbGFzcyBB
bmltYXRpb25RdEJhc2U7CiAjZW5kaWYKQEAgLTM0MCw5ICszMzYsNiBAQCBHcmFwaGljc0xheWVy
UXRJbXBsOjpHcmFwaGljc0xheWVyUXRJbXBsKEdyYXBoaWNzTGF5ZXJRdCogbmV3TGF5ZXIpCiAj
aWYgRU5BQkxFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCiAgICAgLCBtX3RpbGVkQmFja2luZ1N0b3Jl
KDApCiAjZW5kaWYKLSNpZiBFTkFCTEUoV0VCR0wpCi0gICAgLCBtX2djM0QoMCkKLSNlbmRpZgog
ewogICAgIC8vIFdlIHVzZSBncmFwaGljcy12aWV3IGZvciBjb21wb3NpdGluZy1vbmx5LCBub3Qg
Zm9yIGludGVyYWN0aXZpdHkuCiAgICAgc2V0QWNjZXB0ZWRNb3VzZUJ1dHRvbnMoUXQ6Ok5vQnV0
dG9uKTsKQEAgLTY2NSwxMSArNjU4LDYgQEAgdm9pZCBHcmFwaGljc0xheWVyUXRJbXBsOjpwYWlu
dChRUGFpbnRlciogcGFpbnRlciwgY29uc3QgUVN0eWxlT3B0aW9uR3JhcGhpY3NJdGUKICAgICBj
YXNlIE1lZGlhQ29udGVudFR5cGU6CiAgICAgICAgIC8vIHdlIGRvbid0IG5lZWQgdG8gcGFpbnQg
YW55dGhpbmc6IHdlIGhhdmUgYSBRR3JhcGhpY3NJdGVtIGZyb20gdGhlIG1lZGlhIGVsZW1lbnQK
ICAgICAgICAgYnJlYWs7Ci0jaWYgRU5BQkxFKFdFQkdMKQotICAgIGNhc2UgQ2FudmFzM0RDb250
ZW50VHlwZToKLSAgICAgICAgbV9nYzNELT5wYWludChwYWludGVyLCBvcHRpb24tPnJlY3QpOwot
ICAgICAgICBicmVhazsKLSNlbmRpZgogICAgIH0KIH0KIApAQCAtODA4LDE2ICs3OTYsNiBAQCB2
b2lkIEdyYXBoaWNzTGF5ZXJRdEltcGw6OmZsdXNoQ2hhbmdlcyhib29sIHJlY3Vyc2l2ZSwgYm9v
bCBmb3JjZVVwZGF0ZVRyYW5zZm9ybQogCiAgICAgICAgICAgICBzZXRGbGFnKEl0ZW1IYXNOb0Nv
bnRlbnRzLCAhbV9sYXllci0+ZHJhd3NDb250ZW50KCkpOwogICAgICAgICAgICAgYnJlYWs7Ci0K
LSNpZiBFTkFCTEUoV0VCR0wpCi0gICAgICAgIGNhc2UgQ2FudmFzM0RDb250ZW50VHlwZToKLSAg
ICAgICAgICAgIGlmIChtX3BlbmRpbmdDb250ZW50LmNvbnRlbnRUeXBlICE9IG1fY3VycmVudENv
bnRlbnQuY29udGVudFR5cGUpCi0gICAgICAgICAgICAgICAgdXBkYXRlKCk7Ci0KLSAgICAgICAg
ICAgIHNldENhY2hlTW9kZShOb0NhY2hlKTsKLSAgICAgICAgICAgIHNldEZsYWcoSXRlbUhhc05v
Q29udGVudHMsIGZhbHNlKTsKLSAgICAgICAgICAgIGJyZWFrOwotI2VuZGlmCiAgICAgICAgIH0K
ICAgICB9CiAKQEAgLTEyNjgsMjMgKzEyNDYsNiBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJRdDo6c2V0
Q29udGVudHNCYWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQogICAgIEdyYXBoaWNz
TGF5ZXI6OnNldENvbnRlbnRzQmFja2dyb3VuZENvbG9yKGNvbG9yKTsKIH0KIAotI2lmIEVOQUJM
RShXRUJHTCkKLXZvaWQgR3JhcGhpY3NMYXllclF0OjpzZXRDb250ZW50c1RvR3JhcGhpY3NDb250
ZXh0M0QoY29uc3QgR3JhcGhpY3NDb250ZXh0M0QqIGN0eCkKLXsKLSAgICBpZiAoY3R4ID09IG1f
aW1wbC0+bV9nYzNEKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX2ltcGwtPm1fcGVuZGluZ0Nv
bnRlbnQuY29udGVudFR5cGUgPSBHcmFwaGljc0xheWVyUXRJbXBsOjpDYW52YXMzRENvbnRlbnRU
eXBlOwotICAgIG1faW1wbC0+bV9nYzNEID0gY3R4OwotICAgIG1faW1wbC0+bm90aWZ5Q2hhbmdl
KEdyYXBoaWNzTGF5ZXJRdEltcGw6OkNvbnRlbnRDaGFuZ2UpOwotfQotCi12b2lkIEdyYXBoaWNz
TGF5ZXJRdDo6c2V0R3JhcGhpY3NDb250ZXh0M0ROZWVkc0Rpc3BsYXkoKQotewotICAgIHNldE5l
ZWRzRGlzcGxheSgpOwotfQotI2VuZGlmCi0KIHZvaWQgR3JhcGhpY3NMYXllclF0OjpzZXRDb250
ZW50c1RvTWVkaWEoUGxhdGZvcm1MYXllciogbWVkaWEpCiB7CiAgICAgaWYgKG1lZGlhKSB7CkBA
IC0xMjk3LDYgKzEyNTgsMTEgQEAgdm9pZCBHcmFwaGljc0xheWVyUXQ6OnNldENvbnRlbnRzVG9N
ZWRpYShQbGF0Zm9ybUxheWVyKiBtZWRpYSkKICAgICBHcmFwaGljc0xheWVyOjpzZXRDb250ZW50
c1RvTWVkaWEobWVkaWEpOwogfQogCit2b2lkIEdyYXBoaWNzTGF5ZXJRdDo6c2V0Q29udGVudHNU
b0NhbnZhcyhQbGF0Zm9ybUxheWVyKiBjYW52YXMpCit7CisgICAgc2V0Q29udGVudHNUb01lZGlh
KGNhbnZhcyk7Cit9CisKIC8qIFxyZWltcCAoR3JhcGhpY3NMYXllci5oKQogKi8KIHZvaWQgR3Jh
cGhpY3NMYXllclF0OjpzZXRDb250ZW50c09yaWVudGF0aW9uKENvbXBvc2l0aW5nQ29vcmRpbmF0
ZXNPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzTGF5ZXJRdC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NMYXllclF0LmgKaW5kZXggNTY5YmQ4ZC4uMmFmOThm
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhp
Y3NMYXllclF0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3Jh
cGhpY3NMYXllclF0LmgKQEAgLTIwLDkgKzIwLDYgQEAKICNpZm5kZWYgR3JhcGhpY3NMYXllclF0
X2gKICNkZWZpbmUgR3JhcGhpY3NMYXllclF0X2gKIAotI2lmIEVOQUJMRShXRUJHTCkKLSNpbmNs
dWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgotI2VuZGlmCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXll
ci5oIgogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDbGllbnQuaCIKIApAQCAtNzgsMTEgKzc1LDgg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1RvSW1hZ2UoSW1hZ2UqKTsK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNOZWVkc0Rpc3BsYXkoKTsKICAgICB2aXJ0dWFs
IHZvaWQgc2V0Q29udGVudHNUb01lZGlhKFBsYXRmb3JtTGF5ZXIqKTsKKyAgICB2aXJ0dWFsIHZv
aWQgc2V0Q29udGVudHNUb0NhbnZhcyhQbGF0Zm9ybUxheWVyKik7CiAgICAgdmlydHVhbCB2b2lk
IHNldENvbnRlbnRzQmFja2dyb3VuZENvbG9yKGNvbnN0IENvbG9yJik7Ci0jaWYgRU5BQkxFKFdF
QkdMKQotICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1RvR3JhcGhpY3NDb250ZXh0M0QoY29u
c3QgR3JhcGhpY3NDb250ZXh0M0QqKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0R3JhcGhpY3NDb250
ZXh0M0ROZWVkc0Rpc3BsYXkoKTsKLSNlbmRpZgogICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50
c09yaWVudGF0aW9uKENvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbiBvcmllbnRhdGlv
bik7CiAgICAgdmlydHVhbCB2b2lkIGRpc3RyaWJ1dGVPcGFjaXR5KGZsb2F0KTsKICAgICB2aXJ0
dWFsIGZsb2F0IGFjY3VtdWxhdGVkT3BhY2l0eSgpIGNvbnN0Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>