<?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>140390</bug_id>
          
          <creation_ts>2015-01-13 08:22:46 -0800</creation_ts>
          <short_desc>Devirtualize FontData</short_desc>
          <delta_ts>2015-01-13 17:25:15 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>cdumez</cc>
    
    <cc>mmaxfield</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1060824</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2015-01-13 08:22:46 -0800</bug_when>
    <thetext>We have font ranges and simple fonts. Those don&apos;t need a common base.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1060825</commentid>
    <comment_count>1</comment_count>
      <attachid>244515</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2015-01-13 08:30:46 -0800</bug_when>
    <thetext>Created attachment 244515
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1060831</commentid>
    <comment_count>2</comment_count>
      <attachid>244519</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2015-01-13 08:53:24 -0800</bug_when>
    <thetext>Created attachment 244519
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1060870</commentid>
    <comment_count>3</comment_count>
      <attachid>244519</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2015-01-13 11:51:13 -0800</bug_when>
    <thetext>Comment on attachment 244519
patch

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

r=me

&gt; Source/WebCore/css/CSSSegmentedFontFace.cpp:126
&gt; +        unsigned size = m_fontFaces.size();
&gt; +        for (unsigned i = 0; i &lt; size; i++) {

Range for?

&gt; Source/WebCore/platform/graphics/FontRanges.h:47
&gt; +    PassRefPtr&lt;SimpleFontData&gt; fontData() const { return m_fontData; }

This should return RefPtr (or Ref.)

&gt; Source/WebCore/platform/graphics/FontRanges.h:57
&gt; +    static PassRefPtr&lt;SegmentedFontData&gt; create() { return adoptRef(new SegmentedFontData); }

This should return Ref.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1060873</commentid>
    <comment_count>4</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2015-01-13 11:54:31 -0800</bug_when>
    <thetext>
&gt; &gt; Source/WebCore/platform/graphics/FontRanges.h:47
&gt; &gt; +    PassRefPtr&lt;SimpleFontData&gt; fontData() const { return m_fontData; }
&gt; 
&gt; This should return RefPtr (or Ref.)
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/FontRanges.h:57
&gt; &gt; +    static PassRefPtr&lt;SegmentedFontData&gt; create() { return adoptRef(new SegmentedFontData); }
&gt; 
&gt; This should return Ref.

This is just the move of a move-edit. The edit part fixed these.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1060986</commentid>
    <comment_count>5</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2015-01-13 16:10:06 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/178388</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1060988</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-01-13 16:11:52 -0800</bug_when>
    <thetext>May have broken the build:
/Volumes/Data/EWS/WebKit/Source/WebCore/platform/graphics/mac/FontComplexTextMac.cpp -o /Volumes/Data/EWS/WebKit/WebKitBuild/WebCore.build/Release/WebCore.build/Objects-normal/x86_64/FontComplexTextMac.o
/Volumes/Data/EWS/WebKit/Source/WebCore/platform/graphics/mac/FontComplexTextMac.cpp:141:47: error: no member named &apos;isEmpty&apos; in &apos;WebCore::FontRanges&apos;
    for (unsigned i = 0; !fallbackRangesAt(i).isEmpty(); ++i) {
                          ~~~~~~~~~~~~~~~~~~~ ^
1 error generated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1060991</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-01-13 16:19:23 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; May have broken the build:
&gt; /Volumes/Data/EWS/WebKit/Source/WebCore/platform/graphics/mac/
&gt; FontComplexTextMac.cpp -o
&gt; /Volumes/Data/EWS/WebKit/WebKitBuild/WebCore.build/Release/WebCore.build/
&gt; Objects-normal/x86_64/FontComplexTextMac.o
&gt; /Volumes/Data/EWS/WebKit/Source/WebCore/platform/graphics/mac/
&gt; FontComplexTextMac.cpp:141:47: error: no member named &apos;isEmpty&apos; in
&gt; &apos;WebCore::FontRanges&apos;
&gt;     for (unsigned i = 0; !fallbackRangesAt(i).isEmpty(); ++i) {
&gt;                           ~~~~~~~~~~~~~~~~~~~ ^
&gt; 1 error generated.

Build fix landed in &lt;http://trac.webkit.org/changeset/178389&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1061005</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-01-13 16:53:13 -0800</bug_when>
    <thetext>Seems to have broken IOS build with errors like these:
Source/WebKit/ios/Misc/EmojiFallbackFontSelector.h:36:24: error: no member named &apos;FontData&apos; in namespace &apos;WebCore&apos;; did you mean &apos;WebCore::GlyphData::fontData&apos;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1061009</commentid>
    <comment_count>9</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-01-13 17:25:15 -0800</bug_when>
    <thetext>Another iOS build fix was landed in &lt;https://trac.webkit.org/r178389&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>244515</attachid>
            <date>2015-01-13 08:30:46 -0800</date>
            <delta_ts>2015-01-13 08:53:24 -0800</delta_ts>
            <desc>patch</desc>
            <filename>fontdata-devirtualize-3.patch</filename>
            <type>text/plain</type>
            <size>69144</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3ODM2MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwMCBAQAorMjAxNS0wMS0xMyAgQW50dGkg
S29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAgRGV2aXJ0dWFsaXplIEZvbnRE
YXRhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDAz
OTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlz
IHBhdGNoIHJlbW92ZXMgdGhlIEZvbnREYXRhIGJhc2UgY2xhc3MgYW5kIHR1cm5zIFNlZ21lbnRl
ZEZvbnREYXRhIGludG8gYSBub24tdmlydHVhbCBGb250UmFuZ2VzIHR5cGUuCisKKyAgICAgICAg
U2ltcGxlRm9udERhdGEgcmVtYWlucyBhcyBpcyAod2l0aG91dCB0aGUgYmFzZSkgYW5kIGl0IGNh
biBiZSByZW5hbWVkIGxhdGVyIHRvIHNvbWV0aGluZyBtb3JlIHNlbnNpYmxlLgorCisgICAgICAg
ICogV2ViQ29yZS5leHAuaW46CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIGNzcy9DU1NGb250U2VsZWN0b3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTRm9udFNlbGVjdG9yOjpmb250UmFuZ2VzRm9yRmFtaWx5KToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU0ZvbnRTZWxlY3Rvcjo6ZmFsbGJhY2tGb250RGF0YUF0KToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU0ZvbnRTZWxlY3Rvcjo6Z2V0Rm9udERhdGEpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6Q1NTRm9udFNlbGVjdG9yOjpnZXRGYWxsYmFja0ZvbnREYXRhKTogRGVsZXRlZC4K
KyAgICAgICAgKiBjc3MvQ1NTRm9udFNlbGVjdG9yLmg6CisgICAgICAgICogY3NzL0NTU1NlZ21l
bnRlZEZvbnRGYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlZ21lbnRlZEZvbnRGYWNl
OjpwcnVuZVRhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OmFwcGVuZEZvbnREYXRhV2l0aEludmFs
aWRVbmljb2RlUmFuZ2VJZkxvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VnbWVudGVk
Rm9udEZhY2U6OmZvbnRSYW5nZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VnbWVudGVkRm9u
dEZhY2U6OmxvYWRGb250KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlZ21lbnRlZEZvbnRGYWNl
OjpnZXRGb250RGF0YSk6IERlbGV0ZWQuCisgICAgICAgICogY3NzL0NTU1NlZ21lbnRlZEZvbnRG
YWNlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oOgorICAgICAgICAoV2Vi
Q29yZTo6Rm9udDo6ZmFsbGJhY2tSYW5nZXNBdCk6CisgICAgICAgIChXZWJDb3JlOjpGb250Ojpm
b250RGF0YUF0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250RGF0
YS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udERhdGEuaDog
UmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250R2x5cGhzLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZvbnRHbHlwaHM6OkZvbnRHbHlwaHMpOgorICAgICAgICAoV2ViQ29y
ZTo6Rm9udEdseXBoczo6ZGV0ZXJtaW5lUGl0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udEds
eXBoczo6aXNMb2FkaW5nQ3VzdG9tRm9udHMpOgorICAgICAgICAoV2ViQ29yZTo6cmVhbGl6ZU5l
eHRGYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpGb250R2x5cGhzOjpyZWFsaXplRmFsbGJh
Y2tSYW5nZXNBdCk6CisgICAgICAgIChXZWJDb3JlOjpGb250R2x5cGhzOjpnbHlwaERhdGFGb3JT
eXN0ZW1GYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpGb250R2x5cGhzOjpnbHlwaERhdGFG
b3JWYXJpYW50KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRHbHlwaHM6OmdseXBoRGF0YUZvck5v
cm1hbFZhcmlhbnQpOgorICAgICAgICAoV2ViQ29yZTo6Z2x5cGhQYWdlRnJvbUZvbnRSYW5nZXMp
OgorICAgICAgICAoV2ViQ29yZTo6Rm9udEdseXBoczo6Z2x5cGhEYXRhRm9yQ2hhcmFjdGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OnJlYWxpemVOZXh0RmFtaWx5KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkZvbnRHbHlwaHM6OnJlYWxpemVGb250RGF0YUF0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OmdseXBoUGFnZUZyb21Gb250RGF0YSk6IERlbGV0ZWQuCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udEdseXBocy5oOgorICAgICAgICAoV2ViQ29yZTo6Rm9udEds
eXBoczo6cHJpbWFyeVNpbXBsZUZvbnREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9Gb250UmFuZ2VzLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvU2VnbWVudGVkRm9udERhdGEuY3BwLgorICAgICAgICAoV2ViQ29yZTo6Rm9udFJhbmdl
czo6Rm9udFJhbmdlcyk6CisgICAgICAgIChXZWJDb3JlOjpGb250UmFuZ2VzOjp+Rm9udFJhbmdl
cyk6CisgICAgICAgIChXZWJDb3JlOjpGb250UmFuZ2VzOjpmb250RGF0YUZvckNoYXJhY3Rlcik6
CisgICAgICAgIChXZWJDb3JlOjpGb250UmFuZ2VzOjpmb250RGF0YUZvckZpcnN0UmFuZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6Rm9udFJhbmdlczo6aXNMb2FkaW5nKToKKyAgICAgICAgKFdlYkNv
cmU6OlNlZ21lbnRlZEZvbnREYXRhOjpTZWdtZW50ZWRGb250RGF0YSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpTZWdtZW50ZWRGb250RGF0YTo6flNlZ21lbnRlZEZvbnREYXRhKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNlZ21lbnRlZEZvbnREYXRhOjpzaW1wbGVGb250RGF0
YUZvckNoYXJhY3Rlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTZWdtZW50ZWRGb250
RGF0YTo6c2ltcGxlRm9udERhdGFGb3JGaXJzdFJhbmdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlNlZ21lbnRlZEZvbnREYXRhOjppc0N1c3RvbUZvbnQpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6U2VnbWVudGVkRm9udERhdGE6OmlzTG9hZGluZyk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpTZWdtZW50ZWRGb250RGF0YTo6aXNTZWdtZW50ZWQpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6U2VnbWVudGVkRm9udERhdGE6OmRlc2NyaXB0aW9uKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250UmFuZ2VzLmg6IENvcGllZCBmcm9t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NlZ21lbnRlZEZvbnREYXRhLmguCisg
ICAgICAgIChXZWJDb3JlOjpGb250UmFuZ2VzOjpSYW5nZTo6UmFuZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6Rm9udFJhbmdlczo6UmFuZ2U6OmZyb20pOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFJh
bmdlczo6UmFuZ2U6OnRvKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRSYW5nZXM6OlJhbmdlOjpm
b250RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGb250UmFuZ2VzOjppc0VtcHR5KToKKyAgICAg
ICAgKFdlYkNvcmU6OkZvbnRSYW5nZXM6OmFwcGVuZFJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6
OkZvbnRSYW5nZXM6OnNpemUpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFJhbmdlczo6cmFuZ2VB
dCk6CisgICAgICAgIChXZWJDb3JlOjpGb250RGF0YVJhbmdlOjpGb250RGF0YVJhbmdlKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkZvbnREYXRhUmFuZ2U6OmZyb20pOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6Rm9udERhdGFSYW5nZTo6dG8pOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6Rm9udERhdGFSYW5nZTo6Zm9udERhdGEpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6U2VnbWVudGVkRm9udERhdGE6OmNyZWF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpTZWdtZW50ZWRGb250RGF0YTo6YXBwZW5kUmFuZ2UpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6U2VnbWVudGVkRm9udERhdGE6Om51bVJhbmdlcyk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpTZWdtZW50ZWRGb250RGF0YTo6cmFuZ2VBdCk6IERlbGV0ZWQuCisgICAgICAg
IChpc1R5cGUpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRTZWxl
Y3Rvci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1NlZ21lbnRlZEZvbnREYXRhLmNw
cDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9TZWdtZW50ZWRGb250RGF0
YS5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1NpbXBsZUZvbnREYXRh
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUZvbnREYXRhOjpzaW1wbGVGb250RGF0YUZv
ckNoYXJhY3Rlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVGb250RGF0YTo6
c2ltcGxlRm9udERhdGFGb3JGaXJzdFJhbmdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlNpbXBsZUZvbnREYXRhOjppc1NlZ21lbnRlZCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvU2ltcGxlRm9udERhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUZv
bnREYXRhOjppc0N1c3RvbUZvbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlRm9udERhdGE6
OmlzTG9hZGluZyk6CisgICAgICAgIChpc1R5cGUpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXJDb3JlVGV4dC5tbToKKyAgICAg
ICAgKC1bV2ViQ2FzY2FkZUxpc3QgaW5pdFdpdGhGb250OmNoYXJhY3RlcjpdKToKKyAgICAgICAg
KC1bV2ViQ2FzY2FkZUxpc3Qgb2JqZWN0QXRJbmRleDpdKToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bXBsZXhUZXh0Q29udHJvbGxlcjo6Y29sbGVjdENvbXBsZXhUZXh0UnVuc0ZvckNoYXJhY3RlcnMp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q29tcGxleFRleHRNYWMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Rm9udDo6Zm9udERhdGFGb3JDb21iaW5pbmdDaGFyYWN0ZXJT
ZXF1ZW5jZSk6CisKIDIwMTUtMDEtMTMgIFNoaXZha3VtYXIgSk0gIDxzaGl2YS5qbUBzYW1zdW5n
LmNvbT4KIAogICAgICAgICBGaXggRGVidWcgQnVpbGQgRXJyb3IgaW4gV2ViY29yZSBtb2R1bGUu
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkocmV2aXNpb24gMTc4MzYyKQorKysgU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5leHAuaW4JKHdvcmtpbmcgY29weSkKQEAgLTc1LDcgKzc1LDcgQEAgX19a
TjdXZWJDb3JlMTBDcmVkZW50aWFsMjhlbmNvZGluZ1JlcXVpcgogX19aTjdXZWJDb3JlMTBDcmVk
ZW50aWFsQzFFUDE1TlNVUkxDcmVkZW50aWFsCiBfX1pON1dlYkNvcmUxMEZsb2F0UG9pbnRDMUVS
SzdDR1BvaW50CiBfX1pON1dlYkNvcmUxMEZsb2F0UG9pbnRDMUVSS05TXzhJbnRQb2ludEUKLV9f
Wk43V2ViQ29yZTEwRm9udEdseXBoczE3cmVhbGl6ZUZvbnREYXRhQXRFUktOU18xNUZvbnREZXNj
cmlwdGlvbkVqCitfX1pON1dlYkNvcmUxMEZvbnRHbHlwaHMyM3JlYWxpemVGYWxsYmFja1Jhbmdl
c0F0RVJLTlNfMTVGb250RGVzY3JpcHRpb25FagogX19aTjdXZWJDb3JlMTBGb250R2x5cGhzRDFF
dgogX19aTjdXZWJDb3JlMTBKU0RvY3VtZW50NnNfaW5mb0UKIF9fWk43V2ViQ29yZTEwSlNEb2N1
bWVudDl0b1dyYXBwZWRFTjNKU0M3SlNWYWx1ZUUKQEAgLTQ1OSw2ICs0NTksNyBAQCBfX1pON1dl
YkNvcmUxNFNlY3VyaXR5UG9saWN5MjJnZW5lcmF0ZVJlCiBfX1pON1dlYkNvcmUxNFNlY3VyaXR5
UG9saWN5MjdyZXNldE9yaWdpbkFjY2Vzc1doaXRlbGlzdHNFdgogX19aTjdXZWJDb3JlMTRTZWN1
cml0eVBvbGljeTI5YWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnlFUktOU18xNFNlY3VyaXR5
T3JpZ2luRVJLTjNXVEY2U3RyaW5nRVM3X2IKIF9fWk43V2ViQ29yZTE0U2VjdXJpdHlQb2xpY3kz
MnJlbW92ZU9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5RVJLTlNfMTRTZWN1cml0eU9yaWdpbkVS
S04zV1RGNlN0cmluZ0VTN19iCitfX1pON1dlYkNvcmUxNFNpbXBsZUZvbnREYXRhRDFFdgogX19a
TjdXZWJDb3JlMTRTdWJmcmFtZUxvYWRlcjEyYWxsb3dQbHVnaW5zRU5TXzI4UmVhc29uRm9yQ2Fs
bGluZ0FsbG93UGx1Z2luc0UKIF9fWk43V2ViQ29yZTE0VGlsZUNvbnRyb2xsZXIxNHNldFRpbGVz
T3BhcXVlRWIKIF9fWk43V2ViQ29yZTE0VGlsZUNvbnRyb2xsZXIxNWNvbnRhaW5lckxheWVyc0V2
CkBAIC0xNTg0LDYgKzE1ODUsOCBAQCBfX1pOSzNXVEY2U3RyaW5nMTRjcmVhdGVDRlN0cmluZ0V2
CiBfX1pOSzdXZWJDb3JlMTBDcmVkZW50aWFsMTJuc0NyZWRlbnRpYWxFdgogX19aTks3V2ViQ29y
ZTEwQ3JlZGVudGlhbDdpc0VtcHR5RXYKIF9fWk5LN1dlYkNvcmUxMEZsb2F0UG9pbnRjdjdDR1Bv
aW50RXYKK19fWk5LN1dlYkNvcmUxMEZvbnRSYW5nZXMyMGZvbnREYXRhRm9yQ2hhcmFjdGVyRWkK
K19fWk5LN1dlYkNvcmUxMEZvbnRSYW5nZXMyMWZvbnREYXRhRm9yRmlyc3RSYW5nZUV2CiBfX1pO
SzdXZWJDb3JlMTBMYXlvdXRSZWN0OGNvbnRhaW5zRVJLUzBfCiBfX1pOSzdXZWJDb3JlMTBQbHVn
aW5EYXRhMTZzdXBwb3J0c01pbWVUeXBlRVJLTjNXVEY2U3RyaW5nRU5TMF8xOEFsbG93ZWRQbHVn
aW5UeXBlc0UKIF9fWk5LN1dlYkNvcmUxMFJlbmRlclRleHQxNmZpcnN0UnVuTG9jYXRpb25FdgpJ
bmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkocmV2aXNpb24gMTc4MzYyKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMzUyLDEwICsxMzUyLDggQEAK
IAkJMzcxQTY3Q0IxMUM2QzdEQjAwMDQ3QjhCIC8qIEh5cGhlbmF0aW9uQ0YuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzcxQTY3Q0ExMUM2QzdEQjAw
MDQ3QjhCIC8qIEh5cGhlbmF0aW9uQ0YuY3BwICovOyB9OwogCQkzNzFFNjVDQzEzNjYxRURDMDBC
RUVEQjAgLyogUGFnZVNlcmlhbGl6ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDM3MUU2NUNCMTM2NjFFREMwMEJFRURCMCAvKiBQYWdlU2VyaWFsaXpl
ci5oICovOyB9OwogCQkzNzFFNjVDRTEzNjYxRUVEMDBCRUVEQjAgLyogUGFnZVNlcmlhbGl6ZXIu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzcxRTY1
Q0QxMzY2MUVFRDAwQkVFREIwIC8qIFBhZ2VTZXJpYWxpemVyLmNwcCAqLzsgfTsKLQkJMzcxRjRG
NDAwRDI1QjlBRjAwRUNFMEQ1IC8qIEZvbnREYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzFGNEYzRTBEMjVCOUFGMDBFQ0UwRDUgLyogRm9udERh
dGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkz
NzFGNEY0MTBEMjVCOUFGMDBFQ0UwRDUgLyogRm9udERhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzcxRjRGM0YwRDI1QjlBRjAwRUNFMEQ1IC8q
IEZvbnREYXRhLmNwcCAqLzsgfTsKLQkJMzcxRjRGRkMwRDI1RTdGMzAwRUNFMEQ1IC8qIFNlZ21l
bnRlZEZvbnREYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAzNzFGNEZGQTBEMjVFN0YzMDBFQ0UwRDUgLyogU2VnbWVudGVkRm9udERhdGEuaCAqLzsg
fTsKLQkJMzcxRjRGRkQwRDI1RTdGMzAwRUNFMEQ1IC8qIFNlZ21lbnRlZEZvbnREYXRhLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3MUY0RkZCMEQy
NUU3RjMwMEVDRTBENSAvKiBTZWdtZW50ZWRGb250RGF0YS5jcHAgKi87IH07CisJCTM3MUY0RkZD
MEQyNUU3RjMwMEVDRTBENSAvKiBGb250UmFuZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzFGNEZGQTBEMjVFN0YzMDBFQ0UwRDUgLyogRm9udFJh
bmdlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTM3MUY0RkZEMEQyNUU3RjMwMEVDRTBENSAvKiBGb250UmFuZ2VzLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3MUY0RkZCMEQyNUU3RjMwMEVDRTBE
NSAvKiBGb250UmFuZ2VzLmNwcCAqLzsgfTsKIAkJMzcxRjUxQTEwRDI2MkZBMDAwRUNFMEQ1IC8q
IENTU1NlZ21lbnRlZEZvbnRGYWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAzNzFGNTE5RjBEMjYyRkEwMDBFQ0UwRDUgLyogQ1NTU2VnbWVudGVkRm9u
dEZhY2UuaCAqLzsgfTsKIAkJMzcxRjUxQTIwRDI2MkZBMDAwRUNFMEQ1IC8qIENTU1NlZ21lbnRl
ZEZvbnRGYWNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDM3MUY1MUEwMEQyNjJGQTAwMEVDRTBENSAvKiBDU1NTZWdtZW50ZWRGb250RmFjZS5jcHAg
Ki87IH07CiAJCTM3MUY1M0U5MEQyNzA0RjkwMEVDRTBENSAvKiBDU1NVbmljb2RlUmFuZ2VWYWx1
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzcxRjUz
RTcwRDI3MDRGOTAwRUNFMEQ1IC8qIENTU1VuaWNvZGVSYW5nZVZhbHVlLmggKi87IH07CkBAIC04
MzkwLDEwICs4Mzg4LDggQEAKIAkJMzcxQTY3Q0ExMUM2QzdEQjAwMDQ3QjhCIC8qIEh5cGhlbmF0
aW9uQ0YuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSHlwaGVuYXRp
b25DRi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3MUU2NUNCMTM2NjFFREMw
MEJFRURCMCAvKiBQYWdlU2VyaWFsaXplci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBQYWdlU2VyaWFsaXplci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzNzFF
NjVDRDEzNjYxRUVEMDBCRUVEQjAgLyogUGFnZVNlcmlhbGl6ZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGFnZVNlcmlhbGl6ZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQkzNzFGNEYzRTBEMjVCOUFGMDBFQ0UwRDUgLyogRm9udERhdGEuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRm9udERhdGEuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJMzcxRjRGM0YwRDI1QjlBRjAwRUNFMEQ1IC8qIEZvbnREYXRhLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvbnREYXRhLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzcxRjRGRkEwRDI1RTdGMzAwRUNFMEQ1IC8qIFNl
Z21lbnRlZEZvbnREYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlZ21l
bnRlZEZvbnREYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTM3MUY0RkZCMEQy
NUU3RjMwMEVDRTBENSAvKiBTZWdtZW50ZWRGb250RGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBTZWdtZW50ZWRGb250RGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTM3MUY0RkZBMEQyNUU3RjMwMEVDRTBENSAvKiBGb250UmFuZ2VzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvbnRSYW5nZXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzcxRjRGRkIwRDI1RTdGMzAwRUNFMEQ1IC8qIEZvbnRSYW5n
ZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9udFJhbmdlcy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3MUY1MTlGMEQyNjJGQTAwMEVDRTBE
NSAvKiBDU1NTZWdtZW50ZWRGb250RmFjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBDU1NTZWdtZW50ZWRGb250RmFjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkzNzFGNTFBMDBEMjYyRkEwMDBFQ0UwRDUgLyogQ1NTU2VnbWVudGVkRm9udEZhY2UuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ1NTU2VnbWVudGVkRm9udEZhY2Uu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzNzFGNTNFNzBEMjcwNEY5MDBFQ0Uw
RDUgLyogQ1NTVW5pY29kZVJhbmdlVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQ1NTVW5pY29kZVJhbmdlVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTIwNDM5LDggKzIwNDM1LDYgQEAKIAkJCQlCQ0I5MkQ0RTEyOTM1NTBCMDBDODM4N0YgLyog
Rm9udEJhc2VsaW5lLmggKi8sCiAJCQkJQjJDM0RBNTEwRDAwNkNENjAwRUY2RjI2IC8qIEZvbnRD
YWNoZS5jcHAgKi8sCiAJCQkJQjJDM0RBNTIwRDAwNkNENjAwRUY2RjI2IC8qIEZvbnRDYWNoZS5o
ICovLAotCQkJCTM3MUY0RjNGMEQyNUI5QUYwMEVDRTBENSAvKiBGb250RGF0YS5jcHAgKi8sCi0J
CQkJMzcxRjRGM0UwRDI1QjlBRjAwRUNFMEQ1IC8qIEZvbnREYXRhLmggKi8sCiAJCQkJMzdBQ0NF
NjIwREEyQUE5NjAwODlFNjAyIC8qIEZvbnREZXNjcmlwdGlvbi5jcHAgKi8sCiAJCQkJQjJDM0RB
NTUwRDAwNkNENjAwRUY2RjI2IC8qIEZvbnREZXNjcmlwdGlvbi5oICovLAogCQkJCTcyNjI2RTAx
MEVGMDIyRkUwMEEwN0UyMCAvKiBGb250RmFzdFBhdGguY3BwICovLApAQCAtMjA1NDMsOCArMjA1
MzcsOCBAQAogCQkJCUJDQUI0MTgwMTNFMzU2RTgwMEQ4QUFGMyAvKiBSZWdpb24uaCAqLywKIAkJ
CQlBNzNGOTVGQzEyQzk3QkZFMDAzMUFBRjkgLyogUm91bmRlZFJlY3QuY3BwICovLAogCQkJCUE3
M0Y5NUZEMTJDOTdCRkUwMDMxQUFGOSAvKiBSb3VuZGVkUmVjdC5oICovLAotCQkJCTM3MUY0RkZC
MEQyNUU3RjMwMEVDRTBENSAvKiBTZWdtZW50ZWRGb250RGF0YS5jcHAgKi8sCi0JCQkJMzcxRjRG
RkEwRDI1RTdGMzAwRUNFMEQ1IC8qIFNlZ21lbnRlZEZvbnREYXRhLmggKi8sCisJCQkJMzcxRjRG
RkIwRDI1RTdGMzAwRUNFMEQ1IC8qIEZvbnRSYW5nZXMuY3BwICovLAorCQkJCTM3MUY0RkZBMEQy
NUU3RjMwMEVDRTBENSAvKiBGb250UmFuZ2VzLmggKi8sCiAJCQkJMEYzREQ0NEQxMkY1RUExQjAw
MEQ5MTkwIC8qIFNoYWRvd0JsdXIuY3BwICovLAogCQkJCTBGM0RENDRFMTJGNUVBMUIwMDBEOTE5
MCAvKiBTaGFkb3dCbHVyLmggKi8sCiAJCQkJQjJDM0RBNTMwRDAwNkNENjAwRUY2RjI2IC8qIFNp
bXBsZUZvbnREYXRhLmNwcCAqLywKQEAgLTI0MzA5LDcgKzI0MzAzLDYgQEAKIAkJCQlCQ0I5MkQ0
RjEyOTM1NTBCMDBDODM4N0YgLyogRm9udEJhc2VsaW5lLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
MkMzREE2MzBEMDA2Q0Q2MDBFRjZGMjYgLyogRm9udENhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCMkFGRkM3RTBEMDBBNUMxMDAzMDA3NEQgLyogRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oIGlu
IEhlYWRlcnMgKi8sCi0JCQkJMzcxRjRGNDAwRDI1QjlBRjAwRUNFMEQ1IC8qIEZvbnREYXRhLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCMkMzREE2NjBEMDA2Q0Q2MDBFRjZGMjYgLyogRm9udERlc2Ny
aXB0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk0QTZFOUZDODEzQzE3RDU3MDA0NkE3RjggLyog
Rm9udEZlYXR1cmVTZXR0aW5ncy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJDM0RBNjgwRDAwNkNE
NjAwRUY2RjI2IC8qIEZvbnRHbHlwaHMuaCBpbiBIZWFkZXJzICovLApAQCAtMjU5NjAsNyArMjU5
NTMsNyBAQAogCQkJCUJDRDBFMEZDMEU5NzJDMzUwMDI2NURFQSAvKiBTZWN1cml0eU9yaWdpbkhh
c2guaCBpbiBIZWFkZXJzICovLAogCQkJCTk3NEQyREE1MTQ2QTUzNUQwMEQ1MUY4QiAvKiBTZWN1
cml0eVBvbGljeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ1QkM0MjcxNkY4ODJFRTAwNzA0OEQw
IC8qIFNlY3VyaXR5UG9saWN5VmlvbGF0aW9uRXZlbnQuaCBpbiBIZWFkZXJzICovLAotCQkJCTM3
MUY0RkZDMEQyNUU3RjMwMEVDRTBENSAvKiBTZWdtZW50ZWRGb250RGF0YS5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJMzcxRjRGRkMwRDI1RTdGMzAwRUNFMEQ1IC8qIEZvbnRSYW5nZXMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTk5Q0MwQjVFMThCRTk4NEEwMDZDRUJDQyAvKiBTZWdtZW50ZWRJbnB1dFN0
b3JhZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyQzNEQTJGMEQwMDZDMUQwMEVGNkYyNiAvKiBT
ZWdtZW50ZWRTdHJpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCUJFQTgwN0M5MEY3MTRBMDMwMDUy
NDE5OSAvKiBTZWxlY3Rpb25SZWN0LmggaW4gSGVhZGVycyAqLywKQEAgLTI3ODEzLDcgKzI3ODA2
LDYgQEAKIAkJCQlCMkFGRkM3QzBEMDBBNUMxMDAzMDA3NEQgLyogRm9udENhY2hlTWFjLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMzdDMjM2MEIxMDk3RURFRDAwRUY5RjcyIC8qIEZvbnRDb21wbGV4
VGV4dE1hYy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMkFGRkM3RDBEMDBBNUMxMDAzMDA3NEQg
LyogRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkzNzFGNEY0
MTBEMjVCOUFGMDBFQ0UwRDUgLyogRm9udERhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzdB
Q0NGNjkwREE0MTRFNzAwODlFNjAyIC8qIEZvbnREZXNjcmlwdGlvbi5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk3MjYyNkUwMjBFRjAyMkZFMDBBMDdFMjAgLyogRm9udEZhc3RQYXRoLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTRBNkU5RkM3MTNDMTdENTcwMDQ2QTdGOCAvKiBGb250RmVhdHVyZVNl
dHRpbmdzLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjkzOTEsNyArMjkzODMsNyBAQAogCQkJCTk3
NkYzNkVBMTQ2ODYyMjUwMDVFOTNCNCAvKiBTZWN1cml0eUNvbnRleHQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQkNEMEUwRkEwRTk3MkMzNTAwMjY1REVBIC8qIFNlY3VyaXR5T3JpZ2luLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTk3NEQyREE0MTQ2QTUzNUQwMEQ1MUY4QiAvKiBTZWN1cml0eVBv
bGljeS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkzNzFGNEZGRDBEMjVFN0YzMDBFQ0UwRDUgLyog
U2VnbWVudGVkRm9udERhdGEuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMzcxRjRGRkQwRDI1RTdG
MzAwRUNFMEQ1IC8qIEZvbnRSYW5nZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTlDQzBCNUQx
OEJFOTg0QTAwNkNFQkNDIC8qIFNlZ21lbnRlZElucHV0U3RvcmFnZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlCMkMzREEyRTBEMDA2QzFEMDBFRjZGMjYgLyogU2VnbWVudGVkU3RyaW5nLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUJFQTgwN0M4MEY3MTRBMDMwMDUyNDE5OSAvKiBTZWxlY3Rpb25S
ZWN0LmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRT
ZWxlY3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxl
Y3Rvci5jcHAJKHJldmlzaW9uIDE3ODM2MikKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250
U2VsZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NjgsNyArNDY4LDcgQEAgc3RhdGljIGlu
bGluZSBib29sIGNvbXBhcmVGb250RmFjZXMoQ1NTRgogICAgIHJldHVybiBmYWxzZTsKIH0KIAot
UGFzc1JlZlB0cjxGb250RGF0YT4gQ1NTRm9udFNlbGVjdG9yOjpnZXRGb250RGF0YShjb25zdCBG
b250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbiwgY29uc3QgQXRvbWljU3RyaW5nJiBmYW1p
bHlOYW1lKQorRm9udFJhbmdlcyBDU1NGb250U2VsZWN0b3I6OmZvbnRSYW5nZXNGb3JGYW1pbHko
Y29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250RGVzY3JpcHRpb24sIGNvbnN0IEF0b21pY1N0cmlu
ZyYgZmFtaWx5TmFtZSkKIHsKICAgICAvLyBGSVhNRTogVGhlIHNwZWMgKGFuZCBGaXJlZm94KSBz
YXlzIHVzZXIgc3BlY2lmaWVkIGdlbmVyaWMgZmFtaWxpZXMgKHNhbnMtc2VyaWYgZXRjLikgc2hv
dWxkIGJlIHJlc29sdmVkIGJlZm9yZSB0aGUgQGZvbnQtZmFjZSBsb29rdXAgdG9vLgogICAgIGJv
b2wgcmVzb2x2ZUdlbmVyaWNGYW1pbHlGaXJzdCA9IGZhbWlseU5hbWUgPT0gc3RhbmRhcmRGYW1p
bHk7CkBAIC00NzgsMTAgKzQ3OCwxMCBAQCBQYXNzUmVmUHRyPEZvbnREYXRhPiBDU1NGb250U2Vs
ZWN0b3I6OmdlCiAgICAgaWYgKCFmYWNlKSB7CiAgICAgICAgIGlmICghcmVzb2x2ZUdlbmVyaWNG
YW1pbHlGaXJzdCkKICAgICAgICAgICAgIGZhbWlseUZvckxvb2t1cCA9IHJlc29sdmVHZW5lcmlj
RmFtaWx5KG1fZG9jdW1lbnQsIGZvbnREZXNjcmlwdGlvbiwgZmFtaWx5TmFtZSk7Ci0gICAgICAg
IHJldHVybiBmb250Q2FjaGUoKS5mb250Rm9yRmFtaWx5KGZvbnREZXNjcmlwdGlvbiwgZmFtaWx5
Rm9yTG9va3VwKTsKKyAgICAgICAgcmV0dXJuIEZvbnRSYW5nZXMoZm9udENhY2hlKCkuZm9udEZv
ckZhbWlseShmb250RGVzY3JpcHRpb24sIGZhbWlseUZvckxvb2t1cCkpOwogICAgIH0KIAotICAg
IHJldHVybiBmYWNlLT5nZXRGb250RGF0YShmb250RGVzY3JpcHRpb24pOworICAgIHJldHVybiBm
YWNlLT5mb250UmFuZ2VzKGZvbnREZXNjcmlwdGlvbik7CiB9CiAKIENTU1NlZ21lbnRlZEZvbnRG
YWNlKiBDU1NGb250U2VsZWN0b3I6OmdldEZvbnRGYWNlKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYg
Zm9udERlc2NyaXB0aW9uLCBjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlseSkKQEAgLTYyMyw3ICs2
MjMsNyBAQCBzaXplX3QgQ1NTRm9udFNlbGVjdG9yOjpmYWxsYmFja0ZvbnREYXRhCiAgICAgcmV0
dXJuIDA7CiB9CiAKLVBhc3NSZWZQdHI8Rm9udERhdGE+IENTU0ZvbnRTZWxlY3Rvcjo6Z2V0RmFs
bGJhY2tGb250RGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbiwgc2l6
ZV90IGluZGV4KQorUGFzc1JlZlB0cjxTaW1wbGVGb250RGF0YT4gQ1NTRm9udFNlbGVjdG9yOjpm
YWxsYmFja0ZvbnREYXRhQXQoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250RGVzY3JpcHRpb24s
IHNpemVfdCBpbmRleCkKIHsKICAgICBBU1NFUlRfVU5VU0VEKGluZGV4LCAhaW5kZXgpOwogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5oCShyZXZpc2lvbiAxNzgzNjIpCisr
KyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAg
LTU4LDkgKzU4LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdW5zaWduZWQgdmVyc2lvbigpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fdmVyc2lvbjsgfQogICAgIHZpcnR1YWwgdW5zaWduZWQg
dW5pcXVlSWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3VuaXF1ZUlkOyB9CiAKLSAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8Rm9udERhdGE+IGdldEZvbnREYXRhKGNvbnN0IEZvbnREZXNjcmlw
dGlvbiYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgRm9udFJh
bmdlcyBmb250UmFuZ2VzRm9yRmFtaWx5KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGNvbnN0IEF0
b21pY1N0cmluZyYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgc2l6ZV90IGZhbGxiYWNrRm9udERh
dGFDb3VudCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGb250RGF0YT4gZ2V0
RmFsbGJhY2tGb250RGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mLCBzaXplX3QpIG92ZXJyaWRl
OworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxTaW1wbGVGb250RGF0YT4gZmFsbGJhY2tGb250RGF0
YUF0KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIHNpemVfdCkgb3ZlcnJpZGU7CiAgICAgQ1NTU2Vn
bWVudGVkRm9udEZhY2UqIGdldEZvbnRGYWNlKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGNvbnN0
IEF0b21pY1N0cmluZyYgZmFtaWx5KTsKIAogICAgIHZpcnR1YWwgYm9vbCByZXNvbHZlc0ZhbWls
eUZvcihjb25zdCBGb250RGVzY3JpcHRpb24mKSBjb25zdCBvdmVycmlkZTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NTZWdtZW50ZWRGb250RmFjZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvY3NzL0NTU1NlZ21lbnRlZEZvbnRGYWNlLmNwcAkocmV2aXNpb24gMTc4MzYy
KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlZ21lbnRlZEZvbnRGYWNlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzIsNyArMzIsNiBAQAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVk
ZSAiRm9udERlc2NyaXB0aW9uLmgiCiAjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5o
IgotI2luY2x1ZGUgIlNlZ21lbnRlZEZvbnREYXRhLmgiCiAjaW5jbHVkZSAiU2ltcGxlRm9udERh
dGEuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTIsMTEgKzUxLDcgQEAgQ1NTU2VnbWVu
dGVkRm9udEZhY2U6On5DU1NTZWdtZW50ZWRGb250RgogCiB2b2lkIENTU1NlZ21lbnRlZEZvbnRG
YWNlOjpwcnVuZVRhYmxlKCkKIHsKLSAgICAvLyBNYWtlIHN1cmUgdGhlIGdseXBoIHBhZ2UgdHJl
ZSBwcnVuZXMgb3V0IGFsbCB1c2VzIG9mIHRoaXMgY3VzdG9tIGZvbnQuCi0gICAgaWYgKG1fZm9u
dERhdGFUYWJsZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fZm9udERhdGFU
YWJsZS5jbGVhcigpOworICAgIG1fZGVzY3JpcHRpb25Ub1Jhbmdlc01hcC5jbGVhcigpOwogfQog
CiBib29sIENTU1NlZ21lbnRlZEZvbnRGYWNlOjppc1ZhbGlkKCkgY29uc3QKQEAgLTk1LDI4ICs5
MCwyNyBAQCB2b2lkIENTU1NlZ21lbnRlZEZvbnRGYWNlOjphcHBlbmRGb250RmFjCiAgICAgbV9m
b250RmFjZXMuYXBwZW5kKGZvbnRGYWNlKTsKIH0KIAotc3RhdGljIHZvaWQgYXBwZW5kRm9udERh
dGFXaXRoSW52YWxpZFVuaWNvZGVSYW5nZUlmTG9hZGluZyhTZWdtZW50ZWRGb250RGF0YSogbmV3
Rm9udERhdGEsIFBhc3NSZWZQdHI8U2ltcGxlRm9udERhdGE+IHBycEZhY2VGb250RGF0YSwgY29u
c3QgVmVjdG9yPENTU0ZvbnRGYWNlOjpVbmljb2RlUmFuZ2U+JiByYW5nZXMpCitzdGF0aWMgdm9p
ZCBhcHBlbmRGb250RGF0YVdpdGhJbnZhbGlkVW5pY29kZVJhbmdlSWZMb2FkaW5nKEZvbnRSYW5n
ZXMmIHJhbmdlcywgUmVmUHRyPFNpbXBsZUZvbnREYXRhPiYmIGZvbnREYXRhLCBjb25zdCBWZWN0
b3I8Q1NTRm9udEZhY2U6OlVuaWNvZGVSYW5nZT4mIHVuaWNvZGVSYW5nZXMpCiB7Ci0gICAgUmVm
UHRyPFNpbXBsZUZvbnREYXRhPiBmYWNlRm9udERhdGEgPSBwcnBGYWNlRm9udERhdGE7Ci0gICAg
aWYgKGZhY2VGb250RGF0YS0+aXNMb2FkaW5nKCkpIHsKLSAgICAgICAgbmV3Rm9udERhdGEtPmFw
cGVuZFJhbmdlKEZvbnREYXRhUmFuZ2UoMCwgMCwgZmFjZUZvbnREYXRhKSk7CisgICAgaWYgKGZv
bnREYXRhLT5pc0xvYWRpbmcoKSkgeworICAgICAgICByYW5nZXMuYXBwZW5kUmFuZ2UoRm9udFJh
bmdlczo6UmFuZ2UoMCwgMCwgV1RGOjptb3ZlKGZvbnREYXRhKSkpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgdW5zaWduZWQgbnVtUmFuZ2VzID0gcmFuZ2VzLnNpemUoKTsKKyAgICB1
bnNpZ25lZCBudW1SYW5nZXMgPSB1bmljb2RlUmFuZ2VzLnNpemUoKTsKICAgICBpZiAoIW51bVJh
bmdlcykgewotICAgICAgICBuZXdGb250RGF0YS0+YXBwZW5kUmFuZ2UoRm9udERhdGFSYW5nZSgw
LCAweDdGRkZGRkZGLCBmYWNlRm9udERhdGEpKTsKKyAgICAgICAgcmFuZ2VzLmFwcGVuZFJhbmdl
KEZvbnRSYW5nZXM6OlJhbmdlKDAsIDB4N0ZGRkZGRkYsIFdURjo6bW92ZShmb250RGF0YSkpKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGZvciAodW5zaWduZWQgaiA9IDA7IGogPCBu
dW1SYW5nZXM7ICsraikKLSAgICAgICAgbmV3Rm9udERhdGEtPmFwcGVuZFJhbmdlKEZvbnREYXRh
UmFuZ2UocmFuZ2VzW2pdLmZyb20oKSwgcmFuZ2VzW2pdLnRvKCksIGZhY2VGb250RGF0YSkpOwor
ICAgICAgICByYW5nZXMuYXBwZW5kUmFuZ2UoRm9udFJhbmdlczo6UmFuZ2UodW5pY29kZVJhbmdl
c1tqXS5mcm9tKCksIHVuaWNvZGVSYW5nZXNbal0udG8oKSwgZm9udERhdGEuY29weVJlZigpKSk7
CiB9CiAKLVBhc3NSZWZQdHI8Rm9udERhdGE+IENTU1NlZ21lbnRlZEZvbnRGYWNlOjpnZXRGb250
RGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbikKK0ZvbnRSYW5nZXMg
Q1NTU2VnbWVudGVkRm9udEZhY2U6OmZvbnRSYW5nZXMoY29uc3QgRm9udERlc2NyaXB0aW9uJiBm
b250RGVzY3JpcHRpb24pCiB7CiAgICAgaWYgKCFpc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiAw
OworICAgICAgICByZXR1cm4gRm9udFJhbmdlcygpOwogCiAgICAgRm9udFRyYWl0c01hc2sgZGVz
aXJlZFRyYWl0c01hc2sgPSBmb250RGVzY3JpcHRpb24udHJhaXRzTWFzaygpOwogICAgIHVuc2ln
bmVkIGhhc2hLZXkgPSAoKGZvbnREZXNjcmlwdGlvbi5jb21wdXRlZFBpeGVsU2l6ZSgpICsgMSkg
PDwgKEZvbnRUcmFpdHNNYXNrV2lkdGggKyBGb250V2lkdGhWYXJpYW50V2lkdGggKyAxKSkKQEAg
LTEyNCwyOSArMTE4LDIyIEBAIFBhc3NSZWZQdHI8Rm9udERhdGE+IENTU1NlZ21lbnRlZEZvbnRG
YWMKICAgICAgICAgfCBmb250RGVzY3JpcHRpb24ud2lkdGhWYXJpYW50KCkgPDwgRm9udFRyYWl0
c01hc2tXaWR0aAogICAgICAgICB8IGRlc2lyZWRUcmFpdHNNYXNrOwogCi0gICAgUmVmUHRyPFNl
Z21lbnRlZEZvbnREYXRhPiYgZm9udERhdGEgPSBtX2ZvbnREYXRhVGFibGUuYWRkKGhhc2hLZXks
IG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKLSAgICBpZiAoZm9udERhdGEgJiYgZm9udERhdGEt
Pm51bVJhbmdlcygpKQotICAgICAgICByZXR1cm4gZm9udERhdGE7IC8vIE5vIHJlbGVhc2UsIHdl
IGhhdmUgYSByZWZlcmVuY2UgdG8gYW4gb2JqZWN0IGluIHRoZSBjYWNoZSB3aGljaCBzaG91bGQg
cmV0YWluIHRoZSByZWYgY291bnQgaXQgaGFzLgotCi0gICAgaWYgKCFmb250RGF0YSkKLSAgICAg
ICAgZm9udERhdGEgPSBTZWdtZW50ZWRGb250RGF0YTo6Y3JlYXRlKCk7CisgICAgYXV0byBhZGRS
ZXN1bHQgPSBtX2Rlc2NyaXB0aW9uVG9SYW5nZXNNYXAuYWRkKGhhc2hLZXksIEZvbnRSYW5nZXMo
KSk7CisgICAgYXV0byYgZm9udFJhbmdlcyA9IGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWU7CiAK
LSAgICB1bnNpZ25lZCBzaXplID0gbV9mb250RmFjZXMuc2l6ZSgpOwotICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKLSAgICAgICAgaWYgKCFtX2ZvbnRGYWNlc1tpXS0+
aXNWYWxpZCgpKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIEZvbnRUcmFpdHNNYXNr
IHRyYWl0c01hc2sgPSBtX2ZvbnRGYWNlc1tpXS0+dHJhaXRzTWFzaygpOwotICAgICAgICBib29s
IHN5bnRoZXRpY0JvbGQgPSAhKHRyYWl0c01hc2sgJiAoRm9udFdlaWdodDYwME1hc2sgfCBGb250
V2VpZ2h0NzAwTWFzayB8IEZvbnRXZWlnaHQ4MDBNYXNrIHwgRm9udFdlaWdodDkwME1hc2spKSAm
JiAoZGVzaXJlZFRyYWl0c01hc2sgJiAoRm9udFdlaWdodDYwME1hc2sgfCBGb250V2VpZ2h0NzAw
TWFzayB8IEZvbnRXZWlnaHQ4MDBNYXNrIHwgRm9udFdlaWdodDkwME1hc2spKTsKLSAgICAgICAg
Ym9vbCBzeW50aGV0aWNJdGFsaWMgPSAhKHRyYWl0c01hc2sgJiBGb250U3R5bGVJdGFsaWNNYXNr
KSAmJiAoZGVzaXJlZFRyYWl0c01hc2sgJiBGb250U3R5bGVJdGFsaWNNYXNrKTsKLSAgICAgICAg
aWYgKFJlZlB0cjxTaW1wbGVGb250RGF0YT4gZmFjZUZvbnREYXRhID0gbV9mb250RmFjZXNbaV0t
PmdldEZvbnREYXRhKGZvbnREZXNjcmlwdGlvbiwgc3ludGhldGljQm9sZCwgc3ludGhldGljSXRh
bGljKSkgewotICAgICAgICAgICAgQVNTRVJUKCFmYWNlRm9udERhdGEtPmlzU2VnbWVudGVkKCkp
OwotICAgICAgICAgICAgYXBwZW5kRm9udERhdGFXaXRoSW52YWxpZFVuaWNvZGVSYW5nZUlmTG9h
ZGluZyhmb250RGF0YS5nZXQoKSwgZmFjZUZvbnREYXRhLnJlbGVhc2UoKSwgbV9mb250RmFjZXNb
aV0tPnJhbmdlcygpKTsKKyAgICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50cnkpIHsKKyAgICAgICAg
dW5zaWduZWQgc2l6ZSA9IG1fZm9udEZhY2VzLnNpemUoKTsKKyAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IHNpemU7IGkrKykgeworICAgICAgICAgICAgaWYgKCFtX2ZvbnRGYWNlc1tp
XS0+aXNWYWxpZCgpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgRm9u
dFRyYWl0c01hc2sgdHJhaXRzTWFzayA9IG1fZm9udEZhY2VzW2ldLT50cmFpdHNNYXNrKCk7Cisg
ICAgICAgICAgICBib29sIHN5bnRoZXRpY0JvbGQgPSAhKHRyYWl0c01hc2sgJiAoRm9udFdlaWdo
dDYwME1hc2sgfCBGb250V2VpZ2h0NzAwTWFzayB8IEZvbnRXZWlnaHQ4MDBNYXNrIHwgRm9udFdl
aWdodDkwME1hc2spKSAmJiAoZGVzaXJlZFRyYWl0c01hc2sgJiAoRm9udFdlaWdodDYwME1hc2sg
fCBGb250V2VpZ2h0NzAwTWFzayB8IEZvbnRXZWlnaHQ4MDBNYXNrIHwgRm9udFdlaWdodDkwME1h
c2spKTsKKyAgICAgICAgICAgIGJvb2wgc3ludGhldGljSXRhbGljID0gISh0cmFpdHNNYXNrICYg
Rm9udFN0eWxlSXRhbGljTWFzaykgJiYgKGRlc2lyZWRUcmFpdHNNYXNrICYgRm9udFN0eWxlSXRh
bGljTWFzayk7CisgICAgICAgICAgICBpZiAoUmVmUHRyPFNpbXBsZUZvbnREYXRhPiBmYWNlRm9u
dERhdGEgPSBtX2ZvbnRGYWNlc1tpXS0+Z2V0Rm9udERhdGEoZm9udERlc2NyaXB0aW9uLCBzeW50
aGV0aWNCb2xkLCBzeW50aGV0aWNJdGFsaWMpKQorICAgICAgICAgICAgICAgIGFwcGVuZEZvbnRE
YXRhV2l0aEludmFsaWRVbmljb2RlUmFuZ2VJZkxvYWRpbmcoZm9udFJhbmdlcywgV1RGOjptb3Zl
KGZhY2VGb250RGF0YSksIG1fZm9udEZhY2VzW2ldLT5yYW5nZXMoKSk7CiAgICAgICAgIH0KICAg
ICB9Ci0gICAgaWYgKGZvbnREYXRhLT5udW1SYW5nZXMoKSkKLSAgICAgICAgcmV0dXJuIGZvbnRE
YXRhOyAvLyBObyByZWxlYXNlLCB3ZSBoYXZlIGEgcmVmZXJlbmNlIHRvIGFuIG9iamVjdCBpbiB0
aGUgY2FjaGUgd2hpY2ggc2hvdWxkIHJldGFpbiB0aGUgcmVmIGNvdW50IGl0IGhhcy4KLQotICAg
IHJldHVybiAwOworICAgIHJldHVybiBmb250UmFuZ2VzOwogfQogCiAjaWYgRU5BQkxFKEZPTlRf
TE9BRF9FVkVOVFMpCkBAIC0xNzIsNyArMTU5LDcgQEAgYm9vbCBDU1NTZWdtZW50ZWRGb250RmFj
ZTo6Y2hlY2tGb250KCkgYwogCiB2b2lkIENTU1NlZ21lbnRlZEZvbnRGYWNlOjpsb2FkRm9udChj
b25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbiwgUGFzc1JlZlB0cjxMb2FkRm9u
dENhbGxiYWNrPiBjYWxsYmFjaykKIHsKLSAgICBnZXRGb250RGF0YShmb250RGVzY3JpcHRpb24p
OyAvLyBLaWNrIG9mZiB0aGUgbG9hZC4KKyAgICBmb250UmFuZ2VzKGZvbnREZXNjcmlwdGlvbik7
IC8vIEtpY2sgb2ZmIHRoZSBsb2FkLgogCiAgICAgaWYgKGNhbGxiYWNrKSB7CiAgICAgICAgIGlm
IChpc0xvYWRpbmcoKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWdtZW50ZWRGb250
RmFjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWdtZW50ZWRGb250
RmFjZS5oCShyZXZpc2lvbiAxNzgzNjIpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VnbWVu
dGVkRm9udEZhY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2lmbmRlZiBD
U1NTZWdtZW50ZWRGb250RmFjZV9oCiAjZGVmaW5lIENTU1NlZ21lbnRlZEZvbnRGYWNlX2gKIAor
I2luY2x1ZGUgIkZvbnRSYW5nZXMuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1
ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTM1
LDkgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDU1NGb250RmFjZTsKIGNs
YXNzIENTU0ZvbnRTZWxlY3RvcjsKLWNsYXNzIEZvbnREYXRhOwogY2xhc3MgRm9udERlc2NyaXB0
aW9uOwotY2xhc3MgU2VnbWVudGVkRm9udERhdGE7CiAKIGNsYXNzIENTU1NlZ21lbnRlZEZvbnRG
YWNlIDogcHVibGljIFJlZkNvdW50ZWQ8Q1NTU2VnbWVudGVkRm9udEZhY2U+IHsKIHB1YmxpYzoK
QEAgLTUwLDcgKzQ5LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBhcHBlbmRGb250RmFjZShQYXNz
UmVmUHRyPENTU0ZvbnRGYWNlPik7CiAKLSAgICBQYXNzUmVmUHRyPEZvbnREYXRhPiBnZXRGb250
RGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mKTsKKyAgICBGb250UmFuZ2VzIGZvbnRSYW5nZXMo
Y29uc3QgRm9udERlc2NyaXB0aW9uJik7CiAKICNpZiBFTkFCTEUoRk9OVF9MT0FEX0VWRU5UUykK
ICAgICBjbGFzcyBMb2FkRm9udENhbGxiYWNrIDogcHVibGljIFJlZkNvdW50ZWQ8TG9hZEZvbnRD
YWxsYmFjaz4gewpAQCAtNzQsNyArNzMsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAgICBDU1NG
b250U2VsZWN0b3IqIG1fZm9udFNlbGVjdG9yOwotICAgIEhhc2hNYXA8dW5zaWduZWQsIFJlZlB0
cjxTZWdtZW50ZWRGb250RGF0YT4+IG1fZm9udERhdGFUYWJsZTsKKyAgICBIYXNoTWFwPHVuc2ln
bmVkLCBGb250UmFuZ2VzPiBtX2Rlc2NyaXB0aW9uVG9SYW5nZXNNYXA7CiAgICAgVmVjdG9yPFJl
ZlB0cjxDU1NGb250RmFjZT4sIDE+IG1fZm9udEZhY2VzOwogI2lmIEVOQUJMRShGT05UX0xPQURf
RVZFTlRTKQogICAgIFZlY3RvcjxSZWZQdHI8TG9hZEZvbnRDYWxsYmFjaz4+IG1fY2FsbGJhY2tz
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaAkocmV2aXNpb24g
MTc4MzYyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xODQsNyArMTg0LDcgQEAgcHVibGljOgogICAgIGludCBlbXBoYXNpc01h
cmtIZWlnaHQoY29uc3QgQXRvbWljU3RyaW5nJikgY29uc3Q7CiAKICAgICBjb25zdCBTaW1wbGVG
b250RGF0YSYgcHJpbWFyeUZvbnREYXRhKCkgY29uc3Q7Ci0gICAgY29uc3QgRm9udERhdGEqIGZv
bnREYXRhQXQodW5zaWduZWQpIGNvbnN0OworICAgIGNvbnN0IEZvbnRSYW5nZXMmIGZhbGxiYWNr
UmFuZ2VzQXQodW5zaWduZWQpIGNvbnN0OwogICAgIEdseXBoRGF0YSBnbHlwaERhdGFGb3JDaGFy
YWN0ZXIoVUNoYXIzMiwgYm9vbCBtaXJyb3IsIEZvbnREYXRhVmFyaWFudCA9IEF1dG9WYXJpYW50
KSBjb25zdDsKICAgICAKICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTM1NywxMCArMzU3LDEwIEBA
IGlubGluZSBjb25zdCBTaW1wbGVGb250RGF0YSYgRm9udDo6cHJpbWEKICAgICByZXR1cm4gbV9n
bHlwaHMtPnByaW1hcnlTaW1wbGVGb250RGF0YShtX2ZvbnREZXNjcmlwdGlvbik7CiB9CiAKLWlu
bGluZSBjb25zdCBGb250RGF0YSogRm9udDo6Zm9udERhdGFBdCh1bnNpZ25lZCBpbmRleCkgY29u
c3QKK2lubGluZSBjb25zdCBGb250UmFuZ2VzJiBGb250OjpmYWxsYmFja1Jhbmdlc0F0KHVuc2ln
bmVkIGluZGV4KSBjb25zdAogewogICAgIEFTU0VSVChtX2dseXBocyk7Ci0gICAgcmV0dXJuIG1f
Z2x5cGhzLT5yZWFsaXplRm9udERhdGFBdChtX2ZvbnREZXNjcmlwdGlvbiwgaW5kZXgpOworICAg
IHJldHVybiBtX2dseXBocy0+cmVhbGl6ZUZhbGxiYWNrUmFuZ2VzQXQobV9mb250RGVzY3JpcHRp
b24sIGluZGV4KTsKIH0KIAogaW5saW5lIGJvb2wgRm9udDo6aXNGaXhlZFBpdGNoKCkgY29uc3QK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnREYXRhLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250RGF0YS5jcHAJ
KHJldmlzaW9uIDE3ODM2MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnREYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSwzNSArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNp
bmNsdWRlICJGb250RGF0YS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUZvbnREYXRhOjp+
Rm9udERhdGEoKQotewotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250RGF0YS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnREYXRhLmgJKHJldmlzaW9uIDE3ODM2MikK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnREYXRhLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNjIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAxNSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIEZvbnREYXRhX2gKLSNkZWZpbmUgRm9udERhdGFf
aAotCi0jaW5jbHVkZSA8dW5pY29kZS91dHlwZXMuaD4KLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxv
Yy5oPgotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxl
Lmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFNpbXBsZUZvbnREYXRhOwotCi1j
bGFzcyBGb250RGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPEZvbnREYXRhPiB7Ci0gICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoRm9udERhdGEpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1Ymxp
YzoKLSAgICBGb250RGF0YSgpCi0gICAgewotICAgIH0KLQotICAgIHZpcnR1YWwgfkZvbnREYXRh
KCk7Ci0KLSAgICB2aXJ0dWFsIGNvbnN0IFNpbXBsZUZvbnREYXRhKiBzaW1wbGVGb250RGF0YUZv
ckNoYXJhY3RlcihVQ2hhcjMyKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBjb25zdCBTaW1wbGVG
b250RGF0YSYgc2ltcGxlRm9udERhdGFGb3JGaXJzdFJhbmdlKCkgY29uc3QgPSAwOwotICAgIHZp
cnR1YWwgYm9vbCBpc0N1c3RvbUZvbnQoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBib29sIGlz
TG9hZGluZygpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNTZWdtZW50ZWQoKSBjb25z
dCA9IDA7Ci0KLSNpZm5kZWYgTkRFQlVHCi0gICAgdmlydHVhbCBTdHJpbmcgZGVzY3JpcHRpb24o
KSBjb25zdCA9IDA7Ci0jZW5kaWYKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2Vu
ZGlmIC8vIEZvbnREYXRhX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnRHbHlwaHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ZvbnRHbHlwaHMuY3BwCShyZXZpc2lvbiAxNzgzNjIpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250R2x5cGhzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIs
NyArMzIsNiBAQAogI2luY2x1ZGUgIkZvbnQuaCIKICNpbmNsdWRlICJGb250Q2FjaGUuaCIKICNp
bmNsdWRlICJHbHlwaFBhZ2UuaCIKLSNpbmNsdWRlICJTZWdtZW50ZWRGb250RGF0YS5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTUyLDcgKzUxLDcgQEAgRm9udEdseXBoczo6Rm9udEds
eXBocyhjb25zdCBGb250UGxhdGZvcgogICAgICwgbV9nZW5lcmF0aW9uKGZvbnRDYWNoZSgpLmdl
bmVyYXRpb24oKSkKICAgICAsIG1faXNGb3JQbGF0Zm9ybUZvbnQodHJ1ZSkKIHsKLSAgICBtX3Jl
YWxpemVkRm9udERhdGEuYXBwZW5kKGZvbnRDYWNoZSgpLmZvbnRGb3JQbGF0Zm9ybURhdGEocGxh
dGZvcm1EYXRhKSk7CisgICAgbV9yZWFsaXplZEZhbGxiYWNrUmFuZ2VzLmFwcGVuZChGb250UmFu
Z2VzKGZvbnRDYWNoZSgpLmZvbnRGb3JQbGF0Zm9ybURhdGEocGxhdGZvcm1EYXRhKSkpOwogfQog
CiBGb250R2x5cGhzOjp+Rm9udEdseXBocygpCkBAIC02MSwyOSArNjAsMjQgQEAgRm9udEdseXBo
czo6fkZvbnRHbHlwaHMoKQogCiB2b2lkIEZvbnRHbHlwaHM6OmRldGVybWluZVBpdGNoKGNvbnN0
IEZvbnREZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24pCiB7Ci0gICAgY29uc3QgRm9udERhdGEmIGZv
bnREYXRhID0gKnJlYWxpemVGb250RGF0YUF0KGRlc2NyaXB0aW9uLCAwKTsKLSAgICBpZiAoaXM8
U2ltcGxlRm9udERhdGE+KGZvbnREYXRhKSkKLSAgICAgICAgbV9waXRjaCA9IGRvd25jYXN0PFNp
bXBsZUZvbnREYXRhPihmb250RGF0YSkucGl0Y2goKTsKLSAgICBlbHNlIHsKLSAgICAgICAgY29u
c3QgU2VnbWVudGVkRm9udERhdGEmIHNlZ21lbnRlZEZvbnREYXRhID0gZG93bmNhc3Q8U2VnbWVu
dGVkRm9udERhdGE+KGZvbnREYXRhKTsKLSAgICAgICAgdW5zaWduZWQgbnVtUmFuZ2VzID0gc2Vn
bWVudGVkRm9udERhdGEubnVtUmFuZ2VzKCk7Ci0gICAgICAgIGlmIChudW1SYW5nZXMgPT0gMSkK
LSAgICAgICAgICAgIG1fcGl0Y2ggPSBzZWdtZW50ZWRGb250RGF0YS5yYW5nZUF0KDApLmZvbnRE
YXRhKCktPnBpdGNoKCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fcGl0Y2ggPSBWYXJp
YWJsZVBpdGNoOwotICAgIH0KKyAgICBhdXRvJiBwcmltYXJ5UmFuZ2VzID0gcmVhbGl6ZUZhbGxi
YWNrUmFuZ2VzQXQoZGVzY3JpcHRpb24sIDApOworICAgIHVuc2lnbmVkIG51bVJhbmdlcyA9IHBy
aW1hcnlSYW5nZXMuc2l6ZSgpOworICAgIGlmIChudW1SYW5nZXMgPT0gMSkKKyAgICAgICAgbV9w
aXRjaCA9IHByaW1hcnlSYW5nZXMucmFuZ2VBdCgwKS5mb250RGF0YSgpLT5waXRjaCgpOworICAg
IGVsc2UKKyAgICAgICAgbV9waXRjaCA9IFZhcmlhYmxlUGl0Y2g7CiB9CiAKIGJvb2wgRm9udEds
eXBoczo6aXNMb2FkaW5nQ3VzdG9tRm9udHMoKSBjb25zdAogewotICAgIGZvciAoYXV0byYgZm9u
dCA6IG1fcmVhbGl6ZWRGb250RGF0YSkgewotICAgICAgICBpZiAoZm9udC0+aXNMb2FkaW5nKCkp
CisgICAgZm9yIChhdXRvJiBmb250UmFuZ2VzIDogbV9yZWFsaXplZEZhbGxiYWNrUmFuZ2VzKSB7
CisgICAgICAgIGlmIChmb250UmFuZ2VzLmlzTG9hZGluZygpKQogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotc3RhdGljIFJlZlB0cjxGb250
RGF0YT4gcmVhbGl6ZU5leHRGYW1pbHkoY29uc3QgRm9udERlc2NyaXB0aW9uJiBkZXNjcmlwdGlv
biwgdW5zaWduZWQmIGluZGV4LCBGb250U2VsZWN0b3IqIGZvbnRTZWxlY3RvcikKK3N0YXRpYyBG
b250UmFuZ2VzIHJlYWxpemVOZXh0RmFsbGJhY2soY29uc3QgRm9udERlc2NyaXB0aW9uJiBkZXNj
cmlwdGlvbiwgdW5zaWduZWQmIGluZGV4LCBGb250U2VsZWN0b3IqIGZvbnRTZWxlY3RvcikKIHsK
ICAgICBBU1NFUlQoaW5kZXggPCBkZXNjcmlwdGlvbi5mYW1pbHlDb3VudCgpKTsKIApAQCAtOTIs
NTUgKzg2LDUzIEBAIHN0YXRpYyBSZWZQdHI8Rm9udERhdGE+IHJlYWxpemVOZXh0RmFtaWwKICAg
ICAgICAgaWYgKGZhbWlseS5pc0VtcHR5KCkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICAgaWYgKGZvbnRTZWxlY3RvcikgewotICAgICAgICAgICAgaWYgKGF1dG8gZm9udCA9IGZvbnRT
ZWxlY3Rvci0+Z2V0Rm9udERhdGEoZGVzY3JpcHRpb24sIGZhbWlseSkpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIGZvbnQ7CisgICAgICAgICAgICBhdXRvIHJhbmdlcyA9IGZvbnRTZWxlY3Rvci0+
Zm9udFJhbmdlc0ZvckZhbWlseShkZXNjcmlwdGlvbiwgZmFtaWx5KTsKKyAgICAgICAgICAgIGlm
ICghcmFuZ2VzLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gcmFuZ2VzOwogICAg
ICAgICB9CiAgICAgICAgIGlmIChhdXRvIGZvbnQgPSBmb250Q2FjaGUoKS5mb250Rm9yRmFtaWx5
KGRlc2NyaXB0aW9uLCBmYW1pbHkpKQotICAgICAgICAgICAgcmV0dXJuIGZvbnQ7CisgICAgICAg
ICAgICByZXR1cm4gRm9udFJhbmdlcyhmb250KTsKICAgICB9CiAgICAgLy8gV2UgZGlkbid0IGZp
bmQgYSBmb250LiBUcnkgdG8gZmluZCBhIHNpbWlsYXIgZm9udCB1c2luZyBvdXIgb3duIHNwZWNp
ZmljIGtub3dsZWRnZSBhYm91dCBvdXIgcGxhdGZvcm0uCiAgICAgLy8gRm9yIGV4YW1wbGUgb24g
T1MgWCwgd2Uga25vdyB0byBtYXAgYW55IGZhbWlsaWVzIGNvbnRhaW5pbmcgdGhlIHdvcmRzIEFy
YWJpYywgUGFzaHRvLCBvciBVcmR1IHRvIHRoZQogICAgIC8vIEdlZXphIFBybyBmb250LgotICAg
IHJldHVybiBmb250Q2FjaGUoKS5zaW1pbGFyRm9udFBsYXRmb3JtRGF0YShkZXNjcmlwdGlvbik7
CisgICAgcmV0dXJuIEZvbnRSYW5nZXMoZm9udENhY2hlKCkuc2ltaWxhckZvbnRQbGF0Zm9ybURh
dGEoZGVzY3JpcHRpb24pKTsKIH0KIAotY29uc3QgRm9udERhdGEqIEZvbnRHbHlwaHM6OnJlYWxp
emVGb250RGF0YUF0KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24sIHVuc2lnbmVk
IGluZGV4KQorY29uc3QgRm9udFJhbmdlcyYgRm9udEdseXBoczo6cmVhbGl6ZUZhbGxiYWNrUmFu
Z2VzQXQoY29uc3QgRm9udERlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwgdW5zaWduZWQgaW5kZXgp
CiB7Ci0gICAgaWYgKGluZGV4IDwgbV9yZWFsaXplZEZvbnREYXRhLnNpemUoKSkKLSAgICAgICAg
cmV0dXJuICZtX3JlYWxpemVkRm9udERhdGFbaW5kZXhdLmdldCgpOworICAgIGlmIChpbmRleCA8
IG1fcmVhbGl6ZWRGYWxsYmFja1Jhbmdlcy5zaXplKCkpCisgICAgICAgIHJldHVybiBtX3JlYWxp
emVkRmFsbGJhY2tSYW5nZXNbaW5kZXhdOwogCi0gICAgQVNTRVJUKGluZGV4ID09IG1fcmVhbGl6
ZWRGb250RGF0YS5zaXplKCkpOworICAgIEFTU0VSVChpbmRleCA9PSBtX3JlYWxpemVkRmFsbGJh
Y2tSYW5nZXMuc2l6ZSgpKTsKICAgICBBU1NFUlQoZm9udENhY2hlKCkuZ2VuZXJhdGlvbigpID09
IG1fZ2VuZXJhdGlvbik7CiAKLSAgICBpZiAoIWluZGV4KSB7Ci0gICAgICAgIFJlZlB0cjxGb250
RGF0YT4gcmVzdWx0ID0gcmVhbGl6ZU5leHRGYW1pbHkoZGVzY3JpcHRpb24sIG1fbGFzdFJlYWxp
emVkRmFtaWx5SW5kZXgsIG1fZm9udFNlbGVjdG9yLmdldCgpKTsKLSAgICAgICAgaWYgKCFyZXN1
bHQgJiYgbV9mb250U2VsZWN0b3IpCi0gICAgICAgICAgICByZXN1bHQgPSBtX2ZvbnRTZWxlY3Rv
ci0+Z2V0Rm9udERhdGEoZGVzY3JpcHRpb24sIHN0YW5kYXJkRmFtaWx5KTsKLSAgICAgICAgaWYg
KCFyZXN1bHQpCi0gICAgICAgICAgICByZXN1bHQgPSBmb250Q2FjaGUoKS5sYXN0UmVzb3J0RmFs
bGJhY2tGb250KGRlc2NyaXB0aW9uKTsKKyAgICBtX3JlYWxpemVkRmFsbGJhY2tSYW5nZXMuYXBw
ZW5kKEZvbnRSYW5nZXMoKSk7CisgICAgYXV0byYgZm9udFJhbmdlcyA9IG1fcmVhbGl6ZWRGYWxs
YmFja1Jhbmdlcy5sYXN0KCk7CiAKLSAgICAgICAgbV9yZWFsaXplZEZvbnREYXRhLmFwcGVuZCgq
cmVzdWx0KTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdC5nZXQoKTsKKyAgICBpZiAoIWluZGV4KSB7
CisgICAgICAgIGZvbnRSYW5nZXMgPSByZWFsaXplTmV4dEZhbGxiYWNrKGRlc2NyaXB0aW9uLCBt
X2xhc3RSZWFsaXplZEZhbGxiYWNrSW5kZXgsIG1fZm9udFNlbGVjdG9yLmdldCgpKTsKKyAgICAg
ICAgaWYgKGZvbnRSYW5nZXMuaXNFbXB0eSgpICYmIG1fZm9udFNlbGVjdG9yKQorICAgICAgICAg
ICAgZm9udFJhbmdlcyA9IG1fZm9udFNlbGVjdG9yLT5mb250UmFuZ2VzRm9yRmFtaWx5KGRlc2Ny
aXB0aW9uLCBzdGFuZGFyZEZhbWlseSk7CisgICAgICAgIGlmIChmb250UmFuZ2VzLmlzRW1wdHko
KSkKKyAgICAgICAgICAgIGZvbnRSYW5nZXMgPSBGb250UmFuZ2VzKGZvbnRDYWNoZSgpLmxhc3RS
ZXNvcnRGYWxsYmFja0ZvbnQoZGVzY3JpcHRpb24pKTsKKyAgICAgICAgcmV0dXJuIGZvbnRSYW5n
ZXM7CiAgICAgfQogCi0gICAgUmVmUHRyPEZvbnREYXRhPiByZXN1bHQ7Ci0gICAgaWYgKG1fbGFz
dFJlYWxpemVkRmFtaWx5SW5kZXggPCBkZXNjcmlwdGlvbi5mYW1pbHlDb3VudCgpKQotICAgICAg
ICByZXN1bHQgPSByZWFsaXplTmV4dEZhbWlseShkZXNjcmlwdGlvbiwgbV9sYXN0UmVhbGl6ZWRG
YW1pbHlJbmRleCwgbV9mb250U2VsZWN0b3IuZ2V0KCkpOworICAgIGlmIChtX2xhc3RSZWFsaXpl
ZEZhbGxiYWNrSW5kZXggPCBkZXNjcmlwdGlvbi5mYW1pbHlDb3VudCgpKQorICAgICAgICBmb250
UmFuZ2VzID0gcmVhbGl6ZU5leHRGYWxsYmFjayhkZXNjcmlwdGlvbiwgbV9sYXN0UmVhbGl6ZWRG
YWxsYmFja0luZGV4LCBtX2ZvbnRTZWxlY3Rvci5nZXQoKSk7CiAKLSAgICBpZiAoIXJlc3VsdCAm
JiBtX2ZvbnRTZWxlY3RvcikgewotICAgICAgICBBU1NFUlQobV9sYXN0UmVhbGl6ZWRGYW1pbHlJ
bmRleCA+PSBkZXNjcmlwdGlvbi5mYW1pbHlDb3VudCgpKTsKKyAgICBpZiAoZm9udFJhbmdlcy5p
c0VtcHR5KCkgJiYgbV9mb250U2VsZWN0b3IpIHsKKyAgICAgICAgQVNTRVJUKG1fbGFzdFJlYWxp
emVkRmFsbGJhY2tJbmRleCA+PSBkZXNjcmlwdGlvbi5mYW1pbHlDb3VudCgpKTsKIAotICAgICAg
ICB1bnNpZ25lZCBmb250U2VsZWN0b3JGYWxsYmFja0luZGV4ID0gbV9sYXN0UmVhbGl6ZWRGYW1p
bHlJbmRleCAtIGRlc2NyaXB0aW9uLmZhbWlseUNvdW50KCk7CisgICAgICAgIHVuc2lnbmVkIGZv
bnRTZWxlY3RvckZhbGxiYWNrSW5kZXggPSBtX2xhc3RSZWFsaXplZEZhbGxiYWNrSW5kZXggLSBk
ZXNjcmlwdGlvbi5mYW1pbHlDb3VudCgpOwogICAgICAgICBpZiAoZm9udFNlbGVjdG9yRmFsbGJh
Y2tJbmRleCA9PSBtX2ZvbnRTZWxlY3Rvci0+ZmFsbGJhY2tGb250RGF0YUNvdW50KCkpCi0gICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgKyttX2xhc3RSZWFsaXplZEZhbWlseUlu
ZGV4OwotICAgICAgICByZXN1bHQgPSBtX2ZvbnRTZWxlY3Rvci0+Z2V0RmFsbGJhY2tGb250RGF0
YShkZXNjcmlwdGlvbiwgZm9udFNlbGVjdG9yRmFsbGJhY2tJbmRleCk7CisgICAgICAgICAgICBy
ZXR1cm4gZm9udFJhbmdlczsKKyAgICAgICAgKyttX2xhc3RSZWFsaXplZEZhbGxiYWNrSW5kZXg7
CisgICAgICAgIGZvbnRSYW5nZXMgPSBGb250UmFuZ2VzKG1fZm9udFNlbGVjdG9yLT5mYWxsYmFj
a0ZvbnREYXRhQXQoZGVzY3JpcHRpb24sIGZvbnRTZWxlY3RvckZhbGxiYWNrSW5kZXgpKTsKICAg
ICB9Ci0gICAgaWYgKCFyZXN1bHQpCi0gICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgbV9y
ZWFsaXplZEZvbnREYXRhLmFwcGVuZCgqcmVzdWx0KTsKLSAgICByZXR1cm4gcmVzdWx0LmdldCgp
OworICAgIHJldHVybiBmb250UmFuZ2VzOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgaXNJblJh
bmdlKFVDaGFyMzIgY2hhcmFjdGVyLCBVQ2hhcjMyIGxvd2VyQm91bmQsIFVDaGFyMzIgdXBwZXJC
b3VuZCkKQEAgLTI2MywxMCArMjU1LDEwIEBAIHN0YXRpYyBHbHlwaERhdGEgZ2x5cGhEYXRhRm9y
Tm9uQ0pLQ2hhcmEKIEdseXBoRGF0YSBGb250R2x5cGhzOjpnbHlwaERhdGFGb3JTeXN0ZW1GYWxs
YmFjayhVQ2hhcjMyIGMsIGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24sIEZvbnRE
YXRhVmFyaWFudCB2YXJpYW50KQogewogICAgIC8vIFN5c3RlbSBmYWxsYmFjayBpcyBjaGFyYWN0
ZXItZGVwZW5kZW50LgotICAgIGF1dG8mIHByaW1hcnlGb250RGF0YSA9ICpyZWFsaXplRm9udERh
dGFBdChkZXNjcmlwdGlvbiwgMCk7Ci0gICAgYXV0byogb3JpZ2luYWxGb250RGF0YSA9IHByaW1h
cnlGb250RGF0YS5zaW1wbGVGb250RGF0YUZvckNoYXJhY3RlcihjKTsKKyAgICBhdXRvJiBwcmlt
YXJ5UmFuZ2VzID0gcmVhbGl6ZUZhbGxiYWNrUmFuZ2VzQXQoZGVzY3JpcHRpb24sIDApOworICAg
IGF1dG8qIG9yaWdpbmFsRm9udERhdGEgPSBwcmltYXJ5UmFuZ2VzLmZvbnREYXRhRm9yQ2hhcmFj
dGVyKGMpOwogICAgIGlmICghb3JpZ2luYWxGb250RGF0YSkKLSAgICAgICAgb3JpZ2luYWxGb250
RGF0YSA9ICZwcmltYXJ5Rm9udERhdGEuc2ltcGxlRm9udERhdGFGb3JGaXJzdFJhbmdlKCk7Cisg
ICAgICAgIG9yaWdpbmFsRm9udERhdGEgPSAmcHJpbWFyeVJhbmdlcy5mb250RGF0YUZvckZpcnN0
UmFuZ2UoKTsKIAogICAgIFJlZlB0cjxTaW1wbGVGb250RGF0YT4gc3lzdGVtRmFsbGJhY2tGb250
RGF0YSA9IG9yaWdpbmFsRm9udERhdGEtPnN5c3RlbUZhbGxiYWNrRm9udERhdGFGb3JDaGFyYWN0
ZXIoYywgZGVzY3JpcHRpb24sIG1faXNGb3JQbGF0Zm9ybUZvbnQpOwogICAgIGlmICghc3lzdGVt
RmFsbGJhY2tGb250RGF0YSkKQEAgLTI5NSw5ICsyODcsMTIgQEAgR2x5cGhEYXRhIEZvbnRHbHlw
aHM6OmdseXBoRGF0YUZvclN5c3RlbQogCiBHbHlwaERhdGEgRm9udEdseXBoczo6Z2x5cGhEYXRh
Rm9yVmFyaWFudChVQ2hhcjMyIGMsIGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24s
IEZvbnREYXRhVmFyaWFudCB2YXJpYW50LCB1bnNpZ25lZCBmYWxsYmFja0luZGV4KQogewotICAg
IHdoaWxlIChhdXRvKiBmb250RGF0YSA9IHJlYWxpemVGb250RGF0YUF0KGRlc2NyaXB0aW9uLCBm
YWxsYmFja0luZGV4KyspKSB7Ci0gICAgICAgIGF1dG8qIHNpbXBsZUZvbnREYXRhID0gZm9udERh
dGEtPnNpbXBsZUZvbnREYXRhRm9yQ2hhcmFjdGVyKGMpOwotICAgICAgICBHbHlwaERhdGEgZGF0
YSA9IHNpbXBsZUZvbnREYXRhID8gc2ltcGxlRm9udERhdGEtPmdseXBoRGF0YUZvckNoYXJhY3Rl
cihjKSA6IEdseXBoRGF0YSgpOworICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgIGF1dG8mIGZv
bnRTZWdtZW50cyA9IHJlYWxpemVGYWxsYmFja1Jhbmdlc0F0KGRlc2NyaXB0aW9uLCBmYWxsYmFj
a0luZGV4KyspOworICAgICAgICBpZiAoZm9udFNlZ21lbnRzLmlzRW1wdHkoKSkKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBhdXRvKiBmb250RGF0YSA9IGZvbnRTZWdtZW50cy5mb250RGF0
YUZvckNoYXJhY3RlcihjKTsKKyAgICAgICAgR2x5cGhEYXRhIGRhdGEgPSBmb250RGF0YSA/IGZv
bnREYXRhLT5nbHlwaERhdGFGb3JDaGFyYWN0ZXIoYykgOiBHbHlwaERhdGEoKTsKICAgICAgICAg
aWYgKGRhdGEuZm9udERhdGEpIHsKICAgICAgICAgICAgIC8vIFRoZSB2YXJpYW50Rm9udERhdGEg
ZnVuY3Rpb24gc2hvdWxkIG5vdCBub3JtYWxseSByZXR1cm4gMC4KICAgICAgICAgICAgIC8vIEJ1
dCBpZiBpdCBkb2VzLCB3ZSB3aWxsIGp1c3QgcmVuZGVyIHRoZSBjYXBpdGFsIGxldHRlciBiaWcu
CkBAIC0zMTYsOCArMzExLDExIEBAIEdseXBoRGF0YSBGb250R2x5cGhzOjpnbHlwaERhdGFGb3JO
b3JtYWwKIHsKICAgICBjb25zdCB1bnNpZ25lZCBwYWdlTnVtYmVyID0gYyAvIEdseXBoUGFnZTo6
c2l6ZTsKIAotICAgIGZvciAodW5zaWduZWQgZmFsbGJhY2tJbmRleCA9IDA7IGF1dG8qIGZvbnRE
YXRhID0gcmVhbGl6ZUZvbnREYXRhQXQoZGVzY3JpcHRpb24sIGZhbGxiYWNrSW5kZXgpOyArK2Zh
bGxiYWNrSW5kZXgpIHsKLSAgICAgICAgYXV0byogc2ltcGxlRm9udERhdGEgPSBmb250RGF0YS0+
c2ltcGxlRm9udERhdGFGb3JDaGFyYWN0ZXIoYyk7CisgICAgZm9yICh1bnNpZ25lZCBmYWxsYmFj
a0luZGV4ID0gMDsgdHJ1ZTsgKytmYWxsYmFja0luZGV4KSB7CisgICAgICAgIGF1dG8mIGZvbnRT
ZWdtZW50cyA9IHJlYWxpemVGYWxsYmFja1Jhbmdlc0F0KGRlc2NyaXB0aW9uLCBmYWxsYmFja0lu
ZGV4KTsKKyAgICAgICAgaWYgKGZvbnRTZWdtZW50cy5pc0VtcHR5KCkpCisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgYXV0byogc2ltcGxlRm9udERhdGEgPSBmb250U2VnbWVudHMuZm9udERh
dGFGb3JDaGFyYWN0ZXIoYyk7CiAgICAgICAgIGF1dG8qIHBhZ2UgPSBzaW1wbGVGb250RGF0YSA/
IHNpbXBsZUZvbnREYXRhLT5nbHlwaFBhZ2UocGFnZU51bWJlcikgOiBudWxscHRyOwogICAgICAg
ICBpZiAoIXBhZ2UpCiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTM0NSwyNSArMzQzLDIxIEBA
IEdseXBoRGF0YSBGb250R2x5cGhzOjpnbHlwaERhdGFGb3JOb3JtYWwKICAgICByZXR1cm4gZ2x5
cGhEYXRhRm9yU3lzdGVtRmFsbGJhY2soYywgZGVzY3JpcHRpb24sIE5vcm1hbFZhcmlhbnQpOwog
fQogCi1zdGF0aWMgUmVmUHRyPEdseXBoUGFnZT4gZ2x5cGhQYWdlRnJvbUZvbnREYXRhKHVuc2ln
bmVkIHBhZ2VOdW1iZXIsIGNvbnN0IEZvbnREYXRhJiBmb250RGF0YSkKK3N0YXRpYyBSZWZQdHI8
R2x5cGhQYWdlPiBnbHlwaFBhZ2VGcm9tRm9udFJhbmdlcyh1bnNpZ25lZCBwYWdlTnVtYmVyLCBj
b25zdCBGb250UmFuZ2VzJiBmb250UmFuZ2VzKQogewogICAgIGNvbnN0IFNpbXBsZUZvbnREYXRh
KiBzaW1wbGVGb250RGF0YSA9IG51bGxwdHI7Ci0gICAgaWYgKGZvbnREYXRhLmlzU2VnbWVudGVk
KCkpIHsKLSAgICAgICAgVUNoYXIzMiBwYWdlUmFuZ2VGcm9tID0gcGFnZU51bWJlciAqIEdseXBo
UGFnZTo6c2l6ZTsKLSAgICAgICAgVUNoYXIzMiBwYWdlUmFuZ2VUbyA9IHBhZ2VSYW5nZUZyb20g
KyBHbHlwaFBhZ2U6OnNpemUgLSAxOwotICAgICAgICBhdXRvJiBzZWdtZW50ZWRGb250RGF0YSA9
IGRvd25jYXN0PFNlZ21lbnRlZEZvbnREYXRhPihmb250RGF0YSk7Ci0gICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBzZWdtZW50ZWRGb250RGF0YS5udW1SYW5nZXMoKTsgKytpKSB7Ci0g
ICAgICAgICAgICBhdXRvJiByYW5nZSA9IHNlZ21lbnRlZEZvbnREYXRhLnJhbmdlQXQoaSk7Ci0g
ICAgICAgICAgICBpZiAocmFuZ2UudG8oKSkgewotICAgICAgICAgICAgICAgIGlmIChyYW5nZS5m
cm9tKCkgPD0gcGFnZVJhbmdlRnJvbSAmJiBwYWdlUmFuZ2VUbyA8PSByYW5nZS50bygpKQotICAg
ICAgICAgICAgICAgICAgICBzaW1wbGVGb250RGF0YSA9IHJhbmdlLmZvbnREYXRhKCkuZ2V0KCk7
Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9CisgICAgVUNoYXIzMiBwYWdl
UmFuZ2VGcm9tID0gcGFnZU51bWJlciAqIEdseXBoUGFnZTo6c2l6ZTsKKyAgICBVQ2hhcjMyIHBh
Z2VSYW5nZVRvID0gcGFnZVJhbmdlRnJvbSArIEdseXBoUGFnZTo6c2l6ZSAtIDE7CisgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IGZvbnRSYW5nZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAg
YXV0byYgcmFuZ2UgPSBmb250UmFuZ2VzLnJhbmdlQXQoaSk7CisgICAgICAgIGlmIChyYW5nZS50
bygpKSB7CisgICAgICAgICAgICBpZiAocmFuZ2UuZnJvbSgpIDw9IHBhZ2VSYW5nZUZyb20gJiYg
cGFnZVJhbmdlVG8gPD0gcmFuZ2UudG8oKSkKKyAgICAgICAgICAgICAgICBzaW1wbGVGb250RGF0
YSA9IHJhbmdlLmZvbnREYXRhKCkuZ2V0KCk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQotICAgICAgICBpZiAoIXNpbXBsZUZvbnREYXRhKQotICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0gICAgfSBlbHNlCi0gICAgICAgIHNpbXBsZUZvbnREYXRhID0gJmRvd25jYXN0PFNpbXBs
ZUZvbnREYXRhPihmb250RGF0YSk7CisgICAgfQorICAgIGlmICghc2ltcGxlRm9udERhdGEpCisg
ICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgaWYgKHNpbXBsZUZvbnREYXRhLT5wbGF0Zm9y
bURhdGEoKS5vcmllbnRhdGlvbigpID09IFZlcnRpY2FsKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKQEAgLTM4Myw3ICszNzcsNyBAQCBHbHlwaERhdGEgRm9udEdseXBoczo6Z2x5cGhEYXRhRm9y
Q2hhcmFjCiAKICAgICBSZWZQdHI8R2x5cGhQYWdlPiYgY2FjaGVkUGFnZSA9IHBhZ2VOdW1iZXIg
PyBtX2NhY2hlZFBhZ2VzLmFkZChwYWdlTnVtYmVyLCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWUg
OiBtX2NhY2hlZFBhZ2VaZXJvOwogICAgIGlmICghY2FjaGVkUGFnZSkKLSAgICAgICAgY2FjaGVk
UGFnZSA9IGdseXBoUGFnZUZyb21Gb250RGF0YShwYWdlTnVtYmVyLCAqcmVhbGl6ZUZvbnREYXRh
QXQoZGVzY3JpcHRpb24sIDApKTsKKyAgICAgICAgY2FjaGVkUGFnZSA9IGdseXBoUGFnZUZyb21G
b250UmFuZ2VzKHBhZ2VOdW1iZXIsIHJlYWxpemVGYWxsYmFja1Jhbmdlc0F0KGRlc2NyaXB0aW9u
LCAwKSk7CiAKICAgICBHbHlwaERhdGEgZ2x5cGhEYXRhID0gY2FjaGVkUGFnZSA/IGNhY2hlZFBh
Z2UtPmdseXBoRGF0YUZvckNoYXJhY3RlcihjKSA6IEdseXBoRGF0YSgpOwogICAgIGlmICghZ2x5
cGhEYXRhLmdseXBoKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250R2x5cGhzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udEdseXBocy5oCShyZXZpc2lvbiAxNzgzNjIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250R2x5cGhzLmgJKHdvcmtpbmcgY29weSkKQEAgLTIxLDYgKzIxLDcg
QEAKICNpZm5kZWYgRm9udEdseXBoc19oCiAjZGVmaW5lIEZvbnRHbHlwaHNfaAogCisjaW5jbHVk
ZSAiRm9udFJhbmdlcy5oIgogI2luY2x1ZGUgIkZvbnRTZWxlY3Rvci5oIgogI2luY2x1ZGUgIkds
eXBoUGFnZS5oIgogI2luY2x1ZGUgIlNpbXBsZUZvbnREYXRhLmgiCkBAIC02Niw3ICs2Nyw3IEBA
IHB1YmxpYzoKICAgICBjb25zdCBXaWR0aENhY2hlJiB3aWR0aENhY2hlKCkgY29uc3QgeyByZXR1
cm4gbV93aWR0aENhY2hlOyB9CiAKICAgICBjb25zdCBTaW1wbGVGb250RGF0YSYgcHJpbWFyeVNp
bXBsZUZvbnREYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYpOwotICAgIFdFQkNPUkVfRVhQT1JU
IGNvbnN0IEZvbnREYXRhKiByZWFsaXplRm9udERhdGFBdChjb25zdCBGb250RGVzY3JpcHRpb24m
LCB1bnNpZ25lZCBpbmRleCk7CisgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgRm9udFJhbmdlcyYg
cmVhbGl6ZUZhbGxiYWNrUmFuZ2VzQXQoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgdW5zaWduZWQg
ZmFsbGJhY2tJbmRleCk7CiAKIHByaXZhdGU6CiAgICAgRm9udEdseXBocyhQYXNzUmVmUHRyPEZv
bnRTZWxlY3Rvcj4pOwpAQCAtNzYsNyArNzcsOCBAQCBwcml2YXRlOgogICAgIEdseXBoRGF0YSBn
bHlwaERhdGFGb3JOb3JtYWxWYXJpYW50KFVDaGFyMzIsIGNvbnN0IEZvbnREZXNjcmlwdGlvbiYp
OwogICAgIEdseXBoRGF0YSBnbHlwaERhdGFGb3JWYXJpYW50KFVDaGFyMzIsIGNvbnN0IEZvbnRE
ZXNjcmlwdGlvbiYsIEZvbnREYXRhVmFyaWFudCwgdW5zaWduZWQgZmFsbGJhY2tJbmRleCk7CiAK
LSAgICBWZWN0b3I8UmVmPEZvbnREYXRhPiwgMT4gbV9yZWFsaXplZEZvbnREYXRhOworICAgIFZl
Y3RvcjxGb250UmFuZ2VzLCAxPiBtX3JlYWxpemVkRmFsbGJhY2tSYW5nZXM7CisgICAgdW5zaWdu
ZWQgbV9sYXN0UmVhbGl6ZWRGYWxsYmFja0luZGV4IHsgMCB9OwogCiAgICAgUmVmUHRyPEdseXBo
UGFnZT4gbV9jYWNoZWRQYWdlWmVybzsKICAgICBIYXNoTWFwPGludCwgUmVmUHRyPEdseXBoUGFn
ZT4+IG1fY2FjaGVkUGFnZXM7CkBAIC04NSwxMCArODcsMTEgQEAgcHJpdmF0ZToKIAogICAgIGNv
bnN0IFNpbXBsZUZvbnREYXRhKiBtX2NhY2hlZFByaW1hcnlTaW1wbGVGb250RGF0YTsKICAgICBS
ZWZQdHI8Rm9udFNlbGVjdG9yPiBtX2ZvbnRTZWxlY3RvcjsKKwogICAgIFdpZHRoQ2FjaGUgbV93
aWR0aENhY2hlOworCiAgICAgdW5zaWduZWQgbV9mb250U2VsZWN0b3JWZXJzaW9uOwogICAgIHVu
c2lnbmVkIHNob3J0IG1fZ2VuZXJhdGlvbjsKLSAgICB1bnNpZ25lZCBtX2xhc3RSZWFsaXplZEZh
bWlseUluZGV4IHsgMCB9OwogICAgIFBpdGNoIG1fcGl0Y2ggeyBVbmtub3duUGl0Y2ggfTsKICAg
ICBib29sIG1faXNGb3JQbGF0Zm9ybUZvbnQgeyBmYWxzZSB9OwogfTsKQEAgLTEwNCwxMCArMTA3
LDEwIEBAIGlubGluZSBjb25zdCBTaW1wbGVGb250RGF0YSYgRm9udEdseXBoczoKIHsKICAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGlmICghbV9jYWNoZWRQcmltYXJ5U2ltcGxlRm9u
dERhdGEpIHsKLSAgICAgICAgYXV0byYgZm9udERhdGEgPSAqcmVhbGl6ZUZvbnREYXRhQXQoZGVz
Y3JpcHRpb24sIDApOwotICAgICAgICBtX2NhY2hlZFByaW1hcnlTaW1wbGVGb250RGF0YSA9IGZv
bnREYXRhLnNpbXBsZUZvbnREYXRhRm9yQ2hhcmFjdGVyKCcgJyk7CisgICAgICAgIGF1dG8mIHBy
aW1hcnlSYW5nZXMgPSByZWFsaXplRmFsbGJhY2tSYW5nZXNBdChkZXNjcmlwdGlvbiwgMCk7Cisg
ICAgICAgIG1fY2FjaGVkUHJpbWFyeVNpbXBsZUZvbnREYXRhID0gcHJpbWFyeVJhbmdlcy5mb250
RGF0YUZvckNoYXJhY3RlcignICcpOwogICAgICAgICBpZiAoIW1fY2FjaGVkUHJpbWFyeVNpbXBs
ZUZvbnREYXRhKQotICAgICAgICAgICAgbV9jYWNoZWRQcmltYXJ5U2ltcGxlRm9udERhdGEgPSAm
Zm9udERhdGEuc2ltcGxlRm9udERhdGFGb3JGaXJzdFJhbmdlKCk7CisgICAgICAgICAgICBtX2Nh
Y2hlZFByaW1hcnlTaW1wbGVGb250RGF0YSA9ICZwcmltYXJ5UmFuZ2VzLmZvbnREYXRhRm9yRmly
c3RSYW5nZSgpOwogICAgIH0KICAgICByZXR1cm4gKm1fY2FjaGVkUHJpbWFyeVNpbXBsZUZvbnRE
YXRhOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFJhbmdl
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dFJhbmdlcy5jcHAJKHJldmlzaW9uIDE3ODI0NikJKGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvU2VnbWVudGVkRm9udERhdGEuY3BwOjE3ODI0NikKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRSYW5nZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsODUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDksIDIwMTUgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNlZ21lbnRlZEZv
bnREYXRhLmgiCisKKyNpbmNsdWRlICJTaW1wbGVGb250RGF0YS5oIgorI2luY2x1ZGUgPHd0Zi9B
c3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworU2VnbWVudGVkRm9udERhdGE6OlNlZ21lbnRlZEZvbnREYXRhKCkKK3sK
KyAgICAKK30KKworU2VnbWVudGVkRm9udERhdGE6On5TZWdtZW50ZWRGb250RGF0YSgpCit7Cit9
CisKK2NvbnN0IFNpbXBsZUZvbnREYXRhKiBTZWdtZW50ZWRGb250RGF0YTo6c2ltcGxlRm9udERh
dGFGb3JDaGFyYWN0ZXIoVUNoYXIzMiBjKSBjb25zdAoreworICAgIGZvciAoYXV0byYgcmFuZ2Ug
OiBtX3JhbmdlcykgeworICAgICAgICBpZiAocmFuZ2UuZnJvbSgpIDw9IGMgJiYgYyA8PSByYW5n
ZS50bygpKQorICAgICAgICAgICAgcmV0dXJuIHJhbmdlLmZvbnREYXRhKCkuZ2V0KCk7CisgICAg
fQorICAgIHJldHVybiBudWxscHRyOworfQorCitjb25zdCBTaW1wbGVGb250RGF0YSYgU2VnbWVu
dGVkRm9udERhdGE6OnNpbXBsZUZvbnREYXRhRm9yRmlyc3RSYW5nZSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuICptX3Jhbmdlc1swXS5mb250RGF0YSgpOworfQorCitib29sIFNlZ21lbnRlZEZvbnRE
YXRhOjppc0N1c3RvbUZvbnQoKSBjb25zdAoreworICAgIC8vIEFsbCBzZWdtZW50ZWQgZm9udHMg
YXJlIGN1c3RvbSBmb250cy4KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBTZWdtZW50ZWRG
b250RGF0YTo6aXNMb2FkaW5nKCkgY29uc3QKK3sKKyAgICBmb3IgKGF1dG8mIHJhbmdlIDogbV9y
YW5nZXMpIHsKKyAgICAgICAgaWYgKHJhbmdlLmZvbnREYXRhKCktPmlzTG9hZGluZygpKQorICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKworYm9v
bCBTZWdtZW50ZWRGb250RGF0YTo6aXNTZWdtZW50ZWQoKSBjb25zdAoreworICAgIHJldHVybiB0
cnVlOworfQorCisjaWZuZGVmIE5ERUJVRworU3RyaW5nIFNlZ21lbnRlZEZvbnREYXRhOjpkZXNj
cmlwdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuICJbc2VnbWVudGVkIGZvbnRdIjsKK30KKyNl
bmRpZgorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250UmFuZ2VzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UmFuZ2VzLmNwcAkod29ya2luZyBjb3B5KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFJhbmdlcy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI0LDcgKzI0LDcgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiU2VnbWVudGVkRm9udERhdGEuaCIKKyNpbmNsdWRlICJGb250UmFuZ2VzLmgiCiAKICNpbmNs
dWRlICJTaW1wbGVGb250RGF0YS5oIgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CkBAIC0z
MiwxNiArMzIsMjEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TZWdtZW50ZWRGb250RGF0
YTo6U2VnbWVudGVkRm9udERhdGEoKQorRm9udFJhbmdlczo6Rm9udFJhbmdlcygpCiB7Ci0gICAg
CiB9CiAKLVNlZ21lbnRlZEZvbnREYXRhOjp+U2VnbWVudGVkRm9udERhdGEoKQorRm9udFJhbmdl
czo6Rm9udFJhbmdlcyhSZWZQdHI8U2ltcGxlRm9udERhdGE+JiYgZm9udERhdGEpCiB7CisgICAg
aWYgKGZvbnREYXRhKQorICAgICAgICBtX3Jhbmdlcy5hcHBlbmQoUmFuZ2UgeyAwLCAweDdGRkZG
RkZGLCBXVEY6Om1vdmUoZm9udERhdGEpIH0pOwogfQogCi1jb25zdCBTaW1wbGVGb250RGF0YSog
U2VnbWVudGVkRm9udERhdGE6OnNpbXBsZUZvbnREYXRhRm9yQ2hhcmFjdGVyKFVDaGFyMzIgYykg
Y29uc3QKK0ZvbnRSYW5nZXM6On5Gb250UmFuZ2VzKCkKK3sKK30KKworY29uc3QgU2ltcGxlRm9u
dERhdGEqIEZvbnRSYW5nZXM6OmZvbnREYXRhRm9yQ2hhcmFjdGVyKFVDaGFyMzIgYykgY29uc3QK
IHsKICAgICBmb3IgKGF1dG8mIHJhbmdlIDogbV9yYW5nZXMpIHsKICAgICAgICAgaWYgKHJhbmdl
LmZyb20oKSA8PSBjICYmIGMgPD0gcmFuZ2UudG8oKSkKQEAgLTUwLDE4ICs1NSwxMiBAQCBjb25z
dCBTaW1wbGVGb250RGF0YSogU2VnbWVudGVkRm9udERhdGE6CiAgICAgcmV0dXJuIG51bGxwdHI7
CiB9CiAKLWNvbnN0IFNpbXBsZUZvbnREYXRhJiBTZWdtZW50ZWRGb250RGF0YTo6c2ltcGxlRm9u
dERhdGFGb3JGaXJzdFJhbmdlKCkgY29uc3QKK2NvbnN0IFNpbXBsZUZvbnREYXRhJiBGb250UmFu
Z2VzOjpmb250RGF0YUZvckZpcnN0UmFuZ2UoKSBjb25zdAogewogICAgIHJldHVybiAqbV9yYW5n
ZXNbMF0uZm9udERhdGEoKTsKIH0KIAotYm9vbCBTZWdtZW50ZWRGb250RGF0YTo6aXNDdXN0b21G
b250KCkgY29uc3QKLXsKLSAgICAvLyBBbGwgc2VnbWVudGVkIGZvbnRzIGFyZSBjdXN0b20gZm9u
dHMuCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgU2VnbWVudGVkRm9udERhdGE6OmlzTG9h
ZGluZygpIGNvbnN0Citib29sIEZvbnRSYW5nZXM6OmlzTG9hZGluZygpIGNvbnN0CiB7CiAgICAg
Zm9yIChhdXRvJiByYW5nZSA6IG1fcmFuZ2VzKSB7CiAgICAgICAgIGlmIChyYW5nZS5mb250RGF0
YSgpLT5pc0xvYWRpbmcoKSkKQEAgLTcwLDE2ICs2OSw0IEBAIGJvb2wgU2VnbWVudGVkRm9udERh
dGE6OmlzTG9hZGluZygpIGNvbnMKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgU2VnbWVu
dGVkRm9udERhdGE6OmlzU2VnbWVudGVkKCkgY29uc3QKLXsKLSAgICByZXR1cm4gdHJ1ZTsKLX0K
LQotI2lmbmRlZiBOREVCVUcKLVN0cmluZyBTZWdtZW50ZWRGb250RGF0YTo6ZGVzY3JpcHRpb24o
KSBjb25zdAotewotICAgIHJldHVybiAiW3NlZ21lbnRlZCBmb250XSI7Ci19Ci0jZW5kaWYKLQog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udFJhbmdlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnRSYW5nZXMuaAkocmV2aXNpb24gMTc4MjQ2KQkoZnJvbSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TZWdtZW50ZWRGb250RGF0YS5oOjE3ODI0NikKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRSYW5nZXMuaAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDg5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5LCAyMDE1
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgU2VnbWVudGVkRm9udERhdGFfaAorI2RlZmlu
ZSBTZWdtZW50ZWRGb250RGF0YV9oCisKKyNpbmNsdWRlICJGb250RGF0YS5oIgorI2luY2x1ZGUg
PHd0Zi9UeXBlQ2FzdHMuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgU2ltcGxlRm9udERhdGE7CisKK3N0cnVjdCBGb250RGF0YVJhbmdl
IHsKKyAgICBGb250RGF0YVJhbmdlKFVDaGFyMzIgZnJvbSwgVUNoYXIzMiB0bywgUGFzc1JlZlB0
cjxTaW1wbGVGb250RGF0YT4gZm9udERhdGEpCisgICAgICAgIDogbV9mcm9tKGZyb20pCisgICAg
ICAgICwgbV90byh0bykKKyAgICAgICAgLCBtX2ZvbnREYXRhKGZvbnREYXRhKQorICAgIHsKKyAg
ICB9CisKKyAgICBVQ2hhcjMyIGZyb20oKSBjb25zdCB7IHJldHVybiBtX2Zyb207IH0KKyAgICBV
Q2hhcjMyIHRvKCkgY29uc3QgeyByZXR1cm4gbV90bzsgfQorICAgIFBhc3NSZWZQdHI8U2ltcGxl
Rm9udERhdGE+IGZvbnREYXRhKCkgY29uc3QgeyByZXR1cm4gbV9mb250RGF0YTsgfQorCitwcml2
YXRlOgorICAgIFVDaGFyMzIgbV9mcm9tOworICAgIFVDaGFyMzIgbV90bzsKKyAgICBSZWZQdHI8
U2ltcGxlRm9udERhdGE+IG1fZm9udERhdGE7Cit9OworCitjbGFzcyBTZWdtZW50ZWRGb250RGF0
YSA6IHB1YmxpYyBGb250RGF0YSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8U2Vn
bWVudGVkRm9udERhdGE+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBTZWdtZW50ZWRG
b250RGF0YSk7IH0KKworICAgIHZpcnR1YWwgflNlZ21lbnRlZEZvbnREYXRhKCk7CisKKyAgICB2
b2lkIGFwcGVuZFJhbmdlKGNvbnN0IEZvbnREYXRhUmFuZ2UmIHJhbmdlKSB7IG1fcmFuZ2VzLmFw
cGVuZChyYW5nZSk7IH0KKyAgICB1bnNpZ25lZCBudW1SYW5nZXMoKSBjb25zdCB7IHJldHVybiBt
X3Jhbmdlcy5zaXplKCk7IH0KKyAgICBjb25zdCBGb250RGF0YVJhbmdlJiByYW5nZUF0KHVuc2ln
bmVkIGkpIGNvbnN0IHsgcmV0dXJuIG1fcmFuZ2VzW2ldOyB9CisKKyNpZm5kZWYgTkRFQlVHCisg
ICAgdmlydHVhbCBTdHJpbmcgZGVzY3JpcHRpb24oKSBjb25zdDsKKyNlbmRpZgorCitwcml2YXRl
OgorICAgIFNlZ21lbnRlZEZvbnREYXRhKCk7CisKKyAgICB2aXJ0dWFsIGNvbnN0IFNpbXBsZUZv
bnREYXRhKiBzaW1wbGVGb250RGF0YUZvckNoYXJhY3RlcihVQ2hhcjMyKSBjb25zdCBvdmVycmlk
ZTsKKyAgICB2aXJ0dWFsIGNvbnN0IFNpbXBsZUZvbnREYXRhJiBzaW1wbGVGb250RGF0YUZvckZp
cnN0UmFuZ2UoKSBjb25zdCBvdmVycmlkZTsKKworICAgIHZpcnR1YWwgYm9vbCBpc0N1c3RvbUZv
bnQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNMb2FkaW5nKCkgY29uc3Q7CisgICAgdmly
dHVhbCBib29sIGlzU2VnbWVudGVkKCkgY29uc3Q7CisKKyAgICBSZWZQdHI8U2ltcGxlRm9udERh
dGE+IG1fbnVsbEZvbnREYXRhOworICAgIFZlY3RvcjxGb250RGF0YVJhbmdlLCAxPiBtX3Jhbmdl
czsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworU1BFQ0lBTElaRV9UWVBFX1RSQUlU
U19CRUdJTihXZWJDb3JlOjpTZWdtZW50ZWRGb250RGF0YSkKKyAgICBzdGF0aWMgYm9vbCBpc1R5
cGUoY29uc3QgV2ViQ29yZTo6Rm9udERhdGEmIGZvbnREYXRhKSB7IHJldHVybiBmb250RGF0YS5p
c1NlZ21lbnRlZCgpOyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCisKKyNlbmRpZiAv
LyBTZWdtZW50ZWRGb250RGF0YV9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250UmFuZ2VzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udFJhbmdlcy5oCSh3b3JraW5nIGNvcHkpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb250UmFuZ2VzLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDY3ICsy
Myw1MyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAotI2lmbmRlZiBTZWdtZW50ZWRGb250RGF0
YV9oCi0jZGVmaW5lIFNlZ21lbnRlZEZvbnREYXRhX2gKKyNpZm5kZWYgRm9udFJhbmdlc19oCisj
ZGVmaW5lIEZvbnRSYW5nZXNfaAogCi0jaW5jbHVkZSAiRm9udERhdGEuaCIKKyNpbmNsdWRlICJT
aW1wbGVGb250RGF0YS5oIgogI2luY2x1ZGUgPHd0Zi9UeXBlQ2FzdHMuaD4KICNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2ltcGxlRm9udERh
dGE7Ci0KLXN0cnVjdCBGb250RGF0YVJhbmdlIHsKLSAgICBGb250RGF0YVJhbmdlKFVDaGFyMzIg
ZnJvbSwgVUNoYXIzMiB0bywgUGFzc1JlZlB0cjxTaW1wbGVGb250RGF0YT4gZm9udERhdGEpCi0g
ICAgICAgIDogbV9mcm9tKGZyb20pCi0gICAgICAgICwgbV90byh0bykKLSAgICAgICAgLCBtX2Zv
bnREYXRhKGZvbnREYXRhKQotICAgIHsKLSAgICB9Ci0KLSAgICBVQ2hhcjMyIGZyb20oKSBjb25z
dCB7IHJldHVybiBtX2Zyb207IH0KLSAgICBVQ2hhcjMyIHRvKCkgY29uc3QgeyByZXR1cm4gbV90
bzsgfQotICAgIFBhc3NSZWZQdHI8U2ltcGxlRm9udERhdGE+IGZvbnREYXRhKCkgY29uc3QgeyBy
ZXR1cm4gbV9mb250RGF0YTsgfQotCi1wcml2YXRlOgotICAgIFVDaGFyMzIgbV9mcm9tOwotICAg
IFVDaGFyMzIgbV90bzsKLSAgICBSZWZQdHI8U2ltcGxlRm9udERhdGE+IG1fZm9udERhdGE7Ci19
OwotCi1jbGFzcyBTZWdtZW50ZWRGb250RGF0YSA6IHB1YmxpYyBGb250RGF0YSB7CitjbGFzcyBG
b250UmFuZ2VzIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZWdtZW50ZWRGb250
RGF0YT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFNlZ21lbnRlZEZvbnREYXRhKTsg
fQotCi0gICAgdmlydHVhbCB+U2VnbWVudGVkRm9udERhdGEoKTsKLQotICAgIHZvaWQgYXBwZW5k
UmFuZ2UoY29uc3QgRm9udERhdGFSYW5nZSYgcmFuZ2UpIHsgbV9yYW5nZXMuYXBwZW5kKHJhbmdl
KTsgfQotICAgIHVuc2lnbmVkIG51bVJhbmdlcygpIGNvbnN0IHsgcmV0dXJuIG1fcmFuZ2VzLnNp
emUoKTsgfQotICAgIGNvbnN0IEZvbnREYXRhUmFuZ2UmIHJhbmdlQXQodW5zaWduZWQgaSkgY29u
c3QgeyByZXR1cm4gbV9yYW5nZXNbaV07IH0KLQotI2lmbmRlZiBOREVCVUcKLSAgICB2aXJ0dWFs
IFN0cmluZyBkZXNjcmlwdGlvbigpIGNvbnN0OwotI2VuZGlmCisgICAgc3RydWN0IFJhbmdlIHsK
KyAgICAgICAgUmFuZ2UoVUNoYXIzMiBmcm9tLCBVQ2hhcjMyIHRvLCBSZWZQdHI8U2ltcGxlRm9u
dERhdGE+JiYgZm9udERhdGEpCisgICAgICAgICAgICA6IG1fZnJvbShmcm9tKQorICAgICAgICAg
ICAgLCBtX3RvKHRvKQorICAgICAgICAgICAgLCBtX2ZvbnREYXRhKFdURjo6bW92ZShmb250RGF0
YSkpCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIFVDaGFyMzIgZnJvbSgpIGNvbnN0
IHsgcmV0dXJuIG1fZnJvbTsgfQorICAgICAgICBVQ2hhcjMyIHRvKCkgY29uc3QgeyByZXR1cm4g
bV90bzsgfQorICAgICAgICBSZWZQdHI8U2ltcGxlRm9udERhdGE+IGZvbnREYXRhKCkgY29uc3Qg
eyByZXR1cm4gbV9mb250RGF0YTsgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgVUNoYXIzMiBt
X2Zyb207CisgICAgICAgIFVDaGFyMzIgbV90bzsKKyAgICAgICAgUmVmUHRyPFNpbXBsZUZvbnRE
YXRhPiBtX2ZvbnREYXRhOworICAgIH07CisKKyAgICBGb250UmFuZ2VzKCk7CisgICAgZXhwbGlj
aXQgRm9udFJhbmdlcyhSZWZQdHI8U2ltcGxlRm9udERhdGE+JiYpOworICAgIH5Gb250UmFuZ2Vz
KCk7CisKKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX3Jhbmdlcy5pc0VtcHR5
KCk7IH0KKworICAgIHZvaWQgYXBwZW5kUmFuZ2UoY29uc3QgUmFuZ2UmIHJhbmdlKSB7IG1fcmFu
Z2VzLmFwcGVuZChyYW5nZSk7IH0KKyAgICB1bnNpZ25lZCBzaXplKCkgY29uc3QgeyByZXR1cm4g
bV9yYW5nZXMuc2l6ZSgpOyB9CisgICAgY29uc3QgUmFuZ2UmIHJhbmdlQXQodW5zaWduZWQgaSkg
Y29uc3QgeyByZXR1cm4gbV9yYW5nZXNbaV07IH0KKworICAgIGNvbnN0IFNpbXBsZUZvbnREYXRh
KiBmb250RGF0YUZvckNoYXJhY3RlcihVQ2hhcjMyKSBjb25zdDsKKyAgICBjb25zdCBTaW1wbGVG
b250RGF0YSYgZm9udERhdGFGb3JGaXJzdFJhbmdlKCkgY29uc3Q7CisgICAgYm9vbCBpc0xvYWRp
bmcoKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBTZWdtZW50ZWRGb250RGF0YSgpOwotCi0gICAg
dmlydHVhbCBjb25zdCBTaW1wbGVGb250RGF0YSogc2ltcGxlRm9udERhdGFGb3JDaGFyYWN0ZXIo
VUNoYXIzMikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBjb25zdCBTaW1wbGVGb250RGF0
YSYgc2ltcGxlRm9udERhdGFGb3JGaXJzdFJhbmdlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0KLSAgICB2
aXJ0dWFsIGJvb2wgaXNDdXN0b21Gb250KCkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGlzTG9h
ZGluZygpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBpc1NlZ21lbnRlZCgpIGNvbnN0OwotCi0g
ICAgUmVmUHRyPFNpbXBsZUZvbnREYXRhPiBtX251bGxGb250RGF0YTsKLSAgICBWZWN0b3I8Rm9u
dERhdGFSYW5nZSwgMT4gbV9yYW5nZXM7CisgICAgVmVjdG9yPFJhbmdlLCAxPiBtX3JhbmdlczsK
IH07CiAKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19C
RUdJTihXZWJDb3JlOjpTZWdtZW50ZWRGb250RGF0YSkKLSAgICBzdGF0aWMgYm9vbCBpc1R5cGUo
Y29uc3QgV2ViQ29yZTo6Rm9udERhdGEmIGZvbnREYXRhKSB7IHJldHVybiBmb250RGF0YS5pc1Nl
Z21lbnRlZCgpOyB9Ci1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCit9CiAKLSNlbmRpZiAv
LyBTZWdtZW50ZWRGb250RGF0YV9oCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnRTZWxlY3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRTZWxlY3Rvci5oCShyZXZpc2lvbiAxNzgzNjIpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250U2VsZWN0b3IuaAkod29ya2luZyBj
b3B5KQpAQCAtMjYsMTMgKzI2LDEzIEBACiAjaWZuZGVmIEZvbnRTZWxlY3Rvcl9oCiAjZGVmaW5l
IEZvbnRTZWxlY3Rvcl9oCiAKKyNpbmNsdWRlICJGb250UmFuZ2VzLmgiCiAjaW5jbHVkZSA8d3Rm
L0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgRm9udERhdGE7CiBj
bGFzcyBGb250RGVzY3JpcHRpb247CiBjbGFzcyBGb250U2VsZWN0b3JDbGllbnQ7CiAKQEAgLTQw
LDkgKzQwLDggQEAgY2xhc3MgRm9udFNlbGVjdG9yIDogcHVibGljIFJlZkNvdW50ZWQ8RgogcHVi
bGljOgogICAgIHZpcnR1YWwgfkZvbnRTZWxlY3RvcigpIHsgfQogCi0gICAgLy8gRklYTUU6IFJl
bW92ZSB0aGUgImdldCIgcHJlZml4IGZyb20gdGhlc2UgdHdvIG1lbWJlciBmdW5jdGlvbnMKLSAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8Rm9udERhdGE+IGdldEZvbnREYXRhKGNvbnN0IEZvbnREZXNj
cmlwdGlvbiYsIGNvbnN0IEF0b21pY1N0cmluZyYgZmFtaWx5TmFtZSkgPSAwOwotICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxGb250RGF0YT4gZ2V0RmFsbGJhY2tGb250RGF0YShjb25zdCBGb250RGVz
Y3JpcHRpb24mLCBzaXplX3QpID0gMDsKKyAgICB2aXJ0dWFsIEZvbnRSYW5nZXMgZm9udFJhbmdl
c0ZvckZhbWlseShjb25zdCBGb250RGVzY3JpcHRpb24mLCBjb25zdCBBdG9taWNTdHJpbmcmKSA9
IDA7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFNpbXBsZUZvbnREYXRhPiBmYWxsYmFja0ZvbnRE
YXRhQXQoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgc2l6ZV90KSA9IDA7CiAKICAgICB2aXJ0dWFs
IHNpemVfdCBmYWxsYmFja0ZvbnREYXRhQ291bnQoKSA9IDA7CiAgICAgdmlydHVhbCBib29sIHJl
c29sdmVzRmFtaWx5Rm9yKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYpIGNvbnN0ID0gMDsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NlZ21lbnRlZEZvbnREYXRhLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TZWdtZW50ZWRG
b250RGF0YS5jcHAJKHJldmlzaW9uIDE3ODM2MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1NlZ21lbnRlZEZvbnREYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw4NSAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5LCAyMDE1IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJTZWdtZW50ZWRGb250RGF0
YS5oIgotCi0jaW5jbHVkZSAiU2ltcGxlRm9udERhdGEuaCIKLSNpbmNsdWRlIDx3dGYvQXNzZXJ0
aW9ucy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLVNlZ21lbnRlZEZvbnREYXRhOjpTZWdtZW50ZWRGb250RGF0YSgpCi17Ci0gICAg
Ci19Ci0KLVNlZ21lbnRlZEZvbnREYXRhOjp+U2VnbWVudGVkRm9udERhdGEoKQotewotfQotCi1j
b25zdCBTaW1wbGVGb250RGF0YSogU2VnbWVudGVkRm9udERhdGE6OnNpbXBsZUZvbnREYXRhRm9y
Q2hhcmFjdGVyKFVDaGFyMzIgYykgY29uc3QKLXsKLSAgICBmb3IgKGF1dG8mIHJhbmdlIDogbV9y
YW5nZXMpIHsKLSAgICAgICAgaWYgKHJhbmdlLmZyb20oKSA8PSBjICYmIGMgPD0gcmFuZ2UudG8o
KSkKLSAgICAgICAgICAgIHJldHVybiByYW5nZS5mb250RGF0YSgpLmdldCgpOwotICAgIH0KLSAg
ICByZXR1cm4gbnVsbHB0cjsKLX0KLQotY29uc3QgU2ltcGxlRm9udERhdGEmIFNlZ21lbnRlZEZv
bnREYXRhOjpzaW1wbGVGb250RGF0YUZvckZpcnN0UmFuZ2UoKSBjb25zdAotewotICAgIHJldHVy
biAqbV9yYW5nZXNbMF0uZm9udERhdGEoKTsKLX0KLQotYm9vbCBTZWdtZW50ZWRGb250RGF0YTo6
aXNDdXN0b21Gb250KCkgY29uc3QKLXsKLSAgICAvLyBBbGwgc2VnbWVudGVkIGZvbnRzIGFyZSBj
dXN0b20gZm9udHMuCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgU2VnbWVudGVkRm9udERh
dGE6OmlzTG9hZGluZygpIGNvbnN0Ci17Ci0gICAgZm9yIChhdXRvJiByYW5nZSA6IG1fcmFuZ2Vz
KSB7Ci0gICAgICAgIGlmIChyYW5nZS5mb250RGF0YSgpLT5pc0xvYWRpbmcoKSkKLSAgICAgICAg
ICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wgU2Vn
bWVudGVkRm9udERhdGE6OmlzU2VnbWVudGVkKCkgY29uc3QKLXsKLSAgICByZXR1cm4gdHJ1ZTsK
LX0KLQotI2lmbmRlZiBOREVCVUcKLVN0cmluZyBTZWdtZW50ZWRGb250RGF0YTo6ZGVzY3JpcHRp
b24oKSBjb25zdAotewotICAgIHJldHVybiAiW3NlZ21lbnRlZCBmb250XSI7Ci19Ci0jZW5kaWYK
LQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvU2VnbWVudGVkRm9udERhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9TZWdtZW50ZWRGb250RGF0YS5oCShyZXZpc2lvbiAxNzgzNjIp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TZWdtZW50ZWRGb250RGF0YS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDg5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDgsIDIwMDksIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAot
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lmbmRlZiBTZWdtZW50ZWRGb250
RGF0YV9oCi0jZGVmaW5lIFNlZ21lbnRlZEZvbnREYXRhX2gKLQotI2luY2x1ZGUgIkZvbnREYXRh
LmgiCi0jaW5jbHVkZSA8d3RmL1R5cGVDYXN0cy5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBTaW1wbGVGb250RGF0YTsKLQotc3RydWN0
IEZvbnREYXRhUmFuZ2UgewotICAgIEZvbnREYXRhUmFuZ2UoVUNoYXIzMiBmcm9tLCBVQ2hhcjMy
IHRvLCBQYXNzUmVmUHRyPFNpbXBsZUZvbnREYXRhPiBmb250RGF0YSkKLSAgICAgICAgOiBtX2Zy
b20oZnJvbSkKLSAgICAgICAgLCBtX3RvKHRvKQotICAgICAgICAsIG1fZm9udERhdGEoZm9udERh
dGEpCi0gICAgewotICAgIH0KLQotICAgIFVDaGFyMzIgZnJvbSgpIGNvbnN0IHsgcmV0dXJuIG1f
ZnJvbTsgfQotICAgIFVDaGFyMzIgdG8oKSBjb25zdCB7IHJldHVybiBtX3RvOyB9Ci0gICAgUGFz
c1JlZlB0cjxTaW1wbGVGb250RGF0YT4gZm9udERhdGEoKSBjb25zdCB7IHJldHVybiBtX2ZvbnRE
YXRhOyB9Ci0KLXByaXZhdGU6Ci0gICAgVUNoYXIzMiBtX2Zyb207Ci0gICAgVUNoYXIzMiBtX3Rv
OwotICAgIFJlZlB0cjxTaW1wbGVGb250RGF0YT4gbV9mb250RGF0YTsKLX07Ci0KLWNsYXNzIFNl
Z21lbnRlZEZvbnREYXRhIDogcHVibGljIEZvbnREYXRhIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxTZWdtZW50ZWRGb250RGF0YT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYo
bmV3IFNlZ21lbnRlZEZvbnREYXRhKTsgfQotCi0gICAgdmlydHVhbCB+U2VnbWVudGVkRm9udERh
dGEoKTsKLQotICAgIHZvaWQgYXBwZW5kUmFuZ2UoY29uc3QgRm9udERhdGFSYW5nZSYgcmFuZ2Up
IHsgbV9yYW5nZXMuYXBwZW5kKHJhbmdlKTsgfQotICAgIHVuc2lnbmVkIG51bVJhbmdlcygpIGNv
bnN0IHsgcmV0dXJuIG1fcmFuZ2VzLnNpemUoKTsgfQotICAgIGNvbnN0IEZvbnREYXRhUmFuZ2Um
IHJhbmdlQXQodW5zaWduZWQgaSkgY29uc3QgeyByZXR1cm4gbV9yYW5nZXNbaV07IH0KLQotI2lm
bmRlZiBOREVCVUcKLSAgICB2aXJ0dWFsIFN0cmluZyBkZXNjcmlwdGlvbigpIGNvbnN0OwotI2Vu
ZGlmCi0KLXByaXZhdGU6Ci0gICAgU2VnbWVudGVkRm9udERhdGEoKTsKLQotICAgIHZpcnR1YWwg
Y29uc3QgU2ltcGxlRm9udERhdGEqIHNpbXBsZUZvbnREYXRhRm9yQ2hhcmFjdGVyKFVDaGFyMzIp
IGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgY29uc3QgU2ltcGxlRm9udERhdGEmIHNpbXBs
ZUZvbnREYXRhRm9yRmlyc3RSYW5nZSgpIGNvbnN0IG92ZXJyaWRlOwotCi0gICAgdmlydHVhbCBi
b29sIGlzQ3VzdG9tRm9udCgpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBpc0xvYWRpbmcoKSBj
b25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNTZWdtZW50ZWQoKSBjb25zdDsKLQotICAgIFJlZlB0
cjxTaW1wbGVGb250RGF0YT4gbV9udWxsRm9udERhdGE7Ci0gICAgVmVjdG9yPEZvbnREYXRhUmFu
Z2UsIDE+IG1fcmFuZ2VzOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi1TUEVDSUFM
SVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OlNlZ21lbnRlZEZvbnREYXRhKQotICAgIHN0
YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpGb250RGF0YSYgZm9udERhdGEpIHsgcmV0
dXJuIGZvbnREYXRhLmlzU2VnbWVudGVkKCk7IH0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5E
KCkKLQotI2VuZGlmIC8vIFNlZ21lbnRlZEZvbnREYXRhX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1NpbXBsZUZvbnREYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaW1wbGVGb250RGF0YS5jcHAJKHJldmlzaW9u
IDE3ODM2MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NpbXBsZUZvbnRE
YXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU3LDE2ICsxNTcsNiBAQCBTaW1wbGVGb250RGF0
YTo6flNpbXBsZUZvbnREYXRhKCkKICAgICByZW1vdmVGcm9tU3lzdGVtRmFsbGJhY2tDYWNoZSgp
OwogfQogCi1jb25zdCBTaW1wbGVGb250RGF0YSogU2ltcGxlRm9udERhdGE6OnNpbXBsZUZvbnRE
YXRhRm9yQ2hhcmFjdGVyKFVDaGFyMzIpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHRoaXM7Ci19Ci0K
LWNvbnN0IFNpbXBsZUZvbnREYXRhJiBTaW1wbGVGb250RGF0YTo6c2ltcGxlRm9udERhdGFGb3JG
aXJzdFJhbmdlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gKnRoaXM7Ci19Ci0KIHN0YXRpYyBib29s
IGZpbGxHbHlwaFBhZ2UoR2x5cGhQYWdlJiBwYWdlVG9GaWxsLCB1bnNpZ25lZCBvZmZzZXQsIHVu
c2lnbmVkIGxlbmd0aCwgVUNoYXIqIGJ1ZmZlciwgdW5zaWduZWQgYnVmZmVyTGVuZ3RoLCBjb25z
dCBTaW1wbGVGb250RGF0YSogZm9udERhdGEpCiB7CiAjaWYgRU5BQkxFKFNWR19GT05UUykKQEAg
LTI4OCwxMSArMjc4LDYgQEAgR2x5cGhEYXRhIFNpbXBsZUZvbnREYXRhOjpnbHlwaERhdGFGb3JD
aAogICAgIHJldHVybiBwYWdlLT5nbHlwaERhdGFGb3JDaGFyYWN0ZXIoY2hhcmFjdGVyKTsKIH0K
IAotYm9vbCBTaW1wbGVGb250RGF0YTo6aXNTZWdtZW50ZWQoKSBjb25zdAotewotICAgIHJldHVy
biBmYWxzZTsKLX0KLQogUGFzc1JlZlB0cjxTaW1wbGVGb250RGF0YT4gU2ltcGxlRm9udERhdGE6
OnZlcnRpY2FsUmlnaHRPcmllbnRhdGlvbkZvbnREYXRhKCkgY29uc3QKIHsKICAgICBpZiAoIW1f
ZGVyaXZlZEZvbnREYXRhKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
U2ltcGxlRm9udERhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9TaW1wbGVGb250RGF0YS5oCShyZXZpc2lvbiAxNzgzNjIpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaW1wbGVGb250RGF0YS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yNSw3ICsyNSw2IEBACiAjZGVmaW5lIFNpbXBsZUZvbnREYXRhX2gKIAogI2luY2x1ZGUgIkZv
bnRCYXNlbGluZS5oIgotI2luY2x1ZGUgIkZvbnREYXRhLmgiCiAjaW5jbHVkZSAiRm9udE1ldHJp
Y3MuaCIKICNpbmNsdWRlICJGb250UGxhdGZvcm1EYXRhLmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0
LmgiCkBAIC02OCw3ICs2Nyw3IEBAIHN0cnVjdCBXaWR0aEl0ZXJhdG9yOwogZW51bSBGb250RGF0
YVZhcmlhbnQgeyBBdXRvVmFyaWFudCwgTm9ybWFsVmFyaWFudCwgU21hbGxDYXBzVmFyaWFudCwg
RW1waGFzaXNNYXJrVmFyaWFudCwgQnJva2VuSWRlb2dyYXBoVmFyaWFudCB9OwogZW51bSBQaXRj
aCB7IFVua25vd25QaXRjaCwgRml4ZWRQaXRjaCwgVmFyaWFibGVQaXRjaCB9OwogCi1jbGFzcyBT
aW1wbGVGb250RGF0YSBmaW5hbCA6IHB1YmxpYyBGb250RGF0YSB7CitjbGFzcyBTaW1wbGVGb250
RGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPFNpbXBsZUZvbnREYXRhPiB7CiBwdWJsaWM6CiAgICAg
Y2xhc3MgU1ZHRGF0YSB7CiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtOTIs
NyArOTEsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNpbXBsZUZv
bnREYXRhKFdURjo6bW92ZShzdmdEYXRhKSwgZm9udFNpemUsIHN5bnRoZXRpY0JvbGQsIHN5bnRo
ZXRpY0l0YWxpYykpOwogICAgIH0KIAotICAgIHZpcnR1YWwgflNpbXBsZUZvbnREYXRhKCk7Cisg
ICAgflNpbXBsZUZvbnREYXRhKCk7CiAKICAgICBzdGF0aWMgY29uc3QgU2ltcGxlRm9udERhdGEq
IHN5c3RlbUZhbGxiYWNrKCkgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBTaW1wbGVG
b250RGF0YSo+KC0xKTsgfQogCkBAIC0xNzgsMTIgKzE3NywxMSBAQCBwdWJsaWM6CiAgICAgY29u
c3QgU1ZHRGF0YSogc3ZnRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fc3ZnRGF0YS5nZXQoKTsgfQog
ICAgIGJvb2wgaXNTVkdGb250KCkgY29uc3QgeyByZXR1cm4gISFtX3N2Z0RhdGE7IH0KIAotICAg
IHZpcnR1YWwgYm9vbCBpc0N1c3RvbUZvbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2lz
Q3VzdG9tRm9udDsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0xvYWRpbmcoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBtX2lzTG9hZGluZzsgfQotICAgIHZpcnR1YWwgYm9vbCBpc1NlZ21lbnRlZCgp
IGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNDdXN0b21Gb250KCkgY29uc3QgeyByZXR1cm4g
bV9pc0N1c3RvbUZvbnQ7IH0KKyAgICBib29sIGlzTG9hZGluZygpIGNvbnN0IHsgcmV0dXJuIG1f
aXNMb2FkaW5nOyB9CiAKICNpZm5kZWYgTkRFQlVHCi0gICAgdmlydHVhbCBTdHJpbmcgZGVzY3Jp
cHRpb24oKSBjb25zdCBvdmVycmlkZTsKKyAgICBTdHJpbmcgZGVzY3JpcHRpb24oKSBjb25zdDsK
ICNlbmRpZgogCiAjaWYgVVNFKEFQUEtJVCkKQEAgLTIyOSw5ICsyMjcsNiBAQCBwcml2YXRlOgog
ICAgIFBhc3NSZWZQdHI8U2ltcGxlRm9udERhdGE+IGNyZWF0ZVNjYWxlZEZvbnREYXRhKGNvbnN0
IEZvbnREZXNjcmlwdGlvbiYsIGZsb2F0IHNjYWxlRmFjdG9yKSBjb25zdDsKICAgICBQYXNzUmVm
UHRyPFNpbXBsZUZvbnREYXRhPiBwbGF0Zm9ybUNyZWF0ZVNjYWxlZEZvbnREYXRhKGNvbnN0IEZv
bnREZXNjcmlwdGlvbiYsIGZsb2F0IHNjYWxlRmFjdG9yKSBjb25zdDsKIAotICAgIHZpcnR1YWwg
Y29uc3QgU2ltcGxlRm9udERhdGEqIHNpbXBsZUZvbnREYXRhRm9yQ2hhcmFjdGVyKFVDaGFyMzIp
IGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgY29uc3QgU2ltcGxlRm9udERhdGEmIHNpbXBs
ZUZvbnREYXRhRm9yRmlyc3RSYW5nZSgpIGNvbnN0IG92ZXJyaWRlOwotCiAgICAgdm9pZCByZW1v
dmVGcm9tU3lzdGVtRmFsbGJhY2tDYWNoZSgpOwogCiAjaWYgUExBVEZPUk0oV0lOKQpAQCAtMzcx
LDggKzM2Niw0IEBAIEFMV0FZU19JTkxJTkUgZmxvYXQgU2ltcGxlRm9udERhdGE6OndpZHQKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdl
YkNvcmU6OlNpbXBsZUZvbnREYXRhKQotICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJD
b3JlOjpGb250RGF0YSYgZm9udERhdGEpIHsgcmV0dXJuICFmb250RGF0YS5pc1NlZ21lbnRlZCgp
OyB9Ci1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCi0KICNlbmRpZiAvLyBTaW1wbGVGb250
RGF0YV9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxl
eFRleHRDb250cm9sbGVyQ29yZVRleHQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlckNvcmVUZXh0Lm1tCShy
ZXZpc2lvbiAxNzgzNjIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMv
Q29tcGxleFRleHRDb250cm9sbGVyQ29yZVRleHQubW0JKHdvcmtpbmcgY29weSkKQEAgLTYyLDcg
KzYyLDcgQEAgLSAoaWQpaW5pdFdpdGhGb250Oihjb25zdCBXZWJDb3JlOjpGb250KgogCiAgICAg
Ly8gQnkgdGhlIHRpbWUgYSBXZWJDYXNjYWRlTGlzdCBpcyB1c2VkLCB0aGUgRm9udCBoYXMgYWxy
ZWFkeSBiZWVuIGFza2VkIHRvIHJlYWxpemUgYWxsIG9mIGl0cwogICAgIC8vIEZvbnREYXRhLCBz
byB0aGlzIGxvb3AgZG9lcyBub3QgaGl0IHRoZSBGb250Q2FjaGUuCi0gICAgd2hpbGUgKF9mb250
LT5mb250RGF0YUF0KF9jb3VudCkpCisgICAgd2hpbGUgKCFfZm9udC0+ZmFsbGJhY2tSYW5nZXNB
dChfY291bnQpLmlzRW1wdHkoKSkKICAgICAgICAgX2NvdW50Kys7CiAKICAgICByZXR1cm4gc2Vs
ZjsKQEAgLTgyLDkgKzgyLDkgQEAgLSAoaWQpb2JqZWN0QXRJbmRleDooTlNVSW50ZWdlcilpbmRl
eAogICAgIH0gZWxzZQogICAgICAgICBfZm9udERlc2NyaXB0b3JzLmdyb3coaW5kZXggKyAxKTsK
IAotICAgIGNvbnN0IFdlYkNvcmU6OlNpbXBsZUZvbnREYXRhKiBzaW1wbGVGb250RGF0YSA9IF9m
b250LT5mb250RGF0YUF0KGluZGV4KS0+c2ltcGxlRm9udERhdGFGb3JDaGFyYWN0ZXIoX2NoYXJh
Y3Rlcik7CisgICAgY29uc3QgV2ViQ29yZTo6U2ltcGxlRm9udERhdGEqIHNpbXBsZUZvbnREYXRh
ID0gX2ZvbnQtPmZhbGxiYWNrUmFuZ2VzQXQoaW5kZXgpLmZvbnREYXRhRm9yQ2hhcmFjdGVyKF9j
aGFyYWN0ZXIpOwogICAgIGlmICghc2ltcGxlRm9udERhdGEpCi0gICAgICAgIHNpbXBsZUZvbnRE
YXRhID0gJl9mb250LT5mb250RGF0YUF0KGluZGV4KS0+c2ltcGxlRm9udERhdGFGb3JGaXJzdFJh
bmdlKCk7CisgICAgICAgIHNpbXBsZUZvbnREYXRhID0gJl9mb250LT5mYWxsYmFja1Jhbmdlc0F0
KGluZGV4KS5mb250RGF0YUZvckZpcnN0UmFuZ2UoKTsKICAgICBmb250RGVzY3JpcHRvciA9IENU
Rm9udENvcHlGb250RGVzY3JpcHRvcihzaW1wbGVGb250RGF0YS0+cGxhdGZvcm1EYXRhKCkuY3RG
b250KCkpOwogICAgIF9mb250RGVzY3JpcHRvcnNbaW5kZXhdID0gYWRvcHRDRihmb250RGVzY3Jp
cHRvcik7CiAgICAgcmV0dXJuIChpZClmb250RGVzY3JpcHRvcjsKQEAgLTIwMSw5ICsyMDEsOSBA
QCB2b2lkIENvbXBsZXhUZXh0Q29udHJvbGxlcjo6Y29sbGVjdENvbXBsCiAgICAgICAgIGlzU3lz
dGVtRmFsbGJhY2sgPSB0cnVlOwogCiAgICAgICAgIFUxNl9HRVQoY3AsIDAsIDAsIGxlbmd0aCwg
YmFzZUNoYXJhY3Rlcik7Ci0gICAgICAgIGZvbnREYXRhID0gbV9mb250LmZvbnREYXRhQXQoMCkt
PnNpbXBsZUZvbnREYXRhRm9yQ2hhcmFjdGVyKGJhc2VDaGFyYWN0ZXIpOworICAgICAgICBmb250
RGF0YSA9IG1fZm9udC5mYWxsYmFja1Jhbmdlc0F0KDApLmZvbnREYXRhRm9yQ2hhcmFjdGVyKGJh
c2VDaGFyYWN0ZXIpOwogICAgICAgICBpZiAoIWZvbnREYXRhKQotICAgICAgICAgICAgZm9udERh
dGEgPSAmbV9mb250LmZvbnREYXRhQXQoMCktPnNpbXBsZUZvbnREYXRhRm9yRmlyc3RSYW5nZSgp
OworICAgICAgICAgICAgZm9udERhdGEgPSAmbV9mb250LmZhbGxiYWNrUmFuZ2VzQXQoMCkuZm9u
dERhdGFGb3JGaXJzdFJhbmdlKCk7CiAKICAgICAgICAgUmV0YWluUHRyPFdlYkNhc2NhZGVMaXN0
PiBjYXNjYWRlTGlzdCA9IGFkb3B0TlMoW1tXZWJDYXNjYWRlTGlzdCBhbGxvY10gaW5pdFdpdGhG
b250OiZtX2ZvbnQgY2hhcmFjdGVyOmJhc2VDaGFyYWN0ZXJdKTsKIApAQCAtMjU2LDkgKzI1Niw5
IEBAIHZvaWQgQ29tcGxleFRleHRDb250cm9sbGVyOjpjb2xsZWN0Q29tcGwKICAgICAgICAgICAg
IFJldGFpblB0cjxDRlR5cGVSZWY+IHJ1bkZvbnRFcXVhbGl0eU9iamVjdCA9IEZvbnRQbGF0Zm9y
bURhdGE6Om9iamVjdEZvckVxdWFsaXR5Q2hlY2socnVuRm9udCk7CiAgICAgICAgICAgICBpZiAo
IUNGRXF1YWwocnVuRm9udEVxdWFsaXR5T2JqZWN0LmdldCgpLCBmb250RGF0YS0+cGxhdGZvcm1E
YXRhKCkub2JqZWN0Rm9yRXF1YWxpdHlDaGVjaygpLmdldCgpKSkgewogICAgICAgICAgICAgICAg
IC8vIEJlZ2luIHRyeWluZyB0byBzZWUgaWYgcnVuRm9udCBtYXRjaGVzIGFueSBvZiB0aGUgZm9u
dHMgaW4gdGhlIGZhbGxiYWNrIGxpc3QuCi0gICAgICAgICAgICAgICAgdW5zaWduZWQgaSA9IDA7
Ci0gICAgICAgICAgICAgICAgZm9yIChjb25zdCBGb250RGF0YSogY2FuZGlkYXRlRm9udERhdGEg
PSBtX2ZvbnQuZm9udERhdGFBdChpKTsgY2FuZGlkYXRlRm9udERhdGE7IGNhbmRpZGF0ZUZvbnRE
YXRhID0gbV9mb250LmZvbnREYXRhQXQoKytpKSkgewotICAgICAgICAgICAgICAgICAgICBydW5G
b250RGF0YSA9IGNhbmRpZGF0ZUZvbnREYXRhLT5zaW1wbGVGb250RGF0YUZvckNoYXJhY3Rlcihi
YXNlQ2hhcmFjdGVyKTsKKworICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7ICFt
X2ZvbnQuZmFsbGJhY2tSYW5nZXNBdChpKS5pc0VtcHR5KCk7ICsraSkgeworICAgICAgICAgICAg
ICAgICAgICBydW5Gb250RGF0YSA9IG1fZm9udC5mYWxsYmFja1Jhbmdlc0F0KGkpLmZvbnREYXRh
Rm9yQ2hhcmFjdGVyKGJhc2VDaGFyYWN0ZXIpOwogICAgICAgICAgICAgICAgICAgICBpZiAoIXJ1
bkZvbnREYXRhKQogICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAg
ICAgICAgICAgIFJldGFpblB0cjxDRlR5cGVSZWY+IHJ1bkZvbnRFcXVhbGl0eU9iamVjdCA9IHJ1
bkZvbnREYXRhLT5wbGF0Zm9ybURhdGEoKS5vYmplY3RGb3JFcXVhbGl0eUNoZWNrKCk7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udENvbXBsZXhUZXh0TWFj
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMv
Rm9udENvbXBsZXhUZXh0TWFjLmNwcAkocmV2aXNpb24gMTc4MzYyKQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDb21wbGV4VGV4dE1hYy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEzOCw5ICsxMzgsOCBAQCBjb25zdCBTaW1wbGVGb250RGF0YSogRm9udDo6Zm9u
dERhdGFGb3JDCiAKICAgICBib29sIHRyaWVkQmFzZUNoYXJhY3RlckZvbnREYXRhID0gZmFsc2U7
CiAKLSAgICB1bnNpZ25lZCBpID0gMDsKLSAgICBmb3IgKGNvbnN0IEZvbnREYXRhKiBmb250RGF0
YSA9IGZvbnREYXRhQXQoMCk7IGZvbnREYXRhOyBmb250RGF0YSA9IGZvbnREYXRhQXQoKytpKSkg
ewotICAgICAgICBjb25zdCBTaW1wbGVGb250RGF0YSogc2ltcGxlRm9udERhdGEgPSBmb250RGF0
YS0+c2ltcGxlRm9udERhdGFGb3JDaGFyYWN0ZXIoYmFzZUNoYXJhY3Rlcik7CisgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgIWZhbGxiYWNrUmFuZ2VzQXQoaSkuaXNFbXB0eSgpOyArK2kpIHsKKyAg
ICAgICAgY29uc3QgU2ltcGxlRm9udERhdGEqIHNpbXBsZUZvbnREYXRhID0gZmFsbGJhY2tSYW5n
ZXNBdChpKS5mb250RGF0YUZvckNoYXJhY3RlcihiYXNlQ2hhcmFjdGVyKTsKICAgICAgICAgaWYg
KCFzaW1wbGVGb250RGF0YSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogI2lmIFBMQVRGT1JNKElP
UykK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>244519</attachid>
            <date>2015-01-13 08:53:24 -0800</date>
            <delta_ts>2015-01-13 11:51:13 -0800</delta_ts>
            <desc>patch</desc>
            <filename>fontdata-devirtualize-4.patch</filename>
            <type>text/plain</type>
            <size>73379</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3ODM2MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwMCBAQAorMjAxNS0wMS0xMyAgQW50dGkg
S29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAgRGV2aXJ0dWFsaXplIEZvbnRE
YXRhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDAz
OTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlz
IHBhdGNoIHJlbW92ZXMgdGhlIEZvbnREYXRhIGJhc2UgY2xhc3MgYW5kIHR1cm5zIFNlZ21lbnRl
ZEZvbnREYXRhIGludG8gYSBub24tdmlydHVhbCBGb250UmFuZ2VzIHR5cGUuCisKKyAgICAgICAg
U2ltcGxlRm9udERhdGEgcmVtYWlucyBhcyBpcyAod2l0aG91dCB0aGUgYmFzZSkgYW5kIGl0IGNh
biBiZSByZW5hbWVkIGxhdGVyIHRvIHNvbWV0aGluZyBtb3JlIHNlbnNpYmxlLgorCisgICAgICAg
ICogV2ViQ29yZS5leHAuaW46CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIGNzcy9DU1NGb250U2VsZWN0b3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTRm9udFNlbGVjdG9yOjpmb250UmFuZ2VzRm9yRmFtaWx5KToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU0ZvbnRTZWxlY3Rvcjo6ZmFsbGJhY2tGb250RGF0YUF0KToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU0ZvbnRTZWxlY3Rvcjo6Z2V0Rm9udERhdGEpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6Q1NTRm9udFNlbGVjdG9yOjpnZXRGYWxsYmFja0ZvbnREYXRhKTogRGVsZXRlZC4K
KyAgICAgICAgKiBjc3MvQ1NTRm9udFNlbGVjdG9yLmg6CisgICAgICAgICogY3NzL0NTU1NlZ21l
bnRlZEZvbnRGYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlZ21lbnRlZEZvbnRGYWNl
OjpwcnVuZVRhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OmFwcGVuZEZvbnREYXRhV2l0aEludmFs
aWRVbmljb2RlUmFuZ2VJZkxvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VnbWVudGVk
Rm9udEZhY2U6OmZvbnRSYW5nZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VnbWVudGVkRm9u
dEZhY2U6OmxvYWRGb250KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlZ21lbnRlZEZvbnRGYWNl
OjpnZXRGb250RGF0YSk6IERlbGV0ZWQuCisgICAgICAgICogY3NzL0NTU1NlZ21lbnRlZEZvbnRG
YWNlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oOgorICAgICAgICAoV2Vi
Q29yZTo6Rm9udDo6ZmFsbGJhY2tSYW5nZXNBdCk6CisgICAgICAgIChXZWJDb3JlOjpGb250Ojpm
b250RGF0YUF0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250RGF0
YS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udERhdGEuaDog
UmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250R2x5cGhzLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZvbnRHbHlwaHM6OkZvbnRHbHlwaHMpOgorICAgICAgICAoV2ViQ29y
ZTo6Rm9udEdseXBoczo6ZGV0ZXJtaW5lUGl0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udEds
eXBoczo6aXNMb2FkaW5nQ3VzdG9tRm9udHMpOgorICAgICAgICAoV2ViQ29yZTo6cmVhbGl6ZU5l
eHRGYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpGb250R2x5cGhzOjpyZWFsaXplRmFsbGJh
Y2tSYW5nZXNBdCk6CisgICAgICAgIChXZWJDb3JlOjpGb250R2x5cGhzOjpnbHlwaERhdGFGb3JT
eXN0ZW1GYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpGb250R2x5cGhzOjpnbHlwaERhdGFG
b3JWYXJpYW50KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRHbHlwaHM6OmdseXBoRGF0YUZvck5v
cm1hbFZhcmlhbnQpOgorICAgICAgICAoV2ViQ29yZTo6Z2x5cGhQYWdlRnJvbUZvbnRSYW5nZXMp
OgorICAgICAgICAoV2ViQ29yZTo6Rm9udEdseXBoczo6Z2x5cGhEYXRhRm9yQ2hhcmFjdGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OnJlYWxpemVOZXh0RmFtaWx5KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkZvbnRHbHlwaHM6OnJlYWxpemVGb250RGF0YUF0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OmdseXBoUGFnZUZyb21Gb250RGF0YSk6IERlbGV0ZWQuCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udEdseXBocy5oOgorICAgICAgICAoV2ViQ29yZTo6Rm9udEds
eXBoczo6cHJpbWFyeVNpbXBsZUZvbnREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9Gb250UmFuZ2VzLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvU2VnbWVudGVkRm9udERhdGEuY3BwLgorICAgICAgICAoV2ViQ29yZTo6Rm9udFJhbmdl
czo6Rm9udFJhbmdlcyk6CisgICAgICAgIChXZWJDb3JlOjpGb250UmFuZ2VzOjp+Rm9udFJhbmdl
cyk6CisgICAgICAgIChXZWJDb3JlOjpGb250UmFuZ2VzOjpmb250RGF0YUZvckNoYXJhY3Rlcik6
CisgICAgICAgIChXZWJDb3JlOjpGb250UmFuZ2VzOjpmb250RGF0YUZvckZpcnN0UmFuZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6Rm9udFJhbmdlczo6aXNMb2FkaW5nKToKKyAgICAgICAgKFdlYkNv
cmU6OlNlZ21lbnRlZEZvbnREYXRhOjpTZWdtZW50ZWRGb250RGF0YSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpTZWdtZW50ZWRGb250RGF0YTo6flNlZ21lbnRlZEZvbnREYXRhKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNlZ21lbnRlZEZvbnREYXRhOjpzaW1wbGVGb250RGF0
YUZvckNoYXJhY3Rlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTZWdtZW50ZWRGb250
RGF0YTo6c2ltcGxlRm9udERhdGFGb3JGaXJzdFJhbmdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlNlZ21lbnRlZEZvbnREYXRhOjppc0N1c3RvbUZvbnQpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6U2VnbWVudGVkRm9udERhdGE6OmlzTG9hZGluZyk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpTZWdtZW50ZWRGb250RGF0YTo6aXNTZWdtZW50ZWQpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6U2VnbWVudGVkRm9udERhdGE6OmRlc2NyaXB0aW9uKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250UmFuZ2VzLmg6IENvcGllZCBmcm9t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NlZ21lbnRlZEZvbnREYXRhLmguCisg
ICAgICAgIChXZWJDb3JlOjpGb250UmFuZ2VzOjpSYW5nZTo6UmFuZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6Rm9udFJhbmdlczo6UmFuZ2U6OmZyb20pOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFJh
bmdlczo6UmFuZ2U6OnRvKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRSYW5nZXM6OlJhbmdlOjpm
b250RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGb250UmFuZ2VzOjppc0VtcHR5KToKKyAgICAg
ICAgKFdlYkNvcmU6OkZvbnRSYW5nZXM6OmFwcGVuZFJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6
OkZvbnRSYW5nZXM6OnNpemUpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFJhbmdlczo6cmFuZ2VB
dCk6CisgICAgICAgIChXZWJDb3JlOjpGb250RGF0YVJhbmdlOjpGb250RGF0YVJhbmdlKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkZvbnREYXRhUmFuZ2U6OmZyb20pOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6Rm9udERhdGFSYW5nZTo6dG8pOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6Rm9udERhdGFSYW5nZTo6Zm9udERhdGEpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6U2VnbWVudGVkRm9udERhdGE6OmNyZWF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpTZWdtZW50ZWRGb250RGF0YTo6YXBwZW5kUmFuZ2UpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6U2VnbWVudGVkRm9udERhdGE6Om51bVJhbmdlcyk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpTZWdtZW50ZWRGb250RGF0YTo6cmFuZ2VBdCk6IERlbGV0ZWQuCisgICAgICAg
IChpc1R5cGUpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRTZWxl
Y3Rvci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1NlZ21lbnRlZEZvbnREYXRhLmNw
cDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9TZWdtZW50ZWRGb250RGF0
YS5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1NpbXBsZUZvbnREYXRh
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUZvbnREYXRhOjpzaW1wbGVGb250RGF0YUZv
ckNoYXJhY3Rlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVGb250RGF0YTo6
c2ltcGxlRm9udERhdGFGb3JGaXJzdFJhbmdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlNpbXBsZUZvbnREYXRhOjppc1NlZ21lbnRlZCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvU2ltcGxlRm9udERhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUZv
bnREYXRhOjppc0N1c3RvbUZvbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlRm9udERhdGE6
OmlzTG9hZGluZyk6CisgICAgICAgIChpc1R5cGUpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXJDb3JlVGV4dC5tbToKKyAgICAg
ICAgKC1bV2ViQ2FzY2FkZUxpc3QgaW5pdFdpdGhGb250OmNoYXJhY3RlcjpdKToKKyAgICAgICAg
KC1bV2ViQ2FzY2FkZUxpc3Qgb2JqZWN0QXRJbmRleDpdKToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bXBsZXhUZXh0Q29udHJvbGxlcjo6Y29sbGVjdENvbXBsZXhUZXh0UnVuc0ZvckNoYXJhY3RlcnMp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q29tcGxleFRleHRNYWMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Rm9udDo6Zm9udERhdGFGb3JDb21iaW5pbmdDaGFyYWN0ZXJT
ZXF1ZW5jZSk6CisKIDIwMTUtMDEtMTMgIFNoaXZha3VtYXIgSk0gIDxzaGl2YS5qbUBzYW1zdW5n
LmNvbT4KIAogICAgICAgICBGaXggRGVidWcgQnVpbGQgRXJyb3IgaW4gV2ViY29yZSBtb2R1bGUu
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTc4MzYyKQorKysgU291cmNlL1dl
YkNvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTIwNTEsMTIgKzIwNTEsMTIg
QEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0U2l6ZS5j
cHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L0ZvbnRDYWNoZS5jcHAKLSAgICBwbGF0Zm9ybS9ncmFwaGljcy9Gb250RGF0YS5jcHAKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9Gb250RGVzY3JpcHRpb24uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udEZhc3RQYXRoLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRGZWF0dXJlU2V0
dGluZ3MuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEdlbmVyaWNGYW1pbGllcy5jcHAK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Gb250R2x5cGhzLmNwcAorICAgIHBsYXRmb3JtL2dyYXBo
aWNzL0ZvbnRSYW5nZXMuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR2VuZXJhdGVkSW1hZ2Uu
Y3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR2VvbWV0cnlVdGlsaXRpZXMuY3BwCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhZGllbnQuY3BwCkBAIC0yMDg0LDcgKzIwODQsNiBAQCBzZXQoV2Vi
Q29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmNwcAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL1JvdW5kZWRSZWN0LmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1NWR0ds
eXBoLmNwcAotICAgIHBsYXRmb3JtL2dyYXBoaWNzL1NlZ21lbnRlZEZvbnREYXRhLmNwcAogICAg
IHBsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
U2ltcGxlRm9udERhdGEuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvU3RyaW5nVHJ1bmNhdG9y
LmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHJldmlzaW9uIDE3ODM2MikKKysrIFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCSh3b3JraW5nIGNvcHkpCkBAIC03NSw3ICs3NSw3IEBA
IF9fWk43V2ViQ29yZTEwQ3JlZGVudGlhbDI4ZW5jb2RpbmdSZXF1aXIKIF9fWk43V2ViQ29yZTEw
Q3JlZGVudGlhbEMxRVAxNU5TVVJMQ3JlZGVudGlhbAogX19aTjdXZWJDb3JlMTBGbG9hdFBvaW50
QzFFUks3Q0dQb2ludAogX19aTjdXZWJDb3JlMTBGbG9hdFBvaW50QzFFUktOU184SW50UG9pbnRF
Ci1fX1pON1dlYkNvcmUxMEZvbnRHbHlwaHMxN3JlYWxpemVGb250RGF0YUF0RVJLTlNfMTVGb250
RGVzY3JpcHRpb25FagorX19aTjdXZWJDb3JlMTBGb250R2x5cGhzMjNyZWFsaXplRmFsbGJhY2tS
YW5nZXNBdEVSS05TXzE1Rm9udERlc2NyaXB0aW9uRWoKIF9fWk43V2ViQ29yZTEwRm9udEdseXBo
c0QxRXYKIF9fWk43V2ViQ29yZTEwSlNEb2N1bWVudDZzX2luZm9FCiBfX1pON1dlYkNvcmUxMEpT
RG9jdW1lbnQ5dG9XcmFwcGVkRU4zSlNDN0pTVmFsdWVFCkBAIC00NTksNiArNDU5LDcgQEAgX19a
TjdXZWJDb3JlMTRTZWN1cml0eVBvbGljeTIyZ2VuZXJhdGVSZQogX19aTjdXZWJDb3JlMTRTZWN1
cml0eVBvbGljeTI3cmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RzRXYKIF9fWk43V2ViQ29yZTE0
U2VjdXJpdHlQb2xpY3kyOWFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5RVJLTlNfMTRTZWN1
cml0eU9yaWdpbkVSS04zV1RGNlN0cmluZ0VTN19iCiBfX1pON1dlYkNvcmUxNFNlY3VyaXR5UG9s
aWN5MzJyZW1vdmVPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeUVSS05TXzE0U2VjdXJpdHlPcmln
aW5FUktOM1dURjZTdHJpbmdFUzdfYgorX19aTjdXZWJDb3JlMTRTaW1wbGVGb250RGF0YUQxRXYK
IF9fWk43V2ViQ29yZTE0U3ViZnJhbWVMb2FkZXIxMmFsbG93UGx1Z2luc0VOU18yOFJlYXNvbkZv
ckNhbGxpbmdBbGxvd1BsdWdpbnNFCiBfX1pON1dlYkNvcmUxNFRpbGVDb250cm9sbGVyMTRzZXRU
aWxlc09wYXF1ZUViCiBfX1pON1dlYkNvcmUxNFRpbGVDb250cm9sbGVyMTVjb250YWluZXJMYXll
cnNFdgpAQCAtMTU4NCw2ICsxNTg1LDggQEAgX19aTkszV1RGNlN0cmluZzE0Y3JlYXRlQ0ZTdHJp
bmdFdgogX19aTks3V2ViQ29yZTEwQ3JlZGVudGlhbDEybnNDcmVkZW50aWFsRXYKIF9fWk5LN1dl
YkNvcmUxMENyZWRlbnRpYWw3aXNFbXB0eUV2CiBfX1pOSzdXZWJDb3JlMTBGbG9hdFBvaW50Y3Y3
Q0dQb2ludEV2CitfX1pOSzdXZWJDb3JlMTBGb250UmFuZ2VzMjBmb250RGF0YUZvckNoYXJhY3Rl
ckVpCitfX1pOSzdXZWJDb3JlMTBGb250UmFuZ2VzMjFmb250RGF0YUZvckZpcnN0UmFuZ2VFdgog
X19aTks3V2ViQ29yZTEwTGF5b3V0UmVjdDhjb250YWluc0VSS1MwXwogX19aTks3V2ViQ29yZTEw
UGx1Z2luRGF0YTE2c3VwcG9ydHNNaW1lVHlwZUVSS04zV1RGNlN0cmluZ0VOUzBfMThBbGxvd2Vk
UGx1Z2luVHlwZXNFCiBfX1pOSzdXZWJDb3JlMTBSZW5kZXJUZXh0MTZmaXJzdFJ1bkxvY2F0aW9u
RXYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4
cHJvagkocmV2aXNpb24gMTc4MzYyKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9q
L1dlYkNvcmUudmN4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNzk4MCwxMyArNzk4MCwxMyBAQAog
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcRmxvYXRTaXplLmNw
cCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXEZvbnQu
Y3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcRm9u
dENhY2hlLmNwcCIgLz4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBo
aWNzXEZvbnREYXRhLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3Jt
XGdyYXBoaWNzXEZvbnREZXNjcmlwdGlvbi5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxwbGF0Zm9ybVxncmFwaGljc1xGb250R2VuZXJpY0ZhbWlsaWVzLmNwcCIgLz4KICAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXEZvbnRHbHlwaHMuY3BwIiAv
PgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcRm9udEZhc3RQ
YXRoLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNz
XEZvbnRGZWF0dXJlU2V0dGluZ3MuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
cGxhdGZvcm1cZ3JhcGhpY3NcRm9udFBsYXRmb3JtRGF0YS5jcHAiIC8+CisgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xGb250UmFuZ2VzLmNwcCIgLz4KICAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXEdlb21ldHJ5VXRpbGl0aWVz
LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXEdl
bmVyYXRlZEltYWdlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3Jt
XGdyYXBoaWNzXEdyYWRpZW50LmNwcCIgLz4KQEAgLTgwMjAsNyArODAyMCw2IEBACiAgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xQbGF0Zm9ybVRpbWVSYW5nZXMu
Y3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcUmVn
aW9uLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNz
XFJvdW5kZWRSZWN0LmNwcCIgLz4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3Jt
XGdyYXBoaWNzXFNlZ21lbnRlZEZvbnREYXRhLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXFNoYWRvd0JsdXIuY3BwIiAvPgogICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcU2ltcGxlRm9udERhdGEuY3BwIiAvPgog
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcVGV4dFJ1bi5jcHAi
IC8+CkBAIC0xOTQ2OSwxMyArMTk0NjgsMTMgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XHBsYXRmb3JtXGdyYXBoaWNzXEZsb2F0U2l6ZUhhc2guaCIgLz4KICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXEZvbnQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXEZvbnRDYWNoZS5oIiAvPgotICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcRm9udERhdGEuaCIgLz4KICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXEZvbnREZXNjcmlwdGlvbi5oIiAv
PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcRm9udEdlbmVy
aWNGYW1pbGllcy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3Jh
cGhpY3NcRm9udEdseXBocy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZv
cm1cZ3JhcGhpY3NcRm9udEZlYXR1cmVTZXR0aW5ncy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcRm9udE1ldHJpY3MuaCIgLz4KICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXEZvbnRQbGF0Zm9ybURhdGEuaCIgLz4K
KyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXEZvbnRSYW5nZXMu
aCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXEZvbnRS
ZW5kZXJpbmdNb2RlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxn
cmFwaGljc1xGb250U2VsZWN0b3IuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBs
YXRmb3JtXGdyYXBoaWNzXEZvbnRTbW9vdGhpbmdNb2RlLmgiIC8+CkBAIC0xOTUxOCw3ICsxOTUx
Nyw2IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xQbGF0
Zm9ybVRpbWVSYW5nZXMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3Jt
XGdyYXBoaWNzXFJlZ2lvbi5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZv
cm1cZ3JhcGhpY3NcUm91bmRlZFJlY3QuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XHBsYXRmb3JtXGdyYXBoaWNzXFNlZ21lbnRlZEZvbnREYXRhLmgiIC8+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xTaGFkb3dCbHVyLmgiIC8+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xTaW1wbGVGb250RGF0YS5oIiAv
PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcVGV4dFJ1bi5o
IiAvPgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkocmV2aXNpb24gMTc4MzYyKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMzUyLDEwICsxMzUy
LDggQEAKIAkJMzcxQTY3Q0IxMUM2QzdEQjAwMDQ3QjhCIC8qIEh5cGhlbmF0aW9uQ0YuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzcxQTY3Q0ExMUM2
QzdEQjAwMDQ3QjhCIC8qIEh5cGhlbmF0aW9uQ0YuY3BwICovOyB9OwogCQkzNzFFNjVDQzEzNjYx
RURDMDBCRUVEQjAgLyogUGFnZVNlcmlhbGl6ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3MUU2NUNCMTM2NjFFREMwMEJFRURCMCAvKiBQYWdlU2Vy
aWFsaXplci5oICovOyB9OwogCQkzNzFFNjVDRTEzNjYxRUVEMDBCRUVEQjAgLyogUGFnZVNlcmlh
bGl6ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MzcxRTY1Q0QxMzY2MUVFRDAwQkVFREIwIC8qIFBhZ2VTZXJpYWxpemVyLmNwcCAqLzsgfTsKLQkJ
MzcxRjRGNDAwRDI1QjlBRjAwRUNFMEQ1IC8qIEZvbnREYXRhLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzFGNEYzRTBEMjVCOUFGMDBFQ0UwRDUgLyog
Rm9udERhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwotCQkzNzFGNEY0MTBEMjVCOUFGMDBFQ0UwRDUgLyogRm9udERhdGEuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzcxRjRGM0YwRDI1QjlBRjAwRUNF
MEQ1IC8qIEZvbnREYXRhLmNwcCAqLzsgfTsKLQkJMzcxRjRGRkMwRDI1RTdGMzAwRUNFMEQ1IC8q
IFNlZ21lbnRlZEZvbnREYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAzNzFGNEZGQTBEMjVFN0YzMDBFQ0UwRDUgLyogU2VnbWVudGVkRm9udERhdGEu
aCAqLzsgfTsKLQkJMzcxRjRGRkQwRDI1RTdGMzAwRUNFMEQ1IC8qIFNlZ21lbnRlZEZvbnREYXRh
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3MUY0
RkZCMEQyNUU3RjMwMEVDRTBENSAvKiBTZWdtZW50ZWRGb250RGF0YS5jcHAgKi87IH07CisJCTM3
MUY0RkZDMEQyNUU3RjMwMEVDRTBENSAvKiBGb250UmFuZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzFGNEZGQTBEMjVFN0YzMDBFQ0UwRDUgLyog
Rm9udFJhbmdlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTM3MUY0RkZEMEQyNUU3RjMwMEVDRTBENSAvKiBGb250UmFuZ2VzLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3MUY0RkZCMEQyNUU3RjMw
MEVDRTBENSAvKiBGb250UmFuZ2VzLmNwcCAqLzsgfTsKIAkJMzcxRjUxQTEwRDI2MkZBMDAwRUNF
MEQ1IC8qIENTU1NlZ21lbnRlZEZvbnRGYWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAzNzFGNTE5RjBEMjYyRkEwMDBFQ0UwRDUgLyogQ1NTU2VnbWVu
dGVkRm9udEZhY2UuaCAqLzsgfTsKIAkJMzcxRjUxQTIwRDI2MkZBMDAwRUNFMEQ1IC8qIENTU1Nl
Z21lbnRlZEZvbnRGYWNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDM3MUY1MUEwMEQyNjJGQTAwMEVDRTBENSAvKiBDU1NTZWdtZW50ZWRGb250RmFj
ZS5jcHAgKi87IH07CiAJCTM3MUY1M0U5MEQyNzA0RjkwMEVDRTBENSAvKiBDU1NVbmljb2RlUmFu
Z2VWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MzcxRjUzRTcwRDI3MDRGOTAwRUNFMEQ1IC8qIENTU1VuaWNvZGVSYW5nZVZhbHVlLmggKi87IH07
CkBAIC04MzkwLDEwICs4Mzg4LDggQEAKIAkJMzcxQTY3Q0ExMUM2QzdEQjAwMDQ3QjhCIC8qIEh5
cGhlbmF0aW9uQ0YuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSHlw
aGVuYXRpb25DRi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3MUU2NUNCMTM2
NjFFREMwMEJFRURCMCAvKiBQYWdlU2VyaWFsaXplci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBQYWdlU2VyaWFsaXplci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkzNzFFNjVDRDEzNjYxRUVEMDBCRUVEQjAgLyogUGFnZVNlcmlhbGl6ZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGFnZVNlcmlhbGl6ZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQkzNzFGNEYzRTBEMjVCOUFGMDBFQ0UwRDUgLyogRm9udERh
dGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRm9udERhdGEuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzcxRjRGM0YwRDI1QjlBRjAwRUNFMEQ1IC8qIEZvbnRE
YXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvbnREYXRhLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzcxRjRGRkEwRDI1RTdGMzAwRUNFMEQ1
IC8qIFNlZ21lbnRlZEZvbnREYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFNlZ21lbnRlZEZvbnREYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTM3MUY0
RkZCMEQyNUU3RjMwMEVDRTBENSAvKiBTZWdtZW50ZWRGb250RGF0YS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTZWdtZW50ZWRGb250RGF0YS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTM3MUY0RkZBMEQyNUU3RjMwMEVDRTBENSAvKiBGb250UmFu
Z2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvbnRSYW5nZXMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzcxRjRGRkIwRDI1RTdGMzAwRUNFMEQ1IC8qIEZv
bnRSYW5nZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9udFJh
bmdlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3MUY1MTlGMEQyNjJGQTAw
MEVDRTBENSAvKiBDU1NTZWdtZW50ZWRGb250RmFjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBDU1NTZWdtZW50ZWRGb250RmFjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkzNzFGNTFBMDBEMjYyRkEwMDBFQ0UwRDUgLyogQ1NTU2VnbWVudGVkRm9udEZhY2Uu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ1NTU2VnbWVudGVkRm9u
dEZhY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzNzFGNTNFNzBEMjcwNEY5
MDBFQ0UwRDUgLyogQ1NTVW5pY29kZVJhbmdlVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQ1NTVW5pY29kZVJhbmdlVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTIwNDM5LDggKzIwNDM1LDYgQEAKIAkJCQlCQ0I5MkQ0RTEyOTM1NTBCMDBDODM4
N0YgLyogRm9udEJhc2VsaW5lLmggKi8sCiAJCQkJQjJDM0RBNTEwRDAwNkNENjAwRUY2RjI2IC8q
IEZvbnRDYWNoZS5jcHAgKi8sCiAJCQkJQjJDM0RBNTIwRDAwNkNENjAwRUY2RjI2IC8qIEZvbnRD
YWNoZS5oICovLAotCQkJCTM3MUY0RjNGMEQyNUI5QUYwMEVDRTBENSAvKiBGb250RGF0YS5jcHAg
Ki8sCi0JCQkJMzcxRjRGM0UwRDI1QjlBRjAwRUNFMEQ1IC8qIEZvbnREYXRhLmggKi8sCiAJCQkJ
MzdBQ0NFNjIwREEyQUE5NjAwODlFNjAyIC8qIEZvbnREZXNjcmlwdGlvbi5jcHAgKi8sCiAJCQkJ
QjJDM0RBNTUwRDAwNkNENjAwRUY2RjI2IC8qIEZvbnREZXNjcmlwdGlvbi5oICovLAogCQkJCTcy
NjI2RTAxMEVGMDIyRkUwMEEwN0UyMCAvKiBGb250RmFzdFBhdGguY3BwICovLApAQCAtMjA1NDMs
OCArMjA1MzcsOCBAQAogCQkJCUJDQUI0MTgwMTNFMzU2RTgwMEQ4QUFGMyAvKiBSZWdpb24uaCAq
LywKIAkJCQlBNzNGOTVGQzEyQzk3QkZFMDAzMUFBRjkgLyogUm91bmRlZFJlY3QuY3BwICovLAog
CQkJCUE3M0Y5NUZEMTJDOTdCRkUwMDMxQUFGOSAvKiBSb3VuZGVkUmVjdC5oICovLAotCQkJCTM3
MUY0RkZCMEQyNUU3RjMwMEVDRTBENSAvKiBTZWdtZW50ZWRGb250RGF0YS5jcHAgKi8sCi0JCQkJ
MzcxRjRGRkEwRDI1RTdGMzAwRUNFMEQ1IC8qIFNlZ21lbnRlZEZvbnREYXRhLmggKi8sCisJCQkJ
MzcxRjRGRkIwRDI1RTdGMzAwRUNFMEQ1IC8qIEZvbnRSYW5nZXMuY3BwICovLAorCQkJCTM3MUY0
RkZBMEQyNUU3RjMwMEVDRTBENSAvKiBGb250UmFuZ2VzLmggKi8sCiAJCQkJMEYzREQ0NEQxMkY1
RUExQjAwMEQ5MTkwIC8qIFNoYWRvd0JsdXIuY3BwICovLAogCQkJCTBGM0RENDRFMTJGNUVBMUIw
MDBEOTE5MCAvKiBTaGFkb3dCbHVyLmggKi8sCiAJCQkJQjJDM0RBNTMwRDAwNkNENjAwRUY2RjI2
IC8qIFNpbXBsZUZvbnREYXRhLmNwcCAqLywKQEAgLTI0MzA5LDcgKzI0MzAzLDYgQEAKIAkJCQlC
Q0I5MkQ0RjEyOTM1NTBCMDBDODM4N0YgLyogRm9udEJhc2VsaW5lLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCMkMzREE2MzBEMDA2Q0Q2MDBFRjZGMjYgLyogRm9udENhY2hlLmggaW4gSGVhZGVycyAq
LywKIAkJCQlCMkFGRkM3RTBEMDBBNUMxMDAzMDA3NEQgLyogRm9udEN1c3RvbVBsYXRmb3JtRGF0
YS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMzcxRjRGNDAwRDI1QjlBRjAwRUNFMEQ1IC8qIEZvbnRE
YXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkMzREE2NjBEMDA2Q0Q2MDBFRjZGMjYgLyogRm9u
dERlc2NyaXB0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk0QTZFOUZDODEzQzE3RDU3MDA0NkE3
RjggLyogRm9udEZlYXR1cmVTZXR0aW5ncy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJDM0RBNjgw
RDAwNkNENjAwRUY2RjI2IC8qIEZvbnRHbHlwaHMuaCBpbiBIZWFkZXJzICovLApAQCAtMjU5NjAs
NyArMjU5NTMsNyBAQAogCQkJCUJDRDBFMEZDMEU5NzJDMzUwMDI2NURFQSAvKiBTZWN1cml0eU9y
aWdpbkhhc2guaCBpbiBIZWFkZXJzICovLAogCQkJCTk3NEQyREE1MTQ2QTUzNUQwMEQ1MUY4QiAv
KiBTZWN1cml0eVBvbGljeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ1QkM0MjcxNkY4ODJFRTAw
NzA0OEQwIC8qIFNlY3VyaXR5UG9saWN5VmlvbGF0aW9uRXZlbnQuaCBpbiBIZWFkZXJzICovLAot
CQkJCTM3MUY0RkZDMEQyNUU3RjMwMEVDRTBENSAvKiBTZWdtZW50ZWRGb250RGF0YS5oIGluIEhl
YWRlcnMgKi8sCisJCQkJMzcxRjRGRkMwRDI1RTdGMzAwRUNFMEQ1IC8qIEZvbnRSYW5nZXMuaCBp
biBIZWFkZXJzICovLAogCQkJCTk5Q0MwQjVFMThCRTk4NEEwMDZDRUJDQyAvKiBTZWdtZW50ZWRJ
bnB1dFN0b3JhZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyQzNEQTJGMEQwMDZDMUQwMEVGNkYy
NiAvKiBTZWdtZW50ZWRTdHJpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCUJFQTgwN0M5MEY3MTRB
MDMwMDUyNDE5OSAvKiBTZWxlY3Rpb25SZWN0LmggaW4gSGVhZGVycyAqLywKQEAgLTI3ODEzLDcg
KzI3ODA2LDYgQEAKIAkJCQlCMkFGRkM3QzBEMDBBNUMxMDAzMDA3NEQgLyogRm9udENhY2hlTWFj
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMzdDMjM2MEIxMDk3RURFRDAwRUY5RjcyIC8qIEZvbnRD
b21wbGV4VGV4dE1hYy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMkFGRkM3RDBEMDBBNUMxMDAz
MDA3NEQgLyogRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkz
NzFGNEY0MTBEMjVCOUFGMDBFQ0UwRDUgLyogRm9udERhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMzdBQ0NGNjkwREE0MTRFNzAwODlFNjAyIC8qIEZvbnREZXNjcmlwdGlvbi5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk3MjYyNkUwMjBFRjAyMkZFMDBBMDdFMjAgLyogRm9udEZhc3RQYXRoLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTRBNkU5RkM3MTNDMTdENTcwMDQ2QTdGOCAvKiBGb250RmVh
dHVyZVNldHRpbmdzLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjkzOTEsNyArMjkzODMsNyBAQAog
CQkJCTk3NkYzNkVBMTQ2ODYyMjUwMDVFOTNCNCAvKiBTZWN1cml0eUNvbnRleHQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQkNEMEUwRkEwRTk3MkMzNTAwMjY1REVBIC8qIFNlY3VyaXR5T3JpZ2lu
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3NEQyREE0MTQ2QTUzNUQwMEQ1MUY4QiAvKiBTZWN1
cml0eVBvbGljeS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkzNzFGNEZGRDBEMjVFN0YzMDBFQ0Uw
RDUgLyogU2VnbWVudGVkRm9udERhdGEuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMzcxRjRGRkQw
RDI1RTdGMzAwRUNFMEQ1IC8qIEZvbnRSYW5nZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTlD
QzBCNUQxOEJFOTg0QTAwNkNFQkNDIC8qIFNlZ21lbnRlZElucHV0U3RvcmFnZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlCMkMzREEyRTBEMDA2QzFEMDBFRjZGMjYgLyogU2VnbWVudGVkU3RyaW5n
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJFQTgwN0M4MEY3MTRBMDMwMDUyNDE5OSAvKiBTZWxl
Y3Rpb25SZWN0LmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NT
U0ZvbnRTZWxlY3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU0Zv
bnRTZWxlY3Rvci5jcHAJKHJldmlzaW9uIDE3ODM2MikKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NGb250U2VsZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NjgsNyArNDY4LDcgQEAgc3Rh
dGljIGlubGluZSBib29sIGNvbXBhcmVGb250RmFjZXMoQ1NTRgogICAgIHJldHVybiBmYWxzZTsK
IH0KIAotUGFzc1JlZlB0cjxGb250RGF0YT4gQ1NTRm9udFNlbGVjdG9yOjpnZXRGb250RGF0YShj
b25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbiwgY29uc3QgQXRvbWljU3RyaW5n
JiBmYW1pbHlOYW1lKQorRm9udFJhbmdlcyBDU1NGb250U2VsZWN0b3I6OmZvbnRSYW5nZXNGb3JG
YW1pbHkoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250RGVzY3JpcHRpb24sIGNvbnN0IEF0b21p
Y1N0cmluZyYgZmFtaWx5TmFtZSkKIHsKICAgICAvLyBGSVhNRTogVGhlIHNwZWMgKGFuZCBGaXJl
Zm94KSBzYXlzIHVzZXIgc3BlY2lmaWVkIGdlbmVyaWMgZmFtaWxpZXMgKHNhbnMtc2VyaWYgZXRj
Likgc2hvdWxkIGJlIHJlc29sdmVkIGJlZm9yZSB0aGUgQGZvbnQtZmFjZSBsb29rdXAgdG9vLgog
ICAgIGJvb2wgcmVzb2x2ZUdlbmVyaWNGYW1pbHlGaXJzdCA9IGZhbWlseU5hbWUgPT0gc3RhbmRh
cmRGYW1pbHk7CkBAIC00NzgsMTAgKzQ3OCwxMCBAQCBQYXNzUmVmUHRyPEZvbnREYXRhPiBDU1NG
b250U2VsZWN0b3I6OmdlCiAgICAgaWYgKCFmYWNlKSB7CiAgICAgICAgIGlmICghcmVzb2x2ZUdl
bmVyaWNGYW1pbHlGaXJzdCkKICAgICAgICAgICAgIGZhbWlseUZvckxvb2t1cCA9IHJlc29sdmVH
ZW5lcmljRmFtaWx5KG1fZG9jdW1lbnQsIGZvbnREZXNjcmlwdGlvbiwgZmFtaWx5TmFtZSk7Ci0g
ICAgICAgIHJldHVybiBmb250Q2FjaGUoKS5mb250Rm9yRmFtaWx5KGZvbnREZXNjcmlwdGlvbiwg
ZmFtaWx5Rm9yTG9va3VwKTsKKyAgICAgICAgcmV0dXJuIEZvbnRSYW5nZXMoZm9udENhY2hlKCku
Zm9udEZvckZhbWlseShmb250RGVzY3JpcHRpb24sIGZhbWlseUZvckxvb2t1cCkpOwogICAgIH0K
IAotICAgIHJldHVybiBmYWNlLT5nZXRGb250RGF0YShmb250RGVzY3JpcHRpb24pOworICAgIHJl
dHVybiBmYWNlLT5mb250UmFuZ2VzKGZvbnREZXNjcmlwdGlvbik7CiB9CiAKIENTU1NlZ21lbnRl
ZEZvbnRGYWNlKiBDU1NGb250U2VsZWN0b3I6OmdldEZvbnRGYWNlKGNvbnN0IEZvbnREZXNjcmlw
dGlvbiYgZm9udERlc2NyaXB0aW9uLCBjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlseSkKQEAgLTYy
Myw3ICs2MjMsNyBAQCBzaXplX3QgQ1NTRm9udFNlbGVjdG9yOjpmYWxsYmFja0ZvbnREYXRhCiAg
ICAgcmV0dXJuIDA7CiB9CiAKLVBhc3NSZWZQdHI8Rm9udERhdGE+IENTU0ZvbnRTZWxlY3Rvcjo6
Z2V0RmFsbGJhY2tGb250RGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlv
biwgc2l6ZV90IGluZGV4KQorUGFzc1JlZlB0cjxTaW1wbGVGb250RGF0YT4gQ1NTRm9udFNlbGVj
dG9yOjpmYWxsYmFja0ZvbnREYXRhQXQoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250RGVzY3Jp
cHRpb24sIHNpemVfdCBpbmRleCkKIHsKICAgICBBU1NFUlRfVU5VU0VEKGluZGV4LCAhaW5kZXgp
OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5oCShyZXZpc2lvbiAxNzgz
NjIpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTU4LDkgKzU4LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdW5zaWduZWQgdmVyc2lv
bigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fdmVyc2lvbjsgfQogICAgIHZpcnR1YWwgdW5z
aWduZWQgdW5pcXVlSWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3VuaXF1ZUlkOyB9CiAK
LSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Rm9udERhdGE+IGdldEZvbnREYXRhKGNvbnN0IEZvbnRE
ZXNjcmlwdGlvbiYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwg
Rm9udFJhbmdlcyBmb250UmFuZ2VzRm9yRmFtaWx5KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGNv
bnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgc2l6ZV90IGZhbGxiYWNr
Rm9udERhdGFDb3VudCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGb250RGF0
YT4gZ2V0RmFsbGJhY2tGb250RGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mLCBzaXplX3QpIG92
ZXJyaWRlOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxTaW1wbGVGb250RGF0YT4gZmFsbGJhY2tG
b250RGF0YUF0KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIHNpemVfdCkgb3ZlcnJpZGU7CiAgICAg
Q1NTU2VnbWVudGVkRm9udEZhY2UqIGdldEZvbnRGYWNlKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYs
IGNvbnN0IEF0b21pY1N0cmluZyYgZmFtaWx5KTsKIAogICAgIHZpcnR1YWwgYm9vbCByZXNvbHZl
c0ZhbWlseUZvcihjb25zdCBGb250RGVzY3JpcHRpb24mKSBjb25zdCBvdmVycmlkZTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWdtZW50ZWRGb250RmFjZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlZ21lbnRlZEZvbnRGYWNlLmNwcAkocmV2aXNpb24g
MTc4MzYyKQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlZ21lbnRlZEZvbnRGYWNlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNiBAQAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAj
aW5jbHVkZSAiRm9udERlc2NyaXB0aW9uLmgiCiAjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0
dXJlcy5oIgotI2luY2x1ZGUgIlNlZ21lbnRlZEZvbnREYXRhLmgiCiAjaW5jbHVkZSAiU2ltcGxl
Rm9udERhdGEuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTIsMTEgKzUxLDcgQEAgQ1NT
U2VnbWVudGVkRm9udEZhY2U6On5DU1NTZWdtZW50ZWRGb250RgogCiB2b2lkIENTU1NlZ21lbnRl
ZEZvbnRGYWNlOjpwcnVuZVRhYmxlKCkKIHsKLSAgICAvLyBNYWtlIHN1cmUgdGhlIGdseXBoIHBh
Z2UgdHJlZSBwcnVuZXMgb3V0IGFsbCB1c2VzIG9mIHRoaXMgY3VzdG9tIGZvbnQuCi0gICAgaWYg
KG1fZm9udERhdGFUYWJsZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fZm9u
dERhdGFUYWJsZS5jbGVhcigpOworICAgIG1fZGVzY3JpcHRpb25Ub1Jhbmdlc01hcC5jbGVhcigp
OwogfQogCiBib29sIENTU1NlZ21lbnRlZEZvbnRGYWNlOjppc1ZhbGlkKCkgY29uc3QKQEAgLTk1
LDI4ICs5MCwyNyBAQCB2b2lkIENTU1NlZ21lbnRlZEZvbnRGYWNlOjphcHBlbmRGb250RmFjCiAg
ICAgbV9mb250RmFjZXMuYXBwZW5kKGZvbnRGYWNlKTsKIH0KIAotc3RhdGljIHZvaWQgYXBwZW5k
Rm9udERhdGFXaXRoSW52YWxpZFVuaWNvZGVSYW5nZUlmTG9hZGluZyhTZWdtZW50ZWRGb250RGF0
YSogbmV3Rm9udERhdGEsIFBhc3NSZWZQdHI8U2ltcGxlRm9udERhdGE+IHBycEZhY2VGb250RGF0
YSwgY29uc3QgVmVjdG9yPENTU0ZvbnRGYWNlOjpVbmljb2RlUmFuZ2U+JiByYW5nZXMpCitzdGF0
aWMgdm9pZCBhcHBlbmRGb250RGF0YVdpdGhJbnZhbGlkVW5pY29kZVJhbmdlSWZMb2FkaW5nKEZv
bnRSYW5nZXMmIHJhbmdlcywgUmVmUHRyPFNpbXBsZUZvbnREYXRhPiYmIGZvbnREYXRhLCBjb25z
dCBWZWN0b3I8Q1NTRm9udEZhY2U6OlVuaWNvZGVSYW5nZT4mIHVuaWNvZGVSYW5nZXMpCiB7Ci0g
ICAgUmVmUHRyPFNpbXBsZUZvbnREYXRhPiBmYWNlRm9udERhdGEgPSBwcnBGYWNlRm9udERhdGE7
Ci0gICAgaWYgKGZhY2VGb250RGF0YS0+aXNMb2FkaW5nKCkpIHsKLSAgICAgICAgbmV3Rm9udERh
dGEtPmFwcGVuZFJhbmdlKEZvbnREYXRhUmFuZ2UoMCwgMCwgZmFjZUZvbnREYXRhKSk7CisgICAg
aWYgKGZvbnREYXRhLT5pc0xvYWRpbmcoKSkgeworICAgICAgICByYW5nZXMuYXBwZW5kUmFuZ2Uo
Rm9udFJhbmdlczo6UmFuZ2UoMCwgMCwgV1RGOjptb3ZlKGZvbnREYXRhKSkpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgdW5zaWduZWQgbnVtUmFuZ2VzID0gcmFuZ2VzLnNpemUoKTsK
KyAgICB1bnNpZ25lZCBudW1SYW5nZXMgPSB1bmljb2RlUmFuZ2VzLnNpemUoKTsKICAgICBpZiAo
IW51bVJhbmdlcykgewotICAgICAgICBuZXdGb250RGF0YS0+YXBwZW5kUmFuZ2UoRm9udERhdGFS
YW5nZSgwLCAweDdGRkZGRkZGLCBmYWNlRm9udERhdGEpKTsKKyAgICAgICAgcmFuZ2VzLmFwcGVu
ZFJhbmdlKEZvbnRSYW5nZXM6OlJhbmdlKDAsIDB4N0ZGRkZGRkYsIFdURjo6bW92ZShmb250RGF0
YSkpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGZvciAodW5zaWduZWQgaiA9IDA7
IGogPCBudW1SYW5nZXM7ICsraikKLSAgICAgICAgbmV3Rm9udERhdGEtPmFwcGVuZFJhbmdlKEZv
bnREYXRhUmFuZ2UocmFuZ2VzW2pdLmZyb20oKSwgcmFuZ2VzW2pdLnRvKCksIGZhY2VGb250RGF0
YSkpOworICAgICAgICByYW5nZXMuYXBwZW5kUmFuZ2UoRm9udFJhbmdlczo6UmFuZ2UodW5pY29k
ZVJhbmdlc1tqXS5mcm9tKCksIHVuaWNvZGVSYW5nZXNbal0udG8oKSwgZm9udERhdGEuY29weVJl
ZigpKSk7CiB9CiAKLVBhc3NSZWZQdHI8Rm9udERhdGE+IENTU1NlZ21lbnRlZEZvbnRGYWNlOjpn
ZXRGb250RGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbikKK0ZvbnRS
YW5nZXMgQ1NTU2VnbWVudGVkRm9udEZhY2U6OmZvbnRSYW5nZXMoY29uc3QgRm9udERlc2NyaXB0
aW9uJiBmb250RGVzY3JpcHRpb24pCiB7CiAgICAgaWYgKCFpc1ZhbGlkKCkpCi0gICAgICAgIHJl
dHVybiAwOworICAgICAgICByZXR1cm4gRm9udFJhbmdlcygpOwogCiAgICAgRm9udFRyYWl0c01h
c2sgZGVzaXJlZFRyYWl0c01hc2sgPSBmb250RGVzY3JpcHRpb24udHJhaXRzTWFzaygpOwogICAg
IHVuc2lnbmVkIGhhc2hLZXkgPSAoKGZvbnREZXNjcmlwdGlvbi5jb21wdXRlZFBpeGVsU2l6ZSgp
ICsgMSkgPDwgKEZvbnRUcmFpdHNNYXNrV2lkdGggKyBGb250V2lkdGhWYXJpYW50V2lkdGggKyAx
KSkKQEAgLTEyNCwyOSArMTE4LDIyIEBAIFBhc3NSZWZQdHI8Rm9udERhdGE+IENTU1NlZ21lbnRl
ZEZvbnRGYWMKICAgICAgICAgfCBmb250RGVzY3JpcHRpb24ud2lkdGhWYXJpYW50KCkgPDwgRm9u
dFRyYWl0c01hc2tXaWR0aAogICAgICAgICB8IGRlc2lyZWRUcmFpdHNNYXNrOwogCi0gICAgUmVm
UHRyPFNlZ21lbnRlZEZvbnREYXRhPiYgZm9udERhdGEgPSBtX2ZvbnREYXRhVGFibGUuYWRkKGhh
c2hLZXksIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKLSAgICBpZiAoZm9udERhdGEgJiYgZm9u
dERhdGEtPm51bVJhbmdlcygpKQotICAgICAgICByZXR1cm4gZm9udERhdGE7IC8vIE5vIHJlbGVh
c2UsIHdlIGhhdmUgYSByZWZlcmVuY2UgdG8gYW4gb2JqZWN0IGluIHRoZSBjYWNoZSB3aGljaCBz
aG91bGQgcmV0YWluIHRoZSByZWYgY291bnQgaXQgaGFzLgotCi0gICAgaWYgKCFmb250RGF0YSkK
LSAgICAgICAgZm9udERhdGEgPSBTZWdtZW50ZWRGb250RGF0YTo6Y3JlYXRlKCk7CisgICAgYXV0
byBhZGRSZXN1bHQgPSBtX2Rlc2NyaXB0aW9uVG9SYW5nZXNNYXAuYWRkKGhhc2hLZXksIEZvbnRS
YW5nZXMoKSk7CisgICAgYXV0byYgZm9udFJhbmdlcyA9IGFkZFJlc3VsdC5pdGVyYXRvci0+dmFs
dWU7CiAKLSAgICB1bnNpZ25lZCBzaXplID0gbV9mb250RmFjZXMuc2l6ZSgpOwotICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKLSAgICAgICAgaWYgKCFtX2ZvbnRGYWNl
c1tpXS0+aXNWYWxpZCgpKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIEZvbnRUcmFp
dHNNYXNrIHRyYWl0c01hc2sgPSBtX2ZvbnRGYWNlc1tpXS0+dHJhaXRzTWFzaygpOwotICAgICAg
ICBib29sIHN5bnRoZXRpY0JvbGQgPSAhKHRyYWl0c01hc2sgJiAoRm9udFdlaWdodDYwME1hc2sg
fCBGb250V2VpZ2h0NzAwTWFzayB8IEZvbnRXZWlnaHQ4MDBNYXNrIHwgRm9udFdlaWdodDkwME1h
c2spKSAmJiAoZGVzaXJlZFRyYWl0c01hc2sgJiAoRm9udFdlaWdodDYwME1hc2sgfCBGb250V2Vp
Z2h0NzAwTWFzayB8IEZvbnRXZWlnaHQ4MDBNYXNrIHwgRm9udFdlaWdodDkwME1hc2spKTsKLSAg
ICAgICAgYm9vbCBzeW50aGV0aWNJdGFsaWMgPSAhKHRyYWl0c01hc2sgJiBGb250U3R5bGVJdGFs
aWNNYXNrKSAmJiAoZGVzaXJlZFRyYWl0c01hc2sgJiBGb250U3R5bGVJdGFsaWNNYXNrKTsKLSAg
ICAgICAgaWYgKFJlZlB0cjxTaW1wbGVGb250RGF0YT4gZmFjZUZvbnREYXRhID0gbV9mb250RmFj
ZXNbaV0tPmdldEZvbnREYXRhKGZvbnREZXNjcmlwdGlvbiwgc3ludGhldGljQm9sZCwgc3ludGhl
dGljSXRhbGljKSkgewotICAgICAgICAgICAgQVNTRVJUKCFmYWNlRm9udERhdGEtPmlzU2VnbWVu
dGVkKCkpOwotICAgICAgICAgICAgYXBwZW5kRm9udERhdGFXaXRoSW52YWxpZFVuaWNvZGVSYW5n
ZUlmTG9hZGluZyhmb250RGF0YS5nZXQoKSwgZmFjZUZvbnREYXRhLnJlbGVhc2UoKSwgbV9mb250
RmFjZXNbaV0tPnJhbmdlcygpKTsKKyAgICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50cnkpIHsKKyAg
ICAgICAgdW5zaWduZWQgc2l6ZSA9IG1fZm9udEZhY2VzLnNpemUoKTsKKyAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7IGkrKykgeworICAgICAgICAgICAgaWYgKCFtX2ZvbnRG
YWNlc1tpXS0+aXNWYWxpZCgpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAg
ICAgRm9udFRyYWl0c01hc2sgdHJhaXRzTWFzayA9IG1fZm9udEZhY2VzW2ldLT50cmFpdHNNYXNr
KCk7CisgICAgICAgICAgICBib29sIHN5bnRoZXRpY0JvbGQgPSAhKHRyYWl0c01hc2sgJiAoRm9u
dFdlaWdodDYwME1hc2sgfCBGb250V2VpZ2h0NzAwTWFzayB8IEZvbnRXZWlnaHQ4MDBNYXNrIHwg
Rm9udFdlaWdodDkwME1hc2spKSAmJiAoZGVzaXJlZFRyYWl0c01hc2sgJiAoRm9udFdlaWdodDYw
ME1hc2sgfCBGb250V2VpZ2h0NzAwTWFzayB8IEZvbnRXZWlnaHQ4MDBNYXNrIHwgRm9udFdlaWdo
dDkwME1hc2spKTsKKyAgICAgICAgICAgIGJvb2wgc3ludGhldGljSXRhbGljID0gISh0cmFpdHNN
YXNrICYgRm9udFN0eWxlSXRhbGljTWFzaykgJiYgKGRlc2lyZWRUcmFpdHNNYXNrICYgRm9udFN0
eWxlSXRhbGljTWFzayk7CisgICAgICAgICAgICBpZiAoUmVmUHRyPFNpbXBsZUZvbnREYXRhPiBm
YWNlRm9udERhdGEgPSBtX2ZvbnRGYWNlc1tpXS0+Z2V0Rm9udERhdGEoZm9udERlc2NyaXB0aW9u
LCBzeW50aGV0aWNCb2xkLCBzeW50aGV0aWNJdGFsaWMpKQorICAgICAgICAgICAgICAgIGFwcGVu
ZEZvbnREYXRhV2l0aEludmFsaWRVbmljb2RlUmFuZ2VJZkxvYWRpbmcoZm9udFJhbmdlcywgV1RG
Ojptb3ZlKGZhY2VGb250RGF0YSksIG1fZm9udEZhY2VzW2ldLT5yYW5nZXMoKSk7CiAgICAgICAg
IH0KICAgICB9Ci0gICAgaWYgKGZvbnREYXRhLT5udW1SYW5nZXMoKSkKLSAgICAgICAgcmV0dXJu
IGZvbnREYXRhOyAvLyBObyByZWxlYXNlLCB3ZSBoYXZlIGEgcmVmZXJlbmNlIHRvIGFuIG9iamVj
dCBpbiB0aGUgY2FjaGUgd2hpY2ggc2hvdWxkIHJldGFpbiB0aGUgcmVmIGNvdW50IGl0IGhhcy4K
LQotICAgIHJldHVybiAwOworICAgIHJldHVybiBmb250UmFuZ2VzOwogfQogCiAjaWYgRU5BQkxF
KEZPTlRfTE9BRF9FVkVOVFMpCkBAIC0xNzIsNyArMTU5LDcgQEAgYm9vbCBDU1NTZWdtZW50ZWRG
b250RmFjZTo6Y2hlY2tGb250KCkgYwogCiB2b2lkIENTU1NlZ21lbnRlZEZvbnRGYWNlOjpsb2Fk
Rm9udChjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbiwgUGFzc1JlZlB0cjxM
b2FkRm9udENhbGxiYWNrPiBjYWxsYmFjaykKIHsKLSAgICBnZXRGb250RGF0YShmb250RGVzY3Jp
cHRpb24pOyAvLyBLaWNrIG9mZiB0aGUgbG9hZC4KKyAgICBmb250UmFuZ2VzKGZvbnREZXNjcmlw
dGlvbik7IC8vIEtpY2sgb2ZmIHRoZSBsb2FkLgogCiAgICAgaWYgKGNhbGxiYWNrKSB7CiAgICAg
ICAgIGlmIChpc0xvYWRpbmcoKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWdtZW50
ZWRGb250RmFjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWdtZW50
ZWRGb250RmFjZS5oCShyZXZpc2lvbiAxNzgzNjIpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
U2VnbWVudGVkRm9udEZhY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2lm
bmRlZiBDU1NTZWdtZW50ZWRGb250RmFjZV9oCiAjZGVmaW5lIENTU1NlZ21lbnRlZEZvbnRGYWNl
X2gKIAorI2luY2x1ZGUgIkZvbnRSYW5nZXMuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgog
I2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
QEAgLTM1LDkgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDU1NGb250RmFj
ZTsKIGNsYXNzIENTU0ZvbnRTZWxlY3RvcjsKLWNsYXNzIEZvbnREYXRhOwogY2xhc3MgRm9udERl
c2NyaXB0aW9uOwotY2xhc3MgU2VnbWVudGVkRm9udERhdGE7CiAKIGNsYXNzIENTU1NlZ21lbnRl
ZEZvbnRGYWNlIDogcHVibGljIFJlZkNvdW50ZWQ8Q1NTU2VnbWVudGVkRm9udEZhY2U+IHsKIHB1
YmxpYzoKQEAgLTUwLDcgKzQ5LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBhcHBlbmRGb250RmFj
ZShQYXNzUmVmUHRyPENTU0ZvbnRGYWNlPik7CiAKLSAgICBQYXNzUmVmUHRyPEZvbnREYXRhPiBn
ZXRGb250RGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mKTsKKyAgICBGb250UmFuZ2VzIGZvbnRS
YW5nZXMoY29uc3QgRm9udERlc2NyaXB0aW9uJik7CiAKICNpZiBFTkFCTEUoRk9OVF9MT0FEX0VW
RU5UUykKICAgICBjbGFzcyBMb2FkRm9udENhbGxiYWNrIDogcHVibGljIFJlZkNvdW50ZWQ8TG9h
ZEZvbnRDYWxsYmFjaz4gewpAQCAtNzQsNyArNzMsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAg
ICBDU1NGb250U2VsZWN0b3IqIG1fZm9udFNlbGVjdG9yOwotICAgIEhhc2hNYXA8dW5zaWduZWQs
IFJlZlB0cjxTZWdtZW50ZWRGb250RGF0YT4+IG1fZm9udERhdGFUYWJsZTsKKyAgICBIYXNoTWFw
PHVuc2lnbmVkLCBGb250UmFuZ2VzPiBtX2Rlc2NyaXB0aW9uVG9SYW5nZXNNYXA7CiAgICAgVmVj
dG9yPFJlZlB0cjxDU1NGb250RmFjZT4sIDE+IG1fZm9udEZhY2VzOwogI2lmIEVOQUJMRShGT05U
X0xPQURfRVZFTlRTKQogICAgIFZlY3RvcjxSZWZQdHI8TG9hZEZvbnRDYWxsYmFjaz4+IG1fY2Fs
bGJhY2tzOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaAkocmV2
aXNpb24gMTc4MzYyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xODQsNyArMTg0LDcgQEAgcHVibGljOgogICAgIGludCBlbXBo
YXNpc01hcmtIZWlnaHQoY29uc3QgQXRvbWljU3RyaW5nJikgY29uc3Q7CiAKICAgICBjb25zdCBT
aW1wbGVGb250RGF0YSYgcHJpbWFyeUZvbnREYXRhKCkgY29uc3Q7Ci0gICAgY29uc3QgRm9udERh
dGEqIGZvbnREYXRhQXQodW5zaWduZWQpIGNvbnN0OworICAgIGNvbnN0IEZvbnRSYW5nZXMmIGZh
bGxiYWNrUmFuZ2VzQXQodW5zaWduZWQpIGNvbnN0OwogICAgIEdseXBoRGF0YSBnbHlwaERhdGFG
b3JDaGFyYWN0ZXIoVUNoYXIzMiwgYm9vbCBtaXJyb3IsIEZvbnREYXRhVmFyaWFudCA9IEF1dG9W
YXJpYW50KSBjb25zdDsKICAgICAKICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTM1NywxMCArMzU3
LDEwIEBAIGlubGluZSBjb25zdCBTaW1wbGVGb250RGF0YSYgRm9udDo6cHJpbWEKICAgICByZXR1
cm4gbV9nbHlwaHMtPnByaW1hcnlTaW1wbGVGb250RGF0YShtX2ZvbnREZXNjcmlwdGlvbik7CiB9
CiAKLWlubGluZSBjb25zdCBGb250RGF0YSogRm9udDo6Zm9udERhdGFBdCh1bnNpZ25lZCBpbmRl
eCkgY29uc3QKK2lubGluZSBjb25zdCBGb250UmFuZ2VzJiBGb250OjpmYWxsYmFja1Jhbmdlc0F0
KHVuc2lnbmVkIGluZGV4KSBjb25zdAogewogICAgIEFTU0VSVChtX2dseXBocyk7Ci0gICAgcmV0
dXJuIG1fZ2x5cGhzLT5yZWFsaXplRm9udERhdGFBdChtX2ZvbnREZXNjcmlwdGlvbiwgaW5kZXgp
OworICAgIHJldHVybiBtX2dseXBocy0+cmVhbGl6ZUZhbGxiYWNrUmFuZ2VzQXQobV9mb250RGVz
Y3JpcHRpb24sIGluZGV4KTsKIH0KIAogaW5saW5lIGJvb2wgRm9udDo6aXNGaXhlZFBpdGNoKCkg
Y29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnREYXRhLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250RGF0
YS5jcHAJKHJldmlzaW9uIDE3ODM2MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnREYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSwzNSArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcu
aCIKLSNpbmNsdWRlICJGb250RGF0YS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUZvbnRE
YXRhOjp+Rm9udERhdGEoKQotewotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250RGF0YS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnREYXRhLmgJKHJldmlzaW9uIDE3
ODM2MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnREYXRhLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEsNjIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCwg
MjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0g
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIEZvbnREYXRhX2gKLSNkZWZpbmUgRm9u
dERhdGFfaAotCi0jaW5jbHVkZSA8dW5pY29kZS91dHlwZXMuaD4KLSNpbmNsdWRlIDx3dGYvRmFz
dE1hbGxvYy5oPgotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL05vbmNv
cHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFNpbXBsZUZvbnREYXRh
OwotCi1jbGFzcyBGb250RGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPEZvbnREYXRhPiB7Ci0gICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoRm9udERhdGEpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
LXB1YmxpYzoKLSAgICBGb250RGF0YSgpCi0gICAgewotICAgIH0KLQotICAgIHZpcnR1YWwgfkZv
bnREYXRhKCk7Ci0KLSAgICB2aXJ0dWFsIGNvbnN0IFNpbXBsZUZvbnREYXRhKiBzaW1wbGVGb250
RGF0YUZvckNoYXJhY3RlcihVQ2hhcjMyKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBjb25zdCBT
aW1wbGVGb250RGF0YSYgc2ltcGxlRm9udERhdGFGb3JGaXJzdFJhbmdlKCkgY29uc3QgPSAwOwot
ICAgIHZpcnR1YWwgYm9vbCBpc0N1c3RvbUZvbnQoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBi
b29sIGlzTG9hZGluZygpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNTZWdtZW50ZWQo
KSBjb25zdCA9IDA7Ci0KLSNpZm5kZWYgTkRFQlVHCi0gICAgdmlydHVhbCBTdHJpbmcgZGVzY3Jp
cHRpb24oKSBjb25zdCA9IDA7Ci0jZW5kaWYKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
LQotI2VuZGlmIC8vIEZvbnREYXRhX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ZvbnRHbHlwaHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnRHbHlwaHMuY3BwCShyZXZpc2lvbiAxNzgzNjIpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250R2x5cGhzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzIsNyArMzIsNiBAQAogI2luY2x1ZGUgIkZvbnQuaCIKICNpbmNsdWRlICJGb250Q2FjaGUu
aCIKICNpbmNsdWRlICJHbHlwaFBhZ2UuaCIKLSNpbmNsdWRlICJTZWdtZW50ZWRGb250RGF0YS5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTUyLDcgKzUxLDcgQEAgRm9udEdseXBoczo6
Rm9udEdseXBocyhjb25zdCBGb250UGxhdGZvcgogICAgICwgbV9nZW5lcmF0aW9uKGZvbnRDYWNo
ZSgpLmdlbmVyYXRpb24oKSkKICAgICAsIG1faXNGb3JQbGF0Zm9ybUZvbnQodHJ1ZSkKIHsKLSAg
ICBtX3JlYWxpemVkRm9udERhdGEuYXBwZW5kKGZvbnRDYWNoZSgpLmZvbnRGb3JQbGF0Zm9ybURh
dGEocGxhdGZvcm1EYXRhKSk7CisgICAgbV9yZWFsaXplZEZhbGxiYWNrUmFuZ2VzLmFwcGVuZChG
b250UmFuZ2VzKGZvbnRDYWNoZSgpLmZvbnRGb3JQbGF0Zm9ybURhdGEocGxhdGZvcm1EYXRhKSkp
OwogfQogCiBGb250R2x5cGhzOjp+Rm9udEdseXBocygpCkBAIC02MSwyOSArNjAsMjQgQEAgRm9u
dEdseXBoczo6fkZvbnRHbHlwaHMoKQogCiB2b2lkIEZvbnRHbHlwaHM6OmRldGVybWluZVBpdGNo
KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24pCiB7Ci0gICAgY29uc3QgRm9udERh
dGEmIGZvbnREYXRhID0gKnJlYWxpemVGb250RGF0YUF0KGRlc2NyaXB0aW9uLCAwKTsKLSAgICBp
ZiAoaXM8U2ltcGxlRm9udERhdGE+KGZvbnREYXRhKSkKLSAgICAgICAgbV9waXRjaCA9IGRvd25j
YXN0PFNpbXBsZUZvbnREYXRhPihmb250RGF0YSkucGl0Y2goKTsKLSAgICBlbHNlIHsKLSAgICAg
ICAgY29uc3QgU2VnbWVudGVkRm9udERhdGEmIHNlZ21lbnRlZEZvbnREYXRhID0gZG93bmNhc3Q8
U2VnbWVudGVkRm9udERhdGE+KGZvbnREYXRhKTsKLSAgICAgICAgdW5zaWduZWQgbnVtUmFuZ2Vz
ID0gc2VnbWVudGVkRm9udERhdGEubnVtUmFuZ2VzKCk7Ci0gICAgICAgIGlmIChudW1SYW5nZXMg
PT0gMSkKLSAgICAgICAgICAgIG1fcGl0Y2ggPSBzZWdtZW50ZWRGb250RGF0YS5yYW5nZUF0KDAp
LmZvbnREYXRhKCktPnBpdGNoKCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fcGl0Y2gg
PSBWYXJpYWJsZVBpdGNoOwotICAgIH0KKyAgICBhdXRvJiBwcmltYXJ5UmFuZ2VzID0gcmVhbGl6
ZUZhbGxiYWNrUmFuZ2VzQXQoZGVzY3JpcHRpb24sIDApOworICAgIHVuc2lnbmVkIG51bVJhbmdl
cyA9IHByaW1hcnlSYW5nZXMuc2l6ZSgpOworICAgIGlmIChudW1SYW5nZXMgPT0gMSkKKyAgICAg
ICAgbV9waXRjaCA9IHByaW1hcnlSYW5nZXMucmFuZ2VBdCgwKS5mb250RGF0YSgpLT5waXRjaCgp
OworICAgIGVsc2UKKyAgICAgICAgbV9waXRjaCA9IFZhcmlhYmxlUGl0Y2g7CiB9CiAKIGJvb2wg
Rm9udEdseXBoczo6aXNMb2FkaW5nQ3VzdG9tRm9udHMoKSBjb25zdAogewotICAgIGZvciAoYXV0
byYgZm9udCA6IG1fcmVhbGl6ZWRGb250RGF0YSkgewotICAgICAgICBpZiAoZm9udC0+aXNMb2Fk
aW5nKCkpCisgICAgZm9yIChhdXRvJiBmb250UmFuZ2VzIDogbV9yZWFsaXplZEZhbGxiYWNrUmFu
Z2VzKSB7CisgICAgICAgIGlmIChmb250UmFuZ2VzLmlzTG9hZGluZygpKQogICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotc3RhdGljIFJlZlB0
cjxGb250RGF0YT4gcmVhbGl6ZU5leHRGYW1pbHkoY29uc3QgRm9udERlc2NyaXB0aW9uJiBkZXNj
cmlwdGlvbiwgdW5zaWduZWQmIGluZGV4LCBGb250U2VsZWN0b3IqIGZvbnRTZWxlY3RvcikKK3N0
YXRpYyBGb250UmFuZ2VzIHJlYWxpemVOZXh0RmFsbGJhY2soY29uc3QgRm9udERlc2NyaXB0aW9u
JiBkZXNjcmlwdGlvbiwgdW5zaWduZWQmIGluZGV4LCBGb250U2VsZWN0b3IqIGZvbnRTZWxlY3Rv
cikKIHsKICAgICBBU1NFUlQoaW5kZXggPCBkZXNjcmlwdGlvbi5mYW1pbHlDb3VudCgpKTsKIApA
QCAtOTIsNTUgKzg2LDUzIEBAIHN0YXRpYyBSZWZQdHI8Rm9udERhdGE+IHJlYWxpemVOZXh0RmFt
aWwKICAgICAgICAgaWYgKGZhbWlseS5pc0VtcHR5KCkpCiAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgaWYgKGZvbnRTZWxlY3RvcikgewotICAgICAgICAgICAgaWYgKGF1dG8gZm9udCA9
IGZvbnRTZWxlY3Rvci0+Z2V0Rm9udERhdGEoZGVzY3JpcHRpb24sIGZhbWlseSkpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIGZvbnQ7CisgICAgICAgICAgICBhdXRvIHJhbmdlcyA9IGZvbnRTZWxl
Y3Rvci0+Zm9udFJhbmdlc0ZvckZhbWlseShkZXNjcmlwdGlvbiwgZmFtaWx5KTsKKyAgICAgICAg
ICAgIGlmICghcmFuZ2VzLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gcmFuZ2Vz
OwogICAgICAgICB9CiAgICAgICAgIGlmIChhdXRvIGZvbnQgPSBmb250Q2FjaGUoKS5mb250Rm9y
RmFtaWx5KGRlc2NyaXB0aW9uLCBmYW1pbHkpKQotICAgICAgICAgICAgcmV0dXJuIGZvbnQ7Cisg
ICAgICAgICAgICByZXR1cm4gRm9udFJhbmdlcyhXVEY6Om1vdmUoZm9udCkpOwogICAgIH0KICAg
ICAvLyBXZSBkaWRuJ3QgZmluZCBhIGZvbnQuIFRyeSB0byBmaW5kIGEgc2ltaWxhciBmb250IHVz
aW5nIG91ciBvd24gc3BlY2lmaWMga25vd2xlZGdlIGFib3V0IG91ciBwbGF0Zm9ybS4KICAgICAv
LyBGb3IgZXhhbXBsZSBvbiBPUyBYLCB3ZSBrbm93IHRvIG1hcCBhbnkgZmFtaWxpZXMgY29udGFp
bmluZyB0aGUgd29yZHMgQXJhYmljLCBQYXNodG8sIG9yIFVyZHUgdG8gdGhlCiAgICAgLy8gR2Vl
emEgUHJvIGZvbnQuCi0gICAgcmV0dXJuIGZvbnRDYWNoZSgpLnNpbWlsYXJGb250UGxhdGZvcm1E
YXRhKGRlc2NyaXB0aW9uKTsKKyAgICByZXR1cm4gRm9udFJhbmdlcyhmb250Q2FjaGUoKS5zaW1p
bGFyRm9udFBsYXRmb3JtRGF0YShkZXNjcmlwdGlvbikpOwogfQogCi1jb25zdCBGb250RGF0YSog
Rm9udEdseXBoczo6cmVhbGl6ZUZvbnREYXRhQXQoY29uc3QgRm9udERlc2NyaXB0aW9uJiBkZXNj
cmlwdGlvbiwgdW5zaWduZWQgaW5kZXgpCitjb25zdCBGb250UmFuZ2VzJiBGb250R2x5cGhzOjpy
ZWFsaXplRmFsbGJhY2tSYW5nZXNBdChjb25zdCBGb250RGVzY3JpcHRpb24mIGRlc2NyaXB0aW9u
LCB1bnNpZ25lZCBpbmRleCkKIHsKLSAgICBpZiAoaW5kZXggPCBtX3JlYWxpemVkRm9udERhdGEu
c2l6ZSgpKQotICAgICAgICByZXR1cm4gJm1fcmVhbGl6ZWRGb250RGF0YVtpbmRleF0uZ2V0KCk7
CisgICAgaWYgKGluZGV4IDwgbV9yZWFsaXplZEZhbGxiYWNrUmFuZ2VzLnNpemUoKSkKKyAgICAg
ICAgcmV0dXJuIG1fcmVhbGl6ZWRGYWxsYmFja1Jhbmdlc1tpbmRleF07CiAKLSAgICBBU1NFUlQo
aW5kZXggPT0gbV9yZWFsaXplZEZvbnREYXRhLnNpemUoKSk7CisgICAgQVNTRVJUKGluZGV4ID09
IG1fcmVhbGl6ZWRGYWxsYmFja1Jhbmdlcy5zaXplKCkpOwogICAgIEFTU0VSVChmb250Q2FjaGUo
KS5nZW5lcmF0aW9uKCkgPT0gbV9nZW5lcmF0aW9uKTsKIAotICAgIGlmICghaW5kZXgpIHsKLSAg
ICAgICAgUmVmUHRyPEZvbnREYXRhPiByZXN1bHQgPSByZWFsaXplTmV4dEZhbWlseShkZXNjcmlw
dGlvbiwgbV9sYXN0UmVhbGl6ZWRGYW1pbHlJbmRleCwgbV9mb250U2VsZWN0b3IuZ2V0KCkpOwot
ICAgICAgICBpZiAoIXJlc3VsdCAmJiBtX2ZvbnRTZWxlY3RvcikKLSAgICAgICAgICAgIHJlc3Vs
dCA9IG1fZm9udFNlbGVjdG9yLT5nZXRGb250RGF0YShkZXNjcmlwdGlvbiwgc3RhbmRhcmRGYW1p
bHkpOwotICAgICAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgICAgIHJlc3VsdCA9IGZvbnRDYWNo
ZSgpLmxhc3RSZXNvcnRGYWxsYmFja0ZvbnQoZGVzY3JpcHRpb24pOworICAgIG1fcmVhbGl6ZWRG
YWxsYmFja1Jhbmdlcy5hcHBlbmQoRm9udFJhbmdlcygpKTsKKyAgICBhdXRvJiBmb250UmFuZ2Vz
ID0gbV9yZWFsaXplZEZhbGxiYWNrUmFuZ2VzLmxhc3QoKTsKIAotICAgICAgICBtX3JlYWxpemVk
Rm9udERhdGEuYXBwZW5kKCpyZXN1bHQpOwotICAgICAgICByZXR1cm4gcmVzdWx0LmdldCgpOwor
ICAgIGlmICghaW5kZXgpIHsKKyAgICAgICAgZm9udFJhbmdlcyA9IHJlYWxpemVOZXh0RmFsbGJh
Y2soZGVzY3JpcHRpb24sIG1fbGFzdFJlYWxpemVkRmFsbGJhY2tJbmRleCwgbV9mb250U2VsZWN0
b3IuZ2V0KCkpOworICAgICAgICBpZiAoZm9udFJhbmdlcy5pc0VtcHR5KCkgJiYgbV9mb250U2Vs
ZWN0b3IpCisgICAgICAgICAgICBmb250UmFuZ2VzID0gbV9mb250U2VsZWN0b3ItPmZvbnRSYW5n
ZXNGb3JGYW1pbHkoZGVzY3JpcHRpb24sIHN0YW5kYXJkRmFtaWx5KTsKKyAgICAgICAgaWYgKGZv
bnRSYW5nZXMuaXNFbXB0eSgpKQorICAgICAgICAgICAgZm9udFJhbmdlcyA9IEZvbnRSYW5nZXMo
Zm9udENhY2hlKCkubGFzdFJlc29ydEZhbGxiYWNrRm9udChkZXNjcmlwdGlvbikpOworICAgICAg
ICByZXR1cm4gZm9udFJhbmdlczsKICAgICB9CiAKLSAgICBSZWZQdHI8Rm9udERhdGE+IHJlc3Vs
dDsKLSAgICBpZiAobV9sYXN0UmVhbGl6ZWRGYW1pbHlJbmRleCA8IGRlc2NyaXB0aW9uLmZhbWls
eUNvdW50KCkpCi0gICAgICAgIHJlc3VsdCA9IHJlYWxpemVOZXh0RmFtaWx5KGRlc2NyaXB0aW9u
LCBtX2xhc3RSZWFsaXplZEZhbWlseUluZGV4LCBtX2ZvbnRTZWxlY3Rvci5nZXQoKSk7CisgICAg
aWYgKG1fbGFzdFJlYWxpemVkRmFsbGJhY2tJbmRleCA8IGRlc2NyaXB0aW9uLmZhbWlseUNvdW50
KCkpCisgICAgICAgIGZvbnRSYW5nZXMgPSByZWFsaXplTmV4dEZhbGxiYWNrKGRlc2NyaXB0aW9u
LCBtX2xhc3RSZWFsaXplZEZhbGxiYWNrSW5kZXgsIG1fZm9udFNlbGVjdG9yLmdldCgpKTsKIAot
ICAgIGlmICghcmVzdWx0ICYmIG1fZm9udFNlbGVjdG9yKSB7Ci0gICAgICAgIEFTU0VSVChtX2xh
c3RSZWFsaXplZEZhbWlseUluZGV4ID49IGRlc2NyaXB0aW9uLmZhbWlseUNvdW50KCkpOworICAg
IGlmIChmb250UmFuZ2VzLmlzRW1wdHkoKSAmJiBtX2ZvbnRTZWxlY3RvcikgeworICAgICAgICBB
U1NFUlQobV9sYXN0UmVhbGl6ZWRGYWxsYmFja0luZGV4ID49IGRlc2NyaXB0aW9uLmZhbWlseUNv
dW50KCkpOwogCi0gICAgICAgIHVuc2lnbmVkIGZvbnRTZWxlY3RvckZhbGxiYWNrSW5kZXggPSBt
X2xhc3RSZWFsaXplZEZhbWlseUluZGV4IC0gZGVzY3JpcHRpb24uZmFtaWx5Q291bnQoKTsKKyAg
ICAgICAgdW5zaWduZWQgZm9udFNlbGVjdG9yRmFsbGJhY2tJbmRleCA9IG1fbGFzdFJlYWxpemVk
RmFsbGJhY2tJbmRleCAtIGRlc2NyaXB0aW9uLmZhbWlseUNvdW50KCk7CiAgICAgICAgIGlmIChm
b250U2VsZWN0b3JGYWxsYmFja0luZGV4ID09IG1fZm9udFNlbGVjdG9yLT5mYWxsYmFja0ZvbnRE
YXRhQ291bnQoKSkKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICArK21fbGFz
dFJlYWxpemVkRmFtaWx5SW5kZXg7Ci0gICAgICAgIHJlc3VsdCA9IG1fZm9udFNlbGVjdG9yLT5n
ZXRGYWxsYmFja0ZvbnREYXRhKGRlc2NyaXB0aW9uLCBmb250U2VsZWN0b3JGYWxsYmFja0luZGV4
KTsKKyAgICAgICAgICAgIHJldHVybiBmb250UmFuZ2VzOworICAgICAgICArK21fbGFzdFJlYWxp
emVkRmFsbGJhY2tJbmRleDsKKyAgICAgICAgZm9udFJhbmdlcyA9IEZvbnRSYW5nZXMobV9mb250
U2VsZWN0b3ItPmZhbGxiYWNrRm9udERhdGFBdChkZXNjcmlwdGlvbiwgZm9udFNlbGVjdG9yRmFs
bGJhY2tJbmRleCkpOwogICAgIH0KLSAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKLSAgICBtX3JlYWxpemVkRm9udERhdGEuYXBwZW5kKCpyZXN1bHQpOwotICAgIHJl
dHVybiByZXN1bHQuZ2V0KCk7CisgICAgcmV0dXJuIGZvbnRSYW5nZXM7CiB9CiAKIHN0YXRpYyBp
bmxpbmUgYm9vbCBpc0luUmFuZ2UoVUNoYXIzMiBjaGFyYWN0ZXIsIFVDaGFyMzIgbG93ZXJCb3Vu
ZCwgVUNoYXIzMiB1cHBlckJvdW5kKQpAQCAtMjYzLDEwICsyNTUsMTAgQEAgc3RhdGljIEdseXBo
RGF0YSBnbHlwaERhdGFGb3JOb25DSktDaGFyYQogR2x5cGhEYXRhIEZvbnRHbHlwaHM6OmdseXBo
RGF0YUZvclN5c3RlbUZhbGxiYWNrKFVDaGFyMzIgYywgY29uc3QgRm9udERlc2NyaXB0aW9uJiBk
ZXNjcmlwdGlvbiwgRm9udERhdGFWYXJpYW50IHZhcmlhbnQpCiB7CiAgICAgLy8gU3lzdGVtIGZh
bGxiYWNrIGlzIGNoYXJhY3Rlci1kZXBlbmRlbnQuCi0gICAgYXV0byYgcHJpbWFyeUZvbnREYXRh
ID0gKnJlYWxpemVGb250RGF0YUF0KGRlc2NyaXB0aW9uLCAwKTsKLSAgICBhdXRvKiBvcmlnaW5h
bEZvbnREYXRhID0gcHJpbWFyeUZvbnREYXRhLnNpbXBsZUZvbnREYXRhRm9yQ2hhcmFjdGVyKGMp
OworICAgIGF1dG8mIHByaW1hcnlSYW5nZXMgPSByZWFsaXplRmFsbGJhY2tSYW5nZXNBdChkZXNj
cmlwdGlvbiwgMCk7CisgICAgYXV0byogb3JpZ2luYWxGb250RGF0YSA9IHByaW1hcnlSYW5nZXMu
Zm9udERhdGFGb3JDaGFyYWN0ZXIoYyk7CiAgICAgaWYgKCFvcmlnaW5hbEZvbnREYXRhKQotICAg
ICAgICBvcmlnaW5hbEZvbnREYXRhID0gJnByaW1hcnlGb250RGF0YS5zaW1wbGVGb250RGF0YUZv
ckZpcnN0UmFuZ2UoKTsKKyAgICAgICAgb3JpZ2luYWxGb250RGF0YSA9ICZwcmltYXJ5UmFuZ2Vz
LmZvbnREYXRhRm9yRmlyc3RSYW5nZSgpOwogCiAgICAgUmVmUHRyPFNpbXBsZUZvbnREYXRhPiBz
eXN0ZW1GYWxsYmFja0ZvbnREYXRhID0gb3JpZ2luYWxGb250RGF0YS0+c3lzdGVtRmFsbGJhY2tG
b250RGF0YUZvckNoYXJhY3RlcihjLCBkZXNjcmlwdGlvbiwgbV9pc0ZvclBsYXRmb3JtRm9udCk7
CiAgICAgaWYgKCFzeXN0ZW1GYWxsYmFja0ZvbnREYXRhKQpAQCAtMjk1LDkgKzI4NywxMiBAQCBH
bHlwaERhdGEgRm9udEdseXBoczo6Z2x5cGhEYXRhRm9yU3lzdGVtCiAKIEdseXBoRGF0YSBGb250
R2x5cGhzOjpnbHlwaERhdGFGb3JWYXJpYW50KFVDaGFyMzIgYywgY29uc3QgRm9udERlc2NyaXB0
aW9uJiBkZXNjcmlwdGlvbiwgRm9udERhdGFWYXJpYW50IHZhcmlhbnQsIHVuc2lnbmVkIGZhbGxi
YWNrSW5kZXgpCiB7Ci0gICAgd2hpbGUgKGF1dG8qIGZvbnREYXRhID0gcmVhbGl6ZUZvbnREYXRh
QXQoZGVzY3JpcHRpb24sIGZhbGxiYWNrSW5kZXgrKykpIHsKLSAgICAgICAgYXV0byogc2ltcGxl
Rm9udERhdGEgPSBmb250RGF0YS0+c2ltcGxlRm9udERhdGFGb3JDaGFyYWN0ZXIoYyk7Ci0gICAg
ICAgIEdseXBoRGF0YSBkYXRhID0gc2ltcGxlRm9udERhdGEgPyBzaW1wbGVGb250RGF0YS0+Z2x5
cGhEYXRhRm9yQ2hhcmFjdGVyKGMpIDogR2x5cGhEYXRhKCk7CisgICAgd2hpbGUgKHRydWUpIHsK
KyAgICAgICAgYXV0byYgZm9udFNlZ21lbnRzID0gcmVhbGl6ZUZhbGxiYWNrUmFuZ2VzQXQoZGVz
Y3JpcHRpb24sIGZhbGxiYWNrSW5kZXgrKyk7CisgICAgICAgIGlmIChmb250U2VnbWVudHMuaXNF
bXB0eSgpKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGF1dG8qIGZvbnREYXRhID0gZm9u
dFNlZ21lbnRzLmZvbnREYXRhRm9yQ2hhcmFjdGVyKGMpOworICAgICAgICBHbHlwaERhdGEgZGF0
YSA9IGZvbnREYXRhID8gZm9udERhdGEtPmdseXBoRGF0YUZvckNoYXJhY3RlcihjKSA6IEdseXBo
RGF0YSgpOwogICAgICAgICBpZiAoZGF0YS5mb250RGF0YSkgewogICAgICAgICAgICAgLy8gVGhl
IHZhcmlhbnRGb250RGF0YSBmdW5jdGlvbiBzaG91bGQgbm90IG5vcm1hbGx5IHJldHVybiAwLgog
ICAgICAgICAgICAgLy8gQnV0IGlmIGl0IGRvZXMsIHdlIHdpbGwganVzdCByZW5kZXIgdGhlIGNh
cGl0YWwgbGV0dGVyIGJpZy4KQEAgLTMxNiw4ICszMTEsMTEgQEAgR2x5cGhEYXRhIEZvbnRHbHlw
aHM6OmdseXBoRGF0YUZvck5vcm1hbAogewogICAgIGNvbnN0IHVuc2lnbmVkIHBhZ2VOdW1iZXIg
PSBjIC8gR2x5cGhQYWdlOjpzaXplOwogCi0gICAgZm9yICh1bnNpZ25lZCBmYWxsYmFja0luZGV4
ID0gMDsgYXV0byogZm9udERhdGEgPSByZWFsaXplRm9udERhdGFBdChkZXNjcmlwdGlvbiwgZmFs
bGJhY2tJbmRleCk7ICsrZmFsbGJhY2tJbmRleCkgewotICAgICAgICBhdXRvKiBzaW1wbGVGb250
RGF0YSA9IGZvbnREYXRhLT5zaW1wbGVGb250RGF0YUZvckNoYXJhY3RlcihjKTsKKyAgICBmb3Ig
KHVuc2lnbmVkIGZhbGxiYWNrSW5kZXggPSAwOyB0cnVlOyArK2ZhbGxiYWNrSW5kZXgpIHsKKyAg
ICAgICAgYXV0byYgZm9udFNlZ21lbnRzID0gcmVhbGl6ZUZhbGxiYWNrUmFuZ2VzQXQoZGVzY3Jp
cHRpb24sIGZhbGxiYWNrSW5kZXgpOworICAgICAgICBpZiAoZm9udFNlZ21lbnRzLmlzRW1wdHko
KSkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBhdXRvKiBzaW1wbGVGb250RGF0YSA9IGZv
bnRTZWdtZW50cy5mb250RGF0YUZvckNoYXJhY3RlcihjKTsKICAgICAgICAgYXV0byogcGFnZSA9
IHNpbXBsZUZvbnREYXRhID8gc2ltcGxlRm9udERhdGEtPmdseXBoUGFnZShwYWdlTnVtYmVyKSA6
IG51bGxwdHI7CiAgICAgICAgIGlmICghcGFnZSkKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAt
MzQ1LDI1ICszNDMsMjEgQEAgR2x5cGhEYXRhIEZvbnRHbHlwaHM6OmdseXBoRGF0YUZvck5vcm1h
bAogICAgIHJldHVybiBnbHlwaERhdGFGb3JTeXN0ZW1GYWxsYmFjayhjLCBkZXNjcmlwdGlvbiwg
Tm9ybWFsVmFyaWFudCk7CiB9CiAKLXN0YXRpYyBSZWZQdHI8R2x5cGhQYWdlPiBnbHlwaFBhZ2VG
cm9tRm9udERhdGEodW5zaWduZWQgcGFnZU51bWJlciwgY29uc3QgRm9udERhdGEmIGZvbnREYXRh
KQorc3RhdGljIFJlZlB0cjxHbHlwaFBhZ2U+IGdseXBoUGFnZUZyb21Gb250UmFuZ2VzKHVuc2ln
bmVkIHBhZ2VOdW1iZXIsIGNvbnN0IEZvbnRSYW5nZXMmIGZvbnRSYW5nZXMpCiB7CiAgICAgY29u
c3QgU2ltcGxlRm9udERhdGEqIHNpbXBsZUZvbnREYXRhID0gbnVsbHB0cjsKLSAgICBpZiAoZm9u
dERhdGEuaXNTZWdtZW50ZWQoKSkgewotICAgICAgICBVQ2hhcjMyIHBhZ2VSYW5nZUZyb20gPSBw
YWdlTnVtYmVyICogR2x5cGhQYWdlOjpzaXplOwotICAgICAgICBVQ2hhcjMyIHBhZ2VSYW5nZVRv
ID0gcGFnZVJhbmdlRnJvbSArIEdseXBoUGFnZTo6c2l6ZSAtIDE7Ci0gICAgICAgIGF1dG8mIHNl
Z21lbnRlZEZvbnREYXRhID0gZG93bmNhc3Q8U2VnbWVudGVkRm9udERhdGE+KGZvbnREYXRhKTsK
LSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNlZ21lbnRlZEZvbnREYXRhLm51bVJh
bmdlcygpOyArK2kpIHsKLSAgICAgICAgICAgIGF1dG8mIHJhbmdlID0gc2VnbWVudGVkRm9udERh
dGEucmFuZ2VBdChpKTsKLSAgICAgICAgICAgIGlmIChyYW5nZS50bygpKSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKHJhbmdlLmZyb20oKSA8PSBwYWdlUmFuZ2VGcm9tICYmIHBhZ2VSYW5nZVRvIDw9
IHJhbmdlLnRvKCkpCi0gICAgICAgICAgICAgICAgICAgIHNpbXBsZUZvbnREYXRhID0gcmFuZ2Uu
Zm9udERhdGEoKS5nZXQoKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0K
KyAgICBVQ2hhcjMyIHBhZ2VSYW5nZUZyb20gPSBwYWdlTnVtYmVyICogR2x5cGhQYWdlOjpzaXpl
OworICAgIFVDaGFyMzIgcGFnZVJhbmdlVG8gPSBwYWdlUmFuZ2VGcm9tICsgR2x5cGhQYWdlOjpz
aXplIC0gMTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZm9udFJhbmdlcy5zaXplKCk7
ICsraSkgeworICAgICAgICBhdXRvJiByYW5nZSA9IGZvbnRSYW5nZXMucmFuZ2VBdChpKTsKKyAg
ICAgICAgaWYgKHJhbmdlLnRvKCkpIHsKKyAgICAgICAgICAgIGlmIChyYW5nZS5mcm9tKCkgPD0g
cGFnZVJhbmdlRnJvbSAmJiBwYWdlUmFuZ2VUbyA8PSByYW5nZS50bygpKQorICAgICAgICAgICAg
ICAgIHNpbXBsZUZvbnREYXRhID0gcmFuZ2UuZm9udERhdGEoKS5nZXQoKTsKKyAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIGlmICghc2ltcGxlRm9udERhdGEpCi0gICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9IGVsc2UKLSAgICAgICAgc2ltcGxlRm9udERhdGEg
PSAmZG93bmNhc3Q8U2ltcGxlRm9udERhdGE+KGZvbnREYXRhKTsKKyAgICB9CisgICAgaWYgKCFz
aW1wbGVGb250RGF0YSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBpZiAoc2ltcGxl
Rm9udERhdGEtPnBsYXRmb3JtRGF0YSgpLm9yaWVudGF0aW9uKCkgPT0gVmVydGljYWwpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwpAQCAtMzgzLDcgKzM3Nyw3IEBAIEdseXBoRGF0YSBGb250R2x5
cGhzOjpnbHlwaERhdGFGb3JDaGFyYWMKIAogICAgIFJlZlB0cjxHbHlwaFBhZ2U+JiBjYWNoZWRQ
YWdlID0gcGFnZU51bWJlciA/IG1fY2FjaGVkUGFnZXMuYWRkKHBhZ2VOdW1iZXIsIG51bGxwdHIp
Lml0ZXJhdG9yLT52YWx1ZSA6IG1fY2FjaGVkUGFnZVplcm87CiAgICAgaWYgKCFjYWNoZWRQYWdl
KQotICAgICAgICBjYWNoZWRQYWdlID0gZ2x5cGhQYWdlRnJvbUZvbnREYXRhKHBhZ2VOdW1iZXIs
ICpyZWFsaXplRm9udERhdGFBdChkZXNjcmlwdGlvbiwgMCkpOworICAgICAgICBjYWNoZWRQYWdl
ID0gZ2x5cGhQYWdlRnJvbUZvbnRSYW5nZXMocGFnZU51bWJlciwgcmVhbGl6ZUZhbGxiYWNrUmFu
Z2VzQXQoZGVzY3JpcHRpb24sIDApKTsKIAogICAgIEdseXBoRGF0YSBnbHlwaERhdGEgPSBjYWNo
ZWRQYWdlID8gY2FjaGVkUGFnZS0+Z2x5cGhEYXRhRm9yQ2hhcmFjdGVyKGMpIDogR2x5cGhEYXRh
KCk7CiAgICAgaWYgKCFnbHlwaERhdGEuZ2x5cGgpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnRHbHlwaHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250R2x5cGhzLmgJKHJldmlzaW9uIDE3ODM2MikKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRHbHlwaHMuaAkod29ya2luZyBjb3B5
KQpAQCAtMjEsNiArMjEsNyBAQAogI2lmbmRlZiBGb250R2x5cGhzX2gKICNkZWZpbmUgRm9udEds
eXBoc19oCiAKKyNpbmNsdWRlICJGb250UmFuZ2VzLmgiCiAjaW5jbHVkZSAiRm9udFNlbGVjdG9y
LmgiCiAjaW5jbHVkZSAiR2x5cGhQYWdlLmgiCiAjaW5jbHVkZSAiU2ltcGxlRm9udERhdGEuaCIK
QEAgLTY2LDcgKzY3LDcgQEAgcHVibGljOgogICAgIGNvbnN0IFdpZHRoQ2FjaGUmIHdpZHRoQ2Fj
aGUoKSBjb25zdCB7IHJldHVybiBtX3dpZHRoQ2FjaGU7IH0KIAogICAgIGNvbnN0IFNpbXBsZUZv
bnREYXRhJiBwcmltYXJ5U2ltcGxlRm9udERhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJik7Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgRm9udERhdGEqIHJlYWxpemVGb250RGF0YUF0KGNvbnN0
IEZvbnREZXNjcmlwdGlvbiYsIHVuc2lnbmVkIGluZGV4KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBj
b25zdCBGb250UmFuZ2VzJiByZWFsaXplRmFsbGJhY2tSYW5nZXNBdChjb25zdCBGb250RGVzY3Jp
cHRpb24mLCB1bnNpZ25lZCBmYWxsYmFja0luZGV4KTsKIAogcHJpdmF0ZToKICAgICBGb250R2x5
cGhzKFBhc3NSZWZQdHI8Rm9udFNlbGVjdG9yPik7CkBAIC03Niw3ICs3Nyw4IEBAIHByaXZhdGU6
CiAgICAgR2x5cGhEYXRhIGdseXBoRGF0YUZvck5vcm1hbFZhcmlhbnQoVUNoYXIzMiwgY29uc3Qg
Rm9udERlc2NyaXB0aW9uJik7CiAgICAgR2x5cGhEYXRhIGdseXBoRGF0YUZvclZhcmlhbnQoVUNo
YXIzMiwgY29uc3QgRm9udERlc2NyaXB0aW9uJiwgRm9udERhdGFWYXJpYW50LCB1bnNpZ25lZCBm
YWxsYmFja0luZGV4KTsKIAotICAgIFZlY3RvcjxSZWY8Rm9udERhdGE+LCAxPiBtX3JlYWxpemVk
Rm9udERhdGE7CisgICAgVmVjdG9yPEZvbnRSYW5nZXMsIDE+IG1fcmVhbGl6ZWRGYWxsYmFja1Jh
bmdlczsKKyAgICB1bnNpZ25lZCBtX2xhc3RSZWFsaXplZEZhbGxiYWNrSW5kZXggeyAwIH07CiAK
ICAgICBSZWZQdHI8R2x5cGhQYWdlPiBtX2NhY2hlZFBhZ2VaZXJvOwogICAgIEhhc2hNYXA8aW50
LCBSZWZQdHI8R2x5cGhQYWdlPj4gbV9jYWNoZWRQYWdlczsKQEAgLTg1LDEwICs4NywxMSBAQCBw
cml2YXRlOgogCiAgICAgY29uc3QgU2ltcGxlRm9udERhdGEqIG1fY2FjaGVkUHJpbWFyeVNpbXBs
ZUZvbnREYXRhOwogICAgIFJlZlB0cjxGb250U2VsZWN0b3I+IG1fZm9udFNlbGVjdG9yOworCiAg
ICAgV2lkdGhDYWNoZSBtX3dpZHRoQ2FjaGU7CisKICAgICB1bnNpZ25lZCBtX2ZvbnRTZWxlY3Rv
clZlcnNpb247CiAgICAgdW5zaWduZWQgc2hvcnQgbV9nZW5lcmF0aW9uOwotICAgIHVuc2lnbmVk
IG1fbGFzdFJlYWxpemVkRmFtaWx5SW5kZXggeyAwIH07CiAgICAgUGl0Y2ggbV9waXRjaCB7IFVu
a25vd25QaXRjaCB9OwogICAgIGJvb2wgbV9pc0ZvclBsYXRmb3JtRm9udCB7IGZhbHNlIH07CiB9
OwpAQCAtMTA0LDEwICsxMDcsMTAgQEAgaW5saW5lIGNvbnN0IFNpbXBsZUZvbnREYXRhJiBGb250
R2x5cGhzOgogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgaWYgKCFtX2NhY2hl
ZFByaW1hcnlTaW1wbGVGb250RGF0YSkgewotICAgICAgICBhdXRvJiBmb250RGF0YSA9ICpyZWFs
aXplRm9udERhdGFBdChkZXNjcmlwdGlvbiwgMCk7Ci0gICAgICAgIG1fY2FjaGVkUHJpbWFyeVNp
bXBsZUZvbnREYXRhID0gZm9udERhdGEuc2ltcGxlRm9udERhdGFGb3JDaGFyYWN0ZXIoJyAnKTsK
KyAgICAgICAgYXV0byYgcHJpbWFyeVJhbmdlcyA9IHJlYWxpemVGYWxsYmFja1Jhbmdlc0F0KGRl
c2NyaXB0aW9uLCAwKTsKKyAgICAgICAgbV9jYWNoZWRQcmltYXJ5U2ltcGxlRm9udERhdGEgPSBw
cmltYXJ5UmFuZ2VzLmZvbnREYXRhRm9yQ2hhcmFjdGVyKCcgJyk7CiAgICAgICAgIGlmICghbV9j
YWNoZWRQcmltYXJ5U2ltcGxlRm9udERhdGEpCi0gICAgICAgICAgICBtX2NhY2hlZFByaW1hcnlT
aW1wbGVGb250RGF0YSA9ICZmb250RGF0YS5zaW1wbGVGb250RGF0YUZvckZpcnN0UmFuZ2UoKTsK
KyAgICAgICAgICAgIG1fY2FjaGVkUHJpbWFyeVNpbXBsZUZvbnREYXRhID0gJnByaW1hcnlSYW5n
ZXMuZm9udERhdGFGb3JGaXJzdFJhbmdlKCk7CiAgICAgfQogICAgIHJldHVybiAqbV9jYWNoZWRQ
cmltYXJ5U2ltcGxlRm9udERhdGE7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb250UmFuZ2VzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250UmFuZ2VzLmNwcAkocmV2aXNpb24gMTc4MjQ2KQkoZnJvbSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TZWdtZW50ZWRGb250RGF0YS5jcHA6MTc4MjQ2
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFJhbmdlcy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSw4NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCwg
MjAwOSwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiU2VnbWVudGVkRm9udERhdGEuaCIKKworI2luY2x1ZGUgIlNpbXBsZUZvbnREYXRhLmgi
CisjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitTZWdtZW50ZWRGb250RGF0YTo6U2VnbWVu
dGVkRm9udERhdGEoKQoreworICAgIAorfQorCitTZWdtZW50ZWRGb250RGF0YTo6flNlZ21lbnRl
ZEZvbnREYXRhKCkKK3sKK30KKworY29uc3QgU2ltcGxlRm9udERhdGEqIFNlZ21lbnRlZEZvbnRE
YXRhOjpzaW1wbGVGb250RGF0YUZvckNoYXJhY3RlcihVQ2hhcjMyIGMpIGNvbnN0Cit7CisgICAg
Zm9yIChhdXRvJiByYW5nZSA6IG1fcmFuZ2VzKSB7CisgICAgICAgIGlmIChyYW5nZS5mcm9tKCkg
PD0gYyAmJiBjIDw9IHJhbmdlLnRvKCkpCisgICAgICAgICAgICByZXR1cm4gcmFuZ2UuZm9udERh
dGEoKS5nZXQoKTsKKyAgICB9CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK2NvbnN0IFNpbXBs
ZUZvbnREYXRhJiBTZWdtZW50ZWRGb250RGF0YTo6c2ltcGxlRm9udERhdGFGb3JGaXJzdFJhbmdl
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gKm1fcmFuZ2VzWzBdLmZvbnREYXRhKCk7Cit9CisKK2Jv
b2wgU2VnbWVudGVkRm9udERhdGE6OmlzQ3VzdG9tRm9udCgpIGNvbnN0Cit7CisgICAgLy8gQWxs
IHNlZ21lbnRlZCBmb250cyBhcmUgY3VzdG9tIGZvbnRzLgorICAgIHJldHVybiB0cnVlOworfQor
Citib29sIFNlZ21lbnRlZEZvbnREYXRhOjppc0xvYWRpbmcoKSBjb25zdAoreworICAgIGZvciAo
YXV0byYgcmFuZ2UgOiBtX3JhbmdlcykgeworICAgICAgICBpZiAocmFuZ2UuZm9udERhdGEoKS0+
aXNMb2FkaW5nKCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJu
IGZhbHNlOworfQorCitib29sIFNlZ21lbnRlZEZvbnREYXRhOjppc1NlZ21lbnRlZCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKKyNpZm5kZWYgTkRFQlVHCitTdHJpbmcgU2VnbWVu
dGVkRm9udERhdGE6OmRlc2NyaXB0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gIltzZWdtZW50
ZWQgZm9udF0iOworfQorI2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRSYW5nZXMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRSYW5nZXMuY3BwCSh3b3Jr
aW5nIGNvcHkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UmFuZ2Vz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBAQAogICovCiAKICNpbmNsdWRlICJj
b25maWcuaCIKLSNpbmNsdWRlICJTZWdtZW50ZWRGb250RGF0YS5oIgorI2luY2x1ZGUgIkZvbnRS
YW5nZXMuaCIKIAogI2luY2x1ZGUgIlNpbXBsZUZvbnREYXRhLmgiCiAjaW5jbHVkZSA8d3RmL0Fz
c2VydGlvbnMuaD4KQEAgLTMyLDE2ICszMiwyMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LVNlZ21lbnRlZEZvbnREYXRhOjpTZWdtZW50ZWRGb250RGF0YSgpCitGb250UmFuZ2VzOjpGb250
UmFuZ2VzKCkKIHsKLSAgICAKIH0KIAotU2VnbWVudGVkRm9udERhdGE6On5TZWdtZW50ZWRGb250
RGF0YSgpCitGb250UmFuZ2VzOjpGb250UmFuZ2VzKFJlZlB0cjxTaW1wbGVGb250RGF0YT4mJiBm
b250RGF0YSkKIHsKKyAgICBpZiAoZm9udERhdGEpCisgICAgICAgIG1fcmFuZ2VzLmFwcGVuZChS
YW5nZSB7IDAsIDB4N0ZGRkZGRkYsIFdURjo6bW92ZShmb250RGF0YSkgfSk7CiB9CiAKLWNvbnN0
IFNpbXBsZUZvbnREYXRhKiBTZWdtZW50ZWRGb250RGF0YTo6c2ltcGxlRm9udERhdGFGb3JDaGFy
YWN0ZXIoVUNoYXIzMiBjKSBjb25zdAorRm9udFJhbmdlczo6fkZvbnRSYW5nZXMoKQoreworfQor
Citjb25zdCBTaW1wbGVGb250RGF0YSogRm9udFJhbmdlczo6Zm9udERhdGFGb3JDaGFyYWN0ZXIo
VUNoYXIzMiBjKSBjb25zdAogewogICAgIGZvciAoYXV0byYgcmFuZ2UgOiBtX3Jhbmdlcykgewog
ICAgICAgICBpZiAocmFuZ2UuZnJvbSgpIDw9IGMgJiYgYyA8PSByYW5nZS50bygpKQpAQCAtNTAs
MTggKzU1LDEyIEBAIGNvbnN0IFNpbXBsZUZvbnREYXRhKiBTZWdtZW50ZWRGb250RGF0YToKICAg
ICByZXR1cm4gbnVsbHB0cjsKIH0KIAotY29uc3QgU2ltcGxlRm9udERhdGEmIFNlZ21lbnRlZEZv
bnREYXRhOjpzaW1wbGVGb250RGF0YUZvckZpcnN0UmFuZ2UoKSBjb25zdAorY29uc3QgU2ltcGxl
Rm9udERhdGEmIEZvbnRSYW5nZXM6OmZvbnREYXRhRm9yRmlyc3RSYW5nZSgpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuICptX3Jhbmdlc1swXS5mb250RGF0YSgpOwogfQogCi1ib29sIFNlZ21lbnRlZEZv
bnREYXRhOjppc0N1c3RvbUZvbnQoKSBjb25zdAotewotICAgIC8vIEFsbCBzZWdtZW50ZWQgZm9u
dHMgYXJlIGN1c3RvbSBmb250cy4KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBTZWdtZW50
ZWRGb250RGF0YTo6aXNMb2FkaW5nKCkgY29uc3QKK2Jvb2wgRm9udFJhbmdlczo6aXNMb2FkaW5n
KCkgY29uc3QKIHsKICAgICBmb3IgKGF1dG8mIHJhbmdlIDogbV9yYW5nZXMpIHsKICAgICAgICAg
aWYgKHJhbmdlLmZvbnREYXRhKCktPmlzTG9hZGluZygpKQpAQCAtNzAsMTYgKzY5LDQgQEAgYm9v
bCBTZWdtZW50ZWRGb250RGF0YTo6aXNMb2FkaW5nKCkgY29ucwogICAgIHJldHVybiBmYWxzZTsK
IH0KIAotYm9vbCBTZWdtZW50ZWRGb250RGF0YTo6aXNTZWdtZW50ZWQoKSBjb25zdAotewotICAg
IHJldHVybiB0cnVlOwotfQotCi0jaWZuZGVmIE5ERUJVRwotU3RyaW5nIFNlZ21lbnRlZEZvbnRE
YXRhOjpkZXNjcmlwdGlvbigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuICJbc2VnbWVudGVkIGZvbnRd
IjsKLX0KLSNlbmRpZgotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UmFuZ2VzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFJhbmdlcy5oCShyZXZpc2lvbiAxNzgyNDYp
CShmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NlZ21lbnRlZEZvbnREYXRh
Lmg6MTc4MjQ2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFJhbmdl
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDgsIDIwMDksIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBTZWdtZW50ZWRG
b250RGF0YV9oCisjZGVmaW5lIFNlZ21lbnRlZEZvbnREYXRhX2gKKworI2luY2x1ZGUgIkZvbnRE
YXRhLmgiCisjaW5jbHVkZSA8d3RmL1R5cGVDYXN0cy5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTaW1wbGVGb250RGF0YTsKKworc3Ry
dWN0IEZvbnREYXRhUmFuZ2UgeworICAgIEZvbnREYXRhUmFuZ2UoVUNoYXIzMiBmcm9tLCBVQ2hh
cjMyIHRvLCBQYXNzUmVmUHRyPFNpbXBsZUZvbnREYXRhPiBmb250RGF0YSkKKyAgICAgICAgOiBt
X2Zyb20oZnJvbSkKKyAgICAgICAgLCBtX3RvKHRvKQorICAgICAgICAsIG1fZm9udERhdGEoZm9u
dERhdGEpCisgICAgeworICAgIH0KKworICAgIFVDaGFyMzIgZnJvbSgpIGNvbnN0IHsgcmV0dXJu
IG1fZnJvbTsgfQorICAgIFVDaGFyMzIgdG8oKSBjb25zdCB7IHJldHVybiBtX3RvOyB9CisgICAg
UGFzc1JlZlB0cjxTaW1wbGVGb250RGF0YT4gZm9udERhdGEoKSBjb25zdCB7IHJldHVybiBtX2Zv
bnREYXRhOyB9CisKK3ByaXZhdGU6CisgICAgVUNoYXIzMiBtX2Zyb207CisgICAgVUNoYXIzMiBt
X3RvOworICAgIFJlZlB0cjxTaW1wbGVGb250RGF0YT4gbV9mb250RGF0YTsKK307CisKK2NsYXNz
IFNlZ21lbnRlZEZvbnREYXRhIDogcHVibGljIEZvbnREYXRhIHsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgUGFzc1JlZlB0cjxTZWdtZW50ZWRGb250RGF0YT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRS
ZWYobmV3IFNlZ21lbnRlZEZvbnREYXRhKTsgfQorCisgICAgdmlydHVhbCB+U2VnbWVudGVkRm9u
dERhdGEoKTsKKworICAgIHZvaWQgYXBwZW5kUmFuZ2UoY29uc3QgRm9udERhdGFSYW5nZSYgcmFu
Z2UpIHsgbV9yYW5nZXMuYXBwZW5kKHJhbmdlKTsgfQorICAgIHVuc2lnbmVkIG51bVJhbmdlcygp
IGNvbnN0IHsgcmV0dXJuIG1fcmFuZ2VzLnNpemUoKTsgfQorICAgIGNvbnN0IEZvbnREYXRhUmFu
Z2UmIHJhbmdlQXQodW5zaWduZWQgaSkgY29uc3QgeyByZXR1cm4gbV9yYW5nZXNbaV07IH0KKwor
I2lmbmRlZiBOREVCVUcKKyAgICB2aXJ0dWFsIFN0cmluZyBkZXNjcmlwdGlvbigpIGNvbnN0Owor
I2VuZGlmCisKK3ByaXZhdGU6CisgICAgU2VnbWVudGVkRm9udERhdGEoKTsKKworICAgIHZpcnR1
YWwgY29uc3QgU2ltcGxlRm9udERhdGEqIHNpbXBsZUZvbnREYXRhRm9yQ2hhcmFjdGVyKFVDaGFy
MzIpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgY29uc3QgU2ltcGxlRm9udERhdGEmIHNp
bXBsZUZvbnREYXRhRm9yRmlyc3RSYW5nZSgpIGNvbnN0IG92ZXJyaWRlOworCisgICAgdmlydHVh
bCBib29sIGlzQ3VzdG9tRm9udCgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBpc0xvYWRpbmco
KSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNTZWdtZW50ZWQoKSBjb25zdDsKKworICAgIFJl
ZlB0cjxTaW1wbGVGb250RGF0YT4gbV9udWxsRm9udERhdGE7CisgICAgVmVjdG9yPEZvbnREYXRh
UmFuZ2UsIDE+IG1fcmFuZ2VzOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCitTUEVD
SUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OlNlZ21lbnRlZEZvbnREYXRhKQorICAg
IHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpGb250RGF0YSYgZm9udERhdGEpIHsg
cmV0dXJuIGZvbnREYXRhLmlzU2VnbWVudGVkKCk7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNf
RU5EKCkKKworI2VuZGlmIC8vIFNlZ21lbnRlZEZvbnREYXRhX2gKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRSYW5nZXMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UmFuZ2VzLmgJKHdvcmtpbmcgY29weSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRSYW5nZXMuaAkod29ya2luZyBj
b3B5KQpAQCAtMjMsNjcgKzIzLDUzIEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0jaWZuZGVm
IFNlZ21lbnRlZEZvbnREYXRhX2gKLSNkZWZpbmUgU2VnbWVudGVkRm9udERhdGFfaAorI2lmbmRl
ZiBGb250UmFuZ2VzX2gKKyNkZWZpbmUgRm9udFJhbmdlc19oCiAKLSNpbmNsdWRlICJGb250RGF0
YS5oIgorI2luY2x1ZGUgIlNpbXBsZUZvbnREYXRhLmgiCiAjaW5jbHVkZSA8d3RmL1R5cGVDYXN0
cy5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1j
bGFzcyBTaW1wbGVGb250RGF0YTsKLQotc3RydWN0IEZvbnREYXRhUmFuZ2UgewotICAgIEZvbnRE
YXRhUmFuZ2UoVUNoYXIzMiBmcm9tLCBVQ2hhcjMyIHRvLCBQYXNzUmVmUHRyPFNpbXBsZUZvbnRE
YXRhPiBmb250RGF0YSkKLSAgICAgICAgOiBtX2Zyb20oZnJvbSkKLSAgICAgICAgLCBtX3RvKHRv
KQotICAgICAgICAsIG1fZm9udERhdGEoZm9udERhdGEpCi0gICAgewotICAgIH0KLQotICAgIFVD
aGFyMzIgZnJvbSgpIGNvbnN0IHsgcmV0dXJuIG1fZnJvbTsgfQotICAgIFVDaGFyMzIgdG8oKSBj
b25zdCB7IHJldHVybiBtX3RvOyB9Ci0gICAgUGFzc1JlZlB0cjxTaW1wbGVGb250RGF0YT4gZm9u
dERhdGEoKSBjb25zdCB7IHJldHVybiBtX2ZvbnREYXRhOyB9Ci0KLXByaXZhdGU6Ci0gICAgVUNo
YXIzMiBtX2Zyb207Ci0gICAgVUNoYXIzMiBtX3RvOwotICAgIFJlZlB0cjxTaW1wbGVGb250RGF0
YT4gbV9mb250RGF0YTsKLX07Ci0KLWNsYXNzIFNlZ21lbnRlZEZvbnREYXRhIDogcHVibGljIEZv
bnREYXRhIHsKK2NsYXNzIEZvbnRSYW5nZXMgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFNlZ21lbnRlZEZvbnREYXRhPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZihuZXcgU2Vn
bWVudGVkRm9udERhdGEpOyB9Ci0KLSAgICB2aXJ0dWFsIH5TZWdtZW50ZWRGb250RGF0YSgpOwot
Ci0gICAgdm9pZCBhcHBlbmRSYW5nZShjb25zdCBGb250RGF0YVJhbmdlJiByYW5nZSkgeyBtX3Jh
bmdlcy5hcHBlbmQocmFuZ2UpOyB9Ci0gICAgdW5zaWduZWQgbnVtUmFuZ2VzKCkgY29uc3QgeyBy
ZXR1cm4gbV9yYW5nZXMuc2l6ZSgpOyB9Ci0gICAgY29uc3QgRm9udERhdGFSYW5nZSYgcmFuZ2VB
dCh1bnNpZ25lZCBpKSBjb25zdCB7IHJldHVybiBtX3Jhbmdlc1tpXTsgfQotCi0jaWZuZGVmIE5E
RUJVRwotICAgIHZpcnR1YWwgU3RyaW5nIGRlc2NyaXB0aW9uKCkgY29uc3Q7Ci0jZW5kaWYKKyAg
ICBzdHJ1Y3QgUmFuZ2UgeworICAgICAgICBSYW5nZShVQ2hhcjMyIGZyb20sIFVDaGFyMzIgdG8s
IFJlZlB0cjxTaW1wbGVGb250RGF0YT4mJiBmb250RGF0YSkKKyAgICAgICAgICAgIDogbV9mcm9t
KGZyb20pCisgICAgICAgICAgICAsIG1fdG8odG8pCisgICAgICAgICAgICAsIG1fZm9udERhdGEo
V1RGOjptb3ZlKGZvbnREYXRhKSkKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgVUNo
YXIzMiBmcm9tKCkgY29uc3QgeyByZXR1cm4gbV9mcm9tOyB9CisgICAgICAgIFVDaGFyMzIgdG8o
KSBjb25zdCB7IHJldHVybiBtX3RvOyB9CisgICAgICAgIFJlZlB0cjxTaW1wbGVGb250RGF0YT4g
Zm9udERhdGEoKSBjb25zdCB7IHJldHVybiBtX2ZvbnREYXRhOyB9CisKKyAgICBwcml2YXRlOgor
ICAgICAgICBVQ2hhcjMyIG1fZnJvbTsKKyAgICAgICAgVUNoYXIzMiBtX3RvOworICAgICAgICBS
ZWZQdHI8U2ltcGxlRm9udERhdGE+IG1fZm9udERhdGE7CisgICAgfTsKKworICAgIEZvbnRSYW5n
ZXMoKTsKKyAgICBleHBsaWNpdCBGb250UmFuZ2VzKFJlZlB0cjxTaW1wbGVGb250RGF0YT4mJik7
CisgICAgfkZvbnRSYW5nZXMoKTsKKworICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJu
IG1fcmFuZ2VzLmlzRW1wdHkoKTsgfQorCisgICAgdm9pZCBhcHBlbmRSYW5nZShjb25zdCBSYW5n
ZSYgcmFuZ2UpIHsgbV9yYW5nZXMuYXBwZW5kKHJhbmdlKTsgfQorICAgIHVuc2lnbmVkIHNpemUo
KSBjb25zdCB7IHJldHVybiBtX3Jhbmdlcy5zaXplKCk7IH0KKyAgICBjb25zdCBSYW5nZSYgcmFu
Z2VBdCh1bnNpZ25lZCBpKSBjb25zdCB7IHJldHVybiBtX3Jhbmdlc1tpXTsgfQorCisgICAgY29u
c3QgU2ltcGxlRm9udERhdGEqIGZvbnREYXRhRm9yQ2hhcmFjdGVyKFVDaGFyMzIpIGNvbnN0Owor
ICAgIGNvbnN0IFNpbXBsZUZvbnREYXRhJiBmb250RGF0YUZvckZpcnN0UmFuZ2UoKSBjb25zdDsK
KyAgICBib29sIGlzTG9hZGluZygpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIFNlZ21lbnRlZEZv
bnREYXRhKCk7Ci0KLSAgICB2aXJ0dWFsIGNvbnN0IFNpbXBsZUZvbnREYXRhKiBzaW1wbGVGb250
RGF0YUZvckNoYXJhY3RlcihVQ2hhcjMyKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGNv
bnN0IFNpbXBsZUZvbnREYXRhJiBzaW1wbGVGb250RGF0YUZvckZpcnN0UmFuZ2UoKSBjb25zdCBv
dmVycmlkZTsKLQotICAgIHZpcnR1YWwgYm9vbCBpc0N1c3RvbUZvbnQoKSBjb25zdDsKLSAgICB2
aXJ0dWFsIGJvb2wgaXNMb2FkaW5nKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGlzU2VnbWVu
dGVkKCkgY29uc3Q7Ci0KLSAgICBSZWZQdHI8U2ltcGxlRm9udERhdGE+IG1fbnVsbEZvbnREYXRh
OwotICAgIFZlY3RvcjxGb250RGF0YVJhbmdlLCAxPiBtX3JhbmdlczsKKyAgICBWZWN0b3I8UmFu
Z2UsIDE+IG1fcmFuZ2VzOwogfTsKIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi1TUEVDSUFM
SVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OlNlZ21lbnRlZEZvbnREYXRhKQotICAgIHN0
YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpGb250RGF0YSYgZm9udERhdGEpIHsgcmV0
dXJuIGZvbnREYXRhLmlzU2VnbWVudGVkKCk7IH0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5E
KCkKK30KIAotI2VuZGlmIC8vIFNlZ21lbnRlZEZvbnREYXRhX2gKKyNlbmRpZgpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFNlbGVjdG9yLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFNlbGVjdG9yLmgJKHJldmlz
aW9uIDE3ODM2MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRTZWxl
Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxMyArMjYsMTMgQEAKICNpZm5kZWYgRm9udFNl
bGVjdG9yX2gKICNkZWZpbmUgRm9udFNlbGVjdG9yX2gKIAorI2luY2x1ZGUgIkZvbnRSYW5nZXMu
aCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1j
bGFzcyBGb250RGF0YTsKIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKIGNsYXNzIEZvbnRTZWxlY3Rv
ckNsaWVudDsKIApAQCAtNDAsOSArNDAsOCBAQCBjbGFzcyBGb250U2VsZWN0b3IgOiBwdWJsaWMg
UmVmQ291bnRlZDxGCiBwdWJsaWM6CiAgICAgdmlydHVhbCB+Rm9udFNlbGVjdG9yKCkgeyB9CiAK
LSAgICAvLyBGSVhNRTogUmVtb3ZlIHRoZSAiZ2V0IiBwcmVmaXggZnJvbSB0aGVzZSB0d28gbWVt
YmVyIGZ1bmN0aW9ucwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGb250RGF0YT4gZ2V0Rm9udERh
dGEoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHlOYW1l
KSA9IDA7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPEZvbnREYXRhPiBnZXRGYWxsYmFja0ZvbnRE
YXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIHNpemVfdCkgPSAwOworICAgIHZpcnR1YWwgRm9u
dFJhbmdlcyBmb250UmFuZ2VzRm9yRmFtaWx5KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGNvbnN0
IEF0b21pY1N0cmluZyYpID0gMDsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8U2ltcGxlRm9udERh
dGE+IGZhbGxiYWNrRm9udERhdGFBdChjb25zdCBGb250RGVzY3JpcHRpb24mLCBzaXplX3QpID0g
MDsKIAogICAgIHZpcnR1YWwgc2l6ZV90IGZhbGxiYWNrRm9udERhdGFDb3VudCgpID0gMDsKICAg
ICB2aXJ0dWFsIGJvb2wgcmVzb2x2ZXNGYW1pbHlGb3IoY29uc3QgRm9udERlc2NyaXB0aW9uJikg
Y29uc3QgPSAwOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2VnbWVu
dGVkRm9udERhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1NlZ21lbnRlZEZvbnREYXRhLmNwcAkocmV2aXNpb24gMTc4MzYyKQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2VnbWVudGVkRm9udERhdGEuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDg1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDks
IDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQot
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUg
IlNlZ21lbnRlZEZvbnREYXRhLmgiCi0KLSNpbmNsdWRlICJTaW1wbGVGb250RGF0YS5oIgotI2lu
Y2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotU2VnbWVudGVkRm9udERhdGE6OlNlZ21lbnRlZEZv
bnREYXRhKCkKLXsKLSAgICAKLX0KLQotU2VnbWVudGVkRm9udERhdGE6On5TZWdtZW50ZWRGb250
RGF0YSgpCi17Ci19Ci0KLWNvbnN0IFNpbXBsZUZvbnREYXRhKiBTZWdtZW50ZWRGb250RGF0YTo6
c2ltcGxlRm9udERhdGFGb3JDaGFyYWN0ZXIoVUNoYXIzMiBjKSBjb25zdAotewotICAgIGZvciAo
YXV0byYgcmFuZ2UgOiBtX3JhbmdlcykgewotICAgICAgICBpZiAocmFuZ2UuZnJvbSgpIDw9IGMg
JiYgYyA8PSByYW5nZS50bygpKQotICAgICAgICAgICAgcmV0dXJuIHJhbmdlLmZvbnREYXRhKCku
Z2V0KCk7Ci0gICAgfQotICAgIHJldHVybiBudWxscHRyOwotfQotCi1jb25zdCBTaW1wbGVGb250
RGF0YSYgU2VnbWVudGVkRm9udERhdGE6OnNpbXBsZUZvbnREYXRhRm9yRmlyc3RSYW5nZSgpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuICptX3Jhbmdlc1swXS5mb250RGF0YSgpOwotfQotCi1ib29sIFNl
Z21lbnRlZEZvbnREYXRhOjppc0N1c3RvbUZvbnQoKSBjb25zdAotewotICAgIC8vIEFsbCBzZWdt
ZW50ZWQgZm9udHMgYXJlIGN1c3RvbSBmb250cy4KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9v
bCBTZWdtZW50ZWRGb250RGF0YTo6aXNMb2FkaW5nKCkgY29uc3QKLXsKLSAgICBmb3IgKGF1dG8m
IHJhbmdlIDogbV9yYW5nZXMpIHsKLSAgICAgICAgaWYgKHJhbmdlLmZvbnREYXRhKCktPmlzTG9h
ZGluZygpKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHJldHVybiBmYWxz
ZTsKLX0KLQotYm9vbCBTZWdtZW50ZWRGb250RGF0YTo6aXNTZWdtZW50ZWQoKSBjb25zdAotewot
ICAgIHJldHVybiB0cnVlOwotfQotCi0jaWZuZGVmIE5ERUJVRwotU3RyaW5nIFNlZ21lbnRlZEZv
bnREYXRhOjpkZXNjcmlwdGlvbigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuICJbc2VnbWVudGVkIGZv
bnRdIjsKLX0KLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TZWdtZW50ZWRGb250RGF0YS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NlZ21lbnRlZEZvbnREYXRhLmgJ
KHJldmlzaW9uIDE3ODM2MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Nl
Z21lbnRlZEZvbnREYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsODkgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgot
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZu
ZGVmIFNlZ21lbnRlZEZvbnREYXRhX2gKLSNkZWZpbmUgU2VnbWVudGVkRm9udERhdGFfaAotCi0j
aW5jbHVkZSAiRm9udERhdGEuaCIKLSNpbmNsdWRlIDx3dGYvVHlwZUNhc3RzLmg+Ci0jaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFNpbXBsZUZv
bnREYXRhOwotCi1zdHJ1Y3QgRm9udERhdGFSYW5nZSB7Ci0gICAgRm9udERhdGFSYW5nZShVQ2hh
cjMyIGZyb20sIFVDaGFyMzIgdG8sIFBhc3NSZWZQdHI8U2ltcGxlRm9udERhdGE+IGZvbnREYXRh
KQotICAgICAgICA6IG1fZnJvbShmcm9tKQotICAgICAgICAsIG1fdG8odG8pCi0gICAgICAgICwg
bV9mb250RGF0YShmb250RGF0YSkKLSAgICB7Ci0gICAgfQotCi0gICAgVUNoYXIzMiBmcm9tKCkg
Y29uc3QgeyByZXR1cm4gbV9mcm9tOyB9Ci0gICAgVUNoYXIzMiB0bygpIGNvbnN0IHsgcmV0dXJu
IG1fdG87IH0KLSAgICBQYXNzUmVmUHRyPFNpbXBsZUZvbnREYXRhPiBmb250RGF0YSgpIGNvbnN0
IHsgcmV0dXJuIG1fZm9udERhdGE7IH0KLQotcHJpdmF0ZToKLSAgICBVQ2hhcjMyIG1fZnJvbTsK
LSAgICBVQ2hhcjMyIG1fdG87Ci0gICAgUmVmUHRyPFNpbXBsZUZvbnREYXRhPiBtX2ZvbnREYXRh
OwotfTsKLQotY2xhc3MgU2VnbWVudGVkRm9udERhdGEgOiBwdWJsaWMgRm9udERhdGEgewotcHVi
bGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlZ21lbnRlZEZvbnREYXRhPiBjcmVhdGUoKSB7
IHJldHVybiBhZG9wdFJlZihuZXcgU2VnbWVudGVkRm9udERhdGEpOyB9Ci0KLSAgICB2aXJ0dWFs
IH5TZWdtZW50ZWRGb250RGF0YSgpOwotCi0gICAgdm9pZCBhcHBlbmRSYW5nZShjb25zdCBGb250
RGF0YVJhbmdlJiByYW5nZSkgeyBtX3Jhbmdlcy5hcHBlbmQocmFuZ2UpOyB9Ci0gICAgdW5zaWdu
ZWQgbnVtUmFuZ2VzKCkgY29uc3QgeyByZXR1cm4gbV9yYW5nZXMuc2l6ZSgpOyB9Ci0gICAgY29u
c3QgRm9udERhdGFSYW5nZSYgcmFuZ2VBdCh1bnNpZ25lZCBpKSBjb25zdCB7IHJldHVybiBtX3Jh
bmdlc1tpXTsgfQotCi0jaWZuZGVmIE5ERUJVRwotICAgIHZpcnR1YWwgU3RyaW5nIGRlc2NyaXB0
aW9uKCkgY29uc3Q7Ci0jZW5kaWYKLQotcHJpdmF0ZToKLSAgICBTZWdtZW50ZWRGb250RGF0YSgp
OwotCi0gICAgdmlydHVhbCBjb25zdCBTaW1wbGVGb250RGF0YSogc2ltcGxlRm9udERhdGFGb3JD
aGFyYWN0ZXIoVUNoYXIzMikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBjb25zdCBTaW1w
bGVGb250RGF0YSYgc2ltcGxlRm9udERhdGFGb3JGaXJzdFJhbmdlKCkgY29uc3Qgb3ZlcnJpZGU7
Ci0KLSAgICB2aXJ0dWFsIGJvb2wgaXNDdXN0b21Gb250KCkgY29uc3Q7Ci0gICAgdmlydHVhbCBi
b29sIGlzTG9hZGluZygpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBpc1NlZ21lbnRlZCgpIGNv
bnN0OwotCi0gICAgUmVmUHRyPFNpbXBsZUZvbnREYXRhPiBtX251bGxGb250RGF0YTsKLSAgICBW
ZWN0b3I8Rm9udERhdGFSYW5nZSwgMT4gbV9yYW5nZXM7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCi0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6U2VnbWVudGVk
Rm9udERhdGEpCi0gICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OkZvbnREYXRh
JiBmb250RGF0YSkgeyByZXR1cm4gZm9udERhdGEuaXNTZWdtZW50ZWQoKTsgfQotU1BFQ0lBTEla
RV9UWVBFX1RSQUlUU19FTkQoKQotCi0jZW5kaWYgLy8gU2VnbWVudGVkRm9udERhdGFfaApJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2ltcGxlRm9udERhdGEuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NpbXBsZUZvbnRE
YXRhLmNwcAkocmV2aXNpb24gMTc4MzYyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvU2ltcGxlRm9udERhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTcsMTYgKzE1Nyw2
IEBAIFNpbXBsZUZvbnREYXRhOjp+U2ltcGxlRm9udERhdGEoKQogICAgIHJlbW92ZUZyb21TeXN0
ZW1GYWxsYmFja0NhY2hlKCk7CiB9CiAKLWNvbnN0IFNpbXBsZUZvbnREYXRhKiBTaW1wbGVGb250
RGF0YTo6c2ltcGxlRm9udERhdGFGb3JDaGFyYWN0ZXIoVUNoYXIzMikgY29uc3QKLXsKLSAgICBy
ZXR1cm4gdGhpczsKLX0KLQotY29uc3QgU2ltcGxlRm9udERhdGEmIFNpbXBsZUZvbnREYXRhOjpz
aW1wbGVGb250RGF0YUZvckZpcnN0UmFuZ2UoKSBjb25zdAotewotICAgIHJldHVybiAqdGhpczsK
LX0KLQogc3RhdGljIGJvb2wgZmlsbEdseXBoUGFnZShHbHlwaFBhZ2UmIHBhZ2VUb0ZpbGwsIHVu
c2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoLCBVQ2hhciogYnVmZmVyLCB1bnNpZ25lZCBi
dWZmZXJMZW5ndGgsIGNvbnN0IFNpbXBsZUZvbnREYXRhKiBmb250RGF0YSkKIHsKICNpZiBFTkFC
TEUoU1ZHX0ZPTlRTKQpAQCAtMjg4LDExICsyNzgsNiBAQCBHbHlwaERhdGEgU2ltcGxlRm9udERh
dGE6OmdseXBoRGF0YUZvckNoCiAgICAgcmV0dXJuIHBhZ2UtPmdseXBoRGF0YUZvckNoYXJhY3Rl
cihjaGFyYWN0ZXIpOwogfQogCi1ib29sIFNpbXBsZUZvbnREYXRhOjppc1NlZ21lbnRlZCgpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCiBQYXNzUmVmUHRyPFNpbXBsZUZvbnREYXRh
PiBTaW1wbGVGb250RGF0YTo6dmVydGljYWxSaWdodE9yaWVudGF0aW9uRm9udERhdGEoKSBjb25z
dAogewogICAgIGlmICghbV9kZXJpdmVkRm9udERhdGEpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9TaW1wbGVGb250RGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NpbXBsZUZvbnREYXRhLmgJKHJldmlzaW9uIDE3ODM2
MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NpbXBsZUZvbnREYXRhLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDYgQEAKICNkZWZpbmUgU2ltcGxlRm9udERhdGFf
aAogCiAjaW5jbHVkZSAiRm9udEJhc2VsaW5lLmgiCi0jaW5jbHVkZSAiRm9udERhdGEuaCIKICNp
bmNsdWRlICJGb250TWV0cmljcy5oIgogI2luY2x1ZGUgIkZvbnRQbGF0Zm9ybURhdGEuaCIKICNp
bmNsdWRlICJGbG9hdFJlY3QuaCIKQEAgLTY4LDcgKzY3LDcgQEAgc3RydWN0IFdpZHRoSXRlcmF0
b3I7CiBlbnVtIEZvbnREYXRhVmFyaWFudCB7IEF1dG9WYXJpYW50LCBOb3JtYWxWYXJpYW50LCBT
bWFsbENhcHNWYXJpYW50LCBFbXBoYXNpc01hcmtWYXJpYW50LCBCcm9rZW5JZGVvZ3JhcGhWYXJp
YW50IH07CiBlbnVtIFBpdGNoIHsgVW5rbm93blBpdGNoLCBGaXhlZFBpdGNoLCBWYXJpYWJsZVBp
dGNoIH07CiAKLWNsYXNzIFNpbXBsZUZvbnREYXRhIGZpbmFsIDogcHVibGljIEZvbnREYXRhIHsK
K2NsYXNzIFNpbXBsZUZvbnREYXRhIDogcHVibGljIFJlZkNvdW50ZWQ8U2ltcGxlRm9udERhdGE+
IHsKIHB1YmxpYzoKICAgICBjbGFzcyBTVkdEYXRhIHsKICAgICAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CkBAIC05Miw3ICs5MSw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgU2ltcGxlRm9udERhdGEoV1RGOjptb3ZlKHN2Z0RhdGEpLCBmb250U2l6ZSwgc3lu
dGhldGljQm9sZCwgc3ludGhldGljSXRhbGljKSk7CiAgICAgfQogCi0gICAgdmlydHVhbCB+U2lt
cGxlRm9udERhdGEoKTsKKyAgICB+U2ltcGxlRm9udERhdGEoKTsKIAogICAgIHN0YXRpYyBjb25z
dCBTaW1wbGVGb250RGF0YSogc3lzdGVtRmFsbGJhY2soKSB7IHJldHVybiByZWludGVycHJldF9j
YXN0PGNvbnN0IFNpbXBsZUZvbnREYXRhKj4oLTEpOyB9CiAKQEAgLTE3OCwxMiArMTc3LDExIEBA
IHB1YmxpYzoKICAgICBjb25zdCBTVkdEYXRhKiBzdmdEYXRhKCkgY29uc3QgeyByZXR1cm4gbV9z
dmdEYXRhLmdldCgpOyB9CiAgICAgYm9vbCBpc1NWR0ZvbnQoKSBjb25zdCB7IHJldHVybiAhIW1f
c3ZnRGF0YTsgfQogCi0gICAgdmlydHVhbCBib29sIGlzQ3VzdG9tRm9udCgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIG1faXNDdXN0b21Gb250OyB9Ci0gICAgdmlydHVhbCBib29sIGlzTG9hZGlu
ZygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faXNMb2FkaW5nOyB9Ci0gICAgdmlydHVhbCBi
b29sIGlzU2VnbWVudGVkKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc0N1c3RvbUZvbnQo
KSBjb25zdCB7IHJldHVybiBtX2lzQ3VzdG9tRm9udDsgfQorICAgIGJvb2wgaXNMb2FkaW5nKCkg
Y29uc3QgeyByZXR1cm4gbV9pc0xvYWRpbmc7IH0KIAogI2lmbmRlZiBOREVCVUcKLSAgICB2aXJ0
dWFsIFN0cmluZyBkZXNjcmlwdGlvbigpIGNvbnN0IG92ZXJyaWRlOworICAgIFN0cmluZyBkZXNj
cmlwdGlvbigpIGNvbnN0OwogI2VuZGlmCiAKICNpZiBVU0UoQVBQS0lUKQpAQCAtMjI5LDkgKzIy
Nyw2IEBAIHByaXZhdGU6CiAgICAgUGFzc1JlZlB0cjxTaW1wbGVGb250RGF0YT4gY3JlYXRlU2Nh
bGVkRm9udERhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgZmxvYXQgc2NhbGVGYWN0b3IpIGNv
bnN0OwogICAgIFBhc3NSZWZQdHI8U2ltcGxlRm9udERhdGE+IHBsYXRmb3JtQ3JlYXRlU2NhbGVk
Rm9udERhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgZmxvYXQgc2NhbGVGYWN0b3IpIGNvbnN0
OwogCi0gICAgdmlydHVhbCBjb25zdCBTaW1wbGVGb250RGF0YSogc2ltcGxlRm9udERhdGFGb3JD
aGFyYWN0ZXIoVUNoYXIzMikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBjb25zdCBTaW1w
bGVGb250RGF0YSYgc2ltcGxlRm9udERhdGFGb3JGaXJzdFJhbmdlKCkgY29uc3Qgb3ZlcnJpZGU7
Ci0KICAgICB2b2lkIHJlbW92ZUZyb21TeXN0ZW1GYWxsYmFja0NhY2hlKCk7CiAKICNpZiBQTEFU
Rk9STShXSU4pCkBAIC0zNzEsOCArMzY2LDQgQEAgQUxXQVlTX0lOTElORSBmbG9hdCBTaW1wbGVG
b250RGF0YTo6d2lkdAogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLVNQRUNJQUxJWkVfVFlQ
RV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6U2ltcGxlRm9udERhdGEpCi0gICAgc3RhdGljIGJvb2wg
aXNUeXBlKGNvbnN0IFdlYkNvcmU6OkZvbnREYXRhJiBmb250RGF0YSkgeyByZXR1cm4gIWZvbnRE
YXRhLmlzU2VnbWVudGVkKCk7IH0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKLQogI2Vu
ZGlmIC8vIFNpbXBsZUZvbnREYXRhX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXJDb3JlVGV4dC5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250cm9s
bGVyQ29yZVRleHQubW0JKHJldmlzaW9uIDE3ODM2MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXJDb3JlVGV4dC5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtNjIsNyArNjIsNyBAQCAtIChpZClpbml0V2l0aEZvbnQ6KGNvbnN0IFdlYkNv
cmU6OkZvbnQqCiAKICAgICAvLyBCeSB0aGUgdGltZSBhIFdlYkNhc2NhZGVMaXN0IGlzIHVzZWQs
IHRoZSBGb250IGhhcyBhbHJlYWR5IGJlZW4gYXNrZWQgdG8gcmVhbGl6ZSBhbGwgb2YgaXRzCiAg
ICAgLy8gRm9udERhdGEsIHNvIHRoaXMgbG9vcCBkb2VzIG5vdCBoaXQgdGhlIEZvbnRDYWNoZS4K
LSAgICB3aGlsZSAoX2ZvbnQtPmZvbnREYXRhQXQoX2NvdW50KSkKKyAgICB3aGlsZSAoIV9mb250
LT5mYWxsYmFja1Jhbmdlc0F0KF9jb3VudCkuaXNFbXB0eSgpKQogICAgICAgICBfY291bnQrKzsK
IAogICAgIHJldHVybiBzZWxmOwpAQCAtODIsOSArODIsOSBAQCAtIChpZClvYmplY3RBdEluZGV4
OihOU1VJbnRlZ2VyKWluZGV4CiAgICAgfSBlbHNlCiAgICAgICAgIF9mb250RGVzY3JpcHRvcnMu
Z3JvdyhpbmRleCArIDEpOwogCi0gICAgY29uc3QgV2ViQ29yZTo6U2ltcGxlRm9udERhdGEqIHNp
bXBsZUZvbnREYXRhID0gX2ZvbnQtPmZvbnREYXRhQXQoaW5kZXgpLT5zaW1wbGVGb250RGF0YUZv
ckNoYXJhY3RlcihfY2hhcmFjdGVyKTsKKyAgICBjb25zdCBXZWJDb3JlOjpTaW1wbGVGb250RGF0
YSogc2ltcGxlRm9udERhdGEgPSBfZm9udC0+ZmFsbGJhY2tSYW5nZXNBdChpbmRleCkuZm9udERh
dGFGb3JDaGFyYWN0ZXIoX2NoYXJhY3Rlcik7CiAgICAgaWYgKCFzaW1wbGVGb250RGF0YSkKLSAg
ICAgICAgc2ltcGxlRm9udERhdGEgPSAmX2ZvbnQtPmZvbnREYXRhQXQoaW5kZXgpLT5zaW1wbGVG
b250RGF0YUZvckZpcnN0UmFuZ2UoKTsKKyAgICAgICAgc2ltcGxlRm9udERhdGEgPSAmX2ZvbnQt
PmZhbGxiYWNrUmFuZ2VzQXQoaW5kZXgpLmZvbnREYXRhRm9yRmlyc3RSYW5nZSgpOwogICAgIGZv
bnREZXNjcmlwdG9yID0gQ1RGb250Q29weUZvbnREZXNjcmlwdG9yKHNpbXBsZUZvbnREYXRhLT5w
bGF0Zm9ybURhdGEoKS5jdEZvbnQoKSk7CiAgICAgX2ZvbnREZXNjcmlwdG9yc1tpbmRleF0gPSBh
ZG9wdENGKGZvbnREZXNjcmlwdG9yKTsKICAgICByZXR1cm4gKGlkKWZvbnREZXNjcmlwdG9yOwpA
QCAtMjAxLDkgKzIwMSw5IEBAIHZvaWQgQ29tcGxleFRleHRDb250cm9sbGVyOjpjb2xsZWN0Q29t
cGwKICAgICAgICAgaXNTeXN0ZW1GYWxsYmFjayA9IHRydWU7CiAKICAgICAgICAgVTE2X0dFVChj
cCwgMCwgMCwgbGVuZ3RoLCBiYXNlQ2hhcmFjdGVyKTsKLSAgICAgICAgZm9udERhdGEgPSBtX2Zv
bnQuZm9udERhdGFBdCgwKS0+c2ltcGxlRm9udERhdGFGb3JDaGFyYWN0ZXIoYmFzZUNoYXJhY3Rl
cik7CisgICAgICAgIGZvbnREYXRhID0gbV9mb250LmZhbGxiYWNrUmFuZ2VzQXQoMCkuZm9udERh
dGFGb3JDaGFyYWN0ZXIoYmFzZUNoYXJhY3Rlcik7CiAgICAgICAgIGlmICghZm9udERhdGEpCi0g
ICAgICAgICAgICBmb250RGF0YSA9ICZtX2ZvbnQuZm9udERhdGFBdCgwKS0+c2ltcGxlRm9udERh
dGFGb3JGaXJzdFJhbmdlKCk7CisgICAgICAgICAgICBmb250RGF0YSA9ICZtX2ZvbnQuZmFsbGJh
Y2tSYW5nZXNBdCgwKS5mb250RGF0YUZvckZpcnN0UmFuZ2UoKTsKIAogICAgICAgICBSZXRhaW5Q
dHI8V2ViQ2FzY2FkZUxpc3Q+IGNhc2NhZGVMaXN0ID0gYWRvcHROUyhbW1dlYkNhc2NhZGVMaXN0
IGFsbG9jXSBpbml0V2l0aEZvbnQ6Jm1fZm9udCBjaGFyYWN0ZXI6YmFzZUNoYXJhY3Rlcl0pOwog
CkBAIC0yNTYsOSArMjU2LDkgQEAgdm9pZCBDb21wbGV4VGV4dENvbnRyb2xsZXI6OmNvbGxlY3RD
b21wbAogICAgICAgICAgICAgUmV0YWluUHRyPENGVHlwZVJlZj4gcnVuRm9udEVxdWFsaXR5T2Jq
ZWN0ID0gRm9udFBsYXRmb3JtRGF0YTo6b2JqZWN0Rm9yRXF1YWxpdHlDaGVjayhydW5Gb250KTsK
ICAgICAgICAgICAgIGlmICghQ0ZFcXVhbChydW5Gb250RXF1YWxpdHlPYmplY3QuZ2V0KCksIGZv
bnREYXRhLT5wbGF0Zm9ybURhdGEoKS5vYmplY3RGb3JFcXVhbGl0eUNoZWNrKCkuZ2V0KCkpKSB7
CiAgICAgICAgICAgICAgICAgLy8gQmVnaW4gdHJ5aW5nIHRvIHNlZSBpZiBydW5Gb250IG1hdGNo
ZXMgYW55IG9mIHRoZSBmb250cyBpbiB0aGUgZmFsbGJhY2sgbGlzdC4KLSAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBpID0gMDsKLSAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IEZvbnREYXRhKiBj
YW5kaWRhdGVGb250RGF0YSA9IG1fZm9udC5mb250RGF0YUF0KGkpOyBjYW5kaWRhdGVGb250RGF0
YTsgY2FuZGlkYXRlRm9udERhdGEgPSBtX2ZvbnQuZm9udERhdGFBdCgrK2kpKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIHJ1bkZvbnREYXRhID0gY2FuZGlkYXRlRm9udERhdGEtPnNpbXBsZUZvbnRE
YXRhRm9yQ2hhcmFjdGVyKGJhc2VDaGFyYWN0ZXIpOworCisgICAgICAgICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgIW1fZm9udC5mYWxsYmFja1Jhbmdlc0F0KGkpLmlzRW1wdHkoKTsgKytp
KSB7CisgICAgICAgICAgICAgICAgICAgIHJ1bkZvbnREYXRhID0gbV9mb250LmZhbGxiYWNrUmFu
Z2VzQXQoaSkuZm9udERhdGFGb3JDaGFyYWN0ZXIoYmFzZUNoYXJhY3Rlcik7CiAgICAgICAgICAg
ICAgICAgICAgIGlmICghcnVuRm9udERhdGEpCiAgICAgICAgICAgICAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgICAgICAgICAgICAgUmV0YWluUHRyPENGVHlwZVJlZj4gcnVuRm9udEVx
dWFsaXR5T2JqZWN0ID0gcnVuRm9udERhdGEtPnBsYXRmb3JtRGF0YSgpLm9iamVjdEZvckVxdWFs
aXR5Q2hlY2soKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9G
b250Q29tcGxleFRleHRNYWMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21hYy9Gb250Q29tcGxleFRleHRNYWMuY3BwCShyZXZpc2lvbiAxNzgzNjIp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udENvbXBsZXhUZXh0
TWFjLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM4LDkgKzEzOCw4IEBAIGNvbnN0IFNpbXBsZUZv
bnREYXRhKiBGb250Ojpmb250RGF0YUZvckMKIAogICAgIGJvb2wgdHJpZWRCYXNlQ2hhcmFjdGVy
Rm9udERhdGEgPSBmYWxzZTsKIAotICAgIHVuc2lnbmVkIGkgPSAwOwotICAgIGZvciAoY29uc3Qg
Rm9udERhdGEqIGZvbnREYXRhID0gZm9udERhdGFBdCgwKTsgZm9udERhdGE7IGZvbnREYXRhID0g
Zm9udERhdGFBdCgrK2kpKSB7Ci0gICAgICAgIGNvbnN0IFNpbXBsZUZvbnREYXRhKiBzaW1wbGVG
b250RGF0YSA9IGZvbnREYXRhLT5zaW1wbGVGb250RGF0YUZvckNoYXJhY3RlcihiYXNlQ2hhcmFj
dGVyKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyAhZmFsbGJhY2tSYW5nZXNBdChpKS5pc0Vt
cHR5KCk7ICsraSkgeworICAgICAgICBjb25zdCBTaW1wbGVGb250RGF0YSogc2ltcGxlRm9udERh
dGEgPSBmYWxsYmFja1Jhbmdlc0F0KGkpLmZvbnREYXRhRm9yQ2hhcmFjdGVyKGJhc2VDaGFyYWN0
ZXIpOwogICAgICAgICBpZiAoIXNpbXBsZUZvbnREYXRhKQogICAgICAgICAgICAgY29udGludWU7
CiAjaWYgUExBVEZPUk0oSU9TKQo=
</data>
<flag name="review"
          id="269452"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
      

    </bug>

</bugzilla>