<?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>130168</bug_id>
          
          <creation_ts>2014-03-12 17:21:32 -0700</creation_ts>
          <short_desc>RenderTextControl::hasValidAvgCharWidth doesn&apos;t detect System Font</short_desc>
          <delta_ts>2014-03-15 17:18:55 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>dino</cc>
    
    <cc>jonlee</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>989874</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2014-03-12 17:21:32 -0700</bug_when>
    <thetext>RenderTextControl::hasValidAvgCharWidth doesn&apos;t detect System Font</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>989876</commentid>
    <comment_count>1</comment_count>
      <attachid>226563</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2014-03-12 17:23:01 -0700</bug_when>
    <thetext>Created attachment 226563
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>989904</commentid>
    <comment_count>2</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2014-03-12 19:46:32 -0700</bug_when>
    <thetext>&lt;rdar://problem/16293332&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>989908</commentid>
    <comment_count>3</comment_count>
      <attachid>226570</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2014-03-12 19:55:40 -0700</bug_when>
    <thetext>Created attachment 226570
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>990195</commentid>
    <comment_count>4</comment_count>
      <attachid>226570</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2014-03-13 16:29:44 -0700</bug_when>
    <thetext>Comment on attachment 226570
Patch

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

&gt; Source/WebCore/ChangeLog:24
&gt; +        * platform/graphics/Font.cpp:
&gt; +        (WebCore::Font::hasValidAvgCharWidth):
&gt; +        (WebCore::Font::fastAvgCharWidth):
&gt; +        * platform/graphics/Font.h:
&gt; +        * rendering/RenderTextControl.cpp:
&gt; +        (WebCore::RenderTextControl::getAvgCharWidth):
&gt; +        (WebCore::RenderTextControl::computeIntrinsicLogicalWidths):
&gt; +        * rendering/RenderTextControl.h:
&gt; +        * rendering/RenderTextControlMultiLine.cpp:
&gt; +        (WebCore::RenderTextControlMultiLine::getAvgCharWidth):
&gt; +        * rendering/RenderTextControlMultiLine.h:
&gt; +        * rendering/RenderTextControlSingleLine.cpp:
&gt; +        (WebCore::RenderTextControlSingleLine::getAvgCharWidth):
&gt; +        (WebCore::RenderTextControlSingleLine::preferredContentLogicalWidth):
&gt; +        * rendering/RenderTextControlSingleLine.h:

You should provide some per-file descriptions!

&gt; Source/WebCore/platform/graphics/Font.cpp:501
&gt; +        width = roundf(primaryFont()-&gt;avgCharWidth()); // FIXME: primaryFont() might not correspond to firstFamily()

. at end of comment

&gt; Source/WebCore/platform/graphics/Font.h:157
&gt; +    bool fastAvgCharWidth(float &amp;width) const; // returns true on success

I wish the name was more clear. This looks like a getter, but is actually something more tricky. Maybe computeFastAvgCharWidth()? (even though there is no computation)

The other places where we do things like this seem to all be in the Audio code (mostly from a single author).

Also, let&apos;s take this opportunity to expand Avg to Average</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>990904</commentid>
    <comment_count>5</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2014-03-15 17:18:55 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/165686</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>226563</attachid>
            <date>2014-03-12 17:23:01 -0700</date>
            <delta_ts>2014-03-12 19:55:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-130168-20140312172238.patch</filename>
            <type>text/plain</type>
            <size>1785</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY1NDk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjcyNDE5MTRiZTA4Njhl
OGQ3YzQ5MGZlODEzMjMzODVhNzhjOTUwNC4uNzEyMDFmMzNmMTUwNDFkY2U1NDRjNTc0YTc5Nzdi
NmM2MTIyMTc1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE0LTAzLTEyICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgUmVuZGVyVGV4
dENvbnRyb2w6Omhhc1ZhbGlkQXZnQ2hhcldpZHRoIGRvZXNuJ3QgZGV0ZWN0IFN5c3RlbSBGb250
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzAxNjgK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW5kZXJU
ZXh0Q29udHJvbDo6aGFzVmFsaWRBdmdDaGFyV2lkdGggdHJpZXMgdG8gZGV0ZWN0IGlmIGEgZ2l2
ZW4gZmFtaWx5IG5hbWUKKyAgICAgICAgaXMgdGhlIHN5c3RlbSBmb250IGJ5IGRldGVybWluaW5n
IGlmIGl0IHN0YXJ0cyB3aXRoIGEgIi4iIFRoaXMgbWlnaHQgZ2l2ZSBhIGZhbHNlCisgICAgICAg
IG5lZ2F0aXZlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4KKworICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJUZXh0Q29udHJvbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Q29u
dHJvbDo6aGFzVmFsaWRBdmdDaGFyV2lkdGgpOgorCiAyMDE0LTAzLTEyICBCcmVudCBGdWxnaGFt
ICA8YmZ1bGdoYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJWVFRdIEhUTUw1ICJzcGFjZSIg
Y2FocmFjdGVycyBhcm91bmQgIi0tPiIgYXJlIG5vdCByZXF1aXJlZApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHAKaW5kZXggNTYwNDEyMWZiZDg3Njdh
OTQ4MjkxNTA4ZGQ5ZjNkOTRhZDRiMTFmZC4uOTFkNTNmNDlkMjUyNjk5NzQ5NjdjZjQ4YjQ2NTJl
ZGQ5YmY3OWNjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRl
eHRDb250cm9sLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENv
bnRyb2wuY3BwCkBAIC0yMjQsNyArMjI0LDcgQEAgYm9vbCBSZW5kZXJUZXh0Q29udHJvbDo6aGFz
VmFsaWRBdmdDaGFyV2lkdGgoQXRvbWljU3RyaW5nIGZhbWlseSkKICAgICAvLyBJbnRlcm5hbCBm
b250cyBvbiBPUyBYIGFsc28gaGF2ZSBhbiBpbnZhbGlkIGVudHJ5IGluIHRoZSB0YWJsZSBmb3Ig
YXZnQ2hhcldpZHRoLgogICAgIC8vIFRoZXkgYXJlIGhpZGRlbiBieSBoYXZpbmcgYSBuYW1lIHRo
YXQgYmVnaW5zIHdpdGggYSBwZXJpb2QsIHNvIHNpbXBseSBzZWFyY2gKICAgICAvLyBmb3IgdGhh
dCBoZXJlIHJhdGhlciB0aGFuIHRyeSB0byBrZWVwIHRoZSBsaXN0IHVwIHRvIGRhdGUuCi0gICAg
aWYgKGZhbWlseS5zdGFydHNXaXRoKCcuJykpCisgICAgaWYgKGZhbWlseS5zdGFydHNXaXRoKCcu
JykgfHwgZmFtaWx5ID09ICJTeXN0ZW0gRm9udCIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAog
ICAgIHN0YXRpYyBIYXNoU2V0PEF0b21pY1N0cmluZz4qIGZvbnRGYW1pbGllc1dpdGhJbnZhbGlk
Q2hhcldpZHRoTWFwID0gMDsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>226570</attachid>
            <date>2014-03-12 19:55:40 -0700</date>
            <delta_ts>2014-03-13 16:29:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-130168-20140312195517.patch</filename>
            <type>text/plain</type>
            <size>14178</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY1NDk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjcyNDE5MTRiZTA4Njhl
OGQ3YzQ5MGZlODEzMjMzODVhNzhjOTUwNC4uZDE5MjE2M2Y4NmQzNWI2NDRhNzlkZjlkODY0OWRj
MjUyMGM2ODM2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDE0LTAzLTEyICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgUmVuZGVyVGV4
dENvbnRyb2w6Omhhc1ZhbGlkQXZnQ2hhcldpZHRoIGRvZXNuJ3QgZGV0ZWN0IFN5c3RlbSBGb250
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzAxNjgK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcg
dGVzdHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZvbnQ6Omhhc1ZhbGlkQXZnQ2hhcldpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6
OkZvbnQ6OmZhc3RBdmdDaGFyV2lkdGgpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Zv
bnQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGV4dENvbnRyb2w6OmdldEF2Z0NoYXJXaWR0aCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUZXh0Q29udHJvbDo6Y29tcHV0ZUludHJpbnNpY0xvZ2ljYWxXaWR0
aHMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5oOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZTo6Z2V0QXZnQ2hhcldpZHRoKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuaDoKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6Z2V0QXZnQ2hhcldpZHRoKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6cHJlZmVycmVkQ29udGVu
dExvZ2ljYWxXaWR0aCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2lu
Z2xlTGluZS5oOgorCiAyMDE0LTAzLTEyICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUu
Y29tPgogCiAgICAgICAgIFtXZWJWVFRdIEhUTUw1ICJzcGFjZSIgY2FocmFjdGVycyBhcm91bmQg
Ii0tPiIgYXJlIG5vdCByZXF1aXJlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250LmNwcAppbmRleCBmNTc2ZGYwODAyMjIyODNmMzFjMzdjZmM2MzM0MzAwNDJjZjY0NDgzLi41
MjA4NjVkMTU0YWIyNmJiYzFjYzUzMzA2Mjg3MGNlOTc0YjFmYzAyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcApAQCAtNDI2LDYgKzQyNiw4MiBAQCBmbG9hdCBG
b250Ojp3aWR0aChUZXh0TGF5b3V0JiwgdW5zaWduZWQsIHVuc2lnbmVkLCBIYXNoU2V0PGNvbnN0
IFNpbXBsZUZvbnREYXRhKgogfQogI2VuZGlmCiAKKworCitzdGF0aWMgY29uc3QgY2hhciogZm9u
dEZhbWlsaWVzV2l0aEludmFsaWRDaGFyV2lkdGhbXSA9IHsKKyAgICAiQW1lcmljYW4gVHlwZXdy
aXRlciIsCisgICAgIkFyaWFsIEhlYnJldyIsCisgICAgIkNoYWxrYm9hcmQiLAorICAgICJDb2No
aW4iLAorICAgICJDb3JzaXZhIEhlYnJldyIsCisgICAgIkNvdXJpZXIiLAorICAgICJFdXBoZW1p
YSBVQ0FTIiwKKyAgICAiR2VuZXZhIiwKKyAgICAiR2lsbCBTYW5zIiwKKyAgICAiSGVpIiwKKyAg
ICAiSGVsdmV0aWNhIiwKKyAgICAiSG9lZmxlciBUZXh0IiwKKyAgICAiSW5haU1hdGhpIiwKKyAg
ICAiS2FpIiwKKyAgICAiTHVjaWRhIEdyYW5kZSIsCisgICAgIk1hcmtlciBGZWx0IiwKKyAgICAi
TW9uYWNvIiwKKyAgICAiTXNodGFrYW4iLAorICAgICJOZXcgUGVuaW5pbSBNVCIsCisgICAgIk9z
YWthIiwKKyAgICAiUmFhbmFuYSIsCisgICAgIlNUSGVpdGkiLAorICAgICJTeW1ib2wiLAorICAg
ICJUaW1lcyIsCisgICAgIkFwcGxlIEJyYWlsbGUiLAorICAgICJBcHBsZSBMaUdvdGhpYyIsCisg
ICAgIkFwcGxlIExpU3VuZyIsCisgICAgIkFwcGxlIFN5bWJvbHMiLAorICAgICJBcHBsZUdvdGhp
YyIsCisgICAgIkFwcGxlTXl1bmdqbyIsCisgICAgIiNHdW5nU2VvIiwKKyAgICAiI0hlYWRMaW5l
QSIsCisgICAgIiNQQ015dW5nam8iLAorICAgICIjUGlsR2kiLAorfTsKKworLy8gRm9yIGZvbnQg
ZmFtaWxpZXMgd2hlcmUgYW55IG9mIHRoZSBmb250cyBkb24ndCBoYXZlIGEgdmFsaWQgZW50cnkg
aW4gdGhlIE9TLzIgdGFibGUKKy8vIGZvciBhdmdDaGFyV2lkdGgsIGZhbGxiYWNrIHRvIHRoZSBs
ZWdhY3kgd2Via2l0IGJlaGF2aW9yIG9mIGdldHRpbmcgdGhlIGF2Z0NoYXJXaWR0aAorLy8gZnJv
bSB0aGUgd2lkdGggb2YgYSAnMCcuIFRoaXMgb25seSBzZWVtcyB0byBhcHBseSB0byBhIGZpeGVk
IG51bWJlciBvZiBNYWMgZm9udHMsCisvLyBidXQsIGluIG9yZGVyIHRvIGdldCBzaW1pbGFyIHJl
bmRlcmluZyBhY3Jvc3MgcGxhdGZvcm1zLCB3ZSBkbyB0aGlzIGNoZWNrIGZvcgorLy8gYWxsIHBs
YXRmb3Jtcy4KK2Jvb2wgRm9udDo6aGFzVmFsaWRBdmdDaGFyV2lkdGgoKSBjb25zdAoreworICAg
IEF0b21pY1N0cmluZyBmYW1pbHkgPSBmaXJzdEZhbWlseSgpOworICAgIGlmIChmYW1pbHkuaXNF
bXB0eSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBJbnRlcm5hbCBmb250cyBv
biBPUyBYIGFsc28gaGF2ZSBhbiBpbnZhbGlkIGVudHJ5IGluIHRoZSB0YWJsZSBmb3IgYXZnQ2hh
cldpZHRoLgorICAgIC8vIFRoZXkgYXJlIGhpZGRlbiBieSBoYXZpbmcgYSBuYW1lIHRoYXQgYmVn
aW5zIHdpdGggYSBwZXJpb2QsIHNvIHNpbXBseSBzZWFyY2gKKyAgICAvLyBmb3IgdGhhdCBoZXJl
IHJhdGhlciB0aGFuIHRyeSB0byBrZWVwIHRoZSBsaXN0IHVwIHRvIGRhdGUuCisgICAgaWYgKGZh
bWlseS5zdGFydHNXaXRoKCcuJykgfHwgZmFtaWx5ID09ICJTeXN0ZW0gRm9udCIpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIHN0YXRpYyBIYXNoU2V0PEF0b21pY1N0cmluZz4qIGZvbnRG
YW1pbGllc1dpdGhJbnZhbGlkQ2hhcldpZHRoTWFwID0gMDsKKworICAgIGlmICghZm9udEZhbWls
aWVzV2l0aEludmFsaWRDaGFyV2lkdGhNYXApIHsKKyAgICAgICAgZm9udEZhbWlsaWVzV2l0aElu
dmFsaWRDaGFyV2lkdGhNYXAgPSBuZXcgSGFzaFNldDxBdG9taWNTdHJpbmc+OworCisgICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgV1RGX0FSUkFZX0xFTkdUSChmb250RmFtaWxpZXNXaXRo
SW52YWxpZENoYXJXaWR0aCk7ICsraSkKKyAgICAgICAgICAgIGZvbnRGYW1pbGllc1dpdGhJbnZh
bGlkQ2hhcldpZHRoTWFwLT5hZGQoQXRvbWljU3RyaW5nKGZvbnRGYW1pbGllc1dpdGhJbnZhbGlk
Q2hhcldpZHRoW2ldKSk7CisgICAgfQorCisgICAgcmV0dXJuICFmb250RmFtaWxpZXNXaXRoSW52
YWxpZENoYXJXaWR0aE1hcC0+Y29udGFpbnMoZmFtaWx5KTsKK30KKworYm9vbCBGb250OjpmYXN0
QXZnQ2hhcldpZHRoKGZsb2F0JiB3aWR0aCkgY29uc3QKK3sKKyAgICBib29sIHN1Y2Nlc3MgPSBo
YXNWYWxpZEF2Z0NoYXJXaWR0aCgpOworICAgIGlmIChzdWNjZXNzKQorICAgICAgICB3aWR0aCA9
IHJvdW5kZihwcmltYXJ5Rm9udCgpLT5hdmdDaGFyV2lkdGgoKSk7IC8vIEZJWE1FOiBwcmltYXJ5
Rm9udCgpIG1pZ2h0IG5vdCBjb3JyZXNwb25kIHRvIGZpcnN0RmFtaWx5KCkKKyAgICByZXR1cm4g
c3VjY2VzczsKK30KKwogRmxvYXRSZWN0IEZvbnQ6OnNlbGVjdGlvblJlY3RGb3JUZXh0KGNvbnN0
IFRleHRSdW4mIHJ1biwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGludCBoLCBpbnQgZnJvbSwg
aW50IHRvKSBjb25zdAogewogICAgIHRvID0gKHRvID09IC0xID8gcnVuLmxlbmd0aCgpIDogdG8p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCmluZGV4IGFkZmZjZTg1MDFl
YzlmNWJkNDI4ODJjMzg4Yzc3NzJjOTRhMjgyYjguLjMyNmQ3OGVmY2E2YTlkNzg0MGExMGExNzJk
NmZhYzg4ZjFhNzIyMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgK
QEAgLTE1Myw2ICsxNTMsOCBAQCBwdWJsaWM6CiAgICAgZmxvYXQgc3BhY2VXaWR0aCgpIGNvbnN0
IHsgcmV0dXJuIHByaW1hcnlGb250KCktPnNwYWNlV2lkdGgoKSArIG1fbGV0dGVyU3BhY2luZzsg
fQogICAgIGZsb2F0IHRhYldpZHRoKGNvbnN0IFNpbXBsZUZvbnREYXRhJiwgdW5zaWduZWQgdGFi
U2l6ZSwgZmxvYXQgcG9zaXRpb24pIGNvbnN0OwogICAgIGZsb2F0IHRhYldpZHRoKHVuc2lnbmVk
IHRhYlNpemUsIGZsb2F0IHBvc2l0aW9uKSBjb25zdCB7IHJldHVybiB0YWJXaWR0aCgqcHJpbWFy
eUZvbnQoKSwgdGFiU2l6ZSwgcG9zaXRpb24pOyB9CisgICAgYm9vbCBoYXNWYWxpZEF2Z0NoYXJX
aWR0aCgpIGNvbnN0OworICAgIGJvb2wgZmFzdEF2Z0NoYXJXaWR0aChmbG9hdCAmd2lkdGgpIGNv
bnN0OyAvLyByZXR1cm5zIHRydWUgb24gc3VjY2VzcwogCiAgICAgaW50IGVtcGhhc2lzTWFya0Fz
Y2VudChjb25zdCBBdG9taWNTdHJpbmcmKSBjb25zdDsKICAgICBpbnQgZW1waGFzaXNNYXJrRGVz
Y2VudChjb25zdCBBdG9taWNTdHJpbmcmKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwCmluZGV4IDU2MDQxMjFmYmQ4NzY3YTk0ODI5MTUw
OGRkOWYzZDk0YWQ0YjExZmQuLmE4MDcxZWE0NThkNzMyMmM2ZTVhM2NjOWNiNWU4ZDQzMDJiZjBj
OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJv
bC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNw
cApAQCAtMTc0LDc1ICsxNzQsMTEgQEAgdm9pZCBSZW5kZXJUZXh0Q29udHJvbDo6aGl0SW5uZXJU
ZXh0RWxlbWVudChIaXRUZXN0UmVzdWx0JiByZXN1bHQsIGNvbnN0IExheW91dFAKICAgICByZXN1
bHQuc2V0TG9jYWxQb2ludChsb2NhbFBvaW50KTsKIH0KIAotc3RhdGljIGNvbnN0IGNoYXIqIGZv
bnRGYW1pbGllc1dpdGhJbnZhbGlkQ2hhcldpZHRoW10gPSB7Ci0gICAgIkFtZXJpY2FuIFR5cGV3
cml0ZXIiLAotICAgICJBcmlhbCBIZWJyZXciLAotICAgICJDaGFsa2JvYXJkIiwKLSAgICAiQ29j
aGluIiwKLSAgICAiQ29yc2l2YSBIZWJyZXciLAotICAgICJDb3VyaWVyIiwKLSAgICAiRXVwaGVt
aWEgVUNBUyIsCi0gICAgIkdlbmV2YSIsCi0gICAgIkdpbGwgU2FucyIsCi0gICAgIkhlaSIsCi0g
ICAgIkhlbHZldGljYSIsCi0gICAgIkhvZWZsZXIgVGV4dCIsCi0gICAgIkluYWlNYXRoaSIsCi0g
ICAgIkthaSIsCi0gICAgIkx1Y2lkYSBHcmFuZGUiLAotICAgICJNYXJrZXIgRmVsdCIsCi0gICAg
Ik1vbmFjbyIsCi0gICAgIk1zaHRha2FuIiwKLSAgICAiTmV3IFBlbmluaW0gTVQiLAotICAgICJP
c2FrYSIsCi0gICAgIlJhYW5hbmEiLAotICAgICJTVEhlaXRpIiwKLSAgICAiU3ltYm9sIiwKLSAg
ICAiVGltZXMiLAotICAgICJBcHBsZSBCcmFpbGxlIiwKLSAgICAiQXBwbGUgTGlHb3RoaWMiLAot
ICAgICJBcHBsZSBMaVN1bmciLAotICAgICJBcHBsZSBTeW1ib2xzIiwKLSAgICAiQXBwbGVHb3Ro
aWMiLAotICAgICJBcHBsZU15dW5nam8iLAotICAgICIjR3VuZ1NlbyIsCi0gICAgIiNIZWFkTGlu
ZUEiLAotICAgICIjUENNeXVuZ2pvIiwKLSAgICAiI1BpbEdpIiwKLX07Ci0KLS8vIEZvciBmb250
IGZhbWlsaWVzIHdoZXJlIGFueSBvZiB0aGUgZm9udHMgZG9uJ3QgaGF2ZSBhIHZhbGlkIGVudHJ5
IGluIHRoZSBPUy8yIHRhYmxlCi0vLyBmb3IgYXZnQ2hhcldpZHRoLCBmYWxsYmFjayB0byB0aGUg
bGVnYWN5IHdlYmtpdCBiZWhhdmlvciBvZiBnZXR0aW5nIHRoZSBhdmdDaGFyV2lkdGgKLS8vIGZy
b20gdGhlIHdpZHRoIG9mIGEgJzAnLiBUaGlzIG9ubHkgc2VlbXMgdG8gYXBwbHkgdG8gYSBmaXhl
ZCBudW1iZXIgb2YgTWFjIGZvbnRzLAotLy8gYnV0LCBpbiBvcmRlciB0byBnZXQgc2ltaWxhciBy
ZW5kZXJpbmcgYWNyb3NzIHBsYXRmb3Jtcywgd2UgZG8gdGhpcyBjaGVjayBmb3IKLS8vIGFsbCBw
bGF0Zm9ybXMuCi1ib29sIFJlbmRlclRleHRDb250cm9sOjpoYXNWYWxpZEF2Z0NoYXJXaWR0aChB
dG9taWNTdHJpbmcgZmFtaWx5KQorZmxvYXQgUmVuZGVyVGV4dENvbnRyb2w6OmdldEF2Z0NoYXJX
aWR0aCgpCiB7Ci0gICAgaWYgKGZhbWlseS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLQotICAgIC8vIEludGVybmFsIGZvbnRzIG9uIE9TIFggYWxzbyBoYXZlIGFuIGludmFsaWQg
ZW50cnkgaW4gdGhlIHRhYmxlIGZvciBhdmdDaGFyV2lkdGguCi0gICAgLy8gVGhleSBhcmUgaGlk
ZGVuIGJ5IGhhdmluZyBhIG5hbWUgdGhhdCBiZWdpbnMgd2l0aCBhIHBlcmlvZCwgc28gc2ltcGx5
IHNlYXJjaAotICAgIC8vIGZvciB0aGF0IGhlcmUgcmF0aGVyIHRoYW4gdHJ5IHRvIGtlZXAgdGhl
IGxpc3QgdXAgdG8gZGF0ZS4KLSAgICBpZiAoZmFtaWx5LnN0YXJ0c1dpdGgoJy4nKSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotCi0gICAgc3RhdGljIEhhc2hTZXQ8QXRvbWljU3RyaW5nPiogZm9u
dEZhbWlsaWVzV2l0aEludmFsaWRDaGFyV2lkdGhNYXAgPSAwOwotICAgIAotICAgIGlmICghZm9u
dEZhbWlsaWVzV2l0aEludmFsaWRDaGFyV2lkdGhNYXApIHsKLSAgICAgICAgZm9udEZhbWlsaWVz
V2l0aEludmFsaWRDaGFyV2lkdGhNYXAgPSBuZXcgSGFzaFNldDxBdG9taWNTdHJpbmc+OwotCi0g
ICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgV1RGX0FSUkFZX0xFTkdUSChmb250RmFtaWxp
ZXNXaXRoSW52YWxpZENoYXJXaWR0aCk7ICsraSkKLSAgICAgICAgICAgIGZvbnRGYW1pbGllc1dp
dGhJbnZhbGlkQ2hhcldpZHRoTWFwLT5hZGQoQXRvbWljU3RyaW5nKGZvbnRGYW1pbGllc1dpdGhJ
bnZhbGlkQ2hhcldpZHRoW2ldKSk7Ci0gICAgfQotCi0gICAgcmV0dXJuICFmb250RmFtaWxpZXNX
aXRoSW52YWxpZENoYXJXaWR0aE1hcC0+Y29udGFpbnMoZmFtaWx5KTsKLX0KLQotZmxvYXQgUmVu
ZGVyVGV4dENvbnRyb2w6OmdldEF2Z0NoYXJXaWR0aChBdG9taWNTdHJpbmcgZmFtaWx5KQotewot
ICAgIGlmIChoYXNWYWxpZEF2Z0NoYXJXaWR0aChmYW1pbHkpKQotICAgICAgICByZXR1cm4gcm91
bmRmKHN0eWxlKCkuZm9udCgpLnByaW1hcnlGb250KCktPmF2Z0NoYXJXaWR0aCgpKTsKKyAgICBm
bG9hdCB3aWR0aDsKKyAgICBpZiAoc3R5bGUoKS5mb250KCkuZmFzdEF2Z0NoYXJXaWR0aCh3aWR0
aCkpCisgICAgICAgIHJldHVybiB3aWR0aDsKIAogICAgIGNvbnN0IFVDaGFyIGNoID0gJzAnOwog
ICAgIGNvbnN0IFN0cmluZyBzdHIgPSBTdHJpbmcoJmNoLCAxKTsKQEAgLTI2Miw4ICsxOTgsNyBA
QCBmbG9hdCBSZW5kZXJUZXh0Q29udHJvbDo6c2NhbGVFbVRvVW5pdHMoaW50IHgpIGNvbnN0CiB2
b2lkIFJlbmRlclRleHRDb250cm9sOjpjb21wdXRlSW50cmluc2ljTG9naWNhbFdpZHRocyhMYXlv
dXRVbml0JiBtaW5Mb2dpY2FsV2lkdGgsIExheW91dFVuaXQmIG1heExvZ2ljYWxXaWR0aCkgY29u
c3QKIHsKICAgICAvLyBVc2UgYXZlcmFnZSBjaGFyYWN0ZXIgd2lkdGguIE1hdGNoZXMgSUUuCi0g
ICAgY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHkgPSBzdHlsZSgpLmZvbnQoKS5maXJzdEZhbWls
eSgpOwotICAgIG1heExvZ2ljYWxXaWR0aCA9IHByZWZlcnJlZENvbnRlbnRMb2dpY2FsV2lkdGgo
Y29uc3RfY2FzdDxSZW5kZXJUZXh0Q29udHJvbCo+KHRoaXMpLT5nZXRBdmdDaGFyV2lkdGgoZmFt
aWx5KSk7CisgICAgbWF4TG9naWNhbFdpZHRoID0gcHJlZmVycmVkQ29udGVudExvZ2ljYWxXaWR0
aChjb25zdF9jYXN0PFJlbmRlclRleHRDb250cm9sKj4odGhpcyktPmdldEF2Z0NoYXJXaWR0aCgp
KTsKICAgICBpZiAoUmVuZGVyQm94KiBpbm5lclRleHRSZW5kZXJCb3ggPSBpbm5lclRleHRFbGVt
ZW50KCktPnJlbmRlckJveCgpKQogICAgICAgICBtYXhMb2dpY2FsV2lkdGggKz0gaW5uZXJUZXh0
UmVuZGVyQm94LT5wYWRkaW5nU3RhcnQoKSArIGlubmVyVGV4dFJlbmRlckJveC0+cGFkZGluZ0Vu
ZCgpOwogICAgIGlmICghc3R5bGUoKS5sb2dpY2FsV2lkdGgoKS5pc1BlcmNlbnQoKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmgKaW5kZXggZGRmYjA2OTU3
YWI3ZmM1YjAxNjk0OTJjMWY1MTg4YzdhYmU5OGYzYi4uZGQ1ZjM0ZGQ1MjNiZmI0ODg3YzllZDc0
NWJjYjY5NjViMTg5NDU4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRleHRDb250cm9sLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRl
eHRDb250cm9sLmgKQEAgLTYyLDggKzYyLDcgQEAgcHJvdGVjdGVkOgogCiAgICAgZmxvYXQgc2Nh
bGVFbVRvVW5pdHMoaW50IHgpIGNvbnN0OwogCi0gICAgc3RhdGljIGJvb2wgaGFzVmFsaWRBdmdD
aGFyV2lkdGgoQXRvbWljU3RyaW5nIGZhbWlseSk7Ci0gICAgdmlydHVhbCBmbG9hdCBnZXRBdmdD
aGFyV2lkdGgoQXRvbWljU3RyaW5nIGZhbWlseSk7CisgICAgdmlydHVhbCBmbG9hdCBnZXRBdmdD
aGFyV2lkdGgoKTsKICAgICB2aXJ0dWFsIExheW91dFVuaXQgcHJlZmVycmVkQ29udGVudExvZ2lj
YWxXaWR0aChmbG9hdCBjaGFyV2lkdGgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIExheW91dFVu
aXQgY29tcHV0ZUNvbnRyb2xMb2dpY2FsSGVpZ2h0KExheW91dFVuaXQgbGluZUhlaWdodCwgTGF5
b3V0VW5pdCBub25Db250ZW50SGVpZ2h0KSBjb25zdCA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuY3BwCmluZGV4
IDkyOTQwNTEyZjk2Nzg0MjFkOTY0NDA3YTdmNGU3ZDJkNjFmZjE5OGYuLmM1NzFjMzVkYjJjZGMz
NmQ0ZDQxNzQ1Y2EyMjBiZWVjMjUxNDJlMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLmNwcApAQCAtNTksMTcgKzU5
LDE3IEBAIGJvb2wgUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmU6Om5vZGVBdFBvaW50KGNvbnN0
IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWZs
b2F0IFJlbmRlclRleHRDb250cm9sTXVsdGlMaW5lOjpnZXRBdmdDaGFyV2lkdGgoQXRvbWljU3Ry
aW5nIGZhbWlseSkKK2Zsb2F0IFJlbmRlclRleHRDb250cm9sTXVsdGlMaW5lOjpnZXRBdmdDaGFy
V2lkdGgoKQogewogI2lmICFQTEFURk9STShJT1MpCiAgICAgLy8gU2luY2UgTHVjaWRhIEdyYW5k
ZSBpcyB0aGUgZGVmYXVsdCBmb250LCB3ZSB3YW50IHRoaXMgdG8gbWF0Y2ggdGhlIHdpZHRoCiAg
ICAgLy8gb2YgQ291cmllciBOZXcsIHRoZSBkZWZhdWx0IGZvbnQgZm9yIHRleHRhcmVhcyBpbiBJ
RSwgRmlyZWZveCBhbmQgU2FmYXJpIFdpbi4KICAgICAvLyAxMjI5IGlzIHRoZSBhdmdDaGFyV2lk
dGggdmFsdWUgaW4gdGhlIE9TLzIgdGFibGUgZm9yIENvdXJpZXIgTmV3LgotICAgIGlmIChmYW1p
bHkgPT0gIkx1Y2lkYSBHcmFuZGUiKQorICAgIGlmIChzdHlsZSgpLmZvbnQoKS5maXJzdEZhbWls
eSgpID09ICJMdWNpZGEgR3JhbmRlIikKICAgICAgICAgcmV0dXJuIHNjYWxlRW1Ub1VuaXRzKDEy
MjkpOwogI2VuZGlmCiAKLSAgICByZXR1cm4gUmVuZGVyVGV4dENvbnRyb2w6OmdldEF2Z0NoYXJX
aWR0aChmYW1pbHkpOworICAgIHJldHVybiBSZW5kZXJUZXh0Q29udHJvbDo6Z2V0QXZnQ2hhcldp
ZHRoKCk7CiB9CiAKIExheW91dFVuaXQgUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmU6OnByZWZl
cnJlZENvbnRlbnRMb2dpY2FsV2lkdGgoZmxvYXQgY2hhcldpZHRoKSBjb25zdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuaApp
bmRleCA0MmZmMzMxOTQyNmU0YjQyYmMwOGJlMTAzZTA2ZTI5ZTRmNWFlM2ZkLi45NmI1Mzk3M2Zh
MGZkYzQ1YzZkZjg5NmFhMzg0NmM4YmIwOWI0OTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuaApAQCAtNDIsNyArNDIs
NyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCBib29sIG5vZGVBdFBvaW50KGNvbnN0IEhpdFRl
c3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgbG9jYXRp
b25JbkNvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBIaXRU
ZXN0QWN0aW9uKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgZmxvYXQgZ2V0QXZnQ2hhcldpZHRo
KEF0b21pY1N0cmluZyBmYW1pbHkpOworICAgIHZpcnR1YWwgZmxvYXQgZ2V0QXZnQ2hhcldpZHRo
KCk7CiAgICAgdmlydHVhbCBMYXlvdXRVbml0IHByZWZlcnJlZENvbnRlbnRMb2dpY2FsV2lkdGgo
ZmxvYXQgY2hhcldpZHRoKSBjb25zdDsKICAgICB2aXJ0dWFsIExheW91dFVuaXQgY29tcHV0ZUNv
bnRyb2xMb2dpY2FsSGVpZ2h0KExheW91dFVuaXQgbGluZUhlaWdodCwgTGF5b3V0VW5pdCBub25D
b250ZW50SGVpZ2h0KSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGludCBiYXNlbGluZVBv
c2l0aW9uKEZvbnRCYXNlbGluZSwgYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlLCBM
aW5lUG9zaXRpb25Nb2RlID0gUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKSBjb25zdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxp
bmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xl
TGluZS5jcHAKaW5kZXggYmMwMDhlOGY3NTBjY2Y2YmFhNzk1ZTUyNjlmMDEyNzI2ZWZiNWM1NC4u
YmUwM2U3ZTAxNGY4NTM2N2VlYjhkODk4MjNiNTk1ZDM2YTdiNDljZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5j
cHAKQEAgLTMxMiwxOCArMzEyLDE4IEBAIExheW91dFJlY3QgUmVuZGVyVGV4dENvbnRyb2xTaW5n
bGVMaW5lOjpjb250cm9sQ2xpcFJlY3QoY29uc3QgTGF5b3V0UG9pbnQmIGFkZGl0CiAgICAgcmV0
dXJuIGNsaXBSZWN0OwogfQogCi1mbG9hdCBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6Omdl
dEF2Z0NoYXJXaWR0aChBdG9taWNTdHJpbmcgZmFtaWx5KQorZmxvYXQgUmVuZGVyVGV4dENvbnRy
b2xTaW5nbGVMaW5lOjpnZXRBdmdDaGFyV2lkdGgoKQogewogI2lmICFQTEFURk9STShJT1MpCiAg
ICAgLy8gU2luY2UgTHVjaWRhIEdyYW5kZSBpcyB0aGUgZGVmYXVsdCBmb250LCB3ZSB3YW50IHRo
aXMgdG8gbWF0Y2ggdGhlIHdpZHRoCiAgICAgLy8gb2YgTVMgU2hlbGwgRGxnLCB0aGUgZGVmYXVs
dCBmb250IGZvciB0ZXh0YXJlYXMgaW4gRmlyZWZveCwgU2FmYXJpIFdpbiBhbmQKICAgICAvLyBJ
RSBmb3Igc29tZSBlbmNvZGluZ3MgKGluIElFLCB0aGUgZGVmYXVsdCBmb250IGlzIGVuY29kaW5n
IHNwZWNpZmljKS4KICAgICAvLyA5MDEgaXMgdGhlIGF2Z0NoYXJXaWR0aCB2YWx1ZSBpbiB0aGUg
T1MvMiB0YWJsZSBmb3IgTVMgU2hlbGwgRGxnLgotICAgIGlmIChmYW1pbHkgPT0gIkx1Y2lkYSBH
cmFuZGUiKQorICAgIGlmIChzdHlsZSgpLmZvbnQoKS5maXJzdEZhbWlseSgpID09ICJMdWNpZGEg
R3JhbmRlIikKICAgICAgICAgcmV0dXJuIHNjYWxlRW1Ub1VuaXRzKDkwMSk7CiAjZW5kaWYKIAot
ICAgIHJldHVybiBSZW5kZXJUZXh0Q29udHJvbDo6Z2V0QXZnQ2hhcldpZHRoKGZhbWlseSk7Cisg
ICAgcmV0dXJuIFJlbmRlclRleHRDb250cm9sOjpnZXRBdmdDaGFyV2lkdGgoKTsKIH0KIAogTGF5
b3V0VW5pdCBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OnByZWZlcnJlZENvbnRlbnRMb2dp
Y2FsV2lkdGgoZmxvYXQgY2hhcldpZHRoKSBjb25zdApAQCAtMzQ1LDcgKzM0NSw3IEBAIExheW91
dFVuaXQgUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjpwcmVmZXJyZWRDb250ZW50TG9naWNh
bFdpZHRoKGZsb2F0IGNoYXJXCiAgICAgLy8gNDAyNyBpcyB0aGUgKHhNYXggLSB4TWluKSB2YWx1
ZSBpbiB0aGUgImhlYWQiIGZvbnQgdGFibGUgZm9yIE1TIFNoZWxsIERsZy4KICAgICBpZiAoZmFt
aWx5ID09ICJMdWNpZGEgR3JhbmRlIikKICAgICAgICAgbWF4Q2hhcldpZHRoID0gc2NhbGVFbVRv
VW5pdHMoNDAyNyk7Ci0gICAgZWxzZSBpZiAoaGFzVmFsaWRBdmdDaGFyV2lkdGgoZmFtaWx5KSkK
KyAgICBlbHNlIGlmIChzdHlsZSgpLmZvbnQoKS5oYXNWYWxpZEF2Z0NoYXJXaWR0aCgpKQogICAg
ICAgICBtYXhDaGFyV2lkdGggPSByb3VuZGYoc3R5bGUoKS5mb250KCkucHJpbWFyeUZvbnQoKS0+
bWF4Q2hhcldpZHRoKCkpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuaAppbmRleCBiZjlkZWY0ZWZlNTM1
M2I3YjM4OWE1YzdlMzE5ZmI1NWIxMTUxZGUxLi45NWQ3NjU1ODhlZDBkNDU0MmNlN2M2MTg4ZWM1
YTIzOTVmYzUxNDUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGV4dENvbnRyb2xTaW5nbGVMaW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRleHRDb250cm9sU2luZ2xlTGluZS5oCkBAIC03Myw3ICs3Myw3IEBAIHByaXZhdGU6CiAg
ICAgdmlydHVhbCBib29sIGxvZ2ljYWxTY3JvbGwoU2Nyb2xsTG9naWNhbERpcmVjdGlvbiwgU2Ny
b2xsR3JhbnVsYXJpdHksIGZsb2F0IG11bHRpcGxpZXIgPSAxLCBFbGVtZW50Kiogc3RvcEVsZW1l
bnQgPSAwKSBvdmVycmlkZSBmaW5hbDsKIAogICAgIGludCB0ZXh0QmxvY2tXaWR0aCgpIGNvbnN0
OwotICAgIHZpcnR1YWwgZmxvYXQgZ2V0QXZnQ2hhcldpZHRoKEF0b21pY1N0cmluZyBmYW1pbHkp
IG92ZXJyaWRlOworICAgIHZpcnR1YWwgZmxvYXQgZ2V0QXZnQ2hhcldpZHRoKCkgb3ZlcnJpZGU7
CiAgICAgdmlydHVhbCBMYXlvdXRVbml0IHByZWZlcnJlZENvbnRlbnRMb2dpY2FsV2lkdGgoZmxv
YXQgY2hhcldpZHRoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIExheW91dFVuaXQgY29t
cHV0ZUNvbnRyb2xMb2dpY2FsSGVpZ2h0KExheW91dFVuaXQgbGluZUhlaWdodCwgTGF5b3V0VW5p
dCBub25Db250ZW50SGVpZ2h0KSBjb25zdCBvdmVycmlkZTsKICAgICAK
</data>
<flag name="review"
          id="250809"
          type_id="1"
          status="+"
          setter="dino"
    />
          </attachment>
      

    </bug>

</bugzilla>