<?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>27734</bug_id>
          
          <creation_ts>2009-07-27 14:14:23 -0700</creation_ts>
          <short_desc>WINCE PORT: font related changes</short_desc>
          <delta_ts>2009-09-02 09:41:29 -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>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>Other</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>
          
          <blocked>23154</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Yong Li">yong.li.webkit</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>eric</cc>
    
    <cc>joenotcharles</cc>
    
    <cc>manyoso</cc>
    
    <cc>mitz</cc>
    
    <cc>staikos</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>135012</commentid>
    <comment_count>0</comment_count>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2009-07-27 14:14:23 -0700</bug_when>
    <thetext>patch will follow</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>135015</commentid>
    <comment_count>1</comment_count>
      <attachid>33569</attachid>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2009-07-27 14:18:59 -0700</bug_when>
    <thetext>Created attachment 33569
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>135267</commentid>
    <comment_count>2</comment_count>
      <attachid>33569</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-07-28 10:49:24 -0700</bug_when>
    <thetext>Comment on attachment 33569
the patch

I don&apos;t see why this would be done here:
#if PLATFORM(WINCE)
 95     // We do not support negative letter spacing.
 96     void setLetterSpacing(short s) { m_letterSpacing = s &gt; 0 ? s : 0; }
 97 #else
9398     void setLetterSpacing(short s) { m_letterSpacing = s; }
 99 #endif

Why don&apos;t the call-sites which don&apos;t support negative letter spacing make the adjustment?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>135278</commentid>
    <comment_count>3</comment_count>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2009-07-28 11:01:55 -0700</bug_when>
    <thetext>some websites use negative letter spacing (-1) to make text display more compact, and this works perfect on desktop browsers. but on windows mobile devices, the text are already very compact (no extra space). as the result, the characters overlap on each other when letter spacing is -1.

letter spacing is used by GlyphBuffer to position glyphs. seems hard to find a better way to do this.

maybe it should better be &quot;m_letterSpacing = s &lt; 0 : s + 1 : s;&quot;, in case that web sites intend to display overlapping characters.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>136632</commentid>
    <comment_count>4</comment_count>
    <who name="Joe Mason">joenotcharles</who>
    <bug_when>2009-08-03 07:59:04 -0700</bug_when>
    <thetext>What is the point of the change to setGlyphDataForCharacter in FontFastPath.cpp?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>136756</commentid>
    <comment_count>5</comment_count>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2009-08-03 13:28:35 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; What is the point of the change to setGlyphDataForCharacter in
&gt; FontFastPath.cpp?

When we fail to link a font to the character, the changed code blocks will be reached. We are supposed to draw a square (missingGlyphData()) for this character. But on WINCE, we don&apos;t have real glyph. We use the character value as its fake glyph, and let GDI display the character directly. Our missingGplyData() returns a null character, which is not suitable for GDI to display. Also, sometimes we cannot map a font for the character on WINCE, but GDI may still be able to display the character, probably because the font package is not installed correctly. So in FontFastPath.cpp, we just always set the glyph to be same as the character, and let GDI solve it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>136787</commentid>
    <comment_count>6</comment_count>
    <who name="Joe Mason">joenotcharles</who>
    <bug_when>2009-08-03 14:44:38 -0700</bug_when>
    <thetext>Thanks - I&apos;ll update this patch with your suggestion about letterSpacing and to make that more clear.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>136817</commentid>
    <comment_count>7</comment_count>
      <attachid>34012</attachid>
    <who name="Joe Mason">joenotcharles</who>
    <bug_when>2009-08-03 15:55:02 -0700</bug_when>
    <thetext>Created attachment 34012
updated patch with clearer comments, updated handling of negative spacing, and a few style fixes

This obsoletes Yong&apos;s patch (apparently I can&apos;t make it obsolete myself, and he&apos;s on vacation).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>136824</commentid>
    <comment_count>8</comment_count>
      <attachid>34012</attachid>
    <who name="">mitz</who>
    <bug_when>2009-08-03 16:02:50 -0700</bug_when>
    <thetext>Comment on attachment 34012
updated patch with clearer comments, updated handling of negative spacing, and a few style fixes

&gt; +#if PLATFORM(WINCE)
&gt; +    // Some sites set the spacing to -1 to make text more compact.  But WinMobile already
&gt; +    // compacts the text to save on screen space, so this makes it overlap.  If the spacing is
&gt; +    // negative, widen is slightly to counteract this.
&gt; +    void setLetterSpacing(short s) { m_letterSpacing = s &lt; 0 ? s + 1 : s; }
&gt; +#else

I don’t think this is the right place to make this platform-specific adjustment. It will also affect computed style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>136994</commentid>
    <comment_count>9</comment_count>
      <attachid>34065</attachid>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2009-08-04 08:38:36 -0700</bug_when>
    <thetext>Created attachment 34065
remove the change to setLetterSpacing()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>136996</commentid>
    <comment_count>10</comment_count>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2009-08-04 08:39:27 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 34012 [details])
&gt; &gt; +#if PLATFORM(WINCE)
&gt; &gt; +    // Some sites set the spacing to -1 to make text more compact.  But WinMobile already
&gt; &gt; +    // compacts the text to save on screen space, so this makes it overlap.  If the spacing is
&gt; &gt; +    // negative, widen is slightly to counteract this.
&gt; &gt; +    void setLetterSpacing(short s) { m_letterSpacing = s &lt; 0 ? s + 1 : s; }
&gt; &gt; +#else
&gt; 
&gt; I don’t think this is the right place to make this platform-specific
&gt; adjustment. It will also affect computed style.

This change has been removed from the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>137424</commentid>
    <comment_count>11</comment_count>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2009-08-05 13:49:01 -0700</bug_when>
    <thetext>*** Bug 28021 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>137432</commentid>
    <comment_count>12</comment_count>
      <attachid>34173</attachid>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2009-08-05 14:07:47 -0700</bug_when>
    <thetext>Created attachment 34173
include changes to CachedFont.cpp

layering violations removed according to Dan Bernstein&apos;s suggestion</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>137445</commentid>
    <comment_count>13</comment_count>
      <attachid>34178</attachid>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2009-08-05 14:41:12 -0700</bug_when>
    <thetext>Created attachment 34178
remove unnecessary lines in FontCache.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>137752</commentid>
    <comment_count>14</comment_count>
      <attachid>34178</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-06 19:48:50 -0700</bug_when>
    <thetext>Comment on attachment 34178
remove unnecessary lines in FontCache.h

Please collapse this line into one nicely named define:

 35 #if PLATFORM(CG) || PLATFORM(QT) || PLATFORM(GTK) || (PLATFORM(CHROMIUM) &amp;&amp; PLATFORM(WIN_OS)) || PLATFORM(WINCE)

like STORE_FONT_POINTER or whatever the heck the ifdefed code does.

Please add more indetifying information than just &quot;comment above&quot;:
 179         // see comment above
otherwise if someone adds a comment between your two comments the latter comment will be confusing.

// See comment about WINCE GDI handling near setGlyphDataForCharacter above.
or something.

Does WINCE only support horrizontal text?
3 #elif PLATFORM(WINCE)
 64 typedef float GlyphBufferAdvance;
6065 #else
A comment is need there to explain why it&apos;s just a float.

No need for arg name:
 51     FontCustomPlatformData* createFontCustomPlatformData(const SharedBuffer* buffer);

Can you split this out?

r- mostly for the unexplained advances change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>137875</commentid>
    <comment_count>15</comment_count>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2009-08-07 07:53:39 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (From update of attachment 34178 [details])
&gt; Please collapse this line into one nicely named define:
&gt; 
&gt;  35 #if PLATFORM(CG) || PLATFORM(QT) || PLATFORM(GTK) || (PLATFORM(CHROMIUM) &amp;&amp;
&gt; PLATFORM(WIN_OS)) || PLATFORM(WINCE)
&gt; 
&gt; like STORE_FONT_POINTER or whatever the heck the ifdefed code does.
&gt; 
&gt; Please add more indetifying information than just &quot;comment above&quot;:
&gt;  179         // see comment above
&gt; otherwise if someone adds a comment between your two comments the latter
&gt; comment will be confusing.
&gt; 
&gt; // See comment about WINCE GDI handling near setGlyphDataForCharacter above.
&gt; or something.
&gt; 
&gt; Does WINCE only support horrizontal text?
&gt; 3 #elif PLATFORM(WINCE)
&gt;  64 typedef float GlyphBufferAdvance;
&gt; 6065 #else
&gt; A comment is need there to explain why it&apos;s just a float.
&gt; 
&gt; No need for arg name:
&gt;  51     FontCustomPlatformData* createFontCustomPlatformData(const
&gt; SharedBuffer* buffer);
&gt; 
&gt; Can you split this out?
&gt; 
&gt; r- mostly for the unexplained advances change.

cannot find any platform crossing code that sets non-zero FloatSize::height() for 2D GlyphBufferAdvance. CoreTextController.cpp uses 2D GlyphBufferAdvance, but GlyphBufferAdvance is already defined to CGSize for PLATFORM(CG). We&apos;ll add comments for it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>137998</commentid>
    <comment_count>16</comment_count>
      <attachid>34297</attachid>
    <who name="Joe Mason">joenotcharles</who>
    <bug_when>2009-08-07 11:30:27 -0700</bug_when>
    <thetext>Created attachment 34297
use shared buffer in custom font data</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>138007</commentid>
    <comment_count>17</comment_count>
      <attachid>34302</attachid>
    <who name="Joe Mason">joenotcharles</who>
    <bug_when>2009-08-07 11:40:52 -0700</bug_when>
    <thetext>Created attachment 34302
build fixes and minor bug fixes

This patch includes declaring comInitialize and comUninitialize, which were added in bug 27509 - the header changes must have been missed in that checkin</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>138011</commentid>
    <comment_count>18</comment_count>
      <attachid>34305</attachid>
    <who name="Joe Mason">joenotcharles</who>
    <bug_when>2009-08-07 11:44:59 -0700</bug_when>
    <thetext>Created attachment 34305
pass unrecognized glyphs to GDI to handle</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>138016</commentid>
    <comment_count>19</comment_count>
      <attachid>34306</attachid>
    <who name="Joe Mason">joenotcharles</who>
    <bug_when>2009-08-07 11:49:40 -0700</bug_when>
    <thetext>Created attachment 34306
store only width for GlyphAdvance, to save space on memory-constrained devices

Last of the split patches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>138019</commentid>
    <comment_count>20</comment_count>
      <attachid>34307</attachid>
    <who name="Joe Mason">joenotcharles</who>
    <bug_when>2009-08-07 11:50:36 -0700</bug_when>
    <thetext>Created attachment 34307
build fixes and minor bug fixes

uploaded last patch with wrong content type somehow</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>138109</commentid>
    <comment_count>21</comment_count>
      <attachid>34297</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-07 13:41:38 -0700</bug_when>
    <thetext>Comment on attachment 34297
use shared buffer in custom font data

What does this mean?
STORE_FONT_CUSTOM_PLATFORM_DATA

Not sufficient explanation:
 74 // Need to use #define instead of typedef due to conflict

Not a valid variable name:
 353     const sfntHeader* sfnt = reinterpret_cast&lt;const sfntHeader*&gt;(fontData-&gt;data());

Seems like this shoudl be a static inline function:
69     size_t nameTableSize = ((offsetof(nameTable, nameRecords) + nameRecordCount * sizeof(nameRecord) + fontName.length() * sizeof(UChar)) &amp; ~3) + 4;

This function needs more commentary:
 347 bool renameFont(SharedBuffer* fontData, const String&amp; fontName)

What is it trying to do?  re-write the in-memory font representation?

Put this in a separate static inline, please:
380     // Write the new &apos;name&apos; table after the original font data.
 381     nameTable* name = reinterpret_cast&lt;nameTable*&gt;(data + originalDataSize);
 382     name-&gt;format = 0;
 383     name-&gt;count = nameRecordCount;
 384     name-&gt;stringOffset = offsetof(nameTable, nameRecords) + nameRecordCount * sizeof(nameRecord);
 385     for (unsigned i = 0; i &lt; nameRecordCount; ++i) {
 386         name-&gt;nameRecords[i].platformID = 3;
 387         name-&gt;nameRecords[i].encodingID = 1;
 388         name-&gt;nameRecords[i].languageID = 0x0409;
 389         name-&gt;nameRecords[i].offset = 0;
 390         name-&gt;nameRecords[i].length = fontName.length() * sizeof(UChar);
 391     }
 392 

This code is not legible.  Please make it more understandable to casual readers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>138110</commentid>
    <comment_count>22</comment_count>
      <attachid>34305</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-07 13:42:10 -0700</bug_when>
    <thetext>Comment on attachment 34305
pass unrecognized glyphs to GDI to handle

LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>138111</commentid>
    <comment_count>23</comment_count>
      <attachid>34306</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-07 13:43:15 -0700</bug_when>
    <thetext>Comment on attachment 34306
store only width for GlyphAdvance, to save space on memory-constrained devices

That is much more readable, thank you.  Ideally this would have been a separate define which was not WINCE specific.  Like LOW_MEMORY_DEVICE.  But this is OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>138116</commentid>
    <comment_count>24</comment_count>
      <attachid>34307</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-07 13:45:21 -0700</bug_when>
    <thetext>Comment on attachment 34307
build fixes and minor bug fixes

Are you sure that min&lt;int&gt; will compile on other platforms?  I feel like we&apos;ve dealt with the min/max issue on windows before in other ways.  Please grep the source to see how it&apos;s dealt with elsewhere.

This needs a why comment:
29 #if !PLATFORM(WINCE)
227230     mutable SCRIPT_CACHE m_scriptCache;
228231     mutable SCRIPT_FONTPROPERTIES* m_scriptFontProperties;
229232 #endif
your note about it saving space in the ChangeLog is a fine comment, just put it in teh soruce code too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>138118</commentid>
    <comment_count>25</comment_count>
    <who name="George Staikos">staikos</who>
    <bug_when>2009-08-07 13:46:29 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; (From update of attachment 34306 [details])
&gt; That is much more readable, thank you.  Ideally this would have been a separate
&gt; define which was not WINCE specific.  Like LOW_MEMORY_DEVICE.  But this is OK.

   We agree but this refactoring has to happen later with discussion with other device WebKit folks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>138142</commentid>
    <comment_count>26</comment_count>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2009-08-07 14:16:36 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; (From update of attachment 34297 [details])
&gt; What does this mean?
&gt; STORE_FONT_CUSTOM_PLATFORM_DATA
&gt; 
&gt; Not sufficient explanation:
&gt;  74 // Need to use #define instead of typedef due to conflict

Conflict with &quot;Fixed&quot; defined in Length.h. It&apos;s not a problem if the PCH doesn&apos;t include Length.h. Probably we should remove this change from this patch.

&gt; 
&gt; Not a valid variable name:
&gt;  353     const sfntHeader* sfnt = reinterpret_cast&lt;const
&gt; sfntHeader*&gt;(fontData-&gt;data());
&gt; 
&gt; Seems like this shoudl be a static inline function:
&gt; 69     size_t nameTableSize = ((offsetof(nameTable, nameRecords) +
&gt; nameRecordCount * sizeof(nameRecord) + fontName.length() * sizeof(UChar)) &amp; ~3)
&gt; + 4;
&gt; 
&gt; This function needs more commentary:
&gt;  347 bool renameFont(SharedBuffer* fontData, const String&amp; fontName)
&gt; 
&gt; What is it trying to do?  re-write the in-memory font representation?
&gt; 
&gt; Put this in a separate static inline, please:
&gt; 380     // Write the new &apos;name&apos; table after the original font data.
&gt;  381     nameTable* name = reinterpret_cast&lt;nameTable*&gt;(data +
&gt; originalDataSize);
&gt;  382     name-&gt;format = 0;
&gt;  383     name-&gt;count = nameRecordCount;
&gt;  384     name-&gt;stringOffset = offsetof(nameTable, nameRecords) +
&gt; nameRecordCount * sizeof(nameRecord);
&gt;  385     for (unsigned i = 0; i &lt; nameRecordCount; ++i) {
&gt;  386         name-&gt;nameRecords[i].platformID = 3;
&gt;  387         name-&gt;nameRecords[i].encodingID = 1;
&gt;  388         name-&gt;nameRecords[i].languageID = 0x0409;
&gt;  389         name-&gt;nameRecords[i].offset = 0;
&gt;  390         name-&gt;nameRecords[i].length = fontName.length() * sizeof(UChar);
&gt;  391     }
&gt;  392 
&gt; 
&gt; This code is not legible.  Please make it more understandable to casual
&gt; readers.

The function is almost a clone of an existing function renameAndActivateFont(), except that renameFont() directly appends data to the source buffer, rather than activating it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>138253</commentid>
    <comment_count>27</comment_count>
      <attachid>34305</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-08-07 18:24:23 -0700</bug_when>
    <thetext>Comment on attachment 34305
pass unrecognized glyphs to GDI to handle

Clearing review flag on attachment: 34305

Committing to http://svn.webkit.org/repository/webkit/trunk ...
	M	WebCore/ChangeLog
	M	WebCore/platform/graphics/FontFastPath.cpp
Committed r46938
	M	WebCore/ChangeLog
	M	WebCore/platform/graphics/FontFastPath.cpp
r46938 = 49ec5481f262af6b17f440a371e3f48f35b49342 (trunk)
No changes between current HEAD and refs/remotes/trunk
Resetting to the latest refs/remotes/trunk
http://trac.webkit.org/changeset/46938</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>138254</commentid>
    <comment_count>28</comment_count>
      <attachid>34306</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-08-07 18:25:13 -0700</bug_when>
    <thetext>Comment on attachment 34306
store only width for GlyphAdvance, to save space on memory-constrained devices

Clearing review flag on attachment: 34306

Committing to http://svn.webkit.org/repository/webkit/trunk ...
	M	WebCore/ChangeLog
	M	WebCore/platform/graphics/GlyphBuffer.h
Committed r46939
	M	WebCore/ChangeLog
	M	WebCore/platform/graphics/GlyphBuffer.h
r46939 = 9d5648701aeec22afb43bc9ff38be1acd7fc2bd5 (trunk)
No changes between current HEAD and refs/remotes/trunk
Resetting to the latest refs/remotes/trunk
http://trac.webkit.org/changeset/46939</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>139577</commentid>
    <comment_count>29</comment_count>
      <attachid>34697</attachid>
    <who name="Joe Mason">joenotcharles</who>
    <bug_when>2009-08-12 15:08:21 -0700</bug_when>
    <thetext>Created attachment 34697
just replace the string of PLATFORM(FOO) defines

Let&apos;s get the easy one out of the way - this is just the STORE_FONT_CUSTOM_PLATFORM_DATA define (with an added explanatory comment).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>139732</commentid>
    <comment_count>30</comment_count>
      <attachid>34716</attachid>
    <who name="Joe Mason">joenotcharles</who>
    <bug_when>2009-08-12 22:49:08 -0700</bug_when>
    <thetext>Created attachment 34716
build fixes and minor bug fixes, with more comments

&gt; Are you sure that min&lt;int&gt; will compile on other platforms?  I feel like we&apos;ve
&gt; dealt with the min/max issue on windows before in other ways.  Please grep the
&gt; source to see how it&apos;s dealt with elsewhere.

The more common methods of dealing with the windows min/max macros won&apos;t work here because the two parameters to min have different types (int and UChar32), so Windows gives an error about ambiguous template parameters.  min&lt;int&gt; will definitely compile on other platforms (it&apos;s just giving the template parameter explicitly instead of letting the compiler work it out), but I changed the fix anyway because I felt it was clearer - now it explicitly casts the UChar32 to an int.

&gt; This needs a why comment:
&gt; 29 #if !PLATFORM(WINCE)
&gt; 227230     mutable SCRIPT_CACHE m_scriptCache;
&gt; 228231     mutable SCRIPT_FONTPROPERTIES* m_scriptFontProperties;
&gt; 229232 #endif
&gt; your note about it saving space in the ChangeLog is a fine comment, just put it
&gt; in teh soruce code too.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>139830</commentid>
    <comment_count>31</comment_count>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2009-08-13 06:57:43 -0700</bug_when>
    <thetext>Joe: you may want to edit &quot;details&quot; of your last upload and make it a &quot;patch&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>139850</commentid>
    <comment_count>32</comment_count>
      <attachid>34747</attachid>
    <who name="Joe Mason">joenotcharles</who>
    <bug_when>2009-08-13 08:40:31 -0700</bug_when>
    <thetext>Created attachment 34747
use shared buffer in custom font data (refactored)

I moved the shared code into a helper method, and removed some build fixes that are no longer necessary due to changes in Forward.h.  Now it&apos;s clear that all the code the Eric objected to was already in the existing function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141170</commentid>
    <comment_count>33</comment_count>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2009-08-18 12:43:23 -0700</bug_when>
    <thetext>PATCH: just replace the string of PLATFORM(FOO)

 landed @ 47441</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141217</commentid>
    <comment_count>34</comment_count>
      <attachid>34697</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-18 14:11:40 -0700</bug_when>
    <thetext>Comment on attachment 34697
just replace the string of PLATFORM(FOO) defines

Rejecting patch 34697 from commit-queue.  This patch will require manual commit.

Failed to run &quot;[&apos;git&apos;, &apos;svn&apos;, &apos;rebase&apos;]&quot;  exit_code: 1  cwd: None</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141238</commentid>
    <comment_count>35</comment_count>
      <attachid>34697</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-18 14:26:46 -0700</bug_when>
    <thetext>Comment on attachment 34697
just replace the string of PLATFORM(FOO) defines

Sorry, we hit https://bugs.webkit.org/show_bug.cgi?id=28436</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141246</commentid>
    <comment_count>36</comment_count>
      <attachid>34697</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-18 14:39:48 -0700</bug_when>
    <thetext>Comment on attachment 34697
just replace the string of PLATFORM(FOO) defines

Rejecting patch 34697 from commit-queue.  This patch will require manual commit.

Patch https://bugs.webkit.org/attachment.cgi?id=34697 from bug 27734 failed to download and apply.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141249</commentid>
    <comment_count>37</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-18 14:40:43 -0700</bug_when>
    <thetext>patching file WebCore/loader/CachedFont.cpp
Reversed (or previously applied) patch detected!  Assume -R? [n] 
Apply anyway? [n] 
Skipping patch.
6 out of 6 hunks ignored -- saving rejects to file WebCore/loader/CachedFont.cpp.rej
patch -p0 &quot;WebCore/loader/CachedFont.cpp&quot; returned 1.  Pass --force to ignore patch failures.
Logging in as eric@webkit.org...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141251</commentid>
    <comment_count>38</comment_count>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2009-08-18 14:41:37 -0700</bug_when>
    <thetext>(In reply to comment #37)
&gt; patching file WebCore/loader/CachedFont.cpp
&gt; Reversed (or previously applied) patch detected!  Assume -R? [n] 
&gt; Apply anyway? [n] 
&gt; Skipping patch.
&gt; 6 out of 6 hunks ignored -- saving rejects to file
&gt; WebCore/loader/CachedFont.cpp.rej
&gt; patch -p0 &quot;WebCore/loader/CachedFont.cpp&quot; returned 1.  Pass --force to ignore
&gt; patch failures.
&gt; Logging in as eric@webkit.org...

I&apos;ve landed it. see comment #33.

Sorry for not mentioning the patch number.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141254</commentid>
    <comment_count>39</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-18 14:43:08 -0700</bug_when>
    <thetext>(In reply to comment #38)
&gt; (In reply to comment #37)
&gt; &gt; patching file WebCore/loader/CachedFont.cpp
&gt; &gt; Reversed (or previously applied) patch detected!  Assume -R? [n] 
&gt; &gt; Apply anyway? [n] 
&gt; &gt; Skipping patch.
&gt; &gt; 6 out of 6 hunks ignored -- saving rejects to file
&gt; &gt; WebCore/loader/CachedFont.cpp.rej
&gt; &gt; patch -p0 &quot;WebCore/loader/CachedFont.cpp&quot; returned 1.  Pass --force to ignore
&gt; &gt; patch failures.
&gt; &gt; Logging in as eric@webkit.org...
&gt; 
&gt; I&apos;ve landed it. see comment #33.
&gt; 
&gt; Sorry for not mentioning the patch number.

Open bugs with r+ and cq+&apos;d patches will cause the commit-queue to try and land those patches. :)  Please clear the flags or close the bug after landing. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141258</commentid>
    <comment_count>40</comment_count>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2009-08-18 14:48:42 -0700</bug_when>
    <thetext>(In reply to comment #39)
&gt; (In reply to comment #38)
&gt; &gt; (In reply to comment #37)
&gt; &gt; &gt; patching file WebCore/loader/CachedFont.cpp
&gt; &gt; &gt; Reversed (or previously applied) patch detected!  Assume -R? [n] 
&gt; &gt; &gt; Apply anyway? [n] 
&gt; &gt; &gt; Skipping patch.
&gt; &gt; &gt; 6 out of 6 hunks ignored -- saving rejects to file
&gt; &gt; &gt; WebCore/loader/CachedFont.cpp.rej
&gt; &gt; &gt; patch -p0 &quot;WebCore/loader/CachedFont.cpp&quot; returned 1.  Pass --force to ignore
&gt; &gt; &gt; patch failures.
&gt; &gt; &gt; Logging in as eric@webkit.org...
&gt; &gt; 
&gt; &gt; I&apos;ve landed it. see comment #33.
&gt; &gt; 
&gt; &gt; Sorry for not mentioning the patch number.
&gt; 
&gt; Open bugs with r+ and cq+&apos;d patches will cause the commit-queue to try and land
&gt; those patches. :)  Please clear the flags or close the bug after landing. :)

seems I&apos;m not authorized for changing that. I should ask a reviewer to do that, though</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141272</commentid>
    <comment_count>41</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-18 15:08:52 -0700</bug_when>
    <thetext>Oh, you&apos;re able to clear flags.  You just can&apos;t set r+ or cq+.  Well, you can set them, it&apos;s just that the commit-queue will notice and remove them. :)

Now that you&apos;re a committer and have added yourself to:
http://trac.webkit.org/browser/trunk/WebKitTools/Scripts/modules/committers.py
you can set commit-queue+ on any patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141283</commentid>
    <comment_count>42</comment_count>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2009-08-18 15:17:24 -0700</bug_when>
    <thetext>(In reply to comment #41)
&gt; Oh, you&apos;re able to clear flags.  You just can&apos;t set r+ or cq+.  Well, you can
&gt; set them, it&apos;s just that the commit-queue will notice and remove them. :)
&gt; 
&gt; Now that you&apos;re a committer and have added yourself to:
&gt; http://trac.webkit.org/browser/trunk/WebKitTools/Scripts/modules/committers.py
&gt; you can set commit-queue+ on any patch.

actually I did try and failed. I guess it&apos;s because this time I&apos;m not the owner of the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141288</commentid>
    <comment_count>43</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-18 15:25:41 -0700</bug_when>
    <thetext>If I remember correctly, you tried setting r+ before.  You&apos;re not a reviewer.  You are a committer however, so you are allowed to set commit-queue+</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>142869</commentid>
    <comment_count>44</comment_count>
      <attachid>34697</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2009-08-26 09:37:30 -0700</bug_when>
    <thetext>Comment on attachment 34697
just replace the string of PLATFORM(FOO) defines

Clearing so this does not show up in the commit queue anymore.  This was landed already.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>142871</commentid>
    <comment_count>45</comment_count>
      <attachid>34697</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2009-08-26 09:38:41 -0700</bug_when>
    <thetext>Comment on attachment 34697
just replace the string of PLATFORM(FOO) defines

Clearing review/commit flags since already landed and it is showing up in the commit queue list.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144088</commentid>
    <comment_count>46</comment_count>
      <attachid>34716</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-09-01 18:26:08 -0700</bug_when>
    <thetext>Comment on attachment 34716
build fixes and minor bug fixes, with more comments

This patch appears correct.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144089</commentid>
    <comment_count>47</comment_count>
      <attachid>34747</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-09-01 18:28:13 -0700</bug_when>
    <thetext>Comment on attachment 34747
use shared buffer in custom font data (refactored)

This patch also appears correct.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144090</commentid>
    <comment_count>48</comment_count>
      <attachid>34716</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-01 18:29:01 -0700</bug_when>
    <thetext>Comment on attachment 34716
build fixes and minor bug fixes, with more comments

Rejecting patch 34716 from commit-queue.  This patch will require manual commit.

WebKitTools/Scripts/build-webkit failed with exit code 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144091</commentid>
    <comment_count>49</comment_count>
      <attachid>34747</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-01 18:29:17 -0700</bug_when>
    <thetext>Comment on attachment 34747
use shared buffer in custom font data (refactored)

Rejecting patch 34747 from commit-queue.  This patch will require manual commit.

Patch https://bugs.webkit.org/attachment.cgi?id=34747 from bug 27734 failed to download and apply.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144137</commentid>
    <comment_count>50</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-02 00:50:04 -0700</bug_when>
    <thetext>Build failed with the patch applied.  Sadly the commit-queue doesn&apos;t currently save build logs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144138</commentid>
    <comment_count>51</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-02 00:50:34 -0700</bug_when>
    <thetext>Hunk #1 FAILED at 27.
1 out of 1 hunk FAILED -- saving rejects to file WebCore/loader/CachedFont.cpp.rej
patch -p0 &quot;WebCore/loader/CachedFont.cpp&quot; returned 1.  Pass --force to ignore patch failures.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144233</commentid>
    <comment_count>52</comment_count>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2009-09-02 09:34:35 -0700</bug_when>
    <thetext>
Committed r47974
        M       WebCore/ChangeLog
        M       WebCore/platform/graphics/GlyphPageTreeNode.cpp
        M       WebCore/platform/graphics/SimpleFontData.cpp
        M       WebCore/platform/graphics/FontCache.h
        M       WebCore/platform/graphics/SimpleFontData.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144234</commentid>
    <comment_count>53</comment_count>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2009-09-02 09:39:25 -0700</bug_when>
    <thetext>Committed r47975
        M       WebCore/ChangeLog
        M       WebCore/platform/graphics/wince/FontCustomPlatformData.cpp
        M       WebCore/platform/graphics/wince/FontCustomPlatformData.h
        M       WebCore/platform/graphics/opentype/OpenTypeUtilities.cpp
        M       WebCore/platform/graphics/opentype/OpenTypeUtilities.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144237</commentid>
    <comment_count>54</comment_count>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2009-09-02 09:41:29 -0700</bug_when>
    <thetext>no pending patch. close it now</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>33569</attachid>
            <date>2009-07-27 14:18:59 -0700</date>
            <delta_ts>2009-08-04 06:59:52 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>27734.patch</filename>
            <type>text/plain</type>
            <size>17068</size>
            <attacher name="Yong Li">yong.li.webkit</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
Mjc5ZmZjNi4uNTk5ZjI2MyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTIsNiArMiwzNCBAQAogCiAgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgogCisgICAgICAgIFdJTkNFIFBPUlQ6IEZvbnQgcmVsYXRlZCBjaGFuZ2Vz
IChvbiBleGlzdGluZyBmaWxlcykKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTI3NzM0CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Lmg6
CisgICAgICAgIChXZWJDb3JlOjpGb250OjpzZXRMZXR0ZXJTcGFjaW5nKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9Gb250RmFzdFBhdGguY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udDo6Z2x5cGhEYXRhRm9y
Q2hhcmFjdGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HbHlwaEJ1ZmZlci5oOgor
ICAgICAgICAoV2ViQ29yZTo6R2x5cGhCdWZmZXI6OmFkdmFuY2VBdCk6CisgICAgICAgIChXZWJD
b3JlOjpHbHlwaEJ1ZmZlcjo6YWR2YW5jZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6R2x5cGhC
dWZmZXI6OmFkZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhQYWdlVHJlZU5v
ZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R2x5cGhQYWdlVHJlZU5vZGU6OmluaXRpYWxpemVQ
YWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9TaW1wbGVGb250RGF0YS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTaW1wbGVGb250RGF0YTo6U2ltcGxlRm9udERhdGEpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL1NpbXBsZUZvbnREYXRhLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6cmVuYW1lRm9udCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUv
T3BlblR5cGVVdGlsaXRpZXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9G
b250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNldEN1c3RvbUZv
bnRDYWNoZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvRm9udEN1c3RvbVBs
YXRmb3JtRGF0YS5oOgorCisyMDA5LTA3LTI3ICBZb25nIExpICA8eW9uZy5saUB0b3JjaG1vYmls
ZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKICAgICAgICAg
V0lOQ0UgUE9SVDogQWRkIFdlYkNvcmUvcGFnZS93aW5jZS9GcmFtZVdpbmNlLmNwcAogICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjc3MjkKICAgICAgICAg
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaCBiL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCmluZGV4IGMwNjcwNzEuLmQ4NDcxYWUgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCisrKyBiL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRm9udC5oCkBAIC00LDYgKzQsNyBAQAogICogICAgICAgICAgIChDKSAyMDAw
IERpcmsgTXVlbGxlciAobXVlbGxlckBrZGUub3JnKQogICogQ29weXJpZ2h0IChDKSAyMDAzLCAy
MDA2LCAyMDA3IEFwcGxlIENvbXB1dGVyLCBJbmMuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggSG9s
Z2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIKKyAqIENvcHlyaWdodCAoQykgMjAwOCBUb3JjaCBNb2Jp
bGUsIEluYy4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtOTAsNyArOTEsMTIgQEAgcHVibGljOgog
ICAgIHNob3J0IHdvcmRTcGFjaW5nKCkgY29uc3QgeyByZXR1cm4gbV93b3JkU3BhY2luZzsgfQog
ICAgIHNob3J0IGxldHRlclNwYWNpbmcoKSBjb25zdCB7IHJldHVybiBtX2xldHRlclNwYWNpbmc7
IH0KICAgICB2b2lkIHNldFdvcmRTcGFjaW5nKHNob3J0IHMpIHsgbV93b3JkU3BhY2luZyA9IHM7
IH0KKyNpZiBQTEFURk9STShXSU5DRSkKKyAgICAvLyBXZSBkbyBub3Qgc3VwcG9ydCBuZWdhdGl2
ZSBsZXR0ZXIgc3BhY2luZy4KKyAgICB2b2lkIHNldExldHRlclNwYWNpbmcoc2hvcnQgcykgeyBt
X2xldHRlclNwYWNpbmcgPSBzID4gMCA/IHMgOiAwOyB9CisjZWxzZQogICAgIHZvaWQgc2V0TGV0
dGVyU3BhY2luZyhzaG9ydCBzKSB7IG1fbGV0dGVyU3BhY2luZyA9IHM7IH0KKyNlbmRpZgogICAg
IGJvb2wgaXNGaXhlZFBpdGNoKCkgY29uc3Q7CiAgICAgYm9vbCBpc1ByaW50ZXJGb250KCkgY29u
c3QgeyByZXR1cm4gbV9mb250RGVzY3JpcHRpb24udXNlUHJpbnRlckZvbnQoKTsgfQogICAgIApk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaCBiL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmgKaW5kZXggM2MwZjJkOS4uNWI4OGJhOCAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaAorKysgYi9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oCkBAIC0xLDUgKzEsNiBAQAogLyoK
ICAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwOCBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNy0yMDA4IFRvcmNoIE1vYmlsZSwg
SW5jLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02Myw3ICs2NCwxNSBAQCBw
dWJsaWM6CiAgICAgLy8gQWxzbyBpbXBsZW1lbnRlZCBieSB0aGUgcGxhdGZvcm0uCiAgICAgdm9p
ZCBwbGF0Zm9ybUluaXQoKTsKIAotI2lmIFBMQVRGT1JNKFdJTikKKyNpZiBQTEFURk9STShXSU5D
RSkKKyNpZiBkZWZpbmVkKElNTEFOR19GT05UX0xJTkspICYmIChJTUxBTkdfRk9OVF9MSU5LID09
IDIpCisgICAgSU1MYW5nRm9udExpbmsyKiBnZXRGb250TGlua0ludGVyZmFjZSgpOworI2Vsc2UK
KyAgICBJTUxhbmdGb250TGluayogZ2V0Rm9udExpbmtJbnRlcmZhY2UoKTsKKyNlbmRpZgorICAg
IHN0YXRpYyB2b2lkIGNvbUluaXRpYWxpemUoKTsKKyAgICBzdGF0aWMgdm9pZCBjb21VbmluaXRp
YWxpemUoKTsKKyNlbGlmIFBMQVRGT1JNKFdJTikKICAgICBJTUxhbmdGb250TGluazIqIGdldEZv
bnRMaW5rSW50ZXJmYWNlKCk7CiAjZW5kaWYKIApAQCAtOTMsNiArMTAyLDkgQEAgcHJpdmF0ZToK
IAogICAgIGZyaWVuZCBjbGFzcyBTaW1wbGVGb250RGF0YTsKICAgICBmcmllbmQgY2xhc3MgRm9u
dEZhbGxiYWNrTGlzdDsKKyNpZiBQTEFURk9STShXSU5DRSkKKyAgICBmcmllbmQgY2xhc3MgRm9u
dDsKKyNlbmRpZgogfTsKIAogLy8gR2V0IHRoZSBnbG9iYWwgZm9udENhY2hlLgpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250RmFzdFBhdGguY3BwIGIvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb250RmFzdFBhdGguY3BwCmluZGV4IDc0YjdlYzEuLmRjMGY4NzEg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEZhc3RQYXRoLmNwcAor
KysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRGYXN0UGF0aC5jcHAKQEAgLTEsNiAr
MSw3IEBACiAvKioKICAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNiBBcHBsZSBDb21wdXRlciwg
SW5jLgogICogQ29weXJpZ2h0IChDKSAyMDA4IEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVyCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDkgVG9yY2ggTW9iaWxlLCBJbmMuCiAgKgogICogVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICog
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKQEAgLTE1NSw4ICsxNTYsMTQgQEAgR2x5cGhEYXRhIEZvbnQ6OmdseXBoRGF0YUZvckNoYXJh
Y3RlcihVQ2hhcjMyIGMsIGJvb2wgbWlycm9yLCBib29sIGZvcmNlU21hbGxDYXAKICAgICAgICAg
R2x5cGhQYWdlKiBmYWxsYmFja1BhZ2UgPSBHbHlwaFBhZ2VUcmVlTm9kZTo6Z2V0Um9vdENoaWxk
KGNoYXJhY3RlckZvbnREYXRhLCBwYWdlTnVtYmVyKS0+cGFnZSgpOwogICAgICAgICBHbHlwaERh
dGEgZGF0YSA9IGZhbGxiYWNrUGFnZSAmJiBmYWxsYmFja1BhZ2UtPmZvbnREYXRhRm9yQ2hhcmFj
dGVyKGMpID8gZmFsbGJhY2tQYWdlLT5nbHlwaERhdGFGb3JDaGFyYWN0ZXIoYykgOiBjaGFyYWN0
ZXJGb250RGF0YS0+bWlzc2luZ0dseXBoRGF0YSgpOwogICAgICAgICAvLyBDYWNoZSBpdCBzbyB3
ZSBkb24ndCBoYXZlIHRvIGRvIHN5c3RlbSBmYWxsYmFjayBhZ2FpbiBuZXh0IHRpbWUuCi0gICAg
ICAgIGlmICghdXNlU21hbGxDYXBzRm9udCkKKyAgICAgICAgaWYgKCF1c2VTbWFsbENhcHNGb250
KSB7CisjaWYgUExBVEZPUk0oV0lOQ0UpCisgICAgICAgICAgICBwYWdlLT5zZXRHbHlwaERhdGFG
b3JDaGFyYWN0ZXIoYywgYywgY2hhcmFjdGVyRm9udERhdGEpOworICAgICAgICAgICAgcmV0dXJu
IHBhZ2UtPmdseXBoRGF0YUZvckNoYXJhY3RlcihjKTsKKyNlbHNlCiAgICAgICAgICAgICBwYWdl
LT5zZXRHbHlwaERhdGFGb3JDaGFyYWN0ZXIoYywgZGF0YS5nbHlwaCwgZGF0YS5mb250RGF0YSk7
CisjZW5kaWYKKyAgICAgICAgfQogICAgICAgICByZXR1cm4gZGF0YTsKICAgICB9CiAKQEAgLTE2
NCw3ICsxNzEsMTQgQEAgR2x5cGhEYXRhIEZvbnQ6OmdseXBoRGF0YUZvckNoYXJhY3RlcihVQ2hh
cjMyIGMsIGJvb2wgbWlycm9yLCBib29sIGZvcmNlU21hbGxDYXAKICAgICAvLyBGSVhNRTogSXQg
d291bGQgYmUgbmljZXIgdG8gdXNlIHRoZSBtaXNzaW5nIGdseXBoIGZyb20gdGhlIGxhc3QgcmVz
b3J0IGZvbnQgaW5zdGVhZC4KICAgICBHbHlwaERhdGEgZGF0YSA9IHByaW1hcnlGb250KCktPm1p
c3NpbmdHbHlwaERhdGEoKTsKICAgICBpZiAoIXVzZVNtYWxsQ2Fwc0ZvbnQpCisjaWYgUExBVEZP
Uk0oV0lOQ0UpCisgICAgeworICAgICAgICBwYWdlLT5zZXRHbHlwaERhdGFGb3JDaGFyYWN0ZXIo
YywgYywgZGF0YS5mb250RGF0YSk7CisgICAgICAgIHJldHVybiBwYWdlLT5nbHlwaERhdGFGb3JD
aGFyYWN0ZXIoYyk7CisgICAgfQorI2Vsc2UKICAgICAgICAgcGFnZS0+c2V0R2x5cGhEYXRhRm9y
Q2hhcmFjdGVyKGMsIGRhdGEuZ2x5cGgsIGRhdGEuZm9udERhdGEpOworI2VuZGlmCiAgICAgcmV0
dXJuIGRhdGE7CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5
cGhCdWZmZXIuaCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhCdWZmZXIuaAppbmRl
eCBkY2RhNDE5Li43OGQyOTNlIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dseXBoQnVmZmVyLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlwaEJ1ZmZl
ci5oCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAwOCBU
b3JjaCBNb2JpbGUgSW5jLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00OSw2
ICs1MCw4IEBAIGNsYXNzIFNpbXBsZUZvbnREYXRhOwogI2lmIFBMQVRGT1JNKENBSVJPKQogLy8g
RklYTUU6IFdoeSBkb2VzIENhaXJvIHVzZSBzdWNoIGEgaHVnZSBzdHJ1Y3QgaW5zdGVhZCBvZiBq
dXN0IGFuIG9mZnNldCBpbnRvIGFuIGFycmF5PwogdHlwZWRlZiBjYWlyb19nbHlwaF90IEdseXBo
QnVmZmVyR2x5cGg7CisjZWxpZiBQTEFURk9STShXSU5DRSkKK3R5cGVkZWYgd2NoYXJfdCBHbHlw
aEJ1ZmZlckdseXBoOwogI2Vsc2UKIHR5cGVkZWYgR2x5cGggR2x5cGhCdWZmZXJHbHlwaDsKICNl
bmRpZgpAQCAtNTcsNiArNjAsOCBAQCB0eXBlZGVmIEdseXBoIEdseXBoQnVmZmVyR2x5cGg7CiAv
LyBjYW4gYmUgcGFzc2VkIGRpcmVjdGx5IHRvIENHQ29udGV4dFNob3dHbHlwaHNXaXRoQWR2YW5j
ZXMgaW4gRm9udE1hYy5tbQogI2lmIFBMQVRGT1JNKENHKQogdHlwZWRlZiBDR1NpemUgR2x5cGhC
dWZmZXJBZHZhbmNlOworI2VsaWYgUExBVEZPUk0oV0lOQ0UpCit0eXBlZGVmIGZsb2F0IEdseXBo
QnVmZmVyQWR2YW5jZTsKICNlbHNlCiB0eXBlZGVmIEZsb2F0U2l6ZSBHbHlwaEJ1ZmZlckFkdmFu
Y2U7CiAjZW5kaWYKQEAgLTExNywxMSArMTIyLDIwIEBAIHB1YmxpYzoKICAgICB7CiAjaWYgUExB
VEZPUk0oQ0cpCiAgICAgICAgIHJldHVybiBtX2FkdmFuY2VzW2luZGV4XS53aWR0aDsKKyNlbGlm
IFBMQVRGT1JNKFdJTkNFKQorICAgICAgICByZXR1cm4gbV9hZHZhbmNlc1tpbmRleF07CiAjZWxz
ZQogICAgICAgICByZXR1cm4gbV9hZHZhbmNlc1tpbmRleF0ud2lkdGgoKTsKICNlbmRpZgogICAg
IH0KIAorI2lmIFBMQVRGT1JNKFdJTkNFKQorICAgIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSog
YWR2YW5jZURhdGEoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYWR2YW5jZXMuZGF0
YSgpOworICAgIH0KKyNlbmRpZgorICAgIAogICAgIEZsb2F0U2l6ZSBvZmZzZXRBdChpbnQgaW5k
ZXgpIGNvbnN0CiAgICAgewogI2lmIFBMQVRGT1JNKFdJTikKQEAgLTE0Nyw2ICsxNjEsOCBAQCBw
dWJsaWM6CiAjaWYgUExBVEZPUk0oQ0cpCiAgICAgICAgIENHU2l6ZSBhZHZhbmNlID0geyB3aWR0
aCwgMCB9OwogICAgICAgICBtX2FkdmFuY2VzLmFwcGVuZChhZHZhbmNlKTsKKyNlbGlmIFBMQVRG
T1JNKFdJTkNFKQorICAgICAgICBtX2FkdmFuY2VzLmFwcGVuZCh3aWR0aCk7CiAjZWxzZQogICAg
ICAgICBtX2FkdmFuY2VzLmFwcGVuZChGbG9hdFNpemUod2lkdGgsIDApKTsKICNlbmRpZgpAQCAt
MTYxLDYgKzE3Nyw3IEBAIHB1YmxpYzoKICNlbmRpZgogICAgIH0KICAgICAKKyNpZiAhUExBVEZP
Uk0oV0lOQ0UpCiAgICAgdm9pZCBhZGQoR2x5cGggZ2x5cGgsIGNvbnN0IFNpbXBsZUZvbnREYXRh
KiBmb250LCBHbHlwaEJ1ZmZlckFkdmFuY2UgYWR2YW5jZSkKICAgICB7CiAgICAgICAgIG1fZm9u
dERhdGEuYXBwZW5kKGZvbnQpOwpAQCAtMTc0LDYgKzE5MSw3IEBAIHB1YmxpYzoKIAogICAgICAg
ICBtX2FkdmFuY2VzLmFwcGVuZChhZHZhbmNlKTsKICAgICB9CisjZW5kaWYKICAgICAKIHByaXZh
dGU6CiAgICAgVmVjdG9yPGNvbnN0IFNpbXBsZUZvbnREYXRhKiwgMjA0OD4gbV9mb250RGF0YTsK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhQYWdlVHJlZU5vZGUu
Y3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlwaFBhZ2VUcmVlTm9kZS5jcHAKaW5k
ZXggYTM0YTE5Mi4uMGI2MWRkMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HbHlwaFBhZ2VUcmVlTm9kZS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
bHlwaFBhZ2VUcmVlTm9kZS5jcHAKQEAgLTIwMSw4ICsyMDEsOCBAQCB2b2lkIEdseXBoUGFnZVRy
ZWVOb2RlOjppbml0aWFsaXplUGFnZShjb25zdCBGb250RGF0YSogZm9udERhdGEsIHVuc2lnbmVk
IHBhZ2VOdQogICAgICAgICAgICAgICAgIEdseXBoUGFnZSogcGFnZVRvRmlsbCA9IG1fcGFnZS5n
ZXQoKTsKICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtUmFuZ2Vz
OyBpKyspIHsKICAgICAgICAgICAgICAgICAgICAgY29uc3QgRm9udERhdGFSYW5nZSYgcmFuZ2Ug
PSBzZWdtZW50ZWRGb250RGF0YS0+cmFuZ2VBdChpKTsKLSAgICAgICAgICAgICAgICAgICAgaW50
IGZyb20gPSBtYXgoMCwgcmFuZ2UuZnJvbSgpIC0gc3RhdGljX2Nhc3Q8aW50PihzdGFydCkpOwot
ICAgICAgICAgICAgICAgICAgICBpbnQgdG8gPSAxICsgbWluKHJhbmdlLnRvKCkgLSBzdGF0aWNf
Y2FzdDxpbnQ+KHN0YXJ0KSwgc3RhdGljX2Nhc3Q8aW50PihHbHlwaFBhZ2U6OnNpemUpIC0gMSk7
CisgICAgICAgICAgICAgICAgICAgIGludCBmcm9tID0gbWF4PGludD4oMCwgcmFuZ2UuZnJvbSgp
IC0gc3RhdGljX2Nhc3Q8aW50PihzdGFydCkpOworICAgICAgICAgICAgICAgICAgICBpbnQgdG8g
PSAxICsgbWluPGludD4ocmFuZ2UudG8oKSAtIHN0YXRpY19jYXN0PGludD4oc3RhcnQpLCBzdGF0
aWNfY2FzdDxpbnQ+KEdseXBoUGFnZTo6c2l6ZSkgLSAxKTsKICAgICAgICAgICAgICAgICAgICAg
aWYgKGZyb20gPCBzdGF0aWNfY2FzdDxpbnQ+KEdseXBoUGFnZTo6c2l6ZSkgJiYgdG8gPiAwKSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaGF2ZUdseXBocyAmJiAhc2NyYXRjaFBhZ2Up
IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JhdGNoUGFnZSA9IEdseXBoUGFnZTo6
Y3JlYXRlKHRoaXMpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaW1w
bGVGb250RGF0YS5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NpbXBsZUZvbnREYXRh
LmNwcAppbmRleCBiYWI3ZDk5Li5lNGU2Nzg2IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1NpbXBsZUZvbnREYXRhLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1NpbXBsZUZvbnREYXRhLmNwcApAQCAtNTcsNiArNTcsOCBAQCBTaW1wbGVGb250RGF0YTo6
U2ltcGxlRm9udERhdGEoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgZiwgYm9vbCBjdXN0b21Gb250
LCBib29sCiAgICAgLCBtX2lzQ3VzdG9tRm9udChjdXN0b21Gb250KQogICAgICwgbV9pc0xvYWRp
bmcobG9hZGluZykKICAgICAsIG1fc21hbGxDYXBzRm9udERhdGEoMCkKKyAgICAsIG1fYXZnQ2hh
cldpZHRoKC0xKQorICAgICwgbV9tYXhDaGFyV2lkdGgoLTEpCiB7CiAjaWYgIUVOQUJMRShTVkdf
Rk9OVFMpCiAgICAgVU5VU0VEX1BBUkFNKHN2Z0ZvbnREYXRhKTsKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2ltcGxlRm9udERhdGEuaCBiL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvU2ltcGxlRm9udERhdGEuaAppbmRleCBhYWI2NDI5Li4wNGRlOThjIDEwMDY0NAot
LS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NpbXBsZUZvbnREYXRhLmgKKysrIGIvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaW1wbGVGb250RGF0YS5oCkBAIC0yLDYgKzIsNyBAQAog
ICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIGludGVybmFsIGZvbnQgaW1wbGVtZW50YXRpb24u
CiAgKgogICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNy0yMDA4IFRvcmNoIE1vYmlsZSwgSW5jLgog
ICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCkBAIC0zMyw3ICszNCw3IEBACiB0eXBlZGVmIHN0cnVjdCBPcGFx
dWVBVFNVU3R5bGUqIEFUU1VTdHlsZTsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oV0lOKQorI2lm
IFBMQVRGT1JNKFdJTikgJiYgIVBMQVRGT1JNKFdJTkNFKQogI2luY2x1ZGUgPHVzcDEwLmg+CiAj
ZW5kaWYKIApAQCAtMTMwLDkgKzEzMSwxMCBAQCBwdWJsaWM6CiAKICNpZiBQTEFURk9STShXSU4p
CiAgICAgYm9vbCBpc1N5c3RlbUZvbnQoKSBjb25zdCB7IHJldHVybiBtX2lzU3lzdGVtRm9udDsg
fQorI2lmICFQTEFURk9STShXSU5DRSkKICAgICBTQ1JJUFRfRk9OVFBST1BFUlRJRVMqIHNjcmlw
dEZvbnRQcm9wZXJ0aWVzKCkgY29uc3Q7CiAgICAgU0NSSVBUX0NBQ0hFKiBzY3JpcHRDYWNoZSgp
IGNvbnN0IHsgcmV0dXJuICZtX3NjcmlwdENhY2hlOyB9Ci0KKyNlbmRpZgogICAgIHN0YXRpYyB2
b2lkIHNldFNob3VsZEFwcGx5TWFjQXNjZW50SGFjayhib29sKTsKICAgICBzdGF0aWMgYm9vbCBz
aG91bGRBcHBseU1hY0FzY2VudEhhY2soKTsKICNlbmRpZgpAQCAtMTU1LDcgKzE1Nyw3IEBAIHBy
aXZhdGU6CiAKICAgICB2b2lkIGNvbW1vbkluaXQoKTsKIAotI2lmIFBMQVRGT1JNKFdJTikKKyNp
ZiBQTEFURk9STShXSU4pICYmICFQTEFURk9STShXSU5DRSkKICAgICB2b2lkIGluaXRHRElGb250
KCk7CiAgICAgdm9pZCBwbGF0Zm9ybUNvbW1vbkRlc3Ryb3koKTsKICAgICBmbG9hdCB3aWR0aEZv
ckdESUdseXBoKEdseXBoIGdseXBoKSBjb25zdDsKQEAgLTIyMCw5ICsyMjIsMTEgQEAgcHJpdmF0
ZToKIAogI2lmIFBMQVRGT1JNKFdJTikKICAgICBib29sIG1faXNTeXN0ZW1Gb250OworI2lmICFQ
TEFURk9STShXSU5DRSkKICAgICBtdXRhYmxlIFNDUklQVF9DQUNIRSBtX3NjcmlwdENhY2hlOwog
ICAgIG11dGFibGUgU0NSSVBUX0ZPTlRQUk9QRVJUSUVTKiBtX3NjcmlwdEZvbnRQcm9wZXJ0aWVz
OwogI2VuZGlmCisjZW5kaWYKIH07CiAgICAgCiAgICAgCmRpZmYgLS1naXQgYS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcCBiL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwCmluZGV4IDg5
NTg4N2YuLmNkYzRmZGYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwCkBAIC0xLDUgKzEsNiBAQAogLyoKICAq
IENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDA5IFRvcmNoIE1vYmlsZSwgSW5jLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC02OSw3ICs3MCwxMCBAQCBzdHJ1Y3QgVGFibGVEaXJlY3Rv
cnlFbnRyeSB7CiAgICAgQmlnRW5kaWFuVUxvbmcgbGVuZ3RoOwogfTsKIAotI2lmICFQTEFURk9S
TShDRykKKyNpZiBQTEFURk9STShXSU5DRSkKKy8vIE5lZWQgdG8gdXNlICNkZWZpbmUgaW5zdGVh
ZCBvZiB0eXBlZGVmIGR1ZSB0byBjb25mbGljdAorI2RlZmluZSBGaXhlZCBpbnQzMl90CisjZWxp
ZiAhUExBVEZPUk0oQ0cpCiAvLyBGaXhlZCB0eXBlIGlzIG5vdCBkZWZpbmVkIG9uIG5vbi1DRyBw
bGF0Zm9ybXMuIHx2ZXJzaW9ufCBpbiBzZm50SGVhZGVyCiAvLyBhbmQgaGVhZFRhYmxlIGFuZCB8
Zm9udFJldmlzaW9ufCBpbiBoZWFkVGFibGUgYXJlIG9mIEZpeGVkLCBidXQgdGhleSdyZQogLy8g
bm90IGFjdHVhbGx5IHJlZmVyZWQgdG8gYW55d2hlcmUuIFRoZXJlZm9yZSwgd2UganVzdCBoYXZl
IHRvIG1hdGNoCkBAIC0zMzksNiArMzQzLDczIEBAIGJvb2wgZ2V0RU9USGVhZGVyKFNoYXJlZEJ1
ZmZlciogZm9udERhdGEsIEVPVEhlYWRlciYgZW90SGVhZGVyLCBzaXplX3QmIG92ZXJsYXlECiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKKyNpZiBQTEFURk9STShXSU5DRSkKK2Jvb2wgcmVuYW1lRm9u
dChTaGFyZWRCdWZmZXIqIGZvbnREYXRhLCBjb25zdCBTdHJpbmcmIGZvbnROYW1lKQoreworICAg
IHNpemVfdCBvcmlnaW5hbERhdGFTaXplID0gZm9udERhdGEtPnNpemUoKTsKKyAgICBpZiAob3Jp
Z2luYWxEYXRhU2l6ZSA8IG9mZnNldG9mKHNmbnRIZWFkZXIsIHRhYmxlcykpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIGNvbnN0IHNmbnRIZWFkZXIqIHNmbnQgPSByZWludGVycHJldF9j
YXN0PGNvbnN0IHNmbnRIZWFkZXIqPihmb250RGF0YS0+ZGF0YSgpKTsKKworICAgIGlmIChvcmln
aW5hbERhdGFTaXplIDwgb2Zmc2V0b2Yoc2ZudEhlYWRlciwgdGFibGVzKSArIHNmbnQtPm51bVRh
YmxlcyAqIHNpemVvZihUYWJsZURpcmVjdG9yeUVudHJ5KSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgdW5zaWduZWQgdDsKKyAgICBmb3IgKHQgPSAwOyB0IDwgc2ZudC0+bnVtVGFibGVz
OyArK3QpIHsKKyAgICAgICAgaWYgKHNmbnQtPnRhYmxlc1t0XS50YWcgPT0gJ25hbWUnKQorICAg
ICAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGlmICh0ID09IHNmbnQtPm51bVRhYmxlcykKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgY29uc3QgaW50IG5hbWVSZWNvcmRDb3VudCA9IDU7
CisKKyAgICAvLyBSb3VuZGVkIHVwIHRvIGEgbXVsdGlwbGUgb2YgNCB0byBzaW1wbGlmeSB0aGUg
Y2hlY2tzdW0gY2FsY3VsYXRpb24uCisgICAgc2l6ZV90IG5hbWVUYWJsZVNpemUgPSAoKG9mZnNl
dG9mKG5hbWVUYWJsZSwgbmFtZVJlY29yZHMpICsgbmFtZVJlY29yZENvdW50ICogc2l6ZW9mKG5h
bWVSZWNvcmQpICsgZm9udE5hbWUubGVuZ3RoKCkgKiBzaXplb2YoVUNoYXIpKSAmIH4zKSArIDQ7
CisKKyAgICBWZWN0b3I8Y2hhcj4gcmV3cml0dGVuRm9udERhdGEoZm9udERhdGEtPnNpemUoKSAr
IG5hbWVUYWJsZVNpemUpOworICAgIGNoYXIqIGRhdGEgPSByZXdyaXR0ZW5Gb250RGF0YS5kYXRh
KCk7CisgICAgbWVtY3B5KGRhdGEsIGZvbnREYXRhLT5kYXRhKCksIG9yaWdpbmFsRGF0YVNpemUp
OworCisgICAgLy8gTWFrZSB0aGUgdGFibGUgZGlyZWN0b3J5IGVudHJ5IHBvaW50IHRvIHRoZSBu
ZXcgJ25hbWUnIHRhYmxlLgorICAgIHNmbnRIZWFkZXIqIHJld3JpdHRlblNmbnQgPSByZWludGVy
cHJldF9jYXN0PHNmbnRIZWFkZXIqPihkYXRhKTsKKyAgICByZXdyaXR0ZW5TZm50LT50YWJsZXNb
dF0ubGVuZ3RoID0gbmFtZVRhYmxlU2l6ZTsKKyAgICByZXdyaXR0ZW5TZm50LT50YWJsZXNbdF0u
b2Zmc2V0ID0gb3JpZ2luYWxEYXRhU2l6ZTsKKworICAgIC8vIFdyaXRlIHRoZSBuZXcgJ25hbWUn
IHRhYmxlIGFmdGVyIHRoZSBvcmlnaW5hbCBmb250IGRhdGEuCisgICAgbmFtZVRhYmxlKiBuYW1l
ID0gcmVpbnRlcnByZXRfY2FzdDxuYW1lVGFibGUqPihkYXRhICsgb3JpZ2luYWxEYXRhU2l6ZSk7
CisgICAgbmFtZS0+Zm9ybWF0ID0gMDsKKyAgICBuYW1lLT5jb3VudCA9IG5hbWVSZWNvcmRDb3Vu
dDsKKyAgICBuYW1lLT5zdHJpbmdPZmZzZXQgPSBvZmZzZXRvZihuYW1lVGFibGUsIG5hbWVSZWNv
cmRzKSArIG5hbWVSZWNvcmRDb3VudCAqIHNpemVvZihuYW1lUmVjb3JkKTsKKyAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbmFtZVJlY29yZENvdW50OyArK2kpIHsKKyAgICAgICAgbmFtZS0+
bmFtZVJlY29yZHNbaV0ucGxhdGZvcm1JRCA9IDM7CisgICAgICAgIG5hbWUtPm5hbWVSZWNvcmRz
W2ldLmVuY29kaW5nSUQgPSAxOworICAgICAgICBuYW1lLT5uYW1lUmVjb3Jkc1tpXS5sYW5ndWFn
ZUlEID0gMHgwNDA5OworICAgICAgICBuYW1lLT5uYW1lUmVjb3Jkc1tpXS5vZmZzZXQgPSAwOwor
ICAgICAgICBuYW1lLT5uYW1lUmVjb3Jkc1tpXS5sZW5ndGggPSBmb250TmFtZS5sZW5ndGgoKSAq
IHNpemVvZihVQ2hhcik7CisgICAgfQorCisgICAgLy8gVGhlIHJlcXVpcmVkICduYW1lJyByZWNv
cmQgdHlwZXM6IEZhbWlseSwgU3R5bGUsIFVuaXF1ZSwgRnVsbCBhbmQgUG9zdFNjcmlwdC4KKyAg
ICBuYW1lLT5uYW1lUmVjb3Jkc1swXS5uYW1lSUQgPSAxOworICAgIG5hbWUtPm5hbWVSZWNvcmRz
WzFdLm5hbWVJRCA9IDI7CisgICAgbmFtZS0+bmFtZVJlY29yZHNbMl0ubmFtZUlEID0gMzsKKyAg
ICBuYW1lLT5uYW1lUmVjb3Jkc1szXS5uYW1lSUQgPSA0OworICAgIG5hbWUtPm5hbWVSZWNvcmRz
WzRdLm5hbWVJRCA9IDY7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZm9udE5hbWUu
bGVuZ3RoKCk7ICsraSkKKyAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxCaWdFbmRpYW5VU2hvcnQq
PihkYXRhICsgb3JpZ2luYWxEYXRhU2l6ZSArIG5hbWUtPnN0cmluZ09mZnNldClbaV0gPSBmb250
TmFtZVtpXTsKKworICAgIC8vIFVwZGF0ZSB0aGUgdGFibGUgY2hlY2tzdW0gaW4gdGhlIGRpcmVj
dG9yeSBlbnRyeS4KKyAgICByZXdyaXR0ZW5TZm50LT50YWJsZXNbdF0uY2hlY2tTdW0gPSAwOwor
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgKiBzaXplb2YoQmlnRW5kaWFuVUxvbmcpIDwgbmFt
ZVRhYmxlU2l6ZTsgKytpKQorICAgICAgICByZXdyaXR0ZW5TZm50LT50YWJsZXNbdF0uY2hlY2tT
dW0gPSByZXdyaXR0ZW5TZm50LT50YWJsZXNbdF0uY2hlY2tTdW0gKyByZWludGVycHJldF9jYXN0
PEJpZ0VuZGlhblVMb25nKj4obmFtZSlbaV07CisKKyAgICBmb250RGF0YS0+Y2xlYXIoKTsKKyAg
ICBmb250RGF0YS0+YXBwZW5kKHJld3JpdHRlbkZvbnREYXRhLmRhdGEoKSwgcmV3cml0dGVuRm9u
dERhdGEuc2l6ZSgpKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKyNlbHNlCiBIQU5ETEUgcmVuYW1l
QW5kQWN0aXZhdGVGb250KFNoYXJlZEJ1ZmZlciogZm9udERhdGEsIGNvbnN0IFN0cmluZyYgZm9u
dE5hbWUpCiB7CiAgICAgc2l6ZV90IG9yaWdpbmFsRGF0YVNpemUgPSBmb250RGF0YS0+c2l6ZSgp
OwpAQCAtNDA0LDUgKzQ3NSw4IEBAIEhBTkRMRSByZW5hbWVBbmRBY3RpdmF0ZUZvbnQoU2hhcmVk
QnVmZmVyKiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBmb250TmFtZSkKIAogICAgIHJldHVybiBm
b250SGFuZGxlOwogfQorI2VuZGlmCisKKyNlbmRpZgogCiB9CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmggYi9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmgKaW5kZXggMTNk
YWQ2Zi4uMTdkN2QyYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
dHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuaApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAwOSBUb3JjaCBNb2JpbGUsIEluYy4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMjcsNyArMjgsOSBAQAogI2RlZmluZSBPcGVuVHlwZVV0aWxpdGll
c19oCiAKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2lmICFQTEFURk9STShXSU5DRSkK
ICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IApAQCAtMzUsNiArMzgsMTAgQEAgc3RydWN0IEJpZ0VuZGlhblVTaG9ydDsKIHN0cnVjdCBFT1RQ
cmVmaXg7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiAKKyNpZiBQTEFURk9STShXSU5DRSkKK3R5cGVk
ZWYgdW5zaWduZWQgX19pbnQ4IFVJbnQ4OworI2VuZGlmCisKIHN0cnVjdCBFT1RIZWFkZXIgewog
ICAgIEVPVEhlYWRlcigpOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbmNlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW5jZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAppbmRleCA3YzY4NTNjLi45NDBk
ZDRmIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0ZvbnRDdXN0
b21QbGF0Zm9ybURhdGEuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2Uv
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKQEAgLTMzLDYgKzMzLDExIEBAIHN0YXRpYyBDdXN0
b21Gb250Q2FjaGUqIGdfY3VzdG9tRm9udENhY2hlID0gMDsKIAogYm9vbCByZW5hbWVGb250KFNo
YXJlZEJ1ZmZlciogZm9udERhdGEsIGNvbnN0IFN0cmluZyYgZm9udE5hbWUpOwogCit2b2lkIHNl
dEN1c3RvbUZvbnRDYWNoZShDdXN0b21Gb250Q2FjaGUqIGNhY2hlKQoreworICAgIGdfY3VzdG9t
Rm9udENhY2hlID0gY2FjaGU7Cit9CisKIEZvbnRDdXN0b21QbGF0Zm9ybURhdGE6On5Gb250Q3Vz
dG9tUGxhdGZvcm1EYXRhKCkKIHsKICAgICBpZiAoZ19jdXN0b21Gb250Q2FjaGUgJiYgIW1fbmFt
ZS5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNl
L0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
Y2UvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCmluZGV4IGIxZjY0YTAuLmVjMjViNzAgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YS5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvRm9udEN1c3RvbVBs
YXRmb3JtRGF0YS5oCkBAIC00OSw3ICs0OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICB9
OwogCiAgICAgRm9udEN1c3RvbVBsYXRmb3JtRGF0YSogY3JlYXRlRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YShDYWNoZWRGb250Kik7Ci0KKyAgICB2b2lkIHNldEN1c3RvbUZvbnRDYWNoZShDdXN0b21G
b250Q2FjaGUqKTsKIH0KIAogI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34012</attachid>
            <date>2009-08-03 15:55:02 -0700</date>
            <delta_ts>2009-08-07 11:49:40 -0700</delta_ts>
            <desc>updated patch with clearer comments, updated handling of negative spacing, and a few style fixes</desc>
            <filename>bug27734.patch</filename>
            <type>text/plain</type>
            <size>18233</size>
            <attacher name="Joe Mason">joenotcharles</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ODBkYTZiNy4uZjhjYWEyOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MyBAQAorMjAwOS0wOC0wMyAgWW9uZyBMaSA8eW9u
Zy5saUB0b3JjaG1vYmlsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgV0lOQ0UgUE9SVDogRm9udCByZWxhdGVkIGNoYW5nZXMgKG9uIGV4aXN0
aW5nIGZpbGVzKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9Mjc3MzQKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkZvbnQ6OnNldExldHRlclNwYWNpbmcpOgorICAgICAgICAgICAgaGFuZGxlIG5l
Z2F0aXZlIHNwYWNpbmcgb24gV2luQ0UKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250
Q2FjaGUuaDoKKyAgICAgICAgICAgIHVzZSBJTUZvbnRMaW5rIGlmIElNRm9udExpbmsyIGlzIG5v
dCBhdmFpbGFibGUKKyAgICAgICAgICAgIGRlY2xhcmUgY29tSW5pdGlhbGl6ZSBhbmQgY29tVW5p
bml0aWFsaXplCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEZhc3RQYXRoLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZvbnQ6OmdseXBoRGF0YUZvckNoYXJhY3Rlcik6CisgICAgICAg
ICAgICBzZW5kIHVucmVjb2duaXplZCBnbHlwaHMgc3RyYWlnaHQgdG8gR0RJLCBsZXQgaXQgc29y
dCB0aGVtIG91dAorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dseXBoQnVmZmVyLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpHbHlwaEJ1ZmZlcjo6YWR2YW5jZUF0KToKKyAgICAgICAgKFdlYkNv
cmU6OkdseXBoQnVmZmVyOjphZHZhbmNlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpHbHlwaEJ1
ZmZlcjo6YWRkKToKKyAgICAgICAgICAgIHN0b3JlIG9ubHkgdGhlIHdpZHRoIChiZXR0ZXIgdXNl
IG9mIHNwYWNlKQorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dseXBoUGFnZVRyZWVOb2Rl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdseXBoUGFnZVRyZWVOb2RlOjppbml0aWFsaXplUGFn
ZSk6CisgICAgICAgICAgICBmaXggYW1iaWd1b3VzIG1pbi9tYXggc3ltYm9scyBvbiBXaW5kb3dz
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU2ltcGxlRm9udERhdGEuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2ltcGxlRm9udERhdGE6OlNpbXBsZUZvbnREYXRhKToKKyAgICAgICAgICAg
IGluaXRhbGl6ZSBtX2F2Z0NoYXJXaWR0aCBhbmQgbV9tYXhDaGFyV2lkdGgKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9TaW1wbGVGb250RGF0YS5oOgorICAgICAgICAgICAgZGlzYWJsZSB1
bnVzZWQgbWVtYmVycyBvbiBXaW5DRQorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50
eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlbmFtZUZvbnQp
OgorICAgICAgICAgICAgaW1wbGVtZW50IGZvciBXaW5DRQorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmg6CisgICAgICAgICAgICBkZWZpbmUg
VUludDggYW5kIGRvbid0IGluY2x1ZGUgRm9yd2FyZC5oIG9uIFdpbkNFCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luY2UvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpzZXRDdXN0b21Gb250Q2FjaGUpOgorICAgICAgICAgICAgaW1wbGVtZW50IGZv
ciBXaW5DRQorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0ZvbnRDdXN0b21QbGF0
Zm9ybURhdGEuaDoKKyAgICAgICAgICAgIGFkZCBzZXRDdXN0b21Gb250Q2FjaGUgZGVjbGFyYXRp
b24KKwogMjAwOS0wNy0zMSAgSm9lIE1hc29uICA8am9lLm1hc29uQHRvcmNobW9iaWxlLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KZGlmZiAtLWdpdCBhL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250LmgKaW5kZXggYzA2NzA3MS4uMWExOWYyZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Gb250LmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgK
QEAgLTQsNiArNCw3IEBACiAgKiAgICAgICAgICAgKEMpIDIwMDAgRGlyayBNdWVsbGVyIChtdWVs
bGVyQGtkZS5vcmcpCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDYsIDIwMDcgQXBwbGUgQ29t
cHV0ZXIsIEluYy4KICAqIENvcHlyaWdodCAoQykgMjAwOCBIb2xnZXIgSGFucyBQZXRlciBGcmV5
dGhlcgorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMDkgVG9yY2ggTW9iaWxlLCBJbmMuCiAgKgog
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKQEAgLTkwLDcgKzkxLDE0IEBAIHB1YmxpYzoKICAgICBzaG9ydCB3b3Jk
U3BhY2luZygpIGNvbnN0IHsgcmV0dXJuIG1fd29yZFNwYWNpbmc7IH0KICAgICBzaG9ydCBsZXR0
ZXJTcGFjaW5nKCkgY29uc3QgeyByZXR1cm4gbV9sZXR0ZXJTcGFjaW5nOyB9CiAgICAgdm9pZCBz
ZXRXb3JkU3BhY2luZyhzaG9ydCBzKSB7IG1fd29yZFNwYWNpbmcgPSBzOyB9CisjaWYgUExBVEZP
Uk0oV0lOQ0UpCisgICAgLy8gU29tZSBzaXRlcyBzZXQgdGhlIHNwYWNpbmcgdG8gLTEgdG8gbWFr
ZSB0ZXh0IG1vcmUgY29tcGFjdC4gIEJ1dCBXaW5Nb2JpbGUgYWxyZWFkeQorICAgIC8vIGNvbXBh
Y3RzIHRoZSB0ZXh0IHRvIHNhdmUgb24gc2NyZWVuIHNwYWNlLCBzbyB0aGlzIG1ha2VzIGl0IG92
ZXJsYXAuICBJZiB0aGUgc3BhY2luZyBpcworICAgIC8vIG5lZ2F0aXZlLCB3aWRlbiBpcyBzbGln
aHRseSB0byBjb3VudGVyYWN0IHRoaXMuCisgICAgdm9pZCBzZXRMZXR0ZXJTcGFjaW5nKHNob3J0
IHMpIHsgbV9sZXR0ZXJTcGFjaW5nID0gcyA8IDAgPyBzICsgMSA6IHM7IH0KKyNlbHNlCiAgICAg
dm9pZCBzZXRMZXR0ZXJTcGFjaW5nKHNob3J0IHMpIHsgbV9sZXR0ZXJTcGFjaW5nID0gczsgfQor
I2VuZGlmCiAgICAgYm9vbCBpc0ZpeGVkUGl0Y2goKSBjb25zdDsKICAgICBib29sIGlzUHJpbnRl
ckZvbnQoKSBjb25zdCB7IHJldHVybiBtX2ZvbnREZXNjcmlwdGlvbi51c2VQcmludGVyRm9udCgp
OyB9CiAgICAgCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNo
ZS5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaAppbmRleCAzYzBmMmQ5
Li41Yjg4YmE4IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNo
ZS5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmgKQEAgLTEsNSAr
MSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA4IEFwcGxlIENvbXB1dGVyLCBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMDggVG9y
Y2ggTW9iaWxlLCBJbmMuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTYzLDcg
KzY0LDE1IEBAIHB1YmxpYzoKICAgICAvLyBBbHNvIGltcGxlbWVudGVkIGJ5IHRoZSBwbGF0Zm9y
bS4KICAgICB2b2lkIHBsYXRmb3JtSW5pdCgpOwogCi0jaWYgUExBVEZPUk0oV0lOKQorI2lmIFBM
QVRGT1JNKFdJTkNFKQorI2lmIGRlZmluZWQoSU1MQU5HX0ZPTlRfTElOSykgJiYgKElNTEFOR19G
T05UX0xJTksgPT0gMikKKyAgICBJTUxhbmdGb250TGluazIqIGdldEZvbnRMaW5rSW50ZXJmYWNl
KCk7CisjZWxzZQorICAgIElNTGFuZ0ZvbnRMaW5rKiBnZXRGb250TGlua0ludGVyZmFjZSgpOwor
I2VuZGlmCisgICAgc3RhdGljIHZvaWQgY29tSW5pdGlhbGl6ZSgpOworICAgIHN0YXRpYyB2b2lk
IGNvbVVuaW5pdGlhbGl6ZSgpOworI2VsaWYgUExBVEZPUk0oV0lOKQogICAgIElNTGFuZ0ZvbnRM
aW5rMiogZ2V0Rm9udExpbmtJbnRlcmZhY2UoKTsKICNlbmRpZgogCkBAIC05Myw2ICsxMDIsOSBA
QCBwcml2YXRlOgogCiAgICAgZnJpZW5kIGNsYXNzIFNpbXBsZUZvbnREYXRhOwogICAgIGZyaWVu
ZCBjbGFzcyBGb250RmFsbGJhY2tMaXN0OworI2lmIFBMQVRGT1JNKFdJTkNFKQorICAgIGZyaWVu
ZCBjbGFzcyBGb250OworI2VuZGlmCiB9OwogCiAvLyBHZXQgdGhlIGdsb2JhbCBmb250Q2FjaGUu
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRGYXN0UGF0aC5jcHAg
Yi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRGYXN0UGF0aC5jcHAKaW5kZXggNzRiN2Vj
MS4uNGIxNmNiYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250RmFz
dFBhdGguY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEZhc3RQYXRoLmNw
cApAQCAtMSw2ICsxLDcgQEAKIC8qKgogICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA2IEFwcGxl
IENvbXB1dGVyLCBJbmMuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggSG9sZ2VyIEhhbnMgUGV0ZXIg
RnJleXRoZXIKKyAqIENvcHlyaWdodCAoQykgMjAwOSBUb3JjaCBNb2JpbGUsIEluYy4KICAqCiAg
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYwpAQCAtMTU1LDE2ICsxNTYsMzMgQEAgR2x5cGhEYXRhIEZvbnQ6OmdseXBo
RGF0YUZvckNoYXJhY3RlcihVQ2hhcjMyIGMsIGJvb2wgbWlycm9yLCBib29sIGZvcmNlU21hbGxD
YXAKICAgICAgICAgR2x5cGhQYWdlKiBmYWxsYmFja1BhZ2UgPSBHbHlwaFBhZ2VUcmVlTm9kZTo6
Z2V0Um9vdENoaWxkKGNoYXJhY3RlckZvbnREYXRhLCBwYWdlTnVtYmVyKS0+cGFnZSgpOwogICAg
ICAgICBHbHlwaERhdGEgZGF0YSA9IGZhbGxiYWNrUGFnZSAmJiBmYWxsYmFja1BhZ2UtPmZvbnRE
YXRhRm9yQ2hhcmFjdGVyKGMpID8gZmFsbGJhY2tQYWdlLT5nbHlwaERhdGFGb3JDaGFyYWN0ZXIo
YykgOiBjaGFyYWN0ZXJGb250RGF0YS0+bWlzc2luZ0dseXBoRGF0YSgpOwogICAgICAgICAvLyBD
YWNoZSBpdCBzbyB3ZSBkb24ndCBoYXZlIHRvIGRvIHN5c3RlbSBmYWxsYmFjayBhZ2FpbiBuZXh0
IHRpbWUuCi0gICAgICAgIGlmICghdXNlU21hbGxDYXBzRm9udCkKKyAgICAgICAgaWYgKCF1c2VT
bWFsbENhcHNGb250KSB7CisjaWYgUExBVEZPUk0oV0lOQ0UpCisgICAgICAgICAgICAvLyBtaXNz
aW5nR2x5cGhEYXRhIHJldHVybnMgYSBudWxsIGNoYXJhY3Rlciwgd2hpY2ggaXMgbm90IHN1aXRh
YmxlIGZvciBHREkgdG8gZGlzcGxheS4KKyAgICAgICAgICAgIC8vIEFsc28sIHNvbWV0aW1lcyB3
ZSBjYW5ub3QgbWFwIGEgZm9udCBmb3IgdGhlIGNoYXJhY3RlciBvbiBXSU5DRSwgYnV0IEdESSBj
YW4gc3RpbGwKKyAgICAgICAgICAgIC8vIGRpc3BsYXkgdGhlIGNoYXJhY3RlciwgcHJvYmFibHkg
YmVjYXVzZSB0aGUgZm9udCBwYWNrYWdlIGlzIG5vdCBpbnN0YWxsZWQgY29ycmVjdGx5LgorICAg
ICAgICAgICAgLy8gU28gd2UganVzdCBhbHdheXMgc2V0IHRoZSBnbHlwaCB0byBiZSBzYW1lIGFz
IHRoZSBjaGFyYWN0ZXIsIGFuZCBsZXQgR0RJIHNvbHZlIGl0LgorICAgICAgICAgICAgcGFnZS0+
c2V0R2x5cGhEYXRhRm9yQ2hhcmFjdGVyKGMsIGMsIGNoYXJhY3RlckZvbnREYXRhKTsKKyAgICAg
ICAgICAgIHJldHVybiBwYWdlLT5nbHlwaERhdGFGb3JDaGFyYWN0ZXIoYyk7CisjZWxzZQogICAg
ICAgICAgICAgcGFnZS0+c2V0R2x5cGhEYXRhRm9yQ2hhcmFjdGVyKGMsIGRhdGEuZ2x5cGgsIGRh
dGEuZm9udERhdGEpOworI2VuZGlmCisgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGRhdGE7CiAg
ICAgfQogCiAgICAgLy8gRXZlbiBzeXN0ZW0gZmFsbGJhY2sgY2FuIGZhaWw7IHVzZSB0aGUgbWlz
c2luZyBnbHlwaCBpbiB0aGF0IGNhc2UuCiAgICAgLy8gRklYTUU6IEl0IHdvdWxkIGJlIG5pY2Vy
IHRvIHVzZSB0aGUgbWlzc2luZyBnbHlwaCBmcm9tIHRoZSBsYXN0IHJlc29ydCBmb250IGluc3Rl
YWQuCiAgICAgR2x5cGhEYXRhIGRhdGEgPSBwcmltYXJ5Rm9udCgpLT5taXNzaW5nR2x5cGhEYXRh
KCk7Ci0gICAgaWYgKCF1c2VTbWFsbENhcHNGb250KQorICAgIGlmICghdXNlU21hbGxDYXBzRm9u
dCkgeworI2lmIFBMQVRGT1JNKFdJTkNFKQorICAgICAgICAvLyBzZWUgY29tbWVudCBhYm92ZQor
ICAgICAgICBwYWdlLT5zZXRHbHlwaERhdGFGb3JDaGFyYWN0ZXIoYywgYywgZGF0YS5mb250RGF0
YSk7CisgICAgICAgIHJldHVybiBwYWdlLT5nbHlwaERhdGFGb3JDaGFyYWN0ZXIoYyk7CisjZWxz
ZQogICAgICAgICBwYWdlLT5zZXRHbHlwaERhdGFGb3JDaGFyYWN0ZXIoYywgZGF0YS5nbHlwaCwg
ZGF0YS5mb250RGF0YSk7CisjZW5kaWYKKyAgICB9CiAgICAgcmV0dXJuIGRhdGE7CiB9CiAKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhCdWZmZXIuaCBiL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhCdWZmZXIuaAppbmRleCBkY2RhNDE5Li44OGM4YmVm
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dseXBoQnVmZmVyLmgKKysr
IGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlwaEJ1ZmZlci5oCkBAIC0xLDUgKzEsNiBA
QAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAwOCBUb3JjaCBNb2JpbGUgSW5jLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00OSw2ICs1MCw4IEBAIGNsYXNzIFNp
bXBsZUZvbnREYXRhOwogI2lmIFBMQVRGT1JNKENBSVJPKQogLy8gRklYTUU6IFdoeSBkb2VzIENh
aXJvIHVzZSBzdWNoIGEgaHVnZSBzdHJ1Y3QgaW5zdGVhZCBvZiBqdXN0IGFuIG9mZnNldCBpbnRv
IGFuIGFycmF5PwogdHlwZWRlZiBjYWlyb19nbHlwaF90IEdseXBoQnVmZmVyR2x5cGg7CisjZWxp
ZiBQTEFURk9STShXSU5DRSkKK3R5cGVkZWYgd2NoYXJfdCBHbHlwaEJ1ZmZlckdseXBoOwogI2Vs
c2UKIHR5cGVkZWYgR2x5cGggR2x5cGhCdWZmZXJHbHlwaDsKICNlbmRpZgpAQCAtNTcsNiArNjAs
OCBAQCB0eXBlZGVmIEdseXBoIEdseXBoQnVmZmVyR2x5cGg7CiAvLyBjYW4gYmUgcGFzc2VkIGRp
cmVjdGx5IHRvIENHQ29udGV4dFNob3dHbHlwaHNXaXRoQWR2YW5jZXMgaW4gRm9udE1hYy5tbQog
I2lmIFBMQVRGT1JNKENHKQogdHlwZWRlZiBDR1NpemUgR2x5cGhCdWZmZXJBZHZhbmNlOworI2Vs
aWYgUExBVEZPUk0oV0lOQ0UpCit0eXBlZGVmIGZsb2F0IEdseXBoQnVmZmVyQWR2YW5jZTsKICNl
bHNlCiB0eXBlZGVmIEZsb2F0U2l6ZSBHbHlwaEJ1ZmZlckFkdmFuY2U7CiAjZW5kaWYKQEAgLTEx
NywxMSArMTIyLDIwIEBAIHB1YmxpYzoKICAgICB7CiAjaWYgUExBVEZPUk0oQ0cpCiAgICAgICAg
IHJldHVybiBtX2FkdmFuY2VzW2luZGV4XS53aWR0aDsKKyNlbGlmIFBMQVRGT1JNKFdJTkNFKQor
ICAgICAgICByZXR1cm4gbV9hZHZhbmNlc1tpbmRleF07CiAjZWxzZQogICAgICAgICByZXR1cm4g
bV9hZHZhbmNlc1tpbmRleF0ud2lkdGgoKTsKICNlbmRpZgogICAgIH0KIAorI2lmIFBMQVRGT1JN
KFdJTkNFKQorICAgIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSogYWR2YW5jZURhdGEoKSBjb25z
dAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYWR2YW5jZXMuZGF0YSgpOworICAgIH0KKyNlbmRp
ZgorCiAgICAgRmxvYXRTaXplIG9mZnNldEF0KGludCBpbmRleCkgY29uc3QKICAgICB7CiAjaWYg
UExBVEZPUk0oV0lOKQpAQCAtMTQ3LDYgKzE2MSw4IEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShD
RykKICAgICAgICAgQ0dTaXplIGFkdmFuY2UgPSB7IHdpZHRoLCAwIH07CiAgICAgICAgIG1fYWR2
YW5jZXMuYXBwZW5kKGFkdmFuY2UpOworI2VsaWYgUExBVEZPUk0oV0lOQ0UpCisgICAgICAgIG1f
YWR2YW5jZXMuYXBwZW5kKHdpZHRoKTsKICNlbHNlCiAgICAgICAgIG1fYWR2YW5jZXMuYXBwZW5k
KEZsb2F0U2l6ZSh3aWR0aCwgMCkpOwogI2VuZGlmCkBAIC0xNjEsNiArMTc3LDcgQEAgcHVibGlj
OgogI2VuZGlmCiAgICAgfQogICAgIAorI2lmICFQTEFURk9STShXSU5DRSkKICAgICB2b2lkIGFk
ZChHbHlwaCBnbHlwaCwgY29uc3QgU2ltcGxlRm9udERhdGEqIGZvbnQsIEdseXBoQnVmZmVyQWR2
YW5jZSBhZHZhbmNlKQogICAgIHsKICAgICAgICAgbV9mb250RGF0YS5hcHBlbmQoZm9udCk7CkBA
IC0xNzQsNiArMTkxLDcgQEAgcHVibGljOgogCiAgICAgICAgIG1fYWR2YW5jZXMuYXBwZW5kKGFk
dmFuY2UpOwogICAgIH0KKyNlbmRpZgogICAgIAogcHJpdmF0ZToKICAgICBWZWN0b3I8Y29uc3Qg
U2ltcGxlRm9udERhdGEqLCAyMDQ4PiBtX2ZvbnREYXRhOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HbHlwaFBhZ2VUcmVlTm9kZS5jcHAgYi9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dseXBoUGFnZVRyZWVOb2RlLmNwcAppbmRleCA2NDE5ZTBjLi45ZDliYTI2IDEw
MDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dseXBoUGFnZVRyZWVOb2RlLmNw
cAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dseXBoUGFnZVRyZWVOb2RlLmNwcApA
QCAtMjAyLDggKzIwMiw4IEBAIHZvaWQgR2x5cGhQYWdlVHJlZU5vZGU6OmluaXRpYWxpemVQYWdl
KGNvbnN0IEZvbnREYXRhKiBmb250RGF0YSwgdW5zaWduZWQgcGFnZU51CiAgICAgICAgICAgICAg
ICAgR2x5cGhQYWdlKiBwYWdlVG9GaWxsID0gbV9wYWdlLmdldCgpOwogICAgICAgICAgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1SYW5nZXM7IGkrKykgewogICAgICAgICAgICAg
ICAgICAgICBjb25zdCBGb250RGF0YVJhbmdlJiByYW5nZSA9IHNlZ21lbnRlZEZvbnREYXRhLT5y
YW5nZUF0KGkpOwotICAgICAgICAgICAgICAgICAgICBpbnQgZnJvbSA9IG1heCgwLCByYW5nZS5m
cm9tKCkgLSBzdGF0aWNfY2FzdDxpbnQ+KHN0YXJ0KSk7Ci0gICAgICAgICAgICAgICAgICAgIGlu
dCB0byA9IDEgKyBtaW4ocmFuZ2UudG8oKSAtIHN0YXRpY19jYXN0PGludD4oc3RhcnQpLCBzdGF0
aWNfY2FzdDxpbnQ+KEdseXBoUGFnZTo6c2l6ZSkgLSAxKTsKKyAgICAgICAgICAgICAgICAgICAg
aW50IGZyb20gPSBtYXg8aW50PigwLCByYW5nZS5mcm9tKCkgLSBzdGF0aWNfY2FzdDxpbnQ+KHN0
YXJ0KSk7CisgICAgICAgICAgICAgICAgICAgIGludCB0byA9IDEgKyBtaW48aW50PihyYW5nZS50
bygpIC0gc3RhdGljX2Nhc3Q8aW50PihzdGFydCksIHN0YXRpY19jYXN0PGludD4oR2x5cGhQYWdl
OjpzaXplKSAtIDEpOwogICAgICAgICAgICAgICAgICAgICBpZiAoZnJvbSA8IHN0YXRpY19jYXN0
PGludD4oR2x5cGhQYWdlOjpzaXplKSAmJiB0byA+IDApIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChoYXZlR2x5cGhzICYmICFzY3JhdGNoUGFnZSkgewogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNjcmF0Y2hQYWdlID0gR2x5cGhQYWdlOjpjcmVhdGUodGhpcyk7CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NpbXBsZUZvbnREYXRhLmNwcCBiL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2ltcGxlRm9udERhdGEuY3BwCmluZGV4IGM4NzkyMjguLjk4
YTYwM2QgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2ltcGxlRm9udERh
dGEuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2ltcGxlRm9udERhdGEuY3Bw
CkBAIC01Nyw2ICs1Nyw4IEBAIFNpbXBsZUZvbnREYXRhOjpTaW1wbGVGb250RGF0YShjb25zdCBG
b250UGxhdGZvcm1EYXRhJiBmLCBib29sIGN1c3RvbUZvbnQsIGJvb2wKICAgICAsIG1faXNDdXN0
b21Gb250KGN1c3RvbUZvbnQpCiAgICAgLCBtX2lzTG9hZGluZyhsb2FkaW5nKQogICAgICwgbV9z
bWFsbENhcHNGb250RGF0YSgwKQorICAgICwgbV9hdmdDaGFyV2lkdGgoLTEpCisgICAgLCBtX21h
eENoYXJXaWR0aCgtMSkKIHsKICNpZiAhRU5BQkxFKFNWR19GT05UUykKICAgICBVTlVTRURfUEFS
QU0oc3ZnRm9udERhdGEpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9T
aW1wbGVGb250RGF0YS5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaW1wbGVGb250RGF0
YS5oCmluZGV4IGNiNDcyYjAuLjQxYjhiMGMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvU2ltcGxlRm9udERhdGEuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1NpbXBsZUZvbnREYXRhLmgKQEAgLTIsNiArMiw3IEBACiAgKiBUaGlzIGZpbGUgaXMgcGFydCBv
ZiB0aGUgaW50ZXJuYWwgZm9udCBpbXBsZW1lbnRhdGlvbi4KICAqCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMDYsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDA3LTIwMDggVG9yY2ggTW9iaWxlLCBJbmMuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAg
LTMzLDcgKzM0LDcgQEAKIHR5cGVkZWYgc3RydWN0IE9wYXF1ZUFUU1VTdHlsZSogQVRTVVN0eWxl
OwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShXSU4pCisjaWYgUExBVEZPUk0oV0lOKSAmJiAhUExB
VEZPUk0oV0lOQ0UpCiAjaW5jbHVkZSA8dXNwMTAuaD4KICNlbmRpZgogCkBAIC0xMzQsOSArMTM1
LDEwIEBAIHB1YmxpYzoKIAogI2lmIFBMQVRGT1JNKFdJTikKICAgICBib29sIGlzU3lzdGVtRm9u
dCgpIGNvbnN0IHsgcmV0dXJuIG1faXNTeXN0ZW1Gb250OyB9CisjaWYgIVBMQVRGT1JNKFdJTkNF
KQogICAgIFNDUklQVF9GT05UUFJPUEVSVElFUyogc2NyaXB0Rm9udFByb3BlcnRpZXMoKSBjb25z
dDsKICAgICBTQ1JJUFRfQ0FDSEUqIHNjcmlwdENhY2hlKCkgY29uc3QgeyByZXR1cm4gJm1fc2Ny
aXB0Q2FjaGU7IH0KLQorI2VuZGlmCiAgICAgc3RhdGljIHZvaWQgc2V0U2hvdWxkQXBwbHlNYWNB
c2NlbnRIYWNrKGJvb2wpOwogICAgIHN0YXRpYyBib29sIHNob3VsZEFwcGx5TWFjQXNjZW50SGFj
aygpOwogI2VuZGlmCkBAIC0xNTksNyArMTYxLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY29t
bW9uSW5pdCgpOwogCi0jaWYgUExBVEZPUk0oV0lOKQorI2lmIFBMQVRGT1JNKFdJTikgJiYgIVBM
QVRGT1JNKFdJTkNFKQogICAgIHZvaWQgaW5pdEdESUZvbnQoKTsKICAgICB2b2lkIHBsYXRmb3Jt
Q29tbW9uRGVzdHJveSgpOwogICAgIGZsb2F0IHdpZHRoRm9yR0RJR2x5cGgoR2x5cGggZ2x5cGgp
IGNvbnN0OwpAQCAtMjI0LDkgKzIyNiwxMSBAQCBwcml2YXRlOgogCiAjaWYgUExBVEZPUk0oV0lO
KQogICAgIGJvb2wgbV9pc1N5c3RlbUZvbnQ7CisjaWYgIVBMQVRGT1JNKFdJTkNFKQogICAgIG11
dGFibGUgU0NSSVBUX0NBQ0hFIG1fc2NyaXB0Q2FjaGU7CiAgICAgbXV0YWJsZSBTQ1JJUFRfRk9O
VFBST1BFUlRJRVMqIG1fc2NyaXB0Rm9udFByb3BlcnRpZXM7CiAjZW5kaWYKKyNlbmRpZgogfTsK
ICAgICAKICAgICAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5
cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
dHlwZS9PcGVuVHlwZVV0aWxpdGllcy5jcHAKaW5kZXggODk1ODg3Zi4uNzBhZTAyZSAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGll
cy5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0
aWxpdGllcy5jcHAKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA4LCAy
MDA5IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDkgVG9yY2ggTW9iaWxlLCBJbmMuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTY5LDcgKzcwLDEwIEBAIHN0cnVjdCBUYWJsZURpcmVjdG9yeUVudHJ5IHsKICAgICBCaWdFbmRp
YW5VTG9uZyBsZW5ndGg7CiB9OwogCi0jaWYgIVBMQVRGT1JNKENHKQorI2lmIFBMQVRGT1JNKFdJ
TkNFKQorLy8gTmVlZCB0byB1c2UgI2RlZmluZSBpbnN0ZWFkIG9mIHR5cGVkZWYgZHVlIHRvIGNv
bmZsaWN0CisjZGVmaW5lIEZpeGVkIGludDMyX3QKKyNlbGlmICFQTEFURk9STShDRykKIC8vIEZp
eGVkIHR5cGUgaXMgbm90IGRlZmluZWQgb24gbm9uLUNHIHBsYXRmb3Jtcy4gfHZlcnNpb258IGlu
IHNmbnRIZWFkZXIKIC8vIGFuZCBoZWFkVGFibGUgYW5kIHxmb250UmV2aXNpb258IGluIGhlYWRU
YWJsZSBhcmUgb2YgRml4ZWQsIGJ1dCB0aGV5J3JlCiAvLyBub3QgYWN0dWFsbHkgcmVmZXJlZCB0
byBhbnl3aGVyZS4gVGhlcmVmb3JlLCB3ZSBqdXN0IGhhdmUgdG8gbWF0Y2gKQEAgLTMzOSw2ICsz
NDMsNzMgQEAgYm9vbCBnZXRFT1RIZWFkZXIoU2hhcmVkQnVmZmVyKiBmb250RGF0YSwgRU9USGVh
ZGVyJiBlb3RIZWFkZXIsIHNpemVfdCYgb3ZlcmxheUQKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAor
I2lmIFBMQVRGT1JNKFdJTkNFKQorYm9vbCByZW5hbWVGb250KFNoYXJlZEJ1ZmZlciogZm9udERh
dGEsIGNvbnN0IFN0cmluZyYgZm9udE5hbWUpCit7CisgICAgc2l6ZV90IG9yaWdpbmFsRGF0YVNp
emUgPSBmb250RGF0YS0+c2l6ZSgpOworICAgIGlmIChvcmlnaW5hbERhdGFTaXplIDwgb2Zmc2V0
b2Yoc2ZudEhlYWRlciwgdGFibGVzKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgY29u
c3Qgc2ZudEhlYWRlciogc2ZudCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgc2ZudEhlYWRlcio+
KGZvbnREYXRhLT5kYXRhKCkpOworCisgICAgaWYgKG9yaWdpbmFsRGF0YVNpemUgPCBvZmZzZXRv
ZihzZm50SGVhZGVyLCB0YWJsZXMpICsgc2ZudC0+bnVtVGFibGVzICogc2l6ZW9mKFRhYmxlRGly
ZWN0b3J5RW50cnkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICB1bnNpZ25lZCB0Owor
ICAgIGZvciAodCA9IDA7IHQgPCBzZm50LT5udW1UYWJsZXM7ICsrdCkgeworICAgICAgICBpZiAo
c2ZudC0+dGFibGVzW3RdLnRhZyA9PSAnbmFtZScpCisgICAgICAgICAgICBicmVhazsKKyAgICB9
CisgICAgaWYgKHQgPT0gc2ZudC0+bnVtVGFibGVzKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBjb25zdCBpbnQgbmFtZVJlY29yZENvdW50ID0gNTsKKworICAgIC8vIFJvdW5kZWQgdXAg
dG8gYSBtdWx0aXBsZSBvZiA0IHRvIHNpbXBsaWZ5IHRoZSBjaGVja3N1bSBjYWxjdWxhdGlvbi4K
KyAgICBzaXplX3QgbmFtZVRhYmxlU2l6ZSA9ICgob2Zmc2V0b2YobmFtZVRhYmxlLCBuYW1lUmVj
b3JkcykgKyBuYW1lUmVjb3JkQ291bnQgKiBzaXplb2YobmFtZVJlY29yZCkgKyBmb250TmFtZS5s
ZW5ndGgoKSAqIHNpemVvZihVQ2hhcikpICYgfjMpICsgNDsKKworICAgIFZlY3RvcjxjaGFyPiBy
ZXdyaXR0ZW5Gb250RGF0YShmb250RGF0YS0+c2l6ZSgpICsgbmFtZVRhYmxlU2l6ZSk7CisgICAg
Y2hhciogZGF0YSA9IHJld3JpdHRlbkZvbnREYXRhLmRhdGEoKTsKKyAgICBtZW1jcHkoZGF0YSwg
Zm9udERhdGEtPmRhdGEoKSwgb3JpZ2luYWxEYXRhU2l6ZSk7CisKKyAgICAvLyBNYWtlIHRoZSB0
YWJsZSBkaXJlY3RvcnkgZW50cnkgcG9pbnQgdG8gdGhlIG5ldyAnbmFtZScgdGFibGUuCisgICAg
c2ZudEhlYWRlciogcmV3cml0dGVuU2ZudCA9IHJlaW50ZXJwcmV0X2Nhc3Q8c2ZudEhlYWRlcio+
KGRhdGEpOworICAgIHJld3JpdHRlblNmbnQtPnRhYmxlc1t0XS5sZW5ndGggPSBuYW1lVGFibGVT
aXplOworICAgIHJld3JpdHRlblNmbnQtPnRhYmxlc1t0XS5vZmZzZXQgPSBvcmlnaW5hbERhdGFT
aXplOworCisgICAgLy8gV3JpdGUgdGhlIG5ldyAnbmFtZScgdGFibGUgYWZ0ZXIgdGhlIG9yaWdp
bmFsIGZvbnQgZGF0YS4KKyAgICBuYW1lVGFibGUqIG5hbWUgPSByZWludGVycHJldF9jYXN0PG5h
bWVUYWJsZSo+KGRhdGEgKyBvcmlnaW5hbERhdGFTaXplKTsKKyAgICBuYW1lLT5mb3JtYXQgPSAw
OworICAgIG5hbWUtPmNvdW50ID0gbmFtZVJlY29yZENvdW50OworICAgIG5hbWUtPnN0cmluZ09m
ZnNldCA9IG9mZnNldG9mKG5hbWVUYWJsZSwgbmFtZVJlY29yZHMpICsgbmFtZVJlY29yZENvdW50
ICogc2l6ZW9mKG5hbWVSZWNvcmQpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBuYW1l
UmVjb3JkQ291bnQ7ICsraSkgeworICAgICAgICBuYW1lLT5uYW1lUmVjb3Jkc1tpXS5wbGF0Zm9y
bUlEID0gMzsKKyAgICAgICAgbmFtZS0+bmFtZVJlY29yZHNbaV0uZW5jb2RpbmdJRCA9IDE7Cisg
ICAgICAgIG5hbWUtPm5hbWVSZWNvcmRzW2ldLmxhbmd1YWdlSUQgPSAweDA0MDk7CisgICAgICAg
IG5hbWUtPm5hbWVSZWNvcmRzW2ldLm9mZnNldCA9IDA7CisgICAgICAgIG5hbWUtPm5hbWVSZWNv
cmRzW2ldLmxlbmd0aCA9IGZvbnROYW1lLmxlbmd0aCgpICogc2l6ZW9mKFVDaGFyKTsKKyAgICB9
CisKKyAgICAvLyBUaGUgcmVxdWlyZWQgJ25hbWUnIHJlY29yZCB0eXBlczogRmFtaWx5LCBTdHls
ZSwgVW5pcXVlLCBGdWxsIGFuZCBQb3N0U2NyaXB0LgorICAgIG5hbWUtPm5hbWVSZWNvcmRzWzBd
Lm5hbWVJRCA9IDE7CisgICAgbmFtZS0+bmFtZVJlY29yZHNbMV0ubmFtZUlEID0gMjsKKyAgICBu
YW1lLT5uYW1lUmVjb3Jkc1syXS5uYW1lSUQgPSAzOworICAgIG5hbWUtPm5hbWVSZWNvcmRzWzNd
Lm5hbWVJRCA9IDQ7CisgICAgbmFtZS0+bmFtZVJlY29yZHNbNF0ubmFtZUlEID0gNjsKKworICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBmb250TmFtZS5sZW5ndGgoKTsgKytpKQorICAgICAg
ICByZWludGVycHJldF9jYXN0PEJpZ0VuZGlhblVTaG9ydCo+KGRhdGEgKyBvcmlnaW5hbERhdGFT
aXplICsgbmFtZS0+c3RyaW5nT2Zmc2V0KVtpXSA9IGZvbnROYW1lW2ldOworCisgICAgLy8gVXBk
YXRlIHRoZSB0YWJsZSBjaGVja3N1bSBpbiB0aGUgZGlyZWN0b3J5IGVudHJ5LgorICAgIHJld3Jp
dHRlblNmbnQtPnRhYmxlc1t0XS5jaGVja1N1bSA9IDA7CisgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSAqIHNpemVvZihCaWdFbmRpYW5VTG9uZykgPCBuYW1lVGFibGVTaXplOyArK2kpCisgICAg
ICAgIHJld3JpdHRlblNmbnQtPnRhYmxlc1t0XS5jaGVja1N1bSA9IHJld3JpdHRlblNmbnQtPnRh
Ymxlc1t0XS5jaGVja1N1bSArIHJlaW50ZXJwcmV0X2Nhc3Q8QmlnRW5kaWFuVUxvbmcqPihuYW1l
KVtpXTsKKworICAgIGZvbnREYXRhLT5jbGVhcigpOworICAgIGZvbnREYXRhLT5hcHBlbmQocmV3
cml0dGVuRm9udERhdGEuZGF0YSgpLCByZXdyaXR0ZW5Gb250RGF0YS5zaXplKCkpOworICAgIHJl
dHVybiB0cnVlOworfQorI2Vsc2UKIEhBTkRMRSByZW5hbWVBbmRBY3RpdmF0ZUZvbnQoU2hhcmVk
QnVmZmVyKiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBmb250TmFtZSkKIHsKICAgICBzaXplX3Qg
b3JpZ2luYWxEYXRhU2l6ZSA9IGZvbnREYXRhLT5zaXplKCk7CkBAIC00MDQsNSArNDc1LDYgQEAg
SEFORExFIHJlbmFtZUFuZEFjdGl2YXRlRm9udChTaGFyZWRCdWZmZXIqIGZvbnREYXRhLCBjb25z
dCBTdHJpbmcmIGZvbnROYW1lKQogCiAgICAgcmV0dXJuIGZvbnRIYW5kbGU7CiB9CisjZW5kaWYK
IAogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVu
VHlwZVV0aWxpdGllcy5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVu
VHlwZVV0aWxpdGllcy5oCmluZGV4IDEzZGFkNmYuLjE3ZDdkMmIgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuaAorKysgYi9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmgKQEAg
LTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IEFwcGxlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgVG9yY2ggTW9iaWxl
LCBJbmMuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI3LDcgKzI4LDkgQEAK
ICNkZWZpbmUgT3BlblR5cGVVdGlsaXRpZXNfaAogCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcu
aCIKKyNpZiAhUExBVEZPUk0oV0lOQ0UpCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNlbmRp
ZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM1LDYgKzM4LDEwIEBAIHN0cnVjdCBCaWdF
bmRpYW5VU2hvcnQ7CiBzdHJ1Y3QgRU9UUHJlZml4OwogY2xhc3MgU2hhcmVkQnVmZmVyOwogCisj
aWYgUExBVEZPUk0oV0lOQ0UpCit0eXBlZGVmIHVuc2lnbmVkIF9faW50OCBVSW50ODsKKyNlbmRp
ZgorCiBzdHJ1Y3QgRU9USGVhZGVyIHsKICAgICBFT1RIZWFkZXIoKTsKIApkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNw
cCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvRm9udEN1c3RvbVBsYXRmb3JtRGF0
YS5jcHAKaW5kZXggN2M2ODUzYy4uOTQwZGQ0ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW5jZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAorKysgYi9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCkBAIC0z
Myw2ICszMywxMSBAQCBzdGF0aWMgQ3VzdG9tRm9udENhY2hlKiBnX2N1c3RvbUZvbnRDYWNoZSA9
IDA7CiAKIGJvb2wgcmVuYW1lRm9udChTaGFyZWRCdWZmZXIqIGZvbnREYXRhLCBjb25zdCBTdHJp
bmcmIGZvbnROYW1lKTsKIAordm9pZCBzZXRDdXN0b21Gb250Q2FjaGUoQ3VzdG9tRm9udENhY2hl
KiBjYWNoZSkKK3sKKyAgICBnX2N1c3RvbUZvbnRDYWNoZSA9IGNhY2hlOworfQorCiBGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhOjp+Rm9udEN1c3RvbVBsYXRmb3JtRGF0YSgpCiB7CiAgICAgaWYgKGdf
Y3VzdG9tRm9udENhY2hlICYmICFtX25hbWUuaXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmggYi9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAppbmRl
eCBiMWY2NGEwLi5lYzI1YjcwIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbmNlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbmNlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaApAQCAtNDksNyArNDksNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgfTsKIAogICAgIEZvbnRDdXN0b21QbGF0Zm9ybURhdGEq
IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoQ2FjaGVkRm9udCopOwotCisgICAgdm9pZCBz
ZXRDdXN0b21Gb250Q2FjaGUoQ3VzdG9tRm9udENhY2hlKik7CiB9CiAKICNlbmRpZgo=
</data>
<flag name="review"
          id="18175"
          type_id="1"
          status="-"
          setter="mitz"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34065</attachid>
            <date>2009-08-04 08:38:36 -0700</date>
            <delta_ts>2009-08-05 14:07:47 -0700</delta_ts>
            <desc>remove the change to setLetterSpacing()</desc>
            <filename>27734.patch</filename>
            <type>text/plain</type>
            <size>16844</size>
            <attacher name="Yong Li">yong.li.webkit</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
M2M2MGQ3YS4uYjI4YzgxMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MCBAQAorMjAwOS0wOC0wNCAgWW9uZyBMaSA8eW9u
Zy5saUB0b3JjaG1vYmlsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgV0lOQ0UgUE9SVDogRm9udCByZWxhdGVkIGNoYW5nZXMgKG9uIGV4aXN0
aW5nIGZpbGVzKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9Mjc3MzQKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oOgorICAg
ICAgICAgICAgdXNlIElNRm9udExpbmsgaWYgSU1Gb250TGluazIgaXMgbm90IGF2YWlsYWJsZQor
ICAgICAgICAgICAgZGVjbGFyZSBjb21Jbml0aWFsaXplIGFuZCBjb21VbmluaXRpYWxpemUKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250RmFzdFBhdGguY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Rm9udDo6Z2x5cGhEYXRhRm9yQ2hhcmFjdGVyKToKKyAgICAgICAgICAgIHNlbmQgdW5y
ZWNvZ25pemVkIGdseXBocyBzdHJhaWdodCB0byBHREksIGxldCBpdCBzb3J0IHRoZW0gb3V0Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkdseXBoQnVmZmVyOjphZHZhbmNlQXQpOgorICAgICAgICAoV2ViQ29yZTo6R2x5cGhCdWZm
ZXI6OmFkdmFuY2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkdseXBoQnVmZmVyOjphZGQpOgor
ICAgICAgICAgICAgc3RvcmUgb25seSB0aGUgd2lkdGggKGJldHRlciB1c2Ugb2Ygc3BhY2UpCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhQYWdlVHJlZU5vZGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6R2x5cGhQYWdlVHJlZU5vZGU6OmluaXRpYWxpemVQYWdlKToKKyAgICAgICAg
ICAgIGZpeCBhbWJpZ3VvdXMgbWluL21heCBzeW1ib2xzIG9uIFdpbmRvd3MKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9TaW1wbGVGb250RGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
aW1wbGVGb250RGF0YTo6U2ltcGxlRm9udERhdGEpOgorICAgICAgICAgICAgaW5pdGFsaXplIG1f
YXZnQ2hhcldpZHRoIGFuZCBtX21heENoYXJXaWR0aAorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL1NpbXBsZUZvbnREYXRhLmg6CisgICAgICAgICAgICBkaXNhYmxlIHVudXNlZCBtZW1iZXJz
IG9uIFdpbkNFCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVV
dGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVuYW1lRm9udCk6CisgICAgICAgICAg
ICBpbXBsZW1lbnQgZm9yIFdpbkNFCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5
cGUvT3BlblR5cGVVdGlsaXRpZXMuaDoKKyAgICAgICAgICAgIGRlZmluZSBVSW50OCBhbmQgZG9u
J3QgaW5jbHVkZSBGb3J3YXJkLmggb24gV2luQ0UKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy93aW5jZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNl
dEN1c3RvbUZvbnRDYWNoZSk6CisgICAgICAgICAgICBpbXBsZW1lbnQgZm9yIFdpbkNFCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oOgor
ICAgICAgICAgICAgYWRkIHNldEN1c3RvbUZvbnRDYWNoZSBkZWNsYXJhdGlvbgorCiAyMDA5LTA4
LTA0ICBDaHJpc3RpYW4gUGxlc25lciBIYW5zZW4gIDxjaHJpc3RpYW4ucGxlc25lci5oYW5zZW5A
Z21haWwuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCmRpZmYgLS1naXQg
YS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oIGIvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Gb250Q2FjaGUuaAppbmRleCAzYzBmMmQ5Li41Yjg4YmE4IDEwMDY0NAotLS0g
YS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oCisrKyBiL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmgKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJp
Z2h0IChDKSAyMDA2LCAyMDA4IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMDggVG9yY2ggTW9iaWxlLCBJbmMuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTYzLDcgKzY0LDE1IEBAIHB1YmxpYzoKICAg
ICAvLyBBbHNvIGltcGxlbWVudGVkIGJ5IHRoZSBwbGF0Zm9ybS4KICAgICB2b2lkIHBsYXRmb3Jt
SW5pdCgpOwogCi0jaWYgUExBVEZPUk0oV0lOKQorI2lmIFBMQVRGT1JNKFdJTkNFKQorI2lmIGRl
ZmluZWQoSU1MQU5HX0ZPTlRfTElOSykgJiYgKElNTEFOR19GT05UX0xJTksgPT0gMikKKyAgICBJ
TUxhbmdGb250TGluazIqIGdldEZvbnRMaW5rSW50ZXJmYWNlKCk7CisjZWxzZQorICAgIElNTGFu
Z0ZvbnRMaW5rKiBnZXRGb250TGlua0ludGVyZmFjZSgpOworI2VuZGlmCisgICAgc3RhdGljIHZv
aWQgY29tSW5pdGlhbGl6ZSgpOworICAgIHN0YXRpYyB2b2lkIGNvbVVuaW5pdGlhbGl6ZSgpOwor
I2VsaWYgUExBVEZPUk0oV0lOKQogICAgIElNTGFuZ0ZvbnRMaW5rMiogZ2V0Rm9udExpbmtJbnRl
cmZhY2UoKTsKICNlbmRpZgogCkBAIC05Myw2ICsxMDIsOSBAQCBwcml2YXRlOgogCiAgICAgZnJp
ZW5kIGNsYXNzIFNpbXBsZUZvbnREYXRhOwogICAgIGZyaWVuZCBjbGFzcyBGb250RmFsbGJhY2tM
aXN0OworI2lmIFBMQVRGT1JNKFdJTkNFKQorICAgIGZyaWVuZCBjbGFzcyBGb250OworI2VuZGlm
CiB9OwogCiAvLyBHZXQgdGhlIGdsb2JhbCBmb250Q2FjaGUuCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRGYXN0UGF0aC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ZvbnRGYXN0UGF0aC5jcHAKaW5kZXggNzRiN2VjMS4uNGIxNmNiYyAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250RmFzdFBhdGguY3BwCisrKyBiL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEZhc3RQYXRoLmNwcApAQCAtMSw2ICsxLDcgQEAKIC8q
KgogICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMDggSG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIKKyAqIENvcHlyaWdo
dCAoQykgMjAwOSBUb3JjaCBNb2JpbGUsIEluYy4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMTU1
LDE2ICsxNTYsMzMgQEAgR2x5cGhEYXRhIEZvbnQ6OmdseXBoRGF0YUZvckNoYXJhY3RlcihVQ2hh
cjMyIGMsIGJvb2wgbWlycm9yLCBib29sIGZvcmNlU21hbGxDYXAKICAgICAgICAgR2x5cGhQYWdl
KiBmYWxsYmFja1BhZ2UgPSBHbHlwaFBhZ2VUcmVlTm9kZTo6Z2V0Um9vdENoaWxkKGNoYXJhY3Rl
ckZvbnREYXRhLCBwYWdlTnVtYmVyKS0+cGFnZSgpOwogICAgICAgICBHbHlwaERhdGEgZGF0YSA9
IGZhbGxiYWNrUGFnZSAmJiBmYWxsYmFja1BhZ2UtPmZvbnREYXRhRm9yQ2hhcmFjdGVyKGMpID8g
ZmFsbGJhY2tQYWdlLT5nbHlwaERhdGFGb3JDaGFyYWN0ZXIoYykgOiBjaGFyYWN0ZXJGb250RGF0
YS0+bWlzc2luZ0dseXBoRGF0YSgpOwogICAgICAgICAvLyBDYWNoZSBpdCBzbyB3ZSBkb24ndCBo
YXZlIHRvIGRvIHN5c3RlbSBmYWxsYmFjayBhZ2FpbiBuZXh0IHRpbWUuCi0gICAgICAgIGlmICgh
dXNlU21hbGxDYXBzRm9udCkKKyAgICAgICAgaWYgKCF1c2VTbWFsbENhcHNGb250KSB7CisjaWYg
UExBVEZPUk0oV0lOQ0UpCisgICAgICAgICAgICAvLyBtaXNzaW5nR2x5cGhEYXRhIHJldHVybnMg
YSBudWxsIGNoYXJhY3Rlciwgd2hpY2ggaXMgbm90IHN1aXRhYmxlIGZvciBHREkgdG8gZGlzcGxh
eS4KKyAgICAgICAgICAgIC8vIEFsc28sIHNvbWV0aW1lcyB3ZSBjYW5ub3QgbWFwIGEgZm9udCBm
b3IgdGhlIGNoYXJhY3RlciBvbiBXSU5DRSwgYnV0IEdESSBjYW4gc3RpbGwKKyAgICAgICAgICAg
IC8vIGRpc3BsYXkgdGhlIGNoYXJhY3RlciwgcHJvYmFibHkgYmVjYXVzZSB0aGUgZm9udCBwYWNr
YWdlIGlzIG5vdCBpbnN0YWxsZWQgY29ycmVjdGx5LgorICAgICAgICAgICAgLy8gU28gd2UganVz
dCBhbHdheXMgc2V0IHRoZSBnbHlwaCB0byBiZSBzYW1lIGFzIHRoZSBjaGFyYWN0ZXIsIGFuZCBs
ZXQgR0RJIHNvbHZlIGl0LgorICAgICAgICAgICAgcGFnZS0+c2V0R2x5cGhEYXRhRm9yQ2hhcmFj
dGVyKGMsIGMsIGNoYXJhY3RlckZvbnREYXRhKTsKKyAgICAgICAgICAgIHJldHVybiBwYWdlLT5n
bHlwaERhdGFGb3JDaGFyYWN0ZXIoYyk7CisjZWxzZQogICAgICAgICAgICAgcGFnZS0+c2V0R2x5
cGhEYXRhRm9yQ2hhcmFjdGVyKGMsIGRhdGEuZ2x5cGgsIGRhdGEuZm9udERhdGEpOworI2VuZGlm
CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGRhdGE7CiAgICAgfQogCiAgICAgLy8gRXZlbiBz
eXN0ZW0gZmFsbGJhY2sgY2FuIGZhaWw7IHVzZSB0aGUgbWlzc2luZyBnbHlwaCBpbiB0aGF0IGNh
c2UuCiAgICAgLy8gRklYTUU6IEl0IHdvdWxkIGJlIG5pY2VyIHRvIHVzZSB0aGUgbWlzc2luZyBn
bHlwaCBmcm9tIHRoZSBsYXN0IHJlc29ydCBmb250IGluc3RlYWQuCiAgICAgR2x5cGhEYXRhIGRh
dGEgPSBwcmltYXJ5Rm9udCgpLT5taXNzaW5nR2x5cGhEYXRhKCk7Ci0gICAgaWYgKCF1c2VTbWFs
bENhcHNGb250KQorICAgIGlmICghdXNlU21hbGxDYXBzRm9udCkgeworI2lmIFBMQVRGT1JNKFdJ
TkNFKQorICAgICAgICAvLyBzZWUgY29tbWVudCBhYm92ZQorICAgICAgICBwYWdlLT5zZXRHbHlw
aERhdGFGb3JDaGFyYWN0ZXIoYywgYywgZGF0YS5mb250RGF0YSk7CisgICAgICAgIHJldHVybiBw
YWdlLT5nbHlwaERhdGFGb3JDaGFyYWN0ZXIoYyk7CisjZWxzZQogICAgICAgICBwYWdlLT5zZXRH
bHlwaERhdGFGb3JDaGFyYWN0ZXIoYywgZGF0YS5nbHlwaCwgZGF0YS5mb250RGF0YSk7CisjZW5k
aWYKKyAgICB9CiAgICAgcmV0dXJuIGRhdGE7CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR2x5cGhCdWZmZXIuaCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R2x5cGhCdWZmZXIuaAppbmRleCBkY2RhNDE5Li44OGM4YmVmIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dseXBoQnVmZmVyLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HbHlwaEJ1ZmZlci5oCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAo
QykgMjAwNiwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMDctMjAwOCBUb3JjaCBNb2JpbGUgSW5jLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC00OSw2ICs1MCw4IEBAIGNsYXNzIFNpbXBsZUZvbnREYXRhOwogI2lmIFBM
QVRGT1JNKENBSVJPKQogLy8gRklYTUU6IFdoeSBkb2VzIENhaXJvIHVzZSBzdWNoIGEgaHVnZSBz
dHJ1Y3QgaW5zdGVhZCBvZiBqdXN0IGFuIG9mZnNldCBpbnRvIGFuIGFycmF5PwogdHlwZWRlZiBj
YWlyb19nbHlwaF90IEdseXBoQnVmZmVyR2x5cGg7CisjZWxpZiBQTEFURk9STShXSU5DRSkKK3R5
cGVkZWYgd2NoYXJfdCBHbHlwaEJ1ZmZlckdseXBoOwogI2Vsc2UKIHR5cGVkZWYgR2x5cGggR2x5
cGhCdWZmZXJHbHlwaDsKICNlbmRpZgpAQCAtNTcsNiArNjAsOCBAQCB0eXBlZGVmIEdseXBoIEds
eXBoQnVmZmVyR2x5cGg7CiAvLyBjYW4gYmUgcGFzc2VkIGRpcmVjdGx5IHRvIENHQ29udGV4dFNo
b3dHbHlwaHNXaXRoQWR2YW5jZXMgaW4gRm9udE1hYy5tbQogI2lmIFBMQVRGT1JNKENHKQogdHlw
ZWRlZiBDR1NpemUgR2x5cGhCdWZmZXJBZHZhbmNlOworI2VsaWYgUExBVEZPUk0oV0lOQ0UpCit0
eXBlZGVmIGZsb2F0IEdseXBoQnVmZmVyQWR2YW5jZTsKICNlbHNlCiB0eXBlZGVmIEZsb2F0U2l6
ZSBHbHlwaEJ1ZmZlckFkdmFuY2U7CiAjZW5kaWYKQEAgLTExNywxMSArMTIyLDIwIEBAIHB1Ymxp
YzoKICAgICB7CiAjaWYgUExBVEZPUk0oQ0cpCiAgICAgICAgIHJldHVybiBtX2FkdmFuY2VzW2lu
ZGV4XS53aWR0aDsKKyNlbGlmIFBMQVRGT1JNKFdJTkNFKQorICAgICAgICByZXR1cm4gbV9hZHZh
bmNlc1tpbmRleF07CiAjZWxzZQogICAgICAgICByZXR1cm4gbV9hZHZhbmNlc1tpbmRleF0ud2lk
dGgoKTsKICNlbmRpZgogICAgIH0KIAorI2lmIFBMQVRGT1JNKFdJTkNFKQorICAgIGNvbnN0IEds
eXBoQnVmZmVyQWR2YW5jZSogYWR2YW5jZURhdGEoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0
dXJuIG1fYWR2YW5jZXMuZGF0YSgpOworICAgIH0KKyNlbmRpZgorCiAgICAgRmxvYXRTaXplIG9m
ZnNldEF0KGludCBpbmRleCkgY29uc3QKICAgICB7CiAjaWYgUExBVEZPUk0oV0lOKQpAQCAtMTQ3
LDYgKzE2MSw4IEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShDRykKICAgICAgICAgQ0dTaXplIGFk
dmFuY2UgPSB7IHdpZHRoLCAwIH07CiAgICAgICAgIG1fYWR2YW5jZXMuYXBwZW5kKGFkdmFuY2Up
OworI2VsaWYgUExBVEZPUk0oV0lOQ0UpCisgICAgICAgIG1fYWR2YW5jZXMuYXBwZW5kKHdpZHRo
KTsKICNlbHNlCiAgICAgICAgIG1fYWR2YW5jZXMuYXBwZW5kKEZsb2F0U2l6ZSh3aWR0aCwgMCkp
OwogI2VuZGlmCkBAIC0xNjEsNiArMTc3LDcgQEAgcHVibGljOgogI2VuZGlmCiAgICAgfQogICAg
IAorI2lmICFQTEFURk9STShXSU5DRSkKICAgICB2b2lkIGFkZChHbHlwaCBnbHlwaCwgY29uc3Qg
U2ltcGxlRm9udERhdGEqIGZvbnQsIEdseXBoQnVmZmVyQWR2YW5jZSBhZHZhbmNlKQogICAgIHsK
ICAgICAgICAgbV9mb250RGF0YS5hcHBlbmQoZm9udCk7CkBAIC0xNzQsNiArMTkxLDcgQEAgcHVi
bGljOgogCiAgICAgICAgIG1fYWR2YW5jZXMuYXBwZW5kKGFkdmFuY2UpOwogICAgIH0KKyNlbmRp
ZgogICAgIAogcHJpdmF0ZToKICAgICBWZWN0b3I8Y29uc3QgU2ltcGxlRm9udERhdGEqLCAyMDQ4
PiBtX2ZvbnREYXRhOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlw
aFBhZ2VUcmVlTm9kZS5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dseXBoUGFnZVRy
ZWVOb2RlLmNwcAppbmRleCA2NDE5ZTBjLi45ZDliYTI2IDEwMDY0NAotLS0gYS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dseXBoUGFnZVRyZWVOb2RlLmNwcAorKysgYi9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dseXBoUGFnZVRyZWVOb2RlLmNwcApAQCAtMjAyLDggKzIwMiw4IEBAIHZv
aWQgR2x5cGhQYWdlVHJlZU5vZGU6OmluaXRpYWxpemVQYWdlKGNvbnN0IEZvbnREYXRhKiBmb250
RGF0YSwgdW5zaWduZWQgcGFnZU51CiAgICAgICAgICAgICAgICAgR2x5cGhQYWdlKiBwYWdlVG9G
aWxsID0gbV9wYWdlLmdldCgpOwogICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBudW1SYW5nZXM7IGkrKykgewogICAgICAgICAgICAgICAgICAgICBjb25zdCBGb250RGF0
YVJhbmdlJiByYW5nZSA9IHNlZ21lbnRlZEZvbnREYXRhLT5yYW5nZUF0KGkpOwotICAgICAgICAg
ICAgICAgICAgICBpbnQgZnJvbSA9IG1heCgwLCByYW5nZS5mcm9tKCkgLSBzdGF0aWNfY2FzdDxp
bnQ+KHN0YXJ0KSk7Ci0gICAgICAgICAgICAgICAgICAgIGludCB0byA9IDEgKyBtaW4ocmFuZ2Uu
dG8oKSAtIHN0YXRpY19jYXN0PGludD4oc3RhcnQpLCBzdGF0aWNfY2FzdDxpbnQ+KEdseXBoUGFn
ZTo6c2l6ZSkgLSAxKTsKKyAgICAgICAgICAgICAgICAgICAgaW50IGZyb20gPSBtYXg8aW50Pigw
LCByYW5nZS5mcm9tKCkgLSBzdGF0aWNfY2FzdDxpbnQ+KHN0YXJ0KSk7CisgICAgICAgICAgICAg
ICAgICAgIGludCB0byA9IDEgKyBtaW48aW50PihyYW5nZS50bygpIC0gc3RhdGljX2Nhc3Q8aW50
PihzdGFydCksIHN0YXRpY19jYXN0PGludD4oR2x5cGhQYWdlOjpzaXplKSAtIDEpOwogICAgICAg
ICAgICAgICAgICAgICBpZiAoZnJvbSA8IHN0YXRpY19jYXN0PGludD4oR2x5cGhQYWdlOjpzaXpl
KSAmJiB0byA+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoYXZlR2x5cGhzICYm
ICFzY3JhdGNoUGFnZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcmF0Y2hQYWdl
ID0gR2x5cGhQYWdlOjpjcmVhdGUodGhpcyk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1NpbXBsZUZvbnREYXRhLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
U2ltcGxlRm9udERhdGEuY3BwCmluZGV4IGM4NzkyMjguLjk4YTYwM2QgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2ltcGxlRm9udERhdGEuY3BwCisrKyBiL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvU2ltcGxlRm9udERhdGEuY3BwCkBAIC01Nyw2ICs1Nyw4IEBAIFNp
bXBsZUZvbnREYXRhOjpTaW1wbGVGb250RGF0YShjb25zdCBGb250UGxhdGZvcm1EYXRhJiBmLCBi
b29sIGN1c3RvbUZvbnQsIGJvb2wKICAgICAsIG1faXNDdXN0b21Gb250KGN1c3RvbUZvbnQpCiAg
ICAgLCBtX2lzTG9hZGluZyhsb2FkaW5nKQogICAgICwgbV9zbWFsbENhcHNGb250RGF0YSgwKQor
ICAgICwgbV9hdmdDaGFyV2lkdGgoLTEpCisgICAgLCBtX21heENoYXJXaWR0aCgtMSkKIHsKICNp
ZiAhRU5BQkxFKFNWR19GT05UUykKICAgICBVTlVTRURfUEFSQU0oc3ZnRm9udERhdGEpOwpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaW1wbGVGb250RGF0YS5oIGIvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaW1wbGVGb250RGF0YS5oCmluZGV4IGNiNDcyYjAuLjQx
YjhiMGMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2ltcGxlRm9udERh
dGEuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NpbXBsZUZvbnREYXRhLmgKQEAg
LTIsNiArMiw3IEBACiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgaW50ZXJuYWwgZm9udCBp
bXBsZW1lbnRhdGlvbi4KICAqCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMDggVG9yY2gg
TW9iaWxlLCBJbmMuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTMzLDcgKzM0LDcgQEAKIHR5cGVk
ZWYgc3RydWN0IE9wYXF1ZUFUU1VTdHlsZSogQVRTVVN0eWxlOwogI2VuZGlmCiAKLSNpZiBQTEFU
Rk9STShXSU4pCisjaWYgUExBVEZPUk0oV0lOKSAmJiAhUExBVEZPUk0oV0lOQ0UpCiAjaW5jbHVk
ZSA8dXNwMTAuaD4KICNlbmRpZgogCkBAIC0xMzQsOSArMTM1LDEwIEBAIHB1YmxpYzoKIAogI2lm
IFBMQVRGT1JNKFdJTikKICAgICBib29sIGlzU3lzdGVtRm9udCgpIGNvbnN0IHsgcmV0dXJuIG1f
aXNTeXN0ZW1Gb250OyB9CisjaWYgIVBMQVRGT1JNKFdJTkNFKQogICAgIFNDUklQVF9GT05UUFJP
UEVSVElFUyogc2NyaXB0Rm9udFByb3BlcnRpZXMoKSBjb25zdDsKICAgICBTQ1JJUFRfQ0FDSEUq
IHNjcmlwdENhY2hlKCkgY29uc3QgeyByZXR1cm4gJm1fc2NyaXB0Q2FjaGU7IH0KLQorI2VuZGlm
CiAgICAgc3RhdGljIHZvaWQgc2V0U2hvdWxkQXBwbHlNYWNBc2NlbnRIYWNrKGJvb2wpOwogICAg
IHN0YXRpYyBib29sIHNob3VsZEFwcGx5TWFjQXNjZW50SGFjaygpOwogI2VuZGlmCkBAIC0xNTks
NyArMTYxLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY29tbW9uSW5pdCgpOwogCi0jaWYgUExB
VEZPUk0oV0lOKQorI2lmIFBMQVRGT1JNKFdJTikgJiYgIVBMQVRGT1JNKFdJTkNFKQogICAgIHZv
aWQgaW5pdEdESUZvbnQoKTsKICAgICB2b2lkIHBsYXRmb3JtQ29tbW9uRGVzdHJveSgpOwogICAg
IGZsb2F0IHdpZHRoRm9yR0RJR2x5cGgoR2x5cGggZ2x5cGgpIGNvbnN0OwpAQCAtMjI0LDkgKzIy
NiwxMSBAQCBwcml2YXRlOgogCiAjaWYgUExBVEZPUk0oV0lOKQogICAgIGJvb2wgbV9pc1N5c3Rl
bUZvbnQ7CisjaWYgIVBMQVRGT1JNKFdJTkNFKQogICAgIG11dGFibGUgU0NSSVBUX0NBQ0hFIG1f
c2NyaXB0Q2FjaGU7CiAgICAgbXV0YWJsZSBTQ1JJUFRfRk9OVFBST1BFUlRJRVMqIG1fc2NyaXB0
Rm9udFByb3BlcnRpZXM7CiAjZW5kaWYKKyNlbmRpZgogfTsKICAgICAKICAgICAKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMu
Y3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGll
cy5jcHAKaW5kZXggODk1ODg3Zi4uNzBhZTAyZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5jcHAKKysrIGIvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5jcHAKQEAgLTEsNSAr
MSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IEFwcGxlIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgVG9yY2ggTW9iaWxlLCBJbmMu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTY5LDcgKzcwLDEwIEBAIHN0cnVj
dCBUYWJsZURpcmVjdG9yeUVudHJ5IHsKICAgICBCaWdFbmRpYW5VTG9uZyBsZW5ndGg7CiB9Owog
Ci0jaWYgIVBMQVRGT1JNKENHKQorI2lmIFBMQVRGT1JNKFdJTkNFKQorLy8gTmVlZCB0byB1c2Ug
I2RlZmluZSBpbnN0ZWFkIG9mIHR5cGVkZWYgZHVlIHRvIGNvbmZsaWN0CisjZGVmaW5lIEZpeGVk
IGludDMyX3QKKyNlbGlmICFQTEFURk9STShDRykKIC8vIEZpeGVkIHR5cGUgaXMgbm90IGRlZmlu
ZWQgb24gbm9uLUNHIHBsYXRmb3Jtcy4gfHZlcnNpb258IGluIHNmbnRIZWFkZXIKIC8vIGFuZCBo
ZWFkVGFibGUgYW5kIHxmb250UmV2aXNpb258IGluIGhlYWRUYWJsZSBhcmUgb2YgRml4ZWQsIGJ1
dCB0aGV5J3JlCiAvLyBub3QgYWN0dWFsbHkgcmVmZXJlZCB0byBhbnl3aGVyZS4gVGhlcmVmb3Jl
LCB3ZSBqdXN0IGhhdmUgdG8gbWF0Y2gKQEAgLTMzOSw2ICszNDMsNzMgQEAgYm9vbCBnZXRFT1RI
ZWFkZXIoU2hhcmVkQnVmZmVyKiBmb250RGF0YSwgRU9USGVhZGVyJiBlb3RIZWFkZXIsIHNpemVf
dCYgb3ZlcmxheUQKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorI2lmIFBMQVRGT1JNKFdJTkNFKQor
Ym9vbCByZW5hbWVGb250KFNoYXJlZEJ1ZmZlciogZm9udERhdGEsIGNvbnN0IFN0cmluZyYgZm9u
dE5hbWUpCit7CisgICAgc2l6ZV90IG9yaWdpbmFsRGF0YVNpemUgPSBmb250RGF0YS0+c2l6ZSgp
OworICAgIGlmIChvcmlnaW5hbERhdGFTaXplIDwgb2Zmc2V0b2Yoc2ZudEhlYWRlciwgdGFibGVz
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgY29uc3Qgc2ZudEhlYWRlciogc2ZudCA9
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgc2ZudEhlYWRlcio+KGZvbnREYXRhLT5kYXRhKCkpOwor
CisgICAgaWYgKG9yaWdpbmFsRGF0YVNpemUgPCBvZmZzZXRvZihzZm50SGVhZGVyLCB0YWJsZXMp
ICsgc2ZudC0+bnVtVGFibGVzICogc2l6ZW9mKFRhYmxlRGlyZWN0b3J5RW50cnkpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICB1bnNpZ25lZCB0OworICAgIGZvciAodCA9IDA7IHQgPCBz
Zm50LT5udW1UYWJsZXM7ICsrdCkgeworICAgICAgICBpZiAoc2ZudC0+dGFibGVzW3RdLnRhZyA9
PSAnbmFtZScpCisgICAgICAgICAgICBicmVhazsKKyAgICB9CisgICAgaWYgKHQgPT0gc2ZudC0+
bnVtVGFibGVzKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBjb25zdCBpbnQgbmFtZVJl
Y29yZENvdW50ID0gNTsKKworICAgIC8vIFJvdW5kZWQgdXAgdG8gYSBtdWx0aXBsZSBvZiA0IHRv
IHNpbXBsaWZ5IHRoZSBjaGVja3N1bSBjYWxjdWxhdGlvbi4KKyAgICBzaXplX3QgbmFtZVRhYmxl
U2l6ZSA9ICgob2Zmc2V0b2YobmFtZVRhYmxlLCBuYW1lUmVjb3JkcykgKyBuYW1lUmVjb3JkQ291
bnQgKiBzaXplb2YobmFtZVJlY29yZCkgKyBmb250TmFtZS5sZW5ndGgoKSAqIHNpemVvZihVQ2hh
cikpICYgfjMpICsgNDsKKworICAgIFZlY3RvcjxjaGFyPiByZXdyaXR0ZW5Gb250RGF0YShmb250
RGF0YS0+c2l6ZSgpICsgbmFtZVRhYmxlU2l6ZSk7CisgICAgY2hhciogZGF0YSA9IHJld3JpdHRl
bkZvbnREYXRhLmRhdGEoKTsKKyAgICBtZW1jcHkoZGF0YSwgZm9udERhdGEtPmRhdGEoKSwgb3Jp
Z2luYWxEYXRhU2l6ZSk7CisKKyAgICAvLyBNYWtlIHRoZSB0YWJsZSBkaXJlY3RvcnkgZW50cnkg
cG9pbnQgdG8gdGhlIG5ldyAnbmFtZScgdGFibGUuCisgICAgc2ZudEhlYWRlciogcmV3cml0dGVu
U2ZudCA9IHJlaW50ZXJwcmV0X2Nhc3Q8c2ZudEhlYWRlcio+KGRhdGEpOworICAgIHJld3JpdHRl
blNmbnQtPnRhYmxlc1t0XS5sZW5ndGggPSBuYW1lVGFibGVTaXplOworICAgIHJld3JpdHRlblNm
bnQtPnRhYmxlc1t0XS5vZmZzZXQgPSBvcmlnaW5hbERhdGFTaXplOworCisgICAgLy8gV3JpdGUg
dGhlIG5ldyAnbmFtZScgdGFibGUgYWZ0ZXIgdGhlIG9yaWdpbmFsIGZvbnQgZGF0YS4KKyAgICBu
YW1lVGFibGUqIG5hbWUgPSByZWludGVycHJldF9jYXN0PG5hbWVUYWJsZSo+KGRhdGEgKyBvcmln
aW5hbERhdGFTaXplKTsKKyAgICBuYW1lLT5mb3JtYXQgPSAwOworICAgIG5hbWUtPmNvdW50ID0g
bmFtZVJlY29yZENvdW50OworICAgIG5hbWUtPnN0cmluZ09mZnNldCA9IG9mZnNldG9mKG5hbWVU
YWJsZSwgbmFtZVJlY29yZHMpICsgbmFtZVJlY29yZENvdW50ICogc2l6ZW9mKG5hbWVSZWNvcmQp
OworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBuYW1lUmVjb3JkQ291bnQ7ICsraSkgewor
ICAgICAgICBuYW1lLT5uYW1lUmVjb3Jkc1tpXS5wbGF0Zm9ybUlEID0gMzsKKyAgICAgICAgbmFt
ZS0+bmFtZVJlY29yZHNbaV0uZW5jb2RpbmdJRCA9IDE7CisgICAgICAgIG5hbWUtPm5hbWVSZWNv
cmRzW2ldLmxhbmd1YWdlSUQgPSAweDA0MDk7CisgICAgICAgIG5hbWUtPm5hbWVSZWNvcmRzW2ld
Lm9mZnNldCA9IDA7CisgICAgICAgIG5hbWUtPm5hbWVSZWNvcmRzW2ldLmxlbmd0aCA9IGZvbnRO
YW1lLmxlbmd0aCgpICogc2l6ZW9mKFVDaGFyKTsKKyAgICB9CisKKyAgICAvLyBUaGUgcmVxdWly
ZWQgJ25hbWUnIHJlY29yZCB0eXBlczogRmFtaWx5LCBTdHlsZSwgVW5pcXVlLCBGdWxsIGFuZCBQ
b3N0U2NyaXB0LgorICAgIG5hbWUtPm5hbWVSZWNvcmRzWzBdLm5hbWVJRCA9IDE7CisgICAgbmFt
ZS0+bmFtZVJlY29yZHNbMV0ubmFtZUlEID0gMjsKKyAgICBuYW1lLT5uYW1lUmVjb3Jkc1syXS5u
YW1lSUQgPSAzOworICAgIG5hbWUtPm5hbWVSZWNvcmRzWzNdLm5hbWVJRCA9IDQ7CisgICAgbmFt
ZS0+bmFtZVJlY29yZHNbNF0ubmFtZUlEID0gNjsKKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBmb250TmFtZS5sZW5ndGgoKTsgKytpKQorICAgICAgICByZWludGVycHJldF9jYXN0PEJp
Z0VuZGlhblVTaG9ydCo+KGRhdGEgKyBvcmlnaW5hbERhdGFTaXplICsgbmFtZS0+c3RyaW5nT2Zm
c2V0KVtpXSA9IGZvbnROYW1lW2ldOworCisgICAgLy8gVXBkYXRlIHRoZSB0YWJsZSBjaGVja3N1
bSBpbiB0aGUgZGlyZWN0b3J5IGVudHJ5LgorICAgIHJld3JpdHRlblNmbnQtPnRhYmxlc1t0XS5j
aGVja1N1bSA9IDA7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSAqIHNpemVvZihCaWdFbmRp
YW5VTG9uZykgPCBuYW1lVGFibGVTaXplOyArK2kpCisgICAgICAgIHJld3JpdHRlblNmbnQtPnRh
Ymxlc1t0XS5jaGVja1N1bSA9IHJld3JpdHRlblNmbnQtPnRhYmxlc1t0XS5jaGVja1N1bSArIHJl
aW50ZXJwcmV0X2Nhc3Q8QmlnRW5kaWFuVUxvbmcqPihuYW1lKVtpXTsKKworICAgIGZvbnREYXRh
LT5jbGVhcigpOworICAgIGZvbnREYXRhLT5hcHBlbmQocmV3cml0dGVuRm9udERhdGEuZGF0YSgp
LCByZXdyaXR0ZW5Gb250RGF0YS5zaXplKCkpOworICAgIHJldHVybiB0cnVlOworfQorI2Vsc2UK
IEhBTkRMRSByZW5hbWVBbmRBY3RpdmF0ZUZvbnQoU2hhcmVkQnVmZmVyKiBmb250RGF0YSwgY29u
c3QgU3RyaW5nJiBmb250TmFtZSkKIHsKICAgICBzaXplX3Qgb3JpZ2luYWxEYXRhU2l6ZSA9IGZv
bnREYXRhLT5zaXplKCk7CkBAIC00MDQsNSArNDc1LDYgQEAgSEFORExFIHJlbmFtZUFuZEFjdGl2
YXRlRm9udChTaGFyZWRCdWZmZXIqIGZvbnREYXRhLCBjb25zdCBTdHJpbmcmIGZvbnROYW1lKQog
CiAgICAgcmV0dXJuIGZvbnRIYW5kbGU7CiB9CisjZW5kaWYKIAogfQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oIGIvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oCmluZGV4
IDEzZGFkNmYuLjE3ZDdkMmIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmgKQEAgLTEsNSArMSw2IEBACiAvKgogICog
Q29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgVG9yY2ggTW9iaWxlLCBJbmMuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTI3LDcgKzI4LDkgQEAKICNkZWZpbmUgT3BlblR5cGVVdGls
aXRpZXNfaAogCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpZiAhUExBVEZPUk0oV0lO
Q0UpCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKQEAgLTM1LDYgKzM4LDEwIEBAIHN0cnVjdCBCaWdFbmRpYW5VU2hvcnQ7CiBzdHJ1Y3Qg
RU9UUHJlZml4OwogY2xhc3MgU2hhcmVkQnVmZmVyOwogCisjaWYgUExBVEZPUk0oV0lOQ0UpCit0
eXBlZGVmIHVuc2lnbmVkIF9faW50OCBVSW50ODsKKyNlbmRpZgorCiBzdHJ1Y3QgRU9USGVhZGVy
IHsKICAgICBFT1RIZWFkZXIoKTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW5jZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luY2UvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKaW5kZXggN2M2ODUzYy4u
OTQwZGQ0ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9Gb250
Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bmNlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCkBAIC0zMyw2ICszMywxMSBAQCBzdGF0aWMg
Q3VzdG9tRm9udENhY2hlKiBnX2N1c3RvbUZvbnRDYWNoZSA9IDA7CiAKIGJvb2wgcmVuYW1lRm9u
dChTaGFyZWRCdWZmZXIqIGZvbnREYXRhLCBjb25zdCBTdHJpbmcmIGZvbnROYW1lKTsKIAordm9p
ZCBzZXRDdXN0b21Gb250Q2FjaGUoQ3VzdG9tRm9udENhY2hlKiBjYWNoZSkKK3sKKyAgICBnX2N1
c3RvbUZvbnRDYWNoZSA9IGNhY2hlOworfQorCiBGb250Q3VzdG9tUGxhdGZvcm1EYXRhOjp+Rm9u
dEN1c3RvbVBsYXRmb3JtRGF0YSgpCiB7CiAgICAgaWYgKGdfY3VzdG9tRm9udENhY2hlICYmICFt
X25hbWUuaXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW5jZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmggYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbmNlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAppbmRleCBiMWY2NGEwLi5lYzI1YjcwIDEw
MDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0ZvbnRDdXN0b21QbGF0
Zm9ybURhdGEuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0ZvbnRDdXN0
b21QbGF0Zm9ybURhdGEuaApAQCAtNDksNyArNDksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgfTsKIAogICAgIEZvbnRDdXN0b21QbGF0Zm9ybURhdGEqIGNyZWF0ZUZvbnRDdXN0b21QbGF0
Zm9ybURhdGEoQ2FjaGVkRm9udCopOwotCisgICAgdm9pZCBzZXRDdXN0b21Gb250Q2FjaGUoQ3Vz
dG9tRm9udENhY2hlKik7CiB9CiAKICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34173</attachid>
            <date>2009-08-05 14:07:47 -0700</date>
            <delta_ts>2009-08-05 14:41:12 -0700</delta_ts>
            <desc>include changes to CachedFont.cpp</desc>
            <filename>27734.patch</filename>
            <type>text/plain</type>
            <size>20341</size>
            <attacher name="Yong Li">yong.li.webkit</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
OGRlNzUzOC4uY2U2OWVjMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNSBAQAorMjAwOS0wOC0wNSAgWW9uZyBMaSAgPHlv
bmcubGlAdG9yY2htb2JpbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFdJTkNFIFBPUlQ6IGZvbnQgcmVsYXRlZCBjaGFuZ2VzIChvbiBleGlz
dGluZyBmaWxlcykKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTI3NzM0CisKKyAgICAgICAgKiBsb2FkZXIvQ2FjaGVkRm9udC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRGb250Ojp+Q2FjaGVkRm9udCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRGb250OjplbnN1cmVDdXN0b21Gb250RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRG
b250OjpwbGF0Zm9ybURhdGFGcm9tQ3VzdG9tRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRGb250OjphbGxDbGllbnRzUmVtb3ZlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udENhY2hlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEZhc3RQYXRoLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnQ6OmdseXBoRGF0YUZvckNoYXJhY3Rlcik6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkdseXBoQnVmZmVyOjphZHZhbmNlQXQpOgorICAgICAgICAoV2ViQ29yZTo6R2x5cGhCdWZmZXI6
OmFkdmFuY2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkdseXBoQnVmZmVyOjphZGQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dseXBoUGFnZVRyZWVOb2RlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkdseXBoUGFnZVRyZWVOb2RlOjppbml0aWFsaXplUGFnZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvU2ltcGxlRm9udERhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2ltcGxlRm9udERhdGE6OlNpbXBsZUZvbnREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9TaW1wbGVGb250RGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50
eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlbmFtZUZvbnQp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVz
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZXRDdXN0b21Gb250Q2FjaGUpOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luY2UvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oOgorCiAyMDA5LTA4
LTA1ICBQZXRlciBLYXN0aW5nICA8cGthc3RpbmdAZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBFcmljIFNlaWRlbC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL0NhY2hlZEZv
bnQuY3BwIGIvV2ViQ29yZS9sb2FkZXIvQ2FjaGVkRm9udC5jcHAKaW5kZXggYWYxOGNjOS4uMmRl
Y2U5YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvQ2FjaGVkRm9udC5jcHAKKysrIGIvV2Vi
Q29yZS9sb2FkZXIvQ2FjaGVkRm9udC5jcHAKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJp
Z2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAwOSBUb3JjaCBNb2JpbGUsIEluYy4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMzEsNyArMzIsNyBAQAogI2luY2x1ZGUgIkNhY2hlZFJlc291
cmNlQ2xpZW50V2Fsa2VyLmgiCiAjaW5jbHVkZSAiRE9NSW1wbGVtZW50YXRpb24uaCIKICNpbmNs
dWRlICJGb250UGxhdGZvcm1EYXRhLmgiCi0jaWYgUExBVEZPUk0oQ0cpIHx8IFBMQVRGT1JNKFFU
KSB8fCBQTEFURk9STShHVEspIHx8IChQTEFURk9STShDSFJPTUlVTSkgJiYgUExBVEZPUk0oV0lO
X09TKSkKKyNpZiBQTEFURk9STShDRykgfHwgUExBVEZPUk0oUVQpIHx8IFBMQVRGT1JNKEdUSykg
fHwgKFBMQVRGT1JNKENIUk9NSVVNKSAmJiBQTEFURk9STShXSU5fT1MpKSB8fCBQTEFURk9STShX
SU5DRSkKICNpbmNsdWRlICJGb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgiCiAjZW5kaWYKICNpbmNs
dWRlICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCkBAIC02MCw3ICs2MSw3IEBAIENhY2hlZEZvbnQ6
OkNhY2hlZEZvbnQoY29uc3QgU3RyaW5nICZ1cmwpCiAKIENhY2hlZEZvbnQ6On5DYWNoZWRGb250
KCkKIHsKLSNpZiBQTEFURk9STShDRykgfHwgUExBVEZPUk0oUVQpIHx8IFBMQVRGT1JNKEdUSykg
fHwgKFBMQVRGT1JNKENIUk9NSVVNKSAmJiBQTEFURk9STShXSU5fT1MpKQorI2lmIFBMQVRGT1JN
KENHKSB8fCBQTEFURk9STShRVCkgfHwgUExBVEZPUk0oR1RLKSB8fCAoUExBVEZPUk0oQ0hST01J
VU0pICYmIFBMQVRGT1JNKFdJTl9PUykpIHx8IFBMQVRGT1JNKFdJTkNFKQogICAgIGRlbGV0ZSBt
X2ZvbnREYXRhOwogI2VuZGlmCiB9CkBAIC05OCw3ICs5OSw3IEBAIHZvaWQgQ2FjaGVkRm9udDo6
YmVnaW5Mb2FkSWZOZWVkZWQoRG9jTG9hZGVyKiBkbCkKIAogYm9vbCBDYWNoZWRGb250OjplbnN1
cmVDdXN0b21Gb250RGF0YSgpCiB7Ci0jaWYgUExBVEZPUk0oQ0cpIHx8IFBMQVRGT1JNKFFUKSB8
fCBQTEFURk9STShHVEspIHx8IChQTEFURk9STShDSFJPTUlVTSkgJiYgUExBVEZPUk0oV0lOX09T
KSkKKyNpZiBQTEFURk9STShDRykgfHwgUExBVEZPUk0oUVQpIHx8IFBMQVRGT1JNKEdUSykgfHwg
KFBMQVRGT1JNKENIUk9NSVVNKSAmJiBQTEFURk9STShXSU5fT1MpKSB8fCBQTEFURk9STShXSU5D
RSkKICNpZiBFTkFCTEUoU1ZHX0ZPTlRTKQogICAgIEFTU0VSVCghbV9pc1NWR0ZvbnQpOwogI2Vu
ZGlmCkBAIC0xMTcsNyArMTE4LDcgQEAgRm9udFBsYXRmb3JtRGF0YSBDYWNoZWRGb250OjpwbGF0
Zm9ybURhdGFGcm9tQ3VzdG9tRGF0YShmbG9hdCBzaXplLCBib29sIGJvbGQsIGIKICAgICBpZiAo
bV9leHRlcm5hbFNWR0RvY3VtZW50KQogICAgICAgICByZXR1cm4gRm9udFBsYXRmb3JtRGF0YShz
aXplLCBib2xkLCBpdGFsaWMpOwogI2VuZGlmCi0jaWYgUExBVEZPUk0oQ0cpIHx8IFBMQVRGT1JN
KFFUKSB8fCBQTEFURk9STShHVEspIHx8IChQTEFURk9STShDSFJPTUlVTSkgJiYgUExBVEZPUk0o
V0lOX09TKSkKKyNpZiBQTEFURk9STShDRykgfHwgUExBVEZPUk0oUVQpIHx8IFBMQVRGT1JNKEdU
SykgfHwgKFBMQVRGT1JNKENIUk9NSVVNKSAmJiBQTEFURk9STShXSU5fT1MpKSB8fCBQTEFURk9S
TShXSU5DRSkKICAgICBBU1NFUlQobV9mb250RGF0YSk7CiAgICAgcmV0dXJuIG1fZm9udERhdGEt
PmZvbnRQbGF0Zm9ybURhdGEoc3RhdGljX2Nhc3Q8aW50PihzaXplKSwgYm9sZCwgaXRhbGljLCBy
ZW5kZXJpbmdNb2RlKTsKICNlbHNlCkBAIC0xNzMsNyArMTc0LDcgQEAgU1ZHRm9udEVsZW1lbnQq
IENhY2hlZEZvbnQ6OmdldFNWR0ZvbnRCeUlkKGNvbnN0IFN0cmluZyYgZm9udE5hbWUpIGNvbnN0
CiAKIHZvaWQgQ2FjaGVkRm9udDo6YWxsQ2xpZW50c1JlbW92ZWQoKQogewotI2lmIFBMQVRGT1JN
KENHKSB8fCBQTEFURk9STShRVCkgfHwgUExBVEZPUk0oR1RLKSB8fCAoUExBVEZPUk0oQ0hST01J
VU0pICYmIFBMQVRGT1JNKFdJTl9PUykpCisjaWYgUExBVEZPUk0oQ0cpIHx8IFBMQVRGT1JNKFFU
KSB8fCBQTEFURk9STShHVEspIHx8IChQTEFURk9STShDSFJPTUlVTSkgJiYgUExBVEZPUk0oV0lO
X09TKSkgfHwgUExBVEZPUk0oV0lOQ0UpCiAgICAgaWYgKG1fZm9udERhdGEpIHsKICAgICAgICAg
ZGVsZXRlIG1fZm9udERhdGE7CiAgICAgICAgIG1fZm9udERhdGEgPSAwOwpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaCBiL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udENhY2hlLmgKaW5kZXggM2MwZjJkOS4uNWI4OGJhOCAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaAorKysgYi9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdo
dCAoQykgMjAwNiwgMjAwOCBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNy0yMDA4IFRvcmNoIE1vYmlsZSwgSW5jLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02Myw3ICs2NCwxNSBAQCBwdWJsaWM6CiAgICAg
Ly8gQWxzbyBpbXBsZW1lbnRlZCBieSB0aGUgcGxhdGZvcm0uCiAgICAgdm9pZCBwbGF0Zm9ybUlu
aXQoKTsKIAotI2lmIFBMQVRGT1JNKFdJTikKKyNpZiBQTEFURk9STShXSU5DRSkKKyNpZiBkZWZp
bmVkKElNTEFOR19GT05UX0xJTkspICYmIChJTUxBTkdfRk9OVF9MSU5LID09IDIpCisgICAgSU1M
YW5nRm9udExpbmsyKiBnZXRGb250TGlua0ludGVyZmFjZSgpOworI2Vsc2UKKyAgICBJTUxhbmdG
b250TGluayogZ2V0Rm9udExpbmtJbnRlcmZhY2UoKTsKKyNlbmRpZgorICAgIHN0YXRpYyB2b2lk
IGNvbUluaXRpYWxpemUoKTsKKyAgICBzdGF0aWMgdm9pZCBjb21VbmluaXRpYWxpemUoKTsKKyNl
bGlmIFBMQVRGT1JNKFdJTikKICAgICBJTUxhbmdGb250TGluazIqIGdldEZvbnRMaW5rSW50ZXJm
YWNlKCk7CiAjZW5kaWYKIApAQCAtOTMsNiArMTAyLDkgQEAgcHJpdmF0ZToKIAogICAgIGZyaWVu
ZCBjbGFzcyBTaW1wbGVGb250RGF0YTsKICAgICBmcmllbmQgY2xhc3MgRm9udEZhbGxiYWNrTGlz
dDsKKyNpZiBQTEFURk9STShXSU5DRSkKKyAgICBmcmllbmQgY2xhc3MgRm9udDsKKyNlbmRpZgog
fTsKIAogLy8gR2V0IHRoZSBnbG9iYWwgZm9udENhY2hlLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb250RmFzdFBhdGguY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250RmFzdFBhdGguY3BwCmluZGV4IDc0YjdlYzEuLjRiMTZjYmMgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEZhc3RQYXRoLmNwcAorKysgYi9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRGYXN0UGF0aC5jcHAKQEAgLTEsNiArMSw3IEBACiAvKioK
ICAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLgogICogQ29w
eXJpZ2h0IChDKSAyMDA4IEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVyCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDkgVG9yY2ggTW9iaWxlLCBJbmMuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTE1NSwx
NiArMTU2LDMzIEBAIEdseXBoRGF0YSBGb250OjpnbHlwaERhdGFGb3JDaGFyYWN0ZXIoVUNoYXIz
MiBjLCBib29sIG1pcnJvciwgYm9vbCBmb3JjZVNtYWxsQ2FwCiAgICAgICAgIEdseXBoUGFnZSog
ZmFsbGJhY2tQYWdlID0gR2x5cGhQYWdlVHJlZU5vZGU6OmdldFJvb3RDaGlsZChjaGFyYWN0ZXJG
b250RGF0YSwgcGFnZU51bWJlciktPnBhZ2UoKTsKICAgICAgICAgR2x5cGhEYXRhIGRhdGEgPSBm
YWxsYmFja1BhZ2UgJiYgZmFsbGJhY2tQYWdlLT5mb250RGF0YUZvckNoYXJhY3RlcihjKSA/IGZh
bGxiYWNrUGFnZS0+Z2x5cGhEYXRhRm9yQ2hhcmFjdGVyKGMpIDogY2hhcmFjdGVyRm9udERhdGEt
Pm1pc3NpbmdHbHlwaERhdGEoKTsKICAgICAgICAgLy8gQ2FjaGUgaXQgc28gd2UgZG9uJ3QgaGF2
ZSB0byBkbyBzeXN0ZW0gZmFsbGJhY2sgYWdhaW4gbmV4dCB0aW1lLgotICAgICAgICBpZiAoIXVz
ZVNtYWxsQ2Fwc0ZvbnQpCisgICAgICAgIGlmICghdXNlU21hbGxDYXBzRm9udCkgeworI2lmIFBM
QVRGT1JNKFdJTkNFKQorICAgICAgICAgICAgLy8gbWlzc2luZ0dseXBoRGF0YSByZXR1cm5zIGEg
bnVsbCBjaGFyYWN0ZXIsIHdoaWNoIGlzIG5vdCBzdWl0YWJsZSBmb3IgR0RJIHRvIGRpc3BsYXku
CisgICAgICAgICAgICAvLyBBbHNvLCBzb21ldGltZXMgd2UgY2Fubm90IG1hcCBhIGZvbnQgZm9y
IHRoZSBjaGFyYWN0ZXIgb24gV0lOQ0UsIGJ1dCBHREkgY2FuIHN0aWxsCisgICAgICAgICAgICAv
LyBkaXNwbGF5IHRoZSBjaGFyYWN0ZXIsIHByb2JhYmx5IGJlY2F1c2UgdGhlIGZvbnQgcGFja2Fn
ZSBpcyBub3QgaW5zdGFsbGVkIGNvcnJlY3RseS4KKyAgICAgICAgICAgIC8vIFNvIHdlIGp1c3Qg
YWx3YXlzIHNldCB0aGUgZ2x5cGggdG8gYmUgc2FtZSBhcyB0aGUgY2hhcmFjdGVyLCBhbmQgbGV0
IEdESSBzb2x2ZSBpdC4KKyAgICAgICAgICAgIHBhZ2UtPnNldEdseXBoRGF0YUZvckNoYXJhY3Rl
cihjLCBjLCBjaGFyYWN0ZXJGb250RGF0YSk7CisgICAgICAgICAgICByZXR1cm4gcGFnZS0+Z2x5
cGhEYXRhRm9yQ2hhcmFjdGVyKGMpOworI2Vsc2UKICAgICAgICAgICAgIHBhZ2UtPnNldEdseXBo
RGF0YUZvckNoYXJhY3RlcihjLCBkYXRhLmdseXBoLCBkYXRhLmZvbnREYXRhKTsKKyNlbmRpZgor
ICAgICAgICB9CiAgICAgICAgIHJldHVybiBkYXRhOwogICAgIH0KIAogICAgIC8vIEV2ZW4gc3lz
dGVtIGZhbGxiYWNrIGNhbiBmYWlsOyB1c2UgdGhlIG1pc3NpbmcgZ2x5cGggaW4gdGhhdCBjYXNl
LgogICAgIC8vIEZJWE1FOiBJdCB3b3VsZCBiZSBuaWNlciB0byB1c2UgdGhlIG1pc3NpbmcgZ2x5
cGggZnJvbSB0aGUgbGFzdCByZXNvcnQgZm9udCBpbnN0ZWFkLgogICAgIEdseXBoRGF0YSBkYXRh
ID0gcHJpbWFyeUZvbnQoKS0+bWlzc2luZ0dseXBoRGF0YSgpOwotICAgIGlmICghdXNlU21hbGxD
YXBzRm9udCkKKyAgICBpZiAoIXVzZVNtYWxsQ2Fwc0ZvbnQpIHsKKyNpZiBQTEFURk9STShXSU5D
RSkKKyAgICAgICAgLy8gc2VlIGNvbW1lbnQgYWJvdmUKKyAgICAgICAgcGFnZS0+c2V0R2x5cGhE
YXRhRm9yQ2hhcmFjdGVyKGMsIGMsIGRhdGEuZm9udERhdGEpOworICAgICAgICByZXR1cm4gcGFn
ZS0+Z2x5cGhEYXRhRm9yQ2hhcmFjdGVyKGMpOworI2Vsc2UKICAgICAgICAgcGFnZS0+c2V0R2x5
cGhEYXRhRm9yQ2hhcmFjdGVyKGMsIGRhdGEuZ2x5cGgsIGRhdGEuZm9udERhdGEpOworI2VuZGlm
CisgICAgfQogICAgIHJldHVybiBkYXRhOwogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dseXBoQnVmZmVyLmggYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ds
eXBoQnVmZmVyLmgKaW5kZXggZGNkYTQxOS4uODhjOGJlZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HbHlwaEJ1ZmZlci5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR2x5cGhCdWZmZXIuaApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMDYsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDA3LTIwMDggVG9yY2ggTW9iaWxlIEluYy4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtNDksNiArNTAsOCBAQCBjbGFzcyBTaW1wbGVGb250RGF0YTsKICNpZiBQTEFU
Rk9STShDQUlSTykKIC8vIEZJWE1FOiBXaHkgZG9lcyBDYWlybyB1c2Ugc3VjaCBhIGh1Z2Ugc3Ry
dWN0IGluc3RlYWQgb2YganVzdCBhbiBvZmZzZXQgaW50byBhbiBhcnJheT8KIHR5cGVkZWYgY2Fp
cm9fZ2x5cGhfdCBHbHlwaEJ1ZmZlckdseXBoOworI2VsaWYgUExBVEZPUk0oV0lOQ0UpCit0eXBl
ZGVmIHdjaGFyX3QgR2x5cGhCdWZmZXJHbHlwaDsKICNlbHNlCiB0eXBlZGVmIEdseXBoIEdseXBo
QnVmZmVyR2x5cGg7CiAjZW5kaWYKQEAgLTU3LDYgKzYwLDggQEAgdHlwZWRlZiBHbHlwaCBHbHlw
aEJ1ZmZlckdseXBoOwogLy8gY2FuIGJlIHBhc3NlZCBkaXJlY3RseSB0byBDR0NvbnRleHRTaG93
R2x5cGhzV2l0aEFkdmFuY2VzIGluIEZvbnRNYWMubW0KICNpZiBQTEFURk9STShDRykKIHR5cGVk
ZWYgQ0dTaXplIEdseXBoQnVmZmVyQWR2YW5jZTsKKyNlbGlmIFBMQVRGT1JNKFdJTkNFKQordHlw
ZWRlZiBmbG9hdCBHbHlwaEJ1ZmZlckFkdmFuY2U7CiAjZWxzZQogdHlwZWRlZiBGbG9hdFNpemUg
R2x5cGhCdWZmZXJBZHZhbmNlOwogI2VuZGlmCkBAIC0xMTcsMTEgKzEyMiwyMCBAQCBwdWJsaWM6
CiAgICAgewogI2lmIFBMQVRGT1JNKENHKQogICAgICAgICByZXR1cm4gbV9hZHZhbmNlc1tpbmRl
eF0ud2lkdGg7CisjZWxpZiBQTEFURk9STShXSU5DRSkKKyAgICAgICAgcmV0dXJuIG1fYWR2YW5j
ZXNbaW5kZXhdOwogI2Vsc2UKICAgICAgICAgcmV0dXJuIG1fYWR2YW5jZXNbaW5kZXhdLndpZHRo
KCk7CiAjZW5kaWYKICAgICB9CiAKKyNpZiBQTEFURk9STShXSU5DRSkKKyAgICBjb25zdCBHbHlw
aEJ1ZmZlckFkdmFuY2UqIGFkdmFuY2VEYXRhKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVy
biBtX2FkdmFuY2VzLmRhdGEoKTsKKyAgICB9CisjZW5kaWYKKwogICAgIEZsb2F0U2l6ZSBvZmZz
ZXRBdChpbnQgaW5kZXgpIGNvbnN0CiAgICAgewogI2lmIFBMQVRGT1JNKFdJTikKQEAgLTE0Nyw2
ICsxNjEsOCBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oQ0cpCiAgICAgICAgIENHU2l6ZSBhZHZh
bmNlID0geyB3aWR0aCwgMCB9OwogICAgICAgICBtX2FkdmFuY2VzLmFwcGVuZChhZHZhbmNlKTsK
KyNlbGlmIFBMQVRGT1JNKFdJTkNFKQorICAgICAgICBtX2FkdmFuY2VzLmFwcGVuZCh3aWR0aCk7
CiAjZWxzZQogICAgICAgICBtX2FkdmFuY2VzLmFwcGVuZChGbG9hdFNpemUod2lkdGgsIDApKTsK
ICNlbmRpZgpAQCAtMTYxLDYgKzE3Nyw3IEBAIHB1YmxpYzoKICNlbmRpZgogICAgIH0KICAgICAK
KyNpZiAhUExBVEZPUk0oV0lOQ0UpCiAgICAgdm9pZCBhZGQoR2x5cGggZ2x5cGgsIGNvbnN0IFNp
bXBsZUZvbnREYXRhKiBmb250LCBHbHlwaEJ1ZmZlckFkdmFuY2UgYWR2YW5jZSkKICAgICB7CiAg
ICAgICAgIG1fZm9udERhdGEuYXBwZW5kKGZvbnQpOwpAQCAtMTc0LDYgKzE5MSw3IEBAIHB1Ymxp
YzoKIAogICAgICAgICBtX2FkdmFuY2VzLmFwcGVuZChhZHZhbmNlKTsKICAgICB9CisjZW5kaWYK
ICAgICAKIHByaXZhdGU6CiAgICAgVmVjdG9yPGNvbnN0IFNpbXBsZUZvbnREYXRhKiwgMjA0OD4g
bV9mb250RGF0YTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhQ
YWdlVHJlZU5vZGUuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlwaFBhZ2VUcmVl
Tm9kZS5jcHAKaW5kZXggNjQxOWUwYy4uOWQ5YmEyNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HbHlwaFBhZ2VUcmVlTm9kZS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HbHlwaFBhZ2VUcmVlTm9kZS5jcHAKQEAgLTIwMiw4ICsyMDIsOCBAQCB2b2lk
IEdseXBoUGFnZVRyZWVOb2RlOjppbml0aWFsaXplUGFnZShjb25zdCBGb250RGF0YSogZm9udERh
dGEsIHVuc2lnbmVkIHBhZ2VOdQogICAgICAgICAgICAgICAgIEdseXBoUGFnZSogcGFnZVRvRmls
bCA9IG1fcGFnZS5nZXQoKTsKICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbnVtUmFuZ2VzOyBpKyspIHsKICAgICAgICAgICAgICAgICAgICAgY29uc3QgRm9udERhdGFS
YW5nZSYgcmFuZ2UgPSBzZWdtZW50ZWRGb250RGF0YS0+cmFuZ2VBdChpKTsKLSAgICAgICAgICAg
ICAgICAgICAgaW50IGZyb20gPSBtYXgoMCwgcmFuZ2UuZnJvbSgpIC0gc3RhdGljX2Nhc3Q8aW50
PihzdGFydCkpOwotICAgICAgICAgICAgICAgICAgICBpbnQgdG8gPSAxICsgbWluKHJhbmdlLnRv
KCkgLSBzdGF0aWNfY2FzdDxpbnQ+KHN0YXJ0KSwgc3RhdGljX2Nhc3Q8aW50PihHbHlwaFBhZ2U6
OnNpemUpIC0gMSk7CisgICAgICAgICAgICAgICAgICAgIGludCBmcm9tID0gbWF4PGludD4oMCwg
cmFuZ2UuZnJvbSgpIC0gc3RhdGljX2Nhc3Q8aW50PihzdGFydCkpOworICAgICAgICAgICAgICAg
ICAgICBpbnQgdG8gPSAxICsgbWluPGludD4ocmFuZ2UudG8oKSAtIHN0YXRpY19jYXN0PGludD4o
c3RhcnQpLCBzdGF0aWNfY2FzdDxpbnQ+KEdseXBoUGFnZTo6c2l6ZSkgLSAxKTsKICAgICAgICAg
ICAgICAgICAgICAgaWYgKGZyb20gPCBzdGF0aWNfY2FzdDxpbnQ+KEdseXBoUGFnZTo6c2l6ZSkg
JiYgdG8gPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaGF2ZUdseXBocyAmJiAh
c2NyYXRjaFBhZ2UpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JhdGNoUGFnZSA9
IEdseXBoUGFnZTo6Y3JlYXRlKHRoaXMpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9TaW1wbGVGb250RGF0YS5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Np
bXBsZUZvbnREYXRhLmNwcAppbmRleCBjODc5MjI4Li45OGE2MDNkIDEwMDY0NAotLS0gYS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NpbXBsZUZvbnREYXRhLmNwcAorKysgYi9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1NpbXBsZUZvbnREYXRhLmNwcApAQCAtNTcsNiArNTcsOCBAQCBTaW1w
bGVGb250RGF0YTo6U2ltcGxlRm9udERhdGEoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgZiwgYm9v
bCBjdXN0b21Gb250LCBib29sCiAgICAgLCBtX2lzQ3VzdG9tRm9udChjdXN0b21Gb250KQogICAg
ICwgbV9pc0xvYWRpbmcobG9hZGluZykKICAgICAsIG1fc21hbGxDYXBzRm9udERhdGEoMCkKKyAg
ICAsIG1fYXZnQ2hhcldpZHRoKC0xKQorICAgICwgbV9tYXhDaGFyV2lkdGgoLTEpCiB7CiAjaWYg
IUVOQUJMRShTVkdfRk9OVFMpCiAgICAgVU5VU0VEX1BBUkFNKHN2Z0ZvbnREYXRhKTsKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2ltcGxlRm9udERhdGEuaCBiL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2ltcGxlRm9udERhdGEuaAppbmRleCBjYjQ3MmIwLi40MWI4
YjBjIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NpbXBsZUZvbnREYXRh
LmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaW1wbGVGb250RGF0YS5oCkBAIC0y
LDYgKzIsNyBAQAogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIGludGVybmFsIGZvbnQgaW1w
bGVtZW50YXRpb24uCiAgKgogICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNy0yMDA4IFRvcmNoIE1v
YmlsZSwgSW5jLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0zMyw3ICszNCw3IEBACiB0eXBlZGVm
IHN0cnVjdCBPcGFxdWVBVFNVU3R5bGUqIEFUU1VTdHlsZTsKICNlbmRpZgogCi0jaWYgUExBVEZP
Uk0oV0lOKQorI2lmIFBMQVRGT1JNKFdJTikgJiYgIVBMQVRGT1JNKFdJTkNFKQogI2luY2x1ZGUg
PHVzcDEwLmg+CiAjZW5kaWYKIApAQCAtMTM0LDkgKzEzNSwxMCBAQCBwdWJsaWM6CiAKICNpZiBQ
TEFURk9STShXSU4pCiAgICAgYm9vbCBpc1N5c3RlbUZvbnQoKSBjb25zdCB7IHJldHVybiBtX2lz
U3lzdGVtRm9udDsgfQorI2lmICFQTEFURk9STShXSU5DRSkKICAgICBTQ1JJUFRfRk9OVFBST1BF
UlRJRVMqIHNjcmlwdEZvbnRQcm9wZXJ0aWVzKCkgY29uc3Q7CiAgICAgU0NSSVBUX0NBQ0hFKiBz
Y3JpcHRDYWNoZSgpIGNvbnN0IHsgcmV0dXJuICZtX3NjcmlwdENhY2hlOyB9Ci0KKyNlbmRpZgog
ICAgIHN0YXRpYyB2b2lkIHNldFNob3VsZEFwcGx5TWFjQXNjZW50SGFjayhib29sKTsKICAgICBz
dGF0aWMgYm9vbCBzaG91bGRBcHBseU1hY0FzY2VudEhhY2soKTsKICNlbmRpZgpAQCAtMTU5LDcg
KzE2MSw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGNvbW1vbkluaXQoKTsKIAotI2lmIFBMQVRG
T1JNKFdJTikKKyNpZiBQTEFURk9STShXSU4pICYmICFQTEFURk9STShXSU5DRSkKICAgICB2b2lk
IGluaXRHRElGb250KCk7CiAgICAgdm9pZCBwbGF0Zm9ybUNvbW1vbkRlc3Ryb3koKTsKICAgICBm
bG9hdCB3aWR0aEZvckdESUdseXBoKEdseXBoIGdseXBoKSBjb25zdDsKQEAgLTIyNCw5ICsyMjYs
MTEgQEAgcHJpdmF0ZToKIAogI2lmIFBMQVRGT1JNKFdJTikKICAgICBib29sIG1faXNTeXN0ZW1G
b250OworI2lmICFQTEFURk9STShXSU5DRSkKICAgICBtdXRhYmxlIFNDUklQVF9DQUNIRSBtX3Nj
cmlwdENhY2hlOwogICAgIG11dGFibGUgU0NSSVBUX0ZPTlRQUk9QRVJUSUVTKiBtX3NjcmlwdEZv
bnRQcm9wZXJ0aWVzOwogI2VuZGlmCisjZW5kaWYKIH07CiAgICAgCiAgICAgCmRpZmYgLS1naXQg
YS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNw
cCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMu
Y3BwCmluZGV4IDg5NTg4N2YuLjcwYWUwMmUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwCisrKyBiL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwCkBAIC0xLDUgKzEs
NiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSBBcHBsZSBJbmMuICBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5IFRvcmNoIE1vYmlsZSwgSW5jLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02OSw3ICs3MCwxMCBAQCBzdHJ1Y3Qg
VGFibGVEaXJlY3RvcnlFbnRyeSB7CiAgICAgQmlnRW5kaWFuVUxvbmcgbGVuZ3RoOwogfTsKIAot
I2lmICFQTEFURk9STShDRykKKyNpZiBQTEFURk9STShXSU5DRSkKKy8vIE5lZWQgdG8gdXNlICNk
ZWZpbmUgaW5zdGVhZCBvZiB0eXBlZGVmIGR1ZSB0byBjb25mbGljdAorI2RlZmluZSBGaXhlZCBp
bnQzMl90CisjZWxpZiAhUExBVEZPUk0oQ0cpCiAvLyBGaXhlZCB0eXBlIGlzIG5vdCBkZWZpbmVk
IG9uIG5vbi1DRyBwbGF0Zm9ybXMuIHx2ZXJzaW9ufCBpbiBzZm50SGVhZGVyCiAvLyBhbmQgaGVh
ZFRhYmxlIGFuZCB8Zm9udFJldmlzaW9ufCBpbiBoZWFkVGFibGUgYXJlIG9mIEZpeGVkLCBidXQg
dGhleSdyZQogLy8gbm90IGFjdHVhbGx5IHJlZmVyZWQgdG8gYW55d2hlcmUuIFRoZXJlZm9yZSwg
d2UganVzdCBoYXZlIHRvIG1hdGNoCkBAIC0zMzksNiArMzQzLDczIEBAIGJvb2wgZ2V0RU9USGVh
ZGVyKFNoYXJlZEJ1ZmZlciogZm9udERhdGEsIEVPVEhlYWRlciYgZW90SGVhZGVyLCBzaXplX3Qm
IG92ZXJsYXlECiAgICAgcmV0dXJuIHRydWU7CiB9CiAKKyNpZiBQTEFURk9STShXSU5DRSkKK2Jv
b2wgcmVuYW1lRm9udChTaGFyZWRCdWZmZXIqIGZvbnREYXRhLCBjb25zdCBTdHJpbmcmIGZvbnRO
YW1lKQoreworICAgIHNpemVfdCBvcmlnaW5hbERhdGFTaXplID0gZm9udERhdGEtPnNpemUoKTsK
KyAgICBpZiAob3JpZ2luYWxEYXRhU2l6ZSA8IG9mZnNldG9mKHNmbnRIZWFkZXIsIHRhYmxlcykp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGNvbnN0IHNmbnRIZWFkZXIqIHNmbnQgPSBy
ZWludGVycHJldF9jYXN0PGNvbnN0IHNmbnRIZWFkZXIqPihmb250RGF0YS0+ZGF0YSgpKTsKKwor
ICAgIGlmIChvcmlnaW5hbERhdGFTaXplIDwgb2Zmc2V0b2Yoc2ZudEhlYWRlciwgdGFibGVzKSAr
IHNmbnQtPm51bVRhYmxlcyAqIHNpemVvZihUYWJsZURpcmVjdG9yeUVudHJ5KSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgdW5zaWduZWQgdDsKKyAgICBmb3IgKHQgPSAwOyB0IDwgc2Zu
dC0+bnVtVGFibGVzOyArK3QpIHsKKyAgICAgICAgaWYgKHNmbnQtPnRhYmxlc1t0XS50YWcgPT0g
J25hbWUnKQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGlmICh0ID09IHNmbnQtPm51
bVRhYmxlcykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgY29uc3QgaW50IG5hbWVSZWNv
cmRDb3VudCA9IDU7CisKKyAgICAvLyBSb3VuZGVkIHVwIHRvIGEgbXVsdGlwbGUgb2YgNCB0byBz
aW1wbGlmeSB0aGUgY2hlY2tzdW0gY2FsY3VsYXRpb24uCisgICAgc2l6ZV90IG5hbWVUYWJsZVNp
emUgPSAoKG9mZnNldG9mKG5hbWVUYWJsZSwgbmFtZVJlY29yZHMpICsgbmFtZVJlY29yZENvdW50
ICogc2l6ZW9mKG5hbWVSZWNvcmQpICsgZm9udE5hbWUubGVuZ3RoKCkgKiBzaXplb2YoVUNoYXIp
KSAmIH4zKSArIDQ7CisKKyAgICBWZWN0b3I8Y2hhcj4gcmV3cml0dGVuRm9udERhdGEoZm9udERh
dGEtPnNpemUoKSArIG5hbWVUYWJsZVNpemUpOworICAgIGNoYXIqIGRhdGEgPSByZXdyaXR0ZW5G
b250RGF0YS5kYXRhKCk7CisgICAgbWVtY3B5KGRhdGEsIGZvbnREYXRhLT5kYXRhKCksIG9yaWdp
bmFsRGF0YVNpemUpOworCisgICAgLy8gTWFrZSB0aGUgdGFibGUgZGlyZWN0b3J5IGVudHJ5IHBv
aW50IHRvIHRoZSBuZXcgJ25hbWUnIHRhYmxlLgorICAgIHNmbnRIZWFkZXIqIHJld3JpdHRlblNm
bnQgPSByZWludGVycHJldF9jYXN0PHNmbnRIZWFkZXIqPihkYXRhKTsKKyAgICByZXdyaXR0ZW5T
Zm50LT50YWJsZXNbdF0ubGVuZ3RoID0gbmFtZVRhYmxlU2l6ZTsKKyAgICByZXdyaXR0ZW5TZm50
LT50YWJsZXNbdF0ub2Zmc2V0ID0gb3JpZ2luYWxEYXRhU2l6ZTsKKworICAgIC8vIFdyaXRlIHRo
ZSBuZXcgJ25hbWUnIHRhYmxlIGFmdGVyIHRoZSBvcmlnaW5hbCBmb250IGRhdGEuCisgICAgbmFt
ZVRhYmxlKiBuYW1lID0gcmVpbnRlcnByZXRfY2FzdDxuYW1lVGFibGUqPihkYXRhICsgb3JpZ2lu
YWxEYXRhU2l6ZSk7CisgICAgbmFtZS0+Zm9ybWF0ID0gMDsKKyAgICBuYW1lLT5jb3VudCA9IG5h
bWVSZWNvcmRDb3VudDsKKyAgICBuYW1lLT5zdHJpbmdPZmZzZXQgPSBvZmZzZXRvZihuYW1lVGFi
bGUsIG5hbWVSZWNvcmRzKSArIG5hbWVSZWNvcmRDb3VudCAqIHNpemVvZihuYW1lUmVjb3JkKTsK
KyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbmFtZVJlY29yZENvdW50OyArK2kpIHsKKyAg
ICAgICAgbmFtZS0+bmFtZVJlY29yZHNbaV0ucGxhdGZvcm1JRCA9IDM7CisgICAgICAgIG5hbWUt
Pm5hbWVSZWNvcmRzW2ldLmVuY29kaW5nSUQgPSAxOworICAgICAgICBuYW1lLT5uYW1lUmVjb3Jk
c1tpXS5sYW5ndWFnZUlEID0gMHgwNDA5OworICAgICAgICBuYW1lLT5uYW1lUmVjb3Jkc1tpXS5v
ZmZzZXQgPSAwOworICAgICAgICBuYW1lLT5uYW1lUmVjb3Jkc1tpXS5sZW5ndGggPSBmb250TmFt
ZS5sZW5ndGgoKSAqIHNpemVvZihVQ2hhcik7CisgICAgfQorCisgICAgLy8gVGhlIHJlcXVpcmVk
ICduYW1lJyByZWNvcmQgdHlwZXM6IEZhbWlseSwgU3R5bGUsIFVuaXF1ZSwgRnVsbCBhbmQgUG9z
dFNjcmlwdC4KKyAgICBuYW1lLT5uYW1lUmVjb3Jkc1swXS5uYW1lSUQgPSAxOworICAgIG5hbWUt
Pm5hbWVSZWNvcmRzWzFdLm5hbWVJRCA9IDI7CisgICAgbmFtZS0+bmFtZVJlY29yZHNbMl0ubmFt
ZUlEID0gMzsKKyAgICBuYW1lLT5uYW1lUmVjb3Jkc1szXS5uYW1lSUQgPSA0OworICAgIG5hbWUt
Pm5hbWVSZWNvcmRzWzRdLm5hbWVJRCA9IDY7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgZm9udE5hbWUubGVuZ3RoKCk7ICsraSkKKyAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxCaWdF
bmRpYW5VU2hvcnQqPihkYXRhICsgb3JpZ2luYWxEYXRhU2l6ZSArIG5hbWUtPnN0cmluZ09mZnNl
dClbaV0gPSBmb250TmFtZVtpXTsKKworICAgIC8vIFVwZGF0ZSB0aGUgdGFibGUgY2hlY2tzdW0g
aW4gdGhlIGRpcmVjdG9yeSBlbnRyeS4KKyAgICByZXdyaXR0ZW5TZm50LT50YWJsZXNbdF0uY2hl
Y2tTdW0gPSAwOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgKiBzaXplb2YoQmlnRW5kaWFu
VUxvbmcpIDwgbmFtZVRhYmxlU2l6ZTsgKytpKQorICAgICAgICByZXdyaXR0ZW5TZm50LT50YWJs
ZXNbdF0uY2hlY2tTdW0gPSByZXdyaXR0ZW5TZm50LT50YWJsZXNbdF0uY2hlY2tTdW0gKyByZWlu
dGVycHJldF9jYXN0PEJpZ0VuZGlhblVMb25nKj4obmFtZSlbaV07CisKKyAgICBmb250RGF0YS0+
Y2xlYXIoKTsKKyAgICBmb250RGF0YS0+YXBwZW5kKHJld3JpdHRlbkZvbnREYXRhLmRhdGEoKSwg
cmV3cml0dGVuRm9udERhdGEuc2l6ZSgpKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKyNlbHNlCiBI
QU5ETEUgcmVuYW1lQW5kQWN0aXZhdGVGb250KFNoYXJlZEJ1ZmZlciogZm9udERhdGEsIGNvbnN0
IFN0cmluZyYgZm9udE5hbWUpCiB7CiAgICAgc2l6ZV90IG9yaWdpbmFsRGF0YVNpemUgPSBmb250
RGF0YS0+c2l6ZSgpOwpAQCAtNDA0LDUgKzQ3NSw2IEBAIEhBTkRMRSByZW5hbWVBbmRBY3RpdmF0
ZUZvbnQoU2hhcmVkQnVmZmVyKiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBmb250TmFtZSkKIAog
ICAgIHJldHVybiBmb250SGFuZGxlOwogfQorI2VuZGlmCiAKIH0KZGlmZiAtLWdpdCBhL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuaCBiL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuaAppbmRleCAx
M2RhZDZmLi4xN2Q3ZDJiIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENv
cHlyaWdodCAoQykgMjAwOCwgMjAwOSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDA5IFRvcmNoIE1vYmlsZSwgSW5jLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0yNyw3ICsyOCw5IEBACiAjZGVmaW5lIE9wZW5UeXBlVXRpbGl0
aWVzX2gKIAogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaWYgIVBMQVRGT1JNKFdJTkNF
KQogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCkBAIC0zNSw2ICszOCwxMCBAQCBzdHJ1Y3QgQmlnRW5kaWFuVVNob3J0Owogc3RydWN0IEVP
VFByZWZpeDsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAorI2lmIFBMQVRGT1JNKFdJTkNFKQordHlw
ZWRlZiB1bnNpZ25lZCBfX2ludDggVUludDg7CisjZW5kaWYKKwogc3RydWN0IEVPVEhlYWRlciB7
CiAgICAgRU9USGVhZGVyKCk7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luY2UvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbmNlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCmluZGV4IDdjNjg1M2MuLjY5
OWZmMjUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvRm9udEN1
c3RvbVBsYXRmb3JtRGF0YS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5j
ZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcApAQCAtMzMsNiArMzMsMTEgQEAgc3RhdGljIEN1
c3RvbUZvbnRDYWNoZSogZ19jdXN0b21Gb250Q2FjaGUgPSAwOwogCiBib29sIHJlbmFtZUZvbnQo
U2hhcmVkQnVmZmVyKiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBmb250TmFtZSk7CiAKK3ZvaWQg
c2V0Q3VzdG9tRm9udENhY2hlKEN1c3RvbUZvbnRDYWNoZSogY2FjaGUpCit7CisgICAgZ19jdXN0
b21Gb250Q2FjaGUgPSBjYWNoZTsKK30KKwogRm9udEN1c3RvbVBsYXRmb3JtRGF0YTo6fkZvbnRD
dXN0b21QbGF0Zm9ybURhdGEoKQogewogICAgIGlmIChnX2N1c3RvbUZvbnRDYWNoZSAmJiAhbV9u
YW1lLmlzRW1wdHkoKSkKQEAgLTY2LDExICs3MSwxMiBAQCBzdGF0aWMgU3RyaW5nIGNyZWF0ZVVu
aXF1ZUZvbnROYW1lKCkKICAgICByZXR1cm4gZm9udE5hbWUucmVwbGFjZSgnLycsICdfJyk7CiB9
CiAKLUZvbnRDdXN0b21QbGF0Zm9ybURhdGEqIGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEo
Q2FjaGVkRm9udCogY2FjaGVkRm9udCkKK0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEqIGNyZWF0ZUZv
bnRDdXN0b21QbGF0Zm9ybURhdGEoY29uc3QgU2hhcmVkQnVmZmVyKiBidWZmZXIpCiB7Ci0gICAg
aWYgKGdfY3VzdG9tRm9udENhY2hlICYmIGNhY2hlZEZvbnQtPkNhY2hlZFJlc291cmNlOjpkYXRh
KCkpIHsKKyAgICBpZiAoZ19jdXN0b21Gb250Q2FjaGUpIHsKICAgICAgICAgU3RyaW5nIGZvbnRO
YW1lID0gY3JlYXRlVW5pcXVlRm9udE5hbWUoKTsKLSAgICAgICAgaWYgKHJlbmFtZUZvbnQoY2Fj
aGVkRm9udC0+Q2FjaGVkUmVzb3VyY2U6OmRhdGEoKSwgZm9udE5hbWUpICYmIGdfY3VzdG9tRm9u
dENhY2hlLT5yZWdpc3RlckZvbnQoZm9udE5hbWUsIGNhY2hlZEZvbnQpKQorICAgICAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBsb2NhbEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGJ1ZmZl
ci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgICAgIGlmIChyZW5hbWVGb250KGxvY2Fs
QnVmZmVyLmdldCgpLCBmb250TmFtZSkgJiYgZ19jdXN0b21Gb250Q2FjaGUtPnJlZ2lzdGVyRm9u
dChmb250TmFtZSwgbG9jYWxCdWZmZXIuZ2V0KCkpKQogICAgICAgICAgICAgcmV0dXJuIG5ldyBG
b250Q3VzdG9tUGxhdGZvcm1EYXRhKGZvbnROYW1lKTsKICAgICB9CiAgICAgcmV0dXJuIDA7CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0ZvbnRDdXN0b21QbGF0
Zm9ybURhdGEuaCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvRm9udEN1c3RvbVBs
YXRmb3JtRGF0YS5oCmluZGV4IGIxZjY0YTAuLjU3ZTMzZDggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCisrKyBiL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCkBA
IC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIEN1c3RvbUZv
bnRDYWNoZSB7CiAgICAgcHVibGljOgotICAgICAgICB2aXJ0dWFsIGJvb2wgcmVnaXN0ZXJGb250
KGNvbnN0IFN0cmluZyYgZm9udE5hbWUsIENhY2hlZEZvbnQqKSA9IDA7CisgICAgICAgIHZpcnR1
YWwgYm9vbCByZWdpc3RlckZvbnQoY29uc3QgU3RyaW5nJiBmb250TmFtZSwgY29uc3QgU2hhcmVk
QnVmZmVyKiBidWZmZXIpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJGb250
KGNvbnN0IFN0cmluZyYgZm9udE5hbWUpID0gMDsKICAgICB9OwogCkBAIC00OCw4ICs0OCw4IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgU3RyaW5nIG1fbmFtZTsKICAgICB9OwogCi0g
ICAgRm9udEN1c3RvbVBsYXRmb3JtRGF0YSogY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShD
YWNoZWRGb250Kik7Ci0KKyAgICBGb250Q3VzdG9tUGxhdGZvcm1EYXRhKiBjcmVhdGVGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciogYnVmZmVyKTsKKyAgICB2b2lkIHNl
dEN1c3RvbUZvbnRDYWNoZShDdXN0b21Gb250Q2FjaGUqKTsKIH0KIAogI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34178</attachid>
            <date>2009-08-05 14:41:12 -0700</date>
            <delta_ts>2009-08-07 11:32:56 -0700</delta_ts>
            <desc>remove unnecessary lines in FontCache.h</desc>
            <filename>27734.patch</filename>
            <type>text/plain</type>
            <size>20152</size>
            <attacher name="Yong Li">yong.li.webkit</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
OGRlNzUzOC4uY2U2OWVjMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNSBAQAorMjAwOS0wOC0wNSAgWW9uZyBMaSAgPHlv
bmcubGlAdG9yY2htb2JpbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFdJTkNFIFBPUlQ6IGZvbnQgcmVsYXRlZCBjaGFuZ2VzIChvbiBleGlz
dGluZyBmaWxlcykKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTI3NzM0CisKKyAgICAgICAgKiBsb2FkZXIvQ2FjaGVkRm9udC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRGb250Ojp+Q2FjaGVkRm9udCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRGb250OjplbnN1cmVDdXN0b21Gb250RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRG
b250OjpwbGF0Zm9ybURhdGFGcm9tQ3VzdG9tRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRGb250OjphbGxDbGllbnRzUmVtb3ZlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udENhY2hlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEZhc3RQYXRoLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnQ6OmdseXBoRGF0YUZvckNoYXJhY3Rlcik6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkdseXBoQnVmZmVyOjphZHZhbmNlQXQpOgorICAgICAgICAoV2ViQ29yZTo6R2x5cGhCdWZmZXI6
OmFkdmFuY2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkdseXBoQnVmZmVyOjphZGQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dseXBoUGFnZVRyZWVOb2RlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkdseXBoUGFnZVRyZWVOb2RlOjppbml0aWFsaXplUGFnZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvU2ltcGxlRm9udERhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2ltcGxlRm9udERhdGE6OlNpbXBsZUZvbnREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9TaW1wbGVGb250RGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50
eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlbmFtZUZvbnQp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVz
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZXRDdXN0b21Gb250Q2FjaGUpOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luY2UvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oOgorCiAyMDA5LTA4
LTA1ICBQZXRlciBLYXN0aW5nICA8cGthc3RpbmdAZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBFcmljIFNlaWRlbC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL0NhY2hlZEZv
bnQuY3BwIGIvV2ViQ29yZS9sb2FkZXIvQ2FjaGVkRm9udC5jcHAKaW5kZXggYWYxOGNjOS4uMmRl
Y2U5YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvQ2FjaGVkRm9udC5jcHAKKysrIGIvV2Vi
Q29yZS9sb2FkZXIvQ2FjaGVkRm9udC5jcHAKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJp
Z2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAwOSBUb3JjaCBNb2JpbGUsIEluYy4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMzEsNyArMzIsNyBAQAogI2luY2x1ZGUgIkNhY2hlZFJlc291
cmNlQ2xpZW50V2Fsa2VyLmgiCiAjaW5jbHVkZSAiRE9NSW1wbGVtZW50YXRpb24uaCIKICNpbmNs
dWRlICJGb250UGxhdGZvcm1EYXRhLmgiCi0jaWYgUExBVEZPUk0oQ0cpIHx8IFBMQVRGT1JNKFFU
KSB8fCBQTEFURk9STShHVEspIHx8IChQTEFURk9STShDSFJPTUlVTSkgJiYgUExBVEZPUk0oV0lO
X09TKSkKKyNpZiBQTEFURk9STShDRykgfHwgUExBVEZPUk0oUVQpIHx8IFBMQVRGT1JNKEdUSykg
fHwgKFBMQVRGT1JNKENIUk9NSVVNKSAmJiBQTEFURk9STShXSU5fT1MpKSB8fCBQTEFURk9STShX
SU5DRSkKICNpbmNsdWRlICJGb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgiCiAjZW5kaWYKICNpbmNs
dWRlICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCkBAIC02MCw3ICs2MSw3IEBAIENhY2hlZEZvbnQ6
OkNhY2hlZEZvbnQoY29uc3QgU3RyaW5nICZ1cmwpCiAKIENhY2hlZEZvbnQ6On5DYWNoZWRGb250
KCkKIHsKLSNpZiBQTEFURk9STShDRykgfHwgUExBVEZPUk0oUVQpIHx8IFBMQVRGT1JNKEdUSykg
fHwgKFBMQVRGT1JNKENIUk9NSVVNKSAmJiBQTEFURk9STShXSU5fT1MpKQorI2lmIFBMQVRGT1JN
KENHKSB8fCBQTEFURk9STShRVCkgfHwgUExBVEZPUk0oR1RLKSB8fCAoUExBVEZPUk0oQ0hST01J
VU0pICYmIFBMQVRGT1JNKFdJTl9PUykpIHx8IFBMQVRGT1JNKFdJTkNFKQogICAgIGRlbGV0ZSBt
X2ZvbnREYXRhOwogI2VuZGlmCiB9CkBAIC05OCw3ICs5OSw3IEBAIHZvaWQgQ2FjaGVkRm9udDo6
YmVnaW5Mb2FkSWZOZWVkZWQoRG9jTG9hZGVyKiBkbCkKIAogYm9vbCBDYWNoZWRGb250OjplbnN1
cmVDdXN0b21Gb250RGF0YSgpCiB7Ci0jaWYgUExBVEZPUk0oQ0cpIHx8IFBMQVRGT1JNKFFUKSB8
fCBQTEFURk9STShHVEspIHx8IChQTEFURk9STShDSFJPTUlVTSkgJiYgUExBVEZPUk0oV0lOX09T
KSkKKyNpZiBQTEFURk9STShDRykgfHwgUExBVEZPUk0oUVQpIHx8IFBMQVRGT1JNKEdUSykgfHwg
KFBMQVRGT1JNKENIUk9NSVVNKSAmJiBQTEFURk9STShXSU5fT1MpKSB8fCBQTEFURk9STShXSU5D
RSkKICNpZiBFTkFCTEUoU1ZHX0ZPTlRTKQogICAgIEFTU0VSVCghbV9pc1NWR0ZvbnQpOwogI2Vu
ZGlmCkBAIC0xMTcsNyArMTE4LDcgQEAgRm9udFBsYXRmb3JtRGF0YSBDYWNoZWRGb250OjpwbGF0
Zm9ybURhdGFGcm9tQ3VzdG9tRGF0YShmbG9hdCBzaXplLCBib29sIGJvbGQsIGIKICAgICBpZiAo
bV9leHRlcm5hbFNWR0RvY3VtZW50KQogICAgICAgICByZXR1cm4gRm9udFBsYXRmb3JtRGF0YShz
aXplLCBib2xkLCBpdGFsaWMpOwogI2VuZGlmCi0jaWYgUExBVEZPUk0oQ0cpIHx8IFBMQVRGT1JN
KFFUKSB8fCBQTEFURk9STShHVEspIHx8IChQTEFURk9STShDSFJPTUlVTSkgJiYgUExBVEZPUk0o
V0lOX09TKSkKKyNpZiBQTEFURk9STShDRykgfHwgUExBVEZPUk0oUVQpIHx8IFBMQVRGT1JNKEdU
SykgfHwgKFBMQVRGT1JNKENIUk9NSVVNKSAmJiBQTEFURk9STShXSU5fT1MpKSB8fCBQTEFURk9S
TShXSU5DRSkKICAgICBBU1NFUlQobV9mb250RGF0YSk7CiAgICAgcmV0dXJuIG1fZm9udERhdGEt
PmZvbnRQbGF0Zm9ybURhdGEoc3RhdGljX2Nhc3Q8aW50PihzaXplKSwgYm9sZCwgaXRhbGljLCBy
ZW5kZXJpbmdNb2RlKTsKICNlbHNlCkBAIC0xNzMsNyArMTc0LDcgQEAgU1ZHRm9udEVsZW1lbnQq
IENhY2hlZEZvbnQ6OmdldFNWR0ZvbnRCeUlkKGNvbnN0IFN0cmluZyYgZm9udE5hbWUpIGNvbnN0
CiAKIHZvaWQgQ2FjaGVkRm9udDo6YWxsQ2xpZW50c1JlbW92ZWQoKQogewotI2lmIFBMQVRGT1JN
KENHKSB8fCBQTEFURk9STShRVCkgfHwgUExBVEZPUk0oR1RLKSB8fCAoUExBVEZPUk0oQ0hST01J
VU0pICYmIFBMQVRGT1JNKFdJTl9PUykpCisjaWYgUExBVEZPUk0oQ0cpIHx8IFBMQVRGT1JNKFFU
KSB8fCBQTEFURk9STShHVEspIHx8IChQTEFURk9STShDSFJPTUlVTSkgJiYgUExBVEZPUk0oV0lO
X09TKSkgfHwgUExBVEZPUk0oV0lOQ0UpCiAgICAgaWYgKG1fZm9udERhdGEpIHsKICAgICAgICAg
ZGVsZXRlIG1fZm9udERhdGE7CiAgICAgICAgIG1fZm9udERhdGEgPSAwOwpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaCBiL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udENhY2hlLmgKaW5kZXggM2MwZjJkOS4uYTU5MTQ3NCAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaAorKysgYi9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdo
dCAoQykgMjAwNiwgMjAwOCBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNy0yMDA4IFRvcmNoIE1vYmlsZSwgSW5jLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02Myw3ICs2NCwxNSBAQCBwdWJsaWM6CiAgICAg
Ly8gQWxzbyBpbXBsZW1lbnRlZCBieSB0aGUgcGxhdGZvcm0uCiAgICAgdm9pZCBwbGF0Zm9ybUlu
aXQoKTsKIAotI2lmIFBMQVRGT1JNKFdJTikKKyNpZiBQTEFURk9STShXSU5DRSkKKyNpZiBkZWZp
bmVkKElNTEFOR19GT05UX0xJTkspICYmIChJTUxBTkdfRk9OVF9MSU5LID09IDIpCisgICAgSU1M
YW5nRm9udExpbmsyKiBnZXRGb250TGlua0ludGVyZmFjZSgpOworI2Vsc2UKKyAgICBJTUxhbmdG
b250TGluayogZ2V0Rm9udExpbmtJbnRlcmZhY2UoKTsKKyNlbmRpZgorICAgIHN0YXRpYyB2b2lk
IGNvbUluaXRpYWxpemUoKTsKKyAgICBzdGF0aWMgdm9pZCBjb21VbmluaXRpYWxpemUoKTsKKyNl
bGlmIFBMQVRGT1JNKFdJTikKICAgICBJTUxhbmdGb250TGluazIqIGdldEZvbnRMaW5rSW50ZXJm
YWNlKCk7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250RmFzdFBhdGguY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250RmFzdFBhdGgu
Y3BwCmluZGV4IDc0YjdlYzEuLjRiMTZjYmMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udEZhc3RQYXRoLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnRGYXN0UGF0aC5jcHAKQEAgLTEsNiArMSw3IEBACiAvKioKICAqIENvcHlyaWdodCAoQykg
MjAwMywgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLgogICogQ29weXJpZ2h0IChDKSAyMDA4IEhv
bGdlciBIYW5zIFBldGVyIEZyZXl0aGVyCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgVG9yY2ggTW9i
aWxlLCBJbmMuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTE1NSwxNiArMTU2LDMzIEBAIEdseXBo
RGF0YSBGb250OjpnbHlwaERhdGFGb3JDaGFyYWN0ZXIoVUNoYXIzMiBjLCBib29sIG1pcnJvciwg
Ym9vbCBmb3JjZVNtYWxsQ2FwCiAgICAgICAgIEdseXBoUGFnZSogZmFsbGJhY2tQYWdlID0gR2x5
cGhQYWdlVHJlZU5vZGU6OmdldFJvb3RDaGlsZChjaGFyYWN0ZXJGb250RGF0YSwgcGFnZU51bWJl
ciktPnBhZ2UoKTsKICAgICAgICAgR2x5cGhEYXRhIGRhdGEgPSBmYWxsYmFja1BhZ2UgJiYgZmFs
bGJhY2tQYWdlLT5mb250RGF0YUZvckNoYXJhY3RlcihjKSA/IGZhbGxiYWNrUGFnZS0+Z2x5cGhE
YXRhRm9yQ2hhcmFjdGVyKGMpIDogY2hhcmFjdGVyRm9udERhdGEtPm1pc3NpbmdHbHlwaERhdGEo
KTsKICAgICAgICAgLy8gQ2FjaGUgaXQgc28gd2UgZG9uJ3QgaGF2ZSB0byBkbyBzeXN0ZW0gZmFs
bGJhY2sgYWdhaW4gbmV4dCB0aW1lLgotICAgICAgICBpZiAoIXVzZVNtYWxsQ2Fwc0ZvbnQpCisg
ICAgICAgIGlmICghdXNlU21hbGxDYXBzRm9udCkgeworI2lmIFBMQVRGT1JNKFdJTkNFKQorICAg
ICAgICAgICAgLy8gbWlzc2luZ0dseXBoRGF0YSByZXR1cm5zIGEgbnVsbCBjaGFyYWN0ZXIsIHdo
aWNoIGlzIG5vdCBzdWl0YWJsZSBmb3IgR0RJIHRvIGRpc3BsYXkuCisgICAgICAgICAgICAvLyBB
bHNvLCBzb21ldGltZXMgd2UgY2Fubm90IG1hcCBhIGZvbnQgZm9yIHRoZSBjaGFyYWN0ZXIgb24g
V0lOQ0UsIGJ1dCBHREkgY2FuIHN0aWxsCisgICAgICAgICAgICAvLyBkaXNwbGF5IHRoZSBjaGFy
YWN0ZXIsIHByb2JhYmx5IGJlY2F1c2UgdGhlIGZvbnQgcGFja2FnZSBpcyBub3QgaW5zdGFsbGVk
IGNvcnJlY3RseS4KKyAgICAgICAgICAgIC8vIFNvIHdlIGp1c3QgYWx3YXlzIHNldCB0aGUgZ2x5
cGggdG8gYmUgc2FtZSBhcyB0aGUgY2hhcmFjdGVyLCBhbmQgbGV0IEdESSBzb2x2ZSBpdC4KKyAg
ICAgICAgICAgIHBhZ2UtPnNldEdseXBoRGF0YUZvckNoYXJhY3RlcihjLCBjLCBjaGFyYWN0ZXJG
b250RGF0YSk7CisgICAgICAgICAgICByZXR1cm4gcGFnZS0+Z2x5cGhEYXRhRm9yQ2hhcmFjdGVy
KGMpOworI2Vsc2UKICAgICAgICAgICAgIHBhZ2UtPnNldEdseXBoRGF0YUZvckNoYXJhY3Rlcihj
LCBkYXRhLmdseXBoLCBkYXRhLmZvbnREYXRhKTsKKyNlbmRpZgorICAgICAgICB9CiAgICAgICAg
IHJldHVybiBkYXRhOwogICAgIH0KIAogICAgIC8vIEV2ZW4gc3lzdGVtIGZhbGxiYWNrIGNhbiBm
YWlsOyB1c2UgdGhlIG1pc3NpbmcgZ2x5cGggaW4gdGhhdCBjYXNlLgogICAgIC8vIEZJWE1FOiBJ
dCB3b3VsZCBiZSBuaWNlciB0byB1c2UgdGhlIG1pc3NpbmcgZ2x5cGggZnJvbSB0aGUgbGFzdCBy
ZXNvcnQgZm9udCBpbnN0ZWFkLgogICAgIEdseXBoRGF0YSBkYXRhID0gcHJpbWFyeUZvbnQoKS0+
bWlzc2luZ0dseXBoRGF0YSgpOwotICAgIGlmICghdXNlU21hbGxDYXBzRm9udCkKKyAgICBpZiAo
IXVzZVNtYWxsQ2Fwc0ZvbnQpIHsKKyNpZiBQTEFURk9STShXSU5DRSkKKyAgICAgICAgLy8gc2Vl
IGNvbW1lbnQgYWJvdmUKKyAgICAgICAgcGFnZS0+c2V0R2x5cGhEYXRhRm9yQ2hhcmFjdGVyKGMs
IGMsIGRhdGEuZm9udERhdGEpOworICAgICAgICByZXR1cm4gcGFnZS0+Z2x5cGhEYXRhRm9yQ2hh
cmFjdGVyKGMpOworI2Vsc2UKICAgICAgICAgcGFnZS0+c2V0R2x5cGhEYXRhRm9yQ2hhcmFjdGVy
KGMsIGRhdGEuZ2x5cGgsIGRhdGEuZm9udERhdGEpOworI2VuZGlmCisgICAgfQogICAgIHJldHVy
biBkYXRhOwogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dseXBo
QnVmZmVyLmggYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dseXBoQnVmZmVyLmgKaW5kZXgg
ZGNkYTQxOS4uODhjOGJlZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
bHlwaEJ1ZmZlci5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhCdWZmZXIu
aApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMDggVG9y
Y2ggTW9iaWxlIEluYy4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDksNiAr
NTAsOCBAQCBjbGFzcyBTaW1wbGVGb250RGF0YTsKICNpZiBQTEFURk9STShDQUlSTykKIC8vIEZJ
WE1FOiBXaHkgZG9lcyBDYWlybyB1c2Ugc3VjaCBhIGh1Z2Ugc3RydWN0IGluc3RlYWQgb2YganVz
dCBhbiBvZmZzZXQgaW50byBhbiBhcnJheT8KIHR5cGVkZWYgY2Fpcm9fZ2x5cGhfdCBHbHlwaEJ1
ZmZlckdseXBoOworI2VsaWYgUExBVEZPUk0oV0lOQ0UpCit0eXBlZGVmIHdjaGFyX3QgR2x5cGhC
dWZmZXJHbHlwaDsKICNlbHNlCiB0eXBlZGVmIEdseXBoIEdseXBoQnVmZmVyR2x5cGg7CiAjZW5k
aWYKQEAgLTU3LDYgKzYwLDggQEAgdHlwZWRlZiBHbHlwaCBHbHlwaEJ1ZmZlckdseXBoOwogLy8g
Y2FuIGJlIHBhc3NlZCBkaXJlY3RseSB0byBDR0NvbnRleHRTaG93R2x5cGhzV2l0aEFkdmFuY2Vz
IGluIEZvbnRNYWMubW0KICNpZiBQTEFURk9STShDRykKIHR5cGVkZWYgQ0dTaXplIEdseXBoQnVm
ZmVyQWR2YW5jZTsKKyNlbGlmIFBMQVRGT1JNKFdJTkNFKQordHlwZWRlZiBmbG9hdCBHbHlwaEJ1
ZmZlckFkdmFuY2U7CiAjZWxzZQogdHlwZWRlZiBGbG9hdFNpemUgR2x5cGhCdWZmZXJBZHZhbmNl
OwogI2VuZGlmCkBAIC0xMTcsMTEgKzEyMiwyMCBAQCBwdWJsaWM6CiAgICAgewogI2lmIFBMQVRG
T1JNKENHKQogICAgICAgICByZXR1cm4gbV9hZHZhbmNlc1tpbmRleF0ud2lkdGg7CisjZWxpZiBQ
TEFURk9STShXSU5DRSkKKyAgICAgICAgcmV0dXJuIG1fYWR2YW5jZXNbaW5kZXhdOwogI2Vsc2UK
ICAgICAgICAgcmV0dXJuIG1fYWR2YW5jZXNbaW5kZXhdLndpZHRoKCk7CiAjZW5kaWYKICAgICB9
CiAKKyNpZiBQTEFURk9STShXSU5DRSkKKyAgICBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqIGFk
dmFuY2VEYXRhKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2FkdmFuY2VzLmRhdGEo
KTsKKyAgICB9CisjZW5kaWYKKwogICAgIEZsb2F0U2l6ZSBvZmZzZXRBdChpbnQgaW5kZXgpIGNv
bnN0CiAgICAgewogI2lmIFBMQVRGT1JNKFdJTikKQEAgLTE0Nyw2ICsxNjEsOCBAQCBwdWJsaWM6
CiAjaWYgUExBVEZPUk0oQ0cpCiAgICAgICAgIENHU2l6ZSBhZHZhbmNlID0geyB3aWR0aCwgMCB9
OwogICAgICAgICBtX2FkdmFuY2VzLmFwcGVuZChhZHZhbmNlKTsKKyNlbGlmIFBMQVRGT1JNKFdJ
TkNFKQorICAgICAgICBtX2FkdmFuY2VzLmFwcGVuZCh3aWR0aCk7CiAjZWxzZQogICAgICAgICBt
X2FkdmFuY2VzLmFwcGVuZChGbG9hdFNpemUod2lkdGgsIDApKTsKICNlbmRpZgpAQCAtMTYxLDYg
KzE3Nyw3IEBAIHB1YmxpYzoKICNlbmRpZgogICAgIH0KICAgICAKKyNpZiAhUExBVEZPUk0oV0lO
Q0UpCiAgICAgdm9pZCBhZGQoR2x5cGggZ2x5cGgsIGNvbnN0IFNpbXBsZUZvbnREYXRhKiBmb250
LCBHbHlwaEJ1ZmZlckFkdmFuY2UgYWR2YW5jZSkKICAgICB7CiAgICAgICAgIG1fZm9udERhdGEu
YXBwZW5kKGZvbnQpOwpAQCAtMTc0LDYgKzE5MSw3IEBAIHB1YmxpYzoKIAogICAgICAgICBtX2Fk
dmFuY2VzLmFwcGVuZChhZHZhbmNlKTsKICAgICB9CisjZW5kaWYKICAgICAKIHByaXZhdGU6CiAg
ICAgVmVjdG9yPGNvbnN0IFNpbXBsZUZvbnREYXRhKiwgMjA0OD4gbV9mb250RGF0YTsKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhQYWdlVHJlZU5vZGUuY3BwIGIv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlwaFBhZ2VUcmVlTm9kZS5jcHAKaW5kZXggNjQx
OWUwYy4uOWQ5YmEyNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlw
aFBhZ2VUcmVlTm9kZS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlwaFBh
Z2VUcmVlTm9kZS5jcHAKQEAgLTIwMiw4ICsyMDIsOCBAQCB2b2lkIEdseXBoUGFnZVRyZWVOb2Rl
Ojppbml0aWFsaXplUGFnZShjb25zdCBGb250RGF0YSogZm9udERhdGEsIHVuc2lnbmVkIHBhZ2VO
dQogICAgICAgICAgICAgICAgIEdseXBoUGFnZSogcGFnZVRvRmlsbCA9IG1fcGFnZS5nZXQoKTsK
ICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtUmFuZ2VzOyBpKysp
IHsKICAgICAgICAgICAgICAgICAgICAgY29uc3QgRm9udERhdGFSYW5nZSYgcmFuZ2UgPSBzZWdt
ZW50ZWRGb250RGF0YS0+cmFuZ2VBdChpKTsKLSAgICAgICAgICAgICAgICAgICAgaW50IGZyb20g
PSBtYXgoMCwgcmFuZ2UuZnJvbSgpIC0gc3RhdGljX2Nhc3Q8aW50PihzdGFydCkpOwotICAgICAg
ICAgICAgICAgICAgICBpbnQgdG8gPSAxICsgbWluKHJhbmdlLnRvKCkgLSBzdGF0aWNfY2FzdDxp
bnQ+KHN0YXJ0KSwgc3RhdGljX2Nhc3Q8aW50PihHbHlwaFBhZ2U6OnNpemUpIC0gMSk7CisgICAg
ICAgICAgICAgICAgICAgIGludCBmcm9tID0gbWF4PGludD4oMCwgcmFuZ2UuZnJvbSgpIC0gc3Rh
dGljX2Nhc3Q8aW50PihzdGFydCkpOworICAgICAgICAgICAgICAgICAgICBpbnQgdG8gPSAxICsg
bWluPGludD4ocmFuZ2UudG8oKSAtIHN0YXRpY19jYXN0PGludD4oc3RhcnQpLCBzdGF0aWNfY2Fz
dDxpbnQ+KEdseXBoUGFnZTo6c2l6ZSkgLSAxKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGZy
b20gPCBzdGF0aWNfY2FzdDxpbnQ+KEdseXBoUGFnZTo6c2l6ZSkgJiYgdG8gPiAwKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoaGF2ZUdseXBocyAmJiAhc2NyYXRjaFBhZ2UpIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JhdGNoUGFnZSA9IEdseXBoUGFnZTo6Y3JlYXRl
KHRoaXMpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaW1wbGVGb250
RGF0YS5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NpbXBsZUZvbnREYXRhLmNwcApp
bmRleCBjODc5MjI4Li45OGE2MDNkIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1NpbXBsZUZvbnREYXRhLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Np
bXBsZUZvbnREYXRhLmNwcApAQCAtNTcsNiArNTcsOCBAQCBTaW1wbGVGb250RGF0YTo6U2ltcGxl
Rm9udERhdGEoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgZiwgYm9vbCBjdXN0b21Gb250LCBib29s
CiAgICAgLCBtX2lzQ3VzdG9tRm9udChjdXN0b21Gb250KQogICAgICwgbV9pc0xvYWRpbmcobG9h
ZGluZykKICAgICAsIG1fc21hbGxDYXBzRm9udERhdGEoMCkKKyAgICAsIG1fYXZnQ2hhcldpZHRo
KC0xKQorICAgICwgbV9tYXhDaGFyV2lkdGgoLTEpCiB7CiAjaWYgIUVOQUJMRShTVkdfRk9OVFMp
CiAgICAgVU5VU0VEX1BBUkFNKHN2Z0ZvbnREYXRhKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvU2ltcGxlRm9udERhdGEuaCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvU2ltcGxlRm9udERhdGEuaAppbmRleCBjYjQ3MmIwLi40MWI4YjBjIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NpbXBsZUZvbnREYXRhLmgKKysrIGIvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9TaW1wbGVGb250RGF0YS5oCkBAIC0yLDYgKzIsNyBAQAogICogVGhp
cyBmaWxlIGlzIHBhcnQgb2YgdGhlIGludGVybmFsIGZvbnQgaW1wbGVtZW50YXRpb24uCiAgKgog
ICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNy0yMDA4IFRvcmNoIE1vYmlsZSwgSW5jLgogICoKICAq
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCkBAIC0zMyw3ICszNCw3IEBACiB0eXBlZGVmIHN0cnVjdCBPcGFxdWVBVFNV
U3R5bGUqIEFUU1VTdHlsZTsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oV0lOKQorI2lmIFBMQVRG
T1JNKFdJTikgJiYgIVBMQVRGT1JNKFdJTkNFKQogI2luY2x1ZGUgPHVzcDEwLmg+CiAjZW5kaWYK
IApAQCAtMTM0LDkgKzEzNSwxMCBAQCBwdWJsaWM6CiAKICNpZiBQTEFURk9STShXSU4pCiAgICAg
Ym9vbCBpc1N5c3RlbUZvbnQoKSBjb25zdCB7IHJldHVybiBtX2lzU3lzdGVtRm9udDsgfQorI2lm
ICFQTEFURk9STShXSU5DRSkKICAgICBTQ1JJUFRfRk9OVFBST1BFUlRJRVMqIHNjcmlwdEZvbnRQ
cm9wZXJ0aWVzKCkgY29uc3Q7CiAgICAgU0NSSVBUX0NBQ0hFKiBzY3JpcHRDYWNoZSgpIGNvbnN0
IHsgcmV0dXJuICZtX3NjcmlwdENhY2hlOyB9Ci0KKyNlbmRpZgogICAgIHN0YXRpYyB2b2lkIHNl
dFNob3VsZEFwcGx5TWFjQXNjZW50SGFjayhib29sKTsKICAgICBzdGF0aWMgYm9vbCBzaG91bGRB
cHBseU1hY0FzY2VudEhhY2soKTsKICNlbmRpZgpAQCAtMTU5LDcgKzE2MSw3IEBAIHByaXZhdGU6
CiAKICAgICB2b2lkIGNvbW1vbkluaXQoKTsKIAotI2lmIFBMQVRGT1JNKFdJTikKKyNpZiBQTEFU
Rk9STShXSU4pICYmICFQTEFURk9STShXSU5DRSkKICAgICB2b2lkIGluaXRHRElGb250KCk7CiAg
ICAgdm9pZCBwbGF0Zm9ybUNvbW1vbkRlc3Ryb3koKTsKICAgICBmbG9hdCB3aWR0aEZvckdESUds
eXBoKEdseXBoIGdseXBoKSBjb25zdDsKQEAgLTIyNCw5ICsyMjYsMTEgQEAgcHJpdmF0ZToKIAog
I2lmIFBMQVRGT1JNKFdJTikKICAgICBib29sIG1faXNTeXN0ZW1Gb250OworI2lmICFQTEFURk9S
TShXSU5DRSkKICAgICBtdXRhYmxlIFNDUklQVF9DQUNIRSBtX3NjcmlwdENhY2hlOwogICAgIG11
dGFibGUgU0NSSVBUX0ZPTlRQUk9QRVJUSUVTKiBtX3NjcmlwdEZvbnRQcm9wZXJ0aWVzOwogI2Vu
ZGlmCisjZW5kaWYKIH07CiAgICAgCiAgICAgCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcCBiL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwCmluZGV4IDg5NTg4N2Yu
LjcwYWUwMmUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUv
T3BlblR5cGVVdGlsaXRpZXMuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHly
aWdodCAoQykgMjAwOCwgMjAwOSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDA5IFRvcmNoIE1vYmlsZSwgSW5jLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC02OSw3ICs3MCwxMCBAQCBzdHJ1Y3QgVGFibGVEaXJlY3RvcnlFbnRy
eSB7CiAgICAgQmlnRW5kaWFuVUxvbmcgbGVuZ3RoOwogfTsKIAotI2lmICFQTEFURk9STShDRykK
KyNpZiBQTEFURk9STShXSU5DRSkKKy8vIE5lZWQgdG8gdXNlICNkZWZpbmUgaW5zdGVhZCBvZiB0
eXBlZGVmIGR1ZSB0byBjb25mbGljdAorI2RlZmluZSBGaXhlZCBpbnQzMl90CisjZWxpZiAhUExB
VEZPUk0oQ0cpCiAvLyBGaXhlZCB0eXBlIGlzIG5vdCBkZWZpbmVkIG9uIG5vbi1DRyBwbGF0Zm9y
bXMuIHx2ZXJzaW9ufCBpbiBzZm50SGVhZGVyCiAvLyBhbmQgaGVhZFRhYmxlIGFuZCB8Zm9udFJl
dmlzaW9ufCBpbiBoZWFkVGFibGUgYXJlIG9mIEZpeGVkLCBidXQgdGhleSdyZQogLy8gbm90IGFj
dHVhbGx5IHJlZmVyZWQgdG8gYW55d2hlcmUuIFRoZXJlZm9yZSwgd2UganVzdCBoYXZlIHRvIG1h
dGNoCkBAIC0zMzksNiArMzQzLDczIEBAIGJvb2wgZ2V0RU9USGVhZGVyKFNoYXJlZEJ1ZmZlciog
Zm9udERhdGEsIEVPVEhlYWRlciYgZW90SGVhZGVyLCBzaXplX3QmIG92ZXJsYXlECiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKKyNpZiBQTEFURk9STShXSU5DRSkKK2Jvb2wgcmVuYW1lRm9udChTaGFy
ZWRCdWZmZXIqIGZvbnREYXRhLCBjb25zdCBTdHJpbmcmIGZvbnROYW1lKQoreworICAgIHNpemVf
dCBvcmlnaW5hbERhdGFTaXplID0gZm9udERhdGEtPnNpemUoKTsKKyAgICBpZiAob3JpZ2luYWxE
YXRhU2l6ZSA8IG9mZnNldG9mKHNmbnRIZWFkZXIsIHRhYmxlcykpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIGNvbnN0IHNmbnRIZWFkZXIqIHNmbnQgPSByZWludGVycHJldF9jYXN0PGNv
bnN0IHNmbnRIZWFkZXIqPihmb250RGF0YS0+ZGF0YSgpKTsKKworICAgIGlmIChvcmlnaW5hbERh
dGFTaXplIDwgb2Zmc2V0b2Yoc2ZudEhlYWRlciwgdGFibGVzKSArIHNmbnQtPm51bVRhYmxlcyAq
IHNpemVvZihUYWJsZURpcmVjdG9yeUVudHJ5KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgdW5zaWduZWQgdDsKKyAgICBmb3IgKHQgPSAwOyB0IDwgc2ZudC0+bnVtVGFibGVzOyArK3Qp
IHsKKyAgICAgICAgaWYgKHNmbnQtPnRhYmxlc1t0XS50YWcgPT0gJ25hbWUnKQorICAgICAgICAg
ICAgYnJlYWs7CisgICAgfQorICAgIGlmICh0ID09IHNmbnQtPm51bVRhYmxlcykKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgY29uc3QgaW50IG5hbWVSZWNvcmRDb3VudCA9IDU7CisKKyAg
ICAvLyBSb3VuZGVkIHVwIHRvIGEgbXVsdGlwbGUgb2YgNCB0byBzaW1wbGlmeSB0aGUgY2hlY2tz
dW0gY2FsY3VsYXRpb24uCisgICAgc2l6ZV90IG5hbWVUYWJsZVNpemUgPSAoKG9mZnNldG9mKG5h
bWVUYWJsZSwgbmFtZVJlY29yZHMpICsgbmFtZVJlY29yZENvdW50ICogc2l6ZW9mKG5hbWVSZWNv
cmQpICsgZm9udE5hbWUubGVuZ3RoKCkgKiBzaXplb2YoVUNoYXIpKSAmIH4zKSArIDQ7CisKKyAg
ICBWZWN0b3I8Y2hhcj4gcmV3cml0dGVuRm9udERhdGEoZm9udERhdGEtPnNpemUoKSArIG5hbWVU
YWJsZVNpemUpOworICAgIGNoYXIqIGRhdGEgPSByZXdyaXR0ZW5Gb250RGF0YS5kYXRhKCk7Cisg
ICAgbWVtY3B5KGRhdGEsIGZvbnREYXRhLT5kYXRhKCksIG9yaWdpbmFsRGF0YVNpemUpOworCisg
ICAgLy8gTWFrZSB0aGUgdGFibGUgZGlyZWN0b3J5IGVudHJ5IHBvaW50IHRvIHRoZSBuZXcgJ25h
bWUnIHRhYmxlLgorICAgIHNmbnRIZWFkZXIqIHJld3JpdHRlblNmbnQgPSByZWludGVycHJldF9j
YXN0PHNmbnRIZWFkZXIqPihkYXRhKTsKKyAgICByZXdyaXR0ZW5TZm50LT50YWJsZXNbdF0ubGVu
Z3RoID0gbmFtZVRhYmxlU2l6ZTsKKyAgICByZXdyaXR0ZW5TZm50LT50YWJsZXNbdF0ub2Zmc2V0
ID0gb3JpZ2luYWxEYXRhU2l6ZTsKKworICAgIC8vIFdyaXRlIHRoZSBuZXcgJ25hbWUnIHRhYmxl
IGFmdGVyIHRoZSBvcmlnaW5hbCBmb250IGRhdGEuCisgICAgbmFtZVRhYmxlKiBuYW1lID0gcmVp
bnRlcnByZXRfY2FzdDxuYW1lVGFibGUqPihkYXRhICsgb3JpZ2luYWxEYXRhU2l6ZSk7CisgICAg
bmFtZS0+Zm9ybWF0ID0gMDsKKyAgICBuYW1lLT5jb3VudCA9IG5hbWVSZWNvcmRDb3VudDsKKyAg
ICBuYW1lLT5zdHJpbmdPZmZzZXQgPSBvZmZzZXRvZihuYW1lVGFibGUsIG5hbWVSZWNvcmRzKSAr
IG5hbWVSZWNvcmRDb3VudCAqIHNpemVvZihuYW1lUmVjb3JkKTsKKyAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbmFtZVJlY29yZENvdW50OyArK2kpIHsKKyAgICAgICAgbmFtZS0+bmFtZVJl
Y29yZHNbaV0ucGxhdGZvcm1JRCA9IDM7CisgICAgICAgIG5hbWUtPm5hbWVSZWNvcmRzW2ldLmVu
Y29kaW5nSUQgPSAxOworICAgICAgICBuYW1lLT5uYW1lUmVjb3Jkc1tpXS5sYW5ndWFnZUlEID0g
MHgwNDA5OworICAgICAgICBuYW1lLT5uYW1lUmVjb3Jkc1tpXS5vZmZzZXQgPSAwOworICAgICAg
ICBuYW1lLT5uYW1lUmVjb3Jkc1tpXS5sZW5ndGggPSBmb250TmFtZS5sZW5ndGgoKSAqIHNpemVv
ZihVQ2hhcik7CisgICAgfQorCisgICAgLy8gVGhlIHJlcXVpcmVkICduYW1lJyByZWNvcmQgdHlw
ZXM6IEZhbWlseSwgU3R5bGUsIFVuaXF1ZSwgRnVsbCBhbmQgUG9zdFNjcmlwdC4KKyAgICBuYW1l
LT5uYW1lUmVjb3Jkc1swXS5uYW1lSUQgPSAxOworICAgIG5hbWUtPm5hbWVSZWNvcmRzWzFdLm5h
bWVJRCA9IDI7CisgICAgbmFtZS0+bmFtZVJlY29yZHNbMl0ubmFtZUlEID0gMzsKKyAgICBuYW1l
LT5uYW1lUmVjb3Jkc1szXS5uYW1lSUQgPSA0OworICAgIG5hbWUtPm5hbWVSZWNvcmRzWzRdLm5h
bWVJRCA9IDY7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZm9udE5hbWUubGVuZ3Ro
KCk7ICsraSkKKyAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxCaWdFbmRpYW5VU2hvcnQqPihkYXRh
ICsgb3JpZ2luYWxEYXRhU2l6ZSArIG5hbWUtPnN0cmluZ09mZnNldClbaV0gPSBmb250TmFtZVtp
XTsKKworICAgIC8vIFVwZGF0ZSB0aGUgdGFibGUgY2hlY2tzdW0gaW4gdGhlIGRpcmVjdG9yeSBl
bnRyeS4KKyAgICByZXdyaXR0ZW5TZm50LT50YWJsZXNbdF0uY2hlY2tTdW0gPSAwOworICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgKiBzaXplb2YoQmlnRW5kaWFuVUxvbmcpIDwgbmFtZVRhYmxl
U2l6ZTsgKytpKQorICAgICAgICByZXdyaXR0ZW5TZm50LT50YWJsZXNbdF0uY2hlY2tTdW0gPSBy
ZXdyaXR0ZW5TZm50LT50YWJsZXNbdF0uY2hlY2tTdW0gKyByZWludGVycHJldF9jYXN0PEJpZ0Vu
ZGlhblVMb25nKj4obmFtZSlbaV07CisKKyAgICBmb250RGF0YS0+Y2xlYXIoKTsKKyAgICBmb250
RGF0YS0+YXBwZW5kKHJld3JpdHRlbkZvbnREYXRhLmRhdGEoKSwgcmV3cml0dGVuRm9udERhdGEu
c2l6ZSgpKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKyNlbHNlCiBIQU5ETEUgcmVuYW1lQW5kQWN0
aXZhdGVGb250KFNoYXJlZEJ1ZmZlciogZm9udERhdGEsIGNvbnN0IFN0cmluZyYgZm9udE5hbWUp
CiB7CiAgICAgc2l6ZV90IG9yaWdpbmFsRGF0YVNpemUgPSBmb250RGF0YS0+c2l6ZSgpOwpAQCAt
NDA0LDUgKzQ3NSw2IEBAIEhBTkRMRSByZW5hbWVBbmRBY3RpdmF0ZUZvbnQoU2hhcmVkQnVmZmVy
KiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBmb250TmFtZSkKIAogICAgIHJldHVybiBmb250SGFu
ZGxlOwogfQorI2VuZGlmCiAKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuaCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuaAppbmRleCAxM2RhZDZmLi4xN2Q3ZDJiIDEw
MDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRp
bGl0aWVzLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlw
ZVV0aWxpdGllcy5oCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwOCwg
MjAwOSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDA5IFRvcmNoIE1vYmlsZSwgSW5jLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0yNyw3ICsyOCw5IEBACiAjZGVmaW5lIE9wZW5UeXBlVXRpbGl0aWVzX2gKIAogI2luY2x1ZGUg
IlBsYXRmb3JtU3RyaW5nLmgiCisjaWYgIVBMQVRGT1JNKFdJTkNFKQogI2luY2x1ZGUgPHd0Zi9G
b3J3YXJkLmg+CisjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zNSw2ICszOCwx
MCBAQCBzdHJ1Y3QgQmlnRW5kaWFuVVNob3J0Owogc3RydWN0IEVPVFByZWZpeDsKIGNsYXNzIFNo
YXJlZEJ1ZmZlcjsKIAorI2lmIFBMQVRGT1JNKFdJTkNFKQordHlwZWRlZiB1bnNpZ25lZCBfX2lu
dDggVUludDg7CisjZW5kaWYKKwogc3RydWN0IEVPVEhlYWRlciB7CiAgICAgRU9USGVhZGVyKCk7
CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YS5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0ZvbnRD
dXN0b21QbGF0Zm9ybURhdGEuY3BwCmluZGV4IDdjNjg1M2MuLjY5OWZmMjUgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5j
cHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9Gb250Q3VzdG9tUGxhdGZv
cm1EYXRhLmNwcApAQCAtMzMsNiArMzMsMTEgQEAgc3RhdGljIEN1c3RvbUZvbnRDYWNoZSogZ19j
dXN0b21Gb250Q2FjaGUgPSAwOwogCiBib29sIHJlbmFtZUZvbnQoU2hhcmVkQnVmZmVyKiBmb250
RGF0YSwgY29uc3QgU3RyaW5nJiBmb250TmFtZSk7CiAKK3ZvaWQgc2V0Q3VzdG9tRm9udENhY2hl
KEN1c3RvbUZvbnRDYWNoZSogY2FjaGUpCit7CisgICAgZ19jdXN0b21Gb250Q2FjaGUgPSBjYWNo
ZTsKK30KKwogRm9udEN1c3RvbVBsYXRmb3JtRGF0YTo6fkZvbnRDdXN0b21QbGF0Zm9ybURhdGEo
KQogewogICAgIGlmIChnX2N1c3RvbUZvbnRDYWNoZSAmJiAhbV9uYW1lLmlzRW1wdHkoKSkKQEAg
LTY2LDExICs3MSwxMiBAQCBzdGF0aWMgU3RyaW5nIGNyZWF0ZVVuaXF1ZUZvbnROYW1lKCkKICAg
ICByZXR1cm4gZm9udE5hbWUucmVwbGFjZSgnLycsICdfJyk7CiB9CiAKLUZvbnRDdXN0b21QbGF0
Zm9ybURhdGEqIGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoQ2FjaGVkRm9udCogY2FjaGVk
Rm9udCkKK0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEqIGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURh
dGEoY29uc3QgU2hhcmVkQnVmZmVyKiBidWZmZXIpCiB7Ci0gICAgaWYgKGdfY3VzdG9tRm9udENh
Y2hlICYmIGNhY2hlZEZvbnQtPkNhY2hlZFJlc291cmNlOjpkYXRhKCkpIHsKKyAgICBpZiAoZ19j
dXN0b21Gb250Q2FjaGUpIHsKICAgICAgICAgU3RyaW5nIGZvbnROYW1lID0gY3JlYXRlVW5pcXVl
Rm9udE5hbWUoKTsKLSAgICAgICAgaWYgKHJlbmFtZUZvbnQoY2FjaGVkRm9udC0+Q2FjaGVkUmVz
b3VyY2U6OmRhdGEoKSwgZm9udE5hbWUpICYmIGdfY3VzdG9tRm9udENhY2hlLT5yZWdpc3RlckZv
bnQoZm9udE5hbWUsIGNhY2hlZEZvbnQpKQorICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBs
b2NhbEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXIt
PnNpemUoKSk7CisgICAgICAgIGlmIChyZW5hbWVGb250KGxvY2FsQnVmZmVyLmdldCgpLCBmb250
TmFtZSkgJiYgZ19jdXN0b21Gb250Q2FjaGUtPnJlZ2lzdGVyRm9udChmb250TmFtZSwgbG9jYWxC
dWZmZXIuZ2V0KCkpKQogICAgICAgICAgICAgcmV0dXJuIG5ldyBGb250Q3VzdG9tUGxhdGZvcm1E
YXRhKGZvbnROYW1lKTsKICAgICB9CiAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaCBiL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCmluZGV4
IGIxZjY0YTAuLjU3ZTMzZDggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luY2UvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luY2UvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCkBAIC0zMiw3ICszMiw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIEN1c3RvbUZvbnRDYWNoZSB7CiAgICAgcHVi
bGljOgotICAgICAgICB2aXJ0dWFsIGJvb2wgcmVnaXN0ZXJGb250KGNvbnN0IFN0cmluZyYgZm9u
dE5hbWUsIENhY2hlZEZvbnQqKSA9IDA7CisgICAgICAgIHZpcnR1YWwgYm9vbCByZWdpc3RlckZv
bnQoY29uc3QgU3RyaW5nJiBmb250TmFtZSwgY29uc3QgU2hhcmVkQnVmZmVyKiBidWZmZXIpID0g
MDsKICAgICAgICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJGb250KGNvbnN0IFN0cmluZyYgZm9u
dE5hbWUpID0gMDsKICAgICB9OwogCkBAIC00OCw4ICs0OCw4IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgU3RyaW5nIG1fbmFtZTsKICAgICB9OwogCi0gICAgRm9udEN1c3RvbVBsYXRm
b3JtRGF0YSogY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShDYWNoZWRGb250Kik7Ci0KKyAg
ICBGb250Q3VzdG9tUGxhdGZvcm1EYXRhKiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKGNv
bnN0IFNoYXJlZEJ1ZmZlciogYnVmZmVyKTsKKyAgICB2b2lkIHNldEN1c3RvbUZvbnRDYWNoZShD
dXN0b21Gb250Q2FjaGUqKTsKIH0KIAogI2VuZGlmCg==
</data>
<flag name="review"
          id="18334"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34297</attachid>
            <date>2009-08-07 11:30:27 -0700</date>
            <delta_ts>2009-08-13 08:40:31 -0700</delta_ts>
            <desc>use shared buffer in custom font data</desc>
            <filename>bug27734-customdata.patch</filename>
            <type>text/plain</type>
            <size>11281</size>
            <attacher name="Joe Mason">joenotcharles</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NmUxZjBjYS4uODEwZTljNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAwOS0wOC0wNyAgWW9uZyBMaSAgPHlv
bmcubGlAdG9yY2htb2JpbGUuY29tPgorCisgICAgICAgIFdJTkNFIFBPUlQ6IHVzZSBzaGFyZWQg
YnVmZmVyIGZvciBjdXN0b20gZm9udCBkYXRhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yNzczNAorCisgICAgICAgIFdyaXR0ZW4gYnkgWW9uZyBMaSAg
PHlvbmcubGlAdG9yY2htb2JpbGUuY29tPgorICAgICAgICB3aXRoIHN0eWxlIGZpeGVzIGJ5IEpv
ZSBNYXNvbiAgPGpvZS5tYXNvbkB0b3JjaG1vYmlsZS5jb20+CisKKyAgICAgICAgKiBsb2FkZXIv
Q2FjaGVkRm9udC5jcHA6CisgICAgICAgICAgYWRkIFdJTkNFIHRvIHBsYXRmb3JtcyB1c2luZyBj
YWNoZWQgY3VzdG9tIGRhdGEKKyAgICAgICAgICBjaGFuZ2UgcmVwZWF0ZWQgbGlzdCBvZiBwbGF0
Zm9ybXMgdG8gYSBzaW1wbGUgaWZkZWYKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6On5D
YWNoZWRGb250KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6OmVuc3VyZUN1c3RvbUZv
bnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6OnBsYXRmb3JtRGF0YUZyb21D
dXN0b21EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6OmFsbENsaWVudHNSZW1v
dmVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxp
dGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZW5hbWVGb250KTogaW1wbGVtZW50IGZvciBX
aW5DRQorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0
aWVzLmg6CisgICAgICAgICAgYnVpbGQgZml4ZXMKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy93aW5jZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNl
dEN1c3RvbUZvbnRDYWNoZSk6IGFkZCBhY2Nlc3NvcgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YSk6IGNoYW5nZSBwYXJhbSB0byBTaGFyZWRCdWZmZXIKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmg6
CisgICAgICAgICAgdXBkYXRlIGZ1bmN0aW9uIHNpZ25hdHVyZXMKKwogMjAwOS0wOC0wNiAgQW5k
cmFzIEJlY3NpICA8YmVjc2kuYW5kcmFzQHN0dWQudS1zemVnZWQuaHU+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9DYWNo
ZWRGb250LmNwcCBiL1dlYkNvcmUvbG9hZGVyL0NhY2hlZEZvbnQuY3BwCmluZGV4IGFmMThjYzku
LjNjZjk2Y2IgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL0NhY2hlZEZvbnQuY3BwCisrKyBi
L1dlYkNvcmUvbG9hZGVyL0NhY2hlZEZvbnQuY3BwCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENv
cHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgVG9yY2ggTW9iaWxlLCBJbmMuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDEyICsyNywxNiBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIkNhY2hlZEZvbnQuaCIKIAorI2lmIFBMQVRGT1JNKENHKSB8fCBQTEFU
Rk9STShRVCkgfHwgUExBVEZPUk0oR1RLKSB8fCAoUExBVEZPUk0oQ0hST01JVU0pICYmIFBMQVRG
T1JNKFdJTl9PUykpIHx8IFBMQVRGT1JNKFdJTkNFKQorI2RlZmluZSBTVE9SRV9GT05UX0NVU1RP
TV9QTEFURk9STV9EQVRBCisjZW5kaWYKKwogI2luY2x1ZGUgIkNhY2hlLmgiCiAjaW5jbHVkZSAi
Q2FjaGVkUmVzb3VyY2VDbGllbnQuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUNsaWVudFdh
bGtlci5oIgogI2luY2x1ZGUgIkRPTUltcGxlbWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiRm9udFBs
YXRmb3JtRGF0YS5oIgotI2lmIFBMQVRGT1JNKENHKSB8fCBQTEFURk9STShRVCkgfHwgUExBVEZP
Uk0oR1RLKSB8fCAoUExBVEZPUk0oQ0hST01JVU0pICYmIFBMQVRGT1JNKFdJTl9PUykpCisjaWZk
ZWYgU1RPUkVfRk9OVF9DVVNUT01fUExBVEZPUk1fREFUQQogI2luY2x1ZGUgIkZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEuaCIKICNlbmRpZgogI2luY2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCIK
QEAgLTYwLDcgKzY1LDcgQEAgQ2FjaGVkRm9udDo6Q2FjaGVkRm9udChjb25zdCBTdHJpbmcgJnVy
bCkKIAogQ2FjaGVkRm9udDo6fkNhY2hlZEZvbnQoKQogewotI2lmIFBMQVRGT1JNKENHKSB8fCBQ
TEFURk9STShRVCkgfHwgUExBVEZPUk0oR1RLKSB8fCAoUExBVEZPUk0oQ0hST01JVU0pICYmIFBM
QVRGT1JNKFdJTl9PUykpCisjaWZkZWYgU1RPUkVfRk9OVF9DVVNUT01fUExBVEZPUk1fREFUQQog
ICAgIGRlbGV0ZSBtX2ZvbnREYXRhOwogI2VuZGlmCiB9CkBAIC05OCw3ICsxMDMsNyBAQCB2b2lk
IENhY2hlZEZvbnQ6OmJlZ2luTG9hZElmTmVlZGVkKERvY0xvYWRlciogZGwpCiAKIGJvb2wgQ2Fj
aGVkRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoKQogewotI2lmIFBMQVRGT1JNKENHKSB8fCBQ
TEFURk9STShRVCkgfHwgUExBVEZPUk0oR1RLKSB8fCAoUExBVEZPUk0oQ0hST01JVU0pICYmIFBM
QVRGT1JNKFdJTl9PUykpCisjaWZkZWYgU1RPUkVfRk9OVF9DVVNUT01fUExBVEZPUk1fREFUQQog
I2lmIEVOQUJMRShTVkdfRk9OVFMpCiAgICAgQVNTRVJUKCFtX2lzU1ZHRm9udCk7CiAjZW5kaWYK
QEAgLTExNyw3ICsxMjIsNyBAQCBGb250UGxhdGZvcm1EYXRhIENhY2hlZEZvbnQ6OnBsYXRmb3Jt
RGF0YUZyb21DdXN0b21EYXRhKGZsb2F0IHNpemUsIGJvb2wgYm9sZCwgYgogICAgIGlmIChtX2V4
dGVybmFsU1ZHRG9jdW1lbnQpCiAgICAgICAgIHJldHVybiBGb250UGxhdGZvcm1EYXRhKHNpemUs
IGJvbGQsIGl0YWxpYyk7CiAjZW5kaWYKLSNpZiBQTEFURk9STShDRykgfHwgUExBVEZPUk0oUVQp
IHx8IFBMQVRGT1JNKEdUSykgfHwgKFBMQVRGT1JNKENIUk9NSVVNKSAmJiBQTEFURk9STShXSU5f
T1MpKQorI2lmZGVmIFNUT1JFX0ZPTlRfQ1VTVE9NX1BMQVRGT1JNX0RBVEEKICAgICBBU1NFUlQo
bV9mb250RGF0YSk7CiAgICAgcmV0dXJuIG1fZm9udERhdGEtPmZvbnRQbGF0Zm9ybURhdGEoc3Rh
dGljX2Nhc3Q8aW50PihzaXplKSwgYm9sZCwgaXRhbGljLCByZW5kZXJpbmdNb2RlKTsKICNlbHNl
CkBAIC0xNzMsNyArMTc4LDcgQEAgU1ZHRm9udEVsZW1lbnQqIENhY2hlZEZvbnQ6OmdldFNWR0Zv
bnRCeUlkKGNvbnN0IFN0cmluZyYgZm9udE5hbWUpIGNvbnN0CiAKIHZvaWQgQ2FjaGVkRm9udDo6
YWxsQ2xpZW50c1JlbW92ZWQoKQogewotI2lmIFBMQVRGT1JNKENHKSB8fCBQTEFURk9STShRVCkg
fHwgUExBVEZPUk0oR1RLKSB8fCAoUExBVEZPUk0oQ0hST01JVU0pICYmIFBMQVRGT1JNKFdJTl9P
UykpCisjaWZkZWYgU1RPUkVfRk9OVF9DVVNUT01fUExBVEZPUk1fREFUQQogICAgIGlmIChtX2Zv
bnREYXRhKSB7CiAgICAgICAgIGRlbGV0ZSBtX2ZvbnREYXRhOwogICAgICAgICBtX2ZvbnREYXRh
ID0gMDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3Bl
blR5cGVVdGlsaXRpZXMuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9P
cGVuVHlwZVV0aWxpdGllcy5jcHAKaW5kZXggODk1ODg3Zi4uNzBhZTAyZSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5jcHAK
KysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGll
cy5jcHAKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IEFw
cGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgVG9y
Y2ggTW9iaWxlLCBJbmMuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTY5LDcg
KzcwLDEwIEBAIHN0cnVjdCBUYWJsZURpcmVjdG9yeUVudHJ5IHsKICAgICBCaWdFbmRpYW5VTG9u
ZyBsZW5ndGg7CiB9OwogCi0jaWYgIVBMQVRGT1JNKENHKQorI2lmIFBMQVRGT1JNKFdJTkNFKQor
Ly8gTmVlZCB0byB1c2UgI2RlZmluZSBpbnN0ZWFkIG9mIHR5cGVkZWYgZHVlIHRvIGNvbmZsaWN0
CisjZGVmaW5lIEZpeGVkIGludDMyX3QKKyNlbGlmICFQTEFURk9STShDRykKIC8vIEZpeGVkIHR5
cGUgaXMgbm90IGRlZmluZWQgb24gbm9uLUNHIHBsYXRmb3Jtcy4gfHZlcnNpb258IGluIHNmbnRI
ZWFkZXIKIC8vIGFuZCBoZWFkVGFibGUgYW5kIHxmb250UmV2aXNpb258IGluIGhlYWRUYWJsZSBh
cmUgb2YgRml4ZWQsIGJ1dCB0aGV5J3JlCiAvLyBub3QgYWN0dWFsbHkgcmVmZXJlZCB0byBhbnl3
aGVyZS4gVGhlcmVmb3JlLCB3ZSBqdXN0IGhhdmUgdG8gbWF0Y2gKQEAgLTMzOSw2ICszNDMsNzMg
QEAgYm9vbCBnZXRFT1RIZWFkZXIoU2hhcmVkQnVmZmVyKiBmb250RGF0YSwgRU9USGVhZGVyJiBl
b3RIZWFkZXIsIHNpemVfdCYgb3ZlcmxheUQKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorI2lmIFBM
QVRGT1JNKFdJTkNFKQorYm9vbCByZW5hbWVGb250KFNoYXJlZEJ1ZmZlciogZm9udERhdGEsIGNv
bnN0IFN0cmluZyYgZm9udE5hbWUpCit7CisgICAgc2l6ZV90IG9yaWdpbmFsRGF0YVNpemUgPSBm
b250RGF0YS0+c2l6ZSgpOworICAgIGlmIChvcmlnaW5hbERhdGFTaXplIDwgb2Zmc2V0b2Yoc2Zu
dEhlYWRlciwgdGFibGVzKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgY29uc3Qgc2Zu
dEhlYWRlciogc2ZudCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgc2ZudEhlYWRlcio+KGZvbnRE
YXRhLT5kYXRhKCkpOworCisgICAgaWYgKG9yaWdpbmFsRGF0YVNpemUgPCBvZmZzZXRvZihzZm50
SGVhZGVyLCB0YWJsZXMpICsgc2ZudC0+bnVtVGFibGVzICogc2l6ZW9mKFRhYmxlRGlyZWN0b3J5
RW50cnkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICB1bnNpZ25lZCB0OworICAgIGZv
ciAodCA9IDA7IHQgPCBzZm50LT5udW1UYWJsZXM7ICsrdCkgeworICAgICAgICBpZiAoc2ZudC0+
dGFibGVzW3RdLnRhZyA9PSAnbmFtZScpCisgICAgICAgICAgICBicmVhazsKKyAgICB9CisgICAg
aWYgKHQgPT0gc2ZudC0+bnVtVGFibGVzKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBj
b25zdCBpbnQgbmFtZVJlY29yZENvdW50ID0gNTsKKworICAgIC8vIFJvdW5kZWQgdXAgdG8gYSBt
dWx0aXBsZSBvZiA0IHRvIHNpbXBsaWZ5IHRoZSBjaGVja3N1bSBjYWxjdWxhdGlvbi4KKyAgICBz
aXplX3QgbmFtZVRhYmxlU2l6ZSA9ICgob2Zmc2V0b2YobmFtZVRhYmxlLCBuYW1lUmVjb3Jkcykg
KyBuYW1lUmVjb3JkQ291bnQgKiBzaXplb2YobmFtZVJlY29yZCkgKyBmb250TmFtZS5sZW5ndGgo
KSAqIHNpemVvZihVQ2hhcikpICYgfjMpICsgNDsKKworICAgIFZlY3RvcjxjaGFyPiByZXdyaXR0
ZW5Gb250RGF0YShmb250RGF0YS0+c2l6ZSgpICsgbmFtZVRhYmxlU2l6ZSk7CisgICAgY2hhciog
ZGF0YSA9IHJld3JpdHRlbkZvbnREYXRhLmRhdGEoKTsKKyAgICBtZW1jcHkoZGF0YSwgZm9udERh
dGEtPmRhdGEoKSwgb3JpZ2luYWxEYXRhU2l6ZSk7CisKKyAgICAvLyBNYWtlIHRoZSB0YWJsZSBk
aXJlY3RvcnkgZW50cnkgcG9pbnQgdG8gdGhlIG5ldyAnbmFtZScgdGFibGUuCisgICAgc2ZudEhl
YWRlciogcmV3cml0dGVuU2ZudCA9IHJlaW50ZXJwcmV0X2Nhc3Q8c2ZudEhlYWRlcio+KGRhdGEp
OworICAgIHJld3JpdHRlblNmbnQtPnRhYmxlc1t0XS5sZW5ndGggPSBuYW1lVGFibGVTaXplOwor
ICAgIHJld3JpdHRlblNmbnQtPnRhYmxlc1t0XS5vZmZzZXQgPSBvcmlnaW5hbERhdGFTaXplOwor
CisgICAgLy8gV3JpdGUgdGhlIG5ldyAnbmFtZScgdGFibGUgYWZ0ZXIgdGhlIG9yaWdpbmFsIGZv
bnQgZGF0YS4KKyAgICBuYW1lVGFibGUqIG5hbWUgPSByZWludGVycHJldF9jYXN0PG5hbWVUYWJs
ZSo+KGRhdGEgKyBvcmlnaW5hbERhdGFTaXplKTsKKyAgICBuYW1lLT5mb3JtYXQgPSAwOworICAg
IG5hbWUtPmNvdW50ID0gbmFtZVJlY29yZENvdW50OworICAgIG5hbWUtPnN0cmluZ09mZnNldCA9
IG9mZnNldG9mKG5hbWVUYWJsZSwgbmFtZVJlY29yZHMpICsgbmFtZVJlY29yZENvdW50ICogc2l6
ZW9mKG5hbWVSZWNvcmQpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBuYW1lUmVjb3Jk
Q291bnQ7ICsraSkgeworICAgICAgICBuYW1lLT5uYW1lUmVjb3Jkc1tpXS5wbGF0Zm9ybUlEID0g
MzsKKyAgICAgICAgbmFtZS0+bmFtZVJlY29yZHNbaV0uZW5jb2RpbmdJRCA9IDE7CisgICAgICAg
IG5hbWUtPm5hbWVSZWNvcmRzW2ldLmxhbmd1YWdlSUQgPSAweDA0MDk7CisgICAgICAgIG5hbWUt
Pm5hbWVSZWNvcmRzW2ldLm9mZnNldCA9IDA7CisgICAgICAgIG5hbWUtPm5hbWVSZWNvcmRzW2ld
Lmxlbmd0aCA9IGZvbnROYW1lLmxlbmd0aCgpICogc2l6ZW9mKFVDaGFyKTsKKyAgICB9CisKKyAg
ICAvLyBUaGUgcmVxdWlyZWQgJ25hbWUnIHJlY29yZCB0eXBlczogRmFtaWx5LCBTdHlsZSwgVW5p
cXVlLCBGdWxsIGFuZCBQb3N0U2NyaXB0LgorICAgIG5hbWUtPm5hbWVSZWNvcmRzWzBdLm5hbWVJ
RCA9IDE7CisgICAgbmFtZS0+bmFtZVJlY29yZHNbMV0ubmFtZUlEID0gMjsKKyAgICBuYW1lLT5u
YW1lUmVjb3Jkc1syXS5uYW1lSUQgPSAzOworICAgIG5hbWUtPm5hbWVSZWNvcmRzWzNdLm5hbWVJ
RCA9IDQ7CisgICAgbmFtZS0+bmFtZVJlY29yZHNbNF0ubmFtZUlEID0gNjsKKworICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBmb250TmFtZS5sZW5ndGgoKTsgKytpKQorICAgICAgICByZWlu
dGVycHJldF9jYXN0PEJpZ0VuZGlhblVTaG9ydCo+KGRhdGEgKyBvcmlnaW5hbERhdGFTaXplICsg
bmFtZS0+c3RyaW5nT2Zmc2V0KVtpXSA9IGZvbnROYW1lW2ldOworCisgICAgLy8gVXBkYXRlIHRo
ZSB0YWJsZSBjaGVja3N1bSBpbiB0aGUgZGlyZWN0b3J5IGVudHJ5LgorICAgIHJld3JpdHRlblNm
bnQtPnRhYmxlc1t0XS5jaGVja1N1bSA9IDA7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSAq
IHNpemVvZihCaWdFbmRpYW5VTG9uZykgPCBuYW1lVGFibGVTaXplOyArK2kpCisgICAgICAgIHJl
d3JpdHRlblNmbnQtPnRhYmxlc1t0XS5jaGVja1N1bSA9IHJld3JpdHRlblNmbnQtPnRhYmxlc1t0
XS5jaGVja1N1bSArIHJlaW50ZXJwcmV0X2Nhc3Q8QmlnRW5kaWFuVUxvbmcqPihuYW1lKVtpXTsK
KworICAgIGZvbnREYXRhLT5jbGVhcigpOworICAgIGZvbnREYXRhLT5hcHBlbmQocmV3cml0dGVu
Rm9udERhdGEuZGF0YSgpLCByZXdyaXR0ZW5Gb250RGF0YS5zaXplKCkpOworICAgIHJldHVybiB0
cnVlOworfQorI2Vsc2UKIEhBTkRMRSByZW5hbWVBbmRBY3RpdmF0ZUZvbnQoU2hhcmVkQnVmZmVy
KiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBmb250TmFtZSkKIHsKICAgICBzaXplX3Qgb3JpZ2lu
YWxEYXRhU2l6ZSA9IGZvbnREYXRhLT5zaXplKCk7CkBAIC00MDQsNSArNDc1LDYgQEAgSEFORExF
IHJlbmFtZUFuZEFjdGl2YXRlRm9udChTaGFyZWRCdWZmZXIqIGZvbnREYXRhLCBjb25zdCBTdHJp
bmcmIGZvbnROYW1lKQogCiAgICAgcmV0dXJuIGZvbnRIYW5kbGU7CiB9CisjZW5kaWYKIAogfQpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0
aWxpdGllcy5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0
aWxpdGllcy5oCmluZGV4IDEzZGFkNmYuLjE3ZDdkMmIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuaAorKysgYi9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmgKQEAgLTEsNSAr
MSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IEFwcGxlIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgVG9yY2ggTW9iaWxlLCBJbmMu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI3LDcgKzI4LDkgQEAKICNkZWZp
bmUgT3BlblR5cGVVdGlsaXRpZXNfaAogCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNp
ZiAhUExBVEZPUk0oV0lOQ0UpCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNlbmRpZgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM1LDYgKzM4LDEwIEBAIHN0cnVjdCBCaWdFbmRpYW5V
U2hvcnQ7CiBzdHJ1Y3QgRU9UUHJlZml4OwogY2xhc3MgU2hhcmVkQnVmZmVyOwogCisjaWYgUExB
VEZPUk0oV0lOQ0UpCit0eXBlZGVmIHVuc2lnbmVkIF9faW50OCBVSW50ODsKKyNlbmRpZgorCiBz
dHJ1Y3QgRU9USGVhZGVyIHsKICAgICBFT1RIZWFkZXIoKTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcCBiL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAK
aW5kZXggN2M2ODUzYy4uNjk5ZmYyNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW5jZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAorKysgYi9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbmNlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCkBAIC0zMyw2ICsz
MywxMSBAQCBzdGF0aWMgQ3VzdG9tRm9udENhY2hlKiBnX2N1c3RvbUZvbnRDYWNoZSA9IDA7CiAK
IGJvb2wgcmVuYW1lRm9udChTaGFyZWRCdWZmZXIqIGZvbnREYXRhLCBjb25zdCBTdHJpbmcmIGZv
bnROYW1lKTsKIAordm9pZCBzZXRDdXN0b21Gb250Q2FjaGUoQ3VzdG9tRm9udENhY2hlKiBjYWNo
ZSkKK3sKKyAgICBnX2N1c3RvbUZvbnRDYWNoZSA9IGNhY2hlOworfQorCiBGb250Q3VzdG9tUGxh
dGZvcm1EYXRhOjp+Rm9udEN1c3RvbVBsYXRmb3JtRGF0YSgpCiB7CiAgICAgaWYgKGdfY3VzdG9t
Rm9udENhY2hlICYmICFtX25hbWUuaXNFbXB0eSgpKQpAQCAtNjYsMTEgKzcxLDEyIEBAIHN0YXRp
YyBTdHJpbmcgY3JlYXRlVW5pcXVlRm9udE5hbWUoKQogICAgIHJldHVybiBmb250TmFtZS5yZXBs
YWNlKCcvJywgJ18nKTsKIH0KIAotRm9udEN1c3RvbVBsYXRmb3JtRGF0YSogY3JlYXRlRm9udEN1
c3RvbVBsYXRmb3JtRGF0YShDYWNoZWRGb250KiBjYWNoZWRGb250KQorRm9udEN1c3RvbVBsYXRm
b3JtRGF0YSogY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShjb25zdCBTaGFyZWRCdWZmZXIq
IGJ1ZmZlcikKIHsKLSAgICBpZiAoZ19jdXN0b21Gb250Q2FjaGUgJiYgY2FjaGVkRm9udC0+Q2Fj
aGVkUmVzb3VyY2U6OmRhdGEoKSkgeworICAgIGlmIChnX2N1c3RvbUZvbnRDYWNoZSkgewogICAg
ICAgICBTdHJpbmcgZm9udE5hbWUgPSBjcmVhdGVVbmlxdWVGb250TmFtZSgpOwotICAgICAgICBp
ZiAocmVuYW1lRm9udChjYWNoZWRGb250LT5DYWNoZWRSZXNvdXJjZTo6ZGF0YSgpLCBmb250TmFt
ZSkgJiYgZ19jdXN0b21Gb250Q2FjaGUtPnJlZ2lzdGVyRm9udChmb250TmFtZSwgY2FjaGVkRm9u
dCkpCisgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGxvY2FsQnVmZmVyID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgaWYg
KHJlbmFtZUZvbnQobG9jYWxCdWZmZXIuZ2V0KCksIGZvbnROYW1lKSAmJiBnX2N1c3RvbUZvbnRD
YWNoZS0+cmVnaXN0ZXJGb250KGZvbnROYW1lLCBsb2NhbEJ1ZmZlci5nZXQoKSkpCiAgICAgICAg
ICAgICByZXR1cm4gbmV3IEZvbnRDdXN0b21QbGF0Zm9ybURhdGEoZm9udE5hbWUpOwogICAgIH0K
ICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
Y2UvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW5jZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKaW5kZXggYjFmNjRhMC4uODlkMWZkZCAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9Gb250Q3VzdG9tUGxhdGZv
cm1EYXRhLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9Gb250Q3VzdG9t
UGxhdGZvcm1EYXRhLmgKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAg
ICAgY2xhc3MgQ3VzdG9tRm9udENhY2hlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHZpcnR1YWwg
Ym9vbCByZWdpc3RlckZvbnQoY29uc3QgU3RyaW5nJiBmb250TmFtZSwgQ2FjaGVkRm9udCopID0g
MDsKKyAgICAgICAgdmlydHVhbCBib29sIHJlZ2lzdGVyRm9udChjb25zdCBTdHJpbmcmIGZvbnRO
YW1lLCBjb25zdCBTaGFyZWRCdWZmZXIqKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCB1bnJl
Z2lzdGVyRm9udChjb25zdCBTdHJpbmcmIGZvbnROYW1lKSA9IDA7CiAgICAgfTsKIApAQCAtNDgs
OCArNDgsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFN0cmluZyBtX25hbWU7CiAg
ICAgfTsKIAotICAgIEZvbnRDdXN0b21QbGF0Zm9ybURhdGEqIGNyZWF0ZUZvbnRDdXN0b21QbGF0
Zm9ybURhdGEoQ2FjaGVkRm9udCopOwotCisgICAgRm9udEN1c3RvbVBsYXRmb3JtRGF0YSogY3Jl
YXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShjb25zdCBTaGFyZWRCdWZmZXIqKTsKKyAgICB2b2lk
IHNldEN1c3RvbUZvbnRDYWNoZShDdXN0b21Gb250Q2FjaGUqKTsKIH0KIAogI2VuZGlmCg==
</data>
<flag name="review"
          id="18465"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>34302</attachid>
            <date>2009-08-07 11:40:52 -0700</date>
            <delta_ts>2009-08-07 11:50:36 -0700</delta_ts>
            <desc>build fixes and minor bug fixes</desc>
            <filename>bug27734-buildfixes.patch</filename>
            <type>application/octet-stream</type>
            <size>5113</size>
            <attacher name="Joe Mason">joenotcharles</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NmUxZjBjYS4uNTllZTkyMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAwOS0wOC0wNyAgWW9uZyBMaSAgPHlv
bmcubGlAdG9yY2htb2JpbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFdJTkNFIFBPUlQ6IGZvbnQtcmVsYXRlZCBidWlsZCBmaXhlcyBhbmQg
bWlub3IgYnVnZml4ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTI3NzM0CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaDog
ZGVjbGFyZSBmdW5jdGlvbnMgYWRkZWQgaW4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTI3NTA5CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhQYWdlVHJl
ZU5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R2x5cGhQYWdlVHJlZU5vZGU6OmluaXRpYWxp
emVQYWdlKTogZml4IHdhcm5pbmcgZHVlIHRvIHJlZGVmaW5pbmcgbWluL21heCBvbiBXaW5kb3dz
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU2ltcGxlRm9udERhdGEuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2ltcGxlRm9udERhdGE6OlNpbXBsZUZvbnREYXRhKTogaW5pdGlhbGl6ZSBt
ZW1iZXIgdmFycworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1NpbXBsZUZvbnREYXRhLmg6
IGRpc2FibGUgdW51c2VkIG1lbWJlcnMgb24gV2luY2UgdG8gc2F2ZSBzcGFjZQorCiAyMDA5LTA4
LTA2ICBBbmRyYXMgQmVjc2kgIDxiZWNzaS5hbmRyYXNAc3R1ZC51LXN6ZWdlZC5odT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmggYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnRDYWNoZS5oCmluZGV4IDNjMGYyZDkuLmE1OTE0NzQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Gb250Q2FjaGUuaApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYs
IDIwMDggQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDctMjAwOCBUb3JjaCBNb2JpbGUsIEluYy4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtNjMsNyArNjQsMTUgQEAgcHVibGljOgogICAgIC8vIEFsc28gaW1w
bGVtZW50ZWQgYnkgdGhlIHBsYXRmb3JtLgogICAgIHZvaWQgcGxhdGZvcm1Jbml0KCk7CiAKLSNp
ZiBQTEFURk9STShXSU4pCisjaWYgUExBVEZPUk0oV0lOQ0UpCisjaWYgZGVmaW5lZChJTUxBTkdf
Rk9OVF9MSU5LKSAmJiAoSU1MQU5HX0ZPTlRfTElOSyA9PSAyKQorICAgIElNTGFuZ0ZvbnRMaW5r
MiogZ2V0Rm9udExpbmtJbnRlcmZhY2UoKTsKKyNlbHNlCisgICAgSU1MYW5nRm9udExpbmsqIGdl
dEZvbnRMaW5rSW50ZXJmYWNlKCk7CisjZW5kaWYKKyAgICBzdGF0aWMgdm9pZCBjb21Jbml0aWFs
aXplKCk7CisgICAgc3RhdGljIHZvaWQgY29tVW5pbml0aWFsaXplKCk7CisjZWxpZiBQTEFURk9S
TShXSU4pCiAgICAgSU1MYW5nRm9udExpbmsyKiBnZXRGb250TGlua0ludGVyZmFjZSgpOwogI2Vu
ZGlmCiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhQYWdlVHJl
ZU5vZGUuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlwaFBhZ2VUcmVlTm9kZS5j
cHAKaW5kZXggNjQxOWUwYy4uOWQ5YmEyNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HbHlwaFBhZ2VUcmVlTm9kZS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HbHlwaFBhZ2VUcmVlTm9kZS5jcHAKQEAgLTIwMiw4ICsyMDIsOCBAQCB2b2lkIEdseXBo
UGFnZVRyZWVOb2RlOjppbml0aWFsaXplUGFnZShjb25zdCBGb250RGF0YSogZm9udERhdGEsIHVu
c2lnbmVkIHBhZ2VOdQogICAgICAgICAgICAgICAgIEdseXBoUGFnZSogcGFnZVRvRmlsbCA9IG1f
cGFnZS5nZXQoKTsKICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVt
UmFuZ2VzOyBpKyspIHsKICAgICAgICAgICAgICAgICAgICAgY29uc3QgRm9udERhdGFSYW5nZSYg
cmFuZ2UgPSBzZWdtZW50ZWRGb250RGF0YS0+cmFuZ2VBdChpKTsKLSAgICAgICAgICAgICAgICAg
ICAgaW50IGZyb20gPSBtYXgoMCwgcmFuZ2UuZnJvbSgpIC0gc3RhdGljX2Nhc3Q8aW50PihzdGFy
dCkpOwotICAgICAgICAgICAgICAgICAgICBpbnQgdG8gPSAxICsgbWluKHJhbmdlLnRvKCkgLSBz
dGF0aWNfY2FzdDxpbnQ+KHN0YXJ0KSwgc3RhdGljX2Nhc3Q8aW50PihHbHlwaFBhZ2U6OnNpemUp
IC0gMSk7CisgICAgICAgICAgICAgICAgICAgIGludCBmcm9tID0gbWF4PGludD4oMCwgcmFuZ2Uu
ZnJvbSgpIC0gc3RhdGljX2Nhc3Q8aW50PihzdGFydCkpOworICAgICAgICAgICAgICAgICAgICBp
bnQgdG8gPSAxICsgbWluPGludD4ocmFuZ2UudG8oKSAtIHN0YXRpY19jYXN0PGludD4oc3RhcnQp
LCBzdGF0aWNfY2FzdDxpbnQ+KEdseXBoUGFnZTo6c2l6ZSkgLSAxKTsKICAgICAgICAgICAgICAg
ICAgICAgaWYgKGZyb20gPCBzdGF0aWNfY2FzdDxpbnQ+KEdseXBoUGFnZTo6c2l6ZSkgJiYgdG8g
PiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaGF2ZUdseXBocyAmJiAhc2NyYXRj
aFBhZ2UpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JhdGNoUGFnZSA9IEdseXBo
UGFnZTo6Y3JlYXRlKHRoaXMpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9TaW1wbGVGb250RGF0YS5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NpbXBsZUZv
bnREYXRhLmNwcAppbmRleCBjODc5MjI4Li45OGE2MDNkIDEwMDY0NAotLS0gYS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1NpbXBsZUZvbnREYXRhLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1NpbXBsZUZvbnREYXRhLmNwcApAQCAtNTcsNiArNTcsOCBAQCBTaW1wbGVGb250
RGF0YTo6U2ltcGxlRm9udERhdGEoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgZiwgYm9vbCBjdXN0
b21Gb250LCBib29sCiAgICAgLCBtX2lzQ3VzdG9tRm9udChjdXN0b21Gb250KQogICAgICwgbV9p
c0xvYWRpbmcobG9hZGluZykKICAgICAsIG1fc21hbGxDYXBzRm9udERhdGEoMCkKKyAgICAsIG1f
YXZnQ2hhcldpZHRoKC0xKQorICAgICwgbV9tYXhDaGFyV2lkdGgoLTEpCiB7CiAjaWYgIUVOQUJM
RShTVkdfRk9OVFMpCiAgICAgVU5VU0VEX1BBUkFNKHN2Z0ZvbnREYXRhKTsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2ltcGxlRm9udERhdGEuaCBiL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvU2ltcGxlRm9udERhdGEuaAppbmRleCBjYjQ3MmIwLi40MWI4YjBjIDEw
MDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NpbXBsZUZvbnREYXRhLmgKKysr
IGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaW1wbGVGb250RGF0YS5oCkBAIC0yLDYgKzIs
NyBAQAogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIGludGVybmFsIGZvbnQgaW1wbGVtZW50
YXRpb24uCiAgKgogICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNy0yMDA4IFRvcmNoIE1vYmlsZSwg
SW5jLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0zMyw3ICszNCw3IEBACiB0eXBlZGVmIHN0cnVj
dCBPcGFxdWVBVFNVU3R5bGUqIEFUU1VTdHlsZTsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oV0lO
KQorI2lmIFBMQVRGT1JNKFdJTikgJiYgIVBMQVRGT1JNKFdJTkNFKQogI2luY2x1ZGUgPHVzcDEw
Lmg+CiAjZW5kaWYKIApAQCAtMTM0LDkgKzEzNSwxMCBAQCBwdWJsaWM6CiAKICNpZiBQTEFURk9S
TShXSU4pCiAgICAgYm9vbCBpc1N5c3RlbUZvbnQoKSBjb25zdCB7IHJldHVybiBtX2lzU3lzdGVt
Rm9udDsgfQorI2lmICFQTEFURk9STShXSU5DRSkKICAgICBTQ1JJUFRfRk9OVFBST1BFUlRJRVMq
IHNjcmlwdEZvbnRQcm9wZXJ0aWVzKCkgY29uc3Q7CiAgICAgU0NSSVBUX0NBQ0hFKiBzY3JpcHRD
YWNoZSgpIGNvbnN0IHsgcmV0dXJuICZtX3NjcmlwdENhY2hlOyB9Ci0KKyNlbmRpZgogICAgIHN0
YXRpYyB2b2lkIHNldFNob3VsZEFwcGx5TWFjQXNjZW50SGFjayhib29sKTsKICAgICBzdGF0aWMg
Ym9vbCBzaG91bGRBcHBseU1hY0FzY2VudEhhY2soKTsKICNlbmRpZgpAQCAtMTU5LDcgKzE2MSw3
IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGNvbW1vbkluaXQoKTsKIAotI2lmIFBMQVRGT1JNKFdJ
TikKKyNpZiBQTEFURk9STShXSU4pICYmICFQTEFURk9STShXSU5DRSkKICAgICB2b2lkIGluaXRH
RElGb250KCk7CiAgICAgdm9pZCBwbGF0Zm9ybUNvbW1vbkRlc3Ryb3koKTsKICAgICBmbG9hdCB3
aWR0aEZvckdESUdseXBoKEdseXBoIGdseXBoKSBjb25zdDsKQEAgLTIyNCw5ICsyMjYsMTEgQEAg
cHJpdmF0ZToKIAogI2lmIFBMQVRGT1JNKFdJTikKICAgICBib29sIG1faXNTeXN0ZW1Gb250Owor
I2lmICFQTEFURk9STShXSU5DRSkKICAgICBtdXRhYmxlIFNDUklQVF9DQUNIRSBtX3NjcmlwdENh
Y2hlOwogICAgIG11dGFibGUgU0NSSVBUX0ZPTlRQUk9QRVJUSUVTKiBtX3NjcmlwdEZvbnRQcm9w
ZXJ0aWVzOwogI2VuZGlmCisjZW5kaWYKIH07CiAgICAgCiAgICAgCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34305</attachid>
            <date>2009-08-07 11:44:59 -0700</date>
            <delta_ts>2009-08-07 18:24:23 -0700</delta_ts>
            <desc>pass unrecognized glyphs to GDI to handle</desc>
            <filename>bug27734-gdiglyphs.patch</filename>
            <type>text/plain</type>
            <size>2883</size>
            <attacher name="Joe Mason">joenotcharles</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NmUxZjBjYS4uYWQ4MTczNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAwOS0wOC0wNyAgWW9uZyBMaSAgPHlv
bmcubGlAdG9yY2htb2JpbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFdJTkNFIFBPUlQ6IHBhc3MgdW5yZWNvZ25pemVkIGdseXBocyB0byBH
REkgdG8gaGFuZGxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yNzczNAorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEZhc3RQYXRoLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnQ6OmdseXBoRGF0YUZvckNoYXJhY3Rlcik6CisKIDIw
MDktMDgtMDYgIEFuZHJhcyBCZWNzaSAgPGJlY3NpLmFuZHJhc0BzdHVkLnUtc3plZ2VkLmh1Pgog
CiAgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250RmFzdFBhdGguY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb250RmFzdFBhdGguY3BwCmluZGV4IDc0YjdlYzEuLmIwZTM5ZGIgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEZhc3RQYXRoLmNwcAorKysgYi9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRGYXN0UGF0aC5jcHAKQEAgLTEsNiArMSw3IEBACiAv
KioKICAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLgogICog
Q29weXJpZ2h0IChDKSAyMDA4IEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVyCisgKiBDb3B5cmln
aHQgKEMpIDIwMDkgVG9yY2ggTW9iaWxlLCBJbmMuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTE1
NSwxNiArMTU2LDMzIEBAIEdseXBoRGF0YSBGb250OjpnbHlwaERhdGFGb3JDaGFyYWN0ZXIoVUNo
YXIzMiBjLCBib29sIG1pcnJvciwgYm9vbCBmb3JjZVNtYWxsQ2FwCiAgICAgICAgIEdseXBoUGFn
ZSogZmFsbGJhY2tQYWdlID0gR2x5cGhQYWdlVHJlZU5vZGU6OmdldFJvb3RDaGlsZChjaGFyYWN0
ZXJGb250RGF0YSwgcGFnZU51bWJlciktPnBhZ2UoKTsKICAgICAgICAgR2x5cGhEYXRhIGRhdGEg
PSBmYWxsYmFja1BhZ2UgJiYgZmFsbGJhY2tQYWdlLT5mb250RGF0YUZvckNoYXJhY3RlcihjKSA/
IGZhbGxiYWNrUGFnZS0+Z2x5cGhEYXRhRm9yQ2hhcmFjdGVyKGMpIDogY2hhcmFjdGVyRm9udERh
dGEtPm1pc3NpbmdHbHlwaERhdGEoKTsKICAgICAgICAgLy8gQ2FjaGUgaXQgc28gd2UgZG9uJ3Qg
aGF2ZSB0byBkbyBzeXN0ZW0gZmFsbGJhY2sgYWdhaW4gbmV4dCB0aW1lLgotICAgICAgICBpZiAo
IXVzZVNtYWxsQ2Fwc0ZvbnQpCisgICAgICAgIGlmICghdXNlU21hbGxDYXBzRm9udCkgeworI2lm
IFBMQVRGT1JNKFdJTkNFKQorICAgICAgICAgICAgLy8gbWlzc2luZ0dseXBoRGF0YSByZXR1cm5z
IGEgbnVsbCBjaGFyYWN0ZXIsIHdoaWNoIGlzIG5vdCBzdWl0YWJsZSBmb3IgR0RJIHRvIGRpc3Bs
YXkuCisgICAgICAgICAgICAvLyBBbHNvLCBzb21ldGltZXMgd2UgY2Fubm90IG1hcCBhIGZvbnQg
Zm9yIHRoZSBjaGFyYWN0ZXIgb24gV0lOQ0UsIGJ1dCBHREkgY2FuIHN0aWxsCisgICAgICAgICAg
ICAvLyBkaXNwbGF5IHRoZSBjaGFyYWN0ZXIsIHByb2JhYmx5IGJlY2F1c2UgdGhlIGZvbnQgcGFj
a2FnZSBpcyBub3QgaW5zdGFsbGVkIGNvcnJlY3RseS4KKyAgICAgICAgICAgIC8vIFNvIHdlIGp1
c3QgYWx3YXlzIHNldCB0aGUgZ2x5cGggdG8gYmUgc2FtZSBhcyB0aGUgY2hhcmFjdGVyLCBhbmQg
bGV0IEdESSBzb2x2ZSBpdC4KKyAgICAgICAgICAgIHBhZ2UtPnNldEdseXBoRGF0YUZvckNoYXJh
Y3RlcihjLCBjLCBjaGFyYWN0ZXJGb250RGF0YSk7CisgICAgICAgICAgICByZXR1cm4gcGFnZS0+
Z2x5cGhEYXRhRm9yQ2hhcmFjdGVyKGMpOworI2Vsc2UKICAgICAgICAgICAgIHBhZ2UtPnNldEds
eXBoRGF0YUZvckNoYXJhY3RlcihjLCBkYXRhLmdseXBoLCBkYXRhLmZvbnREYXRhKTsKKyNlbmRp
ZgorICAgICAgICB9CiAgICAgICAgIHJldHVybiBkYXRhOwogICAgIH0KIAogICAgIC8vIEV2ZW4g
c3lzdGVtIGZhbGxiYWNrIGNhbiBmYWlsOyB1c2UgdGhlIG1pc3NpbmcgZ2x5cGggaW4gdGhhdCBj
YXNlLgogICAgIC8vIEZJWE1FOiBJdCB3b3VsZCBiZSBuaWNlciB0byB1c2UgdGhlIG1pc3Npbmcg
Z2x5cGggZnJvbSB0aGUgbGFzdCByZXNvcnQgZm9udCBpbnN0ZWFkLgogICAgIEdseXBoRGF0YSBk
YXRhID0gcHJpbWFyeUZvbnQoKS0+bWlzc2luZ0dseXBoRGF0YSgpOwotICAgIGlmICghdXNlU21h
bGxDYXBzRm9udCkKKyAgICBpZiAoIXVzZVNtYWxsQ2Fwc0ZvbnQpIHsKKyNpZiBQTEFURk9STShX
SU5DRSkKKyAgICAgICAgLy8gU2VlIGNvbW1lbnQgYWJvdXQgV0lOQ0UgR0RJIGhhbmRsaW5nIG5l
YXIgc2V0R2x5cGhEYXRhRm9yQ2hhcmFjdGVyIGFib3ZlLgorICAgICAgICBwYWdlLT5zZXRHbHlw
aERhdGFGb3JDaGFyYWN0ZXIoYywgYywgZGF0YS5mb250RGF0YSk7CisgICAgICAgIHJldHVybiBw
YWdlLT5nbHlwaERhdGFGb3JDaGFyYWN0ZXIoYyk7CisjZWxzZQogICAgICAgICBwYWdlLT5zZXRH
bHlwaERhdGFGb3JDaGFyYWN0ZXIoYywgZGF0YS5nbHlwaCwgZGF0YS5mb250RGF0YSk7CisjZW5k
aWYKKyAgICB9CiAgICAgcmV0dXJuIGRhdGE7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34306</attachid>
            <date>2009-08-07 11:49:40 -0700</date>
            <delta_ts>2009-08-07 18:25:13 -0700</delta_ts>
            <desc>store only width for GlyphAdvance, to save space on memory-constrained devices</desc>
            <filename>bug27734-advancewidth.patch</filename>
            <type>text/plain</type>
            <size>2872</size>
            <attacher name="Joe Mason">joenotcharles</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NmUxZjBjYS4uOTZjOTU5ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAwOS0wOC0wNyAgWW9uZyBMaSAgPHlv
bmcubGlAdG9yY2htb2JpbGUuY29tPgorCisgICAgICAgIFdJTkNFIFBPUlQ6IHN0b3JlIG9ubHkg
d2lkdGggZm9yIEdseXBoQnVmZmVyQWR2YW5jZSwgdG8gc2F2ZSBzcGFjZSBvbiBsb3ctbWVtb3J5
IGRldmljZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTI3NzM0CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HbHlwaEJ1ZmZlci5oOgorICAg
ICAgICAoV2ViQ29yZTo6R2x5cGhCdWZmZXI6OmFkdmFuY2VBdCk6CisgICAgICAgIChXZWJDb3Jl
OjpHbHlwaEJ1ZmZlcjo6YWR2YW5jZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6R2x5cGhCdWZm
ZXI6OmFkZCk6CisKIDIwMDktMDgtMDYgIEFuZHJhcyBCZWNzaSAgPGJlY3NpLmFuZHJhc0BzdHVk
LnUtc3plZ2VkLmh1PgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlwaEJ1ZmZlci5oIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlwaEJ1ZmZlci5oCmluZGV4IGRjZGE0MTkuLmEyYmU0NmQg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhCdWZmZXIuaAorKysg
Yi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dseXBoQnVmZmVyLmgKQEAgLTEsNSArMSw2IEBA
CiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNy0yMDA4IFRvcmNoIE1vYmlsZSBJbmMuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ5LDYgKzUwLDggQEAgY2xhc3MgU2lt
cGxlRm9udERhdGE7CiAjaWYgUExBVEZPUk0oQ0FJUk8pCiAvLyBGSVhNRTogV2h5IGRvZXMgQ2Fp
cm8gdXNlIHN1Y2ggYSBodWdlIHN0cnVjdCBpbnN0ZWFkIG9mIGp1c3QgYW4gb2Zmc2V0IGludG8g
YW4gYXJyYXk/CiB0eXBlZGVmIGNhaXJvX2dseXBoX3QgR2x5cGhCdWZmZXJHbHlwaDsKKyNlbGlm
IFBMQVRGT1JNKFdJTkNFKQordHlwZWRlZiB3Y2hhcl90IEdseXBoQnVmZmVyR2x5cGg7CiAjZWxz
ZQogdHlwZWRlZiBHbHlwaCBHbHlwaEJ1ZmZlckdseXBoOwogI2VuZGlmCkBAIC01Nyw2ICs2MCwx
MCBAQCB0eXBlZGVmIEdseXBoIEdseXBoQnVmZmVyR2x5cGg7CiAvLyBjYW4gYmUgcGFzc2VkIGRp
cmVjdGx5IHRvIENHQ29udGV4dFNob3dHbHlwaHNXaXRoQWR2YW5jZXMgaW4gRm9udE1hYy5tbQog
I2lmIFBMQVRGT1JNKENHKQogdHlwZWRlZiBDR1NpemUgR2x5cGhCdWZmZXJBZHZhbmNlOworI2Vs
aWYgUExBVEZPUk0oV0lOQ0UpCisvLyBUaGVyZSBpcyBubyBjcm9zcy1wbGF0Zm9ybSBjb2RlIHRo
YXQgdXNlcyB0aGUgaGVpZ2h0IG9mIEdseXBoQnVmZmVyQWR2YW5jZSwKKy8vIHNvIHdlIGNhbiBz
YXZlIG1lbW9yeSBzcGFjZSBvbiBlbWJlZGRlZCBkZXZpY2VzIGJ5IHN0b3Jpbmcgb25seSB0aGUg
d2lkdGgKK3R5cGVkZWYgZmxvYXQgR2x5cGhCdWZmZXJBZHZhbmNlOwogI2Vsc2UKIHR5cGVkZWYg
RmxvYXRTaXplIEdseXBoQnVmZmVyQWR2YW5jZTsKICNlbmRpZgpAQCAtMTE3LDExICsxMjQsMjAg
QEAgcHVibGljOgogICAgIHsKICNpZiBQTEFURk9STShDRykKICAgICAgICAgcmV0dXJuIG1fYWR2
YW5jZXNbaW5kZXhdLndpZHRoOworI2VsaWYgUExBVEZPUk0oV0lOQ0UpCisgICAgICAgIHJldHVy
biBtX2FkdmFuY2VzW2luZGV4XTsKICNlbHNlCiAgICAgICAgIHJldHVybiBtX2FkdmFuY2VzW2lu
ZGV4XS53aWR0aCgpOwogI2VuZGlmCiAgICAgfQogCisjaWYgUExBVEZPUk0oV0lOQ0UpCisgICAg
Y29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiBhZHZhbmNlRGF0YSgpIGNvbnN0CisgICAgeworICAg
ICAgICByZXR1cm4gbV9hZHZhbmNlcy5kYXRhKCk7CisgICAgfQorI2VuZGlmCisKICAgICBGbG9h
dFNpemUgb2Zmc2V0QXQoaW50IGluZGV4KSBjb25zdAogICAgIHsKICNpZiBQTEFURk9STShXSU4p
CkBAIC0xNDcsNiArMTYzLDggQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKENHKQogICAgICAgICBD
R1NpemUgYWR2YW5jZSA9IHsgd2lkdGgsIDAgfTsKICAgICAgICAgbV9hZHZhbmNlcy5hcHBlbmQo
YWR2YW5jZSk7CisjZWxpZiBQTEFURk9STShXSU5DRSkKKyAgICAgICAgbV9hZHZhbmNlcy5hcHBl
bmQod2lkdGgpOwogI2Vsc2UKICAgICAgICAgbV9hZHZhbmNlcy5hcHBlbmQoRmxvYXRTaXplKHdp
ZHRoLCAwKSk7CiAjZW5kaWYKQEAgLTE2MSw2ICsxNzksNyBAQCBwdWJsaWM6CiAjZW5kaWYKICAg
ICB9CiAgICAgCisjaWYgIVBMQVRGT1JNKFdJTkNFKQogICAgIHZvaWQgYWRkKEdseXBoIGdseXBo
LCBjb25zdCBTaW1wbGVGb250RGF0YSogZm9udCwgR2x5cGhCdWZmZXJBZHZhbmNlIGFkdmFuY2Up
CiAgICAgewogICAgICAgICBtX2ZvbnREYXRhLmFwcGVuZChmb250KTsKQEAgLTE3NCw2ICsxOTMs
NyBAQCBwdWJsaWM6CiAKICAgICAgICAgbV9hZHZhbmNlcy5hcHBlbmQoYWR2YW5jZSk7CiAgICAg
fQorI2VuZGlmCiAgICAgCiBwcml2YXRlOgogICAgIFZlY3Rvcjxjb25zdCBTaW1wbGVGb250RGF0
YSosIDIwNDg+IG1fZm9udERhdGE7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34307</attachid>
            <date>2009-08-07 11:50:36 -0700</date>
            <delta_ts>2009-08-12 22:49:08 -0700</delta_ts>
            <desc>build fixes and minor bug fixes</desc>
            <filename>bug27734-buildfixes.patch</filename>
            <type>text/plain</type>
            <size>5113</size>
            <attacher name="Joe Mason">joenotcharles</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NmUxZjBjYS4uNTllZTkyMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAwOS0wOC0wNyAgWW9uZyBMaSAgPHlv
bmcubGlAdG9yY2htb2JpbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFdJTkNFIFBPUlQ6IGZvbnQtcmVsYXRlZCBidWlsZCBmaXhlcyBhbmQg
bWlub3IgYnVnZml4ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTI3NzM0CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaDog
ZGVjbGFyZSBmdW5jdGlvbnMgYWRkZWQgaW4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTI3NTA5CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhQYWdlVHJl
ZU5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R2x5cGhQYWdlVHJlZU5vZGU6OmluaXRpYWxp
emVQYWdlKTogZml4IHdhcm5pbmcgZHVlIHRvIHJlZGVmaW5pbmcgbWluL21heCBvbiBXaW5kb3dz
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU2ltcGxlRm9udERhdGEuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2ltcGxlRm9udERhdGE6OlNpbXBsZUZvbnREYXRhKTogaW5pdGlhbGl6ZSBt
ZW1iZXIgdmFycworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1NpbXBsZUZvbnREYXRhLmg6
IGRpc2FibGUgdW51c2VkIG1lbWJlcnMgb24gV2luY2UgdG8gc2F2ZSBzcGFjZQorCiAyMDA5LTA4
LTA2ICBBbmRyYXMgQmVjc2kgIDxiZWNzaS5hbmRyYXNAc3R1ZC51LXN6ZWdlZC5odT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmggYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnRDYWNoZS5oCmluZGV4IDNjMGYyZDkuLmE1OTE0NzQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Gb250Q2FjaGUuaApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYs
IDIwMDggQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDctMjAwOCBUb3JjaCBNb2JpbGUsIEluYy4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtNjMsNyArNjQsMTUgQEAgcHVibGljOgogICAgIC8vIEFsc28gaW1w
bGVtZW50ZWQgYnkgdGhlIHBsYXRmb3JtLgogICAgIHZvaWQgcGxhdGZvcm1Jbml0KCk7CiAKLSNp
ZiBQTEFURk9STShXSU4pCisjaWYgUExBVEZPUk0oV0lOQ0UpCisjaWYgZGVmaW5lZChJTUxBTkdf
Rk9OVF9MSU5LKSAmJiAoSU1MQU5HX0ZPTlRfTElOSyA9PSAyKQorICAgIElNTGFuZ0ZvbnRMaW5r
MiogZ2V0Rm9udExpbmtJbnRlcmZhY2UoKTsKKyNlbHNlCisgICAgSU1MYW5nRm9udExpbmsqIGdl
dEZvbnRMaW5rSW50ZXJmYWNlKCk7CisjZW5kaWYKKyAgICBzdGF0aWMgdm9pZCBjb21Jbml0aWFs
aXplKCk7CisgICAgc3RhdGljIHZvaWQgY29tVW5pbml0aWFsaXplKCk7CisjZWxpZiBQTEFURk9S
TShXSU4pCiAgICAgSU1MYW5nRm9udExpbmsyKiBnZXRGb250TGlua0ludGVyZmFjZSgpOwogI2Vu
ZGlmCiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhQYWdlVHJl
ZU5vZGUuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlwaFBhZ2VUcmVlTm9kZS5j
cHAKaW5kZXggNjQxOWUwYy4uOWQ5YmEyNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HbHlwaFBhZ2VUcmVlTm9kZS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HbHlwaFBhZ2VUcmVlTm9kZS5jcHAKQEAgLTIwMiw4ICsyMDIsOCBAQCB2b2lkIEdseXBo
UGFnZVRyZWVOb2RlOjppbml0aWFsaXplUGFnZShjb25zdCBGb250RGF0YSogZm9udERhdGEsIHVu
c2lnbmVkIHBhZ2VOdQogICAgICAgICAgICAgICAgIEdseXBoUGFnZSogcGFnZVRvRmlsbCA9IG1f
cGFnZS5nZXQoKTsKICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVt
UmFuZ2VzOyBpKyspIHsKICAgICAgICAgICAgICAgICAgICAgY29uc3QgRm9udERhdGFSYW5nZSYg
cmFuZ2UgPSBzZWdtZW50ZWRGb250RGF0YS0+cmFuZ2VBdChpKTsKLSAgICAgICAgICAgICAgICAg
ICAgaW50IGZyb20gPSBtYXgoMCwgcmFuZ2UuZnJvbSgpIC0gc3RhdGljX2Nhc3Q8aW50PihzdGFy
dCkpOwotICAgICAgICAgICAgICAgICAgICBpbnQgdG8gPSAxICsgbWluKHJhbmdlLnRvKCkgLSBz
dGF0aWNfY2FzdDxpbnQ+KHN0YXJ0KSwgc3RhdGljX2Nhc3Q8aW50PihHbHlwaFBhZ2U6OnNpemUp
IC0gMSk7CisgICAgICAgICAgICAgICAgICAgIGludCBmcm9tID0gbWF4PGludD4oMCwgcmFuZ2Uu
ZnJvbSgpIC0gc3RhdGljX2Nhc3Q8aW50PihzdGFydCkpOworICAgICAgICAgICAgICAgICAgICBp
bnQgdG8gPSAxICsgbWluPGludD4ocmFuZ2UudG8oKSAtIHN0YXRpY19jYXN0PGludD4oc3RhcnQp
LCBzdGF0aWNfY2FzdDxpbnQ+KEdseXBoUGFnZTo6c2l6ZSkgLSAxKTsKICAgICAgICAgICAgICAg
ICAgICAgaWYgKGZyb20gPCBzdGF0aWNfY2FzdDxpbnQ+KEdseXBoUGFnZTo6c2l6ZSkgJiYgdG8g
PiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaGF2ZUdseXBocyAmJiAhc2NyYXRj
aFBhZ2UpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JhdGNoUGFnZSA9IEdseXBo
UGFnZTo6Y3JlYXRlKHRoaXMpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9TaW1wbGVGb250RGF0YS5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NpbXBsZUZv
bnREYXRhLmNwcAppbmRleCBjODc5MjI4Li45OGE2MDNkIDEwMDY0NAotLS0gYS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1NpbXBsZUZvbnREYXRhLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1NpbXBsZUZvbnREYXRhLmNwcApAQCAtNTcsNiArNTcsOCBAQCBTaW1wbGVGb250
RGF0YTo6U2ltcGxlRm9udERhdGEoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgZiwgYm9vbCBjdXN0
b21Gb250LCBib29sCiAgICAgLCBtX2lzQ3VzdG9tRm9udChjdXN0b21Gb250KQogICAgICwgbV9p
c0xvYWRpbmcobG9hZGluZykKICAgICAsIG1fc21hbGxDYXBzRm9udERhdGEoMCkKKyAgICAsIG1f
YXZnQ2hhcldpZHRoKC0xKQorICAgICwgbV9tYXhDaGFyV2lkdGgoLTEpCiB7CiAjaWYgIUVOQUJM
RShTVkdfRk9OVFMpCiAgICAgVU5VU0VEX1BBUkFNKHN2Z0ZvbnREYXRhKTsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2ltcGxlRm9udERhdGEuaCBiL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvU2ltcGxlRm9udERhdGEuaAppbmRleCBjYjQ3MmIwLi40MWI4YjBjIDEw
MDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NpbXBsZUZvbnREYXRhLmgKKysr
IGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaW1wbGVGb250RGF0YS5oCkBAIC0yLDYgKzIs
NyBAQAogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIGludGVybmFsIGZvbnQgaW1wbGVtZW50
YXRpb24uCiAgKgogICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNy0yMDA4IFRvcmNoIE1vYmlsZSwg
SW5jLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0zMyw3ICszNCw3IEBACiB0eXBlZGVmIHN0cnVj
dCBPcGFxdWVBVFNVU3R5bGUqIEFUU1VTdHlsZTsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oV0lO
KQorI2lmIFBMQVRGT1JNKFdJTikgJiYgIVBMQVRGT1JNKFdJTkNFKQogI2luY2x1ZGUgPHVzcDEw
Lmg+CiAjZW5kaWYKIApAQCAtMTM0LDkgKzEzNSwxMCBAQCBwdWJsaWM6CiAKICNpZiBQTEFURk9S
TShXSU4pCiAgICAgYm9vbCBpc1N5c3RlbUZvbnQoKSBjb25zdCB7IHJldHVybiBtX2lzU3lzdGVt
Rm9udDsgfQorI2lmICFQTEFURk9STShXSU5DRSkKICAgICBTQ1JJUFRfRk9OVFBST1BFUlRJRVMq
IHNjcmlwdEZvbnRQcm9wZXJ0aWVzKCkgY29uc3Q7CiAgICAgU0NSSVBUX0NBQ0hFKiBzY3JpcHRD
YWNoZSgpIGNvbnN0IHsgcmV0dXJuICZtX3NjcmlwdENhY2hlOyB9Ci0KKyNlbmRpZgogICAgIHN0
YXRpYyB2b2lkIHNldFNob3VsZEFwcGx5TWFjQXNjZW50SGFjayhib29sKTsKICAgICBzdGF0aWMg
Ym9vbCBzaG91bGRBcHBseU1hY0FzY2VudEhhY2soKTsKICNlbmRpZgpAQCAtMTU5LDcgKzE2MSw3
IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGNvbW1vbkluaXQoKTsKIAotI2lmIFBMQVRGT1JNKFdJ
TikKKyNpZiBQTEFURk9STShXSU4pICYmICFQTEFURk9STShXSU5DRSkKICAgICB2b2lkIGluaXRH
RElGb250KCk7CiAgICAgdm9pZCBwbGF0Zm9ybUNvbW1vbkRlc3Ryb3koKTsKICAgICBmbG9hdCB3
aWR0aEZvckdESUdseXBoKEdseXBoIGdseXBoKSBjb25zdDsKQEAgLTIyNCw5ICsyMjYsMTEgQEAg
cHJpdmF0ZToKIAogI2lmIFBMQVRGT1JNKFdJTikKICAgICBib29sIG1faXNTeXN0ZW1Gb250Owor
I2lmICFQTEFURk9STShXSU5DRSkKICAgICBtdXRhYmxlIFNDUklQVF9DQUNIRSBtX3NjcmlwdENh
Y2hlOwogICAgIG11dGFibGUgU0NSSVBUX0ZPTlRQUk9QRVJUSUVTKiBtX3NjcmlwdEZvbnRQcm9w
ZXJ0aWVzOwogI2VuZGlmCisjZW5kaWYKIH07CiAgICAgCiAgICAgCg==
</data>
<flag name="review"
          id="18475"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34697</attachid>
            <date>2009-08-12 15:08:21 -0700</date>
            <delta_ts>2009-08-26 09:38:41 -0700</delta_ts>
            <desc>just replace the string of PLATFORM(FOO) defines</desc>
            <filename>bug27734-define.patch</filename>
            <type>text/plain</type>
            <size>3336</size>
            <attacher name="Joe Mason">joenotcharles</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NmUxZjBjYS4uMGNjZDNlNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAwOS0wOC0xMiAgSm9lIE1hc29uICA8
am9lLm1hc29uQHRvcmNobW9iaWxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBSZXBsYWNlIHJlcGVhdGVkIHN0cmluZyBvZiBQTEFURk9STShG
T08pIHdpdGggYSBzaW5nbGUgZGVmaW5lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yNzczNAorCisgICAgICAgICogbG9hZGVyL0NhY2hlZEZvbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRm9udDo6fkNhY2hlZEZvbnQpOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVkRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkRm9udDo6cGxhdGZvcm1EYXRhRnJvbUN1c3RvbURhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVkRm9udDo6YWxsQ2xpZW50c1JlbW92ZWQpOgorCiAyMDA5LTA4LTA2ICBB
bmRyYXMgQmVjc2kgIDxiZWNzaS5hbmRyYXNAc3R1ZC51LXN6ZWdlZC5odT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL0Nh
Y2hlZEZvbnQuY3BwIGIvV2ViQ29yZS9sb2FkZXIvQ2FjaGVkRm9udC5jcHAKaW5kZXggYWYxOGNj
OS4uNDMzODhhYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvQ2FjaGVkRm9udC5jcHAKKysr
IGIvV2ViQ29yZS9sb2FkZXIvQ2FjaGVkRm9udC5jcHAKQEAgLTEsNSArMSw2IEBACiAvKgogICog
Q29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSBUb3JjaCBNb2JpbGUsIEluYy4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsMTIgKzI3LDE3IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiQ2FjaGVkRm9udC5oIgogCisjaWYgUExBVEZPUk0oQ0cpIHx8IFBM
QVRGT1JNKFFUKSB8fCBQTEFURk9STShHVEspIHx8IChQTEFURk9STShDSFJPTUlVTSkgJiYgKFBM
QVRGT1JNKFdJTl9PUykgfHwgUExBVEZPUk0oTElOVVgpKSkKKy8vIFRoZXNlIHBsYXRmb3JtcyBz
dG9yZSBhIGhlYXAtYWxsb2NhdGVkIEZvbnRDdXN0b21QbGF0Zm9ybURhdGEgd2l0aCB0aGUgQ2Fj
aGVkRm9udAorI2RlZmluZSBTVE9SRV9GT05UX0NVU1RPTV9QTEFURk9STV9EQVRBCisjZW5kaWYK
KwogI2luY2x1ZGUgIkNhY2hlLmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VDbGllbnQuaCIK
ICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlci5oIgogI2luY2x1ZGUgIkRPTUlt
cGxlbWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiRm9udFBsYXRmb3JtRGF0YS5oIgotI2lmIFBMQVRG
T1JNKENHKSB8fCBQTEFURk9STShRVCkgfHwgUExBVEZPUk0oR1RLKSB8fCAoUExBVEZPUk0oQ0hS
T01JVU0pICYmIChQTEFURk9STShXSU5fT1MpIHx8IFBMQVRGT1JNKExJTlVYKSkpCisjaWZkZWYg
U1RPUkVfRk9OVF9DVVNUT01fUExBVEZPUk1fREFUQQogI2luY2x1ZGUgIkZvbnRDdXN0b21QbGF0
Zm9ybURhdGEuaCIKICNlbmRpZgogI2luY2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCIKQEAg
LTYwLDcgKzY2LDcgQEAgQ2FjaGVkRm9udDo6Q2FjaGVkRm9udChjb25zdCBTdHJpbmcgJnVybCkK
IAogQ2FjaGVkRm9udDo6fkNhY2hlZEZvbnQoKQogewotI2lmIFBMQVRGT1JNKENHKSB8fCBQTEFU
Rk9STShRVCkgfHwgUExBVEZPUk0oR1RLKSB8fCAoUExBVEZPUk0oQ0hST01JVU0pICYmIChQTEFU
Rk9STShXSU5fT1MpIHx8IFBMQVRGT1JNKExJTlVYKSkpCisjaWZkZWYgU1RPUkVfRk9OVF9DVVNU
T01fUExBVEZPUk1fREFUQQogICAgIGRlbGV0ZSBtX2ZvbnREYXRhOwogI2VuZGlmCiB9CkBAIC05
OCw3ICsxMDQsNyBAQCB2b2lkIENhY2hlZEZvbnQ6OmJlZ2luTG9hZElmTmVlZGVkKERvY0xvYWRl
ciogZGwpCiAKIGJvb2wgQ2FjaGVkRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoKQogewotI2lm
IFBMQVRGT1JNKENHKSB8fCBQTEFURk9STShRVCkgfHwgUExBVEZPUk0oR1RLKSB8fCAoUExBVEZP
Uk0oQ0hST01JVU0pICYmIChQTEFURk9STShXSU5fT1MpIHx8IFBMQVRGT1JNKExJTlVYKSkpCisj
aWZkZWYgU1RPUkVfRk9OVF9DVVNUT01fUExBVEZPUk1fREFUQQogI2lmIEVOQUJMRShTVkdfRk9O
VFMpCiAgICAgQVNTRVJUKCFtX2lzU1ZHRm9udCk7CiAjZW5kaWYKQEAgLTExNyw3ICsxMjMsNyBA
QCBGb250UGxhdGZvcm1EYXRhIENhY2hlZEZvbnQ6OnBsYXRmb3JtRGF0YUZyb21DdXN0b21EYXRh
KGZsb2F0IHNpemUsIGJvb2wgYm9sZCwgYgogICAgIGlmIChtX2V4dGVybmFsU1ZHRG9jdW1lbnQp
CiAgICAgICAgIHJldHVybiBGb250UGxhdGZvcm1EYXRhKHNpemUsIGJvbGQsIGl0YWxpYyk7CiAj
ZW5kaWYKLSNpZiBQTEFURk9STShDRykgfHwgUExBVEZPUk0oUVQpIHx8IFBMQVRGT1JNKEdUSykg
fHwgKFBMQVRGT1JNKENIUk9NSVVNKSAmJiAoUExBVEZPUk0oV0lOX09TKSB8fCBQTEFURk9STShM
SU5VWCkpKQorI2lmZGVmIFNUT1JFX0ZPTlRfQ1VTVE9NX1BMQVRGT1JNX0RBVEEKICAgICBBU1NF
UlQobV9mb250RGF0YSk7CiAgICAgcmV0dXJuIG1fZm9udERhdGEtPmZvbnRQbGF0Zm9ybURhdGEo
c3RhdGljX2Nhc3Q8aW50PihzaXplKSwgYm9sZCwgaXRhbGljLCByZW5kZXJpbmdNb2RlKTsKICNl
bHNlCkBAIC0xNzMsNyArMTc5LDcgQEAgU1ZHRm9udEVsZW1lbnQqIENhY2hlZEZvbnQ6OmdldFNW
R0ZvbnRCeUlkKGNvbnN0IFN0cmluZyYgZm9udE5hbWUpIGNvbnN0CiAKIHZvaWQgQ2FjaGVkRm9u
dDo6YWxsQ2xpZW50c1JlbW92ZWQoKQogewotI2lmIFBMQVRGT1JNKENHKSB8fCBQTEFURk9STShR
VCkgfHwgUExBVEZPUk0oR1RLKSB8fCAoUExBVEZPUk0oQ0hST01JVU0pICYmIChQTEFURk9STShX
SU5fT1MpIHx8IFBMQVRGT1JNKExJTlVYKSkpCisjaWZkZWYgU1RPUkVfRk9OVF9DVVNUT01fUExB
VEZPUk1fREFUQQogICAgIGlmIChtX2ZvbnREYXRhKSB7CiAgICAgICAgIGRlbGV0ZSBtX2ZvbnRE
YXRhOwogICAgICAgICBtX2ZvbnREYXRhID0gMDsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34716</attachid>
            <date>2009-08-12 22:49:08 -0700</date>
            <delta_ts>2009-09-01 18:29:01 -0700</delta_ts>
            <desc>build fixes and minor bug fixes, with more comments</desc>
            <filename>bug27734-buildfixes2.patch</filename>
            <type>text/plain</type>
            <size>5406</size>
            <attacher name="Joe Mason">joenotcharles</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MDU2N2UyMy4uOTU5YzQ0NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAwOS0wOC0wNyBZb25nIExpIDx5b25n
LmxpQHRvcmNobW9iaWxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKyAKKyAgICAgICAgV0lOQ0UgUE9SVDogZm9udC1yZWxhdGVkIGJ1aWxkIGZpeGVzIGFuZCBt
aW5vciBidWdmaXhlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9Mjc3MzQKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oOiBk
ZWNsYXJlIGZ1bmN0aW9ucyBhZGRlZCBpbiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9Mjc1MDkKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HbHlwaFBhZ2VUcmVl
Tm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHbHlwaFBhZ2VUcmVlTm9kZTo6aW5pdGlhbGl6
ZVBhZ2UpOiBmaXggYW1iaWd1b3VzIG92ZXJsb2FkIGVycm9yIGluIG1pbi9tYXggb24gV2luZG93
cworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1NpbXBsZUZvbnREYXRhLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNpbXBsZUZvbnREYXRhOjpTaW1wbGVGb250RGF0YSk6IGluaXRpYWxpemUg
bWVtYmVyIHZhcnMKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9TaW1wbGVGb250RGF0YS5o
OiBkaXNhYmxlIHVudXNlZCBtZW1iZXJzIG9uIFdpbmNlIHRvIHNhdmUgc3BhY2UgCisKIDIwMDkt
MDgtMTIgIE1heGltZSBTaW1vbiAgPHNpbW9uLm1heGltZUBnbWFpbC5jb20+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ZvbnRDYWNoZS5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUu
aAppbmRleCAzYzBmMmQ5Li5hNTkxNDc0IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ZvbnRDYWNoZS5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENh
Y2hlLmgKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA4IEFw
cGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDA3LTIwMDggVG9yY2ggTW9iaWxlLCBJbmMuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTYzLDcgKzY0LDE1IEBAIHB1YmxpYzoKICAgICAvLyBBbHNvIGltcGxlbWVudGVk
IGJ5IHRoZSBwbGF0Zm9ybS4KICAgICB2b2lkIHBsYXRmb3JtSW5pdCgpOwogCi0jaWYgUExBVEZP
Uk0oV0lOKQorI2lmIFBMQVRGT1JNKFdJTkNFKQorI2lmIGRlZmluZWQoSU1MQU5HX0ZPTlRfTElO
SykgJiYgKElNTEFOR19GT05UX0xJTksgPT0gMikKKyAgICBJTUxhbmdGb250TGluazIqIGdldEZv
bnRMaW5rSW50ZXJmYWNlKCk7CisjZWxzZQorICAgIElNTGFuZ0ZvbnRMaW5rKiBnZXRGb250TGlu
a0ludGVyZmFjZSgpOworI2VuZGlmCisgICAgc3RhdGljIHZvaWQgY29tSW5pdGlhbGl6ZSgpOwor
ICAgIHN0YXRpYyB2b2lkIGNvbVVuaW5pdGlhbGl6ZSgpOworI2VsaWYgUExBVEZPUk0oV0lOKQog
ICAgIElNTGFuZ0ZvbnRMaW5rMiogZ2V0Rm9udExpbmtJbnRlcmZhY2UoKTsKICNlbmRpZgogCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dseXBoUGFnZVRyZWVOb2RlLmNw
cCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhQYWdlVHJlZU5vZGUuY3BwCmluZGV4
IDY0MTllMGMuLjlmNTNmMGIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R2x5cGhQYWdlVHJlZU5vZGUuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5
cGhQYWdlVHJlZU5vZGUuY3BwCkBAIC0yMDIsOCArMjAyLDEwIEBAIHZvaWQgR2x5cGhQYWdlVHJl
ZU5vZGU6OmluaXRpYWxpemVQYWdlKGNvbnN0IEZvbnREYXRhKiBmb250RGF0YSwgdW5zaWduZWQg
cGFnZU51CiAgICAgICAgICAgICAgICAgR2x5cGhQYWdlKiBwYWdlVG9GaWxsID0gbV9wYWdlLmdl
dCgpOwogICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1SYW5nZXM7
IGkrKykgewogICAgICAgICAgICAgICAgICAgICBjb25zdCBGb250RGF0YVJhbmdlJiByYW5nZSA9
IHNlZ21lbnRlZEZvbnREYXRhLT5yYW5nZUF0KGkpOwotICAgICAgICAgICAgICAgICAgICBpbnQg
ZnJvbSA9IG1heCgwLCByYW5nZS5mcm9tKCkgLSBzdGF0aWNfY2FzdDxpbnQ+KHN0YXJ0KSk7Ci0g
ICAgICAgICAgICAgICAgICAgIGludCB0byA9IDEgKyBtaW4ocmFuZ2UudG8oKSAtIHN0YXRpY19j
YXN0PGludD4oc3RhcnQpLCBzdGF0aWNfY2FzdDxpbnQ+KEdseXBoUGFnZTo6c2l6ZSkgLSAxKTsK
KyAgICAgICAgICAgICAgICAgICAgLy8gYWxsIHRoaXMgY2FzdGluZyBpcyB0byBlbnN1cmUgYWxs
IHRoZSBwYXJhbWV0ZXJzIHRvIG1pbiBhbmQgbWF4IGhhdmUgdGhlIHNhbWUgdHlwZSwKKyAgICAg
ICAgICAgICAgICAgICAgLy8gdG8gYXZvaWQgYW1iaWd1b3VzIHRlbXBsYXRlIHBhcmFtZXRlciBl
cnJvcnMgb24gV2luZG93cworICAgICAgICAgICAgICAgICAgICBpbnQgZnJvbSA9IG1heCgwLCBz
dGF0aWNfY2FzdDxpbnQ+KHJhbmdlLmZyb20oKSkgLSBzdGF0aWNfY2FzdDxpbnQ+KHN0YXJ0KSk7
CisgICAgICAgICAgICAgICAgICAgIGludCB0byA9IDEgKyBtaW4oc3RhdGljX2Nhc3Q8aW50Pihy
YW5nZS50bygpKSAtIHN0YXRpY19jYXN0PGludD4oc3RhcnQpLCBzdGF0aWNfY2FzdDxpbnQ+KEds
eXBoUGFnZTo6c2l6ZSkgLSAxKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGZyb20gPCBzdGF0
aWNfY2FzdDxpbnQ+KEdseXBoUGFnZTo6c2l6ZSkgJiYgdG8gPiAwKSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoaGF2ZUdseXBocyAmJiAhc2NyYXRjaFBhZ2UpIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzY3JhdGNoUGFnZSA9IEdseXBoUGFnZTo6Y3JlYXRlKHRoaXMpOwpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaW1wbGVGb250RGF0YS5jcHAg
Yi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NpbXBsZUZvbnREYXRhLmNwcAppbmRleCBjODc5
MjI4Li45OGE2MDNkIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NpbXBs
ZUZvbnREYXRhLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NpbXBsZUZvbnRE
YXRhLmNwcApAQCAtNTcsNiArNTcsOCBAQCBTaW1wbGVGb250RGF0YTo6U2ltcGxlRm9udERhdGEo
Y29uc3QgRm9udFBsYXRmb3JtRGF0YSYgZiwgYm9vbCBjdXN0b21Gb250LCBib29sCiAgICAgLCBt
X2lzQ3VzdG9tRm9udChjdXN0b21Gb250KQogICAgICwgbV9pc0xvYWRpbmcobG9hZGluZykKICAg
ICAsIG1fc21hbGxDYXBzRm9udERhdGEoMCkKKyAgICAsIG1fYXZnQ2hhcldpZHRoKC0xKQorICAg
ICwgbV9tYXhDaGFyV2lkdGgoLTEpCiB7CiAjaWYgIUVOQUJMRShTVkdfRk9OVFMpCiAgICAgVU5V
U0VEX1BBUkFNKHN2Z0ZvbnREYXRhKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvU2ltcGxlRm9udERhdGEuaCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2ltcGxl
Rm9udERhdGEuaAppbmRleCBjYjQ3MmIwLi44MDc1ZWYyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1NpbXBsZUZvbnREYXRhLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9TaW1wbGVGb250RGF0YS5oCkBAIC0yLDYgKzIsNyBAQAogICogVGhpcyBmaWxlIGlz
IHBhcnQgb2YgdGhlIGludGVybmFsIGZvbnQgaW1wbGVtZW50YXRpb24uCiAgKgogICogQ29weXJp
Z2h0IChDKSAyMDA2LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAwNy0yMDA4IFRvcmNoIE1vYmlsZSwgSW5jLgogICoKICAqIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAq
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCkBAIC0zMyw3ICszNCw3IEBACiB0eXBlZGVmIHN0cnVjdCBPcGFxdWVBVFNVU3R5bGUqIEFU
U1VTdHlsZTsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oV0lOKQorI2lmIFBMQVRGT1JNKFdJTikg
JiYgIVBMQVRGT1JNKFdJTkNFKQogI2luY2x1ZGUgPHVzcDEwLmg+CiAjZW5kaWYKIApAQCAtMTM0
LDkgKzEzNSwxMCBAQCBwdWJsaWM6CiAKICNpZiBQTEFURk9STShXSU4pCiAgICAgYm9vbCBpc1N5
c3RlbUZvbnQoKSBjb25zdCB7IHJldHVybiBtX2lzU3lzdGVtRm9udDsgfQorI2lmICFQTEFURk9S
TShXSU5DRSkgICAgLy8gZGlzYWJsZSB1bnVzZWQgbWVtYmVycyB0byBzYXZlIHNwYWNlCiAgICAg
U0NSSVBUX0ZPTlRQUk9QRVJUSUVTKiBzY3JpcHRGb250UHJvcGVydGllcygpIGNvbnN0OwogICAg
IFNDUklQVF9DQUNIRSogc2NyaXB0Q2FjaGUoKSBjb25zdCB7IHJldHVybiAmbV9zY3JpcHRDYWNo
ZTsgfQotCisjZW5kaWYKICAgICBzdGF0aWMgdm9pZCBzZXRTaG91bGRBcHBseU1hY0FzY2VudEhh
Y2soYm9vbCk7CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkQXBwbHlNYWNBc2NlbnRIYWNrKCk7CiAj
ZW5kaWYKQEAgLTE1OSw3ICsxNjEsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBjb21tb25Jbml0
KCk7CiAKLSNpZiBQTEFURk9STShXSU4pCisjaWYgUExBVEZPUk0oV0lOKSAmJiAhUExBVEZPUk0o
V0lOQ0UpCiAgICAgdm9pZCBpbml0R0RJRm9udCgpOwogICAgIHZvaWQgcGxhdGZvcm1Db21tb25E
ZXN0cm95KCk7CiAgICAgZmxvYXQgd2lkdGhGb3JHRElHbHlwaChHbHlwaCBnbHlwaCkgY29uc3Q7
CkBAIC0yMjQsOSArMjI2LDExIEBAIHByaXZhdGU6CiAKICNpZiBQTEFURk9STShXSU4pCiAgICAg
Ym9vbCBtX2lzU3lzdGVtRm9udDsKKyNpZiAhUExBVEZPUk0oV0lOQ0UpICAgIC8vIGRpc2FibGUg
dW51c2VkIG1lbWJlcnMgdG8gc2F2ZSBzcGFjZQogICAgIG11dGFibGUgU0NSSVBUX0NBQ0hFIG1f
c2NyaXB0Q2FjaGU7CiAgICAgbXV0YWJsZSBTQ1JJUFRfRk9OVFBST1BFUlRJRVMqIG1fc2NyaXB0
Rm9udFByb3BlcnRpZXM7CiAjZW5kaWYKKyNlbmRpZgogfTsKICAgICAKICAgICAK
</data>
<flag name="review"
          id="18913"
          type_id="1"
          status="+"
          setter="abarth"
    />
    <flag name="commit-queue"
          id="19892"
          type_id="3"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34747</attachid>
            <date>2009-08-13 08:40:31 -0700</date>
            <delta_ts>2009-09-01 18:29:17 -0700</delta_ts>
            <desc>use shared buffer in custom font data (refactored)</desc>
            <filename>bug27734-sharedbuffer.patch</filename>
            <type>text/plain</type>
            <size>8674</size>
            <attacher name="Joe Mason">joenotcharles</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MDU2N2UyMy4uODRiMjIzMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAwOS0wOC0xMyBZb25nIExpIDx5b25n
LmxpQHRvcmNobW9iaWxlLmNvbT4KKworICAgICAgICBXSU5DRSBQT1JUOiB1c2Ugc2hhcmVkIGJ1
ZmZlciBmb3IgY3VzdG9tIGZvbnQgZGF0YQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9Mjc3MzQKKworICAgICAgICBXcml0dGVuIGJ5IFlvbmcgTGkgPHlv
bmcubGlAdG9yY2htb2JpbGUuY29tPgorICAgICAgICByZWZhY3RvcmVkIGJ5IEpvZSBNYXNvbiA8
am9lLm1hc29uQHRvcmNobW9iaWxlLmNvbT4KKworICAgICAgICAqIGxvYWRlci9DYWNoZWRGb250
LmNwcDoKKyAgICAgICAgYWRkIFdJTkNFIHRvIHBsYXRmb3JtcyB1c2luZyBjYWNoZWQgY3VzdG9t
IGRhdGEKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxp
dGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZW5hbWVGb250KTogaW1wbGVtZW50IGZvciBX
aW5DRQorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0
aWVzLmg6CisgICAgICAgIGJ1aWxkIGZpeGVzCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luY2UvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZXRD
dXN0b21Gb250Q2FjaGUpOiBhZGQgYWNjZXNzb3IKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZv
bnRDdXN0b21QbGF0Zm9ybURhdGEpOiBjaGFuZ2UgcGFyYW0gdG8gU2hhcmVkQnVmZmVyCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oOgor
ICAgICAgICB1cGRhdGUgZnVuY3Rpb24gc2lnbmF0dXJlcyAKKyAKIDIwMDktMDgtMTIgIE1heGlt
ZSBTaW1vbiAgPHNpbW9uLm1heGltZUBnbWFpbC5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
RXJpYyBTZWlkZWwuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9DYWNoZWRGb250LmNwcCBi
L1dlYkNvcmUvbG9hZGVyL0NhY2hlZEZvbnQuY3BwCmluZGV4IDMxYzQ2NzIuLmQwZDBiMmEgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL0NhY2hlZEZvbnQuY3BwCisrKyBiL1dlYkNvcmUvbG9h
ZGVyL0NhY2hlZEZvbnQuY3BwCkBAIC0yNyw3ICsyNyw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiQ2FjaGVkRm9udC5oIgogCi0jaWYgUExBVEZPUk0oQ0cpIHx8IFBMQVRGT1JN
KFFUKSB8fCBQTEFURk9STShHVEspIHx8IChQTEFURk9STShDSFJPTUlVTSkgJiYgKFBMQVRGT1JN
KFdJTl9PUykgfHwgUExBVEZPUk0oTElOVVgpKSkKKyNpZiBQTEFURk9STShDRykgfHwgUExBVEZP
Uk0oUVQpIHx8IFBMQVRGT1JNKEdUSykgfHwgKFBMQVRGT1JNKENIUk9NSVVNKSAmJiAoUExBVEZP
Uk0oV0lOX09TKSB8fCBQTEFURk9STShMSU5VWCkpKSB8fCBQTEFURk9STShXSU5DRSkKICNkZWZp
bmUgU1RPUkVfRk9OVF9DVVNUT01fUExBVEZPUk1fREFUQQogI2VuZGlmCiAKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3Bw
IGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5j
cHAKaW5kZXggMTFiOTMwMi4uYTc0ZGFiZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5jcHAKKysrIGIvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5jcHAKQEAgLTEsNSArMSw2
IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IEFwcGxlIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgVG9yY2ggTW9iaWxlLCBJbmMuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM0Myw3ICszNDQsMTAgQEAgYm9vbCBn
ZXRFT1RIZWFkZXIoU2hhcmVkQnVmZmVyKiBmb250RGF0YSwgRU9USGVhZGVyJiBlb3RIZWFkZXIs
IHNpemVfdCYgb3ZlcmxheUQKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotSEFORExFIHJlbmFtZUFu
ZEFjdGl2YXRlRm9udChTaGFyZWRCdWZmZXIqIGZvbnREYXRhLCBjb25zdCBTdHJpbmcmIGZvbnRO
YW1lKQorLy8gY29kZSBzaGFyZWQgYnkgcmVuYW1lRm9udCBhbmQgcmVuYW1lQW5kQWN0aXZhdGVG
b250CisvLyBhZGRzIGZvbnROYW1lIHRvIHRoZSBmb250IHRhYmxlIGluIGZvbnREYXRhLCBhbmQg
d3JpdGVzIHRoZSBuZXcgZm9udCB0YWJsZSB0byByZXdyaXR0ZW5Gb250VGFibGUKKy8vIHJldHVy
bnMgdGhlIHNpemUgb2YgdGhlIG5hbWUgdGFibGUgKHdoaWNoIGlzIHVzZWQgYnkgcmVuYW1lQW5k
QWN0aXZhdGVGb250KSwgb3IgMCBvbiBlYXJseSBhYm9ydAorc3RhdGljIHNpemVfdCByZW5hbWVG
b250SW50ZXJuYWwoU2hhcmVkQnVmZmVyKiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBmb250TmFt
ZSwgVmVjdG9yPGNoYXI+ICZyZXdyaXR0ZW5Gb250RGF0YSkKIHsKICAgICBzaXplX3Qgb3JpZ2lu
YWxEYXRhU2l6ZSA9IGZvbnREYXRhLT5zaXplKCk7CiAgICAgY29uc3Qgc2ZudEhlYWRlciogc2Zu
dCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgc2ZudEhlYWRlcio+KGZvbnREYXRhLT5kYXRhKCkp
OwpAQCAtMzYxLDcgKzM2NSw3IEBAIEhBTkRMRSByZW5hbWVBbmRBY3RpdmF0ZUZvbnQoU2hhcmVk
QnVmZmVyKiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBmb250TmFtZSkKICAgICAvLyBSb3VuZGVk
IHVwIHRvIGEgbXVsdGlwbGUgb2YgNCB0byBzaW1wbGlmeSB0aGUgY2hlY2tzdW0gY2FsY3VsYXRp
b24uCiAgICAgc2l6ZV90IG5hbWVUYWJsZVNpemUgPSAoKG9mZnNldG9mKG5hbWVUYWJsZSwgbmFt
ZVJlY29yZHMpICsgbmFtZVJlY29yZENvdW50ICogc2l6ZW9mKG5hbWVSZWNvcmQpICsgZm9udE5h
bWUubGVuZ3RoKCkgKiBzaXplb2YoVUNoYXIpKSAmIH4zKSArIDQ7CiAKLSAgICBWZWN0b3I8Y2hh
cj4gcmV3cml0dGVuRm9udERhdGEoZm9udERhdGEtPnNpemUoKSArIG5hbWVUYWJsZVNpemUpOwor
ICAgIHJld3JpdHRlbkZvbnREYXRhLnJlc2l6ZShmb250RGF0YS0+c2l6ZSgpICsgbmFtZVRhYmxl
U2l6ZSk7CiAgICAgY2hhciogZGF0YSA9IHJld3JpdHRlbkZvbnREYXRhLmRhdGEoKTsKICAgICBt
ZW1jcHkoZGF0YSwgZm9udERhdGEtPmRhdGEoKSwgb3JpZ2luYWxEYXRhU2l6ZSk7CiAKQEAgLTM5
OCw4ICs0MDIsNDIgQEAgSEFORExFIHJlbmFtZUFuZEFjdGl2YXRlRm9udChTaGFyZWRCdWZmZXIq
IGZvbnREYXRhLCBjb25zdCBTdHJpbmcmIGZvbnROYW1lKQogICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgKiBzaXplb2YoQmlnRW5kaWFuVUxvbmcpIDwgbmFtZVRhYmxlU2l6ZTsgKytpKQogICAg
ICAgICByZXdyaXR0ZW5TZm50LT50YWJsZXNbdF0uY2hlY2tTdW0gPSByZXdyaXR0ZW5TZm50LT50
YWJsZXNbdF0uY2hlY2tTdW0gKyByZWludGVycHJldF9jYXN0PEJpZ0VuZGlhblVMb25nKj4obmFt
ZSlbaV07CiAKKyAgICByZXR1cm4gbmFtZVRhYmxlU2l6ZTsKK30KKworI2lmIFBMQVRGT1JNKFdJ
TkNFKQorLy8gQWRkRm9udE1lbVJlc291cmNlRXggZG9lcyBub3QgZXhpc3Qgb24gV2luQ0UsIHNv
IHdlIG11c3QgaGFuZGxlIHRoZSBmb250IGRhdGEgbWFudWFsbHkKKy8vIFRoaXMgZnVuY3Rpb24g
anVzdCByZW5hbWVzIHRoZSBmb250IGFuZCBvdmVyd3JpdGVzIHRoZSBvbGQgZm9udCBkYXRhIHdp
dGggdGhlIG5ldworYm9vbCByZW5hbWVGb250KFNoYXJlZEJ1ZmZlciogZm9udERhdGEsIGNvbnN0
IFN0cmluZyYgZm9udE5hbWUpCit7CisgICAgLy8gYWJvcnQgaWYgdGhlIGRhdGEgaXMgdG9vIHNt
YWxsIHRvIGJlIGEgZm9udCBoZWFkZXIgd2l0aCBhICJ0YWJsZXMiIGVudHJ5CisgICAgaWYgKGZv
bnREYXRhLT5zaXplKCkgPCBvZmZzZXRvZihzZm50SGVhZGVyLCB0YWJsZXMpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICAvLyBhYm9ydCBpZiB0aGUgZGF0YSBpcyB0b28gc21hbGwgdG8g
aG9sZCBhbGwgdGhlIHRhYmxlcyBzcGVjaWZpZWQgaW4gdGhlIGhlYWRlcgorICAgIGNvbnN0IHNm
bnRIZWFkZXIqIGhlYWRlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgc2ZudEhlYWRlcio+KGZv
bnREYXRhLT5kYXRhKCkpOworICAgIGlmIChmb250RGF0YS0+c2l6ZSgpIDwgb2Zmc2V0b2Yoc2Zu
dEhlYWRlciwgdGFibGVzKSArIGhlYWRlci0+bnVtVGFibGVzICogc2l6ZW9mKFRhYmxlRGlyZWN0
b3J5RW50cnkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBWZWN0b3I8Y2hhcj4gcmV3
cml0dGVuRm9udERhdGE7CisgICAgaWYgKCFyZW5hbWVGb250SW50ZXJuYWwoZm9udERhdGEsIGZv
bnROYW1lLCByZXdyaXR0ZW5Gb250RGF0YSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IGZvbnREYXRhLT5jbGVhcigpOworICAgIGZvbnREYXRhLT5hcHBlbmQocmV3cml0dGVuRm9udERh
dGEuZGF0YSgpLCByZXdyaXR0ZW5Gb250RGF0YS5zaXplKCkpOworICAgIHJldHVybiB0cnVlOwor
fQorI2Vsc2UKKy8vIFJlbmFtZSB0aGUgZm9udCBhbmQgaW5zdGFsbCB0aGUgbmV3IGZvbnQgZGF0
YSBpbnRvIHRoZSBzeXN0ZW0KK0hBTkRMRSByZW5hbWVBbmRBY3RpdmF0ZUZvbnQoU2hhcmVkQnVm
ZmVyKiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBmb250TmFtZSkKK3sKKyAgICBWZWN0b3I8Y2hh
cj4gcmV3cml0dGVuRm9udERhdGE7CisgICAgc2l6ZV90IG5hbWVUYWJsZVNpemUgPSByZW5hbWVG
b250SW50ZXJuYWwoZm9udERhdGEsIGZvbnROYW1lLCByZXdyaXR0ZW5Gb250RGF0YSk7CisgICAg
aWYgKCFuYW1lVGFibGVTaXplKQorICAgICAgICByZXR1cm4gMDsKKwogICAgIERXT1JEIG51bUZv
bnRzID0gMDsKLSAgICBIQU5ETEUgZm9udEhhbmRsZSA9IEFkZEZvbnRNZW1SZXNvdXJjZUV4KGRh
dGEsIG9yaWdpbmFsRGF0YVNpemUgKyBuYW1lVGFibGVTaXplLCAwLCAmbnVtRm9udHMpOworICAg
IEhBTkRMRSBmb250SGFuZGxlID0gQWRkRm9udE1lbVJlc291cmNlRXgocmV3cml0dGVuRm9udERh
dGEuZGF0YSgpLCBmb250RGF0YS0+c2l6ZSgpICsgbmFtZVRhYmxlU2l6ZSwgMCwgJm51bUZvbnRz
KTsKIAogICAgIGlmIChmb250SGFuZGxlICYmIG51bUZvbnRzICE9IDEpIHsKICAgICAgICAgUmVt
b3ZlRm9udE1lbVJlc291cmNlRXgoZm9udEhhbmRsZSk7CkBAIC00MDgsNSArNDQ2LDYgQEAgSEFO
RExFIHJlbmFtZUFuZEFjdGl2YXRlRm9udChTaGFyZWRCdWZmZXIqIGZvbnREYXRhLCBjb25zdCBT
dHJpbmcmIGZvbnROYW1lKQogCiAgICAgcmV0dXJuIGZvbnRIYW5kbGU7CiB9CisjZW5kaWYKIAog
fQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlw
ZVV0aWxpdGllcy5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlw
ZVV0aWxpdGllcy5oCmluZGV4IDEzZGFkNmYuLjRjNzUzMTQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuaAorKysgYi9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmgKQEAgLTEs
NSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IEFwcGxlIEluYy4gIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgVG9yY2ggTW9iaWxlLCBJ
bmMuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM1LDYgKzM2LDEwIEBAIHN0
cnVjdCBCaWdFbmRpYW5VU2hvcnQ7CiBzdHJ1Y3QgRU9UUHJlZml4OwogY2xhc3MgU2hhcmVkQnVm
ZmVyOwogCisjaWYgUExBVEZPUk0oV0lOQ0UpCit0eXBlZGVmIHVuc2lnbmVkIF9faW50OCBVSW50
ODsKKyNlbmRpZgorCiBzdHJ1Y3QgRU9USGVhZGVyIHsKICAgICBFT1RIZWFkZXIoKTsKIApkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9Gb250Q3VzdG9tUGxhdGZv
cm1EYXRhLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvRm9udEN1c3RvbVBs
YXRmb3JtRGF0YS5jcHAKaW5kZXggN2M2ODUzYy4uNjk5ZmYyNSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAorKysg
Yi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEu
Y3BwCkBAIC0zMyw2ICszMywxMSBAQCBzdGF0aWMgQ3VzdG9tRm9udENhY2hlKiBnX2N1c3RvbUZv
bnRDYWNoZSA9IDA7CiAKIGJvb2wgcmVuYW1lRm9udChTaGFyZWRCdWZmZXIqIGZvbnREYXRhLCBj
b25zdCBTdHJpbmcmIGZvbnROYW1lKTsKIAordm9pZCBzZXRDdXN0b21Gb250Q2FjaGUoQ3VzdG9t
Rm9udENhY2hlKiBjYWNoZSkKK3sKKyAgICBnX2N1c3RvbUZvbnRDYWNoZSA9IGNhY2hlOworfQor
CiBGb250Q3VzdG9tUGxhdGZvcm1EYXRhOjp+Rm9udEN1c3RvbVBsYXRmb3JtRGF0YSgpCiB7CiAg
ICAgaWYgKGdfY3VzdG9tRm9udENhY2hlICYmICFtX25hbWUuaXNFbXB0eSgpKQpAQCAtNjYsMTEg
KzcxLDEyIEBAIHN0YXRpYyBTdHJpbmcgY3JlYXRlVW5pcXVlRm9udE5hbWUoKQogICAgIHJldHVy
biBmb250TmFtZS5yZXBsYWNlKCcvJywgJ18nKTsKIH0KIAotRm9udEN1c3RvbVBsYXRmb3JtRGF0
YSogY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShDYWNoZWRGb250KiBjYWNoZWRGb250KQor
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YSogY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShjb25z
dCBTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKIHsKLSAgICBpZiAoZ19jdXN0b21Gb250Q2FjaGUgJiYg
Y2FjaGVkRm9udC0+Q2FjaGVkUmVzb3VyY2U6OmRhdGEoKSkgeworICAgIGlmIChnX2N1c3RvbUZv
bnRDYWNoZSkgewogICAgICAgICBTdHJpbmcgZm9udE5hbWUgPSBjcmVhdGVVbmlxdWVGb250TmFt
ZSgpOwotICAgICAgICBpZiAocmVuYW1lRm9udChjYWNoZWRGb250LT5DYWNoZWRSZXNvdXJjZTo6
ZGF0YSgpLCBmb250TmFtZSkgJiYgZ19jdXN0b21Gb250Q2FjaGUtPnJlZ2lzdGVyRm9udChmb250
TmFtZSwgY2FjaGVkRm9udCkpCisgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGxvY2FsQnVm
ZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgp
KTsKKyAgICAgICAgaWYgKHJlbmFtZUZvbnQobG9jYWxCdWZmZXIuZ2V0KCksIGZvbnROYW1lKSAm
JiBnX2N1c3RvbUZvbnRDYWNoZS0+cmVnaXN0ZXJGb250KGZvbnROYW1lLCBsb2NhbEJ1ZmZlci5n
ZXQoKSkpCiAgICAgICAgICAgICByZXR1cm4gbmV3IEZvbnRDdXN0b21QbGF0Zm9ybURhdGEoZm9u
dE5hbWUpOwogICAgIH0KICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luY2UvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oIGIvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW5jZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKaW5kZXggYjFmNjRh
MC4uODlkMWZkZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9G
b250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW5jZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiAgICAgY2xhc3MgQ3VzdG9tRm9udENhY2hlIHsKICAgICBwdWJsaWM6Ci0g
ICAgICAgIHZpcnR1YWwgYm9vbCByZWdpc3RlckZvbnQoY29uc3QgU3RyaW5nJiBmb250TmFtZSwg
Q2FjaGVkRm9udCopID0gMDsKKyAgICAgICAgdmlydHVhbCBib29sIHJlZ2lzdGVyRm9udChjb25z
dCBTdHJpbmcmIGZvbnROYW1lLCBjb25zdCBTaGFyZWRCdWZmZXIqKSA9IDA7CiAgICAgICAgIHZp
cnR1YWwgdm9pZCB1bnJlZ2lzdGVyRm9udChjb25zdCBTdHJpbmcmIGZvbnROYW1lKSA9IDA7CiAg
ICAgfTsKIApAQCAtNDgsOCArNDgsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFN0
cmluZyBtX25hbWU7CiAgICAgfTsKIAotICAgIEZvbnRDdXN0b21QbGF0Zm9ybURhdGEqIGNyZWF0
ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoQ2FjaGVkRm9udCopOwotCisgICAgRm9udEN1c3RvbVBs
YXRmb3JtRGF0YSogY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShjb25zdCBTaGFyZWRCdWZm
ZXIqKTsKKyAgICB2b2lkIHNldEN1c3RvbUZvbnRDYWNoZShDdXN0b21Gb250Q2FjaGUqKTsKIH0K
IAogI2VuZGlmCg==
</data>
<flag name="review"
          id="18948"
          type_id="1"
          status="+"
          setter="abarth"
    />
    <flag name="commit-queue"
          id="19893"
          type_id="3"
          status="-"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>