<?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>93960</bug_id>
          
          <creation_ts>2012-08-14 05:32:41 -0700</creation_ts>
          <short_desc>[Qt] Remove FontQt4, HAVE_QRAWFONT flag and the related dead code</short_desc>
          <delta_ts>2012-08-16 03:53:28 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Pierre Rossi">pierre.rossi</reporter>
          <assigned_to name="Pierre Rossi">pierre.rossi</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>hausmann</cc>
    
    <cc>mifenton</cc>
    
    <cc>noam</cc>
    
    <cc>vestbo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>694862</commentid>
    <comment_count>0</comment_count>
    <who name="Pierre Rossi">pierre.rossi</who>
    <bug_when>2012-08-14 05:32:41 -0700</bug_when>
    <thetext>[Qt] Remove FontQt4, HAVE_QRAWFONT flag and the related dead code</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694872</commentid>
    <comment_count>1</comment_count>
      <attachid>158303</attachid>
    <who name="Pierre Rossi">pierre.rossi</who>
    <bug_when>2012-08-14 05:41:35 -0700</bug_when>
    <thetext>Created attachment 158303
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694875</commentid>
    <comment_count>2</comment_count>
      <attachid>158303</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-08-14 05:46:59 -0700</bug_when>
    <thetext>Comment on attachment 158303
Patch

Attachment 158303 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/13494524</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694885</commentid>
    <comment_count>3</comment_count>
      <attachid>158303</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-08-14 05:56:34 -0700</bug_when>
    <thetext>Comment on attachment 158303
Patch

Attachment 158303 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/13492536</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694892</commentid>
    <comment_count>4</comment_count>
      <attachid>158303</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-14 06:00:58 -0700</bug_when>
    <thetext>Comment on attachment 158303
Patch

Attachment 158303 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/13490556</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694893</commentid>
    <comment_count>5</comment_count>
      <attachid>158310</attachid>
    <who name="Pierre Rossi">pierre.rossi</who>
    <bug_when>2012-08-14 06:05:16 -0700</bug_when>
    <thetext>Created attachment 158310
Patch

In my enthusiasm, it seems I had removed one PLATFORM(QT) too many in cross-port code...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>696984</commentid>
    <comment_count>6</comment_count>
      <attachid>158310</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-16 03:53:23 -0700</bug_when>
    <thetext>Comment on attachment 158310
Patch

Clearing flags on attachment: 158310

Committed r125766: &lt;http://trac.webkit.org/changeset/125766&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>696985</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-16 03:53:28 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158303</attachid>
            <date>2012-08-14 05:41:35 -0700</date>
            <delta_ts>2012-08-14 06:05:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-93960-20120814144412.patch</filename>
            <type>text/plain</type>
            <size>49399</size>
            <attacher name="Pierre Rossi">pierre.rossi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1NDQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTkwZTM5YmNiMTIzNTRh
OGM0MTEyMDE4ZGEyZjNiZWVhMmIwYzg2ZS4uNzc0NmM1Zjc3NTk2YWE4ODdjMDg3NzlmMDAwN2Jl
ZDlkZWIxMzJkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDEyLTA4LTE0ICBQaWVy
cmUgUm9zc2kgIDxwaWVycmUucm9zc2lAZ21haWwuY29tPgorCisgICAgICAgIFtRdF0gUmVtb3Zl
IEZvbnRRdDQsIEhBVkVfUVJBV0ZPTlQgZmxhZyBhbmQgdGhlIHJlbGF0ZWQgZGVhZCBjb2RlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05Mzk2MAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZvbGxvd2luZyB0
aGUgcmVtb3ZhbCBvZiBRdCA0IHN1cHBvcnQgZnJvbSB0cnVuayBpbiByMTI0ODc5LgorCisgICAg
ICAgIE5vIG5ldyB0ZXN0cy4gU2ltcGxlIGNsZWFudXAgam9iLgorCisgICAgICAgICogVGFyZ2V0
LnByaToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZvbnQ6OmNvZGVQYXRoKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250
Lmg6CisgICAgICAgIChGb250KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvU2ltcGxlRm9udERhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlRm9udERh
dGE6OnBsYXRmb3JtR2x5cGhJbml0KToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUZvbnREYXRh
OjpnbHlwaEZvckNoYXJhY3Rlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU2ltcGxl
Rm9udERhdGEuaDoKKyAgICAgICAgKFNpbXBsZUZvbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OlNpbXBsZUZvbnREYXRhOjp3aWR0aEZvckdseXBoKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9xdC9Gb250Q2FjaGVRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyYXdGb250Rm9yQ2hh
cmFjdGVycyk6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6OmdldEZvbnREYXRhRm9yQ2hh
cmFjdGVycyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvRm9udEN1c3RvbVBsYXRm
b3JtRGF0YS5oOgorICAgICAgICAoRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvcXQvRm9udEN1c3RvbVBsYXRmb3JtRGF0YVF0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZvbnRDdXN0b21QbGF0Zm9ybURhdGE6OmZvbnRQbGF0Zm9ybURhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvRm9udFBsYXRmb3JtRGF0YS5oOgorICAgICAgICAoV2Vi
Q29yZTo6Rm9udFBsYXRmb3JtRGF0YVByaXZhdGU6OkZvbnRQbGF0Zm9ybURhdGFQcml2YXRlKToK
KyAgICAgICAgKEZvbnRQbGF0Zm9ybURhdGFQcml2YXRlKToKKyAgICAgICAgKEZvbnRQbGF0Zm9y
bURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6Rm9udFBsYXRmb3Jt
RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvRm9udFBsYXRmb3JtRGF0YVF0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6OkZvbnRQbGF0Zm9ybURh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6b3BlcmF0b3I9PSk6Cisg
ICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpoYXNoKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9xdC9Gb250UXQ0LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9xdC9HbHlwaFBhZ2VUcmVlTm9kZVF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkdseXBoUGFnZTo6ZmlsbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvU2ltcGxl
Rm9udERhdGFRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVGb250RGF0YTo6ZGV0ZXJt
aW5lUGl0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlRm9udERhdGE6OnBsYXRmb3JtQm91
bmRzRm9yR2x5cGgpOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlRm9udERhdGE6OnBsYXRmb3Jt
SW5pdCk6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVGb250RGF0YTo6cGxhdGZvcm1DaGFyV2lk
dGhJbml0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRyaWNzQnVpbGRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0TWV0cmljc0J1aWxkZXI6OmFkdmFuY2UpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dE1ldHJpY3NCdWlsZGVyOjphZHZhbmNlU2ltcGxlVGV4
dCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0TWV0cmljc0J1aWxkZXI6OmluaXRpYWxpemVN
ZWFzdXJlbWVudFdpdGhUZXh0UmVuZGVyZXIpOgorCiAyMDEyLTA4LTEzICBWYW5nZWxpcyBLb2tr
ZXZpcyAgPHZhbmdlbGlzQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIENsZWFy
IEhVRCBjYW52YXMgY29udGVudHMgYmVmb3JlIGRyYXdpbmcgaW50byBpdC4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2JsYWNr
YmVycnkvQ2hhbmdlTG9nCmluZGV4IGYxNmU3ZjVmZjFmNDE1ZjExN2JlNTg3ZGY5MWYxNWE4ZTBi
MDgyNzYuLjAyYWI2NTY5OWY4Y2I2MzZhYWNiMzgxNjViYzJjZWU2Yzc5NDJhZGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9ibGFja2JlcnJ5L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTA4LTE0ICBQaWVy
cmUgUm9zc2kgIDxwaWVycmUucm9zc2lAZ21haWwuY29tPgorCisgICAgICAgIFtRdF0gUmVtb3Zl
IEZvbnRRdDQsIEhBVkVfUVJBV0ZPTlQgZmxhZyBhbmQgdGhlIHJlbGF0ZWQgZGVhZCBjb2RlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05Mzk2MAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZvbGxvd2luZyB0
aGUgcmVtb3ZhbCBvZiBRdCA0IHN1cHBvcnQgZnJvbSB0cnVuayBpbiByMTI0ODc5LgorCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvQWJvdXREYXRhSGF2ZUZlYXR1cmVzLmluOiBSZW1vdmUgYWxs
IHRyYWNlcyBvZiBIQVZFX1FSQVdGT05UJ3MgZXhpc3RlbmNlLgorCiAyMDEyLTA4LTEzICBNaWtl
IEZlbnRvbiAgPG1pZmVudG9uQHJpbS5jb20+CiAKICAgICAgICAgW0JsYWNrQmVycnldIFVwZGF0
ZSBBUEkgZm9yIHNwZWxsIGNoZWNraW5nIHN1Z2dlc3Rpb25zIGFnYWluLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4
IGYxMzBkYTVmY2UwMTQ3OWVmNDllZjI0MjE5NGMxOWQ3ZjFiOTc1YjkuLmI5Y2Y2MWZjYWVkMDBi
MWMzYzA4YmU1OGRiZDk0NjJiODFiN2IyM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAor
MjAxMi0wOC0xNCAgUGllcnJlIFJvc3NpICA8cGllcnJlLnJvc3NpQGdtYWlsLmNvbT4KKworICAg
ICAgICBbUXRdIFJlbW92ZSBGb250UXQ0LCBIQVZFX1FSQVdGT05UIGZsYWcgYW5kIHRoZSByZWxh
dGVkIGRlYWQgY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTM5NjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBGb2xsb3dpbmcgdGhlIHJlbW92YWwgb2YgUXQgNCBzdXBwb3J0IGZyb20gdHJ1bmsgaW4g
cjEyNDg3OS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3M6OmdldFdlYkNvcmVTdGF0aXN0aWNzKToKKwogMjAxMi0wOC0x
MyAgUmFwaGFlbCBLdWJvIGRhIENvc3RhICA8cmFrdWNvQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
W0NNYWtlXSBSZW1vdmUgZ2xpYi1yZWxhdGVkIEZpbmQgbW9kdWxlcyBhbmQgd3JpdGUgc2luZ2xl
IG5ldyBvbmUgaW5zdGVhZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkg
Yi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IGIzOWU4OTdjMmI2MDYwZDdhZDk0NjQy
MzY0N2EwNjVkMjgzNzRhMDkuLjRjZmYzZmE5MDhjMDU2NWY5N2U5ZDZmN2E0ODIxMDQwN2ViM2E2
YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dl
YkNvcmUvVGFyZ2V0LnByaQpAQCAtOTQ1LDkgKzk0NSwxMSBAQCBTT1VSQ0VTICs9IFwKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9Gb250RGF0YS5jcHAgXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0Zv
bnQuY3BwIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwIFwKKyAgICBwbGF0
Zm9ybS9ncmFwaGljcy9Gb250RmFzdFBhdGguY3BwIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9G
cmFjdGlvbmFsTGF5b3V0Qm94RXh0ZW50LmNwcCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRnJh
Y3Rpb25hbExheW91dFJlY3QuY3BwIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9HZW5lcmF0b3JH
ZW5lcmF0ZWRJbWFnZS5jcHAgXAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dseXBoUGFnZVRyZWVO
b2RlLmNwcCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnQuY3BwIFwKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwIFwKICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0xheWVyLmNwcCBcCkBAIC05NjIsNiArOTY0LDcgQEAgU09VUkNFUyArPSBcCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5jcHAgXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1Bh
dGhUcmF2ZXJzYWxTdGF0ZS5jcHAgXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4uY3Bw
IFwKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9xdC9Gb250UXQuY3BwIFwKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9SZWdpb24uY3BwIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Sb3VuZGVkUmVjdC5j
cHAgXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1NlZ21lbnRlZEZvbnREYXRhLmNwcCBcCkBAIC05
NzEsNiArOTc0LDcgQEAgU09VUkNFUyArPSBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvU3RyaW5n
VHJ1bmNhdG9yLmNwcCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvR3JhcGhpY3NT
dXJmYWNlLmNwcCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvcXQvR3JhcGhpY3NT
dXJmYWNlUXQuY3BwIFwKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9TdXJyb2dhdGVQYWlyQXdhcmVU
ZXh0SXRlcmF0b3IuY3BwIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9UZXh0UnVuLmNwcCBcCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nU3RvcmUuY3BwIFwKICAgICBwbGF0Zm9y
bS9ncmFwaGljcy90cmFuc2Zvcm1zL0FmZmluZVRyYW5zZm9ybS5jcHAgXApAQCAtOTg0LDYgKzk4
OCw3IEBAIFNPVVJDRVMgKz0gXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJh
bnNmb3JtT3BlcmF0aW9ucy5jcHAgXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMv
VHJhbnNmb3JtU3RhdGUuY3BwIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1Ry
YW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5jcHAgXAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL1dp
ZHRoSXRlcmF0b3IuY3BwIFwKICAgICBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29k
ZXIuY3BwIFwKICAgICBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVy
LmNwcCBcCiAgICAgcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlUmVhZGVyLmNw
cCBcCkBAIC0yMTA0LDYgKzIxMDksNyBAQCBIRUFERVJTICs9IFwKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9TaGFkb3dCbHVyLmggXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1NpbXBsZUZvbnREYXRh
LmggXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL0dyYXBoaWNzU3VyZmFjZS5oIFwK
KyAgICBwbGF0Zm9ybS9ncmFwaGljcy9TdXJyb2dhdGVQYWlyQXdhcmVUZXh0SXRlcmF0b3IuaCBc
CiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVy
LmggXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmggXAogICAg
IHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmggXApA
QCAtMjEyMyw2ICsyMTI5LDcgQEAgSEVBREVSUyArPSBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
dHJhbnNmb3Jtcy9UcmFuc2Zvcm1PcGVyYXRpb25zLmggXAogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L3RyYW5zZm9ybXMvVHJhbnNmb3JtU3RhdGUuaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdHJh
bnNmb3Jtcy9UcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24uaCBcCisgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvV2lkdGhJdGVyYXRvci5oIFwKICAgICBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAv
Qk1QSW1hZ2VEZWNvZGVyLmggXAogICAgIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJ
bWFnZVJlYWRlci5oIFwKICAgICBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VE
ZWNvZGVyLmggXApAQCAtMzI4NiwyOCArMzI5Myw2IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJM
RV9NQVRITUw9MSkgewogICAgICAgICByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFVuZGVy
T3Zlci5jcHAKIH0KIAotIyBRUmF3Rm9udCB0cmFuc2l0aW9uIGhhbmRsaW5nLgotIwotIyBFdmVu
IHRob3VnaCBRUmF3Rm9udCB3YXMgYWxyZWFkeSBhdmFpbGFibGUgaW4gUXQgNC44LCBpdCBoYWQK
LSMgbGltaXRhdGlvbnMgdGhhdCBtYWRlIHN3aXRjaGluZyBmdWxseSB0byBpdCBpbXBvc3NpYmxl
LgotIyBXZSBwcmVzZXJ2ZSB0aGUgb2xkIGNvZGUgcGF0aCB3aGVuIGJ1aWxkaW5nIHdpdGggUXQg
NC4KLQotY29udGFpbnMoREVGSU5FUywgSEFWRV9RUkFXRk9OVD0xKSB7Ci0gICAgU09VUkNFUyAr
PSBcCi0gICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0ZvbnRRdC5jcHAgXAotICAgICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9Gb250RmFzdFBhdGguY3BwIFwKLSAgICAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvR2x5cGhQYWdlVHJlZU5vZGUuY3BwIFwKLSAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
V2lkdGhJdGVyYXRvci5jcHAgXAotICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9TdXJyb2dhdGVQ
YWlyQXdhcmVUZXh0SXRlcmF0b3IuY3BwCi0KLSAgICBIRUFERVJTICs9IFwKLSAgICAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5oIFwKLSAgICAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvU3Vycm9nYXRlUGFpckF3YXJlVGV4dEl0ZXJhdG9yLmgKLX0gZWxzZSB7Ci0gICAgU09VUkNF
UyArPSBcCi0gICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0ZvbnRRdDQuY3BwCi19Ci0KIGNv
bnRhaW5zKERFRklORVMsIEVOQUJMRV9URVhUX0FVVE9TSVpJTkc9MSkgewogICAgIFNPVVJDRVMg
Kz0gIyBGSVhNRSEKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAK
aW5kZXggMjk5NDY5OGE1MjllMjFlMzM4MzI2NGQ0NzVlMGVjNjdlMjQ4MDAyNS4uZGIwN2YwYTk4
ZDIxZjQxNmE4ZDA1NjZhMjQ5NjgwM2MyNjBhZjZlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRm9udC5jcHAKQEAgLTI1OSwxMSArMjU5LDYgQEAgRm9udDo6Q29kZVBhdGgg
Rm9udDo6Y29kZVBhdGgoY29uc3QgVGV4dFJ1biYgcnVuKSBjb25zdAogICAgICAgICByZXR1cm4g
U2ltcGxlOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShRVCkgJiYgIUhBVkUoUVJBV0ZPTlQpCi0g
ICAgaWYgKHJ1bi5leHBhbnNpb24oKSB8fCBydW4ucnRsKCkgfHwgaXNTbWFsbENhcHMoKSB8fCB3
b3JkU3BhY2luZygpIHx8IGxldHRlclNwYWNpbmcoKSkKLSAgICAgICAgcmV0dXJuIENvbXBsZXg7
Ci0jZW5kaWYKLQogICAgIGlmIChtX2ZvbnREZXNjcmlwdGlvbi5mZWF0dXJlU2V0dGluZ3MoKSAm
JiBtX2ZvbnREZXNjcmlwdGlvbi5mZWF0dXJlU2V0dGluZ3MoKS0+c2l6ZSgpID4gMCkKICAgICAg
ICAgcmV0dXJuIENvbXBsZXg7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250LmgKaW5kZXggYjNiNjFiYWJiMDIwNTJjNTJiOTIyYzliYmMzOWZmZWZjYjQ2ZmRlMC4uMjQ2
MzVjOTMzZjk4YzYzZDQwZTM5NWIwYmQzZTU4MDdiZDBkZjg5ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnQuaApAQCAtMzYsMTQgKzM2LDEwIEBACiAjaW5jbHVkZSA8d3Rm
L3VuaWNvZGUvQ2hhcmFjdGVyTmFtZXMuaD4KIAogI2lmIFBMQVRGT1JNKFFUKQotI2lmIEhBVkUo
UVJBV0ZPTlQpCiAjaW5jbHVkZSA8UVJhd0ZvbnQ+CiBRVF9CRUdJTl9OQU1FU1BBQ0UKIGNsYXNz
IFFUZXh0TGF5b3V0OwogUVRfRU5EX05BTUVTUEFDRQotI2Vsc2UKLSNpbmNsdWRlIDxRRm9udD4K
LSNlbmRpZgogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTE4NCwxMSArMTgwLDcg
QEAgcHVibGljOgogICAgIHN0YXRpYyB1bnNpZ25lZCBleHBhbnNpb25PcHBvcnR1bml0eUNvdW50
KGNvbnN0IFVDaGFyKiwgc2l6ZV90IGxlbmd0aCwgVGV4dERpcmVjdGlvbiwgYm9vbCYgaXNBZnRl
ckV4cGFuc2lvbik7CiAKICNpZiBQTEFURk9STShRVCkKLSNpZiBIQVZFKFFSQVdGT05UKQogICAg
IFFSYXdGb250IHJhd0ZvbnQoKSBjb25zdDsKLSNlbHNlCi0gICAgUUZvbnQgZm9udCgpIGNvbnN0
OwotI2VuZGlmCiAgICAgUUZvbnQgc3ludGhldGljRm9udCgpIGNvbnN0OwogI2VuZGlmCiAKQEAg
LTI2OCw5ICsyNjAsOCBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgcmV0dXJuIG1fZm9udExp
c3QgJiYgbV9mb250TGlzdC0+bG9hZGluZ0N1c3RvbUZvbnRzKCk7CiAgICAgfQotI2lmIFBMQVRG
T1JNKFFUKSAmJiBIQVZFKFFSQVdGT05UKQorCiAgICAgdm9pZCBpbml0Rm9ybWF0Rm9yVGV4dExh
eW91dChRVGV4dExheW91dCopIGNvbnN0OwotI2VuZGlmCiAKICAgICBGb250RGVzY3JpcHRpb24g
bV9mb250RGVzY3JpcHRpb247CiAgICAgbXV0YWJsZSBSZWZQdHI8Rm9udEZhbGxiYWNrTGlzdD4g
bV9mb250TGlzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQuY3BwCmluZGV4IGNhZWY3YWQyZTQ5Y2ViOGVjNmQxYWFjZTU2ODQ0Njk3
MWFiMTFmMmQuLmIwZWUxNTY2OGE0Y2I0ODcxNzQxNTAzY2M2ZjIwNGJlMGY1YmIxMzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
LmNwcApAQCAtMzc2LDcgKzM3Niw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0OjpwYWludGluZ0Rp
c2FibGVkKCkgY29uc3QKICAgICByZXR1cm4gbV9zdGF0ZS5wYWludGluZ0Rpc2FibGVkOwogfQog
Ci0jaWYgIU9TKFdJTkNFKSB8fCAoUExBVEZPUk0oUVQpICYmICFIQVZFKFFSQVdGT05UKSkKKyNp
ZiAhT1MoV0lOQ0UpCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RleHQoY29uc3QgRm9udCYg
Zm9udCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgaW50IGZy
b20sIGludCB0bykKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2ltcGxlRm9udERhdGEuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2ltcGxlRm9udERhdGEuY3BwCmluZGV4IDc5
NTE0MjVjOGY1NzZlODgzNjhmNzIyNWU0ZGViMGU4MGFjYWY3MDkuLjEyMzJlNDdmOTFjY2Y5NTE4
NWMxNWEzMzdkNzY3YzkyMWI2OTRhMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1NpbXBsZUZvbnREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9TaW1wbGVGb250RGF0YS5jcHAKQEAgLTY5LDcgKzY5LDYgQEAgU2ltcGxl
Rm9udERhdGE6OlNpbXBsZUZvbnREYXRhKFBhc3NPd25QdHI8QWRkaXRpb25hbEZvbnREYXRhPiBm
b250RGF0YSwgZmxvYXQgZm8KICAgICBtX2ZvbnREYXRhLT5pbml0aWFsaXplRm9udERhdGEodGhp
cywgZm9udFNpemUpOwogfQogCi0jaWYgIShQTEFURk9STShRVCkgJiYgIUhBVkUoUVJBV0ZPTlQp
KQogLy8gRXN0aW1hdGVzIG9mIGF2Z0NoYXJXaWR0aCBhbmQgbWF4Q2hhcldpZHRoIGZvciBwbGF0
Zm9ybXMgdGhhdCBkb24ndCBzdXBwb3J0IGFjY2Vzc2luZyB0aGVzZSB2YWx1ZXMgZnJvbSB0aGUg
Zm9udC4KIHZvaWQgU2ltcGxlRm9udERhdGE6OmluaXRDaGFyV2lkdGhzKCkKIHsKQEAgLTEzMCw3
ICsxMjksNiBAQCB2b2lkIFNpbXBsZUZvbnREYXRhOjpwbGF0Zm9ybUdseXBoSW5pdCgpCiAgICAg
bV9taXNzaW5nR2x5cGhEYXRhLmZvbnREYXRhID0gdGhpczsKICAgICBtX21pc3NpbmdHbHlwaERh
dGEuZ2x5cGggPSAwOwogfQotI2VuZGlmCiAKIFNpbXBsZUZvbnREYXRhOjp+U2ltcGxlRm9udERh
dGEoKQogewpAQCAtMTQ4LDEzICsxNDYsMTEgQEAgY29uc3QgU2ltcGxlRm9udERhdGEqIFNpbXBs
ZUZvbnREYXRhOjpmb250RGF0YUZvckNoYXJhY3RlcihVQ2hhcjMyKSBjb25zdAogICAgIHJldHVy
biB0aGlzOwogfQogCi0jaWYgIShQTEFURk9STShRVCkgJiYgIUhBVkUoUVJBV0ZPTlQpKQogR2x5
cGggU2ltcGxlRm9udERhdGE6OmdseXBoRm9yQ2hhcmFjdGVyKFVDaGFyMzIgY2hhcmFjdGVyKSBj
b25zdAogewogICAgIEdseXBoUGFnZVRyZWVOb2RlKiBub2RlID0gR2x5cGhQYWdlVHJlZU5vZGU6
OmdldFJvb3RDaGlsZCh0aGlzLCBjaGFyYWN0ZXIgLyBHbHlwaFBhZ2U6OnNpemUpOwogICAgIHJl
dHVybiBub2RlLT5wYWdlKCkgPyBub2RlLT5wYWdlKCktPmdseXBoQXQoY2hhcmFjdGVyICUgR2x5
cGhQYWdlOjpzaXplKSA6IDA7CiB9Ci0jZW5kaWYKIAogYm9vbCBTaW1wbGVGb250RGF0YTo6aXNT
ZWdtZW50ZWQoKSBjb25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvU2ltcGxlRm9udERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1NpbXBsZUZvbnREYXRhLmgKaW5kZXggMGEzODljZDkyMWIwNjA3NjVhYmMzMjg1YzE1Yzk5
NDM2ZWMwMGZiOC4uYzBiMDQ0ZDJjYjMwZGYyNjVlMzQyYjgzOWUxZjE1M2YyYjE2YzM0MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2ltcGxlRm9udERhdGEu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaW1wbGVGb250RGF0YS5o
CkBAIC01MywxMiArNTMsOCBAQAogI2VuZGlmCiAKICNpZiBQTEFURk9STShRVCkKLSNpZiAhSEFW
RShRUkFXRk9OVCkKLSNpbmNsdWRlIDxRRm9udD4KLSNlbHNlCiAjaW5jbHVkZSA8UVJhd0ZvbnQ+
CiAjZW5kaWYKLSNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTE4NiwxMSArMTgy
LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBQTEFURk9STShRVCkKLSNpZiAhSEFWRShRUkFX
Rk9OVCkKLSAgICBRRm9udCBnZXRRdEZvbnQoKSBjb25zdCB7IHJldHVybiBtX3BsYXRmb3JtRGF0
YS5mb250KCk7IH0KLSNlbHNlCiAgICAgUVJhd0ZvbnQgZ2V0UXRSYXdGb250KCkgY29uc3QgeyBy
ZXR1cm4gbV9wbGF0Zm9ybURhdGEucmF3Rm9udCgpOyB9Ci0jZW5kaWYgLy8gIUhBVkUoUVJBV0ZP
TlQpCiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKFdJTikgfHwgKE9TKFdJTkRPV1MpICYmIFBMQVRG
T1JNKFdYKSkKQEAgLTI5NSw3ICsyODcsNiBAQCBwcml2YXRlOgogI2VuZGlmCiB9OwogCi0jaWYg
IShQTEFURk9STShRVCkgJiYgIUhBVkUoUVJBV0ZPTlQpKQogQUxXQVlTX0lOTElORSBGbG9hdFJl
Y3QgU2ltcGxlRm9udERhdGE6OmJvdW5kc0ZvckdseXBoKEdseXBoIGdseXBoKSBjb25zdAogewog
ICAgIGlmIChpc1plcm9XaWR0aFNwYWNlR2x5cGgoZ2x5cGgpKQpAQCAtMzMyLDcgKzMyMyw2IEBA
IEFMV0FZU19JTkxJTkUgZmxvYXQgU2ltcGxlRm9udERhdGE6OndpZHRoRm9yR2x5cGgoR2x5cGgg
Z2x5cGgpIGNvbnN0CiAgICAgbV9nbHlwaFRvV2lkdGhNYXAuc2V0TWV0cmljc0ZvckdseXBoKGds
eXBoLCB3aWR0aCk7CiAgICAgcmV0dXJuIHdpZHRoOwogfQotI2VuZGlmIC8vIEhBVkUoUVJBV0ZP
TlQpCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvRm9udENhY2hlUXQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvcXQvRm9udENhY2hlUXQuY3BwCmluZGV4IDgxNmJjY2I4OTI0Y2Fh
ZjgzNTA5Y2MwNmFlNmIwNTJhYTMxOGJjM2QuLjk1N2Q3N2E5Y2YzNmU1N2ViZWY4ZTQ2NTRhMmVj
MjYyNWIxMTBhNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3F0L0ZvbnRDYWNoZVF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9xdC9Gb250Q2FjaGVRdC5jcHAKQEAgLTM2LDkgKzM2LDcgQEAKIAogI2luY2x1ZGUgPFFGb250
PgogI2luY2x1ZGUgPFFGb250RGF0YWJhc2U+Ci0jaWYgSEFWRShRUkFXRk9OVCkKICNpbmNsdWRl
IDxRVGV4dExheW91dD4KLSNlbmRpZgogCiB1c2luZyBuYW1lc3BhY2UgV1RGOwogCkBAIC00OCw3
ICs0Niw2IEBAIHZvaWQgRm9udENhY2hlOjpwbGF0Zm9ybUluaXQoKQogewogfQogCi0jaWYgSEFW
RShRUkFXRk9OVCkKIHN0YXRpYyBRUmF3Rm9udCByYXdGb250Rm9yQ2hhcmFjdGVycyhjb25zdCBR
U3RyaW5nJiBzdHJpbmcsIGNvbnN0IFFSYXdGb250JiBmb250KQogewogICAgIFFUZXh0TGF5b3V0
IGxheW91dChzdHJpbmcpOwpAQCAtNjUsMjMgKzYyLDE1IEBAIHN0YXRpYyBRUmF3Rm9udCByYXdG
b250Rm9yQ2hhcmFjdGVycyhjb25zdCBRU3RyaW5nJiBzdHJpbmcsIGNvbnN0IFFSYXdGb250JiBm
b250CiAgICAgY29uc3QgUUdseXBoUnVuJiBnbHlwaHMoZ2x5cGhMaXN0LmF0KDApKTsKICAgICBy
ZXR1cm4gZ2x5cGhzLnJhd0ZvbnQoKTsKIH0KLSNlbmRpZiAvLyBIQVZFKFFSQVdGT05UKQogCiBj
b25zdCBTaW1wbGVGb250RGF0YSogRm9udENhY2hlOjpnZXRGb250RGF0YUZvckNoYXJhY3RlcnMo
Y29uc3QgRm9udCYgZm9udCwgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIGludCBsZW5ndGgpCiB7
Ci0jaWYgSEFWRShRUkFXRk9OVCkKICAgICBRU3RyaW5nIHFzdHJpbmcgPSBRU3RyaW5nOjpmcm9t
UmF3RGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IFFDaGFyKj4oY2hhcmFjdGVycyksIGxlbmd0
aCk7CiAgICAgUVJhd0ZvbnQgY29tcHV0ZWRGb250ID0gcmF3Rm9udEZvckNoYXJhY3RlcnMocXN0
cmluZywgZm9udC5yYXdGb250KCkpOwogICAgIGlmICghY29tcHV0ZWRGb250LmlzVmFsaWQoKSkK
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgRm9udFBsYXRmb3JtRGF0YSBhbHRlcm5hdGVGb250KGNv
bXB1dGVkRm9udCk7CiAgICAgcmV0dXJuIGdldENhY2hlZEZvbnREYXRhKCZhbHRlcm5hdGVGb250
LCBEb05vdFJldGFpbik7Ci0jZWxzZQotICAgIFFfVU5VU0VEKGZvbnQpOwotICAgIFFfVU5VU0VE
KGNoYXJhY3RlcnMpOwotICAgIFFfVU5VU0VEKGxlbmd0aCk7Ci0gICAgcmV0dXJuIDA7Ci0jZW5k
aWYKIH0KIAogU2ltcGxlRm9udERhdGEqIEZvbnRDYWNoZTo6Z2V0U2ltaWxhckZvbnRQbGF0Zm9y
bURhdGEoY29uc3QgRm9udCYgZm9udCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3F0L0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAppbmRleCA3ZmE5
ZjhjMTE1ZWE4OTQwMjk4OGU5ZjM2MWU2YjE1ZDE1YTQxYjM2Li5mYmY5YTE1OGQ4NzMwZGFjZTNi
Mjc4NWE4ZGIwYzQ3MzJkZWFmNGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9xdC9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCkBAIC0yOSw5
ICsyOSw3IEBACiAjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4KICNpbmNsdWRlIDx3dGYv
Rm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgotI2lmIEhBVkUoUVJBV0ZP
TlQpCiAjaW5jbHVkZSA8UVJhd0ZvbnQ+Ci0jZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkBAIC00MiwxOSArNDAsMTMgQEAgc3RydWN0IEZvbnRDdXN0b21QbGF0Zm9ybURhdGEgewogICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKEZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOyBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBGb250Q3VzdG9tUGxhdGZvcm1EYXRhKCkgeyB9
Ci0gICAgfkZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKTsKLQotI2lmICFIQVZFKFFSQVdGT05UKQot
ICAgIC8vIGZvciB1c2Ugd2l0aCBRRm9udERhdGFiYXNlOjphZGRBcHBsaWNhdGlvbkZvbnQvcmVt
b3ZlQXBwbGljYXRpb25Gb250Ci0gICAgaW50IG1faGFuZGxlOwotI2Vsc2UKLSAgICBRUmF3Rm9u
dCBtX3Jhd0ZvbnQ7Ci0jZW5kaWYKIAogICAgIEZvbnRQbGF0Zm9ybURhdGEgZm9udFBsYXRmb3Jt
RGF0YShpbnQgc2l6ZSwgYm9vbCBib2xkLCBib29sIGl0YWxpYywgRm9udE9yaWVudGF0aW9uID0g
SG9yaXpvbnRhbCwgVGV4dE9yaWVudGF0aW9uID0gVGV4dE9yaWVudGF0aW9uVmVydGljYWxSaWdo
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9udFdpZHRoVmFyaWFu
dCA9IFJlZ3VsYXJXaWR0aCwgRm9udFJlbmRlcmluZ01vZGUgPSBOb3JtYWxSZW5kZXJpbmdNb2Rl
KTsKIAogICAgIHN0YXRpYyBib29sIHN1cHBvcnRzRm9ybWF0KGNvbnN0IFN0cmluZyYpOworCisg
ICAgUVJhd0ZvbnQgbV9yYXdGb250OwogfTsKIAogRm9udEN1c3RvbVBsYXRmb3JtRGF0YSogY3Jl
YXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXIqIGJ1ZmZlcik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9Gb250Q3VzdG9tUGxhdGZv
cm1EYXRhUXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvRm9udEN1
c3RvbVBsYXRmb3JtRGF0YVF0LmNwcAppbmRleCA0YzViOTY0ODg1Mjg1ZWNiZTE4YmMyYzY4OTBk
ODQ1ZDE1Y2NiZjUzLi4yYmUzODU1MGU2MDdkODA1MmFkZWVmNTQyZTM0N2U3YTVhNmEwOGQ4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9Gb250Q3VzdG9t
UGxhdGZvcm1EYXRhUXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3F0L0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFRdC5jcHAKQEAgLTI0LDM1ICsyNCwxNSBAQAogCiAj
aW5jbHVkZSAiRm9udFBsYXRmb3JtRGF0YS5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgot
I2lmICFIQVZFKFFSQVdGT05UKQotI2luY2x1ZGUgPFFGb250RGF0YWJhc2U+Ci0jZW5kaWYKICNp
bmNsdWRlIDxRU3RyaW5nTGlzdD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1Gb250Q3VzdG9t
UGxhdGZvcm1EYXRhOjp+Rm9udEN1c3RvbVBsYXRmb3JtRGF0YSgpCi17Ci0jaWYgIUhBVkUoUVJB
V0ZPTlQpCi0gICAgUUZvbnREYXRhYmFzZTo6cmVtb3ZlQXBwbGljYXRpb25Gb250KG1faGFuZGxl
KTsKLSNlbmRpZgotfQotCiBGb250UGxhdGZvcm1EYXRhIEZvbnRDdXN0b21QbGF0Zm9ybURhdGE6
OmZvbnRQbGF0Zm9ybURhdGEoaW50IHNpemUsIGJvb2wgYm9sZCwgYm9vbCBpdGFsaWMsIEZvbnRP
cmllbnRhdGlvbiwgVGV4dE9yaWVudGF0aW9uLCBGb250V2lkdGhWYXJpYW50LCBGb250UmVuZGVy
aW5nTW9kZSkKIHsKLSNpZiAhSEFWRShRUkFXRk9OVCkKLSAgICBRRm9udCBmb250OwotICAgIGZv
bnQuc2V0RmFtaWx5KFFGb250RGF0YWJhc2U6OmFwcGxpY2F0aW9uRm9udEZhbWlsaWVzKG1faGFu
ZGxlKVswXSk7Ci0gICAgZm9udC5zZXRQaXhlbFNpemUoc2l6ZSk7Ci0gICAgaWYgKGJvbGQpCi0g
ICAgICAgIGZvbnQuc2V0V2VpZ2h0KFFGb250OjpCb2xkKTsKLSAgICBmb250LnNldEl0YWxpYyhp
dGFsaWMpOwotICAgIHJldHVybiBGb250UGxhdGZvcm1EYXRhKGZvbnQpOwotI2Vsc2UKICAgICBR
X0FTU0VSVChtX3Jhd0ZvbnQuaXNWYWxpZCgpKTsKICAgICBtX3Jhd0ZvbnQuc2V0UGl4ZWxTaXpl
KHFyZWFsKHNpemUpKTsKICAgICByZXR1cm4gRm9udFBsYXRmb3JtRGF0YShtX3Jhd0ZvbnQpOwot
I2VuZGlmCiB9CiAKIEZvbnRDdXN0b21QbGF0Zm9ybURhdGEqIGNyZWF0ZUZvbnRDdXN0b21QbGF0
Zm9ybURhdGEoU2hhcmVkQnVmZmVyKiBidWZmZXIpCkBAIC02MCwyNCArNDAsMTMgQEAgRm9udEN1
c3RvbVBsYXRmb3JtRGF0YSogY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZm
ZXIqIGJ1ZmZlcikKICAgICBBU1NFUlRfQVJHKGJ1ZmZlciwgYnVmZmVyKTsKIAogICAgIGNvbnN0
IFFCeXRlQXJyYXkgZm9udERhdGEoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKLSNp
ZiAhSEFWRShRUkFXRk9OVCkKLSAgICBpbnQgaWQgPSBRRm9udERhdGFiYXNlOjphZGRBcHBsaWNh
dGlvbkZvbnRGcm9tRGF0YShmb250RGF0YSk7Ci0gICAgaWYgKGlkID09IC0xKQotICAgICAgICBy
ZXR1cm4gMDsKLSAgICBRX0FTU0VSVChRRm9udERhdGFiYXNlOjphcHBsaWNhdGlvbkZvbnRGYW1p
bGllcyhpZCkuc2l6ZSgpID4gMCk7Ci0jZWxzZQogICAgIC8vIFBpeGVsIHNpemUgZG9lc24ndCBt
YXR0ZXIgYXQgdGhpcyBwb2ludCwgaXQgaXMgc2V0IGluIEZvbnRDdXN0b21QbGF0Zm9ybURhdGE6
OmZvbnRQbGF0Zm9ybURhdGEuCiAgICAgUVJhd0ZvbnQgcmF3Rm9udChmb250RGF0YSwgLypwaXhl
bFNpemUgPSAqLzAsIFFGb250OjpQcmVmZXJEZWZhdWx0SGludGluZyk7CiAgICAgaWYgKCFyYXdG
b250LmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIDA7Ci0jZW5kaWYKIAogICAgIEZvbnRDdXN0
b21QbGF0Zm9ybURhdGEgKmRhdGEgPSBuZXcgRm9udEN1c3RvbVBsYXRmb3JtRGF0YTsKLSNpZiAh
SEFWRShRUkFXRk9OVCkKLSAgICBkYXRhLT5tX2hhbmRsZSA9IGlkOwotI2Vsc2UKICAgICBkYXRh
LT5tX3Jhd0ZvbnQgPSByYXdGb250OwotI2VuZGlmCiAgICAgcmV0dXJuIGRhdGE7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ZvbnRQbGF0Zm9y
bURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ZvbnRQbGF0Zm9y
bURhdGEuaAppbmRleCBiNjBkMDVkNTJhZjYwZTQwOGU2YzBlZTdiNTZhNWUzMDA2N2FjZGM4Li41
MDg4NWUyM2QwMWExYmZiMTVlYjgwOTQ3MWZlZTM2ODM5YWQ5Y2QwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9Gb250UGxhdGZvcm1EYXRhLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvRm9udFBsYXRmb3JtRGF0YS5oCkBA
IC0yOCw5ICsyOCw3IEBACiAjaW5jbHVkZSAiRm9udE9yaWVudGF0aW9uLmgiCiAjaW5jbHVkZSA8
UUZvbnQ+CiAjaW5jbHVkZSA8UUhhc2g+Ci0jaWYgSEFWRShRUkFXRk9OVCkKICNpbmNsdWRlIDxR
UmF3Rm9udD4KLSNlbmRpZgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KIApAQCAtNDAsMTMgKzM4LDggQEAgY2xhc3MgRm9udFBsYXRmb3JtRGF0
YVByaXZhdGUgOiBwdWJsaWMgUmVmQ291bnRlZDxGb250UGxhdGZvcm1EYXRhUHJpdmF0ZT4gewog
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEZvbnRQbGF0Zm9ybURhdGFQcml2YXRlKTsgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgRm9udFBsYXRmb3JtRGF0YVByaXZhdGUo
KQotI2lmICFIQVZFKFFSQVdGT05UKQotICAgICAgICA6IHNpemUoZm9udC5waXhlbFNpemUoKSkK
LSAgICAgICAgLCBib2xkKGZvbnQuYm9sZCgpKQotI2Vsc2UKICAgICAgICAgOiBzaXplKDApCiAg
ICAgICAgICwgYm9sZChmYWxzZSkKLSNlbmRpZgogICAgICAgICAsIG9ibGlxdWUoZmFsc2UpCiAg
ICAgICAgICwgaXNEZWxldGVkVmFsdWUoZmFsc2UpCiAgICAgeyB9CkBAIC01OCwyMyArNTEsMTMg
QEAgcHVibGljOgogICAgIHsKIC8vIFRoaXMgaXMgbmVjZXNzYXJ5IGZvciBTVkcgRm9udHMsIHdo
aWNoIGFyZSBvbmx5IHN1cHBvcnRlZCB3aGVuIHVzaW5nIFFSYXdGb250LgogLy8gSXQgaXMgdXNl
ZCB0byBjb25zdHJ1Y3QgdGhlIGFwcHJvcHJpYXRlIHBsYXRmb3JtIGRhdGEgdG8gdXNlIGFzIGEg
ZmFsbGJhY2suCi0jaWYgSEFWRShRUkFXRk9OVCkKICAgICAgICAgUUZvbnQgZm9udDsKICAgICAg
ICAgZm9udC5zZXRCb2xkKGJvbGQpOwogICAgICAgICBmb250LnNldEl0YWxpYyhvYmxpcXVlKTsK
ICAgICAgICAgcmF3Rm9udCA9IFFSYXdGb250Ojpmcm9tRm9udChmb250LCBRRm9udERhdGFiYXNl
OjpBbnkpOwogICAgICAgICByYXdGb250LnNldFBpeGVsU2l6ZShzaXplKTsKLSNlbmRpZgogICAg
IH0KLSNpZiAhSEFWRShRUkFXRk9OVCkKLSAgICBGb250UGxhdGZvcm1EYXRhUHJpdmF0ZShjb25z
dCBRRm9udCYgZm9udCkKLSAgICAgICAgOiBmb250KGZvbnQpCi0gICAgICAgICwgc2l6ZShmb250
LnBpeGVsU2l6ZSgpKQotICAgICAgICAsIGJvbGQoZm9udC5ib2xkKCkpCi0gICAgICAgICwgb2Js
aXF1ZShmYWxzZSkKLSAgICAgICAgLCBpc0RlbGV0ZWRWYWx1ZShmYWxzZSkKLSAgICB7IH0KLSNl
bHNlCisKICAgICBGb250UGxhdGZvcm1EYXRhUHJpdmF0ZShjb25zdCBRUmF3Rm9udCYgcmF3Rm9u
dCkKICAgICAgICAgOiByYXdGb250KHJhd0ZvbnQpCiAgICAgICAgICwgc2l6ZShyYXdGb250LnBp
eGVsU2l6ZSgpKQpAQCAtODIsMTYgKzY1LDEyIEBAIHB1YmxpYzoKICAgICAgICAgLCBvYmxpcXVl
KGZhbHNlKQogICAgICAgICAsIGlzRGVsZXRlZFZhbHVlKGZhbHNlKQogICAgIHsgfQotI2VuZGlm
CisKICAgICBGb250UGxhdGZvcm1EYXRhUHJpdmF0ZShXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1
ZVR5cGUpCiAgICAgICAgIDogaXNEZWxldGVkVmFsdWUodHJ1ZSkKICAgICB7IH0KIAotI2lmICFI
QVZFKFFSQVdGT05UKQotICAgIFFGb250IGZvbnQ7Ci0jZWxzZQogICAgIFFSYXdGb250IHJhd0Zv
bnQ7Ci0jZW5kaWYKICAgICBmbG9hdCBzaXplOwogICAgIGJvb2wgYm9sZCA6IDE7CiAgICAgYm9v
bCBvYmxpcXVlIDogMTsKQEAgLTEwMywxNiArODIsMTAgQEAgY2xhc3MgRm9udFBsYXRmb3JtRGF0
YSB7CiBwdWJsaWM6CiAgICAgRm9udFBsYXRmb3JtRGF0YShmbG9hdCBzaXplLCBib29sIGJvbGQs
IGJvb2wgb2JsaXF1ZSk7CiAgICAgRm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250RGVzY3JpcHRp
b24mLCBjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlseU5hbWUsIGludCB3b3JkU3BhY2luZyA9IDAs
IGludCBsZXR0ZXJTcGFjaW5nID0gMCk7Ci0jaWYgIUhBVkUoUVJBV0ZPTlQpCi0gICAgRm9udFBs
YXRmb3JtRGF0YShjb25zdCBRRm9udCYgZm9udCkKLSAgICAgICAgOiBtX2RhdGEoYWRvcHRSZWYo
bmV3IEZvbnRQbGF0Zm9ybURhdGFQcml2YXRlKGZvbnQpKSkKLSAgICB7IH0KLSNlbHNlCiAgICAg
Rm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250UGxhdGZvcm1EYXRhJiwgZmxvYXQgc2l6ZSk7CiAg
ICAgRm9udFBsYXRmb3JtRGF0YShjb25zdCBRUmF3Rm9udCYgcmF3Rm9udCkKICAgICAgICAgOiBt
X2RhdGEoYWRvcHRSZWYobmV3IEZvbnRQbGF0Zm9ybURhdGFQcml2YXRlKHJhd0ZvbnQpKSkKICAg
ICB7IH0KLSNlbmRpZgogICAgIEZvbnRQbGF0Zm9ybURhdGEoV1RGOjpIYXNoVGFibGVEZWxldGVk
VmFsdWVUeXBlKQogICAgICAgICA6IG1fZGF0YShhZG9wdFJlZihuZXcgRm9udFBsYXRmb3JtRGF0
YVByaXZhdGUoKSkpCiAgICAgewpAQCAtMTI2LDE1ICs5OSw2IEBAIHB1YmxpYzoKICAgICAgICAg
cmV0dXJuIG1fZGF0YSAmJiBtX2RhdGEtPmlzRGVsZXRlZFZhbHVlOwogICAgIH0KIAotI2lmICFI
QVZFKFFSQVdGT05UKQotICAgIFFGb250IGZvbnQoKSBjb25zdAotICAgIHsKLSAgICAgICAgUV9B
U1NFUlQoIWlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkpOwotICAgICAgICBpZiAoIW1fZGF0YSkK
LSAgICAgICAgICAgIHJldHVybiBRRm9udCgpOwotICAgICAgICByZXR1cm4gbV9kYXRhLT5mb250
OwotICAgIH0KLSNlbHNlCiAgICAgUVJhd0ZvbnQgcmF3Rm9udCgpIGNvbnN0CiAgICAgewogICAg
ICAgICBRX0FTU0VSVCghaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSk7CkBAIC0xNDIsNyArMTA2
LDcgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIFFSYXdGb250KCk7CiAgICAgICAgIHJl
dHVybiBtX2RhdGEtPnJhd0ZvbnQ7CiAgICAgfQotI2VuZGlmCisKICAgICBmbG9hdCBzaXplKCkg
Y29uc3QKICAgICB7CiAgICAgICAgIFFfQVNTRVJUKCFpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ZvbnRQ
bGF0Zm9ybURhdGFRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9G
b250UGxhdGZvcm1EYXRhUXQuY3BwCmluZGV4IDQ0YzlmZGZjYWQzNWNiZGM2ZWE0NTExNDYxMTcy
NzRhNWU5NmVmMGIuLmMxYTE1NzQyMjE2NTY5ZTc1YzAzZTJkMzE1MmZjNWY2YWY1NDkxNTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ZvbnRQbGF0Zm9y
bURhdGFRdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvRm9u
dFBsYXRmb3JtRGF0YVF0LmNwcApAQCAtNjMsMTEgKzYzLDcgQEAgRm9udFBsYXRmb3JtRGF0YTo6
Rm9udFBsYXRmb3JtRGF0YShmbG9hdCBzaXplLCBib29sIGJvbGQsIGJvb2wgb2JsaXF1ZSkKIEZv
bnRQbGF0Zm9ybURhdGE6OkZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJiBk
ZXNjcmlwdGlvbiwgY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHlOYW1lLCBpbnQgd29yZFNwYWNp
bmcsIGludCBsZXR0ZXJTcGFjaW5nKQogICAgIDogbV9kYXRhKGFkb3B0UmVmKG5ldyBGb250UGxh
dGZvcm1EYXRhUHJpdmF0ZSgpKSkKIHsKLSNpZiAhSEFWRShRUkFXRk9OVCkKLSAgICBRRm9udCYg
Zm9udCA9IG1fZGF0YS0+Zm9udDsKLSNlbHNlCiAgICAgUUZvbnQgZm9udDsKLSNlbmRpZgogICAg
IGludCByZXF1ZXN0ZWRTaXplID0gZGVzY3JpcHRpb24uY29tcHV0ZWRQaXhlbFNpemUoKTsKICAg
ICBmb250LnNldEZhbWlseShmYW1pbHlOYW1lKTsKICAgICBmb250LnNldFBpeGVsU2l6ZShyZXF1
ZXN0ZWRTaXplKTsKQEAgLTc4LDIwICs3NCwxMyBAQCBGb250UGxhdGZvcm1EYXRhOjpGb250UGxh
dGZvcm1EYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24sIGNvbnN0IEF0bwog
ICAgIGZvbnQuc2V0U3R5bGVTdHJhdGVneShRRm9udDo6Rm9yY2VJbnRlZ2VyTWV0cmljcyk7CiAK
ICAgICBtX2RhdGEtPmJvbGQgPSBmb250LmJvbGQoKTsKLSNpZiAhSEFWRShRUkFXRk9OVCkKLSAg
ICBjb25zdCBib29sIHNtYWxsQ2FwcyA9IGRlc2NyaXB0aW9uLnNtYWxsQ2FwcygpOwotICAgIGZv
bnQuc2V0Q2FwaXRhbGl6YXRpb24oc21hbGxDYXBzID8gUUZvbnQ6OlNtYWxsQ2FwcyA6IFFGb250
OjpNaXhlZENhc2UpOwogICAgIC8vIFdlYktpdCBhbGxvd3MgZm9udCBzaXplIHplcm8gYnV0IFFG
b250IGRvZXMgbm90LiBXZSB3aWxsIHJldHVybgogICAgIC8vIG1fZGF0YS0+c2l6ZSBpZiBhIGZv
bnQgc2l6ZSBvZiB6ZXJvIGlzIHJlcXVlc3RlZCBhbmQgcGl4ZWxTaXplKCkKICAgICAvLyBvdGhl
cndpc2UuCiAgICAgbV9kYXRhLT5zaXplID0gKCFyZXF1ZXN0ZWRTaXplKSA/IHJlcXVlc3RlZFNp
emUgOiBmb250LnBpeGVsU2l6ZSgpOwotI2Vsc2UKICAgICBtX2RhdGEtPnJhd0ZvbnQgPSBRUmF3
Rm9udDo6ZnJvbUZvbnQoZm9udCwgUUZvbnREYXRhYmFzZTo6QW55KTsKLSAgICBtX2RhdGEtPnNp
emUgPSByZXF1ZXN0ZWRTaXplOwotI2VuZGlmCiB9CiAKLSNpZiBIQVZFKFFSQVdGT05UKQogRm9u
dFBsYXRmb3JtRGF0YTo6Rm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250UGxhdGZvcm1EYXRhJiBv
dGhlciwgZmxvYXQgc2l6ZSkKICAgICA6IG1fZGF0YShhZG9wdFJlZihuZXcgRm9udFBsYXRmb3Jt
RGF0YVByaXZhdGUoKSkpCiB7CkBAIC0xMDEsNyArOTAsNiBAQCBGb250UGxhdGZvcm1EYXRhOjpG
b250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIG90aGVyLCBmbG9hdCBzaXpl
KQogICAgIG1fZGF0YS0+cmF3Rm9udC5zZXRQaXhlbFNpemUoc2l6ZSk7CiAgICAgbV9kYXRhLT5z
aXplID0gbV9kYXRhLT5yYXdGb250LnBpeGVsU2l6ZSgpOwogfQotI2VuZGlmIC8vIEhBVkUoUVJB
V0ZPTlQpCiAKIGJvb2wgRm9udFBsYXRmb3JtRGF0YTo6b3BlcmF0b3I9PShjb25zdCBGb250UGxh
dGZvcm1EYXRhJiBvdGhlcikgY29uc3QKIHsKQEAgLTExNCwxMSArMTAyLDcgQEAgYm9vbCBGb250
UGxhdGZvcm1EYXRhOjpvcGVyYXRvcj09KGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIG90aGVyKSBj
b25zdAogICAgIGNvbnN0IGJvb2wgZXF1YWxzID0gKG1fZGF0YS0+c2l6ZSA9PSBvdGhlci5tX2Rh
dGEtPnNpemUKICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBtX2RhdGEtPmJvbGQgPT0gb3Ro
ZXIubV9kYXRhLT5ib2xkCiAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgbV9kYXRhLT5vYmxp
cXVlID09IG90aGVyLm1fZGF0YS0+b2JsaXF1ZQotI2lmICFIQVZFKFFSQVdGT05UKQotICAgICAg
ICAgICAgICAgICAgICAgICAgICYmIG1fZGF0YS0+Zm9udCA9PSBvdGhlci5tX2RhdGEtPmZvbnQp
OwotI2Vsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBtX2RhdGEtPnJhd0ZvbnQgPT0g
b3RoZXIubV9kYXRhLT5yYXdGb250KTsKLSNlbmRpZgogICAgIHJldHVybiBlcXVhbHM7CiB9CiAK
QEAgLTEyOCwxNSArMTEyLDkgQEAgdW5zaWduZWQgRm9udFBsYXRmb3JtRGF0YTo6aGFzaCgpIGNv
bnN0CiAgICAgICAgIHJldHVybiAwOwogICAgIGlmIChtX2RhdGEtPmlzRGVsZXRlZFZhbHVlKQog
ICAgICAgICByZXR1cm4gMTsKLSNpZiAhSEFWRShRUkFXRk9OVCkKLSAgICByZXR1cm4gKHFIYXNo
KG1fZGF0YS0+Zm9udC50b1N0cmluZygpKSBeIHFIYXNoKG1fZGF0YS0+Ym9sZCkKLSAgICAgICAg
ICAgIF4gcUhhc2gobV9kYXRhLT5vYmxpcXVlKSkKLSAgICAgICAgICAgIF4gcUhhc2goKnJlaW50
ZXJwcmV0X2Nhc3Q8cXVpbnQzMio+KCZtX2RhdGEtPnNpemUpKTsKLSNlbHNlCiAgICAgcmV0dXJu
IHFIYXNoKG1fZGF0YS0+cmF3Rm9udC5mYW1pbHlOYW1lKCkpIF4gcUhhc2gobV9kYXRhLT5yYXdG
b250LnN0eWxlKCkpCiAgICAgICAgICAgICBeIHFIYXNoKG1fZGF0YS0+cmF3Rm9udC53ZWlnaHQo
KSkKICAgICAgICAgICAgIF4gcUhhc2goKnJlaW50ZXJwcmV0X2Nhc3Q8cXVpbnQzMio+KCZtX2Rh
dGEtPnNpemUpKTsKLSNlbmRpZgogfQogCiAjaWZuZGVmIE5ERUJVRwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvRm9udFF0NC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9Gb250UXQ0LmNwcApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMjMyYjhmZmI0NzViM2MwNzg4NGI1ZmMyMDk4ZDQyOTI2YzdlNGQ5ZS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9Gb250UXQ0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQz
MiArMCwwIEBACi0vKgotICAgIENvcHlyaWdodCAoQykgMjAwOCBOb2tpYSBDb3Jwb3JhdGlvbiBh
bmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTAg
SG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDkgRGlyayBT
Y2h1bHplIDxrcml0QHdlYmtpdC5vcmc+Ci0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gICAgbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAgICBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAg
ICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICAgIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gICAgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLSAgICBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlCi0gICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBD
T1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICAgIEJvc3Rv
biwgTUEgMDIxMTAtMTMwMSwgVVNBLgotKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIkZvbnQuaCIKLQotI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgotI2luY2x1ZGUgIkZv
bnREZXNjcmlwdGlvbi5oIgotI2luY2x1ZGUgIkZvbnRGYWxsYmFja0xpc3QuaCIKLSNpbmNsdWRl
ICJGb250U2VsZWN0b3IuaCIKLSNpbmNsdWRlICJHbHlwaEJ1ZmZlci5oIgotI2luY2x1ZGUgIkdy
YWRpZW50LmgiCi0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCi0jaW5jbHVkZSAiTm90SW1w
bGVtZW50ZWQuaCIKLSNpbmNsdWRlICJQYXR0ZXJuLmgiCi0jaW5jbHVkZSAiU2hhZG93Qmx1ci5o
IgotI2luY2x1ZGUgIlRleHRSdW4uaCIKLQotI2luY2x1ZGUgPFFCcnVzaD4KLSNpbmNsdWRlIDxR
Rm9udEluZm8+Ci0jaW5jbHVkZSA8UUZvbnRNZXRyaWNzPgotI2luY2x1ZGUgPFFQYWludGVyPgot
I2luY2x1ZGUgPFFQYWludGVyUGF0aD4KLSNpbmNsdWRlIDxRUGVuPgotI2luY2x1ZGUgPFFUZXh0
TGF5b3V0PgotI2luY2x1ZGUgPGxpbWl0cy5oPgotI2luY2x1ZGUgPHFhbGdvcml0aG1zLmg+Ci0j
aW5jbHVkZSA8cWRlYnVnLmg+Ci0KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdGF0aWMgY29u
c3QgUVN0cmluZyBmcm9tUmF3RGF0YVdpdGhvdXRSZWYoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGlu
dCBzdGFydCA9IDAsIGludCBsZW4gPSAtMSkKLXsKLSAgICBpZiAobGVuIDwgMCkKLSAgICAgICAg
bGVuID0gc3RyaW5nLmxlbmd0aCgpIC0gc3RhcnQ7Ci0gICAgUV9BU1NFUlQoc3RhcnQgKyBsZW4g
PD0gc3RyaW5nLmxlbmd0aCgpKTsKLQotICAgIC8vIFdlIGRvbid0IGRldGFjaC4gVGhpcyBhc3N1
bWVzIHRoZSBXZWJDb3JlIHN0cmluZyBkYXRhIHdpbGwgc3RheSB2YWxpZCBmb3IgdGhlCi0gICAg
Ly8gbGlmZXRpbWUgb2YgdGhlIFFTdHJpbmcgd2UgcGFzcyBiYWNrLCBzaW5jZSB3ZSBkb24ndCBy
ZWYgdGhlIFdlYkNvcmUgc3RyaW5nLgotICAgIHJldHVybiBRU3RyaW5nOjpmcm9tUmF3RGF0YShy
ZWludGVycHJldF9jYXN0PGNvbnN0IFFDaGFyKj4oc3RyaW5nLmNoYXJhY3RlcnMoKSArIHN0YXJ0
KSwgbGVuKTsKLX0KLQotc3RhdGljIFFUZXh0TGluZSBzZXR1cExheW91dChRVGV4dExheW91dCog
bGF5b3V0LCBjb25zdCBUZXh0UnVuJiBzdHlsZSkKLXsKLSAgICBpbnQgZmxhZ3MgPSBzdHlsZS5y
dGwoKSA/IFF0OjpUZXh0Rm9yY2VSaWdodFRvTGVmdCA6IFF0OjpUZXh0Rm9yY2VMZWZ0VG9SaWdo
dDsKLSAgICBpZiAoc3R5bGUuZXhwYW5zaW9uKCkpCi0gICAgICAgIGZsYWdzIHw9IFF0OjpUZXh0
SnVzdGlmaWNhdGlvbkZvcmNlZDsKLSAgICBsYXlvdXQtPnNldEZsYWdzKGZsYWdzKTsKLSAgICBs
YXlvdXQtPmJlZ2luTGF5b3V0KCk7Ci0gICAgUVRleHRMaW5lIGxpbmUgPSBsYXlvdXQtPmNyZWF0
ZUxpbmUoKTsKLSAgICBsaW5lLnNldExpbmVXaWR0aChJTlRfTUFYIC8gMjU2KTsKLSAgICBpZiAo
c3R5bGUuZXhwYW5zaW9uKCkpCi0gICAgICAgIGxpbmUuc2V0TGluZVdpZHRoKGxpbmUubmF0dXJh
bFRleHRXaWR0aCgpICsgc3R5bGUuZXhwYW5zaW9uKCkpOwotICAgIGxheW91dC0+ZW5kTGF5b3V0
KCk7Ci0gICAgcmV0dXJuIGxpbmU7Ci19Ci0KLXN0YXRpYyBRUGVuIGZpbGxQZW5Gb3JDb250ZXh0
KEdyYXBoaWNzQ29udGV4dCogY3R4KQotewotICAgIGlmIChjdHgtPmZpbGxHcmFkaWVudCgpKSB7
Ci0gICAgICAgIFFCcnVzaCBicnVzaCgqY3R4LT5maWxsR3JhZGllbnQoKS0+cGxhdGZvcm1HcmFk
aWVudCgpKTsKLSAgICAgICAgYnJ1c2guc2V0VHJhbnNmb3JtKGN0eC0+ZmlsbEdyYWRpZW50KCkt
PmdyYWRpZW50U3BhY2VUcmFuc2Zvcm0oKSk7Ci0gICAgICAgIHJldHVybiBRUGVuKGJydXNoLCAw
KTsKLSAgICB9Ci0KLSAgICBpZiAoY3R4LT5maWxsUGF0dGVybigpKSB7Ci0gICAgICAgIHJldHVy
biBRUGVuKFFCcnVzaChjdHgtPmZpbGxQYXR0ZXJuKCktPmNyZWF0ZVBsYXRmb3JtUGF0dGVybigp
KSwgMCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIFFQZW4oUUNvbG9yKGN0eC0+ZmlsbENvbG9yKCkp
KTsKLX0KLQotc3RhdGljIFFQZW4gc3Ryb2tlUGVuRm9yQ29udGV4dChHcmFwaGljc0NvbnRleHQq
IGN0eCkKLXsKLSAgICBpZiAoY3R4LT5zdHJva2VHcmFkaWVudCgpKSB7Ci0gICAgICAgIFFCcnVz
aCBicnVzaCgqY3R4LT5zdHJva2VHcmFkaWVudCgpLT5wbGF0Zm9ybUdyYWRpZW50KCkpOwotICAg
ICAgICBicnVzaC5zZXRUcmFuc2Zvcm0oY3R4LT5zdHJva2VHcmFkaWVudCgpLT5ncmFkaWVudFNw
YWNlVHJhbnNmb3JtKCkpOwotICAgICAgICByZXR1cm4gUVBlbihicnVzaCwgY3R4LT5zdHJva2VU
aGlja25lc3MoKSk7Ci0gICAgfQotCi0gICAgaWYgKGN0eC0+c3Ryb2tlUGF0dGVybigpKSB7Ci0g
ICAgICAgIFFCcnVzaCBicnVzaChjdHgtPnN0cm9rZVBhdHRlcm4oKS0+Y3JlYXRlUGxhdGZvcm1Q
YXR0ZXJuKCkpOwotICAgICAgICByZXR1cm4gUVBlbihicnVzaCwgY3R4LT5zdHJva2VUaGlja25l
c3MoKSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIFFQZW4oUUNvbG9yKGN0eC0+c3Ryb2tlQ29sb3Io
KSksIGN0eC0+c3Ryb2tlVGhpY2tuZXNzKCkpOwotfQotCi1zdGF0aWMgdm9pZCBkcmF3VGV4dENv
bW1vbihHcmFwaGljc0NvbnRleHQqIGN0eCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBGbG9h
dFBvaW50JiBwb2ludCwgaW50IGZyb20sIGludCB0bywgY29uc3QgUUZvbnQmIGZvbnQsIGJvb2wg
aXNDb21wbGV4VGV4dCkKLXsKLSAgICBpZiAodG8gPCAwKQotICAgICAgICB0byA9IHJ1bi5sZW5n
dGgoKTsKLQotICAgIFFQYWludGVyKiBwID0gY3R4LT5wbGF0Zm9ybUNvbnRleHQoKTsKLQotICAg
IFFQZW4gdGV4dEZpbGxQZW47Ci0gICAgaWYgKGN0eC0+dGV4dERyYXdpbmdNb2RlKCkgJiBUZXh0
TW9kZUZpbGwpCi0gICAgICAgIHRleHRGaWxsUGVuID0gZmlsbFBlbkZvckNvbnRleHQoY3R4KTsK
LQotICAgIFFQZW4gdGV4dFN0cm9rZVBlbjsKLSAgICBpZiAoY3R4LT50ZXh0RHJhd2luZ01vZGUo
KSAmIFRleHRNb2RlU3Ryb2tlKQotICAgICAgICB0ZXh0U3Ryb2tlUGVuID0gc3Ryb2tlUGVuRm9y
Q29udGV4dChjdHgpOwotCi0gICAgU3RyaW5nIHNhbml0aXplZCA9IEZvbnQ6Om5vcm1hbGl6ZVNw
YWNlcyhydW4uY2hhcmFjdGVycygpLCBydW4ubGVuZ3RoKCkpOwotICAgIFFTdHJpbmcgc3RyaW5n
ID0gZnJvbVJhd0RhdGFXaXRob3V0UmVmKHNhbml0aXplZCk7Ci0gICAgUVBvaW50RiBwdChwb2lu
dC54KCksIHBvaW50LnkoKSk7Ci0KLSAgICBpZiAoZnJvbSA+IDAgfHwgdG8gPCBydW4ubGVuZ3Ro
KCkpIHsKLSAgICAgICAgaWYgKGlzQ29tcGxleFRleHQpIHsKLSAgICAgICAgICAgIFFUZXh0TGF5
b3V0IGxheW91dChzdHJpbmcsIGZvbnQpOwotICAgICAgICAgICAgUVRleHRMaW5lIGxpbmUgPSBz
ZXR1cExheW91dCgmbGF5b3V0LCBydW4pOwotICAgICAgICAgICAgZmxvYXQgeDEgPSBsaW5lLmN1
cnNvclRvWChmcm9tKTsKLSAgICAgICAgICAgIGZsb2F0IHgyID0gbGluZS5jdXJzb3JUb1godG8p
OwotICAgICAgICAgICAgaWYgKHgyIDwgeDEpCi0gICAgICAgICAgICAgICAgcVN3YXAoeDEsIHgy
KTsKLQotICAgICAgICAgICAgUUZvbnRNZXRyaWNzIGZtKGZvbnQpOwotICAgICAgICAgICAgaW50
IGFzY2VudCA9IGZtLmFzY2VudCgpOwotICAgICAgICAgICAgUVJlY3RGIGJvdW5kaW5nUmVjdChw
b2ludC54KCkgKyB4MSwgcG9pbnQueSgpIC0gYXNjZW50LCB4MiAtIHgxLCBmbS5oZWlnaHQoKSk7
Ci0gICAgICAgICAgICBRUmVjdEYgY2xpcCA9IGJvdW5kaW5nUmVjdDsKLQotICAgICAgICAgICAg
U2hhZG93Qmx1ciogY3R4U2hhZG93ID0gY3R4LT5zaGFkb3dCbHVyKCk7Ci0gICAgICAgICAgICBp
ZiAoY3R4U2hhZG93LT50eXBlKCkgIT0gU2hhZG93Qmx1cjo6Tm9TaGFkb3cpIHsKLSAgICAgICAg
ICAgICAgICBjb25zdCBRUG9pbnRGIHNoYWRvd09mZnNldChjdHgtPnN0YXRlKCkuc2hhZG93T2Zm
c2V0LndpZHRoKCksIGN0eC0+c3RhdGUoKS5zaGFkb3dPZmZzZXQuaGVpZ2h0KCkpOwotICAgICAg
ICAgICAgICAgIHFyZWFsIGR4MSA9IDAsIGR4MiA9IDAsIGR5MSA9IDAsIGR5MiA9IDA7Ci0gICAg
ICAgICAgICAgICAgaWYgKHNoYWRvd09mZnNldC54KCkgPiAwKQotICAgICAgICAgICAgICAgICAg
ICBkeDIgPSBzaGFkb3dPZmZzZXQueCgpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgICAgICAgICAgZHgxID0gLXNoYWRvd09mZnNldC54KCk7Ci0gICAgICAgICAgICAgICAgaWYg
KHNoYWRvd09mZnNldC55KCkgPiAwKQotICAgICAgICAgICAgICAgICAgICBkeTIgPSBzaGFkb3dP
ZmZzZXQueSgpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgZHkx
ID0gLXNoYWRvd09mZnNldC55KCk7Ci0gICAgICAgICAgICAgICAgLy8gZXhwYW5kIHRoZSBjbGlw
IHJlY3QgdG8gaW5jbHVkZSB0aGUgdGV4dCBzaGFkb3cgYXMgd2VsbAotICAgICAgICAgICAgICAg
IGNvbnN0IGZsb2F0IGJsdXJEaXN0YW5jZSA9IGN0eC0+c3RhdGUoKS5zaGFkb3dCbHVyOwotICAg
ICAgICAgICAgICAgIGNsaXAuYWRqdXN0KGR4MSwgZHgyLCBkeTEsIGR5Mik7Ci0gICAgICAgICAg
ICAgICAgY2xpcC5hZGp1c3QoLWJsdXJEaXN0YW5jZSwgLWJsdXJEaXN0YW5jZSwgYmx1ckRpc3Rh
bmNlLCBibHVyRGlzdGFuY2UpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcC0+c2F2ZSgp
OwotICAgICAgICAgICAgcC0+c2V0Q2xpcFJlY3QoY2xpcC50b1JlY3QoKSwgUXQ6OkludGVyc2Vj
dENsaXApOwotICAgICAgICAgICAgcHQuc2V0WShwdC55KCkgLSBhc2NlbnQpOwotCi0gICAgICAg
ICAgICBpZiAoY3R4U2hhZG93LT50eXBlKCkgIT0gU2hhZG93Qmx1cjo6Tm9TaGFkb3cpIHsKLSAg
ICAgICAgICAgICAgICBTaGFkb3dCbHVyKiBjdHhTaGFkb3cgPSBjdHgtPnNoYWRvd0JsdXIoKTsK
LSAgICAgICAgICAgICAgICBpZiAoY3R4U2hhZG93LT50eXBlKCkgIT0gU2hhZG93Qmx1cjo6Qmx1
clNoYWRvdwotICAgICAgICAgICAgICAgICAgICAmJiAoIWN0eFNoYWRvdy0+c2hhZG93c0lnbm9y
ZVRyYW5zZm9ybXMoKSB8fCBjdHgtPmdldENUTSgpLmlzSWRlbnRpdHkoKSkpIHsKLSAgICAgICAg
ICAgICAgICAgICAgcC0+c2F2ZSgpOwotICAgICAgICAgICAgICAgICAgICBwLT5zZXRQZW4oY3R4
LT5zdGF0ZSgpLnNoYWRvd0NvbG9yKTsKLSAgICAgICAgICAgICAgICAgICAgcC0+dHJhbnNsYXRl
KFFQb2ludEYoY3R4LT5zdGF0ZSgpLnNoYWRvd09mZnNldC53aWR0aCgpLCBjdHgtPnN0YXRlKCku
c2hhZG93T2Zmc2V0LmhlaWdodCgpKSk7Ci0gICAgICAgICAgICAgICAgICAgIGxpbmUuZHJhdyhw
LCBwdCk7Ci0gICAgICAgICAgICAgICAgICAgIHAtPnJlc3RvcmUoKTsKLSAgICAgICAgICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBHcmFwaGljc0NvbnRleHQqIHNoYWRvd0Nv
bnRleHQgPSBjdHhTaGFkb3ctPmJlZ2luU2hhZG93TGF5ZXIoY3R4LCBib3VuZGluZ1JlY3QpOwot
ICAgICAgICAgICAgICAgICAgICBpZiAoc2hhZG93Q29udGV4dCkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgUVBhaW50ZXIqIHNoYWRvd1BhaW50ZXIgPSBzaGFkb3dDb250ZXh0LT5wbGF0Zm9y
bUNvbnRleHQoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNpbmNlIGl0IHdpbGwgYmUg
Ymx1cnJlZCBhbnl3YXksIHdlIGRvbid0IGNhcmUgYWJvdXQgcmVuZGVyIGhpbnRzLgotICAgICAg
ICAgICAgICAgICAgICAgICAgc2hhZG93UGFpbnRlci0+c2V0Rm9udChwLT5mb250KCkpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgc2hhZG93UGFpbnRlci0+c2V0UGVuKGN0eC0+c3RhdGUoKS5z
aGFkb3dDb2xvcik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBsaW5lLmRyYXcoc2hhZG93UGFp
bnRlciwgcHQpOwotICAgICAgICAgICAgICAgICAgICAgICAgY3R4U2hhZG93LT5lbmRTaGFkb3dM
YXllcihjdHgpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgcC0+c2V0UGVuKHRleHRGaWxsUGVuKTsKLSAgICAgICAg
ICAgIGxpbmUuZHJhdyhwLCBwdCk7Ci0gICAgICAgICAgICBwLT5yZXN0b3JlKCk7Ci0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgaW50IHNraXBXaWR0aCA9IFFGb250TWV0
cmljcyhmb250KS53aWR0aChzdHJpbmcsIGZyb20sIFF0OjpUZXh0QnlwYXNzU2hhcGluZyk7Ci0g
ICAgICAgIHB0LnNldFgocHQueCgpICsgc2tpcFdpZHRoKTsKLSAgICAgICAgc3RyaW5nID0gZnJv
bVJhd0RhdGFXaXRob3V0UmVmKHNhbml0aXplZCwgZnJvbSwgdG8gLSBmcm9tKTsKLSAgICB9Ci0K
LSAgICBwLT5zZXRGb250KGZvbnQpOwotCi0gICAgaW50IGZsYWdzID0gcnVuLnJ0bCgpID8gUXQ6
OlRleHRGb3JjZVJpZ2h0VG9MZWZ0IDogUXQ6OlRleHRGb3JjZUxlZnRUb1JpZ2h0OwotICAgIGlm
ICghaXNDb21wbGV4VGV4dCAmJiAhKGN0eC0+dGV4dERyYXdpbmdNb2RlKCkgJiBUZXh0TW9kZVN0
cm9rZSkpCi0gICAgICAgIGZsYWdzIHw9IFF0OjpUZXh0QnlwYXNzU2hhcGluZzsKLQotICAgIFFQ
YWludGVyUGF0aCB0ZXh0U3Ryb2tlUGF0aDsKLSAgICBpZiAoY3R4LT50ZXh0RHJhd2luZ01vZGUo
KSAmIFRleHRNb2RlU3Ryb2tlKQotICAgICAgICB0ZXh0U3Ryb2tlUGF0aC5hZGRUZXh0KHB0LCBm
b250LCBzdHJpbmcpOwotCi0gICAgU2hhZG93Qmx1ciogY3R4U2hhZG93ID0gY3R4LT5zaGFkb3dC
bHVyKCk7Ci0gICAgaWYgKGN0eC0+aGFzU2hhZG93KCkgJiYgY3R4U2hhZG93LT50eXBlKCkgIT0g
U2hhZG93Qmx1cjo6Tm9TaGFkb3cpIHsKLSAgICAgICAgaWYgKGN0eC0+dGV4dERyYXdpbmdNb2Rl
KCkgJiBUZXh0TW9kZUZpbGwpIHsKLSAgICAgICAgICAgIGlmIChjdHhTaGFkb3ctPnR5cGUoKSAh
PSBTaGFkb3dCbHVyOjpCbHVyU2hhZG93KSB7Ci0gICAgICAgICAgICAgICAgcC0+c2F2ZSgpOwot
ICAgICAgICAgICAgICAgIHAtPnNldFBlbihjdHgtPnN0YXRlKCkuc2hhZG93Q29sb3IpOwotICAg
ICAgICAgICAgICAgIHAtPnRyYW5zbGF0ZShRUG9pbnRGKGN0eC0+c3RhdGUoKS5zaGFkb3dPZmZz
ZXQud2lkdGgoKSwgY3R4LT5zdGF0ZSgpLnNoYWRvd09mZnNldC5oZWlnaHQoKSkpOwotICAgICAg
ICAgICAgICAgIHAtPmRyYXdUZXh0KHB0LCBzdHJpbmcsIGZsYWdzLCBydW4uZXhwYW5zaW9uKCkp
OwotICAgICAgICAgICAgICAgIHAtPnJlc3RvcmUoKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICAgICAgUUZvbnRNZXRyaWNzIGZtKGZvbnQpOwotICAgICAgICAgICAgICAgIFFS
ZWN0RiBib3VuZGluZ1JlY3QocHQueCgpLCBwb2ludC55KCkgLSBmbS5hc2NlbnQoKSwgZm0ud2lk
dGgoc3RyaW5nLCAtMSwgZmxhZ3MpLCBmbS5oZWlnaHQoKSk7Ci0gICAgICAgICAgICAgICAgR3Jh
cGhpY3NDb250ZXh0KiBzaGFkb3dDb250ZXh0ID0gY3R4U2hhZG93LT5iZWdpblNoYWRvd0xheWVy
KGN0eCwgYm91bmRpbmdSZWN0KTsKLSAgICAgICAgICAgICAgICBpZiAoc2hhZG93Q29udGV4dCkg
ewotICAgICAgICAgICAgICAgICAgICBRUGFpbnRlciogc2hhZG93UGFpbnRlciA9IHNoYWRvd0Nv
bnRleHQtPnBsYXRmb3JtQ29udGV4dCgpOwotICAgICAgICAgICAgICAgICAgICAvLyBTaW5jZSBp
dCB3aWxsIGJlIGJsdXJyZWQgYW55d2F5LCB3ZSBkb24ndCBjYXJlIGFib3V0IHJlbmRlciBoaW50
cy4KLSAgICAgICAgICAgICAgICAgICAgc2hhZG93UGFpbnRlci0+c2V0Rm9udChwLT5mb250KCkp
OwotICAgICAgICAgICAgICAgICAgICBzaGFkb3dQYWludGVyLT5zZXRQZW4oY3R4LT5zdGF0ZSgp
LnNoYWRvd0NvbG9yKTsKLSAgICAgICAgICAgICAgICAgICAgc2hhZG93UGFpbnRlci0+ZHJhd1Rl
eHQocHQsIHN0cmluZywgZmxhZ3MsIHJ1bi5leHBhbnNpb24oKSk7Ci0gICAgICAgICAgICAgICAg
ICAgIGN0eFNoYWRvdy0+ZW5kU2hhZG93TGF5ZXIoY3R4KTsKLSAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSBpZiAoY3R4LT50ZXh0RHJhd2luZ01vZGUoKSAm
IFRleHRNb2RlU3Ryb2tlKSB7Ci0gICAgICAgICAgICBpZiAoY3R4U2hhZG93LT50eXBlKCkgIT0g
U2hhZG93Qmx1cjo6Qmx1clNoYWRvdykgewotICAgICAgICAgICAgICAgIGNvbnN0IFFQb2ludEYg
c2hhZG93T2Zmc2V0KGN0eC0+c3RhdGUoKS5zaGFkb3dPZmZzZXQud2lkdGgoKSwgY3R4LT5zdGF0
ZSgpLnNoYWRvd09mZnNldC5oZWlnaHQoKSk7Ci0gICAgICAgICAgICAgICAgcC0+dHJhbnNsYXRl
KHNoYWRvd09mZnNldCk7Ci0gICAgICAgICAgICAgICAgcC0+c3Ryb2tlUGF0aCh0ZXh0U3Ryb2tl
UGF0aCwgUVBlbihjdHgtPnN0YXRlKCkuc2hhZG93Q29sb3IpKTsKLSAgICAgICAgICAgICAgICBw
LT50cmFuc2xhdGUoLXNoYWRvd09mZnNldCk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgICAgIFFGb250TWV0cmljcyBmbShmb250KTsKLSAgICAgICAgICAgICAgICBRUmVjdEYg
Ym91bmRpbmdSZWN0KHB0LngoKSwgcG9pbnQueSgpIC0gZm0uYXNjZW50KCksIGZtLndpZHRoKHN0
cmluZywgLTEsIGZsYWdzKSwgZm0uaGVpZ2h0KCkpOwotICAgICAgICAgICAgICAgIEdyYXBoaWNz
Q29udGV4dCogc2hhZG93Q29udGV4dCA9IGN0eFNoYWRvdy0+YmVnaW5TaGFkb3dMYXllcihjdHgs
IGJvdW5kaW5nUmVjdCk7Ci0gICAgICAgICAgICAgICAgaWYgKHNoYWRvd0NvbnRleHQpIHsKLSAg
ICAgICAgICAgICAgICAgICAgUVBhaW50ZXIqIHNoYWRvd1BhaW50ZXIgPSBzaGFkb3dDb250ZXh0
LT5wbGF0Zm9ybUNvbnRleHQoKTsKLSAgICAgICAgICAgICAgICAgICAgLy8gU2luY2UgaXQgd2ls
bCBiZSBibHVycmVkIGFueXdheSwgd2UgZG9uJ3QgY2FyZSBhYm91dCByZW5kZXIgaGludHMuCi0g
ICAgICAgICAgICAgICAgICAgIHNoYWRvd1BhaW50ZXItPnNldEZvbnQocC0+Zm9udCgpKTsKLSAg
ICAgICAgICAgICAgICAgICAgc2hhZG93UGFpbnRlci0+c3Ryb2tlUGF0aCh0ZXh0U3Ryb2tlUGF0
aCwgUVBlbihjdHgtPnN0YXRlKCkuc2hhZG93Q29sb3IpKTsKLSAgICAgICAgICAgICAgICAgICAg
Y3R4U2hhZG93LT5lbmRTaGFkb3dMYXllcihjdHgpOwotICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmIChjdHgtPnRleHREcmF3aW5nTW9k
ZSgpICYgVGV4dE1vZGVTdHJva2UpCi0gICAgICAgIHAtPnN0cm9rZVBhdGgodGV4dFN0cm9rZVBh
dGgsIHRleHRTdHJva2VQZW4pOwotCi0gICAgaWYgKGN0eC0+dGV4dERyYXdpbmdNb2RlKCkgJiBU
ZXh0TW9kZUZpbGwpIHsKLSAgICAgICAgUVBlbiBwcmV2aW91c1BlbiA9IHAtPnBlbigpOwotICAg
ICAgICBwLT5zZXRQZW4odGV4dEZpbGxQZW4pOwotICAgICAgICBwLT5kcmF3VGV4dChwdCwgc3Ry
aW5nLCBmbGFncywgcnVuLmV4cGFuc2lvbigpKTsKLSAgICAgICAgcC0+c2V0UGVuKHByZXZpb3Vz
UGVuKTsKLSAgICB9Ci19Ci0KLXZvaWQgRm9udDo6ZHJhd0NvbXBsZXhUZXh0KEdyYXBoaWNzQ29u
dGV4dCogY3R4LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBp
bnQgZnJvbSwgaW50IHRvKSBjb25zdAotewotICAgIGRyYXdUZXh0Q29tbW9uKGN0eCwgcnVuLCBw
b2ludCwgZnJvbSwgdG8sIGZvbnQoKSwgLyogaXNDb21wbGV4VGV4dCA9ICovdHJ1ZSk7Ci19Ci0K
LWZsb2F0IEZvbnQ6OmZsb2F0V2lkdGhGb3JDb21wbGV4VGV4dChjb25zdCBUZXh0UnVuJiBydW4s
IEhhc2hTZXQ8Y29uc3QgU2ltcGxlRm9udERhdGEqPiosIEdseXBoT3ZlcmZsb3cqKSBjb25zdAot
ewotICAgIGlmICghcHJpbWFyeUZvbnQoKS0+cGxhdGZvcm1EYXRhKCkuc2l6ZSgpKQotICAgICAg
ICByZXR1cm4gMDsKLQotICAgIGlmICghcnVuLmxlbmd0aCgpKQotICAgICAgICByZXR1cm4gMDsK
LQotICAgIGlmIChydW4ubGVuZ3RoKCkgPT0gMSAmJiB0cmVhdEFzU3BhY2UocnVuWzBdKSkKLSAg
ICAgICAgcmV0dXJuIFFGb250TWV0cmljcyhmb250KCkpLndpZHRoKHNwYWNlKSArIHJ1bi5leHBh
bnNpb24oKTsKLQotICAgIFN0cmluZyBzYW5pdGl6ZWQgPSBGb250Ojpub3JtYWxpemVTcGFjZXMo
cnVuLmNoYXJhY3RlcnMoKSwgcnVuLmxlbmd0aCgpKTsKLSAgICBRU3RyaW5nIHN0cmluZyA9IGZy
b21SYXdEYXRhV2l0aG91dFJlZihzYW5pdGl6ZWQpOwotCi0gICAgaW50IHcgPSBRRm9udE1ldHJp
Y3MoZm9udCgpKS53aWR0aChzdHJpbmcpOwotICAgIC8vIFdlYktpdCBleHBlY3RzIHVzIHRvIGln
bm9yZSB3b3JkIHNwYWNpbmcgb24gdGhlIGZpcnN0IGNoYXJhY3RlciAoYXMgb3Bwb3NlZCB0byB3
aGF0IFF0IGRvZXMpCi0gICAgaWYgKHRyZWF0QXNTcGFjZShydW5bMF0pKQotICAgICAgICB3IC09
IG1fd29yZFNwYWNpbmc7Ci0KLSAgICByZXR1cm4gdyArIHJ1bi5leHBhbnNpb24oKTsKLX0KLQot
aW50IEZvbnQ6Om9mZnNldEZvclBvc2l0aW9uRm9yQ29tcGxleFRleHQoY29uc3QgVGV4dFJ1biYg
cnVuLCBmbG9hdCBwb3NpdGlvbiwgYm9vbCkgY29uc3QKLXsKLSAgICBTdHJpbmcgc2FuaXRpemVk
ID0gRm9udDo6bm9ybWFsaXplU3BhY2VzKHJ1bi5jaGFyYWN0ZXJzKCksIHJ1bi5sZW5ndGgoKSk7
Ci0gICAgUVN0cmluZyBzdHJpbmcgPSBmcm9tUmF3RGF0YVdpdGhvdXRSZWYoc2FuaXRpemVkKTsK
LQotICAgIFFUZXh0TGF5b3V0IGxheW91dChzdHJpbmcsIGZvbnQoKSk7Ci0gICAgUVRleHRMaW5l
IGxpbmUgPSBzZXR1cExheW91dCgmbGF5b3V0LCBydW4pOwotICAgIHJldHVybiBsaW5lLnhUb0N1
cnNvcihwb3NpdGlvbik7Ci19Ci0KLUZsb2F0UmVjdCBGb250OjpzZWxlY3Rpb25SZWN0Rm9yQ29t
cGxleFRleHQoY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBGbG9hdFBvaW50JiBwdCwgaW50IGgs
IGludCBmcm9tLCBpbnQgdG8pIGNvbnN0Ci17Ci0gICAgU3RyaW5nIHNhbml0aXplZCA9IEZvbnQ6
Om5vcm1hbGl6ZVNwYWNlcyhydW4uY2hhcmFjdGVycygpLCBydW4ubGVuZ3RoKCkpOwotICAgIFFT
dHJpbmcgc3RyaW5nID0gZnJvbVJhd0RhdGFXaXRob3V0UmVmKHNhbml0aXplZCk7Ci0KLSAgICBR
VGV4dExheW91dCBsYXlvdXQoc3RyaW5nLCBmb250KCkpOwotICAgIFFUZXh0TGluZSBsaW5lID0g
c2V0dXBMYXlvdXQoJmxheW91dCwgcnVuKTsKLQotICAgIGZsb2F0IHgxID0gbGluZS5jdXJzb3JU
b1goZnJvbSk7Ci0gICAgZmxvYXQgeDIgPSBsaW5lLmN1cnNvclRvWCh0byk7Ci0gICAgaWYgKHgy
IDwgeDEpCi0gICAgICAgIHFTd2FwKHgxLCB4Mik7Ci0KLSAgICByZXR1cm4gRmxvYXRSZWN0KHB0
LngoKSArIHgxLCBwdC55KCksIHgyIC0geDEsIGgpOwotfQotCi1ib29sIEZvbnQ6OmNhblJldHVy
bkZhbGxiYWNrRm9udHNGb3JDb21wbGV4VGV4dCgpCi17Ci0gICAgcmV0dXJuIGZhbHNlOwotfQot
Ci12b2lkIEZvbnQ6OmRyYXdFbXBoYXNpc01hcmtzRm9yQ29tcGxleFRleHQoR3JhcGhpY3NDb250
ZXh0KiAvKiBjb250ZXh0ICovLCBjb25zdCBUZXh0UnVuJiAvKiBydW4gKi8sIGNvbnN0IEF0b21p
Y1N0cmluZyYgLyogbWFyayAqLywgY29uc3QgRmxvYXRQb2ludCYgLyogcG9pbnQgKi8sIGludCAv
KiBmcm9tICovLCBpbnQgLyogdG8gKi8pIGNvbnN0Ci17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsK
LX0KLQotdm9pZCBGb250OjpkcmF3U2ltcGxlVGV4dChHcmFwaGljc0NvbnRleHQqIGN0eCwgY29u
c3QgVGV4dFJ1biYgcnVuLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgaW50IGZyb20sIGludCB0
bykgY29uc3QKLXsKLSAgICBkcmF3VGV4dENvbW1vbihjdHgsIHJ1biwgcG9pbnQsIGZyb20sIHRv
LCBmb250KCksIC8qIGlzQ29tcGxleFRleHQgPSAqL2ZhbHNlKTsKLX0KLQotaW50IEZvbnQ6Om9m
ZnNldEZvclBvc2l0aW9uRm9yU2ltcGxlVGV4dChjb25zdCBUZXh0UnVuJiBydW4sIGZsb2F0IHBv
c2l0aW9uLCBib29sIGluY2x1ZGVQYXJ0aWFsR2x5cGhzKSBjb25zdAotewotICAgIFN0cmluZyBz
YW5pdGl6ZWQgPSBGb250Ojpub3JtYWxpemVTcGFjZXMocnVuLmNoYXJhY3RlcnMoKSwgcnVuLmxl
bmd0aCgpKTsKLSAgICBRU3RyaW5nIHN0cmluZyA9IGZyb21SYXdEYXRhV2l0aG91dFJlZihzYW5p
dGl6ZWQpOwotCi0gICAgUUZvbnRNZXRyaWNzIGZtKGZvbnQoKSk7Ci0gICAgZmxvYXQgZGVsdGEg
PSBwb3NpdGlvbjsKLSAgICBpbnQgY3VyUG9zID0gMDsKLSAgICBkbyB7Ci0gICAgICAgIGZsb2F0
IGNoYXJXaWR0aCA9IGZtLndpZHRoKHN0cmluZ1tjdXJQb3NdKTsKLSAgICAgICAgZGVsdGEgLT0g
Y2hhcldpZHRoOwotICAgICAgICBpZiAoaW5jbHVkZVBhcnRpYWxHbHlwaHMpIHsKLSAgICAgICAg
ICAgIGlmIChkZWx0YSArIGNoYXJXaWR0aCAvIDIgPD0gMCkKLSAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmIChkZWx0YSArIGNoYXJXaWR0aCA8
PSAwKQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfSB3aGlsZSAoKytj
dXJQb3MgPCBzdHJpbmcuc2l6ZSgpKTsKLQotICAgIHJldHVybiBjdXJQb3M7Ci19Ci0KLQotZmxv
YXQgRm9udDo6ZmxvYXRXaWR0aEZvclNpbXBsZVRleHQoY29uc3QgVGV4dFJ1biYgcnVuLCBHbHlw
aEJ1ZmZlciogZ2x5cGhCdWZmZXIsIEhhc2hTZXQ8Y29uc3QgU2ltcGxlRm9udERhdGEqPiogZmFs
bGJhY2tGb250cywgR2x5cGhPdmVyZmxvdyogZ2x5cGhPdmVyZmxvdykgY29uc3QKLXsKLSAgICBp
ZiAoIXByaW1hcnlGb250KCktPnBsYXRmb3JtRGF0YSgpLnNpemUoKSkKLSAgICAgICAgcmV0dXJu
IDA7Ci0KLSAgICBpZiAoIXJ1bi5sZW5ndGgoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBT
dHJpbmcgc2FuaXRpemVkID0gRm9udDo6bm9ybWFsaXplU3BhY2VzKHJ1bi5jaGFyYWN0ZXJzKCks
IHJ1bi5sZW5ndGgoKSk7Ci0gICAgUVN0cmluZyBzdHJpbmcgPSBmcm9tUmF3RGF0YVdpdGhvdXRS
ZWYoc2FuaXRpemVkKTsKLQotICAgIGludCB3ID0gUUZvbnRNZXRyaWNzKGZvbnQoKSkud2lkdGgo
c3RyaW5nLCAtMSwgUXQ6OlRleHRCeXBhc3NTaGFwaW5nKTsKLQotICAgIC8vIFdlYktpdCBleHBl
Y3RzIHVzIHRvIGlnbm9yZSB3b3JkIHNwYWNpbmcgb24gdGhlIGZpcnN0IGNoYXJhY3RlciAoYXMg
b3Bwb3NlZCB0byB3aGF0IFF0IGRvZXMpCi0gICAgaWYgKHRyZWF0QXNTcGFjZShydW5bMF0pKQot
ICAgICAgICB3IC09IG1fd29yZFNwYWNpbmc7Ci0KLSAgICByZXR1cm4gdyArIHJ1bi5leHBhbnNp
b24oKTsKLX0KLQotCi1GbG9hdFJlY3QgRm9udDo6c2VsZWN0aW9uUmVjdEZvclNpbXBsZVRleHQo
Y29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBGbG9hdFBvaW50JiBwdCwgaW50IGgsIGludCBmcm9t
LCBpbnQgdG8pIGNvbnN0Ci17Ci0gICAgU3RyaW5nIHNhbml0aXplZCA9IEZvbnQ6Om5vcm1hbGl6
ZVNwYWNlcyhydW4uY2hhcmFjdGVycygpLCBydW4ubGVuZ3RoKCkpOwotICAgIFFTdHJpbmcgd2hv
bGVUZXh0ID0gZnJvbVJhd0RhdGFXaXRob3V0UmVmKHNhbml0aXplZCk7Ci0gICAgUVN0cmluZyBz
ZWxlY3RlZFRleHQgPSBmcm9tUmF3RGF0YVdpdGhvdXRSZWYoc2FuaXRpemVkLCBmcm9tLCBxTWlu
KHRvIC0gZnJvbSwgd2hvbGVUZXh0Lmxlbmd0aCgpIC0gZnJvbSkpOwotCi0gICAgaW50IHN0YXJ0
WCA9IFFGb250TWV0cmljcyhmb250KCkpLndpZHRoKHdob2xlVGV4dCwgZnJvbSwgUXQ6OlRleHRC
eXBhc3NTaGFwaW5nKTsKLSAgICBpbnQgd2lkdGggPSBRRm9udE1ldHJpY3MoZm9udCgpKS53aWR0
aChzZWxlY3RlZFRleHQsIC0xLCBRdDo6VGV4dEJ5cGFzc1NoYXBpbmcpOwotCi0gICAgcmV0dXJu
IEZsb2F0UmVjdChwdC54KCkgKyBzdGFydFgsIHB0LnkoKSwgd2lkdGgsIGgpOwotfQotCi1ib29s
IEZvbnQ6OmNhbkV4cGFuZEFyb3VuZElkZW9ncmFwaHNJbkNvbXBsZXhUZXh0KCkKLXsKLSAgICBy
ZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wgRm9udDo6cHJpbWFyeUZvbnRIYXNHbHlwaEZvckNoYXJh
Y3RlcihVQ2hhcjMyKSBjb25zdAotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJu
IHRydWU7Ci19Ci0KLWludCBGb250OjplbXBoYXNpc01hcmtBc2NlbnQoY29uc3QgQXRvbWljU3Ry
aW5nJikgY29uc3QKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAwOwotfQot
Ci1pbnQgRm9udDo6ZW1waGFzaXNNYXJrRGVzY2VudChjb25zdCBBdG9taWNTdHJpbmcmKSBjb25z
dAotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLWludCBGb250
OjplbXBoYXNpc01hcmtIZWlnaHQoY29uc3QgQXRvbWljU3RyaW5nJikgY29uc3QKLXsKLSAgICBu
b3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAwOwotfQotCi12b2lkIEZvbnQ6OmRyYXdFbXBo
YXNpc01hcmtzRm9yU2ltcGxlVGV4dChHcmFwaGljc0NvbnRleHQqIC8qIGNvbnRleHQgKi8sIGNv
bnN0IFRleHRSdW4mIC8qIHJ1biAqLywgY29uc3QgQXRvbWljU3RyaW5nJiAvKiBtYXJrICovLCBj
b25zdCBGbG9hdFBvaW50JiAvKiBwb2ludCAqLywgaW50IC8qIGZyb20gKi8sIGludCAvKiB0byAq
LykgY29uc3QKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi1RRm9udCBGb250Ojpmb250
KCkgY29uc3QKLXsKLSAgICBRRm9udCBmID0gcHJpbWFyeUZvbnQoKS0+Z2V0UXRGb250KCk7Ci0g
ICAgaWYgKG1fbGV0dGVyU3BhY2luZykKLSAgICAgICAgZi5zZXRMZXR0ZXJTcGFjaW5nKFFGb250
OjpBYnNvbHV0ZVNwYWNpbmcsIG1fbGV0dGVyU3BhY2luZyk7Ci0gICAgaWYgKG1fd29yZFNwYWNp
bmcpCi0gICAgICAgIGYuc2V0V29yZFNwYWNpbmcobV93b3JkU3BhY2luZyk7Ci0gICAgcmV0dXJu
IGY7Ci19Ci0KLVFGb250IEZvbnQ6OnN5bnRoZXRpY0ZvbnQoKSBjb25zdAotewotICAgIHJldHVy
biBmb250KCk7Ci19Ci0KLX0KLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvcXQvR2x5cGhQYWdlVHJlZU5vZGVRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9xdC9HbHlwaFBhZ2VUcmVlTm9kZVF0LmNwcAppbmRleCA3Yjc2ODA0YTQ2
OWYyODg5ODlhZGUyZDE3MDgwYTgwODhiNTc2MDllLi41ZWU5OTIyYmE1YjE5NzM4ZGFlOTkwZGYz
MTQ2ZmEyOGE3YTlhZTcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9xdC9HbHlwaFBhZ2VUcmVlTm9kZVF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9xdC9HbHlwaFBhZ2VUcmVlTm9kZVF0LmNwcApAQCAtMjMsMTUgKzIzLDEy
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiR2x5cGhQYWdlVHJlZU5vZGUuaCIK
IAotI2lmIEhBVkUoUVJBV0ZPTlQpCiAjaW5jbHVkZSAiU2ltcGxlRm9udERhdGEuaCIKICNpbmNs
dWRlIDxRRm9udE1ldHJpY3NGPgogI2luY2x1ZGUgPFFUZXh0TGF5b3V0PgotI2VuZGlmCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotI2lmIEhBVkUoUVJBV0ZPTlQpCiBib29sIEdseXBoUGFnZTo6
ZmlsbCh1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCwgVUNoYXIqIGJ1ZmZlciwgdW5z
aWduZWQgYnVmZmVyTGVuZ3RoLCBjb25zdCBTaW1wbGVGb250RGF0YSogZm9udERhdGEpCiB7CiAg
ICAgUVJhd0ZvbnQgcmF3Rm9udCA9IGZvbnREYXRhLT5wbGF0Zm9ybURhdGEoKS5yYXdGb250KCk7
CkBAIC01MSwxNSArNDgsNSBAQCBib29sIEdseXBoUGFnZTo6ZmlsbCh1bnNpZ25lZCBvZmZzZXQs
IHVuc2lnbmVkIGxlbmd0aCwgVUNoYXIqIGJ1ZmZlciwgdW5zaWduZWQgYgogICAgIH0KICAgICBy
ZXR1cm4gaGF2ZUdseXBoczsKIH0KLSNlbHNlCi0KLXZvaWQgR2x5cGhQYWdlVHJlZU5vZGU6OnBy
dW5lVHJlZUN1c3RvbUZvbnREYXRhKGNvbnN0IEZvbnREYXRhKikKLXsKLX0KLQotdm9pZCBHbHlw
aFBhZ2VUcmVlTm9kZTo6cHJ1bmVUcmVlRm9udERhdGEoY29uc3QgV2ViQ29yZTo6U2ltcGxlRm9u
dERhdGEqKQotewotfQotI2VuZGlmIC8vIEhBVkUoUVJBV0ZPTlQpCiAKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L1NpbXBsZUZvbnREYXRhUXQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvU2ltcGxlRm9udERhdGFRdC5j
cHAKaW5kZXggNTc5MDg2NTZlZDUzYTc0ODNmZjEyMmRiY2YxNDIxYTk5NWIzOTAyZC4uOGNlOWY3
N2RhMmQ3Y2NhM2QwYTdkZDA1NzNlYjlkN2VkN2U0ZGI1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvU2ltcGxlRm9udERhdGFRdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvU2ltcGxlRm9udERhdGFRdC5jcHAKQEAg
LTI0LDI2ICsyNCwxNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNpbXBsZUZv
bnREYXRhLmgiCiAKLSNpZiBIQVZFKFFSQVdGT05UKQogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVk
LmgiCi0jZWxzZQotI2luY2x1ZGUgPFFGb250TWV0cmljc0Y+Ci0jZW5kaWYKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiB2b2lkIFNpbXBsZUZvbnREYXRhOjpkZXRlcm1pbmVQaXRjaCgpCiB7Ci0j
aWYgSEFWRShRUkFXRk9OVCkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIG1fdHJlYXRBc0Zp
eGVkUGl0Y2ggPSBmYWxzZTsKLSNlbHNlCi0gICAgbV90cmVhdEFzRml4ZWRQaXRjaCA9IG1fcGxh
dGZvcm1EYXRhLmZvbnQoKS5maXhlZFBpdGNoKCk7Ci0jZW5kaWYKIH0KIAotI2lmIEhBVkUoUVJB
V0ZPTlQpCi0KIHN0YXRpYyBjb25zdCBmbG9hdCBzbWFsbENhcHNGcmFjdGlvbiA9IDAuNzsKIHN0
YXRpYyBjb25zdCBmbG9hdCBlbXBoYXNpc01hcmtGcmFjdGlvbiA9IDAuNTsKIApAQCAtMTAyLDIz
ICs5Miw2IEBAIEZsb2F0UmVjdCBTaW1wbGVGb250RGF0YTo6cGxhdGZvcm1Cb3VuZHNGb3JHbHlw
aChHbHlwaCkgY29uc3QKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiBGbG9hdFJl
Y3QoKTsKIH0KLSNlbHNlCi1ib29sIFNpbXBsZUZvbnREYXRhOjpjb250YWluc0NoYXJhY3RlcnMo
Y29uc3QgVUNoYXIqLCBpbnQpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXZvaWQg
U2ltcGxlRm9udERhdGE6OnBsYXRmb3JtR2x5cGhJbml0KCkKLXsKLSAgICBpZiAoIW1fcGxhdGZv
cm1EYXRhLnNpemUoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIG1fc3BhY2VHbHlwaCA9IDA7Ci0g
ICAgbV9hZGp1c3RlZFNwYWNlV2lkdGggPSBtX3NwYWNlV2lkdGg7Ci0gICAgZGV0ZXJtaW5lUGl0
Y2goKTsKLSAgICBtX21pc3NpbmdHbHlwaERhdGEuZm9udERhdGEgPSB0aGlzOwotICAgIG1fbWlz
c2luZ0dseXBoRGF0YS5nbHlwaCA9IDA7Ci19Ci0jZW5kaWYKIAogdm9pZCBTaW1wbGVGb250RGF0
YTo6cGxhdGZvcm1Jbml0KCkKIHsKQEAgLTEyOSw3ICsxMDIsNiBAQCB2b2lkIFNpbXBsZUZvbnRE
YXRhOjpwbGF0Zm9ybUluaXQoKQogICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotI2lmIEhBVkUo
UVJBV0ZPTlQpCiAgICAgUVJhd0ZvbnQgcmF3Rm9udChtX3BsYXRmb3JtRGF0YS5yYXdGb250KCkp
OwogICAgIGZsb2F0IGRlc2NlbnQgPSByYXdGb250LmRlc2NlbnQoKTsKICAgICBmbG9hdCBhc2Nl
bnQgPSByYXdGb250LmFzY2VudCgpOwpAQCAtMTM5LDE0ICsxMTEsNiBAQCB2b2lkIFNpbXBsZUZv
bnREYXRhOjpwbGF0Zm9ybUluaXQoKQogICAgIFFWZWN0b3I8cXVpbnQzMj4gaW5kZXhlcyA9IHJh
d0ZvbnQuZ2x5cGhJbmRleGVzRm9yU3RyaW5nKFFMYXRpbjFTdHJpbmcoIiAiKSk7CiAgICAgUVZl
Y3RvcjxRUG9pbnRGPiBhZHZhbmNlcyA9IHJhd0ZvbnQuYWR2YW5jZXNGb3JHbHlwaEluZGV4ZXMo
aW5kZXhlcyk7CiAgICAgZmxvYXQgc3BhY2VXaWR0aCA9IGFkdmFuY2VzLmF0KDApLngoKTsKLSNl
bHNlCi0gICAgUUZvbnRNZXRyaWNzRiBmbShtX3BsYXRmb3JtRGF0YS5mb250KCkpOwotICAgIGZs
b2F0IGRlc2NlbnQgPSBmbS5kZXNjZW50KCk7Ci0gICAgZmxvYXQgYXNjZW50ID0gZm0uYXNjZW50
KCk7Ci0gICAgZmxvYXQgeEhlaWdodCA9IGZtLnhIZWlnaHQoKTsKLSAgICBmbG9hdCBsaW5lU3Bh
Y2luZyA9IGZtLmxpbmVTcGFjaW5nKCk7Ci0gICAgZmxvYXQgc3BhY2VXaWR0aCA9IGZtLndpZHRo
KFFMYXRpbjFDaGFyKCcgJykpOwotI2VuZGlmCiAKICAgICAvLyBUaGUgbGluZSBzcGFjaW5nIHNo
b3VsZCBhbHdheXMgYmUgPj0gKGFzY2VudCArIGRlc2NlbnQpLCBidXQgdGhpcwogICAgIC8vIG1h
eSBiZSBmYWxzZSBpbiBzb21lIGNhc2VzIGR1ZSB0byBtaXNiZWhhdmluZyBwbGF0Zm9ybSBsaWJy
YXJpZXMuCkBAIC0xNzEsMTUgKzEzNSw5IEBAIHZvaWQgU2ltcGxlRm9udERhdGE6OnBsYXRmb3Jt
Q2hhcldpZHRoSW5pdCgpCiB7CiAgICAgaWYgKCFtX3BsYXRmb3JtRGF0YS5zaXplKCkpCiAgICAg
ICAgIHJldHVybjsKLSNpZiBIQVZFKFFSQVdGT05UKQogICAgIFFSYXdGb250IHJhd0ZvbnQobV9w
bGF0Zm9ybURhdGEucmF3Rm9udCgpKTsKICAgICBtX2F2Z0NoYXJXaWR0aCA9IHJhd0ZvbnQuYXZl
cmFnZUNoYXJXaWR0aCgpOwogICAgIG1fbWF4Q2hhcldpZHRoID0gcmF3Rm9udC5tYXhDaGFyV2lk
dGgoKTsKLSNlbHNlCi0gICAgUUZvbnRNZXRyaWNzRiBmbShtX3BsYXRmb3JtRGF0YS5mb250KCkp
OwotICAgIG1fYXZnQ2hhcldpZHRoID0gZm0uYXZlcmFnZUNoYXJXaWR0aCgpOwotICAgIG1fbWF4
Q2hhcldpZHRoID0gZm0ubWF4V2lkdGgoKTsKLSNlbmRpZgogfQogCiB2b2lkIFNpbXBsZUZvbnRE
YXRhOjpwbGF0Zm9ybURlc3Ryb3koKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9TVkdUZXh0TWV0cmljc0J1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9TVkdUZXh0TWV0cmljc0J1aWxkZXIuY3BwCmluZGV4IDY4NWU1MTU0NWRmZTFjMDk0
YzU3NWNlM2YzZjYyNzVmYmNhNGQ4MDUuLjVhYzg1Y2JiZTg0NzcxMGZkNWFlMWUyMmZmM2YzMzYy
MTE2YTg1YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4
dE1ldHJpY3NCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NW
R1RleHRNZXRyaWNzQnVpbGRlci5jcHAKQEAgLTQ4LDIzICs0OCwxNiBAQCBib29sIFNWR1RleHRN
ZXRyaWNzQnVpbGRlcjo6YWR2YW5jZSgpCiAgICAgaWYgKGludChtX3RleHRQb3NpdGlvbikgPj0g
bV9ydW4uY2hhcmFjdGVyc0xlbmd0aCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSNpZiBQ
TEFURk9STShRVCkgJiYgIUhBVkUoUVJBV0ZPTlQpCi0gICAgYWR2YW5jZUNvbXBsZXhUZXh0KCk7
Ci0jZWxzZQogICAgIGlmIChtX2lzQ29tcGxleFRleHQpCiAgICAgICAgIGFkdmFuY2VDb21wbGV4
VGV4dCgpOwogICAgIGVsc2UKICAgICAgICAgYWR2YW5jZVNpbXBsZVRleHQoKTsKLSNlbmRpZgog
CiAgICAgcmV0dXJuIG1fY3VycmVudE1ldHJpY3MubGVuZ3RoKCkgPiAwOwogfQogCiB2b2lkIFNW
R1RleHRNZXRyaWNzQnVpbGRlcjo6YWR2YW5jZVNpbXBsZVRleHQoKQogewotI2lmIFBMQVRGT1JN
KFFUKSAmJiAhSEFWRShRUkFXRk9OVCkKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSNlbHNl
CiAgICAgdW5zaWduZWQgbWV0cmljc0xlbmd0aCA9IG1fc2ltcGxlV2lkdGhJdGVyYXRvci0+YWR2
YW5jZShtX3RleHRQb3NpdGlvbiArIDEpOwogICAgIGlmICghbWV0cmljc0xlbmd0aCkgewogICAg
ICAgICBtX2N1cnJlbnRNZXRyaWNzID0gU1ZHVGV4dE1ldHJpY3MoKTsKQEAgLTgyLDcgKzc1LDYg
QEAgdm9pZCBTVkdUZXh0TWV0cmljc0J1aWxkZXI6OmFkdmFuY2VTaW1wbGVUZXh0KCkKICNlbHNl
CiAgICAgbV9jdXJyZW50TWV0cmljcyA9IFNWR1RleHRNZXRyaWNzKG1fdGV4dCwgbV90ZXh0UG9z
aXRpb24sIG1ldHJpY3NMZW5ndGgsIGN1cnJlbnRXaWR0aCwgZW1wdHlTdHJpbmcoKSk7CiAjZW5k
aWYKLSNlbmRpZgogfQogCiB2b2lkIFNWR1RleHRNZXRyaWNzQnVpbGRlcjo6YWR2YW5jZUNvbXBs
ZXhUZXh0KCkKQEAgLTExNSwxMiArMTA3LDEwIEBAIHZvaWQgU1ZHVGV4dE1ldHJpY3NCdWlsZGVy
Ojppbml0aWFsaXplTWVhc3VyZW1lbnRXaXRoVGV4dFJlbmRlcmVyKFJlbmRlclNWR0lubGluCiAg
ICAgbV9ydW4gPSBTVkdUZXh0TWV0cmljczo6Y29uc3RydWN0VGV4dFJ1bih0ZXh0LCB0ZXh0LT5j
aGFyYWN0ZXJzKCksIDAsIHRleHQtPnRleHRMZW5ndGgoKSk7CiAgICAgbV9pc0NvbXBsZXhUZXh0
ID0gc2NhbGVkRm9udC5jb2RlUGF0aChtX3J1bikgPT0gRm9udDo6Q29tcGxleDsKIAotI2lmICFQ
TEFURk9STShRVCkgfHwgSEFWRShRUkFXRk9OVCkKICAgICBpZiAobV9pc0NvbXBsZXhUZXh0KQog
ICAgICAgICBtX3NpbXBsZVdpZHRoSXRlcmF0b3IuY2xlYXIoKTsKICAgICBlbHNlCiAgICAgICAg
IG1fc2ltcGxlV2lkdGhJdGVyYXRvciA9IGFkb3B0UHRyKG5ldyBXaWR0aEl0ZXJhdG9yKCZzY2Fs
ZWRGb250LCBtX3J1bikpOwotI2VuZGlmCiB9CiAKIHN0cnVjdCBNZWFzdXJlVGV4dERhdGEgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0Fib3V0
RGF0YUhhdmVGZWF0dXJlcy5pbiBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3Vw
cG9ydC9BYm91dERhdGFIYXZlRmVhdHVyZXMuaW4KaW5kZXggMWFiOWQyNjRlMjJiM2YxN2E5ZTQ5
MjUyYWU0ODg0NGMxZGNmYjdkYy4uYTllYzVmMjhlYmUxMDY2NzFhMzM5YWE5OWFlZDZmYjJkMTdh
OWIyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0
L0Fib3V0RGF0YUhhdmVGZWF0dXJlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkv
V2ViQ29yZVN1cHBvcnQvQWJvdXREYXRhSGF2ZUZlYXR1cmVzLmluCkBAIC0zMiw3ICszMiw2IEBA
IFBUSFJFQURfTUFDSERFUF9ICiBQVEhSRUFEX05QX0gKIFBUSFJFQURfUldMT0NLCiBQVEhSRUFE
X1NFVE5BTUVfTlAKLVFSQVdGT05UCiBRVDUKIFJFQURMSU5FCiBSVU5MT09QX1RJTUVSCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCA2ZWI4YWI3ZWU3MDdiNDRi
YzlmNjE0MWExZjAyZmMyZDdiNTMyZDc5Li5lMTFkOTFkNzZmZjlhMDlkYjNhM2FjMjJiNWVmNTJh
MTk3MjdjNTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAg
LTk4MSw5ICs5ODEsNyBAQCB2b2lkIFdlYlByb2Nlc3M6OmdldFdlYkNvcmVTdGF0aXN0aWNzKHVp
bnQ2NF90IGNhbGxiYWNrSUQpCiAgICAgZGF0YS5zdGF0aXN0aWNzTnVtYmVycy5zZXQoIkNhY2hl
ZEZvbnREYXRhSW5hY3RpdmVDb3VudCIsIGZvbnRDYWNoZSgpLT5pbmFjdGl2ZUZvbnREYXRhQ291
bnQoKSk7CiAgICAgCiAgICAgLy8gR2F0aGVyIGdseXBoIHBhZ2Ugc3RhdGlzdGljcy4KLSNpZiAh
KFBMQVRGT1JNKFFUKSAmJiAhSEFWRShRUkFXRk9OVCkpIC8vIFF0IGRvZXNuJ3QgdXNlIHRoZSBn
bHlwaCBwYWdlIHRyZWUgY3VycmVudGx5LiBTZWU6IGJ1ZyA2MzQ2Ny4KICAgICBkYXRhLnN0YXRp
c3RpY3NOdW1iZXJzLnNldCgiR2x5cGhQYWdlQ291bnQiLCBHbHlwaFBhZ2VUcmVlTm9kZTo6dHJl
ZUdseXBoUGFnZUNvdW50KCkpOwotI2VuZGlmCiAgICAgCiAgICAgLy8gR2V0IFdlYkNvcmUgbWVt
b3J5IGNhY2hlIHN0YXRpc3RpY3MKICAgICBnZXRXZWJDb3JlTWVtb3J5Q2FjaGVTdGF0aXN0aWNz
KGRhdGEud2ViQ29yZUNhY2hlU3RhdGlzdGljcyk7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VM
b2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMmJlZGFmY2Q4MWZhNjc5ZDczMzBlNDY0OTI1M2I0
NGY4MWY4ZDdkZi4uYThkYTc4NDcwN2E1NmRlNGE0YWIxMmE1YzMxNTg4NjVlMTM2N2QxZCAxMDA2
NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE0IEBACisyMDEyLTA4LTE0ICBQaWVycmUgUm9zc2kgIDxwaWVycmUucm9zc2lAZ21haWwuY29t
PgorCisgICAgICAgIFtRdF0gUmVtb3ZlIEZvbnRRdDQsIEhBVkVfUVJBV0ZPTlQgZmxhZyBhbmQg
dGhlIHJlbGF0ZWQgZGVhZCBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD05Mzk2MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEZvbGxvd2luZyB0aGUgcmVtb3ZhbCBvZiBRdCA0IHN1cHBvcnQgZnJvbSB0
cnVuayBpbiByMTI0ODc5LgorCisgICAgICAgICogcW1ha2UvbWtzcGVjcy9mZWF0dXJlcy9mZWF0
dXJlcy5wcmY6CisKIDIwMTItMDgtMTMgIFJhcGhhZWwgS3VibyBkYSBDb3N0YSAgPHJha3Vjb0B3
ZWJraXQub3JnPgogCiAgICAgICAgIFtDTWFrZV0gUmVtb3ZlIGdsaWItcmVsYXRlZCBGaW5kIG1v
ZHVsZXMgYW5kIHdyaXRlIHNpbmdsZSBuZXcgb25lIGluc3RlYWQuCmRpZmYgLS1naXQgYS9Ub29s
cy9xbWFrZS9ta3NwZWNzL2ZlYXR1cmVzL2ZlYXR1cmVzLnByZiBiL1Rvb2xzL3FtYWtlL21rc3Bl
Y3MvZmVhdHVyZXMvZmVhdHVyZXMucHJmCmluZGV4IDhkNGI2MTRjNzhiZDRmOTNiOWJhNjFmNzlk
NTUzZjM4YmQwZDVlNDYuLjQyMTViMjdhZTk2ZThjNWM0Y2YzZWUzZjJkNzljMDk3ODYyMzlkMGUg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL3FtYWtlL21rc3BlY3MvZmVhdHVyZXMvZmVhdHVyZXMucHJmCisr
KyBiL1Rvb2xzL3FtYWtlL21rc3BlY3MvZmVhdHVyZXMvZmVhdHVyZXMucHJmCkBAIC0zNCwxMSAr
MzQsNiBAQCBsb2FkKG1vYmlsaXR5Y29uZmlnLCB0cnVlKQogREVGSU5FUyArPSBXVEZfVVNFX0lD
VV9VTklDT0RFPTEKIERFRklORVMgLT0gV1RGX1VTRV9RVDRfVU5JQ09ERT0xCiAKLSFjb250YWlu
cyhERUZJTkVTLCBIQVZFX1FSQVdGT05UPS4pIHsKLSAgICAjIFVzZSBvZiBRUmF3Rm9udCBpbiBR
dCA1OgotICAgIERFRklORVMgKz0gSEFWRV9RUkFXRk9OVD0xCi19Ci0KICMgV2UgbmVlZCBmb250
Y29uZmlnIHRvIHNldCB1cCB0aGUgdGVzdCBmb250cyBmb3IgRHVtcFJlbmRlclRyZWUgYW5kIFdl
YktpdFRlc3RSdW5uZXIuCiBjb25maWdfZm9udGNvbmZpZzohbWFjIHsKICAgICBERUZJTkVTICs9
IEhBVkVfRk9OVENPTkZJRz0xCkBAIC0yMDEsOCArMTk2LDggQEAgZm9yKGZlYXR1cmUsIEZFQVRV
UkVfREVGQVVMVFMpIHsKIAogIyAtLS0tLS0tLS0tLS0tLS0tIFNhbml0aXplIGRlZmluZXMgLS0t
LS0tLS0tLS0tLS0tLS0tLQogCi0jIERpc2FibGUgU1ZHIGZvbnRzIGlmIFNWRyBpcyBkaXNhYmxl
ZCBvciB3ZSBkb24ndCBoYXZlIHJhdyBmb250cwotY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1NW
Rz0wKXwhY29udGFpbnMoREVGSU5FUywgSEFWRV9RUkFXRk9OVD0xKTogREVGSU5FUyArPSBFTkFC
TEVfU1ZHX0ZPTlRTPTAKKyMgRGlzYWJsZSBTVkcgZm9udHMgaWYgU1ZHIGlzIGRpc2FibGVkCitj
b250YWlucyhERUZJTkVTLCBFTkFCTEVfU1ZHPTApOiBERUZJTkVTICs9IEVOQUJMRV9TVkdfRk9O
VFM9MAogCiAjIEphdmFTY3JpcHQgZGVidWdnZXIgcmVxdWlyZXMgdGhlIGluc3BlY3RvcgogY29u
dGFpbnMoREVGSU5FUywgRU5BQkxFX0lOU1BFQ1RPUj0wKSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158310</attachid>
            <date>2012-08-14 06:05:16 -0700</date>
            <delta_ts>2012-08-16 03:53:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-93960-20120814150753.patch</filename>
            <type>text/plain</type>
            <size>49327</size>
            <attacher name="Pierre Rossi">pierre.rossi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1NDQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTkwZTM5YmNiMTIzNTRh
OGM0MTEyMDE4ZGEyZjNiZWVhMmIwYzg2ZS4uNzc0NmM1Zjc3NTk2YWE4ODdjMDg3NzlmMDAwN2Jl
ZDlkZWIxMzJkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDEyLTA4LTE0ICBQaWVy
cmUgUm9zc2kgIDxwaWVycmUucm9zc2lAZ21haWwuY29tPgorCisgICAgICAgIFtRdF0gUmVtb3Zl
IEZvbnRRdDQsIEhBVkVfUVJBV0ZPTlQgZmxhZyBhbmQgdGhlIHJlbGF0ZWQgZGVhZCBjb2RlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05Mzk2MAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZvbGxvd2luZyB0
aGUgcmVtb3ZhbCBvZiBRdCA0IHN1cHBvcnQgZnJvbSB0cnVuayBpbiByMTI0ODc5LgorCisgICAg
ICAgIE5vIG5ldyB0ZXN0cy4gU2ltcGxlIGNsZWFudXAgam9iLgorCisgICAgICAgICogVGFyZ2V0
LnByaToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZvbnQ6OmNvZGVQYXRoKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250
Lmg6CisgICAgICAgIChGb250KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvU2ltcGxlRm9udERhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlRm9udERh
dGE6OnBsYXRmb3JtR2x5cGhJbml0KToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUZvbnREYXRh
OjpnbHlwaEZvckNoYXJhY3Rlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU2ltcGxl
Rm9udERhdGEuaDoKKyAgICAgICAgKFNpbXBsZUZvbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OlNpbXBsZUZvbnREYXRhOjp3aWR0aEZvckdseXBoKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9xdC9Gb250Q2FjaGVRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyYXdGb250Rm9yQ2hh
cmFjdGVycyk6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6OmdldEZvbnREYXRhRm9yQ2hh
cmFjdGVycyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvRm9udEN1c3RvbVBsYXRm
b3JtRGF0YS5oOgorICAgICAgICAoRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvcXQvRm9udEN1c3RvbVBsYXRmb3JtRGF0YVF0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZvbnRDdXN0b21QbGF0Zm9ybURhdGE6OmZvbnRQbGF0Zm9ybURhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvRm9udFBsYXRmb3JtRGF0YS5oOgorICAgICAgICAoV2Vi
Q29yZTo6Rm9udFBsYXRmb3JtRGF0YVByaXZhdGU6OkZvbnRQbGF0Zm9ybURhdGFQcml2YXRlKToK
KyAgICAgICAgKEZvbnRQbGF0Zm9ybURhdGFQcml2YXRlKToKKyAgICAgICAgKEZvbnRQbGF0Zm9y
bURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6Rm9udFBsYXRmb3Jt
RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvRm9udFBsYXRmb3JtRGF0YVF0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6OkZvbnRQbGF0Zm9ybURh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6b3BlcmF0b3I9PSk6Cisg
ICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpoYXNoKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9xdC9Gb250UXQ0LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9xdC9HbHlwaFBhZ2VUcmVlTm9kZVF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkdseXBoUGFnZTo6ZmlsbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvU2ltcGxl
Rm9udERhdGFRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVGb250RGF0YTo6ZGV0ZXJt
aW5lUGl0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlRm9udERhdGE6OnBsYXRmb3JtQm91
bmRzRm9yR2x5cGgpOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlRm9udERhdGE6OnBsYXRmb3Jt
SW5pdCk6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVGb250RGF0YTo6cGxhdGZvcm1DaGFyV2lk
dGhJbml0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRyaWNzQnVpbGRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0TWV0cmljc0J1aWxkZXI6OmFkdmFuY2UpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dE1ldHJpY3NCdWlsZGVyOjphZHZhbmNlU2ltcGxlVGV4
dCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0TWV0cmljc0J1aWxkZXI6OmluaXRpYWxpemVN
ZWFzdXJlbWVudFdpdGhUZXh0UmVuZGVyZXIpOgorCiAyMDEyLTA4LTEzICBWYW5nZWxpcyBLb2tr
ZXZpcyAgPHZhbmdlbGlzQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIENsZWFy
IEhVRCBjYW52YXMgY29udGVudHMgYmVmb3JlIGRyYXdpbmcgaW50byBpdC4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2JsYWNr
YmVycnkvQ2hhbmdlTG9nCmluZGV4IGYxNmU3ZjVmZjFmNDE1ZjExN2JlNTg3ZGY5MWYxNWE4ZTBi
MDgyNzYuLjAyYWI2NTY5OWY4Y2I2MzZhYWNiMzgxNjViYzJjZWU2Yzc5NDJhZGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9ibGFja2JlcnJ5L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTA4LTE0ICBQaWVy
cmUgUm9zc2kgIDxwaWVycmUucm9zc2lAZ21haWwuY29tPgorCisgICAgICAgIFtRdF0gUmVtb3Zl
IEZvbnRRdDQsIEhBVkVfUVJBV0ZPTlQgZmxhZyBhbmQgdGhlIHJlbGF0ZWQgZGVhZCBjb2RlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05Mzk2MAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZvbGxvd2luZyB0
aGUgcmVtb3ZhbCBvZiBRdCA0IHN1cHBvcnQgZnJvbSB0cnVuayBpbiByMTI0ODc5LgorCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvQWJvdXREYXRhSGF2ZUZlYXR1cmVzLmluOiBSZW1vdmUgYWxs
IHRyYWNlcyBvZiBIQVZFX1FSQVdGT05UJ3MgZXhpc3RlbmNlLgorCiAyMDEyLTA4LTEzICBNaWtl
IEZlbnRvbiAgPG1pZmVudG9uQHJpbS5jb20+CiAKICAgICAgICAgW0JsYWNrQmVycnldIFVwZGF0
ZSBBUEkgZm9yIHNwZWxsIGNoZWNraW5nIHN1Z2dlc3Rpb25zIGFnYWluLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4
IGYxMzBkYTVmY2UwMTQ3OWVmNDllZjI0MjE5NGMxOWQ3ZjFiOTc1YjkuLmI5Y2Y2MWZjYWVkMDBi
MWMzYzA4YmU1OGRiZDk0NjJiODFiN2IyM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAor
MjAxMi0wOC0xNCAgUGllcnJlIFJvc3NpICA8cGllcnJlLnJvc3NpQGdtYWlsLmNvbT4KKworICAg
ICAgICBbUXRdIFJlbW92ZSBGb250UXQ0LCBIQVZFX1FSQVdGT05UIGZsYWcgYW5kIHRoZSByZWxh
dGVkIGRlYWQgY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTM5NjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBGb2xsb3dpbmcgdGhlIHJlbW92YWwgb2YgUXQgNCBzdXBwb3J0IGZyb20gdHJ1bmsgaW4g
cjEyNDg3OS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3M6OmdldFdlYkNvcmVTdGF0aXN0aWNzKToKKwogMjAxMi0wOC0x
MyAgUmFwaGFlbCBLdWJvIGRhIENvc3RhICA8cmFrdWNvQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
W0NNYWtlXSBSZW1vdmUgZ2xpYi1yZWxhdGVkIEZpbmQgbW9kdWxlcyBhbmQgd3JpdGUgc2luZ2xl
IG5ldyBvbmUgaW5zdGVhZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkg
Yi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IGIzOWU4OTdjMmI2MDYwZDdhZDk0NjQy
MzY0N2EwNjVkMjgzNzRhMDkuLjRjZmYzZmE5MDhjMDU2NWY5N2U5ZDZmN2E0ODIxMDQwN2ViM2E2
YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dl
YkNvcmUvVGFyZ2V0LnByaQpAQCAtOTQ1LDkgKzk0NSwxMSBAQCBTT1VSQ0VTICs9IFwKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9Gb250RGF0YS5jcHAgXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0Zv
bnQuY3BwIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwIFwKKyAgICBwbGF0
Zm9ybS9ncmFwaGljcy9Gb250RmFzdFBhdGguY3BwIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9G
cmFjdGlvbmFsTGF5b3V0Qm94RXh0ZW50LmNwcCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRnJh
Y3Rpb25hbExheW91dFJlY3QuY3BwIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9HZW5lcmF0b3JH
ZW5lcmF0ZWRJbWFnZS5jcHAgXAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dseXBoUGFnZVRyZWVO
b2RlLmNwcCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnQuY3BwIFwKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwIFwKICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0xheWVyLmNwcCBcCkBAIC05NjIsNiArOTY0LDcgQEAgU09VUkNFUyArPSBcCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5jcHAgXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1Bh
dGhUcmF2ZXJzYWxTdGF0ZS5jcHAgXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4uY3Bw
IFwKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9xdC9Gb250UXQuY3BwIFwKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9SZWdpb24uY3BwIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Sb3VuZGVkUmVjdC5j
cHAgXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1NlZ21lbnRlZEZvbnREYXRhLmNwcCBcCkBAIC05
NzEsNiArOTc0LDcgQEAgU09VUkNFUyArPSBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvU3RyaW5n
VHJ1bmNhdG9yLmNwcCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvR3JhcGhpY3NT
dXJmYWNlLmNwcCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvcXQvR3JhcGhpY3NT
dXJmYWNlUXQuY3BwIFwKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9TdXJyb2dhdGVQYWlyQXdhcmVU
ZXh0SXRlcmF0b3IuY3BwIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9UZXh0UnVuLmNwcCBcCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nU3RvcmUuY3BwIFwKICAgICBwbGF0Zm9y
bS9ncmFwaGljcy90cmFuc2Zvcm1zL0FmZmluZVRyYW5zZm9ybS5jcHAgXApAQCAtOTg0LDYgKzk4
OCw3IEBAIFNPVVJDRVMgKz0gXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJh
bnNmb3JtT3BlcmF0aW9ucy5jcHAgXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMv
VHJhbnNmb3JtU3RhdGUuY3BwIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1Ry
YW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5jcHAgXAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL1dp
ZHRoSXRlcmF0b3IuY3BwIFwKICAgICBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29k
ZXIuY3BwIFwKICAgICBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVy
LmNwcCBcCiAgICAgcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlUmVhZGVyLmNw
cCBcCkBAIC0yMTA0LDYgKzIxMDksNyBAQCBIRUFERVJTICs9IFwKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9TaGFkb3dCbHVyLmggXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1NpbXBsZUZvbnREYXRh
LmggXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL0dyYXBoaWNzU3VyZmFjZS5oIFwK
KyAgICBwbGF0Zm9ybS9ncmFwaGljcy9TdXJyb2dhdGVQYWlyQXdhcmVUZXh0SXRlcmF0b3IuaCBc
CiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVy
LmggXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmggXAogICAg
IHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmggXApA
QCAtMjEyMyw2ICsyMTI5LDcgQEAgSEVBREVSUyArPSBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
dHJhbnNmb3Jtcy9UcmFuc2Zvcm1PcGVyYXRpb25zLmggXAogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L3RyYW5zZm9ybXMvVHJhbnNmb3JtU3RhdGUuaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdHJh
bnNmb3Jtcy9UcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24uaCBcCisgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvV2lkdGhJdGVyYXRvci5oIFwKICAgICBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAv
Qk1QSW1hZ2VEZWNvZGVyLmggXAogICAgIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJ
bWFnZVJlYWRlci5oIFwKICAgICBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VE
ZWNvZGVyLmggXApAQCAtMzI4NiwyOCArMzI5Myw2IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJM
RV9NQVRITUw9MSkgewogICAgICAgICByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFVuZGVy
T3Zlci5jcHAKIH0KIAotIyBRUmF3Rm9udCB0cmFuc2l0aW9uIGhhbmRsaW5nLgotIwotIyBFdmVu
IHRob3VnaCBRUmF3Rm9udCB3YXMgYWxyZWFkeSBhdmFpbGFibGUgaW4gUXQgNC44LCBpdCBoYWQK
LSMgbGltaXRhdGlvbnMgdGhhdCBtYWRlIHN3aXRjaGluZyBmdWxseSB0byBpdCBpbXBvc3NpYmxl
LgotIyBXZSBwcmVzZXJ2ZSB0aGUgb2xkIGNvZGUgcGF0aCB3aGVuIGJ1aWxkaW5nIHdpdGggUXQg
NC4KLQotY29udGFpbnMoREVGSU5FUywgSEFWRV9RUkFXRk9OVD0xKSB7Ci0gICAgU09VUkNFUyAr
PSBcCi0gICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0ZvbnRRdC5jcHAgXAotICAgICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9Gb250RmFzdFBhdGguY3BwIFwKLSAgICAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvR2x5cGhQYWdlVHJlZU5vZGUuY3BwIFwKLSAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
V2lkdGhJdGVyYXRvci5jcHAgXAotICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9TdXJyb2dhdGVQ
YWlyQXdhcmVUZXh0SXRlcmF0b3IuY3BwCi0KLSAgICBIRUFERVJTICs9IFwKLSAgICAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5oIFwKLSAgICAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvU3Vycm9nYXRlUGFpckF3YXJlVGV4dEl0ZXJhdG9yLmgKLX0gZWxzZSB7Ci0gICAgU09VUkNF
UyArPSBcCi0gICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0ZvbnRRdDQuY3BwCi19Ci0KIGNv
bnRhaW5zKERFRklORVMsIEVOQUJMRV9URVhUX0FVVE9TSVpJTkc9MSkgewogICAgIFNPVVJDRVMg
Kz0gIyBGSVhNRSEKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAK
aW5kZXggMjk5NDY5OGE1MjllMjFlMzM4MzI2NGQ0NzVlMGVjNjdlMjQ4MDAyNS4uZGIwN2YwYTk4
ZDIxZjQxNmE4ZDA1NjZhMjQ5NjgwM2MyNjBhZjZlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRm9udC5jcHAKQEAgLTI1OSwxMSArMjU5LDYgQEAgRm9udDo6Q29kZVBhdGgg
Rm9udDo6Y29kZVBhdGgoY29uc3QgVGV4dFJ1biYgcnVuKSBjb25zdAogICAgICAgICByZXR1cm4g
U2ltcGxlOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShRVCkgJiYgIUhBVkUoUVJBV0ZPTlQpCi0g
ICAgaWYgKHJ1bi5leHBhbnNpb24oKSB8fCBydW4ucnRsKCkgfHwgaXNTbWFsbENhcHMoKSB8fCB3
b3JkU3BhY2luZygpIHx8IGxldHRlclNwYWNpbmcoKSkKLSAgICAgICAgcmV0dXJuIENvbXBsZXg7
Ci0jZW5kaWYKLQogICAgIGlmIChtX2ZvbnREZXNjcmlwdGlvbi5mZWF0dXJlU2V0dGluZ3MoKSAm
JiBtX2ZvbnREZXNjcmlwdGlvbi5mZWF0dXJlU2V0dGluZ3MoKS0+c2l6ZSgpID4gMCkKICAgICAg
ICAgcmV0dXJuIENvbXBsZXg7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250LmgKaW5kZXggYjNiNjFiYWJiMDIwNTJjNTJiOTIyYzliYmMzOWZmZWZjYjQ2ZmRlMC4uNWUz
OGE5NjMzNDhiNTUxNjllYWY0OTk3NGU4NDI5NzFmMWU1OTIyNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnQuaApAQCAtMzYsMTQgKzM2LDEwIEBACiAjaW5jbHVkZSA8d3Rm
L3VuaWNvZGUvQ2hhcmFjdGVyTmFtZXMuaD4KIAogI2lmIFBMQVRGT1JNKFFUKQotI2lmIEhBVkUo
UVJBV0ZPTlQpCiAjaW5jbHVkZSA8UVJhd0ZvbnQ+CiBRVF9CRUdJTl9OQU1FU1BBQ0UKIGNsYXNz
IFFUZXh0TGF5b3V0OwogUVRfRU5EX05BTUVTUEFDRQotI2Vsc2UKLSNpbmNsdWRlIDxRRm9udD4K
LSNlbmRpZgogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTE4NCwxMSArMTgwLDcg
QEAgcHVibGljOgogICAgIHN0YXRpYyB1bnNpZ25lZCBleHBhbnNpb25PcHBvcnR1bml0eUNvdW50
KGNvbnN0IFVDaGFyKiwgc2l6ZV90IGxlbmd0aCwgVGV4dERpcmVjdGlvbiwgYm9vbCYgaXNBZnRl
ckV4cGFuc2lvbik7CiAKICNpZiBQTEFURk9STShRVCkKLSNpZiBIQVZFKFFSQVdGT05UKQogICAg
IFFSYXdGb250IHJhd0ZvbnQoKSBjb25zdDsKLSNlbHNlCi0gICAgUUZvbnQgZm9udCgpIGNvbnN0
OwotI2VuZGlmCiAgICAgUUZvbnQgc3ludGhldGljRm9udCgpIGNvbnN0OwogI2VuZGlmCiAKQEAg
LTI2OCw3ICsyNjAsOCBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgcmV0dXJuIG1fZm9udExp
c3QgJiYgbV9mb250TGlzdC0+bG9hZGluZ0N1c3RvbUZvbnRzKCk7CiAgICAgfQotI2lmIFBMQVRG
T1JNKFFUKSAmJiBIQVZFKFFSQVdGT05UKQorCisjaWYgUExBVEZPUk0oUVQpCiAgICAgdm9pZCBp
bml0Rm9ybWF0Rm9yVGV4dExheW91dChRVGV4dExheW91dCopIGNvbnN0OwogI2VuZGlmCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQu
Y3BwCmluZGV4IGNhZWY3YWQyZTQ5Y2ViOGVjNmQxYWFjZTU2ODQ0Njk3MWFiMTFmMmQuLmIwZWUx
NTY2OGE0Y2I0ODcxNzQxNTAzY2M2ZjIwNGJlMGY1YmIxMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcApAQCAtMzc2LDcg
KzM3Niw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0OjpwYWludGluZ0Rpc2FibGVkKCkgY29uc3QK
ICAgICByZXR1cm4gbV9zdGF0ZS5wYWludGluZ0Rpc2FibGVkOwogfQogCi0jaWYgIU9TKFdJTkNF
KSB8fCAoUExBVEZPUk0oUVQpICYmICFIQVZFKFFSQVdGT05UKSkKKyNpZiAhT1MoV0lOQ0UpCiB2
b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RleHQoY29uc3QgRm9udCYgZm9udCwgY29uc3QgVGV4
dFJ1biYgcnVuLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgaW50IGZyb20sIGludCB0bykKIHsK
ICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvU2ltcGxlRm9udERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvU2ltcGxlRm9udERhdGEuY3BwCmluZGV4IDc5NTE0MjVjOGY1NzZlODgz
NjhmNzIyNWU0ZGViMGU4MGFjYWY3MDkuLjEyMzJlNDdmOTFjY2Y5NTE4NWMxNWEzMzdkNzY3Yzky
MWI2OTRhMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Np
bXBsZUZvbnREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9T
aW1wbGVGb250RGF0YS5jcHAKQEAgLTY5LDcgKzY5LDYgQEAgU2ltcGxlRm9udERhdGE6OlNpbXBs
ZUZvbnREYXRhKFBhc3NPd25QdHI8QWRkaXRpb25hbEZvbnREYXRhPiBmb250RGF0YSwgZmxvYXQg
Zm8KICAgICBtX2ZvbnREYXRhLT5pbml0aWFsaXplRm9udERhdGEodGhpcywgZm9udFNpemUpOwog
fQogCi0jaWYgIShQTEFURk9STShRVCkgJiYgIUhBVkUoUVJBV0ZPTlQpKQogLy8gRXN0aW1hdGVz
IG9mIGF2Z0NoYXJXaWR0aCBhbmQgbWF4Q2hhcldpZHRoIGZvciBwbGF0Zm9ybXMgdGhhdCBkb24n
dCBzdXBwb3J0IGFjY2Vzc2luZyB0aGVzZSB2YWx1ZXMgZnJvbSB0aGUgZm9udC4KIHZvaWQgU2lt
cGxlRm9udERhdGE6OmluaXRDaGFyV2lkdGhzKCkKIHsKQEAgLTEzMCw3ICsxMjksNiBAQCB2b2lk
IFNpbXBsZUZvbnREYXRhOjpwbGF0Zm9ybUdseXBoSW5pdCgpCiAgICAgbV9taXNzaW5nR2x5cGhE
YXRhLmZvbnREYXRhID0gdGhpczsKICAgICBtX21pc3NpbmdHbHlwaERhdGEuZ2x5cGggPSAwOwog
fQotI2VuZGlmCiAKIFNpbXBsZUZvbnREYXRhOjp+U2ltcGxlRm9udERhdGEoKQogewpAQCAtMTQ4
LDEzICsxNDYsMTEgQEAgY29uc3QgU2ltcGxlRm9udERhdGEqIFNpbXBsZUZvbnREYXRhOjpmb250
RGF0YUZvckNoYXJhY3RlcihVQ2hhcjMyKSBjb25zdAogICAgIHJldHVybiB0aGlzOwogfQogCi0j
aWYgIShQTEFURk9STShRVCkgJiYgIUhBVkUoUVJBV0ZPTlQpKQogR2x5cGggU2ltcGxlRm9udERh
dGE6OmdseXBoRm9yQ2hhcmFjdGVyKFVDaGFyMzIgY2hhcmFjdGVyKSBjb25zdAogewogICAgIEds
eXBoUGFnZVRyZWVOb2RlKiBub2RlID0gR2x5cGhQYWdlVHJlZU5vZGU6OmdldFJvb3RDaGlsZCh0
aGlzLCBjaGFyYWN0ZXIgLyBHbHlwaFBhZ2U6OnNpemUpOwogICAgIHJldHVybiBub2RlLT5wYWdl
KCkgPyBub2RlLT5wYWdlKCktPmdseXBoQXQoY2hhcmFjdGVyICUgR2x5cGhQYWdlOjpzaXplKSA6
IDA7CiB9Ci0jZW5kaWYKIAogYm9vbCBTaW1wbGVGb250RGF0YTo6aXNTZWdtZW50ZWQoKSBjb25z
dAogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2ltcGxl
Rm9udERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NpbXBsZUZvbnRE
YXRhLmgKaW5kZXggMGEzODljZDkyMWIwNjA3NjVhYmMzMjg1YzE1Yzk5NDM2ZWMwMGZiOC4uYzBi
MDQ0ZDJjYjMwZGYyNjVlMzQyYjgzOWUxZjE1M2YyYjE2YzM0MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2ltcGxlRm9udERhdGEuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaW1wbGVGb250RGF0YS5oCkBAIC01MywxMiArNTMs
OCBAQAogI2VuZGlmCiAKICNpZiBQTEFURk9STShRVCkKLSNpZiAhSEFWRShRUkFXRk9OVCkKLSNp
bmNsdWRlIDxRRm9udD4KLSNlbHNlCiAjaW5jbHVkZSA8UVJhd0ZvbnQ+CiAjZW5kaWYKLSNlbmRp
ZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTE4NiwxMSArMTgyLDcgQEAgcHVibGljOgog
I2VuZGlmCiAKICNpZiBQTEFURk9STShRVCkKLSNpZiAhSEFWRShRUkFXRk9OVCkKLSAgICBRRm9u
dCBnZXRRdEZvbnQoKSBjb25zdCB7IHJldHVybiBtX3BsYXRmb3JtRGF0YS5mb250KCk7IH0KLSNl
bHNlCiAgICAgUVJhd0ZvbnQgZ2V0UXRSYXdGb250KCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9y
bURhdGEucmF3Rm9udCgpOyB9Ci0jZW5kaWYgLy8gIUhBVkUoUVJBV0ZPTlQpCiAjZW5kaWYKIAog
I2lmIFBMQVRGT1JNKFdJTikgfHwgKE9TKFdJTkRPV1MpICYmIFBMQVRGT1JNKFdYKSkKQEAgLTI5
NSw3ICsyODcsNiBAQCBwcml2YXRlOgogI2VuZGlmCiB9OwogCi0jaWYgIShQTEFURk9STShRVCkg
JiYgIUhBVkUoUVJBV0ZPTlQpKQogQUxXQVlTX0lOTElORSBGbG9hdFJlY3QgU2ltcGxlRm9udERh
dGE6OmJvdW5kc0ZvckdseXBoKEdseXBoIGdseXBoKSBjb25zdAogewogICAgIGlmIChpc1plcm9X
aWR0aFNwYWNlR2x5cGgoZ2x5cGgpKQpAQCAtMzMyLDcgKzMyMyw2IEBAIEFMV0FZU19JTkxJTkUg
ZmxvYXQgU2ltcGxlRm9udERhdGE6OndpZHRoRm9yR2x5cGgoR2x5cGggZ2x5cGgpIGNvbnN0CiAg
ICAgbV9nbHlwaFRvV2lkdGhNYXAuc2V0TWV0cmljc0ZvckdseXBoKGdseXBoLCB3aWR0aCk7CiAg
ICAgcmV0dXJuIHdpZHRoOwogfQotI2VuZGlmIC8vIEhBVkUoUVJBV0ZPTlQpCiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvcXQvRm9udENhY2hlUXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvcXQvRm9udENhY2hlUXQuY3BwCmluZGV4IDgxNmJjY2I4OTI0Y2FhZjgzNTA5Y2MwNmFlNmIw
NTJhYTMxOGJjM2QuLjk1N2Q3N2E5Y2YzNmU1N2ViZWY4ZTQ2NTRhMmVjMjYyNWIxMTBhNDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ZvbnRDYWNoZVF0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9Gb250Q2FjaGVR
dC5jcHAKQEAgLTM2LDkgKzM2LDcgQEAKIAogI2luY2x1ZGUgPFFGb250PgogI2luY2x1ZGUgPFFG
b250RGF0YWJhc2U+Ci0jaWYgSEFWRShRUkFXRk9OVCkKICNpbmNsdWRlIDxRVGV4dExheW91dD4K
LSNlbmRpZgogCiB1c2luZyBuYW1lc3BhY2UgV1RGOwogCkBAIC00OCw3ICs0Niw2IEBAIHZvaWQg
Rm9udENhY2hlOjpwbGF0Zm9ybUluaXQoKQogewogfQogCi0jaWYgSEFWRShRUkFXRk9OVCkKIHN0
YXRpYyBRUmF3Rm9udCByYXdGb250Rm9yQ2hhcmFjdGVycyhjb25zdCBRU3RyaW5nJiBzdHJpbmcs
IGNvbnN0IFFSYXdGb250JiBmb250KQogewogICAgIFFUZXh0TGF5b3V0IGxheW91dChzdHJpbmcp
OwpAQCAtNjUsMjMgKzYyLDE1IEBAIHN0YXRpYyBRUmF3Rm9udCByYXdGb250Rm9yQ2hhcmFjdGVy
cyhjb25zdCBRU3RyaW5nJiBzdHJpbmcsIGNvbnN0IFFSYXdGb250JiBmb250CiAgICAgY29uc3Qg
UUdseXBoUnVuJiBnbHlwaHMoZ2x5cGhMaXN0LmF0KDApKTsKICAgICByZXR1cm4gZ2x5cGhzLnJh
d0ZvbnQoKTsKIH0KLSNlbmRpZiAvLyBIQVZFKFFSQVdGT05UKQogCiBjb25zdCBTaW1wbGVGb250
RGF0YSogRm9udENhY2hlOjpnZXRGb250RGF0YUZvckNoYXJhY3RlcnMoY29uc3QgRm9udCYgZm9u
dCwgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIGludCBsZW5ndGgpCiB7Ci0jaWYgSEFWRShRUkFX
Rk9OVCkKICAgICBRU3RyaW5nIHFzdHJpbmcgPSBRU3RyaW5nOjpmcm9tUmF3RGF0YShyZWludGVy
cHJldF9jYXN0PGNvbnN0IFFDaGFyKj4oY2hhcmFjdGVycyksIGxlbmd0aCk7CiAgICAgUVJhd0Zv
bnQgY29tcHV0ZWRGb250ID0gcmF3Rm9udEZvckNoYXJhY3RlcnMocXN0cmluZywgZm9udC5yYXdG
b250KCkpOwogICAgIGlmICghY29tcHV0ZWRGb250LmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJu
IDA7CiAgICAgRm9udFBsYXRmb3JtRGF0YSBhbHRlcm5hdGVGb250KGNvbXB1dGVkRm9udCk7CiAg
ICAgcmV0dXJuIGdldENhY2hlZEZvbnREYXRhKCZhbHRlcm5hdGVGb250LCBEb05vdFJldGFpbik7
Ci0jZWxzZQotICAgIFFfVU5VU0VEKGZvbnQpOwotICAgIFFfVU5VU0VEKGNoYXJhY3RlcnMpOwot
ICAgIFFfVU5VU0VEKGxlbmd0aCk7Ci0gICAgcmV0dXJuIDA7Ci0jZW5kaWYKIH0KIAogU2ltcGxl
Rm9udERhdGEqIEZvbnRDYWNoZTo6Z2V0U2ltaWxhckZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9u
dCYgZm9udCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0
L0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3F0L0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAppbmRleCA3ZmE5ZjhjMTE1ZWE4OTQwMjk4
OGU5ZjM2MWU2YjE1ZDE1YTQxYjM2Li5mYmY5YTE1OGQ4NzMwZGFjZTNiMjc4NWE4ZGIwYzQ3MzJk
ZWFmNGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9G
b250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvcXQvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCkBAIC0yOSw5ICsyOSw3IEBACiAjaW5j
bHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2lu
Y2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgotI2lmIEhBVkUoUVJBV0ZPTlQpCiAjaW5jbHVkZSA8
UVJhd0ZvbnQ+Ci0jZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00MiwxOSArNDAs
MTMgQEAgc3RydWN0IEZvbnRDdXN0b21QbGF0Zm9ybURhdGEgewogICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKEZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICBGb250Q3VzdG9tUGxhdGZvcm1EYXRhKCkgeyB9Ci0gICAgfkZvbnRDdXN0
b21QbGF0Zm9ybURhdGEoKTsKLQotI2lmICFIQVZFKFFSQVdGT05UKQotICAgIC8vIGZvciB1c2Ug
d2l0aCBRRm9udERhdGFiYXNlOjphZGRBcHBsaWNhdGlvbkZvbnQvcmVtb3ZlQXBwbGljYXRpb25G
b250Ci0gICAgaW50IG1faGFuZGxlOwotI2Vsc2UKLSAgICBRUmF3Rm9udCBtX3Jhd0ZvbnQ7Ci0j
ZW5kaWYKIAogICAgIEZvbnRQbGF0Zm9ybURhdGEgZm9udFBsYXRmb3JtRGF0YShpbnQgc2l6ZSwg
Ym9vbCBib2xkLCBib29sIGl0YWxpYywgRm9udE9yaWVudGF0aW9uID0gSG9yaXpvbnRhbCwgVGV4
dE9yaWVudGF0aW9uID0gVGV4dE9yaWVudGF0aW9uVmVydGljYWxSaWdodCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9udFdpZHRoVmFyaWFudCA9IFJlZ3VsYXJXaWR0
aCwgRm9udFJlbmRlcmluZ01vZGUgPSBOb3JtYWxSZW5kZXJpbmdNb2RlKTsKIAogICAgIHN0YXRp
YyBib29sIHN1cHBvcnRzRm9ybWF0KGNvbnN0IFN0cmluZyYpOworCisgICAgUVJhd0ZvbnQgbV9y
YXdGb250OwogfTsKIAogRm9udEN1c3RvbVBsYXRmb3JtRGF0YSogY3JlYXRlRm9udEN1c3RvbVBs
YXRmb3JtRGF0YShTaGFyZWRCdWZmZXIqIGJ1ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhUXQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvRm9udEN1c3RvbVBsYXRmb3JtRGF0
YVF0LmNwcAppbmRleCA0YzViOTY0ODg1Mjg1ZWNiZTE4YmMyYzY4OTBkODQ1ZDE1Y2NiZjUzLi4y
YmUzODU1MGU2MDdkODA1MmFkZWVmNTQyZTM0N2U3YTVhNmEwOGQ4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhUXQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGFRdC5jcHAKQEAgLTI0LDM1ICsyNCwxNSBAQAogCiAjaW5jbHVkZSAiRm9udFBs
YXRmb3JtRGF0YS5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgotI2lmICFIQVZFKFFSQVdG
T05UKQotI2luY2x1ZGUgPFFGb250RGF0YWJhc2U+Ci0jZW5kaWYKICNpbmNsdWRlIDxRU3RyaW5n
TGlzdD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1Gb250Q3VzdG9tUGxhdGZvcm1EYXRhOjp+
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YSgpCi17Ci0jaWYgIUhBVkUoUVJBV0ZPTlQpCi0gICAgUUZv
bnREYXRhYmFzZTo6cmVtb3ZlQXBwbGljYXRpb25Gb250KG1faGFuZGxlKTsKLSNlbmRpZgotfQot
CiBGb250UGxhdGZvcm1EYXRhIEZvbnRDdXN0b21QbGF0Zm9ybURhdGE6OmZvbnRQbGF0Zm9ybURh
dGEoaW50IHNpemUsIGJvb2wgYm9sZCwgYm9vbCBpdGFsaWMsIEZvbnRPcmllbnRhdGlvbiwgVGV4
dE9yaWVudGF0aW9uLCBGb250V2lkdGhWYXJpYW50LCBGb250UmVuZGVyaW5nTW9kZSkKIHsKLSNp
ZiAhSEFWRShRUkFXRk9OVCkKLSAgICBRRm9udCBmb250OwotICAgIGZvbnQuc2V0RmFtaWx5KFFG
b250RGF0YWJhc2U6OmFwcGxpY2F0aW9uRm9udEZhbWlsaWVzKG1faGFuZGxlKVswXSk7Ci0gICAg
Zm9udC5zZXRQaXhlbFNpemUoc2l6ZSk7Ci0gICAgaWYgKGJvbGQpCi0gICAgICAgIGZvbnQuc2V0
V2VpZ2h0KFFGb250OjpCb2xkKTsKLSAgICBmb250LnNldEl0YWxpYyhpdGFsaWMpOwotICAgIHJl
dHVybiBGb250UGxhdGZvcm1EYXRhKGZvbnQpOwotI2Vsc2UKICAgICBRX0FTU0VSVChtX3Jhd0Zv
bnQuaXNWYWxpZCgpKTsKICAgICBtX3Jhd0ZvbnQuc2V0UGl4ZWxTaXplKHFyZWFsKHNpemUpKTsK
ICAgICByZXR1cm4gRm9udFBsYXRmb3JtRGF0YShtX3Jhd0ZvbnQpOwotI2VuZGlmCiB9CiAKIEZv
bnRDdXN0b21QbGF0Zm9ybURhdGEqIGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVk
QnVmZmVyKiBidWZmZXIpCkBAIC02MCwyNCArNDAsMTMgQEAgRm9udEN1c3RvbVBsYXRmb3JtRGF0
YSogY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKICAg
ICBBU1NFUlRfQVJHKGJ1ZmZlciwgYnVmZmVyKTsKIAogICAgIGNvbnN0IFFCeXRlQXJyYXkgZm9u
dERhdGEoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKLSNpZiAhSEFWRShRUkFXRk9O
VCkKLSAgICBpbnQgaWQgPSBRRm9udERhdGFiYXNlOjphZGRBcHBsaWNhdGlvbkZvbnRGcm9tRGF0
YShmb250RGF0YSk7Ci0gICAgaWYgKGlkID09IC0xKQotICAgICAgICByZXR1cm4gMDsKLSAgICBR
X0FTU0VSVChRRm9udERhdGFiYXNlOjphcHBsaWNhdGlvbkZvbnRGYW1pbGllcyhpZCkuc2l6ZSgp
ID4gMCk7Ci0jZWxzZQogICAgIC8vIFBpeGVsIHNpemUgZG9lc24ndCBtYXR0ZXIgYXQgdGhpcyBw
b2ludCwgaXQgaXMgc2V0IGluIEZvbnRDdXN0b21QbGF0Zm9ybURhdGE6OmZvbnRQbGF0Zm9ybURh
dGEuCiAgICAgUVJhd0ZvbnQgcmF3Rm9udChmb250RGF0YSwgLypwaXhlbFNpemUgPSAqLzAsIFFG
b250OjpQcmVmZXJEZWZhdWx0SGludGluZyk7CiAgICAgaWYgKCFyYXdGb250LmlzVmFsaWQoKSkK
ICAgICAgICAgcmV0dXJuIDA7Ci0jZW5kaWYKIAogICAgIEZvbnRDdXN0b21QbGF0Zm9ybURhdGEg
KmRhdGEgPSBuZXcgRm9udEN1c3RvbVBsYXRmb3JtRGF0YTsKLSNpZiAhSEFWRShRUkFXRk9OVCkK
LSAgICBkYXRhLT5tX2hhbmRsZSA9IGlkOwotI2Vsc2UKICAgICBkYXRhLT5tX3Jhd0ZvbnQgPSBy
YXdGb250OwotI2VuZGlmCiAgICAgcmV0dXJuIGRhdGE7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ZvbnRQbGF0Zm9ybURhdGEuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ZvbnRQbGF0Zm9ybURhdGEuaAppbmRleCBi
NjBkMDVkNTJhZjYwZTQwOGU2YzBlZTdiNTZhNWUzMDA2N2FjZGM4Li41MDg4NWUyM2QwMWExYmZi
MTVlYjgwOTQ3MWZlZTM2ODM5YWQ5Y2QwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9xdC9Gb250UGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvcXQvRm9udFBsYXRmb3JtRGF0YS5oCkBAIC0yOCw5ICsyOCw3IEBA
CiAjaW5jbHVkZSAiRm9udE9yaWVudGF0aW9uLmgiCiAjaW5jbHVkZSA8UUZvbnQ+CiAjaW5jbHVk
ZSA8UUhhc2g+Ci0jaWYgSEFWRShRUkFXRk9OVCkKICNpbmNsdWRlIDxRUmF3Rm9udD4KLSNlbmRp
ZgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
IApAQCAtNDAsMTMgKzM4LDggQEAgY2xhc3MgRm9udFBsYXRmb3JtRGF0YVByaXZhdGUgOiBwdWJs
aWMgUmVmQ291bnRlZDxGb250UGxhdGZvcm1EYXRhUHJpdmF0ZT4gewogICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKEZvbnRQbGF0Zm9ybURhdGFQcml2YXRlKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgRm9udFBsYXRmb3JtRGF0YVByaXZhdGUoKQotI2lmICFIQVZFKFFS
QVdGT05UKQotICAgICAgICA6IHNpemUoZm9udC5waXhlbFNpemUoKSkKLSAgICAgICAgLCBib2xk
KGZvbnQuYm9sZCgpKQotI2Vsc2UKICAgICAgICAgOiBzaXplKDApCiAgICAgICAgICwgYm9sZChm
YWxzZSkKLSNlbmRpZgogICAgICAgICAsIG9ibGlxdWUoZmFsc2UpCiAgICAgICAgICwgaXNEZWxl
dGVkVmFsdWUoZmFsc2UpCiAgICAgeyB9CkBAIC01OCwyMyArNTEsMTMgQEAgcHVibGljOgogICAg
IHsKIC8vIFRoaXMgaXMgbmVjZXNzYXJ5IGZvciBTVkcgRm9udHMsIHdoaWNoIGFyZSBvbmx5IHN1
cHBvcnRlZCB3aGVuIHVzaW5nIFFSYXdGb250LgogLy8gSXQgaXMgdXNlZCB0byBjb25zdHJ1Y3Qg
dGhlIGFwcHJvcHJpYXRlIHBsYXRmb3JtIGRhdGEgdG8gdXNlIGFzIGEgZmFsbGJhY2suCi0jaWYg
SEFWRShRUkFXRk9OVCkKICAgICAgICAgUUZvbnQgZm9udDsKICAgICAgICAgZm9udC5zZXRCb2xk
KGJvbGQpOwogICAgICAgICBmb250LnNldEl0YWxpYyhvYmxpcXVlKTsKICAgICAgICAgcmF3Rm9u
dCA9IFFSYXdGb250Ojpmcm9tRm9udChmb250LCBRRm9udERhdGFiYXNlOjpBbnkpOwogICAgICAg
ICByYXdGb250LnNldFBpeGVsU2l6ZShzaXplKTsKLSNlbmRpZgogICAgIH0KLSNpZiAhSEFWRShR
UkFXRk9OVCkKLSAgICBGb250UGxhdGZvcm1EYXRhUHJpdmF0ZShjb25zdCBRRm9udCYgZm9udCkK
LSAgICAgICAgOiBmb250KGZvbnQpCi0gICAgICAgICwgc2l6ZShmb250LnBpeGVsU2l6ZSgpKQot
ICAgICAgICAsIGJvbGQoZm9udC5ib2xkKCkpCi0gICAgICAgICwgb2JsaXF1ZShmYWxzZSkKLSAg
ICAgICAgLCBpc0RlbGV0ZWRWYWx1ZShmYWxzZSkKLSAgICB7IH0KLSNlbHNlCisKICAgICBGb250
UGxhdGZvcm1EYXRhUHJpdmF0ZShjb25zdCBRUmF3Rm9udCYgcmF3Rm9udCkKICAgICAgICAgOiBy
YXdGb250KHJhd0ZvbnQpCiAgICAgICAgICwgc2l6ZShyYXdGb250LnBpeGVsU2l6ZSgpKQpAQCAt
ODIsMTYgKzY1LDEyIEBAIHB1YmxpYzoKICAgICAgICAgLCBvYmxpcXVlKGZhbHNlKQogICAgICAg
ICAsIGlzRGVsZXRlZFZhbHVlKGZhbHNlKQogICAgIHsgfQotI2VuZGlmCisKICAgICBGb250UGxh
dGZvcm1EYXRhUHJpdmF0ZShXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpCiAgICAgICAg
IDogaXNEZWxldGVkVmFsdWUodHJ1ZSkKICAgICB7IH0KIAotI2lmICFIQVZFKFFSQVdGT05UKQot
ICAgIFFGb250IGZvbnQ7Ci0jZWxzZQogICAgIFFSYXdGb250IHJhd0ZvbnQ7Ci0jZW5kaWYKICAg
ICBmbG9hdCBzaXplOwogICAgIGJvb2wgYm9sZCA6IDE7CiAgICAgYm9vbCBvYmxpcXVlIDogMTsK
QEAgLTEwMywxNiArODIsMTAgQEAgY2xhc3MgRm9udFBsYXRmb3JtRGF0YSB7CiBwdWJsaWM6CiAg
ICAgRm9udFBsYXRmb3JtRGF0YShmbG9hdCBzaXplLCBib29sIGJvbGQsIGJvb2wgb2JsaXF1ZSk7
CiAgICAgRm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mLCBjb25zdCBBdG9t
aWNTdHJpbmcmIGZhbWlseU5hbWUsIGludCB3b3JkU3BhY2luZyA9IDAsIGludCBsZXR0ZXJTcGFj
aW5nID0gMCk7Ci0jaWYgIUhBVkUoUVJBV0ZPTlQpCi0gICAgRm9udFBsYXRmb3JtRGF0YShjb25z
dCBRRm9udCYgZm9udCkKLSAgICAgICAgOiBtX2RhdGEoYWRvcHRSZWYobmV3IEZvbnRQbGF0Zm9y
bURhdGFQcml2YXRlKGZvbnQpKSkKLSAgICB7IH0KLSNlbHNlCiAgICAgRm9udFBsYXRmb3JtRGF0
YShjb25zdCBGb250UGxhdGZvcm1EYXRhJiwgZmxvYXQgc2l6ZSk7CiAgICAgRm9udFBsYXRmb3Jt
RGF0YShjb25zdCBRUmF3Rm9udCYgcmF3Rm9udCkKICAgICAgICAgOiBtX2RhdGEoYWRvcHRSZWYo
bmV3IEZvbnRQbGF0Zm9ybURhdGFQcml2YXRlKHJhd0ZvbnQpKSkKICAgICB7IH0KLSNlbmRpZgog
ICAgIEZvbnRQbGF0Zm9ybURhdGEoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKQogICAg
ICAgICA6IG1fZGF0YShhZG9wdFJlZihuZXcgRm9udFBsYXRmb3JtRGF0YVByaXZhdGUoKSkpCiAg
ICAgewpAQCAtMTI2LDE1ICs5OSw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fZGF0YSAm
JiBtX2RhdGEtPmlzRGVsZXRlZFZhbHVlOwogICAgIH0KIAotI2lmICFIQVZFKFFSQVdGT05UKQot
ICAgIFFGb250IGZvbnQoKSBjb25zdAotICAgIHsKLSAgICAgICAgUV9BU1NFUlQoIWlzSGFzaFRh
YmxlRGVsZXRlZFZhbHVlKCkpOwotICAgICAgICBpZiAoIW1fZGF0YSkKLSAgICAgICAgICAgIHJl
dHVybiBRRm9udCgpOwotICAgICAgICByZXR1cm4gbV9kYXRhLT5mb250OwotICAgIH0KLSNlbHNl
CiAgICAgUVJhd0ZvbnQgcmF3Rm9udCgpIGNvbnN0CiAgICAgewogICAgICAgICBRX0FTU0VSVCgh
aXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSk7CkBAIC0xNDIsNyArMTA2LDcgQEAgcHVibGljOgog
ICAgICAgICAgICAgcmV0dXJuIFFSYXdGb250KCk7CiAgICAgICAgIHJldHVybiBtX2RhdGEtPnJh
d0ZvbnQ7CiAgICAgfQotI2VuZGlmCisKICAgICBmbG9hdCBzaXplKCkgY29uc3QKICAgICB7CiAg
ICAgICAgIFFfQVNTRVJUKCFpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ZvbnRQbGF0Zm9ybURhdGFRdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9Gb250UGxhdGZvcm1EYXRh
UXQuY3BwCmluZGV4IDQ0YzlmZGZjYWQzNWNiZGM2ZWE0NTExNDYxMTcyNzRhNWU5NmVmMGIuLmMx
YTE1NzQyMjE2NTY5ZTc1YzAzZTJkMzE1MmZjNWY2YWY1NDkxNTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ZvbnRQbGF0Zm9ybURhdGFRdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvRm9udFBsYXRmb3JtRGF0YVF0
LmNwcApAQCAtNjMsMTEgKzYzLDcgQEAgRm9udFBsYXRmb3JtRGF0YTo6Rm9udFBsYXRmb3JtRGF0
YShmbG9hdCBzaXplLCBib29sIGJvbGQsIGJvb2wgb2JsaXF1ZSkKIEZvbnRQbGF0Zm9ybURhdGE6
OkZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwgY29u
c3QgQXRvbWljU3RyaW5nJiBmYW1pbHlOYW1lLCBpbnQgd29yZFNwYWNpbmcsIGludCBsZXR0ZXJT
cGFjaW5nKQogICAgIDogbV9kYXRhKGFkb3B0UmVmKG5ldyBGb250UGxhdGZvcm1EYXRhUHJpdmF0
ZSgpKSkKIHsKLSNpZiAhSEFWRShRUkFXRk9OVCkKLSAgICBRRm9udCYgZm9udCA9IG1fZGF0YS0+
Zm9udDsKLSNlbHNlCiAgICAgUUZvbnQgZm9udDsKLSNlbmRpZgogICAgIGludCByZXF1ZXN0ZWRT
aXplID0gZGVzY3JpcHRpb24uY29tcHV0ZWRQaXhlbFNpemUoKTsKICAgICBmb250LnNldEZhbWls
eShmYW1pbHlOYW1lKTsKICAgICBmb250LnNldFBpeGVsU2l6ZShyZXF1ZXN0ZWRTaXplKTsKQEAg
LTc4LDIwICs3NCwxMyBAQCBGb250UGxhdGZvcm1EYXRhOjpGb250UGxhdGZvcm1EYXRhKGNvbnN0
IEZvbnREZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24sIGNvbnN0IEF0bwogICAgIGZvbnQuc2V0U3R5
bGVTdHJhdGVneShRRm9udDo6Rm9yY2VJbnRlZ2VyTWV0cmljcyk7CiAKICAgICBtX2RhdGEtPmJv
bGQgPSBmb250LmJvbGQoKTsKLSNpZiAhSEFWRShRUkFXRk9OVCkKLSAgICBjb25zdCBib29sIHNt
YWxsQ2FwcyA9IGRlc2NyaXB0aW9uLnNtYWxsQ2FwcygpOwotICAgIGZvbnQuc2V0Q2FwaXRhbGl6
YXRpb24oc21hbGxDYXBzID8gUUZvbnQ6OlNtYWxsQ2FwcyA6IFFGb250OjpNaXhlZENhc2UpOwog
ICAgIC8vIFdlYktpdCBhbGxvd3MgZm9udCBzaXplIHplcm8gYnV0IFFGb250IGRvZXMgbm90LiBX
ZSB3aWxsIHJldHVybgogICAgIC8vIG1fZGF0YS0+c2l6ZSBpZiBhIGZvbnQgc2l6ZSBvZiB6ZXJv
IGlzIHJlcXVlc3RlZCBhbmQgcGl4ZWxTaXplKCkKICAgICAvLyBvdGhlcndpc2UuCiAgICAgbV9k
YXRhLT5zaXplID0gKCFyZXF1ZXN0ZWRTaXplKSA/IHJlcXVlc3RlZFNpemUgOiBmb250LnBpeGVs
U2l6ZSgpOwotI2Vsc2UKICAgICBtX2RhdGEtPnJhd0ZvbnQgPSBRUmF3Rm9udDo6ZnJvbUZvbnQo
Zm9udCwgUUZvbnREYXRhYmFzZTo6QW55KTsKLSAgICBtX2RhdGEtPnNpemUgPSByZXF1ZXN0ZWRT
aXplOwotI2VuZGlmCiB9CiAKLSNpZiBIQVZFKFFSQVdGT05UKQogRm9udFBsYXRmb3JtRGF0YTo6
Rm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250UGxhdGZvcm1EYXRhJiBvdGhlciwgZmxvYXQgc2l6
ZSkKICAgICA6IG1fZGF0YShhZG9wdFJlZihuZXcgRm9udFBsYXRmb3JtRGF0YVByaXZhdGUoKSkp
CiB7CkBAIC0xMDEsNyArOTAsNiBAQCBGb250UGxhdGZvcm1EYXRhOjpGb250UGxhdGZvcm1EYXRh
KGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIG90aGVyLCBmbG9hdCBzaXplKQogICAgIG1fZGF0YS0+
cmF3Rm9udC5zZXRQaXhlbFNpemUoc2l6ZSk7CiAgICAgbV9kYXRhLT5zaXplID0gbV9kYXRhLT5y
YXdGb250LnBpeGVsU2l6ZSgpOwogfQotI2VuZGlmIC8vIEhBVkUoUVJBV0ZPTlQpCiAKIGJvb2wg
Rm9udFBsYXRmb3JtRGF0YTo6b3BlcmF0b3I9PShjb25zdCBGb250UGxhdGZvcm1EYXRhJiBvdGhl
cikgY29uc3QKIHsKQEAgLTExNCwxMSArMTAyLDcgQEAgYm9vbCBGb250UGxhdGZvcm1EYXRhOjpv
cGVyYXRvcj09KGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIG90aGVyKSBjb25zdAogICAgIGNvbnN0
IGJvb2wgZXF1YWxzID0gKG1fZGF0YS0+c2l6ZSA9PSBvdGhlci5tX2RhdGEtPnNpemUKICAgICAg
ICAgICAgICAgICAgICAgICAgICAmJiBtX2RhdGEtPmJvbGQgPT0gb3RoZXIubV9kYXRhLT5ib2xk
CiAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgbV9kYXRhLT5vYmxpcXVlID09IG90aGVyLm1f
ZGF0YS0+b2JsaXF1ZQotI2lmICFIQVZFKFFSQVdGT05UKQotICAgICAgICAgICAgICAgICAgICAg
ICAgICYmIG1fZGF0YS0+Zm9udCA9PSBvdGhlci5tX2RhdGEtPmZvbnQpOwotI2Vsc2UKICAgICAg
ICAgICAgICAgICAgICAgICAgICAmJiBtX2RhdGEtPnJhd0ZvbnQgPT0gb3RoZXIubV9kYXRhLT5y
YXdGb250KTsKLSNlbmRpZgogICAgIHJldHVybiBlcXVhbHM7CiB9CiAKQEAgLTEyOCwxNSArMTEy
LDkgQEAgdW5zaWduZWQgRm9udFBsYXRmb3JtRGF0YTo6aGFzaCgpIGNvbnN0CiAgICAgICAgIHJl
dHVybiAwOwogICAgIGlmIChtX2RhdGEtPmlzRGVsZXRlZFZhbHVlKQogICAgICAgICByZXR1cm4g
MTsKLSNpZiAhSEFWRShRUkFXRk9OVCkKLSAgICByZXR1cm4gKHFIYXNoKG1fZGF0YS0+Zm9udC50
b1N0cmluZygpKSBeIHFIYXNoKG1fZGF0YS0+Ym9sZCkKLSAgICAgICAgICAgIF4gcUhhc2gobV9k
YXRhLT5vYmxpcXVlKSkKLSAgICAgICAgICAgIF4gcUhhc2goKnJlaW50ZXJwcmV0X2Nhc3Q8cXVp
bnQzMio+KCZtX2RhdGEtPnNpemUpKTsKLSNlbHNlCiAgICAgcmV0dXJuIHFIYXNoKG1fZGF0YS0+
cmF3Rm9udC5mYW1pbHlOYW1lKCkpIF4gcUhhc2gobV9kYXRhLT5yYXdGb250LnN0eWxlKCkpCiAg
ICAgICAgICAgICBeIHFIYXNoKG1fZGF0YS0+cmF3Rm9udC53ZWlnaHQoKSkKICAgICAgICAgICAg
IF4gcUhhc2goKnJlaW50ZXJwcmV0X2Nhc3Q8cXVpbnQzMio+KCZtX2RhdGEtPnNpemUpKTsKLSNl
bmRpZgogfQogCiAjaWZuZGVmIE5ERUJVRwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvcXQvRm9udFF0NC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9xdC9Gb250UXQ0LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjMy
YjhmZmI0NzViM2MwNzg4NGI1ZmMyMDk4ZDQyOTI2YzdlNGQ5ZS4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9xdC9Gb250UXQ0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQzMiArMCwwIEBACi0vKgot
ICAgIENvcHlyaWdodCAoQykgMjAwOCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNp
ZGlhcnkoLWllcykKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTAgSG9sZ2VyIEhhbnMgUGV0
ZXIgRnJleXRoZXIKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDkgRGlyayBTY2h1bHplIDxrcml0QHdl
YmtpdC5vcmc+Ci0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAg
ICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgotICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gICAgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0g
ICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElm
IG5vdCwgd3JpdGUgdG8KLSAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMw
MSwgVVNBLgotKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkZvbnQuaCIKLQot
I2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgotI2luY2x1ZGUgIkZvbnREZXNjcmlwdGlvbi5o
IgotI2luY2x1ZGUgIkZvbnRGYWxsYmFja0xpc3QuaCIKLSNpbmNsdWRlICJGb250U2VsZWN0b3Iu
aCIKLSNpbmNsdWRlICJHbHlwaEJ1ZmZlci5oIgotI2luY2x1ZGUgIkdyYWRpZW50LmgiCi0jaW5j
bHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCi0jaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKLSNp
bmNsdWRlICJQYXR0ZXJuLmgiCi0jaW5jbHVkZSAiU2hhZG93Qmx1ci5oIgotI2luY2x1ZGUgIlRl
eHRSdW4uaCIKLQotI2luY2x1ZGUgPFFCcnVzaD4KLSNpbmNsdWRlIDxRRm9udEluZm8+Ci0jaW5j
bHVkZSA8UUZvbnRNZXRyaWNzPgotI2luY2x1ZGUgPFFQYWludGVyPgotI2luY2x1ZGUgPFFQYWlu
dGVyUGF0aD4KLSNpbmNsdWRlIDxRUGVuPgotI2luY2x1ZGUgPFFUZXh0TGF5b3V0PgotI2luY2x1
ZGUgPGxpbWl0cy5oPgotI2luY2x1ZGUgPHFhbGdvcml0aG1zLmg+Ci0jaW5jbHVkZSA8cWRlYnVn
Lmg+Ci0KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdGF0aWMgY29uc3QgUVN0cmluZyBmcm9t
UmF3RGF0YVdpdGhvdXRSZWYoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGludCBzdGFydCA9IDAsIGlu
dCBsZW4gPSAtMSkKLXsKLSAgICBpZiAobGVuIDwgMCkKLSAgICAgICAgbGVuID0gc3RyaW5nLmxl
bmd0aCgpIC0gc3RhcnQ7Ci0gICAgUV9BU1NFUlQoc3RhcnQgKyBsZW4gPD0gc3RyaW5nLmxlbmd0
aCgpKTsKLQotICAgIC8vIFdlIGRvbid0IGRldGFjaC4gVGhpcyBhc3N1bWVzIHRoZSBXZWJDb3Jl
IHN0cmluZyBkYXRhIHdpbGwgc3RheSB2YWxpZCBmb3IgdGhlCi0gICAgLy8gbGlmZXRpbWUgb2Yg
dGhlIFFTdHJpbmcgd2UgcGFzcyBiYWNrLCBzaW5jZSB3ZSBkb24ndCByZWYgdGhlIFdlYkNvcmUg
c3RyaW5nLgotICAgIHJldHVybiBRU3RyaW5nOjpmcm9tUmF3RGF0YShyZWludGVycHJldF9jYXN0
PGNvbnN0IFFDaGFyKj4oc3RyaW5nLmNoYXJhY3RlcnMoKSArIHN0YXJ0KSwgbGVuKTsKLX0KLQot
c3RhdGljIFFUZXh0TGluZSBzZXR1cExheW91dChRVGV4dExheW91dCogbGF5b3V0LCBjb25zdCBU
ZXh0UnVuJiBzdHlsZSkKLXsKLSAgICBpbnQgZmxhZ3MgPSBzdHlsZS5ydGwoKSA/IFF0OjpUZXh0
Rm9yY2VSaWdodFRvTGVmdCA6IFF0OjpUZXh0Rm9yY2VMZWZ0VG9SaWdodDsKLSAgICBpZiAoc3R5
bGUuZXhwYW5zaW9uKCkpCi0gICAgICAgIGZsYWdzIHw9IFF0OjpUZXh0SnVzdGlmaWNhdGlvbkZv
cmNlZDsKLSAgICBsYXlvdXQtPnNldEZsYWdzKGZsYWdzKTsKLSAgICBsYXlvdXQtPmJlZ2luTGF5
b3V0KCk7Ci0gICAgUVRleHRMaW5lIGxpbmUgPSBsYXlvdXQtPmNyZWF0ZUxpbmUoKTsKLSAgICBs
aW5lLnNldExpbmVXaWR0aChJTlRfTUFYIC8gMjU2KTsKLSAgICBpZiAoc3R5bGUuZXhwYW5zaW9u
KCkpCi0gICAgICAgIGxpbmUuc2V0TGluZVdpZHRoKGxpbmUubmF0dXJhbFRleHRXaWR0aCgpICsg
c3R5bGUuZXhwYW5zaW9uKCkpOwotICAgIGxheW91dC0+ZW5kTGF5b3V0KCk7Ci0gICAgcmV0dXJu
IGxpbmU7Ci19Ci0KLXN0YXRpYyBRUGVuIGZpbGxQZW5Gb3JDb250ZXh0KEdyYXBoaWNzQ29udGV4
dCogY3R4KQotewotICAgIGlmIChjdHgtPmZpbGxHcmFkaWVudCgpKSB7Ci0gICAgICAgIFFCcnVz
aCBicnVzaCgqY3R4LT5maWxsR3JhZGllbnQoKS0+cGxhdGZvcm1HcmFkaWVudCgpKTsKLSAgICAg
ICAgYnJ1c2guc2V0VHJhbnNmb3JtKGN0eC0+ZmlsbEdyYWRpZW50KCktPmdyYWRpZW50U3BhY2VU
cmFuc2Zvcm0oKSk7Ci0gICAgICAgIHJldHVybiBRUGVuKGJydXNoLCAwKTsKLSAgICB9Ci0KLSAg
ICBpZiAoY3R4LT5maWxsUGF0dGVybigpKSB7Ci0gICAgICAgIHJldHVybiBRUGVuKFFCcnVzaChj
dHgtPmZpbGxQYXR0ZXJuKCktPmNyZWF0ZVBsYXRmb3JtUGF0dGVybigpKSwgMCk7Ci0gICAgfQot
Ci0gICAgcmV0dXJuIFFQZW4oUUNvbG9yKGN0eC0+ZmlsbENvbG9yKCkpKTsKLX0KLQotc3RhdGlj
IFFQZW4gc3Ryb2tlUGVuRm9yQ29udGV4dChHcmFwaGljc0NvbnRleHQqIGN0eCkKLXsKLSAgICBp
ZiAoY3R4LT5zdHJva2VHcmFkaWVudCgpKSB7Ci0gICAgICAgIFFCcnVzaCBicnVzaCgqY3R4LT5z
dHJva2VHcmFkaWVudCgpLT5wbGF0Zm9ybUdyYWRpZW50KCkpOwotICAgICAgICBicnVzaC5zZXRU
cmFuc2Zvcm0oY3R4LT5zdHJva2VHcmFkaWVudCgpLT5ncmFkaWVudFNwYWNlVHJhbnNmb3JtKCkp
OwotICAgICAgICByZXR1cm4gUVBlbihicnVzaCwgY3R4LT5zdHJva2VUaGlja25lc3MoKSk7Ci0g
ICAgfQotCi0gICAgaWYgKGN0eC0+c3Ryb2tlUGF0dGVybigpKSB7Ci0gICAgICAgIFFCcnVzaCBi
cnVzaChjdHgtPnN0cm9rZVBhdHRlcm4oKS0+Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKCkpOwotICAg
ICAgICByZXR1cm4gUVBlbihicnVzaCwgY3R4LT5zdHJva2VUaGlja25lc3MoKSk7Ci0gICAgfQot
Ci0gICAgcmV0dXJuIFFQZW4oUUNvbG9yKGN0eC0+c3Ryb2tlQ29sb3IoKSksIGN0eC0+c3Ryb2tl
VGhpY2tuZXNzKCkpOwotfQotCi1zdGF0aWMgdm9pZCBkcmF3VGV4dENvbW1vbihHcmFwaGljc0Nv
bnRleHQqIGN0eCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwg
aW50IGZyb20sIGludCB0bywgY29uc3QgUUZvbnQmIGZvbnQsIGJvb2wgaXNDb21wbGV4VGV4dCkK
LXsKLSAgICBpZiAodG8gPCAwKQotICAgICAgICB0byA9IHJ1bi5sZW5ndGgoKTsKLQotICAgIFFQ
YWludGVyKiBwID0gY3R4LT5wbGF0Zm9ybUNvbnRleHQoKTsKLQotICAgIFFQZW4gdGV4dEZpbGxQ
ZW47Ci0gICAgaWYgKGN0eC0+dGV4dERyYXdpbmdNb2RlKCkgJiBUZXh0TW9kZUZpbGwpCi0gICAg
ICAgIHRleHRGaWxsUGVuID0gZmlsbFBlbkZvckNvbnRleHQoY3R4KTsKLQotICAgIFFQZW4gdGV4
dFN0cm9rZVBlbjsKLSAgICBpZiAoY3R4LT50ZXh0RHJhd2luZ01vZGUoKSAmIFRleHRNb2RlU3Ry
b2tlKQotICAgICAgICB0ZXh0U3Ryb2tlUGVuID0gc3Ryb2tlUGVuRm9yQ29udGV4dChjdHgpOwot
Ci0gICAgU3RyaW5nIHNhbml0aXplZCA9IEZvbnQ6Om5vcm1hbGl6ZVNwYWNlcyhydW4uY2hhcmFj
dGVycygpLCBydW4ubGVuZ3RoKCkpOwotICAgIFFTdHJpbmcgc3RyaW5nID0gZnJvbVJhd0RhdGFX
aXRob3V0UmVmKHNhbml0aXplZCk7Ci0gICAgUVBvaW50RiBwdChwb2ludC54KCksIHBvaW50Lnko
KSk7Ci0KLSAgICBpZiAoZnJvbSA+IDAgfHwgdG8gPCBydW4ubGVuZ3RoKCkpIHsKLSAgICAgICAg
aWYgKGlzQ29tcGxleFRleHQpIHsKLSAgICAgICAgICAgIFFUZXh0TGF5b3V0IGxheW91dChzdHJp
bmcsIGZvbnQpOwotICAgICAgICAgICAgUVRleHRMaW5lIGxpbmUgPSBzZXR1cExheW91dCgmbGF5
b3V0LCBydW4pOwotICAgICAgICAgICAgZmxvYXQgeDEgPSBsaW5lLmN1cnNvclRvWChmcm9tKTsK
LSAgICAgICAgICAgIGZsb2F0IHgyID0gbGluZS5jdXJzb3JUb1godG8pOwotICAgICAgICAgICAg
aWYgKHgyIDwgeDEpCi0gICAgICAgICAgICAgICAgcVN3YXAoeDEsIHgyKTsKLQotICAgICAgICAg
ICAgUUZvbnRNZXRyaWNzIGZtKGZvbnQpOwotICAgICAgICAgICAgaW50IGFzY2VudCA9IGZtLmFz
Y2VudCgpOwotICAgICAgICAgICAgUVJlY3RGIGJvdW5kaW5nUmVjdChwb2ludC54KCkgKyB4MSwg
cG9pbnQueSgpIC0gYXNjZW50LCB4MiAtIHgxLCBmbS5oZWlnaHQoKSk7Ci0gICAgICAgICAgICBR
UmVjdEYgY2xpcCA9IGJvdW5kaW5nUmVjdDsKLQotICAgICAgICAgICAgU2hhZG93Qmx1ciogY3R4
U2hhZG93ID0gY3R4LT5zaGFkb3dCbHVyKCk7Ci0gICAgICAgICAgICBpZiAoY3R4U2hhZG93LT50
eXBlKCkgIT0gU2hhZG93Qmx1cjo6Tm9TaGFkb3cpIHsKLSAgICAgICAgICAgICAgICBjb25zdCBR
UG9pbnRGIHNoYWRvd09mZnNldChjdHgtPnN0YXRlKCkuc2hhZG93T2Zmc2V0LndpZHRoKCksIGN0
eC0+c3RhdGUoKS5zaGFkb3dPZmZzZXQuaGVpZ2h0KCkpOwotICAgICAgICAgICAgICAgIHFyZWFs
IGR4MSA9IDAsIGR4MiA9IDAsIGR5MSA9IDAsIGR5MiA9IDA7Ci0gICAgICAgICAgICAgICAgaWYg
KHNoYWRvd09mZnNldC54KCkgPiAwKQotICAgICAgICAgICAgICAgICAgICBkeDIgPSBzaGFkb3dP
ZmZzZXQueCgpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgZHgx
ID0gLXNoYWRvd09mZnNldC54KCk7Ci0gICAgICAgICAgICAgICAgaWYgKHNoYWRvd09mZnNldC55
KCkgPiAwKQotICAgICAgICAgICAgICAgICAgICBkeTIgPSBzaGFkb3dPZmZzZXQueSgpOwotICAg
ICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgZHkxID0gLXNoYWRvd09mZnNl
dC55KCk7Ci0gICAgICAgICAgICAgICAgLy8gZXhwYW5kIHRoZSBjbGlwIHJlY3QgdG8gaW5jbHVk
ZSB0aGUgdGV4dCBzaGFkb3cgYXMgd2VsbAotICAgICAgICAgICAgICAgIGNvbnN0IGZsb2F0IGJs
dXJEaXN0YW5jZSA9IGN0eC0+c3RhdGUoKS5zaGFkb3dCbHVyOwotICAgICAgICAgICAgICAgIGNs
aXAuYWRqdXN0KGR4MSwgZHgyLCBkeTEsIGR5Mik7Ci0gICAgICAgICAgICAgICAgY2xpcC5hZGp1
c3QoLWJsdXJEaXN0YW5jZSwgLWJsdXJEaXN0YW5jZSwgYmx1ckRpc3RhbmNlLCBibHVyRGlzdGFu
Y2UpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcC0+c2F2ZSgpOwotICAgICAgICAgICAg
cC0+c2V0Q2xpcFJlY3QoY2xpcC50b1JlY3QoKSwgUXQ6OkludGVyc2VjdENsaXApOwotICAgICAg
ICAgICAgcHQuc2V0WShwdC55KCkgLSBhc2NlbnQpOwotCi0gICAgICAgICAgICBpZiAoY3R4U2hh
ZG93LT50eXBlKCkgIT0gU2hhZG93Qmx1cjo6Tm9TaGFkb3cpIHsKLSAgICAgICAgICAgICAgICBT
aGFkb3dCbHVyKiBjdHhTaGFkb3cgPSBjdHgtPnNoYWRvd0JsdXIoKTsKLSAgICAgICAgICAgICAg
ICBpZiAoY3R4U2hhZG93LT50eXBlKCkgIT0gU2hhZG93Qmx1cjo6Qmx1clNoYWRvdwotICAgICAg
ICAgICAgICAgICAgICAmJiAoIWN0eFNoYWRvdy0+c2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoKSB8
fCBjdHgtPmdldENUTSgpLmlzSWRlbnRpdHkoKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgcC0+
c2F2ZSgpOwotICAgICAgICAgICAgICAgICAgICBwLT5zZXRQZW4oY3R4LT5zdGF0ZSgpLnNoYWRv
d0NvbG9yKTsKLSAgICAgICAgICAgICAgICAgICAgcC0+dHJhbnNsYXRlKFFQb2ludEYoY3R4LT5z
dGF0ZSgpLnNoYWRvd09mZnNldC53aWR0aCgpLCBjdHgtPnN0YXRlKCkuc2hhZG93T2Zmc2V0Lmhl
aWdodCgpKSk7Ci0gICAgICAgICAgICAgICAgICAgIGxpbmUuZHJhdyhwLCBwdCk7Ci0gICAgICAg
ICAgICAgICAgICAgIHAtPnJlc3RvcmUoKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgICAgICAgICBHcmFwaGljc0NvbnRleHQqIHNoYWRvd0NvbnRleHQgPSBjdHhTaGFk
b3ctPmJlZ2luU2hhZG93TGF5ZXIoY3R4LCBib3VuZGluZ1JlY3QpOwotICAgICAgICAgICAgICAg
ICAgICBpZiAoc2hhZG93Q29udGV4dCkgewotICAgICAgICAgICAgICAgICAgICAgICAgUVBhaW50
ZXIqIHNoYWRvd1BhaW50ZXIgPSBzaGFkb3dDb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIFNpbmNlIGl0IHdpbGwgYmUgYmx1cnJlZCBhbnl3YXks
IHdlIGRvbid0IGNhcmUgYWJvdXQgcmVuZGVyIGhpbnRzLgotICAgICAgICAgICAgICAgICAgICAg
ICAgc2hhZG93UGFpbnRlci0+c2V0Rm9udChwLT5mb250KCkpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgc2hhZG93UGFpbnRlci0+c2V0UGVuKGN0eC0+c3RhdGUoKS5zaGFkb3dDb2xvcik7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBsaW5lLmRyYXcoc2hhZG93UGFpbnRlciwgcHQpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgY3R4U2hhZG93LT5lbmRTaGFkb3dMYXllcihjdHgpOwotICAg
ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAg
ICAgICAgICAgcC0+c2V0UGVuKHRleHRGaWxsUGVuKTsKLSAgICAgICAgICAgIGxpbmUuZHJhdyhw
LCBwdCk7Ci0gICAgICAgICAgICBwLT5yZXN0b3JlKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIH0KLSAgICAgICAgaW50IHNraXBXaWR0aCA9IFFGb250TWV0cmljcyhmb250KS53aWR0
aChzdHJpbmcsIGZyb20sIFF0OjpUZXh0QnlwYXNzU2hhcGluZyk7Ci0gICAgICAgIHB0LnNldFgo
cHQueCgpICsgc2tpcFdpZHRoKTsKLSAgICAgICAgc3RyaW5nID0gZnJvbVJhd0RhdGFXaXRob3V0
UmVmKHNhbml0aXplZCwgZnJvbSwgdG8gLSBmcm9tKTsKLSAgICB9Ci0KLSAgICBwLT5zZXRGb250
KGZvbnQpOwotCi0gICAgaW50IGZsYWdzID0gcnVuLnJ0bCgpID8gUXQ6OlRleHRGb3JjZVJpZ2h0
VG9MZWZ0IDogUXQ6OlRleHRGb3JjZUxlZnRUb1JpZ2h0OwotICAgIGlmICghaXNDb21wbGV4VGV4
dCAmJiAhKGN0eC0+dGV4dERyYXdpbmdNb2RlKCkgJiBUZXh0TW9kZVN0cm9rZSkpCi0gICAgICAg
IGZsYWdzIHw9IFF0OjpUZXh0QnlwYXNzU2hhcGluZzsKLQotICAgIFFQYWludGVyUGF0aCB0ZXh0
U3Ryb2tlUGF0aDsKLSAgICBpZiAoY3R4LT50ZXh0RHJhd2luZ01vZGUoKSAmIFRleHRNb2RlU3Ry
b2tlKQotICAgICAgICB0ZXh0U3Ryb2tlUGF0aC5hZGRUZXh0KHB0LCBmb250LCBzdHJpbmcpOwot
Ci0gICAgU2hhZG93Qmx1ciogY3R4U2hhZG93ID0gY3R4LT5zaGFkb3dCbHVyKCk7Ci0gICAgaWYg
KGN0eC0+aGFzU2hhZG93KCkgJiYgY3R4U2hhZG93LT50eXBlKCkgIT0gU2hhZG93Qmx1cjo6Tm9T
aGFkb3cpIHsKLSAgICAgICAgaWYgKGN0eC0+dGV4dERyYXdpbmdNb2RlKCkgJiBUZXh0TW9kZUZp
bGwpIHsKLSAgICAgICAgICAgIGlmIChjdHhTaGFkb3ctPnR5cGUoKSAhPSBTaGFkb3dCbHVyOjpC
bHVyU2hhZG93KSB7Ci0gICAgICAgICAgICAgICAgcC0+c2F2ZSgpOwotICAgICAgICAgICAgICAg
IHAtPnNldFBlbihjdHgtPnN0YXRlKCkuc2hhZG93Q29sb3IpOwotICAgICAgICAgICAgICAgIHAt
PnRyYW5zbGF0ZShRUG9pbnRGKGN0eC0+c3RhdGUoKS5zaGFkb3dPZmZzZXQud2lkdGgoKSwgY3R4
LT5zdGF0ZSgpLnNoYWRvd09mZnNldC5oZWlnaHQoKSkpOwotICAgICAgICAgICAgICAgIHAtPmRy
YXdUZXh0KHB0LCBzdHJpbmcsIGZsYWdzLCBydW4uZXhwYW5zaW9uKCkpOwotICAgICAgICAgICAg
ICAgIHAtPnJlc3RvcmUoKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAg
UUZvbnRNZXRyaWNzIGZtKGZvbnQpOwotICAgICAgICAgICAgICAgIFFSZWN0RiBib3VuZGluZ1Jl
Y3QocHQueCgpLCBwb2ludC55KCkgLSBmbS5hc2NlbnQoKSwgZm0ud2lkdGgoc3RyaW5nLCAtMSwg
ZmxhZ3MpLCBmbS5oZWlnaHQoKSk7Ci0gICAgICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0KiBz
aGFkb3dDb250ZXh0ID0gY3R4U2hhZG93LT5iZWdpblNoYWRvd0xheWVyKGN0eCwgYm91bmRpbmdS
ZWN0KTsKLSAgICAgICAgICAgICAgICBpZiAoc2hhZG93Q29udGV4dCkgewotICAgICAgICAgICAg
ICAgICAgICBRUGFpbnRlciogc2hhZG93UGFpbnRlciA9IHNoYWRvd0NvbnRleHQtPnBsYXRmb3Jt
Q29udGV4dCgpOwotICAgICAgICAgICAgICAgICAgICAvLyBTaW5jZSBpdCB3aWxsIGJlIGJsdXJy
ZWQgYW55d2F5LCB3ZSBkb24ndCBjYXJlIGFib3V0IHJlbmRlciBoaW50cy4KLSAgICAgICAgICAg
ICAgICAgICAgc2hhZG93UGFpbnRlci0+c2V0Rm9udChwLT5mb250KCkpOwotICAgICAgICAgICAg
ICAgICAgICBzaGFkb3dQYWludGVyLT5zZXRQZW4oY3R4LT5zdGF0ZSgpLnNoYWRvd0NvbG9yKTsK
LSAgICAgICAgICAgICAgICAgICAgc2hhZG93UGFpbnRlci0+ZHJhd1RleHQocHQsIHN0cmluZywg
ZmxhZ3MsIHJ1bi5leHBhbnNpb24oKSk7Ci0gICAgICAgICAgICAgICAgICAgIGN0eFNoYWRvdy0+
ZW5kU2hhZG93TGF5ZXIoY3R4KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgIH0gZWxzZSBpZiAoY3R4LT50ZXh0RHJhd2luZ01vZGUoKSAmIFRleHRNb2RlU3Ryb2tl
KSB7Ci0gICAgICAgICAgICBpZiAoY3R4U2hhZG93LT50eXBlKCkgIT0gU2hhZG93Qmx1cjo6Qmx1
clNoYWRvdykgewotICAgICAgICAgICAgICAgIGNvbnN0IFFQb2ludEYgc2hhZG93T2Zmc2V0KGN0
eC0+c3RhdGUoKS5zaGFkb3dPZmZzZXQud2lkdGgoKSwgY3R4LT5zdGF0ZSgpLnNoYWRvd09mZnNl
dC5oZWlnaHQoKSk7Ci0gICAgICAgICAgICAgICAgcC0+dHJhbnNsYXRlKHNoYWRvd09mZnNldCk7
Ci0gICAgICAgICAgICAgICAgcC0+c3Ryb2tlUGF0aCh0ZXh0U3Ryb2tlUGF0aCwgUVBlbihjdHgt
PnN0YXRlKCkuc2hhZG93Q29sb3IpKTsKLSAgICAgICAgICAgICAgICBwLT50cmFuc2xhdGUoLXNo
YWRvd09mZnNldCk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIFFGb250
TWV0cmljcyBmbShmb250KTsKLSAgICAgICAgICAgICAgICBRUmVjdEYgYm91bmRpbmdSZWN0KHB0
LngoKSwgcG9pbnQueSgpIC0gZm0uYXNjZW50KCksIGZtLndpZHRoKHN0cmluZywgLTEsIGZsYWdz
KSwgZm0uaGVpZ2h0KCkpOwotICAgICAgICAgICAgICAgIEdyYXBoaWNzQ29udGV4dCogc2hhZG93
Q29udGV4dCA9IGN0eFNoYWRvdy0+YmVnaW5TaGFkb3dMYXllcihjdHgsIGJvdW5kaW5nUmVjdCk7
Ci0gICAgICAgICAgICAgICAgaWYgKHNoYWRvd0NvbnRleHQpIHsKLSAgICAgICAgICAgICAgICAg
ICAgUVBhaW50ZXIqIHNoYWRvd1BhaW50ZXIgPSBzaGFkb3dDb250ZXh0LT5wbGF0Zm9ybUNvbnRl
eHQoKTsKLSAgICAgICAgICAgICAgICAgICAgLy8gU2luY2UgaXQgd2lsbCBiZSBibHVycmVkIGFu
eXdheSwgd2UgZG9uJ3QgY2FyZSBhYm91dCByZW5kZXIgaGludHMuCi0gICAgICAgICAgICAgICAg
ICAgIHNoYWRvd1BhaW50ZXItPnNldEZvbnQocC0+Zm9udCgpKTsKLSAgICAgICAgICAgICAgICAg
ICAgc2hhZG93UGFpbnRlci0+c3Ryb2tlUGF0aCh0ZXh0U3Ryb2tlUGF0aCwgUVBlbihjdHgtPnN0
YXRlKCkuc2hhZG93Q29sb3IpKTsKLSAgICAgICAgICAgICAgICAgICAgY3R4U2hhZG93LT5lbmRT
aGFkb3dMYXllcihjdHgpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfQotICAgIH0KLQotICAgIGlmIChjdHgtPnRleHREcmF3aW5nTW9kZSgpICYgVGV4dE1vZGVT
dHJva2UpCi0gICAgICAgIHAtPnN0cm9rZVBhdGgodGV4dFN0cm9rZVBhdGgsIHRleHRTdHJva2VQ
ZW4pOwotCi0gICAgaWYgKGN0eC0+dGV4dERyYXdpbmdNb2RlKCkgJiBUZXh0TW9kZUZpbGwpIHsK
LSAgICAgICAgUVBlbiBwcmV2aW91c1BlbiA9IHAtPnBlbigpOwotICAgICAgICBwLT5zZXRQZW4o
dGV4dEZpbGxQZW4pOwotICAgICAgICBwLT5kcmF3VGV4dChwdCwgc3RyaW5nLCBmbGFncywgcnVu
LmV4cGFuc2lvbigpKTsKLSAgICAgICAgcC0+c2V0UGVuKHByZXZpb3VzUGVuKTsKLSAgICB9Ci19
Ci0KLXZvaWQgRm9udDo6ZHJhd0NvbXBsZXhUZXh0KEdyYXBoaWNzQ29udGV4dCogY3R4LCBjb25z
dCBUZXh0UnVuJiBydW4sIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBpbnQgZnJvbSwgaW50IHRv
KSBjb25zdAotewotICAgIGRyYXdUZXh0Q29tbW9uKGN0eCwgcnVuLCBwb2ludCwgZnJvbSwgdG8s
IGZvbnQoKSwgLyogaXNDb21wbGV4VGV4dCA9ICovdHJ1ZSk7Ci19Ci0KLWZsb2F0IEZvbnQ6OmZs
b2F0V2lkdGhGb3JDb21wbGV4VGV4dChjb25zdCBUZXh0UnVuJiBydW4sIEhhc2hTZXQ8Y29uc3Qg
U2ltcGxlRm9udERhdGEqPiosIEdseXBoT3ZlcmZsb3cqKSBjb25zdAotewotICAgIGlmICghcHJp
bWFyeUZvbnQoKS0+cGxhdGZvcm1EYXRhKCkuc2l6ZSgpKQotICAgICAgICByZXR1cm4gMDsKLQot
ICAgIGlmICghcnVuLmxlbmd0aCgpKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIGlmIChydW4u
bGVuZ3RoKCkgPT0gMSAmJiB0cmVhdEFzU3BhY2UocnVuWzBdKSkKLSAgICAgICAgcmV0dXJuIFFG
b250TWV0cmljcyhmb250KCkpLndpZHRoKHNwYWNlKSArIHJ1bi5leHBhbnNpb24oKTsKLQotICAg
IFN0cmluZyBzYW5pdGl6ZWQgPSBGb250Ojpub3JtYWxpemVTcGFjZXMocnVuLmNoYXJhY3RlcnMo
KSwgcnVuLmxlbmd0aCgpKTsKLSAgICBRU3RyaW5nIHN0cmluZyA9IGZyb21SYXdEYXRhV2l0aG91
dFJlZihzYW5pdGl6ZWQpOwotCi0gICAgaW50IHcgPSBRRm9udE1ldHJpY3MoZm9udCgpKS53aWR0
aChzdHJpbmcpOwotICAgIC8vIFdlYktpdCBleHBlY3RzIHVzIHRvIGlnbm9yZSB3b3JkIHNwYWNp
bmcgb24gdGhlIGZpcnN0IGNoYXJhY3RlciAoYXMgb3Bwb3NlZCB0byB3aGF0IFF0IGRvZXMpCi0g
ICAgaWYgKHRyZWF0QXNTcGFjZShydW5bMF0pKQotICAgICAgICB3IC09IG1fd29yZFNwYWNpbmc7
Ci0KLSAgICByZXR1cm4gdyArIHJ1bi5leHBhbnNpb24oKTsKLX0KLQotaW50IEZvbnQ6Om9mZnNl
dEZvclBvc2l0aW9uRm9yQ29tcGxleFRleHQoY29uc3QgVGV4dFJ1biYgcnVuLCBmbG9hdCBwb3Np
dGlvbiwgYm9vbCkgY29uc3QKLXsKLSAgICBTdHJpbmcgc2FuaXRpemVkID0gRm9udDo6bm9ybWFs
aXplU3BhY2VzKHJ1bi5jaGFyYWN0ZXJzKCksIHJ1bi5sZW5ndGgoKSk7Ci0gICAgUVN0cmluZyBz
dHJpbmcgPSBmcm9tUmF3RGF0YVdpdGhvdXRSZWYoc2FuaXRpemVkKTsKLQotICAgIFFUZXh0TGF5
b3V0IGxheW91dChzdHJpbmcsIGZvbnQoKSk7Ci0gICAgUVRleHRMaW5lIGxpbmUgPSBzZXR1cExh
eW91dCgmbGF5b3V0LCBydW4pOwotICAgIHJldHVybiBsaW5lLnhUb0N1cnNvcihwb3NpdGlvbik7
Ci19Ci0KLUZsb2F0UmVjdCBGb250OjpzZWxlY3Rpb25SZWN0Rm9yQ29tcGxleFRleHQoY29uc3Qg
VGV4dFJ1biYgcnVuLCBjb25zdCBGbG9hdFBvaW50JiBwdCwgaW50IGgsIGludCBmcm9tLCBpbnQg
dG8pIGNvbnN0Ci17Ci0gICAgU3RyaW5nIHNhbml0aXplZCA9IEZvbnQ6Om5vcm1hbGl6ZVNwYWNl
cyhydW4uY2hhcmFjdGVycygpLCBydW4ubGVuZ3RoKCkpOwotICAgIFFTdHJpbmcgc3RyaW5nID0g
ZnJvbVJhd0RhdGFXaXRob3V0UmVmKHNhbml0aXplZCk7Ci0KLSAgICBRVGV4dExheW91dCBsYXlv
dXQoc3RyaW5nLCBmb250KCkpOwotICAgIFFUZXh0TGluZSBsaW5lID0gc2V0dXBMYXlvdXQoJmxh
eW91dCwgcnVuKTsKLQotICAgIGZsb2F0IHgxID0gbGluZS5jdXJzb3JUb1goZnJvbSk7Ci0gICAg
ZmxvYXQgeDIgPSBsaW5lLmN1cnNvclRvWCh0byk7Ci0gICAgaWYgKHgyIDwgeDEpCi0gICAgICAg
IHFTd2FwKHgxLCB4Mik7Ci0KLSAgICByZXR1cm4gRmxvYXRSZWN0KHB0LngoKSArIHgxLCBwdC55
KCksIHgyIC0geDEsIGgpOwotfQotCi1ib29sIEZvbnQ6OmNhblJldHVybkZhbGxiYWNrRm9udHNG
b3JDb21wbGV4VGV4dCgpCi17Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi12b2lkIEZvbnQ6OmRy
YXdFbXBoYXNpc01hcmtzRm9yQ29tcGxleFRleHQoR3JhcGhpY3NDb250ZXh0KiAvKiBjb250ZXh0
ICovLCBjb25zdCBUZXh0UnVuJiAvKiBydW4gKi8sIGNvbnN0IEF0b21pY1N0cmluZyYgLyogbWFy
ayAqLywgY29uc3QgRmxvYXRQb2ludCYgLyogcG9pbnQgKi8sIGludCAvKiBmcm9tICovLCBpbnQg
LyogdG8gKi8pIGNvbnN0Ci17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBGb250
OjpkcmF3U2ltcGxlVGV4dChHcmFwaGljc0NvbnRleHQqIGN0eCwgY29uc3QgVGV4dFJ1biYgcnVu
LCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgaW50IGZyb20sIGludCB0bykgY29uc3QKLXsKLSAg
ICBkcmF3VGV4dENvbW1vbihjdHgsIHJ1biwgcG9pbnQsIGZyb20sIHRvLCBmb250KCksIC8qIGlz
Q29tcGxleFRleHQgPSAqL2ZhbHNlKTsKLX0KLQotaW50IEZvbnQ6Om9mZnNldEZvclBvc2l0aW9u
Rm9yU2ltcGxlVGV4dChjb25zdCBUZXh0UnVuJiBydW4sIGZsb2F0IHBvc2l0aW9uLCBib29sIGlu
Y2x1ZGVQYXJ0aWFsR2x5cGhzKSBjb25zdAotewotICAgIFN0cmluZyBzYW5pdGl6ZWQgPSBGb250
Ojpub3JtYWxpemVTcGFjZXMocnVuLmNoYXJhY3RlcnMoKSwgcnVuLmxlbmd0aCgpKTsKLSAgICBR
U3RyaW5nIHN0cmluZyA9IGZyb21SYXdEYXRhV2l0aG91dFJlZihzYW5pdGl6ZWQpOwotCi0gICAg
UUZvbnRNZXRyaWNzIGZtKGZvbnQoKSk7Ci0gICAgZmxvYXQgZGVsdGEgPSBwb3NpdGlvbjsKLSAg
ICBpbnQgY3VyUG9zID0gMDsKLSAgICBkbyB7Ci0gICAgICAgIGZsb2F0IGNoYXJXaWR0aCA9IGZt
LndpZHRoKHN0cmluZ1tjdXJQb3NdKTsKLSAgICAgICAgZGVsdGEgLT0gY2hhcldpZHRoOwotICAg
ICAgICBpZiAoaW5jbHVkZVBhcnRpYWxHbHlwaHMpIHsKLSAgICAgICAgICAgIGlmIChkZWx0YSAr
IGNoYXJXaWR0aCAvIDIgPD0gMCkKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgIGlmIChkZWx0YSArIGNoYXJXaWR0aCA8PSAwKQotICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfSB3aGlsZSAoKytjdXJQb3MgPCBzdHJpbmcu
c2l6ZSgpKTsKLQotICAgIHJldHVybiBjdXJQb3M7Ci19Ci0KLQotZmxvYXQgRm9udDo6ZmxvYXRX
aWR0aEZvclNpbXBsZVRleHQoY29uc3QgVGV4dFJ1biYgcnVuLCBHbHlwaEJ1ZmZlciogZ2x5cGhC
dWZmZXIsIEhhc2hTZXQ8Y29uc3QgU2ltcGxlRm9udERhdGEqPiogZmFsbGJhY2tGb250cywgR2x5
cGhPdmVyZmxvdyogZ2x5cGhPdmVyZmxvdykgY29uc3QKLXsKLSAgICBpZiAoIXByaW1hcnlGb250
KCktPnBsYXRmb3JtRGF0YSgpLnNpemUoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBpZiAo
IXJ1bi5sZW5ndGgoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBTdHJpbmcgc2FuaXRpemVk
ID0gRm9udDo6bm9ybWFsaXplU3BhY2VzKHJ1bi5jaGFyYWN0ZXJzKCksIHJ1bi5sZW5ndGgoKSk7
Ci0gICAgUVN0cmluZyBzdHJpbmcgPSBmcm9tUmF3RGF0YVdpdGhvdXRSZWYoc2FuaXRpemVkKTsK
LQotICAgIGludCB3ID0gUUZvbnRNZXRyaWNzKGZvbnQoKSkud2lkdGgoc3RyaW5nLCAtMSwgUXQ6
OlRleHRCeXBhc3NTaGFwaW5nKTsKLQotICAgIC8vIFdlYktpdCBleHBlY3RzIHVzIHRvIGlnbm9y
ZSB3b3JkIHNwYWNpbmcgb24gdGhlIGZpcnN0IGNoYXJhY3RlciAoYXMgb3Bwb3NlZCB0byB3aGF0
IFF0IGRvZXMpCi0gICAgaWYgKHRyZWF0QXNTcGFjZShydW5bMF0pKQotICAgICAgICB3IC09IG1f
d29yZFNwYWNpbmc7Ci0KLSAgICByZXR1cm4gdyArIHJ1bi5leHBhbnNpb24oKTsKLX0KLQotCi1G
bG9hdFJlY3QgRm9udDo6c2VsZWN0aW9uUmVjdEZvclNpbXBsZVRleHQoY29uc3QgVGV4dFJ1biYg
cnVuLCBjb25zdCBGbG9hdFBvaW50JiBwdCwgaW50IGgsIGludCBmcm9tLCBpbnQgdG8pIGNvbnN0
Ci17Ci0gICAgU3RyaW5nIHNhbml0aXplZCA9IEZvbnQ6Om5vcm1hbGl6ZVNwYWNlcyhydW4uY2hh
cmFjdGVycygpLCBydW4ubGVuZ3RoKCkpOwotICAgIFFTdHJpbmcgd2hvbGVUZXh0ID0gZnJvbVJh
d0RhdGFXaXRob3V0UmVmKHNhbml0aXplZCk7Ci0gICAgUVN0cmluZyBzZWxlY3RlZFRleHQgPSBm
cm9tUmF3RGF0YVdpdGhvdXRSZWYoc2FuaXRpemVkLCBmcm9tLCBxTWluKHRvIC0gZnJvbSwgd2hv
bGVUZXh0Lmxlbmd0aCgpIC0gZnJvbSkpOwotCi0gICAgaW50IHN0YXJ0WCA9IFFGb250TWV0cmlj
cyhmb250KCkpLndpZHRoKHdob2xlVGV4dCwgZnJvbSwgUXQ6OlRleHRCeXBhc3NTaGFwaW5nKTsK
LSAgICBpbnQgd2lkdGggPSBRRm9udE1ldHJpY3MoZm9udCgpKS53aWR0aChzZWxlY3RlZFRleHQs
IC0xLCBRdDo6VGV4dEJ5cGFzc1NoYXBpbmcpOwotCi0gICAgcmV0dXJuIEZsb2F0UmVjdChwdC54
KCkgKyBzdGFydFgsIHB0LnkoKSwgd2lkdGgsIGgpOwotfQotCi1ib29sIEZvbnQ6OmNhbkV4cGFu
ZEFyb3VuZElkZW9ncmFwaHNJbkNvbXBsZXhUZXh0KCkKLXsKLSAgICByZXR1cm4gZmFsc2U7Ci19
Ci0KLWJvb2wgRm9udDo6cHJpbWFyeUZvbnRIYXNHbHlwaEZvckNoYXJhY3RlcihVQ2hhcjMyKSBj
b25zdAotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWlu
dCBGb250OjplbXBoYXNpc01hcmtBc2NlbnQoY29uc3QgQXRvbWljU3RyaW5nJikgY29uc3QKLXsK
LSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAwOwotfQotCi1pbnQgRm9udDo6ZW1w
aGFzaXNNYXJrRGVzY2VudChjb25zdCBBdG9taWNTdHJpbmcmKSBjb25zdAotewotICAgIG5vdElt
cGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLWludCBGb250OjplbXBoYXNpc01hcmtI
ZWlnaHQoY29uc3QgQXRvbWljU3RyaW5nJikgY29uc3QKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgp
OwotICAgIHJldHVybiAwOwotfQotCi12b2lkIEZvbnQ6OmRyYXdFbXBoYXNpc01hcmtzRm9yU2lt
cGxlVGV4dChHcmFwaGljc0NvbnRleHQqIC8qIGNvbnRleHQgKi8sIGNvbnN0IFRleHRSdW4mIC8q
IHJ1biAqLywgY29uc3QgQXRvbWljU3RyaW5nJiAvKiBtYXJrICovLCBjb25zdCBGbG9hdFBvaW50
JiAvKiBwb2ludCAqLywgaW50IC8qIGZyb20gKi8sIGludCAvKiB0byAqLykgY29uc3QKLXsKLSAg
ICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi1RRm9udCBGb250Ojpmb250KCkgY29uc3QKLXsKLSAg
ICBRRm9udCBmID0gcHJpbWFyeUZvbnQoKS0+Z2V0UXRGb250KCk7Ci0gICAgaWYgKG1fbGV0dGVy
U3BhY2luZykKLSAgICAgICAgZi5zZXRMZXR0ZXJTcGFjaW5nKFFGb250OjpBYnNvbHV0ZVNwYWNp
bmcsIG1fbGV0dGVyU3BhY2luZyk7Ci0gICAgaWYgKG1fd29yZFNwYWNpbmcpCi0gICAgICAgIGYu
c2V0V29yZFNwYWNpbmcobV93b3JkU3BhY2luZyk7Ci0gICAgcmV0dXJuIGY7Ci19Ci0KLVFGb250
IEZvbnQ6OnN5bnRoZXRpY0ZvbnQoKSBjb25zdAotewotICAgIHJldHVybiBmb250KCk7Ci19Ci0K
LX0KLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR2x5
cGhQYWdlVHJlZU5vZGVRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9x
dC9HbHlwaFBhZ2VUcmVlTm9kZVF0LmNwcAppbmRleCA3Yjc2ODA0YTQ2OWYyODg5ODlhZGUyZDE3
MDgwYTgwODhiNTc2MDllLi41ZWU5OTIyYmE1YjE5NzM4ZGFlOTkwZGYzMTQ2ZmEyOGE3YTlhZTcy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HbHlwaFBh
Z2VUcmVlTm9kZVF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9x
dC9HbHlwaFBhZ2VUcmVlTm9kZVF0LmNwcApAQCAtMjMsMTUgKzIzLDEyIEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiR2x5cGhQYWdlVHJlZU5vZGUuaCIKIAotI2lmIEhBVkUoUVJB
V0ZPTlQpCiAjaW5jbHVkZSAiU2ltcGxlRm9udERhdGEuaCIKICNpbmNsdWRlIDxRRm9udE1ldHJp
Y3NGPgogI2luY2x1ZGUgPFFUZXh0TGF5b3V0PgotI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotI2lmIEhBVkUoUVJBV0ZPTlQpCiBib29sIEdseXBoUGFnZTo6ZmlsbCh1bnNpZ25lZCBv
ZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCwgVUNoYXIqIGJ1ZmZlciwgdW5zaWduZWQgYnVmZmVyTGVu
Z3RoLCBjb25zdCBTaW1wbGVGb250RGF0YSogZm9udERhdGEpCiB7CiAgICAgUVJhd0ZvbnQgcmF3
Rm9udCA9IGZvbnREYXRhLT5wbGF0Zm9ybURhdGEoKS5yYXdGb250KCk7CkBAIC01MSwxNSArNDgs
NSBAQCBib29sIEdseXBoUGFnZTo6ZmlsbCh1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0
aCwgVUNoYXIqIGJ1ZmZlciwgdW5zaWduZWQgYgogICAgIH0KICAgICByZXR1cm4gaGF2ZUdseXBo
czsKIH0KLSNlbHNlCi0KLXZvaWQgR2x5cGhQYWdlVHJlZU5vZGU6OnBydW5lVHJlZUN1c3RvbUZv
bnREYXRhKGNvbnN0IEZvbnREYXRhKikKLXsKLX0KLQotdm9pZCBHbHlwaFBhZ2VUcmVlTm9kZTo6
cHJ1bmVUcmVlRm9udERhdGEoY29uc3QgV2ViQ29yZTo6U2ltcGxlRm9udERhdGEqKQotewotfQot
I2VuZGlmIC8vIEhBVkUoUVJBV0ZPTlQpCiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3F0L1NpbXBsZUZvbnREYXRhUXQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvU2ltcGxlRm9udERhdGFRdC5jcHAKaW5kZXggNTc5MDg2
NTZlZDUzYTc0ODNmZjEyMmRiY2YxNDIxYTk5NWIzOTAyZC4uOGNlOWY3N2RhMmQ3Y2NhM2QwYTdk
ZDA1NzNlYjlkN2VkN2U0ZGI1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvcXQvU2ltcGxlRm9udERhdGFRdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvcXQvU2ltcGxlRm9udERhdGFRdC5jcHAKQEAgLTI0LDI2ICsyNCwxNiBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNpbXBsZUZvbnREYXRhLmgiCiAKLSNp
ZiBIQVZFKFFSQVdGT05UKQogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCi0jZWxzZQotI2lu
Y2x1ZGUgPFFGb250TWV0cmljc0Y+Ci0jZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2
b2lkIFNpbXBsZUZvbnREYXRhOjpkZXRlcm1pbmVQaXRjaCgpCiB7Ci0jaWYgSEFWRShRUkFXRk9O
VCkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIG1fdHJlYXRBc0ZpeGVkUGl0Y2ggPSBmYWxz
ZTsKLSNlbHNlCi0gICAgbV90cmVhdEFzRml4ZWRQaXRjaCA9IG1fcGxhdGZvcm1EYXRhLmZvbnQo
KS5maXhlZFBpdGNoKCk7Ci0jZW5kaWYKIH0KIAotI2lmIEhBVkUoUVJBV0ZPTlQpCi0KIHN0YXRp
YyBjb25zdCBmbG9hdCBzbWFsbENhcHNGcmFjdGlvbiA9IDAuNzsKIHN0YXRpYyBjb25zdCBmbG9h
dCBlbXBoYXNpc01hcmtGcmFjdGlvbiA9IDAuNTsKIApAQCAtMTAyLDIzICs5Miw2IEBAIEZsb2F0
UmVjdCBTaW1wbGVGb250RGF0YTo6cGxhdGZvcm1Cb3VuZHNGb3JHbHlwaChHbHlwaCkgY29uc3QK
ICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiBGbG9hdFJlY3QoKTsKIH0KLSNlbHNl
Ci1ib29sIFNpbXBsZUZvbnREYXRhOjpjb250YWluc0NoYXJhY3RlcnMoY29uc3QgVUNoYXIqLCBp
bnQpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXZvaWQgU2ltcGxlRm9udERhdGE6
OnBsYXRmb3JtR2x5cGhJbml0KCkKLXsKLSAgICBpZiAoIW1fcGxhdGZvcm1EYXRhLnNpemUoKSkK
LSAgICAgICAgcmV0dXJuOwotICAgIG1fc3BhY2VHbHlwaCA9IDA7Ci0gICAgbV9hZGp1c3RlZFNw
YWNlV2lkdGggPSBtX3NwYWNlV2lkdGg7Ci0gICAgZGV0ZXJtaW5lUGl0Y2goKTsKLSAgICBtX21p
c3NpbmdHbHlwaERhdGEuZm9udERhdGEgPSB0aGlzOwotICAgIG1fbWlzc2luZ0dseXBoRGF0YS5n
bHlwaCA9IDA7Ci19Ci0jZW5kaWYKIAogdm9pZCBTaW1wbGVGb250RGF0YTo6cGxhdGZvcm1Jbml0
KCkKIHsKQEAgLTEyOSw3ICsxMDIsNiBAQCB2b2lkIFNpbXBsZUZvbnREYXRhOjpwbGF0Zm9ybUlu
aXQoKQogICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotI2lmIEhBVkUoUVJBV0ZPTlQpCiAgICAg
UVJhd0ZvbnQgcmF3Rm9udChtX3BsYXRmb3JtRGF0YS5yYXdGb250KCkpOwogICAgIGZsb2F0IGRl
c2NlbnQgPSByYXdGb250LmRlc2NlbnQoKTsKICAgICBmbG9hdCBhc2NlbnQgPSByYXdGb250LmFz
Y2VudCgpOwpAQCAtMTM5LDE0ICsxMTEsNiBAQCB2b2lkIFNpbXBsZUZvbnREYXRhOjpwbGF0Zm9y
bUluaXQoKQogICAgIFFWZWN0b3I8cXVpbnQzMj4gaW5kZXhlcyA9IHJhd0ZvbnQuZ2x5cGhJbmRl
eGVzRm9yU3RyaW5nKFFMYXRpbjFTdHJpbmcoIiAiKSk7CiAgICAgUVZlY3RvcjxRUG9pbnRGPiBh
ZHZhbmNlcyA9IHJhd0ZvbnQuYWR2YW5jZXNGb3JHbHlwaEluZGV4ZXMoaW5kZXhlcyk7CiAgICAg
ZmxvYXQgc3BhY2VXaWR0aCA9IGFkdmFuY2VzLmF0KDApLngoKTsKLSNlbHNlCi0gICAgUUZvbnRN
ZXRyaWNzRiBmbShtX3BsYXRmb3JtRGF0YS5mb250KCkpOwotICAgIGZsb2F0IGRlc2NlbnQgPSBm
bS5kZXNjZW50KCk7Ci0gICAgZmxvYXQgYXNjZW50ID0gZm0uYXNjZW50KCk7Ci0gICAgZmxvYXQg
eEhlaWdodCA9IGZtLnhIZWlnaHQoKTsKLSAgICBmbG9hdCBsaW5lU3BhY2luZyA9IGZtLmxpbmVT
cGFjaW5nKCk7Ci0gICAgZmxvYXQgc3BhY2VXaWR0aCA9IGZtLndpZHRoKFFMYXRpbjFDaGFyKCcg
JykpOwotI2VuZGlmCiAKICAgICAvLyBUaGUgbGluZSBzcGFjaW5nIHNob3VsZCBhbHdheXMgYmUg
Pj0gKGFzY2VudCArIGRlc2NlbnQpLCBidXQgdGhpcwogICAgIC8vIG1heSBiZSBmYWxzZSBpbiBz
b21lIGNhc2VzIGR1ZSB0byBtaXNiZWhhdmluZyBwbGF0Zm9ybSBsaWJyYXJpZXMuCkBAIC0xNzEs
MTUgKzEzNSw5IEBAIHZvaWQgU2ltcGxlRm9udERhdGE6OnBsYXRmb3JtQ2hhcldpZHRoSW5pdCgp
CiB7CiAgICAgaWYgKCFtX3BsYXRmb3JtRGF0YS5zaXplKCkpCiAgICAgICAgIHJldHVybjsKLSNp
ZiBIQVZFKFFSQVdGT05UKQogICAgIFFSYXdGb250IHJhd0ZvbnQobV9wbGF0Zm9ybURhdGEucmF3
Rm9udCgpKTsKICAgICBtX2F2Z0NoYXJXaWR0aCA9IHJhd0ZvbnQuYXZlcmFnZUNoYXJXaWR0aCgp
OwogICAgIG1fbWF4Q2hhcldpZHRoID0gcmF3Rm9udC5tYXhDaGFyV2lkdGgoKTsKLSNlbHNlCi0g
ICAgUUZvbnRNZXRyaWNzRiBmbShtX3BsYXRmb3JtRGF0YS5mb250KCkpOwotICAgIG1fYXZnQ2hh
cldpZHRoID0gZm0uYXZlcmFnZUNoYXJXaWR0aCgpOwotICAgIG1fbWF4Q2hhcldpZHRoID0gZm0u
bWF4V2lkdGgoKTsKLSNlbmRpZgogfQogCiB2b2lkIFNpbXBsZUZvbnREYXRhOjpwbGF0Zm9ybURl
c3Ryb3koKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0
TWV0cmljc0J1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0
TWV0cmljc0J1aWxkZXIuY3BwCmluZGV4IDY4NWU1MTU0NWRmZTFjMDk0YzU3NWNlM2YzZjYyNzVm
YmNhNGQ4MDUuLjVhYzg1Y2JiZTg0NzcxMGZkNWFlMWUyMmZmM2YzMzYyMTE2YTg1YzIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dE1ldHJpY3NCdWlsZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRyaWNzQnVp
bGRlci5jcHAKQEAgLTQ4LDIzICs0OCwxNiBAQCBib29sIFNWR1RleHRNZXRyaWNzQnVpbGRlcjo6
YWR2YW5jZSgpCiAgICAgaWYgKGludChtX3RleHRQb3NpdGlvbikgPj0gbV9ydW4uY2hhcmFjdGVy
c0xlbmd0aCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSNpZiBQTEFURk9STShRVCkgJiYg
IUhBVkUoUVJBV0ZPTlQpCi0gICAgYWR2YW5jZUNvbXBsZXhUZXh0KCk7Ci0jZWxzZQogICAgIGlm
IChtX2lzQ29tcGxleFRleHQpCiAgICAgICAgIGFkdmFuY2VDb21wbGV4VGV4dCgpOwogICAgIGVs
c2UKICAgICAgICAgYWR2YW5jZVNpbXBsZVRleHQoKTsKLSNlbmRpZgogCiAgICAgcmV0dXJuIG1f
Y3VycmVudE1ldHJpY3MubGVuZ3RoKCkgPiAwOwogfQogCiB2b2lkIFNWR1RleHRNZXRyaWNzQnVp
bGRlcjo6YWR2YW5jZVNpbXBsZVRleHQoKQogewotI2lmIFBMQVRGT1JNKFFUKSAmJiAhSEFWRShR
UkFXRk9OVCkKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSNlbHNlCiAgICAgdW5zaWduZWQg
bWV0cmljc0xlbmd0aCA9IG1fc2ltcGxlV2lkdGhJdGVyYXRvci0+YWR2YW5jZShtX3RleHRQb3Np
dGlvbiArIDEpOwogICAgIGlmICghbWV0cmljc0xlbmd0aCkgewogICAgICAgICBtX2N1cnJlbnRN
ZXRyaWNzID0gU1ZHVGV4dE1ldHJpY3MoKTsKQEAgLTgyLDcgKzc1LDYgQEAgdm9pZCBTVkdUZXh0
TWV0cmljc0J1aWxkZXI6OmFkdmFuY2VTaW1wbGVUZXh0KCkKICNlbHNlCiAgICAgbV9jdXJyZW50
TWV0cmljcyA9IFNWR1RleHRNZXRyaWNzKG1fdGV4dCwgbV90ZXh0UG9zaXRpb24sIG1ldHJpY3NM
ZW5ndGgsIGN1cnJlbnRXaWR0aCwgZW1wdHlTdHJpbmcoKSk7CiAjZW5kaWYKLSNlbmRpZgogfQog
CiB2b2lkIFNWR1RleHRNZXRyaWNzQnVpbGRlcjo6YWR2YW5jZUNvbXBsZXhUZXh0KCkKQEAgLTEx
NSwxMiArMTA3LDEwIEBAIHZvaWQgU1ZHVGV4dE1ldHJpY3NCdWlsZGVyOjppbml0aWFsaXplTWVh
c3VyZW1lbnRXaXRoVGV4dFJlbmRlcmVyKFJlbmRlclNWR0lubGluCiAgICAgbV9ydW4gPSBTVkdU
ZXh0TWV0cmljczo6Y29uc3RydWN0VGV4dFJ1bih0ZXh0LCB0ZXh0LT5jaGFyYWN0ZXJzKCksIDAs
IHRleHQtPnRleHRMZW5ndGgoKSk7CiAgICAgbV9pc0NvbXBsZXhUZXh0ID0gc2NhbGVkRm9udC5j
b2RlUGF0aChtX3J1bikgPT0gRm9udDo6Q29tcGxleDsKIAotI2lmICFQTEFURk9STShRVCkgfHwg
SEFWRShRUkFXRk9OVCkKICAgICBpZiAobV9pc0NvbXBsZXhUZXh0KQogICAgICAgICBtX3NpbXBs
ZVdpZHRoSXRlcmF0b3IuY2xlYXIoKTsKICAgICBlbHNlCiAgICAgICAgIG1fc2ltcGxlV2lkdGhJ
dGVyYXRvciA9IGFkb3B0UHRyKG5ldyBXaWR0aEl0ZXJhdG9yKCZzY2FsZWRGb250LCBtX3J1bikp
OwotI2VuZGlmCiB9CiAKIHN0cnVjdCBNZWFzdXJlVGV4dERhdGEgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0Fib3V0RGF0YUhhdmVGZWF0dXJl
cy5pbiBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9BYm91dERhdGFI
YXZlRmVhdHVyZXMuaW4KaW5kZXggMWFiOWQyNjRlMjJiM2YxN2E5ZTQ5MjUyYWU0ODg0NGMxZGNm
YjdkYy4uYTllYzVmMjhlYmUxMDY2NzFhMzM5YWE5OWFlZDZmYjJkMTdhOWIyNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0Fib3V0RGF0YUhhdmVG
ZWF0dXJlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQv
QWJvdXREYXRhSGF2ZUZlYXR1cmVzLmluCkBAIC0zMiw3ICszMiw2IEBAIFBUSFJFQURfTUFDSERF
UF9ICiBQVEhSRUFEX05QX0gKIFBUSFJFQURfUldMT0NLCiBQVEhSRUFEX1NFVE5BTUVfTlAKLVFS
QVdGT05UCiBRVDUKIFJFQURMSU5FCiBSVU5MT09QX1RJTUVSCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCA2ZWI4YWI3ZWU3MDdiNDRiYzlmNjE0MWExZjAyZmMy
ZDdiNTMyZDc5Li5lMTFkOTFkNzZmZjlhMDlkYjNhM2FjMjJiNWVmNTJhMTk3MjdjNTVmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTk4MSw5ICs5ODEsNyBA
QCB2b2lkIFdlYlByb2Nlc3M6OmdldFdlYkNvcmVTdGF0aXN0aWNzKHVpbnQ2NF90IGNhbGxiYWNr
SUQpCiAgICAgZGF0YS5zdGF0aXN0aWNzTnVtYmVycy5zZXQoIkNhY2hlZEZvbnREYXRhSW5hY3Rp
dmVDb3VudCIsIGZvbnRDYWNoZSgpLT5pbmFjdGl2ZUZvbnREYXRhQ291bnQoKSk7CiAgICAgCiAg
ICAgLy8gR2F0aGVyIGdseXBoIHBhZ2Ugc3RhdGlzdGljcy4KLSNpZiAhKFBMQVRGT1JNKFFUKSAm
JiAhSEFWRShRUkFXRk9OVCkpIC8vIFF0IGRvZXNuJ3QgdXNlIHRoZSBnbHlwaCBwYWdlIHRyZWUg
Y3VycmVudGx5LiBTZWU6IGJ1ZyA2MzQ2Ny4KICAgICBkYXRhLnN0YXRpc3RpY3NOdW1iZXJzLnNl
dCgiR2x5cGhQYWdlQ291bnQiLCBHbHlwaFBhZ2VUcmVlTm9kZTo6dHJlZUdseXBoUGFnZUNvdW50
KCkpOwotI2VuZGlmCiAgICAgCiAgICAgLy8gR2V0IFdlYkNvcmUgbWVtb3J5IGNhY2hlIHN0YXRp
c3RpY3MKICAgICBnZXRXZWJDb3JlTWVtb3J5Q2FjaGVTdGF0aXN0aWNzKGRhdGEud2ViQ29yZUNh
Y2hlU3RhdGlzdGljcyk7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFu
Z2VMb2cKaW5kZXggMmJlZGFmY2Q4MWZhNjc5ZDczMzBlNDY0OTI1M2I0NGY4MWY4ZDdkZi4uYThk
YTc4NDcwN2E1NmRlNGE0YWIxMmE1YzMxNTg4NjVlMTM2N2QxZCAxMDA2NDQKLS0tIGEvVG9vbHMv
Q2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTA4
LTE0ICBQaWVycmUgUm9zc2kgIDxwaWVycmUucm9zc2lAZ21haWwuY29tPgorCisgICAgICAgIFtR
dF0gUmVtb3ZlIEZvbnRRdDQsIEhBVkVfUVJBV0ZPTlQgZmxhZyBhbmQgdGhlIHJlbGF0ZWQgZGVh
ZCBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05
Mzk2MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZv
bGxvd2luZyB0aGUgcmVtb3ZhbCBvZiBRdCA0IHN1cHBvcnQgZnJvbSB0cnVuayBpbiByMTI0ODc5
LgorCisgICAgICAgICogcW1ha2UvbWtzcGVjcy9mZWF0dXJlcy9mZWF0dXJlcy5wcmY6CisKIDIw
MTItMDgtMTMgIFJhcGhhZWwgS3VibyBkYSBDb3N0YSAgPHJha3Vjb0B3ZWJraXQub3JnPgogCiAg
ICAgICAgIFtDTWFrZV0gUmVtb3ZlIGdsaWItcmVsYXRlZCBGaW5kIG1vZHVsZXMgYW5kIHdyaXRl
IHNpbmdsZSBuZXcgb25lIGluc3RlYWQuCmRpZmYgLS1naXQgYS9Ub29scy9xbWFrZS9ta3NwZWNz
L2ZlYXR1cmVzL2ZlYXR1cmVzLnByZiBiL1Rvb2xzL3FtYWtlL21rc3BlY3MvZmVhdHVyZXMvZmVh
dHVyZXMucHJmCmluZGV4IDhkNGI2MTRjNzhiZDRmOTNiOWJhNjFmNzlkNTUzZjM4YmQwZDVlNDYu
LjQyMTViMjdhZTk2ZThjNWM0Y2YzZWUzZjJkNzljMDk3ODYyMzlkMGUgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL3FtYWtlL21rc3BlY3MvZmVhdHVyZXMvZmVhdHVyZXMucHJmCisrKyBiL1Rvb2xzL3FtYWtl
L21rc3BlY3MvZmVhdHVyZXMvZmVhdHVyZXMucHJmCkBAIC0zNCwxMSArMzQsNiBAQCBsb2FkKG1v
YmlsaXR5Y29uZmlnLCB0cnVlKQogREVGSU5FUyArPSBXVEZfVVNFX0lDVV9VTklDT0RFPTEKIERF
RklORVMgLT0gV1RGX1VTRV9RVDRfVU5JQ09ERT0xCiAKLSFjb250YWlucyhERUZJTkVTLCBIQVZF
X1FSQVdGT05UPS4pIHsKLSAgICAjIFVzZSBvZiBRUmF3Rm9udCBpbiBRdCA1OgotICAgIERFRklO
RVMgKz0gSEFWRV9RUkFXRk9OVD0xCi19Ci0KICMgV2UgbmVlZCBmb250Y29uZmlnIHRvIHNldCB1
cCB0aGUgdGVzdCBmb250cyBmb3IgRHVtcFJlbmRlclRyZWUgYW5kIFdlYktpdFRlc3RSdW5uZXIu
CiBjb25maWdfZm9udGNvbmZpZzohbWFjIHsKICAgICBERUZJTkVTICs9IEhBVkVfRk9OVENPTkZJ
Rz0xCkBAIC0yMDEsOCArMTk2LDggQEAgZm9yKGZlYXR1cmUsIEZFQVRVUkVfREVGQVVMVFMpIHsK
IAogIyAtLS0tLS0tLS0tLS0tLS0tIFNhbml0aXplIGRlZmluZXMgLS0tLS0tLS0tLS0tLS0tLS0t
LQogCi0jIERpc2FibGUgU1ZHIGZvbnRzIGlmIFNWRyBpcyBkaXNhYmxlZCBvciB3ZSBkb24ndCBo
YXZlIHJhdyBmb250cwotY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1NWRz0wKXwhY29udGFpbnMo
REVGSU5FUywgSEFWRV9RUkFXRk9OVD0xKTogREVGSU5FUyArPSBFTkFCTEVfU1ZHX0ZPTlRTPTAK
KyMgRGlzYWJsZSBTVkcgZm9udHMgaWYgU1ZHIGlzIGRpc2FibGVkCitjb250YWlucyhERUZJTkVT
LCBFTkFCTEVfU1ZHPTApOiBERUZJTkVTICs9IEVOQUJMRV9TVkdfRk9OVFM9MAogCiAjIEphdmFT
Y3JpcHQgZGVidWdnZXIgcmVxdWlyZXMgdGhlIGluc3BlY3RvcgogY29udGFpbnMoREVGSU5FUywg
RU5BQkxFX0lOU1BFQ1RPUj0wKSB7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>