<?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>254774</bug_id>
          
          <creation_ts>2023-03-30 14:43:47 -0700</creation_ts>
          <short_desc>REGRESSION (262263@main): Caused the GPU process to kill the web process sometimes</short_desc>
          <delta_ts>2023-03-30 16:11:44 -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>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=254490</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>cdumez</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fujii</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>japhet</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1945492</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2023-03-30 14:43:47 -0700</bug_when>
    <thetext>&lt;rdar://107412422&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1945494</commentid>
    <comment_count>1</comment_count>
      <attachid>465692</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2023-03-30 14:45:17 -0700</bug_when>
    <thetext>Created attachment 465692
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1945497</commentid>
    <comment_count>2</comment_count>
      <attachid>465693</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2023-03-30 14:47:17 -0700</bug_when>
    <thetext>Created attachment 465693
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1945524</commentid>
    <comment_count>3</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2023-03-30 16:11:41 -0700</bug_when>
    <thetext>Committed 262371@main (a915cbcacc25): &lt;https://commits.webkit.org/262371@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 465693.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>465692</attachid>
            <date>2023-03-30 14:45:17 -0700</date>
            <delta_ts>2023-03-30 14:47:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-254774-20230330144516.patch</filename>
            <type>text/plain</type>
            <size>80528</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5oIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmgKaW5kZXggMmJjN2EyYzc0NmE3ZWM0
NTU2ODZjOTdhYWU4NGE5NmE3Nzg3YjUyMy4uMmJmZTQ3OTk3NTMyZjEzMWRmOGQ4ZjM0OWQ2MmQx
ZThkZDUyYjlkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291
cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmgKQEAgLTkw
LDEwICs5MCwxMCBAQCBwcml2YXRlOgogCiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9nZW5l
cmF0ZWRPVEZCdWZmZXI7CiAgICAgUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXJWaWV3PiBtX2ltbWVk
aWF0ZVNvdXJjZTsKLSAgICBSZWZQdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gbV9pbW1lZGlh
dGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhOworICAgIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9t
UGxhdGZvcm1EYXRhPiBtX2ltbWVkaWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGE7CiAKICAgICBX
ZWFrUHRyPFNWR0ZvbnRGYWNlRWxlbWVudCwgV2Vha1B0ckltcGxXaXRoRXZlbnRUYXJnZXREYXRh
PiBtX3N2Z0ZvbnRGYWNlRWxlbWVudDsKLSAgICBSZWZQdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0
YT4gbV9pbkRvY3VtZW50Q3VzdG9tUGxhdGZvcm1EYXRhOworICAgIHN0ZDo6dW5pcXVlX3B0cjxG
b250Q3VzdG9tUGxhdGZvcm1EYXRhPiBtX2luRG9jdW1lbnRDdXN0b21QbGF0Zm9ybURhdGE7CiAK
ICAgICBTdGF0dXMgbV9zdGF0dXMgeyBTdGF0dXM6OlBlbmRpbmcgfTsKICAgICBib29sIG1faGFz
U1ZHRm9udEZhY2VFbGVtZW50IHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRGb250LmNwcAppbmRleCAyNjQ2N2VlYTZlZGQ5ZjcwZTk4MDYxMDY4MzY3ZWFiZDkz
NWFjYWFhLi5hMDVmYzQzZGE1ZGNlNDllYzk1N2NjZjMzMzM2NmIyODg3ZGU2YzVlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCkBAIC0xNDEsNyArMTQxLDcg
QEAgYm9vbCBDYWNoZWRGb250OjplbnN1cmVDdXN0b21Gb250RGF0YShTaGFyZWRCdWZmZXIqIGRh
dGEpCiAgICAgcmV0dXJuIG1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YS5nZXQoKTsKIH0KIAotUmVm
UHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IENhY2hlZEZvbnQ6OmNyZWF0ZUN1c3RvbUZvbnRE
YXRhKFNoYXJlZEJ1ZmZlciYgYnl0ZXMsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbiwg
Ym9vbCYgd3JhcHBpbmcpCitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4g
Q2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVyJiBieXRlcywgY29u
c3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uLCBib29sJiB3cmFwcGluZykKIHsKICAgICBSZWZQ
dHIgYnVmZmVyID0geyAmYnl0ZXMgfTsKICAgICB3cmFwcGluZyA9ICFjb252ZXJ0V09GRlRvU2Zu
dElmTmVjZXNzYXJ5KGJ1ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkRm9udC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZv
bnQuaAppbmRleCBlZjgzYjY1OGM3Yjg4MDQ2ZTJlMjcyNDg0NjM1M2EyNDIzZGE2N2QyLi44Nzhm
YjcxMmVmNDNiZWVhMTU5MzZhNTlkM2YwZWZkYTEwM2VhNmEwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRGb250LmgKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgIGJv
b2wgc3RpbGxOZWVkc0xvYWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAhbV9sb2FkSW5pdGlh
dGVkOyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgZW5zdXJlQ3VzdG9tRm9udERhdGEoKTsKLSAgICBz
dGF0aWMgUmVmUHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUN1c3RvbUZvbnREYXRh
KFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbiwgYm9vbCYgd3Jh
cHBpbmcpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0
YT4gY3JlYXRlQ3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBpdGVt
SW5Db2xsZWN0aW9uLCBib29sJiB3cmFwcGluZyk7CiAgICAgc3RhdGljIEZvbnRQbGF0Zm9ybURh
dGEgcGxhdGZvcm1EYXRhRnJvbUN1c3RvbURhdGEoRm9udEN1c3RvbVBsYXRmb3JtRGF0YSYsIGNv
bnN0IEZvbnREZXNjcmlwdGlvbiYsIGJvb2wgYm9sZCwgYm9vbCBpdGFsaWMsIGNvbnN0IEZvbnRD
cmVhdGlvbkNvbnRleHQmKTsKIAogICAgIHZpcnR1YWwgUmVmUHRyPEZvbnQ+IGNyZWF0ZUZvbnQo
Y29uc3QgRm9udERlc2NyaXB0aW9uJiwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRp
Y0l0YWxpYywgY29uc3QgRm9udENyZWF0aW9uQ29udGV4dCYpOwpAQCAtODQsNyArODQsNyBAQCBw
cml2YXRlOgogICAgIGJvb2wgbV9sb2FkSW5pdGlhdGVkOwogICAgIGJvb2wgbV9oYXNDcmVhdGVk
Rm9udERhdGFXcmFwcGluZ1Jlc291cmNlOwogCi0gICAgUmVmUHRyPEZvbnRDdXN0b21QbGF0Zm9y
bURhdGE+IG1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Rm9u
dEN1c3RvbVBsYXRmb3JtRGF0YT4gbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhOwogCiAgICAgZnJp
ZW5kIGNsYXNzIE1lbW9yeUNhY2hlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udC5jcHAKaW5kZXggYjQ4MTEyMmM5YzY4MWQ2NGJjNmEyMTVjMTQ3YzQ5NGI3ODNhOTRm
Yi4uMzY4NTVmZjlkMGQ1ZmMzNTk0NzdkNDlhMTZlOWE1NDM4OGQ0YzQyYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKQEAgLTc2LDggKzc2LDEyIEBAIFJlZjxG
b250PiBGb250OjpjcmVhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBmb250RmFjZURhdGEsIEZvbnQ6
Ok9yaWdpbiBvcmlnaW4sIGZsCiAKIEZvbnQ6OkZvbnQoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYg
cGxhdGZvcm1EYXRhLCBPcmlnaW4gb3JpZ2luLCBJbnRlcnN0aXRpYWwgaW50ZXJzdGl0aWFsLCBW
aXNpYmlsaXR5IHZpc2liaWxpdHksIE9yaWVudGF0aW9uRmFsbGJhY2sgb3JpZW50YXRpb25GYWxs
YmFjaywgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IHJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcikKICAgICA6IG1fcGxhdGZvcm1EYXRhKHBsYXRmb3JtRGF0YSkK
LSAgICAsIG1fYXR0cmlidXRlcyh7IHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgb3JpZ2lu
LCBpbnRlcnN0aXRpYWwsIHZpc2liaWxpdHksIG9yaWVudGF0aW9uRmFsbGJhY2sgfSkKKyAgICAs
IG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cikKKyAgICAsIG1fb3JpZ2luKG9yaWdpbikKKyAgICAsIG1fdmlzaWJpbGl0eSh2aXNpYmlsaXR5
KQogICAgICwgbV90cmVhdEFzRml4ZWRQaXRjaChmYWxzZSkKKyAgICAsIG1faXNJbnRlcnN0aXRp
YWwoaW50ZXJzdGl0aWFsID09IEludGVyc3RpdGlhbDo6WWVzKQorICAgICwgbV9pc1RleHRPcmll
bnRhdGlvbkZhbGxiYWNrKG9yaWVudGF0aW9uRmFsbGJhY2sgPT0gT3JpZW50YXRpb25GYWxsYmFj
azo6WWVzKQogICAgICwgbV9pc0Jyb2tlbklkZW9ncmFwaEZhbGxiYWNrKGZhbHNlKQogICAgICwg
bV9oYXNWZXJ0aWNhbEdseXBocyhmYWxzZSkKICAgICAsIG1faXNVc2VkSW5TeXN0ZW1GYWxsYmFj
a0ZvbnRDYWNoZShmYWxzZSkKQEAgLTE3NSwxNCArMTc5LDkgQEAgRm9udDo6fkZvbnQoKQogCiBS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgRm9udDo6cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9hdHRyaWJ1dGVzLmVuc3VyZVJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcigpOwotfQotCi1SZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgRm9u
dDo6QXR0cmlidXRlczo6ZW5zdXJlUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCkgY29uc3QK
LXsKLSAgICBpZiAoIXJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKLSAgICAgICAgcmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyID0gUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyOjpnZW5l
cmF0ZSgpOwotICAgIHJldHVybiAqcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyOworICAgIGlm
ICghbV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCisgICAgICAgIG1fcmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyID0gUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyOjpnZW5lcmF0ZSgp
OworICAgIHJldHVybiAqbV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI7CiB9CiAKIHN0YXRp
YyBib29sIGZpbGxHbHlwaFBhZ2UoR2x5cGhQYWdlJiBwYWdlVG9GaWxsLCBVQ2hhciogYnVmZmVy
LCB1bnNpZ25lZCBidWZmZXJMZW5ndGgsIGNvbnN0IEZvbnQmIGZvbnQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKaW5kZXggYjY5ZjQzM2FkYmQ2M2YzYmM3ZDNlMzAxZmFj
MDIwMWEwODUzNTEyMy4uZDJhMjgwMDVkNzhmODBiMTRhMjczZTZlNDlkYjk2YWE5NWY4OWQ0NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaApAQCAtMTM0LDcgKzEzNCw3
IEBAIHB1YmxpYzoKICAgICBjb25zdCBGb250JiBpbnZpc2libGVGb250KCkgY29uc3Q7CiAKICAg
ICBib29sIGhhc1ZlcnRpY2FsR2x5cGhzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNWZXJ0aWNhbEds
eXBoczsgfQotICAgIGJvb2wgaXNUZXh0T3JpZW50YXRpb25GYWxsYmFjaygpIGNvbnN0IHsgcmV0
dXJuIG1fYXR0cmlidXRlcy5pc1RleHRPcmllbnRhdGlvbkZhbGxiYWNrID09IE9yaWVudGF0aW9u
RmFsbGJhY2s6OlllczsgfQorICAgIGJvb2wgaXNUZXh0T3JpZW50YXRpb25GYWxsYmFjaygpIGNv
bnN0IHsgcmV0dXJuIG1faXNUZXh0T3JpZW50YXRpb25GYWxsYmFjazsgfQogCiAgICAgY29uc3Qg
Rm9udE1ldHJpY3MmIGZvbnRNZXRyaWNzKCkgY29uc3QgeyByZXR1cm4gbV9mb250TWV0cmljczsg
fQogICAgIGZsb2F0IHNpemVQZXJVbml0KCkgY29uc3QgeyByZXR1cm4gcGxhdGZvcm1EYXRhKCku
c2l6ZSgpIC8gKGZvbnRNZXRyaWNzKCkudW5pdHNQZXJFbSgpID8gZm9udE1ldHJpY3MoKS51bml0
c1BlckVtKCkgOiAxKTsgfQpAQCAtMTc5LDkgKzE3OSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGRl
dGVybWluZVBpdGNoKCk7CiAgICAgUGl0Y2ggcGl0Y2goKSBjb25zdCB7IHJldHVybiBtX3RyZWF0
QXNGaXhlZFBpdGNoID8gRml4ZWRQaXRjaCA6IFZhcmlhYmxlUGl0Y2g7IH0KIAotICAgIE9yaWdp
biBvcmlnaW4oKSBjb25zdCB7IHJldHVybiBtX2F0dHJpYnV0ZXMub3JpZ2luOyB9Ci0gICAgYm9v
bCBpc0ludGVyc3RpdGlhbCgpIGNvbnN0IHsgcmV0dXJuIG1fYXR0cmlidXRlcy5pc0ludGVyc3Rp
dGlhbCA9PSBJbnRlcnN0aXRpYWw6OlllczsgfQotICAgIFZpc2liaWxpdHkgdmlzaWJpbGl0eSgp
IGNvbnN0IHsgcmV0dXJuIG1fYXR0cmlidXRlcy52aXNpYmlsaXR5OyB9CisgICAgT3JpZ2luIG9y
aWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luOyB9CisgICAgYm9vbCBpc0ludGVyc3RpdGlh
bCgpIGNvbnN0IHsgcmV0dXJuIG1faXNJbnRlcnN0aXRpYWw7IH0KKyAgICBWaXNpYmlsaXR5IHZp
c2liaWxpdHkoKSBjb25zdCB7IHJldHVybiBtX3Zpc2liaWxpdHk7IH0KICAgICBib29sIGFsbG93
c0FudGlhbGlhc2luZygpIGNvbnN0IHsgcmV0dXJuIG1fYWxsb3dzQW50aWFsaWFzaW5nOyB9CiAK
ICNpZiAhTE9HX0RJU0FCTEVECkBAIC0yMTUsMTggKzIxNSw2IEBAIHB1YmxpYzoKICAgICB2b2lk
IHNldElzVXNlZEluU3lzdGVtRmFsbGJhY2tGb250Q2FjaGUoKSB7IG1faXNVc2VkSW5TeXN0ZW1G
YWxsYmFja0ZvbnRDYWNoZSA9IHRydWU7IH0KICAgICBib29sIGlzVXNlZEluU3lzdGVtRmFsbGJh
Y2tGb250Q2FjaGUoKSBjb25zdCB7IHJldHVybiBtX2lzVXNlZEluU3lzdGVtRmFsbGJhY2tGb250
Q2FjaGU7IH0KIAotICAgIGNsYXNzIEF0dHJpYnV0ZXMgewotICAgIHB1YmxpYzoKLSAgICAgICAg
V0VCQ09SRV9FWFBPUlQgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGVuc3VyZVJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcigpIGNvbnN0OwotCi0gICAgICAgIG11dGFibGUgc3RkOjpvcHRp
b25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IHJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllcjsKLSAgICAgICAgRm9udDo6T3JpZ2luIG9yaWdpbiA6IDE7Ci0gICAgICAgIEZvbnQ6Oklu
dGVyc3RpdGlhbCBpc0ludGVyc3RpdGlhbCA6IDE7Ci0gICAgICAgIEZvbnQ6OlZpc2liaWxpdHkg
dmlzaWJpbGl0eSA6IDE7Ci0gICAgICAgIEZvbnQ6Ok9yaWVudGF0aW9uRmFsbGJhY2sgaXNUZXh0
T3JpZW50YXRpb25GYWxsYmFjayA6IDE7Ci0gICAgfTsKLSAgICBjb25zdCBBdHRyaWJ1dGVzJiBh
dHRyaWJ1dGVzKCkgY29uc3QgeyByZXR1cm4gbV9hdHRyaWJ1dGVzOyB9Ci0KIHByaXZhdGU6CiAg
ICAgV0VCQ09SRV9FWFBPUlQgRm9udChjb25zdCBGb250UGxhdGZvcm1EYXRhJiwgT3JpZ2luLCBJ
bnRlcnN0aXRpYWwsIFZpc2liaWxpdHksIE9yaWVudGF0aW9uRmFsbGJhY2ssIHN0ZDo6b3B0aW9u
YWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPik7CiAKQEAgLTMwMSw3ICsyODksNyBAQCBw
cml2YXRlOgogICAgIFJlZlB0cjxPcGVuVHlwZVZlcnRpY2FsRGF0YT4gbV92ZXJ0aWNhbERhdGE7
CiAjZW5kaWYKIAotICAgIEF0dHJpYnV0ZXMgbV9hdHRyaWJ1dGVzOworICAgIG11dGFibGUgc3Rk
OjpvcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IG1fcmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyOwogCiAgICAgc3RydWN0IERlcml2ZWRGb250cyB7CiAgICAgICAgIFdURl9N
QUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKQEAgLTM0Myw3ICszMzEsMTMgQEAgcHJpdmF0ZToK
ICAgICBmbG9hdCBtX3NwYWNlV2lkdGggeyAwIH07CiAgICAgZmxvYXQgbV9zeW50aGV0aWNCb2xk
T2Zmc2V0IHsgMCB9OwogCisgICAgT3JpZ2luIG1fb3JpZ2luOyAvLyBXaGV0aGVyIG9yIG5vdCB3
ZSBhcmUgY3VzdG9tIGZvbnQgbG9hZGVkIHZpYSBAZm9udC1mYWNlCisgICAgVmlzaWJpbGl0eSBt
X3Zpc2liaWxpdHk7IC8vIEBmb250LWZhY2UncyBpbnRlcm5hbCB0aW1lciBjYW4gY2F1c2UgdXMg
dG8gc2hvdyBmb250cyBldmVuIHdoZW4gYSBmb250IGlzIGJlaW5nIGRvd25sb2FkZWQuCisKICAg
ICB1bnNpZ25lZCBtX3RyZWF0QXNGaXhlZFBpdGNoIDogMTsKKyAgICB1bnNpZ25lZCBtX2lzSW50
ZXJzdGl0aWFsIDogMTsgLy8gV2hldGhlciBvciBub3QgdGhpcyBjdXN0b20gZm9udCBpcyB0aGUg
bGFzdCByZXNvcnQgcGxhY2Vob2xkZXIgZm9yIGEgbG9hZGluZyBmb250CisKKyAgICB1bnNpZ25l
ZCBtX2lzVGV4dE9yaWVudGF0aW9uRmFsbGJhY2sgOiAxOwogICAgIHVuc2lnbmVkIG1faXNCcm9r
ZW5JZGVvZ3JhcGhGYWxsYmFjayA6IDE7CiAgICAgdW5zaWduZWQgbV9oYXNWZXJ0aWNhbEdseXBo
cyA6IDE7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnRDdXN0b21QbGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAppbmRleCBhNmJmYmJiOTRhZjYyOTc3MzgyZWYxMjYz
Njk1NzU2NTA0ODhkNDU5Li4yMjRlMGI5ZTZhNjFlZjdlZmE0MjRiZTYyN2UzOTc3MjQ0YTY3OTE3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q3VzdG9t
UGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YS5oCkBAIC0yNiw3ICsyNiw2IEBACiAjcHJhZ21hIG9uY2UKIAog
I2luY2x1ZGUgIkZvbnRQbGF0Zm9ybURhdGEuaCIKLSNpbmNsdWRlICJSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9O
b25jb3B5YWJsZS5oPgogCkBAIC01NCw3ICs1Myw3IEBAIGNsYXNzIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI7CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgRm9udFRhZ2dlZFNldHRpbmdzOwog
dHlwZWRlZiBGb250VGFnZ2VkU2V0dGluZ3M8aW50PiBGb250RmVhdHVyZVNldHRpbmdzOwogCi1z
dHJ1Y3QgRm9udEN1c3RvbVBsYXRmb3JtRGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPEZvbnRDdXN0
b21QbGF0Zm9ybURhdGE+IHsKK3N0cnVjdCBGb250Q3VzdG9tUGxhdGZvcm1EYXRhIHsKICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhKTsKIHB1YmxpYzoKQEAgLTY0LDcgKzYzLDYgQEAgcHVibGljOgogICAg
IEZvbnRDdXN0b21QbGF0Zm9ybURhdGEoQ1RGb250RGVzY3JpcHRvclJlZiBmb250RGVzY3JpcHRv
ciwgRm9udFBsYXRmb3JtRGF0YTo6Q3JlYXRpb25EYXRhJiYgY3JlYXRpb25EYXRhKQogICAgICAg
ICA6IGZvbnREZXNjcmlwdG9yKGZvbnREZXNjcmlwdG9yKQogICAgICAgICAsIGNyZWF0aW9uRGF0
YShXVEZNb3ZlKGNyZWF0aW9uRGF0YSkpCi0gICAgICAgICwgbV9yZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyOjpnZW5lcmF0ZVRocmVhZFNhZmUo
KSkKICAgICB7CiAgICAgfQogI2Vsc2UKQEAgLTg1LDEwICs4Myw4IEBAIHB1YmxpYzoKICNlbHNl
CiAgICAgUmVmUHRyPGNhaXJvX2ZvbnRfZmFjZV90PiBtX2ZvbnRGYWNlOwogI2VuZGlmCi0KLSAg
ICBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgbV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXI7CiB9OwogCi1XRUJDT1JFX0VYUE9SVCBSZWZQdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4g
Y3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcm
KTsKK1dFQkNPUkVfRVhQT1JUIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRh
PiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmlu
ZyYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuY3BwCmluZGV4IDViMGM2MzIwMjUw
OWZmOGZiNGZiNjQ0NjI0NjUxZWM1YmUxY2E4ZTQuLjRjOWQwNjY2ZGFkOWE0YjcxYjVhYzc0YjVj
ZmYyMWQyNjM2ZjA5ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnRQbGF0Zm9ybURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuY3BwCkBAIC0yMSw5ICsyMSw3IEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiRm9udFBsYXRmb3JtRGF0YS5oIgogCi0KICNpbmNsdWRlICJG
b250Q2FjaGUuaCIKLSNpbmNsdWRlICJGb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgiCiAjaW5jbHVk
ZSAiRm9udERlc2NyaXB0aW9uLmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGVDb25zdGFudHMuaCIK
ICNpbmNsdWRlICJTdHlsZUZvbnRTaXplRnVuY3Rpb25zLmgiCkBAIC00MSwyMSArMzksMTcgQEAg
Rm9udFBsYXRmb3JtRGF0YTo6Rm9udFBsYXRmb3JtRGF0YSgpCiB7CiB9CiAKLUZvbnRQbGF0Zm9y
bURhdGE6OkZvbnRQbGF0Zm9ybURhdGEoZmxvYXQgc2l6ZSwgYm9vbCBzeW50aGV0aWNCb2xkLCBi
b29sIHN5bnRoZXRpY09ibGlxdWUsIEZvbnRPcmllbnRhdGlvbiBvcmllbnRhdGlvbiwgRm9udFdp
ZHRoVmFyaWFudCB3aWR0aFZhcmlhbnQsIFRleHRSZW5kZXJpbmdNb2RlIHRleHRSZW5kZXJpbmdN
b2RlLCBjb25zdCBGb250Q3VzdG9tUGxhdGZvcm1EYXRhKiBjdXN0b21QbGF0Zm9ybURhdGEpCitG
b250UGxhdGZvcm1EYXRhOjpGb250UGxhdGZvcm1EYXRhKGZsb2F0IHNpemUsIGJvb2wgc3ludGhl
dGljQm9sZCwgYm9vbCBzeW50aGV0aWNPYmxpcXVlLCBGb250T3JpZW50YXRpb24gb3JpZW50YXRp
b24sIEZvbnRXaWR0aFZhcmlhbnQgd2lkdGhWYXJpYW50LCBUZXh0UmVuZGVyaW5nTW9kZSB0ZXh0
UmVuZGVyaW5nTW9kZSwgY29uc3QgQ3JlYXRpb25EYXRhKiBjcmVhdGlvbkRhdGEpCiAgICAgOiBt
X3NpemUoc2l6ZSkKICAgICAsIG1fb3JpZW50YXRpb24ob3JpZW50YXRpb24pCiAgICAgLCBtX3dp
ZHRoVmFyaWFudCh3aWR0aFZhcmlhbnQpCiAgICAgLCBtX3RleHRSZW5kZXJpbmdNb2RlKHRleHRS
ZW5kZXJpbmdNb2RlKQotICAgICwgbV9jdXN0b21QbGF0Zm9ybURhdGEoY3VzdG9tUGxhdGZvcm1E
YXRhKQorICAgICwgbV9jcmVhdGlvbkRhdGEobWFrZU9wdGlvbmFsRnJvbVBvaW50ZXIoY3JlYXRp
b25EYXRhKSkKICAgICAsIG1fc3ludGhldGljQm9sZChzeW50aGV0aWNCb2xkKQogICAgICwgbV9z
eW50aGV0aWNPYmxpcXVlKHN5bnRoZXRpY09ibGlxdWUpCiB7CiB9CiAKLUZvbnRQbGF0Zm9ybURh
dGE6On5Gb250UGxhdGZvcm1EYXRhKCkgPSBkZWZhdWx0OwotRm9udFBsYXRmb3JtRGF0YTo6Rm9u
dFBsYXRmb3JtRGF0YShjb25zdCBGb250UGxhdGZvcm1EYXRhJikgPSBkZWZhdWx0OwotRm9udFBs
YXRmb3JtRGF0YSYgRm9udFBsYXRmb3JtRGF0YTo6b3BlcmF0b3I9KGNvbnN0IEZvbnRQbGF0Zm9y
bURhdGEmKSA9IGRlZmF1bHQ7Ci0KICNpZiAhVVNFKEZSRUVUWVBFKQogRm9udFBsYXRmb3JtRGF0
YSBGb250UGxhdGZvcm1EYXRhOjpjbG9uZVdpdGhPcmllbnRhdGlvbihjb25zdCBGb250UGxhdGZv
cm1EYXRhJiBzb3VyY2UsIEZvbnRPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKIHsKQEAgLTEwMSwx
NSArOTUsNiBAQCB2b2lkIEZvbnRQbGF0Zm9ybURhdGE6OnVwZGF0ZVNpemVXaXRoRm9udFNpemVB
ZGp1c3QoY29uc3QgRm9udFNpemVBZGp1c3QmIGZvbnRTaQogICAgIHVwZGF0ZVNpemUoc3RkOjpt
aW4oYWRqdXN0ZWRGb250U2l6ZSwgbWF4aW11bUFsbG93ZWRGb250U2l6ZSkpOwogfQogCi1jb25z
dCBGb250UGxhdGZvcm1EYXRhOjpDcmVhdGlvbkRhdGEqIEZvbnRQbGF0Zm9ybURhdGE6OmNyZWF0
aW9uRGF0YSgpIGNvbnN0Ci17Ci0jaWYgUExBVEZPUk0oV0lOKSB8fCBVU0UoQ09SRV9URVhUKQot
ICAgIHJldHVybiBtX2N1c3RvbVBsYXRmb3JtRGF0YSA/ICZtX2N1c3RvbVBsYXRmb3JtRGF0YS0+
Y3JlYXRpb25EYXRhIDogbnVsbHB0cjsKLSNlbHNlCi0gICAgcmV0dXJuIG51bGxwdHI7Ci0jZW5k
aWYKLX0KLQogI2lmICFQTEFURk9STShDT0NPQSkgJiYgIVVTRShGUkVFVFlQRSkKIFZlY3RvcjxG
b250UGxhdGZvcm1EYXRhOjpGb250VmFyaWF0aW9uQXhpcz4gRm9udFBsYXRmb3JtRGF0YTo6dmFy
aWF0aW9uQXhlcyhTaG91bGRMb2NhbGl6ZUF4aXNOYW1lcykgY29uc3QKIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaAppbmRleCBm
ZmU4ZGZhZDk4ZmEzZjJiMTlmZGY2MDNjNDczN2VjOWQyNjI4NzJlLi5hYzA0MDIwYmY1MWI4YzJh
ZTdhMzdiNmRlMjcwNzZlNzRhODM3ZDdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oCkBAIC01Niw3ICs1Niw2IEBAIE9CSkNf
Q0xBU1MgTlNGb250OwogI2VuZGlmCiAKICNpZiBVU0UoQ09SRV9URVhUKQotI2luY2x1ZGUgPHBh
bC9zcGkvY2YvQ29yZVRleHRTUEkuaD4KIHR5cGVkZWYgY29uc3Qgc3RydWN0IF9fQ1RGb250KiBD
VEZvbnRSZWY7CiAjZW5kaWYKIApAQCAtNzQsNyArNzMsNiBAQCBpbnRlcmZhY2UgSURXcml0ZUZv
bnRGYWNlOwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGb250RGVzY3JpcHRpb247Ci1z
dHJ1Y3QgRm9udEN1c3RvbVBsYXRmb3JtRGF0YTsKIHN0cnVjdCBGb250U2l6ZUFkanVzdDsKIAog
Ly8gVGhpcyBjbGFzcyBpcyBjb25jZXB0dWFsbHkgaW1tdXRhYmxlLiBPbmNlIGNyZWF0ZWQsIG5v
IGluc3RhbmNlcyBzaG91bGQgZXZlciBjaGFuZ2UgKGluIGFuIG9ic2VydmFibGUgd2F5KS4KQEAg
LTExMCw1NyArMTA4LDIxIEBAIHB1YmxpYzoKICAgICBGb250UGxhdGZvcm1EYXRhKFdURjo6SGFz
aFRhYmxlRGVsZXRlZFZhbHVlVHlwZSk7CiAgICAgRm9udFBsYXRmb3JtRGF0YSgpOwogCi0gICAg
Rm9udFBsYXRmb3JtRGF0YShmbG9hdCBzaXplLCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wgc3lu
dGhldGljT2JsaXF1ZSwgRm9udE9yaWVudGF0aW9uID0gRm9udE9yaWVudGF0aW9uOjpIb3Jpem9u
dGFsLCBGb250V2lkdGhWYXJpYW50ID0gRm9udFdpZHRoVmFyaWFudDo6UmVndWxhcldpZHRoLCBU
ZXh0UmVuZGVyaW5nTW9kZSA9IFRleHRSZW5kZXJpbmdNb2RlOjpBdXRvVGV4dFJlbmRlcmluZywg
Y29uc3QgRm9udEN1c3RvbVBsYXRmb3JtRGF0YSogPSBudWxscHRyKTsKKyAgICBGb250UGxhdGZv
cm1EYXRhKGZsb2F0IHNpemUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNPYmxp
cXVlLCBGb250T3JpZW50YXRpb24gPSBGb250T3JpZW50YXRpb246Okhvcml6b250YWwsIEZvbnRX
aWR0aFZhcmlhbnQgPSBGb250V2lkdGhWYXJpYW50OjpSZWd1bGFyV2lkdGgsIFRleHRSZW5kZXJp
bmdNb2RlID0gVGV4dFJlbmRlcmluZ01vZGU6OkF1dG9UZXh0UmVuZGVyaW5nLCBjb25zdCBDcmVh
dGlvbkRhdGEqID0gbnVsbHB0cik7CiAKICNpZiBVU0UoQ09SRV9URVhUKQotICAgIFdFQkNPUkVf
RVhQT1JUIEZvbnRQbGF0Zm9ybURhdGEoUmV0YWluUHRyPENURm9udFJlZj4mJiwgZmxvYXQgc2l6
ZSwgYm9vbCBzeW50aGV0aWNCb2xkID0gZmFsc2UsIGJvb2wgc3ludGhldGljT2JsaXF1ZSA9IGZh
bHNlLCBGb250T3JpZW50YXRpb24gPSBGb250T3JpZW50YXRpb246Okhvcml6b250YWwsIEZvbnRX
aWR0aFZhcmlhbnQgPSBGb250V2lkdGhWYXJpYW50OjpSZWd1bGFyV2lkdGgsIFRleHRSZW5kZXJp
bmdNb2RlID0gVGV4dFJlbmRlcmluZ01vZGU6OkF1dG9UZXh0UmVuZGVyaW5nLCBjb25zdCBGb250
Q3VzdG9tUGxhdGZvcm1EYXRhKiA9IG51bGxwdHIpOworICAgIFdFQkNPUkVfRVhQT1JUIEZvbnRQ
bGF0Zm9ybURhdGEoUmV0YWluUHRyPENURm9udFJlZj4mJiwgZmxvYXQgc2l6ZSwgYm9vbCBzeW50
aGV0aWNCb2xkID0gZmFsc2UsIGJvb2wgc3ludGhldGljT2JsaXF1ZSA9IGZhbHNlLCBGb250T3Jp
ZW50YXRpb24gPSBGb250T3JpZW50YXRpb246Okhvcml6b250YWwsIEZvbnRXaWR0aFZhcmlhbnQg
PSBGb250V2lkdGhWYXJpYW50OjpSZWd1bGFyV2lkdGgsIFRleHRSZW5kZXJpbmdNb2RlID0gVGV4
dFJlbmRlcmluZ01vZGU6OkF1dG9UZXh0UmVuZGVyaW5nLCBjb25zdCBDcmVhdGlvbkRhdGEqID0g
bnVsbHB0cik7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKFdJTikKLSAgICBXRUJDT1JFX0VYUE9S
VCBGb250UGxhdGZvcm1EYXRhKEdESU9iamVjdDxIRk9OVD4sIGZsb2F0IHNpemUsIGJvb2wgc3lu
dGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNPYmxpcXVlLCBjb25zdCBGb250Q3VzdG9tUGxhdGZv
cm1EYXRhKiA9IG51bGxwdHIpOwotICAgIEZvbnRQbGF0Zm9ybURhdGEoR0RJT2JqZWN0PEhGT05U
PiwgY2Fpcm9fZm9udF9mYWNlX3QqLCBmbG9hdCBzaXplLCBib29sIGJvbGQsIGJvb2wgaXRhbGlj
LCBjb25zdCBGb250Q3VzdG9tUGxhdGZvcm1EYXRhKiA9IG51bGxwdHIpOworICAgIFdFQkNPUkVf
RVhQT1JUIEZvbnRQbGF0Zm9ybURhdGEoR0RJT2JqZWN0PEhGT05UPiwgZmxvYXQgc2l6ZSwgYm9v
bCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY09ibGlxdWUsIGNvbnN0IENyZWF0aW9uRGF0
YSogPSBudWxscHRyKTsKKyAgICBGb250UGxhdGZvcm1EYXRhKEdESU9iamVjdDxIRk9OVD4sIGNh
aXJvX2ZvbnRfZmFjZV90KiwgZmxvYXQgc2l6ZSwgYm9vbCBib2xkLCBib29sIGl0YWxpYywgY29u
c3QgQ3JlYXRpb25EYXRhKiA9IG51bGxwdHIpOwogI2VuZGlmCiAKICNpZiBVU0UoRlJFRVRZUEUp
CiAgICAgRm9udFBsYXRmb3JtRGF0YShjYWlyb19mb250X2ZhY2VfdCosIFJlZlB0cjxGY1BhdHRl
cm4+JiYsIGZsb2F0IHNpemUsIGJvb2wgZml4ZWRXaWR0aCwgYm9vbCBzeW50aGV0aWNCb2xkLCBi
b29sIHN5bnRoZXRpY09ibGlxdWUsIEZvbnRPcmllbnRhdGlvbik7CiAjZW5kaWYKIAotICAgIGNs
YXNzIEF0dHJpYnV0ZXMgewotICAgIHB1YmxpYzoKLSAgICAgICAgQXR0cmlidXRlcyhmbG9hdCBz
aXplLCBGb250T3JpZW50YXRpb24gb3JpZW50YXRpb24sIEZvbnRXaWR0aFZhcmlhbnQgd2lkdGhW
YXJpYW50LCBUZXh0UmVuZGVyaW5nTW9kZSB0ZXh0UmVuZGVyaW5nTW9kZSwgYm9vbCBzeW50aGV0
aWNCb2xkLCBib29sIHN5bnRoZXRpY09ibGlxdWUpCi0gICAgICAgICAgICA6IG1fc2l6ZShzaXpl
KQotICAgICAgICAgICAgLCBtX29yaWVudGF0aW9uKG9yaWVudGF0aW9uKQotICAgICAgICAgICAg
LCBtX3dpZHRoVmFyaWFudCh3aWR0aFZhcmlhbnQpCi0gICAgICAgICAgICAsIG1fdGV4dFJlbmRl
cmluZ01vZGUodGV4dFJlbmRlcmluZ01vZGUpCi0gICAgICAgICAgICAsIG1fc3ludGhldGljQm9s
ZChzeW50aGV0aWNCb2xkKQotICAgICAgICAgICAgLCBtX3N5bnRoZXRpY09ibGlxdWUoc3ludGhl
dGljT2JsaXF1ZSkKLSAgICAgICAgeyB9Ci0KLSAgICAgICAgZmxvYXQgbV9zaXplIHsgMCB9Owot
Ci0gICAgICAgIEZvbnRPcmllbnRhdGlvbiBtX29yaWVudGF0aW9uIHsgRm9udE9yaWVudGF0aW9u
OjpIb3Jpem9udGFsIH07Ci0gICAgICAgIEZvbnRXaWR0aFZhcmlhbnQgbV93aWR0aFZhcmlhbnQg
eyBGb250V2lkdGhWYXJpYW50OjpSZWd1bGFyV2lkdGggfTsKLSAgICAgICAgVGV4dFJlbmRlcmlu
Z01vZGUgbV90ZXh0UmVuZGVyaW5nTW9kZSB7IFRleHRSZW5kZXJpbmdNb2RlOjpBdXRvVGV4dFJl
bmRlcmluZyB9OwotCi0gICAgICAgIGJvb2wgbV9zeW50aGV0aWNCb2xkIHsgZmFsc2UgfTsKLSAg
ICAgICAgYm9vbCBtX3N5bnRoZXRpY09ibGlxdWUgeyBmYWxzZSB9OwotCi0jaWYgUExBVEZPUk0o
V0lOKQotICAgICAgICBMT0dGT05UIG1fZm9udDsKLSNlbGlmIFVTRShDT1JFX1RFWFQpCi0gICAg
ICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IG1fYXR0cmlidXRlczsKLSAgICAgICAgQ1RG
b250RGVzY3JpcHRvck9wdGlvbnMgbV9vcHRpb25zOwotICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJp
bmdSZWY+IG1fdXJsOwotICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IG1fcHNOYW1lOwot
I2VuZGlmCi0gICAgfTsKLQotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBGb250UGxhdGZvcm1E
YXRhIGNyZWF0ZShjb25zdCBBdHRyaWJ1dGVzJiwgY29uc3QgRm9udEN1c3RvbVBsYXRmb3JtRGF0
YSopOwotCi0gICAgV0VCQ09SRV9FWFBPUlQgRm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250UGxh
dGZvcm1EYXRhJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgRm9udFBsYXRmb3JtRGF0YSYgb3BlcmF0
b3I9KGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB+Rm9udFBs
YXRmb3JtRGF0YSgpOwotCiAgICAgc3RhdGljIEZvbnRQbGF0Zm9ybURhdGEgY2xvbmVXaXRoT3Jp
ZW50YXRpb24oY29uc3QgRm9udFBsYXRmb3JtRGF0YSYsIEZvbnRPcmllbnRhdGlvbik7CiAgICAg
c3RhdGljIEZvbnRQbGF0Zm9ybURhdGEgY2xvbmVXaXRoU3ludGhldGljT2JsaXF1ZShjb25zdCBG
b250UGxhdGZvcm1EYXRhJiwgYm9vbCk7CiAKQEAgLTI1NSwxNCArMjE3LDExIEBAIHB1YmxpYzoK
ICNlbmRpZgogICAgIH07CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBDcmVhdGlvbkRhdGEq
IGNyZWF0aW9uRGF0YSgpIGNvbnN0OwotICAgIGNvbnN0IEZvbnRDdXN0b21QbGF0Zm9ybURhdGEq
IGN1c3RvbVBsYXRmb3JtRGF0YSgpIGNvbnN0CisgICAgY29uc3QgQ3JlYXRpb25EYXRhKiBjcmVh
dGlvbkRhdGEoKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIG1fY3VzdG9tUGxhdGZvcm1E
YXRhLmdldCgpOworICAgICAgICByZXR1cm4gbV9jcmVhdGlvbkRhdGEgPyAmbV9jcmVhdGlvbkRh
dGEudmFsdWUoKSA6IG51bGxwdHI7CiAgICAgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgQXR0cmli
dXRlcyBhdHRyaWJ1dGVzKCkgY29uc3Q7Ci0KIHByaXZhdGU6CiAgICAgYm9vbCBwbGF0Zm9ybUlz
RXF1YWwoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYpIGNvbnN0OwogICAgIC8vICB1cGRhdGVTaXpl
IHRvIGJlIGltcGxlbWVudGVkIGJ5IGVhY2ggcGxhdGZvcm0gc2luY2UgaXQgbmVlZHMgdG8gcmUt
aW5zdGFudGlhdGUgdGhlIHBsYXRmb3JtIGZvbnQgb2JqZWN0LgpAQCAtMzA0LDcgKzI2Myw3IEBA
IHByaXZhdGU6CiAKICAgICAvLyBUaGlzIGlzIGNvbmNlcHR1YWxseSBjb25zdCwgYnV0IHdlIGNh
bid0IG1ha2UgaXQgYWN0dWFsbHkgY29uc3QsCiAgICAgLy8gYmVjYXVzZSBGb250UGxhdGZvcm1E
YXRhIGlzIHVzZWQgYXMgYSBrZXkgaW4gYSBIYXNoTWFwLgotICAgIFJlZlB0cjxjb25zdCBGb250
Q3VzdG9tUGxhdGZvcm1EYXRhPiBtX2N1c3RvbVBsYXRmb3JtRGF0YTsKKyAgICBzdGQ6Om9wdGlv
bmFsPENyZWF0aW9uRGF0YT4gbV9jcmVhdGlvbkRhdGE7CiAKICAgICBib29sIG1fc3ludGhldGlj
Qm9sZCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3N5bnRoZXRpY09ibGlxdWUgeyBmYWxzZSB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENh
Y2hlQ29yZVRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
Rm9udENhY2hlQ29yZVRleHQuY3BwCmluZGV4IGRlM2EzNDQyODkyYmE0YmRiYmRjMDAwMjdkYTEx
ZTY2YTk2ODQ0NTQuLmNiODJhYzYwMzA0YTBlOGY0N2M5ZTNkNzYyYWQxN2Q1MjBjN2FiZWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNo
ZUNvcmVUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAKQEAgLTc5MywxMCArNzkzLDEwIEBAIFJlZlB0cjxGb250
PiBGb250Q2FjaGU6OnN5c3RlbUZhbGxiYWNrRm9yQ2hhcmFjdGVycyhjb25zdCBGb250RGVzY3Jp
cHRpb24mIGRlc2NyCiAKICAgICBhdXRvIFtzeW50aGV0aWNCb2xkLCBzeW50aGV0aWNPYmxpcXVl
XSA9IGNvbXB1dGVOZWNlc3NhcnlTeW50aGVzaXMoc3Vic3RpdHV0ZUZvbnQsIGRlc2NyaXB0aW9u
LCBTaG91bGRDb21wdXRlUGh5c2ljYWxUcmFpdHM6Ok5vLCBpc0ZvclBsYXRmb3JtRm9udCA9PSBJ
c0ZvclBsYXRmb3JtRm9udDo6WWVzKS5ib2xkT2JsaXF1ZVBhaXIoKTsKIAotICAgIGNvbnN0IEZv
bnRDdXN0b21QbGF0Zm9ybURhdGEqIGN1c3RvbVBsYXRmb3JtRGF0YSA9IG51bGxwdHI7CisgICAg
Y29uc3QgRm9udFBsYXRmb3JtRGF0YTo6Q3JlYXRpb25EYXRhKiBjcmVhdGlvbkRhdGEgPSBudWxs
cHRyOwogICAgIGlmIChzYWZlQ0ZFcXVhbChwbGF0Zm9ybURhdGEuZm9udCgpLCBzdWJzdGl0dXRl
Rm9udCkpCi0gICAgICAgIGN1c3RvbVBsYXRmb3JtRGF0YSA9IHBsYXRmb3JtRGF0YS5jdXN0b21Q
bGF0Zm9ybURhdGEoKTsKLSAgICBGb250UGxhdGZvcm1EYXRhIGFsdGVybmF0ZUZvbnQoc3Vic3Rp
dHV0ZUZvbnQsIHBsYXRmb3JtRGF0YS5zaXplKCksIHN5bnRoZXRpY0JvbGQsIHN5bnRoZXRpY09i
bGlxdWUsIHBsYXRmb3JtRGF0YS5vcmllbnRhdGlvbigpLCBwbGF0Zm9ybURhdGEud2lkdGhWYXJp
YW50KCksIHBsYXRmb3JtRGF0YS50ZXh0UmVuZGVyaW5nTW9kZSgpLCBjdXN0b21QbGF0Zm9ybURh
dGEpOworICAgICAgICBjcmVhdGlvbkRhdGEgPSBwbGF0Zm9ybURhdGEuY3JlYXRpb25EYXRhKCk7
CisgICAgRm9udFBsYXRmb3JtRGF0YSBhbHRlcm5hdGVGb250KHN1YnN0aXR1dGVGb250LCBwbGF0
Zm9ybURhdGEuc2l6ZSgpLCBzeW50aGV0aWNCb2xkLCBzeW50aGV0aWNPYmxpcXVlLCBwbGF0Zm9y
bURhdGEub3JpZW50YXRpb24oKSwgcGxhdGZvcm1EYXRhLndpZHRoVmFyaWFudCgpLCBwbGF0Zm9y
bURhdGEudGV4dFJlbmRlcmluZ01vZGUoKSwgY3JlYXRpb25EYXRhKTsKIAogICAgIHJldHVybiBm
b250Rm9yUGxhdGZvcm1EYXRhKGFsdGVybmF0ZUZvbnQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udENvcmVUZXh0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRDb3JlVGV4dC5jcHAK
aW5kZXggMWNmM2RlNTk5YWY4NzI1YmIyY2RmZjM5NjE1NGY3NzM0ZmI4NjMyYS4uNWY0ZmI2NmY3
ZjhiN2I5YjAxODViM2FhYjhkNDA2YzViMzQ2YmJhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udENvcmVUZXh0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250Q29yZVRleHQuY3BwCkBA
IC0zODEsNyArMzgxLDcgQEAgYm9vbCBGb250OjpzdXBwb3J0c0FsbFBldGl0ZUNhcHMoKSBjb25z
dAogfQogI2VuZGlmCiAKLXN0YXRpYyBSZWZQdHI8Rm9udD4gY3JlYXRlRGVyaXZhdGl2ZUZvbnQo
Q1RGb250UmVmIGZvbnQsIGZsb2F0IHNpemUsIEZvbnRPcmllbnRhdGlvbiBvcmllbnRhdGlvbiwg
Q1RGb250U3ltYm9saWNUcmFpdHMgZm9udFRyYWl0cywgYm9vbCBzeW50aGV0aWNCb2xkLCBib29s
IHN5bnRoZXRpY0l0YWxpYywgRm9udFdpZHRoVmFyaWFudCBmb250V2lkdGhWYXJpYW50LCBUZXh0
UmVuZGVyaW5nTW9kZSB0ZXh0UmVuZGVyaW5nTW9kZSwgY29uc3QgRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YSogY3VzdG9tUGxhdGZvcm1EYXRhKQorc3RhdGljIFJlZlB0cjxGb250PiBjcmVhdGVEZXJp
dmF0aXZlRm9udChDVEZvbnRSZWYgZm9udCwgZmxvYXQgc2l6ZSwgRm9udE9yaWVudGF0aW9uIG9y
aWVudGF0aW9uLCBDVEZvbnRTeW1ib2xpY1RyYWl0cyBmb250VHJhaXRzLCBib29sIHN5bnRoZXRp
Y0JvbGQsIGJvb2wgc3ludGhldGljSXRhbGljLCBGb250V2lkdGhWYXJpYW50IGZvbnRXaWR0aFZh
cmlhbnQsIFRleHRSZW5kZXJpbmdNb2RlIHRleHRSZW5kZXJpbmdNb2RlLCBjb25zdCBGb250UGxh
dGZvcm1EYXRhOjpDcmVhdGlvbkRhdGEqIGNyZWF0aW9uRGF0YSkKIHsKICAgICBpZiAoIWZvbnQp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMzk1LDcgKzM5NSw3IEBAIHN0YXRpYyBSZWZQ
dHI8Rm9udD4gY3JlYXRlRGVyaXZhdGl2ZUZvbnQoQ1RGb250UmVmIGZvbnQsIGZsb2F0IHNpemUs
IEZvbnRPcmllbnRhCiAKICAgICBib29sIHVzZWRTeW50aGV0aWNCb2xkID0gKGZvbnRUcmFpdHMg
JiBrQ1RGb250Qm9sZFRyYWl0KSAmJiAhKHNjYWxlZEZvbnRUcmFpdHMgJiBrQ1RGb250VHJhaXRC
b2xkKTsKICAgICBib29sIHVzZWRTeW50aGV0aWNPYmxpcXVlID0gKGZvbnRUcmFpdHMgJiBrQ1RG
b250SXRhbGljVHJhaXQpICYmICEoc2NhbGVkRm9udFRyYWl0cyAmIGtDVEZvbnRUcmFpdEl0YWxp
Yyk7Ci0gICAgRm9udFBsYXRmb3JtRGF0YSBzY2FsZWRGb250RGF0YShmb250LCBzaXplLCB1c2Vk
U3ludGhldGljQm9sZCwgdXNlZFN5bnRoZXRpY09ibGlxdWUsIG9yaWVudGF0aW9uLCBmb250V2lk
dGhWYXJpYW50LCB0ZXh0UmVuZGVyaW5nTW9kZSwgY3VzdG9tUGxhdGZvcm1EYXRhKTsKKyAgICBG
b250UGxhdGZvcm1EYXRhIHNjYWxlZEZvbnREYXRhKGZvbnQsIHNpemUsIHVzZWRTeW50aGV0aWNC
b2xkLCB1c2VkU3ludGhldGljT2JsaXF1ZSwgb3JpZW50YXRpb24sIGZvbnRXaWR0aFZhcmlhbnQs
IHRleHRSZW5kZXJpbmdNb2RlLCBjcmVhdGlvbkRhdGEpOwogCiAgICAgcmV0dXJuIEZvbnQ6OmNy
ZWF0ZShzY2FsZWRGb250RGF0YSk7CiB9CkBAIC01MzUsNyArNTM1LDcgQEAgUmVmUHRyPEZvbnQ+
IEZvbnQ6OmNyZWF0ZUZvbnRXaXRob3V0U3ludGhlc2l6YWJsZUZlYXR1cmVzKCkgY29uc3QKICAg
ICBmbG9hdCBzaXplID0gbV9wbGF0Zm9ybURhdGEuc2l6ZSgpOwogICAgIENURm9udFN5bWJvbGlj
VHJhaXRzIGZvbnRUcmFpdHMgPSBDVEZvbnRHZXRTeW1ib2xpY1RyYWl0cyhtX3BsYXRmb3JtRGF0
YS5mb250KCkpOwogICAgIFJldGFpblB0cjxDVEZvbnRSZWY+IGN0Rm9udCA9IGNyZWF0ZUNURm9u
dFdpdGhvdXRTeW50aGVzaXphYmxlRmVhdHVyZXMobV9wbGF0Zm9ybURhdGEuZm9udCgpKTsKLSAg
ICByZXR1cm4gY3JlYXRlRGVyaXZhdGl2ZUZvbnQoY3RGb250LmdldCgpLCBzaXplLCBtX3BsYXRm
b3JtRGF0YS5vcmllbnRhdGlvbigpLCBmb250VHJhaXRzLCBtX3BsYXRmb3JtRGF0YS5zeW50aGV0
aWNCb2xkKCksIG1fcGxhdGZvcm1EYXRhLnN5bnRoZXRpY09ibGlxdWUoKSwgbV9wbGF0Zm9ybURh
dGEud2lkdGhWYXJpYW50KCksIG1fcGxhdGZvcm1EYXRhLnRleHRSZW5kZXJpbmdNb2RlKCksIG1f
cGxhdGZvcm1EYXRhLmN1c3RvbVBsYXRmb3JtRGF0YSgpKTsKKyAgICByZXR1cm4gY3JlYXRlRGVy
aXZhdGl2ZUZvbnQoY3RGb250LmdldCgpLCBzaXplLCBtX3BsYXRmb3JtRGF0YS5vcmllbnRhdGlv
bigpLCBmb250VHJhaXRzLCBtX3BsYXRmb3JtRGF0YS5zeW50aGV0aWNCb2xkKCksIG1fcGxhdGZv
cm1EYXRhLnN5bnRoZXRpY09ibGlxdWUoKSwgbV9wbGF0Zm9ybURhdGEud2lkdGhWYXJpYW50KCks
IG1fcGxhdGZvcm1EYXRhLnRleHRSZW5kZXJpbmdNb2RlKCksIG1fcGxhdGZvcm1EYXRhLmNyZWF0
aW9uRGF0YSgpKTsKIH0KIAogUmVmUHRyPEZvbnQ+IEZvbnQ6OnBsYXRmb3JtQ3JlYXRlU2NhbGVk
Rm9udChjb25zdCBGb250RGVzY3JpcHRpb24mLCBmbG9hdCBzY2FsZUZhY3RvcikgY29uc3QKQEAg
LTU0NSw3ICs1NDUsNyBAQCBSZWZQdHI8Rm9udD4gRm9udDo6cGxhdGZvcm1DcmVhdGVTY2FsZWRG
b250KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGZsb2F0IHNjYWxlRgogICAgIFJldGFpblB0cjxD
VEZvbnREZXNjcmlwdG9yUmVmPiBmb250RGVzY3JpcHRvciA9IGFkb3B0Q0YoQ1RGb250Q29weUZv
bnREZXNjcmlwdG9yKG1fcGxhdGZvcm1EYXRhLmZvbnQoKSkpOwogICAgIFJldGFpblB0cjxDVEZv
bnRSZWY+IHNjYWxlZEZvbnQgPSBhZG9wdENGKENURm9udENyZWF0ZVdpdGhGb250RGVzY3JpcHRv
cihmb250RGVzY3JpcHRvci5nZXQoKSwgc2l6ZSwgbnVsbHB0cikpOwogCi0gICAgcmV0dXJuIGNy
ZWF0ZURlcml2YXRpdmVGb250KHNjYWxlZEZvbnQuZ2V0KCksIHNpemUsIG1fcGxhdGZvcm1EYXRh
Lm9yaWVudGF0aW9uKCksIGZvbnRUcmFpdHMsIG1fcGxhdGZvcm1EYXRhLnN5bnRoZXRpY0JvbGQo
KSwgbV9wbGF0Zm9ybURhdGEuc3ludGhldGljT2JsaXF1ZSgpLCBtX3BsYXRmb3JtRGF0YS53aWR0
aFZhcmlhbnQoKSwgbV9wbGF0Zm9ybURhdGEudGV4dFJlbmRlcmluZ01vZGUoKSwgbV9wbGF0Zm9y
bURhdGEuY3VzdG9tUGxhdGZvcm1EYXRhKCkpOworICAgIHJldHVybiBjcmVhdGVEZXJpdmF0aXZl
Rm9udChzY2FsZWRGb250LmdldCgpLCBzaXplLCBtX3BsYXRmb3JtRGF0YS5vcmllbnRhdGlvbigp
LCBmb250VHJhaXRzLCBtX3BsYXRmb3JtRGF0YS5zeW50aGV0aWNCb2xkKCksIG1fcGxhdGZvcm1E
YXRhLnN5bnRoZXRpY09ibGlxdWUoKSwgbV9wbGF0Zm9ybURhdGEud2lkdGhWYXJpYW50KCksIG1f
cGxhdGZvcm1EYXRhLnRleHRSZW5kZXJpbmdNb2RlKCksIG1fcGxhdGZvcm1EYXRhLmNyZWF0aW9u
RGF0YSgpKTsKIH0KIAogZmxvYXQgRm9udDo6cGxhdGZvcm1XaWR0aEZvckdseXBoKEdseXBoIGds
eXBoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29yZXRleHQvRm9udFBsYXRmb3JtRGF0YUNvcmVUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5jcHAKaW5k
ZXggMTE0N2NlNGQ3MzIxNTJmZDM3ZDkzNDJkMTE5YWJhYWEzMDg4ZTdiMS4uMWExOGUxYWQ0ZmQ5
ODg3YTgxMzM4YmMyNWQ0N2U0OWY4MTE5OGZlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udFBsYXRmb3JtRGF0YUNvcmVUZXh0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250UGxhdGZv
cm1EYXRhQ29yZVRleHQuY3BwCkBAIC0yNCw3ICsyNCw2IEBACiAjaW5jbHVkZSAiRm9udFBsYXRm
b3JtRGF0YS5oIgogCiAjaW5jbHVkZSAiRm9udC5oIgotI2luY2x1ZGUgIkZvbnRDdXN0b21QbGF0
Zm9ybURhdGEuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDxDb3JlVGV4
dC9Db3JlVGV4dC5oPgogI2luY2x1ZGUgPHBhbC9zcGkvY2YvQ29yZVRleHRTUEkuaD4KQEAgLTMz
LDggKzMyLDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1Gb250UGxhdGZvcm1EYXRhOjpG
b250UGxhdGZvcm1EYXRhKFJldGFpblB0cjxDVEZvbnRSZWY+JiYgZm9udCwgZmxvYXQgc2l6ZSwg
Ym9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY09ibGlxdWUsIEZvbnRPcmllbnRhdGlv
biBvcmllbnRhdGlvbiwgRm9udFdpZHRoVmFyaWFudCB3aWR0aFZhcmlhbnQsIFRleHRSZW5kZXJp
bmdNb2RlIHRleHRSZW5kZXJpbmdNb2RlLCBjb25zdCBGb250Q3VzdG9tUGxhdGZvcm1EYXRhKiBj
dXN0b21QbGF0Zm9ybURhdGEpCi0gICAgOiBGb250UGxhdGZvcm1EYXRhKHNpemUsIHN5bnRoZXRp
Y0JvbGQsIHN5bnRoZXRpY09ibGlxdWUsIG9yaWVudGF0aW9uLCB3aWR0aFZhcmlhbnQsIHRleHRS
ZW5kZXJpbmdNb2RlLCBjdXN0b21QbGF0Zm9ybURhdGEpCitGb250UGxhdGZvcm1EYXRhOjpGb250
UGxhdGZvcm1EYXRhKFJldGFpblB0cjxDVEZvbnRSZWY+JiYgZm9udCwgZmxvYXQgc2l6ZSwgYm9v
bCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY09ibGlxdWUsIEZvbnRPcmllbnRhdGlvbiBv
cmllbnRhdGlvbiwgRm9udFdpZHRoVmFyaWFudCB3aWR0aFZhcmlhbnQsIFRleHRSZW5kZXJpbmdN
b2RlIHRleHRSZW5kZXJpbmdNb2RlLCBjb25zdCBDcmVhdGlvbkRhdGEqIGNyZWF0aW9uRGF0YSkK
KyAgICA6IEZvbnRQbGF0Zm9ybURhdGEoc2l6ZSwgc3ludGhldGljQm9sZCwgc3ludGhldGljT2Js
aXF1ZSwgb3JpZW50YXRpb24sIHdpZHRoVmFyaWFudCwgdGV4dFJlbmRlcmluZ01vZGUsIGNyZWF0
aW9uRGF0YSkKIHsKICAgICBBU1NFUlRfQVJHKGZvbnQsIGZvbnQpOwogICAgIG1fZm9udCA9IGZv
bnQ7CkBAIC00OCw1OSArNDcsNiBAQCBGb250UGxhdGZvcm1EYXRhOjpGb250UGxhdGZvcm1EYXRh
KFJldGFpblB0cjxDVEZvbnRSZWY+JiYgZm9udCwgZmxvYXQgc2l6ZSwgYm9vbAogI2VuZGlmCiB9
CiAKLXN0YXRpYyBSZXRhaW5QdHI8Q1RGb250RGVzY3JpcHRvclJlZj4gZmluZEZvbnREZXNjcmlw
dG9yKENGU3RyaW5nUmVmIHJlZmVyZW5jZVVSTCwgQ0ZTdHJpbmdSZWYgcG9zdFNjcmlwdE5hbWUp
Ci17Ci0gICAgYXV0byB1cmwgPSBhZG9wdENGKENGVVJMQ3JlYXRlV2l0aFN0cmluZyhrQ0ZBbGxv
Y2F0b3JEZWZhdWx0LCByZWZlcmVuY2VVUkwsIG51bGxwdHIpKTsKLSAgICBpZiAoIXVybCkKLSAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgYXV0byBmb250RGVzY3JpcHRvcnMgPSBhZG9wdENG
KENURm9udE1hbmFnZXJDcmVhdGVGb250RGVzY3JpcHRvcnNGcm9tVVJMKHVybC5nZXQoKSkpOwot
ICAgIGlmICghZm9udERlc2NyaXB0b3JzIHx8ICFDRkFycmF5R2V0Q291bnQoZm9udERlc2NyaXB0
b3JzLmdldCgpKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgaWYgKENGQXJyYXlHZXRD
b3VudChmb250RGVzY3JpcHRvcnMuZ2V0KCkpID09IDEpCi0gICAgICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxDVEZvbnREZXNjcmlwdG9yUmVmPihDRkFycmF5R2V0VmFsdWVBdEluZGV4KGZvbnREZXNj
cmlwdG9ycy5nZXQoKSwgMCkpOwotCi0gICAgZm9yIChDRkluZGV4IGkgPSAwOyBpIDwgQ0ZBcnJh
eUdldENvdW50KGZvbnREZXNjcmlwdG9ycy5nZXQoKSk7ICsraSkgewotICAgICAgICBhdXRvIGZv
bnREZXNjcmlwdG9yID0gc3RhdGljX2Nhc3Q8Q1RGb250RGVzY3JpcHRvclJlZj4oQ0ZBcnJheUdl
dFZhbHVlQXRJbmRleChmb250RGVzY3JpcHRvcnMuZ2V0KCksIGkpKTsKLSAgICAgICAgYXV0byBj
dXJyZW50UG9zdFNjcmlwdE5hbWUgPSBhZG9wdENGKENURm9udERlc2NyaXB0b3JDb3B5QXR0cmli
dXRlKGZvbnREZXNjcmlwdG9yLCBrQ1RGb250TmFtZUF0dHJpYnV0ZSkpOwotICAgICAgICBpZiAo
Q0ZFcXVhbChjdXJyZW50UG9zdFNjcmlwdE5hbWUuZ2V0KCksIHBvc3RTY3JpcHROYW1lKSkKLSAg
ICAgICAgICAgIHJldHVybiBmb250RGVzY3JpcHRvcjsKLSAgICB9Ci0gICAgcmV0dXJuIG51bGxw
dHI7Ci19Ci0KLXN0YXRpYyBSZXRhaW5QdHI8Q1RGb250UmVmPiBjcmVhdGVDVEZvbnQoQ0ZEaWN0
aW9uYXJ5UmVmIGF0dHJpYnV0ZXMsIGZsb2F0IHNpemUsIENURm9udERlc2NyaXB0b3JPcHRpb25z
IG9wdGlvbnMsIENGU3RyaW5nUmVmIHJlZmVyZW5jZVVSTCwgQ0ZTdHJpbmdSZWYgZGVzaXJlZFBv
c3RTY3JpcHROYW1lKQotewotICAgIGF1dG8gZm9udERlc2NyaXB0b3IgPSBhZG9wdENGKENURm9u
dERlc2NyaXB0b3JDcmVhdGVXaXRoQXR0cmlidXRlcyhhdHRyaWJ1dGVzKSk7Ci0gICAgaWYgKGZv
bnREZXNjcmlwdG9yKSB7Ci0gICAgICAgIGF1dG8gZm9udCA9IGFkb3B0Q0YoQ1RGb250Q3JlYXRl
V2l0aEZvbnREZXNjcmlwdG9yQW5kT3B0aW9ucyhmb250RGVzY3JpcHRvci5nZXQoKSwgc2l6ZSwg
bnVsbHB0ciwgb3B0aW9ucykpOwotICAgICAgICBhdXRvIGFjdHVhbFBvc3RTY3JpcHROYW1lID0g
YWRvcHRDRihDVEZvbnRDb3B5UG9zdFNjcmlwdE5hbWUoZm9udC5nZXQoKSkpOwotICAgICAgICBp
ZiAoQ0ZFcXVhbChhY3R1YWxQb3N0U2NyaXB0TmFtZS5nZXQoKSwgZGVzaXJlZFBvc3RTY3JpcHRO
YW1lKSkKLSAgICAgICAgICAgIHJldHVybiBmb250OwotICAgIH0KLQotICAgIC8vIENvcmVUZXh0
IGNvdWxkbid0IHJvdW5kLXRyaXAgdGhlIGZvbnQuCi0gICAgLy8gV2UgY2FuIGZhbGwgYmFjayB0
byBkb2luZyBvdXIgYmVzdCB0byBmaW5kIGl0IG91cnNlbGYuCi0gICAgZm9udERlc2NyaXB0b3Ig
PSBmaW5kRm9udERlc2NyaXB0b3IocmVmZXJlbmNlVVJMLCBkZXNpcmVkUG9zdFNjcmlwdE5hbWUp
OwotICAgIGlmICghZm9udERlc2NyaXB0b3IpCi0gICAgICAgIGZvbnREZXNjcmlwdG9yID0gYWRv
cHRDRihDVEZvbnREZXNjcmlwdG9yQ3JlYXRlTGFzdFJlc29ydCgpKTsKLSAgICBBU1NFUlQoZm9u
dERlc2NyaXB0b3IpOwotICAgIHJldHVybiBhZG9wdENGKENURm9udENyZWF0ZVdpdGhGb250RGVz
Y3JpcHRvckFuZE9wdGlvbnMoZm9udERlc2NyaXB0b3IuZ2V0KCksIHNpemUsIG51bGxwdHIsIG9w
dGlvbnMpKTsKLX0KLQotRm9udFBsYXRmb3JtRGF0YSBGb250UGxhdGZvcm1EYXRhOjpjcmVhdGUo
Y29uc3QgQXR0cmlidXRlcyYgZGF0YSwgY29uc3QgRm9udEN1c3RvbVBsYXRmb3JtRGF0YSogY3Vz
dG9tKQotewotICAgIFJldGFpblB0cjxDVEZvbnRSZWY+IGN0Rm9udDsKLSAgICBpZiAoY3VzdG9t
KSB7Ci0gICAgICAgIGF1dG8gYmFzZUZvbnREZXNjcmlwdG9yID0gY3VzdG9tLT5mb250RGVzY3Jp
cHRvci5nZXQoKTsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoYmFzZUZvbnREZXNjcmlwdG9yKTsK
LSAgICAgICAgYXV0byBmb250RGVzY3JpcHRvciA9IGFkb3B0Q0YoQ1RGb250RGVzY3JpcHRvckNy
ZWF0ZUNvcHlXaXRoQXR0cmlidXRlcyhiYXNlRm9udERlc2NyaXB0b3IsIGRhdGEubV9hdHRyaWJ1
dGVzLmdldCgpKSk7Ci0gICAgICAgIGN0Rm9udCA9IGFkb3B0Q0YoQ1RGb250Q3JlYXRlV2l0aEZv
bnREZXNjcmlwdG9yKGZvbnREZXNjcmlwdG9yLmdldCgpLCBkYXRhLm1fc2l6ZSwgbnVsbHB0cikp
OwotICAgIH0gZWxzZQotICAgICAgICBjdEZvbnQgPSBjcmVhdGVDVEZvbnQoZGF0YS5tX2F0dHJp
YnV0ZXMuZ2V0KCksIGRhdGEubV9zaXplLCBkYXRhLm1fb3B0aW9ucywgZGF0YS5tX3VybC5nZXQo
KSwgZGF0YS5tX3BzTmFtZS5nZXQoKSk7Ci0KLSAgICByZXR1cm4gV2ViQ29yZTo6Rm9udFBsYXRm
b3JtRGF0YShjdEZvbnQuZ2V0KCksIGRhdGEubV9zaXplLCBkYXRhLm1fc3ludGhldGljQm9sZCwg
ZGF0YS5tX3N5bnRoZXRpY09ibGlxdWUsIGRhdGEubV9vcmllbnRhdGlvbiwgZGF0YS5tX3dpZHRo
VmFyaWFudCwgZGF0YS5tX3RleHRSZW5kZXJpbmdNb2RlLCBjdXN0b20pOwotfQotCiBib29sIGlz
U3lzdGVtRm9udChDVEZvbnRSZWYgZm9udCkKIHsKICAgICByZXR1cm4gQ1RGb250SXNTeXN0ZW1V
SUZvbnQoZm9udCk7CkBAIC0yMzksMjEgKzE4NSw0IEBAIHZvaWQgRm9udFBsYXRmb3JtRGF0YTo6
dXBkYXRlU2l6ZShmbG9hdCBzaXplKQogICAgIG1fY3RGb250ID0gbnVsbHB0cjsKIH0KIAotRm9u
dFBsYXRmb3JtRGF0YTo6QXR0cmlidXRlcyBGb250UGxhdGZvcm1EYXRhOjphdHRyaWJ1dGVzKCkg
Y29uc3QKLXsKLSAgICBBdHRyaWJ1dGVzIHJlc3VsdChtX3NpemUsIG1fb3JpZW50YXRpb24sIG1f
d2lkdGhWYXJpYW50LCBtX3RleHRSZW5kZXJpbmdNb2RlLCBtX3N5bnRoZXRpY0JvbGQsIG1fc3lu
dGhldGljT2JsaXF1ZSk7Ci0KLSAgICBhdXRvIGZvbnREZXNjcmlwdG9yID0gYWRvcHRDRihDVEZv
bnRDb3B5Rm9udERlc2NyaXB0b3IobV9mb250LmdldCgpKSk7Ci0gICAgcmVzdWx0Lm1fYXR0cmli
dXRlcyA9IGFkb3B0Q0YoQ1RGb250RGVzY3JpcHRvckNvcHlBdHRyaWJ1dGVzKGZvbnREZXNjcmlw
dG9yLmdldCgpKSk7Ci0KLSAgICBpZiAoIW1fY3VzdG9tUGxhdGZvcm1EYXRhKSB7Ci0gICAgICAg
IHJlc3VsdC5tX29wdGlvbnMgPSBDVEZvbnREZXNjcmlwdG9yR2V0T3B0aW9ucyhmb250RGVzY3Jp
cHRvci5nZXQoKSk7Ci0gICAgICAgIGF1dG8gcmVmZXJlbmNlVVJMID0gYWRvcHRDRihzdGF0aWNf
Y2FzdDxDRlVSTFJlZj4oQ1RGb250Q29weUF0dHJpYnV0ZShtX2ZvbnQuZ2V0KCksIGtDVEZvbnRS
ZWZlcmVuY2VVUkxBdHRyaWJ1dGUpKSk7Ci0gICAgICAgIHJlc3VsdC5tX3VybCA9IENGVVJMR2V0
U3RyaW5nKHJlZmVyZW5jZVVSTC5nZXQoKSk7Ci0gICAgICAgIHJlc3VsdC5tX3BzTmFtZSA9IGFk
b3B0Q0YoQ1RGb250Q29weVBvc3RTY3JpcHROYW1lKG1fZm9udC5nZXQoKSkpOwotICAgIH0KLQot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCmluZGV4IDU1NWJm
YWY3ZWM4NDk2NDlhOTg4YjRhYmVkOWEzZDM4NDU2ZGEwZGQuLjI3ZjhjNDdlZGY4ZmVmNzdlZDVl
YjJlMjE2YjhhNDczODg4OWIzY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBs
YXRmb3JtRGF0YUZyZWVUeXBlLmNwcApAQCAtMTM4LDcgKzEzOCw3IEBAIHN0YXRpYyBib29sIGlu
aXRpYWxpemVGcmVlVHlwZUxpYnJhcnkoRlRfTGlicmFyeSYgbGlicmFyeSkKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotUmVmUHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0
b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYpCitzdGQ6
OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRm
b3JtRGF0YShTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJikKIHsKICAgICBzdGF0
aWMgRlRfTGlicmFyeSBsaWJyYXJ5OwogICAgIGlmICghbGlicmFyeSAmJiAhaW5pdGlhbGl6ZUZy
ZWVUeXBlTGlicmFyeShsaWJyYXJ5KSkgewpAQCAtMTQ5LDcgKzE0OSw3IEBAIFJlZlB0cjxGb250
Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1
ZmZlciYgYnVmZmVyCiAgICAgRlRfRmFjZSBmcmVlVHlwZUZhY2U7CiAgICAgaWYgKEZUX05ld19N
ZW1vcnlfRmFjZShsaWJyYXJ5LCByZWludGVycHJldF9jYXN0PGNvbnN0IEZUX0J5dGUqPihidWZm
ZXIuZGF0YSgpKSwgYnVmZmVyLnNpemUoKSwgMCwgJmZyZWVUeXBlRmFjZSkpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwotICAgIHJldHVybiBhZG9wdFJlZihuZXcgRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YShmcmVlVHlwZUZhY2UsIGJ1ZmZlcikpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEZvbnRD
dXN0b21QbGF0Zm9ybURhdGE+KGZyZWVUeXBlRmFjZSwgYnVmZmVyKTsKIH0KIAogYm9vbCBGb250
Q3VzdG9tUGxhdGZvcm1EYXRhOjpzdXBwb3J0c0Zvcm1hdChjb25zdCBTdHJpbmcmIGZvcm1hdCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3Vz
dG9tUGxhdGZvcm1EYXRhTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhTWFjLmNwcAppbmRleCAyNjI1ZmJlZjM5ODNkZjk4
ZTNkN2Y2MWNkODk0OWZiN2E1ZWNiNzczLi40MDM5NGExY2ZjMzNmY2MwNjgzOWQ2OTcxODQ3Yzc0
NDQ5ZTg2NTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9t
YWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YU1hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFNYWMuY3BwCkBAIC01Mywx
MyArNTMsMTMgQEAgRm9udFBsYXRmb3JtRGF0YSBGb250Q3VzdG9tUGxhdGZvcm1EYXRhOjpmb250
UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYKIAogICAgIGF1dG8gZm9udCA9IHBy
ZXBhcmVQbGF0Zm9ybUZvbnQoV1RGTW92ZSh1bnJlYWxpemVkRm9udCksIGZvbnREZXNjcmlwdGlv
biwgZm9udENyZWF0aW9uQ29udGV4dCk7CiAgICAgQVNTRVJUKGZvbnQpOwotICAgIEZvbnRQbGF0
Zm9ybURhdGEgcGxhdGZvcm1EYXRhKGZvbnQuZ2V0KCksIHNpemUsIGJvbGQsIGl0YWxpYywgb3Jp
ZW50YXRpb24sIHdpZHRoVmFyaWFudCwgZm9udERlc2NyaXB0aW9uLnRleHRSZW5kZXJpbmdNb2Rl
KCksIHRoaXMpOworICAgIEZvbnRQbGF0Zm9ybURhdGEgcGxhdGZvcm1EYXRhKGZvbnQuZ2V0KCks
IHNpemUsIGJvbGQsIGl0YWxpYywgb3JpZW50YXRpb24sIHdpZHRoVmFyaWFudCwgZm9udERlc2Ny
aXB0aW9uLnRleHRSZW5kZXJpbmdNb2RlKCksICZjcmVhdGlvbkRhdGEpOwogCiAgICAgcGxhdGZv
cm1EYXRhLnVwZGF0ZVNpemVXaXRoRm9udFNpemVBZGp1c3QoZm9udERlc2NyaXB0aW9uLmZvbnRT
aXplQWRqdXN0KCkpOwogICAgIHJldHVybiBwbGF0Zm9ybURhdGE7CiB9CiAKLVJlZlB0cjxGb250
Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1
ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24pCitzdGQ6OnVuaXF1
ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0
YShTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uKQog
ewogICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGJ1ZmZlckRhdGEgPSBidWZmZXIuY3JlYXRlQ0ZE
YXRhKCk7CiAKQEAgLTg2LDcgKzg2LDcgQEAgUmVmUHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+
IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyJiBidWZmZXIKICAgICAg
ICAgZm9udERlc2NyaXB0b3IgPSBzdGF0aWNfY2FzdDxDVEZvbnREZXNjcmlwdG9yUmVmPihDRkFy
cmF5R2V0VmFsdWVBdEluZGV4KGFycmF5LmdldCgpLCAwKSk7CiAKICAgICBGb250UGxhdGZvcm1E
YXRhOjpDcmVhdGlvbkRhdGEgY3JlYXRpb25EYXRhID0geyBidWZmZXIsIGl0ZW1JbkNvbGxlY3Rp
b24gfTsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEZvbnRDdXN0b21QbGF0Zm9ybURhdGEoZm9u
dERlc2NyaXB0b3IuZ2V0KCksIFdURk1vdmUoY3JlYXRpb25EYXRhKSkpOworICAgIHJldHVybiBt
YWtlVW5pcXVlPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+KGZvbnREZXNjcmlwdG9yLmdldCgpLCBX
VEZNb3ZlKGNyZWF0aW9uRGF0YSkpOwogfQogCiBib29sIEZvbnRDdXN0b21QbGF0Zm9ybURhdGE6
OnN1cHBvcnRzRm9ybWF0KGNvbnN0IFN0cmluZyYgZm9ybWF0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFXaW4u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0
Zm9ybURhdGFXaW4uY3BwCmluZGV4IDFkOWRmZTVhODc4Nzc0NDY2N2NhYTVmZmZiMjdjMTQ3ZDYw
NGVmZTUuLmVmZDczZTg3OGVhN2E4N2NmYjA1Y2Q1NmZmMTdlNGI4NzU4NzcwZTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZv
cm1EYXRhV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YVdpbi5jcHAKQEAgLTY3LDcgKzY3LDcgQEAgRm9udFBsYXRm
b3JtRGF0YSBGb250Q3VzdG9tUGxhdGZvcm1EYXRhOjpmb250UGxhdGZvcm1EYXRhKGNvbnN0IEZv
bnREZXNjcmlwdGlvbiYKIAogICAgIGNhaXJvX2ZvbnRfZmFjZV90KiBmb250RmFjZSA9IGNhaXJv
X3dpbjMyX2ZvbnRfZmFjZV9jcmVhdGVfZm9yX2hmb250KGhmb250LmdldCgpKTsKIAotICAgIEZv
bnRQbGF0Zm9ybURhdGEgZm9udFBsYXRmb3JtRGF0YShXVEZNb3ZlKGhmb250KSwgZm9udEZhY2Us
IHNpemUsIGJvbGQsIGl0YWxpYywgdGhpcyk7CisgICAgRm9udFBsYXRmb3JtRGF0YSBmb250UGxh
dGZvcm1EYXRhKFdURk1vdmUoaGZvbnQpLCBmb250RmFjZSwgc2l6ZSwgYm9sZCwgaXRhbGljLCAm
Y3JlYXRpb25EYXRhKTsKIAogICAgIGNhaXJvX2ZvbnRfZmFjZV9kZXN0cm95KGZvbnRGYWNlKTsK
IApAQCAtODQsNyArODQsNyBAQCBzdGF0aWMgU3RyaW5nIGNyZWF0ZVVuaXF1ZUZvbnROYW1lKCkK
ICAgICByZXR1cm4gZm9udE5hbWU7CiB9CiAKLVJlZlB0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRh
PiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25z
dCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24pCitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBs
YXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXImIGJ1
ZmZlciwgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uKQogewogICAgIFN0cmluZyBmb250
TmFtZSA9IGNyZWF0ZVVuaXF1ZUZvbnROYW1lKCk7CiAgICAgYXV0byBmb250UmVzb3VyY2UgPSBy
ZW5hbWVBbmRBY3RpdmF0ZUZvbnQoYnVmZmVyLCBmb250TmFtZSk7CkBAIC05Myw3ICs5Myw3IEBA
IFJlZlB0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1E
YXRhKFNoYXJlZEJ1ZmZlciYgYnVmZmVyCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAg
Rm9udFBsYXRmb3JtRGF0YTo6Q3JlYXRpb25EYXRhIGNyZWF0aW9uRGF0YSA9IHsgYnVmZmVyLCBp
dGVtSW5Db2xsZWN0aW9uLCBmb250UmVzb3VyY2UucmVsZWFzZU5vbk51bGwoKSB9OwotICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgRm9udEN1c3RvbVBsYXRmb3JtRGF0YShmb250TmFtZSwgV1RGTW92
ZShjcmVhdGlvbkRhdGEpKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8Rm9udEN1c3RvbVBsYXRm
b3JtRGF0YT4oZm9udE5hbWUsIFdURk1vdmUoY3JlYXRpb25EYXRhKSk7CiB9CiAKIGJvb2wgRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YTo6c3VwcG9ydHNGb3JtYXQoY29uc3QgU3RyaW5nJiBmb3JtYXQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBs
YXRmb3JtRGF0YUNhaXJvV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9Gb250UGxhdGZvcm1EYXRhQ2Fpcm9XaW4uY3BwCmluZGV4IDk2NjEzMjAyNGI4MzM2Mjg3
NjY3ZDM1MTkwYjI1MGY1ZGQzNzIyOTcuLjZkMjZhMDMzNDcxYzlkMjcwZGI4ZjNmZDIwNGExYjIz
ODQ4YzYwNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9Gb250UGxhdGZvcm1EYXRhQ2Fpcm9XaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ2Fpcm9XaW4uY3BwCkBAIC02MCw4ICs2
MCw4IEBAIHZvaWQgRm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1EYXRhSW5pdChIRk9OVCBmb250
LCBmbG9hdCBzaXplLCBIREMgaGRjLCBXQ0hBUioKICAgICAgICAgbV9pc1N5c3RlbUZvbnQgPSAh
d2NzY21wKGZhY2VOYW1lLCBMIkx1Y2lkYSBHcmFuZGUiKTsKIH0KIAotRm9udFBsYXRmb3JtRGF0
YTo6Rm9udFBsYXRmb3JtRGF0YShHRElPYmplY3Q8SEZPTlQ+IGZvbnQsIGNhaXJvX2ZvbnRfZmFj
ZV90KiBmb250RmFjZSwgZmxvYXQgc2l6ZSwgYm9vbCBib2xkLCBib29sIG9ibGlxdWUsIGNvbnN0
IEZvbnRDdXN0b21QbGF0Zm9ybURhdGEqIGN1c3RvbVBsYXRmb3JtRGF0YSkKLSAgICA6IEZvbnRQ
bGF0Zm9ybURhdGEoc2l6ZSwgYm9sZCwgb2JsaXF1ZSwgRm9udE9yaWVudGF0aW9uOjpIb3Jpem9u
dGFsLCBGb250V2lkdGhWYXJpYW50OjpSZWd1bGFyV2lkdGgsIFRleHRSZW5kZXJpbmdNb2RlOjpB
dXRvVGV4dFJlbmRlcmluZywgY3VzdG9tUGxhdGZvcm1EYXRhKQorRm9udFBsYXRmb3JtRGF0YTo6
Rm9udFBsYXRmb3JtRGF0YShHRElPYmplY3Q8SEZPTlQ+IGZvbnQsIGNhaXJvX2ZvbnRfZmFjZV90
KiBmb250RmFjZSwgZmxvYXQgc2l6ZSwgYm9vbCBib2xkLCBib29sIG9ibGlxdWUsIGNvbnN0IENy
ZWF0aW9uRGF0YSogY3JlYXRpb25EYXRhKQorICAgIDogRm9udFBsYXRmb3JtRGF0YShzaXplLCBi
b2xkLCBvYmxpcXVlLCBGb250T3JpZW50YXRpb246Okhvcml6b250YWwsIEZvbnRXaWR0aFZhcmlh
bnQ6OlJlZ3VsYXJXaWR0aCwgVGV4dFJlbmRlcmluZ01vZGU6OkF1dG9UZXh0UmVuZGVyaW5nLCBj
cmVhdGlvbkRhdGEpCiB7CiAgICAgbV9mb250ID0gU2hhcmVkR0RJT2JqZWN0PEhGT05UPjo6Y3Jl
YXRlKFdURk1vdmUoZm9udCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHAKaW5kZXggYjNlNDg2
OTQ1YmQ5ZTRmYTY4YTFkOTcwMGMxY2UwYmMwZDFlZmQxYS4uYWQ1NGVhNzI0MjY5ZDIxYzY0N2Nm
MGQwNjUyN2FlZDZmYjZlNzg5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcApAQCAtMjUsNyAr
MjUsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkZvbnRQbGF0Zm9ybURhdGEu
aCIKIAotI2luY2x1ZGUgIkZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaCIKICNpbmNsdWRlICJIV25k
REMuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5o
PgpAQCAtMzgsOCArMzcsOCBAQCB1c2luZyBzdGQ6Om1pbjsKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1Gb250UGxhdGZvcm1EYXRhOjpGb250UGxhdGZvcm1EYXRhKEdESU9iamVjdDxIRk9OVD4g
Zm9udCwgZmxvYXQgc2l6ZSwgYm9vbCBib2xkLCBib29sIG9ibGlxdWUsIGNvbnN0IEZvbnRDdXN0
b21QbGF0Zm9ybURhdGEqIGN1c3RvbVBsYXRmb3JtRGF0YSkKLSAgICA6IEZvbnRQbGF0Zm9ybURh
dGEoc2l6ZSwgYm9sZCwgb2JsaXF1ZSwgRm9udE9yaWVudGF0aW9uOjpIb3Jpem9udGFsLCBGb250
V2lkdGhWYXJpYW50OjpSZWd1bGFyV2lkdGgsIFRleHRSZW5kZXJpbmdNb2RlOjpBdXRvVGV4dFJl
bmRlcmluZywgY3VzdG9tUGxhdGZvcm1EYXRhKQorRm9udFBsYXRmb3JtRGF0YTo6Rm9udFBsYXRm
b3JtRGF0YShHRElPYmplY3Q8SEZPTlQ+IGZvbnQsIGZsb2F0IHNpemUsIGJvb2wgYm9sZCwgYm9v
bCBvYmxpcXVlLCBjb25zdCBDcmVhdGlvbkRhdGEqIGNyZWF0aW9uRGF0YSkKKyAgICA6IEZvbnRQ
bGF0Zm9ybURhdGEoc2l6ZSwgYm9sZCwgb2JsaXF1ZSwgRm9udE9yaWVudGF0aW9uOjpIb3Jpem9u
dGFsLCBGb250V2lkdGhWYXJpYW50OjpSZWd1bGFyV2lkdGgsIFRleHRSZW5kZXJpbmdNb2RlOjpB
dXRvVGV4dFJlbmRlcmluZywgY3JlYXRpb25EYXRhKQogewogICAgIG1fZm9udCA9IFNoYXJlZEdE
SU9iamVjdDxIRk9OVD46OmNyZWF0ZShXVEZNb3ZlKGZvbnQpKTsKIApAQCAtNzMsMjIgKzcyLDQg
QEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1PcGVuVHlw
ZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb24KICAgICByZXR1cm4gYnVmZmVyOwogfQogCi1Gb250
UGxhdGZvcm1EYXRhIEZvbnRQbGF0Zm9ybURhdGE6OmNyZWF0ZShjb25zdCBBdHRyaWJ1dGVzJiBk
YXRhLCBjb25zdCBGb250Q3VzdG9tUGxhdGZvcm1EYXRhKiBjdXN0b20pCi17Ci0gICAgTE9HRk9O
VCBsb2dGb250ID0gZGF0YS5tX2ZvbnQ7Ci0gICAgaWYgKGN1c3RvbSkKLSAgICAgICAgd2NzY3B5
X3MobG9nRm9udC5sZkZhY2VOYW1lLCBMRl9GQUNFU0laRSwgY3VzdG9tLT5uYW1lLndpZGVDaGFy
YWN0ZXJzKCkuZGF0YSgpKTsKLQotICAgIGF1dG8gZ2RpRm9udCA9IGFkb3B0R0RJT2JqZWN0KENy
ZWF0ZUZvbnRJbmRpcmVjdCgmbG9nRm9udCkpOwotICAgIHJldHVybiBGb250UGxhdGZvcm1EYXRh
KFdURk1vdmUoZ2RpRm9udCksIGRhdGEubV9zaXplLCBkYXRhLm1fc3ludGhldGljQm9sZCwgZGF0
YS5tX3N5bnRoZXRpY09ibGlxdWUsIGN1c3RvbSk7Ci19Ci0KLUZvbnRQbGF0Zm9ybURhdGE6OkF0
dHJpYnV0ZXMgRm9udFBsYXRmb3JtRGF0YTo6YXR0cmlidXRlcygpIGNvbnN0Ci17Ci0gICAgQXR0
cmlidXRlcyByZXN1bHQobV9zaXplLCBtX29yaWVudGF0aW9uLCBtX3dpZHRoVmFyaWFudCwgbV90
ZXh0UmVuZGVyaW5nTW9kZSwgbV9zeW50aGV0aWNCb2xkLCBtX3N5bnRoZXRpY09ibGlxdWUpOwot
Ci0gICAgR2V0T2JqZWN0KGhmb250KCksIHNpemVvZihMT0dGT05UKSwgJnJlc3VsdC5tX2ZvbnQp
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oCmluZGV4IDViZjc5MDJiZGFkM2QzZDhmOGNkZGY0MGE0
YzllOTRhMWUyZmEwMTYuLjViN2NkYWZkNWY1ZWJkYTlmYzNhNTkzNjQ0NDliZDc4NDY0OTFmNmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaApA
QCAtNzcsNyArNzcsNyBAQCBwcml2YXRlOgogCiAgICAgV2Vha1B0cjxTY3JpcHRFeGVjdXRpb25D
b250ZXh0PiBtX2NvbnRleHQ7CiAgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2RhdGE7Ci0gICAg
UmVmUHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IG1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YTsK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gbV9mb250Q3VzdG9t
UGxhdGZvcm1EYXRhOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1F1YWxpZmllZFJlc291cmNlSGVhcC5o
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1F1YWxpZmllZFJlc291cmNlSGVh
cC5oCmluZGV4IDUxYmNmNmY5MjYwYmI2NDIzNGEwMTFjYzcxZDYyOWI3ZjliYmE4YjkuLjcxMDdj
MGVjNDdkMDU2Zjk1ZDRjODRhMzM0ZTljMDgyMzM2YmExNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9RdWFsaWZpZWRSZXNvdXJjZUhlYXAuaAorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUXVhbGlmaWVkUmVzb3VyY2VIZWFwLmgK
QEAgLTMwLDcgKzMwLDYgQEAKICNpbmNsdWRlICJRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0RlY29tcG9zZWRHbHlwaHMuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0ZvbnQuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0ZvbnRDdXN0b21QbGF0Zm9y
bURhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0dyYWRpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9JbWFnZUJ1ZmZlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTmF0aXZlSW1hZ2UuaD4KQEAgLTcy
LDExICs3MSw2IEBAIHB1YmxpYzoKICAgICAgICAgYWRkKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllciwgV1RGTW92ZShncmFkaWVudCksIG1fZ3JhZGllbnRDb3VudCk7CiAgICAgfQogCi0gICAg
dm9pZCBhZGQoUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllciwgUmVmPFdlYkNvcmU6OkZvbnRDdXN0b21QbGF0Zm9ybURhdGE+JiYg
Y3VzdG9tUGxhdGZvcm1EYXRhKQotICAgIHsKLSAgICAgICAgYWRkKHJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllciwgV1RGTW92ZShjdXN0b21QbGF0Zm9ybURhdGEpLCBtX2N1c3RvbVBsYXRmb3Jt
RGF0YUNvdW50KTsKLSAgICB9Ci0KICAgICBXZWJDb3JlOjpJbWFnZUJ1ZmZlciogZ2V0SW1hZ2VC
dWZmZXIoUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcikgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBnZXQ8V2ViQ29yZTo6
SW1hZ2VCdWZmZXI+KHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CkBAIC0xMTYsMTEgKzEx
MCw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGdldDxXZWJDb3JlOjpHcmFkaWVudD4ocmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB9CiAKLSAgICBXZWJDb3JlOjpGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhKiBnZXRGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFF1YWxpZmllZFJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpIGNvbnN0
Ci0gICAgewotICAgICAgICByZXR1cm4gZ2V0PFdlYkNvcmU6OkZvbnRDdXN0b21QbGF0Zm9ybURh
dGE+KHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7Ci0gICAgfQotCiAgICAgYm9vbCByZW1v
dmVJbWFnZUJ1ZmZlcihRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyKQogICAgIHsKICAgICAgICAgcmV0dXJuIHJlbW92ZTxXZWJD
b3JlOjpJbWFnZUJ1ZmZlcj4ocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBtX2ltYWdlQnVm
ZmVyQ291bnQpOwpAQCAtMTQ2LDExICsxMzUsNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBy
ZW1vdmU8V2ViQ29yZTo6R3JhZGllbnQ+KHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgbV9n
cmFkaWVudENvdW50KTsKICAgICB9CiAKLSAgICBib29sIHJlbW92ZUZvbnRDdXN0b21QbGF0Zm9y
bURhdGEoUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcikKLSAgICB7Ci0gICAgICAgIHJldHVybiByZW1vdmU8V2ViQ29yZTo6Rm9u
dEN1c3RvbVBsYXRmb3JtRGF0YT4ocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBtX2N1c3Rv
bVBsYXRmb3JtRGF0YUNvdW50KTsKLSAgICB9Ci0KICAgICB2b2lkIHJlbGVhc2VBbGxSZXNvdXJj
ZXMoKQogICAgIHsKICAgICAgICAgY2hlY2tJbnZhcmlhbnRzKCk7CkBAIC0xNjIsMTUgKzE0Niwx
MyBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxS
ZWY8V2ViQ29yZTo6TmF0aXZlSW1hZ2U+PihyZXNvdXJjZS52YWx1ZSkKICAgICAgICAgICAgICAg
ICB8fCBzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxXZWJDb3JlOjpGb250Pj4ocmVzb3VyY2Uu
dmFsdWUpCiAgICAgICAgICAgICAgICAgfHwgc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8V2Vi
Q29yZTo6RGVjb21wb3NlZEdseXBocz4+KHJlc291cmNlLnZhbHVlKQotICAgICAgICAgICAgICAg
IHx8IHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFdlYkNvcmU6OkdyYWRpZW50Pj4ocmVzb3Vy
Y2UudmFsdWUpCi0gICAgICAgICAgICAgICAgfHwgc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8
V2ViQ29yZTo6Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4+KHJlc291cmNlLnZhbHVlKTsKKyAgICAg
ICAgICAgICAgICB8fCBzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxXZWJDb3JlOjpHcmFkaWVu
dD4+KHJlc291cmNlLnZhbHVlKTsKICAgICAgICAgfSk7CiAKICAgICAgICAgbV9uYXRpdmVJbWFn
ZUNvdW50ID0gMDsKICAgICAgICAgbV9mb250Q291bnQgPSAwOwogICAgICAgICBtX2RlY29tcG9z
ZWRHbHlwaHNDb3VudCA9IDA7CiAgICAgICAgIG1fZ3JhZGllbnRDb3VudCA9IDA7Ci0gICAgICAg
IG1fY3VzdG9tUGxhdGZvcm1EYXRhQ291bnQgPSAwOwogCiAgICAgICAgIGNoZWNrSW52YXJpYW50
cygpOwogICAgIH0KQEAgLTIyOSw3ICsyMTEsNiBAQCBwcml2YXRlOgogICAgICAgICB1bnNpZ25l
ZCBpbWFnZUJ1ZmZlckNvdW50ID0gMDsKICAgICAgICAgdW5zaWduZWQgbmF0aXZlSW1hZ2VDb3Vu
dCA9IDA7CiAgICAgICAgIHVuc2lnbmVkIGZvbnRDb3VudCA9IDA7Ci0gICAgICAgIHVuc2lnbmVk
IGN1c3RvbVBsYXRmb3JtRGF0YUNvdW50ID0gMDsKICAgICAgICAgdW5zaWduZWQgZGVjb21wb3Nl
ZEdseXBoc0NvdW50ID0gMDsKICAgICAgICAgdW5zaWduZWQgZ3JhZGllbnRDb3VudCA9IDA7CiAg
ICAgICAgIGZvciAoY29uc3QgYXV0byYgcGFpciA6IG1fcmVzb3VyY2VzKSB7CkBAIC0yNDEsOCAr
MjIyLDYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICArK25hdGl2ZUltYWdlQ291bnQ7CiAg
ICAgICAgICAgICB9LCBbJl0gKGNvbnN0IFJlZjxXZWJDb3JlOjpGb250PiYpIHsKICAgICAgICAg
ICAgICAgICArK2ZvbnRDb3VudDsKLSAgICAgICAgICAgIH0sIFsmXSAoY29uc3QgUmVmPFdlYkNv
cmU6OkZvbnRDdXN0b21QbGF0Zm9ybURhdGE+JikgewotICAgICAgICAgICAgICAgICsrY3VzdG9t
UGxhdGZvcm1EYXRhQ291bnQ7CiAgICAgICAgICAgICB9LCBbJl0gKGNvbnN0IFJlZjxXZWJDb3Jl
OjpEZWNvbXBvc2VkR2x5cGhzPiYpIHsKICAgICAgICAgICAgICAgICArK2RlY29tcG9zZWRHbHlw
aHNDb3VudDsKICAgICAgICAgICAgIH0sIFsmXSAoY29uc3QgUmVmPFdlYkNvcmU6OkdyYWRpZW50
PiYpIHsKQEAgLTI1MiwxMCArMjMxLDkgQEAgcHJpdmF0ZToKICAgICAgICAgQVNTRVJUKGltYWdl
QnVmZmVyQ291bnQgPT0gbV9pbWFnZUJ1ZmZlckNvdW50KTsKICAgICAgICAgQVNTRVJUKG5hdGl2
ZUltYWdlQ291bnQgPT0gbV9uYXRpdmVJbWFnZUNvdW50KTsKICAgICAgICAgQVNTRVJUKGZvbnRD
b3VudCA9PSBtX2ZvbnRDb3VudCk7Ci0gICAgICAgIEFTU0VSVChjdXN0b21QbGF0Zm9ybURhdGFD
b3VudCA9PSBtX2N1c3RvbVBsYXRmb3JtRGF0YUNvdW50KTsKICAgICAgICAgQVNTRVJUKGRlY29t
cG9zZWRHbHlwaHNDb3VudCA9PSBtX2RlY29tcG9zZWRHbHlwaHNDb3VudCk7CiAgICAgICAgIEFT
U0VSVChncmFkaWVudENvdW50ID09IG1fZ3JhZGllbnRDb3VudCk7Ci0gICAgICAgIEFTU0VSVCht
X3Jlc291cmNlcy5zaXplKCkgPT0gbV9pbWFnZUJ1ZmZlckNvdW50ICsgbV9uYXRpdmVJbWFnZUNv
dW50ICsgbV9mb250Q291bnQgKyBtX2RlY29tcG9zZWRHbHlwaHNDb3VudCArIG1fY3VzdG9tUGxh
dGZvcm1EYXRhQ291bnQgKyBtX2dyYWRpZW50Q291bnQpOworICAgICAgICBBU1NFUlQobV9yZXNv
dXJjZXMuc2l6ZSgpID09IG1faW1hZ2VCdWZmZXJDb3VudCArIG1fbmF0aXZlSW1hZ2VDb3VudCAr
IG1fZm9udENvdW50ICsgbV9kZWNvbXBvc2VkR2x5cGhzQ291bnQgKyBtX2dyYWRpZW50Q291bnQp
OwogI2VuZGlmCiAgICAgfQogCkBAIC0yNjUsOCArMjQzLDcgQEAgcHJpdmF0ZToKICAgICAgICAg
UmVmPFdlYkNvcmU6Ok5hdGl2ZUltYWdlPiwKICAgICAgICAgUmVmPFdlYkNvcmU6OkZvbnQ+LAog
ICAgICAgICBSZWY8V2ViQ29yZTo6RGVjb21wb3NlZEdseXBocz4sCi0gICAgICAgIFJlZjxXZWJD
b3JlOjpHcmFkaWVudD4sCi0gICAgICAgIFJlZjxXZWJDb3JlOjpGb250Q3VzdG9tUGxhdGZvcm1E
YXRhPgorICAgICAgICBSZWY8V2ViQ29yZTo6R3JhZGllbnQ+CiAgICAgPjsKICAgICBIYXNoTWFw
PFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgUmVzb3VyY2U+IG1fcmVzb3Vy
Y2VzOwogICAgIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIG1fd2ViUHJvY2Vzc0lkZW50aWZp
ZXI7CkBAIC0yNzUsNyArMjUyLDYgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX2ZvbnRDb3Vu
dCB7IDAgfTsKICAgICB1bnNpZ25lZCBtX2RlY29tcG9zZWRHbHlwaHNDb3VudCB7IDAgfTsKICAg
ICB1bnNpZ25lZCBtX2dyYWRpZW50Q291bnQgeyAwIH07Ci0gICAgdW5zaWduZWQgbV9jdXN0b21Q
bGF0Zm9ybURhdGFDb3VudCB7IDAgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJl
bmRlcmluZ0JhY2tlbmQuY3BwCmluZGV4IDU0YzZlMDdiZTFhMmFhZDgxZTUyZDQ2MWY2MGYzYWI1
ZTI4ZTAwOTUuLjYzNTE3ZTMyMzU4MTA3ZDhlZDQ3N2Y2OWIyZjAzMjM0YmNkOWRkMDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZC5jcHAKQEAgLTM0NSwyMiArMzQ1LDEyIEBAIHZvaWQgUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZDo6Y2FjaGVOYXRpdmVJbWFnZVdpdGhRdWFsaWZpZWRJZGVudGlmaWVyKGNv
bnN0IFNoYXJlCiAgICAgbV9yZW1vdGVSZXNvdXJjZUNhY2hlLmNhY2hlTmF0aXZlSW1hZ2UoaW1h
Z2UucmVsZWFzZU5vbk51bGwoKSwgbmF0aXZlSW1hZ2VSZXNvdXJjZUlkZW50aWZpZXIpOwogfQog
Ci12b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNhY2hlRm9udChjb25zdCBXZWJDb3JlOjpG
b250OjpBdHRyaWJ1dGVzJiBmb250QXR0cmlidXRlcywgV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0
YTo6QXR0cmlidXRlcyBwbGF0Zm9ybURhdGEsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyPiByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCit2b2lk
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNhY2hlRm9udChSZWY8Rm9udD4mJiBmb250KQogewot
ICAgIEZvbnRDdXN0b21QbGF0Zm9ybURhdGEqIGN1c3RvbVBsYXRmb3JtRGF0YSA9IG51bGxwdHI7
Ci0gICAgaWYgKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgewotICAgICAgICBRdWFsaWZp
ZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgaWRlbnQgPSB7ICpyZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIsIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+d2ViUHJvY2Vzc0lkZW50
aWZpZXIoKSB9OwotICAgICAgICBjdXN0b21QbGF0Zm9ybURhdGEgPSBtX3JlbW90ZVJlc291cmNl
Q2FjaGUuY2FjaGVkRm9udEN1c3RvbVBsYXRmb3JtRGF0YShpZGVudCk7Ci0gICAgICAgIE1FU1NB
R0VfQ0hFQ0soY3VzdG9tUGxhdGZvcm1EYXRhLCAiQ2FjaGVGb250IHdpdGhvdXQgY2FjaGluZyBj
dXN0b20gZGF0YSIpOwotICAgIH0KLQotICAgIEZvbnRQbGF0Zm9ybURhdGEgcGxhdGZvcm0gPSBG
b250UGxhdGZvcm1EYXRhOjpjcmVhdGUocGxhdGZvcm1EYXRhLCBjdXN0b21QbGF0Zm9ybURhdGEp
OwotCi0gICAgUmVmPEZvbnQ+IGZvbnQgPSBGb250OjpjcmVhdGUocGxhdGZvcm0sIGZvbnRBdHRy
aWJ1dGVzLm9yaWdpbiwgZm9udEF0dHJpYnV0ZXMuaXNJbnRlcnN0aXRpYWwsIGZvbnRBdHRyaWJ1
dGVzLnZpc2liaWxpdHksIGZvbnRBdHRyaWJ1dGVzLmlzVGV4dE9yaWVudGF0aW9uRmFsbGJhY2ss
IGZvbnRBdHRyaWJ1dGVzLnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7Ci0KICAgICAvLyBJ
bW1lZGlhdGVseSB0dXJuIHRoZSBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgKHdoaWNoIGlz
IGVycm9yLXByb25lKSB0byBhIFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwK
ICAgICAvLyBhbmQgdXNlIGEgaGVscGVyIGZ1bmN0aW9uIHRvIG1ha2Ugc3VyZSB0aGF0IGRvbid0
IGFjY2lkZW50YWxseSB1c2UgdGhlIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciAoYmVjYXVz
ZSB0aGUgaGVscGVyIGZ1bmN0aW9uIGNhbid0IHNlZSBpdCkuCi0gICAgY2FjaGVGb250V2l0aFF1
YWxpZmllZElkZW50aWZpZXIoV1RGTW92ZShmb250KSwgeyBmb250LT5yZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIoKSwgbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT53ZWJQcm9jZXNzSWRl
bnRpZmllcigpIH0pOworICAgIGF1dG8gcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyID0gZm9u
dC0+cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCk7CisgICAgY2FjaGVGb250V2l0aFF1YWxp
ZmllZElkZW50aWZpZXIoV1RGTW92ZShmb250KSwgeyByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIsIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+d2ViUHJvY2Vzc0lkZW50aWZpZXIoKSB9
KTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjYWNoZUZvbnRXaXRoUXVhbGlm
aWVkSWRlbnRpZmllcihSZWY8Rm9udD4mJiBmb250LCBRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIgZm9udFJlc291cmNlSWRlbnRpZmllcikKQEAgLTM2OSwyMCArMzU5LDYgQEAg
dm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjYWNoZUZvbnRXaXRoUXVhbGlmaWVkSWRlbnRp
ZmllcihSZWY8Rm9udD4mJiBmb250LAogICAgIG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5jYWNoZUZv
bnQoV1RGTW92ZShmb250KSwgZm9udFJlc291cmNlSWRlbnRpZmllcik7CiB9CiAKLXZvaWQgUmVt
b3RlUmVuZGVyaW5nQmFja2VuZDo6Y2FjaGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFJlZjxGb250
Q3VzdG9tUGxhdGZvcm1EYXRhPiYmIGN1c3RvbVBsYXRmb3JtRGF0YSkKLXsKLSAgICAvLyBJbW1l
ZGlhdGVseSB0dXJuIHRoZSBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgKHdoaWNoIGlzIGVy
cm9yLXByb25lKSB0byBhIFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwKLSAg
ICAvLyBhbmQgdXNlIGEgaGVscGVyIGZ1bmN0aW9uIHRvIG1ha2Ugc3VyZSB0aGF0IGRvbid0IGFj
Y2lkZW50YWxseSB1c2UgdGhlIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciAoYmVjYXVzZSB0
aGUgaGVscGVyIGZ1bmN0aW9uIGNhbid0IHNlZSBpdCkuCi0gICAgYXV0byByZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIgPSBjdXN0b21QbGF0Zm9ybURhdGEtPm1fcmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyOwotICAgIGNhY2hlRm9udEN1c3RvbVBsYXRmb3JtRGF0YVdpdGhRdWFsaWZpZWRJ
ZGVudGlmaWVyKFdURk1vdmUoY3VzdG9tUGxhdGZvcm1EYXRhKSwgeyByZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIsIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+d2ViUHJvY2Vzc0lkZW50
aWZpZXIoKSB9KTsKLX0KLQotdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjYWNoZUZvbnRD
dXN0b21QbGF0Zm9ybURhdGFXaXRoUXVhbGlmaWVkSWRlbnRpZmllcihSZWY8Rm9udEN1c3RvbVBs
YXRmb3JtRGF0YT4mJiBjdXN0b21QbGF0Zm9ybURhdGEsIFF1YWxpZmllZFJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllciBmb250UmVzb3VyY2VJZGVudGlmaWVyKQotewotICAgIEFTU0VSVCghUnVu
TG9vcDo6aXNNYWluKCkpOwotICAgIG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5jYWNoZUZvbnRDdXN0
b21QbGF0Zm9ybURhdGEoV1RGTW92ZShjdXN0b21QbGF0Zm9ybURhdGEpLCBmb250UmVzb3VyY2VJ
ZGVudGlmaWVyKTsKLX0KLQogdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjYWNoZURlY29t
cG9zZWRHbHlwaHMoUmVmPERlY29tcG9zZWRHbHlwaHM+JiYgZGVjb21wb3NlZEdseXBocykKIHsK
ICAgICAvLyBJbW1lZGlhdGVseSB0dXJuIHRoZSBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIg
KHdoaWNoIGlzIGVycm9yLXByb25lKSB0byBhIFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllciwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCmluZGV4IDUwNjZiMGI2YmRiYzkwMGE4YzljODdl
NmU3ZWM0M2UxOTcyMDY5NzkuLmY5NDEzOTI4NTk3NzQ0ODc3YTBjOGI3NmE3ZThiM2VlOWVmNGI0
MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaApAQCAtMTIzLDggKzEyMyw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBjYWNoZU5hdGl2ZUltYWdlKGNvbnN0IFNoYXJlYWJsZUJpdG1hcEhhbmRsZSYsIFdl
YkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAgdm9pZCBjYWNoZURlY29t
cG9zZWRHbHlwaHMoUmVmPFdlYkNvcmU6OkRlY29tcG9zZWRHbHlwaHM+JiYpOwogICAgIHZvaWQg
Y2FjaGVHcmFkaWVudChSZWY8V2ViQ29yZTo6R3JhZGllbnQ+JiYsIFdlYkNvcmU6OlJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcik7Ci0gICAgdm9pZCBjYWNoZUZvbnQoY29uc3QgV2ViQ29yZTo6
Rm9udDo6QXR0cmlidXRlcyYsIFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6OkF0dHJpYnV0ZXMs
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPik7Ci0g
ICAgdm9pZCBjYWNoZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoUmVmPFdlYkNvcmU6OkZvbnRDdXN0
b21QbGF0Zm9ybURhdGE+JiYpOworICAgIHZvaWQgY2FjaGVGb250KFJlZjxXZWJDb3JlOjpGb250
PiYmKTsKICAgICB2b2lkIHJlbGVhc2VBbGxSZXNvdXJjZXMoKTsKICAgICB2b2lkIHJlbGVhc2VS
ZW5kZXJpbmdSZXNvdXJjZShXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwog
ICAgIHZvaWQgZmluYWxpemVSZW5kZXJpbmdVcGRhdGUoUmVuZGVyaW5nVXBkYXRlSUQpOwpAQCAt
MTQxLDcgKzE0MCw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjYWNoZUdyYWRpZW50V2l0aFF1YWxp
ZmllZElkZW50aWZpZXIoUmVmPFdlYkNvcmU6OkdyYWRpZW50PiYmLCBRdWFsaWZpZWRSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIHZvaWQgcmVsZWFzZVJlbmRlcmluZ1Jlc291cmNl
V2l0aFF1YWxpZmllZElkZW50aWZpZXIoUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyKTsKICAgICB2b2lkIGNhY2hlRm9udFdpdGhRdWFsaWZpZWRJZGVudGlmaWVyKFJlZjxXZWJD
b3JlOjpGb250PiYmLCBRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwotICAg
IHZvaWQgY2FjaGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhV2l0aFF1YWxpZmllZElkZW50aWZpZXIo
UmVmPFdlYkNvcmU6OkZvbnRDdXN0b21QbGF0Zm9ybURhdGE+JiYsIFF1YWxpZmllZFJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcik7CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lkIHBy
ZXBhcmVMYXllckJ1ZmZlcnNGb3JEaXNwbGF5KGNvbnN0IFByZXBhcmVCYWNraW5nU3RvcmVCdWZm
ZXJzSW5wdXREYXRhJiwgUHJlcGFyZUJhY2tpbmdTdG9yZUJ1ZmZlcnNPdXRwdXREYXRhJik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVy
aW5nQmFja2VuZC5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluCmluZGV4IDUyMDA1OGE1ZTc1NjY3
NWI4Nzg0ZTEyZWM1OWRjNTdiZjFlZTk3ZjcuLjQ3MzFhMWQyMzY1NWE5MTQ0NTVmMmQ0NzYzMWM5
NjkxMDhlYzQ3MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluCkBA
IC0zMSw4ICszMSw3IEBAIG1lc3NhZ2VzIC0+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQgTm90UmVm
Q291bnRlZCBTdHJlYW0gewogICAgIEdldFNoYXJlYWJsZUJpdG1hcEZvckltYWdlQnVmZmVyKFdl
YkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBpbWFnZUJ1ZmZlciwgZW51bTpib29s
IFdlYkNvcmU6OlByZXNlcnZlUmVzb2x1dGlvbiBwcmVzZXJ2ZVJlc29sdXRpb24pIC0+IChXZWJL
aXQ6OlNoYXJlYWJsZUJpdG1hcEhhbmRsZSBoYW5kbGUpIFN5bmNocm9ub3VzIE5vdFN0cmVhbUVu
Y29kYWJsZVJlcGx5CiAgICAgR2V0RmlsdGVyZWRJbWFnZUZvckltYWdlQnVmZmVyKFdlYkNvcmU6
OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBpbWFnZUJ1ZmZlciwgUmVmPFdlYkNvcmU6OkZp
bHRlcj4gZmlsdGVyKSAtPiAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXBIYW5kbGUgaGFuZGxlKSBT
eW5jaHJvbm91cyBOb3RTdHJlYW1FbmNvZGFibGVSZXBseQogICAgIENhY2hlTmF0aXZlSW1hZ2Uo
V2ViS2l0OjpTaGFyZWFibGVCaXRtYXBIYW5kbGUgaGFuZGxlLCBXZWJDb3JlOjpSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSBOb3RTdHJlYW1F
bmNvZGFibGUKLSAgICBDYWNoZUZvbnQoV2ViQ29yZTo6Rm9udDo6QXR0cmlidXRlcyBkYXRhLCBX
ZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpBdHRyaWJ1dGVzIHBsYXRmb3JtRGF0YSwgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IHJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcikgTm90U3RyZWFtRW5jb2RhYmxlCi0gICAgQ2FjaGVGb250Q3VzdG9t
UGxhdGZvcm1EYXRhKFJlZjxXZWJDb3JlOjpGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjdXN0b21Q
bGF0Zm9ybURhdGEpIE5vdFN0cmVhbUVuY29kYWJsZQorICAgIENhY2hlRm9udChSZWY8V2ViQ29y
ZTo6Rm9udD4gZm9udCkgTm90U3RyZWFtRW5jb2RhYmxlCiAgICAgQ2FjaGVEZWNvbXBvc2VkR2x5
cGhzKFJlZjxXZWJDb3JlOjpEZWNvbXBvc2VkR2x5cGhzPiBkZWNvbXBvc2VkR2x5cGhzKSBOb3RT
dHJlYW1FbmNvZGFibGUKICAgICBDYWNoZUdyYWRpZW50KFJlZjxXZWJDb3JlOjpHcmFkaWVudD4g
Z3JhZGllbnQsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIpIE5vdFN0cmVhbUVuY29kYWJsZQogICAgIFJlbGVhc2VBbGxSZXNv
dXJjZXMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZVJlc291cmNlQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZVJlc291cmNlQ2FjaGUuY3BwCmluZGV4IGNjM2RlNmYwNTdhYTU1MzdkYjJmOTc4YTY1
Y2RlN2I0YzM5MDdhZWEuLmRkMmM1M2Q2MGU5ZTMyNzEzOGY1N2E0YTc3YTY0MmQ1OGU5YTYwOTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNv
dXJjZUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlUmVzb3VyY2VDYWNoZS5jcHAKQEAgLTk2LDE3ICs5Niw2IEBAIEZvbnQqIFJlbW90ZVJlc291
cmNlQ2FjaGU6OmNhY2hlZEZvbnQoUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
IHJlbmRlCiAgICAgcmV0dXJuIG1fcmVzb3VyY2VIZWFwLmdldEZvbnQocmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyKTsKIH0KIAotdm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlOjpjYWNoZUZvbnRD
dXN0b21QbGF0Zm9ybURhdGEoUmVmPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+JiYgZm9udCwgUXVh
bGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllcikKLXsKLSAgICBBU1NFUlQocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLm9iamVjdCgp
ID09IGZvbnQtPm1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKLSAgICBtX3Jlc291cmNl
SGVhcC5hZGQocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBXVEZNb3ZlKGZvbnQpKTsKLX0K
LQotRm9udEN1c3RvbVBsYXRmb3JtRGF0YSogUmVtb3RlUmVzb3VyY2VDYWNoZTo6Y2FjaGVkRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YShRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIg
cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSBjb25zdAotewotICAgIHJldHVybiBtX3Jlc291
cmNlSGVhcC5nZXRGb250Q3VzdG9tUGxhdGZvcm1EYXRhKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
Zmllcik7Ci19Ci0KIERlY29tcG9zZWRHbHlwaHMqIFJlbW90ZVJlc291cmNlQ2FjaGU6OmNhY2hl
ZERlY29tcG9zZWRHbHlwaHMoUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgY29uc3QKIHsKICAgICByZXR1cm4gbV9yZXNvdXJj
ZUhlYXAuZ2V0RGVjb21wb3NlZEdseXBocyhyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwpA
QCAtMTI4LDggKzExNyw3IEBAIGJvb2wgUmVtb3RlUmVzb3VyY2VDYWNoZTo6cmVsZWFzZVJlbmRl
cmluZ1Jlc291cmNlKFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlCiAgICAgICAgIHx8IG1f
cmVzb3VyY2VIZWFwLnJlbW92ZU5hdGl2ZUltYWdlKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cikKICAgICAgICAgfHwgbV9yZXNvdXJjZUhlYXAucmVtb3ZlRm9udChyZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIpCiAgICAgICAgIHx8IG1fcmVzb3VyY2VIZWFwLnJlbW92ZURlY29tcG9zZWRH
bHlwaHMocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQotICAgICAgICB8fCBtX3Jlc291cmNl
SGVhcC5yZW1vdmVHcmFkaWVudChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCi0gICAgICAg
IHx8IG1fcmVzb3VyY2VIZWFwLnJlbW92ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEocmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyKSkKKyAgICAgICAgfHwgbV9yZXNvdXJjZUhlYXAucmVtb3ZlR3Jh
ZGllbnQocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSkKICAgICAgICAgcmV0dXJuIHRydWU7
CiAKICAgICAvLyBDYWNoaW5nIHRoZSByZW1vdGUgcmVzb3VyY2Ugc2hvdWxkIGhhdmUgaGFwcGVu
ZWQgYmVmb3JlIHJlbGVhc2luZyBpdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5oCmluZGV4IGIzNTFkNDFiZjU4OGM0
ZTlmYTU5ZTQyM2Y4MjcwYzQxNzY0MTEwNWMuLjYxZjZjYTM5YWU5ZGU5NmU4NDM1YzllYzcyZTI2
ODAxMzBmZjY0NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVSZXNvdXJjZUNhY2hlLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuaApAQCAtNDUsNyArNDUsNiBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBjYWNoZUZvbnQoUmVmPFdlYkNvcmU6OkZvbnQ+JiYsIFF1YWxpZmllZFJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAgdm9pZCBjYWNoZURlY29tcG9zZWRHbHlwaHMoUmVm
PFdlYkNvcmU6OkRlY29tcG9zZWRHbHlwaHM+JiYsIFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcik7CiAgICAgdm9pZCBjYWNoZUdyYWRpZW50KFJlZjxXZWJDb3JlOjpHcmFkaWVu
dD4mJiwgUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKLSAgICB2b2lkIGNh
Y2hlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShSZWY8V2ViQ29yZTo6Rm9udEN1c3RvbVBsYXRmb3Jt
RGF0YT4mJiwgUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKIAogICAgIFJl
bW90ZUltYWdlQnVmZmVyKiBjYWNoZWRJbWFnZUJ1ZmZlcihRdWFsaWZpZWRSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIpIGNvbnN0OwogICAgIFJlZlB0cjxSZW1vdGVJbWFnZUJ1ZmZlcj4gdGFr
ZUltYWdlQnVmZmVyKFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CkBAIC01
Myw3ICs1Miw2IEBAIHB1YmxpYzoKICAgICBXZWJDb3JlOjpGb250KiBjYWNoZWRGb250KFF1YWxp
ZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgY29uc3Q7CiAgICAgV2ViQ29yZTo6RGVj
b21wb3NlZEdseXBocyogY2FjaGVkRGVjb21wb3NlZEdseXBocyhRdWFsaWZpZWRSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIpIGNvbnN0OwogICAgIFdlYkNvcmU6OkdyYWRpZW50KiBjYWNoZWRH
cmFkaWVudChRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpIGNvbnN0OwotICAg
IFdlYkNvcmU6OkZvbnRDdXN0b21QbGF0Zm9ybURhdGEqIGNhY2hlZEZvbnRDdXN0b21QbGF0Zm9y
bURhdGEoUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSBjb25zdDsKIAogICAg
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U291cmNlSW1hZ2U+IGNhY2hlZFNvdXJjZUltYWdlKFF1
YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgY29uc3Q7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1t
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2Eu
bW0KaW5kZXggZmUyYTRkMzQ3MjRjMmI3MzhmZjMwNjYzNmI0YWVjYmE3ZDgxMTE3My4uYjQ3ZjFh
YzU1NjYyYWQwNTNlNjkzZWVmMTY0N2Q3YjA1YjZjOTU5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0KKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0KQEAg
LTU5NCw3ICs1OTQsOCBAQCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE+
IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Rm9udD46OmRlY29kZVBsYQogICAgICAgICBhdXRvIGZv
bnREZXNjcmlwdG9yID0gYWRvcHRDRihDVEZvbnREZXNjcmlwdG9yQ3JlYXRlQ29weVdpdGhBdHRy
aWJ1dGVzKGJhc2VGb250RGVzY3JpcHRvciwgYXR0cmlidXRlcy0+Z2V0KCkpKTsKICAgICAgICAg
YXV0byBjdEZvbnQgPSBhZG9wdENGKENURm9udENyZWF0ZVdpdGhGb250RGVzY3JpcHRvcihmb250
RGVzY3JpcHRvci5nZXQoKSwgKnNpemUsIG51bGxwdHIpKTsKIAotICAgICAgICByZXR1cm4gV2Vi
Q29yZTo6Rm9udFBsYXRmb3JtRGF0YShjdEZvbnQuZ2V0KCksICpzaXplLCAqc3ludGhldGljQm9s
ZCwgKnN5bnRoZXRpY09ibGlxdWUsICpvcmllbnRhdGlvbiwgKndpZHRoVmFyaWFudCwgKnRleHRS
ZW5kZXJpbmdNb2RlLCBmb250Q3VzdG9tUGxhdGZvcm1EYXRhLmdldCgpKTsKKyAgICAgICAgYXV0
byBjcmVhdGlvbkRhdGEgPSBXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpDcmVhdGlvbkRhdGEg
eyBmb250RmFjZURhdGEsICppdGVtSW5Db2xsZWN0aW9uIH07CisgICAgICAgIHJldHVybiBXZWJD
b3JlOjpGb250UGxhdGZvcm1EYXRhKGN0Rm9udC5nZXQoKSwgKnNpemUsICpzeW50aGV0aWNCb2xk
LCAqc3ludGhldGljT2JsaXF1ZSwgKm9yaWVudGF0aW9uLCAqd2lkdGhWYXJpYW50LCAqdGV4dFJl
bmRlcmluZ01vZGUsICZjcmVhdGlvbkRhdGEpOwogICAgIH0KIAogICAgIHN0ZDo6b3B0aW9uYWw8
Q1RGb250RGVzY3JpcHRvck9wdGlvbnM+IG9wdGlvbnM7CkBAIC02MTksODggKzYyMCw2IEBAIHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YT4gQXJndW1lbnRDb2RlcjxXZWJD
b3JlOjpGb250Pjo6ZGVjb2RlUGxhCiAgICAgcmV0dXJuIFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURh
dGEoY3RGb250LmdldCgpLCAqc2l6ZSwgKnN5bnRoZXRpY0JvbGQsICpzeW50aGV0aWNPYmxpcXVl
LCAqb3JpZW50YXRpb24sICp3aWR0aFZhcmlhbnQsICp0ZXh0UmVuZGVyaW5nTW9kZSk7CiB9CiAK
LXZvaWQgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpGb250Q3VzdG9tUGxhdGZvcm1EYXRhPjo6ZW5j
b2RlUGxhdGZvcm1EYXRhKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6OkZvbnRDdXN0
b21QbGF0Zm9ybURhdGEmIGN1c3RvbVBsYXRmb3JtRGF0YSkKLXsKLSAgICBXZWJLaXQ6OlNoYXJl
ZE1lbW9yeTo6SGFuZGxlIGhhbmRsZTsKLSAgICB7Ci0gICAgICAgIGF1dG8gc2hhcmVkTWVtb3J5
QnVmZmVyID0gV2ViS2l0OjpTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIoY3VzdG9tUGxhdGZvcm1E
YXRhLmNyZWF0aW9uRGF0YS5mb250RmFjZURhdGEpOwotICAgICAgICBpZiAoYXV0byBtZW1vcnlI
YW5kbGUgPSBzaGFyZWRNZW1vcnlCdWZmZXItPmNyZWF0ZUhhbmRsZShXZWJLaXQ6OlNoYXJlZE1l
bW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpKQotICAgICAgICAgICAgaGFuZGxlID0gV1RGTW92
ZSgqbWVtb3J5SGFuZGxlKTsKLSAgICB9Ci0gICAgZW5jb2RlciA8PCBjdXN0b21QbGF0Zm9ybURh
dGEuY3JlYXRpb25EYXRhLmZvbnRGYWNlRGF0YS0+c2l6ZSgpOwotICAgIGVuY29kZXIgPDwgV1RG
TW92ZShoYW5kbGUpOwotICAgIGVuY29kZXIgPDwgY3VzdG9tUGxhdGZvcm1EYXRhLmNyZWF0aW9u
RGF0YS5pdGVtSW5Db2xsZWN0aW9uOwotfQotCi1zdGQ6Om9wdGlvbmFsPFJlZjxXZWJDb3JlOjpG
b250Q3VzdG9tUGxhdGZvcm1EYXRhPj4gQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpGb250Q3VzdG9t
UGxhdGZvcm1EYXRhPjo6ZGVjb2RlUGxhdGZvcm1EYXRhKERlY29kZXImIGRlY29kZXIpCi17Ci0g
ICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gYnVmZmVyU2l6ZTsKLSAgICBkZWNvZGVyID4+IGJ1
ZmZlclNpemU7Ci0gICAgaWYgKCFidWZmZXJTaXplKQotICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwotCi0gICAgc3RkOjpvcHRpb25hbDxXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SGFuZGxlPiBo
YW5kbGU7Ci0gICAgZGVjb2RlciA+PiBoYW5kbGU7Ci0gICAgaWYgKCFoYW5kbGUpCi0gICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICBhdXRvIHNoYXJlZE1lbW9yeUJ1ZmZlciA9IFdl
YktpdDo6U2hhcmVkTWVtb3J5OjptYXAoKmhhbmRsZSwgV2ViS2l0OjpTaGFyZWRNZW1vcnk6OlBy
b3RlY3Rpb246OlJlYWRPbmx5KTsKLSAgICBpZiAoIXNoYXJlZE1lbW9yeUJ1ZmZlcikKLSAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgIGlmIChzaGFyZWRNZW1vcnlCdWZmZXItPnNp
emUoKSA8ICpidWZmZXJTaXplKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAg
YXV0byBmb250RmFjZURhdGEgPSBzaGFyZWRNZW1vcnlCdWZmZXItPmNyZWF0ZVNoYXJlZEJ1ZmZl
cigqYnVmZmVyU2l6ZSk7Ci0KLSAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gaXRlbUluQ29sbGVj
dGlvbjsKLSAgICBkZWNvZGVyID4+IGl0ZW1JbkNvbGxlY3Rpb247Ci0gICAgaWYgKCFpdGVtSW5D
b2xsZWN0aW9uKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgYXV0byBmb250
Q3VzdG9tUGxhdGZvcm1EYXRhID0gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShmb250RmFj
ZURhdGEsICppdGVtSW5Db2xsZWN0aW9uKTsKLSAgICBpZiAoIWZvbnRDdXN0b21QbGF0Zm9ybURh
dGEpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgcmV0dXJuIGZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEucmVsZWFzZU5vbk51bGwoKTsKLX0KLQotdm9pZCBBcmd1bWVudENvZGVyPFdl
YkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6OkF0dHJpYnV0ZXM+OjplbmNvZGVQbGF0Zm9ybURhdGEo
RW5jb2RlciYgZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6QXR0cmli
dXRlcyYgZGF0YSkKLXsKLSAgICBlbmNvZGVyIDw8IGRhdGEubV9hdHRyaWJ1dGVzOwotICAgIGVu
Y29kZXIgPDwgZGF0YS5tX29wdGlvbnM7Ci0gICAgZW5jb2RlciA8PCBkYXRhLm1fdXJsOwotICAg
IGVuY29kZXIgPDwgZGF0YS5tX3BzTmFtZTsKLX0KLQotYm9vbCBBcmd1bWVudENvZGVyPFdlYkNv
cmU6OkZvbnRQbGF0Zm9ybURhdGE6OkF0dHJpYnV0ZXM+OjpkZWNvZGVQbGF0Zm9ybURhdGEoRGVj
b2RlciYgZGVjb2RlciwgV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6QXR0cmlidXRlcyYgZGF0
YSkKLXsKLSAgICBzdGQ6Om9wdGlvbmFsPFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+PiBhdHRy
aWJ1dGVzOwotICAgIGRlY29kZXIgPj4gYXR0cmlidXRlczsKLSAgICBpZiAoIWF0dHJpYnV0ZXMp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHN0ZDo6b3B0aW9uYWw8Q1RGb250RGVzY3Jp
cHRvck9wdGlvbnM+IG9wdGlvbnM7Ci0gICAgZGVjb2RlciA+PiBvcHRpb25zOwotICAgIGlmICgh
b3B0aW9ucykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0KLSAgICBzdGQ6Om9wdGlvbmFsPFJl
dGFpblB0cjxDRlN0cmluZ1JlZj4+IHVybDsKLSAgICBkZWNvZGVyID4+IHVybDsKLSAgICBpZiAo
IXVybCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgc3RkOjpvcHRpb25hbDxSZXRhaW5Q
dHI8Q0ZTdHJpbmdSZWY+PiBwc05hbWU7Ci0gICAgZGVjb2RlciA+PiBwc05hbWU7Ci0gICAgaWYg
KCFwc05hbWUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGRhdGEubV9hdHRyaWJ1dGVz
ID0gYXR0cmlidXRlcy52YWx1ZSgpOwotICAgIGRhdGEubV9vcHRpb25zID0gb3B0aW9ucy52YWx1
ZSgpOwotICAgIGRhdGEubV91cmwgPSB1cmwudmFsdWUoKTsKLSAgICBkYXRhLm1fcHNOYW1lID0g
cHNOYW1lLnZhbHVlKCk7Ci0gICAgcmV0dXJuIHRydWU7Ci19CiAKICNpZiBFTkFCTEUoREFUQV9E
RVRFQ1RJT04pCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuY3BwCmluZGV4IDM0NWJlZTA5MDY3ZDVmM2EwMjBiZWY5NmIwNTdkMDY1NGQ0YWIzYmMuLjY4
NDcyZmVjZWExODAwZTc1YWJjZDZjMDAwZDE1ZGFjMzRhZWNlZjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtODYsNyArODYsNiBAQAog
I2luY2x1ZGUgPFdlYkNvcmUvRmlsdGVyT3BlcmF0aW9ucy5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
RmxvYXRRdWFkLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Gb250Lmg+Ci0jaW5jbHVkZSA8V2ViQ29y
ZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0Nv
bnRleHQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXIuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0lEQkdldFJlc3VsdC5oPgpAQCAtNDc5LDM2ICs0NzgsMTcgQEAgYm9vbCBBcmd1bWVu
dENvZGVyPFJlZlB0cjxJbWFnZT4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPElt
YWdlPiYgaW1hZ2UKIAogdm9pZCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkZvbnQ+OjplbmNvZGUo
RW5jb2RlciYgZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6Rm9udCYgZm9udCkKIHsKLSAgICBlbmNv
ZGVyIDw8IGZvbnQuYXR0cmlidXRlcygpOworICAgIGVuY29kZXIgPDwgZm9udC5vcmlnaW4oKTsK
KyAgICBlbmNvZGVyIDw8IChmb250LmlzSW50ZXJzdGl0aWFsKCkgPyBGb250OjpJbnRlcnN0aXRp
YWw6OlllcyA6IEZvbnQ6OkludGVyc3RpdGlhbDo6Tm8pOworICAgIGVuY29kZXIgPDwgZm9udC52
aXNpYmlsaXR5KCk7CisgICAgZW5jb2RlciA8PCAoZm9udC5pc1RleHRPcmllbnRhdGlvbkZhbGxi
YWNrKCkgPyBGb250OjpPcmllbnRhdGlvbkZhbGxiYWNrOjpZZXMgOiBGb250OjpPcmllbnRhdGlv
bkZhbGxiYWNrOjpObyk7CisgICAgZW5jb2RlciA8PCBmb250LnJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcigpOwogICAgIC8vIEludGVudGlvbmFsbHkgZG9uJ3QgZW5jb2RlIG1faXNCcm9rZW5J
ZGVvZ3JhcGhGYWxsYmFjayBiZWNhdXNlIGl0IGRvZXNuJ3QgYWZmZWN0IGRyYXdHbHlwaHMoKS4K
IAogICAgIGVuY29kZVBsYXRmb3JtRGF0YShlbmNvZGVyLCBmb250KTsKIH0KIAogc3RkOjpvcHRp
b25hbDxSZWY8Rm9udD4+IEFyZ3VtZW50Q29kZXI8Rm9udD46OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQotewotICAgIHN0ZDo6b3B0aW9uYWw8Rm9udDo6QXR0cmlidXRlcz4gYXR0cmlidXRlczsK
LSAgICBkZWNvZGVyID4+IGF0dHJpYnV0ZXM7Ci0gICAgaWYgKCFhdHRyaWJ1dGVzKQotICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgYXV0byBwbGF0Zm9ybURhdGEgPSBkZWNvZGVQ
bGF0Zm9ybURhdGEoZGVjb2Rlcik7Ci0gICAgaWYgKCFwbGF0Zm9ybURhdGEpCi0gICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICByZXR1cm4gRm9udDo6Y3JlYXRlKCpwbGF0Zm9ybURh
dGEsIGF0dHJpYnV0ZXMtPm9yaWdpbiwgYXR0cmlidXRlcy0+aXNJbnRlcnN0aXRpYWwsIGF0dHJp
YnV0ZXMtPnZpc2liaWxpdHksIGF0dHJpYnV0ZXMtPmlzVGV4dE9yaWVudGF0aW9uRmFsbGJhY2ss
IGF0dHJpYnV0ZXMtPnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7Ci19Ci0KLXZvaWQgQXJn
dW1lbnRDb2RlcjxXZWJDb3JlOjpGb250OjpBdHRyaWJ1dGVzPjo6ZW5jb2RlKEVuY29kZXImIGVu
Y29kZXIsIGNvbnN0IFdlYkNvcmU6OkZvbnQ6OkF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMpCi17Ci0g
ICAgZW5jb2RlciA8PCBhdHRyaWJ1dGVzLm9yaWdpbjsKLSAgICBlbmNvZGVyIDw8IGF0dHJpYnV0
ZXMuaXNJbnRlcnN0aXRpYWw7Ci0gICAgZW5jb2RlciA8PCBhdHRyaWJ1dGVzLnZpc2liaWxpdHk7
Ci0gICAgZW5jb2RlciA8PCBhdHRyaWJ1dGVzLmlzVGV4dE9yaWVudGF0aW9uRmFsbGJhY2s7Ci0g
ICAgZW5jb2RlciA8PCBhdHRyaWJ1dGVzLmVuc3VyZVJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cigpOwotfQotCi1zdGQ6Om9wdGlvbmFsPEZvbnQ6OkF0dHJpYnV0ZXM+IEFyZ3VtZW50Q29kZXI8
Rm9udDo6QXR0cmlidXRlcz46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIHN0ZDo6
b3B0aW9uYWw8Rm9udDo6T3JpZ2luPiBvcmlnaW47CiAgICAgZGVjb2RlciA+PiBvcmlnaW47CkBA
IC01MzUsODEgKzUxNSwxMSBAQCBzdGQ6Om9wdGlvbmFsPEZvbnQ6OkF0dHJpYnV0ZXM+IEFyZ3Vt
ZW50Q29kZXI8Rm9udDo6QXR0cmlidXRlcz46OmRlY29kZShEZWNvZGVyJgogICAgIGlmICghcmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
Ci0gICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8Rm9udDo6QXR0cmlidXRlcz4oeyByZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIsIG9yaWdpbi52YWx1ZSgpLCBpc0ludGVyc3RpdGlhbC52YWx1ZSgp
LCB2aXNpYmlsaXR5LnZhbHVlKCksIGlzVGV4dE9yaWVudGF0aW9uRmFsbGJhY2sudmFsdWUoKSB9
KTsKLX0KLQotdm9pZCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkZvbnRDdXN0b21QbGF0Zm9ybURh
dGE+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6Rm9udEN1c3RvbVBs
YXRmb3JtRGF0YSYgY3VzdG9tUGxhdGZvcm1EYXRhKQotewotICAgIGVuY29kZVBsYXRmb3JtRGF0
YShlbmNvZGVyLCBjdXN0b21QbGF0Zm9ybURhdGEpOwotCi0gICAgZW5jb2RlciA8PCBjdXN0b21Q
bGF0Zm9ybURhdGEubV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI7Ci19Ci0KLXN0ZDo6b3B0
aW9uYWw8UmVmPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+PiBBcmd1bWVudENvZGVyPEZvbnRDdXN0
b21QbGF0Zm9ybURhdGE+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKLXsKLSAgICBhdXRvIHJl
c3VsdCA9IGRlY29kZVBsYXRmb3JtRGF0YShkZWNvZGVyKTsKLSAgICBpZiAocmVzdWx0KSB7Ci0g
ICAgICAgIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiByZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXI7Ci0gICAgICAgIGRlY29kZXIgPj4gcmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyOwotICAgICAgICBpZiAoIXJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikK
LSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICAgICAgKCpyZXN1bHQpLT5t
X3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciA9ICpyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXI7Ci0gICAgfQotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotdm9pZCBBcmd1bWVudENvZGVy
PFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6OkF0dHJpYnV0ZXM+OjplbmNvZGUoRW5jb2RlciYg
ZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6QXR0cmlidXRlcyYgZGF0
YSkKLXsKLSAgICBlbmNvZGVyIDw8IGRhdGEubV9vcmllbnRhdGlvbjsKLSAgICBlbmNvZGVyIDw8
IGRhdGEubV93aWR0aFZhcmlhbnQ7Ci0gICAgZW5jb2RlciA8PCBkYXRhLm1fdGV4dFJlbmRlcmlu
Z01vZGU7Ci0gICAgZW5jb2RlciA8PCBkYXRhLm1fc2l6ZTsKLSAgICBlbmNvZGVyIDw8IGRhdGEu
bV9zeW50aGV0aWNCb2xkOwotICAgIGVuY29kZXIgPDwgZGF0YS5tX3N5bnRoZXRpY09ibGlxdWU7
Ci0KLSAgICBlbmNvZGVQbGF0Zm9ybURhdGEoZW5jb2RlciwgZGF0YSk7Ci19Ci0KLXN0ZDo6b3B0
aW9uYWw8Rm9udFBsYXRmb3JtRGF0YTo6QXR0cmlidXRlcz4gQXJndW1lbnRDb2RlcjxGb250UGxh
dGZvcm1EYXRhOjpBdHRyaWJ1dGVzPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCi17Ci0gICAg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGb250T3JpZW50YXRpb24+IG9yaWVudGF0aW9uOwotICAg
IGRlY29kZXIgPj4gb3JpZW50YXRpb247Ci0gICAgaWYgKCFvcmllbnRhdGlvbikKLSAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Rm9udFdp
ZHRoVmFyaWFudD4gd2lkdGhWYXJpYW50OwotICAgIGRlY29kZXIgPj4gd2lkdGhWYXJpYW50Owot
ICAgIGlmICghd2lkdGhWYXJpYW50KQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0g
ICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpUZXh0UmVuZGVyaW5nTW9kZT4gdGV4dFJlbmRlcmlu
Z01vZGU7Ci0gICAgZGVjb2RlciA+PiB0ZXh0UmVuZGVyaW5nTW9kZTsKLSAgICBpZiAoIXRleHRS
ZW5kZXJpbmdNb2RlKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgc3RkOjpv
cHRpb25hbDxmbG9hdD4gc2l6ZTsKLSAgICBkZWNvZGVyID4+IHNpemU7Ci0gICAgaWYgKCFzaXpl
KQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgc3RkOjpvcHRpb25hbDxib29s
PiBzeW50aGV0aWNCb2xkOwotICAgIGRlY29kZXIgPj4gc3ludGhldGljQm9sZDsKLSAgICBpZiAo
IXN5bnRoZXRpY0JvbGQpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICBzdGQ6
Om9wdGlvbmFsPGJvb2w+IHN5bnRoZXRpY09ibGlxdWU7Ci0gICAgZGVjb2RlciA+PiBzeW50aGV0
aWNPYmxpcXVlOwotICAgIGlmICghc3ludGhldGljT2JsaXF1ZSkKLSAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKLQotICAgIEZvbnRQbGF0Zm9ybURhdGE6OkF0dHJpYnV0ZXMgcmVzdWx0KHNp
emUudmFsdWUoKSwgb3JpZW50YXRpb24udmFsdWUoKSwgd2lkdGhWYXJpYW50LnZhbHVlKCksIHRl
eHRSZW5kZXJpbmdNb2RlLnZhbHVlKCksIHN5bnRoZXRpY0JvbGQudmFsdWUoKSwgc3ludGhldGlj
T2JsaXF1ZS52YWx1ZSgpKTsKLQotICAgIGlmICghZGVjb2RlUGxhdGZvcm1EYXRhKGRlY29kZXIs
IHJlc3VsdCkpCisgICAgYXV0byBwbGF0Zm9ybURhdGEgPSBkZWNvZGVQbGF0Zm9ybURhdGEoZGVj
b2Rlcik7CisgICAgaWYgKCFwbGF0Zm9ybURhdGEpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBGb250OjpjcmVhdGUocGxhdGZv
cm1EYXRhLnZhbHVlKCksIG9yaWdpbi52YWx1ZSgpLCBpc0ludGVyc3RpdGlhbC52YWx1ZSgpLCB2
aXNpYmlsaXR5LnZhbHVlKCksIGlzVGV4dE9yaWVudGF0aW9uRmFsbGJhY2sudmFsdWUoKSwgcmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKIH0KIAogdm9pZCBBcmd1bWVudENvZGVyPEN1cnNv
cj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBDdXJzb3ImIGN1cnNvcikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKaW5kZXggOTJkNWNkY2Ix
ZTdmYmJiOGE2MDQ1NzM0YTYxOGEwNjk0NzM1ZDE0MC4uMzk0OGY5MWRiNDFmYWY5MjJjNzUwOTll
YzU5ZmFkNjA2ZDMzMWExMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmgKQEAgLTE1OCw3ICsxNTgsNiBAQCBzdHJ1Y3QgRGljdGlvbmFyeVBvcHVwSW5m
bzsKIHN0cnVjdCBFdmVudFRyYWNraW5nUmVnaW9uczsKIHN0cnVjdCBFeGNlcHRpb25EZXRhaWxz
Owogc3RydWN0IEZpbGVDaG9vc2VyU2V0dGluZ3M7Ci1zdHJ1Y3QgRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YTsKIHN0cnVjdCBUZXh0UmVjb2duaXRpb25EYXRhRGV0ZWN0b3I7CiBzdHJ1Y3QgTGVuZ3Ro
Owogc3RydWN0IEdyYW1tYXJEZXRhaWw7CkBAIC0yNjgsMjUgKzI2Nyw2IEBAIHRlbXBsYXRlPD4g
c3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Rm9udD4gewogICAgIHN0YXRpYyBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE+IGRlY29kZVBsYXRmb3JtRGF0YShEZWNv
ZGVyJik7CiB9OwogCi10ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkZv
bnQ6OkF0dHJpYnV0ZXM+IHsKLSAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0
IFdlYkNvcmU6OkZvbnQ6OkF0dHJpYnV0ZXMmKTsKLSAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpGb250OjpBdHRyaWJ1dGVzPiBkZWNvZGUoRGVjb2RlciYpOwotfTsKLQotdGVtcGxh
dGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpBdHRy
aWJ1dGVzPiB7Ci0gICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3Jl
OjpGb250UGxhdGZvcm1EYXRhOjpBdHRyaWJ1dGVzJik7Ci0gICAgc3RhdGljIHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6QXR0cmlidXRlcz4gZGVjb2RlKERlY29kZXIm
KTsKLSAgICBzdGF0aWMgdm9pZCBlbmNvZGVQbGF0Zm9ybURhdGEoRW5jb2RlciYsIGNvbnN0IFdl
YkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6OkF0dHJpYnV0ZXMmKTsKLSAgICBzdGF0aWMgV0FSTl9V
TlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlUGxhdGZvcm1EYXRhKERlY29kZXImLCBXZWJDb3JlOjpG
b250UGxhdGZvcm1EYXRhOjpBdHRyaWJ1dGVzJik7Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBB
cmd1bWVudENvZGVyPFdlYkNvcmU6OkZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IHsKLSAgICBzdGF0
aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OkZvbnRDdXN0b21QbGF0Zm9y
bURhdGEmKTsKLSAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZWY8V2ViQ29yZTo6Rm9udEN1c3Rv
bVBsYXRmb3JtRGF0YT4+IGRlY29kZShEZWNvZGVyJik7Ci0gICAgc3RhdGljIHZvaWQgZW5jb2Rl
UGxhdGZvcm1EYXRhKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpGb250Q3VzdG9tUGxhdGZvcm1E
YXRhJik7Ci0gICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVmPFdlYkNvcmU6OkZvbnRDdXN0b21Q
bGF0Zm9ybURhdGE+PiBkZWNvZGVQbGF0Zm9ybURhdGEoRGVjb2RlciYpOwotfTsKLQogdGVtcGxh
dGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpSZXNvdXJjZUVycm9yPiB7CiAgICAg
c3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
Jik7CiAgICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNvZGVyJiwg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvY2YvQXJndW1lbnRDb2RlcnNDRi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZi9Bcmd1
bWVudENvZGVyc0NGLmNwcAppbmRleCA1NzYyZWJjYjE0MTFkMjMxYzlhMTg0MjY5ZDZmYTBhNTJj
NzhmNGNjLi43YjU5NDY1ZTg3Y2U2M2M5YmVlNTRmMjYzMWVmY2EzZTRkYzA0MTFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZi9Bcmd1bWVudENvZGVyc0NGLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9jZi9Bcmd1bWVudENvZGVyc0NGLmNwcApAQCAtNjUyLDEyICs2
NTIsNiBAQCBzdGQ6Om9wdGlvbmFsPFJldGFpblB0cjxDRk51bWJlclJlZj4+IEFyZ3VtZW50Q29k
ZXI8UmV0YWluUHRyPENGTnVtYmVyUmVmPj46OmRlYwogdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rl
cj4KIHZvaWQgQXJndW1lbnRDb2RlcjxDRlN0cmluZ1JlZj46OmVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyLCBDRlN0cmluZ1JlZiBzdHJpbmcpCiB7Ci0gICAgaWYgKCFzdHJpbmcpIHsKLSAgICAgICAg
ZW5jb2RlciA8PCB0cnVlOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGVuY29kZXIgPDwg
ZmFsc2U7Ci0KICAgICBDRkluZGV4IGxlbmd0aCA9IENGU3RyaW5nR2V0TGVuZ3RoKHN0cmluZyk7
CiAgICAgQ0ZTdHJpbmdFbmNvZGluZyBlbmNvZGluZyA9IENGU3RyaW5nR2V0RmFzdGVzdEVuY29k
aW5nKHN0cmluZyk7CiAKQEAgLTY3OSwxNCArNjczLDYgQEAgdGVtcGxhdGUgdm9pZCBBcmd1bWVu
dENvZGVyPENGU3RyaW5nUmVmPjo6ZW5jb2RlPFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyPihTdHJl
YW0KIAogc3RkOjpvcHRpb25hbDxSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+PiBBcmd1bWVudENvZGVy
PFJldGFpblB0cjxDRlN0cmluZ1JlZj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAg
ICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGlzTnVsbDsKLSAgICBkZWNvZGVyID4+IGlzTnVsbDsKLSAg
ICBpZiAoIWlzTnVsbCkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgIGlmICgq
aXNOdWxsKQotICAgICAgICByZXR1cm4geyB7IG51bGxwdHIgfSB9OwotCiAgICAgc3RkOjpvcHRp
b25hbDx1aW50MzJfdD4gZW5jb2RpbmdGcm9tSVBDOwogICAgIGRlY29kZXIgPj4gZW5jb2RpbmdG
cm9tSVBDOwogICAgIGlmICghZW5jb2RpbmdGcm9tSVBDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvcGxheXN0YXRpb24vV2ViQ29yZUFyZ3VtZW50Q29kZXJzUGxheVN0YXRpb24u
Y3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvcGxheXN0YXRpb24vV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzUGxheVN0YXRpb24uY3BwCmluZGV4IDlmMjc2ODgyYWQ0NzE1MjY4NGQ2ODdjYzE2MDM0NDll
M2UzZGIwYjkuLjk2NGI1MzU1ZDIxODgzNmUzNGEzZDQyZjk2ZTU3NzRkYjdjMDZhMWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3BsYXlzdGF0aW9uL1dlYkNvcmVBcmd1bWVudENv
ZGVyc1BsYXlTdGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9wbGF5c3RhdGlv
bi9XZWJDb3JlQXJndW1lbnRDb2RlcnNQbGF5U3RhdGlvbi5jcHAKQEAgLTI3LDcgKzI3LDYgQEAK
ICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKIAogI2luY2x1ZGUgPFdlYkNvcmUv
Rm9udC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oPgogCiBu
YW1lc3BhY2UgSVBDIHsKIApAQCAtNDQsMjYgKzQzLDQgQEAgc3RkOjpvcHRpb25hbDxGb250UGxh
dGZvcm1EYXRhPiBBcmd1bWVudENvZGVyPEZvbnQ+OjpkZWNvZGVQbGF0Zm9ybURhdGEoRGVjb2Rl
ciYKICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCi12b2lkIEFyZ3VtZW50Q29kZXI8V2Vi
Q29yZTo6Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT46OmVuY29kZVBsYXRmb3JtRGF0YShFbmNvZGVy
JiBlbmNvZGVyLCBjb25zdCBXZWJDb3JlOjpGb250Q3VzdG9tUGxhdGZvcm1EYXRhJiBjdXN0b21Q
bGF0Zm9ybURhdGEpCi17Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLXN0ZDo6b3B0
aW9uYWw8UmVmPFdlYkNvcmU6OkZvbnRDdXN0b21QbGF0Zm9ybURhdGE+PiBBcmd1bWVudENvZGVy
PFdlYkNvcmU6OkZvbnRDdXN0b21QbGF0Zm9ybURhdGE+OjpkZWNvZGVQbGF0Zm9ybURhdGEoRGVj
b2RlciYgZGVjb2RlcikKLXsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwotfQotCi12b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Rm9udFBsYXRm
b3JtRGF0YTo6QXR0cmlidXRlcz46OmVuY29kZVBsYXRmb3JtRGF0YShFbmNvZGVyJiBlbmNvZGVy
LCBjb25zdCBXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpBdHRyaWJ1dGVzJiBkYXRhKQotewot
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi1ib29sIEFyZ3VtZW50Q29kZXI8V2ViQ29y
ZTo6Rm9udFBsYXRmb3JtRGF0YTo6QXR0cmlidXRlcz46OmRlY29kZVBsYXRmb3JtRGF0YShEZWNv
ZGVyJiBkZWNvZGVyLCBXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpBdHRyaWJ1dGVzJiBkYXRh
KQotewotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBmYWxzZTsKLX0KLQog
fSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9zb3Vw
L1dlYkNvcmVBcmd1bWVudENvZGVyc1NvdXAuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvc291
cC9XZWJDb3JlQXJndW1lbnRDb2RlcnNTb3VwLmNwcAppbmRleCBhMjcyNjVmMGIyMmFlNDRmMWFm
ZTI1Zjc5NmU0NDdhYjRkNzcxNzc0Li5iOGQ5MDBkNTBhZTZiNTY2YjgzOGRiZWVhZTAxZGNmN2I2
YmMzMjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9zb3VwL1dlYkNvcmVBcmd1
bWVudENvZGVyc1NvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3NvdXAvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzU291cC5jcHAKQEAgLTM0LDcgKzM0LDYgQEAKICNpbmNsdWRlIDxXZWJD
b3JlL0NyZWRlbnRpYWwuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RpY3Rpb25hcnlQb3B1cEluZm8u
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZvbnQuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0ZvbnRDdXN0
b21QbGF0Zm9ybURhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVz
b3VyY2VSZXNwb25zZS5oPgpAQCAtMTcxLDI4ICsxNzAsNiBAQCBzdGQ6Om9wdGlvbmFsPEZvbnRQ
bGF0Zm9ybURhdGE+IEFyZ3VtZW50Q29kZXI8Rm9udD46OmRlY29kZVBsYXRmb3JtRGF0YShEZWNv
ZGVyJgogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKLXZvaWQgQXJndW1lbnRDb2RlcjxX
ZWJDb3JlOjpGb250Q3VzdG9tUGxhdGZvcm1EYXRhPjo6ZW5jb2RlUGxhdGZvcm1EYXRhKEVuY29k
ZXImIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6OkZvbnRDdXN0b21QbGF0Zm9ybURhdGEmIGN1c3Rv
bVBsYXRmb3JtRGF0YSkKLXsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotc3RkOjpv
cHRpb25hbDxSZWY8V2ViQ29yZTo6Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4+IEFyZ3VtZW50Q29k
ZXI8V2ViQ29yZTo6Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT46OmRlY29kZVBsYXRmb3JtRGF0YShE
ZWNvZGVyJiBkZWNvZGVyKQotewotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7Ci19Ci0KLXZvaWQgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpGb250UGxh
dGZvcm1EYXRhOjpBdHRyaWJ1dGVzPjo6ZW5jb2RlUGxhdGZvcm1EYXRhKEVuY29kZXImIGVuY29k
ZXIsIGNvbnN0IFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6OkF0dHJpYnV0ZXMmIGRhdGEpCi17
Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLWJvb2wgQXJndW1lbnRDb2RlcjxXZWJD
b3JlOjpGb250UGxhdGZvcm1EYXRhOjpBdHRyaWJ1dGVzPjo6ZGVjb2RlUGxhdGZvcm1EYXRhKERl
Y29kZXImIGRlY29kZXIsIFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6OkF0dHJpYnV0ZXMmIGRh
dGEpCi17Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQot
CiAjaWYgRU5BQkxFKFZJREVPKQogdm9pZCBBcmd1bWVudENvZGVyPFNlcmlhbGl6ZWRQbGF0Zm9y
bURhdGFDdWVWYWx1ZT46OmVuY29kZVBsYXRmb3JtRGF0YShFbmNvZGVyJiBlbmNvZGVyLCBjb25z
dCBTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlVmFsdWUmIHZhbHVlKQogewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvd2luL1dlYkNvcmVBcmd1bWVudENvZGVyc1dpbi5jcHAgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC93aW4vV2ViQ29yZUFyZ3VtZW50Q29kZXJzV2luLmNwcAppbmRl
eCA5ZTM4YjdjNGYzYTQ2NjkxOTg4NGY1NDBkYTkwZGY1ZTZhYjZjOTVjLi4zMWRlNzgyYjBkMTQ3
ZjVjZGNhM2MyOTk1ODI0MjBiNDM1ZGZlYTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC93aW4vV2ViQ29yZUFyZ3VtZW50Q29kZXJzV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC93aW4vV2ViQ29yZUFyZ3VtZW50Q29kZXJzV2luLmNwcApAQCAtODgsNyArODgsOCBA
QCBzdGQ6Om9wdGlvbmFsPEZvbnRQbGF0Zm9ybURhdGE+IEFyZ3VtZW50Q29kZXI8Rm9udD46OmRl
Y29kZVBsYXRmb3JtRGF0YShEZWNvZGVyJgogICAgIGlmICghaW5jbHVkZXNDcmVhdGlvbkRhdGEp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBSZWZQdHI8Rm9udEN1c3RvbVBs
YXRmb3JtRGF0YT4gZm9udEN1c3RvbVBsYXRmb3JtRGF0YTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gZm9udEN1c3RvbVBsYXRmb3JtRGF0YTsKKyAgICBGb250
UGxhdGZvcm1EYXRhOjpDcmVhdGlvbkRhdGEqIGNyZWF0aW9uRGF0YSA9IG51bGxwdHI7CiAKICAg
ICBpZiAoaW5jbHVkZXNDcmVhdGlvbkRhdGEudmFsdWUoKSkgewogICAgICAgICBzdGQ6Om9wdGlv
bmFsPFJlZjxTaGFyZWRCdWZmZXI+PiBmb250RmFjZURhdGE7CkBAIC0xMDQsNiArMTA1LDcgQEAg
c3RkOjpvcHRpb25hbDxGb250UGxhdGZvcm1EYXRhPiBBcmd1bWVudENvZGVyPEZvbnQ+OjpkZWNv
ZGVQbGF0Zm9ybURhdGEoRGVjb2RlciYKICAgICAgICAgZm9udEN1c3RvbVBsYXRmb3JtRGF0YSA9
IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoZm9udEZhY2VEYXRhLnZhbHVlKCksIGl0ZW1J
bkNvbGxlY3Rpb24udmFsdWUoKSk7CiAgICAgICAgIGlmICghZm9udEN1c3RvbVBsYXRmb3JtRGF0
YSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIGNyZWF0aW9uRGF0
YSA9ICZmb250Q3VzdG9tUGxhdGZvcm1EYXRhLT5jcmVhdGlvbkRhdGE7CiAgICAgfQogCiAgICAg
c3RkOjpvcHRpb25hbDxMT0dGT05UPiBsb2dGb250OwpAQCAtMTE4LDQ4ICsxMjAsNyBAQCBzdGQ6
Om9wdGlvbmFsPEZvbnRQbGF0Zm9ybURhdGE+IEFyZ3VtZW50Q29kZXI8Rm9udD46OmRlY29kZVBs
YXRmb3JtRGF0YShEZWNvZGVyJgogICAgIGlmICghZ2RpRm9udCkKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAotICAgIHJldHVybiBGb250UGxhdGZvcm1EYXRhKFdURk1vdmUoZ2RpRm9u
dCksICpzaXplLCAqc3ludGhldGljQm9sZCwgKnN5bnRoZXRpY09ibGlxdWUsIGZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEuZ2V0KCkpOworICAgIHJldHVybiBGb250UGxhdGZvcm1EYXRhKFdURk1vdmUo
Z2RpRm9udCksICpzaXplLCAqc3ludGhldGljQm9sZCwgKnN5bnRoZXRpY09ibGlxdWUsIGNyZWF0
aW9uRGF0YSk7CiB9CiAKLXZvaWQgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpGb250Q3VzdG9tUGxh
dGZvcm1EYXRhPjo6ZW5jb2RlUGxhdGZvcm1EYXRhKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFdl
YkNvcmU6OkZvbnRDdXN0b21QbGF0Zm9ybURhdGEmIGN1c3RvbVBsYXRmb3JtRGF0YSkKLXsKLSAg
ICBlbmNvZGVyIDw8IGN1c3RvbVBsYXRmb3JtRGF0YS5jcmVhdGlvbkRhdGEuZm9udEZhY2VEYXRh
OwotICAgIGVuY29kZXIgPDwgY3VzdG9tUGxhdGZvcm1EYXRhLmNyZWF0aW9uRGF0YS5pdGVtSW5D
b2xsZWN0aW9uOwotfQotCi1zdGQ6Om9wdGlvbmFsPFJlZjxXZWJDb3JlOjpGb250Q3VzdG9tUGxh
dGZvcm1EYXRhPj4gQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpGb250Q3VzdG9tUGxhdGZvcm1EYXRh
Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKERlY29kZXImIGRlY29kZXIpCi17Ci0gICAgc3RkOjpvcHRp
b25hbDxSZWY8U2hhcmVkQnVmZmVyPj4gZm9udEZhY2VEYXRhOwotICAgIGRlY29kZXIgPj4gZm9u
dEZhY2VEYXRhOwotICAgIGlmICghZm9udEZhY2VEYXRhKQotICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwotCi0gICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGl0ZW1JbkNvbGxlY3Rpb247Ci0g
ICAgZGVjb2RlciA+PiBpdGVtSW5Db2xsZWN0aW9uOwotICAgIGlmICghaXRlbUluQ29sbGVjdGlv
bikKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgIGF1dG8gZm9udEN1c3RvbVBs
YXRmb3JtRGF0YSA9IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoZm9udEZhY2VEYXRhLnZh
bHVlKCksIGl0ZW1JbkNvbGxlY3Rpb24udmFsdWUoKSk7Ci0gICAgaWYgKCFmb250Q3VzdG9tUGxh
dGZvcm1EYXRhKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIHJldHVybiBmb250
Q3VzdG9tUGxhdGZvcm1EYXRhLnJlbGVhc2VOb25OdWxsKCk7Ci19Ci0KLXZvaWQgQXJndW1lbnRD
b2RlcjxXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpBdHRyaWJ1dGVzPjo6ZW5jb2RlUGxhdGZv
cm1EYXRhKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6
OkF0dHJpYnV0ZXMmIGRhdGEpCi17Ci0gICAgZW5jb2RlciA8PCBkYXRhLm1fZm9udDsKLX0KLQot
Ym9vbCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6OkF0dHJpYnV0ZXM+
OjpkZWNvZGVQbGF0Zm9ybURhdGEoRGVjb2RlciYgZGVjb2RlciwgV2ViQ29yZTo6Rm9udFBsYXRm
b3JtRGF0YTo6QXR0cmlidXRlcyYgZGF0YSkKLXsKLSAgICBzdGQ6Om9wdGlvbmFsPExPR0ZPTlQ+
IGxvZ0ZvbnQ7Ci0gICAgZGVjb2RlciA+PiBsb2dGb250OwotICAgIGlmICghbG9nRm9udCkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgZGF0YS5tX2ZvbnQgPSAqbG9nRm9udDsKLSAgICBy
ZXR1cm4gdHJ1ZTsKLX0KLQotCiB9IC8vIG5hbWVzcGFjZSBJUEMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5LmNwcAppbmRleCBlZWYwYzI4Yzk1MmYzMTNhYTdkNzcxOGJlMTAz
OGJjOWY4MmQ4OWEwLi44MTdlNmVkOWZmZDUyOTIxMjk3MzZlYTIyOGZiY2JjYWUxY2EyNDUyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwCkBAIC00MCw3ICs0MCw2
IEBACiAjaW5jbHVkZSAiV2ViUGFnZS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9UeXBlZEFycmF5SW5saW5lcy5oPgotI2luY2x1ZGUgPFdlYkNv
cmUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJl
YW0uaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0yNTMsMTUgKzI1Miw5IEBAIHZvaWQgUmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpjYWNoZU5hdGl2ZUltYWdlKGNvbnN0IFNoYXJlYWJs
ZUJpdG1hcEhhbmRsZSYKICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
OjpDYWNoZU5hdGl2ZUltYWdlKGhhbmRsZSwgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSk7
CiB9CiAKLXZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpjYWNoZUZvbnQoY29uc3Qg
V2ViQ29yZTo6Rm9udDo6QXR0cmlidXRlcyYgZm9udEF0dHJpYnV0ZXMsIGNvbnN0IFdlYkNvcmU6
OkZvbnRQbGF0Zm9ybURhdGE6OkF0dHJpYnV0ZXMmIHBsYXRmb3JtRGF0YSwgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IGlkZW50KQordm9pZCBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNhY2hlRm9udChSZWY8Rm9udD4mJiBmb250KQogewot
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OkNhY2hlRm9udChmb250
QXR0cmlidXRlcywgcGxhdGZvcm1EYXRhLCBpZGVudCkpOwotfQotCi12b2lkIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eTo6Y2FjaGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFJlZjxjb25zdCBG
b250Q3VzdG9tUGxhdGZvcm1EYXRhPiYmIGN1c3RvbVBsYXRmb3JtRGF0YSkKLXsKLSAgICBSZWY8
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gZGF0YSA9IGFkb3B0UmVmKGNvbnN0X2Nhc3Q8Rm9udEN1
c3RvbVBsYXRmb3JtRGF0YSY+KGN1c3RvbVBsYXRmb3JtRGF0YS5sZWFrUmVmKCkpKTsKLSAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpDYWNoZUZvbnRDdXN0b21QbGF0
Zm9ybURhdGEoV1RGTW92ZShkYXRhKSkpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRl
cmluZ0JhY2tlbmQ6OkNhY2hlRm9udChXVEZNb3ZlKGZvbnQpKSk7CiB9CiAKIHZvaWQgUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5OjpjYWNoZURlY29tcG9zZWRHbHlwaHMoUmVmPERlY29tcG9z
ZWRHbHlwaHM+JiYgZGVjb21wb3NlZEdseXBocykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eS5oCmluZGV4IDVkMWE5NjU2M2M3ZTk5NTEyY2YxOWJiMjU3MzhlYjhmZjM4MjdlYjcu
LmRjYTAyNjE4OTUwMjY1YTYxZDBmYjRmOGM5ZjRhYmJmODA1YzY3MDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaApAQCAtOTYsOCArOTYsNyBAQCBwdWJsaWM6CiAgICAg
UmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gZ2V0U2hhcmVhYmxlQml0bWFwKFdlYkNvcmU6OlJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllciwgV2ViQ29yZTo6UHJlc2VydmVSZXNvbHV0aW9uKTsKICAg
ICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2U+IGdldEZpbHRlcmVkSW1hZ2UoV2ViQ29yZTo6UmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyLCBXZWJDb3JlOjpGaWx0ZXImKTsKICAgICB2b2lkIGNhY2hl
TmF0aXZlSW1hZ2UoY29uc3QgU2hhcmVhYmxlQml0bWFwSGFuZGxlJiwgV2ViQ29yZTo6UmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKLSAgICB2b2lkIGNhY2hlRm9udChjb25zdCBXZWJDb3Jl
OjpGb250OjpBdHRyaWJ1dGVzJiwgY29uc3QgV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6QXR0
cmlidXRlcyYsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyPik7Ci0gICAgdm9pZCBjYWNoZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoUmVmPGNvbnN0IFdl
YkNvcmU6OkZvbnRDdXN0b21QbGF0Zm9ybURhdGE+JiYpOworICAgIHZvaWQgY2FjaGVGb250KFJl
ZjxXZWJDb3JlOjpGb250PiYmKTsKICAgICB2b2lkIGNhY2hlRGVjb21wb3NlZEdseXBocyhSZWY8
V2ViQ29yZTo6RGVjb21wb3NlZEdseXBocz4mJik7CiAgICAgdm9pZCBjYWNoZUdyYWRpZW50KFJl
ZjxXZWJDb3JlOjpHcmFkaWVudD4mJik7CiAgICAgdm9pZCByZWxlYXNlQWxsUmVtb3RlUmVzb3Vy
Y2VzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jcHAKaW5kZXggZmU1OGM5ZGVl
OTkwNTRhOGUxOWIyN2Y2ZDc3NjNmODM0YzViNDE3OS4uNzJkOTJkZDk4Y2ZiZjUzMzMzMTcxZTY0
YmZkNTgzOTkyNWY5MDc0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcApA
QCAtMzEsNyArMzEsNiBAQAogI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAi
UmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oIgogI2luY2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oPgog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtMTQwLDE0
ICsxMzksMTAgQEAgdm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OnJlY29yZE5hdGl2ZUlt
YWdlVXNlKE5hdGl2ZUltYWdlJiBpbWFnZSkKIAogdm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlUHJv
eHk6OnJlY29yZEZvbnRVc2UoRm9udCYgZm9udCkKIHsKLSAgICBpZiAoZm9udC5wbGF0Zm9ybURh
dGEoKS5jdXN0b21QbGF0Zm9ybURhdGEoKSkKLSAgICAgICAgcmVjb3JkRm9udEN1c3RvbVBsYXRm
b3JtRGF0YVVzZSgqZm9udC5wbGF0Zm9ybURhdGEoKS5jdXN0b21QbGF0Zm9ybURhdGEoKSk7Ci0K
ICAgICBhdXRvIHJlc3VsdCA9IG1fZm9udHMuYWRkKGZvbnQucmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyKCksIG1fcmVuZGVyaW5nVXBkYXRlSUQpOwogCiAgICAgaWYgKHJlc3VsdC5pc05ld0Vu
dHJ5KSB7Ci0gICAgICAgIGF1dG8gcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyID0gZm9udC5w
bGF0Zm9ybURhdGEoKS5jdXN0b21QbGF0Zm9ybURhdGEoKSA/IHN0ZDo6b3B0aW9uYWwoZm9udC5w
bGF0Zm9ybURhdGEoKS5jdXN0b21QbGF0Zm9ybURhdGEoKS0+bV9yZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIpIDogc3RkOjpudWxsb3B0OwotICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eS5jYWNoZUZvbnQoZm9udC5hdHRyaWJ1dGVzKCksIGZvbnQucGxhdGZvcm1EYXRhKCku
YXR0cmlidXRlcygpLCByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOworICAgICAgICBtX3Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jYWNoZUZvbnQoZm9udCk7CiAgICAgICAgICsrbV9u
dW1iZXJPZkZvbnRzVXNlZEluQ3VycmVudFJlbmRlcmluZ1VwZGF0ZTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KQEAgLTE1OSwyMyArMTU0LDYgQEAgdm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlUHJv
eHk6OnJlY29yZEZvbnRVc2UoRm9udCYgZm9udCkKICAgICB9CiB9CiAKLXZvaWQgUmVtb3RlUmVz
b3VyY2VDYWNoZVByb3h5OjpyZWNvcmRGb250Q3VzdG9tUGxhdGZvcm1EYXRhVXNlKGNvbnN0IEZv
bnRDdXN0b21QbGF0Zm9ybURhdGEmIGN1c3RvbVBsYXRmb3JtRGF0YSkKLXsKLSAgICBhdXRvIHJl
c3VsdCA9IG1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YXMuYWRkKGN1c3RvbVBsYXRmb3JtRGF0YS5t
X3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgbV9yZW5kZXJpbmdVcGRhdGVJRCk7Ci0KLSAg
ICBpZiAocmVzdWx0LmlzTmV3RW50cnkpIHsKLSAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHkuY2FjaGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKGN1c3RvbVBsYXRmb3JtRGF0YSk7
Ci0gICAgICAgICsrbV9udW1iZXJPZkZvbnRDdXN0b21QbGF0Zm9ybURhdGFzVXNlZEluQ3VycmVu
dFJlbmRlcmluZ1VwZGF0ZTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGF1dG8mIGN1
cnJlbnRTdGF0ZSA9IHJlc3VsdC5pdGVyYXRvci0+dmFsdWU7Ci0gICAgaWYgKGN1cnJlbnRTdGF0
ZSAhPSBtX3JlbmRlcmluZ1VwZGF0ZUlEKSB7Ci0gICAgICAgIGN1cnJlbnRTdGF0ZSA9IG1fcmVu
ZGVyaW5nVXBkYXRlSUQ7Ci0gICAgICAgICsrbV9udW1iZXJPZkZvbnRDdXN0b21QbGF0Zm9ybURh
dGFzVXNlZEluQ3VycmVudFJlbmRlcmluZ1VwZGF0ZTsKLSAgICB9Ci19Ci0KIHZvaWQgUmVtb3Rl
UmVzb3VyY2VDYWNoZVByb3h5OjpyZWNvcmREZWNvbXBvc2VkR2x5cGhzVXNlKERlY29tcG9zZWRH
bHlwaHMmIGRlY29tcG9zZWRHbHlwaHMpCiB7CiAgICAgaWYgKG1fZGVjb21wb3NlZEdseXBocy5h
ZGQoZGVjb21wb3NlZEdseXBocy5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSwgZGVjb21w
b3NlZEdseXBocykuaXNOZXdFbnRyeSkgewpAQCAtMjExLDcgKzE4OSw2IEBAIHZvaWQgUmVtb3Rl
UmVzb3VyY2VDYWNoZVByb3h5OjpjbGVhck5hdGl2ZUltYWdlTWFwKCkKIHZvaWQgUmVtb3RlUmVz
b3VyY2VDYWNoZVByb3h5OjpwcmVwYXJlRm9yTmV4dFJlbmRlcmluZ1VwZGF0ZSgpCiB7CiAgICAg
bV9udW1iZXJPZkZvbnRzVXNlZEluQ3VycmVudFJlbmRlcmluZ1VwZGF0ZSA9IDA7Ci0gICAgbV9u
dW1iZXJPZkZvbnRDdXN0b21QbGF0Zm9ybURhdGFzVXNlZEluQ3VycmVudFJlbmRlcmluZ1VwZGF0
ZSA9IDA7CiB9CiAKIHZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpjbGVhckZvbnRNYXAo
KQpAQCAtMjUxLDM3ICsyMjgsMjEgQEAgdm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OmZp
bmFsaXplUmVuZGVyaW5nVXBkYXRlRm9yRm9udHMoKQogCiAgICAgdW5zaWduZWQgdG90YWxGb250
Q291bnQgPSBtX2ZvbnRzLnNpemUoKTsKICAgICBSRUxFQVNFX0FTU0VSVChtX251bWJlck9mRm9u
dHNVc2VkSW5DdXJyZW50UmVuZGVyaW5nVXBkYXRlIDw9IHRvdGFsRm9udENvdW50KTsKLSAgICBp
ZiAodG90YWxGb250Q291bnQgIT0gbV9udW1iZXJPZkZvbnRzVXNlZEluQ3VycmVudFJlbmRlcmlu
Z1VwZGF0ZSkgewotICAgICAgICBIYXNoU2V0PFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcj4gdG9SZW1vdmU7Ci0gICAgICAgIGF1dG8gcmVuZGVyaW5nVXBkYXRlSUQgPSBtX3Jl
bmRlcmluZ1VwZGF0ZUlEOwotICAgICAgICBmb3IgKGF1dG8mIGl0ZW0gOiBtX2ZvbnRzKSB7Ci0g
ICAgICAgICAgICBpZiAocmVuZGVyaW5nVXBkYXRlSUQgLSBpdGVtLnZhbHVlID49IG1pbmltdW1S
ZW5kZXJpbmdVcGRhdGVDb3VudFRvS2VlcEZvbnRBbGl2ZSkgewotICAgICAgICAgICAgICAgIHRv
UmVtb3ZlLmFkZChpdGVtLmtleSk7Ci0gICAgICAgICAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHkucmVsZWFzZVJlbmRlcmluZ1Jlc291cmNlKGl0ZW0ua2V5KTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIG1fZm9udHMucmVtb3ZlSWYoWyZdKGNvbnN0IGF1
dG8mIGJ1Y2tldCkgewotICAgICAgICAgICAgcmV0dXJuIHRvUmVtb3ZlLmNvbnRhaW5zKGJ1Y2tl
dC5rZXkpOwotICAgICAgICB9KTsKLSAgICB9CisgICAgaWYgKHRvdGFsRm9udENvdW50ID09IG1f
bnVtYmVyT2ZGb250c1VzZWRJbkN1cnJlbnRSZW5kZXJpbmdVcGRhdGUpCisgICAgICAgIHJldHVy
bjsKIAotICAgIHRvdGFsRm9udENvdW50ID0gbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhcy5zaXpl
KCk7Ci0gICAgUkVMRUFTRV9BU1NFUlQobV9udW1iZXJPZkZvbnRDdXN0b21QbGF0Zm9ybURhdGFz
VXNlZEluQ3VycmVudFJlbmRlcmluZ1VwZGF0ZSA8PSB0b3RhbEZvbnRDb3VudCk7Ci0gICAgaWYg
KHRvdGFsRm9udENvdW50ICE9IG1fbnVtYmVyT2ZGb250Q3VzdG9tUGxhdGZvcm1EYXRhc1VzZWRJ
bkN1cnJlbnRSZW5kZXJpbmdVcGRhdGUpIHsKLSAgICAgICAgSGFzaFNldDxXZWJDb3JlOjpSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IHRvUmVtb3ZlOwotICAgICAgICBhdXRvIHJlbmRlcmlu
Z1VwZGF0ZUlEID0gbV9yZW5kZXJpbmdVcGRhdGVJRDsKLSAgICAgICAgZm9yIChhdXRvJiBpdGVt
IDogbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhcykgewotICAgICAgICAgICAgaWYgKHJlbmRlcmlu
Z1VwZGF0ZUlEIC0gaXRlbS52YWx1ZSA+PSBtaW5pbXVtUmVuZGVyaW5nVXBkYXRlQ291bnRUb0tl
ZXBGb250QWxpdmUpIHsKLSAgICAgICAgICAgICAgICB0b1JlbW92ZS5hZGQoaXRlbS5rZXkpOwot
ICAgICAgICAgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LnJlbGVhc2VSZW5k
ZXJpbmdSZXNvdXJjZShpdGVtLmtleSk7Ci0gICAgICAgICAgICB9CisgICAgSGFzaFNldDxXZWJD
b3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IHRvUmVtb3ZlOworICAgIGF1dG8gcmVu
ZGVyaW5nVXBkYXRlSUQgPSBtX3JlbmRlcmluZ1VwZGF0ZUlEOworICAgIGZvciAoYXV0byYgaXRl
bSA6IG1fZm9udHMpIHsKKyAgICAgICAgaWYgKHJlbmRlcmluZ1VwZGF0ZUlEIC0gaXRlbS52YWx1
ZSA+PSBtaW5pbXVtUmVuZGVyaW5nVXBkYXRlQ291bnRUb0tlZXBGb250QWxpdmUpIHsKKyAgICAg
ICAgICAgIHRvUmVtb3ZlLmFkZChpdGVtLmtleSk7CisgICAgICAgICAgICBtX3JlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eS5yZWxlYXNlUmVuZGVyaW5nUmVzb3VyY2UoaXRlbS5rZXkpOwogICAg
ICAgICB9Ci0KLSAgICAgICAgbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhcy5yZW1vdmVJZihbJl0o
Y29uc3QgYXV0byYgYnVja2V0KSB7Ci0gICAgICAgICAgICByZXR1cm4gdG9SZW1vdmUuY29udGFp
bnMoYnVja2V0LmtleSk7Ci0gICAgICAgIH0pOwogICAgIH0KKworICAgIG1fZm9udHMucmVtb3Zl
SWYoWyZdKGNvbnN0IGF1dG8mIGJ1Y2tldCkgeworICAgICAgICByZXR1cm4gdG9SZW1vdmUuY29u
dGFpbnMoYnVja2V0LmtleSk7CisgICAgfSk7CiB9CiAKIHZvaWQgUmVtb3RlUmVzb3VyY2VDYWNo
ZVByb3h5OjpkaWRQYWludExheWVycygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuaApp
bmRleCA3YTM2MmQ3MDM5YzBmN2VlMGYxOWJkODEzM2FlMmMxMjdkOTFmNGM5Li42ZGExOTM3OWU0
NGU5MDRhZmY4MzgwYjRkZTc0NzE1ZDFlNTU3YzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNo
ZVByb3h5LmgKQEAgLTM4LDcgKzM4LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRm9u
dDsKIGNsYXNzIEdyYWRpZW50OwogY2xhc3MgSW1hZ2VCdWZmZXI7Ci1zdHJ1Y3QgRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YTsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC02MSw3ICs2MCw2IEBA
IHB1YmxpYzoKICAgICB2b2lkIHJlY29yZEltYWdlQnVmZmVyVXNlKFdlYkNvcmU6OkltYWdlQnVm
ZmVyJik7CiAgICAgdm9pZCByZWNvcmREZWNvbXBvc2VkR2x5cGhzVXNlKFdlYkNvcmU6OkRlY29t
cG9zZWRHbHlwaHMmKTsKICAgICB2b2lkIHJlY29yZEdyYWRpZW50VXNlKFdlYkNvcmU6OkdyYWRp
ZW50Jik7Ci0gICAgdm9pZCByZWNvcmRGb250Q3VzdG9tUGxhdGZvcm1EYXRhVXNlKGNvbnN0IFdl
YkNvcmU6OkZvbnRDdXN0b21QbGF0Zm9ybURhdGEmKTsKIAogICAgIHZvaWQgZGlkUGFpbnRMYXll
cnMoKTsKIApAQCAtOTQsMTEgKzkyLDggQEAgcHJpdmF0ZToKICAgICBGb250SGFzaE1hcCBtX2Zv
bnRzOwogICAgIERlY29tcG9zZWRHbHlwaHNIYXNoTWFwIG1fZGVjb21wb3NlZEdseXBoczsKICAg
ICBHcmFkaWVudEhhc2hNYXAgbV9ncmFkaWVudHM7Ci0gICAgRm9udEhhc2hNYXAgbV9mb250Q3Vz
dG9tUGxhdGZvcm1EYXRhczsKIAogICAgIHVuc2lnbmVkIG1fbnVtYmVyT2ZGb250c1VzZWRJbkN1
cnJlbnRSZW5kZXJpbmdVcGRhdGUgeyAwIH07Ci0gICAgdW5zaWduZWQgbV9udW1iZXJPZkZvbnRD
dXN0b21QbGF0Zm9ybURhdGFzVXNlZEluQ3VycmVudFJlbmRlcmluZ1VwZGF0ZSB7IDAgfTsKLQog
CiAgICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5JiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eTsKICAgICB1aW50NjRfdCBtX3JlbmRlcmluZ1VwZGF0ZUlEOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>465693</attachid>
            <date>2023-03-30 14:47:17 -0700</date>
            <delta_ts>2023-03-30 16:11:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-254774-20230330144716.patch</filename>
            <type>text/plain</type>
            <size>87834</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">RnJvbSBlZjcyOWRhZWY4NTAyZGEwODBjMTI4MTVkYzMyYTU1MjAzNzAzY2M2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBTaW1vbiBGcmFzZXIgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+
CkRhdGU6IFRodSwgMzAgTWFyIDIwMjMgMTQ6NDU6NDIgLTA3MDAKU3ViamVjdDogW1BBVENIXSBS
RUdSRVNTSU9OICgyNjIyNjNAbWFpbik6IENhdXNlZCB0aGUgR1BVIHByb2Nlc3MgdG8ga2lsbCB0
aGUKIHdlYiBwcm9jZXNzIHNvbWV0aW1lcyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjU0Nzc0CiA8cmRhcjovLzEwNzQxMjQyMj4KClVucmV2aWV3ZWQgcmV2ZXJ0LgoK
KiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuaDoKKiBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHA6CihXZWJDb3JlOjpDYWNoZWRGb250OjpjcmVh
dGVDdXN0b21Gb250RGF0YSk6CiogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZv
bnQuaDoKKiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcDoKKFdlYkNv
cmU6OkZvbnQ6OkZvbnQpOgooV2ViQ29yZTo6Rm9udDo6cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyIGNvbnN0KToKKFdlYkNvcmU6Om1fc2hvdWxkTm90QmVVc2VkRm9yQXJhYmljKTogRGVsZXRl
ZC4KKFdlYkNvcmU6OkZvbnQ6OkF0dHJpYnV0ZXM6OmVuc3VyZVJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllciBjb25zdCk6IERlbGV0ZWQuCiogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udC5oOgooV2ViQ29yZTo6Rm9udDo6aXNUZXh0T3JpZW50YXRpb25GYWxsYmFjayBjb25z
dCk6CihXZWJDb3JlOjpGb250OjpvcmlnaW4gY29uc3QpOgooV2ViQ29yZTo6Rm9udDo6aXNJbnRl
cnN0aXRpYWwgY29uc3QpOgooV2ViQ29yZTo6Rm9udDo6dmlzaWJpbGl0eSBjb25zdCk6CihXZWJD
b3JlOjpGb250OjphdHRyaWJ1dGVzIGNvbnN0KTogRGVsZXRlZC4KKiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmg6CihXZWJDb3JlOjpGb250
Q3VzdG9tUGxhdGZvcm1EYXRhOjpGb250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmNwcDoKKFdlYkNvcmU6OkZv
bnRQbGF0Zm9ybURhdGE6OkZvbnRQbGF0Zm9ybURhdGEpOgooV2ViQ29yZTo6Rm9udFBsYXRmb3Jt
RGF0YTo6Y3JlYXRpb25EYXRhIGNvbnN0KTogRGVsZXRlZC4KKiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmg6CihXZWJDb3JlOjpGb250UGxhdGZvcm1E
YXRhOjpjcmVhdGlvbkRhdGEgY29uc3QpOgooV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6QXR0
cmlidXRlczo6QXR0cmlidXRlcyk6IERlbGV0ZWQuCihXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRh
OjpjdXN0b21QbGF0Zm9ybURhdGEgY29uc3QpOiBEZWxldGVkLgoqIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcDoKKFdlYkNvcmU6OkZv
bnRDYWNoZTo6c3lzdGVtRmFsbGJhY2tGb3JDaGFyYWN0ZXJzKToKKiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250Q29yZVRleHQuY3BwOgooV2ViQ29yZTo6Y3Jl
YXRlRGVyaXZhdGl2ZUZvbnQpOgooV2ViQ29yZTo6Rm9udDo6Y3JlYXRlRm9udFdpdGhvdXRTeW50
aGVzaXphYmxlRmVhdHVyZXMgY29uc3QpOgooV2ViQ29yZTo6Rm9udDo6cGxhdGZvcm1DcmVhdGVT
Y2FsZWRGb250IGNvbnN0KToKKiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3Jl
dGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwOgooV2ViQ29yZTo6Rm9udFBsYXRmb3Jt
RGF0YTo6Rm9udFBsYXRmb3JtRGF0YSk6CihXZWJDb3JlOjpmaW5kRm9udERlc2NyaXB0b3IpOiBE
ZWxldGVkLgooV2ViQ29yZTo6Y3JlYXRlQ1RGb250KTogRGVsZXRlZC4KKFdlYkNvcmU6OkZvbnRQ
bGF0Zm9ybURhdGE6OmNyZWF0ZSk6IERlbGV0ZWQuCihXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRh
OjphdHRyaWJ1dGVzIGNvbnN0KTogRGVsZXRlZC4KKiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwOgooV2Vi
Q29yZTo6Y3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk6CiogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFNYWMuY3BwOgooV2ViQ29y
ZTo6Rm9udEN1c3RvbVBsYXRmb3JtRGF0YTo6Zm9udFBsYXRmb3JtRGF0YSk6CihXZWJDb3JlOjpj
cmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YVdpbi5jcHA6CihXZWJDb3JlOjpGb250
Q3VzdG9tUGxhdGZvcm1EYXRhOjpmb250UGxhdGZvcm1EYXRhKToKKFdlYkNvcmU6OmNyZWF0ZUZv
bnRDdXN0b21QbGF0Zm9ybURhdGEpOgoqIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9Gb250UGxhdGZvcm1EYXRhQ2Fpcm9XaW4uY3BwOgooV2ViQ29yZTo6Rm9udFBsYXRmb3Jt
RGF0YTo6Rm9udFBsYXRmb3JtRGF0YSk6CiogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFXaW4uY3BwOgooV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0
YTo6Rm9udFBsYXRmb3JtRGF0YSk6CihXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpjcmVhdGUp
OiBEZWxldGVkLgooV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6YXR0cmlidXRlcyBjb25zdCk6
IERlbGV0ZWQuCiogU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3Qu
aDoKKiBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUXVhbGlmaWVkUmVzb3VyY2VI
ZWFwLmg6CihXZWJLaXQ6OlF1YWxpZmllZFJlc291cmNlSGVhcDo6cmVsZWFzZUFsbFJlc291cmNl
cyk6CihXZWJLaXQ6OlF1YWxpZmllZFJlc291cmNlSGVhcDo6Y2hlY2tJbnZhcmlhbnRzIGNvbnN0
KToKKFdlYktpdDo6UXVhbGlmaWVkUmVzb3VyY2VIZWFwOjpnZXRGb250Q3VzdG9tUGxhdGZvcm1E
YXRhIGNvbnN0KTogRGVsZXRlZC4KKFdlYktpdDo6UXVhbGlmaWVkUmVzb3VyY2VIZWFwOjpyZW1v
dmVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKTogRGVsZXRlZC4KKiBTb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHA6CihXZWJLaXQ6OlJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQ6OmNhY2hlRm9udCk6CihXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQ6OmNhY2hlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk6IERlbGV0ZWQuCihXZWJLaXQ6OlJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNhY2hlRm9udEN1c3RvbVBsYXRmb3JtRGF0YVdpdGhRdWFs
aWZpZWRJZGVudGlmaWVyKTogRGVsZXRlZC4KKiBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oOgoqIFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluOgoqIFNvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmNwcDoKKFdlYktp
dDo6UmVtb3RlUmVzb3VyY2VDYWNoZTo6cmVsZWFzZVJlbmRlcmluZ1Jlc291cmNlKToKKFdlYktp
dDo6UmVtb3RlUmVzb3VyY2VDYWNoZTo6Y2FjaGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKTogRGVs
ZXRlZC4KKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZTo6Y2FjaGVkRm9udEN1c3RvbVBsYXRm
b3JtRGF0YSBjb25zdCk6IERlbGV0ZWQuCiogU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuaDoKKiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9X
ZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbToKKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3Jl
OjpGb250Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKToKKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3Jl
OjpGb250Q3VzdG9tUGxhdGZvcm1EYXRhPjo6ZW5jb2RlUGxhdGZvcm1EYXRhKTogRGVsZXRlZC4K
KElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpGb250Q3VzdG9tUGxhdGZvcm1EYXRhPjo6ZGVj
b2RlUGxhdGZvcm1EYXRhKTogRGVsZXRlZC4KKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpG
b250UGxhdGZvcm1EYXRhOjpBdHRyaWJ1dGVzPjo6ZW5jb2RlUGxhdGZvcm1EYXRhKTogRGVsZXRl
ZC4KKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpBdHRyaWJ1
dGVzPjo6ZGVjb2RlUGxhdGZvcm1EYXRhKTogRGVsZXRlZC4KKiBTb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgooSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6
OkZvbnQ+OjplbmNvZGUpOgooSVBDOjpBcmd1bWVudENvZGVyPEZvbnQ+OjpkZWNvZGUpOgooSVBD
OjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OkZvbnQ6OkF0dHJpYnV0ZXM+OjplbmNvZGUpOiBEZWxl
dGVkLgooSVBDOjpBcmd1bWVudENvZGVyPEZvbnQ6OkF0dHJpYnV0ZXM+OjpkZWNvZGUpOiBEZWxl
dGVkLgooSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OkZvbnRDdXN0b21QbGF0Zm9ybURhdGE+
OjplbmNvZGUpOiBEZWxldGVkLgooSVBDOjpBcmd1bWVudENvZGVyPEZvbnRDdXN0b21QbGF0Zm9y
bURhdGE+OjpkZWNvZGUpOiBEZWxldGVkLgooSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OkZv
bnRQbGF0Zm9ybURhdGE6OkF0dHJpYnV0ZXM+OjplbmNvZGUpOiBEZWxldGVkLgooSVBDOjpBcmd1
bWVudENvZGVyPEZvbnRQbGF0Zm9ybURhdGE6OkF0dHJpYnV0ZXM+OjpkZWNvZGUpOiBEZWxldGVk
LgoqIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgoqIFNvdXJj
ZS9XZWJLaXQvU2hhcmVkL2NmL0FyZ3VtZW50Q29kZXJzQ0YuY3BwOgooSVBDOjpBcmd1bWVudENv
ZGVyPENGU3RyaW5nUmVmPjo6ZW5jb2RlKToKKElQQzo6QXJndW1lbnRDb2RlcjxSZXRhaW5QdHI8
Q0ZTdHJpbmdSZWY+Pjo6ZGVjb2RlKToKKiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9wbGF5c3RhdGlv
bi9XZWJDb3JlQXJndW1lbnRDb2RlcnNQbGF5U3RhdGlvbi5jcHA6CihJUEM6OkFyZ3VtZW50Q29k
ZXI8V2ViQ29yZTo6Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT46OmVuY29kZVBsYXRmb3JtRGF0YSk6
IERlbGV0ZWQuCihJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Rm9udEN1c3RvbVBsYXRmb3Jt
RGF0YT46OmRlY29kZVBsYXRmb3JtRGF0YSk6IERlbGV0ZWQuCihJUEM6OkFyZ3VtZW50Q29kZXI8
V2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6QXR0cmlidXRlcz46OmVuY29kZVBsYXRmb3JtRGF0
YSk6IERlbGV0ZWQuCihJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0
YTo6QXR0cmlidXRlcz46OmRlY29kZVBsYXRmb3JtRGF0YSk6IERlbGV0ZWQuCiogU291cmNlL1dl
YktpdC9TaGFyZWQvc291cC9XZWJDb3JlQXJndW1lbnRDb2RlcnNTb3VwLmNwcDoKKElQQzo6QXJn
dW1lbnRDb2RlcjxXZWJDb3JlOjpGb250Q3VzdG9tUGxhdGZvcm1EYXRhPjo6ZW5jb2RlUGxhdGZv
cm1EYXRhKTogRGVsZXRlZC4KKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpGb250Q3VzdG9t
UGxhdGZvcm1EYXRhPjo6ZGVjb2RlUGxhdGZvcm1EYXRhKTogRGVsZXRlZC4KKElQQzo6QXJndW1l
bnRDb2RlcjxXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpBdHRyaWJ1dGVzPjo6ZW5jb2RlUGxh
dGZvcm1EYXRhKTogRGVsZXRlZC4KKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpGb250UGxh
dGZvcm1EYXRhOjpBdHRyaWJ1dGVzPjo6ZGVjb2RlUGxhdGZvcm1EYXRhKTogRGVsZXRlZC4KKiBT
b3VyY2UvV2ViS2l0L1NoYXJlZC93aW4vV2ViQ29yZUFyZ3VtZW50Q29kZXJzV2luLmNwcDoKKElQ
Qzo6QXJndW1lbnRDb2RlcjxGb250Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKToKKElQQzo6QXJndW1l
bnRDb2RlcjxXZWJDb3JlOjpGb250Q3VzdG9tUGxhdGZvcm1EYXRhPjo6ZW5jb2RlUGxhdGZvcm1E
YXRhKTogRGVsZXRlZC4KKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpGb250Q3VzdG9tUGxh
dGZvcm1EYXRhPjo6ZGVjb2RlUGxhdGZvcm1EYXRhKTogRGVsZXRlZC4KKElQQzo6QXJndW1lbnRD
b2RlcjxXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpBdHRyaWJ1dGVzPjo6ZW5jb2RlUGxhdGZv
cm1EYXRhKTogRGVsZXRlZC4KKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpGb250UGxhdGZv
cm1EYXRhOjpBdHRyaWJ1dGVzPjo6ZGVjb2RlUGxhdGZvcm1EYXRhKTogRGVsZXRlZC4KKiBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eS5jcHA6CihXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Y2FjaGVGb250
KToKKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpjYWNoZUZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEpOiBEZWxldGVkLgoqIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lmg6CiogU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY3BwOgooV2ViS2l0
OjpSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OnJlY29yZEZvbnRVc2UpOgooV2ViS2l0OjpSZW1v
dGVSZXNvdXJjZUNhY2hlUHJveHk6OnByZXBhcmVGb3JOZXh0UmVuZGVyaW5nVXBkYXRlKToKKFdl
YktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpmaW5hbGl6ZVJlbmRlcmluZ1VwZGF0ZUZv
ckZvbnRzKToKKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpyZWNvcmRGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhVXNlKTogRGVsZXRlZC4KKiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5oOgotLS0KIFNvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5oICAgICAgICB8ICAgNCArLQogU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwICAgIHwgICAyICstCiBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oICAgICAgfCAgIDQgKy0KIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwICAgICB8ICAxNyArKy0KIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaCAgICAgICB8ICAyOCArKy0tLQogLi4uL2dyYXBoaWNz
L0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaCAgICAgICAgIHwgICA4ICstCiAuLi4vcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5jcHAgICAgfCAgMTkgKy0tLQogLi4uL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaCAgICAgIHwgIDU1ICsrLS0tLS0tLQogLi4uL2dy
YXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcCAgICAgIHwgICA2ICstCiAuLi4vZ3Jh
cGhpY3MvY29yZXRleHQvRm9udENvcmVUZXh0LmNwcCAgICAgICAgfCAgIDggKy0KIC4uLi9jb3Jl
dGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwICAgICB8ICA3NSArLS0tLS0tLS0tLS0t
CiAuLi4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcCAgICAgICAgfCAgIDQgKy0K
IC4uLi9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YU1hYy5jcHAgICAgICAgICB8ICAgNiArLQog
Li4uL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhV2luLmNwcCAgICAgICAgIHwgICA2ICstCiAu
Li4vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFDYWlyb1dpbi5jcHAgfCAgIDQgKy0KIC4u
Li9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHAgICAgICB8ICAyMyArLS0tCiAu
Li4vV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oICAgfCAgIDIgKy0KIC4u
Li9ncmFwaGljcy9RdWFsaWZpZWRSZXNvdXJjZUhlYXAuaCAgICAgICAgICB8ICAzMCArLS0tLQog
Li4uL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwICAgICAgIHwgIDMwICstLS0t
CiAuLi4vZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oICAgICAgICAgfCAgIDQgKy0K
IC4uLi9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluICAgICAgICB8ICAgMyArLQog
Li4uL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuY3BwICAgICAgICAgIHwgIDE0ICstLQog
Li4uL0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5oIHwgICAyIC0KIC4u
Li9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbSAgICAgICB8ICA4NSArLS0tLS0t
LS0tLS0tLQogLi4uL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCAgIHwg
MTA2ICsrLS0tLS0tLS0tLS0tLS0tLQogU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmggIHwgIDIwIC0tLS0KIFNvdXJjZS9XZWJLaXQvU2hhcmVkL2NmL0FyZ3VtZW50
Q29kZXJzQ0YuY3BwICB8ICAxNCAtLS0KIC4uLi9XZWJDb3JlQXJndW1lbnRDb2RlcnNQbGF5U3Rh
dGlvbi5jcHAgICAgICB8ICAyMyAtLS0tCiAuLi4vU2hhcmVkL3NvdXAvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzU291cC5jcHAgfCAgMjMgLS0tLQogLi4uL1NoYXJlZC93aW4vV2ViQ29yZUFyZ3VtZW50
Q29kZXJzV2luLmNwcCAgIHwgIDQ3ICstLS0tLS0tCiAuLi4vZ3JhcGhpY3MvUmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5LmNwcCAgfCAgMTEgKy0KIC4uLi9ncmFwaGljcy9SZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHkuaCAgICB8ICAgMyArLQogLi4uL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNv
dXJjZUNhY2hlUHJveHkuY3BwIHwgIDY1ICsrKy0tLS0tLS0tCiAuLi4vR1BVL2dyYXBoaWNzL1Jl
bW90ZVJlc291cmNlQ2FjaGVQcm94eS5oICAgfCAgIDUgLQogMzQgZmlsZXMgY2hhbmdlZCwgOTYg
aW5zZXJ0aW9ucygrKSwgNjYwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRG
YWNlU291cmNlLmgKaW5kZXggMmJjN2EyYzc0NmE3Li4yYmZlNDc5OTc1MzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5oCkBAIC05MCwxMCArOTAsMTAgQEAgcHJpdmF0ZToK
IAogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZ2VuZXJhdGVkT1RGQnVmZmVyOwogICAgIFJl
ZlB0cjxKU0M6OkFycmF5QnVmZmVyVmlldz4gbV9pbW1lZGlhdGVTb3VyY2U7Ci0gICAgUmVmUHRy
PEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IG1faW1tZWRpYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0
YTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gbV9pbW1lZGlh
dGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhOwogCiAgICAgV2Vha1B0cjxTVkdGb250RmFjZUVsZW1l
bnQsIFdlYWtQdHJJbXBsV2l0aEV2ZW50VGFyZ2V0RGF0YT4gbV9zdmdGb250RmFjZUVsZW1lbnQ7
Ci0gICAgUmVmUHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IG1faW5Eb2N1bWVudEN1c3RvbVBs
YXRmb3JtRGF0YTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4g
bV9pbkRvY3VtZW50Q3VzdG9tUGxhdGZvcm1EYXRhOwogCiAgICAgU3RhdHVzIG1fc3RhdHVzIHsg
U3RhdHVzOjpQZW5kaW5nIH07CiAgICAgYm9vbCBtX2hhc1NWR0ZvbnRGYWNlRWxlbWVudCB7IGZh
bHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9u
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKaW5kZXgg
MjY0NjdlZWE2ZWRkLi5hMDVmYzQzZGE1ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRGb250LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkRm9udC5jcHAKQEAgLTE0MSw3ICsxNDEsNyBAQCBib29sIENhY2hlZEZvbnQ6OmVu
c3VyZUN1c3RvbUZvbnREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSkKICAgICByZXR1cm4gbV9mb250
Q3VzdG9tUGxhdGZvcm1EYXRhLmdldCgpOwogfQogCi1SZWZQdHI8Rm9udEN1c3RvbVBsYXRmb3Jt
RGF0YT4gQ2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVyJiBieXRl
cywgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uLCBib29sJiB3cmFwcGluZykKK3N0ZDo6
dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBDYWNoZWRGb250OjpjcmVhdGVDdXN0
b21Gb250RGF0YShTaGFyZWRCdWZmZXImIGJ5dGVzLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxl
Y3Rpb24sIGJvb2wmIHdyYXBwaW5nKQogewogICAgIFJlZlB0ciBidWZmZXIgPSB7ICZieXRlcyB9
OwogICAgIHdyYXBwaW5nID0gIWNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoYnVmZmVyKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmggYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oCmluZGV4IGVmODNiNjU4Yzdi
OC4uODc4ZmI3MTJlZjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkRm9udC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250
LmgKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgIGJvb2wgc3RpbGxOZWVkc0xvYWQoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiAhbV9sb2FkSW5pdGlhdGVkOyB9CiAKICAgICB2aXJ0dWFs
IGJvb2wgZW5zdXJlQ3VzdG9tRm9udERhdGEoKTsKLSAgICBzdGF0aWMgUmVmUHRyPEZvbnRDdXN0
b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUN1c3RvbUZvbnREYXRhKFNoYXJlZEJ1ZmZlciYsIGNvbnN0
IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbiwgYm9vbCYgd3JhcHBpbmcpOworICAgIHN0YXRpYyBz
dGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlQ3VzdG9tRm9udERh
dGEoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uLCBib29sJiB3
cmFwcGluZyk7CiAgICAgc3RhdGljIEZvbnRQbGF0Zm9ybURhdGEgcGxhdGZvcm1EYXRhRnJvbUN1
c3RvbURhdGEoRm9udEN1c3RvbVBsYXRmb3JtRGF0YSYsIGNvbnN0IEZvbnREZXNjcmlwdGlvbiYs
IGJvb2wgYm9sZCwgYm9vbCBpdGFsaWMsIGNvbnN0IEZvbnRDcmVhdGlvbkNvbnRleHQmKTsKIAog
ICAgIHZpcnR1YWwgUmVmUHRyPEZvbnQ+IGNyZWF0ZUZvbnQoY29uc3QgRm9udERlc2NyaXB0aW9u
JiwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY0l0YWxpYywgY29uc3QgRm9udENy
ZWF0aW9uQ29udGV4dCYpOwpAQCAtODQsNyArODQsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9s
b2FkSW5pdGlhdGVkOwogICAgIGJvb2wgbV9oYXNDcmVhdGVkRm9udERhdGFXcmFwcGluZ1Jlc291
cmNlOwogCi0gICAgUmVmUHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IG1fZm9udEN1c3RvbVBs
YXRmb3JtRGF0YTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4g
bV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhOwogCiAgICAgZnJpZW5kIGNsYXNzIE1lbW9yeUNhY2hl
OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKaW5kZXggYjQ4
MTEyMmM5YzY4Li4zNjg1NWZmOWQwZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnQuY3BwCkBAIC03Niw4ICs3NiwxMiBAQCBSZWY8Rm9udD4gRm9udDo6Y3JlYXRlKFJl
ZjxTaGFyZWRCdWZmZXI+JiYgZm9udEZhY2VEYXRhLCBGb250OjpPcmlnaW4gb3JpZ2luLCBmbAog
CiBGb250OjpGb250KGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSwgT3JpZ2lu
IG9yaWdpbiwgSW50ZXJzdGl0aWFsIGludGVyc3RpdGlhbCwgVmlzaWJpbGl0eSB2aXNpYmlsaXR5
LCBPcmllbnRhdGlvbkZhbGxiYWNrIG9yaWVudGF0aW9uRmFsbGJhY2ssIHN0ZDo6b3B0aW9uYWw8
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIp
CiAgICAgOiBtX3BsYXRmb3JtRGF0YShwbGF0Zm9ybURhdGEpCi0gICAgLCBtX2F0dHJpYnV0ZXMo
eyByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIG9yaWdpbiwgaW50ZXJzdGl0aWFsLCB2aXNp
YmlsaXR5LCBvcmllbnRhdGlvbkZhbGxiYWNrIH0pCisgICAgLCBtX3JlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcihyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCisgICAgLCBtX29yaWdpbihv
cmlnaW4pCisgICAgLCBtX3Zpc2liaWxpdHkodmlzaWJpbGl0eSkKICAgICAsIG1fdHJlYXRBc0Zp
eGVkUGl0Y2goZmFsc2UpCisgICAgLCBtX2lzSW50ZXJzdGl0aWFsKGludGVyc3RpdGlhbCA9PSBJ
bnRlcnN0aXRpYWw6OlllcykKKyAgICAsIG1faXNUZXh0T3JpZW50YXRpb25GYWxsYmFjayhvcmll
bnRhdGlvbkZhbGxiYWNrID09IE9yaWVudGF0aW9uRmFsbGJhY2s6OlllcykKICAgICAsIG1faXNC
cm9rZW5JZGVvZ3JhcGhGYWxsYmFjayhmYWxzZSkKICAgICAsIG1faGFzVmVydGljYWxHbHlwaHMo
ZmFsc2UpCiAgICAgLCBtX2lzVXNlZEluU3lzdGVtRmFsbGJhY2tGb250Q2FjaGUoZmFsc2UpCkBA
IC0xNzUsMTQgKzE3OSw5IEBAIEZvbnQ6On5Gb250KCkKIAogUmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyIEZvbnQ6OnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIG1fYXR0cmlidXRlcy5lbnN1cmVSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKTsK
LX0KLQotUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIEZvbnQ6OkF0dHJpYnV0ZXM6OmVuc3Vy
ZVJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpIGNvbnN0Ci17Ci0gICAgaWYgKCFyZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIpCi0gICAgICAgIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
ciA9IFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKLSAgICByZXR1cm4g
KnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcjsKKyAgICBpZiAoIW1fcmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyKQorICAgICAgICBtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciA9IFJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKKyAgICByZXR1cm4gKm1fcmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyOwogfQogCiBzdGF0aWMgYm9vbCBmaWxsR2x5cGhQYWdl
KEdseXBoUGFnZSYgcGFnZVRvRmlsbCwgVUNoYXIqIGJ1ZmZlciwgdW5zaWduZWQgYnVmZmVyTGVu
Z3RoLCBjb25zdCBGb250JiBmb250KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRm9udC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dC5oCmluZGV4IGI2OWY0MzNhZGJkNi4uZDJhMjgwMDVkNzhmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udC5oCkBAIC0xMzQsNyArMTM0LDcgQEAgcHVibGljOgogICAgIGNv
bnN0IEZvbnQmIGludmlzaWJsZUZvbnQoKSBjb25zdDsKIAogICAgIGJvb2wgaGFzVmVydGljYWxH
bHlwaHMoKSBjb25zdCB7IHJldHVybiBtX2hhc1ZlcnRpY2FsR2x5cGhzOyB9Ci0gICAgYm9vbCBp
c1RleHRPcmllbnRhdGlvbkZhbGxiYWNrKCkgY29uc3QgeyByZXR1cm4gbV9hdHRyaWJ1dGVzLmlz
VGV4dE9yaWVudGF0aW9uRmFsbGJhY2sgPT0gT3JpZW50YXRpb25GYWxsYmFjazo6WWVzOyB9Cisg
ICAgYm9vbCBpc1RleHRPcmllbnRhdGlvbkZhbGxiYWNrKCkgY29uc3QgeyByZXR1cm4gbV9pc1Rl
eHRPcmllbnRhdGlvbkZhbGxiYWNrOyB9CiAKICAgICBjb25zdCBGb250TWV0cmljcyYgZm9udE1l
dHJpY3MoKSBjb25zdCB7IHJldHVybiBtX2ZvbnRNZXRyaWNzOyB9CiAgICAgZmxvYXQgc2l6ZVBl
clVuaXQoKSBjb25zdCB7IHJldHVybiBwbGF0Zm9ybURhdGEoKS5zaXplKCkgLyAoZm9udE1ldHJp
Y3MoKS51bml0c1BlckVtKCkgPyBmb250TWV0cmljcygpLnVuaXRzUGVyRW0oKSA6IDEpOyB9CkBA
IC0xNzksOSArMTc5LDkgQEAgcHVibGljOgogICAgIHZvaWQgZGV0ZXJtaW5lUGl0Y2goKTsKICAg
ICBQaXRjaCBwaXRjaCgpIGNvbnN0IHsgcmV0dXJuIG1fdHJlYXRBc0ZpeGVkUGl0Y2ggPyBGaXhl
ZFBpdGNoIDogVmFyaWFibGVQaXRjaDsgfQogCi0gICAgT3JpZ2luIG9yaWdpbigpIGNvbnN0IHsg
cmV0dXJuIG1fYXR0cmlidXRlcy5vcmlnaW47IH0KLSAgICBib29sIGlzSW50ZXJzdGl0aWFsKCkg
Y29uc3QgeyByZXR1cm4gbV9hdHRyaWJ1dGVzLmlzSW50ZXJzdGl0aWFsID09IEludGVyc3RpdGlh
bDo6WWVzOyB9Ci0gICAgVmlzaWJpbGl0eSB2aXNpYmlsaXR5KCkgY29uc3QgeyByZXR1cm4gbV9h
dHRyaWJ1dGVzLnZpc2liaWxpdHk7IH0KKyAgICBPcmlnaW4gb3JpZ2luKCkgY29uc3QgeyByZXR1
cm4gbV9vcmlnaW47IH0KKyAgICBib29sIGlzSW50ZXJzdGl0aWFsKCkgY29uc3QgeyByZXR1cm4g
bV9pc0ludGVyc3RpdGlhbDsgfQorICAgIFZpc2liaWxpdHkgdmlzaWJpbGl0eSgpIGNvbnN0IHsg
cmV0dXJuIG1fdmlzaWJpbGl0eTsgfQogICAgIGJvb2wgYWxsb3dzQW50aWFsaWFzaW5nKCkgY29u
c3QgeyByZXR1cm4gbV9hbGxvd3NBbnRpYWxpYXNpbmc7IH0KIAogI2lmICFMT0dfRElTQUJMRUQK
QEAgLTIxNSwxOCArMjE1LDYgQEAgcHVibGljOgogICAgIHZvaWQgc2V0SXNVc2VkSW5TeXN0ZW1G
YWxsYmFja0ZvbnRDYWNoZSgpIHsgbV9pc1VzZWRJblN5c3RlbUZhbGxiYWNrRm9udENhY2hlID0g
dHJ1ZTsgfQogICAgIGJvb2wgaXNVc2VkSW5TeXN0ZW1GYWxsYmFja0ZvbnRDYWNoZSgpIGNvbnN0
IHsgcmV0dXJuIG1faXNVc2VkSW5TeXN0ZW1GYWxsYmFja0ZvbnRDYWNoZTsgfQogCi0gICAgY2xh
c3MgQXR0cmlidXRlcyB7Ci0gICAgcHVibGljOgotICAgICAgICBXRUJDT1JFX0VYUE9SVCBSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgZW5zdXJlUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
KCkgY29uc3Q7Ci0KLSAgICAgICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcj4gcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyOwotICAgICAgICBGb250
OjpPcmlnaW4gb3JpZ2luIDogMTsKLSAgICAgICAgRm9udDo6SW50ZXJzdGl0aWFsIGlzSW50ZXJz
dGl0aWFsIDogMTsKLSAgICAgICAgRm9udDo6VmlzaWJpbGl0eSB2aXNpYmlsaXR5IDogMTsKLSAg
ICAgICAgRm9udDo6T3JpZW50YXRpb25GYWxsYmFjayBpc1RleHRPcmllbnRhdGlvbkZhbGxiYWNr
IDogMTsKLSAgICB9OwotICAgIGNvbnN0IEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMoKSBjb25zdCB7
IHJldHVybiBtX2F0dHJpYnV0ZXM7IH0KLQogcHJpdmF0ZToKICAgICBXRUJDT1JFX0VYUE9SVCBG
b250KGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmLCBPcmlnaW4sIEludGVyc3RpdGlhbCwgVmlzaWJp
bGl0eSwgT3JpZW50YXRpb25GYWxsYmFjaywgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXI+KTsKIApAQCAtMzAxLDcgKzI4OSw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRy
PE9wZW5UeXBlVmVydGljYWxEYXRhPiBtX3ZlcnRpY2FsRGF0YTsKICNlbmRpZgogCi0gICAgQXR0
cmlidXRlcyBtX2F0dHJpYnV0ZXM7CisgICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPFJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcj4gbV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI7CiAKICAg
ICBzdHJ1Y3QgRGVyaXZlZEZvbnRzIHsKICAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxM
T0NBVEVEOwpAQCAtMzQzLDcgKzMzMSwxMyBAQCBwcml2YXRlOgogICAgIGZsb2F0IG1fc3BhY2VX
aWR0aCB7IDAgfTsKICAgICBmbG9hdCBtX3N5bnRoZXRpY0JvbGRPZmZzZXQgeyAwIH07CiAKKyAg
ICBPcmlnaW4gbV9vcmlnaW47IC8vIFdoZXRoZXIgb3Igbm90IHdlIGFyZSBjdXN0b20gZm9udCBs
b2FkZWQgdmlhIEBmb250LWZhY2UKKyAgICBWaXNpYmlsaXR5IG1fdmlzaWJpbGl0eTsgLy8gQGZv
bnQtZmFjZSdzIGludGVybmFsIHRpbWVyIGNhbiBjYXVzZSB1cyB0byBzaG93IGZvbnRzIGV2ZW4g
d2hlbiBhIGZvbnQgaXMgYmVpbmcgZG93bmxvYWRlZC4KKwogICAgIHVuc2lnbmVkIG1fdHJlYXRB
c0ZpeGVkUGl0Y2ggOiAxOworICAgIHVuc2lnbmVkIG1faXNJbnRlcnN0aXRpYWwgOiAxOyAvLyBX
aGV0aGVyIG9yIG5vdCB0aGlzIGN1c3RvbSBmb250IGlzIHRoZSBsYXN0IHJlc29ydCBwbGFjZWhv
bGRlciBmb3IgYSBsb2FkaW5nIGZvbnQKKworICAgIHVuc2lnbmVkIG1faXNUZXh0T3JpZW50YXRp
b25GYWxsYmFjayA6IDE7CiAgICAgdW5zaWduZWQgbV9pc0Jyb2tlbklkZW9ncmFwaEZhbGxiYWNr
IDogMTsKICAgICB1bnNpZ25lZCBtX2hhc1ZlcnRpY2FsR2x5cGhzIDogMTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEN1c3RvbVBsYXRmb3JtRGF0
YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YS5oCmluZGV4IGE2YmZiYmI5NGFmNi4uMjI0ZTBiOWU2YTYxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEN1c3RvbVBsYXRmb3JtRGF0
YS5oCkBAIC0yNiw3ICsyNiw2IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkZvbnRQbGF0
Zm9ybURhdGEuaCIKLSNpbmNsdWRlICJSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIuaCIKICNp
bmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCkBA
IC01NCw3ICs1Myw3IEBAIGNsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4gY2xhc3MgRm9udFRhZ2dlZFNldHRpbmdzOwogdHlwZWRlZiBGb250VGFnZ2Vk
U2V0dGluZ3M8aW50PiBGb250RmVhdHVyZVNldHRpbmdzOwogCi1zdHJ1Y3QgRm9udEN1c3RvbVBs
YXRmb3JtRGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IHsK
K3N0cnVjdCBGb250Q3VzdG9tUGxhdGZvcm1EYXRhIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShGb250Q3VzdG9tUGxhdGZvcm1EYXRhKTsK
IHB1YmxpYzoKQEAgLTY0LDcgKzYzLDYgQEAgcHVibGljOgogICAgIEZvbnRDdXN0b21QbGF0Zm9y
bURhdGEoQ1RGb250RGVzY3JpcHRvclJlZiBmb250RGVzY3JpcHRvciwgRm9udFBsYXRmb3JtRGF0
YTo6Q3JlYXRpb25EYXRhJiYgY3JlYXRpb25EYXRhKQogICAgICAgICA6IGZvbnREZXNjcmlwdG9y
KGZvbnREZXNjcmlwdG9yKQogICAgICAgICAsIGNyZWF0aW9uRGF0YShXVEZNb3ZlKGNyZWF0aW9u
RGF0YSkpCi0gICAgICAgICwgbV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoUmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyOjpnZW5lcmF0ZVRocmVhZFNhZmUoKSkKICAgICB7CiAgICAgfQog
I2Vsc2UKQEAgLTg1LDEwICs4Myw4IEBAIHB1YmxpYzoKICNlbHNlCiAgICAgUmVmUHRyPGNhaXJv
X2ZvbnRfZmFjZV90PiBtX2ZvbnRGYWNlOwogI2VuZGlmCi0KLSAgICBSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIgbV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI7CiB9OwogCi1XRUJDT1JF
X0VYUE9SVCBSZWZQdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBs
YXRmb3JtRGF0YShTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKK1dFQkNPUkVfRVhQT1JU
IHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9t
UGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYpOwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Gb250UGxhdGZvcm1EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnRQbGF0Zm9ybURhdGEuY3BwCmluZGV4IDViMGM2MzIwMjUwOS4uNGM5ZDA2NjZkYWQ5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1E
YXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZv
cm1EYXRhLmNwcApAQCAtMjEsOSArMjEsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIkZvbnRQbGF0Zm9ybURhdGEuaCIKIAotCiAjaW5jbHVkZSAiRm9udENhY2hlLmgiCi0jaW5j
bHVkZSAiRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oIgogI2luY2x1ZGUgIkZvbnREZXNjcmlwdGlv
bi5oIgogI2luY2x1ZGUgIlJlbmRlclN0eWxlQ29uc3RhbnRzLmgiCiAjaW5jbHVkZSAiU3R5bGVG
b250U2l6ZUZ1bmN0aW9ucy5oIgpAQCAtNDEsMjEgKzM5LDE3IEBAIEZvbnRQbGF0Zm9ybURhdGE6
OkZvbnRQbGF0Zm9ybURhdGEoKQogewogfQogCi1Gb250UGxhdGZvcm1EYXRhOjpGb250UGxhdGZv
cm1EYXRhKGZsb2F0IHNpemUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNPYmxp
cXVlLCBGb250T3JpZW50YXRpb24gb3JpZW50YXRpb24sIEZvbnRXaWR0aFZhcmlhbnQgd2lkdGhW
YXJpYW50LCBUZXh0UmVuZGVyaW5nTW9kZSB0ZXh0UmVuZGVyaW5nTW9kZSwgY29uc3QgRm9udEN1
c3RvbVBsYXRmb3JtRGF0YSogY3VzdG9tUGxhdGZvcm1EYXRhKQorRm9udFBsYXRmb3JtRGF0YTo6
Rm9udFBsYXRmb3JtRGF0YShmbG9hdCBzaXplLCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wgc3lu
dGhldGljT2JsaXF1ZSwgRm9udE9yaWVudGF0aW9uIG9yaWVudGF0aW9uLCBGb250V2lkdGhWYXJp
YW50IHdpZHRoVmFyaWFudCwgVGV4dFJlbmRlcmluZ01vZGUgdGV4dFJlbmRlcmluZ01vZGUsIGNv
bnN0IENyZWF0aW9uRGF0YSogY3JlYXRpb25EYXRhKQogICAgIDogbV9zaXplKHNpemUpCiAgICAg
LCBtX29yaWVudGF0aW9uKG9yaWVudGF0aW9uKQogICAgICwgbV93aWR0aFZhcmlhbnQod2lkdGhW
YXJpYW50KQogICAgICwgbV90ZXh0UmVuZGVyaW5nTW9kZSh0ZXh0UmVuZGVyaW5nTW9kZSkKLSAg
ICAsIG1fY3VzdG9tUGxhdGZvcm1EYXRhKGN1c3RvbVBsYXRmb3JtRGF0YSkKKyAgICAsIG1fY3Jl
YXRpb25EYXRhKG1ha2VPcHRpb25hbEZyb21Qb2ludGVyKGNyZWF0aW9uRGF0YSkpCiAgICAgLCBt
X3N5bnRoZXRpY0JvbGQoc3ludGhldGljQm9sZCkKICAgICAsIG1fc3ludGhldGljT2JsaXF1ZShz
eW50aGV0aWNPYmxpcXVlKQogewogfQogCi1Gb250UGxhdGZvcm1EYXRhOjp+Rm9udFBsYXRmb3Jt
RGF0YSgpID0gZGVmYXVsdDsKLUZvbnRQbGF0Zm9ybURhdGE6OkZvbnRQbGF0Zm9ybURhdGEoY29u
c3QgRm9udFBsYXRmb3JtRGF0YSYpID0gZGVmYXVsdDsKLUZvbnRQbGF0Zm9ybURhdGEmIEZvbnRQ
bGF0Zm9ybURhdGE6Om9wZXJhdG9yPShjb25zdCBGb250UGxhdGZvcm1EYXRhJikgPSBkZWZhdWx0
OwotCiAjaWYgIVVTRShGUkVFVFlQRSkKIEZvbnRQbGF0Zm9ybURhdGEgRm9udFBsYXRmb3JtRGF0
YTo6Y2xvbmVXaXRoT3JpZW50YXRpb24oY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgc291cmNlLCBG
b250T3JpZW50YXRpb24gb3JpZW50YXRpb24pCiB7CkBAIC0xMDEsMTUgKzk1LDYgQEAgdm9pZCBG
b250UGxhdGZvcm1EYXRhOjp1cGRhdGVTaXplV2l0aEZvbnRTaXplQWRqdXN0KGNvbnN0IEZvbnRT
aXplQWRqdXN0JiBmb250U2kKICAgICB1cGRhdGVTaXplKHN0ZDo6bWluKGFkanVzdGVkRm9udFNp
emUsIG1heGltdW1BbGxvd2VkRm9udFNpemUpKTsKIH0KIAotY29uc3QgRm9udFBsYXRmb3JtRGF0
YTo6Q3JlYXRpb25EYXRhKiBGb250UGxhdGZvcm1EYXRhOjpjcmVhdGlvbkRhdGEoKSBjb25zdAot
ewotI2lmIFBMQVRGT1JNKFdJTikgfHwgVVNFKENPUkVfVEVYVCkKLSAgICByZXR1cm4gbV9jdXN0
b21QbGF0Zm9ybURhdGEgPyAmbV9jdXN0b21QbGF0Zm9ybURhdGEtPmNyZWF0aW9uRGF0YSA6IG51
bGxwdHI7Ci0jZWxzZQotICAgIHJldHVybiBudWxscHRyOwotI2VuZGlmCi19Ci0KICNpZiAhUExB
VEZPUk0oQ09DT0EpICYmICFVU0UoRlJFRVRZUEUpCiBWZWN0b3I8Rm9udFBsYXRmb3JtRGF0YTo6
Rm9udFZhcmlhdGlvbkF4aXM+IEZvbnRQbGF0Zm9ybURhdGE6OnZhcmlhdGlvbkF4ZXMoU2hvdWxk
TG9jYWxpemVBeGlzTmFtZXMpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmgKaW5kZXggZmZlOGRmYWQ5OGZhLi5hYzA0
MDIwYmY1MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnRQbGF0Zm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250UGxhdGZvcm1EYXRhLmgKQEAgLTU2LDcgKzU2LDYgQEAgT0JKQ19DTEFTUyBOU0ZvbnQ7CiAj
ZW5kaWYKIAogI2lmIFVTRShDT1JFX1RFWFQpCi0jaW5jbHVkZSA8cGFsL3NwaS9jZi9Db3JlVGV4
dFNQSS5oPgogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgX19DVEZvbnQqIENURm9udFJlZjsKICNlbmRp
ZgogCkBAIC03NCw3ICs3Myw2IEBAIGludGVyZmFjZSBJRFdyaXRlRm9udEZhY2U7CiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKLXN0cnVjdCBGb250Q3VzdG9t
UGxhdGZvcm1EYXRhOwogc3RydWN0IEZvbnRTaXplQWRqdXN0OwogCiAvLyBUaGlzIGNsYXNzIGlz
IGNvbmNlcHR1YWxseSBpbW11dGFibGUuIE9uY2UgY3JlYXRlZCwgbm8gaW5zdGFuY2VzIHNob3Vs
ZCBldmVyIGNoYW5nZSAoaW4gYW4gb2JzZXJ2YWJsZSB3YXkpLgpAQCAtMTEwLDU3ICsxMDgsMjEg
QEAgcHVibGljOgogICAgIEZvbnRQbGF0Zm9ybURhdGEoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFs
dWVUeXBlKTsKICAgICBGb250UGxhdGZvcm1EYXRhKCk7CiAKLSAgICBGb250UGxhdGZvcm1EYXRh
KGZsb2F0IHNpemUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNPYmxpcXVlLCBG
b250T3JpZW50YXRpb24gPSBGb250T3JpZW50YXRpb246Okhvcml6b250YWwsIEZvbnRXaWR0aFZh
cmlhbnQgPSBGb250V2lkdGhWYXJpYW50OjpSZWd1bGFyV2lkdGgsIFRleHRSZW5kZXJpbmdNb2Rl
ID0gVGV4dFJlbmRlcmluZ01vZGU6OkF1dG9UZXh0UmVuZGVyaW5nLCBjb25zdCBGb250Q3VzdG9t
UGxhdGZvcm1EYXRhKiA9IG51bGxwdHIpOworICAgIEZvbnRQbGF0Zm9ybURhdGEoZmxvYXQgc2l6
ZSwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY09ibGlxdWUsIEZvbnRPcmllbnRh
dGlvbiA9IEZvbnRPcmllbnRhdGlvbjo6SG9yaXpvbnRhbCwgRm9udFdpZHRoVmFyaWFudCA9IEZv
bnRXaWR0aFZhcmlhbnQ6OlJlZ3VsYXJXaWR0aCwgVGV4dFJlbmRlcmluZ01vZGUgPSBUZXh0UmVu
ZGVyaW5nTW9kZTo6QXV0b1RleHRSZW5kZXJpbmcsIGNvbnN0IENyZWF0aW9uRGF0YSogPSBudWxs
cHRyKTsKIAogI2lmIFVTRShDT1JFX1RFWFQpCi0gICAgV0VCQ09SRV9FWFBPUlQgRm9udFBsYXRm
b3JtRGF0YShSZXRhaW5QdHI8Q1RGb250UmVmPiYmLCBmbG9hdCBzaXplLCBib29sIHN5bnRoZXRp
Y0JvbGQgPSBmYWxzZSwgYm9vbCBzeW50aGV0aWNPYmxpcXVlID0gZmFsc2UsIEZvbnRPcmllbnRh
dGlvbiA9IEZvbnRPcmllbnRhdGlvbjo6SG9yaXpvbnRhbCwgRm9udFdpZHRoVmFyaWFudCA9IEZv
bnRXaWR0aFZhcmlhbnQ6OlJlZ3VsYXJXaWR0aCwgVGV4dFJlbmRlcmluZ01vZGUgPSBUZXh0UmVu
ZGVyaW5nTW9kZTo6QXV0b1RleHRSZW5kZXJpbmcsIGNvbnN0IEZvbnRDdXN0b21QbGF0Zm9ybURh
dGEqID0gbnVsbHB0cik7CisgICAgV0VCQ09SRV9FWFBPUlQgRm9udFBsYXRmb3JtRGF0YShSZXRh
aW5QdHI8Q1RGb250UmVmPiYmLCBmbG9hdCBzaXplLCBib29sIHN5bnRoZXRpY0JvbGQgPSBmYWxz
ZSwgYm9vbCBzeW50aGV0aWNPYmxpcXVlID0gZmFsc2UsIEZvbnRPcmllbnRhdGlvbiA9IEZvbnRP
cmllbnRhdGlvbjo6SG9yaXpvbnRhbCwgRm9udFdpZHRoVmFyaWFudCA9IEZvbnRXaWR0aFZhcmlh
bnQ6OlJlZ3VsYXJXaWR0aCwgVGV4dFJlbmRlcmluZ01vZGUgPSBUZXh0UmVuZGVyaW5nTW9kZTo6
QXV0b1RleHRSZW5kZXJpbmcsIGNvbnN0IENyZWF0aW9uRGF0YSogPSBudWxscHRyKTsKICNlbmRp
ZgogCiAjaWYgUExBVEZPUk0oV0lOKQotICAgIFdFQkNPUkVfRVhQT1JUIEZvbnRQbGF0Zm9ybURh
dGEoR0RJT2JqZWN0PEhGT05UPiwgZmxvYXQgc2l6ZSwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29s
IHN5bnRoZXRpY09ibGlxdWUsIGNvbnN0IEZvbnRDdXN0b21QbGF0Zm9ybURhdGEqID0gbnVsbHB0
cik7Ci0gICAgRm9udFBsYXRmb3JtRGF0YShHRElPYmplY3Q8SEZPTlQ+LCBjYWlyb19mb250X2Zh
Y2VfdCosIGZsb2F0IHNpemUsIGJvb2wgYm9sZCwgYm9vbCBpdGFsaWMsIGNvbnN0IEZvbnRDdXN0
b21QbGF0Zm9ybURhdGEqID0gbnVsbHB0cik7CisgICAgV0VCQ09SRV9FWFBPUlQgRm9udFBsYXRm
b3JtRGF0YShHRElPYmplY3Q8SEZPTlQ+LCBmbG9hdCBzaXplLCBib29sIHN5bnRoZXRpY0JvbGQs
IGJvb2wgc3ludGhldGljT2JsaXF1ZSwgY29uc3QgQ3JlYXRpb25EYXRhKiA9IG51bGxwdHIpOwor
ICAgIEZvbnRQbGF0Zm9ybURhdGEoR0RJT2JqZWN0PEhGT05UPiwgY2Fpcm9fZm9udF9mYWNlX3Qq
LCBmbG9hdCBzaXplLCBib29sIGJvbGQsIGJvb2wgaXRhbGljLCBjb25zdCBDcmVhdGlvbkRhdGEq
ID0gbnVsbHB0cik7CiAjZW5kaWYKIAogI2lmIFVTRShGUkVFVFlQRSkKICAgICBGb250UGxhdGZv
cm1EYXRhKGNhaXJvX2ZvbnRfZmFjZV90KiwgUmVmUHRyPEZjUGF0dGVybj4mJiwgZmxvYXQgc2l6
ZSwgYm9vbCBmaXhlZFdpZHRoLCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhldGljT2Js
aXF1ZSwgRm9udE9yaWVudGF0aW9uKTsKICNlbmRpZgogCi0gICAgY2xhc3MgQXR0cmlidXRlcyB7
Ci0gICAgcHVibGljOgotICAgICAgICBBdHRyaWJ1dGVzKGZsb2F0IHNpemUsIEZvbnRPcmllbnRh
dGlvbiBvcmllbnRhdGlvbiwgRm9udFdpZHRoVmFyaWFudCB3aWR0aFZhcmlhbnQsIFRleHRSZW5k
ZXJpbmdNb2RlIHRleHRSZW5kZXJpbmdNb2RlLCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wgc3lu
dGhldGljT2JsaXF1ZSkKLSAgICAgICAgICAgIDogbV9zaXplKHNpemUpCi0gICAgICAgICAgICAs
IG1fb3JpZW50YXRpb24ob3JpZW50YXRpb24pCi0gICAgICAgICAgICAsIG1fd2lkdGhWYXJpYW50
KHdpZHRoVmFyaWFudCkKLSAgICAgICAgICAgICwgbV90ZXh0UmVuZGVyaW5nTW9kZSh0ZXh0UmVu
ZGVyaW5nTW9kZSkKLSAgICAgICAgICAgICwgbV9zeW50aGV0aWNCb2xkKHN5bnRoZXRpY0JvbGQp
Ci0gICAgICAgICAgICAsIG1fc3ludGhldGljT2JsaXF1ZShzeW50aGV0aWNPYmxpcXVlKQotICAg
ICAgICB7IH0KLQotICAgICAgICBmbG9hdCBtX3NpemUgeyAwIH07Ci0KLSAgICAgICAgRm9udE9y
aWVudGF0aW9uIG1fb3JpZW50YXRpb24geyBGb250T3JpZW50YXRpb246Okhvcml6b250YWwgfTsK
LSAgICAgICAgRm9udFdpZHRoVmFyaWFudCBtX3dpZHRoVmFyaWFudCB7IEZvbnRXaWR0aFZhcmlh
bnQ6OlJlZ3VsYXJXaWR0aCB9OwotICAgICAgICBUZXh0UmVuZGVyaW5nTW9kZSBtX3RleHRSZW5k
ZXJpbmdNb2RlIHsgVGV4dFJlbmRlcmluZ01vZGU6OkF1dG9UZXh0UmVuZGVyaW5nIH07Ci0KLSAg
ICAgICAgYm9vbCBtX3N5bnRoZXRpY0JvbGQgeyBmYWxzZSB9OwotICAgICAgICBib29sIG1fc3lu
dGhldGljT2JsaXF1ZSB7IGZhbHNlIH07Ci0KLSNpZiBQTEFURk9STShXSU4pCi0gICAgICAgIExP
R0ZPTlQgbV9mb250OwotI2VsaWYgVVNFKENPUkVfVEVYVCkKLSAgICAgICAgUmV0YWluUHRyPENG
RGljdGlvbmFyeVJlZj4gbV9hdHRyaWJ1dGVzOwotICAgICAgICBDVEZvbnREZXNjcmlwdG9yT3B0
aW9ucyBtX29wdGlvbnM7Ci0gICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbV91cmw7Ci0g
ICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbV9wc05hbWU7Ci0jZW5kaWYKLSAgICB9Owot
Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEZvbnRQbGF0Zm9ybURhdGEgY3JlYXRlKGNvbnN0
IEF0dHJpYnV0ZXMmLCBjb25zdCBGb250Q3VzdG9tUGxhdGZvcm1EYXRhKik7Ci0KLSAgICBXRUJD
T1JFX0VYUE9SVCBGb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmKTsKLSAg
ICBXRUJDT1JFX0VYUE9SVCBGb250UGxhdGZvcm1EYXRhJiBvcGVyYXRvcj0oY29uc3QgRm9udFBs
YXRmb3JtRGF0YSYpOwotICAgIFdFQkNPUkVfRVhQT1JUIH5Gb250UGxhdGZvcm1EYXRhKCk7Ci0K
ICAgICBzdGF0aWMgRm9udFBsYXRmb3JtRGF0YSBjbG9uZVdpdGhPcmllbnRhdGlvbihjb25zdCBG
b250UGxhdGZvcm1EYXRhJiwgRm9udE9yaWVudGF0aW9uKTsKICAgICBzdGF0aWMgRm9udFBsYXRm
b3JtRGF0YSBjbG9uZVdpdGhTeW50aGV0aWNPYmxpcXVlKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEm
LCBib29sKTsKIApAQCAtMjU1LDE0ICsyMTcsMTEgQEAgcHVibGljOgogI2VuZGlmCiAgICAgfTsK
IAotICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IENyZWF0aW9uRGF0YSogY3JlYXRpb25EYXRhKCkg
Y29uc3Q7Ci0gICAgY29uc3QgRm9udEN1c3RvbVBsYXRmb3JtRGF0YSogY3VzdG9tUGxhdGZvcm1E
YXRhKCkgY29uc3QKKyAgICBjb25zdCBDcmVhdGlvbkRhdGEqIGNyZWF0aW9uRGF0YSgpIGNvbnN0
CiAgICAgewotICAgICAgICByZXR1cm4gbV9jdXN0b21QbGF0Zm9ybURhdGEuZ2V0KCk7CisgICAg
ICAgIHJldHVybiBtX2NyZWF0aW9uRGF0YSA/ICZtX2NyZWF0aW9uRGF0YS52YWx1ZSgpIDogbnVs
bHB0cjsKICAgICB9CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMo
KSBjb25zdDsKLQogcHJpdmF0ZToKICAgICBib29sIHBsYXRmb3JtSXNFcXVhbChjb25zdCBGb250
UGxhdGZvcm1EYXRhJikgY29uc3Q7CiAgICAgLy8gIHVwZGF0ZVNpemUgdG8gYmUgaW1wbGVtZW50
ZWQgYnkgZWFjaCBwbGF0Zm9ybSBzaW5jZSBpdCBuZWVkcyB0byByZS1pbnN0YW50aWF0ZSB0aGUg
cGxhdGZvcm0gZm9udCBvYmplY3QuCkBAIC0zMDQsNyArMjYzLDcgQEAgcHJpdmF0ZToKIAogICAg
IC8vIFRoaXMgaXMgY29uY2VwdHVhbGx5IGNvbnN0LCBidXQgd2UgY2FuJ3QgbWFrZSBpdCBhY3R1
YWxseSBjb25zdCwKICAgICAvLyBiZWNhdXNlIEZvbnRQbGF0Zm9ybURhdGEgaXMgdXNlZCBhcyBh
IGtleSBpbiBhIEhhc2hNYXAuCi0gICAgUmVmUHRyPGNvbnN0IEZvbnRDdXN0b21QbGF0Zm9ybURh
dGE+IG1fY3VzdG9tUGxhdGZvcm1EYXRhOworICAgIHN0ZDo6b3B0aW9uYWw8Q3JlYXRpb25EYXRh
PiBtX2NyZWF0aW9uRGF0YTsKIAogICAgIGJvb2wgbV9zeW50aGV0aWNCb2xkIHsgZmFsc2UgfTsK
ICAgICBib29sIG1fc3ludGhldGljT2JsaXF1ZSB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4
dC5jcHAKaW5kZXggZGUzYTM0NDI4OTJiLi5jYjgyYWM2MDMwNGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3Jl
VGV4dC5jcHAKQEAgLTc5MywxMCArNzkzLDEwIEBAIFJlZlB0cjxGb250PiBGb250Q2FjaGU6OnN5
c3RlbUZhbGxiYWNrRm9yQ2hhcmFjdGVycyhjb25zdCBGb250RGVzY3JpcHRpb24mIGRlc2NyCiAK
ICAgICBhdXRvIFtzeW50aGV0aWNCb2xkLCBzeW50aGV0aWNPYmxpcXVlXSA9IGNvbXB1dGVOZWNl
c3NhcnlTeW50aGVzaXMoc3Vic3RpdHV0ZUZvbnQsIGRlc2NyaXB0aW9uLCBTaG91bGRDb21wdXRl
UGh5c2ljYWxUcmFpdHM6Ok5vLCBpc0ZvclBsYXRmb3JtRm9udCA9PSBJc0ZvclBsYXRmb3JtRm9u
dDo6WWVzKS5ib2xkT2JsaXF1ZVBhaXIoKTsKIAotICAgIGNvbnN0IEZvbnRDdXN0b21QbGF0Zm9y
bURhdGEqIGN1c3RvbVBsYXRmb3JtRGF0YSA9IG51bGxwdHI7CisgICAgY29uc3QgRm9udFBsYXRm
b3JtRGF0YTo6Q3JlYXRpb25EYXRhKiBjcmVhdGlvbkRhdGEgPSBudWxscHRyOwogICAgIGlmIChz
YWZlQ0ZFcXVhbChwbGF0Zm9ybURhdGEuZm9udCgpLCBzdWJzdGl0dXRlRm9udCkpCi0gICAgICAg
IGN1c3RvbVBsYXRmb3JtRGF0YSA9IHBsYXRmb3JtRGF0YS5jdXN0b21QbGF0Zm9ybURhdGEoKTsK
LSAgICBGb250UGxhdGZvcm1EYXRhIGFsdGVybmF0ZUZvbnQoc3Vic3RpdHV0ZUZvbnQsIHBsYXRm
b3JtRGF0YS5zaXplKCksIHN5bnRoZXRpY0JvbGQsIHN5bnRoZXRpY09ibGlxdWUsIHBsYXRmb3Jt
RGF0YS5vcmllbnRhdGlvbigpLCBwbGF0Zm9ybURhdGEud2lkdGhWYXJpYW50KCksIHBsYXRmb3Jt
RGF0YS50ZXh0UmVuZGVyaW5nTW9kZSgpLCBjdXN0b21QbGF0Zm9ybURhdGEpOworICAgICAgICBj
cmVhdGlvbkRhdGEgPSBwbGF0Zm9ybURhdGEuY3JlYXRpb25EYXRhKCk7CisgICAgRm9udFBsYXRm
b3JtRGF0YSBhbHRlcm5hdGVGb250KHN1YnN0aXR1dGVGb250LCBwbGF0Zm9ybURhdGEuc2l6ZSgp
LCBzeW50aGV0aWNCb2xkLCBzeW50aGV0aWNPYmxpcXVlLCBwbGF0Zm9ybURhdGEub3JpZW50YXRp
b24oKSwgcGxhdGZvcm1EYXRhLndpZHRoVmFyaWFudCgpLCBwbGF0Zm9ybURhdGEudGV4dFJlbmRl
cmluZ01vZGUoKSwgY3JlYXRpb25EYXRhKTsKIAogICAgIHJldHVybiBmb250Rm9yUGxhdGZvcm1E
YXRhKGFsdGVybmF0ZUZvbnQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udENvcmVUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRDb3JlVGV4dC5jcHAKaW5kZXggMWNmM2RlNTk5
YWY4Li41ZjRmYjY2ZjdmOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvcmV0ZXh0L0ZvbnRDb3JlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udENvcmVUZXh0LmNwcApAQCAtMzgxLDcgKzM4MSw3
IEBAIGJvb2wgRm9udDo6c3VwcG9ydHNBbGxQZXRpdGVDYXBzKCkgY29uc3QKIH0KICNlbmRpZgog
Ci1zdGF0aWMgUmVmUHRyPEZvbnQ+IGNyZWF0ZURlcml2YXRpdmVGb250KENURm9udFJlZiBmb250
LCBmbG9hdCBzaXplLCBGb250T3JpZW50YXRpb24gb3JpZW50YXRpb24sIENURm9udFN5bWJvbGlj
VHJhaXRzIGZvbnRUcmFpdHMsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFs
aWMsIEZvbnRXaWR0aFZhcmlhbnQgZm9udFdpZHRoVmFyaWFudCwgVGV4dFJlbmRlcmluZ01vZGUg
dGV4dFJlbmRlcmluZ01vZGUsIGNvbnN0IEZvbnRDdXN0b21QbGF0Zm9ybURhdGEqIGN1c3RvbVBs
YXRmb3JtRGF0YSkKK3N0YXRpYyBSZWZQdHI8Rm9udD4gY3JlYXRlRGVyaXZhdGl2ZUZvbnQoQ1RG
b250UmVmIGZvbnQsIGZsb2F0IHNpemUsIEZvbnRPcmllbnRhdGlvbiBvcmllbnRhdGlvbiwgQ1RG
b250U3ltYm9saWNUcmFpdHMgZm9udFRyYWl0cywgYm9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5
bnRoZXRpY0l0YWxpYywgRm9udFdpZHRoVmFyaWFudCBmb250V2lkdGhWYXJpYW50LCBUZXh0UmVu
ZGVyaW5nTW9kZSB0ZXh0UmVuZGVyaW5nTW9kZSwgY29uc3QgRm9udFBsYXRmb3JtRGF0YTo6Q3Jl
YXRpb25EYXRhKiBjcmVhdGlvbkRhdGEpCiB7CiAgICAgaWYgKCFmb250KQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKQEAgLTM5NSw3ICszOTUsNyBAQCBzdGF0aWMgUmVmUHRyPEZvbnQ+IGNyZWF0
ZURlcml2YXRpdmVGb250KENURm9udFJlZiBmb250LCBmbG9hdCBzaXplLCBGb250T3JpZW50YQog
CiAgICAgYm9vbCB1c2VkU3ludGhldGljQm9sZCA9IChmb250VHJhaXRzICYga0NURm9udEJvbGRU
cmFpdCkgJiYgIShzY2FsZWRGb250VHJhaXRzICYga0NURm9udFRyYWl0Qm9sZCk7CiAgICAgYm9v
bCB1c2VkU3ludGhldGljT2JsaXF1ZSA9IChmb250VHJhaXRzICYga0NURm9udEl0YWxpY1RyYWl0
KSAmJiAhKHNjYWxlZEZvbnRUcmFpdHMgJiBrQ1RGb250VHJhaXRJdGFsaWMpOwotICAgIEZvbnRQ
bGF0Zm9ybURhdGEgc2NhbGVkRm9udERhdGEoZm9udCwgc2l6ZSwgdXNlZFN5bnRoZXRpY0JvbGQs
IHVzZWRTeW50aGV0aWNPYmxpcXVlLCBvcmllbnRhdGlvbiwgZm9udFdpZHRoVmFyaWFudCwgdGV4
dFJlbmRlcmluZ01vZGUsIGN1c3RvbVBsYXRmb3JtRGF0YSk7CisgICAgRm9udFBsYXRmb3JtRGF0
YSBzY2FsZWRGb250RGF0YShmb250LCBzaXplLCB1c2VkU3ludGhldGljQm9sZCwgdXNlZFN5bnRo
ZXRpY09ibGlxdWUsIG9yaWVudGF0aW9uLCBmb250V2lkdGhWYXJpYW50LCB0ZXh0UmVuZGVyaW5n
TW9kZSwgY3JlYXRpb25EYXRhKTsKIAogICAgIHJldHVybiBGb250OjpjcmVhdGUoc2NhbGVkRm9u
dERhdGEpOwogfQpAQCAtNTM1LDcgKzUzNSw3IEBAIFJlZlB0cjxGb250PiBGb250OjpjcmVhdGVG
b250V2l0aG91dFN5bnRoZXNpemFibGVGZWF0dXJlcygpIGNvbnN0CiAgICAgZmxvYXQgc2l6ZSA9
IG1fcGxhdGZvcm1EYXRhLnNpemUoKTsKICAgICBDVEZvbnRTeW1ib2xpY1RyYWl0cyBmb250VHJh
aXRzID0gQ1RGb250R2V0U3ltYm9saWNUcmFpdHMobV9wbGF0Zm9ybURhdGEuZm9udCgpKTsKICAg
ICBSZXRhaW5QdHI8Q1RGb250UmVmPiBjdEZvbnQgPSBjcmVhdGVDVEZvbnRXaXRob3V0U3ludGhl
c2l6YWJsZUZlYXR1cmVzKG1fcGxhdGZvcm1EYXRhLmZvbnQoKSk7Ci0gICAgcmV0dXJuIGNyZWF0
ZURlcml2YXRpdmVGb250KGN0Rm9udC5nZXQoKSwgc2l6ZSwgbV9wbGF0Zm9ybURhdGEub3JpZW50
YXRpb24oKSwgZm9udFRyYWl0cywgbV9wbGF0Zm9ybURhdGEuc3ludGhldGljQm9sZCgpLCBtX3Bs
YXRmb3JtRGF0YS5zeW50aGV0aWNPYmxpcXVlKCksIG1fcGxhdGZvcm1EYXRhLndpZHRoVmFyaWFu
dCgpLCBtX3BsYXRmb3JtRGF0YS50ZXh0UmVuZGVyaW5nTW9kZSgpLCBtX3BsYXRmb3JtRGF0YS5j
dXN0b21QbGF0Zm9ybURhdGEoKSk7CisgICAgcmV0dXJuIGNyZWF0ZURlcml2YXRpdmVGb250KGN0
Rm9udC5nZXQoKSwgc2l6ZSwgbV9wbGF0Zm9ybURhdGEub3JpZW50YXRpb24oKSwgZm9udFRyYWl0
cywgbV9wbGF0Zm9ybURhdGEuc3ludGhldGljQm9sZCgpLCBtX3BsYXRmb3JtRGF0YS5zeW50aGV0
aWNPYmxpcXVlKCksIG1fcGxhdGZvcm1EYXRhLndpZHRoVmFyaWFudCgpLCBtX3BsYXRmb3JtRGF0
YS50ZXh0UmVuZGVyaW5nTW9kZSgpLCBtX3BsYXRmb3JtRGF0YS5jcmVhdGlvbkRhdGEoKSk7CiB9
CiAKIFJlZlB0cjxGb250PiBGb250OjpwbGF0Zm9ybUNyZWF0ZVNjYWxlZEZvbnQoY29uc3QgRm9u
dERlc2NyaXB0aW9uJiwgZmxvYXQgc2NhbGVGYWN0b3IpIGNvbnN0CkBAIC01NDUsNyArNTQ1LDcg
QEAgUmVmUHRyPEZvbnQ+IEZvbnQ6OnBsYXRmb3JtQ3JlYXRlU2NhbGVkRm9udChjb25zdCBGb250
RGVzY3JpcHRpb24mLCBmbG9hdCBzY2FsZUYKICAgICBSZXRhaW5QdHI8Q1RGb250RGVzY3JpcHRv
clJlZj4gZm9udERlc2NyaXB0b3IgPSBhZG9wdENGKENURm9udENvcHlGb250RGVzY3JpcHRvciht
X3BsYXRmb3JtRGF0YS5mb250KCkpKTsKICAgICBSZXRhaW5QdHI8Q1RGb250UmVmPiBzY2FsZWRG
b250ID0gYWRvcHRDRihDVEZvbnRDcmVhdGVXaXRoRm9udERlc2NyaXB0b3IoZm9udERlc2NyaXB0
b3IuZ2V0KCksIHNpemUsIG51bGxwdHIpKTsKIAotICAgIHJldHVybiBjcmVhdGVEZXJpdmF0aXZl
Rm9udChzY2FsZWRGb250LmdldCgpLCBzaXplLCBtX3BsYXRmb3JtRGF0YS5vcmllbnRhdGlvbigp
LCBmb250VHJhaXRzLCBtX3BsYXRmb3JtRGF0YS5zeW50aGV0aWNCb2xkKCksIG1fcGxhdGZvcm1E
YXRhLnN5bnRoZXRpY09ibGlxdWUoKSwgbV9wbGF0Zm9ybURhdGEud2lkdGhWYXJpYW50KCksIG1f
cGxhdGZvcm1EYXRhLnRleHRSZW5kZXJpbmdNb2RlKCksIG1fcGxhdGZvcm1EYXRhLmN1c3RvbVBs
YXRmb3JtRGF0YSgpKTsKKyAgICByZXR1cm4gY3JlYXRlRGVyaXZhdGl2ZUZvbnQoc2NhbGVkRm9u
dC5nZXQoKSwgc2l6ZSwgbV9wbGF0Zm9ybURhdGEub3JpZW50YXRpb24oKSwgZm9udFRyYWl0cywg
bV9wbGF0Zm9ybURhdGEuc3ludGhldGljQm9sZCgpLCBtX3BsYXRmb3JtRGF0YS5zeW50aGV0aWNP
YmxpcXVlKCksIG1fcGxhdGZvcm1EYXRhLndpZHRoVmFyaWFudCgpLCBtX3BsYXRmb3JtRGF0YS50
ZXh0UmVuZGVyaW5nTW9kZSgpLCBtX3BsYXRmb3JtRGF0YS5jcmVhdGlvbkRhdGEoKSk7CiB9CiAK
IGZsb2F0IEZvbnQ6OnBsYXRmb3JtV2lkdGhGb3JHbHlwaChHbHlwaCBnbHlwaCkgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRQ
bGF0Zm9ybURhdGFDb3JlVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwCmluZGV4IDExNDdjZTRkNzMy
MS4uMWExOGUxYWQ0ZmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4
dC5jcHAKQEAgLTI0LDcgKzI0LDYgQEAKICNpbmNsdWRlICJGb250UGxhdGZvcm1EYXRhLmgiCiAK
ICNpbmNsdWRlICJGb250LmgiCi0jaW5jbHVkZSAiRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oIgog
I2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPENvcmVUZXh0L0NvcmVUZXh0Lmg+
CiAjaW5jbHVkZSA8cGFsL3NwaS9jZi9Db3JlVGV4dFNQSS5oPgpAQCAtMzMsOCArMzIsOCBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUZvbnRQbGF0Zm9ybURhdGE6OkZvbnRQbGF0Zm9ybURh
dGEoUmV0YWluUHRyPENURm9udFJlZj4mJiBmb250LCBmbG9hdCBzaXplLCBib29sIHN5bnRoZXRp
Y0JvbGQsIGJvb2wgc3ludGhldGljT2JsaXF1ZSwgRm9udE9yaWVudGF0aW9uIG9yaWVudGF0aW9u
LCBGb250V2lkdGhWYXJpYW50IHdpZHRoVmFyaWFudCwgVGV4dFJlbmRlcmluZ01vZGUgdGV4dFJl
bmRlcmluZ01vZGUsIGNvbnN0IEZvbnRDdXN0b21QbGF0Zm9ybURhdGEqIGN1c3RvbVBsYXRmb3Jt
RGF0YSkKLSAgICA6IEZvbnRQbGF0Zm9ybURhdGEoc2l6ZSwgc3ludGhldGljQm9sZCwgc3ludGhl
dGljT2JsaXF1ZSwgb3JpZW50YXRpb24sIHdpZHRoVmFyaWFudCwgdGV4dFJlbmRlcmluZ01vZGUs
IGN1c3RvbVBsYXRmb3JtRGF0YSkKK0ZvbnRQbGF0Zm9ybURhdGE6OkZvbnRQbGF0Zm9ybURhdGEo
UmV0YWluUHRyPENURm9udFJlZj4mJiBmb250LCBmbG9hdCBzaXplLCBib29sIHN5bnRoZXRpY0Jv
bGQsIGJvb2wgc3ludGhldGljT2JsaXF1ZSwgRm9udE9yaWVudGF0aW9uIG9yaWVudGF0aW9uLCBG
b250V2lkdGhWYXJpYW50IHdpZHRoVmFyaWFudCwgVGV4dFJlbmRlcmluZ01vZGUgdGV4dFJlbmRl
cmluZ01vZGUsIGNvbnN0IENyZWF0aW9uRGF0YSogY3JlYXRpb25EYXRhKQorICAgIDogRm9udFBs
YXRmb3JtRGF0YShzaXplLCBzeW50aGV0aWNCb2xkLCBzeW50aGV0aWNPYmxpcXVlLCBvcmllbnRh
dGlvbiwgd2lkdGhWYXJpYW50LCB0ZXh0UmVuZGVyaW5nTW9kZSwgY3JlYXRpb25EYXRhKQogewog
ICAgIEFTU0VSVF9BUkcoZm9udCwgZm9udCk7CiAgICAgbV9mb250ID0gZm9udDsKQEAgLTQ4LDU5
ICs0Nyw2IEBAIEZvbnRQbGF0Zm9ybURhdGE6OkZvbnRQbGF0Zm9ybURhdGEoUmV0YWluUHRyPENU
Rm9udFJlZj4mJiBmb250LCBmbG9hdCBzaXplLCBib29sCiAjZW5kaWYKIH0KIAotc3RhdGljIFJl
dGFpblB0cjxDVEZvbnREZXNjcmlwdG9yUmVmPiBmaW5kRm9udERlc2NyaXB0b3IoQ0ZTdHJpbmdS
ZWYgcmVmZXJlbmNlVVJMLCBDRlN0cmluZ1JlZiBwb3N0U2NyaXB0TmFtZSkKLXsKLSAgICBhdXRv
IHVybCA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVXaXRoU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQs
IHJlZmVyZW5jZVVSTCwgbnVsbHB0cikpOwotICAgIGlmICghdXJsKQotICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLSAgICBhdXRvIGZvbnREZXNjcmlwdG9ycyA9IGFkb3B0Q0YoQ1RGb250TWFuYWdl
ckNyZWF0ZUZvbnREZXNjcmlwdG9yc0Zyb21VUkwodXJsLmdldCgpKSk7Ci0gICAgaWYgKCFmb250
RGVzY3JpcHRvcnMgfHwgIUNGQXJyYXlHZXRDb3VudChmb250RGVzY3JpcHRvcnMuZ2V0KCkpKQot
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBpZiAoQ0ZBcnJheUdldENvdW50KGZvbnREZXNj
cmlwdG9ycy5nZXQoKSkgPT0gMSkKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PENURm9udERl
c2NyaXB0b3JSZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgoZm9udERlc2NyaXB0b3JzLmdldCgp
LCAwKSk7Ci0KLSAgICBmb3IgKENGSW5kZXggaSA9IDA7IGkgPCBDRkFycmF5R2V0Q291bnQoZm9u
dERlc2NyaXB0b3JzLmdldCgpKTsgKytpKSB7Ci0gICAgICAgIGF1dG8gZm9udERlc2NyaXB0b3Ig
PSBzdGF0aWNfY2FzdDxDVEZvbnREZXNjcmlwdG9yUmVmPihDRkFycmF5R2V0VmFsdWVBdEluZGV4
KGZvbnREZXNjcmlwdG9ycy5nZXQoKSwgaSkpOwotICAgICAgICBhdXRvIGN1cnJlbnRQb3N0U2Ny
aXB0TmFtZSA9IGFkb3B0Q0YoQ1RGb250RGVzY3JpcHRvckNvcHlBdHRyaWJ1dGUoZm9udERlc2Ny
aXB0b3IsIGtDVEZvbnROYW1lQXR0cmlidXRlKSk7Ci0gICAgICAgIGlmIChDRkVxdWFsKGN1cnJl
bnRQb3N0U2NyaXB0TmFtZS5nZXQoKSwgcG9zdFNjcmlwdE5hbWUpKQotICAgICAgICAgICAgcmV0
dXJuIGZvbnREZXNjcmlwdG9yOwotICAgIH0KLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQotc3Rh
dGljIFJldGFpblB0cjxDVEZvbnRSZWY+IGNyZWF0ZUNURm9udChDRkRpY3Rpb25hcnlSZWYgYXR0
cmlidXRlcywgZmxvYXQgc2l6ZSwgQ1RGb250RGVzY3JpcHRvck9wdGlvbnMgb3B0aW9ucywgQ0ZT
dHJpbmdSZWYgcmVmZXJlbmNlVVJMLCBDRlN0cmluZ1JlZiBkZXNpcmVkUG9zdFNjcmlwdE5hbWUp
Ci17Ci0gICAgYXV0byBmb250RGVzY3JpcHRvciA9IGFkb3B0Q0YoQ1RGb250RGVzY3JpcHRvckNy
ZWF0ZVdpdGhBdHRyaWJ1dGVzKGF0dHJpYnV0ZXMpKTsKLSAgICBpZiAoZm9udERlc2NyaXB0b3Ip
IHsKLSAgICAgICAgYXV0byBmb250ID0gYWRvcHRDRihDVEZvbnRDcmVhdGVXaXRoRm9udERlc2Ny
aXB0b3JBbmRPcHRpb25zKGZvbnREZXNjcmlwdG9yLmdldCgpLCBzaXplLCBudWxscHRyLCBvcHRp
b25zKSk7Ci0gICAgICAgIGF1dG8gYWN0dWFsUG9zdFNjcmlwdE5hbWUgPSBhZG9wdENGKENURm9u
dENvcHlQb3N0U2NyaXB0TmFtZShmb250LmdldCgpKSk7Ci0gICAgICAgIGlmIChDRkVxdWFsKGFj
dHVhbFBvc3RTY3JpcHROYW1lLmdldCgpLCBkZXNpcmVkUG9zdFNjcmlwdE5hbWUpKQotICAgICAg
ICAgICAgcmV0dXJuIGZvbnQ7Ci0gICAgfQotCi0gICAgLy8gQ29yZVRleHQgY291bGRuJ3Qgcm91
bmQtdHJpcCB0aGUgZm9udC4KLSAgICAvLyBXZSBjYW4gZmFsbCBiYWNrIHRvIGRvaW5nIG91ciBi
ZXN0IHRvIGZpbmQgaXQgb3Vyc2VsZi4KLSAgICBmb250RGVzY3JpcHRvciA9IGZpbmRGb250RGVz
Y3JpcHRvcihyZWZlcmVuY2VVUkwsIGRlc2lyZWRQb3N0U2NyaXB0TmFtZSk7Ci0gICAgaWYgKCFm
b250RGVzY3JpcHRvcikKLSAgICAgICAgZm9udERlc2NyaXB0b3IgPSBhZG9wdENGKENURm9udERl
c2NyaXB0b3JDcmVhdGVMYXN0UmVzb3J0KCkpOwotICAgIEFTU0VSVChmb250RGVzY3JpcHRvcik7
Ci0gICAgcmV0dXJuIGFkb3B0Q0YoQ1RGb250Q3JlYXRlV2l0aEZvbnREZXNjcmlwdG9yQW5kT3B0
aW9ucyhmb250RGVzY3JpcHRvci5nZXQoKSwgc2l6ZSwgbnVsbHB0ciwgb3B0aW9ucykpOwotfQot
Ci1Gb250UGxhdGZvcm1EYXRhIEZvbnRQbGF0Zm9ybURhdGE6OmNyZWF0ZShjb25zdCBBdHRyaWJ1
dGVzJiBkYXRhLCBjb25zdCBGb250Q3VzdG9tUGxhdGZvcm1EYXRhKiBjdXN0b20pCi17Ci0gICAg
UmV0YWluUHRyPENURm9udFJlZj4gY3RGb250OwotICAgIGlmIChjdXN0b20pIHsKLSAgICAgICAg
YXV0byBiYXNlRm9udERlc2NyaXB0b3IgPSBjdXN0b20tPmZvbnREZXNjcmlwdG9yLmdldCgpOwot
ICAgICAgICBSRUxFQVNFX0FTU0VSVChiYXNlRm9udERlc2NyaXB0b3IpOwotICAgICAgICBhdXRv
IGZvbnREZXNjcmlwdG9yID0gYWRvcHRDRihDVEZvbnREZXNjcmlwdG9yQ3JlYXRlQ29weVdpdGhB
dHRyaWJ1dGVzKGJhc2VGb250RGVzY3JpcHRvciwgZGF0YS5tX2F0dHJpYnV0ZXMuZ2V0KCkpKTsK
LSAgICAgICAgY3RGb250ID0gYWRvcHRDRihDVEZvbnRDcmVhdGVXaXRoRm9udERlc2NyaXB0b3Io
Zm9udERlc2NyaXB0b3IuZ2V0KCksIGRhdGEubV9zaXplLCBudWxscHRyKSk7Ci0gICAgfSBlbHNl
Ci0gICAgICAgIGN0Rm9udCA9IGNyZWF0ZUNURm9udChkYXRhLm1fYXR0cmlidXRlcy5nZXQoKSwg
ZGF0YS5tX3NpemUsIGRhdGEubV9vcHRpb25zLCBkYXRhLm1fdXJsLmdldCgpLCBkYXRhLm1fcHNO
YW1lLmdldCgpKTsKLQotICAgIHJldHVybiBXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhKGN0Rm9u
dC5nZXQoKSwgZGF0YS5tX3NpemUsIGRhdGEubV9zeW50aGV0aWNCb2xkLCBkYXRhLm1fc3ludGhl
dGljT2JsaXF1ZSwgZGF0YS5tX29yaWVudGF0aW9uLCBkYXRhLm1fd2lkdGhWYXJpYW50LCBkYXRh
Lm1fdGV4dFJlbmRlcmluZ01vZGUsIGN1c3RvbSk7Ci19Ci0KIGJvb2wgaXNTeXN0ZW1Gb250KENU
Rm9udFJlZiBmb250KQogewogICAgIHJldHVybiBDVEZvbnRJc1N5c3RlbVVJRm9udChmb250KTsK
QEAgLTIzOSwyMSArMTg1LDQgQEAgdm9pZCBGb250UGxhdGZvcm1EYXRhOjp1cGRhdGVTaXplKGZs
b2F0IHNpemUpCiAgICAgbV9jdEZvbnQgPSBudWxscHRyOwogfQogCi1Gb250UGxhdGZvcm1EYXRh
OjpBdHRyaWJ1dGVzIEZvbnRQbGF0Zm9ybURhdGE6OmF0dHJpYnV0ZXMoKSBjb25zdAotewotICAg
IEF0dHJpYnV0ZXMgcmVzdWx0KG1fc2l6ZSwgbV9vcmllbnRhdGlvbiwgbV93aWR0aFZhcmlhbnQs
IG1fdGV4dFJlbmRlcmluZ01vZGUsIG1fc3ludGhldGljQm9sZCwgbV9zeW50aGV0aWNPYmxpcXVl
KTsKLQotICAgIGF1dG8gZm9udERlc2NyaXB0b3IgPSBhZG9wdENGKENURm9udENvcHlGb250RGVz
Y3JpcHRvcihtX2ZvbnQuZ2V0KCkpKTsKLSAgICByZXN1bHQubV9hdHRyaWJ1dGVzID0gYWRvcHRD
RihDVEZvbnREZXNjcmlwdG9yQ29weUF0dHJpYnV0ZXMoZm9udERlc2NyaXB0b3IuZ2V0KCkpKTsK
LQotICAgIGlmICghbV9jdXN0b21QbGF0Zm9ybURhdGEpIHsKLSAgICAgICAgcmVzdWx0Lm1fb3B0
aW9ucyA9IENURm9udERlc2NyaXB0b3JHZXRPcHRpb25zKGZvbnREZXNjcmlwdG9yLmdldCgpKTsK
LSAgICAgICAgYXV0byByZWZlcmVuY2VVUkwgPSBhZG9wdENGKHN0YXRpY19jYXN0PENGVVJMUmVm
PihDVEZvbnRDb3B5QXR0cmlidXRlKG1fZm9udC5nZXQoKSwga0NURm9udFJlZmVyZW5jZVVSTEF0
dHJpYnV0ZSkpKTsKLSAgICAgICAgcmVzdWx0Lm1fdXJsID0gQ0ZVUkxHZXRTdHJpbmcocmVmZXJl
bmNlVVJMLmdldCgpKTsKLSAgICAgICAgcmVzdWx0Lm1fcHNOYW1lID0gYWRvcHRDRihDVEZvbnRD
b3B5UG9zdFNjcmlwdE5hbWUobV9mb250LmdldCgpKSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZy
ZWVUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0Zv
bnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKaW5kZXggNTU1YmZhZjdlYzg0Li4yN2Y4
YzQ3ZWRmOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zy
ZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZy
ZWVUeXBlLmNwcApAQCAtMTM4LDcgKzEzOCw3IEBAIHN0YXRpYyBib29sIGluaXRpYWxpemVGcmVl
VHlwZUxpYnJhcnkoRlRfTGlicmFyeSYgbGlicmFyeSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
UmVmUHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURh
dGEoU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYpCitzdGQ6OnVuaXF1ZV9wdHI8
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFy
ZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJikKIHsKICAgICBzdGF0aWMgRlRfTGlicmFy
eSBsaWJyYXJ5OwogICAgIGlmICghbGlicmFyeSAmJiAhaW5pdGlhbGl6ZUZyZWVUeXBlTGlicmFy
eShsaWJyYXJ5KSkgewpAQCAtMTQ5LDcgKzE0OSw3IEBAIFJlZlB0cjxGb250Q3VzdG9tUGxhdGZv
cm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciYgYnVmZmVy
CiAgICAgRlRfRmFjZSBmcmVlVHlwZUZhY2U7CiAgICAgaWYgKEZUX05ld19NZW1vcnlfRmFjZShs
aWJyYXJ5LCByZWludGVycHJldF9jYXN0PGNvbnN0IEZUX0J5dGUqPihidWZmZXIuZGF0YSgpKSwg
YnVmZmVyLnNpemUoKSwgMCwgJmZyZWVUeXBlRmFjZSkpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwotICAgIHJldHVybiBhZG9wdFJlZihuZXcgRm9udEN1c3RvbVBsYXRmb3JtRGF0YShmcmVlVHlw
ZUZhY2UsIGJ1ZmZlcikpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEZvbnRDdXN0b21QbGF0Zm9y
bURhdGE+KGZyZWVUeXBlRmFjZSwgYnVmZmVyKTsKIH0KIAogYm9vbCBGb250Q3VzdG9tUGxhdGZv
cm1EYXRhOjpzdXBwb3J0c0Zvcm1hdChjb25zdCBTdHJpbmcmIGZvcm1hdCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1E
YXRhTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3Vz
dG9tUGxhdGZvcm1EYXRhTWFjLmNwcAppbmRleCAyNjI1ZmJlZjM5ODMuLjQwMzk0YTFjZmMzMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0
b21QbGF0Zm9ybURhdGFNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhTWFjLmNwcApAQCAtNTMsMTMgKzUzLDEzIEBA
IEZvbnRQbGF0Zm9ybURhdGEgRm9udEN1c3RvbVBsYXRmb3JtRGF0YTo6Zm9udFBsYXRmb3JtRGF0
YShjb25zdCBGb250RGVzY3JpcHRpb24mCiAKICAgICBhdXRvIGZvbnQgPSBwcmVwYXJlUGxhdGZv
cm1Gb250KFdURk1vdmUodW5yZWFsaXplZEZvbnQpLCBmb250RGVzY3JpcHRpb24sIGZvbnRDcmVh
dGlvbkNvbnRleHQpOwogICAgIEFTU0VSVChmb250KTsKLSAgICBGb250UGxhdGZvcm1EYXRhIHBs
YXRmb3JtRGF0YShmb250LmdldCgpLCBzaXplLCBib2xkLCBpdGFsaWMsIG9yaWVudGF0aW9uLCB3
aWR0aFZhcmlhbnQsIGZvbnREZXNjcmlwdGlvbi50ZXh0UmVuZGVyaW5nTW9kZSgpLCB0aGlzKTsK
KyAgICBGb250UGxhdGZvcm1EYXRhIHBsYXRmb3JtRGF0YShmb250LmdldCgpLCBzaXplLCBib2xk
LCBpdGFsaWMsIG9yaWVudGF0aW9uLCB3aWR0aFZhcmlhbnQsIGZvbnREZXNjcmlwdGlvbi50ZXh0
UmVuZGVyaW5nTW9kZSgpLCAmY3JlYXRpb25EYXRhKTsKIAogICAgIHBsYXRmb3JtRGF0YS51cGRh
dGVTaXplV2l0aEZvbnRTaXplQWRqdXN0KGZvbnREZXNjcmlwdGlvbi5mb250U2l6ZUFkanVzdCgp
KTsKICAgICByZXR1cm4gcGxhdGZvcm1EYXRhOwogfQogCi1SZWZQdHI8Rm9udEN1c3RvbVBsYXRm
b3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXImIGJ1ZmZl
ciwgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uKQorc3RkOjp1bmlxdWVfcHRyPEZvbnRD
dXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVm
ZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbikKIHsKICAgICBSZXRh
aW5QdHI8Q0ZEYXRhUmVmPiBidWZmZXJEYXRhID0gYnVmZmVyLmNyZWF0ZUNGRGF0YSgpOwogCkBA
IC04Niw3ICs4Niw3IEBAIFJlZlB0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250
Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciYgYnVmZmVyCiAgICAgICAgIGZvbnREZXNj
cmlwdG9yID0gc3RhdGljX2Nhc3Q8Q1RGb250RGVzY3JpcHRvclJlZj4oQ0ZBcnJheUdldFZhbHVl
QXRJbmRleChhcnJheS5nZXQoKSwgMCkpOwogCiAgICAgRm9udFBsYXRmb3JtRGF0YTo6Q3JlYXRp
b25EYXRhIGNyZWF0aW9uRGF0YSA9IHsgYnVmZmVyLCBpdGVtSW5Db2xsZWN0aW9uIH07Ci0gICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBGb250Q3VzdG9tUGxhdGZvcm1EYXRhKGZvbnREZXNjcmlwdG9y
LmdldCgpLCBXVEZNb3ZlKGNyZWF0aW9uRGF0YSkpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxG
b250Q3VzdG9tUGxhdGZvcm1EYXRhPihmb250RGVzY3JpcHRvci5nZXQoKSwgV1RGTW92ZShjcmVh
dGlvbkRhdGEpKTsKIH0KIAogYm9vbCBGb250Q3VzdG9tUGxhdGZvcm1EYXRhOjpzdXBwb3J0c0Zv
cm1hdChjb25zdCBTdHJpbmcmIGZvcm1hdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhV2luLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhV2lu
LmNwcAppbmRleCAxZDlkZmU1YTg3ODcuLmVmZDczZTg3OGVhNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFXaW4u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9t
UGxhdGZvcm1EYXRhV2luLmNwcApAQCAtNjcsNyArNjcsNyBAQCBGb250UGxhdGZvcm1EYXRhIEZv
bnRDdXN0b21QbGF0Zm9ybURhdGE6OmZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udERlc2NyaXB0
aW9uJgogCiAgICAgY2Fpcm9fZm9udF9mYWNlX3QqIGZvbnRGYWNlID0gY2Fpcm9fd2luMzJfZm9u
dF9mYWNlX2NyZWF0ZV9mb3JfaGZvbnQoaGZvbnQuZ2V0KCkpOwogCi0gICAgRm9udFBsYXRmb3Jt
RGF0YSBmb250UGxhdGZvcm1EYXRhKFdURk1vdmUoaGZvbnQpLCBmb250RmFjZSwgc2l6ZSwgYm9s
ZCwgaXRhbGljLCB0aGlzKTsKKyAgICBGb250UGxhdGZvcm1EYXRhIGZvbnRQbGF0Zm9ybURhdGEo
V1RGTW92ZShoZm9udCksIGZvbnRGYWNlLCBzaXplLCBib2xkLCBpdGFsaWMsICZjcmVhdGlvbkRh
dGEpOwogCiAgICAgY2Fpcm9fZm9udF9mYWNlX2Rlc3Ryb3koZm9udEZhY2UpOwogCkBAIC04NCw3
ICs4NCw3IEBAIHN0YXRpYyBTdHJpbmcgY3JlYXRlVW5pcXVlRm9udE5hbWUoKQogICAgIHJldHVy
biBmb250TmFtZTsKIH0KIAotUmVmUHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZv
bnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYg
aXRlbUluQ29sbGVjdGlvbikKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRh
PiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25z
dCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24pCiB7CiAgICAgU3RyaW5nIGZvbnROYW1lID0gY3Jl
YXRlVW5pcXVlRm9udE5hbWUoKTsKICAgICBhdXRvIGZvbnRSZXNvdXJjZSA9IHJlbmFtZUFuZEFj
dGl2YXRlRm9udChidWZmZXIsIGZvbnROYW1lKTsKQEAgLTkzLDcgKzkzLDcgQEAgUmVmUHRyPEZv
bnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVk
QnVmZmVyJiBidWZmZXIKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBGb250UGxhdGZv
cm1EYXRhOjpDcmVhdGlvbkRhdGEgY3JlYXRpb25EYXRhID0geyBidWZmZXIsIGl0ZW1JbkNvbGxl
Y3Rpb24sIGZvbnRSZXNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpIH07Ci0gICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBGb250Q3VzdG9tUGxhdGZvcm1EYXRhKGZvbnROYW1lLCBXVEZNb3ZlKGNyZWF0aW9u
RGF0YSkpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPihm
b250TmFtZSwgV1RGTW92ZShjcmVhdGlvbkRhdGEpKTsKIH0KIAogYm9vbCBGb250Q3VzdG9tUGxh
dGZvcm1EYXRhOjpzdXBwb3J0c0Zvcm1hdChjb25zdCBTdHJpbmcmIGZvcm1hdCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRh
Q2Fpcm9XaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQ
bGF0Zm9ybURhdGFDYWlyb1dpbi5jcHAKaW5kZXggOTY2MTMyMDI0YjgzLi42ZDI2YTAzMzQ3MWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxh
dGZvcm1EYXRhQ2Fpcm9XaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ2Fpcm9XaW4uY3BwCkBAIC02MCw4ICs2MCw4IEBAIHZv
aWQgRm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1EYXRhSW5pdChIRk9OVCBmb250LCBmbG9hdCBz
aXplLCBIREMgaGRjLCBXQ0hBUioKICAgICAgICAgbV9pc1N5c3RlbUZvbnQgPSAhd2NzY21wKGZh
Y2VOYW1lLCBMIkx1Y2lkYSBHcmFuZGUiKTsKIH0KIAotRm9udFBsYXRmb3JtRGF0YTo6Rm9udFBs
YXRmb3JtRGF0YShHRElPYmplY3Q8SEZPTlQ+IGZvbnQsIGNhaXJvX2ZvbnRfZmFjZV90KiBmb250
RmFjZSwgZmxvYXQgc2l6ZSwgYm9vbCBib2xkLCBib29sIG9ibGlxdWUsIGNvbnN0IEZvbnRDdXN0
b21QbGF0Zm9ybURhdGEqIGN1c3RvbVBsYXRmb3JtRGF0YSkKLSAgICA6IEZvbnRQbGF0Zm9ybURh
dGEoc2l6ZSwgYm9sZCwgb2JsaXF1ZSwgRm9udE9yaWVudGF0aW9uOjpIb3Jpem9udGFsLCBGb250
V2lkdGhWYXJpYW50OjpSZWd1bGFyV2lkdGgsIFRleHRSZW5kZXJpbmdNb2RlOjpBdXRvVGV4dFJl
bmRlcmluZywgY3VzdG9tUGxhdGZvcm1EYXRhKQorRm9udFBsYXRmb3JtRGF0YTo6Rm9udFBsYXRm
b3JtRGF0YShHRElPYmplY3Q8SEZPTlQ+IGZvbnQsIGNhaXJvX2ZvbnRfZmFjZV90KiBmb250RmFj
ZSwgZmxvYXQgc2l6ZSwgYm9vbCBib2xkLCBib29sIG9ibGlxdWUsIGNvbnN0IENyZWF0aW9uRGF0
YSogY3JlYXRpb25EYXRhKQorICAgIDogRm9udFBsYXRmb3JtRGF0YShzaXplLCBib2xkLCBvYmxp
cXVlLCBGb250T3JpZW50YXRpb246Okhvcml6b250YWwsIEZvbnRXaWR0aFZhcmlhbnQ6OlJlZ3Vs
YXJXaWR0aCwgVGV4dFJlbmRlcmluZ01vZGU6OkF1dG9UZXh0UmVuZGVyaW5nLCBjcmVhdGlvbkRh
dGEpCiB7CiAgICAgbV9mb250ID0gU2hhcmVkR0RJT2JqZWN0PEhGT05UPjo6Y3JlYXRlKFdURk1v
dmUoZm9udCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHAKaW5kZXggYjNlNDg2OTQ1YmQ5Li5h
ZDU0ZWE3MjQyNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHAKQEAgLTI1LDcgKzI1LDYgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJGb250UGxhdGZvcm1EYXRhLmgiCiAKLSNp
bmNsdWRlICJGb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgiCiAjaW5jbHVkZSAiSFduZERDLmgiCiAj
aW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTM4
LDggKzM3LDggQEAgdXNpbmcgc3RkOjptaW47CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRm9u
dFBsYXRmb3JtRGF0YTo6Rm9udFBsYXRmb3JtRGF0YShHRElPYmplY3Q8SEZPTlQ+IGZvbnQsIGZs
b2F0IHNpemUsIGJvb2wgYm9sZCwgYm9vbCBvYmxpcXVlLCBjb25zdCBGb250Q3VzdG9tUGxhdGZv
cm1EYXRhKiBjdXN0b21QbGF0Zm9ybURhdGEpCi0gICAgOiBGb250UGxhdGZvcm1EYXRhKHNpemUs
IGJvbGQsIG9ibGlxdWUsIEZvbnRPcmllbnRhdGlvbjo6SG9yaXpvbnRhbCwgRm9udFdpZHRoVmFy
aWFudDo6UmVndWxhcldpZHRoLCBUZXh0UmVuZGVyaW5nTW9kZTo6QXV0b1RleHRSZW5kZXJpbmcs
IGN1c3RvbVBsYXRmb3JtRGF0YSkKK0ZvbnRQbGF0Zm9ybURhdGE6OkZvbnRQbGF0Zm9ybURhdGEo
R0RJT2JqZWN0PEhGT05UPiBmb250LCBmbG9hdCBzaXplLCBib29sIGJvbGQsIGJvb2wgb2JsaXF1
ZSwgY29uc3QgQ3JlYXRpb25EYXRhKiBjcmVhdGlvbkRhdGEpCisgICAgOiBGb250UGxhdGZvcm1E
YXRhKHNpemUsIGJvbGQsIG9ibGlxdWUsIEZvbnRPcmllbnRhdGlvbjo6SG9yaXpvbnRhbCwgRm9u
dFdpZHRoVmFyaWFudDo6UmVndWxhcldpZHRoLCBUZXh0UmVuZGVyaW5nTW9kZTo6QXV0b1RleHRS
ZW5kZXJpbmcsIGNyZWF0aW9uRGF0YSkKIHsKICAgICBtX2ZvbnQgPSBTaGFyZWRHRElPYmplY3Q8
SEZPTlQ+OjpjcmVhdGUoV1RGTW92ZShmb250KSk7CiAKQEAgLTczLDIyICs3Miw0IEBAIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSh1
aW50MzJfdCB0YWJsZSkgY29uCiAgICAgcmV0dXJuIGJ1ZmZlcjsKIH0KIAotRm9udFBsYXRmb3Jt
RGF0YSBGb250UGxhdGZvcm1EYXRhOjpjcmVhdGUoY29uc3QgQXR0cmlidXRlcyYgZGF0YSwgY29u
c3QgRm9udEN1c3RvbVBsYXRmb3JtRGF0YSogY3VzdG9tKQotewotICAgIExPR0ZPTlQgbG9nRm9u
dCA9IGRhdGEubV9mb250OwotICAgIGlmIChjdXN0b20pCi0gICAgICAgIHdjc2NweV9zKGxvZ0Zv
bnQubGZGYWNlTmFtZSwgTEZfRkFDRVNJWkUsIGN1c3RvbS0+bmFtZS53aWRlQ2hhcmFjdGVycygp
LmRhdGEoKSk7Ci0KLSAgICBhdXRvIGdkaUZvbnQgPSBhZG9wdEdESU9iamVjdChDcmVhdGVGb250
SW5kaXJlY3QoJmxvZ0ZvbnQpKTsKLSAgICByZXR1cm4gRm9udFBsYXRmb3JtRGF0YShXVEZNb3Zl
KGdkaUZvbnQpLCBkYXRhLm1fc2l6ZSwgZGF0YS5tX3N5bnRoZXRpY0JvbGQsIGRhdGEubV9zeW50
aGV0aWNPYmxpcXVlLCBjdXN0b20pOwotfQotCi1Gb250UGxhdGZvcm1EYXRhOjpBdHRyaWJ1dGVz
IEZvbnRQbGF0Zm9ybURhdGE6OmF0dHJpYnV0ZXMoKSBjb25zdAotewotICAgIEF0dHJpYnV0ZXMg
cmVzdWx0KG1fc2l6ZSwgbV9vcmllbnRhdGlvbiwgbV93aWR0aFZhcmlhbnQsIG1fdGV4dFJlbmRl
cmluZ01vZGUsIG1fc3ludGhldGljQm9sZCwgbV9zeW50aGV0aWNPYmxpcXVlKTsKLQotICAgIEdl
dE9iamVjdChoZm9udCgpLCBzaXplb2YoTE9HRk9OVCksICZyZXN1bHQubV9mb250KTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJG
b250TG9hZFJlcXVlc3QuaAppbmRleCA1YmY3OTAyYmRhZDMuLjViN2NkYWZkNWY1ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oCkBAIC03Nyw3
ICs3Nyw3IEBAIHByaXZhdGU6CiAKICAgICBXZWFrUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ+
IG1fY29udGV4dDsKICAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fZGF0YTsKLSAgICBSZWZQdHI8
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhOworICAgIHN0
ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBtX2ZvbnRDdXN0b21QbGF0Zm9y
bURhdGE7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUXVhbGlmaWVkUmVzb3VyY2VIZWFwLmggYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUXVhbGlmaWVkUmVzb3VyY2VIZWFwLmgKaW5k
ZXggNTFiY2Y2ZjkyNjBiLi43MTA3YzBlYzQ3ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9RdWFsaWZpZWRSZXNvdXJjZUhlYXAuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUXVhbGlmaWVkUmVzb3VyY2VIZWFwLmgKQEAgLTMw
LDcgKzMwLDYgQEAKICNpbmNsdWRlICJRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0RlY29tcG9zZWRHbHlwaHMuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0ZvbnQuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0dyYWRpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbWFn
ZUJ1ZmZlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTmF0aXZlSW1hZ2UuaD4KQEAgLTcyLDExICs3
MSw2IEBAIHB1YmxpYzoKICAgICAgICAgYWRkKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwg
V1RGTW92ZShncmFkaWVudCksIG1fZ3JhZGllbnRDb3VudCk7CiAgICAgfQogCi0gICAgdm9pZCBh
ZGQoUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllciwgUmVmPFdlYkNvcmU6OkZvbnRDdXN0b21QbGF0Zm9ybURhdGE+JiYgY3VzdG9t
UGxhdGZvcm1EYXRhKQotICAgIHsKLSAgICAgICAgYWRkKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllciwgV1RGTW92ZShjdXN0b21QbGF0Zm9ybURhdGEpLCBtX2N1c3RvbVBsYXRmb3JtRGF0YUNv
dW50KTsKLSAgICB9Ci0KICAgICBXZWJDb3JlOjpJbWFnZUJ1ZmZlciogZ2V0SW1hZ2VCdWZmZXIo
UXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcikgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBnZXQ8V2ViQ29yZTo6SW1hZ2VC
dWZmZXI+KHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CkBAIC0xMTYsMTEgKzExMCw2IEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGdldDxXZWJDb3JlOjpHcmFkaWVudD4ocmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB9CiAKLSAgICBXZWJDb3JlOjpGb250Q3VzdG9tUGxh
dGZvcm1EYXRhKiBnZXRGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFF1YWxpZmllZFJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpIGNvbnN0Ci0gICAg
ewotICAgICAgICByZXR1cm4gZ2V0PFdlYkNvcmU6OkZvbnRDdXN0b21QbGF0Zm9ybURhdGE+KHJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7Ci0gICAgfQotCiAgICAgYm9vbCByZW1vdmVJbWFn
ZUJ1ZmZlcihRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyKQogICAgIHsKICAgICAgICAgcmV0dXJuIHJlbW92ZTxXZWJDb3JlOjpJ
bWFnZUJ1ZmZlcj4ocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBtX2ltYWdlQnVmZmVyQ291
bnQpOwpAQCAtMTQ2LDExICsxMzUsNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiByZW1vdmU8
V2ViQ29yZTo6R3JhZGllbnQ+KHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgbV9ncmFkaWVu
dENvdW50KTsKICAgICB9CiAKLSAgICBib29sIHJlbW92ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEo
UXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcikKLSAgICB7Ci0gICAgICAgIHJldHVybiByZW1vdmU8V2ViQ29yZTo6Rm9udEN1c3Rv
bVBsYXRmb3JtRGF0YT4ocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBtX2N1c3RvbVBsYXRm
b3JtRGF0YUNvdW50KTsKLSAgICB9Ci0KICAgICB2b2lkIHJlbGVhc2VBbGxSZXNvdXJjZXMoKQog
ICAgIHsKICAgICAgICAgY2hlY2tJbnZhcmlhbnRzKCk7CkBAIC0xNjIsMTUgKzE0NiwxMyBAQCBw
dWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8V2Vi
Q29yZTo6TmF0aXZlSW1hZ2U+PihyZXNvdXJjZS52YWx1ZSkKICAgICAgICAgICAgICAgICB8fCBz
dGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxXZWJDb3JlOjpGb250Pj4ocmVzb3VyY2UudmFsdWUp
CiAgICAgICAgICAgICAgICAgfHwgc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8V2ViQ29yZTo6
RGVjb21wb3NlZEdseXBocz4+KHJlc291cmNlLnZhbHVlKQotICAgICAgICAgICAgICAgIHx8IHN0
ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFdlYkNvcmU6OkdyYWRpZW50Pj4ocmVzb3VyY2UudmFs
dWUpCi0gICAgICAgICAgICAgICAgfHwgc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8V2ViQ29y
ZTo6Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4+KHJlc291cmNlLnZhbHVlKTsKKyAgICAgICAgICAg
ICAgICB8fCBzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxXZWJDb3JlOjpHcmFkaWVudD4+KHJl
c291cmNlLnZhbHVlKTsKICAgICAgICAgfSk7CiAKICAgICAgICAgbV9uYXRpdmVJbWFnZUNvdW50
ID0gMDsKICAgICAgICAgbV9mb250Q291bnQgPSAwOwogICAgICAgICBtX2RlY29tcG9zZWRHbHlw
aHNDb3VudCA9IDA7CiAgICAgICAgIG1fZ3JhZGllbnRDb3VudCA9IDA7Ci0gICAgICAgIG1fY3Vz
dG9tUGxhdGZvcm1EYXRhQ291bnQgPSAwOwogCiAgICAgICAgIGNoZWNrSW52YXJpYW50cygpOwog
ICAgIH0KQEAgLTIyOSw3ICsyMTEsNiBAQCBwcml2YXRlOgogICAgICAgICB1bnNpZ25lZCBpbWFn
ZUJ1ZmZlckNvdW50ID0gMDsKICAgICAgICAgdW5zaWduZWQgbmF0aXZlSW1hZ2VDb3VudCA9IDA7
CiAgICAgICAgIHVuc2lnbmVkIGZvbnRDb3VudCA9IDA7Ci0gICAgICAgIHVuc2lnbmVkIGN1c3Rv
bVBsYXRmb3JtRGF0YUNvdW50ID0gMDsKICAgICAgICAgdW5zaWduZWQgZGVjb21wb3NlZEdseXBo
c0NvdW50ID0gMDsKICAgICAgICAgdW5zaWduZWQgZ3JhZGllbnRDb3VudCA9IDA7CiAgICAgICAg
IGZvciAoY29uc3QgYXV0byYgcGFpciA6IG1fcmVzb3VyY2VzKSB7CkBAIC0yNDEsOCArMjIyLDYg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICArK25hdGl2ZUltYWdlQ291bnQ7CiAgICAgICAg
ICAgICB9LCBbJl0gKGNvbnN0IFJlZjxXZWJDb3JlOjpGb250PiYpIHsKICAgICAgICAgICAgICAg
ICArK2ZvbnRDb3VudDsKLSAgICAgICAgICAgIH0sIFsmXSAoY29uc3QgUmVmPFdlYkNvcmU6OkZv
bnRDdXN0b21QbGF0Zm9ybURhdGE+JikgewotICAgICAgICAgICAgICAgICsrY3VzdG9tUGxhdGZv
cm1EYXRhQ291bnQ7CiAgICAgICAgICAgICB9LCBbJl0gKGNvbnN0IFJlZjxXZWJDb3JlOjpEZWNv
bXBvc2VkR2x5cGhzPiYpIHsKICAgICAgICAgICAgICAgICArK2RlY29tcG9zZWRHbHlwaHNDb3Vu
dDsKICAgICAgICAgICAgIH0sIFsmXSAoY29uc3QgUmVmPFdlYkNvcmU6OkdyYWRpZW50PiYpIHsK
QEAgLTI1MiwxMCArMjMxLDkgQEAgcHJpdmF0ZToKICAgICAgICAgQVNTRVJUKGltYWdlQnVmZmVy
Q291bnQgPT0gbV9pbWFnZUJ1ZmZlckNvdW50KTsKICAgICAgICAgQVNTRVJUKG5hdGl2ZUltYWdl
Q291bnQgPT0gbV9uYXRpdmVJbWFnZUNvdW50KTsKICAgICAgICAgQVNTRVJUKGZvbnRDb3VudCA9
PSBtX2ZvbnRDb3VudCk7Ci0gICAgICAgIEFTU0VSVChjdXN0b21QbGF0Zm9ybURhdGFDb3VudCA9
PSBtX2N1c3RvbVBsYXRmb3JtRGF0YUNvdW50KTsKICAgICAgICAgQVNTRVJUKGRlY29tcG9zZWRH
bHlwaHNDb3VudCA9PSBtX2RlY29tcG9zZWRHbHlwaHNDb3VudCk7CiAgICAgICAgIEFTU0VSVChn
cmFkaWVudENvdW50ID09IG1fZ3JhZGllbnRDb3VudCk7Ci0gICAgICAgIEFTU0VSVChtX3Jlc291
cmNlcy5zaXplKCkgPT0gbV9pbWFnZUJ1ZmZlckNvdW50ICsgbV9uYXRpdmVJbWFnZUNvdW50ICsg
bV9mb250Q291bnQgKyBtX2RlY29tcG9zZWRHbHlwaHNDb3VudCArIG1fY3VzdG9tUGxhdGZvcm1E
YXRhQ291bnQgKyBtX2dyYWRpZW50Q291bnQpOworICAgICAgICBBU1NFUlQobV9yZXNvdXJjZXMu
c2l6ZSgpID09IG1faW1hZ2VCdWZmZXJDb3VudCArIG1fbmF0aXZlSW1hZ2VDb3VudCArIG1fZm9u
dENvdW50ICsgbV9kZWNvbXBvc2VkR2x5cGhzQ291bnQgKyBtX2dyYWRpZW50Q291bnQpOwogI2Vu
ZGlmCiAgICAgfQogCkBAIC0yNjUsOCArMjQzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgUmVmPFdl
YkNvcmU6Ok5hdGl2ZUltYWdlPiwKICAgICAgICAgUmVmPFdlYkNvcmU6OkZvbnQ+LAogICAgICAg
ICBSZWY8V2ViQ29yZTo6RGVjb21wb3NlZEdseXBocz4sCi0gICAgICAgIFJlZjxXZWJDb3JlOjpH
cmFkaWVudD4sCi0gICAgICAgIFJlZjxXZWJDb3JlOjpGb250Q3VzdG9tUGxhdGZvcm1EYXRhPgor
ICAgICAgICBSZWY8V2ViQ29yZTo6R3JhZGllbnQ+CiAgICAgPjsKICAgICBIYXNoTWFwPFF1YWxp
ZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgUmVzb3VyY2U+IG1fcmVzb3VyY2VzOwog
ICAgIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIG1fd2ViUHJvY2Vzc0lkZW50aWZpZXI7CkBA
IC0yNzUsNyArMjUyLDYgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX2ZvbnRDb3VudCB7IDAg
fTsKICAgICB1bnNpZ25lZCBtX2RlY29tcG9zZWRHbHlwaHNDb3VudCB7IDAgfTsKICAgICB1bnNp
Z25lZCBtX2dyYWRpZW50Q291bnQgeyAwIH07Ci0gICAgdW5zaWduZWQgbV9jdXN0b21QbGF0Zm9y
bURhdGFDb3VudCB7IDAgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tl
bmQuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQuY3BwCmluZGV4IDU0YzZlMDdiZTFhMi4uNjM1MTdlMzIzNTgxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRl
cmluZ0JhY2tlbmQuY3BwCkBAIC0zNDUsMjIgKzM0NSwxMiBAQCB2b2lkIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQ6OmNhY2hlTmF0aXZlSW1hZ2VXaXRoUXVhbGlmaWVkSWRlbnRpZmllcihjb25zdCBT
aGFyZQogICAgIG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5jYWNoZU5hdGl2ZUltYWdlKGltYWdlLnJl
bGVhc2VOb25OdWxsKCksIG5hdGl2ZUltYWdlUmVzb3VyY2VJZGVudGlmaWVyKTsKIH0KIAotdm9p
ZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjYWNoZUZvbnQoY29uc3QgV2ViQ29yZTo6Rm9udDo6
QXR0cmlidXRlcyYgZm9udEF0dHJpYnV0ZXMsIFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6OkF0
dHJpYnV0ZXMgcGxhdGZvcm1EYXRhLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcj4gcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQordm9pZCBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kOjpjYWNoZUZvbnQoUmVmPEZvbnQ+JiYgZm9udCkKIHsKLSAgICBG
b250Q3VzdG9tUGxhdGZvcm1EYXRhKiBjdXN0b21QbGF0Zm9ybURhdGEgPSBudWxscHRyOwotICAg
IGlmIChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpIHsKLSAgICAgICAgUXVhbGlmaWVkUmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGlkZW50ID0geyAqcmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyLCBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPndlYlByb2Nlc3NJZGVudGlmaWVy
KCkgfTsKLSAgICAgICAgY3VzdG9tUGxhdGZvcm1EYXRhID0gbV9yZW1vdGVSZXNvdXJjZUNhY2hl
LmNhY2hlZEZvbnRDdXN0b21QbGF0Zm9ybURhdGEoaWRlbnQpOwotICAgICAgICBNRVNTQUdFX0NI
RUNLKGN1c3RvbVBsYXRmb3JtRGF0YSwgIkNhY2hlRm9udCB3aXRob3V0IGNhY2hpbmcgY3VzdG9t
IGRhdGEiKTsKLSAgICB9Ci0KLSAgICBGb250UGxhdGZvcm1EYXRhIHBsYXRmb3JtID0gRm9udFBs
YXRmb3JtRGF0YTo6Y3JlYXRlKHBsYXRmb3JtRGF0YSwgY3VzdG9tUGxhdGZvcm1EYXRhKTsKLQot
ICAgIFJlZjxGb250PiBmb250ID0gRm9udDo6Y3JlYXRlKHBsYXRmb3JtLCBmb250QXR0cmlidXRl
cy5vcmlnaW4sIGZvbnRBdHRyaWJ1dGVzLmlzSW50ZXJzdGl0aWFsLCBmb250QXR0cmlidXRlcy52
aXNpYmlsaXR5LCBmb250QXR0cmlidXRlcy5pc1RleHRPcmllbnRhdGlvbkZhbGxiYWNrLCBmb250
QXR0cmlidXRlcy5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwotCiAgICAgLy8gSW1tZWRp
YXRlbHkgdHVybiB0aGUgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyICh3aGljaCBpcyBlcnJv
ci1wcm9uZSkgdG8gYSBRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsCiAgICAg
Ly8gYW5kIHVzZSBhIGhlbHBlciBmdW5jdGlvbiB0byBtYWtlIHN1cmUgdGhhdCBkb24ndCBhY2Np
ZGVudGFsbHkgdXNlIHRoZSBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgKGJlY2F1c2UgdGhl
IGhlbHBlciBmdW5jdGlvbiBjYW4ndCBzZWUgaXQpLgotICAgIGNhY2hlRm9udFdpdGhRdWFsaWZp
ZWRJZGVudGlmaWVyKFdURk1vdmUoZm9udCksIHsgZm9udC0+cmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyKCksIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+d2ViUHJvY2Vzc0lkZW50aWZp
ZXIoKSB9KTsKKyAgICBhdXRvIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciA9IGZvbnQtPnJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpOworICAgIGNhY2hlRm9udFdpdGhRdWFsaWZpZWRJ
ZGVudGlmaWVyKFdURk1vdmUoZm9udCksIHsgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBt
X2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPndlYlByb2Nlc3NJZGVudGlmaWVyKCkgfSk7CiB9
CiAKIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y2FjaGVGb250V2l0aFF1YWxpZmllZElk
ZW50aWZpZXIoUmVmPEZvbnQ+JiYgZm9udCwgUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyIGZvbnRSZXNvdXJjZUlkZW50aWZpZXIpCkBAIC0zNjksMjAgKzM1OSw2IEBAIHZvaWQg
UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y2FjaGVGb250V2l0aFF1YWxpZmllZElkZW50aWZpZXIo
UmVmPEZvbnQ+JiYgZm9udCwKICAgICBtX3JlbW90ZVJlc291cmNlQ2FjaGUuY2FjaGVGb250KFdU
Rk1vdmUoZm9udCksIGZvbnRSZXNvdXJjZUlkZW50aWZpZXIpOwogfQogCi12b2lkIFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmQ6OmNhY2hlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShSZWY8Rm9udEN1c3Rv
bVBsYXRmb3JtRGF0YT4mJiBjdXN0b21QbGF0Zm9ybURhdGEpCi17Ci0gICAgLy8gSW1tZWRpYXRl
bHkgdHVybiB0aGUgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyICh3aGljaCBpcyBlcnJvci1w
cm9uZSkgdG8gYSBRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsCi0gICAgLy8g
YW5kIHVzZSBhIGhlbHBlciBmdW5jdGlvbiB0byBtYWtlIHN1cmUgdGhhdCBkb24ndCBhY2NpZGVu
dGFsbHkgdXNlIHRoZSBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgKGJlY2F1c2UgdGhlIGhl
bHBlciBmdW5jdGlvbiBjYW4ndCBzZWUgaXQpLgotICAgIGF1dG8gcmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyID0gY3VzdG9tUGxhdGZvcm1EYXRhLT5tX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllcjsKLSAgICBjYWNoZUZvbnRDdXN0b21QbGF0Zm9ybURhdGFXaXRoUXVhbGlmaWVkSWRlbnRp
ZmllcihXVEZNb3ZlKGN1c3RvbVBsYXRmb3JtRGF0YSksIHsgcmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyLCBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPndlYlByb2Nlc3NJZGVudGlmaWVy
KCkgfSk7Ci19Ci0KLXZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y2FjaGVGb250Q3VzdG9t
UGxhdGZvcm1EYXRhV2l0aFF1YWxpZmllZElkZW50aWZpZXIoUmVmPEZvbnRDdXN0b21QbGF0Zm9y
bURhdGE+JiYgY3VzdG9tUGxhdGZvcm1EYXRhLCBRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIgZm9udFJlc291cmNlSWRlbnRpZmllcikKLXsKLSAgICBBU1NFUlQoIVJ1bkxvb3A6
OmlzTWFpbigpKTsKLSAgICBtX3JlbW90ZVJlc291cmNlQ2FjaGUuY2FjaGVGb250Q3VzdG9tUGxh
dGZvcm1EYXRhKFdURk1vdmUoY3VzdG9tUGxhdGZvcm1EYXRhKSwgZm9udFJlc291cmNlSWRlbnRp
Zmllcik7Ci19Ci0KIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y2FjaGVEZWNvbXBvc2Vk
R2x5cGhzKFJlZjxEZWNvbXBvc2VkR2x5cGhzPiYmIGRlY29tcG9zZWRHbHlwaHMpCiB7CiAgICAg
Ly8gSW1tZWRpYXRlbHkgdHVybiB0aGUgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyICh3aGlj
aCBpcyBlcnJvci1wcm9uZSkgdG8gYSBRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmQuaAppbmRleCA1MDY2YjBiNmJkYmMuLmY5NDEzOTI4NTk3NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRl
cmluZ0JhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlUmVuZGVyaW5nQmFja2VuZC5oCkBAIC0xMjMsOCArMTIzLDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGNhY2hlTmF0aXZlSW1hZ2UoY29uc3QgU2hhcmVhYmxlQml0bWFwSGFuZGxlJiwgV2ViQ29y
ZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB2b2lkIGNhY2hlRGVjb21wb3Nl
ZEdseXBocyhSZWY8V2ViQ29yZTo6RGVjb21wb3NlZEdseXBocz4mJik7CiAgICAgdm9pZCBjYWNo
ZUdyYWRpZW50KFJlZjxXZWJDb3JlOjpHcmFkaWVudD4mJiwgV2ViQ29yZTo6UmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyKTsKLSAgICB2b2lkIGNhY2hlRm9udChjb25zdCBXZWJDb3JlOjpGb250
OjpBdHRyaWJ1dGVzJiwgV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6QXR0cmlidXRlcywgc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+KTsKLSAgICB2
b2lkIGNhY2hlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShSZWY8V2ViQ29yZTo6Rm9udEN1c3RvbVBs
YXRmb3JtRGF0YT4mJik7CisgICAgdm9pZCBjYWNoZUZvbnQoUmVmPFdlYkNvcmU6OkZvbnQ+JiYp
OwogICAgIHZvaWQgcmVsZWFzZUFsbFJlc291cmNlcygpOwogICAgIHZvaWQgcmVsZWFzZVJlbmRl
cmluZ1Jlc291cmNlKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAg
dm9pZCBmaW5hbGl6ZVJlbmRlcmluZ1VwZGF0ZShSZW5kZXJpbmdVcGRhdGVJRCk7CkBAIC0xNDEs
NyArMTQwLDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNhY2hlR3JhZGllbnRXaXRoUXVhbGlmaWVk
SWRlbnRpZmllcihSZWY8V2ViQ29yZTo6R3JhZGllbnQ+JiYsIFF1YWxpZmllZFJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcik7CiAgICAgdm9pZCByZWxlYXNlUmVuZGVyaW5nUmVzb3VyY2VXaXRo
UXVhbGlmaWVkSWRlbnRpZmllcihRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIp
OwogICAgIHZvaWQgY2FjaGVGb250V2l0aFF1YWxpZmllZElkZW50aWZpZXIoUmVmPFdlYkNvcmU6
OkZvbnQ+JiYsIFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7Ci0gICAgdm9p
ZCBjYWNoZUZvbnRDdXN0b21QbGF0Zm9ybURhdGFXaXRoUXVhbGlmaWVkSWRlbnRpZmllcihSZWY8
V2ViQ29yZTo6Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4mJiwgUXVhbGlmaWVkUmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyKTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZvaWQgcHJlcGFy
ZUxheWVyQnVmZmVyc0ZvckRpc3BsYXkoY29uc3QgUHJlcGFyZUJhY2tpbmdTdG9yZUJ1ZmZlcnNJ
bnB1dERhdGEmLCBQcmVwYXJlQmFja2luZ1N0b3JlQnVmZmVyc091dHB1dERhdGEmKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMuaW4KaW5kZXggNTIwMDU4YTVlNzU2Li40NzMx
YTFkMjM2NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluCkBAIC0z
MSw4ICszMSw3IEBAIG1lc3NhZ2VzIC0+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQgTm90UmVmQ291
bnRlZCBTdHJlYW0gewogICAgIEdldFNoYXJlYWJsZUJpdG1hcEZvckltYWdlQnVmZmVyKFdlYkNv
cmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBpbWFnZUJ1ZmZlciwgZW51bTpib29sIFdl
YkNvcmU6OlByZXNlcnZlUmVzb2x1dGlvbiBwcmVzZXJ2ZVJlc29sdXRpb24pIC0+IChXZWJLaXQ6
OlNoYXJlYWJsZUJpdG1hcEhhbmRsZSBoYW5kbGUpIFN5bmNocm9ub3VzIE5vdFN0cmVhbUVuY29k
YWJsZVJlcGx5CiAgICAgR2V0RmlsdGVyZWRJbWFnZUZvckltYWdlQnVmZmVyKFdlYkNvcmU6OlJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBpbWFnZUJ1ZmZlciwgUmVmPFdlYkNvcmU6OkZpbHRl
cj4gZmlsdGVyKSAtPiAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXBIYW5kbGUgaGFuZGxlKSBTeW5j
aHJvbm91cyBOb3RTdHJlYW1FbmNvZGFibGVSZXBseQogICAgIENhY2hlTmF0aXZlSW1hZ2UoV2Vi
S2l0OjpTaGFyZWFibGVCaXRtYXBIYW5kbGUgaGFuZGxlLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSBOb3RTdHJlYW1FbmNv
ZGFibGUKLSAgICBDYWNoZUZvbnQoV2ViQ29yZTo6Rm9udDo6QXR0cmlidXRlcyBkYXRhLCBXZWJD
b3JlOjpGb250UGxhdGZvcm1EYXRhOjpBdHRyaWJ1dGVzIHBsYXRmb3JtRGF0YSwgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IHJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcikgTm90U3RyZWFtRW5jb2RhYmxlCi0gICAgQ2FjaGVGb250Q3VzdG9tUGxh
dGZvcm1EYXRhKFJlZjxXZWJDb3JlOjpGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjdXN0b21QbGF0
Zm9ybURhdGEpIE5vdFN0cmVhbUVuY29kYWJsZQorICAgIENhY2hlRm9udChSZWY8V2ViQ29yZTo6
Rm9udD4gZm9udCkgTm90U3RyZWFtRW5jb2RhYmxlCiAgICAgQ2FjaGVEZWNvbXBvc2VkR2x5cGhz
KFJlZjxXZWJDb3JlOjpEZWNvbXBvc2VkR2x5cGhzPiBkZWNvbXBvc2VkR2x5cGhzKSBOb3RTdHJl
YW1FbmNvZGFibGUKICAgICBDYWNoZUdyYWRpZW50KFJlZjxXZWJDb3JlOjpHcmFkaWVudD4gZ3Jh
ZGllbnQsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIpIE5vdFN0cmVhbUVuY29kYWJsZQogICAgIFJlbGVhc2VBbGxSZXNvdXJj
ZXMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZVJlc291cmNlQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZVJlc291cmNlQ2FjaGUuY3BwCmluZGV4IGNjM2RlNmYwNTdhYS4uZGQyYzUzZDYwZTllIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3Vy
Y2VDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZVJlc291cmNlQ2FjaGUuY3BwCkBAIC05NiwxNyArOTYsNiBAQCBGb250KiBSZW1vdGVSZXNvdXJj
ZUNhY2hlOjpjYWNoZWRGb250KFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBy
ZW5kZQogICAgIHJldHVybiBtX3Jlc291cmNlSGVhcC5nZXRGb250KHJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcik7CiB9CiAKLXZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZTo6Y2FjaGVGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhKFJlZjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiYmIGZvbnQsIFF1YWxp
ZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIpCi17Ci0gICAgQVNTRVJUKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5vYmplY3QoKSA9
PSBmb250LT5tX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7Ci0gICAgbV9yZXNvdXJjZUhl
YXAuYWRkKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgV1RGTW92ZShmb250KSk7Ci19Ci0K
LUZvbnRDdXN0b21QbGF0Zm9ybURhdGEqIFJlbW90ZVJlc291cmNlQ2FjaGU6OmNhY2hlZEZvbnRD
dXN0b21QbGF0Zm9ybURhdGEoUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgY29uc3QKLXsKLSAgICByZXR1cm4gbV9yZXNvdXJj
ZUhlYXAuZ2V0Rm9udEN1c3RvbVBsYXRmb3JtRGF0YShyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIpOwotfQotCiBEZWNvbXBvc2VkR2x5cGhzKiBSZW1vdGVSZXNvdXJjZUNhY2hlOjpjYWNoZWRE
ZWNvbXBvc2VkR2x5cGhzKFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcmVzb3VyY2VI
ZWFwLmdldERlY29tcG9zZWRHbHlwaHMocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKQEAg
LTEyOCw4ICsxMTcsNyBAQCBib29sIFJlbW90ZVJlc291cmNlQ2FjaGU6OnJlbGVhc2VSZW5kZXJp
bmdSZXNvdXJjZShRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZQogICAgICAgICB8fCBtX3Jl
c291cmNlSGVhcC5yZW1vdmVOYXRpdmVJbWFnZShyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIp
CiAgICAgICAgIHx8IG1fcmVzb3VyY2VIZWFwLnJlbW92ZUZvbnQocmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyKQogICAgICAgICB8fCBtX3Jlc291cmNlSGVhcC5yZW1vdmVEZWNvbXBvc2VkR2x5
cGhzKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKLSAgICAgICAgfHwgbV9yZXNvdXJjZUhl
YXAucmVtb3ZlR3JhZGllbnQocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQotICAgICAgICB8
fCBtX3Jlc291cmNlSGVhcC5yZW1vdmVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKHJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcikpCisgICAgICAgIHx8IG1fcmVzb3VyY2VIZWFwLnJlbW92ZUdyYWRp
ZW50KHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikpCiAgICAgICAgIHJldHVybiB0cnVlOwog
CiAgICAgLy8gQ2FjaGluZyB0aGUgcmVtb3RlIHJlc291cmNlIHNob3VsZCBoYXZlIGhhcHBlbmVk
IGJlZm9yZSByZWxlYXNpbmcgaXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuaAppbmRleCBiMzUxZDQxYmY1ODguLjYx
ZjZjYTM5YWU5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZVJlc291cmNlQ2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5oCkBAIC00NSw3ICs0NSw2IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGNhY2hlRm9udChSZWY8V2ViQ29yZTo6Rm9udD4mJiwgUXVhbGlmaWVkUmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB2b2lkIGNhY2hlRGVjb21wb3NlZEdseXBocyhSZWY8
V2ViQ29yZTo6RGVjb21wb3NlZEdseXBocz4mJiwgUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyKTsKICAgICB2b2lkIGNhY2hlR3JhZGllbnQoUmVmPFdlYkNvcmU6OkdyYWRpZW50
PiYmLCBRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwotICAgIHZvaWQgY2Fj
aGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFJlZjxXZWJDb3JlOjpGb250Q3VzdG9tUGxhdGZvcm1E
YXRhPiYmLCBRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogCiAgICAgUmVt
b3RlSW1hZ2VCdWZmZXIqIGNhY2hlZEltYWdlQnVmZmVyKFF1YWxpZmllZFJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcikgY29uc3Q7CiAgICAgUmVmUHRyPFJlbW90ZUltYWdlQnVmZmVyPiB0YWtl
SW1hZ2VCdWZmZXIoUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKQEAgLTUz
LDcgKzUyLDYgQEAgcHVibGljOgogICAgIFdlYkNvcmU6OkZvbnQqIGNhY2hlZEZvbnQoUXVhbGlm
aWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSBjb25zdDsKICAgICBXZWJDb3JlOjpEZWNv
bXBvc2VkR2x5cGhzKiBjYWNoZWREZWNvbXBvc2VkR2x5cGhzKFF1YWxpZmllZFJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcikgY29uc3Q7CiAgICAgV2ViQ29yZTo6R3JhZGllbnQqIGNhY2hlZEdy
YWRpZW50KFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgY29uc3Q7Ci0gICAg
V2ViQ29yZTo6Rm9udEN1c3RvbVBsYXRmb3JtRGF0YSogY2FjaGVkRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YShRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpIGNvbnN0OwogCiAgICAg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTb3VyY2VJbWFnZT4gY2FjaGVkU291cmNlSW1hZ2UoUXVh
bGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0g
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5t
bQppbmRleCBmZTJhNGQzNDcyNGMuLmI0N2YxYWM1NTY2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0KKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0KQEAg
LTU5NCw3ICs1OTQsOCBAQCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE+
IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Rm9udD46OmRlY29kZVBsYQogICAgICAgICBhdXRvIGZv
bnREZXNjcmlwdG9yID0gYWRvcHRDRihDVEZvbnREZXNjcmlwdG9yQ3JlYXRlQ29weVdpdGhBdHRy
aWJ1dGVzKGJhc2VGb250RGVzY3JpcHRvciwgYXR0cmlidXRlcy0+Z2V0KCkpKTsKICAgICAgICAg
YXV0byBjdEZvbnQgPSBhZG9wdENGKENURm9udENyZWF0ZVdpdGhGb250RGVzY3JpcHRvcihmb250
RGVzY3JpcHRvci5nZXQoKSwgKnNpemUsIG51bGxwdHIpKTsKIAotICAgICAgICByZXR1cm4gV2Vi
Q29yZTo6Rm9udFBsYXRmb3JtRGF0YShjdEZvbnQuZ2V0KCksICpzaXplLCAqc3ludGhldGljQm9s
ZCwgKnN5bnRoZXRpY09ibGlxdWUsICpvcmllbnRhdGlvbiwgKndpZHRoVmFyaWFudCwgKnRleHRS
ZW5kZXJpbmdNb2RlLCBmb250Q3VzdG9tUGxhdGZvcm1EYXRhLmdldCgpKTsKKyAgICAgICAgYXV0
byBjcmVhdGlvbkRhdGEgPSBXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpDcmVhdGlvbkRhdGEg
eyBmb250RmFjZURhdGEsICppdGVtSW5Db2xsZWN0aW9uIH07CisgICAgICAgIHJldHVybiBXZWJD
b3JlOjpGb250UGxhdGZvcm1EYXRhKGN0Rm9udC5nZXQoKSwgKnNpemUsICpzeW50aGV0aWNCb2xk
LCAqc3ludGhldGljT2JsaXF1ZSwgKm9yaWVudGF0aW9uLCAqd2lkdGhWYXJpYW50LCAqdGV4dFJl
bmRlcmluZ01vZGUsICZjcmVhdGlvbkRhdGEpOwogICAgIH0KIAogICAgIHN0ZDo6b3B0aW9uYWw8
Q1RGb250RGVzY3JpcHRvck9wdGlvbnM+IG9wdGlvbnM7CkBAIC02MTksODggKzYyMCw2IEBAIHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YT4gQXJndW1lbnRDb2RlcjxXZWJD
b3JlOjpGb250Pjo6ZGVjb2RlUGxhCiAgICAgcmV0dXJuIFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURh
dGEoY3RGb250LmdldCgpLCAqc2l6ZSwgKnN5bnRoZXRpY0JvbGQsICpzeW50aGV0aWNPYmxpcXVl
LCAqb3JpZW50YXRpb24sICp3aWR0aFZhcmlhbnQsICp0ZXh0UmVuZGVyaW5nTW9kZSk7CiB9CiAK
LXZvaWQgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpGb250Q3VzdG9tUGxhdGZvcm1EYXRhPjo6ZW5j
b2RlUGxhdGZvcm1EYXRhKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6OkZvbnRDdXN0
b21QbGF0Zm9ybURhdGEmIGN1c3RvbVBsYXRmb3JtRGF0YSkKLXsKLSAgICBXZWJLaXQ6OlNoYXJl
ZE1lbW9yeTo6SGFuZGxlIGhhbmRsZTsKLSAgICB7Ci0gICAgICAgIGF1dG8gc2hhcmVkTWVtb3J5
QnVmZmVyID0gV2ViS2l0OjpTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIoY3VzdG9tUGxhdGZvcm1E
YXRhLmNyZWF0aW9uRGF0YS5mb250RmFjZURhdGEpOwotICAgICAgICBpZiAoYXV0byBtZW1vcnlI
YW5kbGUgPSBzaGFyZWRNZW1vcnlCdWZmZXItPmNyZWF0ZUhhbmRsZShXZWJLaXQ6OlNoYXJlZE1l
bW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpKQotICAgICAgICAgICAgaGFuZGxlID0gV1RGTW92
ZSgqbWVtb3J5SGFuZGxlKTsKLSAgICB9Ci0gICAgZW5jb2RlciA8PCBjdXN0b21QbGF0Zm9ybURh
dGEuY3JlYXRpb25EYXRhLmZvbnRGYWNlRGF0YS0+c2l6ZSgpOwotICAgIGVuY29kZXIgPDwgV1RG
TW92ZShoYW5kbGUpOwotICAgIGVuY29kZXIgPDwgY3VzdG9tUGxhdGZvcm1EYXRhLmNyZWF0aW9u
RGF0YS5pdGVtSW5Db2xsZWN0aW9uOwotfQotCi1zdGQ6Om9wdGlvbmFsPFJlZjxXZWJDb3JlOjpG
b250Q3VzdG9tUGxhdGZvcm1EYXRhPj4gQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpGb250Q3VzdG9t
UGxhdGZvcm1EYXRhPjo6ZGVjb2RlUGxhdGZvcm1EYXRhKERlY29kZXImIGRlY29kZXIpCi17Ci0g
ICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gYnVmZmVyU2l6ZTsKLSAgICBkZWNvZGVyID4+IGJ1
ZmZlclNpemU7Ci0gICAgaWYgKCFidWZmZXJTaXplKQotICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwotCi0gICAgc3RkOjpvcHRpb25hbDxXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SGFuZGxlPiBo
YW5kbGU7Ci0gICAgZGVjb2RlciA+PiBoYW5kbGU7Ci0gICAgaWYgKCFoYW5kbGUpCi0gICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICBhdXRvIHNoYXJlZE1lbW9yeUJ1ZmZlciA9IFdl
YktpdDo6U2hhcmVkTWVtb3J5OjptYXAoKmhhbmRsZSwgV2ViS2l0OjpTaGFyZWRNZW1vcnk6OlBy
b3RlY3Rpb246OlJlYWRPbmx5KTsKLSAgICBpZiAoIXNoYXJlZE1lbW9yeUJ1ZmZlcikKLSAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgIGlmIChzaGFyZWRNZW1vcnlCdWZmZXItPnNp
emUoKSA8ICpidWZmZXJTaXplKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAg
YXV0byBmb250RmFjZURhdGEgPSBzaGFyZWRNZW1vcnlCdWZmZXItPmNyZWF0ZVNoYXJlZEJ1ZmZl
cigqYnVmZmVyU2l6ZSk7Ci0KLSAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gaXRlbUluQ29sbGVj
dGlvbjsKLSAgICBkZWNvZGVyID4+IGl0ZW1JbkNvbGxlY3Rpb247Ci0gICAgaWYgKCFpdGVtSW5D
b2xsZWN0aW9uKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgYXV0byBmb250
Q3VzdG9tUGxhdGZvcm1EYXRhID0gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShmb250RmFj
ZURhdGEsICppdGVtSW5Db2xsZWN0aW9uKTsKLSAgICBpZiAoIWZvbnRDdXN0b21QbGF0Zm9ybURh
dGEpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgcmV0dXJuIGZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEucmVsZWFzZU5vbk51bGwoKTsKLX0KLQotdm9pZCBBcmd1bWVudENvZGVyPFdl
YkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6OkF0dHJpYnV0ZXM+OjplbmNvZGVQbGF0Zm9ybURhdGEo
RW5jb2RlciYgZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6QXR0cmli
dXRlcyYgZGF0YSkKLXsKLSAgICBlbmNvZGVyIDw8IGRhdGEubV9hdHRyaWJ1dGVzOwotICAgIGVu
Y29kZXIgPDwgZGF0YS5tX29wdGlvbnM7Ci0gICAgZW5jb2RlciA8PCBkYXRhLm1fdXJsOwotICAg
IGVuY29kZXIgPDwgZGF0YS5tX3BzTmFtZTsKLX0KLQotYm9vbCBBcmd1bWVudENvZGVyPFdlYkNv
cmU6OkZvbnRQbGF0Zm9ybURhdGE6OkF0dHJpYnV0ZXM+OjpkZWNvZGVQbGF0Zm9ybURhdGEoRGVj
b2RlciYgZGVjb2RlciwgV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6QXR0cmlidXRlcyYgZGF0
YSkKLXsKLSAgICBzdGQ6Om9wdGlvbmFsPFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+PiBhdHRy
aWJ1dGVzOwotICAgIGRlY29kZXIgPj4gYXR0cmlidXRlczsKLSAgICBpZiAoIWF0dHJpYnV0ZXMp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHN0ZDo6b3B0aW9uYWw8Q1RGb250RGVzY3Jp
cHRvck9wdGlvbnM+IG9wdGlvbnM7Ci0gICAgZGVjb2RlciA+PiBvcHRpb25zOwotICAgIGlmICgh
b3B0aW9ucykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0KLSAgICBzdGQ6Om9wdGlvbmFsPFJl
dGFpblB0cjxDRlN0cmluZ1JlZj4+IHVybDsKLSAgICBkZWNvZGVyID4+IHVybDsKLSAgICBpZiAo
IXVybCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgc3RkOjpvcHRpb25hbDxSZXRhaW5Q
dHI8Q0ZTdHJpbmdSZWY+PiBwc05hbWU7Ci0gICAgZGVjb2RlciA+PiBwc05hbWU7Ci0gICAgaWYg
KCFwc05hbWUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGRhdGEubV9hdHRyaWJ1dGVz
ID0gYXR0cmlidXRlcy52YWx1ZSgpOwotICAgIGRhdGEubV9vcHRpb25zID0gb3B0aW9ucy52YWx1
ZSgpOwotICAgIGRhdGEubV91cmwgPSB1cmwudmFsdWUoKTsKLSAgICBkYXRhLm1fcHNOYW1lID0g
cHNOYW1lLnZhbHVlKCk7Ci0gICAgcmV0dXJuIHRydWU7Ci19CiAKICNpZiBFTkFCTEUoREFUQV9E
RVRFQ1RJT04pCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuY3BwCmluZGV4IDM0NWJlZTA5MDY3ZC4uNjg0NzJmZWNlYTE4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTg2LDcgKzg2LDYgQEAK
ICNpbmNsdWRlIDxXZWJDb3JlL0ZpbHRlck9wZXJhdGlvbnMuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0Zsb2F0UXVhZC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRm9udC5oPgotI2luY2x1ZGUgPFdlYkNv
cmUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3ND
b250ZXh0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0xheWVyLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9JREJHZXRSZXN1bHQuaD4KQEAgLTQ3OSwzNiArNDc4LDE3IEBAIGJvb2wgQXJndW1l
bnRDb2RlcjxSZWZQdHI8SW1hZ2U+Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFJlZlB0cjxJ
bWFnZT4mIGltYWdlCiAKIHZvaWQgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpGb250Pjo6ZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6OkZvbnQmIGZvbnQpCiB7Ci0gICAgZW5j
b2RlciA8PCBmb250LmF0dHJpYnV0ZXMoKTsKKyAgICBlbmNvZGVyIDw8IGZvbnQub3JpZ2luKCk7
CisgICAgZW5jb2RlciA8PCAoZm9udC5pc0ludGVyc3RpdGlhbCgpID8gRm9udDo6SW50ZXJzdGl0
aWFsOjpZZXMgOiBGb250OjpJbnRlcnN0aXRpYWw6Ok5vKTsKKyAgICBlbmNvZGVyIDw8IGZvbnQu
dmlzaWJpbGl0eSgpOworICAgIGVuY29kZXIgPDwgKGZvbnQuaXNUZXh0T3JpZW50YXRpb25GYWxs
YmFjaygpID8gRm9udDo6T3JpZW50YXRpb25GYWxsYmFjazo6WWVzIDogRm9udDo6T3JpZW50YXRp
b25GYWxsYmFjazo6Tm8pOworICAgIGVuY29kZXIgPDwgZm9udC5yZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIoKTsKICAgICAvLyBJbnRlbnRpb25hbGx5IGRvbid0IGVuY29kZSBtX2lzQnJva2Vu
SWRlb2dyYXBoRmFsbGJhY2sgYmVjYXVzZSBpdCBkb2Vzbid0IGFmZmVjdCBkcmF3R2x5cGhzKCku
CiAKICAgICBlbmNvZGVQbGF0Zm9ybURhdGEoZW5jb2RlciwgZm9udCk7CiB9CiAKIHN0ZDo6b3B0
aW9uYWw8UmVmPEZvbnQ+PiBBcmd1bWVudENvZGVyPEZvbnQ+OjpkZWNvZGUoRGVjb2RlciYgZGVj
b2RlcikKLXsKLSAgICBzdGQ6Om9wdGlvbmFsPEZvbnQ6OkF0dHJpYnV0ZXM+IGF0dHJpYnV0ZXM7
Ci0gICAgZGVjb2RlciA+PiBhdHRyaWJ1dGVzOwotICAgIGlmICghYXR0cmlidXRlcykKLSAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgIGF1dG8gcGxhdGZvcm1EYXRhID0gZGVjb2Rl
UGxhdGZvcm1EYXRhKGRlY29kZXIpOwotICAgIGlmICghcGxhdGZvcm1EYXRhKQotICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgcmV0dXJuIEZvbnQ6OmNyZWF0ZSgqcGxhdGZvcm1E
YXRhLCBhdHRyaWJ1dGVzLT5vcmlnaW4sIGF0dHJpYnV0ZXMtPmlzSW50ZXJzdGl0aWFsLCBhdHRy
aWJ1dGVzLT52aXNpYmlsaXR5LCBhdHRyaWJ1dGVzLT5pc1RleHRPcmllbnRhdGlvbkZhbGxiYWNr
LCBhdHRyaWJ1dGVzLT5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwotfQotCi12b2lkIEFy
Z3VtZW50Q29kZXI8V2ViQ29yZTo6Rm9udDo6QXR0cmlidXRlcz46OmVuY29kZShFbmNvZGVyJiBl
bmNvZGVyLCBjb25zdCBXZWJDb3JlOjpGb250OjpBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzKQotewot
ICAgIGVuY29kZXIgPDwgYXR0cmlidXRlcy5vcmlnaW47Ci0gICAgZW5jb2RlciA8PCBhdHRyaWJ1
dGVzLmlzSW50ZXJzdGl0aWFsOwotICAgIGVuY29kZXIgPDwgYXR0cmlidXRlcy52aXNpYmlsaXR5
OwotICAgIGVuY29kZXIgPDwgYXR0cmlidXRlcy5pc1RleHRPcmllbnRhdGlvbkZhbGxiYWNrOwot
ICAgIGVuY29kZXIgPDwgYXR0cmlidXRlcy5lbnN1cmVSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIoKTsKLX0KLQotc3RkOjpvcHRpb25hbDxGb250OjpBdHRyaWJ1dGVzPiBBcmd1bWVudENvZGVy
PEZvbnQ6OkF0dHJpYnV0ZXM+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBzdGQ6
Om9wdGlvbmFsPEZvbnQ6Ok9yaWdpbj4gb3JpZ2luOwogICAgIGRlY29kZXIgPj4gb3JpZ2luOwpA
QCAtNTM1LDgxICs1MTUsMTEgQEAgc3RkOjpvcHRpb25hbDxGb250OjpBdHRyaWJ1dGVzPiBBcmd1
bWVudENvZGVyPEZvbnQ6OkF0dHJpYnV0ZXM+OjpkZWNvZGUoRGVjb2RlciYKICAgICBpZiAoIXJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAotICAgIHJldHVybiBzdGQ6Om9wdGlvbmFsPEZvbnQ6OkF0dHJpYnV0ZXM+KHsgcmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyLCBvcmlnaW4udmFsdWUoKSwgaXNJbnRlcnN0aXRpYWwudmFsdWUo
KSwgdmlzaWJpbGl0eS52YWx1ZSgpLCBpc1RleHRPcmllbnRhdGlvbkZhbGxiYWNrLnZhbHVlKCkg
fSk7Ci19Ci0KLXZvaWQgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpGb250Q3VzdG9tUGxhdGZvcm1E
YXRhPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6OkZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEmIGN1c3RvbVBsYXRmb3JtRGF0YSkKLXsKLSAgICBlbmNvZGVQbGF0Zm9ybURh
dGEoZW5jb2RlciwgY3VzdG9tUGxhdGZvcm1EYXRhKTsKLQotICAgIGVuY29kZXIgPDwgY3VzdG9t
UGxhdGZvcm1EYXRhLm1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyOwotfQotCi1zdGQ6Om9w
dGlvbmFsPFJlZjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPj4gQXJndW1lbnRDb2RlcjxGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCi17Ci0gICAgYXV0byBy
ZXN1bHQgPSBkZWNvZGVQbGF0Zm9ybURhdGEoZGVjb2Rlcik7Ci0gICAgaWYgKHJlc3VsdCkgewot
ICAgICAgICBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gcmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyOwotICAgICAgICBkZWNvZGVyID4+IHJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcjsKLSAgICAgICAgaWYgKCFyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIp
Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgICAgICgqcmVzdWx0KS0+
bV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgPSAqcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyOwotICAgIH0KLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXZvaWQgQXJndW1lbnRDb2Rl
cjxXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpBdHRyaWJ1dGVzPjo6ZW5jb2RlKEVuY29kZXIm
IGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6OkF0dHJpYnV0ZXMmIGRh
dGEpCi17Ci0gICAgZW5jb2RlciA8PCBkYXRhLm1fb3JpZW50YXRpb247Ci0gICAgZW5jb2RlciA8
PCBkYXRhLm1fd2lkdGhWYXJpYW50OwotICAgIGVuY29kZXIgPDwgZGF0YS5tX3RleHRSZW5kZXJp
bmdNb2RlOwotICAgIGVuY29kZXIgPDwgZGF0YS5tX3NpemU7Ci0gICAgZW5jb2RlciA8PCBkYXRh
Lm1fc3ludGhldGljQm9sZDsKLSAgICBlbmNvZGVyIDw8IGRhdGEubV9zeW50aGV0aWNPYmxpcXVl
OwotCi0gICAgZW5jb2RlUGxhdGZvcm1EYXRhKGVuY29kZXIsIGRhdGEpOwotfQotCi1zdGQ6Om9w
dGlvbmFsPEZvbnRQbGF0Zm9ybURhdGE6OkF0dHJpYnV0ZXM+IEFyZ3VtZW50Q29kZXI8Rm9udFBs
YXRmb3JtRGF0YTo6QXR0cmlidXRlcz46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQotewotICAg
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Rm9udE9yaWVudGF0aW9uPiBvcmllbnRhdGlvbjsKLSAg
ICBkZWNvZGVyID4+IG9yaWVudGF0aW9uOwotICAgIGlmICghb3JpZW50YXRpb24pCi0gICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZvbnRX
aWR0aFZhcmlhbnQ+IHdpZHRoVmFyaWFudDsKLSAgICBkZWNvZGVyID4+IHdpZHRoVmFyaWFudDsK
LSAgICBpZiAoIXdpZHRoVmFyaWFudCkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQot
ICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6VGV4dFJlbmRlcmluZ01vZGU+IHRleHRSZW5kZXJp
bmdNb2RlOwotICAgIGRlY29kZXIgPj4gdGV4dFJlbmRlcmluZ01vZGU7Ci0gICAgaWYgKCF0ZXh0
UmVuZGVyaW5nTW9kZSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgIHN0ZDo6
b3B0aW9uYWw8ZmxvYXQ+IHNpemU7Ci0gICAgZGVjb2RlciA+PiBzaXplOwotICAgIGlmICghc2l6
ZSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgIHN0ZDo6b3B0aW9uYWw8Ym9v
bD4gc3ludGhldGljQm9sZDsKLSAgICBkZWNvZGVyID4+IHN5bnRoZXRpY0JvbGQ7Ci0gICAgaWYg
KCFzeW50aGV0aWNCb2xkKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgc3Rk
OjpvcHRpb25hbDxib29sPiBzeW50aGV0aWNPYmxpcXVlOwotICAgIGRlY29kZXIgPj4gc3ludGhl
dGljT2JsaXF1ZTsKLSAgICBpZiAoIXN5bnRoZXRpY09ibGlxdWUpCi0gICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7Ci0KLSAgICBGb250UGxhdGZvcm1EYXRhOjpBdHRyaWJ1dGVzIHJlc3VsdChz
aXplLnZhbHVlKCksIG9yaWVudGF0aW9uLnZhbHVlKCksIHdpZHRoVmFyaWFudC52YWx1ZSgpLCB0
ZXh0UmVuZGVyaW5nTW9kZS52YWx1ZSgpLCBzeW50aGV0aWNCb2xkLnZhbHVlKCksIHN5bnRoZXRp
Y09ibGlxdWUudmFsdWUoKSk7Ci0KLSAgICBpZiAoIWRlY29kZVBsYXRmb3JtRGF0YShkZWNvZGVy
LCByZXN1bHQpKQorICAgIGF1dG8gcGxhdGZvcm1EYXRhID0gZGVjb2RlUGxhdGZvcm1EYXRhKGRl
Y29kZXIpOworICAgIGlmICghcGxhdGZvcm1EYXRhKQogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCi0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gRm9udDo6Y3JlYXRlKHBsYXRm
b3JtRGF0YS52YWx1ZSgpLCBvcmlnaW4udmFsdWUoKSwgaXNJbnRlcnN0aXRpYWwudmFsdWUoKSwg
dmlzaWJpbGl0eS52YWx1ZSgpLCBpc1RleHRPcmllbnRhdGlvbkZhbGxiYWNrLnZhbHVlKCksIHJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiB9CiAKIHZvaWQgQXJndW1lbnRDb2RlcjxDdXJz
b3I+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgQ3Vyc29yJiBjdXJzb3IpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCmluZGV4IDkyZDVjZGNi
MWU3Zi4uMzk0OGY5MWRiNDFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJn
dW1lbnRDb2RlcnMuaApAQCAtMTU4LDcgKzE1OCw2IEBAIHN0cnVjdCBEaWN0aW9uYXJ5UG9wdXBJ
bmZvOwogc3RydWN0IEV2ZW50VHJhY2tpbmdSZWdpb25zOwogc3RydWN0IEV4Y2VwdGlvbkRldGFp
bHM7CiBzdHJ1Y3QgRmlsZUNob29zZXJTZXR0aW5nczsKLXN0cnVjdCBGb250Q3VzdG9tUGxhdGZv
cm1EYXRhOwogc3RydWN0IFRleHRSZWNvZ25pdGlvbkRhdGFEZXRlY3RvcjsKIHN0cnVjdCBMZW5n
dGg7CiBzdHJ1Y3QgR3JhbW1hckRldGFpbDsKQEAgLTI2OCwyNSArMjY3LDYgQEAgdGVtcGxhdGU8
PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpGb250PiB7CiAgICAgc3RhdGljIHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YT4gZGVjb2RlUGxhdGZvcm1EYXRhKERl
Y29kZXImKTsKIH07CiAKLXRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6
Rm9udDo6QXR0cmlidXRlcz4gewotICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29u
c3QgV2ViQ29yZTo6Rm9udDo6QXR0cmlidXRlcyYpOwotICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OkZvbnQ6OkF0dHJpYnV0ZXM+IGRlY29kZShEZWNvZGVyJik7Ci19OwotCi10ZW1w
bGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6OkF0
dHJpYnV0ZXM+IHsKLSAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNv
cmU6OkZvbnRQbGF0Zm9ybURhdGE6OkF0dHJpYnV0ZXMmKTsKLSAgICBzdGF0aWMgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpBdHRyaWJ1dGVzPiBkZWNvZGUoRGVjb2Rl
ciYpOwotICAgIHN0YXRpYyB2b2lkIGVuY29kZVBsYXRmb3JtRGF0YShFbmNvZGVyJiwgY29uc3Qg
V2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6QXR0cmlidXRlcyYpOwotICAgIHN0YXRpYyBXQVJO
X1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVQbGF0Zm9ybURhdGEoRGVjb2RlciYsIFdlYkNvcmU6
OkZvbnRQbGF0Zm9ybURhdGE6OkF0dHJpYnV0ZXMmKTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0
IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gewotICAgIHN0
YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6Rm9udEN1c3RvbVBsYXRm
b3JtRGF0YSYpOwotICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlZjxXZWJDb3JlOjpGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhPj4gZGVjb2RlKERlY29kZXImKTsKLSAgICBzdGF0aWMgdm9pZCBlbmNv
ZGVQbGF0Zm9ybURhdGEoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OkZvbnRDdXN0b21QbGF0Zm9y
bURhdGEmKTsKLSAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZWY8V2ViQ29yZTo6Rm9udEN1c3Rv
bVBsYXRmb3JtRGF0YT4+IGRlY29kZVBsYXRmb3JtRGF0YShEZWNvZGVyJik7Ci19OwotCiB0ZW1w
bGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlJlc291cmNlRXJyb3I+IHsKICAg
ICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJy
b3ImKTsKICAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKERlY29kZXIm
LCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9jZi9Bcmd1bWVudENvZGVyc0NGLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NmL0Fy
Z3VtZW50Q29kZXJzQ0YuY3BwCmluZGV4IDU3NjJlYmNiMTQxMS4uN2I1OTQ2NWU4N2NlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZi9Bcmd1bWVudENvZGVyc0NGLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZi9Bcmd1bWVudENvZGVyc0NGLmNwcApAQCAtNjUyLDEy
ICs2NTIsNiBAQCBzdGQ6Om9wdGlvbmFsPFJldGFpblB0cjxDRk51bWJlclJlZj4+IEFyZ3VtZW50
Q29kZXI8UmV0YWluUHRyPENGTnVtYmVyUmVmPj46OmRlYwogdGVtcGxhdGU8dHlwZW5hbWUgRW5j
b2Rlcj4KIHZvaWQgQXJndW1lbnRDb2RlcjxDRlN0cmluZ1JlZj46OmVuY29kZShFbmNvZGVyJiBl
bmNvZGVyLCBDRlN0cmluZ1JlZiBzdHJpbmcpCiB7Ci0gICAgaWYgKCFzdHJpbmcpIHsKLSAgICAg
ICAgZW5jb2RlciA8PCB0cnVlOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGVuY29kZXIg
PDwgZmFsc2U7Ci0KICAgICBDRkluZGV4IGxlbmd0aCA9IENGU3RyaW5nR2V0TGVuZ3RoKHN0cmlu
Zyk7CiAgICAgQ0ZTdHJpbmdFbmNvZGluZyBlbmNvZGluZyA9IENGU3RyaW5nR2V0RmFzdGVzdEVu
Y29kaW5nKHN0cmluZyk7CiAKQEAgLTY3OSwxNCArNjczLDYgQEAgdGVtcGxhdGUgdm9pZCBBcmd1
bWVudENvZGVyPENGU3RyaW5nUmVmPjo6ZW5jb2RlPFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyPihT
dHJlYW0KIAogc3RkOjpvcHRpb25hbDxSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+PiBBcmd1bWVudENv
ZGVyPFJldGFpblB0cjxDRlN0cmluZ1JlZj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsK
LSAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGlzTnVsbDsKLSAgICBkZWNvZGVyID4+IGlzTnVsbDsK
LSAgICBpZiAoIWlzTnVsbCkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgIGlm
ICgqaXNOdWxsKQotICAgICAgICByZXR1cm4geyB7IG51bGxwdHIgfSB9OwotCiAgICAgc3RkOjpv
cHRpb25hbDx1aW50MzJfdD4gZW5jb2RpbmdGcm9tSVBDOwogICAgIGRlY29kZXIgPj4gZW5jb2Rp
bmdGcm9tSVBDOwogICAgIGlmICghZW5jb2RpbmdGcm9tSVBDKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvcGxheXN0YXRpb24vV2ViQ29yZUFyZ3VtZW50Q29kZXJzUGxheVN0YXRp
b24uY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvcGxheXN0YXRpb24vV2ViQ29yZUFyZ3VtZW50
Q29kZXJzUGxheVN0YXRpb24uY3BwCmluZGV4IDlmMjc2ODgyYWQ0Ny4uOTY0YjUzNTVkMjE4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9wbGF5c3RhdGlvbi9XZWJDb3JlQXJndW1l
bnRDb2RlcnNQbGF5U3RhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvcGxheXN0
YXRpb24vV2ViQ29yZUFyZ3VtZW50Q29kZXJzUGxheVN0YXRpb24uY3BwCkBAIC0yNyw3ICsyNyw2
IEBACiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAKICNpbmNsdWRlIDxXZWJD
b3JlL0ZvbnQuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaD4K
IAogbmFtZXNwYWNlIElQQyB7CiAKQEAgLTQ0LDI2ICs0Myw0IEBAIHN0ZDo6b3B0aW9uYWw8Rm9u
dFBsYXRmb3JtRGF0YT4gQXJndW1lbnRDb2RlcjxGb250Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKERl
Y29kZXImCiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAotdm9pZCBBcmd1bWVudENvZGVy
PFdlYkNvcmU6OkZvbnRDdXN0b21QbGF0Zm9ybURhdGE+OjplbmNvZGVQbGF0Zm9ybURhdGEoRW5j
b2RlciYgZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6Rm9udEN1c3RvbVBsYXRmb3JtRGF0YSYgY3Vz
dG9tUGxhdGZvcm1EYXRhKQotewotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi1zdGQ6
Om9wdGlvbmFsPFJlZjxXZWJDb3JlOjpGb250Q3VzdG9tUGxhdGZvcm1EYXRhPj4gQXJndW1lbnRD
b2RlcjxXZWJDb3JlOjpGb250Q3VzdG9tUGxhdGZvcm1EYXRhPjo6ZGVjb2RlUGxhdGZvcm1EYXRh
KERlY29kZXImIGRlY29kZXIpCi17Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKLX0KLQotdm9pZCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkZvbnRQ
bGF0Zm9ybURhdGE6OkF0dHJpYnV0ZXM+OjplbmNvZGVQbGF0Zm9ybURhdGEoRW5jb2RlciYgZW5j
b2RlciwgY29uc3QgV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6QXR0cmlidXRlcyYgZGF0YSkK
LXsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotYm9vbCBBcmd1bWVudENvZGVyPFdl
YkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6OkF0dHJpYnV0ZXM+OjpkZWNvZGVQbGF0Zm9ybURhdGEo
RGVjb2RlciYgZGVjb2RlciwgV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6QXR0cmlidXRlcyYg
ZGF0YSkKLXsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gZmFsc2U7Ci19
Ci0KIH0gLy8gbmFtZXNwYWNlIElQQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
c291cC9XZWJDb3JlQXJndW1lbnRDb2RlcnNTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L3NvdXAvV2ViQ29yZUFyZ3VtZW50Q29kZXJzU291cC5jcHAKaW5kZXggYTI3MjY1ZjBiMjJhLi5i
OGQ5MDBkNTBhZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3NvdXAvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzU291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvc291cC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnNTb3VwLmNwcApAQCAtMzQsNyArMzQsNiBAQAogI2luY2x1ZGUg
PFdlYkNvcmUvQ3JlZGVudGlhbC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGljdGlvbmFyeVBvcHVw
SW5mby5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRm9udC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9SZXNvdXJjZVJlc3BvbnNlLmg+CkBAIC0xNzEsMjggKzE3MCw2IEBAIHN0ZDo6b3B0aW9uYWw8
Rm9udFBsYXRmb3JtRGF0YT4gQXJndW1lbnRDb2RlcjxGb250Pjo6ZGVjb2RlUGxhdGZvcm1EYXRh
KERlY29kZXImCiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAotdm9pZCBBcmd1bWVudENv
ZGVyPFdlYkNvcmU6OkZvbnRDdXN0b21QbGF0Zm9ybURhdGE+OjplbmNvZGVQbGF0Zm9ybURhdGEo
RW5jb2RlciYgZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6Rm9udEN1c3RvbVBsYXRmb3JtRGF0YSYg
Y3VzdG9tUGxhdGZvcm1EYXRhKQotewotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi1z
dGQ6Om9wdGlvbmFsPFJlZjxXZWJDb3JlOjpGb250Q3VzdG9tUGxhdGZvcm1EYXRhPj4gQXJndW1l
bnRDb2RlcjxXZWJDb3JlOjpGb250Q3VzdG9tUGxhdGZvcm1EYXRhPjo6ZGVjb2RlUGxhdGZvcm1E
YXRhKERlY29kZXImIGRlY29kZXIpCi17Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKLX0KLQotdm9pZCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkZv
bnRQbGF0Zm9ybURhdGE6OkF0dHJpYnV0ZXM+OjplbmNvZGVQbGF0Zm9ybURhdGEoRW5jb2RlciYg
ZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6QXR0cmlidXRlcyYgZGF0
YSkKLXsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotYm9vbCBBcmd1bWVudENvZGVy
PFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6OkF0dHJpYnV0ZXM+OjpkZWNvZGVQbGF0Zm9ybURh
dGEoRGVjb2RlciYgZGVjb2RlciwgV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6QXR0cmlidXRl
cyYgZGF0YSkKLXsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gZmFsc2U7
Ci19Ci0KICNpZiBFTkFCTEUoVklERU8pCiB2b2lkIEFyZ3VtZW50Q29kZXI8U2VyaWFsaXplZFBs
YXRmb3JtRGF0YUN1ZVZhbHVlPjo6ZW5jb2RlUGxhdGZvcm1EYXRhKEVuY29kZXImIGVuY29kZXIs
IGNvbnN0IFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVWYWx1ZSYgdmFsdWUpCiB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93aW4vV2ViQ29yZUFyZ3VtZW50Q29kZXJzV2luLmNw
cCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3dpbi9XZWJDb3JlQXJndW1lbnRDb2RlcnNXaW4uY3Bw
CmluZGV4IDllMzhiN2M0ZjNhNC4uMzFkZTc4MmIwZDE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC93aW4vV2ViQ29yZUFyZ3VtZW50Q29kZXJzV2luLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC93aW4vV2ViQ29yZUFyZ3VtZW50Q29kZXJzV2luLmNwcApAQCAtODgsNyAr
ODgsOCBAQCBzdGQ6Om9wdGlvbmFsPEZvbnRQbGF0Zm9ybURhdGE+IEFyZ3VtZW50Q29kZXI8Rm9u
dD46OmRlY29kZVBsYXRmb3JtRGF0YShEZWNvZGVyJgogICAgIGlmICghaW5jbHVkZXNDcmVhdGlv
bkRhdGEpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBSZWZQdHI8Rm9udEN1
c3RvbVBsYXRmb3JtRGF0YT4gZm9udEN1c3RvbVBsYXRmb3JtRGF0YTsKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gZm9udEN1c3RvbVBsYXRmb3JtRGF0YTsKKyAg
ICBGb250UGxhdGZvcm1EYXRhOjpDcmVhdGlvbkRhdGEqIGNyZWF0aW9uRGF0YSA9IG51bGxwdHI7
CiAKICAgICBpZiAoaW5jbHVkZXNDcmVhdGlvbkRhdGEudmFsdWUoKSkgewogICAgICAgICBzdGQ6
Om9wdGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+PiBmb250RmFjZURhdGE7CkBAIC0xMDQsNiArMTA1
LDcgQEAgc3RkOjpvcHRpb25hbDxGb250UGxhdGZvcm1EYXRhPiBBcmd1bWVudENvZGVyPEZvbnQ+
OjpkZWNvZGVQbGF0Zm9ybURhdGEoRGVjb2RlciYKICAgICAgICAgZm9udEN1c3RvbVBsYXRmb3Jt
RGF0YSA9IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoZm9udEZhY2VEYXRhLnZhbHVlKCks
IGl0ZW1JbkNvbGxlY3Rpb24udmFsdWUoKSk7CiAgICAgICAgIGlmICghZm9udEN1c3RvbVBsYXRm
b3JtRGF0YSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIGNyZWF0
aW9uRGF0YSA9ICZmb250Q3VzdG9tUGxhdGZvcm1EYXRhLT5jcmVhdGlvbkRhdGE7CiAgICAgfQog
CiAgICAgc3RkOjpvcHRpb25hbDxMT0dGT05UPiBsb2dGb250OwpAQCAtMTE4LDQ4ICsxMjAsNyBA
QCBzdGQ6Om9wdGlvbmFsPEZvbnRQbGF0Zm9ybURhdGE+IEFyZ3VtZW50Q29kZXI8Rm9udD46OmRl
Y29kZVBsYXRmb3JtRGF0YShEZWNvZGVyJgogICAgIGlmICghZ2RpRm9udCkKICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIHJldHVybiBGb250UGxhdGZvcm1EYXRhKFdURk1vdmUo
Z2RpRm9udCksICpzaXplLCAqc3ludGhldGljQm9sZCwgKnN5bnRoZXRpY09ibGlxdWUsIGZvbnRD
dXN0b21QbGF0Zm9ybURhdGEuZ2V0KCkpOworICAgIHJldHVybiBGb250UGxhdGZvcm1EYXRhKFdU
Rk1vdmUoZ2RpRm9udCksICpzaXplLCAqc3ludGhldGljQm9sZCwgKnN5bnRoZXRpY09ibGlxdWUs
IGNyZWF0aW9uRGF0YSk7CiB9CiAKLXZvaWQgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhPjo6ZW5jb2RlUGxhdGZvcm1EYXRhKEVuY29kZXImIGVuY29kZXIsIGNv
bnN0IFdlYkNvcmU6OkZvbnRDdXN0b21QbGF0Zm9ybURhdGEmIGN1c3RvbVBsYXRmb3JtRGF0YSkK
LXsKLSAgICBlbmNvZGVyIDw8IGN1c3RvbVBsYXRmb3JtRGF0YS5jcmVhdGlvbkRhdGEuZm9udEZh
Y2VEYXRhOwotICAgIGVuY29kZXIgPDwgY3VzdG9tUGxhdGZvcm1EYXRhLmNyZWF0aW9uRGF0YS5p
dGVtSW5Db2xsZWN0aW9uOwotfQotCi1zdGQ6Om9wdGlvbmFsPFJlZjxXZWJDb3JlOjpGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhPj4gQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpGb250Q3VzdG9tUGxhdGZv
cm1EYXRhPjo6ZGVjb2RlUGxhdGZvcm1EYXRhKERlY29kZXImIGRlY29kZXIpCi17Ci0gICAgc3Rk
OjpvcHRpb25hbDxSZWY8U2hhcmVkQnVmZmVyPj4gZm9udEZhY2VEYXRhOwotICAgIGRlY29kZXIg
Pj4gZm9udEZhY2VEYXRhOwotICAgIGlmICghZm9udEZhY2VEYXRhKQotICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwotCi0gICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGl0ZW1JbkNvbGxlY3Rp
b247Ci0gICAgZGVjb2RlciA+PiBpdGVtSW5Db2xsZWN0aW9uOwotICAgIGlmICghaXRlbUluQ29s
bGVjdGlvbikKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgIGF1dG8gZm9udEN1
c3RvbVBsYXRmb3JtRGF0YSA9IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoZm9udEZhY2VE
YXRhLnZhbHVlKCksIGl0ZW1JbkNvbGxlY3Rpb24udmFsdWUoKSk7Ci0gICAgaWYgKCFmb250Q3Vz
dG9tUGxhdGZvcm1EYXRhKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIHJldHVy
biBmb250Q3VzdG9tUGxhdGZvcm1EYXRhLnJlbGVhc2VOb25OdWxsKCk7Ci19Ci0KLXZvaWQgQXJn
dW1lbnRDb2RlcjxXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpBdHRyaWJ1dGVzPjo6ZW5jb2Rl
UGxhdGZvcm1EYXRhKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6OkZvbnRQbGF0Zm9y
bURhdGE6OkF0dHJpYnV0ZXMmIGRhdGEpCi17Ci0gICAgZW5jb2RlciA8PCBkYXRhLm1fZm9udDsK
LX0KLQotYm9vbCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6OkF0dHJp
YnV0ZXM+OjpkZWNvZGVQbGF0Zm9ybURhdGEoRGVjb2RlciYgZGVjb2RlciwgV2ViQ29yZTo6Rm9u
dFBsYXRmb3JtRGF0YTo6QXR0cmlidXRlcyYgZGF0YSkKLXsKLSAgICBzdGQ6Om9wdGlvbmFsPExP
R0ZPTlQ+IGxvZ0ZvbnQ7Ci0gICAgZGVjb2RlciA+PiBsb2dGb250OwotICAgIGlmICghbG9nRm9u
dCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgZGF0YS5tX2ZvbnQgPSAqbG9nRm9udDsK
LSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotCiB9IC8vIG5hbWVzcGFjZSBJUEMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcAppbmRleCBlZWYwYzI4Yzk1MmYuLjgxN2U2ZWQ5
ZmZkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9S
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcApAQCAtNDAs
NyArNDAsNiBAQAogI2luY2x1ZGUgIldlYlBhZ2UuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgi
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvVHlwZWRBcnJheUlubGluZXMuaD4KLSNpbmNsdWRl
IDxXZWJDb3JlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9U
ZXh0U3RyZWFtLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMjUzLDE1ICsyNTIsOSBAQCB2
b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Y2FjaGVOYXRpdmVJbWFnZShjb25zdCBT
aGFyZWFibGVCaXRtYXBIYW5kbGUmCiAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5n
QmFja2VuZDo6Q2FjaGVOYXRpdmVJbWFnZShoYW5kbGUsIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllcikpOwogfQogCi12b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Y2FjaGVGb250
KGNvbnN0IFdlYkNvcmU6OkZvbnQ6OkF0dHJpYnV0ZXMmIGZvbnRBdHRyaWJ1dGVzLCBjb25zdCBX
ZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpBdHRyaWJ1dGVzJiBwbGF0Zm9ybURhdGEsIHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBpZGVudCkKK3Zv
aWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpjYWNoZUZvbnQoUmVmPEZvbnQ+JiYgZm9u
dCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpDYWNoZUZv
bnQoZm9udEF0dHJpYnV0ZXMsIHBsYXRmb3JtRGF0YSwgaWRlbnQpKTsKLX0KLQotdm9pZCBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNhY2hlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShSZWY8
Y29uc3QgRm9udEN1c3RvbVBsYXRmb3JtRGF0YT4mJiBjdXN0b21QbGF0Zm9ybURhdGEpCi17Ci0g
ICAgUmVmPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGRhdGEgPSBhZG9wdFJlZihjb25zdF9jYXN0
PEZvbnRDdXN0b21QbGF0Zm9ybURhdGEmPihjdXN0b21QbGF0Zm9ybURhdGEubGVha1JlZigpKSk7
Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Q2FjaGVGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhKFdURk1vdmUoZGF0YSkpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kOjpDYWNoZUZvbnQoV1RGTW92ZShmb250KSkpOwogfQogCiB2b2lk
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Y2FjaGVEZWNvbXBvc2VkR2x5cGhzKFJlZjxE
ZWNvbXBvc2VkR2x5cGhzPiYmIGRlY29tcG9zZWRHbHlwaHMpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHkuaAppbmRleCA1ZDFhOTY1NjNjN2UuLmRjYTAyNjE4OTUwMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oCkBAIC05Niw4ICs5Niw3IEBAIHB1Ymxp
YzoKICAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBnZXRTaGFyZWFibGVCaXRtYXAoV2ViQ29y
ZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBXZWJDb3JlOjpQcmVzZXJ2ZVJlc29sdXRp
b24pOwogICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZT4gZ2V0RmlsdGVyZWRJbWFnZShXZWJDb3Jl
OjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIFdlYkNvcmU6OkZpbHRlciYpOwogICAgIHZv
aWQgY2FjaGVOYXRpdmVJbWFnZShjb25zdCBTaGFyZWFibGVCaXRtYXBIYW5kbGUmLCBXZWJDb3Jl
OjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwotICAgIHZvaWQgY2FjaGVGb250KGNvbnN0
IFdlYkNvcmU6OkZvbnQ6OkF0dHJpYnV0ZXMmLCBjb25zdCBXZWJDb3JlOjpGb250UGxhdGZvcm1E
YXRhOjpBdHRyaWJ1dGVzJiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXI+KTsKLSAgICB2b2lkIGNhY2hlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShSZWY8
Y29uc3QgV2ViQ29yZTo6Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4mJik7CisgICAgdm9pZCBjYWNo
ZUZvbnQoUmVmPFdlYkNvcmU6OkZvbnQ+JiYpOwogICAgIHZvaWQgY2FjaGVEZWNvbXBvc2VkR2x5
cGhzKFJlZjxXZWJDb3JlOjpEZWNvbXBvc2VkR2x5cGhzPiYmKTsKICAgICB2b2lkIGNhY2hlR3Jh
ZGllbnQoUmVmPFdlYkNvcmU6OkdyYWRpZW50PiYmKTsKICAgICB2b2lkIHJlbGVhc2VBbGxSZW1v
dGVSZXNvdXJjZXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcAppbmRleCBm
ZTU4YzlkZWU5OTAuLjcyZDkyZGQ5OGNmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVBy
b3h5LmNwcApAQCAtMzEsNyArMzEsNiBAQAogI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCiAj
aW5jbHVkZSAiUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oIgogI2luY2x1ZGUgIlJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpA
QCAtMTQwLDE0ICsxMzksMTAgQEAgdm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OnJlY29y
ZE5hdGl2ZUltYWdlVXNlKE5hdGl2ZUltYWdlJiBpbWFnZSkKIAogdm9pZCBSZW1vdGVSZXNvdXJj
ZUNhY2hlUHJveHk6OnJlY29yZEZvbnRVc2UoRm9udCYgZm9udCkKIHsKLSAgICBpZiAoZm9udC5w
bGF0Zm9ybURhdGEoKS5jdXN0b21QbGF0Zm9ybURhdGEoKSkKLSAgICAgICAgcmVjb3JkRm9udEN1
c3RvbVBsYXRmb3JtRGF0YVVzZSgqZm9udC5wbGF0Zm9ybURhdGEoKS5jdXN0b21QbGF0Zm9ybURh
dGEoKSk7Ci0KICAgICBhdXRvIHJlc3VsdCA9IG1fZm9udHMuYWRkKGZvbnQucmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyKCksIG1fcmVuZGVyaW5nVXBkYXRlSUQpOwogCiAgICAgaWYgKHJlc3Vs
dC5pc05ld0VudHJ5KSB7Ci0gICAgICAgIGF1dG8gcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
ID0gZm9udC5wbGF0Zm9ybURhdGEoKS5jdXN0b21QbGF0Zm9ybURhdGEoKSA/IHN0ZDo6b3B0aW9u
YWwoZm9udC5wbGF0Zm9ybURhdGEoKS5jdXN0b21QbGF0Zm9ybURhdGEoKS0+bV9yZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIpIDogc3RkOjpudWxsb3B0OwotICAgICAgICBtX3JlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eS5jYWNoZUZvbnQoZm9udC5hdHRyaWJ1dGVzKCksIGZvbnQucGxhdGZv
cm1EYXRhKCkuYXR0cmlidXRlcygpLCByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOworICAg
ICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jYWNoZUZvbnQoZm9udCk7CiAgICAg
ICAgICsrbV9udW1iZXJPZkZvbnRzVXNlZEluQ3VycmVudFJlbmRlcmluZ1VwZGF0ZTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KQEAgLTE1OSwyMyArMTU0LDYgQEAgdm9pZCBSZW1vdGVSZXNvdXJj
ZUNhY2hlUHJveHk6OnJlY29yZEZvbnRVc2UoRm9udCYgZm9udCkKICAgICB9CiB9CiAKLXZvaWQg
UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpyZWNvcmRGb250Q3VzdG9tUGxhdGZvcm1EYXRhVXNl
KGNvbnN0IEZvbnRDdXN0b21QbGF0Zm9ybURhdGEmIGN1c3RvbVBsYXRmb3JtRGF0YSkKLXsKLSAg
ICBhdXRvIHJlc3VsdCA9IG1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YXMuYWRkKGN1c3RvbVBsYXRm
b3JtRGF0YS5tX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgbV9yZW5kZXJpbmdVcGRhdGVJ
RCk7Ci0KLSAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpIHsKLSAgICAgICAgbV9yZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHkuY2FjaGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKGN1c3RvbVBsYXRm
b3JtRGF0YSk7Ci0gICAgICAgICsrbV9udW1iZXJPZkZvbnRDdXN0b21QbGF0Zm9ybURhdGFzVXNl
ZEluQ3VycmVudFJlbmRlcmluZ1VwZGF0ZTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IGF1dG8mIGN1cnJlbnRTdGF0ZSA9IHJlc3VsdC5pdGVyYXRvci0+dmFsdWU7Ci0gICAgaWYgKGN1
cnJlbnRTdGF0ZSAhPSBtX3JlbmRlcmluZ1VwZGF0ZUlEKSB7Ci0gICAgICAgIGN1cnJlbnRTdGF0
ZSA9IG1fcmVuZGVyaW5nVXBkYXRlSUQ7Ci0gICAgICAgICsrbV9udW1iZXJPZkZvbnRDdXN0b21Q
bGF0Zm9ybURhdGFzVXNlZEluQ3VycmVudFJlbmRlcmluZ1VwZGF0ZTsKLSAgICB9Ci19Ci0KIHZv
aWQgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpyZWNvcmREZWNvbXBvc2VkR2x5cGhzVXNlKERl
Y29tcG9zZWRHbHlwaHMmIGRlY29tcG9zZWRHbHlwaHMpCiB7CiAgICAgaWYgKG1fZGVjb21wb3Nl
ZEdseXBocy5hZGQoZGVjb21wb3NlZEdseXBocy5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIo
KSwgZGVjb21wb3NlZEdseXBocykuaXNOZXdFbnRyeSkgewpAQCAtMjExLDcgKzE4OSw2IEBAIHZv
aWQgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpjbGVhck5hdGl2ZUltYWdlTWFwKCkKIHZvaWQg
UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpwcmVwYXJlRm9yTmV4dFJlbmRlcmluZ1VwZGF0ZSgp
CiB7CiAgICAgbV9udW1iZXJPZkZvbnRzVXNlZEluQ3VycmVudFJlbmRlcmluZ1VwZGF0ZSA9IDA7
Ci0gICAgbV9udW1iZXJPZkZvbnRDdXN0b21QbGF0Zm9ybURhdGFzVXNlZEluQ3VycmVudFJlbmRl
cmluZ1VwZGF0ZSA9IDA7CiB9CiAKIHZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpjbGVh
ckZvbnRNYXAoKQpAQCAtMjUxLDM3ICsyMjgsMjEgQEAgdm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hl
UHJveHk6OmZpbmFsaXplUmVuZGVyaW5nVXBkYXRlRm9yRm9udHMoKQogCiAgICAgdW5zaWduZWQg
dG90YWxGb250Q291bnQgPSBtX2ZvbnRzLnNpemUoKTsKICAgICBSRUxFQVNFX0FTU0VSVChtX251
bWJlck9mRm9udHNVc2VkSW5DdXJyZW50UmVuZGVyaW5nVXBkYXRlIDw9IHRvdGFsRm9udENvdW50
KTsKLSAgICBpZiAodG90YWxGb250Q291bnQgIT0gbV9udW1iZXJPZkZvbnRzVXNlZEluQ3VycmVu
dFJlbmRlcmluZ1VwZGF0ZSkgewotICAgICAgICBIYXNoU2V0PFdlYkNvcmU6OlJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcj4gdG9SZW1vdmU7Ci0gICAgICAgIGF1dG8gcmVuZGVyaW5nVXBkYXRl
SUQgPSBtX3JlbmRlcmluZ1VwZGF0ZUlEOwotICAgICAgICBmb3IgKGF1dG8mIGl0ZW0gOiBtX2Zv
bnRzKSB7Ci0gICAgICAgICAgICBpZiAocmVuZGVyaW5nVXBkYXRlSUQgLSBpdGVtLnZhbHVlID49
IG1pbmltdW1SZW5kZXJpbmdVcGRhdGVDb3VudFRvS2VlcEZvbnRBbGl2ZSkgewotICAgICAgICAg
ICAgICAgIHRvUmVtb3ZlLmFkZChpdGVtLmtleSk7Ci0gICAgICAgICAgICAgICAgbV9yZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHkucmVsZWFzZVJlbmRlcmluZ1Jlc291cmNlKGl0ZW0ua2V5KTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIG1fZm9udHMucmVtb3ZlSWYoWyZd
KGNvbnN0IGF1dG8mIGJ1Y2tldCkgewotICAgICAgICAgICAgcmV0dXJuIHRvUmVtb3ZlLmNvbnRh
aW5zKGJ1Y2tldC5rZXkpOwotICAgICAgICB9KTsKLSAgICB9CisgICAgaWYgKHRvdGFsRm9udENv
dW50ID09IG1fbnVtYmVyT2ZGb250c1VzZWRJbkN1cnJlbnRSZW5kZXJpbmdVcGRhdGUpCisgICAg
ICAgIHJldHVybjsKIAotICAgIHRvdGFsRm9udENvdW50ID0gbV9mb250Q3VzdG9tUGxhdGZvcm1E
YXRhcy5zaXplKCk7Ci0gICAgUkVMRUFTRV9BU1NFUlQobV9udW1iZXJPZkZvbnRDdXN0b21QbGF0
Zm9ybURhdGFzVXNlZEluQ3VycmVudFJlbmRlcmluZ1VwZGF0ZSA8PSB0b3RhbEZvbnRDb3VudCk7
Ci0gICAgaWYgKHRvdGFsRm9udENvdW50ICE9IG1fbnVtYmVyT2ZGb250Q3VzdG9tUGxhdGZvcm1E
YXRhc1VzZWRJbkN1cnJlbnRSZW5kZXJpbmdVcGRhdGUpIHsKLSAgICAgICAgSGFzaFNldDxXZWJD
b3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IHRvUmVtb3ZlOwotICAgICAgICBhdXRv
IHJlbmRlcmluZ1VwZGF0ZUlEID0gbV9yZW5kZXJpbmdVcGRhdGVJRDsKLSAgICAgICAgZm9yIChh
dXRvJiBpdGVtIDogbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhcykgewotICAgICAgICAgICAgaWYg
KHJlbmRlcmluZ1VwZGF0ZUlEIC0gaXRlbS52YWx1ZSA+PSBtaW5pbXVtUmVuZGVyaW5nVXBkYXRl
Q291bnRUb0tlZXBGb250QWxpdmUpIHsKLSAgICAgICAgICAgICAgICB0b1JlbW92ZS5hZGQoaXRl
bS5rZXkpOwotICAgICAgICAgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LnJl
bGVhc2VSZW5kZXJpbmdSZXNvdXJjZShpdGVtLmtleSk7Ci0gICAgICAgICAgICB9CisgICAgSGFz
aFNldDxXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IHRvUmVtb3ZlOworICAg
IGF1dG8gcmVuZGVyaW5nVXBkYXRlSUQgPSBtX3JlbmRlcmluZ1VwZGF0ZUlEOworICAgIGZvciAo
YXV0byYgaXRlbSA6IG1fZm9udHMpIHsKKyAgICAgICAgaWYgKHJlbmRlcmluZ1VwZGF0ZUlEIC0g
aXRlbS52YWx1ZSA+PSBtaW5pbXVtUmVuZGVyaW5nVXBkYXRlQ291bnRUb0tlZXBGb250QWxpdmUp
IHsKKyAgICAgICAgICAgIHRvUmVtb3ZlLmFkZChpdGVtLmtleSk7CisgICAgICAgICAgICBtX3Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5yZWxlYXNlUmVuZGVyaW5nUmVzb3VyY2UoaXRlbS5r
ZXkpOwogICAgICAgICB9Ci0KLSAgICAgICAgbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhcy5yZW1v
dmVJZihbJl0oY29uc3QgYXV0byYgYnVja2V0KSB7Ci0gICAgICAgICAgICByZXR1cm4gdG9SZW1v
dmUuY29udGFpbnMoYnVja2V0LmtleSk7Ci0gICAgICAgIH0pOwogICAgIH0KKworICAgIG1fZm9u
dHMucmVtb3ZlSWYoWyZdKGNvbnN0IGF1dG8mIGJ1Y2tldCkgeworICAgICAgICByZXR1cm4gdG9S
ZW1vdmUuY29udGFpbnMoYnVja2V0LmtleSk7CisgICAgfSk7CiB9CiAKIHZvaWQgUmVtb3RlUmVz
b3VyY2VDYWNoZVByb3h5OjpkaWRQYWludExheWVycygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hl
UHJveHkuaAppbmRleCA3YTM2MmQ3MDM5YzAuLjZkYTE5Mzc5ZTQ0ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJl
c291cmNlQ2FjaGVQcm94eS5oCkBAIC0zOCw3ICszOCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IGNsYXNzIEZvbnQ7CiBjbGFzcyBHcmFkaWVudDsKIGNsYXNzIEltYWdlQnVmZmVyOwotc3RydWN0
IEZvbnRDdXN0b21QbGF0Zm9ybURhdGE7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNjEs
NyArNjAsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWNvcmRJbWFnZUJ1ZmZlclVzZShXZWJDb3Jl
OjpJbWFnZUJ1ZmZlciYpOwogICAgIHZvaWQgcmVjb3JkRGVjb21wb3NlZEdseXBoc1VzZShXZWJD
b3JlOjpEZWNvbXBvc2VkR2x5cGhzJik7CiAgICAgdm9pZCByZWNvcmRHcmFkaWVudFVzZShXZWJD
b3JlOjpHcmFkaWVudCYpOwotICAgIHZvaWQgcmVjb3JkRm9udEN1c3RvbVBsYXRmb3JtRGF0YVVz
ZShjb25zdCBXZWJDb3JlOjpGb250Q3VzdG9tUGxhdGZvcm1EYXRhJik7CiAKICAgICB2b2lkIGRp
ZFBhaW50TGF5ZXJzKCk7CiAKQEAgLTk0LDExICs5Miw4IEBAIHByaXZhdGU6CiAgICAgRm9udEhh
c2hNYXAgbV9mb250czsKICAgICBEZWNvbXBvc2VkR2x5cGhzSGFzaE1hcCBtX2RlY29tcG9zZWRH
bHlwaHM7CiAgICAgR3JhZGllbnRIYXNoTWFwIG1fZ3JhZGllbnRzOwotICAgIEZvbnRIYXNoTWFw
IG1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YXM7CiAKICAgICB1bnNpZ25lZCBtX251bWJlck9mRm9u
dHNVc2VkSW5DdXJyZW50UmVuZGVyaW5nVXBkYXRlIHsgMCB9OwotICAgIHVuc2lnbmVkIG1fbnVt
YmVyT2ZGb250Q3VzdG9tUGxhdGZvcm1EYXRhc1VzZWRJbkN1cnJlbnRSZW5kZXJpbmdVcGRhdGUg
eyAwIH07Ci0KIAogICAgIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYgbV9yZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHk7CiAgICAgdWludDY0X3QgbV9yZW5kZXJpbmdVcGRhdGVJRDsK
</data>

          </attachment>
      

    </bug>

</bugzilla>