<?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>52661</bug_id>
          
          <creation_ts>2011-01-18 13:50:47 -0800</creation_ts>
          <short_desc>[chromium] simplify complex text code, fixing a handful of layout tests</short_desc>
          <delta_ts>2011-01-19 10:29:26 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Evan Martin">evan</reporter>
          <assigned_to name="Evan Martin">evan</assigned_to>
          <cc>tony</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>336069</commentid>
    <comment_count>0</comment_count>
    <who name="Evan Martin">evan</who>
    <bug_when>2011-01-18 13:50:47 -0800</bug_when>
    <thetext>[chromium] simplify complex text code, fixing a handful of layout tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336071</commentid>
    <comment_count>1</comment_count>
      <attachid>79322</attachid>
    <who name="Evan Martin">evan</who>
    <bug_when>2011-01-18 13:55:06 -0800</bug_when>
    <thetext>Created attachment 79322
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336097</commentid>
    <comment_count>2</comment_count>
    <who name="Evan Martin">evan</who>
    <bug_when>2011-01-18 14:27:45 -0800</bug_when>
    <thetext>With this patch, I can now select text on http://tanzil.net/ with fewer gaps in the highlighting.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336160</commentid>
    <comment_count>3</comment_count>
      <attachid>79322</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-01-18 15:47:43 -0800</bug_when>
    <thetext>Comment on attachment 79322
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/FontLinux.cpp:212
&gt; +        // FIXME: this causes us to shape the text twice -- once to compute the width and then again
&gt; +        // below when actually rendering.  Change ComplexTextController to match platform/mac and
&gt; +        // platform/chromium/win by having it store the shaped runs, so we can reuse the results.

This is my only concern with this patch but evan said he would (1) watch the intl page cycler bots for regressions and (2) work on trying to clean this up so we don&apos;t have to shave the text twice (perhaps by doing what Windows does).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336617</commentid>
    <comment_count>4</comment_count>
    <who name="Evan Martin">evan</who>
    <bug_when>2011-01-19 10:29:26 -0800</bug_when>
    <thetext>Committed r76137: &lt;http://trac.webkit.org/changeset/76137&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79322</attachid>
            <date>2011-01-18 13:55:06 -0800</date>
            <delta_ts>2011-01-18 15:47:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-52661-20110118135429.patch</filename>
            <type>text/plain</type>
            <size>17440</size>
            <attacher name="Evan Martin">evan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhZGZlZmEyNDZjYTA2MWZhZjcwNzJlZDYxMzEwZGZkNGRhYmI1NTJmLi42ZmQ4MDY5
ODliYWM2MmQxZmMwNDExODhiYTNmOTg3NTg2ZDM3NDI2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAK
KzIwMTEtMDEtMTggIEV2YW4gTWFydGluICA8ZXZhbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW2Nocm9taXVtXSBzaW1wbGlm
eSBjb21wbGV4IHRleHQgY29kZSwgZml4aW5nIGEgaGFuZGZ1bCBvZiBsYXlvdXQgdGVzdHMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUyNjYxCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQ6IE1hcmsgMTEg
dGVzdHMgYXMgZXhwZWN0ZWQgdG8gcGFzcy4KKwogMjAxMS0wMS0xOCAgUGF2ZWwgUG9kaXZpbG92
ICA8cG9kaXZpbG92QGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByZW1vdmUg
d3JvbmcgY2hyb21pdW0gZXhwZWN0YXRpb24gZm9yIGNvbnNvbGUteGhyLWxvZ2dpbmcgdGVzdC4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRp
b25zLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25z
LnR4dAppbmRleCA4NWRlYzM5N2E0YzNjZDFkOTU5NWQ5ZDk4OGFiZDBhNDQ2YWQzNjBjLi41OGI2
ZTk4ODcyNDJhY2Y2OWIxYzZkMDg0MjZhNmMyMTMyYzJhMjhmIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKKysrIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CkBAIC0zMDc0LDE5
ICszMDc0LDYgQEAgQlVHQ1I2OTQxMSBMSU5VWCA6IHN2Zy9jdXN0b20vbGlua2luZy1hLTAzLWIt
dHJhbnNmb3JtLnN2ZyA9IElNQUdFIFBBU1MKIC8vIE5ldyB0ZXN0IGFkZGVkIGluIHI3NTcyMAog
QlVHQ1I2OTU3MSA6IHBsdWdpbnMvZGVzdHJveS1vbi1zZXR3aW5kb3cuaHRtbCA9IENSQVNICiAK
LS8vIEZhaWxpbmcgYWZ0ZXIgcjc1NzIwCi1CVUdDUjY5NjEyIExJTlVYIDogZWRpdGluZy9zZWxl
Y3Rpb24vZXh0ZW5kLXRvLWxpbmUtYm91bmRhcnkuaHRtbCA9IFRFWFQKLUJVR0NSNjk2MTIgTElO
VVggOiBmYXN0L3RleHQvYXRzdWktbmVnYXRpdmUtc3BhY2luZy1mZWF0dXJlcy5odG1sID0gSU1B
R0UKLUJVR0NSNjk2MTIgTElOVVggOiBmYXN0L3RleHQvYXRzdWktc3BhY2luZy1mZWF0dXJlcy5o
dG1sID0gSU1BR0UKLUJVR0NSNjk2MTIgTElOVVggOiBmYXN0L3RleHQvZHJhd0JpZGlUZXh0Lmh0
bWwgPSBJTUFHRQotQlVHQ1I2OTYxMiBMSU5VWCA6IGZhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL2Jp
ZGktQU4tYWZ0ZXItZW1wdHktcnVuLmh0bWwgPSBJTUFHRQotQlVHQ1I2OTYxMiBMSU5VWCA6IGZh
c3QvdGV4dC9pbnRlcm5hdGlvbmFsL2JpZGktQ1MtYWZ0ZXItQU4uaHRtbCA9IElNQUdFCi1CVUdD
UjY5NjEyIExJTlVYIDogZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvYmlkaS1saW5lYnJlYWstMDAy
Lmh0bWwgPSBJTUFHRQotQlVHQ1I2OTYxMiBMSU5VWCA6IGZhc3QvdGV4dC9pbnRlcm5hdGlvbmFs
L2JpZGktbGluZWJyZWFrLTAwMy5odG1sID0gSU1BR0UKLUJVR0NSNjk2MTIgTElOVVggOiBmYXN0
L3RleHQvaW50ZXJuYXRpb25hbC9iaWRpLW1pcnJvci1oZS1hci5odG1sID0gSU1BR0UKLUJVR0NS
Njk2MTIgTElOVVggOiBmYXN0L3RleHQvaW50ZXJuYXRpb25hbC9iaWRpLW5ldXRyYWwtcnVuLmh0
bWwgPSBJTUFHRQotQlVHQ1I2OTYxMiBMSU5VWCA6IGZhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL2hl
YnJldy12b3dlbHMuaHRtbCA9IElNQUdFCi0KIC8vIEZhaWxpbmcgYWZ0ZXIgcjc1NzY4CiBCVUdD
UjY5NjM5IDogaHR0cC90ZXN0cy9sb2FkaW5nL2Nyb3NzLW9yaWdpbi1YSFItd2lsbExvYWRSZXF1
ZXN0Lmh0bWwgPSBURVhUCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlNGQxMDBhMDhjMjUzZDczZWYwNTJiZmM5
Yzk1N2M0NDhmZWMzMjI3Li5kZDZkZGZlMGQ4NzUwNmJmZTU4ZTg1ZTk1ZGI3OWIyYWRmNjk3NmZl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTEtMDEtMTggIEV2YW4gTWFydGluICA8
ZXZhbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgW2Nocm9taXVtXSBzaW1wbGlmeSBjb21wbGV4IHRleHQgY29kZSwgZml4aW5n
IGEgaGFuZGZ1bCBvZiBsYXlvdXQgdGVzdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTUyNjYxCisKKyAgICAgICAgQ2hhbmdlIENvbXBsZXhUZXh0Q29u
dHJvbGxlckxpbnV4IHRvIGxheSBvdXQgUlRMIHRleHQgdG8gdGhlIGxlZnQgZnJvbQorICAgICAg
ICB0aGUgc3RhcnRpbmcgcG9pbnQuICAoUHJldmlvdXNseSBpdCBhbHdheXMgd2VudCB0byB0aGUg
cmlnaHQuKSAgVGhpcyBhbGxvd3MKKyAgICAgICAgdXMgdG8gbWFwIHBpeGVsIG9mZnNldHMgbW9y
ZSBkaXJlY3RseSBpbnRvIG9mZnNldHMgd2l0aGluIHRoZSB0ZXh0IHJ1bnMsCisgICAgICAgIHNp
bXBsaWZ5aW5nIGEgZmV3IG9mIHRoZSB0ZXh0LWZpZGRsaW5nIGZ1bmN0aW9ucyAodGhleSBubyBs
b25nZXIgbmVlZCB0bworICAgICAgICB0cmFjayB0aGUgY3VycmVudCBwb3NpdGlvbiwgYXMgQ29t
cGxleFRleHRDb250cm9sbGVyIG5vdyBkb2VzIGl0KS4KKworICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0NvbXBsZXhUZXh0Q29udHJvbGxlckxpbnV4LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNvbXBsZXhUZXh0Q29udHJvbGxlcjo6Q29tcGxleFRleHRDb250cm9sbGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbXBsZXhUZXh0Q29udHJvbGxlcjo6cmVzZXQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q29tcGxleFRleHRDb250cm9sbGVyOjpzZXRHbHlwaFhQb3NpdGlvbnMpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbXBsZXhUZXh0Q29udHJvbGxl
ckxpbnV4Lmg6CisgICAgICAgIChXZWJDb3JlOjpDb21wbGV4VGV4dENvbnRyb2xsZXI6Om9mZnNl
dFgpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRMaW51eC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGb250OjpkcmF3Q29tcGxleFRleHQpOgorICAgICAgICAoV2Vi
Q29yZTo6Rm9udDo6ZmxvYXRXaWR0aEZvckNvbXBsZXhUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6
OmdseXBoSW5kZXhGb3JYUG9zaXRpb25JblNjcmlwdFJ1bik6CisgICAgICAgIChXZWJDb3JlOjpG
b250OjpvZmZzZXRGb3JQb3NpdGlvbkZvckNvbXBsZXhUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6
OkZvbnQ6OnNlbGVjdGlvblJlY3RGb3JDb21wbGV4VGV4dCk6CisKIDIwMTEtMDEtMTggIFpvbHRh
biBIZXJjemVnICA8emhlcmN6ZWdAd2Via2l0Lm9yZz4KIAogICAgICAgICBSdWJiZXItc3RhbXBl
ZCBieSBDc2FiYSBPc3p0cm9nb27DoWMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbXBsZXhUZXh0Q29udHJvbGxlckxpbnV4LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbXBsZXhUZXh0Q29udHJv
bGxlckxpbnV4LmNwcAppbmRleCA5OTE1OWU2ZWUxYzkwYWI1NmUwMTBhNjU4OWM0OWQ5NmU5NWQ1
NDY5Li40Njg1NjI4M2Y1YzRlN2I1OWQyNzMyMWRmYjNkNTc2MzQ4MDA3NTNjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db21wbGV4VGV4dENv
bnRyb2xsZXJMaW51eC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vQ29tcGxleFRleHRDb250cm9sbGVyTGludXguY3BwCkBAIC00Nyw4ICs0Nyw2IEBA
IHN0YXRpYyBpbnQgdHJ1bmNhdGVGaXhlZFBvaW50VG9JbnRlZ2VyKEhCX0ZpeGVkIHZhbHVlKQog
CiBDb21wbGV4VGV4dENvbnRyb2xsZXI6OkNvbXBsZXhUZXh0Q29udHJvbGxlcihjb25zdCBUZXh0
UnVuJiBydW4sIHVuc2lnbmVkIHN0YXJ0aW5nWCwgY29uc3QgRm9udCogZm9udCkKICAgICA6IG1f
Zm9udChmb250KQotICAgICwgbV9zdGFydGluZ1goc3RhcnRpbmdYKQotICAgICwgbV9vZmZzZXRY
KG1fc3RhcnRpbmdYKQogICAgICwgbV9ydW4oZ2V0Tm9ybWFsaXplZFRleHRSdW4ocnVuLCBtX25v
cm1hbGl6ZWRSdW4sIG1fbm9ybWFsaXplZEJ1ZmZlcikpCiAgICAgLCBtX3dvcmRTcGFjaW5nQWRq
dXN0bWVudCgwKQogICAgICwgbV9wYWRkaW5nKDApCkBAIC03NSw3ICs3Myw3IEBAIENvbXBsZXhU
ZXh0Q29udHJvbGxlcjo6Q29tcGxleFRleHRDb250cm9sbGVyKGNvbnN0IFRleHRSdW4mIHJ1biwg
dW5zaWduZWQgc3RhcnRpCiAgICAgbV9pdGVtLnN0cmluZyA9IG1fcnVuLmNoYXJhY3RlcnMoKTsK
ICAgICBtX2l0ZW0uc3RyaW5nTGVuZ3RoID0gbV9ydW4ubGVuZ3RoKCk7CiAKLSAgICByZXNldCgp
OworICAgIHJlc2V0KHN0YXJ0aW5nWCk7CiB9CiAKIENvbXBsZXhUZXh0Q29udHJvbGxlcjo6fkNv
bXBsZXhUZXh0Q29udHJvbGxlcigpCkBAIC0xMzcsMTAgKzEzNSwxMCBAQCB2b2lkIENvbXBsZXhU
ZXh0Q29udHJvbGxlcjo6c2V0UGFkZGluZyhpbnQgcGFkZGluZykKICAgICAgICAgbV9wYWRQZXJX
b3JkQnJlYWsgPSAwOwogfQogCi12b2lkIENvbXBsZXhUZXh0Q29udHJvbGxlcjo6cmVzZXQoKQor
dm9pZCBDb21wbGV4VGV4dENvbnRyb2xsZXI6OnJlc2V0KHVuc2lnbmVkIG9mZnNldCkKIHsKICAg
ICBtX2luZGV4T2ZOZXh0U2NyaXB0UnVuID0gMDsKLSAgICBtX29mZnNldFggPSBtX3N0YXJ0aW5n
WDsKKyAgICBtX29mZnNldFggPSBvZmZzZXQ7CiB9CiAKIC8vIEFkdmFuY2UgdG8gdGhlIG5leHQg
c2NyaXB0IHJ1biwgcmV0dXJuaW5nIGZhbHNlIHdoZW4gdGhlIGVuZCBvZiB0aGUKQEAgLTI3Nyw4
ICsyNzUsNyBAQCB2b2lkIENvbXBsZXhUZXh0Q29udHJvbGxlcjo6c2V0R2x5cGhYUG9zaXRpb25z
KGJvb2wgaXNSVEwpCiAgICAgaW50IGxvZ0NsdXN0ZXJzSW5kZXggPSAwOwogCiAgICAgLy8gSXRl
cmF0ZSB0aHJvdWdoIHRoZSBnbHlwaHMgaW4gbG9naWNhbCBvcmRlciwgZmxpcHBpbmcgZm9yIFJU
TCB3aGVyZSBuZWNlc3NhcnkuCi0gICAgLy8gSW4gUlRMIG1vZGUgYWxsIHZhcmlhYmxlcyBhcmUg
cG9zaXRpdmUgZXhjZXB0IG1feFBvc2l0aW9ucywgd2hpY2ggc3RhcnRzIGZyb20gbV9vZmZzZXRY
IGFuZCBydW5zIG5lZ2F0aXZlLgotICAgIC8vIEl0IGlzIGZpeGVkIHVwIGluIGEgc2Vjb25kIHBh
c3MgYmVsb3cuCisgICAgLy8gR2x5cGhzIGFyZSBwb3NpdGlvbmVkIHN0YXJ0aW5nIGZyb20gbV9v
ZmZzZXRYOyBpbiBSVEwgbW9kZSB0aGV5IGdvIGxlZnR3YXJkcyBmcm9tIHRoZXJlLgogICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9pdGVtLm51bV9nbHlwaHM7ICsraSkgewogICAgICAgICB3
aGlsZSAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGxvZ0NsdXN0ZXJzSW5kZXgpIDwgbV9pdGVtLml0
ZW0ubGVuZ3RoICYmIGxvZ0NsdXN0ZXJzKClbbG9nQ2x1c3RlcnNJbmRleF0gPCBpKQogICAgICAg
ICAgICAgbG9nQ2x1c3RlcnNJbmRleCsrOwpAQCAtMzAzLDE2ICszMDAsOCBAQCB2b2lkIENvbXBs
ZXhUZXh0Q29udHJvbGxlcjo6c2V0R2x5cGhYUG9zaXRpb25zKGJvb2wgaXNSVEwpCiAKICAgICAg
ICAgcG9zaXRpb24gKz0gYWR2YW5jZTsKICAgICB9Ci0gICAgY29uc3QgZG91YmxlIHdpZHRoID0g
cG9zaXRpb247Ci0KLSAgICAvLyBOb3cgdGhhdCB3ZSd2ZSBjb21wdXRlZCB0aGUgdG90YWwgd2lk
dGgsIGRvIGFub3RoZXIgcGFzcyB0byBmaXggcG9zaXRpb25pbmcgZm9yIFJUTC4KLSAgICBpZiAo
aXNSVEwpIHsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2l0ZW0ubnVtX2dseXBo
czsgKytpKQotICAgICAgICAgICAgbV94UG9zaXRpb25zW2ldICs9IHdpZHRoOwotICAgIH0KLQot
ICAgIG1fcGl4ZWxXaWR0aCA9IHN0ZDo6bWF4KHdpZHRoLCAwLjApOwotICAgIG1fb2Zmc2V0WCAr
PSBtX3BpeGVsV2lkdGg7CisgICAgbV9waXhlbFdpZHRoID0gc3RkOjptYXgocG9zaXRpb24sIDAu
MCk7CisgICAgbV9vZmZzZXRYICs9IG1fcGl4ZWxXaWR0aCAqIHJ0bEZsaXA7CiB9CiAKIHZvaWQg
Q29tcGxleFRleHRDb250cm9sbGVyOjpub3JtYWxpemVTcGFjZXNBbmRNaXJyb3JDaGFycyhjb25z
dCBVQ2hhciogc291cmNlLCBib29sIHJ0bCwgVUNoYXIqIGRlc3RpbmF0aW9uLCBpbnQgbGVuZ3Ro
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Q29tcGxleFRleHRDb250cm9sbGVyTGludXguaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0NvbXBsZXhUZXh0Q29udHJvbGxlckxpbnV4LmgKaW5kZXggZTI2NGI5
OTI1Zjc2OGY1M2ZmYmIyODI3MmQ3MzRkMTUyNGQ0NDZmZC4uYTJhZWE2MDNmNDdhNjU0ZGY0Mjgy
ODlmYzkwODE1ZWZkMGMzYTJmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vQ29tcGxleFRleHRDb250cm9sbGVyTGludXguaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db21wbGV4VGV4dENvbnRyb2xs
ZXJMaW51eC5oCkBAIC02OCw3ICs2OCw3IEBAIHB1YmxpYzoKICAgICAvLyBzZXRQYWRkaW5nIHNl
dHMgYSBudW1iZXIgb2YgcGl4ZWxzIHRvIGJlIGRpc3RyaWJ1dGVkIGFjcm9zcyB0aGUgVGV4dFJ1
bi4KICAgICAvLyBXZWJLaXQgdXNlcyB0aGlzIHRvIGp1c3RpZnkgdGV4dC4KICAgICB2b2lkIHNl
dFBhZGRpbmcoaW50KTsKLSAgICB2b2lkIHJlc2V0KCk7CisgICAgdm9pZCByZXNldCh1bnNpZ25l
ZCBvZmZzZXQpOwogICAgIC8vIEFkdmFuY2UgdG8gdGhlIG5leHQgc2NyaXB0IHJ1biwgcmV0dXJu
aW5nIGZhbHNlIHdoZW4gdGhlIGVuZCBvZiB0aGUKICAgICAvLyBUZXh0UnVuIGhhcyBiZWVuIHJl
YWNoZWQuCiAgICAgYm9vbCBuZXh0U2NyaXB0UnVuKCk7CkBAIC04Niw3ICs4Niw2IEBAIHB1Ymxp
YzoKIAogICAgIC8vIFNldCB0aGUgeCBvZmZzZXQgZm9yIHRoZSBuZXh0IHNjcmlwdCBydW4uIFRo
aXMgYWZmZWN0cyB0aGUgdmFsdWVzIGluCiAgICAgLy8gfHhQb3NpdGlvbnN8Ci0gICAgdm9pZCBz
ZXRYT2Zmc2V0VG9aZXJvKCkgeyBtX29mZnNldFggPSAwOyB9CiAgICAgYm9vbCBydGwoKSBjb25z
dCB7IHJldHVybiBtX3J1bi5ydGwoKTsgfQogICAgIGNvbnN0IHVpbnQxNl90KiBnbHlwaHMoKSBj
b25zdCB7IHJldHVybiBtX2dseXBoczE2OyB9CiAKQEAgLTExNCw2ICsxMTMsOSBAQCBwdWJsaWM6
CiAgICAgLy8gcmV0dXJuIHRoZSBudW1iZXIgb2YgY29kZSBwb2ludHMgaW4gdGhlIGN1cnJlbnQg
c2NyaXB0IHJ1bgogICAgIGNvbnN0IHVuc2lnbmVkIG51bUNvZGVQb2ludHMoKSBjb25zdCB7IHJl
dHVybiBtX251bUNvZGVQb2ludHM7IH0KIAorICAgIC8vIFJldHVybiB0aGUgY3VycmVudCBwaXhl
bCBwb3NpdGlvbiBvZiB0aGUgY29udHJvbGxlci4KKyAgICBjb25zdCB1bnNpZ25lZCBvZmZzZXRY
KCkgY29uc3QgeyByZXR1cm4gbV9vZmZzZXRYOyB9CisKICAgICBjb25zdCBGb250UGxhdGZvcm1E
YXRhKiBmb250UGxhdGZvcm1EYXRhRm9yU2NyaXB0UnVuKCkgeyByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDxGb250UGxhdGZvcm1EYXRhKj4obV9pdGVtLmZvbnQtPnVzZXJEYXRhKTsgfQogCiBwcml2
YXRlOgpAQCAtMTM3LDcgKzEzOSw2IEBAIHByaXZhdGU6CiAgICAgdWludDE2X3QqIG1fZ2x5cGhz
MTY7IC8vIEEgdmVjdG9yIG9mIDE2LWJpdCBnbHlwaCBpZHMuCiAgICAgU2tTY2FsYXIqIG1feFBv
c2l0aW9uczsgLy8gQSB2ZWN0b3Igb2YgeCBwb3NpdGlvbnMgZm9yIGVhY2ggZ2x5cGguCiAgICAg
c3NpemVfdCBtX2luZGV4T2ZOZXh0U2NyaXB0UnVuOyAvLyBJbmRleGVzIHRoZSBzY3JpcHQgcnVu
IGluIHxtX3J1bnwuCi0gICAgY29uc3QgdW5zaWduZWQgbV9zdGFydGluZ1g7IC8vIE9mZnNldCBp
biBwaXhlbHMgb2YgdGhlIGZpcnN0IHNjcmlwdCBydW4uCiAgICAgdW5zaWduZWQgbV9vZmZzZXRY
OyAvLyBPZmZzZXQgaW4gcGl4ZWxzIHRvIHRoZSBzdGFydCBvZiB0aGUgbmV4dCBzY3JpcHQgcnVu
LgogICAgIHVuc2lnbmVkIG1fcGl4ZWxXaWR0aDsgLy8gV2lkdGggKGluIHB4KSBvZiB0aGUgY3Vy
cmVudCBzY3JpcHQgcnVuLgogICAgIHVuc2lnbmVkIG1fbnVtQ29kZVBvaW50czsgLy8gQ29kZSBw
b2ludHMgaW4gY3VycmVudCBzY3JpcHQgcnVuLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udExpbnV4LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRMaW51eC5jcHAKaW5kZXggZjFlYWRmMjg0
MmIyMWE2ZWRiYmQ3ZDYyZGJhNTE0ZDgyOTY4MzMyNi4uODIyYmJiYmQyZTUyMmI1Y2M5OGIwNGM0
ZjBiMWJkMWVlNGJlOTkwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vRm9udExpbnV4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9Gb250TGludXguY3BwCkBAIC0yMDYsNiArMjA2LDE2IEBAIHZv
aWQgRm9udDo6ZHJhd0NvbXBsZXhUZXh0KEdyYXBoaWNzQ29udGV4dCogZ2MsIGNvbnN0IFRleHRS
dW4mIHJ1biwKICAgICBjb250cm9sbGVyLnNldExldHRlclNwYWNpbmdBZGp1c3RtZW50KGxldHRl
clNwYWNpbmcoKSk7CiAgICAgY29udHJvbGxlci5zZXRQYWRkaW5nKHJ1bi5wYWRkaW5nKCkpOwog
CisgICAgaWYgKHJ1bi5ydGwoKSkgeworICAgICAgICAvLyBGSVhNRTogdGhpcyBjYXVzZXMgdXMg
dG8gc2hhcGUgdGhlIHRleHQgdHdpY2UgLS0gb25jZSB0byBjb21wdXRlIHRoZSB3aWR0aCBhbmQg
dGhlbiBhZ2FpbgorICAgICAgICAvLyBiZWxvdyB3aGVuIGFjdHVhbGx5IHJlbmRlcmluZy4gIENo
YW5nZSBDb21wbGV4VGV4dENvbnRyb2xsZXIgdG8gbWF0Y2ggcGxhdGZvcm0vbWFjIGFuZAorICAg
ICAgICAvLyBwbGF0Zm9ybS9jaHJvbWl1bS93aW4gYnkgaGF2aW5nIGl0IHN0b3JlIHRoZSBzaGFw
ZWQgcnVucywgc28gd2UgY2FuIHJldXNlIHRoZSByZXN1bHRzLgorICAgICAgICBjb250cm9sbGVy
LnJlc2V0KHBvaW50LngoKSArIGNvbnRyb2xsZXIud2lkdGhPZkZ1bGxSdW4oKSk7CisgICAgICAg
IC8vIFdlIG5lZWQgdG8gc2V0IHRoZSBwYWRkaW5nIGFnYWluIGJlY2F1c2UgQ29tcGxleFRleHRD
b250cm9sbGVyIGxheW91dCBjb25zdW1lZCB0aGUgdmFsdWUuCisgICAgICAgIC8vIEZpeGluZyB0
aGUgYWJvdmUgcHJvYmxlbSB3b3VsZCBoZWxwIGhlcmUgdG9vLgorICAgICAgICBjb250cm9sbGVy
LnNldFBhZGRpbmcocnVuLnBhZGRpbmcoKSk7CisgICAgfQorCiAgICAgd2hpbGUgKGNvbnRyb2xs
ZXIubmV4dFNjcmlwdFJ1bigpKSB7CiAgICAgICAgIGlmIChmaWxsKSB7CiAgICAgICAgICAgICBj
b250cm9sbGVyLmZvbnRQbGF0Zm9ybURhdGFGb3JTY3JpcHRSdW4oKS0+c2V0dXBQYWludCgmZmls
bFBhaW50KTsKQEAgLTIzMSw2ICsyNDEsNyBAQCBmbG9hdCBGb250OjpmbG9hdFdpZHRoRm9yQ29t
cGxleFRleHQoY29uc3QgVGV4dFJ1biYgcnVuLCBIYXNoU2V0PGNvbnN0IFNpbXBsZUZvbgogICAg
IENvbXBsZXhUZXh0Q29udHJvbGxlciBjb250cm9sbGVyKHJ1biwgMCwgdGhpcyk7CiAgICAgY29u
dHJvbGxlci5zZXRXb3JkU3BhY2luZ0FkanVzdG1lbnQod29yZFNwYWNpbmcoKSk7CiAgICAgY29u
dHJvbGxlci5zZXRMZXR0ZXJTcGFjaW5nQWRqdXN0bWVudChsZXR0ZXJTcGFjaW5nKCkpOworICAg
IGNvbnRyb2xsZXIuc2V0UGFkZGluZyhydW4ucGFkZGluZygpKTsKICAgICByZXR1cm4gY29udHJv
bGxlci53aWR0aE9mRnVsbFJ1bigpOwogfQogCkBAIC0yMzksNyArMjUwLDcgQEAgc3RhdGljIGlu
dCBnbHlwaEluZGV4Rm9yWFBvc2l0aW9uSW5TY3JpcHRSdW4oY29uc3QgQ29tcGxleFRleHRDb250
cm9sbGVyJiBjb250cm8KICAgICAvLyBJdGVyYXRlIHRocm91Z2ggdGhlIGdseXBocyBpbiBsb2dp
Y2FsIG9yZGVyLCBzZWVpbmcgd2hldGhlciB0YXJnZXRYIGZhbGxzIGJldHdlZW4gdGhlIHByZXZp
b3VzCiAgICAgLy8gcG9zaXRpb24gYW5kIGhhbGZ3YXkgdGhyb3VnaCB0aGUgY3VycmVudCBnbHlw
aC4KICAgICAvLyBGSVhNRTogdGhpcyBjb2RlIHByb2JhYmx5IGJlbG9uZ3MgaW4gQ29tcGxleFRl
eHRDb250cm9sbGVyLgotICAgIGludCBsYXN0WCA9IGNvbnRyb2xsZXIucnRsKCkgPyBjb250cm9s
bGVyLndpZHRoKCkgOiAwOworICAgIGludCBsYXN0WCA9IGNvbnRyb2xsZXIub2Zmc2V0WCgpIC0g
KGNvbnRyb2xsZXIucnRsKCkgPyAtY29udHJvbGxlci53aWR0aCgpIDogY29udHJvbGxlci53aWR0
aCgpKTsKICAgICBmb3IgKGludCBnbHlwaEluZGV4ID0gMDsgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KGdseXBoSW5kZXgpIDwgY29udHJvbGxlci5sZW5ndGgoKTsgKytnbHlwaEluZGV4KSB7CiAgICAg
ICAgIGludCBhZHZhbmNlID0gdHJ1bmNhdGVGaXhlZFBvaW50VG9JbnRlZ2VyKGNvbnRyb2xsZXIu
YWR2YW5jZXMoKVtnbHlwaEluZGV4XSk7CiAgICAgICAgIGludCBuZXh0WCA9IHN0YXRpY19jYXN0
PGludD4oY29udHJvbGxlci54UG9zaXRpb25zKClbZ2x5cGhJbmRleF0pICsgYWR2YW5jZSAvIDI7
CkBAIC0yNTcsNTMgKzI2OCwyOSBAQCBpbnQgRm9udDo6b2Zmc2V0Rm9yUG9zaXRpb25Gb3JDb21w
bGV4VGV4dChjb25zdCBUZXh0UnVuJiBydW4sIGZsb2F0IHhGbG9hdCwKIHsKICAgICAvLyBGSVhN
RTogVGhpcyB0cnVuY2F0aW9uIGlzIG5vdCBhIHByb2JsZW0gZm9yIEhUTUwsIGJ1dCBvbmx5IGFm
ZmVjdHMgU1ZHLCB3aGljaCBwYXNzZXMgZmxvYXRpbmctcG9pbnQgbnVtYmVycwogICAgIC8vIHRv
IEZvbnQ6Om9mZnNldEZvclBvc2l0aW9uKCkuIEJ1ZyBodHRwOi8vd2Via2l0Lm9yZy9iLzQwNjcz
IHRyYWNrcyBmaXhpbmcgdGhpcyBwcm9ibGVtLgotICAgIGludCB4ID0gc3RhdGljX2Nhc3Q8aW50
Pih4RmxvYXQpOworICAgIGludCB0YXJnZXRYID0gc3RhdGljX2Nhc3Q8aW50Pih4RmxvYXQpOwog
CiAgICAgLy8gKE1hYyBjb2RlIGlnbm9yZXMgaW5jbHVkZVBhcnRpYWxHbHlwaHMsIGFuZCB0aGV5
IGRvbid0IGtub3cgd2hhdCBpdCdzCiAgICAgLy8gc3VwcG9zZWQgdG8gZG8sIHNvIHdlIGp1c3Qg
aWdub3JlIGl0IGFzIHdlbGwuKQogICAgIENvbXBsZXhUZXh0Q29udHJvbGxlciBjb250cm9sbGVy
KHJ1biwgMCwgdGhpcyk7CiAgICAgY29udHJvbGxlci5zZXRXb3JkU3BhY2luZ0FkanVzdG1lbnQo
d29yZFNwYWNpbmcoKSk7CiAgICAgY29udHJvbGxlci5zZXRMZXR0ZXJTcGFjaW5nQWRqdXN0bWVu
dChsZXR0ZXJTcGFjaW5nKCkpOwotCi0gICAgLy8gSWYgdGhpcyBpcyBSVEwgdGV4dCwgdGhlIGZp
cnN0IGdseXBoIGZyb20gdGhlIGxlZnQgaXMgYWN0dWFsbHkgdGhlIGxhc3QKLSAgICAvLyBjb2Rl
IHBvaW50LiBTbyB3ZSBuZWVkIHRvIGtub3cgaG93IG1hbnkgY29kZSBwb2ludHMgdGhlcmUgYXJl
IHRvdGFsIGluCi0gICAgLy8gb3JkZXIgdG8gc3VidHJhY3QuIFRoaXMgaXMgZGlmZmVyZW50IGZy
b20gdGhlIGxlbmd0aCBvZiB0aGUgVGV4dFJ1bgotICAgIC8vIGJlY2F1c2UgVVRGLTE2IHN1cnJv
Z2F0ZSBwYWlycyBhcmUgYSBzaW5nbGUgY29kZSBwb2ludCwgYnV0IDMyLWJpdHMgbG9uZy4KLSAg
ICAvLyBJbiBMVFIgd2UgbGVhdmUgdGhpcyBhcyAwIHNvIHRoYXQgd2UgZ2V0IHRoZSBjb3JyZWN0
IHZhbHVlIGZvcgotICAgIC8vIHxiYXNlUG9zaXRpb258LCBiZWxvdy4KLSAgICB1bnNpZ25lZCB0
b3RhbENvZGVQb2ludHMgPSAwOwotICAgIGlmIChjb250cm9sbGVyLnJ0bCgpKSB7Ci0gICAgICAg
IHNzaXplX3Qgb2Zmc2V0ID0gMDsKLSAgICAgICAgd2hpbGUgKG9mZnNldCA8IHJ1bi5sZW5ndGgo
KSkgewotICAgICAgICAgICAgdXRmMTZfdG9fY29kZV9wb2ludChydW4uY2hhcmFjdGVycygpLCBy
dW4ubGVuZ3RoKCksICZvZmZzZXQpOwotICAgICAgICAgICAgdG90YWxDb2RlUG9pbnRzKys7Ci0g
ICAgICAgIH0KKyAgICBjb250cm9sbGVyLnNldFBhZGRpbmcocnVuLnBhZGRpbmcoKSk7CisgICAg
aWYgKHJ1bi5ydGwoKSkgeworICAgICAgICAvLyBTZWUgRklYTUUgaW4gZHJhd0NvbXBsZXhUZXh0
LgorICAgICAgICBjb250cm9sbGVyLnJlc2V0KGNvbnRyb2xsZXIud2lkdGhPZkZ1bGxSdW4oKSk7
CisgICAgICAgIGNvbnRyb2xsZXIuc2V0UGFkZGluZyhydW4ucGFkZGluZygpKTsKICAgICB9CiAK
LSAgICB1bnNpZ25lZCBiYXNlUG9zaXRpb24gPSB0b3RhbENvZGVQb2ludHM7Ci0KLSAgICAvLyBG
b3IgUlRMOgotICAgIC8vICAgY29kZS1wb2ludCBvcmRlcjogIGFiY2QgZWZnIGhpamtsCi0gICAg
Ly8gICBvbiBzY3JlZW46ICAgICAgICAgbGtqaWggZ2ZlIGRjYmEKLSAgICAvLyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXiAgIF4KLSAgICAvLyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfCAgIHwKLSAgICAvLyAgICAgICAgICAgICAgICAgIGJhc2VQb3NpdGlvbi0tfCAg
IHwKLSAgICAvLyAgICAgICAgICAgICAgICAgdG90YWxDb2RlUG9pbnRzLS0tLXwKLSAgICAvLyBT
aW5jZSBiYXNlUG9zaXRpb24gaXMgY3VycmVudGx5IHRoZSB0b3RhbCBudW1iZXIgb2YgY29kZS1w
b2ludHMsIHRoZQotICAgIC8vIGZpcnN0IHRoaW5nIHdlIGRvIGlzIGRlY3JlbWVudCBpdCBzbyB0
aGF0IGl0J3MgcG9pbnRpbmcgdG8gdGhlIHN0YXJ0IG9mCi0gICAgLy8gdGhlIGN1cnJlbnQgc2Ny
aXB0LXJ1bi4KLSAgICAvLwotICAgIC8vIEZvciBMVFIsIGJhc2VQb3NpdGlvbiBpcyB6ZXJvIHNv
IGl0IGFscmVhZHkgcG9pbnRzIHRvIHRoZSBzdGFydCBvZiB0aGUKLSAgICAvLyBmaXJzdCBzY3Jp
cHQgcnVuLgorICAgIHVuc2lnbmVkIGJhc2VQb3NpdGlvbiA9IDA7CisKKyAgICBpbnQgeCA9IGNv
bnRyb2xsZXIub2Zmc2V0WCgpOwogICAgIHdoaWxlIChjb250cm9sbGVyLm5leHRTY3JpcHRSdW4o
KSkgewotICAgICAgICBpZiAoY29udHJvbGxlci5ydGwoKSkKLSAgICAgICAgICAgIGJhc2VQb3Np
dGlvbiAtPSBjb250cm9sbGVyLm51bUNvZGVQb2ludHMoKTsKKyAgICAgICAgaW50IG5leHRYID0g
Y29udHJvbGxlci5vZmZzZXRYKCk7CiAKLSAgICAgICAgaWYgKHggPj0gMCAmJiBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oeCkgPCBjb250cm9sbGVyLndpZHRoKCkpIHsKLSAgICAgICAgICAgIC8vIFRo
ZSB4IHZhbHVlIGluIHF1ZXN0aW9uIGlzIHdpdGhpbiB0aGlzIHNjcmlwdCBydW4uIFdlIGNvbnNp
ZGVyCi0gICAgICAgICAgICAvLyBlYWNoIGdseXBoIGluIHByZXNlbnRhdGlvbiBvcmRlciBhbmQg
c3RvcCB3aGVuIHdlIGZpbmQgdGhlIG9uZQotICAgICAgICAgICAgLy8gY292ZXJpbmcgdGhpcyBw
b3NpdGlvbi4KLSAgICAgICAgICAgIGNvbnN0IGludCBnbHlwaEluZGV4ID0gZ2x5cGhJbmRleEZv
clhQb3NpdGlvbkluU2NyaXB0UnVuKGNvbnRyb2xsZXIsIHgpOworICAgICAgICBpZiAoc3RkOjpt
aW4oeCwgbmV4dFgpIDw9IHRhcmdldFggJiYgdGFyZ2V0WCA8PSBzdGQ6Om1heCh4LCBuZXh0WCkp
IHsKKyAgICAgICAgICAgIC8vIFRoZSB4IHZhbHVlIGluIHF1ZXN0aW9uIGlzIHdpdGhpbiB0aGlz
IHNjcmlwdCBydW4uCisgICAgICAgICAgICBjb25zdCBpbnQgZ2x5cGhJbmRleCA9IGdseXBoSW5k
ZXhGb3JYUG9zaXRpb25JblNjcmlwdFJ1bihjb250cm9sbGVyLCB0YXJnZXRYKTsKIAogICAgICAg
ICAgICAgLy8gTm93IHRoYXQgd2UgaGF2ZSBhIGdseXBoIGluZGV4LCB3ZSBoYXZlIHRvIHR1cm4g
dGhhdCBpbnRvIGEKICAgICAgICAgICAgIC8vIGNvZGUtcG9pbnQgaW5kZXguIEJlY2F1c2Ugb2Yg
bGlnYXR1cmVzLCBzZXZlcmFsIGNvZGUtcG9pbnRzIG1heQpAQCAtMzI0LDEwICszMTEsNyBAQCBp
bnQgRm9udDo6b2Zmc2V0Rm9yUG9zaXRpb25Gb3JDb21wbGV4VGV4dChjb25zdCBUZXh0UnVuJiBy
dW4sIGZsb2F0IHhGbG9hdCwKICAgICAgICAgICAgIHJldHVybiBiYXNlUG9zaXRpb24gKyBjb250
cm9sbGVyLm51bUNvZGVQb2ludHMoKSAtIDE7CiAgICAgICAgIH0KIAotICAgICAgICB4IC09IGNv
bnRyb2xsZXIud2lkdGgoKTsKLQotICAgICAgICBpZiAoIWNvbnRyb2xsZXIucnRsKCkpCi0gICAg
ICAgICAgICBiYXNlUG9zaXRpb24gKz0gY29udHJvbGxlci5udW1Db2RlUG9pbnRzKCk7CisgICAg
ICAgIGJhc2VQb3NpdGlvbiArPSBjb250cm9sbGVyLm51bUNvZGVQb2ludHMoKTsKICAgICB9CiAK
ICAgICByZXR1cm4gYmFzZVBvc2l0aW9uOwpAQCAtMzQyLDI3ICszMjYsMjEgQEAgRmxvYXRSZWN0
IEZvbnQ6OnNlbGVjdGlvblJlY3RGb3JDb21wbGV4VGV4dChjb25zdCBUZXh0UnVuJiBydW4sCiAg
ICAgQ29tcGxleFRleHRDb250cm9sbGVyIGNvbnRyb2xsZXIocnVuLCAwLCB0aGlzKTsKICAgICBj
b250cm9sbGVyLnNldFdvcmRTcGFjaW5nQWRqdXN0bWVudCh3b3JkU3BhY2luZygpKTsKICAgICBj
b250cm9sbGVyLnNldExldHRlclNwYWNpbmdBZGp1c3RtZW50KGxldHRlclNwYWNpbmcoKSk7Cisg
ICAgY29udHJvbGxlci5zZXRQYWRkaW5nKHJ1bi5wYWRkaW5nKCkpOworICAgIGlmIChydW4ucnRs
KCkpIHsKKyAgICAgICAgLy8gU2VlIEZJWE1FIGluIGRyYXdDb21wbGV4VGV4dC4KKyAgICAgICAg
Y29udHJvbGxlci5yZXNldChjb250cm9sbGVyLndpZHRoT2ZGdWxsUnVuKCkpOworICAgICAgICBj
b250cm9sbGVyLnNldFBhZGRpbmcocnVuLnBhZGRpbmcoKSk7CisgICAgfQogCi0gICAgLy8gQmFz
ZSB3aWxsIHBvaW50IHRvIHRoZSB4IG9mZnNldCBmb3IgdGhlIHN0YXJ0IG9mIHRoZSBjdXJyZW50
IHNjcmlwdCBydW4uIE5vdGUgdGhhdCwgaW4KLSAgICAvLyB0aGUgTFRSIGNhc2UsIHdpZHRoIHdp
bGwgYmUgMC4KLSAgICBpbnQgYmFzZSA9IGNvbnRyb2xsZXIucnRsKCkgPyBjb250cm9sbGVyLndp
ZHRoT2ZGdWxsUnVuKCkgOiAwOwotCi0gICAgY29udHJvbGxlci5yZXNldCgpOworICAgIC8vIEl0
ZXJhdGUgdGhyb3VnaCB0aGUgc2NyaXB0IHJ1bnMgaW4gbG9naWNhbCBvcmRlciwgc2VhcmNoaW5n
IGZvciB0aGUgcnVuIGNvdmVyaW5nIHRoZSBwb3NpdGlvbnMgb2YgaW50ZXJlc3QuCiAgICAgd2hp
bGUgKGNvbnRyb2xsZXIubmV4dFNjcmlwdFJ1bigpICYmIChmcm9tWCA9PSAtMSB8fCB0b1ggPT0g
LTEpKSB7Ci0gICAgICAgIC8vIENvbXBsZXhUZXh0Q29udHJvbGxlciB3aWxsIGhlbHBmdWxseSBh
Y2N1bHVsYXRlIHRoZSB4IG9mZnNldHMgZm9yIGRpZmZlcmVudAotICAgICAgICAvLyBzY3JpcHQg
cnVucyBmb3IgdXMuIEZvciB0aGlzIGNvZGUsIGhvd2V2ZXIsIHdlIGFsd2F5cyB3YW50IHRoZSB4
IG9mZnNldHMKLSAgICAgICAgLy8gdG8gc3RhcnQgZnJvbSB6ZXJvIHNvIHdlIGNhbGwgdGhpcyBi
ZWZvcmUgZWFjaCBzY3JpcHQgcnVuLgotICAgICAgICBjb250cm9sbGVyLnNldFhPZmZzZXRUb1pl
cm8oKTsKLQotICAgICAgICBpZiAoY29udHJvbGxlci5ydGwoKSkKLSAgICAgICAgICAgIGJhc2Ug
LT0gY29udHJvbGxlci53aWR0aCgpOwotCiAgICAgICAgIGlmIChmcm9tWCA9PSAtMSAmJiBmcm9t
ID49IDAgJiYgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGZyb20pIDwgY29udHJvbGxlci5udW1Db2Rl
UG9pbnRzKCkpIHsKICAgICAgICAgICAgIC8vIHxmcm9tfCBpcyB3aXRoaW4gdGhpcyBzY3JpcHQg
cnVuLiBTbyB3ZSBpbmRleCB0aGUgY2x1c3RlcnMgbG9nIHRvCiAgICAgICAgICAgICAvLyBmaW5k
IHdoaWNoIGdseXBoIHRoaXMgY29kZS1wb2ludCBjb250cmlidXRlZCB0byBhbmQgZmluZCBpdHMg
eAogICAgICAgICAgICAgLy8gcG9zaXRpb24uCiAgICAgICAgICAgICBpbnQgZ2x5cGggPSBjb250
cm9sbGVyLmxvZ0NsdXN0ZXJzKClbZnJvbV07Ci0gICAgICAgICAgICBmcm9tWCA9IGJhc2UgKyBj
b250cm9sbGVyLnhQb3NpdGlvbnMoKVtnbHlwaF07CisgICAgICAgICAgICBmcm9tWCA9IGNvbnRy
b2xsZXIueFBvc2l0aW9ucygpW2dseXBoXTsKICAgICAgICAgICAgIGlmIChjb250cm9sbGVyLnJ0
bCgpKQogICAgICAgICAgICAgICAgIGZyb21YICs9IHRydW5jYXRlRml4ZWRQb2ludFRvSW50ZWdl
cihjb250cm9sbGVyLmFkdmFuY2VzKClbZ2x5cGhdKTsKICAgICAgICAgfSBlbHNlCkBAIC0zNzAs
MjIgKzM0OCwxOCBAQCBGbG9hdFJlY3QgRm9udDo6c2VsZWN0aW9uUmVjdEZvckNvbXBsZXhUZXh0
KGNvbnN0IFRleHRSdW4mIHJ1biwKIAogICAgICAgICBpZiAodG9YID09IC0xICYmIHRvID49IDAg
JiYgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHRvKSA8IGNvbnRyb2xsZXIubnVtQ29kZVBvaW50cygp
KSB7CiAgICAgICAgICAgICBpbnQgZ2x5cGggPSBjb250cm9sbGVyLmxvZ0NsdXN0ZXJzKClbdG9d
OwotICAgICAgICAgICAgdG9YID0gYmFzZSArIGNvbnRyb2xsZXIueFBvc2l0aW9ucygpW2dseXBo
XTsKKyAgICAgICAgICAgIHRvWCA9IGNvbnRyb2xsZXIueFBvc2l0aW9ucygpW2dseXBoXTsKICAg
ICAgICAgICAgIGlmIChjb250cm9sbGVyLnJ0bCgpKQogICAgICAgICAgICAgICAgIHRvWCArPSB0
cnVuY2F0ZUZpeGVkUG9pbnRUb0ludGVnZXIoY29udHJvbGxlci5hZHZhbmNlcygpW2dseXBoXSk7
CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgdG8gLT0gY29udHJvbGxlci5udW1Db2RlUG9p
bnRzKCk7Ci0KLSAgICAgICAgaWYgKCFjb250cm9sbGVyLnJ0bCgpKQotICAgICAgICAgICAgYmFz
ZSArPSBjb250cm9sbGVyLndpZHRoKCk7CiAgICAgfQogCiAgICAgLy8gVGhlIHBvc2l0aW9uIGlu
IHF1ZXN0aW9uIG1pZ2h0IGJlIGp1c3QgYWZ0ZXIgdGhlIHRleHQuCi0gICAgY29uc3QgaW50IGVu
ZEVkZ2UgPSBiYXNlOwotICAgIGlmIChmcm9tWCA9PSAtMSAmJiAhZnJvbSkKLSAgICAgICAgZnJv
bVggPSBlbmRFZGdlOwotICAgIGlmICh0b1ggPT0gLTEgJiYgIXRvKQotICAgICAgICB0b1ggPSBl
bmRFZGdlOworICAgIGlmIChmcm9tWCA9PSAtMSkKKyAgICAgICAgZnJvbVggPSBjb250cm9sbGVy
Lm9mZnNldFgoKTsKKyAgICBpZiAodG9YID09IC0xKQorICAgICAgICB0b1ggPSBjb250cm9sbGVy
Lm9mZnNldFgoKTsKIAogICAgIEFTU0VSVChmcm9tWCAhPSAtMSAmJiB0b1ggIT0gLTEpOwogCg==
</data>
<flag name="review"
          id="70733"
          type_id="1"
          status="+"
          setter="tony"
    />
          </attachment>
      

    </bug>

</bugzilla>