<?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>132036</bug_id>
          
          <creation_ts>2014-04-22 20:32:27 -0700</creation_ts>
          <short_desc>Unify platformWidthForGlyph across OS X and iOS</short_desc>
          <delta_ts>2014-04-24 14:21:31 -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></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>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>enrica</cc>
    
    <cc>jonlee</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1003165</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2014-04-22 20:32:27 -0700</bug_when>
    <thetext>Unify platformWidthForGlyph across OS X and iOS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1003167</commentid>
    <comment_count>1</comment_count>
      <attachid>229948</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2014-04-22 20:38:29 -0700</bug_when>
    <thetext>Created attachment 229948
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1003168</commentid>
    <comment_count>2</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2014-04-22 20:39:23 -0700</bug_when>
    <thetext>This patch isn&apos;t very clean - there are 4 helper functions. I would appreciate any advice you have about how to clean this up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1003319</commentid>
    <comment_count>3</comment_count>
      <attachid>229993</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2014-04-23 10:41:24 -0700</bug_when>
    <thetext>Created attachment 229993
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1003320</commentid>
    <comment_count>4</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2014-04-23 10:41:59 -0700</bug_when>
    <thetext>Style is a false negative - the enum values are already defined in the header, so I can&apos;t rename them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1003321</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-04-23 10:43:32 -0700</bug_when>
    <thetext>Attachment 229993 did not pass style-queue:


ERROR: Source/WebCore/platform/graphics/SimpleFontData.h:61:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/platform/graphics/SimpleFontData.h:62:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/platform/graphics/SimpleFontData.h:63:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/platform/graphics/SimpleFontData.h:64:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/platform/graphics/SimpleFontData.h:65:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/platform/graphics/SimpleFontData.h:66:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Total errors found: 6 in 4 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1003337</commentid>
    <comment_count>6</comment_count>
      <attachid>229997</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2014-04-23 11:34:36 -0700</bug_when>
    <thetext>Created attachment 229997
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1003339</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-04-23 11:36:32 -0700</bug_when>
    <thetext>Attachment 229997 did not pass style-queue:


ERROR: Source/WebCore/platform/graphics/SimpleFontData.h:61:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/platform/graphics/SimpleFontData.h:62:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/platform/graphics/SimpleFontData.h:63:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/platform/graphics/SimpleFontData.h:64:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/platform/graphics/SimpleFontData.h:65:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/platform/graphics/SimpleFontData.h:66:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Total errors found: 6 in 4 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1003353</commentid>
    <comment_count>8</comment_count>
      <attachid>230000</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2014-04-23 12:54:30 -0700</bug_when>
    <thetext>Created attachment 230000
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1003354</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-04-23 12:55:56 -0700</bug_when>
    <thetext>Attachment 230000 did not pass style-queue:


ERROR: Source/WebCore/platform/graphics/SimpleFontData.h:62:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/platform/graphics/SimpleFontData.h:63:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/platform/graphics/SimpleFontData.h:64:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/platform/graphics/SimpleFontData.h:65:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/platform/graphics/SimpleFontData.h:66:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/platform/graphics/SimpleFontData.h:67:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Total errors found: 6 in 4 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1003408</commentid>
    <comment_count>10</comment_count>
      <attachid>230000</attachid>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2014-04-23 15:35:14 -0700</bug_when>
    <thetext>Comment on attachment 230000
Patch

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

&gt; Source/WebCore/platform/graphics/SimpleFontData.h:71
&gt; +#endif

You should use a data type that is not platform specific in this file.

&gt; Source/WebCore/platform/graphics/mac/SimpleFontDataMac.mm:432
&gt; +        if (!advanceForColorBitmapFont(glyph, advance)) {

I think this could all be in one if statement.

&gt; Source/WebCore/platform/graphics/mac/SimpleFontDataMac.mm:435
&gt; +            if (!CGFontGetGlyphAdvancesForStyle(platformData().cgFont(), &amp;m, renderingStyle(), &amp;glyph, 1, &amp;advance)) {

Are you sure this is API? Normally on OS X we used wksi when we are using SPI, otherwise it does not compile on the bots. For iOS we never had this problem and we still don&apos;t have OpenSource bots building iOS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1003417</commentid>
    <comment_count>11</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-04-23 16:10:09 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 230000 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=230000&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/SimpleFontData.h:71
&gt; &gt; +#endif
&gt; 
&gt; You should use a data type that is not platform specific in this file.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/mac/SimpleFontDataMac.mm:432
&gt; &gt; +        if (!advanceForColorBitmapFont(glyph, advance)) {
&gt; 
&gt; I think this could all be in one if statement.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/mac/SimpleFontDataMac.mm:435
&gt; &gt; +            if (!CGFontGetGlyphAdvancesForStyle(platformData().cgFont(), &amp;m, renderingStyle(), &amp;glyph, 1, &amp;advance)) {
&gt; 
&gt; Are you sure this is API? Normally on OS X we used wksi when we are using SPI

This mostly isn&apos;t true anymore; we tend to use forward declarations and has_include, like Myles does here.

&gt; otherwise it does not compile on the bots. For iOS we never had this problem and we still don&apos;t have OpenSource bots building iOS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1003647</commentid>
    <comment_count>12</comment_count>
      <attachid>230000</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-04-24 09:06:19 -0700</bug_when>
    <thetext>Comment on attachment 230000
Patch

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

&gt; Source/WebCore/platform/graphics/ios/SimpleFontDataIOS.mm:198
&gt; +bool SimpleFontData::advanceForColorBitmapFont(Glyph glyph, CGSize&amp; advance) const
&gt; +{
&gt; +    UNUSED_PARAM(glyph);
&gt; +    UNUSED_PARAM(advance);
&gt; +    return false;
&gt;  }

It’s better to omit the argument names rather than using UNUSED_PARAM in a case like this.

&gt; Source/WebCore/platform/graphics/mac/SimpleFontDataMac.mm:375
&gt; +CGFontRenderingStyle SimpleFontData::renderingStyle() const

Probably should be inline.

&gt; Source/WebCore/platform/graphics/mac/SimpleFontDataMac.mm:389
&gt; +        default:
&gt; +            style = kCGFontRenderingStyleAntialiasing | kCGFontRenderingStyleSubpixelPositioning | kCGFontRenderingStyleSubpixelQuantization;
&gt; +            break;

Doesn’t seem like we need this code. That’s already what style is set to.

&gt; Source/WebCore/platform/graphics/mac/SimpleFontDataMac.mm:395
&gt; +bool SimpleFontData::advanceForColorBitmapFont(Glyph glyph, CGSize&amp; advance) const

Probably should be inline.

&gt; Source/WebCore/platform/graphics/mac/SimpleFontDataMac.mm:402
&gt; +    NSFont *font = platformData().font();
&gt; +    if (font &amp;&amp; platformData().isColorBitmapFont()) {
&gt; +        advance = NSSizeToCGSize([font advancementForGlyph:glyph]);
&gt; +        return true;
&gt; +    }
&gt; +    return false;

I think code like this reads better if the early return is the failure case.

    if (!font || !platformData().isColorBitmapFont())
        return false;

&gt; Source/WebCore/platform/graphics/mac/SimpleFontDataMac.mm:408
&gt; +#if !PLATFORM(IOS) &amp;&amp; __MAC_OS_X_VERSION_MIN_REQUIRED &lt; 1090

I think PLATFORM(MAC) would be better than !PLATFORM(IOS) here.

&gt; Source/WebCore/platform/graphics/mac/SimpleFontDataMac.mm:417
&gt; +static bool isEmoji(const FontPlatformData&amp; platformData)

Definitely should be inline.

&gt;&gt; Source/WebCore/platform/graphics/mac/SimpleFontDataMac.mm:432
&gt;&gt; +        if (!advanceForColorBitmapFont(glyph, advance)) {
&gt; 
&gt; I think this could all be in one if statement.

I agree. And I also think we might want a more complete helper function that combines the last three clauses into a single statement to keep the if statement shorter and also to give us room to write short clear comments about why these are the cases where we use CGFontGetGlyphAdvancesForStyle.

&gt;&gt; Source/WebCore/platform/graphics/mac/SimpleFontDataMac.mm:435
&gt;&gt; +            if (!CGFontGetGlyphAdvancesForStyle(platformData().cgFont(), &amp;m, renderingStyle(), &amp;glyph, 1, &amp;advance)) {
&gt; 
&gt; Are you sure this is API? Normally on OS X we used wksi when we are using SPI, otherwise it does not compile on the bots. For iOS we never had this problem and we still don&apos;t have OpenSource bots building iOS.

I think this will work. You’ll note that Myles declares this function above as part of the __has_include dance. This can be a superior approach to the WebKitSystemInterface one in cases like this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1003742</commentid>
    <comment_count>13</comment_count>
      <attachid>230000</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2014-04-24 13:13:24 -0700</bug_when>
    <thetext>Comment on attachment 230000
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/ios/SimpleFontDataIOS.mm:198
&gt;&gt;  }
&gt; 
&gt; It’s better to omit the argument names rather than using UNUSED_PARAM in a case like this.

Done.

&gt;&gt; Source/WebCore/platform/graphics/mac/SimpleFontDataMac.mm:375
&gt;&gt; +CGFontRenderingStyle SimpleFontData::renderingStyle() const
&gt; 
&gt; Probably should be inline.

Done.

&gt;&gt; Source/WebCore/platform/graphics/mac/SimpleFontDataMac.mm:389
&gt;&gt; +            break;
&gt; 
&gt; Doesn’t seem like we need this code. That’s already what style is set to.

Done.

&gt;&gt; Source/WebCore/platform/graphics/mac/SimpleFontDataMac.mm:395
&gt;&gt; +bool SimpleFontData::advanceForColorBitmapFont(Glyph glyph, CGSize&amp; advance) const
&gt; 
&gt; Probably should be inline.

Done.

&gt;&gt; Source/WebCore/platform/graphics/mac/SimpleFontDataMac.mm:402
&gt;&gt; +    return false;
&gt; 
&gt; I think code like this reads better if the early return is the failure case.
&gt; 
&gt;     if (!font || !platformData().isColorBitmapFont())
&gt;         return false;

Done.

&gt;&gt; Source/WebCore/platform/graphics/mac/SimpleFontDataMac.mm:408
&gt;&gt; +#if !PLATFORM(IOS) &amp;&amp; __MAC_OS_X_VERSION_MIN_REQUIRED &lt; 1090
&gt; 
&gt; I think PLATFORM(MAC) would be better than !PLATFORM(IOS) here.

Done.

&gt;&gt; Source/WebCore/platform/graphics/mac/SimpleFontDataMac.mm:417
&gt;&gt; +static bool isEmoji(const FontPlatformData&amp; platformData)
&gt; 
&gt; Definitely should be inline.

Done.

&gt;&gt;&gt; Source/WebCore/platform/graphics/mac/SimpleFontDataMac.mm:432
&gt;&gt;&gt; +        if (!advanceForColorBitmapFont(glyph, advance)) {
&gt;&gt; 
&gt;&gt; I think this could all be in one if statement.
&gt; 
&gt; I agree. And I also think we might want a more complete helper function that combines the last three clauses into a single statement to keep the if statement shorter and also to give us room to write short clear comments about why these are the cases where we use CGFontGetGlyphAdvancesForStyle.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1003776</commentid>
    <comment_count>14</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2014-04-24 14:21:31 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/167773</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>229948</attachid>
            <date>2014-04-22 20:38:29 -0700</date>
            <delta_ts>2014-04-23 10:41:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-132036-20140422203807.patch</filename>
            <type>text/plain</type>
            <size>9133</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY3NjkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2FhYzM4N2Y0YTcxYWE0
YWQyYTVkOWMwYThiMTE4YmY0ODM0OWNmOC4uYTFmYTRjN2JiZWE3ZjE3MWQ2MjhmNzE0NzNjZjM2
ZjMyYjY3NDRhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDE0LTA0LTIyICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgVW5pZnkgcGxh
dGZvcm1XaWR0aEZvckdseXBoIGFjcm9zcyBPUyBYIGFuZCBpT1MKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMjAzNgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggY3JlYXRlcyBvbiBzaGFy
ZWQgU2ltcGxlRm9udERhdGE6OnBsYXRmb3JtV2lkdGhGb3JHbHlwaCgpIGZ1bmN0aW9uIGZvciBi
b3RoIE9TIFggYW5kIGlPUy4KKworICAgICAgICBObyBuZXcgdGVzdHMgYXJlIG5lY2Vzc2FyeSBi
ZWNhdXNlIHRoZXJlIHNob3VsZCBiZSBubyBiZWhhdmlvciBjaGFuZ2VzLgorCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvU2ltcGxlRm9udERhdGEuaDogU2lnbmF0dXJlcyBmb3IgdHdvIGhl
bHBlciBmdW5jdGlvbnMKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pb3MvU2ltcGxlRm9u
dERhdGFJT1MubW06IFJlcGxhY2UgaU9TIGltcGxlbWVudGF0aW9uIG9mIHBsYXRmb3JtV2lkdGhG
b3JHbHlwaCgpIHdpdGgKKyAgICAgICAgaW1wbGVtZW50YXRpb25zIG9mIG9ubHkgdGhlIHR3byBo
ZWxwZXIgZnVuY3Rpb25zCisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVGb250RGF0YTo6Z2V0UmVu
ZGVyaW5nU3R5bGUpOiBDb21wdXRlIHN0eWxlIGFyZ3VtZW50IHRvIENHRm9udEdldEdseXBoQWR2
YW5jZXNGb3JTdHlsZSgpCisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVGb250RGF0YTo6YWR2YW5j
ZUZvckNvbG9yQml0bWFwRm9udCk6IGlPUyBkb2Vzbid0IGhhdmUgY29sb3IgYml0bWFwIGZvbnRz
CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVGb250RGF0YTo6cGxhdGZvcm1XaWR0aEZvckdseXBo
KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvU2ltcGxlRm9udERh
dGFNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVGb250RGF0YTo6Z2V0UmVuZGVyaW5n
U3R5bGUpOiBDb21wdXRlIHN0eWxlIGFyZ3VtZW50IHRvIENHRm9udEdldEdseXBoQWR2YW5jZXNG
b3JTdHlsZSgpCisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVGb250RGF0YTo6YWR2YW5jZUZvckNv
bG9yQml0bWFwRm9udCk6IFVzZSBbTlNGb250IGFkdmFuY2VtZW50Rm9yR2x5cGhdIHRvIGNvbXB1
dGUgdGhlIGFkdmFuY2UKKyAgICAgICAgKFdlYkNvcmU6Omhhc0N1c3RvbVRyYWNraW5nKTogUmVt
b3ZlZCAjaWYKKyAgICAgICAgKFdlYkNvcmU6OmlzRW1vamkpOiBPbmx5IHJlbGV2YW50IG9uIGlP
UworICAgICAgICAoV2ViQ29yZTo6U2ltcGxlRm9udERhdGE6OnBsYXRmb3JtV2lkdGhGb3JHbHlw
aCk6IFNoYXJlZCBpbXBsZW1lbnRhdGlvbi4gQ2FsbHMgaGVscGVyIGZ1bmN0aW9ucy4KKwogMjAx
NC0wNC0yMiAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBSRUdS
RVNTSU9OIChyMTU3MzI4KTogcG9wb3ZlciB0byBjaGVjayBpbnRvIGZsaWdodCBiYS5jb20gZGlz
bWlzc2VzIGluc3RhbnRseSB3aGVuIGZvY3VzaW5nIGZvcm0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NpbXBsZUZvbnREYXRhLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9TaW1wbGVGb250RGF0YS5oCmluZGV4IDRjMmZiN2E0NTVhYjYz
OTFmYTExMzIwNWYyZTE0YjYzMWVjNTJkM2IuLmFiM2U2YTJkNGFjMTVjYTFkNmE1MGU3YjFiZDhh
ZmY4NmJkMmNjMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1NpbXBsZUZvbnREYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
U2ltcGxlRm9udERhdGEuaApAQCAtNTQsNiArNTQsMTAgQEAKICNpbmNsdWRlIDxjYWlyby5oPgog
I2VuZGlmCiAKKyNpZiBVU0UoQ0cpCisjaW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NHRm9udFJlbmRl
cmluZy5oPgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRm9udERlc2Ny
aXB0aW9uOwpAQCAtMjQ1LDYgKzI0OSwxMSBAQCBwcml2YXRlOgogICAgIGZsb2F0IHdpZHRoRm9y
R0RJR2x5cGgoR2x5cGggZ2x5cGgpIGNvbnN0OwogI2VuZGlmCiAKKyNpZiBVU0UoQ0cpCisgICAg
Q0dGb250UmVuZGVyaW5nU3R5bGUgZ2V0UmVuZGVyaW5nU3R5bGUoKSBjb25zdDsKKyAgICBib29s
IGFkdmFuY2VGb3JDb2xvckJpdG1hcEZvbnQoR2x5cGgsIENHU2l6ZSYgcmVzdWx0KSBjb25zdDsg
Ly8gUmV0dXJucyB0cnVlIGlmIHRoZSBmb250IGlzIGEgY29sb3IgYml0bWFwIGZvbnQKKyNlbmRp
ZgorCiAgICAgRm9udE1ldHJpY3MgbV9mb250TWV0cmljczsKICAgICBmbG9hdCBtX21heENoYXJX
aWR0aDsKICAgICBmbG9hdCBtX2F2Z0NoYXJXaWR0aDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9TaW1wbGVGb250RGF0YUlPUy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9TaW1wbGVGb250RGF0YUlPUy5tbQppbmRleCA3
NzUwYzQ5ZTVjZTM0Yjk2ZDk1OTJjMjY0NjEzMThkN2Y0OTUyZjFiLi44ZDVjMmQ4ZjY0ZGY2YTAx
Y2ZjMTYwMDEwMzM4YjQyMTlmN2VmNGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9pb3MvU2ltcGxlRm9udERhdGFJT1MubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL1NpbXBsZUZvbnREYXRhSU9TLm1tCkBAIC0zMiw3ICsz
Miw2IEBACiAjaW1wb3J0ICJGb250Q2FjaGUuaCIKICNpbXBvcnQgIkZvbnREZXNjcmlwdGlvbi5o
IgogI2ltcG9ydCAiRm9udFNlcnZpY2VzSU9TLmgiCi0jaW1wb3J0IDxDb3JlR3JhcGhpY3MvQ0dG
b250R2x5cGhTdXBwb3J0Lmg+CiAjaW1wb3J0IDxDb3JlR3JhcGhpY3MvQ0dGb250SW5mby5oPgog
I2ltcG9ydCA8Q29yZUdyYXBoaWNzL0NHRm9udFJlbmRlcmluZy5oPgogI2ltcG9ydCA8Q29yZVRl
eHQvQ29yZVRleHQuaD4KQEAgLTE4NiwyNyArMTg1LDE3IEBAIHZvaWQgU2ltcGxlRm9udERhdGE6
OmRldGVybWluZVBpdGNoKCkKICAgICAgICAgbV90cmVhdEFzRml4ZWRQaXRjaCA9IGZhbHNlOwog
ICAgIH0KIH0KLQotZmxvYXQgU2ltcGxlRm9udERhdGE6OnBsYXRmb3JtV2lkdGhGb3JHbHlwaChH
bHlwaCBnbHlwaCkgY29uc3QKKyAgICAKK0NHRm9udFJlbmRlcmluZ1N0eWxlIFNpbXBsZUZvbnRE
YXRhOjpnZXRSZW5kZXJpbmdTdHlsZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGtDR0ZvbnRSZW5k
ZXJpbmdTdHlsZUFudGlhbGlhc2luZyB8IGtDR0ZvbnRSZW5kZXJpbmdTdHlsZVN1YnBpeGVsUG9z
aXRpb25pbmcgfCBrQ0dGb250UmVuZGVyaW5nU3R5bGVTdWJwaXhlbFF1YW50aXphdGlvbiB8IGtD
R0ZvbnRBbnRpYWxpYXNpbmdTdHlsZVVuZmlsdGVyZWQ7Cit9CisgICAgCitib29sIFNpbXBsZUZv
bnREYXRhOjphZHZhbmNlRm9yQ29sb3JCaXRtYXBGb250KEdseXBoIGdseXBoLCBDR1NpemUmIGFk
dmFuY2UpIGNvbnN0CiB7Ci0gICAgQ0dTaXplIGFkdmFuY2UgPSBDR1NpemVaZXJvOwotICAgIGlm
IChwbGF0Zm9ybURhdGEoKS5vcmllbnRhdGlvbigpID09IEhvcml6b250YWwgfHwgbV9pc0Jyb2tl
bklkZW9ncmFwaEZhbGxiYWNrKSB7Ci0gICAgICAgIGlmIChwbGF0Zm9ybURhdGEoKS5tX2lzRW1v
amkpCi0gICAgICAgICAgICBDVEZvbnRHZXRBZHZhbmNlc0ZvckdseXBocyhtX3BsYXRmb3JtRGF0
YS5jdEZvbnQoKSwga0NURm9udEhvcml6b250YWxPcmllbnRhdGlvbiwgJmdseXBoLCAmYWR2YW5j
ZSwgMSk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgZmxvYXQgcG9pbnRTaXplID0gcGxh
dGZvcm1EYXRhKCkubV9zaXplOwotICAgICAgICAgICAgQ0dBZmZpbmVUcmFuc2Zvcm0gdHJhbnNm
b3JtID0gQ0dBZmZpbmVUcmFuc2Zvcm1NYWtlU2NhbGUocG9pbnRTaXplLCBwb2ludFNpemUpOwot
ICAgICAgICAgICAgc3RhdGljIGNvbnN0IENHRm9udFJlbmRlcmluZ1N0eWxlIHJlbmRlcmluZ1N0
eWxlID0ga0NHRm9udFJlbmRlcmluZ1N0eWxlQW50aWFsaWFzaW5nIHwga0NHRm9udFJlbmRlcmlu
Z1N0eWxlU3VicGl4ZWxQb3NpdGlvbmluZyB8IGtDR0ZvbnRSZW5kZXJpbmdTdHlsZVN1YnBpeGVs
UXVhbnRpemF0aW9uIHwga0NHRm9udEFudGlhbGlhc2luZ1N0eWxlVW5maWx0ZXJlZDsKLSAgICAg
ICAgICAgIGlmICghQ0dGb250R2V0R2x5cGhBZHZhbmNlc0ZvclN0eWxlKHBsYXRmb3JtRGF0YSgp
LmNnRm9udCgpLCAmdHJhbnNmb3JtLCByZW5kZXJpbmdTdHlsZSwgJmdseXBoLCAxLCAmYWR2YW5j
ZSkpIHsKLSAgICAgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGZ1bGxOYW1lID0g
YWRvcHRDRihDR0ZvbnRDb3B5RnVsbE5hbWUocGxhdGZvcm1EYXRhKCkuY2dGb250KCkpKTsKLSAg
ICAgICAgICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBjYWNoZSBnbHlwaCB3aWR0aHMgZm9y
ICVAICVmIiwgZnVsbE5hbWUuZ2V0KCksIHBvaW50U2l6ZSk7Ci0gICAgICAgICAgICAgICAgYWR2
YW5jZS53aWR0aCA9IDA7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9IGVsc2UKLSAg
ICAgICAgQ1RGb250R2V0QWR2YW5jZXNGb3JHbHlwaHMobV9wbGF0Zm9ybURhdGEuY3RGb250KCks
IGtDVEZvbnRWZXJ0aWNhbE9yaWVudGF0aW9uLCAmZ2x5cGgsICZhZHZhbmNlLCAxKTsKLQotICAg
IHJldHVybiBhZHZhbmNlLndpZHRoICsgbV9zeW50aGV0aWNCb2xkT2Zmc2V0OworICAgIFVOVVNF
RF9QQVJBTShnbHlwaCk7CisgICAgVU5VU0VEX1BBUkFNKGFkdmFuY2UpOworICAgIHJldHVybiBm
YWxzZTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1NpbXBsZUZvbnREYXRhTWFjLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1NpbXBsZUZvbnREYXRhTWFjLm1tCmluZGV4
IGE4ZGQ1MGVlMzMwMTM0MWVlYjA1OTYxZmViMjUzZmQwZWJhMTc4YTMuLmIwOWU2NTUyNDVjMGZh
OGYxZGVlY2YxNTUyN2JlN2Y5ZWY1MDQ3NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL21hYy9TaW1wbGVGb250RGF0YU1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvU2ltcGxlRm9udERhdGFNYWMubW0KQEAgLTQxLDYg
KzQxLDcgQEAKICNlbHNlCiAjaW1wb3J0IDxDb3JlVGV4dC9Db3JlVGV4dC5oPgogI2VuZGlmCisj
aW1wb3J0IDxDb3JlR3JhcGhpY3MvQ0dGb250R2x5cGhTdXBwb3J0Lmg+CiAjaW1wb3J0IDxmbG9h
dC5oPgogI2ltcG9ydCA8dW5pY29kZS91Y2hhci5oPgogI2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMu
aD4KQEAgLTM2NCwxMSArMzY1LDQyIEBAIEZsb2F0UmVjdCBTaW1wbGVGb250RGF0YTo6cGxhdGZv
cm1Cb3VuZHNGb3JHbHlwaChHbHlwaCBnbHlwaCkgY29uc3QKIAogICAgIHJldHVybiBib3VuZGlu
Z0JveDsKIH0KLQotI2lmICFQTEFURk9STShJT1MpCisgICAgCisjaWYgUExBVEZPUk0oTUFDKQor
Q0dGb250UmVuZGVyaW5nU3R5bGUgU2ltcGxlRm9udERhdGE6OmdldFJlbmRlcmluZ1N0eWxlKCkg
Y29uc3QKK3sKKyAgICBDR0ZvbnRSZW5kZXJpbmdTdHlsZSBzdHlsZSA9IGtDR0ZvbnRSZW5kZXJp
bmdTdHlsZUFudGlhbGlhc2luZyB8IGtDR0ZvbnRSZW5kZXJpbmdTdHlsZVN1YnBpeGVsUG9zaXRp
b25pbmcgfCBrQ0dGb250UmVuZGVyaW5nU3R5bGVTdWJwaXhlbFF1YW50aXphdGlvbjsKKyAgICBO
U0ZvbnQgKmZvbnQgPSBwbGF0Zm9ybURhdGEoKS5mb250KCk7CisgICAgaWYgKGZvbnQpIHsKKyAg
ICAgICAgc3dpdGNoIChbZm9udCByZW5kZXJpbmdNb2RlXSkgeworICAgICAgICBjYXNlIE5TRm9u
dEludGVnZXJBZHZhbmNlbWVudHNSZW5kZXJpbmdNb2RlOgorICAgICAgICAgICAgc3R5bGUgPSAw
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTlNGb250QW50aWFsaWFzZWRJbnRl
Z2VyQWR2YW5jZW1lbnRzUmVuZGVyaW5nTW9kZToKKyAgICAgICAgICAgIHN0eWxlID0ga0NHRm9u
dFJlbmRlcmluZ1N0eWxlQW50aWFsaWFzaW5nOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICBzdHlsZSA9IGtDR0ZvbnRSZW5kZXJpbmdTdHlsZUFudGlh
bGlhc2luZyB8IGtDR0ZvbnRSZW5kZXJpbmdTdHlsZVN1YnBpeGVsUG9zaXRpb25pbmcgfCBrQ0dG
b250UmVuZGVyaW5nU3R5bGVTdWJwaXhlbFF1YW50aXphdGlvbjsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBzdHlsZTsKK30KKyAgICAKK2Jvb2wgU2lt
cGxlRm9udERhdGE6OmFkdmFuY2VGb3JDb2xvckJpdG1hcEZvbnQoR2x5cGggZ2x5cGgsIENHU2l6
ZSYgYWR2YW5jZSkgY29uc3QKK3sKKyAgICBOU0ZvbnQgKmZvbnQgPSBwbGF0Zm9ybURhdGEoKS5m
b250KCk7CisgICAgaWYgKGZvbnQgJiYgcGxhdGZvcm1EYXRhKCkuaXNDb2xvckJpdG1hcEZvbnQo
KSkgeworICAgICAgICBhZHZhbmNlID0gTlNTaXplVG9DR1NpemUoW2ZvbnQgYWR2YW5jZW1lbnRG
b3JHbHlwaDpnbHlwaF0pOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJu
IGZhbHNlOworfQorI2VuZGlmCisgICAgCiBzdGF0aWMgYm9vbCBoYXNDdXN0b21UcmFja2luZyhD
VEZvbnRSZWYgZm9udCkKIHsKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwg
MTA5MAorI2lmICFQTEFURk9STShJT1MpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlS
RUQgPCAxMDkwCiAgICAgVU5VU0VEX1BBUkFNKGZvbnQpOwogICAgIHJldHVybiBmYWxzZTsKICNl
bHNlCkBAIC0zNzYsMjAgKzQwOCwyOCBAQCBzdGF0aWMgYm9vbCBoYXNDdXN0b21UcmFja2luZyhD
VEZvbnRSZWYgZm9udCkKICAgICByZXR1cm4gQ1RGb250RGVzY3JpcHRvcklzU3lzdGVtVUlGb250
KGRlc2NyaXB0b3IuZ2V0KCkpOwogI2VuZGlmCiB9Ci0KKyAgICAKK3N0YXRpYyBib29sIGlzRW1v
amkoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhKQoreworI2lmIFBMQVRGT1JN
KElPUykKKyAgICByZXR1cm4gcGxhdGZvcm1EYXRhLm1faXNFbW9qaTsKKyNlbHNlCisgICAgVU5V
U0VEX1BBUkFNKHBsYXRmb3JtRGF0YSk7CisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCit9Cisg
ICAgCiBmbG9hdCBTaW1wbGVGb250RGF0YTo6cGxhdGZvcm1XaWR0aEZvckdseXBoKEdseXBoIGds
eXBoKSBjb25zdAogewogICAgIENHU2l6ZSBhZHZhbmNlID0gQ0dTaXplWmVybzsKICAgICBib29s
IGhvcml6b250YWwgPSBwbGF0Zm9ybURhdGEoKS5vcmllbnRhdGlvbigpID09IEhvcml6b250YWw7
Ci0gICAgaWYgKChob3Jpem9udGFsIHx8IG1faXNCcm9rZW5JZGVvZ3JhcGhGYWxsYmFjaykgJiYg
IWhhc0N1c3RvbVRyYWNraW5nKG1fcGxhdGZvcm1EYXRhLmN0Rm9udCgpKSkgewotICAgICAgICBO
U0ZvbnQgKmZvbnQgPSBwbGF0Zm9ybURhdGEoKS5mb250KCk7Ci0gICAgICAgIGlmIChmb250ICYm
IHBsYXRmb3JtRGF0YSgpLmlzQ29sb3JCaXRtYXBGb250KCkpCi0gICAgICAgICAgICBhZHZhbmNl
ID0gTlNTaXplVG9DR1NpemUoW2ZvbnQgYWR2YW5jZW1lbnRGb3JHbHlwaDpnbHlwaF0pOwotICAg
ICAgICBlbHNlIHsKKyAgICBpZiAoKGhvcml6b250YWwgfHwgbV9pc0Jyb2tlbklkZW9ncmFwaEZh
bGxiYWNrKSAmJiAhaGFzQ3VzdG9tVHJhY2tpbmcobV9wbGF0Zm9ybURhdGEuY3RGb250KCkpICYm
ICFpc0Vtb2ppKHBsYXRmb3JtRGF0YSgpKSkgeworICAgICAgICBpZiAoIWFkdmFuY2VGb3JDb2xv
ckJpdG1hcEZvbnQoZ2x5cGgsIGFkdmFuY2UpKSB7CiAgICAgICAgICAgICBmbG9hdCBwb2ludFNp
emUgPSBwbGF0Zm9ybURhdGEoKS5tX3NpemU7CiAgICAgICAgICAgICBDR0FmZmluZVRyYW5zZm9y
bSBtID0gQ0dBZmZpbmVUcmFuc2Zvcm1NYWtlU2NhbGUocG9pbnRTaXplLCBwb2ludFNpemUpOwot
ICAgICAgICAgICAgaWYgKCF3a0dldEdseXBoVHJhbnNmb3JtZWRBZHZhbmNlcyhwbGF0Zm9ybURh
dGEoKS5jZ0ZvbnQoKSwgZm9udCwgJm0sICZnbHlwaCwgJmFkdmFuY2UpKSB7Ci0gICAgICAgICAg
ICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gY2FjaGUgZ2x5cGggd2lkdGhzIGZvciAlQCAlZiIs
IFtmb250IGRpc3BsYXlOYW1lXSwgcG9pbnRTaXplKTsKKyAgICAgICAgICAgIGlmICghQ0dGb250
R2V0R2x5cGhBZHZhbmNlc0ZvclN0eWxlKHBsYXRmb3JtRGF0YSgpLmNnRm9udCgpLCAmbSwgZ2V0
UmVuZGVyaW5nU3R5bGUoKSwgJmdseXBoLCAxLCAmYWR2YW5jZSkpIHsKKyAgICAgICAgICAgICAg
ICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGZ1bGxOYW1lID0gYWRvcHRDRihDR0ZvbnRDb3B5RnVs
bE5hbWUocGxhdGZvcm1EYXRhKCkuY2dGb250KCkpKTsKKyAgICAgICAgICAgICAgICBMT0dfRVJS
T1IoIlVuYWJsZSB0byBjYWNoZSBnbHlwaCB3aWR0aHMgZm9yICVAICVmIiwgZnVsbE5hbWUuZ2V0
KCksIHBvaW50U2l6ZSk7CiAgICAgICAgICAgICAgICAgYWR2YW5jZS53aWR0aCA9IDA7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KQEAgLTM5OCw3ICs0MzgsNiBAQCBmbG9hdCBTaW1wbGVGb250
RGF0YTo6cGxhdGZvcm1XaWR0aEZvckdseXBoKEdseXBoIGdseXBoKSBjb25zdAogCiAgICAgcmV0
dXJuIGFkdmFuY2Uud2lkdGggKyBtX3N5bnRoZXRpY0JvbGRPZmZzZXQ7CiB9Ci0jZW5kaWYgLy8g
IVBMQVRGT1JNKElPUykKIAogc3RydWN0IFByb3ZpZGVySW5mbyB7CiAgICAgY29uc3QgVUNoYXIq
IGNoYXJhY3RlcnM7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>229993</attachid>
            <date>2014-04-23 10:41:24 -0700</date>
            <delta_ts>2014-04-23 11:34:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-132036-20140423104101.patch</filename>
            <type>text/plain</type>
            <size>9823</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY3Njg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTRkOWU2NTBmZTI5MDNl
MmYyOWY2YTU0MTdmZjFmODMyMTY0ZThlMC4uYTA5ZTY2MGQzNmE1MDBiM2U0MmQ5ZjUxZDYwYWU5
MWZhNmM1MDdkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDE0LTA0LTIyICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgVW5pZnkgcGxh
dGZvcm1XaWR0aEZvckdseXBoIGFjcm9zcyBPUyBYIGFuZCBpT1MKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMjAzNgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggY3JlYXRlcyBvbiBzaGFy
ZWQgU2ltcGxlRm9udERhdGE6OnBsYXRmb3JtV2lkdGhGb3JHbHlwaCgpIGZ1bmN0aW9uIGZvciBi
b3RoIE9TIFggYW5kIGlPUy4KKworICAgICAgICBObyBuZXcgdGVzdHMgYXJlIG5lY2Vzc2FyeSBi
ZWNhdXNlIHRoZXJlIHNob3VsZCBiZSBubyBiZWhhdmlvciBjaGFuZ2VzLgorCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvU2ltcGxlRm9udERhdGEuaDogU2lnbmF0dXJlcyBmb3IgdHdvIGhl
bHBlciBmdW5jdGlvbnMKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pb3MvU2ltcGxlRm9u
dERhdGFJT1MubW06IFJlcGxhY2UgaU9TIGltcGxlbWVudGF0aW9uIG9mIHBsYXRmb3JtV2lkdGhG
b3JHbHlwaCgpIHdpdGgKKyAgICAgICAgaW1wbGVtZW50YXRpb25zIG9mIG9ubHkgdGhlIHR3byBo
ZWxwZXIgZnVuY3Rpb25zCisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVGb250RGF0YTo6Z2V0UmVu
ZGVyaW5nU3R5bGUpOiBDb21wdXRlIHN0eWxlIGFyZ3VtZW50IHRvIENHRm9udEdldEdseXBoQWR2
YW5jZXNGb3JTdHlsZSgpCisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVGb250RGF0YTo6YWR2YW5j
ZUZvckNvbG9yQml0bWFwRm9udCk6IGlPUyBkb2Vzbid0IGhhdmUgY29sb3IgYml0bWFwIGZvbnRz
CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVGb250RGF0YTo6cGxhdGZvcm1XaWR0aEZvckdseXBo
KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvU2ltcGxlRm9udERh
dGFNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVGb250RGF0YTo6Z2V0UmVuZGVyaW5n
U3R5bGUpOiBDb21wdXRlIHN0eWxlIGFyZ3VtZW50IHRvIENHRm9udEdldEdseXBoQWR2YW5jZXNG
b3JTdHlsZSgpCisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVGb250RGF0YTo6YWR2YW5jZUZvckNv
bG9yQml0bWFwRm9udCk6IFVzZSBbTlNGb250IGFkdmFuY2VtZW50Rm9yR2x5cGhdIHRvIGNvbXB1
dGUgdGhlIGFkdmFuY2UKKyAgICAgICAgKFdlYkNvcmU6Omhhc0N1c3RvbVRyYWNraW5nKTogUmVt
b3ZlZCAjaWYKKyAgICAgICAgKFdlYkNvcmU6OmlzRW1vamkpOiBPbmx5IHJlbGV2YW50IG9uIGlP
UworICAgICAgICAoV2ViQ29yZTo6U2ltcGxlRm9udERhdGE6OnBsYXRmb3JtV2lkdGhGb3JHbHlw
aCk6IFNoYXJlZCBpbXBsZW1lbnRhdGlvbi4gQ2FsbHMgaGVscGVyIGZ1bmN0aW9ucy4KKwogMjAx
NC0wNC0yMiAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjE2NzY3NC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NpbXBsZUZvbnREYXRhLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9TaW1wbGVGb250RGF0YS5oCmluZGV4IDRjMmZiN2E0NTVhYjYz
OTFmYTExMzIwNWYyZTE0YjYzMWVjNTJkM2IuLmEyZDhmMGI3ZjE0YmQ5NmMzMDg3ZWQ2ZTUxMmQ4
MjA0ZTU2MWE0NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1NpbXBsZUZvbnREYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
U2ltcGxlRm9udERhdGEuaApAQCAtNTQsNiArNTQsMjAgQEAKICNpbmNsdWRlIDxjYWlyby5oPgog
I2VuZGlmCiAKKyNpZiBVU0UoQ0cpICYmIF9faGFzX2luY2x1ZGUoPENvcmVHcmFwaGljcy9DR0Zv
bnRSZW5kZXJpbmcuaD4pCisjaW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NHRm9udFJlbmRlcmluZy5o
PgorI2Vsc2UKK2VudW0geworICAgIGtDR0ZvbnRSZW5kZXJpbmdTdHlsZUFudGlhbGlhc2luZyA9
ICgxIDw8IDApLAorICAgIGtDR0ZvbnRSZW5kZXJpbmdTdHlsZVNtb290aGluZyA9ICgxIDw8IDEp
LAorICAgIGtDR0ZvbnRSZW5kZXJpbmdTdHlsZVN1YnBpeGVsUG9zaXRpb25pbmcgPSAoMSA8PCAy
KSwKKyAgICBrQ0dGb250UmVuZGVyaW5nU3R5bGVTdWJwaXhlbFF1YW50aXphdGlvbiA9ICgxIDw8
IDMpLAorICAgIGtDR0ZvbnRSZW5kZXJpbmdTdHlsZVBsYXRmb3JtTmF0aXZlID0gKDEgPDwgOSks
CisgICAga0NHRm9udFJlbmRlcmluZ1N0eWxlTWFzayA9IDB4MjBGCit9OworI2VuZGlmCit0eXBl
ZGVmIHVpbnQzMl90IENHRm9udFJlbmRlcmluZ1N0eWxlOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKQEAgLTI0NSw2ICsyNTksMTEgQEAgcHJpdmF0ZToK
ICAgICBmbG9hdCB3aWR0aEZvckdESUdseXBoKEdseXBoIGdseXBoKSBjb25zdDsKICNlbmRpZgog
CisjaWYgVVNFKENHKQorICAgIENHRm9udFJlbmRlcmluZ1N0eWxlIHJlbmRlcmluZ1N0eWxlKCkg
Y29uc3Q7CisgICAgYm9vbCBhZHZhbmNlRm9yQ29sb3JCaXRtYXBGb250KEdseXBoLCBDR1NpemUm
IHJlc3VsdCkgY29uc3Q7IC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgZm9udCBpcyBhIGNvbG9yIGJp
dG1hcCBmb250CisjZW5kaWYKKwogICAgIEZvbnRNZXRyaWNzIG1fZm9udE1ldHJpY3M7CiAgICAg
ZmxvYXQgbV9tYXhDaGFyV2lkdGg7CiAgICAgZmxvYXQgbV9hdmdDaGFyV2lkdGg7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pb3MvU2ltcGxlRm9udERhdGFJ
T1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pb3MvU2ltcGxlRm9udERh
dGFJT1MubW0KaW5kZXggNzc1MGM0OWU1Y2UzNGI5NmQ5NTkyYzI2NDYxMzE4ZDdmNDk1MmYxYi4u
ZjVlYzQ3Yjg1MmE4YjA5YzNlZjQ3MGFiZTFkYjMyYzhiOTllZjZmNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL1NpbXBsZUZvbnREYXRhSU9TLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9TaW1wbGVGb250RGF0YUlP
Uy5tbQpAQCAtMzIsOSArMzIsNyBAQAogI2ltcG9ydCAiRm9udENhY2hlLmgiCiAjaW1wb3J0ICJG
b250RGVzY3JpcHRpb24uaCIKICNpbXBvcnQgIkZvbnRTZXJ2aWNlc0lPUy5oIgotI2ltcG9ydCA8
Q29yZUdyYXBoaWNzL0NHRm9udEdseXBoU3VwcG9ydC5oPgogI2ltcG9ydCA8Q29yZUdyYXBoaWNz
L0NHRm9udEluZm8uaD4KLSNpbXBvcnQgPENvcmVHcmFwaGljcy9DR0ZvbnRSZW5kZXJpbmcuaD4K
ICNpbXBvcnQgPENvcmVUZXh0L0NvcmVUZXh0Lmg+CiAjaW1wb3J0IDxmbG9hdC5oPgogI2ltcG9y
dCA8dW5pY29kZS91Y2hhci5oPgpAQCAtMTg3LDI2ICsxODUsMTYgQEAgdm9pZCBTaW1wbGVGb250
RGF0YTo6ZGV0ZXJtaW5lUGl0Y2goKQogICAgIH0KIH0KIAotZmxvYXQgU2ltcGxlRm9udERhdGE6
OnBsYXRmb3JtV2lkdGhGb3JHbHlwaChHbHlwaCBnbHlwaCkgY29uc3QKK0NHRm9udFJlbmRlcmlu
Z1N0eWxlIFNpbXBsZUZvbnREYXRhOjpyZW5kZXJpbmdTdHlsZSgpIGNvbnN0CiB7Ci0gICAgQ0dT
aXplIGFkdmFuY2UgPSBDR1NpemVaZXJvOwotICAgIGlmIChwbGF0Zm9ybURhdGEoKS5vcmllbnRh
dGlvbigpID09IEhvcml6b250YWwgfHwgbV9pc0Jyb2tlbklkZW9ncmFwaEZhbGxiYWNrKSB7Ci0g
ICAgICAgIGlmIChwbGF0Zm9ybURhdGEoKS5tX2lzRW1vamkpCi0gICAgICAgICAgICBDVEZvbnRH
ZXRBZHZhbmNlc0ZvckdseXBocyhtX3BsYXRmb3JtRGF0YS5jdEZvbnQoKSwga0NURm9udEhvcml6
b250YWxPcmllbnRhdGlvbiwgJmdseXBoLCAmYWR2YW5jZSwgMSk7Ci0gICAgICAgIGVsc2Ugewot
ICAgICAgICAgICAgZmxvYXQgcG9pbnRTaXplID0gcGxhdGZvcm1EYXRhKCkubV9zaXplOwotICAg
ICAgICAgICAgQ0dBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtID0gQ0dBZmZpbmVUcmFuc2Zvcm1N
YWtlU2NhbGUocG9pbnRTaXplLCBwb2ludFNpemUpOwotICAgICAgICAgICAgc3RhdGljIGNvbnN0
IENHRm9udFJlbmRlcmluZ1N0eWxlIHJlbmRlcmluZ1N0eWxlID0ga0NHRm9udFJlbmRlcmluZ1N0
eWxlQW50aWFsaWFzaW5nIHwga0NHRm9udFJlbmRlcmluZ1N0eWxlU3VicGl4ZWxQb3NpdGlvbmlu
ZyB8IGtDR0ZvbnRSZW5kZXJpbmdTdHlsZVN1YnBpeGVsUXVhbnRpemF0aW9uIHwga0NHRm9udEFu
dGlhbGlhc2luZ1N0eWxlVW5maWx0ZXJlZDsKLSAgICAgICAgICAgIGlmICghQ0dGb250R2V0R2x5
cGhBZHZhbmNlc0ZvclN0eWxlKHBsYXRmb3JtRGF0YSgpLmNnRm9udCgpLCAmdHJhbnNmb3JtLCBy
ZW5kZXJpbmdTdHlsZSwgJmdseXBoLCAxLCAmYWR2YW5jZSkpIHsKLSAgICAgICAgICAgICAgICBS
ZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGZ1bGxOYW1lID0gYWRvcHRDRihDR0ZvbnRDb3B5RnVsbE5h
bWUocGxhdGZvcm1EYXRhKCkuY2dGb250KCkpKTsKLSAgICAgICAgICAgICAgICBMT0dfRVJST1Io
IlVuYWJsZSB0byBjYWNoZSBnbHlwaCB3aWR0aHMgZm9yICVAICVmIiwgZnVsbE5hbWUuZ2V0KCks
IHBvaW50U2l6ZSk7Ci0gICAgICAgICAgICAgICAgYWR2YW5jZS53aWR0aCA9IDA7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIH0KLSAgICB9IGVsc2UKLSAgICAgICAgQ1RGb250R2V0QWR2YW5jZXNG
b3JHbHlwaHMobV9wbGF0Zm9ybURhdGEuY3RGb250KCksIGtDVEZvbnRWZXJ0aWNhbE9yaWVudGF0
aW9uLCAmZ2x5cGgsICZhZHZhbmNlLCAxKTsKLQotICAgIHJldHVybiBhZHZhbmNlLndpZHRoICsg
bV9zeW50aGV0aWNCb2xkT2Zmc2V0OworICAgIHJldHVybiBrQ0dGb250UmVuZGVyaW5nU3R5bGVB
bnRpYWxpYXNpbmcgfCBrQ0dGb250UmVuZGVyaW5nU3R5bGVTdWJwaXhlbFBvc2l0aW9uaW5nIHwg
a0NHRm9udFJlbmRlcmluZ1N0eWxlU3VicGl4ZWxRdWFudGl6YXRpb24gfCBrQ0dGb250QW50aWFs
aWFzaW5nU3R5bGVVbmZpbHRlcmVkOworfQorCitib29sIFNpbXBsZUZvbnREYXRhOjphZHZhbmNl
Rm9yQ29sb3JCaXRtYXBGb250KEdseXBoIGdseXBoLCBDR1NpemUmIGFkdmFuY2UpIGNvbnN0Cit7
CisgICAgVU5VU0VEX1BBUkFNKGdseXBoKTsKKyAgICBVTlVTRURfUEFSQU0oYWR2YW5jZSk7Cisg
ICAgcmV0dXJuIGZhbHNlOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvU2ltcGxlRm9udERhdGFNYWMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvU2ltcGxlRm9udERhdGFN
YWMubW0KaW5kZXggYThkZDUwZWUzMzAxMzQxZWViMDU5NjFmZWIyNTNmZDBlYmExNzhhMy4uMzcz
NTlkNWMzMWE1MzkyZDVlMWRjYzk4MTllZWVkNzdhMWViMDE1YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1NpbXBsZUZvbnREYXRhTWFjLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9TaW1wbGVGb250RGF0YU1hYy5t
bQpAQCAtNTAsOSArNTAsMTUgQEAKICNpZiBkZWZpbmVkKF9faGFzX2luY2x1ZGUpICYmIF9faGFz
X2luY2x1ZGUoPENvcmVUZXh0L0NURm9udERlc2NyaXB0b3JQcml2Lmg+KQogI2ltcG9ydCA8Q29y
ZVRleHQvQ1RGb250RGVzY3JpcHRvclByaXYuaD4KICNlbmRpZgotCiBleHRlcm4gIkMiIGJvb2wg
Q1RGb250RGVzY3JpcHRvcklzU3lzdGVtVUlGb250KENURm9udERlc2NyaXB0b3JSZWYpOwogCisj
aWYgX19oYXNfaW5jbHVkZSg8Q29yZUdyYXBoaWNzL0NHRm9udEdseXBoU3VwcG9ydC5oPikKKyNp
bXBvcnQgPENvcmVHcmFwaGljcy9DR0ZvbnRHbHlwaFN1cHBvcnQuaD4KKyNlbmRpZgorZXh0ZXJu
ICJDIiBib29sIENHRm9udEdldEdseXBoQWR2YW5jZXNGb3JTdHlsZShDR0ZvbnRSZWYgZm9udCwK
KyAgICBjb25zdCBDR0FmZmluZVRyYW5zZm9ybSAqdCwgQ0dGb250UmVuZGVyaW5nU3R5bGUgc3R5
bGUsCisgICAgY29uc3QgQ0dHbHlwaCBnbHlwaHNbXSwgc2l6ZV90IGNvdW50LCBDR1NpemUgYWR2
YW5jZXNbXSk7CisKICNpZiAhUExBVEZPUk0oSU9TKQogQGludGVyZmFjZSBOU0ZvbnQgKFdlYkFw
cEtpdFNlY3JldEFQSSkKIC0gKEJPT0wpX2lzRmFrZUZpeGVkUGl0Y2g7CkBAIC0zNjUsMTAgKzM3
MSw0MSBAQCBGbG9hdFJlY3QgU2ltcGxlRm9udERhdGE6OnBsYXRmb3JtQm91bmRzRm9yR2x5cGgo
R2x5cGggZ2x5cGgpIGNvbnN0CiAgICAgcmV0dXJuIGJvdW5kaW5nQm94OwogfQogCi0jaWYgIVBM
QVRGT1JNKElPUykKKyNpZiBQTEFURk9STShNQUMpCitDR0ZvbnRSZW5kZXJpbmdTdHlsZSBTaW1w
bGVGb250RGF0YTo6cmVuZGVyaW5nU3R5bGUoKSBjb25zdAoreworICAgIENHRm9udFJlbmRlcmlu
Z1N0eWxlIHN0eWxlID0ga0NHRm9udFJlbmRlcmluZ1N0eWxlQW50aWFsaWFzaW5nIHwga0NHRm9u
dFJlbmRlcmluZ1N0eWxlU3VicGl4ZWxQb3NpdGlvbmluZyB8IGtDR0ZvbnRSZW5kZXJpbmdTdHls
ZVN1YnBpeGVsUXVhbnRpemF0aW9uOworICAgIE5TRm9udCAqZm9udCA9IHBsYXRmb3JtRGF0YSgp
LmZvbnQoKTsKKyAgICBpZiAoZm9udCkgeworICAgICAgICBzd2l0Y2ggKFtmb250IHJlbmRlcmlu
Z01vZGVdKSB7CisgICAgICAgIGNhc2UgTlNGb250SW50ZWdlckFkdmFuY2VtZW50c1JlbmRlcmlu
Z01vZGU6CisgICAgICAgICAgICBzdHlsZSA9IDA7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBOU0ZvbnRBbnRpYWxpYXNlZEludGVnZXJBZHZhbmNlbWVudHNSZW5kZXJpbmdNb2Rl
OgorICAgICAgICAgICAgc3R5bGUgPSBrQ0dGb250UmVuZGVyaW5nU3R5bGVBbnRpYWxpYXNpbmc7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHN0eWxl
ID0ga0NHRm9udFJlbmRlcmluZ1N0eWxlQW50aWFsaWFzaW5nIHwga0NHRm9udFJlbmRlcmluZ1N0
eWxlU3VicGl4ZWxQb3NpdGlvbmluZyB8IGtDR0ZvbnRSZW5kZXJpbmdTdHlsZVN1YnBpeGVsUXVh
bnRpemF0aW9uOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0
dXJuIHN0eWxlOworfQorCitib29sIFNpbXBsZUZvbnREYXRhOjphZHZhbmNlRm9yQ29sb3JCaXRt
YXBGb250KEdseXBoIGdseXBoLCBDR1NpemUmIGFkdmFuY2UpIGNvbnN0Cit7CisgICAgTlNGb250
ICpmb250ID0gcGxhdGZvcm1EYXRhKCkuZm9udCgpOworICAgIGlmIChmb250ICYmIHBsYXRmb3Jt
RGF0YSgpLmlzQ29sb3JCaXRtYXBGb250KCkpIHsKKyAgICAgICAgYWR2YW5jZSA9IE5TU2l6ZVRv
Q0dTaXplKFtmb250IGFkdmFuY2VtZW50Rm9yR2x5cGg6Z2x5cGhdKTsKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKyNlbmRpZgorCiBzdGF0aWMgYm9v
bCBoYXNDdXN0b21UcmFja2luZyhDVEZvbnRSZWYgZm9udCkKIHsKLSNpZiBfX01BQ19PU19YX1ZF
UlNJT05fTUlOX1JFUVVJUkVEIDwgMTA5MAorI2lmICFQTEFURk9STShJT1MpICYmIF9fTUFDX09T
X1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAxMDkwCiAgICAgVU5VU0VEX1BBUkFNKGZvbnQpOwog
ICAgIHJldHVybiBmYWxzZTsKICNlbHNlCkBAIC0zNzcsMTkgKzQxNCwyNyBAQCBzdGF0aWMgYm9v
bCBoYXNDdXN0b21UcmFja2luZyhDVEZvbnRSZWYgZm9udCkKICNlbmRpZgogfQogCitzdGF0aWMg
Ym9vbCBpc0Vtb2ppKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSkKK3sKKyNp
ZiBQTEFURk9STShJT1MpCisgICAgcmV0dXJuIHBsYXRmb3JtRGF0YS5tX2lzRW1vamk7CisjZWxz
ZQorICAgIFVOVVNFRF9QQVJBTShwbGF0Zm9ybURhdGEpOworICAgIHJldHVybiBmYWxzZTsKKyNl
bmRpZgorfQorCiBmbG9hdCBTaW1wbGVGb250RGF0YTo6cGxhdGZvcm1XaWR0aEZvckdseXBoKEds
eXBoIGdseXBoKSBjb25zdAogewogICAgIENHU2l6ZSBhZHZhbmNlID0gQ0dTaXplWmVybzsKICAg
ICBib29sIGhvcml6b250YWwgPSBwbGF0Zm9ybURhdGEoKS5vcmllbnRhdGlvbigpID09IEhvcml6
b250YWw7Ci0gICAgaWYgKChob3Jpem9udGFsIHx8IG1faXNCcm9rZW5JZGVvZ3JhcGhGYWxsYmFj
aykgJiYgIWhhc0N1c3RvbVRyYWNraW5nKG1fcGxhdGZvcm1EYXRhLmN0Rm9udCgpKSkgewotICAg
ICAgICBOU0ZvbnQgKmZvbnQgPSBwbGF0Zm9ybURhdGEoKS5mb250KCk7Ci0gICAgICAgIGlmIChm
b250ICYmIHBsYXRmb3JtRGF0YSgpLmlzQ29sb3JCaXRtYXBGb250KCkpCi0gICAgICAgICAgICBh
ZHZhbmNlID0gTlNTaXplVG9DR1NpemUoW2ZvbnQgYWR2YW5jZW1lbnRGb3JHbHlwaDpnbHlwaF0p
OwotICAgICAgICBlbHNlIHsKKyAgICBpZiAoKGhvcml6b250YWwgfHwgbV9pc0Jyb2tlbklkZW9n
cmFwaEZhbGxiYWNrKSAmJiAhaGFzQ3VzdG9tVHJhY2tpbmcobV9wbGF0Zm9ybURhdGEuY3RGb250
KCkpICYmICFpc0Vtb2ppKHBsYXRmb3JtRGF0YSgpKSkgeworICAgICAgICBpZiAoIWFkdmFuY2VG
b3JDb2xvckJpdG1hcEZvbnQoZ2x5cGgsIGFkdmFuY2UpKSB7CiAgICAgICAgICAgICBmbG9hdCBw
b2ludFNpemUgPSBwbGF0Zm9ybURhdGEoKS5tX3NpemU7CiAgICAgICAgICAgICBDR0FmZmluZVRy
YW5zZm9ybSBtID0gQ0dBZmZpbmVUcmFuc2Zvcm1NYWtlU2NhbGUocG9pbnRTaXplLCBwb2ludFNp
emUpOwotICAgICAgICAgICAgaWYgKCF3a0dldEdseXBoVHJhbnNmb3JtZWRBZHZhbmNlcyhwbGF0
Zm9ybURhdGEoKS5jZ0ZvbnQoKSwgZm9udCwgJm0sICZnbHlwaCwgJmFkdmFuY2UpKSB7Ci0gICAg
ICAgICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gY2FjaGUgZ2x5cGggd2lkdGhzIGZvciAl
QCAlZiIsIFtmb250IGRpc3BsYXlOYW1lXSwgcG9pbnRTaXplKTsKKyAgICAgICAgICAgIGlmICgh
Q0dGb250R2V0R2x5cGhBZHZhbmNlc0ZvclN0eWxlKHBsYXRmb3JtRGF0YSgpLmNnRm9udCgpLCAm
bSwgZ2V0UmVuZGVyaW5nU3R5bGUoKSwgJmdseXBoLCAxLCAmYWR2YW5jZSkpIHsKKyAgICAgICAg
ICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGZ1bGxOYW1lID0gYWRvcHRDRihDR0ZvbnRD
b3B5RnVsbE5hbWUocGxhdGZvcm1EYXRhKCkuY2dGb250KCkpKTsKKyAgICAgICAgICAgICAgICBM
T0dfRVJST1IoIlVuYWJsZSB0byBjYWNoZSBnbHlwaCB3aWR0aHMgZm9yICVAICVmIiwgZnVsbE5h
bWUuZ2V0KCksIHBvaW50U2l6ZSk7CiAgICAgICAgICAgICAgICAgYWR2YW5jZS53aWR0aCA9IDA7
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTM5OCw3ICs0NDMsNiBAQCBmbG9hdCBTaW1w
bGVGb250RGF0YTo6cGxhdGZvcm1XaWR0aEZvckdseXBoKEdseXBoIGdseXBoKSBjb25zdAogCiAg
ICAgcmV0dXJuIGFkdmFuY2Uud2lkdGggKyBtX3N5bnRoZXRpY0JvbGRPZmZzZXQ7CiB9Ci0jZW5k
aWYgLy8gIVBMQVRGT1JNKElPUykKIAogc3RydWN0IFByb3ZpZGVySW5mbyB7CiAgICAgY29uc3Qg
VUNoYXIqIGNoYXJhY3RlcnM7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>229997</attachid>
            <date>2014-04-23 11:34:36 -0700</date>
            <delta_ts>2014-04-23 12:54:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-132036-20140423113414.patch</filename>
            <type>text/plain</type>
            <size>9908</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY3NzEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzA2MTY0NWIwNDZlYjg1
YThlM2M1YTMwY2I0YTlkNmYxYWUyYmQwYS4uM2E0YzBjNTcyODIzYTJkMmY3Njc4ZDBlYWM3Y2Iz
OWFmM2RmZDc1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI5IEBACiAyMDE0LTA0LTIyICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKKyAgICAgICAgVW5pZnkgcGxh
dGZvcm1XaWR0aEZvckdseXBoIGFjcm9zcyBPUyBYIGFuZCBpT1MKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMjAzNgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggY3JlYXRlcyBvbiBzaGFy
ZWQgU2ltcGxlRm9udERhdGE6OnBsYXRmb3JtV2lkdGhGb3JHbHlwaCgpIGZ1bmN0aW9uIGZvciBi
b3RoIE9TIFggYW5kIGlPUy4KKworICAgICAgICBObyBuZXcgdGVzdHMgYXJlIG5lY2Vzc2FyeSBi
ZWNhdXNlIHRoZXJlIHNob3VsZCBiZSBubyBiZWhhdmlvciBjaGFuZ2VzLgorCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvU2ltcGxlRm9udERhdGEuaDogU2lnbmF0dXJlcyBmb3IgdHdvIGhl
bHBlciBmdW5jdGlvbnMKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pb3MvU2ltcGxlRm9u
dERhdGFJT1MubW06IFJlcGxhY2UgaU9TIGltcGxlbWVudGF0aW9uIG9mIHBsYXRmb3JtV2lkdGhG
b3JHbHlwaCgpIHdpdGgKKyAgICAgICAgaW1wbGVtZW50YXRpb25zIG9mIG9ubHkgdGhlIHR3byBo
ZWxwZXIgZnVuY3Rpb25zCisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVGb250RGF0YTo6Z2V0UmVu
ZGVyaW5nU3R5bGUpOiBDb21wdXRlIHN0eWxlIGFyZ3VtZW50IHRvIENHRm9udEdldEdseXBoQWR2
YW5jZXNGb3JTdHlsZSgpCisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVGb250RGF0YTo6YWR2YW5j
ZUZvckNvbG9yQml0bWFwRm9udCk6IGlPUyBkb2Vzbid0IGhhdmUgY29sb3IgYml0bWFwIGZvbnRz
CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVGb250RGF0YTo6cGxhdGZvcm1XaWR0aEZvckdseXBo
KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvU2ltcGxlRm9udERh
dGFNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVGb250RGF0YTo6Z2V0UmVuZGVyaW5n
U3R5bGUpOiBDb21wdXRlIHN0eWxlIGFyZ3VtZW50IHRvIENHRm9udEdldEdseXBoQWR2YW5jZXNG
b3JTdHlsZSgpCisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVGb250RGF0YTo6YWR2YW5jZUZvckNv
bG9yQml0bWFwRm9udCk6IFVzZSBbTlNGb250IGFkdmFuY2VtZW50Rm9yR2x5cGhdIHRvIGNvbXB1
dGUgdGhlIGFkdmFuY2UKKyAgICAgICAgKFdlYkNvcmU6Omhhc0N1c3RvbVRyYWNraW5nKTogUmVt
b3ZlZCAjaWYKKyAgICAgICAgKFdlYkNvcmU6OmlzRW1vamkpOiBPbmx5IHJlbGV2YW50IG9uIGlP
UworICAgICAgICAoV2ViQ29yZTo6U2ltcGxlRm9udERhdGE6OnBsYXRmb3JtV2lkdGhGb3JHbHlw
aCk6IFNoYXJlZCBpbXBsZW1lbnRhdGlvbi4gQ2FsbHMgaGVscGVyIGZ1bmN0aW9ucy4KKworMjAx
NC0wNC0yMiAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCiAgICAg
ICAgIFtPUyBYXSBNYWtlIGNoZWNraW5nIGlmIGEgZm9udCBpcyB0aGUgc3lzdGVtIGZvbnQgbW9y
ZSByb2J1c3QKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEzMjAzMAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9T
aW1wbGVGb250RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2ltcGxl
Rm9udERhdGEuaAppbmRleCA0YzJmYjdhNDU1YWI2MzkxZmExMTMyMDVmMmUxNGI2MzFlYzUyZDNi
Li5hMmQ4ZjBiN2YxNGJkOTZjMzA4N2VkNmU1MTJkODIwNGU1NjFhNDYwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaW1wbGVGb250RGF0YS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NpbXBsZUZvbnREYXRhLmgKQEAgLTU0LDYg
KzU0LDIwIEBACiAjaW5jbHVkZSA8Y2Fpcm8uaD4KICNlbmRpZgogCisjaWYgVVNFKENHKSAmJiBf
X2hhc19pbmNsdWRlKDxDb3JlR3JhcGhpY3MvQ0dGb250UmVuZGVyaW5nLmg+KQorI2luY2x1ZGUg
PENvcmVHcmFwaGljcy9DR0ZvbnRSZW5kZXJpbmcuaD4KKyNlbHNlCitlbnVtIHsKKyAgICBrQ0dG
b250UmVuZGVyaW5nU3R5bGVBbnRpYWxpYXNpbmcgPSAoMSA8PCAwKSwKKyAgICBrQ0dGb250UmVu
ZGVyaW5nU3R5bGVTbW9vdGhpbmcgPSAoMSA8PCAxKSwKKyAgICBrQ0dGb250UmVuZGVyaW5nU3R5
bGVTdWJwaXhlbFBvc2l0aW9uaW5nID0gKDEgPDwgMiksCisgICAga0NHRm9udFJlbmRlcmluZ1N0
eWxlU3VicGl4ZWxRdWFudGl6YXRpb24gPSAoMSA8PCAzKSwKKyAgICBrQ0dGb250UmVuZGVyaW5n
U3R5bGVQbGF0Zm9ybU5hdGl2ZSA9ICgxIDw8IDkpLAorICAgIGtDR0ZvbnRSZW5kZXJpbmdTdHls
ZU1hc2sgPSAweDIwRgorfTsKKyNlbmRpZgordHlwZWRlZiB1aW50MzJfdCBDR0ZvbnRSZW5kZXJp
bmdTdHlsZTsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGb250RGVzY3JpcHRpb247
CkBAIC0yNDUsNiArMjU5LDExIEBAIHByaXZhdGU6CiAgICAgZmxvYXQgd2lkdGhGb3JHRElHbHlw
aChHbHlwaCBnbHlwaCkgY29uc3Q7CiAjZW5kaWYKIAorI2lmIFVTRShDRykKKyAgICBDR0ZvbnRS
ZW5kZXJpbmdTdHlsZSByZW5kZXJpbmdTdHlsZSgpIGNvbnN0OworICAgIGJvb2wgYWR2YW5jZUZv
ckNvbG9yQml0bWFwRm9udChHbHlwaCwgQ0dTaXplJiByZXN1bHQpIGNvbnN0OyAvLyBSZXR1cm5z
IHRydWUgaWYgdGhlIGZvbnQgaXMgYSBjb2xvciBiaXRtYXAgZm9udAorI2VuZGlmCisKICAgICBG
b250TWV0cmljcyBtX2ZvbnRNZXRyaWNzOwogICAgIGZsb2F0IG1fbWF4Q2hhcldpZHRoOwogICAg
IGZsb2F0IG1fYXZnQ2hhcldpZHRoOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvaW9zL1NpbXBsZUZvbnREYXRhSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvaW9zL1NpbXBsZUZvbnREYXRhSU9TLm1tCmluZGV4IDc3NTBjNDllNWNl
MzRiOTZkOTU5MmMyNjQ2MTMxOGQ3ZjQ5NTJmMWIuLmY1ZWM0N2I4NTJhOGIwOWMzZWY0NzBhYmUx
ZGIzMmM4Yjk5ZWY2ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2lvcy9TaW1wbGVGb250RGF0YUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9pb3MvU2ltcGxlRm9udERhdGFJT1MubW0KQEAgLTMyLDkgKzMyLDcgQEAKICNp
bXBvcnQgIkZvbnRDYWNoZS5oIgogI2ltcG9ydCAiRm9udERlc2NyaXB0aW9uLmgiCiAjaW1wb3J0
ICJGb250U2VydmljZXNJT1MuaCIKLSNpbXBvcnQgPENvcmVHcmFwaGljcy9DR0ZvbnRHbHlwaFN1
cHBvcnQuaD4KICNpbXBvcnQgPENvcmVHcmFwaGljcy9DR0ZvbnRJbmZvLmg+Ci0jaW1wb3J0IDxD
b3JlR3JhcGhpY3MvQ0dGb250UmVuZGVyaW5nLmg+CiAjaW1wb3J0IDxDb3JlVGV4dC9Db3JlVGV4
dC5oPgogI2ltcG9ydCA8ZmxvYXQuaD4KICNpbXBvcnQgPHVuaWNvZGUvdWNoYXIuaD4KQEAgLTE4
NywyNiArMTg1LDE2IEBAIHZvaWQgU2ltcGxlRm9udERhdGE6OmRldGVybWluZVBpdGNoKCkKICAg
ICB9CiB9CiAKLWZsb2F0IFNpbXBsZUZvbnREYXRhOjpwbGF0Zm9ybVdpZHRoRm9yR2x5cGgoR2x5
cGggZ2x5cGgpIGNvbnN0CitDR0ZvbnRSZW5kZXJpbmdTdHlsZSBTaW1wbGVGb250RGF0YTo6cmVu
ZGVyaW5nU3R5bGUoKSBjb25zdAogewotICAgIENHU2l6ZSBhZHZhbmNlID0gQ0dTaXplWmVybzsK
LSAgICBpZiAocGxhdGZvcm1EYXRhKCkub3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsIHx8IG1f
aXNCcm9rZW5JZGVvZ3JhcGhGYWxsYmFjaykgewotICAgICAgICBpZiAocGxhdGZvcm1EYXRhKCku
bV9pc0Vtb2ppKQotICAgICAgICAgICAgQ1RGb250R2V0QWR2YW5jZXNGb3JHbHlwaHMobV9wbGF0
Zm9ybURhdGEuY3RGb250KCksIGtDVEZvbnRIb3Jpem9udGFsT3JpZW50YXRpb24sICZnbHlwaCwg
JmFkdmFuY2UsIDEpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGZsb2F0IHBvaW50U2l6
ZSA9IHBsYXRmb3JtRGF0YSgpLm1fc2l6ZTsKLSAgICAgICAgICAgIENHQWZmaW5lVHJhbnNmb3Jt
IHRyYW5zZm9ybSA9IENHQWZmaW5lVHJhbnNmb3JtTWFrZVNjYWxlKHBvaW50U2l6ZSwgcG9pbnRT
aXplKTsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBDR0ZvbnRSZW5kZXJpbmdTdHlsZSByZW5k
ZXJpbmdTdHlsZSA9IGtDR0ZvbnRSZW5kZXJpbmdTdHlsZUFudGlhbGlhc2luZyB8IGtDR0ZvbnRS
ZW5kZXJpbmdTdHlsZVN1YnBpeGVsUG9zaXRpb25pbmcgfCBrQ0dGb250UmVuZGVyaW5nU3R5bGVT
dWJwaXhlbFF1YW50aXphdGlvbiB8IGtDR0ZvbnRBbnRpYWxpYXNpbmdTdHlsZVVuZmlsdGVyZWQ7
Ci0gICAgICAgICAgICBpZiAoIUNHRm9udEdldEdseXBoQWR2YW5jZXNGb3JTdHlsZShwbGF0Zm9y
bURhdGEoKS5jZ0ZvbnQoKSwgJnRyYW5zZm9ybSwgcmVuZGVyaW5nU3R5bGUsICZnbHlwaCwgMSwg
JmFkdmFuY2UpKSB7Ci0gICAgICAgICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBmdWxs
TmFtZSA9IGFkb3B0Q0YoQ0dGb250Q29weUZ1bGxOYW1lKHBsYXRmb3JtRGF0YSgpLmNnRm9udCgp
KSk7Ci0gICAgICAgICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gY2FjaGUgZ2x5cGggd2lk
dGhzIGZvciAlQCAlZiIsIGZ1bGxOYW1lLmdldCgpLCBwb2ludFNpemUpOwotICAgICAgICAgICAg
ICAgIGFkdmFuY2Uud2lkdGggPSAwOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfSBl
bHNlCi0gICAgICAgIENURm9udEdldEFkdmFuY2VzRm9yR2x5cGhzKG1fcGxhdGZvcm1EYXRhLmN0
Rm9udCgpLCBrQ1RGb250VmVydGljYWxPcmllbnRhdGlvbiwgJmdseXBoLCAmYWR2YW5jZSwgMSk7
Ci0KLSAgICByZXR1cm4gYWR2YW5jZS53aWR0aCArIG1fc3ludGhldGljQm9sZE9mZnNldDsKKyAg
ICByZXR1cm4ga0NHRm9udFJlbmRlcmluZ1N0eWxlQW50aWFsaWFzaW5nIHwga0NHRm9udFJlbmRl
cmluZ1N0eWxlU3VicGl4ZWxQb3NpdGlvbmluZyB8IGtDR0ZvbnRSZW5kZXJpbmdTdHlsZVN1YnBp
eGVsUXVhbnRpemF0aW9uIHwga0NHRm9udEFudGlhbGlhc2luZ1N0eWxlVW5maWx0ZXJlZDsKK30K
KworYm9vbCBTaW1wbGVGb250RGF0YTo6YWR2YW5jZUZvckNvbG9yQml0bWFwRm9udChHbHlwaCBn
bHlwaCwgQ0dTaXplJiBhZHZhbmNlKSBjb25zdAoreworICAgIFVOVVNFRF9QQVJBTShnbHlwaCk7
CisgICAgVU5VU0VEX1BBUkFNKGFkdmFuY2UpOworICAgIHJldHVybiBmYWxzZTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL1NpbXBsZUZvbnREYXRhTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL1NpbXBsZUZvbnREYXRhTWFjLm1tCmluZGV4IGE4ZGQ1MGVlMzMwMTM0
MWVlYjA1OTYxZmViMjUzZmQwZWJhMTc4YTMuLjViMTkxNWRiZGRhNTE2YmEyM2M0OWEwODIyMzJl
NTQ2OGU4MzYyMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9TaW1wbGVGb250RGF0YU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9tYWMvU2ltcGxlRm9udERhdGFNYWMubW0KQEAgLTUwLDkgKzUwLDE1IEBACiAjaWYg
ZGVmaW5lZChfX2hhc19pbmNsdWRlKSAmJiBfX2hhc19pbmNsdWRlKDxDb3JlVGV4dC9DVEZvbnRE
ZXNjcmlwdG9yUHJpdi5oPikKICNpbXBvcnQgPENvcmVUZXh0L0NURm9udERlc2NyaXB0b3JQcml2
Lmg+CiAjZW5kaWYKLQogZXh0ZXJuICJDIiBib29sIENURm9udERlc2NyaXB0b3JJc1N5c3RlbVVJ
Rm9udChDVEZvbnREZXNjcmlwdG9yUmVmKTsKIAorI2lmIF9faGFzX2luY2x1ZGUoPENvcmVHcmFw
aGljcy9DR0ZvbnRHbHlwaFN1cHBvcnQuaD4pCisjaW1wb3J0IDxDb3JlR3JhcGhpY3MvQ0dGb250
R2x5cGhTdXBwb3J0Lmg+CisjZW5kaWYKK2V4dGVybiAiQyIgYm9vbCBDR0ZvbnRHZXRHbHlwaEFk
dmFuY2VzRm9yU3R5bGUoQ0dGb250UmVmIGZvbnQsCisgICAgY29uc3QgQ0dBZmZpbmVUcmFuc2Zv
cm0gKnQsIENHRm9udFJlbmRlcmluZ1N0eWxlIHN0eWxlLAorICAgIGNvbnN0IENHR2x5cGggZ2x5
cGhzW10sIHNpemVfdCBjb3VudCwgQ0dTaXplIGFkdmFuY2VzW10pOworCiAjaWYgIVBMQVRGT1JN
KElPUykKIEBpbnRlcmZhY2UgTlNGb250IChXZWJBcHBLaXRTZWNyZXRBUEkpCiAtIChCT09MKV9p
c0Zha2VGaXhlZFBpdGNoOwpAQCAtMzY1LDEwICszNzEsNDEgQEAgRmxvYXRSZWN0IFNpbXBsZUZv
bnREYXRhOjpwbGF0Zm9ybUJvdW5kc0ZvckdseXBoKEdseXBoIGdseXBoKSBjb25zdAogICAgIHJl
dHVybiBib3VuZGluZ0JveDsKIH0KIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0o
TUFDKQorQ0dGb250UmVuZGVyaW5nU3R5bGUgU2ltcGxlRm9udERhdGE6OnJlbmRlcmluZ1N0eWxl
KCkgY29uc3QKK3sKKyAgICBDR0ZvbnRSZW5kZXJpbmdTdHlsZSBzdHlsZSA9IGtDR0ZvbnRSZW5k
ZXJpbmdTdHlsZUFudGlhbGlhc2luZyB8IGtDR0ZvbnRSZW5kZXJpbmdTdHlsZVN1YnBpeGVsUG9z
aXRpb25pbmcgfCBrQ0dGb250UmVuZGVyaW5nU3R5bGVTdWJwaXhlbFF1YW50aXphdGlvbjsKKyAg
ICBOU0ZvbnQgKmZvbnQgPSBwbGF0Zm9ybURhdGEoKS5mb250KCk7CisgICAgaWYgKGZvbnQpIHsK
KyAgICAgICAgc3dpdGNoIChbZm9udCByZW5kZXJpbmdNb2RlXSkgeworICAgICAgICBjYXNlIE5T
Rm9udEludGVnZXJBZHZhbmNlbWVudHNSZW5kZXJpbmdNb2RlOgorICAgICAgICAgICAgc3R5bGUg
PSAwOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTlNGb250QW50aWFsaWFzZWRJ
bnRlZ2VyQWR2YW5jZW1lbnRzUmVuZGVyaW5nTW9kZToKKyAgICAgICAgICAgIHN0eWxlID0ga0NH
Rm9udFJlbmRlcmluZ1N0eWxlQW50aWFsaWFzaW5nOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBzdHlsZSA9IGtDR0ZvbnRSZW5kZXJpbmdTdHlsZUFu
dGlhbGlhc2luZyB8IGtDR0ZvbnRSZW5kZXJpbmdTdHlsZVN1YnBpeGVsUG9zaXRpb25pbmcgfCBr
Q0dGb250UmVuZGVyaW5nU3R5bGVTdWJwaXhlbFF1YW50aXphdGlvbjsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBzdHlsZTsKK30KKworYm9vbCBTaW1w
bGVGb250RGF0YTo6YWR2YW5jZUZvckNvbG9yQml0bWFwRm9udChHbHlwaCBnbHlwaCwgQ0dTaXpl
JiBhZHZhbmNlKSBjb25zdAoreworICAgIE5TRm9udCAqZm9udCA9IHBsYXRmb3JtRGF0YSgpLmZv
bnQoKTsKKyAgICBpZiAoZm9udCAmJiBwbGF0Zm9ybURhdGEoKS5pc0NvbG9yQml0bWFwRm9udCgp
KSB7CisgICAgICAgIGFkdmFuY2UgPSBOU1NpemVUb0NHU2l6ZShbZm9udCBhZHZhbmNlbWVudEZv
ckdseXBoOmdseXBoXSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisjZW5kaWYKKwogc3RhdGljIGJvb2wgaGFzQ3VzdG9tVHJhY2tpbmcoQ1RGb250
UmVmIGZvbnQpCiB7Ci0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDEwOTAK
KyNpZiAhUExBVEZPUk0oSU9TKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwg
MTA5MAogICAgIFVOVVNFRF9QQVJBTShmb250KTsKICAgICByZXR1cm4gZmFsc2U7CiAjZWxzZQpA
QCAtMzc3LDE5ICs0MTQsMjcgQEAgc3RhdGljIGJvb2wgaGFzQ3VzdG9tVHJhY2tpbmcoQ1RGb250
UmVmIGZvbnQpCiAjZW5kaWYKIH0KIAorc3RhdGljIGJvb2wgaXNFbW9qaShjb25zdCBGb250UGxh
dGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEpCit7CisjaWYgUExBVEZPUk0oSU9TKQorICAgIHJldHVy
biBwbGF0Zm9ybURhdGEubV9pc0Vtb2ppOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0ocGxhdGZv
cm1EYXRhKTsKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKK30KKwogZmxvYXQgU2ltcGxlRm9u
dERhdGE6OnBsYXRmb3JtV2lkdGhGb3JHbHlwaChHbHlwaCBnbHlwaCkgY29uc3QKIHsKICAgICBD
R1NpemUgYWR2YW5jZSA9IENHU2l6ZVplcm87CiAgICAgYm9vbCBob3Jpem9udGFsID0gcGxhdGZv
cm1EYXRhKCkub3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsOwotICAgIGlmICgoaG9yaXpvbnRh
bCB8fCBtX2lzQnJva2VuSWRlb2dyYXBoRmFsbGJhY2spICYmICFoYXNDdXN0b21UcmFja2luZyht
X3BsYXRmb3JtRGF0YS5jdEZvbnQoKSkpIHsKLSAgICAgICAgTlNGb250ICpmb250ID0gcGxhdGZv
cm1EYXRhKCkuZm9udCgpOwotICAgICAgICBpZiAoZm9udCAmJiBwbGF0Zm9ybURhdGEoKS5pc0Nv
bG9yQml0bWFwRm9udCgpKQotICAgICAgICAgICAgYWR2YW5jZSA9IE5TU2l6ZVRvQ0dTaXplKFtm
b250IGFkdmFuY2VtZW50Rm9yR2x5cGg6Z2x5cGhdKTsKLSAgICAgICAgZWxzZSB7CisgICAgaWYg
KChob3Jpem9udGFsIHx8IG1faXNCcm9rZW5JZGVvZ3JhcGhGYWxsYmFjaykgJiYgIWhhc0N1c3Rv
bVRyYWNraW5nKG1fcGxhdGZvcm1EYXRhLmN0Rm9udCgpKSAmJiAhaXNFbW9qaShwbGF0Zm9ybURh
dGEoKSkpIHsKKyAgICAgICAgaWYgKCFhZHZhbmNlRm9yQ29sb3JCaXRtYXBGb250KGdseXBoLCBh
ZHZhbmNlKSkgewogICAgICAgICAgICAgZmxvYXQgcG9pbnRTaXplID0gcGxhdGZvcm1EYXRhKCku
bV9zaXplOwogICAgICAgICAgICAgQ0dBZmZpbmVUcmFuc2Zvcm0gbSA9IENHQWZmaW5lVHJhbnNm
b3JtTWFrZVNjYWxlKHBvaW50U2l6ZSwgcG9pbnRTaXplKTsKLSAgICAgICAgICAgIGlmICghd2tH
ZXRHbHlwaFRyYW5zZm9ybWVkQWR2YW5jZXMocGxhdGZvcm1EYXRhKCkuY2dGb250KCksIGZvbnQs
ICZtLCAmZ2x5cGgsICZhZHZhbmNlKSkgewotICAgICAgICAgICAgICAgIExPR19FUlJPUigiVW5h
YmxlIHRvIGNhY2hlIGdseXBoIHdpZHRocyBmb3IgJUAgJWYiLCBbZm9udCBkaXNwbGF5TmFtZV0s
IHBvaW50U2l6ZSk7CisgICAgICAgICAgICBpZiAoIUNHRm9udEdldEdseXBoQWR2YW5jZXNGb3JT
dHlsZShwbGF0Zm9ybURhdGEoKS5jZ0ZvbnQoKSwgJm0sIHJlbmRlcmluZ1N0eWxlKCksICZnbHlw
aCwgMSwgJmFkdmFuY2UpKSB7CisgICAgICAgICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVm
PiBmdWxsTmFtZSA9IGFkb3B0Q0YoQ0dGb250Q29weUZ1bGxOYW1lKHBsYXRmb3JtRGF0YSgpLmNn
Rm9udCgpKSk7CisgICAgICAgICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gY2FjaGUgZ2x5
cGggd2lkdGhzIGZvciAlQCAlZiIsIGZ1bGxOYW1lLmdldCgpLCBwb2ludFNpemUpOwogICAgICAg
ICAgICAgICAgIGFkdmFuY2Uud2lkdGggPSAwOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBA
IC0zOTgsNyArNDQzLDYgQEAgZmxvYXQgU2ltcGxlRm9udERhdGE6OnBsYXRmb3JtV2lkdGhGb3JH
bHlwaChHbHlwaCBnbHlwaCkgY29uc3QKIAogICAgIHJldHVybiBhZHZhbmNlLndpZHRoICsgbV9z
eW50aGV0aWNCb2xkT2Zmc2V0OwogfQotI2VuZGlmIC8vICFQTEFURk9STShJT1MpCiAKIHN0cnVj
dCBQcm92aWRlckluZm8gewogICAgIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>230000</attachid>
            <date>2014-04-23 12:54:30 -0700</date>
            <delta_ts>2014-04-24 13:13:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-132036-20140423125408.patch</filename>
            <type>text/plain</type>
            <size>9925</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY3NzE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzQ5NDNmZWEzM2U4MWI4
ZDc1YzM0YmNjNDA3ZTg1MGE4ZTJjMDRkMC4uZjhhN2FlOGUyYTUxZDU3ZDcwMjAyM2UzZGIyZjg3
Y2IxZjA2ZGVhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDE0LTA0LTIzICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgVW5pZnkgcGxh
dGZvcm1XaWR0aEZvckdseXBoIGFjcm9zcyBPUyBYIGFuZCBpT1MKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMjAzNgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggY3JlYXRlcyBvbiBzaGFy
ZWQgU2ltcGxlRm9udERhdGE6OnBsYXRmb3JtV2lkdGhGb3JHbHlwaCgpIGZ1bmN0aW9uIGZvciBi
b3RoIE9TIFggYW5kIGlPUy4KKworICAgICAgICBObyBuZXcgdGVzdHMgYXJlIG5lY2Vzc2FyeSBi
ZWNhdXNlIHRoZXJlIHNob3VsZCBiZSBubyBiZWhhdmlvciBjaGFuZ2VzLgorCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvU2ltcGxlRm9udERhdGEuaDogU2lnbmF0dXJlcyBmb3IgdHdvIGhl
bHBlciBmdW5jdGlvbnMKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pb3MvU2ltcGxlRm9u
dERhdGFJT1MubW06IFJlcGxhY2UgaU9TIGltcGxlbWVudGF0aW9uIG9mIHBsYXRmb3JtV2lkdGhG
b3JHbHlwaCgpIHdpdGgKKyAgICAgICAgaW1wbGVtZW50YXRpb25zIG9mIG9ubHkgdGhlIHR3byBo
ZWxwZXIgZnVuY3Rpb25zCisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVGb250RGF0YTo6Z2V0UmVu
ZGVyaW5nU3R5bGUpOiBDb21wdXRlIHN0eWxlIGFyZ3VtZW50IHRvIENHRm9udEdldEdseXBoQWR2
YW5jZXNGb3JTdHlsZSgpCisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVGb250RGF0YTo6YWR2YW5j
ZUZvckNvbG9yQml0bWFwRm9udCk6IGlPUyBkb2Vzbid0IGhhdmUgY29sb3IgYml0bWFwIGZvbnRz
CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVGb250RGF0YTo6cGxhdGZvcm1XaWR0aEZvckdseXBo
KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvU2ltcGxlRm9udERh
dGFNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVGb250RGF0YTo6Z2V0UmVuZGVyaW5n
U3R5bGUpOiBDb21wdXRlIHN0eWxlIGFyZ3VtZW50IHRvIENHRm9udEdldEdseXBoQWR2YW5jZXNG
b3JTdHlsZSgpCisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVGb250RGF0YTo6YWR2YW5jZUZvckNv
bG9yQml0bWFwRm9udCk6IFVzZSBbTlNGb250IGFkdmFuY2VtZW50Rm9yR2x5cGhdIHRvIGNvbXB1
dGUgdGhlIGFkdmFuY2UKKyAgICAgICAgKFdlYkNvcmU6Omhhc0N1c3RvbVRyYWNraW5nKTogUmVt
b3ZlZCAjaWYKKyAgICAgICAgKFdlYkNvcmU6OmlzRW1vamkpOiBPbmx5IHJlbGV2YW50IG9uIGlP
UworICAgICAgICAoV2ViQ29yZTo6U2ltcGxlRm9udERhdGE6OnBsYXRmb3JtV2lkdGhGb3JHbHlw
aCk6IFNoYXJlZCBpbXBsZW1lbnRhdGlvbi4gQ2FsbHMgaGVscGVyIGZ1bmN0aW9ucy4KKwogMjAx
NC0wNC0yMyAgQW5kcmVhcyBLbGluZyAgPGFrbGluZ0BhcHBsZS5jb20+CiAKICAgICAgICAgW2lP
UyBXZWJLaXQyXSBJT1N1cmZhY2VQb29sIHNob3VsZCBmb3JjZSBDQSB0byBhY3R1YWxseSBnYXJi
YWdlIGNvbGxlY3Qgc3VyZmFjZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9TaW1wbGVGb250RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvU2ltcGxlRm9udERhdGEuaAppbmRleCA0YzJmYjdhNDU1YWI2MzkxZmExMTMyMDVmMmUx
NGI2MzFlYzUyZDNiLi45ZjYwNGU5YzNkNTc1ODRjMzAwZjMwNzU0ZTY5MWI5YWUwYWIxYzliIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaW1wbGVGb250RGF0
YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NpbXBsZUZvbnREYXRh
LmgKQEAgLTU0LDYgKzU0LDIyIEBACiAjaW5jbHVkZSA8Y2Fpcm8uaD4KICNlbmRpZgogCisjaWYg
VVNFKENHKQorI2lmIGRlZmluZWQoX19oYXNfaW5jbHVkZSkgJiYgX19oYXNfaW5jbHVkZSg8Q29y
ZUdyYXBoaWNzL0NHRm9udFJlbmRlcmluZy5oPikKKyNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ0dG
b250UmVuZGVyaW5nLmg+CisjZWxzZQorZW51bSB7CisgICAga0NHRm9udFJlbmRlcmluZ1N0eWxl
QW50aWFsaWFzaW5nID0gKDEgPDwgMCksCisgICAga0NHRm9udFJlbmRlcmluZ1N0eWxlU21vb3Ro
aW5nID0gKDEgPDwgMSksCisgICAga0NHRm9udFJlbmRlcmluZ1N0eWxlU3VicGl4ZWxQb3NpdGlv
bmluZyA9ICgxIDw8IDIpLAorICAgIGtDR0ZvbnRSZW5kZXJpbmdTdHlsZVN1YnBpeGVsUXVhbnRp
emF0aW9uID0gKDEgPDwgMyksCisgICAga0NHRm9udFJlbmRlcmluZ1N0eWxlUGxhdGZvcm1OYXRp
dmUgPSAoMSA8PCA5KSwKKyAgICBrQ0dGb250UmVuZGVyaW5nU3R5bGVNYXNrID0gMHgyMEYKK307
CisjZW5kaWYKK3R5cGVkZWYgdWludDMyX3QgQ0dGb250UmVuZGVyaW5nU3R5bGU7CisjZW5kaWYK
KwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGb250RGVzY3JpcHRpb247CkBAIC0yNDUs
NiArMjYxLDExIEBAIHByaXZhdGU6CiAgICAgZmxvYXQgd2lkdGhGb3JHRElHbHlwaChHbHlwaCBn
bHlwaCkgY29uc3Q7CiAjZW5kaWYKIAorI2lmIFVTRShDRykKKyAgICBDR0ZvbnRSZW5kZXJpbmdT
dHlsZSByZW5kZXJpbmdTdHlsZSgpIGNvbnN0OworICAgIGJvb2wgYWR2YW5jZUZvckNvbG9yQml0
bWFwRm9udChHbHlwaCwgQ0dTaXplJiByZXN1bHQpIGNvbnN0OyAvLyBSZXR1cm5zIHRydWUgaWYg
dGhlIGZvbnQgaXMgYSBjb2xvciBiaXRtYXAgZm9udAorI2VuZGlmCisKICAgICBGb250TWV0cmlj
cyBtX2ZvbnRNZXRyaWNzOwogICAgIGZsb2F0IG1fbWF4Q2hhcldpZHRoOwogICAgIGZsb2F0IG1f
YXZnQ2hhcldpZHRoOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvaW9zL1NpbXBsZUZvbnREYXRhSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvaW9zL1NpbXBsZUZvbnREYXRhSU9TLm1tCmluZGV4IDc3NTBjNDllNWNlMzRiOTZkOTU5
MmMyNjQ2MTMxOGQ3ZjQ5NTJmMWIuLmY1ZWM0N2I4NTJhOGIwOWMzZWY0NzBhYmUxZGIzMmM4Yjk5
ZWY2ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9T
aW1wbGVGb250RGF0YUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9pb3MvU2ltcGxlRm9udERhdGFJT1MubW0KQEAgLTMyLDkgKzMyLDcgQEAKICNpbXBvcnQgIkZv
bnRDYWNoZS5oIgogI2ltcG9ydCAiRm9udERlc2NyaXB0aW9uLmgiCiAjaW1wb3J0ICJGb250U2Vy
dmljZXNJT1MuaCIKLSNpbXBvcnQgPENvcmVHcmFwaGljcy9DR0ZvbnRHbHlwaFN1cHBvcnQuaD4K
ICNpbXBvcnQgPENvcmVHcmFwaGljcy9DR0ZvbnRJbmZvLmg+Ci0jaW1wb3J0IDxDb3JlR3JhcGhp
Y3MvQ0dGb250UmVuZGVyaW5nLmg+CiAjaW1wb3J0IDxDb3JlVGV4dC9Db3JlVGV4dC5oPgogI2lt
cG9ydCA8ZmxvYXQuaD4KICNpbXBvcnQgPHVuaWNvZGUvdWNoYXIuaD4KQEAgLTE4NywyNiArMTg1
LDE2IEBAIHZvaWQgU2ltcGxlRm9udERhdGE6OmRldGVybWluZVBpdGNoKCkKICAgICB9CiB9CiAK
LWZsb2F0IFNpbXBsZUZvbnREYXRhOjpwbGF0Zm9ybVdpZHRoRm9yR2x5cGgoR2x5cGggZ2x5cGgp
IGNvbnN0CitDR0ZvbnRSZW5kZXJpbmdTdHlsZSBTaW1wbGVGb250RGF0YTo6cmVuZGVyaW5nU3R5
bGUoKSBjb25zdAogewotICAgIENHU2l6ZSBhZHZhbmNlID0gQ0dTaXplWmVybzsKLSAgICBpZiAo
cGxhdGZvcm1EYXRhKCkub3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsIHx8IG1faXNCcm9rZW5J
ZGVvZ3JhcGhGYWxsYmFjaykgewotICAgICAgICBpZiAocGxhdGZvcm1EYXRhKCkubV9pc0Vtb2pp
KQotICAgICAgICAgICAgQ1RGb250R2V0QWR2YW5jZXNGb3JHbHlwaHMobV9wbGF0Zm9ybURhdGEu
Y3RGb250KCksIGtDVEZvbnRIb3Jpem9udGFsT3JpZW50YXRpb24sICZnbHlwaCwgJmFkdmFuY2Us
IDEpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGZsb2F0IHBvaW50U2l6ZSA9IHBsYXRm
b3JtRGF0YSgpLm1fc2l6ZTsKLSAgICAgICAgICAgIENHQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9y
bSA9IENHQWZmaW5lVHJhbnNmb3JtTWFrZVNjYWxlKHBvaW50U2l6ZSwgcG9pbnRTaXplKTsKLSAg
ICAgICAgICAgIHN0YXRpYyBjb25zdCBDR0ZvbnRSZW5kZXJpbmdTdHlsZSByZW5kZXJpbmdTdHls
ZSA9IGtDR0ZvbnRSZW5kZXJpbmdTdHlsZUFudGlhbGlhc2luZyB8IGtDR0ZvbnRSZW5kZXJpbmdT
dHlsZVN1YnBpeGVsUG9zaXRpb25pbmcgfCBrQ0dGb250UmVuZGVyaW5nU3R5bGVTdWJwaXhlbFF1
YW50aXphdGlvbiB8IGtDR0ZvbnRBbnRpYWxpYXNpbmdTdHlsZVVuZmlsdGVyZWQ7Ci0gICAgICAg
ICAgICBpZiAoIUNHRm9udEdldEdseXBoQWR2YW5jZXNGb3JTdHlsZShwbGF0Zm9ybURhdGEoKS5j
Z0ZvbnQoKSwgJnRyYW5zZm9ybSwgcmVuZGVyaW5nU3R5bGUsICZnbHlwaCwgMSwgJmFkdmFuY2Up
KSB7Ci0gICAgICAgICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBmdWxsTmFtZSA9IGFk
b3B0Q0YoQ0dGb250Q29weUZ1bGxOYW1lKHBsYXRmb3JtRGF0YSgpLmNnRm9udCgpKSk7Ci0gICAg
ICAgICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gY2FjaGUgZ2x5cGggd2lkdGhzIGZvciAl
QCAlZiIsIGZ1bGxOYW1lLmdldCgpLCBwb2ludFNpemUpOwotICAgICAgICAgICAgICAgIGFkdmFu
Y2Uud2lkdGggPSAwOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfSBlbHNlCi0gICAg
ICAgIENURm9udEdldEFkdmFuY2VzRm9yR2x5cGhzKG1fcGxhdGZvcm1EYXRhLmN0Rm9udCgpLCBr
Q1RGb250VmVydGljYWxPcmllbnRhdGlvbiwgJmdseXBoLCAmYWR2YW5jZSwgMSk7Ci0KLSAgICBy
ZXR1cm4gYWR2YW5jZS53aWR0aCArIG1fc3ludGhldGljQm9sZE9mZnNldDsKKyAgICByZXR1cm4g
a0NHRm9udFJlbmRlcmluZ1N0eWxlQW50aWFsaWFzaW5nIHwga0NHRm9udFJlbmRlcmluZ1N0eWxl
U3VicGl4ZWxQb3NpdGlvbmluZyB8IGtDR0ZvbnRSZW5kZXJpbmdTdHlsZVN1YnBpeGVsUXVhbnRp
emF0aW9uIHwga0NHRm9udEFudGlhbGlhc2luZ1N0eWxlVW5maWx0ZXJlZDsKK30KKworYm9vbCBT
aW1wbGVGb250RGF0YTo6YWR2YW5jZUZvckNvbG9yQml0bWFwRm9udChHbHlwaCBnbHlwaCwgQ0dT
aXplJiBhZHZhbmNlKSBjb25zdAoreworICAgIFVOVVNFRF9QQVJBTShnbHlwaCk7CisgICAgVU5V
U0VEX1BBUkFNKGFkdmFuY2UpOworICAgIHJldHVybiBmYWxzZTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL1NpbXBsZUZvbnREYXRhTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL1NpbXBsZUZvbnREYXRhTWFjLm1tCmluZGV4IGE4ZGQ1MGVlMzMwMTM0MWVlYjA1OTYx
ZmViMjUzZmQwZWJhMTc4YTMuLjZhOWMzOWQ4MjVjMTE1Njg3ZTEzYjYzYTcwYmRhMTFmOWUwZDUz
ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9TaW1w
bGVGb250RGF0YU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9t
YWMvU2ltcGxlRm9udERhdGFNYWMubW0KQEAgLTUwLDkgKzUwLDE1IEBACiAjaWYgZGVmaW5lZChf
X2hhc19pbmNsdWRlKSAmJiBfX2hhc19pbmNsdWRlKDxDb3JlVGV4dC9DVEZvbnREZXNjcmlwdG9y
UHJpdi5oPikKICNpbXBvcnQgPENvcmVUZXh0L0NURm9udERlc2NyaXB0b3JQcml2Lmg+CiAjZW5k
aWYKLQogZXh0ZXJuICJDIiBib29sIENURm9udERlc2NyaXB0b3JJc1N5c3RlbVVJRm9udChDVEZv
bnREZXNjcmlwdG9yUmVmKTsKIAorI2lmIGRlZmluZWQoX19oYXNfaW5jbHVkZSkgJiYgX19oYXNf
aW5jbHVkZSg8Q29yZUdyYXBoaWNzL0NHRm9udEdseXBoU3VwcG9ydC5oPikKKyNpbXBvcnQgPENv
cmVHcmFwaGljcy9DR0ZvbnRHbHlwaFN1cHBvcnQuaD4KKyNlbmRpZgorZXh0ZXJuICJDIiBib29s
IENHRm9udEdldEdseXBoQWR2YW5jZXNGb3JTdHlsZShDR0ZvbnRSZWYgZm9udCwKKyAgICBjb25z
dCBDR0FmZmluZVRyYW5zZm9ybSAqdCwgQ0dGb250UmVuZGVyaW5nU3R5bGUgc3R5bGUsCisgICAg
Y29uc3QgQ0dHbHlwaCBnbHlwaHNbXSwgc2l6ZV90IGNvdW50LCBDR1NpemUgYWR2YW5jZXNbXSk7
CisKICNpZiAhUExBVEZPUk0oSU9TKQogQGludGVyZmFjZSBOU0ZvbnQgKFdlYkFwcEtpdFNlY3Jl
dEFQSSkKIC0gKEJPT0wpX2lzRmFrZUZpeGVkUGl0Y2g7CkBAIC0zNjUsMTAgKzM3MSw0MSBAQCBG
bG9hdFJlY3QgU2ltcGxlRm9udERhdGE6OnBsYXRmb3JtQm91bmRzRm9yR2x5cGgoR2x5cGggZ2x5
cGgpIGNvbnN0CiAgICAgcmV0dXJuIGJvdW5kaW5nQm94OwogfQogCi0jaWYgIVBMQVRGT1JNKElP
UykKKyNpZiBQTEFURk9STShNQUMpCitDR0ZvbnRSZW5kZXJpbmdTdHlsZSBTaW1wbGVGb250RGF0
YTo6cmVuZGVyaW5nU3R5bGUoKSBjb25zdAoreworICAgIENHRm9udFJlbmRlcmluZ1N0eWxlIHN0
eWxlID0ga0NHRm9udFJlbmRlcmluZ1N0eWxlQW50aWFsaWFzaW5nIHwga0NHRm9udFJlbmRlcmlu
Z1N0eWxlU3VicGl4ZWxQb3NpdGlvbmluZyB8IGtDR0ZvbnRSZW5kZXJpbmdTdHlsZVN1YnBpeGVs
UXVhbnRpemF0aW9uOworICAgIE5TRm9udCAqZm9udCA9IHBsYXRmb3JtRGF0YSgpLmZvbnQoKTsK
KyAgICBpZiAoZm9udCkgeworICAgICAgICBzd2l0Y2ggKFtmb250IHJlbmRlcmluZ01vZGVdKSB7
CisgICAgICAgIGNhc2UgTlNGb250SW50ZWdlckFkdmFuY2VtZW50c1JlbmRlcmluZ01vZGU6Cisg
ICAgICAgICAgICBzdHlsZSA9IDA7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBO
U0ZvbnRBbnRpYWxpYXNlZEludGVnZXJBZHZhbmNlbWVudHNSZW5kZXJpbmdNb2RlOgorICAgICAg
ICAgICAgc3R5bGUgPSBrQ0dGb250UmVuZGVyaW5nU3R5bGVBbnRpYWxpYXNpbmc7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHN0eWxlID0ga0NHRm9u
dFJlbmRlcmluZ1N0eWxlQW50aWFsaWFzaW5nIHwga0NHRm9udFJlbmRlcmluZ1N0eWxlU3VicGl4
ZWxQb3NpdGlvbmluZyB8IGtDR0ZvbnRSZW5kZXJpbmdTdHlsZVN1YnBpeGVsUXVhbnRpemF0aW9u
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHN0eWxl
OworfQorCitib29sIFNpbXBsZUZvbnREYXRhOjphZHZhbmNlRm9yQ29sb3JCaXRtYXBGb250KEds
eXBoIGdseXBoLCBDR1NpemUmIGFkdmFuY2UpIGNvbnN0Cit7CisgICAgTlNGb250ICpmb250ID0g
cGxhdGZvcm1EYXRhKCkuZm9udCgpOworICAgIGlmIChmb250ICYmIHBsYXRmb3JtRGF0YSgpLmlz
Q29sb3JCaXRtYXBGb250KCkpIHsKKyAgICAgICAgYWR2YW5jZSA9IE5TU2l6ZVRvQ0dTaXplKFtm
b250IGFkdmFuY2VtZW50Rm9yR2x5cGg6Z2x5cGhdKTsKKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKyNlbmRpZgorCiBzdGF0aWMgYm9vbCBoYXNDdXN0
b21UcmFja2luZyhDVEZvbnRSZWYgZm9udCkKIHsKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlO
X1JFUVVJUkVEIDwgMTA5MAorI2lmICFQTEFURk9STShJT1MpICYmIF9fTUFDX09TX1hfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPCAxMDkwCiAgICAgVU5VU0VEX1BBUkFNKGZvbnQpOwogICAgIHJldHVy
biBmYWxzZTsKICNlbHNlCkBAIC0zNzcsMTkgKzQxNCwyNyBAQCBzdGF0aWMgYm9vbCBoYXNDdXN0
b21UcmFja2luZyhDVEZvbnRSZWYgZm9udCkKICNlbmRpZgogfQogCitzdGF0aWMgYm9vbCBpc0Vt
b2ppKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSkKK3sKKyNpZiBQTEFURk9S
TShJT1MpCisgICAgcmV0dXJuIHBsYXRmb3JtRGF0YS5tX2lzRW1vamk7CisjZWxzZQorICAgIFVO
VVNFRF9QQVJBTShwbGF0Zm9ybURhdGEpOworICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorfQor
CiBmbG9hdCBTaW1wbGVGb250RGF0YTo6cGxhdGZvcm1XaWR0aEZvckdseXBoKEdseXBoIGdseXBo
KSBjb25zdAogewogICAgIENHU2l6ZSBhZHZhbmNlID0gQ0dTaXplWmVybzsKICAgICBib29sIGhv
cml6b250YWwgPSBwbGF0Zm9ybURhdGEoKS5vcmllbnRhdGlvbigpID09IEhvcml6b250YWw7Ci0g
ICAgaWYgKChob3Jpem9udGFsIHx8IG1faXNCcm9rZW5JZGVvZ3JhcGhGYWxsYmFjaykgJiYgIWhh
c0N1c3RvbVRyYWNraW5nKG1fcGxhdGZvcm1EYXRhLmN0Rm9udCgpKSkgewotICAgICAgICBOU0Zv
bnQgKmZvbnQgPSBwbGF0Zm9ybURhdGEoKS5mb250KCk7Ci0gICAgICAgIGlmIChmb250ICYmIHBs
YXRmb3JtRGF0YSgpLmlzQ29sb3JCaXRtYXBGb250KCkpCi0gICAgICAgICAgICBhZHZhbmNlID0g
TlNTaXplVG9DR1NpemUoW2ZvbnQgYWR2YW5jZW1lbnRGb3JHbHlwaDpnbHlwaF0pOwotICAgICAg
ICBlbHNlIHsKKyAgICBpZiAoKGhvcml6b250YWwgfHwgbV9pc0Jyb2tlbklkZW9ncmFwaEZhbGxi
YWNrKSAmJiAhaGFzQ3VzdG9tVHJhY2tpbmcobV9wbGF0Zm9ybURhdGEuY3RGb250KCkpICYmICFp
c0Vtb2ppKHBsYXRmb3JtRGF0YSgpKSkgeworICAgICAgICBpZiAoIWFkdmFuY2VGb3JDb2xvckJp
dG1hcEZvbnQoZ2x5cGgsIGFkdmFuY2UpKSB7CiAgICAgICAgICAgICBmbG9hdCBwb2ludFNpemUg
PSBwbGF0Zm9ybURhdGEoKS5tX3NpemU7CiAgICAgICAgICAgICBDR0FmZmluZVRyYW5zZm9ybSBt
ID0gQ0dBZmZpbmVUcmFuc2Zvcm1NYWtlU2NhbGUocG9pbnRTaXplLCBwb2ludFNpemUpOwotICAg
ICAgICAgICAgaWYgKCF3a0dldEdseXBoVHJhbnNmb3JtZWRBZHZhbmNlcyhwbGF0Zm9ybURhdGEo
KS5jZ0ZvbnQoKSwgZm9udCwgJm0sICZnbHlwaCwgJmFkdmFuY2UpKSB7Ci0gICAgICAgICAgICAg
ICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gY2FjaGUgZ2x5cGggd2lkdGhzIGZvciAlQCAlZiIsIFtm
b250IGRpc3BsYXlOYW1lXSwgcG9pbnRTaXplKTsKKyAgICAgICAgICAgIGlmICghQ0dGb250R2V0
R2x5cGhBZHZhbmNlc0ZvclN0eWxlKHBsYXRmb3JtRGF0YSgpLmNnRm9udCgpLCAmbSwgcmVuZGVy
aW5nU3R5bGUoKSwgJmdseXBoLCAxLCAmYWR2YW5jZSkpIHsKKyAgICAgICAgICAgICAgICBSZXRh
aW5QdHI8Q0ZTdHJpbmdSZWY+IGZ1bGxOYW1lID0gYWRvcHRDRihDR0ZvbnRDb3B5RnVsbE5hbWUo
cGxhdGZvcm1EYXRhKCkuY2dGb250KCkpKTsKKyAgICAgICAgICAgICAgICBMT0dfRVJST1IoIlVu
YWJsZSB0byBjYWNoZSBnbHlwaCB3aWR0aHMgZm9yICVAICVmIiwgZnVsbE5hbWUuZ2V0KCksIHBv
aW50U2l6ZSk7CiAgICAgICAgICAgICAgICAgYWR2YW5jZS53aWR0aCA9IDA7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KQEAgLTM5OCw3ICs0NDMsNiBAQCBmbG9hdCBTaW1wbGVGb250RGF0YTo6
cGxhdGZvcm1XaWR0aEZvckdseXBoKEdseXBoIGdseXBoKSBjb25zdAogCiAgICAgcmV0dXJuIGFk
dmFuY2Uud2lkdGggKyBtX3N5bnRoZXRpY0JvbGRPZmZzZXQ7CiB9Ci0jZW5kaWYgLy8gIVBMQVRG
T1JNKElPUykKIAogc3RydWN0IFByb3ZpZGVySW5mbyB7CiAgICAgY29uc3QgVUNoYXIqIGNoYXJh
Y3RlcnM7Cg==
</data>
<flag name="review"
          id="254371"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>