<?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>208351</bug_id>
          
          <creation_ts>2020-02-27 16:19:53 -0800</creation_ts>
          <short_desc>CSSFontFace should not need its m_fontSelector data member</short_desc>
          <delta_ts>2021-03-16 15:07:22 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=196437</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>221019</dependson>
    
    <dependson>221064</dependson>
    
    <dependson>221071</dependson>
    
    <dependson>221753</dependson>
    
    <dependson>222121</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>clord</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>japhet</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>rniwa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1623755</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-02-27 16:19:53 -0800</bug_when>
    <thetext>CSSFontFace should not need its m_fontSelector data member. Instead, we should store all the bits of information we need on the CSSFontFace.

See https://bugs.webkit.org/attachment.cgi?id=366386 for a first attempt at this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1723146</commentid>
    <comment_count>1</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-01-27 14:33:54 -0800</bug_when>
    <thetext>See https://bugs.webkit.org/show_bug.cgi?id=196437#c3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1727575</commentid>
    <comment_count>2</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-02-10 09:30:04 -0800</bug_when>
    <thetext>For calls like source-&gt;load(m_fontSelector.get()), we just use the font selector for 2 purposes:

1. Aggregating all font load requests across a single turn of the event loop, to start them all at the same time, and
2. To use m_document-&gt;cachedResourceLoader() to actually perform the load

Regarding 1: I don&apos;t understand why we do it, and it seems counterproductive to me. For comparison, if we have a webpage with multiple images, we don&apos;t wait to start loading images until the next turn of the event loop. I have no idea why fonts are special this way. My guess is it has something to do with trying to avoid running JS in the middle of layout, but I don&apos;t think that would be possible even if we started the load immediately. I think we should try to get rid of this aggregation and just start loading fonts immediately. The reason why I think we should change is this aggregation has caused multiple correctness bugs (see calls to m_document-&gt;cachedResourceLoader().incrementRequestCount(font)), which wouldn&apos;t have existed if we had just used the loading infrastructure the way it was intended to be used.

Regarding 2: Loading stuff shouldn&apos;t require the document. XHR doesn&apos;t require a document. We should migrate font loading to use the same mechanism that XHR uses (ThreadableLoader I think). If we do this, we can just load stuff without any dependencies, and won&apos;t need to go through the font selector at all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728118</commentid>
    <comment_count>3</comment_count>
      <attachid>419996</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-02-11 09:06:49 -0800</bug_when>
    <thetext>Created attachment 419996
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728504</commentid>
    <comment_count>4</comment_count>
      <attachid>420109</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-02-12 02:19:04 -0800</bug_when>
    <thetext>Created attachment 420109
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728530</commentid>
    <comment_count>5</comment_count>
      <attachid>420109</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-02-12 04:12:17 -0800</bug_when>
    <thetext>Comment on attachment 420109
Patch

erk, I forgot about client removal... Need to think about this some more.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728540</commentid>
    <comment_count>6</comment_count>
      <attachid>420115</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-02-12 05:28:58 -0800</bug_when>
    <thetext>Created attachment 420115
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728564</commentid>
    <comment_count>7</comment_count>
      <attachid>420115</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-02-12 08:47:10 -0800</bug_when>
    <thetext>Comment on attachment 420115
Patch

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

Thank you!

&gt; Source/WebCore/css/CSSFontFace.cpp:81
&gt; +                    document-&gt;fontSelector().willBeginLoadingFontSoon(*cachedFont);

Pretty sure document can be null here. See line 77 above. I think this occurs when the page uses the CSS Font Loading API to construct a FontFace object from script.

It&apos;s a bit scary that this didn&apos;t cause any tests to fail. I suggest either 1) adding a test which fails without a null check here, or 2) if it is impossible create such a test, modifying the signature of this function to take a Document&amp; instead of a Document*.

&gt; Source/WebCore/css/CSSFontFace.cpp:591
&gt; +                source-&gt;load(document());

I thought we were going to migrate loading code to use ThreadableLoader instead of CachedResourceLoader?

&gt; Source/WebCore/css/CSSFontSelector.cpp:376
&gt; +    font.removeClient(*this);

This is a bit of a scary place to be doing this. I understand why it&apos;s correct, but it seems a bit brittle; we may want to add additional messages between the CachedFont and the CSSFontSelector, and it would be surprising if these messages stopped working just because the font loaded. What&apos;s the downside to instead running this line in the destructor of the FontSelector? That&apos;s what CSSFontFaceSource does.

This is relevant because we&apos;re interested in adding streaming support for fonts, which may involve additional messages between the CachedFont and the CSSFontSelector.

&gt; Source/WebCore/css/CSSFontSelector.h:113
&gt; +    using CachedFontClient::fontLoaded;

Why is this necessary?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728570</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-02-12 08:58:08 -0800</bug_when>
    <thetext>(In reply to Myles C. Maxfield from comment #7)
&gt; Comment on attachment 420115 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=420115&amp;action=review
&gt; 
&gt; Thank you!

Thanks for the fast feedback!

&gt; &gt; Source/WebCore/css/CSSFontFace.cpp:81
&gt; &gt; +                    document-&gt;fontSelector().willBeginLoadingFontSoon(*cachedFont);
&gt; 
&gt; Pretty sure document can be null here. See line 77 above. I think this
&gt; occurs when the page uses the CSS Font Loading API to construct a FontFace
&gt; object from script.
&gt; 
&gt; It&apos;s a bit scary that this didn&apos;t cause any tests to fail. I suggest either
&gt; 1) adding a test which fails without a null check here, or 2) if it is
&gt; impossible create such a test, modifying the signature of this function to
&gt; take a Document&amp; instead of a Document*.

There was already a null check here that I haven&apos;t removed on line 79. I assume this is still ok? (aside; I also missed this initially and had a bunch of checking and asserts that I realised weren&apos;t necessary)

&gt; &gt; Source/WebCore/css/CSSFontFace.cpp:591
&gt; &gt; +                source-&gt;load(document());
&gt; 
&gt; I thought we were going to migrate loading code to use ThreadableLoader
&gt; instead of CachedResourceLoader?

Absolutely, I figured this would just be a smaller patch that we could get in in the meantime - ThreadableLoader is next on my list :)

&gt; &gt; Source/WebCore/css/CSSFontSelector.cpp:376
&gt; &gt; +    font.removeClient(*this);
&gt; 
&gt; This is a bit of a scary place to be doing this. I understand why it&apos;s
&gt; correct, but it seems a bit brittle; we may want to add additional messages
&gt; between the CachedFont and the CSSFontSelector, and it would be surprising
&gt; if these messages stopped working just because the font loaded. What&apos;s the
&gt; downside to instead running this line in the destructor of the FontSelector?
&gt; That&apos;s what CSSFontFaceSource does.
&gt; 
&gt; This is relevant because we&apos;re interested in adding streaming support for
&gt; fonts, which may involve additional messages between the CachedFont and the
&gt; CSSFontSelector.

I agree, I don&apos;t like this particularly, but I assumed that we wouldn&apos;t want a FontSelector to possibly accumulate a bunch of references unnecessarily... But I suppose this is unique to every Document, so I probably needn&apos;t have been concerned. Can certainly be removed - it already removes the clients in the destructor also, so this line can just be removed. I suppose we&apos;d also rename m_fontsLoadingSoon to just m_fonts in that case.

&gt; &gt; Source/WebCore/css/CSSFontSelector.h:113
&gt; &gt; +    using CachedFontClient::fontLoaded;
&gt; 
&gt; Why is this necessary?

Both CSSFontFace::client and CachedFontClient have a fontLoaded function, so this is necessary to avoid warnings about hiding overloaded virtual functions on clang.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728578</commentid>
    <comment_count>9</comment_count>
      <attachid>420132</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-02-12 09:03:51 -0800</bug_when>
    <thetext>Created attachment 420132
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728668</commentid>
    <comment_count>10</comment_count>
      <attachid>420132</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-02-12 11:01:28 -0800</bug_when>
    <thetext>Comment on attachment 420132
Patch

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

&gt; Source/WebCore/css/CSSFontSelector.cpp:250
&gt; +        face-&gt;opportunisticallyStartFontDataURLLoading(document());

Can document() really be null?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729061</commentid>
    <comment_count>11</comment_count>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-02-15 01:16:55 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #10)
&gt; Comment on attachment 420132 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=420132&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/css/CSSFontSelector.cpp:250
&gt; &gt; +        face-&gt;opportunisticallyStartFontDataURLLoading(document());
&gt; 
&gt; Can document() really be null?

I don&apos;t know under what circumstances this actually happens, but the assumption was made that this can happen prior to this patch, so I don&apos;t really want to change it.

I would expect that perhaps this can happen when destruction of a Document happens - Document calls clearDocument on the FontSelector before the FontSelector is destroyed. I&apos;m not sure where fonts may still be in use after this point, but I don&apos;t think this is the right bug to start testing/changing that assumption.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729068</commentid>
    <comment_count>12</comment_count>
      <attachid>420281</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-02-15 01:35:42 -0800</bug_when>
    <thetext>Created attachment 420281
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729130</commentid>
    <comment_count>13</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-02-15 04:56:37 -0800</bug_when>
    <thetext>Committed r272849: &lt;https://commits.webkit.org/r272849&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 420281.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729131</commentid>
    <comment_count>14</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-02-15 04:57:15 -0800</bug_when>
    <thetext>&lt;rdar://problem/74346302&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729189</commentid>
    <comment_count>15</comment_count>
      <attachid>420132</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-02-15 09:26:46 -0800</bug_when>
    <thetext>Comment on attachment 420132
Patch

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

&gt;&gt;&gt; Source/WebCore/css/CSSFontSelector.cpp:250
&gt;&gt;&gt; +        face-&gt;opportunisticallyStartFontDataURLLoading(document());
&gt;&gt; 
&gt;&gt; Can document() really be null?
&gt; 
&gt; I don&apos;t know under what circumstances this actually happens, but the assumption was made that this can happen prior to this patch, so I don&apos;t really want to change it.
&gt; 
&gt; I would expect that perhaps this can happen when destruction of a Document happens - Document calls clearDocument on the FontSelector before the FontSelector is destroyed. I&apos;m not sure where fonts may still be in use after this point, but I don&apos;t think this is the right bug to start testing/changing that assumption.

Makes sense.

The alternative I would suggest would be to check document for null, and return early in that case. Assuming it is not valuable to start data URL loading *after* the font selector is removed from a document.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1730937</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2021-02-18 11:07:13 -0800</bug_when>
    <thetext>Re-opened since this is blocked by bug 222121</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1731288</commentid>
    <comment_count>17</comment_count>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-02-19 02:51:20 -0800</bug_when>
    <thetext>(In reply to WebKit Commit Bot from comment #16)
&gt; Re-opened since this is blocked by bug 222121

My best guess for this is that not disconnecting the CachedFontClient after load means we&apos;re hitting multiple load signals and causing pending fonts to load early, breaking coalescing (the secondary thought is that if that&apos;s the case, I&apos;m a little surprised this is a noticeable regression and also surprised that the coalescing in FontSelector is really what controls the coalescing of font download requests).

I&apos;ll look into this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1731573</commentid>
    <comment_count>18</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-02-19 13:43:04 -0800</bug_when>
    <thetext>(In reply to Chris Lord from comment #17)
&gt; (In reply to WebKit Commit Bot from comment #16)
&gt; &gt; Re-opened since this is blocked by bug 222121
&gt; 
&gt; My best guess for this is that not disconnecting the CachedFontClient after
&gt; load means we&apos;re hitting multiple load signals and causing pending fonts to
&gt; load early, breaking coalescing (the secondary thought is that if that&apos;s the
&gt; case, I&apos;m a little surprised this is a noticeable regression and also
&gt; surprised that the coalescing in FontSelector is really what controls the
&gt; coalescing of font download requests).
&gt; 
&gt; I&apos;ll look into this.

Not only did it increase page load time, but we actually also got a very common crash which this patch seemed to cause:

&gt;  1 com.apple.WebCore              0x019ac3de WebCore::CachedResourceClientWalker&lt;WebCore::CachedFontClient&gt;::next() + 0
   2 com.apple.WebCore              0x012b61a2 WebCore::CSSFontFaceSource::load(WebCore::Document*) + 0
   3 com.apple.WebCore              0x012adbba WebCore::CSSFontFace::pump(WebCore::ExternalResourceDownloadPolicy) + 0
   4 com.apple.WebCore              0x012ae3ff WebCore::CSSFontFace::font(WebCore::FontDescription const&amp;, bool, bool, WebCore::ExternalResourceDownloadPolicy) + 0
   5 com.apple.WebCore              0x012e2737 WebCore::CSSFontAccessor::font(WebCore::ExternalResourceDownloadPolicy) const + 0
   6 com.apple.WebCore              0x01b6d824 WebCore::FontRanges::glyphDataForCharacter(int, WebCore::ExternalResourceDownloadPolicy) const + 0
   7 com.apple.WebCore              0x01b65747 WebCore::FontCascadeFonts::glyphDataForVariant(int, WebCore::FontCascadeDescription const&amp;, WebCore::FontVariant, unsigned int) + 0
   8 com.apple.WebCore              0x01b60299 WebCore::FontCascadeFonts::glyphDataForCharacter(int, WebCore::FontCascadeDescription const&amp;, WebCore::FontVariant) + 0
   9 com.apple.WebCore              0x01bb48f4 WebCore::WidthIterator::advance(unsigned int, WebCore::GlyphBuffer&amp;) + 0

This crash started appearing on February 15, the same day this patch landed, and the backtrace indicates a codepath that this patch added (CSSFontFaceSource::load() calling CachedFont::requestLoad() which has the CachedResourceClientWalker loop)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1731574</commentid>
    <comment_count>19</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-02-19 13:50:49 -0800</bug_when>
    <thetext>Ironically, we actually got a _second_ very common crash which this patch seemed to cause:

&gt;  1 com.apple.WebCore              0x019b5a55 WebCore::CachedResource::removeClient(WebCore::CachedResourceClient&amp;) + 0
   2 com.apple.WebCore              0x00062e94 WebCore::CSSFontSelector::clearDocument() + 0
   3 com.apple.WebCore              0x01403f9c WebCore::Document::removedLastRef() + 0
   4 com.apple.WebCore              0x00065e86 WebCore::HTMLCollection::~HTMLCollection() + 0
   5 com.apple.WebCore              0x013dc9bf WebCore::ClassCollection::~ClassCollection() + 0
   6 com.apple.JavaScriptCore       0x00cf8df2 void JSC::MarkedBlock::Handle::specializedSweep&lt;true, (JSC::MarkedBlock::Handle::EmptyMode)0, (JSC::MarkedBlock::Handle::SweepMode)0, (JSC::MarkedBlock::Handle::SweepDestructionMode)1, (JSC::MarkedBlock::Handle::ScribbleMode)0, (JSC::MarkedBlock::Handle::NewlyAllocatedMode)1, (JSC::MarkedBlock::Handle::MarksMode)0, JSC::JSDestructibleObjectDestroyFunc&gt;(JSC::FreeList*, JSC::MarkedBlock::Handle::EmptyMode, JSC::MarkedBlock::Handle::SweepMode, JSC::MarkedBlock::Handle::SweepDestructionMode, JSC::MarkedBlock::Handle::ScribbleMode, JSC::MarkedBlock::Handle::NewlyAllocatedMode, JSC::MarkedBlock::Handle::MarksMode, JSC::JSDestructibleObjectDestroyFunc const&amp;) + 0

This crash also started appearing on February 15, the same day this patch landed, and the backtrace indicates a codepath that this patch added (CSSFontSelector::clearDocument() calling font-&gt;removeClient(*this))</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732126</commentid>
    <comment_count>20</comment_count>
      <attachid>421190</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-02-22 07:48:18 -0800</bug_when>
    <thetext>Created attachment 421190
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732183</commentid>
    <comment_count>21</comment_count>
      <attachid>421190</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-02-22 10:12:34 -0800</bug_when>
    <thetext>Comment on attachment 421190
Patch

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

&gt; Source/WebCore/ChangeLog:10
&gt; +        Move the m_fontSelector member of CSSFontFace onto CSSFontFaceSource,
&gt; +        the only place where it&apos;s actually required.

Please explain how this fixes the perf regression and the crashes in the previous version of the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732314</commentid>
    <comment_count>22</comment_count>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-02-22 14:48:48 -0800</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #21)
&gt; Comment on attachment 421190 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=421190&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:10
&gt; &gt; +        Move the m_fontSelector member of CSSFontFace onto CSSFontFaceSource,
&gt; &gt; +        the only place where it&apos;s actually required.
&gt; 
&gt; Please explain how this fixes the perf regression and the crashes in the
&gt; previous version of the patch.

Judging from the test failures, it isn&apos;t there yet, but this is a much less invasive way of removing the class member.

Where as the previous patch introduced a new callback and added the FontSelector as a listener to every external font source, with those fonts tracked by a HashSet in the FontSelector; this patch only moves the FontSelector weak reference from CSSFontFace to CSSFontFaceSource (the only place where it is required).

The crash in the previous patch I believe was coming from either a stale CachedFont reference on FontSelector, or a stale FontSelector reference in the listeners list on CachedFont, so this patch not using that mechanism side-steps introducing it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732486</commentid>
    <comment_count>23</comment_count>
      <attachid>421301</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-02-23 04:18:12 -0800</bug_when>
    <thetext>Created attachment 421301
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732524</commentid>
    <comment_count>24</comment_count>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-02-23 07:40:56 -0800</bug_when>
    <thetext>Having fun and games with this patch. This ought to be much simpler and more straight-forward, but I&apos;m getting test differences locally that I can&apos;t immediately explain... I guess some ordering of events has changed somewhere, but I&apos;ve not explicitly changed it. It doesn&apos;t make sense...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732541</commentid>
    <comment_count>25</comment_count>
      <attachid>421301</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-02-23 08:26:38 -0800</bug_when>
    <thetext>Comment on attachment 421301
Patch

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

&gt; Source/WebCore/css/CSSFontFace.cpp:84
&gt; +            source = makeUnique&lt;CSSFontFaceSource&gt;(fontFace, item.resource(), *fontFaceElement);

Do we know for sure that fontFaceElement is actually non-null here? It is not obvious from looking at the code.

&gt; Source/WebCore/css/CSSFontFaceSource.cpp:98
&gt; +    , m_svgFontFaceElement(makeWeakPtr(&amp;fontFace))

FYI, makeWeakPtr(fontFace) works and would be more efficient as it avoids an unnecessary null-check.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732542</commentid>
    <comment_count>26</comment_count>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-02-23 08:32:32 -0800</bug_when>
    <thetext>(In reply to Chris Dumez from comment #25)
&gt; Comment on attachment 421301 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=421301&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/css/CSSFontFace.cpp:84
&gt; &gt; +            source = makeUnique&lt;CSSFontFaceSource&gt;(fontFace, item.resource(), *fontFaceElement);
&gt; 
&gt; Do we know for sure that fontFaceElement is actually non-null here? It is
&gt; not obvious from looking at the code.

Ugh, thank you, I&apos;ve obviously been looking at this for too long.

&gt; &gt; Source/WebCore/css/CSSFontFaceSource.cpp:98
&gt; &gt; +    , m_svgFontFaceElement(makeWeakPtr(&amp;fontFace))
&gt; 
&gt; FYI, makeWeakPtr(fontFace) works and would be more efficient as it avoids an
&gt; unnecessary null-check.

Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732832</commentid>
    <comment_count>27</comment_count>
      <attachid>421398</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-02-24 05:04:16 -0800</bug_when>
    <thetext>Created attachment 421398
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732865</commentid>
    <comment_count>28</comment_count>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-02-24 07:31:09 -0800</bug_when>
    <thetext>I don&apos;t think that failure on mac-wk2 (and maybe mac-debug-wk1?) has anything to do with this patch, I&apos;ll retry a bit later. I think this is ready for review as it is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1733388</commentid>
    <comment_count>29</comment_count>
      <attachid>421398</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-02-25 10:18:41 -0800</bug_when>
    <thetext>Comment on attachment 421398
Patch

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

&gt; Source/WebCore/css/CSSFontFace.cpp:85
&gt; +            source = fontFaceElement ? makeUnique&lt;CSSFontFaceSource&gt;(fontFace, item.resource(), *fontFaceElement) :
&gt; +                makeUnique&lt;CSSFontFaceSource&gt;(fontFace, item.resource());

We often put the &quot;:&quot; at the beginning of the second line rather than the end of the first line. Also, our coding style calls for braces when a single line statement becomes two lines, even though it’s still only a single statement.

&gt; Source/WebCore/css/CSSFontFaceSource.h:93
&gt; +    WeakPtr&lt;CSSFontSelector&gt; m_fontSelector { nullptr }; // For remote fonts, to orchestrate loading.

No need for nullptr, smart pointers get initialized to null without that.

&gt; Source/WebCore/css/CSSFontFaceSource.h:97
&gt; +    RefPtr&lt;JSC::ArrayBufferView&gt; m_immediateSource { nullptr };

Ditto.

&gt; Source/WebCore/css/CSSFontFaceSource.h:100
&gt; +    WeakPtr&lt;SVGFontFaceElement&gt; m_svgFontFaceElement { nullptr };

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1734397</commentid>
    <comment_count>30</comment_count>
      <attachid>421817</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-03-01 06:44:58 -0800</bug_when>
    <thetext>Created attachment 421817
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1734398</commentid>
    <comment_count>31</comment_count>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-03-01 06:46:19 -0800</bug_when>
    <thetext>For reference, performance tests were run privately and no regression was shown for this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1734413</commentid>
    <comment_count>32</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-03-01 07:34:08 -0800</bug_when>
    <thetext>Committed r273650: &lt;https://commits.webkit.org/r273650&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 421817.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1739856</commentid>
    <comment_count>33</comment_count>
      <attachid>421817</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-03-16 00:02:42 -0700</bug_when>
    <thetext>Comment on attachment 421817
Patch

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

&gt; Source/WebCore/css/CSSFontFace.cpp:590
&gt; -                source-&gt;load(m_fontSelector.get());
&gt; +                source-&gt;load(document());

It&apos;s very unnerving that this is getting a raw pointer of Document and passing it to load.
We should probably store Document in a RefPtr before calling load here.
FWIW, the previous incarnation of this patch which got rolled out seems to have introduced a UAF security bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1740220</commentid>
    <comment_count>34</comment_count>
      <attachid>421817</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-03-16 14:46:27 -0700</bug_when>
    <thetext>Comment on attachment 421817
Patch

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

&gt;&gt; Source/WebCore/css/CSSFontFace.cpp:590
&gt;&gt; +                source-&gt;load(document());
&gt; 
&gt; It&apos;s very unnerving that this is getting a raw pointer of Document and passing it to load.
&gt; We should probably store Document in a RefPtr before calling load here.
&gt; FWIW, the previous incarnation of this patch which got rolled out seems to have introduced a UAF security bug.

One way of writing that is this:

    source-&gt;load(makeRefPtr(document()).get());

But I am not sure how I would know when to do this makeRefPtr dance. Ryosuke, how should I think about when it’s needed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1740237</commentid>
    <comment_count>35</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-03-16 15:07:22 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #34)
&gt; Comment on attachment 421817 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=421817&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/css/CSSFontFace.cpp:590
&gt; &gt;&gt; +                source-&gt;load(document());
&gt; &gt; 
&gt; &gt; It&apos;s very unnerving that this is getting a raw pointer of Document and passing it to load.
&gt; &gt; We should probably store Document in a RefPtr before calling load here.
&gt; &gt; FWIW, the previous incarnation of this patch which got rolled out seems to have introduced a UAF security bug.
&gt; 
&gt; One way of writing that is this:
&gt; 
&gt;     source-&gt;load(makeRefPtr(document()).get());
&gt; 
&gt; But I am not sure how I would know when to do this makeRefPtr dance.
&gt; Ryosuke, how should I think about when it’s needed?

The rule of thumb we&apos;ve come up so far is this:
https://lists.webkit.org/pipermail/webkit-dev/2020-September/031386.html

1. Every data member to a ref counted object must use either Ref, RefPtr, or WeakPtr.
   webkit.NoUncountedMemberChecker &lt;https://releases.llvm.org/11.0.1/tools/clang/docs/analyzer/checkers.html#webkit-nouncountedmemberchecker&gt;
2. Every ref counted base class, if it has a derived class, must define a virtual destructor.
   webkit.RefCntblBaseVirtualDtor &lt;https://releases.llvm.org/11.0.1/tools/clang/docs/analyzer/checkers.html#webkit-refcntblbasevirtualdtor&gt;
3. Every ref counted object passed to a non-trivial function as an argument (including &quot;this&quot; pointer)
   should be stored as a Ref or RefPtr in the caller’s local scope
   unless it&apos;s an argument to the caller itself by transitive property [1].
   alpha.webkit.UncountedCallArgsChecker &lt;https://releases.llvm.org/11.0.1/tools/clang/docs/analyzer/checkers.html#alpha-webkit-uncountedcallargschecker&gt;
4. Every ref counted object must be captured using Ref or RefPtr for lambda.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>419996</attachid>
            <date>2021-02-11 09:06:49 -0800</date>
            <delta_ts>2021-02-12 02:18:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208351-20210211170647.patch</filename>
            <type>text/plain</type>
            <size>17172</size>
            <attacher name="Chris Lord">clord</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNjUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTdmNDAwNTdhZDE2MmJl
YjY4YWI2ZGNjOWRlMWVhNDhmNmNiMGNiNi4uMTk1NTQxOWE4NzUzODJlYzczOTdiNjlkMmNkYjAw
MDUwNWQ4ZDYxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDIxLTAyLTExICBDaHJp
cyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KKworICAgICAgICBDU1NGb250RmFjZSBzaG91bGQg
bm90IG5lZWQgaXRzIG1fZm9udFNlbGVjdG9yIGRhdGEgbWVtYmVyCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDgzNTEKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgdGhlIGxhc3QgdXNlIG9mIG1f
Zm9udFNlbGVjdG9yIGZyb20gQ1NTRm9udEZhY2UuIEFkZGluZworICAgICAgICBDYWNoZWRGb250
Q2xpZW50Ojpmb250UmVxdWVzdGVkIGFsbG93cyB1cyB0byBhZGQgdGhlIEZvbnRTZWxlY3RvciBh
cyBhCisgICAgICAgIGNsaWVudCB3aGlsZSB3ZSBoYXZlIGFjY2VzcyB0byBib3RoIHRoZSBGb250
U2VsZWN0b3IgYW5kIHRoZSBDYWNoZWRGb250CisgICAgICAgIGluIENTU0ZvbnRGYWNlOjphcHBl
bmRTb3VyY2VzLCBhbmQgcmVtb3ZlcyB0aGUgbmVlZCB0byBzdG9yZSBhCisgICAgICAgIHdlYWty
ZWZlcmVuY2UgZm9yIGxhdGVyIHVzZSB3aGVuIGxvYWRpbmcgYSBmb250IHRoYXQgbWlnaHQgYmUg
Y2FjaGVkLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoZXJlIGlzIG5vIGJlaGF2
aW9yIGNoYW5nZS4KKworICAgICAgICAqIGNzcy9DU1NGb250RmFjZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NGb250RmFjZTo6YXBwZW5kU291cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpD
U1NGb250RmFjZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlOjpvcHBv
cnR1bmlzdGljYWxseVN0YXJ0Rm9udERhdGFVUkxMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU0ZvbnRGYWNlOjpkb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZTo6
cHVtcCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZTo6Zm9udCk6CisgICAgICAgICog
Y3NzL0NTU0ZvbnRGYWNlLmg6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU291cmNlOjpvcHBvcnR1bmlzdGljYWxseVN0
YXJ0Rm9udERhdGFVUkxMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU291
cmNlOjpsb2FkKToKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTb3VyY2UuaDoKKyAgICAgICAg
KiBjc3MvQ1NTRm9udFNlbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRTZWxl
Y3Rvcjo6b3Bwb3J0dW5pc3RpY2FsbHlTdGFydEZvbnREYXRhVVJMTG9hZGluZyk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NGb250U2VsZWN0b3I6OmNsZWFyRG9jdW1lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTRm9udFNlbGVjdG9yOjpmb250UmVxdWVzdGVkKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU0ZvbnRTZWxlY3Rvcjo6bG9hZFBlbmRpbmdGb250cyk6CisgICAgICAgICogY3NzL0NTU0Zv
bnRTZWxlY3Rvci5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6OnJlcXVlc3RMb2FkKToKKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkRm9udC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250
Q2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRGb250Q2xpZW50Ojpmb250UmVxdWVz
dGVkKToKKwogMjAyMS0wMi0xMSAgQ2hyaXMgTG9yZCAgPGNsb3JkQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgUmVtb3ZlIEZvbnRTZWxlY3RvciBkZXBlbmRlbmNlIGluIENTU0ZvbnRGYWNlIHdoZW4g
Y3JlYXRpbmcgYSBuZXcgRm9udEZhY2Ugd3JhcHBlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0ZvbnRGYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5j
cHAKaW5kZXggNDI4MzJjYzQ5ZjRkM2YyMDA4M2EyMjhhOWFiYmE3ZWM3Nzk4MDU3ZC4uZjdlZmRm
Y2RhNTcwN2I1ODE2NDI0YjY1NjAyY2RiNzMwMzYyZDhjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0ZvbnRGYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9u
dEZhY2UuY3BwCkBAIC03Nyw4ICs3NywxMCBAQCB2b2lkIENTU0ZvbnRGYWNlOjphcHBlbmRTb3Vy
Y2VzKENTU0ZvbnRGYWNlJiBmb250RmFjZSwgQ1NTVmFsdWVMaXN0JiBzcmNMaXN0LCBEbwogICAg
ICAgICAgICAgY29uc3QgU2V0dGluZ3MqIHNldHRpbmdzID0gZG9jdW1lbnQgPyAmZG9jdW1lbnQt
PnNldHRpbmdzKCkgOiBudWxscHRyOwogICAgICAgICAgICAgYm9vbCBhbGxvd0Rvd25sb2FkaW5n
ID0gZm91bmRTVkdGb250IHx8IChzZXR0aW5ncyAmJiBzZXR0aW5ncy0+ZG93bmxvYWRhYmxlQmlu
YXJ5Rm9udHNFbmFibGVkKCkpOwogICAgICAgICAgICAgaWYgKGFsbG93RG93bmxvYWRpbmcgJiYg
aXRlbS5pc1N1cHBvcnRlZEZvcm1hdCgpICYmIGRvY3VtZW50KSB7Ci0gICAgICAgICAgICAgICAg
aWYgKENhY2hlZEZvbnQqIGNhY2hlZEZvbnQgPSBpdGVtLmNhY2hlZEZvbnQoZG9jdW1lbnQsIGZv
dW5kU1ZHRm9udCwgaXNJbml0aWF0aW5nRWxlbWVudEluVXNlckFnZW50U2hhZG93VHJlZSkpCisg
ICAgICAgICAgICAgICAgaWYgKENhY2hlZEZvbnQqIGNhY2hlZEZvbnQgPSBpdGVtLmNhY2hlZEZv
bnQoZG9jdW1lbnQsIGZvdW5kU1ZHRm9udCwgaXNJbml0aWF0aW5nRWxlbWVudEluVXNlckFnZW50
U2hhZG93VHJlZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgY2FjaGVkRm9udC0+YWRkQ2xpZW50
KGRvY3VtZW50LT5mb250U2VsZWN0b3IoKSk7CiAgICAgICAgICAgICAgICAgICAgIHNvdXJjZSA9
IG1ha2VVbmlxdWU8Q1NTRm9udEZhY2VTb3VyY2U+KGZvbnRGYWNlLCBpdGVtLnJlc291cmNlKCks
IGNhY2hlZEZvbnQpOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAg
fSBlbHNlCiAgICAgICAgICAgICBzb3VyY2UgPSBtYWtlVW5pcXVlPENTU0ZvbnRGYWNlU291cmNl
Pihmb250RmFjZSwgaXRlbS5yZXNvdXJjZSgpLCBudWxscHRyLCBmb250RmFjZUVsZW1lbnQpOwpA
QCAtODksMTIgKzkxLDEyIEBAIHZvaWQgQ1NTRm9udEZhY2U6OmFwcGVuZFNvdXJjZXMoQ1NTRm9u
dEZhY2UmIGZvbnRGYWNlLCBDU1NWYWx1ZUxpc3QmIHNyY0xpc3QsIERvCiAgICAgZm9udEZhY2Uu
c291cmNlc1BvcHVsYXRlZCgpOwogfQogCi1DU1NGb250RmFjZTo6Q1NTRm9udEZhY2UoQ1NTRm9u
dFNlbGVjdG9yKiBmb250U2VsZWN0b3IsIFN0eWxlUnVsZUZvbnRGYWNlKiBjc3NDb25uZWN0aW9u
LCBGb250RmFjZSogd3JhcHBlciwgYm9vbCBpc0xvY2FsRmFsbGJhY2spCi0gICAgOiBDU1NGb250
RmFjZShmb250U2VsZWN0b3IgJiYgZm9udFNlbGVjdG9yLT5kb2N1bWVudCgpID8gJmZvbnRTZWxl
Y3Rvci0+ZG9jdW1lbnQoKS0+c2V0dGluZ3MoKSA6IG51bGxwdHIsIGNzc0Nvbm5lY3Rpb24sIHdy
YXBwZXIsIGlzTG9jYWxGYWxsYmFjaykKK1JlZjxDU1NGb250RmFjZT4gQ1NTRm9udEZhY2U6OmNy
ZWF0ZShDU1NGb250U2VsZWN0b3IqIGZvbnRTZWxlY3RvciwgU3R5bGVSdWxlRm9udEZhY2UqIGNz
c0Nvbm5lY3Rpb24sIEZvbnRGYWNlKiB3cmFwcGVyLCBib29sIGlzTG9jYWxGYWxsYmFjaykKIHsK
LSAgICBtX2ZvbnRTZWxlY3RvciA9IG1ha2VXZWFrUHRyKGZvbnRTZWxlY3Rvcik7IC8vIEZJWE1F
OiBJZGVhbGx5IHRoaXMgZGF0YSBtZW1iZXIgd291bGQgZ28gYXdheSAoaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODM1MSkuCisgICAgYXV0byByZXN1bHQgPSBhZG9w
dFJlZigqbmV3IENTU0ZvbnRGYWNlKChmb250U2VsZWN0b3IgJiYgZm9udFNlbGVjdG9yLT5kb2N1
bWVudCgpKSA/ICZmb250U2VsZWN0b3ItPmRvY3VtZW50KCktPnNldHRpbmdzKCkgOiBudWxscHRy
LCBjc3NDb25uZWN0aW9uLCB3cmFwcGVyLCBpc0xvY2FsRmFsbGJhY2spKTsKICAgICBpZiAoZm9u
dFNlbGVjdG9yKQotICAgICAgICBhZGRDbGllbnQoKmZvbnRTZWxlY3Rvcik7CisgICAgICAgIHJl
c3VsdC0+YWRkQ2xpZW50KCpmb250U2VsZWN0b3IpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAK
IENTU0ZvbnRGYWNlOjpDU1NGb250RmFjZShjb25zdCBTZXR0aW5ncyogc2V0dGluZ3MsIFN0eWxl
UnVsZUZvbnRGYWNlKiBjc3NDb25uZWN0aW9uLCBGb250RmFjZSogd3JhcHBlciwgYm9vbCBpc0xv
Y2FsRmFsbGJhY2spCkBAIC01NDgsMTEgKzU1MCwxOCBAQCB2b2lkIENTU0ZvbnRGYWNlOjpmb250
TG9hZGVkKENTU0ZvbnRGYWNlU291cmNlJikKICAgICBmb250TG9hZEV2ZW50T2NjdXJyZWQoKTsK
IH0KIAotdm9pZCBDU1NGb250RmFjZTo6b3Bwb3J0dW5pc3RpY2FsbHlTdGFydEZvbnREYXRhVVJM
TG9hZGluZyhDU1NGb250U2VsZWN0b3ImIGZvbnRTZWxlY3RvcikKK3ZvaWQgQ1NTRm9udEZhY2U6
Om9wcG9ydHVuaXN0aWNhbGx5U3RhcnRGb250RGF0YVVSTExvYWRpbmcoRG9jdW1lbnQqIGRvY3Vt
ZW50KQogewogICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gZ28gY3JhenkgaGVyZSBhbmQgYmxvdyB0
aGUgY2FjaGUuIFVzdWFsbHkgdGhlc2UgZGF0YSBVUkxzIGFyZSB0aGUgZmlyc3QgaXRlbSBpbiB0
aGUgc3JjOiBsaXN0LCBzbyBsZXQncyBqdXN0IGNoZWNrIHRoYXQgb25lLgogICAgIGlmICghbV9z
b3VyY2VzLmlzRW1wdHkoKSkKLSAgICAgICAgbV9zb3VyY2VzWzBdLT5vcHBvcnR1bmlzdGljYWxs
eVN0YXJ0Rm9udERhdGFVUkxMb2FkaW5nKGZvbnRTZWxlY3Rvcik7CisgICAgICAgIG1fc291cmNl
c1swXS0+b3Bwb3J0dW5pc3RpY2FsbHlTdGFydEZvbnREYXRhVVJMTG9hZGluZyhkb2N1bWVudCk7
Cit9CisKK0RvY3VtZW50KiBDU1NGb250RmFjZTo6ZG9jdW1lbnQoKQoreworICAgIGlmIChtX3dy
YXBwZXIgJiYgaXM8RG9jdW1lbnQ+KG1fd3JhcHBlci0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
KSkKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PERvY3VtZW50PihtX3dyYXBwZXItPnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSk7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIHNpemVfdCBDU1NG
b250RmFjZTo6cHVtcChFeHRlcm5hbFJlc291cmNlRG93bmxvYWRQb2xpY3kgcG9saWN5KQpAQCAt
NTc5LDcgKzU4OCw3IEBAIHNpemVfdCBDU1NGb250RmFjZTo6cHVtcChFeHRlcm5hbFJlc291cmNl
RG93bmxvYWRQb2xpY3kgcG9saWN5KQogICAgICAgICAgICAgaWYgKHBvbGljeSA9PSBFeHRlcm5h
bFJlc291cmNlRG93bmxvYWRQb2xpY3k6OkFsbG93IHx8ICFzb3VyY2UtPnJlcXVpcmVzRXh0ZXJu
YWxSZXNvdXJjZSgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKHBvbGljeSA9PSBFeHRlcm5hbFJl
c291cmNlRG93bmxvYWRQb2xpY3k6OkFsbG93ICYmIG1fc3RhdHVzID09IFN0YXR1czo6UGVuZGlu
ZykKICAgICAgICAgICAgICAgICAgICAgc2V0U3RhdHVzKFN0YXR1czo6TG9hZGluZyk7Ci0gICAg
ICAgICAgICAgICAgc291cmNlLT5sb2FkKG1fZm9udFNlbGVjdG9yLmdldCgpKTsKKyAgICAgICAg
ICAgICAgICBzb3VyY2UtPmxvYWQoZG9jdW1lbnQoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KIApAQCAtNjUxLDcgKzY2MCw3IEBAIFJlZlB0cjxGb250PiBDU1NGb250RmFjZTo6Zm9udChj
b25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbiwgYm9vbCBzeW50CiAgICAgZm9y
IChzaXplX3QgaSA9IHN0YXJ0SW5kZXg7IGkgPCBtX3NvdXJjZXMuc2l6ZSgpOyArK2kpIHsKICAg
ICAgICAgYXV0byYgc291cmNlID0gbV9zb3VyY2VzW2ldOwogICAgICAgICBpZiAoc291cmNlLT5z
dGF0dXMoKSA9PSBDU1NGb250RmFjZVNvdXJjZTo6U3RhdHVzOjpQZW5kaW5nICYmIChwb2xpY3kg
PT0gRXh0ZXJuYWxSZXNvdXJjZURvd25sb2FkUG9saWN5OjpBbGxvdyB8fCAhc291cmNlLT5yZXF1
aXJlc0V4dGVybmFsUmVzb3VyY2UoKSkpCi0gICAgICAgICAgICBzb3VyY2UtPmxvYWQobV9mb250
U2VsZWN0b3IuZ2V0KCkpOworICAgICAgICAgICAgc291cmNlLT5sb2FkKGRvY3VtZW50KCkpOwog
CiAgICAgICAgIHN3aXRjaCAoc291cmNlLT5zdGF0dXMoKSkgewogICAgICAgICBjYXNlIENTU0Zv
bnRGYWNlU291cmNlOjpTdGF0dXM6OlBlbmRpbmc6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTRm9udEZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5oCmlu
ZGV4IGYyNjJkMDVmN2Q3MGU1ZjkzY2NmM2E2ODVhZGYxNzRhYTM2NzQ3NzcuLjliOGZmOWY4NmIy
NDJjNDEzNWMxNjU0OGU5NGY2MmVhODhhNzZiODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NGb250RmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5o
CkBAIC02MCwxMCArNjAsNyBAQCBERUNMQVJFX0FMTE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklF
UihDU1NGb250RmFjZSk7CiBjbGFzcyBDU1NGb250RmFjZSBmaW5hbCA6IHB1YmxpYyBSZWZDb3Vu
dGVkPENTU0ZvbnRGYWNlPiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURURfV0lUSF9IRUFQ
X0lERU5USUZJRVIoQ1NTRm9udEZhY2UpOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8Q1NTRm9u
dEZhY2U+IGNyZWF0ZShDU1NGb250U2VsZWN0b3IqIGZvbnRTZWxlY3RvciwgU3R5bGVSdWxlRm9u
dEZhY2UqIGNzc0Nvbm5lY3Rpb24gPSBudWxscHRyLCBGb250RmFjZSogd3JhcHBlciA9IG51bGxw
dHIsIGJvb2wgaXNMb2NhbEZhbGxiYWNrID0gZmFsc2UpCi0gICAgewotICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBDU1NGb250RmFjZShmb250U2VsZWN0b3IsIGNzc0Nvbm5lY3Rpb24sIHdy
YXBwZXIsIGlzTG9jYWxGYWxsYmFjaykpOwotICAgIH0KKyAgICBzdGF0aWMgUmVmPENTU0ZvbnRG
YWNlPiBjcmVhdGUoQ1NTRm9udFNlbGVjdG9yKiwgU3R5bGVSdWxlRm9udEZhY2UqIGNzc0Nvbm5l
Y3Rpb24gPSBudWxscHRyLCBGb250RmFjZSogd3JhcHBlciA9IG51bGxwdHIsIGJvb2wgaXNMb2Nh
bEZhbGxiYWNrID0gZmFsc2UpOwogICAgIHZpcnR1YWwgfkNTU0ZvbnRGYWNlKCk7CiAKICAgICAv
LyBGSVhNRTogVGhlc2UgZnVuY3Rpb25zIGRvbid0IG5lZWQgdG8gaGF2ZSBib29sZWFuIHJldHVy
biB2YWx1ZXMuCkBAIC0xMTIsNyArMTA5LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBjb21wdXRl
RmFpbHVyZVN0YXRlKCkgY29uc3Q7CiAKLSAgICB2b2lkIG9wcG9ydHVuaXN0aWNhbGx5U3RhcnRG
b250RGF0YVVSTExvYWRpbmcoQ1NTRm9udFNlbGVjdG9yJik7CisgICAgdm9pZCBvcHBvcnR1bmlz
dGljYWxseVN0YXJ0Rm9udERhdGFVUkxMb2FkaW5nKERvY3VtZW50Kik7CiAKICAgICB2b2lkIGFk
b3B0U291cmNlKHN0ZDo6dW5pcXVlX3B0cjxDU1NGb250RmFjZVNvdXJjZT4mJik7CiAgICAgdm9p
ZCBzb3VyY2VzUG9wdWxhdGVkKCkgeyBtX3NvdXJjZXNQb3B1bGF0ZWQgPSB0cnVlOyB9CkBAIC0x
NjcsNyArMTY0LDYgQEAgcHVibGljOgogICAgIHZvaWQgc2V0RXJyb3JTdGF0ZSgpOwogCiBwcml2
YXRlOgotICAgIENTU0ZvbnRGYWNlKENTU0ZvbnRTZWxlY3RvciosIFN0eWxlUnVsZUZvbnRGYWNl
KiwgRm9udEZhY2UqLCBib29sIGlzTG9jYWxGYWxsYmFjayk7CiAgICAgQ1NTRm9udEZhY2UoY29u
c3QgU2V0dGluZ3MqLCBTdHlsZVJ1bGVGb250RmFjZSosIEZvbnRGYWNlKiwgYm9vbCBpc0xvY2Fs
RmFsbGJhY2spOwogCiAgICAgc2l6ZV90IHB1bXAoRXh0ZXJuYWxSZXNvdXJjZURvd25sb2FkUG9s
aWN5KTsKQEAgLTE3OSw2ICsxNzUsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgZm9udExvYWRFdmVu
dE9jY3VycmVkKCk7CiAgICAgdm9pZCB0aW1lb3V0RmlyZWQoKTsKIAorICAgIERvY3VtZW50KiBk
b2N1bWVudCgpOworCiAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbV9mYW1pbGllczsKICAgICBW
ZWN0b3I8VW5pY29kZVJhbmdlPiBtX3JhbmdlczsKIApAQCAtMTg2LDcgKzE4NCw2IEBAIHByaXZh
dGU6CiAgICAgRm9udExvYWRpbmdCZWhhdmlvciBtX2xvYWRpbmdCZWhhdmlvciB7IEZvbnRMb2Fk
aW5nQmVoYXZpb3I6OkF1dG8gfTsKIAogICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Q1NTRm9u
dEZhY2VTb3VyY2U+LCAwLCBDcmFzaE9uT3ZlcmZsb3csIDA+IG1fc291cmNlczsKLSAgICBXZWFr
UHRyPENTU0ZvbnRTZWxlY3Rvcj4gbV9mb250U2VsZWN0b3I7IC8vIEZJWE1FOiBJZGVhbGx5IHRo
aXMgZGF0YSBtZW1iZXIgd291bGQgZ28gYXdheSAoaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwODM1MSkuCiAgICAgUmVmUHRyPFN0eWxlUnVsZUZvbnRGYWNlPiBtX2Nz
c0Nvbm5lY3Rpb247CiAgICAgSGFzaFNldDxDbGllbnQqPiBtX2NsaWVudHM7CiAgICAgV2Vha1B0
cjxGb250RmFjZT4gbV93cmFwcGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0ZvbnRGYWNlU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJj
ZS5jcHAKaW5kZXggZTZlYTE4MTZmZmMzY2E2ZDA0NTAyM2E4ZGE3NzM0YmRhYzUyMjg2NC4uNDVj
Y2JhYjQ5ZmIwYzdiZDYwM2EyMGM4YTk4MGY1MGEwMzQ1NWY1NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwCkBAIC0xMDAsMTAgKzEwMCwxMCBAQCBib29sIENTU0Zv
bnRGYWNlU291cmNlOjpzaG91bGRJZ25vcmVGb250TG9hZENvbXBsZXRpb25zKCkgY29uc3QKICAg
ICByZXR1cm4gbV9mYWNlLnNob3VsZElnbm9yZUZvbnRMb2FkQ29tcGxldGlvbnMoKTsKIH0KIAot
dm9pZCBDU1NGb250RmFjZVNvdXJjZTo6b3Bwb3J0dW5pc3RpY2FsbHlTdGFydEZvbnREYXRhVVJM
TG9hZGluZyhDU1NGb250U2VsZWN0b3ImIGZvbnRTZWxlY3RvcikKK3ZvaWQgQ1NTRm9udEZhY2VT
b3VyY2U6Om9wcG9ydHVuaXN0aWNhbGx5U3RhcnRGb250RGF0YVVSTExvYWRpbmcoRG9jdW1lbnQq
IGRvY3VtZW50KQogewogICAgIGlmIChzdGF0dXMoKSA9PSBTdGF0dXM6OlBlbmRpbmcgJiYgbV9m
b250ICYmIG1fZm9udC0+dXJsKCkucHJvdG9jb2xJc0RhdGEoKSAmJiBtX2ZhbWlseU5hbWVPclVS
SS5sZW5ndGgoKSA8IE1CKQotICAgICAgICBsb2FkKCZmb250U2VsZWN0b3IpOworICAgICAgICBs
b2FkKGRvY3VtZW50KTsKIH0KIAogdm9pZCBDU1NGb250RmFjZVNvdXJjZTo6Zm9udExvYWRlZChD
YWNoZWRGb250JiBsb2FkZWRGb250KQpAQCAtMTMyLDEzICsxMzIsMTIgQEAgdm9pZCBDU1NGb250
RmFjZVNvdXJjZTo6Zm9udExvYWRlZChDYWNoZWRGb250JiBsb2FkZWRGb250KQogICAgIG1fZmFj
ZS5mb250TG9hZGVkKCp0aGlzKTsKIH0KIAotdm9pZCBDU1NGb250RmFjZVNvdXJjZTo6bG9hZChD
U1NGb250U2VsZWN0b3IqIGZvbnRTZWxlY3RvcikKK3ZvaWQgQ1NTRm9udEZhY2VTb3VyY2U6Omxv
YWQoRG9jdW1lbnQqIGRvY3VtZW50KQogewogICAgIHNldFN0YXR1cyhTdGF0dXM6OkxvYWRpbmcp
OwogCiAgICAgaWYgKG1fZm9udCkgewotICAgICAgICBBU1NFUlQoZm9udFNlbGVjdG9yKTsKLSAg
ICAgICAgZm9udFNlbGVjdG9yLT5iZWdpbkxvYWRpbmdGb250U29vbigqbV9mb250KTsKKyAgICAg
ICAgbV9mb250LT5yZXF1ZXN0TG9hZCgpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGJvb2wgc3Vj
Y2VzcyA9IGZhbHNlOwogICAgICAgICBpZiAobV9oYXNTVkdGb250RmFjZUVsZW1lbnQpIHsKQEAg
LTE2NywxMCArMTY2LDggQEAgdm9pZCBDU1NGb250RmFjZVNvdXJjZTo6bG9hZChDU1NGb250U2Vs
ZWN0b3IqIGZvbnRTZWxlY3RvcikKICAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRDb21w
dXRlZFNpemUoMSk7CiAgICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0U2hvdWxkQWxsb3dV
c2VySW5zdGFsbGVkRm9udHMobV9mYWNlLmFsbG93VXNlckluc3RhbGxlZEZvbnRzKCkpOwogICAg
ICAgICAgICAgc3VjY2VzcyA9IEZvbnRDYWNoZTo6c2luZ2xldG9uKCkuZm9udEZvckZhbWlseShm
b250RGVzY3JpcHRpb24sIG1fZmFtaWx5TmFtZU9yVVJJLCBudWxscHRyLCBGb250U2VsZWN0aW9u
U3BlY2lmaWVkQ2FwYWJpbGl0aWVzKCksIHRydWUpOwotICAgICAgICAgICAgaWYgKFJ1bnRpbWVF
bmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkud2ViQVBJU3RhdGlzdGljc0VuYWJsZWQo
KSkgewotICAgICAgICAgICAgICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IGZvbnRTZWxlY3Rvci0+
ZG9jdW1lbnQoKSkKLSAgICAgICAgICAgICAgICAgICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNo
YXJlZCgpLmxvZ0ZvbnRMb2FkKCpkb2N1bWVudCwgbV9mYW1pbHlOYW1lT3JVUkkuc3RyaW5nKCks
IHN1Y2Nlc3MpOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGRvY3VtZW50ICYmIFJ1
bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkud2ViQVBJU3RhdGlzdGljc0Vu
YWJsZWQoKSkKKyAgICAgICAgICAgICAgICBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCku
bG9nRm9udExvYWQoKmRvY3VtZW50LCBtX2ZhbWlseU5hbWVPclVSSS5zdHJpbmcoKSwgc3VjY2Vz
cyk7CiAgICAgICAgIH0KICAgICAgICAgc2V0U3RhdHVzKHN1Y2Nlc3MgPyBTdGF0dXM6OlN1Y2Nl
c3MgOiBTdGF0dXM6OkZhaWx1cmUpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NGb250RmFjZVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNl
U291cmNlLmgKaW5kZXggN2VhYjU5ODk1NjBhNDE2OThiZjY0MmMxZGNmYWFjNTk4Zjc2NmU2OS4u
ZGRlODYwOWI4NDc0ZWY3NTkwNmRjOGZmNjk1YTIxZjk5NGRlZDY1NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0ZvbnRGYWNlU291cmNlLmgKQEAgLTM1LDYgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBDU1NGb250RmFjZTsKIGNsYXNzIENTU0ZvbnRTZWxlY3RvcjsKK2NsYXNz
IERvY3VtZW50OwogY2xhc3MgRm9udDsKIHN0cnVjdCBGb250Q3VzdG9tUGxhdGZvcm1EYXRhOwog
Y2xhc3MgRm9udERlc2NyaXB0aW9uOwpAQCAtNjcsOSArNjgsOSBAQCBwdWJsaWM6CiAKICAgICBj
b25zdCBBdG9tU3RyaW5nJiBmYW1pbHlOYW1lT3JVUkkoKSBjb25zdCB7IHJldHVybiBtX2ZhbWls
eU5hbWVPclVSSTsgfQogCi0gICAgdm9pZCBvcHBvcnR1bmlzdGljYWxseVN0YXJ0Rm9udERhdGFV
UkxMb2FkaW5nKENTU0ZvbnRTZWxlY3RvciYpOworICAgIHZvaWQgb3Bwb3J0dW5pc3RpY2FsbHlT
dGFydEZvbnREYXRhVVJMTG9hZGluZyhEb2N1bWVudCopOwogCi0gICAgdm9pZCBsb2FkKENTU0Zv
bnRTZWxlY3RvciopOworICAgIHZvaWQgbG9hZChEb2N1bWVudCopOwogICAgIFJlZlB0cjxGb250
PiBmb250KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBz
eW50aGV0aWNJdGFsaWMsIGNvbnN0IEZvbnRGZWF0dXJlU2V0dGluZ3MmLCBGb250U2VsZWN0aW9u
U3BlY2lmaWVkQ2FwYWJpbGl0aWVzKTsKIAogICAgIENhY2hlZEZvbnQqIGNhY2hlZEZvbnQoKSBj
b25zdCB7IHJldHVybiBtX2ZvbnQuZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NGb250U2VsZWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxl
Y3Rvci5jcHAKaW5kZXggZDBjMjMzNjk2YTJmNmU3YTVlZjk3MmI3ZmU0ZTVlMTVhNmY4NjM5ZC4u
YjU2MTgxZGJmMzBiYTA5ODk1ZmRkZmIwMjE2OTM0OTQ3ZWY2ZjUwOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAKQEAgLTI0NSw3ICsyNDUsNyBAQCB2b2lkIENTU0ZvbnRT
ZWxlY3Rvcjo6b3Bwb3J0dW5pc3RpY2FsbHlTdGFydEZvbnREYXRhVVJMTG9hZGluZyhjb25zdCBG
b250Q2FzY2FkZQogICAgIGlmICghc2VnbWVudGVkRm9udEZhY2UpCiAgICAgICAgIHJldHVybjsK
ICAgICBmb3IgKGF1dG8mIGZhY2UgOiBzZWdtZW50ZWRGb250RmFjZS0+Y29uc3RpdHVlbnRGYWNl
cygpKQotICAgICAgICBmYWNlLT5vcHBvcnR1bmlzdGljYWxseVN0YXJ0Rm9udERhdGFVUkxMb2Fk
aW5nKCp0aGlzKTsKKyAgICAgICAgZmFjZS0+b3Bwb3J0dW5pc3RpY2FsbHlTdGFydEZvbnREYXRh
VVJMTG9hZGluZyhkb2N1bWVudCgpKTsKIH0KIAogdm9pZCBDU1NGb250U2VsZWN0b3I6OmZvbnRM
b2FkZWQoQ1NTRm9udEZhY2UmKQpAQCAtMzQ5LDcgKzM0OSw3IEBAIHZvaWQgQ1NTRm9udFNlbGVj
dG9yOjpjbGVhckRvY3VtZW50KCkKIAogICAgIENhY2hlZFJlc291cmNlTG9hZGVyJiBjYWNoZWRS
ZXNvdXJjZUxvYWRlciA9IG1fZG9jdW1lbnQtPmNhY2hlZFJlc291cmNlTG9hZGVyKCk7CiAgICAg
Zm9yIChhdXRvJiBmb250SGFuZGxlIDogbV9mb250c1RvQmVnaW5Mb2FkaW5nKSB7Ci0gICAgICAg
IC8vIEJhbGFuY2VzIGluY3JlbWVudFJlcXVlc3RDb3VudCgpIGluIGJlZ2luTG9hZGluZ0ZvbnRT
b29uKCkuCisgICAgICAgIC8vIEJhbGFuY2VzIGluY3JlbWVudFJlcXVlc3RDb3VudCgpIGluIGZv
bnRSZXF1ZXN0ZWQoKS4KICAgICAgICAgY2FjaGVkUmVzb3VyY2VMb2FkZXIuZGVjcmVtZW50UmVx
dWVzdENvdW50KCpmb250SGFuZGxlKTsKICAgICB9CiAgICAgbV9mb250c1RvQmVnaW5Mb2FkaW5n
LmNsZWFyKCk7CkBAIC0zNjAsNyArMzYwLDcgQEAgdm9pZCBDU1NGb250U2VsZWN0b3I6OmNsZWFy
RG9jdW1lbnQoKQogICAgIG1fY2xpZW50cy5jbGVhcigpOwogfQogCi12b2lkIENTU0ZvbnRTZWxl
Y3Rvcjo6YmVnaW5Mb2FkaW5nRm9udFNvb24oQ2FjaGVkRm9udCYgZm9udCkKK3ZvaWQgQ1NTRm9u
dFNlbGVjdG9yOjpmb250UmVxdWVzdGVkKENhY2hlZEZvbnQmIGZvbnQpCiB7CiAgICAgaWYgKCFt
X2RvY3VtZW50KQogICAgICAgICByZXR1cm47CkBAIC0zOTQsNyArMzk0LDcgQEAgdm9pZCBDU1NG
b250U2VsZWN0b3I6OmxvYWRQZW5kaW5nRm9udHMoKQogICAgIENhY2hlZFJlc291cmNlTG9hZGVy
JiBjYWNoZWRSZXNvdXJjZUxvYWRlciA9IG1fZG9jdW1lbnQtPmNhY2hlZFJlc291cmNlTG9hZGVy
KCk7CiAgICAgZm9yIChhdXRvJiBmb250SGFuZGxlIDogZm9udHNUb0JlZ2luTG9hZGluZykgewog
ICAgICAgICBmb250SGFuZGxlLT5iZWdpbkxvYWRJZk5lZWRlZChjYWNoZWRSZXNvdXJjZUxvYWRl
cik7Ci0gICAgICAgIC8vIEJhbGFuY2VzIGluY3JlbWVudFJlcXVlc3RDb3VudCgpIGluIGJlZ2lu
TG9hZGluZ0ZvbnRTb29uKCkuCisgICAgICAgIC8vIEJhbGFuY2VzIGluY3JlbWVudFJlcXVlc3RD
b3VudCgpIGluIGZvbnRSZXF1ZXN0ZWQoKS4KICAgICAgICAgY2FjaGVkUmVzb3VyY2VMb2FkZXIu
ZGVjcmVtZW50UmVxdWVzdENvdW50KCpmb250SGFuZGxlKTsKICAgICB9CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTRm9udFNlbGVjdG9yLmgKaW5kZXggZGE0MzE3MmRlMGY0MDQ2ZTcyNmUyZWNhMWMzODA1
NDQyNGE0ZGFmMS4uOGY5ODcyODhmODllMGY5NjIzZjNiMzY1ZjcxMDMzMGRkMzViOTMyZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuaApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1
ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgogI2luY2x1ZGUgIkNTU0ZvbnRGYWNlLmgiCiAjaW5jbHVk
ZSAiQ1NTRm9udEZhY2VTZXQuaCIKKyNpbmNsdWRlICJDYWNoZWRGb250Q2xpZW50LmgiCiAjaW5j
bHVkZSAiQ2FjaGVkUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJGb250LmgiCiAjaW5jbHVk
ZSAiRm9udFNlbGVjdG9yLmgiCkBAIC00OCw3ICs0OSw3IEBAIGNsYXNzIENhY2hlZEZvbnQ7CiBj
bGFzcyBEb2N1bWVudDsKIGNsYXNzIFN0eWxlUnVsZUZvbnRGYWNlOwogCi1jbGFzcyBDU1NGb250
U2VsZWN0b3IgZmluYWwgOiBwdWJsaWMgRm9udFNlbGVjdG9yLCBwdWJsaWMgQ1NTRm9udEZhY2U6
OkNsaWVudCwgcHVibGljIENhbk1ha2VXZWFrUHRyPENTU0ZvbnRTZWxlY3Rvcj4sIHB1YmxpYyBB
Y3RpdmVET01PYmplY3QgeworY2xhc3MgQ1NTRm9udFNlbGVjdG9yIGZpbmFsIDogcHVibGljIEZv
bnRTZWxlY3RvciwgcHVibGljIENTU0ZvbnRGYWNlOjpDbGllbnQsIHB1YmxpYyBDYWNoZWRGb250
Q2xpZW50LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8Q1NTRm9udFNlbGVjdG9yPiwgcHVibGljIEFj
dGl2ZURPTU9iamVjdCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxDU1NGb250U2VsZWN0b3I+
IGNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgewpAQCAtNzksNyArODAsNiBAQCBwdWJs
aWM6CiAKICAgICBEb2N1bWVudCogZG9jdW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2RvY3VtZW50
LmdldCgpOyB9CiAKLSAgICB2b2lkIGJlZ2luTG9hZGluZ0ZvbnRTb29uKENhY2hlZEZvbnQmKTsK
ICAgICB2b2lkIHN1c3BlbmRGb250TG9hZGluZ1RpbWVyKCk7CiAKICAgICBGb250RmFjZVNldCog
Zm9udEZhY2VTZXRJZkV4aXN0cygpOwpAQCAtMTA4LDYgKzEwOCw5IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBmb250TW9kaWZpZWQoKTsKICAgICB2b2lkIGZvbnRMb2FkaW5nVGltZXJGaXJlZCgpOwog
CisgICAgLy8gQ2FjaGVkRm9udENsaWVudAorICAgIHZvaWQgZm9udFJlcXVlc3RlZChDYWNoZWRG
b250JikgZmluYWw7CisKICAgICAvLyBBY3RpdmVET01PYmplY3QKICAgICB2b2lkIHN0b3AoKSBm
aW5hbDsKICAgICB2b2lkIHN1c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lvbikgZmluYWw7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKaW5kZXggOTc0MTllZWU3NDE5
ZjgwYWFkYWZlODI0NTU5MGRmZWQ2NGU5NzcyZS4uNmQ2ZGQzOGI5NDBiZjlmOGEyYjk0MjBhY2Ey
MGQyZmY1NjI2YjUwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZEZvbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250
LmNwcApAQCAtNzEsNiArNzEsMTMgQEAgdm9pZCBDYWNoZWRGb250OjpmaW5pc2hMb2FkaW5nKFNo
YXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXQKICAgICBjaGVj
a05vdGlmeShtZXRyaWNzKTsKIH0KIAordm9pZCBDYWNoZWRGb250OjpyZXF1ZXN0TG9hZCgpCit7
CisgICAgQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXI8Q2FjaGVkRm9udENsaWVudD4gd2Fsa2Vy
KG1fY2xpZW50cyk7CisgICAgd2hpbGUgKENhY2hlZEZvbnRDbGllbnQqIGNsaWVudCA9IHdhbGtl
ci5uZXh0KCkpCisgICAgICAgIGNsaWVudC0+Zm9udFJlcXVlc3RlZCgqdGhpcyk7Cit9CisKIHZv
aWQgQ2FjaGVkRm9udDo6YmVnaW5Mb2FkSWZOZWVkZWQoQ2FjaGVkUmVzb3VyY2VMb2FkZXImIGxv
YWRlcikKIHsKICAgICBpZiAoIW1fbG9hZEluaXRpYXRlZCkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRGb250LmgKaW5kZXggNjI2Nzc4OGYxN2U1ZWI0MjBhNTk0NDg4NGM0NDVh
MzBhMDdmOWY1Yy4uOWMxMTQ4MjUxNmQ4MDg2MWJkYjM4MzQ0ZWU4NmYxMWJjOWU4ZTBiZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oCkBAIC00OCw2ICs0OCw3IEBA
IHB1YmxpYzoKICAgICBDYWNoZWRGb250KENhY2hlZFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBQ
QUw6OlNlc3Npb25JRCYsIGNvbnN0IENvb2tpZUphciosIFR5cGUgPSBUeXBlOjpGb250UmVzb3Vy
Y2UpOwogICAgIHZpcnR1YWwgfkNhY2hlZEZvbnQoKTsKIAorICAgIHZvaWQgcmVxdWVzdExvYWQo
KTsKICAgICB2b2lkIGJlZ2luTG9hZElmTmVlZGVkKENhY2hlZFJlc291cmNlTG9hZGVyJik7CiAg
ICAgYm9vbCBzdGlsbE5lZWRzTG9hZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICFtX2xvYWRJ
bml0aWF0ZWQ7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZEZvbnRDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250
Q2xpZW50LmgKaW5kZXggNTBlNjNmNTljYTM0NDdjMjJhOTZmYzlmYzcxNjE4ZDMxYjZkMjBjMi4u
OGNhZjg5Y2FhMzJhODA0ODg5ZjliYThjNzdlYmRmNzJjMDk0Mzc0NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnRDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udENsaWVudC5oCkBAIC0zNyw2ICszNyw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgQ2FjaGVkUmVzb3VyY2VDbGllbnRUeXBlIGV4cGVjdGVkVHlw
ZSgpIHsgcmV0dXJuIEZvbnRUeXBlOyB9CiAgICAgQ2FjaGVkUmVzb3VyY2VDbGllbnRUeXBlIHJl
c291cmNlQ2xpZW50VHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGV4cGVjdGVkVHlwZSgp
OyB9CiAgICAgdmlydHVhbCB2b2lkIGZvbnRMb2FkZWQoQ2FjaGVkRm9udCYpIHsgfQorICAgIHZp
cnR1YWwgdm9pZCBmb250UmVxdWVzdGVkKENhY2hlZEZvbnQmKSB7IH0KIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420109</attachid>
            <date>2021-02-12 02:19:04 -0800</date>
            <delta_ts>2021-02-12 05:41:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208351-20210212101903.patch</filename>
            <type>text/plain</type>
            <size>17214</size>
            <attacher name="Chris Lord">clord</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNjUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTdmNDAwNTdhZDE2MmJl
YjY4YWI2ZGNjOWRlMWVhNDhmNmNiMGNiNi4uMTk1NTQxOWE4NzUzODJlYzczOTdiNjlkMmNkYjAw
MDUwNWQ4ZDYxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDIxLTAyLTExICBDaHJp
cyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KKworICAgICAgICBDU1NGb250RmFjZSBzaG91bGQg
bm90IG5lZWQgaXRzIG1fZm9udFNlbGVjdG9yIGRhdGEgbWVtYmVyCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDgzNTEKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgdGhlIGxhc3QgdXNlIG9mIG1f
Zm9udFNlbGVjdG9yIGZyb20gQ1NTRm9udEZhY2UuIEFkZGluZworICAgICAgICBDYWNoZWRGb250
Q2xpZW50Ojpmb250UmVxdWVzdGVkIGFsbG93cyB1cyB0byBhZGQgdGhlIEZvbnRTZWxlY3RvciBh
cyBhCisgICAgICAgIGNsaWVudCB3aGlsZSB3ZSBoYXZlIGFjY2VzcyB0byBib3RoIHRoZSBGb250
U2VsZWN0b3IgYW5kIHRoZSBDYWNoZWRGb250CisgICAgICAgIGluIENTU0ZvbnRGYWNlOjphcHBl
bmRTb3VyY2VzLCBhbmQgcmVtb3ZlcyB0aGUgbmVlZCB0byBzdG9yZSBhCisgICAgICAgIHdlYWty
ZWZlcmVuY2UgZm9yIGxhdGVyIHVzZSB3aGVuIGxvYWRpbmcgYSBmb250IHRoYXQgbWlnaHQgYmUg
Y2FjaGVkLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoZXJlIGlzIG5vIGJlaGF2
aW9yIGNoYW5nZS4KKworICAgICAgICAqIGNzcy9DU1NGb250RmFjZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NGb250RmFjZTo6YXBwZW5kU291cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpD
U1NGb250RmFjZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlOjpvcHBv
cnR1bmlzdGljYWxseVN0YXJ0Rm9udERhdGFVUkxMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU0ZvbnRGYWNlOjpkb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZTo6
cHVtcCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZTo6Zm9udCk6CisgICAgICAgICog
Y3NzL0NTU0ZvbnRGYWNlLmg6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU291cmNlOjpvcHBvcnR1bmlzdGljYWxseVN0
YXJ0Rm9udERhdGFVUkxMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU291
cmNlOjpsb2FkKToKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTb3VyY2UuaDoKKyAgICAgICAg
KiBjc3MvQ1NTRm9udFNlbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRTZWxl
Y3Rvcjo6b3Bwb3J0dW5pc3RpY2FsbHlTdGFydEZvbnREYXRhVVJMTG9hZGluZyk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NGb250U2VsZWN0b3I6OmNsZWFyRG9jdW1lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTRm9udFNlbGVjdG9yOjpmb250UmVxdWVzdGVkKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU0ZvbnRTZWxlY3Rvcjo6bG9hZFBlbmRpbmdGb250cyk6CisgICAgICAgICogY3NzL0NTU0Zv
bnRTZWxlY3Rvci5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6OnJlcXVlc3RMb2FkKToKKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkRm9udC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250
Q2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRGb250Q2xpZW50Ojpmb250UmVxdWVz
dGVkKToKKwogMjAyMS0wMi0xMSAgQ2hyaXMgTG9yZCAgPGNsb3JkQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgUmVtb3ZlIEZvbnRTZWxlY3RvciBkZXBlbmRlbmNlIGluIENTU0ZvbnRGYWNlIHdoZW4g
Y3JlYXRpbmcgYSBuZXcgRm9udEZhY2Ugd3JhcHBlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0ZvbnRGYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5j
cHAKaW5kZXggNDI4MzJjYzQ5ZjRkM2YyMDA4M2EyMjhhOWFiYmE3ZWM3Nzk4MDU3ZC4uZjdlZmRm
Y2RhNTcwN2I1ODE2NDI0YjY1NjAyY2RiNzMwMzYyZDhjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0ZvbnRGYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9u
dEZhY2UuY3BwCkBAIC03Nyw4ICs3NywxMCBAQCB2b2lkIENTU0ZvbnRGYWNlOjphcHBlbmRTb3Vy
Y2VzKENTU0ZvbnRGYWNlJiBmb250RmFjZSwgQ1NTVmFsdWVMaXN0JiBzcmNMaXN0LCBEbwogICAg
ICAgICAgICAgY29uc3QgU2V0dGluZ3MqIHNldHRpbmdzID0gZG9jdW1lbnQgPyAmZG9jdW1lbnQt
PnNldHRpbmdzKCkgOiBudWxscHRyOwogICAgICAgICAgICAgYm9vbCBhbGxvd0Rvd25sb2FkaW5n
ID0gZm91bmRTVkdGb250IHx8IChzZXR0aW5ncyAmJiBzZXR0aW5ncy0+ZG93bmxvYWRhYmxlQmlu
YXJ5Rm9udHNFbmFibGVkKCkpOwogICAgICAgICAgICAgaWYgKGFsbG93RG93bmxvYWRpbmcgJiYg
aXRlbS5pc1N1cHBvcnRlZEZvcm1hdCgpICYmIGRvY3VtZW50KSB7Ci0gICAgICAgICAgICAgICAg
aWYgKENhY2hlZEZvbnQqIGNhY2hlZEZvbnQgPSBpdGVtLmNhY2hlZEZvbnQoZG9jdW1lbnQsIGZv
dW5kU1ZHRm9udCwgaXNJbml0aWF0aW5nRWxlbWVudEluVXNlckFnZW50U2hhZG93VHJlZSkpCisg
ICAgICAgICAgICAgICAgaWYgKENhY2hlZEZvbnQqIGNhY2hlZEZvbnQgPSBpdGVtLmNhY2hlZEZv
bnQoZG9jdW1lbnQsIGZvdW5kU1ZHRm9udCwgaXNJbml0aWF0aW5nRWxlbWVudEluVXNlckFnZW50
U2hhZG93VHJlZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgY2FjaGVkRm9udC0+YWRkQ2xpZW50
KGRvY3VtZW50LT5mb250U2VsZWN0b3IoKSk7CiAgICAgICAgICAgICAgICAgICAgIHNvdXJjZSA9
IG1ha2VVbmlxdWU8Q1NTRm9udEZhY2VTb3VyY2U+KGZvbnRGYWNlLCBpdGVtLnJlc291cmNlKCks
IGNhY2hlZEZvbnQpOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAg
fSBlbHNlCiAgICAgICAgICAgICBzb3VyY2UgPSBtYWtlVW5pcXVlPENTU0ZvbnRGYWNlU291cmNl
Pihmb250RmFjZSwgaXRlbS5yZXNvdXJjZSgpLCBudWxscHRyLCBmb250RmFjZUVsZW1lbnQpOwpA
QCAtODksMTIgKzkxLDEyIEBAIHZvaWQgQ1NTRm9udEZhY2U6OmFwcGVuZFNvdXJjZXMoQ1NTRm9u
dEZhY2UmIGZvbnRGYWNlLCBDU1NWYWx1ZUxpc3QmIHNyY0xpc3QsIERvCiAgICAgZm9udEZhY2Uu
c291cmNlc1BvcHVsYXRlZCgpOwogfQogCi1DU1NGb250RmFjZTo6Q1NTRm9udEZhY2UoQ1NTRm9u
dFNlbGVjdG9yKiBmb250U2VsZWN0b3IsIFN0eWxlUnVsZUZvbnRGYWNlKiBjc3NDb25uZWN0aW9u
LCBGb250RmFjZSogd3JhcHBlciwgYm9vbCBpc0xvY2FsRmFsbGJhY2spCi0gICAgOiBDU1NGb250
RmFjZShmb250U2VsZWN0b3IgJiYgZm9udFNlbGVjdG9yLT5kb2N1bWVudCgpID8gJmZvbnRTZWxl
Y3Rvci0+ZG9jdW1lbnQoKS0+c2V0dGluZ3MoKSA6IG51bGxwdHIsIGNzc0Nvbm5lY3Rpb24sIHdy
YXBwZXIsIGlzTG9jYWxGYWxsYmFjaykKK1JlZjxDU1NGb250RmFjZT4gQ1NTRm9udEZhY2U6OmNy
ZWF0ZShDU1NGb250U2VsZWN0b3IqIGZvbnRTZWxlY3RvciwgU3R5bGVSdWxlRm9udEZhY2UqIGNz
c0Nvbm5lY3Rpb24sIEZvbnRGYWNlKiB3cmFwcGVyLCBib29sIGlzTG9jYWxGYWxsYmFjaykKIHsK
LSAgICBtX2ZvbnRTZWxlY3RvciA9IG1ha2VXZWFrUHRyKGZvbnRTZWxlY3Rvcik7IC8vIEZJWE1F
OiBJZGVhbGx5IHRoaXMgZGF0YSBtZW1iZXIgd291bGQgZ28gYXdheSAoaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODM1MSkuCisgICAgYXV0byByZXN1bHQgPSBhZG9w
dFJlZigqbmV3IENTU0ZvbnRGYWNlKChmb250U2VsZWN0b3IgJiYgZm9udFNlbGVjdG9yLT5kb2N1
bWVudCgpKSA/ICZmb250U2VsZWN0b3ItPmRvY3VtZW50KCktPnNldHRpbmdzKCkgOiBudWxscHRy
LCBjc3NDb25uZWN0aW9uLCB3cmFwcGVyLCBpc0xvY2FsRmFsbGJhY2spKTsKICAgICBpZiAoZm9u
dFNlbGVjdG9yKQotICAgICAgICBhZGRDbGllbnQoKmZvbnRTZWxlY3Rvcik7CisgICAgICAgIHJl
c3VsdC0+YWRkQ2xpZW50KCpmb250U2VsZWN0b3IpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAK
IENTU0ZvbnRGYWNlOjpDU1NGb250RmFjZShjb25zdCBTZXR0aW5ncyogc2V0dGluZ3MsIFN0eWxl
UnVsZUZvbnRGYWNlKiBjc3NDb25uZWN0aW9uLCBGb250RmFjZSogd3JhcHBlciwgYm9vbCBpc0xv
Y2FsRmFsbGJhY2spCkBAIC01NDgsMTEgKzU1MCwxOCBAQCB2b2lkIENTU0ZvbnRGYWNlOjpmb250
TG9hZGVkKENTU0ZvbnRGYWNlU291cmNlJikKICAgICBmb250TG9hZEV2ZW50T2NjdXJyZWQoKTsK
IH0KIAotdm9pZCBDU1NGb250RmFjZTo6b3Bwb3J0dW5pc3RpY2FsbHlTdGFydEZvbnREYXRhVVJM
TG9hZGluZyhDU1NGb250U2VsZWN0b3ImIGZvbnRTZWxlY3RvcikKK3ZvaWQgQ1NTRm9udEZhY2U6
Om9wcG9ydHVuaXN0aWNhbGx5U3RhcnRGb250RGF0YVVSTExvYWRpbmcoRG9jdW1lbnQqIGRvY3Vt
ZW50KQogewogICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gZ28gY3JhenkgaGVyZSBhbmQgYmxvdyB0
aGUgY2FjaGUuIFVzdWFsbHkgdGhlc2UgZGF0YSBVUkxzIGFyZSB0aGUgZmlyc3QgaXRlbSBpbiB0
aGUgc3JjOiBsaXN0LCBzbyBsZXQncyBqdXN0IGNoZWNrIHRoYXQgb25lLgogICAgIGlmICghbV9z
b3VyY2VzLmlzRW1wdHkoKSkKLSAgICAgICAgbV9zb3VyY2VzWzBdLT5vcHBvcnR1bmlzdGljYWxs
eVN0YXJ0Rm9udERhdGFVUkxMb2FkaW5nKGZvbnRTZWxlY3Rvcik7CisgICAgICAgIG1fc291cmNl
c1swXS0+b3Bwb3J0dW5pc3RpY2FsbHlTdGFydEZvbnREYXRhVVJMTG9hZGluZyhkb2N1bWVudCk7
Cit9CisKK0RvY3VtZW50KiBDU1NGb250RmFjZTo6ZG9jdW1lbnQoKQoreworICAgIGlmIChtX3dy
YXBwZXIgJiYgaXM8RG9jdW1lbnQ+KG1fd3JhcHBlci0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
KSkKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PERvY3VtZW50PihtX3dyYXBwZXItPnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSk7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIHNpemVfdCBDU1NG
b250RmFjZTo6cHVtcChFeHRlcm5hbFJlc291cmNlRG93bmxvYWRQb2xpY3kgcG9saWN5KQpAQCAt
NTc5LDcgKzU4OCw3IEBAIHNpemVfdCBDU1NGb250RmFjZTo6cHVtcChFeHRlcm5hbFJlc291cmNl
RG93bmxvYWRQb2xpY3kgcG9saWN5KQogICAgICAgICAgICAgaWYgKHBvbGljeSA9PSBFeHRlcm5h
bFJlc291cmNlRG93bmxvYWRQb2xpY3k6OkFsbG93IHx8ICFzb3VyY2UtPnJlcXVpcmVzRXh0ZXJu
YWxSZXNvdXJjZSgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKHBvbGljeSA9PSBFeHRlcm5hbFJl
c291cmNlRG93bmxvYWRQb2xpY3k6OkFsbG93ICYmIG1fc3RhdHVzID09IFN0YXR1czo6UGVuZGlu
ZykKICAgICAgICAgICAgICAgICAgICAgc2V0U3RhdHVzKFN0YXR1czo6TG9hZGluZyk7Ci0gICAg
ICAgICAgICAgICAgc291cmNlLT5sb2FkKG1fZm9udFNlbGVjdG9yLmdldCgpKTsKKyAgICAgICAg
ICAgICAgICBzb3VyY2UtPmxvYWQoZG9jdW1lbnQoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KIApAQCAtNjUxLDcgKzY2MCw3IEBAIFJlZlB0cjxGb250PiBDU1NGb250RmFjZTo6Zm9udChj
b25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbiwgYm9vbCBzeW50CiAgICAgZm9y
IChzaXplX3QgaSA9IHN0YXJ0SW5kZXg7IGkgPCBtX3NvdXJjZXMuc2l6ZSgpOyArK2kpIHsKICAg
ICAgICAgYXV0byYgc291cmNlID0gbV9zb3VyY2VzW2ldOwogICAgICAgICBpZiAoc291cmNlLT5z
dGF0dXMoKSA9PSBDU1NGb250RmFjZVNvdXJjZTo6U3RhdHVzOjpQZW5kaW5nICYmIChwb2xpY3kg
PT0gRXh0ZXJuYWxSZXNvdXJjZURvd25sb2FkUG9saWN5OjpBbGxvdyB8fCAhc291cmNlLT5yZXF1
aXJlc0V4dGVybmFsUmVzb3VyY2UoKSkpCi0gICAgICAgICAgICBzb3VyY2UtPmxvYWQobV9mb250
U2VsZWN0b3IuZ2V0KCkpOworICAgICAgICAgICAgc291cmNlLT5sb2FkKGRvY3VtZW50KCkpOwog
CiAgICAgICAgIHN3aXRjaCAoc291cmNlLT5zdGF0dXMoKSkgewogICAgICAgICBjYXNlIENTU0Zv
bnRGYWNlU291cmNlOjpTdGF0dXM6OlBlbmRpbmc6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTRm9udEZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5oCmlu
ZGV4IGYyNjJkMDVmN2Q3MGU1ZjkzY2NmM2E2ODVhZGYxNzRhYTM2NzQ3NzcuLjliOGZmOWY4NmIy
NDJjNDEzNWMxNjU0OGU5NGY2MmVhODhhNzZiODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NGb250RmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5o
CkBAIC02MCwxMCArNjAsNyBAQCBERUNMQVJFX0FMTE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklF
UihDU1NGb250RmFjZSk7CiBjbGFzcyBDU1NGb250RmFjZSBmaW5hbCA6IHB1YmxpYyBSZWZDb3Vu
dGVkPENTU0ZvbnRGYWNlPiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURURfV0lUSF9IRUFQ
X0lERU5USUZJRVIoQ1NTRm9udEZhY2UpOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8Q1NTRm9u
dEZhY2U+IGNyZWF0ZShDU1NGb250U2VsZWN0b3IqIGZvbnRTZWxlY3RvciwgU3R5bGVSdWxlRm9u
dEZhY2UqIGNzc0Nvbm5lY3Rpb24gPSBudWxscHRyLCBGb250RmFjZSogd3JhcHBlciA9IG51bGxw
dHIsIGJvb2wgaXNMb2NhbEZhbGxiYWNrID0gZmFsc2UpCi0gICAgewotICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBDU1NGb250RmFjZShmb250U2VsZWN0b3IsIGNzc0Nvbm5lY3Rpb24sIHdy
YXBwZXIsIGlzTG9jYWxGYWxsYmFjaykpOwotICAgIH0KKyAgICBzdGF0aWMgUmVmPENTU0ZvbnRG
YWNlPiBjcmVhdGUoQ1NTRm9udFNlbGVjdG9yKiwgU3R5bGVSdWxlRm9udEZhY2UqIGNzc0Nvbm5l
Y3Rpb24gPSBudWxscHRyLCBGb250RmFjZSogd3JhcHBlciA9IG51bGxwdHIsIGJvb2wgaXNMb2Nh
bEZhbGxiYWNrID0gZmFsc2UpOwogICAgIHZpcnR1YWwgfkNTU0ZvbnRGYWNlKCk7CiAKICAgICAv
LyBGSVhNRTogVGhlc2UgZnVuY3Rpb25zIGRvbid0IG5lZWQgdG8gaGF2ZSBib29sZWFuIHJldHVy
biB2YWx1ZXMuCkBAIC0xMTIsNyArMTA5LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBjb21wdXRl
RmFpbHVyZVN0YXRlKCkgY29uc3Q7CiAKLSAgICB2b2lkIG9wcG9ydHVuaXN0aWNhbGx5U3RhcnRG
b250RGF0YVVSTExvYWRpbmcoQ1NTRm9udFNlbGVjdG9yJik7CisgICAgdm9pZCBvcHBvcnR1bmlz
dGljYWxseVN0YXJ0Rm9udERhdGFVUkxMb2FkaW5nKERvY3VtZW50Kik7CiAKICAgICB2b2lkIGFk
b3B0U291cmNlKHN0ZDo6dW5pcXVlX3B0cjxDU1NGb250RmFjZVNvdXJjZT4mJik7CiAgICAgdm9p
ZCBzb3VyY2VzUG9wdWxhdGVkKCkgeyBtX3NvdXJjZXNQb3B1bGF0ZWQgPSB0cnVlOyB9CkBAIC0x
NjcsNyArMTY0LDYgQEAgcHVibGljOgogICAgIHZvaWQgc2V0RXJyb3JTdGF0ZSgpOwogCiBwcml2
YXRlOgotICAgIENTU0ZvbnRGYWNlKENTU0ZvbnRTZWxlY3RvciosIFN0eWxlUnVsZUZvbnRGYWNl
KiwgRm9udEZhY2UqLCBib29sIGlzTG9jYWxGYWxsYmFjayk7CiAgICAgQ1NTRm9udEZhY2UoY29u
c3QgU2V0dGluZ3MqLCBTdHlsZVJ1bGVGb250RmFjZSosIEZvbnRGYWNlKiwgYm9vbCBpc0xvY2Fs
RmFsbGJhY2spOwogCiAgICAgc2l6ZV90IHB1bXAoRXh0ZXJuYWxSZXNvdXJjZURvd25sb2FkUG9s
aWN5KTsKQEAgLTE3OSw2ICsxNzUsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgZm9udExvYWRFdmVu
dE9jY3VycmVkKCk7CiAgICAgdm9pZCB0aW1lb3V0RmlyZWQoKTsKIAorICAgIERvY3VtZW50KiBk
b2N1bWVudCgpOworCiAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbV9mYW1pbGllczsKICAgICBW
ZWN0b3I8VW5pY29kZVJhbmdlPiBtX3JhbmdlczsKIApAQCAtMTg2LDcgKzE4NCw2IEBAIHByaXZh
dGU6CiAgICAgRm9udExvYWRpbmdCZWhhdmlvciBtX2xvYWRpbmdCZWhhdmlvciB7IEZvbnRMb2Fk
aW5nQmVoYXZpb3I6OkF1dG8gfTsKIAogICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Q1NTRm9u
dEZhY2VTb3VyY2U+LCAwLCBDcmFzaE9uT3ZlcmZsb3csIDA+IG1fc291cmNlczsKLSAgICBXZWFr
UHRyPENTU0ZvbnRTZWxlY3Rvcj4gbV9mb250U2VsZWN0b3I7IC8vIEZJWE1FOiBJZGVhbGx5IHRo
aXMgZGF0YSBtZW1iZXIgd291bGQgZ28gYXdheSAoaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwODM1MSkuCiAgICAgUmVmUHRyPFN0eWxlUnVsZUZvbnRGYWNlPiBtX2Nz
c0Nvbm5lY3Rpb247CiAgICAgSGFzaFNldDxDbGllbnQqPiBtX2NsaWVudHM7CiAgICAgV2Vha1B0
cjxGb250RmFjZT4gbV93cmFwcGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0ZvbnRGYWNlU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJj
ZS5jcHAKaW5kZXggZTZlYTE4MTZmZmMzY2E2ZDA0NTAyM2E4ZGE3NzM0YmRhYzUyMjg2NC4uNDVj
Y2JhYjQ5ZmIwYzdiZDYwM2EyMGM4YTk4MGY1MGEwMzQ1NWY1NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwCkBAIC0xMDAsMTAgKzEwMCwxMCBAQCBib29sIENTU0Zv
bnRGYWNlU291cmNlOjpzaG91bGRJZ25vcmVGb250TG9hZENvbXBsZXRpb25zKCkgY29uc3QKICAg
ICByZXR1cm4gbV9mYWNlLnNob3VsZElnbm9yZUZvbnRMb2FkQ29tcGxldGlvbnMoKTsKIH0KIAot
dm9pZCBDU1NGb250RmFjZVNvdXJjZTo6b3Bwb3J0dW5pc3RpY2FsbHlTdGFydEZvbnREYXRhVVJM
TG9hZGluZyhDU1NGb250U2VsZWN0b3ImIGZvbnRTZWxlY3RvcikKK3ZvaWQgQ1NTRm9udEZhY2VT
b3VyY2U6Om9wcG9ydHVuaXN0aWNhbGx5U3RhcnRGb250RGF0YVVSTExvYWRpbmcoRG9jdW1lbnQq
IGRvY3VtZW50KQogewogICAgIGlmIChzdGF0dXMoKSA9PSBTdGF0dXM6OlBlbmRpbmcgJiYgbV9m
b250ICYmIG1fZm9udC0+dXJsKCkucHJvdG9jb2xJc0RhdGEoKSAmJiBtX2ZhbWlseU5hbWVPclVS
SS5sZW5ndGgoKSA8IE1CKQotICAgICAgICBsb2FkKCZmb250U2VsZWN0b3IpOworICAgICAgICBs
b2FkKGRvY3VtZW50KTsKIH0KIAogdm9pZCBDU1NGb250RmFjZVNvdXJjZTo6Zm9udExvYWRlZChD
YWNoZWRGb250JiBsb2FkZWRGb250KQpAQCAtMTMyLDEzICsxMzIsMTIgQEAgdm9pZCBDU1NGb250
RmFjZVNvdXJjZTo6Zm9udExvYWRlZChDYWNoZWRGb250JiBsb2FkZWRGb250KQogICAgIG1fZmFj
ZS5mb250TG9hZGVkKCp0aGlzKTsKIH0KIAotdm9pZCBDU1NGb250RmFjZVNvdXJjZTo6bG9hZChD
U1NGb250U2VsZWN0b3IqIGZvbnRTZWxlY3RvcikKK3ZvaWQgQ1NTRm9udEZhY2VTb3VyY2U6Omxv
YWQoRG9jdW1lbnQqIGRvY3VtZW50KQogewogICAgIHNldFN0YXR1cyhTdGF0dXM6OkxvYWRpbmcp
OwogCiAgICAgaWYgKG1fZm9udCkgewotICAgICAgICBBU1NFUlQoZm9udFNlbGVjdG9yKTsKLSAg
ICAgICAgZm9udFNlbGVjdG9yLT5iZWdpbkxvYWRpbmdGb250U29vbigqbV9mb250KTsKKyAgICAg
ICAgbV9mb250LT5yZXF1ZXN0TG9hZCgpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGJvb2wgc3Vj
Y2VzcyA9IGZhbHNlOwogICAgICAgICBpZiAobV9oYXNTVkdGb250RmFjZUVsZW1lbnQpIHsKQEAg
LTE2NywxMCArMTY2LDggQEAgdm9pZCBDU1NGb250RmFjZVNvdXJjZTo6bG9hZChDU1NGb250U2Vs
ZWN0b3IqIGZvbnRTZWxlY3RvcikKICAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRDb21w
dXRlZFNpemUoMSk7CiAgICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0U2hvdWxkQWxsb3dV
c2VySW5zdGFsbGVkRm9udHMobV9mYWNlLmFsbG93VXNlckluc3RhbGxlZEZvbnRzKCkpOwogICAg
ICAgICAgICAgc3VjY2VzcyA9IEZvbnRDYWNoZTo6c2luZ2xldG9uKCkuZm9udEZvckZhbWlseShm
b250RGVzY3JpcHRpb24sIG1fZmFtaWx5TmFtZU9yVVJJLCBudWxscHRyLCBGb250U2VsZWN0aW9u
U3BlY2lmaWVkQ2FwYWJpbGl0aWVzKCksIHRydWUpOwotICAgICAgICAgICAgaWYgKFJ1bnRpbWVF
bmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkud2ViQVBJU3RhdGlzdGljc0VuYWJsZWQo
KSkgewotICAgICAgICAgICAgICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IGZvbnRTZWxlY3Rvci0+
ZG9jdW1lbnQoKSkKLSAgICAgICAgICAgICAgICAgICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNo
YXJlZCgpLmxvZ0ZvbnRMb2FkKCpkb2N1bWVudCwgbV9mYW1pbHlOYW1lT3JVUkkuc3RyaW5nKCks
IHN1Y2Nlc3MpOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGRvY3VtZW50ICYmIFJ1
bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkud2ViQVBJU3RhdGlzdGljc0Vu
YWJsZWQoKSkKKyAgICAgICAgICAgICAgICBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCku
bG9nRm9udExvYWQoKmRvY3VtZW50LCBtX2ZhbWlseU5hbWVPclVSSS5zdHJpbmcoKSwgc3VjY2Vz
cyk7CiAgICAgICAgIH0KICAgICAgICAgc2V0U3RhdHVzKHN1Y2Nlc3MgPyBTdGF0dXM6OlN1Y2Nl
c3MgOiBTdGF0dXM6OkZhaWx1cmUpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NGb250RmFjZVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNl
U291cmNlLmgKaW5kZXggN2VhYjU5ODk1NjBhNDE2OThiZjY0MmMxZGNmYWFjNTk4Zjc2NmU2OS4u
ZGRlODYwOWI4NDc0ZWY3NTkwNmRjOGZmNjk1YTIxZjk5NGRlZDY1NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0ZvbnRGYWNlU291cmNlLmgKQEAgLTM1LDYgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBDU1NGb250RmFjZTsKIGNsYXNzIENTU0ZvbnRTZWxlY3RvcjsKK2NsYXNz
IERvY3VtZW50OwogY2xhc3MgRm9udDsKIHN0cnVjdCBGb250Q3VzdG9tUGxhdGZvcm1EYXRhOwog
Y2xhc3MgRm9udERlc2NyaXB0aW9uOwpAQCAtNjcsOSArNjgsOSBAQCBwdWJsaWM6CiAKICAgICBj
b25zdCBBdG9tU3RyaW5nJiBmYW1pbHlOYW1lT3JVUkkoKSBjb25zdCB7IHJldHVybiBtX2ZhbWls
eU5hbWVPclVSSTsgfQogCi0gICAgdm9pZCBvcHBvcnR1bmlzdGljYWxseVN0YXJ0Rm9udERhdGFV
UkxMb2FkaW5nKENTU0ZvbnRTZWxlY3RvciYpOworICAgIHZvaWQgb3Bwb3J0dW5pc3RpY2FsbHlT
dGFydEZvbnREYXRhVVJMTG9hZGluZyhEb2N1bWVudCopOwogCi0gICAgdm9pZCBsb2FkKENTU0Zv
bnRTZWxlY3RvciopOworICAgIHZvaWQgbG9hZChEb2N1bWVudCopOwogICAgIFJlZlB0cjxGb250
PiBmb250KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBz
eW50aGV0aWNJdGFsaWMsIGNvbnN0IEZvbnRGZWF0dXJlU2V0dGluZ3MmLCBGb250U2VsZWN0aW9u
U3BlY2lmaWVkQ2FwYWJpbGl0aWVzKTsKIAogICAgIENhY2hlZEZvbnQqIGNhY2hlZEZvbnQoKSBj
b25zdCB7IHJldHVybiBtX2ZvbnQuZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NGb250U2VsZWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxl
Y3Rvci5jcHAKaW5kZXggZDBjMjMzNjk2YTJmNmU3YTVlZjk3MmI3ZmU0ZTVlMTVhNmY4NjM5ZC4u
YjU2MTgxZGJmMzBiYTA5ODk1ZmRkZmIwMjE2OTM0OTQ3ZWY2ZjUwOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAKQEAgLTI0NSw3ICsyNDUsNyBAQCB2b2lkIENTU0ZvbnRT
ZWxlY3Rvcjo6b3Bwb3J0dW5pc3RpY2FsbHlTdGFydEZvbnREYXRhVVJMTG9hZGluZyhjb25zdCBG
b250Q2FzY2FkZQogICAgIGlmICghc2VnbWVudGVkRm9udEZhY2UpCiAgICAgICAgIHJldHVybjsK
ICAgICBmb3IgKGF1dG8mIGZhY2UgOiBzZWdtZW50ZWRGb250RmFjZS0+Y29uc3RpdHVlbnRGYWNl
cygpKQotICAgICAgICBmYWNlLT5vcHBvcnR1bmlzdGljYWxseVN0YXJ0Rm9udERhdGFVUkxMb2Fk
aW5nKCp0aGlzKTsKKyAgICAgICAgZmFjZS0+b3Bwb3J0dW5pc3RpY2FsbHlTdGFydEZvbnREYXRh
VVJMTG9hZGluZyhkb2N1bWVudCgpKTsKIH0KIAogdm9pZCBDU1NGb250U2VsZWN0b3I6OmZvbnRM
b2FkZWQoQ1NTRm9udEZhY2UmKQpAQCAtMzQ5LDcgKzM0OSw3IEBAIHZvaWQgQ1NTRm9udFNlbGVj
dG9yOjpjbGVhckRvY3VtZW50KCkKIAogICAgIENhY2hlZFJlc291cmNlTG9hZGVyJiBjYWNoZWRS
ZXNvdXJjZUxvYWRlciA9IG1fZG9jdW1lbnQtPmNhY2hlZFJlc291cmNlTG9hZGVyKCk7CiAgICAg
Zm9yIChhdXRvJiBmb250SGFuZGxlIDogbV9mb250c1RvQmVnaW5Mb2FkaW5nKSB7Ci0gICAgICAg
IC8vIEJhbGFuY2VzIGluY3JlbWVudFJlcXVlc3RDb3VudCgpIGluIGJlZ2luTG9hZGluZ0ZvbnRT
b29uKCkuCisgICAgICAgIC8vIEJhbGFuY2VzIGluY3JlbWVudFJlcXVlc3RDb3VudCgpIGluIGZv
bnRSZXF1ZXN0ZWQoKS4KICAgICAgICAgY2FjaGVkUmVzb3VyY2VMb2FkZXIuZGVjcmVtZW50UmVx
dWVzdENvdW50KCpmb250SGFuZGxlKTsKICAgICB9CiAgICAgbV9mb250c1RvQmVnaW5Mb2FkaW5n
LmNsZWFyKCk7CkBAIC0zNjAsNyArMzYwLDcgQEAgdm9pZCBDU1NGb250U2VsZWN0b3I6OmNsZWFy
RG9jdW1lbnQoKQogICAgIG1fY2xpZW50cy5jbGVhcigpOwogfQogCi12b2lkIENTU0ZvbnRTZWxl
Y3Rvcjo6YmVnaW5Mb2FkaW5nRm9udFNvb24oQ2FjaGVkRm9udCYgZm9udCkKK3ZvaWQgQ1NTRm9u
dFNlbGVjdG9yOjpmb250UmVxdWVzdGVkKENhY2hlZEZvbnQmIGZvbnQpCiB7CiAgICAgaWYgKCFt
X2RvY3VtZW50KQogICAgICAgICByZXR1cm47CkBAIC0zOTQsNyArMzk0LDcgQEAgdm9pZCBDU1NG
b250U2VsZWN0b3I6OmxvYWRQZW5kaW5nRm9udHMoKQogICAgIENhY2hlZFJlc291cmNlTG9hZGVy
JiBjYWNoZWRSZXNvdXJjZUxvYWRlciA9IG1fZG9jdW1lbnQtPmNhY2hlZFJlc291cmNlTG9hZGVy
KCk7CiAgICAgZm9yIChhdXRvJiBmb250SGFuZGxlIDogZm9udHNUb0JlZ2luTG9hZGluZykgewog
ICAgICAgICBmb250SGFuZGxlLT5iZWdpbkxvYWRJZk5lZWRlZChjYWNoZWRSZXNvdXJjZUxvYWRl
cik7Ci0gICAgICAgIC8vIEJhbGFuY2VzIGluY3JlbWVudFJlcXVlc3RDb3VudCgpIGluIGJlZ2lu
TG9hZGluZ0ZvbnRTb29uKCkuCisgICAgICAgIC8vIEJhbGFuY2VzIGluY3JlbWVudFJlcXVlc3RD
b3VudCgpIGluIGZvbnRSZXF1ZXN0ZWQoKS4KICAgICAgICAgY2FjaGVkUmVzb3VyY2VMb2FkZXIu
ZGVjcmVtZW50UmVxdWVzdENvdW50KCpmb250SGFuZGxlKTsKICAgICB9CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTRm9udFNlbGVjdG9yLmgKaW5kZXggZGE0MzE3MmRlMGY0MDQ2ZTcyNmUyZWNhMWMzODA1
NDQyNGE0ZGFmMS4uM2RhNjBjNDI4MTMxM2JjNDM0ZDAyNDAxMmQ2ZGUyYmVjZWJjZjRjMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuaApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1
ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgogI2luY2x1ZGUgIkNTU0ZvbnRGYWNlLmgiCiAjaW5jbHVk
ZSAiQ1NTRm9udEZhY2VTZXQuaCIKKyNpbmNsdWRlICJDYWNoZWRGb250Q2xpZW50LmgiCiAjaW5j
bHVkZSAiQ2FjaGVkUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJGb250LmgiCiAjaW5jbHVk
ZSAiRm9udFNlbGVjdG9yLmgiCkBAIC00OCw3ICs0OSw3IEBAIGNsYXNzIENhY2hlZEZvbnQ7CiBj
bGFzcyBEb2N1bWVudDsKIGNsYXNzIFN0eWxlUnVsZUZvbnRGYWNlOwogCi1jbGFzcyBDU1NGb250
U2VsZWN0b3IgZmluYWwgOiBwdWJsaWMgRm9udFNlbGVjdG9yLCBwdWJsaWMgQ1NTRm9udEZhY2U6
OkNsaWVudCwgcHVibGljIENhbk1ha2VXZWFrUHRyPENTU0ZvbnRTZWxlY3Rvcj4sIHB1YmxpYyBB
Y3RpdmVET01PYmplY3QgeworY2xhc3MgQ1NTRm9udFNlbGVjdG9yIGZpbmFsIDogcHVibGljIEZv
bnRTZWxlY3RvciwgcHVibGljIENTU0ZvbnRGYWNlOjpDbGllbnQsIHB1YmxpYyBDYWNoZWRGb250
Q2xpZW50LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8Q1NTRm9udFNlbGVjdG9yPiwgcHVibGljIEFj
dGl2ZURPTU9iamVjdCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxDU1NGb250U2VsZWN0b3I+
IGNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgewpAQCAtNzksNyArODAsNiBAQCBwdWJs
aWM6CiAKICAgICBEb2N1bWVudCogZG9jdW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2RvY3VtZW50
LmdldCgpOyB9CiAKLSAgICB2b2lkIGJlZ2luTG9hZGluZ0ZvbnRTb29uKENhY2hlZEZvbnQmKTsK
ICAgICB2b2lkIHN1c3BlbmRGb250TG9hZGluZ1RpbWVyKCk7CiAKICAgICBGb250RmFjZVNldCog
Zm9udEZhY2VTZXRJZkV4aXN0cygpOwpAQCAtMTA4LDYgKzEwOCwxMCBAQCBwcml2YXRlOgogICAg
IHZvaWQgZm9udE1vZGlmaWVkKCk7CiAgICAgdm9pZCBmb250TG9hZGluZ1RpbWVyRmlyZWQoKTsK
IAorICAgIC8vIENhY2hlZEZvbnRDbGllbnQKKyAgICB1c2luZyBDYWNoZWRGb250Q2xpZW50Ojpm
b250TG9hZGVkOworICAgIHZvaWQgZm9udFJlcXVlc3RlZChDYWNoZWRGb250JikgZmluYWw7CisK
ICAgICAvLyBBY3RpdmVET01PYmplY3QKICAgICB2b2lkIHN0b3AoKSBmaW5hbDsKICAgICB2b2lk
IHN1c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lvbikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKaW5kZXggOTc0MTllZWU3NDE5ZjgwYWFkYWZlODI0NTU5
MGRmZWQ2NGU5NzcyZS4uNmQ2ZGQzOGI5NDBiZjlmOGEyYjk0MjBhY2EyMGQyZmY1NjI2YjUwZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcApAQCAtNzEsNiAr
NzEsMTMgQEAgdm9pZCBDYWNoZWRGb250OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0
YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXQKICAgICBjaGVja05vdGlmeShtZXRyaWNz
KTsKIH0KIAordm9pZCBDYWNoZWRGb250OjpyZXF1ZXN0TG9hZCgpCit7CisgICAgQ2FjaGVkUmVz
b3VyY2VDbGllbnRXYWxrZXI8Q2FjaGVkRm9udENsaWVudD4gd2Fsa2VyKG1fY2xpZW50cyk7Cisg
ICAgd2hpbGUgKENhY2hlZEZvbnRDbGllbnQqIGNsaWVudCA9IHdhbGtlci5uZXh0KCkpCisgICAg
ICAgIGNsaWVudC0+Zm9udFJlcXVlc3RlZCgqdGhpcyk7Cit9CisKIHZvaWQgQ2FjaGVkRm9udDo6
YmVnaW5Mb2FkSWZOZWVkZWQoQ2FjaGVkUmVzb3VyY2VMb2FkZXImIGxvYWRlcikKIHsKICAgICBp
ZiAoIW1fbG9hZEluaXRpYXRlZCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZEZvbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRG
b250LmgKaW5kZXggNjI2Nzc4OGYxN2U1ZWI0MjBhNTk0NDg4NGM0NDVhMzBhMDdmOWY1Yy4uOWMx
MTQ4MjUxNmQ4MDg2MWJkYjM4MzQ0ZWU4NmYxMWJjOWU4ZTBiZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oCkBAIC00OCw2ICs0OCw3IEBAIHB1YmxpYzoKICAgICBD
YWNoZWRGb250KENhY2hlZFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBQQUw6OlNlc3Npb25JRCYs
IGNvbnN0IENvb2tpZUphciosIFR5cGUgPSBUeXBlOjpGb250UmVzb3VyY2UpOwogICAgIHZpcnR1
YWwgfkNhY2hlZEZvbnQoKTsKIAorICAgIHZvaWQgcmVxdWVzdExvYWQoKTsKICAgICB2b2lkIGJl
Z2luTG9hZElmTmVlZGVkKENhY2hlZFJlc291cmNlTG9hZGVyJik7CiAgICAgYm9vbCBzdGlsbE5l
ZWRzTG9hZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICFtX2xvYWRJbml0aWF0ZWQ7IH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnRDbGllbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250Q2xpZW50LmgKaW5kZXgg
NTBlNjNmNTljYTM0NDdjMjJhOTZmYzlmYzcxNjE4ZDMxYjZkMjBjMi4uOGNhZjg5Y2FhMzJhODA0
ODg5ZjliYThjNzdlYmRmNzJjMDk0Mzc0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZEZvbnRDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkRm9udENsaWVudC5oCkBAIC0zNyw2ICszNyw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgQ2FjaGVkUmVzb3VyY2VDbGllbnRUeXBlIGV4cGVjdGVkVHlwZSgpIHsgcmV0dXJuIEZv
bnRUeXBlOyB9CiAgICAgQ2FjaGVkUmVzb3VyY2VDbGllbnRUeXBlIHJlc291cmNlQ2xpZW50VHlw
ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGV4cGVjdGVkVHlwZSgpOyB9CiAgICAgdmlydHVh
bCB2b2lkIGZvbnRMb2FkZWQoQ2FjaGVkRm9udCYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBmb250
UmVxdWVzdGVkKENhY2hlZEZvbnQmKSB7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>
<flag name="commit-queue"
          id="438524"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420115</attachid>
            <date>2021-02-12 05:28:58 -0800</date>
            <delta_ts>2021-02-12 09:03:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208351-20210212132857.patch</filename>
            <type>text/plain</type>
            <size>18364</size>
            <attacher name="Chris Lord">clord</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNjUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTdmNDAwNTdhZDE2MmJl
YjY4YWI2ZGNjOWRlMWVhNDhmNmNiMGNiNi4uMTM2ZDk2NDFjOTc4MzU5ZTk4YmNmMDE2N2JiZGM5
NTNkMWY0MjNkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDIxLTAyLTExICBDaHJp
cyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KKworICAgICAgICBDU1NGb250RmFjZSBzaG91bGQg
bm90IG5lZWQgaXRzIG1fZm9udFNlbGVjdG9yIGRhdGEgbWVtYmVyCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDgzNTEKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgdGhlIGxhc3QgdXNlIG9mIG1f
Zm9udFNlbGVjdG9yIGZyb20gQ1NTRm9udEZhY2UuIEFkZGluZworICAgICAgICBDYWNoZWRGb250
Q2xpZW50Ojpmb250UmVxdWVzdGVkIGFsbG93cyB1cyB0byBhZGQgdGhlIEZvbnRTZWxlY3RvciBh
cyBhCisgICAgICAgIGNsaWVudCB3aGlsZSB3ZSBoYXZlIGFjY2VzcyB0byBib3RoIHRoZSBGb250
U2VsZWN0b3IgYW5kIHRoZSBDYWNoZWRGb250CisgICAgICAgIGluIENTU0ZvbnRGYWNlOjphcHBl
bmRTb3VyY2VzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoZXJlIGlzIG5vIGJl
aGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIGNzcy9DU1NGb250RmFjZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDU1NGb250RmFjZTo6YXBwZW5kU291cmNlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NGb250RmFjZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlOjpv
cHBvcnR1bmlzdGljYWxseVN0YXJ0Rm9udERhdGFVUkxMb2FkaW5nKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU0ZvbnRGYWNlOjpkb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFj
ZTo6cHVtcCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZTo6Zm9udCk6CisgICAgICAg
ICogY3NzL0NTU0ZvbnRGYWNlLmg6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU291cmNlOjpvcHBvcnR1bmlzdGljYWxs
eVN0YXJ0Rm9udERhdGFVUkxMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNl
U291cmNlOjpsb2FkKToKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTb3VyY2UuaDoKKyAgICAg
ICAgKiBjc3MvQ1NTRm9udFNlbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRT
ZWxlY3Rvcjo6fkNTU0ZvbnRTZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250U2Vs
ZWN0b3I6Om9wcG9ydHVuaXN0aWNhbGx5U3RhcnRGb250RGF0YVVSTExvYWRpbmcpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTRm9udFNlbGVjdG9yOjpjbGVhckRvY3VtZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU0ZvbnRTZWxlY3Rvcjo6d2lsbEJlZ2luTG9hZGluZ0ZvbnRTb29uKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU0ZvbnRTZWxlY3Rvcjo6Zm9udFJlcXVlc3RlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NGb250U2VsZWN0b3I6OmxvYWRQZW5kaW5nRm9udHMpOgorICAgICAgICAqIGNz
cy9DU1NGb250U2VsZWN0b3IuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRGb250OjpyZXF1ZXN0TG9hZCk6CisgICAgICAg
ICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkRm9udENsaWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRm9udENsaWVudDo6Zm9u
dFJlcXVlc3RlZCk6CisKIDIwMjEtMDItMTEgIENocmlzIExvcmQgIDxjbG9yZEBpZ2FsaWEuY29t
PgogCiAgICAgICAgIFJlbW92ZSBGb250U2VsZWN0b3IgZGVwZW5kZW5jZSBpbiBDU1NGb250RmFj
ZSB3aGVuIGNyZWF0aW5nIGEgbmV3IEZvbnRGYWNlIHdyYXBwZXIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9u
dEZhY2UuY3BwCmluZGV4IDQyODMyY2M0OWY0ZDNmMjAwODNhMjI4YTlhYmJhN2VjNzc5ODA1N2Qu
LjdlMjE5YjA3YWRmNDNkOWFkNjE2YTMzZTJiZDllZDU4ZmIwNGE0OTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0ZvbnRGYWNlLmNwcApAQCAtNzcsOCArNzcsMTAgQEAgdm9pZCBDU1NGb250RmFjZTo6YXBw
ZW5kU291cmNlcyhDU1NGb250RmFjZSYgZm9udEZhY2UsIENTU1ZhbHVlTGlzdCYgc3JjTGlzdCwg
RG8KICAgICAgICAgICAgIGNvbnN0IFNldHRpbmdzKiBzZXR0aW5ncyA9IGRvY3VtZW50ID8gJmRv
Y3VtZW50LT5zZXR0aW5ncygpIDogbnVsbHB0cjsKICAgICAgICAgICAgIGJvb2wgYWxsb3dEb3du
bG9hZGluZyA9IGZvdW5kU1ZHRm9udCB8fCAoc2V0dGluZ3MgJiYgc2V0dGluZ3MtPmRvd25sb2Fk
YWJsZUJpbmFyeUZvbnRzRW5hYmxlZCgpKTsKICAgICAgICAgICAgIGlmIChhbGxvd0Rvd25sb2Fk
aW5nICYmIGl0ZW0uaXNTdXBwb3J0ZWRGb3JtYXQoKSAmJiBkb2N1bWVudCkgewotICAgICAgICAg
ICAgICAgIGlmIChDYWNoZWRGb250KiBjYWNoZWRGb250ID0gaXRlbS5jYWNoZWRGb250KGRvY3Vt
ZW50LCBmb3VuZFNWR0ZvbnQsIGlzSW5pdGlhdGluZ0VsZW1lbnRJblVzZXJBZ2VudFNoYWRvd1Ry
ZWUpKQorICAgICAgICAgICAgICAgIGlmIChDYWNoZWRGb250KiBjYWNoZWRGb250ID0gaXRlbS5j
YWNoZWRGb250KGRvY3VtZW50LCBmb3VuZFNWR0ZvbnQsIGlzSW5pdGlhdGluZ0VsZW1lbnRJblVz
ZXJBZ2VudFNoYWRvd1RyZWUpKSB7CisgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LT5mb250
U2VsZWN0b3IoKS53aWxsQmVnaW5Mb2FkaW5nRm9udFNvb24oKmNhY2hlZEZvbnQpOwogICAgICAg
ICAgICAgICAgICAgICBzb3VyY2UgPSBtYWtlVW5pcXVlPENTU0ZvbnRGYWNlU291cmNlPihmb250
RmFjZSwgaXRlbS5yZXNvdXJjZSgpLCBjYWNoZWRGb250KTsKKyAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgc291cmNlID0gbWFrZVVu
aXF1ZTxDU1NGb250RmFjZVNvdXJjZT4oZm9udEZhY2UsIGl0ZW0ucmVzb3VyY2UoKSwgbnVsbHB0
ciwgZm9udEZhY2VFbGVtZW50KTsKQEAgLTg5LDEyICs5MSwxMiBAQCB2b2lkIENTU0ZvbnRGYWNl
OjphcHBlbmRTb3VyY2VzKENTU0ZvbnRGYWNlJiBmb250RmFjZSwgQ1NTVmFsdWVMaXN0JiBzcmNM
aXN0LCBEbwogICAgIGZvbnRGYWNlLnNvdXJjZXNQb3B1bGF0ZWQoKTsKIH0KIAotQ1NTRm9udEZh
Y2U6OkNTU0ZvbnRGYWNlKENTU0ZvbnRTZWxlY3RvciogZm9udFNlbGVjdG9yLCBTdHlsZVJ1bGVG
b250RmFjZSogY3NzQ29ubmVjdGlvbiwgRm9udEZhY2UqIHdyYXBwZXIsIGJvb2wgaXNMb2NhbEZh
bGxiYWNrKQotICAgIDogQ1NTRm9udEZhY2UoZm9udFNlbGVjdG9yICYmIGZvbnRTZWxlY3Rvci0+
ZG9jdW1lbnQoKSA/ICZmb250U2VsZWN0b3ItPmRvY3VtZW50KCktPnNldHRpbmdzKCkgOiBudWxs
cHRyLCBjc3NDb25uZWN0aW9uLCB3cmFwcGVyLCBpc0xvY2FsRmFsbGJhY2spCitSZWY8Q1NTRm9u
dEZhY2U+IENTU0ZvbnRGYWNlOjpjcmVhdGUoQ1NTRm9udFNlbGVjdG9yKiBmb250U2VsZWN0b3Is
IFN0eWxlUnVsZUZvbnRGYWNlKiBjc3NDb25uZWN0aW9uLCBGb250RmFjZSogd3JhcHBlciwgYm9v
bCBpc0xvY2FsRmFsbGJhY2spCiB7Ci0gICAgbV9mb250U2VsZWN0b3IgPSBtYWtlV2Vha1B0cihm
b250U2VsZWN0b3IpOyAvLyBGSVhNRTogSWRlYWxseSB0aGlzIGRhdGEgbWVtYmVyIHdvdWxkIGdv
IGF3YXkgKGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDgzNTEpLgor
ICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRSZWYoKm5ldyBDU1NGb250RmFjZSgoZm9udFNlbGVjdG9y
ICYmIGZvbnRTZWxlY3Rvci0+ZG9jdW1lbnQoKSkgPyAmZm9udFNlbGVjdG9yLT5kb2N1bWVudCgp
LT5zZXR0aW5ncygpIDogbnVsbHB0ciwgY3NzQ29ubmVjdGlvbiwgd3JhcHBlciwgaXNMb2NhbEZh
bGxiYWNrKSk7CiAgICAgaWYgKGZvbnRTZWxlY3RvcikKLSAgICAgICAgYWRkQ2xpZW50KCpmb250
U2VsZWN0b3IpOworICAgICAgICByZXN1bHQtPmFkZENsaWVudCgqZm9udFNlbGVjdG9yKTsKKyAg
ICByZXR1cm4gcmVzdWx0OwogfQogCiBDU1NGb250RmFjZTo6Q1NTRm9udEZhY2UoY29uc3QgU2V0
dGluZ3MqIHNldHRpbmdzLCBTdHlsZVJ1bGVGb250RmFjZSogY3NzQ29ubmVjdGlvbiwgRm9udEZh
Y2UqIHdyYXBwZXIsIGJvb2wgaXNMb2NhbEZhbGxiYWNrKQpAQCAtNTQ4LDExICs1NTAsMTggQEAg
dm9pZCBDU1NGb250RmFjZTo6Zm9udExvYWRlZChDU1NGb250RmFjZVNvdXJjZSYpCiAgICAgZm9u
dExvYWRFdmVudE9jY3VycmVkKCk7CiB9CiAKLXZvaWQgQ1NTRm9udEZhY2U6Om9wcG9ydHVuaXN0
aWNhbGx5U3RhcnRGb250RGF0YVVSTExvYWRpbmcoQ1NTRm9udFNlbGVjdG9yJiBmb250U2VsZWN0
b3IpCit2b2lkIENTU0ZvbnRGYWNlOjpvcHBvcnR1bmlzdGljYWxseVN0YXJ0Rm9udERhdGFVUkxM
b2FkaW5nKERvY3VtZW50KiBkb2N1bWVudCkKIHsKICAgICAvLyBXZSBkb24ndCB3YW50IHRvIGdv
IGNyYXp5IGhlcmUgYW5kIGJsb3cgdGhlIGNhY2hlLiBVc3VhbGx5IHRoZXNlIGRhdGEgVVJMcyBh
cmUgdGhlIGZpcnN0IGl0ZW0gaW4gdGhlIHNyYzogbGlzdCwgc28gbGV0J3MganVzdCBjaGVjayB0
aGF0IG9uZS4KICAgICBpZiAoIW1fc291cmNlcy5pc0VtcHR5KCkpCi0gICAgICAgIG1fc291cmNl
c1swXS0+b3Bwb3J0dW5pc3RpY2FsbHlTdGFydEZvbnREYXRhVVJMTG9hZGluZyhmb250U2VsZWN0
b3IpOworICAgICAgICBtX3NvdXJjZXNbMF0tPm9wcG9ydHVuaXN0aWNhbGx5U3RhcnRGb250RGF0
YVVSTExvYWRpbmcoZG9jdW1lbnQpOworfQorCitEb2N1bWVudCogQ1NTRm9udEZhY2U6OmRvY3Vt
ZW50KCkKK3sKKyAgICBpZiAobV93cmFwcGVyICYmIGlzPERvY3VtZW50PihtX3dyYXBwZXItPnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkpCisgICAgICAgIHJldHVybiBkb3duY2FzdDxEb2N1bWVu
dD4obV93cmFwcGVyLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOworICAgIHJldHVybiBudWxs
cHRyOwogfQogCiBzaXplX3QgQ1NTRm9udEZhY2U6OnB1bXAoRXh0ZXJuYWxSZXNvdXJjZURvd25s
b2FkUG9saWN5IHBvbGljeSkKQEAgLTU3OSw3ICs1ODgsNyBAQCBzaXplX3QgQ1NTRm9udEZhY2U6
OnB1bXAoRXh0ZXJuYWxSZXNvdXJjZURvd25sb2FkUG9saWN5IHBvbGljeSkKICAgICAgICAgICAg
IGlmIChwb2xpY3kgPT0gRXh0ZXJuYWxSZXNvdXJjZURvd25sb2FkUG9saWN5OjpBbGxvdyB8fCAh
c291cmNlLT5yZXF1aXJlc0V4dGVybmFsUmVzb3VyY2UoKSkgewogICAgICAgICAgICAgICAgIGlm
IChwb2xpY3kgPT0gRXh0ZXJuYWxSZXNvdXJjZURvd25sb2FkUG9saWN5OjpBbGxvdyAmJiBtX3N0
YXR1cyA9PSBTdGF0dXM6OlBlbmRpbmcpCiAgICAgICAgICAgICAgICAgICAgIHNldFN0YXR1cyhT
dGF0dXM6OkxvYWRpbmcpOwotICAgICAgICAgICAgICAgIHNvdXJjZS0+bG9hZChtX2ZvbnRTZWxl
Y3Rvci5nZXQoKSk7CisgICAgICAgICAgICAgICAgc291cmNlLT5sb2FkKGRvY3VtZW50KCkpOwog
ICAgICAgICAgICAgfQogICAgICAgICB9CiAKQEAgLTY1MSw3ICs2NjAsNyBAQCBSZWZQdHI8Rm9u
dD4gQ1NTRm9udEZhY2U6OmZvbnQoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250RGVzY3JpcHRp
b24sIGJvb2wgc3ludAogICAgIGZvciAoc2l6ZV90IGkgPSBzdGFydEluZGV4OyBpIDwgbV9zb3Vy
Y2VzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIGF1dG8mIHNvdXJjZSA9IG1fc291cmNlc1tpXTsK
ICAgICAgICAgaWYgKHNvdXJjZS0+c3RhdHVzKCkgPT0gQ1NTRm9udEZhY2VTb3VyY2U6OlN0YXR1
czo6UGVuZGluZyAmJiAocG9saWN5ID09IEV4dGVybmFsUmVzb3VyY2VEb3dubG9hZFBvbGljeTo6
QWxsb3cgfHwgIXNvdXJjZS0+cmVxdWlyZXNFeHRlcm5hbFJlc291cmNlKCkpKQotICAgICAgICAg
ICAgc291cmNlLT5sb2FkKG1fZm9udFNlbGVjdG9yLmdldCgpKTsKKyAgICAgICAgICAgIHNvdXJj
ZS0+bG9hZChkb2N1bWVudCgpKTsKIAogICAgICAgICBzd2l0Y2ggKHNvdXJjZS0+c3RhdHVzKCkp
IHsKICAgICAgICAgY2FzZSBDU1NGb250RmFjZVNvdXJjZTo6U3RhdHVzOjpQZW5kaW5nOgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTRm9udEZhY2UuaAppbmRleCBmMjYyZDA1ZjdkNzBlNWY5M2NjZjNhNjg1YWRmMTc0
YWEzNjc0Nzc3Li45YjhmZjlmODZiMjQyYzQxMzVjMTY1NDhlOTRmNjJlYTg4YTc2Yjg5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTRm9udEZhY2UuaApAQCAtNjAsMTAgKzYwLDcgQEAgREVDTEFSRV9BTExPQ0FU
T1JfV0lUSF9IRUFQX0lERU5USUZJRVIoQ1NTRm9udEZhY2UpOwogY2xhc3MgQ1NTRm9udEZhY2Ug
ZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxDU1NGb250RmFjZT4gewogICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEX1dJVEhfSEVBUF9JREVOVElGSUVSKENTU0ZvbnRGYWNlKTsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUmVmPENTU0ZvbnRGYWNlPiBjcmVhdGUoQ1NTRm9udFNlbGVjdG9yKiBmb250
U2VsZWN0b3IsIFN0eWxlUnVsZUZvbnRGYWNlKiBjc3NDb25uZWN0aW9uID0gbnVsbHB0ciwgRm9u
dEZhY2UqIHdyYXBwZXIgPSBudWxscHRyLCBib29sIGlzTG9jYWxGYWxsYmFjayA9IGZhbHNlKQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTRm9udEZhY2UoZm9udFNlbGVj
dG9yLCBjc3NDb25uZWN0aW9uLCB3cmFwcGVyLCBpc0xvY2FsRmFsbGJhY2spKTsKLSAgICB9Cisg
ICAgc3RhdGljIFJlZjxDU1NGb250RmFjZT4gY3JlYXRlKENTU0ZvbnRTZWxlY3RvciosIFN0eWxl
UnVsZUZvbnRGYWNlKiBjc3NDb25uZWN0aW9uID0gbnVsbHB0ciwgRm9udEZhY2UqIHdyYXBwZXIg
PSBudWxscHRyLCBib29sIGlzTG9jYWxGYWxsYmFjayA9IGZhbHNlKTsKICAgICB2aXJ0dWFsIH5D
U1NGb250RmFjZSgpOwogCiAgICAgLy8gRklYTUU6IFRoZXNlIGZ1bmN0aW9ucyBkb24ndCBuZWVk
IHRvIGhhdmUgYm9vbGVhbiByZXR1cm4gdmFsdWVzLgpAQCAtMTEyLDcgKzEwOSw3IEBAIHB1Ymxp
YzoKIAogICAgIGJvb2wgY29tcHV0ZUZhaWx1cmVTdGF0ZSgpIGNvbnN0OwogCi0gICAgdm9pZCBv
cHBvcnR1bmlzdGljYWxseVN0YXJ0Rm9udERhdGFVUkxMb2FkaW5nKENTU0ZvbnRTZWxlY3RvciYp
OworICAgIHZvaWQgb3Bwb3J0dW5pc3RpY2FsbHlTdGFydEZvbnREYXRhVVJMTG9hZGluZyhEb2N1
bWVudCopOwogCiAgICAgdm9pZCBhZG9wdFNvdXJjZShzdGQ6OnVuaXF1ZV9wdHI8Q1NTRm9udEZh
Y2VTb3VyY2U+JiYpOwogICAgIHZvaWQgc291cmNlc1BvcHVsYXRlZCgpIHsgbV9zb3VyY2VzUG9w
dWxhdGVkID0gdHJ1ZTsgfQpAQCAtMTY3LDcgKzE2NCw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dEVycm9yU3RhdGUoKTsKIAogcHJpdmF0ZToKLSAgICBDU1NGb250RmFjZShDU1NGb250U2VsZWN0
b3IqLCBTdHlsZVJ1bGVGb250RmFjZSosIEZvbnRGYWNlKiwgYm9vbCBpc0xvY2FsRmFsbGJhY2sp
OwogICAgIENTU0ZvbnRGYWNlKGNvbnN0IFNldHRpbmdzKiwgU3R5bGVSdWxlRm9udEZhY2UqLCBG
b250RmFjZSosIGJvb2wgaXNMb2NhbEZhbGxiYWNrKTsKIAogICAgIHNpemVfdCBwdW1wKEV4dGVy
bmFsUmVzb3VyY2VEb3dubG9hZFBvbGljeSk7CkBAIC0xNzksNiArMTc1LDggQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGZvbnRMb2FkRXZlbnRPY2N1cnJlZCgpOwogICAgIHZvaWQgdGltZW91dEZpcmVk
KCk7CiAKKyAgICBEb2N1bWVudCogZG9jdW1lbnQoKTsKKwogICAgIFJlZlB0cjxDU1NWYWx1ZUxp
c3Q+IG1fZmFtaWxpZXM7CiAgICAgVmVjdG9yPFVuaWNvZGVSYW5nZT4gbV9yYW5nZXM7CiAKQEAg
LTE4Niw3ICsxODQsNiBAQCBwcml2YXRlOgogICAgIEZvbnRMb2FkaW5nQmVoYXZpb3IgbV9sb2Fk
aW5nQmVoYXZpb3IgeyBGb250TG9hZGluZ0JlaGF2aW9yOjpBdXRvIH07CiAKICAgICBWZWN0b3I8
c3RkOjp1bmlxdWVfcHRyPENTU0ZvbnRGYWNlU291cmNlPiwgMCwgQ3Jhc2hPbk92ZXJmbG93LCAw
PiBtX3NvdXJjZXM7Ci0gICAgV2Vha1B0cjxDU1NGb250U2VsZWN0b3I+IG1fZm9udFNlbGVjdG9y
OyAvLyBGSVhNRTogSWRlYWxseSB0aGlzIGRhdGEgbWVtYmVyIHdvdWxkIGdvIGF3YXkgKGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDgzNTEpLgogICAgIFJlZlB0cjxT
dHlsZVJ1bGVGb250RmFjZT4gbV9jc3NDb25uZWN0aW9uOwogICAgIEhhc2hTZXQ8Q2xpZW50Kj4g
bV9jbGllbnRzOwogICAgIFdlYWtQdHI8Rm9udEZhY2U+IG1fd3JhcHBlcjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwCmluZGV4IGU2ZWExODE2ZmZjM2NhNmQwNDUwMjNh
OGRhNzczNGJkYWM1MjI4NjQuLjQ1Y2NiYWI0OWZiMGM3YmQ2MDNhMjBjOGE5ODBmNTBhMDM0NTVm
NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcApAQCAtMTAwLDEw
ICsxMDAsMTAgQEAgYm9vbCBDU1NGb250RmFjZVNvdXJjZTo6c2hvdWxkSWdub3JlRm9udExvYWRD
b21wbGV0aW9ucygpIGNvbnN0CiAgICAgcmV0dXJuIG1fZmFjZS5zaG91bGRJZ25vcmVGb250TG9h
ZENvbXBsZXRpb25zKCk7CiB9CiAKLXZvaWQgQ1NTRm9udEZhY2VTb3VyY2U6Om9wcG9ydHVuaXN0
aWNhbGx5U3RhcnRGb250RGF0YVVSTExvYWRpbmcoQ1NTRm9udFNlbGVjdG9yJiBmb250U2VsZWN0
b3IpCit2b2lkIENTU0ZvbnRGYWNlU291cmNlOjpvcHBvcnR1bmlzdGljYWxseVN0YXJ0Rm9udERh
dGFVUkxMb2FkaW5nKERvY3VtZW50KiBkb2N1bWVudCkKIHsKICAgICBpZiAoc3RhdHVzKCkgPT0g
U3RhdHVzOjpQZW5kaW5nICYmIG1fZm9udCAmJiBtX2ZvbnQtPnVybCgpLnByb3RvY29sSXNEYXRh
KCkgJiYgbV9mYW1pbHlOYW1lT3JVUkkubGVuZ3RoKCkgPCBNQikKLSAgICAgICAgbG9hZCgmZm9u
dFNlbGVjdG9yKTsKKyAgICAgICAgbG9hZChkb2N1bWVudCk7CiB9CiAKIHZvaWQgQ1NTRm9udEZh
Y2VTb3VyY2U6OmZvbnRMb2FkZWQoQ2FjaGVkRm9udCYgbG9hZGVkRm9udCkKQEAgLTEzMiwxMyAr
MTMyLDEyIEBAIHZvaWQgQ1NTRm9udEZhY2VTb3VyY2U6OmZvbnRMb2FkZWQoQ2FjaGVkRm9udCYg
bG9hZGVkRm9udCkKICAgICBtX2ZhY2UuZm9udExvYWRlZCgqdGhpcyk7CiB9CiAKLXZvaWQgQ1NT
Rm9udEZhY2VTb3VyY2U6OmxvYWQoQ1NTRm9udFNlbGVjdG9yKiBmb250U2VsZWN0b3IpCit2b2lk
IENTU0ZvbnRGYWNlU291cmNlOjpsb2FkKERvY3VtZW50KiBkb2N1bWVudCkKIHsKICAgICBzZXRT
dGF0dXMoU3RhdHVzOjpMb2FkaW5nKTsKIAogICAgIGlmIChtX2ZvbnQpIHsKLSAgICAgICAgQVNT
RVJUKGZvbnRTZWxlY3Rvcik7Ci0gICAgICAgIGZvbnRTZWxlY3Rvci0+YmVnaW5Mb2FkaW5nRm9u
dFNvb24oKm1fZm9udCk7CisgICAgICAgIG1fZm9udC0+cmVxdWVzdExvYWQoKTsKICAgICB9IGVs
c2UgewogICAgICAgICBib29sIHN1Y2Nlc3MgPSBmYWxzZTsKICAgICAgICAgaWYgKG1faGFzU1ZH
Rm9udEZhY2VFbGVtZW50KSB7CkBAIC0xNjcsMTAgKzE2Niw4IEBAIHZvaWQgQ1NTRm9udEZhY2VT
b3VyY2U6OmxvYWQoQ1NTRm9udFNlbGVjdG9yKiBmb250U2VsZWN0b3IpCiAgICAgICAgICAgICBm
b250RGVzY3JpcHRpb24uc2V0Q29tcHV0ZWRTaXplKDEpOwogICAgICAgICAgICAgZm9udERlc2Ny
aXB0aW9uLnNldFNob3VsZEFsbG93VXNlckluc3RhbGxlZEZvbnRzKG1fZmFjZS5hbGxvd1VzZXJJ
bnN0YWxsZWRGb250cygpKTsKICAgICAgICAgICAgIHN1Y2Nlc3MgPSBGb250Q2FjaGU6OnNpbmds
ZXRvbigpLmZvbnRGb3JGYW1pbHkoZm9udERlc2NyaXB0aW9uLCBtX2ZhbWlseU5hbWVPclVSSSwg
bnVsbHB0ciwgRm9udFNlbGVjdGlvblNwZWNpZmllZENhcGFiaWxpdGllcygpLCB0cnVlKTsKLSAg
ICAgICAgICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndl
YkFQSVN0YXRpc3RpY3NFbmFibGVkKCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoYXV0byogZG9j
dW1lbnQgPSBmb250U2VsZWN0b3ItPmRvY3VtZW50KCkpCi0gICAgICAgICAgICAgICAgICAgIFJl
c291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQoKS5sb2dGb250TG9hZCgqZG9jdW1lbnQsIG1fZmFt
aWx5TmFtZU9yVVJJLnN0cmluZygpLCBzdWNjZXNzKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGlmIChkb2N1bWVudCAmJiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJl
cygpLndlYkFQSVN0YXRpc3RpY3NFbmFibGVkKCkpCisgICAgICAgICAgICAgICAgUmVzb3VyY2VM
b2FkT2JzZXJ2ZXI6OnNoYXJlZCgpLmxvZ0ZvbnRMb2FkKCpkb2N1bWVudCwgbV9mYW1pbHlOYW1l
T3JVUkkuc3RyaW5nKCksIHN1Y2Nlc3MpOwogICAgICAgICB9CiAgICAgICAgIHNldFN0YXR1cyhz
dWNjZXNzID8gU3RhdHVzOjpTdWNjZXNzIDogU3RhdHVzOjpGYWlsdXJlKTsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5oCmluZGV4IDdlYWI1OTg5NTYwYTQxNjk4YmY2
NDJjMWRjZmFhYzU5OGY3NjZlNjkuLmRkZTg2MDliODQ3NGVmNzU5MDZkYzhmZjY5NWEyMWY5OTRk
ZWQ2NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5oCkBAIC0zNSw2ICsz
NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ1NTRm9udEZhY2U7CiBjbGFzcyBD
U1NGb250U2VsZWN0b3I7CitjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEZvbnQ7CiBzdHJ1Y3QgRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YTsKIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKQEAgLTY3LDkgKzY4
LDkgQEAgcHVibGljOgogCiAgICAgY29uc3QgQXRvbVN0cmluZyYgZmFtaWx5TmFtZU9yVVJJKCkg
Y29uc3QgeyByZXR1cm4gbV9mYW1pbHlOYW1lT3JVUkk7IH0KIAotICAgIHZvaWQgb3Bwb3J0dW5p
c3RpY2FsbHlTdGFydEZvbnREYXRhVVJMTG9hZGluZyhDU1NGb250U2VsZWN0b3ImKTsKKyAgICB2
b2lkIG9wcG9ydHVuaXN0aWNhbGx5U3RhcnRGb250RGF0YVVSTExvYWRpbmcoRG9jdW1lbnQqKTsK
IAotICAgIHZvaWQgbG9hZChDU1NGb250U2VsZWN0b3IqKTsKKyAgICB2b2lkIGxvYWQoRG9jdW1l
bnQqKTsKICAgICBSZWZQdHI8Rm9udD4gZm9udChjb25zdCBGb250RGVzY3JpcHRpb24mLCBib29s
IHN5bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhldGljSXRhbGljLCBjb25zdCBGb250RmVhdHVyZVNl
dHRpbmdzJiwgRm9udFNlbGVjdGlvblNwZWNpZmllZENhcGFiaWxpdGllcyk7CiAKICAgICBDYWNo
ZWRGb250KiBjYWNoZWRGb250KCkgY29uc3QgeyByZXR1cm4gbV9mb250LmdldCgpOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuY3BwCmluZGV4IGQwYzIzMzY5NmEyZjZlN2E1ZWY5
NzJiN2ZlNGU1ZTE1YTZmODYzOWQuLjExNjA2MzcxZGYyMWYyYTBkNzA2OGNiODQ4NWZkMGQ5NTQ5
ZDZiZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuY3BwCkBAIC04Miw2ICs4
Miw4IEBAIENTU0ZvbnRTZWxlY3Rvcjo6fkNTU0ZvbnRTZWxlY3RvcigpCiB7CiAgICAgTE9HKEZv
bnRzLCAiQ1NTRm9udFNlbGVjdG9yICVwIGR0b3IiLCB0aGlzKTsKIAorICAgIGZvciAoYXV0byog
Zm9udCA6IG1fZm9udHNMb2FkaW5nU29vbikKKyAgICAgICAgZm9udC0+cmVtb3ZlQ2xpZW50KCp0
aGlzKTsKICAgICBjbGVhckRvY3VtZW50KCk7CiAgICAgRm9udENhY2hlOjpzaW5nbGV0b24oKS5y
ZW1vdmVDbGllbnQoKnRoaXMpOwogfQpAQCAtMjQ1LDcgKzI0Nyw3IEBAIHZvaWQgQ1NTRm9udFNl
bGVjdG9yOjpvcHBvcnR1bmlzdGljYWxseVN0YXJ0Rm9udERhdGFVUkxMb2FkaW5nKGNvbnN0IEZv
bnRDYXNjYWRlCiAgICAgaWYgKCFzZWdtZW50ZWRGb250RmFjZSkKICAgICAgICAgcmV0dXJuOwog
ICAgIGZvciAoYXV0byYgZmFjZSA6IHNlZ21lbnRlZEZvbnRGYWNlLT5jb25zdGl0dWVudEZhY2Vz
KCkpCi0gICAgICAgIGZhY2UtPm9wcG9ydHVuaXN0aWNhbGx5U3RhcnRGb250RGF0YVVSTExvYWRp
bmcoKnRoaXMpOworICAgICAgICBmYWNlLT5vcHBvcnR1bmlzdGljYWxseVN0YXJ0Rm9udERhdGFV
UkxMb2FkaW5nKGRvY3VtZW50KCkpOwogfQogCiB2b2lkIENTU0ZvbnRTZWxlY3Rvcjo6Zm9udExv
YWRlZChDU1NGb250RmFjZSYpCkBAIC0zNDksNyArMzUxLDcgQEAgdm9pZCBDU1NGb250U2VsZWN0
b3I6OmNsZWFyRG9jdW1lbnQoKQogCiAgICAgQ2FjaGVkUmVzb3VyY2VMb2FkZXImIGNhY2hlZFJl
c291cmNlTG9hZGVyID0gbV9kb2N1bWVudC0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKTsKICAgICBm
b3IgKGF1dG8mIGZvbnRIYW5kbGUgOiBtX2ZvbnRzVG9CZWdpbkxvYWRpbmcpIHsKLSAgICAgICAg
Ly8gQmFsYW5jZXMgaW5jcmVtZW50UmVxdWVzdENvdW50KCkgaW4gYmVnaW5Mb2FkaW5nRm9udFNv
b24oKS4KKyAgICAgICAgLy8gQmFsYW5jZXMgaW5jcmVtZW50UmVxdWVzdENvdW50KCkgaW4gZm9u
dFJlcXVlc3RlZCgpLgogICAgICAgICBjYWNoZWRSZXNvdXJjZUxvYWRlci5kZWNyZW1lbnRSZXF1
ZXN0Q291bnQoKmZvbnRIYW5kbGUpOwogICAgIH0KICAgICBtX2ZvbnRzVG9CZWdpbkxvYWRpbmcu
Y2xlYXIoKTsKQEAgLTM2MCwxMSArMzYyLDE5IEBAIHZvaWQgQ1NTRm9udFNlbGVjdG9yOjpjbGVh
ckRvY3VtZW50KCkKICAgICBtX2NsaWVudHMuY2xlYXIoKTsKIH0KIAotdm9pZCBDU1NGb250U2Vs
ZWN0b3I6OmJlZ2luTG9hZGluZ0ZvbnRTb29uKENhY2hlZEZvbnQmIGZvbnQpCit2b2lkIENTU0Zv
bnRTZWxlY3Rvcjo6d2lsbEJlZ2luTG9hZGluZ0ZvbnRTb29uKENhY2hlZEZvbnQmIGZvbnQpCit7
CisgICAgbV9mb250c0xvYWRpbmdTb29uLmFkZCgmZm9udCk7CisgICAgZm9udC5hZGRDbGllbnQo
KnRoaXMpOworfQorCit2b2lkIENTU0ZvbnRTZWxlY3Rvcjo6Zm9udFJlcXVlc3RlZChDYWNoZWRG
b250JiBmb250KQogewogICAgIGlmICghbV9kb2N1bWVudCkKICAgICAgICAgcmV0dXJuOwogCisg
ICAgZm9udC5yZW1vdmVDbGllbnQoKnRoaXMpOworICAgIG1fZm9udHNMb2FkaW5nU29vbi5yZW1v
dmUoJmZvbnQpOwogICAgIG1fZm9udHNUb0JlZ2luTG9hZGluZy5hcHBlbmQoJmZvbnQpOwogICAg
IC8vIEluY3JlbWVudCB0aGUgcmVxdWVzdCBjb3VudCBub3csIGluIG9yZGVyIHRvIHByZXZlbnQg
ZGlkRmluaXNoTG9hZCBmcm9tIGJlaW5nIGRpc3BhdGNoZWQKICAgICAvLyBhZnRlciB0aGlzIGZv
bnQgaGFzIGJlZW4gcmVxdWVzdGVkIGJ1dCBiZWZvcmUgaXQgYmVnYW4gbG9hZGluZy4gQmFsYW5j
ZWQgYnkKQEAgLTM5NCw3ICs0MDQsNyBAQCB2b2lkIENTU0ZvbnRTZWxlY3Rvcjo6bG9hZFBlbmRp
bmdGb250cygpCiAgICAgQ2FjaGVkUmVzb3VyY2VMb2FkZXImIGNhY2hlZFJlc291cmNlTG9hZGVy
ID0gbV9kb2N1bWVudC0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKTsKICAgICBmb3IgKGF1dG8mIGZv
bnRIYW5kbGUgOiBmb250c1RvQmVnaW5Mb2FkaW5nKSB7CiAgICAgICAgIGZvbnRIYW5kbGUtPmJl
Z2luTG9hZElmTmVlZGVkKGNhY2hlZFJlc291cmNlTG9hZGVyKTsKLSAgICAgICAgLy8gQmFsYW5j
ZXMgaW5jcmVtZW50UmVxdWVzdENvdW50KCkgaW4gYmVnaW5Mb2FkaW5nRm9udFNvb24oKS4KKyAg
ICAgICAgLy8gQmFsYW5jZXMgaW5jcmVtZW50UmVxdWVzdENvdW50KCkgaW4gZm9udFJlcXVlc3Rl
ZCgpLgogICAgICAgICBjYWNoZWRSZXNvdXJjZUxvYWRlci5kZWNyZW1lbnRSZXF1ZXN0Q291bnQo
KmZvbnRIYW5kbGUpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NGb250U2VsZWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuaApp
bmRleCBkYTQzMTcyZGUwZjQwNDZlNzI2ZTJlY2ExYzM4MDU0NDI0YTRkYWYxLi45ODEwZTMxMWUz
N2E5Mzc1NDI0MTczMzk4Y2FjOTBmYmEyNDU5Y2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRT
ZWxlY3Rvci5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0Lmgi
CiAjaW5jbHVkZSAiQ1NTRm9udEZhY2UuaCIKICNpbmNsdWRlICJDU1NGb250RmFjZVNldC5oIgor
I2luY2x1ZGUgIkNhY2hlZEZvbnRDbGllbnQuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUhh
bmRsZS5oIgogI2luY2x1ZGUgIkZvbnQuaCIKICNpbmNsdWRlICJGb250U2VsZWN0b3IuaCIKQEAg
LTQ4LDcgKzQ5LDcgQEAgY2xhc3MgQ2FjaGVkRm9udDsKIGNsYXNzIERvY3VtZW50OwogY2xhc3Mg
U3R5bGVSdWxlRm9udEZhY2U7CiAKLWNsYXNzIENTU0ZvbnRTZWxlY3RvciBmaW5hbCA6IHB1Ymxp
YyBGb250U2VsZWN0b3IsIHB1YmxpYyBDU1NGb250RmFjZTo6Q2xpZW50LCBwdWJsaWMgQ2FuTWFr
ZVdlYWtQdHI8Q1NTRm9udFNlbGVjdG9yPiwgcHVibGljIEFjdGl2ZURPTU9iamVjdCB7CitjbGFz
cyBDU1NGb250U2VsZWN0b3IgZmluYWwgOiBwdWJsaWMgRm9udFNlbGVjdG9yLCBwdWJsaWMgQ1NT
Rm9udEZhY2U6OkNsaWVudCwgcHVibGljIENhY2hlZEZvbnRDbGllbnQsIHB1YmxpYyBDYW5NYWtl
V2Vha1B0cjxDU1NGb250U2VsZWN0b3I+LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgUmVmPENTU0ZvbnRTZWxlY3Rvcj4gY3JlYXRlKERvY3VtZW50JiBkb2N1
bWVudCkKICAgICB7CkBAIC03OSw3ICs4MCw3IEBAIHB1YmxpYzoKIAogICAgIERvY3VtZW50KiBk
b2N1bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZG9jdW1lbnQuZ2V0KCk7IH0KIAotICAgIHZvaWQg
YmVnaW5Mb2FkaW5nRm9udFNvb24oQ2FjaGVkRm9udCYpOworICAgIHZvaWQgd2lsbEJlZ2luTG9h
ZGluZ0ZvbnRTb29uKENhY2hlZEZvbnQmKTsKICAgICB2b2lkIHN1c3BlbmRGb250TG9hZGluZ1Rp
bWVyKCk7CiAKICAgICBGb250RmFjZVNldCogZm9udEZhY2VTZXRJZkV4aXN0cygpOwpAQCAtMTA4
LDYgKzEwOSwxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgZm9udE1vZGlmaWVkKCk7CiAgICAgdm9p
ZCBmb250TG9hZGluZ1RpbWVyRmlyZWQoKTsKIAorICAgIC8vIENhY2hlZEZvbnRDbGllbnQKKyAg
ICB1c2luZyBDYWNoZWRGb250Q2xpZW50Ojpmb250TG9hZGVkOworICAgIHZvaWQgZm9udFJlcXVl
c3RlZChDYWNoZWRGb250JikgZmluYWw7CisKICAgICAvLyBBY3RpdmVET01PYmplY3QKICAgICB2
b2lkIHN0b3AoKSBmaW5hbDsKICAgICB2b2lkIHN1c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lvbikg
ZmluYWw7CkBAIC0xMjUsNiArMTMwLDcgQEAgcHJpdmF0ZToKICAgICBSZWY8Q1NTRm9udEZhY2VT
ZXQ+IG1fY3NzRm9udEZhY2VTZXQ7CiAgICAgSGFzaFNldDxGb250U2VsZWN0b3JDbGllbnQqPiBt
X2NsaWVudHM7CiAKKyAgICBIYXNoU2V0PENhY2hlZEZvbnQqPiBtX2ZvbnRzTG9hZGluZ1Nvb247
CiAgICAgVmVjdG9yPENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZEZvbnQ+PiBtX2ZvbnRzVG9C
ZWdpbkxvYWRpbmc7CiAgICAgSGFzaFNldDxSZWZQdHI8Q1NTRm9udEZhY2U+PiBtX2Nzc0Nvbm5l
Y3Rpb25zUG9zc2libHlUb1JlbW92ZTsKICAgICBIYXNoU2V0PFJlZlB0cjxTdHlsZVJ1bGVGb250
RmFjZT4+IG1fY3NzQ29ubmVjdGlvbnNFbmNvdW50ZXJlZER1cmluZ0J1aWxkOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCmluZGV4IDk3NDE5ZWVlNzQxOWY4MGFh
ZGFmZTgyNDU1OTBkZmVkNjRlOTc3MmUuLjZkNmRkMzhiOTQwYmY5ZjhhMmI5NDIwYWNhMjBkMmZm
NTYyNmI1MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRG
b250LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAK
QEAgLTcxLDYgKzcxLDEzIEBAIHZvaWQgQ2FjaGVkRm9udDo6ZmluaXNoTG9hZGluZyhTaGFyZWRC
dWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0CiAgICAgY2hlY2tOb3Rp
ZnkobWV0cmljcyk7CiB9CiAKK3ZvaWQgQ2FjaGVkRm9udDo6cmVxdWVzdExvYWQoKQoreworICAg
IENhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyPENhY2hlZEZvbnRDbGllbnQ+IHdhbGtlcihtX2Ns
aWVudHMpOworICAgIHdoaWxlIChDYWNoZWRGb250Q2xpZW50KiBjbGllbnQgPSB3YWxrZXIubmV4
dCgpKQorICAgICAgICBjbGllbnQtPmZvbnRSZXF1ZXN0ZWQoKnRoaXMpOworfQorCiB2b2lkIENh
Y2hlZEZvbnQ6OmJlZ2luTG9hZElmTmVlZGVkKENhY2hlZFJlc291cmNlTG9hZGVyJiBsb2FkZXIp
CiB7CiAgICAgaWYgKCFtX2xvYWRJbml0aWF0ZWQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkRm9udC5oCmluZGV4IDYyNjc3ODhmMTdlNWViNDIwYTU5NDQ4ODRjNDQ1YTMwYTA3
ZjlmNWMuLjljMTE0ODI1MTZkODA4NjFiZGIzODM0NGVlODZmMTFiYzllOGUwYmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaApAQCAtNDgsNiArNDgsNyBAQCBwdWJs
aWM6CiAgICAgQ2FjaGVkRm9udChDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUEFMOjpT
ZXNzaW9uSUQmLCBjb25zdCBDb29raWVKYXIqLCBUeXBlID0gVHlwZTo6Rm9udFJlc291cmNlKTsK
ICAgICB2aXJ0dWFsIH5DYWNoZWRGb250KCk7CiAKKyAgICB2b2lkIHJlcXVlc3RMb2FkKCk7CiAg
ICAgdm9pZCBiZWdpbkxvYWRJZk5lZWRlZChDYWNoZWRSZXNvdXJjZUxvYWRlciYpOwogICAgIGJv
b2wgc3RpbGxOZWVkc0xvYWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAhbV9sb2FkSW5pdGlh
dGVkOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRG
b250Q2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udENsaWVu
dC5oCmluZGV4IDUwZTYzZjU5Y2EzNDQ3YzIyYTk2ZmM5ZmM3MTYxOGQzMWI2ZDIwYzIuLjhjYWY4
OWNhYTMyYTgwNDg4OWY5YmE4Yzc3ZWJkZjcyYzA5NDM3NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnRDbGllbnQuaApAQCAtMzcsNiArMzcsNyBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIENhY2hlZFJlc291cmNlQ2xpZW50VHlwZSBleHBlY3RlZFR5cGUoKSB7
IHJldHVybiBGb250VHlwZTsgfQogICAgIENhY2hlZFJlc291cmNlQ2xpZW50VHlwZSByZXNvdXJj
ZUNsaWVudFR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBleHBlY3RlZFR5cGUoKTsgfQog
ICAgIHZpcnR1YWwgdm9pZCBmb250TG9hZGVkKENhY2hlZEZvbnQmKSB7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgZm9udFJlcXVlc3RlZChDYWNoZWRGb250JikgeyB9CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420132</attachid>
            <date>2021-02-12 09:03:51 -0800</date>
            <delta_ts>2021-02-15 01:35:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208351-20210212170350.patch</filename>
            <type>text/plain</type>
            <size>18038</size>
            <attacher name="Chris Lord">clord</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNjUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTdmNDAwNTdhZDE2MmJl
YjY4YWI2ZGNjOWRlMWVhNDhmNmNiMGNiNi4uY2FhMzI1YmE1ZDRjMThiNzM3OTJlMWZhZTI3ZDEy
YWY1OTMyYTdiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDIxLTAyLTExICBDaHJp
cyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KKworICAgICAgICBDU1NGb250RmFjZSBzaG91bGQg
bm90IG5lZWQgaXRzIG1fZm9udFNlbGVjdG9yIGRhdGEgbWVtYmVyCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDgzNTEKKworICAgICAgICBSZXZpZXdl
ZCBieSBNeWxlcyBDLiBNYXhmaWVsZC4KKworICAgICAgICBSZW1vdmUgdGhlIGxhc3QgdXNlIG9m
IG1fZm9udFNlbGVjdG9yIGZyb20gQ1NTRm9udEZhY2UuIEFkZGluZworICAgICAgICBDYWNoZWRG
b250Q2xpZW50Ojpmb250UmVxdWVzdGVkIGFsbG93cyB1cyB0byBhZGQgdGhlIEZvbnRTZWxlY3Rv
ciBhcyBhCisgICAgICAgIGNsaWVudCB3aGlsZSB3ZSBoYXZlIGFjY2VzcyB0byBib3RoIHRoZSBG
b250U2VsZWN0b3IgYW5kIHRoZSBDYWNoZWRGb250CisgICAgICAgIGluIENTU0ZvbnRGYWNlOjph
cHBlbmRTb3VyY2VzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoZXJlIGlzIG5v
IGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIGNzcy9DU1NGb250RmFjZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NGb250RmFjZTo6YXBwZW5kU291cmNlcyk6CisgICAgICAgIChXZWJD
b3JlOjpDU1NGb250RmFjZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNl
OjpvcHBvcnR1bmlzdGljYWxseVN0YXJ0Rm9udERhdGFVUkxMb2FkaW5nKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU0ZvbnRGYWNlOjpkb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250
RmFjZTo6cHVtcCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZTo6Zm9udCk6CisgICAg
ICAgICogY3NzL0NTU0ZvbnRGYWNlLmg6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU291cmNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU291cmNlOjpvcHBvcnR1bmlzdGlj
YWxseVN0YXJ0Rm9udERhdGFVUkxMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRG
YWNlU291cmNlOjpsb2FkKToKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTb3VyY2UuaDoKKyAg
ICAgICAgKiBjc3MvQ1NTRm9udFNlbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Zv
bnRTZWxlY3Rvcjo6fkNTU0ZvbnRTZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250
U2VsZWN0b3I6Om9wcG9ydHVuaXN0aWNhbGx5U3RhcnRGb250RGF0YVVSTExvYWRpbmcpOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTRm9udFNlbGVjdG9yOjpjbGVhckRvY3VtZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU0ZvbnRTZWxlY3Rvcjo6d2lsbEJlZ2luTG9hZGluZ0ZvbnRTb29uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRTZWxlY3Rvcjo6Zm9udFJlcXVlc3RlZCk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NGb250U2VsZWN0b3I6OmxvYWRQZW5kaW5nRm9udHMpOgorICAgICAgICAq
IGNzcy9DU1NGb250U2VsZWN0b3IuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9u
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRGb250OjpyZXF1ZXN0TG9hZCk6CisgICAg
ICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
Q2FjaGVkRm9udENsaWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRm9udENsaWVudDo6
Zm9udFJlcXVlc3RlZCk6CisKIDIwMjEtMDItMTEgIENocmlzIExvcmQgIDxjbG9yZEBpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFJlbW92ZSBGb250U2VsZWN0b3IgZGVwZW5kZW5jZSBpbiBDU1NGb250
RmFjZSB3aGVuIGNyZWF0aW5nIGEgbmV3IEZvbnRGYWNlIHdyYXBwZXIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Rm9udEZhY2UuY3BwCmluZGV4IDQyODMyY2M0OWY0ZDNmMjAwODNhMjI4YTlhYmJhN2VjNzc5ODA1
N2QuLjdlMjE5YjA3YWRmNDNkOWFkNjE2YTMzZTJiZDllZDU4ZmIwNGE0OTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0ZvbnRGYWNlLmNwcApAQCAtNzcsOCArNzcsMTAgQEAgdm9pZCBDU1NGb250RmFjZTo6
YXBwZW5kU291cmNlcyhDU1NGb250RmFjZSYgZm9udEZhY2UsIENTU1ZhbHVlTGlzdCYgc3JjTGlz
dCwgRG8KICAgICAgICAgICAgIGNvbnN0IFNldHRpbmdzKiBzZXR0aW5ncyA9IGRvY3VtZW50ID8g
JmRvY3VtZW50LT5zZXR0aW5ncygpIDogbnVsbHB0cjsKICAgICAgICAgICAgIGJvb2wgYWxsb3dE
b3dubG9hZGluZyA9IGZvdW5kU1ZHRm9udCB8fCAoc2V0dGluZ3MgJiYgc2V0dGluZ3MtPmRvd25s
b2FkYWJsZUJpbmFyeUZvbnRzRW5hYmxlZCgpKTsKICAgICAgICAgICAgIGlmIChhbGxvd0Rvd25s
b2FkaW5nICYmIGl0ZW0uaXNTdXBwb3J0ZWRGb3JtYXQoKSAmJiBkb2N1bWVudCkgewotICAgICAg
ICAgICAgICAgIGlmIChDYWNoZWRGb250KiBjYWNoZWRGb250ID0gaXRlbS5jYWNoZWRGb250KGRv
Y3VtZW50LCBmb3VuZFNWR0ZvbnQsIGlzSW5pdGlhdGluZ0VsZW1lbnRJblVzZXJBZ2VudFNoYWRv
d1RyZWUpKQorICAgICAgICAgICAgICAgIGlmIChDYWNoZWRGb250KiBjYWNoZWRGb250ID0gaXRl
bS5jYWNoZWRGb250KGRvY3VtZW50LCBmb3VuZFNWR0ZvbnQsIGlzSW5pdGlhdGluZ0VsZW1lbnRJ
blVzZXJBZ2VudFNoYWRvd1RyZWUpKSB7CisgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LT5m
b250U2VsZWN0b3IoKS53aWxsQmVnaW5Mb2FkaW5nRm9udFNvb24oKmNhY2hlZEZvbnQpOwogICAg
ICAgICAgICAgICAgICAgICBzb3VyY2UgPSBtYWtlVW5pcXVlPENTU0ZvbnRGYWNlU291cmNlPihm
b250RmFjZSwgaXRlbS5yZXNvdXJjZSgpLCBjYWNoZWRGb250KTsKKyAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgc291cmNlID0gbWFr
ZVVuaXF1ZTxDU1NGb250RmFjZVNvdXJjZT4oZm9udEZhY2UsIGl0ZW0ucmVzb3VyY2UoKSwgbnVs
bHB0ciwgZm9udEZhY2VFbGVtZW50KTsKQEAgLTg5LDEyICs5MSwxMiBAQCB2b2lkIENTU0ZvbnRG
YWNlOjphcHBlbmRTb3VyY2VzKENTU0ZvbnRGYWNlJiBmb250RmFjZSwgQ1NTVmFsdWVMaXN0JiBz
cmNMaXN0LCBEbwogICAgIGZvbnRGYWNlLnNvdXJjZXNQb3B1bGF0ZWQoKTsKIH0KIAotQ1NTRm9u
dEZhY2U6OkNTU0ZvbnRGYWNlKENTU0ZvbnRTZWxlY3RvciogZm9udFNlbGVjdG9yLCBTdHlsZVJ1
bGVGb250RmFjZSogY3NzQ29ubmVjdGlvbiwgRm9udEZhY2UqIHdyYXBwZXIsIGJvb2wgaXNMb2Nh
bEZhbGxiYWNrKQotICAgIDogQ1NTRm9udEZhY2UoZm9udFNlbGVjdG9yICYmIGZvbnRTZWxlY3Rv
ci0+ZG9jdW1lbnQoKSA/ICZmb250U2VsZWN0b3ItPmRvY3VtZW50KCktPnNldHRpbmdzKCkgOiBu
dWxscHRyLCBjc3NDb25uZWN0aW9uLCB3cmFwcGVyLCBpc0xvY2FsRmFsbGJhY2spCitSZWY8Q1NT
Rm9udEZhY2U+IENTU0ZvbnRGYWNlOjpjcmVhdGUoQ1NTRm9udFNlbGVjdG9yKiBmb250U2VsZWN0
b3IsIFN0eWxlUnVsZUZvbnRGYWNlKiBjc3NDb25uZWN0aW9uLCBGb250RmFjZSogd3JhcHBlciwg
Ym9vbCBpc0xvY2FsRmFsbGJhY2spCiB7Ci0gICAgbV9mb250U2VsZWN0b3IgPSBtYWtlV2Vha1B0
cihmb250U2VsZWN0b3IpOyAvLyBGSVhNRTogSWRlYWxseSB0aGlzIGRhdGEgbWVtYmVyIHdvdWxk
IGdvIGF3YXkgKGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDgzNTEp
LgorICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRSZWYoKm5ldyBDU1NGb250RmFjZSgoZm9udFNlbGVj
dG9yICYmIGZvbnRTZWxlY3Rvci0+ZG9jdW1lbnQoKSkgPyAmZm9udFNlbGVjdG9yLT5kb2N1bWVu
dCgpLT5zZXR0aW5ncygpIDogbnVsbHB0ciwgY3NzQ29ubmVjdGlvbiwgd3JhcHBlciwgaXNMb2Nh
bEZhbGxiYWNrKSk7CiAgICAgaWYgKGZvbnRTZWxlY3RvcikKLSAgICAgICAgYWRkQ2xpZW50KCpm
b250U2VsZWN0b3IpOworICAgICAgICByZXN1bHQtPmFkZENsaWVudCgqZm9udFNlbGVjdG9yKTsK
KyAgICByZXR1cm4gcmVzdWx0OwogfQogCiBDU1NGb250RmFjZTo6Q1NTRm9udEZhY2UoY29uc3Qg
U2V0dGluZ3MqIHNldHRpbmdzLCBTdHlsZVJ1bGVGb250RmFjZSogY3NzQ29ubmVjdGlvbiwgRm9u
dEZhY2UqIHdyYXBwZXIsIGJvb2wgaXNMb2NhbEZhbGxiYWNrKQpAQCAtNTQ4LDExICs1NTAsMTgg
QEAgdm9pZCBDU1NGb250RmFjZTo6Zm9udExvYWRlZChDU1NGb250RmFjZVNvdXJjZSYpCiAgICAg
Zm9udExvYWRFdmVudE9jY3VycmVkKCk7CiB9CiAKLXZvaWQgQ1NTRm9udEZhY2U6Om9wcG9ydHVu
aXN0aWNhbGx5U3RhcnRGb250RGF0YVVSTExvYWRpbmcoQ1NTRm9udFNlbGVjdG9yJiBmb250U2Vs
ZWN0b3IpCit2b2lkIENTU0ZvbnRGYWNlOjpvcHBvcnR1bmlzdGljYWxseVN0YXJ0Rm9udERhdGFV
UkxMb2FkaW5nKERvY3VtZW50KiBkb2N1bWVudCkKIHsKICAgICAvLyBXZSBkb24ndCB3YW50IHRv
IGdvIGNyYXp5IGhlcmUgYW5kIGJsb3cgdGhlIGNhY2hlLiBVc3VhbGx5IHRoZXNlIGRhdGEgVVJM
cyBhcmUgdGhlIGZpcnN0IGl0ZW0gaW4gdGhlIHNyYzogbGlzdCwgc28gbGV0J3MganVzdCBjaGVj
ayB0aGF0IG9uZS4KICAgICBpZiAoIW1fc291cmNlcy5pc0VtcHR5KCkpCi0gICAgICAgIG1fc291
cmNlc1swXS0+b3Bwb3J0dW5pc3RpY2FsbHlTdGFydEZvbnREYXRhVVJMTG9hZGluZyhmb250U2Vs
ZWN0b3IpOworICAgICAgICBtX3NvdXJjZXNbMF0tPm9wcG9ydHVuaXN0aWNhbGx5U3RhcnRGb250
RGF0YVVSTExvYWRpbmcoZG9jdW1lbnQpOworfQorCitEb2N1bWVudCogQ1NTRm9udEZhY2U6OmRv
Y3VtZW50KCkKK3sKKyAgICBpZiAobV93cmFwcGVyICYmIGlzPERvY3VtZW50PihtX3dyYXBwZXIt
PnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkpCisgICAgICAgIHJldHVybiBkb3duY2FzdDxEb2N1
bWVudD4obV93cmFwcGVyLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOworICAgIHJldHVybiBu
dWxscHRyOwogfQogCiBzaXplX3QgQ1NTRm9udEZhY2U6OnB1bXAoRXh0ZXJuYWxSZXNvdXJjZURv
d25sb2FkUG9saWN5IHBvbGljeSkKQEAgLTU3OSw3ICs1ODgsNyBAQCBzaXplX3QgQ1NTRm9udEZh
Y2U6OnB1bXAoRXh0ZXJuYWxSZXNvdXJjZURvd25sb2FkUG9saWN5IHBvbGljeSkKICAgICAgICAg
ICAgIGlmIChwb2xpY3kgPT0gRXh0ZXJuYWxSZXNvdXJjZURvd25sb2FkUG9saWN5OjpBbGxvdyB8
fCAhc291cmNlLT5yZXF1aXJlc0V4dGVybmFsUmVzb3VyY2UoKSkgewogICAgICAgICAgICAgICAg
IGlmIChwb2xpY3kgPT0gRXh0ZXJuYWxSZXNvdXJjZURvd25sb2FkUG9saWN5OjpBbGxvdyAmJiBt
X3N0YXR1cyA9PSBTdGF0dXM6OlBlbmRpbmcpCiAgICAgICAgICAgICAgICAgICAgIHNldFN0YXR1
cyhTdGF0dXM6OkxvYWRpbmcpOwotICAgICAgICAgICAgICAgIHNvdXJjZS0+bG9hZChtX2ZvbnRT
ZWxlY3Rvci5nZXQoKSk7CisgICAgICAgICAgICAgICAgc291cmNlLT5sb2FkKGRvY3VtZW50KCkp
OwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKQEAgLTY1MSw3ICs2NjAsNyBAQCBSZWZQdHI8
Rm9udD4gQ1NTRm9udEZhY2U6OmZvbnQoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250RGVzY3Jp
cHRpb24sIGJvb2wgc3ludAogICAgIGZvciAoc2l6ZV90IGkgPSBzdGFydEluZGV4OyBpIDwgbV9z
b3VyY2VzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIGF1dG8mIHNvdXJjZSA9IG1fc291cmNlc1tp
XTsKICAgICAgICAgaWYgKHNvdXJjZS0+c3RhdHVzKCkgPT0gQ1NTRm9udEZhY2VTb3VyY2U6OlN0
YXR1czo6UGVuZGluZyAmJiAocG9saWN5ID09IEV4dGVybmFsUmVzb3VyY2VEb3dubG9hZFBvbGlj
eTo6QWxsb3cgfHwgIXNvdXJjZS0+cmVxdWlyZXNFeHRlcm5hbFJlc291cmNlKCkpKQotICAgICAg
ICAgICAgc291cmNlLT5sb2FkKG1fZm9udFNlbGVjdG9yLmdldCgpKTsKKyAgICAgICAgICAgIHNv
dXJjZS0+bG9hZChkb2N1bWVudCgpKTsKIAogICAgICAgICBzd2l0Y2ggKHNvdXJjZS0+c3RhdHVz
KCkpIHsKICAgICAgICAgY2FzZSBDU1NGb250RmFjZVNvdXJjZTo6U3RhdHVzOjpQZW5kaW5nOgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTRm9udEZhY2UuaAppbmRleCBmMjYyZDA1ZjdkNzBlNWY5M2NjZjNhNjg1YWRm
MTc0YWEzNjc0Nzc3Li45YjhmZjlmODZiMjQyYzQxMzVjMTY1NDhlOTRmNjJlYTg4YTc2Yjg5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTRm9udEZhY2UuaApAQCAtNjAsMTAgKzYwLDcgQEAgREVDTEFSRV9BTExP
Q0FUT1JfV0lUSF9IRUFQX0lERU5USUZJRVIoQ1NTRm9udEZhY2UpOwogY2xhc3MgQ1NTRm9udEZh
Y2UgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxDU1NGb250RmFjZT4gewogICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEX1dJVEhfSEVBUF9JREVOVElGSUVSKENTU0ZvbnRGYWNlKTsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUmVmPENTU0ZvbnRGYWNlPiBjcmVhdGUoQ1NTRm9udFNlbGVjdG9yKiBm
b250U2VsZWN0b3IsIFN0eWxlUnVsZUZvbnRGYWNlKiBjc3NDb25uZWN0aW9uID0gbnVsbHB0ciwg
Rm9udEZhY2UqIHdyYXBwZXIgPSBudWxscHRyLCBib29sIGlzTG9jYWxGYWxsYmFjayA9IGZhbHNl
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTRm9udEZhY2UoZm9udFNl
bGVjdG9yLCBjc3NDb25uZWN0aW9uLCB3cmFwcGVyLCBpc0xvY2FsRmFsbGJhY2spKTsKLSAgICB9
CisgICAgc3RhdGljIFJlZjxDU1NGb250RmFjZT4gY3JlYXRlKENTU0ZvbnRTZWxlY3RvciosIFN0
eWxlUnVsZUZvbnRGYWNlKiBjc3NDb25uZWN0aW9uID0gbnVsbHB0ciwgRm9udEZhY2UqIHdyYXBw
ZXIgPSBudWxscHRyLCBib29sIGlzTG9jYWxGYWxsYmFjayA9IGZhbHNlKTsKICAgICB2aXJ0dWFs
IH5DU1NGb250RmFjZSgpOwogCiAgICAgLy8gRklYTUU6IFRoZXNlIGZ1bmN0aW9ucyBkb24ndCBu
ZWVkIHRvIGhhdmUgYm9vbGVhbiByZXR1cm4gdmFsdWVzLgpAQCAtMTEyLDcgKzEwOSw3IEBAIHB1
YmxpYzoKIAogICAgIGJvb2wgY29tcHV0ZUZhaWx1cmVTdGF0ZSgpIGNvbnN0OwogCi0gICAgdm9p
ZCBvcHBvcnR1bmlzdGljYWxseVN0YXJ0Rm9udERhdGFVUkxMb2FkaW5nKENTU0ZvbnRTZWxlY3Rv
ciYpOworICAgIHZvaWQgb3Bwb3J0dW5pc3RpY2FsbHlTdGFydEZvbnREYXRhVVJMTG9hZGluZyhE
b2N1bWVudCopOwogCiAgICAgdm9pZCBhZG9wdFNvdXJjZShzdGQ6OnVuaXF1ZV9wdHI8Q1NTRm9u
dEZhY2VTb3VyY2U+JiYpOwogICAgIHZvaWQgc291cmNlc1BvcHVsYXRlZCgpIHsgbV9zb3VyY2Vz
UG9wdWxhdGVkID0gdHJ1ZTsgfQpAQCAtMTY3LDcgKzE2NCw2IEBAIHB1YmxpYzoKICAgICB2b2lk
IHNldEVycm9yU3RhdGUoKTsKIAogcHJpdmF0ZToKLSAgICBDU1NGb250RmFjZShDU1NGb250U2Vs
ZWN0b3IqLCBTdHlsZVJ1bGVGb250RmFjZSosIEZvbnRGYWNlKiwgYm9vbCBpc0xvY2FsRmFsbGJh
Y2spOwogICAgIENTU0ZvbnRGYWNlKGNvbnN0IFNldHRpbmdzKiwgU3R5bGVSdWxlRm9udEZhY2Uq
LCBGb250RmFjZSosIGJvb2wgaXNMb2NhbEZhbGxiYWNrKTsKIAogICAgIHNpemVfdCBwdW1wKEV4
dGVybmFsUmVzb3VyY2VEb3dubG9hZFBvbGljeSk7CkBAIC0xNzksNiArMTc1LDggQEAgcHJpdmF0
ZToKICAgICB2b2lkIGZvbnRMb2FkRXZlbnRPY2N1cnJlZCgpOwogICAgIHZvaWQgdGltZW91dEZp
cmVkKCk7CiAKKyAgICBEb2N1bWVudCogZG9jdW1lbnQoKTsKKwogICAgIFJlZlB0cjxDU1NWYWx1
ZUxpc3Q+IG1fZmFtaWxpZXM7CiAgICAgVmVjdG9yPFVuaWNvZGVSYW5nZT4gbV9yYW5nZXM7CiAK
QEAgLTE4Niw3ICsxODQsNiBAQCBwcml2YXRlOgogICAgIEZvbnRMb2FkaW5nQmVoYXZpb3IgbV9s
b2FkaW5nQmVoYXZpb3IgeyBGb250TG9hZGluZ0JlaGF2aW9yOjpBdXRvIH07CiAKICAgICBWZWN0
b3I8c3RkOjp1bmlxdWVfcHRyPENTU0ZvbnRGYWNlU291cmNlPiwgMCwgQ3Jhc2hPbk92ZXJmbG93
LCAwPiBtX3NvdXJjZXM7Ci0gICAgV2Vha1B0cjxDU1NGb250U2VsZWN0b3I+IG1fZm9udFNlbGVj
dG9yOyAvLyBGSVhNRTogSWRlYWxseSB0aGlzIGRhdGEgbWVtYmVyIHdvdWxkIGdvIGF3YXkgKGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDgzNTEpLgogICAgIFJlZlB0
cjxTdHlsZVJ1bGVGb250RmFjZT4gbV9jc3NDb25uZWN0aW9uOwogICAgIEhhc2hTZXQ8Q2xpZW50
Kj4gbV9jbGllbnRzOwogICAgIFdlYWtQdHI8Rm9udEZhY2U+IG1fd3JhcHBlcjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwCmluZGV4IGU2ZWExODE2ZmZjM2NhNmQwNDUw
MjNhOGRhNzczNGJkYWM1MjI4NjQuLjQ1Y2NiYWI0OWZiMGM3YmQ2MDNhMjBjOGE5ODBmNTBhMDM0
NTVmNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcApAQCAtMTAw
LDEwICsxMDAsMTAgQEAgYm9vbCBDU1NGb250RmFjZVNvdXJjZTo6c2hvdWxkSWdub3JlRm9udExv
YWRDb21wbGV0aW9ucygpIGNvbnN0CiAgICAgcmV0dXJuIG1fZmFjZS5zaG91bGRJZ25vcmVGb250
TG9hZENvbXBsZXRpb25zKCk7CiB9CiAKLXZvaWQgQ1NTRm9udEZhY2VTb3VyY2U6Om9wcG9ydHVu
aXN0aWNhbGx5U3RhcnRGb250RGF0YVVSTExvYWRpbmcoQ1NTRm9udFNlbGVjdG9yJiBmb250U2Vs
ZWN0b3IpCit2b2lkIENTU0ZvbnRGYWNlU291cmNlOjpvcHBvcnR1bmlzdGljYWxseVN0YXJ0Rm9u
dERhdGFVUkxMb2FkaW5nKERvY3VtZW50KiBkb2N1bWVudCkKIHsKICAgICBpZiAoc3RhdHVzKCkg
PT0gU3RhdHVzOjpQZW5kaW5nICYmIG1fZm9udCAmJiBtX2ZvbnQtPnVybCgpLnByb3RvY29sSXNE
YXRhKCkgJiYgbV9mYW1pbHlOYW1lT3JVUkkubGVuZ3RoKCkgPCBNQikKLSAgICAgICAgbG9hZCgm
Zm9udFNlbGVjdG9yKTsKKyAgICAgICAgbG9hZChkb2N1bWVudCk7CiB9CiAKIHZvaWQgQ1NTRm9u
dEZhY2VTb3VyY2U6OmZvbnRMb2FkZWQoQ2FjaGVkRm9udCYgbG9hZGVkRm9udCkKQEAgLTEzMiwx
MyArMTMyLDEyIEBAIHZvaWQgQ1NTRm9udEZhY2VTb3VyY2U6OmZvbnRMb2FkZWQoQ2FjaGVkRm9u
dCYgbG9hZGVkRm9udCkKICAgICBtX2ZhY2UuZm9udExvYWRlZCgqdGhpcyk7CiB9CiAKLXZvaWQg
Q1NTRm9udEZhY2VTb3VyY2U6OmxvYWQoQ1NTRm9udFNlbGVjdG9yKiBmb250U2VsZWN0b3IpCit2
b2lkIENTU0ZvbnRGYWNlU291cmNlOjpsb2FkKERvY3VtZW50KiBkb2N1bWVudCkKIHsKICAgICBz
ZXRTdGF0dXMoU3RhdHVzOjpMb2FkaW5nKTsKIAogICAgIGlmIChtX2ZvbnQpIHsKLSAgICAgICAg
QVNTRVJUKGZvbnRTZWxlY3Rvcik7Ci0gICAgICAgIGZvbnRTZWxlY3Rvci0+YmVnaW5Mb2FkaW5n
Rm9udFNvb24oKm1fZm9udCk7CisgICAgICAgIG1fZm9udC0+cmVxdWVzdExvYWQoKTsKICAgICB9
IGVsc2UgewogICAgICAgICBib29sIHN1Y2Nlc3MgPSBmYWxzZTsKICAgICAgICAgaWYgKG1faGFz
U1ZHRm9udEZhY2VFbGVtZW50KSB7CkBAIC0xNjcsMTAgKzE2Niw4IEBAIHZvaWQgQ1NTRm9udEZh
Y2VTb3VyY2U6OmxvYWQoQ1NTRm9udFNlbGVjdG9yKiBmb250U2VsZWN0b3IpCiAgICAgICAgICAg
ICBmb250RGVzY3JpcHRpb24uc2V0Q29tcHV0ZWRTaXplKDEpOwogICAgICAgICAgICAgZm9udERl
c2NyaXB0aW9uLnNldFNob3VsZEFsbG93VXNlckluc3RhbGxlZEZvbnRzKG1fZmFjZS5hbGxvd1Vz
ZXJJbnN0YWxsZWRGb250cygpKTsKICAgICAgICAgICAgIHN1Y2Nlc3MgPSBGb250Q2FjaGU6OnNp
bmdsZXRvbigpLmZvbnRGb3JGYW1pbHkoZm9udERlc2NyaXB0aW9uLCBtX2ZhbWlseU5hbWVPclVS
SSwgbnVsbHB0ciwgRm9udFNlbGVjdGlvblNwZWNpZmllZENhcGFiaWxpdGllcygpLCB0cnVlKTsK
LSAgICAgICAgICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygp
LndlYkFQSVN0YXRpc3RpY3NFbmFibGVkKCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoYXV0byog
ZG9jdW1lbnQgPSBmb250U2VsZWN0b3ItPmRvY3VtZW50KCkpCi0gICAgICAgICAgICAgICAgICAg
IFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQoKS5sb2dGb250TG9hZCgqZG9jdW1lbnQsIG1f
ZmFtaWx5TmFtZU9yVVJJLnN0cmluZygpLCBzdWNjZXNzKTsKLSAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGlmIChkb2N1bWVudCAmJiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0
dXJlcygpLndlYkFQSVN0YXRpc3RpY3NFbmFibGVkKCkpCisgICAgICAgICAgICAgICAgUmVzb3Vy
Y2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZCgpLmxvZ0ZvbnRMb2FkKCpkb2N1bWVudCwgbV9mYW1pbHlO
YW1lT3JVUkkuc3RyaW5nKCksIHN1Y2Nlc3MpOwogICAgICAgICB9CiAgICAgICAgIHNldFN0YXR1
cyhzdWNjZXNzID8gU3RhdHVzOjpTdWNjZXNzIDogU3RhdHVzOjpGYWlsdXJlKTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5oCmluZGV4IDdlYWI1OTg5NTYwYTQxNjk4
YmY2NDJjMWRjZmFhYzU5OGY3NjZlNjkuLmRkZTg2MDliODQ3NGVmNzU5MDZkYzhmZjY5NWEyMWY5
OTRkZWQ2NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJj
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5oCkBAIC0zNSw2
ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ1NTRm9udEZhY2U7CiBjbGFz
cyBDU1NGb250U2VsZWN0b3I7CitjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEZvbnQ7CiBzdHJ1Y3Qg
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YTsKIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKQEAgLTY3LDkg
KzY4LDkgQEAgcHVibGljOgogCiAgICAgY29uc3QgQXRvbVN0cmluZyYgZmFtaWx5TmFtZU9yVVJJ
KCkgY29uc3QgeyByZXR1cm4gbV9mYW1pbHlOYW1lT3JVUkk7IH0KIAotICAgIHZvaWQgb3Bwb3J0
dW5pc3RpY2FsbHlTdGFydEZvbnREYXRhVVJMTG9hZGluZyhDU1NGb250U2VsZWN0b3ImKTsKKyAg
ICB2b2lkIG9wcG9ydHVuaXN0aWNhbGx5U3RhcnRGb250RGF0YVVSTExvYWRpbmcoRG9jdW1lbnQq
KTsKIAotICAgIHZvaWQgbG9hZChDU1NGb250U2VsZWN0b3IqKTsKKyAgICB2b2lkIGxvYWQoRG9j
dW1lbnQqKTsKICAgICBSZWZQdHI8Rm9udD4gZm9udChjb25zdCBGb250RGVzY3JpcHRpb24mLCBi
b29sIHN5bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhldGljSXRhbGljLCBjb25zdCBGb250RmVhdHVy
ZVNldHRpbmdzJiwgRm9udFNlbGVjdGlvblNwZWNpZmllZENhcGFiaWxpdGllcyk7CiAKICAgICBD
YWNoZWRGb250KiBjYWNoZWRGb250KCkgY29uc3QgeyByZXR1cm4gbV9mb250LmdldCgpOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuY3BwCmluZGV4IGQwYzIzMzY5NmEyZjZlN2E1
ZWY5NzJiN2ZlNGU1ZTE1YTZmODYzOWQuLjkxNDA1NWNlMzllZTBkYzE4ZDRlM2RiZjI4MzE2NmQ4
OGRjMTk1NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuY3BwCkBAIC04Miw2
ICs4Miw4IEBAIENTU0ZvbnRTZWxlY3Rvcjo6fkNTU0ZvbnRTZWxlY3RvcigpCiB7CiAgICAgTE9H
KEZvbnRzLCAiQ1NTRm9udFNlbGVjdG9yICVwIGR0b3IiLCB0aGlzKTsKIAorICAgIGZvciAoYXV0
byogZm9udCA6IG1fZm9udHMpCisgICAgICAgIGZvbnQtPnJlbW92ZUNsaWVudCgqdGhpcyk7CiAg
ICAgY2xlYXJEb2N1bWVudCgpOwogICAgIEZvbnRDYWNoZTo6c2luZ2xldG9uKCkucmVtb3ZlQ2xp
ZW50KCp0aGlzKTsKIH0KQEAgLTI0NSw3ICsyNDcsNyBAQCB2b2lkIENTU0ZvbnRTZWxlY3Rvcjo6
b3Bwb3J0dW5pc3RpY2FsbHlTdGFydEZvbnREYXRhVVJMTG9hZGluZyhjb25zdCBGb250Q2FzY2Fk
ZQogICAgIGlmICghc2VnbWVudGVkRm9udEZhY2UpCiAgICAgICAgIHJldHVybjsKICAgICBmb3Ig
KGF1dG8mIGZhY2UgOiBzZWdtZW50ZWRGb250RmFjZS0+Y29uc3RpdHVlbnRGYWNlcygpKQotICAg
ICAgICBmYWNlLT5vcHBvcnR1bmlzdGljYWxseVN0YXJ0Rm9udERhdGFVUkxMb2FkaW5nKCp0aGlz
KTsKKyAgICAgICAgZmFjZS0+b3Bwb3J0dW5pc3RpY2FsbHlTdGFydEZvbnREYXRhVVJMTG9hZGlu
Zyhkb2N1bWVudCgpKTsKIH0KIAogdm9pZCBDU1NGb250U2VsZWN0b3I6OmZvbnRMb2FkZWQoQ1NT
Rm9udEZhY2UmKQpAQCAtMzQ5LDcgKzM1MSw3IEBAIHZvaWQgQ1NTRm9udFNlbGVjdG9yOjpjbGVh
ckRvY3VtZW50KCkKIAogICAgIENhY2hlZFJlc291cmNlTG9hZGVyJiBjYWNoZWRSZXNvdXJjZUxv
YWRlciA9IG1fZG9jdW1lbnQtPmNhY2hlZFJlc291cmNlTG9hZGVyKCk7CiAgICAgZm9yIChhdXRv
JiBmb250SGFuZGxlIDogbV9mb250c1RvQmVnaW5Mb2FkaW5nKSB7Ci0gICAgICAgIC8vIEJhbGFu
Y2VzIGluY3JlbWVudFJlcXVlc3RDb3VudCgpIGluIGJlZ2luTG9hZGluZ0ZvbnRTb29uKCkuCisg
ICAgICAgIC8vIEJhbGFuY2VzIGluY3JlbWVudFJlcXVlc3RDb3VudCgpIGluIGZvbnRSZXF1ZXN0
ZWQoKS4KICAgICAgICAgY2FjaGVkUmVzb3VyY2VMb2FkZXIuZGVjcmVtZW50UmVxdWVzdENvdW50
KCpmb250SGFuZGxlKTsKICAgICB9CiAgICAgbV9mb250c1RvQmVnaW5Mb2FkaW5nLmNsZWFyKCk7
CkBAIC0zNjAsNyArMzYyLDEzIEBAIHZvaWQgQ1NTRm9udFNlbGVjdG9yOjpjbGVhckRvY3VtZW50
KCkKICAgICBtX2NsaWVudHMuY2xlYXIoKTsKIH0KIAotdm9pZCBDU1NGb250U2VsZWN0b3I6OmJl
Z2luTG9hZGluZ0ZvbnRTb29uKENhY2hlZEZvbnQmIGZvbnQpCit2b2lkIENTU0ZvbnRTZWxlY3Rv
cjo6d2lsbEJlZ2luTG9hZGluZ0ZvbnRTb29uKENhY2hlZEZvbnQmIGZvbnQpCit7CisgICAgbV9m
b250cy5hZGQoJmZvbnQpOworICAgIGZvbnQuYWRkQ2xpZW50KCp0aGlzKTsKK30KKwordm9pZCBD
U1NGb250U2VsZWN0b3I6OmZvbnRSZXF1ZXN0ZWQoQ2FjaGVkRm9udCYgZm9udCkKIHsKICAgICBp
ZiAoIW1fZG9jdW1lbnQpCiAgICAgICAgIHJldHVybjsKQEAgLTM5NCw3ICs0MDIsNyBAQCB2b2lk
IENTU0ZvbnRTZWxlY3Rvcjo6bG9hZFBlbmRpbmdGb250cygpCiAgICAgQ2FjaGVkUmVzb3VyY2VM
b2FkZXImIGNhY2hlZFJlc291cmNlTG9hZGVyID0gbV9kb2N1bWVudC0+Y2FjaGVkUmVzb3VyY2VM
b2FkZXIoKTsKICAgICBmb3IgKGF1dG8mIGZvbnRIYW5kbGUgOiBmb250c1RvQmVnaW5Mb2FkaW5n
KSB7CiAgICAgICAgIGZvbnRIYW5kbGUtPmJlZ2luTG9hZElmTmVlZGVkKGNhY2hlZFJlc291cmNl
TG9hZGVyKTsKLSAgICAgICAgLy8gQmFsYW5jZXMgaW5jcmVtZW50UmVxdWVzdENvdW50KCkgaW4g
YmVnaW5Mb2FkaW5nRm9udFNvb24oKS4KKyAgICAgICAgLy8gQmFsYW5jZXMgaW5jcmVtZW50UmVx
dWVzdENvdW50KCkgaW4gZm9udFJlcXVlc3RlZCgpLgogICAgICAgICBjYWNoZWRSZXNvdXJjZUxv
YWRlci5kZWNyZW1lbnRSZXF1ZXN0Q291bnQoKmZvbnRIYW5kbGUpOwogICAgIH0KIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuaCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuaAppbmRleCBkYTQzMTcyZGUwZjQwNDZlNzI2ZTJlY2Ex
YzM4MDU0NDI0YTRkYWYxLi5lNmI4MzBkN2ZjNzRjMDdhZTQzNGM1NzZlZmZjNGU3MDMyZjFkNDE0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5oCkBAIC0yOCw2ICsyOCw3IEBACiAj
aW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCiAjaW5jbHVkZSAiQ1NTRm9udEZhY2UuaCIKICNp
bmNsdWRlICJDU1NGb250RmFjZVNldC5oIgorI2luY2x1ZGUgIkNhY2hlZEZvbnRDbGllbnQuaCIK
ICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIkZvbnQuaCIKICNp
bmNsdWRlICJGb250U2VsZWN0b3IuaCIKQEAgLTQ4LDcgKzQ5LDcgQEAgY2xhc3MgQ2FjaGVkRm9u
dDsKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgU3R5bGVSdWxlRm9udEZhY2U7CiAKLWNsYXNzIENT
U0ZvbnRTZWxlY3RvciBmaW5hbCA6IHB1YmxpYyBGb250U2VsZWN0b3IsIHB1YmxpYyBDU1NGb250
RmFjZTo6Q2xpZW50LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8Q1NTRm9udFNlbGVjdG9yPiwgcHVi
bGljIEFjdGl2ZURPTU9iamVjdCB7CitjbGFzcyBDU1NGb250U2VsZWN0b3IgZmluYWwgOiBwdWJs
aWMgRm9udFNlbGVjdG9yLCBwdWJsaWMgQ1NTRm9udEZhY2U6OkNsaWVudCwgcHVibGljIENhY2hl
ZEZvbnRDbGllbnQsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxDU1NGb250U2VsZWN0b3I+LCBwdWJs
aWMgQWN0aXZlRE9NT2JqZWN0IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPENTU0ZvbnRTZWxl
Y3Rvcj4gY3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCkKICAgICB7CkBAIC03OSw3ICs4MCw3IEBA
IHB1YmxpYzoKIAogICAgIERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZG9j
dW1lbnQuZ2V0KCk7IH0KIAotICAgIHZvaWQgYmVnaW5Mb2FkaW5nRm9udFNvb24oQ2FjaGVkRm9u
dCYpOworICAgIHZvaWQgd2lsbEJlZ2luTG9hZGluZ0ZvbnRTb29uKENhY2hlZEZvbnQmKTsKICAg
ICB2b2lkIHN1c3BlbmRGb250TG9hZGluZ1RpbWVyKCk7CiAKICAgICBGb250RmFjZVNldCogZm9u
dEZhY2VTZXRJZkV4aXN0cygpOwpAQCAtMTA4LDYgKzEwOSwxMCBAQCBwcml2YXRlOgogICAgIHZv
aWQgZm9udE1vZGlmaWVkKCk7CiAgICAgdm9pZCBmb250TG9hZGluZ1RpbWVyRmlyZWQoKTsKIAor
ICAgIC8vIENhY2hlZEZvbnRDbGllbnQKKyAgICB1c2luZyBDYWNoZWRGb250Q2xpZW50Ojpmb250
TG9hZGVkOworICAgIHZvaWQgZm9udFJlcXVlc3RlZChDYWNoZWRGb250JikgZmluYWw7CisKICAg
ICAvLyBBY3RpdmVET01PYmplY3QKICAgICB2b2lkIHN0b3AoKSBmaW5hbDsKICAgICB2b2lkIHN1
c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lvbikgZmluYWw7CkBAIC0xMjUsNiArMTMwLDcgQEAgcHJp
dmF0ZToKICAgICBSZWY8Q1NTRm9udEZhY2VTZXQ+IG1fY3NzRm9udEZhY2VTZXQ7CiAgICAgSGFz
aFNldDxGb250U2VsZWN0b3JDbGllbnQqPiBtX2NsaWVudHM7CiAKKyAgICBIYXNoU2V0PENhY2hl
ZEZvbnQqPiBtX2ZvbnRzOwogICAgIFZlY3RvcjxDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRG
b250Pj4gbV9mb250c1RvQmVnaW5Mb2FkaW5nOwogICAgIEhhc2hTZXQ8UmVmUHRyPENTU0ZvbnRG
YWNlPj4gbV9jc3NDb25uZWN0aW9uc1Bvc3NpYmx5VG9SZW1vdmU7CiAgICAgSGFzaFNldDxSZWZQ
dHI8U3R5bGVSdWxlRm9udEZhY2U+PiBtX2Nzc0Nvbm5lY3Rpb25zRW5jb3VudGVyZWREdXJpbmdC
dWlsZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcAppbmRleCA5
NzQxOWVlZTc0MTlmODBhYWRhZmU4MjQ1NTkwZGZlZDY0ZTk3NzJlLi42ZDZkZDM4Yjk0MGJmOWY4
YTJiOTQyMGFjYTIwZDJmZjU2MjZiNTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZEZvbnQuY3BwCkBAIC03MSw2ICs3MSwxMyBAQCB2b2lkIENhY2hlZEZvbnQ6OmZpbmlz
aExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1l
dAogICAgIGNoZWNrTm90aWZ5KG1ldHJpY3MpOwogfQogCit2b2lkIENhY2hlZEZvbnQ6OnJlcXVl
c3RMb2FkKCkKK3sKKyAgICBDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlcjxDYWNoZWRGb250Q2xp
ZW50PiB3YWxrZXIobV9jbGllbnRzKTsKKyAgICB3aGlsZSAoQ2FjaGVkRm9udENsaWVudCogY2xp
ZW50ID0gd2Fsa2VyLm5leHQoKSkKKyAgICAgICAgY2xpZW50LT5mb250UmVxdWVzdGVkKCp0aGlz
KTsKK30KKwogdm9pZCBDYWNoZWRGb250OjpiZWdpbkxvYWRJZk5lZWRlZChDYWNoZWRSZXNvdXJj
ZUxvYWRlciYgbG9hZGVyKQogewogICAgIGlmICghbV9sb2FkSW5pdGlhdGVkKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaAppbmRleCA2MjY3Nzg4ZjE3ZTVlYjQyMGE1
OTQ0ODg0YzQ0NWEzMGEwN2Y5ZjVjLi45YzExNDgyNTE2ZDgwODYxYmRiMzgzNDRlZTg2ZjExYmM5
ZThlMGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9u
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmgKQEAgLTQ4
LDYgKzQ4LDcgQEAgcHVibGljOgogICAgIENhY2hlZEZvbnQoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0
JiYsIGNvbnN0IFBBTDo6U2Vzc2lvbklEJiwgY29uc3QgQ29va2llSmFyKiwgVHlwZSA9IFR5cGU6
OkZvbnRSZXNvdXJjZSk7CiAgICAgdmlydHVhbCB+Q2FjaGVkRm9udCgpOwogCisgICAgdm9pZCBy
ZXF1ZXN0TG9hZCgpOwogICAgIHZvaWQgYmVnaW5Mb2FkSWZOZWVkZWQoQ2FjaGVkUmVzb3VyY2VM
b2FkZXImKTsKICAgICBib29sIHN0aWxsTmVlZHNMb2FkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gIW1fbG9hZEluaXRpYXRlZDsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkRm9udENsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZEZvbnRDbGllbnQuaAppbmRleCA1MGU2M2Y1OWNhMzQ0N2MyMmE5NmZjOWZjNzE2MThk
MzFiNmQyMGMyLi44Y2FmODljYWEzMmE4MDQ4ODlmOWJhOGM3N2ViZGY3MmMwOTQzNzQ3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udENsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250Q2xpZW50LmgKQEAgLTM3
LDYgKzM3LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBDYWNoZWRSZXNvdXJjZUNsaWVudFR5cGUg
ZXhwZWN0ZWRUeXBlKCkgeyByZXR1cm4gRm9udFR5cGU7IH0KICAgICBDYWNoZWRSZXNvdXJjZUNs
aWVudFR5cGUgcmVzb3VyY2VDbGllbnRUeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZXhw
ZWN0ZWRUeXBlKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgZm9udExvYWRlZChDYWNoZWRGb250Jikg
eyB9CisgICAgdmlydHVhbCB2b2lkIGZvbnRSZXF1ZXN0ZWQoQ2FjaGVkRm9udCYpIHsgfQogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420281</attachid>
            <date>2021-02-15 01:35:42 -0800</date>
            <delta_ts>2021-02-22 07:48:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208351-20210215093540.patch</filename>
            <type>text/plain</type>
            <size>18043</size>
            <attacher name="Chris Lord">clord</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNjUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTdmNDAwNTdhZDE2MmJl
YjY4YWI2ZGNjOWRlMWVhNDhmNmNiMGNiNi4uYTI4ZDQwMjAxNmRjNmI2YmI2M2QzOTY5MDI1ZDJl
NmMxOWE0N2NiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDIxLTAyLTExICBDaHJp
cyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KKworICAgICAgICBDU1NGb250RmFjZSBzaG91bGQg
bm90IG5lZWQgaXRzIG1fZm9udFNlbGVjdG9yIGRhdGEgbWVtYmVyCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDgzNTEKKworICAgICAgICBSZXZpZXdl
ZCBieSBNeWxlcyBDLiBNYXhmaWVsZC4KKworICAgICAgICBSZW1vdmUgdGhlIGxhc3QgdXNlIG9m
IG1fZm9udFNlbGVjdG9yIGZyb20gQ1NTRm9udEZhY2UuIEFkZGluZworICAgICAgICBDYWNoZWRG
b250Q2xpZW50Ojpmb250UmVxdWVzdGVkIGFsbG93cyB1cyB0byBhZGQgdGhlIEZvbnRTZWxlY3Rv
ciBhcyBhCisgICAgICAgIGNsaWVudCB3aGlsZSB3ZSBoYXZlIGFjY2VzcyB0byBib3RoIHRoZSBG
b250U2VsZWN0b3IgYW5kIHRoZSBDYWNoZWRGb250CisgICAgICAgIGluIENTU0ZvbnRGYWNlOjph
cHBlbmRTb3VyY2VzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoZXJlIGlzIG5v
IGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIGNzcy9DU1NGb250RmFjZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NGb250RmFjZTo6YXBwZW5kU291cmNlcyk6CisgICAgICAgIChXZWJD
b3JlOjpDU1NGb250RmFjZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNl
OjpvcHBvcnR1bmlzdGljYWxseVN0YXJ0Rm9udERhdGFVUkxMb2FkaW5nKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU0ZvbnRGYWNlOjpkb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250
RmFjZTo6cHVtcCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZTo6Zm9udCk6CisgICAg
ICAgICogY3NzL0NTU0ZvbnRGYWNlLmg6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU291cmNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU291cmNlOjpvcHBvcnR1bmlzdGlj
YWxseVN0YXJ0Rm9udERhdGFVUkxMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRG
YWNlU291cmNlOjpsb2FkKToKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTb3VyY2UuaDoKKyAg
ICAgICAgKiBjc3MvQ1NTRm9udFNlbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Zv
bnRTZWxlY3Rvcjo6b3Bwb3J0dW5pc3RpY2FsbHlTdGFydEZvbnREYXRhVVJMTG9hZGluZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NGb250U2VsZWN0b3I6OmNsZWFyRG9jdW1lbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTRm9udFNlbGVjdG9yOjp3aWxsQmVnaW5Mb2FkaW5nRm9udFNvb24pOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udFNlbGVjdG9yOjpmb250UmVxdWVzdGVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU0ZvbnRTZWxlY3Rvcjo6bG9hZFBlbmRpbmdGb250cyk6CisgICAgICAg
ICogY3NzL0NTU0ZvbnRTZWxlY3Rvci5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRG
b250LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6OnJlcXVlc3RMb2FkKToKKyAg
ICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oOgorICAgICAgICAqIGxvYWRlci9jYWNo
ZS9DYWNoZWRGb250Q2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRGb250Q2xpZW50
Ojpmb250UmVxdWVzdGVkKToKKwogMjAyMS0wMi0xMSAgQ2hyaXMgTG9yZCAgPGNsb3JkQGlnYWxp
YS5jb20+CiAKICAgICAgICAgUmVtb3ZlIEZvbnRTZWxlY3RvciBkZXBlbmRlbmNlIGluIENTU0Zv
bnRGYWNlIHdoZW4gY3JlYXRpbmcgYSBuZXcgRm9udEZhY2Ugd3JhcHBlcgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NGb250RmFjZS5jcHAKaW5kZXggNDI4MzJjYzQ5ZjRkM2YyMDA4M2EyMjhhOWFiYmE3ZWM3Nzk4
MDU3ZC4uN2UyMTliMDdhZGY0M2Q5YWQ2MTZhMzNlMmJkOWVkNThmYjA0YTQ5OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTRm9udEZhY2UuY3BwCkBAIC03Nyw4ICs3NywxMCBAQCB2b2lkIENTU0ZvbnRGYWNl
OjphcHBlbmRTb3VyY2VzKENTU0ZvbnRGYWNlJiBmb250RmFjZSwgQ1NTVmFsdWVMaXN0JiBzcmNM
aXN0LCBEbwogICAgICAgICAgICAgY29uc3QgU2V0dGluZ3MqIHNldHRpbmdzID0gZG9jdW1lbnQg
PyAmZG9jdW1lbnQtPnNldHRpbmdzKCkgOiBudWxscHRyOwogICAgICAgICAgICAgYm9vbCBhbGxv
d0Rvd25sb2FkaW5nID0gZm91bmRTVkdGb250IHx8IChzZXR0aW5ncyAmJiBzZXR0aW5ncy0+ZG93
bmxvYWRhYmxlQmluYXJ5Rm9udHNFbmFibGVkKCkpOwogICAgICAgICAgICAgaWYgKGFsbG93RG93
bmxvYWRpbmcgJiYgaXRlbS5pc1N1cHBvcnRlZEZvcm1hdCgpICYmIGRvY3VtZW50KSB7Ci0gICAg
ICAgICAgICAgICAgaWYgKENhY2hlZEZvbnQqIGNhY2hlZEZvbnQgPSBpdGVtLmNhY2hlZEZvbnQo
ZG9jdW1lbnQsIGZvdW5kU1ZHRm9udCwgaXNJbml0aWF0aW5nRWxlbWVudEluVXNlckFnZW50U2hh
ZG93VHJlZSkpCisgICAgICAgICAgICAgICAgaWYgKENhY2hlZEZvbnQqIGNhY2hlZEZvbnQgPSBp
dGVtLmNhY2hlZEZvbnQoZG9jdW1lbnQsIGZvdW5kU1ZHRm9udCwgaXNJbml0aWF0aW5nRWxlbWVu
dEluVXNlckFnZW50U2hhZG93VHJlZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQt
PmZvbnRTZWxlY3RvcigpLndpbGxCZWdpbkxvYWRpbmdGb250U29vbigqY2FjaGVkRm9udCk7CiAg
ICAgICAgICAgICAgICAgICAgIHNvdXJjZSA9IG1ha2VVbmlxdWU8Q1NTRm9udEZhY2VTb3VyY2U+
KGZvbnRGYWNlLCBpdGVtLnJlc291cmNlKCksIGNhY2hlZEZvbnQpOworICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBzb3VyY2UgPSBt
YWtlVW5pcXVlPENTU0ZvbnRGYWNlU291cmNlPihmb250RmFjZSwgaXRlbS5yZXNvdXJjZSgpLCBu
dWxscHRyLCBmb250RmFjZUVsZW1lbnQpOwpAQCAtODksMTIgKzkxLDEyIEBAIHZvaWQgQ1NTRm9u
dEZhY2U6OmFwcGVuZFNvdXJjZXMoQ1NTRm9udEZhY2UmIGZvbnRGYWNlLCBDU1NWYWx1ZUxpc3Qm
IHNyY0xpc3QsIERvCiAgICAgZm9udEZhY2Uuc291cmNlc1BvcHVsYXRlZCgpOwogfQogCi1DU1NG
b250RmFjZTo6Q1NTRm9udEZhY2UoQ1NTRm9udFNlbGVjdG9yKiBmb250U2VsZWN0b3IsIFN0eWxl
UnVsZUZvbnRGYWNlKiBjc3NDb25uZWN0aW9uLCBGb250RmFjZSogd3JhcHBlciwgYm9vbCBpc0xv
Y2FsRmFsbGJhY2spCi0gICAgOiBDU1NGb250RmFjZShmb250U2VsZWN0b3IgJiYgZm9udFNlbGVj
dG9yLT5kb2N1bWVudCgpID8gJmZvbnRTZWxlY3Rvci0+ZG9jdW1lbnQoKS0+c2V0dGluZ3MoKSA6
IG51bGxwdHIsIGNzc0Nvbm5lY3Rpb24sIHdyYXBwZXIsIGlzTG9jYWxGYWxsYmFjaykKK1JlZjxD
U1NGb250RmFjZT4gQ1NTRm9udEZhY2U6OmNyZWF0ZShDU1NGb250U2VsZWN0b3IqIGZvbnRTZWxl
Y3RvciwgU3R5bGVSdWxlRm9udEZhY2UqIGNzc0Nvbm5lY3Rpb24sIEZvbnRGYWNlKiB3cmFwcGVy
LCBib29sIGlzTG9jYWxGYWxsYmFjaykKIHsKLSAgICBtX2ZvbnRTZWxlY3RvciA9IG1ha2VXZWFr
UHRyKGZvbnRTZWxlY3Rvcik7IC8vIEZJWE1FOiBJZGVhbGx5IHRoaXMgZGF0YSBtZW1iZXIgd291
bGQgZ28gYXdheSAoaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODM1
MSkuCisgICAgYXV0byByZXN1bHQgPSBhZG9wdFJlZigqbmV3IENTU0ZvbnRGYWNlKChmb250U2Vs
ZWN0b3IgJiYgZm9udFNlbGVjdG9yLT5kb2N1bWVudCgpKSA/ICZmb250U2VsZWN0b3ItPmRvY3Vt
ZW50KCktPnNldHRpbmdzKCkgOiBudWxscHRyLCBjc3NDb25uZWN0aW9uLCB3cmFwcGVyLCBpc0xv
Y2FsRmFsbGJhY2spKTsKICAgICBpZiAoZm9udFNlbGVjdG9yKQotICAgICAgICBhZGRDbGllbnQo
KmZvbnRTZWxlY3Rvcik7CisgICAgICAgIHJlc3VsdC0+YWRkQ2xpZW50KCpmb250U2VsZWN0b3Ip
OworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIENTU0ZvbnRGYWNlOjpDU1NGb250RmFjZShjb25z
dCBTZXR0aW5ncyogc2V0dGluZ3MsIFN0eWxlUnVsZUZvbnRGYWNlKiBjc3NDb25uZWN0aW9uLCBG
b250RmFjZSogd3JhcHBlciwgYm9vbCBpc0xvY2FsRmFsbGJhY2spCkBAIC01NDgsMTEgKzU1MCwx
OCBAQCB2b2lkIENTU0ZvbnRGYWNlOjpmb250TG9hZGVkKENTU0ZvbnRGYWNlU291cmNlJikKICAg
ICBmb250TG9hZEV2ZW50T2NjdXJyZWQoKTsKIH0KIAotdm9pZCBDU1NGb250RmFjZTo6b3Bwb3J0
dW5pc3RpY2FsbHlTdGFydEZvbnREYXRhVVJMTG9hZGluZyhDU1NGb250U2VsZWN0b3ImIGZvbnRT
ZWxlY3RvcikKK3ZvaWQgQ1NTRm9udEZhY2U6Om9wcG9ydHVuaXN0aWNhbGx5U3RhcnRGb250RGF0
YVVSTExvYWRpbmcoRG9jdW1lbnQqIGRvY3VtZW50KQogewogICAgIC8vIFdlIGRvbid0IHdhbnQg
dG8gZ28gY3JhenkgaGVyZSBhbmQgYmxvdyB0aGUgY2FjaGUuIFVzdWFsbHkgdGhlc2UgZGF0YSBV
UkxzIGFyZSB0aGUgZmlyc3QgaXRlbSBpbiB0aGUgc3JjOiBsaXN0LCBzbyBsZXQncyBqdXN0IGNo
ZWNrIHRoYXQgb25lLgogICAgIGlmICghbV9zb3VyY2VzLmlzRW1wdHkoKSkKLSAgICAgICAgbV9z
b3VyY2VzWzBdLT5vcHBvcnR1bmlzdGljYWxseVN0YXJ0Rm9udERhdGFVUkxMb2FkaW5nKGZvbnRT
ZWxlY3Rvcik7CisgICAgICAgIG1fc291cmNlc1swXS0+b3Bwb3J0dW5pc3RpY2FsbHlTdGFydEZv
bnREYXRhVVJMTG9hZGluZyhkb2N1bWVudCk7Cit9CisKK0RvY3VtZW50KiBDU1NGb250RmFjZTo6
ZG9jdW1lbnQoKQoreworICAgIGlmIChtX3dyYXBwZXIgJiYgaXM8RG9jdW1lbnQ+KG1fd3JhcHBl
ci0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSkKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PERv
Y3VtZW50PihtX3dyYXBwZXItPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CisgICAgcmV0dXJu
IG51bGxwdHI7CiB9CiAKIHNpemVfdCBDU1NGb250RmFjZTo6cHVtcChFeHRlcm5hbFJlc291cmNl
RG93bmxvYWRQb2xpY3kgcG9saWN5KQpAQCAtNTc5LDcgKzU4OCw3IEBAIHNpemVfdCBDU1NGb250
RmFjZTo6cHVtcChFeHRlcm5hbFJlc291cmNlRG93bmxvYWRQb2xpY3kgcG9saWN5KQogICAgICAg
ICAgICAgaWYgKHBvbGljeSA9PSBFeHRlcm5hbFJlc291cmNlRG93bmxvYWRQb2xpY3k6OkFsbG93
IHx8ICFzb3VyY2UtPnJlcXVpcmVzRXh0ZXJuYWxSZXNvdXJjZSgpKSB7CiAgICAgICAgICAgICAg
ICAgaWYgKHBvbGljeSA9PSBFeHRlcm5hbFJlc291cmNlRG93bmxvYWRQb2xpY3k6OkFsbG93ICYm
IG1fc3RhdHVzID09IFN0YXR1czo6UGVuZGluZykKICAgICAgICAgICAgICAgICAgICAgc2V0U3Rh
dHVzKFN0YXR1czo6TG9hZGluZyk7Ci0gICAgICAgICAgICAgICAgc291cmNlLT5sb2FkKG1fZm9u
dFNlbGVjdG9yLmdldCgpKTsKKyAgICAgICAgICAgICAgICBzb3VyY2UtPmxvYWQoZG9jdW1lbnQo
KSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIApAQCAtNjUxLDcgKzY2MCw3IEBAIFJlZlB0
cjxGb250PiBDU1NGb250RmFjZTo6Zm9udChjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNj
cmlwdGlvbiwgYm9vbCBzeW50CiAgICAgZm9yIChzaXplX3QgaSA9IHN0YXJ0SW5kZXg7IGkgPCBt
X3NvdXJjZXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgYXV0byYgc291cmNlID0gbV9zb3VyY2Vz
W2ldOwogICAgICAgICBpZiAoc291cmNlLT5zdGF0dXMoKSA9PSBDU1NGb250RmFjZVNvdXJjZTo6
U3RhdHVzOjpQZW5kaW5nICYmIChwb2xpY3kgPT0gRXh0ZXJuYWxSZXNvdXJjZURvd25sb2FkUG9s
aWN5OjpBbGxvdyB8fCAhc291cmNlLT5yZXF1aXJlc0V4dGVybmFsUmVzb3VyY2UoKSkpCi0gICAg
ICAgICAgICBzb3VyY2UtPmxvYWQobV9mb250U2VsZWN0b3IuZ2V0KCkpOworICAgICAgICAgICAg
c291cmNlLT5sb2FkKGRvY3VtZW50KCkpOwogCiAgICAgICAgIHN3aXRjaCAoc291cmNlLT5zdGF0
dXMoKSkgewogICAgICAgICBjYXNlIENTU0ZvbnRGYWNlU291cmNlOjpTdGF0dXM6OlBlbmRpbmc6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5oCmluZGV4IGYyNjJkMDVmN2Q3MGU1ZjkzY2NmM2E2ODVh
ZGYxNzRhYTM2NzQ3NzcuLjliOGZmOWY4NmIyNDJjNDEzNWMxNjU0OGU5NGY2MmVhODhhNzZiODkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5oCkBAIC02MCwxMCArNjAsNyBAQCBERUNMQVJFX0FM
TE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihDU1NGb250RmFjZSk7CiBjbGFzcyBDU1NGb250
RmFjZSBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPENTU0ZvbnRGYWNlPiB7CiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURURfV0lUSF9IRUFQX0lERU5USUZJRVIoQ1NTRm9udEZhY2UpOwogcHVi
bGljOgotICAgIHN0YXRpYyBSZWY8Q1NTRm9udEZhY2U+IGNyZWF0ZShDU1NGb250U2VsZWN0b3Iq
IGZvbnRTZWxlY3RvciwgU3R5bGVSdWxlRm9udEZhY2UqIGNzc0Nvbm5lY3Rpb24gPSBudWxscHRy
LCBGb250RmFjZSogd3JhcHBlciA9IG51bGxwdHIsIGJvb2wgaXNMb2NhbEZhbGxiYWNrID0gZmFs
c2UpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NGb250RmFjZShmb250
U2VsZWN0b3IsIGNzc0Nvbm5lY3Rpb24sIHdyYXBwZXIsIGlzTG9jYWxGYWxsYmFjaykpOwotICAg
IH0KKyAgICBzdGF0aWMgUmVmPENTU0ZvbnRGYWNlPiBjcmVhdGUoQ1NTRm9udFNlbGVjdG9yKiwg
U3R5bGVSdWxlRm9udEZhY2UqIGNzc0Nvbm5lY3Rpb24gPSBudWxscHRyLCBGb250RmFjZSogd3Jh
cHBlciA9IG51bGxwdHIsIGJvb2wgaXNMb2NhbEZhbGxiYWNrID0gZmFsc2UpOwogICAgIHZpcnR1
YWwgfkNTU0ZvbnRGYWNlKCk7CiAKICAgICAvLyBGSVhNRTogVGhlc2UgZnVuY3Rpb25zIGRvbid0
IG5lZWQgdG8gaGF2ZSBib29sZWFuIHJldHVybiB2YWx1ZXMuCkBAIC0xMTIsNyArMTA5LDcgQEAg
cHVibGljOgogCiAgICAgYm9vbCBjb21wdXRlRmFpbHVyZVN0YXRlKCkgY29uc3Q7CiAKLSAgICB2
b2lkIG9wcG9ydHVuaXN0aWNhbGx5U3RhcnRGb250RGF0YVVSTExvYWRpbmcoQ1NTRm9udFNlbGVj
dG9yJik7CisgICAgdm9pZCBvcHBvcnR1bmlzdGljYWxseVN0YXJ0Rm9udERhdGFVUkxMb2FkaW5n
KERvY3VtZW50Kik7CiAKICAgICB2b2lkIGFkb3B0U291cmNlKHN0ZDo6dW5pcXVlX3B0cjxDU1NG
b250RmFjZVNvdXJjZT4mJik7CiAgICAgdm9pZCBzb3VyY2VzUG9wdWxhdGVkKCkgeyBtX3NvdXJj
ZXNQb3B1bGF0ZWQgPSB0cnVlOyB9CkBAIC0xNjcsNyArMTY0LDYgQEAgcHVibGljOgogICAgIHZv
aWQgc2V0RXJyb3JTdGF0ZSgpOwogCiBwcml2YXRlOgotICAgIENTU0ZvbnRGYWNlKENTU0ZvbnRT
ZWxlY3RvciosIFN0eWxlUnVsZUZvbnRGYWNlKiwgRm9udEZhY2UqLCBib29sIGlzTG9jYWxGYWxs
YmFjayk7CiAgICAgQ1NTRm9udEZhY2UoY29uc3QgU2V0dGluZ3MqLCBTdHlsZVJ1bGVGb250RmFj
ZSosIEZvbnRGYWNlKiwgYm9vbCBpc0xvY2FsRmFsbGJhY2spOwogCiAgICAgc2l6ZV90IHB1bXAo
RXh0ZXJuYWxSZXNvdXJjZURvd25sb2FkUG9saWN5KTsKQEAgLTE3OSw2ICsxNzUsOCBAQCBwcml2
YXRlOgogICAgIHZvaWQgZm9udExvYWRFdmVudE9jY3VycmVkKCk7CiAgICAgdm9pZCB0aW1lb3V0
RmlyZWQoKTsKIAorICAgIERvY3VtZW50KiBkb2N1bWVudCgpOworCiAgICAgUmVmUHRyPENTU1Zh
bHVlTGlzdD4gbV9mYW1pbGllczsKICAgICBWZWN0b3I8VW5pY29kZVJhbmdlPiBtX3JhbmdlczsK
IApAQCAtMTg2LDcgKzE4NCw2IEBAIHByaXZhdGU6CiAgICAgRm9udExvYWRpbmdCZWhhdmlvciBt
X2xvYWRpbmdCZWhhdmlvciB7IEZvbnRMb2FkaW5nQmVoYXZpb3I6OkF1dG8gfTsKIAogICAgIFZl
Y3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Q1NTRm9udEZhY2VTb3VyY2U+LCAwLCBDcmFzaE9uT3ZlcmZs
b3csIDA+IG1fc291cmNlczsKLSAgICBXZWFrUHRyPENTU0ZvbnRTZWxlY3Rvcj4gbV9mb250U2Vs
ZWN0b3I7IC8vIEZJWE1FOiBJZGVhbGx5IHRoaXMgZGF0YSBtZW1iZXIgd291bGQgZ28gYXdheSAo
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODM1MSkuCiAgICAgUmVm
UHRyPFN0eWxlUnVsZUZvbnRGYWNlPiBtX2Nzc0Nvbm5lY3Rpb247CiAgICAgSGFzaFNldDxDbGll
bnQqPiBtX2NsaWVudHM7CiAgICAgV2Vha1B0cjxGb250RmFjZT4gbV93cmFwcGVyOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAKaW5kZXggZTZlYTE4MTZmZmMzY2E2ZDA0
NTAyM2E4ZGE3NzM0YmRhYzUyMjg2NC4uNDVjY2JhYjQ5ZmIwYzdiZDYwM2EyMGM4YTk4MGY1MGEw
MzQ1NWY1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwCkBAIC0x
MDAsMTAgKzEwMCwxMCBAQCBib29sIENTU0ZvbnRGYWNlU291cmNlOjpzaG91bGRJZ25vcmVGb250
TG9hZENvbXBsZXRpb25zKCkgY29uc3QKICAgICByZXR1cm4gbV9mYWNlLnNob3VsZElnbm9yZUZv
bnRMb2FkQ29tcGxldGlvbnMoKTsKIH0KIAotdm9pZCBDU1NGb250RmFjZVNvdXJjZTo6b3Bwb3J0
dW5pc3RpY2FsbHlTdGFydEZvbnREYXRhVVJMTG9hZGluZyhDU1NGb250U2VsZWN0b3ImIGZvbnRT
ZWxlY3RvcikKK3ZvaWQgQ1NTRm9udEZhY2VTb3VyY2U6Om9wcG9ydHVuaXN0aWNhbGx5U3RhcnRG
b250RGF0YVVSTExvYWRpbmcoRG9jdW1lbnQqIGRvY3VtZW50KQogewogICAgIGlmIChzdGF0dXMo
KSA9PSBTdGF0dXM6OlBlbmRpbmcgJiYgbV9mb250ICYmIG1fZm9udC0+dXJsKCkucHJvdG9jb2xJ
c0RhdGEoKSAmJiBtX2ZhbWlseU5hbWVPclVSSS5sZW5ndGgoKSA8IE1CKQotICAgICAgICBsb2Fk
KCZmb250U2VsZWN0b3IpOworICAgICAgICBsb2FkKGRvY3VtZW50KTsKIH0KIAogdm9pZCBDU1NG
b250RmFjZVNvdXJjZTo6Zm9udExvYWRlZChDYWNoZWRGb250JiBsb2FkZWRGb250KQpAQCAtMTMy
LDEzICsxMzIsMTIgQEAgdm9pZCBDU1NGb250RmFjZVNvdXJjZTo6Zm9udExvYWRlZChDYWNoZWRG
b250JiBsb2FkZWRGb250KQogICAgIG1fZmFjZS5mb250TG9hZGVkKCp0aGlzKTsKIH0KIAotdm9p
ZCBDU1NGb250RmFjZVNvdXJjZTo6bG9hZChDU1NGb250U2VsZWN0b3IqIGZvbnRTZWxlY3RvcikK
K3ZvaWQgQ1NTRm9udEZhY2VTb3VyY2U6OmxvYWQoRG9jdW1lbnQqIGRvY3VtZW50KQogewogICAg
IHNldFN0YXR1cyhTdGF0dXM6OkxvYWRpbmcpOwogCiAgICAgaWYgKG1fZm9udCkgewotICAgICAg
ICBBU1NFUlQoZm9udFNlbGVjdG9yKTsKLSAgICAgICAgZm9udFNlbGVjdG9yLT5iZWdpbkxvYWRp
bmdGb250U29vbigqbV9mb250KTsKKyAgICAgICAgbV9mb250LT5yZXF1ZXN0TG9hZCgpOwogICAg
IH0gZWxzZSB7CiAgICAgICAgIGJvb2wgc3VjY2VzcyA9IGZhbHNlOwogICAgICAgICBpZiAobV9o
YXNTVkdGb250RmFjZUVsZW1lbnQpIHsKQEAgLTE2NywxMCArMTY2LDggQEAgdm9pZCBDU1NGb250
RmFjZVNvdXJjZTo6bG9hZChDU1NGb250U2VsZWN0b3IqIGZvbnRTZWxlY3RvcikKICAgICAgICAg
ICAgIGZvbnREZXNjcmlwdGlvbi5zZXRDb21wdXRlZFNpemUoMSk7CiAgICAgICAgICAgICBmb250
RGVzY3JpcHRpb24uc2V0U2hvdWxkQWxsb3dVc2VySW5zdGFsbGVkRm9udHMobV9mYWNlLmFsbG93
VXNlckluc3RhbGxlZEZvbnRzKCkpOwogICAgICAgICAgICAgc3VjY2VzcyA9IEZvbnRDYWNoZTo6
c2luZ2xldG9uKCkuZm9udEZvckZhbWlseShmb250RGVzY3JpcHRpb24sIG1fZmFtaWx5TmFtZU9y
VVJJLCBudWxscHRyLCBGb250U2VsZWN0aW9uU3BlY2lmaWVkQ2FwYWJpbGl0aWVzKCksIHRydWUp
OwotICAgICAgICAgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVz
KCkud2ViQVBJU3RhdGlzdGljc0VuYWJsZWQoKSkgewotICAgICAgICAgICAgICAgIGlmIChhdXRv
KiBkb2N1bWVudCA9IGZvbnRTZWxlY3Rvci0+ZG9jdW1lbnQoKSkKLSAgICAgICAgICAgICAgICAg
ICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZCgpLmxvZ0ZvbnRMb2FkKCpkb2N1bWVudCwg
bV9mYW1pbHlOYW1lT3JVUkkuc3RyaW5nKCksIHN1Y2Nlc3MpOwotICAgICAgICAgICAgfQorICAg
ICAgICAgICAgaWYgKGRvY3VtZW50ICYmIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZl
YXR1cmVzKCkud2ViQVBJU3RhdGlzdGljc0VuYWJsZWQoKSkKKyAgICAgICAgICAgICAgICBSZXNv
dXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCkubG9nRm9udExvYWQoKmRvY3VtZW50LCBtX2ZhbWls
eU5hbWVPclVSSS5zdHJpbmcoKSwgc3VjY2Vzcyk7CiAgICAgICAgIH0KICAgICAgICAgc2V0U3Rh
dHVzKHN1Y2Nlc3MgPyBTdGF0dXM6OlN1Y2Nlc3MgOiBTdGF0dXM6OkZhaWx1cmUpOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5oIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmgKaW5kZXggN2VhYjU5ODk1NjBhNDE2
OThiZjY0MmMxZGNmYWFjNTk4Zjc2NmU2OS4uZGRlODYwOWI4NDc0ZWY3NTkwNmRjOGZmNjk1YTIx
Zjk5NGRlZDY1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291
cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmgKQEAgLTM1
LDYgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDU1NGb250RmFjZTsKIGNs
YXNzIENTU0ZvbnRTZWxlY3RvcjsKK2NsYXNzIERvY3VtZW50OwogY2xhc3MgRm9udDsKIHN0cnVj
dCBGb250Q3VzdG9tUGxhdGZvcm1EYXRhOwogY2xhc3MgRm9udERlc2NyaXB0aW9uOwpAQCAtNjcs
OSArNjgsOSBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBBdG9tU3RyaW5nJiBmYW1pbHlOYW1lT3JV
UkkoKSBjb25zdCB7IHJldHVybiBtX2ZhbWlseU5hbWVPclVSSTsgfQogCi0gICAgdm9pZCBvcHBv
cnR1bmlzdGljYWxseVN0YXJ0Rm9udERhdGFVUkxMb2FkaW5nKENTU0ZvbnRTZWxlY3RvciYpOwor
ICAgIHZvaWQgb3Bwb3J0dW5pc3RpY2FsbHlTdGFydEZvbnREYXRhVVJMTG9hZGluZyhEb2N1bWVu
dCopOwogCi0gICAgdm9pZCBsb2FkKENTU0ZvbnRTZWxlY3RvciopOworICAgIHZvaWQgbG9hZChE
b2N1bWVudCopOwogICAgIFJlZlB0cjxGb250PiBmb250KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYs
IGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMsIGNvbnN0IEZvbnRGZWF0
dXJlU2V0dGluZ3MmLCBGb250U2VsZWN0aW9uU3BlY2lmaWVkQ2FwYWJpbGl0aWVzKTsKIAogICAg
IENhY2hlZEZvbnQqIGNhY2hlZEZvbnQoKSBjb25zdCB7IHJldHVybiBtX2ZvbnQuZ2V0KCk7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuY3BwIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAKaW5kZXggZDBjMjMzNjk2YTJmNmU3
YTVlZjk3MmI3ZmU0ZTVlMTVhNmY4NjM5ZC4uNjJmZGJjOTQ5YTZjMjY2YTllNDFjYTFlNTM1NWQy
YzRkMTczYmIwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rv
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAKQEAgLTI0
NSw3ICsyNDUsNyBAQCB2b2lkIENTU0ZvbnRTZWxlY3Rvcjo6b3Bwb3J0dW5pc3RpY2FsbHlTdGFy
dEZvbnREYXRhVVJMTG9hZGluZyhjb25zdCBGb250Q2FzY2FkZQogICAgIGlmICghc2VnbWVudGVk
Rm9udEZhY2UpCiAgICAgICAgIHJldHVybjsKICAgICBmb3IgKGF1dG8mIGZhY2UgOiBzZWdtZW50
ZWRGb250RmFjZS0+Y29uc3RpdHVlbnRGYWNlcygpKQotICAgICAgICBmYWNlLT5vcHBvcnR1bmlz
dGljYWxseVN0YXJ0Rm9udERhdGFVUkxMb2FkaW5nKCp0aGlzKTsKKyAgICAgICAgZmFjZS0+b3Bw
b3J0dW5pc3RpY2FsbHlTdGFydEZvbnREYXRhVVJMTG9hZGluZyhkb2N1bWVudCgpKTsKIH0KIAog
dm9pZCBDU1NGb250U2VsZWN0b3I6OmZvbnRMb2FkZWQoQ1NTRm9udEZhY2UmKQpAQCAtMzQyLDE0
ICszNDIsMTkgQEAgdm9pZCBDU1NGb250U2VsZWN0b3I6OmNsZWFyRG9jdW1lbnQoKQogICAgIGlm
ICghbV9kb2N1bWVudCkgewogICAgICAgICBBU1NFUlQoIW1fZm9udExvYWRpbmdUaW1lci5pc0Fj
dGl2ZSgpKTsKICAgICAgICAgQVNTRVJUKG1fZm9udHNUb0JlZ2luTG9hZGluZy5pc0VtcHR5KCkp
OworICAgICAgICBBU1NFUlQobV9mb250cy5pc0VtcHR5KCkpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCiAgICAgbV9mb250TG9hZGluZ1RpbWVyLnN0b3AoKTsKIAorICAgIGZvciAoYXV0byog
Zm9udCA6IG1fZm9udHMpCisgICAgICAgIGZvbnQtPnJlbW92ZUNsaWVudCgqdGhpcyk7CisgICAg
bV9mb250cy5jbGVhcigpOworCiAgICAgQ2FjaGVkUmVzb3VyY2VMb2FkZXImIGNhY2hlZFJlc291
cmNlTG9hZGVyID0gbV9kb2N1bWVudC0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKTsKICAgICBmb3Ig
KGF1dG8mIGZvbnRIYW5kbGUgOiBtX2ZvbnRzVG9CZWdpbkxvYWRpbmcpIHsKLSAgICAgICAgLy8g
QmFsYW5jZXMgaW5jcmVtZW50UmVxdWVzdENvdW50KCkgaW4gYmVnaW5Mb2FkaW5nRm9udFNvb24o
KS4KKyAgICAgICAgLy8gQmFsYW5jZXMgaW5jcmVtZW50UmVxdWVzdENvdW50KCkgaW4gZm9udFJl
cXVlc3RlZCgpLgogICAgICAgICBjYWNoZWRSZXNvdXJjZUxvYWRlci5kZWNyZW1lbnRSZXF1ZXN0
Q291bnQoKmZvbnRIYW5kbGUpOwogICAgIH0KICAgICBtX2ZvbnRzVG9CZWdpbkxvYWRpbmcuY2xl
YXIoKTsKQEAgLTM2MCw3ICszNjUsMTMgQEAgdm9pZCBDU1NGb250U2VsZWN0b3I6OmNsZWFyRG9j
dW1lbnQoKQogICAgIG1fY2xpZW50cy5jbGVhcigpOwogfQogCi12b2lkIENTU0ZvbnRTZWxlY3Rv
cjo6YmVnaW5Mb2FkaW5nRm9udFNvb24oQ2FjaGVkRm9udCYgZm9udCkKK3ZvaWQgQ1NTRm9udFNl
bGVjdG9yOjp3aWxsQmVnaW5Mb2FkaW5nRm9udFNvb24oQ2FjaGVkRm9udCYgZm9udCkKK3sKKyAg
ICBtX2ZvbnRzLmFkZCgmZm9udCk7CisgICAgZm9udC5hZGRDbGllbnQoKnRoaXMpOworfQorCit2
b2lkIENTU0ZvbnRTZWxlY3Rvcjo6Zm9udFJlcXVlc3RlZChDYWNoZWRGb250JiBmb250KQogewog
ICAgIGlmICghbV9kb2N1bWVudCkKICAgICAgICAgcmV0dXJuOwpAQCAtMzk0LDcgKzQwNSw3IEBA
IHZvaWQgQ1NTRm9udFNlbGVjdG9yOjpsb2FkUGVuZGluZ0ZvbnRzKCkKICAgICBDYWNoZWRSZXNv
dXJjZUxvYWRlciYgY2FjaGVkUmVzb3VyY2VMb2FkZXIgPSBtX2RvY3VtZW50LT5jYWNoZWRSZXNv
dXJjZUxvYWRlcigpOwogICAgIGZvciAoYXV0byYgZm9udEhhbmRsZSA6IGZvbnRzVG9CZWdpbkxv
YWRpbmcpIHsKICAgICAgICAgZm9udEhhbmRsZS0+YmVnaW5Mb2FkSWZOZWVkZWQoY2FjaGVkUmVz
b3VyY2VMb2FkZXIpOwotICAgICAgICAvLyBCYWxhbmNlcyBpbmNyZW1lbnRSZXF1ZXN0Q291bnQo
KSBpbiBiZWdpbkxvYWRpbmdGb250U29vbigpLgorICAgICAgICAvLyBCYWxhbmNlcyBpbmNyZW1l
bnRSZXF1ZXN0Q291bnQoKSBpbiBmb250UmVxdWVzdGVkKCkuCiAgICAgICAgIGNhY2hlZFJlc291
cmNlTG9hZGVyLmRlY3JlbWVudFJlcXVlc3RDb3VudCgqZm9udEhhbmRsZSk7CiAgICAgfQogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5oIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5oCmluZGV4IGRhNDMxNzJkZTBmNDA0NmU3MjZl
MmVjYTFjMzgwNTQ0MjRhNGRhZjEuLmU2YjgzMGQ3ZmM3NGMwN2FlNDM0YzU3NmVmZmM0ZTcwMzJm
MWQ0MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmgKQEAgLTI4LDYgKzI4LDcg
QEAKICNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKICNpbmNsdWRlICJDU1NGb250RmFjZS5o
IgogI2luY2x1ZGUgIkNTU0ZvbnRGYWNlU2V0LmgiCisjaW5jbHVkZSAiQ2FjaGVkRm9udENsaWVu
dC5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAiRm9udC5o
IgogI2luY2x1ZGUgIkZvbnRTZWxlY3Rvci5oIgpAQCAtNDgsNyArNDksNyBAQCBjbGFzcyBDYWNo
ZWRGb250OwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBTdHlsZVJ1bGVGb250RmFjZTsKIAotY2xh
c3MgQ1NTRm9udFNlbGVjdG9yIGZpbmFsIDogcHVibGljIEZvbnRTZWxlY3RvciwgcHVibGljIENT
U0ZvbnRGYWNlOjpDbGllbnQsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxDU1NGb250U2VsZWN0b3I+
LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKK2NsYXNzIENTU0ZvbnRTZWxlY3RvciBmaW5hbCA6
IHB1YmxpYyBGb250U2VsZWN0b3IsIHB1YmxpYyBDU1NGb250RmFjZTo6Q2xpZW50LCBwdWJsaWMg
Q2FjaGVkRm9udENsaWVudCwgcHVibGljIENhbk1ha2VXZWFrUHRyPENTU0ZvbnRTZWxlY3Rvcj4s
IHB1YmxpYyBBY3RpdmVET01PYmplY3QgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8Q1NTRm9u
dFNlbGVjdG9yPiBjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIHsKQEAgLTc5LDcgKzgw
LDcgQEAgcHVibGljOgogCiAgICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3QgeyByZXR1cm4g
bV9kb2N1bWVudC5nZXQoKTsgfQogCi0gICAgdm9pZCBiZWdpbkxvYWRpbmdGb250U29vbihDYWNo
ZWRGb250Jik7CisgICAgdm9pZCB3aWxsQmVnaW5Mb2FkaW5nRm9udFNvb24oQ2FjaGVkRm9udCYp
OwogICAgIHZvaWQgc3VzcGVuZEZvbnRMb2FkaW5nVGltZXIoKTsKIAogICAgIEZvbnRGYWNlU2V0
KiBmb250RmFjZVNldElmRXhpc3RzKCk7CkBAIC0xMDgsNiArMTA5LDEwIEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBmb250TW9kaWZpZWQoKTsKICAgICB2b2lkIGZvbnRMb2FkaW5nVGltZXJGaXJlZCgp
OwogCisgICAgLy8gQ2FjaGVkRm9udENsaWVudAorICAgIHVzaW5nIENhY2hlZEZvbnRDbGllbnQ6
OmZvbnRMb2FkZWQ7CisgICAgdm9pZCBmb250UmVxdWVzdGVkKENhY2hlZEZvbnQmKSBmaW5hbDsK
KwogICAgIC8vIEFjdGl2ZURPTU9iamVjdAogICAgIHZvaWQgc3RvcCgpIGZpbmFsOwogICAgIHZv
aWQgc3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uKSBmaW5hbDsKQEAgLTEyNSw2ICsxMzAsNyBA
QCBwcml2YXRlOgogICAgIFJlZjxDU1NGb250RmFjZVNldD4gbV9jc3NGb250RmFjZVNldDsKICAg
ICBIYXNoU2V0PEZvbnRTZWxlY3RvckNsaWVudCo+IG1fY2xpZW50czsKIAorICAgIEhhc2hTZXQ8
Q2FjaGVkRm9udCo+IG1fZm9udHM7CiAgICAgVmVjdG9yPENhY2hlZFJlc291cmNlSGFuZGxlPENh
Y2hlZEZvbnQ+PiBtX2ZvbnRzVG9CZWdpbkxvYWRpbmc7CiAgICAgSGFzaFNldDxSZWZQdHI8Q1NT
Rm9udEZhY2U+PiBtX2Nzc0Nvbm5lY3Rpb25zUG9zc2libHlUb1JlbW92ZTsKICAgICBIYXNoU2V0
PFJlZlB0cjxTdHlsZVJ1bGVGb250RmFjZT4+IG1fY3NzQ29ubmVjdGlvbnNFbmNvdW50ZXJlZER1
cmluZ0J1aWxkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZEZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCmlu
ZGV4IDk3NDE5ZWVlNzQxOWY4MGFhZGFmZTgyNDU1OTBkZmVkNjRlOTc3MmUuLjZkNmRkMzhiOTQw
YmY5ZjhhMmI5NDIwYWNhMjBkMmZmNTYyNmI1MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkRm9udC5jcHAKQEAgLTcxLDYgKzcxLDEzIEBAIHZvaWQgQ2FjaGVkRm9udDo6
ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyYgbWV0CiAgICAgY2hlY2tOb3RpZnkobWV0cmljcyk7CiB9CiAKK3ZvaWQgQ2FjaGVkRm9udDo6
cmVxdWVzdExvYWQoKQoreworICAgIENhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyPENhY2hlZEZv
bnRDbGllbnQ+IHdhbGtlcihtX2NsaWVudHMpOworICAgIHdoaWxlIChDYWNoZWRGb250Q2xpZW50
KiBjbGllbnQgPSB3YWxrZXIubmV4dCgpKQorICAgICAgICBjbGllbnQtPmZvbnRSZXF1ZXN0ZWQo
KnRoaXMpOworfQorCiB2b2lkIENhY2hlZEZvbnQ6OmJlZ2luTG9hZElmTmVlZGVkKENhY2hlZFJl
c291cmNlTG9hZGVyJiBsb2FkZXIpCiB7CiAgICAgaWYgKCFtX2xvYWRJbml0aWF0ZWQpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oCmluZGV4IDYyNjc3ODhmMTdlNWVi
NDIwYTU5NDQ4ODRjNDQ1YTMwYTA3ZjlmNWMuLjljMTE0ODI1MTZkODA4NjFiZGIzODM0NGVlODZm
MTFiYzllOGUwYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRGb250LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaApA
QCAtNDgsNiArNDgsNyBAQCBwdWJsaWM6CiAgICAgQ2FjaGVkRm9udChDYWNoZWRSZXNvdXJjZVJl
cXVlc3QmJiwgY29uc3QgUEFMOjpTZXNzaW9uSUQmLCBjb25zdCBDb29raWVKYXIqLCBUeXBlID0g
VHlwZTo6Rm9udFJlc291cmNlKTsKICAgICB2aXJ0dWFsIH5DYWNoZWRGb250KCk7CiAKKyAgICB2
b2lkIHJlcXVlc3RMb2FkKCk7CiAgICAgdm9pZCBiZWdpbkxvYWRJZk5lZWRlZChDYWNoZWRSZXNv
dXJjZUxvYWRlciYpOwogICAgIGJvb2wgc3RpbGxOZWVkc0xvYWQoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiAhbV9sb2FkSW5pdGlhdGVkOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRGb250Q2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkRm9udENsaWVudC5oCmluZGV4IDUwZTYzZjU5Y2EzNDQ3YzIyYTk2ZmM5ZmM3
MTYxOGQzMWI2ZDIwYzIuLjhjYWY4OWNhYTMyYTgwNDg4OWY5YmE4Yzc3ZWJkZjcyYzA5NDM3NDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250Q2xpZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnRDbGllbnQuaApA
QCAtMzcsNiArMzcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIENhY2hlZFJlc291cmNlQ2xpZW50
VHlwZSBleHBlY3RlZFR5cGUoKSB7IHJldHVybiBGb250VHlwZTsgfQogICAgIENhY2hlZFJlc291
cmNlQ2xpZW50VHlwZSByZXNvdXJjZUNsaWVudFR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBleHBlY3RlZFR5cGUoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBmb250TG9hZGVkKENhY2hlZEZv
bnQmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZm9udFJlcXVlc3RlZChDYWNoZWRGb250JikgeyB9
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>421190</attachid>
            <date>2021-02-22 07:48:18 -0800</date>
            <delta_ts>2021-02-23 04:18:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208351-20210222154816.patch</filename>
            <type>text/plain</type>
            <size>15563</size>
            <attacher name="Chris Lord">clord</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczMjMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjg0NDU1OGNjNTgzNTkx
Mzk5YmY2YWFmOGNhMGE2MzBhNWM4NDVjNy4uY2ExY2YzMjA1NmExOTJjMDVhNGY4MWJlMzBhNTEy
NTk0MjgyMjE2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDIxLTAyLTIyICBDaHJp
cyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KKworICAgICAgICBDU1NGb250RmFjZSBzaG91bGQg
bm90IG5lZWQgaXRzIG1fZm9udFNlbGVjdG9yIGRhdGEgbWVtYmVyCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDgzNTEKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzc0MzQ2MzAyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIE1vdmUgdGhlIG1fZm9udFNlbGVjdG9yIG1lbWJlciBvZiBDU1NGb250RmFjZSBv
bnRvIENTU0ZvbnRGYWNlU291cmNlLAorICAgICAgICB0aGUgb25seSBwbGFjZSB3aGVyZSBpdCdz
IGFjdHVhbGx5IHJlcXVpcmVkLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoZXJl
IGlzIG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIGNzcy9DU1NGb250RmFjZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZTo6YXBwZW5kU291cmNlcyk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NGb250RmFjZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Zv
bnRGYWNlOjpvcHBvcnR1bmlzdGljYWxseVN0YXJ0Rm9udERhdGFVUkxMb2FkaW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlOjpwdW1wKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Zv
bnRGYWNlOjpmb250KToKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2UuaDoKKyAgICAgICAgKiBj
c3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2VT
b3VyY2U6OkNTU0ZvbnRGYWNlU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNl
U291cmNlOjpvcHBvcnR1bmlzdGljYWxseVN0YXJ0Rm9udERhdGFVUkxMb2FkaW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU291cmNlOjpsb2FkKToKKyAgICAgICAgKiBjc3MvQ1NT
Rm9udEZhY2VTb3VyY2UuaDoKKyAgICAgICAgKiBjc3MvQ1NTRm9udFNlbGVjdG9yLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRTZWxlY3Rvcjo6b3Bwb3J0dW5pc3RpY2FsbHlTdGFydEZv
bnREYXRhVVJMTG9hZGluZyk6CisgICAgICAgICogY3NzL0ZvbnRGYWNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnBvcHVsYXRlRm9udEZhY2VXaXRoQXJyYXlCdWZmZXIpOgorCiAyMDIxLTAyLTIy
ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBI
YW5kbGUgUGFnZTo6ZGlkRmluaXNoTG9hZGluZ0ltYWdlRm9yRWxlbWVudCBhc3luY2hyb25vdXNs
eQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5jcHAKaW5kZXggNDI4MzJjYzQ5ZjRkM2YyMDA4M2Ey
MjhhOWFiYmE3ZWM3Nzk4MDU3ZC4uMGVlMWExMzBiYzY3NmU0YTM3NWU4ODU1MjFhODQwYWRkYmU5
ZGQzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2UuY3BwCkBAIC03OCwxMCArNzgsMTAgQEAg
dm9pZCBDU1NGb250RmFjZTo6YXBwZW5kU291cmNlcyhDU1NGb250RmFjZSYgZm9udEZhY2UsIENT
U1ZhbHVlTGlzdCYgc3JjTGlzdCwgRG8KICAgICAgICAgICAgIGJvb2wgYWxsb3dEb3dubG9hZGlu
ZyA9IGZvdW5kU1ZHRm9udCB8fCAoc2V0dGluZ3MgJiYgc2V0dGluZ3MtPmRvd25sb2FkYWJsZUJp
bmFyeUZvbnRzRW5hYmxlZCgpKTsKICAgICAgICAgICAgIGlmIChhbGxvd0Rvd25sb2FkaW5nICYm
IGl0ZW0uaXNTdXBwb3J0ZWRGb3JtYXQoKSAmJiBkb2N1bWVudCkgewogICAgICAgICAgICAgICAg
IGlmIChDYWNoZWRGb250KiBjYWNoZWRGb250ID0gaXRlbS5jYWNoZWRGb250KGRvY3VtZW50LCBm
b3VuZFNWR0ZvbnQsIGlzSW5pdGlhdGluZ0VsZW1lbnRJblVzZXJBZ2VudFNoYWRvd1RyZWUpKQot
ICAgICAgICAgICAgICAgICAgICBzb3VyY2UgPSBtYWtlVW5pcXVlPENTU0ZvbnRGYWNlU291cmNl
Pihmb250RmFjZSwgaXRlbS5yZXNvdXJjZSgpLCBjYWNoZWRGb250KTsKKyAgICAgICAgICAgICAg
ICAgICAgc291cmNlID0gbWFrZVVuaXF1ZTxDU1NGb250RmFjZVNvdXJjZT4oZm9udEZhY2UsIGl0
ZW0ucmVzb3VyY2UoKSwgZG9jdW1lbnQtPmZvbnRTZWxlY3RvcigpLCAqY2FjaGVkRm9udCk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgc291cmNlID0gbWFrZVVu
aXF1ZTxDU1NGb250RmFjZVNvdXJjZT4oZm9udEZhY2UsIGl0ZW0ucmVzb3VyY2UoKSwgbnVsbHB0
ciwgZm9udEZhY2VFbGVtZW50KTsKKyAgICAgICAgICAgIHNvdXJjZSA9IG1ha2VVbmlxdWU8Q1NT
Rm9udEZhY2VTb3VyY2U+KGZvbnRGYWNlLCBpdGVtLnJlc291cmNlKCksICpmb250RmFjZUVsZW1l
bnQpOwogCiAgICAgICAgIGlmIChzb3VyY2UpCiAgICAgICAgICAgICBmb250RmFjZS5hZG9wdFNv
dXJjZShXVEZNb3ZlKHNvdXJjZSkpOwpAQCAtODksMTIgKzg5LDEyIEBAIHZvaWQgQ1NTRm9udEZh
Y2U6OmFwcGVuZFNvdXJjZXMoQ1NTRm9udEZhY2UmIGZvbnRGYWNlLCBDU1NWYWx1ZUxpc3QmIHNy
Y0xpc3QsIERvCiAgICAgZm9udEZhY2Uuc291cmNlc1BvcHVsYXRlZCgpOwogfQogCi1DU1NGb250
RmFjZTo6Q1NTRm9udEZhY2UoQ1NTRm9udFNlbGVjdG9yKiBmb250U2VsZWN0b3IsIFN0eWxlUnVs
ZUZvbnRGYWNlKiBjc3NDb25uZWN0aW9uLCBGb250RmFjZSogd3JhcHBlciwgYm9vbCBpc0xvY2Fs
RmFsbGJhY2spCi0gICAgOiBDU1NGb250RmFjZShmb250U2VsZWN0b3IgJiYgZm9udFNlbGVjdG9y
LT5kb2N1bWVudCgpID8gJmZvbnRTZWxlY3Rvci0+ZG9jdW1lbnQoKS0+c2V0dGluZ3MoKSA6IG51
bGxwdHIsIGNzc0Nvbm5lY3Rpb24sIHdyYXBwZXIsIGlzTG9jYWxGYWxsYmFjaykKK1JlZjxDU1NG
b250RmFjZT4gQ1NTRm9udEZhY2U6OmNyZWF0ZShDU1NGb250U2VsZWN0b3IqIGZvbnRTZWxlY3Rv
ciwgU3R5bGVSdWxlRm9udEZhY2UqIGNzc0Nvbm5lY3Rpb24sIEZvbnRGYWNlKiB3cmFwcGVyLCBi
b29sIGlzTG9jYWxGYWxsYmFjaykKIHsKLSAgICBtX2ZvbnRTZWxlY3RvciA9IG1ha2VXZWFrUHRy
KGZvbnRTZWxlY3Rvcik7IC8vIEZJWE1FOiBJZGVhbGx5IHRoaXMgZGF0YSBtZW1iZXIgd291bGQg
Z28gYXdheSAoaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODM1MSku
CisgICAgYXV0byByZXN1bHQgPSBhZG9wdFJlZigqbmV3IENTU0ZvbnRGYWNlKChmb250U2VsZWN0
b3IgJiYgZm9udFNlbGVjdG9yLT5kb2N1bWVudCgpKSA/ICZmb250U2VsZWN0b3ItPmRvY3VtZW50
KCktPnNldHRpbmdzKCkgOiBudWxscHRyLCBjc3NDb25uZWN0aW9uLCB3cmFwcGVyLCBpc0xvY2Fs
RmFsbGJhY2spKTsKICAgICBpZiAoZm9udFNlbGVjdG9yKQotICAgICAgICBhZGRDbGllbnQoKmZv
bnRTZWxlY3Rvcik7CisgICAgICAgIHJlc3VsdC0+YWRkQ2xpZW50KCpmb250U2VsZWN0b3IpOwor
ICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIENTU0ZvbnRGYWNlOjpDU1NGb250RmFjZShjb25zdCBT
ZXR0aW5ncyogc2V0dGluZ3MsIFN0eWxlUnVsZUZvbnRGYWNlKiBjc3NDb25uZWN0aW9uLCBGb250
RmFjZSogd3JhcHBlciwgYm9vbCBpc0xvY2FsRmFsbGJhY2spCkBAIC01NDgsMTEgKzU0OCwxMSBA
QCB2b2lkIENTU0ZvbnRGYWNlOjpmb250TG9hZGVkKENTU0ZvbnRGYWNlU291cmNlJikKICAgICBm
b250TG9hZEV2ZW50T2NjdXJyZWQoKTsKIH0KIAotdm9pZCBDU1NGb250RmFjZTo6b3Bwb3J0dW5p
c3RpY2FsbHlTdGFydEZvbnREYXRhVVJMTG9hZGluZyhDU1NGb250U2VsZWN0b3ImIGZvbnRTZWxl
Y3RvcikKK3ZvaWQgQ1NTRm9udEZhY2U6Om9wcG9ydHVuaXN0aWNhbGx5U3RhcnRGb250RGF0YVVS
TExvYWRpbmcoKQogewogICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gZ28gY3JhenkgaGVyZSBhbmQg
YmxvdyB0aGUgY2FjaGUuIFVzdWFsbHkgdGhlc2UgZGF0YSBVUkxzIGFyZSB0aGUgZmlyc3QgaXRl
bSBpbiB0aGUgc3JjOiBsaXN0LCBzbyBsZXQncyBqdXN0IGNoZWNrIHRoYXQgb25lLgogICAgIGlm
ICghbV9zb3VyY2VzLmlzRW1wdHkoKSkKLSAgICAgICAgbV9zb3VyY2VzWzBdLT5vcHBvcnR1bmlz
dGljYWxseVN0YXJ0Rm9udERhdGFVUkxMb2FkaW5nKGZvbnRTZWxlY3Rvcik7CisgICAgICAgIG1f
c291cmNlc1swXS0+b3Bwb3J0dW5pc3RpY2FsbHlTdGFydEZvbnREYXRhVVJMTG9hZGluZygpOwog
fQogCiBzaXplX3QgQ1NTRm9udEZhY2U6OnB1bXAoRXh0ZXJuYWxSZXNvdXJjZURvd25sb2FkUG9s
aWN5IHBvbGljeSkKQEAgLTU3OSw3ICs1NzksNyBAQCBzaXplX3QgQ1NTRm9udEZhY2U6OnB1bXAo
RXh0ZXJuYWxSZXNvdXJjZURvd25sb2FkUG9saWN5IHBvbGljeSkKICAgICAgICAgICAgIGlmIChw
b2xpY3kgPT0gRXh0ZXJuYWxSZXNvdXJjZURvd25sb2FkUG9saWN5OjpBbGxvdyB8fCAhc291cmNl
LT5yZXF1aXJlc0V4dGVybmFsUmVzb3VyY2UoKSkgewogICAgICAgICAgICAgICAgIGlmIChwb2xp
Y3kgPT0gRXh0ZXJuYWxSZXNvdXJjZURvd25sb2FkUG9saWN5OjpBbGxvdyAmJiBtX3N0YXR1cyA9
PSBTdGF0dXM6OlBlbmRpbmcpCiAgICAgICAgICAgICAgICAgICAgIHNldFN0YXR1cyhTdGF0dXM6
OkxvYWRpbmcpOwotICAgICAgICAgICAgICAgIHNvdXJjZS0+bG9hZChtX2ZvbnRTZWxlY3Rvci5n
ZXQoKSk7CisgICAgICAgICAgICAgICAgc291cmNlLT5sb2FkKCk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KIApAQCAtNjUxLDcgKzY1MSw3IEBAIFJlZlB0cjxGb250PiBDU1NGb250RmFjZTo6
Zm9udChjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbiwgYm9vbCBzeW50CiAg
ICAgZm9yIChzaXplX3QgaSA9IHN0YXJ0SW5kZXg7IGkgPCBtX3NvdXJjZXMuc2l6ZSgpOyArK2kp
IHsKICAgICAgICAgYXV0byYgc291cmNlID0gbV9zb3VyY2VzW2ldOwogICAgICAgICBpZiAoc291
cmNlLT5zdGF0dXMoKSA9PSBDU1NGb250RmFjZVNvdXJjZTo6U3RhdHVzOjpQZW5kaW5nICYmIChw
b2xpY3kgPT0gRXh0ZXJuYWxSZXNvdXJjZURvd25sb2FkUG9saWN5OjpBbGxvdyB8fCAhc291cmNl
LT5yZXF1aXJlc0V4dGVybmFsUmVzb3VyY2UoKSkpCi0gICAgICAgICAgICBzb3VyY2UtPmxvYWQo
bV9mb250U2VsZWN0b3IuZ2V0KCkpOworICAgICAgICAgICAgc291cmNlLT5sb2FkKCk7CiAKICAg
ICAgICAgc3dpdGNoIChzb3VyY2UtPnN0YXR1cygpKSB7CiAgICAgICAgIGNhc2UgQ1NTRm9udEZh
Y2VTb3VyY2U6OlN0YXR1czo6UGVuZGluZzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NGb250RmFjZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlLmgKaW5kZXgg
ZjI2MmQwNWY3ZDcwZTVmOTNjY2YzYTY4NWFkZjE3NGFhMzY3NDc3Ny4uMTAwNDFhMzFhZmZhZGRh
Y2Q5OWY5MTY3ZjA2NjJhMDUwM2YwYjY1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0ZvbnRGYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlLmgKQEAg
LTYwLDEwICs2MCw3IEBAIERFQ0xBUkVfQUxMT0NBVE9SX1dJVEhfSEVBUF9JREVOVElGSUVSKENT
U0ZvbnRGYWNlKTsKIGNsYXNzIENTU0ZvbnRGYWNlIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8
Q1NTRm9udEZhY2U+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRF9XSVRIX0hFQVBfSURF
TlRJRklFUihDU1NGb250RmFjZSk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxDU1NGb250RmFj
ZT4gY3JlYXRlKENTU0ZvbnRTZWxlY3RvciogZm9udFNlbGVjdG9yLCBTdHlsZVJ1bGVGb250RmFj
ZSogY3NzQ29ubmVjdGlvbiA9IG51bGxwdHIsIEZvbnRGYWNlKiB3cmFwcGVyID0gbnVsbHB0ciwg
Ym9vbCBpc0xvY2FsRmFsbGJhY2sgPSBmYWxzZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IENTU0ZvbnRGYWNlKGZvbnRTZWxlY3RvciwgY3NzQ29ubmVjdGlvbiwgd3JhcHBl
ciwgaXNMb2NhbEZhbGxiYWNrKSk7Ci0gICAgfQorICAgIHN0YXRpYyBSZWY8Q1NTRm9udEZhY2U+
IGNyZWF0ZShDU1NGb250U2VsZWN0b3IqLCBTdHlsZVJ1bGVGb250RmFjZSogY3NzQ29ubmVjdGlv
biA9IG51bGxwdHIsIEZvbnRGYWNlKiB3cmFwcGVyID0gbnVsbHB0ciwgYm9vbCBpc0xvY2FsRmFs
bGJhY2sgPSBmYWxzZSk7CiAgICAgdmlydHVhbCB+Q1NTRm9udEZhY2UoKTsKIAogICAgIC8vIEZJ
WE1FOiBUaGVzZSBmdW5jdGlvbnMgZG9uJ3QgbmVlZCB0byBoYXZlIGJvb2xlYW4gcmV0dXJuIHZh
bHVlcy4KQEAgLTExMiw3ICsxMDksNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGNvbXB1dGVGYWls
dXJlU3RhdGUoKSBjb25zdDsKIAotICAgIHZvaWQgb3Bwb3J0dW5pc3RpY2FsbHlTdGFydEZvbnRE
YXRhVVJMTG9hZGluZyhDU1NGb250U2VsZWN0b3ImKTsKKyAgICB2b2lkIG9wcG9ydHVuaXN0aWNh
bGx5U3RhcnRGb250RGF0YVVSTExvYWRpbmcoKTsKIAogICAgIHZvaWQgYWRvcHRTb3VyY2Uoc3Rk
Ojp1bmlxdWVfcHRyPENTU0ZvbnRGYWNlU291cmNlPiYmKTsKICAgICB2b2lkIHNvdXJjZXNQb3B1
bGF0ZWQoKSB7IG1fc291cmNlc1BvcHVsYXRlZCA9IHRydWU7IH0KQEAgLTE2Nyw3ICsxNjQsNiBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzZXRFcnJvclN0YXRlKCk7CiAKIHByaXZhdGU6Ci0gICAgQ1NT
Rm9udEZhY2UoQ1NTRm9udFNlbGVjdG9yKiwgU3R5bGVSdWxlRm9udEZhY2UqLCBGb250RmFjZSos
IGJvb2wgaXNMb2NhbEZhbGxiYWNrKTsKICAgICBDU1NGb250RmFjZShjb25zdCBTZXR0aW5ncyos
IFN0eWxlUnVsZUZvbnRGYWNlKiwgRm9udEZhY2UqLCBib29sIGlzTG9jYWxGYWxsYmFjayk7CiAK
ICAgICBzaXplX3QgcHVtcChFeHRlcm5hbFJlc291cmNlRG93bmxvYWRQb2xpY3kpOwpAQCAtMTg2
LDcgKzE4Miw2IEBAIHByaXZhdGU6CiAgICAgRm9udExvYWRpbmdCZWhhdmlvciBtX2xvYWRpbmdC
ZWhhdmlvciB7IEZvbnRMb2FkaW5nQmVoYXZpb3I6OkF1dG8gfTsKIAogICAgIFZlY3RvcjxzdGQ6
OnVuaXF1ZV9wdHI8Q1NTRm9udEZhY2VTb3VyY2U+LCAwLCBDcmFzaE9uT3ZlcmZsb3csIDA+IG1f
c291cmNlczsKLSAgICBXZWFrUHRyPENTU0ZvbnRTZWxlY3Rvcj4gbV9mb250U2VsZWN0b3I7IC8v
IEZJWE1FOiBJZGVhbGx5IHRoaXMgZGF0YSBtZW1iZXIgd291bGQgZ28gYXdheSAoaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODM1MSkuCiAgICAgUmVmUHRyPFN0eWxl
UnVsZUZvbnRGYWNlPiBtX2Nzc0Nvbm5lY3Rpb247CiAgICAgSGFzaFNldDxDbGllbnQqPiBtX2Ns
aWVudHM7CiAgICAgV2Vha1B0cjxGb250RmFjZT4gbV93cmFwcGVyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NGb250RmFjZVNvdXJjZS5jcHAKaW5kZXggZTZlYTE4MTZmZmMzY2E2ZDA0NTAyM2E4ZGE3
NzM0YmRhYzUyMjg2NC4uMzViZjAyOWExOTBhZDdkY2VhNmIyZDM5MTczOTljMzg5MWFkNTdjOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwCkBAIC02NiwyMiArNjYs
MjUgQEAgaW5saW5lIHZvaWQgQ1NTRm9udEZhY2VTb3VyY2U6OnNldFN0YXR1cyhTdGF0dXMgbmV3
U3RhdHVzKQogICAgIG1fc3RhdHVzID0gbmV3U3RhdHVzOwogfQogCi1DU1NGb250RmFjZVNvdXJj
ZTo6Q1NTRm9udEZhY2VTb3VyY2UoQ1NTRm9udEZhY2UmIG93bmVyLCBjb25zdCBTdHJpbmcmIGZh
bWlseU5hbWVPclVSSSwgQ2FjaGVkRm9udCogZm9udCwgU1ZHRm9udEZhY2VFbGVtZW50KiBmb250
RmFjZSwgUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXJWaWV3PiYmIGFycmF5QnVmZmVyVmlldykKK0NT
U0ZvbnRGYWNlU291cmNlOjpDU1NGb250RmFjZVNvdXJjZShDU1NGb250RmFjZSYgb3duZXIsIGNv
bnN0IFN0cmluZyYgZmFtaWx5TmFtZU9yVVJJKQogICAgIDogbV9mYW1pbHlOYW1lT3JVUkkoZmFt
aWx5TmFtZU9yVVJJKQotICAgICwgbV9mb250KGZvbnQpCiAgICAgLCBtX2ZhY2Uob3duZXIpCi0g
ICAgLCBtX2ltbWVkaWF0ZVNvdXJjZShXVEZNb3ZlKGFycmF5QnVmZmVyVmlldykpCi0gICAgLCBt
X3N2Z0ZvbnRGYWNlRWxlbWVudChtYWtlV2Vha1B0cihmb250RmFjZSkpCi0gICAgLCBtX2hhc1NW
R0ZvbnRGYWNlRWxlbWVudChtX3N2Z0ZvbnRGYWNlRWxlbWVudCkKK3sKK30KKworQ1NTRm9udEZh
Y2VTb3VyY2U6OkNTU0ZvbnRGYWNlU291cmNlKENTU0ZvbnRGYWNlJiBvd25lciwgY29uc3QgU3Ry
aW5nJiBmYW1pbHlOYW1lT3JVUkksIENTU0ZvbnRTZWxlY3RvciYgZm9udFNlbGVjdG9yLCBDYWNo
ZWRGb250JiBmb250KQorICAgIDogbV9mYW1pbHlOYW1lT3JVUkkoZmFtaWx5TmFtZU9yVVJJKQor
ICAgICwgbV9mYWNlKG93bmVyKQorICAgICwgbV9mb250U2VsZWN0b3IobWFrZVdlYWtQdHIoZm9u
dFNlbGVjdG9yKSkKKyAgICAsIG1fZm9udCgmZm9udCkKIHsKICAgICAvLyBUaGlzIG1heSBzeW5j
aHJvbm91c2x5IGNhbGwgZm9udExvYWRlZCgpLgotICAgIGlmIChtX2ZvbnQpCi0gICAgICAgIG1f
Zm9udC0+YWRkQ2xpZW50KCp0aGlzKTsKKyAgICBtX2ZvbnQtPmFkZENsaWVudCgqdGhpcyk7CiAK
LSAgICBpZiAoc3RhdHVzKCkgPT0gU3RhdHVzOjpQZW5kaW5nICYmIG1fZm9udCAmJiBtX2ZvbnQt
PmlzTG9hZGVkKCkpIHsKKyAgICBpZiAoc3RhdHVzKCkgPT0gU3RhdHVzOjpQZW5kaW5nICYmIG1f
Zm9udC0+aXNMb2FkZWQoKSkgewogICAgICAgICBzZXRTdGF0dXMoU3RhdHVzOjpMb2FkaW5nKTsK
ICAgICAgICAgaWYgKCFzaG91bGRJZ25vcmVGb250TG9hZENvbXBsZXRpb25zKCkpIHsKLSAgICAg
ICAgICAgIGlmIChtX2ZvbnQgJiYgbV9mb250LT5lcnJvck9jY3VycmVkKCkpCisgICAgICAgICAg
ICBpZiAobV9mb250LT5lcnJvck9jY3VycmVkKCkpCiAgICAgICAgICAgICAgICAgc2V0U3RhdHVz
KFN0YXR1czo6RmFpbHVyZSk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgc2V0
U3RhdHVzKFN0YXR1czo6U3VjY2Vzcyk7CkBAIC04OSw2ICs5MiwyMSBAQCBDU1NGb250RmFjZVNv
dXJjZTo6Q1NTRm9udEZhY2VTb3VyY2UoQ1NTRm9udEZhY2UmIG93bmVyLCBjb25zdCBTdHJpbmcm
IGZhbWlseU5hbQogICAgIH0KIH0KIAorQ1NTRm9udEZhY2VTb3VyY2U6OkNTU0ZvbnRGYWNlU291
cmNlKENTU0ZvbnRGYWNlJiBvd25lciwgY29uc3QgU3RyaW5nJiBmYW1pbHlOYW1lT3JVUkksIFNW
R0ZvbnRGYWNlRWxlbWVudCYgZm9udEZhY2UpCisgICAgOiBtX2ZhbWlseU5hbWVPclVSSShmYW1p
bHlOYW1lT3JVUkkpCisgICAgLCBtX2ZhY2Uob3duZXIpCisgICAgLCBtX3N2Z0ZvbnRGYWNlRWxl
bWVudChtYWtlV2Vha1B0cihmb250RmFjZSkpCisgICAgLCBtX2hhc1NWR0ZvbnRGYWNlRWxlbWVu
dCh0cnVlKQoreworfQorCitDU1NGb250RmFjZVNvdXJjZTo6Q1NTRm9udEZhY2VTb3VyY2UoQ1NT
Rm9udEZhY2UmIG93bmVyLCBjb25zdCBTdHJpbmcmIGZhbWlseU5hbWVPclVSSSwgUmVmPEpTQzo6
QXJyYXlCdWZmZXJWaWV3PiYmIGFycmF5QnVmZmVyVmlldykKKyAgICA6IG1fZmFtaWx5TmFtZU9y
VVJJKGZhbWlseU5hbWVPclVSSSkKKyAgICAsIG1fZmFjZShvd25lcikKKyAgICAsIG1faW1tZWRp
YXRlU291cmNlKFdURk1vdmUoYXJyYXlCdWZmZXJWaWV3KSkKK3sKK30KKwogQ1NTRm9udEZhY2VT
b3VyY2U6On5DU1NGb250RmFjZVNvdXJjZSgpCiB7CiAgICAgaWYgKG1fZm9udCkKQEAgLTEwMCwx
MCArMTE4LDEwIEBAIGJvb2wgQ1NTRm9udEZhY2VTb3VyY2U6OnNob3VsZElnbm9yZUZvbnRMb2Fk
Q29tcGxldGlvbnMoKSBjb25zdAogICAgIHJldHVybiBtX2ZhY2Uuc2hvdWxkSWdub3JlRm9udExv
YWRDb21wbGV0aW9ucygpOwogfQogCi12b2lkIENTU0ZvbnRGYWNlU291cmNlOjpvcHBvcnR1bmlz
dGljYWxseVN0YXJ0Rm9udERhdGFVUkxMb2FkaW5nKENTU0ZvbnRTZWxlY3RvciYgZm9udFNlbGVj
dG9yKQordm9pZCBDU1NGb250RmFjZVNvdXJjZTo6b3Bwb3J0dW5pc3RpY2FsbHlTdGFydEZvbnRE
YXRhVVJMTG9hZGluZygpCiB7CiAgICAgaWYgKHN0YXR1cygpID09IFN0YXR1czo6UGVuZGluZyAm
JiBtX2ZvbnQgJiYgbV9mb250LT51cmwoKS5wcm90b2NvbElzRGF0YSgpICYmIG1fZmFtaWx5TmFt
ZU9yVVJJLmxlbmd0aCgpIDwgTUIpCi0gICAgICAgIGxvYWQoJmZvbnRTZWxlY3Rvcik7CisgICAg
ICAgIGxvYWQoKTsKIH0KIAogdm9pZCBDU1NGb250RmFjZVNvdXJjZTo6Zm9udExvYWRlZChDYWNo
ZWRGb250JiBsb2FkZWRGb250KQpAQCAtMTMyLDEzICsxNTAsMTMgQEAgdm9pZCBDU1NGb250RmFj
ZVNvdXJjZTo6Zm9udExvYWRlZChDYWNoZWRGb250JiBsb2FkZWRGb250KQogICAgIG1fZmFjZS5m
b250TG9hZGVkKCp0aGlzKTsKIH0KIAotdm9pZCBDU1NGb250RmFjZVNvdXJjZTo6bG9hZChDU1NG
b250U2VsZWN0b3IqIGZvbnRTZWxlY3RvcikKK3ZvaWQgQ1NTRm9udEZhY2VTb3VyY2U6OmxvYWQo
KQogewogICAgIHNldFN0YXR1cyhTdGF0dXM6OkxvYWRpbmcpOwogCiAgICAgaWYgKG1fZm9udCkg
ewotICAgICAgICBBU1NFUlQoZm9udFNlbGVjdG9yKTsKLSAgICAgICAgZm9udFNlbGVjdG9yLT5i
ZWdpbkxvYWRpbmdGb250U29vbigqbV9mb250KTsKKyAgICAgICAgQVNTRVJUKG1fZm9udFNlbGVj
dG9yKTsKKyAgICAgICAgbV9mb250U2VsZWN0b3ItPmJlZ2luTG9hZGluZ0ZvbnRTb29uKCptX2Zv
bnQpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGJvb2wgc3VjY2VzcyA9IGZhbHNlOwogICAgICAg
ICBpZiAobV9oYXNTVkdGb250RmFjZUVsZW1lbnQpIHsKQEAgLTE2Nyw4ICsxODUsOCBAQCB2b2lk
IENTU0ZvbnRGYWNlU291cmNlOjpsb2FkKENTU0ZvbnRTZWxlY3RvciogZm9udFNlbGVjdG9yKQog
ICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldENvbXB1dGVkU2l6ZSgxKTsKICAgICAgICAg
ICAgIGZvbnREZXNjcmlwdGlvbi5zZXRTaG91bGRBbGxvd1VzZXJJbnN0YWxsZWRGb250cyhtX2Zh
Y2UuYWxsb3dVc2VySW5zdGFsbGVkRm9udHMoKSk7CiAgICAgICAgICAgICBzdWNjZXNzID0gRm9u
dENhY2hlOjpzaW5nbGV0b24oKS5mb250Rm9yRmFtaWx5KGZvbnREZXNjcmlwdGlvbiwgbV9mYW1p
bHlOYW1lT3JVUkksIG51bGxwdHIsIEZvbnRTZWxlY3Rpb25TcGVjaWZpZWRDYXBhYmlsaXRpZXMo
KSwgdHJ1ZSk7Ci0gICAgICAgICAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVk
RmVhdHVyZXMoKS53ZWJBUElTdGF0aXN0aWNzRW5hYmxlZCgpKSB7Ci0gICAgICAgICAgICAgICAg
aWYgKGF1dG8qIGRvY3VtZW50ID0gZm9udFNlbGVjdG9yLT5kb2N1bWVudCgpKQorICAgICAgICAg
ICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkud2ViQVBJU3Rh
dGlzdGljc0VuYWJsZWQoKSAmJiBtX2ZvbnRTZWxlY3RvcikgeworICAgICAgICAgICAgICAgIGlm
IChhdXRvKiBkb2N1bWVudCA9IG1fZm9udFNlbGVjdG9yLT5kb2N1bWVudCgpKQogICAgICAgICAg
ICAgICAgICAgICBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCkubG9nRm9udExvYWQoKmRv
Y3VtZW50LCBtX2ZhbWlseU5hbWVPclVSSS5zdHJpbmcoKSwgc3VjY2Vzcyk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFj
ZVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmgKaW5kZXgg
N2VhYjU5ODk1NjBhNDE2OThiZjY0MmMxZGNmYWFjNTk4Zjc2NmU2OS4uZTFmMzE2YWI4NGFjY2Q1
ZDZlNDFhOWVkZTEzMTRlZmVlMjgzMTBlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0ZvbnRGYWNlU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNl
U291cmNlLmgKQEAgLTQ5LDcgKzQ5LDEwIEBAIHR5cGVkZWYgRm9udFRhZ2dlZFNldHRpbmdzPGlu
dD4gRm9udEZlYXR1cmVTZXR0aW5nczsKIGNsYXNzIENTU0ZvbnRGYWNlU291cmNlIGZpbmFsIDog
cHVibGljIENhY2hlZEZvbnRDbGllbnQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgotICAgIENTU0ZvbnRGYWNlU291cmNlKENTU0ZvbnRGYWNlJiBvd25lciwgY29uc3Qg
U3RyaW5nJiBmYW1pbHlOYW1lT3JVUkksIENhY2hlZEZvbnQqID0gbnVsbHB0ciwgU1ZHRm9udEZh
Y2VFbGVtZW50KiA9IG51bGxwdHIsIFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyVmlldz4mJiA9IG51
bGxwdHIpOworICAgIENTU0ZvbnRGYWNlU291cmNlKENTU0ZvbnRGYWNlJiBvd25lciwgY29uc3Qg
U3RyaW5nJiBmYW1pbHlOYW1lT3JVUkkpOworICAgIENTU0ZvbnRGYWNlU291cmNlKENTU0ZvbnRG
YWNlJiBvd25lciwgY29uc3QgU3RyaW5nJiBmYW1pbHlOYW1lT3JVUkksIENTU0ZvbnRTZWxlY3Rv
ciYsIENhY2hlZEZvbnQmKTsKKyAgICBDU1NGb250RmFjZVNvdXJjZShDU1NGb250RmFjZSYgb3du
ZXIsIGNvbnN0IFN0cmluZyYgZmFtaWx5TmFtZU9yVVJJLCBTVkdGb250RmFjZUVsZW1lbnQmKTsK
KyAgICBDU1NGb250RmFjZVNvdXJjZShDU1NGb250RmFjZSYgb3duZXIsIGNvbnN0IFN0cmluZyYg
ZmFtaWx5TmFtZU9yVVJJLCBSZWY8SlNDOjpBcnJheUJ1ZmZlclZpZXc+JiYpOwogICAgIHZpcnR1
YWwgfkNTU0ZvbnRGYWNlU291cmNlKCk7CiAKICAgICAvLyAgICAgICAgICAgICAgICAgICAgICA9
PiBTdWNjZXNzCkBAIC02Nyw5ICs3MCw5IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IEF0b21TdHJp
bmcmIGZhbWlseU5hbWVPclVSSSgpIGNvbnN0IHsgcmV0dXJuIG1fZmFtaWx5TmFtZU9yVVJJOyB9
CiAKLSAgICB2b2lkIG9wcG9ydHVuaXN0aWNhbGx5U3RhcnRGb250RGF0YVVSTExvYWRpbmcoQ1NT
Rm9udFNlbGVjdG9yJik7CisgICAgdm9pZCBvcHBvcnR1bmlzdGljYWxseVN0YXJ0Rm9udERhdGFV
UkxMb2FkaW5nKCk7CiAKLSAgICB2b2lkIGxvYWQoQ1NTRm9udFNlbGVjdG9yKik7CisgICAgdm9p
ZCBsb2FkKCk7CiAgICAgUmVmUHRyPEZvbnQ+IGZvbnQoY29uc3QgRm9udERlc2NyaXB0aW9uJiwg
Ym9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY0l0YWxpYywgY29uc3QgRm9udEZlYXR1
cmVTZXR0aW5ncyYsIEZvbnRTZWxlY3Rpb25TcGVjaWZpZWRDYXBhYmlsaXRpZXMpOwogCiAgICAg
Q2FjaGVkRm9udCogY2FjaGVkRm9udCgpIGNvbnN0IHsgcmV0dXJuIG1fZm9udC5nZXQoKTsgfQpA
QCAtODUsOCArODgsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0U3RhdHVzKFN0YXR1cyk7CiAK
ICAgICBBdG9tU3RyaW5nIG1fZmFtaWx5TmFtZU9yVVJJOyAvLyBVUkkgZm9yIHJlbW90ZSwgYnVp
bHQtaW4gZm9udCBuYW1lIGZvciBsb2NhbC4KLSAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNo
ZWRGb250PiBtX2ZvbnQ7IC8vIEZvciByZW1vdGUgZm9udHMsIGEgcG9pbnRlciB0byBvdXIgY2Fj
aGVkIHJlc291cmNlLgogICAgIENTU0ZvbnRGYWNlJiBtX2ZhY2U7IC8vIE91ciBvd25pbmcgZm9u
dCBmYWNlLgorICAgIFdlYWtQdHI8Q1NTRm9udFNlbGVjdG9yPiBtX2ZvbnRTZWxlY3RvcjsgLy8g
Rm9yIHJlbW90ZSBmb250cywgdG8gb3JjaGVzdHJhdGUgbG9hZGluZy4KKyAgICBDYWNoZWRSZXNv
dXJjZUhhbmRsZTxDYWNoZWRGb250PiBtX2ZvbnQ7IC8vIEFsc28gZm9yIHJlbW90ZSBmb250cywg
YSBwb2ludGVyIHRvIG91ciBjYWNoZWQgcmVzb3VyY2UuCiAKICAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBtX2dlbmVyYXRlZE9URkJ1ZmZlcjsKICAgICBSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlclZp
ZXc+IG1faW1tZWRpYXRlU291cmNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0ZvbnRTZWxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNw
cAppbmRleCBkMGMyMzM2OTZhMmY2ZTdhNWVmOTcyYjdmZTRlNWUxNWE2Zjg2MzlkLi5iMDdiOTk0
Y2JlYTBlMGQ5ZDk0ZWFjOWQ5YjBkNjY1NjEwNjE5MzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Rm9udFNlbGVjdG9yLmNwcApAQCAtMjQ1LDcgKzI0NSw3IEBAIHZvaWQgQ1NTRm9udFNlbGVjdG9y
OjpvcHBvcnR1bmlzdGljYWxseVN0YXJ0Rm9udERhdGFVUkxMb2FkaW5nKGNvbnN0IEZvbnRDYXNj
YWRlCiAgICAgaWYgKCFzZWdtZW50ZWRGb250RmFjZSkKICAgICAgICAgcmV0dXJuOwogICAgIGZv
ciAoYXV0byYgZmFjZSA6IHNlZ21lbnRlZEZvbnRGYWNlLT5jb25zdGl0dWVudEZhY2VzKCkpCi0g
ICAgICAgIGZhY2UtPm9wcG9ydHVuaXN0aWNhbGx5U3RhcnRGb250RGF0YVVSTExvYWRpbmcoKnRo
aXMpOworICAgICAgICBmYWNlLT5vcHBvcnR1bmlzdGljYWxseVN0YXJ0Rm9udERhdGFVUkxMb2Fk
aW5nKCk7CiB9CiAKIHZvaWQgQ1NTRm9udFNlbGVjdG9yOjpmb250TG9hZGVkKENTU0ZvbnRGYWNl
JikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvRm9udEZhY2UuY3BwCmluZGV4IDNmNzY4MjFlNGQwOWViYWYzMjBiNDM1MmRk
ZTYwMzQ5MzcyMmJhNGMuLjNiZDhjMDY5MDM4Nzc4NzQ2Y2U0YmI2ZTkzMmY5M2EyYzQ2OGY5NWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmNwcApAQCAtNTAsNyArNTAsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIHN0YXRpYyBib29sIHBvcHVsYXRlRm9udEZhY2VXaXRoQXJyYXlCdWZmZXIoQ1NT
Rm9udEZhY2UmIGZvbnRGYWNlLCBSZWY8SlNDOjpBcnJheUJ1ZmZlclZpZXc+JiYgYXJyYXlCdWZm
ZXJWaWV3KQogewotICAgIGF1dG8gc291cmNlID0gbWFrZVVuaXF1ZTxDU1NGb250RmFjZVNvdXJj
ZT4oZm9udEZhY2UsIFN0cmluZygpLCBudWxscHRyLCBudWxscHRyLCBXVEZNb3ZlKGFycmF5QnVm
ZmVyVmlldykpOworICAgIGF1dG8gc291cmNlID0gbWFrZVVuaXF1ZTxDU1NGb250RmFjZVNvdXJj
ZT4oZm9udEZhY2UsIFN0cmluZygpLCBXVEZNb3ZlKGFycmF5QnVmZmVyVmlldykpOwogICAgIGZv
bnRGYWNlLmFkb3B0U291cmNlKFdURk1vdmUoc291cmNlKSk7CiAgICAgcmV0dXJuIGZhbHNlOwog
fQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>421301</attachid>
            <date>2021-02-23 04:18:12 -0800</date>
            <delta_ts>2021-02-24 05:04:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208351-20210223121811.patch</filename>
            <type>text/plain</type>
            <size>15563</size>
            <attacher name="Chris Lord">clord</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczMjQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmMzOGY3OGY2ZTcyMGI1
ODYwZTZjZDliYmMyZDA5NjkwNGEyNTQ4Yy4uOTAyYWZhMzBkZTcwY2I0MzYzNGFlMWRhNjA2ZTVj
MjIzMzRjNmEyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDIxLTAyLTIyICBDaHJp
cyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KKworICAgICAgICBDU1NGb250RmFjZSBzaG91bGQg
bm90IG5lZWQgaXRzIG1fZm9udFNlbGVjdG9yIGRhdGEgbWVtYmVyCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDgzNTEKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzc0MzQ2MzAyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIE1vdmUgdGhlIG1fZm9udFNlbGVjdG9yIG1lbWJlciBvZiBDU1NGb250RmFjZSBv
bnRvIENTU0ZvbnRGYWNlU291cmNlLAorICAgICAgICB0aGUgb25seSBwbGFjZSB3aGVyZSBpdCdz
IGFjdHVhbGx5IHJlcXVpcmVkLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoZXJl
IGlzIG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIGNzcy9DU1NGb250RmFjZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZTo6YXBwZW5kU291cmNlcyk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NGb250RmFjZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Zv
bnRGYWNlOjpvcHBvcnR1bmlzdGljYWxseVN0YXJ0Rm9udERhdGFVUkxMb2FkaW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlOjpwdW1wKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Zv
bnRGYWNlOjpmb250KToKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2UuaDoKKyAgICAgICAgKiBj
c3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2VT
b3VyY2U6OkNTU0ZvbnRGYWNlU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNl
U291cmNlOjpvcHBvcnR1bmlzdGljYWxseVN0YXJ0Rm9udERhdGFVUkxMb2FkaW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU291cmNlOjpsb2FkKToKKyAgICAgICAgKiBjc3MvQ1NT
Rm9udEZhY2VTb3VyY2UuaDoKKyAgICAgICAgKiBjc3MvQ1NTRm9udFNlbGVjdG9yLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRTZWxlY3Rvcjo6b3Bwb3J0dW5pc3RpY2FsbHlTdGFydEZv
bnREYXRhVVJMTG9hZGluZyk6CisgICAgICAgICogY3NzL0ZvbnRGYWNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnBvcHVsYXRlRm9udEZhY2VXaXRoQXJyYXlCdWZmZXIpOgorCiAyMDIxLTAyLTIy
ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtJbnRl
Z3JhdGlvbl0gU3dpdGNoIG91dCBpZiBsYXJnZSB0cmVlcyBhcmUgYmVpbmcgaW52YWxpZGF0ZWQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTRm9udEZhY2UuY3BwCmluZGV4IDQyODMyY2M0OWY0ZDNmMjAwODNhMjI4
YTlhYmJhN2VjNzc5ODA1N2QuLjBlZTFhMTMwYmM2NzZlNGEzNzVlODg1NTIxYTg0MGFkZGJlOWRk
M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlLmNwcApAQCAtNzgsMTAgKzc4LDEwIEBAIHZv
aWQgQ1NTRm9udEZhY2U6OmFwcGVuZFNvdXJjZXMoQ1NTRm9udEZhY2UmIGZvbnRGYWNlLCBDU1NW
YWx1ZUxpc3QmIHNyY0xpc3QsIERvCiAgICAgICAgICAgICBib29sIGFsbG93RG93bmxvYWRpbmcg
PSBmb3VuZFNWR0ZvbnQgfHwgKHNldHRpbmdzICYmIHNldHRpbmdzLT5kb3dubG9hZGFibGVCaW5h
cnlGb250c0VuYWJsZWQoKSk7CiAgICAgICAgICAgICBpZiAoYWxsb3dEb3dubG9hZGluZyAmJiBp
dGVtLmlzU3VwcG9ydGVkRm9ybWF0KCkgJiYgZG9jdW1lbnQpIHsKICAgICAgICAgICAgICAgICBp
ZiAoQ2FjaGVkRm9udCogY2FjaGVkRm9udCA9IGl0ZW0uY2FjaGVkRm9udChkb2N1bWVudCwgZm91
bmRTVkdGb250LCBpc0luaXRpYXRpbmdFbGVtZW50SW5Vc2VyQWdlbnRTaGFkb3dUcmVlKSkKLSAg
ICAgICAgICAgICAgICAgICAgc291cmNlID0gbWFrZVVuaXF1ZTxDU1NGb250RmFjZVNvdXJjZT4o
Zm9udEZhY2UsIGl0ZW0ucmVzb3VyY2UoKSwgY2FjaGVkRm9udCk7CisgICAgICAgICAgICAgICAg
ICAgIHNvdXJjZSA9IG1ha2VVbmlxdWU8Q1NTRm9udEZhY2VTb3VyY2U+KGZvbnRGYWNlLCBpdGVt
LnJlc291cmNlKCksIGRvY3VtZW50LT5mb250U2VsZWN0b3IoKSwgKmNhY2hlZEZvbnQpOwogICAg
ICAgICAgICAgfQogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHNvdXJjZSA9IG1ha2VVbmlx
dWU8Q1NTRm9udEZhY2VTb3VyY2U+KGZvbnRGYWNlLCBpdGVtLnJlc291cmNlKCksIG51bGxwdHIs
IGZvbnRGYWNlRWxlbWVudCk7CisgICAgICAgICAgICBzb3VyY2UgPSBtYWtlVW5pcXVlPENTU0Zv
bnRGYWNlU291cmNlPihmb250RmFjZSwgaXRlbS5yZXNvdXJjZSgpLCAqZm9udEZhY2VFbGVtZW50
KTsKIAogICAgICAgICBpZiAoc291cmNlKQogICAgICAgICAgICAgZm9udEZhY2UuYWRvcHRTb3Vy
Y2UoV1RGTW92ZShzb3VyY2UpKTsKQEAgLTg5LDEyICs4OSwxMiBAQCB2b2lkIENTU0ZvbnRGYWNl
OjphcHBlbmRTb3VyY2VzKENTU0ZvbnRGYWNlJiBmb250RmFjZSwgQ1NTVmFsdWVMaXN0JiBzcmNM
aXN0LCBEbwogICAgIGZvbnRGYWNlLnNvdXJjZXNQb3B1bGF0ZWQoKTsKIH0KIAotQ1NTRm9udEZh
Y2U6OkNTU0ZvbnRGYWNlKENTU0ZvbnRTZWxlY3RvciogZm9udFNlbGVjdG9yLCBTdHlsZVJ1bGVG
b250RmFjZSogY3NzQ29ubmVjdGlvbiwgRm9udEZhY2UqIHdyYXBwZXIsIGJvb2wgaXNMb2NhbEZh
bGxiYWNrKQotICAgIDogQ1NTRm9udEZhY2UoZm9udFNlbGVjdG9yICYmIGZvbnRTZWxlY3Rvci0+
ZG9jdW1lbnQoKSA/ICZmb250U2VsZWN0b3ItPmRvY3VtZW50KCktPnNldHRpbmdzKCkgOiBudWxs
cHRyLCBjc3NDb25uZWN0aW9uLCB3cmFwcGVyLCBpc0xvY2FsRmFsbGJhY2spCitSZWY8Q1NTRm9u
dEZhY2U+IENTU0ZvbnRGYWNlOjpjcmVhdGUoQ1NTRm9udFNlbGVjdG9yKiBmb250U2VsZWN0b3Is
IFN0eWxlUnVsZUZvbnRGYWNlKiBjc3NDb25uZWN0aW9uLCBGb250RmFjZSogd3JhcHBlciwgYm9v
bCBpc0xvY2FsRmFsbGJhY2spCiB7Ci0gICAgbV9mb250U2VsZWN0b3IgPSBtYWtlV2Vha1B0cihm
b250U2VsZWN0b3IpOyAvLyBGSVhNRTogSWRlYWxseSB0aGlzIGRhdGEgbWVtYmVyIHdvdWxkIGdv
IGF3YXkgKGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDgzNTEpLgor
ICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRSZWYoKm5ldyBDU1NGb250RmFjZSgoZm9udFNlbGVjdG9y
ICYmIGZvbnRTZWxlY3Rvci0+ZG9jdW1lbnQoKSkgPyAmZm9udFNlbGVjdG9yLT5kb2N1bWVudCgp
LT5zZXR0aW5ncygpIDogbnVsbHB0ciwgY3NzQ29ubmVjdGlvbiwgd3JhcHBlciwgaXNMb2NhbEZh
bGxiYWNrKSk7CiAgICAgaWYgKGZvbnRTZWxlY3RvcikKLSAgICAgICAgYWRkQ2xpZW50KCpmb250
U2VsZWN0b3IpOworICAgICAgICByZXN1bHQtPmFkZENsaWVudCgqZm9udFNlbGVjdG9yKTsKKyAg
ICByZXR1cm4gcmVzdWx0OwogfQogCiBDU1NGb250RmFjZTo6Q1NTRm9udEZhY2UoY29uc3QgU2V0
dGluZ3MqIHNldHRpbmdzLCBTdHlsZVJ1bGVGb250RmFjZSogY3NzQ29ubmVjdGlvbiwgRm9udEZh
Y2UqIHdyYXBwZXIsIGJvb2wgaXNMb2NhbEZhbGxiYWNrKQpAQCAtNTQ4LDExICs1NDgsMTEgQEAg
dm9pZCBDU1NGb250RmFjZTo6Zm9udExvYWRlZChDU1NGb250RmFjZVNvdXJjZSYpCiAgICAgZm9u
dExvYWRFdmVudE9jY3VycmVkKCk7CiB9CiAKLXZvaWQgQ1NTRm9udEZhY2U6Om9wcG9ydHVuaXN0
aWNhbGx5U3RhcnRGb250RGF0YVVSTExvYWRpbmcoQ1NTRm9udFNlbGVjdG9yJiBmb250U2VsZWN0
b3IpCit2b2lkIENTU0ZvbnRGYWNlOjpvcHBvcnR1bmlzdGljYWxseVN0YXJ0Rm9udERhdGFVUkxM
b2FkaW5nKCkKIHsKICAgICAvLyBXZSBkb24ndCB3YW50IHRvIGdvIGNyYXp5IGhlcmUgYW5kIGJs
b3cgdGhlIGNhY2hlLiBVc3VhbGx5IHRoZXNlIGRhdGEgVVJMcyBhcmUgdGhlIGZpcnN0IGl0ZW0g
aW4gdGhlIHNyYzogbGlzdCwgc28gbGV0J3MganVzdCBjaGVjayB0aGF0IG9uZS4KICAgICBpZiAo
IW1fc291cmNlcy5pc0VtcHR5KCkpCi0gICAgICAgIG1fc291cmNlc1swXS0+b3Bwb3J0dW5pc3Rp
Y2FsbHlTdGFydEZvbnREYXRhVVJMTG9hZGluZyhmb250U2VsZWN0b3IpOworICAgICAgICBtX3Nv
dXJjZXNbMF0tPm9wcG9ydHVuaXN0aWNhbGx5U3RhcnRGb250RGF0YVVSTExvYWRpbmcoKTsKIH0K
IAogc2l6ZV90IENTU0ZvbnRGYWNlOjpwdW1wKEV4dGVybmFsUmVzb3VyY2VEb3dubG9hZFBvbGlj
eSBwb2xpY3kpCkBAIC01NzksNyArNTc5LDcgQEAgc2l6ZV90IENTU0ZvbnRGYWNlOjpwdW1wKEV4
dGVybmFsUmVzb3VyY2VEb3dubG9hZFBvbGljeSBwb2xpY3kpCiAgICAgICAgICAgICBpZiAocG9s
aWN5ID09IEV4dGVybmFsUmVzb3VyY2VEb3dubG9hZFBvbGljeTo6QWxsb3cgfHwgIXNvdXJjZS0+
cmVxdWlyZXNFeHRlcm5hbFJlc291cmNlKCkpIHsKICAgICAgICAgICAgICAgICBpZiAocG9saWN5
ID09IEV4dGVybmFsUmVzb3VyY2VEb3dubG9hZFBvbGljeTo6QWxsb3cgJiYgbV9zdGF0dXMgPT0g
U3RhdHVzOjpQZW5kaW5nKQogICAgICAgICAgICAgICAgICAgICBzZXRTdGF0dXMoU3RhdHVzOjpM
b2FkaW5nKTsKLSAgICAgICAgICAgICAgICBzb3VyY2UtPmxvYWQobV9mb250U2VsZWN0b3IuZ2V0
KCkpOworICAgICAgICAgICAgICAgIHNvdXJjZS0+bG9hZCgpOwogICAgICAgICAgICAgfQogICAg
ICAgICB9CiAKQEAgLTY1MSw3ICs2NTEsNyBAQCBSZWZQdHI8Rm9udD4gQ1NTRm9udEZhY2U6OmZv
bnQoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250RGVzY3JpcHRpb24sIGJvb2wgc3ludAogICAg
IGZvciAoc2l6ZV90IGkgPSBzdGFydEluZGV4OyBpIDwgbV9zb3VyY2VzLnNpemUoKTsgKytpKSB7
CiAgICAgICAgIGF1dG8mIHNvdXJjZSA9IG1fc291cmNlc1tpXTsKICAgICAgICAgaWYgKHNvdXJj
ZS0+c3RhdHVzKCkgPT0gQ1NTRm9udEZhY2VTb3VyY2U6OlN0YXR1czo6UGVuZGluZyAmJiAocG9s
aWN5ID09IEV4dGVybmFsUmVzb3VyY2VEb3dubG9hZFBvbGljeTo6QWxsb3cgfHwgIXNvdXJjZS0+
cmVxdWlyZXNFeHRlcm5hbFJlc291cmNlKCkpKQotICAgICAgICAgICAgc291cmNlLT5sb2FkKG1f
Zm9udFNlbGVjdG9yLmdldCgpKTsKKyAgICAgICAgICAgIHNvdXJjZS0+bG9hZCgpOwogCiAgICAg
ICAgIHN3aXRjaCAoc291cmNlLT5zdGF0dXMoKSkgewogICAgICAgICBjYXNlIENTU0ZvbnRGYWNl
U291cmNlOjpTdGF0dXM6OlBlbmRpbmc6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTRm9udEZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5oCmluZGV4IGYy
NjJkMDVmN2Q3MGU1ZjkzY2NmM2E2ODVhZGYxNzRhYTM2NzQ3NzcuLjEwMDQxYTMxYWZmYWRkYWNk
OTlmOTE2N2YwNjYyYTA1MDNmMGI2NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NGb250RmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5oCkBAIC02
MCwxMCArNjAsNyBAQCBERUNMQVJFX0FMTE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihDU1NG
b250RmFjZSk7CiBjbGFzcyBDU1NGb250RmFjZSBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPENT
U0ZvbnRGYWNlPiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURURfV0lUSF9IRUFQX0lERU5U
SUZJRVIoQ1NTRm9udEZhY2UpOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8Q1NTRm9udEZhY2U+
IGNyZWF0ZShDU1NGb250U2VsZWN0b3IqIGZvbnRTZWxlY3RvciwgU3R5bGVSdWxlRm9udEZhY2Uq
IGNzc0Nvbm5lY3Rpb24gPSBudWxscHRyLCBGb250RmFjZSogd3JhcHBlciA9IG51bGxwdHIsIGJv
b2wgaXNMb2NhbEZhbGxiYWNrID0gZmFsc2UpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBDU1NGb250RmFjZShmb250U2VsZWN0b3IsIGNzc0Nvbm5lY3Rpb24sIHdyYXBwZXIs
IGlzTG9jYWxGYWxsYmFjaykpOwotICAgIH0KKyAgICBzdGF0aWMgUmVmPENTU0ZvbnRGYWNlPiBj
cmVhdGUoQ1NTRm9udFNlbGVjdG9yKiwgU3R5bGVSdWxlRm9udEZhY2UqIGNzc0Nvbm5lY3Rpb24g
PSBudWxscHRyLCBGb250RmFjZSogd3JhcHBlciA9IG51bGxwdHIsIGJvb2wgaXNMb2NhbEZhbGxi
YWNrID0gZmFsc2UpOwogICAgIHZpcnR1YWwgfkNTU0ZvbnRGYWNlKCk7CiAKICAgICAvLyBGSVhN
RTogVGhlc2UgZnVuY3Rpb25zIGRvbid0IG5lZWQgdG8gaGF2ZSBib29sZWFuIHJldHVybiB2YWx1
ZXMuCkBAIC0xMTIsNyArMTA5LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBjb21wdXRlRmFpbHVy
ZVN0YXRlKCkgY29uc3Q7CiAKLSAgICB2b2lkIG9wcG9ydHVuaXN0aWNhbGx5U3RhcnRGb250RGF0
YVVSTExvYWRpbmcoQ1NTRm9udFNlbGVjdG9yJik7CisgICAgdm9pZCBvcHBvcnR1bmlzdGljYWxs
eVN0YXJ0Rm9udERhdGFVUkxMb2FkaW5nKCk7CiAKICAgICB2b2lkIGFkb3B0U291cmNlKHN0ZDo6
dW5pcXVlX3B0cjxDU1NGb250RmFjZVNvdXJjZT4mJik7CiAgICAgdm9pZCBzb3VyY2VzUG9wdWxh
dGVkKCkgeyBtX3NvdXJjZXNQb3B1bGF0ZWQgPSB0cnVlOyB9CkBAIC0xNjcsNyArMTY0LDYgQEAg
cHVibGljOgogICAgIHZvaWQgc2V0RXJyb3JTdGF0ZSgpOwogCiBwcml2YXRlOgotICAgIENTU0Zv
bnRGYWNlKENTU0ZvbnRTZWxlY3RvciosIFN0eWxlUnVsZUZvbnRGYWNlKiwgRm9udEZhY2UqLCBi
b29sIGlzTG9jYWxGYWxsYmFjayk7CiAgICAgQ1NTRm9udEZhY2UoY29uc3QgU2V0dGluZ3MqLCBT
dHlsZVJ1bGVGb250RmFjZSosIEZvbnRGYWNlKiwgYm9vbCBpc0xvY2FsRmFsbGJhY2spOwogCiAg
ICAgc2l6ZV90IHB1bXAoRXh0ZXJuYWxSZXNvdXJjZURvd25sb2FkUG9saWN5KTsKQEAgLTE4Niw3
ICsxODIsNiBAQCBwcml2YXRlOgogICAgIEZvbnRMb2FkaW5nQmVoYXZpb3IgbV9sb2FkaW5nQmVo
YXZpb3IgeyBGb250TG9hZGluZ0JlaGF2aW9yOjpBdXRvIH07CiAKICAgICBWZWN0b3I8c3RkOjp1
bmlxdWVfcHRyPENTU0ZvbnRGYWNlU291cmNlPiwgMCwgQ3Jhc2hPbk92ZXJmbG93LCAwPiBtX3Nv
dXJjZXM7Ci0gICAgV2Vha1B0cjxDU1NGb250U2VsZWN0b3I+IG1fZm9udFNlbGVjdG9yOyAvLyBG
SVhNRTogSWRlYWxseSB0aGlzIGRhdGEgbWVtYmVyIHdvdWxkIGdvIGF3YXkgKGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDgzNTEpLgogICAgIFJlZlB0cjxTdHlsZVJ1
bGVGb250RmFjZT4gbV9jc3NDb25uZWN0aW9uOwogICAgIEhhc2hTZXQ8Q2xpZW50Kj4gbV9jbGll
bnRzOwogICAgIFdlYWtQdHI8Rm9udEZhY2U+IG1fd3JhcHBlcjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTRm9udEZhY2VTb3VyY2UuY3BwCmluZGV4IGU2ZWExODE2ZmZjM2NhNmQwNDUwMjNhOGRhNzcz
NGJkYWM1MjI4NjQuLjhiNWM2ZGI2NDc0M2IwZDc3YzA0ZTE1MzgyZGIxMTFmZGFkZjYzYTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcApAQCAtNjYsMjIgKzY2LDI1
IEBAIGlubGluZSB2b2lkIENTU0ZvbnRGYWNlU291cmNlOjpzZXRTdGF0dXMoU3RhdHVzIG5ld1N0
YXR1cykKICAgICBtX3N0YXR1cyA9IG5ld1N0YXR1czsKIH0KIAotQ1NTRm9udEZhY2VTb3VyY2U6
OkNTU0ZvbnRGYWNlU291cmNlKENTU0ZvbnRGYWNlJiBvd25lciwgY29uc3QgU3RyaW5nJiBmYW1p
bHlOYW1lT3JVUkksIENhY2hlZEZvbnQqIGZvbnQsIFNWR0ZvbnRGYWNlRWxlbWVudCogZm9udEZh
Y2UsIFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyVmlldz4mJiBhcnJheUJ1ZmZlclZpZXcpCitDU1NG
b250RmFjZVNvdXJjZTo6Q1NTRm9udEZhY2VTb3VyY2UoQ1NTRm9udEZhY2UmIG93bmVyLCBjb25z
dCBTdHJpbmcmIGZhbWlseU5hbWVPclVSSSkKICAgICA6IG1fZmFtaWx5TmFtZU9yVVJJKGZhbWls
eU5hbWVPclVSSSkKLSAgICAsIG1fZm9udChmb250KQogICAgICwgbV9mYWNlKG93bmVyKQotICAg
ICwgbV9pbW1lZGlhdGVTb3VyY2UoV1RGTW92ZShhcnJheUJ1ZmZlclZpZXcpKQotICAgICwgbV9z
dmdGb250RmFjZUVsZW1lbnQobWFrZVdlYWtQdHIoZm9udEZhY2UpKQotICAgICwgbV9oYXNTVkdG
b250RmFjZUVsZW1lbnQobV9zdmdGb250RmFjZUVsZW1lbnQpCit7Cit9CisKK0NTU0ZvbnRGYWNl
U291cmNlOjpDU1NGb250RmFjZVNvdXJjZShDU1NGb250RmFjZSYgb3duZXIsIGNvbnN0IFN0cmlu
ZyYgZmFtaWx5TmFtZU9yVVJJLCBDU1NGb250U2VsZWN0b3ImIGZvbnRTZWxlY3RvciwgQ2FjaGVk
Rm9udCYgZm9udCkKKyAgICA6IG1fZmFtaWx5TmFtZU9yVVJJKGZhbWlseU5hbWVPclVSSSkKKyAg
ICAsIG1fZmFjZShvd25lcikKKyAgICAsIG1fZm9udFNlbGVjdG9yKG1ha2VXZWFrUHRyKCZmb250
U2VsZWN0b3IpKQorICAgICwgbV9mb250KCZmb250KQogewogICAgIC8vIFRoaXMgbWF5IHN5bmNo
cm9ub3VzbHkgY2FsbCBmb250TG9hZGVkKCkuCi0gICAgaWYgKG1fZm9udCkKLSAgICAgICAgbV9m
b250LT5hZGRDbGllbnQoKnRoaXMpOworICAgIG1fZm9udC0+YWRkQ2xpZW50KCp0aGlzKTsKIAot
ICAgIGlmIChzdGF0dXMoKSA9PSBTdGF0dXM6OlBlbmRpbmcgJiYgbV9mb250ICYmIG1fZm9udC0+
aXNMb2FkZWQoKSkgeworICAgIGlmIChzdGF0dXMoKSA9PSBTdGF0dXM6OlBlbmRpbmcgJiYgbV9m
b250LT5pc0xvYWRlZCgpKSB7CiAgICAgICAgIHNldFN0YXR1cyhTdGF0dXM6OkxvYWRpbmcpOwog
ICAgICAgICBpZiAoIXNob3VsZElnbm9yZUZvbnRMb2FkQ29tcGxldGlvbnMoKSkgewotICAgICAg
ICAgICAgaWYgKG1fZm9udCAmJiBtX2ZvbnQtPmVycm9yT2NjdXJyZWQoKSkKKyAgICAgICAgICAg
IGlmIChtX2ZvbnQtPmVycm9yT2NjdXJyZWQoKSkKICAgICAgICAgICAgICAgICBzZXRTdGF0dXMo
U3RhdHVzOjpGYWlsdXJlKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBzZXRT
dGF0dXMoU3RhdHVzOjpTdWNjZXNzKTsKQEAgLTg5LDYgKzkyLDIxIEBAIENTU0ZvbnRGYWNlU291
cmNlOjpDU1NGb250RmFjZVNvdXJjZShDU1NGb250RmFjZSYgb3duZXIsIGNvbnN0IFN0cmluZyYg
ZmFtaWx5TmFtCiAgICAgfQogfQogCitDU1NGb250RmFjZVNvdXJjZTo6Q1NTRm9udEZhY2VTb3Vy
Y2UoQ1NTRm9udEZhY2UmIG93bmVyLCBjb25zdCBTdHJpbmcmIGZhbWlseU5hbWVPclVSSSwgU1ZH
Rm9udEZhY2VFbGVtZW50JiBmb250RmFjZSkKKyAgICA6IG1fZmFtaWx5TmFtZU9yVVJJKGZhbWls
eU5hbWVPclVSSSkKKyAgICAsIG1fZmFjZShvd25lcikKKyAgICAsIG1fc3ZnRm9udEZhY2VFbGVt
ZW50KG1ha2VXZWFrUHRyKCZmb250RmFjZSkpCisgICAgLCBtX2hhc1NWR0ZvbnRGYWNlRWxlbWVu
dCh0cnVlKQoreworfQorCitDU1NGb250RmFjZVNvdXJjZTo6Q1NTRm9udEZhY2VTb3VyY2UoQ1NT
Rm9udEZhY2UmIG93bmVyLCBjb25zdCBTdHJpbmcmIGZhbWlseU5hbWVPclVSSSwgUmVmPEpTQzo6
QXJyYXlCdWZmZXJWaWV3PiYmIGFycmF5QnVmZmVyVmlldykKKyAgICA6IG1fZmFtaWx5TmFtZU9y
VVJJKGZhbWlseU5hbWVPclVSSSkKKyAgICAsIG1fZmFjZShvd25lcikKKyAgICAsIG1faW1tZWRp
YXRlU291cmNlKFdURk1vdmUoYXJyYXlCdWZmZXJWaWV3KSkKK3sKK30KKwogQ1NTRm9udEZhY2VT
b3VyY2U6On5DU1NGb250RmFjZVNvdXJjZSgpCiB7CiAgICAgaWYgKG1fZm9udCkKQEAgLTEwMCwx
MCArMTE4LDEwIEBAIGJvb2wgQ1NTRm9udEZhY2VTb3VyY2U6OnNob3VsZElnbm9yZUZvbnRMb2Fk
Q29tcGxldGlvbnMoKSBjb25zdAogICAgIHJldHVybiBtX2ZhY2Uuc2hvdWxkSWdub3JlRm9udExv
YWRDb21wbGV0aW9ucygpOwogfQogCi12b2lkIENTU0ZvbnRGYWNlU291cmNlOjpvcHBvcnR1bmlz
dGljYWxseVN0YXJ0Rm9udERhdGFVUkxMb2FkaW5nKENTU0ZvbnRTZWxlY3RvciYgZm9udFNlbGVj
dG9yKQordm9pZCBDU1NGb250RmFjZVNvdXJjZTo6b3Bwb3J0dW5pc3RpY2FsbHlTdGFydEZvbnRE
YXRhVVJMTG9hZGluZygpCiB7CiAgICAgaWYgKHN0YXR1cygpID09IFN0YXR1czo6UGVuZGluZyAm
JiBtX2ZvbnQgJiYgbV9mb250LT51cmwoKS5wcm90b2NvbElzRGF0YSgpICYmIG1fZmFtaWx5TmFt
ZU9yVVJJLmxlbmd0aCgpIDwgTUIpCi0gICAgICAgIGxvYWQoJmZvbnRTZWxlY3Rvcik7CisgICAg
ICAgIGxvYWQoKTsKIH0KIAogdm9pZCBDU1NGb250RmFjZVNvdXJjZTo6Zm9udExvYWRlZChDYWNo
ZWRGb250JiBsb2FkZWRGb250KQpAQCAtMTMyLDEzICsxNTAsMTMgQEAgdm9pZCBDU1NGb250RmFj
ZVNvdXJjZTo6Zm9udExvYWRlZChDYWNoZWRGb250JiBsb2FkZWRGb250KQogICAgIG1fZmFjZS5m
b250TG9hZGVkKCp0aGlzKTsKIH0KIAotdm9pZCBDU1NGb250RmFjZVNvdXJjZTo6bG9hZChDU1NG
b250U2VsZWN0b3IqIGZvbnRTZWxlY3RvcikKK3ZvaWQgQ1NTRm9udEZhY2VTb3VyY2U6OmxvYWQo
KQogewogICAgIHNldFN0YXR1cyhTdGF0dXM6OkxvYWRpbmcpOwogCiAgICAgaWYgKG1fZm9udCkg
ewotICAgICAgICBBU1NFUlQoZm9udFNlbGVjdG9yKTsKLSAgICAgICAgZm9udFNlbGVjdG9yLT5i
ZWdpbkxvYWRpbmdGb250U29vbigqbV9mb250KTsKKyAgICAgICAgQVNTRVJUKG1fZm9udFNlbGVj
dG9yKTsKKyAgICAgICAgbV9mb250U2VsZWN0b3ItPmJlZ2luTG9hZGluZ0ZvbnRTb29uKCptX2Zv
bnQpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGJvb2wgc3VjY2VzcyA9IGZhbHNlOwogICAgICAg
ICBpZiAobV9oYXNTVkdGb250RmFjZUVsZW1lbnQpIHsKQEAgLTE2Nyw4ICsxODUsOCBAQCB2b2lk
IENTU0ZvbnRGYWNlU291cmNlOjpsb2FkKENTU0ZvbnRTZWxlY3RvciogZm9udFNlbGVjdG9yKQog
ICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldENvbXB1dGVkU2l6ZSgxKTsKICAgICAgICAg
ICAgIGZvbnREZXNjcmlwdGlvbi5zZXRTaG91bGRBbGxvd1VzZXJJbnN0YWxsZWRGb250cyhtX2Zh
Y2UuYWxsb3dVc2VySW5zdGFsbGVkRm9udHMoKSk7CiAgICAgICAgICAgICBzdWNjZXNzID0gRm9u
dENhY2hlOjpzaW5nbGV0b24oKS5mb250Rm9yRmFtaWx5KGZvbnREZXNjcmlwdGlvbiwgbV9mYW1p
bHlOYW1lT3JVUkksIG51bGxwdHIsIEZvbnRTZWxlY3Rpb25TcGVjaWZpZWRDYXBhYmlsaXRpZXMo
KSwgdHJ1ZSk7Ci0gICAgICAgICAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVk
RmVhdHVyZXMoKS53ZWJBUElTdGF0aXN0aWNzRW5hYmxlZCgpKSB7Ci0gICAgICAgICAgICAgICAg
aWYgKGF1dG8qIGRvY3VtZW50ID0gZm9udFNlbGVjdG9yLT5kb2N1bWVudCgpKQorICAgICAgICAg
ICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkud2ViQVBJU3Rh
dGlzdGljc0VuYWJsZWQoKSAmJiBtX2ZvbnRTZWxlY3RvcikgeworICAgICAgICAgICAgICAgIGlm
IChhdXRvKiBkb2N1bWVudCA9IG1fZm9udFNlbGVjdG9yLT5kb2N1bWVudCgpKQogICAgICAgICAg
ICAgICAgICAgICBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCkubG9nRm9udExvYWQoKmRv
Y3VtZW50LCBtX2ZhbWlseU5hbWVPclVSSS5zdHJpbmcoKSwgc3VjY2Vzcyk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFj
ZVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmgKaW5kZXgg
N2VhYjU5ODk1NjBhNDE2OThiZjY0MmMxZGNmYWFjNTk4Zjc2NmU2OS4uZTFmMzE2YWI4NGFjY2Q1
ZDZlNDFhOWVkZTEzMTRlZmVlMjgzMTBlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0ZvbnRGYWNlU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNl
U291cmNlLmgKQEAgLTQ5LDcgKzQ5LDEwIEBAIHR5cGVkZWYgRm9udFRhZ2dlZFNldHRpbmdzPGlu
dD4gRm9udEZlYXR1cmVTZXR0aW5nczsKIGNsYXNzIENTU0ZvbnRGYWNlU291cmNlIGZpbmFsIDog
cHVibGljIENhY2hlZEZvbnRDbGllbnQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgotICAgIENTU0ZvbnRGYWNlU291cmNlKENTU0ZvbnRGYWNlJiBvd25lciwgY29uc3Qg
U3RyaW5nJiBmYW1pbHlOYW1lT3JVUkksIENhY2hlZEZvbnQqID0gbnVsbHB0ciwgU1ZHRm9udEZh
Y2VFbGVtZW50KiA9IG51bGxwdHIsIFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyVmlldz4mJiA9IG51
bGxwdHIpOworICAgIENTU0ZvbnRGYWNlU291cmNlKENTU0ZvbnRGYWNlJiBvd25lciwgY29uc3Qg
U3RyaW5nJiBmYW1pbHlOYW1lT3JVUkkpOworICAgIENTU0ZvbnRGYWNlU291cmNlKENTU0ZvbnRG
YWNlJiBvd25lciwgY29uc3QgU3RyaW5nJiBmYW1pbHlOYW1lT3JVUkksIENTU0ZvbnRTZWxlY3Rv
ciYsIENhY2hlZEZvbnQmKTsKKyAgICBDU1NGb250RmFjZVNvdXJjZShDU1NGb250RmFjZSYgb3du
ZXIsIGNvbnN0IFN0cmluZyYgZmFtaWx5TmFtZU9yVVJJLCBTVkdGb250RmFjZUVsZW1lbnQmKTsK
KyAgICBDU1NGb250RmFjZVNvdXJjZShDU1NGb250RmFjZSYgb3duZXIsIGNvbnN0IFN0cmluZyYg
ZmFtaWx5TmFtZU9yVVJJLCBSZWY8SlNDOjpBcnJheUJ1ZmZlclZpZXc+JiYpOwogICAgIHZpcnR1
YWwgfkNTU0ZvbnRGYWNlU291cmNlKCk7CiAKICAgICAvLyAgICAgICAgICAgICAgICAgICAgICA9
PiBTdWNjZXNzCkBAIC02Nyw5ICs3MCw5IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IEF0b21TdHJp
bmcmIGZhbWlseU5hbWVPclVSSSgpIGNvbnN0IHsgcmV0dXJuIG1fZmFtaWx5TmFtZU9yVVJJOyB9
CiAKLSAgICB2b2lkIG9wcG9ydHVuaXN0aWNhbGx5U3RhcnRGb250RGF0YVVSTExvYWRpbmcoQ1NT
Rm9udFNlbGVjdG9yJik7CisgICAgdm9pZCBvcHBvcnR1bmlzdGljYWxseVN0YXJ0Rm9udERhdGFV
UkxMb2FkaW5nKCk7CiAKLSAgICB2b2lkIGxvYWQoQ1NTRm9udFNlbGVjdG9yKik7CisgICAgdm9p
ZCBsb2FkKCk7CiAgICAgUmVmUHRyPEZvbnQ+IGZvbnQoY29uc3QgRm9udERlc2NyaXB0aW9uJiwg
Ym9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY0l0YWxpYywgY29uc3QgRm9udEZlYXR1
cmVTZXR0aW5ncyYsIEZvbnRTZWxlY3Rpb25TcGVjaWZpZWRDYXBhYmlsaXRpZXMpOwogCiAgICAg
Q2FjaGVkRm9udCogY2FjaGVkRm9udCgpIGNvbnN0IHsgcmV0dXJuIG1fZm9udC5nZXQoKTsgfQpA
QCAtODUsOCArODgsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0U3RhdHVzKFN0YXR1cyk7CiAK
ICAgICBBdG9tU3RyaW5nIG1fZmFtaWx5TmFtZU9yVVJJOyAvLyBVUkkgZm9yIHJlbW90ZSwgYnVp
bHQtaW4gZm9udCBuYW1lIGZvciBsb2NhbC4KLSAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNo
ZWRGb250PiBtX2ZvbnQ7IC8vIEZvciByZW1vdGUgZm9udHMsIGEgcG9pbnRlciB0byBvdXIgY2Fj
aGVkIHJlc291cmNlLgogICAgIENTU0ZvbnRGYWNlJiBtX2ZhY2U7IC8vIE91ciBvd25pbmcgZm9u
dCBmYWNlLgorICAgIFdlYWtQdHI8Q1NTRm9udFNlbGVjdG9yPiBtX2ZvbnRTZWxlY3RvcjsgLy8g
Rm9yIHJlbW90ZSBmb250cywgdG8gb3JjaGVzdHJhdGUgbG9hZGluZy4KKyAgICBDYWNoZWRSZXNv
dXJjZUhhbmRsZTxDYWNoZWRGb250PiBtX2ZvbnQ7IC8vIEFsc28gZm9yIHJlbW90ZSBmb250cywg
YSBwb2ludGVyIHRvIG91ciBjYWNoZWQgcmVzb3VyY2UuCiAKICAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBtX2dlbmVyYXRlZE9URkJ1ZmZlcjsKICAgICBSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlclZp
ZXc+IG1faW1tZWRpYXRlU291cmNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0ZvbnRTZWxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNw
cAppbmRleCBkMGMyMzM2OTZhMmY2ZTdhNWVmOTcyYjdmZTRlNWUxNWE2Zjg2MzlkLi5iMDdiOTk0
Y2JlYTBlMGQ5ZDk0ZWFjOWQ5YjBkNjY1NjEwNjE5MzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Rm9udFNlbGVjdG9yLmNwcApAQCAtMjQ1LDcgKzI0NSw3IEBAIHZvaWQgQ1NTRm9udFNlbGVjdG9y
OjpvcHBvcnR1bmlzdGljYWxseVN0YXJ0Rm9udERhdGFVUkxMb2FkaW5nKGNvbnN0IEZvbnRDYXNj
YWRlCiAgICAgaWYgKCFzZWdtZW50ZWRGb250RmFjZSkKICAgICAgICAgcmV0dXJuOwogICAgIGZv
ciAoYXV0byYgZmFjZSA6IHNlZ21lbnRlZEZvbnRGYWNlLT5jb25zdGl0dWVudEZhY2VzKCkpCi0g
ICAgICAgIGZhY2UtPm9wcG9ydHVuaXN0aWNhbGx5U3RhcnRGb250RGF0YVVSTExvYWRpbmcoKnRo
aXMpOworICAgICAgICBmYWNlLT5vcHBvcnR1bmlzdGljYWxseVN0YXJ0Rm9udERhdGFVUkxMb2Fk
aW5nKCk7CiB9CiAKIHZvaWQgQ1NTRm9udFNlbGVjdG9yOjpmb250TG9hZGVkKENTU0ZvbnRGYWNl
JikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvRm9udEZhY2UuY3BwCmluZGV4IDNmNzY4MjFlNGQwOWViYWYzMjBiNDM1MmRk
ZTYwMzQ5MzcyMmJhNGMuLjNiZDhjMDY5MDM4Nzc4NzQ2Y2U0YmI2ZTkzMmY5M2EyYzQ2OGY5NWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmNwcApAQCAtNTAsNyArNTAsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIHN0YXRpYyBib29sIHBvcHVsYXRlRm9udEZhY2VXaXRoQXJyYXlCdWZmZXIoQ1NT
Rm9udEZhY2UmIGZvbnRGYWNlLCBSZWY8SlNDOjpBcnJheUJ1ZmZlclZpZXc+JiYgYXJyYXlCdWZm
ZXJWaWV3KQogewotICAgIGF1dG8gc291cmNlID0gbWFrZVVuaXF1ZTxDU1NGb250RmFjZVNvdXJj
ZT4oZm9udEZhY2UsIFN0cmluZygpLCBudWxscHRyLCBudWxscHRyLCBXVEZNb3ZlKGFycmF5QnVm
ZmVyVmlldykpOworICAgIGF1dG8gc291cmNlID0gbWFrZVVuaXF1ZTxDU1NGb250RmFjZVNvdXJj
ZT4oZm9udEZhY2UsIFN0cmluZygpLCBXVEZNb3ZlKGFycmF5QnVmZmVyVmlldykpOwogICAgIGZv
bnRGYWNlLmFkb3B0U291cmNlKFdURk1vdmUoc291cmNlKSk7CiAgICAgcmV0dXJuIGZhbHNlOwog
fQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>421398</attachid>
            <date>2021-02-24 05:04:16 -0800</date>
            <delta_ts>2021-03-01 06:44:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208351-20210224130414.patch</filename>
            <type>text/plain</type>
            <size>17133</size>
            <attacher name="Chris Lord">clord</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczMjQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmMzOGY3OGY2ZTcyMGI1
ODYwZTZjZDliYmMyZDA5NjkwNGEyNTQ4Yy4uY2IyM2EyMGJmNzBiNDg2MGY5YjE0MDUyYTc3YWVm
OWQ4MWVlNWViMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDIxLTAyLTI0ICBDaHJp
cyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KKworICAgICAgICBDU1NGb250RmFjZSBzaG91bGQg
bm90IG5lZWQgaXRzIG1fZm9udFNlbGVjdG9yIGRhdGEgbWVtYmVyCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDgzNTEKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzc0MzQ2MzAyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIE1vdmUgdGhlIG1fZm9udFNlbGVjdG9yIG1lbWJlciBvZiBDU1NGb250RmFjZSBv
bnRvIENTU0ZvbnRGYWNlU291cmNlLAorICAgICAgICB0aGUgb25seSBwbGFjZSB3aGVyZSBpdCdz
IGFjdHVhbGx5IHJlcXVpcmVkLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoZXJl
IGlzIG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIGNzcy9DU1NGb250RmFjZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZTo6YXBwZW5kU291cmNlcyk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NGb250RmFjZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Zv
bnRGYWNlOjpkb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZTo6b3Bwb3J0
dW5pc3RpY2FsbHlTdGFydEZvbnREYXRhVVJMTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpD
U1NGb250RmFjZTo6cHVtcCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZTo6Zm9udCk6
CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlLmg6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNl
U291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU291cmNlOjpDU1NGb250
RmFjZVNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZVNvdXJjZTo6b3Bwb3J0
dW5pc3RpY2FsbHlTdGFydEZvbnREYXRhVVJMTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpD
U1NGb250RmFjZVNvdXJjZTo6bG9hZCk6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU291cmNl
Lmg6CisgICAgICAgICogY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NGb250U2VsZWN0b3I6Om9wcG9ydHVuaXN0aWNhbGx5U3RhcnRGb250RGF0YVVSTExvYWRp
bmcpOgorICAgICAgICAqIGNzcy9Gb250RmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwb3B1
bGF0ZUZvbnRGYWNlV2l0aEFycmF5QnVmZmVyKToKKwogMjAyMS0wMi0yMiAgQW50dGkgS29pdmlz
dG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11bSW50ZWdyYXRpb25dIFN3aXRj
aCBvdXQgaWYgbGFyZ2UgdHJlZXMgYXJlIGJlaW5nIGludmFsaWRhdGVkCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0ZvbnRGYWNlLmNwcAppbmRleCA0MjgzMmNjNDlmNGQzZjIwMDgzYTIyOGE5YWJiYTdlYzc3OTgw
NTdkLi41NWRjYmIyZjdkNGIwNDEwOGM4ZGFhNTQxNzlkYTcyMDRhMGNmODUyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NGb250RmFjZS5jcHAKQEAgLTc4LDEwICs3OCwxMSBAQCB2b2lkIENTU0ZvbnRGYWNl
OjphcHBlbmRTb3VyY2VzKENTU0ZvbnRGYWNlJiBmb250RmFjZSwgQ1NTVmFsdWVMaXN0JiBzcmNM
aXN0LCBEbwogICAgICAgICAgICAgYm9vbCBhbGxvd0Rvd25sb2FkaW5nID0gZm91bmRTVkdGb250
IHx8IChzZXR0aW5ncyAmJiBzZXR0aW5ncy0+ZG93bmxvYWRhYmxlQmluYXJ5Rm9udHNFbmFibGVk
KCkpOwogICAgICAgICAgICAgaWYgKGFsbG93RG93bmxvYWRpbmcgJiYgaXRlbS5pc1N1cHBvcnRl
ZEZvcm1hdCgpICYmIGRvY3VtZW50KSB7CiAgICAgICAgICAgICAgICAgaWYgKENhY2hlZEZvbnQq
IGNhY2hlZEZvbnQgPSBpdGVtLmNhY2hlZEZvbnQoZG9jdW1lbnQsIGZvdW5kU1ZHRm9udCwgaXNJ
bml0aWF0aW5nRWxlbWVudEluVXNlckFnZW50U2hhZG93VHJlZSkpCi0gICAgICAgICAgICAgICAg
ICAgIHNvdXJjZSA9IG1ha2VVbmlxdWU8Q1NTRm9udEZhY2VTb3VyY2U+KGZvbnRGYWNlLCBpdGVt
LnJlc291cmNlKCksIGNhY2hlZEZvbnQpOworICAgICAgICAgICAgICAgICAgICBzb3VyY2UgPSBt
YWtlVW5pcXVlPENTU0ZvbnRGYWNlU291cmNlPihmb250RmFjZSwgaXRlbS5yZXNvdXJjZSgpLCBk
b2N1bWVudC0+Zm9udFNlbGVjdG9yKCksICpjYWNoZWRGb250KTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfSBlbHNlCi0gICAgICAgICAgICBzb3VyY2UgPSBtYWtlVW5pcXVlPENTU0ZvbnRGYWNl
U291cmNlPihmb250RmFjZSwgaXRlbS5yZXNvdXJjZSgpLCBudWxscHRyLCBmb250RmFjZUVsZW1l
bnQpOworICAgICAgICAgICAgc291cmNlID0gZm9udEZhY2VFbGVtZW50ID8gbWFrZVVuaXF1ZTxD
U1NGb250RmFjZVNvdXJjZT4oZm9udEZhY2UsIGl0ZW0ucmVzb3VyY2UoKSwgKmZvbnRGYWNlRWxl
bWVudCkgOgorICAgICAgICAgICAgICAgIG1ha2VVbmlxdWU8Q1NTRm9udEZhY2VTb3VyY2U+KGZv
bnRGYWNlLCBpdGVtLnJlc291cmNlKCkpOwogCiAgICAgICAgIGlmIChzb3VyY2UpCiAgICAgICAg
ICAgICBmb250RmFjZS5hZG9wdFNvdXJjZShXVEZNb3ZlKHNvdXJjZSkpOwpAQCAtODksMTIgKzkw
LDEyIEBAIHZvaWQgQ1NTRm9udEZhY2U6OmFwcGVuZFNvdXJjZXMoQ1NTRm9udEZhY2UmIGZvbnRG
YWNlLCBDU1NWYWx1ZUxpc3QmIHNyY0xpc3QsIERvCiAgICAgZm9udEZhY2Uuc291cmNlc1BvcHVs
YXRlZCgpOwogfQogCi1DU1NGb250RmFjZTo6Q1NTRm9udEZhY2UoQ1NTRm9udFNlbGVjdG9yKiBm
b250U2VsZWN0b3IsIFN0eWxlUnVsZUZvbnRGYWNlKiBjc3NDb25uZWN0aW9uLCBGb250RmFjZSog
d3JhcHBlciwgYm9vbCBpc0xvY2FsRmFsbGJhY2spCi0gICAgOiBDU1NGb250RmFjZShmb250U2Vs
ZWN0b3IgJiYgZm9udFNlbGVjdG9yLT5kb2N1bWVudCgpID8gJmZvbnRTZWxlY3Rvci0+ZG9jdW1l
bnQoKS0+c2V0dGluZ3MoKSA6IG51bGxwdHIsIGNzc0Nvbm5lY3Rpb24sIHdyYXBwZXIsIGlzTG9j
YWxGYWxsYmFjaykKK1JlZjxDU1NGb250RmFjZT4gQ1NTRm9udEZhY2U6OmNyZWF0ZShDU1NGb250
U2VsZWN0b3IqIGZvbnRTZWxlY3RvciwgU3R5bGVSdWxlRm9udEZhY2UqIGNzc0Nvbm5lY3Rpb24s
IEZvbnRGYWNlKiB3cmFwcGVyLCBib29sIGlzTG9jYWxGYWxsYmFjaykKIHsKLSAgICBtX2ZvbnRT
ZWxlY3RvciA9IG1ha2VXZWFrUHRyKGZvbnRTZWxlY3Rvcik7IC8vIEZJWE1FOiBJZGVhbGx5IHRo
aXMgZGF0YSBtZW1iZXIgd291bGQgZ28gYXdheSAoaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwODM1MSkuCisgICAgYXV0byByZXN1bHQgPSBhZG9wdFJlZigqbmV3IENT
U0ZvbnRGYWNlKChmb250U2VsZWN0b3IgJiYgZm9udFNlbGVjdG9yLT5kb2N1bWVudCgpKSA/ICZm
b250U2VsZWN0b3ItPmRvY3VtZW50KCktPnNldHRpbmdzKCkgOiBudWxscHRyLCBjc3NDb25uZWN0
aW9uLCB3cmFwcGVyLCBpc0xvY2FsRmFsbGJhY2spKTsKICAgICBpZiAoZm9udFNlbGVjdG9yKQot
ICAgICAgICBhZGRDbGllbnQoKmZvbnRTZWxlY3Rvcik7CisgICAgICAgIHJlc3VsdC0+YWRkQ2xp
ZW50KCpmb250U2VsZWN0b3IpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIENTU0ZvbnRGYWNl
OjpDU1NGb250RmFjZShjb25zdCBTZXR0aW5ncyogc2V0dGluZ3MsIFN0eWxlUnVsZUZvbnRGYWNl
KiBjc3NDb25uZWN0aW9uLCBGb250RmFjZSogd3JhcHBlciwgYm9vbCBpc0xvY2FsRmFsbGJhY2sp
CkBAIC0zODMsNiArMzg0LDEzIEBAIHZvaWQgQ1NTRm9udEZhY2U6OnRpbWVvdXRGaXJlZCgpCiAg
ICAgZm9udExvYWRFdmVudE9jY3VycmVkKCk7CiB9CiAKK0RvY3VtZW50KiBDU1NGb250RmFjZTo6
ZG9jdW1lbnQoKQoreworICAgIGlmIChtX3dyYXBwZXIgJiYgaXM8RG9jdW1lbnQ+KG1fd3JhcHBl
ci0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSkKKyAgICAgICAgcmV0dXJuICZkb3duY2FzdDxE
b2N1bWVudD4oKm1fd3JhcHBlci0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICByZXR1
cm4gbnVsbHB0cjsKK30KKwogYm9vbCBDU1NGb250RmFjZTo6Y29tcHV0ZUZhaWx1cmVTdGF0ZSgp
IGNvbnN0CiB7CiAgICAgaWYgKHN0YXR1cygpID09IFN0YXR1czo6RmFpbHVyZSkKQEAgLTU0OCwx
MSArNTU2LDExIEBAIHZvaWQgQ1NTRm9udEZhY2U6OmZvbnRMb2FkZWQoQ1NTRm9udEZhY2VTb3Vy
Y2UmKQogICAgIGZvbnRMb2FkRXZlbnRPY2N1cnJlZCgpOwogfQogCi12b2lkIENTU0ZvbnRGYWNl
OjpvcHBvcnR1bmlzdGljYWxseVN0YXJ0Rm9udERhdGFVUkxMb2FkaW5nKENTU0ZvbnRTZWxlY3Rv
ciYgZm9udFNlbGVjdG9yKQordm9pZCBDU1NGb250RmFjZTo6b3Bwb3J0dW5pc3RpY2FsbHlTdGFy
dEZvbnREYXRhVVJMTG9hZGluZygpCiB7CiAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBnbyBjcmF6
eSBoZXJlIGFuZCBibG93IHRoZSBjYWNoZS4gVXN1YWxseSB0aGVzZSBkYXRhIFVSTHMgYXJlIHRo
ZSBmaXJzdCBpdGVtIGluIHRoZSBzcmM6IGxpc3QsIHNvIGxldCdzIGp1c3QgY2hlY2sgdGhhdCBv
bmUuCiAgICAgaWYgKCFtX3NvdXJjZXMuaXNFbXB0eSgpKQotICAgICAgICBtX3NvdXJjZXNbMF0t
Pm9wcG9ydHVuaXN0aWNhbGx5U3RhcnRGb250RGF0YVVSTExvYWRpbmcoZm9udFNlbGVjdG9yKTsK
KyAgICAgICAgbV9zb3VyY2VzWzBdLT5vcHBvcnR1bmlzdGljYWxseVN0YXJ0Rm9udERhdGFVUkxM
b2FkaW5nKCk7CiB9CiAKIHNpemVfdCBDU1NGb250RmFjZTo6cHVtcChFeHRlcm5hbFJlc291cmNl
RG93bmxvYWRQb2xpY3kgcG9saWN5KQpAQCAtNTc5LDcgKzU4Nyw3IEBAIHNpemVfdCBDU1NGb250
RmFjZTo6cHVtcChFeHRlcm5hbFJlc291cmNlRG93bmxvYWRQb2xpY3kgcG9saWN5KQogICAgICAg
ICAgICAgaWYgKHBvbGljeSA9PSBFeHRlcm5hbFJlc291cmNlRG93bmxvYWRQb2xpY3k6OkFsbG93
IHx8ICFzb3VyY2UtPnJlcXVpcmVzRXh0ZXJuYWxSZXNvdXJjZSgpKSB7CiAgICAgICAgICAgICAg
ICAgaWYgKHBvbGljeSA9PSBFeHRlcm5hbFJlc291cmNlRG93bmxvYWRQb2xpY3k6OkFsbG93ICYm
IG1fc3RhdHVzID09IFN0YXR1czo6UGVuZGluZykKICAgICAgICAgICAgICAgICAgICAgc2V0U3Rh
dHVzKFN0YXR1czo6TG9hZGluZyk7Ci0gICAgICAgICAgICAgICAgc291cmNlLT5sb2FkKG1fZm9u
dFNlbGVjdG9yLmdldCgpKTsKKyAgICAgICAgICAgICAgICBzb3VyY2UtPmxvYWQoZG9jdW1lbnQo
KSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIApAQCAtNjUxLDcgKzY1OSw3IEBAIFJlZlB0
cjxGb250PiBDU1NGb250RmFjZTo6Zm9udChjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNj
cmlwdGlvbiwgYm9vbCBzeW50CiAgICAgZm9yIChzaXplX3QgaSA9IHN0YXJ0SW5kZXg7IGkgPCBt
X3NvdXJjZXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgYXV0byYgc291cmNlID0gbV9zb3VyY2Vz
W2ldOwogICAgICAgICBpZiAoc291cmNlLT5zdGF0dXMoKSA9PSBDU1NGb250RmFjZVNvdXJjZTo6
U3RhdHVzOjpQZW5kaW5nICYmIChwb2xpY3kgPT0gRXh0ZXJuYWxSZXNvdXJjZURvd25sb2FkUG9s
aWN5OjpBbGxvdyB8fCAhc291cmNlLT5yZXF1aXJlc0V4dGVybmFsUmVzb3VyY2UoKSkpCi0gICAg
ICAgICAgICBzb3VyY2UtPmxvYWQobV9mb250U2VsZWN0b3IuZ2V0KCkpOworICAgICAgICAgICAg
c291cmNlLT5sb2FkKGRvY3VtZW50KCkpOwogCiAgICAgICAgIHN3aXRjaCAoc291cmNlLT5zdGF0
dXMoKSkgewogICAgICAgICBjYXNlIENTU0ZvbnRGYWNlU291cmNlOjpTdGF0dXM6OlBlbmRpbmc6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5oCmluZGV4IGYyNjJkMDVmN2Q3MGU1ZjkzY2NmM2E2ODVh
ZGYxNzRhYTM2NzQ3NzcuLjczMjUwMGI5ZGIzZjU5Yjk1MGMyNjhmZWUwMDI3YjQxZGE3MzY3MGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5oCkBAIC02MCwxMCArNjAsNyBAQCBERUNMQVJFX0FM
TE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihDU1NGb250RmFjZSk7CiBjbGFzcyBDU1NGb250
RmFjZSBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPENTU0ZvbnRGYWNlPiB7CiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURURfV0lUSF9IRUFQX0lERU5USUZJRVIoQ1NTRm9udEZhY2UpOwogcHVi
bGljOgotICAgIHN0YXRpYyBSZWY8Q1NTRm9udEZhY2U+IGNyZWF0ZShDU1NGb250U2VsZWN0b3Iq
IGZvbnRTZWxlY3RvciwgU3R5bGVSdWxlRm9udEZhY2UqIGNzc0Nvbm5lY3Rpb24gPSBudWxscHRy
LCBGb250RmFjZSogd3JhcHBlciA9IG51bGxwdHIsIGJvb2wgaXNMb2NhbEZhbGxiYWNrID0gZmFs
c2UpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NGb250RmFjZShmb250
U2VsZWN0b3IsIGNzc0Nvbm5lY3Rpb24sIHdyYXBwZXIsIGlzTG9jYWxGYWxsYmFjaykpOwotICAg
IH0KKyAgICBzdGF0aWMgUmVmPENTU0ZvbnRGYWNlPiBjcmVhdGUoQ1NTRm9udFNlbGVjdG9yKiwg
U3R5bGVSdWxlRm9udEZhY2UqIGNzc0Nvbm5lY3Rpb24gPSBudWxscHRyLCBGb250RmFjZSogd3Jh
cHBlciA9IG51bGxwdHIsIGJvb2wgaXNMb2NhbEZhbGxiYWNrID0gZmFsc2UpOwogICAgIHZpcnR1
YWwgfkNTU0ZvbnRGYWNlKCk7CiAKICAgICAvLyBGSVhNRTogVGhlc2UgZnVuY3Rpb25zIGRvbid0
IG5lZWQgdG8gaGF2ZSBib29sZWFuIHJldHVybiB2YWx1ZXMuCkBAIC0xMTIsNyArMTA5LDcgQEAg
cHVibGljOgogCiAgICAgYm9vbCBjb21wdXRlRmFpbHVyZVN0YXRlKCkgY29uc3Q7CiAKLSAgICB2
b2lkIG9wcG9ydHVuaXN0aWNhbGx5U3RhcnRGb250RGF0YVVSTExvYWRpbmcoQ1NTRm9udFNlbGVj
dG9yJik7CisgICAgdm9pZCBvcHBvcnR1bmlzdGljYWxseVN0YXJ0Rm9udERhdGFVUkxMb2FkaW5n
KCk7CiAKICAgICB2b2lkIGFkb3B0U291cmNlKHN0ZDo6dW5pcXVlX3B0cjxDU1NGb250RmFjZVNv
dXJjZT4mJik7CiAgICAgdm9pZCBzb3VyY2VzUG9wdWxhdGVkKCkgeyBtX3NvdXJjZXNQb3B1bGF0
ZWQgPSB0cnVlOyB9CkBAIC0xNjcsNyArMTY0LDYgQEAgcHVibGljOgogICAgIHZvaWQgc2V0RXJy
b3JTdGF0ZSgpOwogCiBwcml2YXRlOgotICAgIENTU0ZvbnRGYWNlKENTU0ZvbnRTZWxlY3Rvcios
IFN0eWxlUnVsZUZvbnRGYWNlKiwgRm9udEZhY2UqLCBib29sIGlzTG9jYWxGYWxsYmFjayk7CiAg
ICAgQ1NTRm9udEZhY2UoY29uc3QgU2V0dGluZ3MqLCBTdHlsZVJ1bGVGb250RmFjZSosIEZvbnRG
YWNlKiwgYm9vbCBpc0xvY2FsRmFsbGJhY2spOwogCiAgICAgc2l6ZV90IHB1bXAoRXh0ZXJuYWxS
ZXNvdXJjZURvd25sb2FkUG9saWN5KTsKQEAgLTE3OSw2ICsxNzUsOCBAQCBwcml2YXRlOgogICAg
IHZvaWQgZm9udExvYWRFdmVudE9jY3VycmVkKCk7CiAgICAgdm9pZCB0aW1lb3V0RmlyZWQoKTsK
IAorICAgIERvY3VtZW50KiBkb2N1bWVudCgpOworCiAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4g
bV9mYW1pbGllczsKICAgICBWZWN0b3I8VW5pY29kZVJhbmdlPiBtX3JhbmdlczsKIApAQCAtMTg2
LDcgKzE4NCw2IEBAIHByaXZhdGU6CiAgICAgRm9udExvYWRpbmdCZWhhdmlvciBtX2xvYWRpbmdC
ZWhhdmlvciB7IEZvbnRMb2FkaW5nQmVoYXZpb3I6OkF1dG8gfTsKIAogICAgIFZlY3RvcjxzdGQ6
OnVuaXF1ZV9wdHI8Q1NTRm9udEZhY2VTb3VyY2U+LCAwLCBDcmFzaE9uT3ZlcmZsb3csIDA+IG1f
c291cmNlczsKLSAgICBXZWFrUHRyPENTU0ZvbnRTZWxlY3Rvcj4gbV9mb250U2VsZWN0b3I7IC8v
IEZJWE1FOiBJZGVhbGx5IHRoaXMgZGF0YSBtZW1iZXIgd291bGQgZ28gYXdheSAoaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODM1MSkuCiAgICAgUmVmUHRyPFN0eWxl
UnVsZUZvbnRGYWNlPiBtX2Nzc0Nvbm5lY3Rpb247CiAgICAgSGFzaFNldDxDbGllbnQqPiBtX2Ns
aWVudHM7CiAgICAgV2Vha1B0cjxGb250RmFjZT4gbV93cmFwcGVyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NGb250RmFjZVNvdXJjZS5jcHAKaW5kZXggZTZlYTE4MTZmZmMzY2E2ZDA0NTAyM2E4ZGE3
NzM0YmRhYzUyMjg2NC4uYmMzMjNjMmYyZWMwMWE3N2FkNTA4MzMxMTJlMTk2MDAzMDhhNzNlZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwCkBAIC02NiwyMiArNjYs
MjUgQEAgaW5saW5lIHZvaWQgQ1NTRm9udEZhY2VTb3VyY2U6OnNldFN0YXR1cyhTdGF0dXMgbmV3
U3RhdHVzKQogICAgIG1fc3RhdHVzID0gbmV3U3RhdHVzOwogfQogCi1DU1NGb250RmFjZVNvdXJj
ZTo6Q1NTRm9udEZhY2VTb3VyY2UoQ1NTRm9udEZhY2UmIG93bmVyLCBjb25zdCBTdHJpbmcmIGZh
bWlseU5hbWVPclVSSSwgQ2FjaGVkRm9udCogZm9udCwgU1ZHRm9udEZhY2VFbGVtZW50KiBmb250
RmFjZSwgUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXJWaWV3PiYmIGFycmF5QnVmZmVyVmlldykKK0NT
U0ZvbnRGYWNlU291cmNlOjpDU1NGb250RmFjZVNvdXJjZShDU1NGb250RmFjZSYgb3duZXIsIGNv
bnN0IFN0cmluZyYgZmFtaWx5TmFtZU9yVVJJKQogICAgIDogbV9mYW1pbHlOYW1lT3JVUkkoZmFt
aWx5TmFtZU9yVVJJKQotICAgICwgbV9mb250KGZvbnQpCiAgICAgLCBtX2ZhY2Uob3duZXIpCi0g
ICAgLCBtX2ltbWVkaWF0ZVNvdXJjZShXVEZNb3ZlKGFycmF5QnVmZmVyVmlldykpCi0gICAgLCBt
X3N2Z0ZvbnRGYWNlRWxlbWVudChtYWtlV2Vha1B0cihmb250RmFjZSkpCi0gICAgLCBtX2hhc1NW
R0ZvbnRGYWNlRWxlbWVudChtX3N2Z0ZvbnRGYWNlRWxlbWVudCkKK3sKK30KKworQ1NTRm9udEZh
Y2VTb3VyY2U6OkNTU0ZvbnRGYWNlU291cmNlKENTU0ZvbnRGYWNlJiBvd25lciwgY29uc3QgU3Ry
aW5nJiBmYW1pbHlOYW1lT3JVUkksIENTU0ZvbnRTZWxlY3RvciYgZm9udFNlbGVjdG9yLCBDYWNo
ZWRGb250JiBmb250KQorICAgIDogbV9mYW1pbHlOYW1lT3JVUkkoZmFtaWx5TmFtZU9yVVJJKQor
ICAgICwgbV9mYWNlKG93bmVyKQorICAgICwgbV9mb250U2VsZWN0b3IobWFrZVdlYWtQdHIoZm9u
dFNlbGVjdG9yKSkKKyAgICAsIG1fZm9udCgmZm9udCkKIHsKICAgICAvLyBUaGlzIG1heSBzeW5j
aHJvbm91c2x5IGNhbGwgZm9udExvYWRlZCgpLgotICAgIGlmIChtX2ZvbnQpCi0gICAgICAgIG1f
Zm9udC0+YWRkQ2xpZW50KCp0aGlzKTsKKyAgICBtX2ZvbnQtPmFkZENsaWVudCgqdGhpcyk7CiAK
LSAgICBpZiAoc3RhdHVzKCkgPT0gU3RhdHVzOjpQZW5kaW5nICYmIG1fZm9udCAmJiBtX2ZvbnQt
PmlzTG9hZGVkKCkpIHsKKyAgICBpZiAoc3RhdHVzKCkgPT0gU3RhdHVzOjpQZW5kaW5nICYmIG1f
Zm9udC0+aXNMb2FkZWQoKSkgewogICAgICAgICBzZXRTdGF0dXMoU3RhdHVzOjpMb2FkaW5nKTsK
ICAgICAgICAgaWYgKCFzaG91bGRJZ25vcmVGb250TG9hZENvbXBsZXRpb25zKCkpIHsKLSAgICAg
ICAgICAgIGlmIChtX2ZvbnQgJiYgbV9mb250LT5lcnJvck9jY3VycmVkKCkpCisgICAgICAgICAg
ICBpZiAobV9mb250LT5lcnJvck9jY3VycmVkKCkpCiAgICAgICAgICAgICAgICAgc2V0U3RhdHVz
KFN0YXR1czo6RmFpbHVyZSk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgc2V0
U3RhdHVzKFN0YXR1czo6U3VjY2Vzcyk7CkBAIC04OSw2ICs5MiwyMSBAQCBDU1NGb250RmFjZVNv
dXJjZTo6Q1NTRm9udEZhY2VTb3VyY2UoQ1NTRm9udEZhY2UmIG93bmVyLCBjb25zdCBTdHJpbmcm
IGZhbWlseU5hbQogICAgIH0KIH0KIAorQ1NTRm9udEZhY2VTb3VyY2U6OkNTU0ZvbnRGYWNlU291
cmNlKENTU0ZvbnRGYWNlJiBvd25lciwgY29uc3QgU3RyaW5nJiBmYW1pbHlOYW1lT3JVUkksIFNW
R0ZvbnRGYWNlRWxlbWVudCYgZm9udEZhY2UpCisgICAgOiBtX2ZhbWlseU5hbWVPclVSSShmYW1p
bHlOYW1lT3JVUkkpCisgICAgLCBtX2ZhY2Uob3duZXIpCisgICAgLCBtX3N2Z0ZvbnRGYWNlRWxl
bWVudChtYWtlV2Vha1B0cihmb250RmFjZSkpCisgICAgLCBtX2hhc1NWR0ZvbnRGYWNlRWxlbWVu
dCh0cnVlKQoreworfQorCitDU1NGb250RmFjZVNvdXJjZTo6Q1NTRm9udEZhY2VTb3VyY2UoQ1NT
Rm9udEZhY2UmIG93bmVyLCBjb25zdCBTdHJpbmcmIGZhbWlseU5hbWVPclVSSSwgUmVmPEpTQzo6
QXJyYXlCdWZmZXJWaWV3PiYmIGFycmF5QnVmZmVyVmlldykKKyAgICA6IG1fZmFtaWx5TmFtZU9y
VVJJKGZhbWlseU5hbWVPclVSSSkKKyAgICAsIG1fZmFjZShvd25lcikKKyAgICAsIG1faW1tZWRp
YXRlU291cmNlKFdURk1vdmUoYXJyYXlCdWZmZXJWaWV3KSkKK3sKK30KKwogQ1NTRm9udEZhY2VT
b3VyY2U6On5DU1NGb250RmFjZVNvdXJjZSgpCiB7CiAgICAgaWYgKG1fZm9udCkKQEAgLTEwMCwx
MCArMTE4LDEwIEBAIGJvb2wgQ1NTRm9udEZhY2VTb3VyY2U6OnNob3VsZElnbm9yZUZvbnRMb2Fk
Q29tcGxldGlvbnMoKSBjb25zdAogICAgIHJldHVybiBtX2ZhY2Uuc2hvdWxkSWdub3JlRm9udExv
YWRDb21wbGV0aW9ucygpOwogfQogCi12b2lkIENTU0ZvbnRGYWNlU291cmNlOjpvcHBvcnR1bmlz
dGljYWxseVN0YXJ0Rm9udERhdGFVUkxMb2FkaW5nKENTU0ZvbnRTZWxlY3RvciYgZm9udFNlbGVj
dG9yKQordm9pZCBDU1NGb250RmFjZVNvdXJjZTo6b3Bwb3J0dW5pc3RpY2FsbHlTdGFydEZvbnRE
YXRhVVJMTG9hZGluZygpCiB7CiAgICAgaWYgKHN0YXR1cygpID09IFN0YXR1czo6UGVuZGluZyAm
JiBtX2ZvbnQgJiYgbV9mb250LT51cmwoKS5wcm90b2NvbElzRGF0YSgpICYmIG1fZmFtaWx5TmFt
ZU9yVVJJLmxlbmd0aCgpIDwgTUIpCi0gICAgICAgIGxvYWQoJmZvbnRTZWxlY3Rvcik7CisgICAg
ICAgIGxvYWQoKTsKIH0KIAogdm9pZCBDU1NGb250RmFjZVNvdXJjZTo6Zm9udExvYWRlZChDYWNo
ZWRGb250JiBsb2FkZWRGb250KQpAQCAtMTMyLDEzICsxNTAsMTMgQEAgdm9pZCBDU1NGb250RmFj
ZVNvdXJjZTo6Zm9udExvYWRlZChDYWNoZWRGb250JiBsb2FkZWRGb250KQogICAgIG1fZmFjZS5m
b250TG9hZGVkKCp0aGlzKTsKIH0KIAotdm9pZCBDU1NGb250RmFjZVNvdXJjZTo6bG9hZChDU1NG
b250U2VsZWN0b3IqIGZvbnRTZWxlY3RvcikKK3ZvaWQgQ1NTRm9udEZhY2VTb3VyY2U6OmxvYWQo
RG9jdW1lbnQqIGRvY3VtZW50KQogewogICAgIHNldFN0YXR1cyhTdGF0dXM6OkxvYWRpbmcpOwog
CiAgICAgaWYgKG1fZm9udCkgewotICAgICAgICBBU1NFUlQoZm9udFNlbGVjdG9yKTsKLSAgICAg
ICAgZm9udFNlbGVjdG9yLT5iZWdpbkxvYWRpbmdGb250U29vbigqbV9mb250KTsKKyAgICAgICAg
QVNTRVJUKG1fZm9udFNlbGVjdG9yKTsKKyAgICAgICAgbV9mb250U2VsZWN0b3ItPmJlZ2luTG9h
ZGluZ0ZvbnRTb29uKCptX2ZvbnQpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGJvb2wgc3VjY2Vz
cyA9IGZhbHNlOwogICAgICAgICBpZiAobV9oYXNTVkdGb250RmFjZUVsZW1lbnQpIHsKQEAgLTE2
NywxMCArMTg1LDggQEAgdm9pZCBDU1NGb250RmFjZVNvdXJjZTo6bG9hZChDU1NGb250U2VsZWN0
b3IqIGZvbnRTZWxlY3RvcikKICAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRDb21wdXRl
ZFNpemUoMSk7CiAgICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0U2hvdWxkQWxsb3dVc2Vy
SW5zdGFsbGVkRm9udHMobV9mYWNlLmFsbG93VXNlckluc3RhbGxlZEZvbnRzKCkpOwogICAgICAg
ICAgICAgc3VjY2VzcyA9IEZvbnRDYWNoZTo6c2luZ2xldG9uKCkuZm9udEZvckZhbWlseShmb250
RGVzY3JpcHRpb24sIG1fZmFtaWx5TmFtZU9yVVJJLCBudWxscHRyLCBGb250U2VsZWN0aW9uU3Bl
Y2lmaWVkQ2FwYWJpbGl0aWVzKCksIHRydWUpOwotICAgICAgICAgICAgaWYgKFJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkud2ViQVBJU3RhdGlzdGljc0VuYWJsZWQoKSkg
ewotICAgICAgICAgICAgICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IGZvbnRTZWxlY3Rvci0+ZG9j
dW1lbnQoKSkKLSAgICAgICAgICAgICAgICAgICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJl
ZCgpLmxvZ0ZvbnRMb2FkKCpkb2N1bWVudCwgbV9mYW1pbHlOYW1lT3JVUkkuc3RyaW5nKCksIHN1
Y2Nlc3MpOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGRvY3VtZW50ICYmIFJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkud2ViQVBJU3RhdGlzdGljc0VuYWJs
ZWQoKSkKKyAgICAgICAgICAgICAgICBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCkubG9n
Rm9udExvYWQoKmRvY3VtZW50LCBtX2ZhbWlseU5hbWVPclVSSS5zdHJpbmcoKSwgc3VjY2Vzcyk7
CiAgICAgICAgIH0KICAgICAgICAgc2V0U3RhdHVzKHN1Y2Nlc3MgPyBTdGF0dXM6OlN1Y2Nlc3Mg
OiBTdGF0dXM6OkZhaWx1cmUpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NGb250RmFjZVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291
cmNlLmgKaW5kZXggN2VhYjU5ODk1NjBhNDE2OThiZjY0MmMxZGNmYWFjNTk4Zjc2NmU2OS4uZjdl
NzhiYTUxMWQyNDk4OGI5ZTM3MDQyNzU3MmRhY2ExMmQ2ZDZjOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0ZvbnRGYWNlU291cmNlLmgKQEAgLTM1LDYgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBDU1NGb250RmFjZTsKIGNsYXNzIENTU0ZvbnRTZWxlY3RvcjsKK2NsYXNzIERv
Y3VtZW50OwogY2xhc3MgRm9udDsKIHN0cnVjdCBGb250Q3VzdG9tUGxhdGZvcm1EYXRhOwogY2xh
c3MgRm9udERlc2NyaXB0aW9uOwpAQCAtNDksNyArNTAsMTAgQEAgdHlwZWRlZiBGb250VGFnZ2Vk
U2V0dGluZ3M8aW50PiBGb250RmVhdHVyZVNldHRpbmdzOwogY2xhc3MgQ1NTRm9udEZhY2VTb3Vy
Y2UgZmluYWwgOiBwdWJsaWMgQ2FjaGVkRm9udENsaWVudCB7CiAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgQ1NTRm9udEZhY2VTb3VyY2UoQ1NTRm9udEZhY2UmIG93
bmVyLCBjb25zdCBTdHJpbmcmIGZhbWlseU5hbWVPclVSSSwgQ2FjaGVkRm9udCogPSBudWxscHRy
LCBTVkdGb250RmFjZUVsZW1lbnQqID0gbnVsbHB0ciwgUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXJW
aWV3PiYmID0gbnVsbHB0cik7CisgICAgQ1NTRm9udEZhY2VTb3VyY2UoQ1NTRm9udEZhY2UmIG93
bmVyLCBjb25zdCBTdHJpbmcmIGZhbWlseU5hbWVPclVSSSk7CisgICAgQ1NTRm9udEZhY2VTb3Vy
Y2UoQ1NTRm9udEZhY2UmIG93bmVyLCBjb25zdCBTdHJpbmcmIGZhbWlseU5hbWVPclVSSSwgQ1NT
Rm9udFNlbGVjdG9yJiwgQ2FjaGVkRm9udCYpOworICAgIENTU0ZvbnRGYWNlU291cmNlKENTU0Zv
bnRGYWNlJiBvd25lciwgY29uc3QgU3RyaW5nJiBmYW1pbHlOYW1lT3JVUkksIFNWR0ZvbnRGYWNl
RWxlbWVudCYpOworICAgIENTU0ZvbnRGYWNlU291cmNlKENTU0ZvbnRGYWNlJiBvd25lciwgY29u
c3QgU3RyaW5nJiBmYW1pbHlOYW1lT3JVUkksIFJlZjxKU0M6OkFycmF5QnVmZmVyVmlldz4mJik7
CiAgICAgdmlydHVhbCB+Q1NTRm9udEZhY2VTb3VyY2UoKTsKIAogICAgIC8vICAgICAgICAgICAg
ICAgICAgICAgID0+IFN1Y2Nlc3MKQEAgLTY3LDkgKzcxLDkgQEAgcHVibGljOgogCiAgICAgY29u
c3QgQXRvbVN0cmluZyYgZmFtaWx5TmFtZU9yVVJJKCkgY29uc3QgeyByZXR1cm4gbV9mYW1pbHlO
YW1lT3JVUkk7IH0KIAotICAgIHZvaWQgb3Bwb3J0dW5pc3RpY2FsbHlTdGFydEZvbnREYXRhVVJM
TG9hZGluZyhDU1NGb250U2VsZWN0b3ImKTsKKyAgICB2b2lkIG9wcG9ydHVuaXN0aWNhbGx5U3Rh
cnRGb250RGF0YVVSTExvYWRpbmcoKTsKIAotICAgIHZvaWQgbG9hZChDU1NGb250U2VsZWN0b3Iq
KTsKKyAgICB2b2lkIGxvYWQoRG9jdW1lbnQqID0gbnVsbHB0cik7CiAgICAgUmVmUHRyPEZvbnQ+
IGZvbnQoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5
bnRoZXRpY0l0YWxpYywgY29uc3QgRm9udEZlYXR1cmVTZXR0aW5ncyYsIEZvbnRTZWxlY3Rpb25T
cGVjaWZpZWRDYXBhYmlsaXRpZXMpOwogCiAgICAgQ2FjaGVkRm9udCogY2FjaGVkRm9udCgpIGNv
bnN0IHsgcmV0dXJuIG1fZm9udC5nZXQoKTsgfQpAQCAtODUsMTggKzg5LDE5IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBzZXRTdGF0dXMoU3RhdHVzKTsKIAogICAgIEF0b21TdHJpbmcgbV9mYW1pbHlO
YW1lT3JVUkk7IC8vIFVSSSBmb3IgcmVtb3RlLCBidWlsdC1pbiBmb250IG5hbWUgZm9yIGxvY2Fs
LgotICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZEZvbnQ+IG1fZm9udDsgLy8gRm9yIHJl
bW90ZSBmb250cywgYSBwb2ludGVyIHRvIG91ciBjYWNoZWQgcmVzb3VyY2UuCiAgICAgQ1NTRm9u
dEZhY2UmIG1fZmFjZTsgLy8gT3VyIG93bmluZyBmb250IGZhY2UuCisgICAgV2Vha1B0cjxDU1NG
b250U2VsZWN0b3I+IG1fZm9udFNlbGVjdG9yIHsgbnVsbHB0ciB9OyAvLyBGb3IgcmVtb3RlIGZv
bnRzLCB0byBvcmNoZXN0cmF0ZSBsb2FkaW5nLgorICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENh
Y2hlZEZvbnQ+IG1fZm9udDsgLy8gQWxzbyBmb3IgcmVtb3RlIGZvbnRzLCBhIHBvaW50ZXIgdG8g
b3VyIGNhY2hlZCByZXNvdXJjZS4KIAogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZ2VuZXJh
dGVkT1RGQnVmZmVyOwotICAgIFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyVmlldz4gbV9pbW1lZGlh
dGVTb3VyY2U7CisgICAgUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXJWaWV3PiBtX2ltbWVkaWF0ZVNv
dXJjZSB7IG51bGxwdHIgfTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3Jt
RGF0YT4gbV9pbW1lZGlhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhOwogCi0gICAgV2Vha1B0cjxT
VkdGb250RmFjZUVsZW1lbnQ+IG1fc3ZnRm9udEZhY2VFbGVtZW50OworICAgIFdlYWtQdHI8U1ZH
Rm9udEZhY2VFbGVtZW50PiBtX3N2Z0ZvbnRGYWNlRWxlbWVudCB7IG51bGxwdHIgfTsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gbV9pbkRvY3VtZW50Q3VzdG9t
UGxhdGZvcm1EYXRhOwogCiAgICAgU3RhdHVzIG1fc3RhdHVzIHsgU3RhdHVzOjpQZW5kaW5nIH07
Ci0gICAgYm9vbCBtX2hhc1NWR0ZvbnRGYWNlRWxlbWVudDsKKyAgICBib29sIG1faGFzU1ZHRm9u
dEZhY2VFbGVtZW50IHsgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuY3BwIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAKaW5kZXggZDBjMjMzNjk2YTJmNmU3YTVl
Zjk3MmI3ZmU0ZTVlMTVhNmY4NjM5ZC4uYjA3Yjk5NGNiZWEwZTBkOWQ5NGVhYzlkOWIwZDY2NTYx
MDYxOTM0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAKQEAgLTI0NSw3
ICsyNDUsNyBAQCB2b2lkIENTU0ZvbnRTZWxlY3Rvcjo6b3Bwb3J0dW5pc3RpY2FsbHlTdGFydEZv
bnREYXRhVVJMTG9hZGluZyhjb25zdCBGb250Q2FzY2FkZQogICAgIGlmICghc2VnbWVudGVkRm9u
dEZhY2UpCiAgICAgICAgIHJldHVybjsKICAgICBmb3IgKGF1dG8mIGZhY2UgOiBzZWdtZW50ZWRG
b250RmFjZS0+Y29uc3RpdHVlbnRGYWNlcygpKQotICAgICAgICBmYWNlLT5vcHBvcnR1bmlzdGlj
YWxseVN0YXJ0Rm9udERhdGFVUkxMb2FkaW5nKCp0aGlzKTsKKyAgICAgICAgZmFjZS0+b3Bwb3J0
dW5pc3RpY2FsbHlTdGFydEZvbnREYXRhVVJMTG9hZGluZygpOwogfQogCiB2b2lkIENTU0ZvbnRT
ZWxlY3Rvcjo6Zm9udExvYWRlZChDU1NGb250RmFjZSYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvRm9udEZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmNwcApp
bmRleCAzZjc2ODIxZTRkMDllYmFmMzIwYjQzNTJkZGU2MDM0OTM3MjJiYTRjLi4zYmQ4YzA2OTAz
ODc3ODc0NmNlNGJiNmU5MzJmOTNhMmM0NjhmOTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvRm9udEZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5jcHAK
QEAgLTUwLDcgKzUwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgYm9vbCBwb3B1
bGF0ZUZvbnRGYWNlV2l0aEFycmF5QnVmZmVyKENTU0ZvbnRGYWNlJiBmb250RmFjZSwgUmVmPEpT
Qzo6QXJyYXlCdWZmZXJWaWV3PiYmIGFycmF5QnVmZmVyVmlldykKIHsKLSAgICBhdXRvIHNvdXJj
ZSA9IG1ha2VVbmlxdWU8Q1NTRm9udEZhY2VTb3VyY2U+KGZvbnRGYWNlLCBTdHJpbmcoKSwgbnVs
bHB0ciwgbnVsbHB0ciwgV1RGTW92ZShhcnJheUJ1ZmZlclZpZXcpKTsKKyAgICBhdXRvIHNvdXJj
ZSA9IG1ha2VVbmlxdWU8Q1NTRm9udEZhY2VTb3VyY2U+KGZvbnRGYWNlLCBTdHJpbmcoKSwgV1RG
TW92ZShhcnJheUJ1ZmZlclZpZXcpKTsKICAgICBmb250RmFjZS5hZG9wdFNvdXJjZShXVEZNb3Zl
KHNvdXJjZSkpOwogICAgIHJldHVybiBmYWxzZTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>421817</attachid>
            <date>2021-03-01 06:44:58 -0800</date>
            <delta_ts>2021-03-01 07:34:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208351-20210301144457.patch</filename>
            <type>text/plain</type>
            <size>16877</size>
            <attacher name="Chris Lord">clord</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczMjQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmMzOGY3OGY2ZTcyMGI1
ODYwZTZjZDliYmMyZDA5NjkwNGEyNTQ4Yy4uMjZmNmMwNzNlMWU0YTVkZGJkOWQ3MzQ4NGU3NDBj
NmY2YzAwZDg1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDIxLTAyLTI0ICBDaHJp
cyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KKworICAgICAgICBDU1NGb250RmFjZSBzaG91bGQg
bm90IG5lZWQgaXRzIG1fZm9udFNlbGVjdG9yIGRhdGEgbWVtYmVyCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDgzNTEKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzc0MzQ2MzAyPgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisg
ICAgICAgIE1vdmUgdGhlIG1fZm9udFNlbGVjdG9yIG1lbWJlciBvZiBDU1NGb250RmFjZSBvbnRv
IENTU0ZvbnRGYWNlU291cmNlLAorICAgICAgICB0aGUgb25seSBwbGFjZSB3aGVyZSBpdCdzIGFj
dHVhbGx5IHJlcXVpcmVkLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoZXJlIGlz
IG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIGNzcy9DU1NGb250RmFjZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZTo6YXBwZW5kU291cmNlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NGb250RmFjZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRG
YWNlOjpkb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZTo6b3Bwb3J0dW5p
c3RpY2FsbHlTdGFydEZvbnREYXRhVVJMTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NG
b250RmFjZTo6cHVtcCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZTo6Zm9udCk6Cisg
ICAgICAgICogY3NzL0NTU0ZvbnRGYWNlLmg6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU291
cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU291cmNlOjpDU1NGb250RmFj
ZVNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZVNvdXJjZTo6b3Bwb3J0dW5p
c3RpY2FsbHlTdGFydEZvbnREYXRhVVJMTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NG
b250RmFjZVNvdXJjZTo6bG9hZCk6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU291cmNlLmg6
CisgICAgICAgICogY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
U1NGb250U2VsZWN0b3I6Om9wcG9ydHVuaXN0aWNhbGx5U3RhcnRGb250RGF0YVVSTExvYWRpbmcp
OgorICAgICAgICAqIGNzcy9Gb250RmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwb3B1bGF0
ZUZvbnRGYWNlV2l0aEFycmF5QnVmZmVyKToKKwogMjAyMS0wMi0yMiAgQW50dGkgS29pdmlzdG8g
IDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11bSW50ZWdyYXRpb25dIFN3aXRjaCBv
dXQgaWYgbGFyZ2UgdHJlZXMgYXJlIGJlaW5nIGludmFsaWRhdGVkCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Zv
bnRGYWNlLmNwcAppbmRleCA0MjgzMmNjNDlmNGQzZjIwMDgzYTIyOGE5YWJiYTdlYzc3OTgwNTdk
Li4wYjA0ZmQ1M2YxNjk3ZmQxNDQxZjcxYTExODVhNzI4MTY2OGIyNmIzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NGb250RmFjZS5jcHAKQEAgLTc4LDEwICs3OCwxMSBAQCB2b2lkIENTU0ZvbnRGYWNlOjph
cHBlbmRTb3VyY2VzKENTU0ZvbnRGYWNlJiBmb250RmFjZSwgQ1NTVmFsdWVMaXN0JiBzcmNMaXN0
LCBEbwogICAgICAgICAgICAgYm9vbCBhbGxvd0Rvd25sb2FkaW5nID0gZm91bmRTVkdGb250IHx8
IChzZXR0aW5ncyAmJiBzZXR0aW5ncy0+ZG93bmxvYWRhYmxlQmluYXJ5Rm9udHNFbmFibGVkKCkp
OwogICAgICAgICAgICAgaWYgKGFsbG93RG93bmxvYWRpbmcgJiYgaXRlbS5pc1N1cHBvcnRlZEZv
cm1hdCgpICYmIGRvY3VtZW50KSB7CiAgICAgICAgICAgICAgICAgaWYgKENhY2hlZEZvbnQqIGNh
Y2hlZEZvbnQgPSBpdGVtLmNhY2hlZEZvbnQoZG9jdW1lbnQsIGZvdW5kU1ZHRm9udCwgaXNJbml0
aWF0aW5nRWxlbWVudEluVXNlckFnZW50U2hhZG93VHJlZSkpCi0gICAgICAgICAgICAgICAgICAg
IHNvdXJjZSA9IG1ha2VVbmlxdWU8Q1NTRm9udEZhY2VTb3VyY2U+KGZvbnRGYWNlLCBpdGVtLnJl
c291cmNlKCksIGNhY2hlZEZvbnQpOworICAgICAgICAgICAgICAgICAgICBzb3VyY2UgPSBtYWtl
VW5pcXVlPENTU0ZvbnRGYWNlU291cmNlPihmb250RmFjZSwgaXRlbS5yZXNvdXJjZSgpLCBkb2N1
bWVudC0+Zm9udFNlbGVjdG9yKCksICpjYWNoZWRGb250KTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfSBlbHNlCi0gICAgICAgICAgICBzb3VyY2UgPSBtYWtlVW5pcXVlPENTU0ZvbnRGYWNlU291
cmNlPihmb250RmFjZSwgaXRlbS5yZXNvdXJjZSgpLCBudWxscHRyLCBmb250RmFjZUVsZW1lbnQp
OworICAgICAgICAgICAgc291cmNlID0gKGZvbnRGYWNlRWxlbWVudCA/IG1ha2VVbmlxdWU8Q1NT
Rm9udEZhY2VTb3VyY2U+KGZvbnRGYWNlLCBpdGVtLnJlc291cmNlKCksICpmb250RmFjZUVsZW1l
bnQpCisgICAgICAgICAgICAgICAgOiBtYWtlVW5pcXVlPENTU0ZvbnRGYWNlU291cmNlPihmb250
RmFjZSwgaXRlbS5yZXNvdXJjZSgpKSk7CiAKICAgICAgICAgaWYgKHNvdXJjZSkKICAgICAgICAg
ICAgIGZvbnRGYWNlLmFkb3B0U291cmNlKFdURk1vdmUoc291cmNlKSk7CkBAIC04OSwxMiArOTAs
MTIgQEAgdm9pZCBDU1NGb250RmFjZTo6YXBwZW5kU291cmNlcyhDU1NGb250RmFjZSYgZm9udEZh
Y2UsIENTU1ZhbHVlTGlzdCYgc3JjTGlzdCwgRG8KICAgICBmb250RmFjZS5zb3VyY2VzUG9wdWxh
dGVkKCk7CiB9CiAKLUNTU0ZvbnRGYWNlOjpDU1NGb250RmFjZShDU1NGb250U2VsZWN0b3IqIGZv
bnRTZWxlY3RvciwgU3R5bGVSdWxlRm9udEZhY2UqIGNzc0Nvbm5lY3Rpb24sIEZvbnRGYWNlKiB3
cmFwcGVyLCBib29sIGlzTG9jYWxGYWxsYmFjaykKLSAgICA6IENTU0ZvbnRGYWNlKGZvbnRTZWxl
Y3RvciAmJiBmb250U2VsZWN0b3ItPmRvY3VtZW50KCkgPyAmZm9udFNlbGVjdG9yLT5kb2N1bWVu
dCgpLT5zZXR0aW5ncygpIDogbnVsbHB0ciwgY3NzQ29ubmVjdGlvbiwgd3JhcHBlciwgaXNMb2Nh
bEZhbGxiYWNrKQorUmVmPENTU0ZvbnRGYWNlPiBDU1NGb250RmFjZTo6Y3JlYXRlKENTU0ZvbnRT
ZWxlY3RvciogZm9udFNlbGVjdG9yLCBTdHlsZVJ1bGVGb250RmFjZSogY3NzQ29ubmVjdGlvbiwg
Rm9udEZhY2UqIHdyYXBwZXIsIGJvb2wgaXNMb2NhbEZhbGxiYWNrKQogewotICAgIG1fZm9udFNl
bGVjdG9yID0gbWFrZVdlYWtQdHIoZm9udFNlbGVjdG9yKTsgLy8gRklYTUU6IElkZWFsbHkgdGhp
cyBkYXRhIG1lbWJlciB3b3VsZCBnbyBhd2F5IChodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjA4MzUxKS4KKyAgICBhdXRvIHJlc3VsdCA9IGFkb3B0UmVmKCpuZXcgQ1NT
Rm9udEZhY2UoKGZvbnRTZWxlY3RvciAmJiBmb250U2VsZWN0b3ItPmRvY3VtZW50KCkpID8gJmZv
bnRTZWxlY3Rvci0+ZG9jdW1lbnQoKS0+c2V0dGluZ3MoKSA6IG51bGxwdHIsIGNzc0Nvbm5lY3Rp
b24sIHdyYXBwZXIsIGlzTG9jYWxGYWxsYmFjaykpOwogICAgIGlmIChmb250U2VsZWN0b3IpCi0g
ICAgICAgIGFkZENsaWVudCgqZm9udFNlbGVjdG9yKTsKKyAgICAgICAgcmVzdWx0LT5hZGRDbGll
bnQoKmZvbnRTZWxlY3Rvcik7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogQ1NTRm9udEZhY2U6
OkNTU0ZvbnRGYWNlKGNvbnN0IFNldHRpbmdzKiBzZXR0aW5ncywgU3R5bGVSdWxlRm9udEZhY2Uq
IGNzc0Nvbm5lY3Rpb24sIEZvbnRGYWNlKiB3cmFwcGVyLCBib29sIGlzTG9jYWxGYWxsYmFjaykK
QEAgLTM4Myw2ICszODQsMTMgQEAgdm9pZCBDU1NGb250RmFjZTo6dGltZW91dEZpcmVkKCkKICAg
ICBmb250TG9hZEV2ZW50T2NjdXJyZWQoKTsKIH0KIAorRG9jdW1lbnQqIENTU0ZvbnRGYWNlOjpk
b2N1bWVudCgpCit7CisgICAgaWYgKG1fd3JhcHBlciAmJiBpczxEb2N1bWVudD4obV93cmFwcGVy
LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpKQorICAgICAgICByZXR1cm4gJmRvd25jYXN0PERv
Y3VtZW50PigqbV93cmFwcGVyLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOworICAgIHJldHVy
biBudWxscHRyOworfQorCiBib29sIENTU0ZvbnRGYWNlOjpjb21wdXRlRmFpbHVyZVN0YXRlKCkg
Y29uc3QKIHsKICAgICBpZiAoc3RhdHVzKCkgPT0gU3RhdHVzOjpGYWlsdXJlKQpAQCAtNTQ4LDEx
ICs1NTYsMTEgQEAgdm9pZCBDU1NGb250RmFjZTo6Zm9udExvYWRlZChDU1NGb250RmFjZVNvdXJj
ZSYpCiAgICAgZm9udExvYWRFdmVudE9jY3VycmVkKCk7CiB9CiAKLXZvaWQgQ1NTRm9udEZhY2U6
Om9wcG9ydHVuaXN0aWNhbGx5U3RhcnRGb250RGF0YVVSTExvYWRpbmcoQ1NTRm9udFNlbGVjdG9y
JiBmb250U2VsZWN0b3IpCit2b2lkIENTU0ZvbnRGYWNlOjpvcHBvcnR1bmlzdGljYWxseVN0YXJ0
Rm9udERhdGFVUkxMb2FkaW5nKCkKIHsKICAgICAvLyBXZSBkb24ndCB3YW50IHRvIGdvIGNyYXp5
IGhlcmUgYW5kIGJsb3cgdGhlIGNhY2hlLiBVc3VhbGx5IHRoZXNlIGRhdGEgVVJMcyBhcmUgdGhl
IGZpcnN0IGl0ZW0gaW4gdGhlIHNyYzogbGlzdCwgc28gbGV0J3MganVzdCBjaGVjayB0aGF0IG9u
ZS4KICAgICBpZiAoIW1fc291cmNlcy5pc0VtcHR5KCkpCi0gICAgICAgIG1fc291cmNlc1swXS0+
b3Bwb3J0dW5pc3RpY2FsbHlTdGFydEZvbnREYXRhVVJMTG9hZGluZyhmb250U2VsZWN0b3IpOwor
ICAgICAgICBtX3NvdXJjZXNbMF0tPm9wcG9ydHVuaXN0aWNhbGx5U3RhcnRGb250RGF0YVVSTExv
YWRpbmcoKTsKIH0KIAogc2l6ZV90IENTU0ZvbnRGYWNlOjpwdW1wKEV4dGVybmFsUmVzb3VyY2VE
b3dubG9hZFBvbGljeSBwb2xpY3kpCkBAIC01NzksNyArNTg3LDcgQEAgc2l6ZV90IENTU0ZvbnRG
YWNlOjpwdW1wKEV4dGVybmFsUmVzb3VyY2VEb3dubG9hZFBvbGljeSBwb2xpY3kpCiAgICAgICAg
ICAgICBpZiAocG9saWN5ID09IEV4dGVybmFsUmVzb3VyY2VEb3dubG9hZFBvbGljeTo6QWxsb3cg
fHwgIXNvdXJjZS0+cmVxdWlyZXNFeHRlcm5hbFJlc291cmNlKCkpIHsKICAgICAgICAgICAgICAg
ICBpZiAocG9saWN5ID09IEV4dGVybmFsUmVzb3VyY2VEb3dubG9hZFBvbGljeTo6QWxsb3cgJiYg
bV9zdGF0dXMgPT0gU3RhdHVzOjpQZW5kaW5nKQogICAgICAgICAgICAgICAgICAgICBzZXRTdGF0
dXMoU3RhdHVzOjpMb2FkaW5nKTsKLSAgICAgICAgICAgICAgICBzb3VyY2UtPmxvYWQobV9mb250
U2VsZWN0b3IuZ2V0KCkpOworICAgICAgICAgICAgICAgIHNvdXJjZS0+bG9hZChkb2N1bWVudCgp
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCkBAIC02NTEsNyArNjU5LDcgQEAgUmVmUHRy
PEZvbnQ+IENTU0ZvbnRGYWNlOjpmb250KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udERlc2Ny
aXB0aW9uLCBib29sIHN5bnQKICAgICBmb3IgKHNpemVfdCBpID0gc3RhcnRJbmRleDsgaSA8IG1f
c291cmNlcy5zaXplKCk7ICsraSkgewogICAgICAgICBhdXRvJiBzb3VyY2UgPSBtX3NvdXJjZXNb
aV07CiAgICAgICAgIGlmIChzb3VyY2UtPnN0YXR1cygpID09IENTU0ZvbnRGYWNlU291cmNlOjpT
dGF0dXM6OlBlbmRpbmcgJiYgKHBvbGljeSA9PSBFeHRlcm5hbFJlc291cmNlRG93bmxvYWRQb2xp
Y3k6OkFsbG93IHx8ICFzb3VyY2UtPnJlcXVpcmVzRXh0ZXJuYWxSZXNvdXJjZSgpKSkKLSAgICAg
ICAgICAgIHNvdXJjZS0+bG9hZChtX2ZvbnRTZWxlY3Rvci5nZXQoKSk7CisgICAgICAgICAgICBz
b3VyY2UtPmxvYWQoZG9jdW1lbnQoKSk7CiAKICAgICAgICAgc3dpdGNoIChzb3VyY2UtPnN0YXR1
cygpKSB7CiAgICAgICAgIGNhc2UgQ1NTRm9udEZhY2VTb3VyY2U6OlN0YXR1czo6UGVuZGluZzoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5oIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0ZvbnRGYWNlLmgKaW5kZXggZjI2MmQwNWY3ZDcwZTVmOTNjY2YzYTY4NWFk
ZjE3NGFhMzY3NDc3Ny4uNzMyNTAwYjlkYjNmNTliOTUwYzI2OGZlZTAwMjdiNDFkYTczNjcwZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlLmgKQEAgLTYwLDEwICs2MCw3IEBAIERFQ0xBUkVfQUxM
T0NBVE9SX1dJVEhfSEVBUF9JREVOVElGSUVSKENTU0ZvbnRGYWNlKTsKIGNsYXNzIENTU0ZvbnRG
YWNlIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8Q1NTRm9udEZhY2U+IHsKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRF9XSVRIX0hFQVBfSURFTlRJRklFUihDU1NGb250RmFjZSk7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFJlZjxDU1NGb250RmFjZT4gY3JlYXRlKENTU0ZvbnRTZWxlY3Rvciog
Zm9udFNlbGVjdG9yLCBTdHlsZVJ1bGVGb250RmFjZSogY3NzQ29ubmVjdGlvbiA9IG51bGxwdHIs
IEZvbnRGYWNlKiB3cmFwcGVyID0gbnVsbHB0ciwgYm9vbCBpc0xvY2FsRmFsbGJhY2sgPSBmYWxz
ZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENTU0ZvbnRGYWNlKGZvbnRT
ZWxlY3RvciwgY3NzQ29ubmVjdGlvbiwgd3JhcHBlciwgaXNMb2NhbEZhbGxiYWNrKSk7Ci0gICAg
fQorICAgIHN0YXRpYyBSZWY8Q1NTRm9udEZhY2U+IGNyZWF0ZShDU1NGb250U2VsZWN0b3IqLCBT
dHlsZVJ1bGVGb250RmFjZSogY3NzQ29ubmVjdGlvbiA9IG51bGxwdHIsIEZvbnRGYWNlKiB3cmFw
cGVyID0gbnVsbHB0ciwgYm9vbCBpc0xvY2FsRmFsbGJhY2sgPSBmYWxzZSk7CiAgICAgdmlydHVh
bCB+Q1NTRm9udEZhY2UoKTsKIAogICAgIC8vIEZJWE1FOiBUaGVzZSBmdW5jdGlvbnMgZG9uJ3Qg
bmVlZCB0byBoYXZlIGJvb2xlYW4gcmV0dXJuIHZhbHVlcy4KQEAgLTExMiw3ICsxMDksNyBAQCBw
dWJsaWM6CiAKICAgICBib29sIGNvbXB1dGVGYWlsdXJlU3RhdGUoKSBjb25zdDsKIAotICAgIHZv
aWQgb3Bwb3J0dW5pc3RpY2FsbHlTdGFydEZvbnREYXRhVVJMTG9hZGluZyhDU1NGb250U2VsZWN0
b3ImKTsKKyAgICB2b2lkIG9wcG9ydHVuaXN0aWNhbGx5U3RhcnRGb250RGF0YVVSTExvYWRpbmco
KTsKIAogICAgIHZvaWQgYWRvcHRTb3VyY2Uoc3RkOjp1bmlxdWVfcHRyPENTU0ZvbnRGYWNlU291
cmNlPiYmKTsKICAgICB2b2lkIHNvdXJjZXNQb3B1bGF0ZWQoKSB7IG1fc291cmNlc1BvcHVsYXRl
ZCA9IHRydWU7IH0KQEAgLTE2Nyw3ICsxNjQsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRFcnJv
clN0YXRlKCk7CiAKIHByaXZhdGU6Ci0gICAgQ1NTRm9udEZhY2UoQ1NTRm9udFNlbGVjdG9yKiwg
U3R5bGVSdWxlRm9udEZhY2UqLCBGb250RmFjZSosIGJvb2wgaXNMb2NhbEZhbGxiYWNrKTsKICAg
ICBDU1NGb250RmFjZShjb25zdCBTZXR0aW5ncyosIFN0eWxlUnVsZUZvbnRGYWNlKiwgRm9udEZh
Y2UqLCBib29sIGlzTG9jYWxGYWxsYmFjayk7CiAKICAgICBzaXplX3QgcHVtcChFeHRlcm5hbFJl
c291cmNlRG93bmxvYWRQb2xpY3kpOwpAQCAtMTc5LDYgKzE3NSw4IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBmb250TG9hZEV2ZW50T2NjdXJyZWQoKTsKICAgICB2b2lkIHRpbWVvdXRGaXJlZCgpOwog
CisgICAgRG9jdW1lbnQqIGRvY3VtZW50KCk7CisKICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBt
X2ZhbWlsaWVzOwogICAgIFZlY3RvcjxVbmljb2RlUmFuZ2U+IG1fcmFuZ2VzOwogCkBAIC0xODYs
NyArMTg0LDYgQEAgcHJpdmF0ZToKICAgICBGb250TG9hZGluZ0JlaGF2aW9yIG1fbG9hZGluZ0Jl
aGF2aW9yIHsgRm9udExvYWRpbmdCZWhhdmlvcjo6QXV0byB9OwogCiAgICAgVmVjdG9yPHN0ZDo6
dW5pcXVlX3B0cjxDU1NGb250RmFjZVNvdXJjZT4sIDAsIENyYXNoT25PdmVyZmxvdywgMD4gbV9z
b3VyY2VzOwotICAgIFdlYWtQdHI8Q1NTRm9udFNlbGVjdG9yPiBtX2ZvbnRTZWxlY3RvcjsgLy8g
RklYTUU6IElkZWFsbHkgdGhpcyBkYXRhIG1lbWJlciB3b3VsZCBnbyBhd2F5IChodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4MzUxKS4KICAgICBSZWZQdHI8U3R5bGVS
dWxlRm9udEZhY2U+IG1fY3NzQ29ubmVjdGlvbjsKICAgICBIYXNoU2V0PENsaWVudCo+IG1fY2xp
ZW50czsKICAgICBXZWFrUHRyPEZvbnRGYWNlPiBtX3dyYXBwZXI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0ZvbnRGYWNlU291cmNlLmNwcAppbmRleCBlNmVhMTgxNmZmYzNjYTZkMDQ1MDIzYThkYTc3
MzRiZGFjNTIyODY0Li5iYzMyM2MyZjJlYzAxYTc3YWQ1MDgzMzExMmUxOTYwMDMwOGE3M2VkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAKQEAgLTY2LDIyICs2Niwy
NSBAQCBpbmxpbmUgdm9pZCBDU1NGb250RmFjZVNvdXJjZTo6c2V0U3RhdHVzKFN0YXR1cyBuZXdT
dGF0dXMpCiAgICAgbV9zdGF0dXMgPSBuZXdTdGF0dXM7CiB9CiAKLUNTU0ZvbnRGYWNlU291cmNl
OjpDU1NGb250RmFjZVNvdXJjZShDU1NGb250RmFjZSYgb3duZXIsIGNvbnN0IFN0cmluZyYgZmFt
aWx5TmFtZU9yVVJJLCBDYWNoZWRGb250KiBmb250LCBTVkdGb250RmFjZUVsZW1lbnQqIGZvbnRG
YWNlLCBSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlclZpZXc+JiYgYXJyYXlCdWZmZXJWaWV3KQorQ1NT
Rm9udEZhY2VTb3VyY2U6OkNTU0ZvbnRGYWNlU291cmNlKENTU0ZvbnRGYWNlJiBvd25lciwgY29u
c3QgU3RyaW5nJiBmYW1pbHlOYW1lT3JVUkkpCiAgICAgOiBtX2ZhbWlseU5hbWVPclVSSShmYW1p
bHlOYW1lT3JVUkkpCi0gICAgLCBtX2ZvbnQoZm9udCkKICAgICAsIG1fZmFjZShvd25lcikKLSAg
ICAsIG1faW1tZWRpYXRlU291cmNlKFdURk1vdmUoYXJyYXlCdWZmZXJWaWV3KSkKLSAgICAsIG1f
c3ZnRm9udEZhY2VFbGVtZW50KG1ha2VXZWFrUHRyKGZvbnRGYWNlKSkKLSAgICAsIG1faGFzU1ZH
Rm9udEZhY2VFbGVtZW50KG1fc3ZnRm9udEZhY2VFbGVtZW50KQoreworfQorCitDU1NGb250RmFj
ZVNvdXJjZTo6Q1NTRm9udEZhY2VTb3VyY2UoQ1NTRm9udEZhY2UmIG93bmVyLCBjb25zdCBTdHJp
bmcmIGZhbWlseU5hbWVPclVSSSwgQ1NTRm9udFNlbGVjdG9yJiBmb250U2VsZWN0b3IsIENhY2hl
ZEZvbnQmIGZvbnQpCisgICAgOiBtX2ZhbWlseU5hbWVPclVSSShmYW1pbHlOYW1lT3JVUkkpCisg
ICAgLCBtX2ZhY2Uob3duZXIpCisgICAgLCBtX2ZvbnRTZWxlY3RvcihtYWtlV2Vha1B0cihmb250
U2VsZWN0b3IpKQorICAgICwgbV9mb250KCZmb250KQogewogICAgIC8vIFRoaXMgbWF5IHN5bmNo
cm9ub3VzbHkgY2FsbCBmb250TG9hZGVkKCkuCi0gICAgaWYgKG1fZm9udCkKLSAgICAgICAgbV9m
b250LT5hZGRDbGllbnQoKnRoaXMpOworICAgIG1fZm9udC0+YWRkQ2xpZW50KCp0aGlzKTsKIAot
ICAgIGlmIChzdGF0dXMoKSA9PSBTdGF0dXM6OlBlbmRpbmcgJiYgbV9mb250ICYmIG1fZm9udC0+
aXNMb2FkZWQoKSkgeworICAgIGlmIChzdGF0dXMoKSA9PSBTdGF0dXM6OlBlbmRpbmcgJiYgbV9m
b250LT5pc0xvYWRlZCgpKSB7CiAgICAgICAgIHNldFN0YXR1cyhTdGF0dXM6OkxvYWRpbmcpOwog
ICAgICAgICBpZiAoIXNob3VsZElnbm9yZUZvbnRMb2FkQ29tcGxldGlvbnMoKSkgewotICAgICAg
ICAgICAgaWYgKG1fZm9udCAmJiBtX2ZvbnQtPmVycm9yT2NjdXJyZWQoKSkKKyAgICAgICAgICAg
IGlmIChtX2ZvbnQtPmVycm9yT2NjdXJyZWQoKSkKICAgICAgICAgICAgICAgICBzZXRTdGF0dXMo
U3RhdHVzOjpGYWlsdXJlKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBzZXRT
dGF0dXMoU3RhdHVzOjpTdWNjZXNzKTsKQEAgLTg5LDYgKzkyLDIxIEBAIENTU0ZvbnRGYWNlU291
cmNlOjpDU1NGb250RmFjZVNvdXJjZShDU1NGb250RmFjZSYgb3duZXIsIGNvbnN0IFN0cmluZyYg
ZmFtaWx5TmFtCiAgICAgfQogfQogCitDU1NGb250RmFjZVNvdXJjZTo6Q1NTRm9udEZhY2VTb3Vy
Y2UoQ1NTRm9udEZhY2UmIG93bmVyLCBjb25zdCBTdHJpbmcmIGZhbWlseU5hbWVPclVSSSwgU1ZH
Rm9udEZhY2VFbGVtZW50JiBmb250RmFjZSkKKyAgICA6IG1fZmFtaWx5TmFtZU9yVVJJKGZhbWls
eU5hbWVPclVSSSkKKyAgICAsIG1fZmFjZShvd25lcikKKyAgICAsIG1fc3ZnRm9udEZhY2VFbGVt
ZW50KG1ha2VXZWFrUHRyKGZvbnRGYWNlKSkKKyAgICAsIG1faGFzU1ZHRm9udEZhY2VFbGVtZW50
KHRydWUpCit7Cit9CisKK0NTU0ZvbnRGYWNlU291cmNlOjpDU1NGb250RmFjZVNvdXJjZShDU1NG
b250RmFjZSYgb3duZXIsIGNvbnN0IFN0cmluZyYgZmFtaWx5TmFtZU9yVVJJLCBSZWY8SlNDOjpB
cnJheUJ1ZmZlclZpZXc+JiYgYXJyYXlCdWZmZXJWaWV3KQorICAgIDogbV9mYW1pbHlOYW1lT3JV
UkkoZmFtaWx5TmFtZU9yVVJJKQorICAgICwgbV9mYWNlKG93bmVyKQorICAgICwgbV9pbW1lZGlh
dGVTb3VyY2UoV1RGTW92ZShhcnJheUJ1ZmZlclZpZXcpKQoreworfQorCiBDU1NGb250RmFjZVNv
dXJjZTo6fkNTU0ZvbnRGYWNlU291cmNlKCkKIHsKICAgICBpZiAobV9mb250KQpAQCAtMTAwLDEw
ICsxMTgsMTAgQEAgYm9vbCBDU1NGb250RmFjZVNvdXJjZTo6c2hvdWxkSWdub3JlRm9udExvYWRD
b21wbGV0aW9ucygpIGNvbnN0CiAgICAgcmV0dXJuIG1fZmFjZS5zaG91bGRJZ25vcmVGb250TG9h
ZENvbXBsZXRpb25zKCk7CiB9CiAKLXZvaWQgQ1NTRm9udEZhY2VTb3VyY2U6Om9wcG9ydHVuaXN0
aWNhbGx5U3RhcnRGb250RGF0YVVSTExvYWRpbmcoQ1NTRm9udFNlbGVjdG9yJiBmb250U2VsZWN0
b3IpCit2b2lkIENTU0ZvbnRGYWNlU291cmNlOjpvcHBvcnR1bmlzdGljYWxseVN0YXJ0Rm9udERh
dGFVUkxMb2FkaW5nKCkKIHsKICAgICBpZiAoc3RhdHVzKCkgPT0gU3RhdHVzOjpQZW5kaW5nICYm
IG1fZm9udCAmJiBtX2ZvbnQtPnVybCgpLnByb3RvY29sSXNEYXRhKCkgJiYgbV9mYW1pbHlOYW1l
T3JVUkkubGVuZ3RoKCkgPCBNQikKLSAgICAgICAgbG9hZCgmZm9udFNlbGVjdG9yKTsKKyAgICAg
ICAgbG9hZCgpOwogfQogCiB2b2lkIENTU0ZvbnRGYWNlU291cmNlOjpmb250TG9hZGVkKENhY2hl
ZEZvbnQmIGxvYWRlZEZvbnQpCkBAIC0xMzIsMTMgKzE1MCwxMyBAQCB2b2lkIENTU0ZvbnRGYWNl
U291cmNlOjpmb250TG9hZGVkKENhY2hlZEZvbnQmIGxvYWRlZEZvbnQpCiAgICAgbV9mYWNlLmZv
bnRMb2FkZWQoKnRoaXMpOwogfQogCi12b2lkIENTU0ZvbnRGYWNlU291cmNlOjpsb2FkKENTU0Zv
bnRTZWxlY3RvciogZm9udFNlbGVjdG9yKQordm9pZCBDU1NGb250RmFjZVNvdXJjZTo6bG9hZChE
b2N1bWVudCogZG9jdW1lbnQpCiB7CiAgICAgc2V0U3RhdHVzKFN0YXR1czo6TG9hZGluZyk7CiAK
ICAgICBpZiAobV9mb250KSB7Ci0gICAgICAgIEFTU0VSVChmb250U2VsZWN0b3IpOwotICAgICAg
ICBmb250U2VsZWN0b3ItPmJlZ2luTG9hZGluZ0ZvbnRTb29uKCptX2ZvbnQpOworICAgICAgICBB
U1NFUlQobV9mb250U2VsZWN0b3IpOworICAgICAgICBtX2ZvbnRTZWxlY3Rvci0+YmVnaW5Mb2Fk
aW5nRm9udFNvb24oKm1fZm9udCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgYm9vbCBzdWNjZXNz
ID0gZmFsc2U7CiAgICAgICAgIGlmIChtX2hhc1NWR0ZvbnRGYWNlRWxlbWVudCkgewpAQCAtMTY3
LDEwICsxODUsOCBAQCB2b2lkIENTU0ZvbnRGYWNlU291cmNlOjpsb2FkKENTU0ZvbnRTZWxlY3Rv
ciogZm9udFNlbGVjdG9yKQogICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldENvbXB1dGVk
U2l6ZSgxKTsKICAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRTaG91bGRBbGxvd1VzZXJJ
bnN0YWxsZWRGb250cyhtX2ZhY2UuYWxsb3dVc2VySW5zdGFsbGVkRm9udHMoKSk7CiAgICAgICAg
ICAgICBzdWNjZXNzID0gRm9udENhY2hlOjpzaW5nbGV0b24oKS5mb250Rm9yRmFtaWx5KGZvbnRE
ZXNjcmlwdGlvbiwgbV9mYW1pbHlOYW1lT3JVUkksIG51bGxwdHIsIEZvbnRTZWxlY3Rpb25TcGVj
aWZpZWRDYXBhYmlsaXRpZXMoKSwgdHJ1ZSk7Ci0gICAgICAgICAgICBpZiAoUnVudGltZUVuYWJs
ZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS53ZWJBUElTdGF0aXN0aWNzRW5hYmxlZCgpKSB7
Ci0gICAgICAgICAgICAgICAgaWYgKGF1dG8qIGRvY3VtZW50ID0gZm9udFNlbGVjdG9yLT5kb2N1
bWVudCgpKQotICAgICAgICAgICAgICAgICAgICBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVk
KCkubG9nRm9udExvYWQoKmRvY3VtZW50LCBtX2ZhbWlseU5hbWVPclVSSS5zdHJpbmcoKSwgc3Vj
Y2Vzcyk7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoZG9jdW1lbnQgJiYgUnVudGlt
ZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS53ZWJBUElTdGF0aXN0aWNzRW5hYmxl
ZCgpKQorICAgICAgICAgICAgICAgIFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQoKS5sb2dG
b250TG9hZCgqZG9jdW1lbnQsIG1fZmFtaWx5TmFtZU9yVVJJLnN0cmluZygpLCBzdWNjZXNzKTsK
ICAgICAgICAgfQogICAgICAgICBzZXRTdGF0dXMoc3VjY2VzcyA/IFN0YXR1czo6U3VjY2VzcyA6
IFN0YXR1czo6RmFpbHVyZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0ZvbnRGYWNlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3Vy
Y2UuaAppbmRleCA3ZWFiNTk4OTU2MGE0MTY5OGJmNjQyYzFkY2ZhYWM1OThmNzY2ZTY5Li41OTJj
ZTgzMWM1YTkyODYzZTA0ZWJkYjc2ZWYzYWMxOGY1MWMxM2JkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTRm9udEZhY2VTb3VyY2UuaApAQCAtMzUsNiArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIENTU0ZvbnRGYWNlOwogY2xhc3MgQ1NTRm9udFNlbGVjdG9yOworY2xhc3MgRG9j
dW1lbnQ7CiBjbGFzcyBGb250Owogc3RydWN0IEZvbnRDdXN0b21QbGF0Zm9ybURhdGE7CiBjbGFz
cyBGb250RGVzY3JpcHRpb247CkBAIC00OSw3ICs1MCwxMCBAQCB0eXBlZGVmIEZvbnRUYWdnZWRT
ZXR0aW5nczxpbnQ+IEZvbnRGZWF0dXJlU2V0dGluZ3M7CiBjbGFzcyBDU1NGb250RmFjZVNvdXJj
ZSBmaW5hbCA6IHB1YmxpYyBDYWNoZWRGb250Q2xpZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKLSAgICBDU1NGb250RmFjZVNvdXJjZShDU1NGb250RmFjZSYgb3du
ZXIsIGNvbnN0IFN0cmluZyYgZmFtaWx5TmFtZU9yVVJJLCBDYWNoZWRGb250KiA9IG51bGxwdHIs
IFNWR0ZvbnRGYWNlRWxlbWVudCogPSBudWxscHRyLCBSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlclZp
ZXc+JiYgPSBudWxscHRyKTsKKyAgICBDU1NGb250RmFjZVNvdXJjZShDU1NGb250RmFjZSYgb3du
ZXIsIGNvbnN0IFN0cmluZyYgZmFtaWx5TmFtZU9yVVJJKTsKKyAgICBDU1NGb250RmFjZVNvdXJj
ZShDU1NGb250RmFjZSYgb3duZXIsIGNvbnN0IFN0cmluZyYgZmFtaWx5TmFtZU9yVVJJLCBDU1NG
b250U2VsZWN0b3ImLCBDYWNoZWRGb250Jik7CisgICAgQ1NTRm9udEZhY2VTb3VyY2UoQ1NTRm9u
dEZhY2UmIG93bmVyLCBjb25zdCBTdHJpbmcmIGZhbWlseU5hbWVPclVSSSwgU1ZHRm9udEZhY2VF
bGVtZW50Jik7CisgICAgQ1NTRm9udEZhY2VTb3VyY2UoQ1NTRm9udEZhY2UmIG93bmVyLCBjb25z
dCBTdHJpbmcmIGZhbWlseU5hbWVPclVSSSwgUmVmPEpTQzo6QXJyYXlCdWZmZXJWaWV3PiYmKTsK
ICAgICB2aXJ0dWFsIH5DU1NGb250RmFjZVNvdXJjZSgpOwogCiAgICAgLy8gICAgICAgICAgICAg
ICAgICAgICAgPT4gU3VjY2VzcwpAQCAtNjcsOSArNzEsOSBAQCBwdWJsaWM6CiAKICAgICBjb25z
dCBBdG9tU3RyaW5nJiBmYW1pbHlOYW1lT3JVUkkoKSBjb25zdCB7IHJldHVybiBtX2ZhbWlseU5h
bWVPclVSSTsgfQogCi0gICAgdm9pZCBvcHBvcnR1bmlzdGljYWxseVN0YXJ0Rm9udERhdGFVUkxM
b2FkaW5nKENTU0ZvbnRTZWxlY3RvciYpOworICAgIHZvaWQgb3Bwb3J0dW5pc3RpY2FsbHlTdGFy
dEZvbnREYXRhVVJMTG9hZGluZygpOwogCi0gICAgdm9pZCBsb2FkKENTU0ZvbnRTZWxlY3Rvciop
OworICAgIHZvaWQgbG9hZChEb2N1bWVudCogPSBudWxscHRyKTsKICAgICBSZWZQdHI8Rm9udD4g
Zm9udChjb25zdCBGb250RGVzY3JpcHRpb24mLCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wgc3lu
dGhldGljSXRhbGljLCBjb25zdCBGb250RmVhdHVyZVNldHRpbmdzJiwgRm9udFNlbGVjdGlvblNw
ZWNpZmllZENhcGFiaWxpdGllcyk7CiAKICAgICBDYWNoZWRGb250KiBjYWNoZWRGb250KCkgY29u
c3QgeyByZXR1cm4gbV9mb250LmdldCgpOyB9CkBAIC04NSw4ICs4OSw5IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBzZXRTdGF0dXMoU3RhdHVzKTsKIAogICAgIEF0b21TdHJpbmcgbV9mYW1pbHlOYW1l
T3JVUkk7IC8vIFVSSSBmb3IgcmVtb3RlLCBidWlsdC1pbiBmb250IG5hbWUgZm9yIGxvY2FsLgot
ICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZEZvbnQ+IG1fZm9udDsgLy8gRm9yIHJlbW90
ZSBmb250cywgYSBwb2ludGVyIHRvIG91ciBjYWNoZWQgcmVzb3VyY2UuCiAgICAgQ1NTRm9udEZh
Y2UmIG1fZmFjZTsgLy8gT3VyIG93bmluZyBmb250IGZhY2UuCisgICAgV2Vha1B0cjxDU1NGb250
U2VsZWN0b3I+IG1fZm9udFNlbGVjdG9yOyAvLyBGb3IgcmVtb3RlIGZvbnRzLCB0byBvcmNoZXN0
cmF0ZSBsb2FkaW5nLgorICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZEZvbnQ+IG1fZm9u
dDsgLy8gQWxzbyBmb3IgcmVtb3RlIGZvbnRzLCBhIHBvaW50ZXIgdG8gb3VyIGNhY2hlZCByZXNv
dXJjZS4KIAogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZ2VuZXJhdGVkT1RGQnVmZmVyOwog
ICAgIFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyVmlldz4gbV9pbW1lZGlhdGVTb3VyY2U7CkBAIC05
Niw3ICsxMDEsNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxh
dGZvcm1EYXRhPiBtX2luRG9jdW1lbnRDdXN0b21QbGF0Zm9ybURhdGE7CiAKICAgICBTdGF0dXMg
bV9zdGF0dXMgeyBTdGF0dXM6OlBlbmRpbmcgfTsKLSAgICBib29sIG1faGFzU1ZHRm9udEZhY2VF
bGVtZW50OworICAgIGJvb2wgbV9oYXNTVkdGb250RmFjZUVsZW1lbnQgeyBmYWxzZSB9OwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0ZvbnRTZWxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9y
LmNwcAppbmRleCBkMGMyMzM2OTZhMmY2ZTdhNWVmOTcyYjdmZTRlNWUxNWE2Zjg2MzlkLi5iMDdi
OTk0Y2JlYTBlMGQ5ZDk0ZWFjOWQ5YjBkNjY1NjEwNjE5MzRlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTRm9udFNlbGVjdG9yLmNwcApAQCAtMjQ1LDcgKzI0NSw3IEBAIHZvaWQgQ1NTRm9udFNlbGVj
dG9yOjpvcHBvcnR1bmlzdGljYWxseVN0YXJ0Rm9udERhdGFVUkxMb2FkaW5nKGNvbnN0IEZvbnRD
YXNjYWRlCiAgICAgaWYgKCFzZWdtZW50ZWRGb250RmFjZSkKICAgICAgICAgcmV0dXJuOwogICAg
IGZvciAoYXV0byYgZmFjZSA6IHNlZ21lbnRlZEZvbnRGYWNlLT5jb25zdGl0dWVudEZhY2VzKCkp
Ci0gICAgICAgIGZhY2UtPm9wcG9ydHVuaXN0aWNhbGx5U3RhcnRGb250RGF0YVVSTExvYWRpbmco
KnRoaXMpOworICAgICAgICBmYWNlLT5vcHBvcnR1bmlzdGljYWxseVN0YXJ0Rm9udERhdGFVUkxM
b2FkaW5nKCk7CiB9CiAKIHZvaWQgQ1NTRm9udFNlbGVjdG9yOjpmb250TG9hZGVkKENTU0ZvbnRG
YWNlJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuY3BwCmluZGV4IDNmNzY4MjFlNGQwOWViYWYzMjBiNDM1
MmRkZTYwMzQ5MzcyMmJhNGMuLjNiZDhjMDY5MDM4Nzc4NzQ2Y2U0YmI2ZTkzMmY5M2EyYzQ2OGY5
NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmNwcApAQCAtNTAsNyArNTAsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIHN0YXRpYyBib29sIHBvcHVsYXRlRm9udEZhY2VXaXRoQXJyYXlCdWZmZXIo
Q1NTRm9udEZhY2UmIGZvbnRGYWNlLCBSZWY8SlNDOjpBcnJheUJ1ZmZlclZpZXc+JiYgYXJyYXlC
dWZmZXJWaWV3KQogewotICAgIGF1dG8gc291cmNlID0gbWFrZVVuaXF1ZTxDU1NGb250RmFjZVNv
dXJjZT4oZm9udEZhY2UsIFN0cmluZygpLCBudWxscHRyLCBudWxscHRyLCBXVEZNb3ZlKGFycmF5
QnVmZmVyVmlldykpOworICAgIGF1dG8gc291cmNlID0gbWFrZVVuaXF1ZTxDU1NGb250RmFjZVNv
dXJjZT4oZm9udEZhY2UsIFN0cmluZygpLCBXVEZNb3ZlKGFycmF5QnVmZmVyVmlldykpOwogICAg
IGZvbnRGYWNlLmFkb3B0U291cmNlKFdURk1vdmUoc291cmNlKSk7CiAgICAgcmV0dXJuIGZhbHNl
OwogfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>