<?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>234424</bug_id>
          
          <creation_ts>2021-12-16 21:43:08 -0800</creation_ts>
          <short_desc>Deduplicate code in RenderText::computePreferredLogicalWidths()</short_desc>
          <delta_ts>2021-12-17 14:11:19 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>234421</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>changseok</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pdr</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1824985</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-12-16 21:43:08 -0800</bug_when>
    <thetext>.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824989</commentid>
    <comment_count>1</comment_count>
      <attachid>447427</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-12-16 21:45:27 -0800</bug_when>
    <thetext>Created attachment 447427
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825002</commentid>
    <comment_count>2</comment_count>
      <attachid>447431</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-12-16 23:03:44 -0800</bug_when>
    <thetext>Created attachment 447431
Depends on bug 234421</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825003</commentid>
    <comment_count>3</comment_count>
      <attachid>447432</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-12-16 23:05:20 -0800</bug_when>
    <thetext>Created attachment 447432
Depends on bug 234421</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825004</commentid>
    <comment_count>4</comment_count>
      <attachid>447433</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-12-16 23:08:20 -0800</bug_when>
    <thetext>Created attachment 447433
Depends on bug 234421</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825005</commentid>
    <comment_count>5</comment_count>
      <attachid>447434</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-12-16 23:08:57 -0800</bug_when>
    <thetext>Created attachment 447434
Patch for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825006</commentid>
    <comment_count>6</comment_count>
      <attachid>447435</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-12-16 23:15:06 -0800</bug_when>
    <thetext>Created attachment 447435
Patch for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825120</commentid>
    <comment_count>7</comment_count>
      <attachid>447460</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-12-17 10:33:41 -0800</bug_when>
    <thetext>Created attachment 447460
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825159</commentid>
    <comment_count>8</comment_count>
      <attachid>447460</attachid>
    <who name="alan">zalan</who>
    <bug_when>2021-12-17 12:34:43 -0800</bug_when>
    <thetext>Comment on attachment 447460
Patch

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

&gt; Source/WebCore/ChangeLog:31
&gt; +        * rendering/RenderTextInlines.h: Added. This function needs to be able to see into WordTrailingSpace,

RenderTextInlines is a bit confusing name but I can&apos;t think of a better (not easily confused with inline formatting) name either.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825178</commentid>
    <comment_count>9</comment_count>
      <attachid>447460</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-12-17 13:59:13 -0800</bug_when>
    <thetext>Comment on attachment 447460
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:31
&gt;&gt; +        * rendering/RenderTextInlines.h: Added. This function needs to be able to see into WordTrailingSpace,
&gt; 
&gt; RenderTextInlines is a bit confusing name but I can&apos;t think of a better (not easily confused with inline formatting) name either.

Heh, yeah, I didn&apos;t even think of that. &quot;Inlines&quot; is the pattern we use in the rest of WebKit, though...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825180</commentid>
    <comment_count>10</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-12-17 14:10:34 -0800</bug_when>
    <thetext>Committed r287206 (245373@main): &lt;https://commits.webkit.org/245373@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 447460.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825181</commentid>
    <comment_count>11</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-12-17 14:11:19 -0800</bug_when>
    <thetext>&lt;rdar://problem/86650129&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447427</attachid>
            <date>2021-12-16 21:45:27 -0800</date>
            <delta_ts>2021-12-16 23:03:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>5874</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA1YWQ4NjAzZjJkODMuLjdkYzMxODU5Njk0NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDIxIEBACisyMDIxLTEyLTE2ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBh
cHBsZS5jb20+CisKKyAgICAgICAgRGVkdXBsaWNhdGUgY29kZSBpbiBSZW5kZXJUZXh0Ojpjb21w
dXRlUHJlZmVycmVkTG9naWNhbFdpZHRocygpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQ0MjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGUgc2FtZSBzdHJ1Y3R1cmUgb2YgY29kZSBoYW5kbGluZyB0
aGUgV29yZFRyYWlsaW5nU3BhY2Ugd2FzIGR1cGxpY2F0ZWQgdHdpY2UuIFRoaXMgcGF0Y2ggc2lt
cGx5CisgICAgICAgIG1vdmVzIHRoaXMgc3RydWN0dXJlIGludG8gYSBzaGFyZWQgZnVuY3Rpb24u
CisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGJlY2F1c2UgdGhlcmUgaXMgbm8gYmVoYXZpb3IgY2hh
bmdlLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGV4dDo6d2lkdGhGcm9tQ2FjaGVDb25zaWRlcmluZ1Bvc3NpYmxlVHJhaWxp
bmdTcGFjZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0OjptYXhXb3JkRnJh
Z21lbnRXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Ojpjb21wdXRlUHJlZmVy
cmVkTG9naWNhbFdpZHRocyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHQuaDoKKwog
MjAyMS0xMi0xNiAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAg
ICAgICAgIFJlZmFjdG9yIGh5cGhlbmF0aW9uIGxvZ2ljIGluIFJlbmRlclRleHQ6OmNvbXB1dGVQ
cmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0
LmNwcAppbmRleCAwMDg4MThiZTNlNzcuLjMzNzNkMWE0NWQ3MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUZXh0LmNwcApAQCAtNzE3LDYgKzcxNywxNiBAQCBBTFdBWVNfSU5MSU5F
IGZsb2F0IFJlbmRlclRleHQ6OndpZHRoRnJvbUNhY2hlKGNvbnN0IEZvbnRDYXNjYWRlJiBmLCB1
bnNpZ25lZCBzdAogICAgIHJldHVybiBmLndpZHRoKHJ1biwgZmFsbGJhY2tGb250cywgZ2x5cGhP
dmVyZmxvdyk7CiB9CiAKK0FMV0FZU19JTkxJTkUgZmxvYXQgUmVuZGVyVGV4dDo6d2lkdGhGcm9t
Q2FjaGVDb25zaWRlcmluZ1Bvc3NpYmxlVHJhaWxpbmdTcGFjZShjb25zdCBSZW5kZXJTdHlsZSYg
c3R5bGUsIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCB1bnNpZ25lZCBzdGFydEluZGV4LCB1bnNp
Z25lZCB3b3JkTGVuLCBmbG9hdCB4UG9zLCBib29sIGN1cnJlbnRDaGFyYWN0ZXJJc1NwYWNlLCBX
b3JkVHJhaWxpbmdTcGFjZSYgd29yZFRyYWlsaW5nU3BhY2UsIEhhc2hTZXQ8Y29uc3QgRm9udCo+
JiBmYWxsYmFja0ZvbnRzLCBHbHlwaE92ZXJmbG93JiBnbHlwaE92ZXJmbG93KSBjb25zdAorewor
ICAgIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IHdvcmRUcmFpbGluZ1NwYWNlV2lkdGg7CisgICAgaWYg
KGN1cnJlbnRDaGFyYWN0ZXJJc1NwYWNlKQorICAgICAgICB3b3JkVHJhaWxpbmdTcGFjZVdpZHRo
ID0gd29yZFRyYWlsaW5nU3BhY2Uud2lkdGgoZmFsbGJhY2tGb250cyk7CisgICAgaWYgKHdvcmRU
cmFpbGluZ1NwYWNlV2lkdGgpCisgICAgICAgIHJldHVybiB3aWR0aEZyb21DYWNoZShmb250LCBz
dGFydEluZGV4LCB3b3JkTGVuICsgMSwgeFBvcywgJmZhbGxiYWNrRm9udHMsICZnbHlwaE92ZXJm
bG93LCBzdHlsZSkgLSB3b3JkVHJhaWxpbmdTcGFjZVdpZHRoLnZhbHVlKCk7CisgICAgcmV0dXJu
IHdpZHRoRnJvbUNhY2hlKGZvbnQsIHN0YXJ0SW5kZXgsIHdvcmRMZW4sIHhQb3MsICZmYWxsYmFj
a0ZvbnRzLCAmZ2x5cGhPdmVyZmxvdywgc3R5bGUpOworfQorCiBpbmxpbmUgYm9vbCBpc0hhbmdh
YmxlUHVuY3R1YXRpb25BdExpbmVTdGFydChVQ2hhciBjKQogewogICAgIHJldHVybiBVX0dFVF9H
Q19NQVNLKGMpICYgKFVfR0NfUFNfTUFTSyB8IFVfR0NfUElfTUFTSyB8IFVfR0NfUEZfTUFTSyk7
CkBAIC05NzMsMTUgKzk4Myw3IEBAIGZsb2F0IFJlbmRlclRleHQ6Om1heFdvcmRGcmFnbWVudFdp
ZHRoKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3QgRm9udENhc2NhCiAgICAgICAgIHJl
dHVybiBlbnRpcmVXb3JkV2lkdGg7CiAgICAgfQogCi0gICAgZmxvYXQgc3VmZml4V2lkdGg7Ci0g
ICAgc3RkOjpvcHRpb25hbDxmbG9hdD4gd29yZFRyYWlsaW5nU3BhY2VXaWR0aDsKLSAgICBpZiAo
Y3VycmVudENoYXJhY3RlcklzU3BhY2UpCi0gICAgICAgIHdvcmRUcmFpbGluZ1NwYWNlV2lkdGgg
PSB3b3JkVHJhaWxpbmdTcGFjZS53aWR0aChmYWxsYmFja0ZvbnRzKTsKLSAgICBpZiAod29yZFRy
YWlsaW5nU3BhY2VXaWR0aCkKLSAgICAgICAgc3VmZml4V2lkdGggPSB3aWR0aEZyb21DYWNoZShm
b250LCBjaGFyYWN0ZXJJbmRleCArIHN1ZmZpeFN0YXJ0LCB3b3JkLmxlbmd0aCgpIC0gc3VmZml4
U3RhcnQgKyAxLCB4UG9zLCAwLCAwLCBzdHlsZSkgLSB3b3JkVHJhaWxpbmdTcGFjZVdpZHRoLnZh
bHVlKCk7Ci0gICAgZWxzZQotICAgICAgICBzdWZmaXhXaWR0aCA9IHdpZHRoRnJvbUNhY2hlKGZv
bnQsIGNoYXJhY3RlckluZGV4ICsgc3VmZml4U3RhcnQsIHdvcmQubGVuZ3RoKCkgLSBzdWZmaXhT
dGFydCwgeFBvcywgMCwgMCwgc3R5bGUpOwotCisgICAgYXV0byBzdWZmaXhXaWR0aCA9IHdpZHRo
RnJvbUNhY2hlQ29uc2lkZXJpbmdQb3NzaWJsZVRyYWlsaW5nU3BhY2Uoc3R5bGUsIGZvbnQsIGNo
YXJhY3RlckluZGV4ICsgc3VmZml4U3RhcnQsIHdvcmQubGVuZ3RoKCkgLSBzdWZmaXhTdGFydCwg
eFBvcywgY3VycmVudENoYXJhY3RlcklzU3BhY2UsIHdvcmRUcmFpbGluZ1NwYWNlLCBmYWxsYmFj
a0ZvbnRzLCBnbHlwaE92ZXJmbG93KTsKICAgICByZXR1cm4gc3RkOjptYXgobWF4RnJhZ21lbnRX
aWR0aCwgc3VmZml4V2lkdGgpOwogfQogCkBAIC0xMTE1LDE3ICsxMTE3LDkgQEAgdm9pZCBSZW5k
ZXJUZXh0Ojpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocyhmbG9hdCBsZWFkV2lkdGgsIEhh
c2hTZXQ8Y29uc3QgRm8KICAgICAgICAgaWYgKHdvcmRMZW4pIHsKICAgICAgICAgICAgIGZsb2F0
IGN1cnJNaW5XaWR0aCA9IDA7CiAgICAgICAgICAgICBib29sIGlzU3BhY2UgPSAoaiA8IGxlbmd0
aCkgJiYgaXNTcGFjZUFjY29yZGluZ1RvU3R5bGUoYywgc3R5bGUpOwotICAgICAgICAgICAgZmxv
YXQgdzsKLSAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IHdvcmRUcmFpbGluZ1NwYWNl
V2lkdGg7Ci0gICAgICAgICAgICBpZiAoaXNTcGFjZSkKLSAgICAgICAgICAgICAgICB3b3JkVHJh
aWxpbmdTcGFjZVdpZHRoID0gd29yZFRyYWlsaW5nU3BhY2Uud2lkdGgoZmFsbGJhY2tGb250cyk7
Ci0gICAgICAgICAgICBpZiAod29yZFRyYWlsaW5nU3BhY2VXaWR0aCkKLSAgICAgICAgICAgICAg
ICB3ID0gd2lkdGhGcm9tQ2FjaGUoZm9udCwgaSwgd29yZExlbiArIDEsIGxlYWRXaWR0aCArIGN1
cnJNYXhXaWR0aCwgJmZhbGxiYWNrRm9udHMsICZnbHlwaE92ZXJmbG93LCBzdHlsZSkgLSB3b3Jk
VHJhaWxpbmdTcGFjZVdpZHRoLnZhbHVlKCk7Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAg
ICAgICAgICB3ID0gd2lkdGhGcm9tQ2FjaGUoZm9udCwgaSwgd29yZExlbiwgbGVhZFdpZHRoICsg
Y3Vyck1heFdpZHRoLCAmZmFsbGJhY2tGb250cywgJmdseXBoT3ZlcmZsb3csIHN0eWxlKTsKLSAg
ICAgICAgICAgICAgICBpZiAoYyA9PSBzb2Z0SHlwaGVuICYmIHN0eWxlLmh5cGhlbnMoKSAhPSBI
eXBoZW5zOjpOb25lKQotICAgICAgICAgICAgICAgICAgICBjdXJyTWluV2lkdGggPSBoeXBoZW5X
aWR0aCgqdGhpcywgZm9udCk7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBmbG9hdCB3ID0g
d2lkdGhGcm9tQ2FjaGVDb25zaWRlcmluZ1Bvc3NpYmxlVHJhaWxpbmdTcGFjZShzdHlsZSwgZm9u
dCwgaSwgd29yZExlbiwgbGVhZFdpZHRoICsgY3Vyck1heFdpZHRoLCBpc1NwYWNlLCB3b3JkVHJh
aWxpbmdTcGFjZSwgZmFsbGJhY2tGb250cywgZ2x5cGhPdmVyZmxvdyk7CisgICAgICAgICAgICBp
ZiAoYyA9PSBzb2Z0SHlwaGVuICYmIHN0eWxlLmh5cGhlbnMoKSAhPSBIeXBoZW5zOjpOb25lKQor
ICAgICAgICAgICAgICAgIGN1cnJNaW5XaWR0aCA9IGh5cGhlbldpZHRoKCp0aGlzLCBmb250KTsK
IAogICAgICAgICAgICAgaWYgKHcgPiBtYXhXb3JkV2lkdGgpIHsKICAgICAgICAgICAgICAgICBh
dXRvIG1heEZyYWdtZW50V2lkdGggPSBtYXhXb3JkRnJhZ21lbnRXaWR0aChzdHlsZSwgZm9udCwg
U3RyaW5nVmlldyhzdHJpbmcpLnN1YnN0cmluZyhpLCB3b3JkTGVuKSwgbWluaW11bVByZWZpeExl
bmd0aCwgbWluaW11bVN1ZmZpeExlbmd0aCwgaXNTcGFjZSwgaSwgbGVhZFdpZHRoICsgY3Vyck1h
eFdpZHRoLCB3LCB3b3JkVHJhaWxpbmdTcGFjZSwgZmFsbGJhY2tGb250cywgZ2x5cGhPdmVyZmxv
dyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuaAppbmRleCBjZTMwMGQ3MzA0Y2Qu
LjA5ODlmYzJmZGU0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5oCkBAIC0y
MjQsNiArMjI0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNvbnRhaW5lcihjb25zdCBSZW5kZXJM
YXllck1vZGVsT2JqZWN0JiwgYm9vbCYpIGNvbnN0ID0gZGVsZXRlOyAvLyBVc2UgcGFyZW50KCkg
aW5zdGVhZC4KIAogICAgIGZsb2F0IG1heFdvcmRGcmFnbWVudFdpZHRoKGNvbnN0IFJlbmRlclN0
eWxlJiwgY29uc3QgRm9udENhc2NhZGUmLCBTdHJpbmdWaWV3IHdvcmQsIHVuc2lnbmVkIG1pbmlt
dW1QcmVmaXhMZW5ndGgsIHVuc2lnbmVkIG1pbmltdW1TdWZmaXhMZW5ndGgsIGJvb2wgY3VycmVu
dENoYXJhY3RlcklzU3BhY2UsIHVuc2lnbmVkIGNoYXJhY3RlckluZGV4LCBmbG9hdCB4UG9zLCBm
bG9hdCBlbnRpcmVXb3JkV2lkdGgsIFdvcmRUcmFpbGluZ1NwYWNlJiwgSGFzaFNldDxjb25zdCBG
b250Kj4mIGZhbGxiYWNrRm9udHMsIEdseXBoT3ZlcmZsb3cmKTsKKyAgICBmbG9hdCB3aWR0aEZy
b21DYWNoZUNvbnNpZGVyaW5nUG9zc2libGVUcmFpbGluZ1NwYWNlKGNvbnN0IFJlbmRlclN0eWxl
JiwgY29uc3QgRm9udENhc2NhZGUmLCB1bnNpZ25lZCBzdGFydEluZGV4LCB1bnNpZ25lZCB3b3Jk
TGVuLCBmbG9hdCB4UG9zLCBib29sIGN1cnJlbnRDaGFyYWN0ZXJJc1NwYWNlLCBXb3JkVHJhaWxp
bmdTcGFjZSYsIEhhc2hTZXQ8Y29uc3QgRm9udCo+JiBmYWxsYmFja0ZvbnRzLCBHbHlwaE92ZXJm
bG93JikgY29uc3Q7CiAKICAgICAvLyBXZSBwdXQgdGhlIGJpdGZpZWxkIGZpcnN0IHRvIG1pbmlt
aXplIHBhZGRpbmcgb24gNjQtYml0LgogICAgIHVuc2lnbmVkIG1faGFzQnJlYWthYmxlQ2hhciA6
IDE7IC8vIFdoZXRoZXIgb3Igbm90IHdlIGNhbiBiZSBicm9rZW4gaW50byBtdWx0aXBsZSBsaW5l
cy4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447431</attachid>
            <date>2021-12-16 23:03:44 -0800</date>
            <delta_ts>2021-12-16 23:05:20 -0800</delta_ts>
            <desc>Depends on bug 234421</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>22011</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">Y29tbWl0IGRhOGRhZWJiMWM2NDVkYTA5MDFiMjdjN2ZhZGE2NDMxYjVkZjMwMzMKQXV0aG9yOiBN
eWxlcyBDLiBNYXhmaWVsZCA8bW1heGZpZWxkQGFwcGxlLmNvbT4KRGF0ZTogICBUaHUgRGVjIDE2
IDIzOjAzOjE5IDIwMjEgLTA4MDAKCiAgICBEZWR1cGxpY2F0aW9uCgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDVh
ZDg2MDNmMmQ4My4uMDNjMzVhMjFhZTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDkgQEAKKzIw
MjEtMTItMTYgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAg
ICAgICBEZWR1cGxpY2F0ZSBjb2RlIGluIFJlbmRlclRleHQ6OmNvbXB1dGVQcmVmZXJyZWRMb2dp
Y2FsV2lkdGhzKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzNDQyNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFdlIGhhdmUgMyBwbGFjZXMgd2l0aCBjb2RlIG9mIHRoaXMgZm9ybToKKworICAgICAgICBm
bG9hdCByZXN1bHQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IHdvcmRUcmFpbGluZ1Nw
YWNlV2lkdGg7CisgICAgICAgIGlmIChjdXJyZW50Q2hhcmFjdGVySXNTcGFjZSkKKyAgICAgICAg
ICAgIHdvcmRUcmFpbGluZ1NwYWNlV2lkdGggPSB3b3JkVHJhaWxpbmdTcGFjZS53aWR0aChmYWxs
YmFja0ZvbnRzKTsKKyAgICAgICAgaWYgKHdvcmRUcmFpbGluZ1NwYWNlV2lkdGgpCisgICAgICAg
ICAgICByZXN1bHQgPSBtZWFzdXJlVGV4dChzdGFydGluZ0NoYXJhY3RlckluZGV4LCBsZW5ndGgg
KyAxKSAtIHdvcmRUcmFpbGluZ1NwYWNlV2lkdGgudmFsdWUoKTsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgcmVzdWx0ID0gbWVhc3VyZVRleHQoc3RhcnRpbmdDaGFyYWN0ZXJJbmRleCwgbGVu
Z3RoKTsKKworICAgICAgICBUaGlzIHBhdGNoIHNpbXBseSBkZWR1cGxpY2F0ZXMgdGhpcyBsb2dp
YywgYW5kIHB1dHMgaXQgaW50byBhIHNpbmdsZSBmdW5jdGlvbjoKKyAgICAgICAgUmVuZGVyVGV4
dDo6bWVhc3VyZVRleHRDb25zaWRlcmluZ1Bvc3NpYmxlVHJhaWxpbmdTcGFjZSgpLiBCZWNhdXNl
IHRoZSBkaWZmZXJlbnQgcGxhY2VzIHdoaWNoIGNhbGwgaXQKKyAgICAgICAgdXNlIGRpZmZlcmVu
dCB0ZXh0IG1lYXN1cmVtZW50IGZ1bmN0aW9ucywgdGhpcyBmdW5jdGlvbiBhY2NlcHRzIGEgIm1l
YXN1cmUgdGV4dCIgY2FsbGJhY2suCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGJlY2F1c2UgdGhl
cmUgaXMgbm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6OndpZHRoRnJvbUNhY2hlQ29uc2lkZXJpbmdQb3Nz
aWJsZVRyYWlsaW5nU3BhY2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6
bWF4V29yZEZyYWdtZW50V2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6Y29t
cHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJU
ZXh0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRJbmxpbmVzLmg6IEFkZGVkLiBU
aGlzIGZ1bmN0aW9uIG5lZWRzIHRvIGJlIGFibGUgdG8gc2VlIGludG8gV29yZFRyYWlsaW5nU3Bh
Y2UsCisgICAgICAgIGJ1dCB3ZSBzaG91bGRuJ3QgYmUgYWRkaW5nIGFueSBtb3JlICNpbmNsdWRl
cyB0byBSZW5kZXJUZXh0LmggYmVjYXVzZSBkb2luZyBzbyB3aWxsIGluY3JlYXNlIHRoZSBidWls
ZCB0aW1lLgorICAgICAgICBTbywgaW5zdGVhZCwgd2UgY2FuIG1vdmUgdGhpcyB0ZW1wbGF0ZWQg
ZnVuY3Rpb24gdG8gYSBuZXcgSW5saW5lcyBoZWFkZXIsIGFuZCBoYXZlIGNhbGxlcnMgaW5jbHVk
ZSB0aGF0CisgICAgICAgIGhlYWRlci4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6Om1l
YXN1cmVUZXh0Q29uc2lkZXJpbmdQb3NzaWJsZVRyYWlsaW5nU3BhY2UpOgorICAgICAgICAqIHJl
bmRlcmluZy9saW5lL0JyZWFraW5nQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6QnJlYWtp
bmdDb250ZXh0Ojp0ZXh0V2lkdGhDb25zaWRlcmluZ1Bvc3NpYmxlVHJhaWxpbmdTcGFjZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpCcmVha2luZ0NvbnRleHQ6OmNvbXB1dGVBZGRpdGlvbmFsQmV0d2Vl
bldvcmRzV2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6V29yZFRyYWlsaW5nU3BhY2U6OldvcmRU
cmFpbGluZ1NwYWNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldvcmRUcmFpbGluZ1Nw
YWNlOjp3aWR0aCk6IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVyaW5nL2xpbmUvV29yZFRyYWls
aW5nU3BhY2UuaDogQWRkZWQuIEJyZWFraW5nQ29udGV4dC5oIGRlZmluZXMgV29yZFRyYWlsaW5n
U3BhY2UsIGJ1dCBpdCBuZWVkcworICAgICAgICB0byBiZSBhYmxlIHRvIGNhbGwgbWVhc3VyZVRl
eHRDb25zaWRlcmluZ1Bvc3NpYmxlVHJhaWxpbmdTcGFjZSgpLCB3aGljaCBuZWVkcyB0byBiZSBh
YmxlIHRvIHNlZSBpbnNpZGUKKyAgICAgICAgV29yZFRyYWlsaW5nU3BhY2UuIEF2b2lkIHRoZSBj
aXJjdWxhciBkZXBlbmRlbmN5IGJ5IHNwbGl0dGluZyBvdXQgV29yZFRyYWlsaW5nU3BhY2UgaW50
byBpdHMgb3duIGZpbGUuCisgICAgICAgIChXZWJDb3JlOjpXb3JkVHJhaWxpbmdTcGFjZTo6V29y
ZFRyYWlsaW5nU3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6V29yZFRyYWlsaW5nU3BhY2U6Ondp
ZHRoKToKKwogMjAyMS0xMi0xNiAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUu
Y29tPgogCiAgICAgICAgIFJlZmFjdG9yIGh5cGhlbmF0aW9uIGxvZ2ljIGluIFJlbmRlclRleHQ6
OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA0NzNiNzg5YjQ0M2UuLmRmZGEw
MGE5ODQxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtNzA2Myw2ICs3MDYzLDggQEAKIAkJMUMwOTM5RTkxQTEzRTEyOTAwQjc4
OEU1IC8qIENhY2hlZFNWR0ZvbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Q2FjaGVkU1ZHRm9udC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzA5RDA0QjFF
MzFDMzI4MDA3MjVGMTggLyogUEFMLnhjb2RlcHJvaiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9ICJ3cmFwcGVyLnBiLXByb2plY3QiOyBuYW1lID0gUEFM
Lnhjb2RlcHJvajsgcGF0aCA9IFBBTC9QQUwueGNvZGVwcm9qOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkxQzBBQTE2QTIxOTQwREM3MDA4OTY4MjkgLyogU3R5bGVDb2xvclNjaGVtZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHlsZUNvbG9yU2NoZW1lLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDMEJFOTQzMjc2QzYwQkMwMDVGQjZDMSAvKiBS
ZW5kZXJUZXh0SW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJUZXh0SW5saW5lcy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzBCRTk0NzI3NkM2NjAzMDA1RkI2QzEgLyog
V29yZFRyYWlsaW5nU3BhY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV29yZFRyYWlsaW5nU3BhY2UuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUMxMkFDMjgxRUU3NzhBRTAwNzlFMEEwIC8q
IEZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
Rm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTFDMTJBQzI5MUVFNzc4QUUwMDc5RTBBMCAvKiBGb250RmFtaWx5U3BlY2lmaWNh
dGlvbkNvcmVUZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29y
ZVRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUMxMkFDMkMxRUU3Nzk5NTAw
NzlFMEEwIC8qIEZvbnREZXNjcmlwdGlvbkNvY29hLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZv
bnREZXNjcmlwdGlvbkNvY29hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMx
OTY2LDYgKzMxOTY4LDcgQEAKIAkJCQlFNEM5MUEwRjE4MDIzNDM5MDBBMTdGNkQgLyogVGV4dFBh
aW50U3R5bGUuY3BwICovLAogCQkJCUU0QzkxQTBEMTgwMjM0MzEwMEExN0Y2RCAvKiBUZXh0UGFp
bnRTdHlsZS5oICovLAogCQkJCUJDQTI1NzE0MTI5M0MwMTAwMDdBMjYzRCAvKiBWZXJ0aWNhbFBv
c2l0aW9uQ2FjaGUuaCAqLywKKwkJCQkxQzBCRTk0MzI3NkM2MEJDMDA1RkI2QzEgLyogUmVuZGVy
VGV4dElubGluZXMuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gcmVuZGVyaW5nOwogCQkJc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTMzMDY1LDYgKzMzMDY4LDcgQEAKIAkJCQlGRkRCQzA0NTE4
M0QyN0I3MDA0MDcxMDkgLyogTGluZVdpZHRoLmggKi8sCiAJCQkJRkZBQzMwRkQxODRGQjE0NTAw
OEM0RjFFIC8qIFRyYWlsaW5nT2JqZWN0cy5jcHAgKi8sCiAJCQkJRkZBQzMwRkMxODRGQjE0NTAw
OEM0RjFFIC8qIFRyYWlsaW5nT2JqZWN0cy5oICovLAorCQkJCTFDMEJFOTQ3Mjc2QzY2MDMwMDVG
QjZDMSAvKiBXb3JkVHJhaWxpbmdTcGFjZS5oICovLAogCQkJKTsKIAkJCXBhdGggPSBsaW5lOwog
CQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTMzMTIxLDcgKzMzMTI1LDYgQEAKIAkJCWlz
YSA9IFBCWEhlYWRlcnNCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0
NzsKIAkJCWZpbGVzID0gKAotCQkJCTdCNTgyREQ4MjcxNkY1NUIwMDRCOTJEMCAvKiAobnVsbCkg
aW4gSGVhZGVycyAqLywKIAkJCQk3Q0QwRTJCODFGODBBNDgyMDAxNkE0Q0UgLyogQWJvcnRDb250
cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk3Q0QwRTJCRjFGODBBNTZFMDAxNkE0Q0UgLyog
QWJvcnRTaWduYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2Qjk1MTk1MjA3RDYzMzQwMEE3RDJE
RCAvKiBBYnN0cmFjdERPTVdpbmRvdy5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGV4dC5jcHAKaW5kZXggMDA4ODE4YmUzZTc3Li5hNGIwYzI4Mjk1Y2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKQEAgLTEsNyArMSw3IEBACiAv
KgogICogKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAqIChDKSAyMDAwIERp
cmsgTXVlbGxlciAobXVlbGxlckBrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LTIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA2
IEFuZHJldyBXZWxsaW5ndG9uIChwcm90b25Ad2lyZXRhcHBlZC5uZXQpCiAgKiBDb3B5cmlnaHQg
KEMpIDIwMDYgR3JhaGFtIERlbm5pcyAoZ3JhaGFtLmRlbm5pc0BnbWFpbC5jb20pCiAgKgpAQCAt
NDcsNiArNDcsNyBAQAogI2luY2x1ZGUgIlJlbmRlckNvbWJpbmVUZXh0LmgiCiAjaW5jbHVkZSAi
UmVuZGVySW5saW5lLmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKKyNpbmNsdWRlICJSZW5k
ZXJUZXh0SW5saW5lcy5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJSZW5k
ZXJlZERvY3VtZW50TWFya2VyLmgiCiAjaW5jbHVkZSAiU1ZHRWxlbWVudFR5cGVIZWxwZXJzLmgi
CkBAIC03MTcsNiArNzE4LDEzIEBAIEFMV0FZU19JTkxJTkUgZmxvYXQgUmVuZGVyVGV4dDo6d2lk
dGhGcm9tQ2FjaGUoY29uc3QgRm9udENhc2NhZGUmIGYsIHVuc2lnbmVkIHN0CiAgICAgcmV0dXJu
IGYud2lkdGgocnVuLCBmYWxsYmFja0ZvbnRzLCBnbHlwaE92ZXJmbG93KTsKIH0KIAorQUxXQVlT
X0lOTElORSBmbG9hdCBSZW5kZXJUZXh0Ojp3aWR0aEZyb21DYWNoZUNvbnNpZGVyaW5nUG9zc2li
bGVUcmFpbGluZ1NwYWNlKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3QgRm9udENhc2Nh
ZGUmIGZvbnQsIHVuc2lnbmVkIHN0YXJ0SW5kZXgsIHVuc2lnbmVkIHdvcmRMZW4sIGZsb2F0IHhQ
b3MsIGJvb2wgY3VycmVudENoYXJhY3RlcklzU3BhY2UsIFdvcmRUcmFpbGluZ1NwYWNlJiB3b3Jk
VHJhaWxpbmdTcGFjZSwgSGFzaFNldDxjb25zdCBGb250Kj4mIGZhbGxiYWNrRm9udHMsIEdseXBo
T3ZlcmZsb3cmIGdseXBoT3ZlcmZsb3cpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1lYXN1cmVUZXh0
Q29uc2lkZXJpbmdQb3NzaWJsZVRyYWlsaW5nU3BhY2UoY3VycmVudENoYXJhY3RlcklzU3BhY2Us
IHN0YXJ0SW5kZXgsIHdvcmRMZW4sIHdvcmRUcmFpbGluZ1NwYWNlLCBmYWxsYmFja0ZvbnRzLCBb
Jl0gKHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIGxlbikgeworICAgICAgICByZXR1cm4gd2lkdGhG
cm9tQ2FjaGUoZm9udCwgZnJvbSwgbGVuLCB4UG9zLCAmZmFsbGJhY2tGb250cywgJmdseXBoT3Zl
cmZsb3csIHN0eWxlKTsKKyAgICB9KTsKK30KKwogaW5saW5lIGJvb2wgaXNIYW5nYWJsZVB1bmN0
dWF0aW9uQXRMaW5lU3RhcnQoVUNoYXIgYykKIHsKICAgICByZXR1cm4gVV9HRVRfR0NfTUFTSyhj
KSAmIChVX0dDX1BTX01BU0sgfCBVX0dDX1BJX01BU0sgfCBVX0dDX1BGX01BU0spOwpAQCAtOTcz
LDE1ICs5ODEsNyBAQCBmbG9hdCBSZW5kZXJUZXh0OjptYXhXb3JkRnJhZ21lbnRXaWR0aChjb25z
dCBSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IEZvbnRDYXNjYQogICAgICAgICByZXR1cm4gZW50
aXJlV29yZFdpZHRoOwogICAgIH0KIAotICAgIGZsb2F0IHN1ZmZpeFdpZHRoOwotICAgIHN0ZDo6
b3B0aW9uYWw8ZmxvYXQ+IHdvcmRUcmFpbGluZ1NwYWNlV2lkdGg7Ci0gICAgaWYgKGN1cnJlbnRD
aGFyYWN0ZXJJc1NwYWNlKQotICAgICAgICB3b3JkVHJhaWxpbmdTcGFjZVdpZHRoID0gd29yZFRy
YWlsaW5nU3BhY2Uud2lkdGgoZmFsbGJhY2tGb250cyk7Ci0gICAgaWYgKHdvcmRUcmFpbGluZ1Nw
YWNlV2lkdGgpCi0gICAgICAgIHN1ZmZpeFdpZHRoID0gd2lkdGhGcm9tQ2FjaGUoZm9udCwgY2hh
cmFjdGVySW5kZXggKyBzdWZmaXhTdGFydCwgd29yZC5sZW5ndGgoKSAtIHN1ZmZpeFN0YXJ0ICsg
MSwgeFBvcywgMCwgMCwgc3R5bGUpIC0gd29yZFRyYWlsaW5nU3BhY2VXaWR0aC52YWx1ZSgpOwot
ICAgIGVsc2UKLSAgICAgICAgc3VmZml4V2lkdGggPSB3aWR0aEZyb21DYWNoZShmb250LCBjaGFy
YWN0ZXJJbmRleCArIHN1ZmZpeFN0YXJ0LCB3b3JkLmxlbmd0aCgpIC0gc3VmZml4U3RhcnQsIHhQ
b3MsIDAsIDAsIHN0eWxlKTsKLQorICAgIGF1dG8gc3VmZml4V2lkdGggPSB3aWR0aEZyb21DYWNo
ZUNvbnNpZGVyaW5nUG9zc2libGVUcmFpbGluZ1NwYWNlKHN0eWxlLCBmb250LCBjaGFyYWN0ZXJJ
bmRleCArIHN1ZmZpeFN0YXJ0LCB3b3JkLmxlbmd0aCgpIC0gc3VmZml4U3RhcnQsIHhQb3MsIGN1
cnJlbnRDaGFyYWN0ZXJJc1NwYWNlLCB3b3JkVHJhaWxpbmdTcGFjZSwgZmFsbGJhY2tGb250cywg
Z2x5cGhPdmVyZmxvdyk7CiAgICAgcmV0dXJuIHN0ZDo6bWF4KG1heEZyYWdtZW50V2lkdGgsIHN1
ZmZpeFdpZHRoKTsKIH0KIApAQCAtMTExNSwxNyArMTExNSw5IEBAIHZvaWQgUmVuZGVyVGV4dDo6
Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoZmxvYXQgbGVhZFdpZHRoLCBIYXNoU2V0PGNv
bnN0IEZvCiAgICAgICAgIGlmICh3b3JkTGVuKSB7CiAgICAgICAgICAgICBmbG9hdCBjdXJyTWlu
V2lkdGggPSAwOwogICAgICAgICAgICAgYm9vbCBpc1NwYWNlID0gKGogPCBsZW5ndGgpICYmIGlz
U3BhY2VBY2NvcmRpbmdUb1N0eWxlKGMsIHN0eWxlKTsKLSAgICAgICAgICAgIGZsb2F0IHc7Ci0g
ICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPGZsb2F0PiB3b3JkVHJhaWxpbmdTcGFjZVdpZHRoOwot
ICAgICAgICAgICAgaWYgKGlzU3BhY2UpCi0gICAgICAgICAgICAgICAgd29yZFRyYWlsaW5nU3Bh
Y2VXaWR0aCA9IHdvcmRUcmFpbGluZ1NwYWNlLndpZHRoKGZhbGxiYWNrRm9udHMpOwotICAgICAg
ICAgICAgaWYgKHdvcmRUcmFpbGluZ1NwYWNlV2lkdGgpCi0gICAgICAgICAgICAgICAgdyA9IHdp
ZHRoRnJvbUNhY2hlKGZvbnQsIGksIHdvcmRMZW4gKyAxLCBsZWFkV2lkdGggKyBjdXJyTWF4V2lk
dGgsICZmYWxsYmFja0ZvbnRzLCAmZ2x5cGhPdmVyZmxvdywgc3R5bGUpIC0gd29yZFRyYWlsaW5n
U3BhY2VXaWR0aC52YWx1ZSgpOwotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAg
dyA9IHdpZHRoRnJvbUNhY2hlKGZvbnQsIGksIHdvcmRMZW4sIGxlYWRXaWR0aCArIGN1cnJNYXhX
aWR0aCwgJmZhbGxiYWNrRm9udHMsICZnbHlwaE92ZXJmbG93LCBzdHlsZSk7Ci0gICAgICAgICAg
ICAgICAgaWYgKGMgPT0gc29mdEh5cGhlbiAmJiBzdHlsZS5oeXBoZW5zKCkgIT0gSHlwaGVuczo6
Tm9uZSkKLSAgICAgICAgICAgICAgICAgICAgY3Vyck1pbldpZHRoID0gaHlwaGVuV2lkdGgoKnRo
aXMsIGZvbnQpOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgZmxvYXQgdyA9IHdpZHRoRnJv
bUNhY2hlQ29uc2lkZXJpbmdQb3NzaWJsZVRyYWlsaW5nU3BhY2Uoc3R5bGUsIGZvbnQsIGksIHdv
cmRMZW4sIGxlYWRXaWR0aCArIGN1cnJNYXhXaWR0aCwgaXNTcGFjZSwgd29yZFRyYWlsaW5nU3Bh
Y2UsIGZhbGxiYWNrRm9udHMsIGdseXBoT3ZlcmZsb3cpOworICAgICAgICAgICAgaWYgKGMgPT0g
c29mdEh5cGhlbiAmJiBzdHlsZS5oeXBoZW5zKCkgIT0gSHlwaGVuczo6Tm9uZSkKKyAgICAgICAg
ICAgICAgICBjdXJyTWluV2lkdGggPSBoeXBoZW5XaWR0aCgqdGhpcywgZm9udCk7CiAKICAgICAg
ICAgICAgIGlmICh3ID4gbWF4V29yZFdpZHRoKSB7CiAgICAgICAgICAgICAgICAgYXV0byBtYXhG
cmFnbWVudFdpZHRoID0gbWF4V29yZEZyYWdtZW50V2lkdGgoc3R5bGUsIGZvbnQsIFN0cmluZ1Zp
ZXcoc3RyaW5nKS5zdWJzdHJpbmcoaSwgd29yZExlbiksIG1pbmltdW1QcmVmaXhMZW5ndGgsIG1p
bmltdW1TdWZmaXhMZW5ndGgsIGlzU3BhY2UsIGksIGxlYWRXaWR0aCArIGN1cnJNYXhXaWR0aCwg
dywgd29yZFRyYWlsaW5nU3BhY2UsIGZhbGxiYWNrRm9udHMsIGdseXBoT3ZlcmZsb3cpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmgKaW5kZXggY2UzMDBkNzMwNGNkLi5iODRhMTZl
ZGI0MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuaApAQCAtMSw3ICsxLDcg
QEAKIC8qCiAgKiAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQogICogKEMpIDIw
MDAgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQt
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDQtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICog
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKQEAgLTE4Myw2ICsxODMsOSBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgUmVuZGVyVGV4dCog
ZmluZEJ5RGlzcGxheUNvbnRlbnRzSW5saW5lV3JhcHBlckNhbmRpZGF0ZShSZW5kZXJFbGVtZW50
Jik7CiAKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2FsbGJhY2s+CisgICAgc3RhdGljIGZsb2F0
IG1lYXN1cmVUZXh0Q29uc2lkZXJpbmdQb3NzaWJsZVRyYWlsaW5nU3BhY2UoYm9vbCBjdXJyZW50
Q2hhcmFjdGVySXNTcGFjZSwgdW5zaWduZWQgc3RhcnRJbmRleCwgdW5zaWduZWQgd29yZExlbmd0
aCwgV29yZFRyYWlsaW5nU3BhY2UmLCBIYXNoU2V0PGNvbnN0IEZvbnQqPiYgZmFsbGJhY2tGb250
cywgQ2FsbGJhY2smJik7CisKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZVBy
ZWZlcnJlZExvZ2ljYWxXaWR0aHMoZmxvYXQgbGVhZFdpZHRoKTsKICAgICB2b2lkIHdpbGxCZURl
c3Ryb3llZCgpIG92ZXJyaWRlOwpAQCAtMjI0LDYgKzIyNyw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBjb250YWluZXIoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCYsIGJvb2wmKSBjb25zdCA9
IGRlbGV0ZTsgLy8gVXNlIHBhcmVudCgpIGluc3RlYWQuCiAKICAgICBmbG9hdCBtYXhXb3JkRnJh
Z21lbnRXaWR0aChjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IEZvbnRDYXNjYWRlJiwgU3RyaW5n
VmlldyB3b3JkLCB1bnNpZ25lZCBtaW5pbXVtUHJlZml4TGVuZ3RoLCB1bnNpZ25lZCBtaW5pbXVt
U3VmZml4TGVuZ3RoLCBib29sIGN1cnJlbnRDaGFyYWN0ZXJJc1NwYWNlLCB1bnNpZ25lZCBjaGFy
YWN0ZXJJbmRleCwgZmxvYXQgeFBvcywgZmxvYXQgZW50aXJlV29yZFdpZHRoLCBXb3JkVHJhaWxp
bmdTcGFjZSYsIEhhc2hTZXQ8Y29uc3QgRm9udCo+JiBmYWxsYmFja0ZvbnRzLCBHbHlwaE92ZXJm
bG93Jik7CisgICAgZmxvYXQgd2lkdGhGcm9tQ2FjaGVDb25zaWRlcmluZ1Bvc3NpYmxlVHJhaWxp
bmdTcGFjZShjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IEZvbnRDYXNjYWRlJiwgdW5zaWduZWQg
c3RhcnRJbmRleCwgdW5zaWduZWQgd29yZExlbiwgZmxvYXQgeFBvcywgYm9vbCBjdXJyZW50Q2hh
cmFjdGVySXNTcGFjZSwgV29yZFRyYWlsaW5nU3BhY2UmLCBIYXNoU2V0PGNvbnN0IEZvbnQqPiYg
ZmFsbGJhY2tGb250cywgR2x5cGhPdmVyZmxvdyYpIGNvbnN0OwogCiAgICAgLy8gV2UgcHV0IHRo
ZSBiaXRmaWVsZCBmaXJzdCB0byBtaW5pbWl6ZSBwYWRkaW5nIG9uIDY0LWJpdC4KICAgICB1bnNp
Z25lZCBtX2hhc0JyZWFrYWJsZUNoYXIgOiAxOyAvLyBXaGV0aGVyIG9yIG5vdCB3ZSBjYW4gYmUg
YnJva2VuIGludG8gbXVsdGlwbGUgbGluZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGV4dElubGluZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUZXh0SW5saW5lcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MC4uOThlMTI3YmZlZGFjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRleHRJbmxpbmVzLmgKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgor
ICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
c2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2luY2x1ZGUgIlJlbmRlclRleHQuaCIKKyNpbmNsdWRlICJXb3JkVHJhaWxpbmdTcGFj
ZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBDYWxsYmFj
az4KK2Zsb2F0IFJlbmRlclRleHQ6Om1lYXN1cmVUZXh0Q29uc2lkZXJpbmdQb3NzaWJsZVRyYWls
aW5nU3BhY2UoYm9vbCBjdXJyZW50Q2hhcmFjdGVySXNTcGFjZSwgdW5zaWduZWQgc3RhcnRJbmRl
eCwgdW5zaWduZWQgd29yZExlbmd0aCwgV29yZFRyYWlsaW5nU3BhY2UmIHdvcmRUcmFpbGluZ1Nw
YWNlLCBIYXNoU2V0PGNvbnN0IEZvbnQqPiYgZmFsbGJhY2tGb250cywgQ2FsbGJhY2smJiBjYWxs
YmFjaykKK3sKKyAgICBzdGQ6Om9wdGlvbmFsPGZsb2F0PiB3b3JkVHJhaWxpbmdTcGFjZVdpZHRo
OworICAgIGlmIChjdXJyZW50Q2hhcmFjdGVySXNTcGFjZSkKKyAgICAgICAgd29yZFRyYWlsaW5n
U3BhY2VXaWR0aCA9IHdvcmRUcmFpbGluZ1NwYWNlLndpZHRoKGZhbGxiYWNrRm9udHMpOworICAg
IGlmICh3b3JkVHJhaWxpbmdTcGFjZVdpZHRoKQorICAgICAgICByZXR1cm4gY2FsbGJhY2soc3Rh
cnRJbmRleCwgd29yZExlbmd0aCArIDEpIC0gd29yZFRyYWlsaW5nU3BhY2VXaWR0aC52YWx1ZSgp
OworICAgIHJldHVybiBjYWxsYmFjayhzdGFydEluZGV4LCB3b3JkTGVuZ3RoKTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L2xpbmUvQnJlYWtpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9C
cmVha2luZ0NvbnRleHQuaAppbmRleCAzZDlmZjk5NWJiYzMuLmE5Njk4NWJhZGQyMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvQnJlYWtpbmdDb250ZXh0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvQnJlYWtpbmdDb250ZXh0LmgKQEAgLTEs
NiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDAwIExhcnMgS25vbGwgKGtub2xsQGtk
ZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDYsIDIwMDcsIDIwMDgsIDIw
MDksIDIwMTAsIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHQgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMDMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodCByZXNlcnZlZC4KICAqIENvcHly
aWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJp
Z2h0IChDKSAyMDEzIENoYW5nU2VvayBPaCA8c2hpdmFtaWRvd0BnbWFpbC5jb20+CiAgKiBDb3B5
cmlnaHQgKEMpIDIwMTMgQWRvYmUgU3lzdGVtcyBJbmMuIEFsbCByaWdodCByZXNlcnZlZC4KQEAg
LTM4LDcgKzM4LDkgQEAKICNpbmNsdWRlICJSZW5kZXJMaXN0TWFya2VyLmgiCiAjaW5jbHVkZSAi
UmVuZGVyUnVieVJ1bi5oIgogI2luY2x1ZGUgIlJlbmRlclNWR0lubGluZVRleHQuaCIKKyNpbmNs
dWRlICJSZW5kZXJUZXh0SW5saW5lcy5oIgogI2luY2x1ZGUgIlRyYWlsaW5nT2JqZWN0cy5oIgor
I2luY2x1ZGUgIldvcmRUcmFpbGluZ1NwYWNlLmgiCiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVmlldy5oPgogI2luY2x1ZGUgPHd0Zi91bmljb2Rl
L0NoYXJhY3Rlck5hbWVzLmg+CkBAIC02NCwzMiArNjYsNiBAQCBzdHJ1Y3QgV29yZE1lYXN1cmVt
ZW50IHsKICAgICBIYXNoU2V0PGNvbnN0IEZvbnQqPiBmYWxsYmFja0ZvbnRzOwogfTsKIAotc3Ry
dWN0IFdvcmRUcmFpbGluZ1NwYWNlIHsKLSAgICBXb3JkVHJhaWxpbmdTcGFjZShjb25zdCBSZW5k
ZXJTdHlsZSYgc3R5bGUsIGJvb2wgbWVhc3VyaW5nV2l0aFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJs
ZWQgPSB0cnVlKQotICAgICAgICA6IG1fc3R5bGUoc3R5bGUpCi0gICAgewotICAgICAgICBpZiAo
IW1lYXN1cmluZ1dpdGhUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkIHx8ICFtX3N0eWxlLmZvbnRD
YXNjYWRlKCkuZW5hYmxlS2VybmluZygpKQotICAgICAgICAgICAgbV9zdGF0ZSA9IFdvcmRUcmFp
bGluZ1NwYWNlU3RhdGU6OkluaXRpYWxpemVkOwotICAgIH0KLQotICAgIHN0ZDo6b3B0aW9uYWw8
ZmxvYXQ+IHdpZHRoKEhhc2hTZXQ8Y29uc3QgRm9udCo+JiBmYWxsYmFja0ZvbnRzKQotICAgIHsK
LSAgICAgICAgaWYgKG1fc3RhdGUgPT0gV29yZFRyYWlsaW5nU3BhY2VTdGF0ZTo6SW5pdGlhbGl6
ZWQpCi0gICAgICAgICAgICByZXR1cm4gbV93aWR0aDsKLQotICAgICAgICBhdXRvJiBmb250ID0g
bV9zdHlsZS5mb250Q2FzY2FkZSgpOwotICAgICAgICBtX3dpZHRoID0gZm9udC53aWR0aChSZW5k
ZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bigmc3BhY2UsIDEsIG1fc3R5bGUpLCAmZmFsbGJhY2tG
b250cykgKyBmb250LndvcmRTcGFjaW5nKCk7Ci0gICAgICAgIG1fc3RhdGUgPSBXb3JkVHJhaWxp
bmdTcGFjZVN0YXRlOjpJbml0aWFsaXplZDsKLSAgICAgICAgcmV0dXJuIG1fd2lkdGg7Ci0gICAg
fQotCi1wcml2YXRlOgotICAgIGVudW0gY2xhc3MgV29yZFRyYWlsaW5nU3BhY2VTdGF0ZSB7IFVu
aW5pdGlhbGl6ZWQsIEluaXRpYWxpemVkIH07Ci0gICAgY29uc3QgUmVuZGVyU3R5bGUmIG1fc3R5
bGU7Ci0gICAgV29yZFRyYWlsaW5nU3BhY2VTdGF0ZSBtX3N0YXRlIHsgV29yZFRyYWlsaW5nU3Bh
Y2VTdGF0ZTo6VW5pbml0aWFsaXplZCB9OwotICAgIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IG1fd2lk
dGg7Ci19OwotCiBjbGFzcyBCcmVha2luZ0NvbnRleHQgewogcHVibGljOgogICAgIEJyZWFraW5n
Q29udGV4dChMaW5lQnJlYWtlciYgbGluZUJyZWFrZXIsIElubGluZUJpZGlSZXNvbHZlciYgcmVz
b2x2ZXIsIExpbmVJbmZvJiBpbkxpbmVJbmZvLCBMaW5lV2lkdGgmIGxpbmVXaWR0aCwgUmVuZGVy
VGV4dEluZm8mIGluUmVuZGVyVGV4dEluZm8sIEZsb2F0aW5nT2JqZWN0KiBpbkxhc3RGbG9hdEZy
b21QcmV2aW91c0xpbmUsIGJvb2wgYXBwbGllZFN0YXJ0V2lkdGgsIFJlbmRlckJsb2NrRmxvdyYg
YmxvY2spCkBAIC0xNTEsNiArMTI3LDcgQEAgcHVibGljOgogICAgIExlZ2FjeUlubGluZUl0ZXJh
dG9yIGhhbmRsZUVuZE9mTGluZSgpOwogICAgIAogICAgIGZsb2F0IGNvbXB1dGVBZGRpdGlvbmFs
QmV0d2VlbldvcmRzV2lkdGgoUmVuZGVyVGV4dCYsIFRleHRMYXlvdXQqLCBVQ2hhciwgV29yZFRy
YWlsaW5nU3BhY2UmLCBIYXNoU2V0PGNvbnN0IEZvbnQqPiYgZmFsbGJhY2tGb250cywgV29yZE1l
YXN1cmVtZW50cyYsIGNvbnN0IEZvbnRDYXNjYWRlJiwgYm9vbCBpc0ZpeGVkUGl0Y2gsIHVuc2ln
bmVkIGxhc3RTcGFjZSwgZmxvYXQgbGFzdFNwYWNlV29yZFNwYWNpbmcsIGZsb2F0IHdvcmRTcGFj
aW5nRm9yV29yZE1lYXN1cmVtZW50LCB1bnNpZ25lZCBvZmZzZXQpOworICAgIGZsb2F0IHRleHRX
aWR0aENvbnNpZGVyaW5nUG9zc2libGVUcmFpbGluZ1NwYWNlKFJlbmRlclRleHQmIHJlbmRlclRl
eHQsIFRleHRMYXlvdXQqIHRleHRMYXlvdXQsIFVDaGFyIGN1cnJlbnRDaGFyYWN0ZXIsIFdvcmRU
cmFpbGluZ1NwYWNlJiB3b3JkVHJhaWxpbmdTcGFjZSwgSGFzaFNldDxjb25zdCBGb250Kj4mIGZh
bGxiYWNrRm9udHMsIEhhc2hTZXQ8Y29uc3QgRm9udCo+JiB3b3JkTWVhc3VyZW1lbnRGYWxsYmFj
a0ZvbnRzLCBjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgYm9vbCBpc0ZpeGVkUGl0Y2gsIHVuc2ln
bmVkIGxhc3RTcGFjZSwgdW5zaWduZWQgb2Zmc2V0KTsKIAogICAgIHZvaWQgY2xlYXJMaW5lQnJl
YWtJZkZpdHNPbkxpbmUoYm9vbCBpZ25vcmluZ1RyYWlsaW5nU3BhY2UgPSBmYWxzZSkKICAgICB7
CkBAIC02MzEsNiArNjA4LDEzIEBAIGlubGluZSB2b2lkIHRyeUh5cGhlbmF0aW5nKFJlbmRlclRl
eHQmIHRleHQsIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBjb25zdCBBdG9tCiAgICAgaHlwaGVu
YXRlZCA9IHRydWU7CiB9CiAKK2lubGluZSBmbG9hdCBCcmVha2luZ0NvbnRleHQ6OnRleHRXaWR0
aENvbnNpZGVyaW5nUG9zc2libGVUcmFpbGluZ1NwYWNlKFJlbmRlclRleHQmIHJlbmRlclRleHQs
IFRleHRMYXlvdXQqIHRleHRMYXlvdXQsIFVDaGFyIGN1cnJlbnRDaGFyYWN0ZXIsIFdvcmRUcmFp
bGluZ1NwYWNlJiB3b3JkVHJhaWxpbmdTcGFjZSwgSGFzaFNldDxjb25zdCBGb250Kj4mIGZhbGxi
YWNrRm9udHMsIEhhc2hTZXQ8Y29uc3QgRm9udCo+JiB3b3JkTWVhc3VyZW1lbnRGYWxsYmFja0Zv
bnRzLCBjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgYm9vbCBpc0ZpeGVkUGl0Y2gsIHVuc2lnbmVk
IGxhc3RTcGFjZSwgdW5zaWduZWQgb2Zmc2V0KQoreworICAgIHJldHVybiBSZW5kZXJUZXh0Ojpt
ZWFzdXJlVGV4dENvbnNpZGVyaW5nUG9zc2libGVUcmFpbGluZ1NwYWNlKGN1cnJlbnRDaGFyYWN0
ZXIgPT0gc3BhY2UsIGxhc3RTcGFjZSwgb2Zmc2V0IC0gbGFzdFNwYWNlLCB3b3JkVHJhaWxpbmdT
cGFjZSwgZmFsbGJhY2tGb250cywgWyZdICh1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCBsZW4pIHsK
KyAgICAgICAgcmV0dXJuIHRleHRXaWR0aChyZW5kZXJUZXh0LCBmcm9tLCBsZW4sIGZvbnQsIG1f
d2lkdGguY3VycmVudFdpZHRoKCksIGlzRml4ZWRQaXRjaCwgbV9jb2xsYXBzZVdoaXRlU3BhY2Us
IHdvcmRNZWFzdXJlbWVudEZhbGxiYWNrRm9udHMsIHRleHRMYXlvdXQpOworICAgIH0pOworfQor
CiBpbmxpbmUgZmxvYXQgQnJlYWtpbmdDb250ZXh0Ojpjb21wdXRlQWRkaXRpb25hbEJldHdlZW5X
b3Jkc1dpZHRoKFJlbmRlclRleHQmIHJlbmRlclRleHQsIFRleHRMYXlvdXQqIHRleHRMYXlvdXQs
IFVDaGFyIGN1cnJlbnRDaGFyYWN0ZXIsIFdvcmRUcmFpbGluZ1NwYWNlJiB3b3JkVHJhaWxpbmdT
cGFjZSwgSGFzaFNldDxjb25zdCBGb250Kj4mIGZhbGxiYWNrRm9udHMsIFdvcmRNZWFzdXJlbWVu
dHMmIHdvcmRNZWFzdXJlbWVudHMsIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBib29sIGlzRml4
ZWRQaXRjaCwgdW5zaWduZWQgbGFzdFNwYWNlLCBmbG9hdCBsYXN0U3BhY2VXb3JkU3BhY2luZywg
ZmxvYXQgd29yZFNwYWNpbmdGb3JXb3JkTWVhc3VyZW1lbnQsIHVuc2lnbmVkIG9mZnNldCkKIHsK
ICAgICB3b3JkTWVhc3VyZW1lbnRzLmdyb3cod29yZE1lYXN1cmVtZW50cy5zaXplKCkgKyAxKTsK
QEAgLTY0MCwxNCArNjI0LDcgQEAgaW5saW5lIGZsb2F0IEJyZWFraW5nQ29udGV4dDo6Y29tcHV0
ZUFkZGl0aW9uYWxCZXR3ZWVuV29yZHNXaWR0aChSZW5kZXJUZXh0JiByZW4KICAgICB3b3JkTWVh
c3VyZW1lbnQuZW5kT2Zmc2V0ID0gb2Zmc2V0OwogICAgIHdvcmRNZWFzdXJlbWVudC5zdGFydE9m
ZnNldCA9IGxhc3RTcGFjZTsKICAgICAKLSAgICBmbG9hdCBhZGRpdGlvbmFsVGVtcFdpZHRoID0g
MDsKLSAgICBzdGQ6Om9wdGlvbmFsPGZsb2F0PiB3b3JkVHJhaWxpbmdTcGFjZVdpZHRoOwotICAg
IGlmIChjdXJyZW50Q2hhcmFjdGVyID09ICcgJykKLSAgICAgICAgd29yZFRyYWlsaW5nU3BhY2VX
aWR0aCA9IHdvcmRUcmFpbGluZ1NwYWNlLndpZHRoKGZhbGxiYWNrRm9udHMpOwotICAgIGlmICh3
b3JkVHJhaWxpbmdTcGFjZVdpZHRoKQotICAgICAgICBhZGRpdGlvbmFsVGVtcFdpZHRoID0gdGV4
dFdpZHRoKHJlbmRlclRleHQsIGxhc3RTcGFjZSwgb2Zmc2V0ICsgMSAtIGxhc3RTcGFjZSwgZm9u
dCwgbV93aWR0aC5jdXJyZW50V2lkdGgoKSwgaXNGaXhlZFBpdGNoLCBtX2NvbGxhcHNlV2hpdGVT
cGFjZSwgd29yZE1lYXN1cmVtZW50LmZhbGxiYWNrRm9udHMsIHRleHRMYXlvdXQpIC0gd29yZFRy
YWlsaW5nU3BhY2VXaWR0aC52YWx1ZSgpOwotICAgIGVsc2UKLSAgICAgICAgYWRkaXRpb25hbFRl
bXBXaWR0aCA9IHRleHRXaWR0aChyZW5kZXJUZXh0LCBsYXN0U3BhY2UsIG9mZnNldCAtIGxhc3RT
cGFjZSwgZm9udCwgbV93aWR0aC5jdXJyZW50V2lkdGgoKSwgaXNGaXhlZFBpdGNoLCBtX2NvbGxh
cHNlV2hpdGVTcGFjZSwgd29yZE1lYXN1cmVtZW50LmZhbGxiYWNrRm9udHMsIHRleHRMYXlvdXQp
OworICAgIGZsb2F0IGFkZGl0aW9uYWxUZW1wV2lkdGggPSB0ZXh0V2lkdGhDb25zaWRlcmluZ1Bv
c3NpYmxlVHJhaWxpbmdTcGFjZShyZW5kZXJUZXh0LCB0ZXh0TGF5b3V0LCBjdXJyZW50Q2hhcmFj
dGVyLCB3b3JkVHJhaWxpbmdTcGFjZSwgZmFsbGJhY2tGb250cywgd29yZE1lYXN1cmVtZW50LmZh
bGxiYWNrRm9udHMsIGZvbnQsIGlzRml4ZWRQaXRjaCwgbGFzdFNwYWNlLCBvZmZzZXQpOwogICAg
IAogICAgIGlmICh3b3JkTWVhc3VyZW1lbnQuZmFsbGJhY2tGb250cy5pc0VtcHR5KCkgJiYgIWZh
bGxiYWNrRm9udHMuaXNFbXB0eSgpKQogICAgICAgICB3b3JkTWVhc3VyZW1lbnQuZmFsbGJhY2tG
b250cy5zd2FwKGZhbGxiYWNrRm9udHMpOwpAQCAtMTI1Miw0ICsxMjI5LDQgQEAgaW5saW5lIExl
Z2FjeUlubGluZUl0ZXJhdG9yIEJyZWFraW5nQ29udGV4dDo6aGFuZGxlRW5kT2ZMaW5lKCkKICAg
ICByZXR1cm4gbV9saW5lQnJlYWs7CiB9CiAKLX0KK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL1dvcmRUcmFpbGluZ1NwYWNl
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9Xb3JkVHJhaWxpbmdTcGFjZS5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMDFmYmMzNDBiNjM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvV29yZFRyYWlsaW5n
U3BhY2UuaApAQCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDAwIExhcnMg
S25vbGwgKGtub2xsQGtkZS5vcmcpCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodCByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzIENoYW5nU2VvayBP
aCA8c2hpdmFtaWRvd0BnbWFpbC5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQWRvYmUgU3lz
dGVtcyBJbmMuIEFsbCByaWdodCByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
CisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUg
Q09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9u
LCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSAiRm9udENhc2NhZGUuaCIKKyNpbmNsdWRlICJSZW5kZXJCbG9jay5oIgorI2luY2x1ZGUgIlJl
bmRlclN0eWxlLmgiCisjaW5jbHVkZSA8b3B0aW9uYWw+CisjaW5jbHVkZSA8d3RmL0hhc2hTZXQu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1Y3QgV29yZFRyYWlsaW5nU3BhY2Ugewor
ICAgIFdvcmRUcmFpbGluZ1NwYWNlKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgYm9vbCBtZWFz
dXJpbmdXaXRoVHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCA9IHRydWUpCisgICAgICAgIDogbV9z
dHlsZShzdHlsZSkKKyAgICB7CisgICAgICAgIGlmICghbWVhc3VyaW5nV2l0aFRyYWlsaW5nV2hp
dGVzcGFjZUVuYWJsZWQgfHwgIW1fc3R5bGUuZm9udENhc2NhZGUoKS5lbmFibGVLZXJuaW5nKCkp
CisgICAgICAgICAgICBtX3N0YXRlID0gV29yZFRyYWlsaW5nU3BhY2VTdGF0ZTo6SW5pdGlhbGl6
ZWQ7CisgICAgfQorCisgICAgc3RkOjpvcHRpb25hbDxmbG9hdD4gd2lkdGgoSGFzaFNldDxjb25z
dCBGb250Kj4mIGZhbGxiYWNrRm9udHMpCisgICAgeworICAgICAgICBpZiAobV9zdGF0ZSA9PSBX
b3JkVHJhaWxpbmdTcGFjZVN0YXRlOjpJbml0aWFsaXplZCkKKyAgICAgICAgICAgIHJldHVybiBt
X3dpZHRoOworCisgICAgICAgIGF1dG8mIGZvbnQgPSBtX3N0eWxlLmZvbnRDYXNjYWRlKCk7Cisg
ICAgICAgIG1fd2lkdGggPSBmb250LndpZHRoKFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVu
KCZzcGFjZSwgMSwgbV9zdHlsZSksICZmYWxsYmFja0ZvbnRzKSArIGZvbnQud29yZFNwYWNpbmco
KTsKKyAgICAgICAgbV9zdGF0ZSA9IFdvcmRUcmFpbGluZ1NwYWNlU3RhdGU6OkluaXRpYWxpemVk
OworICAgICAgICByZXR1cm4gbV93aWR0aDsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgZW51bSBj
bGFzcyBXb3JkVHJhaWxpbmdTcGFjZVN0YXRlIHsgVW5pbml0aWFsaXplZCwgSW5pdGlhbGl6ZWQg
fTsKKyAgICBjb25zdCBSZW5kZXJTdHlsZSYgbV9zdHlsZTsKKyAgICBXb3JkVHJhaWxpbmdTcGFj
ZVN0YXRlIG1fc3RhdGUgeyBXb3JkVHJhaWxpbmdTcGFjZVN0YXRlOjpVbmluaXRpYWxpemVkIH07
CisgICAgc3RkOjpvcHRpb25hbDxmbG9hdD4gbV93aWR0aDsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447432</attachid>
            <date>2021-12-16 23:05:20 -0800</date>
            <delta_ts>2021-12-16 23:08:20 -0800</delta_ts>
            <desc>Depends on bug 234421</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>22055</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">Y29tbWl0IGQ2NzBmOGVjNjMzZWM1YmFiYjRjY2JmZTdkZmZjOGRlNTQzZjA1MTcKQXV0aG9yOiBN
eWxlcyBDLiBNYXhmaWVsZCA8bW1heGZpZWxkQGFwcGxlLmNvbT4KRGF0ZTogICBUaHUgRGVjIDE2
IDIzOjAzOjE5IDIwMjEgLTA4MDAKCiAgICBEZWR1cGxpY2F0aW9uCgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDVh
ZDg2MDNmMmQ4My4uMDNjMzVhMjFhZTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDkgQEAKKzIw
MjEtMTItMTYgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAg
ICAgICBEZWR1cGxpY2F0ZSBjb2RlIGluIFJlbmRlclRleHQ6OmNvbXB1dGVQcmVmZXJyZWRMb2dp
Y2FsV2lkdGhzKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzNDQyNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFdlIGhhdmUgMyBwbGFjZXMgd2l0aCBjb2RlIG9mIHRoaXMgZm9ybToKKworICAgICAgICBm
bG9hdCByZXN1bHQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IHdvcmRUcmFpbGluZ1Nw
YWNlV2lkdGg7CisgICAgICAgIGlmIChjdXJyZW50Q2hhcmFjdGVySXNTcGFjZSkKKyAgICAgICAg
ICAgIHdvcmRUcmFpbGluZ1NwYWNlV2lkdGggPSB3b3JkVHJhaWxpbmdTcGFjZS53aWR0aChmYWxs
YmFja0ZvbnRzKTsKKyAgICAgICAgaWYgKHdvcmRUcmFpbGluZ1NwYWNlV2lkdGgpCisgICAgICAg
ICAgICByZXN1bHQgPSBtZWFzdXJlVGV4dChzdGFydGluZ0NoYXJhY3RlckluZGV4LCBsZW5ndGgg
KyAxKSAtIHdvcmRUcmFpbGluZ1NwYWNlV2lkdGgudmFsdWUoKTsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgcmVzdWx0ID0gbWVhc3VyZVRleHQoc3RhcnRpbmdDaGFyYWN0ZXJJbmRleCwgbGVu
Z3RoKTsKKworICAgICAgICBUaGlzIHBhdGNoIHNpbXBseSBkZWR1cGxpY2F0ZXMgdGhpcyBsb2dp
YywgYW5kIHB1dHMgaXQgaW50byBhIHNpbmdsZSBmdW5jdGlvbjoKKyAgICAgICAgUmVuZGVyVGV4
dDo6bWVhc3VyZVRleHRDb25zaWRlcmluZ1Bvc3NpYmxlVHJhaWxpbmdTcGFjZSgpLiBCZWNhdXNl
IHRoZSBkaWZmZXJlbnQgcGxhY2VzIHdoaWNoIGNhbGwgaXQKKyAgICAgICAgdXNlIGRpZmZlcmVu
dCB0ZXh0IG1lYXN1cmVtZW50IGZ1bmN0aW9ucywgdGhpcyBmdW5jdGlvbiBhY2NlcHRzIGEgIm1l
YXN1cmUgdGV4dCIgY2FsbGJhY2suCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGJlY2F1c2UgdGhl
cmUgaXMgbm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6OndpZHRoRnJvbUNhY2hlQ29uc2lkZXJpbmdQb3Nz
aWJsZVRyYWlsaW5nU3BhY2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6
bWF4V29yZEZyYWdtZW50V2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6Y29t
cHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJU
ZXh0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRJbmxpbmVzLmg6IEFkZGVkLiBU
aGlzIGZ1bmN0aW9uIG5lZWRzIHRvIGJlIGFibGUgdG8gc2VlIGludG8gV29yZFRyYWlsaW5nU3Bh
Y2UsCisgICAgICAgIGJ1dCB3ZSBzaG91bGRuJ3QgYmUgYWRkaW5nIGFueSBtb3JlICNpbmNsdWRl
cyB0byBSZW5kZXJUZXh0LmggYmVjYXVzZSBkb2luZyBzbyB3aWxsIGluY3JlYXNlIHRoZSBidWls
ZCB0aW1lLgorICAgICAgICBTbywgaW5zdGVhZCwgd2UgY2FuIG1vdmUgdGhpcyB0ZW1wbGF0ZWQg
ZnVuY3Rpb24gdG8gYSBuZXcgSW5saW5lcyBoZWFkZXIsIGFuZCBoYXZlIGNhbGxlcnMgaW5jbHVk
ZSB0aGF0CisgICAgICAgIGhlYWRlci4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6Om1l
YXN1cmVUZXh0Q29uc2lkZXJpbmdQb3NzaWJsZVRyYWlsaW5nU3BhY2UpOgorICAgICAgICAqIHJl
bmRlcmluZy9saW5lL0JyZWFraW5nQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6QnJlYWtp
bmdDb250ZXh0Ojp0ZXh0V2lkdGhDb25zaWRlcmluZ1Bvc3NpYmxlVHJhaWxpbmdTcGFjZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpCcmVha2luZ0NvbnRleHQ6OmNvbXB1dGVBZGRpdGlvbmFsQmV0d2Vl
bldvcmRzV2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6V29yZFRyYWlsaW5nU3BhY2U6OldvcmRU
cmFpbGluZ1NwYWNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldvcmRUcmFpbGluZ1Nw
YWNlOjp3aWR0aCk6IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVyaW5nL2xpbmUvV29yZFRyYWls
aW5nU3BhY2UuaDogQWRkZWQuIEJyZWFraW5nQ29udGV4dC5oIGRlZmluZXMgV29yZFRyYWlsaW5n
U3BhY2UsIGJ1dCBpdCBuZWVkcworICAgICAgICB0byBiZSBhYmxlIHRvIGNhbGwgbWVhc3VyZVRl
eHRDb25zaWRlcmluZ1Bvc3NpYmxlVHJhaWxpbmdTcGFjZSgpLCB3aGljaCBuZWVkcyB0byBiZSBh
YmxlIHRvIHNlZSBpbnNpZGUKKyAgICAgICAgV29yZFRyYWlsaW5nU3BhY2UuIEF2b2lkIHRoZSBj
aXJjdWxhciBkZXBlbmRlbmN5IGJ5IHNwbGl0dGluZyBvdXQgV29yZFRyYWlsaW5nU3BhY2UgaW50
byBpdHMgb3duIGZpbGUuCisgICAgICAgIChXZWJDb3JlOjpXb3JkVHJhaWxpbmdTcGFjZTo6V29y
ZFRyYWlsaW5nU3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6V29yZFRyYWlsaW5nU3BhY2U6Ondp
ZHRoKToKKwogMjAyMS0xMi0xNiAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUu
Y29tPgogCiAgICAgICAgIFJlZmFjdG9yIGh5cGhlbmF0aW9uIGxvZ2ljIGluIFJlbmRlclRleHQ6
OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA0NzNiNzg5YjQ0M2UuLmRmZGEw
MGE5ODQxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtNzA2Myw2ICs3MDYzLDggQEAKIAkJMUMwOTM5RTkxQTEzRTEyOTAwQjc4
OEU1IC8qIENhY2hlZFNWR0ZvbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Q2FjaGVkU1ZHRm9udC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzA5RDA0QjFF
MzFDMzI4MDA3MjVGMTggLyogUEFMLnhjb2RlcHJvaiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9ICJ3cmFwcGVyLnBiLXByb2plY3QiOyBuYW1lID0gUEFM
Lnhjb2RlcHJvajsgcGF0aCA9IFBBTC9QQUwueGNvZGVwcm9qOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkxQzBBQTE2QTIxOTQwREM3MDA4OTY4MjkgLyogU3R5bGVDb2xvclNjaGVtZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHlsZUNvbG9yU2NoZW1lLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDMEJFOTQzMjc2QzYwQkMwMDVGQjZDMSAvKiBS
ZW5kZXJUZXh0SW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJUZXh0SW5saW5lcy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzBCRTk0NzI3NkM2NjAzMDA1RkI2QzEgLyog
V29yZFRyYWlsaW5nU3BhY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV29yZFRyYWlsaW5nU3BhY2UuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUMxMkFDMjgxRUU3NzhBRTAwNzlFMEEwIC8q
IEZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
Rm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTFDMTJBQzI5MUVFNzc4QUUwMDc5RTBBMCAvKiBGb250RmFtaWx5U3BlY2lmaWNh
dGlvbkNvcmVUZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29y
ZVRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUMxMkFDMkMxRUU3Nzk5NTAw
NzlFMEEwIC8qIEZvbnREZXNjcmlwdGlvbkNvY29hLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZv
bnREZXNjcmlwdGlvbkNvY29hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMx
OTY2LDYgKzMxOTY4LDcgQEAKIAkJCQlFNEM5MUEwRjE4MDIzNDM5MDBBMTdGNkQgLyogVGV4dFBh
aW50U3R5bGUuY3BwICovLAogCQkJCUU0QzkxQTBEMTgwMjM0MzEwMEExN0Y2RCAvKiBUZXh0UGFp
bnRTdHlsZS5oICovLAogCQkJCUJDQTI1NzE0MTI5M0MwMTAwMDdBMjYzRCAvKiBWZXJ0aWNhbFBv
c2l0aW9uQ2FjaGUuaCAqLywKKwkJCQkxQzBCRTk0MzI3NkM2MEJDMDA1RkI2QzEgLyogUmVuZGVy
VGV4dElubGluZXMuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gcmVuZGVyaW5nOwogCQkJc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTMzMDY1LDYgKzMzMDY4LDcgQEAKIAkJCQlGRkRCQzA0NTE4
M0QyN0I3MDA0MDcxMDkgLyogTGluZVdpZHRoLmggKi8sCiAJCQkJRkZBQzMwRkQxODRGQjE0NTAw
OEM0RjFFIC8qIFRyYWlsaW5nT2JqZWN0cy5jcHAgKi8sCiAJCQkJRkZBQzMwRkMxODRGQjE0NTAw
OEM0RjFFIC8qIFRyYWlsaW5nT2JqZWN0cy5oICovLAorCQkJCTFDMEJFOTQ3Mjc2QzY2MDMwMDVG
QjZDMSAvKiBXb3JkVHJhaWxpbmdTcGFjZS5oICovLAogCQkJKTsKIAkJCXBhdGggPSBsaW5lOwog
CQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTMzMTIxLDcgKzMzMTI1LDYgQEAKIAkJCWlz
YSA9IFBCWEhlYWRlcnNCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0
NzsKIAkJCWZpbGVzID0gKAotCQkJCTdCNTgyREQ4MjcxNkY1NUIwMDRCOTJEMCAvKiAobnVsbCkg
aW4gSGVhZGVycyAqLywKIAkJCQk3Q0QwRTJCODFGODBBNDgyMDAxNkE0Q0UgLyogQWJvcnRDb250
cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk3Q0QwRTJCRjFGODBBNTZFMDAxNkE0Q0UgLyog
QWJvcnRTaWduYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2Qjk1MTk1MjA3RDYzMzQwMEE3RDJE
RCAvKiBBYnN0cmFjdERPTVdpbmRvdy5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGV4dC5jcHAKaW5kZXggMDA4ODE4YmUzZTc3Li5hNGIwYzI4Mjk1Y2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKQEAgLTEsNyArMSw3IEBACiAv
KgogICogKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAqIChDKSAyMDAwIERp
cmsgTXVlbGxlciAobXVlbGxlckBrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LTIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA2
IEFuZHJldyBXZWxsaW5ndG9uIChwcm90b25Ad2lyZXRhcHBlZC5uZXQpCiAgKiBDb3B5cmlnaHQg
KEMpIDIwMDYgR3JhaGFtIERlbm5pcyAoZ3JhaGFtLmRlbm5pc0BnbWFpbC5jb20pCiAgKgpAQCAt
NDcsNiArNDcsNyBAQAogI2luY2x1ZGUgIlJlbmRlckNvbWJpbmVUZXh0LmgiCiAjaW5jbHVkZSAi
UmVuZGVySW5saW5lLmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKKyNpbmNsdWRlICJSZW5k
ZXJUZXh0SW5saW5lcy5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJSZW5k
ZXJlZERvY3VtZW50TWFya2VyLmgiCiAjaW5jbHVkZSAiU1ZHRWxlbWVudFR5cGVIZWxwZXJzLmgi
CkBAIC03MTcsNiArNzE4LDEzIEBAIEFMV0FZU19JTkxJTkUgZmxvYXQgUmVuZGVyVGV4dDo6d2lk
dGhGcm9tQ2FjaGUoY29uc3QgRm9udENhc2NhZGUmIGYsIHVuc2lnbmVkIHN0CiAgICAgcmV0dXJu
IGYud2lkdGgocnVuLCBmYWxsYmFja0ZvbnRzLCBnbHlwaE92ZXJmbG93KTsKIH0KIAorQUxXQVlT
X0lOTElORSBmbG9hdCBSZW5kZXJUZXh0Ojp3aWR0aEZyb21DYWNoZUNvbnNpZGVyaW5nUG9zc2li
bGVUcmFpbGluZ1NwYWNlKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3QgRm9udENhc2Nh
ZGUmIGZvbnQsIHVuc2lnbmVkIHN0YXJ0SW5kZXgsIHVuc2lnbmVkIHdvcmRMZW4sIGZsb2F0IHhQ
b3MsIGJvb2wgY3VycmVudENoYXJhY3RlcklzU3BhY2UsIFdvcmRUcmFpbGluZ1NwYWNlJiB3b3Jk
VHJhaWxpbmdTcGFjZSwgSGFzaFNldDxjb25zdCBGb250Kj4mIGZhbGxiYWNrRm9udHMsIEdseXBo
T3ZlcmZsb3cmIGdseXBoT3ZlcmZsb3cpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1lYXN1cmVUZXh0
Q29uc2lkZXJpbmdQb3NzaWJsZVRyYWlsaW5nU3BhY2UoY3VycmVudENoYXJhY3RlcklzU3BhY2Us
IHN0YXJ0SW5kZXgsIHdvcmRMZW4sIHdvcmRUcmFpbGluZ1NwYWNlLCBmYWxsYmFja0ZvbnRzLCBb
Jl0gKHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIGxlbikgeworICAgICAgICByZXR1cm4gd2lkdGhG
cm9tQ2FjaGUoZm9udCwgZnJvbSwgbGVuLCB4UG9zLCAmZmFsbGJhY2tGb250cywgJmdseXBoT3Zl
cmZsb3csIHN0eWxlKTsKKyAgICB9KTsKK30KKwogaW5saW5lIGJvb2wgaXNIYW5nYWJsZVB1bmN0
dWF0aW9uQXRMaW5lU3RhcnQoVUNoYXIgYykKIHsKICAgICByZXR1cm4gVV9HRVRfR0NfTUFTSyhj
KSAmIChVX0dDX1BTX01BU0sgfCBVX0dDX1BJX01BU0sgfCBVX0dDX1BGX01BU0spOwpAQCAtOTcz
LDE1ICs5ODEsNyBAQCBmbG9hdCBSZW5kZXJUZXh0OjptYXhXb3JkRnJhZ21lbnRXaWR0aChjb25z
dCBSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IEZvbnRDYXNjYQogICAgICAgICByZXR1cm4gZW50
aXJlV29yZFdpZHRoOwogICAgIH0KIAotICAgIGZsb2F0IHN1ZmZpeFdpZHRoOwotICAgIHN0ZDo6
b3B0aW9uYWw8ZmxvYXQ+IHdvcmRUcmFpbGluZ1NwYWNlV2lkdGg7Ci0gICAgaWYgKGN1cnJlbnRD
aGFyYWN0ZXJJc1NwYWNlKQotICAgICAgICB3b3JkVHJhaWxpbmdTcGFjZVdpZHRoID0gd29yZFRy
YWlsaW5nU3BhY2Uud2lkdGgoZmFsbGJhY2tGb250cyk7Ci0gICAgaWYgKHdvcmRUcmFpbGluZ1Nw
YWNlV2lkdGgpCi0gICAgICAgIHN1ZmZpeFdpZHRoID0gd2lkdGhGcm9tQ2FjaGUoZm9udCwgY2hh
cmFjdGVySW5kZXggKyBzdWZmaXhTdGFydCwgd29yZC5sZW5ndGgoKSAtIHN1ZmZpeFN0YXJ0ICsg
MSwgeFBvcywgMCwgMCwgc3R5bGUpIC0gd29yZFRyYWlsaW5nU3BhY2VXaWR0aC52YWx1ZSgpOwot
ICAgIGVsc2UKLSAgICAgICAgc3VmZml4V2lkdGggPSB3aWR0aEZyb21DYWNoZShmb250LCBjaGFy
YWN0ZXJJbmRleCArIHN1ZmZpeFN0YXJ0LCB3b3JkLmxlbmd0aCgpIC0gc3VmZml4U3RhcnQsIHhQ
b3MsIDAsIDAsIHN0eWxlKTsKLQorICAgIGF1dG8gc3VmZml4V2lkdGggPSB3aWR0aEZyb21DYWNo
ZUNvbnNpZGVyaW5nUG9zc2libGVUcmFpbGluZ1NwYWNlKHN0eWxlLCBmb250LCBjaGFyYWN0ZXJJ
bmRleCArIHN1ZmZpeFN0YXJ0LCB3b3JkLmxlbmd0aCgpIC0gc3VmZml4U3RhcnQsIHhQb3MsIGN1
cnJlbnRDaGFyYWN0ZXJJc1NwYWNlLCB3b3JkVHJhaWxpbmdTcGFjZSwgZmFsbGJhY2tGb250cywg
Z2x5cGhPdmVyZmxvdyk7CiAgICAgcmV0dXJuIHN0ZDo6bWF4KG1heEZyYWdtZW50V2lkdGgsIHN1
ZmZpeFdpZHRoKTsKIH0KIApAQCAtMTExNSwxNyArMTExNSw5IEBAIHZvaWQgUmVuZGVyVGV4dDo6
Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoZmxvYXQgbGVhZFdpZHRoLCBIYXNoU2V0PGNv
bnN0IEZvCiAgICAgICAgIGlmICh3b3JkTGVuKSB7CiAgICAgICAgICAgICBmbG9hdCBjdXJyTWlu
V2lkdGggPSAwOwogICAgICAgICAgICAgYm9vbCBpc1NwYWNlID0gKGogPCBsZW5ndGgpICYmIGlz
U3BhY2VBY2NvcmRpbmdUb1N0eWxlKGMsIHN0eWxlKTsKLSAgICAgICAgICAgIGZsb2F0IHc7Ci0g
ICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPGZsb2F0PiB3b3JkVHJhaWxpbmdTcGFjZVdpZHRoOwot
ICAgICAgICAgICAgaWYgKGlzU3BhY2UpCi0gICAgICAgICAgICAgICAgd29yZFRyYWlsaW5nU3Bh
Y2VXaWR0aCA9IHdvcmRUcmFpbGluZ1NwYWNlLndpZHRoKGZhbGxiYWNrRm9udHMpOwotICAgICAg
ICAgICAgaWYgKHdvcmRUcmFpbGluZ1NwYWNlV2lkdGgpCi0gICAgICAgICAgICAgICAgdyA9IHdp
ZHRoRnJvbUNhY2hlKGZvbnQsIGksIHdvcmRMZW4gKyAxLCBsZWFkV2lkdGggKyBjdXJyTWF4V2lk
dGgsICZmYWxsYmFja0ZvbnRzLCAmZ2x5cGhPdmVyZmxvdywgc3R5bGUpIC0gd29yZFRyYWlsaW5n
U3BhY2VXaWR0aC52YWx1ZSgpOwotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAg
dyA9IHdpZHRoRnJvbUNhY2hlKGZvbnQsIGksIHdvcmRMZW4sIGxlYWRXaWR0aCArIGN1cnJNYXhX
aWR0aCwgJmZhbGxiYWNrRm9udHMsICZnbHlwaE92ZXJmbG93LCBzdHlsZSk7Ci0gICAgICAgICAg
ICAgICAgaWYgKGMgPT0gc29mdEh5cGhlbiAmJiBzdHlsZS5oeXBoZW5zKCkgIT0gSHlwaGVuczo6
Tm9uZSkKLSAgICAgICAgICAgICAgICAgICAgY3Vyck1pbldpZHRoID0gaHlwaGVuV2lkdGgoKnRo
aXMsIGZvbnQpOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgZmxvYXQgdyA9IHdpZHRoRnJv
bUNhY2hlQ29uc2lkZXJpbmdQb3NzaWJsZVRyYWlsaW5nU3BhY2Uoc3R5bGUsIGZvbnQsIGksIHdv
cmRMZW4sIGxlYWRXaWR0aCArIGN1cnJNYXhXaWR0aCwgaXNTcGFjZSwgd29yZFRyYWlsaW5nU3Bh
Y2UsIGZhbGxiYWNrRm9udHMsIGdseXBoT3ZlcmZsb3cpOworICAgICAgICAgICAgaWYgKGMgPT0g
c29mdEh5cGhlbiAmJiBzdHlsZS5oeXBoZW5zKCkgIT0gSHlwaGVuczo6Tm9uZSkKKyAgICAgICAg
ICAgICAgICBjdXJyTWluV2lkdGggPSBoeXBoZW5XaWR0aCgqdGhpcywgZm9udCk7CiAKICAgICAg
ICAgICAgIGlmICh3ID4gbWF4V29yZFdpZHRoKSB7CiAgICAgICAgICAgICAgICAgYXV0byBtYXhG
cmFnbWVudFdpZHRoID0gbWF4V29yZEZyYWdtZW50V2lkdGgoc3R5bGUsIGZvbnQsIFN0cmluZ1Zp
ZXcoc3RyaW5nKS5zdWJzdHJpbmcoaSwgd29yZExlbiksIG1pbmltdW1QcmVmaXhMZW5ndGgsIG1p
bmltdW1TdWZmaXhMZW5ndGgsIGlzU3BhY2UsIGksIGxlYWRXaWR0aCArIGN1cnJNYXhXaWR0aCwg
dywgd29yZFRyYWlsaW5nU3BhY2UsIGZhbGxiYWNrRm9udHMsIGdseXBoT3ZlcmZsb3cpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmgKaW5kZXggY2UzMDBkNzMwNGNkLi5lMWZlYTNi
ZjQ3ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuaApAQCAtMSw3ICsxLDcg
QEAKIC8qCiAgKiAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQogICogKEMpIDIw
MDAgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQt
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDQtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICog
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKQEAgLTE4Myw2ICsxODMsOSBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgUmVuZGVyVGV4dCog
ZmluZEJ5RGlzcGxheUNvbnRlbnRzSW5saW5lV3JhcHBlckNhbmRpZGF0ZShSZW5kZXJFbGVtZW50
Jik7CiAKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgTWVhc3VyZVRleHRDYWxsYmFjaz4KKyAgICBz
dGF0aWMgZmxvYXQgbWVhc3VyZVRleHRDb25zaWRlcmluZ1Bvc3NpYmxlVHJhaWxpbmdTcGFjZShi
b29sIGN1cnJlbnRDaGFyYWN0ZXJJc1NwYWNlLCB1bnNpZ25lZCBzdGFydEluZGV4LCB1bnNpZ25l
ZCB3b3JkTGVuZ3RoLCBXb3JkVHJhaWxpbmdTcGFjZSYsIEhhc2hTZXQ8Y29uc3QgRm9udCo+JiBm
YWxsYmFja0ZvbnRzLCBNZWFzdXJlVGV4dENhbGxiYWNrJiYpOworCiBwcm90ZWN0ZWQ6CiAgICAg
dmlydHVhbCB2b2lkIGNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKGZsb2F0IGxlYWRXaWR0
aCk7CiAgICAgdm9pZCB3aWxsQmVEZXN0cm95ZWQoKSBvdmVycmlkZTsKQEAgLTIyNCw2ICsyMjcs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgY29udGFpbmVyKGNvbnN0IFJlbmRlckxheWVyTW9kZWxP
YmplY3QmLCBib29sJikgY29uc3QgPSBkZWxldGU7IC8vIFVzZSBwYXJlbnQoKSBpbnN0ZWFkLgog
CiAgICAgZmxvYXQgbWF4V29yZEZyYWdtZW50V2lkdGgoY29uc3QgUmVuZGVyU3R5bGUmLCBjb25z
dCBGb250Q2FzY2FkZSYsIFN0cmluZ1ZpZXcgd29yZCwgdW5zaWduZWQgbWluaW11bVByZWZpeExl
bmd0aCwgdW5zaWduZWQgbWluaW11bVN1ZmZpeExlbmd0aCwgYm9vbCBjdXJyZW50Q2hhcmFjdGVy
SXNTcGFjZSwgdW5zaWduZWQgY2hhcmFjdGVySW5kZXgsIGZsb2F0IHhQb3MsIGZsb2F0IGVudGly
ZVdvcmRXaWR0aCwgV29yZFRyYWlsaW5nU3BhY2UmLCBIYXNoU2V0PGNvbnN0IEZvbnQqPiYgZmFs
bGJhY2tGb250cywgR2x5cGhPdmVyZmxvdyYpOworICAgIGZsb2F0IHdpZHRoRnJvbUNhY2hlQ29u
c2lkZXJpbmdQb3NzaWJsZVRyYWlsaW5nU3BhY2UoY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBG
b250Q2FzY2FkZSYsIHVuc2lnbmVkIHN0YXJ0SW5kZXgsIHVuc2lnbmVkIHdvcmRMZW4sIGZsb2F0
IHhQb3MsIGJvb2wgY3VycmVudENoYXJhY3RlcklzU3BhY2UsIFdvcmRUcmFpbGluZ1NwYWNlJiwg
SGFzaFNldDxjb25zdCBGb250Kj4mIGZhbGxiYWNrRm9udHMsIEdseXBoT3ZlcmZsb3cmKSBjb25z
dDsKIAogICAgIC8vIFdlIHB1dCB0aGUgYml0ZmllbGQgZmlyc3QgdG8gbWluaW1pemUgcGFkZGlu
ZyBvbiA2NC1iaXQuCiAgICAgdW5zaWduZWQgbV9oYXNCcmVha2FibGVDaGFyIDogMTsgLy8gV2hl
dGhlciBvciBub3Qgd2UgY2FuIGJlIGJyb2tlbiBpbnRvIG11bHRpcGxlIGxpbmVzLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRJbmxpbmVzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dElubGluZXMuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjFiMTc1OGZmMzAwOQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0SW5saW5lcy5oCkBAIC0wLDAgKzEs
MzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUg
TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxv
bmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwg
d3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5r
bGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4K
KyAqCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJSZW5kZXJUZXh0LmgiCisjaW5j
bHVkZSAiV29yZFRyYWlsaW5nU3BhY2UuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgTWVhc3VyZVRleHRDYWxsYmFjaz4KK2Zsb2F0IFJlbmRlclRleHQ6Om1l
YXN1cmVUZXh0Q29uc2lkZXJpbmdQb3NzaWJsZVRyYWlsaW5nU3BhY2UoYm9vbCBjdXJyZW50Q2hh
cmFjdGVySXNTcGFjZSwgdW5zaWduZWQgc3RhcnRJbmRleCwgdW5zaWduZWQgd29yZExlbmd0aCwg
V29yZFRyYWlsaW5nU3BhY2UmIHdvcmRUcmFpbGluZ1NwYWNlLCBIYXNoU2V0PGNvbnN0IEZvbnQq
PiYgZmFsbGJhY2tGb250cywgTWVhc3VyZVRleHRDYWxsYmFjayYmIGNhbGxiYWNrKQoreworICAg
IHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IHdvcmRUcmFpbGluZ1NwYWNlV2lkdGg7CisgICAgaWYgKGN1
cnJlbnRDaGFyYWN0ZXJJc1NwYWNlKQorICAgICAgICB3b3JkVHJhaWxpbmdTcGFjZVdpZHRoID0g
d29yZFRyYWlsaW5nU3BhY2Uud2lkdGgoZmFsbGJhY2tGb250cyk7CisgICAgaWYgKHdvcmRUcmFp
bGluZ1NwYWNlV2lkdGgpCisgICAgICAgIHJldHVybiBjYWxsYmFjayhzdGFydEluZGV4LCB3b3Jk
TGVuZ3RoICsgMSkgLSB3b3JkVHJhaWxpbmdTcGFjZVdpZHRoLnZhbHVlKCk7CisgICAgcmV0dXJu
IGNhbGxiYWNrKHN0YXJ0SW5kZXgsIHdvcmRMZW5ndGgpOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9CcmVha2lu
Z0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0JyZWFraW5nQ29udGV4
dC5oCmluZGV4IDNkOWZmOTk1YmJjMy4uYTk2OTg1YmFkZDIzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvbGluZS9CcmVha2luZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvbGluZS9CcmVha2luZ0NvbnRleHQuaApAQCAtMSw2ICsxLDYgQEAKIC8q
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDAgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKLSAqIENv
cHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAx
MSBBcHBsZSBJbmMuIEFsbCByaWdodCByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwMy0y
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0IHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEw
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMg
Q2hhbmdTZW9rIE9oIDxzaGl2YW1pZG93QGdtYWlsLmNvbT4KICAqIENvcHlyaWdodCAoQykgMjAx
MyBBZG9iZSBTeXN0ZW1zIEluYy4gQWxsIHJpZ2h0IHJlc2VydmVkLgpAQCAtMzgsNyArMzgsOSBA
QAogI2luY2x1ZGUgIlJlbmRlckxpc3RNYXJrZXIuaCIKICNpbmNsdWRlICJSZW5kZXJSdWJ5UnVu
LmgiCiAjaW5jbHVkZSAiUmVuZGVyU1ZHSW5saW5lVGV4dC5oIgorI2luY2x1ZGUgIlJlbmRlclRl
eHRJbmxpbmVzLmgiCiAjaW5jbHVkZSAiVHJhaWxpbmdPYmplY3RzLmgiCisjaW5jbHVkZSAiV29y
ZFRyYWlsaW5nU3BhY2UuaCIKICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdWaWV3Lmg+CiAjaW5jbHVkZSA8d3RmL3VuaWNvZGUvQ2hhcmFjdGVyTmFt
ZXMuaD4KQEAgLTY0LDMyICs2Niw2IEBAIHN0cnVjdCBXb3JkTWVhc3VyZW1lbnQgewogICAgIEhh
c2hTZXQ8Y29uc3QgRm9udCo+IGZhbGxiYWNrRm9udHM7CiB9OwogCi1zdHJ1Y3QgV29yZFRyYWls
aW5nU3BhY2UgewotICAgIFdvcmRUcmFpbGluZ1NwYWNlKGNvbnN0IFJlbmRlclN0eWxlJiBzdHls
ZSwgYm9vbCBtZWFzdXJpbmdXaXRoVHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCA9IHRydWUpCi0g
ICAgICAgIDogbV9zdHlsZShzdHlsZSkKLSAgICB7Ci0gICAgICAgIGlmICghbWVhc3VyaW5nV2l0
aFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQgfHwgIW1fc3R5bGUuZm9udENhc2NhZGUoKS5lbmFi
bGVLZXJuaW5nKCkpCi0gICAgICAgICAgICBtX3N0YXRlID0gV29yZFRyYWlsaW5nU3BhY2VTdGF0
ZTo6SW5pdGlhbGl6ZWQ7Ci0gICAgfQotCi0gICAgc3RkOjpvcHRpb25hbDxmbG9hdD4gd2lkdGgo
SGFzaFNldDxjb25zdCBGb250Kj4mIGZhbGxiYWNrRm9udHMpCi0gICAgewotICAgICAgICBpZiAo
bV9zdGF0ZSA9PSBXb3JkVHJhaWxpbmdTcGFjZVN0YXRlOjpJbml0aWFsaXplZCkKLSAgICAgICAg
ICAgIHJldHVybiBtX3dpZHRoOwotCi0gICAgICAgIGF1dG8mIGZvbnQgPSBtX3N0eWxlLmZvbnRD
YXNjYWRlKCk7Ci0gICAgICAgIG1fd2lkdGggPSBmb250LndpZHRoKFJlbmRlckJsb2NrOjpjb25z
dHJ1Y3RUZXh0UnVuKCZzcGFjZSwgMSwgbV9zdHlsZSksICZmYWxsYmFja0ZvbnRzKSArIGZvbnQu
d29yZFNwYWNpbmcoKTsKLSAgICAgICAgbV9zdGF0ZSA9IFdvcmRUcmFpbGluZ1NwYWNlU3RhdGU6
OkluaXRpYWxpemVkOwotICAgICAgICByZXR1cm4gbV93aWR0aDsKLSAgICB9Ci0KLXByaXZhdGU6
Ci0gICAgZW51bSBjbGFzcyBXb3JkVHJhaWxpbmdTcGFjZVN0YXRlIHsgVW5pbml0aWFsaXplZCwg
SW5pdGlhbGl6ZWQgfTsKLSAgICBjb25zdCBSZW5kZXJTdHlsZSYgbV9zdHlsZTsKLSAgICBXb3Jk
VHJhaWxpbmdTcGFjZVN0YXRlIG1fc3RhdGUgeyBXb3JkVHJhaWxpbmdTcGFjZVN0YXRlOjpVbmlu
aXRpYWxpemVkIH07Ci0gICAgc3RkOjpvcHRpb25hbDxmbG9hdD4gbV93aWR0aDsKLX07Ci0KIGNs
YXNzIEJyZWFraW5nQ29udGV4dCB7CiBwdWJsaWM6CiAgICAgQnJlYWtpbmdDb250ZXh0KExpbmVC
cmVha2VyJiBsaW5lQnJlYWtlciwgSW5saW5lQmlkaVJlc29sdmVyJiByZXNvbHZlciwgTGluZUlu
Zm8mIGluTGluZUluZm8sIExpbmVXaWR0aCYgbGluZVdpZHRoLCBSZW5kZXJUZXh0SW5mbyYgaW5S
ZW5kZXJUZXh0SW5mbywgRmxvYXRpbmdPYmplY3QqIGluTGFzdEZsb2F0RnJvbVByZXZpb3VzTGlu
ZSwgYm9vbCBhcHBsaWVkU3RhcnRXaWR0aCwgUmVuZGVyQmxvY2tGbG93JiBibG9jaykKQEAgLTE1
MSw2ICsxMjcsNyBAQCBwdWJsaWM6CiAgICAgTGVnYWN5SW5saW5lSXRlcmF0b3IgaGFuZGxlRW5k
T2ZMaW5lKCk7CiAgICAgCiAgICAgZmxvYXQgY29tcHV0ZUFkZGl0aW9uYWxCZXR3ZWVuV29yZHNX
aWR0aChSZW5kZXJUZXh0JiwgVGV4dExheW91dCosIFVDaGFyLCBXb3JkVHJhaWxpbmdTcGFjZSYs
IEhhc2hTZXQ8Y29uc3QgRm9udCo+JiBmYWxsYmFja0ZvbnRzLCBXb3JkTWVhc3VyZW1lbnRzJiwg
Y29uc3QgRm9udENhc2NhZGUmLCBib29sIGlzRml4ZWRQaXRjaCwgdW5zaWduZWQgbGFzdFNwYWNl
LCBmbG9hdCBsYXN0U3BhY2VXb3JkU3BhY2luZywgZmxvYXQgd29yZFNwYWNpbmdGb3JXb3JkTWVh
c3VyZW1lbnQsIHVuc2lnbmVkIG9mZnNldCk7CisgICAgZmxvYXQgdGV4dFdpZHRoQ29uc2lkZXJp
bmdQb3NzaWJsZVRyYWlsaW5nU3BhY2UoUmVuZGVyVGV4dCYgcmVuZGVyVGV4dCwgVGV4dExheW91
dCogdGV4dExheW91dCwgVUNoYXIgY3VycmVudENoYXJhY3RlciwgV29yZFRyYWlsaW5nU3BhY2Um
IHdvcmRUcmFpbGluZ1NwYWNlLCBIYXNoU2V0PGNvbnN0IEZvbnQqPiYgZmFsbGJhY2tGb250cywg
SGFzaFNldDxjb25zdCBGb250Kj4mIHdvcmRNZWFzdXJlbWVudEZhbGxiYWNrRm9udHMsIGNvbnN0
IEZvbnRDYXNjYWRlJiBmb250LCBib29sIGlzRml4ZWRQaXRjaCwgdW5zaWduZWQgbGFzdFNwYWNl
LCB1bnNpZ25lZCBvZmZzZXQpOwogCiAgICAgdm9pZCBjbGVhckxpbmVCcmVha0lmRml0c09uTGlu
ZShib29sIGlnbm9yaW5nVHJhaWxpbmdTcGFjZSA9IGZhbHNlKQogICAgIHsKQEAgLTYzMSw2ICs2
MDgsMTMgQEAgaW5saW5lIHZvaWQgdHJ5SHlwaGVuYXRpbmcoUmVuZGVyVGV4dCYgdGV4dCwgY29u
c3QgRm9udENhc2NhZGUmIGZvbnQsIGNvbnN0IEF0b20KICAgICBoeXBoZW5hdGVkID0gdHJ1ZTsK
IH0KIAoraW5saW5lIGZsb2F0IEJyZWFraW5nQ29udGV4dDo6dGV4dFdpZHRoQ29uc2lkZXJpbmdQ
b3NzaWJsZVRyYWlsaW5nU3BhY2UoUmVuZGVyVGV4dCYgcmVuZGVyVGV4dCwgVGV4dExheW91dCog
dGV4dExheW91dCwgVUNoYXIgY3VycmVudENoYXJhY3RlciwgV29yZFRyYWlsaW5nU3BhY2UmIHdv
cmRUcmFpbGluZ1NwYWNlLCBIYXNoU2V0PGNvbnN0IEZvbnQqPiYgZmFsbGJhY2tGb250cywgSGFz
aFNldDxjb25zdCBGb250Kj4mIHdvcmRNZWFzdXJlbWVudEZhbGxiYWNrRm9udHMsIGNvbnN0IEZv
bnRDYXNjYWRlJiBmb250LCBib29sIGlzRml4ZWRQaXRjaCwgdW5zaWduZWQgbGFzdFNwYWNlLCB1
bnNpZ25lZCBvZmZzZXQpCit7CisgICAgcmV0dXJuIFJlbmRlclRleHQ6Om1lYXN1cmVUZXh0Q29u
c2lkZXJpbmdQb3NzaWJsZVRyYWlsaW5nU3BhY2UoY3VycmVudENoYXJhY3RlciA9PSBzcGFjZSwg
bGFzdFNwYWNlLCBvZmZzZXQgLSBsYXN0U3BhY2UsIHdvcmRUcmFpbGluZ1NwYWNlLCBmYWxsYmFj
a0ZvbnRzLCBbJl0gKHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIGxlbikgeworICAgICAgICByZXR1
cm4gdGV4dFdpZHRoKHJlbmRlclRleHQsIGZyb20sIGxlbiwgZm9udCwgbV93aWR0aC5jdXJyZW50
V2lkdGgoKSwgaXNGaXhlZFBpdGNoLCBtX2NvbGxhcHNlV2hpdGVTcGFjZSwgd29yZE1lYXN1cmVt
ZW50RmFsbGJhY2tGb250cywgdGV4dExheW91dCk7CisgICAgfSk7Cit9CisKIGlubGluZSBmbG9h
dCBCcmVha2luZ0NvbnRleHQ6OmNvbXB1dGVBZGRpdGlvbmFsQmV0d2VlbldvcmRzV2lkdGgoUmVu
ZGVyVGV4dCYgcmVuZGVyVGV4dCwgVGV4dExheW91dCogdGV4dExheW91dCwgVUNoYXIgY3VycmVu
dENoYXJhY3RlciwgV29yZFRyYWlsaW5nU3BhY2UmIHdvcmRUcmFpbGluZ1NwYWNlLCBIYXNoU2V0
PGNvbnN0IEZvbnQqPiYgZmFsbGJhY2tGb250cywgV29yZE1lYXN1cmVtZW50cyYgd29yZE1lYXN1
cmVtZW50cywgY29uc3QgRm9udENhc2NhZGUmIGZvbnQsIGJvb2wgaXNGaXhlZFBpdGNoLCB1bnNp
Z25lZCBsYXN0U3BhY2UsIGZsb2F0IGxhc3RTcGFjZVdvcmRTcGFjaW5nLCBmbG9hdCB3b3JkU3Bh
Y2luZ0ZvcldvcmRNZWFzdXJlbWVudCwgdW5zaWduZWQgb2Zmc2V0KQogewogICAgIHdvcmRNZWFz
dXJlbWVudHMuZ3Jvdyh3b3JkTWVhc3VyZW1lbnRzLnNpemUoKSArIDEpOwpAQCAtNjQwLDE0ICs2
MjQsNyBAQCBpbmxpbmUgZmxvYXQgQnJlYWtpbmdDb250ZXh0Ojpjb21wdXRlQWRkaXRpb25hbEJl
dHdlZW5Xb3Jkc1dpZHRoKFJlbmRlclRleHQmIHJlbgogICAgIHdvcmRNZWFzdXJlbWVudC5lbmRP
ZmZzZXQgPSBvZmZzZXQ7CiAgICAgd29yZE1lYXN1cmVtZW50LnN0YXJ0T2Zmc2V0ID0gbGFzdFNw
YWNlOwogICAgIAotICAgIGZsb2F0IGFkZGl0aW9uYWxUZW1wV2lkdGggPSAwOwotICAgIHN0ZDo6
b3B0aW9uYWw8ZmxvYXQ+IHdvcmRUcmFpbGluZ1NwYWNlV2lkdGg7Ci0gICAgaWYgKGN1cnJlbnRD
aGFyYWN0ZXIgPT0gJyAnKQotICAgICAgICB3b3JkVHJhaWxpbmdTcGFjZVdpZHRoID0gd29yZFRy
YWlsaW5nU3BhY2Uud2lkdGgoZmFsbGJhY2tGb250cyk7Ci0gICAgaWYgKHdvcmRUcmFpbGluZ1Nw
YWNlV2lkdGgpCi0gICAgICAgIGFkZGl0aW9uYWxUZW1wV2lkdGggPSB0ZXh0V2lkdGgocmVuZGVy
VGV4dCwgbGFzdFNwYWNlLCBvZmZzZXQgKyAxIC0gbGFzdFNwYWNlLCBmb250LCBtX3dpZHRoLmN1
cnJlbnRXaWR0aCgpLCBpc0ZpeGVkUGl0Y2gsIG1fY29sbGFwc2VXaGl0ZVNwYWNlLCB3b3JkTWVh
c3VyZW1lbnQuZmFsbGJhY2tGb250cywgdGV4dExheW91dCkgLSB3b3JkVHJhaWxpbmdTcGFjZVdp
ZHRoLnZhbHVlKCk7Ci0gICAgZWxzZQotICAgICAgICBhZGRpdGlvbmFsVGVtcFdpZHRoID0gdGV4
dFdpZHRoKHJlbmRlclRleHQsIGxhc3RTcGFjZSwgb2Zmc2V0IC0gbGFzdFNwYWNlLCBmb250LCBt
X3dpZHRoLmN1cnJlbnRXaWR0aCgpLCBpc0ZpeGVkUGl0Y2gsIG1fY29sbGFwc2VXaGl0ZVNwYWNl
LCB3b3JkTWVhc3VyZW1lbnQuZmFsbGJhY2tGb250cywgdGV4dExheW91dCk7CisgICAgZmxvYXQg
YWRkaXRpb25hbFRlbXBXaWR0aCA9IHRleHRXaWR0aENvbnNpZGVyaW5nUG9zc2libGVUcmFpbGlu
Z1NwYWNlKHJlbmRlclRleHQsIHRleHRMYXlvdXQsIGN1cnJlbnRDaGFyYWN0ZXIsIHdvcmRUcmFp
bGluZ1NwYWNlLCBmYWxsYmFja0ZvbnRzLCB3b3JkTWVhc3VyZW1lbnQuZmFsbGJhY2tGb250cywg
Zm9udCwgaXNGaXhlZFBpdGNoLCBsYXN0U3BhY2UsIG9mZnNldCk7CiAgICAgCiAgICAgaWYgKHdv
cmRNZWFzdXJlbWVudC5mYWxsYmFja0ZvbnRzLmlzRW1wdHkoKSAmJiAhZmFsbGJhY2tGb250cy5p
c0VtcHR5KCkpCiAgICAgICAgIHdvcmRNZWFzdXJlbWVudC5mYWxsYmFja0ZvbnRzLnN3YXAoZmFs
bGJhY2tGb250cyk7CkBAIC0xMjUyLDQgKzEyMjksNCBAQCBpbmxpbmUgTGVnYWN5SW5saW5lSXRl
cmF0b3IgQnJlYWtpbmdDb250ZXh0OjpoYW5kbGVFbmRPZkxpbmUoKQogICAgIHJldHVybiBtX2xp
bmVCcmVhazsKIH0KIAotfQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvV29yZFRyYWlsaW5nU3BhY2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9saW5lL1dvcmRUcmFpbGluZ1NwYWNlLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4wMWZiYzM0MGI2MzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9Xb3JkVHJhaWxpbmdTcGFjZS5oCkBAIC0w
LDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDAgTGFycyBLbm9sbCAoa25vbGxA
a2RlLm9yZykKKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQ2hhbmdTZW9rIE9oIDxzaGl2YW1pZG93
QGdtYWlsLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAxMyBBZG9iZSBTeXN0ZW1zIEluYy4gQWxs
IHJpZ2h0IHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
KyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4g
IElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEz
MDEsIFVTQS4KKyAqCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJGb250Q2FzY2Fk
ZS5oIgorI2luY2x1ZGUgIlJlbmRlckJsb2NrLmgiCisjaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIK
KyNpbmNsdWRlIDxvcHRpb25hbD4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK3N0cnVjdCBXb3JkVHJhaWxpbmdTcGFjZSB7CisgICAgV29yZFRyYWls
aW5nU3BhY2UoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBib29sIG1lYXN1cmluZ1dpdGhUcmFp
bGluZ1doaXRlc3BhY2VFbmFibGVkID0gdHJ1ZSkKKyAgICAgICAgOiBtX3N0eWxlKHN0eWxlKQor
ICAgIHsKKyAgICAgICAgaWYgKCFtZWFzdXJpbmdXaXRoVHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxl
ZCB8fCAhbV9zdHlsZS5mb250Q2FzY2FkZSgpLmVuYWJsZUtlcm5pbmcoKSkKKyAgICAgICAgICAg
IG1fc3RhdGUgPSBXb3JkVHJhaWxpbmdTcGFjZVN0YXRlOjpJbml0aWFsaXplZDsKKyAgICB9CisK
KyAgICBzdGQ6Om9wdGlvbmFsPGZsb2F0PiB3aWR0aChIYXNoU2V0PGNvbnN0IEZvbnQqPiYgZmFs
bGJhY2tGb250cykKKyAgICB7CisgICAgICAgIGlmIChtX3N0YXRlID09IFdvcmRUcmFpbGluZ1Nw
YWNlU3RhdGU6OkluaXRpYWxpemVkKQorICAgICAgICAgICAgcmV0dXJuIG1fd2lkdGg7CisKKyAg
ICAgICAgYXV0byYgZm9udCA9IG1fc3R5bGUuZm9udENhc2NhZGUoKTsKKyAgICAgICAgbV93aWR0
aCA9IGZvbnQud2lkdGgoUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4oJnNwYWNlLCAxLCBt
X3N0eWxlKSwgJmZhbGxiYWNrRm9udHMpICsgZm9udC53b3JkU3BhY2luZygpOworICAgICAgICBt
X3N0YXRlID0gV29yZFRyYWlsaW5nU3BhY2VTdGF0ZTo6SW5pdGlhbGl6ZWQ7CisgICAgICAgIHJl
dHVybiBtX3dpZHRoOworICAgIH0KKworcHJpdmF0ZToKKyAgICBlbnVtIGNsYXNzIFdvcmRUcmFp
bGluZ1NwYWNlU3RhdGUgeyBVbmluaXRpYWxpemVkLCBJbml0aWFsaXplZCB9OworICAgIGNvbnN0
IFJlbmRlclN0eWxlJiBtX3N0eWxlOworICAgIFdvcmRUcmFpbGluZ1NwYWNlU3RhdGUgbV9zdGF0
ZSB7IFdvcmRUcmFpbGluZ1NwYWNlU3RhdGU6OlVuaW5pdGlhbGl6ZWQgfTsKKyAgICBzdGQ6Om9w
dGlvbmFsPGZsb2F0PiBtX3dpZHRoOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447433</attachid>
            <date>2021-12-16 23:08:20 -0800</date>
            <delta_ts>2021-12-17 10:33:36 -0800</delta_ts>
            <desc>Depends on bug 234421</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>22010</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">Y29tbWl0IDgzMzQ1MWE2Mjc1NTI0NjhlYTgyZDNiYmUzOTQ3NDEwNjI5ZDQ4NDAKQXV0aG9yOiBN
eWxlcyBDLiBNYXhmaWVsZCA8bW1heGZpZWxkQGFwcGxlLmNvbT4KRGF0ZTogICBUaHUgRGVjIDE2
IDIzOjAzOjE5IDIwMjEgLTA4MDAKCiAgICBEZWR1cGxpY2F0aW9uCgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDVh
ZDg2MDNmMmQ4My4uMDNjMzVhMjFhZTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDkgQEAKKzIw
MjEtMTItMTYgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAg
ICAgICBEZWR1cGxpY2F0ZSBjb2RlIGluIFJlbmRlclRleHQ6OmNvbXB1dGVQcmVmZXJyZWRMb2dp
Y2FsV2lkdGhzKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzNDQyNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFdlIGhhdmUgMyBwbGFjZXMgd2l0aCBjb2RlIG9mIHRoaXMgZm9ybToKKworICAgICAgICBm
bG9hdCByZXN1bHQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IHdvcmRUcmFpbGluZ1Nw
YWNlV2lkdGg7CisgICAgICAgIGlmIChjdXJyZW50Q2hhcmFjdGVySXNTcGFjZSkKKyAgICAgICAg
ICAgIHdvcmRUcmFpbGluZ1NwYWNlV2lkdGggPSB3b3JkVHJhaWxpbmdTcGFjZS53aWR0aChmYWxs
YmFja0ZvbnRzKTsKKyAgICAgICAgaWYgKHdvcmRUcmFpbGluZ1NwYWNlV2lkdGgpCisgICAgICAg
ICAgICByZXN1bHQgPSBtZWFzdXJlVGV4dChzdGFydGluZ0NoYXJhY3RlckluZGV4LCBsZW5ndGgg
KyAxKSAtIHdvcmRUcmFpbGluZ1NwYWNlV2lkdGgudmFsdWUoKTsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgcmVzdWx0ID0gbWVhc3VyZVRleHQoc3RhcnRpbmdDaGFyYWN0ZXJJbmRleCwgbGVu
Z3RoKTsKKworICAgICAgICBUaGlzIHBhdGNoIHNpbXBseSBkZWR1cGxpY2F0ZXMgdGhpcyBsb2dp
YywgYW5kIHB1dHMgaXQgaW50byBhIHNpbmdsZSBmdW5jdGlvbjoKKyAgICAgICAgUmVuZGVyVGV4
dDo6bWVhc3VyZVRleHRDb25zaWRlcmluZ1Bvc3NpYmxlVHJhaWxpbmdTcGFjZSgpLiBCZWNhdXNl
IHRoZSBkaWZmZXJlbnQgcGxhY2VzIHdoaWNoIGNhbGwgaXQKKyAgICAgICAgdXNlIGRpZmZlcmVu
dCB0ZXh0IG1lYXN1cmVtZW50IGZ1bmN0aW9ucywgdGhpcyBmdW5jdGlvbiBhY2NlcHRzIGEgIm1l
YXN1cmUgdGV4dCIgY2FsbGJhY2suCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGJlY2F1c2UgdGhl
cmUgaXMgbm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6OndpZHRoRnJvbUNhY2hlQ29uc2lkZXJpbmdQb3Nz
aWJsZVRyYWlsaW5nU3BhY2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6
bWF4V29yZEZyYWdtZW50V2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6Y29t
cHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJU
ZXh0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRJbmxpbmVzLmg6IEFkZGVkLiBU
aGlzIGZ1bmN0aW9uIG5lZWRzIHRvIGJlIGFibGUgdG8gc2VlIGludG8gV29yZFRyYWlsaW5nU3Bh
Y2UsCisgICAgICAgIGJ1dCB3ZSBzaG91bGRuJ3QgYmUgYWRkaW5nIGFueSBtb3JlICNpbmNsdWRl
cyB0byBSZW5kZXJUZXh0LmggYmVjYXVzZSBkb2luZyBzbyB3aWxsIGluY3JlYXNlIHRoZSBidWls
ZCB0aW1lLgorICAgICAgICBTbywgaW5zdGVhZCwgd2UgY2FuIG1vdmUgdGhpcyB0ZW1wbGF0ZWQg
ZnVuY3Rpb24gdG8gYSBuZXcgSW5saW5lcyBoZWFkZXIsIGFuZCBoYXZlIGNhbGxlcnMgaW5jbHVk
ZSB0aGF0CisgICAgICAgIGhlYWRlci4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6Om1l
YXN1cmVUZXh0Q29uc2lkZXJpbmdQb3NzaWJsZVRyYWlsaW5nU3BhY2UpOgorICAgICAgICAqIHJl
bmRlcmluZy9saW5lL0JyZWFraW5nQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6QnJlYWtp
bmdDb250ZXh0Ojp0ZXh0V2lkdGhDb25zaWRlcmluZ1Bvc3NpYmxlVHJhaWxpbmdTcGFjZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpCcmVha2luZ0NvbnRleHQ6OmNvbXB1dGVBZGRpdGlvbmFsQmV0d2Vl
bldvcmRzV2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6V29yZFRyYWlsaW5nU3BhY2U6OldvcmRU
cmFpbGluZ1NwYWNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldvcmRUcmFpbGluZ1Nw
YWNlOjp3aWR0aCk6IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVyaW5nL2xpbmUvV29yZFRyYWls
aW5nU3BhY2UuaDogQWRkZWQuIEJyZWFraW5nQ29udGV4dC5oIGRlZmluZXMgV29yZFRyYWlsaW5n
U3BhY2UsIGJ1dCBpdCBuZWVkcworICAgICAgICB0byBiZSBhYmxlIHRvIGNhbGwgbWVhc3VyZVRl
eHRDb25zaWRlcmluZ1Bvc3NpYmxlVHJhaWxpbmdTcGFjZSgpLCB3aGljaCBuZWVkcyB0byBiZSBh
YmxlIHRvIHNlZSBpbnNpZGUKKyAgICAgICAgV29yZFRyYWlsaW5nU3BhY2UuIEF2b2lkIHRoZSBj
aXJjdWxhciBkZXBlbmRlbmN5IGJ5IHNwbGl0dGluZyBvdXQgV29yZFRyYWlsaW5nU3BhY2UgaW50
byBpdHMgb3duIGZpbGUuCisgICAgICAgIChXZWJDb3JlOjpXb3JkVHJhaWxpbmdTcGFjZTo6V29y
ZFRyYWlsaW5nU3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6V29yZFRyYWlsaW5nU3BhY2U6Ondp
ZHRoKToKKwogMjAyMS0xMi0xNiAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUu
Y29tPgogCiAgICAgICAgIFJlZmFjdG9yIGh5cGhlbmF0aW9uIGxvZ2ljIGluIFJlbmRlclRleHQ6
OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA0NzNiNzg5YjQ0M2UuLmRmZGEw
MGE5ODQxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtNzA2Myw2ICs3MDYzLDggQEAKIAkJMUMwOTM5RTkxQTEzRTEyOTAwQjc4
OEU1IC8qIENhY2hlZFNWR0ZvbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Q2FjaGVkU1ZHRm9udC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzA5RDA0QjFF
MzFDMzI4MDA3MjVGMTggLyogUEFMLnhjb2RlcHJvaiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9ICJ3cmFwcGVyLnBiLXByb2plY3QiOyBuYW1lID0gUEFM
Lnhjb2RlcHJvajsgcGF0aCA9IFBBTC9QQUwueGNvZGVwcm9qOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkxQzBBQTE2QTIxOTQwREM3MDA4OTY4MjkgLyogU3R5bGVDb2xvclNjaGVtZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHlsZUNvbG9yU2NoZW1lLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDMEJFOTQzMjc2QzYwQkMwMDVGQjZDMSAvKiBS
ZW5kZXJUZXh0SW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJUZXh0SW5saW5lcy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzBCRTk0NzI3NkM2NjAzMDA1RkI2QzEgLyog
V29yZFRyYWlsaW5nU3BhY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV29yZFRyYWlsaW5nU3BhY2UuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUMxMkFDMjgxRUU3NzhBRTAwNzlFMEEwIC8q
IEZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
Rm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTFDMTJBQzI5MUVFNzc4QUUwMDc5RTBBMCAvKiBGb250RmFtaWx5U3BlY2lmaWNh
dGlvbkNvcmVUZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29y
ZVRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUMxMkFDMkMxRUU3Nzk5NTAw
NzlFMEEwIC8qIEZvbnREZXNjcmlwdGlvbkNvY29hLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZv
bnREZXNjcmlwdGlvbkNvY29hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMx
OTY2LDYgKzMxOTY4LDcgQEAKIAkJCQlFNEM5MUEwRjE4MDIzNDM5MDBBMTdGNkQgLyogVGV4dFBh
aW50U3R5bGUuY3BwICovLAogCQkJCUU0QzkxQTBEMTgwMjM0MzEwMEExN0Y2RCAvKiBUZXh0UGFp
bnRTdHlsZS5oICovLAogCQkJCUJDQTI1NzE0MTI5M0MwMTAwMDdBMjYzRCAvKiBWZXJ0aWNhbFBv
c2l0aW9uQ2FjaGUuaCAqLywKKwkJCQkxQzBCRTk0MzI3NkM2MEJDMDA1RkI2QzEgLyogUmVuZGVy
VGV4dElubGluZXMuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gcmVuZGVyaW5nOwogCQkJc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTMzMDY1LDYgKzMzMDY4LDcgQEAKIAkJCQlGRkRCQzA0NTE4
M0QyN0I3MDA0MDcxMDkgLyogTGluZVdpZHRoLmggKi8sCiAJCQkJRkZBQzMwRkQxODRGQjE0NTAw
OEM0RjFFIC8qIFRyYWlsaW5nT2JqZWN0cy5jcHAgKi8sCiAJCQkJRkZBQzMwRkMxODRGQjE0NTAw
OEM0RjFFIC8qIFRyYWlsaW5nT2JqZWN0cy5oICovLAorCQkJCTFDMEJFOTQ3Mjc2QzY2MDMwMDVG
QjZDMSAvKiBXb3JkVHJhaWxpbmdTcGFjZS5oICovLAogCQkJKTsKIAkJCXBhdGggPSBsaW5lOwog
CQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTMzMTIxLDcgKzMzMTI1LDYgQEAKIAkJCWlz
YSA9IFBCWEhlYWRlcnNCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0
NzsKIAkJCWZpbGVzID0gKAotCQkJCTdCNTgyREQ4MjcxNkY1NUIwMDRCOTJEMCAvKiAobnVsbCkg
aW4gSGVhZGVycyAqLywKIAkJCQk3Q0QwRTJCODFGODBBNDgyMDAxNkE0Q0UgLyogQWJvcnRDb250
cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk3Q0QwRTJCRjFGODBBNTZFMDAxNkE0Q0UgLyog
QWJvcnRTaWduYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2Qjk1MTk1MjA3RDYzMzQwMEE3RDJE
RCAvKiBBYnN0cmFjdERPTVdpbmRvdy5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGV4dC5jcHAKaW5kZXggMDA4ODE4YmUzZTc3Li5hNGIwYzI4Mjk1Y2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKQEAgLTEsNyArMSw3IEBACiAv
KgogICogKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAqIChDKSAyMDAwIERp
cmsgTXVlbGxlciAobXVlbGxlckBrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LTIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA2
IEFuZHJldyBXZWxsaW5ndG9uIChwcm90b25Ad2lyZXRhcHBlZC5uZXQpCiAgKiBDb3B5cmlnaHQg
KEMpIDIwMDYgR3JhaGFtIERlbm5pcyAoZ3JhaGFtLmRlbm5pc0BnbWFpbC5jb20pCiAgKgpAQCAt
NDcsNiArNDcsNyBAQAogI2luY2x1ZGUgIlJlbmRlckNvbWJpbmVUZXh0LmgiCiAjaW5jbHVkZSAi
UmVuZGVySW5saW5lLmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKKyNpbmNsdWRlICJSZW5k
ZXJUZXh0SW5saW5lcy5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJSZW5k
ZXJlZERvY3VtZW50TWFya2VyLmgiCiAjaW5jbHVkZSAiU1ZHRWxlbWVudFR5cGVIZWxwZXJzLmgi
CkBAIC03MTcsNiArNzE4LDEzIEBAIEFMV0FZU19JTkxJTkUgZmxvYXQgUmVuZGVyVGV4dDo6d2lk
dGhGcm9tQ2FjaGUoY29uc3QgRm9udENhc2NhZGUmIGYsIHVuc2lnbmVkIHN0CiAgICAgcmV0dXJu
IGYud2lkdGgocnVuLCBmYWxsYmFja0ZvbnRzLCBnbHlwaE92ZXJmbG93KTsKIH0KIAorQUxXQVlT
X0lOTElORSBmbG9hdCBSZW5kZXJUZXh0Ojp3aWR0aEZyb21DYWNoZUNvbnNpZGVyaW5nUG9zc2li
bGVUcmFpbGluZ1NwYWNlKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3QgRm9udENhc2Nh
ZGUmIGZvbnQsIHVuc2lnbmVkIHN0YXJ0SW5kZXgsIHVuc2lnbmVkIHdvcmRMZW4sIGZsb2F0IHhQ
b3MsIGJvb2wgY3VycmVudENoYXJhY3RlcklzU3BhY2UsIFdvcmRUcmFpbGluZ1NwYWNlJiB3b3Jk
VHJhaWxpbmdTcGFjZSwgSGFzaFNldDxjb25zdCBGb250Kj4mIGZhbGxiYWNrRm9udHMsIEdseXBo
T3ZlcmZsb3cmIGdseXBoT3ZlcmZsb3cpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1lYXN1cmVUZXh0
Q29uc2lkZXJpbmdQb3NzaWJsZVRyYWlsaW5nU3BhY2UoY3VycmVudENoYXJhY3RlcklzU3BhY2Us
IHN0YXJ0SW5kZXgsIHdvcmRMZW4sIHdvcmRUcmFpbGluZ1NwYWNlLCBmYWxsYmFja0ZvbnRzLCBb
Jl0gKHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIGxlbikgeworICAgICAgICByZXR1cm4gd2lkdGhG
cm9tQ2FjaGUoZm9udCwgZnJvbSwgbGVuLCB4UG9zLCAmZmFsbGJhY2tGb250cywgJmdseXBoT3Zl
cmZsb3csIHN0eWxlKTsKKyAgICB9KTsKK30KKwogaW5saW5lIGJvb2wgaXNIYW5nYWJsZVB1bmN0
dWF0aW9uQXRMaW5lU3RhcnQoVUNoYXIgYykKIHsKICAgICByZXR1cm4gVV9HRVRfR0NfTUFTSyhj
KSAmIChVX0dDX1BTX01BU0sgfCBVX0dDX1BJX01BU0sgfCBVX0dDX1BGX01BU0spOwpAQCAtOTcz
LDE1ICs5ODEsNyBAQCBmbG9hdCBSZW5kZXJUZXh0OjptYXhXb3JkRnJhZ21lbnRXaWR0aChjb25z
dCBSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IEZvbnRDYXNjYQogICAgICAgICByZXR1cm4gZW50
aXJlV29yZFdpZHRoOwogICAgIH0KIAotICAgIGZsb2F0IHN1ZmZpeFdpZHRoOwotICAgIHN0ZDo6
b3B0aW9uYWw8ZmxvYXQ+IHdvcmRUcmFpbGluZ1NwYWNlV2lkdGg7Ci0gICAgaWYgKGN1cnJlbnRD
aGFyYWN0ZXJJc1NwYWNlKQotICAgICAgICB3b3JkVHJhaWxpbmdTcGFjZVdpZHRoID0gd29yZFRy
YWlsaW5nU3BhY2Uud2lkdGgoZmFsbGJhY2tGb250cyk7Ci0gICAgaWYgKHdvcmRUcmFpbGluZ1Nw
YWNlV2lkdGgpCi0gICAgICAgIHN1ZmZpeFdpZHRoID0gd2lkdGhGcm9tQ2FjaGUoZm9udCwgY2hh
cmFjdGVySW5kZXggKyBzdWZmaXhTdGFydCwgd29yZC5sZW5ndGgoKSAtIHN1ZmZpeFN0YXJ0ICsg
MSwgeFBvcywgMCwgMCwgc3R5bGUpIC0gd29yZFRyYWlsaW5nU3BhY2VXaWR0aC52YWx1ZSgpOwot
ICAgIGVsc2UKLSAgICAgICAgc3VmZml4V2lkdGggPSB3aWR0aEZyb21DYWNoZShmb250LCBjaGFy
YWN0ZXJJbmRleCArIHN1ZmZpeFN0YXJ0LCB3b3JkLmxlbmd0aCgpIC0gc3VmZml4U3RhcnQsIHhQ
b3MsIDAsIDAsIHN0eWxlKTsKLQorICAgIGF1dG8gc3VmZml4V2lkdGggPSB3aWR0aEZyb21DYWNo
ZUNvbnNpZGVyaW5nUG9zc2libGVUcmFpbGluZ1NwYWNlKHN0eWxlLCBmb250LCBjaGFyYWN0ZXJJ
bmRleCArIHN1ZmZpeFN0YXJ0LCB3b3JkLmxlbmd0aCgpIC0gc3VmZml4U3RhcnQsIHhQb3MsIGN1
cnJlbnRDaGFyYWN0ZXJJc1NwYWNlLCB3b3JkVHJhaWxpbmdTcGFjZSwgZmFsbGJhY2tGb250cywg
Z2x5cGhPdmVyZmxvdyk7CiAgICAgcmV0dXJuIHN0ZDo6bWF4KG1heEZyYWdtZW50V2lkdGgsIHN1
ZmZpeFdpZHRoKTsKIH0KIApAQCAtMTExNSwxNyArMTExNSw5IEBAIHZvaWQgUmVuZGVyVGV4dDo6
Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoZmxvYXQgbGVhZFdpZHRoLCBIYXNoU2V0PGNv
bnN0IEZvCiAgICAgICAgIGlmICh3b3JkTGVuKSB7CiAgICAgICAgICAgICBmbG9hdCBjdXJyTWlu
V2lkdGggPSAwOwogICAgICAgICAgICAgYm9vbCBpc1NwYWNlID0gKGogPCBsZW5ndGgpICYmIGlz
U3BhY2VBY2NvcmRpbmdUb1N0eWxlKGMsIHN0eWxlKTsKLSAgICAgICAgICAgIGZsb2F0IHc7Ci0g
ICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPGZsb2F0PiB3b3JkVHJhaWxpbmdTcGFjZVdpZHRoOwot
ICAgICAgICAgICAgaWYgKGlzU3BhY2UpCi0gICAgICAgICAgICAgICAgd29yZFRyYWlsaW5nU3Bh
Y2VXaWR0aCA9IHdvcmRUcmFpbGluZ1NwYWNlLndpZHRoKGZhbGxiYWNrRm9udHMpOwotICAgICAg
ICAgICAgaWYgKHdvcmRUcmFpbGluZ1NwYWNlV2lkdGgpCi0gICAgICAgICAgICAgICAgdyA9IHdp
ZHRoRnJvbUNhY2hlKGZvbnQsIGksIHdvcmRMZW4gKyAxLCBsZWFkV2lkdGggKyBjdXJyTWF4V2lk
dGgsICZmYWxsYmFja0ZvbnRzLCAmZ2x5cGhPdmVyZmxvdywgc3R5bGUpIC0gd29yZFRyYWlsaW5n
U3BhY2VXaWR0aC52YWx1ZSgpOwotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAg
dyA9IHdpZHRoRnJvbUNhY2hlKGZvbnQsIGksIHdvcmRMZW4sIGxlYWRXaWR0aCArIGN1cnJNYXhX
aWR0aCwgJmZhbGxiYWNrRm9udHMsICZnbHlwaE92ZXJmbG93LCBzdHlsZSk7Ci0gICAgICAgICAg
ICAgICAgaWYgKGMgPT0gc29mdEh5cGhlbiAmJiBzdHlsZS5oeXBoZW5zKCkgIT0gSHlwaGVuczo6
Tm9uZSkKLSAgICAgICAgICAgICAgICAgICAgY3Vyck1pbldpZHRoID0gaHlwaGVuV2lkdGgoKnRo
aXMsIGZvbnQpOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgZmxvYXQgdyA9IHdpZHRoRnJv
bUNhY2hlQ29uc2lkZXJpbmdQb3NzaWJsZVRyYWlsaW5nU3BhY2Uoc3R5bGUsIGZvbnQsIGksIHdv
cmRMZW4sIGxlYWRXaWR0aCArIGN1cnJNYXhXaWR0aCwgaXNTcGFjZSwgd29yZFRyYWlsaW5nU3Bh
Y2UsIGZhbGxiYWNrRm9udHMsIGdseXBoT3ZlcmZsb3cpOworICAgICAgICAgICAgaWYgKGMgPT0g
c29mdEh5cGhlbiAmJiBzdHlsZS5oeXBoZW5zKCkgIT0gSHlwaGVuczo6Tm9uZSkKKyAgICAgICAg
ICAgICAgICBjdXJyTWluV2lkdGggPSBoeXBoZW5XaWR0aCgqdGhpcywgZm9udCk7CiAKICAgICAg
ICAgICAgIGlmICh3ID4gbWF4V29yZFdpZHRoKSB7CiAgICAgICAgICAgICAgICAgYXV0byBtYXhG
cmFnbWVudFdpZHRoID0gbWF4V29yZEZyYWdtZW50V2lkdGgoc3R5bGUsIGZvbnQsIFN0cmluZ1Zp
ZXcoc3RyaW5nKS5zdWJzdHJpbmcoaSwgd29yZExlbiksIG1pbmltdW1QcmVmaXhMZW5ndGgsIG1p
bmltdW1TdWZmaXhMZW5ndGgsIGlzU3BhY2UsIGksIGxlYWRXaWR0aCArIGN1cnJNYXhXaWR0aCwg
dywgd29yZFRyYWlsaW5nU3BhY2UsIGZhbGxiYWNrRm9udHMsIGdseXBoT3ZlcmZsb3cpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmgKaW5kZXggY2UzMDBkNzMwNGNkLi5lMWZlYTNi
ZjQ3ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuaApAQCAtMSw3ICsxLDcg
QEAKIC8qCiAgKiAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQogICogKEMpIDIw
MDAgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQt
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDQtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICog
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKQEAgLTE4Myw2ICsxODMsOSBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgUmVuZGVyVGV4dCog
ZmluZEJ5RGlzcGxheUNvbnRlbnRzSW5saW5lV3JhcHBlckNhbmRpZGF0ZShSZW5kZXJFbGVtZW50
Jik7CiAKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgTWVhc3VyZVRleHRDYWxsYmFjaz4KKyAgICBz
dGF0aWMgZmxvYXQgbWVhc3VyZVRleHRDb25zaWRlcmluZ1Bvc3NpYmxlVHJhaWxpbmdTcGFjZShi
b29sIGN1cnJlbnRDaGFyYWN0ZXJJc1NwYWNlLCB1bnNpZ25lZCBzdGFydEluZGV4LCB1bnNpZ25l
ZCB3b3JkTGVuZ3RoLCBXb3JkVHJhaWxpbmdTcGFjZSYsIEhhc2hTZXQ8Y29uc3QgRm9udCo+JiBm
YWxsYmFja0ZvbnRzLCBNZWFzdXJlVGV4dENhbGxiYWNrJiYpOworCiBwcm90ZWN0ZWQ6CiAgICAg
dmlydHVhbCB2b2lkIGNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKGZsb2F0IGxlYWRXaWR0
aCk7CiAgICAgdm9pZCB3aWxsQmVEZXN0cm95ZWQoKSBvdmVycmlkZTsKQEAgLTIyNCw2ICsyMjcs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgY29udGFpbmVyKGNvbnN0IFJlbmRlckxheWVyTW9kZWxP
YmplY3QmLCBib29sJikgY29uc3QgPSBkZWxldGU7IC8vIFVzZSBwYXJlbnQoKSBpbnN0ZWFkLgog
CiAgICAgZmxvYXQgbWF4V29yZEZyYWdtZW50V2lkdGgoY29uc3QgUmVuZGVyU3R5bGUmLCBjb25z
dCBGb250Q2FzY2FkZSYsIFN0cmluZ1ZpZXcgd29yZCwgdW5zaWduZWQgbWluaW11bVByZWZpeExl
bmd0aCwgdW5zaWduZWQgbWluaW11bVN1ZmZpeExlbmd0aCwgYm9vbCBjdXJyZW50Q2hhcmFjdGVy
SXNTcGFjZSwgdW5zaWduZWQgY2hhcmFjdGVySW5kZXgsIGZsb2F0IHhQb3MsIGZsb2F0IGVudGly
ZVdvcmRXaWR0aCwgV29yZFRyYWlsaW5nU3BhY2UmLCBIYXNoU2V0PGNvbnN0IEZvbnQqPiYgZmFs
bGJhY2tGb250cywgR2x5cGhPdmVyZmxvdyYpOworICAgIGZsb2F0IHdpZHRoRnJvbUNhY2hlQ29u
c2lkZXJpbmdQb3NzaWJsZVRyYWlsaW5nU3BhY2UoY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBG
b250Q2FzY2FkZSYsIHVuc2lnbmVkIHN0YXJ0SW5kZXgsIHVuc2lnbmVkIHdvcmRMZW4sIGZsb2F0
IHhQb3MsIGJvb2wgY3VycmVudENoYXJhY3RlcklzU3BhY2UsIFdvcmRUcmFpbGluZ1NwYWNlJiwg
SGFzaFNldDxjb25zdCBGb250Kj4mIGZhbGxiYWNrRm9udHMsIEdseXBoT3ZlcmZsb3cmKSBjb25z
dDsKIAogICAgIC8vIFdlIHB1dCB0aGUgYml0ZmllbGQgZmlyc3QgdG8gbWluaW1pemUgcGFkZGlu
ZyBvbiA2NC1iaXQuCiAgICAgdW5zaWduZWQgbV9oYXNCcmVha2FibGVDaGFyIDogMTsgLy8gV2hl
dGhlciBvciBub3Qgd2UgY2FuIGJlIGJyb2tlbiBpbnRvIG11bHRpcGxlIGxpbmVzLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRJbmxpbmVzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dElubGluZXMuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjFiMTc1OGZmMzAwOQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0SW5saW5lcy5oCkBAIC0wLDAgKzEs
MzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUg
TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxv
bmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwg
d3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5r
bGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4K
KyAqCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJSZW5kZXJUZXh0LmgiCisjaW5j
bHVkZSAiV29yZFRyYWlsaW5nU3BhY2UuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgTWVhc3VyZVRleHRDYWxsYmFjaz4KK2Zsb2F0IFJlbmRlclRleHQ6Om1l
YXN1cmVUZXh0Q29uc2lkZXJpbmdQb3NzaWJsZVRyYWlsaW5nU3BhY2UoYm9vbCBjdXJyZW50Q2hh
cmFjdGVySXNTcGFjZSwgdW5zaWduZWQgc3RhcnRJbmRleCwgdW5zaWduZWQgd29yZExlbmd0aCwg
V29yZFRyYWlsaW5nU3BhY2UmIHdvcmRUcmFpbGluZ1NwYWNlLCBIYXNoU2V0PGNvbnN0IEZvbnQq
PiYgZmFsbGJhY2tGb250cywgTWVhc3VyZVRleHRDYWxsYmFjayYmIGNhbGxiYWNrKQoreworICAg
IHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IHdvcmRUcmFpbGluZ1NwYWNlV2lkdGg7CisgICAgaWYgKGN1
cnJlbnRDaGFyYWN0ZXJJc1NwYWNlKQorICAgICAgICB3b3JkVHJhaWxpbmdTcGFjZVdpZHRoID0g
d29yZFRyYWlsaW5nU3BhY2Uud2lkdGgoZmFsbGJhY2tGb250cyk7CisgICAgaWYgKHdvcmRUcmFp
bGluZ1NwYWNlV2lkdGgpCisgICAgICAgIHJldHVybiBjYWxsYmFjayhzdGFydEluZGV4LCB3b3Jk
TGVuZ3RoICsgMSkgLSB3b3JkVHJhaWxpbmdTcGFjZVdpZHRoLnZhbHVlKCk7CisgICAgcmV0dXJu
IGNhbGxiYWNrKHN0YXJ0SW5kZXgsIHdvcmRMZW5ndGgpOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9CcmVha2lu
Z0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0JyZWFraW5nQ29udGV4
dC5oCmluZGV4IDNkOWZmOTk1YmJjMy4uYjAwN2NiOGYyOWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvbGluZS9CcmVha2luZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvbGluZS9CcmVha2luZ0NvbnRleHQuaApAQCAtMSw2ICsxLDYgQEAKIC8q
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDAgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKLSAqIENv
cHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAx
MSBBcHBsZSBJbmMuIEFsbCByaWdodCByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwMy0y
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0IHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEw
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMg
Q2hhbmdTZW9rIE9oIDxzaGl2YW1pZG93QGdtYWlsLmNvbT4KICAqIENvcHlyaWdodCAoQykgMjAx
MyBBZG9iZSBTeXN0ZW1zIEluYy4gQWxsIHJpZ2h0IHJlc2VydmVkLgpAQCAtMzgsNyArMzgsOSBA
QAogI2luY2x1ZGUgIlJlbmRlckxpc3RNYXJrZXIuaCIKICNpbmNsdWRlICJSZW5kZXJSdWJ5UnVu
LmgiCiAjaW5jbHVkZSAiUmVuZGVyU1ZHSW5saW5lVGV4dC5oIgorI2luY2x1ZGUgIlJlbmRlclRl
eHRJbmxpbmVzLmgiCiAjaW5jbHVkZSAiVHJhaWxpbmdPYmplY3RzLmgiCisjaW5jbHVkZSAiV29y
ZFRyYWlsaW5nU3BhY2UuaCIKICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdWaWV3Lmg+CiAjaW5jbHVkZSA8d3RmL3VuaWNvZGUvQ2hhcmFjdGVyTmFt
ZXMuaD4KQEAgLTY0LDMyICs2Niw2IEBAIHN0cnVjdCBXb3JkTWVhc3VyZW1lbnQgewogICAgIEhh
c2hTZXQ8Y29uc3QgRm9udCo+IGZhbGxiYWNrRm9udHM7CiB9OwogCi1zdHJ1Y3QgV29yZFRyYWls
aW5nU3BhY2UgewotICAgIFdvcmRUcmFpbGluZ1NwYWNlKGNvbnN0IFJlbmRlclN0eWxlJiBzdHls
ZSwgYm9vbCBtZWFzdXJpbmdXaXRoVHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCA9IHRydWUpCi0g
ICAgICAgIDogbV9zdHlsZShzdHlsZSkKLSAgICB7Ci0gICAgICAgIGlmICghbWVhc3VyaW5nV2l0
aFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQgfHwgIW1fc3R5bGUuZm9udENhc2NhZGUoKS5lbmFi
bGVLZXJuaW5nKCkpCi0gICAgICAgICAgICBtX3N0YXRlID0gV29yZFRyYWlsaW5nU3BhY2VTdGF0
ZTo6SW5pdGlhbGl6ZWQ7Ci0gICAgfQotCi0gICAgc3RkOjpvcHRpb25hbDxmbG9hdD4gd2lkdGgo
SGFzaFNldDxjb25zdCBGb250Kj4mIGZhbGxiYWNrRm9udHMpCi0gICAgewotICAgICAgICBpZiAo
bV9zdGF0ZSA9PSBXb3JkVHJhaWxpbmdTcGFjZVN0YXRlOjpJbml0aWFsaXplZCkKLSAgICAgICAg
ICAgIHJldHVybiBtX3dpZHRoOwotCi0gICAgICAgIGF1dG8mIGZvbnQgPSBtX3N0eWxlLmZvbnRD
YXNjYWRlKCk7Ci0gICAgICAgIG1fd2lkdGggPSBmb250LndpZHRoKFJlbmRlckJsb2NrOjpjb25z
dHJ1Y3RUZXh0UnVuKCZzcGFjZSwgMSwgbV9zdHlsZSksICZmYWxsYmFja0ZvbnRzKSArIGZvbnQu
d29yZFNwYWNpbmcoKTsKLSAgICAgICAgbV9zdGF0ZSA9IFdvcmRUcmFpbGluZ1NwYWNlU3RhdGU6
OkluaXRpYWxpemVkOwotICAgICAgICByZXR1cm4gbV93aWR0aDsKLSAgICB9Ci0KLXByaXZhdGU6
Ci0gICAgZW51bSBjbGFzcyBXb3JkVHJhaWxpbmdTcGFjZVN0YXRlIHsgVW5pbml0aWFsaXplZCwg
SW5pdGlhbGl6ZWQgfTsKLSAgICBjb25zdCBSZW5kZXJTdHlsZSYgbV9zdHlsZTsKLSAgICBXb3Jk
VHJhaWxpbmdTcGFjZVN0YXRlIG1fc3RhdGUgeyBXb3JkVHJhaWxpbmdTcGFjZVN0YXRlOjpVbmlu
aXRpYWxpemVkIH07Ci0gICAgc3RkOjpvcHRpb25hbDxmbG9hdD4gbV93aWR0aDsKLX07Ci0KIGNs
YXNzIEJyZWFraW5nQ29udGV4dCB7CiBwdWJsaWM6CiAgICAgQnJlYWtpbmdDb250ZXh0KExpbmVC
cmVha2VyJiBsaW5lQnJlYWtlciwgSW5saW5lQmlkaVJlc29sdmVyJiByZXNvbHZlciwgTGluZUlu
Zm8mIGluTGluZUluZm8sIExpbmVXaWR0aCYgbGluZVdpZHRoLCBSZW5kZXJUZXh0SW5mbyYgaW5S
ZW5kZXJUZXh0SW5mbywgRmxvYXRpbmdPYmplY3QqIGluTGFzdEZsb2F0RnJvbVByZXZpb3VzTGlu
ZSwgYm9vbCBhcHBsaWVkU3RhcnRXaWR0aCwgUmVuZGVyQmxvY2tGbG93JiBibG9jaykKQEAgLTE1
MSw2ICsxMjcsNyBAQCBwdWJsaWM6CiAgICAgTGVnYWN5SW5saW5lSXRlcmF0b3IgaGFuZGxlRW5k
T2ZMaW5lKCk7CiAgICAgCiAgICAgZmxvYXQgY29tcHV0ZUFkZGl0aW9uYWxCZXR3ZWVuV29yZHNX
aWR0aChSZW5kZXJUZXh0JiwgVGV4dExheW91dCosIFVDaGFyLCBXb3JkVHJhaWxpbmdTcGFjZSYs
IEhhc2hTZXQ8Y29uc3QgRm9udCo+JiBmYWxsYmFja0ZvbnRzLCBXb3JkTWVhc3VyZW1lbnRzJiwg
Y29uc3QgRm9udENhc2NhZGUmLCBib29sIGlzRml4ZWRQaXRjaCwgdW5zaWduZWQgbGFzdFNwYWNl
LCBmbG9hdCBsYXN0U3BhY2VXb3JkU3BhY2luZywgZmxvYXQgd29yZFNwYWNpbmdGb3JXb3JkTWVh
c3VyZW1lbnQsIHVuc2lnbmVkIG9mZnNldCk7CisgICAgZmxvYXQgdGV4dFdpZHRoQ29uc2lkZXJp
bmdQb3NzaWJsZVRyYWlsaW5nU3BhY2UoUmVuZGVyVGV4dCYsIFRleHRMYXlvdXQqLCBVQ2hhciBj
dXJyZW50Q2hhcmFjdGVyLCBXb3JkVHJhaWxpbmdTcGFjZSYsIEhhc2hTZXQ8Y29uc3QgRm9udCo+
JiBmYWxsYmFja0ZvbnRzLCBIYXNoU2V0PGNvbnN0IEZvbnQqPiYgd29yZE1lYXN1cmVtZW50RmFs
bGJhY2tGb250cywgY29uc3QgRm9udENhc2NhZGUmLCBib29sIGlzRml4ZWRQaXRjaCwgdW5zaWdu
ZWQgbGFzdFNwYWNlLCB1bnNpZ25lZCBvZmZzZXQpOwogCiAgICAgdm9pZCBjbGVhckxpbmVCcmVh
a0lmRml0c09uTGluZShib29sIGlnbm9yaW5nVHJhaWxpbmdTcGFjZSA9IGZhbHNlKQogICAgIHsK
QEAgLTYzMSw2ICs2MDgsMTMgQEAgaW5saW5lIHZvaWQgdHJ5SHlwaGVuYXRpbmcoUmVuZGVyVGV4
dCYgdGV4dCwgY29uc3QgRm9udENhc2NhZGUmIGZvbnQsIGNvbnN0IEF0b20KICAgICBoeXBoZW5h
dGVkID0gdHJ1ZTsKIH0KIAoraW5saW5lIGZsb2F0IEJyZWFraW5nQ29udGV4dDo6dGV4dFdpZHRo
Q29uc2lkZXJpbmdQb3NzaWJsZVRyYWlsaW5nU3BhY2UoUmVuZGVyVGV4dCYgcmVuZGVyVGV4dCwg
VGV4dExheW91dCogdGV4dExheW91dCwgVUNoYXIgY3VycmVudENoYXJhY3RlciwgV29yZFRyYWls
aW5nU3BhY2UmIHdvcmRUcmFpbGluZ1NwYWNlLCBIYXNoU2V0PGNvbnN0IEZvbnQqPiYgZmFsbGJh
Y2tGb250cywgSGFzaFNldDxjb25zdCBGb250Kj4mIHdvcmRNZWFzdXJlbWVudEZhbGxiYWNrRm9u
dHMsIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBib29sIGlzRml4ZWRQaXRjaCwgdW5zaWduZWQg
bGFzdFNwYWNlLCB1bnNpZ25lZCBvZmZzZXQpCit7CisgICAgcmV0dXJuIFJlbmRlclRleHQ6Om1l
YXN1cmVUZXh0Q29uc2lkZXJpbmdQb3NzaWJsZVRyYWlsaW5nU3BhY2UoY3VycmVudENoYXJhY3Rl
ciA9PSBzcGFjZSwgbGFzdFNwYWNlLCBvZmZzZXQgLSBsYXN0U3BhY2UsIHdvcmRUcmFpbGluZ1Nw
YWNlLCBmYWxsYmFja0ZvbnRzLCBbJl0gKHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIGxlbikgewor
ICAgICAgICByZXR1cm4gdGV4dFdpZHRoKHJlbmRlclRleHQsIGZyb20sIGxlbiwgZm9udCwgbV93
aWR0aC5jdXJyZW50V2lkdGgoKSwgaXNGaXhlZFBpdGNoLCBtX2NvbGxhcHNlV2hpdGVTcGFjZSwg
d29yZE1lYXN1cmVtZW50RmFsbGJhY2tGb250cywgdGV4dExheW91dCk7CisgICAgfSk7Cit9CisK
IGlubGluZSBmbG9hdCBCcmVha2luZ0NvbnRleHQ6OmNvbXB1dGVBZGRpdGlvbmFsQmV0d2Vlbldv
cmRzV2lkdGgoUmVuZGVyVGV4dCYgcmVuZGVyVGV4dCwgVGV4dExheW91dCogdGV4dExheW91dCwg
VUNoYXIgY3VycmVudENoYXJhY3RlciwgV29yZFRyYWlsaW5nU3BhY2UmIHdvcmRUcmFpbGluZ1Nw
YWNlLCBIYXNoU2V0PGNvbnN0IEZvbnQqPiYgZmFsbGJhY2tGb250cywgV29yZE1lYXN1cmVtZW50
cyYgd29yZE1lYXN1cmVtZW50cywgY29uc3QgRm9udENhc2NhZGUmIGZvbnQsIGJvb2wgaXNGaXhl
ZFBpdGNoLCB1bnNpZ25lZCBsYXN0U3BhY2UsIGZsb2F0IGxhc3RTcGFjZVdvcmRTcGFjaW5nLCBm
bG9hdCB3b3JkU3BhY2luZ0ZvcldvcmRNZWFzdXJlbWVudCwgdW5zaWduZWQgb2Zmc2V0KQogewog
ICAgIHdvcmRNZWFzdXJlbWVudHMuZ3Jvdyh3b3JkTWVhc3VyZW1lbnRzLnNpemUoKSArIDEpOwpA
QCAtNjQwLDE0ICs2MjQsNyBAQCBpbmxpbmUgZmxvYXQgQnJlYWtpbmdDb250ZXh0Ojpjb21wdXRl
QWRkaXRpb25hbEJldHdlZW5Xb3Jkc1dpZHRoKFJlbmRlclRleHQmIHJlbgogICAgIHdvcmRNZWFz
dXJlbWVudC5lbmRPZmZzZXQgPSBvZmZzZXQ7CiAgICAgd29yZE1lYXN1cmVtZW50LnN0YXJ0T2Zm
c2V0ID0gbGFzdFNwYWNlOwogICAgIAotICAgIGZsb2F0IGFkZGl0aW9uYWxUZW1wV2lkdGggPSAw
OwotICAgIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IHdvcmRUcmFpbGluZ1NwYWNlV2lkdGg7Ci0gICAg
aWYgKGN1cnJlbnRDaGFyYWN0ZXIgPT0gJyAnKQotICAgICAgICB3b3JkVHJhaWxpbmdTcGFjZVdp
ZHRoID0gd29yZFRyYWlsaW5nU3BhY2Uud2lkdGgoZmFsbGJhY2tGb250cyk7Ci0gICAgaWYgKHdv
cmRUcmFpbGluZ1NwYWNlV2lkdGgpCi0gICAgICAgIGFkZGl0aW9uYWxUZW1wV2lkdGggPSB0ZXh0
V2lkdGgocmVuZGVyVGV4dCwgbGFzdFNwYWNlLCBvZmZzZXQgKyAxIC0gbGFzdFNwYWNlLCBmb250
LCBtX3dpZHRoLmN1cnJlbnRXaWR0aCgpLCBpc0ZpeGVkUGl0Y2gsIG1fY29sbGFwc2VXaGl0ZVNw
YWNlLCB3b3JkTWVhc3VyZW1lbnQuZmFsbGJhY2tGb250cywgdGV4dExheW91dCkgLSB3b3JkVHJh
aWxpbmdTcGFjZVdpZHRoLnZhbHVlKCk7Ci0gICAgZWxzZQotICAgICAgICBhZGRpdGlvbmFsVGVt
cFdpZHRoID0gdGV4dFdpZHRoKHJlbmRlclRleHQsIGxhc3RTcGFjZSwgb2Zmc2V0IC0gbGFzdFNw
YWNlLCBmb250LCBtX3dpZHRoLmN1cnJlbnRXaWR0aCgpLCBpc0ZpeGVkUGl0Y2gsIG1fY29sbGFw
c2VXaGl0ZVNwYWNlLCB3b3JkTWVhc3VyZW1lbnQuZmFsbGJhY2tGb250cywgdGV4dExheW91dCk7
CisgICAgZmxvYXQgYWRkaXRpb25hbFRlbXBXaWR0aCA9IHRleHRXaWR0aENvbnNpZGVyaW5nUG9z
c2libGVUcmFpbGluZ1NwYWNlKHJlbmRlclRleHQsIHRleHRMYXlvdXQsIGN1cnJlbnRDaGFyYWN0
ZXIsIHdvcmRUcmFpbGluZ1NwYWNlLCBmYWxsYmFja0ZvbnRzLCB3b3JkTWVhc3VyZW1lbnQuZmFs
bGJhY2tGb250cywgZm9udCwgaXNGaXhlZFBpdGNoLCBsYXN0U3BhY2UsIG9mZnNldCk7CiAgICAg
CiAgICAgaWYgKHdvcmRNZWFzdXJlbWVudC5mYWxsYmFja0ZvbnRzLmlzRW1wdHkoKSAmJiAhZmFs
bGJhY2tGb250cy5pc0VtcHR5KCkpCiAgICAgICAgIHdvcmRNZWFzdXJlbWVudC5mYWxsYmFja0Zv
bnRzLnN3YXAoZmFsbGJhY2tGb250cyk7CkBAIC0xMjUyLDQgKzEyMjksNCBAQCBpbmxpbmUgTGVn
YWN5SW5saW5lSXRlcmF0b3IgQnJlYWtpbmdDb250ZXh0OjpoYW5kbGVFbmRPZkxpbmUoKQogICAg
IHJldHVybiBtX2xpbmVCcmVhazsKIH0KIAotfQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvV29yZFRyYWlsaW5nU3BhY2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL1dvcmRUcmFpbGluZ1NwYWNlLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4wMWZiYzM0MGI2MzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9Xb3JkVHJhaWxpbmdT
cGFjZS5oCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDAgTGFycyBL
bm9sbCAoa25vbGxAa2RlLm9yZykKKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQ2hhbmdTZW9rIE9o
IDxzaGl2YW1pZG93QGdtYWlsLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAxMyBBZG9iZSBTeXN0
ZW1zIEluYy4gQWxsIHJpZ2h0IHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
KyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBD
T1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24s
IE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRl
ICJGb250Q2FzY2FkZS5oIgorI2luY2x1ZGUgIlJlbmRlckJsb2NrLmgiCisjaW5jbHVkZSAiUmVu
ZGVyU3R5bGUuaCIKKyNpbmNsdWRlIDxvcHRpb25hbD4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBXb3JkVHJhaWxpbmdTcGFjZSB7Cisg
ICAgV29yZFRyYWlsaW5nU3BhY2UoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBib29sIG1lYXN1
cmluZ1dpdGhUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkID0gdHJ1ZSkKKyAgICAgICAgOiBtX3N0
eWxlKHN0eWxlKQorICAgIHsKKyAgICAgICAgaWYgKCFtZWFzdXJpbmdXaXRoVHJhaWxpbmdXaGl0
ZXNwYWNlRW5hYmxlZCB8fCAhbV9zdHlsZS5mb250Q2FzY2FkZSgpLmVuYWJsZUtlcm5pbmcoKSkK
KyAgICAgICAgICAgIG1fc3RhdGUgPSBXb3JkVHJhaWxpbmdTcGFjZVN0YXRlOjpJbml0aWFsaXpl
ZDsKKyAgICB9CisKKyAgICBzdGQ6Om9wdGlvbmFsPGZsb2F0PiB3aWR0aChIYXNoU2V0PGNvbnN0
IEZvbnQqPiYgZmFsbGJhY2tGb250cykKKyAgICB7CisgICAgICAgIGlmIChtX3N0YXRlID09IFdv
cmRUcmFpbGluZ1NwYWNlU3RhdGU6OkluaXRpYWxpemVkKQorICAgICAgICAgICAgcmV0dXJuIG1f
d2lkdGg7CisKKyAgICAgICAgYXV0byYgZm9udCA9IG1fc3R5bGUuZm9udENhc2NhZGUoKTsKKyAg
ICAgICAgbV93aWR0aCA9IGZvbnQud2lkdGgoUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4o
JnNwYWNlLCAxLCBtX3N0eWxlKSwgJmZhbGxiYWNrRm9udHMpICsgZm9udC53b3JkU3BhY2luZygp
OworICAgICAgICBtX3N0YXRlID0gV29yZFRyYWlsaW5nU3BhY2VTdGF0ZTo6SW5pdGlhbGl6ZWQ7
CisgICAgICAgIHJldHVybiBtX3dpZHRoOworICAgIH0KKworcHJpdmF0ZToKKyAgICBlbnVtIGNs
YXNzIFdvcmRUcmFpbGluZ1NwYWNlU3RhdGUgeyBVbmluaXRpYWxpemVkLCBJbml0aWFsaXplZCB9
OworICAgIGNvbnN0IFJlbmRlclN0eWxlJiBtX3N0eWxlOworICAgIFdvcmRUcmFpbGluZ1NwYWNl
U3RhdGUgbV9zdGF0ZSB7IFdvcmRUcmFpbGluZ1NwYWNlU3RhdGU6OlVuaW5pdGlhbGl6ZWQgfTsK
KyAgICBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBtX3dpZHRoOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447434</attachid>
            <date>2021-12-16 23:08:57 -0800</date>
            <delta_ts>2021-12-16 23:14:35 -0800</delta_ts>
            <desc>Patch for EWS</desc>
            <filename>bug-234424-20211216230856.patch</filename>
            <type>text/plain</type>
            <size>28159</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3MDYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmYxYmRkYWUxYmVlZDI4
ZGZmY2IzYTFiZTk0YTExOTEyNGVkNTM3MS4uMDNjMzVhMjFhZTc1MTc1YTZhNzhjZGVjYTE1NGI1
YTFhNTU1YThhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDczIEBACisyMDIxLTEyLTE2ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgRGVkdXBsaWNh
dGUgY29kZSBpbiBSZW5kZXJUZXh0Ojpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocygpCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQ0MjQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBoYXZlIDMg
cGxhY2VzIHdpdGggY29kZSBvZiB0aGlzIGZvcm06CisKKyAgICAgICAgZmxvYXQgcmVzdWx0Owor
ICAgICAgICBzdGQ6Om9wdGlvbmFsPGZsb2F0PiB3b3JkVHJhaWxpbmdTcGFjZVdpZHRoOworICAg
ICAgICBpZiAoY3VycmVudENoYXJhY3RlcklzU3BhY2UpCisgICAgICAgICAgICB3b3JkVHJhaWxp
bmdTcGFjZVdpZHRoID0gd29yZFRyYWlsaW5nU3BhY2Uud2lkdGgoZmFsbGJhY2tGb250cyk7Cisg
ICAgICAgIGlmICh3b3JkVHJhaWxpbmdTcGFjZVdpZHRoKQorICAgICAgICAgICAgcmVzdWx0ID0g
bWVhc3VyZVRleHQoc3RhcnRpbmdDaGFyYWN0ZXJJbmRleCwgbGVuZ3RoICsgMSkgLSB3b3JkVHJh
aWxpbmdTcGFjZVdpZHRoLnZhbHVlKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJlc3Vs
dCA9IG1lYXN1cmVUZXh0KHN0YXJ0aW5nQ2hhcmFjdGVySW5kZXgsIGxlbmd0aCk7CisKKyAgICAg
ICAgVGhpcyBwYXRjaCBzaW1wbHkgZGVkdXBsaWNhdGVzIHRoaXMgbG9naWMsIGFuZCBwdXRzIGl0
IGludG8gYSBzaW5nbGUgZnVuY3Rpb246CisgICAgICAgIFJlbmRlclRleHQ6Om1lYXN1cmVUZXh0
Q29uc2lkZXJpbmdQb3NzaWJsZVRyYWlsaW5nU3BhY2UoKS4gQmVjYXVzZSB0aGUgZGlmZmVyZW50
IHBsYWNlcyB3aGljaCBjYWxsIGl0CisgICAgICAgIHVzZSBkaWZmZXJlbnQgdGV4dCBtZWFzdXJl
bWVudCBmdW5jdGlvbnMsIHRoaXMgZnVuY3Rpb24gYWNjZXB0cyBhICJtZWFzdXJlIHRleHQiIGNh
bGxiYWNrLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoZXJlIGlzIG5vIGJlaGF2
aW9yIGNoYW5nZS4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUZXh0Ojp3aWR0aEZyb21DYWNoZUNvbnNpZGVyaW5nUG9zc2libGVUcmFpbGluZ1Nw
YWNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6Om1heFdvcmRGcmFnbWVu
dFdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6OmNvbXB1dGVQcmVmZXJyZWRM
b2dpY2FsV2lkdGhzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dC5oOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0SW5saW5lcy5oOiBBZGRlZC4gVGhpcyBmdW5jdGlvbiBu
ZWVkcyB0byBiZSBhYmxlIHRvIHNlZSBpbnRvIFdvcmRUcmFpbGluZ1NwYWNlLAorICAgICAgICBi
dXQgd2Ugc2hvdWxkbid0IGJlIGFkZGluZyBhbnkgbW9yZSAjaW5jbHVkZXMgdG8gUmVuZGVyVGV4
dC5oIGJlY2F1c2UgZG9pbmcgc28gd2lsbCBpbmNyZWFzZSB0aGUgYnVpbGQgdGltZS4KKyAgICAg
ICAgU28sIGluc3RlYWQsIHdlIGNhbiBtb3ZlIHRoaXMgdGVtcGxhdGVkIGZ1bmN0aW9uIHRvIGEg
bmV3IElubGluZXMgaGVhZGVyLCBhbmQgaGF2ZSBjYWxsZXJzIGluY2x1ZGUgdGhhdAorICAgICAg
ICBoZWFkZXIuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0OjptZWFzdXJlVGV4dENvbnNp
ZGVyaW5nUG9zc2libGVUcmFpbGluZ1NwYWNlKToKKyAgICAgICAgKiByZW5kZXJpbmcvbGluZS9C
cmVha2luZ0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkJyZWFraW5nQ29udGV4dDo6dGV4
dFdpZHRoQ29uc2lkZXJpbmdQb3NzaWJsZVRyYWlsaW5nU3BhY2UpOgorICAgICAgICAoV2ViQ29y
ZTo6QnJlYWtpbmdDb250ZXh0Ojpjb21wdXRlQWRkaXRpb25hbEJldHdlZW5Xb3Jkc1dpZHRoKToK
KyAgICAgICAgKFdlYkNvcmU6OldvcmRUcmFpbGluZ1NwYWNlOjpXb3JkVHJhaWxpbmdTcGFjZSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXb3JkVHJhaWxpbmdTcGFjZTo6d2lkdGgpOiBE
ZWxldGVkLgorICAgICAgICAqIHJlbmRlcmluZy9saW5lL1dvcmRUcmFpbGluZ1NwYWNlLmg6IEFk
ZGVkLiBCcmVha2luZ0NvbnRleHQuaCBkZWZpbmVzIFdvcmRUcmFpbGluZ1NwYWNlLCBidXQgaXQg
bmVlZHMKKyAgICAgICAgdG8gYmUgYWJsZSB0byBjYWxsIG1lYXN1cmVUZXh0Q29uc2lkZXJpbmdQ
b3NzaWJsZVRyYWlsaW5nU3BhY2UoKSwgd2hpY2ggbmVlZHMgdG8gYmUgYWJsZSB0byBzZWUgaW5z
aWRlCisgICAgICAgIFdvcmRUcmFpbGluZ1NwYWNlLiBBdm9pZCB0aGUgY2lyY3VsYXIgZGVwZW5k
ZW5jeSBieSBzcGxpdHRpbmcgb3V0IFdvcmRUcmFpbGluZ1NwYWNlIGludG8gaXRzIG93biBmaWxl
LgorICAgICAgICAoV2ViQ29yZTo6V29yZFRyYWlsaW5nU3BhY2U6OldvcmRUcmFpbGluZ1NwYWNl
KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmRUcmFpbGluZ1NwYWNlOjp3aWR0aCk6CisKKzIwMjEt
MTItMTYgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAg
ICBSZWZhY3RvciBoeXBoZW5hdGlvbiBsb2dpYyBpbiBSZW5kZXJUZXh0Ojpjb21wdXRlUHJlZmVy
cmVkTG9naWNhbFdpZHRocygpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzQ0MjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUaGUgaHlwaGVuYXRpb24gbG9naWMgaW4gUmVuZGVyVGV4dDo6Y29tcHV0ZVBy
ZWZlcnJlZExvZ2ljYWxXaWR0aHMoKSB3YXMgc3BsaXQgYWNyb3NzIHR3byBmdW5jdGlvbnMuCisg
ICAgICAgIElmIHlvdSBjb25zaWRlciB0aGUgd29yZCAiQUJDLURFRi1HSEkiICh3aGVyZSB0aGUg
Jy0nIGNoYXJhY3RlcnMgYXJlIGh5cGhlbmF0aW9uIG9wcG9ydHVuaXRpZXMpLCBvbmUKKyAgICAg
ICAgZnVuY3Rpb24sIG1heFdvcmRGcmFnbWVudFdpZHRoKCkgd2FzIHJlc3BvbnNpYmxlIGZvciBj
YWxjdWxhdGluZyB0aGUgd2lkdGggb2YgIkFCQy0iIGFuZCAiREVGLSIgYnV0CisgICAgICAgIG5v
dCAiR0hJIi4gUmVuZGVyVGV4dDo6Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoKSBjYWxs
ZWQgdGhhdCBmdW5jdGlvbiwgYW5kIGFmdGVyIGl0IHJldHVybmVkLAorICAgICAgICB3b3VsZCB0
aGVuIGNhbGN1bGF0ZSB0aGUgd2lkdGggb2YgIkdISSIsIGFuZCBjb21wYXJlIHRoYXQgdG8gdGhl
IHdpZHRoIHJldHVybmVkIGJ5CisgICAgICAgIG1heFdvcmRGcmFnbWVudFdpZHRoKCkuIEEgbXVj
aCBzaW1wbGVyIGRlc2lnbiB3b3VsZCBiZSB0byBoYXZlIG9uZSBmdW5jdGlvbiwgbWF4V29yZEZy
YWdtZW50V2lkdGgoKSwKKyAgICAgICAgaGFuZGxlIGFsbCB0aGUgaHlwaGVuYXRpb24gbG9naWMs
IGFuZCBkbyBhbGwgdGhlIGNhbGN1bGF0aW9uIG5lY2Vzc2FyeSB0byBqdXN0IHJldHVybiBhIHNp
bmdsZSB2YWx1ZQorICAgICAgICB0byBSZW5kZXJUZXh0Ojpjb21wdXRlUHJlZmVycmVkTG9naWNh
bFdpZHRocygpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoZXJlIGlzIG5vIGJl
aGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6Om1heFdvcmRGcmFnbWVudFdpZHRoKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKToK
KyAgICAgICAgKFdlYkNvcmU6Om1heFdvcmRGcmFnbWVudFdpZHRoKTogRGVsZXRlZC4KKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dC5oOgorCiAyMDIxLTEyLTE0ICBBbGFuIEJ1anRhcyAg
PHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbSUZDXVtJbnRlZ3JhdGlvbl0gVXNlIGxvZ2lj
YWwgbWFyZ2luL2JvcmRlci9wYWRkaW5nIHZhbHVlcyBpbiBsYXlvdXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA0NzNiNzg5YjQ0
M2UyODA4ZmVlYzNiMTExYjJlNmIxZTQ2N2I0MzRlLi5hZWYxNTJmZDJlMDQyNGIzNjVlZGRjMTky
YmIyOTQyMjVlZjFkYTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC03MDYzLDYgKzcwNjMsOCBAQAogCQkxQzA5MzlFOTFBMTNF
MTI5MDBCNzg4RTUgLyogQ2FjaGVkU1ZHRm9udC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBDYWNoZWRTVkdGb250Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFD
MDlEMDRCMUUzMUMzMjgwMDcyNUYxOCAvKiBQQUwueGNvZGVwcm9qICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gIndyYXBwZXIucGItcHJvamVjdCI7IG5h
bWUgPSBQQUwueGNvZGVwcm9qOyBwYXRoID0gUEFML1BBTC54Y29kZXByb2o7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTFDMEFBMTZBMjE5NDBEQzcwMDg5NjgyOSAvKiBTdHlsZUNvbG9y
U2NoZW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0eWxlQ29sb3JTY2hl
bWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUMwQkU5NDMyNzZDNjBCQzAwNUZC
NkMxIC8qIFJlbmRlclRleHRJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlclRleHRJbmxp
bmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDMEJFOTQ3Mjc2QzY2MDMwMDVG
QjZDMSAvKiBXb3JkVHJhaWxpbmdTcGFjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXb3JkVHJhaWxpbmdT
cGFjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzEyQUMyODFFRTc3OEFFMDA3
OUUwQTAgLyogRm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBGb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMUMxMkFDMjkxRUU3NzhBRTAwNzlFMEEwIC8qIEZvbnRGYW1pbHlT
cGVjaWZpY2F0aW9uQ29yZVRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRm9udEZhbWlseVNwZWNpZmlj
YXRpb25Db3JlVGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzEyQUMyQzFF
RTc3OTk1MDA3OUUwQTAgLyogRm9udERlc2NyaXB0aW9uQ29jb2EuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gRm9udERlc2NyaXB0aW9uQ29jb2EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMzE5MjQsNiArMzE5MjYsNyBAQAogCQkJCTA4M0RBRUE1MEYwMUE3RkIwMDM0Mjc1NCAv
KiBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuaCAqLywKIAkJCQlCQ0VBNDg0RTA5N0Q5MzAy
MDA5NEM5RTQgLyogUmVuZGVyVGV4dEZyYWdtZW50LmNwcCAqLywKIAkJCQlCQ0VBNDg0RjA5N0Q5
MzAyMDA5NEM5RTQgLyogUmVuZGVyVGV4dEZyYWdtZW50LmggKi8sCisJCQkJMUMwQkU5NDMyNzZD
NjBCQzAwNUZCNkMxIC8qIFJlbmRlclRleHRJbmxpbmVzLmggKi8sCiAJCQkJRTRDOTFBMTcxODA5
OTlGQjAwQTE3RjZEIC8qIFJlbmRlclRleHRMaW5lQm94ZXMuY3BwICovLAogCQkJCUU0QzkxQTE1
MTgwOTk5RjEwMEExN0Y2RCAvKiBSZW5kZXJUZXh0TGluZUJveGVzLmggKi8sCiAJCQkJQkNFQTQ4
NEEwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlclRoZW1lLmNwcCAqLywKQEAgLTMzMDY1LDYgKzMz
MDY4LDcgQEAKIAkJCQlGRkRCQzA0NTE4M0QyN0I3MDA0MDcxMDkgLyogTGluZVdpZHRoLmggKi8s
CiAJCQkJRkZBQzMwRkQxODRGQjE0NTAwOEM0RjFFIC8qIFRyYWlsaW5nT2JqZWN0cy5jcHAgKi8s
CiAJCQkJRkZBQzMwRkMxODRGQjE0NTAwOEM0RjFFIC8qIFRyYWlsaW5nT2JqZWN0cy5oICovLAor
CQkJCTFDMEJFOTQ3Mjc2QzY2MDMwMDVGQjZDMSAvKiBXb3JkVHJhaWxpbmdTcGFjZS5oICovLAog
CQkJKTsKIAkJCXBhdGggPSBsaW5lOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTMz
MTIxLDcgKzMzMTI1LDYgQEAKIAkJCWlzYSA9IFBCWEhlYWRlcnNCdWlsZFBoYXNlOwogCQkJYnVp
bGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAotCQkJCTdCNTgyREQ4Mjcx
NkY1NUIwMDRCOTJEMCAvKiAobnVsbCkgaW4gSGVhZGVycyAqLywKIAkJCQk3Q0QwRTJCODFGODBB
NDgyMDAxNkE0Q0UgLyogQWJvcnRDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk3Q0Qw
RTJCRjFGODBBNTZFMDAxNkE0Q0UgLyogQWJvcnRTaWduYWwuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTQ2Qjk1MTk1MjA3RDYzMzQwMEE3RDJERCAvKiBBYnN0cmFjdERPTVdpbmRvdy5oIGluIEhlYWRl
cnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKaW5kZXggN2MzYmY5
NjhjMzcxMTUwZTU1NWMyMmJiZTFhYzk0M2RhMzUwZGZmYS4uYTRiMGMyODI5NWNkZDg4Y2Y1YThm
NTgzY2EzZDYzY2NiMjRkMjc1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0
LmNwcApAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBr
ZGUub3JnKQogICogKEMpIDIwMDAgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDQtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgQW5kcmV3IFdlbGxpbmd0b24gKHByb3RvbkB3aXJldGFw
cGVkLm5ldCkKICAqIENvcHlyaWdodCAoQykgMjAwNiBHcmFoYW0gRGVubmlzIChncmFoYW0uZGVu
bmlzQGdtYWlsLmNvbSkKICAqCkBAIC00Nyw2ICs0Nyw3IEBACiAjaW5jbHVkZSAiUmVuZGVyQ29t
YmluZVRleHQuaCIKICNpbmNsdWRlICJSZW5kZXJJbmxpbmUuaCIKICNpbmNsdWRlICJSZW5kZXJM
YXllci5oIgorI2luY2x1ZGUgIlJlbmRlclRleHRJbmxpbmVzLmgiCiAjaW5jbHVkZSAiUmVuZGVy
Vmlldy5oIgogI2luY2x1ZGUgIlJlbmRlcmVkRG9jdW1lbnRNYXJrZXIuaCIKICNpbmNsdWRlICJT
VkdFbGVtZW50VHlwZUhlbHBlcnMuaCIKQEAgLTcxNyw2ICs3MTgsMTMgQEAgQUxXQVlTX0lOTElO
RSBmbG9hdCBSZW5kZXJUZXh0Ojp3aWR0aEZyb21DYWNoZShjb25zdCBGb250Q2FzY2FkZSYgZiwg
dW5zaWduZWQgc3QKICAgICByZXR1cm4gZi53aWR0aChydW4sIGZhbGxiYWNrRm9udHMsIGdseXBo
T3ZlcmZsb3cpOwogfQogCitBTFdBWVNfSU5MSU5FIGZsb2F0IFJlbmRlclRleHQ6OndpZHRoRnJv
bUNhY2hlQ29uc2lkZXJpbmdQb3NzaWJsZVRyYWlsaW5nU3BhY2UoY29uc3QgUmVuZGVyU3R5bGUm
IHN0eWxlLCBjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgdW5zaWduZWQgc3RhcnRJbmRleCwgdW5z
aWduZWQgd29yZExlbiwgZmxvYXQgeFBvcywgYm9vbCBjdXJyZW50Q2hhcmFjdGVySXNTcGFjZSwg
V29yZFRyYWlsaW5nU3BhY2UmIHdvcmRUcmFpbGluZ1NwYWNlLCBIYXNoU2V0PGNvbnN0IEZvbnQq
PiYgZmFsbGJhY2tGb250cywgR2x5cGhPdmVyZmxvdyYgZ2x5cGhPdmVyZmxvdykgY29uc3QKK3sK
KyAgICByZXR1cm4gbWVhc3VyZVRleHRDb25zaWRlcmluZ1Bvc3NpYmxlVHJhaWxpbmdTcGFjZShj
dXJyZW50Q2hhcmFjdGVySXNTcGFjZSwgc3RhcnRJbmRleCwgd29yZExlbiwgd29yZFRyYWlsaW5n
U3BhY2UsIGZhbGxiYWNrRm9udHMsIFsmXSAodW5zaWduZWQgZnJvbSwgdW5zaWduZWQgbGVuKSB7
CisgICAgICAgIHJldHVybiB3aWR0aEZyb21DYWNoZShmb250LCBmcm9tLCBsZW4sIHhQb3MsICZm
YWxsYmFja0ZvbnRzLCAmZ2x5cGhPdmVyZmxvdywgc3R5bGUpOworICAgIH0pOworfQorCiBpbmxp
bmUgYm9vbCBpc0hhbmdhYmxlUHVuY3R1YXRpb25BdExpbmVTdGFydChVQ2hhciBjKQogewogICAg
IHJldHVybiBVX0dFVF9HQ19NQVNLKGMpICYgKFVfR0NfUFNfTUFTSyB8IFVfR0NfUElfTUFTSyB8
IFVfR0NfUEZfTUFTSyk7CkBAIC05MjQsOSArOTMyLDkgQEAgc3RhdGljIGlubGluZSBmbG9hdCBo
eXBoZW5XaWR0aChSZW5kZXJUZXh0JiByZW5kZXJlciwgY29uc3QgRm9udENhc2NhZGUmIGZvbnQp
CiAgICAgcmV0dXJuIGZvbnQud2lkdGgodGV4dFJ1bik7CiB9CiAKLXN0YXRpYyBmbG9hdCBtYXhX
b3JkRnJhZ21lbnRXaWR0aChSZW5kZXJUZXh0JiByZW5kZXJlciwgY29uc3QgUmVuZGVyU3R5bGUm
IHN0eWxlLCBjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgU3RyaW5nVmlldyB3b3JkLCB1bnNpZ25l
ZCBtaW5pbXVtUHJlZml4TGVuZ3RoLCB1bnNpZ25lZCBtaW5pbXVtU3VmZml4TGVuZ3RoLCB1bnNp
Z25lZCYgc3VmZml4U3RhcnQsIEhhc2hTZXQ8Y29uc3QgRm9udCo+JiBmYWxsYmFja0ZvbnRzLCBH
bHlwaE92ZXJmbG93JiBnbHlwaE92ZXJmbG93KQorZmxvYXQgUmVuZGVyVGV4dDo6bWF4V29yZEZy
YWdtZW50V2lkdGgoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBGb250Q2FzY2FkZSYg
Zm9udCwgU3RyaW5nVmlldyB3b3JkLCB1bnNpZ25lZCBtaW5pbXVtUHJlZml4TGVuZ3RoLCB1bnNp
Z25lZCBtaW5pbXVtU3VmZml4TGVuZ3RoLCBib29sIGN1cnJlbnRDaGFyYWN0ZXJJc1NwYWNlLCB1
bnNpZ25lZCBjaGFyYWN0ZXJJbmRleCwgZmxvYXQgeFBvcywgZmxvYXQgZW50aXJlV29yZFdpZHRo
LCBXb3JkVHJhaWxpbmdTcGFjZSYgd29yZFRyYWlsaW5nU3BhY2UsIEhhc2hTZXQ8Y29uc3QgRm9u
dCo+JiBmYWxsYmFja0ZvbnRzLCBHbHlwaE92ZXJmbG93JiBnbHlwaE92ZXJmbG93KQogewotICAg
IHN1ZmZpeFN0YXJ0ID0gMDsKKyAgICB1bnNpZ25lZCBzdWZmaXhTdGFydCA9IDA7CiAgICAgaWYg
KHdvcmQubGVuZ3RoKCkgPD0gbWluaW11bVN1ZmZpeExlbmd0aCkKICAgICAgICAgcmV0dXJuIDA7
CiAKQEAgLTk0MSw4ICs5NDksMTMgQEAgc3RhdGljIGZsb2F0IG1heFdvcmRGcmFnbWVudFdpZHRo
KFJlbmRlclRleHQmIHJlbmRlcmVyLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUKIAogICAgIGh5
cGhlbkxvY2F0aW9ucy5yZXZlcnNlKCk7CiAKLSAgICAvLyBGSVhNRTogQnJlYWtpbmcgdGhlIHN0
cmluZyBhdCB0aGVzZSBwbGFjZXMgaW4gdGhlIG1pZGRsZSBvZiB3b3JkcyBpcyBjb21wbGV0ZWx5
IGJyb2tlbiB3aXRoIGNvbXBsZXggdGV4dC4KLSAgICBmbG9hdCBtaW5pbXVtRnJhZ21lbnRXaWR0
aFRvQ29uc2lkZXIgPSBmb250LnBpeGVsU2l6ZSgpICogNSAvIDQgKyBoeXBoZW5XaWR0aChyZW5k
ZXJlciwgZm9udCk7CisgICAgLy8gQ29uc2lkZXIgdGhlIHdvcmQgIkFCQy1ERUYtR0hJIiAod2hl
cmUgdGhlICctJyBjaGFyYWN0ZXJzIGFyZSBoeXBoZW5hdGlvbiBvcHBvcnR1bml0aWVzKS4gV2Ug
d2FudCB0byBtZWFzdXJlIHRoZSB3aWR0aAorICAgIC8vIG9mICJBQkMtIiBhbmQgIkRFRi0iLCBi
dXQgbm90ICJHSEktIi4gSW5zdGVhZCwgd2Ugc2hvdWxkIG1lYXN1cmUgIkdISSIgdGhlIHNhbWUg
d2F5IHdlIG1lYXN1cmUgcmVndWxhciB1bmh5cGhlbmF0ZWQKKyAgICAvLyB3b3JkcyAoYnkgdXNp
bmcgd29yZFRyYWlsaW5nU3BhY2UpLiBUaGVyZWZvcmUsIHRoaXMgZnVuY3Rpb24gaXMgc3BsaXQg
dXAgaW50byB0d28gcGFydHMgLSBvbmUgdGhhdCBtZWFzdXJlcyBlYWNoIHByZWZpeCwKKyAgICAv
LyBhbmQgb25lIHRoYXQgbWVhc3VyZXMgdGhlIHNpbmdsZSBsYXN0IHN1ZmZpeC4KKworICAgIC8v
IEZJWE1FOiBCcmVha2luZyB0aGUgc3RyaW5nIGF0IHRoZXNlIHBsYWNlcyBpbiB0aGUgbWlkZGxl
IG9mIHdvcmRzIGRvZXNuJ3Qgd29yayB3aXRoIGNvbXBsZXggdGV4dC4KKyAgICBmbG9hdCBtaW5p
bXVtRnJhZ21lbnRXaWR0aFRvQ29uc2lkZXIgPSBmb250LnBpeGVsU2l6ZSgpICogNSAvIDQgKyBo
eXBoZW5XaWR0aCgqdGhpcywgZm9udCk7CiAgICAgZmxvYXQgbWF4RnJhZ21lbnRXaWR0aCA9IDA7
CiAgICAgZm9yIChzaXplX3QgayA9IDA7IGsgPCBoeXBoZW5Mb2NhdGlvbnMuc2l6ZSgpOyArK2sp
IHsKICAgICAgICAgaW50IGZyYWdtZW50TGVuZ3RoID0gaHlwaGVuTG9jYXRpb25zW2tdIC0gc3Vm
Zml4U3RhcnQ7CkBAIC05NTEsNyArOTY0LDcgQEAgc3RhdGljIGZsb2F0IG1heFdvcmRGcmFnbWVu
dFdpZHRoKFJlbmRlclRleHQmIHJlbmRlcmVyLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUKICAg
ICAgICAgZnJhZ21lbnRXaXRoSHlwaGVuLmFwcGVuZChzdHlsZS5oeXBoZW5TdHJpbmcoKSk7CiAK
ICAgICAgICAgVGV4dFJ1biBydW4gPSBSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bihmcmFn
bWVudFdpdGhIeXBoZW4udG9TdHJpbmcoKSwgc3R5bGUpOwotICAgICAgICBydW4uc2V0Q2hhcmFj
dGVyU2NhbkZvckNvZGVQYXRoKCFyZW5kZXJlci5jYW5Vc2VTaW1wbGVGb250Q29kZVBhdGgoKSk7
CisgICAgICAgIHJ1bi5zZXRDaGFyYWN0ZXJTY2FuRm9yQ29kZVBhdGgoIWNhblVzZVNpbXBsZUZv
bnRDb2RlUGF0aCgpKTsKICAgICAgICAgZmxvYXQgZnJhZ21lbnRXaWR0aCA9IGZvbnQud2lkdGgo
cnVuLCAmZmFsbGJhY2tGb250cywgJmdseXBoT3ZlcmZsb3cpOwogCiAgICAgICAgIC8vIE5hcnJv
dyBwcmVmaXhlcyBhcmUgaWdub3JlZC4gU2VlIHRyeUh5cGhlbmF0aW5nIGluIFJlbmRlckJsb2Nr
TGluZUxheW91dC5jcHAuCkBAIC05NjIsNyArOTc1LDE0IEBAIHN0YXRpYyBmbG9hdCBtYXhXb3Jk
RnJhZ21lbnRXaWR0aChSZW5kZXJUZXh0JiByZW5kZXJlciwgY29uc3QgUmVuZGVyU3R5bGUmIHN0
eWxlCiAgICAgICAgIG1heEZyYWdtZW50V2lkdGggPSBzdGQ6Om1heChtYXhGcmFnbWVudFdpZHRo
LCBmcmFnbWVudFdpZHRoKTsKICAgICB9CiAKLSAgICByZXR1cm4gbWF4RnJhZ21lbnRXaWR0aDsK
KyAgICBpZiAoIXN1ZmZpeFN0YXJ0KSB7CisgICAgICAgIC8vIFdlIGRpZG4ndCBmaW5kIGFueSBo
eXBoZW5hdGlvbiBvcHBvcnR1bml0aWVzIHRoYXQgd2UncmUgd2lsbGluZyB0byBhY3R1YWxseSB1
c2UuCisgICAgICAgIC8vIFRoZXJlZm9yZSwgdGhlIHdpZHRoIG9mIHRoZSBtYXhpbXVtIGZyYWdt
ZW50IGlzIGp1c3QgLi4uIHRoZSB3aWR0aCBvZiB0aGUgZW50aXJlIHdvcmQuCisgICAgICAgIHJl
dHVybiBlbnRpcmVXb3JkV2lkdGg7CisgICAgfQorCisgICAgYXV0byBzdWZmaXhXaWR0aCA9IHdp
ZHRoRnJvbUNhY2hlQ29uc2lkZXJpbmdQb3NzaWJsZVRyYWlsaW5nU3BhY2Uoc3R5bGUsIGZvbnQs
IGNoYXJhY3RlckluZGV4ICsgc3VmZml4U3RhcnQsIHdvcmQubGVuZ3RoKCkgLSBzdWZmaXhTdGFy
dCwgeFBvcywgY3VycmVudENoYXJhY3RlcklzU3BhY2UsIHdvcmRUcmFpbGluZ1NwYWNlLCBmYWxs
YmFja0ZvbnRzLCBnbHlwaE92ZXJmbG93KTsKKyAgICByZXR1cm4gc3RkOjptYXgobWF4RnJhZ21l
bnRXaWR0aCwgc3VmZml4V2lkdGgpOwogfQogCiB2b2lkIFJlbmRlclRleHQ6OmNvbXB1dGVQcmVm
ZXJyZWRMb2dpY2FsV2lkdGhzKGZsb2F0IGxlYWRXaWR0aCwgSGFzaFNldDxjb25zdCBGb250Kj4m
IGZhbGxiYWNrRm9udHMsIEdseXBoT3ZlcmZsb3cmIGdseXBoT3ZlcmZsb3cpCkBAIC0xMDk1LDM4
ICsxMTE1LDE0IEBAIHZvaWQgUmVuZGVyVGV4dDo6Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0
aHMoZmxvYXQgbGVhZFdpZHRoLCBIYXNoU2V0PGNvbnN0IEZvCiAgICAgICAgIGlmICh3b3JkTGVu
KSB7CiAgICAgICAgICAgICBmbG9hdCBjdXJyTWluV2lkdGggPSAwOwogICAgICAgICAgICAgYm9v
bCBpc1NwYWNlID0gKGogPCBsZW5ndGgpICYmIGlzU3BhY2VBY2NvcmRpbmdUb1N0eWxlKGMsIHN0
eWxlKTsKLSAgICAgICAgICAgIGZsb2F0IHc7Ci0gICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPGZs
b2F0PiB3b3JkVHJhaWxpbmdTcGFjZVdpZHRoOwotICAgICAgICAgICAgaWYgKGlzU3BhY2UpCi0g
ICAgICAgICAgICAgICAgd29yZFRyYWlsaW5nU3BhY2VXaWR0aCA9IHdvcmRUcmFpbGluZ1NwYWNl
LndpZHRoKGZhbGxiYWNrRm9udHMpOwotICAgICAgICAgICAgaWYgKHdvcmRUcmFpbGluZ1NwYWNl
V2lkdGgpCi0gICAgICAgICAgICAgICAgdyA9IHdpZHRoRnJvbUNhY2hlKGZvbnQsIGksIHdvcmRM
ZW4gKyAxLCBsZWFkV2lkdGggKyBjdXJyTWF4V2lkdGgsICZmYWxsYmFja0ZvbnRzLCAmZ2x5cGhP
dmVyZmxvdywgc3R5bGUpIC0gd29yZFRyYWlsaW5nU3BhY2VXaWR0aC52YWx1ZSgpOwotICAgICAg
ICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgdyA9IHdpZHRoRnJvbUNhY2hlKGZvbnQsIGks
IHdvcmRMZW4sIGxlYWRXaWR0aCArIGN1cnJNYXhXaWR0aCwgJmZhbGxiYWNrRm9udHMsICZnbHlw
aE92ZXJmbG93LCBzdHlsZSk7Ci0gICAgICAgICAgICAgICAgaWYgKGMgPT0gc29mdEh5cGhlbiAm
JiBzdHlsZS5oeXBoZW5zKCkgIT0gSHlwaGVuczo6Tm9uZSkKLSAgICAgICAgICAgICAgICAgICAg
Y3Vyck1pbldpZHRoID0gaHlwaGVuV2lkdGgoKnRoaXMsIGZvbnQpOwotICAgICAgICAgICAgfQor
ICAgICAgICAgICAgZmxvYXQgdyA9IHdpZHRoRnJvbUNhY2hlQ29uc2lkZXJpbmdQb3NzaWJsZVRy
YWlsaW5nU3BhY2Uoc3R5bGUsIGZvbnQsIGksIHdvcmRMZW4sIGxlYWRXaWR0aCArIGN1cnJNYXhX
aWR0aCwgaXNTcGFjZSwgd29yZFRyYWlsaW5nU3BhY2UsIGZhbGxiYWNrRm9udHMsIGdseXBoT3Zl
cmZsb3cpOworICAgICAgICAgICAgaWYgKGMgPT0gc29mdEh5cGhlbiAmJiBzdHlsZS5oeXBoZW5z
KCkgIT0gSHlwaGVuczo6Tm9uZSkKKyAgICAgICAgICAgICAgICBjdXJyTWluV2lkdGggPSBoeXBo
ZW5XaWR0aCgqdGhpcywgZm9udCk7CiAKICAgICAgICAgICAgIGlmICh3ID4gbWF4V29yZFdpZHRo
KSB7Ci0gICAgICAgICAgICAgICAgdW5zaWduZWQgc3VmZml4U3RhcnQ7Ci0gICAgICAgICAgICAg
ICAgZmxvYXQgbWF4RnJhZ21lbnRXaWR0aCA9IG1heFdvcmRGcmFnbWVudFdpZHRoKCp0aGlzLCBz
dHlsZSwgZm9udCwgU3RyaW5nVmlldyhzdHJpbmcpLnN1YnN0cmluZyhpLCB3b3JkTGVuKSwgbWlu
aW11bVByZWZpeExlbmd0aCwgbWluaW11bVN1ZmZpeExlbmd0aCwgc3VmZml4U3RhcnQsIGZhbGxi
YWNrRm9udHMsIGdseXBoT3ZlcmZsb3cpOwotCi0gICAgICAgICAgICAgICAgaWYgKHN1ZmZpeFN0
YXJ0KSB7Ci0gICAgICAgICAgICAgICAgICAgIGZsb2F0IHN1ZmZpeFdpZHRoOwotICAgICAgICAg
ICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPGZsb2F0PiB3b3JkVHJhaWxpbmdTcGFjZVdpZHRoOwot
ICAgICAgICAgICAgICAgICAgICBpZiAoaXNTcGFjZSkKLSAgICAgICAgICAgICAgICAgICAgICAg
IHdvcmRUcmFpbGluZ1NwYWNlV2lkdGggPSB3b3JkVHJhaWxpbmdTcGFjZS53aWR0aChmYWxsYmFj
a0ZvbnRzKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHdvcmRUcmFpbGluZ1NwYWNlV2lkdGgp
Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdWZmaXhXaWR0aCA9IHdpZHRoRnJvbUNhY2hlKGZv
bnQsIGkgKyBzdWZmaXhTdGFydCwgd29yZExlbiAtIHN1ZmZpeFN0YXJ0ICsgMSwgbGVhZFdpZHRo
ICsgY3Vyck1heFdpZHRoLCAwLCAwLCBzdHlsZSkgLSB3b3JkVHJhaWxpbmdTcGFjZVdpZHRoLnZh
bHVlKCk7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAg
IHN1ZmZpeFdpZHRoID0gd2lkdGhGcm9tQ2FjaGUoZm9udCwgaSArIHN1ZmZpeFN0YXJ0LCB3b3Jk
TGVuIC0gc3VmZml4U3RhcnQsIGxlYWRXaWR0aCArIGN1cnJNYXhXaWR0aCwgMCwgMCwgc3R5bGUp
OwotCi0gICAgICAgICAgICAgICAgICAgIG1heEZyYWdtZW50V2lkdGggPSBzdGQ6Om1heChtYXhG
cmFnbWVudFdpZHRoLCBzdWZmaXhXaWR0aCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgY3Vyck1p
bldpZHRoICs9IG1heEZyYWdtZW50V2lkdGggLSB3OwotICAgICAgICAgICAgICAgICAgICBtYXhX
b3JkV2lkdGggPSBzdGQ6Om1heChtYXhXb3JkV2lkdGgsIG1heEZyYWdtZW50V2lkdGgpOwotICAg
ICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgICAgICBtYXhXb3JkV2lkdGggPSB3
OworICAgICAgICAgICAgICAgIGF1dG8gbWF4RnJhZ21lbnRXaWR0aCA9IG1heFdvcmRGcmFnbWVu
dFdpZHRoKHN0eWxlLCBmb250LCBTdHJpbmdWaWV3KHN0cmluZykuc3Vic3RyaW5nKGksIHdvcmRM
ZW4pLCBtaW5pbXVtUHJlZml4TGVuZ3RoLCBtaW5pbXVtU3VmZml4TGVuZ3RoLCBpc1NwYWNlLCBp
LCBsZWFkV2lkdGggKyBjdXJyTWF4V2lkdGgsIHcsIHdvcmRUcmFpbGluZ1NwYWNlLCBmYWxsYmFj
a0ZvbnRzLCBnbHlwaE92ZXJmbG93KTsKKyAgICAgICAgICAgICAgICBjdXJyTWluV2lkdGggKz0g
bWF4RnJhZ21lbnRXaWR0aCAtIHc7IC8vIFRoaXMsIHdoZW4gY29tYmluZWQgd2l0aCAiY3Vyck1p
bldpZHRoICs9IHciIGJlbG93LCBoYXMgdGhlIGVmZmVjdCBvZiBleGVjdXRpbmcgImN1cnJNaW5X
aWR0aCArPSBtYXhGcmFnbWVudFdpZHRoIiBpbnN0ZWFkLgorICAgICAgICAgICAgICAgIG1heFdv
cmRXaWR0aCA9IHN0ZDo6bWF4KG1heFdvcmRXaWR0aCwgbWF4RnJhZ21lbnRXaWR0aCk7CiAgICAg
ICAgICAgICB9CiAKICAgICAgICAgICAgIGlmICghZmlyc3RHbHlwaExlZnRPdmVyZmxvdykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5oCmluZGV4IDVlNDA1M2ZiMDZjZTAwM2I1YjRh
YTIzYjFlNTI3Y2EwYmU3ZWM1NjkuLmUxZmVhM2JmNDdmOTY1M2QzM2RjZGE1ZGMzYjQ1ODNkMThh
NzhjYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuaApAQCAtMSw3ICsxLDcg
QEAKIC8qCiAgKiAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQogICogKEMpIDIw
MDAgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQt
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDQtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICog
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKQEAgLTMzLDYgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRm9udDsKIGNs
YXNzIExlZ2FjeUlubGluZVRleHRCb3g7CiBzdHJ1Y3QgR2x5cGhPdmVyZmxvdzsKK3N0cnVjdCBX
b3JkVHJhaWxpbmdTcGFjZTsKIAogbmFtZXNwYWNlIExheW91dEludGVncmF0aW9uIHsKIGNsYXNz
IExpbmVMYXlvdXQ7CkBAIC0xODIsNiArMTgzLDkgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFJl
bmRlclRleHQqIGZpbmRCeURpc3BsYXlDb250ZW50c0lubGluZVdyYXBwZXJDYW5kaWRhdGUoUmVu
ZGVyRWxlbWVudCYpOwogCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIE1lYXN1cmVUZXh0Q2FsbGJh
Y2s+CisgICAgc3RhdGljIGZsb2F0IG1lYXN1cmVUZXh0Q29uc2lkZXJpbmdQb3NzaWJsZVRyYWls
aW5nU3BhY2UoYm9vbCBjdXJyZW50Q2hhcmFjdGVySXNTcGFjZSwgdW5zaWduZWQgc3RhcnRJbmRl
eCwgdW5zaWduZWQgd29yZExlbmd0aCwgV29yZFRyYWlsaW5nU3BhY2UmLCBIYXNoU2V0PGNvbnN0
IEZvbnQqPiYgZmFsbGJhY2tGb250cywgTWVhc3VyZVRleHRDYWxsYmFjayYmKTsKKwogcHJvdGVj
dGVkOgogICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocyhmbG9h
dCBsZWFkV2lkdGgpOwogICAgIHZvaWQgd2lsbEJlRGVzdHJveWVkKCkgb3ZlcnJpZGU7CkBAIC0y
MjIsNiArMjI2LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNvbnRhaW5lcigpIGNvbnN0ID0gZGVs
ZXRlOyAvLyBVc2UgcGFyZW50KCkgaW5zdGVhZC4KICAgICB2b2lkIGNvbnRhaW5lcihjb25zdCBS
ZW5kZXJMYXllck1vZGVsT2JqZWN0JiwgYm9vbCYpIGNvbnN0ID0gZGVsZXRlOyAvLyBVc2UgcGFy
ZW50KCkgaW5zdGVhZC4KIAorICAgIGZsb2F0IG1heFdvcmRGcmFnbWVudFdpZHRoKGNvbnN0IFJl
bmRlclN0eWxlJiwgY29uc3QgRm9udENhc2NhZGUmLCBTdHJpbmdWaWV3IHdvcmQsIHVuc2lnbmVk
IG1pbmltdW1QcmVmaXhMZW5ndGgsIHVuc2lnbmVkIG1pbmltdW1TdWZmaXhMZW5ndGgsIGJvb2wg
Y3VycmVudENoYXJhY3RlcklzU3BhY2UsIHVuc2lnbmVkIGNoYXJhY3RlckluZGV4LCBmbG9hdCB4
UG9zLCBmbG9hdCBlbnRpcmVXb3JkV2lkdGgsIFdvcmRUcmFpbGluZ1NwYWNlJiwgSGFzaFNldDxj
b25zdCBGb250Kj4mIGZhbGxiYWNrRm9udHMsIEdseXBoT3ZlcmZsb3cmKTsKKyAgICBmbG9hdCB3
aWR0aEZyb21DYWNoZUNvbnNpZGVyaW5nUG9zc2libGVUcmFpbGluZ1NwYWNlKGNvbnN0IFJlbmRl
clN0eWxlJiwgY29uc3QgRm9udENhc2NhZGUmLCB1bnNpZ25lZCBzdGFydEluZGV4LCB1bnNpZ25l
ZCB3b3JkTGVuLCBmbG9hdCB4UG9zLCBib29sIGN1cnJlbnRDaGFyYWN0ZXJJc1NwYWNlLCBXb3Jk
VHJhaWxpbmdTcGFjZSYsIEhhc2hTZXQ8Y29uc3QgRm9udCo+JiBmYWxsYmFja0ZvbnRzLCBHbHlw
aE92ZXJmbG93JikgY29uc3Q7CisKICAgICAvLyBXZSBwdXQgdGhlIGJpdGZpZWxkIGZpcnN0IHRv
IG1pbmltaXplIHBhZGRpbmcgb24gNjQtYml0LgogICAgIHVuc2lnbmVkIG1faGFzQnJlYWthYmxl
Q2hhciA6IDE7IC8vIFdoZXRoZXIgb3Igbm90IHdlIGNhbiBiZSBicm9rZW4gaW50byBtdWx0aXBs
ZSBsaW5lcy4KICAgICB1bnNpZ25lZCBtX2hhc0JyZWFrIDogMTsgLy8gV2hldGhlciBvciBub3Qg
d2UgaGF2ZSBhIGhhcmQgYnJlYWsgKGUuZy4sIDxwcmU+IHdpdGggJ1xuJykuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dElubGluZXMuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0SW5saW5lcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFiMTc1OGZm
MzAwOTJmYjlhZjY4YmU0NTU4ZDJkODNkNWQxY2M3NTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dElubGluZXMuaApAQCAtMCwwICsxLDM5IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu
c2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBs
aWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws
CisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3
YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdp
dGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRl
IHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiUmVuZGVyVGV4dC5oIgorI2luY2x1ZGUg
IldvcmRUcmFpbGluZ1NwYWNlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordGVtcGxhdGUg
PHR5cGVuYW1lIE1lYXN1cmVUZXh0Q2FsbGJhY2s+CitmbG9hdCBSZW5kZXJUZXh0OjptZWFzdXJl
VGV4dENvbnNpZGVyaW5nUG9zc2libGVUcmFpbGluZ1NwYWNlKGJvb2wgY3VycmVudENoYXJhY3Rl
cklzU3BhY2UsIHVuc2lnbmVkIHN0YXJ0SW5kZXgsIHVuc2lnbmVkIHdvcmRMZW5ndGgsIFdvcmRU
cmFpbGluZ1NwYWNlJiB3b3JkVHJhaWxpbmdTcGFjZSwgSGFzaFNldDxjb25zdCBGb250Kj4mIGZh
bGxiYWNrRm9udHMsIE1lYXN1cmVUZXh0Q2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICBzdGQ6
Om9wdGlvbmFsPGZsb2F0PiB3b3JkVHJhaWxpbmdTcGFjZVdpZHRoOworICAgIGlmIChjdXJyZW50
Q2hhcmFjdGVySXNTcGFjZSkKKyAgICAgICAgd29yZFRyYWlsaW5nU3BhY2VXaWR0aCA9IHdvcmRU
cmFpbGluZ1NwYWNlLndpZHRoKGZhbGxiYWNrRm9udHMpOworICAgIGlmICh3b3JkVHJhaWxpbmdT
cGFjZVdpZHRoKQorICAgICAgICByZXR1cm4gY2FsbGJhY2soc3RhcnRJbmRleCwgd29yZExlbmd0
aCArIDEpIC0gd29yZFRyYWlsaW5nU3BhY2VXaWR0aC52YWx1ZSgpOworICAgIHJldHVybiBjYWxs
YmFjayhzdGFydEluZGV4LCB3b3JkTGVuZ3RoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvQnJlYWtpbmdDb250
ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9CcmVha2luZ0NvbnRleHQuaApp
bmRleCAzZDlmZjk5NWJiYzM3NDQ3ZmNhODcyMDVkYTkxNzU5ZjdhNjI5NTk1Li5iMDA3Y2I4ZjI5
ZDc1ZmJhYWYyYzgyMzQ4MDNiMTE2MTUxODFmOTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvbGluZS9CcmVha2luZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbGluZS9CcmVha2luZ0NvbnRleHQuaApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMDAgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKLSAqIENvcHlyaWdo
dCAoQykgMjAwMywgMjAwNCwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSBBcHBs
ZSBJbmMuIEFsbCByaWdodCByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0IHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQ2hhbmdT
ZW9rIE9oIDxzaGl2YW1pZG93QGdtYWlsLmNvbT4KICAqIENvcHlyaWdodCAoQykgMjAxMyBBZG9i
ZSBTeXN0ZW1zIEluYy4gQWxsIHJpZ2h0IHJlc2VydmVkLgpAQCAtMzgsNyArMzgsOSBAQAogI2lu
Y2x1ZGUgIlJlbmRlckxpc3RNYXJrZXIuaCIKICNpbmNsdWRlICJSZW5kZXJSdWJ5UnVuLmgiCiAj
aW5jbHVkZSAiUmVuZGVyU1ZHSW5saW5lVGV4dC5oIgorI2luY2x1ZGUgIlJlbmRlclRleHRJbmxp
bmVzLmgiCiAjaW5jbHVkZSAiVHJhaWxpbmdPYmplY3RzLmgiCisjaW5jbHVkZSAiV29yZFRyYWls
aW5nU3BhY2UuaCIKICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdWaWV3Lmg+CiAjaW5jbHVkZSA8d3RmL3VuaWNvZGUvQ2hhcmFjdGVyTmFtZXMuaD4K
QEAgLTY0LDMyICs2Niw2IEBAIHN0cnVjdCBXb3JkTWVhc3VyZW1lbnQgewogICAgIEhhc2hTZXQ8
Y29uc3QgRm9udCo+IGZhbGxiYWNrRm9udHM7CiB9OwogCi1zdHJ1Y3QgV29yZFRyYWlsaW5nU3Bh
Y2UgewotICAgIFdvcmRUcmFpbGluZ1NwYWNlKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgYm9v
bCBtZWFzdXJpbmdXaXRoVHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCA9IHRydWUpCi0gICAgICAg
IDogbV9zdHlsZShzdHlsZSkKLSAgICB7Ci0gICAgICAgIGlmICghbWVhc3VyaW5nV2l0aFRyYWls
aW5nV2hpdGVzcGFjZUVuYWJsZWQgfHwgIW1fc3R5bGUuZm9udENhc2NhZGUoKS5lbmFibGVLZXJu
aW5nKCkpCi0gICAgICAgICAgICBtX3N0YXRlID0gV29yZFRyYWlsaW5nU3BhY2VTdGF0ZTo6SW5p
dGlhbGl6ZWQ7Ci0gICAgfQotCi0gICAgc3RkOjpvcHRpb25hbDxmbG9hdD4gd2lkdGgoSGFzaFNl
dDxjb25zdCBGb250Kj4mIGZhbGxiYWNrRm9udHMpCi0gICAgewotICAgICAgICBpZiAobV9zdGF0
ZSA9PSBXb3JkVHJhaWxpbmdTcGFjZVN0YXRlOjpJbml0aWFsaXplZCkKLSAgICAgICAgICAgIHJl
dHVybiBtX3dpZHRoOwotCi0gICAgICAgIGF1dG8mIGZvbnQgPSBtX3N0eWxlLmZvbnRDYXNjYWRl
KCk7Ci0gICAgICAgIG1fd2lkdGggPSBmb250LndpZHRoKFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RU
ZXh0UnVuKCZzcGFjZSwgMSwgbV9zdHlsZSksICZmYWxsYmFja0ZvbnRzKSArIGZvbnQud29yZFNw
YWNpbmcoKTsKLSAgICAgICAgbV9zdGF0ZSA9IFdvcmRUcmFpbGluZ1NwYWNlU3RhdGU6OkluaXRp
YWxpemVkOwotICAgICAgICByZXR1cm4gbV93aWR0aDsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAg
ZW51bSBjbGFzcyBXb3JkVHJhaWxpbmdTcGFjZVN0YXRlIHsgVW5pbml0aWFsaXplZCwgSW5pdGlh
bGl6ZWQgfTsKLSAgICBjb25zdCBSZW5kZXJTdHlsZSYgbV9zdHlsZTsKLSAgICBXb3JkVHJhaWxp
bmdTcGFjZVN0YXRlIG1fc3RhdGUgeyBXb3JkVHJhaWxpbmdTcGFjZVN0YXRlOjpVbmluaXRpYWxp
emVkIH07Ci0gICAgc3RkOjpvcHRpb25hbDxmbG9hdD4gbV93aWR0aDsKLX07Ci0KIGNsYXNzIEJy
ZWFraW5nQ29udGV4dCB7CiBwdWJsaWM6CiAgICAgQnJlYWtpbmdDb250ZXh0KExpbmVCcmVha2Vy
JiBsaW5lQnJlYWtlciwgSW5saW5lQmlkaVJlc29sdmVyJiByZXNvbHZlciwgTGluZUluZm8mIGlu
TGluZUluZm8sIExpbmVXaWR0aCYgbGluZVdpZHRoLCBSZW5kZXJUZXh0SW5mbyYgaW5SZW5kZXJU
ZXh0SW5mbywgRmxvYXRpbmdPYmplY3QqIGluTGFzdEZsb2F0RnJvbVByZXZpb3VzTGluZSwgYm9v
bCBhcHBsaWVkU3RhcnRXaWR0aCwgUmVuZGVyQmxvY2tGbG93JiBibG9jaykKQEAgLTE1MSw2ICsx
MjcsNyBAQCBwdWJsaWM6CiAgICAgTGVnYWN5SW5saW5lSXRlcmF0b3IgaGFuZGxlRW5kT2ZMaW5l
KCk7CiAgICAgCiAgICAgZmxvYXQgY29tcHV0ZUFkZGl0aW9uYWxCZXR3ZWVuV29yZHNXaWR0aChS
ZW5kZXJUZXh0JiwgVGV4dExheW91dCosIFVDaGFyLCBXb3JkVHJhaWxpbmdTcGFjZSYsIEhhc2hT
ZXQ8Y29uc3QgRm9udCo+JiBmYWxsYmFja0ZvbnRzLCBXb3JkTWVhc3VyZW1lbnRzJiwgY29uc3Qg
Rm9udENhc2NhZGUmLCBib29sIGlzRml4ZWRQaXRjaCwgdW5zaWduZWQgbGFzdFNwYWNlLCBmbG9h
dCBsYXN0U3BhY2VXb3JkU3BhY2luZywgZmxvYXQgd29yZFNwYWNpbmdGb3JXb3JkTWVhc3VyZW1l
bnQsIHVuc2lnbmVkIG9mZnNldCk7CisgICAgZmxvYXQgdGV4dFdpZHRoQ29uc2lkZXJpbmdQb3Nz
aWJsZVRyYWlsaW5nU3BhY2UoUmVuZGVyVGV4dCYsIFRleHRMYXlvdXQqLCBVQ2hhciBjdXJyZW50
Q2hhcmFjdGVyLCBXb3JkVHJhaWxpbmdTcGFjZSYsIEhhc2hTZXQ8Y29uc3QgRm9udCo+JiBmYWxs
YmFja0ZvbnRzLCBIYXNoU2V0PGNvbnN0IEZvbnQqPiYgd29yZE1lYXN1cmVtZW50RmFsbGJhY2tG
b250cywgY29uc3QgRm9udENhc2NhZGUmLCBib29sIGlzRml4ZWRQaXRjaCwgdW5zaWduZWQgbGFz
dFNwYWNlLCB1bnNpZ25lZCBvZmZzZXQpOwogCiAgICAgdm9pZCBjbGVhckxpbmVCcmVha0lmRml0
c09uTGluZShib29sIGlnbm9yaW5nVHJhaWxpbmdTcGFjZSA9IGZhbHNlKQogICAgIHsKQEAgLTYz
MSw2ICs2MDgsMTMgQEAgaW5saW5lIHZvaWQgdHJ5SHlwaGVuYXRpbmcoUmVuZGVyVGV4dCYgdGV4
dCwgY29uc3QgRm9udENhc2NhZGUmIGZvbnQsIGNvbnN0IEF0b20KICAgICBoeXBoZW5hdGVkID0g
dHJ1ZTsKIH0KIAoraW5saW5lIGZsb2F0IEJyZWFraW5nQ29udGV4dDo6dGV4dFdpZHRoQ29uc2lk
ZXJpbmdQb3NzaWJsZVRyYWlsaW5nU3BhY2UoUmVuZGVyVGV4dCYgcmVuZGVyVGV4dCwgVGV4dExh
eW91dCogdGV4dExheW91dCwgVUNoYXIgY3VycmVudENoYXJhY3RlciwgV29yZFRyYWlsaW5nU3Bh
Y2UmIHdvcmRUcmFpbGluZ1NwYWNlLCBIYXNoU2V0PGNvbnN0IEZvbnQqPiYgZmFsbGJhY2tGb250
cywgSGFzaFNldDxjb25zdCBGb250Kj4mIHdvcmRNZWFzdXJlbWVudEZhbGxiYWNrRm9udHMsIGNv
bnN0IEZvbnRDYXNjYWRlJiBmb250LCBib29sIGlzRml4ZWRQaXRjaCwgdW5zaWduZWQgbGFzdFNw
YWNlLCB1bnNpZ25lZCBvZmZzZXQpCit7CisgICAgcmV0dXJuIFJlbmRlclRleHQ6Om1lYXN1cmVU
ZXh0Q29uc2lkZXJpbmdQb3NzaWJsZVRyYWlsaW5nU3BhY2UoY3VycmVudENoYXJhY3RlciA9PSBz
cGFjZSwgbGFzdFNwYWNlLCBvZmZzZXQgLSBsYXN0U3BhY2UsIHdvcmRUcmFpbGluZ1NwYWNlLCBm
YWxsYmFja0ZvbnRzLCBbJl0gKHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIGxlbikgeworICAgICAg
ICByZXR1cm4gdGV4dFdpZHRoKHJlbmRlclRleHQsIGZyb20sIGxlbiwgZm9udCwgbV93aWR0aC5j
dXJyZW50V2lkdGgoKSwgaXNGaXhlZFBpdGNoLCBtX2NvbGxhcHNlV2hpdGVTcGFjZSwgd29yZE1l
YXN1cmVtZW50RmFsbGJhY2tGb250cywgdGV4dExheW91dCk7CisgICAgfSk7Cit9CisKIGlubGlu
ZSBmbG9hdCBCcmVha2luZ0NvbnRleHQ6OmNvbXB1dGVBZGRpdGlvbmFsQmV0d2VlbldvcmRzV2lk
dGgoUmVuZGVyVGV4dCYgcmVuZGVyVGV4dCwgVGV4dExheW91dCogdGV4dExheW91dCwgVUNoYXIg
Y3VycmVudENoYXJhY3RlciwgV29yZFRyYWlsaW5nU3BhY2UmIHdvcmRUcmFpbGluZ1NwYWNlLCBI
YXNoU2V0PGNvbnN0IEZvbnQqPiYgZmFsbGJhY2tGb250cywgV29yZE1lYXN1cmVtZW50cyYgd29y
ZE1lYXN1cmVtZW50cywgY29uc3QgRm9udENhc2NhZGUmIGZvbnQsIGJvb2wgaXNGaXhlZFBpdGNo
LCB1bnNpZ25lZCBsYXN0U3BhY2UsIGZsb2F0IGxhc3RTcGFjZVdvcmRTcGFjaW5nLCBmbG9hdCB3
b3JkU3BhY2luZ0ZvcldvcmRNZWFzdXJlbWVudCwgdW5zaWduZWQgb2Zmc2V0KQogewogICAgIHdv
cmRNZWFzdXJlbWVudHMuZ3Jvdyh3b3JkTWVhc3VyZW1lbnRzLnNpemUoKSArIDEpOwpAQCAtNjQw
LDE0ICs2MjQsNyBAQCBpbmxpbmUgZmxvYXQgQnJlYWtpbmdDb250ZXh0Ojpjb21wdXRlQWRkaXRp
b25hbEJldHdlZW5Xb3Jkc1dpZHRoKFJlbmRlclRleHQmIHJlbgogICAgIHdvcmRNZWFzdXJlbWVu
dC5lbmRPZmZzZXQgPSBvZmZzZXQ7CiAgICAgd29yZE1lYXN1cmVtZW50LnN0YXJ0T2Zmc2V0ID0g
bGFzdFNwYWNlOwogICAgIAotICAgIGZsb2F0IGFkZGl0aW9uYWxUZW1wV2lkdGggPSAwOwotICAg
IHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IHdvcmRUcmFpbGluZ1NwYWNlV2lkdGg7Ci0gICAgaWYgKGN1
cnJlbnRDaGFyYWN0ZXIgPT0gJyAnKQotICAgICAgICB3b3JkVHJhaWxpbmdTcGFjZVdpZHRoID0g
d29yZFRyYWlsaW5nU3BhY2Uud2lkdGgoZmFsbGJhY2tGb250cyk7Ci0gICAgaWYgKHdvcmRUcmFp
bGluZ1NwYWNlV2lkdGgpCi0gICAgICAgIGFkZGl0aW9uYWxUZW1wV2lkdGggPSB0ZXh0V2lkdGgo
cmVuZGVyVGV4dCwgbGFzdFNwYWNlLCBvZmZzZXQgKyAxIC0gbGFzdFNwYWNlLCBmb250LCBtX3dp
ZHRoLmN1cnJlbnRXaWR0aCgpLCBpc0ZpeGVkUGl0Y2gsIG1fY29sbGFwc2VXaGl0ZVNwYWNlLCB3
b3JkTWVhc3VyZW1lbnQuZmFsbGJhY2tGb250cywgdGV4dExheW91dCkgLSB3b3JkVHJhaWxpbmdT
cGFjZVdpZHRoLnZhbHVlKCk7Ci0gICAgZWxzZQotICAgICAgICBhZGRpdGlvbmFsVGVtcFdpZHRo
ID0gdGV4dFdpZHRoKHJlbmRlclRleHQsIGxhc3RTcGFjZSwgb2Zmc2V0IC0gbGFzdFNwYWNlLCBm
b250LCBtX3dpZHRoLmN1cnJlbnRXaWR0aCgpLCBpc0ZpeGVkUGl0Y2gsIG1fY29sbGFwc2VXaGl0
ZVNwYWNlLCB3b3JkTWVhc3VyZW1lbnQuZmFsbGJhY2tGb250cywgdGV4dExheW91dCk7CisgICAg
ZmxvYXQgYWRkaXRpb25hbFRlbXBXaWR0aCA9IHRleHRXaWR0aENvbnNpZGVyaW5nUG9zc2libGVU
cmFpbGluZ1NwYWNlKHJlbmRlclRleHQsIHRleHRMYXlvdXQsIGN1cnJlbnRDaGFyYWN0ZXIsIHdv
cmRUcmFpbGluZ1NwYWNlLCBmYWxsYmFja0ZvbnRzLCB3b3JkTWVhc3VyZW1lbnQuZmFsbGJhY2tG
b250cywgZm9udCwgaXNGaXhlZFBpdGNoLCBsYXN0U3BhY2UsIG9mZnNldCk7CiAgICAgCiAgICAg
aWYgKHdvcmRNZWFzdXJlbWVudC5mYWxsYmFja0ZvbnRzLmlzRW1wdHkoKSAmJiAhZmFsbGJhY2tG
b250cy5pc0VtcHR5KCkpCiAgICAgICAgIHdvcmRNZWFzdXJlbWVudC5mYWxsYmFja0ZvbnRzLnN3
YXAoZmFsbGJhY2tGb250cyk7CkBAIC0xMjUyLDQgKzEyMjksNCBAQCBpbmxpbmUgTGVnYWN5SW5s
aW5lSXRlcmF0b3IgQnJlYWtpbmdDb250ZXh0OjpoYW5kbGVFbmRPZkxpbmUoKQogICAgIHJldHVy
biBtX2xpbmVCcmVhazsKIH0KIAotfQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvV29yZFRyYWlsaW5nU3BhY2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL1dvcmRUcmFpbGluZ1NwYWNlLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMDFmYmMzNDBiNjM1M2E0NTBmNTRhZTZiZDJiZTEzMzM5M2Q5MzY2MQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL1dvcmRUcmFpbGluZ1NwYWNlLmgK
QEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwMCBMYXJzIEtub2xsIChr
bm9sbEBrZGUub3JnKQorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHQgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMyBDaGFuZ1Nlb2sgT2ggPHNoaXZh
bWlkb3dAZ21haWwuY29tPgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFkb2JlIFN5c3RlbXMgSW5j
LiBBbGwgcmlnaHQgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVy
c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz
aW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcu
TElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg
SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIx
MTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkZvbnRD
YXNjYWRlLmgiCisjaW5jbHVkZSAiUmVuZGVyQmxvY2suaCIKKyNpbmNsdWRlICJSZW5kZXJTdHls
ZS5oIgorI2luY2x1ZGUgPG9wdGlvbmFsPgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IFdvcmRUcmFpbGluZ1NwYWNlIHsKKyAgICBXb3Jk
VHJhaWxpbmdTcGFjZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIGJvb2wgbWVhc3VyaW5nV2l0
aFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQgPSB0cnVlKQorICAgICAgICA6IG1fc3R5bGUoc3R5
bGUpCisgICAgeworICAgICAgICBpZiAoIW1lYXN1cmluZ1dpdGhUcmFpbGluZ1doaXRlc3BhY2VF
bmFibGVkIHx8ICFtX3N0eWxlLmZvbnRDYXNjYWRlKCkuZW5hYmxlS2VybmluZygpKQorICAgICAg
ICAgICAgbV9zdGF0ZSA9IFdvcmRUcmFpbGluZ1NwYWNlU3RhdGU6OkluaXRpYWxpemVkOworICAg
IH0KKworICAgIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IHdpZHRoKEhhc2hTZXQ8Y29uc3QgRm9udCo+
JiBmYWxsYmFja0ZvbnRzKQorICAgIHsKKyAgICAgICAgaWYgKG1fc3RhdGUgPT0gV29yZFRyYWls
aW5nU3BhY2VTdGF0ZTo6SW5pdGlhbGl6ZWQpCisgICAgICAgICAgICByZXR1cm4gbV93aWR0aDsK
KworICAgICAgICBhdXRvJiBmb250ID0gbV9zdHlsZS5mb250Q2FzY2FkZSgpOworICAgICAgICBt
X3dpZHRoID0gZm9udC53aWR0aChSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bigmc3BhY2Us
IDEsIG1fc3R5bGUpLCAmZmFsbGJhY2tGb250cykgKyBmb250LndvcmRTcGFjaW5nKCk7CisgICAg
ICAgIG1fc3RhdGUgPSBXb3JkVHJhaWxpbmdTcGFjZVN0YXRlOjpJbml0aWFsaXplZDsKKyAgICAg
ICAgcmV0dXJuIG1fd2lkdGg7CisgICAgfQorCitwcml2YXRlOgorICAgIGVudW0gY2xhc3MgV29y
ZFRyYWlsaW5nU3BhY2VTdGF0ZSB7IFVuaW5pdGlhbGl6ZWQsIEluaXRpYWxpemVkIH07CisgICAg
Y29uc3QgUmVuZGVyU3R5bGUmIG1fc3R5bGU7CisgICAgV29yZFRyYWlsaW5nU3BhY2VTdGF0ZSBt
X3N0YXRlIHsgV29yZFRyYWlsaW5nU3BhY2VTdGF0ZTo6VW5pbml0aWFsaXplZCB9OworICAgIHN0
ZDo6b3B0aW9uYWw8ZmxvYXQ+IG1fd2lkdGg7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447435</attachid>
            <date>2021-12-16 23:15:06 -0800</date>
            <delta_ts>2021-12-17 10:33:38 -0800</delta_ts>
            <desc>Patch for EWS</desc>
            <filename>bug-234424-20211216231505.patch</filename>
            <type>text/plain</type>
            <size>27842</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3MTczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmRlYzk4NDBhMjYxOTJk
MWY5ODc1NTc2MzFkMDUyMDY2NjNmODBjYS4uZjczMWFmZjFmZTExMjQxNzEyYjY1NmNmMmZjM2Iz
MjYxNmMyODE2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDczIEBACisyMDIxLTEyLTE2ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgRGVkdXBsaWNh
dGUgY29kZSBpbiBSZW5kZXJUZXh0Ojpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocygpCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQ0MjQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBoYXZlIDMg
cGxhY2VzIHdpdGggY29kZSBvZiB0aGlzIGZvcm06CisKKyAgICAgICAgZmxvYXQgcmVzdWx0Owor
ICAgICAgICBzdGQ6Om9wdGlvbmFsPGZsb2F0PiB3b3JkVHJhaWxpbmdTcGFjZVdpZHRoOworICAg
ICAgICBpZiAoY3VycmVudENoYXJhY3RlcklzU3BhY2UpCisgICAgICAgICAgICB3b3JkVHJhaWxp
bmdTcGFjZVdpZHRoID0gd29yZFRyYWlsaW5nU3BhY2Uud2lkdGgoZmFsbGJhY2tGb250cyk7Cisg
ICAgICAgIGlmICh3b3JkVHJhaWxpbmdTcGFjZVdpZHRoKQorICAgICAgICAgICAgcmVzdWx0ID0g
bWVhc3VyZVRleHQoc3RhcnRpbmdDaGFyYWN0ZXJJbmRleCwgbGVuZ3RoICsgMSkgLSB3b3JkVHJh
aWxpbmdTcGFjZVdpZHRoLnZhbHVlKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJlc3Vs
dCA9IG1lYXN1cmVUZXh0KHN0YXJ0aW5nQ2hhcmFjdGVySW5kZXgsIGxlbmd0aCk7CisKKyAgICAg
ICAgVGhpcyBwYXRjaCBzaW1wbHkgZGVkdXBsaWNhdGVzIHRoaXMgbG9naWMsIGFuZCBwdXRzIGl0
IGludG8gYSBzaW5nbGUgZnVuY3Rpb246CisgICAgICAgIFJlbmRlclRleHQ6Om1lYXN1cmVUZXh0
Q29uc2lkZXJpbmdQb3NzaWJsZVRyYWlsaW5nU3BhY2UoKS4gQmVjYXVzZSB0aGUgZGlmZmVyZW50
IHBsYWNlcyB3aGljaCBjYWxsIGl0CisgICAgICAgIHVzZSBkaWZmZXJlbnQgdGV4dCBtZWFzdXJl
bWVudCBmdW5jdGlvbnMsIHRoaXMgZnVuY3Rpb24gYWNjZXB0cyBhICJtZWFzdXJlIHRleHQiIGNh
bGxiYWNrLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoZXJlIGlzIG5vIGJlaGF2
aW9yIGNoYW5nZS4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUZXh0Ojp3aWR0aEZyb21DYWNoZUNvbnNpZGVyaW5nUG9zc2libGVUcmFpbGluZ1Nw
YWNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6Om1heFdvcmRGcmFnbWVu
dFdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6OmNvbXB1dGVQcmVmZXJyZWRM
b2dpY2FsV2lkdGhzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dC5oOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0SW5saW5lcy5oOiBBZGRlZC4gVGhpcyBmdW5jdGlvbiBu
ZWVkcyB0byBiZSBhYmxlIHRvIHNlZSBpbnRvIFdvcmRUcmFpbGluZ1NwYWNlLAorICAgICAgICBi
dXQgd2Ugc2hvdWxkbid0IGJlIGFkZGluZyBhbnkgbW9yZSAjaW5jbHVkZXMgdG8gUmVuZGVyVGV4
dC5oIGJlY2F1c2UgZG9pbmcgc28gd2lsbCBpbmNyZWFzZSB0aGUgYnVpbGQgdGltZS4KKyAgICAg
ICAgU28sIGluc3RlYWQsIHdlIGNhbiBtb3ZlIHRoaXMgdGVtcGxhdGVkIGZ1bmN0aW9uIHRvIGEg
bmV3IElubGluZXMgaGVhZGVyLCBhbmQgaGF2ZSBjYWxsZXJzIGluY2x1ZGUgdGhhdAorICAgICAg
ICBoZWFkZXIuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0OjptZWFzdXJlVGV4dENvbnNp
ZGVyaW5nUG9zc2libGVUcmFpbGluZ1NwYWNlKToKKyAgICAgICAgKiByZW5kZXJpbmcvbGluZS9C
cmVha2luZ0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkJyZWFraW5nQ29udGV4dDo6dGV4
dFdpZHRoQ29uc2lkZXJpbmdQb3NzaWJsZVRyYWlsaW5nU3BhY2UpOgorICAgICAgICAoV2ViQ29y
ZTo6QnJlYWtpbmdDb250ZXh0Ojpjb21wdXRlQWRkaXRpb25hbEJldHdlZW5Xb3Jkc1dpZHRoKToK
KyAgICAgICAgKFdlYkNvcmU6OldvcmRUcmFpbGluZ1NwYWNlOjpXb3JkVHJhaWxpbmdTcGFjZSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXb3JkVHJhaWxpbmdTcGFjZTo6d2lkdGgpOiBE
ZWxldGVkLgorICAgICAgICAqIHJlbmRlcmluZy9saW5lL1dvcmRUcmFpbGluZ1NwYWNlLmg6IEFk
ZGVkLiBCcmVha2luZ0NvbnRleHQuaCBkZWZpbmVzIFdvcmRUcmFpbGluZ1NwYWNlLCBidXQgaXQg
bmVlZHMKKyAgICAgICAgdG8gYmUgYWJsZSB0byBjYWxsIG1lYXN1cmVUZXh0Q29uc2lkZXJpbmdQ
b3NzaWJsZVRyYWlsaW5nU3BhY2UoKSwgd2hpY2ggbmVlZHMgdG8gYmUgYWJsZSB0byBzZWUgaW5z
aWRlCisgICAgICAgIFdvcmRUcmFpbGluZ1NwYWNlLiBBdm9pZCB0aGUgY2lyY3VsYXIgZGVwZW5k
ZW5jeSBieSBzcGxpdHRpbmcgb3V0IFdvcmRUcmFpbGluZ1NwYWNlIGludG8gaXRzIG93biBmaWxl
LgorICAgICAgICAoV2ViQ29yZTo6V29yZFRyYWlsaW5nU3BhY2U6OldvcmRUcmFpbGluZ1NwYWNl
KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmRUcmFpbGluZ1NwYWNlOjp3aWR0aCk6CisKKzIwMjEt
MTItMTYgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAg
ICBSZWZhY3RvciBoeXBoZW5hdGlvbiBsb2dpYyBpbiBSZW5kZXJUZXh0Ojpjb21wdXRlUHJlZmVy
cmVkTG9naWNhbFdpZHRocygpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzQ0MjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUaGUgaHlwaGVuYXRpb24gbG9naWMgaW4gUmVuZGVyVGV4dDo6Y29tcHV0ZVBy
ZWZlcnJlZExvZ2ljYWxXaWR0aHMoKSB3YXMgc3BsaXQgYWNyb3NzIHR3byBmdW5jdGlvbnMuCisg
ICAgICAgIElmIHlvdSBjb25zaWRlciB0aGUgd29yZCAiQUJDLURFRi1HSEkiICh3aGVyZSB0aGUg
Jy0nIGNoYXJhY3RlcnMgYXJlIGh5cGhlbmF0aW9uIG9wcG9ydHVuaXRpZXMpLCBvbmUKKyAgICAg
ICAgZnVuY3Rpb24sIG1heFdvcmRGcmFnbWVudFdpZHRoKCkgd2FzIHJlc3BvbnNpYmxlIGZvciBj
YWxjdWxhdGluZyB0aGUgd2lkdGggb2YgIkFCQy0iIGFuZCAiREVGLSIgYnV0CisgICAgICAgIG5v
dCAiR0hJIi4gUmVuZGVyVGV4dDo6Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoKSBjYWxs
ZWQgdGhhdCBmdW5jdGlvbiwgYW5kIGFmdGVyIGl0IHJldHVybmVkLAorICAgICAgICB3b3VsZCB0
aGVuIGNhbGN1bGF0ZSB0aGUgd2lkdGggb2YgIkdISSIsIGFuZCBjb21wYXJlIHRoYXQgdG8gdGhl
IHdpZHRoIHJldHVybmVkIGJ5CisgICAgICAgIG1heFdvcmRGcmFnbWVudFdpZHRoKCkuIEEgbXVj
aCBzaW1wbGVyIGRlc2lnbiB3b3VsZCBiZSB0byBoYXZlIG9uZSBmdW5jdGlvbiwgbWF4V29yZEZy
YWdtZW50V2lkdGgoKSwKKyAgICAgICAgaGFuZGxlIGFsbCB0aGUgaHlwaGVuYXRpb24gbG9naWMs
IGFuZCBkbyBhbGwgdGhlIGNhbGN1bGF0aW9uIG5lY2Vzc2FyeSB0byBqdXN0IHJldHVybiBhIHNp
bmdsZSB2YWx1ZQorICAgICAgICB0byBSZW5kZXJUZXh0Ojpjb21wdXRlUHJlZmVycmVkTG9naWNh
bFdpZHRocygpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoZXJlIGlzIG5vIGJl
aGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6Om1heFdvcmRGcmFnbWVudFdpZHRoKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKToK
KyAgICAgICAgKFdlYkNvcmU6Om1heFdvcmRGcmFnbWVudFdpZHRoKTogRGVsZXRlZC4KKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dC5oOgorCiAyMDIxLTEyLTE2ICBDYXJsb3MgQWxiZXJ0
byBMb3BleiBQZXJleiAgPGNsb3BlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04o
cjI4NzEzOCkgW0dMSUJdIEJ1aWxkIGZhaWx1cmUgd2l0aCBHQ0MgOCBhbmQgOSBpbiBzdGQ6OmFy
cmF5IHRvIFNwYW4gY29udmVyc2lvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDg2YTZlNzc2ZTI4ZjE3NmNkNmI5OGMxMTU1NTkw
ZWFlYzU0Mzc3MTQuLjA0ZGVjMmVkYzNlZmE1YzU4YmU3NTAwMmY4ZjFkMGE5M2ZlMDc0ZmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTcwNjcsNiArNzA2Nyw4IEBACiAJCTFDMDkzOUU5MUExM0UxMjkwMEI3ODhFNSAvKiBDYWNo
ZWRTVkdGb250LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhY2hlZFNWR0Zv
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUMwOUQwNEIxRTMxQzMyODAwNzI1
RjE4IC8qIFBBTC54Y29kZXByb2ogKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSAid3JhcHBlci5wYi1wcm9qZWN0IjsgbmFtZSA9IFBBTC54Y29kZXByb2o7
IHBhdGggPSBQQUwvUEFMLnhjb2RlcHJvajsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MUMwQUExNkEyMTk0MERDNzAwODk2ODI5IC8qIFN0eWxlQ29sb3JTY2hlbWUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3R5bGVDb2xvclNjaGVtZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkxQzBCRTk0MzI3NkM2MEJDMDA1RkI2QzEgLyogUmVuZGVyVGV4dElu
bGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyVGV4dElubGluZXMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMUMwQkU5NDcyNzZDNjYwMzAwNUZCNkMxIC8qIFdvcmRUcmFpbGlu
Z1NwYWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdvcmRUcmFpbGluZ1NwYWNlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTFDMTJBQzI4MUVFNzc4QUUwMDc5RTBBMCAvKiBGb250RmFtaWx5
U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvbnRGYW1pbHlT
cGVjaWZpY2F0aW9uQ29yZVRleHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkx
QzEyQUMyOTFFRTc3OEFFMDA3OUUwQTAgLyogRm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBGb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDMTJBQzJDMUVFNzc5OTUwMDc5RTBBMCAvKiBG
b250RGVzY3JpcHRpb25Db2NvYS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb250RGVzY3JpcHRp
b25Db2NvYS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zMTk0Myw2ICszMTk0
NSw3IEBACiAJCQkJMDgzREFFQTUwRjAxQTdGQjAwMzQyNzU0IC8qIFJlbmRlclRleHRDb250cm9s
U2luZ2xlTGluZS5oICovLAogCQkJCUJDRUE0ODRFMDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJU
ZXh0RnJhZ21lbnQuY3BwICovLAogCQkJCUJDRUE0ODRGMDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5k
ZXJUZXh0RnJhZ21lbnQuaCAqLywKKwkJCQkxQzBCRTk0MzI3NkM2MEJDMDA1RkI2QzEgLyogUmVu
ZGVyVGV4dElubGluZXMuaCAqLywKIAkJCQlFNEM5MUExNzE4MDk5OUZCMDBBMTdGNkQgLyogUmVu
ZGVyVGV4dExpbmVCb3hlcy5jcHAgKi8sCiAJCQkJRTRDOTFBMTUxODA5OTlGMTAwQTE3RjZEIC8q
IFJlbmRlclRleHRMaW5lQm94ZXMuaCAqLywKIAkJCQlCQ0VBNDg0QTA5N0Q5MzAyMDA5NEM5RTQg
LyogUmVuZGVyVGhlbWUuY3BwICovLApAQCAtMzMwODQsNiArMzMwODcsNyBAQAogCQkJCUZGREJD
MDQ1MTgzRDI3QjcwMDQwNzEwOSAvKiBMaW5lV2lkdGguaCAqLywKIAkJCQlGRkFDMzBGRDE4NEZC
MTQ1MDA4QzRGMUUgLyogVHJhaWxpbmdPYmplY3RzLmNwcCAqLywKIAkJCQlGRkFDMzBGQzE4NEZC
MTQ1MDA4QzRGMUUgLyogVHJhaWxpbmdPYmplY3RzLmggKi8sCisJCQkJMUMwQkU5NDcyNzZDNjYw
MzAwNUZCNkMxIC8qIFdvcmRUcmFpbGluZ1NwYWNlLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IGxp
bmU7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRleHQuY3BwCmluZGV4IDdjM2JmOTY4YzM3MTE1MGU1NTVjMjJiYmUxYWM5NDNkYTM1MGRm
ZmEuLmE0YjBjMjgyOTVjZGQ4OGNmNWE4ZjU4M2NhM2Q2M2NjYjI0ZDI3NTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKQEAgLTEsNyArMSw3IEBACiAvKgogICogKEMp
IDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAqIChDKSAyMDAwIERpcmsgTXVlbGxl
ciAobXVlbGxlckBrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA2IEFuZHJldyBX
ZWxsaW5ndG9uIChwcm90b25Ad2lyZXRhcHBlZC5uZXQpCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYg
R3JhaGFtIERlbm5pcyAoZ3JhaGFtLmRlbm5pc0BnbWFpbC5jb20pCiAgKgpAQCAtNDcsNiArNDcs
NyBAQAogI2luY2x1ZGUgIlJlbmRlckNvbWJpbmVUZXh0LmgiCiAjaW5jbHVkZSAiUmVuZGVySW5s
aW5lLmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKKyNpbmNsdWRlICJSZW5kZXJUZXh0SW5s
aW5lcy5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJSZW5kZXJlZERvY3Vt
ZW50TWFya2VyLmgiCiAjaW5jbHVkZSAiU1ZHRWxlbWVudFR5cGVIZWxwZXJzLmgiCkBAIC03MTcs
NiArNzE4LDEzIEBAIEFMV0FZU19JTkxJTkUgZmxvYXQgUmVuZGVyVGV4dDo6d2lkdGhGcm9tQ2Fj
aGUoY29uc3QgRm9udENhc2NhZGUmIGYsIHVuc2lnbmVkIHN0CiAgICAgcmV0dXJuIGYud2lkdGgo
cnVuLCBmYWxsYmFja0ZvbnRzLCBnbHlwaE92ZXJmbG93KTsKIH0KIAorQUxXQVlTX0lOTElORSBm
bG9hdCBSZW5kZXJUZXh0Ojp3aWR0aEZyb21DYWNoZUNvbnNpZGVyaW5nUG9zc2libGVUcmFpbGlu
Z1NwYWNlKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3QgRm9udENhc2NhZGUmIGZvbnQs
IHVuc2lnbmVkIHN0YXJ0SW5kZXgsIHVuc2lnbmVkIHdvcmRMZW4sIGZsb2F0IHhQb3MsIGJvb2wg
Y3VycmVudENoYXJhY3RlcklzU3BhY2UsIFdvcmRUcmFpbGluZ1NwYWNlJiB3b3JkVHJhaWxpbmdT
cGFjZSwgSGFzaFNldDxjb25zdCBGb250Kj4mIGZhbGxiYWNrRm9udHMsIEdseXBoT3ZlcmZsb3cm
IGdseXBoT3ZlcmZsb3cpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1lYXN1cmVUZXh0Q29uc2lkZXJp
bmdQb3NzaWJsZVRyYWlsaW5nU3BhY2UoY3VycmVudENoYXJhY3RlcklzU3BhY2UsIHN0YXJ0SW5k
ZXgsIHdvcmRMZW4sIHdvcmRUcmFpbGluZ1NwYWNlLCBmYWxsYmFja0ZvbnRzLCBbJl0gKHVuc2ln
bmVkIGZyb20sIHVuc2lnbmVkIGxlbikgeworICAgICAgICByZXR1cm4gd2lkdGhGcm9tQ2FjaGUo
Zm9udCwgZnJvbSwgbGVuLCB4UG9zLCAmZmFsbGJhY2tGb250cywgJmdseXBoT3ZlcmZsb3csIHN0
eWxlKTsKKyAgICB9KTsKK30KKwogaW5saW5lIGJvb2wgaXNIYW5nYWJsZVB1bmN0dWF0aW9uQXRM
aW5lU3RhcnQoVUNoYXIgYykKIHsKICAgICByZXR1cm4gVV9HRVRfR0NfTUFTSyhjKSAmIChVX0dD
X1BTX01BU0sgfCBVX0dDX1BJX01BU0sgfCBVX0dDX1BGX01BU0spOwpAQCAtOTI0LDkgKzkzMiw5
IEBAIHN0YXRpYyBpbmxpbmUgZmxvYXQgaHlwaGVuV2lkdGgoUmVuZGVyVGV4dCYgcmVuZGVyZXIs
IGNvbnN0IEZvbnRDYXNjYWRlJiBmb250KQogICAgIHJldHVybiBmb250LndpZHRoKHRleHRSdW4p
OwogfQogCi1zdGF0aWMgZmxvYXQgbWF4V29yZEZyYWdtZW50V2lkdGgoUmVuZGVyVGV4dCYgcmVu
ZGVyZXIsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3QgRm9udENhc2NhZGUmIGZvbnQs
IFN0cmluZ1ZpZXcgd29yZCwgdW5zaWduZWQgbWluaW11bVByZWZpeExlbmd0aCwgdW5zaWduZWQg
bWluaW11bVN1ZmZpeExlbmd0aCwgdW5zaWduZWQmIHN1ZmZpeFN0YXJ0LCBIYXNoU2V0PGNvbnN0
IEZvbnQqPiYgZmFsbGJhY2tGb250cywgR2x5cGhPdmVyZmxvdyYgZ2x5cGhPdmVyZmxvdykKK2Zs
b2F0IFJlbmRlclRleHQ6Om1heFdvcmRGcmFnbWVudFdpZHRoKGNvbnN0IFJlbmRlclN0eWxlJiBz
dHlsZSwgY29uc3QgRm9udENhc2NhZGUmIGZvbnQsIFN0cmluZ1ZpZXcgd29yZCwgdW5zaWduZWQg
bWluaW11bVByZWZpeExlbmd0aCwgdW5zaWduZWQgbWluaW11bVN1ZmZpeExlbmd0aCwgYm9vbCBj
dXJyZW50Q2hhcmFjdGVySXNTcGFjZSwgdW5zaWduZWQgY2hhcmFjdGVySW5kZXgsIGZsb2F0IHhQ
b3MsIGZsb2F0IGVudGlyZVdvcmRXaWR0aCwgV29yZFRyYWlsaW5nU3BhY2UmIHdvcmRUcmFpbGlu
Z1NwYWNlLCBIYXNoU2V0PGNvbnN0IEZvbnQqPiYgZmFsbGJhY2tGb250cywgR2x5cGhPdmVyZmxv
dyYgZ2x5cGhPdmVyZmxvdykKIHsKLSAgICBzdWZmaXhTdGFydCA9IDA7CisgICAgdW5zaWduZWQg
c3VmZml4U3RhcnQgPSAwOwogICAgIGlmICh3b3JkLmxlbmd0aCgpIDw9IG1pbmltdW1TdWZmaXhM
ZW5ndGgpCiAgICAgICAgIHJldHVybiAwOwogCkBAIC05NDEsOCArOTQ5LDEzIEBAIHN0YXRpYyBm
bG9hdCBtYXhXb3JkRnJhZ21lbnRXaWR0aChSZW5kZXJUZXh0JiByZW5kZXJlciwgY29uc3QgUmVu
ZGVyU3R5bGUmIHN0eWxlCiAKICAgICBoeXBoZW5Mb2NhdGlvbnMucmV2ZXJzZSgpOwogCi0gICAg
Ly8gRklYTUU6IEJyZWFraW5nIHRoZSBzdHJpbmcgYXQgdGhlc2UgcGxhY2VzIGluIHRoZSBtaWRk
bGUgb2Ygd29yZHMgaXMgY29tcGxldGVseSBicm9rZW4gd2l0aCBjb21wbGV4IHRleHQuCi0gICAg
ZmxvYXQgbWluaW11bUZyYWdtZW50V2lkdGhUb0NvbnNpZGVyID0gZm9udC5waXhlbFNpemUoKSAq
IDUgLyA0ICsgaHlwaGVuV2lkdGgocmVuZGVyZXIsIGZvbnQpOworICAgIC8vIENvbnNpZGVyIHRo
ZSB3b3JkICJBQkMtREVGLUdISSIgKHdoZXJlIHRoZSAnLScgY2hhcmFjdGVycyBhcmUgaHlwaGVu
YXRpb24gb3Bwb3J0dW5pdGllcykuIFdlIHdhbnQgdG8gbWVhc3VyZSB0aGUgd2lkdGgKKyAgICAv
LyBvZiAiQUJDLSIgYW5kICJERUYtIiwgYnV0IG5vdCAiR0hJLSIuIEluc3RlYWQsIHdlIHNob3Vs
ZCBtZWFzdXJlICJHSEkiIHRoZSBzYW1lIHdheSB3ZSBtZWFzdXJlIHJlZ3VsYXIgdW5oeXBoZW5h
dGVkCisgICAgLy8gd29yZHMgKGJ5IHVzaW5nIHdvcmRUcmFpbGluZ1NwYWNlKS4gVGhlcmVmb3Jl
LCB0aGlzIGZ1bmN0aW9uIGlzIHNwbGl0IHVwIGludG8gdHdvIHBhcnRzIC0gb25lIHRoYXQgbWVh
c3VyZXMgZWFjaCBwcmVmaXgsCisgICAgLy8gYW5kIG9uZSB0aGF0IG1lYXN1cmVzIHRoZSBzaW5n
bGUgbGFzdCBzdWZmaXguCisKKyAgICAvLyBGSVhNRTogQnJlYWtpbmcgdGhlIHN0cmluZyBhdCB0
aGVzZSBwbGFjZXMgaW4gdGhlIG1pZGRsZSBvZiB3b3JkcyBkb2Vzbid0IHdvcmsgd2l0aCBjb21w
bGV4IHRleHQuCisgICAgZmxvYXQgbWluaW11bUZyYWdtZW50V2lkdGhUb0NvbnNpZGVyID0gZm9u
dC5waXhlbFNpemUoKSAqIDUgLyA0ICsgaHlwaGVuV2lkdGgoKnRoaXMsIGZvbnQpOwogICAgIGZs
b2F0IG1heEZyYWdtZW50V2lkdGggPSAwOwogICAgIGZvciAoc2l6ZV90IGsgPSAwOyBrIDwgaHlw
aGVuTG9jYXRpb25zLnNpemUoKTsgKytrKSB7CiAgICAgICAgIGludCBmcmFnbWVudExlbmd0aCA9
IGh5cGhlbkxvY2F0aW9uc1trXSAtIHN1ZmZpeFN0YXJ0OwpAQCAtOTUxLDcgKzk2NCw3IEBAIHN0
YXRpYyBmbG9hdCBtYXhXb3JkRnJhZ21lbnRXaWR0aChSZW5kZXJUZXh0JiByZW5kZXJlciwgY29u
c3QgUmVuZGVyU3R5bGUmIHN0eWxlCiAgICAgICAgIGZyYWdtZW50V2l0aEh5cGhlbi5hcHBlbmQo
c3R5bGUuaHlwaGVuU3RyaW5nKCkpOwogCiAgICAgICAgIFRleHRSdW4gcnVuID0gUmVuZGVyQmxv
Y2s6OmNvbnN0cnVjdFRleHRSdW4oZnJhZ21lbnRXaXRoSHlwaGVuLnRvU3RyaW5nKCksIHN0eWxl
KTsKLSAgICAgICAgcnVuLnNldENoYXJhY3RlclNjYW5Gb3JDb2RlUGF0aCghcmVuZGVyZXIuY2Fu
VXNlU2ltcGxlRm9udENvZGVQYXRoKCkpOworICAgICAgICBydW4uc2V0Q2hhcmFjdGVyU2NhbkZv
ckNvZGVQYXRoKCFjYW5Vc2VTaW1wbGVGb250Q29kZVBhdGgoKSk7CiAgICAgICAgIGZsb2F0IGZy
YWdtZW50V2lkdGggPSBmb250LndpZHRoKHJ1biwgJmZhbGxiYWNrRm9udHMsICZnbHlwaE92ZXJm
bG93KTsKIAogICAgICAgICAvLyBOYXJyb3cgcHJlZml4ZXMgYXJlIGlnbm9yZWQuIFNlZSB0cnlI
eXBoZW5hdGluZyBpbiBSZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwLgpAQCAtOTYyLDcgKzk3NSwx
NCBAQCBzdGF0aWMgZmxvYXQgbWF4V29yZEZyYWdtZW50V2lkdGgoUmVuZGVyVGV4dCYgcmVuZGVy
ZXIsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZQogICAgICAgICBtYXhGcmFnbWVudFdpZHRoID0g
c3RkOjptYXgobWF4RnJhZ21lbnRXaWR0aCwgZnJhZ21lbnRXaWR0aCk7CiAgICAgfQogCi0gICAg
cmV0dXJuIG1heEZyYWdtZW50V2lkdGg7CisgICAgaWYgKCFzdWZmaXhTdGFydCkgeworICAgICAg
ICAvLyBXZSBkaWRuJ3QgZmluZCBhbnkgaHlwaGVuYXRpb24gb3Bwb3J0dW5pdGllcyB0aGF0IHdl
J3JlIHdpbGxpbmcgdG8gYWN0dWFsbHkgdXNlLgorICAgICAgICAvLyBUaGVyZWZvcmUsIHRoZSB3
aWR0aCBvZiB0aGUgbWF4aW11bSBmcmFnbWVudCBpcyBqdXN0IC4uLiB0aGUgd2lkdGggb2YgdGhl
IGVudGlyZSB3b3JkLgorICAgICAgICByZXR1cm4gZW50aXJlV29yZFdpZHRoOworICAgIH0KKwor
ICAgIGF1dG8gc3VmZml4V2lkdGggPSB3aWR0aEZyb21DYWNoZUNvbnNpZGVyaW5nUG9zc2libGVU
cmFpbGluZ1NwYWNlKHN0eWxlLCBmb250LCBjaGFyYWN0ZXJJbmRleCArIHN1ZmZpeFN0YXJ0LCB3
b3JkLmxlbmd0aCgpIC0gc3VmZml4U3RhcnQsIHhQb3MsIGN1cnJlbnRDaGFyYWN0ZXJJc1NwYWNl
LCB3b3JkVHJhaWxpbmdTcGFjZSwgZmFsbGJhY2tGb250cywgZ2x5cGhPdmVyZmxvdyk7CisgICAg
cmV0dXJuIHN0ZDo6bWF4KG1heEZyYWdtZW50V2lkdGgsIHN1ZmZpeFdpZHRoKTsKIH0KIAogdm9p
ZCBSZW5kZXJUZXh0Ojpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocyhmbG9hdCBsZWFkV2lk
dGgsIEhhc2hTZXQ8Y29uc3QgRm9udCo+JiBmYWxsYmFja0ZvbnRzLCBHbHlwaE92ZXJmbG93JiBn
bHlwaE92ZXJmbG93KQpAQCAtMTA5NSwzOCArMTExNSwxNCBAQCB2b2lkIFJlbmRlclRleHQ6OmNv
bXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKGZsb2F0IGxlYWRXaWR0aCwgSGFzaFNldDxjb25z
dCBGbwogICAgICAgICBpZiAod29yZExlbikgewogICAgICAgICAgICAgZmxvYXQgY3Vyck1pbldp
ZHRoID0gMDsKICAgICAgICAgICAgIGJvb2wgaXNTcGFjZSA9IChqIDwgbGVuZ3RoKSAmJiBpc1Nw
YWNlQWNjb3JkaW5nVG9TdHlsZShjLCBzdHlsZSk7Ci0gICAgICAgICAgICBmbG9hdCB3OwotICAg
ICAgICAgICAgc3RkOjpvcHRpb25hbDxmbG9hdD4gd29yZFRyYWlsaW5nU3BhY2VXaWR0aDsKLSAg
ICAgICAgICAgIGlmIChpc1NwYWNlKQotICAgICAgICAgICAgICAgIHdvcmRUcmFpbGluZ1NwYWNl
V2lkdGggPSB3b3JkVHJhaWxpbmdTcGFjZS53aWR0aChmYWxsYmFja0ZvbnRzKTsKLSAgICAgICAg
ICAgIGlmICh3b3JkVHJhaWxpbmdTcGFjZVdpZHRoKQotICAgICAgICAgICAgICAgIHcgPSB3aWR0
aEZyb21DYWNoZShmb250LCBpLCB3b3JkTGVuICsgMSwgbGVhZFdpZHRoICsgY3Vyck1heFdpZHRo
LCAmZmFsbGJhY2tGb250cywgJmdseXBoT3ZlcmZsb3csIHN0eWxlKSAtIHdvcmRUcmFpbGluZ1Nw
YWNlV2lkdGgudmFsdWUoKTsKLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIHcg
PSB3aWR0aEZyb21DYWNoZShmb250LCBpLCB3b3JkTGVuLCBsZWFkV2lkdGggKyBjdXJyTWF4V2lk
dGgsICZmYWxsYmFja0ZvbnRzLCAmZ2x5cGhPdmVyZmxvdywgc3R5bGUpOwotICAgICAgICAgICAg
ICAgIGlmIChjID09IHNvZnRIeXBoZW4gJiYgc3R5bGUuaHlwaGVucygpICE9IEh5cGhlbnM6Ok5v
bmUpCi0gICAgICAgICAgICAgICAgICAgIGN1cnJNaW5XaWR0aCA9IGh5cGhlbldpZHRoKCp0aGlz
LCBmb250KTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZsb2F0IHcgPSB3aWR0aEZyb21D
YWNoZUNvbnNpZGVyaW5nUG9zc2libGVUcmFpbGluZ1NwYWNlKHN0eWxlLCBmb250LCBpLCB3b3Jk
TGVuLCBsZWFkV2lkdGggKyBjdXJyTWF4V2lkdGgsIGlzU3BhY2UsIHdvcmRUcmFpbGluZ1NwYWNl
LCBmYWxsYmFja0ZvbnRzLCBnbHlwaE92ZXJmbG93KTsKKyAgICAgICAgICAgIGlmIChjID09IHNv
ZnRIeXBoZW4gJiYgc3R5bGUuaHlwaGVucygpICE9IEh5cGhlbnM6Ok5vbmUpCisgICAgICAgICAg
ICAgICAgY3Vyck1pbldpZHRoID0gaHlwaGVuV2lkdGgoKnRoaXMsIGZvbnQpOwogCiAgICAgICAg
ICAgICBpZiAodyA+IG1heFdvcmRXaWR0aCkgewotICAgICAgICAgICAgICAgIHVuc2lnbmVkIHN1
ZmZpeFN0YXJ0OwotICAgICAgICAgICAgICAgIGZsb2F0IG1heEZyYWdtZW50V2lkdGggPSBtYXhX
b3JkRnJhZ21lbnRXaWR0aCgqdGhpcywgc3R5bGUsIGZvbnQsIFN0cmluZ1ZpZXcoc3RyaW5nKS5z
dWJzdHJpbmcoaSwgd29yZExlbiksIG1pbmltdW1QcmVmaXhMZW5ndGgsIG1pbmltdW1TdWZmaXhM
ZW5ndGgsIHN1ZmZpeFN0YXJ0LCBmYWxsYmFja0ZvbnRzLCBnbHlwaE92ZXJmbG93KTsKLQotICAg
ICAgICAgICAgICAgIGlmIChzdWZmaXhTdGFydCkgewotICAgICAgICAgICAgICAgICAgICBmbG9h
dCBzdWZmaXhXaWR0aDsKLSAgICAgICAgICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxmbG9hdD4g
d29yZFRyYWlsaW5nU3BhY2VXaWR0aDsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGlzU3BhY2Up
Ci0gICAgICAgICAgICAgICAgICAgICAgICB3b3JkVHJhaWxpbmdTcGFjZVdpZHRoID0gd29yZFRy
YWlsaW5nU3BhY2Uud2lkdGgoZmFsbGJhY2tGb250cyk7Ci0gICAgICAgICAgICAgICAgICAgIGlm
ICh3b3JkVHJhaWxpbmdTcGFjZVdpZHRoKQotICAgICAgICAgICAgICAgICAgICAgICAgc3VmZml4
V2lkdGggPSB3aWR0aEZyb21DYWNoZShmb250LCBpICsgc3VmZml4U3RhcnQsIHdvcmRMZW4gLSBz
dWZmaXhTdGFydCArIDEsIGxlYWRXaWR0aCArIGN1cnJNYXhXaWR0aCwgMCwgMCwgc3R5bGUpIC0g
d29yZFRyYWlsaW5nU3BhY2VXaWR0aC52YWx1ZSgpOwotICAgICAgICAgICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdWZmaXhXaWR0aCA9IHdpZHRoRnJvbUNhY2hlKGZv
bnQsIGkgKyBzdWZmaXhTdGFydCwgd29yZExlbiAtIHN1ZmZpeFN0YXJ0LCBsZWFkV2lkdGggKyBj
dXJyTWF4V2lkdGgsIDAsIDAsIHN0eWxlKTsKLQotICAgICAgICAgICAgICAgICAgICBtYXhGcmFn
bWVudFdpZHRoID0gc3RkOjptYXgobWF4RnJhZ21lbnRXaWR0aCwgc3VmZml4V2lkdGgpOwotCi0g
ICAgICAgICAgICAgICAgICAgIGN1cnJNaW5XaWR0aCArPSBtYXhGcmFnbWVudFdpZHRoIC0gdzsK
LSAgICAgICAgICAgICAgICAgICAgbWF4V29yZFdpZHRoID0gc3RkOjptYXgobWF4V29yZFdpZHRo
LCBtYXhGcmFnbWVudFdpZHRoKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAg
ICAgICAgICAgbWF4V29yZFdpZHRoID0gdzsKKyAgICAgICAgICAgICAgICBhdXRvIG1heEZyYWdt
ZW50V2lkdGggPSBtYXhXb3JkRnJhZ21lbnRXaWR0aChzdHlsZSwgZm9udCwgU3RyaW5nVmlldyhz
dHJpbmcpLnN1YnN0cmluZyhpLCB3b3JkTGVuKSwgbWluaW11bVByZWZpeExlbmd0aCwgbWluaW11
bVN1ZmZpeExlbmd0aCwgaXNTcGFjZSwgaSwgbGVhZFdpZHRoICsgY3Vyck1heFdpZHRoLCB3LCB3
b3JkVHJhaWxpbmdTcGFjZSwgZmFsbGJhY2tGb250cywgZ2x5cGhPdmVyZmxvdyk7CisgICAgICAg
ICAgICAgICAgY3Vyck1pbldpZHRoICs9IG1heEZyYWdtZW50V2lkdGggLSB3OyAvLyBUaGlzLCB3
aGVuIGNvbWJpbmVkIHdpdGggImN1cnJNaW5XaWR0aCArPSB3IiBiZWxvdywgaGFzIHRoZSBlZmZl
Y3Qgb2YgZXhlY3V0aW5nICJjdXJyTWluV2lkdGggKz0gbWF4RnJhZ21lbnRXaWR0aCIgaW5zdGVh
ZC4KKyAgICAgICAgICAgICAgICBtYXhXb3JkV2lkdGggPSBzdGQ6Om1heChtYXhXb3JkV2lkdGgs
IG1heEZyYWdtZW50V2lkdGgpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoIWZp
cnN0R2x5cGhMZWZ0T3ZlcmZsb3cpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuaApp
bmRleCA1ZTQwNTNmYjA2Y2UwMDNiNWI0YWEyM2IxZTUyN2NhMGJlN2VjNTY5Li5lMWZlYTNiZjQ3
Zjk2NTNkMzNkY2RhNWRjM2I0NTgzZDE4YTc4Y2I0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUZXh0LmgKQEAgLTEsNyArMSw3IEBACiAvKgogICogKEMpIDE5OTkgTGFycyBLbm9sbCAo
a25vbGxAa2RlLm9yZykKICAqIChDKSAyMDAwIERpcmsgTXVlbGxlciAobXVlbGxlckBrZGUub3Jn
KQotICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0zMyw2ICszMyw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIEZvbnQ7CiBjbGFzcyBMZWdhY3lJbmxpbmVUZXh0Qm94Owogc3RydWN0
IEdseXBoT3ZlcmZsb3c7CitzdHJ1Y3QgV29yZFRyYWlsaW5nU3BhY2U7CiAKIG5hbWVzcGFjZSBM
YXlvdXRJbnRlZ3JhdGlvbiB7CiBjbGFzcyBMaW5lTGF5b3V0OwpAQCAtMTgyLDYgKzE4Myw5IEBA
IHB1YmxpYzoKIAogICAgIHN0YXRpYyBSZW5kZXJUZXh0KiBmaW5kQnlEaXNwbGF5Q29udGVudHNJ
bmxpbmVXcmFwcGVyQ2FuZGlkYXRlKFJlbmRlckVsZW1lbnQmKTsKIAorICAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBNZWFzdXJlVGV4dENhbGxiYWNrPgorICAgIHN0YXRpYyBmbG9hdCBtZWFzdXJlVGV4
dENvbnNpZGVyaW5nUG9zc2libGVUcmFpbGluZ1NwYWNlKGJvb2wgY3VycmVudENoYXJhY3Rlcklz
U3BhY2UsIHVuc2lnbmVkIHN0YXJ0SW5kZXgsIHVuc2lnbmVkIHdvcmRMZW5ndGgsIFdvcmRUcmFp
bGluZ1NwYWNlJiwgSGFzaFNldDxjb25zdCBGb250Kj4mIGZhbGxiYWNrRm9udHMsIE1lYXN1cmVU
ZXh0Q2FsbGJhY2smJik7CisKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZVBy
ZWZlcnJlZExvZ2ljYWxXaWR0aHMoZmxvYXQgbGVhZFdpZHRoKTsKICAgICB2b2lkIHdpbGxCZURl
c3Ryb3llZCgpIG92ZXJyaWRlOwpAQCAtMjIyLDYgKzIyNiw5IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBjb250YWluZXIoKSBjb25zdCA9IGRlbGV0ZTsgLy8gVXNlIHBhcmVudCgpIGluc3RlYWQuCiAg
ICAgdm9pZCBjb250YWluZXIoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCYsIGJvb2wmKSBj
b25zdCA9IGRlbGV0ZTsgLy8gVXNlIHBhcmVudCgpIGluc3RlYWQuCiAKKyAgICBmbG9hdCBtYXhX
b3JkRnJhZ21lbnRXaWR0aChjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IEZvbnRDYXNjYWRlJiwg
U3RyaW5nVmlldyB3b3JkLCB1bnNpZ25lZCBtaW5pbXVtUHJlZml4TGVuZ3RoLCB1bnNpZ25lZCBt
aW5pbXVtU3VmZml4TGVuZ3RoLCBib29sIGN1cnJlbnRDaGFyYWN0ZXJJc1NwYWNlLCB1bnNpZ25l
ZCBjaGFyYWN0ZXJJbmRleCwgZmxvYXQgeFBvcywgZmxvYXQgZW50aXJlV29yZFdpZHRoLCBXb3Jk
VHJhaWxpbmdTcGFjZSYsIEhhc2hTZXQ8Y29uc3QgRm9udCo+JiBmYWxsYmFja0ZvbnRzLCBHbHlw
aE92ZXJmbG93Jik7CisgICAgZmxvYXQgd2lkdGhGcm9tQ2FjaGVDb25zaWRlcmluZ1Bvc3NpYmxl
VHJhaWxpbmdTcGFjZShjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IEZvbnRDYXNjYWRlJiwgdW5z
aWduZWQgc3RhcnRJbmRleCwgdW5zaWduZWQgd29yZExlbiwgZmxvYXQgeFBvcywgYm9vbCBjdXJy
ZW50Q2hhcmFjdGVySXNTcGFjZSwgV29yZFRyYWlsaW5nU3BhY2UmLCBIYXNoU2V0PGNvbnN0IEZv
bnQqPiYgZmFsbGJhY2tGb250cywgR2x5cGhPdmVyZmxvdyYpIGNvbnN0OworCiAgICAgLy8gV2Ug
cHV0IHRoZSBiaXRmaWVsZCBmaXJzdCB0byBtaW5pbWl6ZSBwYWRkaW5nIG9uIDY0LWJpdC4KICAg
ICB1bnNpZ25lZCBtX2hhc0JyZWFrYWJsZUNoYXIgOiAxOyAvLyBXaGV0aGVyIG9yIG5vdCB3ZSBj
YW4gYmUgYnJva2VuIGludG8gbXVsdGlwbGUgbGluZXMuCiAgICAgdW5zaWduZWQgbV9oYXNCcmVh
ayA6IDE7IC8vIFdoZXRoZXIgb3Igbm90IHdlIGhhdmUgYSBoYXJkIGJyZWFrIChlLmcuLCA8cHJl
PiB3aXRoICdcbicpLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRleHRJbmxpbmVzLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dElubGlu
ZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4xYjE3NThmZjMwMDkyZmI5YWY2OGJlNDU1OGQyZDgzZDVkMWNjNzU1
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRJ
bmxpbmVzLmgKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgor
ICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENP
UFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3Rvbiwg
TUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUg
IlJlbmRlclRleHQuaCIKKyNpbmNsdWRlICJXb3JkVHJhaWxpbmdTcGFjZS5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBNZWFzdXJlVGV4dENhbGxiYWNrPgor
ZmxvYXQgUmVuZGVyVGV4dDo6bWVhc3VyZVRleHRDb25zaWRlcmluZ1Bvc3NpYmxlVHJhaWxpbmdT
cGFjZShib29sIGN1cnJlbnRDaGFyYWN0ZXJJc1NwYWNlLCB1bnNpZ25lZCBzdGFydEluZGV4LCB1
bnNpZ25lZCB3b3JkTGVuZ3RoLCBXb3JkVHJhaWxpbmdTcGFjZSYgd29yZFRyYWlsaW5nU3BhY2Us
IEhhc2hTZXQ8Y29uc3QgRm9udCo+JiBmYWxsYmFja0ZvbnRzLCBNZWFzdXJlVGV4dENhbGxiYWNr
JiYgY2FsbGJhY2spCit7CisgICAgc3RkOjpvcHRpb25hbDxmbG9hdD4gd29yZFRyYWlsaW5nU3Bh
Y2VXaWR0aDsKKyAgICBpZiAoY3VycmVudENoYXJhY3RlcklzU3BhY2UpCisgICAgICAgIHdvcmRU
cmFpbGluZ1NwYWNlV2lkdGggPSB3b3JkVHJhaWxpbmdTcGFjZS53aWR0aChmYWxsYmFja0ZvbnRz
KTsKKyAgICBpZiAod29yZFRyYWlsaW5nU3BhY2VXaWR0aCkKKyAgICAgICAgcmV0dXJuIGNhbGxi
YWNrKHN0YXJ0SW5kZXgsIHdvcmRMZW5ndGggKyAxKSAtIHdvcmRUcmFpbGluZ1NwYWNlV2lkdGgu
dmFsdWUoKTsKKyAgICByZXR1cm4gY2FsbGJhY2soc3RhcnRJbmRleCwgd29yZExlbmd0aCk7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9saW5lL0JyZWFraW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L2xpbmUvQnJlYWtpbmdDb250ZXh0LmgKaW5kZXggM2Q5ZmY5OTViYmMzNzQ0N2ZjYTg3MjA1ZGE5
MTc1OWY3YTYyOTU5NS4uYjAwN2NiOGYyOWQ3NWZiYWFmMmM4MjM0ODAzYjExNjE1MTgxZjk1ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvQnJlYWtpbmdDb250ZXh0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvQnJlYWtpbmdDb250ZXh0LmgK
QEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDAwIExhcnMgS25vbGwgKGtu
b2xsQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDYsIDIwMDcsIDIw
MDgsIDIwMDksIDIwMTAsIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHQgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodCByZXNlcnZlZC4KICAq
IENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICog
Q29weXJpZ2h0IChDKSAyMDEzIENoYW5nU2VvayBPaCA8c2hpdmFtaWRvd0BnbWFpbC5jb20+CiAg
KiBDb3B5cmlnaHQgKEMpIDIwMTMgQWRvYmUgU3lzdGVtcyBJbmMuIEFsbCByaWdodCByZXNlcnZl
ZC4KQEAgLTM4LDcgKzM4LDkgQEAKICNpbmNsdWRlICJSZW5kZXJMaXN0TWFya2VyLmgiCiAjaW5j
bHVkZSAiUmVuZGVyUnVieVJ1bi5oIgogI2luY2x1ZGUgIlJlbmRlclNWR0lubGluZVRleHQuaCIK
KyNpbmNsdWRlICJSZW5kZXJUZXh0SW5saW5lcy5oIgogI2luY2x1ZGUgIlRyYWlsaW5nT2JqZWN0
cy5oIgorI2luY2x1ZGUgIldvcmRUcmFpbGluZ1NwYWNlLmgiCiAjaW5jbHVkZSA8d3RmL0Z1bmN0
aW9uLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVmlldy5oPgogI2luY2x1ZGUgPHd0Zi91
bmljb2RlL0NoYXJhY3Rlck5hbWVzLmg+CkBAIC02NCwzMiArNjYsNiBAQCBzdHJ1Y3QgV29yZE1l
YXN1cmVtZW50IHsKICAgICBIYXNoU2V0PGNvbnN0IEZvbnQqPiBmYWxsYmFja0ZvbnRzOwogfTsK
IAotc3RydWN0IFdvcmRUcmFpbGluZ1NwYWNlIHsKLSAgICBXb3JkVHJhaWxpbmdTcGFjZShjb25z
dCBSZW5kZXJTdHlsZSYgc3R5bGUsIGJvb2wgbWVhc3VyaW5nV2l0aFRyYWlsaW5nV2hpdGVzcGFj
ZUVuYWJsZWQgPSB0cnVlKQotICAgICAgICA6IG1fc3R5bGUoc3R5bGUpCi0gICAgewotICAgICAg
ICBpZiAoIW1lYXN1cmluZ1dpdGhUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkIHx8ICFtX3N0eWxl
LmZvbnRDYXNjYWRlKCkuZW5hYmxlS2VybmluZygpKQotICAgICAgICAgICAgbV9zdGF0ZSA9IFdv
cmRUcmFpbGluZ1NwYWNlU3RhdGU6OkluaXRpYWxpemVkOwotICAgIH0KLQotICAgIHN0ZDo6b3B0
aW9uYWw8ZmxvYXQ+IHdpZHRoKEhhc2hTZXQ8Y29uc3QgRm9udCo+JiBmYWxsYmFja0ZvbnRzKQot
ICAgIHsKLSAgICAgICAgaWYgKG1fc3RhdGUgPT0gV29yZFRyYWlsaW5nU3BhY2VTdGF0ZTo6SW5p
dGlhbGl6ZWQpCi0gICAgICAgICAgICByZXR1cm4gbV93aWR0aDsKLQotICAgICAgICBhdXRvJiBm
b250ID0gbV9zdHlsZS5mb250Q2FzY2FkZSgpOwotICAgICAgICBtX3dpZHRoID0gZm9udC53aWR0
aChSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bigmc3BhY2UsIDEsIG1fc3R5bGUpLCAmZmFs
bGJhY2tGb250cykgKyBmb250LndvcmRTcGFjaW5nKCk7Ci0gICAgICAgIG1fc3RhdGUgPSBXb3Jk
VHJhaWxpbmdTcGFjZVN0YXRlOjpJbml0aWFsaXplZDsKLSAgICAgICAgcmV0dXJuIG1fd2lkdGg7
Ci0gICAgfQotCi1wcml2YXRlOgotICAgIGVudW0gY2xhc3MgV29yZFRyYWlsaW5nU3BhY2VTdGF0
ZSB7IFVuaW5pdGlhbGl6ZWQsIEluaXRpYWxpemVkIH07Ci0gICAgY29uc3QgUmVuZGVyU3R5bGUm
IG1fc3R5bGU7Ci0gICAgV29yZFRyYWlsaW5nU3BhY2VTdGF0ZSBtX3N0YXRlIHsgV29yZFRyYWls
aW5nU3BhY2VTdGF0ZTo6VW5pbml0aWFsaXplZCB9OwotICAgIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+
IG1fd2lkdGg7Ci19OwotCiBjbGFzcyBCcmVha2luZ0NvbnRleHQgewogcHVibGljOgogICAgIEJy
ZWFraW5nQ29udGV4dChMaW5lQnJlYWtlciYgbGluZUJyZWFrZXIsIElubGluZUJpZGlSZXNvbHZl
ciYgcmVzb2x2ZXIsIExpbmVJbmZvJiBpbkxpbmVJbmZvLCBMaW5lV2lkdGgmIGxpbmVXaWR0aCwg
UmVuZGVyVGV4dEluZm8mIGluUmVuZGVyVGV4dEluZm8sIEZsb2F0aW5nT2JqZWN0KiBpbkxhc3RG
bG9hdEZyb21QcmV2aW91c0xpbmUsIGJvb2wgYXBwbGllZFN0YXJ0V2lkdGgsIFJlbmRlckJsb2Nr
RmxvdyYgYmxvY2spCkBAIC0xNTEsNiArMTI3LDcgQEAgcHVibGljOgogICAgIExlZ2FjeUlubGlu
ZUl0ZXJhdG9yIGhhbmRsZUVuZE9mTGluZSgpOwogICAgIAogICAgIGZsb2F0IGNvbXB1dGVBZGRp
dGlvbmFsQmV0d2VlbldvcmRzV2lkdGgoUmVuZGVyVGV4dCYsIFRleHRMYXlvdXQqLCBVQ2hhciwg
V29yZFRyYWlsaW5nU3BhY2UmLCBIYXNoU2V0PGNvbnN0IEZvbnQqPiYgZmFsbGJhY2tGb250cywg
V29yZE1lYXN1cmVtZW50cyYsIGNvbnN0IEZvbnRDYXNjYWRlJiwgYm9vbCBpc0ZpeGVkUGl0Y2gs
IHVuc2lnbmVkIGxhc3RTcGFjZSwgZmxvYXQgbGFzdFNwYWNlV29yZFNwYWNpbmcsIGZsb2F0IHdv
cmRTcGFjaW5nRm9yV29yZE1lYXN1cmVtZW50LCB1bnNpZ25lZCBvZmZzZXQpOworICAgIGZsb2F0
IHRleHRXaWR0aENvbnNpZGVyaW5nUG9zc2libGVUcmFpbGluZ1NwYWNlKFJlbmRlclRleHQmLCBU
ZXh0TGF5b3V0KiwgVUNoYXIgY3VycmVudENoYXJhY3RlciwgV29yZFRyYWlsaW5nU3BhY2UmLCBI
YXNoU2V0PGNvbnN0IEZvbnQqPiYgZmFsbGJhY2tGb250cywgSGFzaFNldDxjb25zdCBGb250Kj4m
IHdvcmRNZWFzdXJlbWVudEZhbGxiYWNrRm9udHMsIGNvbnN0IEZvbnRDYXNjYWRlJiwgYm9vbCBp
c0ZpeGVkUGl0Y2gsIHVuc2lnbmVkIGxhc3RTcGFjZSwgdW5zaWduZWQgb2Zmc2V0KTsKIAogICAg
IHZvaWQgY2xlYXJMaW5lQnJlYWtJZkZpdHNPbkxpbmUoYm9vbCBpZ25vcmluZ1RyYWlsaW5nU3Bh
Y2UgPSBmYWxzZSkKICAgICB7CkBAIC02MzEsNiArNjA4LDEzIEBAIGlubGluZSB2b2lkIHRyeUh5
cGhlbmF0aW5nKFJlbmRlclRleHQmIHRleHQsIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBjb25z
dCBBdG9tCiAgICAgaHlwaGVuYXRlZCA9IHRydWU7CiB9CiAKK2lubGluZSBmbG9hdCBCcmVha2lu
Z0NvbnRleHQ6OnRleHRXaWR0aENvbnNpZGVyaW5nUG9zc2libGVUcmFpbGluZ1NwYWNlKFJlbmRl
clRleHQmIHJlbmRlclRleHQsIFRleHRMYXlvdXQqIHRleHRMYXlvdXQsIFVDaGFyIGN1cnJlbnRD
aGFyYWN0ZXIsIFdvcmRUcmFpbGluZ1NwYWNlJiB3b3JkVHJhaWxpbmdTcGFjZSwgSGFzaFNldDxj
b25zdCBGb250Kj4mIGZhbGxiYWNrRm9udHMsIEhhc2hTZXQ8Y29uc3QgRm9udCo+JiB3b3JkTWVh
c3VyZW1lbnRGYWxsYmFja0ZvbnRzLCBjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgYm9vbCBpc0Zp
eGVkUGl0Y2gsIHVuc2lnbmVkIGxhc3RTcGFjZSwgdW5zaWduZWQgb2Zmc2V0KQoreworICAgIHJl
dHVybiBSZW5kZXJUZXh0OjptZWFzdXJlVGV4dENvbnNpZGVyaW5nUG9zc2libGVUcmFpbGluZ1Nw
YWNlKGN1cnJlbnRDaGFyYWN0ZXIgPT0gc3BhY2UsIGxhc3RTcGFjZSwgb2Zmc2V0IC0gbGFzdFNw
YWNlLCB3b3JkVHJhaWxpbmdTcGFjZSwgZmFsbGJhY2tGb250cywgWyZdICh1bnNpZ25lZCBmcm9t
LCB1bnNpZ25lZCBsZW4pIHsKKyAgICAgICAgcmV0dXJuIHRleHRXaWR0aChyZW5kZXJUZXh0LCBm
cm9tLCBsZW4sIGZvbnQsIG1fd2lkdGguY3VycmVudFdpZHRoKCksIGlzRml4ZWRQaXRjaCwgbV9j
b2xsYXBzZVdoaXRlU3BhY2UsIHdvcmRNZWFzdXJlbWVudEZhbGxiYWNrRm9udHMsIHRleHRMYXlv
dXQpOworICAgIH0pOworfQorCiBpbmxpbmUgZmxvYXQgQnJlYWtpbmdDb250ZXh0Ojpjb21wdXRl
QWRkaXRpb25hbEJldHdlZW5Xb3Jkc1dpZHRoKFJlbmRlclRleHQmIHJlbmRlclRleHQsIFRleHRM
YXlvdXQqIHRleHRMYXlvdXQsIFVDaGFyIGN1cnJlbnRDaGFyYWN0ZXIsIFdvcmRUcmFpbGluZ1Nw
YWNlJiB3b3JkVHJhaWxpbmdTcGFjZSwgSGFzaFNldDxjb25zdCBGb250Kj4mIGZhbGxiYWNrRm9u
dHMsIFdvcmRNZWFzdXJlbWVudHMmIHdvcmRNZWFzdXJlbWVudHMsIGNvbnN0IEZvbnRDYXNjYWRl
JiBmb250LCBib29sIGlzRml4ZWRQaXRjaCwgdW5zaWduZWQgbGFzdFNwYWNlLCBmbG9hdCBsYXN0
U3BhY2VXb3JkU3BhY2luZywgZmxvYXQgd29yZFNwYWNpbmdGb3JXb3JkTWVhc3VyZW1lbnQsIHVu
c2lnbmVkIG9mZnNldCkKIHsKICAgICB3b3JkTWVhc3VyZW1lbnRzLmdyb3cod29yZE1lYXN1cmVt
ZW50cy5zaXplKCkgKyAxKTsKQEAgLTY0MCwxNCArNjI0LDcgQEAgaW5saW5lIGZsb2F0IEJyZWFr
aW5nQ29udGV4dDo6Y29tcHV0ZUFkZGl0aW9uYWxCZXR3ZWVuV29yZHNXaWR0aChSZW5kZXJUZXh0
JiByZW4KICAgICB3b3JkTWVhc3VyZW1lbnQuZW5kT2Zmc2V0ID0gb2Zmc2V0OwogICAgIHdvcmRN
ZWFzdXJlbWVudC5zdGFydE9mZnNldCA9IGxhc3RTcGFjZTsKICAgICAKLSAgICBmbG9hdCBhZGRp
dGlvbmFsVGVtcFdpZHRoID0gMDsKLSAgICBzdGQ6Om9wdGlvbmFsPGZsb2F0PiB3b3JkVHJhaWxp
bmdTcGFjZVdpZHRoOwotICAgIGlmIChjdXJyZW50Q2hhcmFjdGVyID09ICcgJykKLSAgICAgICAg
d29yZFRyYWlsaW5nU3BhY2VXaWR0aCA9IHdvcmRUcmFpbGluZ1NwYWNlLndpZHRoKGZhbGxiYWNr
Rm9udHMpOwotICAgIGlmICh3b3JkVHJhaWxpbmdTcGFjZVdpZHRoKQotICAgICAgICBhZGRpdGlv
bmFsVGVtcFdpZHRoID0gdGV4dFdpZHRoKHJlbmRlclRleHQsIGxhc3RTcGFjZSwgb2Zmc2V0ICsg
MSAtIGxhc3RTcGFjZSwgZm9udCwgbV93aWR0aC5jdXJyZW50V2lkdGgoKSwgaXNGaXhlZFBpdGNo
LCBtX2NvbGxhcHNlV2hpdGVTcGFjZSwgd29yZE1lYXN1cmVtZW50LmZhbGxiYWNrRm9udHMsIHRl
eHRMYXlvdXQpIC0gd29yZFRyYWlsaW5nU3BhY2VXaWR0aC52YWx1ZSgpOwotICAgIGVsc2UKLSAg
ICAgICAgYWRkaXRpb25hbFRlbXBXaWR0aCA9IHRleHRXaWR0aChyZW5kZXJUZXh0LCBsYXN0U3Bh
Y2UsIG9mZnNldCAtIGxhc3RTcGFjZSwgZm9udCwgbV93aWR0aC5jdXJyZW50V2lkdGgoKSwgaXNG
aXhlZFBpdGNoLCBtX2NvbGxhcHNlV2hpdGVTcGFjZSwgd29yZE1lYXN1cmVtZW50LmZhbGxiYWNr
Rm9udHMsIHRleHRMYXlvdXQpOworICAgIGZsb2F0IGFkZGl0aW9uYWxUZW1wV2lkdGggPSB0ZXh0
V2lkdGhDb25zaWRlcmluZ1Bvc3NpYmxlVHJhaWxpbmdTcGFjZShyZW5kZXJUZXh0LCB0ZXh0TGF5
b3V0LCBjdXJyZW50Q2hhcmFjdGVyLCB3b3JkVHJhaWxpbmdTcGFjZSwgZmFsbGJhY2tGb250cywg
d29yZE1lYXN1cmVtZW50LmZhbGxiYWNrRm9udHMsIGZvbnQsIGlzRml4ZWRQaXRjaCwgbGFzdFNw
YWNlLCBvZmZzZXQpOwogICAgIAogICAgIGlmICh3b3JkTWVhc3VyZW1lbnQuZmFsbGJhY2tGb250
cy5pc0VtcHR5KCkgJiYgIWZhbGxiYWNrRm9udHMuaXNFbXB0eSgpKQogICAgICAgICB3b3JkTWVh
c3VyZW1lbnQuZmFsbGJhY2tGb250cy5zd2FwKGZhbGxiYWNrRm9udHMpOwpAQCAtMTI1Miw0ICsx
MjI5LDQgQEAgaW5saW5lIExlZ2FjeUlubGluZUl0ZXJhdG9yIEJyZWFraW5nQ29udGV4dDo6aGFu
ZGxlRW5kT2ZMaW5lKCkKICAgICByZXR1cm4gbV9saW5lQnJlYWs7CiB9CiAKLX0KK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5l
L1dvcmRUcmFpbGluZ1NwYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9Xb3Jk
VHJhaWxpbmdTcGFjZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAxZmJjMzQwYjYzNTNhNDUwZjU0YWU2YmQyYmUx
MzMzOTNkOTM2NjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bGluZS9Xb3JkVHJhaWxpbmdTcGFjZS5oCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMDAgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKKyAqIENvcHlyaWdodCAoQykg
MjAwMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMgQ2hhbmdTZW9rIE9oIDxzaGl2YW1pZG93QGdtYWlsLmNvbT4KKyAqIENvcHlyaWdodCAo
QykgMjAxMyBBZG9iZSBTeXN0ZW1zIEluYy4gQWxsIHJpZ2h0IHJlc2VydmVkLgorICoKKyAqIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisg
KiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpbmNsdWRlICJGb250Q2FzY2FkZS5oIgorI2luY2x1ZGUgIlJlbmRlckJsb2Nr
LmgiCisjaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKKyNpbmNsdWRlIDxvcHRpb25hbD4KKyNpbmNs
dWRlIDx3dGYvSGFzaFNldC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBXb3Jk
VHJhaWxpbmdTcGFjZSB7CisgICAgV29yZFRyYWlsaW5nU3BhY2UoY29uc3QgUmVuZGVyU3R5bGUm
IHN0eWxlLCBib29sIG1lYXN1cmluZ1dpdGhUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkID0gdHJ1
ZSkKKyAgICAgICAgOiBtX3N0eWxlKHN0eWxlKQorICAgIHsKKyAgICAgICAgaWYgKCFtZWFzdXJp
bmdXaXRoVHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCB8fCAhbV9zdHlsZS5mb250Q2FzY2FkZSgp
LmVuYWJsZUtlcm5pbmcoKSkKKyAgICAgICAgICAgIG1fc3RhdGUgPSBXb3JkVHJhaWxpbmdTcGFj
ZVN0YXRlOjpJbml0aWFsaXplZDsKKyAgICB9CisKKyAgICBzdGQ6Om9wdGlvbmFsPGZsb2F0PiB3
aWR0aChIYXNoU2V0PGNvbnN0IEZvbnQqPiYgZmFsbGJhY2tGb250cykKKyAgICB7CisgICAgICAg
IGlmIChtX3N0YXRlID09IFdvcmRUcmFpbGluZ1NwYWNlU3RhdGU6OkluaXRpYWxpemVkKQorICAg
ICAgICAgICAgcmV0dXJuIG1fd2lkdGg7CisKKyAgICAgICAgYXV0byYgZm9udCA9IG1fc3R5bGUu
Zm9udENhc2NhZGUoKTsKKyAgICAgICAgbV93aWR0aCA9IGZvbnQud2lkdGgoUmVuZGVyQmxvY2s6
OmNvbnN0cnVjdFRleHRSdW4oJnNwYWNlLCAxLCBtX3N0eWxlKSwgJmZhbGxiYWNrRm9udHMpICsg
Zm9udC53b3JkU3BhY2luZygpOworICAgICAgICBtX3N0YXRlID0gV29yZFRyYWlsaW5nU3BhY2VT
dGF0ZTo6SW5pdGlhbGl6ZWQ7CisgICAgICAgIHJldHVybiBtX3dpZHRoOworICAgIH0KKworcHJp
dmF0ZToKKyAgICBlbnVtIGNsYXNzIFdvcmRUcmFpbGluZ1NwYWNlU3RhdGUgeyBVbmluaXRpYWxp
emVkLCBJbml0aWFsaXplZCB9OworICAgIGNvbnN0IFJlbmRlclN0eWxlJiBtX3N0eWxlOworICAg
IFdvcmRUcmFpbGluZ1NwYWNlU3RhdGUgbV9zdGF0ZSB7IFdvcmRUcmFpbGluZ1NwYWNlU3RhdGU6
OlVuaW5pdGlhbGl6ZWQgfTsKKyAgICBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBtX3dpZHRoOworfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447460</attachid>
            <date>2021-12-17 10:33:41 -0800</date>
            <delta_ts>2021-12-17 14:10:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234424-20211217103340.patch</filename>
            <type>text/plain</type>
            <size>22050</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3MTk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDE0MzcxMzE4MmQwNGMx
YTBmMTMxYjA3YjllZjIzOWYwYTdkNzdiNi4uOTk1Y2NlNTk5NGI5ZmE5OTM2NDRjZjQwYjY5YmUz
NTEwNTM2Yjk2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDIxLTEyLTE3ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgRGVkdXBsaWNh
dGUgY29kZSBpbiBSZW5kZXJUZXh0Ojpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocygpCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQ0MjQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBoYXZlIDMg
cGxhY2VzIHdpdGggY29kZSBvZiB0aGlzIGZvcm06CisKKyAgICAgICAgZmxvYXQgcmVzdWx0Owor
ICAgICAgICBzdGQ6Om9wdGlvbmFsPGZsb2F0PiB3b3JkVHJhaWxpbmdTcGFjZVdpZHRoOworICAg
ICAgICBpZiAoY3VycmVudENoYXJhY3RlcklzU3BhY2UpCisgICAgICAgICAgICB3b3JkVHJhaWxp
bmdTcGFjZVdpZHRoID0gd29yZFRyYWlsaW5nU3BhY2Uud2lkdGgoZmFsbGJhY2tGb250cyk7Cisg
ICAgICAgIGlmICh3b3JkVHJhaWxpbmdTcGFjZVdpZHRoKQorICAgICAgICAgICAgcmVzdWx0ID0g
bWVhc3VyZVRleHQoc3RhcnRpbmdDaGFyYWN0ZXJJbmRleCwgbGVuZ3RoICsgMSkgLSB3b3JkVHJh
aWxpbmdTcGFjZVdpZHRoLnZhbHVlKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJlc3Vs
dCA9IG1lYXN1cmVUZXh0KHN0YXJ0aW5nQ2hhcmFjdGVySW5kZXgsIGxlbmd0aCk7CisKKyAgICAg
ICAgVGhpcyBwYXRjaCBzaW1wbHkgZGVkdXBsaWNhdGVzIHRoaXMgbG9naWMsIGFuZCBwdXRzIGl0
IGludG8gYSBzaW5nbGUgZnVuY3Rpb246CisgICAgICAgIFJlbmRlclRleHQ6Om1lYXN1cmVUZXh0
Q29uc2lkZXJpbmdQb3NzaWJsZVRyYWlsaW5nU3BhY2UoKS4gQmVjYXVzZSB0aGUgZGlmZmVyZW50
IHBsYWNlcyB3aGljaCBjYWxsIGl0CisgICAgICAgIHVzZSBkaWZmZXJlbnQgdGV4dCBtZWFzdXJl
bWVudCBmdW5jdGlvbnMsIHRoaXMgZnVuY3Rpb24gYWNjZXB0cyBhICJtZWFzdXJlIHRleHQiIGNh
bGxiYWNrLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoZXJlIGlzIG5vIGJlaGF2
aW9yIGNoYW5nZS4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUZXh0Ojp3aWR0aEZyb21DYWNoZUNvbnNpZGVyaW5nUG9zc2libGVUcmFpbGluZ1Nw
YWNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6Om1heFdvcmRGcmFnbWVu
dFdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6OmNvbXB1dGVQcmVmZXJyZWRM
b2dpY2FsV2lkdGhzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dC5oOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0SW5saW5lcy5oOiBBZGRlZC4gVGhpcyBmdW5jdGlvbiBu
ZWVkcyB0byBiZSBhYmxlIHRvIHNlZSBpbnRvIFdvcmRUcmFpbGluZ1NwYWNlLAorICAgICAgICBi
dXQgd2Ugc2hvdWxkbid0IGJlIGFkZGluZyBhbnkgbW9yZSAjaW5jbHVkZXMgdG8gUmVuZGVyVGV4
dC5oIGJlY2F1c2UgZG9pbmcgc28gd2lsbCBpbmNyZWFzZSB0aGUgYnVpbGQgdGltZS4KKyAgICAg
ICAgU28sIGluc3RlYWQsIHdlIGNhbiBtb3ZlIHRoaXMgdGVtcGxhdGVkIGZ1bmN0aW9uIHRvIGEg
bmV3IElubGluZXMgaGVhZGVyLCBhbmQgaGF2ZSBjYWxsZXJzIGluY2x1ZGUgdGhhdAorICAgICAg
ICBoZWFkZXIuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0OjptZWFzdXJlVGV4dENvbnNp
ZGVyaW5nUG9zc2libGVUcmFpbGluZ1NwYWNlKToKKyAgICAgICAgKiByZW5kZXJpbmcvbGluZS9C
cmVha2luZ0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkJyZWFraW5nQ29udGV4dDo6dGV4
dFdpZHRoQ29uc2lkZXJpbmdQb3NzaWJsZVRyYWlsaW5nU3BhY2UpOgorICAgICAgICAoV2ViQ29y
ZTo6QnJlYWtpbmdDb250ZXh0Ojpjb21wdXRlQWRkaXRpb25hbEJldHdlZW5Xb3Jkc1dpZHRoKToK
KyAgICAgICAgKFdlYkNvcmU6OldvcmRUcmFpbGluZ1NwYWNlOjpXb3JkVHJhaWxpbmdTcGFjZSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXb3JkVHJhaWxpbmdTcGFjZTo6d2lkdGgpOiBE
ZWxldGVkLgorICAgICAgICAqIHJlbmRlcmluZy9saW5lL1dvcmRUcmFpbGluZ1NwYWNlLmg6IEFk
ZGVkLiBCcmVha2luZ0NvbnRleHQuaCBkZWZpbmVzIFdvcmRUcmFpbGluZ1NwYWNlLCBidXQgaXQg
bmVlZHMKKyAgICAgICAgdG8gYmUgYWJsZSB0byBjYWxsIG1lYXN1cmVUZXh0Q29uc2lkZXJpbmdQ
b3NzaWJsZVRyYWlsaW5nU3BhY2UoKSwgd2hpY2ggbmVlZHMgdG8gYmUgYWJsZSB0byBzZWUgaW5z
aWRlCisgICAgICAgIFdvcmRUcmFpbGluZ1NwYWNlLiBBdm9pZCB0aGUgY2lyY3VsYXIgZGVwZW5k
ZW5jeSBieSBzcGxpdHRpbmcgb3V0IFdvcmRUcmFpbGluZ1NwYWNlIGludG8gaXRzIG93biBmaWxl
LgorICAgICAgICAoV2ViQ29yZTo6V29yZFRyYWlsaW5nU3BhY2U6OldvcmRUcmFpbGluZ1NwYWNl
KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmRUcmFpbGluZ1NwYWNlOjp3aWR0aCk6CisKIDIwMjEt
MTItMTcgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAg
ICBSZWZhY3RvciBoeXBoZW5hdGlvbiBsb2dpYyBpbiBSZW5kZXJUZXh0Ojpjb21wdXRlUHJlZmVy
cmVkTG9naWNhbFdpZHRocygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggODZhNmU3NzZlMjhmMTc2Y2Q2Yjk4YzExNTU1OTBlYWVj
NTQzNzcxNC4uMDRkZWMyZWRjM2VmYTVjNThiZTc1MDAyZjhmMWQwYTkzZmUwNzRmZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
NzA2Nyw2ICs3MDY3LDggQEAKIAkJMUMwOTM5RTkxQTEzRTEyOTAwQjc4OEU1IC8qIENhY2hlZFNW
R0ZvbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVkU1ZHRm9udC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzA5RDA0QjFFMzFDMzI4MDA3MjVGMTgg
LyogUEFMLnhjb2RlcHJvaiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9ICJ3cmFwcGVyLnBiLXByb2plY3QiOyBuYW1lID0gUEFMLnhjb2RlcHJvajsgcGF0
aCA9IFBBTC9QQUwueGNvZGVwcm9qOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzBB
QTE2QTIxOTQwREM3MDA4OTY4MjkgLyogU3R5bGVDb2xvclNjaGVtZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTdHlsZUNvbG9yU2NoZW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTFDMEJFOTQzMjc2QzYwQkMwMDVGQjZDMSAvKiBSZW5kZXJUZXh0SW5saW5l
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJUZXh0SW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkxQzBCRTk0NzI3NkM2NjAzMDA1RkI2QzEgLyogV29yZFRyYWlsaW5nU3Bh
Y2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV29yZFRyYWlsaW5nU3BhY2UuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMUMxMkFDMjgxRUU3NzhBRTAwNzlFMEEwIC8qIEZvbnRGYW1pbHlTcGVj
aWZpY2F0aW9uQ29yZVRleHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9udEZhbWlseVNwZWNp
ZmljYXRpb25Db3JlVGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDMTJB
QzI5MUVFNzc4QUUwMDc5RTBBMCAvKiBGb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUMxMkFDMkMxRUU3Nzk5NTAwNzlFMEEwIC8qIEZvbnRE
ZXNjcmlwdGlvbkNvY29hLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvbnREZXNjcmlwdGlvbkNv
Y29hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMxOTQzLDYgKzMxOTQ1LDcg
QEAKIAkJCQkwODNEQUVBNTBGMDFBN0ZCMDAzNDI3NTQgLyogUmVuZGVyVGV4dENvbnRyb2xTaW5n
bGVMaW5lLmggKi8sCiAJCQkJQkNFQTQ4NEUwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlclRleHRG
cmFnbWVudC5jcHAgKi8sCiAJCQkJQkNFQTQ4NEYwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlclRl
eHRGcmFnbWVudC5oICovLAorCQkJCTFDMEJFOTQzMjc2QzYwQkMwMDVGQjZDMSAvKiBSZW5kZXJU
ZXh0SW5saW5lcy5oICovLAogCQkJCUU0QzkxQTE3MTgwOTk5RkIwMEExN0Y2RCAvKiBSZW5kZXJU
ZXh0TGluZUJveGVzLmNwcCAqLywKIAkJCQlFNEM5MUExNTE4MDk5OUYxMDBBMTdGNkQgLyogUmVu
ZGVyVGV4dExpbmVCb3hlcy5oICovLAogCQkJCUJDRUE0ODRBMDk3RDkzMDIwMDk0QzlFNCAvKiBS
ZW5kZXJUaGVtZS5jcHAgKi8sCkBAIC0zMzA4NCw2ICszMzA4Nyw3IEBACiAJCQkJRkZEQkMwNDUx
ODNEMjdCNzAwNDA3MTA5IC8qIExpbmVXaWR0aC5oICovLAogCQkJCUZGQUMzMEZEMTg0RkIxNDUw
MDhDNEYxRSAvKiBUcmFpbGluZ09iamVjdHMuY3BwICovLAogCQkJCUZGQUMzMEZDMTg0RkIxNDUw
MDhDNEYxRSAvKiBUcmFpbGluZ09iamVjdHMuaCAqLywKKwkJCQkxQzBCRTk0NzI3NkM2NjAzMDA1
RkI2QzEgLyogV29yZFRyYWlsaW5nU3BhY2UuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gbGluZTsK
IAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGV4dC5jcHAKaW5kZXggMDA4ODE4YmUzZTc3OThlODNjZjk3ZDhhMzMyNjE4Yjg1MTkyNTQ2Ny4u
YTRiMGMyODI5NWNkZDg4Y2Y1YThmNTgzY2EzZDYzY2NiMjRkMjc1MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcApAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiAoQykgMTk5
OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQogICogKEMpIDIwMDAgRGlyayBNdWVsbGVyICht
dWVsbGVyQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgQW5kcmV3IFdlbGxp
bmd0b24gKHByb3RvbkB3aXJldGFwcGVkLm5ldCkKICAqIENvcHlyaWdodCAoQykgMjAwNiBHcmFo
YW0gRGVubmlzIChncmFoYW0uZGVubmlzQGdtYWlsLmNvbSkKICAqCkBAIC00Nyw2ICs0Nyw3IEBA
CiAjaW5jbHVkZSAiUmVuZGVyQ29tYmluZVRleHQuaCIKICNpbmNsdWRlICJSZW5kZXJJbmxpbmUu
aCIKICNpbmNsdWRlICJSZW5kZXJMYXllci5oIgorI2luY2x1ZGUgIlJlbmRlclRleHRJbmxpbmVz
LmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlJlbmRlcmVkRG9jdW1lbnRN
YXJrZXIuaCIKICNpbmNsdWRlICJTVkdFbGVtZW50VHlwZUhlbHBlcnMuaCIKQEAgLTcxNyw2ICs3
MTgsMTMgQEAgQUxXQVlTX0lOTElORSBmbG9hdCBSZW5kZXJUZXh0Ojp3aWR0aEZyb21DYWNoZShj
b25zdCBGb250Q2FzY2FkZSYgZiwgdW5zaWduZWQgc3QKICAgICByZXR1cm4gZi53aWR0aChydW4s
IGZhbGxiYWNrRm9udHMsIGdseXBoT3ZlcmZsb3cpOwogfQogCitBTFdBWVNfSU5MSU5FIGZsb2F0
IFJlbmRlclRleHQ6OndpZHRoRnJvbUNhY2hlQ29uc2lkZXJpbmdQb3NzaWJsZVRyYWlsaW5nU3Bh
Y2UoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgdW5z
aWduZWQgc3RhcnRJbmRleCwgdW5zaWduZWQgd29yZExlbiwgZmxvYXQgeFBvcywgYm9vbCBjdXJy
ZW50Q2hhcmFjdGVySXNTcGFjZSwgV29yZFRyYWlsaW5nU3BhY2UmIHdvcmRUcmFpbGluZ1NwYWNl
LCBIYXNoU2V0PGNvbnN0IEZvbnQqPiYgZmFsbGJhY2tGb250cywgR2x5cGhPdmVyZmxvdyYgZ2x5
cGhPdmVyZmxvdykgY29uc3QKK3sKKyAgICByZXR1cm4gbWVhc3VyZVRleHRDb25zaWRlcmluZ1Bv
c3NpYmxlVHJhaWxpbmdTcGFjZShjdXJyZW50Q2hhcmFjdGVySXNTcGFjZSwgc3RhcnRJbmRleCwg
d29yZExlbiwgd29yZFRyYWlsaW5nU3BhY2UsIGZhbGxiYWNrRm9udHMsIFsmXSAodW5zaWduZWQg
ZnJvbSwgdW5zaWduZWQgbGVuKSB7CisgICAgICAgIHJldHVybiB3aWR0aEZyb21DYWNoZShmb250
LCBmcm9tLCBsZW4sIHhQb3MsICZmYWxsYmFja0ZvbnRzLCAmZ2x5cGhPdmVyZmxvdywgc3R5bGUp
OworICAgIH0pOworfQorCiBpbmxpbmUgYm9vbCBpc0hhbmdhYmxlUHVuY3R1YXRpb25BdExpbmVT
dGFydChVQ2hhciBjKQogewogICAgIHJldHVybiBVX0dFVF9HQ19NQVNLKGMpICYgKFVfR0NfUFNf
TUFTSyB8IFVfR0NfUElfTUFTSyB8IFVfR0NfUEZfTUFTSyk7CkBAIC05NzMsMTUgKzk4MSw3IEBA
IGZsb2F0IFJlbmRlclRleHQ6Om1heFdvcmRGcmFnbWVudFdpZHRoKGNvbnN0IFJlbmRlclN0eWxl
JiBzdHlsZSwgY29uc3QgRm9udENhc2NhCiAgICAgICAgIHJldHVybiBlbnRpcmVXb3JkV2lkdGg7
CiAgICAgfQogCi0gICAgZmxvYXQgc3VmZml4V2lkdGg7Ci0gICAgc3RkOjpvcHRpb25hbDxmbG9h
dD4gd29yZFRyYWlsaW5nU3BhY2VXaWR0aDsKLSAgICBpZiAoY3VycmVudENoYXJhY3RlcklzU3Bh
Y2UpCi0gICAgICAgIHdvcmRUcmFpbGluZ1NwYWNlV2lkdGggPSB3b3JkVHJhaWxpbmdTcGFjZS53
aWR0aChmYWxsYmFja0ZvbnRzKTsKLSAgICBpZiAod29yZFRyYWlsaW5nU3BhY2VXaWR0aCkKLSAg
ICAgICAgc3VmZml4V2lkdGggPSB3aWR0aEZyb21DYWNoZShmb250LCBjaGFyYWN0ZXJJbmRleCAr
IHN1ZmZpeFN0YXJ0LCB3b3JkLmxlbmd0aCgpIC0gc3VmZml4U3RhcnQgKyAxLCB4UG9zLCAwLCAw
LCBzdHlsZSkgLSB3b3JkVHJhaWxpbmdTcGFjZVdpZHRoLnZhbHVlKCk7Ci0gICAgZWxzZQotICAg
ICAgICBzdWZmaXhXaWR0aCA9IHdpZHRoRnJvbUNhY2hlKGZvbnQsIGNoYXJhY3RlckluZGV4ICsg
c3VmZml4U3RhcnQsIHdvcmQubGVuZ3RoKCkgLSBzdWZmaXhTdGFydCwgeFBvcywgMCwgMCwgc3R5
bGUpOwotCisgICAgYXV0byBzdWZmaXhXaWR0aCA9IHdpZHRoRnJvbUNhY2hlQ29uc2lkZXJpbmdQ
b3NzaWJsZVRyYWlsaW5nU3BhY2Uoc3R5bGUsIGZvbnQsIGNoYXJhY3RlckluZGV4ICsgc3VmZml4
U3RhcnQsIHdvcmQubGVuZ3RoKCkgLSBzdWZmaXhTdGFydCwgeFBvcywgY3VycmVudENoYXJhY3Rl
cklzU3BhY2UsIHdvcmRUcmFpbGluZ1NwYWNlLCBmYWxsYmFja0ZvbnRzLCBnbHlwaE92ZXJmbG93
KTsKICAgICByZXR1cm4gc3RkOjptYXgobWF4RnJhZ21lbnRXaWR0aCwgc3VmZml4V2lkdGgpOwog
fQogCkBAIC0xMTE1LDE3ICsxMTE1LDkgQEAgdm9pZCBSZW5kZXJUZXh0Ojpjb21wdXRlUHJlZmVy
cmVkTG9naWNhbFdpZHRocyhmbG9hdCBsZWFkV2lkdGgsIEhhc2hTZXQ8Y29uc3QgRm8KICAgICAg
ICAgaWYgKHdvcmRMZW4pIHsKICAgICAgICAgICAgIGZsb2F0IGN1cnJNaW5XaWR0aCA9IDA7CiAg
ICAgICAgICAgICBib29sIGlzU3BhY2UgPSAoaiA8IGxlbmd0aCkgJiYgaXNTcGFjZUFjY29yZGlu
Z1RvU3R5bGUoYywgc3R5bGUpOwotICAgICAgICAgICAgZmxvYXQgdzsKLSAgICAgICAgICAgIHN0
ZDo6b3B0aW9uYWw8ZmxvYXQ+IHdvcmRUcmFpbGluZ1NwYWNlV2lkdGg7Ci0gICAgICAgICAgICBp
ZiAoaXNTcGFjZSkKLSAgICAgICAgICAgICAgICB3b3JkVHJhaWxpbmdTcGFjZVdpZHRoID0gd29y
ZFRyYWlsaW5nU3BhY2Uud2lkdGgoZmFsbGJhY2tGb250cyk7Ci0gICAgICAgICAgICBpZiAod29y
ZFRyYWlsaW5nU3BhY2VXaWR0aCkKLSAgICAgICAgICAgICAgICB3ID0gd2lkdGhGcm9tQ2FjaGUo
Zm9udCwgaSwgd29yZExlbiArIDEsIGxlYWRXaWR0aCArIGN1cnJNYXhXaWR0aCwgJmZhbGxiYWNr
Rm9udHMsICZnbHlwaE92ZXJmbG93LCBzdHlsZSkgLSB3b3JkVHJhaWxpbmdTcGFjZVdpZHRoLnZh
bHVlKCk7Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICB3ID0gd2lkdGhGcm9t
Q2FjaGUoZm9udCwgaSwgd29yZExlbiwgbGVhZFdpZHRoICsgY3Vyck1heFdpZHRoLCAmZmFsbGJh
Y2tGb250cywgJmdseXBoT3ZlcmZsb3csIHN0eWxlKTsKLSAgICAgICAgICAgICAgICBpZiAoYyA9
PSBzb2Z0SHlwaGVuICYmIHN0eWxlLmh5cGhlbnMoKSAhPSBIeXBoZW5zOjpOb25lKQotICAgICAg
ICAgICAgICAgICAgICBjdXJyTWluV2lkdGggPSBoeXBoZW5XaWR0aCgqdGhpcywgZm9udCk7Ci0g
ICAgICAgICAgICB9CisgICAgICAgICAgICBmbG9hdCB3ID0gd2lkdGhGcm9tQ2FjaGVDb25zaWRl
cmluZ1Bvc3NpYmxlVHJhaWxpbmdTcGFjZShzdHlsZSwgZm9udCwgaSwgd29yZExlbiwgbGVhZFdp
ZHRoICsgY3Vyck1heFdpZHRoLCBpc1NwYWNlLCB3b3JkVHJhaWxpbmdTcGFjZSwgZmFsbGJhY2tG
b250cywgZ2x5cGhPdmVyZmxvdyk7CisgICAgICAgICAgICBpZiAoYyA9PSBzb2Z0SHlwaGVuICYm
IHN0eWxlLmh5cGhlbnMoKSAhPSBIeXBoZW5zOjpOb25lKQorICAgICAgICAgICAgICAgIGN1cnJN
aW5XaWR0aCA9IGh5cGhlbldpZHRoKCp0aGlzLCBmb250KTsKIAogICAgICAgICAgICAgaWYgKHcg
PiBtYXhXb3JkV2lkdGgpIHsKICAgICAgICAgICAgICAgICBhdXRvIG1heEZyYWdtZW50V2lkdGgg
PSBtYXhXb3JkRnJhZ21lbnRXaWR0aChzdHlsZSwgZm9udCwgU3RyaW5nVmlldyhzdHJpbmcpLnN1
YnN0cmluZyhpLCB3b3JkTGVuKSwgbWluaW11bVByZWZpeExlbmd0aCwgbWluaW11bVN1ZmZpeExl
bmd0aCwgaXNTcGFjZSwgaSwgbGVhZFdpZHRoICsgY3Vyck1heFdpZHRoLCB3LCB3b3JkVHJhaWxp
bmdTcGFjZSwgZmFsbGJhY2tGb250cywgZ2x5cGhPdmVyZmxvdyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRleHQuaAppbmRleCBjZTMwMGQ3MzA0Y2RkODBmNjgwMmEzMDk5YmMwMmVlODcx
M2JlODZiLi5lMWZlYTNiZjQ3Zjk2NTNkMzNkY2RhNWRjM2I0NTgzZDE4YTc4Y2I0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmgKQEAgLTEsNyArMSw3IEBACiAvKgogICogKEMp
IDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAqIChDKSAyMDAwIERpcmsgTXVlbGxl
ciAobXVlbGxlckBrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0xODMsNiAr
MTgzLDkgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFJlbmRlclRleHQqIGZpbmRCeURpc3BsYXlD
b250ZW50c0lubGluZVdyYXBwZXJDYW5kaWRhdGUoUmVuZGVyRWxlbWVudCYpOwogCisgICAgdGVt
cGxhdGUgPHR5cGVuYW1lIE1lYXN1cmVUZXh0Q2FsbGJhY2s+CisgICAgc3RhdGljIGZsb2F0IG1l
YXN1cmVUZXh0Q29uc2lkZXJpbmdQb3NzaWJsZVRyYWlsaW5nU3BhY2UoYm9vbCBjdXJyZW50Q2hh
cmFjdGVySXNTcGFjZSwgdW5zaWduZWQgc3RhcnRJbmRleCwgdW5zaWduZWQgd29yZExlbmd0aCwg
V29yZFRyYWlsaW5nU3BhY2UmLCBIYXNoU2V0PGNvbnN0IEZvbnQqPiYgZmFsbGJhY2tGb250cywg
TWVhc3VyZVRleHRDYWxsYmFjayYmKTsKKwogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBj
b21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocyhmbG9hdCBsZWFkV2lkdGgpOwogICAgIHZvaWQg
d2lsbEJlRGVzdHJveWVkKCkgb3ZlcnJpZGU7CkBAIC0yMjQsNiArMjI3LDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGNvbnRhaW5lcihjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0JiwgYm9vbCYp
IGNvbnN0ID0gZGVsZXRlOyAvLyBVc2UgcGFyZW50KCkgaW5zdGVhZC4KIAogICAgIGZsb2F0IG1h
eFdvcmRGcmFnbWVudFdpZHRoKGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgRm9udENhc2NhZGUm
LCBTdHJpbmdWaWV3IHdvcmQsIHVuc2lnbmVkIG1pbmltdW1QcmVmaXhMZW5ndGgsIHVuc2lnbmVk
IG1pbmltdW1TdWZmaXhMZW5ndGgsIGJvb2wgY3VycmVudENoYXJhY3RlcklzU3BhY2UsIHVuc2ln
bmVkIGNoYXJhY3RlckluZGV4LCBmbG9hdCB4UG9zLCBmbG9hdCBlbnRpcmVXb3JkV2lkdGgsIFdv
cmRUcmFpbGluZ1NwYWNlJiwgSGFzaFNldDxjb25zdCBGb250Kj4mIGZhbGxiYWNrRm9udHMsIEds
eXBoT3ZlcmZsb3cmKTsKKyAgICBmbG9hdCB3aWR0aEZyb21DYWNoZUNvbnNpZGVyaW5nUG9zc2li
bGVUcmFpbGluZ1NwYWNlKGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgRm9udENhc2NhZGUmLCB1
bnNpZ25lZCBzdGFydEluZGV4LCB1bnNpZ25lZCB3b3JkTGVuLCBmbG9hdCB4UG9zLCBib29sIGN1
cnJlbnRDaGFyYWN0ZXJJc1NwYWNlLCBXb3JkVHJhaWxpbmdTcGFjZSYsIEhhc2hTZXQ8Y29uc3Qg
Rm9udCo+JiBmYWxsYmFja0ZvbnRzLCBHbHlwaE92ZXJmbG93JikgY29uc3Q7CiAKICAgICAvLyBX
ZSBwdXQgdGhlIGJpdGZpZWxkIGZpcnN0IHRvIG1pbmltaXplIHBhZGRpbmcgb24gNjQtYml0Lgog
ICAgIHVuc2lnbmVkIG1faGFzQnJlYWthYmxlQ2hhciA6IDE7IC8vIFdoZXRoZXIgb3Igbm90IHdl
IGNhbiBiZSBicm9rZW4gaW50byBtdWx0aXBsZSBsaW5lcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0SW5saW5lcy5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRleHRJbmxpbmVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWIxNzU4ZmYzMDA5MmZiOWFm
NjhiZTQ1NThkMmQ4M2Q1ZDFjYzc1NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUZXh0SW5saW5lcy5oCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
CisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpbmNsdWRlICJSZW5kZXJUZXh0LmgiCisjaW5jbHVkZSAiV29yZFRyYWls
aW5nU3BhY2UuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
TWVhc3VyZVRleHRDYWxsYmFjaz4KK2Zsb2F0IFJlbmRlclRleHQ6Om1lYXN1cmVUZXh0Q29uc2lk
ZXJpbmdQb3NzaWJsZVRyYWlsaW5nU3BhY2UoYm9vbCBjdXJyZW50Q2hhcmFjdGVySXNTcGFjZSwg
dW5zaWduZWQgc3RhcnRJbmRleCwgdW5zaWduZWQgd29yZExlbmd0aCwgV29yZFRyYWlsaW5nU3Bh
Y2UmIHdvcmRUcmFpbGluZ1NwYWNlLCBIYXNoU2V0PGNvbnN0IEZvbnQqPiYgZmFsbGJhY2tGb250
cywgTWVhc3VyZVRleHRDYWxsYmFjayYmIGNhbGxiYWNrKQoreworICAgIHN0ZDo6b3B0aW9uYWw8
ZmxvYXQ+IHdvcmRUcmFpbGluZ1NwYWNlV2lkdGg7CisgICAgaWYgKGN1cnJlbnRDaGFyYWN0ZXJJ
c1NwYWNlKQorICAgICAgICB3b3JkVHJhaWxpbmdTcGFjZVdpZHRoID0gd29yZFRyYWlsaW5nU3Bh
Y2Uud2lkdGgoZmFsbGJhY2tGb250cyk7CisgICAgaWYgKHdvcmRUcmFpbGluZ1NwYWNlV2lkdGgp
CisgICAgICAgIHJldHVybiBjYWxsYmFjayhzdGFydEluZGV4LCB3b3JkTGVuZ3RoICsgMSkgLSB3
b3JkVHJhaWxpbmdTcGFjZVdpZHRoLnZhbHVlKCk7CisgICAgcmV0dXJuIGNhbGxiYWNrKHN0YXJ0
SW5kZXgsIHdvcmRMZW5ndGgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9CcmVha2luZ0NvbnRleHQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0JyZWFraW5nQ29udGV4dC5oCmluZGV4IDNkOWZm
OTk1YmJjMzc0NDdmY2E4NzIwNWRhOTE3NTlmN2E2Mjk1OTUuLmIwMDdjYjhmMjlkNzVmYmFhZjJj
ODIzNDgwM2IxMTYxNTE4MWY5NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9saW5lL0JyZWFraW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9s
aW5lL0JyZWFraW5nQ29udGV4dC5oCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAo
QykgMjAwMCBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDAz
LCAyMDA0LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDExIEFwcGxlIEluYy4gQWxs
IHJpZ2h0IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHQgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMyBDaGFuZ1Nlb2sgT2ggPHNo
aXZhbWlkb3dAZ21haWwuY29tPgogICogQ29weXJpZ2h0IChDKSAyMDEzIEFkb2JlIFN5c3RlbXMg
SW5jLiBBbGwgcmlnaHQgcmVzZXJ2ZWQuCkBAIC0zOCw3ICszOCw5IEBACiAjaW5jbHVkZSAiUmVu
ZGVyTGlzdE1hcmtlci5oIgogI2luY2x1ZGUgIlJlbmRlclJ1YnlSdW4uaCIKICNpbmNsdWRlICJS
ZW5kZXJTVkdJbmxpbmVUZXh0LmgiCisjaW5jbHVkZSAiUmVuZGVyVGV4dElubGluZXMuaCIKICNp
bmNsdWRlICJUcmFpbGluZ09iamVjdHMuaCIKKyNpbmNsdWRlICJXb3JkVHJhaWxpbmdTcGFjZS5o
IgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1Zp
ZXcuaD4KICNpbmNsdWRlIDx3dGYvdW5pY29kZS9DaGFyYWN0ZXJOYW1lcy5oPgpAQCAtNjQsMzIg
KzY2LDYgQEAgc3RydWN0IFdvcmRNZWFzdXJlbWVudCB7CiAgICAgSGFzaFNldDxjb25zdCBGb250
Kj4gZmFsbGJhY2tGb250czsKIH07CiAKLXN0cnVjdCBXb3JkVHJhaWxpbmdTcGFjZSB7Ci0gICAg
V29yZFRyYWlsaW5nU3BhY2UoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBib29sIG1lYXN1cmlu
Z1dpdGhUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkID0gdHJ1ZSkKLSAgICAgICAgOiBtX3N0eWxl
KHN0eWxlKQotICAgIHsKLSAgICAgICAgaWYgKCFtZWFzdXJpbmdXaXRoVHJhaWxpbmdXaGl0ZXNw
YWNlRW5hYmxlZCB8fCAhbV9zdHlsZS5mb250Q2FzY2FkZSgpLmVuYWJsZUtlcm5pbmcoKSkKLSAg
ICAgICAgICAgIG1fc3RhdGUgPSBXb3JkVHJhaWxpbmdTcGFjZVN0YXRlOjpJbml0aWFsaXplZDsK
LSAgICB9Ci0KLSAgICBzdGQ6Om9wdGlvbmFsPGZsb2F0PiB3aWR0aChIYXNoU2V0PGNvbnN0IEZv
bnQqPiYgZmFsbGJhY2tGb250cykKLSAgICB7Ci0gICAgICAgIGlmIChtX3N0YXRlID09IFdvcmRU
cmFpbGluZ1NwYWNlU3RhdGU6OkluaXRpYWxpemVkKQotICAgICAgICAgICAgcmV0dXJuIG1fd2lk
dGg7Ci0KLSAgICAgICAgYXV0byYgZm9udCA9IG1fc3R5bGUuZm9udENhc2NhZGUoKTsKLSAgICAg
ICAgbV93aWR0aCA9IGZvbnQud2lkdGgoUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4oJnNw
YWNlLCAxLCBtX3N0eWxlKSwgJmZhbGxiYWNrRm9udHMpICsgZm9udC53b3JkU3BhY2luZygpOwot
ICAgICAgICBtX3N0YXRlID0gV29yZFRyYWlsaW5nU3BhY2VTdGF0ZTo6SW5pdGlhbGl6ZWQ7Ci0g
ICAgICAgIHJldHVybiBtX3dpZHRoOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBlbnVtIGNsYXNz
IFdvcmRUcmFpbGluZ1NwYWNlU3RhdGUgeyBVbmluaXRpYWxpemVkLCBJbml0aWFsaXplZCB9Owot
ICAgIGNvbnN0IFJlbmRlclN0eWxlJiBtX3N0eWxlOwotICAgIFdvcmRUcmFpbGluZ1NwYWNlU3Rh
dGUgbV9zdGF0ZSB7IFdvcmRUcmFpbGluZ1NwYWNlU3RhdGU6OlVuaW5pdGlhbGl6ZWQgfTsKLSAg
ICBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBtX3dpZHRoOwotfTsKLQogY2xhc3MgQnJlYWtpbmdDb250
ZXh0IHsKIHB1YmxpYzoKICAgICBCcmVha2luZ0NvbnRleHQoTGluZUJyZWFrZXImIGxpbmVCcmVh
a2VyLCBJbmxpbmVCaWRpUmVzb2x2ZXImIHJlc29sdmVyLCBMaW5lSW5mbyYgaW5MaW5lSW5mbywg
TGluZVdpZHRoJiBsaW5lV2lkdGgsIFJlbmRlclRleHRJbmZvJiBpblJlbmRlclRleHRJbmZvLCBG
bG9hdGluZ09iamVjdCogaW5MYXN0RmxvYXRGcm9tUHJldmlvdXNMaW5lLCBib29sIGFwcGxpZWRT
dGFydFdpZHRoLCBSZW5kZXJCbG9ja0Zsb3cmIGJsb2NrKQpAQCAtMTUxLDYgKzEyNyw3IEBAIHB1
YmxpYzoKICAgICBMZWdhY3lJbmxpbmVJdGVyYXRvciBoYW5kbGVFbmRPZkxpbmUoKTsKICAgICAK
ICAgICBmbG9hdCBjb21wdXRlQWRkaXRpb25hbEJldHdlZW5Xb3Jkc1dpZHRoKFJlbmRlclRleHQm
LCBUZXh0TGF5b3V0KiwgVUNoYXIsIFdvcmRUcmFpbGluZ1NwYWNlJiwgSGFzaFNldDxjb25zdCBG
b250Kj4mIGZhbGxiYWNrRm9udHMsIFdvcmRNZWFzdXJlbWVudHMmLCBjb25zdCBGb250Q2FzY2Fk
ZSYsIGJvb2wgaXNGaXhlZFBpdGNoLCB1bnNpZ25lZCBsYXN0U3BhY2UsIGZsb2F0IGxhc3RTcGFj
ZVdvcmRTcGFjaW5nLCBmbG9hdCB3b3JkU3BhY2luZ0ZvcldvcmRNZWFzdXJlbWVudCwgdW5zaWdu
ZWQgb2Zmc2V0KTsKKyAgICBmbG9hdCB0ZXh0V2lkdGhDb25zaWRlcmluZ1Bvc3NpYmxlVHJhaWxp
bmdTcGFjZShSZW5kZXJUZXh0JiwgVGV4dExheW91dCosIFVDaGFyIGN1cnJlbnRDaGFyYWN0ZXIs
IFdvcmRUcmFpbGluZ1NwYWNlJiwgSGFzaFNldDxjb25zdCBGb250Kj4mIGZhbGxiYWNrRm9udHMs
IEhhc2hTZXQ8Y29uc3QgRm9udCo+JiB3b3JkTWVhc3VyZW1lbnRGYWxsYmFja0ZvbnRzLCBjb25z
dCBGb250Q2FzY2FkZSYsIGJvb2wgaXNGaXhlZFBpdGNoLCB1bnNpZ25lZCBsYXN0U3BhY2UsIHVu
c2lnbmVkIG9mZnNldCk7CiAKICAgICB2b2lkIGNsZWFyTGluZUJyZWFrSWZGaXRzT25MaW5lKGJv
b2wgaWdub3JpbmdUcmFpbGluZ1NwYWNlID0gZmFsc2UpCiAgICAgewpAQCAtNjMxLDYgKzYwOCwx
MyBAQCBpbmxpbmUgdm9pZCB0cnlIeXBoZW5hdGluZyhSZW5kZXJUZXh0JiB0ZXh0LCBjb25zdCBG
b250Q2FzY2FkZSYgZm9udCwgY29uc3QgQXRvbQogICAgIGh5cGhlbmF0ZWQgPSB0cnVlOwogfQog
CitpbmxpbmUgZmxvYXQgQnJlYWtpbmdDb250ZXh0Ojp0ZXh0V2lkdGhDb25zaWRlcmluZ1Bvc3Np
YmxlVHJhaWxpbmdTcGFjZShSZW5kZXJUZXh0JiByZW5kZXJUZXh0LCBUZXh0TGF5b3V0KiB0ZXh0
TGF5b3V0LCBVQ2hhciBjdXJyZW50Q2hhcmFjdGVyLCBXb3JkVHJhaWxpbmdTcGFjZSYgd29yZFRy
YWlsaW5nU3BhY2UsIEhhc2hTZXQ8Y29uc3QgRm9udCo+JiBmYWxsYmFja0ZvbnRzLCBIYXNoU2V0
PGNvbnN0IEZvbnQqPiYgd29yZE1lYXN1cmVtZW50RmFsbGJhY2tGb250cywgY29uc3QgRm9udENh
c2NhZGUmIGZvbnQsIGJvb2wgaXNGaXhlZFBpdGNoLCB1bnNpZ25lZCBsYXN0U3BhY2UsIHVuc2ln
bmVkIG9mZnNldCkKK3sKKyAgICByZXR1cm4gUmVuZGVyVGV4dDo6bWVhc3VyZVRleHRDb25zaWRl
cmluZ1Bvc3NpYmxlVHJhaWxpbmdTcGFjZShjdXJyZW50Q2hhcmFjdGVyID09IHNwYWNlLCBsYXN0
U3BhY2UsIG9mZnNldCAtIGxhc3RTcGFjZSwgd29yZFRyYWlsaW5nU3BhY2UsIGZhbGxiYWNrRm9u
dHMsIFsmXSAodW5zaWduZWQgZnJvbSwgdW5zaWduZWQgbGVuKSB7CisgICAgICAgIHJldHVybiB0
ZXh0V2lkdGgocmVuZGVyVGV4dCwgZnJvbSwgbGVuLCBmb250LCBtX3dpZHRoLmN1cnJlbnRXaWR0
aCgpLCBpc0ZpeGVkUGl0Y2gsIG1fY29sbGFwc2VXaGl0ZVNwYWNlLCB3b3JkTWVhc3VyZW1lbnRG
YWxsYmFja0ZvbnRzLCB0ZXh0TGF5b3V0KTsKKyAgICB9KTsKK30KKwogaW5saW5lIGZsb2F0IEJy
ZWFraW5nQ29udGV4dDo6Y29tcHV0ZUFkZGl0aW9uYWxCZXR3ZWVuV29yZHNXaWR0aChSZW5kZXJU
ZXh0JiByZW5kZXJUZXh0LCBUZXh0TGF5b3V0KiB0ZXh0TGF5b3V0LCBVQ2hhciBjdXJyZW50Q2hh
cmFjdGVyLCBXb3JkVHJhaWxpbmdTcGFjZSYgd29yZFRyYWlsaW5nU3BhY2UsIEhhc2hTZXQ8Y29u
c3QgRm9udCo+JiBmYWxsYmFja0ZvbnRzLCBXb3JkTWVhc3VyZW1lbnRzJiB3b3JkTWVhc3VyZW1l
bnRzLCBjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgYm9vbCBpc0ZpeGVkUGl0Y2gsIHVuc2lnbmVk
IGxhc3RTcGFjZSwgZmxvYXQgbGFzdFNwYWNlV29yZFNwYWNpbmcsIGZsb2F0IHdvcmRTcGFjaW5n
Rm9yV29yZE1lYXN1cmVtZW50LCB1bnNpZ25lZCBvZmZzZXQpCiB7CiAgICAgd29yZE1lYXN1cmVt
ZW50cy5ncm93KHdvcmRNZWFzdXJlbWVudHMuc2l6ZSgpICsgMSk7CkBAIC02NDAsMTQgKzYyNCw3
IEBAIGlubGluZSBmbG9hdCBCcmVha2luZ0NvbnRleHQ6OmNvbXB1dGVBZGRpdGlvbmFsQmV0d2Vl
bldvcmRzV2lkdGgoUmVuZGVyVGV4dCYgcmVuCiAgICAgd29yZE1lYXN1cmVtZW50LmVuZE9mZnNl
dCA9IG9mZnNldDsKICAgICB3b3JkTWVhc3VyZW1lbnQuc3RhcnRPZmZzZXQgPSBsYXN0U3BhY2U7
CiAgICAgCi0gICAgZmxvYXQgYWRkaXRpb25hbFRlbXBXaWR0aCA9IDA7Ci0gICAgc3RkOjpvcHRp
b25hbDxmbG9hdD4gd29yZFRyYWlsaW5nU3BhY2VXaWR0aDsKLSAgICBpZiAoY3VycmVudENoYXJh
Y3RlciA9PSAnICcpCi0gICAgICAgIHdvcmRUcmFpbGluZ1NwYWNlV2lkdGggPSB3b3JkVHJhaWxp
bmdTcGFjZS53aWR0aChmYWxsYmFja0ZvbnRzKTsKLSAgICBpZiAod29yZFRyYWlsaW5nU3BhY2VX
aWR0aCkKLSAgICAgICAgYWRkaXRpb25hbFRlbXBXaWR0aCA9IHRleHRXaWR0aChyZW5kZXJUZXh0
LCBsYXN0U3BhY2UsIG9mZnNldCArIDEgLSBsYXN0U3BhY2UsIGZvbnQsIG1fd2lkdGguY3VycmVu
dFdpZHRoKCksIGlzRml4ZWRQaXRjaCwgbV9jb2xsYXBzZVdoaXRlU3BhY2UsIHdvcmRNZWFzdXJl
bWVudC5mYWxsYmFja0ZvbnRzLCB0ZXh0TGF5b3V0KSAtIHdvcmRUcmFpbGluZ1NwYWNlV2lkdGgu
dmFsdWUoKTsKLSAgICBlbHNlCi0gICAgICAgIGFkZGl0aW9uYWxUZW1wV2lkdGggPSB0ZXh0V2lk
dGgocmVuZGVyVGV4dCwgbGFzdFNwYWNlLCBvZmZzZXQgLSBsYXN0U3BhY2UsIGZvbnQsIG1fd2lk
dGguY3VycmVudFdpZHRoKCksIGlzRml4ZWRQaXRjaCwgbV9jb2xsYXBzZVdoaXRlU3BhY2UsIHdv
cmRNZWFzdXJlbWVudC5mYWxsYmFja0ZvbnRzLCB0ZXh0TGF5b3V0KTsKKyAgICBmbG9hdCBhZGRp
dGlvbmFsVGVtcFdpZHRoID0gdGV4dFdpZHRoQ29uc2lkZXJpbmdQb3NzaWJsZVRyYWlsaW5nU3Bh
Y2UocmVuZGVyVGV4dCwgdGV4dExheW91dCwgY3VycmVudENoYXJhY3Rlciwgd29yZFRyYWlsaW5n
U3BhY2UsIGZhbGxiYWNrRm9udHMsIHdvcmRNZWFzdXJlbWVudC5mYWxsYmFja0ZvbnRzLCBmb250
LCBpc0ZpeGVkUGl0Y2gsIGxhc3RTcGFjZSwgb2Zmc2V0KTsKICAgICAKICAgICBpZiAod29yZE1l
YXN1cmVtZW50LmZhbGxiYWNrRm9udHMuaXNFbXB0eSgpICYmICFmYWxsYmFja0ZvbnRzLmlzRW1w
dHkoKSkKICAgICAgICAgd29yZE1lYXN1cmVtZW50LmZhbGxiYWNrRm9udHMuc3dhcChmYWxsYmFj
a0ZvbnRzKTsKQEAgLTEyNTIsNCArMTIyOSw0IEBAIGlubGluZSBMZWdhY3lJbmxpbmVJdGVyYXRv
ciBCcmVha2luZ0NvbnRleHQ6OmhhbmRsZUVuZE9mTGluZSgpCiAgICAgcmV0dXJuIG1fbGluZUJy
ZWFrOwogfQogCi19Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvbGluZS9Xb3JkVHJhaWxpbmdTcGFjZS5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL2xpbmUvV29yZFRyYWlsaW5nU3BhY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMWZiYzM0
MGI2MzUzYTQ1MGY1NGFlNmJkMmJlMTMzMzkzZDkzNjYxCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvV29yZFRyYWlsaW5nU3BhY2UuaApAQCAtMCwwICsx
LDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDAwIExhcnMgS25vbGwgKGtub2xsQGtkZS5v
cmcpCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodCByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzIENoYW5nU2VvayBPaCA8c2hpdmFtaWRvd0BnbWFp
bC5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQWRvYmUgU3lzdGVtcyBJbmMuIEFsbCByaWdo
dCByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgor
ICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAq
IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBu
b3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBV
U0EuCisgKgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiRm9udENhc2NhZGUuaCIK
KyNpbmNsdWRlICJSZW5kZXJCbG9jay5oIgorI2luY2x1ZGUgIlJlbmRlclN0eWxlLmgiCisjaW5j
bHVkZSA8b3B0aW9uYWw+CisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitzdHJ1Y3QgV29yZFRyYWlsaW5nU3BhY2UgeworICAgIFdvcmRUcmFpbGluZ1Nw
YWNlKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgYm9vbCBtZWFzdXJpbmdXaXRoVHJhaWxpbmdX
aGl0ZXNwYWNlRW5hYmxlZCA9IHRydWUpCisgICAgICAgIDogbV9zdHlsZShzdHlsZSkKKyAgICB7
CisgICAgICAgIGlmICghbWVhc3VyaW5nV2l0aFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQgfHwg
IW1fc3R5bGUuZm9udENhc2NhZGUoKS5lbmFibGVLZXJuaW5nKCkpCisgICAgICAgICAgICBtX3N0
YXRlID0gV29yZFRyYWlsaW5nU3BhY2VTdGF0ZTo6SW5pdGlhbGl6ZWQ7CisgICAgfQorCisgICAg
c3RkOjpvcHRpb25hbDxmbG9hdD4gd2lkdGgoSGFzaFNldDxjb25zdCBGb250Kj4mIGZhbGxiYWNr
Rm9udHMpCisgICAgeworICAgICAgICBpZiAobV9zdGF0ZSA9PSBXb3JkVHJhaWxpbmdTcGFjZVN0
YXRlOjpJbml0aWFsaXplZCkKKyAgICAgICAgICAgIHJldHVybiBtX3dpZHRoOworCisgICAgICAg
IGF1dG8mIGZvbnQgPSBtX3N0eWxlLmZvbnRDYXNjYWRlKCk7CisgICAgICAgIG1fd2lkdGggPSBm
b250LndpZHRoKFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKCZzcGFjZSwgMSwgbV9zdHls
ZSksICZmYWxsYmFja0ZvbnRzKSArIGZvbnQud29yZFNwYWNpbmcoKTsKKyAgICAgICAgbV9zdGF0
ZSA9IFdvcmRUcmFpbGluZ1NwYWNlU3RhdGU6OkluaXRpYWxpemVkOworICAgICAgICByZXR1cm4g
bV93aWR0aDsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgZW51bSBjbGFzcyBXb3JkVHJhaWxpbmdT
cGFjZVN0YXRlIHsgVW5pbml0aWFsaXplZCwgSW5pdGlhbGl6ZWQgfTsKKyAgICBjb25zdCBSZW5k
ZXJTdHlsZSYgbV9zdHlsZTsKKyAgICBXb3JkVHJhaWxpbmdTcGFjZVN0YXRlIG1fc3RhdGUgeyBX
b3JkVHJhaWxpbmdTcGFjZVN0YXRlOjpVbmluaXRpYWxpemVkIH07CisgICAgc3RkOjpvcHRpb25h
bDxmbG9hdD4gbV93aWR0aDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
      

    </bug>

</bugzilla>