<?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>190347</bug_id>
          
          <creation_ts>2018-10-08 05:38:01 -0700</creation_ts>
          <short_desc>Move SystemFontDatabase to a file of its own</short_desc>
          <delta_ts>2018-10-08 13:38:22 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Text</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1467024</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-10-08 05:38:01 -0700</bug_when>
    <thetext>From FontDescriptionCocoa</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1467026</commentid>
    <comment_count>1</comment_count>
      <attachid>351772</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-10-08 05:44:02 -0700</bug_when>
    <thetext>Created attachment 351772
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1467054</commentid>
    <comment_count>2</comment_count>
      <attachid>351772</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-10-08 09:12:06 -0700</bug_when>
    <thetext>Comment on attachment 351772
patch

rs=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1467055</commentid>
    <comment_count>3</comment_count>
      <attachid>351772</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-10-08 09:16:28 -0700</bug_when>
    <thetext>Comment on attachment 351772
patch

Rejecting attachment 351772 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-03&apos;, &apos;apply-attachment&apos;, &apos;--no-update&apos;, &apos;--non-interactive&apos;, 351772, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Logging in as commit-queue@webkit.org...
Fetching: https://bugs.webkit.org/attachment.cgi?id=351772&amp;action=edit
Fetching: https://bugs.webkit.org/show_bug.cgi?id=190347&amp;ctype=xml&amp;excludefield=attachmentdata
Processing 1 patch from 1 bug.
Processing patch 351772 from bug 190347.
Fetching: https://bugs.webkit.org/attachment.cgi?id=351772
Failed to run &quot;[u&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;, &apos;--reviewer&apos;, u&apos;Chris Dumez&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

Parsed 7 diffs from patch file(s).
patching file Source/WebCore/ChangeLog
Hunk #1 succeeded at 1 with fuzz 3.
patching file Source/WebCore/SourcesCocoa.txt
patching file Source/WebCore/WebCore.xcodeproj/project.pbxproj
Hunk #1 FAILED at 4811.
Hunk #2 FAILED at 14548.
Hunk #3 succeeded at 24028 (offset 5 lines).
Hunk #4 succeeded at 27498 (offset 6 lines).
2 out of 4 hunks FAILED -- saving rejects to file Source/WebCore/WebCore.xcodeproj/project.pbxproj.rej
patching file Source/WebCore/platform/graphics/cocoa/FontDescriptionCocoa.cpp
patching file Source/WebCore/platform/graphics/cocoa/SystemFontDatabaseCoreText.cpp
patching file Source/WebCore/platform/graphics/cocoa/SystemFontDatabaseCoreText.h
patching file Source/WebCore/platform/mediastream/mac/RealtimeMediaSourceCenterMac.cpp
Hunk #1 FAILED at 42.
1 out of 1 hunk FAILED -- saving rejects to file Source/WebCore/platform/mediastream/mac/RealtimeMediaSourceCenterMac.cpp.rej

Failed to run &quot;[u&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;, &apos;--reviewer&apos;, u&apos;Chris Dumez&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

Full output: https://webkit-queues.webkit.org/results/9491130</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1467077</commentid>
    <comment_count>4</comment_count>
      <attachid>351780</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-10-08 09:53:58 -0700</bug_when>
    <thetext>Created attachment 351780
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1467084</commentid>
    <comment_count>5</comment_count>
      <attachid>351783</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-10-08 10:03:28 -0700</bug_when>
    <thetext>Created attachment 351783
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1467085</commentid>
    <comment_count>6</comment_count>
      <attachid>351784</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-10-08 10:06:25 -0700</bug_when>
    <thetext>Created attachment 351784
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1467100</commentid>
    <comment_count>7</comment_count>
      <attachid>351788</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-10-08 10:22:18 -0700</bug_when>
    <thetext>Created attachment 351788
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1467111</commentid>
    <comment_count>8</comment_count>
      <attachid>351790</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-10-08 10:47:38 -0700</bug_when>
    <thetext>Created attachment 351790
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1467123</commentid>
    <comment_count>9</comment_count>
      <attachid>351796</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-10-08 11:30:44 -0700</bug_when>
    <thetext>Created attachment 351796
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1467140</commentid>
    <comment_count>10</comment_count>
      <attachid>351796</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-10-08 12:22:34 -0700</bug_when>
    <thetext>Comment on attachment 351796
patch

Rejecting attachment 351796 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-01&apos;, &apos;validate-changelog&apos;, &apos;--check-oops&apos;, &apos;--non-interactive&apos;, 351796, &apos;--port=mac&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

ChangeLog entry in Source/WebCore/ChangeLog is not at the top of the file.

Full output: https://webkit-queues.webkit.org/results/9493359</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1467155</commentid>
    <comment_count>11</comment_count>
      <attachid>351807</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-10-08 12:53:28 -0700</bug_when>
    <thetext>Created attachment 351807
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1467186</commentid>
    <comment_count>12</comment_count>
      <attachid>351807</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-10-08 13:37:34 -0700</bug_when>
    <thetext>Comment on attachment 351807
patch

Clearing flags on attachment: 351807

Committed r236938: &lt;https://trac.webkit.org/changeset/236938&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1467187</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-10-08 13:37:35 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1467190</commentid>
    <comment_count>14</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-10-08 13:38:22 -0700</bug_when>
    <thetext>&lt;rdar://problem/45102888&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>351772</attachid>
            <date>2018-10-08 05:44:02 -0700</date>
            <delta_ts>2018-10-08 09:53:58 -0700</delta_ts>
            <desc>patch</desc>
            <filename>systemfontdatabase-file.patch</filename>
            <type>text/plain</type>
            <size>37361</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzNjkxMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUyIEBACisyMDE4LTEwLTA4ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIFN5c3RlbUZvbnREYXRh
YmFzZSB0byBhIGZpbGUgb2YgaXRzIG93bgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTkwMzQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWxzbyByZW5hbWUgaXQgdG8gU3lzdGVtRm9udERhdGFiYXNlQ29y
ZVRleHQgYXMgaXQgaXMgQ29yZVRleHQgc3BlY2lmaWMuCisKKyAgICAgICAgKiBTb3VyY2VzQ29j
b2EudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RGVzY3JpcHRpb25Db2NvYS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGb250RGVzY3JpcHRpb246OmludmFsaWRhdGVDYWNoZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6c3lzdGVtRm9udENhc2NhZGVMaXN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkZvbnRDYXNjYWRlRGVzY3JpcHRpb246OmVmZmVjdGl2ZUZhbWlseUNvdW50IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlRGVzY3JpcHRpb246OmVmZmVjdGl2ZUZhbWls
eUF0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN5c3RlbUZvbnREYXRhYmFzZTo6Q29yZVRl
eHRDYXNjYWRlTGlzdFBhcmFtZXRlcnM6OkNvcmVUZXh0Q2FzY2FkZUxpc3RQYXJhbWV0ZXJzKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlN5c3RlbUZvbnREYXRhYmFzZTo6Q29yZVRleHRD
YXNjYWRlTGlzdFBhcmFtZXRlcnM6OmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlN5c3RlbUZvbnREYXRhYmFzZTo6Q29yZVRleHRDYXNj
YWRlTGlzdFBhcmFtZXRlcnM6Om9wZXJhdG9yPT0gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6U3lzdGVtRm9udERhdGFiYXNlOjpDb3JlVGV4dENhc2NhZGVMaXN0UGFyYW1ldGVy
czo6aGFzaCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTeXN0ZW1Gb250RGF0
YWJhc2U6OkNvcmVUZXh0Q2FzY2FkZUxpc3RQYXJhbWV0ZXJzOjpDb3JlVGV4dENhc2NhZGVMaXN0
UGFyYW1ldGVyc0hhc2g6Omhhc2gpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U3lzdGVt
Rm9udERhdGFiYXNlOjpDb3JlVGV4dENhc2NhZGVMaXN0UGFyYW1ldGVyczo6Q29yZVRleHRDYXNj
YWRlTGlzdFBhcmFtZXRlcnNIYXNoOjplcXVhbCk6IERlbGV0ZWQuCisgICAgICAgICgpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6U3lzdGVtRm9udERhdGFiYXNlOjpzaW5nbGV0b24pOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U3lzdGVtRm9udERhdGFiYXNlOjpzeXN0ZW1Gb250
Q2FzY2FkZUxpc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U3lzdGVtRm9udERhdGFi
YXNlOjpjbGVhcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTeXN0ZW1Gb250RGF0YWJh
c2U6OlN5c3RlbUZvbnREYXRhYmFzZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTeXN0
ZW1Gb250RGF0YWJhc2U6OmFwcGx5V2VpZ2h0SXRhbGljc0FuZEZhbGxiYWNrQmVoYXZpb3IpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U3lzdGVtRm9udERhdGFiYXNlOjpyZW1vdmVDYXNj
YWRlTGlzdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTeXN0ZW1Gb250RGF0YWJhc2U6
OmNvbXB1dGVDYXNjYWRlTGlzdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpzeXN0ZW1G
b250UGFyYW1ldGVycyk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0OjpzaW5nbGV0b24pOgorICAgICAgICAoV2Vi
Q29yZTo6U3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQ6OlN5c3RlbUZvbnREYXRhYmFzZUNvcmVU
ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0OjpzeXN0
ZW1Gb250Q2FzY2FkZUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3lzdGVtRm9udERhdGFiYXNl
Q29yZVRleHQ6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OlN5c3RlbUZvbnREYXRhYmFzZUNv
cmVUZXh0OjphcHBseVdlaWdodEl0YWxpY3NBbmRGYWxsYmFja0JlaGF2aW9yKToKKyAgICAgICAg
KFdlYkNvcmU6OlN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0OjpyZW1vdmVDYXNjYWRlTGlzdCk6
CisgICAgICAgIChXZWJDb3JlOjpTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dDo6Y29tcHV0ZUNh
c2NhZGVMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0
OjpzeXN0ZW1Gb250UGFyYW1ldGVycyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dDo6Q2FzY2FkZUxpc3RQYXJhbWV0ZXJzOjpDYXNj
YWRlTGlzdFBhcmFtZXRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6U3lzdGVtRm9udERhdGFiYXNl
Q29yZVRleHQ6OkNhc2NhZGVMaXN0UGFyYW1ldGVyczo6aXNIYXNoVGFibGVEZWxldGVkVmFsdWUg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQ6OkNh
c2NhZGVMaXN0UGFyYW1ldGVyczo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dDo6Q2FzY2FkZUxpc3RQYXJhbWV0ZXJzOjpoYXNo
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0OjpD
YXNjYWRlTGlzdFBhcmFtZXRlcnM6OkNhc2NhZGVMaXN0UGFyYW1ldGVyc0hhc2g6Omhhc2gpOgor
ICAgICAgICAoV2ViQ29yZTo6U3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQ6OkNhc2NhZGVMaXN0
UGFyYW1ldGVyczo6Q2FzY2FkZUxpc3RQYXJhbWV0ZXJzSGFzaDo6ZXF1YWwpOgorICAgICAgICAq
IHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjLmNw
cDoKKwogMjAxOC0xMC0wNyAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAg
ICAgIEZpeGVkIGJ1aWxkaW5nIHdpdGggdGhlIGxhdGVzdCBtYWNPUyBTREsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
U291cmNlc0NvY29hLnR4dAkocmV2aXNpb24gMjM2OTExKQorKysgU291cmNlL1dlYkNvcmUvU291
cmNlc0NvY29hLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMzA2LDYgKzMwNiw3IEBAIHBsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0hFVkNVdGlsaXRpZXNDb2MKIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L0lPU3VyZmFjZS5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlUG9vbENvY29h
Lm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9NZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0
b3J5Q29jb2EuY3BwCitwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9TeXN0ZW1Gb250RGF0YWJhc2VD
b3JlVGV4dC5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkFjdGlvbkRpc2FibGluZ0NB
TGF5ZXJEZWxlZ2F0ZS5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29yZUNBTGF5ZXJF
eHRyYXMubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkNvcmVEZWNvbXByZXNzaW9uU2Vz
c2lvbi5tbQpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkocmV2aXNpb24gMjM2OTExKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00ODExLDYgKzQ4
MTEsNyBAQAogCQlFNERFQUExODE3QTkzREMzMDAwRTA0MzAgLyogU3R5bGVUcmVlUmVzb2x2ZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0REVBQTE2
MTdBOTNEQzMwMDBFMDQzMCAvKiBTdHlsZVRyZWVSZXNvbHZlci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUU0RTI0MzgzMURBQjk1M0UwMEMyNkU0
QiAvKiBtZXRlckVsZW1lbnRTaGFkb3cuY3NzIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFNEUyNDM4MjFEQUI5NTNFMDBDMjZFNEIgLyogbWV0ZXJFbGVt
ZW50U2hhZG93LmNzcyAqLzsgfTsKIAkJRTRFMzlBRkIxMzMwRUZBODAwM0FCMjc0IC8qIExlZ2Fj
eVRpbGVMYXllclBvb2wuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEU0RTM5QUZBMTMzMEVGQTgwMDNBQjI3NCAvKiBMZWdhY3lUaWxlTGF5ZXJQb29sLmgg
Ki87IH07CisJCUU0RThCNEVDMjE2Qjc5RTUwMEI4ODM0RCAvKiBTeXN0ZW1Gb250RGF0YWJhc2VD
b3JlVGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTRFOEI0RUEyMTZCNzlFNTAwQjg4MzREIC8qIFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0Lmgg
Ki87IH07CiAJCUU0RTlCMTE5MTgxMDkxNkYwMDNBQ0NERiAvKiBTaW1wbGVMaW5lTGF5b3V0UmVz
b2x2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0
RTlCMTE4MTgxMDkxNkYwMDNBQ0NERiAvKiBTaW1wbGVMaW5lTGF5b3V0UmVzb2x2ZXIuaCAqLzsg
fTsKIAkJRTRFOUIxMUQxODE0NTY5QzAwM0FDQ0RGIC8qIFNpbXBsZUxpbmVMYXlvdXRGdW5jdGlv
bnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0RTlC
MTFDMTgxNDU2OUMwMDNBQ0NERiAvKiBTaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmggKi87IH07
CiAJCUU0RjlFRUYzMTU2REEwMDcwMEQyM0U3RSAvKiBTdHlsZVNoZWV0Q29udGVudHMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0RjlFRUYxMTU2RDg0
QzQwMEQyM0U3RSAvKiBTdHlsZVNoZWV0Q29udGVudHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTQ1NDcsNiArMTQ1NDgsOCBAQAogCQlFNEUy
NDM4MjFEQUI5NTNFMDBDMjZFNEIgLyogbWV0ZXJFbGVtZW50U2hhZG93LmNzcyAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQuY3NzOyBwYXRoID0gbWV0ZXJFbGVtZW50U2hhZG93LmNzczsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRTRFMzlBRkExMzMwRUZBODAwM0FCMjc0IC8qIExlZ2FjeVRpbGVMYXll
clBvb2wuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGVnYWN5VGlsZUxheWVy
UG9vbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNEUzOUFGQzEzMzBFRkM1MDAz
QUIyNzQgLyogTGVnYWN5VGlsZUxheWVyUG9vbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IExlZ2FjeVRpbGVMYXllclBvb2wubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUU0RThCNEVBMjE2Qjc5RTUwMEI4ODM0RCAvKiBTeXN0ZW1Gb250RGF0YWJh
c2VDb3JlVGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTeXN0ZW1Gb250
RGF0YWJhc2VDb3JlVGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFNEU4QjRF
RDIxNkI3OUY0MDBCODgzNEQgLyogU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3lzdGVtRm9udERhdGFiYXNlQ29yZVRl
eHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNEU5QjExODE4MTA5MTZGMDAz
QUNDREYgLyogU2ltcGxlTGluZUxheW91dFJlc29sdmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNpbXBsZUxpbmVMYXlvdXRSZXNvbHZlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlFNEU5QjExQTE4MTQ1NjkyMDAzQUNDREYgLyogU2ltcGxlTGluZUxheW91
dEZ1bmN0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaW1w
bGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RTRFOUIxMUMxODE0NTY5QzAwM0FDQ0RGIC8qIFNpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2ltcGxlTGluZUxheW91dEZ1bmN0aW9u
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjQwMjAsNiArMjQwMjMsOCBAQAog
CQkJCUFEOUZGNkUwMTkwODM5MUQwMDNCNjFFMCAvKiBJT1N1cmZhY2VQb29sQ29jb2EubW0gKi8s
CiAJCQkJQ0RDNDhBQzgyMTQ5Q0YyQTAwMjRGRDU5IC8qIE1lZGlhRW5naW5lQ29uZmlndXJhdGlv
bkZhY3RvcnlDb2NvYS5jcHAgKi8sCiAJCQkJQ0RDNDhBQzcyMTQ5Q0YyQTAwMjRGRDU5IC8qIE1l
ZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnlDb2NvYS5oICovLAorCQkJCUU0RThCNEVEMjE2
Qjc5RjQwMEI4ODM0RCAvKiBTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dC5jcHAgKi8sCisJCQkJ
RTRFOEI0RUEyMTZCNzlFNTAwQjg4MzREIC8qIFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0Lmgg
Ki8sCiAJCQkJNTI2NzI0RjIxQ0IyRkRGNjAwNzU5NzREIC8qIFRleHRUcmFja1JlcHJlc2VudGF0
aW9uQ29jb2EuaCAqLywKIAkJCQk1MjY3MjRGMTFDQjJGREY2MDA3NTk3NEQgLyogVGV4dFRyYWNr
UmVwcmVzZW50YXRpb25Db2NvYS5tbSAqLywKIAkJCQkyRDNFRjQ0NDE5MTc5MTVDMDAwMzQxODQg
LyogV2ViQWN0aW9uRGlzYWJsaW5nQ0FMYXllckRlbGVnYXRlLmggKi8sCkBAIC0yNzQ4Nyw2ICsy
NzQ5Miw3IEBACiAJCQkJNTczMDNCQkIyMDA2QzZFRTAwMzU1OTY1IC8qIENCT1JCaW5hcnkuaCBp
biBIZWFkZXJzICovLAogCQkJCTU3MzAzQkMxMjAwNkUwMEMwMDM1NTk2NSAvKiBDQk9SUmVhZGVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1NzMwM0JCOTIwMDZDNkVFMDAzNTU5NjUgLyogQ0JPUlZh
bHVlLmggaW4gSGVhZGVycyAqLywKKwkJCQlFNEU4QjRFQzIxNkI3OUU1MDBCODgzNEQgLyogU3lz
dGVtRm9udERhdGFiYXNlQ29yZVRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3MzAzQkJBMjAw
NkM2RUUwMDM1NTk2NSAvKiBDQk9SV3JpdGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk2NTUwQjY5
RTA5OURGMDI3MDA5MEQ3ODEgLyogQ0RBVEFTZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlD
REY0QjcxNjFFMDBCN0U1MDBFMjM1QTIgLyogQ0RNLmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnREZXNjcmlwdGlvbkNvY29h
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9Gb250RGVzY3JpcHRpb25Db2NvYS5jcHAJKHJldmlzaW9uIDIzNjkxMSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnREZXNjcmlwdGlvbkNvY29hLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjYsMTc1ICsyNiwxMiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIkZvbnREZXNjcmlwdGlvbi5oIgogCi0jaW5jbHVkZSAiRm9udENhY2hlLmgiCi0j
aW5jbHVkZSAiRm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dC5oIgotI2luY2x1ZGUgPHBh
bC9zcGkvY29jb2EvQ29yZVRleHRTUEkuaD4KLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2lu
Y2x1ZGUgPHd0Zi9IYXNoVHJhaXRzLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5n
Lmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nSGFzaC5oPgotCi0jaWYgUExBVEZP
Uk0oSU9TKQotI2luY2x1ZGUgIlJlbmRlclRoZW1lSU9TLmgiCi0jZW5kaWYKKyNpbmNsdWRlICJT
eXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dC5oIgogCiAjaWYgVVNFX1BMQVRGT1JNX1NZU1RFTV9G
QUxMQkFDS19MSVNUCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU3lzdGVtRm9udERh
dGFiYXNlIHsKLXB1YmxpYzoKLSAgICBzdHJ1Y3QgQ29yZVRleHRDYXNjYWRlTGlzdFBhcmFtZXRl
cnMgewotICAgICAgICBDb3JlVGV4dENhc2NhZGVMaXN0UGFyYW1ldGVycygpCi0gICAgICAgIHsK
LSAgICAgICAgfQotCi0gICAgICAgIENvcmVUZXh0Q2FzY2FkZUxpc3RQYXJhbWV0ZXJzKFdURjo6
SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkKLSAgICAgICAgICAgIDogZm9udE5hbWUoV1RGOjpI
YXNoVGFibGVEZWxldGVkVmFsdWUpCi0gICAgICAgIHsKLSAgICAgICAgfQotCi0gICAgICAgIGJv
b2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAg
ICByZXR1cm4gZm9udE5hbWUuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsKLSAgICAgICAgfQot
Ci0gICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDb3JlVGV4dENhc2NhZGVMaXN0UGFyYW1l
dGVycyYgb3RoZXIpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBmb250TmFt
ZSA9PSBvdGhlci5mb250TmFtZQotICAgICAgICAgICAgICAgICYmIGxvY2FsZSA9PSBvdGhlci5s
b2NhbGUKLSAgICAgICAgICAgICAgICAmJiB3ZWlnaHQgPT0gb3RoZXIud2VpZ2h0Ci0gICAgICAg
ICAgICAgICAgJiYgc2l6ZSA9PSBvdGhlci5zaXplCi0gICAgICAgICAgICAgICAgJiYgYWxsb3dV
c2VySW5zdGFsbGVkRm9udHMgPT0gb3RoZXIuYWxsb3dVc2VySW5zdGFsbGVkRm9udHMKLSAgICAg
ICAgICAgICAgICAmJiBpdGFsaWMgPT0gb3RoZXIuaXRhbGljOwotICAgICAgICB9Ci0KLSAgICAg
ICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIEludGVnZXJI
YXNoZXIgaGFzaGVyOwotICAgICAgICAgICAgQVNTRVJUKCFmb250TmFtZS5pc051bGwoKSk7Ci0g
ICAgICAgICAgICBoYXNoZXIuYWRkKGxvY2FsZS5leGlzdGluZ0hhc2goKSk7Ci0gICAgICAgICAg
ICBoYXNoZXIuYWRkKGxvY2FsZS5pc051bGwoKSA/IDAgOiBsb2NhbGUuZXhpc3RpbmdIYXNoKCkp
OwotICAgICAgICAgICAgaGFzaGVyLmFkZCh3ZWlnaHQpOwotICAgICAgICAgICAgaGFzaGVyLmFk
ZChzaXplKTsKLSAgICAgICAgICAgIGhhc2hlci5hZGQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGFs
bG93VXNlckluc3RhbGxlZEZvbnRzKSk7Ci0gICAgICAgICAgICBoYXNoZXIuYWRkKGl0YWxpYyk7
Ci0gICAgICAgICAgICByZXR1cm4gaGFzaGVyLmhhc2goKTsKLSAgICAgICAgfQotCi0gICAgICAg
IHN0cnVjdCBDb3JlVGV4dENhc2NhZGVMaXN0UGFyYW1ldGVyc0hhc2ggOiBXVEY6OlBhaXJIYXNo
PEF0b21pY1N0cmluZywgZmxvYXQ+IHsKLSAgICAgICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNo
KGNvbnN0IENvcmVUZXh0Q2FzY2FkZUxpc3RQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQotICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBwYXJhbWV0ZXJzLmhhc2goKTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IENvcmVUZXh0Q2Fz
Y2FkZUxpc3RQYXJhbWV0ZXJzJiBhLCBjb25zdCBDb3JlVGV4dENhc2NhZGVMaXN0UGFyYW1ldGVy
cyYgYikKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gYSA9PSBiOwotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRv
RW1wdHlPckRlbGV0ZWQgPSB0cnVlOwotICAgICAgICB9OwotCi0gICAgICAgIEF0b21pY1N0cmlu
ZyBmb250TmFtZTsKLSAgICAgICAgQXRvbWljU3RyaW5nIGxvY2FsZTsKLSAgICAgICAgQ0dGbG9h
dCB3ZWlnaHQgeyAwIH07Ci0gICAgICAgIGZsb2F0IHNpemUgeyAwIH07Ci0gICAgICAgIEFsbG93
VXNlckluc3RhbGxlZEZvbnRzIGFsbG93VXNlckluc3RhbGxlZEZvbnRzIHsgQWxsb3dVc2VySW5z
dGFsbGVkRm9udHM6Ok5vIH07Ci0gICAgICAgIGJvb2wgaXRhbGljIHsgZmFsc2UgfTsKLSAgICB9
OwotCi0gICAgc3RhdGljIFN5c3RlbUZvbnREYXRhYmFzZSYgc2luZ2xldG9uKCkKLSAgICB7Ci0g
ICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTeXN0ZW1Gb250RGF0YWJhc2U+IGRhdGFiYXNl
ID0gU3lzdGVtRm9udERhdGFiYXNlKCk7Ci0gICAgICAgIHJldHVybiBkYXRhYmFzZS5nZXQoKTsK
LSAgICB9Ci0KLSAgICBlbnVtIGNsYXNzIENsaWVudFVzZSB7IEZvclN5c3RlbVVJLCBGb3JUZXh0
U3R5bGUgfTsKLQotICAgIFZlY3RvcjxSZXRhaW5QdHI8Q1RGb250RGVzY3JpcHRvclJlZj4+IHN5
c3RlbUZvbnRDYXNjYWRlTGlzdChjb25zdCBDb3JlVGV4dENhc2NhZGVMaXN0UGFyYW1ldGVycyYg
cGFyYW1ldGVycywgQ2xpZW50VXNlIGNsaWVudFVzZSkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCgh
cGFyYW1ldGVycy5mb250TmFtZS5pc051bGwoKSk7Ci0gICAgICAgIHJldHVybiBtX3N5c3RlbUZv
bnRDYWNoZS5lbnN1cmUocGFyYW1ldGVycywgWyZdIHsKLSAgICAgICAgICAgIGF1dG8gbG9jYWxl
U3RyaW5nID0gcGFyYW1ldGVycy5sb2NhbGUuc3RyaW5nKCkuY3JlYXRlQ0ZTdHJpbmcoKTsKLSAg
ICAgICAgICAgIFJldGFpblB0cjxDVEZvbnRSZWY+IHN5c3RlbUZvbnQ7Ci0gICAgICAgICAgICBp
ZiAoY2xpZW50VXNlID09IENsaWVudFVzZTo6Rm9yU3lzdGVtVUkpIHsKLSAgICAgICAgICAgICAg
ICBzeXN0ZW1Gb250ID0gYWRvcHRDRihDVEZvbnRDcmVhdGVVSUZvbnRGb3JMYW5ndWFnZShrQ1RG
b250VUlGb250U3lzdGVtLCBwYXJhbWV0ZXJzLnNpemUsIGxvY2FsZVN0cmluZy5nZXQoKSkpOwot
ICAgICAgICAgICAgICAgIEFTU0VSVChzeXN0ZW1Gb250KTsKLSAgICAgICAgICAgICAgICAvLyBG
SVhNRTogVXNlIGFwcGx5V2VpZ2h0SXRhbGljc0FuZEZhbGxiYWNrQmVoYXZpb3IoKSBpbiBib3Ro
IGNhc2VzIG9uY2UgPHJkYXI6Ly9wcm9ibGVtLzMzMDQ2MDQxPiBpcyBmaXhlZC4KLSAgICAgICAg
ICAgICAgICBzeXN0ZW1Gb250ID0gYXBwbHlXZWlnaHRJdGFsaWNzQW5kRmFsbGJhY2tCZWhhdmlv
cihzeXN0ZW1Gb250LmdldCgpLCBwYXJhbWV0ZXJzLndlaWdodCwgcGFyYW1ldGVycy5pdGFsaWMs
IHBhcmFtZXRlcnMuc2l6ZSwgcGFyYW1ldGVycy5hbGxvd1VzZXJJbnN0YWxsZWRGb250cyk7Ci0g
ICAgICAgICAgICB9IGVsc2UgewotI2lmIFBMQVRGT1JNKElPUykKLSAgICAgICAgICAgICAgICBB
U1NFUlQoY2xpZW50VXNlID09IENsaWVudFVzZTo6Rm9yVGV4dFN0eWxlKTsKLSAgICAgICAgICAg
ICAgICBhdXRvIGZvbnREZXNjcmlwdG9yID0gYWRvcHRDRihDVEZvbnREZXNjcmlwdG9yQ3JlYXRl
V2l0aFRleHRTdHlsZShwYXJhbWV0ZXJzLmZvbnROYW1lLnN0cmluZygpLmNyZWF0ZUNGU3RyaW5n
KCkuZ2V0KCksIFJlbmRlclRoZW1lSU9TOjpjb250ZW50U2l6ZUNhdGVnb3J5KCksIG51bGxwdHIp
KTsKLSAgICAgICAgICAgICAgICBDVEZvbnRTeW1ib2xpY1RyYWl0cyB0cmFpdHMgPSAocGFyYW1l
dGVycy53ZWlnaHQgPj0ga0NURm9udFdlaWdodFNlbWlib2xkID8ga0NURm9udFRyYWl0Qm9sZCA6
IDApIHwgKHBhcmFtZXRlcnMuaXRhbGljID8ga0NURm9udFRyYWl0SXRhbGljIDogMCk7Ci0gICAg
ICAgICAgICAgICAgaWYgKHRyYWl0cykKLSAgICAgICAgICAgICAgICAgICAgZm9udERlc2NyaXB0
b3IgPSBhZG9wdENGKENURm9udERlc2NyaXB0b3JDcmVhdGVDb3B5V2l0aFN5bWJvbGljVHJhaXRz
KGZvbnREZXNjcmlwdG9yLmdldCgpLCB0cmFpdHMsIHRyYWl0cykpOwotICAgICAgICAgICAgICAg
IHN5c3RlbUZvbnQgPSBjcmVhdGVGb250Rm9ySW5zdGFsbGVkRm9udHMoZm9udERlc2NyaXB0b3Iu
Z2V0KCksIHBhcmFtZXRlcnMuc2l6ZSwgcGFyYW1ldGVycy5hbGxvd1VzZXJJbnN0YWxsZWRGb250
cyk7Ci0jZWxzZQotICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotI2VuZGlm
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBBU1NFUlQoc3lzdGVtRm9udCk7Ci0gICAgICAg
ICAgICBhdXRvIHJlc3VsdCA9IGNvbXB1dGVDYXNjYWRlTGlzdChzeXN0ZW1Gb250LmdldCgpLCBs
b2NhbGVTdHJpbmcuZ2V0KCkpOwotICAgICAgICAgICAgQVNTRVJUKCFyZXN1bHQuaXNFbXB0eSgp
KTsKLSAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICAgIH0pLml0ZXJhdG9yLT52YWx1
ZTsKLSAgICB9Ci0KLSAgICB2b2lkIGNsZWFyKCkKLSAgICB7Ci0gICAgICAgIG1fc3lzdGVtRm9u
dENhY2hlLmNsZWFyKCk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIFN5c3RlbUZvbnREYXRhYmFz
ZSgpCi0gICAgewotICAgIH0KLQotICAgIHN0YXRpYyBSZXRhaW5QdHI8Q1RGb250UmVmPiBhcHBs
eVdlaWdodEl0YWxpY3NBbmRGYWxsYmFja0JlaGF2aW9yKENURm9udFJlZiBmb250LCBDR0Zsb2F0
IHdlaWdodCwgYm9vbCBpdGFsaWMsIGZsb2F0IHNpemUsIEFsbG93VXNlckluc3RhbGxlZEZvbnRz
IGFsbG93VXNlckluc3RhbGxlZEZvbnRzKQotICAgIHsKLSAgICAgICAgYXV0byB3ZWlnaHROdW1i
ZXIgPSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRk51bWJl
ckNHRmxvYXRUeXBlLCAmd2VpZ2h0KSk7Ci0gICAgICAgIGNvbnN0IGZsb2F0IHN5c3RlbUZvbnRJ
dGFsaWNTbG9wZSA9IDAuMDc7Ci0gICAgICAgIGZsb2F0IGl0YWxpY3NSYXdOdW1iZXIgPSBpdGFs
aWMgPyBzeXN0ZW1Gb250SXRhbGljU2xvcGUgOiAwOwotICAgICAgICBhdXRvIGl0YWxpY3NOdW1i
ZXIgPSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRk51bWJl
ckZsb2F0VHlwZSwgJml0YWxpY3NSYXdOdW1iZXIpKTsKLSAgICAgICAgQ0ZUeXBlUmVmIHRyYWl0
c0tleXNbXSA9IHsga0NURm9udFdlaWdodFRyYWl0LCBrQ1RGb250U2xhbnRUcmFpdCwga0NURm9u
dFVJRm9udERlc2lnblRyYWl0IH07Ci0gICAgICAgIENGVHlwZVJlZiB0cmFpdHNWYWx1ZXNbXSA9
IHsgd2VpZ2h0TnVtYmVyLmdldCgpLCBpdGFsaWNzTnVtYmVyLmdldCgpLCBrQ0ZCb29sZWFuVHJ1
ZSB9OwotICAgICAgICBhdXRvIHRyYWl0c0RpY3Rpb25hcnkgPSBhZG9wdENGKENGRGljdGlvbmFy
eUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCB0cmFpdHNLZXlzLCB0cmFpdHNWYWx1ZXMsIFdU
Rl9BUlJBWV9MRU5HVEgodHJhaXRzS2V5cyksICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNr
cywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKLSAgICAgICAgYXV0byBhdHRy
aWJ1dGVzID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIDAsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9u
YXJ5VmFsdWVDYWxsQmFja3MpKTsKLSAgICAgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoYXR0cmli
dXRlcy5nZXQoKSwga0NURm9udFRyYWl0c0F0dHJpYnV0ZSwgdHJhaXRzRGljdGlvbmFyeS5nZXQo
KSk7Ci0gICAgICAgIGFkZEF0dHJpYnV0ZXNGb3JJbnN0YWxsZWRGb250cyhhdHRyaWJ1dGVzLmdl
dCgpLCBhbGxvd1VzZXJJbnN0YWxsZWRGb250cyk7Ci0gICAgICAgIGF1dG8gbW9kaWZpY2F0aW9u
ID0gYWRvcHRDRihDVEZvbnREZXNjcmlwdG9yQ3JlYXRlV2l0aEF0dHJpYnV0ZXMoYXR0cmlidXRl
cy5nZXQoKSkpOwotICAgICAgICByZXR1cm4gYWRvcHRDRihDVEZvbnRDcmVhdGVDb3B5V2l0aEF0
dHJpYnV0ZXMoZm9udCwgc2l6ZSwgbnVsbHB0ciwgbW9kaWZpY2F0aW9uLmdldCgpKSk7Ci0gICAg
fQotCi0gICAgc3RhdGljIFJldGFpblB0cjxDVEZvbnREZXNjcmlwdG9yUmVmPiByZW1vdmVDYXNj
YWRlTGlzdChDVEZvbnREZXNjcmlwdG9yUmVmIGZvbnREZXNjcmlwdG9yKQotICAgIHsKLSAgICAg
ICAgYXV0byBlbXB0eUFycmF5ID0gYWRvcHRDRihDRkFycmF5Q3JlYXRlKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIG51bGxwdHIsIDAsICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpKTsKLSAgICAgICAgQ0ZU
eXBlUmVmIGZhbGxiYWNrRGljdGlvbmFyeUtleXNbXSA9IHsga0NURm9udENhc2NhZGVMaXN0QXR0
cmlidXRlIH07Ci0gICAgICAgIENGVHlwZVJlZiBmYWxsYmFja0RpY3Rpb25hcnlWYWx1ZXNbXSA9
IHsgZW1wdHlBcnJheS5nZXQoKSB9OwotICAgICAgICBhdXRvIGZhbGxiYWNrRGljdGlvbmFyeSA9
IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGZhbGxiYWNr
RGljdGlvbmFyeUtleXMsIGZhbGxiYWNrRGljdGlvbmFyeVZhbHVlcywgV1RGX0FSUkFZX0xFTkdU
SChmYWxsYmFja0RpY3Rpb25hcnlLZXlzKSwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tz
LCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOwotICAgICAgICBhdXRvIG1vZGlm
aWVkRm9udERlc2NyaXB0b3IgPSBhZG9wdENGKENURm9udERlc2NyaXB0b3JDcmVhdGVDb3B5V2l0
aEF0dHJpYnV0ZXMoZm9udERlc2NyaXB0b3IsIGZhbGxiYWNrRGljdGlvbmFyeS5nZXQoKSkpOwot
ICAgICAgICByZXR1cm4gbW9kaWZpZWRGb250RGVzY3JpcHRvcjsKLSAgICB9Ci0KLSAgICBzdGF0
aWMgVmVjdG9yPFJldGFpblB0cjxDVEZvbnREZXNjcmlwdG9yUmVmPj4gY29tcHV0ZUNhc2NhZGVM
aXN0KENURm9udFJlZiBmb250LCBDRlN0cmluZ1JlZiBsb2NhbGUpCi0gICAgewotICAgICAgICBD
RlR5cGVSZWYgYXJyYXlWYWx1ZXNbXSA9IHsgbG9jYWxlIH07Ci0gICAgICAgIGF1dG8gbG9jYWxl
QXJyYXkgPSBhZG9wdENGKENGQXJyYXlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYXJyYXlW
YWx1ZXMsIFdURl9BUlJBWV9MRU5HVEgoYXJyYXlWYWx1ZXMpLCAma0NGVHlwZUFycmF5Q2FsbEJh
Y2tzKSk7Ci0gICAgICAgIGF1dG8gY2FzY2FkZUxpc3QgPSBhZG9wdENGKENURm9udENvcHlEZWZh
dWx0Q2FzY2FkZUxpc3RGb3JMYW5ndWFnZXMoZm9udCwgbG9jYWxlQXJyYXkuZ2V0KCkpKTsKLSAg
ICAgICAgVmVjdG9yPFJldGFpblB0cjxDVEZvbnREZXNjcmlwdG9yUmVmPj4gcmVzdWx0OwotICAg
ICAgICAvLyBXZWJLaXQgaGFuZGxlcyB0aGUgY2FzY2FkZSBsaXN0LCBhbmQgV2ViS2l0IDIncyBJ
UEMgY29kZSBkb2Vzbid0IGtub3cgaG93IHRvIHNlcmlhbGl6ZSBDb3JlIFRleHQncyBjYXNjYWRl
IGxpc3QuCi0gICAgICAgIHJlc3VsdC5hcHBlbmQocmVtb3ZlQ2FzY2FkZUxpc3QoYWRvcHRDRihD
VEZvbnRDb3B5Rm9udERlc2NyaXB0b3IoZm9udCkpLmdldCgpKSk7Ci0gICAgICAgIGlmIChjYXNj
YWRlTGlzdCkgewotICAgICAgICAgICAgQ0ZJbmRleCBhcnJheUxlbmd0aCA9IENGQXJyYXlHZXRD
b3VudChjYXNjYWRlTGlzdC5nZXQoKSk7Ci0gICAgICAgICAgICBmb3IgKENGSW5kZXggaSA9IDA7
IGkgPCBhcnJheUxlbmd0aDsgKytpKQotICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoc3Rh
dGljX2Nhc3Q8Q1RGb250RGVzY3JpcHRvclJlZj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRleChjYXNj
YWRlTGlzdC5nZXQoKSwgaSkpKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gcmVzdWx0Owot
ICAgIH0KLQotICAgIEhhc2hNYXA8Q29yZVRleHRDYXNjYWRlTGlzdFBhcmFtZXRlcnMsIFZlY3Rv
cjxSZXRhaW5QdHI8Q1RGb250RGVzY3JpcHRvclJlZj4+LCBDb3JlVGV4dENhc2NhZGVMaXN0UGFy
YW1ldGVyczo6Q29yZVRleHRDYXNjYWRlTGlzdFBhcmFtZXRlcnNIYXNoLCBTaW1wbGVDbGFzc0hh
c2hUcmFpdHM8Q29yZVRleHRDYXNjYWRlTGlzdFBhcmFtZXRlcnM+PiBtX3N5c3RlbUZvbnRDYWNo
ZTsKLX07Ci0KIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1N5c3RlbUZvbnRTdHJpbmcoY29uc3QgQXRv
bWljU3RyaW5nJiBzdHJpbmcpCiB7CiAgICAgcmV0dXJuIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVND
SUlDYXNlKHN0cmluZywgIi13ZWJraXQtc3lzdGVtLWZvbnQiKQpAQCAtMjQ0LDU3ICs4MSwxNCBA
QCBzdGF0aWMgaW5saW5lIGJvb2wgaXNVSUZvbnRUZXh0U3R5bGUoY29uCiB9CiAjZW5kaWYKIAot
c3RhdGljIGlubGluZSBTeXN0ZW1Gb250RGF0YWJhc2U6OkNvcmVUZXh0Q2FzY2FkZUxpc3RQYXJh
bWV0ZXJzIHN5c3RlbUZvbnRQYXJhbWV0ZXJzKGNvbnN0IEZvbnRDYXNjYWRlRGVzY3JpcHRpb24m
IGRlc2NyaXB0aW9uLCBjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlseU5hbWUsIFN5c3RlbUZvbnRE
YXRhYmFzZTo6Q2xpZW50VXNlIGNsaWVudFVzZSwgQWxsb3dVc2VySW5zdGFsbGVkRm9udHMgYWxs
b3dVc2VySW5zdGFsbGVkRm9udHMpCi17Ci0gICAgU3lzdGVtRm9udERhdGFiYXNlOjpDb3JlVGV4
dENhc2NhZGVMaXN0UGFyYW1ldGVycyByZXN1bHQ7Ci0gICAgcmVzdWx0LmxvY2FsZSA9IGRlc2Ny
aXB0aW9uLmxvY2FsZSgpOwotICAgIHJlc3VsdC5zaXplID0gZGVzY3JpcHRpb24uY29tcHV0ZWRT
aXplKCk7Ci0gICAgcmVzdWx0Lml0YWxpYyA9IGlzSXRhbGljKGRlc2NyaXB0aW9uLml0YWxpYygp
KTsKLQotICAgIGF1dG8gd2VpZ2h0ID0gZGVzY3JpcHRpb24ud2VpZ2h0KCk7Ci0gICAgaWYgKEZv
bnRDYWNoZTo6c2luZ2xldG9uKCkuc2hvdWxkTW9ja0JvbGRTeXN0ZW1Gb250Rm9yQWNjZXNzaWJp
bGl0eSgpKQotICAgICAgICB3ZWlnaHQgPSB3ZWlnaHQgKyBGb250U2VsZWN0aW9uVmFsdWUoMjAw
KTsKLQotICAgIGlmICh3ZWlnaHQgPCBGb250U2VsZWN0aW9uVmFsdWUoMTUwKSkKLSAgICAgICAg
cmVzdWx0LndlaWdodCA9IGtDVEZvbnRXZWlnaHRVbHRyYUxpZ2h0OwotICAgIGVsc2UgaWYgKHdl
aWdodCA8IEZvbnRTZWxlY3Rpb25WYWx1ZSgyNTApKQotICAgICAgICByZXN1bHQud2VpZ2h0ID0g
a0NURm9udFdlaWdodFRoaW47Ci0gICAgZWxzZSBpZiAod2VpZ2h0IDwgRm9udFNlbGVjdGlvblZh
bHVlKDM1MCkpCi0gICAgICAgIHJlc3VsdC53ZWlnaHQgPSBrQ1RGb250V2VpZ2h0TGlnaHQ7Ci0g
ICAgZWxzZSBpZiAod2VpZ2h0IDwgRm9udFNlbGVjdGlvblZhbHVlKDQ1MCkpCi0gICAgICAgIHJl
c3VsdC53ZWlnaHQgPSBrQ1RGb250V2VpZ2h0UmVndWxhcjsKLSAgICBlbHNlIGlmICh3ZWlnaHQg
PCBGb250U2VsZWN0aW9uVmFsdWUoNTUwKSkKLSAgICAgICAgcmVzdWx0LndlaWdodCA9IGtDVEZv
bnRXZWlnaHRNZWRpdW07Ci0gICAgZWxzZSBpZiAod2VpZ2h0IDwgRm9udFNlbGVjdGlvblZhbHVl
KDY1MCkpCi0gICAgICAgIHJlc3VsdC53ZWlnaHQgPSBrQ1RGb250V2VpZ2h0U2VtaWJvbGQ7Ci0g
ICAgZWxzZSBpZiAod2VpZ2h0IDwgRm9udFNlbGVjdGlvblZhbHVlKDc1MCkpCi0gICAgICAgIHJl
c3VsdC53ZWlnaHQgPSBrQ1RGb250V2VpZ2h0Qm9sZDsKLSAgICBlbHNlIGlmICh3ZWlnaHQgPCBG
b250U2VsZWN0aW9uVmFsdWUoODUwKSkKLSAgICAgICAgcmVzdWx0LndlaWdodCA9IGtDVEZvbnRX
ZWlnaHRIZWF2eTsKLSAgICBlbHNlCi0gICAgICAgIHJlc3VsdC53ZWlnaHQgPSBrQ1RGb250V2Vp
Z2h0QmxhY2s7Ci0KLSAgICBpZiAoY2xpZW50VXNlID09IFN5c3RlbUZvbnREYXRhYmFzZTo6Q2xp
ZW50VXNlOjpGb3JTeXN0ZW1VSSkgewotICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRv
bWljU3RyaW5nPiBzeXN0ZW1VSSA9IEF0b21pY1N0cmluZygic3lzdGVtLXVpIiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgICAgIHJlc3VsdC5mb250TmFtZSA9IHN5
c3RlbVVJLmdldCgpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIEFTU0VSVChjbGllbnRVc2UgPT0g
U3lzdGVtRm9udERhdGFiYXNlOjpDbGllbnRVc2U6OkZvclRleHRTdHlsZSk7Ci0gICAgICAgIHJl
c3VsdC5mb250TmFtZSA9IGZhbWlseU5hbWU7Ci0gICAgfQotCi0gICAgcmVzdWx0LmFsbG93VXNl
ckluc3RhbGxlZEZvbnRzID0gYWxsb3dVc2VySW5zdGFsbGVkRm9udHM7Ci0KLSAgICByZXR1cm4g
cmVzdWx0OwotfQotCiB2b2lkIEZvbnREZXNjcmlwdGlvbjo6aW52YWxpZGF0ZUNhY2hlcygpCiB7
Ci0gICAgU3lzdGVtRm9udERhdGFiYXNlOjpzaW5nbGV0b24oKS5jbGVhcigpOworICAgIFN5c3Rl
bUZvbnREYXRhYmFzZUNvcmVUZXh0OjpzaW5nbGV0b24oKS5jbGVhcigpOwogfQogCi1zdGF0aWMg
aW5saW5lIFZlY3RvcjxSZXRhaW5QdHI8Q1RGb250RGVzY3JpcHRvclJlZj4+IHN5c3RlbUZvbnRD
YXNjYWRlTGlzdChjb25zdCBGb250Q2FzY2FkZURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwgY29u
c3QgQXRvbWljU3RyaW5nJiBjc3NGYW1pbHksIFN5c3RlbUZvbnREYXRhYmFzZTo6Q2xpZW50VXNl
IGNsaWVudFVzZSwgQWxsb3dVc2VySW5zdGFsbGVkRm9udHMgYWxsb3dVc2VySW5zdGFsbGVkRm9u
dHMpCitzdGF0aWMgaW5saW5lIFZlY3RvcjxSZXRhaW5QdHI8Q1RGb250RGVzY3JpcHRvclJlZj4+
IHN5c3RlbUZvbnRDYXNjYWRlTGlzdChjb25zdCBGb250Q2FzY2FkZURlc2NyaXB0aW9uJiBkZXNj
cmlwdGlvbiwgY29uc3QgQXRvbWljU3RyaW5nJiBjc3NGYW1pbHksIFN5c3RlbUZvbnREYXRhYmFz
ZUNvcmVUZXh0OjpDbGllbnRVc2UgY2xpZW50VXNlLCBBbGxvd1VzZXJJbnN0YWxsZWRGb250cyBh
bGxvd1VzZXJJbnN0YWxsZWRGb250cykKIHsKLSAgICByZXR1cm4gU3lzdGVtRm9udERhdGFiYXNl
OjpzaW5nbGV0b24oKS5zeXN0ZW1Gb250Q2FzY2FkZUxpc3Qoc3lzdGVtRm9udFBhcmFtZXRlcnMo
ZGVzY3JpcHRpb24sIGNzc0ZhbWlseSwgY2xpZW50VXNlLCBhbGxvd1VzZXJJbnN0YWxsZWRGb250
cyksIGNsaWVudFVzZSk7CisgICAgcmV0dXJuIFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0Ojpz
aW5nbGV0b24oKS5zeXN0ZW1Gb250Q2FzY2FkZUxpc3QoZGVzY3JpcHRpb24sIGNzc0ZhbWlseSwg
Y2xpZW50VXNlLCBhbGxvd1VzZXJJbnN0YWxsZWRGb250cyk7CiB9CiAKIHVuc2lnbmVkIEZvbnRD
YXNjYWRlRGVzY3JpcHRpb246OmVmZmVjdGl2ZUZhbWlseUNvdW50KCkgY29uc3QKQEAgLTMwNCwx
MCArOTgsMTAgQEAgdW5zaWduZWQgRm9udENhc2NhZGVEZXNjcmlwdGlvbjo6ZWZmZWN0aQogICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBmYW1pbHlDb3VudCgpOyArK2kpIHsKICAgICAgICAg
Y29uc3QgYXV0byYgY3NzRmFtaWx5ID0gZmFtaWx5QXQoaSk7CiAgICAgICAgIGlmIChpc1N5c3Rl
bUZvbnRTdHJpbmcoY3NzRmFtaWx5KSkKLSAgICAgICAgICAgIHJlc3VsdCArPSBzeXN0ZW1Gb250
Q2FzY2FkZUxpc3QoKnRoaXMsIGNzc0ZhbWlseSwgU3lzdGVtRm9udERhdGFiYXNlOjpDbGllbnRV
c2U6OkZvclN5c3RlbVVJLCBzaG91bGRBbGxvd1VzZXJJbnN0YWxsZWRGb250cygpKS5zaXplKCk7
CisgICAgICAgICAgICByZXN1bHQgKz0gc3lzdGVtRm9udENhc2NhZGVMaXN0KCp0aGlzLCBjc3NG
YW1pbHksIFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0OjpDbGllbnRVc2U6OkZvclN5c3RlbVVJ
LCBzaG91bGRBbGxvd1VzZXJJbnN0YWxsZWRGb250cygpKS5zaXplKCk7CiAjaWYgUExBVEZPUk0o
SU9TKQogICAgICAgICBlbHNlIGlmIChpc1VJRm9udFRleHRTdHlsZShjc3NGYW1pbHkpKQotICAg
ICAgICAgICAgcmVzdWx0ICs9IHN5c3RlbUZvbnRDYXNjYWRlTGlzdCgqdGhpcywgY3NzRmFtaWx5
LCBTeXN0ZW1Gb250RGF0YWJhc2U6OkNsaWVudFVzZTo6Rm9yVGV4dFN0eWxlLCBzaG91bGRBbGxv
d1VzZXJJbnN0YWxsZWRGb250cygpKS5zaXplKCk7CisgICAgICAgICAgICByZXN1bHQgKz0gc3lz
dGVtRm9udENhc2NhZGVMaXN0KCp0aGlzLCBjc3NGYW1pbHksIFN5c3RlbUZvbnREYXRhYmFzZUNv
cmVUZXh0OjpDbGllbnRVc2U6OkZvclRleHRTdHlsZSwgc2hvdWxkQWxsb3dVc2VySW5zdGFsbGVk
Rm9udHMoKSkuc2l6ZSgpOwogI2VuZGlmCiAgICAgICAgIGVsc2UKICAgICAgICAgICAgICsrcmVz
dWx0OwpAQCAtMzI3LDE0ICsxMjEsMTQgQEAgRm9udEZhbWlseVNwZWNpZmljYXRpb24gRm9udENh
c2NhZGVEZXNjcgogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBmYW1pbHlDb3VudCgpOyAr
K2kpIHsKICAgICAgICAgY29uc3QgYXV0byYgY3NzRmFtaWx5ID0gZmFtaWx5QXQoaSk7CiAgICAg
ICAgIGlmIChpc1N5c3RlbUZvbnRTdHJpbmcoY3NzRmFtaWx5KSkgewotICAgICAgICAgICAgYXV0
byBjYXNjYWRlTGlzdCA9IHN5c3RlbUZvbnRDYXNjYWRlTGlzdCgqdGhpcywgY3NzRmFtaWx5LCBT
eXN0ZW1Gb250RGF0YWJhc2U6OkNsaWVudFVzZTo6Rm9yU3lzdGVtVUksIHNob3VsZEFsbG93VXNl
ckluc3RhbGxlZEZvbnRzKCkpOworICAgICAgICAgICAgYXV0byBjYXNjYWRlTGlzdCA9IHN5c3Rl
bUZvbnRDYXNjYWRlTGlzdCgqdGhpcywgY3NzRmFtaWx5LCBTeXN0ZW1Gb250RGF0YWJhc2VDb3Jl
VGV4dDo6Q2xpZW50VXNlOjpGb3JTeXN0ZW1VSSwgc2hvdWxkQWxsb3dVc2VySW5zdGFsbGVkRm9u
dHMoKSk7CiAgICAgICAgICAgICBpZiAoaW5kZXggPCBjYXNjYWRlTGlzdC5zaXplKCkpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIEZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uKGNhc2NhZGVMaXN0W2lu
ZGV4XS5nZXQoKSk7CiAgICAgICAgICAgICBpbmRleCAtPSBjYXNjYWRlTGlzdC5zaXplKCk7CiAg
ICAgICAgIH0KICNpZiBQTEFURk9STShJT1MpCiAgICAgICAgIGVsc2UgaWYgKGlzVUlGb250VGV4
dFN0eWxlKGNzc0ZhbWlseSkpIHsKLSAgICAgICAgICAgIGF1dG8gY2FzY2FkZUxpc3QgPSBzeXN0
ZW1Gb250Q2FzY2FkZUxpc3QoKnRoaXMsIGNzc0ZhbWlseSwgU3lzdGVtRm9udERhdGFiYXNlOjpD
bGllbnRVc2U6OkZvclRleHRTdHlsZSwgc2hvdWxkQWxsb3dVc2VySW5zdGFsbGVkRm9udHMoKSk7
CisgICAgICAgICAgICBhdXRvIGNhc2NhZGVMaXN0ID0gc3lzdGVtRm9udENhc2NhZGVMaXN0KCp0
aGlzLCBjc3NGYW1pbHksIFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0OjpDbGllbnRVc2U6OkZv
clRleHRTdHlsZSwgc2hvdWxkQWxsb3dVc2VySW5zdGFsbGVkRm9udHMoKSk7CiAgICAgICAgICAg
ICBpZiAoaW5kZXggPCBjYXNjYWRlTGlzdC5zaXplKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IEZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uKGNhc2NhZGVMaXN0W2luZGV4XS5nZXQoKSk7CiAgICAg
ICAgICAgICBpbmRleCAtPSBjYXNjYWRlTGlzdC5zaXplKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9TeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU3lz
dGVtRm9udERhdGFiYXNlQ29yZVRleHQuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1N5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE3NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dC5oIgorCisj
aWYgVVNFX1BMQVRGT1JNX1NZU1RFTV9GQUxMQkFDS19MSVNUCisKKyNpbmNsdWRlICJGb250Q2Fj
aGUuaCIKKworI2lmIFBMQVRGT1JNKElPUykKKyNpbmNsdWRlICJSZW5kZXJUaGVtZUlPUy5oIgor
I2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworU3lzdGVtRm9udERhdGFiYXNlQ29yZVRl
eHQmIFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0OjpzaW5nbGV0b24oKQoreworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dD4gZGF0YWJhc2UgPSBT
eXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dCgpOworICAgIHJldHVybiBkYXRhYmFzZS5nZXQoKTsK
K30KKworU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQ6OlN5c3RlbUZvbnREYXRhYmFzZUNvcmVU
ZXh0KCkKK3sKK30KKworVmVjdG9yPFJldGFpblB0cjxDVEZvbnREZXNjcmlwdG9yUmVmPj4gU3lz
dGVtRm9udERhdGFiYXNlQ29yZVRleHQ6OnN5c3RlbUZvbnRDYXNjYWRlTGlzdChjb25zdCBDYXNj
YWRlTGlzdFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIENsaWVudFVzZSBjbGllbnRVc2UpCit7Cisg
ICAgQVNTRVJUKCFwYXJhbWV0ZXJzLmZvbnROYW1lLmlzTnVsbCgpKTsKKyAgICByZXR1cm4gbV9z
eXN0ZW1Gb250Q2FjaGUuZW5zdXJlKHBhcmFtZXRlcnMsIFsmXSB7CisgICAgICAgIGF1dG8gbG9j
YWxlU3RyaW5nID0gcGFyYW1ldGVycy5sb2NhbGUuc3RyaW5nKCkuY3JlYXRlQ0ZTdHJpbmcoKTsK
KyAgICAgICAgUmV0YWluUHRyPENURm9udFJlZj4gc3lzdGVtRm9udDsKKyAgICAgICAgaWYgKGNs
aWVudFVzZSA9PSBDbGllbnRVc2U6OkZvclN5c3RlbVVJKSB7CisgICAgICAgICAgICBzeXN0ZW1G
b250ID0gYWRvcHRDRihDVEZvbnRDcmVhdGVVSUZvbnRGb3JMYW5ndWFnZShrQ1RGb250VUlGb250
U3lzdGVtLCBwYXJhbWV0ZXJzLnNpemUsIGxvY2FsZVN0cmluZy5nZXQoKSkpOworICAgICAgICAg
ICAgQVNTRVJUKHN5c3RlbUZvbnQpOworICAgICAgICAgICAgLy8gRklYTUU6IFVzZSBhcHBseVdl
aWdodEl0YWxpY3NBbmRGYWxsYmFja0JlaGF2aW9yKCkgaW4gYm90aCBjYXNlcyBvbmNlIDxyZGFy
Oi8vcHJvYmxlbS8zMzA0NjA0MT4gaXMgZml4ZWQuCisgICAgICAgICAgICBzeXN0ZW1Gb250ID0g
YXBwbHlXZWlnaHRJdGFsaWNzQW5kRmFsbGJhY2tCZWhhdmlvcihzeXN0ZW1Gb250LmdldCgpLCBw
YXJhbWV0ZXJzLndlaWdodCwgcGFyYW1ldGVycy5pdGFsaWMsIHBhcmFtZXRlcnMuc2l6ZSwgcGFy
YW1ldGVycy5hbGxvd1VzZXJJbnN0YWxsZWRGb250cyk7CisgICAgICAgIH0gZWxzZSB7CisjaWYg
UExBVEZPUk0oSU9TKQorICAgICAgICAgICAgQVNTRVJUKGNsaWVudFVzZSA9PSBDbGllbnRVc2U6
OkZvclRleHRTdHlsZSk7CisgICAgICAgICAgICBhdXRvIGZvbnREZXNjcmlwdG9yID0gYWRvcHRD
RihDVEZvbnREZXNjcmlwdG9yQ3JlYXRlV2l0aFRleHRTdHlsZShwYXJhbWV0ZXJzLmZvbnROYW1l
LnN0cmluZygpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIFJlbmRlclRoZW1lSU9TOjpjb250ZW50
U2l6ZUNhdGVnb3J5KCksIG51bGxwdHIpKTsKKyAgICAgICAgICAgIENURm9udFN5bWJvbGljVHJh
aXRzIHRyYWl0cyA9IChwYXJhbWV0ZXJzLndlaWdodCA+PSBrQ1RGb250V2VpZ2h0U2VtaWJvbGQg
PyBrQ1RGb250VHJhaXRCb2xkIDogMCkgfCAocGFyYW1ldGVycy5pdGFsaWMgPyBrQ1RGb250VHJh
aXRJdGFsaWMgOiAwKTsKKyAgICAgICAgICAgIGlmICh0cmFpdHMpCisgICAgICAgICAgICAgICAg
Zm9udERlc2NyaXB0b3IgPSBhZG9wdENGKENURm9udERlc2NyaXB0b3JDcmVhdGVDb3B5V2l0aFN5
bWJvbGljVHJhaXRzKGZvbnREZXNjcmlwdG9yLmdldCgpLCB0cmFpdHMsIHRyYWl0cykpOworICAg
ICAgICAgICAgc3lzdGVtRm9udCA9IGNyZWF0ZUZvbnRGb3JJbnN0YWxsZWRGb250cyhmb250RGVz
Y3JpcHRvci5nZXQoKSwgcGFyYW1ldGVycy5zaXplLCBwYXJhbWV0ZXJzLmFsbG93VXNlckluc3Rh
bGxlZEZvbnRzKTsKKyNlbHNlCisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyNl
bmRpZgorICAgICAgICB9CisgICAgICAgIEFTU0VSVChzeXN0ZW1Gb250KTsKKyAgICAgICAgYXV0
byByZXN1bHQgPSBjb21wdXRlQ2FzY2FkZUxpc3Qoc3lzdGVtRm9udC5nZXQoKSwgbG9jYWxlU3Ry
aW5nLmdldCgpKTsKKyAgICAgICAgQVNTRVJUKCFyZXN1bHQuaXNFbXB0eSgpKTsKKyAgICAgICAg
cmV0dXJuIHJlc3VsdDsKKyAgICB9KS5pdGVyYXRvci0+dmFsdWU7Cit9CisKK3ZvaWQgU3lzdGVt
Rm9udERhdGFiYXNlQ29yZVRleHQ6OmNsZWFyKCkKK3sKKyAgICBtX3N5c3RlbUZvbnRDYWNoZS5j
bGVhcigpOworfQorCitSZXRhaW5QdHI8Q1RGb250UmVmPiBTeXN0ZW1Gb250RGF0YWJhc2VDb3Jl
VGV4dDo6YXBwbHlXZWlnaHRJdGFsaWNzQW5kRmFsbGJhY2tCZWhhdmlvcihDVEZvbnRSZWYgZm9u
dCwgQ0dGbG9hdCB3ZWlnaHQsIGJvb2wgaXRhbGljLCBmbG9hdCBzaXplLCBBbGxvd1VzZXJJbnN0
YWxsZWRGb250cyBhbGxvd1VzZXJJbnN0YWxsZWRGb250cykKK3sKKyAgICBhdXRvIHdlaWdodE51
bWJlciA9IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGTnVt
YmVyQ0dGbG9hdFR5cGUsICZ3ZWlnaHQpKTsKKyAgICBjb25zdCBmbG9hdCBzeXN0ZW1Gb250SXRh
bGljU2xvcGUgPSAwLjA3OworICAgIGZsb2F0IGl0YWxpY3NSYXdOdW1iZXIgPSBpdGFsaWMgPyBz
eXN0ZW1Gb250SXRhbGljU2xvcGUgOiAwOworICAgIGF1dG8gaXRhbGljc051bWJlciA9IGFkb3B0
Q0YoQ0ZOdW1iZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGTnVtYmVyRmxvYXRUeXBl
LCAmaXRhbGljc1Jhd051bWJlcikpOworICAgIENGVHlwZVJlZiB0cmFpdHNLZXlzW10gPSB7IGtD
VEZvbnRXZWlnaHRUcmFpdCwga0NURm9udFNsYW50VHJhaXQsIGtDVEZvbnRVSUZvbnREZXNpZ25U
cmFpdCB9OworICAgIENGVHlwZVJlZiB0cmFpdHNWYWx1ZXNbXSA9IHsgd2VpZ2h0TnVtYmVyLmdl
dCgpLCBpdGFsaWNzTnVtYmVyLmdldCgpLCBrQ0ZCb29sZWFuVHJ1ZSB9OworICAgIGF1dG8gdHJh
aXRzRGljdGlvbmFyeSA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIHRyYWl0c0tleXMsIHRyYWl0c1ZhbHVlcywgV1RGX0FSUkFZX0xFTkdUSCh0cmFpdHNL
ZXlzKSwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlW
YWx1ZUNhbGxCYWNrcykpOworICAgIGF1dG8gYXR0cmlidXRlcyA9IGFkb3B0Q0YoQ0ZEaWN0aW9u
YXJ5Q3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCAma0NGVHlwZURpY3Rpb25h
cnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CisgICAg
Q0ZEaWN0aW9uYXJ5QWRkVmFsdWUoYXR0cmlidXRlcy5nZXQoKSwga0NURm9udFRyYWl0c0F0dHJp
YnV0ZSwgdHJhaXRzRGljdGlvbmFyeS5nZXQoKSk7CisgICAgYWRkQXR0cmlidXRlc0Zvckluc3Rh
bGxlZEZvbnRzKGF0dHJpYnV0ZXMuZ2V0KCksIGFsbG93VXNlckluc3RhbGxlZEZvbnRzKTsKKyAg
ICBhdXRvIG1vZGlmaWNhdGlvbiA9IGFkb3B0Q0YoQ1RGb250RGVzY3JpcHRvckNyZWF0ZVdpdGhB
dHRyaWJ1dGVzKGF0dHJpYnV0ZXMuZ2V0KCkpKTsKKyAgICByZXR1cm4gYWRvcHRDRihDVEZvbnRD
cmVhdGVDb3B5V2l0aEF0dHJpYnV0ZXMoZm9udCwgc2l6ZSwgbnVsbHB0ciwgbW9kaWZpY2F0aW9u
LmdldCgpKSk7Cit9CisKK1JldGFpblB0cjxDVEZvbnREZXNjcmlwdG9yUmVmPiBTeXN0ZW1Gb250
RGF0YWJhc2VDb3JlVGV4dDo6cmVtb3ZlQ2FzY2FkZUxpc3QoQ1RGb250RGVzY3JpcHRvclJlZiBm
b250RGVzY3JpcHRvcikKK3sKKyAgICBhdXRvIGVtcHR5QXJyYXkgPSBhZG9wdENGKENGQXJyYXlD
cmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgbnVsbHB0ciwgMCwgJmtDRlR5cGVBcnJheUNhbGxC
YWNrcykpOworICAgIENGVHlwZVJlZiBmYWxsYmFja0RpY3Rpb25hcnlLZXlzW10gPSB7IGtDVEZv
bnRDYXNjYWRlTGlzdEF0dHJpYnV0ZSB9OworICAgIENGVHlwZVJlZiBmYWxsYmFja0RpY3Rpb25h
cnlWYWx1ZXNbXSA9IHsgZW1wdHlBcnJheS5nZXQoKSB9OworICAgIGF1dG8gZmFsbGJhY2tEaWN0
aW9uYXJ5ID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwg
ZmFsbGJhY2tEaWN0aW9uYXJ5S2V5cywgZmFsbGJhY2tEaWN0aW9uYXJ5VmFsdWVzLCBXVEZfQVJS
QVlfTEVOR1RIKGZhbGxiYWNrRGljdGlvbmFyeUtleXMpLCAma0NGVHlwZURpY3Rpb25hcnlLZXlD
YWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CisgICAgYXV0byBt
b2RpZmllZEZvbnREZXNjcmlwdG9yID0gYWRvcHRDRihDVEZvbnREZXNjcmlwdG9yQ3JlYXRlQ29w
eVdpdGhBdHRyaWJ1dGVzKGZvbnREZXNjcmlwdG9yLCBmYWxsYmFja0RpY3Rpb25hcnkuZ2V0KCkp
KTsKKyAgICByZXR1cm4gbW9kaWZpZWRGb250RGVzY3JpcHRvcjsKK30KKworVmVjdG9yPFJldGFp
blB0cjxDVEZvbnREZXNjcmlwdG9yUmVmPj4gU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQ6OmNv
bXB1dGVDYXNjYWRlTGlzdChDVEZvbnRSZWYgZm9udCwgQ0ZTdHJpbmdSZWYgbG9jYWxlKQorewor
ICAgIENGVHlwZVJlZiBhcnJheVZhbHVlc1tdID0geyBsb2NhbGUgfTsKKyAgICBhdXRvIGxvY2Fs
ZUFycmF5ID0gYWRvcHRDRihDRkFycmF5Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGFycmF5
VmFsdWVzLCBXVEZfQVJSQVlfTEVOR1RIKGFycmF5VmFsdWVzKSwgJmtDRlR5cGVBcnJheUNhbGxC
YWNrcykpOworICAgIGF1dG8gY2FzY2FkZUxpc3QgPSBhZG9wdENGKENURm9udENvcHlEZWZhdWx0
Q2FzY2FkZUxpc3RGb3JMYW5ndWFnZXMoZm9udCwgbG9jYWxlQXJyYXkuZ2V0KCkpKTsKKyAgICBW
ZWN0b3I8UmV0YWluUHRyPENURm9udERlc2NyaXB0b3JSZWY+PiByZXN1bHQ7CisgICAgLy8gV2Vi
S2l0IGhhbmRsZXMgdGhlIGNhc2NhZGUgbGlzdCwgYW5kIFdlYktpdCAyJ3MgSVBDIGNvZGUgZG9l
c24ndCBrbm93IGhvdyB0byBzZXJpYWxpemUgQ29yZSBUZXh0J3MgY2FzY2FkZSBsaXN0LgorICAg
IHJlc3VsdC5hcHBlbmQocmVtb3ZlQ2FzY2FkZUxpc3QoYWRvcHRDRihDVEZvbnRDb3B5Rm9udERl
c2NyaXB0b3IoZm9udCkpLmdldCgpKSk7CisgICAgaWYgKGNhc2NhZGVMaXN0KSB7CisgICAgICAg
IENGSW5kZXggYXJyYXlMZW5ndGggPSBDRkFycmF5R2V0Q291bnQoY2FzY2FkZUxpc3QuZ2V0KCkp
OworICAgICAgICBmb3IgKENGSW5kZXggaSA9IDA7IGkgPCBhcnJheUxlbmd0aDsgKytpKQorICAg
ICAgICAgICAgcmVzdWx0LmFwcGVuZChzdGF0aWNfY2FzdDxDVEZvbnREZXNjcmlwdG9yUmVmPihD
RkFycmF5R2V0VmFsdWVBdEluZGV4KGNhc2NhZGVMaXN0LmdldCgpLCBpKSkpOworICAgIH0KKyAg
ICByZXR1cm4gcmVzdWx0OworfQorCitTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dDo6Q2FzY2Fk
ZUxpc3RQYXJhbWV0ZXJzIFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0OjpzeXN0ZW1Gb250UGFy
YW1ldGVycyhjb25zdCBGb250Q2FzY2FkZURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwgY29uc3Qg
QXRvbWljU3RyaW5nJiBmYW1pbHlOYW1lLCBDbGllbnRVc2UgY2xpZW50VXNlLCBBbGxvd1VzZXJJ
bnN0YWxsZWRGb250cyBhbGxvd1VzZXJJbnN0YWxsZWRGb250cykKK3sKKyAgICBDYXNjYWRlTGlz
dFBhcmFtZXRlcnMgcmVzdWx0OworICAgIHJlc3VsdC5sb2NhbGUgPSBkZXNjcmlwdGlvbi5sb2Nh
bGUoKTsKKyAgICByZXN1bHQuc2l6ZSA9IGRlc2NyaXB0aW9uLmNvbXB1dGVkU2l6ZSgpOworICAg
IHJlc3VsdC5pdGFsaWMgPSBpc0l0YWxpYyhkZXNjcmlwdGlvbi5pdGFsaWMoKSk7CisKKyAgICBh
dXRvIHdlaWdodCA9IGRlc2NyaXB0aW9uLndlaWdodCgpOworICAgIGlmIChGb250Q2FjaGU6OnNp
bmdsZXRvbigpLnNob3VsZE1vY2tCb2xkU3lzdGVtRm9udEZvckFjY2Vzc2liaWxpdHkoKSkKKyAg
ICAgICAgd2VpZ2h0ID0gd2VpZ2h0ICsgRm9udFNlbGVjdGlvblZhbHVlKDIwMCk7CisKKyAgICBp
ZiAod2VpZ2h0IDwgRm9udFNlbGVjdGlvblZhbHVlKDE1MCkpCisgICAgICAgIHJlc3VsdC53ZWln
aHQgPSBrQ1RGb250V2VpZ2h0VWx0cmFMaWdodDsKKyAgICBlbHNlIGlmICh3ZWlnaHQgPCBGb250
U2VsZWN0aW9uVmFsdWUoMjUwKSkKKyAgICAgICAgcmVzdWx0LndlaWdodCA9IGtDVEZvbnRXZWln
aHRUaGluOworICAgIGVsc2UgaWYgKHdlaWdodCA8IEZvbnRTZWxlY3Rpb25WYWx1ZSgzNTApKQor
ICAgICAgICByZXN1bHQud2VpZ2h0ID0ga0NURm9udFdlaWdodExpZ2h0OworICAgIGVsc2UgaWYg
KHdlaWdodCA8IEZvbnRTZWxlY3Rpb25WYWx1ZSg0NTApKQorICAgICAgICByZXN1bHQud2VpZ2h0
ID0ga0NURm9udFdlaWdodFJlZ3VsYXI7CisgICAgZWxzZSBpZiAod2VpZ2h0IDwgRm9udFNlbGVj
dGlvblZhbHVlKDU1MCkpCisgICAgICAgIHJlc3VsdC53ZWlnaHQgPSBrQ1RGb250V2VpZ2h0TWVk
aXVtOworICAgIGVsc2UgaWYgKHdlaWdodCA8IEZvbnRTZWxlY3Rpb25WYWx1ZSg2NTApKQorICAg
ICAgICByZXN1bHQud2VpZ2h0ID0ga0NURm9udFdlaWdodFNlbWlib2xkOworICAgIGVsc2UgaWYg
KHdlaWdodCA8IEZvbnRTZWxlY3Rpb25WYWx1ZSg3NTApKQorICAgICAgICByZXN1bHQud2VpZ2h0
ID0ga0NURm9udFdlaWdodEJvbGQ7CisgICAgZWxzZSBpZiAod2VpZ2h0IDwgRm9udFNlbGVjdGlv
blZhbHVlKDg1MCkpCisgICAgICAgIHJlc3VsdC53ZWlnaHQgPSBrQ1RGb250V2VpZ2h0SGVhdnk7
CisgICAgZWxzZQorICAgICAgICByZXN1bHQud2VpZ2h0ID0ga0NURm9udFdlaWdodEJsYWNrOwor
CisgICAgaWYgKGNsaWVudFVzZSA9PSBDbGllbnRVc2U6OkZvclN5c3RlbVVJKSB7CisgICAgICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHN5c3RlbVVJID0gQXRvbWljU3Ry
aW5nKCJzeXN0ZW0tdWkiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAg
ICAgICAgcmVzdWx0LmZvbnROYW1lID0gc3lzdGVtVUkuZ2V0KCk7CisgICAgfSBlbHNlIHsKKyAg
ICAgICAgQVNTRVJUKGNsaWVudFVzZSA9PSBDbGllbnRVc2U6OkZvclRleHRTdHlsZSk7CisgICAg
ICAgIHJlc3VsdC5mb250TmFtZSA9IGZhbWlseU5hbWU7CisgICAgfQorCisgICAgcmVzdWx0LmFs
bG93VXNlckluc3RhbGxlZEZvbnRzID0gYWxsb3dVc2VySW5zdGFsbGVkRm9udHM7CisKKyAgICBy
ZXR1cm4gcmVzdWx0OworfQorCitWZWN0b3I8UmV0YWluUHRyPENURm9udERlc2NyaXB0b3JSZWY+
PiBTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dDo6c3lzdGVtRm9udENhc2NhZGVMaXN0KGNvbnN0
IEZvbnRDYXNjYWRlRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uLCBjb25zdCBBdG9taWNTdHJpbmcm
IGNzc0ZhbWlseSwgQ2xpZW50VXNlIGNsaWVudFVzZSwgQWxsb3dVc2VySW5zdGFsbGVkRm9udHMg
YWxsb3dVc2VySW5zdGFsbGVkRm9udHMpCit7CisgICAgcmV0dXJuIHN5c3RlbUZvbnRDYXNjYWRl
TGlzdChzeXN0ZW1Gb250UGFyYW1ldGVycyhkZXNjcmlwdGlvbiwgY3NzRmFtaWx5LCBjbGllbnRV
c2UsIGFsbG93VXNlckluc3RhbGxlZEZvbnRzKSwgY2xpZW50VXNlKTsKK30KKworfQorCisjZW5k
aWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1N5c3RlbUZv
bnREYXRhYmFzZUNvcmVUZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQuaAkobm9uZXhpc3Rl
bnQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9TeXN0ZW1Gb250
RGF0YWJhc2VDb3JlVGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTIxIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJGb250RGVzY3JpcHRpb24uaCIKKyNp
bmNsdWRlIDxwYWwvc3BpL2NvY29hL0NvcmVUZXh0U1BJLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0cy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0
b21pY1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZ0hhc2guaD4KKwor
I2lmIFVTRV9QTEFURk9STV9TWVNURU1fRkFMTEJBQ0tfTElTVAorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0IHsKK3B1YmxpYzoKKyAgICBz
dHJ1Y3QgQ2FzY2FkZUxpc3RQYXJhbWV0ZXJzIHsKKyAgICAgICAgQ2FzY2FkZUxpc3RQYXJhbWV0
ZXJzKCkKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgQ2FzY2FkZUxpc3RQYXJhbWV0
ZXJzKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkKKyAgICAgICAgICAgIDogZm9udE5h
bWUoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWUpCisgICAgICAgIHsKKyAgICAgICAgfQorCisg
ICAgICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdAorICAgICAgICB7Cisg
ICAgICAgICAgICByZXR1cm4gZm9udE5hbWUuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsKKyAg
ICAgICAgfQorCisgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDYXNjYWRlTGlzdFBhcmFt
ZXRlcnMmIG90aGVyKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZm9udE5h
bWUgPT0gb3RoZXIuZm9udE5hbWUKKyAgICAgICAgICAgICAgICAmJiBsb2NhbGUgPT0gb3RoZXIu
bG9jYWxlCisgICAgICAgICAgICAgICAgJiYgd2VpZ2h0ID09IG90aGVyLndlaWdodAorICAgICAg
ICAgICAgICAgICYmIHNpemUgPT0gb3RoZXIuc2l6ZQorICAgICAgICAgICAgICAgICYmIGFsbG93
VXNlckluc3RhbGxlZEZvbnRzID09IG90aGVyLmFsbG93VXNlckluc3RhbGxlZEZvbnRzCisgICAg
ICAgICAgICAgICAgJiYgaXRhbGljID09IG90aGVyLml0YWxpYzsKKyAgICAgICAgfQorCisgICAg
ICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICBJbnRlZ2Vy
SGFzaGVyIGhhc2hlcjsKKyAgICAgICAgICAgIEFTU0VSVCghZm9udE5hbWUuaXNOdWxsKCkpOwor
ICAgICAgICAgICAgaGFzaGVyLmFkZChsb2NhbGUuZXhpc3RpbmdIYXNoKCkpOworICAgICAgICAg
ICAgaGFzaGVyLmFkZChsb2NhbGUuaXNOdWxsKCkgPyAwIDogbG9jYWxlLmV4aXN0aW5nSGFzaCgp
KTsKKyAgICAgICAgICAgIGhhc2hlci5hZGQod2VpZ2h0KTsKKyAgICAgICAgICAgIGhhc2hlci5h
ZGQoc2l6ZSk7CisgICAgICAgICAgICBoYXNoZXIuYWRkKHN0YXRpY19jYXN0PHVuc2lnbmVkPihh
bGxvd1VzZXJJbnN0YWxsZWRGb250cykpOworICAgICAgICAgICAgaGFzaGVyLmFkZChpdGFsaWMp
OworICAgICAgICAgICAgcmV0dXJuIGhhc2hlci5oYXNoKCk7CisgICAgICAgIH0KKworICAgICAg
ICBzdHJ1Y3QgQ2FzY2FkZUxpc3RQYXJhbWV0ZXJzSGFzaCA6IFdURjo6UGFpckhhc2g8QXRvbWlj
U3RyaW5nLCBmbG9hdD4geworICAgICAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3Qg
Q2FzY2FkZUxpc3RQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIHJldHVybiBwYXJhbWV0ZXJzLmhhc2goKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IENhc2NhZGVMaXN0UGFyYW1ldGVycyYgYSwg
Y29uc3QgQ2FzY2FkZUxpc3RQYXJhbWV0ZXJzJiBiKQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIHJldHVybiBhID09IGI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzdGF0aWMg
Y29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IHRydWU7CisgICAgICAg
IH07CisKKyAgICAgICAgQXRvbWljU3RyaW5nIGZvbnROYW1lOworICAgICAgICBBdG9taWNTdHJp
bmcgbG9jYWxlOworICAgICAgICBDR0Zsb2F0IHdlaWdodCB7IDAgfTsKKyAgICAgICAgZmxvYXQg
c2l6ZSB7IDAgfTsKKyAgICAgICAgQWxsb3dVc2VySW5zdGFsbGVkRm9udHMgYWxsb3dVc2VySW5z
dGFsbGVkRm9udHMgeyBBbGxvd1VzZXJJbnN0YWxsZWRGb250czo6Tm8gfTsKKyAgICAgICAgYm9v
bCBpdGFsaWMgeyBmYWxzZSB9OworICAgIH07CisKKyAgICBzdGF0aWMgU3lzdGVtRm9udERhdGFi
YXNlQ29yZVRleHQmIHNpbmdsZXRvbigpOworCisgICAgZW51bSBjbGFzcyBDbGllbnRVc2UgeyBG
b3JTeXN0ZW1VSSwgRm9yVGV4dFN0eWxlIH07CisKKyAgICBWZWN0b3I8UmV0YWluUHRyPENURm9u
dERlc2NyaXB0b3JSZWY+PiBzeXN0ZW1Gb250Q2FzY2FkZUxpc3QoY29uc3QgRm9udENhc2NhZGVE
ZXNjcmlwdGlvbiYsIGNvbnN0IEF0b21pY1N0cmluZyYgY3NzRmFtaWx5LCBDbGllbnRVc2UsIEFs
bG93VXNlckluc3RhbGxlZEZvbnRzKTsKKyAgICB2b2lkIGNsZWFyKCk7CisKK3ByaXZhdGU6Cisg
ICAgU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQoKTsKKworICAgIFZlY3RvcjxSZXRhaW5QdHI8
Q1RGb250RGVzY3JpcHRvclJlZj4+IHN5c3RlbUZvbnRDYXNjYWRlTGlzdChjb25zdCBDYXNjYWRl
TGlzdFBhcmFtZXRlcnMmLCBDbGllbnRVc2UpOworCisgICAgc3RhdGljIFJldGFpblB0cjxDVEZv
bnRSZWY+IGFwcGx5V2VpZ2h0SXRhbGljc0FuZEZhbGxiYWNrQmVoYXZpb3IoQ1RGb250UmVmLCBD
R0Zsb2F0IHdlaWdodCwgYm9vbCBpdGFsaWMsIGZsb2F0IHNpemUsIEFsbG93VXNlckluc3RhbGxl
ZEZvbnRzKTsKKyAgICBzdGF0aWMgUmV0YWluUHRyPENURm9udERlc2NyaXB0b3JSZWY+IHJlbW92
ZUNhc2NhZGVMaXN0KENURm9udERlc2NyaXB0b3JSZWYpOworICAgIHN0YXRpYyBWZWN0b3I8UmV0
YWluUHRyPENURm9udERlc2NyaXB0b3JSZWY+PiBjb21wdXRlQ2FzY2FkZUxpc3QoQ1RGb250UmVm
LCBDRlN0cmluZ1JlZiBsb2NhbGUpOworICAgIHN0YXRpYyBDYXNjYWRlTGlzdFBhcmFtZXRlcnMg
c3lzdGVtRm9udFBhcmFtZXRlcnMoY29uc3QgRm9udENhc2NhZGVEZXNjcmlwdGlvbiYsIGNvbnN0
IEF0b21pY1N0cmluZyYgZmFtaWx5TmFtZSwgQ2xpZW50VXNlLCBBbGxvd1VzZXJJbnN0YWxsZWRG
b250cyk7CisKKyAgICBIYXNoTWFwPENhc2NhZGVMaXN0UGFyYW1ldGVycywgVmVjdG9yPFJldGFp
blB0cjxDVEZvbnREZXNjcmlwdG9yUmVmPj4sIENhc2NhZGVMaXN0UGFyYW1ldGVyczo6Q2FzY2Fk
ZUxpc3RQYXJhbWV0ZXJzSGFzaCwgU2ltcGxlQ2xhc3NIYXNoVHJhaXRzPENhc2NhZGVMaXN0UGFy
YW1ldGVycz4+IG1fc3lzdGVtRm9udENhY2hlOworfTsKKworfQorCisjZW5kaWYKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU1lZGlhU291cmNl
Q2VudGVyTWFjLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5jcHAJKHJldmlzaW9uIDIz
NjkxMSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGlt
ZU1lZGlhU291cmNlQ2VudGVyTWFjLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBA
QAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNZWRpYVN0cmVhbVByaXZhdGUuaCIK
ICNpbmNsdWRlICJTY3JlZW5EaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYy5oIgorI2luY2x1ZGUgIldp
bmRvd0Rpc3BsYXlDYXB0dXJlU291cmNlTWFjLmgiCiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewo=
</data>
<flag name="review"
          id="369110"
          type_id="1"
          status="+"
          setter="cdumez"
    />
    <flag name="commit-queue"
          id="369117"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>351780</attachid>
            <date>2018-10-08 09:53:58 -0700</date>
            <delta_ts>2018-10-08 10:03:28 -0700</delta_ts>
            <desc>patch</desc>
            <filename>systemfontdatabase-file-2.patch</filename>
            <type>text/plain</type>
            <size>36816</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzNjkxNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUyIEBACisyMDE4LTEwLTA4ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIFN5c3RlbUZvbnREYXRh
YmFzZSB0byBhIGZpbGUgb2YgaXRzIG93bgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTkwMzQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRHVt
ZXouCisKKyAgICAgICAgQWxzbyByZW5hbWUgaXQgdG8gU3lzdGVtRm9udERhdGFiYXNlQ29yZVRl
eHQgYXMgaXQgaXMgQ29yZVRleHQgc3BlY2lmaWMuCisKKyAgICAgICAgKiBTb3VyY2VzQ29jb2Eu
dHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RGVzY3JpcHRpb25Db2NvYS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGb250RGVzY3JpcHRpb246OmludmFsaWRhdGVDYWNoZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6c3lzdGVtRm9udENhc2NhZGVMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkZvbnRDYXNjYWRlRGVzY3JpcHRpb246OmVmZmVjdGl2ZUZhbWlseUNvdW50IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlRGVzY3JpcHRpb246OmVmZmVjdGl2ZUZhbWlseUF0
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN5c3RlbUZvbnREYXRhYmFzZTo6Q29yZVRleHRD
YXNjYWRlTGlzdFBhcmFtZXRlcnM6OkNvcmVUZXh0Q2FzY2FkZUxpc3RQYXJhbWV0ZXJzKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlN5c3RlbUZvbnREYXRhYmFzZTo6Q29yZVRleHRDYXNj
YWRlTGlzdFBhcmFtZXRlcnM6OmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlN5c3RlbUZvbnREYXRhYmFzZTo6Q29yZVRleHRDYXNjYWRl
TGlzdFBhcmFtZXRlcnM6Om9wZXJhdG9yPT0gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6U3lzdGVtRm9udERhdGFiYXNlOjpDb3JlVGV4dENhc2NhZGVMaXN0UGFyYW1ldGVyczo6
aGFzaCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTeXN0ZW1Gb250RGF0YWJh
c2U6OkNvcmVUZXh0Q2FzY2FkZUxpc3RQYXJhbWV0ZXJzOjpDb3JlVGV4dENhc2NhZGVMaXN0UGFy
YW1ldGVyc0hhc2g6Omhhc2gpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U3lzdGVtRm9u
dERhdGFiYXNlOjpDb3JlVGV4dENhc2NhZGVMaXN0UGFyYW1ldGVyczo6Q29yZVRleHRDYXNjYWRl
TGlzdFBhcmFtZXRlcnNIYXNoOjplcXVhbCk6IERlbGV0ZWQuCisgICAgICAgICgpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6U3lzdGVtRm9udERhdGFiYXNlOjpzaW5nbGV0b24pOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6U3lzdGVtRm9udERhdGFiYXNlOjpzeXN0ZW1Gb250Q2Fz
Y2FkZUxpc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U3lzdGVtRm9udERhdGFiYXNl
OjpjbGVhcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTeXN0ZW1Gb250RGF0YWJhc2U6
OlN5c3RlbUZvbnREYXRhYmFzZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTeXN0ZW1G
b250RGF0YWJhc2U6OmFwcGx5V2VpZ2h0SXRhbGljc0FuZEZhbGxiYWNrQmVoYXZpb3IpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6U3lzdGVtRm9udERhdGFiYXNlOjpyZW1vdmVDYXNjYWRl
TGlzdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTeXN0ZW1Gb250RGF0YWJhc2U6OmNv
bXB1dGVDYXNjYWRlTGlzdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpzeXN0ZW1Gb250
UGFyYW1ldGVycyk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
U3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0OjpzaW5nbGV0b24pOgorICAgICAgICAoV2ViQ29y
ZTo6U3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQ6OlN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0
KToKKyAgICAgICAgKFdlYkNvcmU6OlN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0OjpzeXN0ZW1G
b250Q2FzY2FkZUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3lzdGVtRm9udERhdGFiYXNlQ29y
ZVRleHQ6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OlN5c3RlbUZvbnREYXRhYmFzZUNvcmVU
ZXh0OjphcHBseVdlaWdodEl0YWxpY3NBbmRGYWxsYmFja0JlaGF2aW9yKToKKyAgICAgICAgKFdl
YkNvcmU6OlN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0OjpyZW1vdmVDYXNjYWRlTGlzdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dDo6Y29tcHV0ZUNhc2Nh
ZGVMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0Ojpz
eXN0ZW1Gb250UGFyYW1ldGVycyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
U3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpT
eXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dDo6Q2FzY2FkZUxpc3RQYXJhbWV0ZXJzOjpDYXNjYWRl
TGlzdFBhcmFtZXRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6U3lzdGVtRm9udERhdGFiYXNlQ29y
ZVRleHQ6OkNhc2NhZGVMaXN0UGFyYW1ldGVyczo6aXNIYXNoVGFibGVEZWxldGVkVmFsdWUgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6U3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQ6OkNhc2Nh
ZGVMaXN0UGFyYW1ldGVyczo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpT
eXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dDo6Q2FzY2FkZUxpc3RQYXJhbWV0ZXJzOjpoYXNoIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0OjpDYXNj
YWRlTGlzdFBhcmFtZXRlcnM6OkNhc2NhZGVMaXN0UGFyYW1ldGVyc0hhc2g6Omhhc2gpOgorICAg
ICAgICAoV2ViQ29yZTo6U3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQ6OkNhc2NhZGVMaXN0UGFy
YW1ldGVyczo6Q2FzY2FkZUxpc3RQYXJhbWV0ZXJzSGFzaDo6ZXF1YWwpOgorICAgICAgICAqIHBs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjLmNwcDoK
KwogMjAxOC0xMC0wOCAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAg
ICAgTW92ZSBGb250Q2FzY2FkZURlc2NyaXB0aW9uIHRvIGEgZmlsZSBvZiBpdHMgb3duCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQJKHJldmlzaW9uIDIzNjkxNCkKKysrIFNvdXJjZS9XZWJD
b3JlL1NvdXJjZXNDb2NvYS50eHQJKHdvcmtpbmcgY29weSkKQEAgLTMwNiw2ICszMDYsNyBAQCBw
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9IRVZDVXRpbGl0aWVzQ29jCiBwbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9JT1N1cmZhY2UubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZVBv
b2xDb2NvYS5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvTWVkaWFFbmdpbmVDb25maWd1cmF0
aW9uRmFjdG9yeUNvY29hLmNwcAorcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU3lzdGVtRm9udERh
dGFiYXNlQ29yZVRleHQuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJBY3Rpb25EaXNh
YmxpbmdDQUxheWVyRGVsZWdhdGUubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkNvcmVD
QUxheWVyRXh0cmFzLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJDb3JlRGVjb21wcmVz
c2lvblNlc3Npb24ubW0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIzNjkxNCkKKysrIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNDgx
MSw2ICs0ODExLDcgQEAKIAkJRTRERUFBMTgxN0E5M0RDMzAwMEUwNDMwIC8qIFN0eWxlVHJlZVJl
c29sdmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
NERFQUExNjE3QTkzREMzMDAwRTA0MzAgLyogU3R5bGVUcmVlUmVzb2x2ZXIuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFNEUyNDM4MzFEQUI5NTNF
MDBDMjZFNEIgLyogbWV0ZXJFbGVtZW50U2hhZG93LmNzcyBpbiBSZXNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRFMjQzODIxREFCOTUzRTAwQzI2RTRCIC8qIG1l
dGVyRWxlbWVudFNoYWRvdy5jc3MgKi87IH07CiAJCUU0RTM5QUZCMTMzMEVGQTgwMDNBQjI3NCAv
KiBMZWdhY3lUaWxlTGF5ZXJQb29sLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFNEUzOUFGQTEzMzBFRkE4MDAzQUIyNzQgLyogTGVnYWN5VGlsZUxheWVy
UG9vbC5oICovOyB9OworCQlFNEU4QjRFQzIxNkI3OUU1MDBCODgzNEQgLyogU3lzdGVtRm9udERh
dGFiYXNlQ29yZVRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEU0RThCNEVBMjE2Qjc5RTUwMEI4ODM0RCAvKiBTeXN0ZW1Gb250RGF0YWJhc2VDb3Jl
VGV4dC5oICovOyB9OwogCQlFNEU4QjRGNTIxNkI5NTY1MDBCODgzNEQgLyogRm9udENhc2NhZGVE
ZXNjcmlwdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTRFOEI0RjIyMTZCOEI2MDAwQjg4MzREIC8qIEZvbnRDYXNjYWRlRGVzY3JpcHRpb24uaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFNEU5QjEx
OTE4MTA5MTZGMDAzQUNDREYgLyogU2ltcGxlTGluZUxheW91dFJlc29sdmVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEU5QjExODE4MTA5MTZGMDAz
QUNDREYgLyogU2ltcGxlTGluZUxheW91dFJlc29sdmVyLmggKi87IH07CiAJCUU0RTlCMTFEMTgx
NDU2OUMwMDNBQ0NERiAvKiBTaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEU5QjExQzE4MTQ1NjlDMDAzQUND
REYgLyogU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5oICovOyB9OwpAQCAtMTQ1NDgsNiArMTQ1
NDksOCBAQAogCQlFNEUyNDM4MjFEQUI5NTNFMDBDMjZFNEIgLyogbWV0ZXJFbGVtZW50U2hhZG93
LmNzcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQuY3NzOyBwYXRoID0gbWV0ZXJFbGVtZW50U2hhZG93LmNzczsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTRFMzlBRkExMzMwRUZBODAwM0FCMjc0IC8q
IExlZ2FjeVRpbGVMYXllclBvb2wuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
TGVnYWN5VGlsZUxheWVyUG9vbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNEUz
OUFGQzEzMzBFRkM1MDAzQUIyNzQgLyogTGVnYWN5VGlsZUxheWVyUG9vbC5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IExlZ2FjeVRpbGVMYXllclBvb2wubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUU0RThCNEVBMjE2Qjc5RTUwMEI4ODM0RCAvKiBT
eXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlFNEU4QjRFRDIxNkI3OUY0MDBCODgzNEQgLyogU3lzdGVtRm9udERhdGFiYXNlQ29y
ZVRleHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3lzdGVtRm9u
dERhdGFiYXNlQ29yZVRleHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNEU4
QjRGMDIxNkI4QjVGMDBCODgzNEQgLyogRm9udENhc2NhZGVEZXNjcmlwdGlvbi5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb250Q2FzY2FkZURlc2NyaXB0aW9uLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTRFOEI0RjIyMTZCOEI2MDAwQjg4MzRE
IC8qIEZvbnRDYXNjYWRlRGVzY3JpcHRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRm9udENhc2NhZGVEZXNjcmlwdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFNEU5QjExODE4MTA5MTZGMDAzQUNDREYgLyogU2ltcGxlTGluZUxheW91dFJlc29sdmVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNpbXBsZUxpbmVMYXlvdXRSZXNv
bHZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjQwMjUsNiArMjQwMjgsOCBA
QAogCQkJCUFEOUZGNkUwMTkwODM5MUQwMDNCNjFFMCAvKiBJT1N1cmZhY2VQb29sQ29jb2EubW0g
Ki8sCiAJCQkJQ0RDNDhBQzgyMTQ5Q0YyQTAwMjRGRDU5IC8qIE1lZGlhRW5naW5lQ29uZmlndXJh
dGlvbkZhY3RvcnlDb2NvYS5jcHAgKi8sCiAJCQkJQ0RDNDhBQzcyMTQ5Q0YyQTAwMjRGRDU5IC8q
IE1lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnlDb2NvYS5oICovLAorCQkJCUU0RThCNEVE
MjE2Qjc5RjQwMEI4ODM0RCAvKiBTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dC5jcHAgKi8sCisJ
CQkJRTRFOEI0RUEyMTZCNzlFNTAwQjg4MzREIC8qIFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0
LmggKi8sCiAJCQkJNTI2NzI0RjIxQ0IyRkRGNjAwNzU5NzREIC8qIFRleHRUcmFja1JlcHJlc2Vu
dGF0aW9uQ29jb2EuaCAqLywKIAkJCQk1MjY3MjRGMTFDQjJGREY2MDA3NTk3NEQgLyogVGV4dFRy
YWNrUmVwcmVzZW50YXRpb25Db2NvYS5tbSAqLywKIAkJCQkyRDNFRjQ0NDE5MTc5MTVDMDAwMzQx
ODQgLyogV2ViQWN0aW9uRGlzYWJsaW5nQ0FMYXllckRlbGVnYXRlLmggKi8sCkBAIC0yNzQ5Myw2
ICsyNzQ5OCw3IEBACiAJCQkJNTczMDNCQkIyMDA2QzZFRTAwMzU1OTY1IC8qIENCT1JCaW5hcnku
aCBpbiBIZWFkZXJzICovLAogCQkJCTU3MzAzQkMxMjAwNkUwMEMwMDM1NTk2NSAvKiBDQk9SUmVh
ZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1NzMwM0JCOTIwMDZDNkVFMDAzNTU5NjUgLyogQ0JP
UlZhbHVlLmggaW4gSGVhZGVycyAqLywKKwkJCQlFNEU4QjRFQzIxNkI3OUU1MDBCODgzNEQgLyog
U3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3MzAzQkJB
MjAwNkM2RUUwMDM1NTk2NSAvKiBDQk9SV3JpdGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk2NTUw
QjY5RTA5OURGMDI3MDA5MEQ3ODEgLyogQ0RBVEFTZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlDREY0QjcxNjFFMDBCN0U1MDBFMjM1QTIgLyogQ0RNLmggaW4gSGVhZGVycyAqLywKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnREZXNjcmlwdGlvbkNv
Y29hLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9Gb250RGVzY3JpcHRpb25Db2NvYS5jcHAJKHJldmlzaW9uIDIzNjkxNCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnREZXNjcmlwdGlvbkNvY29hLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjYsMTc1ICsyNiwxMiBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIkZvbnREZXNjcmlwdGlvbi5oIgogCi0jaW5jbHVkZSAiRm9udENhY2hlLmgi
Ci0jaW5jbHVkZSAiRm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dC5oIgotI2luY2x1ZGUg
PHBhbC9zcGkvY29jb2EvQ29yZVRleHRTUEkuaD4KLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgot
I2luY2x1ZGUgPHd0Zi9IYXNoVHJhaXRzLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3Ry
aW5nLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nSGFzaC5oPgotCi0jaWYgUExB
VEZPUk0oSU9TKQotI2luY2x1ZGUgIlJlbmRlclRoZW1lSU9TLmgiCi0jZW5kaWYKKyNpbmNsdWRl
ICJTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dC5oIgogCiAjaWYgVVNFX1BMQVRGT1JNX1NZU1RF
TV9GQUxMQkFDS19MSVNUCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU3lzdGVtRm9u
dERhdGFiYXNlIHsKLXB1YmxpYzoKLSAgICBzdHJ1Y3QgQ29yZVRleHRDYXNjYWRlTGlzdFBhcmFt
ZXRlcnMgewotICAgICAgICBDb3JlVGV4dENhc2NhZGVMaXN0UGFyYW1ldGVycygpCi0gICAgICAg
IHsKLSAgICAgICAgfQotCi0gICAgICAgIENvcmVUZXh0Q2FzY2FkZUxpc3RQYXJhbWV0ZXJzKFdU
Rjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkKLSAgICAgICAgICAgIDogZm9udE5hbWUoV1RG
OjpIYXNoVGFibGVEZWxldGVkVmFsdWUpCi0gICAgICAgIHsKLSAgICAgICAgfQotCi0gICAgICAg
IGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdAotICAgICAgICB7Ci0gICAgICAg
ICAgICByZXR1cm4gZm9udE5hbWUuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsKLSAgICAgICAg
fQotCi0gICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDb3JlVGV4dENhc2NhZGVMaXN0UGFy
YW1ldGVycyYgb3RoZXIpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBmb250
TmFtZSA9PSBvdGhlci5mb250TmFtZQotICAgICAgICAgICAgICAgICYmIGxvY2FsZSA9PSBvdGhl
ci5sb2NhbGUKLSAgICAgICAgICAgICAgICAmJiB3ZWlnaHQgPT0gb3RoZXIud2VpZ2h0Ci0gICAg
ICAgICAgICAgICAgJiYgc2l6ZSA9PSBvdGhlci5zaXplCi0gICAgICAgICAgICAgICAgJiYgYWxs
b3dVc2VySW5zdGFsbGVkRm9udHMgPT0gb3RoZXIuYWxsb3dVc2VySW5zdGFsbGVkRm9udHMKLSAg
ICAgICAgICAgICAgICAmJiBpdGFsaWMgPT0gb3RoZXIuaXRhbGljOwotICAgICAgICB9Ci0KLSAg
ICAgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIEludGVn
ZXJIYXNoZXIgaGFzaGVyOwotICAgICAgICAgICAgQVNTRVJUKCFmb250TmFtZS5pc051bGwoKSk7
Ci0gICAgICAgICAgICBoYXNoZXIuYWRkKGxvY2FsZS5leGlzdGluZ0hhc2goKSk7Ci0gICAgICAg
ICAgICBoYXNoZXIuYWRkKGxvY2FsZS5pc051bGwoKSA/IDAgOiBsb2NhbGUuZXhpc3RpbmdIYXNo
KCkpOwotICAgICAgICAgICAgaGFzaGVyLmFkZCh3ZWlnaHQpOwotICAgICAgICAgICAgaGFzaGVy
LmFkZChzaXplKTsKLSAgICAgICAgICAgIGhhc2hlci5hZGQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KGFsbG93VXNlckluc3RhbGxlZEZvbnRzKSk7Ci0gICAgICAgICAgICBoYXNoZXIuYWRkKGl0YWxp
Yyk7Ci0gICAgICAgICAgICByZXR1cm4gaGFzaGVyLmhhc2goKTsKLSAgICAgICAgfQotCi0gICAg
ICAgIHN0cnVjdCBDb3JlVGV4dENhc2NhZGVMaXN0UGFyYW1ldGVyc0hhc2ggOiBXVEY6OlBhaXJI
YXNoPEF0b21pY1N0cmluZywgZmxvYXQ+IHsKLSAgICAgICAgICAgIHN0YXRpYyB1bnNpZ25lZCBo
YXNoKGNvbnN0IENvcmVUZXh0Q2FzY2FkZUxpc3RQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQotICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBwYXJhbWV0ZXJzLmhhc2goKTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IENvcmVUZXh0
Q2FzY2FkZUxpc3RQYXJhbWV0ZXJzJiBhLCBjb25zdCBDb3JlVGV4dENhc2NhZGVMaXN0UGFyYW1l
dGVycyYgYikKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gYSA9PSBiOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFy
ZVRvRW1wdHlPckRlbGV0ZWQgPSB0cnVlOwotICAgICAgICB9OwotCi0gICAgICAgIEF0b21pY1N0
cmluZyBmb250TmFtZTsKLSAgICAgICAgQXRvbWljU3RyaW5nIGxvY2FsZTsKLSAgICAgICAgQ0dG
bG9hdCB3ZWlnaHQgeyAwIH07Ci0gICAgICAgIGZsb2F0IHNpemUgeyAwIH07Ci0gICAgICAgIEFs
bG93VXNlckluc3RhbGxlZEZvbnRzIGFsbG93VXNlckluc3RhbGxlZEZvbnRzIHsgQWxsb3dVc2Vy
SW5zdGFsbGVkRm9udHM6Ok5vIH07Ci0gICAgICAgIGJvb2wgaXRhbGljIHsgZmFsc2UgfTsKLSAg
ICB9OwotCi0gICAgc3RhdGljIFN5c3RlbUZvbnREYXRhYmFzZSYgc2luZ2xldG9uKCkKLSAgICB7
Ci0gICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTeXN0ZW1Gb250RGF0YWJhc2U+IGRhdGFi
YXNlID0gU3lzdGVtRm9udERhdGFiYXNlKCk7Ci0gICAgICAgIHJldHVybiBkYXRhYmFzZS5nZXQo
KTsKLSAgICB9Ci0KLSAgICBlbnVtIGNsYXNzIENsaWVudFVzZSB7IEZvclN5c3RlbVVJLCBGb3JU
ZXh0U3R5bGUgfTsKLQotICAgIFZlY3RvcjxSZXRhaW5QdHI8Q1RGb250RGVzY3JpcHRvclJlZj4+
IHN5c3RlbUZvbnRDYXNjYWRlTGlzdChjb25zdCBDb3JlVGV4dENhc2NhZGVMaXN0UGFyYW1ldGVy
cyYgcGFyYW1ldGVycywgQ2xpZW50VXNlIGNsaWVudFVzZSkKLSAgICB7Ci0gICAgICAgIEFTU0VS
VCghcGFyYW1ldGVycy5mb250TmFtZS5pc051bGwoKSk7Ci0gICAgICAgIHJldHVybiBtX3N5c3Rl
bUZvbnRDYWNoZS5lbnN1cmUocGFyYW1ldGVycywgWyZdIHsKLSAgICAgICAgICAgIGF1dG8gbG9j
YWxlU3RyaW5nID0gcGFyYW1ldGVycy5sb2NhbGUuc3RyaW5nKCkuY3JlYXRlQ0ZTdHJpbmcoKTsK
LSAgICAgICAgICAgIFJldGFpblB0cjxDVEZvbnRSZWY+IHN5c3RlbUZvbnQ7Ci0gICAgICAgICAg
ICBpZiAoY2xpZW50VXNlID09IENsaWVudFVzZTo6Rm9yU3lzdGVtVUkpIHsKLSAgICAgICAgICAg
ICAgICBzeXN0ZW1Gb250ID0gYWRvcHRDRihDVEZvbnRDcmVhdGVVSUZvbnRGb3JMYW5ndWFnZShr
Q1RGb250VUlGb250U3lzdGVtLCBwYXJhbWV0ZXJzLnNpemUsIGxvY2FsZVN0cmluZy5nZXQoKSkp
OwotICAgICAgICAgICAgICAgIEFTU0VSVChzeXN0ZW1Gb250KTsKLSAgICAgICAgICAgICAgICAv
LyBGSVhNRTogVXNlIGFwcGx5V2VpZ2h0SXRhbGljc0FuZEZhbGxiYWNrQmVoYXZpb3IoKSBpbiBi
b3RoIGNhc2VzIG9uY2UgPHJkYXI6Ly9wcm9ibGVtLzMzMDQ2MDQxPiBpcyBmaXhlZC4KLSAgICAg
ICAgICAgICAgICBzeXN0ZW1Gb250ID0gYXBwbHlXZWlnaHRJdGFsaWNzQW5kRmFsbGJhY2tCZWhh
dmlvcihzeXN0ZW1Gb250LmdldCgpLCBwYXJhbWV0ZXJzLndlaWdodCwgcGFyYW1ldGVycy5pdGFs
aWMsIHBhcmFtZXRlcnMuc2l6ZSwgcGFyYW1ldGVycy5hbGxvd1VzZXJJbnN0YWxsZWRGb250cyk7
Ci0gICAgICAgICAgICB9IGVsc2UgewotI2lmIFBMQVRGT1JNKElPUykKLSAgICAgICAgICAgICAg
ICBBU1NFUlQoY2xpZW50VXNlID09IENsaWVudFVzZTo6Rm9yVGV4dFN0eWxlKTsKLSAgICAgICAg
ICAgICAgICBhdXRvIGZvbnREZXNjcmlwdG9yID0gYWRvcHRDRihDVEZvbnREZXNjcmlwdG9yQ3Jl
YXRlV2l0aFRleHRTdHlsZShwYXJhbWV0ZXJzLmZvbnROYW1lLnN0cmluZygpLmNyZWF0ZUNGU3Ry
aW5nKCkuZ2V0KCksIFJlbmRlclRoZW1lSU9TOjpjb250ZW50U2l6ZUNhdGVnb3J5KCksIG51bGxw
dHIpKTsKLSAgICAgICAgICAgICAgICBDVEZvbnRTeW1ib2xpY1RyYWl0cyB0cmFpdHMgPSAocGFy
YW1ldGVycy53ZWlnaHQgPj0ga0NURm9udFdlaWdodFNlbWlib2xkID8ga0NURm9udFRyYWl0Qm9s
ZCA6IDApIHwgKHBhcmFtZXRlcnMuaXRhbGljID8ga0NURm9udFRyYWl0SXRhbGljIDogMCk7Ci0g
ICAgICAgICAgICAgICAgaWYgKHRyYWl0cykKLSAgICAgICAgICAgICAgICAgICAgZm9udERlc2Ny
aXB0b3IgPSBhZG9wdENGKENURm9udERlc2NyaXB0b3JDcmVhdGVDb3B5V2l0aFN5bWJvbGljVHJh
aXRzKGZvbnREZXNjcmlwdG9yLmdldCgpLCB0cmFpdHMsIHRyYWl0cykpOwotICAgICAgICAgICAg
ICAgIHN5c3RlbUZvbnQgPSBjcmVhdGVGb250Rm9ySW5zdGFsbGVkRm9udHMoZm9udERlc2NyaXB0
b3IuZ2V0KCksIHBhcmFtZXRlcnMuc2l6ZSwgcGFyYW1ldGVycy5hbGxvd1VzZXJJbnN0YWxsZWRG
b250cyk7Ci0jZWxzZQotICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotI2Vu
ZGlmCi0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBBU1NFUlQoc3lzdGVtRm9udCk7Ci0gICAg
ICAgICAgICBhdXRvIHJlc3VsdCA9IGNvbXB1dGVDYXNjYWRlTGlzdChzeXN0ZW1Gb250LmdldCgp
LCBsb2NhbGVTdHJpbmcuZ2V0KCkpOwotICAgICAgICAgICAgQVNTRVJUKCFyZXN1bHQuaXNFbXB0
eSgpKTsKLSAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICAgIH0pLml0ZXJhdG9yLT52
YWx1ZTsKLSAgICB9Ci0KLSAgICB2b2lkIGNsZWFyKCkKLSAgICB7Ci0gICAgICAgIG1fc3lzdGVt
Rm9udENhY2hlLmNsZWFyKCk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIFN5c3RlbUZvbnREYXRh
YmFzZSgpCi0gICAgewotICAgIH0KLQotICAgIHN0YXRpYyBSZXRhaW5QdHI8Q1RGb250UmVmPiBh
cHBseVdlaWdodEl0YWxpY3NBbmRGYWxsYmFja0JlaGF2aW9yKENURm9udFJlZiBmb250LCBDR0Zs
b2F0IHdlaWdodCwgYm9vbCBpdGFsaWMsIGZsb2F0IHNpemUsIEFsbG93VXNlckluc3RhbGxlZEZv
bnRzIGFsbG93VXNlckluc3RhbGxlZEZvbnRzKQotICAgIHsKLSAgICAgICAgYXV0byB3ZWlnaHRO
dW1iZXIgPSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRk51
bWJlckNHRmxvYXRUeXBlLCAmd2VpZ2h0KSk7Ci0gICAgICAgIGNvbnN0IGZsb2F0IHN5c3RlbUZv
bnRJdGFsaWNTbG9wZSA9IDAuMDc7Ci0gICAgICAgIGZsb2F0IGl0YWxpY3NSYXdOdW1iZXIgPSBp
dGFsaWMgPyBzeXN0ZW1Gb250SXRhbGljU2xvcGUgOiAwOwotICAgICAgICBhdXRvIGl0YWxpY3NO
dW1iZXIgPSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRk51
bWJlckZsb2F0VHlwZSwgJml0YWxpY3NSYXdOdW1iZXIpKTsKLSAgICAgICAgQ0ZUeXBlUmVmIHRy
YWl0c0tleXNbXSA9IHsga0NURm9udFdlaWdodFRyYWl0LCBrQ1RGb250U2xhbnRUcmFpdCwga0NU
Rm9udFVJRm9udERlc2lnblRyYWl0IH07Ci0gICAgICAgIENGVHlwZVJlZiB0cmFpdHNWYWx1ZXNb
XSA9IHsgd2VpZ2h0TnVtYmVyLmdldCgpLCBpdGFsaWNzTnVtYmVyLmdldCgpLCBrQ0ZCb29sZWFu
VHJ1ZSB9OwotICAgICAgICBhdXRvIHRyYWl0c0RpY3Rpb25hcnkgPSBhZG9wdENGKENGRGljdGlv
bmFyeUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCB0cmFpdHNLZXlzLCB0cmFpdHNWYWx1ZXMs
IFdURl9BUlJBWV9MRU5HVEgodHJhaXRzS2V5cyksICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxC
YWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKLSAgICAgICAgYXV0byBh
dHRyaWJ1dGVzID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRv
ckRlZmF1bHQsIDAsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0
aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKLSAgICAgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoYXR0
cmlidXRlcy5nZXQoKSwga0NURm9udFRyYWl0c0F0dHJpYnV0ZSwgdHJhaXRzRGljdGlvbmFyeS5n
ZXQoKSk7Ci0gICAgICAgIGFkZEF0dHJpYnV0ZXNGb3JJbnN0YWxsZWRGb250cyhhdHRyaWJ1dGVz
LmdldCgpLCBhbGxvd1VzZXJJbnN0YWxsZWRGb250cyk7Ci0gICAgICAgIGF1dG8gbW9kaWZpY2F0
aW9uID0gYWRvcHRDRihDVEZvbnREZXNjcmlwdG9yQ3JlYXRlV2l0aEF0dHJpYnV0ZXMoYXR0cmli
dXRlcy5nZXQoKSkpOwotICAgICAgICByZXR1cm4gYWRvcHRDRihDVEZvbnRDcmVhdGVDb3B5V2l0
aEF0dHJpYnV0ZXMoZm9udCwgc2l6ZSwgbnVsbHB0ciwgbW9kaWZpY2F0aW9uLmdldCgpKSk7Ci0g
ICAgfQotCi0gICAgc3RhdGljIFJldGFpblB0cjxDVEZvbnREZXNjcmlwdG9yUmVmPiByZW1vdmVD
YXNjYWRlTGlzdChDVEZvbnREZXNjcmlwdG9yUmVmIGZvbnREZXNjcmlwdG9yKQotICAgIHsKLSAg
ICAgICAgYXV0byBlbXB0eUFycmF5ID0gYWRvcHRDRihDRkFycmF5Q3JlYXRlKGtDRkFsbG9jYXRv
ckRlZmF1bHQsIG51bGxwdHIsIDAsICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpKTsKLSAgICAgICAg
Q0ZUeXBlUmVmIGZhbGxiYWNrRGljdGlvbmFyeUtleXNbXSA9IHsga0NURm9udENhc2NhZGVMaXN0
QXR0cmlidXRlIH07Ci0gICAgICAgIENGVHlwZVJlZiBmYWxsYmFja0RpY3Rpb25hcnlWYWx1ZXNb
XSA9IHsgZW1wdHlBcnJheS5nZXQoKSB9OwotICAgICAgICBhdXRvIGZhbGxiYWNrRGljdGlvbmFy
eSA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGZhbGxi
YWNrRGljdGlvbmFyeUtleXMsIGZhbGxiYWNrRGljdGlvbmFyeVZhbHVlcywgV1RGX0FSUkFZX0xF
TkdUSChmYWxsYmFja0RpY3Rpb25hcnlLZXlzKSwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJh
Y2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOwotICAgICAgICBhdXRvIG1v
ZGlmaWVkRm9udERlc2NyaXB0b3IgPSBhZG9wdENGKENURm9udERlc2NyaXB0b3JDcmVhdGVDb3B5
V2l0aEF0dHJpYnV0ZXMoZm9udERlc2NyaXB0b3IsIGZhbGxiYWNrRGljdGlvbmFyeS5nZXQoKSkp
OwotICAgICAgICByZXR1cm4gbW9kaWZpZWRGb250RGVzY3JpcHRvcjsKLSAgICB9Ci0KLSAgICBz
dGF0aWMgVmVjdG9yPFJldGFpblB0cjxDVEZvbnREZXNjcmlwdG9yUmVmPj4gY29tcHV0ZUNhc2Nh
ZGVMaXN0KENURm9udFJlZiBmb250LCBDRlN0cmluZ1JlZiBsb2NhbGUpCi0gICAgewotICAgICAg
ICBDRlR5cGVSZWYgYXJyYXlWYWx1ZXNbXSA9IHsgbG9jYWxlIH07Ci0gICAgICAgIGF1dG8gbG9j
YWxlQXJyYXkgPSBhZG9wdENGKENGQXJyYXlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYXJy
YXlWYWx1ZXMsIFdURl9BUlJBWV9MRU5HVEgoYXJyYXlWYWx1ZXMpLCAma0NGVHlwZUFycmF5Q2Fs
bEJhY2tzKSk7Ci0gICAgICAgIGF1dG8gY2FzY2FkZUxpc3QgPSBhZG9wdENGKENURm9udENvcHlE
ZWZhdWx0Q2FzY2FkZUxpc3RGb3JMYW5ndWFnZXMoZm9udCwgbG9jYWxlQXJyYXkuZ2V0KCkpKTsK
LSAgICAgICAgVmVjdG9yPFJldGFpblB0cjxDVEZvbnREZXNjcmlwdG9yUmVmPj4gcmVzdWx0Owot
ICAgICAgICAvLyBXZWJLaXQgaGFuZGxlcyB0aGUgY2FzY2FkZSBsaXN0LCBhbmQgV2ViS2l0IDIn
cyBJUEMgY29kZSBkb2Vzbid0IGtub3cgaG93IHRvIHNlcmlhbGl6ZSBDb3JlIFRleHQncyBjYXNj
YWRlIGxpc3QuCi0gICAgICAgIHJlc3VsdC5hcHBlbmQocmVtb3ZlQ2FzY2FkZUxpc3QoYWRvcHRD
RihDVEZvbnRDb3B5Rm9udERlc2NyaXB0b3IoZm9udCkpLmdldCgpKSk7Ci0gICAgICAgIGlmIChj
YXNjYWRlTGlzdCkgewotICAgICAgICAgICAgQ0ZJbmRleCBhcnJheUxlbmd0aCA9IENGQXJyYXlH
ZXRDb3VudChjYXNjYWRlTGlzdC5nZXQoKSk7Ci0gICAgICAgICAgICBmb3IgKENGSW5kZXggaSA9
IDA7IGkgPCBhcnJheUxlbmd0aDsgKytpKQotICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQo
c3RhdGljX2Nhc3Q8Q1RGb250RGVzY3JpcHRvclJlZj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRleChj
YXNjYWRlTGlzdC5nZXQoKSwgaSkpKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gcmVzdWx0
OwotICAgIH0KLQotICAgIEhhc2hNYXA8Q29yZVRleHRDYXNjYWRlTGlzdFBhcmFtZXRlcnMsIFZl
Y3RvcjxSZXRhaW5QdHI8Q1RGb250RGVzY3JpcHRvclJlZj4+LCBDb3JlVGV4dENhc2NhZGVMaXN0
UGFyYW1ldGVyczo6Q29yZVRleHRDYXNjYWRlTGlzdFBhcmFtZXRlcnNIYXNoLCBTaW1wbGVDbGFz
c0hhc2hUcmFpdHM8Q29yZVRleHRDYXNjYWRlTGlzdFBhcmFtZXRlcnM+PiBtX3N5c3RlbUZvbnRD
YWNoZTsKLX07Ci0KIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1N5c3RlbUZvbnRTdHJpbmcoY29uc3Qg
QXRvbWljU3RyaW5nJiBzdHJpbmcpCiB7CiAgICAgcmV0dXJuIGVxdWFsTGV0dGVyc0lnbm9yaW5n
QVNDSUlDYXNlKHN0cmluZywgIi13ZWJraXQtc3lzdGVtLWZvbnQiKQpAQCAtMjQ0LDU3ICs4MSwx
NCBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNVSUZvbnRUZXh0U3R5bGUoY29uCiB9CiAjZW5kaWYK
IAotc3RhdGljIGlubGluZSBTeXN0ZW1Gb250RGF0YWJhc2U6OkNvcmVUZXh0Q2FzY2FkZUxpc3RQ
YXJhbWV0ZXJzIHN5c3RlbUZvbnRQYXJhbWV0ZXJzKGNvbnN0IEZvbnRDYXNjYWRlRGVzY3JpcHRp
b24mIGRlc2NyaXB0aW9uLCBjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlseU5hbWUsIFN5c3RlbUZv
bnREYXRhYmFzZTo6Q2xpZW50VXNlIGNsaWVudFVzZSwgQWxsb3dVc2VySW5zdGFsbGVkRm9udHMg
YWxsb3dVc2VySW5zdGFsbGVkRm9udHMpCi17Ci0gICAgU3lzdGVtRm9udERhdGFiYXNlOjpDb3Jl
VGV4dENhc2NhZGVMaXN0UGFyYW1ldGVycyByZXN1bHQ7Ci0gICAgcmVzdWx0LmxvY2FsZSA9IGRl
c2NyaXB0aW9uLmxvY2FsZSgpOwotICAgIHJlc3VsdC5zaXplID0gZGVzY3JpcHRpb24uY29tcHV0
ZWRTaXplKCk7Ci0gICAgcmVzdWx0Lml0YWxpYyA9IGlzSXRhbGljKGRlc2NyaXB0aW9uLml0YWxp
YygpKTsKLQotICAgIGF1dG8gd2VpZ2h0ID0gZGVzY3JpcHRpb24ud2VpZ2h0KCk7Ci0gICAgaWYg
KEZvbnRDYWNoZTo6c2luZ2xldG9uKCkuc2hvdWxkTW9ja0JvbGRTeXN0ZW1Gb250Rm9yQWNjZXNz
aWJpbGl0eSgpKQotICAgICAgICB3ZWlnaHQgPSB3ZWlnaHQgKyBGb250U2VsZWN0aW9uVmFsdWUo
MjAwKTsKLQotICAgIGlmICh3ZWlnaHQgPCBGb250U2VsZWN0aW9uVmFsdWUoMTUwKSkKLSAgICAg
ICAgcmVzdWx0LndlaWdodCA9IGtDVEZvbnRXZWlnaHRVbHRyYUxpZ2h0OwotICAgIGVsc2UgaWYg
KHdlaWdodCA8IEZvbnRTZWxlY3Rpb25WYWx1ZSgyNTApKQotICAgICAgICByZXN1bHQud2VpZ2h0
ID0ga0NURm9udFdlaWdodFRoaW47Ci0gICAgZWxzZSBpZiAod2VpZ2h0IDwgRm9udFNlbGVjdGlv
blZhbHVlKDM1MCkpCi0gICAgICAgIHJlc3VsdC53ZWlnaHQgPSBrQ1RGb250V2VpZ2h0TGlnaHQ7
Ci0gICAgZWxzZSBpZiAod2VpZ2h0IDwgRm9udFNlbGVjdGlvblZhbHVlKDQ1MCkpCi0gICAgICAg
IHJlc3VsdC53ZWlnaHQgPSBrQ1RGb250V2VpZ2h0UmVndWxhcjsKLSAgICBlbHNlIGlmICh3ZWln
aHQgPCBGb250U2VsZWN0aW9uVmFsdWUoNTUwKSkKLSAgICAgICAgcmVzdWx0LndlaWdodCA9IGtD
VEZvbnRXZWlnaHRNZWRpdW07Ci0gICAgZWxzZSBpZiAod2VpZ2h0IDwgRm9udFNlbGVjdGlvblZh
bHVlKDY1MCkpCi0gICAgICAgIHJlc3VsdC53ZWlnaHQgPSBrQ1RGb250V2VpZ2h0U2VtaWJvbGQ7
Ci0gICAgZWxzZSBpZiAod2VpZ2h0IDwgRm9udFNlbGVjdGlvblZhbHVlKDc1MCkpCi0gICAgICAg
IHJlc3VsdC53ZWlnaHQgPSBrQ1RGb250V2VpZ2h0Qm9sZDsKLSAgICBlbHNlIGlmICh3ZWlnaHQg
PCBGb250U2VsZWN0aW9uVmFsdWUoODUwKSkKLSAgICAgICAgcmVzdWx0LndlaWdodCA9IGtDVEZv
bnRXZWlnaHRIZWF2eTsKLSAgICBlbHNlCi0gICAgICAgIHJlc3VsdC53ZWlnaHQgPSBrQ1RGb250
V2VpZ2h0QmxhY2s7Ci0KLSAgICBpZiAoY2xpZW50VXNlID09IFN5c3RlbUZvbnREYXRhYmFzZTo6
Q2xpZW50VXNlOjpGb3JTeXN0ZW1VSSkgewotICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
QXRvbWljU3RyaW5nPiBzeXN0ZW1VSSA9IEF0b21pY1N0cmluZygic3lzdGVtLXVpIiwgQXRvbWlj
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgICAgIHJlc3VsdC5mb250TmFtZSA9
IHN5c3RlbVVJLmdldCgpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIEFTU0VSVChjbGllbnRVc2Ug
PT0gU3lzdGVtRm9udERhdGFiYXNlOjpDbGllbnRVc2U6OkZvclRleHRTdHlsZSk7Ci0gICAgICAg
IHJlc3VsdC5mb250TmFtZSA9IGZhbWlseU5hbWU7Ci0gICAgfQotCi0gICAgcmVzdWx0LmFsbG93
VXNlckluc3RhbGxlZEZvbnRzID0gYWxsb3dVc2VySW5zdGFsbGVkRm9udHM7Ci0KLSAgICByZXR1
cm4gcmVzdWx0OwotfQotCiB2b2lkIEZvbnREZXNjcmlwdGlvbjo6aW52YWxpZGF0ZUNhY2hlcygp
CiB7Ci0gICAgU3lzdGVtRm9udERhdGFiYXNlOjpzaW5nbGV0b24oKS5jbGVhcigpOworICAgIFN5
c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0OjpzaW5nbGV0b24oKS5jbGVhcigpOwogfQogCi1zdGF0
aWMgaW5saW5lIFZlY3RvcjxSZXRhaW5QdHI8Q1RGb250RGVzY3JpcHRvclJlZj4+IHN5c3RlbUZv
bnRDYXNjYWRlTGlzdChjb25zdCBGb250Q2FzY2FkZURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwg
Y29uc3QgQXRvbWljU3RyaW5nJiBjc3NGYW1pbHksIFN5c3RlbUZvbnREYXRhYmFzZTo6Q2xpZW50
VXNlIGNsaWVudFVzZSwgQWxsb3dVc2VySW5zdGFsbGVkRm9udHMgYWxsb3dVc2VySW5zdGFsbGVk
Rm9udHMpCitzdGF0aWMgaW5saW5lIFZlY3RvcjxSZXRhaW5QdHI8Q1RGb250RGVzY3JpcHRvclJl
Zj4+IHN5c3RlbUZvbnRDYXNjYWRlTGlzdChjb25zdCBGb250Q2FzY2FkZURlc2NyaXB0aW9uJiBk
ZXNjcmlwdGlvbiwgY29uc3QgQXRvbWljU3RyaW5nJiBjc3NGYW1pbHksIFN5c3RlbUZvbnREYXRh
YmFzZUNvcmVUZXh0OjpDbGllbnRVc2UgY2xpZW50VXNlLCBBbGxvd1VzZXJJbnN0YWxsZWRGb250
cyBhbGxvd1VzZXJJbnN0YWxsZWRGb250cykKIHsKLSAgICByZXR1cm4gU3lzdGVtRm9udERhdGFi
YXNlOjpzaW5nbGV0b24oKS5zeXN0ZW1Gb250Q2FzY2FkZUxpc3Qoc3lzdGVtRm9udFBhcmFtZXRl
cnMoZGVzY3JpcHRpb24sIGNzc0ZhbWlseSwgY2xpZW50VXNlLCBhbGxvd1VzZXJJbnN0YWxsZWRG
b250cyksIGNsaWVudFVzZSk7CisgICAgcmV0dXJuIFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0
OjpzaW5nbGV0b24oKS5zeXN0ZW1Gb250Q2FzY2FkZUxpc3QoZGVzY3JpcHRpb24sIGNzc0ZhbWls
eSwgY2xpZW50VXNlLCBhbGxvd1VzZXJJbnN0YWxsZWRGb250cyk7CiB9CiAKIHVuc2lnbmVkIEZv
bnRDYXNjYWRlRGVzY3JpcHRpb246OmVmZmVjdGl2ZUZhbWlseUNvdW50KCkgY29uc3QKQEAgLTMw
NCwxMCArOTgsMTAgQEAgdW5zaWduZWQgRm9udENhc2NhZGVEZXNjcmlwdGlvbjo6ZWZmZWN0aQog
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBmYW1pbHlDb3VudCgpOyArK2kpIHsKICAgICAg
ICAgY29uc3QgYXV0byYgY3NzRmFtaWx5ID0gZmFtaWx5QXQoaSk7CiAgICAgICAgIGlmIChpc1N5
c3RlbUZvbnRTdHJpbmcoY3NzRmFtaWx5KSkKLSAgICAgICAgICAgIHJlc3VsdCArPSBzeXN0ZW1G
b250Q2FzY2FkZUxpc3QoKnRoaXMsIGNzc0ZhbWlseSwgU3lzdGVtRm9udERhdGFiYXNlOjpDbGll
bnRVc2U6OkZvclN5c3RlbVVJLCBzaG91bGRBbGxvd1VzZXJJbnN0YWxsZWRGb250cygpKS5zaXpl
KCk7CisgICAgICAgICAgICByZXN1bHQgKz0gc3lzdGVtRm9udENhc2NhZGVMaXN0KCp0aGlzLCBj
c3NGYW1pbHksIFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0OjpDbGllbnRVc2U6OkZvclN5c3Rl
bVVJLCBzaG91bGRBbGxvd1VzZXJJbnN0YWxsZWRGb250cygpKS5zaXplKCk7CiAjaWYgUExBVEZP
Uk0oSU9TKQogICAgICAgICBlbHNlIGlmIChpc1VJRm9udFRleHRTdHlsZShjc3NGYW1pbHkpKQot
ICAgICAgICAgICAgcmVzdWx0ICs9IHN5c3RlbUZvbnRDYXNjYWRlTGlzdCgqdGhpcywgY3NzRmFt
aWx5LCBTeXN0ZW1Gb250RGF0YWJhc2U6OkNsaWVudFVzZTo6Rm9yVGV4dFN0eWxlLCBzaG91bGRB
bGxvd1VzZXJJbnN0YWxsZWRGb250cygpKS5zaXplKCk7CisgICAgICAgICAgICByZXN1bHQgKz0g
c3lzdGVtRm9udENhc2NhZGVMaXN0KCp0aGlzLCBjc3NGYW1pbHksIFN5c3RlbUZvbnREYXRhYmFz
ZUNvcmVUZXh0OjpDbGllbnRVc2U6OkZvclRleHRTdHlsZSwgc2hvdWxkQWxsb3dVc2VySW5zdGFs
bGVkRm9udHMoKSkuc2l6ZSgpOwogI2VuZGlmCiAgICAgICAgIGVsc2UKICAgICAgICAgICAgICsr
cmVzdWx0OwpAQCAtMzI3LDE0ICsxMjEsMTQgQEAgRm9udEZhbWlseVNwZWNpZmljYXRpb24gRm9u
dENhc2NhZGVEZXNjcgogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBmYW1pbHlDb3VudCgp
OyArK2kpIHsKICAgICAgICAgY29uc3QgYXV0byYgY3NzRmFtaWx5ID0gZmFtaWx5QXQoaSk7CiAg
ICAgICAgIGlmIChpc1N5c3RlbUZvbnRTdHJpbmcoY3NzRmFtaWx5KSkgewotICAgICAgICAgICAg
YXV0byBjYXNjYWRlTGlzdCA9IHN5c3RlbUZvbnRDYXNjYWRlTGlzdCgqdGhpcywgY3NzRmFtaWx5
LCBTeXN0ZW1Gb250RGF0YWJhc2U6OkNsaWVudFVzZTo6Rm9yU3lzdGVtVUksIHNob3VsZEFsbG93
VXNlckluc3RhbGxlZEZvbnRzKCkpOworICAgICAgICAgICAgYXV0byBjYXNjYWRlTGlzdCA9IHN5
c3RlbUZvbnRDYXNjYWRlTGlzdCgqdGhpcywgY3NzRmFtaWx5LCBTeXN0ZW1Gb250RGF0YWJhc2VD
b3JlVGV4dDo6Q2xpZW50VXNlOjpGb3JTeXN0ZW1VSSwgc2hvdWxkQWxsb3dVc2VySW5zdGFsbGVk
Rm9udHMoKSk7CiAgICAgICAgICAgICBpZiAoaW5kZXggPCBjYXNjYWRlTGlzdC5zaXplKCkpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIEZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uKGNhc2NhZGVMaXN0
W2luZGV4XS5nZXQoKSk7CiAgICAgICAgICAgICBpbmRleCAtPSBjYXNjYWRlTGlzdC5zaXplKCk7
CiAgICAgICAgIH0KICNpZiBQTEFURk9STShJT1MpCiAgICAgICAgIGVsc2UgaWYgKGlzVUlGb250
VGV4dFN0eWxlKGNzc0ZhbWlseSkpIHsKLSAgICAgICAgICAgIGF1dG8gY2FzY2FkZUxpc3QgPSBz
eXN0ZW1Gb250Q2FzY2FkZUxpc3QoKnRoaXMsIGNzc0ZhbWlseSwgU3lzdGVtRm9udERhdGFiYXNl
OjpDbGllbnRVc2U6OkZvclRleHRTdHlsZSwgc2hvdWxkQWxsb3dVc2VySW5zdGFsbGVkRm9udHMo
KSk7CisgICAgICAgICAgICBhdXRvIGNhc2NhZGVMaXN0ID0gc3lzdGVtRm9udENhc2NhZGVMaXN0
KCp0aGlzLCBjc3NGYW1pbHksIFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0OjpDbGllbnRVc2U6
OkZvclRleHRTdHlsZSwgc2hvdWxkQWxsb3dVc2VySW5zdGFsbGVkRm9udHMoKSk7CiAgICAgICAg
ICAgICBpZiAoaW5kZXggPCBjYXNjYWRlTGlzdC5zaXplKCkpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIEZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uKGNhc2NhZGVMaXN0W2luZGV4XS5nZXQoKSk7CiAg
ICAgICAgICAgICBpbmRleCAtPSBjYXNjYWRlTGlzdC5zaXplKCk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9TeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
U3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1N5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE3NiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dC5oIgor
CisjaWYgVVNFX1BMQVRGT1JNX1NZU1RFTV9GQUxMQkFDS19MSVNUCisKKyNpbmNsdWRlICJGb250
Q2FjaGUuaCIKKworI2lmIFBMQVRGT1JNKElPUykKKyNpbmNsdWRlICJSZW5kZXJUaGVtZUlPUy5o
IgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworU3lzdGVtRm9udERhdGFiYXNlQ29y
ZVRleHQmIFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0OjpzaW5nbGV0b24oKQoreworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dD4gZGF0YWJhc2Ug
PSBTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dCgpOworICAgIHJldHVybiBkYXRhYmFzZS5nZXQo
KTsKK30KKworU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQ6OlN5c3RlbUZvbnREYXRhYmFzZUNv
cmVUZXh0KCkKK3sKK30KKworVmVjdG9yPFJldGFpblB0cjxDVEZvbnREZXNjcmlwdG9yUmVmPj4g
U3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQ6OnN5c3RlbUZvbnRDYXNjYWRlTGlzdChjb25zdCBD
YXNjYWRlTGlzdFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIENsaWVudFVzZSBjbGllbnRVc2UpCit7
CisgICAgQVNTRVJUKCFwYXJhbWV0ZXJzLmZvbnROYW1lLmlzTnVsbCgpKTsKKyAgICByZXR1cm4g
bV9zeXN0ZW1Gb250Q2FjaGUuZW5zdXJlKHBhcmFtZXRlcnMsIFsmXSB7CisgICAgICAgIGF1dG8g
bG9jYWxlU3RyaW5nID0gcGFyYW1ldGVycy5sb2NhbGUuc3RyaW5nKCkuY3JlYXRlQ0ZTdHJpbmco
KTsKKyAgICAgICAgUmV0YWluUHRyPENURm9udFJlZj4gc3lzdGVtRm9udDsKKyAgICAgICAgaWYg
KGNsaWVudFVzZSA9PSBDbGllbnRVc2U6OkZvclN5c3RlbVVJKSB7CisgICAgICAgICAgICBzeXN0
ZW1Gb250ID0gYWRvcHRDRihDVEZvbnRDcmVhdGVVSUZvbnRGb3JMYW5ndWFnZShrQ1RGb250VUlG
b250U3lzdGVtLCBwYXJhbWV0ZXJzLnNpemUsIGxvY2FsZVN0cmluZy5nZXQoKSkpOworICAgICAg
ICAgICAgQVNTRVJUKHN5c3RlbUZvbnQpOworICAgICAgICAgICAgLy8gRklYTUU6IFVzZSBhcHBs
eVdlaWdodEl0YWxpY3NBbmRGYWxsYmFja0JlaGF2aW9yKCkgaW4gYm90aCBjYXNlcyBvbmNlIDxy
ZGFyOi8vcHJvYmxlbS8zMzA0NjA0MT4gaXMgZml4ZWQuCisgICAgICAgICAgICBzeXN0ZW1Gb250
ID0gYXBwbHlXZWlnaHRJdGFsaWNzQW5kRmFsbGJhY2tCZWhhdmlvcihzeXN0ZW1Gb250LmdldCgp
LCBwYXJhbWV0ZXJzLndlaWdodCwgcGFyYW1ldGVycy5pdGFsaWMsIHBhcmFtZXRlcnMuc2l6ZSwg
cGFyYW1ldGVycy5hbGxvd1VzZXJJbnN0YWxsZWRGb250cyk7CisgICAgICAgIH0gZWxzZSB7Cisj
aWYgUExBVEZPUk0oSU9TKQorICAgICAgICAgICAgQVNTRVJUKGNsaWVudFVzZSA9PSBDbGllbnRV
c2U6OkZvclRleHRTdHlsZSk7CisgICAgICAgICAgICBhdXRvIGZvbnREZXNjcmlwdG9yID0gYWRv
cHRDRihDVEZvbnREZXNjcmlwdG9yQ3JlYXRlV2l0aFRleHRTdHlsZShwYXJhbWV0ZXJzLmZvbnRO
YW1lLnN0cmluZygpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIFJlbmRlclRoZW1lSU9TOjpjb250
ZW50U2l6ZUNhdGVnb3J5KCksIG51bGxwdHIpKTsKKyAgICAgICAgICAgIENURm9udFN5bWJvbGlj
VHJhaXRzIHRyYWl0cyA9IChwYXJhbWV0ZXJzLndlaWdodCA+PSBrQ1RGb250V2VpZ2h0U2VtaWJv
bGQgPyBrQ1RGb250VHJhaXRCb2xkIDogMCkgfCAocGFyYW1ldGVycy5pdGFsaWMgPyBrQ1RGb250
VHJhaXRJdGFsaWMgOiAwKTsKKyAgICAgICAgICAgIGlmICh0cmFpdHMpCisgICAgICAgICAgICAg
ICAgZm9udERlc2NyaXB0b3IgPSBhZG9wdENGKENURm9udERlc2NyaXB0b3JDcmVhdGVDb3B5V2l0
aFN5bWJvbGljVHJhaXRzKGZvbnREZXNjcmlwdG9yLmdldCgpLCB0cmFpdHMsIHRyYWl0cykpOwor
ICAgICAgICAgICAgc3lzdGVtRm9udCA9IGNyZWF0ZUZvbnRGb3JJbnN0YWxsZWRGb250cyhmb250
RGVzY3JpcHRvci5nZXQoKSwgcGFyYW1ldGVycy5zaXplLCBwYXJhbWV0ZXJzLmFsbG93VXNlcklu
c3RhbGxlZEZvbnRzKTsKKyNlbHNlCisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyNlbmRpZgorICAgICAgICB9CisgICAgICAgIEFTU0VSVChzeXN0ZW1Gb250KTsKKyAgICAgICAg
YXV0byByZXN1bHQgPSBjb21wdXRlQ2FzY2FkZUxpc3Qoc3lzdGVtRm9udC5nZXQoKSwgbG9jYWxl
U3RyaW5nLmdldCgpKTsKKyAgICAgICAgQVNTRVJUKCFyZXN1bHQuaXNFbXB0eSgpKTsKKyAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9KS5pdGVyYXRvci0+dmFsdWU7Cit9CisKK3ZvaWQgU3lz
dGVtRm9udERhdGFiYXNlQ29yZVRleHQ6OmNsZWFyKCkKK3sKKyAgICBtX3N5c3RlbUZvbnRDYWNo
ZS5jbGVhcigpOworfQorCitSZXRhaW5QdHI8Q1RGb250UmVmPiBTeXN0ZW1Gb250RGF0YWJhc2VD
b3JlVGV4dDo6YXBwbHlXZWlnaHRJdGFsaWNzQW5kRmFsbGJhY2tCZWhhdmlvcihDVEZvbnRSZWYg
Zm9udCwgQ0dGbG9hdCB3ZWlnaHQsIGJvb2wgaXRhbGljLCBmbG9hdCBzaXplLCBBbGxvd1VzZXJJ
bnN0YWxsZWRGb250cyBhbGxvd1VzZXJJbnN0YWxsZWRGb250cykKK3sKKyAgICBhdXRvIHdlaWdo
dE51bWJlciA9IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NG
TnVtYmVyQ0dGbG9hdFR5cGUsICZ3ZWlnaHQpKTsKKyAgICBjb25zdCBmbG9hdCBzeXN0ZW1Gb250
SXRhbGljU2xvcGUgPSAwLjA3OworICAgIGZsb2F0IGl0YWxpY3NSYXdOdW1iZXIgPSBpdGFsaWMg
PyBzeXN0ZW1Gb250SXRhbGljU2xvcGUgOiAwOworICAgIGF1dG8gaXRhbGljc051bWJlciA9IGFk
b3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGTnVtYmVyRmxvYXRU
eXBlLCAmaXRhbGljc1Jhd051bWJlcikpOworICAgIENGVHlwZVJlZiB0cmFpdHNLZXlzW10gPSB7
IGtDVEZvbnRXZWlnaHRUcmFpdCwga0NURm9udFNsYW50VHJhaXQsIGtDVEZvbnRVSUZvbnREZXNp
Z25UcmFpdCB9OworICAgIENGVHlwZVJlZiB0cmFpdHNWYWx1ZXNbXSA9IHsgd2VpZ2h0TnVtYmVy
LmdldCgpLCBpdGFsaWNzTnVtYmVyLmdldCgpLCBrQ0ZCb29sZWFuVHJ1ZSB9OworICAgIGF1dG8g
dHJhaXRzRGljdGlvbmFyeSA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlKGtDRkFsbG9jYXRv
ckRlZmF1bHQsIHRyYWl0c0tleXMsIHRyYWl0c1ZhbHVlcywgV1RGX0FSUkFZX0xFTkdUSCh0cmFp
dHNLZXlzKSwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25h
cnlWYWx1ZUNhbGxCYWNrcykpOworICAgIGF1dG8gYXR0cmlidXRlcyA9IGFkb3B0Q0YoQ0ZEaWN0
aW9uYXJ5Q3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCAma0NGVHlwZURpY3Rp
b25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7Cisg
ICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoYXR0cmlidXRlcy5nZXQoKSwga0NURm9udFRyYWl0c0F0
dHJpYnV0ZSwgdHJhaXRzRGljdGlvbmFyeS5nZXQoKSk7CisgICAgYWRkQXR0cmlidXRlc0Zvcklu
c3RhbGxlZEZvbnRzKGF0dHJpYnV0ZXMuZ2V0KCksIGFsbG93VXNlckluc3RhbGxlZEZvbnRzKTsK
KyAgICBhdXRvIG1vZGlmaWNhdGlvbiA9IGFkb3B0Q0YoQ1RGb250RGVzY3JpcHRvckNyZWF0ZVdp
dGhBdHRyaWJ1dGVzKGF0dHJpYnV0ZXMuZ2V0KCkpKTsKKyAgICByZXR1cm4gYWRvcHRDRihDVEZv
bnRDcmVhdGVDb3B5V2l0aEF0dHJpYnV0ZXMoZm9udCwgc2l6ZSwgbnVsbHB0ciwgbW9kaWZpY2F0
aW9uLmdldCgpKSk7Cit9CisKK1JldGFpblB0cjxDVEZvbnREZXNjcmlwdG9yUmVmPiBTeXN0ZW1G
b250RGF0YWJhc2VDb3JlVGV4dDo6cmVtb3ZlQ2FzY2FkZUxpc3QoQ1RGb250RGVzY3JpcHRvclJl
ZiBmb250RGVzY3JpcHRvcikKK3sKKyAgICBhdXRvIGVtcHR5QXJyYXkgPSBhZG9wdENGKENGQXJy
YXlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgbnVsbHB0ciwgMCwgJmtDRlR5cGVBcnJheUNh
bGxCYWNrcykpOworICAgIENGVHlwZVJlZiBmYWxsYmFja0RpY3Rpb25hcnlLZXlzW10gPSB7IGtD
VEZvbnRDYXNjYWRlTGlzdEF0dHJpYnV0ZSB9OworICAgIENGVHlwZVJlZiBmYWxsYmFja0RpY3Rp
b25hcnlWYWx1ZXNbXSA9IHsgZW1wdHlBcnJheS5nZXQoKSB9OworICAgIGF1dG8gZmFsbGJhY2tE
aWN0aW9uYXJ5ID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVs
dCwgZmFsbGJhY2tEaWN0aW9uYXJ5S2V5cywgZmFsbGJhY2tEaWN0aW9uYXJ5VmFsdWVzLCBXVEZf
QVJSQVlfTEVOR1RIKGZhbGxiYWNrRGljdGlvbmFyeUtleXMpLCAma0NGVHlwZURpY3Rpb25hcnlL
ZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CisgICAgYXV0
byBtb2RpZmllZEZvbnREZXNjcmlwdG9yID0gYWRvcHRDRihDVEZvbnREZXNjcmlwdG9yQ3JlYXRl
Q29weVdpdGhBdHRyaWJ1dGVzKGZvbnREZXNjcmlwdG9yLCBmYWxsYmFja0RpY3Rpb25hcnkuZ2V0
KCkpKTsKKyAgICByZXR1cm4gbW9kaWZpZWRGb250RGVzY3JpcHRvcjsKK30KKworVmVjdG9yPFJl
dGFpblB0cjxDVEZvbnREZXNjcmlwdG9yUmVmPj4gU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQ6
OmNvbXB1dGVDYXNjYWRlTGlzdChDVEZvbnRSZWYgZm9udCwgQ0ZTdHJpbmdSZWYgbG9jYWxlKQor
eworICAgIENGVHlwZVJlZiBhcnJheVZhbHVlc1tdID0geyBsb2NhbGUgfTsKKyAgICBhdXRvIGxv
Y2FsZUFycmF5ID0gYWRvcHRDRihDRkFycmF5Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGFy
cmF5VmFsdWVzLCBXVEZfQVJSQVlfTEVOR1RIKGFycmF5VmFsdWVzKSwgJmtDRlR5cGVBcnJheUNh
bGxCYWNrcykpOworICAgIGF1dG8gY2FzY2FkZUxpc3QgPSBhZG9wdENGKENURm9udENvcHlEZWZh
dWx0Q2FzY2FkZUxpc3RGb3JMYW5ndWFnZXMoZm9udCwgbG9jYWxlQXJyYXkuZ2V0KCkpKTsKKyAg
ICBWZWN0b3I8UmV0YWluUHRyPENURm9udERlc2NyaXB0b3JSZWY+PiByZXN1bHQ7CisgICAgLy8g
V2ViS2l0IGhhbmRsZXMgdGhlIGNhc2NhZGUgbGlzdCwgYW5kIFdlYktpdCAyJ3MgSVBDIGNvZGUg
ZG9lc24ndCBrbm93IGhvdyB0byBzZXJpYWxpemUgQ29yZSBUZXh0J3MgY2FzY2FkZSBsaXN0Lgor
ICAgIHJlc3VsdC5hcHBlbmQocmVtb3ZlQ2FzY2FkZUxpc3QoYWRvcHRDRihDVEZvbnRDb3B5Rm9u
dERlc2NyaXB0b3IoZm9udCkpLmdldCgpKSk7CisgICAgaWYgKGNhc2NhZGVMaXN0KSB7CisgICAg
ICAgIENGSW5kZXggYXJyYXlMZW5ndGggPSBDRkFycmF5R2V0Q291bnQoY2FzY2FkZUxpc3QuZ2V0
KCkpOworICAgICAgICBmb3IgKENGSW5kZXggaSA9IDA7IGkgPCBhcnJheUxlbmd0aDsgKytpKQor
ICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChzdGF0aWNfY2FzdDxDVEZvbnREZXNjcmlwdG9yUmVm
PihDRkFycmF5R2V0VmFsdWVBdEluZGV4KGNhc2NhZGVMaXN0LmdldCgpLCBpKSkpOworICAgIH0K
KyAgICByZXR1cm4gcmVzdWx0OworfQorCitTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dDo6Q2Fz
Y2FkZUxpc3RQYXJhbWV0ZXJzIFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0OjpzeXN0ZW1Gb250
UGFyYW1ldGVycyhjb25zdCBGb250Q2FzY2FkZURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwgY29u
c3QgQXRvbWljU3RyaW5nJiBmYW1pbHlOYW1lLCBDbGllbnRVc2UgY2xpZW50VXNlLCBBbGxvd1Vz
ZXJJbnN0YWxsZWRGb250cyBhbGxvd1VzZXJJbnN0YWxsZWRGb250cykKK3sKKyAgICBDYXNjYWRl
TGlzdFBhcmFtZXRlcnMgcmVzdWx0OworICAgIHJlc3VsdC5sb2NhbGUgPSBkZXNjcmlwdGlvbi5s
b2NhbGUoKTsKKyAgICByZXN1bHQuc2l6ZSA9IGRlc2NyaXB0aW9uLmNvbXB1dGVkU2l6ZSgpOwor
ICAgIHJlc3VsdC5pdGFsaWMgPSBpc0l0YWxpYyhkZXNjcmlwdGlvbi5pdGFsaWMoKSk7CisKKyAg
ICBhdXRvIHdlaWdodCA9IGRlc2NyaXB0aW9uLndlaWdodCgpOworICAgIGlmIChGb250Q2FjaGU6
OnNpbmdsZXRvbigpLnNob3VsZE1vY2tCb2xkU3lzdGVtRm9udEZvckFjY2Vzc2liaWxpdHkoKSkK
KyAgICAgICAgd2VpZ2h0ID0gd2VpZ2h0ICsgRm9udFNlbGVjdGlvblZhbHVlKDIwMCk7CisKKyAg
ICBpZiAod2VpZ2h0IDwgRm9udFNlbGVjdGlvblZhbHVlKDE1MCkpCisgICAgICAgIHJlc3VsdC53
ZWlnaHQgPSBrQ1RGb250V2VpZ2h0VWx0cmFMaWdodDsKKyAgICBlbHNlIGlmICh3ZWlnaHQgPCBG
b250U2VsZWN0aW9uVmFsdWUoMjUwKSkKKyAgICAgICAgcmVzdWx0LndlaWdodCA9IGtDVEZvbnRX
ZWlnaHRUaGluOworICAgIGVsc2UgaWYgKHdlaWdodCA8IEZvbnRTZWxlY3Rpb25WYWx1ZSgzNTAp
KQorICAgICAgICByZXN1bHQud2VpZ2h0ID0ga0NURm9udFdlaWdodExpZ2h0OworICAgIGVsc2Ug
aWYgKHdlaWdodCA8IEZvbnRTZWxlY3Rpb25WYWx1ZSg0NTApKQorICAgICAgICByZXN1bHQud2Vp
Z2h0ID0ga0NURm9udFdlaWdodFJlZ3VsYXI7CisgICAgZWxzZSBpZiAod2VpZ2h0IDwgRm9udFNl
bGVjdGlvblZhbHVlKDU1MCkpCisgICAgICAgIHJlc3VsdC53ZWlnaHQgPSBrQ1RGb250V2VpZ2h0
TWVkaXVtOworICAgIGVsc2UgaWYgKHdlaWdodCA8IEZvbnRTZWxlY3Rpb25WYWx1ZSg2NTApKQor
ICAgICAgICByZXN1bHQud2VpZ2h0ID0ga0NURm9udFdlaWdodFNlbWlib2xkOworICAgIGVsc2Ug
aWYgKHdlaWdodCA8IEZvbnRTZWxlY3Rpb25WYWx1ZSg3NTApKQorICAgICAgICByZXN1bHQud2Vp
Z2h0ID0ga0NURm9udFdlaWdodEJvbGQ7CisgICAgZWxzZSBpZiAod2VpZ2h0IDwgRm9udFNlbGVj
dGlvblZhbHVlKDg1MCkpCisgICAgICAgIHJlc3VsdC53ZWlnaHQgPSBrQ1RGb250V2VpZ2h0SGVh
dnk7CisgICAgZWxzZQorICAgICAgICByZXN1bHQud2VpZ2h0ID0ga0NURm9udFdlaWdodEJsYWNr
OworCisgICAgaWYgKGNsaWVudFVzZSA9PSBDbGllbnRVc2U6OkZvclN5c3RlbVVJKSB7CisgICAg
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHN5c3RlbVVJID0gQXRvbWlj
U3RyaW5nKCJzeXN0ZW0tdWkiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsK
KyAgICAgICAgcmVzdWx0LmZvbnROYW1lID0gc3lzdGVtVUkuZ2V0KCk7CisgICAgfSBlbHNlIHsK
KyAgICAgICAgQVNTRVJUKGNsaWVudFVzZSA9PSBDbGllbnRVc2U6OkZvclRleHRTdHlsZSk7Cisg
ICAgICAgIHJlc3VsdC5mb250TmFtZSA9IGZhbWlseU5hbWU7CisgICAgfQorCisgICAgcmVzdWx0
LmFsbG93VXNlckluc3RhbGxlZEZvbnRzID0gYWxsb3dVc2VySW5zdGFsbGVkRm9udHM7CisKKyAg
ICByZXR1cm4gcmVzdWx0OworfQorCitWZWN0b3I8UmV0YWluUHRyPENURm9udERlc2NyaXB0b3JS
ZWY+PiBTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dDo6c3lzdGVtRm9udENhc2NhZGVMaXN0KGNv
bnN0IEZvbnRDYXNjYWRlRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uLCBjb25zdCBBdG9taWNTdHJp
bmcmIGNzc0ZhbWlseSwgQ2xpZW50VXNlIGNsaWVudFVzZSwgQWxsb3dVc2VySW5zdGFsbGVkRm9u
dHMgYWxsb3dVc2VySW5zdGFsbGVkRm9udHMpCit7CisgICAgcmV0dXJuIHN5c3RlbUZvbnRDYXNj
YWRlTGlzdChzeXN0ZW1Gb250UGFyYW1ldGVycyhkZXNjcmlwdGlvbiwgY3NzRmFtaWx5LCBjbGll
bnRVc2UsIGFsbG93VXNlckluc3RhbGxlZEZvbnRzKSwgY2xpZW50VXNlKTsKK30KKworfQorCisj
ZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1N5c3Rl
bUZvbnREYXRhYmFzZUNvcmVUZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQuaAkobm9uZXhp
c3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9TeXN0ZW1G
b250RGF0YWJhc2VDb3JlVGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTIxIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJGb250RGVzY3JpcHRpb24uaCIK
KyNpbmNsdWRlIDxwYWwvc3BpL2NvY29hL0NvcmVUZXh0U1BJLmg+CisjaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0cy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0
L0F0b21pY1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZ0hhc2guaD4K
KworI2lmIFVTRV9QTEFURk9STV9TWVNURU1fRkFMTEJBQ0tfTElTVAorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0IHsKK3B1YmxpYzoKKyAg
ICBzdHJ1Y3QgQ2FzY2FkZUxpc3RQYXJhbWV0ZXJzIHsKKyAgICAgICAgQ2FzY2FkZUxpc3RQYXJh
bWV0ZXJzKCkKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgQ2FzY2FkZUxpc3RQYXJh
bWV0ZXJzKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkKKyAgICAgICAgICAgIDogZm9u
dE5hbWUoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWUpCisgICAgICAgIHsKKyAgICAgICAgfQor
CisgICAgICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdAorICAgICAgICB7
CisgICAgICAgICAgICByZXR1cm4gZm9udE5hbWUuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsK
KyAgICAgICAgfQorCisgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDYXNjYWRlTGlzdFBh
cmFtZXRlcnMmIG90aGVyKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZm9u
dE5hbWUgPT0gb3RoZXIuZm9udE5hbWUKKyAgICAgICAgICAgICAgICAmJiBsb2NhbGUgPT0gb3Ro
ZXIubG9jYWxlCisgICAgICAgICAgICAgICAgJiYgd2VpZ2h0ID09IG90aGVyLndlaWdodAorICAg
ICAgICAgICAgICAgICYmIHNpemUgPT0gb3RoZXIuc2l6ZQorICAgICAgICAgICAgICAgICYmIGFs
bG93VXNlckluc3RhbGxlZEZvbnRzID09IG90aGVyLmFsbG93VXNlckluc3RhbGxlZEZvbnRzCisg
ICAgICAgICAgICAgICAgJiYgaXRhbGljID09IG90aGVyLml0YWxpYzsKKyAgICAgICAgfQorCisg
ICAgICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICBJbnRl
Z2VySGFzaGVyIGhhc2hlcjsKKyAgICAgICAgICAgIEFTU0VSVCghZm9udE5hbWUuaXNOdWxsKCkp
OworICAgICAgICAgICAgaGFzaGVyLmFkZChsb2NhbGUuZXhpc3RpbmdIYXNoKCkpOworICAgICAg
ICAgICAgaGFzaGVyLmFkZChsb2NhbGUuaXNOdWxsKCkgPyAwIDogbG9jYWxlLmV4aXN0aW5nSGFz
aCgpKTsKKyAgICAgICAgICAgIGhhc2hlci5hZGQod2VpZ2h0KTsKKyAgICAgICAgICAgIGhhc2hl
ci5hZGQoc2l6ZSk7CisgICAgICAgICAgICBoYXNoZXIuYWRkKHN0YXRpY19jYXN0PHVuc2lnbmVk
PihhbGxvd1VzZXJJbnN0YWxsZWRGb250cykpOworICAgICAgICAgICAgaGFzaGVyLmFkZChpdGFs
aWMpOworICAgICAgICAgICAgcmV0dXJuIGhhc2hlci5oYXNoKCk7CisgICAgICAgIH0KKworICAg
ICAgICBzdHJ1Y3QgQ2FzY2FkZUxpc3RQYXJhbWV0ZXJzSGFzaCA6IFdURjo6UGFpckhhc2g8QXRv
bWljU3RyaW5nLCBmbG9hdD4geworICAgICAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29u
c3QgQ2FzY2FkZUxpc3RQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIHJldHVybiBwYXJhbWV0ZXJzLmhhc2goKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IENhc2NhZGVMaXN0UGFyYW1ldGVycyYg
YSwgY29uc3QgQ2FzY2FkZUxpc3RQYXJhbWV0ZXJzJiBiKQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIHJldHVybiBhID09IGI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzdGF0
aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IHRydWU7CisgICAg
ICAgIH07CisKKyAgICAgICAgQXRvbWljU3RyaW5nIGZvbnROYW1lOworICAgICAgICBBdG9taWNT
dHJpbmcgbG9jYWxlOworICAgICAgICBDR0Zsb2F0IHdlaWdodCB7IDAgfTsKKyAgICAgICAgZmxv
YXQgc2l6ZSB7IDAgfTsKKyAgICAgICAgQWxsb3dVc2VySW5zdGFsbGVkRm9udHMgYWxsb3dVc2Vy
SW5zdGFsbGVkRm9udHMgeyBBbGxvd1VzZXJJbnN0YWxsZWRGb250czo6Tm8gfTsKKyAgICAgICAg
Ym9vbCBpdGFsaWMgeyBmYWxzZSB9OworICAgIH07CisKKyAgICBzdGF0aWMgU3lzdGVtRm9udERh
dGFiYXNlQ29yZVRleHQmIHNpbmdsZXRvbigpOworCisgICAgZW51bSBjbGFzcyBDbGllbnRVc2Ug
eyBGb3JTeXN0ZW1VSSwgRm9yVGV4dFN0eWxlIH07CisKKyAgICBWZWN0b3I8UmV0YWluUHRyPENU
Rm9udERlc2NyaXB0b3JSZWY+PiBzeXN0ZW1Gb250Q2FzY2FkZUxpc3QoY29uc3QgRm9udENhc2Nh
ZGVEZXNjcmlwdGlvbiYsIGNvbnN0IEF0b21pY1N0cmluZyYgY3NzRmFtaWx5LCBDbGllbnRVc2Us
IEFsbG93VXNlckluc3RhbGxlZEZvbnRzKTsKKyAgICB2b2lkIGNsZWFyKCk7CisKK3ByaXZhdGU6
CisgICAgU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQoKTsKKworICAgIFZlY3RvcjxSZXRhaW5Q
dHI8Q1RGb250RGVzY3JpcHRvclJlZj4+IHN5c3RlbUZvbnRDYXNjYWRlTGlzdChjb25zdCBDYXNj
YWRlTGlzdFBhcmFtZXRlcnMmLCBDbGllbnRVc2UpOworCisgICAgc3RhdGljIFJldGFpblB0cjxD
VEZvbnRSZWY+IGFwcGx5V2VpZ2h0SXRhbGljc0FuZEZhbGxiYWNrQmVoYXZpb3IoQ1RGb250UmVm
LCBDR0Zsb2F0IHdlaWdodCwgYm9vbCBpdGFsaWMsIGZsb2F0IHNpemUsIEFsbG93VXNlckluc3Rh
bGxlZEZvbnRzKTsKKyAgICBzdGF0aWMgUmV0YWluUHRyPENURm9udERlc2NyaXB0b3JSZWY+IHJl
bW92ZUNhc2NhZGVMaXN0KENURm9udERlc2NyaXB0b3JSZWYpOworICAgIHN0YXRpYyBWZWN0b3I8
UmV0YWluUHRyPENURm9udERlc2NyaXB0b3JSZWY+PiBjb21wdXRlQ2FzY2FkZUxpc3QoQ1RGb250
UmVmLCBDRlN0cmluZ1JlZiBsb2NhbGUpOworICAgIHN0YXRpYyBDYXNjYWRlTGlzdFBhcmFtZXRl
cnMgc3lzdGVtRm9udFBhcmFtZXRlcnMoY29uc3QgRm9udENhc2NhZGVEZXNjcmlwdGlvbiYsIGNv
bnN0IEF0b21pY1N0cmluZyYgZmFtaWx5TmFtZSwgQ2xpZW50VXNlLCBBbGxvd1VzZXJJbnN0YWxs
ZWRGb250cyk7CisKKyAgICBIYXNoTWFwPENhc2NhZGVMaXN0UGFyYW1ldGVycywgVmVjdG9yPFJl
dGFpblB0cjxDVEZvbnREZXNjcmlwdG9yUmVmPj4sIENhc2NhZGVMaXN0UGFyYW1ldGVyczo6Q2Fz
Y2FkZUxpc3RQYXJhbWV0ZXJzSGFzaCwgU2ltcGxlQ2xhc3NIYXNoVHJhaXRzPENhc2NhZGVMaXN0
UGFyYW1ldGVycz4+IG1fc3lzdGVtRm9udENhY2hlOworfTsKKworfQorCisjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>351783</attachid>
            <date>2018-10-08 10:03:28 -0700</date>
            <delta_ts>2018-10-08 10:06:25 -0700</delta_ts>
            <desc>patch</desc>
            <filename>systemfontdatabase-file-3.patch</filename>
            <type>text/plain</type>
            <size>36853</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzNjkxNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUyIEBACisyMDE4LTEwLTA4ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIFN5c3RlbUZvbnREYXRh
YmFzZSB0byBhIGZpbGUgb2YgaXRzIG93bgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTkwMzQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRHVt
ZXouCisKKyAgICAgICAgQWxzbyByZW5hbWUgaXQgdG8gU3lzdGVtRm9udERhdGFiYXNlQ29yZVRl
eHQgYXMgaXQgaXMgQ29yZVRleHQgc3BlY2lmaWMuCisKKyAgICAgICAgKiBTb3VyY2VzQ29jb2Eu
dHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RGVzY3JpcHRpb25Db2NvYS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGb250RGVzY3JpcHRpb246OmludmFsaWRhdGVDYWNoZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6c3lzdGVtRm9udENhc2NhZGVMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkZvbnRDYXNjYWRlRGVzY3JpcHRpb246OmVmZmVjdGl2ZUZhbWlseUNvdW50IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlRGVzY3JpcHRpb246OmVmZmVjdGl2ZUZhbWlseUF0
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN5c3RlbUZvbnREYXRhYmFzZTo6Q29yZVRleHRD
YXNjYWRlTGlzdFBhcmFtZXRlcnM6OkNvcmVUZXh0Q2FzY2FkZUxpc3RQYXJhbWV0ZXJzKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlN5c3RlbUZvbnREYXRhYmFzZTo6Q29yZVRleHRDYXNj
YWRlTGlzdFBhcmFtZXRlcnM6OmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlN5c3RlbUZvbnREYXRhYmFzZTo6Q29yZVRleHRDYXNjYWRl
TGlzdFBhcmFtZXRlcnM6Om9wZXJhdG9yPT0gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6U3lzdGVtRm9udERhdGFiYXNlOjpDb3JlVGV4dENhc2NhZGVMaXN0UGFyYW1ldGVyczo6
aGFzaCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTeXN0ZW1Gb250RGF0YWJh
c2U6OkNvcmVUZXh0Q2FzY2FkZUxpc3RQYXJhbWV0ZXJzOjpDb3JlVGV4dENhc2NhZGVMaXN0UGFy
YW1ldGVyc0hhc2g6Omhhc2gpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U3lzdGVtRm9u
dERhdGFiYXNlOjpDb3JlVGV4dENhc2NhZGVMaXN0UGFyYW1ldGVyczo6Q29yZVRleHRDYXNjYWRl
TGlzdFBhcmFtZXRlcnNIYXNoOjplcXVhbCk6IERlbGV0ZWQuCisgICAgICAgICgpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6U3lzdGVtRm9udERhdGFiYXNlOjpzaW5nbGV0b24pOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6U3lzdGVtRm9udERhdGFiYXNlOjpzeXN0ZW1Gb250Q2Fz
Y2FkZUxpc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U3lzdGVtRm9udERhdGFiYXNl
OjpjbGVhcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTeXN0ZW1Gb250RGF0YWJhc2U6
OlN5c3RlbUZvbnREYXRhYmFzZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTeXN0ZW1G
b250RGF0YWJhc2U6OmFwcGx5V2VpZ2h0SXRhbGljc0FuZEZhbGxiYWNrQmVoYXZpb3IpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6U3lzdGVtRm9udERhdGFiYXNlOjpyZW1vdmVDYXNjYWRl
TGlzdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTeXN0ZW1Gb250RGF0YWJhc2U6OmNv
bXB1dGVDYXNjYWRlTGlzdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpzeXN0ZW1Gb250
UGFyYW1ldGVycyk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
U3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0OjpzaW5nbGV0b24pOgorICAgICAgICAoV2ViQ29y
ZTo6U3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQ6OlN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0
KToKKyAgICAgICAgKFdlYkNvcmU6OlN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0OjpzeXN0ZW1G
b250Q2FzY2FkZUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3lzdGVtRm9udERhdGFiYXNlQ29y
ZVRleHQ6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OlN5c3RlbUZvbnREYXRhYmFzZUNvcmVU
ZXh0OjphcHBseVdlaWdodEl0YWxpY3NBbmRGYWxsYmFja0JlaGF2aW9yKToKKyAgICAgICAgKFdl
YkNvcmU6OlN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0OjpyZW1vdmVDYXNjYWRlTGlzdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dDo6Y29tcHV0ZUNhc2Nh
ZGVMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0Ojpz
eXN0ZW1Gb250UGFyYW1ldGVycyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
U3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpT
eXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dDo6Q2FzY2FkZUxpc3RQYXJhbWV0ZXJzOjpDYXNjYWRl
TGlzdFBhcmFtZXRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6U3lzdGVtRm9udERhdGFiYXNlQ29y
ZVRleHQ6OkNhc2NhZGVMaXN0UGFyYW1ldGVyczo6aXNIYXNoVGFibGVEZWxldGVkVmFsdWUgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6U3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQ6OkNhc2Nh
ZGVMaXN0UGFyYW1ldGVyczo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpT
eXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dDo6Q2FzY2FkZUxpc3RQYXJhbWV0ZXJzOjpoYXNoIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0OjpDYXNj
YWRlTGlzdFBhcmFtZXRlcnM6OkNhc2NhZGVMaXN0UGFyYW1ldGVyc0hhc2g6Omhhc2gpOgorICAg
ICAgICAoV2ViQ29yZTo6U3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQ6OkNhc2NhZGVMaXN0UGFy
YW1ldGVyczo6Q2FzY2FkZUxpc3RQYXJhbWV0ZXJzSGFzaDo6ZXF1YWwpOgorICAgICAgICAqIHBs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjLmNwcDoK
KwogMjAxOC0xMC0wOCAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAg
ICAgTW92ZSBGb250Q2FzY2FkZURlc2NyaXB0aW9uIHRvIGEgZmlsZSBvZiBpdHMgb3duCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQJKHJldmlzaW9uIDIzNjkxNCkKKysrIFNvdXJjZS9XZWJD
b3JlL1NvdXJjZXNDb2NvYS50eHQJKHdvcmtpbmcgY29weSkKQEAgLTMwNiw2ICszMDYsNyBAQCBw
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9IRVZDVXRpbGl0aWVzQ29jCiBwbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9JT1N1cmZhY2UubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZVBv
b2xDb2NvYS5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvTWVkaWFFbmdpbmVDb25maWd1cmF0
aW9uRmFjdG9yeUNvY29hLmNwcAorcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU3lzdGVtRm9udERh
dGFiYXNlQ29yZVRleHQuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJBY3Rpb25EaXNh
YmxpbmdDQUxheWVyRGVsZWdhdGUubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkNvcmVD
QUxheWVyRXh0cmFzLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJDb3JlRGVjb21wcmVz
c2lvblNlc3Npb24ubW0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIzNjkxNCkKKysrIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNDgx
MSw2ICs0ODExLDcgQEAKIAkJRTRERUFBMTgxN0E5M0RDMzAwMEUwNDMwIC8qIFN0eWxlVHJlZVJl
c29sdmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
NERFQUExNjE3QTkzREMzMDAwRTA0MzAgLyogU3R5bGVUcmVlUmVzb2x2ZXIuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFNEUyNDM4MzFEQUI5NTNF
MDBDMjZFNEIgLyogbWV0ZXJFbGVtZW50U2hhZG93LmNzcyBpbiBSZXNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRFMjQzODIxREFCOTUzRTAwQzI2RTRCIC8qIG1l
dGVyRWxlbWVudFNoYWRvdy5jc3MgKi87IH07CiAJCUU0RTM5QUZCMTMzMEVGQTgwMDNBQjI3NCAv
KiBMZWdhY3lUaWxlTGF5ZXJQb29sLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFNEUzOUFGQTEzMzBFRkE4MDAzQUIyNzQgLyogTGVnYWN5VGlsZUxheWVy
UG9vbC5oICovOyB9OworCQlFNEU4QjRFQzIxNkI3OUU1MDBCODgzNEQgLyogU3lzdGVtRm9udERh
dGFiYXNlQ29yZVRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEU0RThCNEVBMjE2Qjc5RTUwMEI4ODM0RCAvKiBTeXN0ZW1Gb250RGF0YWJhc2VDb3Jl
VGV4dC5oICovOyB9OwogCQlFNEU4QjRGNTIxNkI5NTY1MDBCODgzNEQgLyogRm9udENhc2NhZGVE
ZXNjcmlwdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTRFOEI0RjIyMTZCOEI2MDAwQjg4MzREIC8qIEZvbnRDYXNjYWRlRGVzY3JpcHRpb24uaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFNEU5QjEx
OTE4MTA5MTZGMDAzQUNDREYgLyogU2ltcGxlTGluZUxheW91dFJlc29sdmVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEU5QjExODE4MTA5MTZGMDAz
QUNDREYgLyogU2ltcGxlTGluZUxheW91dFJlc29sdmVyLmggKi87IH07CiAJCUU0RTlCMTFEMTgx
NDU2OUMwMDNBQ0NERiAvKiBTaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEU5QjExQzE4MTQ1NjlDMDAzQUND
REYgLyogU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5oICovOyB9OwpAQCAtMTQ1NDgsNiArMTQ1
NDksOCBAQAogCQlFNEUyNDM4MjFEQUI5NTNFMDBDMjZFNEIgLyogbWV0ZXJFbGVtZW50U2hhZG93
LmNzcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQuY3NzOyBwYXRoID0gbWV0ZXJFbGVtZW50U2hhZG93LmNzczsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTRFMzlBRkExMzMwRUZBODAwM0FCMjc0IC8q
IExlZ2FjeVRpbGVMYXllclBvb2wuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
TGVnYWN5VGlsZUxheWVyUG9vbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNEUz
OUFGQzEzMzBFRkM1MDAzQUIyNzQgLyogTGVnYWN5VGlsZUxheWVyUG9vbC5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IExlZ2FjeVRpbGVMYXllclBvb2wubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUU0RThCNEVBMjE2Qjc5RTUwMEI4ODM0RCAvKiBT
eXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlFNEU4QjRFRDIxNkI3OUY0MDBCODgzNEQgLyogU3lzdGVtRm9udERhdGFiYXNlQ29y
ZVRleHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3lzdGVtRm9u
dERhdGFiYXNlQ29yZVRleHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNEU4
QjRGMDIxNkI4QjVGMDBCODgzNEQgLyogRm9udENhc2NhZGVEZXNjcmlwdGlvbi5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb250Q2FzY2FkZURlc2NyaXB0aW9uLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTRFOEI0RjIyMTZCOEI2MDAwQjg4MzRE
IC8qIEZvbnRDYXNjYWRlRGVzY3JpcHRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRm9udENhc2NhZGVEZXNjcmlwdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFNEU5QjExODE4MTA5MTZGMDAzQUNDREYgLyogU2ltcGxlTGluZUxheW91dFJlc29sdmVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNpbXBsZUxpbmVMYXlvdXRSZXNv
bHZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjQwMjUsNiArMjQwMjgsOCBA
QAogCQkJCUFEOUZGNkUwMTkwODM5MUQwMDNCNjFFMCAvKiBJT1N1cmZhY2VQb29sQ29jb2EubW0g
Ki8sCiAJCQkJQ0RDNDhBQzgyMTQ5Q0YyQTAwMjRGRDU5IC8qIE1lZGlhRW5naW5lQ29uZmlndXJh
dGlvbkZhY3RvcnlDb2NvYS5jcHAgKi8sCiAJCQkJQ0RDNDhBQzcyMTQ5Q0YyQTAwMjRGRDU5IC8q
IE1lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnlDb2NvYS5oICovLAorCQkJCUU0RThCNEVE
MjE2Qjc5RjQwMEI4ODM0RCAvKiBTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dC5jcHAgKi8sCisJ
CQkJRTRFOEI0RUEyMTZCNzlFNTAwQjg4MzREIC8qIFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0
LmggKi8sCiAJCQkJNTI2NzI0RjIxQ0IyRkRGNjAwNzU5NzREIC8qIFRleHRUcmFja1JlcHJlc2Vu
dGF0aW9uQ29jb2EuaCAqLywKIAkJCQk1MjY3MjRGMTFDQjJGREY2MDA3NTk3NEQgLyogVGV4dFRy
YWNrUmVwcmVzZW50YXRpb25Db2NvYS5tbSAqLywKIAkJCQkyRDNFRjQ0NDE5MTc5MTVDMDAwMzQx
ODQgLyogV2ViQWN0aW9uRGlzYWJsaW5nQ0FMYXllckRlbGVnYXRlLmggKi8sCkBAIC0yNzQ5Myw2
ICsyNzQ5OCw3IEBACiAJCQkJNTczMDNCQkIyMDA2QzZFRTAwMzU1OTY1IC8qIENCT1JCaW5hcnku
aCBpbiBIZWFkZXJzICovLAogCQkJCTU3MzAzQkMxMjAwNkUwMEMwMDM1NTk2NSAvKiBDQk9SUmVh
ZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1NzMwM0JCOTIwMDZDNkVFMDAzNTU5NjUgLyogQ0JP
UlZhbHVlLmggaW4gSGVhZGVycyAqLywKKwkJCQlFNEU4QjRFQzIxNkI3OUU1MDBCODgzNEQgLyog
U3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3MzAzQkJB
MjAwNkM2RUUwMDM1NTk2NSAvKiBDQk9SV3JpdGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk2NTUw
QjY5RTA5OURGMDI3MDA5MEQ3ODEgLyogQ0RBVEFTZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlDREY0QjcxNjFFMDBCN0U1MDBFMjM1QTIgLyogQ0RNLmggaW4gSGVhZGVycyAqLywKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnREZXNjcmlwdGlvbkNv
Y29hLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9Gb250RGVzY3JpcHRpb25Db2NvYS5jcHAJKHJldmlzaW9uIDIzNjkxNCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnREZXNjcmlwdGlvbkNvY29hLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjYsMTc1ICsyNiwxMiBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIkZvbnREZXNjcmlwdGlvbi5oIgogCi0jaW5jbHVkZSAiRm9udENhY2hlLmgi
Ci0jaW5jbHVkZSAiRm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dC5oIgotI2luY2x1ZGUg
PHBhbC9zcGkvY29jb2EvQ29yZVRleHRTUEkuaD4KLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgot
I2luY2x1ZGUgPHd0Zi9IYXNoVHJhaXRzLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3Ry
aW5nLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nSGFzaC5oPgotCi0jaWYgUExB
VEZPUk0oSU9TKQotI2luY2x1ZGUgIlJlbmRlclRoZW1lSU9TLmgiCi0jZW5kaWYKKyNpbmNsdWRl
ICJTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dC5oIgogCiAjaWYgVVNFX1BMQVRGT1JNX1NZU1RF
TV9GQUxMQkFDS19MSVNUCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU3lzdGVtRm9u
dERhdGFiYXNlIHsKLXB1YmxpYzoKLSAgICBzdHJ1Y3QgQ29yZVRleHRDYXNjYWRlTGlzdFBhcmFt
ZXRlcnMgewotICAgICAgICBDb3JlVGV4dENhc2NhZGVMaXN0UGFyYW1ldGVycygpCi0gICAgICAg
IHsKLSAgICAgICAgfQotCi0gICAgICAgIENvcmVUZXh0Q2FzY2FkZUxpc3RQYXJhbWV0ZXJzKFdU
Rjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkKLSAgICAgICAgICAgIDogZm9udE5hbWUoV1RG
OjpIYXNoVGFibGVEZWxldGVkVmFsdWUpCi0gICAgICAgIHsKLSAgICAgICAgfQotCi0gICAgICAg
IGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdAotICAgICAgICB7Ci0gICAgICAg
ICAgICByZXR1cm4gZm9udE5hbWUuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsKLSAgICAgICAg
fQotCi0gICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDb3JlVGV4dENhc2NhZGVMaXN0UGFy
YW1ldGVycyYgb3RoZXIpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBmb250
TmFtZSA9PSBvdGhlci5mb250TmFtZQotICAgICAgICAgICAgICAgICYmIGxvY2FsZSA9PSBvdGhl
ci5sb2NhbGUKLSAgICAgICAgICAgICAgICAmJiB3ZWlnaHQgPT0gb3RoZXIud2VpZ2h0Ci0gICAg
ICAgICAgICAgICAgJiYgc2l6ZSA9PSBvdGhlci5zaXplCi0gICAgICAgICAgICAgICAgJiYgYWxs
b3dVc2VySW5zdGFsbGVkRm9udHMgPT0gb3RoZXIuYWxsb3dVc2VySW5zdGFsbGVkRm9udHMKLSAg
ICAgICAgICAgICAgICAmJiBpdGFsaWMgPT0gb3RoZXIuaXRhbGljOwotICAgICAgICB9Ci0KLSAg
ICAgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIEludGVn
ZXJIYXNoZXIgaGFzaGVyOwotICAgICAgICAgICAgQVNTRVJUKCFmb250TmFtZS5pc051bGwoKSk7
Ci0gICAgICAgICAgICBoYXNoZXIuYWRkKGxvY2FsZS5leGlzdGluZ0hhc2goKSk7Ci0gICAgICAg
ICAgICBoYXNoZXIuYWRkKGxvY2FsZS5pc051bGwoKSA/IDAgOiBsb2NhbGUuZXhpc3RpbmdIYXNo
KCkpOwotICAgICAgICAgICAgaGFzaGVyLmFkZCh3ZWlnaHQpOwotICAgICAgICAgICAgaGFzaGVy
LmFkZChzaXplKTsKLSAgICAgICAgICAgIGhhc2hlci5hZGQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KGFsbG93VXNlckluc3RhbGxlZEZvbnRzKSk7Ci0gICAgICAgICAgICBoYXNoZXIuYWRkKGl0YWxp
Yyk7Ci0gICAgICAgICAgICByZXR1cm4gaGFzaGVyLmhhc2goKTsKLSAgICAgICAgfQotCi0gICAg
ICAgIHN0cnVjdCBDb3JlVGV4dENhc2NhZGVMaXN0UGFyYW1ldGVyc0hhc2ggOiBXVEY6OlBhaXJI
YXNoPEF0b21pY1N0cmluZywgZmxvYXQ+IHsKLSAgICAgICAgICAgIHN0YXRpYyB1bnNpZ25lZCBo
YXNoKGNvbnN0IENvcmVUZXh0Q2FzY2FkZUxpc3RQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQotICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBwYXJhbWV0ZXJzLmhhc2goKTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IENvcmVUZXh0
Q2FzY2FkZUxpc3RQYXJhbWV0ZXJzJiBhLCBjb25zdCBDb3JlVGV4dENhc2NhZGVMaXN0UGFyYW1l
dGVycyYgYikKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gYSA9PSBiOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFy
ZVRvRW1wdHlPckRlbGV0ZWQgPSB0cnVlOwotICAgICAgICB9OwotCi0gICAgICAgIEF0b21pY1N0
cmluZyBmb250TmFtZTsKLSAgICAgICAgQXRvbWljU3RyaW5nIGxvY2FsZTsKLSAgICAgICAgQ0dG
bG9hdCB3ZWlnaHQgeyAwIH07Ci0gICAgICAgIGZsb2F0IHNpemUgeyAwIH07Ci0gICAgICAgIEFs
bG93VXNlckluc3RhbGxlZEZvbnRzIGFsbG93VXNlckluc3RhbGxlZEZvbnRzIHsgQWxsb3dVc2Vy
SW5zdGFsbGVkRm9udHM6Ok5vIH07Ci0gICAgICAgIGJvb2wgaXRhbGljIHsgZmFsc2UgfTsKLSAg
ICB9OwotCi0gICAgc3RhdGljIFN5c3RlbUZvbnREYXRhYmFzZSYgc2luZ2xldG9uKCkKLSAgICB7
Ci0gICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTeXN0ZW1Gb250RGF0YWJhc2U+IGRhdGFi
YXNlID0gU3lzdGVtRm9udERhdGFiYXNlKCk7Ci0gICAgICAgIHJldHVybiBkYXRhYmFzZS5nZXQo
KTsKLSAgICB9Ci0KLSAgICBlbnVtIGNsYXNzIENsaWVudFVzZSB7IEZvclN5c3RlbVVJLCBGb3JU
ZXh0U3R5bGUgfTsKLQotICAgIFZlY3RvcjxSZXRhaW5QdHI8Q1RGb250RGVzY3JpcHRvclJlZj4+
IHN5c3RlbUZvbnRDYXNjYWRlTGlzdChjb25zdCBDb3JlVGV4dENhc2NhZGVMaXN0UGFyYW1ldGVy
cyYgcGFyYW1ldGVycywgQ2xpZW50VXNlIGNsaWVudFVzZSkKLSAgICB7Ci0gICAgICAgIEFTU0VS
VCghcGFyYW1ldGVycy5mb250TmFtZS5pc051bGwoKSk7Ci0gICAgICAgIHJldHVybiBtX3N5c3Rl
bUZvbnRDYWNoZS5lbnN1cmUocGFyYW1ldGVycywgWyZdIHsKLSAgICAgICAgICAgIGF1dG8gbG9j
YWxlU3RyaW5nID0gcGFyYW1ldGVycy5sb2NhbGUuc3RyaW5nKCkuY3JlYXRlQ0ZTdHJpbmcoKTsK
LSAgICAgICAgICAgIFJldGFpblB0cjxDVEZvbnRSZWY+IHN5c3RlbUZvbnQ7Ci0gICAgICAgICAg
ICBpZiAoY2xpZW50VXNlID09IENsaWVudFVzZTo6Rm9yU3lzdGVtVUkpIHsKLSAgICAgICAgICAg
ICAgICBzeXN0ZW1Gb250ID0gYWRvcHRDRihDVEZvbnRDcmVhdGVVSUZvbnRGb3JMYW5ndWFnZShr
Q1RGb250VUlGb250U3lzdGVtLCBwYXJhbWV0ZXJzLnNpemUsIGxvY2FsZVN0cmluZy5nZXQoKSkp
OwotICAgICAgICAgICAgICAgIEFTU0VSVChzeXN0ZW1Gb250KTsKLSAgICAgICAgICAgICAgICAv
LyBGSVhNRTogVXNlIGFwcGx5V2VpZ2h0SXRhbGljc0FuZEZhbGxiYWNrQmVoYXZpb3IoKSBpbiBi
b3RoIGNhc2VzIG9uY2UgPHJkYXI6Ly9wcm9ibGVtLzMzMDQ2MDQxPiBpcyBmaXhlZC4KLSAgICAg
ICAgICAgICAgICBzeXN0ZW1Gb250ID0gYXBwbHlXZWlnaHRJdGFsaWNzQW5kRmFsbGJhY2tCZWhh
dmlvcihzeXN0ZW1Gb250LmdldCgpLCBwYXJhbWV0ZXJzLndlaWdodCwgcGFyYW1ldGVycy5pdGFs
aWMsIHBhcmFtZXRlcnMuc2l6ZSwgcGFyYW1ldGVycy5hbGxvd1VzZXJJbnN0YWxsZWRGb250cyk7
Ci0gICAgICAgICAgICB9IGVsc2UgewotI2lmIFBMQVRGT1JNKElPUykKLSAgICAgICAgICAgICAg
ICBBU1NFUlQoY2xpZW50VXNlID09IENsaWVudFVzZTo6Rm9yVGV4dFN0eWxlKTsKLSAgICAgICAg
ICAgICAgICBhdXRvIGZvbnREZXNjcmlwdG9yID0gYWRvcHRDRihDVEZvbnREZXNjcmlwdG9yQ3Jl
YXRlV2l0aFRleHRTdHlsZShwYXJhbWV0ZXJzLmZvbnROYW1lLnN0cmluZygpLmNyZWF0ZUNGU3Ry
aW5nKCkuZ2V0KCksIFJlbmRlclRoZW1lSU9TOjpjb250ZW50U2l6ZUNhdGVnb3J5KCksIG51bGxw
dHIpKTsKLSAgICAgICAgICAgICAgICBDVEZvbnRTeW1ib2xpY1RyYWl0cyB0cmFpdHMgPSAocGFy
YW1ldGVycy53ZWlnaHQgPj0ga0NURm9udFdlaWdodFNlbWlib2xkID8ga0NURm9udFRyYWl0Qm9s
ZCA6IDApIHwgKHBhcmFtZXRlcnMuaXRhbGljID8ga0NURm9udFRyYWl0SXRhbGljIDogMCk7Ci0g
ICAgICAgICAgICAgICAgaWYgKHRyYWl0cykKLSAgICAgICAgICAgICAgICAgICAgZm9udERlc2Ny
aXB0b3IgPSBhZG9wdENGKENURm9udERlc2NyaXB0b3JDcmVhdGVDb3B5V2l0aFN5bWJvbGljVHJh
aXRzKGZvbnREZXNjcmlwdG9yLmdldCgpLCB0cmFpdHMsIHRyYWl0cykpOwotICAgICAgICAgICAg
ICAgIHN5c3RlbUZvbnQgPSBjcmVhdGVGb250Rm9ySW5zdGFsbGVkRm9udHMoZm9udERlc2NyaXB0
b3IuZ2V0KCksIHBhcmFtZXRlcnMuc2l6ZSwgcGFyYW1ldGVycy5hbGxvd1VzZXJJbnN0YWxsZWRG
b250cyk7Ci0jZWxzZQotICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotI2Vu
ZGlmCi0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBBU1NFUlQoc3lzdGVtRm9udCk7Ci0gICAg
ICAgICAgICBhdXRvIHJlc3VsdCA9IGNvbXB1dGVDYXNjYWRlTGlzdChzeXN0ZW1Gb250LmdldCgp
LCBsb2NhbGVTdHJpbmcuZ2V0KCkpOwotICAgICAgICAgICAgQVNTRVJUKCFyZXN1bHQuaXNFbXB0
eSgpKTsKLSAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICAgIH0pLml0ZXJhdG9yLT52
YWx1ZTsKLSAgICB9Ci0KLSAgICB2b2lkIGNsZWFyKCkKLSAgICB7Ci0gICAgICAgIG1fc3lzdGVt
Rm9udENhY2hlLmNsZWFyKCk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIFN5c3RlbUZvbnREYXRh
YmFzZSgpCi0gICAgewotICAgIH0KLQotICAgIHN0YXRpYyBSZXRhaW5QdHI8Q1RGb250UmVmPiBh
cHBseVdlaWdodEl0YWxpY3NBbmRGYWxsYmFja0JlaGF2aW9yKENURm9udFJlZiBmb250LCBDR0Zs
b2F0IHdlaWdodCwgYm9vbCBpdGFsaWMsIGZsb2F0IHNpemUsIEFsbG93VXNlckluc3RhbGxlZEZv
bnRzIGFsbG93VXNlckluc3RhbGxlZEZvbnRzKQotICAgIHsKLSAgICAgICAgYXV0byB3ZWlnaHRO
dW1iZXIgPSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRk51
bWJlckNHRmxvYXRUeXBlLCAmd2VpZ2h0KSk7Ci0gICAgICAgIGNvbnN0IGZsb2F0IHN5c3RlbUZv
bnRJdGFsaWNTbG9wZSA9IDAuMDc7Ci0gICAgICAgIGZsb2F0IGl0YWxpY3NSYXdOdW1iZXIgPSBp
dGFsaWMgPyBzeXN0ZW1Gb250SXRhbGljU2xvcGUgOiAwOwotICAgICAgICBhdXRvIGl0YWxpY3NO
dW1iZXIgPSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRk51
bWJlckZsb2F0VHlwZSwgJml0YWxpY3NSYXdOdW1iZXIpKTsKLSAgICAgICAgQ0ZUeXBlUmVmIHRy
YWl0c0tleXNbXSA9IHsga0NURm9udFdlaWdodFRyYWl0LCBrQ1RGb250U2xhbnRUcmFpdCwga0NU
Rm9udFVJRm9udERlc2lnblRyYWl0IH07Ci0gICAgICAgIENGVHlwZVJlZiB0cmFpdHNWYWx1ZXNb
XSA9IHsgd2VpZ2h0TnVtYmVyLmdldCgpLCBpdGFsaWNzTnVtYmVyLmdldCgpLCBrQ0ZCb29sZWFu
VHJ1ZSB9OwotICAgICAgICBhdXRvIHRyYWl0c0RpY3Rpb25hcnkgPSBhZG9wdENGKENGRGljdGlv
bmFyeUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCB0cmFpdHNLZXlzLCB0cmFpdHNWYWx1ZXMs
IFdURl9BUlJBWV9MRU5HVEgodHJhaXRzS2V5cyksICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxC
YWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKLSAgICAgICAgYXV0byBh
dHRyaWJ1dGVzID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRv
ckRlZmF1bHQsIDAsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0
aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKLSAgICAgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoYXR0
cmlidXRlcy5nZXQoKSwga0NURm9udFRyYWl0c0F0dHJpYnV0ZSwgdHJhaXRzRGljdGlvbmFyeS5n
ZXQoKSk7Ci0gICAgICAgIGFkZEF0dHJpYnV0ZXNGb3JJbnN0YWxsZWRGb250cyhhdHRyaWJ1dGVz
LmdldCgpLCBhbGxvd1VzZXJJbnN0YWxsZWRGb250cyk7Ci0gICAgICAgIGF1dG8gbW9kaWZpY2F0
aW9uID0gYWRvcHRDRihDVEZvbnREZXNjcmlwdG9yQ3JlYXRlV2l0aEF0dHJpYnV0ZXMoYXR0cmli
dXRlcy5nZXQoKSkpOwotICAgICAgICByZXR1cm4gYWRvcHRDRihDVEZvbnRDcmVhdGVDb3B5V2l0
aEF0dHJpYnV0ZXMoZm9udCwgc2l6ZSwgbnVsbHB0ciwgbW9kaWZpY2F0aW9uLmdldCgpKSk7Ci0g
ICAgfQotCi0gICAgc3RhdGljIFJldGFpblB0cjxDVEZvbnREZXNjcmlwdG9yUmVmPiByZW1vdmVD
YXNjYWRlTGlzdChDVEZvbnREZXNjcmlwdG9yUmVmIGZvbnREZXNjcmlwdG9yKQotICAgIHsKLSAg
ICAgICAgYXV0byBlbXB0eUFycmF5ID0gYWRvcHRDRihDRkFycmF5Q3JlYXRlKGtDRkFsbG9jYXRv
ckRlZmF1bHQsIG51bGxwdHIsIDAsICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpKTsKLSAgICAgICAg
Q0ZUeXBlUmVmIGZhbGxiYWNrRGljdGlvbmFyeUtleXNbXSA9IHsga0NURm9udENhc2NhZGVMaXN0
QXR0cmlidXRlIH07Ci0gICAgICAgIENGVHlwZVJlZiBmYWxsYmFja0RpY3Rpb25hcnlWYWx1ZXNb
XSA9IHsgZW1wdHlBcnJheS5nZXQoKSB9OwotICAgICAgICBhdXRvIGZhbGxiYWNrRGljdGlvbmFy
eSA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGZhbGxi
YWNrRGljdGlvbmFyeUtleXMsIGZhbGxiYWNrRGljdGlvbmFyeVZhbHVlcywgV1RGX0FSUkFZX0xF
TkdUSChmYWxsYmFja0RpY3Rpb25hcnlLZXlzKSwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJh
Y2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOwotICAgICAgICBhdXRvIG1v
ZGlmaWVkRm9udERlc2NyaXB0b3IgPSBhZG9wdENGKENURm9udERlc2NyaXB0b3JDcmVhdGVDb3B5
V2l0aEF0dHJpYnV0ZXMoZm9udERlc2NyaXB0b3IsIGZhbGxiYWNrRGljdGlvbmFyeS5nZXQoKSkp
OwotICAgICAgICByZXR1cm4gbW9kaWZpZWRGb250RGVzY3JpcHRvcjsKLSAgICB9Ci0KLSAgICBz
dGF0aWMgVmVjdG9yPFJldGFpblB0cjxDVEZvbnREZXNjcmlwdG9yUmVmPj4gY29tcHV0ZUNhc2Nh
ZGVMaXN0KENURm9udFJlZiBmb250LCBDRlN0cmluZ1JlZiBsb2NhbGUpCi0gICAgewotICAgICAg
ICBDRlR5cGVSZWYgYXJyYXlWYWx1ZXNbXSA9IHsgbG9jYWxlIH07Ci0gICAgICAgIGF1dG8gbG9j
YWxlQXJyYXkgPSBhZG9wdENGKENGQXJyYXlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYXJy
YXlWYWx1ZXMsIFdURl9BUlJBWV9MRU5HVEgoYXJyYXlWYWx1ZXMpLCAma0NGVHlwZUFycmF5Q2Fs
bEJhY2tzKSk7Ci0gICAgICAgIGF1dG8gY2FzY2FkZUxpc3QgPSBhZG9wdENGKENURm9udENvcHlE
ZWZhdWx0Q2FzY2FkZUxpc3RGb3JMYW5ndWFnZXMoZm9udCwgbG9jYWxlQXJyYXkuZ2V0KCkpKTsK
LSAgICAgICAgVmVjdG9yPFJldGFpblB0cjxDVEZvbnREZXNjcmlwdG9yUmVmPj4gcmVzdWx0Owot
ICAgICAgICAvLyBXZWJLaXQgaGFuZGxlcyB0aGUgY2FzY2FkZSBsaXN0LCBhbmQgV2ViS2l0IDIn
cyBJUEMgY29kZSBkb2Vzbid0IGtub3cgaG93IHRvIHNlcmlhbGl6ZSBDb3JlIFRleHQncyBjYXNj
YWRlIGxpc3QuCi0gICAgICAgIHJlc3VsdC5hcHBlbmQocmVtb3ZlQ2FzY2FkZUxpc3QoYWRvcHRD
RihDVEZvbnRDb3B5Rm9udERlc2NyaXB0b3IoZm9udCkpLmdldCgpKSk7Ci0gICAgICAgIGlmIChj
YXNjYWRlTGlzdCkgewotICAgICAgICAgICAgQ0ZJbmRleCBhcnJheUxlbmd0aCA9IENGQXJyYXlH
ZXRDb3VudChjYXNjYWRlTGlzdC5nZXQoKSk7Ci0gICAgICAgICAgICBmb3IgKENGSW5kZXggaSA9
IDA7IGkgPCBhcnJheUxlbmd0aDsgKytpKQotICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQo
c3RhdGljX2Nhc3Q8Q1RGb250RGVzY3JpcHRvclJlZj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRleChj
YXNjYWRlTGlzdC5nZXQoKSwgaSkpKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gcmVzdWx0
OwotICAgIH0KLQotICAgIEhhc2hNYXA8Q29yZVRleHRDYXNjYWRlTGlzdFBhcmFtZXRlcnMsIFZl
Y3RvcjxSZXRhaW5QdHI8Q1RGb250RGVzY3JpcHRvclJlZj4+LCBDb3JlVGV4dENhc2NhZGVMaXN0
UGFyYW1ldGVyczo6Q29yZVRleHRDYXNjYWRlTGlzdFBhcmFtZXRlcnNIYXNoLCBTaW1wbGVDbGFz
c0hhc2hUcmFpdHM8Q29yZVRleHRDYXNjYWRlTGlzdFBhcmFtZXRlcnM+PiBtX3N5c3RlbUZvbnRD
YWNoZTsKLX07Ci0KIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1N5c3RlbUZvbnRTdHJpbmcoY29uc3Qg
QXRvbWljU3RyaW5nJiBzdHJpbmcpCiB7CiAgICAgcmV0dXJuIGVxdWFsTGV0dGVyc0lnbm9yaW5n
QVNDSUlDYXNlKHN0cmluZywgIi13ZWJraXQtc3lzdGVtLWZvbnQiKQpAQCAtMjQ0LDU3ICs4MSwx
NCBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNVSUZvbnRUZXh0U3R5bGUoY29uCiB9CiAjZW5kaWYK
IAotc3RhdGljIGlubGluZSBTeXN0ZW1Gb250RGF0YWJhc2U6OkNvcmVUZXh0Q2FzY2FkZUxpc3RQ
YXJhbWV0ZXJzIHN5c3RlbUZvbnRQYXJhbWV0ZXJzKGNvbnN0IEZvbnRDYXNjYWRlRGVzY3JpcHRp
b24mIGRlc2NyaXB0aW9uLCBjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlseU5hbWUsIFN5c3RlbUZv
bnREYXRhYmFzZTo6Q2xpZW50VXNlIGNsaWVudFVzZSwgQWxsb3dVc2VySW5zdGFsbGVkRm9udHMg
YWxsb3dVc2VySW5zdGFsbGVkRm9udHMpCi17Ci0gICAgU3lzdGVtRm9udERhdGFiYXNlOjpDb3Jl
VGV4dENhc2NhZGVMaXN0UGFyYW1ldGVycyByZXN1bHQ7Ci0gICAgcmVzdWx0LmxvY2FsZSA9IGRl
c2NyaXB0aW9uLmxvY2FsZSgpOwotICAgIHJlc3VsdC5zaXplID0gZGVzY3JpcHRpb24uY29tcHV0
ZWRTaXplKCk7Ci0gICAgcmVzdWx0Lml0YWxpYyA9IGlzSXRhbGljKGRlc2NyaXB0aW9uLml0YWxp
YygpKTsKLQotICAgIGF1dG8gd2VpZ2h0ID0gZGVzY3JpcHRpb24ud2VpZ2h0KCk7Ci0gICAgaWYg
KEZvbnRDYWNoZTo6c2luZ2xldG9uKCkuc2hvdWxkTW9ja0JvbGRTeXN0ZW1Gb250Rm9yQWNjZXNz
aWJpbGl0eSgpKQotICAgICAgICB3ZWlnaHQgPSB3ZWlnaHQgKyBGb250U2VsZWN0aW9uVmFsdWUo
MjAwKTsKLQotICAgIGlmICh3ZWlnaHQgPCBGb250U2VsZWN0aW9uVmFsdWUoMTUwKSkKLSAgICAg
ICAgcmVzdWx0LndlaWdodCA9IGtDVEZvbnRXZWlnaHRVbHRyYUxpZ2h0OwotICAgIGVsc2UgaWYg
KHdlaWdodCA8IEZvbnRTZWxlY3Rpb25WYWx1ZSgyNTApKQotICAgICAgICByZXN1bHQud2VpZ2h0
ID0ga0NURm9udFdlaWdodFRoaW47Ci0gICAgZWxzZSBpZiAod2VpZ2h0IDwgRm9udFNlbGVjdGlv
blZhbHVlKDM1MCkpCi0gICAgICAgIHJlc3VsdC53ZWlnaHQgPSBrQ1RGb250V2VpZ2h0TGlnaHQ7
Ci0gICAgZWxzZSBpZiAod2VpZ2h0IDwgRm9udFNlbGVjdGlvblZhbHVlKDQ1MCkpCi0gICAgICAg
IHJlc3VsdC53ZWlnaHQgPSBrQ1RGb250V2VpZ2h0UmVndWxhcjsKLSAgICBlbHNlIGlmICh3ZWln
aHQgPCBGb250U2VsZWN0aW9uVmFsdWUoNTUwKSkKLSAgICAgICAgcmVzdWx0LndlaWdodCA9IGtD
VEZvbnRXZWlnaHRNZWRpdW07Ci0gICAgZWxzZSBpZiAod2VpZ2h0IDwgRm9udFNlbGVjdGlvblZh
bHVlKDY1MCkpCi0gICAgICAgIHJlc3VsdC53ZWlnaHQgPSBrQ1RGb250V2VpZ2h0U2VtaWJvbGQ7
Ci0gICAgZWxzZSBpZiAod2VpZ2h0IDwgRm9udFNlbGVjdGlvblZhbHVlKDc1MCkpCi0gICAgICAg
IHJlc3VsdC53ZWlnaHQgPSBrQ1RGb250V2VpZ2h0Qm9sZDsKLSAgICBlbHNlIGlmICh3ZWlnaHQg
PCBGb250U2VsZWN0aW9uVmFsdWUoODUwKSkKLSAgICAgICAgcmVzdWx0LndlaWdodCA9IGtDVEZv
bnRXZWlnaHRIZWF2eTsKLSAgICBlbHNlCi0gICAgICAgIHJlc3VsdC53ZWlnaHQgPSBrQ1RGb250
V2VpZ2h0QmxhY2s7Ci0KLSAgICBpZiAoY2xpZW50VXNlID09IFN5c3RlbUZvbnREYXRhYmFzZTo6
Q2xpZW50VXNlOjpGb3JTeXN0ZW1VSSkgewotICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
QXRvbWljU3RyaW5nPiBzeXN0ZW1VSSA9IEF0b21pY1N0cmluZygic3lzdGVtLXVpIiwgQXRvbWlj
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgICAgIHJlc3VsdC5mb250TmFtZSA9
IHN5c3RlbVVJLmdldCgpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIEFTU0VSVChjbGllbnRVc2Ug
PT0gU3lzdGVtRm9udERhdGFiYXNlOjpDbGllbnRVc2U6OkZvclRleHRTdHlsZSk7Ci0gICAgICAg
IHJlc3VsdC5mb250TmFtZSA9IGZhbWlseU5hbWU7Ci0gICAgfQotCi0gICAgcmVzdWx0LmFsbG93
VXNlckluc3RhbGxlZEZvbnRzID0gYWxsb3dVc2VySW5zdGFsbGVkRm9udHM7Ci0KLSAgICByZXR1
cm4gcmVzdWx0OwotfQotCiB2b2lkIEZvbnREZXNjcmlwdGlvbjo6aW52YWxpZGF0ZUNhY2hlcygp
CiB7Ci0gICAgU3lzdGVtRm9udERhdGFiYXNlOjpzaW5nbGV0b24oKS5jbGVhcigpOworICAgIFN5
c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0OjpzaW5nbGV0b24oKS5jbGVhcigpOwogfQogCi1zdGF0
aWMgaW5saW5lIFZlY3RvcjxSZXRhaW5QdHI8Q1RGb250RGVzY3JpcHRvclJlZj4+IHN5c3RlbUZv
bnRDYXNjYWRlTGlzdChjb25zdCBGb250Q2FzY2FkZURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwg
Y29uc3QgQXRvbWljU3RyaW5nJiBjc3NGYW1pbHksIFN5c3RlbUZvbnREYXRhYmFzZTo6Q2xpZW50
VXNlIGNsaWVudFVzZSwgQWxsb3dVc2VySW5zdGFsbGVkRm9udHMgYWxsb3dVc2VySW5zdGFsbGVk
Rm9udHMpCitzdGF0aWMgaW5saW5lIFZlY3RvcjxSZXRhaW5QdHI8Q1RGb250RGVzY3JpcHRvclJl
Zj4+IHN5c3RlbUZvbnRDYXNjYWRlTGlzdChjb25zdCBGb250Q2FzY2FkZURlc2NyaXB0aW9uJiBk
ZXNjcmlwdGlvbiwgY29uc3QgQXRvbWljU3RyaW5nJiBjc3NGYW1pbHksIFN5c3RlbUZvbnREYXRh
YmFzZUNvcmVUZXh0OjpDbGllbnRVc2UgY2xpZW50VXNlLCBBbGxvd1VzZXJJbnN0YWxsZWRGb250
cyBhbGxvd1VzZXJJbnN0YWxsZWRGb250cykKIHsKLSAgICByZXR1cm4gU3lzdGVtRm9udERhdGFi
YXNlOjpzaW5nbGV0b24oKS5zeXN0ZW1Gb250Q2FzY2FkZUxpc3Qoc3lzdGVtRm9udFBhcmFtZXRl
cnMoZGVzY3JpcHRpb24sIGNzc0ZhbWlseSwgY2xpZW50VXNlLCBhbGxvd1VzZXJJbnN0YWxsZWRG
b250cyksIGNsaWVudFVzZSk7CisgICAgcmV0dXJuIFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0
OjpzaW5nbGV0b24oKS5zeXN0ZW1Gb250Q2FzY2FkZUxpc3QoZGVzY3JpcHRpb24sIGNzc0ZhbWls
eSwgY2xpZW50VXNlLCBhbGxvd1VzZXJJbnN0YWxsZWRGb250cyk7CiB9CiAKIHVuc2lnbmVkIEZv
bnRDYXNjYWRlRGVzY3JpcHRpb246OmVmZmVjdGl2ZUZhbWlseUNvdW50KCkgY29uc3QKQEAgLTMw
NCwxMCArOTgsMTAgQEAgdW5zaWduZWQgRm9udENhc2NhZGVEZXNjcmlwdGlvbjo6ZWZmZWN0aQog
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBmYW1pbHlDb3VudCgpOyArK2kpIHsKICAgICAg
ICAgY29uc3QgYXV0byYgY3NzRmFtaWx5ID0gZmFtaWx5QXQoaSk7CiAgICAgICAgIGlmIChpc1N5
c3RlbUZvbnRTdHJpbmcoY3NzRmFtaWx5KSkKLSAgICAgICAgICAgIHJlc3VsdCArPSBzeXN0ZW1G
b250Q2FzY2FkZUxpc3QoKnRoaXMsIGNzc0ZhbWlseSwgU3lzdGVtRm9udERhdGFiYXNlOjpDbGll
bnRVc2U6OkZvclN5c3RlbVVJLCBzaG91bGRBbGxvd1VzZXJJbnN0YWxsZWRGb250cygpKS5zaXpl
KCk7CisgICAgICAgICAgICByZXN1bHQgKz0gc3lzdGVtRm9udENhc2NhZGVMaXN0KCp0aGlzLCBj
c3NGYW1pbHksIFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0OjpDbGllbnRVc2U6OkZvclN5c3Rl
bVVJLCBzaG91bGRBbGxvd1VzZXJJbnN0YWxsZWRGb250cygpKS5zaXplKCk7CiAjaWYgUExBVEZP
Uk0oSU9TKQogICAgICAgICBlbHNlIGlmIChpc1VJRm9udFRleHRTdHlsZShjc3NGYW1pbHkpKQot
ICAgICAgICAgICAgcmVzdWx0ICs9IHN5c3RlbUZvbnRDYXNjYWRlTGlzdCgqdGhpcywgY3NzRmFt
aWx5LCBTeXN0ZW1Gb250RGF0YWJhc2U6OkNsaWVudFVzZTo6Rm9yVGV4dFN0eWxlLCBzaG91bGRB
bGxvd1VzZXJJbnN0YWxsZWRGb250cygpKS5zaXplKCk7CisgICAgICAgICAgICByZXN1bHQgKz0g
c3lzdGVtRm9udENhc2NhZGVMaXN0KCp0aGlzLCBjc3NGYW1pbHksIFN5c3RlbUZvbnREYXRhYmFz
ZUNvcmVUZXh0OjpDbGllbnRVc2U6OkZvclRleHRTdHlsZSwgc2hvdWxkQWxsb3dVc2VySW5zdGFs
bGVkRm9udHMoKSkuc2l6ZSgpOwogI2VuZGlmCiAgICAgICAgIGVsc2UKICAgICAgICAgICAgICsr
cmVzdWx0OwpAQCAtMzI3LDE0ICsxMjEsMTQgQEAgRm9udEZhbWlseVNwZWNpZmljYXRpb24gRm9u
dENhc2NhZGVEZXNjcgogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBmYW1pbHlDb3VudCgp
OyArK2kpIHsKICAgICAgICAgY29uc3QgYXV0byYgY3NzRmFtaWx5ID0gZmFtaWx5QXQoaSk7CiAg
ICAgICAgIGlmIChpc1N5c3RlbUZvbnRTdHJpbmcoY3NzRmFtaWx5KSkgewotICAgICAgICAgICAg
YXV0byBjYXNjYWRlTGlzdCA9IHN5c3RlbUZvbnRDYXNjYWRlTGlzdCgqdGhpcywgY3NzRmFtaWx5
LCBTeXN0ZW1Gb250RGF0YWJhc2U6OkNsaWVudFVzZTo6Rm9yU3lzdGVtVUksIHNob3VsZEFsbG93
VXNlckluc3RhbGxlZEZvbnRzKCkpOworICAgICAgICAgICAgYXV0byBjYXNjYWRlTGlzdCA9IHN5
c3RlbUZvbnRDYXNjYWRlTGlzdCgqdGhpcywgY3NzRmFtaWx5LCBTeXN0ZW1Gb250RGF0YWJhc2VD
b3JlVGV4dDo6Q2xpZW50VXNlOjpGb3JTeXN0ZW1VSSwgc2hvdWxkQWxsb3dVc2VySW5zdGFsbGVk
Rm9udHMoKSk7CiAgICAgICAgICAgICBpZiAoaW5kZXggPCBjYXNjYWRlTGlzdC5zaXplKCkpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIEZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uKGNhc2NhZGVMaXN0
W2luZGV4XS5nZXQoKSk7CiAgICAgICAgICAgICBpbmRleCAtPSBjYXNjYWRlTGlzdC5zaXplKCk7
CiAgICAgICAgIH0KICNpZiBQTEFURk9STShJT1MpCiAgICAgICAgIGVsc2UgaWYgKGlzVUlGb250
VGV4dFN0eWxlKGNzc0ZhbWlseSkpIHsKLSAgICAgICAgICAgIGF1dG8gY2FzY2FkZUxpc3QgPSBz
eXN0ZW1Gb250Q2FzY2FkZUxpc3QoKnRoaXMsIGNzc0ZhbWlseSwgU3lzdGVtRm9udERhdGFiYXNl
OjpDbGllbnRVc2U6OkZvclRleHRTdHlsZSwgc2hvdWxkQWxsb3dVc2VySW5zdGFsbGVkRm9udHMo
KSk7CisgICAgICAgICAgICBhdXRvIGNhc2NhZGVMaXN0ID0gc3lzdGVtRm9udENhc2NhZGVMaXN0
KCp0aGlzLCBjc3NGYW1pbHksIFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0OjpDbGllbnRVc2U6
OkZvclRleHRTdHlsZSwgc2hvdWxkQWxsb3dVc2VySW5zdGFsbGVkRm9udHMoKSk7CiAgICAgICAg
ICAgICBpZiAoaW5kZXggPCBjYXNjYWRlTGlzdC5zaXplKCkpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIEZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uKGNhc2NhZGVMaXN0W2luZGV4XS5nZXQoKSk7CiAg
ICAgICAgICAgICBpbmRleCAtPSBjYXNjYWRlTGlzdC5zaXplKCk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9TeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
U3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1N5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE3NyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dC5oIgor
CisjaWYgVVNFX1BMQVRGT1JNX1NZU1RFTV9GQUxMQkFDS19MSVNUCisKKyNpbmNsdWRlICJGb250
Q2FjaGUuaCIKKyNpbmNsdWRlICJGb250Q2FzY2FkZURlc2NyaXB0aW9uLmgiCisKKyNpZiBQTEFU
Rk9STShJT1MpCisjaW5jbHVkZSAiUmVuZGVyVGhlbWVJT1MuaCIKKyNlbmRpZgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK1N5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0JiBTeXN0ZW1Gb250RGF0
YWJhc2VDb3JlVGV4dDo6c2luZ2xldG9uKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
U3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQ+IGRhdGFiYXNlID0gU3lzdGVtRm9udERhdGFiYXNl
Q29yZVRleHQoKTsKKyAgICByZXR1cm4gZGF0YWJhc2UuZ2V0KCk7Cit9CisKK1N5c3RlbUZvbnRE
YXRhYmFzZUNvcmVUZXh0OjpTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dCgpCit7Cit9CisKK1Zl
Y3RvcjxSZXRhaW5QdHI8Q1RGb250RGVzY3JpcHRvclJlZj4+IFN5c3RlbUZvbnREYXRhYmFzZUNv
cmVUZXh0OjpzeXN0ZW1Gb250Q2FzY2FkZUxpc3QoY29uc3QgQ2FzY2FkZUxpc3RQYXJhbWV0ZXJz
JiBwYXJhbWV0ZXJzLCBDbGllbnRVc2UgY2xpZW50VXNlKQoreworICAgIEFTU0VSVCghcGFyYW1l
dGVycy5mb250TmFtZS5pc051bGwoKSk7CisgICAgcmV0dXJuIG1fc3lzdGVtRm9udENhY2hlLmVu
c3VyZShwYXJhbWV0ZXJzLCBbJl0geworICAgICAgICBhdXRvIGxvY2FsZVN0cmluZyA9IHBhcmFt
ZXRlcnMubG9jYWxlLnN0cmluZygpLmNyZWF0ZUNGU3RyaW5nKCk7CisgICAgICAgIFJldGFpblB0
cjxDVEZvbnRSZWY+IHN5c3RlbUZvbnQ7CisgICAgICAgIGlmIChjbGllbnRVc2UgPT0gQ2xpZW50
VXNlOjpGb3JTeXN0ZW1VSSkgeworICAgICAgICAgICAgc3lzdGVtRm9udCA9IGFkb3B0Q0YoQ1RG
b250Q3JlYXRlVUlGb250Rm9yTGFuZ3VhZ2Uoa0NURm9udFVJRm9udFN5c3RlbSwgcGFyYW1ldGVy
cy5zaXplLCBsb2NhbGVTdHJpbmcuZ2V0KCkpKTsKKyAgICAgICAgICAgIEFTU0VSVChzeXN0ZW1G
b250KTsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBVc2UgYXBwbHlXZWlnaHRJdGFsaWNzQW5kRmFs
bGJhY2tCZWhhdmlvcigpIGluIGJvdGggY2FzZXMgb25jZSA8cmRhcjovL3Byb2JsZW0vMzMwNDYw
NDE+IGlzIGZpeGVkLgorICAgICAgICAgICAgc3lzdGVtRm9udCA9IGFwcGx5V2VpZ2h0SXRhbGlj
c0FuZEZhbGxiYWNrQmVoYXZpb3Ioc3lzdGVtRm9udC5nZXQoKSwgcGFyYW1ldGVycy53ZWlnaHQs
IHBhcmFtZXRlcnMuaXRhbGljLCBwYXJhbWV0ZXJzLnNpemUsIHBhcmFtZXRlcnMuYWxsb3dVc2Vy
SW5zdGFsbGVkRm9udHMpOworICAgICAgICB9IGVsc2UgeworI2lmIFBMQVRGT1JNKElPUykKKyAg
ICAgICAgICAgIEFTU0VSVChjbGllbnRVc2UgPT0gQ2xpZW50VXNlOjpGb3JUZXh0U3R5bGUpOwor
ICAgICAgICAgICAgYXV0byBmb250RGVzY3JpcHRvciA9IGFkb3B0Q0YoQ1RGb250RGVzY3JpcHRv
ckNyZWF0ZVdpdGhUZXh0U3R5bGUocGFyYW1ldGVycy5mb250TmFtZS5zdHJpbmcoKS5jcmVhdGVD
RlN0cmluZygpLmdldCgpLCBSZW5kZXJUaGVtZUlPUzo6Y29udGVudFNpemVDYXRlZ29yeSgpLCBu
dWxscHRyKSk7CisgICAgICAgICAgICBDVEZvbnRTeW1ib2xpY1RyYWl0cyB0cmFpdHMgPSAocGFy
YW1ldGVycy53ZWlnaHQgPj0ga0NURm9udFdlaWdodFNlbWlib2xkID8ga0NURm9udFRyYWl0Qm9s
ZCA6IDApIHwgKHBhcmFtZXRlcnMuaXRhbGljID8ga0NURm9udFRyYWl0SXRhbGljIDogMCk7Cisg
ICAgICAgICAgICBpZiAodHJhaXRzKQorICAgICAgICAgICAgICAgIGZvbnREZXNjcmlwdG9yID0g
YWRvcHRDRihDVEZvbnREZXNjcmlwdG9yQ3JlYXRlQ29weVdpdGhTeW1ib2xpY1RyYWl0cyhmb250
RGVzY3JpcHRvci5nZXQoKSwgdHJhaXRzLCB0cmFpdHMpKTsKKyAgICAgICAgICAgIHN5c3RlbUZv
bnQgPSBjcmVhdGVGb250Rm9ySW5zdGFsbGVkRm9udHMoZm9udERlc2NyaXB0b3IuZ2V0KCksIHBh
cmFtZXRlcnMuc2l6ZSwgcGFyYW1ldGVycy5hbGxvd1VzZXJJbnN0YWxsZWRGb250cyk7CisjZWxz
ZQorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisjZW5kaWYKKyAgICAgICAgfQor
ICAgICAgICBBU1NFUlQoc3lzdGVtRm9udCk7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gY29tcHV0
ZUNhc2NhZGVMaXN0KHN5c3RlbUZvbnQuZ2V0KCksIGxvY2FsZVN0cmluZy5nZXQoKSk7CisgICAg
ICAgIEFTU0VSVCghcmVzdWx0LmlzRW1wdHkoKSk7CisgICAgICAgIHJldHVybiByZXN1bHQ7Cisg
ICAgfSkuaXRlcmF0b3ItPnZhbHVlOworfQorCit2b2lkIFN5c3RlbUZvbnREYXRhYmFzZUNvcmVU
ZXh0OjpjbGVhcigpCit7CisgICAgbV9zeXN0ZW1Gb250Q2FjaGUuY2xlYXIoKTsKK30KKworUmV0
YWluUHRyPENURm9udFJlZj4gU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQ6OmFwcGx5V2VpZ2h0
SXRhbGljc0FuZEZhbGxiYWNrQmVoYXZpb3IoQ1RGb250UmVmIGZvbnQsIENHRmxvYXQgd2VpZ2h0
LCBib29sIGl0YWxpYywgZmxvYXQgc2l6ZSwgQWxsb3dVc2VySW5zdGFsbGVkRm9udHMgYWxsb3dV
c2VySW5zdGFsbGVkRm9udHMpCit7CisgICAgYXV0byB3ZWlnaHROdW1iZXIgPSBhZG9wdENGKENG
TnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRk51bWJlckNHRmxvYXRUeXBlLCAm
d2VpZ2h0KSk7CisgICAgY29uc3QgZmxvYXQgc3lzdGVtRm9udEl0YWxpY1Nsb3BlID0gMC4wNzsK
KyAgICBmbG9hdCBpdGFsaWNzUmF3TnVtYmVyID0gaXRhbGljID8gc3lzdGVtRm9udEl0YWxpY1Ns
b3BlIDogMDsKKyAgICBhdXRvIGl0YWxpY3NOdW1iZXIgPSBhZG9wdENGKENGTnVtYmVyQ3JlYXRl
KGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRk51bWJlckZsb2F0VHlwZSwgJml0YWxpY3NSYXdOdW1i
ZXIpKTsKKyAgICBDRlR5cGVSZWYgdHJhaXRzS2V5c1tdID0geyBrQ1RGb250V2VpZ2h0VHJhaXQs
IGtDVEZvbnRTbGFudFRyYWl0LCBrQ1RGb250VUlGb250RGVzaWduVHJhaXQgfTsKKyAgICBDRlR5
cGVSZWYgdHJhaXRzVmFsdWVzW10gPSB7IHdlaWdodE51bWJlci5nZXQoKSwgaXRhbGljc051bWJl
ci5nZXQoKSwga0NGQm9vbGVhblRydWUgfTsKKyAgICBhdXRvIHRyYWl0c0RpY3Rpb25hcnkgPSBh
ZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCB0cmFpdHNLZXlz
LCB0cmFpdHNWYWx1ZXMsIFdURl9BUlJBWV9MRU5HVEgodHJhaXRzS2V5cyksICZrQ0ZUeXBlRGlj
dGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsK
KyAgICBhdXRvIGF0dHJpYnV0ZXMgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUo
a0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAm
a0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOworICAgIENGRGljdGlvbmFyeUFkZFZh
bHVlKGF0dHJpYnV0ZXMuZ2V0KCksIGtDVEZvbnRUcmFpdHNBdHRyaWJ1dGUsIHRyYWl0c0RpY3Rp
b25hcnkuZ2V0KCkpOworICAgIGFkZEF0dHJpYnV0ZXNGb3JJbnN0YWxsZWRGb250cyhhdHRyaWJ1
dGVzLmdldCgpLCBhbGxvd1VzZXJJbnN0YWxsZWRGb250cyk7CisgICAgYXV0byBtb2RpZmljYXRp
b24gPSBhZG9wdENGKENURm9udERlc2NyaXB0b3JDcmVhdGVXaXRoQXR0cmlidXRlcyhhdHRyaWJ1
dGVzLmdldCgpKSk7CisgICAgcmV0dXJuIGFkb3B0Q0YoQ1RGb250Q3JlYXRlQ29weVdpdGhBdHRy
aWJ1dGVzKGZvbnQsIHNpemUsIG51bGxwdHIsIG1vZGlmaWNhdGlvbi5nZXQoKSkpOworfQorCitS
ZXRhaW5QdHI8Q1RGb250RGVzY3JpcHRvclJlZj4gU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQ6
OnJlbW92ZUNhc2NhZGVMaXN0KENURm9udERlc2NyaXB0b3JSZWYgZm9udERlc2NyaXB0b3IpCit7
CisgICAgYXV0byBlbXB0eUFycmF5ID0gYWRvcHRDRihDRkFycmF5Q3JlYXRlKGtDRkFsbG9jYXRv
ckRlZmF1bHQsIG51bGxwdHIsIDAsICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpKTsKKyAgICBDRlR5
cGVSZWYgZmFsbGJhY2tEaWN0aW9uYXJ5S2V5c1tdID0geyBrQ1RGb250Q2FzY2FkZUxpc3RBdHRy
aWJ1dGUgfTsKKyAgICBDRlR5cGVSZWYgZmFsbGJhY2tEaWN0aW9uYXJ5VmFsdWVzW10gPSB7IGVt
cHR5QXJyYXkuZ2V0KCkgfTsKKyAgICBhdXRvIGZhbGxiYWNrRGljdGlvbmFyeSA9IGFkb3B0Q0Yo
Q0ZEaWN0aW9uYXJ5Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGZhbGxiYWNrRGljdGlvbmFy
eUtleXMsIGZhbGxiYWNrRGljdGlvbmFyeVZhbHVlcywgV1RGX0FSUkFZX0xFTkdUSChmYWxsYmFj
a0RpY3Rpb25hcnlLZXlzKSwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlw
ZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOworICAgIGF1dG8gbW9kaWZpZWRGb250RGVzY3Jp
cHRvciA9IGFkb3B0Q0YoQ1RGb250RGVzY3JpcHRvckNyZWF0ZUNvcHlXaXRoQXR0cmlidXRlcyhm
b250RGVzY3JpcHRvciwgZmFsbGJhY2tEaWN0aW9uYXJ5LmdldCgpKSk7CisgICAgcmV0dXJuIG1v
ZGlmaWVkRm9udERlc2NyaXB0b3I7Cit9CisKK1ZlY3RvcjxSZXRhaW5QdHI8Q1RGb250RGVzY3Jp
cHRvclJlZj4+IFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0Ojpjb21wdXRlQ2FzY2FkZUxpc3Qo
Q1RGb250UmVmIGZvbnQsIENGU3RyaW5nUmVmIGxvY2FsZSkKK3sKKyAgICBDRlR5cGVSZWYgYXJy
YXlWYWx1ZXNbXSA9IHsgbG9jYWxlIH07CisgICAgYXV0byBsb2NhbGVBcnJheSA9IGFkb3B0Q0Yo
Q0ZBcnJheUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBhcnJheVZhbHVlcywgV1RGX0FSUkFZ
X0xFTkdUSChhcnJheVZhbHVlcyksICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpKTsKKyAgICBhdXRv
IGNhc2NhZGVMaXN0ID0gYWRvcHRDRihDVEZvbnRDb3B5RGVmYXVsdENhc2NhZGVMaXN0Rm9yTGFu
Z3VhZ2VzKGZvbnQsIGxvY2FsZUFycmF5LmdldCgpKSk7CisgICAgVmVjdG9yPFJldGFpblB0cjxD
VEZvbnREZXNjcmlwdG9yUmVmPj4gcmVzdWx0OworICAgIC8vIFdlYktpdCBoYW5kbGVzIHRoZSBj
YXNjYWRlIGxpc3QsIGFuZCBXZWJLaXQgMidzIElQQyBjb2RlIGRvZXNuJ3Qga25vdyBob3cgdG8g
c2VyaWFsaXplIENvcmUgVGV4dCdzIGNhc2NhZGUgbGlzdC4KKyAgICByZXN1bHQuYXBwZW5kKHJl
bW92ZUNhc2NhZGVMaXN0KGFkb3B0Q0YoQ1RGb250Q29weUZvbnREZXNjcmlwdG9yKGZvbnQpKS5n
ZXQoKSkpOworICAgIGlmIChjYXNjYWRlTGlzdCkgeworICAgICAgICBDRkluZGV4IGFycmF5TGVu
Z3RoID0gQ0ZBcnJheUdldENvdW50KGNhc2NhZGVMaXN0LmdldCgpKTsKKyAgICAgICAgZm9yIChD
RkluZGV4IGkgPSAwOyBpIDwgYXJyYXlMZW5ndGg7ICsraSkKKyAgICAgICAgICAgIHJlc3VsdC5h
cHBlbmQoc3RhdGljX2Nhc3Q8Q1RGb250RGVzY3JpcHRvclJlZj4oQ0ZBcnJheUdldFZhbHVlQXRJ
bmRleChjYXNjYWRlTGlzdC5nZXQoKSwgaSkpKTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsK
K30KKworU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQ6OkNhc2NhZGVMaXN0UGFyYW1ldGVycyBT
eXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dDo6c3lzdGVtRm9udFBhcmFtZXRlcnMoY29uc3QgRm9u
dENhc2NhZGVEZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24sIGNvbnN0IEF0b21pY1N0cmluZyYgZmFt
aWx5TmFtZSwgQ2xpZW50VXNlIGNsaWVudFVzZSwgQWxsb3dVc2VySW5zdGFsbGVkRm9udHMgYWxs
b3dVc2VySW5zdGFsbGVkRm9udHMpCit7CisgICAgQ2FzY2FkZUxpc3RQYXJhbWV0ZXJzIHJlc3Vs
dDsKKyAgICByZXN1bHQubG9jYWxlID0gZGVzY3JpcHRpb24ubG9jYWxlKCk7CisgICAgcmVzdWx0
LnNpemUgPSBkZXNjcmlwdGlvbi5jb21wdXRlZFNpemUoKTsKKyAgICByZXN1bHQuaXRhbGljID0g
aXNJdGFsaWMoZGVzY3JpcHRpb24uaXRhbGljKCkpOworCisgICAgYXV0byB3ZWlnaHQgPSBkZXNj
cmlwdGlvbi53ZWlnaHQoKTsKKyAgICBpZiAoRm9udENhY2hlOjpzaW5nbGV0b24oKS5zaG91bGRN
b2NrQm9sZFN5c3RlbUZvbnRGb3JBY2Nlc3NpYmlsaXR5KCkpCisgICAgICAgIHdlaWdodCA9IHdl
aWdodCArIEZvbnRTZWxlY3Rpb25WYWx1ZSgyMDApOworCisgICAgaWYgKHdlaWdodCA8IEZvbnRT
ZWxlY3Rpb25WYWx1ZSgxNTApKQorICAgICAgICByZXN1bHQud2VpZ2h0ID0ga0NURm9udFdlaWdo
dFVsdHJhTGlnaHQ7CisgICAgZWxzZSBpZiAod2VpZ2h0IDwgRm9udFNlbGVjdGlvblZhbHVlKDI1
MCkpCisgICAgICAgIHJlc3VsdC53ZWlnaHQgPSBrQ1RGb250V2VpZ2h0VGhpbjsKKyAgICBlbHNl
IGlmICh3ZWlnaHQgPCBGb250U2VsZWN0aW9uVmFsdWUoMzUwKSkKKyAgICAgICAgcmVzdWx0Lndl
aWdodCA9IGtDVEZvbnRXZWlnaHRMaWdodDsKKyAgICBlbHNlIGlmICh3ZWlnaHQgPCBGb250U2Vs
ZWN0aW9uVmFsdWUoNDUwKSkKKyAgICAgICAgcmVzdWx0LndlaWdodCA9IGtDVEZvbnRXZWlnaHRS
ZWd1bGFyOworICAgIGVsc2UgaWYgKHdlaWdodCA8IEZvbnRTZWxlY3Rpb25WYWx1ZSg1NTApKQor
ICAgICAgICByZXN1bHQud2VpZ2h0ID0ga0NURm9udFdlaWdodE1lZGl1bTsKKyAgICBlbHNlIGlm
ICh3ZWlnaHQgPCBGb250U2VsZWN0aW9uVmFsdWUoNjUwKSkKKyAgICAgICAgcmVzdWx0LndlaWdo
dCA9IGtDVEZvbnRXZWlnaHRTZW1pYm9sZDsKKyAgICBlbHNlIGlmICh3ZWlnaHQgPCBGb250U2Vs
ZWN0aW9uVmFsdWUoNzUwKSkKKyAgICAgICAgcmVzdWx0LndlaWdodCA9IGtDVEZvbnRXZWlnaHRC
b2xkOworICAgIGVsc2UgaWYgKHdlaWdodCA8IEZvbnRTZWxlY3Rpb25WYWx1ZSg4NTApKQorICAg
ICAgICByZXN1bHQud2VpZ2h0ID0ga0NURm9udFdlaWdodEhlYXZ5OworICAgIGVsc2UKKyAgICAg
ICAgcmVzdWx0LndlaWdodCA9IGtDVEZvbnRXZWlnaHRCbGFjazsKKworICAgIGlmIChjbGllbnRV
c2UgPT0gQ2xpZW50VXNlOjpGb3JTeXN0ZW1VSSkgeworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8QXRvbWljU3RyaW5nPiBzeXN0ZW1VSSA9IEF0b21pY1N0cmluZygic3lzdGVtLXVpIiwg
QXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgICAgIHJlc3VsdC5mb250
TmFtZSA9IHN5c3RlbVVJLmdldCgpOworICAgIH0gZWxzZSB7CisgICAgICAgIEFTU0VSVChjbGll
bnRVc2UgPT0gQ2xpZW50VXNlOjpGb3JUZXh0U3R5bGUpOworICAgICAgICByZXN1bHQuZm9udE5h
bWUgPSBmYW1pbHlOYW1lOworICAgIH0KKworICAgIHJlc3VsdC5hbGxvd1VzZXJJbnN0YWxsZWRG
b250cyA9IGFsbG93VXNlckluc3RhbGxlZEZvbnRzOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30K
KworVmVjdG9yPFJldGFpblB0cjxDVEZvbnREZXNjcmlwdG9yUmVmPj4gU3lzdGVtRm9udERhdGFi
YXNlQ29yZVRleHQ6OnN5c3RlbUZvbnRDYXNjYWRlTGlzdChjb25zdCBGb250Q2FzY2FkZURlc2Ny
aXB0aW9uJiBkZXNjcmlwdGlvbiwgY29uc3QgQXRvbWljU3RyaW5nJiBjc3NGYW1pbHksIENsaWVu
dFVzZSBjbGllbnRVc2UsIEFsbG93VXNlckluc3RhbGxlZEZvbnRzIGFsbG93VXNlckluc3RhbGxl
ZEZvbnRzKQoreworICAgIHJldHVybiBzeXN0ZW1Gb250Q2FzY2FkZUxpc3Qoc3lzdGVtRm9udFBh
cmFtZXRlcnMoZGVzY3JpcHRpb24sIGNzc0ZhbWlseSwgY2xpZW50VXNlLCBhbGxvd1VzZXJJbnN0
YWxsZWRGb250cyksIGNsaWVudFVzZSk7Cit9CisKK30KKworI2VuZGlmCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9TeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L1N5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0LmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQu
aAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEyMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSAiRm9udERlc2NyaXB0aW9uLmgiCisjaW5jbHVkZSA8cGFsL3NwaS9j
b2NvYS9Db3JlVGV4dFNQSS5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8
d3RmL0hhc2hUcmFpdHMuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KKyNp
bmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmdIYXNoLmg+CisKKyNpZiBVU0VfUExBVEZPUk1f
U1lTVEVNX0ZBTExCQUNLX0xJU1QKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTeXN0
ZW1Gb250RGF0YWJhc2VDb3JlVGV4dCB7CitwdWJsaWM6CisgICAgc3RydWN0IENhc2NhZGVMaXN0
UGFyYW1ldGVycyB7CisgICAgICAgIENhc2NhZGVMaXN0UGFyYW1ldGVycygpCisgICAgICAgIHsK
KyAgICAgICAgfQorCisgICAgICAgIENhc2NhZGVMaXN0UGFyYW1ldGVycyhXVEY6Okhhc2hUYWJs
ZURlbGV0ZWRWYWx1ZVR5cGUpCisgICAgICAgICAgICA6IGZvbnROYW1lKFdURjo6SGFzaFRhYmxl
RGVsZXRlZFZhbHVlKQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICBib29sIGlzSGFz
aFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJu
IGZvbnROYW1lLmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7CisgICAgICAgIH0KKworICAgICAg
ICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ2FzY2FkZUxpc3RQYXJhbWV0ZXJzJiBvdGhlcikgY29u
c3QKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGZvbnROYW1lID09IG90aGVyLmZvbnRO
YW1lCisgICAgICAgICAgICAgICAgJiYgbG9jYWxlID09IG90aGVyLmxvY2FsZQorICAgICAgICAg
ICAgICAgICYmIHdlaWdodCA9PSBvdGhlci53ZWlnaHQKKyAgICAgICAgICAgICAgICAmJiBzaXpl
ID09IG90aGVyLnNpemUKKyAgICAgICAgICAgICAgICAmJiBhbGxvd1VzZXJJbnN0YWxsZWRGb250
cyA9PSBvdGhlci5hbGxvd1VzZXJJbnN0YWxsZWRGb250cworICAgICAgICAgICAgICAgICYmIGl0
YWxpYyA9PSBvdGhlci5pdGFsaWM7CisgICAgICAgIH0KKworICAgICAgICB1bnNpZ25lZCBoYXNo
KCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgSW50ZWdlckhhc2hlciBoYXNoZXI7Cisg
ICAgICAgICAgICBBU1NFUlQoIWZvbnROYW1lLmlzTnVsbCgpKTsKKyAgICAgICAgICAgIGhhc2hl
ci5hZGQobG9jYWxlLmV4aXN0aW5nSGFzaCgpKTsKKyAgICAgICAgICAgIGhhc2hlci5hZGQobG9j
YWxlLmlzTnVsbCgpID8gMCA6IGxvY2FsZS5leGlzdGluZ0hhc2goKSk7CisgICAgICAgICAgICBo
YXNoZXIuYWRkKHdlaWdodCk7CisgICAgICAgICAgICBoYXNoZXIuYWRkKHNpemUpOworICAgICAg
ICAgICAgaGFzaGVyLmFkZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYWxsb3dVc2VySW5zdGFsbGVk
Rm9udHMpKTsKKyAgICAgICAgICAgIGhhc2hlci5hZGQoaXRhbGljKTsKKyAgICAgICAgICAgIHJl
dHVybiBoYXNoZXIuaGFzaCgpOworICAgICAgICB9CisKKyAgICAgICAgc3RydWN0IENhc2NhZGVM
aXN0UGFyYW1ldGVyc0hhc2ggOiBXVEY6OlBhaXJIYXNoPEF0b21pY1N0cmluZywgZmxvYXQ+IHsK
KyAgICAgICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IENhc2NhZGVMaXN0UGFyYW1l
dGVycyYgcGFyYW1ldGVycykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4g
cGFyYW1ldGVycy5oYXNoKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzdGF0aWMgYm9v
bCBlcXVhbChjb25zdCBDYXNjYWRlTGlzdFBhcmFtZXRlcnMmIGEsIGNvbnN0IENhc2NhZGVMaXN0
UGFyYW1ldGVycyYgYikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gYSA9
PSBiOworICAgICAgICAgICAgfQorICAgICAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRv
Q29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSB0cnVlOworICAgICAgICB9OworCisgICAgICAgIEF0
b21pY1N0cmluZyBmb250TmFtZTsKKyAgICAgICAgQXRvbWljU3RyaW5nIGxvY2FsZTsKKyAgICAg
ICAgQ0dGbG9hdCB3ZWlnaHQgeyAwIH07CisgICAgICAgIGZsb2F0IHNpemUgeyAwIH07CisgICAg
ICAgIEFsbG93VXNlckluc3RhbGxlZEZvbnRzIGFsbG93VXNlckluc3RhbGxlZEZvbnRzIHsgQWxs
b3dVc2VySW5zdGFsbGVkRm9udHM6Ok5vIH07CisgICAgICAgIGJvb2wgaXRhbGljIHsgZmFsc2Ug
fTsKKyAgICB9OworCisgICAgc3RhdGljIFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0JiBzaW5n
bGV0b24oKTsKKworICAgIGVudW0gY2xhc3MgQ2xpZW50VXNlIHsgRm9yU3lzdGVtVUksIEZvclRl
eHRTdHlsZSB9OworCisgICAgVmVjdG9yPFJldGFpblB0cjxDVEZvbnREZXNjcmlwdG9yUmVmPj4g
c3lzdGVtRm9udENhc2NhZGVMaXN0KGNvbnN0IEZvbnRDYXNjYWRlRGVzY3JpcHRpb24mLCBjb25z
dCBBdG9taWNTdHJpbmcmIGNzc0ZhbWlseSwgQ2xpZW50VXNlLCBBbGxvd1VzZXJJbnN0YWxsZWRG
b250cyk7CisgICAgdm9pZCBjbGVhcigpOworCitwcml2YXRlOgorICAgIFN5c3RlbUZvbnREYXRh
YmFzZUNvcmVUZXh0KCk7CisKKyAgICBWZWN0b3I8UmV0YWluUHRyPENURm9udERlc2NyaXB0b3JS
ZWY+PiBzeXN0ZW1Gb250Q2FzY2FkZUxpc3QoY29uc3QgQ2FzY2FkZUxpc3RQYXJhbWV0ZXJzJiwg
Q2xpZW50VXNlKTsKKworICAgIHN0YXRpYyBSZXRhaW5QdHI8Q1RGb250UmVmPiBhcHBseVdlaWdo
dEl0YWxpY3NBbmRGYWxsYmFja0JlaGF2aW9yKENURm9udFJlZiwgQ0dGbG9hdCB3ZWlnaHQsIGJv
b2wgaXRhbGljLCBmbG9hdCBzaXplLCBBbGxvd1VzZXJJbnN0YWxsZWRGb250cyk7CisgICAgc3Rh
dGljIFJldGFpblB0cjxDVEZvbnREZXNjcmlwdG9yUmVmPiByZW1vdmVDYXNjYWRlTGlzdChDVEZv
bnREZXNjcmlwdG9yUmVmKTsKKyAgICBzdGF0aWMgVmVjdG9yPFJldGFpblB0cjxDVEZvbnREZXNj
cmlwdG9yUmVmPj4gY29tcHV0ZUNhc2NhZGVMaXN0KENURm9udFJlZiwgQ0ZTdHJpbmdSZWYgbG9j
YWxlKTsKKyAgICBzdGF0aWMgQ2FzY2FkZUxpc3RQYXJhbWV0ZXJzIHN5c3RlbUZvbnRQYXJhbWV0
ZXJzKGNvbnN0IEZvbnRDYXNjYWRlRGVzY3JpcHRpb24mLCBjb25zdCBBdG9taWNTdHJpbmcmIGZh
bWlseU5hbWUsIENsaWVudFVzZSwgQWxsb3dVc2VySW5zdGFsbGVkRm9udHMpOworCisgICAgSGFz
aE1hcDxDYXNjYWRlTGlzdFBhcmFtZXRlcnMsIFZlY3RvcjxSZXRhaW5QdHI8Q1RGb250RGVzY3Jp
cHRvclJlZj4+LCBDYXNjYWRlTGlzdFBhcmFtZXRlcnM6OkNhc2NhZGVMaXN0UGFyYW1ldGVyc0hh
c2gsIFNpbXBsZUNsYXNzSGFzaFRyYWl0czxDYXNjYWRlTGlzdFBhcmFtZXRlcnM+PiBtX3N5c3Rl
bUZvbnRDYWNoZTsKK307CisKK30KKworI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>351784</attachid>
            <date>2018-10-08 10:06:25 -0700</date>
            <delta_ts>2018-10-08 10:22:18 -0700</delta_ts>
            <desc>patch</desc>
            <filename>systemfontdatabase-file-4.patch</filename>
            <type>text/plain</type>
            <size>36793</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzNjkxNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUyIEBACisyMDE4LTEwLTA4ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIFN5c3RlbUZvbnREYXRh
YmFzZSB0byBhIGZpbGUgb2YgaXRzIG93bgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTkwMzQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRHVt
ZXouCisKKyAgICAgICAgQWxzbyByZW5hbWUgaXQgdG8gU3lzdGVtRm9udERhdGFiYXNlQ29yZVRl
eHQgYXMgaXQgaXMgQ29yZVRleHQgc3BlY2lmaWMuCisKKyAgICAgICAgKiBTb3VyY2VzQ29jb2Eu
dHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RGVzY3JpcHRpb25Db2NvYS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGb250RGVzY3JpcHRpb246OmludmFsaWRhdGVDYWNoZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6c3lzdGVtRm9udENhc2NhZGVMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkZvbnRDYXNjYWRlRGVzY3JpcHRpb246OmVmZmVjdGl2ZUZhbWlseUNvdW50IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlRGVzY3JpcHRpb246OmVmZmVjdGl2ZUZhbWlseUF0
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN5c3RlbUZvbnREYXRhYmFzZTo6Q29yZVRleHRD
YXNjYWRlTGlzdFBhcmFtZXRlcnM6OkNvcmVUZXh0Q2FzY2FkZUxpc3RQYXJhbWV0ZXJzKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlN5c3RlbUZvbnREYXRhYmFzZTo6Q29yZVRleHRDYXNj
YWRlTGlzdFBhcmFtZXRlcnM6OmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlN5c3RlbUZvbnREYXRhYmFzZTo6Q29yZVRleHRDYXNjYWRl
TGlzdFBhcmFtZXRlcnM6Om9wZXJhdG9yPT0gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6U3lzdGVtRm9udERhdGFiYXNlOjpDb3JlVGV4dENhc2NhZGVMaXN0UGFyYW1ldGVyczo6
aGFzaCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTeXN0ZW1Gb250RGF0YWJh
c2U6OkNvcmVUZXh0Q2FzY2FkZUxpc3RQYXJhbWV0ZXJzOjpDb3JlVGV4dENhc2NhZGVMaXN0UGFy
YW1ldGVyc0hhc2g6Omhhc2gpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U3lzdGVtRm9u
dERhdGFiYXNlOjpDb3JlVGV4dENhc2NhZGVMaXN0UGFyYW1ldGVyczo6Q29yZVRleHRDYXNjYWRl
TGlzdFBhcmFtZXRlcnNIYXNoOjplcXVhbCk6IERlbGV0ZWQuCisgICAgICAgICgpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6U3lzdGVtRm9udERhdGFiYXNlOjpzaW5nbGV0b24pOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6U3lzdGVtRm9udERhdGFiYXNlOjpzeXN0ZW1Gb250Q2Fz
Y2FkZUxpc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U3lzdGVtRm9udERhdGFiYXNl
OjpjbGVhcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTeXN0ZW1Gb250RGF0YWJhc2U6
OlN5c3RlbUZvbnREYXRhYmFzZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTeXN0ZW1G
b250RGF0YWJhc2U6OmFwcGx5V2VpZ2h0SXRhbGljc0FuZEZhbGxiYWNrQmVoYXZpb3IpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6U3lzdGVtRm9udERhdGFiYXNlOjpyZW1vdmVDYXNjYWRl
TGlzdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTeXN0ZW1Gb250RGF0YWJhc2U6OmNv
bXB1dGVDYXNjYWRlTGlzdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpzeXN0ZW1Gb250
UGFyYW1ldGVycyk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
U3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0OjpzaW5nbGV0b24pOgorICAgICAgICAoV2ViQ29y
ZTo6U3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQ6OlN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0
KToKKyAgICAgICAgKFdlYkNvcmU6OlN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0OjpzeXN0ZW1G
b250Q2FzY2FkZUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3lzdGVtRm9udERhdGFiYXNlQ29y
ZVRleHQ6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OlN5c3RlbUZvbnREYXRhYmFzZUNvcmVU
ZXh0OjphcHBseVdlaWdodEl0YWxpY3NBbmRGYWxsYmFja0JlaGF2aW9yKToKKyAgICAgICAgKFdl
YkNvcmU6OlN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0OjpyZW1vdmVDYXNjYWRlTGlzdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dDo6Y29tcHV0ZUNhc2Nh
ZGVMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0Ojpz
eXN0ZW1Gb250UGFyYW1ldGVycyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
U3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpT
eXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dDo6Q2FzY2FkZUxpc3RQYXJhbWV0ZXJzOjpDYXNjYWRl
TGlzdFBhcmFtZXRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6U3lzdGVtRm9udERhdGFiYXNlQ29y
ZVRleHQ6OkNhc2NhZGVMaXN0UGFyYW1ldGVyczo6aXNIYXNoVGFibGVEZWxldGVkVmFsdWUgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6U3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQ6OkNhc2Nh
ZGVMaXN0UGFyYW1ldGVyczo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpT
eXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dDo6Q2FzY2FkZUxpc3RQYXJhbWV0ZXJzOjpoYXNoIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0OjpDYXNj
YWRlTGlzdFBhcmFtZXRlcnM6OkNhc2NhZGVMaXN0UGFyYW1ldGVyc0hhc2g6Omhhc2gpOgorICAg
ICAgICAoV2ViQ29yZTo6U3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQ6OkNhc2NhZGVMaXN0UGFy
YW1ldGVyczo6Q2FzY2FkZUxpc3RQYXJhbWV0ZXJzSGFzaDo6ZXF1YWwpOgorICAgICAgICAqIHBs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjLmNwcDoK
KwogMjAxOC0xMC0wOCAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAg
ICAgTW92ZSBGb250Q2FzY2FkZURlc2NyaXB0aW9uIHRvIGEgZmlsZSBvZiBpdHMgb3duCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQJKHJldmlzaW9uIDIzNjkxNCkKKysrIFNvdXJjZS9XZWJD
b3JlL1NvdXJjZXNDb2NvYS50eHQJKHdvcmtpbmcgY29weSkKQEAgLTMwNiw2ICszMDYsNyBAQCBw
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9IRVZDVXRpbGl0aWVzQ29jCiBwbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9JT1N1cmZhY2UubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZVBv
b2xDb2NvYS5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvTWVkaWFFbmdpbmVDb25maWd1cmF0
aW9uRmFjdG9yeUNvY29hLmNwcAorcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU3lzdGVtRm9udERh
dGFiYXNlQ29yZVRleHQuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJBY3Rpb25EaXNh
YmxpbmdDQUxheWVyRGVsZWdhdGUubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkNvcmVD
QUxheWVyRXh0cmFzLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJDb3JlRGVjb21wcmVz
c2lvblNlc3Npb24ubW0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIzNjkxNCkKKysrIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNDgx
MSw2ICs0ODExLDcgQEAKIAkJRTRERUFBMTgxN0E5M0RDMzAwMEUwNDMwIC8qIFN0eWxlVHJlZVJl
c29sdmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
NERFQUExNjE3QTkzREMzMDAwRTA0MzAgLyogU3R5bGVUcmVlUmVzb2x2ZXIuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFNEUyNDM4MzFEQUI5NTNF
MDBDMjZFNEIgLyogbWV0ZXJFbGVtZW50U2hhZG93LmNzcyBpbiBSZXNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRFMjQzODIxREFCOTUzRTAwQzI2RTRCIC8qIG1l
dGVyRWxlbWVudFNoYWRvdy5jc3MgKi87IH07CiAJCUU0RTM5QUZCMTMzMEVGQTgwMDNBQjI3NCAv
KiBMZWdhY3lUaWxlTGF5ZXJQb29sLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFNEUzOUFGQTEzMzBFRkE4MDAzQUIyNzQgLyogTGVnYWN5VGlsZUxheWVy
UG9vbC5oICovOyB9OworCQlFNEU4QjRFQzIxNkI3OUU1MDBCODgzNEQgLyogU3lzdGVtRm9udERh
dGFiYXNlQ29yZVRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEU0RThCNEVBMjE2Qjc5RTUwMEI4ODM0RCAvKiBTeXN0ZW1Gb250RGF0YWJhc2VDb3Jl
VGV4dC5oICovOyB9OwogCQlFNEU4QjRGNTIxNkI5NTY1MDBCODgzNEQgLyogRm9udENhc2NhZGVE
ZXNjcmlwdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTRFOEI0RjIyMTZCOEI2MDAwQjg4MzREIC8qIEZvbnRDYXNjYWRlRGVzY3JpcHRpb24uaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFNEU5QjEx
OTE4MTA5MTZGMDAzQUNDREYgLyogU2ltcGxlTGluZUxheW91dFJlc29sdmVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEU5QjExODE4MTA5MTZGMDAz
QUNDREYgLyogU2ltcGxlTGluZUxheW91dFJlc29sdmVyLmggKi87IH07CiAJCUU0RTlCMTFEMTgx
NDU2OUMwMDNBQ0NERiAvKiBTaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEU5QjExQzE4MTQ1NjlDMDAzQUND
REYgLyogU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5oICovOyB9OwpAQCAtMTQ1NDgsNiArMTQ1
NDksOCBAQAogCQlFNEUyNDM4MjFEQUI5NTNFMDBDMjZFNEIgLyogbWV0ZXJFbGVtZW50U2hhZG93
LmNzcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQuY3NzOyBwYXRoID0gbWV0ZXJFbGVtZW50U2hhZG93LmNzczsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTRFMzlBRkExMzMwRUZBODAwM0FCMjc0IC8q
IExlZ2FjeVRpbGVMYXllclBvb2wuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
TGVnYWN5VGlsZUxheWVyUG9vbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNEUz
OUFGQzEzMzBFRkM1MDAzQUIyNzQgLyogTGVnYWN5VGlsZUxheWVyUG9vbC5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IExlZ2FjeVRpbGVMYXllclBvb2wubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUU0RThCNEVBMjE2Qjc5RTUwMEI4ODM0RCAvKiBT
eXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlFNEU4QjRFRDIxNkI3OUY0MDBCODgzNEQgLyogU3lzdGVtRm9udERhdGFiYXNlQ29y
ZVRleHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3lzdGVtRm9u
dERhdGFiYXNlQ29yZVRleHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNEU4
QjRGMDIxNkI4QjVGMDBCODgzNEQgLyogRm9udENhc2NhZGVEZXNjcmlwdGlvbi5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb250Q2FzY2FkZURlc2NyaXB0aW9uLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTRFOEI0RjIyMTZCOEI2MDAwQjg4MzRE
IC8qIEZvbnRDYXNjYWRlRGVzY3JpcHRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRm9udENhc2NhZGVEZXNjcmlwdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFNEU5QjExODE4MTA5MTZGMDAzQUNDREYgLyogU2ltcGxlTGluZUxheW91dFJlc29sdmVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNpbXBsZUxpbmVMYXlvdXRSZXNv
bHZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjQwMjUsNiArMjQwMjgsOCBA
QAogCQkJCUFEOUZGNkUwMTkwODM5MUQwMDNCNjFFMCAvKiBJT1N1cmZhY2VQb29sQ29jb2EubW0g
Ki8sCiAJCQkJQ0RDNDhBQzgyMTQ5Q0YyQTAwMjRGRDU5IC8qIE1lZGlhRW5naW5lQ29uZmlndXJh
dGlvbkZhY3RvcnlDb2NvYS5jcHAgKi8sCiAJCQkJQ0RDNDhBQzcyMTQ5Q0YyQTAwMjRGRDU5IC8q
IE1lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnlDb2NvYS5oICovLAorCQkJCUU0RThCNEVE
MjE2Qjc5RjQwMEI4ODM0RCAvKiBTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dC5jcHAgKi8sCisJ
CQkJRTRFOEI0RUEyMTZCNzlFNTAwQjg4MzREIC8qIFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0
LmggKi8sCiAJCQkJNTI2NzI0RjIxQ0IyRkRGNjAwNzU5NzREIC8qIFRleHRUcmFja1JlcHJlc2Vu
dGF0aW9uQ29jb2EuaCAqLywKIAkJCQk1MjY3MjRGMTFDQjJGREY2MDA3NTk3NEQgLyogVGV4dFRy
YWNrUmVwcmVzZW50YXRpb25Db2NvYS5tbSAqLywKIAkJCQkyRDNFRjQ0NDE5MTc5MTVDMDAwMzQx
ODQgLyogV2ViQWN0aW9uRGlzYWJsaW5nQ0FMYXllckRlbGVnYXRlLmggKi8sCkBAIC0yNzQ5Myw2
ICsyNzQ5OCw3IEBACiAJCQkJNTczMDNCQkIyMDA2QzZFRTAwMzU1OTY1IC8qIENCT1JCaW5hcnku
aCBpbiBIZWFkZXJzICovLAogCQkJCTU3MzAzQkMxMjAwNkUwMEMwMDM1NTk2NSAvKiBDQk9SUmVh
ZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1NzMwM0JCOTIwMDZDNkVFMDAzNTU5NjUgLyogQ0JP
UlZhbHVlLmggaW4gSGVhZGVycyAqLywKKwkJCQlFNEU4QjRFQzIxNkI3OUU1MDBCODgzNEQgLyog
U3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3MzAzQkJB
MjAwNkM2RUUwMDM1NTk2NSAvKiBDQk9SV3JpdGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk2NTUw
QjY5RTA5OURGMDI3MDA5MEQ3ODEgLyogQ0RBVEFTZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlDREY0QjcxNjFFMDBCN0U1MDBFMjM1QTIgLyogQ0RNLmggaW4gSGVhZGVycyAqLywKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnREZXNjcmlwdGlvbkNv
Y29hLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9Gb250RGVzY3JpcHRpb25Db2NvYS5jcHAJKHJldmlzaW9uIDIzNjkxNCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnREZXNjcmlwdGlvbkNvY29hLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjYsMTc1ICsyNiwxMiBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIkZvbnREZXNjcmlwdGlvbi5oIgogCi0jaW5jbHVkZSAiRm9udENhY2hlLmgi
Ci0jaW5jbHVkZSAiRm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dC5oIgotI2luY2x1ZGUg
PHBhbC9zcGkvY29jb2EvQ29yZVRleHRTUEkuaD4KLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgot
I2luY2x1ZGUgPHd0Zi9IYXNoVHJhaXRzLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3Ry
aW5nLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nSGFzaC5oPgotCi0jaWYgUExB
VEZPUk0oSU9TKQotI2luY2x1ZGUgIlJlbmRlclRoZW1lSU9TLmgiCi0jZW5kaWYKKyNpbmNsdWRl
ICJTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dC5oIgogCiAjaWYgVVNFX1BMQVRGT1JNX1NZU1RF
TV9GQUxMQkFDS19MSVNUCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU3lzdGVtRm9u
dERhdGFiYXNlIHsKLXB1YmxpYzoKLSAgICBzdHJ1Y3QgQ29yZVRleHRDYXNjYWRlTGlzdFBhcmFt
ZXRlcnMgewotICAgICAgICBDb3JlVGV4dENhc2NhZGVMaXN0UGFyYW1ldGVycygpCi0gICAgICAg
IHsKLSAgICAgICAgfQotCi0gICAgICAgIENvcmVUZXh0Q2FzY2FkZUxpc3RQYXJhbWV0ZXJzKFdU
Rjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkKLSAgICAgICAgICAgIDogZm9udE5hbWUoV1RG
OjpIYXNoVGFibGVEZWxldGVkVmFsdWUpCi0gICAgICAgIHsKLSAgICAgICAgfQotCi0gICAgICAg
IGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdAotICAgICAgICB7Ci0gICAgICAg
ICAgICByZXR1cm4gZm9udE5hbWUuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsKLSAgICAgICAg
fQotCi0gICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDb3JlVGV4dENhc2NhZGVMaXN0UGFy
YW1ldGVycyYgb3RoZXIpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBmb250
TmFtZSA9PSBvdGhlci5mb250TmFtZQotICAgICAgICAgICAgICAgICYmIGxvY2FsZSA9PSBvdGhl
ci5sb2NhbGUKLSAgICAgICAgICAgICAgICAmJiB3ZWlnaHQgPT0gb3RoZXIud2VpZ2h0Ci0gICAg
ICAgICAgICAgICAgJiYgc2l6ZSA9PSBvdGhlci5zaXplCi0gICAgICAgICAgICAgICAgJiYgYWxs
b3dVc2VySW5zdGFsbGVkRm9udHMgPT0gb3RoZXIuYWxsb3dVc2VySW5zdGFsbGVkRm9udHMKLSAg
ICAgICAgICAgICAgICAmJiBpdGFsaWMgPT0gb3RoZXIuaXRhbGljOwotICAgICAgICB9Ci0KLSAg
ICAgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIEludGVn
ZXJIYXNoZXIgaGFzaGVyOwotICAgICAgICAgICAgQVNTRVJUKCFmb250TmFtZS5pc051bGwoKSk7
Ci0gICAgICAgICAgICBoYXNoZXIuYWRkKGxvY2FsZS5leGlzdGluZ0hhc2goKSk7Ci0gICAgICAg
ICAgICBoYXNoZXIuYWRkKGxvY2FsZS5pc051bGwoKSA/IDAgOiBsb2NhbGUuZXhpc3RpbmdIYXNo
KCkpOwotICAgICAgICAgICAgaGFzaGVyLmFkZCh3ZWlnaHQpOwotICAgICAgICAgICAgaGFzaGVy
LmFkZChzaXplKTsKLSAgICAgICAgICAgIGhhc2hlci5hZGQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KGFsbG93VXNlckluc3RhbGxlZEZvbnRzKSk7Ci0gICAgICAgICAgICBoYXNoZXIuYWRkKGl0YWxp
Yyk7Ci0gICAgICAgICAgICByZXR1cm4gaGFzaGVyLmhhc2goKTsKLSAgICAgICAgfQotCi0gICAg
ICAgIHN0cnVjdCBDb3JlVGV4dENhc2NhZGVMaXN0UGFyYW1ldGVyc0hhc2ggOiBXVEY6OlBhaXJI
YXNoPEF0b21pY1N0cmluZywgZmxvYXQ+IHsKLSAgICAgICAgICAgIHN0YXRpYyB1bnNpZ25lZCBo
YXNoKGNvbnN0IENvcmVUZXh0Q2FzY2FkZUxpc3RQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQotICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBwYXJhbWV0ZXJzLmhhc2goKTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IENvcmVUZXh0
Q2FzY2FkZUxpc3RQYXJhbWV0ZXJzJiBhLCBjb25zdCBDb3JlVGV4dENhc2NhZGVMaXN0UGFyYW1l
dGVycyYgYikKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gYSA9PSBiOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFy
ZVRvRW1wdHlPckRlbGV0ZWQgPSB0cnVlOwotICAgICAgICB9OwotCi0gICAgICAgIEF0b21pY1N0
cmluZyBmb250TmFtZTsKLSAgICAgICAgQXRvbWljU3RyaW5nIGxvY2FsZTsKLSAgICAgICAgQ0dG
bG9hdCB3ZWlnaHQgeyAwIH07Ci0gICAgICAgIGZsb2F0IHNpemUgeyAwIH07Ci0gICAgICAgIEFs
bG93VXNlckluc3RhbGxlZEZvbnRzIGFsbG93VXNlckluc3RhbGxlZEZvbnRzIHsgQWxsb3dVc2Vy
SW5zdGFsbGVkRm9udHM6Ok5vIH07Ci0gICAgICAgIGJvb2wgaXRhbGljIHsgZmFsc2UgfTsKLSAg
ICB9OwotCi0gICAgc3RhdGljIFN5c3RlbUZvbnREYXRhYmFzZSYgc2luZ2xldG9uKCkKLSAgICB7
Ci0gICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTeXN0ZW1Gb250RGF0YWJhc2U+IGRhdGFi
YXNlID0gU3lzdGVtRm9udERhdGFiYXNlKCk7Ci0gICAgICAgIHJldHVybiBkYXRhYmFzZS5nZXQo
KTsKLSAgICB9Ci0KLSAgICBlbnVtIGNsYXNzIENsaWVudFVzZSB7IEZvclN5c3RlbVVJLCBGb3JU
ZXh0U3R5bGUgfTsKLQotICAgIFZlY3RvcjxSZXRhaW5QdHI8Q1RGb250RGVzY3JpcHRvclJlZj4+
IHN5c3RlbUZvbnRDYXNjYWRlTGlzdChjb25zdCBDb3JlVGV4dENhc2NhZGVMaXN0UGFyYW1ldGVy
cyYgcGFyYW1ldGVycywgQ2xpZW50VXNlIGNsaWVudFVzZSkKLSAgICB7Ci0gICAgICAgIEFTU0VS
VCghcGFyYW1ldGVycy5mb250TmFtZS5pc051bGwoKSk7Ci0gICAgICAgIHJldHVybiBtX3N5c3Rl
bUZvbnRDYWNoZS5lbnN1cmUocGFyYW1ldGVycywgWyZdIHsKLSAgICAgICAgICAgIGF1dG8gbG9j
YWxlU3RyaW5nID0gcGFyYW1ldGVycy5sb2NhbGUuc3RyaW5nKCkuY3JlYXRlQ0ZTdHJpbmcoKTsK
LSAgICAgICAgICAgIFJldGFpblB0cjxDVEZvbnRSZWY+IHN5c3RlbUZvbnQ7Ci0gICAgICAgICAg
ICBpZiAoY2xpZW50VXNlID09IENsaWVudFVzZTo6Rm9yU3lzdGVtVUkpIHsKLSAgICAgICAgICAg
ICAgICBzeXN0ZW1Gb250ID0gYWRvcHRDRihDVEZvbnRDcmVhdGVVSUZvbnRGb3JMYW5ndWFnZShr
Q1RGb250VUlGb250U3lzdGVtLCBwYXJhbWV0ZXJzLnNpemUsIGxvY2FsZVN0cmluZy5nZXQoKSkp
OwotICAgICAgICAgICAgICAgIEFTU0VSVChzeXN0ZW1Gb250KTsKLSAgICAgICAgICAgICAgICAv
LyBGSVhNRTogVXNlIGFwcGx5V2VpZ2h0SXRhbGljc0FuZEZhbGxiYWNrQmVoYXZpb3IoKSBpbiBi
b3RoIGNhc2VzIG9uY2UgPHJkYXI6Ly9wcm9ibGVtLzMzMDQ2MDQxPiBpcyBmaXhlZC4KLSAgICAg
ICAgICAgICAgICBzeXN0ZW1Gb250ID0gYXBwbHlXZWlnaHRJdGFsaWNzQW5kRmFsbGJhY2tCZWhh
dmlvcihzeXN0ZW1Gb250LmdldCgpLCBwYXJhbWV0ZXJzLndlaWdodCwgcGFyYW1ldGVycy5pdGFs
aWMsIHBhcmFtZXRlcnMuc2l6ZSwgcGFyYW1ldGVycy5hbGxvd1VzZXJJbnN0YWxsZWRGb250cyk7
Ci0gICAgICAgICAgICB9IGVsc2UgewotI2lmIFBMQVRGT1JNKElPUykKLSAgICAgICAgICAgICAg
ICBBU1NFUlQoY2xpZW50VXNlID09IENsaWVudFVzZTo6Rm9yVGV4dFN0eWxlKTsKLSAgICAgICAg
ICAgICAgICBhdXRvIGZvbnREZXNjcmlwdG9yID0gYWRvcHRDRihDVEZvbnREZXNjcmlwdG9yQ3Jl
YXRlV2l0aFRleHRTdHlsZShwYXJhbWV0ZXJzLmZvbnROYW1lLnN0cmluZygpLmNyZWF0ZUNGU3Ry
aW5nKCkuZ2V0KCksIFJlbmRlclRoZW1lSU9TOjpjb250ZW50U2l6ZUNhdGVnb3J5KCksIG51bGxw
dHIpKTsKLSAgICAgICAgICAgICAgICBDVEZvbnRTeW1ib2xpY1RyYWl0cyB0cmFpdHMgPSAocGFy
YW1ldGVycy53ZWlnaHQgPj0ga0NURm9udFdlaWdodFNlbWlib2xkID8ga0NURm9udFRyYWl0Qm9s
ZCA6IDApIHwgKHBhcmFtZXRlcnMuaXRhbGljID8ga0NURm9udFRyYWl0SXRhbGljIDogMCk7Ci0g
ICAgICAgICAgICAgICAgaWYgKHRyYWl0cykKLSAgICAgICAgICAgICAgICAgICAgZm9udERlc2Ny
aXB0b3IgPSBhZG9wdENGKENURm9udERlc2NyaXB0b3JDcmVhdGVDb3B5V2l0aFN5bWJvbGljVHJh
aXRzKGZvbnREZXNjcmlwdG9yLmdldCgpLCB0cmFpdHMsIHRyYWl0cykpOwotICAgICAgICAgICAg
ICAgIHN5c3RlbUZvbnQgPSBjcmVhdGVGb250Rm9ySW5zdGFsbGVkRm9udHMoZm9udERlc2NyaXB0
b3IuZ2V0KCksIHBhcmFtZXRlcnMuc2l6ZSwgcGFyYW1ldGVycy5hbGxvd1VzZXJJbnN0YWxsZWRG
b250cyk7Ci0jZWxzZQotICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotI2Vu
ZGlmCi0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBBU1NFUlQoc3lzdGVtRm9udCk7Ci0gICAg
ICAgICAgICBhdXRvIHJlc3VsdCA9IGNvbXB1dGVDYXNjYWRlTGlzdChzeXN0ZW1Gb250LmdldCgp
LCBsb2NhbGVTdHJpbmcuZ2V0KCkpOwotICAgICAgICAgICAgQVNTRVJUKCFyZXN1bHQuaXNFbXB0
eSgpKTsKLSAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICAgIH0pLml0ZXJhdG9yLT52
YWx1ZTsKLSAgICB9Ci0KLSAgICB2b2lkIGNsZWFyKCkKLSAgICB7Ci0gICAgICAgIG1fc3lzdGVt
Rm9udENhY2hlLmNsZWFyKCk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIFN5c3RlbUZvbnREYXRh
YmFzZSgpCi0gICAgewotICAgIH0KLQotICAgIHN0YXRpYyBSZXRhaW5QdHI8Q1RGb250UmVmPiBh
cHBseVdlaWdodEl0YWxpY3NBbmRGYWxsYmFja0JlaGF2aW9yKENURm9udFJlZiBmb250LCBDR0Zs
b2F0IHdlaWdodCwgYm9vbCBpdGFsaWMsIGZsb2F0IHNpemUsIEFsbG93VXNlckluc3RhbGxlZEZv
bnRzIGFsbG93VXNlckluc3RhbGxlZEZvbnRzKQotICAgIHsKLSAgICAgICAgYXV0byB3ZWlnaHRO
dW1iZXIgPSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRk51
bWJlckNHRmxvYXRUeXBlLCAmd2VpZ2h0KSk7Ci0gICAgICAgIGNvbnN0IGZsb2F0IHN5c3RlbUZv
bnRJdGFsaWNTbG9wZSA9IDAuMDc7Ci0gICAgICAgIGZsb2F0IGl0YWxpY3NSYXdOdW1iZXIgPSBp
dGFsaWMgPyBzeXN0ZW1Gb250SXRhbGljU2xvcGUgOiAwOwotICAgICAgICBhdXRvIGl0YWxpY3NO
dW1iZXIgPSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRk51
bWJlckZsb2F0VHlwZSwgJml0YWxpY3NSYXdOdW1iZXIpKTsKLSAgICAgICAgQ0ZUeXBlUmVmIHRy
YWl0c0tleXNbXSA9IHsga0NURm9udFdlaWdodFRyYWl0LCBrQ1RGb250U2xhbnRUcmFpdCwga0NU
Rm9udFVJRm9udERlc2lnblRyYWl0IH07Ci0gICAgICAgIENGVHlwZVJlZiB0cmFpdHNWYWx1ZXNb
XSA9IHsgd2VpZ2h0TnVtYmVyLmdldCgpLCBpdGFsaWNzTnVtYmVyLmdldCgpLCBrQ0ZCb29sZWFu
VHJ1ZSB9OwotICAgICAgICBhdXRvIHRyYWl0c0RpY3Rpb25hcnkgPSBhZG9wdENGKENGRGljdGlv
bmFyeUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCB0cmFpdHNLZXlzLCB0cmFpdHNWYWx1ZXMs
IFdURl9BUlJBWV9MRU5HVEgodHJhaXRzS2V5cyksICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxC
YWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKLSAgICAgICAgYXV0byBh
dHRyaWJ1dGVzID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRv
ckRlZmF1bHQsIDAsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0
aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKLSAgICAgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoYXR0
cmlidXRlcy5nZXQoKSwga0NURm9udFRyYWl0c0F0dHJpYnV0ZSwgdHJhaXRzRGljdGlvbmFyeS5n
ZXQoKSk7Ci0gICAgICAgIGFkZEF0dHJpYnV0ZXNGb3JJbnN0YWxsZWRGb250cyhhdHRyaWJ1dGVz
LmdldCgpLCBhbGxvd1VzZXJJbnN0YWxsZWRGb250cyk7Ci0gICAgICAgIGF1dG8gbW9kaWZpY2F0
aW9uID0gYWRvcHRDRihDVEZvbnREZXNjcmlwdG9yQ3JlYXRlV2l0aEF0dHJpYnV0ZXMoYXR0cmli
dXRlcy5nZXQoKSkpOwotICAgICAgICByZXR1cm4gYWRvcHRDRihDVEZvbnRDcmVhdGVDb3B5V2l0
aEF0dHJpYnV0ZXMoZm9udCwgc2l6ZSwgbnVsbHB0ciwgbW9kaWZpY2F0aW9uLmdldCgpKSk7Ci0g
ICAgfQotCi0gICAgc3RhdGljIFJldGFpblB0cjxDVEZvbnREZXNjcmlwdG9yUmVmPiByZW1vdmVD
YXNjYWRlTGlzdChDVEZvbnREZXNjcmlwdG9yUmVmIGZvbnREZXNjcmlwdG9yKQotICAgIHsKLSAg
ICAgICAgYXV0byBlbXB0eUFycmF5ID0gYWRvcHRDRihDRkFycmF5Q3JlYXRlKGtDRkFsbG9jYXRv
ckRlZmF1bHQsIG51bGxwdHIsIDAsICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpKTsKLSAgICAgICAg
Q0ZUeXBlUmVmIGZhbGxiYWNrRGljdGlvbmFyeUtleXNbXSA9IHsga0NURm9udENhc2NhZGVMaXN0
QXR0cmlidXRlIH07Ci0gICAgICAgIENGVHlwZVJlZiBmYWxsYmFja0RpY3Rpb25hcnlWYWx1ZXNb
XSA9IHsgZW1wdHlBcnJheS5nZXQoKSB9OwotICAgICAgICBhdXRvIGZhbGxiYWNrRGljdGlvbmFy
eSA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGZhbGxi
YWNrRGljdGlvbmFyeUtleXMsIGZhbGxiYWNrRGljdGlvbmFyeVZhbHVlcywgV1RGX0FSUkFZX0xF
TkdUSChmYWxsYmFja0RpY3Rpb25hcnlLZXlzKSwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJh
Y2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOwotICAgICAgICBhdXRvIG1v
ZGlmaWVkRm9udERlc2NyaXB0b3IgPSBhZG9wdENGKENURm9udERlc2NyaXB0b3JDcmVhdGVDb3B5
V2l0aEF0dHJpYnV0ZXMoZm9udERlc2NyaXB0b3IsIGZhbGxiYWNrRGljdGlvbmFyeS5nZXQoKSkp
OwotICAgICAgICByZXR1cm4gbW9kaWZpZWRGb250RGVzY3JpcHRvcjsKLSAgICB9Ci0KLSAgICBz
dGF0aWMgVmVjdG9yPFJldGFpblB0cjxDVEZvbnREZXNjcmlwdG9yUmVmPj4gY29tcHV0ZUNhc2Nh
ZGVMaXN0KENURm9udFJlZiBmb250LCBDRlN0cmluZ1JlZiBsb2NhbGUpCi0gICAgewotICAgICAg
ICBDRlR5cGVSZWYgYXJyYXlWYWx1ZXNbXSA9IHsgbG9jYWxlIH07Ci0gICAgICAgIGF1dG8gbG9j
YWxlQXJyYXkgPSBhZG9wdENGKENGQXJyYXlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYXJy
YXlWYWx1ZXMsIFdURl9BUlJBWV9MRU5HVEgoYXJyYXlWYWx1ZXMpLCAma0NGVHlwZUFycmF5Q2Fs
bEJhY2tzKSk7Ci0gICAgICAgIGF1dG8gY2FzY2FkZUxpc3QgPSBhZG9wdENGKENURm9udENvcHlE
ZWZhdWx0Q2FzY2FkZUxpc3RGb3JMYW5ndWFnZXMoZm9udCwgbG9jYWxlQXJyYXkuZ2V0KCkpKTsK
LSAgICAgICAgVmVjdG9yPFJldGFpblB0cjxDVEZvbnREZXNjcmlwdG9yUmVmPj4gcmVzdWx0Owot
ICAgICAgICAvLyBXZWJLaXQgaGFuZGxlcyB0aGUgY2FzY2FkZSBsaXN0LCBhbmQgV2ViS2l0IDIn
cyBJUEMgY29kZSBkb2Vzbid0IGtub3cgaG93IHRvIHNlcmlhbGl6ZSBDb3JlIFRleHQncyBjYXNj
YWRlIGxpc3QuCi0gICAgICAgIHJlc3VsdC5hcHBlbmQocmVtb3ZlQ2FzY2FkZUxpc3QoYWRvcHRD
RihDVEZvbnRDb3B5Rm9udERlc2NyaXB0b3IoZm9udCkpLmdldCgpKSk7Ci0gICAgICAgIGlmIChj
YXNjYWRlTGlzdCkgewotICAgICAgICAgICAgQ0ZJbmRleCBhcnJheUxlbmd0aCA9IENGQXJyYXlH
ZXRDb3VudChjYXNjYWRlTGlzdC5nZXQoKSk7Ci0gICAgICAgICAgICBmb3IgKENGSW5kZXggaSA9
IDA7IGkgPCBhcnJheUxlbmd0aDsgKytpKQotICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQo
c3RhdGljX2Nhc3Q8Q1RGb250RGVzY3JpcHRvclJlZj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRleChj
YXNjYWRlTGlzdC5nZXQoKSwgaSkpKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gcmVzdWx0
OwotICAgIH0KLQotICAgIEhhc2hNYXA8Q29yZVRleHRDYXNjYWRlTGlzdFBhcmFtZXRlcnMsIFZl
Y3RvcjxSZXRhaW5QdHI8Q1RGb250RGVzY3JpcHRvclJlZj4+LCBDb3JlVGV4dENhc2NhZGVMaXN0
UGFyYW1ldGVyczo6Q29yZVRleHRDYXNjYWRlTGlzdFBhcmFtZXRlcnNIYXNoLCBTaW1wbGVDbGFz
c0hhc2hUcmFpdHM8Q29yZVRleHRDYXNjYWRlTGlzdFBhcmFtZXRlcnM+PiBtX3N5c3RlbUZvbnRD
YWNoZTsKLX07Ci0KIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1N5c3RlbUZvbnRTdHJpbmcoY29uc3Qg
QXRvbWljU3RyaW5nJiBzdHJpbmcpCiB7CiAgICAgcmV0dXJuIGVxdWFsTGV0dGVyc0lnbm9yaW5n
QVNDSUlDYXNlKHN0cmluZywgIi13ZWJraXQtc3lzdGVtLWZvbnQiKQpAQCAtMjQ0LDU3ICs4MSwx
NCBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNVSUZvbnRUZXh0U3R5bGUoY29uCiB9CiAjZW5kaWYK
IAotc3RhdGljIGlubGluZSBTeXN0ZW1Gb250RGF0YWJhc2U6OkNvcmVUZXh0Q2FzY2FkZUxpc3RQ
YXJhbWV0ZXJzIHN5c3RlbUZvbnRQYXJhbWV0ZXJzKGNvbnN0IEZvbnRDYXNjYWRlRGVzY3JpcHRp
b24mIGRlc2NyaXB0aW9uLCBjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlseU5hbWUsIFN5c3RlbUZv
bnREYXRhYmFzZTo6Q2xpZW50VXNlIGNsaWVudFVzZSwgQWxsb3dVc2VySW5zdGFsbGVkRm9udHMg
YWxsb3dVc2VySW5zdGFsbGVkRm9udHMpCi17Ci0gICAgU3lzdGVtRm9udERhdGFiYXNlOjpDb3Jl
VGV4dENhc2NhZGVMaXN0UGFyYW1ldGVycyByZXN1bHQ7Ci0gICAgcmVzdWx0LmxvY2FsZSA9IGRl
c2NyaXB0aW9uLmxvY2FsZSgpOwotICAgIHJlc3VsdC5zaXplID0gZGVzY3JpcHRpb24uY29tcHV0
ZWRTaXplKCk7Ci0gICAgcmVzdWx0Lml0YWxpYyA9IGlzSXRhbGljKGRlc2NyaXB0aW9uLml0YWxp
YygpKTsKLQotICAgIGF1dG8gd2VpZ2h0ID0gZGVzY3JpcHRpb24ud2VpZ2h0KCk7Ci0gICAgaWYg
KEZvbnRDYWNoZTo6c2luZ2xldG9uKCkuc2hvdWxkTW9ja0JvbGRTeXN0ZW1Gb250Rm9yQWNjZXNz
aWJpbGl0eSgpKQotICAgICAgICB3ZWlnaHQgPSB3ZWlnaHQgKyBGb250U2VsZWN0aW9uVmFsdWUo
MjAwKTsKLQotICAgIGlmICh3ZWlnaHQgPCBGb250U2VsZWN0aW9uVmFsdWUoMTUwKSkKLSAgICAg
ICAgcmVzdWx0LndlaWdodCA9IGtDVEZvbnRXZWlnaHRVbHRyYUxpZ2h0OwotICAgIGVsc2UgaWYg
KHdlaWdodCA8IEZvbnRTZWxlY3Rpb25WYWx1ZSgyNTApKQotICAgICAgICByZXN1bHQud2VpZ2h0
ID0ga0NURm9udFdlaWdodFRoaW47Ci0gICAgZWxzZSBpZiAod2VpZ2h0IDwgRm9udFNlbGVjdGlv
blZhbHVlKDM1MCkpCi0gICAgICAgIHJlc3VsdC53ZWlnaHQgPSBrQ1RGb250V2VpZ2h0TGlnaHQ7
Ci0gICAgZWxzZSBpZiAod2VpZ2h0IDwgRm9udFNlbGVjdGlvblZhbHVlKDQ1MCkpCi0gICAgICAg
IHJlc3VsdC53ZWlnaHQgPSBrQ1RGb250V2VpZ2h0UmVndWxhcjsKLSAgICBlbHNlIGlmICh3ZWln
aHQgPCBGb250U2VsZWN0aW9uVmFsdWUoNTUwKSkKLSAgICAgICAgcmVzdWx0LndlaWdodCA9IGtD
VEZvbnRXZWlnaHRNZWRpdW07Ci0gICAgZWxzZSBpZiAod2VpZ2h0IDwgRm9udFNlbGVjdGlvblZh
bHVlKDY1MCkpCi0gICAgICAgIHJlc3VsdC53ZWlnaHQgPSBrQ1RGb250V2VpZ2h0U2VtaWJvbGQ7
Ci0gICAgZWxzZSBpZiAod2VpZ2h0IDwgRm9udFNlbGVjdGlvblZhbHVlKDc1MCkpCi0gICAgICAg
IHJlc3VsdC53ZWlnaHQgPSBrQ1RGb250V2VpZ2h0Qm9sZDsKLSAgICBlbHNlIGlmICh3ZWlnaHQg
PCBGb250U2VsZWN0aW9uVmFsdWUoODUwKSkKLSAgICAgICAgcmVzdWx0LndlaWdodCA9IGtDVEZv
bnRXZWlnaHRIZWF2eTsKLSAgICBlbHNlCi0gICAgICAgIHJlc3VsdC53ZWlnaHQgPSBrQ1RGb250
V2VpZ2h0QmxhY2s7Ci0KLSAgICBpZiAoY2xpZW50VXNlID09IFN5c3RlbUZvbnREYXRhYmFzZTo6
Q2xpZW50VXNlOjpGb3JTeXN0ZW1VSSkgewotICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
QXRvbWljU3RyaW5nPiBzeXN0ZW1VSSA9IEF0b21pY1N0cmluZygic3lzdGVtLXVpIiwgQXRvbWlj
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgICAgIHJlc3VsdC5mb250TmFtZSA9
IHN5c3RlbVVJLmdldCgpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIEFTU0VSVChjbGllbnRVc2Ug
PT0gU3lzdGVtRm9udERhdGFiYXNlOjpDbGllbnRVc2U6OkZvclRleHRTdHlsZSk7Ci0gICAgICAg
IHJlc3VsdC5mb250TmFtZSA9IGZhbWlseU5hbWU7Ci0gICAgfQotCi0gICAgcmVzdWx0LmFsbG93
VXNlckluc3RhbGxlZEZvbnRzID0gYWxsb3dVc2VySW5zdGFsbGVkRm9udHM7Ci0KLSAgICByZXR1
cm4gcmVzdWx0OwotfQotCiB2b2lkIEZvbnREZXNjcmlwdGlvbjo6aW52YWxpZGF0ZUNhY2hlcygp
CiB7Ci0gICAgU3lzdGVtRm9udERhdGFiYXNlOjpzaW5nbGV0b24oKS5jbGVhcigpOworICAgIFN5
c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0OjpzaW5nbGV0b24oKS5jbGVhcigpOwogfQogCi1zdGF0
aWMgaW5saW5lIFZlY3RvcjxSZXRhaW5QdHI8Q1RGb250RGVzY3JpcHRvclJlZj4+IHN5c3RlbUZv
bnRDYXNjYWRlTGlzdChjb25zdCBGb250Q2FzY2FkZURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwg
Y29uc3QgQXRvbWljU3RyaW5nJiBjc3NGYW1pbHksIFN5c3RlbUZvbnREYXRhYmFzZTo6Q2xpZW50
VXNlIGNsaWVudFVzZSwgQWxsb3dVc2VySW5zdGFsbGVkRm9udHMgYWxsb3dVc2VySW5zdGFsbGVk
Rm9udHMpCitzdGF0aWMgaW5saW5lIFZlY3RvcjxSZXRhaW5QdHI8Q1RGb250RGVzY3JpcHRvclJl
Zj4+IHN5c3RlbUZvbnRDYXNjYWRlTGlzdChjb25zdCBGb250Q2FzY2FkZURlc2NyaXB0aW9uJiBk
ZXNjcmlwdGlvbiwgY29uc3QgQXRvbWljU3RyaW5nJiBjc3NGYW1pbHksIFN5c3RlbUZvbnREYXRh
YmFzZUNvcmVUZXh0OjpDbGllbnRVc2UgY2xpZW50VXNlLCBBbGxvd1VzZXJJbnN0YWxsZWRGb250
cyBhbGxvd1VzZXJJbnN0YWxsZWRGb250cykKIHsKLSAgICByZXR1cm4gU3lzdGVtRm9udERhdGFi
YXNlOjpzaW5nbGV0b24oKS5zeXN0ZW1Gb250Q2FzY2FkZUxpc3Qoc3lzdGVtRm9udFBhcmFtZXRl
cnMoZGVzY3JpcHRpb24sIGNzc0ZhbWlseSwgY2xpZW50VXNlLCBhbGxvd1VzZXJJbnN0YWxsZWRG
b250cyksIGNsaWVudFVzZSk7CisgICAgcmV0dXJuIFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0
OjpzaW5nbGV0b24oKS5jYXNjYWRlTGlzdChkZXNjcmlwdGlvbiwgY3NzRmFtaWx5LCBjbGllbnRV
c2UsIGFsbG93VXNlckluc3RhbGxlZEZvbnRzKTsKIH0KIAogdW5zaWduZWQgRm9udENhc2NhZGVE
ZXNjcmlwdGlvbjo6ZWZmZWN0aXZlRmFtaWx5Q291bnQoKSBjb25zdApAQCAtMzA0LDEwICs5OCwx
MCBAQCB1bnNpZ25lZCBGb250Q2FzY2FkZURlc2NyaXB0aW9uOjplZmZlY3RpCiAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IGZhbWlseUNvdW50KCk7ICsraSkgewogICAgICAgICBjb25zdCBh
dXRvJiBjc3NGYW1pbHkgPSBmYW1pbHlBdChpKTsKICAgICAgICAgaWYgKGlzU3lzdGVtRm9udFN0
cmluZyhjc3NGYW1pbHkpKQotICAgICAgICAgICAgcmVzdWx0ICs9IHN5c3RlbUZvbnRDYXNjYWRl
TGlzdCgqdGhpcywgY3NzRmFtaWx5LCBTeXN0ZW1Gb250RGF0YWJhc2U6OkNsaWVudFVzZTo6Rm9y
U3lzdGVtVUksIHNob3VsZEFsbG93VXNlckluc3RhbGxlZEZvbnRzKCkpLnNpemUoKTsKKyAgICAg
ICAgICAgIHJlc3VsdCArPSBzeXN0ZW1Gb250Q2FzY2FkZUxpc3QoKnRoaXMsIGNzc0ZhbWlseSwg
U3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQ6OkNsaWVudFVzZTo6Rm9yU3lzdGVtVUksIHNob3Vs
ZEFsbG93VXNlckluc3RhbGxlZEZvbnRzKCkpLnNpemUoKTsKICNpZiBQTEFURk9STShJT1MpCiAg
ICAgICAgIGVsc2UgaWYgKGlzVUlGb250VGV4dFN0eWxlKGNzc0ZhbWlseSkpCi0gICAgICAgICAg
ICByZXN1bHQgKz0gc3lzdGVtRm9udENhc2NhZGVMaXN0KCp0aGlzLCBjc3NGYW1pbHksIFN5c3Rl
bUZvbnREYXRhYmFzZTo6Q2xpZW50VXNlOjpGb3JUZXh0U3R5bGUsIHNob3VsZEFsbG93VXNlcklu
c3RhbGxlZEZvbnRzKCkpLnNpemUoKTsKKyAgICAgICAgICAgIHJlc3VsdCArPSBzeXN0ZW1Gb250
Q2FzY2FkZUxpc3QoKnRoaXMsIGNzc0ZhbWlseSwgU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQ6
OkNsaWVudFVzZTo6Rm9yVGV4dFN0eWxlLCBzaG91bGRBbGxvd1VzZXJJbnN0YWxsZWRGb250cygp
KS5zaXplKCk7CiAjZW5kaWYKICAgICAgICAgZWxzZQogICAgICAgICAgICAgKytyZXN1bHQ7CkBA
IC0zMjcsMTQgKzEyMSwxNCBAQCBGb250RmFtaWx5U3BlY2lmaWNhdGlvbiBGb250Q2FzY2FkZURl
c2NyCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGZhbWlseUNvdW50KCk7ICsraSkgewog
ICAgICAgICBjb25zdCBhdXRvJiBjc3NGYW1pbHkgPSBmYW1pbHlBdChpKTsKICAgICAgICAgaWYg
KGlzU3lzdGVtRm9udFN0cmluZyhjc3NGYW1pbHkpKSB7Ci0gICAgICAgICAgICBhdXRvIGNhc2Nh
ZGVMaXN0ID0gc3lzdGVtRm9udENhc2NhZGVMaXN0KCp0aGlzLCBjc3NGYW1pbHksIFN5c3RlbUZv
bnREYXRhYmFzZTo6Q2xpZW50VXNlOjpGb3JTeXN0ZW1VSSwgc2hvdWxkQWxsb3dVc2VySW5zdGFs
bGVkRm9udHMoKSk7CisgICAgICAgICAgICBhdXRvIGNhc2NhZGVMaXN0ID0gc3lzdGVtRm9udENh
c2NhZGVMaXN0KCp0aGlzLCBjc3NGYW1pbHksIFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0OjpD
bGllbnRVc2U6OkZvclN5c3RlbVVJLCBzaG91bGRBbGxvd1VzZXJJbnN0YWxsZWRGb250cygpKTsK
ICAgICAgICAgICAgIGlmIChpbmRleCA8IGNhc2NhZGVMaXN0LnNpemUoKSkKICAgICAgICAgICAg
ICAgICByZXR1cm4gRm9udEZhbWlseVNwZWNpZmljYXRpb24oY2FzY2FkZUxpc3RbaW5kZXhdLmdl
dCgpKTsKICAgICAgICAgICAgIGluZGV4IC09IGNhc2NhZGVMaXN0LnNpemUoKTsKICAgICAgICAg
fQogI2lmIFBMQVRGT1JNKElPUykKICAgICAgICAgZWxzZSBpZiAoaXNVSUZvbnRUZXh0U3R5bGUo
Y3NzRmFtaWx5KSkgewotICAgICAgICAgICAgYXV0byBjYXNjYWRlTGlzdCA9IHN5c3RlbUZvbnRD
YXNjYWRlTGlzdCgqdGhpcywgY3NzRmFtaWx5LCBTeXN0ZW1Gb250RGF0YWJhc2U6OkNsaWVudFVz
ZTo6Rm9yVGV4dFN0eWxlLCBzaG91bGRBbGxvd1VzZXJJbnN0YWxsZWRGb250cygpKTsKKyAgICAg
ICAgICAgIGF1dG8gY2FzY2FkZUxpc3QgPSBzeXN0ZW1Gb250Q2FzY2FkZUxpc3QoKnRoaXMsIGNz
c0ZhbWlseSwgU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQ6OkNsaWVudFVzZTo6Rm9yVGV4dFN0
eWxlLCBzaG91bGRBbGxvd1VzZXJJbnN0YWxsZWRGb250cygpKTsKICAgICAgICAgICAgIGlmIChp
bmRleCA8IGNhc2NhZGVMaXN0LnNpemUoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gRm9udEZh
bWlseVNwZWNpZmljYXRpb24oY2FzY2FkZUxpc3RbaW5kZXhdLmdldCgpKTsKICAgICAgICAgICAg
IGluZGV4IC09IGNhc2NhZGVMaXN0LnNpemUoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1N5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9TeXN0ZW1Gb250
RGF0YWJhc2VDb3JlVGV4dC5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMTc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIlN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0LmgiCisKKyNpZiBVU0Vf
UExBVEZPUk1fU1lTVEVNX0ZBTExCQUNLX0xJU1QKKworI2luY2x1ZGUgIkZvbnRDYWNoZS5oIgor
I2luY2x1ZGUgIkZvbnRDYXNjYWRlRGVzY3JpcHRpb24uaCIKKworI2lmIFBMQVRGT1JNKElPUykK
KyNpbmNsdWRlICJSZW5kZXJUaGVtZUlPUy5oIgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQmIFN5c3RlbUZvbnREYXRhYmFzZUNvcmVU
ZXh0OjpzaW5nbGV0b24oKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTeXN0ZW1Gb250
RGF0YWJhc2VDb3JlVGV4dD4gZGF0YWJhc2UgPSBTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dCgp
OworICAgIHJldHVybiBkYXRhYmFzZS5nZXQoKTsKK30KKworU3lzdGVtRm9udERhdGFiYXNlQ29y
ZVRleHQ6OlN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0KCkKK3sKK30KKworVmVjdG9yPFJldGFp
blB0cjxDVEZvbnREZXNjcmlwdG9yUmVmPj4gU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQ6OmNh
c2NhZGVMaXN0KGNvbnN0IENhc2NhZGVMaXN0UGFyYW1ldGVycyYgcGFyYW1ldGVycywgQ2xpZW50
VXNlIGNsaWVudFVzZSkKK3sKKyAgICBBU1NFUlQoIXBhcmFtZXRlcnMuZm9udE5hbWUuaXNOdWxs
KCkpOworICAgIHJldHVybiBtX3N5c3RlbUZvbnRDYWNoZS5lbnN1cmUocGFyYW1ldGVycywgWyZd
IHsKKyAgICAgICAgYXV0byBsb2NhbGVTdHJpbmcgPSBwYXJhbWV0ZXJzLmxvY2FsZS5zdHJpbmco
KS5jcmVhdGVDRlN0cmluZygpOworICAgICAgICBSZXRhaW5QdHI8Q1RGb250UmVmPiBzeXN0ZW1G
b250OworICAgICAgICBpZiAoY2xpZW50VXNlID09IENsaWVudFVzZTo6Rm9yU3lzdGVtVUkpIHsK
KyAgICAgICAgICAgIHN5c3RlbUZvbnQgPSBhZG9wdENGKENURm9udENyZWF0ZVVJRm9udEZvckxh
bmd1YWdlKGtDVEZvbnRVSUZvbnRTeXN0ZW0sIHBhcmFtZXRlcnMuc2l6ZSwgbG9jYWxlU3RyaW5n
LmdldCgpKSk7CisgICAgICAgICAgICBBU1NFUlQoc3lzdGVtRm9udCk7CisgICAgICAgICAgICAv
LyBGSVhNRTogVXNlIGFwcGx5V2VpZ2h0SXRhbGljc0FuZEZhbGxiYWNrQmVoYXZpb3IoKSBpbiBi
b3RoIGNhc2VzIG9uY2UgPHJkYXI6Ly9wcm9ibGVtLzMzMDQ2MDQxPiBpcyBmaXhlZC4KKyAgICAg
ICAgICAgIHN5c3RlbUZvbnQgPSBhcHBseVdlaWdodEl0YWxpY3NBbmRGYWxsYmFja0JlaGF2aW9y
KHN5c3RlbUZvbnQuZ2V0KCksIHBhcmFtZXRlcnMud2VpZ2h0LCBwYXJhbWV0ZXJzLml0YWxpYywg
cGFyYW1ldGVycy5zaXplLCBwYXJhbWV0ZXJzLmFsbG93VXNlckluc3RhbGxlZEZvbnRzKTsKKyAg
ICAgICAgfSBlbHNlIHsKKyNpZiBQTEFURk9STShJT1MpCisgICAgICAgICAgICBBU1NFUlQoY2xp
ZW50VXNlID09IENsaWVudFVzZTo6Rm9yVGV4dFN0eWxlKTsKKyAgICAgICAgICAgIGF1dG8gZm9u
dERlc2NyaXB0b3IgPSBhZG9wdENGKENURm9udERlc2NyaXB0b3JDcmVhdGVXaXRoVGV4dFN0eWxl
KHBhcmFtZXRlcnMuZm9udE5hbWUuc3RyaW5nKCkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgUmVu
ZGVyVGhlbWVJT1M6OmNvbnRlbnRTaXplQ2F0ZWdvcnkoKSwgbnVsbHB0cikpOworICAgICAgICAg
ICAgQ1RGb250U3ltYm9saWNUcmFpdHMgdHJhaXRzID0gKHBhcmFtZXRlcnMud2VpZ2h0ID49IGtD
VEZvbnRXZWlnaHRTZW1pYm9sZCA/IGtDVEZvbnRUcmFpdEJvbGQgOiAwKSB8IChwYXJhbWV0ZXJz
Lml0YWxpYyA/IGtDVEZvbnRUcmFpdEl0YWxpYyA6IDApOworICAgICAgICAgICAgaWYgKHRyYWl0
cykKKyAgICAgICAgICAgICAgICBmb250RGVzY3JpcHRvciA9IGFkb3B0Q0YoQ1RGb250RGVzY3Jp
cHRvckNyZWF0ZUNvcHlXaXRoU3ltYm9saWNUcmFpdHMoZm9udERlc2NyaXB0b3IuZ2V0KCksIHRy
YWl0cywgdHJhaXRzKSk7CisgICAgICAgICAgICBzeXN0ZW1Gb250ID0gY3JlYXRlRm9udEZvcklu
c3RhbGxlZEZvbnRzKGZvbnREZXNjcmlwdG9yLmdldCgpLCBwYXJhbWV0ZXJzLnNpemUsIHBhcmFt
ZXRlcnMuYWxsb3dVc2VySW5zdGFsbGVkRm9udHMpOworI2Vsc2UKKyAgICAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworI2VuZGlmCisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUKHN5c3Rl
bUZvbnQpOworICAgICAgICBhdXRvIHJlc3VsdCA9IGNvbXB1dGVDYXNjYWRlTGlzdChzeXN0ZW1G
b250LmdldCgpLCBsb2NhbGVTdHJpbmcuZ2V0KCkpOworICAgICAgICBBU1NFUlQoIXJlc3VsdC5p
c0VtcHR5KCkpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0pLml0ZXJhdG9yLT52YWx1
ZTsKK30KKwordm9pZCBTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dDo6Y2xlYXIoKQoreworICAg
IG1fc3lzdGVtRm9udENhY2hlLmNsZWFyKCk7Cit9CisKK1JldGFpblB0cjxDVEZvbnRSZWY+IFN5
c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0OjphcHBseVdlaWdodEl0YWxpY3NBbmRGYWxsYmFja0Jl
aGF2aW9yKENURm9udFJlZiBmb250LCBDR0Zsb2F0IHdlaWdodCwgYm9vbCBpdGFsaWMsIGZsb2F0
IHNpemUsIEFsbG93VXNlckluc3RhbGxlZEZvbnRzIGFsbG93VXNlckluc3RhbGxlZEZvbnRzKQor
eworICAgIGF1dG8gd2VpZ2h0TnVtYmVyID0gYWRvcHRDRihDRk51bWJlckNyZWF0ZShrQ0ZBbGxv
Y2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJDR0Zsb2F0VHlwZSwgJndlaWdodCkpOworICAgIGNvbnN0
IGZsb2F0IHN5c3RlbUZvbnRJdGFsaWNTbG9wZSA9IDAuMDc7CisgICAgZmxvYXQgaXRhbGljc1Jh
d051bWJlciA9IGl0YWxpYyA/IHN5c3RlbUZvbnRJdGFsaWNTbG9wZSA6IDA7CisgICAgYXV0byBp
dGFsaWNzTnVtYmVyID0gYWRvcHRDRihDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0
LCBrQ0ZOdW1iZXJGbG9hdFR5cGUsICZpdGFsaWNzUmF3TnVtYmVyKSk7CisgICAgQ0ZUeXBlUmVm
IHRyYWl0c0tleXNbXSA9IHsga0NURm9udFdlaWdodFRyYWl0LCBrQ1RGb250U2xhbnRUcmFpdCwg
a0NURm9udFVJRm9udERlc2lnblRyYWl0IH07CisgICAgQ0ZUeXBlUmVmIHRyYWl0c1ZhbHVlc1td
ID0geyB3ZWlnaHROdW1iZXIuZ2V0KCksIGl0YWxpY3NOdW1iZXIuZ2V0KCksIGtDRkJvb2xlYW5U
cnVlIH07CisgICAgYXV0byB0cmFpdHNEaWN0aW9uYXJ5ID0gYWRvcHRDRihDRkRpY3Rpb25hcnlD
cmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgdHJhaXRzS2V5cywgdHJhaXRzVmFsdWVzLCBXVEZf
QVJSQVlfTEVOR1RIKHRyYWl0c0tleXMpLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3Ms
ICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CisgICAgYXV0byBhdHRyaWJ1dGVz
ID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQs
IDAsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFs
dWVDYWxsQmFja3MpKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShhdHRyaWJ1dGVzLmdldCgp
LCBrQ1RGb250VHJhaXRzQXR0cmlidXRlLCB0cmFpdHNEaWN0aW9uYXJ5LmdldCgpKTsKKyAgICBh
ZGRBdHRyaWJ1dGVzRm9ySW5zdGFsbGVkRm9udHMoYXR0cmlidXRlcy5nZXQoKSwgYWxsb3dVc2Vy
SW5zdGFsbGVkRm9udHMpOworICAgIGF1dG8gbW9kaWZpY2F0aW9uID0gYWRvcHRDRihDVEZvbnRE
ZXNjcmlwdG9yQ3JlYXRlV2l0aEF0dHJpYnV0ZXMoYXR0cmlidXRlcy5nZXQoKSkpOworICAgIHJl
dHVybiBhZG9wdENGKENURm9udENyZWF0ZUNvcHlXaXRoQXR0cmlidXRlcyhmb250LCBzaXplLCBu
dWxscHRyLCBtb2RpZmljYXRpb24uZ2V0KCkpKTsKK30KKworUmV0YWluUHRyPENURm9udERlc2Ny
aXB0b3JSZWY+IFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0OjpyZW1vdmVDYXNjYWRlTGlzdChD
VEZvbnREZXNjcmlwdG9yUmVmIGZvbnREZXNjcmlwdG9yKQoreworICAgIGF1dG8gZW1wdHlBcnJh
eSA9IGFkb3B0Q0YoQ0ZBcnJheUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBudWxscHRyLCAw
LCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKSk7CisgICAgQ0ZUeXBlUmVmIGZhbGxiYWNrRGljdGlv
bmFyeUtleXNbXSA9IHsga0NURm9udENhc2NhZGVMaXN0QXR0cmlidXRlIH07CisgICAgQ0ZUeXBl
UmVmIGZhbGxiYWNrRGljdGlvbmFyeVZhbHVlc1tdID0geyBlbXB0eUFycmF5LmdldCgpIH07Cisg
ICAgYXV0byBmYWxsYmFja0RpY3Rpb25hcnkgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZShr
Q0ZBbGxvY2F0b3JEZWZhdWx0LCBmYWxsYmFja0RpY3Rpb25hcnlLZXlzLCBmYWxsYmFja0RpY3Rp
b25hcnlWYWx1ZXMsIFdURl9BUlJBWV9MRU5HVEgoZmFsbGJhY2tEaWN0aW9uYXJ5S2V5cyksICZr
Q0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxs
QmFja3MpKTsKKyAgICBhdXRvIG1vZGlmaWVkRm9udERlc2NyaXB0b3IgPSBhZG9wdENGKENURm9u
dERlc2NyaXB0b3JDcmVhdGVDb3B5V2l0aEF0dHJpYnV0ZXMoZm9udERlc2NyaXB0b3IsIGZhbGxi
YWNrRGljdGlvbmFyeS5nZXQoKSkpOworICAgIHJldHVybiBtb2RpZmllZEZvbnREZXNjcmlwdG9y
OworfQorCitWZWN0b3I8UmV0YWluUHRyPENURm9udERlc2NyaXB0b3JSZWY+PiBTeXN0ZW1Gb250
RGF0YWJhc2VDb3JlVGV4dDo6Y29tcHV0ZUNhc2NhZGVMaXN0KENURm9udFJlZiBmb250LCBDRlN0
cmluZ1JlZiBsb2NhbGUpCit7CisgICAgQ0ZUeXBlUmVmIGFycmF5VmFsdWVzW10gPSB7IGxvY2Fs
ZSB9OworICAgIGF1dG8gbG9jYWxlQXJyYXkgPSBhZG9wdENGKENGQXJyYXlDcmVhdGUoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgYXJyYXlWYWx1ZXMsIFdURl9BUlJBWV9MRU5HVEgoYXJyYXlWYWx1ZXMp
LCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKSk7CisgICAgYXV0byBjYXNjYWRlTGlzdCA9IGFkb3B0
Q0YoQ1RGb250Q29weURlZmF1bHRDYXNjYWRlTGlzdEZvckxhbmd1YWdlcyhmb250LCBsb2NhbGVB
cnJheS5nZXQoKSkpOworICAgIFZlY3RvcjxSZXRhaW5QdHI8Q1RGb250RGVzY3JpcHRvclJlZj4+
IHJlc3VsdDsKKyAgICAvLyBXZWJLaXQgaGFuZGxlcyB0aGUgY2FzY2FkZSBsaXN0LCBhbmQgV2Vi
S2l0IDIncyBJUEMgY29kZSBkb2Vzbid0IGtub3cgaG93IHRvIHNlcmlhbGl6ZSBDb3JlIFRleHQn
cyBjYXNjYWRlIGxpc3QuCisgICAgcmVzdWx0LmFwcGVuZChyZW1vdmVDYXNjYWRlTGlzdChhZG9w
dENGKENURm9udENvcHlGb250RGVzY3JpcHRvcihmb250KSkuZ2V0KCkpKTsKKyAgICBpZiAoY2Fz
Y2FkZUxpc3QpIHsKKyAgICAgICAgQ0ZJbmRleCBhcnJheUxlbmd0aCA9IENGQXJyYXlHZXRDb3Vu
dChjYXNjYWRlTGlzdC5nZXQoKSk7CisgICAgICAgIGZvciAoQ0ZJbmRleCBpID0gMDsgaSA8IGFy
cmF5TGVuZ3RoOyArK2kpCisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHN0YXRpY19jYXN0PENU
Rm9udERlc2NyaXB0b3JSZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgoY2FzY2FkZUxpc3QuZ2V0
KCksIGkpKSk7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK1N5c3RlbUZvbnREYXRh
YmFzZUNvcmVUZXh0OjpDYXNjYWRlTGlzdFBhcmFtZXRlcnMgU3lzdGVtRm9udERhdGFiYXNlQ29y
ZVRleHQ6OnN5c3RlbUZvbnRQYXJhbWV0ZXJzKGNvbnN0IEZvbnRDYXNjYWRlRGVzY3JpcHRpb24m
IGRlc2NyaXB0aW9uLCBjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlseU5hbWUsIENsaWVudFVzZSBj
bGllbnRVc2UsIEFsbG93VXNlckluc3RhbGxlZEZvbnRzIGFsbG93VXNlckluc3RhbGxlZEZvbnRz
KQoreworICAgIENhc2NhZGVMaXN0UGFyYW1ldGVycyByZXN1bHQ7CisgICAgcmVzdWx0LmxvY2Fs
ZSA9IGRlc2NyaXB0aW9uLmxvY2FsZSgpOworICAgIHJlc3VsdC5zaXplID0gZGVzY3JpcHRpb24u
Y29tcHV0ZWRTaXplKCk7CisgICAgcmVzdWx0Lml0YWxpYyA9IGlzSXRhbGljKGRlc2NyaXB0aW9u
Lml0YWxpYygpKTsKKworICAgIGF1dG8gd2VpZ2h0ID0gZGVzY3JpcHRpb24ud2VpZ2h0KCk7Cisg
ICAgaWYgKEZvbnRDYWNoZTo6c2luZ2xldG9uKCkuc2hvdWxkTW9ja0JvbGRTeXN0ZW1Gb250Rm9y
QWNjZXNzaWJpbGl0eSgpKQorICAgICAgICB3ZWlnaHQgPSB3ZWlnaHQgKyBGb250U2VsZWN0aW9u
VmFsdWUoMjAwKTsKKworICAgIGlmICh3ZWlnaHQgPCBGb250U2VsZWN0aW9uVmFsdWUoMTUwKSkK
KyAgICAgICAgcmVzdWx0LndlaWdodCA9IGtDVEZvbnRXZWlnaHRVbHRyYUxpZ2h0OworICAgIGVs
c2UgaWYgKHdlaWdodCA8IEZvbnRTZWxlY3Rpb25WYWx1ZSgyNTApKQorICAgICAgICByZXN1bHQu
d2VpZ2h0ID0ga0NURm9udFdlaWdodFRoaW47CisgICAgZWxzZSBpZiAod2VpZ2h0IDwgRm9udFNl
bGVjdGlvblZhbHVlKDM1MCkpCisgICAgICAgIHJlc3VsdC53ZWlnaHQgPSBrQ1RGb250V2VpZ2h0
TGlnaHQ7CisgICAgZWxzZSBpZiAod2VpZ2h0IDwgRm9udFNlbGVjdGlvblZhbHVlKDQ1MCkpCisg
ICAgICAgIHJlc3VsdC53ZWlnaHQgPSBrQ1RGb250V2VpZ2h0UmVndWxhcjsKKyAgICBlbHNlIGlm
ICh3ZWlnaHQgPCBGb250U2VsZWN0aW9uVmFsdWUoNTUwKSkKKyAgICAgICAgcmVzdWx0LndlaWdo
dCA9IGtDVEZvbnRXZWlnaHRNZWRpdW07CisgICAgZWxzZSBpZiAod2VpZ2h0IDwgRm9udFNlbGVj
dGlvblZhbHVlKDY1MCkpCisgICAgICAgIHJlc3VsdC53ZWlnaHQgPSBrQ1RGb250V2VpZ2h0U2Vt
aWJvbGQ7CisgICAgZWxzZSBpZiAod2VpZ2h0IDwgRm9udFNlbGVjdGlvblZhbHVlKDc1MCkpCisg
ICAgICAgIHJlc3VsdC53ZWlnaHQgPSBrQ1RGb250V2VpZ2h0Qm9sZDsKKyAgICBlbHNlIGlmICh3
ZWlnaHQgPCBGb250U2VsZWN0aW9uVmFsdWUoODUwKSkKKyAgICAgICAgcmVzdWx0LndlaWdodCA9
IGtDVEZvbnRXZWlnaHRIZWF2eTsKKyAgICBlbHNlCisgICAgICAgIHJlc3VsdC53ZWlnaHQgPSBr
Q1RGb250V2VpZ2h0QmxhY2s7CisKKyAgICBpZiAoY2xpZW50VXNlID09IENsaWVudFVzZTo6Rm9y
U3lzdGVtVUkpIHsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4g
c3lzdGVtVUkgPSBBdG9taWNTdHJpbmcoInN5c3RlbS11aSIsIEF0b21pY1N0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpOworICAgICAgICByZXN1bHQuZm9udE5hbWUgPSBzeXN0ZW1VSS5nZXQo
KTsKKyAgICB9IGVsc2UgeworICAgICAgICBBU1NFUlQoY2xpZW50VXNlID09IENsaWVudFVzZTo6
Rm9yVGV4dFN0eWxlKTsKKyAgICAgICAgcmVzdWx0LmZvbnROYW1lID0gZmFtaWx5TmFtZTsKKyAg
ICB9CisKKyAgICByZXN1bHQuYWxsb3dVc2VySW5zdGFsbGVkRm9udHMgPSBhbGxvd1VzZXJJbnN0
YWxsZWRGb250czsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK1ZlY3RvcjxSZXRhaW5QdHI8
Q1RGb250RGVzY3JpcHRvclJlZj4+IFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0OjpjYXNjYWRl
TGlzdChjb25zdCBGb250Q2FzY2FkZURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwgY29uc3QgQXRv
bWljU3RyaW5nJiBjc3NGYW1pbHksIENsaWVudFVzZSBjbGllbnRVc2UsIEFsbG93VXNlckluc3Rh
bGxlZEZvbnRzIGFsbG93VXNlckluc3RhbGxlZEZvbnRzKQoreworICAgIHJldHVybiBjYXNjYWRl
TGlzdChzeXN0ZW1Gb250UGFyYW1ldGVycyhkZXNjcmlwdGlvbiwgY3NzRmFtaWx5LCBjbGllbnRV
c2UsIGFsbG93VXNlckluc3RhbGxlZEZvbnRzKSwgY2xpZW50VXNlKTsKK30KKworfQorCisjZW5k
aWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1N5c3RlbUZv
bnREYXRhYmFzZUNvcmVUZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQuaAkobm9uZXhpc3Rl
bnQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9TeXN0ZW1Gb250
RGF0YWJhc2VDb3JlVGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTIxIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJGb250RGVzY3JpcHRpb24uaCIKKyNp
bmNsdWRlIDxwYWwvc3BpL2NvY29hL0NvcmVUZXh0U1BJLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0cy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0
b21pY1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZ0hhc2guaD4KKwor
I2lmIFVTRV9QTEFURk9STV9TWVNURU1fRkFMTEJBQ0tfTElTVAorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0IHsKK3B1YmxpYzoKKyAgICBz
dHJ1Y3QgQ2FzY2FkZUxpc3RQYXJhbWV0ZXJzIHsKKyAgICAgICAgQ2FzY2FkZUxpc3RQYXJhbWV0
ZXJzKCkKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgQ2FzY2FkZUxpc3RQYXJhbWV0
ZXJzKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkKKyAgICAgICAgICAgIDogZm9udE5h
bWUoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWUpCisgICAgICAgIHsKKyAgICAgICAgfQorCisg
ICAgICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdAorICAgICAgICB7Cisg
ICAgICAgICAgICByZXR1cm4gZm9udE5hbWUuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsKKyAg
ICAgICAgfQorCisgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDYXNjYWRlTGlzdFBhcmFt
ZXRlcnMmIG90aGVyKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZm9udE5h
bWUgPT0gb3RoZXIuZm9udE5hbWUKKyAgICAgICAgICAgICAgICAmJiBsb2NhbGUgPT0gb3RoZXIu
bG9jYWxlCisgICAgICAgICAgICAgICAgJiYgd2VpZ2h0ID09IG90aGVyLndlaWdodAorICAgICAg
ICAgICAgICAgICYmIHNpemUgPT0gb3RoZXIuc2l6ZQorICAgICAgICAgICAgICAgICYmIGFsbG93
VXNlckluc3RhbGxlZEZvbnRzID09IG90aGVyLmFsbG93VXNlckluc3RhbGxlZEZvbnRzCisgICAg
ICAgICAgICAgICAgJiYgaXRhbGljID09IG90aGVyLml0YWxpYzsKKyAgICAgICAgfQorCisgICAg
ICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICBJbnRlZ2Vy
SGFzaGVyIGhhc2hlcjsKKyAgICAgICAgICAgIEFTU0VSVCghZm9udE5hbWUuaXNOdWxsKCkpOwor
ICAgICAgICAgICAgaGFzaGVyLmFkZChsb2NhbGUuZXhpc3RpbmdIYXNoKCkpOworICAgICAgICAg
ICAgaGFzaGVyLmFkZChsb2NhbGUuaXNOdWxsKCkgPyAwIDogbG9jYWxlLmV4aXN0aW5nSGFzaCgp
KTsKKyAgICAgICAgICAgIGhhc2hlci5hZGQod2VpZ2h0KTsKKyAgICAgICAgICAgIGhhc2hlci5h
ZGQoc2l6ZSk7CisgICAgICAgICAgICBoYXNoZXIuYWRkKHN0YXRpY19jYXN0PHVuc2lnbmVkPihh
bGxvd1VzZXJJbnN0YWxsZWRGb250cykpOworICAgICAgICAgICAgaGFzaGVyLmFkZChpdGFsaWMp
OworICAgICAgICAgICAgcmV0dXJuIGhhc2hlci5oYXNoKCk7CisgICAgICAgIH0KKworICAgICAg
ICBzdHJ1Y3QgQ2FzY2FkZUxpc3RQYXJhbWV0ZXJzSGFzaCA6IFdURjo6UGFpckhhc2g8QXRvbWlj
U3RyaW5nLCBmbG9hdD4geworICAgICAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3Qg
Q2FzY2FkZUxpc3RQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIHJldHVybiBwYXJhbWV0ZXJzLmhhc2goKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IENhc2NhZGVMaXN0UGFyYW1ldGVycyYgYSwg
Y29uc3QgQ2FzY2FkZUxpc3RQYXJhbWV0ZXJzJiBiKQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIHJldHVybiBhID09IGI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzdGF0aWMg
Y29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IHRydWU7CisgICAgICAg
IH07CisKKyAgICAgICAgQXRvbWljU3RyaW5nIGZvbnROYW1lOworICAgICAgICBBdG9taWNTdHJp
bmcgbG9jYWxlOworICAgICAgICBDR0Zsb2F0IHdlaWdodCB7IDAgfTsKKyAgICAgICAgZmxvYXQg
c2l6ZSB7IDAgfTsKKyAgICAgICAgQWxsb3dVc2VySW5zdGFsbGVkRm9udHMgYWxsb3dVc2VySW5z
dGFsbGVkRm9udHMgeyBBbGxvd1VzZXJJbnN0YWxsZWRGb250czo6Tm8gfTsKKyAgICAgICAgYm9v
bCBpdGFsaWMgeyBmYWxzZSB9OworICAgIH07CisKKyAgICBzdGF0aWMgU3lzdGVtRm9udERhdGFi
YXNlQ29yZVRleHQmIHNpbmdsZXRvbigpOworCisgICAgZW51bSBjbGFzcyBDbGllbnRVc2UgeyBG
b3JTeXN0ZW1VSSwgRm9yVGV4dFN0eWxlIH07CisKKyAgICBWZWN0b3I8UmV0YWluUHRyPENURm9u
dERlc2NyaXB0b3JSZWY+PiBjYXNjYWRlTGlzdChjb25zdCBGb250Q2FzY2FkZURlc2NyaXB0aW9u
JiwgY29uc3QgQXRvbWljU3RyaW5nJiBjc3NGYW1pbHksIENsaWVudFVzZSwgQWxsb3dVc2VySW5z
dGFsbGVkRm9udHMpOworICAgIHZvaWQgY2xlYXIoKTsKKworcHJpdmF0ZToKKyAgICBTeXN0ZW1G
b250RGF0YWJhc2VDb3JlVGV4dCgpOworCisgICAgVmVjdG9yPFJldGFpblB0cjxDVEZvbnREZXNj
cmlwdG9yUmVmPj4gY2FzY2FkZUxpc3QoY29uc3QgQ2FzY2FkZUxpc3RQYXJhbWV0ZXJzJiwgQ2xp
ZW50VXNlKTsKKworICAgIHN0YXRpYyBSZXRhaW5QdHI8Q1RGb250UmVmPiBhcHBseVdlaWdodEl0
YWxpY3NBbmRGYWxsYmFja0JlaGF2aW9yKENURm9udFJlZiwgQ0dGbG9hdCB3ZWlnaHQsIGJvb2wg
aXRhbGljLCBmbG9hdCBzaXplLCBBbGxvd1VzZXJJbnN0YWxsZWRGb250cyk7CisgICAgc3RhdGlj
IFJldGFpblB0cjxDVEZvbnREZXNjcmlwdG9yUmVmPiByZW1vdmVDYXNjYWRlTGlzdChDVEZvbnRE
ZXNjcmlwdG9yUmVmKTsKKyAgICBzdGF0aWMgVmVjdG9yPFJldGFpblB0cjxDVEZvbnREZXNjcmlw
dG9yUmVmPj4gY29tcHV0ZUNhc2NhZGVMaXN0KENURm9udFJlZiwgQ0ZTdHJpbmdSZWYgbG9jYWxl
KTsKKyAgICBzdGF0aWMgQ2FzY2FkZUxpc3RQYXJhbWV0ZXJzIHN5c3RlbUZvbnRQYXJhbWV0ZXJz
KGNvbnN0IEZvbnRDYXNjYWRlRGVzY3JpcHRpb24mLCBjb25zdCBBdG9taWNTdHJpbmcmIGZhbWls
eU5hbWUsIENsaWVudFVzZSwgQWxsb3dVc2VySW5zdGFsbGVkRm9udHMpOworCisgICAgSGFzaE1h
cDxDYXNjYWRlTGlzdFBhcmFtZXRlcnMsIFZlY3RvcjxSZXRhaW5QdHI8Q1RGb250RGVzY3JpcHRv
clJlZj4+LCBDYXNjYWRlTGlzdFBhcmFtZXRlcnM6OkNhc2NhZGVMaXN0UGFyYW1ldGVyc0hhc2gs
IFNpbXBsZUNsYXNzSGFzaFRyYWl0czxDYXNjYWRlTGlzdFBhcmFtZXRlcnM+PiBtX3N5c3RlbUZv
bnRDYWNoZTsKK307CisKK30KKworI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>351788</attachid>
            <date>2018-10-08 10:22:18 -0700</date>
            <delta_ts>2018-10-08 10:47:38 -0700</delta_ts>
            <desc>patch</desc>
            <filename>systemfontdatabase-file-5.patch</filename>
            <type>text/plain</type>
            <size>40415</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzNjkxNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUyIEBACisyMDE4LTEwLTA4ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIFN5c3RlbUZvbnREYXRh
YmFzZSB0byBhIGZpbGUgb2YgaXRzIG93bgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTkwMzQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRHVt
ZXouCisKKyAgICAgICAgQWxzbyByZW5hbWUgaXQgdG8gU3lzdGVtRm9udERhdGFiYXNlQ29yZVRl
eHQgYXMgaXQgaXMgQ29yZVRleHQgc3BlY2lmaWMuCisKKyAgICAgICAgKiBTb3VyY2VzQ29jb2Eu
dHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RGVzY3JpcHRpb25Db2NvYS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGb250RGVzY3JpcHRpb246OmludmFsaWRhdGVDYWNoZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6c3lzdGVtRm9udENhc2NhZGVMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkZvbnRDYXNjYWRlRGVzY3JpcHRpb246OmVmZmVjdGl2ZUZhbWlseUNvdW50IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlRGVzY3JpcHRpb246OmVmZmVjdGl2ZUZhbWlseUF0
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN5c3RlbUZvbnREYXRhYmFzZTo6Q29yZVRleHRD
YXNjYWRlTGlzdFBhcmFtZXRlcnM6OkNvcmVUZXh0Q2FzY2FkZUxpc3RQYXJhbWV0ZXJzKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlN5c3RlbUZvbnREYXRhYmFzZTo6Q29yZVRleHRDYXNj
YWRlTGlzdFBhcmFtZXRlcnM6OmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlN5c3RlbUZvbnREYXRhYmFzZTo6Q29yZVRleHRDYXNjYWRl
TGlzdFBhcmFtZXRlcnM6Om9wZXJhdG9yPT0gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6U3lzdGVtRm9udERhdGFiYXNlOjpDb3JlVGV4dENhc2NhZGVMaXN0UGFyYW1ldGVyczo6
aGFzaCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTeXN0ZW1Gb250RGF0YWJh
c2U6OkNvcmVUZXh0Q2FzY2FkZUxpc3RQYXJhbWV0ZXJzOjpDb3JlVGV4dENhc2NhZGVMaXN0UGFy
YW1ldGVyc0hhc2g6Omhhc2gpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U3lzdGVtRm9u
dERhdGFiYXNlOjpDb3JlVGV4dENhc2NhZGVMaXN0UGFyYW1ldGVyczo6Q29yZVRleHRDYXNjYWRl
TGlzdFBhcmFtZXRlcnNIYXNoOjplcXVhbCk6IERlbGV0ZWQuCisgICAgICAgICgpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6U3lzdGVtRm9udERhdGFiYXNlOjpzaW5nbGV0b24pOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6U3lzdGVtRm9udERhdGFiYXNlOjpzeXN0ZW1Gb250Q2Fz
Y2FkZUxpc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U3lzdGVtRm9udERhdGFiYXNl
OjpjbGVhcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTeXN0ZW1Gb250RGF0YWJhc2U6
OlN5c3RlbUZvbnREYXRhYmFzZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTeXN0ZW1G
b250RGF0YWJhc2U6OmFwcGx5V2VpZ2h0SXRhbGljc0FuZEZhbGxiYWNrQmVoYXZpb3IpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6U3lzdGVtRm9udERhdGFiYXNlOjpyZW1vdmVDYXNjYWRl
TGlzdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTeXN0ZW1Gb250RGF0YWJhc2U6OmNv
bXB1dGVDYXNjYWRlTGlzdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpzeXN0ZW1Gb250
UGFyYW1ldGVycyk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
U3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0OjpzaW5nbGV0b24pOgorICAgICAgICAoV2ViQ29y
ZTo6U3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQ6OlN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0
KToKKyAgICAgICAgKFdlYkNvcmU6OlN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0OjpzeXN0ZW1G
b250Q2FzY2FkZUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3lzdGVtRm9udERhdGFiYXNlQ29y
ZVRleHQ6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OlN5c3RlbUZvbnREYXRhYmFzZUNvcmVU
ZXh0OjphcHBseVdlaWdodEl0YWxpY3NBbmRGYWxsYmFja0JlaGF2aW9yKToKKyAgICAgICAgKFdl
YkNvcmU6OlN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0OjpyZW1vdmVDYXNjYWRlTGlzdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dDo6Y29tcHV0ZUNhc2Nh
ZGVMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0Ojpz
eXN0ZW1Gb250UGFyYW1ldGVycyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
U3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpT
eXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dDo6Q2FzY2FkZUxpc3RQYXJhbWV0ZXJzOjpDYXNjYWRl
TGlzdFBhcmFtZXRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6U3lzdGVtRm9udERhdGFiYXNlQ29y
ZVRleHQ6OkNhc2NhZGVMaXN0UGFyYW1ldGVyczo6aXNIYXNoVGFibGVEZWxldGVkVmFsdWUgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6U3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQ6OkNhc2Nh
ZGVMaXN0UGFyYW1ldGVyczo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpT
eXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dDo6Q2FzY2FkZUxpc3RQYXJhbWV0ZXJzOjpoYXNoIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0OjpDYXNj
YWRlTGlzdFBhcmFtZXRlcnM6OkNhc2NhZGVMaXN0UGFyYW1ldGVyc0hhc2g6Omhhc2gpOgorICAg
ICAgICAoV2ViQ29yZTo6U3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQ6OkNhc2NhZGVMaXN0UGFy
YW1ldGVyczo6Q2FzY2FkZUxpc3RQYXJhbWV0ZXJzSGFzaDo6ZXF1YWwpOgorICAgICAgICAqIHBs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjLmNwcDoK
KwogMjAxOC0xMC0wOCAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAg
ICAgTW92ZSBGb250Q2FzY2FkZURlc2NyaXB0aW9uIHRvIGEgZmlsZSBvZiBpdHMgb3duCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQJKHJldmlzaW9uIDIzNjkxNCkKKysrIFNvdXJjZS9XZWJD
b3JlL1NvdXJjZXNDb2NvYS50eHQJKHdvcmtpbmcgY29weSkKQEAgLTMwNiw2ICszMDYsNyBAQCBw
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9IRVZDVXRpbGl0aWVzQ29jCiBwbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9JT1N1cmZhY2UubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZVBv
b2xDb2NvYS5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvTWVkaWFFbmdpbmVDb25maWd1cmF0
aW9uRmFjdG9yeUNvY29hLmNwcAorcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU3lzdGVtRm9udERh
dGFiYXNlQ29yZVRleHQuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJBY3Rpb25EaXNh
YmxpbmdDQUxheWVyRGVsZWdhdGUubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkNvcmVD
QUxheWVyRXh0cmFzLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJDb3JlRGVjb21wcmVz
c2lvblNlc3Npb24ubW0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIzNjkxNCkKKysrIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNDgx
MSw2ICs0ODExLDcgQEAKIAkJRTRERUFBMTgxN0E5M0RDMzAwMEUwNDMwIC8qIFN0eWxlVHJlZVJl
c29sdmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
NERFQUExNjE3QTkzREMzMDAwRTA0MzAgLyogU3R5bGVUcmVlUmVzb2x2ZXIuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFNEUyNDM4MzFEQUI5NTNF
MDBDMjZFNEIgLyogbWV0ZXJFbGVtZW50U2hhZG93LmNzcyBpbiBSZXNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRFMjQzODIxREFCOTUzRTAwQzI2RTRCIC8qIG1l
dGVyRWxlbWVudFNoYWRvdy5jc3MgKi87IH07CiAJCUU0RTM5QUZCMTMzMEVGQTgwMDNBQjI3NCAv
KiBMZWdhY3lUaWxlTGF5ZXJQb29sLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFNEUzOUFGQTEzMzBFRkE4MDAzQUIyNzQgLyogTGVnYWN5VGlsZUxheWVy
UG9vbC5oICovOyB9OworCQlFNEU4QjRFQzIxNkI3OUU1MDBCODgzNEQgLyogU3lzdGVtRm9udERh
dGFiYXNlQ29yZVRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEU0RThCNEVBMjE2Qjc5RTUwMEI4ODM0RCAvKiBTeXN0ZW1Gb250RGF0YWJhc2VDb3Jl
VGV4dC5oICovOyB9OwogCQlFNEU4QjRGNTIxNkI5NTY1MDBCODgzNEQgLyogRm9udENhc2NhZGVE
ZXNjcmlwdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTRFOEI0RjIyMTZCOEI2MDAwQjg4MzREIC8qIEZvbnRDYXNjYWRlRGVzY3JpcHRpb24uaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFNEU5QjEx
OTE4MTA5MTZGMDAzQUNDREYgLyogU2ltcGxlTGluZUxheW91dFJlc29sdmVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEU5QjExODE4MTA5MTZGMDAz
QUNDREYgLyogU2ltcGxlTGluZUxheW91dFJlc29sdmVyLmggKi87IH07CiAJCUU0RTlCMTFEMTgx
NDU2OUMwMDNBQ0NERiAvKiBTaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEU5QjExQzE4MTQ1NjlDMDAzQUND
REYgLyogU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5oICovOyB9OwpAQCAtMTQ1NDgsNiArMTQ1
NDksOCBAQAogCQlFNEUyNDM4MjFEQUI5NTNFMDBDMjZFNEIgLyogbWV0ZXJFbGVtZW50U2hhZG93
LmNzcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQuY3NzOyBwYXRoID0gbWV0ZXJFbGVtZW50U2hhZG93LmNzczsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTRFMzlBRkExMzMwRUZBODAwM0FCMjc0IC8q
IExlZ2FjeVRpbGVMYXllclBvb2wuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
TGVnYWN5VGlsZUxheWVyUG9vbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNEUz
OUFGQzEzMzBFRkM1MDAzQUIyNzQgLyogTGVnYWN5VGlsZUxheWVyUG9vbC5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IExlZ2FjeVRpbGVMYXllclBvb2wubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUU0RThCNEVBMjE2Qjc5RTUwMEI4ODM0RCAvKiBT
eXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlFNEU4QjRFRDIxNkI3OUY0MDBCODgzNEQgLyogU3lzdGVtRm9udERhdGFiYXNlQ29y
ZVRleHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3lzdGVtRm9u
dERhdGFiYXNlQ29yZVRleHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNEU4
QjRGMDIxNkI4QjVGMDBCODgzNEQgLyogRm9udENhc2NhZGVEZXNjcmlwdGlvbi5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb250Q2FzY2FkZURlc2NyaXB0aW9uLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTRFOEI0RjIyMTZCOEI2MDAwQjg4MzRE
IC8qIEZvbnRDYXNjYWRlRGVzY3JpcHRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRm9udENhc2NhZGVEZXNjcmlwdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFNEU5QjExODE4MTA5MTZGMDAzQUNDREYgLyogU2ltcGxlTGluZUxheW91dFJlc29sdmVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNpbXBsZUxpbmVMYXlvdXRSZXNv
bHZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjQwMjUsNiArMjQwMjgsOCBA
QAogCQkJCUFEOUZGNkUwMTkwODM5MUQwMDNCNjFFMCAvKiBJT1N1cmZhY2VQb29sQ29jb2EubW0g
Ki8sCiAJCQkJQ0RDNDhBQzgyMTQ5Q0YyQTAwMjRGRDU5IC8qIE1lZGlhRW5naW5lQ29uZmlndXJh
dGlvbkZhY3RvcnlDb2NvYS5jcHAgKi8sCiAJCQkJQ0RDNDhBQzcyMTQ5Q0YyQTAwMjRGRDU5IC8q
IE1lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnlDb2NvYS5oICovLAorCQkJCUU0RThCNEVE
MjE2Qjc5RjQwMEI4ODM0RCAvKiBTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dC5jcHAgKi8sCisJ
CQkJRTRFOEI0RUEyMTZCNzlFNTAwQjg4MzREIC8qIFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0
LmggKi8sCiAJCQkJNTI2NzI0RjIxQ0IyRkRGNjAwNzU5NzREIC8qIFRleHRUcmFja1JlcHJlc2Vu
dGF0aW9uQ29jb2EuaCAqLywKIAkJCQk1MjY3MjRGMTFDQjJGREY2MDA3NTk3NEQgLyogVGV4dFRy
YWNrUmVwcmVzZW50YXRpb25Db2NvYS5tbSAqLywKIAkJCQkyRDNFRjQ0NDE5MTc5MTVDMDAwMzQx
ODQgLyogV2ViQWN0aW9uRGlzYWJsaW5nQ0FMYXllckRlbGVnYXRlLmggKi8sCkBAIC0yNzQ5Myw2
ICsyNzQ5OCw3IEBACiAJCQkJNTczMDNCQkIyMDA2QzZFRTAwMzU1OTY1IC8qIENCT1JCaW5hcnku
aCBpbiBIZWFkZXJzICovLAogCQkJCTU3MzAzQkMxMjAwNkUwMEMwMDM1NTk2NSAvKiBDQk9SUmVh
ZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1NzMwM0JCOTIwMDZDNkVFMDAzNTU5NjUgLyogQ0JP
UlZhbHVlLmggaW4gSGVhZGVycyAqLywKKwkJCQlFNEU4QjRFQzIxNkI3OUU1MDBCODgzNEQgLyog
U3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3MzAzQkJB
MjAwNkM2RUUwMDM1NTk2NSAvKiBDQk9SV3JpdGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk2NTUw
QjY5RTA5OURGMDI3MDA5MEQ3ODEgLyogQ0RBVEFTZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlDREY0QjcxNjFFMDBCN0U1MDBFMjM1QTIgLyogQ0RNLmggaW4gSGVhZGVycyAqLywKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvTWVtb3J5UmVsZWFzZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGFnZS9NZW1vcnlSZWxlYXNlLmNwcAkocmV2aXNpb24gMjM2OTE0KQorKysg
U291cmNlL1dlYkNvcmUvcGFnZS9NZW1vcnlSZWxlYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NjMsNyArNjMsNyBAQCBzdGF0aWMgdm9pZCByZWxlYXNlTm9uY3JpdGljYWxNZW1vcnkoKQogICAg
IFJlbmRlclRoZW1lOjpzaW5nbGV0b24oKS5wdXJnZUNhY2hlcygpOwogCiAgICAgRm9udENhY2hl
OjpzaW5nbGV0b24oKS5wdXJnZUluYWN0aXZlRm9udERhdGEoKTsKLSAgICBGb250RGVzY3JpcHRp
b246OmludmFsaWRhdGVDYWNoZXMoKTsKKyAgICBGb250Q2FzY2FkZURlc2NyaXB0aW9uOjppbnZh
bGlkYXRlQ2FjaGVzKCk7CiAKICAgICBjbGVhcldpZHRoQ2FjaGVzKCk7CiAgICAgVGV4dFBhaW50
ZXI6OmNsZWFyR2x5cGhEaXNwbGF5TGlzdHMoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlRGVzY3JpcHRpb24uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlRGVzY3JpcHRpb24uY3Bw
CShyZXZpc2lvbiAyMzY5MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250Q2FzY2FkZURlc2NyaXB0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQzLDQgKzE0Mywx
MCBAQCBTdHJpbmcgRm9udENhc2NhZGVEZXNjcmlwdGlvbjo6Zm9sZGVkRmFtCiAgICAgcmV0dXJu
IGZhbWlseS5zdHJpbmcoKS5mb2xkQ2FzZSgpOwogfQogCisjaWYgIVVTRV9QTEFURk9STV9TWVNU
RU1fRkFMTEJBQ0tfTElTVAordm9pZCBGb250Q2FzY2FkZURlc2NyaXB0aW9uOjppbnZhbGlkYXRl
Q2FjaGVzKCkKK3sKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZURlc2NyaXB0aW9uLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2Nh
ZGVEZXNjcmlwdGlvbi5oCShyZXZpc2lvbiAyMzY5MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZURlc2NyaXB0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEzNCw2ICsxMzQsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEZvbnRPcHRpY2FsU2l6aW5nIGlu
aXRpYWxPcHRpY2FsU2l6aW5nKCkgeyByZXR1cm4gRm9udE9wdGljYWxTaXppbmc6OkVuYWJsZWQ7
IH0KICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBpbml0aWFsTG9jYWxlKCkgeyByZXR1
cm4gbnVsbEF0b20oKTsgfQogCisgICAgc3RhdGljIHZvaWQgaW52YWxpZGF0ZUNhY2hlcygpOwor
CiBwcml2YXRlOgogICAgIFJlZkNvdW50ZWRBcnJheTxBdG9taWNTdHJpbmc+IG1fZmFtaWxpZXMg
eyAxIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnREZXNj
cmlwdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udERlc2NyaXB0aW9uLmNwcAkocmV2aXNpb24gMjM2OTE0KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udERlc2NyaXB0aW9uLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNzEsMTAgKzcxLDQgQEAgdm9pZCBGb250RGVzY3JpcHRpb246OnNldExvY2FsZShjb25zdCBB
dAogICAgIG1fc2NyaXB0ID0gbG9jYWxlVG9TY3JpcHRDb2RlRm9yRm9udFNlbGVjdGlvbihtX2xv
Y2FsZSk7CiB9CiAKLSNpZiAhVVNFX1BMQVRGT1JNX1NZU1RFTV9GQUxMQkFDS19MSVNUCi12b2lk
IEZvbnREZXNjcmlwdGlvbjo6aW52YWxpZGF0ZUNhY2hlcygpCi17Ci19Ci0jZW5kaWYKLQogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udERlc2NyaXB0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRm9udERlc2NyaXB0aW9uLmgJKHJldmlzaW9uIDIzNjkxNCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnREZXNjcmlwdGlvbi5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xMzMsOCArMTMzLDYgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Rm9udFN0eWxlQXhp
cyhGb250U3R5bGVBeGlzIGF4aXMpIHsgbV9mb250U3R5bGVBeGlzID0gYXhpcyA9PSBGb250U3R5
bGVBeGlzOjppdGFsOyB9CiAgICAgdm9pZCBzZXRTaG91bGRBbGxvd1VzZXJJbnN0YWxsZWRGb250
cyhBbGxvd1VzZXJJbnN0YWxsZWRGb250cyBzaG91bGRBbGxvd1VzZXJJbnN0YWxsZWRGb250cykg
eyBtX3Nob3VsZEFsbG93VXNlckluc3RhbGxlZEZvbnRzID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KHNob3VsZEFsbG93VXNlckluc3RhbGxlZEZvbnRzKTsgfQogCi0gICAgc3RhdGljIHZvaWQgaW52
YWxpZGF0ZUNhY2hlcygpOwotCiBwcml2YXRlOgogICAgIC8vIEZJWE1FOiBJbnZlc3RpZ2F0ZSBt
b3ZpbmcgdGhlc2UgaW50byB0aGVpciBvd24gb2JqZWN0IG9uIHRoZSBoZWFwICh0byBzYXZlIG1l
bW9yeSkuCiAgICAgRm9udEZlYXR1cmVTZXR0aW5ncyBtX2ZlYXR1cmVTZXR0aW5nczsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAJKHJldmlzaW9uIDIzNjkxNCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTE4Niw3ICsxMTg2LDcgQEAgc3RhdGljIHZvaWQgaW52YWxpZGF0ZUZvbnRD
YWNoZSgpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBGb250RGVzY3JpcHRpb246Omlu
dmFsaWRhdGVDYWNoZXMoKTsKKyAgICBGb250Q2FzY2FkZURlc2NyaXB0aW9uOjppbnZhbGlkYXRl
Q2FjaGVzKCk7CiAKICAgICBGb250RGF0YWJhc2U6OnNpbmdsZXRvbkFsbG93aW5nVXNlckluc3Rh
bGxlZEZvbnRzKCkuY2xlYXIoKTsKICAgICBGb250RGF0YWJhc2U6OnNpbmdsZXRvbkRpc2FsbG93
aW5nVXNlckluc3RhbGxlZEZvbnRzKCkuY2xlYXIoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnREZXNjcmlwdGlvbkNvY29hLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RGVzY3JpcHRp
b25Db2NvYS5jcHAJKHJldmlzaW9uIDIzNjkxNCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0ZvbnREZXNjcmlwdGlvbkNvY29hLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjYsMTc1ICsyNiwxMiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkZvbnRE
ZXNjcmlwdGlvbi5oIgogCi0jaW5jbHVkZSAiRm9udENhY2hlLmgiCi0jaW5jbHVkZSAiRm9udEZh
bWlseVNwZWNpZmljYXRpb25Db3JlVGV4dC5oIgotI2luY2x1ZGUgPHBhbC9zcGkvY29jb2EvQ29y
ZVRleHRTUEkuaD4KLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9IYXNo
VHJhaXRzLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+Ci0jaW5jbHVkZSA8
d3RmL3RleHQvQXRvbWljU3RyaW5nSGFzaC5oPgotCi0jaWYgUExBVEZPUk0oSU9TKQotI2luY2x1
ZGUgIlJlbmRlclRoZW1lSU9TLmgiCi0jZW5kaWYKKyNpbmNsdWRlICJTeXN0ZW1Gb250RGF0YWJh
c2VDb3JlVGV4dC5oIgogCiAjaWYgVVNFX1BMQVRGT1JNX1NZU1RFTV9GQUxMQkFDS19MSVNUCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU3lzdGVtRm9udERhdGFiYXNlIHsKLXB1Ymxp
YzoKLSAgICBzdHJ1Y3QgQ29yZVRleHRDYXNjYWRlTGlzdFBhcmFtZXRlcnMgewotICAgICAgICBD
b3JlVGV4dENhc2NhZGVMaXN0UGFyYW1ldGVycygpCi0gICAgICAgIHsKLSAgICAgICAgfQotCi0g
ICAgICAgIENvcmVUZXh0Q2FzY2FkZUxpc3RQYXJhbWV0ZXJzKFdURjo6SGFzaFRhYmxlRGVsZXRl
ZFZhbHVlVHlwZSkKLSAgICAgICAgICAgIDogZm9udE5hbWUoV1RGOjpIYXNoVGFibGVEZWxldGVk
VmFsdWUpCi0gICAgICAgIHsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgaXNIYXNoVGFibGVE
ZWxldGVkVmFsdWUoKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZm9udE5h
bWUuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBDb3JlVGV4dENhc2NhZGVMaXN0UGFyYW1ldGVycyYgb3RoZXIpIGNv
bnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBmb250TmFtZSA9PSBvdGhlci5mb250
TmFtZQotICAgICAgICAgICAgICAgICYmIGxvY2FsZSA9PSBvdGhlci5sb2NhbGUKLSAgICAgICAg
ICAgICAgICAmJiB3ZWlnaHQgPT0gb3RoZXIud2VpZ2h0Ci0gICAgICAgICAgICAgICAgJiYgc2l6
ZSA9PSBvdGhlci5zaXplCi0gICAgICAgICAgICAgICAgJiYgYWxsb3dVc2VySW5zdGFsbGVkRm9u
dHMgPT0gb3RoZXIuYWxsb3dVc2VySW5zdGFsbGVkRm9udHMKLSAgICAgICAgICAgICAgICAmJiBp
dGFsaWMgPT0gb3RoZXIuaXRhbGljOwotICAgICAgICB9Ci0KLSAgICAgICAgdW5zaWduZWQgaGFz
aCgpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIEludGVnZXJIYXNoZXIgaGFzaGVyOwot
ICAgICAgICAgICAgQVNTRVJUKCFmb250TmFtZS5pc051bGwoKSk7Ci0gICAgICAgICAgICBoYXNo
ZXIuYWRkKGxvY2FsZS5leGlzdGluZ0hhc2goKSk7Ci0gICAgICAgICAgICBoYXNoZXIuYWRkKGxv
Y2FsZS5pc051bGwoKSA/IDAgOiBsb2NhbGUuZXhpc3RpbmdIYXNoKCkpOwotICAgICAgICAgICAg
aGFzaGVyLmFkZCh3ZWlnaHQpOwotICAgICAgICAgICAgaGFzaGVyLmFkZChzaXplKTsKLSAgICAg
ICAgICAgIGhhc2hlci5hZGQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGFsbG93VXNlckluc3RhbGxl
ZEZvbnRzKSk7Ci0gICAgICAgICAgICBoYXNoZXIuYWRkKGl0YWxpYyk7Ci0gICAgICAgICAgICBy
ZXR1cm4gaGFzaGVyLmhhc2goKTsKLSAgICAgICAgfQotCi0gICAgICAgIHN0cnVjdCBDb3JlVGV4
dENhc2NhZGVMaXN0UGFyYW1ldGVyc0hhc2ggOiBXVEY6OlBhaXJIYXNoPEF0b21pY1N0cmluZywg
ZmxvYXQ+IHsKLSAgICAgICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IENvcmVUZXh0
Q2FzY2FkZUxpc3RQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQotICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgIHJldHVybiBwYXJhbWV0ZXJzLmhhc2goKTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IENvcmVUZXh0Q2FzY2FkZUxpc3RQYXJhbWV0
ZXJzJiBhLCBjb25zdCBDb3JlVGV4dENhc2NhZGVMaXN0UGFyYW1ldGVycyYgYikKLSAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gYSA9PSBiOwotICAgICAgICAgICAgfQotICAg
ICAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQg
PSB0cnVlOwotICAgICAgICB9OwotCi0gICAgICAgIEF0b21pY1N0cmluZyBmb250TmFtZTsKLSAg
ICAgICAgQXRvbWljU3RyaW5nIGxvY2FsZTsKLSAgICAgICAgQ0dGbG9hdCB3ZWlnaHQgeyAwIH07
Ci0gICAgICAgIGZsb2F0IHNpemUgeyAwIH07Ci0gICAgICAgIEFsbG93VXNlckluc3RhbGxlZEZv
bnRzIGFsbG93VXNlckluc3RhbGxlZEZvbnRzIHsgQWxsb3dVc2VySW5zdGFsbGVkRm9udHM6Ok5v
IH07Ci0gICAgICAgIGJvb2wgaXRhbGljIHsgZmFsc2UgfTsKLSAgICB9OwotCi0gICAgc3RhdGlj
IFN5c3RlbUZvbnREYXRhYmFzZSYgc2luZ2xldG9uKCkKLSAgICB7Ci0gICAgICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxTeXN0ZW1Gb250RGF0YWJhc2U+IGRhdGFiYXNlID0gU3lzdGVtRm9udERh
dGFiYXNlKCk7Ci0gICAgICAgIHJldHVybiBkYXRhYmFzZS5nZXQoKTsKLSAgICB9Ci0KLSAgICBl
bnVtIGNsYXNzIENsaWVudFVzZSB7IEZvclN5c3RlbVVJLCBGb3JUZXh0U3R5bGUgfTsKLQotICAg
IFZlY3RvcjxSZXRhaW5QdHI8Q1RGb250RGVzY3JpcHRvclJlZj4+IHN5c3RlbUZvbnRDYXNjYWRl
TGlzdChjb25zdCBDb3JlVGV4dENhc2NhZGVMaXN0UGFyYW1ldGVycyYgcGFyYW1ldGVycywgQ2xp
ZW50VXNlIGNsaWVudFVzZSkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCghcGFyYW1ldGVycy5mb250
TmFtZS5pc051bGwoKSk7Ci0gICAgICAgIHJldHVybiBtX3N5c3RlbUZvbnRDYWNoZS5lbnN1cmUo
cGFyYW1ldGVycywgWyZdIHsKLSAgICAgICAgICAgIGF1dG8gbG9jYWxlU3RyaW5nID0gcGFyYW1l
dGVycy5sb2NhbGUuc3RyaW5nKCkuY3JlYXRlQ0ZTdHJpbmcoKTsKLSAgICAgICAgICAgIFJldGFp
blB0cjxDVEZvbnRSZWY+IHN5c3RlbUZvbnQ7Ci0gICAgICAgICAgICBpZiAoY2xpZW50VXNlID09
IENsaWVudFVzZTo6Rm9yU3lzdGVtVUkpIHsKLSAgICAgICAgICAgICAgICBzeXN0ZW1Gb250ID0g
YWRvcHRDRihDVEZvbnRDcmVhdGVVSUZvbnRGb3JMYW5ndWFnZShrQ1RGb250VUlGb250U3lzdGVt
LCBwYXJhbWV0ZXJzLnNpemUsIGxvY2FsZVN0cmluZy5nZXQoKSkpOwotICAgICAgICAgICAgICAg
IEFTU0VSVChzeXN0ZW1Gb250KTsKLSAgICAgICAgICAgICAgICAvLyBGSVhNRTogVXNlIGFwcGx5
V2VpZ2h0SXRhbGljc0FuZEZhbGxiYWNrQmVoYXZpb3IoKSBpbiBib3RoIGNhc2VzIG9uY2UgPHJk
YXI6Ly9wcm9ibGVtLzMzMDQ2MDQxPiBpcyBmaXhlZC4KLSAgICAgICAgICAgICAgICBzeXN0ZW1G
b250ID0gYXBwbHlXZWlnaHRJdGFsaWNzQW5kRmFsbGJhY2tCZWhhdmlvcihzeXN0ZW1Gb250Lmdl
dCgpLCBwYXJhbWV0ZXJzLndlaWdodCwgcGFyYW1ldGVycy5pdGFsaWMsIHBhcmFtZXRlcnMuc2l6
ZSwgcGFyYW1ldGVycy5hbGxvd1VzZXJJbnN0YWxsZWRGb250cyk7Ci0gICAgICAgICAgICB9IGVs
c2UgewotI2lmIFBMQVRGT1JNKElPUykKLSAgICAgICAgICAgICAgICBBU1NFUlQoY2xpZW50VXNl
ID09IENsaWVudFVzZTo6Rm9yVGV4dFN0eWxlKTsKLSAgICAgICAgICAgICAgICBhdXRvIGZvbnRE
ZXNjcmlwdG9yID0gYWRvcHRDRihDVEZvbnREZXNjcmlwdG9yQ3JlYXRlV2l0aFRleHRTdHlsZShw
YXJhbWV0ZXJzLmZvbnROYW1lLnN0cmluZygpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIFJlbmRl
clRoZW1lSU9TOjpjb250ZW50U2l6ZUNhdGVnb3J5KCksIG51bGxwdHIpKTsKLSAgICAgICAgICAg
ICAgICBDVEZvbnRTeW1ib2xpY1RyYWl0cyB0cmFpdHMgPSAocGFyYW1ldGVycy53ZWlnaHQgPj0g
a0NURm9udFdlaWdodFNlbWlib2xkID8ga0NURm9udFRyYWl0Qm9sZCA6IDApIHwgKHBhcmFtZXRl
cnMuaXRhbGljID8ga0NURm9udFRyYWl0SXRhbGljIDogMCk7Ci0gICAgICAgICAgICAgICAgaWYg
KHRyYWl0cykKLSAgICAgICAgICAgICAgICAgICAgZm9udERlc2NyaXB0b3IgPSBhZG9wdENGKENU
Rm9udERlc2NyaXB0b3JDcmVhdGVDb3B5V2l0aFN5bWJvbGljVHJhaXRzKGZvbnREZXNjcmlwdG9y
LmdldCgpLCB0cmFpdHMsIHRyYWl0cykpOwotICAgICAgICAgICAgICAgIHN5c3RlbUZvbnQgPSBj
cmVhdGVGb250Rm9ySW5zdGFsbGVkRm9udHMoZm9udERlc2NyaXB0b3IuZ2V0KCksIHBhcmFtZXRl
cnMuc2l6ZSwgcGFyYW1ldGVycy5hbGxvd1VzZXJJbnN0YWxsZWRGb250cyk7Ci0jZWxzZQotICAg
ICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotI2VuZGlmCi0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICBBU1NFUlQoc3lzdGVtRm9udCk7Ci0gICAgICAgICAgICBhdXRvIHJlc3Vs
dCA9IGNvbXB1dGVDYXNjYWRlTGlzdChzeXN0ZW1Gb250LmdldCgpLCBsb2NhbGVTdHJpbmcuZ2V0
KCkpOwotICAgICAgICAgICAgQVNTRVJUKCFyZXN1bHQuaXNFbXB0eSgpKTsKLSAgICAgICAgICAg
IHJldHVybiByZXN1bHQ7Ci0gICAgICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKLSAgICB9Ci0KLSAg
ICB2b2lkIGNsZWFyKCkKLSAgICB7Ci0gICAgICAgIG1fc3lzdGVtRm9udENhY2hlLmNsZWFyKCk7
Ci0gICAgfQotCi1wcml2YXRlOgotICAgIFN5c3RlbUZvbnREYXRhYmFzZSgpCi0gICAgewotICAg
IH0KLQotICAgIHN0YXRpYyBSZXRhaW5QdHI8Q1RGb250UmVmPiBhcHBseVdlaWdodEl0YWxpY3NB
bmRGYWxsYmFja0JlaGF2aW9yKENURm9udFJlZiBmb250LCBDR0Zsb2F0IHdlaWdodCwgYm9vbCBp
dGFsaWMsIGZsb2F0IHNpemUsIEFsbG93VXNlckluc3RhbGxlZEZvbnRzIGFsbG93VXNlckluc3Rh
bGxlZEZvbnRzKQotICAgIHsKLSAgICAgICAgYXV0byB3ZWlnaHROdW1iZXIgPSBhZG9wdENGKENG
TnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRk51bWJlckNHRmxvYXRUeXBlLCAm
d2VpZ2h0KSk7Ci0gICAgICAgIGNvbnN0IGZsb2F0IHN5c3RlbUZvbnRJdGFsaWNTbG9wZSA9IDAu
MDc7Ci0gICAgICAgIGZsb2F0IGl0YWxpY3NSYXdOdW1iZXIgPSBpdGFsaWMgPyBzeXN0ZW1Gb250
SXRhbGljU2xvcGUgOiAwOwotICAgICAgICBhdXRvIGl0YWxpY3NOdW1iZXIgPSBhZG9wdENGKENG
TnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRk51bWJlckZsb2F0VHlwZSwgJml0
YWxpY3NSYXdOdW1iZXIpKTsKLSAgICAgICAgQ0ZUeXBlUmVmIHRyYWl0c0tleXNbXSA9IHsga0NU
Rm9udFdlaWdodFRyYWl0LCBrQ1RGb250U2xhbnRUcmFpdCwga0NURm9udFVJRm9udERlc2lnblRy
YWl0IH07Ci0gICAgICAgIENGVHlwZVJlZiB0cmFpdHNWYWx1ZXNbXSA9IHsgd2VpZ2h0TnVtYmVy
LmdldCgpLCBpdGFsaWNzTnVtYmVyLmdldCgpLCBrQ0ZCb29sZWFuVHJ1ZSB9OwotICAgICAgICBh
dXRvIHRyYWl0c0RpY3Rpb25hcnkgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZShrQ0ZBbGxv
Y2F0b3JEZWZhdWx0LCB0cmFpdHNLZXlzLCB0cmFpdHNWYWx1ZXMsIFdURl9BUlJBWV9MRU5HVEgo
dHJhaXRzS2V5cyksICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0
aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKLSAgICAgICAgYXV0byBhdHRyaWJ1dGVzID0gYWRvcHRD
RihDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsICZrQ0ZU
eXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFj
a3MpKTsKLSAgICAgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoYXR0cmlidXRlcy5nZXQoKSwga0NU
Rm9udFRyYWl0c0F0dHJpYnV0ZSwgdHJhaXRzRGljdGlvbmFyeS5nZXQoKSk7Ci0gICAgICAgIGFk
ZEF0dHJpYnV0ZXNGb3JJbnN0YWxsZWRGb250cyhhdHRyaWJ1dGVzLmdldCgpLCBhbGxvd1VzZXJJ
bnN0YWxsZWRGb250cyk7Ci0gICAgICAgIGF1dG8gbW9kaWZpY2F0aW9uID0gYWRvcHRDRihDVEZv
bnREZXNjcmlwdG9yQ3JlYXRlV2l0aEF0dHJpYnV0ZXMoYXR0cmlidXRlcy5nZXQoKSkpOwotICAg
ICAgICByZXR1cm4gYWRvcHRDRihDVEZvbnRDcmVhdGVDb3B5V2l0aEF0dHJpYnV0ZXMoZm9udCwg
c2l6ZSwgbnVsbHB0ciwgbW9kaWZpY2F0aW9uLmdldCgpKSk7Ci0gICAgfQotCi0gICAgc3RhdGlj
IFJldGFpblB0cjxDVEZvbnREZXNjcmlwdG9yUmVmPiByZW1vdmVDYXNjYWRlTGlzdChDVEZvbnRE
ZXNjcmlwdG9yUmVmIGZvbnREZXNjcmlwdG9yKQotICAgIHsKLSAgICAgICAgYXV0byBlbXB0eUFy
cmF5ID0gYWRvcHRDRihDRkFycmF5Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIG51bGxwdHIs
IDAsICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpKTsKLSAgICAgICAgQ0ZUeXBlUmVmIGZhbGxiYWNr
RGljdGlvbmFyeUtleXNbXSA9IHsga0NURm9udENhc2NhZGVMaXN0QXR0cmlidXRlIH07Ci0gICAg
ICAgIENGVHlwZVJlZiBmYWxsYmFja0RpY3Rpb25hcnlWYWx1ZXNbXSA9IHsgZW1wdHlBcnJheS5n
ZXQoKSB9OwotICAgICAgICBhdXRvIGZhbGxiYWNrRGljdGlvbmFyeSA9IGFkb3B0Q0YoQ0ZEaWN0
aW9uYXJ5Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGZhbGxiYWNrRGljdGlvbmFyeUtleXMs
IGZhbGxiYWNrRGljdGlvbmFyeVZhbHVlcywgV1RGX0FSUkFZX0xFTkdUSChmYWxsYmFja0RpY3Rp
b25hcnlLZXlzKSwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rp
b25hcnlWYWx1ZUNhbGxCYWNrcykpOwotICAgICAgICBhdXRvIG1vZGlmaWVkRm9udERlc2NyaXB0
b3IgPSBhZG9wdENGKENURm9udERlc2NyaXB0b3JDcmVhdGVDb3B5V2l0aEF0dHJpYnV0ZXMoZm9u
dERlc2NyaXB0b3IsIGZhbGxiYWNrRGljdGlvbmFyeS5nZXQoKSkpOwotICAgICAgICByZXR1cm4g
bW9kaWZpZWRGb250RGVzY3JpcHRvcjsKLSAgICB9Ci0KLSAgICBzdGF0aWMgVmVjdG9yPFJldGFp
blB0cjxDVEZvbnREZXNjcmlwdG9yUmVmPj4gY29tcHV0ZUNhc2NhZGVMaXN0KENURm9udFJlZiBm
b250LCBDRlN0cmluZ1JlZiBsb2NhbGUpCi0gICAgewotICAgICAgICBDRlR5cGVSZWYgYXJyYXlW
YWx1ZXNbXSA9IHsgbG9jYWxlIH07Ci0gICAgICAgIGF1dG8gbG9jYWxlQXJyYXkgPSBhZG9wdENG
KENGQXJyYXlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYXJyYXlWYWx1ZXMsIFdURl9BUlJB
WV9MRU5HVEgoYXJyYXlWYWx1ZXMpLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKSk7Ci0gICAgICAg
IGF1dG8gY2FzY2FkZUxpc3QgPSBhZG9wdENGKENURm9udENvcHlEZWZhdWx0Q2FzY2FkZUxpc3RG
b3JMYW5ndWFnZXMoZm9udCwgbG9jYWxlQXJyYXkuZ2V0KCkpKTsKLSAgICAgICAgVmVjdG9yPFJl
dGFpblB0cjxDVEZvbnREZXNjcmlwdG9yUmVmPj4gcmVzdWx0OwotICAgICAgICAvLyBXZWJLaXQg
aGFuZGxlcyB0aGUgY2FzY2FkZSBsaXN0LCBhbmQgV2ViS2l0IDIncyBJUEMgY29kZSBkb2Vzbid0
IGtub3cgaG93IHRvIHNlcmlhbGl6ZSBDb3JlIFRleHQncyBjYXNjYWRlIGxpc3QuCi0gICAgICAg
IHJlc3VsdC5hcHBlbmQocmVtb3ZlQ2FzY2FkZUxpc3QoYWRvcHRDRihDVEZvbnRDb3B5Rm9udERl
c2NyaXB0b3IoZm9udCkpLmdldCgpKSk7Ci0gICAgICAgIGlmIChjYXNjYWRlTGlzdCkgewotICAg
ICAgICAgICAgQ0ZJbmRleCBhcnJheUxlbmd0aCA9IENGQXJyYXlHZXRDb3VudChjYXNjYWRlTGlz
dC5nZXQoKSk7Ci0gICAgICAgICAgICBmb3IgKENGSW5kZXggaSA9IDA7IGkgPCBhcnJheUxlbmd0
aDsgKytpKQotICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoc3RhdGljX2Nhc3Q8Q1RGb250
RGVzY3JpcHRvclJlZj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRleChjYXNjYWRlTGlzdC5nZXQoKSwg
aSkpKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLQotICAgIEhh
c2hNYXA8Q29yZVRleHRDYXNjYWRlTGlzdFBhcmFtZXRlcnMsIFZlY3RvcjxSZXRhaW5QdHI8Q1RG
b250RGVzY3JpcHRvclJlZj4+LCBDb3JlVGV4dENhc2NhZGVMaXN0UGFyYW1ldGVyczo6Q29yZVRl
eHRDYXNjYWRlTGlzdFBhcmFtZXRlcnNIYXNoLCBTaW1wbGVDbGFzc0hhc2hUcmFpdHM8Q29yZVRl
eHRDYXNjYWRlTGlzdFBhcmFtZXRlcnM+PiBtX3N5c3RlbUZvbnRDYWNoZTsKLX07Ci0KIHN0YXRp
YyBpbmxpbmUgYm9vbCBpc1N5c3RlbUZvbnRTdHJpbmcoY29uc3QgQXRvbWljU3RyaW5nJiBzdHJp
bmcpCiB7CiAgICAgcmV0dXJuIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHN0cmluZywg
Ii13ZWJraXQtc3lzdGVtLWZvbnQiKQpAQCAtMjQ0LDU3ICs4MSwxNCBAQCBzdGF0aWMgaW5saW5l
IGJvb2wgaXNVSUZvbnRUZXh0U3R5bGUoY29uCiB9CiAjZW5kaWYKIAotc3RhdGljIGlubGluZSBT
eXN0ZW1Gb250RGF0YWJhc2U6OkNvcmVUZXh0Q2FzY2FkZUxpc3RQYXJhbWV0ZXJzIHN5c3RlbUZv
bnRQYXJhbWV0ZXJzKGNvbnN0IEZvbnRDYXNjYWRlRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uLCBj
b25zdCBBdG9taWNTdHJpbmcmIGZhbWlseU5hbWUsIFN5c3RlbUZvbnREYXRhYmFzZTo6Q2xpZW50
VXNlIGNsaWVudFVzZSwgQWxsb3dVc2VySW5zdGFsbGVkRm9udHMgYWxsb3dVc2VySW5zdGFsbGVk
Rm9udHMpCi17Ci0gICAgU3lzdGVtRm9udERhdGFiYXNlOjpDb3JlVGV4dENhc2NhZGVMaXN0UGFy
YW1ldGVycyByZXN1bHQ7Ci0gICAgcmVzdWx0LmxvY2FsZSA9IGRlc2NyaXB0aW9uLmxvY2FsZSgp
OwotICAgIHJlc3VsdC5zaXplID0gZGVzY3JpcHRpb24uY29tcHV0ZWRTaXplKCk7Ci0gICAgcmVz
dWx0Lml0YWxpYyA9IGlzSXRhbGljKGRlc2NyaXB0aW9uLml0YWxpYygpKTsKLQotICAgIGF1dG8g
d2VpZ2h0ID0gZGVzY3JpcHRpb24ud2VpZ2h0KCk7Ci0gICAgaWYgKEZvbnRDYWNoZTo6c2luZ2xl
dG9uKCkuc2hvdWxkTW9ja0JvbGRTeXN0ZW1Gb250Rm9yQWNjZXNzaWJpbGl0eSgpKQotICAgICAg
ICB3ZWlnaHQgPSB3ZWlnaHQgKyBGb250U2VsZWN0aW9uVmFsdWUoMjAwKTsKLQotICAgIGlmICh3
ZWlnaHQgPCBGb250U2VsZWN0aW9uVmFsdWUoMTUwKSkKLSAgICAgICAgcmVzdWx0LndlaWdodCA9
IGtDVEZvbnRXZWlnaHRVbHRyYUxpZ2h0OwotICAgIGVsc2UgaWYgKHdlaWdodCA8IEZvbnRTZWxl
Y3Rpb25WYWx1ZSgyNTApKQotICAgICAgICByZXN1bHQud2VpZ2h0ID0ga0NURm9udFdlaWdodFRo
aW47Ci0gICAgZWxzZSBpZiAod2VpZ2h0IDwgRm9udFNlbGVjdGlvblZhbHVlKDM1MCkpCi0gICAg
ICAgIHJlc3VsdC53ZWlnaHQgPSBrQ1RGb250V2VpZ2h0TGlnaHQ7Ci0gICAgZWxzZSBpZiAod2Vp
Z2h0IDwgRm9udFNlbGVjdGlvblZhbHVlKDQ1MCkpCi0gICAgICAgIHJlc3VsdC53ZWlnaHQgPSBr
Q1RGb250V2VpZ2h0UmVndWxhcjsKLSAgICBlbHNlIGlmICh3ZWlnaHQgPCBGb250U2VsZWN0aW9u
VmFsdWUoNTUwKSkKLSAgICAgICAgcmVzdWx0LndlaWdodCA9IGtDVEZvbnRXZWlnaHRNZWRpdW07
Ci0gICAgZWxzZSBpZiAod2VpZ2h0IDwgRm9udFNlbGVjdGlvblZhbHVlKDY1MCkpCi0gICAgICAg
IHJlc3VsdC53ZWlnaHQgPSBrQ1RGb250V2VpZ2h0U2VtaWJvbGQ7Ci0gICAgZWxzZSBpZiAod2Vp
Z2h0IDwgRm9udFNlbGVjdGlvblZhbHVlKDc1MCkpCi0gICAgICAgIHJlc3VsdC53ZWlnaHQgPSBr
Q1RGb250V2VpZ2h0Qm9sZDsKLSAgICBlbHNlIGlmICh3ZWlnaHQgPCBGb250U2VsZWN0aW9uVmFs
dWUoODUwKSkKLSAgICAgICAgcmVzdWx0LndlaWdodCA9IGtDVEZvbnRXZWlnaHRIZWF2eTsKLSAg
ICBlbHNlCi0gICAgICAgIHJlc3VsdC53ZWlnaHQgPSBrQ1RGb250V2VpZ2h0QmxhY2s7Ci0KLSAg
ICBpZiAoY2xpZW50VXNlID09IFN5c3RlbUZvbnREYXRhYmFzZTo6Q2xpZW50VXNlOjpGb3JTeXN0
ZW1VSSkgewotICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBzeXN0
ZW1VSSA9IEF0b21pY1N0cmluZygic3lzdGVtLXVpIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCk7Ci0gICAgICAgIHJlc3VsdC5mb250TmFtZSA9IHN5c3RlbVVJLmdldCgpOwot
ICAgIH0gZWxzZSB7Ci0gICAgICAgIEFTU0VSVChjbGllbnRVc2UgPT0gU3lzdGVtRm9udERhdGFi
YXNlOjpDbGllbnRVc2U6OkZvclRleHRTdHlsZSk7Ci0gICAgICAgIHJlc3VsdC5mb250TmFtZSA9
IGZhbWlseU5hbWU7Ci0gICAgfQotCi0gICAgcmVzdWx0LmFsbG93VXNlckluc3RhbGxlZEZvbnRz
ID0gYWxsb3dVc2VySW5zdGFsbGVkRm9udHM7Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi12
b2lkIEZvbnREZXNjcmlwdGlvbjo6aW52YWxpZGF0ZUNhY2hlcygpCit2b2lkIEZvbnRDYXNjYWRl
RGVzY3JpcHRpb246OmludmFsaWRhdGVDYWNoZXMoKQogewotICAgIFN5c3RlbUZvbnREYXRhYmFz
ZTo6c2luZ2xldG9uKCkuY2xlYXIoKTsKKyAgICBTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dDo6
c2luZ2xldG9uKCkuY2xlYXIoKTsKIH0KIAotc3RhdGljIGlubGluZSBWZWN0b3I8UmV0YWluUHRy
PENURm9udERlc2NyaXB0b3JSZWY+PiBzeXN0ZW1Gb250Q2FzY2FkZUxpc3QoY29uc3QgRm9udENh
c2NhZGVEZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24sIGNvbnN0IEF0b21pY1N0cmluZyYgY3NzRmFt
aWx5LCBTeXN0ZW1Gb250RGF0YWJhc2U6OkNsaWVudFVzZSBjbGllbnRVc2UsIEFsbG93VXNlcklu
c3RhbGxlZEZvbnRzIGFsbG93VXNlckluc3RhbGxlZEZvbnRzKQorc3RhdGljIGlubGluZSBWZWN0
b3I8UmV0YWluUHRyPENURm9udERlc2NyaXB0b3JSZWY+PiBzeXN0ZW1Gb250Q2FzY2FkZUxpc3Qo
Y29uc3QgRm9udENhc2NhZGVEZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24sIGNvbnN0IEF0b21pY1N0
cmluZyYgY3NzRmFtaWx5LCBTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dDo6Q2xpZW50VXNlIGNs
aWVudFVzZSwgQWxsb3dVc2VySW5zdGFsbGVkRm9udHMgYWxsb3dVc2VySW5zdGFsbGVkRm9udHMp
CiB7Ci0gICAgcmV0dXJuIFN5c3RlbUZvbnREYXRhYmFzZTo6c2luZ2xldG9uKCkuc3lzdGVtRm9u
dENhc2NhZGVMaXN0KHN5c3RlbUZvbnRQYXJhbWV0ZXJzKGRlc2NyaXB0aW9uLCBjc3NGYW1pbHks
IGNsaWVudFVzZSwgYWxsb3dVc2VySW5zdGFsbGVkRm9udHMpLCBjbGllbnRVc2UpOworICAgIHJl
dHVybiBTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dDo6c2luZ2xldG9uKCkuY2FzY2FkZUxpc3Qo
ZGVzY3JpcHRpb24sIGNzc0ZhbWlseSwgY2xpZW50VXNlLCBhbGxvd1VzZXJJbnN0YWxsZWRGb250
cyk7CiB9CiAKIHVuc2lnbmVkIEZvbnRDYXNjYWRlRGVzY3JpcHRpb246OmVmZmVjdGl2ZUZhbWls
eUNvdW50KCkgY29uc3QKQEAgLTMwNCwxMCArOTgsMTAgQEAgdW5zaWduZWQgRm9udENhc2NhZGVE
ZXNjcmlwdGlvbjo6ZWZmZWN0aQogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBmYW1pbHlD
b3VudCgpOyArK2kpIHsKICAgICAgICAgY29uc3QgYXV0byYgY3NzRmFtaWx5ID0gZmFtaWx5QXQo
aSk7CiAgICAgICAgIGlmIChpc1N5c3RlbUZvbnRTdHJpbmcoY3NzRmFtaWx5KSkKLSAgICAgICAg
ICAgIHJlc3VsdCArPSBzeXN0ZW1Gb250Q2FzY2FkZUxpc3QoKnRoaXMsIGNzc0ZhbWlseSwgU3lz
dGVtRm9udERhdGFiYXNlOjpDbGllbnRVc2U6OkZvclN5c3RlbVVJLCBzaG91bGRBbGxvd1VzZXJJ
bnN0YWxsZWRGb250cygpKS5zaXplKCk7CisgICAgICAgICAgICByZXN1bHQgKz0gc3lzdGVtRm9u
dENhc2NhZGVMaXN0KCp0aGlzLCBjc3NGYW1pbHksIFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0
OjpDbGllbnRVc2U6OkZvclN5c3RlbVVJLCBzaG91bGRBbGxvd1VzZXJJbnN0YWxsZWRGb250cygp
KS5zaXplKCk7CiAjaWYgUExBVEZPUk0oSU9TKQogICAgICAgICBlbHNlIGlmIChpc1VJRm9udFRl
eHRTdHlsZShjc3NGYW1pbHkpKQotICAgICAgICAgICAgcmVzdWx0ICs9IHN5c3RlbUZvbnRDYXNj
YWRlTGlzdCgqdGhpcywgY3NzRmFtaWx5LCBTeXN0ZW1Gb250RGF0YWJhc2U6OkNsaWVudFVzZTo6
Rm9yVGV4dFN0eWxlLCBzaG91bGRBbGxvd1VzZXJJbnN0YWxsZWRGb250cygpKS5zaXplKCk7Cisg
ICAgICAgICAgICByZXN1bHQgKz0gc3lzdGVtRm9udENhc2NhZGVMaXN0KCp0aGlzLCBjc3NGYW1p
bHksIFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0OjpDbGllbnRVc2U6OkZvclRleHRTdHlsZSwg
c2hvdWxkQWxsb3dVc2VySW5zdGFsbGVkRm9udHMoKSkuc2l6ZSgpOwogI2VuZGlmCiAgICAgICAg
IGVsc2UKICAgICAgICAgICAgICsrcmVzdWx0OwpAQCAtMzI3LDE0ICsxMjEsMTQgQEAgRm9udEZh
bWlseVNwZWNpZmljYXRpb24gRm9udENhc2NhZGVEZXNjcgogICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBmYW1pbHlDb3VudCgpOyArK2kpIHsKICAgICAgICAgY29uc3QgYXV0byYgY3NzRmFt
aWx5ID0gZmFtaWx5QXQoaSk7CiAgICAgICAgIGlmIChpc1N5c3RlbUZvbnRTdHJpbmcoY3NzRmFt
aWx5KSkgewotICAgICAgICAgICAgYXV0byBjYXNjYWRlTGlzdCA9IHN5c3RlbUZvbnRDYXNjYWRl
TGlzdCgqdGhpcywgY3NzRmFtaWx5LCBTeXN0ZW1Gb250RGF0YWJhc2U6OkNsaWVudFVzZTo6Rm9y
U3lzdGVtVUksIHNob3VsZEFsbG93VXNlckluc3RhbGxlZEZvbnRzKCkpOworICAgICAgICAgICAg
YXV0byBjYXNjYWRlTGlzdCA9IHN5c3RlbUZvbnRDYXNjYWRlTGlzdCgqdGhpcywgY3NzRmFtaWx5
LCBTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dDo6Q2xpZW50VXNlOjpGb3JTeXN0ZW1VSSwgc2hv
dWxkQWxsb3dVc2VySW5zdGFsbGVkRm9udHMoKSk7CiAgICAgICAgICAgICBpZiAoaW5kZXggPCBj
YXNjYWRlTGlzdC5zaXplKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIEZvbnRGYW1pbHlTcGVj
aWZpY2F0aW9uKGNhc2NhZGVMaXN0W2luZGV4XS5nZXQoKSk7CiAgICAgICAgICAgICBpbmRleCAt
PSBjYXNjYWRlTGlzdC5zaXplKCk7CiAgICAgICAgIH0KICNpZiBQTEFURk9STShJT1MpCiAgICAg
ICAgIGVsc2UgaWYgKGlzVUlGb250VGV4dFN0eWxlKGNzc0ZhbWlseSkpIHsKLSAgICAgICAgICAg
IGF1dG8gY2FzY2FkZUxpc3QgPSBzeXN0ZW1Gb250Q2FzY2FkZUxpc3QoKnRoaXMsIGNzc0ZhbWls
eSwgU3lzdGVtRm9udERhdGFiYXNlOjpDbGllbnRVc2U6OkZvclRleHRTdHlsZSwgc2hvdWxkQWxs
b3dVc2VySW5zdGFsbGVkRm9udHMoKSk7CisgICAgICAgICAgICBhdXRvIGNhc2NhZGVMaXN0ID0g
c3lzdGVtRm9udENhc2NhZGVMaXN0KCp0aGlzLCBjc3NGYW1pbHksIFN5c3RlbUZvbnREYXRhYmFz
ZUNvcmVUZXh0OjpDbGllbnRVc2U6OkZvclRleHRTdHlsZSwgc2hvdWxkQWxsb3dVc2VySW5zdGFs
bGVkRm9udHMoKSk7CiAgICAgICAgICAgICBpZiAoaW5kZXggPCBjYXNjYWRlTGlzdC5zaXplKCkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIEZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uKGNhc2NhZGVM
aXN0W2luZGV4XS5nZXQoKSk7CiAgICAgICAgICAgICBpbmRleCAtPSBjYXNjYWRlTGlzdC5zaXpl
KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9TeXN0ZW1G
b250RGF0YWJhc2VDb3JlVGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQuY3BwCShub25l
eGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1N5c3Rl
bUZvbnREYXRhYmFzZUNvcmVUZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE3NyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTeXN0ZW1Gb250
RGF0YWJhc2VDb3JlVGV4dC5oIgorCisjaWYgVVNFX1BMQVRGT1JNX1NZU1RFTV9GQUxMQkFDS19M
SVNUCisKKyNpbmNsdWRlICJGb250Q2FjaGUuaCIKKyNpbmNsdWRlICJGb250Q2FzY2FkZURlc2Ny
aXB0aW9uLmgiCisKKyNpZiBQTEFURk9STShJT1MpCisjaW5jbHVkZSAiUmVuZGVyVGhlbWVJT1Mu
aCIKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1N5c3RlbUZvbnREYXRhYmFzZUNv
cmVUZXh0JiBTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dDo6c2luZ2xldG9uKCkKK3sKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQ+IGRhdGFiYXNl
ID0gU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQoKTsKKyAgICByZXR1cm4gZGF0YWJhc2UuZ2V0
KCk7Cit9CisKK1N5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0OjpTeXN0ZW1Gb250RGF0YWJhc2VD
b3JlVGV4dCgpCit7Cit9CisKK1ZlY3RvcjxSZXRhaW5QdHI8Q1RGb250RGVzY3JpcHRvclJlZj4+
IFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0OjpjYXNjYWRlTGlzdChjb25zdCBDYXNjYWRlTGlz
dFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIENsaWVudFVzZSBjbGllbnRVc2UpCit7CisgICAgQVNT
RVJUKCFwYXJhbWV0ZXJzLmZvbnROYW1lLmlzTnVsbCgpKTsKKyAgICByZXR1cm4gbV9zeXN0ZW1G
b250Q2FjaGUuZW5zdXJlKHBhcmFtZXRlcnMsIFsmXSB7CisgICAgICAgIGF1dG8gbG9jYWxlU3Ry
aW5nID0gcGFyYW1ldGVycy5sb2NhbGUuc3RyaW5nKCkuY3JlYXRlQ0ZTdHJpbmcoKTsKKyAgICAg
ICAgUmV0YWluUHRyPENURm9udFJlZj4gc3lzdGVtRm9udDsKKyAgICAgICAgaWYgKGNsaWVudFVz
ZSA9PSBDbGllbnRVc2U6OkZvclN5c3RlbVVJKSB7CisgICAgICAgICAgICBzeXN0ZW1Gb250ID0g
YWRvcHRDRihDVEZvbnRDcmVhdGVVSUZvbnRGb3JMYW5ndWFnZShrQ1RGb250VUlGb250U3lzdGVt
LCBwYXJhbWV0ZXJzLnNpemUsIGxvY2FsZVN0cmluZy5nZXQoKSkpOworICAgICAgICAgICAgQVNT
RVJUKHN5c3RlbUZvbnQpOworICAgICAgICAgICAgLy8gRklYTUU6IFVzZSBhcHBseVdlaWdodEl0
YWxpY3NBbmRGYWxsYmFja0JlaGF2aW9yKCkgaW4gYm90aCBjYXNlcyBvbmNlIDxyZGFyOi8vcHJv
YmxlbS8zMzA0NjA0MT4gaXMgZml4ZWQuCisgICAgICAgICAgICBzeXN0ZW1Gb250ID0gYXBwbHlX
ZWlnaHRJdGFsaWNzQW5kRmFsbGJhY2tCZWhhdmlvcihzeXN0ZW1Gb250LmdldCgpLCBwYXJhbWV0
ZXJzLndlaWdodCwgcGFyYW1ldGVycy5pdGFsaWMsIHBhcmFtZXRlcnMuc2l6ZSwgcGFyYW1ldGVy
cy5hbGxvd1VzZXJJbnN0YWxsZWRGb250cyk7CisgICAgICAgIH0gZWxzZSB7CisjaWYgUExBVEZP
Uk0oSU9TKQorICAgICAgICAgICAgQVNTRVJUKGNsaWVudFVzZSA9PSBDbGllbnRVc2U6OkZvclRl
eHRTdHlsZSk7CisgICAgICAgICAgICBhdXRvIGZvbnREZXNjcmlwdG9yID0gYWRvcHRDRihDVEZv
bnREZXNjcmlwdG9yQ3JlYXRlV2l0aFRleHRTdHlsZShwYXJhbWV0ZXJzLmZvbnROYW1lLnN0cmlu
ZygpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIFJlbmRlclRoZW1lSU9TOjpjb250ZW50U2l6ZUNh
dGVnb3J5KCksIG51bGxwdHIpKTsKKyAgICAgICAgICAgIENURm9udFN5bWJvbGljVHJhaXRzIHRy
YWl0cyA9IChwYXJhbWV0ZXJzLndlaWdodCA+PSBrQ1RGb250V2VpZ2h0U2VtaWJvbGQgPyBrQ1RG
b250VHJhaXRCb2xkIDogMCkgfCAocGFyYW1ldGVycy5pdGFsaWMgPyBrQ1RGb250VHJhaXRJdGFs
aWMgOiAwKTsKKyAgICAgICAgICAgIGlmICh0cmFpdHMpCisgICAgICAgICAgICAgICAgZm9udERl
c2NyaXB0b3IgPSBhZG9wdENGKENURm9udERlc2NyaXB0b3JDcmVhdGVDb3B5V2l0aFN5bWJvbGlj
VHJhaXRzKGZvbnREZXNjcmlwdG9yLmdldCgpLCB0cmFpdHMsIHRyYWl0cykpOworICAgICAgICAg
ICAgc3lzdGVtRm9udCA9IGNyZWF0ZUZvbnRGb3JJbnN0YWxsZWRGb250cyhmb250RGVzY3JpcHRv
ci5nZXQoKSwgcGFyYW1ldGVycy5zaXplLCBwYXJhbWV0ZXJzLmFsbG93VXNlckluc3RhbGxlZEZv
bnRzKTsKKyNlbHNlCisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyNlbmRpZgor
ICAgICAgICB9CisgICAgICAgIEFTU0VSVChzeXN0ZW1Gb250KTsKKyAgICAgICAgYXV0byByZXN1
bHQgPSBjb21wdXRlQ2FzY2FkZUxpc3Qoc3lzdGVtRm9udC5nZXQoKSwgbG9jYWxlU3RyaW5nLmdl
dCgpKTsKKyAgICAgICAgQVNTRVJUKCFyZXN1bHQuaXNFbXB0eSgpKTsKKyAgICAgICAgcmV0dXJu
IHJlc3VsdDsKKyAgICB9KS5pdGVyYXRvci0+dmFsdWU7Cit9CisKK3ZvaWQgU3lzdGVtRm9udERh
dGFiYXNlQ29yZVRleHQ6OmNsZWFyKCkKK3sKKyAgICBtX3N5c3RlbUZvbnRDYWNoZS5jbGVhcigp
OworfQorCitSZXRhaW5QdHI8Q1RGb250UmVmPiBTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dDo6
YXBwbHlXZWlnaHRJdGFsaWNzQW5kRmFsbGJhY2tCZWhhdmlvcihDVEZvbnRSZWYgZm9udCwgQ0dG
bG9hdCB3ZWlnaHQsIGJvb2wgaXRhbGljLCBmbG9hdCBzaXplLCBBbGxvd1VzZXJJbnN0YWxsZWRG
b250cyBhbGxvd1VzZXJJbnN0YWxsZWRGb250cykKK3sKKyAgICBhdXRvIHdlaWdodE51bWJlciA9
IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGTnVtYmVyQ0dG
bG9hdFR5cGUsICZ3ZWlnaHQpKTsKKyAgICBjb25zdCBmbG9hdCBzeXN0ZW1Gb250SXRhbGljU2xv
cGUgPSAwLjA3OworICAgIGZsb2F0IGl0YWxpY3NSYXdOdW1iZXIgPSBpdGFsaWMgPyBzeXN0ZW1G
b250SXRhbGljU2xvcGUgOiAwOworICAgIGF1dG8gaXRhbGljc051bWJlciA9IGFkb3B0Q0YoQ0ZO
dW1iZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGTnVtYmVyRmxvYXRUeXBlLCAmaXRh
bGljc1Jhd051bWJlcikpOworICAgIENGVHlwZVJlZiB0cmFpdHNLZXlzW10gPSB7IGtDVEZvbnRX
ZWlnaHRUcmFpdCwga0NURm9udFNsYW50VHJhaXQsIGtDVEZvbnRVSUZvbnREZXNpZ25UcmFpdCB9
OworICAgIENGVHlwZVJlZiB0cmFpdHNWYWx1ZXNbXSA9IHsgd2VpZ2h0TnVtYmVyLmdldCgpLCBp
dGFsaWNzTnVtYmVyLmdldCgpLCBrQ0ZCb29sZWFuVHJ1ZSB9OworICAgIGF1dG8gdHJhaXRzRGlj
dGlvbmFyeSA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQs
IHRyYWl0c0tleXMsIHRyYWl0c1ZhbHVlcywgV1RGX0FSUkFZX0xFTkdUSCh0cmFpdHNLZXlzKSwg
JmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNh
bGxCYWNrcykpOworICAgIGF1dG8gYXR0cmlidXRlcyA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3Jl
YXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCAma0NGVHlwZURpY3Rpb25hcnlLZXlD
YWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CisgICAgQ0ZEaWN0
aW9uYXJ5QWRkVmFsdWUoYXR0cmlidXRlcy5nZXQoKSwga0NURm9udFRyYWl0c0F0dHJpYnV0ZSwg
dHJhaXRzRGljdGlvbmFyeS5nZXQoKSk7CisgICAgYWRkQXR0cmlidXRlc0Zvckluc3RhbGxlZEZv
bnRzKGF0dHJpYnV0ZXMuZ2V0KCksIGFsbG93VXNlckluc3RhbGxlZEZvbnRzKTsKKyAgICBhdXRv
IG1vZGlmaWNhdGlvbiA9IGFkb3B0Q0YoQ1RGb250RGVzY3JpcHRvckNyZWF0ZVdpdGhBdHRyaWJ1
dGVzKGF0dHJpYnV0ZXMuZ2V0KCkpKTsKKyAgICByZXR1cm4gYWRvcHRDRihDVEZvbnRDcmVhdGVD
b3B5V2l0aEF0dHJpYnV0ZXMoZm9udCwgc2l6ZSwgbnVsbHB0ciwgbW9kaWZpY2F0aW9uLmdldCgp
KSk7Cit9CisKK1JldGFpblB0cjxDVEZvbnREZXNjcmlwdG9yUmVmPiBTeXN0ZW1Gb250RGF0YWJh
c2VDb3JlVGV4dDo6cmVtb3ZlQ2FzY2FkZUxpc3QoQ1RGb250RGVzY3JpcHRvclJlZiBmb250RGVz
Y3JpcHRvcikKK3sKKyAgICBhdXRvIGVtcHR5QXJyYXkgPSBhZG9wdENGKENGQXJyYXlDcmVhdGUo
a0NGQWxsb2NhdG9yRGVmYXVsdCwgbnVsbHB0ciwgMCwgJmtDRlR5cGVBcnJheUNhbGxCYWNrcykp
OworICAgIENGVHlwZVJlZiBmYWxsYmFja0RpY3Rpb25hcnlLZXlzW10gPSB7IGtDVEZvbnRDYXNj
YWRlTGlzdEF0dHJpYnV0ZSB9OworICAgIENGVHlwZVJlZiBmYWxsYmFja0RpY3Rpb25hcnlWYWx1
ZXNbXSA9IHsgZW1wdHlBcnJheS5nZXQoKSB9OworICAgIGF1dG8gZmFsbGJhY2tEaWN0aW9uYXJ5
ID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgZmFsbGJh
Y2tEaWN0aW9uYXJ5S2V5cywgZmFsbGJhY2tEaWN0aW9uYXJ5VmFsdWVzLCBXVEZfQVJSQVlfTEVO
R1RIKGZhbGxiYWNrRGljdGlvbmFyeUtleXMpLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFj
a3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CisgICAgYXV0byBtb2RpZmll
ZEZvbnREZXNjcmlwdG9yID0gYWRvcHRDRihDVEZvbnREZXNjcmlwdG9yQ3JlYXRlQ29weVdpdGhB
dHRyaWJ1dGVzKGZvbnREZXNjcmlwdG9yLCBmYWxsYmFja0RpY3Rpb25hcnkuZ2V0KCkpKTsKKyAg
ICByZXR1cm4gbW9kaWZpZWRGb250RGVzY3JpcHRvcjsKK30KKworVmVjdG9yPFJldGFpblB0cjxD
VEZvbnREZXNjcmlwdG9yUmVmPj4gU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQ6OmNvbXB1dGVD
YXNjYWRlTGlzdChDVEZvbnRSZWYgZm9udCwgQ0ZTdHJpbmdSZWYgbG9jYWxlKQoreworICAgIENG
VHlwZVJlZiBhcnJheVZhbHVlc1tdID0geyBsb2NhbGUgfTsKKyAgICBhdXRvIGxvY2FsZUFycmF5
ID0gYWRvcHRDRihDRkFycmF5Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGFycmF5VmFsdWVz
LCBXVEZfQVJSQVlfTEVOR1RIKGFycmF5VmFsdWVzKSwgJmtDRlR5cGVBcnJheUNhbGxCYWNrcykp
OworICAgIGF1dG8gY2FzY2FkZUxpc3QgPSBhZG9wdENGKENURm9udENvcHlEZWZhdWx0Q2FzY2Fk
ZUxpc3RGb3JMYW5ndWFnZXMoZm9udCwgbG9jYWxlQXJyYXkuZ2V0KCkpKTsKKyAgICBWZWN0b3I8
UmV0YWluUHRyPENURm9udERlc2NyaXB0b3JSZWY+PiByZXN1bHQ7CisgICAgLy8gV2ViS2l0IGhh
bmRsZXMgdGhlIGNhc2NhZGUgbGlzdCwgYW5kIFdlYktpdCAyJ3MgSVBDIGNvZGUgZG9lc24ndCBr
bm93IGhvdyB0byBzZXJpYWxpemUgQ29yZSBUZXh0J3MgY2FzY2FkZSBsaXN0LgorICAgIHJlc3Vs
dC5hcHBlbmQocmVtb3ZlQ2FzY2FkZUxpc3QoYWRvcHRDRihDVEZvbnRDb3B5Rm9udERlc2NyaXB0
b3IoZm9udCkpLmdldCgpKSk7CisgICAgaWYgKGNhc2NhZGVMaXN0KSB7CisgICAgICAgIENGSW5k
ZXggYXJyYXlMZW5ndGggPSBDRkFycmF5R2V0Q291bnQoY2FzY2FkZUxpc3QuZ2V0KCkpOworICAg
ICAgICBmb3IgKENGSW5kZXggaSA9IDA7IGkgPCBhcnJheUxlbmd0aDsgKytpKQorICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZChzdGF0aWNfY2FzdDxDVEZvbnREZXNjcmlwdG9yUmVmPihDRkFycmF5
R2V0VmFsdWVBdEluZGV4KGNhc2NhZGVMaXN0LmdldCgpLCBpKSkpOworICAgIH0KKyAgICByZXR1
cm4gcmVzdWx0OworfQorCitTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dDo6Q2FzY2FkZUxpc3RQ
YXJhbWV0ZXJzIFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0OjpzeXN0ZW1Gb250UGFyYW1ldGVy
cyhjb25zdCBGb250Q2FzY2FkZURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwgY29uc3QgQXRvbWlj
U3RyaW5nJiBmYW1pbHlOYW1lLCBDbGllbnRVc2UgY2xpZW50VXNlLCBBbGxvd1VzZXJJbnN0YWxs
ZWRGb250cyBhbGxvd1VzZXJJbnN0YWxsZWRGb250cykKK3sKKyAgICBDYXNjYWRlTGlzdFBhcmFt
ZXRlcnMgcmVzdWx0OworICAgIHJlc3VsdC5sb2NhbGUgPSBkZXNjcmlwdGlvbi5sb2NhbGUoKTsK
KyAgICByZXN1bHQuc2l6ZSA9IGRlc2NyaXB0aW9uLmNvbXB1dGVkU2l6ZSgpOworICAgIHJlc3Vs
dC5pdGFsaWMgPSBpc0l0YWxpYyhkZXNjcmlwdGlvbi5pdGFsaWMoKSk7CisKKyAgICBhdXRvIHdl
aWdodCA9IGRlc2NyaXB0aW9uLndlaWdodCgpOworICAgIGlmIChGb250Q2FjaGU6OnNpbmdsZXRv
bigpLnNob3VsZE1vY2tCb2xkU3lzdGVtRm9udEZvckFjY2Vzc2liaWxpdHkoKSkKKyAgICAgICAg
d2VpZ2h0ID0gd2VpZ2h0ICsgRm9udFNlbGVjdGlvblZhbHVlKDIwMCk7CisKKyAgICBpZiAod2Vp
Z2h0IDwgRm9udFNlbGVjdGlvblZhbHVlKDE1MCkpCisgICAgICAgIHJlc3VsdC53ZWlnaHQgPSBr
Q1RGb250V2VpZ2h0VWx0cmFMaWdodDsKKyAgICBlbHNlIGlmICh3ZWlnaHQgPCBGb250U2VsZWN0
aW9uVmFsdWUoMjUwKSkKKyAgICAgICAgcmVzdWx0LndlaWdodCA9IGtDVEZvbnRXZWlnaHRUaGlu
OworICAgIGVsc2UgaWYgKHdlaWdodCA8IEZvbnRTZWxlY3Rpb25WYWx1ZSgzNTApKQorICAgICAg
ICByZXN1bHQud2VpZ2h0ID0ga0NURm9udFdlaWdodExpZ2h0OworICAgIGVsc2UgaWYgKHdlaWdo
dCA8IEZvbnRTZWxlY3Rpb25WYWx1ZSg0NTApKQorICAgICAgICByZXN1bHQud2VpZ2h0ID0ga0NU
Rm9udFdlaWdodFJlZ3VsYXI7CisgICAgZWxzZSBpZiAod2VpZ2h0IDwgRm9udFNlbGVjdGlvblZh
bHVlKDU1MCkpCisgICAgICAgIHJlc3VsdC53ZWlnaHQgPSBrQ1RGb250V2VpZ2h0TWVkaXVtOwor
ICAgIGVsc2UgaWYgKHdlaWdodCA8IEZvbnRTZWxlY3Rpb25WYWx1ZSg2NTApKQorICAgICAgICBy
ZXN1bHQud2VpZ2h0ID0ga0NURm9udFdlaWdodFNlbWlib2xkOworICAgIGVsc2UgaWYgKHdlaWdo
dCA8IEZvbnRTZWxlY3Rpb25WYWx1ZSg3NTApKQorICAgICAgICByZXN1bHQud2VpZ2h0ID0ga0NU
Rm9udFdlaWdodEJvbGQ7CisgICAgZWxzZSBpZiAod2VpZ2h0IDwgRm9udFNlbGVjdGlvblZhbHVl
KDg1MCkpCisgICAgICAgIHJlc3VsdC53ZWlnaHQgPSBrQ1RGb250V2VpZ2h0SGVhdnk7CisgICAg
ZWxzZQorICAgICAgICByZXN1bHQud2VpZ2h0ID0ga0NURm9udFdlaWdodEJsYWNrOworCisgICAg
aWYgKGNsaWVudFVzZSA9PSBDbGllbnRVc2U6OkZvclN5c3RlbVVJKSB7CisgICAgICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHN5c3RlbVVJID0gQXRvbWljU3RyaW5nKCJz
eXN0ZW0tdWkiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICAgICAg
cmVzdWx0LmZvbnROYW1lID0gc3lzdGVtVUkuZ2V0KCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAg
QVNTRVJUKGNsaWVudFVzZSA9PSBDbGllbnRVc2U6OkZvclRleHRTdHlsZSk7CisgICAgICAgIHJl
c3VsdC5mb250TmFtZSA9IGZhbWlseU5hbWU7CisgICAgfQorCisgICAgcmVzdWx0LmFsbG93VXNl
ckluc3RhbGxlZEZvbnRzID0gYWxsb3dVc2VySW5zdGFsbGVkRm9udHM7CisKKyAgICByZXR1cm4g
cmVzdWx0OworfQorCitWZWN0b3I8UmV0YWluUHRyPENURm9udERlc2NyaXB0b3JSZWY+PiBTeXN0
ZW1Gb250RGF0YWJhc2VDb3JlVGV4dDo6Y2FzY2FkZUxpc3QoY29uc3QgRm9udENhc2NhZGVEZXNj
cmlwdGlvbiYgZGVzY3JpcHRpb24sIGNvbnN0IEF0b21pY1N0cmluZyYgY3NzRmFtaWx5LCBDbGll
bnRVc2UgY2xpZW50VXNlLCBBbGxvd1VzZXJJbnN0YWxsZWRGb250cyBhbGxvd1VzZXJJbnN0YWxs
ZWRGb250cykKK3sKKyAgICByZXR1cm4gY2FzY2FkZUxpc3Qoc3lzdGVtRm9udFBhcmFtZXRlcnMo
ZGVzY3JpcHRpb24sIGNzc0ZhbWlseSwgY2xpZW50VXNlLCBhbGxvd1VzZXJJbnN0YWxsZWRGb250
cyksIGNsaWVudFVzZSk7Cit9CisKK30KKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9TeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1N5c3RlbUZv
bnREYXRhYmFzZUNvcmVUZXh0LmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDEyMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aW5jbHVkZSAiRm9udERlc2NyaXB0aW9uLmgiCisjaW5jbHVkZSA8cGFsL3NwaS9jb2NvYS9Db3Jl
VGV4dFNQSS5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hU
cmFpdHMuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KKyNpbmNsdWRlIDx3
dGYvdGV4dC9BdG9taWNTdHJpbmdIYXNoLmg+CisKKyNpZiBVU0VfUExBVEZPUk1fU1lTVEVNX0ZB
TExCQUNLX0xJU1QKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTeXN0ZW1Gb250RGF0
YWJhc2VDb3JlVGV4dCB7CitwdWJsaWM6CisgICAgc3RydWN0IENhc2NhZGVMaXN0UGFyYW1ldGVy
cyB7CisgICAgICAgIENhc2NhZGVMaXN0UGFyYW1ldGVycygpCisgICAgICAgIHsKKyAgICAgICAg
fQorCisgICAgICAgIENhc2NhZGVMaXN0UGFyYW1ldGVycyhXVEY6Okhhc2hUYWJsZURlbGV0ZWRW
YWx1ZVR5cGUpCisgICAgICAgICAgICA6IGZvbnROYW1lKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZh
bHVlKQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICBib29sIGlzSGFzaFRhYmxlRGVs
ZXRlZFZhbHVlKCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGZvbnROYW1l
LmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7CisgICAgICAgIH0KKworICAgICAgICBib29sIG9w
ZXJhdG9yPT0oY29uc3QgQ2FzY2FkZUxpc3RQYXJhbWV0ZXJzJiBvdGhlcikgY29uc3QKKyAgICAg
ICAgeworICAgICAgICAgICAgcmV0dXJuIGZvbnROYW1lID09IG90aGVyLmZvbnROYW1lCisgICAg
ICAgICAgICAgICAgJiYgbG9jYWxlID09IG90aGVyLmxvY2FsZQorICAgICAgICAgICAgICAgICYm
IHdlaWdodCA9PSBvdGhlci53ZWlnaHQKKyAgICAgICAgICAgICAgICAmJiBzaXplID09IG90aGVy
LnNpemUKKyAgICAgICAgICAgICAgICAmJiBhbGxvd1VzZXJJbnN0YWxsZWRGb250cyA9PSBvdGhl
ci5hbGxvd1VzZXJJbnN0YWxsZWRGb250cworICAgICAgICAgICAgICAgICYmIGl0YWxpYyA9PSBv
dGhlci5pdGFsaWM7CisgICAgICAgIH0KKworICAgICAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QK
KyAgICAgICAgeworICAgICAgICAgICAgSW50ZWdlckhhc2hlciBoYXNoZXI7CisgICAgICAgICAg
ICBBU1NFUlQoIWZvbnROYW1lLmlzTnVsbCgpKTsKKyAgICAgICAgICAgIGhhc2hlci5hZGQobG9j
YWxlLmV4aXN0aW5nSGFzaCgpKTsKKyAgICAgICAgICAgIGhhc2hlci5hZGQobG9jYWxlLmlzTnVs
bCgpID8gMCA6IGxvY2FsZS5leGlzdGluZ0hhc2goKSk7CisgICAgICAgICAgICBoYXNoZXIuYWRk
KHdlaWdodCk7CisgICAgICAgICAgICBoYXNoZXIuYWRkKHNpemUpOworICAgICAgICAgICAgaGFz
aGVyLmFkZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYWxsb3dVc2VySW5zdGFsbGVkRm9udHMpKTsK
KyAgICAgICAgICAgIGhhc2hlci5hZGQoaXRhbGljKTsKKyAgICAgICAgICAgIHJldHVybiBoYXNo
ZXIuaGFzaCgpOworICAgICAgICB9CisKKyAgICAgICAgc3RydWN0IENhc2NhZGVMaXN0UGFyYW1l
dGVyc0hhc2ggOiBXVEY6OlBhaXJIYXNoPEF0b21pY1N0cmluZywgZmxvYXQ+IHsKKyAgICAgICAg
ICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IENhc2NhZGVMaXN0UGFyYW1ldGVycyYgcGFy
YW1ldGVycykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gcGFyYW1ldGVy
cy5oYXNoKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChj
b25zdCBDYXNjYWRlTGlzdFBhcmFtZXRlcnMmIGEsIGNvbnN0IENhc2NhZGVMaXN0UGFyYW1ldGVy
cyYgYikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gYSA9PSBiOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRv
RW1wdHlPckRlbGV0ZWQgPSB0cnVlOworICAgICAgICB9OworCisgICAgICAgIEF0b21pY1N0cmlu
ZyBmb250TmFtZTsKKyAgICAgICAgQXRvbWljU3RyaW5nIGxvY2FsZTsKKyAgICAgICAgQ0dGbG9h
dCB3ZWlnaHQgeyAwIH07CisgICAgICAgIGZsb2F0IHNpemUgeyAwIH07CisgICAgICAgIEFsbG93
VXNlckluc3RhbGxlZEZvbnRzIGFsbG93VXNlckluc3RhbGxlZEZvbnRzIHsgQWxsb3dVc2VySW5z
dGFsbGVkRm9udHM6Ok5vIH07CisgICAgICAgIGJvb2wgaXRhbGljIHsgZmFsc2UgfTsKKyAgICB9
OworCisgICAgc3RhdGljIFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0JiBzaW5nbGV0b24oKTsK
KworICAgIGVudW0gY2xhc3MgQ2xpZW50VXNlIHsgRm9yU3lzdGVtVUksIEZvclRleHRTdHlsZSB9
OworCisgICAgVmVjdG9yPFJldGFpblB0cjxDVEZvbnREZXNjcmlwdG9yUmVmPj4gY2FzY2FkZUxp
c3QoY29uc3QgRm9udENhc2NhZGVEZXNjcmlwdGlvbiYsIGNvbnN0IEF0b21pY1N0cmluZyYgY3Nz
RmFtaWx5LCBDbGllbnRVc2UsIEFsbG93VXNlckluc3RhbGxlZEZvbnRzKTsKKyAgICB2b2lkIGNs
ZWFyKCk7CisKK3ByaXZhdGU6CisgICAgU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQoKTsKKwor
ICAgIFZlY3RvcjxSZXRhaW5QdHI8Q1RGb250RGVzY3JpcHRvclJlZj4+IGNhc2NhZGVMaXN0KGNv
bnN0IENhc2NhZGVMaXN0UGFyYW1ldGVycyYsIENsaWVudFVzZSk7CisKKyAgICBzdGF0aWMgUmV0
YWluUHRyPENURm9udFJlZj4gYXBwbHlXZWlnaHRJdGFsaWNzQW5kRmFsbGJhY2tCZWhhdmlvcihD
VEZvbnRSZWYsIENHRmxvYXQgd2VpZ2h0LCBib29sIGl0YWxpYywgZmxvYXQgc2l6ZSwgQWxsb3dV
c2VySW5zdGFsbGVkRm9udHMpOworICAgIHN0YXRpYyBSZXRhaW5QdHI8Q1RGb250RGVzY3JpcHRv
clJlZj4gcmVtb3ZlQ2FzY2FkZUxpc3QoQ1RGb250RGVzY3JpcHRvclJlZik7CisgICAgc3RhdGlj
IFZlY3RvcjxSZXRhaW5QdHI8Q1RGb250RGVzY3JpcHRvclJlZj4+IGNvbXB1dGVDYXNjYWRlTGlz
dChDVEZvbnRSZWYsIENGU3RyaW5nUmVmIGxvY2FsZSk7CisgICAgc3RhdGljIENhc2NhZGVMaXN0
UGFyYW1ldGVycyBzeXN0ZW1Gb250UGFyYW1ldGVycyhjb25zdCBGb250Q2FzY2FkZURlc2NyaXB0
aW9uJiwgY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHlOYW1lLCBDbGllbnRVc2UsIEFsbG93VXNl
ckluc3RhbGxlZEZvbnRzKTsKKworICAgIEhhc2hNYXA8Q2FzY2FkZUxpc3RQYXJhbWV0ZXJzLCBW
ZWN0b3I8UmV0YWluUHRyPENURm9udERlc2NyaXB0b3JSZWY+PiwgQ2FzY2FkZUxpc3RQYXJhbWV0
ZXJzOjpDYXNjYWRlTGlzdFBhcmFtZXRlcnNIYXNoLCBTaW1wbGVDbGFzc0hhc2hUcmFpdHM8Q2Fz
Y2FkZUxpc3RQYXJhbWV0ZXJzPj4gbV9zeXN0ZW1Gb250Q2FjaGU7Cit9OworCit9CisKKyNlbmRp
Zgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>351790</attachid>
            <date>2018-10-08 10:47:38 -0700</date>
            <delta_ts>2018-10-08 11:30:44 -0700</delta_ts>
            <desc>patch</desc>
            <filename>systemfontdatabase-file-6.patch</filename>
            <type>text/plain</type>
            <size>40612</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzNjkyNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDYwIEBACi0yMDE4LTEwLTA4ICBBbmR5IEVz
dGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKzIwMTgtMTAtMDggIEFudHRpIEtvaXZpc3RvICA8YW50
dGlAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgU3lzdGVtRm9udERhdGFiYXNlIHRvIGEgZmls
ZSBvZiBpdHMgb3duCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xOTAzNDcKKworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBEdW1lei4KKworICAgICAg
ICBBbHNvIHJlbmFtZSBpdCB0byBTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dCBhcyBpdCBpcyBD
b3JlVGV4dCBzcGVjaWZpYy4KKworICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAg
ICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBhZ2UvTWVt
b3J5UmVsZWFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZWxlYXNlTm9uY3JpdGljYWxNZW1v
cnkpOgorICAgICAgICAqIHBhZ2UvY29jb2EvTWVtb3J5UmVsZWFzZUNvY29hLm1tOgorCisgICAg
ICAgIFJlbGVhc2UgU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQgZGlyZWN0bHkgZnJvbSBwbGF0
Zm9ybSBzcGVjaWZpYyBjbGVhbnVwIGNvZGUuCisKKyAgICAgICAgKFdlYkNvcmU6OnBsYXRmb3Jt
UmVsZWFzZU1lbW9yeSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udERl
c2NyaXB0aW9uQ29jb2EuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udERlc2NyaXB0aW9uOjpp
bnZhbGlkYXRlQ2FjaGVzKToKKyAgICAgICAgKFdlYkNvcmU6OnN5c3RlbUZvbnRDYXNjYWRlTGlz
dCk6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZURlc2NyaXB0aW9uOjplZmZlY3RpdmVG
YW1pbHlDb3VudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZURlc2NyaXB0
aW9uOjplZmZlY3RpdmVGYW1pbHlBdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTeXN0ZW1G
b250RGF0YWJhc2U6OkNvcmVUZXh0Q2FzY2FkZUxpc3RQYXJhbWV0ZXJzOjpDb3JlVGV4dENhc2Nh
ZGVMaXN0UGFyYW1ldGVycyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTeXN0ZW1Gb250
RGF0YWJhc2U6OkNvcmVUZXh0Q2FzY2FkZUxpc3RQYXJhbWV0ZXJzOjppc0hhc2hUYWJsZURlbGV0
ZWRWYWx1ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTeXN0ZW1Gb250RGF0
YWJhc2U6OkNvcmVUZXh0Q2FzY2FkZUxpc3RQYXJhbWV0ZXJzOjpvcGVyYXRvcj09IGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlN5c3RlbUZvbnREYXRhYmFzZTo6Q29yZVRleHRD
YXNjYWRlTGlzdFBhcmFtZXRlcnM6Omhhc2ggY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6U3lzdGVtRm9udERhdGFiYXNlOjpDb3JlVGV4dENhc2NhZGVMaXN0UGFyYW1ldGVyczo6
Q29yZVRleHRDYXNjYWRlTGlzdFBhcmFtZXRlcnNIYXNoOjpoYXNoKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlN5c3RlbUZvbnREYXRhYmFzZTo6Q29yZVRleHRDYXNjYWRlTGlzdFBhcmFt
ZXRlcnM6OkNvcmVUZXh0Q2FzY2FkZUxpc3RQYXJhbWV0ZXJzSGFzaDo6ZXF1YWwpOiBEZWxldGVk
LgorICAgICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlN5c3RlbUZvbnREYXRh
YmFzZTo6c2luZ2xldG9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlN5c3RlbUZvbnRE
YXRhYmFzZTo6c3lzdGVtRm9udENhc2NhZGVMaXN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlN5c3RlbUZvbnREYXRhYmFzZTo6Y2xlYXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6U3lzdGVtRm9udERhdGFiYXNlOjpTeXN0ZW1Gb250RGF0YWJhc2UpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6U3lzdGVtRm9udERhdGFiYXNlOjphcHBseVdlaWdodEl0YWxpY3NBbmRG
YWxsYmFja0JlaGF2aW9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlN5c3RlbUZvbnRE
YXRhYmFzZTo6cmVtb3ZlQ2FzY2FkZUxpc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
U3lzdGVtRm9udERhdGFiYXNlOjpjb21wdXRlQ2FzY2FkZUxpc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6c3lzdGVtRm9udFBhcmFtZXRlcnMpOiBEZWxldGVkLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL1N5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0LmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dDo6c2luZ2xl
dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0OjpTeXN0
ZW1Gb250RGF0YWJhc2VDb3JlVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpTeXN0ZW1Gb250RGF0
YWJhc2VDb3JlVGV4dDo6c3lzdGVtRm9udENhc2NhZGVMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0OjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpT
eXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dDo6YXBwbHlXZWlnaHRJdGFsaWNzQW5kRmFsbGJhY2tC
ZWhhdmlvcik6CisgICAgICAgIChXZWJDb3JlOjpTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dDo6
cmVtb3ZlQ2FzY2FkZUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3lzdGVtRm9udERhdGFiYXNl
Q29yZVRleHQ6OmNvbXB1dGVDYXNjYWRlTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpTeXN0ZW1G
b250RGF0YWJhc2VDb3JlVGV4dDo6c3lzdGVtRm9udFBhcmFtZXRlcnMpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL1N5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0Lmg6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6U3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQ6OkNhc2NhZGVM
aXN0UGFyYW1ldGVyczo6Q2FzY2FkZUxpc3RQYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6
OlN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0OjpDYXNjYWRlTGlzdFBhcmFtZXRlcnM6OmlzSGFz
aFRhYmxlRGVsZXRlZFZhbHVlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN5c3RlbUZvbnRE
YXRhYmFzZUNvcmVUZXh0OjpDYXNjYWRlTGlzdFBhcmFtZXRlcnM6Om9wZXJhdG9yPT0gY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQ6OkNhc2NhZGVM
aXN0UGFyYW1ldGVyczo6aGFzaCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTeXN0ZW1Gb250
RGF0YWJhc2VDb3JlVGV4dDo6Q2FzY2FkZUxpc3RQYXJhbWV0ZXJzOjpDYXNjYWRlTGlzdFBhcmFt
ZXRlcnNIYXNoOjpoYXNoKToKKyAgICAgICAgKFdlYkNvcmU6OlN5c3RlbUZvbnREYXRhYmFzZUNv
cmVUZXh0OjpDYXNjYWRlTGlzdFBhcmFtZXRlcnM6OkNhc2NhZGVMaXN0UGFyYW1ldGVyc0hhc2g6
OmVxdWFsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVNZWRp
YVNvdXJjZUNlbnRlck1hYy5jcHA6CisKKzAxOC0xMC0wOCAgQW5keSBFc3RlcyAgPGFlc3Rlc0Bh
cHBsZS5jb20+CiAKICAgICAgICAgW1BheW1lbnQgUmVxdWVzdF0gUmVxdWVzdHMgc2hvdWxkIGJl
IGFib3J0ZWQgYWZ0ZXIgZGV0YWlscyBzZXR0bGUgd2hlbiB0aGUgdXNlciBjYW5jZWxzCiAgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTAzMzMKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvU291cmNlc0NvY29hLnR4dAkocmV2aXNpb24gMjM2OTE0KQorKysgU291cmNlL1dlYkNv
cmUvU291cmNlc0NvY29hLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMzA2LDYgKzMwNiw3IEBAIHBs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL0hFVkNVdGlsaXRpZXNDb2MKIHBsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL0lPU3VyZmFjZS5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlUG9v
bENvY29hLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9NZWRpYUVuZ2luZUNvbmZpZ3VyYXRp
b25GYWN0b3J5Q29jb2EuY3BwCitwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9TeXN0ZW1Gb250RGF0
YWJhc2VDb3JlVGV4dC5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkFjdGlvbkRpc2Fi
bGluZ0NBTGF5ZXJEZWxlZ2F0ZS5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29yZUNB
TGF5ZXJFeHRyYXMubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkNvcmVEZWNvbXByZXNz
aW9uU2Vzc2lvbi5tbQpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjM2OTE0KQorKysgU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00ODEx
LDYgKzQ4MTEsNyBAQAogCQlFNERFQUExODE3QTkzREMzMDAwRTA0MzAgLyogU3R5bGVUcmVlUmVz
b2x2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0
REVBQTE2MTdBOTNEQzMwMDBFMDQzMCAvKiBTdHlsZVRyZWVSZXNvbHZlci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUU0RTI0MzgzMURBQjk1M0Uw
MEMyNkU0QiAvKiBtZXRlckVsZW1lbnRTaGFkb3cuY3NzIGluIFJlc291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEUyNDM4MjFEQUI5NTNFMDBDMjZFNEIgLyogbWV0
ZXJFbGVtZW50U2hhZG93LmNzcyAqLzsgfTsKIAkJRTRFMzlBRkIxMzMwRUZBODAwM0FCMjc0IC8q
IExlZ2FjeVRpbGVMYXllclBvb2wuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEU0RTM5QUZBMTMzMEVGQTgwMDNBQjI3NCAvKiBMZWdhY3lUaWxlTGF5ZXJQ
b29sLmggKi87IH07CisJCUU0RThCNEVDMjE2Qjc5RTUwMEI4ODM0RCAvKiBTeXN0ZW1Gb250RGF0
YWJhc2VDb3JlVGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTRFOEI0RUEyMTZCNzlFNTAwQjg4MzREIC8qIFN5c3RlbUZvbnREYXRhYmFzZUNvcmVU
ZXh0LmggKi87IH07CiAJCUU0RThCNEY1MjE2Qjk1NjUwMEI4ODM0RCAvKiBGb250Q2FzY2FkZURl
c2NyaXB0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFNEU4QjRGMjIxNkI4QjYwMDBCODgzNEQgLyogRm9udENhc2NhZGVEZXNjcmlwdGlvbi5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUU0RTlCMTE5
MTgxMDkxNkYwMDNBQ0NERiAvKiBTaW1wbGVMaW5lTGF5b3V0UmVzb2x2ZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0RTlCMTE4MTgxMDkxNkYwMDNB
Q0NERiAvKiBTaW1wbGVMaW5lTGF5b3V0UmVzb2x2ZXIuaCAqLzsgfTsKIAkJRTRFOUIxMUQxODE0
NTY5QzAwM0FDQ0RGIC8qIFNpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0RTlCMTFDMTgxNDU2OUMwMDNBQ0NE
RiAvKiBTaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmggKi87IH07CkBAIC0xNDU0OCw2ICsxNDU0
OSw4IEBACiAJCUU0RTI0MzgyMURBQjk1M0UwMEMyNkU0QiAvKiBtZXRlckVsZW1lbnRTaGFkb3cu
Y3NzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dC5jc3M7IHBhdGggPSBtZXRlckVsZW1lbnRTaGFkb3cuY3NzOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNEUzOUFGQTEzMzBFRkE4MDAzQUIyNzQgLyog
TGVnYWN5VGlsZUxheWVyUG9vbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBM
ZWdhY3lUaWxlTGF5ZXJQb29sLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0RTM5
QUZDMTMzMEVGQzUwMDNBQjI3NCAvKiBMZWdhY3lUaWxlTGF5ZXJQb29sLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTGVnYWN5VGlsZUxheWVyUG9vbC5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTRFOEI0RUEyMTZCNzlFNTAwQjg4MzREIC8qIFN5
c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUU0RThCNEVEMjE2Qjc5RjQwMEI4ODM0RCAvKiBTeXN0ZW1Gb250RGF0YWJhc2VDb3Jl
VGV4dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTeXN0ZW1Gb250
RGF0YWJhc2VDb3JlVGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0RThC
NEYwMjE2QjhCNUYwMEI4ODM0RCAvKiBGb250Q2FzY2FkZURlc2NyaXB0aW9uLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvbnRDYXNjYWRlRGVzY3JpcHRpb24uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNEU4QjRGMjIxNkI4QjYwMDBCODgzNEQg
LyogRm9udENhc2NhZGVEZXNjcmlwdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBGb250Q2FzY2FkZURlc2NyaXB0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUU0RTlCMTE4MTgxMDkxNkYwMDNBQ0NERiAvKiBTaW1wbGVMaW5lTGF5b3V0UmVzb2x2ZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2ltcGxlTGluZUxheW91dFJlc29s
dmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNDAyNSw2ICsyNDAyOCw4IEBA
CiAJCQkJQUQ5RkY2RTAxOTA4MzkxRDAwM0I2MUUwIC8qIElPU3VyZmFjZVBvb2xDb2NvYS5tbSAq
LywKIAkJCQlDREM0OEFDODIxNDlDRjJBMDAyNEZENTkgLyogTWVkaWFFbmdpbmVDb25maWd1cmF0
aW9uRmFjdG9yeUNvY29hLmNwcCAqLywKIAkJCQlDREM0OEFDNzIxNDlDRjJBMDAyNEZENTkgLyog
TWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeUNvY29hLmggKi8sCisJCQkJRTRFOEI0RUQy
MTZCNzlGNDAwQjg4MzREIC8qIFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0LmNwcCAqLywKKwkJ
CQlFNEU4QjRFQTIxNkI3OUU1MDBCODgzNEQgLyogU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQu
aCAqLywKIAkJCQk1MjY3MjRGMjFDQjJGREY2MDA3NTk3NEQgLyogVGV4dFRyYWNrUmVwcmVzZW50
YXRpb25Db2NvYS5oICovLAogCQkJCTUyNjcyNEYxMUNCMkZERjYwMDc1OTc0RCAvKiBUZXh0VHJh
Y2tSZXByZXNlbnRhdGlvbkNvY29hLm1tICovLAogCQkJCTJEM0VGNDQ0MTkxNzkxNUMwMDAzNDE4
NCAvKiBXZWJBY3Rpb25EaXNhYmxpbmdDQUxheWVyRGVsZWdhdGUuaCAqLywKQEAgLTI3NDkzLDYg
KzI3NDk4LDcgQEAKIAkJCQk1NzMwM0JCQjIwMDZDNkVFMDAzNTU5NjUgLyogQ0JPUkJpbmFyeS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNTczMDNCQzEyMDA2RTAwQzAwMzU1OTY1IC8qIENCT1JSZWFk
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3MzAzQkI5MjAwNkM2RUUwMDM1NTk2NSAvKiBDQk9S
VmFsdWUuaCBpbiBIZWFkZXJzICovLAorCQkJCUU0RThCNEVDMjE2Qjc5RTUwMEI4ODM0RCAvKiBT
eXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTczMDNCQkEy
MDA2QzZFRTAwMzU1OTY1IC8qIENCT1JXcml0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1NTBC
NjlFMDk5REYwMjcwMDkwRDc4MSAvKiBDREFUQVNlY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJ
CUNERjRCNzE2MUUwMEI3RTUwMEUyMzVBMiAvKiBDRE0uaCBpbiBIZWFkZXJzICovLApJbmRleDog
U291cmNlL1dlYkNvcmUvcGFnZS9NZW1vcnlSZWxlYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL01lbW9yeVJlbGVhc2UuY3BwCShyZXZpc2lvbiAyMzY5MTQpCisrKyBT
b3VyY2UvV2ViQ29yZS9wYWdlL01lbW9yeVJlbGVhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02
Myw3ICs2Myw2IEBAIHN0YXRpYyB2b2lkIHJlbGVhc2VOb25jcml0aWNhbE1lbW9yeSgpCiAgICAg
UmVuZGVyVGhlbWU6OnNpbmdsZXRvbigpLnB1cmdlQ2FjaGVzKCk7CiAKICAgICBGb250Q2FjaGU6
OnNpbmdsZXRvbigpLnB1cmdlSW5hY3RpdmVGb250RGF0YSgpOwotICAgIEZvbnREZXNjcmlwdGlv
bjo6aW52YWxpZGF0ZUNhY2hlcygpOwogCiAgICAgY2xlYXJXaWR0aENhY2hlcygpOwogICAgIFRl
eHRQYWludGVyOjpjbGVhckdseXBoRGlzcGxheUxpc3RzKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wYWdlL2NvY29hL01lbW9yeVJlbGVhc2VDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wYWdlL2NvY29hL01lbW9yeVJlbGVhc2VDb2NvYS5tbQkocmV2aXNpb24gMjM2OTE0
KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9NZW1vcnlSZWxlYXNlQ29jb2EubW0JKHdv
cmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpbXBvcnQgIkdDQ29udHJvbGxlci5oIgog
I2ltcG9ydCAiSU9TdXJmYWNlUG9vbC5oIgogI2ltcG9ydCAiTGF5ZXJQb29sLmgiCisjaW1wb3J0
ICJTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dC5oIgogI2ltcG9ydCA8bm90aWZ5Lmg+CiAjaW1w
b3J0IDxwYWwvc3BpL2lvcy9HcmFwaGljc1NlcnZpY2VzU1BJLmg+CiAKQEAgLTQyLDYgKzQzLDEw
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBwbGF0Zm9ybVJlbGVhc2VNZW1vcnkoQ3Jp
dGljYWwpCiB7CisjaWYgVVNFX1BMQVRGT1JNX1NZU1RFTV9GQUxMQkFDS19MSVNUCisgICAgU3lz
dGVtRm9udERhdGFiYXNlQ29yZVRleHQ6OnNpbmdsZXRvbigpLmNsZWFyKCk7CisjZW5kaWYKKwog
I2lmIFBMQVRGT1JNKElPUykgJiYgIVBMQVRGT1JNKElPU19TSU1VTEFUT1IpICYmICFQTEFURk9S
TShJT1NNQUMpCiAgICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIGNhbGwgdG8gR1NGb250SW5pdGlh
bGl6ZSgpIG9uY2UgPHJkYXI6Ly9wcm9ibGVtLzMyODg2NzE1PiBpcyBmaXhlZC4KICAgICBHU0Zv
bnRJbml0aWFsaXplKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250RGVzY3JpcHRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnREZXNjcmlwdGlvbi5jcHAJKHJldmlzaW9uIDIzNjkxNCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnREZXNjcmlwdGlvbi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTcxLDEwICs3MSw0IEBAIHZvaWQgRm9udERlc2NyaXB0aW9uOjpzZXRMb2NhbGUo
Y29uc3QgQXQKICAgICBtX3NjcmlwdCA9IGxvY2FsZVRvU2NyaXB0Q29kZUZvckZvbnRTZWxlY3Rp
b24obV9sb2NhbGUpOwogfQogCi0jaWYgIVVTRV9QTEFURk9STV9TWVNURU1fRkFMTEJBQ0tfTElT
VAotdm9pZCBGb250RGVzY3JpcHRpb246OmludmFsaWRhdGVDYWNoZXMoKQotewotfQotI2VuZGlm
Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnREZXNjcmlwdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnREZXNjcmlwdGlvbi5oCShyZXZpc2lvbiAyMzY5MTQpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250RGVzY3JpcHRpb24uaAkod29y
a2luZyBjb3B5KQpAQCAtMTMzLDggKzEzMyw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEZvbnRT
dHlsZUF4aXMoRm9udFN0eWxlQXhpcyBheGlzKSB7IG1fZm9udFN0eWxlQXhpcyA9IGF4aXMgPT0g
Rm9udFN0eWxlQXhpczo6aXRhbDsgfQogICAgIHZvaWQgc2V0U2hvdWxkQWxsb3dVc2VySW5zdGFs
bGVkRm9udHMoQWxsb3dVc2VySW5zdGFsbGVkRm9udHMgc2hvdWxkQWxsb3dVc2VySW5zdGFsbGVk
Rm9udHMpIHsgbV9zaG91bGRBbGxvd1VzZXJJbnN0YWxsZWRGb250cyA9IHN0YXRpY19jYXN0PHVu
c2lnbmVkPihzaG91bGRBbGxvd1VzZXJJbnN0YWxsZWRGb250cyk7IH0KIAotICAgIHN0YXRpYyB2
b2lkIGludmFsaWRhdGVDYWNoZXMoKTsKLQogcHJpdmF0ZToKICAgICAvLyBGSVhNRTogSW52ZXN0
aWdhdGUgbW92aW5nIHRoZXNlIGludG8gdGhlaXIgb3duIG9iamVjdCBvbiB0aGUgaGVhcCAodG8g
c2F2ZSBtZW1vcnkpLgogICAgIEZvbnRGZWF0dXJlU2V0dGluZ3MgbV9mZWF0dXJlU2V0dGluZ3M7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVD
b3JlVGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwCShyZXZpc2lvbiAyMzY5MTQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJGb250Q2FjaGUuaCIK
IAogI2luY2x1ZGUgIkZvbnQuaCIKKyNpbmNsdWRlICJTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4
dC5oIgogI2luY2x1ZGUgPHBhbC9zcGkvY29jb2EvQ29yZVRleHRTUEkuaD4KIAogI2luY2x1ZGUg
PENvcmVUZXh0L1NGTlRMYXlvdXRUeXBlcy5oPgpAQCAtMTE4Niw3ICsxMTg3LDkgQEAgc3RhdGlj
IHZvaWQgaW52YWxpZGF0ZUZvbnRDYWNoZSgpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBGb250RGVzY3JpcHRpb246OmludmFsaWRhdGVDYWNoZXMoKTsKKyNpZiBVU0VfUExBVEZPUk1f
U1lTVEVNX0ZBTExCQUNLX0xJU1QKKyAgICBTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dDo6c2lu
Z2xldG9uKCkuY2xlYXIoKTsKKyNlbmRpZgogCiAgICAgRm9udERhdGFiYXNlOjpzaW5nbGV0b25B
bGxvd2luZ1VzZXJJbnN0YWxsZWRGb250cygpLmNsZWFyKCk7CiAgICAgRm9udERhdGFiYXNlOjpz
aW5nbGV0b25EaXNhbGxvd2luZ1VzZXJJbnN0YWxsZWRGb250cygpLmNsZWFyKCk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RGVzY3JpcHRpb25Db2Nv
YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvRm9udERlc2NyaXB0aW9uQ29jb2EuY3BwCShyZXZpc2lvbiAyMzY5MTQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RGVzY3JpcHRpb25Db2NvYS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI2LDE3NSArMjYsMTIgQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJGb250RGVzY3JpcHRpb24uaCIKIAotI2luY2x1ZGUgIkZvbnRDYWNoZS5oIgot
I2luY2x1ZGUgIkZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHQuaCIKLSNpbmNsdWRlIDxw
YWwvc3BpL2NvY29hL0NvcmVUZXh0U1BJLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNp
bmNsdWRlIDx3dGYvSGFzaFRyYWl0cy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmlu
Zy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZ0hhc2guaD4KLQotI2lmIFBMQVRG
T1JNKElPUykKLSNpbmNsdWRlICJSZW5kZXJUaGVtZUlPUy5oIgotI2VuZGlmCisjaW5jbHVkZSAi
U3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQuaCIKIAogI2lmIFVTRV9QTEFURk9STV9TWVNURU1f
RkFMTEJBQ0tfTElTVAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFN5c3RlbUZvbnRE
YXRhYmFzZSB7Ci1wdWJsaWM6Ci0gICAgc3RydWN0IENvcmVUZXh0Q2FzY2FkZUxpc3RQYXJhbWV0
ZXJzIHsKLSAgICAgICAgQ29yZVRleHRDYXNjYWRlTGlzdFBhcmFtZXRlcnMoKQotICAgICAgICB7
Ci0gICAgICAgIH0KLQotICAgICAgICBDb3JlVGV4dENhc2NhZGVMaXN0UGFyYW1ldGVycyhXVEY6
Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpCi0gICAgICAgICAgICA6IGZvbnROYW1lKFdURjo6
SGFzaFRhYmxlRGVsZXRlZFZhbHVlKQotICAgICAgICB7Ci0gICAgICAgIH0KLQotICAgICAgICBi
b29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAg
ICAgcmV0dXJuIGZvbnROYW1lLmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7Ci0gICAgICAgIH0K
LQotICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ29yZVRleHRDYXNjYWRlTGlzdFBhcmFt
ZXRlcnMmIG90aGVyKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZm9udE5h
bWUgPT0gb3RoZXIuZm9udE5hbWUKLSAgICAgICAgICAgICAgICAmJiBsb2NhbGUgPT0gb3RoZXIu
bG9jYWxlCi0gICAgICAgICAgICAgICAgJiYgd2VpZ2h0ID09IG90aGVyLndlaWdodAotICAgICAg
ICAgICAgICAgICYmIHNpemUgPT0gb3RoZXIuc2l6ZQotICAgICAgICAgICAgICAgICYmIGFsbG93
VXNlckluc3RhbGxlZEZvbnRzID09IG90aGVyLmFsbG93VXNlckluc3RhbGxlZEZvbnRzCi0gICAg
ICAgICAgICAgICAgJiYgaXRhbGljID09IG90aGVyLml0YWxpYzsKLSAgICAgICAgfQotCi0gICAg
ICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICBJbnRlZ2Vy
SGFzaGVyIGhhc2hlcjsKLSAgICAgICAgICAgIEFTU0VSVCghZm9udE5hbWUuaXNOdWxsKCkpOwot
ICAgICAgICAgICAgaGFzaGVyLmFkZChsb2NhbGUuZXhpc3RpbmdIYXNoKCkpOwotICAgICAgICAg
ICAgaGFzaGVyLmFkZChsb2NhbGUuaXNOdWxsKCkgPyAwIDogbG9jYWxlLmV4aXN0aW5nSGFzaCgp
KTsKLSAgICAgICAgICAgIGhhc2hlci5hZGQod2VpZ2h0KTsKLSAgICAgICAgICAgIGhhc2hlci5h
ZGQoc2l6ZSk7Ci0gICAgICAgICAgICBoYXNoZXIuYWRkKHN0YXRpY19jYXN0PHVuc2lnbmVkPihh
bGxvd1VzZXJJbnN0YWxsZWRGb250cykpOwotICAgICAgICAgICAgaGFzaGVyLmFkZChpdGFsaWMp
OwotICAgICAgICAgICAgcmV0dXJuIGhhc2hlci5oYXNoKCk7Ci0gICAgICAgIH0KLQotICAgICAg
ICBzdHJ1Y3QgQ29yZVRleHRDYXNjYWRlTGlzdFBhcmFtZXRlcnNIYXNoIDogV1RGOjpQYWlySGFz
aDxBdG9taWNTdHJpbmcsIGZsb2F0PiB7Ci0gICAgICAgICAgICBzdGF0aWMgdW5zaWduZWQgaGFz
aChjb25zdCBDb3JlVGV4dENhc2NhZGVMaXN0UGFyYW1ldGVycyYgcGFyYW1ldGVycykKLSAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gcGFyYW1ldGVycy5oYXNoKCk7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBDb3JlVGV4dENh
c2NhZGVMaXN0UGFyYW1ldGVycyYgYSwgY29uc3QgQ29yZVRleHRDYXNjYWRlTGlzdFBhcmFtZXRl
cnMmIGIpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGEgPT0gYjsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBhcmVU
b0VtcHR5T3JEZWxldGVkID0gdHJ1ZTsKLSAgICAgICAgfTsKLQotICAgICAgICBBdG9taWNTdHJp
bmcgZm9udE5hbWU7Ci0gICAgICAgIEF0b21pY1N0cmluZyBsb2NhbGU7Ci0gICAgICAgIENHRmxv
YXQgd2VpZ2h0IHsgMCB9OwotICAgICAgICBmbG9hdCBzaXplIHsgMCB9OwotICAgICAgICBBbGxv
d1VzZXJJbnN0YWxsZWRGb250cyBhbGxvd1VzZXJJbnN0YWxsZWRGb250cyB7IEFsbG93VXNlcklu
c3RhbGxlZEZvbnRzOjpObyB9OwotICAgICAgICBib29sIGl0YWxpYyB7IGZhbHNlIH07Ci0gICAg
fTsKLQotICAgIHN0YXRpYyBTeXN0ZW1Gb250RGF0YWJhc2UmIHNpbmdsZXRvbigpCi0gICAgewot
ICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3lzdGVtRm9udERhdGFiYXNlPiBkYXRhYmFz
ZSA9IFN5c3RlbUZvbnREYXRhYmFzZSgpOwotICAgICAgICByZXR1cm4gZGF0YWJhc2UuZ2V0KCk7
Ci0gICAgfQotCi0gICAgZW51bSBjbGFzcyBDbGllbnRVc2UgeyBGb3JTeXN0ZW1VSSwgRm9yVGV4
dFN0eWxlIH07Ci0KLSAgICBWZWN0b3I8UmV0YWluUHRyPENURm9udERlc2NyaXB0b3JSZWY+PiBz
eXN0ZW1Gb250Q2FzY2FkZUxpc3QoY29uc3QgQ29yZVRleHRDYXNjYWRlTGlzdFBhcmFtZXRlcnMm
IHBhcmFtZXRlcnMsIENsaWVudFVzZSBjbGllbnRVc2UpCi0gICAgewotICAgICAgICBBU1NFUlQo
IXBhcmFtZXRlcnMuZm9udE5hbWUuaXNOdWxsKCkpOwotICAgICAgICByZXR1cm4gbV9zeXN0ZW1G
b250Q2FjaGUuZW5zdXJlKHBhcmFtZXRlcnMsIFsmXSB7Ci0gICAgICAgICAgICBhdXRvIGxvY2Fs
ZVN0cmluZyA9IHBhcmFtZXRlcnMubG9jYWxlLnN0cmluZygpLmNyZWF0ZUNGU3RyaW5nKCk7Ci0g
ICAgICAgICAgICBSZXRhaW5QdHI8Q1RGb250UmVmPiBzeXN0ZW1Gb250OwotICAgICAgICAgICAg
aWYgKGNsaWVudFVzZSA9PSBDbGllbnRVc2U6OkZvclN5c3RlbVVJKSB7Ci0gICAgICAgICAgICAg
ICAgc3lzdGVtRm9udCA9IGFkb3B0Q0YoQ1RGb250Q3JlYXRlVUlGb250Rm9yTGFuZ3VhZ2Uoa0NU
Rm9udFVJRm9udFN5c3RlbSwgcGFyYW1ldGVycy5zaXplLCBsb2NhbGVTdHJpbmcuZ2V0KCkpKTsK
LSAgICAgICAgICAgICAgICBBU1NFUlQoc3lzdGVtRm9udCk7Ci0gICAgICAgICAgICAgICAgLy8g
RklYTUU6IFVzZSBhcHBseVdlaWdodEl0YWxpY3NBbmRGYWxsYmFja0JlaGF2aW9yKCkgaW4gYm90
aCBjYXNlcyBvbmNlIDxyZGFyOi8vcHJvYmxlbS8zMzA0NjA0MT4gaXMgZml4ZWQuCi0gICAgICAg
ICAgICAgICAgc3lzdGVtRm9udCA9IGFwcGx5V2VpZ2h0SXRhbGljc0FuZEZhbGxiYWNrQmVoYXZp
b3Ioc3lzdGVtRm9udC5nZXQoKSwgcGFyYW1ldGVycy53ZWlnaHQsIHBhcmFtZXRlcnMuaXRhbGlj
LCBwYXJhbWV0ZXJzLnNpemUsIHBhcmFtZXRlcnMuYWxsb3dVc2VySW5zdGFsbGVkRm9udHMpOwot
ICAgICAgICAgICAgfSBlbHNlIHsKLSNpZiBQTEFURk9STShJT1MpCi0gICAgICAgICAgICAgICAg
QVNTRVJUKGNsaWVudFVzZSA9PSBDbGllbnRVc2U6OkZvclRleHRTdHlsZSk7Ci0gICAgICAgICAg
ICAgICAgYXV0byBmb250RGVzY3JpcHRvciA9IGFkb3B0Q0YoQ1RGb250RGVzY3JpcHRvckNyZWF0
ZVdpdGhUZXh0U3R5bGUocGFyYW1ldGVycy5mb250TmFtZS5zdHJpbmcoKS5jcmVhdGVDRlN0cmlu
ZygpLmdldCgpLCBSZW5kZXJUaGVtZUlPUzo6Y29udGVudFNpemVDYXRlZ29yeSgpLCBudWxscHRy
KSk7Ci0gICAgICAgICAgICAgICAgQ1RGb250U3ltYm9saWNUcmFpdHMgdHJhaXRzID0gKHBhcmFt
ZXRlcnMud2VpZ2h0ID49IGtDVEZvbnRXZWlnaHRTZW1pYm9sZCA/IGtDVEZvbnRUcmFpdEJvbGQg
OiAwKSB8IChwYXJhbWV0ZXJzLml0YWxpYyA/IGtDVEZvbnRUcmFpdEl0YWxpYyA6IDApOwotICAg
ICAgICAgICAgICAgIGlmICh0cmFpdHMpCi0gICAgICAgICAgICAgICAgICAgIGZvbnREZXNjcmlw
dG9yID0gYWRvcHRDRihDVEZvbnREZXNjcmlwdG9yQ3JlYXRlQ29weVdpdGhTeW1ib2xpY1RyYWl0
cyhmb250RGVzY3JpcHRvci5nZXQoKSwgdHJhaXRzLCB0cmFpdHMpKTsKLSAgICAgICAgICAgICAg
ICBzeXN0ZW1Gb250ID0gY3JlYXRlRm9udEZvckluc3RhbGxlZEZvbnRzKGZvbnREZXNjcmlwdG9y
LmdldCgpLCBwYXJhbWV0ZXJzLnNpemUsIHBhcmFtZXRlcnMuYWxsb3dVc2VySW5zdGFsbGVkRm9u
dHMpOwotI2Vsc2UKLSAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSNlbmRp
ZgotICAgICAgICAgICAgfQotICAgICAgICAgICAgQVNTRVJUKHN5c3RlbUZvbnQpOwotICAgICAg
ICAgICAgYXV0byByZXN1bHQgPSBjb21wdXRlQ2FzY2FkZUxpc3Qoc3lzdGVtRm9udC5nZXQoKSwg
bG9jYWxlU3RyaW5nLmdldCgpKTsKLSAgICAgICAgICAgIEFTU0VSVCghcmVzdWx0LmlzRW1wdHko
KSk7Ci0gICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgICB9KS5pdGVyYXRvci0+dmFs
dWU7Ci0gICAgfQotCi0gICAgdm9pZCBjbGVhcigpCi0gICAgewotICAgICAgICBtX3N5c3RlbUZv
bnRDYWNoZS5jbGVhcigpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBTeXN0ZW1Gb250RGF0YWJh
c2UoKQotICAgIHsKLSAgICB9Ci0KLSAgICBzdGF0aWMgUmV0YWluUHRyPENURm9udFJlZj4gYXBw
bHlXZWlnaHRJdGFsaWNzQW5kRmFsbGJhY2tCZWhhdmlvcihDVEZvbnRSZWYgZm9udCwgQ0dGbG9h
dCB3ZWlnaHQsIGJvb2wgaXRhbGljLCBmbG9hdCBzaXplLCBBbGxvd1VzZXJJbnN0YWxsZWRGb250
cyBhbGxvd1VzZXJJbnN0YWxsZWRGb250cykKLSAgICB7Ci0gICAgICAgIGF1dG8gd2VpZ2h0TnVt
YmVyID0gYWRvcHRDRihDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1i
ZXJDR0Zsb2F0VHlwZSwgJndlaWdodCkpOwotICAgICAgICBjb25zdCBmbG9hdCBzeXN0ZW1Gb250
SXRhbGljU2xvcGUgPSAwLjA3OwotICAgICAgICBmbG9hdCBpdGFsaWNzUmF3TnVtYmVyID0gaXRh
bGljID8gc3lzdGVtRm9udEl0YWxpY1Nsb3BlIDogMDsKLSAgICAgICAgYXV0byBpdGFsaWNzTnVt
YmVyID0gYWRvcHRDRihDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1i
ZXJGbG9hdFR5cGUsICZpdGFsaWNzUmF3TnVtYmVyKSk7Ci0gICAgICAgIENGVHlwZVJlZiB0cmFp
dHNLZXlzW10gPSB7IGtDVEZvbnRXZWlnaHRUcmFpdCwga0NURm9udFNsYW50VHJhaXQsIGtDVEZv
bnRVSUZvbnREZXNpZ25UcmFpdCB9OwotICAgICAgICBDRlR5cGVSZWYgdHJhaXRzVmFsdWVzW10g
PSB7IHdlaWdodE51bWJlci5nZXQoKSwgaXRhbGljc051bWJlci5nZXQoKSwga0NGQm9vbGVhblRy
dWUgfTsKLSAgICAgICAgYXV0byB0cmFpdHNEaWN0aW9uYXJ5ID0gYWRvcHRDRihDRkRpY3Rpb25h
cnlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgdHJhaXRzS2V5cywgdHJhaXRzVmFsdWVzLCBX
VEZfQVJSQVlfTEVOR1RIKHRyYWl0c0tleXMpLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFj
a3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7Ci0gICAgICAgIGF1dG8gYXR0
cmlidXRlcyA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCAwLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlv
bmFyeVZhbHVlQ2FsbEJhY2tzKSk7Ci0gICAgICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGF0dHJp
YnV0ZXMuZ2V0KCksIGtDVEZvbnRUcmFpdHNBdHRyaWJ1dGUsIHRyYWl0c0RpY3Rpb25hcnkuZ2V0
KCkpOwotICAgICAgICBhZGRBdHRyaWJ1dGVzRm9ySW5zdGFsbGVkRm9udHMoYXR0cmlidXRlcy5n
ZXQoKSwgYWxsb3dVc2VySW5zdGFsbGVkRm9udHMpOwotICAgICAgICBhdXRvIG1vZGlmaWNhdGlv
biA9IGFkb3B0Q0YoQ1RGb250RGVzY3JpcHRvckNyZWF0ZVdpdGhBdHRyaWJ1dGVzKGF0dHJpYnV0
ZXMuZ2V0KCkpKTsKLSAgICAgICAgcmV0dXJuIGFkb3B0Q0YoQ1RGb250Q3JlYXRlQ29weVdpdGhB
dHRyaWJ1dGVzKGZvbnQsIHNpemUsIG51bGxwdHIsIG1vZGlmaWNhdGlvbi5nZXQoKSkpOwotICAg
IH0KLQotICAgIHN0YXRpYyBSZXRhaW5QdHI8Q1RGb250RGVzY3JpcHRvclJlZj4gcmVtb3ZlQ2Fz
Y2FkZUxpc3QoQ1RGb250RGVzY3JpcHRvclJlZiBmb250RGVzY3JpcHRvcikKLSAgICB7Ci0gICAg
ICAgIGF1dG8gZW1wdHlBcnJheSA9IGFkb3B0Q0YoQ0ZBcnJheUNyZWF0ZShrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCBudWxscHRyLCAwLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKSk7Ci0gICAgICAgIENG
VHlwZVJlZiBmYWxsYmFja0RpY3Rpb25hcnlLZXlzW10gPSB7IGtDVEZvbnRDYXNjYWRlTGlzdEF0
dHJpYnV0ZSB9OwotICAgICAgICBDRlR5cGVSZWYgZmFsbGJhY2tEaWN0aW9uYXJ5VmFsdWVzW10g
PSB7IGVtcHR5QXJyYXkuZ2V0KCkgfTsKLSAgICAgICAgYXV0byBmYWxsYmFja0RpY3Rpb25hcnkg
PSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBmYWxsYmFj
a0RpY3Rpb25hcnlLZXlzLCBmYWxsYmFja0RpY3Rpb25hcnlWYWx1ZXMsIFdURl9BUlJBWV9MRU5H
VEgoZmFsbGJhY2tEaWN0aW9uYXJ5S2V5cyksICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNr
cywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKLSAgICAgICAgYXV0byBtb2Rp
ZmllZEZvbnREZXNjcmlwdG9yID0gYWRvcHRDRihDVEZvbnREZXNjcmlwdG9yQ3JlYXRlQ29weVdp
dGhBdHRyaWJ1dGVzKGZvbnREZXNjcmlwdG9yLCBmYWxsYmFja0RpY3Rpb25hcnkuZ2V0KCkpKTsK
LSAgICAgICAgcmV0dXJuIG1vZGlmaWVkRm9udERlc2NyaXB0b3I7Ci0gICAgfQotCi0gICAgc3Rh
dGljIFZlY3RvcjxSZXRhaW5QdHI8Q1RGb250RGVzY3JpcHRvclJlZj4+IGNvbXB1dGVDYXNjYWRl
TGlzdChDVEZvbnRSZWYgZm9udCwgQ0ZTdHJpbmdSZWYgbG9jYWxlKQotICAgIHsKLSAgICAgICAg
Q0ZUeXBlUmVmIGFycmF5VmFsdWVzW10gPSB7IGxvY2FsZSB9OwotICAgICAgICBhdXRvIGxvY2Fs
ZUFycmF5ID0gYWRvcHRDRihDRkFycmF5Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGFycmF5
VmFsdWVzLCBXVEZfQVJSQVlfTEVOR1RIKGFycmF5VmFsdWVzKSwgJmtDRlR5cGVBcnJheUNhbGxC
YWNrcykpOwotICAgICAgICBhdXRvIGNhc2NhZGVMaXN0ID0gYWRvcHRDRihDVEZvbnRDb3B5RGVm
YXVsdENhc2NhZGVMaXN0Rm9yTGFuZ3VhZ2VzKGZvbnQsIGxvY2FsZUFycmF5LmdldCgpKSk7Ci0g
ICAgICAgIFZlY3RvcjxSZXRhaW5QdHI8Q1RGb250RGVzY3JpcHRvclJlZj4+IHJlc3VsdDsKLSAg
ICAgICAgLy8gV2ViS2l0IGhhbmRsZXMgdGhlIGNhc2NhZGUgbGlzdCwgYW5kIFdlYktpdCAyJ3Mg
SVBDIGNvZGUgZG9lc24ndCBrbm93IGhvdyB0byBzZXJpYWxpemUgQ29yZSBUZXh0J3MgY2FzY2Fk
ZSBsaXN0LgotICAgICAgICByZXN1bHQuYXBwZW5kKHJlbW92ZUNhc2NhZGVMaXN0KGFkb3B0Q0Yo
Q1RGb250Q29weUZvbnREZXNjcmlwdG9yKGZvbnQpKS5nZXQoKSkpOwotICAgICAgICBpZiAoY2Fz
Y2FkZUxpc3QpIHsKLSAgICAgICAgICAgIENGSW5kZXggYXJyYXlMZW5ndGggPSBDRkFycmF5R2V0
Q291bnQoY2FzY2FkZUxpc3QuZ2V0KCkpOwotICAgICAgICAgICAgZm9yIChDRkluZGV4IGkgPSAw
OyBpIDwgYXJyYXlMZW5ndGg7ICsraSkKLSAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHN0
YXRpY19jYXN0PENURm9udERlc2NyaXB0b3JSZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgoY2Fz
Y2FkZUxpc3QuZ2V0KCksIGkpKSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHJlc3VsdDsK
LSAgICB9Ci0KLSAgICBIYXNoTWFwPENvcmVUZXh0Q2FzY2FkZUxpc3RQYXJhbWV0ZXJzLCBWZWN0
b3I8UmV0YWluUHRyPENURm9udERlc2NyaXB0b3JSZWY+PiwgQ29yZVRleHRDYXNjYWRlTGlzdFBh
cmFtZXRlcnM6OkNvcmVUZXh0Q2FzY2FkZUxpc3RQYXJhbWV0ZXJzSGFzaCwgU2ltcGxlQ2xhc3NI
YXNoVHJhaXRzPENvcmVUZXh0Q2FzY2FkZUxpc3RQYXJhbWV0ZXJzPj4gbV9zeXN0ZW1Gb250Q2Fj
aGU7Ci19OwotCiBzdGF0aWMgaW5saW5lIGJvb2wgaXNTeXN0ZW1Gb250U3RyaW5nKGNvbnN0IEF0
b21pY1N0cmluZyYgc3RyaW5nKQogewogICAgIHJldHVybiBlcXVhbExldHRlcnNJZ25vcmluZ0FT
Q0lJQ2FzZShzdHJpbmcsICItd2Via2l0LXN5c3RlbS1mb250IikKQEAgLTI0NCw1NyArODEsOSBA
QCBzdGF0aWMgaW5saW5lIGJvb2wgaXNVSUZvbnRUZXh0U3R5bGUoY29uCiB9CiAjZW5kaWYKIAot
c3RhdGljIGlubGluZSBTeXN0ZW1Gb250RGF0YWJhc2U6OkNvcmVUZXh0Q2FzY2FkZUxpc3RQYXJh
bWV0ZXJzIHN5c3RlbUZvbnRQYXJhbWV0ZXJzKGNvbnN0IEZvbnRDYXNjYWRlRGVzY3JpcHRpb24m
IGRlc2NyaXB0aW9uLCBjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlseU5hbWUsIFN5c3RlbUZvbnRE
YXRhYmFzZTo6Q2xpZW50VXNlIGNsaWVudFVzZSwgQWxsb3dVc2VySW5zdGFsbGVkRm9udHMgYWxs
b3dVc2VySW5zdGFsbGVkRm9udHMpCi17Ci0gICAgU3lzdGVtRm9udERhdGFiYXNlOjpDb3JlVGV4
dENhc2NhZGVMaXN0UGFyYW1ldGVycyByZXN1bHQ7Ci0gICAgcmVzdWx0LmxvY2FsZSA9IGRlc2Ny
aXB0aW9uLmxvY2FsZSgpOwotICAgIHJlc3VsdC5zaXplID0gZGVzY3JpcHRpb24uY29tcHV0ZWRT
aXplKCk7Ci0gICAgcmVzdWx0Lml0YWxpYyA9IGlzSXRhbGljKGRlc2NyaXB0aW9uLml0YWxpYygp
KTsKLQotICAgIGF1dG8gd2VpZ2h0ID0gZGVzY3JpcHRpb24ud2VpZ2h0KCk7Ci0gICAgaWYgKEZv
bnRDYWNoZTo6c2luZ2xldG9uKCkuc2hvdWxkTW9ja0JvbGRTeXN0ZW1Gb250Rm9yQWNjZXNzaWJp
bGl0eSgpKQotICAgICAgICB3ZWlnaHQgPSB3ZWlnaHQgKyBGb250U2VsZWN0aW9uVmFsdWUoMjAw
KTsKLQotICAgIGlmICh3ZWlnaHQgPCBGb250U2VsZWN0aW9uVmFsdWUoMTUwKSkKLSAgICAgICAg
cmVzdWx0LndlaWdodCA9IGtDVEZvbnRXZWlnaHRVbHRyYUxpZ2h0OwotICAgIGVsc2UgaWYgKHdl
aWdodCA8IEZvbnRTZWxlY3Rpb25WYWx1ZSgyNTApKQotICAgICAgICByZXN1bHQud2VpZ2h0ID0g
a0NURm9udFdlaWdodFRoaW47Ci0gICAgZWxzZSBpZiAod2VpZ2h0IDwgRm9udFNlbGVjdGlvblZh
bHVlKDM1MCkpCi0gICAgICAgIHJlc3VsdC53ZWlnaHQgPSBrQ1RGb250V2VpZ2h0TGlnaHQ7Ci0g
ICAgZWxzZSBpZiAod2VpZ2h0IDwgRm9udFNlbGVjdGlvblZhbHVlKDQ1MCkpCi0gICAgICAgIHJl
c3VsdC53ZWlnaHQgPSBrQ1RGb250V2VpZ2h0UmVndWxhcjsKLSAgICBlbHNlIGlmICh3ZWlnaHQg
PCBGb250U2VsZWN0aW9uVmFsdWUoNTUwKSkKLSAgICAgICAgcmVzdWx0LndlaWdodCA9IGtDVEZv
bnRXZWlnaHRNZWRpdW07Ci0gICAgZWxzZSBpZiAod2VpZ2h0IDwgRm9udFNlbGVjdGlvblZhbHVl
KDY1MCkpCi0gICAgICAgIHJlc3VsdC53ZWlnaHQgPSBrQ1RGb250V2VpZ2h0U2VtaWJvbGQ7Ci0g
ICAgZWxzZSBpZiAod2VpZ2h0IDwgRm9udFNlbGVjdGlvblZhbHVlKDc1MCkpCi0gICAgICAgIHJl
c3VsdC53ZWlnaHQgPSBrQ1RGb250V2VpZ2h0Qm9sZDsKLSAgICBlbHNlIGlmICh3ZWlnaHQgPCBG
b250U2VsZWN0aW9uVmFsdWUoODUwKSkKLSAgICAgICAgcmVzdWx0LndlaWdodCA9IGtDVEZvbnRX
ZWlnaHRIZWF2eTsKLSAgICBlbHNlCi0gICAgICAgIHJlc3VsdC53ZWlnaHQgPSBrQ1RGb250V2Vp
Z2h0QmxhY2s7Ci0KLSAgICBpZiAoY2xpZW50VXNlID09IFN5c3RlbUZvbnREYXRhYmFzZTo6Q2xp
ZW50VXNlOjpGb3JTeXN0ZW1VSSkgewotICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRv
bWljU3RyaW5nPiBzeXN0ZW1VSSA9IEF0b21pY1N0cmluZygic3lzdGVtLXVpIiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgICAgIHJlc3VsdC5mb250TmFtZSA9IHN5
c3RlbVVJLmdldCgpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIEFTU0VSVChjbGllbnRVc2UgPT0g
U3lzdGVtRm9udERhdGFiYXNlOjpDbGllbnRVc2U6OkZvclRleHRTdHlsZSk7Ci0gICAgICAgIHJl
c3VsdC5mb250TmFtZSA9IGZhbWlseU5hbWU7Ci0gICAgfQotCi0gICAgcmVzdWx0LmFsbG93VXNl
ckluc3RhbGxlZEZvbnRzID0gYWxsb3dVc2VySW5zdGFsbGVkRm9udHM7Ci0KLSAgICByZXR1cm4g
cmVzdWx0OwotfQotCi12b2lkIEZvbnREZXNjcmlwdGlvbjo6aW52YWxpZGF0ZUNhY2hlcygpCi17
Ci0gICAgU3lzdGVtRm9udERhdGFiYXNlOjpzaW5nbGV0b24oKS5jbGVhcigpOwotfQotCi1zdGF0
aWMgaW5saW5lIFZlY3RvcjxSZXRhaW5QdHI8Q1RGb250RGVzY3JpcHRvclJlZj4+IHN5c3RlbUZv
bnRDYXNjYWRlTGlzdChjb25zdCBGb250Q2FzY2FkZURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwg
Y29uc3QgQXRvbWljU3RyaW5nJiBjc3NGYW1pbHksIFN5c3RlbUZvbnREYXRhYmFzZTo6Q2xpZW50
VXNlIGNsaWVudFVzZSwgQWxsb3dVc2VySW5zdGFsbGVkRm9udHMgYWxsb3dVc2VySW5zdGFsbGVk
Rm9udHMpCitzdGF0aWMgaW5saW5lIFZlY3RvcjxSZXRhaW5QdHI8Q1RGb250RGVzY3JpcHRvclJl
Zj4+IHN5c3RlbUZvbnRDYXNjYWRlTGlzdChjb25zdCBGb250Q2FzY2FkZURlc2NyaXB0aW9uJiBk
ZXNjcmlwdGlvbiwgY29uc3QgQXRvbWljU3RyaW5nJiBjc3NGYW1pbHksIFN5c3RlbUZvbnREYXRh
YmFzZUNvcmVUZXh0OjpDbGllbnRVc2UgY2xpZW50VXNlLCBBbGxvd1VzZXJJbnN0YWxsZWRGb250
cyBhbGxvd1VzZXJJbnN0YWxsZWRGb250cykKIHsKLSAgICByZXR1cm4gU3lzdGVtRm9udERhdGFi
YXNlOjpzaW5nbGV0b24oKS5zeXN0ZW1Gb250Q2FzY2FkZUxpc3Qoc3lzdGVtRm9udFBhcmFtZXRl
cnMoZGVzY3JpcHRpb24sIGNzc0ZhbWlseSwgY2xpZW50VXNlLCBhbGxvd1VzZXJJbnN0YWxsZWRG
b250cyksIGNsaWVudFVzZSk7CisgICAgcmV0dXJuIFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0
OjpzaW5nbGV0b24oKS5jYXNjYWRlTGlzdChkZXNjcmlwdGlvbiwgY3NzRmFtaWx5LCBjbGllbnRV
c2UsIGFsbG93VXNlckluc3RhbGxlZEZvbnRzKTsKIH0KIAogdW5zaWduZWQgRm9udENhc2NhZGVE
ZXNjcmlwdGlvbjo6ZWZmZWN0aXZlRmFtaWx5Q291bnQoKSBjb25zdApAQCAtMzA0LDEwICs5Mywx
MCBAQCB1bnNpZ25lZCBGb250Q2FzY2FkZURlc2NyaXB0aW9uOjplZmZlY3RpCiAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IGZhbWlseUNvdW50KCk7ICsraSkgewogICAgICAgICBjb25zdCBh
dXRvJiBjc3NGYW1pbHkgPSBmYW1pbHlBdChpKTsKICAgICAgICAgaWYgKGlzU3lzdGVtRm9udFN0
cmluZyhjc3NGYW1pbHkpKQotICAgICAgICAgICAgcmVzdWx0ICs9IHN5c3RlbUZvbnRDYXNjYWRl
TGlzdCgqdGhpcywgY3NzRmFtaWx5LCBTeXN0ZW1Gb250RGF0YWJhc2U6OkNsaWVudFVzZTo6Rm9y
U3lzdGVtVUksIHNob3VsZEFsbG93VXNlckluc3RhbGxlZEZvbnRzKCkpLnNpemUoKTsKKyAgICAg
ICAgICAgIHJlc3VsdCArPSBzeXN0ZW1Gb250Q2FzY2FkZUxpc3QoKnRoaXMsIGNzc0ZhbWlseSwg
U3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQ6OkNsaWVudFVzZTo6Rm9yU3lzdGVtVUksIHNob3Vs
ZEFsbG93VXNlckluc3RhbGxlZEZvbnRzKCkpLnNpemUoKTsKICNpZiBQTEFURk9STShJT1MpCiAg
ICAgICAgIGVsc2UgaWYgKGlzVUlGb250VGV4dFN0eWxlKGNzc0ZhbWlseSkpCi0gICAgICAgICAg
ICByZXN1bHQgKz0gc3lzdGVtRm9udENhc2NhZGVMaXN0KCp0aGlzLCBjc3NGYW1pbHksIFN5c3Rl
bUZvbnREYXRhYmFzZTo6Q2xpZW50VXNlOjpGb3JUZXh0U3R5bGUsIHNob3VsZEFsbG93VXNlcklu
c3RhbGxlZEZvbnRzKCkpLnNpemUoKTsKKyAgICAgICAgICAgIHJlc3VsdCArPSBzeXN0ZW1Gb250
Q2FzY2FkZUxpc3QoKnRoaXMsIGNzc0ZhbWlseSwgU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQ6
OkNsaWVudFVzZTo6Rm9yVGV4dFN0eWxlLCBzaG91bGRBbGxvd1VzZXJJbnN0YWxsZWRGb250cygp
KS5zaXplKCk7CiAjZW5kaWYKICAgICAgICAgZWxzZQogICAgICAgICAgICAgKytyZXN1bHQ7CkBA
IC0zMjcsMTQgKzExNiwxNCBAQCBGb250RmFtaWx5U3BlY2lmaWNhdGlvbiBGb250Q2FzY2FkZURl
c2NyCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGZhbWlseUNvdW50KCk7ICsraSkgewog
ICAgICAgICBjb25zdCBhdXRvJiBjc3NGYW1pbHkgPSBmYW1pbHlBdChpKTsKICAgICAgICAgaWYg
KGlzU3lzdGVtRm9udFN0cmluZyhjc3NGYW1pbHkpKSB7Ci0gICAgICAgICAgICBhdXRvIGNhc2Nh
ZGVMaXN0ID0gc3lzdGVtRm9udENhc2NhZGVMaXN0KCp0aGlzLCBjc3NGYW1pbHksIFN5c3RlbUZv
bnREYXRhYmFzZTo6Q2xpZW50VXNlOjpGb3JTeXN0ZW1VSSwgc2hvdWxkQWxsb3dVc2VySW5zdGFs
bGVkRm9udHMoKSk7CisgICAgICAgICAgICBhdXRvIGNhc2NhZGVMaXN0ID0gc3lzdGVtRm9udENh
c2NhZGVMaXN0KCp0aGlzLCBjc3NGYW1pbHksIFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0OjpD
bGllbnRVc2U6OkZvclN5c3RlbVVJLCBzaG91bGRBbGxvd1VzZXJJbnN0YWxsZWRGb250cygpKTsK
ICAgICAgICAgICAgIGlmIChpbmRleCA8IGNhc2NhZGVMaXN0LnNpemUoKSkKICAgICAgICAgICAg
ICAgICByZXR1cm4gRm9udEZhbWlseVNwZWNpZmljYXRpb24oY2FzY2FkZUxpc3RbaW5kZXhdLmdl
dCgpKTsKICAgICAgICAgICAgIGluZGV4IC09IGNhc2NhZGVMaXN0LnNpemUoKTsKICAgICAgICAg
fQogI2lmIFBMQVRGT1JNKElPUykKICAgICAgICAgZWxzZSBpZiAoaXNVSUZvbnRUZXh0U3R5bGUo
Y3NzRmFtaWx5KSkgewotICAgICAgICAgICAgYXV0byBjYXNjYWRlTGlzdCA9IHN5c3RlbUZvbnRD
YXNjYWRlTGlzdCgqdGhpcywgY3NzRmFtaWx5LCBTeXN0ZW1Gb250RGF0YWJhc2U6OkNsaWVudFVz
ZTo6Rm9yVGV4dFN0eWxlLCBzaG91bGRBbGxvd1VzZXJJbnN0YWxsZWRGb250cygpKTsKKyAgICAg
ICAgICAgIGF1dG8gY2FzY2FkZUxpc3QgPSBzeXN0ZW1Gb250Q2FzY2FkZUxpc3QoKnRoaXMsIGNz
c0ZhbWlseSwgU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQ6OkNsaWVudFVzZTo6Rm9yVGV4dFN0
eWxlLCBzaG91bGRBbGxvd1VzZXJJbnN0YWxsZWRGb250cygpKTsKICAgICAgICAgICAgIGlmIChp
bmRleCA8IGNhc2NhZGVMaXN0LnNpemUoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gRm9udEZh
bWlseVNwZWNpZmljYXRpb24oY2FzY2FkZUxpc3RbaW5kZXhdLmdldCgpKTsKICAgICAgICAgICAg
IGluZGV4IC09IGNhc2NhZGVMaXN0LnNpemUoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1N5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9TeXN0ZW1Gb250
RGF0YWJhc2VDb3JlVGV4dC5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMTc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIlN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0LmgiCisKKyNpZiBVU0Vf
UExBVEZPUk1fU1lTVEVNX0ZBTExCQUNLX0xJU1QKKworI2luY2x1ZGUgIkZvbnRDYWNoZS5oIgor
I2luY2x1ZGUgIkZvbnRDYXNjYWRlRGVzY3JpcHRpb24uaCIKKworI2lmIFBMQVRGT1JNKElPUykK
KyNpbmNsdWRlICJSZW5kZXJUaGVtZUlPUy5oIgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQmIFN5c3RlbUZvbnREYXRhYmFzZUNvcmVU
ZXh0OjpzaW5nbGV0b24oKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTeXN0ZW1Gb250
RGF0YWJhc2VDb3JlVGV4dD4gZGF0YWJhc2UgPSBTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dCgp
OworICAgIHJldHVybiBkYXRhYmFzZS5nZXQoKTsKK30KKworU3lzdGVtRm9udERhdGFiYXNlQ29y
ZVRleHQ6OlN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0KCkKK3sKK30KKworVmVjdG9yPFJldGFp
blB0cjxDVEZvbnREZXNjcmlwdG9yUmVmPj4gU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQ6OmNh
c2NhZGVMaXN0KGNvbnN0IENhc2NhZGVMaXN0UGFyYW1ldGVycyYgcGFyYW1ldGVycywgQ2xpZW50
VXNlIGNsaWVudFVzZSkKK3sKKyAgICBBU1NFUlQoIXBhcmFtZXRlcnMuZm9udE5hbWUuaXNOdWxs
KCkpOworICAgIHJldHVybiBtX3N5c3RlbUZvbnRDYWNoZS5lbnN1cmUocGFyYW1ldGVycywgWyZd
IHsKKyAgICAgICAgYXV0byBsb2NhbGVTdHJpbmcgPSBwYXJhbWV0ZXJzLmxvY2FsZS5zdHJpbmco
KS5jcmVhdGVDRlN0cmluZygpOworICAgICAgICBSZXRhaW5QdHI8Q1RGb250UmVmPiBzeXN0ZW1G
b250OworICAgICAgICBpZiAoY2xpZW50VXNlID09IENsaWVudFVzZTo6Rm9yU3lzdGVtVUkpIHsK
KyAgICAgICAgICAgIHN5c3RlbUZvbnQgPSBhZG9wdENGKENURm9udENyZWF0ZVVJRm9udEZvckxh
bmd1YWdlKGtDVEZvbnRVSUZvbnRTeXN0ZW0sIHBhcmFtZXRlcnMuc2l6ZSwgbG9jYWxlU3RyaW5n
LmdldCgpKSk7CisgICAgICAgICAgICBBU1NFUlQoc3lzdGVtRm9udCk7CisgICAgICAgICAgICAv
LyBGSVhNRTogVXNlIGFwcGx5V2VpZ2h0SXRhbGljc0FuZEZhbGxiYWNrQmVoYXZpb3IoKSBpbiBi
b3RoIGNhc2VzIG9uY2UgPHJkYXI6Ly9wcm9ibGVtLzMzMDQ2MDQxPiBpcyBmaXhlZC4KKyAgICAg
ICAgICAgIHN5c3RlbUZvbnQgPSBhcHBseVdlaWdodEl0YWxpY3NBbmRGYWxsYmFja0JlaGF2aW9y
KHN5c3RlbUZvbnQuZ2V0KCksIHBhcmFtZXRlcnMud2VpZ2h0LCBwYXJhbWV0ZXJzLml0YWxpYywg
cGFyYW1ldGVycy5zaXplLCBwYXJhbWV0ZXJzLmFsbG93VXNlckluc3RhbGxlZEZvbnRzKTsKKyAg
ICAgICAgfSBlbHNlIHsKKyNpZiBQTEFURk9STShJT1MpCisgICAgICAgICAgICBBU1NFUlQoY2xp
ZW50VXNlID09IENsaWVudFVzZTo6Rm9yVGV4dFN0eWxlKTsKKyAgICAgICAgICAgIGF1dG8gZm9u
dERlc2NyaXB0b3IgPSBhZG9wdENGKENURm9udERlc2NyaXB0b3JDcmVhdGVXaXRoVGV4dFN0eWxl
KHBhcmFtZXRlcnMuZm9udE5hbWUuc3RyaW5nKCkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgUmVu
ZGVyVGhlbWVJT1M6OmNvbnRlbnRTaXplQ2F0ZWdvcnkoKSwgbnVsbHB0cikpOworICAgICAgICAg
ICAgQ1RGb250U3ltYm9saWNUcmFpdHMgdHJhaXRzID0gKHBhcmFtZXRlcnMud2VpZ2h0ID49IGtD
VEZvbnRXZWlnaHRTZW1pYm9sZCA/IGtDVEZvbnRUcmFpdEJvbGQgOiAwKSB8IChwYXJhbWV0ZXJz
Lml0YWxpYyA/IGtDVEZvbnRUcmFpdEl0YWxpYyA6IDApOworICAgICAgICAgICAgaWYgKHRyYWl0
cykKKyAgICAgICAgICAgICAgICBmb250RGVzY3JpcHRvciA9IGFkb3B0Q0YoQ1RGb250RGVzY3Jp
cHRvckNyZWF0ZUNvcHlXaXRoU3ltYm9saWNUcmFpdHMoZm9udERlc2NyaXB0b3IuZ2V0KCksIHRy
YWl0cywgdHJhaXRzKSk7CisgICAgICAgICAgICBzeXN0ZW1Gb250ID0gY3JlYXRlRm9udEZvcklu
c3RhbGxlZEZvbnRzKGZvbnREZXNjcmlwdG9yLmdldCgpLCBwYXJhbWV0ZXJzLnNpemUsIHBhcmFt
ZXRlcnMuYWxsb3dVc2VySW5zdGFsbGVkRm9udHMpOworI2Vsc2UKKyAgICAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworI2VuZGlmCisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUKHN5c3Rl
bUZvbnQpOworICAgICAgICBhdXRvIHJlc3VsdCA9IGNvbXB1dGVDYXNjYWRlTGlzdChzeXN0ZW1G
b250LmdldCgpLCBsb2NhbGVTdHJpbmcuZ2V0KCkpOworICAgICAgICBBU1NFUlQoIXJlc3VsdC5p
c0VtcHR5KCkpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0pLml0ZXJhdG9yLT52YWx1
ZTsKK30KKwordm9pZCBTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dDo6Y2xlYXIoKQoreworICAg
IG1fc3lzdGVtRm9udENhY2hlLmNsZWFyKCk7Cit9CisKK1JldGFpblB0cjxDVEZvbnRSZWY+IFN5
c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0OjphcHBseVdlaWdodEl0YWxpY3NBbmRGYWxsYmFja0Jl
aGF2aW9yKENURm9udFJlZiBmb250LCBDR0Zsb2F0IHdlaWdodCwgYm9vbCBpdGFsaWMsIGZsb2F0
IHNpemUsIEFsbG93VXNlckluc3RhbGxlZEZvbnRzIGFsbG93VXNlckluc3RhbGxlZEZvbnRzKQor
eworICAgIGF1dG8gd2VpZ2h0TnVtYmVyID0gYWRvcHRDRihDRk51bWJlckNyZWF0ZShrQ0ZBbGxv
Y2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJDR0Zsb2F0VHlwZSwgJndlaWdodCkpOworICAgIGNvbnN0
IGZsb2F0IHN5c3RlbUZvbnRJdGFsaWNTbG9wZSA9IDAuMDc7CisgICAgZmxvYXQgaXRhbGljc1Jh
d051bWJlciA9IGl0YWxpYyA/IHN5c3RlbUZvbnRJdGFsaWNTbG9wZSA6IDA7CisgICAgYXV0byBp
dGFsaWNzTnVtYmVyID0gYWRvcHRDRihDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0
LCBrQ0ZOdW1iZXJGbG9hdFR5cGUsICZpdGFsaWNzUmF3TnVtYmVyKSk7CisgICAgQ0ZUeXBlUmVm
IHRyYWl0c0tleXNbXSA9IHsga0NURm9udFdlaWdodFRyYWl0LCBrQ1RGb250U2xhbnRUcmFpdCwg
a0NURm9udFVJRm9udERlc2lnblRyYWl0IH07CisgICAgQ0ZUeXBlUmVmIHRyYWl0c1ZhbHVlc1td
ID0geyB3ZWlnaHROdW1iZXIuZ2V0KCksIGl0YWxpY3NOdW1iZXIuZ2V0KCksIGtDRkJvb2xlYW5U
cnVlIH07CisgICAgYXV0byB0cmFpdHNEaWN0aW9uYXJ5ID0gYWRvcHRDRihDRkRpY3Rpb25hcnlD
cmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgdHJhaXRzS2V5cywgdHJhaXRzVmFsdWVzLCBXVEZf
QVJSQVlfTEVOR1RIKHRyYWl0c0tleXMpLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3Ms
ICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CisgICAgYXV0byBhdHRyaWJ1dGVz
ID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQs
IDAsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFs
dWVDYWxsQmFja3MpKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShhdHRyaWJ1dGVzLmdldCgp
LCBrQ1RGb250VHJhaXRzQXR0cmlidXRlLCB0cmFpdHNEaWN0aW9uYXJ5LmdldCgpKTsKKyAgICBh
ZGRBdHRyaWJ1dGVzRm9ySW5zdGFsbGVkRm9udHMoYXR0cmlidXRlcy5nZXQoKSwgYWxsb3dVc2Vy
SW5zdGFsbGVkRm9udHMpOworICAgIGF1dG8gbW9kaWZpY2F0aW9uID0gYWRvcHRDRihDVEZvbnRE
ZXNjcmlwdG9yQ3JlYXRlV2l0aEF0dHJpYnV0ZXMoYXR0cmlidXRlcy5nZXQoKSkpOworICAgIHJl
dHVybiBhZG9wdENGKENURm9udENyZWF0ZUNvcHlXaXRoQXR0cmlidXRlcyhmb250LCBzaXplLCBu
dWxscHRyLCBtb2RpZmljYXRpb24uZ2V0KCkpKTsKK30KKworUmV0YWluUHRyPENURm9udERlc2Ny
aXB0b3JSZWY+IFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0OjpyZW1vdmVDYXNjYWRlTGlzdChD
VEZvbnREZXNjcmlwdG9yUmVmIGZvbnREZXNjcmlwdG9yKQoreworICAgIGF1dG8gZW1wdHlBcnJh
eSA9IGFkb3B0Q0YoQ0ZBcnJheUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBudWxscHRyLCAw
LCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKSk7CisgICAgQ0ZUeXBlUmVmIGZhbGxiYWNrRGljdGlv
bmFyeUtleXNbXSA9IHsga0NURm9udENhc2NhZGVMaXN0QXR0cmlidXRlIH07CisgICAgQ0ZUeXBl
UmVmIGZhbGxiYWNrRGljdGlvbmFyeVZhbHVlc1tdID0geyBlbXB0eUFycmF5LmdldCgpIH07Cisg
ICAgYXV0byBmYWxsYmFja0RpY3Rpb25hcnkgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZShr
Q0ZBbGxvY2F0b3JEZWZhdWx0LCBmYWxsYmFja0RpY3Rpb25hcnlLZXlzLCBmYWxsYmFja0RpY3Rp
b25hcnlWYWx1ZXMsIFdURl9BUlJBWV9MRU5HVEgoZmFsbGJhY2tEaWN0aW9uYXJ5S2V5cyksICZr
Q0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxs
QmFja3MpKTsKKyAgICBhdXRvIG1vZGlmaWVkRm9udERlc2NyaXB0b3IgPSBhZG9wdENGKENURm9u
dERlc2NyaXB0b3JDcmVhdGVDb3B5V2l0aEF0dHJpYnV0ZXMoZm9udERlc2NyaXB0b3IsIGZhbGxi
YWNrRGljdGlvbmFyeS5nZXQoKSkpOworICAgIHJldHVybiBtb2RpZmllZEZvbnREZXNjcmlwdG9y
OworfQorCitWZWN0b3I8UmV0YWluUHRyPENURm9udERlc2NyaXB0b3JSZWY+PiBTeXN0ZW1Gb250
RGF0YWJhc2VDb3JlVGV4dDo6Y29tcHV0ZUNhc2NhZGVMaXN0KENURm9udFJlZiBmb250LCBDRlN0
cmluZ1JlZiBsb2NhbGUpCit7CisgICAgQ0ZUeXBlUmVmIGFycmF5VmFsdWVzW10gPSB7IGxvY2Fs
ZSB9OworICAgIGF1dG8gbG9jYWxlQXJyYXkgPSBhZG9wdENGKENGQXJyYXlDcmVhdGUoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgYXJyYXlWYWx1ZXMsIFdURl9BUlJBWV9MRU5HVEgoYXJyYXlWYWx1ZXMp
LCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKSk7CisgICAgYXV0byBjYXNjYWRlTGlzdCA9IGFkb3B0
Q0YoQ1RGb250Q29weURlZmF1bHRDYXNjYWRlTGlzdEZvckxhbmd1YWdlcyhmb250LCBsb2NhbGVB
cnJheS5nZXQoKSkpOworICAgIFZlY3RvcjxSZXRhaW5QdHI8Q1RGb250RGVzY3JpcHRvclJlZj4+
IHJlc3VsdDsKKyAgICAvLyBXZWJLaXQgaGFuZGxlcyB0aGUgY2FzY2FkZSBsaXN0LCBhbmQgV2Vi
S2l0IDIncyBJUEMgY29kZSBkb2Vzbid0IGtub3cgaG93IHRvIHNlcmlhbGl6ZSBDb3JlIFRleHQn
cyBjYXNjYWRlIGxpc3QuCisgICAgcmVzdWx0LmFwcGVuZChyZW1vdmVDYXNjYWRlTGlzdChhZG9w
dENGKENURm9udENvcHlGb250RGVzY3JpcHRvcihmb250KSkuZ2V0KCkpKTsKKyAgICBpZiAoY2Fz
Y2FkZUxpc3QpIHsKKyAgICAgICAgQ0ZJbmRleCBhcnJheUxlbmd0aCA9IENGQXJyYXlHZXRDb3Vu
dChjYXNjYWRlTGlzdC5nZXQoKSk7CisgICAgICAgIGZvciAoQ0ZJbmRleCBpID0gMDsgaSA8IGFy
cmF5TGVuZ3RoOyArK2kpCisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHN0YXRpY19jYXN0PENU
Rm9udERlc2NyaXB0b3JSZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgoY2FzY2FkZUxpc3QuZ2V0
KCksIGkpKSk7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK1N5c3RlbUZvbnREYXRh
YmFzZUNvcmVUZXh0OjpDYXNjYWRlTGlzdFBhcmFtZXRlcnMgU3lzdGVtRm9udERhdGFiYXNlQ29y
ZVRleHQ6OnN5c3RlbUZvbnRQYXJhbWV0ZXJzKGNvbnN0IEZvbnRDYXNjYWRlRGVzY3JpcHRpb24m
IGRlc2NyaXB0aW9uLCBjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlseU5hbWUsIENsaWVudFVzZSBj
bGllbnRVc2UsIEFsbG93VXNlckluc3RhbGxlZEZvbnRzIGFsbG93VXNlckluc3RhbGxlZEZvbnRz
KQoreworICAgIENhc2NhZGVMaXN0UGFyYW1ldGVycyByZXN1bHQ7CisgICAgcmVzdWx0LmxvY2Fs
ZSA9IGRlc2NyaXB0aW9uLmxvY2FsZSgpOworICAgIHJlc3VsdC5zaXplID0gZGVzY3JpcHRpb24u
Y29tcHV0ZWRTaXplKCk7CisgICAgcmVzdWx0Lml0YWxpYyA9IGlzSXRhbGljKGRlc2NyaXB0aW9u
Lml0YWxpYygpKTsKKworICAgIGF1dG8gd2VpZ2h0ID0gZGVzY3JpcHRpb24ud2VpZ2h0KCk7Cisg
ICAgaWYgKEZvbnRDYWNoZTo6c2luZ2xldG9uKCkuc2hvdWxkTW9ja0JvbGRTeXN0ZW1Gb250Rm9y
QWNjZXNzaWJpbGl0eSgpKQorICAgICAgICB3ZWlnaHQgPSB3ZWlnaHQgKyBGb250U2VsZWN0aW9u
VmFsdWUoMjAwKTsKKworICAgIGlmICh3ZWlnaHQgPCBGb250U2VsZWN0aW9uVmFsdWUoMTUwKSkK
KyAgICAgICAgcmVzdWx0LndlaWdodCA9IGtDVEZvbnRXZWlnaHRVbHRyYUxpZ2h0OworICAgIGVs
c2UgaWYgKHdlaWdodCA8IEZvbnRTZWxlY3Rpb25WYWx1ZSgyNTApKQorICAgICAgICByZXN1bHQu
d2VpZ2h0ID0ga0NURm9udFdlaWdodFRoaW47CisgICAgZWxzZSBpZiAod2VpZ2h0IDwgRm9udFNl
bGVjdGlvblZhbHVlKDM1MCkpCisgICAgICAgIHJlc3VsdC53ZWlnaHQgPSBrQ1RGb250V2VpZ2h0
TGlnaHQ7CisgICAgZWxzZSBpZiAod2VpZ2h0IDwgRm9udFNlbGVjdGlvblZhbHVlKDQ1MCkpCisg
ICAgICAgIHJlc3VsdC53ZWlnaHQgPSBrQ1RGb250V2VpZ2h0UmVndWxhcjsKKyAgICBlbHNlIGlm
ICh3ZWlnaHQgPCBGb250U2VsZWN0aW9uVmFsdWUoNTUwKSkKKyAgICAgICAgcmVzdWx0LndlaWdo
dCA9IGtDVEZvbnRXZWlnaHRNZWRpdW07CisgICAgZWxzZSBpZiAod2VpZ2h0IDwgRm9udFNlbGVj
dGlvblZhbHVlKDY1MCkpCisgICAgICAgIHJlc3VsdC53ZWlnaHQgPSBrQ1RGb250V2VpZ2h0U2Vt
aWJvbGQ7CisgICAgZWxzZSBpZiAod2VpZ2h0IDwgRm9udFNlbGVjdGlvblZhbHVlKDc1MCkpCisg
ICAgICAgIHJlc3VsdC53ZWlnaHQgPSBrQ1RGb250V2VpZ2h0Qm9sZDsKKyAgICBlbHNlIGlmICh3
ZWlnaHQgPCBGb250U2VsZWN0aW9uVmFsdWUoODUwKSkKKyAgICAgICAgcmVzdWx0LndlaWdodCA9
IGtDVEZvbnRXZWlnaHRIZWF2eTsKKyAgICBlbHNlCisgICAgICAgIHJlc3VsdC53ZWlnaHQgPSBr
Q1RGb250V2VpZ2h0QmxhY2s7CisKKyAgICBpZiAoY2xpZW50VXNlID09IENsaWVudFVzZTo6Rm9y
U3lzdGVtVUkpIHsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4g
c3lzdGVtVUkgPSBBdG9taWNTdHJpbmcoInN5c3RlbS11aSIsIEF0b21pY1N0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpOworICAgICAgICByZXN1bHQuZm9udE5hbWUgPSBzeXN0ZW1VSS5nZXQo
KTsKKyAgICB9IGVsc2UgeworICAgICAgICBBU1NFUlQoY2xpZW50VXNlID09IENsaWVudFVzZTo6
Rm9yVGV4dFN0eWxlKTsKKyAgICAgICAgcmVzdWx0LmZvbnROYW1lID0gZmFtaWx5TmFtZTsKKyAg
ICB9CisKKyAgICByZXN1bHQuYWxsb3dVc2VySW5zdGFsbGVkRm9udHMgPSBhbGxvd1VzZXJJbnN0
YWxsZWRGb250czsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK1ZlY3RvcjxSZXRhaW5QdHI8
Q1RGb250RGVzY3JpcHRvclJlZj4+IFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0OjpjYXNjYWRl
TGlzdChjb25zdCBGb250Q2FzY2FkZURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwgY29uc3QgQXRv
bWljU3RyaW5nJiBjc3NGYW1pbHksIENsaWVudFVzZSBjbGllbnRVc2UsIEFsbG93VXNlckluc3Rh
bGxlZEZvbnRzIGFsbG93VXNlckluc3RhbGxlZEZvbnRzKQoreworICAgIHJldHVybiBjYXNjYWRl
TGlzdChzeXN0ZW1Gb250UGFyYW1ldGVycyhkZXNjcmlwdGlvbiwgY3NzRmFtaWx5LCBjbGllbnRV
c2UsIGFsbG93VXNlckluc3RhbGxlZEZvbnRzKSwgY2xpZW50VXNlKTsKK30KKworfQorCisjZW5k
aWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1N5c3RlbUZv
bnREYXRhYmFzZUNvcmVUZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQuaAkobm9uZXhpc3Rl
bnQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9TeXN0ZW1Gb250
RGF0YWJhc2VDb3JlVGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTIxIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJGb250RGVzY3JpcHRpb24uaCIKKyNp
bmNsdWRlIDxwYWwvc3BpL2NvY29hL0NvcmVUZXh0U1BJLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0cy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0
b21pY1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZ0hhc2guaD4KKwor
I2lmIFVTRV9QTEFURk9STV9TWVNURU1fRkFMTEJBQ0tfTElTVAorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0IHsKK3B1YmxpYzoKKyAgICBz
dHJ1Y3QgQ2FzY2FkZUxpc3RQYXJhbWV0ZXJzIHsKKyAgICAgICAgQ2FzY2FkZUxpc3RQYXJhbWV0
ZXJzKCkKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgQ2FzY2FkZUxpc3RQYXJhbWV0
ZXJzKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkKKyAgICAgICAgICAgIDogZm9udE5h
bWUoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWUpCisgICAgICAgIHsKKyAgICAgICAgfQorCisg
ICAgICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdAorICAgICAgICB7Cisg
ICAgICAgICAgICByZXR1cm4gZm9udE5hbWUuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsKKyAg
ICAgICAgfQorCisgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDYXNjYWRlTGlzdFBhcmFt
ZXRlcnMmIG90aGVyKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZm9udE5h
bWUgPT0gb3RoZXIuZm9udE5hbWUKKyAgICAgICAgICAgICAgICAmJiBsb2NhbGUgPT0gb3RoZXIu
bG9jYWxlCisgICAgICAgICAgICAgICAgJiYgd2VpZ2h0ID09IG90aGVyLndlaWdodAorICAgICAg
ICAgICAgICAgICYmIHNpemUgPT0gb3RoZXIuc2l6ZQorICAgICAgICAgICAgICAgICYmIGFsbG93
VXNlckluc3RhbGxlZEZvbnRzID09IG90aGVyLmFsbG93VXNlckluc3RhbGxlZEZvbnRzCisgICAg
ICAgICAgICAgICAgJiYgaXRhbGljID09IG90aGVyLml0YWxpYzsKKyAgICAgICAgfQorCisgICAg
ICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICBJbnRlZ2Vy
SGFzaGVyIGhhc2hlcjsKKyAgICAgICAgICAgIEFTU0VSVCghZm9udE5hbWUuaXNOdWxsKCkpOwor
ICAgICAgICAgICAgaGFzaGVyLmFkZChsb2NhbGUuZXhpc3RpbmdIYXNoKCkpOworICAgICAgICAg
ICAgaGFzaGVyLmFkZChsb2NhbGUuaXNOdWxsKCkgPyAwIDogbG9jYWxlLmV4aXN0aW5nSGFzaCgp
KTsKKyAgICAgICAgICAgIGhhc2hlci5hZGQod2VpZ2h0KTsKKyAgICAgICAgICAgIGhhc2hlci5h
ZGQoc2l6ZSk7CisgICAgICAgICAgICBoYXNoZXIuYWRkKHN0YXRpY19jYXN0PHVuc2lnbmVkPihh
bGxvd1VzZXJJbnN0YWxsZWRGb250cykpOworICAgICAgICAgICAgaGFzaGVyLmFkZChpdGFsaWMp
OworICAgICAgICAgICAgcmV0dXJuIGhhc2hlci5oYXNoKCk7CisgICAgICAgIH0KKworICAgICAg
ICBzdHJ1Y3QgQ2FzY2FkZUxpc3RQYXJhbWV0ZXJzSGFzaCA6IFdURjo6UGFpckhhc2g8QXRvbWlj
U3RyaW5nLCBmbG9hdD4geworICAgICAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3Qg
Q2FzY2FkZUxpc3RQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIHJldHVybiBwYXJhbWV0ZXJzLmhhc2goKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IENhc2NhZGVMaXN0UGFyYW1ldGVycyYgYSwg
Y29uc3QgQ2FzY2FkZUxpc3RQYXJhbWV0ZXJzJiBiKQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIHJldHVybiBhID09IGI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzdGF0aWMg
Y29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IHRydWU7CisgICAgICAg
IH07CisKKyAgICAgICAgQXRvbWljU3RyaW5nIGZvbnROYW1lOworICAgICAgICBBdG9taWNTdHJp
bmcgbG9jYWxlOworICAgICAgICBDR0Zsb2F0IHdlaWdodCB7IDAgfTsKKyAgICAgICAgZmxvYXQg
c2l6ZSB7IDAgfTsKKyAgICAgICAgQWxsb3dVc2VySW5zdGFsbGVkRm9udHMgYWxsb3dVc2VySW5z
dGFsbGVkRm9udHMgeyBBbGxvd1VzZXJJbnN0YWxsZWRGb250czo6Tm8gfTsKKyAgICAgICAgYm9v
bCBpdGFsaWMgeyBmYWxzZSB9OworICAgIH07CisKKyAgICBzdGF0aWMgU3lzdGVtRm9udERhdGFi
YXNlQ29yZVRleHQmIHNpbmdsZXRvbigpOworCisgICAgZW51bSBjbGFzcyBDbGllbnRVc2UgeyBG
b3JTeXN0ZW1VSSwgRm9yVGV4dFN0eWxlIH07CisKKyAgICBWZWN0b3I8UmV0YWluUHRyPENURm9u
dERlc2NyaXB0b3JSZWY+PiBjYXNjYWRlTGlzdChjb25zdCBGb250Q2FzY2FkZURlc2NyaXB0aW9u
JiwgY29uc3QgQXRvbWljU3RyaW5nJiBjc3NGYW1pbHksIENsaWVudFVzZSwgQWxsb3dVc2VySW5z
dGFsbGVkRm9udHMpOworICAgIHZvaWQgY2xlYXIoKTsKKworcHJpdmF0ZToKKyAgICBTeXN0ZW1G
b250RGF0YWJhc2VDb3JlVGV4dCgpOworCisgICAgVmVjdG9yPFJldGFpblB0cjxDVEZvbnREZXNj
cmlwdG9yUmVmPj4gY2FzY2FkZUxpc3QoY29uc3QgQ2FzY2FkZUxpc3RQYXJhbWV0ZXJzJiwgQ2xp
ZW50VXNlKTsKKworICAgIHN0YXRpYyBSZXRhaW5QdHI8Q1RGb250UmVmPiBhcHBseVdlaWdodEl0
YWxpY3NBbmRGYWxsYmFja0JlaGF2aW9yKENURm9udFJlZiwgQ0dGbG9hdCB3ZWlnaHQsIGJvb2wg
aXRhbGljLCBmbG9hdCBzaXplLCBBbGxvd1VzZXJJbnN0YWxsZWRGb250cyk7CisgICAgc3RhdGlj
IFJldGFpblB0cjxDVEZvbnREZXNjcmlwdG9yUmVmPiByZW1vdmVDYXNjYWRlTGlzdChDVEZvbnRE
ZXNjcmlwdG9yUmVmKTsKKyAgICBzdGF0aWMgVmVjdG9yPFJldGFpblB0cjxDVEZvbnREZXNjcmlw
dG9yUmVmPj4gY29tcHV0ZUNhc2NhZGVMaXN0KENURm9udFJlZiwgQ0ZTdHJpbmdSZWYgbG9jYWxl
KTsKKyAgICBzdGF0aWMgQ2FzY2FkZUxpc3RQYXJhbWV0ZXJzIHN5c3RlbUZvbnRQYXJhbWV0ZXJz
KGNvbnN0IEZvbnRDYXNjYWRlRGVzY3JpcHRpb24mLCBjb25zdCBBdG9taWNTdHJpbmcmIGZhbWls
eU5hbWUsIENsaWVudFVzZSwgQWxsb3dVc2VySW5zdGFsbGVkRm9udHMpOworCisgICAgSGFzaE1h
cDxDYXNjYWRlTGlzdFBhcmFtZXRlcnMsIFZlY3RvcjxSZXRhaW5QdHI8Q1RGb250RGVzY3JpcHRv
clJlZj4+LCBDYXNjYWRlTGlzdFBhcmFtZXRlcnM6OkNhc2NhZGVMaXN0UGFyYW1ldGVyc0hhc2gs
IFNpbXBsZUNsYXNzSGFzaFRyYWl0czxDYXNjYWRlTGlzdFBhcmFtZXRlcnM+PiBtX3N5c3RlbUZv
bnRDYWNoZTsKK307CisKK30KKworI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>351796</attachid>
            <date>2018-10-08 11:30:44 -0700</date>
            <delta_ts>2018-10-08 12:53:28 -0700</delta_ts>
            <desc>patch</desc>
            <filename>systemfontdatabase-file-7.patch</filename>
            <type>text/plain</type>
            <size>40619</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzNjkyNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDYwIEBACi0yMDE4LTEwLTA4ICBBbmR5IEVz
dGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKzIwMTgtMTAtMDggIEFudHRpIEtvaXZpc3RvICA8YW50
dGlAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgU3lzdGVtRm9udERhdGFiYXNlIHRvIGEgZmls
ZSBvZiBpdHMgb3duCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xOTAzNDcKKworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBEdW1lei4KKworICAgICAg
ICBBbHNvIHJlbmFtZSBpdCB0byBTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dCBhcyBpdCBpcyBD
b3JlVGV4dCBzcGVjaWZpYy4KKworICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAg
ICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBhZ2UvTWVt
b3J5UmVsZWFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZWxlYXNlTm9uY3JpdGljYWxNZW1v
cnkpOgorICAgICAgICAqIHBhZ2UvY29jb2EvTWVtb3J5UmVsZWFzZUNvY29hLm1tOgorCisgICAg
ICAgIFJlbGVhc2UgU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQgZGlyZWN0bHkgZnJvbSBwbGF0
Zm9ybSBzcGVjaWZpYyBjbGVhbnVwIGNvZGUuCisKKyAgICAgICAgKFdlYkNvcmU6OnBsYXRmb3Jt
UmVsZWFzZU1lbW9yeSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udERl
c2NyaXB0aW9uQ29jb2EuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udERlc2NyaXB0aW9uOjpp
bnZhbGlkYXRlQ2FjaGVzKToKKyAgICAgICAgKFdlYkNvcmU6OnN5c3RlbUZvbnRDYXNjYWRlTGlz
dCk6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZURlc2NyaXB0aW9uOjplZmZlY3RpdmVG
YW1pbHlDb3VudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZURlc2NyaXB0
aW9uOjplZmZlY3RpdmVGYW1pbHlBdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTeXN0ZW1G
b250RGF0YWJhc2U6OkNvcmVUZXh0Q2FzY2FkZUxpc3RQYXJhbWV0ZXJzOjpDb3JlVGV4dENhc2Nh
ZGVMaXN0UGFyYW1ldGVycyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTeXN0ZW1Gb250
RGF0YWJhc2U6OkNvcmVUZXh0Q2FzY2FkZUxpc3RQYXJhbWV0ZXJzOjppc0hhc2hUYWJsZURlbGV0
ZWRWYWx1ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTeXN0ZW1Gb250RGF0
YWJhc2U6OkNvcmVUZXh0Q2FzY2FkZUxpc3RQYXJhbWV0ZXJzOjpvcGVyYXRvcj09IGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlN5c3RlbUZvbnREYXRhYmFzZTo6Q29yZVRleHRD
YXNjYWRlTGlzdFBhcmFtZXRlcnM6Omhhc2ggY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6U3lzdGVtRm9udERhdGFiYXNlOjpDb3JlVGV4dENhc2NhZGVMaXN0UGFyYW1ldGVyczo6
Q29yZVRleHRDYXNjYWRlTGlzdFBhcmFtZXRlcnNIYXNoOjpoYXNoKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlN5c3RlbUZvbnREYXRhYmFzZTo6Q29yZVRleHRDYXNjYWRlTGlzdFBhcmFt
ZXRlcnM6OkNvcmVUZXh0Q2FzY2FkZUxpc3RQYXJhbWV0ZXJzSGFzaDo6ZXF1YWwpOiBEZWxldGVk
LgorICAgICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlN5c3RlbUZvbnREYXRh
YmFzZTo6c2luZ2xldG9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlN5c3RlbUZvbnRE
YXRhYmFzZTo6c3lzdGVtRm9udENhc2NhZGVMaXN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlN5c3RlbUZvbnREYXRhYmFzZTo6Y2xlYXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6U3lzdGVtRm9udERhdGFiYXNlOjpTeXN0ZW1Gb250RGF0YWJhc2UpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6U3lzdGVtRm9udERhdGFiYXNlOjphcHBseVdlaWdodEl0YWxpY3NBbmRG
YWxsYmFja0JlaGF2aW9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlN5c3RlbUZvbnRE
YXRhYmFzZTo6cmVtb3ZlQ2FzY2FkZUxpc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
U3lzdGVtRm9udERhdGFiYXNlOjpjb21wdXRlQ2FzY2FkZUxpc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6c3lzdGVtRm9udFBhcmFtZXRlcnMpOiBEZWxldGVkLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL1N5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0LmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dDo6c2luZ2xl
dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0OjpTeXN0
ZW1Gb250RGF0YWJhc2VDb3JlVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpTeXN0ZW1Gb250RGF0
YWJhc2VDb3JlVGV4dDo6c3lzdGVtRm9udENhc2NhZGVMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0OjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpT
eXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dDo6YXBwbHlXZWlnaHRJdGFsaWNzQW5kRmFsbGJhY2tC
ZWhhdmlvcik6CisgICAgICAgIChXZWJDb3JlOjpTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dDo6
cmVtb3ZlQ2FzY2FkZUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3lzdGVtRm9udERhdGFiYXNl
Q29yZVRleHQ6OmNvbXB1dGVDYXNjYWRlTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpTeXN0ZW1G
b250RGF0YWJhc2VDb3JlVGV4dDo6c3lzdGVtRm9udFBhcmFtZXRlcnMpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL1N5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0Lmg6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6U3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQ6OkNhc2NhZGVM
aXN0UGFyYW1ldGVyczo6Q2FzY2FkZUxpc3RQYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6
OlN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0OjpDYXNjYWRlTGlzdFBhcmFtZXRlcnM6OmlzSGFz
aFRhYmxlRGVsZXRlZFZhbHVlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN5c3RlbUZvbnRE
YXRhYmFzZUNvcmVUZXh0OjpDYXNjYWRlTGlzdFBhcmFtZXRlcnM6Om9wZXJhdG9yPT0gY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQ6OkNhc2NhZGVM
aXN0UGFyYW1ldGVyczo6aGFzaCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTeXN0ZW1Gb250
RGF0YWJhc2VDb3JlVGV4dDo6Q2FzY2FkZUxpc3RQYXJhbWV0ZXJzOjpDYXNjYWRlTGlzdFBhcmFt
ZXRlcnNIYXNoOjpoYXNoKToKKyAgICAgICAgKFdlYkNvcmU6OlN5c3RlbUZvbnREYXRhYmFzZUNv
cmVUZXh0OjpDYXNjYWRlTGlzdFBhcmFtZXRlcnM6OkNhc2NhZGVMaXN0UGFyYW1ldGVyc0hhc2g6
OmVxdWFsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVNZWRp
YVNvdXJjZUNlbnRlck1hYy5jcHA6CisKKzAxOC0xMC0wOCAgQW5keSBFc3RlcyAgPGFlc3Rlc0Bh
cHBsZS5jb20+CiAKICAgICAgICAgW1BheW1lbnQgUmVxdWVzdF0gUmVxdWVzdHMgc2hvdWxkIGJl
IGFib3J0ZWQgYWZ0ZXIgZGV0YWlscyBzZXR0bGUgd2hlbiB0aGUgdXNlciBjYW5jZWxzCiAgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTAzMzMKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvU291cmNlc0NvY29hLnR4dAkocmV2aXNpb24gMjM2OTE0KQorKysgU291cmNlL1dlYkNv
cmUvU291cmNlc0NvY29hLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMzA2LDYgKzMwNiw3IEBAIHBs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL0hFVkNVdGlsaXRpZXNDb2MKIHBsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL0lPU3VyZmFjZS5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlUG9v
bENvY29hLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9NZWRpYUVuZ2luZUNvbmZpZ3VyYXRp
b25GYWN0b3J5Q29jb2EuY3BwCitwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9TeXN0ZW1Gb250RGF0
YWJhc2VDb3JlVGV4dC5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkFjdGlvbkRpc2Fi
bGluZ0NBTGF5ZXJEZWxlZ2F0ZS5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29yZUNB
TGF5ZXJFeHRyYXMubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkNvcmVEZWNvbXByZXNz
aW9uU2Vzc2lvbi5tbQpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjM2OTE0KQorKysgU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00ODEx
LDYgKzQ4MTEsNyBAQAogCQlFNERFQUExODE3QTkzREMzMDAwRTA0MzAgLyogU3R5bGVUcmVlUmVz
b2x2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0
REVBQTE2MTdBOTNEQzMwMDBFMDQzMCAvKiBTdHlsZVRyZWVSZXNvbHZlci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUU0RTI0MzgzMURBQjk1M0Uw
MEMyNkU0QiAvKiBtZXRlckVsZW1lbnRTaGFkb3cuY3NzIGluIFJlc291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEUyNDM4MjFEQUI5NTNFMDBDMjZFNEIgLyogbWV0
ZXJFbGVtZW50U2hhZG93LmNzcyAqLzsgfTsKIAkJRTRFMzlBRkIxMzMwRUZBODAwM0FCMjc0IC8q
IExlZ2FjeVRpbGVMYXllclBvb2wuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEU0RTM5QUZBMTMzMEVGQTgwMDNBQjI3NCAvKiBMZWdhY3lUaWxlTGF5ZXJQ
b29sLmggKi87IH07CisJCUU0RThCNEVDMjE2Qjc5RTUwMEI4ODM0RCAvKiBTeXN0ZW1Gb250RGF0
YWJhc2VDb3JlVGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTRFOEI0RUEyMTZCNzlFNTAwQjg4MzREIC8qIFN5c3RlbUZvbnREYXRhYmFzZUNvcmVU
ZXh0LmggKi87IH07CiAJCUU0RThCNEY1MjE2Qjk1NjUwMEI4ODM0RCAvKiBGb250Q2FzY2FkZURl
c2NyaXB0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFNEU4QjRGMjIxNkI4QjYwMDBCODgzNEQgLyogRm9udENhc2NhZGVEZXNjcmlwdGlvbi5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUU0RTlCMTE5
MTgxMDkxNkYwMDNBQ0NERiAvKiBTaW1wbGVMaW5lTGF5b3V0UmVzb2x2ZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0RTlCMTE4MTgxMDkxNkYwMDNB
Q0NERiAvKiBTaW1wbGVMaW5lTGF5b3V0UmVzb2x2ZXIuaCAqLzsgfTsKIAkJRTRFOUIxMUQxODE0
NTY5QzAwM0FDQ0RGIC8qIFNpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0RTlCMTFDMTgxNDU2OUMwMDNBQ0NE
RiAvKiBTaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmggKi87IH07CkBAIC0xNDU0OCw2ICsxNDU0
OSw4IEBACiAJCUU0RTI0MzgyMURBQjk1M0UwMEMyNkU0QiAvKiBtZXRlckVsZW1lbnRTaGFkb3cu
Y3NzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dC5jc3M7IHBhdGggPSBtZXRlckVsZW1lbnRTaGFkb3cuY3NzOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNEUzOUFGQTEzMzBFRkE4MDAzQUIyNzQgLyog
TGVnYWN5VGlsZUxheWVyUG9vbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBM
ZWdhY3lUaWxlTGF5ZXJQb29sLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0RTM5
QUZDMTMzMEVGQzUwMDNBQjI3NCAvKiBMZWdhY3lUaWxlTGF5ZXJQb29sLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTGVnYWN5VGlsZUxheWVyUG9vbC5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTRFOEI0RUEyMTZCNzlFNTAwQjg4MzREIC8qIFN5
c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUU0RThCNEVEMjE2Qjc5RjQwMEI4ODM0RCAvKiBTeXN0ZW1Gb250RGF0YWJhc2VDb3Jl
VGV4dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTeXN0ZW1Gb250
RGF0YWJhc2VDb3JlVGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0RThC
NEYwMjE2QjhCNUYwMEI4ODM0RCAvKiBGb250Q2FzY2FkZURlc2NyaXB0aW9uLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvbnRDYXNjYWRlRGVzY3JpcHRpb24uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNEU4QjRGMjIxNkI4QjYwMDBCODgzNEQg
LyogRm9udENhc2NhZGVEZXNjcmlwdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBGb250Q2FzY2FkZURlc2NyaXB0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUU0RTlCMTE4MTgxMDkxNkYwMDNBQ0NERiAvKiBTaW1wbGVMaW5lTGF5b3V0UmVzb2x2ZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2ltcGxlTGluZUxheW91dFJlc29s
dmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNDAyNSw2ICsyNDAyOCw4IEBA
CiAJCQkJQUQ5RkY2RTAxOTA4MzkxRDAwM0I2MUUwIC8qIElPU3VyZmFjZVBvb2xDb2NvYS5tbSAq
LywKIAkJCQlDREM0OEFDODIxNDlDRjJBMDAyNEZENTkgLyogTWVkaWFFbmdpbmVDb25maWd1cmF0
aW9uRmFjdG9yeUNvY29hLmNwcCAqLywKIAkJCQlDREM0OEFDNzIxNDlDRjJBMDAyNEZENTkgLyog
TWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeUNvY29hLmggKi8sCisJCQkJRTRFOEI0RUQy
MTZCNzlGNDAwQjg4MzREIC8qIFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0LmNwcCAqLywKKwkJ
CQlFNEU4QjRFQTIxNkI3OUU1MDBCODgzNEQgLyogU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQu
aCAqLywKIAkJCQk1MjY3MjRGMjFDQjJGREY2MDA3NTk3NEQgLyogVGV4dFRyYWNrUmVwcmVzZW50
YXRpb25Db2NvYS5oICovLAogCQkJCTUyNjcyNEYxMUNCMkZERjYwMDc1OTc0RCAvKiBUZXh0VHJh
Y2tSZXByZXNlbnRhdGlvbkNvY29hLm1tICovLAogCQkJCTJEM0VGNDQ0MTkxNzkxNUMwMDAzNDE4
NCAvKiBXZWJBY3Rpb25EaXNhYmxpbmdDQUxheWVyRGVsZWdhdGUuaCAqLywKQEAgLTI3NDkzLDYg
KzI3NDk4LDcgQEAKIAkJCQk1NzMwM0JCQjIwMDZDNkVFMDAzNTU5NjUgLyogQ0JPUkJpbmFyeS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNTczMDNCQzEyMDA2RTAwQzAwMzU1OTY1IC8qIENCT1JSZWFk
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3MzAzQkI5MjAwNkM2RUUwMDM1NTk2NSAvKiBDQk9S
VmFsdWUuaCBpbiBIZWFkZXJzICovLAorCQkJCUU0RThCNEVDMjE2Qjc5RTUwMEI4ODM0RCAvKiBT
eXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTczMDNCQkEy
MDA2QzZFRTAwMzU1OTY1IC8qIENCT1JXcml0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1NTBC
NjlFMDk5REYwMjcwMDkwRDc4MSAvKiBDREFUQVNlY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJ
CUNERjRCNzE2MUUwMEI3RTUwMEUyMzVBMiAvKiBDRE0uaCBpbiBIZWFkZXJzICovLApJbmRleDog
U291cmNlL1dlYkNvcmUvcGFnZS9NZW1vcnlSZWxlYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL01lbW9yeVJlbGVhc2UuY3BwCShyZXZpc2lvbiAyMzY5MTQpCisrKyBT
b3VyY2UvV2ViQ29yZS9wYWdlL01lbW9yeVJlbGVhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02
Myw3ICs2Myw2IEBAIHN0YXRpYyB2b2lkIHJlbGVhc2VOb25jcml0aWNhbE1lbW9yeSgpCiAgICAg
UmVuZGVyVGhlbWU6OnNpbmdsZXRvbigpLnB1cmdlQ2FjaGVzKCk7CiAKICAgICBGb250Q2FjaGU6
OnNpbmdsZXRvbigpLnB1cmdlSW5hY3RpdmVGb250RGF0YSgpOwotICAgIEZvbnREZXNjcmlwdGlv
bjo6aW52YWxpZGF0ZUNhY2hlcygpOwogCiAgICAgY2xlYXJXaWR0aENhY2hlcygpOwogICAgIFRl
eHRQYWludGVyOjpjbGVhckdseXBoRGlzcGxheUxpc3RzKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wYWdlL2NvY29hL01lbW9yeVJlbGVhc2VDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wYWdlL2NvY29hL01lbW9yeVJlbGVhc2VDb2NvYS5tbQkocmV2aXNpb24gMjM2OTE0
KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9NZW1vcnlSZWxlYXNlQ29jb2EubW0JKHdv
cmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpbXBvcnQgIkdDQ29udHJvbGxlci5oIgog
I2ltcG9ydCAiSU9TdXJmYWNlUG9vbC5oIgogI2ltcG9ydCAiTGF5ZXJQb29sLmgiCisjaW1wb3J0
ICJTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dC5oIgogI2ltcG9ydCA8bm90aWZ5Lmg+CiAjaW1w
b3J0IDxwYWwvc3BpL2lvcy9HcmFwaGljc1NlcnZpY2VzU1BJLmg+CiAKQEAgLTQyLDYgKzQzLDEw
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBwbGF0Zm9ybVJlbGVhc2VNZW1vcnkoQ3Jp
dGljYWwpCiB7CisjaWYgVVNFX1BMQVRGT1JNX1NZU1RFTV9GQUxMQkFDS19MSVNUCisgICAgU3lz
dGVtRm9udERhdGFiYXNlQ29yZVRleHQ6OnNpbmdsZXRvbigpLmNsZWFyKCk7CisjZW5kaWYKKwog
I2lmIFBMQVRGT1JNKElPUykgJiYgIVBMQVRGT1JNKElPU19TSU1VTEFUT1IpICYmICFQTEFURk9S
TShJT1NNQUMpCiAgICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIGNhbGwgdG8gR1NGb250SW5pdGlh
bGl6ZSgpIG9uY2UgPHJkYXI6Ly9wcm9ibGVtLzMyODg2NzE1PiBpcyBmaXhlZC4KICAgICBHU0Zv
bnRJbml0aWFsaXplKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250RGVzY3JpcHRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnREZXNjcmlwdGlvbi5jcHAJKHJldmlzaW9uIDIzNjkxNCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnREZXNjcmlwdGlvbi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTcxLDEwICs3MSw0IEBAIHZvaWQgRm9udERlc2NyaXB0aW9uOjpzZXRMb2NhbGUo
Y29uc3QgQXQKICAgICBtX3NjcmlwdCA9IGxvY2FsZVRvU2NyaXB0Q29kZUZvckZvbnRTZWxlY3Rp
b24obV9sb2NhbGUpOwogfQogCi0jaWYgIVVTRV9QTEFURk9STV9TWVNURU1fRkFMTEJBQ0tfTElT
VAotdm9pZCBGb250RGVzY3JpcHRpb246OmludmFsaWRhdGVDYWNoZXMoKQotewotfQotI2VuZGlm
Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnREZXNjcmlwdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnREZXNjcmlwdGlvbi5oCShyZXZpc2lvbiAyMzY5MTQpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250RGVzY3JpcHRpb24uaAkod29y
a2luZyBjb3B5KQpAQCAtMTMzLDggKzEzMyw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEZvbnRT
dHlsZUF4aXMoRm9udFN0eWxlQXhpcyBheGlzKSB7IG1fZm9udFN0eWxlQXhpcyA9IGF4aXMgPT0g
Rm9udFN0eWxlQXhpczo6aXRhbDsgfQogICAgIHZvaWQgc2V0U2hvdWxkQWxsb3dVc2VySW5zdGFs
bGVkRm9udHMoQWxsb3dVc2VySW5zdGFsbGVkRm9udHMgc2hvdWxkQWxsb3dVc2VySW5zdGFsbGVk
Rm9udHMpIHsgbV9zaG91bGRBbGxvd1VzZXJJbnN0YWxsZWRGb250cyA9IHN0YXRpY19jYXN0PHVu
c2lnbmVkPihzaG91bGRBbGxvd1VzZXJJbnN0YWxsZWRGb250cyk7IH0KIAotICAgIHN0YXRpYyB2
b2lkIGludmFsaWRhdGVDYWNoZXMoKTsKLQogcHJpdmF0ZToKICAgICAvLyBGSVhNRTogSW52ZXN0
aWdhdGUgbW92aW5nIHRoZXNlIGludG8gdGhlaXIgb3duIG9iamVjdCBvbiB0aGUgaGVhcCAodG8g
c2F2ZSBtZW1vcnkpLgogICAgIEZvbnRGZWF0dXJlU2V0dGluZ3MgbV9mZWF0dXJlU2V0dGluZ3M7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVD
b3JlVGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwCShyZXZpc2lvbiAyMzY5MTQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJGb250Q2FjaGUuaCIK
IAogI2luY2x1ZGUgIkZvbnQuaCIKKyNpbmNsdWRlICJTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4
dC5oIgogI2luY2x1ZGUgPHBhbC9zcGkvY29jb2EvQ29yZVRleHRTUEkuaD4KIAogI2luY2x1ZGUg
PENvcmVUZXh0L1NGTlRMYXlvdXRUeXBlcy5oPgpAQCAtMTE4Niw3ICsxMTg3LDkgQEAgc3RhdGlj
IHZvaWQgaW52YWxpZGF0ZUZvbnRDYWNoZSgpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBGb250RGVzY3JpcHRpb246OmludmFsaWRhdGVDYWNoZXMoKTsKKyNpZiBVU0VfUExBVEZPUk1f
U1lTVEVNX0ZBTExCQUNLX0xJU1QKKyAgICBTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dDo6c2lu
Z2xldG9uKCkuY2xlYXIoKTsKKyNlbmRpZgogCiAgICAgRm9udERhdGFiYXNlOjpzaW5nbGV0b25B
bGxvd2luZ1VzZXJJbnN0YWxsZWRGb250cygpLmNsZWFyKCk7CiAgICAgRm9udERhdGFiYXNlOjpz
aW5nbGV0b25EaXNhbGxvd2luZ1VzZXJJbnN0YWxsZWRGb250cygpLmNsZWFyKCk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RGVzY3JpcHRpb25Db2Nv
YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvRm9udERlc2NyaXB0aW9uQ29jb2EuY3BwCShyZXZpc2lvbiAyMzY5MTQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RGVzY3JpcHRpb25Db2NvYS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI2LDE3NSArMjYsMTIgQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJGb250RGVzY3JpcHRpb24uaCIKIAotI2luY2x1ZGUgIkZvbnRDYWNoZS5oIgot
I2luY2x1ZGUgIkZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHQuaCIKLSNpbmNsdWRlIDxw
YWwvc3BpL2NvY29hL0NvcmVUZXh0U1BJLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNp
bmNsdWRlIDx3dGYvSGFzaFRyYWl0cy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmlu
Zy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZ0hhc2guaD4KLQotI2lmIFBMQVRG
T1JNKElPUykKLSNpbmNsdWRlICJSZW5kZXJUaGVtZUlPUy5oIgotI2VuZGlmCisjaW5jbHVkZSAi
U3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQuaCIKIAogI2lmIFVTRV9QTEFURk9STV9TWVNURU1f
RkFMTEJBQ0tfTElTVAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFN5c3RlbUZvbnRE
YXRhYmFzZSB7Ci1wdWJsaWM6Ci0gICAgc3RydWN0IENvcmVUZXh0Q2FzY2FkZUxpc3RQYXJhbWV0
ZXJzIHsKLSAgICAgICAgQ29yZVRleHRDYXNjYWRlTGlzdFBhcmFtZXRlcnMoKQotICAgICAgICB7
Ci0gICAgICAgIH0KLQotICAgICAgICBDb3JlVGV4dENhc2NhZGVMaXN0UGFyYW1ldGVycyhXVEY6
Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpCi0gICAgICAgICAgICA6IGZvbnROYW1lKFdURjo6
SGFzaFRhYmxlRGVsZXRlZFZhbHVlKQotICAgICAgICB7Ci0gICAgICAgIH0KLQotICAgICAgICBi
b29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAg
ICAgcmV0dXJuIGZvbnROYW1lLmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7Ci0gICAgICAgIH0K
LQotICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ29yZVRleHRDYXNjYWRlTGlzdFBhcmFt
ZXRlcnMmIG90aGVyKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZm9udE5h
bWUgPT0gb3RoZXIuZm9udE5hbWUKLSAgICAgICAgICAgICAgICAmJiBsb2NhbGUgPT0gb3RoZXIu
bG9jYWxlCi0gICAgICAgICAgICAgICAgJiYgd2VpZ2h0ID09IG90aGVyLndlaWdodAotICAgICAg
ICAgICAgICAgICYmIHNpemUgPT0gb3RoZXIuc2l6ZQotICAgICAgICAgICAgICAgICYmIGFsbG93
VXNlckluc3RhbGxlZEZvbnRzID09IG90aGVyLmFsbG93VXNlckluc3RhbGxlZEZvbnRzCi0gICAg
ICAgICAgICAgICAgJiYgaXRhbGljID09IG90aGVyLml0YWxpYzsKLSAgICAgICAgfQotCi0gICAg
ICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICBJbnRlZ2Vy
SGFzaGVyIGhhc2hlcjsKLSAgICAgICAgICAgIEFTU0VSVCghZm9udE5hbWUuaXNOdWxsKCkpOwot
ICAgICAgICAgICAgaGFzaGVyLmFkZChsb2NhbGUuZXhpc3RpbmdIYXNoKCkpOwotICAgICAgICAg
ICAgaGFzaGVyLmFkZChsb2NhbGUuaXNOdWxsKCkgPyAwIDogbG9jYWxlLmV4aXN0aW5nSGFzaCgp
KTsKLSAgICAgICAgICAgIGhhc2hlci5hZGQod2VpZ2h0KTsKLSAgICAgICAgICAgIGhhc2hlci5h
ZGQoc2l6ZSk7Ci0gICAgICAgICAgICBoYXNoZXIuYWRkKHN0YXRpY19jYXN0PHVuc2lnbmVkPihh
bGxvd1VzZXJJbnN0YWxsZWRGb250cykpOwotICAgICAgICAgICAgaGFzaGVyLmFkZChpdGFsaWMp
OwotICAgICAgICAgICAgcmV0dXJuIGhhc2hlci5oYXNoKCk7Ci0gICAgICAgIH0KLQotICAgICAg
ICBzdHJ1Y3QgQ29yZVRleHRDYXNjYWRlTGlzdFBhcmFtZXRlcnNIYXNoIDogV1RGOjpQYWlySGFz
aDxBdG9taWNTdHJpbmcsIGZsb2F0PiB7Ci0gICAgICAgICAgICBzdGF0aWMgdW5zaWduZWQgaGFz
aChjb25zdCBDb3JlVGV4dENhc2NhZGVMaXN0UGFyYW1ldGVycyYgcGFyYW1ldGVycykKLSAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gcGFyYW1ldGVycy5oYXNoKCk7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBDb3JlVGV4dENh
c2NhZGVMaXN0UGFyYW1ldGVycyYgYSwgY29uc3QgQ29yZVRleHRDYXNjYWRlTGlzdFBhcmFtZXRl
cnMmIGIpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGEgPT0gYjsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBhcmVU
b0VtcHR5T3JEZWxldGVkID0gdHJ1ZTsKLSAgICAgICAgfTsKLQotICAgICAgICBBdG9taWNTdHJp
bmcgZm9udE5hbWU7Ci0gICAgICAgIEF0b21pY1N0cmluZyBsb2NhbGU7Ci0gICAgICAgIENHRmxv
YXQgd2VpZ2h0IHsgMCB9OwotICAgICAgICBmbG9hdCBzaXplIHsgMCB9OwotICAgICAgICBBbGxv
d1VzZXJJbnN0YWxsZWRGb250cyBhbGxvd1VzZXJJbnN0YWxsZWRGb250cyB7IEFsbG93VXNlcklu
c3RhbGxlZEZvbnRzOjpObyB9OwotICAgICAgICBib29sIGl0YWxpYyB7IGZhbHNlIH07Ci0gICAg
fTsKLQotICAgIHN0YXRpYyBTeXN0ZW1Gb250RGF0YWJhc2UmIHNpbmdsZXRvbigpCi0gICAgewot
ICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3lzdGVtRm9udERhdGFiYXNlPiBkYXRhYmFz
ZSA9IFN5c3RlbUZvbnREYXRhYmFzZSgpOwotICAgICAgICByZXR1cm4gZGF0YWJhc2UuZ2V0KCk7
Ci0gICAgfQotCi0gICAgZW51bSBjbGFzcyBDbGllbnRVc2UgeyBGb3JTeXN0ZW1VSSwgRm9yVGV4
dFN0eWxlIH07Ci0KLSAgICBWZWN0b3I8UmV0YWluUHRyPENURm9udERlc2NyaXB0b3JSZWY+PiBz
eXN0ZW1Gb250Q2FzY2FkZUxpc3QoY29uc3QgQ29yZVRleHRDYXNjYWRlTGlzdFBhcmFtZXRlcnMm
IHBhcmFtZXRlcnMsIENsaWVudFVzZSBjbGllbnRVc2UpCi0gICAgewotICAgICAgICBBU1NFUlQo
IXBhcmFtZXRlcnMuZm9udE5hbWUuaXNOdWxsKCkpOwotICAgICAgICByZXR1cm4gbV9zeXN0ZW1G
b250Q2FjaGUuZW5zdXJlKHBhcmFtZXRlcnMsIFsmXSB7Ci0gICAgICAgICAgICBhdXRvIGxvY2Fs
ZVN0cmluZyA9IHBhcmFtZXRlcnMubG9jYWxlLnN0cmluZygpLmNyZWF0ZUNGU3RyaW5nKCk7Ci0g
ICAgICAgICAgICBSZXRhaW5QdHI8Q1RGb250UmVmPiBzeXN0ZW1Gb250OwotICAgICAgICAgICAg
aWYgKGNsaWVudFVzZSA9PSBDbGllbnRVc2U6OkZvclN5c3RlbVVJKSB7Ci0gICAgICAgICAgICAg
ICAgc3lzdGVtRm9udCA9IGFkb3B0Q0YoQ1RGb250Q3JlYXRlVUlGb250Rm9yTGFuZ3VhZ2Uoa0NU
Rm9udFVJRm9udFN5c3RlbSwgcGFyYW1ldGVycy5zaXplLCBsb2NhbGVTdHJpbmcuZ2V0KCkpKTsK
LSAgICAgICAgICAgICAgICBBU1NFUlQoc3lzdGVtRm9udCk7Ci0gICAgICAgICAgICAgICAgLy8g
RklYTUU6IFVzZSBhcHBseVdlaWdodEl0YWxpY3NBbmRGYWxsYmFja0JlaGF2aW9yKCkgaW4gYm90
aCBjYXNlcyBvbmNlIDxyZGFyOi8vcHJvYmxlbS8zMzA0NjA0MT4gaXMgZml4ZWQuCi0gICAgICAg
ICAgICAgICAgc3lzdGVtRm9udCA9IGFwcGx5V2VpZ2h0SXRhbGljc0FuZEZhbGxiYWNrQmVoYXZp
b3Ioc3lzdGVtRm9udC5nZXQoKSwgcGFyYW1ldGVycy53ZWlnaHQsIHBhcmFtZXRlcnMuaXRhbGlj
LCBwYXJhbWV0ZXJzLnNpemUsIHBhcmFtZXRlcnMuYWxsb3dVc2VySW5zdGFsbGVkRm9udHMpOwot
ICAgICAgICAgICAgfSBlbHNlIHsKLSNpZiBQTEFURk9STShJT1MpCi0gICAgICAgICAgICAgICAg
QVNTRVJUKGNsaWVudFVzZSA9PSBDbGllbnRVc2U6OkZvclRleHRTdHlsZSk7Ci0gICAgICAgICAg
ICAgICAgYXV0byBmb250RGVzY3JpcHRvciA9IGFkb3B0Q0YoQ1RGb250RGVzY3JpcHRvckNyZWF0
ZVdpdGhUZXh0U3R5bGUocGFyYW1ldGVycy5mb250TmFtZS5zdHJpbmcoKS5jcmVhdGVDRlN0cmlu
ZygpLmdldCgpLCBSZW5kZXJUaGVtZUlPUzo6Y29udGVudFNpemVDYXRlZ29yeSgpLCBudWxscHRy
KSk7Ci0gICAgICAgICAgICAgICAgQ1RGb250U3ltYm9saWNUcmFpdHMgdHJhaXRzID0gKHBhcmFt
ZXRlcnMud2VpZ2h0ID49IGtDVEZvbnRXZWlnaHRTZW1pYm9sZCA/IGtDVEZvbnRUcmFpdEJvbGQg
OiAwKSB8IChwYXJhbWV0ZXJzLml0YWxpYyA/IGtDVEZvbnRUcmFpdEl0YWxpYyA6IDApOwotICAg
ICAgICAgICAgICAgIGlmICh0cmFpdHMpCi0gICAgICAgICAgICAgICAgICAgIGZvbnREZXNjcmlw
dG9yID0gYWRvcHRDRihDVEZvbnREZXNjcmlwdG9yQ3JlYXRlQ29weVdpdGhTeW1ib2xpY1RyYWl0
cyhmb250RGVzY3JpcHRvci5nZXQoKSwgdHJhaXRzLCB0cmFpdHMpKTsKLSAgICAgICAgICAgICAg
ICBzeXN0ZW1Gb250ID0gY3JlYXRlRm9udEZvckluc3RhbGxlZEZvbnRzKGZvbnREZXNjcmlwdG9y
LmdldCgpLCBwYXJhbWV0ZXJzLnNpemUsIHBhcmFtZXRlcnMuYWxsb3dVc2VySW5zdGFsbGVkRm9u
dHMpOwotI2Vsc2UKLSAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSNlbmRp
ZgotICAgICAgICAgICAgfQotICAgICAgICAgICAgQVNTRVJUKHN5c3RlbUZvbnQpOwotICAgICAg
ICAgICAgYXV0byByZXN1bHQgPSBjb21wdXRlQ2FzY2FkZUxpc3Qoc3lzdGVtRm9udC5nZXQoKSwg
bG9jYWxlU3RyaW5nLmdldCgpKTsKLSAgICAgICAgICAgIEFTU0VSVCghcmVzdWx0LmlzRW1wdHko
KSk7Ci0gICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgICB9KS5pdGVyYXRvci0+dmFs
dWU7Ci0gICAgfQotCi0gICAgdm9pZCBjbGVhcigpCi0gICAgewotICAgICAgICBtX3N5c3RlbUZv
bnRDYWNoZS5jbGVhcigpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBTeXN0ZW1Gb250RGF0YWJh
c2UoKQotICAgIHsKLSAgICB9Ci0KLSAgICBzdGF0aWMgUmV0YWluUHRyPENURm9udFJlZj4gYXBw
bHlXZWlnaHRJdGFsaWNzQW5kRmFsbGJhY2tCZWhhdmlvcihDVEZvbnRSZWYgZm9udCwgQ0dGbG9h
dCB3ZWlnaHQsIGJvb2wgaXRhbGljLCBmbG9hdCBzaXplLCBBbGxvd1VzZXJJbnN0YWxsZWRGb250
cyBhbGxvd1VzZXJJbnN0YWxsZWRGb250cykKLSAgICB7Ci0gICAgICAgIGF1dG8gd2VpZ2h0TnVt
YmVyID0gYWRvcHRDRihDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1i
ZXJDR0Zsb2F0VHlwZSwgJndlaWdodCkpOwotICAgICAgICBjb25zdCBmbG9hdCBzeXN0ZW1Gb250
SXRhbGljU2xvcGUgPSAwLjA3OwotICAgICAgICBmbG9hdCBpdGFsaWNzUmF3TnVtYmVyID0gaXRh
bGljID8gc3lzdGVtRm9udEl0YWxpY1Nsb3BlIDogMDsKLSAgICAgICAgYXV0byBpdGFsaWNzTnVt
YmVyID0gYWRvcHRDRihDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1i
ZXJGbG9hdFR5cGUsICZpdGFsaWNzUmF3TnVtYmVyKSk7Ci0gICAgICAgIENGVHlwZVJlZiB0cmFp
dHNLZXlzW10gPSB7IGtDVEZvbnRXZWlnaHRUcmFpdCwga0NURm9udFNsYW50VHJhaXQsIGtDVEZv
bnRVSUZvbnREZXNpZ25UcmFpdCB9OwotICAgICAgICBDRlR5cGVSZWYgdHJhaXRzVmFsdWVzW10g
PSB7IHdlaWdodE51bWJlci5nZXQoKSwgaXRhbGljc051bWJlci5nZXQoKSwga0NGQm9vbGVhblRy
dWUgfTsKLSAgICAgICAgYXV0byB0cmFpdHNEaWN0aW9uYXJ5ID0gYWRvcHRDRihDRkRpY3Rpb25h
cnlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgdHJhaXRzS2V5cywgdHJhaXRzVmFsdWVzLCBX
VEZfQVJSQVlfTEVOR1RIKHRyYWl0c0tleXMpLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFj
a3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7Ci0gICAgICAgIGF1dG8gYXR0
cmlidXRlcyA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCAwLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlv
bmFyeVZhbHVlQ2FsbEJhY2tzKSk7Ci0gICAgICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGF0dHJp
YnV0ZXMuZ2V0KCksIGtDVEZvbnRUcmFpdHNBdHRyaWJ1dGUsIHRyYWl0c0RpY3Rpb25hcnkuZ2V0
KCkpOwotICAgICAgICBhZGRBdHRyaWJ1dGVzRm9ySW5zdGFsbGVkRm9udHMoYXR0cmlidXRlcy5n
ZXQoKSwgYWxsb3dVc2VySW5zdGFsbGVkRm9udHMpOwotICAgICAgICBhdXRvIG1vZGlmaWNhdGlv
biA9IGFkb3B0Q0YoQ1RGb250RGVzY3JpcHRvckNyZWF0ZVdpdGhBdHRyaWJ1dGVzKGF0dHJpYnV0
ZXMuZ2V0KCkpKTsKLSAgICAgICAgcmV0dXJuIGFkb3B0Q0YoQ1RGb250Q3JlYXRlQ29weVdpdGhB
dHRyaWJ1dGVzKGZvbnQsIHNpemUsIG51bGxwdHIsIG1vZGlmaWNhdGlvbi5nZXQoKSkpOwotICAg
IH0KLQotICAgIHN0YXRpYyBSZXRhaW5QdHI8Q1RGb250RGVzY3JpcHRvclJlZj4gcmVtb3ZlQ2Fz
Y2FkZUxpc3QoQ1RGb250RGVzY3JpcHRvclJlZiBmb250RGVzY3JpcHRvcikKLSAgICB7Ci0gICAg
ICAgIGF1dG8gZW1wdHlBcnJheSA9IGFkb3B0Q0YoQ0ZBcnJheUNyZWF0ZShrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCBudWxscHRyLCAwLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKSk7Ci0gICAgICAgIENG
VHlwZVJlZiBmYWxsYmFja0RpY3Rpb25hcnlLZXlzW10gPSB7IGtDVEZvbnRDYXNjYWRlTGlzdEF0
dHJpYnV0ZSB9OwotICAgICAgICBDRlR5cGVSZWYgZmFsbGJhY2tEaWN0aW9uYXJ5VmFsdWVzW10g
PSB7IGVtcHR5QXJyYXkuZ2V0KCkgfTsKLSAgICAgICAgYXV0byBmYWxsYmFja0RpY3Rpb25hcnkg
PSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBmYWxsYmFj
a0RpY3Rpb25hcnlLZXlzLCBmYWxsYmFja0RpY3Rpb25hcnlWYWx1ZXMsIFdURl9BUlJBWV9MRU5H
VEgoZmFsbGJhY2tEaWN0aW9uYXJ5S2V5cyksICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNr
cywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKLSAgICAgICAgYXV0byBtb2Rp
ZmllZEZvbnREZXNjcmlwdG9yID0gYWRvcHRDRihDVEZvbnREZXNjcmlwdG9yQ3JlYXRlQ29weVdp
dGhBdHRyaWJ1dGVzKGZvbnREZXNjcmlwdG9yLCBmYWxsYmFja0RpY3Rpb25hcnkuZ2V0KCkpKTsK
LSAgICAgICAgcmV0dXJuIG1vZGlmaWVkRm9udERlc2NyaXB0b3I7Ci0gICAgfQotCi0gICAgc3Rh
dGljIFZlY3RvcjxSZXRhaW5QdHI8Q1RGb250RGVzY3JpcHRvclJlZj4+IGNvbXB1dGVDYXNjYWRl
TGlzdChDVEZvbnRSZWYgZm9udCwgQ0ZTdHJpbmdSZWYgbG9jYWxlKQotICAgIHsKLSAgICAgICAg
Q0ZUeXBlUmVmIGFycmF5VmFsdWVzW10gPSB7IGxvY2FsZSB9OwotICAgICAgICBhdXRvIGxvY2Fs
ZUFycmF5ID0gYWRvcHRDRihDRkFycmF5Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGFycmF5
VmFsdWVzLCBXVEZfQVJSQVlfTEVOR1RIKGFycmF5VmFsdWVzKSwgJmtDRlR5cGVBcnJheUNhbGxC
YWNrcykpOwotICAgICAgICBhdXRvIGNhc2NhZGVMaXN0ID0gYWRvcHRDRihDVEZvbnRDb3B5RGVm
YXVsdENhc2NhZGVMaXN0Rm9yTGFuZ3VhZ2VzKGZvbnQsIGxvY2FsZUFycmF5LmdldCgpKSk7Ci0g
ICAgICAgIFZlY3RvcjxSZXRhaW5QdHI8Q1RGb250RGVzY3JpcHRvclJlZj4+IHJlc3VsdDsKLSAg
ICAgICAgLy8gV2ViS2l0IGhhbmRsZXMgdGhlIGNhc2NhZGUgbGlzdCwgYW5kIFdlYktpdCAyJ3Mg
SVBDIGNvZGUgZG9lc24ndCBrbm93IGhvdyB0byBzZXJpYWxpemUgQ29yZSBUZXh0J3MgY2FzY2Fk
ZSBsaXN0LgotICAgICAgICByZXN1bHQuYXBwZW5kKHJlbW92ZUNhc2NhZGVMaXN0KGFkb3B0Q0Yo
Q1RGb250Q29weUZvbnREZXNjcmlwdG9yKGZvbnQpKS5nZXQoKSkpOwotICAgICAgICBpZiAoY2Fz
Y2FkZUxpc3QpIHsKLSAgICAgICAgICAgIENGSW5kZXggYXJyYXlMZW5ndGggPSBDRkFycmF5R2V0
Q291bnQoY2FzY2FkZUxpc3QuZ2V0KCkpOwotICAgICAgICAgICAgZm9yIChDRkluZGV4IGkgPSAw
OyBpIDwgYXJyYXlMZW5ndGg7ICsraSkKLSAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHN0
YXRpY19jYXN0PENURm9udERlc2NyaXB0b3JSZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgoY2Fz
Y2FkZUxpc3QuZ2V0KCksIGkpKSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHJlc3VsdDsK
LSAgICB9Ci0KLSAgICBIYXNoTWFwPENvcmVUZXh0Q2FzY2FkZUxpc3RQYXJhbWV0ZXJzLCBWZWN0
b3I8UmV0YWluUHRyPENURm9udERlc2NyaXB0b3JSZWY+PiwgQ29yZVRleHRDYXNjYWRlTGlzdFBh
cmFtZXRlcnM6OkNvcmVUZXh0Q2FzY2FkZUxpc3RQYXJhbWV0ZXJzSGFzaCwgU2ltcGxlQ2xhc3NI
YXNoVHJhaXRzPENvcmVUZXh0Q2FzY2FkZUxpc3RQYXJhbWV0ZXJzPj4gbV9zeXN0ZW1Gb250Q2Fj
aGU7Ci19OwotCiBzdGF0aWMgaW5saW5lIGJvb2wgaXNTeXN0ZW1Gb250U3RyaW5nKGNvbnN0IEF0
b21pY1N0cmluZyYgc3RyaW5nKQogewogICAgIHJldHVybiBlcXVhbExldHRlcnNJZ25vcmluZ0FT
Q0lJQ2FzZShzdHJpbmcsICItd2Via2l0LXN5c3RlbS1mb250IikKQEAgLTI0NCw1NyArODEsOSBA
QCBzdGF0aWMgaW5saW5lIGJvb2wgaXNVSUZvbnRUZXh0U3R5bGUoY29uCiB9CiAjZW5kaWYKIAot
c3RhdGljIGlubGluZSBTeXN0ZW1Gb250RGF0YWJhc2U6OkNvcmVUZXh0Q2FzY2FkZUxpc3RQYXJh
bWV0ZXJzIHN5c3RlbUZvbnRQYXJhbWV0ZXJzKGNvbnN0IEZvbnRDYXNjYWRlRGVzY3JpcHRpb24m
IGRlc2NyaXB0aW9uLCBjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlseU5hbWUsIFN5c3RlbUZvbnRE
YXRhYmFzZTo6Q2xpZW50VXNlIGNsaWVudFVzZSwgQWxsb3dVc2VySW5zdGFsbGVkRm9udHMgYWxs
b3dVc2VySW5zdGFsbGVkRm9udHMpCi17Ci0gICAgU3lzdGVtRm9udERhdGFiYXNlOjpDb3JlVGV4
dENhc2NhZGVMaXN0UGFyYW1ldGVycyByZXN1bHQ7Ci0gICAgcmVzdWx0LmxvY2FsZSA9IGRlc2Ny
aXB0aW9uLmxvY2FsZSgpOwotICAgIHJlc3VsdC5zaXplID0gZGVzY3JpcHRpb24uY29tcHV0ZWRT
aXplKCk7Ci0gICAgcmVzdWx0Lml0YWxpYyA9IGlzSXRhbGljKGRlc2NyaXB0aW9uLml0YWxpYygp
KTsKLQotICAgIGF1dG8gd2VpZ2h0ID0gZGVzY3JpcHRpb24ud2VpZ2h0KCk7Ci0gICAgaWYgKEZv
bnRDYWNoZTo6c2luZ2xldG9uKCkuc2hvdWxkTW9ja0JvbGRTeXN0ZW1Gb250Rm9yQWNjZXNzaWJp
bGl0eSgpKQotICAgICAgICB3ZWlnaHQgPSB3ZWlnaHQgKyBGb250U2VsZWN0aW9uVmFsdWUoMjAw
KTsKLQotICAgIGlmICh3ZWlnaHQgPCBGb250U2VsZWN0aW9uVmFsdWUoMTUwKSkKLSAgICAgICAg
cmVzdWx0LndlaWdodCA9IGtDVEZvbnRXZWlnaHRVbHRyYUxpZ2h0OwotICAgIGVsc2UgaWYgKHdl
aWdodCA8IEZvbnRTZWxlY3Rpb25WYWx1ZSgyNTApKQotICAgICAgICByZXN1bHQud2VpZ2h0ID0g
a0NURm9udFdlaWdodFRoaW47Ci0gICAgZWxzZSBpZiAod2VpZ2h0IDwgRm9udFNlbGVjdGlvblZh
bHVlKDM1MCkpCi0gICAgICAgIHJlc3VsdC53ZWlnaHQgPSBrQ1RGb250V2VpZ2h0TGlnaHQ7Ci0g
ICAgZWxzZSBpZiAod2VpZ2h0IDwgRm9udFNlbGVjdGlvblZhbHVlKDQ1MCkpCi0gICAgICAgIHJl
c3VsdC53ZWlnaHQgPSBrQ1RGb250V2VpZ2h0UmVndWxhcjsKLSAgICBlbHNlIGlmICh3ZWlnaHQg
PCBGb250U2VsZWN0aW9uVmFsdWUoNTUwKSkKLSAgICAgICAgcmVzdWx0LndlaWdodCA9IGtDVEZv
bnRXZWlnaHRNZWRpdW07Ci0gICAgZWxzZSBpZiAod2VpZ2h0IDwgRm9udFNlbGVjdGlvblZhbHVl
KDY1MCkpCi0gICAgICAgIHJlc3VsdC53ZWlnaHQgPSBrQ1RGb250V2VpZ2h0U2VtaWJvbGQ7Ci0g
ICAgZWxzZSBpZiAod2VpZ2h0IDwgRm9udFNlbGVjdGlvblZhbHVlKDc1MCkpCi0gICAgICAgIHJl
c3VsdC53ZWlnaHQgPSBrQ1RGb250V2VpZ2h0Qm9sZDsKLSAgICBlbHNlIGlmICh3ZWlnaHQgPCBG
b250U2VsZWN0aW9uVmFsdWUoODUwKSkKLSAgICAgICAgcmVzdWx0LndlaWdodCA9IGtDVEZvbnRX
ZWlnaHRIZWF2eTsKLSAgICBlbHNlCi0gICAgICAgIHJlc3VsdC53ZWlnaHQgPSBrQ1RGb250V2Vp
Z2h0QmxhY2s7Ci0KLSAgICBpZiAoY2xpZW50VXNlID09IFN5c3RlbUZvbnREYXRhYmFzZTo6Q2xp
ZW50VXNlOjpGb3JTeXN0ZW1VSSkgewotICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRv
bWljU3RyaW5nPiBzeXN0ZW1VSSA9IEF0b21pY1N0cmluZygic3lzdGVtLXVpIiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgICAgIHJlc3VsdC5mb250TmFtZSA9IHN5
c3RlbVVJLmdldCgpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIEFTU0VSVChjbGllbnRVc2UgPT0g
U3lzdGVtRm9udERhdGFiYXNlOjpDbGllbnRVc2U6OkZvclRleHRTdHlsZSk7Ci0gICAgICAgIHJl
c3VsdC5mb250TmFtZSA9IGZhbWlseU5hbWU7Ci0gICAgfQotCi0gICAgcmVzdWx0LmFsbG93VXNl
ckluc3RhbGxlZEZvbnRzID0gYWxsb3dVc2VySW5zdGFsbGVkRm9udHM7Ci0KLSAgICByZXR1cm4g
cmVzdWx0OwotfQotCi12b2lkIEZvbnREZXNjcmlwdGlvbjo6aW52YWxpZGF0ZUNhY2hlcygpCi17
Ci0gICAgU3lzdGVtRm9udERhdGFiYXNlOjpzaW5nbGV0b24oKS5jbGVhcigpOwotfQotCi1zdGF0
aWMgaW5saW5lIFZlY3RvcjxSZXRhaW5QdHI8Q1RGb250RGVzY3JpcHRvclJlZj4+IHN5c3RlbUZv
bnRDYXNjYWRlTGlzdChjb25zdCBGb250Q2FzY2FkZURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwg
Y29uc3QgQXRvbWljU3RyaW5nJiBjc3NGYW1pbHksIFN5c3RlbUZvbnREYXRhYmFzZTo6Q2xpZW50
VXNlIGNsaWVudFVzZSwgQWxsb3dVc2VySW5zdGFsbGVkRm9udHMgYWxsb3dVc2VySW5zdGFsbGVk
Rm9udHMpCitzdGF0aWMgaW5saW5lIFZlY3RvcjxSZXRhaW5QdHI8Q1RGb250RGVzY3JpcHRvclJl
Zj4+IHN5c3RlbUZvbnRDYXNjYWRlTGlzdChjb25zdCBGb250Q2FzY2FkZURlc2NyaXB0aW9uJiBk
ZXNjcmlwdGlvbiwgY29uc3QgQXRvbWljU3RyaW5nJiBjc3NGYW1pbHksIFN5c3RlbUZvbnREYXRh
YmFzZUNvcmVUZXh0OjpDbGllbnRVc2UgY2xpZW50VXNlLCBBbGxvd1VzZXJJbnN0YWxsZWRGb250
cyBhbGxvd1VzZXJJbnN0YWxsZWRGb250cykKIHsKLSAgICByZXR1cm4gU3lzdGVtRm9udERhdGFi
YXNlOjpzaW5nbGV0b24oKS5zeXN0ZW1Gb250Q2FzY2FkZUxpc3Qoc3lzdGVtRm9udFBhcmFtZXRl
cnMoZGVzY3JpcHRpb24sIGNzc0ZhbWlseSwgY2xpZW50VXNlLCBhbGxvd1VzZXJJbnN0YWxsZWRG
b250cyksIGNsaWVudFVzZSk7CisgICAgcmV0dXJuIFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0
OjpzaW5nbGV0b24oKS5jYXNjYWRlTGlzdChkZXNjcmlwdGlvbiwgY3NzRmFtaWx5LCBjbGllbnRV
c2UsIGFsbG93VXNlckluc3RhbGxlZEZvbnRzKTsKIH0KIAogdW5zaWduZWQgRm9udENhc2NhZGVE
ZXNjcmlwdGlvbjo6ZWZmZWN0aXZlRmFtaWx5Q291bnQoKSBjb25zdApAQCAtMzA0LDEwICs5Mywx
MCBAQCB1bnNpZ25lZCBGb250Q2FzY2FkZURlc2NyaXB0aW9uOjplZmZlY3RpCiAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IGZhbWlseUNvdW50KCk7ICsraSkgewogICAgICAgICBjb25zdCBh
dXRvJiBjc3NGYW1pbHkgPSBmYW1pbHlBdChpKTsKICAgICAgICAgaWYgKGlzU3lzdGVtRm9udFN0
cmluZyhjc3NGYW1pbHkpKQotICAgICAgICAgICAgcmVzdWx0ICs9IHN5c3RlbUZvbnRDYXNjYWRl
TGlzdCgqdGhpcywgY3NzRmFtaWx5LCBTeXN0ZW1Gb250RGF0YWJhc2U6OkNsaWVudFVzZTo6Rm9y
U3lzdGVtVUksIHNob3VsZEFsbG93VXNlckluc3RhbGxlZEZvbnRzKCkpLnNpemUoKTsKKyAgICAg
ICAgICAgIHJlc3VsdCArPSBzeXN0ZW1Gb250Q2FzY2FkZUxpc3QoKnRoaXMsIGNzc0ZhbWlseSwg
U3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQ6OkNsaWVudFVzZTo6Rm9yU3lzdGVtVUksIHNob3Vs
ZEFsbG93VXNlckluc3RhbGxlZEZvbnRzKCkpLnNpemUoKTsKICNpZiBQTEFURk9STShJT1MpCiAg
ICAgICAgIGVsc2UgaWYgKGlzVUlGb250VGV4dFN0eWxlKGNzc0ZhbWlseSkpCi0gICAgICAgICAg
ICByZXN1bHQgKz0gc3lzdGVtRm9udENhc2NhZGVMaXN0KCp0aGlzLCBjc3NGYW1pbHksIFN5c3Rl
bUZvbnREYXRhYmFzZTo6Q2xpZW50VXNlOjpGb3JUZXh0U3R5bGUsIHNob3VsZEFsbG93VXNlcklu
c3RhbGxlZEZvbnRzKCkpLnNpemUoKTsKKyAgICAgICAgICAgIHJlc3VsdCArPSBzeXN0ZW1Gb250
Q2FzY2FkZUxpc3QoKnRoaXMsIGNzc0ZhbWlseSwgU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQ6
OkNsaWVudFVzZTo6Rm9yVGV4dFN0eWxlLCBzaG91bGRBbGxvd1VzZXJJbnN0YWxsZWRGb250cygp
KS5zaXplKCk7CiAjZW5kaWYKICAgICAgICAgZWxzZQogICAgICAgICAgICAgKytyZXN1bHQ7CkBA
IC0zMjcsMTQgKzExNiwxNCBAQCBGb250RmFtaWx5U3BlY2lmaWNhdGlvbiBGb250Q2FzY2FkZURl
c2NyCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGZhbWlseUNvdW50KCk7ICsraSkgewog
ICAgICAgICBjb25zdCBhdXRvJiBjc3NGYW1pbHkgPSBmYW1pbHlBdChpKTsKICAgICAgICAgaWYg
KGlzU3lzdGVtRm9udFN0cmluZyhjc3NGYW1pbHkpKSB7Ci0gICAgICAgICAgICBhdXRvIGNhc2Nh
ZGVMaXN0ID0gc3lzdGVtRm9udENhc2NhZGVMaXN0KCp0aGlzLCBjc3NGYW1pbHksIFN5c3RlbUZv
bnREYXRhYmFzZTo6Q2xpZW50VXNlOjpGb3JTeXN0ZW1VSSwgc2hvdWxkQWxsb3dVc2VySW5zdGFs
bGVkRm9udHMoKSk7CisgICAgICAgICAgICBhdXRvIGNhc2NhZGVMaXN0ID0gc3lzdGVtRm9udENh
c2NhZGVMaXN0KCp0aGlzLCBjc3NGYW1pbHksIFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0OjpD
bGllbnRVc2U6OkZvclN5c3RlbVVJLCBzaG91bGRBbGxvd1VzZXJJbnN0YWxsZWRGb250cygpKTsK
ICAgICAgICAgICAgIGlmIChpbmRleCA8IGNhc2NhZGVMaXN0LnNpemUoKSkKICAgICAgICAgICAg
ICAgICByZXR1cm4gRm9udEZhbWlseVNwZWNpZmljYXRpb24oY2FzY2FkZUxpc3RbaW5kZXhdLmdl
dCgpKTsKICAgICAgICAgICAgIGluZGV4IC09IGNhc2NhZGVMaXN0LnNpemUoKTsKICAgICAgICAg
fQogI2lmIFBMQVRGT1JNKElPUykKICAgICAgICAgZWxzZSBpZiAoaXNVSUZvbnRUZXh0U3R5bGUo
Y3NzRmFtaWx5KSkgewotICAgICAgICAgICAgYXV0byBjYXNjYWRlTGlzdCA9IHN5c3RlbUZvbnRD
YXNjYWRlTGlzdCgqdGhpcywgY3NzRmFtaWx5LCBTeXN0ZW1Gb250RGF0YWJhc2U6OkNsaWVudFVz
ZTo6Rm9yVGV4dFN0eWxlLCBzaG91bGRBbGxvd1VzZXJJbnN0YWxsZWRGb250cygpKTsKKyAgICAg
ICAgICAgIGF1dG8gY2FzY2FkZUxpc3QgPSBzeXN0ZW1Gb250Q2FzY2FkZUxpc3QoKnRoaXMsIGNz
c0ZhbWlseSwgU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQ6OkNsaWVudFVzZTo6Rm9yVGV4dFN0
eWxlLCBzaG91bGRBbGxvd1VzZXJJbnN0YWxsZWRGb250cygpKTsKICAgICAgICAgICAgIGlmIChp
bmRleCA8IGNhc2NhZGVMaXN0LnNpemUoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gRm9udEZh
bWlseVNwZWNpZmljYXRpb24oY2FzY2FkZUxpc3RbaW5kZXhdLmdldCgpKTsKICAgICAgICAgICAg
IGluZGV4IC09IGNhc2NhZGVMaXN0LnNpemUoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1N5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9TeXN0ZW1Gb250
RGF0YWJhc2VDb3JlVGV4dC5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMTc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIlN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0LmgiCisKKyNpZiBVU0Vf
UExBVEZPUk1fU1lTVEVNX0ZBTExCQUNLX0xJU1QKKworI2luY2x1ZGUgIkZvbnRDYWNoZS5oIgor
I2luY2x1ZGUgIkZvbnRDYXNjYWRlRGVzY3JpcHRpb24uaCIKKworI2lmIFBMQVRGT1JNKElPUykK
KyNpbmNsdWRlICJSZW5kZXJUaGVtZUlPUy5oIgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQmIFN5c3RlbUZvbnREYXRhYmFzZUNvcmVU
ZXh0OjpzaW5nbGV0b24oKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTeXN0ZW1Gb250
RGF0YWJhc2VDb3JlVGV4dD4gZGF0YWJhc2UgPSBTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dCgp
OworICAgIHJldHVybiBkYXRhYmFzZS5nZXQoKTsKK30KKworU3lzdGVtRm9udERhdGFiYXNlQ29y
ZVRleHQ6OlN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0KCkKK3sKK30KKworVmVjdG9yPFJldGFp
blB0cjxDVEZvbnREZXNjcmlwdG9yUmVmPj4gU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQ6OmNh
c2NhZGVMaXN0KGNvbnN0IENhc2NhZGVMaXN0UGFyYW1ldGVycyYgcGFyYW1ldGVycywgQ2xpZW50
VXNlIGNsaWVudFVzZSkKK3sKKyAgICBBU1NFUlQoIXBhcmFtZXRlcnMuZm9udE5hbWUuaXNOdWxs
KCkpOworICAgIHJldHVybiBtX3N5c3RlbUZvbnRDYWNoZS5lbnN1cmUocGFyYW1ldGVycywgWyZd
IHsKKyAgICAgICAgYXV0byBsb2NhbGVTdHJpbmcgPSBwYXJhbWV0ZXJzLmxvY2FsZS5zdHJpbmco
KS5jcmVhdGVDRlN0cmluZygpOworICAgICAgICBSZXRhaW5QdHI8Q1RGb250UmVmPiBzeXN0ZW1G
b250OworICAgICAgICBpZiAoY2xpZW50VXNlID09IENsaWVudFVzZTo6Rm9yU3lzdGVtVUkpIHsK
KyAgICAgICAgICAgIHN5c3RlbUZvbnQgPSBhZG9wdENGKENURm9udENyZWF0ZVVJRm9udEZvckxh
bmd1YWdlKGtDVEZvbnRVSUZvbnRTeXN0ZW0sIHBhcmFtZXRlcnMuc2l6ZSwgbG9jYWxlU3RyaW5n
LmdldCgpKSk7CisgICAgICAgICAgICBBU1NFUlQoc3lzdGVtRm9udCk7CisgICAgICAgICAgICAv
LyBGSVhNRTogVXNlIGFwcGx5V2VpZ2h0SXRhbGljc0FuZEZhbGxiYWNrQmVoYXZpb3IoKSBpbiBi
b3RoIGNhc2VzIG9uY2UgPHJkYXI6Ly9wcm9ibGVtLzMzMDQ2MDQxPiBpcyBmaXhlZC4KKyAgICAg
ICAgICAgIHN5c3RlbUZvbnQgPSBhcHBseVdlaWdodEl0YWxpY3NBbmRGYWxsYmFja0JlaGF2aW9y
KHN5c3RlbUZvbnQuZ2V0KCksIHBhcmFtZXRlcnMud2VpZ2h0LCBwYXJhbWV0ZXJzLml0YWxpYywg
cGFyYW1ldGVycy5zaXplLCBwYXJhbWV0ZXJzLmFsbG93VXNlckluc3RhbGxlZEZvbnRzKTsKKyAg
ICAgICAgfSBlbHNlIHsKKyNpZiBQTEFURk9STShJT1MpCisgICAgICAgICAgICBBU1NFUlQoY2xp
ZW50VXNlID09IENsaWVudFVzZTo6Rm9yVGV4dFN0eWxlKTsKKyAgICAgICAgICAgIGF1dG8gZm9u
dERlc2NyaXB0b3IgPSBhZG9wdENGKENURm9udERlc2NyaXB0b3JDcmVhdGVXaXRoVGV4dFN0eWxl
KHBhcmFtZXRlcnMuZm9udE5hbWUuc3RyaW5nKCkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgUmVu
ZGVyVGhlbWVJT1M6OmNvbnRlbnRTaXplQ2F0ZWdvcnkoKSwgbnVsbHB0cikpOworICAgICAgICAg
ICAgQ1RGb250U3ltYm9saWNUcmFpdHMgdHJhaXRzID0gKHBhcmFtZXRlcnMud2VpZ2h0ID49IGtD
VEZvbnRXZWlnaHRTZW1pYm9sZCA/IGtDVEZvbnRUcmFpdEJvbGQgOiAwKSB8IChwYXJhbWV0ZXJz
Lml0YWxpYyA/IGtDVEZvbnRUcmFpdEl0YWxpYyA6IDApOworICAgICAgICAgICAgaWYgKHRyYWl0
cykKKyAgICAgICAgICAgICAgICBmb250RGVzY3JpcHRvciA9IGFkb3B0Q0YoQ1RGb250RGVzY3Jp
cHRvckNyZWF0ZUNvcHlXaXRoU3ltYm9saWNUcmFpdHMoZm9udERlc2NyaXB0b3IuZ2V0KCksIHRy
YWl0cywgdHJhaXRzKSk7CisgICAgICAgICAgICBzeXN0ZW1Gb250ID0gY3JlYXRlRm9udEZvcklu
c3RhbGxlZEZvbnRzKGZvbnREZXNjcmlwdG9yLmdldCgpLCBwYXJhbWV0ZXJzLnNpemUsIHBhcmFt
ZXRlcnMuYWxsb3dVc2VySW5zdGFsbGVkRm9udHMpOworI2Vsc2UKKyAgICAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworI2VuZGlmCisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUKHN5c3Rl
bUZvbnQpOworICAgICAgICBhdXRvIHJlc3VsdCA9IGNvbXB1dGVDYXNjYWRlTGlzdChzeXN0ZW1G
b250LmdldCgpLCBsb2NhbGVTdHJpbmcuZ2V0KCkpOworICAgICAgICBBU1NFUlQoIXJlc3VsdC5p
c0VtcHR5KCkpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0pLml0ZXJhdG9yLT52YWx1
ZTsKK30KKwordm9pZCBTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dDo6Y2xlYXIoKQoreworICAg
IG1fc3lzdGVtRm9udENhY2hlLmNsZWFyKCk7Cit9CisKK1JldGFpblB0cjxDVEZvbnRSZWY+IFN5
c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0OjphcHBseVdlaWdodEl0YWxpY3NBbmRGYWxsYmFja0Jl
aGF2aW9yKENURm9udFJlZiBmb250LCBDR0Zsb2F0IHdlaWdodCwgYm9vbCBpdGFsaWMsIGZsb2F0
IHNpemUsIEFsbG93VXNlckluc3RhbGxlZEZvbnRzIGFsbG93VXNlckluc3RhbGxlZEZvbnRzKQor
eworICAgIGF1dG8gd2VpZ2h0TnVtYmVyID0gYWRvcHRDRihDRk51bWJlckNyZWF0ZShrQ0ZBbGxv
Y2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJDR0Zsb2F0VHlwZSwgJndlaWdodCkpOworICAgIGNvbnN0
IGZsb2F0IHN5c3RlbUZvbnRJdGFsaWNTbG9wZSA9IDAuMDc7CisgICAgZmxvYXQgaXRhbGljc1Jh
d051bWJlciA9IGl0YWxpYyA/IHN5c3RlbUZvbnRJdGFsaWNTbG9wZSA6IDA7CisgICAgYXV0byBp
dGFsaWNzTnVtYmVyID0gYWRvcHRDRihDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0
LCBrQ0ZOdW1iZXJGbG9hdFR5cGUsICZpdGFsaWNzUmF3TnVtYmVyKSk7CisgICAgQ0ZUeXBlUmVm
IHRyYWl0c0tleXNbXSA9IHsga0NURm9udFdlaWdodFRyYWl0LCBrQ1RGb250U2xhbnRUcmFpdCwg
a0NURm9udFVJRm9udERlc2lnblRyYWl0IH07CisgICAgQ0ZUeXBlUmVmIHRyYWl0c1ZhbHVlc1td
ID0geyB3ZWlnaHROdW1iZXIuZ2V0KCksIGl0YWxpY3NOdW1iZXIuZ2V0KCksIGtDRkJvb2xlYW5U
cnVlIH07CisgICAgYXV0byB0cmFpdHNEaWN0aW9uYXJ5ID0gYWRvcHRDRihDRkRpY3Rpb25hcnlD
cmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgdHJhaXRzS2V5cywgdHJhaXRzVmFsdWVzLCBXVEZf
QVJSQVlfTEVOR1RIKHRyYWl0c0tleXMpLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3Ms
ICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CisgICAgYXV0byBhdHRyaWJ1dGVz
ID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQs
IDAsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFs
dWVDYWxsQmFja3MpKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShhdHRyaWJ1dGVzLmdldCgp
LCBrQ1RGb250VHJhaXRzQXR0cmlidXRlLCB0cmFpdHNEaWN0aW9uYXJ5LmdldCgpKTsKKyAgICBh
ZGRBdHRyaWJ1dGVzRm9ySW5zdGFsbGVkRm9udHMoYXR0cmlidXRlcy5nZXQoKSwgYWxsb3dVc2Vy
SW5zdGFsbGVkRm9udHMpOworICAgIGF1dG8gbW9kaWZpY2F0aW9uID0gYWRvcHRDRihDVEZvbnRE
ZXNjcmlwdG9yQ3JlYXRlV2l0aEF0dHJpYnV0ZXMoYXR0cmlidXRlcy5nZXQoKSkpOworICAgIHJl
dHVybiBhZG9wdENGKENURm9udENyZWF0ZUNvcHlXaXRoQXR0cmlidXRlcyhmb250LCBzaXplLCBu
dWxscHRyLCBtb2RpZmljYXRpb24uZ2V0KCkpKTsKK30KKworUmV0YWluUHRyPENURm9udERlc2Ny
aXB0b3JSZWY+IFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0OjpyZW1vdmVDYXNjYWRlTGlzdChD
VEZvbnREZXNjcmlwdG9yUmVmIGZvbnREZXNjcmlwdG9yKQoreworICAgIGF1dG8gZW1wdHlBcnJh
eSA9IGFkb3B0Q0YoQ0ZBcnJheUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBudWxscHRyLCAw
LCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKSk7CisgICAgQ0ZUeXBlUmVmIGZhbGxiYWNrRGljdGlv
bmFyeUtleXNbXSA9IHsga0NURm9udENhc2NhZGVMaXN0QXR0cmlidXRlIH07CisgICAgQ0ZUeXBl
UmVmIGZhbGxiYWNrRGljdGlvbmFyeVZhbHVlc1tdID0geyBlbXB0eUFycmF5LmdldCgpIH07Cisg
ICAgYXV0byBmYWxsYmFja0RpY3Rpb25hcnkgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZShr
Q0ZBbGxvY2F0b3JEZWZhdWx0LCBmYWxsYmFja0RpY3Rpb25hcnlLZXlzLCBmYWxsYmFja0RpY3Rp
b25hcnlWYWx1ZXMsIFdURl9BUlJBWV9MRU5HVEgoZmFsbGJhY2tEaWN0aW9uYXJ5S2V5cyksICZr
Q0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxs
QmFja3MpKTsKKyAgICBhdXRvIG1vZGlmaWVkRm9udERlc2NyaXB0b3IgPSBhZG9wdENGKENURm9u
dERlc2NyaXB0b3JDcmVhdGVDb3B5V2l0aEF0dHJpYnV0ZXMoZm9udERlc2NyaXB0b3IsIGZhbGxi
YWNrRGljdGlvbmFyeS5nZXQoKSkpOworICAgIHJldHVybiBtb2RpZmllZEZvbnREZXNjcmlwdG9y
OworfQorCitWZWN0b3I8UmV0YWluUHRyPENURm9udERlc2NyaXB0b3JSZWY+PiBTeXN0ZW1Gb250
RGF0YWJhc2VDb3JlVGV4dDo6Y29tcHV0ZUNhc2NhZGVMaXN0KENURm9udFJlZiBmb250LCBDRlN0
cmluZ1JlZiBsb2NhbGUpCit7CisgICAgQ0ZUeXBlUmVmIGFycmF5VmFsdWVzW10gPSB7IGxvY2Fs
ZSB9OworICAgIGF1dG8gbG9jYWxlQXJyYXkgPSBhZG9wdENGKENGQXJyYXlDcmVhdGUoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgYXJyYXlWYWx1ZXMsIFdURl9BUlJBWV9MRU5HVEgoYXJyYXlWYWx1ZXMp
LCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKSk7CisgICAgYXV0byBjYXNjYWRlTGlzdCA9IGFkb3B0
Q0YoQ1RGb250Q29weURlZmF1bHRDYXNjYWRlTGlzdEZvckxhbmd1YWdlcyhmb250LCBsb2NhbGVB
cnJheS5nZXQoKSkpOworICAgIFZlY3RvcjxSZXRhaW5QdHI8Q1RGb250RGVzY3JpcHRvclJlZj4+
IHJlc3VsdDsKKyAgICAvLyBXZWJLaXQgaGFuZGxlcyB0aGUgY2FzY2FkZSBsaXN0LCBhbmQgV2Vi
S2l0IDIncyBJUEMgY29kZSBkb2Vzbid0IGtub3cgaG93IHRvIHNlcmlhbGl6ZSBDb3JlIFRleHQn
cyBjYXNjYWRlIGxpc3QuCisgICAgcmVzdWx0LmFwcGVuZChyZW1vdmVDYXNjYWRlTGlzdChhZG9w
dENGKENURm9udENvcHlGb250RGVzY3JpcHRvcihmb250KSkuZ2V0KCkpKTsKKyAgICBpZiAoY2Fz
Y2FkZUxpc3QpIHsKKyAgICAgICAgQ0ZJbmRleCBhcnJheUxlbmd0aCA9IENGQXJyYXlHZXRDb3Vu
dChjYXNjYWRlTGlzdC5nZXQoKSk7CisgICAgICAgIGZvciAoQ0ZJbmRleCBpID0gMDsgaSA8IGFy
cmF5TGVuZ3RoOyArK2kpCisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHN0YXRpY19jYXN0PENU
Rm9udERlc2NyaXB0b3JSZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgoY2FzY2FkZUxpc3QuZ2V0
KCksIGkpKSk7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK1N5c3RlbUZvbnREYXRh
YmFzZUNvcmVUZXh0OjpDYXNjYWRlTGlzdFBhcmFtZXRlcnMgU3lzdGVtRm9udERhdGFiYXNlQ29y
ZVRleHQ6OnN5c3RlbUZvbnRQYXJhbWV0ZXJzKGNvbnN0IEZvbnRDYXNjYWRlRGVzY3JpcHRpb24m
IGRlc2NyaXB0aW9uLCBjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlseU5hbWUsIENsaWVudFVzZSBj
bGllbnRVc2UsIEFsbG93VXNlckluc3RhbGxlZEZvbnRzIGFsbG93VXNlckluc3RhbGxlZEZvbnRz
KQoreworICAgIENhc2NhZGVMaXN0UGFyYW1ldGVycyByZXN1bHQ7CisgICAgcmVzdWx0LmxvY2Fs
ZSA9IGRlc2NyaXB0aW9uLmxvY2FsZSgpOworICAgIHJlc3VsdC5zaXplID0gZGVzY3JpcHRpb24u
Y29tcHV0ZWRTaXplKCk7CisgICAgcmVzdWx0Lml0YWxpYyA9IGlzSXRhbGljKGRlc2NyaXB0aW9u
Lml0YWxpYygpKTsKKworICAgIGF1dG8gd2VpZ2h0ID0gZGVzY3JpcHRpb24ud2VpZ2h0KCk7Cisg
ICAgaWYgKEZvbnRDYWNoZTo6c2luZ2xldG9uKCkuc2hvdWxkTW9ja0JvbGRTeXN0ZW1Gb250Rm9y
QWNjZXNzaWJpbGl0eSgpKQorICAgICAgICB3ZWlnaHQgPSB3ZWlnaHQgKyBGb250U2VsZWN0aW9u
VmFsdWUoMjAwKTsKKworICAgIGlmICh3ZWlnaHQgPCBGb250U2VsZWN0aW9uVmFsdWUoMTUwKSkK
KyAgICAgICAgcmVzdWx0LndlaWdodCA9IGtDVEZvbnRXZWlnaHRVbHRyYUxpZ2h0OworICAgIGVs
c2UgaWYgKHdlaWdodCA8IEZvbnRTZWxlY3Rpb25WYWx1ZSgyNTApKQorICAgICAgICByZXN1bHQu
d2VpZ2h0ID0ga0NURm9udFdlaWdodFRoaW47CisgICAgZWxzZSBpZiAod2VpZ2h0IDwgRm9udFNl
bGVjdGlvblZhbHVlKDM1MCkpCisgICAgICAgIHJlc3VsdC53ZWlnaHQgPSBrQ1RGb250V2VpZ2h0
TGlnaHQ7CisgICAgZWxzZSBpZiAod2VpZ2h0IDwgRm9udFNlbGVjdGlvblZhbHVlKDQ1MCkpCisg
ICAgICAgIHJlc3VsdC53ZWlnaHQgPSBrQ1RGb250V2VpZ2h0UmVndWxhcjsKKyAgICBlbHNlIGlm
ICh3ZWlnaHQgPCBGb250U2VsZWN0aW9uVmFsdWUoNTUwKSkKKyAgICAgICAgcmVzdWx0LndlaWdo
dCA9IGtDVEZvbnRXZWlnaHRNZWRpdW07CisgICAgZWxzZSBpZiAod2VpZ2h0IDwgRm9udFNlbGVj
dGlvblZhbHVlKDY1MCkpCisgICAgICAgIHJlc3VsdC53ZWlnaHQgPSBrQ1RGb250V2VpZ2h0U2Vt
aWJvbGQ7CisgICAgZWxzZSBpZiAod2VpZ2h0IDwgRm9udFNlbGVjdGlvblZhbHVlKDc1MCkpCisg
ICAgICAgIHJlc3VsdC53ZWlnaHQgPSBrQ1RGb250V2VpZ2h0Qm9sZDsKKyAgICBlbHNlIGlmICh3
ZWlnaHQgPCBGb250U2VsZWN0aW9uVmFsdWUoODUwKSkKKyAgICAgICAgcmVzdWx0LndlaWdodCA9
IGtDVEZvbnRXZWlnaHRIZWF2eTsKKyAgICBlbHNlCisgICAgICAgIHJlc3VsdC53ZWlnaHQgPSBr
Q1RGb250V2VpZ2h0QmxhY2s7CisKKyAgICBpZiAoY2xpZW50VXNlID09IENsaWVudFVzZTo6Rm9y
U3lzdGVtVUkpIHsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4g
c3lzdGVtVUkgPSBBdG9taWNTdHJpbmcoInN5c3RlbS11aSIsIEF0b21pY1N0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpOworICAgICAgICByZXN1bHQuZm9udE5hbWUgPSBzeXN0ZW1VSS5nZXQo
KTsKKyAgICB9IGVsc2UgeworICAgICAgICBBU1NFUlQoY2xpZW50VXNlID09IENsaWVudFVzZTo6
Rm9yVGV4dFN0eWxlKTsKKyAgICAgICAgcmVzdWx0LmZvbnROYW1lID0gZmFtaWx5TmFtZTsKKyAg
ICB9CisKKyAgICByZXN1bHQuYWxsb3dVc2VySW5zdGFsbGVkRm9udHMgPSBhbGxvd1VzZXJJbnN0
YWxsZWRGb250czsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK1ZlY3RvcjxSZXRhaW5QdHI8
Q1RGb250RGVzY3JpcHRvclJlZj4+IFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0OjpjYXNjYWRl
TGlzdChjb25zdCBGb250Q2FzY2FkZURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwgY29uc3QgQXRv
bWljU3RyaW5nJiBjc3NGYW1pbHksIENsaWVudFVzZSBjbGllbnRVc2UsIEFsbG93VXNlckluc3Rh
bGxlZEZvbnRzIGFsbG93VXNlckluc3RhbGxlZEZvbnRzKQoreworICAgIHJldHVybiBjYXNjYWRl
TGlzdChzeXN0ZW1Gb250UGFyYW1ldGVycyhkZXNjcmlwdGlvbiwgY3NzRmFtaWx5LCBjbGllbnRV
c2UsIGFsbG93VXNlckluc3RhbGxlZEZvbnRzKSwgY2xpZW50VXNlKTsKK30KKworfQorCisjZW5k
aWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1N5c3RlbUZv
bnREYXRhYmFzZUNvcmVUZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQuaAkobm9uZXhpc3Rl
bnQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9TeXN0ZW1Gb250
RGF0YWJhc2VDb3JlVGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTIxIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJGb250Q2FzY2FkZURlc2NyaXB0aW9u
LmgiCisjaW5jbHVkZSA8cGFsL3NwaS9jb2NvYS9Db3JlVGV4dFNQSS5oPgorI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hUcmFpdHMuaD4KKyNpbmNsdWRlIDx3dGYv
dGV4dC9BdG9taWNTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmdIYXNo
Lmg+CisKKyNpZiBVU0VfUExBVEZPUk1fU1lTVEVNX0ZBTExCQUNLX0xJU1QKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dCB7CitwdWJsaWM6
CisgICAgc3RydWN0IENhc2NhZGVMaXN0UGFyYW1ldGVycyB7CisgICAgICAgIENhc2NhZGVMaXN0
UGFyYW1ldGVycygpCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIENhc2NhZGVMaXN0
UGFyYW1ldGVycyhXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpCisgICAgICAgICAgICA6
IGZvbnROYW1lKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKQorICAgICAgICB7CisgICAgICAg
IH0KKworICAgICAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QKKyAgICAg
ICAgeworICAgICAgICAgICAgcmV0dXJuIGZvbnROYW1lLmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVl
KCk7CisgICAgICAgIH0KKworICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ2FzY2FkZUxp
c3RQYXJhbWV0ZXJzJiBvdGhlcikgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJu
IGZvbnROYW1lID09IG90aGVyLmZvbnROYW1lCisgICAgICAgICAgICAgICAgJiYgbG9jYWxlID09
IG90aGVyLmxvY2FsZQorICAgICAgICAgICAgICAgICYmIHdlaWdodCA9PSBvdGhlci53ZWlnaHQK
KyAgICAgICAgICAgICAgICAmJiBzaXplID09IG90aGVyLnNpemUKKyAgICAgICAgICAgICAgICAm
JiBhbGxvd1VzZXJJbnN0YWxsZWRGb250cyA9PSBvdGhlci5hbGxvd1VzZXJJbnN0YWxsZWRGb250
cworICAgICAgICAgICAgICAgICYmIGl0YWxpYyA9PSBvdGhlci5pdGFsaWM7CisgICAgICAgIH0K
KworICAgICAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAg
SW50ZWdlckhhc2hlciBoYXNoZXI7CisgICAgICAgICAgICBBU1NFUlQoIWZvbnROYW1lLmlzTnVs
bCgpKTsKKyAgICAgICAgICAgIGhhc2hlci5hZGQobG9jYWxlLmV4aXN0aW5nSGFzaCgpKTsKKyAg
ICAgICAgICAgIGhhc2hlci5hZGQobG9jYWxlLmlzTnVsbCgpID8gMCA6IGxvY2FsZS5leGlzdGlu
Z0hhc2goKSk7CisgICAgICAgICAgICBoYXNoZXIuYWRkKHdlaWdodCk7CisgICAgICAgICAgICBo
YXNoZXIuYWRkKHNpemUpOworICAgICAgICAgICAgaGFzaGVyLmFkZChzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oYWxsb3dVc2VySW5zdGFsbGVkRm9udHMpKTsKKyAgICAgICAgICAgIGhhc2hlci5hZGQo
aXRhbGljKTsKKyAgICAgICAgICAgIHJldHVybiBoYXNoZXIuaGFzaCgpOworICAgICAgICB9CisK
KyAgICAgICAgc3RydWN0IENhc2NhZGVMaXN0UGFyYW1ldGVyc0hhc2ggOiBXVEY6OlBhaXJIYXNo
PEF0b21pY1N0cmluZywgZmxvYXQ+IHsKKyAgICAgICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNo
KGNvbnN0IENhc2NhZGVMaXN0UGFyYW1ldGVycyYgcGFyYW1ldGVycykKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICByZXR1cm4gcGFyYW1ldGVycy5oYXNoKCk7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBDYXNjYWRlTGlzdFBhcmFtZXRl
cnMmIGEsIGNvbnN0IENhc2NhZGVMaXN0UGFyYW1ldGVycyYgYikKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gYSA9PSBiOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
c3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSB0cnVlOwor
ICAgICAgICB9OworCisgICAgICAgIEF0b21pY1N0cmluZyBmb250TmFtZTsKKyAgICAgICAgQXRv
bWljU3RyaW5nIGxvY2FsZTsKKyAgICAgICAgQ0dGbG9hdCB3ZWlnaHQgeyAwIH07CisgICAgICAg
IGZsb2F0IHNpemUgeyAwIH07CisgICAgICAgIEFsbG93VXNlckluc3RhbGxlZEZvbnRzIGFsbG93
VXNlckluc3RhbGxlZEZvbnRzIHsgQWxsb3dVc2VySW5zdGFsbGVkRm9udHM6Ok5vIH07CisgICAg
ICAgIGJvb2wgaXRhbGljIHsgZmFsc2UgfTsKKyAgICB9OworCisgICAgc3RhdGljIFN5c3RlbUZv
bnREYXRhYmFzZUNvcmVUZXh0JiBzaW5nbGV0b24oKTsKKworICAgIGVudW0gY2xhc3MgQ2xpZW50
VXNlIHsgRm9yU3lzdGVtVUksIEZvclRleHRTdHlsZSB9OworCisgICAgVmVjdG9yPFJldGFpblB0
cjxDVEZvbnREZXNjcmlwdG9yUmVmPj4gY2FzY2FkZUxpc3QoY29uc3QgRm9udENhc2NhZGVEZXNj
cmlwdGlvbiYsIGNvbnN0IEF0b21pY1N0cmluZyYgY3NzRmFtaWx5LCBDbGllbnRVc2UsIEFsbG93
VXNlckluc3RhbGxlZEZvbnRzKTsKKyAgICB2b2lkIGNsZWFyKCk7CisKK3ByaXZhdGU6CisgICAg
U3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQoKTsKKworICAgIFZlY3RvcjxSZXRhaW5QdHI8Q1RG
b250RGVzY3JpcHRvclJlZj4+IGNhc2NhZGVMaXN0KGNvbnN0IENhc2NhZGVMaXN0UGFyYW1ldGVy
cyYsIENsaWVudFVzZSk7CisKKyAgICBzdGF0aWMgUmV0YWluUHRyPENURm9udFJlZj4gYXBwbHlX
ZWlnaHRJdGFsaWNzQW5kRmFsbGJhY2tCZWhhdmlvcihDVEZvbnRSZWYsIENHRmxvYXQgd2VpZ2h0
LCBib29sIGl0YWxpYywgZmxvYXQgc2l6ZSwgQWxsb3dVc2VySW5zdGFsbGVkRm9udHMpOworICAg
IHN0YXRpYyBSZXRhaW5QdHI8Q1RGb250RGVzY3JpcHRvclJlZj4gcmVtb3ZlQ2FzY2FkZUxpc3Qo
Q1RGb250RGVzY3JpcHRvclJlZik7CisgICAgc3RhdGljIFZlY3RvcjxSZXRhaW5QdHI8Q1RGb250
RGVzY3JpcHRvclJlZj4+IGNvbXB1dGVDYXNjYWRlTGlzdChDVEZvbnRSZWYsIENGU3RyaW5nUmVm
IGxvY2FsZSk7CisgICAgc3RhdGljIENhc2NhZGVMaXN0UGFyYW1ldGVycyBzeXN0ZW1Gb250UGFy
YW1ldGVycyhjb25zdCBGb250Q2FzY2FkZURlc2NyaXB0aW9uJiwgY29uc3QgQXRvbWljU3RyaW5n
JiBmYW1pbHlOYW1lLCBDbGllbnRVc2UsIEFsbG93VXNlckluc3RhbGxlZEZvbnRzKTsKKworICAg
IEhhc2hNYXA8Q2FzY2FkZUxpc3RQYXJhbWV0ZXJzLCBWZWN0b3I8UmV0YWluUHRyPENURm9udERl
c2NyaXB0b3JSZWY+PiwgQ2FzY2FkZUxpc3RQYXJhbWV0ZXJzOjpDYXNjYWRlTGlzdFBhcmFtZXRl
cnNIYXNoLCBTaW1wbGVDbGFzc0hhc2hUcmFpdHM8Q2FzY2FkZUxpc3RQYXJhbWV0ZXJzPj4gbV9z
eXN0ZW1Gb250Q2FjaGU7Cit9OworCit9CisKKyNlbmRpZgo=
</data>
<flag name="commit-queue"
          id="369135"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>351807</attachid>
            <date>2018-10-08 12:53:28 -0700</date>
            <delta_ts>2018-10-08 13:37:34 -0700</delta_ts>
            <desc>patch</desc>
            <filename>systemfontdatabase-file-8.patch</filename>
            <type>text/plain</type>
            <size>40520</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzNjkyNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU5IEBACisyMDE4LTEwLTA4ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIFN5c3RlbUZvbnREYXRh
YmFzZSB0byBhIGZpbGUgb2YgaXRzIG93bgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTkwMzQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRHVt
ZXouCisKKyAgICAgICAgQWxzbyByZW5hbWUgaXQgdG8gU3lzdGVtRm9udERhdGFiYXNlQ29yZVRl
eHQgYXMgaXQgaXMgQ29yZVRleHQgc3BlY2lmaWMuCisKKyAgICAgICAgKiBTb3VyY2VzQ29jb2Eu
dHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBwYWdlL01lbW9yeVJlbGVhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVsZWFzZU5v
bmNyaXRpY2FsTWVtb3J5KToKKyAgICAgICAgKiBwYWdlL2NvY29hL01lbW9yeVJlbGVhc2VDb2Nv
YS5tbToKKworICAgICAgICBSZWxlYXNlIFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0IGRpcmVj
dGx5IGZyb20gcGxhdGZvcm0gc3BlY2lmaWMgY2xlYW51cCBjb2RlLgorCisgICAgICAgIChXZWJD
b3JlOjpwbGF0Zm9ybVJlbGVhc2VNZW1vcnkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL0ZvbnREZXNjcmlwdGlvbkNvY29hLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRE
ZXNjcmlwdGlvbjo6aW52YWxpZGF0ZUNhY2hlcyk6CisgICAgICAgIChXZWJDb3JlOjpzeXN0ZW1G
b250Q2FzY2FkZUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGVEZXNjcmlwdGlv
bjo6ZWZmZWN0aXZlRmFtaWx5Q291bnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENh
c2NhZGVEZXNjcmlwdGlvbjo6ZWZmZWN0aXZlRmFtaWx5QXQgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6U3lzdGVtRm9udERhdGFiYXNlOjpDb3JlVGV4dENhc2NhZGVMaXN0UGFyYW1ldGVyczo6
Q29yZVRleHRDYXNjYWRlTGlzdFBhcmFtZXRlcnMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6U3lzdGVtRm9udERhdGFiYXNlOjpDb3JlVGV4dENhc2NhZGVMaXN0UGFyYW1ldGVyczo6aXNI
YXNoVGFibGVEZWxldGVkVmFsdWUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
U3lzdGVtRm9udERhdGFiYXNlOjpDb3JlVGV4dENhc2NhZGVMaXN0UGFyYW1ldGVyczo6b3BlcmF0
b3I9PSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTeXN0ZW1Gb250RGF0YWJh
c2U6OkNvcmVUZXh0Q2FzY2FkZUxpc3RQYXJhbWV0ZXJzOjpoYXNoIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlN5c3RlbUZvbnREYXRhYmFzZTo6Q29yZVRleHRDYXNjYWRlTGlz
dFBhcmFtZXRlcnM6OkNvcmVUZXh0Q2FzY2FkZUxpc3RQYXJhbWV0ZXJzSGFzaDo6aGFzaCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTeXN0ZW1Gb250RGF0YWJhc2U6OkNvcmVUZXh0Q2Fz
Y2FkZUxpc3RQYXJhbWV0ZXJzOjpDb3JlVGV4dENhc2NhZGVMaXN0UGFyYW1ldGVyc0hhc2g6OmVx
dWFsKTogRGVsZXRlZC4KKyAgICAgICAgKCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpT
eXN0ZW1Gb250RGF0YWJhc2U6OnNpbmdsZXRvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpTeXN0ZW1Gb250RGF0YWJhc2U6OnN5c3RlbUZvbnRDYXNjYWRlTGlzdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpTeXN0ZW1Gb250RGF0YWJhc2U6OmNsZWFyKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlN5c3RlbUZvbnREYXRhYmFzZTo6U3lzdGVtRm9udERhdGFiYXNlKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlN5c3RlbUZvbnREYXRhYmFzZTo6YXBwbHlXZWln
aHRJdGFsaWNzQW5kRmFsbGJhY2tCZWhhdmlvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpTeXN0ZW1Gb250RGF0YWJhc2U6OnJlbW92ZUNhc2NhZGVMaXN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlN5c3RlbUZvbnREYXRhYmFzZTo6Y29tcHV0ZUNhc2NhZGVMaXN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnN5c3RlbUZvbnRQYXJhbWV0ZXJzKTogRGVsZXRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9TeXN0ZW1Gb250RGF0YWJhc2VDb3Jl
VGV4dC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U3lzdGVtRm9udERhdGFiYXNlQ29y
ZVRleHQ6OnNpbmdsZXRvbik6CisgICAgICAgIChXZWJDb3JlOjpTeXN0ZW1Gb250RGF0YWJhc2VD
b3JlVGV4dDo6U3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQpOgorICAgICAgICAoV2ViQ29yZTo6
U3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQ6OnN5c3RlbUZvbnRDYXNjYWRlTGlzdCk6CisgICAg
ICAgIChXZWJDb3JlOjpTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dDo6Y2xlYXIpOgorICAgICAg
ICAoV2ViQ29yZTo6U3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQ6OmFwcGx5V2VpZ2h0SXRhbGlj
c0FuZEZhbGxiYWNrQmVoYXZpb3IpOgorICAgICAgICAoV2ViQ29yZTo6U3lzdGVtRm9udERhdGFi
YXNlQ29yZVRleHQ6OnJlbW92ZUNhc2NhZGVMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN5c3Rl
bUZvbnREYXRhYmFzZUNvcmVUZXh0Ojpjb21wdXRlQ2FzY2FkZUxpc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6U3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQ6OnN5c3RlbUZvbnRQYXJhbWV0ZXJzKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9TeXN0ZW1Gb250RGF0YWJhc2VDb3Jl
VGV4dC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlN5c3RlbUZvbnREYXRhYmFzZUNvcmVU
ZXh0OjpDYXNjYWRlTGlzdFBhcmFtZXRlcnM6OkNhc2NhZGVMaXN0UGFyYW1ldGVycyk6CisgICAg
ICAgIChXZWJDb3JlOjpTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dDo6Q2FzY2FkZUxpc3RQYXJh
bWV0ZXJzOjppc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dDo6Q2FzY2FkZUxpc3RQYXJhbWV0ZXJzOjpvcGVy
YXRvcj09IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN5c3RlbUZvbnREYXRhYmFzZUNvcmVU
ZXh0OjpDYXNjYWRlTGlzdFBhcmFtZXRlcnM6Omhhc2ggY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQ6OkNhc2NhZGVMaXN0UGFyYW1ldGVyczo6Q2Fz
Y2FkZUxpc3RQYXJhbWV0ZXJzSGFzaDo6aGFzaCk6CisgICAgICAgIChXZWJDb3JlOjpTeXN0ZW1G
b250RGF0YWJhc2VDb3JlVGV4dDo6Q2FzY2FkZUxpc3RQYXJhbWV0ZXJzOjpDYXNjYWRlTGlzdFBh
cmFtZXRlcnNIYXNoOjplcXVhbCk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMuY3BwOgorCiAyMDE4LTEwLTA4ICBBbmR5IEVz
dGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBbUGF5bWVudCBSZXF1ZXN0XSBSZXF1
ZXN0cyBzaG91bGQgYmUgYWJvcnRlZCBhZnRlciBkZXRhaWxzIHNldHRsZSB3aGVuIHRoZSB1c2Vy
IGNhbmNlbHMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAkocmV2aXNpb24gMjM2OTE0KQor
KysgU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMzA2
LDYgKzMwNiw3IEBAIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0hFVkNVdGlsaXRpZXNDb2MKIHBs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvSU9TdXJmYWNlUG9vbENvY29hLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9NZWRpYUVu
Z2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5Q29jb2EuY3BwCitwbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9TeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dC5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L1dlYkFjdGlvbkRpc2FibGluZ0NBTGF5ZXJEZWxlZ2F0ZS5tbQogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvV2ViQ29yZUNBTGF5ZXJFeHRyYXMubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dl
YkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbi5tbQpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjM2OTE0KQorKysg
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5n
IGNvcHkpCkBAIC00ODExLDYgKzQ4MTEsNyBAQAogCQlFNERFQUExODE3QTkzREMzMDAwRTA0MzAg
LyogU3R5bGVUcmVlUmVzb2x2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEU0REVBQTE2MTdBOTNEQzMwMDBFMDQzMCAvKiBTdHlsZVRyZWVSZXNvbHZl
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUU0
RTI0MzgzMURBQjk1M0UwMEMyNkU0QiAvKiBtZXRlckVsZW1lbnRTaGFkb3cuY3NzIGluIFJlc291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEUyNDM4MjFEQUI5NTNF
MDBDMjZFNEIgLyogbWV0ZXJFbGVtZW50U2hhZG93LmNzcyAqLzsgfTsKIAkJRTRFMzlBRkIxMzMw
RUZBODAwM0FCMjc0IC8qIExlZ2FjeVRpbGVMYXllclBvb2wuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0RTM5QUZBMTMzMEVGQTgwMDNBQjI3NCAvKiBM
ZWdhY3lUaWxlTGF5ZXJQb29sLmggKi87IH07CisJCUU0RThCNEVDMjE2Qjc5RTUwMEI4ODM0RCAv
KiBTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTRFOEI0RUEyMTZCNzlFNTAwQjg4MzREIC8qIFN5c3RlbUZv
bnREYXRhYmFzZUNvcmVUZXh0LmggKi87IH07CiAJCUU0RThCNEY1MjE2Qjk1NjUwMEI4ODM0RCAv
KiBGb250Q2FzY2FkZURlc2NyaXB0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFNEU4QjRGMjIxNkI4QjYwMDBCODgzNEQgLyogRm9udENhc2NhZGVE
ZXNjcmlwdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUU0RTlCMTE5MTgxMDkxNkYwMDNBQ0NERiAvKiBTaW1wbGVMaW5lTGF5b3V0UmVzb2x2
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0RTlC
MTE4MTgxMDkxNkYwMDNBQ0NERiAvKiBTaW1wbGVMaW5lTGF5b3V0UmVzb2x2ZXIuaCAqLzsgfTsK
IAkJRTRFOUIxMUQxODE0NTY5QzAwM0FDQ0RGIC8qIFNpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0RTlCMTFD
MTgxNDU2OUMwMDNBQ0NERiAvKiBTaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmggKi87IH07CkBA
IC0xNDU0OCw2ICsxNDU0OSw4IEBACiAJCUU0RTI0MzgyMURBQjk1M0UwMEMyNkU0QiAvKiBtZXRl
ckVsZW1lbnRTaGFkb3cuY3NzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5jc3M7IHBhdGggPSBtZXRlckVsZW1l
bnRTaGFkb3cuY3NzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNEUzOUFGQTEzMzBF
RkE4MDAzQUIyNzQgLyogTGVnYWN5VGlsZUxheWVyUG9vbC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBMZWdhY3lUaWxlTGF5ZXJQb29sLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUU0RTM5QUZDMTMzMEVGQzUwMDNBQjI3NCAvKiBMZWdhY3lUaWxlTGF5ZXJQb29s
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTGVnYWN5VGlsZUxh
eWVyUG9vbC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTRFOEI0RUEyMTZCNzlF
NTAwQjg4MzREIC8qIFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUU0RThCNEVEMjE2Qjc5RjQwMEI4ODM0RCAvKiBTeXN0ZW1G
b250RGF0YWJhc2VDb3JlVGV4dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUU0RThCNEYwMjE2QjhCNUYwMEI4ODM0RCAvKiBGb250Q2FzY2FkZURlc2NyaXB0
aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvbnRDYXNjYWRl
RGVzY3JpcHRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNEU4QjRGMjIx
NkI4QjYwMDBCODgzNEQgLyogRm9udENhc2NhZGVEZXNjcmlwdGlvbi5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBGb250Q2FzY2FkZURlc2NyaXB0aW9uLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUU0RTlCMTE4MTgxMDkxNkYwMDNBQ0NERiAvKiBTaW1wbGVMaW5l
TGF5b3V0UmVzb2x2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2ltcGxl
TGluZUxheW91dFJlc29sdmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNDAy
NSw2ICsyNDAyOCw4IEBACiAJCQkJQUQ5RkY2RTAxOTA4MzkxRDAwM0I2MUUwIC8qIElPU3VyZmFj
ZVBvb2xDb2NvYS5tbSAqLywKIAkJCQlDREM0OEFDODIxNDlDRjJBMDAyNEZENTkgLyogTWVkaWFF
bmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeUNvY29hLmNwcCAqLywKIAkJCQlDREM0OEFDNzIxNDlD
RjJBMDAyNEZENTkgLyogTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeUNvY29hLmggKi8s
CisJCQkJRTRFOEI0RUQyMTZCNzlGNDAwQjg4MzREIC8qIFN5c3RlbUZvbnREYXRhYmFzZUNvcmVU
ZXh0LmNwcCAqLywKKwkJCQlFNEU4QjRFQTIxNkI3OUU1MDBCODgzNEQgLyogU3lzdGVtRm9udERh
dGFiYXNlQ29yZVRleHQuaCAqLywKIAkJCQk1MjY3MjRGMjFDQjJGREY2MDA3NTk3NEQgLyogVGV4
dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYS5oICovLAogCQkJCTUyNjcyNEYxMUNCMkZERjYwMDc1
OTc0RCAvKiBUZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29hLm1tICovLAogCQkJCTJEM0VGNDQ0
MTkxNzkxNUMwMDAzNDE4NCAvKiBXZWJBY3Rpb25EaXNhYmxpbmdDQUxheWVyRGVsZWdhdGUuaCAq
LywKQEAgLTI3NDkzLDYgKzI3NDk4LDcgQEAKIAkJCQk1NzMwM0JCQjIwMDZDNkVFMDAzNTU5NjUg
LyogQ0JPUkJpbmFyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTczMDNCQzEyMDA2RTAwQzAwMzU1
OTY1IC8qIENCT1JSZWFkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3MzAzQkI5MjAwNkM2RUUw
MDM1NTk2NSAvKiBDQk9SVmFsdWUuaCBpbiBIZWFkZXJzICovLAorCQkJCUU0RThCNEVDMjE2Qjc5
RTUwMEI4ODM0RCAvKiBTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNTczMDNCQkEyMDA2QzZFRTAwMzU1OTY1IC8qIENCT1JXcml0ZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTY1NTBCNjlFMDk5REYwMjcwMDkwRDc4MSAvKiBDREFUQVNlY3Rpb24uaCBpbiBI
ZWFkZXJzICovLAogCQkJCUNERjRCNzE2MUUwMEI3RTUwMEUyMzVBMiAvKiBDRE0uaCBpbiBIZWFk
ZXJzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9NZW1vcnlSZWxlYXNlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL01lbW9yeVJlbGVhc2UuY3BwCShyZXZpc2lv
biAyMzY5MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL01lbW9yeVJlbGVhc2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC02Myw3ICs2Myw2IEBAIHN0YXRpYyB2b2lkIHJlbGVhc2VOb25jcml0aWNh
bE1lbW9yeSgpCiAgICAgUmVuZGVyVGhlbWU6OnNpbmdsZXRvbigpLnB1cmdlQ2FjaGVzKCk7CiAK
ICAgICBGb250Q2FjaGU6OnNpbmdsZXRvbigpLnB1cmdlSW5hY3RpdmVGb250RGF0YSgpOwotICAg
IEZvbnREZXNjcmlwdGlvbjo6aW52YWxpZGF0ZUNhY2hlcygpOwogCiAgICAgY2xlYXJXaWR0aENh
Y2hlcygpOwogICAgIFRleHRQYWludGVyOjpjbGVhckdseXBoRGlzcGxheUxpc3RzKCk7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL01lbW9yeVJlbGVhc2VDb2NvYS5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL01lbW9yeVJlbGVhc2VDb2NvYS5tbQko
cmV2aXNpb24gMjM2OTE0KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9NZW1vcnlSZWxl
YXNlQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpbXBvcnQgIkdD
Q29udHJvbGxlci5oIgogI2ltcG9ydCAiSU9TdXJmYWNlUG9vbC5oIgogI2ltcG9ydCAiTGF5ZXJQ
b29sLmgiCisjaW1wb3J0ICJTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dC5oIgogI2ltcG9ydCA8
bm90aWZ5Lmg+CiAjaW1wb3J0IDxwYWwvc3BpL2lvcy9HcmFwaGljc1NlcnZpY2VzU1BJLmg+CiAK
QEAgLTQyLDYgKzQzLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBwbGF0Zm9ybVJl
bGVhc2VNZW1vcnkoQ3JpdGljYWwpCiB7CisjaWYgVVNFX1BMQVRGT1JNX1NZU1RFTV9GQUxMQkFD
S19MSVNUCisgICAgU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQ6OnNpbmdsZXRvbigpLmNsZWFy
KCk7CisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKElPUykgJiYgIVBMQVRGT1JNKElPU19TSU1VTEFU
T1IpICYmICFQTEFURk9STShJT1NNQUMpCiAgICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIGNhbGwg
dG8gR1NGb250SW5pdGlhbGl6ZSgpIG9uY2UgPHJkYXI6Ly9wcm9ibGVtLzMyODg2NzE1PiBpcyBm
aXhlZC4KICAgICBHU0ZvbnRJbml0aWFsaXplKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250RGVzY3JpcHRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnREZXNjcmlwdGlvbi5jcHAJKHJldmlzaW9uIDIz
NjkxNCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnREZXNjcmlwdGlv
bi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcxLDEwICs3MSw0IEBAIHZvaWQgRm9udERlc2NyaXB0
aW9uOjpzZXRMb2NhbGUoY29uc3QgQXQKICAgICBtX3NjcmlwdCA9IGxvY2FsZVRvU2NyaXB0Q29k
ZUZvckZvbnRTZWxlY3Rpb24obV9sb2NhbGUpOwogfQogCi0jaWYgIVVTRV9QTEFURk9STV9TWVNU
RU1fRkFMTEJBQ0tfTElTVAotdm9pZCBGb250RGVzY3JpcHRpb246OmludmFsaWRhdGVDYWNoZXMo
KQotewotfQotI2VuZGlmCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnREZXNjcmlwdGlvbi5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnREZXNjcmlwdGlvbi5oCShyZXZp
c2lvbiAyMzY5MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250RGVz
Y3JpcHRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMTMzLDggKzEzMyw2IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldEZvbnRTdHlsZUF4aXMoRm9udFN0eWxlQXhpcyBheGlzKSB7IG1fZm9udFN0eWxl
QXhpcyA9IGF4aXMgPT0gRm9udFN0eWxlQXhpczo6aXRhbDsgfQogICAgIHZvaWQgc2V0U2hvdWxk
QWxsb3dVc2VySW5zdGFsbGVkRm9udHMoQWxsb3dVc2VySW5zdGFsbGVkRm9udHMgc2hvdWxkQWxs
b3dVc2VySW5zdGFsbGVkRm9udHMpIHsgbV9zaG91bGRBbGxvd1VzZXJJbnN0YWxsZWRGb250cyA9
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaG91bGRBbGxvd1VzZXJJbnN0YWxsZWRGb250cyk7IH0K
IAotICAgIHN0YXRpYyB2b2lkIGludmFsaWRhdGVDYWNoZXMoKTsKLQogcHJpdmF0ZToKICAgICAv
LyBGSVhNRTogSW52ZXN0aWdhdGUgbW92aW5nIHRoZXNlIGludG8gdGhlaXIgb3duIG9iamVjdCBv
biB0aGUgaGVhcCAodG8gc2F2ZSBtZW1vcnkpLgogICAgIEZvbnRGZWF0dXJlU2V0dGluZ3MgbV9m
ZWF0dXJlU2V0dGluZ3M7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwCShyZXZpc2lvbiAy
MzY5MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2Fj
aGVDb3JlVGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRl
ICJGb250Q2FjaGUuaCIKIAogI2luY2x1ZGUgIkZvbnQuaCIKKyNpbmNsdWRlICJTeXN0ZW1Gb250
RGF0YWJhc2VDb3JlVGV4dC5oIgogI2luY2x1ZGUgPHBhbC9zcGkvY29jb2EvQ29yZVRleHRTUEku
aD4KIAogI2luY2x1ZGUgPENvcmVUZXh0L1NGTlRMYXlvdXRUeXBlcy5oPgpAQCAtMTE4Niw3ICsx
MTg3LDkgQEAgc3RhdGljIHZvaWQgaW52YWxpZGF0ZUZvbnRDYWNoZSgpCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBGb250RGVzY3JpcHRpb246OmludmFsaWRhdGVDYWNoZXMoKTsKKyNp
ZiBVU0VfUExBVEZPUk1fU1lTVEVNX0ZBTExCQUNLX0xJU1QKKyAgICBTeXN0ZW1Gb250RGF0YWJh
c2VDb3JlVGV4dDo6c2luZ2xldG9uKCkuY2xlYXIoKTsKKyNlbmRpZgogCiAgICAgRm9udERhdGFi
YXNlOjpzaW5nbGV0b25BbGxvd2luZ1VzZXJJbnN0YWxsZWRGb250cygpLmNsZWFyKCk7CiAgICAg
Rm9udERhdGFiYXNlOjpzaW5nbGV0b25EaXNhbGxvd2luZ1VzZXJJbnN0YWxsZWRGb250cygpLmNs
ZWFyKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250
RGVzY3JpcHRpb25Db2NvYS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvRm9udERlc2NyaXB0aW9uQ29jb2EuY3BwCShyZXZpc2lvbiAyMzY5
MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RGVzY3Jp
cHRpb25Db2NvYS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDE3NSArMjYsMTIgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJGb250RGVzY3JpcHRpb24uaCIKIAotI2luY2x1ZGUg
IkZvbnRDYWNoZS5oIgotI2luY2x1ZGUgIkZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHQu
aCIKLSNpbmNsdWRlIDxwYWwvc3BpL2NvY29hL0NvcmVUZXh0U1BJLmg+Ci0jaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0cy5oPgotI2luY2x1ZGUgPHd0Zi90
ZXh0L0F0b21pY1N0cmluZy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZ0hhc2gu
aD4KLQotI2lmIFBMQVRGT1JNKElPUykKLSNpbmNsdWRlICJSZW5kZXJUaGVtZUlPUy5oIgotI2Vu
ZGlmCisjaW5jbHVkZSAiU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQuaCIKIAogI2lmIFVTRV9Q
TEFURk9STV9TWVNURU1fRkFMTEJBQ0tfTElTVAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNs
YXNzIFN5c3RlbUZvbnREYXRhYmFzZSB7Ci1wdWJsaWM6Ci0gICAgc3RydWN0IENvcmVUZXh0Q2Fz
Y2FkZUxpc3RQYXJhbWV0ZXJzIHsKLSAgICAgICAgQ29yZVRleHRDYXNjYWRlTGlzdFBhcmFtZXRl
cnMoKQotICAgICAgICB7Ci0gICAgICAgIH0KLQotICAgICAgICBDb3JlVGV4dENhc2NhZGVMaXN0
UGFyYW1ldGVycyhXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpCi0gICAgICAgICAgICA6
IGZvbnROYW1lKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKQotICAgICAgICB7Ci0gICAgICAg
IH0KLQotICAgICAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QKLSAgICAg
ICAgewotICAgICAgICAgICAgcmV0dXJuIGZvbnROYW1lLmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVl
KCk7Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ29yZVRleHRD
YXNjYWRlTGlzdFBhcmFtZXRlcnMmIG90aGVyKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAg
ICByZXR1cm4gZm9udE5hbWUgPT0gb3RoZXIuZm9udE5hbWUKLSAgICAgICAgICAgICAgICAmJiBs
b2NhbGUgPT0gb3RoZXIubG9jYWxlCi0gICAgICAgICAgICAgICAgJiYgd2VpZ2h0ID09IG90aGVy
LndlaWdodAotICAgICAgICAgICAgICAgICYmIHNpemUgPT0gb3RoZXIuc2l6ZQotICAgICAgICAg
ICAgICAgICYmIGFsbG93VXNlckluc3RhbGxlZEZvbnRzID09IG90aGVyLmFsbG93VXNlckluc3Rh
bGxlZEZvbnRzCi0gICAgICAgICAgICAgICAgJiYgaXRhbGljID09IG90aGVyLml0YWxpYzsKLSAg
ICAgICAgfQotCi0gICAgICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdAotICAgICAgICB7Ci0gICAg
ICAgICAgICBJbnRlZ2VySGFzaGVyIGhhc2hlcjsKLSAgICAgICAgICAgIEFTU0VSVCghZm9udE5h
bWUuaXNOdWxsKCkpOwotICAgICAgICAgICAgaGFzaGVyLmFkZChsb2NhbGUuZXhpc3RpbmdIYXNo
KCkpOwotICAgICAgICAgICAgaGFzaGVyLmFkZChsb2NhbGUuaXNOdWxsKCkgPyAwIDogbG9jYWxl
LmV4aXN0aW5nSGFzaCgpKTsKLSAgICAgICAgICAgIGhhc2hlci5hZGQod2VpZ2h0KTsKLSAgICAg
ICAgICAgIGhhc2hlci5hZGQoc2l6ZSk7Ci0gICAgICAgICAgICBoYXNoZXIuYWRkKHN0YXRpY19j
YXN0PHVuc2lnbmVkPihhbGxvd1VzZXJJbnN0YWxsZWRGb250cykpOwotICAgICAgICAgICAgaGFz
aGVyLmFkZChpdGFsaWMpOwotICAgICAgICAgICAgcmV0dXJuIGhhc2hlci5oYXNoKCk7Ci0gICAg
ICAgIH0KLQotICAgICAgICBzdHJ1Y3QgQ29yZVRleHRDYXNjYWRlTGlzdFBhcmFtZXRlcnNIYXNo
IDogV1RGOjpQYWlySGFzaDxBdG9taWNTdHJpbmcsIGZsb2F0PiB7Ci0gICAgICAgICAgICBzdGF0
aWMgdW5zaWduZWQgaGFzaChjb25zdCBDb3JlVGV4dENhc2NhZGVMaXN0UGFyYW1ldGVycyYgcGFy
YW1ldGVycykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gcGFyYW1ldGVy
cy5oYXNoKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChj
b25zdCBDb3JlVGV4dENhc2NhZGVMaXN0UGFyYW1ldGVycyYgYSwgY29uc3QgQ29yZVRleHRDYXNj
YWRlTGlzdFBhcmFtZXRlcnMmIGIpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIGEgPT0gYjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBib29s
IHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gdHJ1ZTsKLSAgICAgICAgfTsKLQotICAg
ICAgICBBdG9taWNTdHJpbmcgZm9udE5hbWU7Ci0gICAgICAgIEF0b21pY1N0cmluZyBsb2NhbGU7
Ci0gICAgICAgIENHRmxvYXQgd2VpZ2h0IHsgMCB9OwotICAgICAgICBmbG9hdCBzaXplIHsgMCB9
OwotICAgICAgICBBbGxvd1VzZXJJbnN0YWxsZWRGb250cyBhbGxvd1VzZXJJbnN0YWxsZWRGb250
cyB7IEFsbG93VXNlckluc3RhbGxlZEZvbnRzOjpObyB9OwotICAgICAgICBib29sIGl0YWxpYyB7
IGZhbHNlIH07Ci0gICAgfTsKLQotICAgIHN0YXRpYyBTeXN0ZW1Gb250RGF0YWJhc2UmIHNpbmds
ZXRvbigpCi0gICAgewotICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3lzdGVtRm9udERh
dGFiYXNlPiBkYXRhYmFzZSA9IFN5c3RlbUZvbnREYXRhYmFzZSgpOwotICAgICAgICByZXR1cm4g
ZGF0YWJhc2UuZ2V0KCk7Ci0gICAgfQotCi0gICAgZW51bSBjbGFzcyBDbGllbnRVc2UgeyBGb3JT
eXN0ZW1VSSwgRm9yVGV4dFN0eWxlIH07Ci0KLSAgICBWZWN0b3I8UmV0YWluUHRyPENURm9udERl
c2NyaXB0b3JSZWY+PiBzeXN0ZW1Gb250Q2FzY2FkZUxpc3QoY29uc3QgQ29yZVRleHRDYXNjYWRl
TGlzdFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIENsaWVudFVzZSBjbGllbnRVc2UpCi0gICAgewot
ICAgICAgICBBU1NFUlQoIXBhcmFtZXRlcnMuZm9udE5hbWUuaXNOdWxsKCkpOwotICAgICAgICBy
ZXR1cm4gbV9zeXN0ZW1Gb250Q2FjaGUuZW5zdXJlKHBhcmFtZXRlcnMsIFsmXSB7Ci0gICAgICAg
ICAgICBhdXRvIGxvY2FsZVN0cmluZyA9IHBhcmFtZXRlcnMubG9jYWxlLnN0cmluZygpLmNyZWF0
ZUNGU3RyaW5nKCk7Ci0gICAgICAgICAgICBSZXRhaW5QdHI8Q1RGb250UmVmPiBzeXN0ZW1Gb250
OwotICAgICAgICAgICAgaWYgKGNsaWVudFVzZSA9PSBDbGllbnRVc2U6OkZvclN5c3RlbVVJKSB7
Ci0gICAgICAgICAgICAgICAgc3lzdGVtRm9udCA9IGFkb3B0Q0YoQ1RGb250Q3JlYXRlVUlGb250
Rm9yTGFuZ3VhZ2Uoa0NURm9udFVJRm9udFN5c3RlbSwgcGFyYW1ldGVycy5zaXplLCBsb2NhbGVT
dHJpbmcuZ2V0KCkpKTsKLSAgICAgICAgICAgICAgICBBU1NFUlQoc3lzdGVtRm9udCk7Ci0gICAg
ICAgICAgICAgICAgLy8gRklYTUU6IFVzZSBhcHBseVdlaWdodEl0YWxpY3NBbmRGYWxsYmFja0Jl
aGF2aW9yKCkgaW4gYm90aCBjYXNlcyBvbmNlIDxyZGFyOi8vcHJvYmxlbS8zMzA0NjA0MT4gaXMg
Zml4ZWQuCi0gICAgICAgICAgICAgICAgc3lzdGVtRm9udCA9IGFwcGx5V2VpZ2h0SXRhbGljc0Fu
ZEZhbGxiYWNrQmVoYXZpb3Ioc3lzdGVtRm9udC5nZXQoKSwgcGFyYW1ldGVycy53ZWlnaHQsIHBh
cmFtZXRlcnMuaXRhbGljLCBwYXJhbWV0ZXJzLnNpemUsIHBhcmFtZXRlcnMuYWxsb3dVc2VySW5z
dGFsbGVkRm9udHMpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSNpZiBQTEFURk9STShJT1MpCi0g
ICAgICAgICAgICAgICAgQVNTRVJUKGNsaWVudFVzZSA9PSBDbGllbnRVc2U6OkZvclRleHRTdHls
ZSk7Ci0gICAgICAgICAgICAgICAgYXV0byBmb250RGVzY3JpcHRvciA9IGFkb3B0Q0YoQ1RGb250
RGVzY3JpcHRvckNyZWF0ZVdpdGhUZXh0U3R5bGUocGFyYW1ldGVycy5mb250TmFtZS5zdHJpbmco
KS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBSZW5kZXJUaGVtZUlPUzo6Y29udGVudFNpemVDYXRl
Z29yeSgpLCBudWxscHRyKSk7Ci0gICAgICAgICAgICAgICAgQ1RGb250U3ltYm9saWNUcmFpdHMg
dHJhaXRzID0gKHBhcmFtZXRlcnMud2VpZ2h0ID49IGtDVEZvbnRXZWlnaHRTZW1pYm9sZCA/IGtD
VEZvbnRUcmFpdEJvbGQgOiAwKSB8IChwYXJhbWV0ZXJzLml0YWxpYyA/IGtDVEZvbnRUcmFpdEl0
YWxpYyA6IDApOwotICAgICAgICAgICAgICAgIGlmICh0cmFpdHMpCi0gICAgICAgICAgICAgICAg
ICAgIGZvbnREZXNjcmlwdG9yID0gYWRvcHRDRihDVEZvbnREZXNjcmlwdG9yQ3JlYXRlQ29weVdp
dGhTeW1ib2xpY1RyYWl0cyhmb250RGVzY3JpcHRvci5nZXQoKSwgdHJhaXRzLCB0cmFpdHMpKTsK
LSAgICAgICAgICAgICAgICBzeXN0ZW1Gb250ID0gY3JlYXRlRm9udEZvckluc3RhbGxlZEZvbnRz
KGZvbnREZXNjcmlwdG9yLmdldCgpLCBwYXJhbWV0ZXJzLnNpemUsIHBhcmFtZXRlcnMuYWxsb3dV
c2VySW5zdGFsbGVkRm9udHMpOwotI2Vsc2UKLSAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLSNlbmRpZgotICAgICAgICAgICAgfQotICAgICAgICAgICAgQVNTRVJUKHN5c3Rl
bUZvbnQpOwotICAgICAgICAgICAgYXV0byByZXN1bHQgPSBjb21wdXRlQ2FzY2FkZUxpc3Qoc3lz
dGVtRm9udC5nZXQoKSwgbG9jYWxlU3RyaW5nLmdldCgpKTsKLSAgICAgICAgICAgIEFTU0VSVCgh
cmVzdWx0LmlzRW1wdHkoKSk7Ci0gICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgICB9
KS5pdGVyYXRvci0+dmFsdWU7Ci0gICAgfQotCi0gICAgdm9pZCBjbGVhcigpCi0gICAgewotICAg
ICAgICBtX3N5c3RlbUZvbnRDYWNoZS5jbGVhcigpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBT
eXN0ZW1Gb250RGF0YWJhc2UoKQotICAgIHsKLSAgICB9Ci0KLSAgICBzdGF0aWMgUmV0YWluUHRy
PENURm9udFJlZj4gYXBwbHlXZWlnaHRJdGFsaWNzQW5kRmFsbGJhY2tCZWhhdmlvcihDVEZvbnRS
ZWYgZm9udCwgQ0dGbG9hdCB3ZWlnaHQsIGJvb2wgaXRhbGljLCBmbG9hdCBzaXplLCBBbGxvd1Vz
ZXJJbnN0YWxsZWRGb250cyBhbGxvd1VzZXJJbnN0YWxsZWRGb250cykKLSAgICB7Ci0gICAgICAg
IGF1dG8gd2VpZ2h0TnVtYmVyID0gYWRvcHRDRihDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCBrQ0ZOdW1iZXJDR0Zsb2F0VHlwZSwgJndlaWdodCkpOwotICAgICAgICBjb25zdCBm
bG9hdCBzeXN0ZW1Gb250SXRhbGljU2xvcGUgPSAwLjA3OwotICAgICAgICBmbG9hdCBpdGFsaWNz
UmF3TnVtYmVyID0gaXRhbGljID8gc3lzdGVtRm9udEl0YWxpY1Nsb3BlIDogMDsKLSAgICAgICAg
YXV0byBpdGFsaWNzTnVtYmVyID0gYWRvcHRDRihDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCBrQ0ZOdW1iZXJGbG9hdFR5cGUsICZpdGFsaWNzUmF3TnVtYmVyKSk7Ci0gICAgICAg
IENGVHlwZVJlZiB0cmFpdHNLZXlzW10gPSB7IGtDVEZvbnRXZWlnaHRUcmFpdCwga0NURm9udFNs
YW50VHJhaXQsIGtDVEZvbnRVSUZvbnREZXNpZ25UcmFpdCB9OwotICAgICAgICBDRlR5cGVSZWYg
dHJhaXRzVmFsdWVzW10gPSB7IHdlaWdodE51bWJlci5nZXQoKSwgaXRhbGljc051bWJlci5nZXQo
KSwga0NGQm9vbGVhblRydWUgfTsKLSAgICAgICAgYXV0byB0cmFpdHNEaWN0aW9uYXJ5ID0gYWRv
cHRDRihDRkRpY3Rpb25hcnlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgdHJhaXRzS2V5cywg
dHJhaXRzVmFsdWVzLCBXVEZfQVJSQVlfTEVOR1RIKHRyYWl0c0tleXMpLCAma0NGVHlwZURpY3Rp
b25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7Ci0g
ICAgICAgIGF1dG8gYXR0cmlidXRlcyA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJs
ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3Ms
ICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7Ci0gICAgICAgIENGRGljdGlvbmFy
eUFkZFZhbHVlKGF0dHJpYnV0ZXMuZ2V0KCksIGtDVEZvbnRUcmFpdHNBdHRyaWJ1dGUsIHRyYWl0
c0RpY3Rpb25hcnkuZ2V0KCkpOwotICAgICAgICBhZGRBdHRyaWJ1dGVzRm9ySW5zdGFsbGVkRm9u
dHMoYXR0cmlidXRlcy5nZXQoKSwgYWxsb3dVc2VySW5zdGFsbGVkRm9udHMpOwotICAgICAgICBh
dXRvIG1vZGlmaWNhdGlvbiA9IGFkb3B0Q0YoQ1RGb250RGVzY3JpcHRvckNyZWF0ZVdpdGhBdHRy
aWJ1dGVzKGF0dHJpYnV0ZXMuZ2V0KCkpKTsKLSAgICAgICAgcmV0dXJuIGFkb3B0Q0YoQ1RGb250
Q3JlYXRlQ29weVdpdGhBdHRyaWJ1dGVzKGZvbnQsIHNpemUsIG51bGxwdHIsIG1vZGlmaWNhdGlv
bi5nZXQoKSkpOwotICAgIH0KLQotICAgIHN0YXRpYyBSZXRhaW5QdHI8Q1RGb250RGVzY3JpcHRv
clJlZj4gcmVtb3ZlQ2FzY2FkZUxpc3QoQ1RGb250RGVzY3JpcHRvclJlZiBmb250RGVzY3JpcHRv
cikKLSAgICB7Ci0gICAgICAgIGF1dG8gZW1wdHlBcnJheSA9IGFkb3B0Q0YoQ0ZBcnJheUNyZWF0
ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBudWxscHRyLCAwLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tz
KSk7Ci0gICAgICAgIENGVHlwZVJlZiBmYWxsYmFja0RpY3Rpb25hcnlLZXlzW10gPSB7IGtDVEZv
bnRDYXNjYWRlTGlzdEF0dHJpYnV0ZSB9OwotICAgICAgICBDRlR5cGVSZWYgZmFsbGJhY2tEaWN0
aW9uYXJ5VmFsdWVzW10gPSB7IGVtcHR5QXJyYXkuZ2V0KCkgfTsKLSAgICAgICAgYXV0byBmYWxs
YmFja0RpY3Rpb25hcnkgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZShrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCBmYWxsYmFja0RpY3Rpb25hcnlLZXlzLCBmYWxsYmFja0RpY3Rpb25hcnlWYWx1ZXMs
IFdURl9BUlJBWV9MRU5HVEgoZmFsbGJhY2tEaWN0aW9uYXJ5S2V5cyksICZrQ0ZUeXBlRGljdGlv
bmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKLSAg
ICAgICAgYXV0byBtb2RpZmllZEZvbnREZXNjcmlwdG9yID0gYWRvcHRDRihDVEZvbnREZXNjcmlw
dG9yQ3JlYXRlQ29weVdpdGhBdHRyaWJ1dGVzKGZvbnREZXNjcmlwdG9yLCBmYWxsYmFja0RpY3Rp
b25hcnkuZ2V0KCkpKTsKLSAgICAgICAgcmV0dXJuIG1vZGlmaWVkRm9udERlc2NyaXB0b3I7Ci0g
ICAgfQotCi0gICAgc3RhdGljIFZlY3RvcjxSZXRhaW5QdHI8Q1RGb250RGVzY3JpcHRvclJlZj4+
IGNvbXB1dGVDYXNjYWRlTGlzdChDVEZvbnRSZWYgZm9udCwgQ0ZTdHJpbmdSZWYgbG9jYWxlKQot
ICAgIHsKLSAgICAgICAgQ0ZUeXBlUmVmIGFycmF5VmFsdWVzW10gPSB7IGxvY2FsZSB9OwotICAg
ICAgICBhdXRvIGxvY2FsZUFycmF5ID0gYWRvcHRDRihDRkFycmF5Q3JlYXRlKGtDRkFsbG9jYXRv
ckRlZmF1bHQsIGFycmF5VmFsdWVzLCBXVEZfQVJSQVlfTEVOR1RIKGFycmF5VmFsdWVzKSwgJmtD
RlR5cGVBcnJheUNhbGxCYWNrcykpOwotICAgICAgICBhdXRvIGNhc2NhZGVMaXN0ID0gYWRvcHRD
RihDVEZvbnRDb3B5RGVmYXVsdENhc2NhZGVMaXN0Rm9yTGFuZ3VhZ2VzKGZvbnQsIGxvY2FsZUFy
cmF5LmdldCgpKSk7Ci0gICAgICAgIFZlY3RvcjxSZXRhaW5QdHI8Q1RGb250RGVzY3JpcHRvclJl
Zj4+IHJlc3VsdDsKLSAgICAgICAgLy8gV2ViS2l0IGhhbmRsZXMgdGhlIGNhc2NhZGUgbGlzdCwg
YW5kIFdlYktpdCAyJ3MgSVBDIGNvZGUgZG9lc24ndCBrbm93IGhvdyB0byBzZXJpYWxpemUgQ29y
ZSBUZXh0J3MgY2FzY2FkZSBsaXN0LgotICAgICAgICByZXN1bHQuYXBwZW5kKHJlbW92ZUNhc2Nh
ZGVMaXN0KGFkb3B0Q0YoQ1RGb250Q29weUZvbnREZXNjcmlwdG9yKGZvbnQpKS5nZXQoKSkpOwot
ICAgICAgICBpZiAoY2FzY2FkZUxpc3QpIHsKLSAgICAgICAgICAgIENGSW5kZXggYXJyYXlMZW5n
dGggPSBDRkFycmF5R2V0Q291bnQoY2FzY2FkZUxpc3QuZ2V0KCkpOwotICAgICAgICAgICAgZm9y
IChDRkluZGV4IGkgPSAwOyBpIDwgYXJyYXlMZW5ndGg7ICsraSkKLSAgICAgICAgICAgICAgICBy
ZXN1bHQuYXBwZW5kKHN0YXRpY19jYXN0PENURm9udERlc2NyaXB0b3JSZWY+KENGQXJyYXlHZXRW
YWx1ZUF0SW5kZXgoY2FzY2FkZUxpc3QuZ2V0KCksIGkpKSk7Ci0gICAgICAgIH0KLSAgICAgICAg
cmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0KLSAgICBIYXNoTWFwPENvcmVUZXh0Q2FzY2FkZUxpc3RQ
YXJhbWV0ZXJzLCBWZWN0b3I8UmV0YWluUHRyPENURm9udERlc2NyaXB0b3JSZWY+PiwgQ29yZVRl
eHRDYXNjYWRlTGlzdFBhcmFtZXRlcnM6OkNvcmVUZXh0Q2FzY2FkZUxpc3RQYXJhbWV0ZXJzSGFz
aCwgU2ltcGxlQ2xhc3NIYXNoVHJhaXRzPENvcmVUZXh0Q2FzY2FkZUxpc3RQYXJhbWV0ZXJzPj4g
bV9zeXN0ZW1Gb250Q2FjaGU7Ci19OwotCiBzdGF0aWMgaW5saW5lIGJvb2wgaXNTeXN0ZW1Gb250
U3RyaW5nKGNvbnN0IEF0b21pY1N0cmluZyYgc3RyaW5nKQogewogICAgIHJldHVybiBlcXVhbExl
dHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShzdHJpbmcsICItd2Via2l0LXN5c3RlbS1mb250IikKQEAg
LTI0NCw1NyArODEsOSBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNVSUZvbnRUZXh0U3R5bGUoY29u
CiB9CiAjZW5kaWYKIAotc3RhdGljIGlubGluZSBTeXN0ZW1Gb250RGF0YWJhc2U6OkNvcmVUZXh0
Q2FzY2FkZUxpc3RQYXJhbWV0ZXJzIHN5c3RlbUZvbnRQYXJhbWV0ZXJzKGNvbnN0IEZvbnRDYXNj
YWRlRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uLCBjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlseU5h
bWUsIFN5c3RlbUZvbnREYXRhYmFzZTo6Q2xpZW50VXNlIGNsaWVudFVzZSwgQWxsb3dVc2VySW5z
dGFsbGVkRm9udHMgYWxsb3dVc2VySW5zdGFsbGVkRm9udHMpCi17Ci0gICAgU3lzdGVtRm9udERh
dGFiYXNlOjpDb3JlVGV4dENhc2NhZGVMaXN0UGFyYW1ldGVycyByZXN1bHQ7Ci0gICAgcmVzdWx0
LmxvY2FsZSA9IGRlc2NyaXB0aW9uLmxvY2FsZSgpOwotICAgIHJlc3VsdC5zaXplID0gZGVzY3Jp
cHRpb24uY29tcHV0ZWRTaXplKCk7Ci0gICAgcmVzdWx0Lml0YWxpYyA9IGlzSXRhbGljKGRlc2Ny
aXB0aW9uLml0YWxpYygpKTsKLQotICAgIGF1dG8gd2VpZ2h0ID0gZGVzY3JpcHRpb24ud2VpZ2h0
KCk7Ci0gICAgaWYgKEZvbnRDYWNoZTo6c2luZ2xldG9uKCkuc2hvdWxkTW9ja0JvbGRTeXN0ZW1G
b250Rm9yQWNjZXNzaWJpbGl0eSgpKQotICAgICAgICB3ZWlnaHQgPSB3ZWlnaHQgKyBGb250U2Vs
ZWN0aW9uVmFsdWUoMjAwKTsKLQotICAgIGlmICh3ZWlnaHQgPCBGb250U2VsZWN0aW9uVmFsdWUo
MTUwKSkKLSAgICAgICAgcmVzdWx0LndlaWdodCA9IGtDVEZvbnRXZWlnaHRVbHRyYUxpZ2h0Owot
ICAgIGVsc2UgaWYgKHdlaWdodCA8IEZvbnRTZWxlY3Rpb25WYWx1ZSgyNTApKQotICAgICAgICBy
ZXN1bHQud2VpZ2h0ID0ga0NURm9udFdlaWdodFRoaW47Ci0gICAgZWxzZSBpZiAod2VpZ2h0IDwg
Rm9udFNlbGVjdGlvblZhbHVlKDM1MCkpCi0gICAgICAgIHJlc3VsdC53ZWlnaHQgPSBrQ1RGb250
V2VpZ2h0TGlnaHQ7Ci0gICAgZWxzZSBpZiAod2VpZ2h0IDwgRm9udFNlbGVjdGlvblZhbHVlKDQ1
MCkpCi0gICAgICAgIHJlc3VsdC53ZWlnaHQgPSBrQ1RGb250V2VpZ2h0UmVndWxhcjsKLSAgICBl
bHNlIGlmICh3ZWlnaHQgPCBGb250U2VsZWN0aW9uVmFsdWUoNTUwKSkKLSAgICAgICAgcmVzdWx0
LndlaWdodCA9IGtDVEZvbnRXZWlnaHRNZWRpdW07Ci0gICAgZWxzZSBpZiAod2VpZ2h0IDwgRm9u
dFNlbGVjdGlvblZhbHVlKDY1MCkpCi0gICAgICAgIHJlc3VsdC53ZWlnaHQgPSBrQ1RGb250V2Vp
Z2h0U2VtaWJvbGQ7Ci0gICAgZWxzZSBpZiAod2VpZ2h0IDwgRm9udFNlbGVjdGlvblZhbHVlKDc1
MCkpCi0gICAgICAgIHJlc3VsdC53ZWlnaHQgPSBrQ1RGb250V2VpZ2h0Qm9sZDsKLSAgICBlbHNl
IGlmICh3ZWlnaHQgPCBGb250U2VsZWN0aW9uVmFsdWUoODUwKSkKLSAgICAgICAgcmVzdWx0Lndl
aWdodCA9IGtDVEZvbnRXZWlnaHRIZWF2eTsKLSAgICBlbHNlCi0gICAgICAgIHJlc3VsdC53ZWln
aHQgPSBrQ1RGb250V2VpZ2h0QmxhY2s7Ci0KLSAgICBpZiAoY2xpZW50VXNlID09IFN5c3RlbUZv
bnREYXRhYmFzZTo6Q2xpZW50VXNlOjpGb3JTeXN0ZW1VSSkgewotICAgICAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBzeXN0ZW1VSSA9IEF0b21pY1N0cmluZygic3lzdGVt
LXVpIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgICAgIHJlc3Vs
dC5mb250TmFtZSA9IHN5c3RlbVVJLmdldCgpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIEFTU0VS
VChjbGllbnRVc2UgPT0gU3lzdGVtRm9udERhdGFiYXNlOjpDbGllbnRVc2U6OkZvclRleHRTdHls
ZSk7Ci0gICAgICAgIHJlc3VsdC5mb250TmFtZSA9IGZhbWlseU5hbWU7Ci0gICAgfQotCi0gICAg
cmVzdWx0LmFsbG93VXNlckluc3RhbGxlZEZvbnRzID0gYWxsb3dVc2VySW5zdGFsbGVkRm9udHM7
Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi12b2lkIEZvbnREZXNjcmlwdGlvbjo6aW52YWxp
ZGF0ZUNhY2hlcygpCi17Ci0gICAgU3lzdGVtRm9udERhdGFiYXNlOjpzaW5nbGV0b24oKS5jbGVh
cigpOwotfQotCi1zdGF0aWMgaW5saW5lIFZlY3RvcjxSZXRhaW5QdHI8Q1RGb250RGVzY3JpcHRv
clJlZj4+IHN5c3RlbUZvbnRDYXNjYWRlTGlzdChjb25zdCBGb250Q2FzY2FkZURlc2NyaXB0aW9u
JiBkZXNjcmlwdGlvbiwgY29uc3QgQXRvbWljU3RyaW5nJiBjc3NGYW1pbHksIFN5c3RlbUZvbnRE
YXRhYmFzZTo6Q2xpZW50VXNlIGNsaWVudFVzZSwgQWxsb3dVc2VySW5zdGFsbGVkRm9udHMgYWxs
b3dVc2VySW5zdGFsbGVkRm9udHMpCitzdGF0aWMgaW5saW5lIFZlY3RvcjxSZXRhaW5QdHI8Q1RG
b250RGVzY3JpcHRvclJlZj4+IHN5c3RlbUZvbnRDYXNjYWRlTGlzdChjb25zdCBGb250Q2FzY2Fk
ZURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwgY29uc3QgQXRvbWljU3RyaW5nJiBjc3NGYW1pbHks
IFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0OjpDbGllbnRVc2UgY2xpZW50VXNlLCBBbGxvd1Vz
ZXJJbnN0YWxsZWRGb250cyBhbGxvd1VzZXJJbnN0YWxsZWRGb250cykKIHsKLSAgICByZXR1cm4g
U3lzdGVtRm9udERhdGFiYXNlOjpzaW5nbGV0b24oKS5zeXN0ZW1Gb250Q2FzY2FkZUxpc3Qoc3lz
dGVtRm9udFBhcmFtZXRlcnMoZGVzY3JpcHRpb24sIGNzc0ZhbWlseSwgY2xpZW50VXNlLCBhbGxv
d1VzZXJJbnN0YWxsZWRGb250cyksIGNsaWVudFVzZSk7CisgICAgcmV0dXJuIFN5c3RlbUZvbnRE
YXRhYmFzZUNvcmVUZXh0OjpzaW5nbGV0b24oKS5jYXNjYWRlTGlzdChkZXNjcmlwdGlvbiwgY3Nz
RmFtaWx5LCBjbGllbnRVc2UsIGFsbG93VXNlckluc3RhbGxlZEZvbnRzKTsKIH0KIAogdW5zaWdu
ZWQgRm9udENhc2NhZGVEZXNjcmlwdGlvbjo6ZWZmZWN0aXZlRmFtaWx5Q291bnQoKSBjb25zdApA
QCAtMzA0LDEwICs5MywxMCBAQCB1bnNpZ25lZCBGb250Q2FzY2FkZURlc2NyaXB0aW9uOjplZmZl
Y3RpCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGZhbWlseUNvdW50KCk7ICsraSkgewog
ICAgICAgICBjb25zdCBhdXRvJiBjc3NGYW1pbHkgPSBmYW1pbHlBdChpKTsKICAgICAgICAgaWYg
KGlzU3lzdGVtRm9udFN0cmluZyhjc3NGYW1pbHkpKQotICAgICAgICAgICAgcmVzdWx0ICs9IHN5
c3RlbUZvbnRDYXNjYWRlTGlzdCgqdGhpcywgY3NzRmFtaWx5LCBTeXN0ZW1Gb250RGF0YWJhc2U6
OkNsaWVudFVzZTo6Rm9yU3lzdGVtVUksIHNob3VsZEFsbG93VXNlckluc3RhbGxlZEZvbnRzKCkp
LnNpemUoKTsKKyAgICAgICAgICAgIHJlc3VsdCArPSBzeXN0ZW1Gb250Q2FzY2FkZUxpc3QoKnRo
aXMsIGNzc0ZhbWlseSwgU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQ6OkNsaWVudFVzZTo6Rm9y
U3lzdGVtVUksIHNob3VsZEFsbG93VXNlckluc3RhbGxlZEZvbnRzKCkpLnNpemUoKTsKICNpZiBQ
TEFURk9STShJT1MpCiAgICAgICAgIGVsc2UgaWYgKGlzVUlGb250VGV4dFN0eWxlKGNzc0ZhbWls
eSkpCi0gICAgICAgICAgICByZXN1bHQgKz0gc3lzdGVtRm9udENhc2NhZGVMaXN0KCp0aGlzLCBj
c3NGYW1pbHksIFN5c3RlbUZvbnREYXRhYmFzZTo6Q2xpZW50VXNlOjpGb3JUZXh0U3R5bGUsIHNo
b3VsZEFsbG93VXNlckluc3RhbGxlZEZvbnRzKCkpLnNpemUoKTsKKyAgICAgICAgICAgIHJlc3Vs
dCArPSBzeXN0ZW1Gb250Q2FzY2FkZUxpc3QoKnRoaXMsIGNzc0ZhbWlseSwgU3lzdGVtRm9udERh
dGFiYXNlQ29yZVRleHQ6OkNsaWVudFVzZTo6Rm9yVGV4dFN0eWxlLCBzaG91bGRBbGxvd1VzZXJJ
bnN0YWxsZWRGb250cygpKS5zaXplKCk7CiAjZW5kaWYKICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgKytyZXN1bHQ7CkBAIC0zMjcsMTQgKzExNiwxNCBAQCBGb250RmFtaWx5U3BlY2lmaWNhdGlv
biBGb250Q2FzY2FkZURlc2NyCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGZhbWlseUNv
dW50KCk7ICsraSkgewogICAgICAgICBjb25zdCBhdXRvJiBjc3NGYW1pbHkgPSBmYW1pbHlBdChp
KTsKICAgICAgICAgaWYgKGlzU3lzdGVtRm9udFN0cmluZyhjc3NGYW1pbHkpKSB7Ci0gICAgICAg
ICAgICBhdXRvIGNhc2NhZGVMaXN0ID0gc3lzdGVtRm9udENhc2NhZGVMaXN0KCp0aGlzLCBjc3NG
YW1pbHksIFN5c3RlbUZvbnREYXRhYmFzZTo6Q2xpZW50VXNlOjpGb3JTeXN0ZW1VSSwgc2hvdWxk
QWxsb3dVc2VySW5zdGFsbGVkRm9udHMoKSk7CisgICAgICAgICAgICBhdXRvIGNhc2NhZGVMaXN0
ID0gc3lzdGVtRm9udENhc2NhZGVMaXN0KCp0aGlzLCBjc3NGYW1pbHksIFN5c3RlbUZvbnREYXRh
YmFzZUNvcmVUZXh0OjpDbGllbnRVc2U6OkZvclN5c3RlbVVJLCBzaG91bGRBbGxvd1VzZXJJbnN0
YWxsZWRGb250cygpKTsKICAgICAgICAgICAgIGlmIChpbmRleCA8IGNhc2NhZGVMaXN0LnNpemUo
KSkKICAgICAgICAgICAgICAgICByZXR1cm4gRm9udEZhbWlseVNwZWNpZmljYXRpb24oY2FzY2Fk
ZUxpc3RbaW5kZXhdLmdldCgpKTsKICAgICAgICAgICAgIGluZGV4IC09IGNhc2NhZGVMaXN0LnNp
emUoKTsKICAgICAgICAgfQogI2lmIFBMQVRGT1JNKElPUykKICAgICAgICAgZWxzZSBpZiAoaXNV
SUZvbnRUZXh0U3R5bGUoY3NzRmFtaWx5KSkgewotICAgICAgICAgICAgYXV0byBjYXNjYWRlTGlz
dCA9IHN5c3RlbUZvbnRDYXNjYWRlTGlzdCgqdGhpcywgY3NzRmFtaWx5LCBTeXN0ZW1Gb250RGF0
YWJhc2U6OkNsaWVudFVzZTo6Rm9yVGV4dFN0eWxlLCBzaG91bGRBbGxvd1VzZXJJbnN0YWxsZWRG
b250cygpKTsKKyAgICAgICAgICAgIGF1dG8gY2FzY2FkZUxpc3QgPSBzeXN0ZW1Gb250Q2FzY2Fk
ZUxpc3QoKnRoaXMsIGNzc0ZhbWlseSwgU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQ6OkNsaWVu
dFVzZTo6Rm9yVGV4dFN0eWxlLCBzaG91bGRBbGxvd1VzZXJJbnN0YWxsZWRGb250cygpKTsKICAg
ICAgICAgICAgIGlmIChpbmRleCA8IGNhc2NhZGVMaXN0LnNpemUoKSkKICAgICAgICAgICAgICAg
ICByZXR1cm4gRm9udEZhbWlseVNwZWNpZmljYXRpb24oY2FzY2FkZUxpc3RbaW5kZXhdLmdldCgp
KTsKICAgICAgICAgICAgIGluZGV4IC09IGNhc2NhZGVMaXN0LnNpemUoKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1N5c3RlbUZvbnREYXRhYmFzZUNvcmVU
ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9TeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dC5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU3lzdGVtRm9udERhdGFiYXNlQ29y
ZVRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTc3IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0
LmgiCisKKyNpZiBVU0VfUExBVEZPUk1fU1lTVEVNX0ZBTExCQUNLX0xJU1QKKworI2luY2x1ZGUg
IkZvbnRDYWNoZS5oIgorI2luY2x1ZGUgIkZvbnRDYXNjYWRlRGVzY3JpcHRpb24uaCIKKworI2lm
IFBMQVRGT1JNKElPUykKKyNpbmNsdWRlICJSZW5kZXJUaGVtZUlPUy5oIgorI2VuZGlmCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQmIFN5c3RlbUZv
bnREYXRhYmFzZUNvcmVUZXh0OjpzaW5nbGV0b24oKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dD4gZGF0YWJhc2UgPSBTeXN0ZW1Gb250RGF0
YWJhc2VDb3JlVGV4dCgpOworICAgIHJldHVybiBkYXRhYmFzZS5nZXQoKTsKK30KKworU3lzdGVt
Rm9udERhdGFiYXNlQ29yZVRleHQ6OlN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0KCkKK3sKK30K
KworVmVjdG9yPFJldGFpblB0cjxDVEZvbnREZXNjcmlwdG9yUmVmPj4gU3lzdGVtRm9udERhdGFi
YXNlQ29yZVRleHQ6OmNhc2NhZGVMaXN0KGNvbnN0IENhc2NhZGVMaXN0UGFyYW1ldGVycyYgcGFy
YW1ldGVycywgQ2xpZW50VXNlIGNsaWVudFVzZSkKK3sKKyAgICBBU1NFUlQoIXBhcmFtZXRlcnMu
Zm9udE5hbWUuaXNOdWxsKCkpOworICAgIHJldHVybiBtX3N5c3RlbUZvbnRDYWNoZS5lbnN1cmUo
cGFyYW1ldGVycywgWyZdIHsKKyAgICAgICAgYXV0byBsb2NhbGVTdHJpbmcgPSBwYXJhbWV0ZXJz
LmxvY2FsZS5zdHJpbmcoKS5jcmVhdGVDRlN0cmluZygpOworICAgICAgICBSZXRhaW5QdHI8Q1RG
b250UmVmPiBzeXN0ZW1Gb250OworICAgICAgICBpZiAoY2xpZW50VXNlID09IENsaWVudFVzZTo6
Rm9yU3lzdGVtVUkpIHsKKyAgICAgICAgICAgIHN5c3RlbUZvbnQgPSBhZG9wdENGKENURm9udENy
ZWF0ZVVJRm9udEZvckxhbmd1YWdlKGtDVEZvbnRVSUZvbnRTeXN0ZW0sIHBhcmFtZXRlcnMuc2l6
ZSwgbG9jYWxlU3RyaW5nLmdldCgpKSk7CisgICAgICAgICAgICBBU1NFUlQoc3lzdGVtRm9udCk7
CisgICAgICAgICAgICAvLyBGSVhNRTogVXNlIGFwcGx5V2VpZ2h0SXRhbGljc0FuZEZhbGxiYWNr
QmVoYXZpb3IoKSBpbiBib3RoIGNhc2VzIG9uY2UgPHJkYXI6Ly9wcm9ibGVtLzMzMDQ2MDQxPiBp
cyBmaXhlZC4KKyAgICAgICAgICAgIHN5c3RlbUZvbnQgPSBhcHBseVdlaWdodEl0YWxpY3NBbmRG
YWxsYmFja0JlaGF2aW9yKHN5c3RlbUZvbnQuZ2V0KCksIHBhcmFtZXRlcnMud2VpZ2h0LCBwYXJh
bWV0ZXJzLml0YWxpYywgcGFyYW1ldGVycy5zaXplLCBwYXJhbWV0ZXJzLmFsbG93VXNlckluc3Rh
bGxlZEZvbnRzKTsKKyAgICAgICAgfSBlbHNlIHsKKyNpZiBQTEFURk9STShJT1MpCisgICAgICAg
ICAgICBBU1NFUlQoY2xpZW50VXNlID09IENsaWVudFVzZTo6Rm9yVGV4dFN0eWxlKTsKKyAgICAg
ICAgICAgIGF1dG8gZm9udERlc2NyaXB0b3IgPSBhZG9wdENGKENURm9udERlc2NyaXB0b3JDcmVh
dGVXaXRoVGV4dFN0eWxlKHBhcmFtZXRlcnMuZm9udE5hbWUuc3RyaW5nKCkuY3JlYXRlQ0ZTdHJp
bmcoKS5nZXQoKSwgUmVuZGVyVGhlbWVJT1M6OmNvbnRlbnRTaXplQ2F0ZWdvcnkoKSwgbnVsbHB0
cikpOworICAgICAgICAgICAgQ1RGb250U3ltYm9saWNUcmFpdHMgdHJhaXRzID0gKHBhcmFtZXRl
cnMud2VpZ2h0ID49IGtDVEZvbnRXZWlnaHRTZW1pYm9sZCA/IGtDVEZvbnRUcmFpdEJvbGQgOiAw
KSB8IChwYXJhbWV0ZXJzLml0YWxpYyA/IGtDVEZvbnRUcmFpdEl0YWxpYyA6IDApOworICAgICAg
ICAgICAgaWYgKHRyYWl0cykKKyAgICAgICAgICAgICAgICBmb250RGVzY3JpcHRvciA9IGFkb3B0
Q0YoQ1RGb250RGVzY3JpcHRvckNyZWF0ZUNvcHlXaXRoU3ltYm9saWNUcmFpdHMoZm9udERlc2Ny
aXB0b3IuZ2V0KCksIHRyYWl0cywgdHJhaXRzKSk7CisgICAgICAgICAgICBzeXN0ZW1Gb250ID0g
Y3JlYXRlRm9udEZvckluc3RhbGxlZEZvbnRzKGZvbnREZXNjcmlwdG9yLmdldCgpLCBwYXJhbWV0
ZXJzLnNpemUsIHBhcmFtZXRlcnMuYWxsb3dVc2VySW5zdGFsbGVkRm9udHMpOworI2Vsc2UKKyAg
ICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworI2VuZGlmCisgICAgICAgIH0KKyAgICAg
ICAgQVNTRVJUKHN5c3RlbUZvbnQpOworICAgICAgICBhdXRvIHJlc3VsdCA9IGNvbXB1dGVDYXNj
YWRlTGlzdChzeXN0ZW1Gb250LmdldCgpLCBsb2NhbGVTdHJpbmcuZ2V0KCkpOworICAgICAgICBB
U1NFUlQoIXJlc3VsdC5pc0VtcHR5KCkpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0p
Lml0ZXJhdG9yLT52YWx1ZTsKK30KKwordm9pZCBTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dDo6
Y2xlYXIoKQoreworICAgIG1fc3lzdGVtRm9udENhY2hlLmNsZWFyKCk7Cit9CisKK1JldGFpblB0
cjxDVEZvbnRSZWY+IFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0OjphcHBseVdlaWdodEl0YWxp
Y3NBbmRGYWxsYmFja0JlaGF2aW9yKENURm9udFJlZiBmb250LCBDR0Zsb2F0IHdlaWdodCwgYm9v
bCBpdGFsaWMsIGZsb2F0IHNpemUsIEFsbG93VXNlckluc3RhbGxlZEZvbnRzIGFsbG93VXNlcklu
c3RhbGxlZEZvbnRzKQoreworICAgIGF1dG8gd2VpZ2h0TnVtYmVyID0gYWRvcHRDRihDRk51bWJl
ckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJDR0Zsb2F0VHlwZSwgJndlaWdo
dCkpOworICAgIGNvbnN0IGZsb2F0IHN5c3RlbUZvbnRJdGFsaWNTbG9wZSA9IDAuMDc7CisgICAg
ZmxvYXQgaXRhbGljc1Jhd051bWJlciA9IGl0YWxpYyA/IHN5c3RlbUZvbnRJdGFsaWNTbG9wZSA6
IDA7CisgICAgYXV0byBpdGFsaWNzTnVtYmVyID0gYWRvcHRDRihDRk51bWJlckNyZWF0ZShrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJGbG9hdFR5cGUsICZpdGFsaWNzUmF3TnVtYmVyKSk7
CisgICAgQ0ZUeXBlUmVmIHRyYWl0c0tleXNbXSA9IHsga0NURm9udFdlaWdodFRyYWl0LCBrQ1RG
b250U2xhbnRUcmFpdCwga0NURm9udFVJRm9udERlc2lnblRyYWl0IH07CisgICAgQ0ZUeXBlUmVm
IHRyYWl0c1ZhbHVlc1tdID0geyB3ZWlnaHROdW1iZXIuZ2V0KCksIGl0YWxpY3NOdW1iZXIuZ2V0
KCksIGtDRkJvb2xlYW5UcnVlIH07CisgICAgYXV0byB0cmFpdHNEaWN0aW9uYXJ5ID0gYWRvcHRD
RihDRkRpY3Rpb25hcnlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgdHJhaXRzS2V5cywgdHJh
aXRzVmFsdWVzLCBXVEZfQVJSQVlfTEVOR1RIKHRyYWl0c0tleXMpLCAma0NGVHlwZURpY3Rpb25h
cnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CisgICAg
YXV0byBhdHRyaWJ1dGVzID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlKGtDRkFs
bG9jYXRvckRlZmF1bHQsIDAsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5
cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShh
dHRyaWJ1dGVzLmdldCgpLCBrQ1RGb250VHJhaXRzQXR0cmlidXRlLCB0cmFpdHNEaWN0aW9uYXJ5
LmdldCgpKTsKKyAgICBhZGRBdHRyaWJ1dGVzRm9ySW5zdGFsbGVkRm9udHMoYXR0cmlidXRlcy5n
ZXQoKSwgYWxsb3dVc2VySW5zdGFsbGVkRm9udHMpOworICAgIGF1dG8gbW9kaWZpY2F0aW9uID0g
YWRvcHRDRihDVEZvbnREZXNjcmlwdG9yQ3JlYXRlV2l0aEF0dHJpYnV0ZXMoYXR0cmlidXRlcy5n
ZXQoKSkpOworICAgIHJldHVybiBhZG9wdENGKENURm9udENyZWF0ZUNvcHlXaXRoQXR0cmlidXRl
cyhmb250LCBzaXplLCBudWxscHRyLCBtb2RpZmljYXRpb24uZ2V0KCkpKTsKK30KKworUmV0YWlu
UHRyPENURm9udERlc2NyaXB0b3JSZWY+IFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0OjpyZW1v
dmVDYXNjYWRlTGlzdChDVEZvbnREZXNjcmlwdG9yUmVmIGZvbnREZXNjcmlwdG9yKQoreworICAg
IGF1dG8gZW1wdHlBcnJheSA9IGFkb3B0Q0YoQ0ZBcnJheUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZh
dWx0LCBudWxscHRyLCAwLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKSk7CisgICAgQ0ZUeXBlUmVm
IGZhbGxiYWNrRGljdGlvbmFyeUtleXNbXSA9IHsga0NURm9udENhc2NhZGVMaXN0QXR0cmlidXRl
IH07CisgICAgQ0ZUeXBlUmVmIGZhbGxiYWNrRGljdGlvbmFyeVZhbHVlc1tdID0geyBlbXB0eUFy
cmF5LmdldCgpIH07CisgICAgYXV0byBmYWxsYmFja0RpY3Rpb25hcnkgPSBhZG9wdENGKENGRGlj
dGlvbmFyeUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBmYWxsYmFja0RpY3Rpb25hcnlLZXlz
LCBmYWxsYmFja0RpY3Rpb25hcnlWYWx1ZXMsIFdURl9BUlJBWV9MRU5HVEgoZmFsbGJhY2tEaWN0
aW9uYXJ5S2V5cyksICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0
aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKKyAgICBhdXRvIG1vZGlmaWVkRm9udERlc2NyaXB0b3Ig
PSBhZG9wdENGKENURm9udERlc2NyaXB0b3JDcmVhdGVDb3B5V2l0aEF0dHJpYnV0ZXMoZm9udERl
c2NyaXB0b3IsIGZhbGxiYWNrRGljdGlvbmFyeS5nZXQoKSkpOworICAgIHJldHVybiBtb2RpZmll
ZEZvbnREZXNjcmlwdG9yOworfQorCitWZWN0b3I8UmV0YWluUHRyPENURm9udERlc2NyaXB0b3JS
ZWY+PiBTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dDo6Y29tcHV0ZUNhc2NhZGVMaXN0KENURm9u
dFJlZiBmb250LCBDRlN0cmluZ1JlZiBsb2NhbGUpCit7CisgICAgQ0ZUeXBlUmVmIGFycmF5VmFs
dWVzW10gPSB7IGxvY2FsZSB9OworICAgIGF1dG8gbG9jYWxlQXJyYXkgPSBhZG9wdENGKENGQXJy
YXlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYXJyYXlWYWx1ZXMsIFdURl9BUlJBWV9MRU5H
VEgoYXJyYXlWYWx1ZXMpLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKSk7CisgICAgYXV0byBjYXNj
YWRlTGlzdCA9IGFkb3B0Q0YoQ1RGb250Q29weURlZmF1bHRDYXNjYWRlTGlzdEZvckxhbmd1YWdl
cyhmb250LCBsb2NhbGVBcnJheS5nZXQoKSkpOworICAgIFZlY3RvcjxSZXRhaW5QdHI8Q1RGb250
RGVzY3JpcHRvclJlZj4+IHJlc3VsdDsKKyAgICAvLyBXZWJLaXQgaGFuZGxlcyB0aGUgY2FzY2Fk
ZSBsaXN0LCBhbmQgV2ViS2l0IDIncyBJUEMgY29kZSBkb2Vzbid0IGtub3cgaG93IHRvIHNlcmlh
bGl6ZSBDb3JlIFRleHQncyBjYXNjYWRlIGxpc3QuCisgICAgcmVzdWx0LmFwcGVuZChyZW1vdmVD
YXNjYWRlTGlzdChhZG9wdENGKENURm9udENvcHlGb250RGVzY3JpcHRvcihmb250KSkuZ2V0KCkp
KTsKKyAgICBpZiAoY2FzY2FkZUxpc3QpIHsKKyAgICAgICAgQ0ZJbmRleCBhcnJheUxlbmd0aCA9
IENGQXJyYXlHZXRDb3VudChjYXNjYWRlTGlzdC5nZXQoKSk7CisgICAgICAgIGZvciAoQ0ZJbmRl
eCBpID0gMDsgaSA8IGFycmF5TGVuZ3RoOyArK2kpCisgICAgICAgICAgICByZXN1bHQuYXBwZW5k
KHN0YXRpY19jYXN0PENURm9udERlc2NyaXB0b3JSZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgo
Y2FzY2FkZUxpc3QuZ2V0KCksIGkpKSk7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisK
K1N5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0OjpDYXNjYWRlTGlzdFBhcmFtZXRlcnMgU3lzdGVt
Rm9udERhdGFiYXNlQ29yZVRleHQ6OnN5c3RlbUZvbnRQYXJhbWV0ZXJzKGNvbnN0IEZvbnRDYXNj
YWRlRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uLCBjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlseU5h
bWUsIENsaWVudFVzZSBjbGllbnRVc2UsIEFsbG93VXNlckluc3RhbGxlZEZvbnRzIGFsbG93VXNl
ckluc3RhbGxlZEZvbnRzKQoreworICAgIENhc2NhZGVMaXN0UGFyYW1ldGVycyByZXN1bHQ7Cisg
ICAgcmVzdWx0LmxvY2FsZSA9IGRlc2NyaXB0aW9uLmxvY2FsZSgpOworICAgIHJlc3VsdC5zaXpl
ID0gZGVzY3JpcHRpb24uY29tcHV0ZWRTaXplKCk7CisgICAgcmVzdWx0Lml0YWxpYyA9IGlzSXRh
bGljKGRlc2NyaXB0aW9uLml0YWxpYygpKTsKKworICAgIGF1dG8gd2VpZ2h0ID0gZGVzY3JpcHRp
b24ud2VpZ2h0KCk7CisgICAgaWYgKEZvbnRDYWNoZTo6c2luZ2xldG9uKCkuc2hvdWxkTW9ja0Jv
bGRTeXN0ZW1Gb250Rm9yQWNjZXNzaWJpbGl0eSgpKQorICAgICAgICB3ZWlnaHQgPSB3ZWlnaHQg
KyBGb250U2VsZWN0aW9uVmFsdWUoMjAwKTsKKworICAgIGlmICh3ZWlnaHQgPCBGb250U2VsZWN0
aW9uVmFsdWUoMTUwKSkKKyAgICAgICAgcmVzdWx0LndlaWdodCA9IGtDVEZvbnRXZWlnaHRVbHRy
YUxpZ2h0OworICAgIGVsc2UgaWYgKHdlaWdodCA8IEZvbnRTZWxlY3Rpb25WYWx1ZSgyNTApKQor
ICAgICAgICByZXN1bHQud2VpZ2h0ID0ga0NURm9udFdlaWdodFRoaW47CisgICAgZWxzZSBpZiAo
d2VpZ2h0IDwgRm9udFNlbGVjdGlvblZhbHVlKDM1MCkpCisgICAgICAgIHJlc3VsdC53ZWlnaHQg
PSBrQ1RGb250V2VpZ2h0TGlnaHQ7CisgICAgZWxzZSBpZiAod2VpZ2h0IDwgRm9udFNlbGVjdGlv
blZhbHVlKDQ1MCkpCisgICAgICAgIHJlc3VsdC53ZWlnaHQgPSBrQ1RGb250V2VpZ2h0UmVndWxh
cjsKKyAgICBlbHNlIGlmICh3ZWlnaHQgPCBGb250U2VsZWN0aW9uVmFsdWUoNTUwKSkKKyAgICAg
ICAgcmVzdWx0LndlaWdodCA9IGtDVEZvbnRXZWlnaHRNZWRpdW07CisgICAgZWxzZSBpZiAod2Vp
Z2h0IDwgRm9udFNlbGVjdGlvblZhbHVlKDY1MCkpCisgICAgICAgIHJlc3VsdC53ZWlnaHQgPSBr
Q1RGb250V2VpZ2h0U2VtaWJvbGQ7CisgICAgZWxzZSBpZiAod2VpZ2h0IDwgRm9udFNlbGVjdGlv
blZhbHVlKDc1MCkpCisgICAgICAgIHJlc3VsdC53ZWlnaHQgPSBrQ1RGb250V2VpZ2h0Qm9sZDsK
KyAgICBlbHNlIGlmICh3ZWlnaHQgPCBGb250U2VsZWN0aW9uVmFsdWUoODUwKSkKKyAgICAgICAg
cmVzdWx0LndlaWdodCA9IGtDVEZvbnRXZWlnaHRIZWF2eTsKKyAgICBlbHNlCisgICAgICAgIHJl
c3VsdC53ZWlnaHQgPSBrQ1RGb250V2VpZ2h0QmxhY2s7CisKKyAgICBpZiAoY2xpZW50VXNlID09
IENsaWVudFVzZTo6Rm9yU3lzdGVtVUkpIHsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PEF0b21pY1N0cmluZz4gc3lzdGVtVUkgPSBBdG9taWNTdHJpbmcoInN5c3RlbS11aSIsIEF0b21p
Y1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgICAgICByZXN1bHQuZm9udE5hbWUg
PSBzeXN0ZW1VSS5nZXQoKTsKKyAgICB9IGVsc2UgeworICAgICAgICBBU1NFUlQoY2xpZW50VXNl
ID09IENsaWVudFVzZTo6Rm9yVGV4dFN0eWxlKTsKKyAgICAgICAgcmVzdWx0LmZvbnROYW1lID0g
ZmFtaWx5TmFtZTsKKyAgICB9CisKKyAgICByZXN1bHQuYWxsb3dVc2VySW5zdGFsbGVkRm9udHMg
PSBhbGxvd1VzZXJJbnN0YWxsZWRGb250czsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK1Zl
Y3RvcjxSZXRhaW5QdHI8Q1RGb250RGVzY3JpcHRvclJlZj4+IFN5c3RlbUZvbnREYXRhYmFzZUNv
cmVUZXh0OjpjYXNjYWRlTGlzdChjb25zdCBGb250Q2FzY2FkZURlc2NyaXB0aW9uJiBkZXNjcmlw
dGlvbiwgY29uc3QgQXRvbWljU3RyaW5nJiBjc3NGYW1pbHksIENsaWVudFVzZSBjbGllbnRVc2Us
IEFsbG93VXNlckluc3RhbGxlZEZvbnRzIGFsbG93VXNlckluc3RhbGxlZEZvbnRzKQoreworICAg
IHJldHVybiBjYXNjYWRlTGlzdChzeXN0ZW1Gb250UGFyYW1ldGVycyhkZXNjcmlwdGlvbiwgY3Nz
RmFtaWx5LCBjbGllbnRVc2UsIGFsbG93VXNlckluc3RhbGxlZEZvbnRzKSwgY2xpZW50VXNlKTsK
K30KKworfQorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL1N5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU3lzdGVtRm9udERhdGFiYXNlQ29yZVRl
eHQuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9TeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMTIxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJGb250Q2Fz
Y2FkZURlc2NyaXB0aW9uLmgiCisjaW5jbHVkZSA8cGFsL3NwaS9jb2NvYS9Db3JlVGV4dFNQSS5o
PgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hUcmFpdHMuaD4K
KyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9B
dG9taWNTdHJpbmdIYXNoLmg+CisKKyNpZiBVU0VfUExBVEZPUk1fU1lTVEVNX0ZBTExCQUNLX0xJ
U1QKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTeXN0ZW1Gb250RGF0YWJhc2VDb3Jl
VGV4dCB7CitwdWJsaWM6CisgICAgc3RydWN0IENhc2NhZGVMaXN0UGFyYW1ldGVycyB7CisgICAg
ICAgIENhc2NhZGVMaXN0UGFyYW1ldGVycygpCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAg
ICAgIENhc2NhZGVMaXN0UGFyYW1ldGVycyhXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUp
CisgICAgICAgICAgICA6IGZvbnROYW1lKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKQorICAg
ICAgICB7CisgICAgICAgIH0KKworICAgICAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVl
KCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGZvbnROYW1lLmlzSGFzaFRh
YmxlRGVsZXRlZFZhbHVlKCk7CisgICAgICAgIH0KKworICAgICAgICBib29sIG9wZXJhdG9yPT0o
Y29uc3QgQ2FzY2FkZUxpc3RQYXJhbWV0ZXJzJiBvdGhlcikgY29uc3QKKyAgICAgICAgeworICAg
ICAgICAgICAgcmV0dXJuIGZvbnROYW1lID09IG90aGVyLmZvbnROYW1lCisgICAgICAgICAgICAg
ICAgJiYgbG9jYWxlID09IG90aGVyLmxvY2FsZQorICAgICAgICAgICAgICAgICYmIHdlaWdodCA9
PSBvdGhlci53ZWlnaHQKKyAgICAgICAgICAgICAgICAmJiBzaXplID09IG90aGVyLnNpemUKKyAg
ICAgICAgICAgICAgICAmJiBhbGxvd1VzZXJJbnN0YWxsZWRGb250cyA9PSBvdGhlci5hbGxvd1Vz
ZXJJbnN0YWxsZWRGb250cworICAgICAgICAgICAgICAgICYmIGl0YWxpYyA9PSBvdGhlci5pdGFs
aWM7CisgICAgICAgIH0KKworICAgICAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QKKyAgICAgICAg
eworICAgICAgICAgICAgSW50ZWdlckhhc2hlciBoYXNoZXI7CisgICAgICAgICAgICBBU1NFUlQo
IWZvbnROYW1lLmlzTnVsbCgpKTsKKyAgICAgICAgICAgIGhhc2hlci5hZGQobG9jYWxlLmV4aXN0
aW5nSGFzaCgpKTsKKyAgICAgICAgICAgIGhhc2hlci5hZGQobG9jYWxlLmlzTnVsbCgpID8gMCA6
IGxvY2FsZS5leGlzdGluZ0hhc2goKSk7CisgICAgICAgICAgICBoYXNoZXIuYWRkKHdlaWdodCk7
CisgICAgICAgICAgICBoYXNoZXIuYWRkKHNpemUpOworICAgICAgICAgICAgaGFzaGVyLmFkZChz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oYWxsb3dVc2VySW5zdGFsbGVkRm9udHMpKTsKKyAgICAgICAg
ICAgIGhhc2hlci5hZGQoaXRhbGljKTsKKyAgICAgICAgICAgIHJldHVybiBoYXNoZXIuaGFzaCgp
OworICAgICAgICB9CisKKyAgICAgICAgc3RydWN0IENhc2NhZGVMaXN0UGFyYW1ldGVyc0hhc2gg
OiBXVEY6OlBhaXJIYXNoPEF0b21pY1N0cmluZywgZmxvYXQ+IHsKKyAgICAgICAgICAgIHN0YXRp
YyB1bnNpZ25lZCBoYXNoKGNvbnN0IENhc2NhZGVMaXN0UGFyYW1ldGVycyYgcGFyYW1ldGVycykK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gcGFyYW1ldGVycy5oYXNoKCk7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBDYXNj
YWRlTGlzdFBhcmFtZXRlcnMmIGEsIGNvbnN0IENhc2NhZGVMaXN0UGFyYW1ldGVycyYgYikKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gYSA9PSBiOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRl
bGV0ZWQgPSB0cnVlOworICAgICAgICB9OworCisgICAgICAgIEF0b21pY1N0cmluZyBmb250TmFt
ZTsKKyAgICAgICAgQXRvbWljU3RyaW5nIGxvY2FsZTsKKyAgICAgICAgQ0dGbG9hdCB3ZWlnaHQg
eyAwIH07CisgICAgICAgIGZsb2F0IHNpemUgeyAwIH07CisgICAgICAgIEFsbG93VXNlckluc3Rh
bGxlZEZvbnRzIGFsbG93VXNlckluc3RhbGxlZEZvbnRzIHsgQWxsb3dVc2VySW5zdGFsbGVkRm9u
dHM6Ok5vIH07CisgICAgICAgIGJvb2wgaXRhbGljIHsgZmFsc2UgfTsKKyAgICB9OworCisgICAg
c3RhdGljIFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0JiBzaW5nbGV0b24oKTsKKworICAgIGVu
dW0gY2xhc3MgQ2xpZW50VXNlIHsgRm9yU3lzdGVtVUksIEZvclRleHRTdHlsZSB9OworCisgICAg
VmVjdG9yPFJldGFpblB0cjxDVEZvbnREZXNjcmlwdG9yUmVmPj4gY2FzY2FkZUxpc3QoY29uc3Qg
Rm9udENhc2NhZGVEZXNjcmlwdGlvbiYsIGNvbnN0IEF0b21pY1N0cmluZyYgY3NzRmFtaWx5LCBD
bGllbnRVc2UsIEFsbG93VXNlckluc3RhbGxlZEZvbnRzKTsKKyAgICB2b2lkIGNsZWFyKCk7CisK
K3ByaXZhdGU6CisgICAgU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQoKTsKKworICAgIFZlY3Rv
cjxSZXRhaW5QdHI8Q1RGb250RGVzY3JpcHRvclJlZj4+IGNhc2NhZGVMaXN0KGNvbnN0IENhc2Nh
ZGVMaXN0UGFyYW1ldGVycyYsIENsaWVudFVzZSk7CisKKyAgICBzdGF0aWMgUmV0YWluUHRyPENU
Rm9udFJlZj4gYXBwbHlXZWlnaHRJdGFsaWNzQW5kRmFsbGJhY2tCZWhhdmlvcihDVEZvbnRSZWYs
IENHRmxvYXQgd2VpZ2h0LCBib29sIGl0YWxpYywgZmxvYXQgc2l6ZSwgQWxsb3dVc2VySW5zdGFs
bGVkRm9udHMpOworICAgIHN0YXRpYyBSZXRhaW5QdHI8Q1RGb250RGVzY3JpcHRvclJlZj4gcmVt
b3ZlQ2FzY2FkZUxpc3QoQ1RGb250RGVzY3JpcHRvclJlZik7CisgICAgc3RhdGljIFZlY3RvcjxS
ZXRhaW5QdHI8Q1RGb250RGVzY3JpcHRvclJlZj4+IGNvbXB1dGVDYXNjYWRlTGlzdChDVEZvbnRS
ZWYsIENGU3RyaW5nUmVmIGxvY2FsZSk7CisgICAgc3RhdGljIENhc2NhZGVMaXN0UGFyYW1ldGVy
cyBzeXN0ZW1Gb250UGFyYW1ldGVycyhjb25zdCBGb250Q2FzY2FkZURlc2NyaXB0aW9uJiwgY29u
c3QgQXRvbWljU3RyaW5nJiBmYW1pbHlOYW1lLCBDbGllbnRVc2UsIEFsbG93VXNlckluc3RhbGxl
ZEZvbnRzKTsKKworICAgIEhhc2hNYXA8Q2FzY2FkZUxpc3RQYXJhbWV0ZXJzLCBWZWN0b3I8UmV0
YWluUHRyPENURm9udERlc2NyaXB0b3JSZWY+PiwgQ2FzY2FkZUxpc3RQYXJhbWV0ZXJzOjpDYXNj
YWRlTGlzdFBhcmFtZXRlcnNIYXNoLCBTaW1wbGVDbGFzc0hhc2hUcmFpdHM8Q2FzY2FkZUxpc3RQ
YXJhbWV0ZXJzPj4gbV9zeXN0ZW1Gb250Q2FjaGU7Cit9OworCit9CisKKyNlbmRpZgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>