<?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>154145</bug_id>
          
          <creation_ts>2016-02-11 17:50:11 -0800</creation_ts>
          <short_desc>[CSS Font Loading] Implement CSSFontFace Boilerplate</short_desc>
          <delta_ts>2016-02-12 14:32:27 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>153346</blocked>
    
    <blocked>153345</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>dino</cc>
    
    <cc>jonlee</cc>
    
    <cc>koivisto</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1163964</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-02-11 17:50:11 -0800</bug_when>
    <thetext>[CSS Font Loading] Implement CSSFontFace Boilerplate</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1163967</commentid>
    <comment_count>1</comment_count>
      <attachid>271112</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-02-11 18:03:54 -0800</bug_when>
    <thetext>Created attachment 271112
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1163989</commentid>
    <comment_count>2</comment_count>
      <attachid>271122</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-02-11 19:22:20 -0800</bug_when>
    <thetext>Created attachment 271122
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1164060</commentid>
    <comment_count>3</comment_count>
      <attachid>271122</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-02-12 01:17:08 -0800</bug_when>
    <thetext>Comment on attachment 271122
Patch

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

&gt; Source/WebCore/css/CSSFontFace.cpp:72
&gt; +    // if (!success) { Throw a SyntaxError }

This can be done by taking an extra ExceptionCode&amp; argument and setting it to SYNTAX_ERR</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1164132</commentid>
    <comment_count>4</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2016-02-12 07:32:09 -0800</bug_when>
    <thetext>Generally I would prefer we took the same approach here as with most of the rest of the CSSOM and separated the internal type (StyleRule, StyleSheetContents,...) and the external CSSOM type (CSSStyleRule, CSSStyleSheet,...). This approach would involve renaming the current CSSFontFace to StyleFontFace or similar and adding a new CSSFontFace type (which calls into StyleFontFace) to provide the public API. 

Keeping the external and the internal cleanly separated allows more flexibility in defining the internal structures and often leads to cleaner code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1164276</commentid>
    <comment_count>5</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-02-12 12:42:49 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; Generally I would prefer we took the same approach here as with most of the
&gt; rest of the CSSOM and separated the internal type (StyleRule,
&gt; StyleSheetContents,...) and the external CSSOM type (CSSStyleRule,
&gt; CSSStyleSheet,...). This approach would involve renaming the current
&gt; CSSFontFace to StyleFontFace or similar and adding a new CSSFontFace type
&gt; (which calls into StyleFontFace) to provide the public API. 
&gt; 
&gt; Keeping the external and the internal cleanly separated allows more
&gt; flexibility in defining the internal structures and often leads to cleaner
&gt; code.

This patch is in preparation for implementing a JavaScript API, not a CSSOM API. However, I do agree with you about the distinction between internal and external APIs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1164298</commentid>
    <comment_count>6</comment_count>
      <attachid>271211</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-02-12 13:37:03 -0800</bug_when>
    <thetext>Created attachment 271211
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1164338</commentid>
    <comment_count>7</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-02-12 14:22:21 -0800</bug_when>
    <thetext>Committed r196510: &lt;http://trac.webkit.org/changeset/196510&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1164350</commentid>
    <comment_count>8</comment_count>
      <attachid>271211</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-02-12 14:32:27 -0800</bug_when>
    <thetext>Comment on attachment 271211
Patch

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

&gt; Source/WebCore/css/CSSFontFace.h:106
&gt; +    CSSFontFace(bool isLocalFallback);

Should mark this explicit.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>271112</attachid>
            <date>2016-02-11 18:03:54 -0800</date>
            <delta_ts>2016-02-11 19:22:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-154145-20160211180332.patch</filename>
            <type>text/plain</type>
            <size>66217</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk2NDM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjBiMmQxZDVjZWI2MmZm
OGQ4NzU0ZTBmMDFlNTU0OWRjMzE5M2I2ZC4uZWRhNDIxODVmY2IyNWZjZmE2NWUwNzE0YjAyZGU4
NzhmNWFiMzA1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDEwMiBAQAogMjAxNi0wMi0xMSAgTXls
ZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCisgICAgICAgIFtDU1MgRm9u
dCBMb2FkaW5nXSBJbXBsZW1lbnQgQ1NTRm9udEZhY2UgQm9pbGVycGxhdGUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NDE0NQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBDU1MgRm9udCBMb2FkaW5n
IHNwZWNbMV0gZGljdGF0ZXMgdGhhdCB0aGUgRm9udEZhY2Ugb2JqZWN0IG5lZWRzIHRvIGhhdmUg
c3RyaW5nCisgICAgICAgIGFjY2Vzc29ycyBhbmQgbXV0YXRvcnMgZm9yIGEgYnVuY2ggb2YgcHJv
cGVydGllcy4gT3VyIENTU0ZvbnRGYWNlIG9iamVjdCBjdXJyZW50bHkKKyAgICAgICAgY29udGFp
bnMgdGhpcyBwYXJzZWQgaW5mb3JtYXRpb24sIGJ1dCBpdCBpc24ndCBhY2Nlc3NpYmxlIHZpYSBz
dHJpbmctYmFzZWQgbWV0aG9kcy4KKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIHRoZSBuZWNlc3Nh
cnkgYWNjZXNzb3JzIGFuZCBtdXRhdG9ycywgYW5kIG1pZ3JhdGVzIENTU0ZvbnRTZWxlY3Rvcgor
ICAgICAgICB0byB1c2UgdGhlc2UgbXV0YXRvcnMgd2hlcmUgbmVjZXNzYXJ5LgorCisgICAgICAg
IFRoZXJlIGlzIG1vcmUgd29yayB0byBjb21lIG9uIENTU0ZvbnRGYWNlOyB0aGUgbmV4dCBzdGVw
IGlzIHRvIGNyZWF0ZSBhbiAuaWRsIGZpbGUKKyAgICAgICAgYW5kIGhvb2sgaXQgdXAgdG8gb3Vy
IENTU0ZvbnRGYWNlIG9iamVjdC4gSW4gdGhpcyBwYXRjaCBJIGhhdmUgbGVmdCBzb21lCisgICAg
ICAgIHVuaW1wbGVtZW50ZWQgcGllY2VzIChmb3IgZXhhbXBsZTogd2hlcmUgdGhlIHNwZWMgZGlj
dGF0ZXMgdGhhdCBzb21lIG9wZXJhdGlvbiBzaG91bGQKKyAgICAgICAgdGhyb3cgYSBKYXZhU2Ny
aXB0IGV4Y2VwdGlvbikgd2hpY2ggd2lsbCBiZSBpbXBsZW1lbnRlZCBpbiBhIGZvbGxvdy11cCBw
YXRjaC4gVGhpcworICAgICAgICBwYXRjaCBkb2VzIG5vdCBoYXZlIGFueSB2aXNpYmxlIGJlaGF2
aW9yIGNoYW5nZTsgSSdtIHNlcGFyYXRpbmcgb3V0IHRoZSBib2lsZXJwbGF0ZQorICAgICAgICBp
bnRvIHRoaXMgcGF0Y2ggaW4gb3JkZXIgdG8gZWFzZSByZXZpZXdpbmcgYnVyZGVuLgorCisgICAg
ICAgIFsxXSBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLWZvbnQtbG9hZGluZworCisgICAg
ICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoZXJlIGlzIG5vIGJlaGF2aW9yIGNoYW5nZS4KKwor
ICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBj
c3MvQ1NTRm9udEZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2U6OkNTU0Zv
bnRGYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlOjp+Q1NTRm9udEZhY2UpOgor
ICAgICAgICAoV2ViQ29yZTo6cGFyc2VTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9u
dEZhY2U6OnNldEZhbWlseSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZTo6c2V0U3R5
bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2U6OnNldFdlaWdodCk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NGb250RmFjZTo6c2V0U3RyZXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpD
U1NGb250RmFjZTo6c2V0VW5pY29kZVJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRG
YWNlOjpzZXRWYXJpYW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlOjpzZXRGZWF0
dXJlU2V0dGluZ3MpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2U6OnNldEZhbWlsaWVz
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlOjpzZXRWYXJpYW50TGlnYXR1cmVzKToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlOjpzZXRWYXJpYW50UG9zaXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2U6OnNldFZhcmlhbnRDYXBzKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU0ZvbnRGYWNlOjpzZXRWYXJpYW50TnVtZXJpYyk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NGb250RmFjZTo6c2V0VmFyaWFudEFsdGVybmF0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTRm9udEZhY2U6OnNldFZhcmlhbnRFYXN0QXNpYW4pOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
Rm9udEZhY2U6OmZhbWlseSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZTo6c3R5bGUp
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2U6OndlaWdodCk6CisgICAgICAgIChXZWJD
b3JlOjpDU1NGb250RmFjZTo6c3RyZXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFj
ZTo6dW5pY29kZVJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlOjp2YXJpYW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlOjpmZWF0dXJlU2V0dGluZ3MpOgorICAg
ICAgICAqIGNzcy9DU1NGb250RmFjZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2U6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZTo6c2V0VHJhaXRzTWFzayk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZTo6dHJhaXRzTWFzayk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NGb250RmFjZTo6aXNMb2NhbEZhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU0ZvbnRGYWNlOjphZGRSYW5nZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NG
b250RmFjZTo6aW5zZXJ0RmVhdHVyZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NG
b250RmFjZTo6c2V0VmFyaWFudENvbW1vbkxpZ2F0dXJlcyk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpDU1NGb250RmFjZTo6c2V0VmFyaWFudERpc2NyZXRpb25hcnlMaWdhdHVyZXMpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2U6OnNldFZhcmlhbnRIaXN0b3Jp
Y2FsTGlnYXR1cmVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlOjpz
ZXRWYXJpYW50Q29udGV4dHVhbEFsdGVybmF0ZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTRm9udEZhY2U6OnNldFZhcmlhbnRQb3NpdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpDU1NGb250RmFjZTo6c2V0VmFyaWFudENhcHMpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6Q1NTRm9udEZhY2U6OnNldFZhcmlhbnROdW1lcmljRmlndXJlKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlOjpzZXRWYXJpYW50TnVtZXJpY1NwYWNpbmcp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2U6OnNldFZhcmlhbnROdW1l
cmljRnJhY3Rpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2U6OnNl
dFZhcmlhbnROdW1lcmljT3JkaW5hbCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NG
b250RmFjZTo6c2V0VmFyaWFudE51bWVyaWNTbGFzaGVkWmVybyk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpDU1NGb250RmFjZTo6c2V0VmFyaWFudEFsdGVybmF0ZXMpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2U6OnNldFZhcmlhbnRFYXN0QXNpYW5WYXJpYW50
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlOjpzZXRWYXJpYW50RWFz
dEFzaWFuV2lkdGgpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2U6OnNl
dFZhcmlhbnRFYXN0QXNpYW5SdWJ5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU0Zv
bnRGYWNlOjpDU1NGb250RmFjZSk6IERlbGV0ZWQuCisgICAgICAgICogY3NzL0NTU0ZvbnRTZWxl
Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjphcHBlbmRTb3VyY2VzKToKKyAgICAgICAgKFdl
YkNvcmU6OnJlZ2lzdGVyTG9jYWxGb250RmFjZXNGb3JGYW1pbHkpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTRm9udFNlbGVjdG9yOjphZGRGb250RmFjZVJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6
Y29tcHV0ZVRyYWl0c01hc2spOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRm9u
dEZhY2UpOiBEZWxldGVkLgorICAgICAgICAqIGNzcy9Gb250VmFyaWFudEJ1aWxkZXIuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RGb250VmFyaWFudExpZ2F0dXJlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpleHRyYWN0Rm9udFZhcmlhbnROdW1lcmljKToKKyAgICAgICAgKFdl
YkNvcmU6OmV4dHJhY3RGb250VmFyaWFudEVhc3RBc2lhbik6CisgICAgICAgIChXZWJDb3JlOjpj
b21wdXRlRm9udFZhcmlhbnQpOgorICAgICAgICAqIGNzcy9Gb250VmFyaWFudEJ1aWxkZXIuaDoK
KyAgICAgICAgKFdlYkNvcmU6OmFwcGx5VmFsdWVGb250VmFyaWFudExpZ2F0dXJlcyk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjphcHBseVZhbHVlRm9udFZhcmlhbnROdW1lcmljKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmFwcGx5VmFsdWVGb250VmFyaWFudEVhc3RBc2lhbik6
IERlbGV0ZWQuCisgICAgICAgICogY3NzL1N0eWxlQnVpbGRlckN1c3RvbS5oOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlRm9udFZhcmlhbnRMaWdhdHVy
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlRm9u
dFZhcmlhbnROdW1lcmljKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckN1c3RvbTo6
YXBwbHlWYWx1ZUZvbnRWYXJpYW50RWFzdEFzaWFuKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0
L1RleHRGbGFncy5oOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFZhcmlhbnRMaWdhdHVyZXNWYWx1
ZXM6OkZvbnRWYXJpYW50TGlnYXR1cmVzVmFsdWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRW
YXJpYW50TnVtZXJpY1ZhbHVlczo6Rm9udFZhcmlhbnROdW1lcmljVmFsdWVzKToKKyAgICAgICAg
KFdlYkNvcmU6OkZvbnRWYXJpYW50RWFzdEFzaWFuVmFsdWVzOjpGb250VmFyaWFudEVhc3RBc2lh
blZhbHVlcyk6CisKKzIwMTYtMDItMTEgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFw
cGxlLmNvbT4KKwogICAgICAgICBBZGRyZXNzaW5nIHBvc3QtcmV2aWV3IGNvbW1lbnRzIGFmdGVy
IHIxOTYzOTMKIAogICAgICAgICBVbnJldmlld2VkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA3
YjUyMzA2YTI1YzE4ZjliYmI1NjQ4NTQxMTBhZmRiMTVhYTM0YmQzLi4yZjE4NTg1YzAxZDY4ZDhk
NWZlNmE3OTUyMGE5NTI4ZDg5MzIyZDFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTM1NCw2
ICsxMzU0LDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIGNzcy9Eb2N1bWVudFJ1bGVTZXRz
LmNwcAogICAgIGNzcy9FbGVtZW50UnVsZUNvbGxlY3Rvci5jcHAKICAgICBjc3MvRm9udExvYWRl
ci5jcHAKKyAgICBjc3MvRm9udFZhcmlhbnRCdWlsZGVyLmNwcAogICAgIGNzcy9JbnNwZWN0b3JD
U1NPTVdyYXBwZXJzLmNwcAogICAgIGNzcy9MZW5ndGhGdW5jdGlvbnMuY3BwCiAgICAgY3NzL01l
ZGlhRmVhdHVyZU5hbWVzLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52
Y3hwcm9qL1dlYkNvcmUudmN4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9X
ZWJDb3JlLnZjeHByb2oKaW5kZXggYzViNDdlY2MyNmQ1Zjg3ZTZkNjA1ZTM0YTJjZDQ3OWMzYzYx
YmJkYy4uMTg1OWI1ZWE5NzhiMmJlNjAxYzQ2NDQ1NzdkMjNiNjgzNmJlYzRlNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagorKysgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCkBAIC0xMDI0Miw2
ICsxMDI0MiwyMCBAQAogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnxXaW4zMiciPnRydWU8L0V4Y2x1
ZGVkRnJvbUJ1aWxkPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnx4NjQnIj50cnVlPC9FeGNsdWRl
ZEZyb21CdWlsZD4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XGNzc1xGb250VmFyaWFudEJ1aWxkZXIuY3BwIj4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+
dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj50cnVlPC9F
eGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnX1dpbkNhaXJvfFdpbjMyJyI+dHJ1
ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z19XaW5DYWlyb3x4NjQnIj50
cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnU3VmZml4fFdpbjMyJyI+
dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHx4NjQnIj50
cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj50cnVl
PC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+dHJ1ZTwvRXhj
bHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJvfFdpbjMyJyI+dHJ1
ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJvfHg2NCci
PnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnxXaW4zMici
PnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnx4NjQnIj50
cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXGNzc1xGb250TG9hZGVyLmNwcCI+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVp
bGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4z
MiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+dHJ1
ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKaW5kZXggYzBlMDg2OTMxYTg4NDU0Yjc1
MGViMWQzM2VmYzNjOGRhZWI1ZTA1Zi4uNDZkOTdiNzk3OWQxYTc4NzY2ODAzOTI5M2E2YmNkNmVm
MDM1NDhlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNv
cmUudmN4cHJvai5maWx0ZXJzCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9X
ZWJDb3JlLnZjeHByb2ouZmlsdGVycwpAQCAtMjIyMiw2ICsyMjIyLDkgQEAKICAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXGNzc1xDU1NWYXJpYWJsZVZhbHVlLmNwcCI+CiAgICAgICA8RmlsdGVy
PmNzczwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5cY3NzXEZvbnRWYXJpYW50QnVpbGRlci5jcHAiPgorICAgICAgPEZpbHRlcj5jc3M8L0ZpbHRl
cj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGNzc1xGb250
TG9hZGVyLmNwcCI+CiAgICAgICA8RmlsdGVyPmNzczwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxl
PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IDI3Y2ExZGFkZThjMTI3NDg5Njg0YzVlODk2OWEwNDBmZWU3MzJjYjMuLjIyYzVjMzRj
ZGU1ODBjYjIxZWU2MTQ1ZjQ1MjUwNDYwNTE4Y2YzM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTk1MSw2ICs5NTEsNyBAQAog
CQkxQzIxRTU3RDE4M0VEMUZGMDAxQzI4OUQgLyogSU9TdXJmYWNlUG9vbC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUMyMUU1N0IxODNFRDFGRjAwMUMy
ODlEIC8qIElPU3VyZmFjZVBvb2wuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkxQzI0MTdCQTE5OTJDMDQxMDBFRjk5MzggLyogU3BlbGxpbmdEb3RA
M3gucG5nIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
QzI0MTdCOTE5OTJDMDQxMDBFRjk5MzggLyogU3BlbGxpbmdEb3RAM3gucG5nICovOyB9OwogCQkx
QzI2NDk3QTBEN0UyNDhBMDBCRDEwRjIgLyogRG9jdW1lbnRMb2FkZXJNYWMuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUMyNjQ5NzkwRDdFMjQ4QTAw
QkQxMEYyIC8qIERvY3VtZW50TG9hZGVyTWFjLmNwcCAqLzsgfTsKKwkJMUMzMjQ5MTExQzZENkEz
QjAwN0VEQjMyIC8qIEZvbnRWYXJpYW50QnVpbGRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzMyNDkxMDFDNkQ2QTNCMDA3RURCMzIgLyogRm9u
dFZhcmlhbnRCdWlsZGVyLmNwcCAqLzsgfTsKIAkJMUMzOTY5RDAxQjc0MjExRTAwMkJDRkE3IC8q
IEZvbnRDYWNoZUNvcmVUZXh0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDFDMzk2OUNGMUI3NDIxMUUwMDJCQ0ZBNyAvKiBGb250Q2FjaGVDb3JlVGV4
dC5jcHAgKi87IH07CiAJCTFDNjQ2NjI1MUExMkMzOEUwMDk0NjAzQyAvKiBDb3JlVGV4dFNQSS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM1RTk4MEYx
QTAyQ0VGQTAwMkRCNTVGIC8qIENvcmVUZXh0U1BJLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUM2NDY2MjgxQTEyQzQyMDAwOTQ2MDNDIC8qIE5T
Rm9udFNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MUM2NDY2MjcxQTEyQzNGOTAwOTQ2MDNDIC8qIE5TRm9udFNQSS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC04MzUxLDYgKzgzNTIsNyBAQAogCQkx
QzIxRTU3QjE4M0VEMUZGMDAxQzI4OUQgLyogSU9TdXJmYWNlUG9vbC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBJT1N1cmZhY2VQb29sLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTFDMjQxN0I5MTk5MkMwNDEwMEVGOTkzOCAvKiBTcGVsbGluZ0RvdEAzeC5wbmcg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBpbWFnZS5w
bmc7IHBhdGggPSAiU3BlbGxpbmdEb3RAM3gucG5nIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMUMyNjQ5NzkwRDdFMjQ4QTAwQkQxMEYyIC8qIERvY3VtZW50TG9hZGVyTWFjLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERvY3VtZW50TG9hZGVyTWFjLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUMzMjQ5MTAxQzZENkEzQjAwN0VEQjMy
IC8qIEZvbnRWYXJpYW50QnVpbGRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBGb250VmFyaWFudEJ1aWxkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkxQzM5NjlDRjFCNzQyMTFFMDAyQkNGQTcgLyogRm9udENhY2hlQ29yZVRleHQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9udENhY2hlQ29yZVRleHQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzVFOTgwRjFBMDJDRUZBMDAyREI1NUYg
LyogQ29yZVRleHRTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29yZVRleHRTUEkuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM2NDY2MjcxQTEyQzNGOTAwOTQ2MDNDIC8qIE5TRm9udFNQ
SS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBOU0ZvbnRTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTIzNzAwLDYgKzIzNzAyLDcgQEAKIAkJCQkzRkZGRjlBNjE1OUQ5QTU1MDAyMEJCRDUg
LyogV2ViS2l0Q1NTVmlld3BvcnRSdWxlLmNwcCAqLywKIAkJCQkzRkZGRjlBNzE1OUQ5QTU1MDAy
MEJCRDUgLyogV2ViS2l0Q1NTVmlld3BvcnRSdWxlLmggKi8sCiAJCQkJM0YyQjMzRTMxNjVBQkQz
NTAwRTM5ODdDIC8qIFdlYktpdENTU1ZpZXdwb3J0UnVsZS5pZGwgKi8sCisJCQkJMUMzMjQ5MTAx
QzZENkEzQjAwN0VEQjMyIC8qIEZvbnRWYXJpYW50QnVpbGRlci5jcHAgKi8sCiAJCQkpOwogCQkJ
cGF0aCA9IGNzczsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0yOTkwNyw2ICsyOTkx
MCw3IEBACiAJCQkJQjI3NTM1N0QwQjA1MzgxNDAwMkNFNjRGIC8qIEludFJlY3RNYWMubW0gaW4g
U291cmNlcyAqLywKIAkJCQkyRDQ2RjA1MDE3Qjk2RkQyMDA1NjQ3RjAgLyogSW50U2l6ZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlCMjc1MzU2MjBCMDUzODE0MDAyQ0U2NEYgLyogSW50U2l6ZUNH
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTFDMzI0OTExMUM2RDZBM0IwMDdFREIzMiAvKiBGb250
VmFyaWFudEJ1aWxkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjI3NTM1N0UwQjA1MzgxNDAw
MkNFNjRGIC8qIEludFNpemVNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQkyRDBCNEFBQzE4REEx
Q0NEMDA0MzRERTEgLyogSU9TdXJmYWNlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUMyMUU1N0Mx
ODNFRDFGRjAwMUMyODlEIC8qIElPU3VyZmFjZVBvb2wuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQWxsSW5PbmUuY3BwIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0FsbEluT25lLmNwcAppbmRleCA3NDkwNDhmMjJmNjBjNWMwMDExYTVmMGZmMWUz
ODlkNzc5M2M3M2UyLi5iNTNhYTkxYjI3Yjc0MmYwZDQ5MzA5MjliNjE1YTU1Y2RlNTc1NzE5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQWxsSW5PbmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NBbGxJbk9uZS5jcHAKQEAgLTk0LDYgKzk0LDcgQEAKICNpbmNsdWRl
ICJEb2N1bWVudFJ1bGVTZXRzLmNwcCIKICNpbmNsdWRlICJFbGVtZW50UnVsZUNvbGxlY3Rvci5j
cHAiCiAjaW5jbHVkZSAiRm9udExvYWRlci5jcHAiCisjaW5jbHVkZSAiRm9udFZhcmlhbnRCdWls
ZGVyLmNwcCIKICNpbmNsdWRlICJJbnNwZWN0b3JDU1NPTVdyYXBwZXJzLmNwcCIKICNpbmNsdWRl
ICJMZW5ndGhGdW5jdGlvbnMuY3BwIgogI2luY2x1ZGUgIk1lZGlhTGlzdC5jcHAiCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0ZvbnRGYWNlLmNwcAppbmRleCA5YjFiMjdhZWVhZGMzNmE3NTQ0NjIyZGNjOTdjZTUw
MjA1MjcyNjIzLi4yZTk1M2U5OGViYjg5NTA2MmY4YmU2ZmQ0NTYzZmRhMTQxMWJlNjFmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5jcHAKQEAgLTI3LDE2ICsyNywzNDkgQEAKICNpbmNsdWRl
ICJDU1NGb250RmFjZS5oIgogCiAjaW5jbHVkZSAiQ1NTRm9udEZhY2VTb3VyY2UuaCIKKyNpbmNs
dWRlICJDU1NGb250RmFtaWx5LmgiCisjaW5jbHVkZSAiQ1NTRm9udEZlYXR1cmVWYWx1ZS5oIgog
I2luY2x1ZGUgIkNTU0ZvbnRTZWxlY3Rvci5oIgorI2luY2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVl
TWFwcGluZ3MuaCIKICNpbmNsdWRlICJDU1NTZWdtZW50ZWRGb250RmFjZS5oIgorI2luY2x1ZGUg
IkNTU1VuaWNvZGVSYW5nZVZhbHVlLmgiCisjaW5jbHVkZSAiQ1NTVmFsdWUuaCIKKyNpbmNsdWRl
ICJDU1NWYWx1ZUxpc3QuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkZvbnQu
aCIKICNpbmNsdWRlICJGb250RGVzY3JpcHRpb24uaCIKICNpbmNsdWRlICJGb250TG9hZGVyLmgi
CisjaW5jbHVkZSAiRm9udFZhcmlhbnRCdWlsZGVyLmgiCiAjaW5jbHVkZSAiUnVudGltZUVuYWJs
ZWRGZWF0dXJlcy5oIgorI2luY2x1ZGUgIlN0eWxlUHJvcGVydGllcy5oIgorI2luY2x1ZGUgPHd0
Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitDU1NGb250
RmFjZTo6Q1NTRm9udEZhY2UoYm9vbCBpc0xvY2FsRmFsbGJhY2spCisgICAgOiBtX2lzTG9jYWxG
YWxsYmFjayhpc0xvY2FsRmFsbGJhY2spCit7Cit9CisKK0NTU0ZvbnRGYWNlOjp+Q1NTRm9udEZh
Y2UoKQoreworfQorCitzdGF0aWMgaW5saW5lIFJlZlB0cjxDU1NWYWx1ZT4gcGFyc2VTdHJpbmco
Y29uc3QgU3RyaW5nJiBzdHJpbmcsIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCkKK3sKKyAgICBS
ZWY8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gc3R5bGUgPSBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVz
OjpjcmVhdGUoKTsKKyAgICBhdXRvIHJlc3VsdCA9IENTU1BhcnNlcjo6cGFyc2VWYWx1ZShzdHls
ZS5wdHIoKSwgcHJvcGVydHlJRCwgc3RyaW5nLCB0cnVlLCBDU1NTdHJpY3RNb2RlLCBudWxscHRy
KTsKKyAgICBpZiAocmVzdWx0ID09IENTU1BhcnNlcjo6UGFyc2VSZXN1bHQ6OkVycm9yKQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gc3R5bGUtPmdldFByb3BlcnR5Q1NTVmFs
dWUocHJvcGVydHlJRCk7Cit9CisKK3ZvaWQgQ1NTRm9udEZhY2U6OnNldEZhbWlseShjb25zdCBT
dHJpbmcmIGZhbWlseSkKK3sKKyAgICBib29sIHN1Y2Nlc3MgPSBmYWxzZTsKKyAgICBpZiAoYXV0
byB2YWx1ZSA9IHBhcnNlU3RyaW5nKGZhbWlseSwgQ1NTUHJvcGVydHlGb250RmFtaWx5KSkKKyAg
ICAgICAgc3VjY2VzcyA9IHNldEZhbWlsaWVzKCp2YWx1ZSk7CisgICAgLy8gaWYgKCFzdWNjZXNz
KSB7IFRocm93IGEgU3ludGF4RXJyb3IgfQorfQorCit2b2lkIENTU0ZvbnRGYWNlOjpzZXRTdHls
ZShjb25zdCBTdHJpbmcmIHN0eWxlKQoreworICAgIGJvb2wgc3VjY2VzcyA9IGZhbHNlOworICAg
IGlmIChhdXRvIHZhbHVlID0gcGFyc2VTdHJpbmcoc3R5bGUsIENTU1Byb3BlcnR5Rm9udFN0eWxl
KSkKKyAgICAgICAgc3VjY2VzcyA9IHNldFN0eWxlKCp2YWx1ZSk7CisgICAgLy8gaWYgKCFzdWNj
ZXNzKSB7IFRocm93IGEgU3ludGF4RXJyb3IgfQorfQorCit2b2lkIENTU0ZvbnRGYWNlOjpzZXRX
ZWlnaHQoY29uc3QgU3RyaW5nJiB3ZWlnaHQpCit7CisgICAgYm9vbCBzdWNjZXNzID0gZmFsc2U7
CisgICAgaWYgKGF1dG8gdmFsdWUgPSBwYXJzZVN0cmluZyh3ZWlnaHQsIENTU1Byb3BlcnR5Rm9u
dFdlaWdodCkpCisgICAgICAgIHN1Y2Nlc3MgPSBzZXRXZWlnaHQoKnZhbHVlKTsKKyAgICAvLyBp
ZiAoIXN1Y2Nlc3MpIHsgVGhyb3cgYSBTeW50YXhFcnJvciB9Cit9CisKK3ZvaWQgQ1NTRm9udEZh
Y2U6OnNldFN0cmV0Y2goY29uc3QgU3RyaW5nJikKK3sKKyAgICAvLyBXZSBkb24ndCBzdXBwb3J0
IGZvbnQtc3RyZXRjaC4gU3dhbGxvdyB0aGUgY2FsbC4KK30KKwordm9pZCBDU1NGb250RmFjZTo6
c2V0VW5pY29kZVJhbmdlKGNvbnN0IFN0cmluZyYgdW5pY29kZVJhbmdlKQoreworICAgIGJvb2wg
c3VjY2VzcyA9IGZhbHNlOworICAgIGlmIChhdXRvIHZhbHVlID0gcGFyc2VTdHJpbmcodW5pY29k
ZVJhbmdlLCBDU1NQcm9wZXJ0eVVuaWNvZGVSYW5nZSkpCisgICAgICAgIHN1Y2Nlc3MgPSBzZXRV
bmljb2RlUmFuZ2UoKnZhbHVlKTsKKyAgICAvLyBpZiAoIXN1Y2Nlc3MpIHsgVGhyb3cgYSBTeW50
YXhFcnJvciB9Cit9CisKK3ZvaWQgQ1NTRm9udEZhY2U6OnNldFZhcmlhbnQoY29uc3QgU3RyaW5n
JiB2YXJpYW50KQoreworICAgIFJlZjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBzdHlsZSA9IE11
dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZSgpOworICAgIGF1dG8gcmVzdWx0ID0gQ1NTUGFy
c2VyOjpwYXJzZVZhbHVlKHN0eWxlLnB0cigpLCBDU1NQcm9wZXJ0eUZvbnRWYXJpYW50LCB2YXJp
YW50LCB0cnVlLCBDU1NTdHJpY3RNb2RlLCBudWxscHRyKTsKKyAgICBpZiAocmVzdWx0ICE9IENT
U1BhcnNlcjo6UGFyc2VSZXN1bHQ6OkVycm9yKSB7CisgICAgICAgIEZvbnRWYXJpYW50U2V0dGlu
Z3MgYmFja3VwID0gbV92YXJpYW50U2V0dGluZ3M7CisgICAgICAgIGJvb2wgc3VjY2VzcyA9IHRy
dWU7CisgICAgICAgIGlmIChhdXRvIHZhbHVlID0gc3R5bGUtPmdldFByb3BlcnR5Q1NTVmFsdWUo
Q1NTUHJvcGVydHlGb250VmFyaWFudExpZ2F0dXJlcykpCisgICAgICAgICAgICBzdWNjZXNzICY9
IHNldFZhcmlhbnRMaWdhdHVyZXMoKnZhbHVlKTsKKyAgICAgICAgaWYgKGF1dG8gdmFsdWUgPSBz
dHlsZS0+Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eUZvbnRWYXJpYW50UG9zaXRpb24p
KQorICAgICAgICAgICAgc3VjY2VzcyAmPSBzZXRWYXJpYW50UG9zaXRpb24oKnZhbHVlKTsKKyAg
ICAgICAgaWYgKGF1dG8gdmFsdWUgPSBzdHlsZS0+Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9w
ZXJ0eUZvbnRWYXJpYW50Q2FwcykpCisgICAgICAgICAgICBzdWNjZXNzICY9IHNldFZhcmlhbnRD
YXBzKCp2YWx1ZSk7CisgICAgICAgIGlmIChhdXRvIHZhbHVlID0gc3R5bGUtPmdldFByb3BlcnR5
Q1NTVmFsdWUoQ1NTUHJvcGVydHlGb250VmFyaWFudE51bWVyaWMpKQorICAgICAgICAgICAgc3Vj
Y2VzcyAmPSBzZXRWYXJpYW50TnVtZXJpYygqdmFsdWUpOworICAgICAgICBpZiAoYXV0byB2YWx1
ZSA9IHN0eWxlLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5Rm9udFZhcmlhbnRBbHRl
cm5hdGVzKSkKKyAgICAgICAgICAgIHN1Y2Nlc3MgJj0gc2V0VmFyaWFudEFsdGVybmF0ZXMoKnZh
bHVlKTsKKyAgICAgICAgaWYgKGF1dG8gdmFsdWUgPSBzdHlsZS0+Z2V0UHJvcGVydHlDU1NWYWx1
ZShDU1NQcm9wZXJ0eUZvbnRWYXJpYW50RWFzdEFzaWFuKSkKKyAgICAgICAgICAgIHN1Y2Nlc3Mg
Jj0gc2V0VmFyaWFudEVhc3RBc2lhbigqdmFsdWUpOworICAgICAgICBpZiAoc3VjY2VzcykKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV92YXJpYW50U2V0dGluZ3MgPSBiYWNrdXA7Cisg
ICAgfQorICAgIC8vIFRocm93IGEgU3ludGF4RXJyb3IKK30KKwordm9pZCBDU1NGb250RmFjZTo6
c2V0RmVhdHVyZVNldHRpbmdzKGNvbnN0IFN0cmluZyYgZmVhdHVyZVNldHRpbmdzKQoreworICAg
IGJvb2wgc3VjY2VzcyA9IGZhbHNlOworICAgIGlmIChhdXRvIHZhbHVlID0gcGFyc2VTdHJpbmco
ZmVhdHVyZVNldHRpbmdzLCBDU1NQcm9wZXJ0eUZvbnRGZWF0dXJlU2V0dGluZ3MpKQorICAgICAg
ICBzdWNjZXNzID0gc2V0RmVhdHVyZVNldHRpbmdzKCp2YWx1ZSk7CisgICAgLy8gaWYgKCFzdWNj
ZXNzKSB7IFRocm93IGEgU3ludGF4RXJyb3IgfQorfQorCitib29sIENTU0ZvbnRGYWNlOjpzZXRG
YW1pbGllcyhDU1NWYWx1ZSYgZmFtaWx5KQoreworICAgIGlmICghaXM8Q1NTVmFsdWVMaXN0Pihm
YW1pbHkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBDU1NWYWx1ZUxpc3QmIGZhbWls
eUxpc3QgPSBkb3duY2FzdDxDU1NWYWx1ZUxpc3Q+KGZhbWlseSk7CisgICAgaWYgKCFmYW1pbHlM
aXN0Lmxlbmd0aCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBtX2ZhbWlsaWVzID0g
JmZhbWlseUxpc3Q7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgQ1NTRm9udEZhY2U6OnNl
dFN0eWxlKENTU1ZhbHVlJiBzdHlsZSkKK3sKKyAgICBpZiAoIWlzPENTU1ByaW1pdGl2ZVZhbHVl
PihzdHlsZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHVuc2lnbmVkIHN0eWxlTWFz
ayA9IDA7CisgICAgc3dpdGNoIChkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oc3R5bGUpLmdl
dFZhbHVlSUQoKSkgeworICAgIGNhc2UgQ1NTVmFsdWVOb3JtYWw6CisgICAgICAgIHN0eWxlTWFz
ayA9IEZvbnRTdHlsZU5vcm1hbE1hc2s7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTVmFs
dWVJdGFsaWM6CisgICAgY2FzZSBDU1NWYWx1ZU9ibGlxdWU6CisgICAgICAgIHN0eWxlTWFzayA9
IEZvbnRTdHlsZUl0YWxpY01hc2s7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBtX3RyYWl0c01hc2sgPSBzdGF0aWNfY2Fz
dDxGb250VHJhaXRzTWFzaz4oKHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3RyYWl0c01hc2spICYg
KH5Gb250U3R5bGVNYXNrKSkgfCBzdHlsZU1hc2spOworICAgIHJldHVybiB0cnVlOworfQorCiti
b29sIENTU0ZvbnRGYWNlOjpzZXRXZWlnaHQoQ1NTVmFsdWUmIHdlaWdodCkKK3sKKyAgICBpZiAo
IWlzPENTU1ByaW1pdGl2ZVZhbHVlPih3ZWlnaHQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICB1bnNpZ25lZCB3ZWlnaHRNYXNrID0gMDsKKyAgICBzd2l0Y2ggKGRvd25jYXN0PENTU1By
aW1pdGl2ZVZhbHVlPih3ZWlnaHQpLmdldFZhbHVlSUQoKSkgeworICAgIGNhc2UgQ1NTVmFsdWVC
b2xkOgorICAgIGNhc2UgQ1NTVmFsdWU3MDA6CisgICAgICAgIHdlaWdodE1hc2sgPSBGb250V2Vp
Z2h0NzAwTWFzazsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NWYWx1ZU5vcm1hbDoKKyAg
ICBjYXNlIENTU1ZhbHVlNDAwOgorICAgICAgICB3ZWlnaHRNYXNrID0gRm9udFdlaWdodDQwME1h
c2s7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTVmFsdWU5MDA6CisgICAgICAgIHdlaWdo
dE1hc2sgPSBGb250V2VpZ2h0OTAwTWFzazsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NW
YWx1ZTgwMDoKKyAgICAgICAgd2VpZ2h0TWFzayA9IEZvbnRXZWlnaHQ4MDBNYXNrOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIENTU1ZhbHVlNjAwOgorICAgICAgICB3ZWlnaHRNYXNrID0gRm9u
dFdlaWdodDYwME1hc2s7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTVmFsdWU1MDA6Cisg
ICAgICAgIHdlaWdodE1hc2sgPSBGb250V2VpZ2h0NTAwTWFzazsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBDU1NWYWx1ZTMwMDoKKyAgICAgICAgd2VpZ2h0TWFzayA9IEZvbnRXZWlnaHQzMDBN
YXNrOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1ZhbHVlMjAwOgorICAgICAgICB3ZWln
aHRNYXNrID0gRm9udFdlaWdodDIwME1hc2s7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NT
VmFsdWUxMDA6CisgICAgICAgIHdlaWdodE1hc2sgPSBGb250V2VpZ2h0MTAwTWFzazsKKyAgICAg
ICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgbV90
cmFpdHNNYXNrID0gc3RhdGljX2Nhc3Q8Rm9udFRyYWl0c01hc2s+KChzdGF0aWNfY2FzdDx1bnNp
Z25lZD4obV90cmFpdHNNYXNrKSAmICh+Rm9udFdlaWdodE1hc2spKSB8IHdlaWdodE1hc2spOwor
ICAgIHJldHVybiB0cnVlOworfQorCitib29sIENTU0ZvbnRGYWNlOjpzZXRVbmljb2RlUmFuZ2Uo
Q1NTVmFsdWUmIHVuaWNvZGVSYW5nZSkKK3sKKyAgICBpZiAoIWlzPENTU1ZhbHVlTGlzdD4odW5p
Y29kZVJhbmdlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgbV9yYW5nZXMuY2xlYXIo
KTsKKyAgICBhdXRvJiBsaXN0ID0gZG93bmNhc3Q8Q1NTVmFsdWVMaXN0Pih1bmljb2RlUmFuZ2Up
OworICAgIGZvciAoYXV0byYgcmFuZ2VWYWx1ZSA6IGxpc3QpIHsKKyAgICAgICAgQ1NTVW5pY29k
ZVJhbmdlVmFsdWUmIHJhbmdlID0gZG93bmNhc3Q8Q1NTVW5pY29kZVJhbmdlVmFsdWU+KHJhbmdl
VmFsdWUuZ2V0KCkpOworICAgICAgICBtX3Jhbmdlcy5hcHBlbmQoVW5pY29kZVJhbmdlKHJhbmdl
LmZyb20oKSwgcmFuZ2UudG8oKSkpOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9v
bCBDU1NGb250RmFjZTo6c2V0VmFyaWFudExpZ2F0dXJlcyhDU1NWYWx1ZSYgdmFyaWFudExpZ2F0
dXJlcykKK3sKKyAgICBhdXRvIGxpZ2F0dXJlcyA9IGV4dHJhY3RGb250VmFyaWFudExpZ2F0dXJl
cyh2YXJpYW50TGlnYXR1cmVzKTsKKyAgICBtX3ZhcmlhbnRTZXR0aW5ncy5jb21tb25MaWdhdHVy
ZXMgPSBsaWdhdHVyZXMuY29tbW9uTGlnYXR1cmVzOworICAgIG1fdmFyaWFudFNldHRpbmdzLmRp
c2NyZXRpb25hcnlMaWdhdHVyZXMgPSBsaWdhdHVyZXMuZGlzY3JldGlvbmFyeUxpZ2F0dXJlczsK
KyAgICBtX3ZhcmlhbnRTZXR0aW5ncy5oaXN0b3JpY2FsTGlnYXR1cmVzID0gbGlnYXR1cmVzLmhp
c3RvcmljYWxMaWdhdHVyZXM7CisgICAgbV92YXJpYW50U2V0dGluZ3MuY29udGV4dHVhbEFsdGVy
bmF0ZXMgPSBsaWdhdHVyZXMuY29udGV4dHVhbEFsdGVybmF0ZXM7CisgICAgcmV0dXJuIHRydWU7
Cit9CisKK2Jvb2wgQ1NTRm9udEZhY2U6OnNldFZhcmlhbnRQb3NpdGlvbihDU1NWYWx1ZSYgdmFy
aWFudFBvc2l0aW9uKQoreworICAgIGlmICghaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhcmlhbnRQ
b3NpdGlvbikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBtX3ZhcmlhbnRTZXR0aW5ncy5w
b3NpdGlvbiA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YXJpYW50UG9zaXRpb24pOwor
ICAgIHJldHVybiB0cnVlOworfQorCitib29sIENTU0ZvbnRGYWNlOjpzZXRWYXJpYW50Q2FwcyhD
U1NWYWx1ZSYgdmFyaWFudENhcHMpCit7CisgICAgaWYgKCFpczxDU1NQcmltaXRpdmVWYWx1ZT4o
dmFyaWFudENhcHMpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgbV92YXJpYW50U2V0dGlu
Z3MuY2FwcyA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YXJpYW50Q2Fwcyk7CisgICAg
cmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgQ1NTRm9udEZhY2U6OnNldFZhcmlhbnROdW1lcmljKENT
U1ZhbHVlJiB2YXJpYW50TnVtZXJpYykKK3sKKyAgICBhdXRvIG51bWVyaWMgPSBleHRyYWN0Rm9u
dFZhcmlhbnROdW1lcmljKHZhcmlhbnROdW1lcmljKTsKKyAgICBtX3ZhcmlhbnRTZXR0aW5ncy5u
dW1lcmljRmlndXJlID0gbnVtZXJpYy5maWd1cmU7CisgICAgbV92YXJpYW50U2V0dGluZ3MubnVt
ZXJpY1NwYWNpbmcgPSBudW1lcmljLnNwYWNpbmc7CisgICAgbV92YXJpYW50U2V0dGluZ3MubnVt
ZXJpY0ZyYWN0aW9uID0gbnVtZXJpYy5mcmFjdGlvbjsKKyAgICBtX3ZhcmlhbnRTZXR0aW5ncy5u
dW1lcmljT3JkaW5hbCA9IG51bWVyaWMub3JkaW5hbDsKKyAgICBtX3ZhcmlhbnRTZXR0aW5ncy5u
dW1lcmljU2xhc2hlZFplcm8gPSBudW1lcmljLnNsYXNoZWRaZXJvOworICAgIHJldHVybiB0cnVl
OworfQorCitib29sIENTU0ZvbnRGYWNlOjpzZXRWYXJpYW50QWx0ZXJuYXRlcyhDU1NWYWx1ZSYg
dmFyaWFudEFsdGVybmF0ZXMpCit7CisgICAgaWYgKCFpczxDU1NQcmltaXRpdmVWYWx1ZT4odmFy
aWFudEFsdGVybmF0ZXMpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgbV92YXJpYW50U2V0
dGluZ3MuYWx0ZXJuYXRlcyA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YXJpYW50QWx0
ZXJuYXRlcyk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgQ1NTRm9udEZhY2U6OnNldFZh
cmlhbnRFYXN0QXNpYW4oQ1NTVmFsdWUmIHZhcmlhbnRFYXN0QXNpYW4pCit7CisgICAgYXV0byBl
YXN0QXNpYW4gPSBleHRyYWN0Rm9udFZhcmlhbnRFYXN0QXNpYW4odmFyaWFudEVhc3RBc2lhbik7
CisgICAgbV92YXJpYW50U2V0dGluZ3MuZWFzdEFzaWFuVmFyaWFudCA9IGVhc3RBc2lhbi52YXJp
YW50OworICAgIG1fdmFyaWFudFNldHRpbmdzLmVhc3RBc2lhbldpZHRoID0gZWFzdEFzaWFuLndp
ZHRoOworICAgIG1fdmFyaWFudFNldHRpbmdzLmVhc3RBc2lhblJ1YnkgPSBlYXN0QXNpYW4ucnVi
eTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBDU1NGb250RmFjZTo6c2V0RmVhdHVyZVNl
dHRpbmdzKENTU1ZhbHVlJiBmZWF0dXJlU2V0dGluZ3MpCit7CisgICAgaWYgKCFpczxDU1NWYWx1
ZUxpc3Q+KGZlYXR1cmVTZXR0aW5ncykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIG1f
ZmVhdHVyZVNldHRpbmdzID0gRm9udEZlYXR1cmVTZXR0aW5ncygpOworICAgIGF1dG8mIGxpc3Qg
PSBkb3duY2FzdDxDU1NWYWx1ZUxpc3Q+KGZlYXR1cmVTZXR0aW5ncyk7CisgICAgZm9yIChhdXRv
JiByYW5nZVZhbHVlIDogbGlzdCkgeworICAgICAgICBDU1NGb250RmVhdHVyZVZhbHVlJiBmZWF0
dXJlID0gZG93bmNhc3Q8Q1NTRm9udEZlYXR1cmVWYWx1ZT4ocmFuZ2VWYWx1ZS5nZXQoKSk7Cisg
ICAgICAgIG1fZmVhdHVyZVNldHRpbmdzLmluc2VydChGb250RmVhdHVyZShmZWF0dXJlLnRhZygp
LCBmZWF0dXJlLnZhbHVlKCkpKTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK1N0cmlu
ZyBDU1NGb250RmFjZTo6ZmFtaWx5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9mYW1pbGllcy0+
Y3NzVGV4dCgpOworfQorCitTdHJpbmcgQ1NTRm9udEZhY2U6OnN0eWxlKCkgY29uc3QKK3sKKyAg
ICBzd2l0Y2ggKG1fdHJhaXRzTWFzayAmIEZvbnRTdHlsZU1hc2spIHsKKyAgICBjYXNlIEZvbnRT
dHlsZU5vcm1hbE1hc2s6CisgICAgICAgIHJldHVybiBTdHJpbmcoIm5vcm1hbCIsIFN0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIGNhc2UgRm9udFN0eWxlSXRhbGljTWFzazoKKyAg
ICAgICAgcmV0dXJuIFN0cmluZygiaXRhbGljIiwgU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCk7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBTdHJpbmco
Im5vcm1hbCIsIFN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworfQorCitTdHJpbmcgQ1NT
Rm9udEZhY2U6OndlaWdodCgpIGNvbnN0Cit7CisgICAgc3dpdGNoIChtX3RyYWl0c01hc2sgJiBG
b250V2VpZ2h0TWFzaykgeworICAgIGNhc2UgRm9udFdlaWdodDEwME1hc2s6CisgICAgICAgIHJl
dHVybiBTdHJpbmcoIjEwMCIsIFN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIGNh
c2UgRm9udFdlaWdodDIwME1hc2s6CisgICAgICAgIHJldHVybiBTdHJpbmcoIjIwMCIsIFN0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIGNhc2UgRm9udFdlaWdodDMwME1hc2s6Cisg
ICAgICAgIHJldHVybiBTdHJpbmcoIjMwMCIsIFN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
OworICAgIGNhc2UgRm9udFdlaWdodDQwME1hc2s6CisgICAgICAgIHJldHVybiBTdHJpbmcoIm5v
cm1hbCIsIFN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIGNhc2UgRm9udFdlaWdo
dDUwME1hc2s6CisgICAgICAgIHJldHVybiBTdHJpbmcoIjUwMCIsIFN0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpOworICAgIGNhc2UgRm9udFdlaWdodDYwME1hc2s6CisgICAgICAgIHJldHVy
biBTdHJpbmcoIjYwMCIsIFN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIGNhc2Ug
Rm9udFdlaWdodDcwME1hc2s6CisgICAgICAgIHJldHVybiBTdHJpbmcoImJvbGQiLCBTdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBjYXNlIEZvbnRXZWlnaHQ4MDBNYXNrOgorICAg
ICAgICByZXR1cm4gU3RyaW5nKCI4MDAiLCBTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsK
KyAgICBjYXNlIEZvbnRXZWlnaHQ5MDBNYXNrOgorICAgICAgICByZXR1cm4gU3RyaW5nKCI5MDAi
LCBTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICB9CisgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgcmV0dXJuIFN0cmluZygibm9ybWFsIiwgU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCk7Cit9CisKK1N0cmluZyBDU1NGb250RmFjZTo6c3RyZXRjaCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuICJub3JtYWwiOworfQorCitTdHJpbmcgQ1NTRm9udEZhY2U6OnVuaWNvZGVS
YW5nZSgpIGNvbnN0Cit7CisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbV9yYW5nZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKGkpCisg
ICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiLCAiKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQo
U3RyaW5nOjpmb3JtYXQoIlUrJXgtJXgiLCBtX3Jhbmdlc1tpXS5mcm9tKCksIG1fcmFuZ2VzW2ld
LnRvKCkpKTsKKyAgICB9CisgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKK30KKworU3Ry
aW5nIENTU0ZvbnRGYWNlOjp2YXJpYW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gY29tcHV0ZUZv
bnRWYXJpYW50KG1fdmFyaWFudFNldHRpbmdzKS0+Y3NzVGV4dCgpOworfQorCitTdHJpbmcgQ1NT
Rm9udEZhY2U6OmZlYXR1cmVTZXR0aW5ncygpIGNvbnN0Cit7CisgICAgaWYgKCFtX2ZlYXR1cmVT
ZXR0aW5ncy5zaXplKCkpCisgICAgICAgIHJldHVybiAibm9ybWFsIjsKKyAgICBSZWZQdHI8Q1NT
VmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOwor
ICAgIGZvciAoYXV0byYgZmVhdHVyZSA6IG1fZmVhdHVyZVNldHRpbmdzKQorICAgICAgICBsaXN0
LT5hcHBlbmQoQ1NTRm9udEZlYXR1cmVWYWx1ZTo6Y3JlYXRlKEZvbnRGZWF0dXJlVGFnKGZlYXR1
cmUudGFnKCkpLCBmZWF0dXJlLnZhbHVlKCkpKTsKKyAgICByZXR1cm4gbGlzdC0+Y3NzVGV4dCgp
OworfQorCiBib29sIENTU0ZvbnRGYWNlOjphbGxTb3VyY2VzRmFpbGVkKCkgY29uc3QKIHsKICAg
ICBmb3IgKGF1dG8mIHNvdXJjZSA6IG1fc291cmNlcykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0ZvbnRGYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2Uu
aAppbmRleCBlYWQxOTJjY2RmZjc1YWZkN2UxMzMxYWMyNDRiYzliZmFlOTM0YzM5Li5iYzFkYWMy
Mzg0ZjE1OWEyNjQzY2RiNjVhMWRjMDEzNTJmYjhmZWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTRm9udEZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZh
Y2UuaApAQCAtNDAsNDUgKzQwLDU1IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENT
U1NlZ21lbnRlZEZvbnRGYWNlOworY2xhc3MgQ1NTVmFsdWU7CitjbGFzcyBDU1NWYWx1ZUxpc3Q7
CiBjbGFzcyBGb250RGVzY3JpcHRpb247CiBjbGFzcyBGb250OwogCiBjbGFzcyBDU1NGb250RmFj
ZSA6IHB1YmxpYyBSZWZDb3VudGVkPENTU0ZvbnRGYWNlPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFJlZjxDU1NGb250RmFjZT4gY3JlYXRlKEZvbnRUcmFpdHNNYXNrIHRyYWl0c01hc2ssIGJvb2wg
aXNMb2NhbEZhbGxiYWNrID0gZmFsc2UpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTRm9udEZh
Y2UodHJhaXRzTWFzaywgaXNMb2NhbEZhbGxiYWNrKSk7IH0KLQotICAgIEZvbnRUcmFpdHNNYXNr
IHRyYWl0c01hc2soKSBjb25zdCB7IHJldHVybiBtX3RyYWl0c01hc2s7IH0KKyAgICBzdGF0aWMg
UmVmPENTU0ZvbnRGYWNlPiBjcmVhdGUoYm9vbCBpc0xvY2FsRmFsbGJhY2sgPSBmYWxzZSkgeyBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NGb250RmFjZShpc0xvY2FsRmFsbGJhY2spKTsgfQorICAg
IHZpcnR1YWwgfkNTU0ZvbnRGYWNlKCk7CisKKyAgICB2b2lkIHNldEZhbWlseShjb25zdCBTdHJp
bmcmKTsKKyAgICB2b2lkIHNldFN0eWxlKGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgc2V0V2Vp
Z2h0KGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgc2V0U3RyZXRjaChjb25zdCBTdHJpbmcmKTsK
KyAgICB2b2lkIHNldFVuaWNvZGVSYW5nZShjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIHNldFZh
cmlhbnQoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBzZXRGZWF0dXJlU2V0dGluZ3MoY29uc3Qg
U3RyaW5nJik7CisKKyAgICBib29sIHNldEZhbWlsaWVzKENTU1ZhbHVlJik7CisgICAgYm9vbCBz
ZXRTdHlsZShDU1NWYWx1ZSYpOworICAgIGJvb2wgc2V0V2VpZ2h0KENTU1ZhbHVlJik7CisgICAg
Ym9vbCBzZXRVbmljb2RlUmFuZ2UoQ1NTVmFsdWUmKTsKKyAgICBib29sIHNldFZhcmlhbnRMaWdh
dHVyZXMoQ1NTVmFsdWUmKTsKKyAgICBib29sIHNldFZhcmlhbnRQb3NpdGlvbihDU1NWYWx1ZSYp
OworICAgIGJvb2wgc2V0VmFyaWFudENhcHMoQ1NTVmFsdWUmKTsKKyAgICBib29sIHNldFZhcmlh
bnROdW1lcmljKENTU1ZhbHVlJik7CisgICAgYm9vbCBzZXRWYXJpYW50QWx0ZXJuYXRlcyhDU1NW
YWx1ZSYpOworICAgIGJvb2wgc2V0VmFyaWFudEVhc3RBc2lhbihDU1NWYWx1ZSYpOworICAgIGJv
b2wgc2V0RmVhdHVyZVNldHRpbmdzKENTU1ZhbHVlJik7CisKKyAgICBTdHJpbmcgZmFtaWx5KCkg
Y29uc3Q7CisgICAgU3RyaW5nIHN0eWxlKCkgY29uc3Q7CisgICAgU3RyaW5nIHdlaWdodCgpIGNv
bnN0OworICAgIFN0cmluZyBzdHJldGNoKCkgY29uc3Q7CisgICAgU3RyaW5nIHVuaWNvZGVSYW5n
ZSgpIGNvbnN0OworICAgIFN0cmluZyB2YXJpYW50KCkgY29uc3Q7CisgICAgU3RyaW5nIGZlYXR1
cmVTZXR0aW5ncygpIGNvbnN0OwogCiAgICAgc3RydWN0IFVuaWNvZGVSYW5nZTsKLQotICAgIHZv
aWQgYWRkUmFuZ2UoVUNoYXIzMiBmcm9tLCBVQ2hhcjMyIHRvKSB7IG1fcmFuZ2VzLmFwcGVuZChV
bmljb2RlUmFuZ2UoZnJvbSwgdG8pKTsgfQorICAgIHZvaWQgc2V0VHJhaXRzTWFzayhGb250VHJh
aXRzTWFzayB0cmFpdHNNYXNrKSB7IG1fdHJhaXRzTWFzayA9IHRyYWl0c01hc2s7IH0KICAgICBj
b25zdCBWZWN0b3I8VW5pY29kZVJhbmdlPiYgcmFuZ2VzKCkgY29uc3QgeyByZXR1cm4gbV9yYW5n
ZXM7IH0KLQotICAgIHZvaWQgaW5zZXJ0RmVhdHVyZShGb250RmVhdHVyZSYmIGZlYXR1cmUpIHsg
bV9mZWF0dXJlU2V0dGluZ3MuaW5zZXJ0KFdURk1vdmUoZmVhdHVyZSkpOyB9Ci0KLSAgICB2b2lk
IHNldFZhcmlhbnRDb21tb25MaWdhdHVyZXMoRm9udFZhcmlhbnRMaWdhdHVyZXMgbGlnYXR1cmVz
KSB7IG1fdmFyaWFudFNldHRpbmdzLmNvbW1vbkxpZ2F0dXJlcyA9IGxpZ2F0dXJlczsgfQotICAg
IHZvaWQgc2V0VmFyaWFudERpc2NyZXRpb25hcnlMaWdhdHVyZXMoRm9udFZhcmlhbnRMaWdhdHVy
ZXMgbGlnYXR1cmVzKSB7IG1fdmFyaWFudFNldHRpbmdzLmRpc2NyZXRpb25hcnlMaWdhdHVyZXMg
PSBsaWdhdHVyZXM7IH0KLSAgICB2b2lkIHNldFZhcmlhbnRIaXN0b3JpY2FsTGlnYXR1cmVzKEZv
bnRWYXJpYW50TGlnYXR1cmVzIGxpZ2F0dXJlcykgeyBtX3ZhcmlhbnRTZXR0aW5ncy5oaXN0b3Jp
Y2FsTGlnYXR1cmVzID0gbGlnYXR1cmVzOyB9Ci0gICAgdm9pZCBzZXRWYXJpYW50Q29udGV4dHVh
bEFsdGVybmF0ZXMoRm9udFZhcmlhbnRMaWdhdHVyZXMgbGlnYXR1cmVzKSB7IG1fdmFyaWFudFNl
dHRpbmdzLmNvbnRleHR1YWxBbHRlcm5hdGVzID0gbGlnYXR1cmVzOyB9Ci0gICAgdm9pZCBzZXRW
YXJpYW50UG9zaXRpb24oRm9udFZhcmlhbnRQb3NpdGlvbiBwb3NpdGlvbikgeyBtX3ZhcmlhbnRT
ZXR0aW5ncy5wb3NpdGlvbiA9IHBvc2l0aW9uOyB9Ci0gICAgdm9pZCBzZXRWYXJpYW50Q2FwcyhG
b250VmFyaWFudENhcHMgY2FwcykgeyBtX3ZhcmlhbnRTZXR0aW5ncy5jYXBzID0gY2FwczsgfQot
ICAgIHZvaWQgc2V0VmFyaWFudE51bWVyaWNGaWd1cmUoRm9udFZhcmlhbnROdW1lcmljRmlndXJl
IGZpZ3VyZSkgeyBtX3ZhcmlhbnRTZXR0aW5ncy5udW1lcmljRmlndXJlID0gZmlndXJlOyB9Ci0g
ICAgdm9pZCBzZXRWYXJpYW50TnVtZXJpY1NwYWNpbmcoRm9udFZhcmlhbnROdW1lcmljU3BhY2lu
ZyBzcGFjaW5nKSB7IG1fdmFyaWFudFNldHRpbmdzLm51bWVyaWNTcGFjaW5nID0gc3BhY2luZzsg
fQotICAgIHZvaWQgc2V0VmFyaWFudE51bWVyaWNGcmFjdGlvbihGb250VmFyaWFudE51bWVyaWNG
cmFjdGlvbiBmcmFjdGlvbikgeyBtX3ZhcmlhbnRTZXR0aW5ncy5udW1lcmljRnJhY3Rpb24gPSBm
cmFjdGlvbjsgfQotICAgIHZvaWQgc2V0VmFyaWFudE51bWVyaWNPcmRpbmFsKEZvbnRWYXJpYW50
TnVtZXJpY09yZGluYWwgb3JkaW5hbCkgeyBtX3ZhcmlhbnRTZXR0aW5ncy5udW1lcmljT3JkaW5h
bCA9IG9yZGluYWw7IH0KLSAgICB2b2lkIHNldFZhcmlhbnROdW1lcmljU2xhc2hlZFplcm8oRm9u
dFZhcmlhbnROdW1lcmljU2xhc2hlZFplcm8gc2xhc2hlZFplcm8pIHsgbV92YXJpYW50U2V0dGlu
Z3MubnVtZXJpY1NsYXNoZWRaZXJvID0gc2xhc2hlZFplcm87IH0KLSAgICB2b2lkIHNldFZhcmlh
bnRBbHRlcm5hdGVzKEZvbnRWYXJpYW50QWx0ZXJuYXRlcyBhbHRlcm5hdGVzKSB7IG1fdmFyaWFu
dFNldHRpbmdzLmFsdGVybmF0ZXMgPSBhbHRlcm5hdGVzOyB9Ci0gICAgdm9pZCBzZXRWYXJpYW50
RWFzdEFzaWFuVmFyaWFudChGb250VmFyaWFudEVhc3RBc2lhblZhcmlhbnQgdmFyaWFudCkgeyBt
X3ZhcmlhbnRTZXR0aW5ncy5lYXN0QXNpYW5WYXJpYW50ID0gdmFyaWFudDsgfQotICAgIHZvaWQg
c2V0VmFyaWFudEVhc3RBc2lhbldpZHRoKEZvbnRWYXJpYW50RWFzdEFzaWFuV2lkdGggd2lkdGgp
IHsgbV92YXJpYW50U2V0dGluZ3MuZWFzdEFzaWFuV2lkdGggPSB3aWR0aDsgfQotICAgIHZvaWQg
c2V0VmFyaWFudEVhc3RBc2lhblJ1YnkoRm9udFZhcmlhbnRFYXN0QXNpYW5SdWJ5IHJ1YnkpIHsg
bV92YXJpYW50U2V0dGluZ3MuZWFzdEFzaWFuUnVieSA9IHJ1Ynk7IH0KKyAgICBGb250VHJhaXRz
TWFzayB0cmFpdHNNYXNrKCkgY29uc3QgeyByZXR1cm4gbV90cmFpdHNNYXNrOyB9CisgICAgYm9v
bCBpc0xvY2FsRmFsbGJhY2soKSBjb25zdCB7IHJldHVybiBtX2lzTG9jYWxGYWxsYmFjazsgfQog
CiAgICAgdm9pZCBhZGRlZFRvU2VnbWVudGVkRm9udEZhY2UoQ1NTU2VnbWVudGVkRm9udEZhY2Um
KTsKICAgICB2b2lkIHJlbW92ZWRGcm9tU2VnbWVudGVkRm9udEZhY2UoQ1NTU2VnbWVudGVkRm9u
dEZhY2UmKTsKIAogICAgIGJvb2wgYWxsU291cmNlc0ZhaWxlZCgpIGNvbnN0OwogCi0gICAgYm9v
bCBpc0xvY2FsRmFsbGJhY2soKSBjb25zdCB7IHJldHVybiBtX2lzTG9jYWxGYWxsYmFjazsgfQot
CiAgICAgdm9pZCBhZG9wdFNvdXJjZShzdGQ6OnVuaXF1ZV9wdHI8Q1NTRm9udEZhY2VTb3VyY2U+
JiYpOwogCiAgICAgdm9pZCBmb250TG9hZGVkKENTU0ZvbnRGYWNlU291cmNlJik7CkBAIC0xMDUs
MTIgKzExNSw5IEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRlOgotICAgIENTU0ZvbnRGYWNl
KEZvbnRUcmFpdHNNYXNrIHRyYWl0c01hc2ssIGJvb2wgaXNMb2NhbEZhbGxiYWNrKQotICAgICAg
ICA6IG1fdHJhaXRzTWFzayh0cmFpdHNNYXNrKQotICAgICAgICAsIG1faXNMb2NhbEZhbGxiYWNr
KGlzTG9jYWxGYWxsYmFjaykKLSAgICB7Ci0gICAgfQorICAgIENTU0ZvbnRGYWNlKGJvb2wgaXNM
b2NhbEZhbGxiYWNrKTsKIAorICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IG1fZmFtaWxpZXM7CiAg
ICAgRm9udFRyYWl0c01hc2sgbV90cmFpdHNNYXNrOwogICAgIFZlY3RvcjxVbmljb2RlUmFuZ2U+
IG1fcmFuZ2VzOwogICAgIEhhc2hTZXQ8Q1NTU2VnbWVudGVkRm9udEZhY2UqPiBtX3NlZ21lbnRl
ZEZvbnRGYWNlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0
b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAKaW5kZXggOWM4
MTYxYTdjZDllOTM5OTQzYTMzNzNlZDlhYWMzZjcyZDYwZGJjOC4uYmMyYTM3Yjk5ZjdhM2E4NWMw
MzBhYTgwM2IwMzg2NWU2MGJiMTk1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0ZvbnRTZWxlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rv
ci5jcHAKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlICJDU1NVbmljb2RlUmFuZ2VWYWx1ZS5o
IgogI2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29yZHMuaCIKICNpbmNsdWRlICJDU1NWYWx1ZUxpc3Qu
aCIKKyNpbmNsdWRlICJDU1NWYWx1ZVBvb2wuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUxv
YWRlci5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRm9udC5oIgpAQCAtODcs
NzUgKzg4LDggQEAgYm9vbCBDU1NGb250U2VsZWN0b3I6OmlzRW1wdHkoKSBjb25zdAogICAgIHJl
dHVybiBtX2ZvbnRzLmlzRW1wdHkoKTsKIH0KIAotc3RhdGljIE9wdGlvbmFsPEZvbnRUcmFpdHNN
YXNrPiBjb21wdXRlVHJhaXRzTWFzayhjb25zdCBTdHlsZVByb3BlcnRpZXMmIHN0eWxlKQorc3Rh
dGljIHZvaWQgYXBwZW5kU291cmNlcyhDU1NGb250RmFjZSYgZm9udEZhY2UsIENTU1ZhbHVlTGlz
dCYgc3JjTGlzdCwgRG9jdW1lbnQqIGRvY3VtZW50LCBib29sIGlzSW5pdGlhdGluZ0VsZW1lbnRJ
blVzZXJBZ2VudFNoYWRvd1RyZWUpCiB7Ci0gICAgdW5zaWduZWQgdHJhaXRzTWFzayA9IDA7Ci0K
LSAgICBpZiAoUmVmUHRyPENTU1ZhbHVlPiBmb250U3R5bGUgPSBzdHlsZS5nZXRQcm9wZXJ0eUNT
U1ZhbHVlKENTU1Byb3BlcnR5Rm9udFN0eWxlKSkgewotICAgICAgICBpZiAoIWlzPENTU1ByaW1p
dGl2ZVZhbHVlPigqZm9udFN0eWxlKSkKLSAgICAgICAgICAgIHJldHVybiBOdWxsb3B0OwotCi0g
ICAgICAgIHN3aXRjaCAoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCpmb250U3R5bGUpLmdl
dFZhbHVlSUQoKSkgewotICAgICAgICBjYXNlIENTU1ZhbHVlTm9ybWFsOgotICAgICAgICAgICAg
dHJhaXRzTWFzayB8PSBGb250U3R5bGVOb3JtYWxNYXNrOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGNhc2UgQ1NTVmFsdWVJdGFsaWM6Ci0gICAgICAgIGNhc2UgQ1NTVmFsdWVPYmxpcXVl
OgotICAgICAgICAgICAgdHJhaXRzTWFzayB8PSBGb250U3R5bGVJdGFsaWNNYXNrOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgfQotICAgIH0gZWxzZQotICAgICAgICB0cmFpdHNNYXNrIHw9IEZvbnRTdHlsZU5vcm1hbE1h
c2s7Ci0KLSAgICBpZiAoUmVmUHRyPENTU1ZhbHVlPiBmb250V2VpZ2h0ID0gc3R5bGUuZ2V0UHJv
cGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eUZvbnRXZWlnaHQpKSB7Ci0gICAgICAgIGlmICghaXM8
Q1NTUHJpbWl0aXZlVmFsdWU+KCpmb250V2VpZ2h0KSkKLSAgICAgICAgICAgIHJldHVybiBOdWxs
b3B0OwotCi0gICAgICAgIHN3aXRjaCAoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCpmb250
V2VpZ2h0KS5nZXRWYWx1ZUlEKCkpIHsKLSAgICAgICAgY2FzZSBDU1NWYWx1ZUJvbGQ6Ci0gICAg
ICAgIGNhc2UgQ1NTVmFsdWU3MDA6Ci0gICAgICAgICAgICB0cmFpdHNNYXNrIHw9IEZvbnRXZWln
aHQ3MDBNYXNrOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ1NTVmFsdWVOb3Jt
YWw6Ci0gICAgICAgIGNhc2UgQ1NTVmFsdWU0MDA6Ci0gICAgICAgICAgICB0cmFpdHNNYXNrIHw9
IEZvbnRXZWlnaHQ0MDBNYXNrOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ1NT
VmFsdWU5MDA6Ci0gICAgICAgICAgICB0cmFpdHNNYXNrIHw9IEZvbnRXZWlnaHQ5MDBNYXNrOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ1NTVmFsdWU4MDA6Ci0gICAgICAgICAg
ICB0cmFpdHNNYXNrIHw9IEZvbnRXZWlnaHQ4MDBNYXNrOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGNhc2UgQ1NTVmFsdWU2MDA6Ci0gICAgICAgICAgICB0cmFpdHNNYXNrIHw9IEZvbnRX
ZWlnaHQ2MDBNYXNrOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ1NTVmFsdWU1
MDA6Ci0gICAgICAgICAgICB0cmFpdHNNYXNrIHw9IEZvbnRXZWlnaHQ1MDBNYXNrOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ1NTVmFsdWUzMDA6Ci0gICAgICAgICAgICB0cmFp
dHNNYXNrIHw9IEZvbnRXZWlnaHQzMDBNYXNrOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IGNhc2UgQ1NTVmFsdWUyMDA6Ci0gICAgICAgICAgICB0cmFpdHNNYXNrIHw9IEZvbnRXZWlnaHQy
MDBNYXNrOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ1NTVmFsdWUxMDA6Ci0g
ICAgICAgICAgICB0cmFpdHNNYXNrIHw9IEZvbnRXZWlnaHQxMDBNYXNrOwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQot
ICAgIH0gZWxzZQotICAgICAgICB0cmFpdHNNYXNrIHw9IEZvbnRXZWlnaHQ0MDBNYXNrOwotCi0g
ICAgcmV0dXJuIHN0YXRpY19jYXN0PEZvbnRUcmFpdHNNYXNrPih0cmFpdHNNYXNrKTsKLX0KLQot
c3RhdGljIFJlZjxDU1NGb250RmFjZT4gY3JlYXRlRm9udEZhY2UoQ1NTVmFsdWVMaXN0JiBzcmNM
aXN0LCBGb250VHJhaXRzTWFzayB0cmFpdHNNYXNrLCBEb2N1bWVudCogZG9jdW1lbnQsIGJvb2wg
aXNJbml0aWF0aW5nRWxlbWVudEluVXNlckFnZW50U2hhZG93VHJlZSkKLXsKLSAgICBSZWY8Q1NT
Rm9udEZhY2U+IGZvbnRGYWNlID0gQ1NTRm9udEZhY2U6OmNyZWF0ZSh0cmFpdHNNYXNrKTsKLQog
ICAgIGZvciAoYXV0byYgc3JjIDogc3JjTGlzdCkgewogICAgICAgICAvLyBBbiBpdGVtIGluIHRo
ZSBsaXN0IGVpdGhlciBzcGVjaWZpZXMgYSBzdHJpbmcgKGxvY2FsIGZvbnQgbmFtZSkgb3IgYSBV
UkwgKHJlbW90ZSBmb250IHRvIGRvd25sb2FkKS4KICAgICAgICAgQ1NTRm9udEZhY2VTcmNWYWx1
ZSYgaXRlbSA9IGRvd25jYXN0PENTU0ZvbnRGYWNlU3JjVmFsdWU+KHNyYy5nZXQoKSk7CkBAIC0x
NzIsMTYgKzEwNiwxNCBAQCBzdGF0aWMgUmVmPENTU0ZvbnRGYWNlPiBjcmVhdGVGb250RmFjZShD
U1NWYWx1ZUxpc3QmIHNyY0xpc3QsIEZvbnRUcmFpdHNNYXNrIHRyYQogICAgICAgICAgICAgYm9v
bCBhbGxvd0Rvd25sb2FkaW5nID0gZm91bmRTVkdGb250IHx8IChzZXR0aW5ncyAmJiBzZXR0aW5n
cy0+ZG93bmxvYWRhYmxlQmluYXJ5Rm9udHNFbmFibGVkKCkpOwogICAgICAgICAgICAgaWYgKGFs
bG93RG93bmxvYWRpbmcgJiYgaXRlbS5pc1N1cHBvcnRlZEZvcm1hdCgpICYmIGRvY3VtZW50KSB7
CiAgICAgICAgICAgICAgICAgaWYgKENhY2hlZEZvbnQqIGNhY2hlZEZvbnQgPSBpdGVtLmNhY2hl
ZEZvbnQoZG9jdW1lbnQsIGZvdW5kU1ZHRm9udCwgaXNJbml0aWF0aW5nRWxlbWVudEluVXNlckFn
ZW50U2hhZG93VHJlZSkpCi0gICAgICAgICAgICAgICAgICAgIHNvdXJjZSA9IHN0ZDo6bWFrZV91
bmlxdWU8Q1NTRm9udEZhY2VTb3VyY2U+KGZvbnRGYWNlLmdldCgpLCBpdGVtLnJlc291cmNlKCks
IGNhY2hlZEZvbnQpOworICAgICAgICAgICAgICAgICAgICBzb3VyY2UgPSBzdGQ6Om1ha2VfdW5p
cXVlPENTU0ZvbnRGYWNlU291cmNlPihmb250RmFjZSwgaXRlbS5yZXNvdXJjZSgpLCBjYWNoZWRG
b250KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBzb3VyY2Ug
PSBzdGQ6Om1ha2VfdW5pcXVlPENTU0ZvbnRGYWNlU291cmNlPihmb250RmFjZS5nZXQoKSwgaXRl
bS5yZXNvdXJjZSgpLCBudWxscHRyLCBmb250RmFjZUVsZW1lbnQpOworICAgICAgICAgICAgc291
cmNlID0gc3RkOjptYWtlX3VuaXF1ZTxDU1NGb250RmFjZVNvdXJjZT4oZm9udEZhY2UsIGl0ZW0u
cmVzb3VyY2UoKSwgbnVsbHB0ciwgZm9udEZhY2VFbGVtZW50KTsKIAogICAgICAgICBpZiAoc291
cmNlKQotICAgICAgICAgICAgZm9udEZhY2UtPmFkb3B0U291cmNlKFdURk1vdmUoc291cmNlKSk7
CisgICAgICAgICAgICBmb250RmFjZS5hZG9wdFNvdXJjZShXVEZNb3ZlKHNvdXJjZSkpOwogICAg
IH0KLQotICAgIHJldHVybiBmb250RmFjZTsKIH0KIAogc3RhdGljIFN0cmluZyBmYW1pbHlOYW1l
RnJvbVByaW1pdGl2ZShjb25zdCBDU1NQcmltaXRpdmVWYWx1ZSYgdmFsdWUpCkBAIC0yMjEsNyAr
MTUzLDggQEAgc3RhdGljIHZvaWQgcmVnaXN0ZXJMb2NhbEZvbnRGYWNlc0ZvckZhbWlseShjb25z
dCBTdHJpbmcmIGZhbWlseU5hbWUsIEhhc2hNYXA8U3QKIAogICAgIFZlY3RvcjxSZWY8Q1NTRm9u
dEZhY2U+PiBmYWNlcyA9IHsgfTsKICAgICBmb3IgKGF1dG8gbWFzayA6IHRyYWl0c01hc2tzKSB7
Ci0gICAgICAgIFJlZjxDU1NGb250RmFjZT4gZmFjZSA9IENTU0ZvbnRGYWNlOjpjcmVhdGUobWFz
aywgdHJ1ZSk7CisgICAgICAgIFJlZjxDU1NGb250RmFjZT4gZmFjZSA9IENTU0ZvbnRGYWNlOjpj
cmVhdGUodHJ1ZSk7CisgICAgICAgIGZhY2UtPnNldFRyYWl0c01hc2sobWFzayk7CiAgICAgICAg
IGZhY2UtPmFkb3B0U291cmNlKHN0ZDo6bWFrZV91bmlxdWU8Q1NTRm9udEZhY2VTb3VyY2U+KGZh
Y2UuZ2V0KCksIGZhbWlseU5hbWUpKTsKICAgICAgICAgQVNTRVJUKCFmYWNlLT5hbGxTb3VyY2Vz
RmFpbGVkKCkpOwogICAgICAgICBmYWNlcy5hcHBlbmQoV1RGTW92ZShmYWNlKSk7CkBAIC0yMzMs
NiArMTY2LDggQEAgdm9pZCBDU1NGb250U2VsZWN0b3I6OmFkZEZvbnRGYWNlUnVsZShjb25zdCBT
dHlsZVJ1bGVGb250RmFjZSYgZm9udEZhY2VSdWxlLCBib28KIHsKICAgICBjb25zdCBTdHlsZVBy
b3BlcnRpZXMmIHN0eWxlID0gZm9udEZhY2VSdWxlLnByb3BlcnRpZXMoKTsKICAgICBSZWZQdHI8
Q1NTVmFsdWU+IGZvbnRGYW1pbHkgPSBzdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3Bl
cnR5Rm9udEZhbWlseSk7CisgICAgUmVmUHRyPENTU1ZhbHVlPiBmb250U3R5bGUgPSBzdHlsZS5n
ZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5Rm9udFN0eWxlKTsKKyAgICBSZWZQdHI8Q1NT
VmFsdWU+IGZvbnRXZWlnaHQgPSBzdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5
Rm9udFdlaWdodCk7CiAgICAgUmVmUHRyPENTU1ZhbHVlPiBzcmMgPSBzdHlsZS5nZXRQcm9wZXJ0
eUNTU1ZhbHVlKENTU1Byb3BlcnR5U3JjKTsKICAgICBSZWZQdHI8Q1NTVmFsdWU+IHVuaWNvZGVS
YW5nZSA9IHN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlVbmljb2RlUmFuZ2Up
OwogICAgIFJlZlB0cjxDU1NWYWx1ZT4gZmVhdHVyZVNldHRpbmdzID0gc3R5bGUuZ2V0UHJvcGVy
dHlDU1NWYWx1ZShDU1NQcm9wZXJ0eUZvbnRGZWF0dXJlU2V0dGluZ3MpOwpAQCAtMjQ5LDU0ICsx
ODQsNDcgQEAgdm9pZCBDU1NGb250U2VsZWN0b3I6OmFkZEZvbnRGYWNlUnVsZShjb25zdCBTdHls
ZVJ1bGVGb250RmFjZSYgZm9udEZhY2VSdWxlLCBib28KICAgICBpZiAoIWZhbWlseUxpc3QubGVu
Z3RoKCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIGlmICghZm9udFN0eWxlKQorICAgICAgICBm
b250U3R5bGUgPSBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1
ZShDU1NWYWx1ZU5vcm1hbCkucHRyKCk7CisKKyAgICBpZiAoIWZvbnRXZWlnaHQpCisgICAgICAg
IGZvbnRXZWlnaHQgPSBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJW
YWx1ZShDU1NWYWx1ZU5vcm1hbCk7CisKKyAgICBDU1NWYWx1ZUxpc3QqIHJhbmdlTGlzdCA9IGRv
d25jYXN0PENTU1ZhbHVlTGlzdD4odW5pY29kZVJhbmdlLmdldCgpKTsKKwogICAgIENTU1ZhbHVl
TGlzdCYgc3JjTGlzdCA9IGRvd25jYXN0PENTU1ZhbHVlTGlzdD4oKnNyYyk7CiAgICAgaWYgKCFz
cmNMaXN0Lmxlbmd0aCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBDU1NWYWx1ZUxpc3QqIHJh
bmdlTGlzdCA9IGRvd25jYXN0PENTU1ZhbHVlTGlzdD4odW5pY29kZVJhbmdlLmdldCgpKTsKKyAg
ICBSZWY8Q1NTRm9udEZhY2U+IGZvbnRGYWNlID0gQ1NTRm9udEZhY2U6OmNyZWF0ZSgpOwogCi0g
ICAgYXV0byBjb21wdXRlZFRyYWl0c01hc2sgPSBjb21wdXRlVHJhaXRzTWFzayhzdHlsZSk7Ci0g
ICAgaWYgKCFjb21wdXRlZFRyYWl0c01hc2spCisgICAgaWYgKCFmb250RmFjZS0+c2V0RmFtaWxp
ZXMoKmZvbnRGYW1pbHkpKQorICAgICAgICByZXR1cm47CisgICAgaWYgKCFmb250RmFjZS0+c2V0
U3R5bGUoKmZvbnRTdHlsZSkpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAoIWZvbnRGYWNlLT5z
ZXRXZWlnaHQoKmZvbnRXZWlnaHQpKQorICAgICAgICByZXR1cm47CisgICAgaWYgKHJhbmdlTGlz
dCAmJiAhZm9udEZhY2UtPnNldFVuaWNvZGVSYW5nZSgqcmFuZ2VMaXN0KSkKKyAgICAgICAgcmV0
dXJuOworICAgIGlmICh2YXJpYW50TGlnYXR1cmVzICYmICFmb250RmFjZS0+c2V0VmFyaWFudExp
Z2F0dXJlcygqdmFyaWFudExpZ2F0dXJlcykpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAodmFy
aWFudFBvc2l0aW9uICYmICFmb250RmFjZS0+c2V0VmFyaWFudFBvc2l0aW9uKCp2YXJpYW50UG9z
aXRpb24pKQorICAgICAgICByZXR1cm47CisgICAgaWYgKHZhcmlhbnRDYXBzICYmICFmb250RmFj
ZS0+c2V0VmFyaWFudENhcHMoKnZhcmlhbnRDYXBzKSkKKyAgICAgICAgcmV0dXJuOworICAgIGlm
ICh2YXJpYW50TnVtZXJpYyAmJiAhZm9udEZhY2UtPnNldFZhcmlhbnROdW1lcmljKCp2YXJpYW50
TnVtZXJpYykpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAodmFyaWFudEFsdGVybmF0ZXMgJiYg
IWZvbnRGYWNlLT5zZXRWYXJpYW50QWx0ZXJuYXRlcygqdmFyaWFudEFsdGVybmF0ZXMpKQorICAg
ICAgICByZXR1cm47CisgICAgaWYgKHZhcmlhbnRFYXN0QXNpYW4gJiYgIWZvbnRGYWNlLT5zZXRW
YXJpYW50RWFzdEFzaWFuKCp2YXJpYW50RWFzdEFzaWFuKSkKKyAgICAgICAgcmV0dXJuOworICAg
IGlmIChmZWF0dXJlU2V0dGluZ3MgJiYgIWZvbnRGYWNlLT5zZXRGZWF0dXJlU2V0dGluZ3MoKmZl
YXR1cmVTZXR0aW5ncykpCiAgICAgICAgIHJldHVybjsKLSAgICBhdXRvIHRyYWl0c01hc2sgPSBj
b21wdXRlZFRyYWl0c01hc2sudmFsdWUoKTsKIAotICAgIFJlZjxDU1NGb250RmFjZT4gZm9udEZh
Y2UgPSBjcmVhdGVGb250RmFjZShzcmNMaXN0LCB0cmFpdHNNYXNrLCBtX2RvY3VtZW50LCBpc0lu
aXRpYXRpbmdFbGVtZW50SW5Vc2VyQWdlbnRTaGFkb3dUcmVlKTsKKyAgICBhcHBlbmRTb3VyY2Vz
KGZvbnRGYWNlLCBzcmNMaXN0LCBtX2RvY3VtZW50LCBpc0luaXRpYXRpbmdFbGVtZW50SW5Vc2Vy
QWdlbnRTaGFkb3dUcmVlKTsKICAgICBpZiAoZm9udEZhY2UtPmFsbFNvdXJjZXNGYWlsZWQoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKHJhbmdlTGlzdCkgewotICAgICAgICB1bnNpZ25l
ZCBudW1SYW5nZXMgPSByYW5nZUxpc3QtPmxlbmd0aCgpOwotICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbnVtUmFuZ2VzOyBpKyspIHsKLSAgICAgICAgICAgIENTU1VuaWNvZGVSYW5n
ZVZhbHVlJiByYW5nZSA9IGRvd25jYXN0PENTU1VuaWNvZGVSYW5nZVZhbHVlPigqcmFuZ2VMaXN0
LT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKGkpKTsKLSAgICAgICAgICAgIGZvbnRGYWNlLT5hZGRS
YW5nZShyYW5nZS5mcm9tKCksIHJhbmdlLnRvKCkpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAg
aWYgKGZlYXR1cmVTZXR0aW5ncykgewotICAgICAgICBmb3IgKGF1dG8mIGl0ZW0gOiBkb3duY2Fz
dDxDU1NWYWx1ZUxpc3Q+KCpmZWF0dXJlU2V0dGluZ3MpKSB7Ci0gICAgICAgICAgICBhdXRvJiBm
ZWF0dXJlID0gZG93bmNhc3Q8Q1NTRm9udEZlYXR1cmVWYWx1ZT4oaXRlbS5nZXQoKSk7Ci0gICAg
ICAgICAgICBmb250RmFjZS0+aW5zZXJ0RmVhdHVyZShGb250RmVhdHVyZShmZWF0dXJlLnRhZygp
LCBmZWF0dXJlLnZhbHVlKCkpKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmICh2YXJpYW50
TGlnYXR1cmVzKQotICAgICAgICBhcHBseVZhbHVlRm9udFZhcmlhbnRMaWdhdHVyZXMoZm9udEZh
Y2UuZ2V0KCksICp2YXJpYW50TGlnYXR1cmVzKTsKLQotICAgIGlmICh2YXJpYW50UG9zaXRpb24g
JiYgaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KCp2YXJpYW50UG9zaXRpb24pKQotICAgICAgICBmb250
RmFjZS0+c2V0VmFyaWFudFBvc2l0aW9uKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdmFy
aWFudFBvc2l0aW9uKSk7Ci0KLSAgICBpZiAodmFyaWFudENhcHMgJiYgaXM8Q1NTUHJpbWl0aXZl
VmFsdWU+KCp2YXJpYW50Q2FwcykpCi0gICAgICAgIGZvbnRGYWNlLT5zZXRWYXJpYW50Q2Fwcyhk
b3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnZhcmlhbnRDYXBzKSk7Ci0KLSAgICBpZiAodmFy
aWFudE51bWVyaWMpCi0gICAgICAgIGFwcGx5VmFsdWVGb250VmFyaWFudE51bWVyaWMoZm9udEZh
Y2UuZ2V0KCksICp2YXJpYW50TnVtZXJpYyk7Ci0KLSAgICBpZiAodmFyaWFudEFsdGVybmF0ZXMg
JiYgaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KCp2YXJpYW50QWx0ZXJuYXRlcykpCi0gICAgICAgIGZv
bnRGYWNlLT5zZXRWYXJpYW50QWx0ZXJuYXRlcyhkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4o
KnZhcmlhbnRBbHRlcm5hdGVzKSk7Ci0KLSAgICBpZiAodmFyaWFudEVhc3RBc2lhbikKLSAgICAg
ICAgYXBwbHlWYWx1ZUZvbnRWYXJpYW50RWFzdEFzaWFuKGZvbnRGYWNlLmdldCgpLCAqdmFyaWFu
dEVhc3RBc2lhbik7Ci0KICAgICBmb3IgKGF1dG8mIGl0ZW0gOiBmYW1pbHlMaXN0KSB7CiAgICAg
ICAgIFN0cmluZyBmYW1pbHlOYW1lID0gZmFtaWx5TmFtZUZyb21QcmltaXRpdmUoZG93bmNhc3Q8
Q1NTUHJpbWl0aXZlVmFsdWU+KGl0ZW0uZ2V0KCkpKTsKICAgICAgICAgaWYgKGZhbWlseU5hbWUu
aXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRWYXJpYW50QnVp
bGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udFZhcmlhbnRCdWlsZGVyLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4wYzllMTQ4ZDNmYmQwMTZlMDMzZDg1NjU4YTUzZmU5NTgxZmE3MWUxCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRWYXJpYW50QnVpbGRlci5jcHAKQEAg
LTAsMCArMSwzNzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiRm9udFZhcmlhbnRCdWlsZGVyLmgiCisKKyNpbmNsdWRlICJDU1NQcmltaXRpdmVWYWx1ZS5o
IgorI2luY2x1ZGUgIkNTU1ZhbHVlTGlzdC5oIgorI2luY2x1ZGUgIkNTU1ZhbHVlUG9vbC5oIgor
I2luY2x1ZGUgIlRleHRGbGFncy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0ZvbnRWYXJp
YW50TGlnYXR1cmVzVmFsdWVzIGV4dHJhY3RGb250VmFyaWFudExpZ2F0dXJlcyhDU1NWYWx1ZSYg
dmFsdWUpCit7CisgICAgRm9udFZhcmlhbnRMaWdhdHVyZXMgY29tbW9uID0gRm9udFZhcmlhbnRM
aWdhdHVyZXM6Ok5vcm1hbDsKKyAgICBGb250VmFyaWFudExpZ2F0dXJlcyBkaXNjcmV0aW9uYXJ5
ID0gRm9udFZhcmlhbnRMaWdhdHVyZXM6Ok5vcm1hbDsKKyAgICBGb250VmFyaWFudExpZ2F0dXJl
cyBoaXN0b3JpY2FsID0gRm9udFZhcmlhbnRMaWdhdHVyZXM6Ok5vcm1hbDsKKyAgICBGb250VmFy
aWFudExpZ2F0dXJlcyBjb250ZXh0dWFsQWx0ZXJuYXRlcyA9IEZvbnRWYXJpYW50TGlnYXR1cmVz
OjpOb3JtYWw7CisKKyAgICBpZiAoaXM8Q1NTVmFsdWVMaXN0Pih2YWx1ZSkpIHsKKyAgICAgICAg
Zm9yIChhdXRvJiBpdGVtIDogZG93bmNhc3Q8Q1NTVmFsdWVMaXN0Pih2YWx1ZSkpIHsKKyAgICAg
ICAgICAgIHN3aXRjaCAoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KGl0ZW0uZ2V0KCkpLmdl
dFZhbHVlSUQoKSkgeworICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZU5vQ29tbW9uTGlnYXR1cmVz
OgorICAgICAgICAgICAgICAgIGNvbW1vbiA9IEZvbnRWYXJpYW50TGlnYXR1cmVzOjpObzsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVDb21tb25MaWdh
dHVyZXM6CisgICAgICAgICAgICAgICAgY29tbW9uID0gRm9udFZhcmlhbnRMaWdhdHVyZXM6Olll
czsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVOb0Rp
c2NyZXRpb25hcnlMaWdhdHVyZXM6CisgICAgICAgICAgICAgICAgZGlzY3JldGlvbmFyeSA9IEZv
bnRWYXJpYW50TGlnYXR1cmVzOjpObzsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIGNhc2UgQ1NTVmFsdWVEaXNjcmV0aW9uYXJ5TGlnYXR1cmVzOgorICAgICAgICAgICAgICAg
IGRpc2NyZXRpb25hcnkgPSBGb250VmFyaWFudExpZ2F0dXJlczo6WWVzOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZU5vSGlzdG9yaWNhbExpZ2F0dXJl
czoKKyAgICAgICAgICAgICAgICBoaXN0b3JpY2FsID0gRm9udFZhcmlhbnRMaWdhdHVyZXM6Ok5v
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZUhpc3Rv
cmljYWxMaWdhdHVyZXM6CisgICAgICAgICAgICAgICAgaGlzdG9yaWNhbCA9IEZvbnRWYXJpYW50
TGlnYXR1cmVzOjpZZXM7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNl
IENTU1ZhbHVlQ29udGV4dHVhbDoKKyAgICAgICAgICAgICAgICBjb250ZXh0dWFsQWx0ZXJuYXRl
cyA9IEZvbnRWYXJpYW50TGlnYXR1cmVzOjpZZXM7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICBjYXNlIENTU1ZhbHVlTm9Db250ZXh0dWFsOgorICAgICAgICAgICAgICAgIGNv
bnRleHR1YWxBbHRlcm5hdGVzID0gRm9udFZhcmlhbnRMaWdhdHVyZXM6Ok5vOworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAoaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSkg
eworICAgICAgICBzd2l0Y2ggKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkuZ2V0
VmFsdWVJRCgpKSB7CisgICAgICAgIGNhc2UgQ1NTVmFsdWVOb3JtYWw6CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBDU1NWYWx1ZU5vbmU6CisgICAgICAgICAgICBjb21tb24gPSBG
b250VmFyaWFudExpZ2F0dXJlczo6Tm87CisgICAgICAgICAgICBkaXNjcmV0aW9uYXJ5ID0gRm9u
dFZhcmlhbnRMaWdhdHVyZXM6Ok5vOworICAgICAgICAgICAgaGlzdG9yaWNhbCA9IEZvbnRWYXJp
YW50TGlnYXR1cmVzOjpObzsKKyAgICAgICAgICAgIGNvbnRleHR1YWxBbHRlcm5hdGVzID0gRm9u
dFZhcmlhbnRMaWdhdHVyZXM6Ok5vOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIEZvbnRWYXJpYW50TGlnYXR1cmVzVmFs
dWVzKGNvbW1vbiwgZGlzY3JldGlvbmFyeSwgaGlzdG9yaWNhbCwgY29udGV4dHVhbEFsdGVybmF0
ZXMpOworfQorCitGb250VmFyaWFudE51bWVyaWNWYWx1ZXMgZXh0cmFjdEZvbnRWYXJpYW50TnVt
ZXJpYyhDU1NWYWx1ZSYgdmFsdWUpCit7CisgICAgRm9udFZhcmlhbnROdW1lcmljRmlndXJlIGZp
Z3VyZSA9IEZvbnRWYXJpYW50TnVtZXJpY0ZpZ3VyZTo6Tm9ybWFsOworICAgIEZvbnRWYXJpYW50
TnVtZXJpY1NwYWNpbmcgc3BhY2luZyA9IEZvbnRWYXJpYW50TnVtZXJpY1NwYWNpbmc6Ok5vcm1h
bDsKKyAgICBGb250VmFyaWFudE51bWVyaWNGcmFjdGlvbiBmcmFjdGlvbiA9IEZvbnRWYXJpYW50
TnVtZXJpY0ZyYWN0aW9uOjpOb3JtYWw7CisgICAgRm9udFZhcmlhbnROdW1lcmljT3JkaW5hbCBv
cmRpbmFsID0gRm9udFZhcmlhbnROdW1lcmljT3JkaW5hbDo6Tm9ybWFsOworICAgIEZvbnRWYXJp
YW50TnVtZXJpY1NsYXNoZWRaZXJvIHNsYXNoZWRaZXJvID0gRm9udFZhcmlhbnROdW1lcmljU2xh
c2hlZFplcm86Ok5vcm1hbDsKKworICAgIGlmIChpczxDU1NWYWx1ZUxpc3Q+KHZhbHVlKSkgewor
ICAgICAgICBmb3IgKGF1dG8mIGl0ZW0gOiBkb3duY2FzdDxDU1NWYWx1ZUxpc3Q+KHZhbHVlKSkg
eworICAgICAgICAgICAgc3dpdGNoIChkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oaXRlbS5n
ZXQoKSkuZ2V0VmFsdWVJRCgpKSB7CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVlTGluaW5nTnVt
czoKKyAgICAgICAgICAgICAgICBmaWd1cmUgPSBGb250VmFyaWFudE51bWVyaWNGaWd1cmU6Okxp
bmluZ051bWJlcnM7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENT
U1ZhbHVlT2xkc3R5bGVOdW1zOgorICAgICAgICAgICAgICAgIGZpZ3VyZSA9IEZvbnRWYXJpYW50
TnVtZXJpY0ZpZ3VyZTo6T2xkU3R5bGVOdW1iZXJzOworICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZVByb3BvcnRpb25hbE51bXM6CisgICAgICAgICAgICAg
ICAgc3BhY2luZyA9IEZvbnRWYXJpYW50TnVtZXJpY1NwYWNpbmc6OlByb3BvcnRpb25hbE51bWJl
cnM7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVlVGFi
dWxhck51bXM6CisgICAgICAgICAgICAgICAgc3BhY2luZyA9IEZvbnRWYXJpYW50TnVtZXJpY1Nw
YWNpbmc6OlRhYnVsYXJOdW1iZXJzOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgY2FzZSBDU1NWYWx1ZURpYWdvbmFsRnJhY3Rpb25zOgorICAgICAgICAgICAgICAgIGZyYWN0
aW9uID0gRm9udFZhcmlhbnROdW1lcmljRnJhY3Rpb246OkRpYWdvbmFsRnJhY3Rpb25zOworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZVN0YWNrZWRGcmFj
dGlvbnM6CisgICAgICAgICAgICAgICAgZnJhY3Rpb24gPSBGb250VmFyaWFudE51bWVyaWNGcmFj
dGlvbjo6U3RhY2tlZEZyYWN0aW9uczsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIGNhc2UgQ1NTVmFsdWVPcmRpbmFsOgorICAgICAgICAgICAgICAgIG9yZGluYWwgPSBGb250
VmFyaWFudE51bWVyaWNPcmRpbmFsOjpZZXM7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICBjYXNlIENTU1ZhbHVlU2xhc2hlZFplcm86CisgICAgICAgICAgICAgICAgc2xhc2hl
ZFplcm8gPSBGb250VmFyaWFudE51bWVyaWNTbGFzaGVkWmVybzo6WWVzOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgIH0gZWxzZSBpZiAoaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSkKKyAg
ICAgICAgQVNTRVJUKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkuZ2V0VmFsdWVJ
RCgpID09IENTU1ZhbHVlTm9ybWFsKTsKKworICAgIHJldHVybiBGb250VmFyaWFudE51bWVyaWNW
YWx1ZXMoZmlndXJlLCBzcGFjaW5nLCBmcmFjdGlvbiwgb3JkaW5hbCwgc2xhc2hlZFplcm8pOwor
fQorCitGb250VmFyaWFudEVhc3RBc2lhblZhbHVlcyBleHRyYWN0Rm9udFZhcmlhbnRFYXN0QXNp
YW4oQ1NTVmFsdWUmIHZhbHVlKQoreworICAgIEZvbnRWYXJpYW50RWFzdEFzaWFuVmFyaWFudCB2
YXJpYW50ID0gRm9udFZhcmlhbnRFYXN0QXNpYW5WYXJpYW50OjpOb3JtYWw7CisgICAgRm9udFZh
cmlhbnRFYXN0QXNpYW5XaWR0aCB3aWR0aCA9IEZvbnRWYXJpYW50RWFzdEFzaWFuV2lkdGg6Ok5v
cm1hbDsKKyAgICBGb250VmFyaWFudEVhc3RBc2lhblJ1YnkgcnVieSA9IEZvbnRWYXJpYW50RWFz
dEFzaWFuUnVieTo6Tm9ybWFsOworCisgICAgaWYgKGlzPENTU1ZhbHVlTGlzdD4odmFsdWUpKSB7
CisgICAgICAgIGZvciAoYXV0byYgaXRlbSA6IGRvd25jYXN0PENTU1ZhbHVlTGlzdD4odmFsdWUp
KSB7CisgICAgICAgICAgICBzd2l0Y2ggKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPihpdGVt
LmdldCgpKS5nZXRWYWx1ZUlEKCkpIHsKKyAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVKaXM3ODoK
KyAgICAgICAgICAgICAgICB2YXJpYW50ID0gRm9udFZhcmlhbnRFYXN0QXNpYW5WYXJpYW50OjpK
aXM3ODsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVK
aXM4MzoKKyAgICAgICAgICAgICAgICB2YXJpYW50ID0gRm9udFZhcmlhbnRFYXN0QXNpYW5WYXJp
YW50OjpKaXM4MzsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQ1NT
VmFsdWVKaXM5MDoKKyAgICAgICAgICAgICAgICB2YXJpYW50ID0gRm9udFZhcmlhbnRFYXN0QXNp
YW5WYXJpYW50OjpKaXM5MDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNh
c2UgQ1NTVmFsdWVKaXMwNDoKKyAgICAgICAgICAgICAgICB2YXJpYW50ID0gRm9udFZhcmlhbnRF
YXN0QXNpYW5WYXJpYW50OjpKaXMwNDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIGNhc2UgQ1NTVmFsdWVTaW1wbGlmaWVkOgorICAgICAgICAgICAgICAgIHZhcmlhbnQgPSBG
b250VmFyaWFudEVhc3RBc2lhblZhcmlhbnQ6OlNpbXBsaWZpZWQ7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVlVHJhZGl0aW9uYWw6CisgICAgICAgICAg
ICAgICAgdmFyaWFudCA9IEZvbnRWYXJpYW50RWFzdEFzaWFuVmFyaWFudDo6VHJhZGl0aW9uYWw7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVlRnVsbFdp
ZHRoOgorICAgICAgICAgICAgICAgIHdpZHRoID0gRm9udFZhcmlhbnRFYXN0QXNpYW5XaWR0aDo6
RnVsbDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVQ
cm9wb3J0aW9uYWxXaWR0aDoKKyAgICAgICAgICAgICAgICB3aWR0aCA9IEZvbnRWYXJpYW50RWFz
dEFzaWFuV2lkdGg6OlByb3BvcnRpb25hbDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIGNhc2UgQ1NTVmFsdWVSdWJ5OgorICAgICAgICAgICAgICAgIHJ1YnkgPSBGb250VmFy
aWFudEVhc3RBc2lhblJ1Ynk6OlllczsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9IGVsc2Ug
aWYgKGlzPENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkpCisgICAgICAgIEFTU0VSVChkb3duY2Fz
dDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vcm1h
bCk7CisKKyAgICByZXR1cm4gRm9udFZhcmlhbnRFYXN0QXNpYW5WYWx1ZXModmFyaWFudCwgd2lk
dGgsIHJ1YnkpOworfQorCitSZWY8Q1NTVmFsdWU+IGNvbXB1dGVGb250VmFyaWFudChjb25zdCBG
b250VmFyaWFudFNldHRpbmdzJiB2YXJpYW50U2V0dGluZ3MpCit7CisgICAgaWYgKHZhcmlhbnRT
ZXR0aW5ncy5pc0FsbE5vcm1hbCgpKQorICAgICAgICByZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5n
bGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVOb3JtYWwpOworCisgICAgYXV0
byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOworCisgICAgc3dp
dGNoICh2YXJpYW50U2V0dGluZ3MuY29tbW9uTGlnYXR1cmVzKSB7CisgICAgY2FzZSBGb250VmFy
aWFudExpZ2F0dXJlczo6Tm9ybWFsOgorICAgICAgICBicmVhazsKKyAgICBjYXNlIEZvbnRWYXJp
YW50TGlnYXR1cmVzOjpZZXM6CisgICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKENTU1ZhbHVlUG9v
bDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlQ29tbW9uTGlnYXR1
cmVzKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRm9udFZhcmlhbnRMaWdhdHVyZXM6Ok5v
OgorICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNy
ZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vQ29tbW9uTGlnYXR1cmVzKSk7CisgICAgICAg
IGJyZWFrOworICAgIH0KKworICAgIHN3aXRjaCAodmFyaWFudFNldHRpbmdzLmRpc2NyZXRpb25h
cnlMaWdhdHVyZXMpIHsKKyAgICBjYXNlIEZvbnRWYXJpYW50TGlnYXR1cmVzOjpOb3JtYWw6Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgRm9udFZhcmlhbnRMaWdhdHVyZXM6OlllczoKKyAgICAg
ICAgbGlzdC5nZXQoKS5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVu
dGlmaWVyVmFsdWUoQ1NTVmFsdWVEaXNjcmV0aW9uYXJ5TGlnYXR1cmVzKSk7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgRm9udFZhcmlhbnRMaWdhdHVyZXM6Ok5vOgorICAgICAgICBsaXN0Lmdl
dCgpLmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1
ZShDU1NWYWx1ZU5vRGlzY3JldGlvbmFyeUxpZ2F0dXJlcykpOworICAgICAgICBicmVhazsKKyAg
ICB9CisKKyAgICBzd2l0Y2ggKHZhcmlhbnRTZXR0aW5ncy5oaXN0b3JpY2FsTGlnYXR1cmVzKSB7
CisgICAgY2FzZSBGb250VmFyaWFudExpZ2F0dXJlczo6Tm9ybWFsOgorICAgICAgICBicmVhazsK
KyAgICBjYXNlIEZvbnRWYXJpYW50TGlnYXR1cmVzOjpZZXM6CisgICAgICAgIGxpc3QuZ2V0KCku
YXBwZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENT
U1ZhbHVlSGlzdG9yaWNhbExpZ2F0dXJlcykpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEZv
bnRWYXJpYW50TGlnYXR1cmVzOjpObzoKKyAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoQ1NTVmFs
dWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVOb0hpc3Rv
cmljYWxMaWdhdHVyZXMpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgc3dpdGNoICh2
YXJpYW50U2V0dGluZ3MuY29udGV4dHVhbEFsdGVybmF0ZXMpIHsKKyAgICBjYXNlIEZvbnRWYXJp
YW50TGlnYXR1cmVzOjpOb3JtYWw6CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRm9udFZhcmlh
bnRMaWdhdHVyZXM6OlllczoKKyAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoQ1NTVmFsdWVQb29s
OjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVDb250ZXh0dWFsKSk7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRm9udFZhcmlhbnRMaWdhdHVyZXM6Ok5vOgorICAg
ICAgICBsaXN0LmdldCgpLmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlk
ZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vQ29udGV4dHVhbCkpOworICAgICAgICBicmVhazsKKyAg
ICB9CisKKyAgICBzd2l0Y2ggKHZhcmlhbnRTZXR0aW5ncy5wb3NpdGlvbikgeworICAgIGNhc2Ug
Rm9udFZhcmlhbnRQb3NpdGlvbjo6Tm9ybWFsOgorICAgICAgICBicmVhazsKKyAgICBjYXNlIEZv
bnRWYXJpYW50UG9zaXRpb246OlN1YnNjcmlwdDoKKyAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQo
Q1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVT
dWIpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBGb250VmFyaWFudFBvc2l0aW9uOjpTdXBl
cnNjcmlwdDoKKyAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0
b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVTdXBlcikpOworICAgICAgICBicmVh
azsKKyAgICB9CisKKyAgICBzd2l0Y2ggKHZhcmlhbnRTZXR0aW5ncy5jYXBzKSB7CisgICAgY2Fz
ZSBGb250VmFyaWFudENhcHM6Ok5vcm1hbDoKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBGb250
VmFyaWFudENhcHM6OlNtYWxsOgorICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChDU1NWYWx1ZVBv
b2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZVNtYWxsQ2Fwcykp
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIEZvbnRWYXJpYW50Q2Fwczo6QWxsU21hbGw6Cisg
ICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRl
SWRlbnRpZmllclZhbHVlKENTU1ZhbHVlQWxsU21hbGxDYXBzKSk7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgRm9udFZhcmlhbnRDYXBzOjpQZXRpdGU6CisgICAgICAgIGxpc3QuZ2V0KCkuYXBw
ZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1Zh
bHVlUGV0aXRlQ2FwcykpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEZvbnRWYXJpYW50Q2Fw
czo6QWxsUGV0aXRlOgorICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNp
bmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUFsbFBldGl0ZUNhcHMpKTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBGb250VmFyaWFudENhcHM6OlVuaWNhc2U6CisgICAg
ICAgIGxpc3QuZ2V0KCkuYXBwZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRl
bnRpZmllclZhbHVlKENTU1ZhbHVlVW5pY2FzZSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IEZvbnRWYXJpYW50Q2Fwczo6VGl0bGluZzoKKyAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoQ1NT
VmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVUaXRs
aW5nQ2FwcykpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBzd2l0Y2ggKHZhcmlhbnRT
ZXR0aW5ncy5udW1lcmljRmlndXJlKSB7CisgICAgY2FzZSBGb250VmFyaWFudE51bWVyaWNGaWd1
cmU6Ok5vcm1hbDoKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBGb250VmFyaWFudE51bWVyaWNG
aWd1cmU6OkxpbmluZ051bWJlcnM6CisgICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKENTU1ZhbHVl
UG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTGluaW5nTnVt
cykpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEZvbnRWYXJpYW50TnVtZXJpY0ZpZ3VyZTo6
T2xkU3R5bGVOdW1iZXJzOgorICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChDU1NWYWx1ZVBvb2w6
OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU9sZHN0eWxlTnVtcykp
OworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBzd2l0Y2ggKHZhcmlhbnRTZXR0aW5ncy5u
dW1lcmljU3BhY2luZykgeworICAgIGNhc2UgRm9udFZhcmlhbnROdW1lcmljU3BhY2luZzo6Tm9y
bWFsOgorICAgICAgICBicmVhazsKKyAgICBjYXNlIEZvbnRWYXJpYW50TnVtZXJpY1NwYWNpbmc6
OlByb3BvcnRpb25hbE51bWJlcnM6CisgICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKENTU1ZhbHVl
UG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlUHJvcG9ydGlv
bmFsTnVtcykpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEZvbnRWYXJpYW50TnVtZXJpY1Nw
YWNpbmc6OlRhYnVsYXJOdW1iZXJzOgorICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChDU1NWYWx1
ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZVRhYnVsYXJO
dW1zKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHN3aXRjaCAodmFyaWFudFNldHRp
bmdzLm51bWVyaWNGcmFjdGlvbikgeworICAgIGNhc2UgRm9udFZhcmlhbnROdW1lcmljRnJhY3Rp
b246Ok5vcm1hbDoKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBGb250VmFyaWFudE51bWVyaWNG
cmFjdGlvbjo6RGlhZ29uYWxGcmFjdGlvbnM6CisgICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKENT
U1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlRGlh
Z29uYWxGcmFjdGlvbnMpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBGb250VmFyaWFudE51
bWVyaWNGcmFjdGlvbjo6U3RhY2tlZEZyYWN0aW9uczoKKyAgICAgICAgbGlzdC5nZXQoKS5hcHBl
bmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFs
dWVTdGFja2VkRnJhY3Rpb25zKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHN3aXRj
aCAodmFyaWFudFNldHRpbmdzLm51bWVyaWNPcmRpbmFsKSB7CisgICAgY2FzZSBGb250VmFyaWFu
dE51bWVyaWNPcmRpbmFsOjpOb3JtYWw6CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRm9udFZh
cmlhbnROdW1lcmljT3JkaW5hbDo6WWVzOgorICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChDU1NW
YWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU9yZGlu
YWwpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgc3dpdGNoICh2YXJpYW50U2V0dGlu
Z3MubnVtZXJpY1NsYXNoZWRaZXJvKSB7CisgICAgY2FzZSBGb250VmFyaWFudE51bWVyaWNTbGFz
aGVkWmVybzo6Tm9ybWFsOgorICAgICAgICBicmVhazsKKyAgICBjYXNlIEZvbnRWYXJpYW50TnVt
ZXJpY1NsYXNoZWRaZXJvOjpZZXM6CisgICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKENTU1ZhbHVl
UG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlU2xhc2hlZFpl
cm8pKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgc3dpdGNoICh2YXJpYW50U2V0dGlu
Z3MuYWx0ZXJuYXRlcykgeworICAgIGNhc2UgRm9udFZhcmlhbnRBbHRlcm5hdGVzOjpOb3JtYWw6
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRm9udFZhcmlhbnRBbHRlcm5hdGVzOjpIaXN0b3Jp
Y2FsRm9ybXM6CisgICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xl
dG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlSGlzdG9yaWNhbEZvcm1zKSk7Cisg
ICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHN3aXRjaCAodmFyaWFudFNldHRpbmdzLmVhc3RB
c2lhblZhcmlhbnQpIHsKKyAgICBjYXNlIEZvbnRWYXJpYW50RWFzdEFzaWFuVmFyaWFudDo6Tm9y
bWFsOgorICAgICAgICBicmVhazsKKyAgICBjYXNlIEZvbnRWYXJpYW50RWFzdEFzaWFuVmFyaWFu
dDo6SmlzNzg6CisgICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xl
dG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlSmlzNzgpKTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBGb250VmFyaWFudEVhc3RBc2lhblZhcmlhbnQ6OkppczgzOgorICAgICAg
ICBsaXN0LmdldCgpLmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50
aWZpZXJWYWx1ZShDU1NWYWx1ZUppczgzKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRm9u
dFZhcmlhbnRFYXN0QXNpYW5WYXJpYW50OjpKaXM5MDoKKyAgICAgICAgbGlzdC5nZXQoKS5hcHBl
bmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFs
dWVKaXM5MCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEZvbnRWYXJpYW50RWFzdEFzaWFu
VmFyaWFudDo6SmlzMDQ6CisgICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKENTU1ZhbHVlUG9vbDo6
c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlSmlzMDQpKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBGb250VmFyaWFudEVhc3RBc2lhblZhcmlhbnQ6OlNpbXBsaWZp
ZWQ6CisgICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCku
Y3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlU2ltcGxpZmllZCkpOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIEZvbnRWYXJpYW50RWFzdEFzaWFuVmFyaWFudDo6VHJhZGl0aW9uYWw6Cisg
ICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRl
SWRlbnRpZmllclZhbHVlKENTU1ZhbHVlVHJhZGl0aW9uYWwpKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorCisgICAgc3dpdGNoICh2YXJpYW50U2V0dGluZ3MuZWFzdEFzaWFuV2lkdGgpIHsKKyAg
ICBjYXNlIEZvbnRWYXJpYW50RWFzdEFzaWFuV2lkdGg6Ok5vcm1hbDoKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBGb250VmFyaWFudEVhc3RBc2lhbldpZHRoOjpGdWxsOgorICAgICAgICBsaXN0
LmdldCgpLmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJW
YWx1ZShDU1NWYWx1ZUZ1bGxXaWR0aCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEZvbnRW
YXJpYW50RWFzdEFzaWFuV2lkdGg6OlByb3BvcnRpb25hbDoKKyAgICAgICAgbGlzdC5nZXQoKS5h
cHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NT
VmFsdWVQcm9wb3J0aW9uYWxXaWR0aCkpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBz
d2l0Y2ggKHZhcmlhbnRTZXR0aW5ncy5lYXN0QXNpYW5SdWJ5KSB7CisgICAgY2FzZSBGb250VmFy
aWFudEVhc3RBc2lhblJ1Ynk6Ok5vcm1hbDoKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBGb250
VmFyaWFudEVhc3RBc2lhblJ1Ynk6OlllczoKKyAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoQ1NT
VmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVSdWJ5
KSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHJldHVybiBXVEZNb3ZlKGxpc3QpOwor
fQorCit9CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250VmFyaWFudEJ1aWxk
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250VmFyaWFudEJ1aWxkZXIuaAppbmRleCBmYTgy
NDI5ZmRhNjgyNDY2OWExNTAwYTZlNWNiOGYzNDQ1MGE2NTk4Li5kMWIyNjVkNDg5MjVhYzMwMzMx
ZDQwYzkyMGExN2MyZjk4OTBhNTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9u
dFZhcmlhbnRCdWlsZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRWYXJpYW50QnVp
bGRlci5oCkBAIC0yNiwxNzAgKzI2LDIxIEBACiAjaWZuZGVmIEZvbnRWYXJpYW50QnVpbGRlcl9o
CiAjZGVmaW5lIEZvbnRWYXJpYW50QnVpbGRlcl9oCiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgdm9pZCBhcHBseVZhbHVlRm9udFZhcmlhbnRM
aWdhdHVyZXMoVCYgcmVjZWl2ZXIsIENTU1ZhbHVlJiB2YWx1ZSkKLXsKLSAgICBGb250VmFyaWFu
dExpZ2F0dXJlcyBjb21tb24gPSBGb250VmFyaWFudExpZ2F0dXJlczo6Tm9ybWFsOwotICAgIEZv
bnRWYXJpYW50TGlnYXR1cmVzIGRpc2NyZXRpb25hcnkgPSBGb250VmFyaWFudExpZ2F0dXJlczo6
Tm9ybWFsOwotICAgIEZvbnRWYXJpYW50TGlnYXR1cmVzIGhpc3RvcmljYWwgPSBGb250VmFyaWFu
dExpZ2F0dXJlczo6Tm9ybWFsOwotICAgIEZvbnRWYXJpYW50TGlnYXR1cmVzIGNvbnRleHR1YWxB
bHRlcm5hdGVzID0gRm9udFZhcmlhbnRMaWdhdHVyZXM6Ok5vcm1hbDsKLQotICAgIGlmIChpczxD
U1NWYWx1ZUxpc3Q+KHZhbHVlKSkgewotICAgICAgICBmb3IgKGF1dG8mIGl0ZW0gOiBkb3duY2Fz
dDxDU1NWYWx1ZUxpc3Q+KHZhbHVlKSkgewotICAgICAgICAgICAgc3dpdGNoIChkb3duY2FzdDxD
U1NQcmltaXRpdmVWYWx1ZT4oaXRlbS5nZXQoKSkuZ2V0VmFsdWVJRCgpKSB7Ci0gICAgICAgICAg
ICBjYXNlIENTU1ZhbHVlTm9Db21tb25MaWdhdHVyZXM6Ci0gICAgICAgICAgICAgICAgY29tbW9u
ID0gRm9udFZhcmlhbnRMaWdhdHVyZXM6Ok5vOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgY2FzZSBDU1NWYWx1ZUNvbW1vbkxpZ2F0dXJlczoKLSAgICAgICAgICAgICAgICBj
b21tb24gPSBGb250VmFyaWFudExpZ2F0dXJlczo6WWVzOwotICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZU5vRGlzY3JldGlvbmFyeUxpZ2F0dXJlczoKLSAg
ICAgICAgICAgICAgICBkaXNjcmV0aW9uYXJ5ID0gRm9udFZhcmlhbnRMaWdhdHVyZXM6Ok5vOwot
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZURpc2NyZXRp
b25hcnlMaWdhdHVyZXM6Ci0gICAgICAgICAgICAgICAgZGlzY3JldGlvbmFyeSA9IEZvbnRWYXJp
YW50TGlnYXR1cmVzOjpZZXM7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBj
YXNlIENTU1ZhbHVlTm9IaXN0b3JpY2FsTGlnYXR1cmVzOgotICAgICAgICAgICAgICAgIGhpc3Rv
cmljYWwgPSBGb250VmFyaWFudExpZ2F0dXJlczo6Tm87Ci0gICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICBjYXNlIENTU1ZhbHVlSGlzdG9yaWNhbExpZ2F0dXJlczoKLSAgICAgICAg
ICAgICAgICBoaXN0b3JpY2FsID0gRm9udFZhcmlhbnRMaWdhdHVyZXM6OlllczsKLSAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVDb250ZXh0dWFsOgotICAg
ICAgICAgICAgICAgIGNvbnRleHR1YWxBbHRlcm5hdGVzID0gRm9udFZhcmlhbnRMaWdhdHVyZXM6
OlllczsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVO
b0NvbnRleHR1YWw6Ci0gICAgICAgICAgICAgICAgY29udGV4dHVhbEFsdGVybmF0ZXMgPSBGb250
VmFyaWFudExpZ2F0dXJlczo6Tm87Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfSBlbHNlIGlm
IChpczxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpKSB7Ci0gICAgICAgIHN3aXRjaCAoZG93bmNh
c3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS5nZXRWYWx1ZUlEKCkpIHsKLSAgICAgICAgY2Fz
ZSBDU1NWYWx1ZU5vcm1hbDoKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENTU1Zh
bHVlTm9uZToKLSAgICAgICAgICAgIGNvbW1vbiA9IEZvbnRWYXJpYW50TGlnYXR1cmVzOjpObzsK
LSAgICAgICAgICAgIGRpc2NyZXRpb25hcnkgPSBGb250VmFyaWFudExpZ2F0dXJlczo6Tm87Ci0g
ICAgICAgICAgICBoaXN0b3JpY2FsID0gRm9udFZhcmlhbnRMaWdhdHVyZXM6Ok5vOwotICAgICAg
ICAgICAgY29udGV4dHVhbEFsdGVybmF0ZXMgPSBGb250VmFyaWFudExpZ2F0dXJlczo6Tm87Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAg
ICByZWNlaXZlci5zZXRWYXJpYW50Q29tbW9uTGlnYXR1cmVzKGNvbW1vbik7Ci0gICAgcmVjZWl2
ZXIuc2V0VmFyaWFudERpc2NyZXRpb25hcnlMaWdhdHVyZXMoZGlzY3JldGlvbmFyeSk7Ci0gICAg
cmVjZWl2ZXIuc2V0VmFyaWFudEhpc3RvcmljYWxMaWdhdHVyZXMoaGlzdG9yaWNhbCk7Ci0gICAg
cmVjZWl2ZXIuc2V0VmFyaWFudENvbnRleHR1YWxBbHRlcm5hdGVzKGNvbnRleHR1YWxBbHRlcm5h
dGVzKTsKLX0KKyNpbmNsdWRlIDx3dGYvUmVmLmg+CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgot
aW5saW5lIHZvaWQgYXBwbHlWYWx1ZUZvbnRWYXJpYW50TnVtZXJpYyhUJiByZWNlaXZlciwgQ1NT
VmFsdWUmIHZhbHVlKQotewotICAgIEZvbnRWYXJpYW50TnVtZXJpY0ZpZ3VyZSBmaWd1cmUgPSBG
b250VmFyaWFudE51bWVyaWNGaWd1cmU6Ok5vcm1hbDsKLSAgICBGb250VmFyaWFudE51bWVyaWNT
cGFjaW5nIHNwYWNpbmcgPSBGb250VmFyaWFudE51bWVyaWNTcGFjaW5nOjpOb3JtYWw7Ci0gICAg
Rm9udFZhcmlhbnROdW1lcmljRnJhY3Rpb24gZnJhY3Rpb24gPSBGb250VmFyaWFudE51bWVyaWNG
cmFjdGlvbjo6Tm9ybWFsOwotICAgIEZvbnRWYXJpYW50TnVtZXJpY09yZGluYWwgb3JkaW5hbCA9
IEZvbnRWYXJpYW50TnVtZXJpY09yZGluYWw6Ok5vcm1hbDsKLSAgICBGb250VmFyaWFudE51bWVy
aWNTbGFzaGVkWmVybyBzbGFzaGVkWmVybyA9IEZvbnRWYXJpYW50TnVtZXJpY1NsYXNoZWRaZXJv
OjpOb3JtYWw7Ci0KLSAgICBpZiAoaXM8Q1NTVmFsdWVMaXN0Pih2YWx1ZSkpIHsKLSAgICAgICAg
Zm9yIChhdXRvJiBpdGVtIDogZG93bmNhc3Q8Q1NTVmFsdWVMaXN0Pih2YWx1ZSkpIHsKLSAgICAg
ICAgICAgIHN3aXRjaCAoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KGl0ZW0uZ2V0KCkpLmdl
dFZhbHVlSUQoKSkgewotICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZUxpbmluZ051bXM6Ci0gICAg
ICAgICAgICAgICAgZmlndXJlID0gRm9udFZhcmlhbnROdW1lcmljRmlndXJlOjpMaW5pbmdOdW1i
ZXJzOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZU9s
ZHN0eWxlTnVtczoKLSAgICAgICAgICAgICAgICBmaWd1cmUgPSBGb250VmFyaWFudE51bWVyaWNG
aWd1cmU6Ok9sZFN0eWxlTnVtYmVyczsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgIGNhc2UgQ1NTVmFsdWVQcm9wb3J0aW9uYWxOdW1zOgotICAgICAgICAgICAgICAgIHNwYWNp
bmcgPSBGb250VmFyaWFudE51bWVyaWNTcGFjaW5nOjpQcm9wb3J0aW9uYWxOdW1iZXJzOwotICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZVRhYnVsYXJOdW1z
OgotICAgICAgICAgICAgICAgIHNwYWNpbmcgPSBGb250VmFyaWFudE51bWVyaWNTcGFjaW5nOjpU
YWJ1bGFyTnVtYmVyczsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2Ug
Q1NTVmFsdWVEaWFnb25hbEZyYWN0aW9uczoKLSAgICAgICAgICAgICAgICBmcmFjdGlvbiA9IEZv
bnRWYXJpYW50TnVtZXJpY0ZyYWN0aW9uOjpEaWFnb25hbEZyYWN0aW9uczsKLSAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVTdGFja2VkRnJhY3Rpb25zOgot
ICAgICAgICAgICAgICAgIGZyYWN0aW9uID0gRm9udFZhcmlhbnROdW1lcmljRnJhY3Rpb246OlN0
YWNrZWRGcmFjdGlvbnM7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNl
IENTU1ZhbHVlT3JkaW5hbDoKLSAgICAgICAgICAgICAgICBvcmRpbmFsID0gRm9udFZhcmlhbnRO
dW1lcmljT3JkaW5hbDo6WWVzOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
Y2FzZSBDU1NWYWx1ZVNsYXNoZWRaZXJvOgotICAgICAgICAgICAgICAgIHNsYXNoZWRaZXJvID0g
Rm9udFZhcmlhbnROdW1lcmljU2xhc2hlZFplcm86OlllczsKLSAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0K
LSAgICB9IGVsc2UgaWYgKGlzPENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkpCi0gICAgICAgIEFT
U0VSVChkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLmdldFZhbHVlSUQoKSA9PSBD
U1NWYWx1ZU5vcm1hbCk7Ci0KLSAgICByZWNlaXZlci5zZXRWYXJpYW50TnVtZXJpY0ZpZ3VyZShm
aWd1cmUpOwotICAgIHJlY2VpdmVyLnNldFZhcmlhbnROdW1lcmljU3BhY2luZyhzcGFjaW5nKTsK
LSAgICByZWNlaXZlci5zZXRWYXJpYW50TnVtZXJpY0ZyYWN0aW9uKGZyYWN0aW9uKTsKLSAgICBy
ZWNlaXZlci5zZXRWYXJpYW50TnVtZXJpY09yZGluYWwob3JkaW5hbCk7Ci0gICAgcmVjZWl2ZXIu
c2V0VmFyaWFudE51bWVyaWNTbGFzaGVkWmVybyhzbGFzaGVkWmVybyk7Ci19CituYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotaW5saW5lIHZvaWQgYXBwbHlWYWx1
ZUZvbnRWYXJpYW50RWFzdEFzaWFuKFQmIHJlY2VpdmVyLCBDU1NWYWx1ZSYgdmFsdWUpCi17Ci0g
ICAgRm9udFZhcmlhbnRFYXN0QXNpYW5WYXJpYW50IHZhcmlhbnQgPSBGb250VmFyaWFudEVhc3RB
c2lhblZhcmlhbnQ6Ok5vcm1hbDsKLSAgICBGb250VmFyaWFudEVhc3RBc2lhbldpZHRoIHdpZHRo
ID0gRm9udFZhcmlhbnRFYXN0QXNpYW5XaWR0aDo6Tm9ybWFsOwotICAgIEZvbnRWYXJpYW50RWFz
dEFzaWFuUnVieSBydWJ5ID0gRm9udFZhcmlhbnRFYXN0QXNpYW5SdWJ5OjpOb3JtYWw7CitjbGFz
cyBDU1NWYWx1ZTsKK3N0cnVjdCBGb250VmFyaWFudFNldHRpbmdzOworc3RydWN0IEZvbnRWYXJp
YW50TGlnYXR1cmVzVmFsdWVzOworc3RydWN0IEZvbnRWYXJpYW50TnVtZXJpY1ZhbHVlczsKK3N0
cnVjdCBGb250VmFyaWFudEVhc3RBc2lhblZhbHVlczsKIAotICAgIGlmIChpczxDU1NWYWx1ZUxp
c3Q+KHZhbHVlKSkgewotICAgICAgICBmb3IgKGF1dG8mIGl0ZW0gOiBkb3duY2FzdDxDU1NWYWx1
ZUxpc3Q+KHZhbHVlKSkgewotICAgICAgICAgICAgc3dpdGNoIChkb3duY2FzdDxDU1NQcmltaXRp
dmVWYWx1ZT4oaXRlbS5nZXQoKSkuZ2V0VmFsdWVJRCgpKSB7Ci0gICAgICAgICAgICBjYXNlIENT
U1ZhbHVlSmlzNzg6Ci0gICAgICAgICAgICAgICAgdmFyaWFudCA9IEZvbnRWYXJpYW50RWFzdEFz
aWFuVmFyaWFudDo6SmlzNzg7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBj
YXNlIENTU1ZhbHVlSmlzODM6Ci0gICAgICAgICAgICAgICAgdmFyaWFudCA9IEZvbnRWYXJpYW50
RWFzdEFzaWFuVmFyaWFudDo6SmlzODM7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICBjYXNlIENTU1ZhbHVlSmlzOTA6Ci0gICAgICAgICAgICAgICAgdmFyaWFudCA9IEZvbnRW
YXJpYW50RWFzdEFzaWFuVmFyaWFudDo6SmlzOTA7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICBjYXNlIENTU1ZhbHVlSmlzMDQ6Ci0gICAgICAgICAgICAgICAgdmFyaWFudCA9
IEZvbnRWYXJpYW50RWFzdEFzaWFuVmFyaWFudDo6SmlzMDQ7Ci0gICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICBjYXNlIENTU1ZhbHVlU2ltcGxpZmllZDoKLSAgICAgICAgICAgICAg
ICB2YXJpYW50ID0gRm9udFZhcmlhbnRFYXN0QXNpYW5WYXJpYW50OjpTaW1wbGlmaWVkOwotICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZVRyYWRpdGlvbmFs
OgotICAgICAgICAgICAgICAgIHZhcmlhbnQgPSBGb250VmFyaWFudEVhc3RBc2lhblZhcmlhbnQ6
OlRyYWRpdGlvbmFsOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBD
U1NWYWx1ZUZ1bGxXaWR0aDoKLSAgICAgICAgICAgICAgICB3aWR0aCA9IEZvbnRWYXJpYW50RWFz
dEFzaWFuV2lkdGg6OkZ1bGw7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBj
YXNlIENTU1ZhbHVlUHJvcG9ydGlvbmFsV2lkdGg6Ci0gICAgICAgICAgICAgICAgd2lkdGggPSBG
b250VmFyaWFudEVhc3RBc2lhbldpZHRoOjpQcm9wb3J0aW9uYWw7Ci0gICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICBjYXNlIENTU1ZhbHVlUnVieToKLSAgICAgICAgICAgICAgICBy
dWJ5ID0gRm9udFZhcmlhbnRFYXN0QXNpYW5SdWJ5OjpZZXM7Ci0gICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9
Ci0gICAgfSBlbHNlIGlmIChpczxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpKQotICAgICAgICBB
U1NFUlQoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS5nZXRWYWx1ZUlEKCkgPT0g
Q1NTVmFsdWVOb3JtYWwpOworRm9udFZhcmlhbnRMaWdhdHVyZXNWYWx1ZXMgZXh0cmFjdEZvbnRW
YXJpYW50TGlnYXR1cmVzKENTU1ZhbHVlJik7CitGb250VmFyaWFudE51bWVyaWNWYWx1ZXMgZXh0
cmFjdEZvbnRWYXJpYW50TnVtZXJpYyhDU1NWYWx1ZSYpOworRm9udFZhcmlhbnRFYXN0QXNpYW5W
YWx1ZXMgZXh0cmFjdEZvbnRWYXJpYW50RWFzdEFzaWFuKENTU1ZhbHVlJik7CiAKLSAgICByZWNl
aXZlci5zZXRWYXJpYW50RWFzdEFzaWFuVmFyaWFudCh2YXJpYW50KTsKLSAgICByZWNlaXZlci5z
ZXRWYXJpYW50RWFzdEFzaWFuV2lkdGgod2lkdGgpOwotICAgIHJlY2VpdmVyLnNldFZhcmlhbnRF
YXN0QXNpYW5SdWJ5KHJ1YnkpOwotfQorUmVmPENTU1ZhbHVlPiBjb21wdXRlRm9udFZhcmlhbnQo
Y29uc3QgRm9udFZhcmlhbnRTZXR0aW5ncyYpOwogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDdXN0b20uaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHls
ZUJ1aWxkZXJDdXN0b20uaAppbmRleCA1ZDc1NmY0MmNiN2UwNjBmNGMwZjU3ZGFkMWI1ZDI5YjNl
YzNiOTgyLi40ZmJjZjJlZTVmZGVhZTA1YzE4M2ZlODFmYjZhN2QyNzgyNTYxMzNiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ3VzdG9tLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckN1c3RvbS5oCkBAIC0xNDA3LDcgKzE0MDcsMTEgQEAg
aW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaXRpYWxGb250VmFyaWFudExp
Z2F0dXJlcyhTdHlsZVJlc29sdmVyJgogaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjph
cHBseVZhbHVlRm9udFZhcmlhbnRMaWdhdHVyZXMoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZl
ciwgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIGF1dG8gZm9udERlc2NyaXB0aW9uID0gc3R5bGVS
ZXNvbHZlci5mb250RGVzY3JpcHRpb24oKTsKLSAgICBXZWJDb3JlOjphcHBseVZhbHVlRm9udFZh
cmlhbnRMaWdhdHVyZXMoZm9udERlc2NyaXB0aW9uLCB2YWx1ZSk7CisgICAgYXV0byB2YXJpYW50
TGlnYXR1cmVzID0gZXh0cmFjdEZvbnRWYXJpYW50TGlnYXR1cmVzKHZhbHVlKTsKKyAgICBmb250
RGVzY3JpcHRpb24uc2V0VmFyaWFudENvbW1vbkxpZ2F0dXJlcyh2YXJpYW50TGlnYXR1cmVzLmNv
bW1vbkxpZ2F0dXJlcyk7CisgICAgZm9udERlc2NyaXB0aW9uLnNldFZhcmlhbnREaXNjcmV0aW9u
YXJ5TGlnYXR1cmVzKHZhcmlhbnRMaWdhdHVyZXMuZGlzY3JldGlvbmFyeUxpZ2F0dXJlcyk7Cisg
ICAgZm9udERlc2NyaXB0aW9uLnNldFZhcmlhbnRIaXN0b3JpY2FsTGlnYXR1cmVzKHZhcmlhbnRM
aWdhdHVyZXMuaGlzdG9yaWNhbExpZ2F0dXJlcyk7CisgICAgZm9udERlc2NyaXB0aW9uLnNldFZh
cmlhbnRDb250ZXh0dWFsQWx0ZXJuYXRlcyh2YXJpYW50TGlnYXR1cmVzLmNvbnRleHR1YWxBbHRl
cm5hdGVzKTsKICAgICBzdHlsZVJlc29sdmVyLnNldEZvbnREZXNjcmlwdGlvbihmb250RGVzY3Jp
cHRpb24pOwogfQogCkBAIC0xNDM2LDcgKzE0NDAsMTIgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWls
ZGVyQ3VzdG9tOjphcHBseUluaXRpYWxGb250VmFyaWFudE51bWVyaWMoU3R5bGVSZXNvbHZlciYg
c3QKIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUZvbnRWYXJpYW50
TnVtZXJpYyhTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBDU1NWYWx1ZSYgdmFsdWUpCiB7
CiAgICAgYXV0byBmb250RGVzY3JpcHRpb24gPSBzdHlsZVJlc29sdmVyLmZvbnREZXNjcmlwdGlv
bigpOwotICAgIFdlYkNvcmU6OmFwcGx5VmFsdWVGb250VmFyaWFudE51bWVyaWMoZm9udERlc2Ny
aXB0aW9uLCB2YWx1ZSk7CisgICAgYXV0byB2YXJpYW50TnVtZXJpYyA9IGV4dHJhY3RGb250VmFy
aWFudE51bWVyaWModmFsdWUpOworICAgIGZvbnREZXNjcmlwdGlvbi5zZXRWYXJpYW50TnVtZXJp
Y0ZpZ3VyZSh2YXJpYW50TnVtZXJpYy5maWd1cmUpOworICAgIGZvbnREZXNjcmlwdGlvbi5zZXRW
YXJpYW50TnVtZXJpY1NwYWNpbmcodmFyaWFudE51bWVyaWMuc3BhY2luZyk7CisgICAgZm9udERl
c2NyaXB0aW9uLnNldFZhcmlhbnROdW1lcmljRnJhY3Rpb24odmFyaWFudE51bWVyaWMuZnJhY3Rp
b24pOworICAgIGZvbnREZXNjcmlwdGlvbi5zZXRWYXJpYW50TnVtZXJpY09yZGluYWwodmFyaWFu
dE51bWVyaWMub3JkaW5hbCk7CisgICAgZm9udERlc2NyaXB0aW9uLnNldFZhcmlhbnROdW1lcmlj
U2xhc2hlZFplcm8odmFyaWFudE51bWVyaWMuc2xhc2hlZFplcm8pOwogICAgIHN0eWxlUmVzb2x2
ZXIuc2V0Rm9udERlc2NyaXB0aW9uKGZvbnREZXNjcmlwdGlvbik7CiB9CiAKQEAgLTE0NjEsNyAr
MTQ3MCwxMCBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5pdGlhbEZv
bnRWYXJpYW50RWFzdEFzaWFuKFN0eWxlUmVzb2x2ZXImCiBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxk
ZXJDdXN0b206OmFwcGx5VmFsdWVGb250VmFyaWFudEVhc3RBc2lhbihTdHlsZVJlc29sdmVyJiBz
dHlsZVJlc29sdmVyLCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgYXV0byBmb250RGVzY3JpcHRp
b24gPSBzdHlsZVJlc29sdmVyLmZvbnREZXNjcmlwdGlvbigpOwotICAgIFdlYkNvcmU6OmFwcGx5
VmFsdWVGb250VmFyaWFudEVhc3RBc2lhbihmb250RGVzY3JpcHRpb24sIHZhbHVlKTsKKyAgICBh
dXRvIHZhcmlhbnRFYXN0QXNpYW4gPSBleHRyYWN0Rm9udFZhcmlhbnRFYXN0QXNpYW4odmFsdWUp
OworICAgIGZvbnREZXNjcmlwdGlvbi5zZXRWYXJpYW50RWFzdEFzaWFuVmFyaWFudCh2YXJpYW50
RWFzdEFzaWFuLnZhcmlhbnQpOworICAgIGZvbnREZXNjcmlwdGlvbi5zZXRWYXJpYW50RWFzdEFz
aWFuV2lkdGgodmFyaWFudEVhc3RBc2lhbi53aWR0aCk7CisgICAgZm9udERlc2NyaXB0aW9uLnNl
dFZhcmlhbnRFYXN0QXNpYW5SdWJ5KHZhcmlhbnRFYXN0QXNpYW4ucnVieSk7CiAgICAgc3R5bGVS
ZXNvbHZlci5zZXRGb250RGVzY3JpcHRpb24oZm9udERlc2NyaXB0aW9uKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0RmxhZ3MuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEZsYWdzLmgKaW5kZXggMGMyODJmZTAyZTg2YzViOTdm
ZGU3MWRiMDA3ODgxMmVjMmUwNzQ1Zi4uNTA5YjU3OWY4NzE1MTA3MWVlN2JkNTU4MDJhMjMyM2M5
OWZiMTFlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Rmxh
Z3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRGbGFncy5oCkBAIC0y
NDgsNiArMjQ4LDYzIEBAIHN0cnVjdCBGb250VmFyaWFudFNldHRpbmdzIHsKICAgICBGb250VmFy
aWFudEVhc3RBc2lhblJ1YnkgZWFzdEFzaWFuUnVieTsKIH07CiAKK3N0cnVjdCBGb250VmFyaWFu
dExpZ2F0dXJlc1ZhbHVlcyB7CisgICAgRm9udFZhcmlhbnRMaWdhdHVyZXNWYWx1ZXMoCisgICAg
ICAgIEZvbnRWYXJpYW50TGlnYXR1cmVzIGNvbW1vbkxpZ2F0dXJlcywKKyAgICAgICAgRm9udFZh
cmlhbnRMaWdhdHVyZXMgZGlzY3JldGlvbmFyeUxpZ2F0dXJlcywKKyAgICAgICAgRm9udFZhcmlh
bnRMaWdhdHVyZXMgaGlzdG9yaWNhbExpZ2F0dXJlcywKKyAgICAgICAgRm9udFZhcmlhbnRMaWdh
dHVyZXMgY29udGV4dHVhbEFsdGVybmF0ZXMpCisgICAgICAgICAgICA6IGNvbW1vbkxpZ2F0dXJl
cyhjb21tb25MaWdhdHVyZXMpCisgICAgICAgICAgICAsIGRpc2NyZXRpb25hcnlMaWdhdHVyZXMo
ZGlzY3JldGlvbmFyeUxpZ2F0dXJlcykKKyAgICAgICAgICAgICwgaGlzdG9yaWNhbExpZ2F0dXJl
cyhoaXN0b3JpY2FsTGlnYXR1cmVzKQorICAgICAgICAgICAgLCBjb250ZXh0dWFsQWx0ZXJuYXRl
cyhjb250ZXh0dWFsQWx0ZXJuYXRlcykKKyAgICB7CisgICAgfQorCisgICAgRm9udFZhcmlhbnRM
aWdhdHVyZXMgY29tbW9uTGlnYXR1cmVzOworICAgIEZvbnRWYXJpYW50TGlnYXR1cmVzIGRpc2Ny
ZXRpb25hcnlMaWdhdHVyZXM7CisgICAgRm9udFZhcmlhbnRMaWdhdHVyZXMgaGlzdG9yaWNhbExp
Z2F0dXJlczsKKyAgICBGb250VmFyaWFudExpZ2F0dXJlcyBjb250ZXh0dWFsQWx0ZXJuYXRlczsK
K307CisKK3N0cnVjdCBGb250VmFyaWFudE51bWVyaWNWYWx1ZXMgeworICAgIEZvbnRWYXJpYW50
TnVtZXJpY1ZhbHVlcygKKyAgICAgICAgRm9udFZhcmlhbnROdW1lcmljRmlndXJlIGZpZ3VyZSwK
KyAgICAgICAgRm9udFZhcmlhbnROdW1lcmljU3BhY2luZyBzcGFjaW5nLAorICAgICAgICBGb250
VmFyaWFudE51bWVyaWNGcmFjdGlvbiBmcmFjdGlvbiwKKyAgICAgICAgRm9udFZhcmlhbnROdW1l
cmljT3JkaW5hbCBvcmRpbmFsLAorICAgICAgICBGb250VmFyaWFudE51bWVyaWNTbGFzaGVkWmVy
byBzbGFzaGVkWmVybykKKyAgICAgICAgICAgIDogZmlndXJlKGZpZ3VyZSkKKyAgICAgICAgICAg
ICwgc3BhY2luZyhzcGFjaW5nKQorICAgICAgICAgICAgLCBmcmFjdGlvbihmcmFjdGlvbikKKyAg
ICAgICAgICAgICwgb3JkaW5hbChvcmRpbmFsKQorICAgICAgICAgICAgLCBzbGFzaGVkWmVybyhz
bGFzaGVkWmVybykKKyAgICB7CisgICAgfQorCisgICAgRm9udFZhcmlhbnROdW1lcmljRmlndXJl
IGZpZ3VyZTsKKyAgICBGb250VmFyaWFudE51bWVyaWNTcGFjaW5nIHNwYWNpbmc7CisgICAgRm9u
dFZhcmlhbnROdW1lcmljRnJhY3Rpb24gZnJhY3Rpb247CisgICAgRm9udFZhcmlhbnROdW1lcmlj
T3JkaW5hbCBvcmRpbmFsOworICAgIEZvbnRWYXJpYW50TnVtZXJpY1NsYXNoZWRaZXJvIHNsYXNo
ZWRaZXJvOworfTsKKworc3RydWN0IEZvbnRWYXJpYW50RWFzdEFzaWFuVmFsdWVzIHsKKyAgICBG
b250VmFyaWFudEVhc3RBc2lhblZhbHVlcygKKyAgICAgICAgRm9udFZhcmlhbnRFYXN0QXNpYW5W
YXJpYW50IHZhcmlhbnQsCisgICAgICAgIEZvbnRWYXJpYW50RWFzdEFzaWFuV2lkdGggd2lkdGgs
CisgICAgICAgIEZvbnRWYXJpYW50RWFzdEFzaWFuUnVieSBydWJ5KQorICAgICAgICAgICAgOiB2
YXJpYW50KHZhcmlhbnQpCisgICAgICAgICAgICAsIHdpZHRoKHdpZHRoKQorICAgICAgICAgICAg
LCBydWJ5KHJ1YnkpCisgICAgeworICAgIH0KKworICAgIEZvbnRWYXJpYW50RWFzdEFzaWFuVmFy
aWFudCB2YXJpYW50OworICAgIEZvbnRWYXJpYW50RWFzdEFzaWFuV2lkdGggd2lkdGg7CisgICAg
Rm9udFZhcmlhbnRFYXN0QXNpYW5SdWJ5IHJ1Ynk7Cit9OworCiBlbnVtIEZvbnRXaWR0aFZhcmlh
bnQgewogICAgIFJlZ3VsYXJXaWR0aCwKICAgICBIYWxmV2lkdGgsCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>271122</attachid>
            <date>2016-02-11 19:22:20 -0800</date>
            <delta_ts>2016-02-12 13:37:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-154145-20160211192158.patch</filename>
            <type>text/plain</type>
            <size>66357</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk2NDM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjBiMmQxZDVjZWI2MmZm
OGQ4NzU0ZTBmMDFlNTU0OWRjMzE5M2I2ZC4uZWRhNDIxODVmY2IyNWZjZmE2NWUwNzE0YjAyZGU4
NzhmNWFiMzA1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDEwMiBAQAogMjAxNi0wMi0xMSAgTXls
ZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCisgICAgICAgIFtDU1MgRm9u
dCBMb2FkaW5nXSBJbXBsZW1lbnQgQ1NTRm9udEZhY2UgQm9pbGVycGxhdGUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NDE0NQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBDU1MgRm9udCBMb2FkaW5n
IHNwZWNbMV0gZGljdGF0ZXMgdGhhdCB0aGUgRm9udEZhY2Ugb2JqZWN0IG5lZWRzIHRvIGhhdmUg
c3RyaW5nCisgICAgICAgIGFjY2Vzc29ycyBhbmQgbXV0YXRvcnMgZm9yIGEgYnVuY2ggb2YgcHJv
cGVydGllcy4gT3VyIENTU0ZvbnRGYWNlIG9iamVjdCBjdXJyZW50bHkKKyAgICAgICAgY29udGFp
bnMgdGhpcyBwYXJzZWQgaW5mb3JtYXRpb24sIGJ1dCBpdCBpc24ndCBhY2Nlc3NpYmxlIHZpYSBz
dHJpbmctYmFzZWQgbWV0aG9kcy4KKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIHRoZSBuZWNlc3Nh
cnkgYWNjZXNzb3JzIGFuZCBtdXRhdG9ycywgYW5kIG1pZ3JhdGVzIENTU0ZvbnRTZWxlY3Rvcgor
ICAgICAgICB0byB1c2UgdGhlc2UgbXV0YXRvcnMgd2hlcmUgbmVjZXNzYXJ5LgorCisgICAgICAg
IFRoZXJlIGlzIG1vcmUgd29yayB0byBjb21lIG9uIENTU0ZvbnRGYWNlOyB0aGUgbmV4dCBzdGVw
IGlzIHRvIGNyZWF0ZSBhbiAuaWRsIGZpbGUKKyAgICAgICAgYW5kIGhvb2sgaXQgdXAgdG8gb3Vy
IENTU0ZvbnRGYWNlIG9iamVjdC4gSW4gdGhpcyBwYXRjaCBJIGhhdmUgbGVmdCBzb21lCisgICAg
ICAgIHVuaW1wbGVtZW50ZWQgcGllY2VzIChmb3IgZXhhbXBsZTogd2hlcmUgdGhlIHNwZWMgZGlj
dGF0ZXMgdGhhdCBzb21lIG9wZXJhdGlvbiBzaG91bGQKKyAgICAgICAgdGhyb3cgYSBKYXZhU2Ny
aXB0IGV4Y2VwdGlvbikgd2hpY2ggd2lsbCBiZSBpbXBsZW1lbnRlZCBpbiBhIGZvbGxvdy11cCBw
YXRjaC4gVGhpcworICAgICAgICBwYXRjaCBkb2VzIG5vdCBoYXZlIGFueSB2aXNpYmxlIGJlaGF2
aW9yIGNoYW5nZTsgSSdtIHNlcGFyYXRpbmcgb3V0IHRoZSBib2lsZXJwbGF0ZQorICAgICAgICBp
bnRvIHRoaXMgcGF0Y2ggaW4gb3JkZXIgdG8gZWFzZSByZXZpZXdpbmcgYnVyZGVuLgorCisgICAg
ICAgIFsxXSBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLWZvbnQtbG9hZGluZworCisgICAg
ICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoZXJlIGlzIG5vIGJlaGF2aW9yIGNoYW5nZS4KKwor
ICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBj
c3MvQ1NTRm9udEZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2U6OkNTU0Zv
bnRGYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlOjp+Q1NTRm9udEZhY2UpOgor
ICAgICAgICAoV2ViQ29yZTo6cGFyc2VTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9u
dEZhY2U6OnNldEZhbWlseSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZTo6c2V0U3R5
bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2U6OnNldFdlaWdodCk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NGb250RmFjZTo6c2V0U3RyZXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpD
U1NGb250RmFjZTo6c2V0VW5pY29kZVJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRG
YWNlOjpzZXRWYXJpYW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlOjpzZXRGZWF0
dXJlU2V0dGluZ3MpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2U6OnNldEZhbWlsaWVz
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlOjpzZXRWYXJpYW50TGlnYXR1cmVzKToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlOjpzZXRWYXJpYW50UG9zaXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2U6OnNldFZhcmlhbnRDYXBzKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU0ZvbnRGYWNlOjpzZXRWYXJpYW50TnVtZXJpYyk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NGb250RmFjZTo6c2V0VmFyaWFudEFsdGVybmF0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTRm9udEZhY2U6OnNldFZhcmlhbnRFYXN0QXNpYW4pOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
Rm9udEZhY2U6OmZhbWlseSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZTo6c3R5bGUp
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2U6OndlaWdodCk6CisgICAgICAgIChXZWJD
b3JlOjpDU1NGb250RmFjZTo6c3RyZXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFj
ZTo6dW5pY29kZVJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlOjp2YXJpYW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlOjpmZWF0dXJlU2V0dGluZ3MpOgorICAg
ICAgICAqIGNzcy9DU1NGb250RmFjZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2U6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZTo6c2V0VHJhaXRzTWFzayk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZTo6dHJhaXRzTWFzayk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NGb250RmFjZTo6aXNMb2NhbEZhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU0ZvbnRGYWNlOjphZGRSYW5nZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NG
b250RmFjZTo6aW5zZXJ0RmVhdHVyZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NG
b250RmFjZTo6c2V0VmFyaWFudENvbW1vbkxpZ2F0dXJlcyk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpDU1NGb250RmFjZTo6c2V0VmFyaWFudERpc2NyZXRpb25hcnlMaWdhdHVyZXMpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2U6OnNldFZhcmlhbnRIaXN0b3Jp
Y2FsTGlnYXR1cmVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlOjpz
ZXRWYXJpYW50Q29udGV4dHVhbEFsdGVybmF0ZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTRm9udEZhY2U6OnNldFZhcmlhbnRQb3NpdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpDU1NGb250RmFjZTo6c2V0VmFyaWFudENhcHMpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6Q1NTRm9udEZhY2U6OnNldFZhcmlhbnROdW1lcmljRmlndXJlKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlOjpzZXRWYXJpYW50TnVtZXJpY1NwYWNpbmcp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2U6OnNldFZhcmlhbnROdW1l
cmljRnJhY3Rpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2U6OnNl
dFZhcmlhbnROdW1lcmljT3JkaW5hbCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NG
b250RmFjZTo6c2V0VmFyaWFudE51bWVyaWNTbGFzaGVkWmVybyk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpDU1NGb250RmFjZTo6c2V0VmFyaWFudEFsdGVybmF0ZXMpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2U6OnNldFZhcmlhbnRFYXN0QXNpYW5WYXJpYW50
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlOjpzZXRWYXJpYW50RWFz
dEFzaWFuV2lkdGgpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2U6OnNl
dFZhcmlhbnRFYXN0QXNpYW5SdWJ5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU0Zv
bnRGYWNlOjpDU1NGb250RmFjZSk6IERlbGV0ZWQuCisgICAgICAgICogY3NzL0NTU0ZvbnRTZWxl
Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjphcHBlbmRTb3VyY2VzKToKKyAgICAgICAgKFdl
YkNvcmU6OnJlZ2lzdGVyTG9jYWxGb250RmFjZXNGb3JGYW1pbHkpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTRm9udFNlbGVjdG9yOjphZGRGb250RmFjZVJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6
Y29tcHV0ZVRyYWl0c01hc2spOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRm9u
dEZhY2UpOiBEZWxldGVkLgorICAgICAgICAqIGNzcy9Gb250VmFyaWFudEJ1aWxkZXIuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RGb250VmFyaWFudExpZ2F0dXJlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpleHRyYWN0Rm9udFZhcmlhbnROdW1lcmljKToKKyAgICAgICAgKFdl
YkNvcmU6OmV4dHJhY3RGb250VmFyaWFudEVhc3RBc2lhbik6CisgICAgICAgIChXZWJDb3JlOjpj
b21wdXRlRm9udFZhcmlhbnQpOgorICAgICAgICAqIGNzcy9Gb250VmFyaWFudEJ1aWxkZXIuaDoK
KyAgICAgICAgKFdlYkNvcmU6OmFwcGx5VmFsdWVGb250VmFyaWFudExpZ2F0dXJlcyk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjphcHBseVZhbHVlRm9udFZhcmlhbnROdW1lcmljKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmFwcGx5VmFsdWVGb250VmFyaWFudEVhc3RBc2lhbik6
IERlbGV0ZWQuCisgICAgICAgICogY3NzL1N0eWxlQnVpbGRlckN1c3RvbS5oOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlRm9udFZhcmlhbnRMaWdhdHVy
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlRm9u
dFZhcmlhbnROdW1lcmljKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckN1c3RvbTo6
YXBwbHlWYWx1ZUZvbnRWYXJpYW50RWFzdEFzaWFuKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0
L1RleHRGbGFncy5oOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFZhcmlhbnRMaWdhdHVyZXNWYWx1
ZXM6OkZvbnRWYXJpYW50TGlnYXR1cmVzVmFsdWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRW
YXJpYW50TnVtZXJpY1ZhbHVlczo6Rm9udFZhcmlhbnROdW1lcmljVmFsdWVzKToKKyAgICAgICAg
KFdlYkNvcmU6OkZvbnRWYXJpYW50RWFzdEFzaWFuVmFsdWVzOjpGb250VmFyaWFudEVhc3RBc2lh
blZhbHVlcyk6CisKKzIwMTYtMDItMTEgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFw
cGxlLmNvbT4KKwogICAgICAgICBBZGRyZXNzaW5nIHBvc3QtcmV2aWV3IGNvbW1lbnRzIGFmdGVy
IHIxOTYzOTMKIAogICAgICAgICBVbnJldmlld2VkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA3
YjUyMzA2YTI1YzE4ZjliYmI1NjQ4NTQxMTBhZmRiMTVhYTM0YmQzLi4yZjE4NTg1YzAxZDY4ZDhk
NWZlNmE3OTUyMGE5NTI4ZDg5MzIyZDFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTM1NCw2
ICsxMzU0LDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIGNzcy9Eb2N1bWVudFJ1bGVTZXRz
LmNwcAogICAgIGNzcy9FbGVtZW50UnVsZUNvbGxlY3Rvci5jcHAKICAgICBjc3MvRm9udExvYWRl
ci5jcHAKKyAgICBjc3MvRm9udFZhcmlhbnRCdWlsZGVyLmNwcAogICAgIGNzcy9JbnNwZWN0b3JD
U1NPTVdyYXBwZXJzLmNwcAogICAgIGNzcy9MZW5ndGhGdW5jdGlvbnMuY3BwCiAgICAgY3NzL01l
ZGlhRmVhdHVyZU5hbWVzLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52
Y3hwcm9qL1dlYkNvcmUudmN4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9X
ZWJDb3JlLnZjeHByb2oKaW5kZXggYzViNDdlY2MyNmQ1Zjg3ZTZkNjA1ZTM0YTJjZDQ3OWMzYzYx
YmJkYy4uMTg1OWI1ZWE5NzhiMmJlNjAxYzQ2NDQ1NzdkMjNiNjgzNmJlYzRlNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagorKysgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCkBAIC0xMDI0Miw2
ICsxMDI0MiwyMCBAQAogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnxXaW4zMiciPnRydWU8L0V4Y2x1
ZGVkRnJvbUJ1aWxkPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnx4NjQnIj50cnVlPC9FeGNsdWRl
ZEZyb21CdWlsZD4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XGNzc1xGb250VmFyaWFudEJ1aWxkZXIuY3BwIj4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+
dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj50cnVlPC9F
eGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnX1dpbkNhaXJvfFdpbjMyJyI+dHJ1
ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z19XaW5DYWlyb3x4NjQnIj50
cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnU3VmZml4fFdpbjMyJyI+
dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHx4NjQnIj50
cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj50cnVl
PC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+dHJ1ZTwvRXhj
bHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJvfFdpbjMyJyI+dHJ1
ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJvfHg2NCci
PnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnxXaW4zMici
PnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnx4NjQnIj50
cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXGNzc1xGb250TG9hZGVyLmNwcCI+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVp
bGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4z
MiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+dHJ1
ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKaW5kZXggYzBlMDg2OTMxYTg4NDU0Yjc1
MGViMWQzM2VmYzNjOGRhZWI1ZTA1Zi4uNDZkOTdiNzk3OWQxYTc4NzY2ODAzOTI5M2E2YmNkNmVm
MDM1NDhlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNv
cmUudmN4cHJvai5maWx0ZXJzCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9X
ZWJDb3JlLnZjeHByb2ouZmlsdGVycwpAQCAtMjIyMiw2ICsyMjIyLDkgQEAKICAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXGNzc1xDU1NWYXJpYWJsZVZhbHVlLmNwcCI+CiAgICAgICA8RmlsdGVy
PmNzczwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5cY3NzXEZvbnRWYXJpYW50QnVpbGRlci5jcHAiPgorICAgICAgPEZpbHRlcj5jc3M8L0ZpbHRl
cj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGNzc1xGb250
TG9hZGVyLmNwcCI+CiAgICAgICA8RmlsdGVyPmNzczwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxl
PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IDI3Y2ExZGFkZThjMTI3NDg5Njg0YzVlODk2OWEwNDBmZWU3MzJjYjMuLjIyYzVjMzRj
ZGU1ODBjYjIxZWU2MTQ1ZjQ1MjUwNDYwNTE4Y2YzM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTk1MSw2ICs5NTEsNyBAQAog
CQkxQzIxRTU3RDE4M0VEMUZGMDAxQzI4OUQgLyogSU9TdXJmYWNlUG9vbC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUMyMUU1N0IxODNFRDFGRjAwMUMy
ODlEIC8qIElPU3VyZmFjZVBvb2wuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkxQzI0MTdCQTE5OTJDMDQxMDBFRjk5MzggLyogU3BlbGxpbmdEb3RA
M3gucG5nIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
QzI0MTdCOTE5OTJDMDQxMDBFRjk5MzggLyogU3BlbGxpbmdEb3RAM3gucG5nICovOyB9OwogCQkx
QzI2NDk3QTBEN0UyNDhBMDBCRDEwRjIgLyogRG9jdW1lbnRMb2FkZXJNYWMuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUMyNjQ5NzkwRDdFMjQ4QTAw
QkQxMEYyIC8qIERvY3VtZW50TG9hZGVyTWFjLmNwcCAqLzsgfTsKKwkJMUMzMjQ5MTExQzZENkEz
QjAwN0VEQjMyIC8qIEZvbnRWYXJpYW50QnVpbGRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzMyNDkxMDFDNkQ2QTNCMDA3RURCMzIgLyogRm9u
dFZhcmlhbnRCdWlsZGVyLmNwcCAqLzsgfTsKIAkJMUMzOTY5RDAxQjc0MjExRTAwMkJDRkE3IC8q
IEZvbnRDYWNoZUNvcmVUZXh0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDFDMzk2OUNGMUI3NDIxMUUwMDJCQ0ZBNyAvKiBGb250Q2FjaGVDb3JlVGV4
dC5jcHAgKi87IH07CiAJCTFDNjQ2NjI1MUExMkMzOEUwMDk0NjAzQyAvKiBDb3JlVGV4dFNQSS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM1RTk4MEYx
QTAyQ0VGQTAwMkRCNTVGIC8qIENvcmVUZXh0U1BJLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUM2NDY2MjgxQTEyQzQyMDAwOTQ2MDNDIC8qIE5T
Rm9udFNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MUM2NDY2MjcxQTEyQzNGOTAwOTQ2MDNDIC8qIE5TRm9udFNQSS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC04MzUxLDYgKzgzNTIsNyBAQAogCQkx
QzIxRTU3QjE4M0VEMUZGMDAxQzI4OUQgLyogSU9TdXJmYWNlUG9vbC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBJT1N1cmZhY2VQb29sLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTFDMjQxN0I5MTk5MkMwNDEwMEVGOTkzOCAvKiBTcGVsbGluZ0RvdEAzeC5wbmcg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBpbWFnZS5w
bmc7IHBhdGggPSAiU3BlbGxpbmdEb3RAM3gucG5nIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMUMyNjQ5NzkwRDdFMjQ4QTAwQkQxMEYyIC8qIERvY3VtZW50TG9hZGVyTWFjLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERvY3VtZW50TG9hZGVyTWFjLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUMzMjQ5MTAxQzZENkEzQjAwN0VEQjMy
IC8qIEZvbnRWYXJpYW50QnVpbGRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBGb250VmFyaWFudEJ1aWxkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkxQzM5NjlDRjFCNzQyMTFFMDAyQkNGQTcgLyogRm9udENhY2hlQ29yZVRleHQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9udENhY2hlQ29yZVRleHQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzVFOTgwRjFBMDJDRUZBMDAyREI1NUYg
LyogQ29yZVRleHRTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29yZVRleHRTUEkuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM2NDY2MjcxQTEyQzNGOTAwOTQ2MDNDIC8qIE5TRm9udFNQ
SS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBOU0ZvbnRTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTIzNzAwLDYgKzIzNzAyLDcgQEAKIAkJCQkzRkZGRjlBNjE1OUQ5QTU1MDAyMEJCRDUg
LyogV2ViS2l0Q1NTVmlld3BvcnRSdWxlLmNwcCAqLywKIAkJCQkzRkZGRjlBNzE1OUQ5QTU1MDAy
MEJCRDUgLyogV2ViS2l0Q1NTVmlld3BvcnRSdWxlLmggKi8sCiAJCQkJM0YyQjMzRTMxNjVBQkQz
NTAwRTM5ODdDIC8qIFdlYktpdENTU1ZpZXdwb3J0UnVsZS5pZGwgKi8sCisJCQkJMUMzMjQ5MTAx
QzZENkEzQjAwN0VEQjMyIC8qIEZvbnRWYXJpYW50QnVpbGRlci5jcHAgKi8sCiAJCQkpOwogCQkJ
cGF0aCA9IGNzczsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0yOTkwNyw2ICsyOTkx
MCw3IEBACiAJCQkJQjI3NTM1N0QwQjA1MzgxNDAwMkNFNjRGIC8qIEludFJlY3RNYWMubW0gaW4g
U291cmNlcyAqLywKIAkJCQkyRDQ2RjA1MDE3Qjk2RkQyMDA1NjQ3RjAgLyogSW50U2l6ZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlCMjc1MzU2MjBCMDUzODE0MDAyQ0U2NEYgLyogSW50U2l6ZUNH
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTFDMzI0OTExMUM2RDZBM0IwMDdFREIzMiAvKiBGb250
VmFyaWFudEJ1aWxkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjI3NTM1N0UwQjA1MzgxNDAw
MkNFNjRGIC8qIEludFNpemVNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQkyRDBCNEFBQzE4REEx
Q0NEMDA0MzRERTEgLyogSU9TdXJmYWNlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUMyMUU1N0Mx
ODNFRDFGRjAwMUMyODlEIC8qIElPU3VyZmFjZVBvb2wuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQWxsSW5PbmUuY3BwIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0FsbEluT25lLmNwcAppbmRleCA3NDkwNDhmMjJmNjBjNWMwMDExYTVmMGZmMWUz
ODlkNzc5M2M3M2UyLi5iNTNhYTkxYjI3Yjc0MmYwZDQ5MzA5MjliNjE1YTU1Y2RlNTc1NzE5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQWxsSW5PbmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NBbGxJbk9uZS5jcHAKQEAgLTk0LDYgKzk0LDcgQEAKICNpbmNsdWRl
ICJEb2N1bWVudFJ1bGVTZXRzLmNwcCIKICNpbmNsdWRlICJFbGVtZW50UnVsZUNvbGxlY3Rvci5j
cHAiCiAjaW5jbHVkZSAiRm9udExvYWRlci5jcHAiCisjaW5jbHVkZSAiRm9udFZhcmlhbnRCdWls
ZGVyLmNwcCIKICNpbmNsdWRlICJJbnNwZWN0b3JDU1NPTVdyYXBwZXJzLmNwcCIKICNpbmNsdWRl
ICJMZW5ndGhGdW5jdGlvbnMuY3BwIgogI2luY2x1ZGUgIk1lZGlhTGlzdC5jcHAiCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0ZvbnRGYWNlLmNwcAppbmRleCA5YjFiMjdhZWVhZGMzNmE3NTQ0NjIyZGNjOTdjZTUw
MjA1MjcyNjIzLi5mMTNhNWU0MzM1ZTdlNTgxMzJhYThlNWRlZWRmNGFhOTZiYWYyZDg5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5jcHAKQEAgLTI3LDE2ICsyNywzNTQgQEAKICNpbmNsdWRl
ICJDU1NGb250RmFjZS5oIgogCiAjaW5jbHVkZSAiQ1NTRm9udEZhY2VTb3VyY2UuaCIKKyNpbmNs
dWRlICJDU1NGb250RmFtaWx5LmgiCisjaW5jbHVkZSAiQ1NTRm9udEZlYXR1cmVWYWx1ZS5oIgog
I2luY2x1ZGUgIkNTU0ZvbnRTZWxlY3Rvci5oIgorI2luY2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVl
TWFwcGluZ3MuaCIKICNpbmNsdWRlICJDU1NTZWdtZW50ZWRGb250RmFjZS5oIgorI2luY2x1ZGUg
IkNTU1VuaWNvZGVSYW5nZVZhbHVlLmgiCisjaW5jbHVkZSAiQ1NTVmFsdWUuaCIKKyNpbmNsdWRl
ICJDU1NWYWx1ZUxpc3QuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkZvbnQu
aCIKICNpbmNsdWRlICJGb250RGVzY3JpcHRpb24uaCIKICNpbmNsdWRlICJGb250TG9hZGVyLmgi
CisjaW5jbHVkZSAiRm9udFZhcmlhbnRCdWlsZGVyLmgiCiAjaW5jbHVkZSAiUnVudGltZUVuYWJs
ZWRGZWF0dXJlcy5oIgorI2luY2x1ZGUgIlN0eWxlUHJvcGVydGllcy5oIgorI2luY2x1ZGUgPHd0
Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitDU1NGb250
RmFjZTo6Q1NTRm9udEZhY2UoYm9vbCBpc0xvY2FsRmFsbGJhY2spCisgICAgOiBtX2lzTG9jYWxG
YWxsYmFjayhpc0xvY2FsRmFsbGJhY2spCit7Cit9CisKK0NTU0ZvbnRGYWNlOjp+Q1NTRm9udEZh
Y2UoKQoreworfQorCitzdGF0aWMgaW5saW5lIFJlZlB0cjxDU1NWYWx1ZT4gcGFyc2VTdHJpbmco
Y29uc3QgU3RyaW5nJiBzdHJpbmcsIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCkKK3sKKyAgICBS
ZWY8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gc3R5bGUgPSBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVz
OjpjcmVhdGUoKTsKKyAgICBhdXRvIHJlc3VsdCA9IENTU1BhcnNlcjo6cGFyc2VWYWx1ZShzdHls
ZS5wdHIoKSwgcHJvcGVydHlJRCwgc3RyaW5nLCB0cnVlLCBDU1NTdHJpY3RNb2RlLCBudWxscHRy
KTsKKyAgICBpZiAocmVzdWx0ID09IENTU1BhcnNlcjo6UGFyc2VSZXN1bHQ6OkVycm9yKQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gc3R5bGUtPmdldFByb3BlcnR5Q1NTVmFs
dWUocHJvcGVydHlJRCk7Cit9CisKK3ZvaWQgQ1NTRm9udEZhY2U6OnNldEZhbWlseShjb25zdCBT
dHJpbmcmIGZhbWlseSkKK3sKKyAgICBib29sIHN1Y2Nlc3MgPSBmYWxzZTsKKyAgICBpZiAoYXV0
byB2YWx1ZSA9IHBhcnNlU3RyaW5nKGZhbWlseSwgQ1NTUHJvcGVydHlGb250RmFtaWx5KSkKKyAg
ICAgICAgc3VjY2VzcyA9IHNldEZhbWlsaWVzKCp2YWx1ZSk7CisgICAgLy8gaWYgKCFzdWNjZXNz
KSB7IFRocm93IGEgU3ludGF4RXJyb3IgfQorICAgIFVOVVNFRF9QQVJBTShzdWNjZXNzKTsKK30K
Kwordm9pZCBDU1NGb250RmFjZTo6c2V0U3R5bGUoY29uc3QgU3RyaW5nJiBzdHlsZSkKK3sKKyAg
ICBib29sIHN1Y2Nlc3MgPSBmYWxzZTsKKyAgICBpZiAoYXV0byB2YWx1ZSA9IHBhcnNlU3RyaW5n
KHN0eWxlLCBDU1NQcm9wZXJ0eUZvbnRTdHlsZSkpCisgICAgICAgIHN1Y2Nlc3MgPSBzZXRTdHls
ZSgqdmFsdWUpOworICAgIC8vIGlmICghc3VjY2VzcykgeyBUaHJvdyBhIFN5bnRheEVycm9yIH0K
KyAgICBVTlVTRURfUEFSQU0oc3VjY2Vzcyk7Cit9CisKK3ZvaWQgQ1NTRm9udEZhY2U6OnNldFdl
aWdodChjb25zdCBTdHJpbmcmIHdlaWdodCkKK3sKKyAgICBib29sIHN1Y2Nlc3MgPSBmYWxzZTsK
KyAgICBpZiAoYXV0byB2YWx1ZSA9IHBhcnNlU3RyaW5nKHdlaWdodCwgQ1NTUHJvcGVydHlGb250
V2VpZ2h0KSkKKyAgICAgICAgc3VjY2VzcyA9IHNldFdlaWdodCgqdmFsdWUpOworICAgIC8vIGlm
ICghc3VjY2VzcykgeyBUaHJvdyBhIFN5bnRheEVycm9yIH0KKyAgICBVTlVTRURfUEFSQU0oc3Vj
Y2Vzcyk7Cit9CisKK3ZvaWQgQ1NTRm9udEZhY2U6OnNldFN0cmV0Y2goY29uc3QgU3RyaW5nJikK
K3sKKyAgICAvLyBXZSBkb24ndCBzdXBwb3J0IGZvbnQtc3RyZXRjaC4gU3dhbGxvdyB0aGUgY2Fs
bC4KK30KKwordm9pZCBDU1NGb250RmFjZTo6c2V0VW5pY29kZVJhbmdlKGNvbnN0IFN0cmluZyYg
dW5pY29kZVJhbmdlKQoreworICAgIGJvb2wgc3VjY2VzcyA9IGZhbHNlOworICAgIGlmIChhdXRv
IHZhbHVlID0gcGFyc2VTdHJpbmcodW5pY29kZVJhbmdlLCBDU1NQcm9wZXJ0eVVuaWNvZGVSYW5n
ZSkpCisgICAgICAgIHN1Y2Nlc3MgPSBzZXRVbmljb2RlUmFuZ2UoKnZhbHVlKTsKKyAgICAvLyBp
ZiAoIXN1Y2Nlc3MpIHsgVGhyb3cgYSBTeW50YXhFcnJvciB9CisgICAgVU5VU0VEX1BBUkFNKHN1
Y2Nlc3MpOworfQorCit2b2lkIENTU0ZvbnRGYWNlOjpzZXRWYXJpYW50KGNvbnN0IFN0cmluZyYg
dmFyaWFudCkKK3sKKyAgICBSZWY8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gc3R5bGUgPSBNdXRh
YmxlU3R5bGVQcm9wZXJ0aWVzOjpjcmVhdGUoKTsKKyAgICBhdXRvIHJlc3VsdCA9IENTU1BhcnNl
cjo6cGFyc2VWYWx1ZShzdHlsZS5wdHIoKSwgQ1NTUHJvcGVydHlGb250VmFyaWFudCwgdmFyaWFu
dCwgdHJ1ZSwgQ1NTU3RyaWN0TW9kZSwgbnVsbHB0cik7CisgICAgaWYgKHJlc3VsdCAhPSBDU1NQ
YXJzZXI6OlBhcnNlUmVzdWx0OjpFcnJvcikgeworICAgICAgICBGb250VmFyaWFudFNldHRpbmdz
IGJhY2t1cCA9IG1fdmFyaWFudFNldHRpbmdzOworICAgICAgICBib29sIHN1Y2Nlc3MgPSB0cnVl
OworICAgICAgICBpZiAoYXV0byB2YWx1ZSA9IHN0eWxlLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENT
U1Byb3BlcnR5Rm9udFZhcmlhbnRMaWdhdHVyZXMpKQorICAgICAgICAgICAgc3VjY2VzcyAmPSBz
ZXRWYXJpYW50TGlnYXR1cmVzKCp2YWx1ZSk7CisgICAgICAgIGlmIChhdXRvIHZhbHVlID0gc3R5
bGUtPmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlGb250VmFyaWFudFBvc2l0aW9uKSkK
KyAgICAgICAgICAgIHN1Y2Nlc3MgJj0gc2V0VmFyaWFudFBvc2l0aW9uKCp2YWx1ZSk7CisgICAg
ICAgIGlmIChhdXRvIHZhbHVlID0gc3R5bGUtPmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVy
dHlGb250VmFyaWFudENhcHMpKQorICAgICAgICAgICAgc3VjY2VzcyAmPSBzZXRWYXJpYW50Q2Fw
cygqdmFsdWUpOworICAgICAgICBpZiAoYXV0byB2YWx1ZSA9IHN0eWxlLT5nZXRQcm9wZXJ0eUNT
U1ZhbHVlKENTU1Byb3BlcnR5Rm9udFZhcmlhbnROdW1lcmljKSkKKyAgICAgICAgICAgIHN1Y2Nl
c3MgJj0gc2V0VmFyaWFudE51bWVyaWMoKnZhbHVlKTsKKyAgICAgICAgaWYgKGF1dG8gdmFsdWUg
PSBzdHlsZS0+Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eUZvbnRWYXJpYW50QWx0ZXJu
YXRlcykpCisgICAgICAgICAgICBzdWNjZXNzICY9IHNldFZhcmlhbnRBbHRlcm5hdGVzKCp2YWx1
ZSk7CisgICAgICAgIGlmIChhdXRvIHZhbHVlID0gc3R5bGUtPmdldFByb3BlcnR5Q1NTVmFsdWUo
Q1NTUHJvcGVydHlGb250VmFyaWFudEVhc3RBc2lhbikpCisgICAgICAgICAgICBzdWNjZXNzICY9
IHNldFZhcmlhbnRFYXN0QXNpYW4oKnZhbHVlKTsKKyAgICAgICAgaWYgKHN1Y2Nlc3MpCisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIG1fdmFyaWFudFNldHRpbmdzID0gYmFja3VwOworICAg
IH0KKyAgICAvLyBUaHJvdyBhIFN5bnRheEVycm9yCit9CisKK3ZvaWQgQ1NTRm9udEZhY2U6OnNl
dEZlYXR1cmVTZXR0aW5ncyhjb25zdCBTdHJpbmcmIGZlYXR1cmVTZXR0aW5ncykKK3sKKyAgICBi
b29sIHN1Y2Nlc3MgPSBmYWxzZTsKKyAgICBpZiAoYXV0byB2YWx1ZSA9IHBhcnNlU3RyaW5nKGZl
YXR1cmVTZXR0aW5ncywgQ1NTUHJvcGVydHlGb250RmVhdHVyZVNldHRpbmdzKSkKKyAgICAgICAg
c3VjY2VzcyA9IHNldEZlYXR1cmVTZXR0aW5ncygqdmFsdWUpOworICAgIC8vIGlmICghc3VjY2Vz
cykgeyBUaHJvdyBhIFN5bnRheEVycm9yIH0KKyAgICBVTlVTRURfUEFSQU0oc3VjY2Vzcyk7Cit9
CisKK2Jvb2wgQ1NTRm9udEZhY2U6OnNldEZhbWlsaWVzKENTU1ZhbHVlJiBmYW1pbHkpCit7Cisg
ICAgaWYgKCFpczxDU1NWYWx1ZUxpc3Q+KGZhbWlseSkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIENTU1ZhbHVlTGlzdCYgZmFtaWx5TGlzdCA9IGRvd25jYXN0PENTU1ZhbHVlTGlzdD4o
ZmFtaWx5KTsKKyAgICBpZiAoIWZhbWlseUxpc3QubGVuZ3RoKCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIG1fZmFtaWxpZXMgPSAmZmFtaWx5TGlzdDsKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworYm9vbCBDU1NGb250RmFjZTo6c2V0U3R5bGUoQ1NTVmFsdWUmIHN0eWxlKQoreworICAg
IGlmICghaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHN0eWxlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgdW5zaWduZWQgc3R5bGVNYXNrID0gMDsKKyAgICBzd2l0Y2ggKGRvd25jYXN0PENT
U1ByaW1pdGl2ZVZhbHVlPihzdHlsZSkuZ2V0VmFsdWVJRCgpKSB7CisgICAgY2FzZSBDU1NWYWx1
ZU5vcm1hbDoKKyAgICAgICAgc3R5bGVNYXNrID0gRm9udFN0eWxlTm9ybWFsTWFzazsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBDU1NWYWx1ZUl0YWxpYzoKKyAgICBjYXNlIENTU1ZhbHVlT2Js
aXF1ZToKKyAgICAgICAgc3R5bGVNYXNrID0gRm9udFN0eWxlSXRhbGljTWFzazsKKyAgICAgICAg
YnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAg
IG1fdHJhaXRzTWFzayA9IHN0YXRpY19jYXN0PEZvbnRUcmFpdHNNYXNrPigoc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KG1fdHJhaXRzTWFzaykgJiAofkZvbnRTdHlsZU1hc2spKSB8IHN0eWxlTWFzayk7
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgQ1NTRm9udEZhY2U6OnNldFdlaWdodChDU1NW
YWx1ZSYgd2VpZ2h0KQoreworICAgIGlmICghaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHdlaWdodCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHVuc2lnbmVkIHdlaWdodE1hc2sgPSAwOwor
ICAgIHN3aXRjaCAoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHdlaWdodCkuZ2V0VmFsdWVJ
RCgpKSB7CisgICAgY2FzZSBDU1NWYWx1ZUJvbGQ6CisgICAgY2FzZSBDU1NWYWx1ZTcwMDoKKyAg
ICAgICAgd2VpZ2h0TWFzayA9IEZvbnRXZWlnaHQ3MDBNYXNrOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIENTU1ZhbHVlTm9ybWFsOgorICAgIGNhc2UgQ1NTVmFsdWU0MDA6CisgICAgICAgIHdl
aWdodE1hc2sgPSBGb250V2VpZ2h0NDAwTWFzazsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBD
U1NWYWx1ZTkwMDoKKyAgICAgICAgd2VpZ2h0TWFzayA9IEZvbnRXZWlnaHQ5MDBNYXNrOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIENTU1ZhbHVlODAwOgorICAgICAgICB3ZWlnaHRNYXNrID0g
Rm9udFdlaWdodDgwME1hc2s7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTVmFsdWU2MDA6
CisgICAgICAgIHdlaWdodE1hc2sgPSBGb250V2VpZ2h0NjAwTWFzazsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBDU1NWYWx1ZTUwMDoKKyAgICAgICAgd2VpZ2h0TWFzayA9IEZvbnRXZWlnaHQ1
MDBNYXNrOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1ZhbHVlMzAwOgorICAgICAgICB3
ZWlnaHRNYXNrID0gRm9udFdlaWdodDMwME1hc2s7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
Q1NTVmFsdWUyMDA6CisgICAgICAgIHdlaWdodE1hc2sgPSBGb250V2VpZ2h0MjAwTWFzazsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NWYWx1ZTEwMDoKKyAgICAgICAgd2VpZ2h0TWFzayA9
IEZvbnRXZWlnaHQxMDBNYXNrOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAg
ICBicmVhazsKKyAgICB9CisKKyAgICBtX3RyYWl0c01hc2sgPSBzdGF0aWNfY2FzdDxGb250VHJh
aXRzTWFzaz4oKHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3RyYWl0c01hc2spICYgKH5Gb250V2Vp
Z2h0TWFzaykpIHwgd2VpZ2h0TWFzayk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgQ1NT
Rm9udEZhY2U6OnNldFVuaWNvZGVSYW5nZShDU1NWYWx1ZSYgdW5pY29kZVJhbmdlKQoreworICAg
IGlmICghaXM8Q1NTVmFsdWVMaXN0Pih1bmljb2RlUmFuZ2UpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBtX3Jhbmdlcy5jbGVhcigpOworICAgIGF1dG8mIGxpc3QgPSBkb3duY2FzdDxD
U1NWYWx1ZUxpc3Q+KHVuaWNvZGVSYW5nZSk7CisgICAgZm9yIChhdXRvJiByYW5nZVZhbHVlIDog
bGlzdCkgeworICAgICAgICBDU1NVbmljb2RlUmFuZ2VWYWx1ZSYgcmFuZ2UgPSBkb3duY2FzdDxD
U1NVbmljb2RlUmFuZ2VWYWx1ZT4ocmFuZ2VWYWx1ZS5nZXQoKSk7CisgICAgICAgIG1fcmFuZ2Vz
LmFwcGVuZChVbmljb2RlUmFuZ2UocmFuZ2UuZnJvbSgpLCByYW5nZS50bygpKSk7CisgICAgfQor
ICAgIHJldHVybiB0cnVlOworfQorCitib29sIENTU0ZvbnRGYWNlOjpzZXRWYXJpYW50TGlnYXR1
cmVzKENTU1ZhbHVlJiB2YXJpYW50TGlnYXR1cmVzKQoreworICAgIGF1dG8gbGlnYXR1cmVzID0g
ZXh0cmFjdEZvbnRWYXJpYW50TGlnYXR1cmVzKHZhcmlhbnRMaWdhdHVyZXMpOworICAgIG1fdmFy
aWFudFNldHRpbmdzLmNvbW1vbkxpZ2F0dXJlcyA9IGxpZ2F0dXJlcy5jb21tb25MaWdhdHVyZXM7
CisgICAgbV92YXJpYW50U2V0dGluZ3MuZGlzY3JldGlvbmFyeUxpZ2F0dXJlcyA9IGxpZ2F0dXJl
cy5kaXNjcmV0aW9uYXJ5TGlnYXR1cmVzOworICAgIG1fdmFyaWFudFNldHRpbmdzLmhpc3Rvcmlj
YWxMaWdhdHVyZXMgPSBsaWdhdHVyZXMuaGlzdG9yaWNhbExpZ2F0dXJlczsKKyAgICBtX3Zhcmlh
bnRTZXR0aW5ncy5jb250ZXh0dWFsQWx0ZXJuYXRlcyA9IGxpZ2F0dXJlcy5jb250ZXh0dWFsQWx0
ZXJuYXRlczsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBDU1NGb250RmFjZTo6c2V0VmFy
aWFudFBvc2l0aW9uKENTU1ZhbHVlJiB2YXJpYW50UG9zaXRpb24pCit7CisgICAgaWYgKCFpczxD
U1NQcmltaXRpdmVWYWx1ZT4odmFyaWFudFBvc2l0aW9uKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIG1fdmFyaWFudFNldHRpbmdzLnBvc2l0aW9uID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZl
VmFsdWU+KHZhcmlhbnRQb3NpdGlvbik7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgQ1NT
Rm9udEZhY2U6OnNldFZhcmlhbnRDYXBzKENTU1ZhbHVlJiB2YXJpYW50Q2FwcykKK3sKKyAgICBp
ZiAoIWlzPENTU1ByaW1pdGl2ZVZhbHVlPih2YXJpYW50Q2FwcykpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICBtX3ZhcmlhbnRTZXR0aW5ncy5jYXBzID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZl
VmFsdWU+KHZhcmlhbnRDYXBzKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBDU1NGb250
RmFjZTo6c2V0VmFyaWFudE51bWVyaWMoQ1NTVmFsdWUmIHZhcmlhbnROdW1lcmljKQoreworICAg
IGF1dG8gbnVtZXJpYyA9IGV4dHJhY3RGb250VmFyaWFudE51bWVyaWModmFyaWFudE51bWVyaWMp
OworICAgIG1fdmFyaWFudFNldHRpbmdzLm51bWVyaWNGaWd1cmUgPSBudW1lcmljLmZpZ3VyZTsK
KyAgICBtX3ZhcmlhbnRTZXR0aW5ncy5udW1lcmljU3BhY2luZyA9IG51bWVyaWMuc3BhY2luZzsK
KyAgICBtX3ZhcmlhbnRTZXR0aW5ncy5udW1lcmljRnJhY3Rpb24gPSBudW1lcmljLmZyYWN0aW9u
OworICAgIG1fdmFyaWFudFNldHRpbmdzLm51bWVyaWNPcmRpbmFsID0gbnVtZXJpYy5vcmRpbmFs
OworICAgIG1fdmFyaWFudFNldHRpbmdzLm51bWVyaWNTbGFzaGVkWmVybyA9IG51bWVyaWMuc2xh
c2hlZFplcm87CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgQ1NTRm9udEZhY2U6OnNldFZh
cmlhbnRBbHRlcm5hdGVzKENTU1ZhbHVlJiB2YXJpYW50QWx0ZXJuYXRlcykKK3sKKyAgICBpZiAo
IWlzPENTU1ByaW1pdGl2ZVZhbHVlPih2YXJpYW50QWx0ZXJuYXRlcykpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICBtX3ZhcmlhbnRTZXR0aW5ncy5hbHRlcm5hdGVzID0gZG93bmNhc3Q8Q1NT
UHJpbWl0aXZlVmFsdWU+KHZhcmlhbnRBbHRlcm5hdGVzKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KworYm9vbCBDU1NGb250RmFjZTo6c2V0VmFyaWFudEVhc3RBc2lhbihDU1NWYWx1ZSYgdmFyaWFu
dEVhc3RBc2lhbikKK3sKKyAgICBhdXRvIGVhc3RBc2lhbiA9IGV4dHJhY3RGb250VmFyaWFudEVh
c3RBc2lhbih2YXJpYW50RWFzdEFzaWFuKTsKKyAgICBtX3ZhcmlhbnRTZXR0aW5ncy5lYXN0QXNp
YW5WYXJpYW50ID0gZWFzdEFzaWFuLnZhcmlhbnQ7CisgICAgbV92YXJpYW50U2V0dGluZ3MuZWFz
dEFzaWFuV2lkdGggPSBlYXN0QXNpYW4ud2lkdGg7CisgICAgbV92YXJpYW50U2V0dGluZ3MuZWFz
dEFzaWFuUnVieSA9IGVhc3RBc2lhbi5ydWJ5OworICAgIHJldHVybiB0cnVlOworfQorCitib29s
IENTU0ZvbnRGYWNlOjpzZXRGZWF0dXJlU2V0dGluZ3MoQ1NTVmFsdWUmIGZlYXR1cmVTZXR0aW5n
cykKK3sKKyAgICBpZiAoIWlzPENTU1ZhbHVlTGlzdD4oZmVhdHVyZVNldHRpbmdzKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgbV9mZWF0dXJlU2V0dGluZ3MgPSBGb250RmVhdHVyZVNl
dHRpbmdzKCk7CisgICAgYXV0byYgbGlzdCA9IGRvd25jYXN0PENTU1ZhbHVlTGlzdD4oZmVhdHVy
ZVNldHRpbmdzKTsKKyAgICBmb3IgKGF1dG8mIHJhbmdlVmFsdWUgOiBsaXN0KSB7CisgICAgICAg
IENTU0ZvbnRGZWF0dXJlVmFsdWUmIGZlYXR1cmUgPSBkb3duY2FzdDxDU1NGb250RmVhdHVyZVZh
bHVlPihyYW5nZVZhbHVlLmdldCgpKTsKKyAgICAgICAgbV9mZWF0dXJlU2V0dGluZ3MuaW5zZXJ0
KEZvbnRGZWF0dXJlKGZlYXR1cmUudGFnKCksIGZlYXR1cmUudmFsdWUoKSkpOworICAgIH0KKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKworU3RyaW5nIENTU0ZvbnRGYWNlOjpmYW1pbHkoKSBjb25zdAor
eworICAgIHJldHVybiBtX2ZhbWlsaWVzLT5jc3NUZXh0KCk7Cit9CisKK1N0cmluZyBDU1NGb250
RmFjZTo6c3R5bGUoKSBjb25zdAoreworICAgIHN3aXRjaCAobV90cmFpdHNNYXNrICYgRm9udFN0
eWxlTWFzaykgeworICAgIGNhc2UgRm9udFN0eWxlTm9ybWFsTWFzazoKKyAgICAgICAgcmV0dXJu
IFN0cmluZygibm9ybWFsIiwgU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgY2Fz
ZSBGb250U3R5bGVJdGFsaWNNYXNrOgorICAgICAgICByZXR1cm4gU3RyaW5nKCJpdGFsaWMiLCBT
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgcmV0dXJuIFN0cmluZygibm9ybWFsIiwgU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCk7Cit9CisKK1N0cmluZyBDU1NGb250RmFjZTo6d2VpZ2h0KCkgY29uc3QKK3sKKyAg
ICBzd2l0Y2ggKG1fdHJhaXRzTWFzayAmIEZvbnRXZWlnaHRNYXNrKSB7CisgICAgY2FzZSBGb250
V2VpZ2h0MTAwTWFzazoKKyAgICAgICAgcmV0dXJuIFN0cmluZygiMTAwIiwgU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgY2FzZSBGb250V2VpZ2h0MjAwTWFzazoKKyAgICAgICAg
cmV0dXJuIFN0cmluZygiMjAwIiwgU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAg
Y2FzZSBGb250V2VpZ2h0MzAwTWFzazoKKyAgICAgICAgcmV0dXJuIFN0cmluZygiMzAwIiwgU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgY2FzZSBGb250V2VpZ2h0NDAwTWFzazoK
KyAgICAgICAgcmV0dXJuIFN0cmluZygibm9ybWFsIiwgU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0
ZXJhbCk7CisgICAgY2FzZSBGb250V2VpZ2h0NTAwTWFzazoKKyAgICAgICAgcmV0dXJuIFN0cmlu
ZygiNTAwIiwgU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgY2FzZSBGb250V2Vp
Z2h0NjAwTWFzazoKKyAgICAgICAgcmV0dXJuIFN0cmluZygiNjAwIiwgU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCk7CisgICAgY2FzZSBGb250V2VpZ2h0NzAwTWFzazoKKyAgICAgICAgcmV0
dXJuIFN0cmluZygiYm9sZCIsIFN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIGNh
c2UgRm9udFdlaWdodDgwME1hc2s6CisgICAgICAgIHJldHVybiBTdHJpbmcoIjgwMCIsIFN0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIGNhc2UgRm9udFdlaWdodDkwME1hc2s6Cisg
ICAgICAgIHJldHVybiBTdHJpbmcoIjkwMCIsIFN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
OworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCJu
b3JtYWwiLCBTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKK30KKworU3RyaW5nIENTU0Zv
bnRGYWNlOjpzdHJldGNoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gIm5vcm1hbCI7Cit9CisKK1N0
cmluZyBDU1NGb250RmFjZTo6dW5pY29kZVJhbmdlKCkgY29uc3QKK3sKKyAgICBTdHJpbmdCdWls
ZGVyIGJ1aWxkZXI7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3Jhbmdlcy5zaXplKCk7
ICsraSkgeworICAgICAgICBpZiAoaSkKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIsICIp
OworICAgICAgICBidWlsZGVyLmFwcGVuZChTdHJpbmc6OmZvcm1hdCgiVSsleC0leCIsIG1fcmFu
Z2VzW2ldLmZyb20oKSwgbV9yYW5nZXNbaV0udG8oKSkpOworICAgIH0KKyAgICByZXR1cm4gYnVp
bGRlci50b1N0cmluZygpOworfQorCitTdHJpbmcgQ1NTRm9udEZhY2U6OnZhcmlhbnQoKSBjb25z
dAoreworICAgIHJldHVybiBjb21wdXRlRm9udFZhcmlhbnQobV92YXJpYW50U2V0dGluZ3MpLT5j
c3NUZXh0KCk7Cit9CisKK1N0cmluZyBDU1NGb250RmFjZTo6ZmVhdHVyZVNldHRpbmdzKCkgY29u
c3QKK3sKKyAgICBpZiAoIW1fZmVhdHVyZVNldHRpbmdzLnNpemUoKSkKKyAgICAgICAgcmV0dXJu
ICJub3JtYWwiOworICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6
OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CisgICAgZm9yIChhdXRvJiBmZWF0dXJlIDogbV9mZWF0
dXJlU2V0dGluZ3MpCisgICAgICAgIGxpc3QtPmFwcGVuZChDU1NGb250RmVhdHVyZVZhbHVlOjpj
cmVhdGUoRm9udEZlYXR1cmVUYWcoZmVhdHVyZS50YWcoKSksIGZlYXR1cmUudmFsdWUoKSkpOwor
ICAgIHJldHVybiBsaXN0LT5jc3NUZXh0KCk7Cit9CisKIGJvb2wgQ1NTRm9udEZhY2U6OmFsbFNv
dXJjZXNGYWlsZWQoKSBjb25zdAogewogICAgIGZvciAoYXV0byYgc291cmNlIDogbV9zb3VyY2Vz
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5oCmluZGV4IGVhZDE5MmNjZGZmNzVhZmQ3ZTEzMzFh
YzI0NGJjOWJmYWU5MzRjMzkuLmJjMWRhYzIzODRmMTU5YTI2NDNjZGI2NWExZGMwMTM1MmZiOGZl
YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5oCkBAIC00MCw0NSArNDAsNTUgQEAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ1NTU2VnbWVudGVkRm9udEZhY2U7CitjbGFzcyBDU1NW
YWx1ZTsKK2NsYXNzIENTU1ZhbHVlTGlzdDsKIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKIGNsYXNz
IEZvbnQ7CiAKIGNsYXNzIENTU0ZvbnRGYWNlIDogcHVibGljIFJlZkNvdW50ZWQ8Q1NTRm9udEZh
Y2U+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPENTU0ZvbnRGYWNlPiBjcmVhdGUoRm9udFRy
YWl0c01hc2sgdHJhaXRzTWFzaywgYm9vbCBpc0xvY2FsRmFsbGJhY2sgPSBmYWxzZSkgeyByZXR1
cm4gYWRvcHRSZWYoKm5ldyBDU1NGb250RmFjZSh0cmFpdHNNYXNrLCBpc0xvY2FsRmFsbGJhY2sp
KTsgfQotCi0gICAgRm9udFRyYWl0c01hc2sgdHJhaXRzTWFzaygpIGNvbnN0IHsgcmV0dXJuIG1f
dHJhaXRzTWFzazsgfQorICAgIHN0YXRpYyBSZWY8Q1NTRm9udEZhY2U+IGNyZWF0ZShib29sIGlz
TG9jYWxGYWxsYmFjayA9IGZhbHNlKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IENTU0ZvbnRGYWNl
KGlzTG9jYWxGYWxsYmFjaykpOyB9CisgICAgdmlydHVhbCB+Q1NTRm9udEZhY2UoKTsKKworICAg
IHZvaWQgc2V0RmFtaWx5KGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgc2V0U3R5bGUoY29uc3Qg
U3RyaW5nJik7CisgICAgdm9pZCBzZXRXZWlnaHQoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBz
ZXRTdHJldGNoKGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgc2V0VW5pY29kZVJhbmdlKGNvbnN0
IFN0cmluZyYpOworICAgIHZvaWQgc2V0VmFyaWFudChjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lk
IHNldEZlYXR1cmVTZXR0aW5ncyhjb25zdCBTdHJpbmcmKTsKKworICAgIGJvb2wgc2V0RmFtaWxp
ZXMoQ1NTVmFsdWUmKTsKKyAgICBib29sIHNldFN0eWxlKENTU1ZhbHVlJik7CisgICAgYm9vbCBz
ZXRXZWlnaHQoQ1NTVmFsdWUmKTsKKyAgICBib29sIHNldFVuaWNvZGVSYW5nZShDU1NWYWx1ZSYp
OworICAgIGJvb2wgc2V0VmFyaWFudExpZ2F0dXJlcyhDU1NWYWx1ZSYpOworICAgIGJvb2wgc2V0
VmFyaWFudFBvc2l0aW9uKENTU1ZhbHVlJik7CisgICAgYm9vbCBzZXRWYXJpYW50Q2FwcyhDU1NW
YWx1ZSYpOworICAgIGJvb2wgc2V0VmFyaWFudE51bWVyaWMoQ1NTVmFsdWUmKTsKKyAgICBib29s
IHNldFZhcmlhbnRBbHRlcm5hdGVzKENTU1ZhbHVlJik7CisgICAgYm9vbCBzZXRWYXJpYW50RWFz
dEFzaWFuKENTU1ZhbHVlJik7CisgICAgYm9vbCBzZXRGZWF0dXJlU2V0dGluZ3MoQ1NTVmFsdWUm
KTsKKworICAgIFN0cmluZyBmYW1pbHkoKSBjb25zdDsKKyAgICBTdHJpbmcgc3R5bGUoKSBjb25z
dDsKKyAgICBTdHJpbmcgd2VpZ2h0KCkgY29uc3Q7CisgICAgU3RyaW5nIHN0cmV0Y2goKSBjb25z
dDsKKyAgICBTdHJpbmcgdW5pY29kZVJhbmdlKCkgY29uc3Q7CisgICAgU3RyaW5nIHZhcmlhbnQo
KSBjb25zdDsKKyAgICBTdHJpbmcgZmVhdHVyZVNldHRpbmdzKCkgY29uc3Q7CiAKICAgICBzdHJ1
Y3QgVW5pY29kZVJhbmdlOwotCi0gICAgdm9pZCBhZGRSYW5nZShVQ2hhcjMyIGZyb20sIFVDaGFy
MzIgdG8pIHsgbV9yYW5nZXMuYXBwZW5kKFVuaWNvZGVSYW5nZShmcm9tLCB0bykpOyB9CisgICAg
dm9pZCBzZXRUcmFpdHNNYXNrKEZvbnRUcmFpdHNNYXNrIHRyYWl0c01hc2spIHsgbV90cmFpdHNN
YXNrID0gdHJhaXRzTWFzazsgfQogICAgIGNvbnN0IFZlY3RvcjxVbmljb2RlUmFuZ2U+JiByYW5n
ZXMoKSBjb25zdCB7IHJldHVybiBtX3JhbmdlczsgfQotCi0gICAgdm9pZCBpbnNlcnRGZWF0dXJl
KEZvbnRGZWF0dXJlJiYgZmVhdHVyZSkgeyBtX2ZlYXR1cmVTZXR0aW5ncy5pbnNlcnQoV1RGTW92
ZShmZWF0dXJlKSk7IH0KLQotICAgIHZvaWQgc2V0VmFyaWFudENvbW1vbkxpZ2F0dXJlcyhGb250
VmFyaWFudExpZ2F0dXJlcyBsaWdhdHVyZXMpIHsgbV92YXJpYW50U2V0dGluZ3MuY29tbW9uTGln
YXR1cmVzID0gbGlnYXR1cmVzOyB9Ci0gICAgdm9pZCBzZXRWYXJpYW50RGlzY3JldGlvbmFyeUxp
Z2F0dXJlcyhGb250VmFyaWFudExpZ2F0dXJlcyBsaWdhdHVyZXMpIHsgbV92YXJpYW50U2V0dGlu
Z3MuZGlzY3JldGlvbmFyeUxpZ2F0dXJlcyA9IGxpZ2F0dXJlczsgfQotICAgIHZvaWQgc2V0VmFy
aWFudEhpc3RvcmljYWxMaWdhdHVyZXMoRm9udFZhcmlhbnRMaWdhdHVyZXMgbGlnYXR1cmVzKSB7
IG1fdmFyaWFudFNldHRpbmdzLmhpc3RvcmljYWxMaWdhdHVyZXMgPSBsaWdhdHVyZXM7IH0KLSAg
ICB2b2lkIHNldFZhcmlhbnRDb250ZXh0dWFsQWx0ZXJuYXRlcyhGb250VmFyaWFudExpZ2F0dXJl
cyBsaWdhdHVyZXMpIHsgbV92YXJpYW50U2V0dGluZ3MuY29udGV4dHVhbEFsdGVybmF0ZXMgPSBs
aWdhdHVyZXM7IH0KLSAgICB2b2lkIHNldFZhcmlhbnRQb3NpdGlvbihGb250VmFyaWFudFBvc2l0
aW9uIHBvc2l0aW9uKSB7IG1fdmFyaWFudFNldHRpbmdzLnBvc2l0aW9uID0gcG9zaXRpb247IH0K
LSAgICB2b2lkIHNldFZhcmlhbnRDYXBzKEZvbnRWYXJpYW50Q2FwcyBjYXBzKSB7IG1fdmFyaWFu
dFNldHRpbmdzLmNhcHMgPSBjYXBzOyB9Ci0gICAgdm9pZCBzZXRWYXJpYW50TnVtZXJpY0ZpZ3Vy
ZShGb250VmFyaWFudE51bWVyaWNGaWd1cmUgZmlndXJlKSB7IG1fdmFyaWFudFNldHRpbmdzLm51
bWVyaWNGaWd1cmUgPSBmaWd1cmU7IH0KLSAgICB2b2lkIHNldFZhcmlhbnROdW1lcmljU3BhY2lu
ZyhGb250VmFyaWFudE51bWVyaWNTcGFjaW5nIHNwYWNpbmcpIHsgbV92YXJpYW50U2V0dGluZ3Mu
bnVtZXJpY1NwYWNpbmcgPSBzcGFjaW5nOyB9Ci0gICAgdm9pZCBzZXRWYXJpYW50TnVtZXJpY0Zy
YWN0aW9uKEZvbnRWYXJpYW50TnVtZXJpY0ZyYWN0aW9uIGZyYWN0aW9uKSB7IG1fdmFyaWFudFNl
dHRpbmdzLm51bWVyaWNGcmFjdGlvbiA9IGZyYWN0aW9uOyB9Ci0gICAgdm9pZCBzZXRWYXJpYW50
TnVtZXJpY09yZGluYWwoRm9udFZhcmlhbnROdW1lcmljT3JkaW5hbCBvcmRpbmFsKSB7IG1fdmFy
aWFudFNldHRpbmdzLm51bWVyaWNPcmRpbmFsID0gb3JkaW5hbDsgfQotICAgIHZvaWQgc2V0VmFy
aWFudE51bWVyaWNTbGFzaGVkWmVybyhGb250VmFyaWFudE51bWVyaWNTbGFzaGVkWmVybyBzbGFz
aGVkWmVybykgeyBtX3ZhcmlhbnRTZXR0aW5ncy5udW1lcmljU2xhc2hlZFplcm8gPSBzbGFzaGVk
WmVybzsgfQotICAgIHZvaWQgc2V0VmFyaWFudEFsdGVybmF0ZXMoRm9udFZhcmlhbnRBbHRlcm5h
dGVzIGFsdGVybmF0ZXMpIHsgbV92YXJpYW50U2V0dGluZ3MuYWx0ZXJuYXRlcyA9IGFsdGVybmF0
ZXM7IH0KLSAgICB2b2lkIHNldFZhcmlhbnRFYXN0QXNpYW5WYXJpYW50KEZvbnRWYXJpYW50RWFz
dEFzaWFuVmFyaWFudCB2YXJpYW50KSB7IG1fdmFyaWFudFNldHRpbmdzLmVhc3RBc2lhblZhcmlh
bnQgPSB2YXJpYW50OyB9Ci0gICAgdm9pZCBzZXRWYXJpYW50RWFzdEFzaWFuV2lkdGgoRm9udFZh
cmlhbnRFYXN0QXNpYW5XaWR0aCB3aWR0aCkgeyBtX3ZhcmlhbnRTZXR0aW5ncy5lYXN0QXNpYW5X
aWR0aCA9IHdpZHRoOyB9Ci0gICAgdm9pZCBzZXRWYXJpYW50RWFzdEFzaWFuUnVieShGb250VmFy
aWFudEVhc3RBc2lhblJ1YnkgcnVieSkgeyBtX3ZhcmlhbnRTZXR0aW5ncy5lYXN0QXNpYW5SdWJ5
ID0gcnVieTsgfQorICAgIEZvbnRUcmFpdHNNYXNrIHRyYWl0c01hc2soKSBjb25zdCB7IHJldHVy
biBtX3RyYWl0c01hc2s7IH0KKyAgICBib29sIGlzTG9jYWxGYWxsYmFjaygpIGNvbnN0IHsgcmV0
dXJuIG1faXNMb2NhbEZhbGxiYWNrOyB9CiAKICAgICB2b2lkIGFkZGVkVG9TZWdtZW50ZWRGb250
RmFjZShDU1NTZWdtZW50ZWRGb250RmFjZSYpOwogICAgIHZvaWQgcmVtb3ZlZEZyb21TZWdtZW50
ZWRGb250RmFjZShDU1NTZWdtZW50ZWRGb250RmFjZSYpOwogCiAgICAgYm9vbCBhbGxTb3VyY2Vz
RmFpbGVkKCkgY29uc3Q7CiAKLSAgICBib29sIGlzTG9jYWxGYWxsYmFjaygpIGNvbnN0IHsgcmV0
dXJuIG1faXNMb2NhbEZhbGxiYWNrOyB9Ci0KICAgICB2b2lkIGFkb3B0U291cmNlKHN0ZDo6dW5p
cXVlX3B0cjxDU1NGb250RmFjZVNvdXJjZT4mJik7CiAKICAgICB2b2lkIGZvbnRMb2FkZWQoQ1NT
Rm9udEZhY2VTb3VyY2UmKTsKQEAgLTEwNSwxMiArMTE1LDkgQEAgcHVibGljOgogI2VuZGlmCiAK
IHByaXZhdGU6Ci0gICAgQ1NTRm9udEZhY2UoRm9udFRyYWl0c01hc2sgdHJhaXRzTWFzaywgYm9v
bCBpc0xvY2FsRmFsbGJhY2spCi0gICAgICAgIDogbV90cmFpdHNNYXNrKHRyYWl0c01hc2spCi0g
ICAgICAgICwgbV9pc0xvY2FsRmFsbGJhY2soaXNMb2NhbEZhbGxiYWNrKQotICAgIHsKLSAgICB9
CisgICAgQ1NTRm9udEZhY2UoYm9vbCBpc0xvY2FsRmFsbGJhY2spOwogCisgICAgUmVmUHRyPENT
U1ZhbHVlTGlzdD4gbV9mYW1pbGllczsKICAgICBGb250VHJhaXRzTWFzayBtX3RyYWl0c01hc2s7
CiAgICAgVmVjdG9yPFVuaWNvZGVSYW5nZT4gbV9yYW5nZXM7CiAgICAgSGFzaFNldDxDU1NTZWdt
ZW50ZWRGb250RmFjZSo+IG1fc2VnbWVudGVkRm9udEZhY2VzOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Rm9udFNlbGVjdG9yLmNwcAppbmRleCA5YzgxNjFhN2NkOWU5Mzk5NDNhMzM3M2VkOWFhYzNmNzJk
NjBkYmM4Li5iYzJhMzdiOTlmN2EzYTg1YzAzMGFhODAzYjAzODY1ZTYwYmIxOTUzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcApAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1
ZGUgIkNTU1VuaWNvZGVSYW5nZVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWVLZXl3b3Jkcy5o
IgogI2luY2x1ZGUgIkNTU1ZhbHVlTGlzdC5oIgorI2luY2x1ZGUgIkNTU1ZhbHVlUG9vbC5oIgog
I2luY2x1ZGUgIkNhY2hlZFJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIK
ICNpbmNsdWRlICJGb250LmgiCkBAIC04Nyw3NSArODgsOCBAQCBib29sIENTU0ZvbnRTZWxlY3Rv
cjo6aXNFbXB0eSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fZm9udHMuaXNFbXB0eSgpOwogfQogCi1z
dGF0aWMgT3B0aW9uYWw8Rm9udFRyYWl0c01hc2s+IGNvbXB1dGVUcmFpdHNNYXNrKGNvbnN0IFN0
eWxlUHJvcGVydGllcyYgc3R5bGUpCitzdGF0aWMgdm9pZCBhcHBlbmRTb3VyY2VzKENTU0ZvbnRG
YWNlJiBmb250RmFjZSwgQ1NTVmFsdWVMaXN0JiBzcmNMaXN0LCBEb2N1bWVudCogZG9jdW1lbnQs
IGJvb2wgaXNJbml0aWF0aW5nRWxlbWVudEluVXNlckFnZW50U2hhZG93VHJlZSkKIHsKLSAgICB1
bnNpZ25lZCB0cmFpdHNNYXNrID0gMDsKLQotICAgIGlmIChSZWZQdHI8Q1NTVmFsdWU+IGZvbnRT
dHlsZSA9IHN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlGb250U3R5bGUpKSB7
Ci0gICAgICAgIGlmICghaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KCpmb250U3R5bGUpKQotICAgICAg
ICAgICAgcmV0dXJuIE51bGxvcHQ7Ci0KLSAgICAgICAgc3dpdGNoIChkb3duY2FzdDxDU1NQcmlt
aXRpdmVWYWx1ZT4oKmZvbnRTdHlsZSkuZ2V0VmFsdWVJRCgpKSB7Ci0gICAgICAgIGNhc2UgQ1NT
VmFsdWVOb3JtYWw6Ci0gICAgICAgICAgICB0cmFpdHNNYXNrIHw9IEZvbnRTdHlsZU5vcm1hbE1h
c2s7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDU1NWYWx1ZUl0YWxpYzoKLSAg
ICAgICAgY2FzZSBDU1NWYWx1ZU9ibGlxdWU6Ci0gICAgICAgICAgICB0cmFpdHNNYXNrIHw9IEZv
bnRTdHlsZUl0YWxpY01hc2s7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfSBlbHNlCi0gICAgICAgIHRyYWl0
c01hc2sgfD0gRm9udFN0eWxlTm9ybWFsTWFzazsKLQotICAgIGlmIChSZWZQdHI8Q1NTVmFsdWU+
IGZvbnRXZWlnaHQgPSBzdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5Rm9udFdl
aWdodCkpIHsKLSAgICAgICAgaWYgKCFpczxDU1NQcmltaXRpdmVWYWx1ZT4oKmZvbnRXZWlnaHQp
KQotICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7Ci0KLSAgICAgICAgc3dpdGNoIChkb3duY2Fz
dDxDU1NQcmltaXRpdmVWYWx1ZT4oKmZvbnRXZWlnaHQpLmdldFZhbHVlSUQoKSkgewotICAgICAg
ICBjYXNlIENTU1ZhbHVlQm9sZDoKLSAgICAgICAgY2FzZSBDU1NWYWx1ZTcwMDoKLSAgICAgICAg
ICAgIHRyYWl0c01hc2sgfD0gRm9udFdlaWdodDcwME1hc2s7Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgY2FzZSBDU1NWYWx1ZU5vcm1hbDoKLSAgICAgICAgY2FzZSBDU1NWYWx1ZTQwMDoK
LSAgICAgICAgICAgIHRyYWl0c01hc2sgfD0gRm9udFdlaWdodDQwME1hc2s7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgY2FzZSBDU1NWYWx1ZTkwMDoKLSAgICAgICAgICAgIHRyYWl0c01h
c2sgfD0gRm9udFdlaWdodDkwME1hc2s7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2Fz
ZSBDU1NWYWx1ZTgwMDoKLSAgICAgICAgICAgIHRyYWl0c01hc2sgfD0gRm9udFdlaWdodDgwME1h
c2s7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDU1NWYWx1ZTYwMDoKLSAgICAg
ICAgICAgIHRyYWl0c01hc2sgfD0gRm9udFdlaWdodDYwME1hc2s7Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgY2FzZSBDU1NWYWx1ZTUwMDoKLSAgICAgICAgICAgIHRyYWl0c01hc2sgfD0g
Rm9udFdlaWdodDUwME1hc2s7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDU1NW
YWx1ZTMwMDoKLSAgICAgICAgICAgIHRyYWl0c01hc2sgfD0gRm9udFdlaWdodDMwME1hc2s7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDU1NWYWx1ZTIwMDoKLSAgICAgICAgICAg
IHRyYWl0c01hc2sgfD0gRm9udFdlaWdodDIwME1hc2s7Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgY2FzZSBDU1NWYWx1ZTEwMDoKLSAgICAgICAgICAgIHRyYWl0c01hc2sgfD0gRm9udFdl
aWdodDEwME1hc2s7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfSBlbHNlCi0gICAgICAgIHRyYWl0c01hc2sg
fD0gRm9udFdlaWdodDQwME1hc2s7Ci0KLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Rm9udFRyYWl0
c01hc2s+KHRyYWl0c01hc2spOwotfQotCi1zdGF0aWMgUmVmPENTU0ZvbnRGYWNlPiBjcmVhdGVG
b250RmFjZShDU1NWYWx1ZUxpc3QmIHNyY0xpc3QsIEZvbnRUcmFpdHNNYXNrIHRyYWl0c01hc2ss
IERvY3VtZW50KiBkb2N1bWVudCwgYm9vbCBpc0luaXRpYXRpbmdFbGVtZW50SW5Vc2VyQWdlbnRT
aGFkb3dUcmVlKQotewotICAgIFJlZjxDU1NGb250RmFjZT4gZm9udEZhY2UgPSBDU1NGb250RmFj
ZTo6Y3JlYXRlKHRyYWl0c01hc2spOwotCiAgICAgZm9yIChhdXRvJiBzcmMgOiBzcmNMaXN0KSB7
CiAgICAgICAgIC8vIEFuIGl0ZW0gaW4gdGhlIGxpc3QgZWl0aGVyIHNwZWNpZmllcyBhIHN0cmlu
ZyAobG9jYWwgZm9udCBuYW1lKSBvciBhIFVSTCAocmVtb3RlIGZvbnQgdG8gZG93bmxvYWQpLgog
ICAgICAgICBDU1NGb250RmFjZVNyY1ZhbHVlJiBpdGVtID0gZG93bmNhc3Q8Q1NTRm9udEZhY2VT
cmNWYWx1ZT4oc3JjLmdldCgpKTsKQEAgLTE3MiwxNiArMTA2LDE0IEBAIHN0YXRpYyBSZWY8Q1NT
Rm9udEZhY2U+IGNyZWF0ZUZvbnRGYWNlKENTU1ZhbHVlTGlzdCYgc3JjTGlzdCwgRm9udFRyYWl0
c01hc2sgdHJhCiAgICAgICAgICAgICBib29sIGFsbG93RG93bmxvYWRpbmcgPSBmb3VuZFNWR0Zv
bnQgfHwgKHNldHRpbmdzICYmIHNldHRpbmdzLT5kb3dubG9hZGFibGVCaW5hcnlGb250c0VuYWJs
ZWQoKSk7CiAgICAgICAgICAgICBpZiAoYWxsb3dEb3dubG9hZGluZyAmJiBpdGVtLmlzU3VwcG9y
dGVkRm9ybWF0KCkgJiYgZG9jdW1lbnQpIHsKICAgICAgICAgICAgICAgICBpZiAoQ2FjaGVkRm9u
dCogY2FjaGVkRm9udCA9IGl0ZW0uY2FjaGVkRm9udChkb2N1bWVudCwgZm91bmRTVkdGb250LCBp
c0luaXRpYXRpbmdFbGVtZW50SW5Vc2VyQWdlbnRTaGFkb3dUcmVlKSkKLSAgICAgICAgICAgICAg
ICAgICAgc291cmNlID0gc3RkOjptYWtlX3VuaXF1ZTxDU1NGb250RmFjZVNvdXJjZT4oZm9udEZh
Y2UuZ2V0KCksIGl0ZW0ucmVzb3VyY2UoKSwgY2FjaGVkRm9udCk7CisgICAgICAgICAgICAgICAg
ICAgIHNvdXJjZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q1NTRm9udEZhY2VTb3VyY2U+KGZvbnRGYWNl
LCBpdGVtLnJlc291cmNlKCksIGNhY2hlZEZvbnQpOwogICAgICAgICAgICAgfQogICAgICAgICB9
IGVsc2UKLSAgICAgICAgICAgIHNvdXJjZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q1NTRm9udEZhY2VT
b3VyY2U+KGZvbnRGYWNlLmdldCgpLCBpdGVtLnJlc291cmNlKCksIG51bGxwdHIsIGZvbnRGYWNl
RWxlbWVudCk7CisgICAgICAgICAgICBzb3VyY2UgPSBzdGQ6Om1ha2VfdW5pcXVlPENTU0ZvbnRG
YWNlU291cmNlPihmb250RmFjZSwgaXRlbS5yZXNvdXJjZSgpLCBudWxscHRyLCBmb250RmFjZUVs
ZW1lbnQpOwogCiAgICAgICAgIGlmIChzb3VyY2UpCi0gICAgICAgICAgICBmb250RmFjZS0+YWRv
cHRTb3VyY2UoV1RGTW92ZShzb3VyY2UpKTsKKyAgICAgICAgICAgIGZvbnRGYWNlLmFkb3B0U291
cmNlKFdURk1vdmUoc291cmNlKSk7CiAgICAgfQotCi0gICAgcmV0dXJuIGZvbnRGYWNlOwogfQog
CiBzdGF0aWMgU3RyaW5nIGZhbWlseU5hbWVGcm9tUHJpbWl0aXZlKGNvbnN0IENTU1ByaW1pdGl2
ZVZhbHVlJiB2YWx1ZSkKQEAgLTIyMSw3ICsxNTMsOCBAQCBzdGF0aWMgdm9pZCByZWdpc3Rlckxv
Y2FsRm9udEZhY2VzRm9yRmFtaWx5KGNvbnN0IFN0cmluZyYgZmFtaWx5TmFtZSwgSGFzaE1hcDxT
dAogCiAgICAgVmVjdG9yPFJlZjxDU1NGb250RmFjZT4+IGZhY2VzID0geyB9OwogICAgIGZvciAo
YXV0byBtYXNrIDogdHJhaXRzTWFza3MpIHsKLSAgICAgICAgUmVmPENTU0ZvbnRGYWNlPiBmYWNl
ID0gQ1NTRm9udEZhY2U6OmNyZWF0ZShtYXNrLCB0cnVlKTsKKyAgICAgICAgUmVmPENTU0ZvbnRG
YWNlPiBmYWNlID0gQ1NTRm9udEZhY2U6OmNyZWF0ZSh0cnVlKTsKKyAgICAgICAgZmFjZS0+c2V0
VHJhaXRzTWFzayhtYXNrKTsKICAgICAgICAgZmFjZS0+YWRvcHRTb3VyY2Uoc3RkOjptYWtlX3Vu
aXF1ZTxDU1NGb250RmFjZVNvdXJjZT4oZmFjZS5nZXQoKSwgZmFtaWx5TmFtZSkpOwogICAgICAg
ICBBU1NFUlQoIWZhY2UtPmFsbFNvdXJjZXNGYWlsZWQoKSk7CiAgICAgICAgIGZhY2VzLmFwcGVu
ZChXVEZNb3ZlKGZhY2UpKTsKQEAgLTIzMyw2ICsxNjYsOCBAQCB2b2lkIENTU0ZvbnRTZWxlY3Rv
cjo6YWRkRm9udEZhY2VSdWxlKGNvbnN0IFN0eWxlUnVsZUZvbnRGYWNlJiBmb250RmFjZVJ1bGUs
IGJvbwogewogICAgIGNvbnN0IFN0eWxlUHJvcGVydGllcyYgc3R5bGUgPSBmb250RmFjZVJ1bGUu
cHJvcGVydGllcygpOwogICAgIFJlZlB0cjxDU1NWYWx1ZT4gZm9udEZhbWlseSA9IHN0eWxlLmdl
dFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlGb250RmFtaWx5KTsKKyAgICBSZWZQdHI8Q1NT
VmFsdWU+IGZvbnRTdHlsZSA9IHN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlG
b250U3R5bGUpOworICAgIFJlZlB0cjxDU1NWYWx1ZT4gZm9udFdlaWdodCA9IHN0eWxlLmdldFBy
b3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlGb250V2VpZ2h0KTsKICAgICBSZWZQdHI8Q1NTVmFs
dWU+IHNyYyA9IHN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlTcmMpOwogICAg
IFJlZlB0cjxDU1NWYWx1ZT4gdW5pY29kZVJhbmdlID0gc3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1
ZShDU1NQcm9wZXJ0eVVuaWNvZGVSYW5nZSk7CiAgICAgUmVmUHRyPENTU1ZhbHVlPiBmZWF0dXJl
U2V0dGluZ3MgPSBzdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5Rm9udEZlYXR1
cmVTZXR0aW5ncyk7CkBAIC0yNDksNTQgKzE4NCw0NyBAQCB2b2lkIENTU0ZvbnRTZWxlY3Rvcjo6
YWRkRm9udEZhY2VSdWxlKGNvbnN0IFN0eWxlUnVsZUZvbnRGYWNlJiBmb250RmFjZVJ1bGUsIGJv
bwogICAgIGlmICghZmFtaWx5TGlzdC5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAg
aWYgKCFmb250U3R5bGUpCisgICAgICAgIGZvbnRTdHlsZSA9IENTU1ZhbHVlUG9vbDo6c2luZ2xl
dG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTm9ybWFsKS5wdHIoKTsKKworICAg
IGlmICghZm9udFdlaWdodCkKKyAgICAgICAgZm9udFdlaWdodCA9IENTU1ZhbHVlUG9vbDo6c2lu
Z2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTm9ybWFsKTsKKworICAgIENT
U1ZhbHVlTGlzdCogcmFuZ2VMaXN0ID0gZG93bmNhc3Q8Q1NTVmFsdWVMaXN0Pih1bmljb2RlUmFu
Z2UuZ2V0KCkpOworCiAgICAgQ1NTVmFsdWVMaXN0JiBzcmNMaXN0ID0gZG93bmNhc3Q8Q1NTVmFs
dWVMaXN0Pigqc3JjKTsKICAgICBpZiAoIXNyY0xpc3QubGVuZ3RoKCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIENTU1ZhbHVlTGlzdCogcmFuZ2VMaXN0ID0gZG93bmNhc3Q8Q1NTVmFsdWVMaXN0
Pih1bmljb2RlUmFuZ2UuZ2V0KCkpOworICAgIFJlZjxDU1NGb250RmFjZT4gZm9udEZhY2UgPSBD
U1NGb250RmFjZTo6Y3JlYXRlKCk7CiAKLSAgICBhdXRvIGNvbXB1dGVkVHJhaXRzTWFzayA9IGNv
bXB1dGVUcmFpdHNNYXNrKHN0eWxlKTsKLSAgICBpZiAoIWNvbXB1dGVkVHJhaXRzTWFzaykKKyAg
ICBpZiAoIWZvbnRGYWNlLT5zZXRGYW1pbGllcygqZm9udEZhbWlseSkpCisgICAgICAgIHJldHVy
bjsKKyAgICBpZiAoIWZvbnRGYWNlLT5zZXRTdHlsZSgqZm9udFN0eWxlKSkKKyAgICAgICAgcmV0
dXJuOworICAgIGlmICghZm9udEZhY2UtPnNldFdlaWdodCgqZm9udFdlaWdodCkpCisgICAgICAg
IHJldHVybjsKKyAgICBpZiAocmFuZ2VMaXN0ICYmICFmb250RmFjZS0+c2V0VW5pY29kZVJhbmdl
KCpyYW5nZUxpc3QpKQorICAgICAgICByZXR1cm47CisgICAgaWYgKHZhcmlhbnRMaWdhdHVyZXMg
JiYgIWZvbnRGYWNlLT5zZXRWYXJpYW50TGlnYXR1cmVzKCp2YXJpYW50TGlnYXR1cmVzKSkKKyAg
ICAgICAgcmV0dXJuOworICAgIGlmICh2YXJpYW50UG9zaXRpb24gJiYgIWZvbnRGYWNlLT5zZXRW
YXJpYW50UG9zaXRpb24oKnZhcmlhbnRQb3NpdGlvbikpCisgICAgICAgIHJldHVybjsKKyAgICBp
ZiAodmFyaWFudENhcHMgJiYgIWZvbnRGYWNlLT5zZXRWYXJpYW50Q2FwcygqdmFyaWFudENhcHMp
KQorICAgICAgICByZXR1cm47CisgICAgaWYgKHZhcmlhbnROdW1lcmljICYmICFmb250RmFjZS0+
c2V0VmFyaWFudE51bWVyaWMoKnZhcmlhbnROdW1lcmljKSkKKyAgICAgICAgcmV0dXJuOworICAg
IGlmICh2YXJpYW50QWx0ZXJuYXRlcyAmJiAhZm9udEZhY2UtPnNldFZhcmlhbnRBbHRlcm5hdGVz
KCp2YXJpYW50QWx0ZXJuYXRlcykpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAodmFyaWFudEVh
c3RBc2lhbiAmJiAhZm9udEZhY2UtPnNldFZhcmlhbnRFYXN0QXNpYW4oKnZhcmlhbnRFYXN0QXNp
YW4pKQorICAgICAgICByZXR1cm47CisgICAgaWYgKGZlYXR1cmVTZXR0aW5ncyAmJiAhZm9udEZh
Y2UtPnNldEZlYXR1cmVTZXR0aW5ncygqZmVhdHVyZVNldHRpbmdzKSkKICAgICAgICAgcmV0dXJu
OwotICAgIGF1dG8gdHJhaXRzTWFzayA9IGNvbXB1dGVkVHJhaXRzTWFzay52YWx1ZSgpOwogCi0g
ICAgUmVmPENTU0ZvbnRGYWNlPiBmb250RmFjZSA9IGNyZWF0ZUZvbnRGYWNlKHNyY0xpc3QsIHRy
YWl0c01hc2ssIG1fZG9jdW1lbnQsIGlzSW5pdGlhdGluZ0VsZW1lbnRJblVzZXJBZ2VudFNoYWRv
d1RyZWUpOworICAgIGFwcGVuZFNvdXJjZXMoZm9udEZhY2UsIHNyY0xpc3QsIG1fZG9jdW1lbnQs
IGlzSW5pdGlhdGluZ0VsZW1lbnRJblVzZXJBZ2VudFNoYWRvd1RyZWUpOwogICAgIGlmIChmb250
RmFjZS0+YWxsU291cmNlc0ZhaWxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAocmFu
Z2VMaXN0KSB7Ci0gICAgICAgIHVuc2lnbmVkIG51bVJhbmdlcyA9IHJhbmdlTGlzdC0+bGVuZ3Ro
KCk7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1SYW5nZXM7IGkrKykgewot
ICAgICAgICAgICAgQ1NTVW5pY29kZVJhbmdlVmFsdWUmIHJhbmdlID0gZG93bmNhc3Q8Q1NTVW5p
Y29kZVJhbmdlVmFsdWU+KCpyYW5nZUxpc3QtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soaSkpOwot
ICAgICAgICAgICAgZm9udEZhY2UtPmFkZFJhbmdlKHJhbmdlLmZyb20oKSwgcmFuZ2UudG8oKSk7
Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAoZmVhdHVyZVNldHRpbmdzKSB7Ci0gICAgICAg
IGZvciAoYXV0byYgaXRlbSA6IGRvd25jYXN0PENTU1ZhbHVlTGlzdD4oKmZlYXR1cmVTZXR0aW5n
cykpIHsKLSAgICAgICAgICAgIGF1dG8mIGZlYXR1cmUgPSBkb3duY2FzdDxDU1NGb250RmVhdHVy
ZVZhbHVlPihpdGVtLmdldCgpKTsKLSAgICAgICAgICAgIGZvbnRGYWNlLT5pbnNlcnRGZWF0dXJl
KEZvbnRGZWF0dXJlKGZlYXR1cmUudGFnKCksIGZlYXR1cmUudmFsdWUoKSkpOwotICAgICAgICB9
Ci0gICAgfQotCi0gICAgaWYgKHZhcmlhbnRMaWdhdHVyZXMpCi0gICAgICAgIGFwcGx5VmFsdWVG
b250VmFyaWFudExpZ2F0dXJlcyhmb250RmFjZS5nZXQoKSwgKnZhcmlhbnRMaWdhdHVyZXMpOwot
Ci0gICAgaWYgKHZhcmlhbnRQb3NpdGlvbiAmJiBpczxDU1NQcmltaXRpdmVWYWx1ZT4oKnZhcmlh
bnRQb3NpdGlvbikpCi0gICAgICAgIGZvbnRGYWNlLT5zZXRWYXJpYW50UG9zaXRpb24oZG93bmNh
c3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp2YXJpYW50UG9zaXRpb24pKTsKLQotICAgIGlmICh2YXJp
YW50Q2FwcyAmJiBpczxDU1NQcmltaXRpdmVWYWx1ZT4oKnZhcmlhbnRDYXBzKSkKLSAgICAgICAg
Zm9udEZhY2UtPnNldFZhcmlhbnRDYXBzKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdmFy
aWFudENhcHMpKTsKLQotICAgIGlmICh2YXJpYW50TnVtZXJpYykKLSAgICAgICAgYXBwbHlWYWx1
ZUZvbnRWYXJpYW50TnVtZXJpYyhmb250RmFjZS5nZXQoKSwgKnZhcmlhbnROdW1lcmljKTsKLQot
ICAgIGlmICh2YXJpYW50QWx0ZXJuYXRlcyAmJiBpczxDU1NQcmltaXRpdmVWYWx1ZT4oKnZhcmlh
bnRBbHRlcm5hdGVzKSkKLSAgICAgICAgZm9udEZhY2UtPnNldFZhcmlhbnRBbHRlcm5hdGVzKGRv
d25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdmFyaWFudEFsdGVybmF0ZXMpKTsKLQotICAgIGlm
ICh2YXJpYW50RWFzdEFzaWFuKQotICAgICAgICBhcHBseVZhbHVlRm9udFZhcmlhbnRFYXN0QXNp
YW4oZm9udEZhY2UuZ2V0KCksICp2YXJpYW50RWFzdEFzaWFuKTsKLQogICAgIGZvciAoYXV0byYg
aXRlbSA6IGZhbWlseUxpc3QpIHsKICAgICAgICAgU3RyaW5nIGZhbWlseU5hbWUgPSBmYW1pbHlO
YW1lRnJvbVByaW1pdGl2ZShkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oaXRlbS5nZXQoKSkp
OwogICAgICAgICBpZiAoZmFtaWx5TmFtZS5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvRm9udFZhcmlhbnRCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9G
b250VmFyaWFudEJ1aWxkZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBjOWUxNDhkM2ZiZDAxNmUwMzNkODU2
NThhNTNmZTk1ODFmYTcxZTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Rm9udFZhcmlhbnRCdWlsZGVyLmNwcApAQCAtMCwwICsxLDM3NSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJGb250VmFyaWFudEJ1aWxkZXIuaCIKKworI2lu
Y2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlLmgiCisjaW5jbHVkZSAiQ1NTVmFsdWVMaXN0LmgiCisj
aW5jbHVkZSAiQ1NTVmFsdWVQb29sLmgiCisjaW5jbHVkZSAiVGV4dEZsYWdzLmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworRm9udFZhcmlhbnRMaWdhdHVyZXNWYWx1ZXMgZXh0cmFjdEZvbnRW
YXJpYW50TGlnYXR1cmVzKENTU1ZhbHVlJiB2YWx1ZSkKK3sKKyAgICBGb250VmFyaWFudExpZ2F0
dXJlcyBjb21tb24gPSBGb250VmFyaWFudExpZ2F0dXJlczo6Tm9ybWFsOworICAgIEZvbnRWYXJp
YW50TGlnYXR1cmVzIGRpc2NyZXRpb25hcnkgPSBGb250VmFyaWFudExpZ2F0dXJlczo6Tm9ybWFs
OworICAgIEZvbnRWYXJpYW50TGlnYXR1cmVzIGhpc3RvcmljYWwgPSBGb250VmFyaWFudExpZ2F0
dXJlczo6Tm9ybWFsOworICAgIEZvbnRWYXJpYW50TGlnYXR1cmVzIGNvbnRleHR1YWxBbHRlcm5h
dGVzID0gRm9udFZhcmlhbnRMaWdhdHVyZXM6Ok5vcm1hbDsKKworICAgIGlmIChpczxDU1NWYWx1
ZUxpc3Q+KHZhbHVlKSkgeworICAgICAgICBmb3IgKGF1dG8mIGl0ZW0gOiBkb3duY2FzdDxDU1NW
YWx1ZUxpc3Q+KHZhbHVlKSkgeworICAgICAgICAgICAgc3dpdGNoIChkb3duY2FzdDxDU1NQcmlt
aXRpdmVWYWx1ZT4oaXRlbS5nZXQoKSkuZ2V0VmFsdWVJRCgpKSB7CisgICAgICAgICAgICBjYXNl
IENTU1ZhbHVlTm9Db21tb25MaWdhdHVyZXM6CisgICAgICAgICAgICAgICAgY29tbW9uID0gRm9u
dFZhcmlhbnRMaWdhdHVyZXM6Ok5vOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgY2FzZSBDU1NWYWx1ZUNvbW1vbkxpZ2F0dXJlczoKKyAgICAgICAgICAgICAgICBjb21tb24g
PSBGb250VmFyaWFudExpZ2F0dXJlczo6WWVzOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgY2FzZSBDU1NWYWx1ZU5vRGlzY3JldGlvbmFyeUxpZ2F0dXJlczoKKyAgICAgICAg
ICAgICAgICBkaXNjcmV0aW9uYXJ5ID0gRm9udFZhcmlhbnRMaWdhdHVyZXM6Ok5vOworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZURpc2NyZXRpb25hcnlM
aWdhdHVyZXM6CisgICAgICAgICAgICAgICAgZGlzY3JldGlvbmFyeSA9IEZvbnRWYXJpYW50TGln
YXR1cmVzOjpZZXM7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENT
U1ZhbHVlTm9IaXN0b3JpY2FsTGlnYXR1cmVzOgorICAgICAgICAgICAgICAgIGhpc3RvcmljYWwg
PSBGb250VmFyaWFudExpZ2F0dXJlczo6Tm87CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICBjYXNlIENTU1ZhbHVlSGlzdG9yaWNhbExpZ2F0dXJlczoKKyAgICAgICAgICAgICAg
ICBoaXN0b3JpY2FsID0gRm9udFZhcmlhbnRMaWdhdHVyZXM6OlllczsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVDb250ZXh0dWFsOgorICAgICAgICAg
ICAgICAgIGNvbnRleHR1YWxBbHRlcm5hdGVzID0gRm9udFZhcmlhbnRMaWdhdHVyZXM6OlllczsK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVOb0NvbnRl
eHR1YWw6CisgICAgICAgICAgICAgICAgY29udGV4dHVhbEFsdGVybmF0ZXMgPSBGb250VmFyaWFu
dExpZ2F0dXJlczo6Tm87CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfSBlbHNlIGlmIChpczxD
U1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpKSB7CisgICAgICAgIHN3aXRjaCAoZG93bmNhc3Q8Q1NT
UHJpbWl0aXZlVmFsdWU+KHZhbHVlKS5nZXRWYWx1ZUlEKCkpIHsKKyAgICAgICAgY2FzZSBDU1NW
YWx1ZU5vcm1hbDoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENTU1ZhbHVlTm9u
ZToKKyAgICAgICAgICAgIGNvbW1vbiA9IEZvbnRWYXJpYW50TGlnYXR1cmVzOjpObzsKKyAgICAg
ICAgICAgIGRpc2NyZXRpb25hcnkgPSBGb250VmFyaWFudExpZ2F0dXJlczo6Tm87CisgICAgICAg
ICAgICBoaXN0b3JpY2FsID0gRm9udFZhcmlhbnRMaWdhdHVyZXM6Ok5vOworICAgICAgICAgICAg
Y29udGV4dHVhbEFsdGVybmF0ZXMgPSBGb250VmFyaWFudExpZ2F0dXJlczo6Tm87CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1
cm4gRm9udFZhcmlhbnRMaWdhdHVyZXNWYWx1ZXMoY29tbW9uLCBkaXNjcmV0aW9uYXJ5LCBoaXN0
b3JpY2FsLCBjb250ZXh0dWFsQWx0ZXJuYXRlcyk7Cit9CisKK0ZvbnRWYXJpYW50TnVtZXJpY1Zh
bHVlcyBleHRyYWN0Rm9udFZhcmlhbnROdW1lcmljKENTU1ZhbHVlJiB2YWx1ZSkKK3sKKyAgICBG
b250VmFyaWFudE51bWVyaWNGaWd1cmUgZmlndXJlID0gRm9udFZhcmlhbnROdW1lcmljRmlndXJl
OjpOb3JtYWw7CisgICAgRm9udFZhcmlhbnROdW1lcmljU3BhY2luZyBzcGFjaW5nID0gRm9udFZh
cmlhbnROdW1lcmljU3BhY2luZzo6Tm9ybWFsOworICAgIEZvbnRWYXJpYW50TnVtZXJpY0ZyYWN0
aW9uIGZyYWN0aW9uID0gRm9udFZhcmlhbnROdW1lcmljRnJhY3Rpb246Ok5vcm1hbDsKKyAgICBG
b250VmFyaWFudE51bWVyaWNPcmRpbmFsIG9yZGluYWwgPSBGb250VmFyaWFudE51bWVyaWNPcmRp
bmFsOjpOb3JtYWw7CisgICAgRm9udFZhcmlhbnROdW1lcmljU2xhc2hlZFplcm8gc2xhc2hlZFpl
cm8gPSBGb250VmFyaWFudE51bWVyaWNTbGFzaGVkWmVybzo6Tm9ybWFsOworCisgICAgaWYgKGlz
PENTU1ZhbHVlTGlzdD4odmFsdWUpKSB7CisgICAgICAgIGZvciAoYXV0byYgaXRlbSA6IGRvd25j
YXN0PENTU1ZhbHVlTGlzdD4odmFsdWUpKSB7CisgICAgICAgICAgICBzd2l0Y2ggKGRvd25jYXN0
PENTU1ByaW1pdGl2ZVZhbHVlPihpdGVtLmdldCgpKS5nZXRWYWx1ZUlEKCkpIHsKKyAgICAgICAg
ICAgIGNhc2UgQ1NTVmFsdWVMaW5pbmdOdW1zOgorICAgICAgICAgICAgICAgIGZpZ3VyZSA9IEZv
bnRWYXJpYW50TnVtZXJpY0ZpZ3VyZTo6TGluaW5nTnVtYmVyczsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVPbGRzdHlsZU51bXM6CisgICAgICAgICAg
ICAgICAgZmlndXJlID0gRm9udFZhcmlhbnROdW1lcmljRmlndXJlOjpPbGRTdHlsZU51bWJlcnM7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVlUHJvcG9y
dGlvbmFsTnVtczoKKyAgICAgICAgICAgICAgICBzcGFjaW5nID0gRm9udFZhcmlhbnROdW1lcmlj
U3BhY2luZzo6UHJvcG9ydGlvbmFsTnVtYmVyczsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIGNhc2UgQ1NTVmFsdWVUYWJ1bGFyTnVtczoKKyAgICAgICAgICAgICAgICBzcGFj
aW5nID0gRm9udFZhcmlhbnROdW1lcmljU3BhY2luZzo6VGFidWxhck51bWJlcnM7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVlRGlhZ29uYWxGcmFjdGlv
bnM6CisgICAgICAgICAgICAgICAgZnJhY3Rpb24gPSBGb250VmFyaWFudE51bWVyaWNGcmFjdGlv
bjo6RGlhZ29uYWxGcmFjdGlvbnM7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICBjYXNlIENTU1ZhbHVlU3RhY2tlZEZyYWN0aW9uczoKKyAgICAgICAgICAgICAgICBmcmFjdGlv
biA9IEZvbnRWYXJpYW50TnVtZXJpY0ZyYWN0aW9uOjpTdGFja2VkRnJhY3Rpb25zOworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZU9yZGluYWw6CisgICAg
ICAgICAgICAgICAgb3JkaW5hbCA9IEZvbnRWYXJpYW50TnVtZXJpY09yZGluYWw6OlllczsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVTbGFzaGVkWmVy
bzoKKyAgICAgICAgICAgICAgICBzbGFzaGVkWmVybyA9IEZvbnRWYXJpYW50TnVtZXJpY1NsYXNo
ZWRaZXJvOjpZZXM7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfSBlbHNlIGlmIChpczxDU1NQ
cmltaXRpdmVWYWx1ZT4odmFsdWUpKQorICAgICAgICBBU1NFUlQoZG93bmNhc3Q8Q1NTUHJpbWl0
aXZlVmFsdWU+KHZhbHVlKS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb3JtYWwpOworCisgICAg
cmV0dXJuIEZvbnRWYXJpYW50TnVtZXJpY1ZhbHVlcyhmaWd1cmUsIHNwYWNpbmcsIGZyYWN0aW9u
LCBvcmRpbmFsLCBzbGFzaGVkWmVybyk7Cit9CisKK0ZvbnRWYXJpYW50RWFzdEFzaWFuVmFsdWVz
IGV4dHJhY3RGb250VmFyaWFudEVhc3RBc2lhbihDU1NWYWx1ZSYgdmFsdWUpCit7CisgICAgRm9u
dFZhcmlhbnRFYXN0QXNpYW5WYXJpYW50IHZhcmlhbnQgPSBGb250VmFyaWFudEVhc3RBc2lhblZh
cmlhbnQ6Ok5vcm1hbDsKKyAgICBGb250VmFyaWFudEVhc3RBc2lhbldpZHRoIHdpZHRoID0gRm9u
dFZhcmlhbnRFYXN0QXNpYW5XaWR0aDo6Tm9ybWFsOworICAgIEZvbnRWYXJpYW50RWFzdEFzaWFu
UnVieSBydWJ5ID0gRm9udFZhcmlhbnRFYXN0QXNpYW5SdWJ5OjpOb3JtYWw7CisKKyAgICBpZiAo
aXM8Q1NTVmFsdWVMaXN0Pih2YWx1ZSkpIHsKKyAgICAgICAgZm9yIChhdXRvJiBpdGVtIDogZG93
bmNhc3Q8Q1NTVmFsdWVMaXN0Pih2YWx1ZSkpIHsKKyAgICAgICAgICAgIHN3aXRjaCAoZG93bmNh
c3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KGl0ZW0uZ2V0KCkpLmdldFZhbHVlSUQoKSkgeworICAgICAg
ICAgICAgY2FzZSBDU1NWYWx1ZUppczc4OgorICAgICAgICAgICAgICAgIHZhcmlhbnQgPSBGb250
VmFyaWFudEVhc3RBc2lhblZhcmlhbnQ6Okppczc4OworICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZUppczgzOgorICAgICAgICAgICAgICAgIHZhcmlhbnQg
PSBGb250VmFyaWFudEVhc3RBc2lhblZhcmlhbnQ6OkppczgzOworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZUppczkwOgorICAgICAgICAgICAgICAgIHZh
cmlhbnQgPSBGb250VmFyaWFudEVhc3RBc2lhblZhcmlhbnQ6OkppczkwOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZUppczA0OgorICAgICAgICAgICAg
ICAgIHZhcmlhbnQgPSBGb250VmFyaWFudEVhc3RBc2lhblZhcmlhbnQ6OkppczA0OworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZVNpbXBsaWZpZWQ6Cisg
ICAgICAgICAgICAgICAgdmFyaWFudCA9IEZvbnRWYXJpYW50RWFzdEFzaWFuVmFyaWFudDo6U2lt
cGxpZmllZDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQ1NTVmFs
dWVUcmFkaXRpb25hbDoKKyAgICAgICAgICAgICAgICB2YXJpYW50ID0gRm9udFZhcmlhbnRFYXN0
QXNpYW5WYXJpYW50OjpUcmFkaXRpb25hbDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIGNhc2UgQ1NTVmFsdWVGdWxsV2lkdGg6CisgICAgICAgICAgICAgICAgd2lkdGggPSBG
b250VmFyaWFudEVhc3RBc2lhbldpZHRoOjpGdWxsOworICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZVByb3BvcnRpb25hbFdpZHRoOgorICAgICAgICAgICAg
ICAgIHdpZHRoID0gRm9udFZhcmlhbnRFYXN0QXNpYW5XaWR0aDo6UHJvcG9ydGlvbmFsOworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZVJ1Ynk6CisgICAg
ICAgICAgICAgICAgcnVieSA9IEZvbnRWYXJpYW50RWFzdEFzaWFuUnVieTo6WWVzOworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAoaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVl
KSkKKyAgICAgICAgQVNTRVJUKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkuZ2V0
VmFsdWVJRCgpID09IENTU1ZhbHVlTm9ybWFsKTsKKworICAgIHJldHVybiBGb250VmFyaWFudEVh
c3RBc2lhblZhbHVlcyh2YXJpYW50LCB3aWR0aCwgcnVieSk7Cit9CisKK1JlZjxDU1NWYWx1ZT4g
Y29tcHV0ZUZvbnRWYXJpYW50KGNvbnN0IEZvbnRWYXJpYW50U2V0dGluZ3MmIHZhcmlhbnRTZXR0
aW5ncykKK3sKKyAgICBpZiAodmFyaWFudFNldHRpbmdzLmlzQWxsTm9ybWFsKCkpCisgICAgICAg
IHJldHVybiBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShD
U1NWYWx1ZU5vcm1hbCk7CisKKyAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNw
YWNlU2VwYXJhdGVkKCk7CisKKyAgICBzd2l0Y2ggKHZhcmlhbnRTZXR0aW5ncy5jb21tb25MaWdh
dHVyZXMpIHsKKyAgICBjYXNlIEZvbnRWYXJpYW50TGlnYXR1cmVzOjpOb3JtYWw6CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgRm9udFZhcmlhbnRMaWdhdHVyZXM6OlllczoKKyAgICAgICAgbGlz
dC5nZXQoKS5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVy
VmFsdWUoQ1NTVmFsdWVDb21tb25MaWdhdHVyZXMpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBGb250VmFyaWFudExpZ2F0dXJlczo6Tm86CisgICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKENT
U1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTm9D
b21tb25MaWdhdHVyZXMpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgc3dpdGNoICh2
YXJpYW50U2V0dGluZ3MuZGlzY3JldGlvbmFyeUxpZ2F0dXJlcykgeworICAgIGNhc2UgRm9udFZh
cmlhbnRMaWdhdHVyZXM6Ok5vcm1hbDoKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBGb250VmFy
aWFudExpZ2F0dXJlczo6WWVzOgorICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChDU1NWYWx1ZVBv
b2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZURpc2NyZXRpb25h
cnlMaWdhdHVyZXMpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBGb250VmFyaWFudExpZ2F0
dXJlczo6Tm86CisgICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xl
dG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTm9EaXNjcmV0aW9uYXJ5TGlnYXR1
cmVzKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHN3aXRjaCAodmFyaWFudFNldHRp
bmdzLmhpc3RvcmljYWxMaWdhdHVyZXMpIHsKKyAgICBjYXNlIEZvbnRWYXJpYW50TGlnYXR1cmVz
OjpOb3JtYWw6CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRm9udFZhcmlhbnRMaWdhdHVyZXM6
OlllczoKKyAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24o
KS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVIaXN0b3JpY2FsTGlnYXR1cmVzKSk7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgRm9udFZhcmlhbnRMaWdhdHVyZXM6Ok5vOgorICAgICAg
ICBsaXN0LmdldCgpLmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50
aWZpZXJWYWx1ZShDU1NWYWx1ZU5vSGlzdG9yaWNhbExpZ2F0dXJlcykpOworICAgICAgICBicmVh
azsKKyAgICB9CisKKyAgICBzd2l0Y2ggKHZhcmlhbnRTZXR0aW5ncy5jb250ZXh0dWFsQWx0ZXJu
YXRlcykgeworICAgIGNhc2UgRm9udFZhcmlhbnRMaWdhdHVyZXM6Ok5vcm1hbDoKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBGb250VmFyaWFudExpZ2F0dXJlczo6WWVzOgorICAgICAgICBsaXN0
LmdldCgpLmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJW
YWx1ZShDU1NWYWx1ZUNvbnRleHR1YWwpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBGb250
VmFyaWFudExpZ2F0dXJlczo6Tm86CisgICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKENTU1ZhbHVl
UG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTm9Db250ZXh0
dWFsKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHN3aXRjaCAodmFyaWFudFNldHRp
bmdzLnBvc2l0aW9uKSB7CisgICAgY2FzZSBGb250VmFyaWFudFBvc2l0aW9uOjpOb3JtYWw6Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgRm9udFZhcmlhbnRQb3NpdGlvbjo6U3Vic2NyaXB0Ogor
ICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0
ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZVN1YikpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IEZvbnRWYXJpYW50UG9zaXRpb246OlN1cGVyc2NyaXB0OgorICAgICAgICBsaXN0LmdldCgpLmFw
cGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NW
YWx1ZVN1cGVyKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHN3aXRjaCAodmFyaWFu
dFNldHRpbmdzLmNhcHMpIHsKKyAgICBjYXNlIEZvbnRWYXJpYW50Q2Fwczo6Tm9ybWFsOgorICAg
ICAgICBicmVhazsKKyAgICBjYXNlIEZvbnRWYXJpYW50Q2Fwczo6U21hbGw6CisgICAgICAgIGxp
c3QuZ2V0KCkuYXBwZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmll
clZhbHVlKENTU1ZhbHVlU21hbGxDYXBzKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRm9u
dFZhcmlhbnRDYXBzOjpBbGxTbWFsbDoKKyAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoQ1NTVmFs
dWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVBbGxTbWFs
bENhcHMpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBGb250VmFyaWFudENhcHM6OlBldGl0
ZToKKyAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5j
cmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVQZXRpdGVDYXBzKSk7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgRm9udFZhcmlhbnRDYXBzOjpBbGxQZXRpdGU6CisgICAgICAgIGxpc3QuZ2V0
KCkuYXBwZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVl
KENTU1ZhbHVlQWxsUGV0aXRlQ2FwcykpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEZvbnRW
YXJpYW50Q2Fwczo6VW5pY2FzZToKKyAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoQ1NTVmFsdWVQ
b29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVVbmljYXNlKSk7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRm9udFZhcmlhbnRDYXBzOjpUaXRsaW5nOgorICAg
ICAgICBsaXN0LmdldCgpLmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlk
ZW50aWZpZXJWYWx1ZShDU1NWYWx1ZVRpdGxpbmdDYXBzKSk7CisgICAgICAgIGJyZWFrOworICAg
IH0KKworICAgIHN3aXRjaCAodmFyaWFudFNldHRpbmdzLm51bWVyaWNGaWd1cmUpIHsKKyAgICBj
YXNlIEZvbnRWYXJpYW50TnVtZXJpY0ZpZ3VyZTo6Tm9ybWFsOgorICAgICAgICBicmVhazsKKyAg
ICBjYXNlIEZvbnRWYXJpYW50TnVtZXJpY0ZpZ3VyZTo6TGluaW5nTnVtYmVyczoKKyAgICAgICAg
bGlzdC5nZXQoKS5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlm
aWVyVmFsdWUoQ1NTVmFsdWVMaW5pbmdOdW1zKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
Rm9udFZhcmlhbnROdW1lcmljRmlndXJlOjpPbGRTdHlsZU51bWJlcnM6CisgICAgICAgIGxpc3Qu
Z2V0KCkuYXBwZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZh
bHVlKENTU1ZhbHVlT2xkc3R5bGVOdW1zKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAg
IHN3aXRjaCAodmFyaWFudFNldHRpbmdzLm51bWVyaWNTcGFjaW5nKSB7CisgICAgY2FzZSBGb250
VmFyaWFudE51bWVyaWNTcGFjaW5nOjpOb3JtYWw6CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
Rm9udFZhcmlhbnROdW1lcmljU3BhY2luZzo6UHJvcG9ydGlvbmFsTnVtYmVyczoKKyAgICAgICAg
bGlzdC5nZXQoKS5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlm
aWVyVmFsdWUoQ1NTVmFsdWVQcm9wb3J0aW9uYWxOdW1zKSk7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgRm9udFZhcmlhbnROdW1lcmljU3BhY2luZzo6VGFidWxhck51bWJlcnM6CisgICAgICAg
IGxpc3QuZ2V0KCkuYXBwZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRp
ZmllclZhbHVlKENTU1ZhbHVlVGFidWxhck51bXMpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQor
CisgICAgc3dpdGNoICh2YXJpYW50U2V0dGluZ3MubnVtZXJpY0ZyYWN0aW9uKSB7CisgICAgY2Fz
ZSBGb250VmFyaWFudE51bWVyaWNGcmFjdGlvbjo6Tm9ybWFsOgorICAgICAgICBicmVhazsKKyAg
ICBjYXNlIEZvbnRWYXJpYW50TnVtZXJpY0ZyYWN0aW9uOjpEaWFnb25hbEZyYWN0aW9uczoKKyAg
ICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJ
ZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVEaWFnb25hbEZyYWN0aW9ucykpOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIEZvbnRWYXJpYW50TnVtZXJpY0ZyYWN0aW9uOjpTdGFja2VkRnJhY3Rpb25z
OgorICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNy
ZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZVN0YWNrZWRGcmFjdGlvbnMpKTsKKyAgICAgICAg
YnJlYWs7CisgICAgfQorCisgICAgc3dpdGNoICh2YXJpYW50U2V0dGluZ3MubnVtZXJpY09yZGlu
YWwpIHsKKyAgICBjYXNlIEZvbnRWYXJpYW50TnVtZXJpY09yZGluYWw6Ok5vcm1hbDoKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBGb250VmFyaWFudE51bWVyaWNPcmRpbmFsOjpZZXM6CisgICAg
ICAgIGxpc3QuZ2V0KCkuYXBwZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRl
bnRpZmllclZhbHVlKENTU1ZhbHVlT3JkaW5hbCkpOworICAgICAgICBicmVhazsKKyAgICB9CisK
KyAgICBzd2l0Y2ggKHZhcmlhbnRTZXR0aW5ncy5udW1lcmljU2xhc2hlZFplcm8pIHsKKyAgICBj
YXNlIEZvbnRWYXJpYW50TnVtZXJpY1NsYXNoZWRaZXJvOjpOb3JtYWw6CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgRm9udFZhcmlhbnROdW1lcmljU2xhc2hlZFplcm86OlllczoKKyAgICAgICAg
bGlzdC5nZXQoKS5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlm
aWVyVmFsdWUoQ1NTVmFsdWVTbGFzaGVkWmVybykpOworICAgICAgICBicmVhazsKKyAgICB9CisK
KyAgICBzd2l0Y2ggKHZhcmlhbnRTZXR0aW5ncy5hbHRlcm5hdGVzKSB7CisgICAgY2FzZSBGb250
VmFyaWFudEFsdGVybmF0ZXM6Ok5vcm1hbDoKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBGb250
VmFyaWFudEFsdGVybmF0ZXM6Okhpc3RvcmljYWxGb3JtczoKKyAgICAgICAgbGlzdC5nZXQoKS5h
cHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NT
VmFsdWVIaXN0b3JpY2FsRm9ybXMpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgc3dp
dGNoICh2YXJpYW50U2V0dGluZ3MuZWFzdEFzaWFuVmFyaWFudCkgeworICAgIGNhc2UgRm9udFZh
cmlhbnRFYXN0QXNpYW5WYXJpYW50OjpOb3JtYWw6CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
Rm9udFZhcmlhbnRFYXN0QXNpYW5WYXJpYW50OjpKaXM3ODoKKyAgICAgICAgbGlzdC5nZXQoKS5h
cHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NT
VmFsdWVKaXM3OCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEZvbnRWYXJpYW50RWFzdEFz
aWFuVmFyaWFudDo6SmlzODM6CisgICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKENTU1ZhbHVlUG9v
bDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlSmlzODMpKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBGb250VmFyaWFudEVhc3RBc2lhblZhcmlhbnQ6Okppczkw
OgorICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNy
ZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUppczkwKSk7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgRm9udFZhcmlhbnRFYXN0QXNpYW5WYXJpYW50OjpKaXMwNDoKKyAgICAgICAgbGlzdC5n
ZXQoKS5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFs
dWUoQ1NTVmFsdWVKaXMwNCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEZvbnRWYXJpYW50
RWFzdEFzaWFuVmFyaWFudDo6U2ltcGxpZmllZDoKKyAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQo
Q1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVT
aW1wbGlmaWVkKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRm9udFZhcmlhbnRFYXN0QXNp
YW5WYXJpYW50OjpUcmFkaXRpb25hbDoKKyAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoQ1NTVmFs
dWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVUcmFkaXRp
b25hbCkpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBzd2l0Y2ggKHZhcmlhbnRTZXR0
aW5ncy5lYXN0QXNpYW5XaWR0aCkgeworICAgIGNhc2UgRm9udFZhcmlhbnRFYXN0QXNpYW5XaWR0
aDo6Tm9ybWFsOgorICAgICAgICBicmVhazsKKyAgICBjYXNlIEZvbnRWYXJpYW50RWFzdEFzaWFu
V2lkdGg6OkZ1bGw6CisgICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKENTU1ZhbHVlUG9vbDo6c2lu
Z2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlRnVsbFdpZHRoKSk7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgRm9udFZhcmlhbnRFYXN0QXNpYW5XaWR0aDo6UHJvcG9ydGlv
bmFsOgorICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigp
LmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZVByb3BvcnRpb25hbFdpZHRoKSk7CisgICAg
ICAgIGJyZWFrOworICAgIH0KKworICAgIHN3aXRjaCAodmFyaWFudFNldHRpbmdzLmVhc3RBc2lh
blJ1YnkpIHsKKyAgICBjYXNlIEZvbnRWYXJpYW50RWFzdEFzaWFuUnVieTo6Tm9ybWFsOgorICAg
ICAgICBicmVhazsKKyAgICBjYXNlIEZvbnRWYXJpYW50RWFzdEFzaWFuUnVieTo6WWVzOgorICAg
ICAgICBsaXN0LmdldCgpLmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlk
ZW50aWZpZXJWYWx1ZShDU1NWYWx1ZVJ1YnkpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisg
ICAgcmV0dXJuIFdURk1vdmUobGlzdCk7Cit9CisKK30KKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL0ZvbnRWYXJpYW50QnVpbGRlci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRW
YXJpYW50QnVpbGRlci5oCmluZGV4IGZhODI0MjlmZGE2ODI0NjY5YTE1MDBhNmU1Y2I4ZjM0NDUw
YTY1OTguLmQxYjI2NWQ0ODkyNWFjMzAzMzFkNDBjOTIwYTE3YzJmOTg5MGE1MmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250VmFyaWFudEJ1aWxkZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvRm9udFZhcmlhbnRCdWlsZGVyLmgKQEAgLTI2LDE3MCArMjYsMjEgQEAKICNp
Zm5kZWYgRm9udFZhcmlhbnRCdWlsZGVyX2gKICNkZWZpbmUgRm9udFZhcmlhbnRCdWlsZGVyX2gK
IAotbmFtZXNwYWNlIFdlYkNvcmUgewotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWlubGluZSB2
b2lkIGFwcGx5VmFsdWVGb250VmFyaWFudExpZ2F0dXJlcyhUJiByZWNlaXZlciwgQ1NTVmFsdWUm
IHZhbHVlKQotewotICAgIEZvbnRWYXJpYW50TGlnYXR1cmVzIGNvbW1vbiA9IEZvbnRWYXJpYW50
TGlnYXR1cmVzOjpOb3JtYWw7Ci0gICAgRm9udFZhcmlhbnRMaWdhdHVyZXMgZGlzY3JldGlvbmFy
eSA9IEZvbnRWYXJpYW50TGlnYXR1cmVzOjpOb3JtYWw7Ci0gICAgRm9udFZhcmlhbnRMaWdhdHVy
ZXMgaGlzdG9yaWNhbCA9IEZvbnRWYXJpYW50TGlnYXR1cmVzOjpOb3JtYWw7Ci0gICAgRm9udFZh
cmlhbnRMaWdhdHVyZXMgY29udGV4dHVhbEFsdGVybmF0ZXMgPSBGb250VmFyaWFudExpZ2F0dXJl
czo6Tm9ybWFsOwotCi0gICAgaWYgKGlzPENTU1ZhbHVlTGlzdD4odmFsdWUpKSB7Ci0gICAgICAg
IGZvciAoYXV0byYgaXRlbSA6IGRvd25jYXN0PENTU1ZhbHVlTGlzdD4odmFsdWUpKSB7Ci0gICAg
ICAgICAgICBzd2l0Y2ggKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPihpdGVtLmdldCgpKS5n
ZXRWYWx1ZUlEKCkpIHsKLSAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVOb0NvbW1vbkxpZ2F0dXJl
czoKLSAgICAgICAgICAgICAgICBjb21tb24gPSBGb250VmFyaWFudExpZ2F0dXJlczo6Tm87Ci0g
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIENTU1ZhbHVlQ29tbW9uTGln
YXR1cmVzOgotICAgICAgICAgICAgICAgIGNvbW1vbiA9IEZvbnRWYXJpYW50TGlnYXR1cmVzOjpZ
ZXM7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIENTU1ZhbHVlTm9E
aXNjcmV0aW9uYXJ5TGlnYXR1cmVzOgotICAgICAgICAgICAgICAgIGRpc2NyZXRpb25hcnkgPSBG
b250VmFyaWFudExpZ2F0dXJlczo6Tm87Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICBjYXNlIENTU1ZhbHVlRGlzY3JldGlvbmFyeUxpZ2F0dXJlczoKLSAgICAgICAgICAgICAg
ICBkaXNjcmV0aW9uYXJ5ID0gRm9udFZhcmlhbnRMaWdhdHVyZXM6OlllczsKLSAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVOb0hpc3RvcmljYWxMaWdhdHVy
ZXM6Ci0gICAgICAgICAgICAgICAgaGlzdG9yaWNhbCA9IEZvbnRWYXJpYW50TGlnYXR1cmVzOjpO
bzsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVIaXN0
b3JpY2FsTGlnYXR1cmVzOgotICAgICAgICAgICAgICAgIGhpc3RvcmljYWwgPSBGb250VmFyaWFu
dExpZ2F0dXJlczo6WWVzOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2Fz
ZSBDU1NWYWx1ZUNvbnRleHR1YWw6Ci0gICAgICAgICAgICAgICAgY29udGV4dHVhbEFsdGVybmF0
ZXMgPSBGb250VmFyaWFudExpZ2F0dXJlczo6WWVzOwotICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZU5vQ29udGV4dHVhbDoKLSAgICAgICAgICAgICAgICBj
b250ZXh0dWFsQWx0ZXJuYXRlcyA9IEZvbnRWYXJpYW50TGlnYXR1cmVzOjpObzsKLSAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgaWYgKGlzPENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkp
IHsKLSAgICAgICAgc3dpdGNoIChkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLmdl
dFZhbHVlSUQoKSkgewotICAgICAgICBjYXNlIENTU1ZhbHVlTm9ybWFsOgotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIGNhc2UgQ1NTVmFsdWVOb25lOgotICAgICAgICAgICAgY29tbW9uID0g
Rm9udFZhcmlhbnRMaWdhdHVyZXM6Ok5vOwotICAgICAgICAgICAgZGlzY3JldGlvbmFyeSA9IEZv
bnRWYXJpYW50TGlnYXR1cmVzOjpObzsKLSAgICAgICAgICAgIGhpc3RvcmljYWwgPSBGb250VmFy
aWFudExpZ2F0dXJlczo6Tm87Ci0gICAgICAgICAgICBjb250ZXh0dWFsQWx0ZXJuYXRlcyA9IEZv
bnRWYXJpYW50TGlnYXR1cmVzOjpObzsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZh
dWx0OgotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHJlY2VpdmVyLnNldFZhcmlhbnRDb21tb25MaWdh
dHVyZXMoY29tbW9uKTsKLSAgICByZWNlaXZlci5zZXRWYXJpYW50RGlzY3JldGlvbmFyeUxpZ2F0
dXJlcyhkaXNjcmV0aW9uYXJ5KTsKLSAgICByZWNlaXZlci5zZXRWYXJpYW50SGlzdG9yaWNhbExp
Z2F0dXJlcyhoaXN0b3JpY2FsKTsKLSAgICByZWNlaXZlci5zZXRWYXJpYW50Q29udGV4dHVhbEFs
dGVybmF0ZXMoY29udGV4dHVhbEFsdGVybmF0ZXMpOwotfQorI2luY2x1ZGUgPHd0Zi9SZWYuaD4K
IAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgdm9pZCBhcHBseVZhbHVlRm9udFZhcmlh
bnROdW1lcmljKFQmIHJlY2VpdmVyLCBDU1NWYWx1ZSYgdmFsdWUpCi17Ci0gICAgRm9udFZhcmlh
bnROdW1lcmljRmlndXJlIGZpZ3VyZSA9IEZvbnRWYXJpYW50TnVtZXJpY0ZpZ3VyZTo6Tm9ybWFs
OwotICAgIEZvbnRWYXJpYW50TnVtZXJpY1NwYWNpbmcgc3BhY2luZyA9IEZvbnRWYXJpYW50TnVt
ZXJpY1NwYWNpbmc6Ok5vcm1hbDsKLSAgICBGb250VmFyaWFudE51bWVyaWNGcmFjdGlvbiBmcmFj
dGlvbiA9IEZvbnRWYXJpYW50TnVtZXJpY0ZyYWN0aW9uOjpOb3JtYWw7Ci0gICAgRm9udFZhcmlh
bnROdW1lcmljT3JkaW5hbCBvcmRpbmFsID0gRm9udFZhcmlhbnROdW1lcmljT3JkaW5hbDo6Tm9y
bWFsOwotICAgIEZvbnRWYXJpYW50TnVtZXJpY1NsYXNoZWRaZXJvIHNsYXNoZWRaZXJvID0gRm9u
dFZhcmlhbnROdW1lcmljU2xhc2hlZFplcm86Ok5vcm1hbDsKLQotICAgIGlmIChpczxDU1NWYWx1
ZUxpc3Q+KHZhbHVlKSkgewotICAgICAgICBmb3IgKGF1dG8mIGl0ZW0gOiBkb3duY2FzdDxDU1NW
YWx1ZUxpc3Q+KHZhbHVlKSkgewotICAgICAgICAgICAgc3dpdGNoIChkb3duY2FzdDxDU1NQcmlt
aXRpdmVWYWx1ZT4oaXRlbS5nZXQoKSkuZ2V0VmFsdWVJRCgpKSB7Ci0gICAgICAgICAgICBjYXNl
IENTU1ZhbHVlTGluaW5nTnVtczoKLSAgICAgICAgICAgICAgICBmaWd1cmUgPSBGb250VmFyaWFu
dE51bWVyaWNGaWd1cmU6OkxpbmluZ051bWJlcnM7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICBjYXNlIENTU1ZhbHVlT2xkc3R5bGVOdW1zOgotICAgICAgICAgICAgICAgIGZp
Z3VyZSA9IEZvbnRWYXJpYW50TnVtZXJpY0ZpZ3VyZTo6T2xkU3R5bGVOdW1iZXJzOwotICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZVByb3BvcnRpb25hbE51
bXM6Ci0gICAgICAgICAgICAgICAgc3BhY2luZyA9IEZvbnRWYXJpYW50TnVtZXJpY1NwYWNpbmc6
OlByb3BvcnRpb25hbE51bWJlcnM7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICBjYXNlIENTU1ZhbHVlVGFidWxhck51bXM6Ci0gICAgICAgICAgICAgICAgc3BhY2luZyA9IEZv
bnRWYXJpYW50TnVtZXJpY1NwYWNpbmc6OlRhYnVsYXJOdW1iZXJzOwotICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZURpYWdvbmFsRnJhY3Rpb25zOgotICAg
ICAgICAgICAgICAgIGZyYWN0aW9uID0gRm9udFZhcmlhbnROdW1lcmljRnJhY3Rpb246OkRpYWdv
bmFsRnJhY3Rpb25zOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBD
U1NWYWx1ZVN0YWNrZWRGcmFjdGlvbnM6Ci0gICAgICAgICAgICAgICAgZnJhY3Rpb24gPSBGb250
VmFyaWFudE51bWVyaWNGcmFjdGlvbjo6U3RhY2tlZEZyYWN0aW9uczsKLSAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVPcmRpbmFsOgotICAgICAgICAgICAg
ICAgIG9yZGluYWwgPSBGb250VmFyaWFudE51bWVyaWNPcmRpbmFsOjpZZXM7Ci0gICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIENTU1ZhbHVlU2xhc2hlZFplcm86Ci0gICAg
ICAgICAgICAgICAgc2xhc2hlZFplcm8gPSBGb250VmFyaWFudE51bWVyaWNTbGFzaGVkWmVybzo6
WWVzOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAg
ICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0gZWxzZSBpZiAoaXM8Q1NTUHJpbWl0aXZl
VmFsdWU+KHZhbHVlKSkKLSAgICAgICAgQVNTRVJUKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVl
Pih2YWx1ZSkuZ2V0VmFsdWVJRCgpID09IENTU1ZhbHVlTm9ybWFsKTsKLQotICAgIHJlY2VpdmVy
LnNldFZhcmlhbnROdW1lcmljRmlndXJlKGZpZ3VyZSk7Ci0gICAgcmVjZWl2ZXIuc2V0VmFyaWFu
dE51bWVyaWNTcGFjaW5nKHNwYWNpbmcpOwotICAgIHJlY2VpdmVyLnNldFZhcmlhbnROdW1lcmlj
RnJhY3Rpb24oZnJhY3Rpb24pOwotICAgIHJlY2VpdmVyLnNldFZhcmlhbnROdW1lcmljT3JkaW5h
bChvcmRpbmFsKTsKLSAgICByZWNlaXZlci5zZXRWYXJpYW50TnVtZXJpY1NsYXNoZWRaZXJvKHNs
YXNoZWRaZXJvKTsKLX0KK25hbWVzcGFjZSBXZWJDb3JlIHsKIAotdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+Ci1pbmxpbmUgdm9pZCBhcHBseVZhbHVlRm9udFZhcmlhbnRFYXN0QXNpYW4oVCYgcmVjZWl2
ZXIsIENTU1ZhbHVlJiB2YWx1ZSkKLXsKLSAgICBGb250VmFyaWFudEVhc3RBc2lhblZhcmlhbnQg
dmFyaWFudCA9IEZvbnRWYXJpYW50RWFzdEFzaWFuVmFyaWFudDo6Tm9ybWFsOwotICAgIEZvbnRW
YXJpYW50RWFzdEFzaWFuV2lkdGggd2lkdGggPSBGb250VmFyaWFudEVhc3RBc2lhbldpZHRoOjpO
b3JtYWw7Ci0gICAgRm9udFZhcmlhbnRFYXN0QXNpYW5SdWJ5IHJ1YnkgPSBGb250VmFyaWFudEVh
c3RBc2lhblJ1Ynk6Ok5vcm1hbDsKK2NsYXNzIENTU1ZhbHVlOworc3RydWN0IEZvbnRWYXJpYW50
U2V0dGluZ3M7CitzdHJ1Y3QgRm9udFZhcmlhbnRMaWdhdHVyZXNWYWx1ZXM7CitzdHJ1Y3QgRm9u
dFZhcmlhbnROdW1lcmljVmFsdWVzOworc3RydWN0IEZvbnRWYXJpYW50RWFzdEFzaWFuVmFsdWVz
OwogCi0gICAgaWYgKGlzPENTU1ZhbHVlTGlzdD4odmFsdWUpKSB7Ci0gICAgICAgIGZvciAoYXV0
byYgaXRlbSA6IGRvd25jYXN0PENTU1ZhbHVlTGlzdD4odmFsdWUpKSB7Ci0gICAgICAgICAgICBz
d2l0Y2ggKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPihpdGVtLmdldCgpKS5nZXRWYWx1ZUlE
KCkpIHsKLSAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVKaXM3ODoKLSAgICAgICAgICAgICAgICB2
YXJpYW50ID0gRm9udFZhcmlhbnRFYXN0QXNpYW5WYXJpYW50OjpKaXM3ODsKLSAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVKaXM4MzoKLSAgICAgICAgICAg
ICAgICB2YXJpYW50ID0gRm9udFZhcmlhbnRFYXN0QXNpYW5WYXJpYW50OjpKaXM4MzsKLSAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVKaXM5MDoKLSAgICAg
ICAgICAgICAgICB2YXJpYW50ID0gRm9udFZhcmlhbnRFYXN0QXNpYW5WYXJpYW50OjpKaXM5MDsK
LSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVKaXMwNDoK
LSAgICAgICAgICAgICAgICB2YXJpYW50ID0gRm9udFZhcmlhbnRFYXN0QXNpYW5WYXJpYW50OjpK
aXMwNDsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVT
aW1wbGlmaWVkOgotICAgICAgICAgICAgICAgIHZhcmlhbnQgPSBGb250VmFyaWFudEVhc3RBc2lh
blZhcmlhbnQ6OlNpbXBsaWZpZWQ7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICBjYXNlIENTU1ZhbHVlVHJhZGl0aW9uYWw6Ci0gICAgICAgICAgICAgICAgdmFyaWFudCA9IEZv
bnRWYXJpYW50RWFzdEFzaWFuVmFyaWFudDo6VHJhZGl0aW9uYWw7Ci0gICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICBjYXNlIENTU1ZhbHVlRnVsbFdpZHRoOgotICAgICAgICAgICAg
ICAgIHdpZHRoID0gRm9udFZhcmlhbnRFYXN0QXNpYW5XaWR0aDo6RnVsbDsKLSAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVQcm9wb3J0aW9uYWxXaWR0aDoK
LSAgICAgICAgICAgICAgICB3aWR0aCA9IEZvbnRWYXJpYW50RWFzdEFzaWFuV2lkdGg6OlByb3Bv
cnRpb25hbDsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgQ1NTVmFs
dWVSdWJ5OgotICAgICAgICAgICAgICAgIHJ1YnkgPSBGb250VmFyaWFudEVhc3RBc2lhblJ1Ynk6
OlllczsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAg
ICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgaWYgKGlzPENTU1ByaW1pdGl2
ZVZhbHVlPih2YWx1ZSkpCi0gICAgICAgIEFTU0VSVChkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1
ZT4odmFsdWUpLmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vcm1hbCk7CitGb250VmFyaWFudExp
Z2F0dXJlc1ZhbHVlcyBleHRyYWN0Rm9udFZhcmlhbnRMaWdhdHVyZXMoQ1NTVmFsdWUmKTsKK0Zv
bnRWYXJpYW50TnVtZXJpY1ZhbHVlcyBleHRyYWN0Rm9udFZhcmlhbnROdW1lcmljKENTU1ZhbHVl
Jik7CitGb250VmFyaWFudEVhc3RBc2lhblZhbHVlcyBleHRyYWN0Rm9udFZhcmlhbnRFYXN0QXNp
YW4oQ1NTVmFsdWUmKTsKIAotICAgIHJlY2VpdmVyLnNldFZhcmlhbnRFYXN0QXNpYW5WYXJpYW50
KHZhcmlhbnQpOwotICAgIHJlY2VpdmVyLnNldFZhcmlhbnRFYXN0QXNpYW5XaWR0aCh3aWR0aCk7
Ci0gICAgcmVjZWl2ZXIuc2V0VmFyaWFudEVhc3RBc2lhblJ1YnkocnVieSk7Ci19CitSZWY8Q1NT
VmFsdWU+IGNvbXB1dGVGb250VmFyaWFudChjb25zdCBGb250VmFyaWFudFNldHRpbmdzJik7CiAK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckN1c3RvbS5o
IGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckN1c3RvbS5oCmluZGV4IDVkNzU2ZjQy
Y2I3ZTA2MGY0YzBmNTdkYWQxYjVkMjliM2VjM2I5ODIuLjRmYmNmMmVlNWZkZWFlMDVjMTgzZmU4
MWZiNmE3ZDI3ODI1NjEzM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1
aWxkZXJDdXN0b20uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ3VzdG9t
LmgKQEAgLTE0MDcsNyArMTQwNywxMSBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206
OmFwcGx5SW5pdGlhbEZvbnRWYXJpYW50TGlnYXR1cmVzKFN0eWxlUmVzb2x2ZXImCiBpbmxpbmUg
dm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVGb250VmFyaWFudExpZ2F0dXJlcyhT
dHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgYXV0
byBmb250RGVzY3JpcHRpb24gPSBzdHlsZVJlc29sdmVyLmZvbnREZXNjcmlwdGlvbigpOwotICAg
IFdlYkNvcmU6OmFwcGx5VmFsdWVGb250VmFyaWFudExpZ2F0dXJlcyhmb250RGVzY3JpcHRpb24s
IHZhbHVlKTsKKyAgICBhdXRvIHZhcmlhbnRMaWdhdHVyZXMgPSBleHRyYWN0Rm9udFZhcmlhbnRM
aWdhdHVyZXModmFsdWUpOworICAgIGZvbnREZXNjcmlwdGlvbi5zZXRWYXJpYW50Q29tbW9uTGln
YXR1cmVzKHZhcmlhbnRMaWdhdHVyZXMuY29tbW9uTGlnYXR1cmVzKTsKKyAgICBmb250RGVzY3Jp
cHRpb24uc2V0VmFyaWFudERpc2NyZXRpb25hcnlMaWdhdHVyZXModmFyaWFudExpZ2F0dXJlcy5k
aXNjcmV0aW9uYXJ5TGlnYXR1cmVzKTsKKyAgICBmb250RGVzY3JpcHRpb24uc2V0VmFyaWFudEhp
c3RvcmljYWxMaWdhdHVyZXModmFyaWFudExpZ2F0dXJlcy5oaXN0b3JpY2FsTGlnYXR1cmVzKTsK
KyAgICBmb250RGVzY3JpcHRpb24uc2V0VmFyaWFudENvbnRleHR1YWxBbHRlcm5hdGVzKHZhcmlh
bnRMaWdhdHVyZXMuY29udGV4dHVhbEFsdGVybmF0ZXMpOwogICAgIHN0eWxlUmVzb2x2ZXIuc2V0
Rm9udERlc2NyaXB0aW9uKGZvbnREZXNjcmlwdGlvbik7CiB9CiAKQEAgLTE0MzYsNyArMTQ0MCwx
MiBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5pdGlhbEZvbnRWYXJp
YW50TnVtZXJpYyhTdHlsZVJlc29sdmVyJiBzdAogaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3Vz
dG9tOjphcHBseVZhbHVlRm9udFZhcmlhbnROdW1lcmljKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVz
b2x2ZXIsIENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBhdXRvIGZvbnREZXNjcmlwdGlvbiA9IHN0
eWxlUmVzb2x2ZXIuZm9udERlc2NyaXB0aW9uKCk7Ci0gICAgV2ViQ29yZTo6YXBwbHlWYWx1ZUZv
bnRWYXJpYW50TnVtZXJpYyhmb250RGVzY3JpcHRpb24sIHZhbHVlKTsKKyAgICBhdXRvIHZhcmlh
bnROdW1lcmljID0gZXh0cmFjdEZvbnRWYXJpYW50TnVtZXJpYyh2YWx1ZSk7CisgICAgZm9udERl
c2NyaXB0aW9uLnNldFZhcmlhbnROdW1lcmljRmlndXJlKHZhcmlhbnROdW1lcmljLmZpZ3VyZSk7
CisgICAgZm9udERlc2NyaXB0aW9uLnNldFZhcmlhbnROdW1lcmljU3BhY2luZyh2YXJpYW50TnVt
ZXJpYy5zcGFjaW5nKTsKKyAgICBmb250RGVzY3JpcHRpb24uc2V0VmFyaWFudE51bWVyaWNGcmFj
dGlvbih2YXJpYW50TnVtZXJpYy5mcmFjdGlvbik7CisgICAgZm9udERlc2NyaXB0aW9uLnNldFZh
cmlhbnROdW1lcmljT3JkaW5hbCh2YXJpYW50TnVtZXJpYy5vcmRpbmFsKTsKKyAgICBmb250RGVz
Y3JpcHRpb24uc2V0VmFyaWFudE51bWVyaWNTbGFzaGVkWmVybyh2YXJpYW50TnVtZXJpYy5zbGFz
aGVkWmVybyk7CiAgICAgc3R5bGVSZXNvbHZlci5zZXRGb250RGVzY3JpcHRpb24oZm9udERlc2Ny
aXB0aW9uKTsKIH0KIApAQCAtMTQ2MSw3ICsxNDcwLDEwIEBAIGlubGluZSB2b2lkIFN0eWxlQnVp
bGRlckN1c3RvbTo6YXBwbHlJbml0aWFsRm9udFZhcmlhbnRFYXN0QXNpYW4oU3R5bGVSZXNvbHZl
ciYKIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUZvbnRWYXJpYW50
RWFzdEFzaWFuKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIENTU1ZhbHVlJiB2YWx1ZSkK
IHsKICAgICBhdXRvIGZvbnREZXNjcmlwdGlvbiA9IHN0eWxlUmVzb2x2ZXIuZm9udERlc2NyaXB0
aW9uKCk7Ci0gICAgV2ViQ29yZTo6YXBwbHlWYWx1ZUZvbnRWYXJpYW50RWFzdEFzaWFuKGZvbnRE
ZXNjcmlwdGlvbiwgdmFsdWUpOworICAgIGF1dG8gdmFyaWFudEVhc3RBc2lhbiA9IGV4dHJhY3RG
b250VmFyaWFudEVhc3RBc2lhbih2YWx1ZSk7CisgICAgZm9udERlc2NyaXB0aW9uLnNldFZhcmlh
bnRFYXN0QXNpYW5WYXJpYW50KHZhcmlhbnRFYXN0QXNpYW4udmFyaWFudCk7CisgICAgZm9udERl
c2NyaXB0aW9uLnNldFZhcmlhbnRFYXN0QXNpYW5XaWR0aCh2YXJpYW50RWFzdEFzaWFuLndpZHRo
KTsKKyAgICBmb250RGVzY3JpcHRpb24uc2V0VmFyaWFudEVhc3RBc2lhblJ1YnkodmFyaWFudEVh
c3RBc2lhbi5ydWJ5KTsKICAgICBzdHlsZVJlc29sdmVyLnNldEZvbnREZXNjcmlwdGlvbihmb250
RGVzY3JpcHRpb24pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L1RleHRGbGFncy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0RmxhZ3Mu
aAppbmRleCAwYzI4MmZlMDJlODZjNWI5N2ZkZTcxZGIwMDc4ODEyZWMyZTA3NDVmLi41MDliNTc5
Zjg3MTUxMDcxZWU3YmQ1NTgwMmEyMzIzYzk5ZmIxMWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L1RleHRGbGFncy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvVGV4dEZsYWdzLmgKQEAgLTI0OCw2ICsyNDgsNjMgQEAgc3RydWN0IEZvbnRWYXJp
YW50U2V0dGluZ3MgewogICAgIEZvbnRWYXJpYW50RWFzdEFzaWFuUnVieSBlYXN0QXNpYW5SdWJ5
OwogfTsKIAorc3RydWN0IEZvbnRWYXJpYW50TGlnYXR1cmVzVmFsdWVzIHsKKyAgICBGb250VmFy
aWFudExpZ2F0dXJlc1ZhbHVlcygKKyAgICAgICAgRm9udFZhcmlhbnRMaWdhdHVyZXMgY29tbW9u
TGlnYXR1cmVzLAorICAgICAgICBGb250VmFyaWFudExpZ2F0dXJlcyBkaXNjcmV0aW9uYXJ5TGln
YXR1cmVzLAorICAgICAgICBGb250VmFyaWFudExpZ2F0dXJlcyBoaXN0b3JpY2FsTGlnYXR1cmVz
LAorICAgICAgICBGb250VmFyaWFudExpZ2F0dXJlcyBjb250ZXh0dWFsQWx0ZXJuYXRlcykKKyAg
ICAgICAgICAgIDogY29tbW9uTGlnYXR1cmVzKGNvbW1vbkxpZ2F0dXJlcykKKyAgICAgICAgICAg
ICwgZGlzY3JldGlvbmFyeUxpZ2F0dXJlcyhkaXNjcmV0aW9uYXJ5TGlnYXR1cmVzKQorICAgICAg
ICAgICAgLCBoaXN0b3JpY2FsTGlnYXR1cmVzKGhpc3RvcmljYWxMaWdhdHVyZXMpCisgICAgICAg
ICAgICAsIGNvbnRleHR1YWxBbHRlcm5hdGVzKGNvbnRleHR1YWxBbHRlcm5hdGVzKQorICAgIHsK
KyAgICB9CisKKyAgICBGb250VmFyaWFudExpZ2F0dXJlcyBjb21tb25MaWdhdHVyZXM7CisgICAg
Rm9udFZhcmlhbnRMaWdhdHVyZXMgZGlzY3JldGlvbmFyeUxpZ2F0dXJlczsKKyAgICBGb250VmFy
aWFudExpZ2F0dXJlcyBoaXN0b3JpY2FsTGlnYXR1cmVzOworICAgIEZvbnRWYXJpYW50TGlnYXR1
cmVzIGNvbnRleHR1YWxBbHRlcm5hdGVzOworfTsKKworc3RydWN0IEZvbnRWYXJpYW50TnVtZXJp
Y1ZhbHVlcyB7CisgICAgRm9udFZhcmlhbnROdW1lcmljVmFsdWVzKAorICAgICAgICBGb250VmFy
aWFudE51bWVyaWNGaWd1cmUgZmlndXJlLAorICAgICAgICBGb250VmFyaWFudE51bWVyaWNTcGFj
aW5nIHNwYWNpbmcsCisgICAgICAgIEZvbnRWYXJpYW50TnVtZXJpY0ZyYWN0aW9uIGZyYWN0aW9u
LAorICAgICAgICBGb250VmFyaWFudE51bWVyaWNPcmRpbmFsIG9yZGluYWwsCisgICAgICAgIEZv
bnRWYXJpYW50TnVtZXJpY1NsYXNoZWRaZXJvIHNsYXNoZWRaZXJvKQorICAgICAgICAgICAgOiBm
aWd1cmUoZmlndXJlKQorICAgICAgICAgICAgLCBzcGFjaW5nKHNwYWNpbmcpCisgICAgICAgICAg
ICAsIGZyYWN0aW9uKGZyYWN0aW9uKQorICAgICAgICAgICAgLCBvcmRpbmFsKG9yZGluYWwpCisg
ICAgICAgICAgICAsIHNsYXNoZWRaZXJvKHNsYXNoZWRaZXJvKQorICAgIHsKKyAgICB9CisKKyAg
ICBGb250VmFyaWFudE51bWVyaWNGaWd1cmUgZmlndXJlOworICAgIEZvbnRWYXJpYW50TnVtZXJp
Y1NwYWNpbmcgc3BhY2luZzsKKyAgICBGb250VmFyaWFudE51bWVyaWNGcmFjdGlvbiBmcmFjdGlv
bjsKKyAgICBGb250VmFyaWFudE51bWVyaWNPcmRpbmFsIG9yZGluYWw7CisgICAgRm9udFZhcmlh
bnROdW1lcmljU2xhc2hlZFplcm8gc2xhc2hlZFplcm87Cit9OworCitzdHJ1Y3QgRm9udFZhcmlh
bnRFYXN0QXNpYW5WYWx1ZXMgeworICAgIEZvbnRWYXJpYW50RWFzdEFzaWFuVmFsdWVzKAorICAg
ICAgICBGb250VmFyaWFudEVhc3RBc2lhblZhcmlhbnQgdmFyaWFudCwKKyAgICAgICAgRm9udFZh
cmlhbnRFYXN0QXNpYW5XaWR0aCB3aWR0aCwKKyAgICAgICAgRm9udFZhcmlhbnRFYXN0QXNpYW5S
dWJ5IHJ1YnkpCisgICAgICAgICAgICA6IHZhcmlhbnQodmFyaWFudCkKKyAgICAgICAgICAgICwg
d2lkdGgod2lkdGgpCisgICAgICAgICAgICAsIHJ1YnkocnVieSkKKyAgICB7CisgICAgfQorCisg
ICAgRm9udFZhcmlhbnRFYXN0QXNpYW5WYXJpYW50IHZhcmlhbnQ7CisgICAgRm9udFZhcmlhbnRF
YXN0QXNpYW5XaWR0aCB3aWR0aDsKKyAgICBGb250VmFyaWFudEVhc3RBc2lhblJ1YnkgcnVieTsK
K307CisKIGVudW0gRm9udFdpZHRoVmFyaWFudCB7CiAgICAgUmVndWxhcldpZHRoLAogICAgIEhh
bGZXaWR0aCwK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>271211</attachid>
            <date>2016-02-12 13:37:03 -0800</date>
            <delta_ts>2016-02-12 14:16:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-154145-20160212133642.patch</filename>
            <type>text/plain</type>
            <size>78575</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk2NDk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODliYjMzMTdjODc5NWZh
Yzg5OTVlZjBhNDVkZTcxNWJmYjc3MmZkYi4uMGEyZmNiYjc5N2Y4M2U2ZGViZjcyYTI5MWRiM2Jk
OGI3NDQwMDI2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyMSBAQAorMjAxNi0wMi0xMiAgTXls
ZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIFtDU1MgRm9u
dCBMb2FkaW5nXSBJbXBsZW1lbnQgQ1NTRm9udEZhY2UgQm9pbGVycGxhdGUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NDE0NQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBDU1MgRm9udCBMb2FkaW5n
IHNwZWNbMV0gZGljdGF0ZXMgdGhhdCB0aGUgRm9udEZhY2Ugb2JqZWN0IG5lZWRzIHRvIGhhdmUg
c3RyaW5nCisgICAgICAgIGFjY2Vzc29ycyBhbmQgbXV0YXRvcnMgZm9yIGEgYnVuY2ggb2YgcHJv
cGVydGllcy4gT3VyIENTU0ZvbnRGYWNlIG9iamVjdCBjdXJyZW50bHkKKyAgICAgICAgY29udGFp
bnMgdGhpcyBwYXJzZWQgaW5mb3JtYXRpb24sIGJ1dCBpdCBpc24ndCBhY2Nlc3NpYmxlIHZpYSBz
dHJpbmctYmFzZWQgbWV0aG9kcy4KKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIHRoZSBuZWNlc3Nh
cnkgYWNjZXNzb3JzIGFuZCBtdXRhdG9ycywgYW5kIG1pZ3JhdGVzIENTU0ZvbnRTZWxlY3Rvcgor
ICAgICAgICB0byB1c2UgdGhlc2UgbXV0YXRvcnMgd2hlcmUgbmVjZXNzYXJ5LgorCisgICAgICAg
IFRoZXJlIGlzIG1vcmUgd29yayB0byBjb21lIG9uIENTU0ZvbnRGYWNlOyB0aGUgbmV4dCBzdGVw
IGlzIHRvIGNyZWF0ZSBhbiAuaWRsIGZpbGUKKyAgICAgICAgYW5kIGhvb2sgaXQgdXAgdG8gb3Vy
IENTU0ZvbnRGYWNlIG9iamVjdC4gSW4gdGhpcyBwYXRjaCBJIGhhdmUgbGVmdCBzb21lCisgICAg
ICAgIHVuaW1wbGVtZW50ZWQgcGllY2VzIChmb3IgZXhhbXBsZTogd2hlcmUgdGhlIHNwZWMgZGlj
dGF0ZXMgdGhhdCBzb21lIG9wZXJhdGlvbiBzaG91bGQKKyAgICAgICAgdGhyb3cgYSBKYXZhU2Ny
aXB0IGV4Y2VwdGlvbikgd2hpY2ggd2lsbCBiZSBpbXBsZW1lbnRlZCBpbiBhIGZvbGxvdy11cCBw
YXRjaC4gVGhpcworICAgICAgICBwYXRjaCBkb2VzIG5vdCBoYXZlIGFueSB2aXNpYmxlIGJlaGF2
aW9yIGNoYW5nZTsgSSdtIHNlcGFyYXRpbmcgb3V0IHRoZSBib2lsZXJwbGF0ZQorICAgICAgICBp
bnRvIHRoaXMgcGF0Y2ggaW4gb3JkZXIgdG8gZWFzZSByZXZpZXdpbmcgYnVyZGVuLgorCisgICAg
ICAgIFRoaXMgcGF0Y2ggc2VwYXJhdGVzIHRoZSBleHRlcm5hbGx5LWZhY2luZyBKYXZhU2NyaXB0
IEFQSSBpbnRvIGEgbmV3IGNsYXNzLCBGb250RmFjZS4KKyAgICAgICAgVGhpcyBjbGFzcyBvd25z
IGEgQ1NTRm9udEZhY2UsIHdoaWNoIHByb3ZpZGVzIHRoZSBiYWNraW5nIGltcGxlbWVudGF0aW9u
LiBUaGVyZSB3aWxsCisgICAgICAgIGJlIGEgc3lzdGVtIG9mIHNoYXJlZCBvd25lcnNoaXAgb2Yg
dGhlc2Ugb2JqZWN0cyBvbmNlIEZvbnRGYWNlU2V0IGlzIGltcGxlbWVudGVkLgorCisgICAgICAg
IE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoZXJlIGlzIG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAg
ICAgICAqIENNYWtlTGlzdHMudHh0OiBBZGQgbmV3IGZpbGVzIHRvIENNYWtlIGJ1aWxkcy4KKyAg
ICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qOiBEaXR0byBmb3IgV2luZG93
cy4KKyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnM6IERp
dHRvLgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogRGl0dG8g
Zm9yIENvY29hLgorICAgICAgICAqIGNzcy9DU1NBbGxJbk9uZS5jcHA6IERpdHRvIGZvciBBbGwt
SW4tT25lIGJ1aWxkcy4KKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2UuY3BwOiBNb3ZlIHNoYXJl
ZCBjb2RlIGZyb20gQ1NTRm9udFNlbGVjdG9yIGludG8gQ1NTRm9udEZhY2UuCisgICAgICAgIChX
ZWJDb3JlOjpDU1NGb250RmFjZTo6Q1NTRm9udEZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
Rm9udEZhY2U6On5DU1NGb250RmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZTo6
c2V0RmFtaWxpZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2U6OnNldFN0eWxlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlOjpzZXRXZWlnaHQpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTRm9udEZhY2U6OnNldFVuaWNvZGVSYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpD
U1NGb250RmFjZTo6c2V0VmFyaWFudExpZ2F0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NG
b250RmFjZTo6c2V0VmFyaWFudFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRG
YWNlOjpzZXRWYXJpYW50Q2Fwcyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZTo6c2V0
VmFyaWFudE51bWVyaWMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2U6OnNldFZhcmlh
bnRBbHRlcm5hdGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlOjpzZXRWYXJpYW50
RWFzdEFzaWFuKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlOjpzZXRGZWF0dXJlU2V0
dGluZ3MpOgorICAgICAgICAqIGNzcy9DU1NGb250RmFjZS5oOiBDbGVhbiB1cC4KKyAgICAgICAg
KFdlYkNvcmU6OkNTU0ZvbnRGYWNlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9u
dEZhY2U6OmZhbWlsaWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlOjp0cmFpdHNN
YXNrKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlOjpmZWF0dXJlU2V0dGluZ3MpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2U6OnZhcmlhbnRTZXR0aW5ncyk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NGb250RmFjZTo6c2V0VmFyaWFudFNldHRpbmdzKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU0ZvbnRGYWNlOjpzZXRUcmFpdHNNYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OkNT
U0ZvbnRGYWNlOjppc0xvY2FsRmFsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZh
Y2U6OmFkZFJhbmdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlOjpp
bnNlcnRGZWF0dXJlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlOjpz
ZXRWYXJpYW50Q29tbW9uTGlnYXR1cmVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNT
U0ZvbnRGYWNlOjpzZXRWYXJpYW50RGlzY3JldGlvbmFyeUxpZ2F0dXJlcyk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZTo6c2V0VmFyaWFudEhpc3RvcmljYWxMaWdhdHVy
ZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2U6OnNldFZhcmlhbnRD
b250ZXh0dWFsQWx0ZXJuYXRlcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NGb250
RmFjZTo6c2V0VmFyaWFudFBvc2l0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNT
U0ZvbnRGYWNlOjpzZXRWYXJpYW50Q2Fwcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpD
U1NGb250RmFjZTo6c2V0VmFyaWFudE51bWVyaWNGaWd1cmUpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6Q1NTRm9udEZhY2U6OnNldFZhcmlhbnROdW1lcmljU3BhY2luZyk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZTo6c2V0VmFyaWFudE51bWVyaWNGcmFjdGlv
bik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZTo6c2V0VmFyaWFudE51
bWVyaWNPcmRpbmFsKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlOjpz
ZXRWYXJpYW50TnVtZXJpY1NsYXNoZWRaZXJvKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkNTU0ZvbnRGYWNlOjpzZXRWYXJpYW50QWx0ZXJuYXRlcyk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpDU1NGb250RmFjZTo6c2V0VmFyaWFudEVhc3RBc2lhblZhcmlhbnQpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2U6OnNldFZhcmlhbnRFYXN0QXNpYW5XaWR0
aCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZTo6c2V0VmFyaWFudEVh
c3RBc2lhblJ1YnkpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2U6OkNT
U0ZvbnRGYWNlKTogRGVsZXRlZC4KKyAgICAgICAgKiBjc3MvQ1NTRm9udFNlbGVjdG9yLmNwcDog
TWlncmF0ZSBzaGFyZWQgY29kZSBpbnRvIENTU0ZvbnRGYWNlLCBhbmQgdWRwYXRlCisgICAgICAg
IHRvIHVzZSB0aGUgbmV3IEFQSS4KKyAgICAgICAgKFdlYkNvcmU6OmFwcGVuZFNvdXJjZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6cmVnaXN0ZXJMb2NhbEZvbnRGYWNlc0ZvckZhbWlseSk6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NGb250U2VsZWN0b3I6OmFkZEZvbnRGYWNlUnVsZSk6CisgICAgICAg
IChXZWJDb3JlOjpjb21wdXRlVHJhaXRzTWFzayk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpjcmVhdGVGb250RmFjZSk6IERlbGV0ZWQuCisgICAgICAgICogY3NzL0ZvbnRGYWNlLmNwcDog
QWRkZWQuIEV4dGVybmFsIEphdmFTY3JpcHQgQVBJLiBPd25zIGEgQ1NTRm9udEZhY2UuCisgICAg
ICAgIChXZWJDb3JlOjpGb250RmFjZTo6Rm9udEZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6Rm9u
dEZhY2U6On5Gb250RmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZVN0cmluZyk6CisgICAg
ICAgIChXZWJDb3JlOjpGb250RmFjZTo6c2V0RmFtaWx5KToKKyAgICAgICAgKFdlYkNvcmU6OkZv
bnRGYWNlOjpzZXRTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpGb250RmFjZTo6c2V0V2VpZ2h0
KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRGYWNlOjpzZXRTdHJldGNoKToKKyAgICAgICAgKFdl
YkNvcmU6OkZvbnRGYWNlOjpzZXRVbmljb2RlUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Rm9u
dEZhY2U6OnNldFZhcmlhbnQpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udEZhY2U6OnNldEZlYXR1
cmVTZXR0aW5ncyk6CisgICAgICAgIChXZWJDb3JlOjpGb250RmFjZTo6ZmFtaWx5KToKKyAgICAg
ICAgKFdlYkNvcmU6OkZvbnRGYWNlOjpzdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpGb250RmFj
ZTo6d2VpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRGYWNlOjpzdHJldGNoKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZvbnRGYWNlOjp1bmljb2RlUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
Rm9udEZhY2U6OnZhcmlhbnQpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udEZhY2U6OmZlYXR1cmVT
ZXR0aW5ncyk6CisgICAgICAgICogY3NzL0ZvbnRGYWNlLmg6IEFkZGVkLiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6OkZvbnRGYWNlOjpjcmVhdGUpOgorICAgICAgICAqIGNzcy9Gb250VmFyaWFu
dEJ1aWxkZXIuY3BwOiBBZGRlZC4gTW92ZWQgY29kZSBoZXJlIGZyb20gRm9udFZhcmlhbnRCdWls
ZGVyLmguCisgICAgICAgIFJlZmFjdG9yZWQgdG8gc3VwcG9ydCBhIG5ldyBjbGllbnQgKENTU0Zv
bnRGYWNlKS4KKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RGb250VmFyaWFudExpZ2F0dXJlcyk6
CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0Rm9udFZhcmlhbnROdW1lcmljKToKKyAgICAgICAg
KFdlYkNvcmU6OmV4dHJhY3RGb250VmFyaWFudEVhc3RBc2lhbik6CisgICAgICAgIChXZWJDb3Jl
Ojpjb21wdXRlRm9udFZhcmlhbnQpOgorICAgICAgICAqIGNzcy9Gb250VmFyaWFudEJ1aWxkZXIu
aDogTW92ZWQgY29kZSBmcm9tIGhlcmUgaW50byBGb250VmFyaWFudEJ1aWxkZXIuY3BwLgorICAg
ICAgICAoV2ViQ29yZTo6YXBwbHlWYWx1ZUZvbnRWYXJpYW50TGlnYXR1cmVzKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OmFwcGx5VmFsdWVGb250VmFyaWFudE51bWVyaWMpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6YXBwbHlWYWx1ZUZvbnRWYXJpYW50RWFzdEFzaWFuKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBjc3MvU3R5bGVCdWlsZGVyQ3VzdG9tLmg6IFVwZGF0ZSBmb3IgbmV3
IEZvbnRWYXJpYW50QnVpbGRlciBBUEkuCisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJD
dXN0b206OmFwcGx5VmFsdWVGb250VmFyaWFudExpZ2F0dXJlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVGb250VmFyaWFudE51bWVyaWMpOgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlRm9udFZhcmlhbnRF
YXN0QXNpYW4pOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvVGV4dEZsYWdzLmg6IFByb3ZpZGUg
Y29udmVuaWVuY2UgY2xhc3Nlcy4KKyAgICAgICAgKFdlYkNvcmU6OkZvbnRWYXJpYW50TGlnYXR1
cmVzVmFsdWVzOjpGb250VmFyaWFudExpZ2F0dXJlc1ZhbHVlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpGb250VmFyaWFudE51bWVyaWNWYWx1ZXM6OkZvbnRWYXJpYW50TnVtZXJpY1ZhbHVlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpGb250VmFyaWFudEVhc3RBc2lhblZhbHVlczo6Rm9udFZhcmlhbnRF
YXN0QXNpYW5WYWx1ZXMpOgorCiAyMDE2LTAyLTEyICBBbmRyZWFzIEtsaW5nICA8YWtsaW5nQGFw
cGxlLmNvbT4KIAogICAgICAgICBUaHJvdyBvdXQgYWxsIGxpdmUgcmVzb3VyY2UgZGVjb2RlZCBk
YXRhIG9uIG1lbW9yeSBwcmVzc3VyZSAvIHN1c3BlbnNpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cmlu
ZGV4IDQ1MjNiMjk3NmJiYjIwNzBmYmY0MTNkMjYyNWQyNzhkZTM2YWQ5YzEuLmZkZjI0ZGM0NjM5
NzQ0M2JjNzhkNzk2YjdjZjEzNjkzZmMxMmE3ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0x
Mjk5LDYgKzEyOTksNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgY3NzL0NTU0N1cnNvcklt
YWdlVmFsdWUuY3BwCiAgICAgY3NzL0NTU0RlZmF1bHRTdHlsZVNoZWV0cy5jcHAKICAgICBjc3Mv
Q1NTRmlsdGVySW1hZ2VWYWx1ZS5jcHAKKyAgICBjc3MvRm9udEZhY2UuY3BwCiAgICAgY3NzL0NT
U0ZvbnRGYWNlLmNwcAogICAgIGNzcy9DU1NGb250RmFjZUxvYWRFdmVudC5jcHAKICAgICBjc3Mv
Q1NTRm9udEZhY2VSdWxlLmNwcApAQCAtMTM1NSw2ICsxMzU2LDcgQEAgc2V0KFdlYkNvcmVfU09V
UkNFUwogICAgIGNzcy9Eb2N1bWVudFJ1bGVTZXRzLmNwcAogICAgIGNzcy9FbGVtZW50UnVsZUNv
bGxlY3Rvci5jcHAKICAgICBjc3MvRm9udExvYWRlci5jcHAKKyAgICBjc3MvRm9udFZhcmlhbnRC
dWlsZGVyLmNwcAogICAgIGNzcy9JbnNwZWN0b3JDU1NPTVdyYXBwZXJzLmNwcAogICAgIGNzcy9M
ZW5ndGhGdW5jdGlvbnMuY3BwCiAgICAgY3NzL01lZGlhRmVhdHVyZU5hbWVzLmNwcApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvaiBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKaW5kZXggYzViNDdl
Y2MyNmQ1Zjg3ZTZkNjA1ZTM0YTJjZDQ3OWMzYzYxYmJkYy4uMWZhYzc3M2NkZWZhNjVmMDI5YWQ4
OWEyODc4NjAwYTU3MzVjZTM0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52
Y3hwcm9qL1dlYkNvcmUudmN4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHBy
b2ovV2ViQ29yZS52Y3hwcm9qCkBAIC05NTgzLDYgKzk1ODMsMjAgQEAKICAgICAgIDxFeGNsdWRl
ZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1By
b2R1Y3Rpb258V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICAgIDxFeGNsdWRl
ZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1By
b2R1Y3Rpb258eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgPC9DbENvbXBpbGU+
CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxjc3NcRm9udEZhY2UuY3BwIj4KKyAgICAgIDxF
eGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J0RlYnVnfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVk
ZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdE
ZWJ1Z3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21C
dWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnX1dp
bkNhaXJvfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRG
cm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1
Z19XaW5DYWlyb3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRl
ZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0Rl
YnVnU3VmZml4fFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVk
ZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdE
ZWJ1Z1N1ZmZpeHx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRl
ZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Jl
bGVhc2V8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZy
b21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVh
c2V8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVp
bGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dp
bkNhaXJvfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRG
cm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxl
YXNlX1dpbkNhaXJvfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1
ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
UHJvZHVjdGlvbnxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1
ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
UHJvZHVjdGlvbnx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICA8L0NsQ29tcGls
ZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGNzc1xDU1NGb250RmFjZS5jcHAiPgogICAg
ICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nRGVidWd8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICAgIDxF
eGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J0RlYnVnfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgpAQCAtMTAyNDIsNiArMTAy
NTYsMjAgQEAKICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzInIj50cnVlPC9FeGNsdWRlZEZy
b21CdWlsZD4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9t
QnVpbGQ+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxjc3Nc
Rm9udFZhcmlhbnRCdWlsZGVyLmNwcCI+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPnRydWU8
L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+dHJ1ZTwvRXhjbHVk
ZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z19XaW5DYWlyb3xXaW4zMiciPnRydWU8L0V4
Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdfV2luQ2Fpcm98eDY0JyI+dHJ1ZTwv
RXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHxXaW4zMiciPnRydWU8
L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdTdWZmaXh8eDY0JyI+dHJ1ZTwv
RXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+dHJ1ZTwvRXhj
bHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPnRydWU8L0V4Y2x1ZGVk
RnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3xXaW4zMiciPnRydWU8L0V4
Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3x4NjQnIj50cnVl
PC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzInIj50cnVl
PC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258eDY0JyI+dHJ1ZTwv
RXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxjc3NcRm9udExvYWRlci5jcHAiPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj50
cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPnRydWU8L0V4
Y2x1ZGVkRnJvbUJ1aWxkPgpAQCAtMjE2MzAsNiArMjE2NTgsNyBAQAogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5cY3NzXENTU0N1cnNvckltYWdlVmFsdWUuaCIgLz4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXGNzc1xDU1NGaWx0ZXJJbWFnZVZhbHVlLmgiIC8+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxjc3NcQ1NTRm9udEZhY2UuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXGNzc1xGb250RmFjZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cY3Nz
XENTU0ZvbnRGYWNlTG9hZEV2ZW50LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxj
c3NcQ1NTRm9udEZhY2VSdWxlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxjc3Nc
Q1NTRm9udEZhY2VTb3VyY2UuaCIgLz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwppbmRleCBjMGUwODY5MzFhODg0NTRi
NzUwZWIxZDMzZWZjM2M4ZGFlYjVlMDVmLi5kMGRmYTJkYTFiN2M0YWRmOGY3MWNlOTIzZTdkYTNh
YTE5MmYxODZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2Vi
Q29yZS52Y3hwcm9qLmZpbHRlcnMKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9q
L1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCkBAIC0yMDg0LDYgKzIwODQsOSBAQAogICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5cY3NzXENTU0N1cnNvckltYWdlVmFsdWUuY3BwIj4KICAgICAgIDxG
aWx0ZXI+Y3NzPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxjc3NcRm9udEZhY2UuY3BwIj4KKyAgICAgIDxGaWx0ZXI+Y3NzPC9GaWx0ZXI+Cisg
ICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxjc3NcQ1NTRm9udEZh
Y2UuY3BwIj4KICAgICAgIDxGaWx0ZXI+Y3NzPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBA
IC0yMjIyLDYgKzIyMjUsOSBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cY3NzXENTU1Zh
cmlhYmxlVmFsdWUuY3BwIj4KICAgICAgIDxGaWx0ZXI+Y3NzPC9GaWx0ZXI+CiAgICAgPC9DbENv
bXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxjc3NcRm9udFZhcmlhbnRCdWlsZGVy
LmNwcCI+CisgICAgICA8RmlsdGVyPmNzczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgogICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cY3NzXEZvbnRMb2FkZXIuY3BwIj4KICAgICAgIDxGaWx0
ZXI+Y3NzPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBAIC05MDUyLDYgKzkwNTgsOSBAQAog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cY3NzXENTU0N1cnNvckltYWdlVmFsdWUuaCI+CiAg
ICAgICA8RmlsdGVyPmNzczwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5cY3NzXEZvbnRGYWNlLmgiPgorICAgICAgPEZpbHRlcj5jc3M8L0ZpbHRl
cj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGNzc1xDU1NG
b250RmFjZS5oIj4KICAgICAgIDxGaWx0ZXI+Y3NzPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggYTE3MDVkODBlNGZlNzZiYThiNTM4MjZjNDFhZmM5M2Y3NTZmNzljMC4uOTBmNGFkNjFm
OWRjN2JmNjkyMTJkZjNjOWJkODdlMjZiMzQ1Y2QyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtOTUxLDkgKzk1MSwxMiBAQAog
CQkxQzIxRTU3RDE4M0VEMUZGMDAxQzI4OUQgLyogSU9TdXJmYWNlUG9vbC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUMyMUU1N0IxODNFRDFGRjAwMUMy
ODlEIC8qIElPU3VyZmFjZVBvb2wuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkxQzI0MTdCQTE5OTJDMDQxMDBFRjk5MzggLyogU3BlbGxpbmdEb3RA
M3gucG5nIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
QzI0MTdCOTE5OTJDMDQxMDBFRjk5MzggLyogU3BlbGxpbmdEb3RAM3gucG5nICovOyB9OwogCQkx
QzI2NDk3QTBEN0UyNDhBMDBCRDEwRjIgLyogRG9jdW1lbnRMb2FkZXJNYWMuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUMyNjQ5NzkwRDdFMjQ4QTAw
QkQxMEYyIC8qIERvY3VtZW50TG9hZGVyTWFjLmNwcCAqLzsgfTsKKwkJMUMzMjQ5MTExQzZENkEz
QjAwN0VEQjMyIC8qIEZvbnRWYXJpYW50QnVpbGRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzMyNDkxMDFDNkQ2QTNCMDA3RURCMzIgLyogRm9u
dFZhcmlhbnRCdWlsZGVyLmNwcCAqLzsgfTsKIAkJMUMzOTY5RDAxQjc0MjExRTAwMkJDRkE3IC8q
IEZvbnRDYWNoZUNvcmVUZXh0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDFDMzk2OUNGMUI3NDIxMUUwMDJCQ0ZBNyAvKiBGb250Q2FjaGVDb3JlVGV4
dC5jcHAgKi87IH07CiAJCTFDNjQ2NjI1MUExMkMzOEUwMDk0NjAzQyAvKiBDb3JlVGV4dFNQSS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM1RTk4MEYx
QTAyQ0VGQTAwMkRCNTVGIC8qIENvcmVUZXh0U1BJLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUM2NDY2MjgxQTEyQzQyMDAwOTQ2MDNDIC8qIE5T
Rm9udFNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MUM2NDY2MjcxQTEyQzNGOTAwOTQ2MDNDIC8qIE5TRm9udFNQSS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTFDNjYyNjEwMUM2RTdDQTYwMEFCNTI3
QyAvKiBGb250RmFjZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxQzY2MjYwRTFDNkU3Q0E2MDBBQjUyN0MgLyogRm9udEZhY2UuY3BwICovOyB9Owor
CQkxQzY2MjYxMTFDNkU3Q0E2MDBBQjUyN0MgLyogRm9udEZhY2UuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDNjYyNjBGMUM2RTdDQTYwMEFCNTI3QyAv
KiBGb250RmFjZS5oICovOyB9OwogCQkxQzgxQjk1QTBFOTczMzA4MDAyNjZFMDcgLyogSW5zcGVj
dG9yQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMUM4MUI5NTYwRTk3MzMwODAwMjY2RTA3IC8qIEluc3BlY3RvckNvbnRyb2xsZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxQzgxQjk1
QjBFOTczMzA4MDAyNjZFMDcgLyogSW5zcGVjdG9yQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzgxQjk1NzBFOTczMzA4MDAyNjZF
MDcgLyogSW5zcGVjdG9yQ29udHJvbGxlci5jcHAgKi87IH07CiAJCTFDODFCOTVDMEU5NzMzMDgw
MDI2NkUwNyAvKiBJbnNwZWN0b3JDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDFDODFCOTU4MEU5NzMzMDgwMDI2NkUwNyAvKiBJbnNwZWN0b3JD
bGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpA
QCAtODM1Miw5ICs4MzU1LDEyIEBACiAJCTFDMjFFNTdCMTgzRUQxRkYwMDFDMjg5RCAvKiBJT1N1
cmZhY2VQb29sLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElPU3VyZmFjZVBv
b2wuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUMyNDE3QjkxOTkyQzA0MTAwRUY5
OTM4IC8qIFNwZWxsaW5nRG90QDN4LnBuZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IGltYWdlLnBuZzsgcGF0aCA9ICJTcGVsbGluZ0RvdEAzeC5wbmci
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzI2NDk3OTBEN0UyNDhBMDBCRDEwRjIg
LyogRG9jdW1lbnRMb2FkZXJNYWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gRG9jdW1lbnRMb2FkZXJNYWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkxQzMyNDkxMDFDNkQ2QTNCMDA3RURCMzIgLyogRm9udFZhcmlhbnRCdWlsZGVyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvbnRWYXJpYW50QnVpbGRlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDMzk2OUNGMUI3NDIxMUUwMDJCQ0ZBNyAv
KiBGb250Q2FjaGVDb3JlVGV4dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBGb250Q2FjaGVDb3JlVGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTFDNUU5ODBGMUEwMkNFRkEwMDJEQjU1RiAvKiBDb3JlVGV4dFNQSS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBDb3JlVGV4dFNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzY0NjYyNzFB
MTJDM0Y5MDA5NDYwM0MgLyogTlNGb250U1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5TRm9udFNQSS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzY2MjYwRTFDNkU3Q0E2MDBBQjUyN0Mg
LyogRm9udEZhY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9u
dEZhY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzY2MjYwRjFDNkU3Q0E2
MDBBQjUyN0MgLyogRm9udEZhY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Rm9udEZhY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM4MUI5NTYwRTk3MzMw
ODAwMjY2RTA3IC8qIEluc3BlY3RvckNvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSW5zcGVjdG9yQ29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkxQzgxQjk1NzBFOTczMzA4MDAyNjZFMDcgLyogSW5zcGVjdG9yQ29udHJvbGxlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JDb250cm9s
bGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM4MUI5NTgwRTk3MzMwODAw
MjY2RTA3IC8qIEluc3BlY3RvckNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBJbnNwZWN0b3JDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIz
NzAzLDYgKzIzNzA5LDkgQEAKIAkJCQkzRkZGRjlBNjE1OUQ5QTU1MDAyMEJCRDUgLyogV2ViS2l0
Q1NTVmlld3BvcnRSdWxlLmNwcCAqLywKIAkJCQkzRkZGRjlBNzE1OUQ5QTU1MDAyMEJCRDUgLyog
V2ViS2l0Q1NTVmlld3BvcnRSdWxlLmggKi8sCiAJCQkJM0YyQjMzRTMxNjVBQkQzNTAwRTM5ODdD
IC8qIFdlYktpdENTU1ZpZXdwb3J0UnVsZS5pZGwgKi8sCisJCQkJMUMzMjQ5MTAxQzZENkEzQjAw
N0VEQjMyIC8qIEZvbnRWYXJpYW50QnVpbGRlci5jcHAgKi8sCisJCQkJMUM2NjI2MEUxQzZFN0NB
NjAwQUI1MjdDIC8qIEZvbnRGYWNlLmNwcCAqLywKKwkJCQkxQzY2MjYwRjFDNkU3Q0E2MDBBQjUy
N0MgLyogRm9udEZhY2UuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gY3NzOwogCQkJc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsKQEAgLTI0OTk2LDYgKzI1MDA1LDcgQEAKIAkJCQlCQ0IxNkMxQzA5NzlD
M0JEMDA0Njc3NDEgLyogQ2FjaGVkSW1hZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxOUZCRDVG
MTVEMkY0NjQwMDk2NDBBNiAvKiBDYWNoZWRJbWFnZUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNTEwMTg0NjkwQjA4NjAyQTAwNEE4MjVGIC8qIENhY2hlZFBhZ2UuaCBpbiBIZWFkZXJzICov
LAorCQkJCTFDNjYyNjExMUM2RTdDQTYwMEFCNTI3QyAvKiBGb250RmFjZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRDBFREE3NzUxNDNFMzAzQzAwMjhFMzgzIC8qIENhY2hlZFJhd1Jlc291cmNlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlFMUI1MzM0OTE3MTdERUUzMDBGMjA1RjkgLyogQ2FjaGVkUmF3
UmVzb3VyY2VDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQjE2QzIwMDk3OUMzQkQwMDQ2
Nzc0MSAvKiBDYWNoZWRSZXNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yOTkxMSw2ICsyOTky
MSw3IEBACiAJCQkJQjI3NTM1N0QwQjA1MzgxNDAwMkNFNjRGIC8qIEludFJlY3RNYWMubW0gaW4g
U291cmNlcyAqLywKIAkJCQkyRDQ2RjA1MDE3Qjk2RkQyMDA1NjQ3RjAgLyogSW50U2l6ZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlCMjc1MzU2MjBCMDUzODE0MDAyQ0U2NEYgLyogSW50U2l6ZUNH
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTFDMzI0OTExMUM2RDZBM0IwMDdFREIzMiAvKiBGb250
VmFyaWFudEJ1aWxkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjI3NTM1N0UwQjA1MzgxNDAw
MkNFNjRGIC8qIEludFNpemVNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQkyRDBCNEFBQzE4REEx
Q0NEMDA0MzRERTEgLyogSU9TdXJmYWNlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUMyMUU1N0Mx
ODNFRDFGRjAwMUMyODlEIC8qIElPU3VyZmFjZVBvb2wuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0z
MDExMiw2ICszMDEyMyw3IEBACiAJCQkJQkNDQkFENDAwQzE4QzE0MjAwQ0U4OTBGIC8qIEpTSFRN
TENvbGxlY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNDQkFEM0IwQzE4QkZGODAwQ0U4
OTBGIC8qIEpTSFRNTENvbGxlY3Rpb25DdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRjVD
MDQxRTYwRkZDQTk2RDAwODM5RDRBIC8qIEpTSFRNTERhdGFMaXN0RWxlbWVudC5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQkxQzY2MjYxMDFDNkU3Q0E2MDBBQjUyN0MgLyogRm9udEZhY2UuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJRDM1OUQ4QkUxMjlDQTU1QzAwMDZFNUQyIC8qIEpTSFRNTERldGFp
bHNFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBODVCMUU2MEExQjI0MDUwMEQ4Qzg3
QyAvKiBKU0hUTUxEaXJlY3RvcnlFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBODVC
MkI2MEExQjJBQzcwMEQ4Qzg3QyAvKiBKU0hUTUxEaXZFbGVtZW50LmNwcCBpbiBTb3VyY2VzICov
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0FsbEluT25lLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NBbGxJbk9uZS5jcHAKaW5kZXggNzQ5MDQ4ZjIyZjYwYzVjMDAxMWE1
ZjBmZjFlMzg5ZDc3OTNjNzNlMi4uY2RjNjdhNzcxMDE2MzY1YmNjOGFhMmIxNjRlODdmMGQ2ZjVh
MzNkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0FsbEluT25lLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQWxsSW5PbmUuY3BwCkBAIC05Myw3ICs5Myw5IEBACiAj
aW5jbHVkZSAiRE9NV2luZG93Q1NTLmNwcCIKICNpbmNsdWRlICJEb2N1bWVudFJ1bGVTZXRzLmNw
cCIKICNpbmNsdWRlICJFbGVtZW50UnVsZUNvbGxlY3Rvci5jcHAiCisjaW5jbHVkZSAiRm9udEZh
Y2UuY3BwIgogI2luY2x1ZGUgIkZvbnRMb2FkZXIuY3BwIgorI2luY2x1ZGUgIkZvbnRWYXJpYW50
QnVpbGRlci5jcHAiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ1NTT01XcmFwcGVycy5jcHAiCiAjaW5j
bHVkZSAiTGVuZ3RoRnVuY3Rpb25zLmNwcCIKICNpbmNsdWRlICJNZWRpYUxpc3QuY3BwIgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NGb250RmFjZS5jcHAKaW5kZXggOWIxYjI3YWVlYWRjMzZhNzU0NDYyMmRjYzk3
Y2U1MDIwNTI3MjYyMy4uNTkzMjUwNjI3YTQwODZjZmQyMmNiMDQxYmVmYTBhY2U1N2I0ZjJiMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2UuY3BwCkBAIC0yNywxNiArMjcsMTk0IEBACiAjaW5j
bHVkZSAiQ1NTRm9udEZhY2UuaCIKIAogI2luY2x1ZGUgIkNTU0ZvbnRGYWNlU291cmNlLmgiCisj
aW5jbHVkZSAiQ1NTRm9udEZhbWlseS5oIgorI2luY2x1ZGUgIkNTU0ZvbnRGZWF0dXJlVmFsdWUu
aCIKICNpbmNsdWRlICJDU1NGb250U2VsZWN0b3IuaCIKKyNpbmNsdWRlICJDU1NQcmltaXRpdmVW
YWx1ZU1hcHBpbmdzLmgiCiAjaW5jbHVkZSAiQ1NTU2VnbWVudGVkRm9udEZhY2UuaCIKKyNpbmNs
dWRlICJDU1NVbmljb2RlUmFuZ2VWYWx1ZS5oIgorI2luY2x1ZGUgIkNTU1ZhbHVlLmgiCisjaW5j
bHVkZSAiQ1NTVmFsdWVMaXN0LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJG
b250LmgiCiAjaW5jbHVkZSAiRm9udERlc2NyaXB0aW9uLmgiCiAjaW5jbHVkZSAiRm9udExvYWRl
ci5oIgorI2luY2x1ZGUgIkZvbnRWYXJpYW50QnVpbGRlci5oIgogI2luY2x1ZGUgIlJ1bnRpbWVF
bmFibGVkRmVhdHVyZXMuaCIKKyNpbmNsdWRlICJTdHlsZVByb3BlcnRpZXMuaCIKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCitDU1NGb250RmFjZTo6Q1NTRm9udEZhY2UoYm9vbCBpc0xvY2FsRmFs
bGJhY2spCisgICAgOiBtX2lzTG9jYWxGYWxsYmFjayhpc0xvY2FsRmFsbGJhY2spCit7Cit9CisK
K0NTU0ZvbnRGYWNlOjp+Q1NTRm9udEZhY2UoKQoreworfQorCitib29sIENTU0ZvbnRGYWNlOjpz
ZXRGYW1pbGllcyhDU1NWYWx1ZSYgZmFtaWx5KQoreworICAgIGlmICghaXM8Q1NTVmFsdWVMaXN0
PihmYW1pbHkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBDU1NWYWx1ZUxpc3QmIGZh
bWlseUxpc3QgPSBkb3duY2FzdDxDU1NWYWx1ZUxpc3Q+KGZhbWlseSk7CisgICAgaWYgKCFmYW1p
bHlMaXN0Lmxlbmd0aCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBtX2ZhbWlsaWVz
ID0gJmZhbWlseUxpc3Q7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgQ1NTRm9udEZhY2U6
OnNldFN0eWxlKENTU1ZhbHVlJiBzdHlsZSkKK3sKKyAgICBpZiAoIWlzPENTU1ByaW1pdGl2ZVZh
bHVlPihzdHlsZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHVuc2lnbmVkIHN0eWxl
TWFzayA9IDA7CisgICAgc3dpdGNoIChkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oc3R5bGUp
LmdldFZhbHVlSUQoKSkgeworICAgIGNhc2UgQ1NTVmFsdWVOb3JtYWw6CisgICAgICAgIHN0eWxl
TWFzayA9IEZvbnRTdHlsZU5vcm1hbE1hc2s7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NT
VmFsdWVJdGFsaWM6CisgICAgY2FzZSBDU1NWYWx1ZU9ibGlxdWU6CisgICAgICAgIHN0eWxlTWFz
ayA9IEZvbnRTdHlsZUl0YWxpY01hc2s7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBtX3RyYWl0c01hc2sgPSBzdGF0aWNf
Y2FzdDxGb250VHJhaXRzTWFzaz4oKHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3RyYWl0c01hc2sp
ICYgKH5Gb250U3R5bGVNYXNrKSkgfCBzdHlsZU1hc2spOworICAgIHJldHVybiB0cnVlOworfQor
Citib29sIENTU0ZvbnRGYWNlOjpzZXRXZWlnaHQoQ1NTVmFsdWUmIHdlaWdodCkKK3sKKyAgICBp
ZiAoIWlzPENTU1ByaW1pdGl2ZVZhbHVlPih3ZWlnaHQpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICB1bnNpZ25lZCB3ZWlnaHRNYXNrID0gMDsKKyAgICBzd2l0Y2ggKGRvd25jYXN0PENT
U1ByaW1pdGl2ZVZhbHVlPih3ZWlnaHQpLmdldFZhbHVlSUQoKSkgeworICAgIGNhc2UgQ1NTVmFs
dWVCb2xkOgorICAgIGNhc2UgQ1NTVmFsdWU3MDA6CisgICAgICAgIHdlaWdodE1hc2sgPSBGb250
V2VpZ2h0NzAwTWFzazsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NWYWx1ZU5vcm1hbDoK
KyAgICBjYXNlIENTU1ZhbHVlNDAwOgorICAgICAgICB3ZWlnaHRNYXNrID0gRm9udFdlaWdodDQw
ME1hc2s7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTVmFsdWU5MDA6CisgICAgICAgIHdl
aWdodE1hc2sgPSBGb250V2VpZ2h0OTAwTWFzazsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBD
U1NWYWx1ZTgwMDoKKyAgICAgICAgd2VpZ2h0TWFzayA9IEZvbnRXZWlnaHQ4MDBNYXNrOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIENTU1ZhbHVlNjAwOgorICAgICAgICB3ZWlnaHRNYXNrID0g
Rm9udFdlaWdodDYwME1hc2s7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTVmFsdWU1MDA6
CisgICAgICAgIHdlaWdodE1hc2sgPSBGb250V2VpZ2h0NTAwTWFzazsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBDU1NWYWx1ZTMwMDoKKyAgICAgICAgd2VpZ2h0TWFzayA9IEZvbnRXZWlnaHQz
MDBNYXNrOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1ZhbHVlMjAwOgorICAgICAgICB3
ZWlnaHRNYXNrID0gRm9udFdlaWdodDIwME1hc2s7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
Q1NTVmFsdWUxMDA6CisgICAgICAgIHdlaWdodE1hc2sgPSBGb250V2VpZ2h0MTAwTWFzazsKKyAg
ICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAg
bV90cmFpdHNNYXNrID0gc3RhdGljX2Nhc3Q8Rm9udFRyYWl0c01hc2s+KChzdGF0aWNfY2FzdDx1
bnNpZ25lZD4obV90cmFpdHNNYXNrKSAmICh+Rm9udFdlaWdodE1hc2spKSB8IHdlaWdodE1hc2sp
OworICAgIHJldHVybiB0cnVlOworfQorCitib29sIENTU0ZvbnRGYWNlOjpzZXRVbmljb2RlUmFu
Z2UoQ1NTVmFsdWUmIHVuaWNvZGVSYW5nZSkKK3sKKyAgICBpZiAoIWlzPENTU1ZhbHVlTGlzdD4o
dW5pY29kZVJhbmdlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgbV9yYW5nZXMuY2xl
YXIoKTsKKyAgICBhdXRvJiBsaXN0ID0gZG93bmNhc3Q8Q1NTVmFsdWVMaXN0Pih1bmljb2RlUmFu
Z2UpOworICAgIGZvciAoYXV0byYgcmFuZ2VWYWx1ZSA6IGxpc3QpIHsKKyAgICAgICAgQ1NTVW5p
Y29kZVJhbmdlVmFsdWUmIHJhbmdlID0gZG93bmNhc3Q8Q1NTVW5pY29kZVJhbmdlVmFsdWU+KHJh
bmdlVmFsdWUuZ2V0KCkpOworICAgICAgICBtX3Jhbmdlcy5hcHBlbmQoVW5pY29kZVJhbmdlKHJh
bmdlLmZyb20oKSwgcmFuZ2UudG8oKSkpOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
Ym9vbCBDU1NGb250RmFjZTo6c2V0VmFyaWFudExpZ2F0dXJlcyhDU1NWYWx1ZSYgdmFyaWFudExp
Z2F0dXJlcykKK3sKKyAgICBhdXRvIGxpZ2F0dXJlcyA9IGV4dHJhY3RGb250VmFyaWFudExpZ2F0
dXJlcyh2YXJpYW50TGlnYXR1cmVzKTsKKyAgICBtX3ZhcmlhbnRTZXR0aW5ncy5jb21tb25MaWdh
dHVyZXMgPSBsaWdhdHVyZXMuY29tbW9uTGlnYXR1cmVzOworICAgIG1fdmFyaWFudFNldHRpbmdz
LmRpc2NyZXRpb25hcnlMaWdhdHVyZXMgPSBsaWdhdHVyZXMuZGlzY3JldGlvbmFyeUxpZ2F0dXJl
czsKKyAgICBtX3ZhcmlhbnRTZXR0aW5ncy5oaXN0b3JpY2FsTGlnYXR1cmVzID0gbGlnYXR1cmVz
Lmhpc3RvcmljYWxMaWdhdHVyZXM7CisgICAgbV92YXJpYW50U2V0dGluZ3MuY29udGV4dHVhbEFs
dGVybmF0ZXMgPSBsaWdhdHVyZXMuY29udGV4dHVhbEFsdGVybmF0ZXM7CisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK2Jvb2wgQ1NTRm9udEZhY2U6OnNldFZhcmlhbnRQb3NpdGlvbihDU1NWYWx1ZSYg
dmFyaWFudFBvc2l0aW9uKQoreworICAgIGlmICghaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhcmlh
bnRQb3NpdGlvbikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBtX3ZhcmlhbnRTZXR0aW5n
cy5wb3NpdGlvbiA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YXJpYW50UG9zaXRpb24p
OworICAgIHJldHVybiB0cnVlOworfQorCitib29sIENTU0ZvbnRGYWNlOjpzZXRWYXJpYW50Q2Fw
cyhDU1NWYWx1ZSYgdmFyaWFudENhcHMpCit7CisgICAgaWYgKCFpczxDU1NQcmltaXRpdmVWYWx1
ZT4odmFyaWFudENhcHMpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgbV92YXJpYW50U2V0
dGluZ3MuY2FwcyA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YXJpYW50Q2Fwcyk7Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgQ1NTRm9udEZhY2U6OnNldFZhcmlhbnROdW1lcmlj
KENTU1ZhbHVlJiB2YXJpYW50TnVtZXJpYykKK3sKKyAgICBhdXRvIG51bWVyaWMgPSBleHRyYWN0
Rm9udFZhcmlhbnROdW1lcmljKHZhcmlhbnROdW1lcmljKTsKKyAgICBtX3ZhcmlhbnRTZXR0aW5n
cy5udW1lcmljRmlndXJlID0gbnVtZXJpYy5maWd1cmU7CisgICAgbV92YXJpYW50U2V0dGluZ3Mu
bnVtZXJpY1NwYWNpbmcgPSBudW1lcmljLnNwYWNpbmc7CisgICAgbV92YXJpYW50U2V0dGluZ3Mu
bnVtZXJpY0ZyYWN0aW9uID0gbnVtZXJpYy5mcmFjdGlvbjsKKyAgICBtX3ZhcmlhbnRTZXR0aW5n
cy5udW1lcmljT3JkaW5hbCA9IG51bWVyaWMub3JkaW5hbDsKKyAgICBtX3ZhcmlhbnRTZXR0aW5n
cy5udW1lcmljU2xhc2hlZFplcm8gPSBudW1lcmljLnNsYXNoZWRaZXJvOworICAgIHJldHVybiB0
cnVlOworfQorCitib29sIENTU0ZvbnRGYWNlOjpzZXRWYXJpYW50QWx0ZXJuYXRlcyhDU1NWYWx1
ZSYgdmFyaWFudEFsdGVybmF0ZXMpCit7CisgICAgaWYgKCFpczxDU1NQcmltaXRpdmVWYWx1ZT4o
dmFyaWFudEFsdGVybmF0ZXMpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgbV92YXJpYW50
U2V0dGluZ3MuYWx0ZXJuYXRlcyA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YXJpYW50
QWx0ZXJuYXRlcyk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgQ1NTRm9udEZhY2U6OnNl
dFZhcmlhbnRFYXN0QXNpYW4oQ1NTVmFsdWUmIHZhcmlhbnRFYXN0QXNpYW4pCit7CisgICAgYXV0
byBlYXN0QXNpYW4gPSBleHRyYWN0Rm9udFZhcmlhbnRFYXN0QXNpYW4odmFyaWFudEVhc3RBc2lh
bik7CisgICAgbV92YXJpYW50U2V0dGluZ3MuZWFzdEFzaWFuVmFyaWFudCA9IGVhc3RBc2lhbi52
YXJpYW50OworICAgIG1fdmFyaWFudFNldHRpbmdzLmVhc3RBc2lhbldpZHRoID0gZWFzdEFzaWFu
LndpZHRoOworICAgIG1fdmFyaWFudFNldHRpbmdzLmVhc3RBc2lhblJ1YnkgPSBlYXN0QXNpYW4u
cnVieTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBDU1NGb250RmFjZTo6c2V0RmVhdHVy
ZVNldHRpbmdzKENTU1ZhbHVlJiBmZWF0dXJlU2V0dGluZ3MpCit7CisgICAgaWYgKCFpczxDU1NW
YWx1ZUxpc3Q+KGZlYXR1cmVTZXR0aW5ncykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IG1fZmVhdHVyZVNldHRpbmdzID0gRm9udEZlYXR1cmVTZXR0aW5ncygpOworICAgIGF1dG8mIGxp
c3QgPSBkb3duY2FzdDxDU1NWYWx1ZUxpc3Q+KGZlYXR1cmVTZXR0aW5ncyk7CisgICAgZm9yIChh
dXRvJiByYW5nZVZhbHVlIDogbGlzdCkgeworICAgICAgICBDU1NGb250RmVhdHVyZVZhbHVlJiBm
ZWF0dXJlID0gZG93bmNhc3Q8Q1NTRm9udEZlYXR1cmVWYWx1ZT4ocmFuZ2VWYWx1ZS5nZXQoKSk7
CisgICAgICAgIG1fZmVhdHVyZVNldHRpbmdzLmluc2VydChGb250RmVhdHVyZShmZWF0dXJlLnRh
ZygpLCBmZWF0dXJlLnZhbHVlKCkpKTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKIGJv
b2wgQ1NTRm9udEZhY2U6OmFsbFNvdXJjZXNGYWlsZWQoKSBjb25zdAogewogICAgIGZvciAoYXV0
byYgc291cmNlIDogbV9zb3VyY2VzKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTRm9udEZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5oCmluZGV4IGVh
ZDE5MmNjZGZmNzVhZmQ3ZTEzMzFhYzI0NGJjOWJmYWU5MzRjMzkuLjJkZWYwYjk5MTkzNDJiMTg4
Zjg0YzYwYTczYjcwOTEyNTBmOGMxNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NGb250RmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5oCkBAIC00
MCw0NSArNDAsNDMgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ1NTU2VnbWVudGVk
Rm9udEZhY2U7CitjbGFzcyBDU1NWYWx1ZTsKK2NsYXNzIENTU1ZhbHVlTGlzdDsKIGNsYXNzIEZv
bnREZXNjcmlwdGlvbjsKIGNsYXNzIEZvbnQ7CiAKIGNsYXNzIENTU0ZvbnRGYWNlIDogcHVibGlj
IFJlZkNvdW50ZWQ8Q1NTRm9udEZhY2U+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPENTU0Zv
bnRGYWNlPiBjcmVhdGUoRm9udFRyYWl0c01hc2sgdHJhaXRzTWFzaywgYm9vbCBpc0xvY2FsRmFs
bGJhY2sgPSBmYWxzZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NGb250RmFjZSh0cmFpdHNN
YXNrLCBpc0xvY2FsRmFsbGJhY2spKTsgfQotCi0gICAgRm9udFRyYWl0c01hc2sgdHJhaXRzTWFz
aygpIGNvbnN0IHsgcmV0dXJuIG1fdHJhaXRzTWFzazsgfQorICAgIHN0YXRpYyBSZWY8Q1NTRm9u
dEZhY2U+IGNyZWF0ZShib29sIGlzTG9jYWxGYWxsYmFjayA9IGZhbHNlKSB7IHJldHVybiBhZG9w
dFJlZigqbmV3IENTU0ZvbnRGYWNlKGlzTG9jYWxGYWxsYmFjaykpOyB9CisgICAgdmlydHVhbCB+
Q1NTRm9udEZhY2UoKTsKKworICAgIGJvb2wgc2V0RmFtaWxpZXMoQ1NTVmFsdWUmKTsKKyAgICBi
b29sIHNldFN0eWxlKENTU1ZhbHVlJik7CisgICAgYm9vbCBzZXRXZWlnaHQoQ1NTVmFsdWUmKTsK
KyAgICBib29sIHNldFVuaWNvZGVSYW5nZShDU1NWYWx1ZSYpOworICAgIGJvb2wgc2V0VmFyaWFu
dExpZ2F0dXJlcyhDU1NWYWx1ZSYpOworICAgIGJvb2wgc2V0VmFyaWFudFBvc2l0aW9uKENTU1Zh
bHVlJik7CisgICAgYm9vbCBzZXRWYXJpYW50Q2FwcyhDU1NWYWx1ZSYpOworICAgIGJvb2wgc2V0
VmFyaWFudE51bWVyaWMoQ1NTVmFsdWUmKTsKKyAgICBib29sIHNldFZhcmlhbnRBbHRlcm5hdGVz
KENTU1ZhbHVlJik7CisgICAgYm9vbCBzZXRWYXJpYW50RWFzdEFzaWFuKENTU1ZhbHVlJik7Cisg
ICAgYm9vbCBzZXRGZWF0dXJlU2V0dGluZ3MoQ1NTVmFsdWUmKTsKIAogICAgIHN0cnVjdCBVbmlj
b2RlUmFuZ2U7Ci0KLSAgICB2b2lkIGFkZFJhbmdlKFVDaGFyMzIgZnJvbSwgVUNoYXIzMiB0bykg
eyBtX3Jhbmdlcy5hcHBlbmQoVW5pY29kZVJhbmdlKGZyb20sIHRvKSk7IH0KKyAgICBjb25zdCBD
U1NWYWx1ZUxpc3QqIGZhbWlsaWVzKCkgY29uc3QgeyByZXR1cm4gbV9mYW1pbGllcy5nZXQoKTsg
fQorICAgIEZvbnRUcmFpdHNNYXNrIHRyYWl0c01hc2soKSBjb25zdCB7IHJldHVybiBtX3RyYWl0
c01hc2s7IH0KICAgICBjb25zdCBWZWN0b3I8VW5pY29kZVJhbmdlPiYgcmFuZ2VzKCkgY29uc3Qg
eyByZXR1cm4gbV9yYW5nZXM7IH0KLQotICAgIHZvaWQgaW5zZXJ0RmVhdHVyZShGb250RmVhdHVy
ZSYmIGZlYXR1cmUpIHsgbV9mZWF0dXJlU2V0dGluZ3MuaW5zZXJ0KFdURk1vdmUoZmVhdHVyZSkp
OyB9Ci0KLSAgICB2b2lkIHNldFZhcmlhbnRDb21tb25MaWdhdHVyZXMoRm9udFZhcmlhbnRMaWdh
dHVyZXMgbGlnYXR1cmVzKSB7IG1fdmFyaWFudFNldHRpbmdzLmNvbW1vbkxpZ2F0dXJlcyA9IGxp
Z2F0dXJlczsgfQotICAgIHZvaWQgc2V0VmFyaWFudERpc2NyZXRpb25hcnlMaWdhdHVyZXMoRm9u
dFZhcmlhbnRMaWdhdHVyZXMgbGlnYXR1cmVzKSB7IG1fdmFyaWFudFNldHRpbmdzLmRpc2NyZXRp
b25hcnlMaWdhdHVyZXMgPSBsaWdhdHVyZXM7IH0KLSAgICB2b2lkIHNldFZhcmlhbnRIaXN0b3Jp
Y2FsTGlnYXR1cmVzKEZvbnRWYXJpYW50TGlnYXR1cmVzIGxpZ2F0dXJlcykgeyBtX3ZhcmlhbnRT
ZXR0aW5ncy5oaXN0b3JpY2FsTGlnYXR1cmVzID0gbGlnYXR1cmVzOyB9Ci0gICAgdm9pZCBzZXRW
YXJpYW50Q29udGV4dHVhbEFsdGVybmF0ZXMoRm9udFZhcmlhbnRMaWdhdHVyZXMgbGlnYXR1cmVz
KSB7IG1fdmFyaWFudFNldHRpbmdzLmNvbnRleHR1YWxBbHRlcm5hdGVzID0gbGlnYXR1cmVzOyB9
Ci0gICAgdm9pZCBzZXRWYXJpYW50UG9zaXRpb24oRm9udFZhcmlhbnRQb3NpdGlvbiBwb3NpdGlv
bikgeyBtX3ZhcmlhbnRTZXR0aW5ncy5wb3NpdGlvbiA9IHBvc2l0aW9uOyB9Ci0gICAgdm9pZCBz
ZXRWYXJpYW50Q2FwcyhGb250VmFyaWFudENhcHMgY2FwcykgeyBtX3ZhcmlhbnRTZXR0aW5ncy5j
YXBzID0gY2FwczsgfQotICAgIHZvaWQgc2V0VmFyaWFudE51bWVyaWNGaWd1cmUoRm9udFZhcmlh
bnROdW1lcmljRmlndXJlIGZpZ3VyZSkgeyBtX3ZhcmlhbnRTZXR0aW5ncy5udW1lcmljRmlndXJl
ID0gZmlndXJlOyB9Ci0gICAgdm9pZCBzZXRWYXJpYW50TnVtZXJpY1NwYWNpbmcoRm9udFZhcmlh
bnROdW1lcmljU3BhY2luZyBzcGFjaW5nKSB7IG1fdmFyaWFudFNldHRpbmdzLm51bWVyaWNTcGFj
aW5nID0gc3BhY2luZzsgfQotICAgIHZvaWQgc2V0VmFyaWFudE51bWVyaWNGcmFjdGlvbihGb250
VmFyaWFudE51bWVyaWNGcmFjdGlvbiBmcmFjdGlvbikgeyBtX3ZhcmlhbnRTZXR0aW5ncy5udW1l
cmljRnJhY3Rpb24gPSBmcmFjdGlvbjsgfQotICAgIHZvaWQgc2V0VmFyaWFudE51bWVyaWNPcmRp
bmFsKEZvbnRWYXJpYW50TnVtZXJpY09yZGluYWwgb3JkaW5hbCkgeyBtX3ZhcmlhbnRTZXR0aW5n
cy5udW1lcmljT3JkaW5hbCA9IG9yZGluYWw7IH0KLSAgICB2b2lkIHNldFZhcmlhbnROdW1lcmlj
U2xhc2hlZFplcm8oRm9udFZhcmlhbnROdW1lcmljU2xhc2hlZFplcm8gc2xhc2hlZFplcm8pIHsg
bV92YXJpYW50U2V0dGluZ3MubnVtZXJpY1NsYXNoZWRaZXJvID0gc2xhc2hlZFplcm87IH0KLSAg
ICB2b2lkIHNldFZhcmlhbnRBbHRlcm5hdGVzKEZvbnRWYXJpYW50QWx0ZXJuYXRlcyBhbHRlcm5h
dGVzKSB7IG1fdmFyaWFudFNldHRpbmdzLmFsdGVybmF0ZXMgPSBhbHRlcm5hdGVzOyB9Ci0gICAg
dm9pZCBzZXRWYXJpYW50RWFzdEFzaWFuVmFyaWFudChGb250VmFyaWFudEVhc3RBc2lhblZhcmlh
bnQgdmFyaWFudCkgeyBtX3ZhcmlhbnRTZXR0aW5ncy5lYXN0QXNpYW5WYXJpYW50ID0gdmFyaWFu
dDsgfQotICAgIHZvaWQgc2V0VmFyaWFudEVhc3RBc2lhbldpZHRoKEZvbnRWYXJpYW50RWFzdEFz
aWFuV2lkdGggd2lkdGgpIHsgbV92YXJpYW50U2V0dGluZ3MuZWFzdEFzaWFuV2lkdGggPSB3aWR0
aDsgfQotICAgIHZvaWQgc2V0VmFyaWFudEVhc3RBc2lhblJ1YnkoRm9udFZhcmlhbnRFYXN0QXNp
YW5SdWJ5IHJ1YnkpIHsgbV92YXJpYW50U2V0dGluZ3MuZWFzdEFzaWFuUnVieSA9IHJ1Ynk7IH0K
KyAgICBjb25zdCBGb250RmVhdHVyZVNldHRpbmdzJiBmZWF0dXJlU2V0dGluZ3MoKSBjb25zdCB7
IHJldHVybiBtX2ZlYXR1cmVTZXR0aW5nczsgfQorICAgIGNvbnN0IEZvbnRWYXJpYW50U2V0dGlu
Z3MmIHZhcmlhbnRTZXR0aW5ncygpIGNvbnN0IHsgcmV0dXJuIG1fdmFyaWFudFNldHRpbmdzOyB9
CisgICAgdm9pZCBzZXRWYXJpYW50U2V0dGluZ3MoY29uc3QgRm9udFZhcmlhbnRTZXR0aW5ncyYg
dmFyaWFudFNldHRpbmdzKSB7IG1fdmFyaWFudFNldHRpbmdzID0gdmFyaWFudFNldHRpbmdzOyB9
CisgICAgdm9pZCBzZXRUcmFpdHNNYXNrKEZvbnRUcmFpdHNNYXNrIHRyYWl0c01hc2spIHsgbV90
cmFpdHNNYXNrID0gdHJhaXRzTWFzazsgfQorICAgIGJvb2wgaXNMb2NhbEZhbGxiYWNrKCkgY29u
c3QgeyByZXR1cm4gbV9pc0xvY2FsRmFsbGJhY2s7IH0KIAogICAgIHZvaWQgYWRkZWRUb1NlZ21l
bnRlZEZvbnRGYWNlKENTU1NlZ21lbnRlZEZvbnRGYWNlJik7CiAgICAgdm9pZCByZW1vdmVkRnJv
bVNlZ21lbnRlZEZvbnRGYWNlKENTU1NlZ21lbnRlZEZvbnRGYWNlJik7CiAKICAgICBib29sIGFs
bFNvdXJjZXNGYWlsZWQoKSBjb25zdDsKIAotICAgIGJvb2wgaXNMb2NhbEZhbGxiYWNrKCkgY29u
c3QgeyByZXR1cm4gbV9pc0xvY2FsRmFsbGJhY2s7IH0KLQogICAgIHZvaWQgYWRvcHRTb3VyY2Uo
c3RkOjp1bmlxdWVfcHRyPENTU0ZvbnRGYWNlU291cmNlPiYmKTsKIAogICAgIHZvaWQgZm9udExv
YWRlZChDU1NGb250RmFjZVNvdXJjZSYpOwpAQCAtMTA1LDEyICsxMDMsOSBAQCBwdWJsaWM6CiAj
ZW5kaWYKIAogcHJpdmF0ZToKLSAgICBDU1NGb250RmFjZShGb250VHJhaXRzTWFzayB0cmFpdHNN
YXNrLCBib29sIGlzTG9jYWxGYWxsYmFjaykKLSAgICAgICAgOiBtX3RyYWl0c01hc2sodHJhaXRz
TWFzaykKLSAgICAgICAgLCBtX2lzTG9jYWxGYWxsYmFjayhpc0xvY2FsRmFsbGJhY2spCi0gICAg
ewotICAgIH0KKyAgICBDU1NGb250RmFjZShib29sIGlzTG9jYWxGYWxsYmFjayk7CiAKKyAgICBS
ZWZQdHI8Q1NTVmFsdWVMaXN0PiBtX2ZhbWlsaWVzOwogICAgIEZvbnRUcmFpdHNNYXNrIG1fdHJh
aXRzTWFzazsKICAgICBWZWN0b3I8VW5pY29kZVJhbmdlPiBtX3JhbmdlczsKICAgICBIYXNoU2V0
PENTU1NlZ21lbnRlZEZvbnRGYWNlKj4gbV9zZWdtZW50ZWRGb250RmFjZXM7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NGb250U2VsZWN0b3IuY3BwCmluZGV4IDljODE2MWE3Y2Q5ZTkzOTk0M2EzMzczZWQ5
YWFjM2Y3MmQ2MGRiYzguLmJjMmEzN2I5OWY3YTNhODVjMDMwYWE4MDNiMDM4NjVlNjBiYjE5NTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuY3BwCkBAIC00MSw2ICs0MSw3IEBA
CiAjaW5jbHVkZSAiQ1NTVW5pY29kZVJhbmdlVmFsdWUuaCIKICNpbmNsdWRlICJDU1NWYWx1ZUtl
eXdvcmRzLmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWVMaXN0LmgiCisjaW5jbHVkZSAiQ1NTVmFsdWVQ
b29sLmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJEb2N1
bWVudC5oIgogI2luY2x1ZGUgIkZvbnQuaCIKQEAgLTg3LDc1ICs4OCw4IEBAIGJvb2wgQ1NTRm9u
dFNlbGVjdG9yOjppc0VtcHR5KCkgY29uc3QKICAgICByZXR1cm4gbV9mb250cy5pc0VtcHR5KCk7
CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxGb250VHJhaXRzTWFzaz4gY29tcHV0ZVRyYWl0c01hc2so
Y29uc3QgU3R5bGVQcm9wZXJ0aWVzJiBzdHlsZSkKK3N0YXRpYyB2b2lkIGFwcGVuZFNvdXJjZXMo
Q1NTRm9udEZhY2UmIGZvbnRGYWNlLCBDU1NWYWx1ZUxpc3QmIHNyY0xpc3QsIERvY3VtZW50KiBk
b2N1bWVudCwgYm9vbCBpc0luaXRpYXRpbmdFbGVtZW50SW5Vc2VyQWdlbnRTaGFkb3dUcmVlKQog
ewotICAgIHVuc2lnbmVkIHRyYWl0c01hc2sgPSAwOwotCi0gICAgaWYgKFJlZlB0cjxDU1NWYWx1
ZT4gZm9udFN0eWxlID0gc3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eUZvbnRT
dHlsZSkpIHsKLSAgICAgICAgaWYgKCFpczxDU1NQcmltaXRpdmVWYWx1ZT4oKmZvbnRTdHlsZSkp
Ci0gICAgICAgICAgICByZXR1cm4gTnVsbG9wdDsKLQotICAgICAgICBzd2l0Y2ggKGRvd25jYXN0
PENTU1ByaW1pdGl2ZVZhbHVlPigqZm9udFN0eWxlKS5nZXRWYWx1ZUlEKCkpIHsKLSAgICAgICAg
Y2FzZSBDU1NWYWx1ZU5vcm1hbDoKLSAgICAgICAgICAgIHRyYWl0c01hc2sgfD0gRm9udFN0eWxl
Tm9ybWFsTWFzazsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENTU1ZhbHVlSXRh
bGljOgotICAgICAgICBjYXNlIENTU1ZhbHVlT2JsaXF1ZToKLSAgICAgICAgICAgIHRyYWl0c01h
c2sgfD0gRm9udFN0eWxlSXRhbGljTWFzazsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBk
ZWZhdWx0OgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UKLSAgICAg
ICAgdHJhaXRzTWFzayB8PSBGb250U3R5bGVOb3JtYWxNYXNrOwotCi0gICAgaWYgKFJlZlB0cjxD
U1NWYWx1ZT4gZm9udFdlaWdodCA9IHN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVy
dHlGb250V2VpZ2h0KSkgewotICAgICAgICBpZiAoIWlzPENTU1ByaW1pdGl2ZVZhbHVlPigqZm9u
dFdlaWdodCkpCi0gICAgICAgICAgICByZXR1cm4gTnVsbG9wdDsKLQotICAgICAgICBzd2l0Y2gg
KGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqZm9udFdlaWdodCkuZ2V0VmFsdWVJRCgpKSB7
Ci0gICAgICAgIGNhc2UgQ1NTVmFsdWVCb2xkOgotICAgICAgICBjYXNlIENTU1ZhbHVlNzAwOgot
ICAgICAgICAgICAgdHJhaXRzTWFzayB8PSBGb250V2VpZ2h0NzAwTWFzazsKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICBjYXNlIENTU1ZhbHVlTm9ybWFsOgotICAgICAgICBjYXNlIENTU1Zh
bHVlNDAwOgotICAgICAgICAgICAgdHJhaXRzTWFzayB8PSBGb250V2VpZ2h0NDAwTWFzazsKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENTU1ZhbHVlOTAwOgotICAgICAgICAgICAg
dHJhaXRzTWFzayB8PSBGb250V2VpZ2h0OTAwTWFzazsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBjYXNlIENTU1ZhbHVlODAwOgotICAgICAgICAgICAgdHJhaXRzTWFzayB8PSBGb250V2Vp
Z2h0ODAwTWFzazsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENTU1ZhbHVlNjAw
OgotICAgICAgICAgICAgdHJhaXRzTWFzayB8PSBGb250V2VpZ2h0NjAwTWFzazsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICBjYXNlIENTU1ZhbHVlNTAwOgotICAgICAgICAgICAgdHJhaXRz
TWFzayB8PSBGb250V2VpZ2h0NTAwTWFzazsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBj
YXNlIENTU1ZhbHVlMzAwOgotICAgICAgICAgICAgdHJhaXRzTWFzayB8PSBGb250V2VpZ2h0MzAw
TWFzazsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENTU1ZhbHVlMjAwOgotICAg
ICAgICAgICAgdHJhaXRzTWFzayB8PSBGb250V2VpZ2h0MjAwTWFzazsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICBjYXNlIENTU1ZhbHVlMTAwOgotICAgICAgICAgICAgdHJhaXRzTWFzayB8
PSBGb250V2VpZ2h0MTAwTWFzazsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0
OgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UKLSAgICAgICAgdHJh
aXRzTWFzayB8PSBGb250V2VpZ2h0NDAwTWFzazsKLQotICAgIHJldHVybiBzdGF0aWNfY2FzdDxG
b250VHJhaXRzTWFzaz4odHJhaXRzTWFzayk7Ci19Ci0KLXN0YXRpYyBSZWY8Q1NTRm9udEZhY2U+
IGNyZWF0ZUZvbnRGYWNlKENTU1ZhbHVlTGlzdCYgc3JjTGlzdCwgRm9udFRyYWl0c01hc2sgdHJh
aXRzTWFzaywgRG9jdW1lbnQqIGRvY3VtZW50LCBib29sIGlzSW5pdGlhdGluZ0VsZW1lbnRJblVz
ZXJBZ2VudFNoYWRvd1RyZWUpCi17Ci0gICAgUmVmPENTU0ZvbnRGYWNlPiBmb250RmFjZSA9IENT
U0ZvbnRGYWNlOjpjcmVhdGUodHJhaXRzTWFzayk7Ci0KICAgICBmb3IgKGF1dG8mIHNyYyA6IHNy
Y0xpc3QpIHsKICAgICAgICAgLy8gQW4gaXRlbSBpbiB0aGUgbGlzdCBlaXRoZXIgc3BlY2lmaWVz
IGEgc3RyaW5nIChsb2NhbCBmb250IG5hbWUpIG9yIGEgVVJMIChyZW1vdGUgZm9udCB0byBkb3du
bG9hZCkuCiAgICAgICAgIENTU0ZvbnRGYWNlU3JjVmFsdWUmIGl0ZW0gPSBkb3duY2FzdDxDU1NG
b250RmFjZVNyY1ZhbHVlPihzcmMuZ2V0KCkpOwpAQCAtMTcyLDE2ICsxMDYsMTQgQEAgc3RhdGlj
IFJlZjxDU1NGb250RmFjZT4gY3JlYXRlRm9udEZhY2UoQ1NTVmFsdWVMaXN0JiBzcmNMaXN0LCBG
b250VHJhaXRzTWFzayB0cmEKICAgICAgICAgICAgIGJvb2wgYWxsb3dEb3dubG9hZGluZyA9IGZv
dW5kU1ZHRm9udCB8fCAoc2V0dGluZ3MgJiYgc2V0dGluZ3MtPmRvd25sb2FkYWJsZUJpbmFyeUZv
bnRzRW5hYmxlZCgpKTsKICAgICAgICAgICAgIGlmIChhbGxvd0Rvd25sb2FkaW5nICYmIGl0ZW0u
aXNTdXBwb3J0ZWRGb3JtYXQoKSAmJiBkb2N1bWVudCkgewogICAgICAgICAgICAgICAgIGlmIChD
YWNoZWRGb250KiBjYWNoZWRGb250ID0gaXRlbS5jYWNoZWRGb250KGRvY3VtZW50LCBmb3VuZFNW
R0ZvbnQsIGlzSW5pdGlhdGluZ0VsZW1lbnRJblVzZXJBZ2VudFNoYWRvd1RyZWUpKQotICAgICAg
ICAgICAgICAgICAgICBzb3VyY2UgPSBzdGQ6Om1ha2VfdW5pcXVlPENTU0ZvbnRGYWNlU291cmNl
Pihmb250RmFjZS5nZXQoKSwgaXRlbS5yZXNvdXJjZSgpLCBjYWNoZWRGb250KTsKKyAgICAgICAg
ICAgICAgICAgICAgc291cmNlID0gc3RkOjptYWtlX3VuaXF1ZTxDU1NGb250RmFjZVNvdXJjZT4o
Zm9udEZhY2UsIGl0ZW0ucmVzb3VyY2UoKSwgY2FjaGVkRm9udCk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0gZWxzZQotICAgICAgICAgICAgc291cmNlID0gc3RkOjptYWtlX3VuaXF1ZTxDU1NG
b250RmFjZVNvdXJjZT4oZm9udEZhY2UuZ2V0KCksIGl0ZW0ucmVzb3VyY2UoKSwgbnVsbHB0ciwg
Zm9udEZhY2VFbGVtZW50KTsKKyAgICAgICAgICAgIHNvdXJjZSA9IHN0ZDo6bWFrZV91bmlxdWU8
Q1NTRm9udEZhY2VTb3VyY2U+KGZvbnRGYWNlLCBpdGVtLnJlc291cmNlKCksIG51bGxwdHIsIGZv
bnRGYWNlRWxlbWVudCk7CiAKICAgICAgICAgaWYgKHNvdXJjZSkKLSAgICAgICAgICAgIGZvbnRG
YWNlLT5hZG9wdFNvdXJjZShXVEZNb3ZlKHNvdXJjZSkpOworICAgICAgICAgICAgZm9udEZhY2Uu
YWRvcHRTb3VyY2UoV1RGTW92ZShzb3VyY2UpKTsKICAgICB9Ci0KLSAgICByZXR1cm4gZm9udEZh
Y2U7CiB9CiAKIHN0YXRpYyBTdHJpbmcgZmFtaWx5TmFtZUZyb21QcmltaXRpdmUoY29uc3QgQ1NT
UHJpbWl0aXZlVmFsdWUmIHZhbHVlKQpAQCAtMjIxLDcgKzE1Myw4IEBAIHN0YXRpYyB2b2lkIHJl
Z2lzdGVyTG9jYWxGb250RmFjZXNGb3JGYW1pbHkoY29uc3QgU3RyaW5nJiBmYW1pbHlOYW1lLCBI
YXNoTWFwPFN0CiAKICAgICBWZWN0b3I8UmVmPENTU0ZvbnRGYWNlPj4gZmFjZXMgPSB7IH07CiAg
ICAgZm9yIChhdXRvIG1hc2sgOiB0cmFpdHNNYXNrcykgewotICAgICAgICBSZWY8Q1NTRm9udEZh
Y2U+IGZhY2UgPSBDU1NGb250RmFjZTo6Y3JlYXRlKG1hc2ssIHRydWUpOworICAgICAgICBSZWY8
Q1NTRm9udEZhY2U+IGZhY2UgPSBDU1NGb250RmFjZTo6Y3JlYXRlKHRydWUpOworICAgICAgICBm
YWNlLT5zZXRUcmFpdHNNYXNrKG1hc2spOwogICAgICAgICBmYWNlLT5hZG9wdFNvdXJjZShzdGQ6
Om1ha2VfdW5pcXVlPENTU0ZvbnRGYWNlU291cmNlPihmYWNlLmdldCgpLCBmYW1pbHlOYW1lKSk7
CiAgICAgICAgIEFTU0VSVCghZmFjZS0+YWxsU291cmNlc0ZhaWxlZCgpKTsKICAgICAgICAgZmFj
ZXMuYXBwZW5kKFdURk1vdmUoZmFjZSkpOwpAQCAtMjMzLDYgKzE2Niw4IEBAIHZvaWQgQ1NTRm9u
dFNlbGVjdG9yOjphZGRGb250RmFjZVJ1bGUoY29uc3QgU3R5bGVSdWxlRm9udEZhY2UmIGZvbnRG
YWNlUnVsZSwgYm9vCiB7CiAgICAgY29uc3QgU3R5bGVQcm9wZXJ0aWVzJiBzdHlsZSA9IGZvbnRG
YWNlUnVsZS5wcm9wZXJ0aWVzKCk7CiAgICAgUmVmUHRyPENTU1ZhbHVlPiBmb250RmFtaWx5ID0g
c3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eUZvbnRGYW1pbHkpOworICAgIFJl
ZlB0cjxDU1NWYWx1ZT4gZm9udFN0eWxlID0gc3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQ
cm9wZXJ0eUZvbnRTdHlsZSk7CisgICAgUmVmUHRyPENTU1ZhbHVlPiBmb250V2VpZ2h0ID0gc3R5
bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eUZvbnRXZWlnaHQpOwogICAgIFJlZlB0
cjxDU1NWYWx1ZT4gc3JjID0gc3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eVNy
Yyk7CiAgICAgUmVmUHRyPENTU1ZhbHVlPiB1bmljb2RlUmFuZ2UgPSBzdHlsZS5nZXRQcm9wZXJ0
eUNTU1ZhbHVlKENTU1Byb3BlcnR5VW5pY29kZVJhbmdlKTsKICAgICBSZWZQdHI8Q1NTVmFsdWU+
IGZlYXR1cmVTZXR0aW5ncyA9IHN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlG
b250RmVhdHVyZVNldHRpbmdzKTsKQEAgLTI0OSw1NCArMTg0LDQ3IEBAIHZvaWQgQ1NTRm9udFNl
bGVjdG9yOjphZGRGb250RmFjZVJ1bGUoY29uc3QgU3R5bGVSdWxlRm9udEZhY2UmIGZvbnRGYWNl
UnVsZSwgYm9vCiAgICAgaWYgKCFmYW1pbHlMaXN0Lmxlbmd0aCgpKQogICAgICAgICByZXR1cm47
CiAKKyAgICBpZiAoIWZvbnRTdHlsZSkKKyAgICAgICAgZm9udFN0eWxlID0gQ1NTVmFsdWVQb29s
OjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVOb3JtYWwpLnB0cigp
OworCisgICAgaWYgKCFmb250V2VpZ2h0KQorICAgICAgICBmb250V2VpZ2h0ID0gQ1NTVmFsdWVQ
b29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVOb3JtYWwpOwor
CisgICAgQ1NTVmFsdWVMaXN0KiByYW5nZUxpc3QgPSBkb3duY2FzdDxDU1NWYWx1ZUxpc3Q+KHVu
aWNvZGVSYW5nZS5nZXQoKSk7CisKICAgICBDU1NWYWx1ZUxpc3QmIHNyY0xpc3QgPSBkb3duY2Fz
dDxDU1NWYWx1ZUxpc3Q+KCpzcmMpOwogICAgIGlmICghc3JjTGlzdC5sZW5ndGgoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgQ1NTVmFsdWVMaXN0KiByYW5nZUxpc3QgPSBkb3duY2FzdDxDU1NW
YWx1ZUxpc3Q+KHVuaWNvZGVSYW5nZS5nZXQoKSk7CisgICAgUmVmPENTU0ZvbnRGYWNlPiBmb250
RmFjZSA9IENTU0ZvbnRGYWNlOjpjcmVhdGUoKTsKIAotICAgIGF1dG8gY29tcHV0ZWRUcmFpdHNN
YXNrID0gY29tcHV0ZVRyYWl0c01hc2soc3R5bGUpOwotICAgIGlmICghY29tcHV0ZWRUcmFpdHNN
YXNrKQorICAgIGlmICghZm9udEZhY2UtPnNldEZhbWlsaWVzKCpmb250RmFtaWx5KSkKKyAgICAg
ICAgcmV0dXJuOworICAgIGlmICghZm9udEZhY2UtPnNldFN0eWxlKCpmb250U3R5bGUpKQorICAg
ICAgICByZXR1cm47CisgICAgaWYgKCFmb250RmFjZS0+c2V0V2VpZ2h0KCpmb250V2VpZ2h0KSkK
KyAgICAgICAgcmV0dXJuOworICAgIGlmIChyYW5nZUxpc3QgJiYgIWZvbnRGYWNlLT5zZXRVbmlj
b2RlUmFuZ2UoKnJhbmdlTGlzdCkpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAodmFyaWFudExp
Z2F0dXJlcyAmJiAhZm9udEZhY2UtPnNldFZhcmlhbnRMaWdhdHVyZXMoKnZhcmlhbnRMaWdhdHVy
ZXMpKQorICAgICAgICByZXR1cm47CisgICAgaWYgKHZhcmlhbnRQb3NpdGlvbiAmJiAhZm9udEZh
Y2UtPnNldFZhcmlhbnRQb3NpdGlvbigqdmFyaWFudFBvc2l0aW9uKSkKKyAgICAgICAgcmV0dXJu
OworICAgIGlmICh2YXJpYW50Q2FwcyAmJiAhZm9udEZhY2UtPnNldFZhcmlhbnRDYXBzKCp2YXJp
YW50Q2FwcykpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAodmFyaWFudE51bWVyaWMgJiYgIWZv
bnRGYWNlLT5zZXRWYXJpYW50TnVtZXJpYygqdmFyaWFudE51bWVyaWMpKQorICAgICAgICByZXR1
cm47CisgICAgaWYgKHZhcmlhbnRBbHRlcm5hdGVzICYmICFmb250RmFjZS0+c2V0VmFyaWFudEFs
dGVybmF0ZXMoKnZhcmlhbnRBbHRlcm5hdGVzKSkKKyAgICAgICAgcmV0dXJuOworICAgIGlmICh2
YXJpYW50RWFzdEFzaWFuICYmICFmb250RmFjZS0+c2V0VmFyaWFudEVhc3RBc2lhbigqdmFyaWFu
dEVhc3RBc2lhbikpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAoZmVhdHVyZVNldHRpbmdzICYm
ICFmb250RmFjZS0+c2V0RmVhdHVyZVNldHRpbmdzKCpmZWF0dXJlU2V0dGluZ3MpKQogICAgICAg
ICByZXR1cm47Ci0gICAgYXV0byB0cmFpdHNNYXNrID0gY29tcHV0ZWRUcmFpdHNNYXNrLnZhbHVl
KCk7CiAKLSAgICBSZWY8Q1NTRm9udEZhY2U+IGZvbnRGYWNlID0gY3JlYXRlRm9udEZhY2Uoc3Jj
TGlzdCwgdHJhaXRzTWFzaywgbV9kb2N1bWVudCwgaXNJbml0aWF0aW5nRWxlbWVudEluVXNlckFn
ZW50U2hhZG93VHJlZSk7CisgICAgYXBwZW5kU291cmNlcyhmb250RmFjZSwgc3JjTGlzdCwgbV9k
b2N1bWVudCwgaXNJbml0aWF0aW5nRWxlbWVudEluVXNlckFnZW50U2hhZG93VHJlZSk7CiAgICAg
aWYgKGZvbnRGYWNlLT5hbGxTb3VyY2VzRmFpbGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IGlmIChyYW5nZUxpc3QpIHsKLSAgICAgICAgdW5zaWduZWQgbnVtUmFuZ2VzID0gcmFuZ2VMaXN0
LT5sZW5ndGgoKTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bVJhbmdlczsg
aSsrKSB7Ci0gICAgICAgICAgICBDU1NVbmljb2RlUmFuZ2VWYWx1ZSYgcmFuZ2UgPSBkb3duY2Fz
dDxDU1NVbmljb2RlUmFuZ2VWYWx1ZT4oKnJhbmdlTGlzdC0+aXRlbVdpdGhvdXRCb3VuZHNDaGVj
ayhpKSk7Ci0gICAgICAgICAgICBmb250RmFjZS0+YWRkUmFuZ2UocmFuZ2UuZnJvbSgpLCByYW5n
ZS50bygpKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmIChmZWF0dXJlU2V0dGluZ3MpIHsK
LSAgICAgICAgZm9yIChhdXRvJiBpdGVtIDogZG93bmNhc3Q8Q1NTVmFsdWVMaXN0PigqZmVhdHVy
ZVNldHRpbmdzKSkgewotICAgICAgICAgICAgYXV0byYgZmVhdHVyZSA9IGRvd25jYXN0PENTU0Zv
bnRGZWF0dXJlVmFsdWU+KGl0ZW0uZ2V0KCkpOwotICAgICAgICAgICAgZm9udEZhY2UtPmluc2Vy
dEZlYXR1cmUoRm9udEZlYXR1cmUoZmVhdHVyZS50YWcoKSwgZmVhdHVyZS52YWx1ZSgpKSk7Ci0g
ICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAodmFyaWFudExpZ2F0dXJlcykKLSAgICAgICAgYXBw
bHlWYWx1ZUZvbnRWYXJpYW50TGlnYXR1cmVzKGZvbnRGYWNlLmdldCgpLCAqdmFyaWFudExpZ2F0
dXJlcyk7Ci0KLSAgICBpZiAodmFyaWFudFBvc2l0aW9uICYmIGlzPENTU1ByaW1pdGl2ZVZhbHVl
PigqdmFyaWFudFBvc2l0aW9uKSkKLSAgICAgICAgZm9udEZhY2UtPnNldFZhcmlhbnRQb3NpdGlv
bihkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnZhcmlhbnRQb3NpdGlvbikpOwotCi0gICAg
aWYgKHZhcmlhbnRDYXBzICYmIGlzPENTU1ByaW1pdGl2ZVZhbHVlPigqdmFyaWFudENhcHMpKQot
ICAgICAgICBmb250RmFjZS0+c2V0VmFyaWFudENhcHMoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFs
dWU+KCp2YXJpYW50Q2FwcykpOwotCi0gICAgaWYgKHZhcmlhbnROdW1lcmljKQotICAgICAgICBh
cHBseVZhbHVlRm9udFZhcmlhbnROdW1lcmljKGZvbnRGYWNlLmdldCgpLCAqdmFyaWFudE51bWVy
aWMpOwotCi0gICAgaWYgKHZhcmlhbnRBbHRlcm5hdGVzICYmIGlzPENTU1ByaW1pdGl2ZVZhbHVl
PigqdmFyaWFudEFsdGVybmF0ZXMpKQotICAgICAgICBmb250RmFjZS0+c2V0VmFyaWFudEFsdGVy
bmF0ZXMoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp2YXJpYW50QWx0ZXJuYXRlcykpOwot
Ci0gICAgaWYgKHZhcmlhbnRFYXN0QXNpYW4pCi0gICAgICAgIGFwcGx5VmFsdWVGb250VmFyaWFu
dEVhc3RBc2lhbihmb250RmFjZS5nZXQoKSwgKnZhcmlhbnRFYXN0QXNpYW4pOwotCiAgICAgZm9y
IChhdXRvJiBpdGVtIDogZmFtaWx5TGlzdCkgewogICAgICAgICBTdHJpbmcgZmFtaWx5TmFtZSA9
IGZhbWlseU5hbWVGcm9tUHJpbWl0aXZlKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPihpdGVt
LmdldCgpKSk7CiAgICAgICAgIGlmIChmYW1pbHlOYW1lLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9u
dEZhY2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVkNGE1YTY1MTkzMzBhYzU4NTA2ODViZDExZmM2MTFmYWY4
YjRjYzcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuY3Bw
CkBAIC0wLDAgKzEsMjA0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAyMDEx
LCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkZvbnRGYWNlLmgiCisKKyNpbmNsdWRlICJDU1NGb250RmFjZS5oIgorI2luY2x1ZGUgIkNTU0Zv
bnRGZWF0dXJlVmFsdWUuaCIKKyNpbmNsdWRlICJDU1NVbmljb2RlUmFuZ2VWYWx1ZS5oIgorI2lu
Y2x1ZGUgIkNTU1ZhbHVlLmgiCisjaW5jbHVkZSAiRm9udFZhcmlhbnRCdWlsZGVyLmgiCisjaW5j
bHVkZSAiU3R5bGVQcm9wZXJ0aWVzLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRl
ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0ZvbnRGYWNlOjpGb250RmFjZSgpCisgICAg
OiBtX2JhY2tpbmcoQ1NTRm9udEZhY2U6OmNyZWF0ZSgpKQoreworfQorCitGb250RmFjZTo6fkZv
bnRGYWNlKCkKK3sKK30KKworc3RhdGljIGlubGluZSBSZWZQdHI8Q1NTVmFsdWU+IHBhcnNlU3Ry
aW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQpCit7Cisg
ICAgUmVmPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IHN0eWxlID0gTXV0YWJsZVN0eWxlUHJvcGVy
dGllczo6Y3JlYXRlKCk7CisgICAgYXV0byByZXN1bHQgPSBDU1NQYXJzZXI6OnBhcnNlVmFsdWUo
c3R5bGUucHRyKCksIHByb3BlcnR5SUQsIHN0cmluZywgdHJ1ZSwgQ1NTU3RyaWN0TW9kZSwgbnVs
bHB0cik7CisgICAgaWYgKHJlc3VsdCA9PSBDU1NQYXJzZXI6OlBhcnNlUmVzdWx0OjpFcnJvcikK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIHN0eWxlLT5nZXRQcm9wZXJ0eUNT
U1ZhbHVlKHByb3BlcnR5SUQpOworfQorCit2b2lkIEZvbnRGYWNlOjpzZXRGYW1pbHkoY29uc3Qg
U3RyaW5nJiBmYW1pbHksIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGJvb2wgc3VjY2VzcyA9
IGZhbHNlOworICAgIGlmIChhdXRvIHZhbHVlID0gcGFyc2VTdHJpbmcoZmFtaWx5LCBDU1NQcm9w
ZXJ0eUZvbnRGYW1pbHkpKQorICAgICAgICBzdWNjZXNzID0gbV9iYWNraW5nLT5zZXRGYW1pbGll
cygqdmFsdWUpOworICAgIGlmICghc3VjY2VzcykKKyAgICAgICAgZWMgPSBTWU5UQVhfRVJSOwor
fQorCit2b2lkIEZvbnRGYWNlOjpzZXRTdHlsZShjb25zdCBTdHJpbmcmIHN0eWxlLCBFeGNlcHRp
b25Db2RlJiBlYykKK3sKKyAgICBib29sIHN1Y2Nlc3MgPSBmYWxzZTsKKyAgICBpZiAoYXV0byB2
YWx1ZSA9IHBhcnNlU3RyaW5nKHN0eWxlLCBDU1NQcm9wZXJ0eUZvbnRTdHlsZSkpCisgICAgICAg
IHN1Y2Nlc3MgPSBtX2JhY2tpbmctPnNldFN0eWxlKCp2YWx1ZSk7CisgICAgaWYgKCFzdWNjZXNz
KQorICAgICAgICBlYyA9IFNZTlRBWF9FUlI7Cit9CisKK3ZvaWQgRm9udEZhY2U6OnNldFdlaWdo
dChjb25zdCBTdHJpbmcmIHdlaWdodCwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgYm9vbCBz
dWNjZXNzID0gZmFsc2U7CisgICAgaWYgKGF1dG8gdmFsdWUgPSBwYXJzZVN0cmluZyh3ZWlnaHQs
IENTU1Byb3BlcnR5Rm9udFdlaWdodCkpCisgICAgICAgIHN1Y2Nlc3MgPSBtX2JhY2tpbmctPnNl
dFdlaWdodCgqdmFsdWUpOworICAgIGlmICghc3VjY2VzcykKKyAgICAgICAgZWMgPSBTWU5UQVhf
RVJSOworfQorCit2b2lkIEZvbnRGYWNlOjpzZXRTdHJldGNoKGNvbnN0IFN0cmluZyYsIEV4Y2Vw
dGlvbkNvZGUmKQoreworICAgIC8vIFdlIGRvbid0IHN1cHBvcnQgZm9udC1zdHJldGNoLiBTd2Fs
bG93IHRoZSBjYWxsLgorfQorCit2b2lkIEZvbnRGYWNlOjpzZXRVbmljb2RlUmFuZ2UoY29uc3Qg
U3RyaW5nJiB1bmljb2RlUmFuZ2UsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGJvb2wgc3Vj
Y2VzcyA9IGZhbHNlOworICAgIGlmIChhdXRvIHZhbHVlID0gcGFyc2VTdHJpbmcodW5pY29kZVJh
bmdlLCBDU1NQcm9wZXJ0eVVuaWNvZGVSYW5nZSkpCisgICAgICAgIHN1Y2Nlc3MgPSBtX2JhY2tp
bmctPnNldFVuaWNvZGVSYW5nZSgqdmFsdWUpOworICAgIGlmICghc3VjY2VzcykKKyAgICAgICAg
ZWMgPSBTWU5UQVhfRVJSOworfQorCit2b2lkIEZvbnRGYWNlOjpzZXRWYXJpYW50KGNvbnN0IFN0
cmluZyYgdmFyaWFudCwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgUmVmPE11dGFibGVTdHls
ZVByb3BlcnRpZXM+IHN0eWxlID0gTXV0YWJsZVN0eWxlUHJvcGVydGllczo6Y3JlYXRlKCk7Cisg
ICAgYXV0byByZXN1bHQgPSBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoc3R5bGUucHRyKCksIENTU1By
b3BlcnR5Rm9udFZhcmlhbnQsIHZhcmlhbnQsIHRydWUsIENTU1N0cmljdE1vZGUsIG51bGxwdHIp
OworICAgIGlmIChyZXN1bHQgIT0gQ1NTUGFyc2VyOjpQYXJzZVJlc3VsdDo6RXJyb3IpIHsKKyAg
ICAgICAgRm9udFZhcmlhbnRTZXR0aW5ncyBiYWNrdXAgPSBtX2JhY2tpbmctPnZhcmlhbnRTZXR0
aW5ncygpOworICAgICAgICBib29sIHN1Y2Nlc3MgPSB0cnVlOworICAgICAgICBpZiAoYXV0byB2
YWx1ZSA9IHN0eWxlLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5Rm9udFZhcmlhbnRM
aWdhdHVyZXMpKQorICAgICAgICAgICAgc3VjY2VzcyAmPSBtX2JhY2tpbmctPnNldFZhcmlhbnRM
aWdhdHVyZXMoKnZhbHVlKTsKKyAgICAgICAgaWYgKGF1dG8gdmFsdWUgPSBzdHlsZS0+Z2V0UHJv
cGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eUZvbnRWYXJpYW50UG9zaXRpb24pKQorICAgICAgICAg
ICAgc3VjY2VzcyAmPSBtX2JhY2tpbmctPnNldFZhcmlhbnRQb3NpdGlvbigqdmFsdWUpOworICAg
ICAgICBpZiAoYXV0byB2YWx1ZSA9IHN0eWxlLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3Bl
cnR5Rm9udFZhcmlhbnRDYXBzKSkKKyAgICAgICAgICAgIHN1Y2Nlc3MgJj0gbV9iYWNraW5nLT5z
ZXRWYXJpYW50Q2FwcygqdmFsdWUpOworICAgICAgICBpZiAoYXV0byB2YWx1ZSA9IHN0eWxlLT5n
ZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5Rm9udFZhcmlhbnROdW1lcmljKSkKKyAgICAg
ICAgICAgIHN1Y2Nlc3MgJj0gbV9iYWNraW5nLT5zZXRWYXJpYW50TnVtZXJpYygqdmFsdWUpOwor
ICAgICAgICBpZiAoYXV0byB2YWx1ZSA9IHN0eWxlLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1By
b3BlcnR5Rm9udFZhcmlhbnRBbHRlcm5hdGVzKSkKKyAgICAgICAgICAgIHN1Y2Nlc3MgJj0gbV9i
YWNraW5nLT5zZXRWYXJpYW50QWx0ZXJuYXRlcygqdmFsdWUpOworICAgICAgICBpZiAoYXV0byB2
YWx1ZSA9IHN0eWxlLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5Rm9udFZhcmlhbnRF
YXN0QXNpYW4pKQorICAgICAgICAgICAgc3VjY2VzcyAmPSBtX2JhY2tpbmctPnNldFZhcmlhbnRF
YXN0QXNpYW4oKnZhbHVlKTsKKyAgICAgICAgaWYgKHN1Y2Nlc3MpCisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIG1fYmFja2luZy0+c2V0VmFyaWFudFNldHRpbmdzKGJhY2t1cCk7CisgICAg
fQorICAgIGVjID0gU1lOVEFYX0VSUjsKK30KKwordm9pZCBGb250RmFjZTo6c2V0RmVhdHVyZVNl
dHRpbmdzKGNvbnN0IFN0cmluZyYgZmVhdHVyZVNldHRpbmdzLCBFeGNlcHRpb25Db2RlJiBlYykK
K3sKKyAgICBib29sIHN1Y2Nlc3MgPSBmYWxzZTsKKyAgICBpZiAoYXV0byB2YWx1ZSA9IHBhcnNl
U3RyaW5nKGZlYXR1cmVTZXR0aW5ncywgQ1NTUHJvcGVydHlGb250RmVhdHVyZVNldHRpbmdzKSkK
KyAgICAgICAgc3VjY2VzcyA9IG1fYmFja2luZy0+c2V0RmVhdHVyZVNldHRpbmdzKCp2YWx1ZSk7
CisgICAgaWYgKCFzdWNjZXNzKQorICAgICAgICBlYyA9IFNZTlRBWF9FUlI7Cit9CisKK1N0cmlu
ZyBGb250RmFjZTo6ZmFtaWx5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9iYWNraW5nLT5mYW1p
bGllcygpLT5jc3NUZXh0KCk7Cit9CisKK1N0cmluZyBGb250RmFjZTo6c3R5bGUoKSBjb25zdAor
eworICAgIHN3aXRjaCAobV9iYWNraW5nLT50cmFpdHNNYXNrKCkgJiBGb250U3R5bGVNYXNrKSB7
CisgICAgY2FzZSBGb250U3R5bGVOb3JtYWxNYXNrOgorICAgICAgICByZXR1cm4gU3RyaW5nKCJu
b3JtYWwiLCBTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBjYXNlIEZvbnRTdHls
ZUl0YWxpY01hc2s6CisgICAgICAgIHJldHVybiBTdHJpbmcoIml0YWxpYyIsIFN0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICByZXR1cm4gU3RyaW5nKCJub3JtYWwiLCBTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsK
K30KKworU3RyaW5nIEZvbnRGYWNlOjp3ZWlnaHQoKSBjb25zdAoreworICAgIHN3aXRjaCAobV9i
YWNraW5nLT50cmFpdHNNYXNrKCkgJiBGb250V2VpZ2h0TWFzaykgeworICAgIGNhc2UgRm9udFdl
aWdodDEwME1hc2s6CisgICAgICAgIHJldHVybiBTdHJpbmcoIjEwMCIsIFN0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpOworICAgIGNhc2UgRm9udFdlaWdodDIwME1hc2s6CisgICAgICAgIHJl
dHVybiBTdHJpbmcoIjIwMCIsIFN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIGNh
c2UgRm9udFdlaWdodDMwME1hc2s6CisgICAgICAgIHJldHVybiBTdHJpbmcoIjMwMCIsIFN0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIGNhc2UgRm9udFdlaWdodDQwME1hc2s6Cisg
ICAgICAgIHJldHVybiBTdHJpbmcoIm5vcm1hbCIsIFN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpOworICAgIGNhc2UgRm9udFdlaWdodDUwME1hc2s6CisgICAgICAgIHJldHVybiBTdHJpbmco
IjUwMCIsIFN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIGNhc2UgRm9udFdlaWdo
dDYwME1hc2s6CisgICAgICAgIHJldHVybiBTdHJpbmcoIjYwMCIsIFN0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpOworICAgIGNhc2UgRm9udFdlaWdodDcwME1hc2s6CisgICAgICAgIHJldHVy
biBTdHJpbmcoImJvbGQiLCBTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBjYXNl
IEZvbnRXZWlnaHQ4MDBNYXNrOgorICAgICAgICByZXR1cm4gU3RyaW5nKCI4MDAiLCBTdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBjYXNlIEZvbnRXZWlnaHQ5MDBNYXNrOgorICAg
ICAgICByZXR1cm4gU3RyaW5nKCI5MDAiLCBTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsK
KyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIFN0cmluZygibm9y
bWFsIiwgU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Cit9CisKK1N0cmluZyBGb250RmFj
ZTo6c3RyZXRjaCgpIGNvbnN0Cit7CisgICAgcmV0dXJuICJub3JtYWwiOworfQorCitTdHJpbmcg
Rm9udEZhY2U6OnVuaWNvZGVSYW5nZSgpIGNvbnN0Cit7CisgICAgUmVmUHRyPENTU1ZhbHVlTGlz
dD4gdmFsdWVzID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOworICAgIGZv
ciAoYXV0byYgcmFuZ2UgOiBtX2JhY2tpbmctPnJhbmdlcygpKQorICAgICAgICB2YWx1ZXMtPmFw
cGVuZChDU1NVbmljb2RlUmFuZ2VWYWx1ZTo6Y3JlYXRlKHJhbmdlLmZyb20oKSwgcmFuZ2UudG8o
KSkpOworICAgIHJldHVybiB2YWx1ZXMtPmNzc1RleHQoKTsKK30KKworU3RyaW5nIEZvbnRGYWNl
Ojp2YXJpYW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gY29tcHV0ZUZvbnRWYXJpYW50KG1fYmFj
a2luZy0+dmFyaWFudFNldHRpbmdzKCkpLT5jc3NUZXh0KCk7Cit9CisKK1N0cmluZyBGb250RmFj
ZTo6ZmVhdHVyZVNldHRpbmdzKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fYmFja2luZy0+ZmVhdHVy
ZVNldHRpbmdzKCkuc2l6ZSgpKQorICAgICAgICByZXR1cm4gIm5vcm1hbCI7CisgICAgUmVmUHRy
PENTU1ZhbHVlTGlzdD4gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQo
KTsKKyAgICBmb3IgKGF1dG8mIGZlYXR1cmUgOiBtX2JhY2tpbmctPmZlYXR1cmVTZXR0aW5ncygp
KQorICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTRm9udEZlYXR1cmVWYWx1ZTo6Y3JlYXRlKEZvbnRG
ZWF0dXJlVGFnKGZlYXR1cmUudGFnKCkpLCBmZWF0dXJlLnZhbHVlKCkpKTsKKyAgICByZXR1cm4g
bGlzdC0+Y3NzVGV4dCgpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Rm9udEZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU4
NjM4OWJjZTY1M2JjZDUxMzQwNTk5NDRkNGEzNGI5MGRhNjNjN2EKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuaApAQCAtMCwwICsxLDY3IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBGb250
RmFjZV9oCisjZGVmaW5lIEZvbnRGYWNlX2gKKworI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIK
KyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBDU1NGb250RmFjZTsKKworY2xhc3MgRm9udEZhY2UgOiBwdWJsaWMgUmVmQ291bnRlZDxG
b250RmFjZT4geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8Rm9udEZhY2U+IGNyZWF0ZSgpIHsg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgRm9udEZhY2UoKSk7IH0KKyAgICB2aXJ0dWFsIH5Gb250RmFj
ZSgpOworCisgICAgdm9pZCBzZXRGYW1pbHkoY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYp
OworICAgIHZvaWQgc2V0U3R5bGUoY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpOworICAg
IHZvaWQgc2V0V2VpZ2h0KGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lk
IHNldFN0cmV0Y2goY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgc2V0
VW5pY29kZVJhbmdlKGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIHNl
dFZhcmlhbnQoY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgc2V0RmVh
dHVyZVNldHRpbmdzKGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsKKworICAgIFN0cmlu
ZyBmYW1pbHkoKSBjb25zdDsKKyAgICBTdHJpbmcgc3R5bGUoKSBjb25zdDsKKyAgICBTdHJpbmcg
d2VpZ2h0KCkgY29uc3Q7CisgICAgU3RyaW5nIHN0cmV0Y2goKSBjb25zdDsKKyAgICBTdHJpbmcg
dW5pY29kZVJhbmdlKCkgY29uc3Q7CisgICAgU3RyaW5nIHZhcmlhbnQoKSBjb25zdDsKKyAgICBT
dHJpbmcgZmVhdHVyZVNldHRpbmdzKCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgRm9udEZhY2Uo
KTsKKworICAgIFJlZjxDU1NGb250RmFjZT4gbV9iYWNraW5nOworfTsKKworfQorCisjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250VmFyaWFudEJ1aWxkZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvY3NzL0ZvbnRWYXJpYW50QnVpbGRlci5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGM5
ZTE0OGQzZmJkMDE2ZTAzM2Q4NTY1OGE1M2ZlOTU4MWZhNzFlMQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250VmFyaWFudEJ1aWxkZXIuY3BwCkBAIC0wLDAgKzEsMzc1
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkZvbnRWYXJp
YW50QnVpbGRlci5oIgorCisjaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWUuaCIKKyNpbmNsdWRl
ICJDU1NWYWx1ZUxpc3QuaCIKKyNpbmNsdWRlICJDU1NWYWx1ZVBvb2wuaCIKKyNpbmNsdWRlICJU
ZXh0RmxhZ3MuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitGb250VmFyaWFudExpZ2F0dXJl
c1ZhbHVlcyBleHRyYWN0Rm9udFZhcmlhbnRMaWdhdHVyZXMoQ1NTVmFsdWUmIHZhbHVlKQorewor
ICAgIEZvbnRWYXJpYW50TGlnYXR1cmVzIGNvbW1vbiA9IEZvbnRWYXJpYW50TGlnYXR1cmVzOjpO
b3JtYWw7CisgICAgRm9udFZhcmlhbnRMaWdhdHVyZXMgZGlzY3JldGlvbmFyeSA9IEZvbnRWYXJp
YW50TGlnYXR1cmVzOjpOb3JtYWw7CisgICAgRm9udFZhcmlhbnRMaWdhdHVyZXMgaGlzdG9yaWNh
bCA9IEZvbnRWYXJpYW50TGlnYXR1cmVzOjpOb3JtYWw7CisgICAgRm9udFZhcmlhbnRMaWdhdHVy
ZXMgY29udGV4dHVhbEFsdGVybmF0ZXMgPSBGb250VmFyaWFudExpZ2F0dXJlczo6Tm9ybWFsOwor
CisgICAgaWYgKGlzPENTU1ZhbHVlTGlzdD4odmFsdWUpKSB7CisgICAgICAgIGZvciAoYXV0byYg
aXRlbSA6IGRvd25jYXN0PENTU1ZhbHVlTGlzdD4odmFsdWUpKSB7CisgICAgICAgICAgICBzd2l0
Y2ggKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPihpdGVtLmdldCgpKS5nZXRWYWx1ZUlEKCkp
IHsKKyAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVOb0NvbW1vbkxpZ2F0dXJlczoKKyAgICAgICAg
ICAgICAgICBjb21tb24gPSBGb250VmFyaWFudExpZ2F0dXJlczo6Tm87CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVlQ29tbW9uTGlnYXR1cmVzOgorICAg
ICAgICAgICAgICAgIGNvbW1vbiA9IEZvbnRWYXJpYW50TGlnYXR1cmVzOjpZZXM7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVlTm9EaXNjcmV0aW9uYXJ5
TGlnYXR1cmVzOgorICAgICAgICAgICAgICAgIGRpc2NyZXRpb25hcnkgPSBGb250VmFyaWFudExp
Z2F0dXJlczo6Tm87CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENT
U1ZhbHVlRGlzY3JldGlvbmFyeUxpZ2F0dXJlczoKKyAgICAgICAgICAgICAgICBkaXNjcmV0aW9u
YXJ5ID0gRm9udFZhcmlhbnRMaWdhdHVyZXM6OlllczsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVOb0hpc3RvcmljYWxMaWdhdHVyZXM6CisgICAgICAg
ICAgICAgICAgaGlzdG9yaWNhbCA9IEZvbnRWYXJpYW50TGlnYXR1cmVzOjpObzsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVIaXN0b3JpY2FsTGlnYXR1
cmVzOgorICAgICAgICAgICAgICAgIGhpc3RvcmljYWwgPSBGb250VmFyaWFudExpZ2F0dXJlczo6
WWVzOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZUNv
bnRleHR1YWw6CisgICAgICAgICAgICAgICAgY29udGV4dHVhbEFsdGVybmF0ZXMgPSBGb250VmFy
aWFudExpZ2F0dXJlczo6WWVzOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
Y2FzZSBDU1NWYWx1ZU5vQ29udGV4dHVhbDoKKyAgICAgICAgICAgICAgICBjb250ZXh0dWFsQWx0
ZXJuYXRlcyA9IEZvbnRWYXJpYW50TGlnYXR1cmVzOjpObzsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICB9IGVsc2UgaWYgKGlzPENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkpIHsKKyAgICAgICAg
c3dpdGNoIChkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLmdldFZhbHVlSUQoKSkg
eworICAgICAgICBjYXNlIENTU1ZhbHVlTm9ybWFsOgorICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgQ1NTVmFsdWVOb25lOgorICAgICAgICAgICAgY29tbW9uID0gRm9udFZhcmlhbnRM
aWdhdHVyZXM6Ok5vOworICAgICAgICAgICAgZGlzY3JldGlvbmFyeSA9IEZvbnRWYXJpYW50TGln
YXR1cmVzOjpObzsKKyAgICAgICAgICAgIGhpc3RvcmljYWwgPSBGb250VmFyaWFudExpZ2F0dXJl
czo6Tm87CisgICAgICAgICAgICBjb250ZXh0dWFsQWx0ZXJuYXRlcyA9IEZvbnRWYXJpYW50TGln
YXR1cmVzOjpObzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorICAgIH0KKworICAgIHJldHVybiBGb250VmFyaWFudExpZ2F0dXJlc1ZhbHVlcyhjb21tb24s
IGRpc2NyZXRpb25hcnksIGhpc3RvcmljYWwsIGNvbnRleHR1YWxBbHRlcm5hdGVzKTsKK30KKwor
Rm9udFZhcmlhbnROdW1lcmljVmFsdWVzIGV4dHJhY3RGb250VmFyaWFudE51bWVyaWMoQ1NTVmFs
dWUmIHZhbHVlKQoreworICAgIEZvbnRWYXJpYW50TnVtZXJpY0ZpZ3VyZSBmaWd1cmUgPSBGb250
VmFyaWFudE51bWVyaWNGaWd1cmU6Ok5vcm1hbDsKKyAgICBGb250VmFyaWFudE51bWVyaWNTcGFj
aW5nIHNwYWNpbmcgPSBGb250VmFyaWFudE51bWVyaWNTcGFjaW5nOjpOb3JtYWw7CisgICAgRm9u
dFZhcmlhbnROdW1lcmljRnJhY3Rpb24gZnJhY3Rpb24gPSBGb250VmFyaWFudE51bWVyaWNGcmFj
dGlvbjo6Tm9ybWFsOworICAgIEZvbnRWYXJpYW50TnVtZXJpY09yZGluYWwgb3JkaW5hbCA9IEZv
bnRWYXJpYW50TnVtZXJpY09yZGluYWw6Ok5vcm1hbDsKKyAgICBGb250VmFyaWFudE51bWVyaWNT
bGFzaGVkWmVybyBzbGFzaGVkWmVybyA9IEZvbnRWYXJpYW50TnVtZXJpY1NsYXNoZWRaZXJvOjpO
b3JtYWw7CisKKyAgICBpZiAoaXM8Q1NTVmFsdWVMaXN0Pih2YWx1ZSkpIHsKKyAgICAgICAgZm9y
IChhdXRvJiBpdGVtIDogZG93bmNhc3Q8Q1NTVmFsdWVMaXN0Pih2YWx1ZSkpIHsKKyAgICAgICAg
ICAgIHN3aXRjaCAoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KGl0ZW0uZ2V0KCkpLmdldFZh
bHVlSUQoKSkgeworICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZUxpbmluZ051bXM6CisgICAgICAg
ICAgICAgICAgZmlndXJlID0gRm9udFZhcmlhbnROdW1lcmljRmlndXJlOjpMaW5pbmdOdW1iZXJz
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZU9sZHN0
eWxlTnVtczoKKyAgICAgICAgICAgICAgICBmaWd1cmUgPSBGb250VmFyaWFudE51bWVyaWNGaWd1
cmU6Ok9sZFN0eWxlTnVtYmVyczsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IGNhc2UgQ1NTVmFsdWVQcm9wb3J0aW9uYWxOdW1zOgorICAgICAgICAgICAgICAgIHNwYWNpbmcg
PSBGb250VmFyaWFudE51bWVyaWNTcGFjaW5nOjpQcm9wb3J0aW9uYWxOdW1iZXJzOworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZVRhYnVsYXJOdW1zOgor
ICAgICAgICAgICAgICAgIHNwYWNpbmcgPSBGb250VmFyaWFudE51bWVyaWNTcGFjaW5nOjpUYWJ1
bGFyTnVtYmVyczsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQ1NT
VmFsdWVEaWFnb25hbEZyYWN0aW9uczoKKyAgICAgICAgICAgICAgICBmcmFjdGlvbiA9IEZvbnRW
YXJpYW50TnVtZXJpY0ZyYWN0aW9uOjpEaWFnb25hbEZyYWN0aW9uczsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVTdGFja2VkRnJhY3Rpb25zOgorICAg
ICAgICAgICAgICAgIGZyYWN0aW9uID0gRm9udFZhcmlhbnROdW1lcmljRnJhY3Rpb246OlN0YWNr
ZWRGcmFjdGlvbnM7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENT
U1ZhbHVlT3JkaW5hbDoKKyAgICAgICAgICAgICAgICBvcmRpbmFsID0gRm9udFZhcmlhbnROdW1l
cmljT3JkaW5hbDo6WWVzOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2Fz
ZSBDU1NWYWx1ZVNsYXNoZWRaZXJvOgorICAgICAgICAgICAgICAgIHNsYXNoZWRaZXJvID0gRm9u
dFZhcmlhbnROdW1lcmljU2xhc2hlZFplcm86OlllczsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICB9IGVsc2UgaWYgKGlzPENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkpCisgICAgICAgIEFTU0VS
VChkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLmdldFZhbHVlSUQoKSA9PSBDU1NW
YWx1ZU5vcm1hbCk7CisKKyAgICByZXR1cm4gRm9udFZhcmlhbnROdW1lcmljVmFsdWVzKGZpZ3Vy
ZSwgc3BhY2luZywgZnJhY3Rpb24sIG9yZGluYWwsIHNsYXNoZWRaZXJvKTsKK30KKworRm9udFZh
cmlhbnRFYXN0QXNpYW5WYWx1ZXMgZXh0cmFjdEZvbnRWYXJpYW50RWFzdEFzaWFuKENTU1ZhbHVl
JiB2YWx1ZSkKK3sKKyAgICBGb250VmFyaWFudEVhc3RBc2lhblZhcmlhbnQgdmFyaWFudCA9IEZv
bnRWYXJpYW50RWFzdEFzaWFuVmFyaWFudDo6Tm9ybWFsOworICAgIEZvbnRWYXJpYW50RWFzdEFz
aWFuV2lkdGggd2lkdGggPSBGb250VmFyaWFudEVhc3RBc2lhbldpZHRoOjpOb3JtYWw7CisgICAg
Rm9udFZhcmlhbnRFYXN0QXNpYW5SdWJ5IHJ1YnkgPSBGb250VmFyaWFudEVhc3RBc2lhblJ1Ynk6
Ok5vcm1hbDsKKworICAgIGlmIChpczxDU1NWYWx1ZUxpc3Q+KHZhbHVlKSkgeworICAgICAgICBm
b3IgKGF1dG8mIGl0ZW0gOiBkb3duY2FzdDxDU1NWYWx1ZUxpc3Q+KHZhbHVlKSkgeworICAgICAg
ICAgICAgc3dpdGNoIChkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oaXRlbS5nZXQoKSkuZ2V0
VmFsdWVJRCgpKSB7CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVlSmlzNzg6CisgICAgICAgICAg
ICAgICAgdmFyaWFudCA9IEZvbnRWYXJpYW50RWFzdEFzaWFuVmFyaWFudDo6SmlzNzg7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVlSmlzODM6CisgICAg
ICAgICAgICAgICAgdmFyaWFudCA9IEZvbnRWYXJpYW50RWFzdEFzaWFuVmFyaWFudDo6SmlzODM7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVlSmlzOTA6
CisgICAgICAgICAgICAgICAgdmFyaWFudCA9IEZvbnRWYXJpYW50RWFzdEFzaWFuVmFyaWFudDo6
SmlzOTA7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVl
SmlzMDQ6CisgICAgICAgICAgICAgICAgdmFyaWFudCA9IEZvbnRWYXJpYW50RWFzdEFzaWFuVmFy
aWFudDo6SmlzMDQ7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENT
U1ZhbHVlU2ltcGxpZmllZDoKKyAgICAgICAgICAgICAgICB2YXJpYW50ID0gRm9udFZhcmlhbnRF
YXN0QXNpYW5WYXJpYW50OjpTaW1wbGlmaWVkOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgY2FzZSBDU1NWYWx1ZVRyYWRpdGlvbmFsOgorICAgICAgICAgICAgICAgIHZhcmlh
bnQgPSBGb250VmFyaWFudEVhc3RBc2lhblZhcmlhbnQ6OlRyYWRpdGlvbmFsOworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZUZ1bGxXaWR0aDoKKyAgICAg
ICAgICAgICAgICB3aWR0aCA9IEZvbnRWYXJpYW50RWFzdEFzaWFuV2lkdGg6OkZ1bGw7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVlUHJvcG9ydGlvbmFs
V2lkdGg6CisgICAgICAgICAgICAgICAgd2lkdGggPSBGb250VmFyaWFudEVhc3RBc2lhbldpZHRo
OjpQcm9wb3J0aW9uYWw7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNl
IENTU1ZhbHVlUnVieToKKyAgICAgICAgICAgICAgICBydWJ5ID0gRm9udFZhcmlhbnRFYXN0QXNp
YW5SdWJ5OjpZZXM7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfSBlbHNlIGlmIChpczxDU1NQ
cmltaXRpdmVWYWx1ZT4odmFsdWUpKQorICAgICAgICBBU1NFUlQoZG93bmNhc3Q8Q1NTUHJpbWl0
aXZlVmFsdWU+KHZhbHVlKS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb3JtYWwpOworCisgICAg
cmV0dXJuIEZvbnRWYXJpYW50RWFzdEFzaWFuVmFsdWVzKHZhcmlhbnQsIHdpZHRoLCBydWJ5KTsK
K30KKworUmVmPENTU1ZhbHVlPiBjb21wdXRlRm9udFZhcmlhbnQoY29uc3QgRm9udFZhcmlhbnRT
ZXR0aW5ncyYgdmFyaWFudFNldHRpbmdzKQoreworICAgIGlmICh2YXJpYW50U2V0dGluZ3MuaXNB
bGxOb3JtYWwoKSkKKyAgICAgICAgcmV0dXJuIENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3Jl
YXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTm9ybWFsKTsKKworICAgIGF1dG8gbGlzdCA9IENT
U1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKKworICAgIHN3aXRjaCAodmFyaWFu
dFNldHRpbmdzLmNvbW1vbkxpZ2F0dXJlcykgeworICAgIGNhc2UgRm9udFZhcmlhbnRMaWdhdHVy
ZXM6Ok5vcm1hbDoKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBGb250VmFyaWFudExpZ2F0dXJl
czo6WWVzOgorICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRv
bigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUNvbW1vbkxpZ2F0dXJlcykpOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIEZvbnRWYXJpYW50TGlnYXR1cmVzOjpObzoKKyAgICAgICAg
bGlzdC5nZXQoKS5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlm
aWVyVmFsdWUoQ1NTVmFsdWVOb0NvbW1vbkxpZ2F0dXJlcykpOworICAgICAgICBicmVhazsKKyAg
ICB9CisKKyAgICBzd2l0Y2ggKHZhcmlhbnRTZXR0aW5ncy5kaXNjcmV0aW9uYXJ5TGlnYXR1cmVz
KSB7CisgICAgY2FzZSBGb250VmFyaWFudExpZ2F0dXJlczo6Tm9ybWFsOgorICAgICAgICBicmVh
azsKKyAgICBjYXNlIEZvbnRWYXJpYW50TGlnYXR1cmVzOjpZZXM6CisgICAgICAgIGxpc3QuZ2V0
KCkuYXBwZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVl
KENTU1ZhbHVlRGlzY3JldGlvbmFyeUxpZ2F0dXJlcykpOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIEZvbnRWYXJpYW50TGlnYXR1cmVzOjpObzoKKyAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQo
Q1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVO
b0Rpc2NyZXRpb25hcnlMaWdhdHVyZXMpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAg
c3dpdGNoICh2YXJpYW50U2V0dGluZ3MuaGlzdG9yaWNhbExpZ2F0dXJlcykgeworICAgIGNhc2Ug
Rm9udFZhcmlhbnRMaWdhdHVyZXM6Ok5vcm1hbDoKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBG
b250VmFyaWFudExpZ2F0dXJlczo6WWVzOgorICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChDU1NW
YWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUhpc3Rv
cmljYWxMaWdhdHVyZXMpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBGb250VmFyaWFudExp
Z2F0dXJlczo6Tm86CisgICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKENTU1ZhbHVlUG9vbDo6c2lu
Z2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTm9IaXN0b3JpY2FsTGlnYXR1
cmVzKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHN3aXRjaCAodmFyaWFudFNldHRp
bmdzLmNvbnRleHR1YWxBbHRlcm5hdGVzKSB7CisgICAgY2FzZSBGb250VmFyaWFudExpZ2F0dXJl
czo6Tm9ybWFsOgorICAgICAgICBicmVhazsKKyAgICBjYXNlIEZvbnRWYXJpYW50TGlnYXR1cmVz
OjpZZXM6CisgICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9u
KCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlQ29udGV4dHVhbCkpOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIEZvbnRWYXJpYW50TGlnYXR1cmVzOjpObzoKKyAgICAgICAgbGlzdC5n
ZXQoKS5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFs
dWUoQ1NTVmFsdWVOb0NvbnRleHR1YWwpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAg
c3dpdGNoICh2YXJpYW50U2V0dGluZ3MucG9zaXRpb24pIHsKKyAgICBjYXNlIEZvbnRWYXJpYW50
UG9zaXRpb246Ok5vcm1hbDoKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBGb250VmFyaWFudFBv
c2l0aW9uOjpTdWJzY3JpcHQ6CisgICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKENTU1ZhbHVlUG9v
bDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlU3ViKSk7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgRm9udFZhcmlhbnRQb3NpdGlvbjo6U3VwZXJzY3JpcHQ6Cisg
ICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRl
SWRlbnRpZmllclZhbHVlKENTU1ZhbHVlU3VwZXIpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQor
CisgICAgc3dpdGNoICh2YXJpYW50U2V0dGluZ3MuY2FwcykgeworICAgIGNhc2UgRm9udFZhcmlh
bnRDYXBzOjpOb3JtYWw6CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRm9udFZhcmlhbnRDYXBz
OjpTbWFsbDoKKyAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0
b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVTbWFsbENhcHMpKTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBGb250VmFyaWFudENhcHM6OkFsbFNtYWxsOgorICAgICAgICBsaXN0
LmdldCgpLmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJW
YWx1ZShDU1NWYWx1ZUFsbFNtYWxsQ2FwcykpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEZv
bnRWYXJpYW50Q2Fwczo6UGV0aXRlOgorICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChDU1NWYWx1
ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZVBldGl0ZUNh
cHMpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBGb250VmFyaWFudENhcHM6OkFsbFBldGl0
ZToKKyAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5j
cmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVBbGxQZXRpdGVDYXBzKSk7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgRm9udFZhcmlhbnRDYXBzOjpVbmljYXNlOgorICAgICAgICBsaXN0Lmdl
dCgpLmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1
ZShDU1NWYWx1ZVVuaWNhc2UpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBGb250VmFyaWFu
dENhcHM6OlRpdGxpbmc6CisgICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKENTU1ZhbHVlUG9vbDo6
c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlVGl0bGluZ0NhcHMpKTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgc3dpdGNoICh2YXJpYW50U2V0dGluZ3MubnVt
ZXJpY0ZpZ3VyZSkgeworICAgIGNhc2UgRm9udFZhcmlhbnROdW1lcmljRmlndXJlOjpOb3JtYWw6
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRm9udFZhcmlhbnROdW1lcmljRmlndXJlOjpMaW5p
bmdOdW1iZXJzOgorICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmds
ZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUxpbmluZ051bXMpKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBGb250VmFyaWFudE51bWVyaWNGaWd1cmU6Ok9sZFN0eWxlTnVt
YmVyczoKKyAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24o
KS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVPbGRzdHlsZU51bXMpKTsKKyAgICAgICAg
YnJlYWs7CisgICAgfQorCisgICAgc3dpdGNoICh2YXJpYW50U2V0dGluZ3MubnVtZXJpY1NwYWNp
bmcpIHsKKyAgICBjYXNlIEZvbnRWYXJpYW50TnVtZXJpY1NwYWNpbmc6Ok5vcm1hbDoKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBGb250VmFyaWFudE51bWVyaWNTcGFjaW5nOjpQcm9wb3J0aW9u
YWxOdW1iZXJzOgorICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmds
ZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZVByb3BvcnRpb25hbE51bXMpKTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBGb250VmFyaWFudE51bWVyaWNTcGFjaW5nOjpUYWJ1
bGFyTnVtYmVyczoKKyAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5n
bGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVUYWJ1bGFyTnVtcykpOworICAg
ICAgICBicmVhazsKKyAgICB9CisKKyAgICBzd2l0Y2ggKHZhcmlhbnRTZXR0aW5ncy5udW1lcmlj
RnJhY3Rpb24pIHsKKyAgICBjYXNlIEZvbnRWYXJpYW50TnVtZXJpY0ZyYWN0aW9uOjpOb3JtYWw6
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRm9udFZhcmlhbnROdW1lcmljRnJhY3Rpb246OkRp
YWdvbmFsRnJhY3Rpb25zOgorICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChDU1NWYWx1ZVBvb2w6
OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZURpYWdvbmFsRnJhY3Rp
b25zKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRm9udFZhcmlhbnROdW1lcmljRnJhY3Rp
b246OlN0YWNrZWRGcmFjdGlvbnM6CisgICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKENTU1ZhbHVl
UG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlU3RhY2tlZEZy
YWN0aW9ucykpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBzd2l0Y2ggKHZhcmlhbnRT
ZXR0aW5ncy5udW1lcmljT3JkaW5hbCkgeworICAgIGNhc2UgRm9udFZhcmlhbnROdW1lcmljT3Jk
aW5hbDo6Tm9ybWFsOgorICAgICAgICBicmVhazsKKyAgICBjYXNlIEZvbnRWYXJpYW50TnVtZXJp
Y09yZGluYWw6OlllczoKKyAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoQ1NTVmFsdWVQb29sOjpz
aW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVPcmRpbmFsKSk7CisgICAg
ICAgIGJyZWFrOworICAgIH0KKworICAgIHN3aXRjaCAodmFyaWFudFNldHRpbmdzLm51bWVyaWNT
bGFzaGVkWmVybykgeworICAgIGNhc2UgRm9udFZhcmlhbnROdW1lcmljU2xhc2hlZFplcm86Ok5v
cm1hbDoKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBGb250VmFyaWFudE51bWVyaWNTbGFzaGVk
WmVybzo6WWVzOgorICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmds
ZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZVNsYXNoZWRaZXJvKSk7CisgICAg
ICAgIGJyZWFrOworICAgIH0KKworICAgIHN3aXRjaCAodmFyaWFudFNldHRpbmdzLmFsdGVybmF0
ZXMpIHsKKyAgICBjYXNlIEZvbnRWYXJpYW50QWx0ZXJuYXRlczo6Tm9ybWFsOgorICAgICAgICBi
cmVhazsKKyAgICBjYXNlIEZvbnRWYXJpYW50QWx0ZXJuYXRlczo6SGlzdG9yaWNhbEZvcm1zOgor
ICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0
ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUhpc3RvcmljYWxGb3JtcykpOworICAgICAgICBicmVh
azsKKyAgICB9CisKKyAgICBzd2l0Y2ggKHZhcmlhbnRTZXR0aW5ncy5lYXN0QXNpYW5WYXJpYW50
KSB7CisgICAgY2FzZSBGb250VmFyaWFudEVhc3RBc2lhblZhcmlhbnQ6Ok5vcm1hbDoKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBGb250VmFyaWFudEVhc3RBc2lhblZhcmlhbnQ6Okppczc4Ogor
ICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0
ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUppczc4KSk7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgRm9udFZhcmlhbnRFYXN0QXNpYW5WYXJpYW50OjpKaXM4MzoKKyAgICAgICAgbGlzdC5nZXQo
KS5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUo
Q1NTVmFsdWVKaXM4MykpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEZvbnRWYXJpYW50RWFz
dEFzaWFuVmFyaWFudDo6SmlzOTA6CisgICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKENTU1ZhbHVl
UG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlSmlzOTApKTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBGb250VmFyaWFudEVhc3RBc2lhblZhcmlhbnQ6Okpp
czA0OgorICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigp
LmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUppczA0KSk7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgRm9udFZhcmlhbnRFYXN0QXNpYW5WYXJpYW50OjpTaW1wbGlmaWVkOgorICAgICAg
ICBsaXN0LmdldCgpLmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50
aWZpZXJWYWx1ZShDU1NWYWx1ZVNpbXBsaWZpZWQpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBGb250VmFyaWFudEVhc3RBc2lhblZhcmlhbnQ6OlRyYWRpdGlvbmFsOgorICAgICAgICBsaXN0
LmdldCgpLmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJW
YWx1ZShDU1NWYWx1ZVRyYWRpdGlvbmFsKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAg
IHN3aXRjaCAodmFyaWFudFNldHRpbmdzLmVhc3RBc2lhbldpZHRoKSB7CisgICAgY2FzZSBGb250
VmFyaWFudEVhc3RBc2lhbldpZHRoOjpOb3JtYWw6CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
Rm9udFZhcmlhbnRFYXN0QXNpYW5XaWR0aDo6RnVsbDoKKyAgICAgICAgbGlzdC5nZXQoKS5hcHBl
bmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFs
dWVGdWxsV2lkdGgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBGb250VmFyaWFudEVhc3RB
c2lhbldpZHRoOjpQcm9wb3J0aW9uYWw6CisgICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKENTU1Zh
bHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlUHJvcG9y
dGlvbmFsV2lkdGgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgc3dpdGNoICh2YXJp
YW50U2V0dGluZ3MuZWFzdEFzaWFuUnVieSkgeworICAgIGNhc2UgRm9udFZhcmlhbnRFYXN0QXNp
YW5SdWJ5OjpOb3JtYWw6CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRm9udFZhcmlhbnRFYXN0
QXNpYW5SdWJ5OjpZZXM6CisgICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKENTU1ZhbHVlUG9vbDo6
c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlUnVieSkpOworICAgICAg
ICBicmVhazsKKyAgICB9CisKKyAgICByZXR1cm4gV1RGTW92ZShsaXN0KTsKK30KKworfQorCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udFZhcmlhbnRCdWlsZGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvRm9udFZhcmlhbnRCdWlsZGVyLmgKaW5kZXggZmE4MjQyOWZkYTY4MjQ2
NjlhMTUwMGE2ZTVjYjhmMzQ0NTBhNjU5OC4uZDFiMjY1ZDQ4OTI1YWMzMDMzMWQ0MGM5MjBhMTdj
MmY5ODkwYTUyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRWYXJpYW50QnVp
bGRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250VmFyaWFudEJ1aWxkZXIuaApAQCAt
MjYsMTcwICsyNiwyMSBAQAogI2lmbmRlZiBGb250VmFyaWFudEJ1aWxkZXJfaAogI2RlZmluZSBG
b250VmFyaWFudEJ1aWxkZXJfaAogCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXRlbXBsYXRlIDx0
eXBlbmFtZSBUPgotaW5saW5lIHZvaWQgYXBwbHlWYWx1ZUZvbnRWYXJpYW50TGlnYXR1cmVzKFQm
IHJlY2VpdmVyLCBDU1NWYWx1ZSYgdmFsdWUpCi17Ci0gICAgRm9udFZhcmlhbnRMaWdhdHVyZXMg
Y29tbW9uID0gRm9udFZhcmlhbnRMaWdhdHVyZXM6Ok5vcm1hbDsKLSAgICBGb250VmFyaWFudExp
Z2F0dXJlcyBkaXNjcmV0aW9uYXJ5ID0gRm9udFZhcmlhbnRMaWdhdHVyZXM6Ok5vcm1hbDsKLSAg
ICBGb250VmFyaWFudExpZ2F0dXJlcyBoaXN0b3JpY2FsID0gRm9udFZhcmlhbnRMaWdhdHVyZXM6
Ok5vcm1hbDsKLSAgICBGb250VmFyaWFudExpZ2F0dXJlcyBjb250ZXh0dWFsQWx0ZXJuYXRlcyA9
IEZvbnRWYXJpYW50TGlnYXR1cmVzOjpOb3JtYWw7Ci0KLSAgICBpZiAoaXM8Q1NTVmFsdWVMaXN0
Pih2YWx1ZSkpIHsKLSAgICAgICAgZm9yIChhdXRvJiBpdGVtIDogZG93bmNhc3Q8Q1NTVmFsdWVM
aXN0Pih2YWx1ZSkpIHsKLSAgICAgICAgICAgIHN3aXRjaCAoZG93bmNhc3Q8Q1NTUHJpbWl0aXZl
VmFsdWU+KGl0ZW0uZ2V0KCkpLmdldFZhbHVlSUQoKSkgewotICAgICAgICAgICAgY2FzZSBDU1NW
YWx1ZU5vQ29tbW9uTGlnYXR1cmVzOgotICAgICAgICAgICAgICAgIGNvbW1vbiA9IEZvbnRWYXJp
YW50TGlnYXR1cmVzOjpObzsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNh
c2UgQ1NTVmFsdWVDb21tb25MaWdhdHVyZXM6Ci0gICAgICAgICAgICAgICAgY29tbW9uID0gRm9u
dFZhcmlhbnRMaWdhdHVyZXM6OlllczsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgIGNhc2UgQ1NTVmFsdWVOb0Rpc2NyZXRpb25hcnlMaWdhdHVyZXM6Ci0gICAgICAgICAgICAg
ICAgZGlzY3JldGlvbmFyeSA9IEZvbnRWYXJpYW50TGlnYXR1cmVzOjpObzsKLSAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVEaXNjcmV0aW9uYXJ5TGlnYXR1
cmVzOgotICAgICAgICAgICAgICAgIGRpc2NyZXRpb25hcnkgPSBGb250VmFyaWFudExpZ2F0dXJl
czo6WWVzOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBDU1NWYWx1
ZU5vSGlzdG9yaWNhbExpZ2F0dXJlczoKLSAgICAgICAgICAgICAgICBoaXN0b3JpY2FsID0gRm9u
dFZhcmlhbnRMaWdhdHVyZXM6Ok5vOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgY2FzZSBDU1NWYWx1ZUhpc3RvcmljYWxMaWdhdHVyZXM6Ci0gICAgICAgICAgICAgICAgaGlz
dG9yaWNhbCA9IEZvbnRWYXJpYW50TGlnYXR1cmVzOjpZZXM7Ci0gICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICBjYXNlIENTU1ZhbHVlQ29udGV4dHVhbDoKLSAgICAgICAgICAgICAg
ICBjb250ZXh0dWFsQWx0ZXJuYXRlcyA9IEZvbnRWYXJpYW50TGlnYXR1cmVzOjpZZXM7Ci0gICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIENTU1ZhbHVlTm9Db250ZXh0dWFs
OgotICAgICAgICAgICAgICAgIGNvbnRleHR1YWxBbHRlcm5hdGVzID0gRm9udFZhcmlhbnRMaWdh
dHVyZXM6Ok5vOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgZGVmYXVsdDoK
LSAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0gZWxzZSBpZiAoaXM8Q1NTUHJp
bWl0aXZlVmFsdWU+KHZhbHVlKSkgewotICAgICAgICBzd2l0Y2ggKGRvd25jYXN0PENTU1ByaW1p
dGl2ZVZhbHVlPih2YWx1ZSkuZ2V0VmFsdWVJRCgpKSB7Ci0gICAgICAgIGNhc2UgQ1NTVmFsdWVO
b3JtYWw6Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDU1NWYWx1ZU5vbmU6Ci0g
ICAgICAgICAgICBjb21tb24gPSBGb250VmFyaWFudExpZ2F0dXJlczo6Tm87Ci0gICAgICAgICAg
ICBkaXNjcmV0aW9uYXJ5ID0gRm9udFZhcmlhbnRMaWdhdHVyZXM6Ok5vOwotICAgICAgICAgICAg
aGlzdG9yaWNhbCA9IEZvbnRWYXJpYW50TGlnYXR1cmVzOjpObzsKLSAgICAgICAgICAgIGNvbnRl
eHR1YWxBbHRlcm5hdGVzID0gRm9udFZhcmlhbnRMaWdhdHVyZXM6Ok5vOwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmVjZWl2ZXIu
c2V0VmFyaWFudENvbW1vbkxpZ2F0dXJlcyhjb21tb24pOwotICAgIHJlY2VpdmVyLnNldFZhcmlh
bnREaXNjcmV0aW9uYXJ5TGlnYXR1cmVzKGRpc2NyZXRpb25hcnkpOwotICAgIHJlY2VpdmVyLnNl
dFZhcmlhbnRIaXN0b3JpY2FsTGlnYXR1cmVzKGhpc3RvcmljYWwpOwotICAgIHJlY2VpdmVyLnNl
dFZhcmlhbnRDb250ZXh0dWFsQWx0ZXJuYXRlcyhjb250ZXh0dWFsQWx0ZXJuYXRlcyk7Ci19Cisj
aW5jbHVkZSA8d3RmL1JlZi5oPgogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWlubGluZSB2b2lk
IGFwcGx5VmFsdWVGb250VmFyaWFudE51bWVyaWMoVCYgcmVjZWl2ZXIsIENTU1ZhbHVlJiB2YWx1
ZSkKLXsKLSAgICBGb250VmFyaWFudE51bWVyaWNGaWd1cmUgZmlndXJlID0gRm9udFZhcmlhbnRO
dW1lcmljRmlndXJlOjpOb3JtYWw7Ci0gICAgRm9udFZhcmlhbnROdW1lcmljU3BhY2luZyBzcGFj
aW5nID0gRm9udFZhcmlhbnROdW1lcmljU3BhY2luZzo6Tm9ybWFsOwotICAgIEZvbnRWYXJpYW50
TnVtZXJpY0ZyYWN0aW9uIGZyYWN0aW9uID0gRm9udFZhcmlhbnROdW1lcmljRnJhY3Rpb246Ok5v
cm1hbDsKLSAgICBGb250VmFyaWFudE51bWVyaWNPcmRpbmFsIG9yZGluYWwgPSBGb250VmFyaWFu
dE51bWVyaWNPcmRpbmFsOjpOb3JtYWw7Ci0gICAgRm9udFZhcmlhbnROdW1lcmljU2xhc2hlZFpl
cm8gc2xhc2hlZFplcm8gPSBGb250VmFyaWFudE51bWVyaWNTbGFzaGVkWmVybzo6Tm9ybWFsOwot
Ci0gICAgaWYgKGlzPENTU1ZhbHVlTGlzdD4odmFsdWUpKSB7Ci0gICAgICAgIGZvciAoYXV0byYg
aXRlbSA6IGRvd25jYXN0PENTU1ZhbHVlTGlzdD4odmFsdWUpKSB7Ci0gICAgICAgICAgICBzd2l0
Y2ggKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPihpdGVtLmdldCgpKS5nZXRWYWx1ZUlEKCkp
IHsKLSAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVMaW5pbmdOdW1zOgotICAgICAgICAgICAgICAg
IGZpZ3VyZSA9IEZvbnRWYXJpYW50TnVtZXJpY0ZpZ3VyZTo6TGluaW5nTnVtYmVyczsKLSAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVPbGRzdHlsZU51bXM6
Ci0gICAgICAgICAgICAgICAgZmlndXJlID0gRm9udFZhcmlhbnROdW1lcmljRmlndXJlOjpPbGRT
dHlsZU51bWJlcnM7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIENT
U1ZhbHVlUHJvcG9ydGlvbmFsTnVtczoKLSAgICAgICAgICAgICAgICBzcGFjaW5nID0gRm9udFZh
cmlhbnROdW1lcmljU3BhY2luZzo6UHJvcG9ydGlvbmFsTnVtYmVyczsKLSAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVUYWJ1bGFyTnVtczoKLSAgICAgICAg
ICAgICAgICBzcGFjaW5nID0gRm9udFZhcmlhbnROdW1lcmljU3BhY2luZzo6VGFidWxhck51bWJl
cnM7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIENTU1ZhbHVlRGlh
Z29uYWxGcmFjdGlvbnM6Ci0gICAgICAgICAgICAgICAgZnJhY3Rpb24gPSBGb250VmFyaWFudE51
bWVyaWNGcmFjdGlvbjo6RGlhZ29uYWxGcmFjdGlvbnM7Ci0gICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICBjYXNlIENTU1ZhbHVlU3RhY2tlZEZyYWN0aW9uczoKLSAgICAgICAgICAg
ICAgICBmcmFjdGlvbiA9IEZvbnRWYXJpYW50TnVtZXJpY0ZyYWN0aW9uOjpTdGFja2VkRnJhY3Rp
b25zOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZU9y
ZGluYWw6Ci0gICAgICAgICAgICAgICAgb3JkaW5hbCA9IEZvbnRWYXJpYW50TnVtZXJpY09yZGlu
YWw6OlllczsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgQ1NTVmFs
dWVTbGFzaGVkWmVybzoKLSAgICAgICAgICAgICAgICBzbGFzaGVkWmVybyA9IEZvbnRWYXJpYW50
TnVtZXJpY1NsYXNoZWRaZXJvOjpZZXM7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfSBlbHNl
IGlmIChpczxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpKQotICAgICAgICBBU1NFUlQoZG93bmNh
c3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb3Jt
YWwpOwotCi0gICAgcmVjZWl2ZXIuc2V0VmFyaWFudE51bWVyaWNGaWd1cmUoZmlndXJlKTsKLSAg
ICByZWNlaXZlci5zZXRWYXJpYW50TnVtZXJpY1NwYWNpbmcoc3BhY2luZyk7Ci0gICAgcmVjZWl2
ZXIuc2V0VmFyaWFudE51bWVyaWNGcmFjdGlvbihmcmFjdGlvbik7Ci0gICAgcmVjZWl2ZXIuc2V0
VmFyaWFudE51bWVyaWNPcmRpbmFsKG9yZGluYWwpOwotICAgIHJlY2VpdmVyLnNldFZhcmlhbnRO
dW1lcmljU2xhc2hlZFplcm8oc2xhc2hlZFplcm8pOwotfQorbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWlubGluZSB2b2lkIGFwcGx5VmFsdWVGb250VmFyaWFu
dEVhc3RBc2lhbihUJiByZWNlaXZlciwgQ1NTVmFsdWUmIHZhbHVlKQotewotICAgIEZvbnRWYXJp
YW50RWFzdEFzaWFuVmFyaWFudCB2YXJpYW50ID0gRm9udFZhcmlhbnRFYXN0QXNpYW5WYXJpYW50
OjpOb3JtYWw7Ci0gICAgRm9udFZhcmlhbnRFYXN0QXNpYW5XaWR0aCB3aWR0aCA9IEZvbnRWYXJp
YW50RWFzdEFzaWFuV2lkdGg6Ok5vcm1hbDsKLSAgICBGb250VmFyaWFudEVhc3RBc2lhblJ1Ynkg
cnVieSA9IEZvbnRWYXJpYW50RWFzdEFzaWFuUnVieTo6Tm9ybWFsOworY2xhc3MgQ1NTVmFsdWU7
CitzdHJ1Y3QgRm9udFZhcmlhbnRTZXR0aW5nczsKK3N0cnVjdCBGb250VmFyaWFudExpZ2F0dXJl
c1ZhbHVlczsKK3N0cnVjdCBGb250VmFyaWFudE51bWVyaWNWYWx1ZXM7CitzdHJ1Y3QgRm9udFZh
cmlhbnRFYXN0QXNpYW5WYWx1ZXM7CiAKLSAgICBpZiAoaXM8Q1NTVmFsdWVMaXN0Pih2YWx1ZSkp
IHsKLSAgICAgICAgZm9yIChhdXRvJiBpdGVtIDogZG93bmNhc3Q8Q1NTVmFsdWVMaXN0Pih2YWx1
ZSkpIHsKLSAgICAgICAgICAgIHN3aXRjaCAoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KGl0
ZW0uZ2V0KCkpLmdldFZhbHVlSUQoKSkgewotICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZUppczc4
OgotICAgICAgICAgICAgICAgIHZhcmlhbnQgPSBGb250VmFyaWFudEVhc3RBc2lhblZhcmlhbnQ6
Okppczc4OwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBDU1NWYWx1
ZUppczgzOgotICAgICAgICAgICAgICAgIHZhcmlhbnQgPSBGb250VmFyaWFudEVhc3RBc2lhblZh
cmlhbnQ6OkppczgzOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBD
U1NWYWx1ZUppczkwOgotICAgICAgICAgICAgICAgIHZhcmlhbnQgPSBGb250VmFyaWFudEVhc3RB
c2lhblZhcmlhbnQ6OkppczkwOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
Y2FzZSBDU1NWYWx1ZUppczA0OgotICAgICAgICAgICAgICAgIHZhcmlhbnQgPSBGb250VmFyaWFu
dEVhc3RBc2lhblZhcmlhbnQ6OkppczA0OwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgY2FzZSBDU1NWYWx1ZVNpbXBsaWZpZWQ6Ci0gICAgICAgICAgICAgICAgdmFyaWFudCA9
IEZvbnRWYXJpYW50RWFzdEFzaWFuVmFyaWFudDo6U2ltcGxpZmllZDsKLSAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVUcmFkaXRpb25hbDoKLSAgICAgICAg
ICAgICAgICB2YXJpYW50ID0gRm9udFZhcmlhbnRFYXN0QXNpYW5WYXJpYW50OjpUcmFkaXRpb25h
bDsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVGdWxs
V2lkdGg6Ci0gICAgICAgICAgICAgICAgd2lkdGggPSBGb250VmFyaWFudEVhc3RBc2lhbldpZHRo
OjpGdWxsOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBDU1NWYWx1
ZVByb3BvcnRpb25hbFdpZHRoOgotICAgICAgICAgICAgICAgIHdpZHRoID0gRm9udFZhcmlhbnRF
YXN0QXNpYW5XaWR0aDo6UHJvcG9ydGlvbmFsOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgY2FzZSBDU1NWYWx1ZVJ1Ynk6Ci0gICAgICAgICAgICAgICAgcnVieSA9IEZvbnRW
YXJpYW50RWFzdEFzaWFuUnVieTo6WWVzOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0gZWxz
ZSBpZiAoaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSkKLSAgICAgICAgQVNTRVJUKGRvd25j
YXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkuZ2V0VmFsdWVJRCgpID09IENTU1ZhbHVlTm9y
bWFsKTsKK0ZvbnRWYXJpYW50TGlnYXR1cmVzVmFsdWVzIGV4dHJhY3RGb250VmFyaWFudExpZ2F0
dXJlcyhDU1NWYWx1ZSYpOworRm9udFZhcmlhbnROdW1lcmljVmFsdWVzIGV4dHJhY3RGb250VmFy
aWFudE51bWVyaWMoQ1NTVmFsdWUmKTsKK0ZvbnRWYXJpYW50RWFzdEFzaWFuVmFsdWVzIGV4dHJh
Y3RGb250VmFyaWFudEVhc3RBc2lhbihDU1NWYWx1ZSYpOwogCi0gICAgcmVjZWl2ZXIuc2V0VmFy
aWFudEVhc3RBc2lhblZhcmlhbnQodmFyaWFudCk7Ci0gICAgcmVjZWl2ZXIuc2V0VmFyaWFudEVh
c3RBc2lhbldpZHRoKHdpZHRoKTsKLSAgICByZWNlaXZlci5zZXRWYXJpYW50RWFzdEFzaWFuUnVi
eShydWJ5KTsKLX0KK1JlZjxDU1NWYWx1ZT4gY29tcHV0ZUZvbnRWYXJpYW50KGNvbnN0IEZvbnRW
YXJpYW50U2V0dGluZ3MmKTsKIAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVCdWlsZGVyQ3VzdG9tLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ3Vz
dG9tLmgKaW5kZXggNWQ3NTZmNDJjYjdlMDYwZjRjMGY1N2RhZDFiNWQyOWIzZWMzYjk4Mi4uNGZi
Y2YyZWU1ZmRlYWUwNWMxODNmZTgxZmI2YTdkMjc4MjU2MTMzYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckN1c3RvbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZUJ1aWxkZXJDdXN0b20uaApAQCAtMTQwNyw3ICsxNDA3LDExIEBAIGlubGluZSB2b2lk
IFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbml0aWFsRm9udFZhcmlhbnRMaWdhdHVyZXMoU3R5
bGVSZXNvbHZlciYKIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUZv
bnRWYXJpYW50TGlnYXR1cmVzKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIENTU1ZhbHVl
JiB2YWx1ZSkKIHsKICAgICBhdXRvIGZvbnREZXNjcmlwdGlvbiA9IHN0eWxlUmVzb2x2ZXIuZm9u
dERlc2NyaXB0aW9uKCk7Ci0gICAgV2ViQ29yZTo6YXBwbHlWYWx1ZUZvbnRWYXJpYW50TGlnYXR1
cmVzKGZvbnREZXNjcmlwdGlvbiwgdmFsdWUpOworICAgIGF1dG8gdmFyaWFudExpZ2F0dXJlcyA9
IGV4dHJhY3RGb250VmFyaWFudExpZ2F0dXJlcyh2YWx1ZSk7CisgICAgZm9udERlc2NyaXB0aW9u
LnNldFZhcmlhbnRDb21tb25MaWdhdHVyZXModmFyaWFudExpZ2F0dXJlcy5jb21tb25MaWdhdHVy
ZXMpOworICAgIGZvbnREZXNjcmlwdGlvbi5zZXRWYXJpYW50RGlzY3JldGlvbmFyeUxpZ2F0dXJl
cyh2YXJpYW50TGlnYXR1cmVzLmRpc2NyZXRpb25hcnlMaWdhdHVyZXMpOworICAgIGZvbnREZXNj
cmlwdGlvbi5zZXRWYXJpYW50SGlzdG9yaWNhbExpZ2F0dXJlcyh2YXJpYW50TGlnYXR1cmVzLmhp
c3RvcmljYWxMaWdhdHVyZXMpOworICAgIGZvbnREZXNjcmlwdGlvbi5zZXRWYXJpYW50Q29udGV4
dHVhbEFsdGVybmF0ZXModmFyaWFudExpZ2F0dXJlcy5jb250ZXh0dWFsQWx0ZXJuYXRlcyk7CiAg
ICAgc3R5bGVSZXNvbHZlci5zZXRGb250RGVzY3JpcHRpb24oZm9udERlc2NyaXB0aW9uKTsKIH0K
IApAQCAtMTQzNiw3ICsxNDQwLDEyIEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6
YXBwbHlJbml0aWFsRm9udFZhcmlhbnROdW1lcmljKFN0eWxlUmVzb2x2ZXImIHN0CiBpbmxpbmUg
dm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVGb250VmFyaWFudE51bWVyaWMoU3R5
bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIGF1dG8g
Zm9udERlc2NyaXB0aW9uID0gc3R5bGVSZXNvbHZlci5mb250RGVzY3JpcHRpb24oKTsKLSAgICBX
ZWJDb3JlOjphcHBseVZhbHVlRm9udFZhcmlhbnROdW1lcmljKGZvbnREZXNjcmlwdGlvbiwgdmFs
dWUpOworICAgIGF1dG8gdmFyaWFudE51bWVyaWMgPSBleHRyYWN0Rm9udFZhcmlhbnROdW1lcmlj
KHZhbHVlKTsKKyAgICBmb250RGVzY3JpcHRpb24uc2V0VmFyaWFudE51bWVyaWNGaWd1cmUodmFy
aWFudE51bWVyaWMuZmlndXJlKTsKKyAgICBmb250RGVzY3JpcHRpb24uc2V0VmFyaWFudE51bWVy
aWNTcGFjaW5nKHZhcmlhbnROdW1lcmljLnNwYWNpbmcpOworICAgIGZvbnREZXNjcmlwdGlvbi5z
ZXRWYXJpYW50TnVtZXJpY0ZyYWN0aW9uKHZhcmlhbnROdW1lcmljLmZyYWN0aW9uKTsKKyAgICBm
b250RGVzY3JpcHRpb24uc2V0VmFyaWFudE51bWVyaWNPcmRpbmFsKHZhcmlhbnROdW1lcmljLm9y
ZGluYWwpOworICAgIGZvbnREZXNjcmlwdGlvbi5zZXRWYXJpYW50TnVtZXJpY1NsYXNoZWRaZXJv
KHZhcmlhbnROdW1lcmljLnNsYXNoZWRaZXJvKTsKICAgICBzdHlsZVJlc29sdmVyLnNldEZvbnRE
ZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24pOwogfQogCkBAIC0xNDYxLDcgKzE0NzAsMTAgQEAg
aW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaXRpYWxGb250VmFyaWFudEVh
c3RBc2lhbihTdHlsZVJlc29sdmVyJgogaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjph
cHBseVZhbHVlRm9udFZhcmlhbnRFYXN0QXNpYW4oU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZl
ciwgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIGF1dG8gZm9udERlc2NyaXB0aW9uID0gc3R5bGVS
ZXNvbHZlci5mb250RGVzY3JpcHRpb24oKTsKLSAgICBXZWJDb3JlOjphcHBseVZhbHVlRm9udFZh
cmlhbnRFYXN0QXNpYW4oZm9udERlc2NyaXB0aW9uLCB2YWx1ZSk7CisgICAgYXV0byB2YXJpYW50
RWFzdEFzaWFuID0gZXh0cmFjdEZvbnRWYXJpYW50RWFzdEFzaWFuKHZhbHVlKTsKKyAgICBmb250
RGVzY3JpcHRpb24uc2V0VmFyaWFudEVhc3RBc2lhblZhcmlhbnQodmFyaWFudEVhc3RBc2lhbi52
YXJpYW50KTsKKyAgICBmb250RGVzY3JpcHRpb24uc2V0VmFyaWFudEVhc3RBc2lhbldpZHRoKHZh
cmlhbnRFYXN0QXNpYW4ud2lkdGgpOworICAgIGZvbnREZXNjcmlwdGlvbi5zZXRWYXJpYW50RWFz
dEFzaWFuUnVieSh2YXJpYW50RWFzdEFzaWFuLnJ1YnkpOwogICAgIHN0eWxlUmVzb2x2ZXIuc2V0
Rm9udERlc2NyaXB0aW9uKGZvbnREZXNjcmlwdGlvbik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEZsYWdzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L1RleHRGbGFncy5oCmluZGV4IDBjMjgyZmUwMmU4NmM1Yjk3ZmRlNzFkYjAwNzg4
MTJlYzJlMDc0NWYuLjUwOWI1NzlmODcxNTEwNzFlZTdiZDU1ODAyYTIzMjNjOTlmYjExZTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEZsYWdzLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0RmxhZ3MuaApAQCAtMjQ4LDYgKzI0OCw2
MyBAQCBzdHJ1Y3QgRm9udFZhcmlhbnRTZXR0aW5ncyB7CiAgICAgRm9udFZhcmlhbnRFYXN0QXNp
YW5SdWJ5IGVhc3RBc2lhblJ1Ynk7CiB9OwogCitzdHJ1Y3QgRm9udFZhcmlhbnRMaWdhdHVyZXNW
YWx1ZXMgeworICAgIEZvbnRWYXJpYW50TGlnYXR1cmVzVmFsdWVzKAorICAgICAgICBGb250VmFy
aWFudExpZ2F0dXJlcyBjb21tb25MaWdhdHVyZXMsCisgICAgICAgIEZvbnRWYXJpYW50TGlnYXR1
cmVzIGRpc2NyZXRpb25hcnlMaWdhdHVyZXMsCisgICAgICAgIEZvbnRWYXJpYW50TGlnYXR1cmVz
IGhpc3RvcmljYWxMaWdhdHVyZXMsCisgICAgICAgIEZvbnRWYXJpYW50TGlnYXR1cmVzIGNvbnRl
eHR1YWxBbHRlcm5hdGVzKQorICAgICAgICAgICAgOiBjb21tb25MaWdhdHVyZXMoY29tbW9uTGln
YXR1cmVzKQorICAgICAgICAgICAgLCBkaXNjcmV0aW9uYXJ5TGlnYXR1cmVzKGRpc2NyZXRpb25h
cnlMaWdhdHVyZXMpCisgICAgICAgICAgICAsIGhpc3RvcmljYWxMaWdhdHVyZXMoaGlzdG9yaWNh
bExpZ2F0dXJlcykKKyAgICAgICAgICAgICwgY29udGV4dHVhbEFsdGVybmF0ZXMoY29udGV4dHVh
bEFsdGVybmF0ZXMpCisgICAgeworICAgIH0KKworICAgIEZvbnRWYXJpYW50TGlnYXR1cmVzIGNv
bW1vbkxpZ2F0dXJlczsKKyAgICBGb250VmFyaWFudExpZ2F0dXJlcyBkaXNjcmV0aW9uYXJ5TGln
YXR1cmVzOworICAgIEZvbnRWYXJpYW50TGlnYXR1cmVzIGhpc3RvcmljYWxMaWdhdHVyZXM7Cisg
ICAgRm9udFZhcmlhbnRMaWdhdHVyZXMgY29udGV4dHVhbEFsdGVybmF0ZXM7Cit9OworCitzdHJ1
Y3QgRm9udFZhcmlhbnROdW1lcmljVmFsdWVzIHsKKyAgICBGb250VmFyaWFudE51bWVyaWNWYWx1
ZXMoCisgICAgICAgIEZvbnRWYXJpYW50TnVtZXJpY0ZpZ3VyZSBmaWd1cmUsCisgICAgICAgIEZv
bnRWYXJpYW50TnVtZXJpY1NwYWNpbmcgc3BhY2luZywKKyAgICAgICAgRm9udFZhcmlhbnROdW1l
cmljRnJhY3Rpb24gZnJhY3Rpb24sCisgICAgICAgIEZvbnRWYXJpYW50TnVtZXJpY09yZGluYWwg
b3JkaW5hbCwKKyAgICAgICAgRm9udFZhcmlhbnROdW1lcmljU2xhc2hlZFplcm8gc2xhc2hlZFpl
cm8pCisgICAgICAgICAgICA6IGZpZ3VyZShmaWd1cmUpCisgICAgICAgICAgICAsIHNwYWNpbmco
c3BhY2luZykKKyAgICAgICAgICAgICwgZnJhY3Rpb24oZnJhY3Rpb24pCisgICAgICAgICAgICAs
IG9yZGluYWwob3JkaW5hbCkKKyAgICAgICAgICAgICwgc2xhc2hlZFplcm8oc2xhc2hlZFplcm8p
CisgICAgeworICAgIH0KKworICAgIEZvbnRWYXJpYW50TnVtZXJpY0ZpZ3VyZSBmaWd1cmU7Cisg
ICAgRm9udFZhcmlhbnROdW1lcmljU3BhY2luZyBzcGFjaW5nOworICAgIEZvbnRWYXJpYW50TnVt
ZXJpY0ZyYWN0aW9uIGZyYWN0aW9uOworICAgIEZvbnRWYXJpYW50TnVtZXJpY09yZGluYWwgb3Jk
aW5hbDsKKyAgICBGb250VmFyaWFudE51bWVyaWNTbGFzaGVkWmVybyBzbGFzaGVkWmVybzsKK307
CisKK3N0cnVjdCBGb250VmFyaWFudEVhc3RBc2lhblZhbHVlcyB7CisgICAgRm9udFZhcmlhbnRF
YXN0QXNpYW5WYWx1ZXMoCisgICAgICAgIEZvbnRWYXJpYW50RWFzdEFzaWFuVmFyaWFudCB2YXJp
YW50LAorICAgICAgICBGb250VmFyaWFudEVhc3RBc2lhbldpZHRoIHdpZHRoLAorICAgICAgICBG
b250VmFyaWFudEVhc3RBc2lhblJ1YnkgcnVieSkKKyAgICAgICAgICAgIDogdmFyaWFudCh2YXJp
YW50KQorICAgICAgICAgICAgLCB3aWR0aCh3aWR0aCkKKyAgICAgICAgICAgICwgcnVieShydWJ5
KQorICAgIHsKKyAgICB9CisKKyAgICBGb250VmFyaWFudEVhc3RBc2lhblZhcmlhbnQgdmFyaWFu
dDsKKyAgICBGb250VmFyaWFudEVhc3RBc2lhbldpZHRoIHdpZHRoOworICAgIEZvbnRWYXJpYW50
RWFzdEFzaWFuUnVieSBydWJ5OworfTsKKwogZW51bSBGb250V2lkdGhWYXJpYW50IHsKICAgICBS
ZWd1bGFyV2lkdGgsCiAgICAgSGFsZldpZHRoLAo=
</data>
<flag name="review"
          id="296037"
          type_id="1"
          status="+"
          setter="dino"
    />
          </attachment>
      

    </bug>

</bugzilla>