<?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>121527</bug_id>
          
          <creation_ts>2013-09-17 16:37:32 -0700</creation_ts>
          <short_desc>Replace use of OwnArrayPtr&lt;Foo&gt; with std::unique_ptr&lt;Foo[]&gt; in WebCore</short_desc>
          <delta_ts>2013-09-17 17:14:04 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>philn</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>930441</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-09-17 16:37:32 -0700</bug_when>
    <thetext>Replace use of OwnArrayPtr&lt;Foo&gt; with std::unique_ptr&lt;Foo[]&gt; in WebCore</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>930446</commentid>
    <comment_count>1</comment_count>
      <attachid>211955</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-09-17 16:43:11 -0700</bug_when>
    <thetext>Created attachment 211955
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>930448</commentid>
    <comment_count>2</comment_count>
      <attachid>211955</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-09-17 16:49:42 -0700</bug_when>
    <thetext>Comment on attachment 211955
Patch

Attachment 211955 did not pass qt-ews (qt):
Output: http://webkit-queues.appspot.com/results/1831091</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>930450</commentid>
    <comment_count>3</comment_count>
      <attachid>211955</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-09-17 16:50:14 -0700</bug_when>
    <thetext>Comment on attachment 211955
Patch

Attachment 211955 did not pass qt-wk2-ews (qt-wk2):
Output: http://webkit-queues.appspot.com/results/1833193</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>930451</commentid>
    <comment_count>4</comment_count>
      <attachid>211957</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-09-17 16:54:23 -0700</bug_when>
    <thetext>Created attachment 211957
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>930460</commentid>
    <comment_count>5</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-09-17 17:14:04 -0700</bug_when>
    <thetext>Committed r156015: &lt;http://trac.webkit.org/changeset/156015&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>211955</attachid>
            <date>2013-09-17 16:43:11 -0700</date>
            <delta_ts>2013-09-17 16:54:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-121527-20130917164310.patch</filename>
            <type>text/plain</type>
            <size>42947</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NjAxMykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDgxIEBACisyMDEzLTA5LTE3ICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVwbGFjZSB1c2Ugb2YgT3duQXJyYXlQ
dHI8Rm9vPiB3aXRoIHN0ZDo6dW5pcXVlX3B0cjxGb29bXT4gaW4gV2ViQ29yZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIxNTI3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1ZmZl
clNvdXJjZU5vZGU6OnNldEJ1ZmZlcik6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0J1ZmZlclNvdXJjZU5vZGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0
b3JOb2RlLmg6CisgICAgICAgICogY3NzL0NTU1BhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NQYXJzZXI6OnNldHVwUGFyc2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6
Y3VycmVudENoYXJhY3RlcjE2KToKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmg6CisgICAgICAg
ICogaHRtbC9IVE1MQXJlYUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxGcmFtZVNldEVs
ZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojpjb3B5VGV4U3ViSW1h
Z2UyRCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnNpbXVsYXRl
VmVydGV4QXR0cmliMCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OkxSVUltYWdlQnVmZmVyQ2FjaGU6OkxSVUltYWdlQnVmZmVyQ2FjaGUpOgorICAgICAgICAqIGh0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oOgorICAgICAgICAqIHBsYXRmb3JtL1Nj
cm9sbEFuaW1hdG9yTm9uZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vRHluYW1pY3ND
b21wcmVzc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkR5bmFtaWNzQ29tcHJlc3Nvcjo6c2V0
TnVtYmVyT2ZDaGFubmVscyk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21w
cmVzc29yLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vRkZURnJhbWUuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvRkZURnJhbWVHU3RyZWFtZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RkZURnJhbWU6OkZGVEZyYW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwv
U2Nyb2xsYmFyRWZsLmNwcDoKKyAgICAgICAgKFNjcm9sbGJhckVmbDo6dXBkYXRlVGh1bWJQb3Np
dGlvbkFuZFByb3BvcnRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0FOR0xFV2Vi
S2l0QnJpZGdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFOR0xFV2ViS2l0QnJpZGdlOjpjb21w
aWxlU2hhZGVyU291cmNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQzRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dGV4SW1h
Z2UyRFJlc291cmNlU2FmZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0M0QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQz
RFByaXZhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRl
OjpwYWludFRvVGV4dHVyZU1hcHBlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYmxh
Y2tiZXJyeS9MYXllclRleHR1cmUuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nh
L3dpbi9DQUNGTGF5ZXJUcmVlSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXREaXJ0eVJl
Y3RzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHQzRENH
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpJbWFnZUV4dHJhY3Rv
cjo6ZXh0cmFjdEltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGlj
c0NvbnRleHRDRy5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZm
ZXJDRy5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RleHR1cmUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZTo6dXBkYXRlU3ViUmVjdCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovSGFyZkJ1enpTaGFwZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SGFyZkJ1enpTaGFwZXI6OkhhcmZCdXp6U2hhcGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkhhcmZCdXp6U2hhcGVyOjpzZXROb3JtYWxpemVkQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9oYXJmYnV6ei9IYXJmQnV6elNoYXBlci5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9D
YW52YXMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNvbXBpbGVTaGFk
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldEFjdGl2ZUF0dHJp
Yik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0QWN0aXZlVW5pZm9y
bSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0UHJvZ3JhbUluZm9M
b2cpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldFNoYWRlckluZm9M
b2cpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlU2FuaXRp
emVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
ckdMLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9TaGFyZWRCaXRtYXAu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQml0bWFwOjpTaGFyZWRCaXRtYXApOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhcmVkQml0bWFwOjp0bzE2Yml0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy93aW5jZS9TaGFyZWRCaXRtYXAuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9ibGFja2JlcnJ5L0pQRUdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VSZWFkZXI6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQTkdJbWFn
ZVJlYWRlcjo6Y3JlYXRlUm93QnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vQ29udGV4
dE1lbnVXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnU6OmdldENvbnRleHRN
ZW51SXRlbXMpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9Mb2dnaW5nV2luLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmxvZ0xldmVsU3RyaW5nKToKKyAgICAgICAgKiBwbHVnaW5zL1BsdWdpblBh
Y2thZ2UuY3BwOgorICAgICAgICAqIHBsdWdpbnMvYmxhY2tiZXJyeS9QbHVnaW5WaWV3QmxhY2tC
ZXJyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3OjpoYW5kbGVUb3VjaEV2ZW50
KToKKyAgICAgICAgKiBwbHVnaW5zL3dpbi9QbHVnaW5QYWNrYWdlV2luLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlBsdWdpblBhY2thZ2U6OmZldGNoSW5mbyk6CisKIDIwMTMtMDktMTcgIFNhbXVl
bCBXaGl0ZSAgPHNhbXVlbF93aGl0ZUBhcHBsZS5jb20+CiAKICAgICAgICAgQVg6IE1hYyBBWEFS
SUFCdXN5IHNob3VsZCBiZSBBWEVsZW1lbnRCdXN5IChub3QgQVJJQSBzcGVjaWZpYykKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVm
ZmVyU291cmNlTm9kZS5jcHAJKHJldmlzaW9uIDE1NTk5OSkKKysrIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDx3dGYvTWFp
blRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL1N0
ZExpYkV4dHJhcy5oPgogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCkBAIC0zNTUsOCArMzU2LDgg
QEAgYm9vbCBBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OnNldEJ1ZmZlcihBdQogCiAgICAgICAgIG91
dHB1dCgwKS0+c2V0TnVtYmVyT2ZDaGFubmVscyhudW1iZXJPZkNoYW5uZWxzKTsKIAotICAgICAg
ICBtX3NvdXJjZUNoYW5uZWxzID0gYWRvcHRBcnJheVB0cihuZXcgY29uc3QgZmxvYXQqIFtudW1i
ZXJPZkNoYW5uZWxzXSk7Ci0gICAgICAgIG1fZGVzdGluYXRpb25DaGFubmVscyA9IGFkb3B0QXJy
YXlQdHIobmV3IGZsb2F0KiBbbnVtYmVyT2ZDaGFubmVsc10pOworICAgICAgICBtX3NvdXJjZUNo
YW5uZWxzID0gc3RkOjptYWtlX3VuaXF1ZTxjb25zdCBmbG9hdCpbXT4obnVtYmVyT2ZDaGFubmVs
cyk7CisgICAgICAgIG1fZGVzdGluYXRpb25DaGFubmVscyA9IHN0ZDo6bWFrZV91bmlxdWU8Zmxv
YXQqW10+KG51bWJlck9mQ2hhbm5lbHMpOwogCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBudW1iZXJPZkNoYW5uZWxzOyArK2kpIAogICAgICAgICAgICAgbV9zb3VyY2VDaGFubmVs
c1tpXSA9IGJ1ZmZlci0+Z2V0Q2hhbm5lbERhdGEoaSktPmRhdGEoKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5v
ZGUuaAkocmV2aXNpb24gMTU1OTk5KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBA
QAogI2luY2x1ZGUgIkF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5oIgogI2luY2x1ZGUgIkV4Y2Vw
dGlvbkNvZGUuaCIKICNpbmNsdWRlICJQYW5uZXJOb2RlLmgiCi0jaW5jbHVkZSA8d3RmL093bkFy
cmF5UHRyLmg+CisjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KQEAg
LTExNSw4ICsxMTUsOCBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxBdWRpb0J1ZmZlcj4gbV9idWZm
ZXI7CiAKICAgICAvLyBQb2ludGVycyBmb3IgdGhlIGJ1ZmZlciBhbmQgZGVzdGluYXRpb24uCi0g
ICAgT3duQXJyYXlQdHI8Y29uc3QgZmxvYXQqPiBtX3NvdXJjZUNoYW5uZWxzOwotICAgIE93bkFy
cmF5UHRyPGZsb2F0Kj4gbV9kZXN0aW5hdGlvbkNoYW5uZWxzOworICAgIHN0ZDo6dW5pcXVlX3B0
cjxjb25zdCBmbG9hdCpbXT4gbV9zb3VyY2VDaGFubmVsczsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
ZmxvYXQqW10+IG1fZGVzdGluYXRpb25DaGFubmVsczsKIAogICAgIC8vIFVzZWQgZm9yIHRoZSAi
Z2FpbiIgYW5kICJwbGF5YmFja1JhdGUiIGF0dHJpYnV0ZXMuCiAgICAgUmVmUHRyPEF1ZGlvUGFy
YW0+IG1fZ2FpbjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxs
YXRvck5vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L09zY2lsbGF0b3JOb2RlLmgJKHJldmlzaW9uIDE1NTk5OSkKKysrIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyAr
MjgsNiBAQAogI2luY2x1ZGUgIkF1ZGlvQnVzLmgiCiAjaW5jbHVkZSAiQXVkaW9QYXJhbS5oIgog
I2luY2x1ZGUgIkF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5oIgotI2luY2x1ZGUgPHd0Zi9Pd25B
cnJheVB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
ZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
YXJzZXIuY3BwCShyZXZpc2lvbiAxNTU5OTkpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFy
c2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODksNiArODksNyBAQAogI2luY2x1ZGUgPGxpbWl0
cy5oPgogI2luY2x1ZGUgPHd0Zi9CaXRBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9IZXhOdW1iZXIu
aD4KKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL2R0b2EuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWZmZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdCdWlsZGVyLmg+CkBAIC00MDYsNyArNDA3LDcgQEAgdm9pZCBDU1NQYXJzZXI6OnNldHVw
UGFyc2VyKGNvbnN0IGNoYXIqIAogICAgIG1fbGVuZ3RoID0gbGVuZ3RoOwogCiAgICAgaWYgKCFz
dHJpbmdMZW5ndGggfHwgc3RyaW5nLmlzOEJpdCgpKSB7Ci0gICAgICAgIG1fZGF0YVN0YXJ0OCA9
IGFkb3B0QXJyYXlQdHIobmV3IExDaGFyW2xlbmd0aF0pOworICAgICAgICBtX2RhdGFTdGFydDgg
PSBzdGQ6Om1ha2VfdW5pcXVlPExDaGFyW10+KGxlbmd0aCk7CiAgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBtX3BhcnNlZFRleHRQcmVmaXhMZW5ndGg7IGkrKykKICAgICAgICAgICAg
IG1fZGF0YVN0YXJ0OFtpXSA9IHByZWZpeFtpXTsKIApAQCAtNDI4LDcgKzQyOSw3IEBAIHZvaWQg
Q1NTUGFyc2VyOjpzZXR1cFBhcnNlcihjb25zdCBjaGFyKiAKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIG1fZGF0YVN0YXJ0MTYgPSBhZG9wdEFycmF5UHRyKG5ldyBVQ2hhcltsZW5ndGhd
KTsKKyAgICBtX2RhdGFTdGFydDE2ID0gbWFrZV91bmlxdWU8VUNoYXJbXT4obGVuZ3RoKTsKICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9wYXJzZWRUZXh0UHJlZml4TGVuZ3RoOyBpKysp
CiAgICAgICAgIG1fZGF0YVN0YXJ0MTZbaV0gPSBwcmVmaXhbaV07CiAKQEAgLTEwMTgzLDcgKzEw
MTg0LDcgQEAgaW5saW5lIFVDaGFyKiYgQ1NTUGFyc2VyOjpjdXJyZW50Q2hhcmFjdAogVUNoYXIq
JiBDU1NQYXJzZXI6OmN1cnJlbnRDaGFyYWN0ZXIxNigpCiB7CiAgICAgaWYgKCFtX2N1cnJlbnRD
aGFyYWN0ZXIxNikgewotICAgICAgICBtX2RhdGFTdGFydDE2ID0gYWRvcHRBcnJheVB0cihuZXcg
VUNoYXJbbV9sZW5ndGhdKTsKKyAgICAgICAgbV9kYXRhU3RhcnQxNiA9IG1ha2VfdW5pcXVlPFVD
aGFyW10+KG1fbGVuZ3RoKTsKICAgICAgICAgbV9jdXJyZW50Q2hhcmFjdGVyMTYgPSBtX2RhdGFT
dGFydDE2LmdldCgpOwogICAgIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaAkocmV2aXNp
b24gMTU1OTk5KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMyw5ICszMyw5IEBACiAjaW5jbHVkZSAiQ1NTVmFsdWVLZXl3b3Jkcy5oIgogI2lu
Y2x1ZGUgIkNvbG9yLmgiCiAjaW5jbHVkZSAiTWVkaWFRdWVyeS5oIgorI2luY2x1ZGUgPG1lbW9y
eT4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0j
aW5jbHVkZSA8d3RmL093bkFycmF5UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgogCkBAIC01NTUsOCArNTU1LDggQEAgcHJp
dmF0ZToKIAogICAgIFBhcnNpbmdNb2RlIG1fcGFyc2luZ01vZGU7CiAgICAgYm9vbCBtX2lzOEJp
dFNvdXJjZTsKLSAgICBPd25BcnJheVB0cjxMQ2hhcj4gbV9kYXRhU3RhcnQ4OwotICAgIE93bkFy
cmF5UHRyPFVDaGFyPiBtX2RhdGFTdGFydDE2OworICAgIHN0ZDo6dW5pcXVlX3B0cjxMQ2hhcltd
PiBtX2RhdGFTdGFydDg7CisgICAgc3RkOjp1bmlxdWVfcHRyPFVDaGFyW10+IG1fZGF0YVN0YXJ0
MTY7CiAgICAgTENoYXIqIG1fY3VycmVudENoYXJhY3Rlcjg7CiAgICAgVUNoYXIqIG1fY3VycmVu
dENoYXJhY3RlcjE2OwogICAgIHVuaW9uIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEFyZWFFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXJl
YUVsZW1lbnQuaAkocmV2aXNpb24gMTU2MDAwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
QXJlYUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAogCiAjaW5jbHVk
ZSAiSFRNTEFuY2hvckVsZW1lbnQuaCIKICNpbmNsdWRlICJMYXlvdXRSZWN0LmgiCi0jaW5jbHVk
ZSA8d3RmL093bkFycmF5UHRyLmg+CisjaW5jbHVkZSA8bWVtb3J5PgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5o
CShyZXZpc2lvbiAxNTYwMDApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVs
ZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjQsOCArMjQsOCBAQAogI2lmbmRlZiBIVE1MRnJh
bWVTZXRFbGVtZW50X2gKICNkZWZpbmUgSFRNTEZyYW1lU2V0RWxlbWVudF9oCiAKLSNpbmNsdWRl
IDx3dGYvT3duQXJyYXlQdHIuaD4KICNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgorI2luY2x1ZGUg
PG1lbW9yeT4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAJKHJldmlzaW9u
IDE1NTk5OSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc3LDcgKzc3LDcgQEAKICNpbmNsdWRlIDxydW50
aW1lL09wZXJhdGlvbnMuaD4KICNpbmNsdWRlIDxydW50aW1lL1R5cGVkQXJyYXlJbmxpbmVzLmg+
CiAjaW5jbHVkZSA8cnVudGltZS9VaW50MzJBcnJheS5oPgotI2luY2x1ZGUgPHd0Zi9Pd25BcnJh
eVB0ci5oPgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCkBAIC0x
NDY4LDcgKzE0NjgsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Y29weVRleFN1Yklt
CiAgICAgICAgIGlmIChjbGlwMkQoeCwgeSwgd2lkdGgsIGhlaWdodCwgZ2V0Qm91bmRGcmFtZWJ1
ZmZlcldpZHRoKCksIGdldEJvdW5kRnJhbWVidWZmZXJIZWlnaHQoKSwgJmNsaXBwZWRYLCAmY2xp
cHBlZFksICZjbGlwcGVkV2lkdGgsICZjbGlwcGVkSGVpZ2h0KSkgewogICAgICAgICAgICAgR0Mz
RGVudW0gZm9ybWF0ID0gdGV4LT5nZXRJbnRlcm5hbEZvcm1hdCh0YXJnZXQsIGxldmVsKTsKICAg
ICAgICAgICAgIEdDM0RlbnVtIHR5cGUgPSB0ZXgtPmdldFR5cGUodGFyZ2V0LCBsZXZlbCk7Ci0g
ICAgICAgICAgICBPd25BcnJheVB0cjx1bnNpZ25lZCBjaGFyPiB6ZXJvOworICAgICAgICAgICAg
c3RkOjp1bmlxdWVfcHRyPHVuc2lnbmVkIGNoYXJbXT4gemVybzsKICAgICAgICAgICAgIGlmICh3
aWR0aCAmJiBoZWlnaHQpIHsKICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgc2l6ZTsKICAg
ICAgICAgICAgICAgICBHQzNEZW51bSBlcnJvciA9IG1fY29udGV4dC0+Y29tcHV0ZUltYWdlU2l6
ZUluQnl0ZXMoZm9ybWF0LCB0eXBlLCB3aWR0aCwgaGVpZ2h0LCBtX3VucGFja0FsaWdubWVudCwg
JnNpemUsIDApOwpAQCAtMTQ3Niw3ICsxNDc2LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRl
eHQ6OmNvcHlUZXhTdWJJbQogICAgICAgICAgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihl
cnJvciwgImNvcHlUZXhTdWJJbWFnZTJEIiwgImJhZCBkaW1lbnNpb25zIik7CiAgICAgICAgICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgemVy
byA9IGFkb3B0QXJyYXlQdHIobmV3IHVuc2lnbmVkIGNoYXJbc2l6ZV0pOworICAgICAgICAgICAg
ICAgIHplcm8gPSBzdGQ6Om1ha2VfdW5pcXVlPHVuc2lnbmVkIGNoYXJbXT4oc2l6ZSk7CiAgICAg
ICAgICAgICAgICAgaWYgKCF6ZXJvKSB7CiAgICAgICAgICAgICAgICAgICAgIHN5bnRoZXNpemVH
TEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFLCAiY29weVRleFN1YkltYWdl
MkQiLCAib3V0IG9mIG1lbW9yeSIpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC01
NzMwLDcgKzU3MzAsNyBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6c2ltdWxhdGVWZXJ0
CiAgICAgICAgICAgICB8fCBhdHRyaWJWYWx1ZS52YWx1ZVsxXSAhPSBtX3ZlcnRleEF0dHJpYjBC
dWZmZXJWYWx1ZVsxXQogICAgICAgICAgICAgfHwgYXR0cmliVmFsdWUudmFsdWVbMl0gIT0gbV92
ZXJ0ZXhBdHRyaWIwQnVmZmVyVmFsdWVbMl0KICAgICAgICAgICAgIHx8IGF0dHJpYlZhbHVlLnZh
bHVlWzNdICE9IG1fdmVydGV4QXR0cmliMEJ1ZmZlclZhbHVlWzNdKSkgewotICAgICAgICBPd25B
cnJheVB0cjxHQzNEZmxvYXQ+IGJ1ZmZlckRhdGEgPSBhZG9wdEFycmF5UHRyKG5ldyBHQzNEZmxv
YXRbKG51bVZlcnRleCArIDEpICogNF0pOworICAgICAgICBhdXRvIGJ1ZmZlckRhdGEgPSBzdGQ6
Om1ha2VfdW5pcXVlPEdDM0RmbG9hdFtdPigobnVtVmVydGV4ICsgMSkgKiA0KTsKICAgICAgICAg
Zm9yIChHQzNEc2l6ZWkgaWkgPSAwOyBpaSA8IG51bVZlcnRleCArIDE7ICsraWkpIHsKICAgICAg
ICAgICAgIGJ1ZmZlckRhdGFbaWkgKiA0XSA9IGF0dHJpYlZhbHVlLnZhbHVlWzBdOwogICAgICAg
ICAgICAgYnVmZmVyRGF0YVtpaSAqIDQgKyAxXSA9IGF0dHJpYlZhbHVlLnZhbHVlWzFdOwpAQCAt
NTg2MCw3ICs1ODYwLDcgQEAgU3RyaW5nIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6ZW5zdXJlTm90
TgogfQogCiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OkxSVUltYWdlQnVmZmVyQ2FjaGU6OkxSVUlt
YWdlQnVmZmVyQ2FjaGUoaW50IGNhcGFjaXR5KQotICAgIDogbV9idWZmZXJzKGFkb3B0QXJyYXlQ
dHIobmV3IE93blB0cjxJbWFnZUJ1ZmZlcj5bY2FwYWNpdHldKSkKKyAgICA6IG1fYnVmZmVycyhz
dGQ6Om1ha2VfdW5pcXVlPE93blB0cjxJbWFnZUJ1ZmZlcj5bXT4oY2FwYWNpdHkpKQogICAgICwg
bV9jYXBhY2l0eShjYXBhY2l0eSkKIHsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oCShyZXZpc2lvbiAxNTU5OTkpCisr
KyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaAkod29y
a2luZyBjb3B5KQpAQCAtMzQsOSArMzQsOSBAQAogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVk
ZSAiV2ViR0xHZXRJbmZvLmgiCiAKKyNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8cnVudGlt
ZS9GbG9hdDMyQXJyYXkuaD4KICNpbmNsdWRlIDxydW50aW1lL0ludDMyQXJyYXkuaD4KLSNpbmNs
dWRlIDx3dGYvT3duQXJyYXlQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDY4LDcgKzQ2OCw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIEltYWdlQnVmZmVyKiBpbWFnZUJ1ZmZlcihjb25zdCBJbnRTaXplJiBzaXplKTsKICAgICBw
cml2YXRlOgogICAgICAgICB2b2lkIGJ1YmJsZVRvRnJvbnQoaW50IGlkeCk7Ci0gICAgICAgIE93
bkFycmF5UHRyPE93blB0cjxJbWFnZUJ1ZmZlcj4gPiBtX2J1ZmZlcnM7CisgICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxPd25QdHI8SW1hZ2VCdWZmZXI+W10+IG1fYnVmZmVyczsKICAgICAgICAgaW50
IG1fY2FwYWNpdHk7CiAgICAgfTsKICAgICBMUlVJbWFnZUJ1ZmZlckNhY2hlIG1fdmlkZW9DYWNo
ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yTm9uZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3JOb25l
LmNwcAkocmV2aXNpb24gMTU1OTk5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
QW5pbWF0b3JOb25lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNiBAQAogCiAjaW5j
bHVkZSAiRmxvYXRQb2ludC5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCi0jaW5jbHVk
ZSA8d3RmL093bkFycmF5UHRyLmg+CiAjaW5jbHVkZSAiU2Nyb2xsYWJsZUFyZWEuaCIKICNpbmNs
dWRlICJTY3JvbGxiYXJUaGVtZS5oIgogI2luY2x1ZGUgPGFsZ29yaXRobT4KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yLmNw
cAkocmV2aXNpb24gMTU1OTk5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHlu
YW1pY3NDb21wcmVzc29yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsNyBAQAogI2lu
Y2x1ZGUgIkF1ZGlvQnVzLmgiCiAjaW5jbHVkZSAiQXVkaW9VdGlsaXRpZXMuaCIKICNpbmNsdWRl
IDx3dGYvTWF0aEV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkBAIC0yNzQsOCArMjc1LDggQEAgdm9pZCBEeW5hbWljc0NvbXBy
ZXNzb3I6OnNldE51bWJlck9mQ2hhbgogICAgICAgICBtX3Bvc3RGaWx0ZXJQYWNrcy5hcHBlbmQo
YWRvcHRQdHIobmV3IFplcm9Qb2xlRmlsdGVyUGFjazQoKSkpOwogICAgIH0KIAotICAgIG1fc291
cmNlQ2hhbm5lbHMgPSBhZG9wdEFycmF5UHRyKG5ldyBjb25zdCBmbG9hdCogW251bWJlck9mQ2hh
bm5lbHNdKTsKLSAgICBtX2Rlc3RpbmF0aW9uQ2hhbm5lbHMgPSBhZG9wdEFycmF5UHRyKG5ldyBm
bG9hdCogW251bWJlck9mQ2hhbm5lbHNdKTsKKyAgICBtX3NvdXJjZUNoYW5uZWxzID0gc3RkOjpt
YWtlX3VuaXF1ZTxjb25zdCBmbG9hdCpbXT4obnVtYmVyT2ZDaGFubmVscyk7CisgICAgbV9kZXN0
aW5hdGlvbkNoYW5uZWxzID0gc3RkOjptYWtlX3VuaXF1ZTxmbG9hdCpbXT4obnVtYmVyT2ZDaGFu
bmVscyk7CiAKICAgICBtX2NvbXByZXNzb3Iuc2V0TnVtYmVyT2ZDaGFubmVscyhudW1iZXJPZkNo
YW5uZWxzKTsKICAgICBtX251bWJlck9mQ2hhbm5lbHMgPSBudW1iZXJPZkNoYW5uZWxzOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVz
c29yLmgJKHJldmlzaW9uIDE1NTk5OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L0R5bmFtaWNzQ29tcHJlc3Nvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw4ICszMiw3IEBACiAj
aW5jbHVkZSAiQXVkaW9BcnJheS5oIgogI2luY2x1ZGUgIkR5bmFtaWNzQ29tcHJlc3Nvcktlcm5l
bC5oIgogI2luY2x1ZGUgIlplcm9Qb2xlLmgiCi0KLSNpbmNsdWRlIDx3dGYvT3duQXJyYXlQdHIu
aD4KKyNpbmNsdWRlIDxtZW1vcnk+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTAzLDgg
KzEwMiw4IEBAIHByb3RlY3RlZDoKICAgICBWZWN0b3I8T3duUHRyPFplcm9Qb2xlRmlsdGVyUGFj
azQ+ID4gbV9wcmVGaWx0ZXJQYWNrczsKICAgICBWZWN0b3I8T3duUHRyPFplcm9Qb2xlRmlsdGVy
UGFjazQ+ID4gbV9wb3N0RmlsdGVyUGFja3M7CiAKLSAgICBPd25BcnJheVB0cjxjb25zdCBmbG9h
dCo+IG1fc291cmNlQ2hhbm5lbHM7Ci0gICAgT3duQXJyYXlQdHI8ZmxvYXQqPiBtX2Rlc3RpbmF0
aW9uQ2hhbm5lbHM7CisgICAgc3RkOjp1bmlxdWVfcHRyPGNvbnN0IGZsb2F0KltdPiBtX3NvdXJj
ZUNoYW5uZWxzOworICAgIHN0ZDo6dW5pcXVlX3B0cjxmbG9hdCpbXT4gbV9kZXN0aW5hdGlvbkNo
YW5uZWxzOwogCiAgICAgdm9pZCBzZXRFbXBoYXNpc1N0YWdlUGFyYW1ldGVycyh1bnNpZ25lZCBz
dGFnZUluZGV4LCBmbG9hdCBnYWluLCBmbG9hdCBub3JtYWxpemVkRnJlcXVlbmN5IC8qIDAgLT4g
MSAqLyk7CiAgICAgdm9pZCBzZXRFbXBoYXNpc1BhcmFtZXRlcnMoZmxvYXQgZ2FpbiwgZmxvYXQg
YW5jaG9yRnJlcSwgZmxvYXQgZmlsdGVyU3RhZ2VSYXRpbyk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9GRlRGcmFtZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL0ZGVEZyYW1lLmgJKHJldmlzaW9uIDE1NTk5OSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVEZyYW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDYg
KzQ5LDcgQEAKIAogI2lmIFVTRShXRUJBVURJT19HU1RSRUFNRVIpCiAjaW5jbHVkZSA8Z2xpYi5o
PgorI2luY2x1ZGUgPG1lbW9yeT4KIEdfQkVHSU5fREVDTFMKICNpbmNsdWRlIDxnc3QvZmZ0L2dz
dGZmdGYzMi5oPgogR19FTkRfREVDTFMKQEAgLTE2Nyw3ICsxNjgsNyBAQCBwcml2YXRlOgogI2lm
IFVTRShXRUJBVURJT19HU1RSRUFNRVIpCiAgICAgR3N0RkZURjMyKiBtX2ZmdDsKICAgICBHc3RG
RlRGMzIqIG1faW52ZXJzZUZmdDsKLSAgICBPd25BcnJheVB0cjxHc3RGRlRGMzJDb21wbGV4PiBt
X2NvbXBsZXhEYXRhOworICAgIHN0ZDo6dW5pcXVlX3B0cjxHc3RGRlRGMzJDb21wbGV4W10+IG1f
Y29tcGxleERhdGE7CiAgICAgQXVkaW9GbG9hdEFycmF5IG1fcmVhbERhdGE7CiAgICAgQXVkaW9G
bG9hdEFycmF5IG1faW1hZ0RhdGE7CiAjZW5kaWYgLy8gVVNFKFdFQkFVRElPX0dTVFJFQU1FUikK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9GRlRGcmFtZUdT
dHJlYW1lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
Z3N0cmVhbWVyL0ZGVEZyYW1lR1N0cmVhbWVyLmNwcAkocmV2aXNpb24gMTU1OTk5KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0ZGVEZyYW1lR1N0cmVhbWVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogCiAjaW5jbHVkZSAiVmVjdG9yTWF0
aC5oIgogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4
dHJhcy5oPgogCiBuYW1lc3BhY2UgewogCkBAIC00Miw3ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIEZGVEZyYW1lOjpGRlRGcmFtZSh1bnNpZ25lZCBmZnRTaXplKQogICAgIDogbV9GRlRT
aXplKGZmdFNpemUpCiAgICAgLCBtX2xvZzJGRlRTaXplKHN0YXRpY19jYXN0PHVuc2lnbmVkPihs
b2cyKGZmdFNpemUpKSkKLSAgICAsIG1fY29tcGxleERhdGEoYWRvcHRBcnJheVB0cihuZXcgR3N0
RkZURjMyQ29tcGxleFt1bnBhY2tlZEZGVERhdGFTaXplKG1fRkZUU2l6ZSldKSkKKyAgICAsIG1f
Y29tcGxleERhdGEoc3RkOjptYWtlX3VuaXF1ZTxHc3RGRlRGMzJDb21wbGV4W10+KHVucGFja2Vk
RkZURGF0YVNpemUobV9GRlRTaXplKSkpCiAgICAgLCBtX3JlYWxEYXRhKHVucGFja2VkRkZURGF0
YVNpemUobV9GRlRTaXplKSkKICAgICAsIG1faW1hZ0RhdGEodW5wYWNrZWRGRlREYXRhU2l6ZSht
X0ZGVFNpemUpKQogewpAQCAtNjUsNyArNjYsNyBAQCBGRlRGcmFtZTo6RkZURnJhbWUoKQogRkZU
RnJhbWU6OkZGVEZyYW1lKGNvbnN0IEZGVEZyYW1lJiBmcmFtZSkKICAgICA6IG1fRkZUU2l6ZShm
cmFtZS5tX0ZGVFNpemUpCiAgICAgLCBtX2xvZzJGRlRTaXplKGZyYW1lLm1fbG9nMkZGVFNpemUp
Ci0gICAgLCBtX2NvbXBsZXhEYXRhKGFkb3B0QXJyYXlQdHIobmV3IEdzdEZGVEYzMkNvbXBsZXhb
dW5wYWNrZWRGRlREYXRhU2l6ZShtX0ZGVFNpemUpXSkpCisgICAgLCBtX2NvbXBsZXhEYXRhKHN0
ZDo6bWFrZV91bmlxdWU8R3N0RkZURjMyQ29tcGxleFtdPih1bnBhY2tlZEZGVERhdGFTaXplKG1f
RkZUU2l6ZSkpKQogICAgICwgbV9yZWFsRGF0YSh1bnBhY2tlZEZGVERhdGFTaXplKGZyYW1lLm1f
RkZUU2l6ZSkpCiAgICAgLCBtX2ltYWdEYXRhKHVucGFja2VkRkZURGF0YVNpemUoZnJhbWUubV9G
RlRTaXplKSkKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9TY3JvbGxiYXJF
ZmwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9TY3JvbGxi
YXJFZmwuY3BwCShyZXZpc2lvbiAxNTU5OTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9l
ZmwvU2Nyb2xsYmFyRWZsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQAogI2lu
Y2x1ZGUgPEV2YXMuaD4KICNpbmNsdWRlIDxuZXc+CiAjaW5jbHVkZSA8c3RyaW5nPgotI2luY2x1
ZGUgPHd0Zi9Pd25BcnJheVB0ci5oPgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CkBAIC0x
NzEsNyArMTcxLDcgQEAgdm9pZCBTY3JvbGxiYXJFZmw6OnVwZGF0ZVRodW1iUG9zaXRpb25Bbgog
ICAgIG1fbGFzdFRvdGFsU2l6ZSA9IHRTaXplOwogICAgIG1fbGFzdFZpc2libGVTaXplID0gdlNp
emU7CiAKLSAgICBPd25BcnJheVB0cjxjaGFyPiBidWZmZXIgPSBhZG9wdEFycmF5UHRyKG5ldyBj
aGFyW3NpemVvZihFZGplX01lc3NhZ2VfRmxvYXRfU2V0KSArIHNpemVvZihkb3VibGUpXSk7Cisg
ICAgYXV0byBidWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4oc2l6ZW9mKEVkamVfTWVz
c2FnZV9GbG9hdF9TZXQpICsgc2l6ZW9mKGRvdWJsZSkpOwogICAgIEVkamVfTWVzc2FnZV9GbG9h
dF9TZXQqIG1lc3NhZ2UgPSBuZXcoYnVmZmVyLmdldCgpKSBFZGplX01lc3NhZ2VfRmxvYXRfU2V0
OwogICAgIG1lc3NhZ2UtPmNvdW50ID0gMjsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQU5HTEVXZWJLaXRCcmlkZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0FOR0xFV2ViS2l0QnJpZGdlLmNwcAkocmV2aXNpb24g
MTU1OTk5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQU5HTEVXZWJLaXRC
cmlkZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBACiAjaWYgVVNFKDNEX0dS
QVBISUNTKQogCiAjaW5jbHVkZSAiQU5HTEVXZWJLaXRCcmlkZ2UuaCIKLSNpbmNsdWRlIDx3dGYv
T3duQXJyYXlQdHIuaD4KKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApAQCAtMTkzLDcgKzE5Myw3IEBAIGJvb2wgQU5HTEVXZWJLaXRCcmlkZ2U6
OmNvbXBpbGVTaGFkZXJTb3UKICAgICBpZiAoIXZhbGlkYXRlU3VjY2VzcykgewogICAgICAgICBp
bnQgbG9nU2l6ZSA9IGdldFZhbGlkYXRpb25SZXN1bHRWYWx1ZShjb21waWxlciwgU0hfSU5GT19M
T0dfTEVOR1RIKTsKICAgICAgICAgaWYgKGxvZ1NpemUgPiAxKSB7Ci0gICAgICAgICAgICBPd25B
cnJheVB0cjxjaGFyPiBsb2dCdWZmZXIgPSBhZG9wdEFycmF5UHRyKG5ldyBjaGFyW2xvZ1NpemVd
KTsKKyAgICAgICAgICAgIGF1dG8gbG9nQnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+
KGxvZ1NpemUpOwogICAgICAgICAgICAgaWYgKGxvZ0J1ZmZlcikgewogICAgICAgICAgICAgICAg
IFNoR2V0SW5mb0xvZyhjb21waWxlciwgbG9nQnVmZmVyLmdldCgpKTsKICAgICAgICAgICAgICAg
ICBzaGFkZXJWYWxpZGF0aW9uTG9nID0gbG9nQnVmZmVyLmdldCgpOwpAQCAtMjA0LDcgKzIwNCw3
IEBAIGJvb2wgQU5HTEVXZWJLaXRCcmlkZ2U6OmNvbXBpbGVTaGFkZXJTb3UKIAogICAgIGludCB0
cmFuc2xhdGlvbkxlbmd0aCA9IGdldFZhbGlkYXRpb25SZXN1bHRWYWx1ZShjb21waWxlciwgU0hf
T0JKRUNUX0NPREVfTEVOR1RIKTsKICAgICBpZiAodHJhbnNsYXRpb25MZW5ndGggPiAxKSB7Ci0g
ICAgICAgIE93bkFycmF5UHRyPGNoYXI+IHRyYW5zbGF0aW9uQnVmZmVyID0gYWRvcHRBcnJheVB0
cihuZXcgY2hhclt0cmFuc2xhdGlvbkxlbmd0aF0pOworICAgICAgICBhdXRvIHRyYW5zbGF0aW9u
QnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KHRyYW5zbGF0aW9uTGVuZ3RoKTsKICAg
ICAgICAgaWYgKCF0cmFuc2xhdGlvbkJ1ZmZlcikKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgU2hHZXRPYmplY3RDb2RlKGNvbXBpbGVyLCB0cmFuc2xhdGlvbkJ1ZmZlci5nZXQo
KSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQzRC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0M0QuY3BwCShyZXZpc2lvbiAxNTU5OTkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQxLDcgKzQxLDcgQEAKICNlbmRpZgogCiAjaW5jbHVkZSA8cnVudGltZS9BcnJheUJ1ZmZl
clZpZXcuaD4KLSNpbmNsdWRlIDx3dGYvT3duQXJyYXlQdHIuaD4KKyNpbmNsdWRlIDx3dGYvU3Rk
TGliRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTEzLDcgKzExMyw3IEBA
IEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0IGdldERhdGFGb3IKIGJvb2wgR3JhcGhpY3ND
b250ZXh0M0Q6OnRleEltYWdlMkRSZXNvdXJjZVNhZmUoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50
IGxldmVsLCBHQzNEZW51bSBpbnRlcm5hbGZvcm1hdCwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6
ZWkgaGVpZ2h0LCBHQzNEaW50IGJvcmRlciwgR0MzRGVudW0gZm9ybWF0LCBHQzNEZW51bSB0eXBl
LCBHQzNEaW50IHVucGFja0FsaWdubWVudCkKIHsKICAgICBBU1NFUlQodW5wYWNrQWxpZ25tZW50
ID09IDEgfHwgdW5wYWNrQWxpZ25tZW50ID09IDIgfHwgdW5wYWNrQWxpZ25tZW50ID09IDQgfHwg
dW5wYWNrQWxpZ25tZW50ID09IDgpOwotICAgIE93bkFycmF5UHRyPHVuc2lnbmVkIGNoYXI+IHpl
cm87CisgICAgc3RkOjp1bmlxdWVfcHRyPHVuc2lnbmVkIGNoYXJbXT4gemVybzsKICAgICBpZiAo
IWlzUmVzb3VyY2VTYWZlKCkgJiYgd2lkdGggPiAwICYmIGhlaWdodCA+IDApIHsKICAgICAgICAg
dW5zaWduZWQgaW50IHNpemU7CiAgICAgICAgIEdDM0RlbnVtIGVycm9yID0gY29tcHV0ZUltYWdl
U2l6ZUluQnl0ZXMoZm9ybWF0LCB0eXBlLCB3aWR0aCwgaGVpZ2h0LCB1bnBhY2tBbGlnbm1lbnQs
ICZzaXplLCAwKTsKQEAgLTEyMSw3ICsxMjEsNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjp0
ZXhJbWFnZTJEUmVzb3VyCiAgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihlcnJvcik7CiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KLSAgICAgICAgemVybyA9IGFkb3B0
QXJyYXlQdHIobmV3IHVuc2lnbmVkIGNoYXJbc2l6ZV0pOworICAgICAgICB6ZXJvID0gc3RkOjpt
YWtlX3VuaXF1ZTx1bnNpZ25lZCBjaGFyW10+KHNpemUpOwogICAgICAgICBpZiAoIXplcm8pIHsK
ICAgICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElE
X1ZBTFVFKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTExODQsNyArMTE4NCw4IEBA
IHB1YmxpYzoKICAgICB7CiAgICAgICAgIGNvbnN0IHVuc2lnbmVkIE1heE51bWJlck9mQ29tcG9u
ZW50cyA9IDQ7CiAgICAgICAgIGNvbnN0IHVuc2lnbmVkIE1heEJ5dGVzUGVyQ29tcG9uZW50ICA9
IDQ7Ci0gICAgICAgIG1fdW5wYWNrZWRJbnRlcm1lZGlhdGVTcmNEYXRhID0gYWRvcHRBcnJheVB0
cihuZXcgdWludDhfdFttX3dpZHRoICogTWF4TnVtYmVyT2ZDb21wb25lbnRzICpNYXhCeXRlc1Bl
ckNvbXBvbmVudF0pOworICAgICAgICBtX3VucGFja2VkSW50ZXJtZWRpYXRlU3JjRGF0YSA9IHN0
ZDo6bWFrZV91bmlxdWU8dWludDhfdFtdPihtX3dpZHRoICogTWF4TnVtYmVyT2ZDb21wb25lbnRz
ICogTWF4Qnl0ZXNQZXJDb21wb25lbnQpOworCiAgICAgICAgIEFTU0VSVChtX3VucGFja2VkSW50
ZXJtZWRpYXRlU3JjRGF0YS5nZXQoKSk7CiAgICAgfQogCkBAIC0xMjA2LDcgKzEyMDcsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQqIGNvbnN0IG1fZHN0U3RhcnQ7CiAgICAgY29uc3QgaW50IG1fc3Jj
U3RyaWRlLCBtX2RzdFN0cmlkZTsKICAgICBib29sIG1fc3VjY2VzczsKLSAgICBPd25BcnJheVB0
cjx1aW50OF90PiBtX3VucGFja2VkSW50ZXJtZWRpYXRlU3JjRGF0YTsKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8dWludDhfdFtdPiBtX3VucGFja2VkSW50ZXJtZWRpYXRlU3JjRGF0YTsKIH07CiAKIHZv
aWQgRm9ybWF0Q29udmVydGVyOjpjb252ZXJ0KEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0
IHNyY0Zvcm1hdCwgR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXQgZHN0Rm9ybWF0LCBHcmFw
aGljc0NvbnRleHQzRDo6QWxwaGFPcCBhbHBoYU9wKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCShyZXZpc2lvbiAx
NTU5OTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQzRC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxMCArMzAsMTAgQEAKICNpbmNsdWRlICJJbWFn
ZS5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUxheWVyLmgiCisj
aW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3Rm
L0xpc3RIYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8
d3RmL093bkFycmF5UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtOTAwLDcgKzkwMCw3IEBAIHB1YmxpYzoKICAg
ICAgICAgQ0dJbWFnZVJlZiBtX2NnSW1hZ2U7CiAgICAgICAgIFJldGFpblB0cjxDR0ltYWdlUmVm
PiBtX2RlY29kZWRJbWFnZTsKICAgICAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gbV9waXhlbERh
dGE7Ci0gICAgICAgIE93bkFycmF5UHRyPHVpbnQ4X3Q+IG1fZm9ybWFsaXplZFJHQkE4RGF0YTsK
KyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPHVpbnQ4X3RbXT4gbV9mb3JtYWxpemVkUkdCQThEYXRh
OwogI2VsaWYgUExBVEZPUk0oUVQpCiAgICAgICAgIFFJbWFnZSBtX3F0SW1hZ2U7CiAjZWxpZiBQ
TEFURk9STShCTEFDS0JFUlJZKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuY3BwCShyZXZp
c2lvbiAxNTU5OTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQzRFByaXZhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw3IEBACiAK
ICNpbmNsdWRlICJIb3N0V2luZG93LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKLSNp
bmNsdWRlIDx3dGYvT3duQXJyYXlQdHIuaD4KKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+
CiAKICNpZiBQTEFURk9STShOSVgpICYmIFVTRShFR0wpCiAjaW5jbHVkZSAiR0xDb250ZXh0RnJv
bUN1cnJlbnRFR0wuaCIKQEAgLTEwNyw3ICsxMDcsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNE
UHJpdmF0ZTo6cGFpbnRUb1RlCiAgICAgICAgIGNvbnN0IGludCB3aWR0aCA9IG1fY29udGV4dC0+
bV9jdXJyZW50V2lkdGg7CiAgICAgICAgIGludCB0b3RhbEJ5dGVzID0gd2lkdGggKiBoZWlnaHQg
KiA0OwogCi0gICAgICAgIE93bkFycmF5UHRyPHVuc2lnbmVkIGNoYXI+IHBpeGVscyA9IGFkb3B0
QXJyYXlQdHIobmV3IHVuc2lnbmVkIGNoYXJbdG90YWxCeXRlc10pOworICAgICAgICBhdXRvIHBp
eGVscyA9IHN0ZDo6bWFrZV91bmlxdWU8dW5zaWduZWQgY2hhcltdPih0b3RhbEJ5dGVzKTsKICAg
ICAgICAgaWYgKCFwaXhlbHMpCiAgICAgICAgICAgICByZXR1cm47CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJUZXh0dXJlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xh
eWVyVGV4dHVyZS5jcHAJKHJldmlzaW9uIDE1NTk5OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJUZXh0dXJlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjksNyArMjksNiBAQAogI2luY2x1ZGUgPEJsYWNrQmVycnlQbGF0Zm9ybUdyYXBoaWNzQ29u
dGV4dC5oPgogI2luY2x1ZGUgPEdMRVMyL2dsMi5oPgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGlt
ZS5oPgotI2luY2x1ZGUgPHd0Zi9Pd25BcnJheVB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5
ZXJUcmVlSG9zdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Evd2luL0NBQ0ZMYXllclRyZWVIb3N0LmNwcAkocmV2aXNpb24gMTU1OTk5KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclRyZWVIb3N0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQAogI2luY2x1ZGUgPGxpbWl0cy5o
PgogI2luY2x1ZGUgPFF1YXJ0ekNvcmUvQ0FCYXNlLmg+CiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRU
aW1lLmg+Ci0jaW5jbHVkZSA8d3RmL093bkFycmF5UHRyLmg+CisjaW5jbHVkZSA8d3RmL1N0ZExp
YkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi93aW4vR0RJT2JqZWN0Lmg+CiAKICNpZmRlZiBERUJV
R19BTEwKQEAgLTI1MCw3ICsyNTAsNyBAQCBzdGF0aWMgdm9pZCBnZXREaXJ0eVJlY3RzKEhXTkQg
d2luZG93LCBWCiAgICAgfQogCiAgICAgRFdPUkQgZGF0YVNpemUgPSA6OkdldFJlZ2lvbkRhdGEo
cmVnaW9uLmdldCgpLCAwLCAwKTsKLSAgICBPd25BcnJheVB0cjx1bnNpZ25lZCBjaGFyPiByZWdp
b25EYXRhQnVmZmVyID0gYWRvcHRBcnJheVB0cihuZXcgdW5zaWduZWQgY2hhcltkYXRhU2l6ZV0p
OworICAgIGF1dG8gcmVnaW9uRGF0YUJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8dW5zaWduZWQg
Y2hhcltdPihkYXRhU2l6ZSk7CiAgICAgUkdOREFUQSogcmVnaW9uRGF0YSA9IHJlaW50ZXJwcmV0
X2Nhc3Q8UkdOREFUQSo+KHJlZ2lvbkRhdGFCdWZmZXIuZ2V0KCkpOwogICAgIGlmICghOjpHZXRS
ZWdpb25EYXRhKHJlZ2lvbi5nZXQoKSwgZGF0YVNpemUsIHJlZ2lvbkRhdGEpKQogICAgICAgICBy
ZXR1cm47CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGlj
c0NvbnRleHQzRENHLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHQzRENHLmNwcAkocmV2aXNpb24gMTU1OTk5KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0M0RDRy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNsdWRlIDxDb3JlR3JhcGhp
Y3MvQ0dJbWFnZS5oPgogCiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0
Zi9TdGRMaWJFeHRyYXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00NzksNyArNDgw
LDcgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6SW1hZ2VFeHRyYWN0b3I6OgogICAgIC8vIGJ1
dCBpdCB3b3VsZCBwcmVtdWx0aXBseSB0aGUgYWxwaGEgY2hhbm5lbCBhcyBhIHNpZGUgZWZmZWN0
LgogICAgIC8vIFByZWZlciB0byBtYW5udWFsbHkgQ29udmVydCAxNmJpdCBwZXItY29tcG9uZW50
IGZvcm1hdHMgdG8gUkdCQTggZm9ybWF0cyBpbnN0ZWFkLgogICAgIGlmIChiaXRzUGVyQ29tcG9u
ZW50ID09IDE2KSB7Ci0gICAgICAgIG1fZm9ybWFsaXplZFJHQkE4RGF0YSA9IGFkb3B0QXJyYXlQ
dHIobmV3IHVpbnQ4X3RbbV9pbWFnZVdpZHRoICogbV9pbWFnZUhlaWdodCAqIDRdKTsKKyAgICAg
ICAgbV9mb3JtYWxpemVkUkdCQThEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTx1aW50OF90W10+KG1f
aW1hZ2VXaWR0aCAqIG1faW1hZ2VIZWlnaHQgKiA0KTsKICAgICAgICAgY29uc3QgdWludDE2X3Qq
IHNvdXJjZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDE2X3QqPihtX2ltYWdlUGl4ZWxE
YXRhKTsKICAgICAgICAgdWludDhfdCogZGVzdGluYXRpb24gPSBtX2Zvcm1hbGl6ZWRSR0JBOERh
dGEuZ2V0KCk7CiAgICAgICAgIGNvbnN0IHB0cmRpZmZfdCBzcmNTdHJpZGVJbkVsZW1lbnRzID0g
Ynl0ZXNQZXJSb3cgLyBzaXplb2YodWludDE2X3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAko
cmV2aXNpb24gMTU1OTk5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
R3JhcGhpY3NDb250ZXh0Q0cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw2IEBACiAj
aW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ29yZUdyYXBoaWNzLmg+
CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KLSNpbmNsdWRlIDx3dGYvT3duQXJyYXlQdHIu
aD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKICNpZiBQTEFURk9STShNQUMpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1
ZmZlckNHLmNwcAkocmV2aXNpb24gMTU1OTk5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4
LDYgQEAKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9DaGVja2Vk
QXJpdGhtZXRpYy5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+Ci0jaW5jbHVkZSA8d3Rm
L093bkFycmF5UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L0Jhc2U2NC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RleHR1cmUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9UZXh0dXJlLmNwcAko
cmV2aXNpb24gMTU1OTk5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L1RleHR1cmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw5ICszOCw4IEBACiAjaW5jbHVkZSAi
RmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNsdWRlICJJ
bnRSZWN0LmgiCi0KICNpbmNsdWRlIDxhbGdvcml0aG0+Ci0jaW5jbHVkZSA8d3RmL093bkFycmF5
UHRyLmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiB1c2luZyBuYW1lc3BhY2Ug
c3RkOwogCkBAIC0xNzQsNyArMTczLDcgQEAgdm9pZCBUZXh0dXJlOjp1cGRhdGVTdWJSZWN0KHZv
aWQqIHBpeGVscwogICAgIGludCB0ZW1wQnVmZlNpemUgPSAvLyBUZW1wb3JhcnkgYnVmZmVyIHNp
emUgaXMgdGhlIHNtYWxsZXIgb2YgdGhlIG1heCB0ZXh0dXJlIHNpemUgb3IgdGhlIHVwZGF0ZVJl
Y3RTYW5pdGl6ZWQKICAgICAgICAgbWluKG1fdGlsZXMubWF4VGV4dHVyZVNpemUoKS53aWR0aCgp
LCBtX3RpbGVzLmJvcmRlclRleGVscygpICsgdXBkYXRlUmVjdFNhbml0aXplZC53aWR0aCgpKSAq
CiAgICAgICAgIG1pbihtX3RpbGVzLm1heFRleHR1cmVTaXplKCkuaGVpZ2h0KCksIG1fdGlsZXMu
Ym9yZGVyVGV4ZWxzKCkgKyB1cGRhdGVSZWN0U2FuaXRpemVkLmhlaWdodCgpKTsKLSAgICBPd25B
cnJheVB0cjx1aW50MzJfdD4gdGVtcEJ1ZmYgPSBhZG9wdEFycmF5UHRyKG5ldyB1aW50MzJfdFt0
ZW1wQnVmZlNpemVdKTsKKyAgICBhdXRvIHRlbXBCdWZmID0gc3RkOjptYWtlX3VuaXF1ZTx1aW50
MzJfdFtdPih0ZW1wQnVmZlNpemUpOwogCiAgICAgZm9yIChpbnQgdGlsZSA9IDA7IHRpbGUgPCBt
X3RpbGVzLm51bVRpbGVzWCgpICogbV90aWxlcy5udW1UaWxlc1koKTsgdGlsZSsrKSB7CiAgICAg
ICAgIGludCB4SW5kZXggPSB0aWxlICUgbV90aWxlcy5udW1UaWxlc1goKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0hhcmZCdXp6U2hhcGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9I
YXJmQnV6elNoYXBlci5jcHAJKHJldmlzaW9uIDE1NTk5OSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0hhcmZCdXp6U2hhcGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgPHVuaWNvZGUvbm9ybWx6ci5oPgogI2luY2x1
ZGUgPHVuaWNvZGUvdWNoYXIuaD4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgorI2luY2x1
ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVk
ZSA8d3RmL3VuaWNvZGUvVW5pY29kZS5oPgogCkBAIC0xOTUsNyArMTk2LDcgQEAgSGFyZkJ1enpT
aGFwZXI6OkhhcmZCdXp6U2hhcGVyKGNvbnN0IEZvbgogICAgICwgbV9mcm9tSW5kZXgoMCkKICAg
ICAsIG1fdG9JbmRleChtX3J1bi5sZW5ndGgoKSkKIHsKLSAgICBtX25vcm1hbGl6ZWRCdWZmZXIg
PSBhZG9wdEFycmF5UHRyKG5ldyBVQ2hhclttX3J1bi5sZW5ndGgoKSArIDFdKTsKKyAgICBtX25v
cm1hbGl6ZWRCdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFVDaGFyW10+KG1fcnVuLmxlbmd0aCgp
ICsgMSk7CiAgICAgbV9ub3JtYWxpemVkQnVmZmVyTGVuZ3RoID0gbV9ydW4ubGVuZ3RoKCk7CiAg
ICAgbm9ybWFsaXplQ2hhcmFjdGVycyhtX3J1biwgbV9ub3JtYWxpemVkQnVmZmVyLmdldCgpLCBt
X25vcm1hbGl6ZWRCdWZmZXJMZW5ndGgpOwogICAgIHNldFBhZGRpbmcobV9ydW4uZXhwYW5zaW9u
KCkpOwpAQCAtMjc3LDcgKzI3OCw3IEBAIHZvaWQgSGFyZkJ1enpTaGFwZXI6OnNldE5vcm1hbGl6
ZWRCdWZmZXIKICAgICAgICAgc291cmNlVGV4dCA9IG5vcm1hbGl6ZWRTdHJpbmcuZ2V0QnVmZmVy
KCk7CiAgICAgfQogCi0gICAgbV9ub3JtYWxpemVkQnVmZmVyID0gYWRvcHRBcnJheVB0cihuZXcg
VUNoYXJbbV9ub3JtYWxpemVkQnVmZmVyTGVuZ3RoICsgMV0pOworICAgIG1fbm9ybWFsaXplZEJ1
ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8VUNoYXJbXT4obV9ub3JtYWxpemVkQnVmZmVyTGVuZ3Ro
ICsgMSk7CiAgICAgbm9ybWFsaXplU3BhY2VzQW5kTWlycm9yQ2hhcnMoc291cmNlVGV4dCwgbV9u
b3JtYWxpemVkQnVmZmVyLmdldCgpLCBtX25vcm1hbGl6ZWRCdWZmZXJMZW5ndGgsIG5vcm1hbGl6
ZU1vZGUpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJm
YnV6ei9IYXJmQnV6elNoYXBlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2hhcmZidXp6L0hhcmZCdXp6U2hhcGVyLmgJKHJldmlzaW9uIDE1NTk5OSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0hhcmZCdXp6U2hh
cGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDggKzM1LDggQEAKICNpbmNsdWRlICJHbHlwaEJ1
ZmZlci5oIgogI2luY2x1ZGUgIlRleHRSdW4uaCIKICNpbmNsdWRlICJoYi5oIgorI2luY2x1ZGUg
PG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgotI2luY2x1ZGUgPHd0Zi9Pd25BcnJh
eVB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTEyOSw3ICsxMjksNyBAQCBwcml2YXRl
OgogICAgIEdseXBoQnVmZmVyQWR2YW5jZSBjcmVhdGVHbHlwaEJ1ZmZlckFkdmFuY2UoZmxvYXQs
IGZsb2F0KTsKIAogICAgIGNvbnN0IEZvbnQqIG1fZm9udDsKLSAgICBPd25BcnJheVB0cjxVQ2hh
cj4gbV9ub3JtYWxpemVkQnVmZmVyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxVQ2hhcltdPiBtX25v
cm1hbGl6ZWRCdWZmZXI7CiAgICAgdW5zaWduZWQgbV9ub3JtYWxpemVkQnVmZmVyTGVuZ3RoOwog
ICAgIGNvbnN0IFRleHRSdW4mIG1fcnVuOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGlj
c0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAJKHJldmlzaW9uIDE1NTk5OSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENv
bW1vbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDYgQEAKICNpbmNsdWRlIDxydW50
aW1lL0ludDMyQXJyYXkuaD4KICNpbmNsdWRlIDxydW50aW1lL1VpbnQ4QXJyYXkuaD4KICNpbmNs
dWRlIDx3dGYvTWFpblRocmVhZC5oPgotI2luY2x1ZGUgPHd0Zi9Pd25BcnJheVB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogI2lmIFVTRShPUEVOR0xfRVNfMikKQEAgLTEw
Miw3ICsxMDEsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpwYWludFJlbmRlcmluZ1JlCiAg
ICAgaW50IHJvd0J5dGVzID0gbV9jdXJyZW50V2lkdGggKiA0OwogICAgIGludCB0b3RhbEJ5dGVz
ID0gcm93Qnl0ZXMgKiBtX2N1cnJlbnRIZWlnaHQ7CiAKLSAgICBPd25BcnJheVB0cjx1bnNpZ25l
ZCBjaGFyPiBwaXhlbHMgPSBhZG9wdEFycmF5UHRyKG5ldyB1bnNpZ25lZCBjaGFyW3RvdGFsQnl0
ZXNdKTsKKyAgICBhdXRvIHBpeGVscyA9IHN0ZDo6bWFrZV91bmlxdWU8dW5zaWduZWQgY2hhcltd
Pih0b3RhbEJ5dGVzKTsKICAgICBpZiAoIXBpeGVscykKICAgICAgICAgcmV0dXJuOwogCkBAIC00
NjYsNyArNDY1LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Y29tcGlsZVNoYWRlcihQbAog
ICAgICAgICBHcmFwaGljc0NvbnRleHQzRDo6U2hhZGVyU291cmNlRW50cnkmIGVudHJ5ID0gcmVz
dWx0LT52YWx1ZTsKIAogICAgICAgICBHTHNpemVpIHNpemUgPSAwOwotICAgICAgICBPd25BcnJh
eVB0cjxHTGNoYXI+IGluZm8gPSBhZG9wdEFycmF5UHRyKG5ldyBHTGNoYXJbbGVuZ3RoXSk7Cisg
ICAgICAgIGF1dG8gaW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8R0xjaGFyW10+KGxlbmd0aCk7CiAg
ICAgICAgIDo6Z2xHZXRTaGFkZXJJbmZvTG9nKHNoYWRlciwgbGVuZ3RoLCAmc2l6ZSwgaW5mby5n
ZXQoKSk7CiAKICAgICAgICAgZW50cnkubG9nID0gaW5mby5nZXQoKTsKQEAgLTYxOSw3ICs2MTgs
NyBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRBY3RpdmVBdHRyaWIoCiAgICAgbWFrZUNv
bnRleHRDdXJyZW50KCk7CiAgICAgR0xpbnQgbWF4QXR0cmlidXRlU2l6ZSA9IDA7CiAgICAgOjpn
bEdldFByb2dyYW1pdihwcm9ncmFtLCBHTF9BQ1RJVkVfQVRUUklCVVRFX01BWF9MRU5HVEgsICZt
YXhBdHRyaWJ1dGVTaXplKTsKLSAgICBPd25BcnJheVB0cjxHTGNoYXI+IG5hbWUgPSBhZG9wdEFy
cmF5UHRyKG5ldyBHTGNoYXJbbWF4QXR0cmlidXRlU2l6ZV0pOyAvLyBHTF9BQ1RJVkVfQVRUUklC
VVRFX01BWF9MRU5HVEggaW5jbHVkZXMgbnVsbCB0ZXJtaW5hdGlvbi4KKyAgICBhdXRvIG5hbWUg
PSBzdGQ6Om1ha2VfdW5pcXVlPEdMY2hhcltdPihtYXhBdHRyaWJ1dGVTaXplKTsgLy8gR0xfQUNU
SVZFX0FUVFJJQlVURV9NQVhfTEVOR1RIIGluY2x1ZGVzIG51bGwgdGVybWluYXRpb24uCiAgICAg
R0xzaXplaSBuYW1lTGVuZ3RoID0gMDsKICAgICBHTGludCBzaXplID0gMDsKICAgICBHTGVudW0g
dHlwZSA9IDA7CkBAIC02NDYsNyArNjQ1LDcgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0
QWN0aXZlVW5pZm9ybQogICAgIEdMaW50IG1heFVuaWZvcm1TaXplID0gMDsKICAgICA6OmdsR2V0
UHJvZ3JhbWl2KHByb2dyYW0sIEdMX0FDVElWRV9VTklGT1JNX01BWF9MRU5HVEgsICZtYXhVbmlm
b3JtU2l6ZSk7CiAKLSAgICBPd25BcnJheVB0cjxHTGNoYXI+IG5hbWUgPSBhZG9wdEFycmF5UHRy
KG5ldyBHTGNoYXJbbWF4VW5pZm9ybVNpemVdKTsgLy8gR0xfQUNUSVZFX1VOSUZPUk1fTUFYX0xF
TkdUSCBpbmNsdWRlcyBudWxsIHRlcm1pbmF0aW9uLgorICAgIGF1dG8gbmFtZSA9IHN0ZDo6bWFr
ZV91bmlxdWU8R0xjaGFyW10+KG1heFVuaWZvcm1TaXplKTsgLy8gR0xfQUNUSVZFX1VOSUZPUk1f
TUFYX0xFTkdUSCBpbmNsdWRlcyBudWxsIHRlcm1pbmF0aW9uLgogICAgIEdMc2l6ZWkgbmFtZUxl
bmd0aCA9IDA7CiAgICAgR0xpbnQgc2l6ZSA9IDA7CiAgICAgR0xlbnVtIHR5cGUgPSAwOwpAQCAt
MTE1NSw3ICsxMTU0LDcgQEAgU3RyaW5nIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRQcm9ncmFtSW5m
bwogICAgICAgICByZXR1cm4gU3RyaW5nKCk7IAogCiAgICAgR0xzaXplaSBzaXplID0gMDsKLSAg
ICBPd25BcnJheVB0cjxHTGNoYXI+IGluZm8gPSBhZG9wdEFycmF5UHRyKG5ldyBHTGNoYXJbbGVu
Z3RoXSk7CisgICAgYXV0byBpbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxHTGNoYXJbXT4obGVuZ3Ro
KTsKICAgICA6OmdsR2V0UHJvZ3JhbUluZm9Mb2cocHJvZ3JhbSwgbGVuZ3RoLCAmc2l6ZSwgaW5m
by5nZXQoKSk7CiAKICAgICByZXR1cm4gU3RyaW5nKGluZm8uZ2V0KCkpOwpAQCAtMTIyMiw3ICsx
MjIxLDcgQEAgU3RyaW5nIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRTaGFkZXJJbmZvTAogICAgICAg
ICByZXR1cm4gU3RyaW5nKCk7IAogCiAgICAgR0xzaXplaSBzaXplID0gMDsKLSAgICBPd25BcnJh
eVB0cjxHTGNoYXI+IGluZm8gPSBhZG9wdEFycmF5UHRyKG5ldyBHTGNoYXJbbGVuZ3RoXSk7Cisg
ICAgYXV0byBpbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxHTGNoYXJbXT4obGVuZ3RoKTsKICAgICA6
OmdsR2V0U2hhZGVySW5mb0xvZyhzaGFkZXIsIGxlbmd0aCwgJnNpemUsIGluZm8uZ2V0KCkpOwog
CiAgICAgcmV0dXJuIFN0cmluZyhpbmZvLmdldCgpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlU2FuaXRpemVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVNh
bml0aXplci5jcHAJKHJldmlzaW9uIDE1NTk5OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlU2FuaXRpemVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzUsNyArMzUsNiBAQAogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIm9w
ZW50eXBlLXNhbml0aXNlci5oIgogI2luY2x1ZGUgIm90cy1tZW1vcnktc3RyZWFtLmgiCi0jaW5j
bHVkZSA8d3RmL093bkFycmF5UHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJHTC5jcHAJKHJldmlzaW9uIDE1NTk5OSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMSw3ICszMSw2IEBACiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlclNoYWRlclByb2dy
YW0uaCIKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5j
bHVkZSA8d3RmL093bkFycmF5UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9UZW1wb3JhcnlDaGFuZ2Uu
aD4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL1NoYXJlZEJp
dG1hcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luY2UvU2hhcmVkQml0bWFwLmNwcAkocmV2aXNpb24gMTU1OTk5KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvU2hhcmVkQml0bWFwLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjcsOCArMjcsOSBAQAogI2luY2x1ZGUgIlRyYW5zZm9ybWF0aW9uTWF0cml4LmgiCiAj
aW5jbHVkZSAiV2luQ0VHcmFwaGljc0V4dHJhcy5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+
Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRMZWFrQ291bnRlci5oPgogI2luY2x1ZGUgPHd0Zi9P
d25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZExlYWtDb3VudGVyLmg+CisjaW5jbHVk
ZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiAjaW5jbHVkZSA8d2luZG93cy5oPgogCkBAIC03NCw3
ICs3NSw3IEBAIFNoYXJlZEJpdG1hcDo6U2hhcmVkQml0bWFwKGNvbnN0IEludFNpemUKICAgICBp
ZiAoYml0Q291bnQgPT0gQml0bWFwSW5mbzo6Qml0Q291bnQxNikKICAgICAgICAgYnVmZmVyU2l6
ZSAvPSAyOwogCi0gICAgbV9waXhlbERhdGEgPSBhZG9wdEFycmF5UHRyKG5ldyB1bnNpZ25lZFti
dWZmZXJTaXplXSk7CisgICAgbV9waXhlbERhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPHVuc2lnbmVk
W10+KGJ1ZmZlclNpemUpOwogICAgIG1fcGl4ZWxzID0gbV9waXhlbERhdGEuZ2V0KCk7CiAKICAg
ICBpZiAoaW5pdFBpeGVscykKQEAgLTEzMyw3ICsxMzQsNyBAQCBib29sIFNoYXJlZEJpdG1hcDo6
dG8xNmJpdCgpCiAgICAgaW50IHdpZHRoID0gbmV3Qm1wSW5mby53aWR0aCgpOwogICAgIGludCBw
YWRkZWRXaWR0aCA9IG5ld0JtcEluZm8ucGFkZGVkV2lkdGgoKTsKICAgICBpbnQgYnVmZmVyU2l6
ZSA9IHBhZGRlZFdpZHRoICogbmV3Qm1wSW5mby5oZWlnaHQoKTsKLSAgICBPd25BcnJheVB0cjx1
bnNpZ25lZD4gbmV3UGl4ZWxEYXRhID0gYWRvcHRBcnJheVB0cihuZXcgdW5zaWduZWRbYnVmZmVy
U2l6ZSAvIDJdKTsKKyAgICBhdXRvIG5ld1BpeGVsRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8dW5z
aWduZWRbXT4oYnVmZmVyU2l6ZSAvIDIpOwogICAgIHZvaWQqIG5ld1BpeGVscyA9IG5ld1BpeGVs
RGF0YS5nZXQoKTsKIAogICAgIGlmICghbmV3UGl4ZWxzKQpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvU2hhcmVkQml0bWFwLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvU2hhcmVkQml0bWFwLmgJKHJldmlz
aW9uIDE1NTk5OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL1No
YXJlZEJpdG1hcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw5ICsyNSw5IEBACiAjaW5jbHVkZSAi
Qml0bWFwSW5mby5oIgogI2luY2x1ZGUgIkNvbG9yU3BhY2UuaCIKICNpbmNsdWRlICJHcmFwaGlj
c1R5cGVzLmgiCisjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvT3duQXJyYXlQdHIu
aD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
ICNpbmNsdWRlIDx3aW5nZGkuaD4KQEAgLTEzMiw3ICsxMzIsNyBAQCBwcml2YXRlOgogICAgIEJp
dG1hcEluZm8gbV9ibXBJbmZvOwogICAgIE93blB0cjxIQklUTUFQPiBtX2hiaXRtYXA7CiAgICAg
dm9pZCogbV9waXhlbHM7Ci0gICAgT3duQXJyYXlQdHI8dW5zaWduZWQ+IG1fcGl4ZWxEYXRhOwor
ICAgIHN0ZDo6dW5pcXVlX3B0cjx1bnNpZ25lZFtdPiBtX3BpeGVsRGF0YTsKICAgICBDT0xPUlJF
RiBtX3RyYW5zcGFyZW50Q29sb3I7CiAgICAgaW50IG1fdmFsaWRIZWlnaHQ7CiAgICAgYm9vbCBt
X2xvY2tlZDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2Js
YWNrYmVycnkvSlBFR0ltYWdlRGVjb2Rlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYmxhY2tiZXJyeS9KUEVHSW1hZ2VEZWNvZGVyLmNw
cAkocmV2aXNpb24gMTU1OTk5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvYmxhY2tiZXJyeS9KUEVHSW1hZ2VEZWNvZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjYsOCArMjYsNyBAQAogI2luY2x1ZGUgPGVycm5vLmg+CiAjaW5jbHVkZSA8aW1nL2ltZy5oPgog
I2luY2x1ZGUgPHN0cmluZy5oPgotI2luY2x1ZGUgPHd0Zi9Pd25BcnJheVB0ci5oPgotI2luY2x1
ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTEzNSw3ICsxMzQsNyBAQCBpbnQgSW1hZ2VSZWFkZXI6
OmRlY29kZShzaXplX3Qgd2lkdGgsIHNpCiAgICAgY29uc3QgaW50IENvbG9yQ29tcG9uZW50cyA9
IDM7CiAgICAgLy8gVXNlIGEgbXVsdGlwbGUgb2YgMiBieXRlcyB0byBpbXByb3ZlIHBlcmZvcm1h
bmNlCiAgICAgaW50IHN0cmlkZSA9IChDb2xvckNvbXBvbmVudHMgKiB3aWR0aCArIDMpICYgfjM7
Ci0gICAgT3duQXJyYXlQdHI8X3VpbnQ4PiBidWZmZXIgPSBhZG9wdEFycmF5UHRyKG5ldyBfdWlu
dDhbc3RyaWRlICogaGVpZ2h0XSk7CisgICAgYXV0byBidWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PF91aW50OFtdPihzdHJpZGUgKiBoZWlnaHQpOwogICAgIGlmICghYnVmZmVyKQogICAgICAgICBy
ZXR1cm4gLTE7CiAgICAgaW1nLmFjY2Vzcy5kaXJlY3QuZGF0YSA9IGJ1ZmZlci5nZXQoKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURl
Y29kZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwCShyZXZpc2lvbiAxNTU5OTkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDIsOCArNDIsNyBAQAogCiAjaW5jbHVkZSAiQ29sb3IuaCIK
ICNpbmNsdWRlICJwbmcuaCIKLSNpbmNsdWRlIDx3dGYvT3duQXJyYXlQdHIuaD4KLSNpbmNsdWRl
IDx3dGYvUGFzc093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogI2lm
IFVTRShRQ01TTElCKQogI2luY2x1ZGUgInFjbXMuaCIKQEAgLTE3OSw3ICsxNzgsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBjcmVhdGVJbnRlcmxhY2VCdWZmZXIoaW50IHNpemUpIHsgbV9pbnRlcmxh
Y2VCdWZmZXIgPSBuZXcgcG5nX2J5dGVbc2l6ZV07IH0KICNpZiBVU0UoUUNNU0xJQikKICAgICBw
bmdfYnl0ZXAgcm93QnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9yb3dCdWZmZXIuZ2V0KCk7IH0K
LSAgICB2b2lkIGNyZWF0ZVJvd0J1ZmZlcihpbnQgc2l6ZSkgeyBtX3Jvd0J1ZmZlciA9IGFkb3B0
QXJyYXlQdHIobmV3IHBuZ19ieXRlW3NpemVdKTsgfQorICAgIHZvaWQgY3JlYXRlUm93QnVmZmVy
KGludCBzaXplKSB7IG1fcm93QnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxwbmdfYnl0ZVtdPihz
aXplKTsgfQogICAgIHFjbXNfdHJhbnNmb3JtKiBjb2xvclRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0
dXJuIG1fdHJhbnNmb3JtOyB9CiAKICAgICB2b2lkIGNyZWF0ZUNvbG9yVHJhbnNmb3JtKGNvbnN0
IENvbG9yUHJvZmlsZSYgY29sb3JQcm9maWxlLCBib29sIGhhc0FscGhhKQpAQCAtMjE1LDcgKzIx
NCw3IEBAIHByaXZhdGU6CiAgICAgcG5nX2J5dGVwIG1faW50ZXJsYWNlQnVmZmVyOwogI2lmIFVT
RShRQ01TTElCKQogICAgIHFjbXNfdHJhbnNmb3JtKiBtX3RyYW5zZm9ybTsKLSAgICBPd25BcnJh
eVB0cjxwbmdfYnl0ZT4gbV9yb3dCdWZmZXI7CisgICAgc3RkOjp1bmlxdWVfcHRyPHBuZ19ieXRl
W10+IG1fcm93QnVmZmVyOwogI2VuZGlmCiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS93aW4vQ29udGV4dE1lbnVXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9Db250ZXh0TWVudVdpbi5jcHAJKHJldmlzaW9uIDE1NTk5OSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Db250ZXh0TWVudVdpbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRlICJOb2RlLmgiCiAjaW5jbHVkZSAiTm90SW1w
bGVtZW50ZWQuaCIKICNpbmNsdWRlIDx3aW5kb3dzLmg+Ci0jaW5jbHVkZSA8d3RmL093bkFycmF5
UHRyLmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKQEAgLTczLDcgKzczLDcgQEAg
dm9pZCBDb250ZXh0TWVudTo6Z2V0Q29udGV4dE1lbnVJdGVtcyhITQogICAgICAgICB9CiAKICAg
ICAgICAgaW50IG1lbnVTdHJpbmdMZW5ndGggPSBpbmZvLmNjaCArIDE7Ci0gICAgICAgIE93bkFy
cmF5UHRyPFdDSEFSPiBtZW51U3RyaW5nID0gYWRvcHRBcnJheVB0cihuZXcgV0NIQVJbbWVudVN0
cmluZ0xlbmd0aF0pOworICAgICAgICBhdXRvIG1lbnVTdHJpbmcgPSBzdGQ6Om1ha2VfdW5pcXVl
PFdDSEFSW10+KG1lbnVTdHJpbmdMZW5ndGgpOwogICAgICAgICBpbmZvLmR3VHlwZURhdGEgPSBt
ZW51U3RyaW5nLmdldCgpOwogICAgICAgICBpbmZvLmNjaCA9IG1lbnVTdHJpbmdMZW5ndGg7CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Mb2dnaW5nV2luLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTG9nZ2luZ1dpbi5jcHAJKHJldmlz
aW9uIDE1NTk5OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Mb2dnaW5nV2luLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQAogI2lmICFMT0dfRElTQUJMRUQKIAog
I2luY2x1ZGUgPHdpbmRvd3MuaD4KLSNpbmNsdWRlIDx3dGYvT3duQXJyYXlQdHIuaD4KKyNpbmNs
dWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQyLDcgKzQyLDcgQEAgU3RyaW5nIGxvZ0xldmVs
U3RyaW5nKCkKICAgICBpZiAoIWxlbmd0aCkKICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7
CiAKLSAgICBPd25BcnJheVB0cjxjaGFyPiBidWZmZXIgPSBhZG9wdEFycmF5UHRyKG5ldyBjaGFy
W2xlbmd0aF0pOworICAgIGF1dG8gYnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KGxl
bmd0aCk7CiAKICAgICBpZiAoIUdldEVudmlyb25tZW50VmFyaWFibGVBKGxvZ2dpbmdFbnZpcm9u
bWVudFZhcmlhYmxlLCBidWZmZXIuZ2V0KCksIGxlbmd0aCkpCiAgICAgICAgIHJldHVybiBlbXB0
eVN0cmluZygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5QYWNrYWdlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblBhY2thZ2UuY3Bw
CShyZXZpc2lvbiAxNTU5OTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblBhY2th
Z2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw2IEBACiAjaW5jbHVkZSAiVGltZXIu
aCIKICNpbmNsdWRlICJucHJ1bnRpbWVfaW1wbC5oIgogI2luY2x1ZGUgPHN0cmluZy5oPgotI2lu
Y2x1ZGUgPHd0Zi9Pd25BcnJheVB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpJbmRleDogU291cmNlL1dlYkNvcmUvcGx1Z2lucy9ibGFj
a2JlcnJ5L1BsdWdpblZpZXdCbGFja0JlcnJ5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbHVnaW5zL2JsYWNrYmVycnkvUGx1Z2luVmlld0JsYWNrQmVycnkuY3BwCShyZXZpc2lv
biAxNTU5OTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbHVnaW5zL2JsYWNrYmVycnkvUGx1Z2luVmll
d0JsYWNrQmVycnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MCw2ICs3MCw3IEBACiAjaW5jbHVk
ZSA8cnVudGltZS9KU0xvY2suaD4KICNpbmNsdWRlIDxzeXMva2V5Y29kZXMuaD4KICNpbmNsdWRl
IDx2ZWN0b3I+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBjb25zdCB1bnNpZ25l
ZCBVbmluaXRpYWxpemVkQ29vcmRpbmF0ZSA9IDB4ZmZmZmZmZmY7CiAKQEAgLTM2OCw5ICszNjks
OSBAQCB2b2lkIFBsdWdpblZpZXc6OmhhbmRsZVRvdWNoRXZlbnQoVG91Y2hFCiAgICAgbnBUb3Vj
aEV2ZW50LnBvaW50cyA9IDA7CiAgICAgbnBUb3VjaEV2ZW50LnNpemUgPSB0b3VjaExpc3QtPmxl
bmd0aCgpOwogCi0gICAgT3duQXJyYXlQdHI8TlBUb3VjaFBvaW50PiB0b3VjaFBvaW50czsKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8TlBUb3VjaFBvaW50W10+IHRvdWNoUG9pbnRzOwogICAgIGlmICh0
b3VjaExpc3QtPmxlbmd0aCgpKSB7Ci0gICAgICAgIHRvdWNoUG9pbnRzID0gYWRvcHRBcnJheVB0
cihuZXcgTlBUb3VjaFBvaW50W3RvdWNoTGlzdC0+bGVuZ3RoKCldKTsKKyAgICAgICAgdG91Y2hQ
b2ludHMgPSBzdGQ6Om1ha2VfdW5pcXVlPE5QVG91Y2hQb2ludFtdPih0b3VjaExpc3QtPmxlbmd0
aCgpKTsKICAgICAgICAgbnBUb3VjaEV2ZW50LnBvaW50cyA9IHRvdWNoUG9pbnRzLmdldCgpOwog
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdG91Y2hMaXN0LT5sZW5ndGgoKTsgaSsr
KSB7CiAgICAgICAgICAgICBUb3VjaCogdG91Y2hJdGVtID0gdG91Y2hMaXN0LT5pdGVtKGkpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGx1Z2lucy93aW4vUGx1Z2luUGFja2FnZVdpbi5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGx1Z2lucy93aW4vUGx1Z2luUGFja2FnZVdpbi5j
cHAJKHJldmlzaW9uIDE1NTk5OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsdWdpbnMvd2luL1BsdWdp
blBhY2thZ2VXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBACiAjaW5jbHVk
ZSAiVGltZXIuaCIKICNpbmNsdWRlICJucHJ1bnRpbWVfaW1wbC5oIgogI2luY2x1ZGUgPHN0cmlu
Zy5oPgotI2luY2x1ZGUgPHd0Zi9Pd25BcnJheVB0ci5oPgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJF
eHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8c2hsd2Fw
aS5oPgogCkBAIC0xNzEsNyArMTcxLDcgQEAgYm9vbCBQbHVnaW5QYWNrYWdlOjpmZXRjaEluZm8o
KQogICAgIGlmICh2ZXJzaW9uSW5mb1NpemUgPT0gMCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgT3duQXJyYXlQdHI8Y2hhcj4gdmVyc2lvbkluZm9EYXRhID0gYWRvcHRBcnJheVB0cihu
ZXcgY2hhclt2ZXJzaW9uSW5mb1NpemVdKTsKKyAgICBhdXRvIHZlcnNpb25JbmZvRGF0YSA9IHN0
ZDo6bWFrZV91bmlxdWU8Y2hhcltdPih2ZXJzaW9uSW5mb1NpemUpOwogCiAgICAgaWYgKCFHZXRG
aWxlVmVyc2lvbkluZm9XKGNvbnN0X2Nhc3Q8VUNoYXIqPihtX3BhdGguY2hhcmFjdGVyc1dpdGhO
dWxsVGVybWluYXRpb24oKS5kYXRhKCkpLAogICAgICAgICAgICAgMCwgdmVyc2lvbkluZm9TaXpl
LCB2ZXJzaW9uSW5mb0RhdGEuZ2V0KCkpKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>211957</attachid>
            <date>2013-09-17 16:54:23 -0700</date>
            <delta_ts>2013-09-17 17:05:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-121527-20130917165422.patch</filename>
            <type>text/plain</type>
            <size>42957</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NjAxMykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDgxIEBACisyMDEzLTA5LTE3ICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVwbGFjZSB1c2Ugb2YgT3duQXJyYXlQ
dHI8Rm9vPiB3aXRoIHN0ZDo6dW5pcXVlX3B0cjxGb29bXT4gaW4gV2ViQ29yZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIxNTI3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1ZmZl
clNvdXJjZU5vZGU6OnNldEJ1ZmZlcik6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0J1ZmZlclNvdXJjZU5vZGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0
b3JOb2RlLmg6CisgICAgICAgICogY3NzL0NTU1BhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NQYXJzZXI6OnNldHVwUGFyc2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6
Y3VycmVudENoYXJhY3RlcjE2KToKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmg6CisgICAgICAg
ICogaHRtbC9IVE1MQXJlYUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxGcmFtZVNldEVs
ZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojpjb3B5VGV4U3ViSW1h
Z2UyRCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnNpbXVsYXRl
VmVydGV4QXR0cmliMCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OkxSVUltYWdlQnVmZmVyQ2FjaGU6OkxSVUltYWdlQnVmZmVyQ2FjaGUpOgorICAgICAgICAqIGh0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oOgorICAgICAgICAqIHBsYXRmb3JtL1Nj
cm9sbEFuaW1hdG9yTm9uZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vRHluYW1pY3ND
b21wcmVzc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkR5bmFtaWNzQ29tcHJlc3Nvcjo6c2V0
TnVtYmVyT2ZDaGFubmVscyk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21w
cmVzc29yLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vRkZURnJhbWUuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvRkZURnJhbWVHU3RyZWFtZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RkZURnJhbWU6OkZGVEZyYW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwv
U2Nyb2xsYmFyRWZsLmNwcDoKKyAgICAgICAgKFNjcm9sbGJhckVmbDo6dXBkYXRlVGh1bWJQb3Np
dGlvbkFuZFByb3BvcnRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0FOR0xFV2Vi
S2l0QnJpZGdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFOR0xFV2ViS2l0QnJpZGdlOjpjb21w
aWxlU2hhZGVyU291cmNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQzRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dGV4SW1h
Z2UyRFJlc291cmNlU2FmZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0M0QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQz
RFByaXZhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRl
OjpwYWludFRvVGV4dHVyZU1hcHBlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYmxh
Y2tiZXJyeS9MYXllclRleHR1cmUuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nh
L3dpbi9DQUNGTGF5ZXJUcmVlSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXREaXJ0eVJl
Y3RzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHQzRENH
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpJbWFnZUV4dHJhY3Rv
cjo6ZXh0cmFjdEltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGlj
c0NvbnRleHRDRy5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZm
ZXJDRy5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RleHR1cmUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZTo6dXBkYXRlU3ViUmVjdCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovSGFyZkJ1enpTaGFwZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SGFyZkJ1enpTaGFwZXI6OkhhcmZCdXp6U2hhcGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkhhcmZCdXp6U2hhcGVyOjpzZXROb3JtYWxpemVkQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9oYXJmYnV6ei9IYXJmQnV6elNoYXBlci5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9D
YW52YXMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNvbXBpbGVTaGFk
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldEFjdGl2ZUF0dHJp
Yik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0QWN0aXZlVW5pZm9y
bSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0UHJvZ3JhbUluZm9M
b2cpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldFNoYWRlckluZm9M
b2cpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlU2FuaXRp
emVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
ckdMLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9TaGFyZWRCaXRtYXAu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQml0bWFwOjpTaGFyZWRCaXRtYXApOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhcmVkQml0bWFwOjp0bzE2Yml0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy93aW5jZS9TaGFyZWRCaXRtYXAuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9ibGFja2JlcnJ5L0pQRUdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VSZWFkZXI6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQTkdJbWFn
ZVJlYWRlcjo6Y3JlYXRlUm93QnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vQ29udGV4
dE1lbnVXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnU6OmdldENvbnRleHRN
ZW51SXRlbXMpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9Mb2dnaW5nV2luLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmxvZ0xldmVsU3RyaW5nKToKKyAgICAgICAgKiBwbHVnaW5zL1BsdWdpblBh
Y2thZ2UuY3BwOgorICAgICAgICAqIHBsdWdpbnMvYmxhY2tiZXJyeS9QbHVnaW5WaWV3QmxhY2tC
ZXJyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3OjpoYW5kbGVUb3VjaEV2ZW50
KToKKyAgICAgICAgKiBwbHVnaW5zL3dpbi9QbHVnaW5QYWNrYWdlV2luLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlBsdWdpblBhY2thZ2U6OmZldGNoSW5mbyk6CisKIDIwMTMtMDktMTcgIFNhbXVl
bCBXaGl0ZSAgPHNhbXVlbF93aGl0ZUBhcHBsZS5jb20+CiAKICAgICAgICAgQVg6IE1hYyBBWEFS
SUFCdXN5IHNob3VsZCBiZSBBWEVsZW1lbnRCdXN5IChub3QgQVJJQSBzcGVjaWZpYykKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVm
ZmVyU291cmNlTm9kZS5jcHAJKHJldmlzaW9uIDE1NTk5OSkKKysrIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDx3dGYvTWFp
blRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL1N0
ZExpYkV4dHJhcy5oPgogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCkBAIC0zNTUsOCArMzU2LDgg
QEAgYm9vbCBBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OnNldEJ1ZmZlcihBdQogCiAgICAgICAgIG91
dHB1dCgwKS0+c2V0TnVtYmVyT2ZDaGFubmVscyhudW1iZXJPZkNoYW5uZWxzKTsKIAotICAgICAg
ICBtX3NvdXJjZUNoYW5uZWxzID0gYWRvcHRBcnJheVB0cihuZXcgY29uc3QgZmxvYXQqIFtudW1i
ZXJPZkNoYW5uZWxzXSk7Ci0gICAgICAgIG1fZGVzdGluYXRpb25DaGFubmVscyA9IGFkb3B0QXJy
YXlQdHIobmV3IGZsb2F0KiBbbnVtYmVyT2ZDaGFubmVsc10pOworICAgICAgICBtX3NvdXJjZUNo
YW5uZWxzID0gc3RkOjptYWtlX3VuaXF1ZTxjb25zdCBmbG9hdCpbXT4obnVtYmVyT2ZDaGFubmVs
cyk7CisgICAgICAgIG1fZGVzdGluYXRpb25DaGFubmVscyA9IHN0ZDo6bWFrZV91bmlxdWU8Zmxv
YXQqW10+KG51bWJlck9mQ2hhbm5lbHMpOwogCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBudW1iZXJPZkNoYW5uZWxzOyArK2kpIAogICAgICAgICAgICAgbV9zb3VyY2VDaGFubmVs
c1tpXSA9IGJ1ZmZlci0+Z2V0Q2hhbm5lbERhdGEoaSktPmRhdGEoKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5v
ZGUuaAkocmV2aXNpb24gMTU1OTk5KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBA
QAogI2luY2x1ZGUgIkF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5oIgogI2luY2x1ZGUgIkV4Y2Vw
dGlvbkNvZGUuaCIKICNpbmNsdWRlICJQYW5uZXJOb2RlLmgiCi0jaW5jbHVkZSA8d3RmL093bkFy
cmF5UHRyLmg+CisjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KQEAg
LTExNSw4ICsxMTUsOCBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxBdWRpb0J1ZmZlcj4gbV9idWZm
ZXI7CiAKICAgICAvLyBQb2ludGVycyBmb3IgdGhlIGJ1ZmZlciBhbmQgZGVzdGluYXRpb24uCi0g
ICAgT3duQXJyYXlQdHI8Y29uc3QgZmxvYXQqPiBtX3NvdXJjZUNoYW5uZWxzOwotICAgIE93bkFy
cmF5UHRyPGZsb2F0Kj4gbV9kZXN0aW5hdGlvbkNoYW5uZWxzOworICAgIHN0ZDo6dW5pcXVlX3B0
cjxjb25zdCBmbG9hdCpbXT4gbV9zb3VyY2VDaGFubmVsczsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
ZmxvYXQqW10+IG1fZGVzdGluYXRpb25DaGFubmVsczsKIAogICAgIC8vIFVzZWQgZm9yIHRoZSAi
Z2FpbiIgYW5kICJwbGF5YmFja1JhdGUiIGF0dHJpYnV0ZXMuCiAgICAgUmVmUHRyPEF1ZGlvUGFy
YW0+IG1fZ2FpbjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxs
YXRvck5vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L09zY2lsbGF0b3JOb2RlLmgJKHJldmlzaW9uIDE1NTk5OSkKKysrIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyAr
MjgsNiBAQAogI2luY2x1ZGUgIkF1ZGlvQnVzLmgiCiAjaW5jbHVkZSAiQXVkaW9QYXJhbS5oIgog
I2luY2x1ZGUgIkF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5oIgotI2luY2x1ZGUgPHd0Zi9Pd25B
cnJheVB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
ZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
YXJzZXIuY3BwCShyZXZpc2lvbiAxNTU5OTkpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFy
c2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODksNiArODksNyBAQAogI2luY2x1ZGUgPGxpbWl0
cy5oPgogI2luY2x1ZGUgPHd0Zi9CaXRBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9IZXhOdW1iZXIu
aD4KKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL2R0b2EuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWZmZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdCdWlsZGVyLmg+CkBAIC00MDYsNyArNDA3LDcgQEAgdm9pZCBDU1NQYXJzZXI6OnNldHVw
UGFyc2VyKGNvbnN0IGNoYXIqIAogICAgIG1fbGVuZ3RoID0gbGVuZ3RoOwogCiAgICAgaWYgKCFz
dHJpbmdMZW5ndGggfHwgc3RyaW5nLmlzOEJpdCgpKSB7Ci0gICAgICAgIG1fZGF0YVN0YXJ0OCA9
IGFkb3B0QXJyYXlQdHIobmV3IExDaGFyW2xlbmd0aF0pOworICAgICAgICBtX2RhdGFTdGFydDgg
PSBzdGQ6Om1ha2VfdW5pcXVlPExDaGFyW10+KGxlbmd0aCk7CiAgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBtX3BhcnNlZFRleHRQcmVmaXhMZW5ndGg7IGkrKykKICAgICAgICAgICAg
IG1fZGF0YVN0YXJ0OFtpXSA9IHByZWZpeFtpXTsKIApAQCAtNDI4LDcgKzQyOSw3IEBAIHZvaWQg
Q1NTUGFyc2VyOjpzZXR1cFBhcnNlcihjb25zdCBjaGFyKiAKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIG1fZGF0YVN0YXJ0MTYgPSBhZG9wdEFycmF5UHRyKG5ldyBVQ2hhcltsZW5ndGhd
KTsKKyAgICBtX2RhdGFTdGFydDE2ID0gc3RkOjptYWtlX3VuaXF1ZTxVQ2hhcltdPihsZW5ndGgp
OwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3BhcnNlZFRleHRQcmVmaXhMZW5ndGg7
IGkrKykKICAgICAgICAgbV9kYXRhU3RhcnQxNltpXSA9IHByZWZpeFtpXTsKIApAQCAtMTAxODMs
NyArMTAxODQsNyBAQCBpbmxpbmUgVUNoYXIqJiBDU1NQYXJzZXI6OmN1cnJlbnRDaGFyYWN0CiBV
Q2hhciomIENTU1BhcnNlcjo6Y3VycmVudENoYXJhY3RlcjE2KCkKIHsKICAgICBpZiAoIW1fY3Vy
cmVudENoYXJhY3RlcjE2KSB7Ci0gICAgICAgIG1fZGF0YVN0YXJ0MTYgPSBhZG9wdEFycmF5UHRy
KG5ldyBVQ2hhclttX2xlbmd0aF0pOworICAgICAgICBtX2RhdGFTdGFydDE2ID0gc3RkOjptYWtl
X3VuaXF1ZTxVQ2hhcltdPihtX2xlbmd0aCk7CiAgICAgICAgIG1fY3VycmVudENoYXJhY3RlcjE2
ID0gbV9kYXRhU3RhcnQxNi5nZXQoKTsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQYXJzZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2Vy
LmgJKHJldmlzaW9uIDE1NTk5OSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaAko
d29ya2luZyBjb3B5KQpAQCAtMzMsOSArMzMsOSBAQAogI2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29y
ZHMuaCIKICNpbmNsdWRlICJDb2xvci5oIgogI2luY2x1ZGUgIk1lZGlhUXVlcnkuaCIKKyNpbmNs
dWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFz
aFNldC5oPgotI2luY2x1ZGUgPHd0Zi9Pd25BcnJheVB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KIApAQCAtNTU1LDggKzU1
NSw4IEBAIHByaXZhdGU6CiAKICAgICBQYXJzaW5nTW9kZSBtX3BhcnNpbmdNb2RlOwogICAgIGJv
b2wgbV9pczhCaXRTb3VyY2U7Ci0gICAgT3duQXJyYXlQdHI8TENoYXI+IG1fZGF0YVN0YXJ0ODsK
LSAgICBPd25BcnJheVB0cjxVQ2hhcj4gbV9kYXRhU3RhcnQxNjsKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8TENoYXJbXT4gbV9kYXRhU3RhcnQ4OworICAgIHN0ZDo6dW5pcXVlX3B0cjxVQ2hhcltdPiBt
X2RhdGFTdGFydDE2OwogICAgIExDaGFyKiBtX2N1cnJlbnRDaGFyYWN0ZXI4OwogICAgIFVDaGFy
KiBtX2N1cnJlbnRDaGFyYWN0ZXIxNjsKICAgICB1bmlvbiB7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxBcmVhRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEFyZWFFbGVtZW50LmgJKHJldmlzaW9uIDE1NjAwMCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEFyZWFFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAK
IAogI2luY2x1ZGUgIkhUTUxBbmNob3JFbGVtZW50LmgiCiAjaW5jbHVkZSAiTGF5b3V0UmVjdC5o
IgotI2luY2x1ZGUgPHd0Zi9Pd25BcnJheVB0ci5oPgorI2luY2x1ZGUgPG1lbW9yeT4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNl
dEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNl
dEVsZW1lbnQuaAkocmV2aXNpb24gMTU2MDAwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RnJhbWVTZXRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI0LDggKzI0LDggQEAKICNpZm5k
ZWYgSFRNTEZyYW1lU2V0RWxlbWVudF9oCiAjZGVmaW5lIEhUTUxGcmFtZVNldEVsZW1lbnRfaAog
Ci0jaW5jbHVkZSA8d3RmL093bkFycmF5UHRyLmg+CiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIK
KyNpbmNsdWRlIDxtZW1vcnk+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApJbmRleDogU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3Bw
CShyZXZpc2lvbiAxNTU5OTkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJl
bmRlcmluZ0NvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Nyw3ICs3Nyw3IEBACiAjaW5j
bHVkZSA8cnVudGltZS9PcGVyYXRpb25zLmg+CiAjaW5jbHVkZSA8cnVudGltZS9UeXBlZEFycmF5
SW5saW5lcy5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvVWludDMyQXJyYXkuaD4KLSNpbmNsdWRlIDx3
dGYvT3duQXJyYXlQdHIuaD4KKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIu
aD4KIApAQCAtMTQ2OCw3ICsxNDY4LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmNv
cHlUZXhTdWJJbQogICAgICAgICBpZiAoY2xpcDJEKHgsIHksIHdpZHRoLCBoZWlnaHQsIGdldEJv
dW5kRnJhbWVidWZmZXJXaWR0aCgpLCBnZXRCb3VuZEZyYW1lYnVmZmVySGVpZ2h0KCksICZjbGlw
cGVkWCwgJmNsaXBwZWRZLCAmY2xpcHBlZFdpZHRoLCAmY2xpcHBlZEhlaWdodCkpIHsKICAgICAg
ICAgICAgIEdDM0RlbnVtIGZvcm1hdCA9IHRleC0+Z2V0SW50ZXJuYWxGb3JtYXQodGFyZ2V0LCBs
ZXZlbCk7CiAgICAgICAgICAgICBHQzNEZW51bSB0eXBlID0gdGV4LT5nZXRUeXBlKHRhcmdldCwg
bGV2ZWwpOwotICAgICAgICAgICAgT3duQXJyYXlQdHI8dW5zaWduZWQgY2hhcj4gemVybzsKKyAg
ICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjx1bnNpZ25lZCBjaGFyW10+IHplcm87CiAgICAgICAg
ICAgICBpZiAod2lkdGggJiYgaGVpZ2h0KSB7CiAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50
IHNpemU7CiAgICAgICAgICAgICAgICAgR0MzRGVudW0gZXJyb3IgPSBtX2NvbnRleHQtPmNvbXB1
dGVJbWFnZVNpemVJbkJ5dGVzKGZvcm1hdCwgdHlwZSwgd2lkdGgsIGhlaWdodCwgbV91bnBhY2tB
bGlnbm1lbnQsICZzaXplLCAwKTsKQEAgLTE0NzYsNyArMTQ3Niw3IEBAIHZvaWQgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0Ojpjb3B5VGV4U3ViSW0KICAgICAgICAgICAgICAgICAgICAgc3ludGhlc2l6
ZUdMRXJyb3IoZXJyb3IsICJjb3B5VGV4U3ViSW1hZ2UyRCIsICJiYWQgZGltZW5zaW9ucyIpOwog
ICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgIHplcm8gPSBhZG9wdEFycmF5UHRyKG5ldyB1bnNpZ25lZCBjaGFyW3NpemVdKTsKKyAg
ICAgICAgICAgICAgICB6ZXJvID0gc3RkOjptYWtlX3VuaXF1ZTx1bnNpZ25lZCBjaGFyW10+KHNp
emUpOwogICAgICAgICAgICAgICAgIGlmICghemVybykgewogICAgICAgICAgICAgICAgICAgICBz
eW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSwgImNvcHlU
ZXhTdWJJbWFnZTJEIiwgIm91dCBvZiBtZW1vcnkiKTsKICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuOwpAQCAtNTczMCw3ICs1NzMwLDcgQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnNp
bXVsYXRlVmVydAogICAgICAgICAgICAgfHwgYXR0cmliVmFsdWUudmFsdWVbMV0gIT0gbV92ZXJ0
ZXhBdHRyaWIwQnVmZmVyVmFsdWVbMV0KICAgICAgICAgICAgIHx8IGF0dHJpYlZhbHVlLnZhbHVl
WzJdICE9IG1fdmVydGV4QXR0cmliMEJ1ZmZlclZhbHVlWzJdCiAgICAgICAgICAgICB8fCBhdHRy
aWJWYWx1ZS52YWx1ZVszXSAhPSBtX3ZlcnRleEF0dHJpYjBCdWZmZXJWYWx1ZVszXSkpIHsKLSAg
ICAgICAgT3duQXJyYXlQdHI8R0MzRGZsb2F0PiBidWZmZXJEYXRhID0gYWRvcHRBcnJheVB0cihu
ZXcgR0MzRGZsb2F0WyhudW1WZXJ0ZXggKyAxKSAqIDRdKTsKKyAgICAgICAgYXV0byBidWZmZXJE
YXRhID0gc3RkOjptYWtlX3VuaXF1ZTxHQzNEZmxvYXRbXT4oKG51bVZlcnRleCArIDEpICogNCk7
CiAgICAgICAgIGZvciAoR0MzRHNpemVpIGlpID0gMDsgaWkgPCBudW1WZXJ0ZXggKyAxOyArK2lp
KSB7CiAgICAgICAgICAgICBidWZmZXJEYXRhW2lpICogNF0gPSBhdHRyaWJWYWx1ZS52YWx1ZVsw
XTsKICAgICAgICAgICAgIGJ1ZmZlckRhdGFbaWkgKiA0ICsgMV0gPSBhdHRyaWJWYWx1ZS52YWx1
ZVsxXTsKQEAgLTU4NjAsNyArNTg2MCw3IEBAIFN0cmluZyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OmVuc3VyZU5vdE4KIH0KIAogV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpMUlVJbWFnZUJ1ZmZlckNh
Y2hlOjpMUlVJbWFnZUJ1ZmZlckNhY2hlKGludCBjYXBhY2l0eSkKLSAgICA6IG1fYnVmZmVycyhh
ZG9wdEFycmF5UHRyKG5ldyBPd25QdHI8SW1hZ2VCdWZmZXI+W2NhcGFjaXR5XSkpCisgICAgOiBt
X2J1ZmZlcnMoc3RkOjptYWtlX3VuaXF1ZTxPd25QdHI8SW1hZ2VCdWZmZXI+W10+KGNhcGFjaXR5
KSkKICAgICAsIG1fY2FwYWNpdHkoY2FwYWNpdHkpCiB7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaAkocmV2aXNpb24g
MTU1OTk5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250
ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDkgKzM0LDkgQEAKICNpbmNsdWRlICJUaW1lci5o
IgogI2luY2x1ZGUgIldlYkdMR2V0SW5mby5oIgogCisjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1
ZGUgPHJ1bnRpbWUvRmxvYXQzMkFycmF5Lmg+CiAjaW5jbHVkZSA8cnVudGltZS9JbnQzMkFycmF5
Lmg+Ci0jaW5jbHVkZSA8d3RmL093bkFycmF5UHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ2OCw3ICs0NjgsNyBAQCBwcml2
YXRlOgogICAgICAgICBJbWFnZUJ1ZmZlciogaW1hZ2VCdWZmZXIoY29uc3QgSW50U2l6ZSYgc2l6
ZSk7CiAgICAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBidWJibGVUb0Zyb250KGludCBpZHgpOwot
ICAgICAgICBPd25BcnJheVB0cjxPd25QdHI8SW1hZ2VCdWZmZXI+ID4gbV9idWZmZXJzOworICAg
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8T3duUHRyPEltYWdlQnVmZmVyPltdPiBtX2J1ZmZlcnM7CiAg
ICAgICAgIGludCBtX2NhcGFjaXR5OwogICAgIH07CiAgICAgTFJVSW1hZ2VCdWZmZXJDYWNoZSBt
X3ZpZGVvQ2FjaGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRv
ck5vbmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFu
aW1hdG9yTm9uZS5jcHAJKHJldmlzaW9uIDE1NTk5OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbEFuaW1hdG9yTm9uZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDYg
QEAKIAogI2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5o
IgotI2luY2x1ZGUgPHd0Zi9Pd25BcnJheVB0ci5oPgogI2luY2x1ZGUgIlNjcm9sbGFibGVBcmVh
LmgiCiAjaW5jbHVkZSAiU2Nyb2xsYmFyVGhlbWUuaCIKICNpbmNsdWRlIDxhbGdvcml0aG0+Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3IuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29t
cHJlc3Nvci5jcHAJKHJldmlzaW9uIDE1NTk5OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1
LDcgQEAKICNpbmNsdWRlICJBdWRpb0J1cy5oIgogI2luY2x1ZGUgIkF1ZGlvVXRpbGl0aWVzLmgi
CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFz
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMjc0LDggKzI3NSw4IEBAIHZvaWQgRHlu
YW1pY3NDb21wcmVzc29yOjpzZXROdW1iZXJPZkNoYW4KICAgICAgICAgbV9wb3N0RmlsdGVyUGFj
a3MuYXBwZW5kKGFkb3B0UHRyKG5ldyBaZXJvUG9sZUZpbHRlclBhY2s0KCkpKTsKICAgICB9CiAK
LSAgICBtX3NvdXJjZUNoYW5uZWxzID0gYWRvcHRBcnJheVB0cihuZXcgY29uc3QgZmxvYXQqIFtu
dW1iZXJPZkNoYW5uZWxzXSk7Ci0gICAgbV9kZXN0aW5hdGlvbkNoYW5uZWxzID0gYWRvcHRBcnJh
eVB0cihuZXcgZmxvYXQqIFtudW1iZXJPZkNoYW5uZWxzXSk7CisgICAgbV9zb3VyY2VDaGFubmVs
cyA9IHN0ZDo6bWFrZV91bmlxdWU8Y29uc3QgZmxvYXQqW10+KG51bWJlck9mQ2hhbm5lbHMpOwor
ICAgIG1fZGVzdGluYXRpb25DaGFubmVscyA9IHN0ZDo6bWFrZV91bmlxdWU8ZmxvYXQqW10+KG51
bWJlck9mQ2hhbm5lbHMpOwogCiAgICAgbV9jb21wcmVzc29yLnNldE51bWJlck9mQ2hhbm5lbHMo
bnVtYmVyT2ZDaGFubmVscyk7CiAgICAgbV9udW1iZXJPZkNoYW5uZWxzID0gbnVtYmVyT2ZDaGFu
bmVsczsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJl
c3Nvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFt
aWNzQ29tcHJlc3Nvci5oCShyZXZpc2lvbiAxNTU5OTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3IuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsOCAr
MzIsNyBAQAogI2luY2x1ZGUgIkF1ZGlvQXJyYXkuaCIKICNpbmNsdWRlICJEeW5hbWljc0NvbXBy
ZXNzb3JLZXJuZWwuaCIKICNpbmNsdWRlICJaZXJvUG9sZS5oIgotCi0jaW5jbHVkZSA8d3RmL093
bkFycmF5UHRyLmg+CisjaW5jbHVkZSA8bWVtb3J5PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
QEAgLTEwMyw4ICsxMDIsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgVmVjdG9yPE93blB0cjxaZXJvUG9s
ZUZpbHRlclBhY2s0PiA+IG1fcHJlRmlsdGVyUGFja3M7CiAgICAgVmVjdG9yPE93blB0cjxaZXJv
UG9sZUZpbHRlclBhY2s0PiA+IG1fcG9zdEZpbHRlclBhY2tzOwogCi0gICAgT3duQXJyYXlQdHI8
Y29uc3QgZmxvYXQqPiBtX3NvdXJjZUNoYW5uZWxzOwotICAgIE93bkFycmF5UHRyPGZsb2F0Kj4g
bV9kZXN0aW5hdGlvbkNoYW5uZWxzOworICAgIHN0ZDo6dW5pcXVlX3B0cjxjb25zdCBmbG9hdCpb
XT4gbV9zb3VyY2VDaGFubmVsczsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8ZmxvYXQqW10+IG1fZGVz
dGluYXRpb25DaGFubmVsczsKIAogICAgIHZvaWQgc2V0RW1waGFzaXNTdGFnZVBhcmFtZXRlcnMo
dW5zaWduZWQgc3RhZ2VJbmRleCwgZmxvYXQgZ2FpbiwgZmxvYXQgbm9ybWFsaXplZEZyZXF1ZW5j
eSAvKiAwIC0+IDEgKi8pOwogICAgIHZvaWQgc2V0RW1waGFzaXNQYXJhbWV0ZXJzKGZsb2F0IGdh
aW4sIGZsb2F0IGFuY2hvckZyZXEsIGZsb2F0IGZpbHRlclN0YWdlUmF0aW8pOwpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZURnJhbWUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRGcmFtZS5oCShyZXZpc2lvbiAxNTU5OTkpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRGcmFtZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC00OSw2ICs0OSw3IEBACiAKICNpZiBVU0UoV0VCQVVESU9fR1NUUkVBTUVSKQogI2luY2x1
ZGUgPGdsaWIuaD4KKyNpbmNsdWRlIDxtZW1vcnk+CiBHX0JFR0lOX0RFQ0xTCiAjaW5jbHVkZSA8
Z3N0L2ZmdC9nc3RmZnRmMzIuaD4KIEdfRU5EX0RFQ0xTCkBAIC0xNjcsNyArMTY4LDcgQEAgcHJp
dmF0ZToKICNpZiBVU0UoV0VCQVVESU9fR1NUUkVBTUVSKQogICAgIEdzdEZGVEYzMiogbV9mZnQ7
CiAgICAgR3N0RkZURjMyKiBtX2ludmVyc2VGZnQ7Ci0gICAgT3duQXJyYXlQdHI8R3N0RkZURjMy
Q29tcGxleD4gbV9jb21wbGV4RGF0YTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8R3N0RkZURjMyQ29t
cGxleFtdPiBtX2NvbXBsZXhEYXRhOwogICAgIEF1ZGlvRmxvYXRBcnJheSBtX3JlYWxEYXRhOwog
ICAgIEF1ZGlvRmxvYXRBcnJheSBtX2ltYWdEYXRhOwogI2VuZGlmIC8vIFVTRShXRUJBVURJT19H
U1RSRUFNRVIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIv
RkZURnJhbWVHU3RyZWFtZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL2dzdHJlYW1lci9GRlRGcmFtZUdTdHJlYW1lci5jcHAJKHJldmlzaW9uIDE1NTk5
OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9GRlRGcmFtZUdT
dHJlYW1lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKIAogI2luY2x1ZGUg
IlZlY3Rvck1hdGguaCIKICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgorI2luY2x1ZGUgPHd0
Zi9TdGRMaWJFeHRyYXMuaD4KIAogbmFtZXNwYWNlIHsKIApAQCAtNDIsNyArNDMsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBGRlRGcmFtZTo6RkZURnJhbWUodW5zaWduZWQgZmZ0U2l6ZSkKICAg
ICA6IG1fRkZUU2l6ZShmZnRTaXplKQogICAgICwgbV9sb2cyRkZUU2l6ZShzdGF0aWNfY2FzdDx1
bnNpZ25lZD4obG9nMihmZnRTaXplKSkpCi0gICAgLCBtX2NvbXBsZXhEYXRhKGFkb3B0QXJyYXlQ
dHIobmV3IEdzdEZGVEYzMkNvbXBsZXhbdW5wYWNrZWRGRlREYXRhU2l6ZShtX0ZGVFNpemUpXSkp
CisgICAgLCBtX2NvbXBsZXhEYXRhKHN0ZDo6bWFrZV91bmlxdWU8R3N0RkZURjMyQ29tcGxleFtd
Pih1bnBhY2tlZEZGVERhdGFTaXplKG1fRkZUU2l6ZSkpKQogICAgICwgbV9yZWFsRGF0YSh1bnBh
Y2tlZEZGVERhdGFTaXplKG1fRkZUU2l6ZSkpCiAgICAgLCBtX2ltYWdEYXRhKHVucGFja2VkRkZU
RGF0YVNpemUobV9GRlRTaXplKSkKIHsKQEAgLTY1LDcgKzY2LDcgQEAgRkZURnJhbWU6OkZGVEZy
YW1lKCkKIEZGVEZyYW1lOjpGRlRGcmFtZShjb25zdCBGRlRGcmFtZSYgZnJhbWUpCiAgICAgOiBt
X0ZGVFNpemUoZnJhbWUubV9GRlRTaXplKQogICAgICwgbV9sb2cyRkZUU2l6ZShmcmFtZS5tX2xv
ZzJGRlRTaXplKQotICAgICwgbV9jb21wbGV4RGF0YShhZG9wdEFycmF5UHRyKG5ldyBHc3RGRlRG
MzJDb21wbGV4W3VucGFja2VkRkZURGF0YVNpemUobV9GRlRTaXplKV0pKQorICAgICwgbV9jb21w
bGV4RGF0YShzdGQ6Om1ha2VfdW5pcXVlPEdzdEZGVEYzMkNvbXBsZXhbXT4odW5wYWNrZWRGRlRE
YXRhU2l6ZShtX0ZGVFNpemUpKSkKICAgICAsIG1fcmVhbERhdGEodW5wYWNrZWRGRlREYXRhU2l6
ZShmcmFtZS5tX0ZGVFNpemUpKQogICAgICwgbV9pbWFnRGF0YSh1bnBhY2tlZEZGVERhdGFTaXpl
KGZyYW1lLm1fRkZUU2l6ZSkpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwv
U2Nyb2xsYmFyRWZsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9l
ZmwvU2Nyb2xsYmFyRWZsLmNwcAkocmV2aXNpb24gMTU1OTk5KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZWZsL1Njcm9sbGJhckVmbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4
LDcgQEAKICNpbmNsdWRlIDxFdmFzLmg+CiAjaW5jbHVkZSA8bmV3PgogI2luY2x1ZGUgPHN0cmlu
Zz4KLSNpbmNsdWRlIDx3dGYvT3duQXJyYXlQdHIuaD4KKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0
cmFzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiB1c2luZyBuYW1lc3BhY2Ug
c3RkOwpAQCAtMTcxLDcgKzE3MSw3IEBAIHZvaWQgU2Nyb2xsYmFyRWZsOjp1cGRhdGVUaHVtYlBv
c2l0aW9uQW4KICAgICBtX2xhc3RUb3RhbFNpemUgPSB0U2l6ZTsKICAgICBtX2xhc3RWaXNpYmxl
U2l6ZSA9IHZTaXplOwogCi0gICAgT3duQXJyYXlQdHI8Y2hhcj4gYnVmZmVyID0gYWRvcHRBcnJh
eVB0cihuZXcgY2hhcltzaXplb2YoRWRqZV9NZXNzYWdlX0Zsb2F0X1NldCkgKyBzaXplb2YoZG91
YmxlKV0pOworICAgIGF1dG8gYnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KHNpemVv
ZihFZGplX01lc3NhZ2VfRmxvYXRfU2V0KSArIHNpemVvZihkb3VibGUpKTsKICAgICBFZGplX01l
c3NhZ2VfRmxvYXRfU2V0KiBtZXNzYWdlID0gbmV3KGJ1ZmZlci5nZXQoKSkgRWRqZV9NZXNzYWdl
X0Zsb2F0X1NldDsKICAgICBtZXNzYWdlLT5jb3VudCA9IDI7CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0FOR0xFV2ViS2l0QnJpZGdlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BTkdMRVdlYktpdEJyaWRnZS5jcHAJ
KHJldmlzaW9uIDE1NTk5OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0FO
R0xFV2ViS2l0QnJpZGdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQAogI2lm
IFVTRSgzRF9HUkFQSElDUykKIAogI2luY2x1ZGUgIkFOR0xFV2ViS2l0QnJpZGdlLmgiCi0jaW5j
bHVkZSA8d3RmL093bkFycmF5UHRyLmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTE5Myw3ICsxOTMsNyBAQCBib29sIEFOR0xFV2Vi
S2l0QnJpZGdlOjpjb21waWxlU2hhZGVyU291CiAgICAgaWYgKCF2YWxpZGF0ZVN1Y2Nlc3MpIHsK
ICAgICAgICAgaW50IGxvZ1NpemUgPSBnZXRWYWxpZGF0aW9uUmVzdWx0VmFsdWUoY29tcGlsZXIs
IFNIX0lORk9fTE9HX0xFTkdUSCk7CiAgICAgICAgIGlmIChsb2dTaXplID4gMSkgewotICAgICAg
ICAgICAgT3duQXJyYXlQdHI8Y2hhcj4gbG9nQnVmZmVyID0gYWRvcHRBcnJheVB0cihuZXcgY2hh
cltsb2dTaXplXSk7CisgICAgICAgICAgICBhdXRvIGxvZ0J1ZmZlciA9IHN0ZDo6bWFrZV91bmlx
dWU8Y2hhcltdPihsb2dTaXplKTsKICAgICAgICAgICAgIGlmIChsb2dCdWZmZXIpIHsKICAgICAg
ICAgICAgICAgICBTaEdldEluZm9Mb2coY29tcGlsZXIsIGxvZ0J1ZmZlci5nZXQoKSk7CiAgICAg
ICAgICAgICAgICAgc2hhZGVyVmFsaWRhdGlvbkxvZyA9IGxvZ0J1ZmZlci5nZXQoKTsKQEAgLTIw
NCw3ICsyMDQsNyBAQCBib29sIEFOR0xFV2ViS2l0QnJpZGdlOjpjb21waWxlU2hhZGVyU291CiAK
ICAgICBpbnQgdHJhbnNsYXRpb25MZW5ndGggPSBnZXRWYWxpZGF0aW9uUmVzdWx0VmFsdWUoY29t
cGlsZXIsIFNIX09CSkVDVF9DT0RFX0xFTkdUSCk7CiAgICAgaWYgKHRyYW5zbGF0aW9uTGVuZ3Ro
ID4gMSkgewotICAgICAgICBPd25BcnJheVB0cjxjaGFyPiB0cmFuc2xhdGlvbkJ1ZmZlciA9IGFk
b3B0QXJyYXlQdHIobmV3IGNoYXJbdHJhbnNsYXRpb25MZW5ndGhdKTsKKyAgICAgICAgYXV0byB0
cmFuc2xhdGlvbkJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltdPih0cmFuc2xhdGlvbkxl
bmd0aCk7CiAgICAgICAgIGlmICghdHJhbnNsYXRpb25CdWZmZXIpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgIFNoR2V0T2JqZWN0Q29kZShjb21waWxlciwgdHJhbnNsYXRpb25C
dWZmZXIuZ2V0KCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0M0QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmNwcAkocmV2aXNpb24gMTU1OTk5KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3IEBACiAjZW5kaWYKIAogI2luY2x1ZGUgPHJ1bnRpbWUv
QXJyYXlCdWZmZXJWaWV3Lmg+Ci0jaW5jbHVkZSA8d3RmL093bkFycmF5UHRyLmg+CisjaW5jbHVk
ZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTExMyw3
ICsxMTMsNyBAQCBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdCBnZXREYXRhRm9yCiBib29s
IEdyYXBoaWNzQ29udGV4dDNEOjp0ZXhJbWFnZTJEUmVzb3VyY2VTYWZlKEdDM0RlbnVtIHRhcmdl
dCwgR0MzRGludCBsZXZlbCwgR0MzRGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDM0RzaXplaSB3aWR0
aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRGludCBib3JkZXIsIEdDM0RlbnVtIGZvcm1hdCwgR0Mz
RGVudW0gdHlwZSwgR0MzRGludCB1bnBhY2tBbGlnbm1lbnQpCiB7CiAgICAgQVNTRVJUKHVucGFj
a0FsaWdubWVudCA9PSAxIHx8IHVucGFja0FsaWdubWVudCA9PSAyIHx8IHVucGFja0FsaWdubWVu
dCA9PSA0IHx8IHVucGFja0FsaWdubWVudCA9PSA4KTsKLSAgICBPd25BcnJheVB0cjx1bnNpZ25l
ZCBjaGFyPiB6ZXJvOworICAgIHN0ZDo6dW5pcXVlX3B0cjx1bnNpZ25lZCBjaGFyW10+IHplcm87
CiAgICAgaWYgKCFpc1Jlc291cmNlU2FmZSgpICYmIHdpZHRoID4gMCAmJiBoZWlnaHQgPiAwKSB7
CiAgICAgICAgIHVuc2lnbmVkIGludCBzaXplOwogICAgICAgICBHQzNEZW51bSBlcnJvciA9IGNv
bXB1dGVJbWFnZVNpemVJbkJ5dGVzKGZvcm1hdCwgdHlwZSwgd2lkdGgsIGhlaWdodCwgdW5wYWNr
QWxpZ25tZW50LCAmc2l6ZSwgMCk7CkBAIC0xMjEsNyArMTIxLDcgQEAgYm9vbCBHcmFwaGljc0Nv
bnRleHQzRDo6dGV4SW1hZ2UyRFJlc291cgogICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3Io
ZXJyb3IpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9Ci0gICAgICAgIHpl
cm8gPSBhZG9wdEFycmF5UHRyKG5ldyB1bnNpZ25lZCBjaGFyW3NpemVdKTsKKyAgICAgICAgemVy
byA9IHN0ZDo6bWFrZV91bmlxdWU8dW5zaWduZWQgY2hhcltdPihzaXplKTsKICAgICAgICAgaWYg
KCF6ZXJvKSB7CiAgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQz
RDo6SU5WQUxJRF9WQUxVRSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMTg0LDcg
KzExODQsOCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBjb25zdCB1bnNpZ25lZCBNYXhOdW1i
ZXJPZkNvbXBvbmVudHMgPSA0OwogICAgICAgICBjb25zdCB1bnNpZ25lZCBNYXhCeXRlc1BlckNv
bXBvbmVudCAgPSA0OwotICAgICAgICBtX3VucGFja2VkSW50ZXJtZWRpYXRlU3JjRGF0YSA9IGFk
b3B0QXJyYXlQdHIobmV3IHVpbnQ4X3RbbV93aWR0aCAqIE1heE51bWJlck9mQ29tcG9uZW50cyAq
TWF4Qnl0ZXNQZXJDb21wb25lbnRdKTsKKyAgICAgICAgbV91bnBhY2tlZEludGVybWVkaWF0ZVNy
Y0RhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPHVpbnQ4X3RbXT4obV93aWR0aCAqIE1heE51bWJlck9m
Q29tcG9uZW50cyAqIE1heEJ5dGVzUGVyQ29tcG9uZW50KTsKKwogICAgICAgICBBU1NFUlQobV91
bnBhY2tlZEludGVybWVkaWF0ZVNyY0RhdGEuZ2V0KCkpOwogICAgIH0KIApAQCAtMTIwNiw3ICsx
MjA3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkKiBjb25zdCBtX2RzdFN0YXJ0OwogICAgIGNvbnN0
IGludCBtX3NyY1N0cmlkZSwgbV9kc3RTdHJpZGU7CiAgICAgYm9vbCBtX3N1Y2Nlc3M7Ci0gICAg
T3duQXJyYXlQdHI8dWludDhfdD4gbV91bnBhY2tlZEludGVybWVkaWF0ZVNyY0RhdGE7CisgICAg
c3RkOjp1bmlxdWVfcHRyPHVpbnQ4X3RbXT4gbV91bnBhY2tlZEludGVybWVkaWF0ZVNyY0RhdGE7
CiB9OwogCiB2b2lkIEZvcm1hdENvbnZlcnRlcjo6Y29udmVydChHcmFwaGljc0NvbnRleHQzRDo6
RGF0YUZvcm1hdCBzcmNGb3JtYXQsIEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0IGRzdEZv
cm1hdCwgR3JhcGhpY3NDb250ZXh0M0Q6OkFscGhhT3AgYWxwaGFPcCkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAko
cmV2aXNpb24gMTU1OTk5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0M0QuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsMTAgKzMwLDEwIEBACiAjaW5j
bHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1M
YXllci5oIgorI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2lu
Y2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgot
I2luY2x1ZGUgPHd0Zi9Pd25BcnJheVB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTkwMCw3ICs5MDAsNyBAQCBw
dWJsaWM6CiAgICAgICAgIENHSW1hZ2VSZWYgbV9jZ0ltYWdlOwogICAgICAgICBSZXRhaW5QdHI8
Q0dJbWFnZVJlZj4gbV9kZWNvZGVkSW1hZ2U7CiAgICAgICAgIFJldGFpblB0cjxDRkRhdGFSZWY+
IG1fcGl4ZWxEYXRhOwotICAgICAgICBPd25BcnJheVB0cjx1aW50OF90PiBtX2Zvcm1hbGl6ZWRS
R0JBOERhdGE7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjx1aW50OF90W10+IG1fZm9ybWFsaXpl
ZFJHQkE4RGF0YTsKICNlbGlmIFBMQVRGT1JNKFFUKQogICAgICAgICBRSW1hZ2UgbV9xdEltYWdl
OwogI2VsaWYgUExBVEZPUk0oQkxBQ0tCRVJSWSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRl
LmNwcAkocmV2aXNpb24gMTU1OTk5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyAr
MjQsNyBAQAogCiAjaW5jbHVkZSAiSG9zdFdpbmRvdy5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVu
dGVkLmgiCi0jaW5jbHVkZSA8d3RmL093bkFycmF5UHRyLmg+CisjaW5jbHVkZSA8d3RmL1N0ZExp
YkV4dHJhcy5oPgogCiAjaWYgUExBVEZPUk0oTklYKSAmJiBVU0UoRUdMKQogI2luY2x1ZGUgIkdM
Q29udGV4dEZyb21DdXJyZW50RUdMLmgiCkBAIC0xMDcsNyArMTA3LDcgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHQzRFByaXZhdGU6OnBhaW50VG9UZQogICAgICAgICBjb25zdCBpbnQgd2lkdGggPSBt
X2NvbnRleHQtPm1fY3VycmVudFdpZHRoOwogICAgICAgICBpbnQgdG90YWxCeXRlcyA9IHdpZHRo
ICogaGVpZ2h0ICogNDsKIAotICAgICAgICBPd25BcnJheVB0cjx1bnNpZ25lZCBjaGFyPiBwaXhl
bHMgPSBhZG9wdEFycmF5UHRyKG5ldyB1bnNpZ25lZCBjaGFyW3RvdGFsQnl0ZXNdKTsKKyAgICAg
ICAgYXV0byBwaXhlbHMgPSBzdGQ6Om1ha2VfdW5pcXVlPHVuc2lnbmVkIGNoYXJbXT4odG90YWxC
eXRlcyk7CiAgICAgICAgIGlmICghcGl4ZWxzKQogICAgICAgICAgICAgcmV0dXJuOwogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyVGV4dHVy
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxh
Y2tiZXJyeS9MYXllclRleHR1cmUuY3BwCShyZXZpc2lvbiAxNTU5OTkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyVGV4dHVyZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRlIDxCbGFja0JlcnJ5UGxhdGZvcm1H
cmFwaGljc0NvbnRleHQuaD4KICNpbmNsdWRlIDxHTEVTMi9nbDIuaD4KICNpbmNsdWRlIDx3dGYv
Q3VycmVudFRpbWUuaD4KLSNpbmNsdWRlIDx3dGYvT3duQXJyYXlQdHIuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93
aW4vQ0FDRkxheWVyVHJlZUhvc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9zdC5jcHAJKHJldmlzaW9uIDE1
NTk5OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5
ZXJUcmVlSG9zdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAKICNpbmNsdWRl
IDxsaW1pdHMuaD4KICNpbmNsdWRlIDxRdWFydHpDb3JlL0NBQmFzZS5oPgogI2luY2x1ZGUgPHd0
Zi9DdXJyZW50VGltZS5oPgotI2luY2x1ZGUgPHd0Zi9Pd25BcnJheVB0ci5oPgorI2luY2x1ZGUg
PHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvd2luL0dESU9iamVjdC5oPgogCiAj
aWZkZWYgREVCVUdfQUxMCkBAIC0yNTAsNyArMjUwLDcgQEAgc3RhdGljIHZvaWQgZ2V0RGlydHlS
ZWN0cyhIV05EIHdpbmRvdywgVgogICAgIH0KIAogICAgIERXT1JEIGRhdGFTaXplID0gOjpHZXRS
ZWdpb25EYXRhKHJlZ2lvbi5nZXQoKSwgMCwgMCk7Ci0gICAgT3duQXJyYXlQdHI8dW5zaWduZWQg
Y2hhcj4gcmVnaW9uRGF0YUJ1ZmZlciA9IGFkb3B0QXJyYXlQdHIobmV3IHVuc2lnbmVkIGNoYXJb
ZGF0YVNpemVdKTsKKyAgICBhdXRvIHJlZ2lvbkRhdGFCdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PHVuc2lnbmVkIGNoYXJbXT4oZGF0YVNpemUpOwogICAgIFJHTkRBVEEqIHJlZ2lvbkRhdGEgPSBy
ZWludGVycHJldF9jYXN0PFJHTkRBVEEqPihyZWdpb25EYXRhQnVmZmVyLmdldCgpKTsKICAgICBp
ZiAoITo6R2V0UmVnaW9uRGF0YShyZWdpb24uZ2V0KCksIGRhdGFTaXplLCByZWdpb25EYXRhKSkK
ICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvR3JhcGhpY3NDb250ZXh0M0RDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0M0RDRy5jcHAJKHJldmlzaW9uIDE1
NTk5OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29u
dGV4dDNEQ0cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSA8
Q29yZUdyYXBoaWNzL0NHSW1hZ2UuaD4KIAogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNp
bmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAt
NDc5LDcgKzQ4MCw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OkltYWdlRXh0cmFjdG9yOjoK
ICAgICAvLyBidXQgaXQgd291bGQgcHJlbXVsdGlwbHkgdGhlIGFscGhhIGNoYW5uZWwgYXMgYSBz
aWRlIGVmZmVjdC4KICAgICAvLyBQcmVmZXIgdG8gbWFubnVhbGx5IENvbnZlcnQgMTZiaXQgcGVy
LWNvbXBvbmVudCBmb3JtYXRzIHRvIFJHQkE4IGZvcm1hdHMgaW5zdGVhZC4KICAgICBpZiAoYml0
c1BlckNvbXBvbmVudCA9PSAxNikgewotICAgICAgICBtX2Zvcm1hbGl6ZWRSR0JBOERhdGEgPSBh
ZG9wdEFycmF5UHRyKG5ldyB1aW50OF90W21faW1hZ2VXaWR0aCAqIG1faW1hZ2VIZWlnaHQgKiA0
XSk7CisgICAgICAgIG1fZm9ybWFsaXplZFJHQkE4RGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8dWlu
dDhfdFtdPihtX2ltYWdlV2lkdGggKiBtX2ltYWdlSGVpZ2h0ICogNCk7CiAgICAgICAgIGNvbnN0
IHVpbnQxNl90KiBzb3VyY2UgPSByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQxNl90Kj4obV9p
bWFnZVBpeGVsRGF0YSk7CiAgICAgICAgIHVpbnQ4X3QqIGRlc3RpbmF0aW9uID0gbV9mb3JtYWxp
emVkUkdCQThEYXRhLmdldCgpOwogICAgICAgICBjb25zdCBwdHJkaWZmX3Qgc3JjU3RyaWRlSW5F
bGVtZW50cyA9IGJ5dGVzUGVyUm93IC8gc2l6ZW9mKHVpbnQxNl90KTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRl
eHRDRy5jcHAJKHJldmlzaW9uIDE1NTk5OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyAr
NDEsNiBAQAogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NvcmVH
cmFwaGljcy5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+Ci0jaW5jbHVkZSA8d3RmL093
bkFycmF5UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCiAjaWYgUExBVEZPUk0o
TUFDKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZm
ZXJDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VCdWZmZXJDRy5jcHAJKHJldmlzaW9uIDE1NTk5OSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zOCw3ICszOCw2IEBACiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNsdWRlIDx3
dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgotI2lu
Y2x1ZGUgPHd0Zi9Pd25BcnJheVB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9CYXNlNjQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9UZXh0dXJlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4
dHVyZS5jcHAJKHJldmlzaW9uIDE1NTk5OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dwdS9UZXh0dXJlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsOSArMzgsOCBAQAog
I2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCiAj
aW5jbHVkZSAiSW50UmVjdC5oIgotCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgotI2luY2x1ZGUgPHd0
Zi9Pd25BcnJheVB0ci5oPgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogdXNpbmcg
bmFtZXNwYWNlIHN0ZDsKIApAQCAtMTc0LDcgKzE3Myw3IEBAIHZvaWQgVGV4dHVyZTo6dXBkYXRl
U3ViUmVjdCh2b2lkKiBwaXhlbHMKICAgICBpbnQgdGVtcEJ1ZmZTaXplID0gLy8gVGVtcG9yYXJ5
IGJ1ZmZlciBzaXplIGlzIHRoZSBzbWFsbGVyIG9mIHRoZSBtYXggdGV4dHVyZSBzaXplIG9yIHRo
ZSB1cGRhdGVSZWN0U2FuaXRpemVkCiAgICAgICAgIG1pbihtX3RpbGVzLm1heFRleHR1cmVTaXpl
KCkud2lkdGgoKSwgbV90aWxlcy5ib3JkZXJUZXhlbHMoKSArIHVwZGF0ZVJlY3RTYW5pdGl6ZWQu
d2lkdGgoKSkgKgogICAgICAgICBtaW4obV90aWxlcy5tYXhUZXh0dXJlU2l6ZSgpLmhlaWdodCgp
LCBtX3RpbGVzLmJvcmRlclRleGVscygpICsgdXBkYXRlUmVjdFNhbml0aXplZC5oZWlnaHQoKSk7
Ci0gICAgT3duQXJyYXlQdHI8dWludDMyX3Q+IHRlbXBCdWZmID0gYWRvcHRBcnJheVB0cihuZXcg
dWludDMyX3RbdGVtcEJ1ZmZTaXplXSk7CisgICAgYXV0byB0ZW1wQnVmZiA9IHN0ZDo6bWFrZV91
bmlxdWU8dWludDMyX3RbXT4odGVtcEJ1ZmZTaXplKTsKIAogICAgIGZvciAoaW50IHRpbGUgPSAw
OyB0aWxlIDwgbV90aWxlcy5udW1UaWxlc1goKSAqIG1fdGlsZXMubnVtVGlsZXNZKCk7IHRpbGUr
KykgewogICAgICAgICBpbnQgeEluZGV4ID0gdGlsZSAlIG1fdGlsZXMubnVtVGlsZXNYKCk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9IYXJmQnV6elNo
YXBlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
aGFyZmJ1enovSGFyZkJ1enpTaGFwZXIuY3BwCShyZXZpc2lvbiAxNTU5OTkpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9IYXJmQnV6elNoYXBlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlIDx1bmljb2RlL25vcm1senIu
aD4KICNpbmNsdWRlIDx1bmljb2RlL3VjaGFyLmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMu
aD4KKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgogI2luY2x1ZGUgPHd0Zi91bmljb2RlL1VuaWNvZGUuaD4KIApAQCAtMTk1LDcgKzE5Niw3IEBA
IEhhcmZCdXp6U2hhcGVyOjpIYXJmQnV6elNoYXBlcihjb25zdCBGb24KICAgICAsIG1fZnJvbUlu
ZGV4KDApCiAgICAgLCBtX3RvSW5kZXgobV9ydW4ubGVuZ3RoKCkpCiB7Ci0gICAgbV9ub3JtYWxp
emVkQnVmZmVyID0gYWRvcHRBcnJheVB0cihuZXcgVUNoYXJbbV9ydW4ubGVuZ3RoKCkgKyAxXSk7
CisgICAgbV9ub3JtYWxpemVkQnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxVQ2hhcltdPihtX3J1
bi5sZW5ndGgoKSArIDEpOwogICAgIG1fbm9ybWFsaXplZEJ1ZmZlckxlbmd0aCA9IG1fcnVuLmxl
bmd0aCgpOwogICAgIG5vcm1hbGl6ZUNoYXJhY3RlcnMobV9ydW4sIG1fbm9ybWFsaXplZEJ1ZmZl
ci5nZXQoKSwgbV9ub3JtYWxpemVkQnVmZmVyTGVuZ3RoKTsKICAgICBzZXRQYWRkaW5nKG1fcnVu
LmV4cGFuc2lvbigpKTsKQEAgLTI3Nyw3ICsyNzgsNyBAQCB2b2lkIEhhcmZCdXp6U2hhcGVyOjpz
ZXROb3JtYWxpemVkQnVmZmVyCiAgICAgICAgIHNvdXJjZVRleHQgPSBub3JtYWxpemVkU3RyaW5n
LmdldEJ1ZmZlcigpOwogICAgIH0KIAotICAgIG1fbm9ybWFsaXplZEJ1ZmZlciA9IGFkb3B0QXJy
YXlQdHIobmV3IFVDaGFyW21fbm9ybWFsaXplZEJ1ZmZlckxlbmd0aCArIDFdKTsKKyAgICBtX25v
cm1hbGl6ZWRCdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFVDaGFyW10+KG1fbm9ybWFsaXplZEJ1
ZmZlckxlbmd0aCArIDEpOwogICAgIG5vcm1hbGl6ZVNwYWNlc0FuZE1pcnJvckNoYXJzKHNvdXJj
ZVRleHQsIG1fbm9ybWFsaXplZEJ1ZmZlci5nZXQoKSwgbV9ub3JtYWxpemVkQnVmZmVyTGVuZ3Ro
LCBub3JtYWxpemVNb2RlKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvaGFyZmJ1enovSGFyZkJ1enpTaGFwZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9IYXJmQnV6elNoYXBlci5oCShyZXZpc2lv
biAxNTU5OTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9I
YXJmQnV6elNoYXBlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw4ICszNSw4IEBACiAjaW5jbHVk
ZSAiR2x5cGhCdWZmZXIuaCIKICNpbmNsdWRlICJUZXh0UnVuLmgiCiAjaW5jbHVkZSAiaGIuaCIK
KyNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KLSNpbmNsdWRlIDx3
dGYvT3duQXJyYXlQdHIuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC0xMjksNyArMTI5LDcg
QEAgcHJpdmF0ZToKICAgICBHbHlwaEJ1ZmZlckFkdmFuY2UgY3JlYXRlR2x5cGhCdWZmZXJBZHZh
bmNlKGZsb2F0LCBmbG9hdCk7CiAKICAgICBjb25zdCBGb250KiBtX2ZvbnQ7Ci0gICAgT3duQXJy
YXlQdHI8VUNoYXI+IG1fbm9ybWFsaXplZEJ1ZmZlcjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VUNo
YXJbXT4gbV9ub3JtYWxpemVkQnVmZmVyOwogICAgIHVuc2lnbmVkIG1fbm9ybWFsaXplZEJ1ZmZl
ckxlbmd0aDsKICAgICBjb25zdCBUZXh0UnVuJiBtX3J1bjsKIApJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9u
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwCShyZXZpc2lvbiAxNTU5OTkpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0
M0RPcGVuR0xDb21tb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3ICs1MCw2IEBACiAjaW5j
bHVkZSA8cnVudGltZS9JbnQzMkFycmF5Lmg+CiAjaW5jbHVkZSA8cnVudGltZS9VaW50OEFycmF5
Lmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KLSNpbmNsdWRlIDx3dGYvT3duQXJyYXlQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKICNpZiBVU0UoT1BFTkdMX0VT
XzIpCkBAIC0xMDIsNyArMTAxLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cGFpbnRSZW5k
ZXJpbmdSZQogICAgIGludCByb3dCeXRlcyA9IG1fY3VycmVudFdpZHRoICogNDsKICAgICBpbnQg
dG90YWxCeXRlcyA9IHJvd0J5dGVzICogbV9jdXJyZW50SGVpZ2h0OwogCi0gICAgT3duQXJyYXlQ
dHI8dW5zaWduZWQgY2hhcj4gcGl4ZWxzID0gYWRvcHRBcnJheVB0cihuZXcgdW5zaWduZWQgY2hh
clt0b3RhbEJ5dGVzXSk7CisgICAgYXV0byBwaXhlbHMgPSBzdGQ6Om1ha2VfdW5pcXVlPHVuc2ln
bmVkIGNoYXJbXT4odG90YWxCeXRlcyk7CiAgICAgaWYgKCFwaXhlbHMpCiAgICAgICAgIHJldHVy
bjsKIApAQCAtNDY2LDcgKzQ2NSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNvbXBpbGVT
aGFkZXIoUGwKICAgICAgICAgR3JhcGhpY3NDb250ZXh0M0Q6OlNoYWRlclNvdXJjZUVudHJ5JiBl
bnRyeSA9IHJlc3VsdC0+dmFsdWU7CiAKICAgICAgICAgR0xzaXplaSBzaXplID0gMDsKLSAgICAg
ICAgT3duQXJyYXlQdHI8R0xjaGFyPiBpbmZvID0gYWRvcHRBcnJheVB0cihuZXcgR0xjaGFyW2xl
bmd0aF0pOworICAgICAgICBhdXRvIGluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPEdMY2hhcltdPihs
ZW5ndGgpOwogICAgICAgICA6OmdsR2V0U2hhZGVySW5mb0xvZyhzaGFkZXIsIGxlbmd0aCwgJnNp
emUsIGluZm8uZ2V0KCkpOwogCiAgICAgICAgIGVudHJ5LmxvZyA9IGluZm8uZ2V0KCk7CkBAIC02
MTksNyArNjE4LDcgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0QWN0aXZlQXR0cmliKAog
ICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIEdMaW50IG1heEF0dHJpYnV0ZVNpemUgPSAw
OwogICAgIDo6Z2xHZXRQcm9ncmFtaXYocHJvZ3JhbSwgR0xfQUNUSVZFX0FUVFJJQlVURV9NQVhf
TEVOR1RILCAmbWF4QXR0cmlidXRlU2l6ZSk7Ci0gICAgT3duQXJyYXlQdHI8R0xjaGFyPiBuYW1l
ID0gYWRvcHRBcnJheVB0cihuZXcgR0xjaGFyW21heEF0dHJpYnV0ZVNpemVdKTsgLy8gR0xfQUNU
SVZFX0FUVFJJQlVURV9NQVhfTEVOR1RIIGluY2x1ZGVzIG51bGwgdGVybWluYXRpb24uCisgICAg
YXV0byBuYW1lID0gc3RkOjptYWtlX3VuaXF1ZTxHTGNoYXJbXT4obWF4QXR0cmlidXRlU2l6ZSk7
IC8vIEdMX0FDVElWRV9BVFRSSUJVVEVfTUFYX0xFTkdUSCBpbmNsdWRlcyBudWxsIHRlcm1pbmF0
aW9uLgogICAgIEdMc2l6ZWkgbmFtZUxlbmd0aCA9IDA7CiAgICAgR0xpbnQgc2l6ZSA9IDA7CiAg
ICAgR0xlbnVtIHR5cGUgPSAwOwpAQCAtNjQ2LDcgKzY0NSw3IEBAIGJvb2wgR3JhcGhpY3NDb250
ZXh0M0Q6OmdldEFjdGl2ZVVuaWZvcm0KICAgICBHTGludCBtYXhVbmlmb3JtU2l6ZSA9IDA7CiAg
ICAgOjpnbEdldFByb2dyYW1pdihwcm9ncmFtLCBHTF9BQ1RJVkVfVU5JRk9STV9NQVhfTEVOR1RI
LCAmbWF4VW5pZm9ybVNpemUpOwogCi0gICAgT3duQXJyYXlQdHI8R0xjaGFyPiBuYW1lID0gYWRv
cHRBcnJheVB0cihuZXcgR0xjaGFyW21heFVuaWZvcm1TaXplXSk7IC8vIEdMX0FDVElWRV9VTklG
T1JNX01BWF9MRU5HVEggaW5jbHVkZXMgbnVsbCB0ZXJtaW5hdGlvbi4KKyAgICBhdXRvIG5hbWUg
PSBzdGQ6Om1ha2VfdW5pcXVlPEdMY2hhcltdPihtYXhVbmlmb3JtU2l6ZSk7IC8vIEdMX0FDVElW
RV9VTklGT1JNX01BWF9MRU5HVEggaW5jbHVkZXMgbnVsbCB0ZXJtaW5hdGlvbi4KICAgICBHTHNp
emVpIG5hbWVMZW5ndGggPSAwOwogICAgIEdMaW50IHNpemUgPSAwOwogICAgIEdMZW51bSB0eXBl
ID0gMDsKQEAgLTExNTUsNyArMTE1NCw3IEBAIFN0cmluZyBHcmFwaGljc0NvbnRleHQzRDo6Z2V0
UHJvZ3JhbUluZm8KICAgICAgICAgcmV0dXJuIFN0cmluZygpOyAKIAogICAgIEdMc2l6ZWkgc2l6
ZSA9IDA7Ci0gICAgT3duQXJyYXlQdHI8R0xjaGFyPiBpbmZvID0gYWRvcHRBcnJheVB0cihuZXcg
R0xjaGFyW2xlbmd0aF0pOworICAgIGF1dG8gaW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8R0xjaGFy
W10+KGxlbmd0aCk7CiAgICAgOjpnbEdldFByb2dyYW1JbmZvTG9nKHByb2dyYW0sIGxlbmd0aCwg
JnNpemUsIGluZm8uZ2V0KCkpOwogCiAgICAgcmV0dXJuIFN0cmluZyhpbmZvLmdldCgpKTsKQEAg
LTEyMjIsNyArMTIyMSw3IEBAIFN0cmluZyBHcmFwaGljc0NvbnRleHQzRDo6Z2V0U2hhZGVySW5m
b0wKICAgICAgICAgcmV0dXJuIFN0cmluZygpOyAKIAogICAgIEdMc2l6ZWkgc2l6ZSA9IDA7Ci0g
ICAgT3duQXJyYXlQdHI8R0xjaGFyPiBpbmZvID0gYWRvcHRBcnJheVB0cihuZXcgR0xjaGFyW2xl
bmd0aF0pOworICAgIGF1dG8gaW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8R0xjaGFyW10+KGxlbmd0
aCk7CiAgICAgOjpnbEdldFNoYWRlckluZm9Mb2coc2hhZGVyLCBsZW5ndGgsICZzaXplLCBpbmZv
LmdldCgpKTsKIAogICAgIHJldHVybiBTdHJpbmcoaW5mby5nZXQoKSk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVNhbml0aXplci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUv
T3BlblR5cGVTYW5pdGl6ZXIuY3BwCShyZXZpc2lvbiAxNTU5OTkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVNhbml0aXplci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM1LDcgKzM1LDYgQEAKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNp
bmNsdWRlICJvcGVudHlwZS1zYW5pdGlzZXIuaCIKICNpbmNsdWRlICJvdHMtbWVtb3J5LXN0cmVh
bS5oIgotI2luY2x1ZGUgPHd0Zi9Pd25BcnJheVB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyR0wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwCShyZXZpc2lvbiAxNTU5OTkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNiBAQAogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJT
aGFkZXJQcm9ncmFtLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1h
cC5oPgotI2luY2x1ZGUgPHd0Zi9Pd25BcnJheVB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVm
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVGVtcG9y
YXJ5Q2hhbmdlLmg+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5j
ZS9TaGFyZWRCaXRtYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbmNlL1NoYXJlZEJpdG1hcC5jcHAJKHJldmlzaW9uIDE1NTk5OSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL1NoYXJlZEJpdG1hcC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI3LDggKzI3LDkgQEAKICNpbmNsdWRlICJUcmFuc2Zvcm1hdGlvbk1h
dHJpeC5oIgogI2luY2x1ZGUgIldpbkNFR3JhcGhpY3NFeHRyYXMuaCIKICNpbmNsdWRlIDx3dGYv
SGFzaFNldC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkTGVha0NvdW50ZXIuaD4KICNpbmNs
dWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRMZWFrQ291bnRlci5o
PgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogI2luY2x1ZGUgPHdpbmRvd3MuaD4K
IApAQCAtNzQsNyArNzUsNyBAQCBTaGFyZWRCaXRtYXA6OlNoYXJlZEJpdG1hcChjb25zdCBJbnRT
aXplCiAgICAgaWYgKGJpdENvdW50ID09IEJpdG1hcEluZm86OkJpdENvdW50MTYpCiAgICAgICAg
IGJ1ZmZlclNpemUgLz0gMjsKIAotICAgIG1fcGl4ZWxEYXRhID0gYWRvcHRBcnJheVB0cihuZXcg
dW5zaWduZWRbYnVmZmVyU2l6ZV0pOworICAgIG1fcGl4ZWxEYXRhID0gc3RkOjptYWtlX3VuaXF1
ZTx1bnNpZ25lZFtdPihidWZmZXJTaXplKTsKICAgICBtX3BpeGVscyA9IG1fcGl4ZWxEYXRhLmdl
dCgpOwogCiAgICAgaWYgKGluaXRQaXhlbHMpCkBAIC0xMzMsNyArMTM0LDcgQEAgYm9vbCBTaGFy
ZWRCaXRtYXA6OnRvMTZiaXQoKQogICAgIGludCB3aWR0aCA9IG5ld0JtcEluZm8ud2lkdGgoKTsK
ICAgICBpbnQgcGFkZGVkV2lkdGggPSBuZXdCbXBJbmZvLnBhZGRlZFdpZHRoKCk7CiAgICAgaW50
IGJ1ZmZlclNpemUgPSBwYWRkZWRXaWR0aCAqIG5ld0JtcEluZm8uaGVpZ2h0KCk7Ci0gICAgT3du
QXJyYXlQdHI8dW5zaWduZWQ+IG5ld1BpeGVsRGF0YSA9IGFkb3B0QXJyYXlQdHIobmV3IHVuc2ln
bmVkW2J1ZmZlclNpemUgLyAyXSk7CisgICAgYXV0byBuZXdQaXhlbERhdGEgPSBzdGQ6Om1ha2Vf
dW5pcXVlPHVuc2lnbmVkW10+KGJ1ZmZlclNpemUgLyAyKTsKICAgICB2b2lkKiBuZXdQaXhlbHMg
PSBuZXdQaXhlbERhdGEuZ2V0KCk7CiAKICAgICBpZiAoIW5ld1BpeGVscykKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL1NoYXJlZEJpdG1hcC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL1NoYXJlZEJpdG1h
cC5oCShyZXZpc2lvbiAxNTU5OTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW5jZS9TaGFyZWRCaXRtYXAuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsOSArMjUsOSBAQAog
I2luY2x1ZGUgIkJpdG1hcEluZm8uaCIKICNpbmNsdWRlICJDb2xvclNwYWNlLmgiCiAjaW5jbHVk
ZSAiR3JhcGhpY3NUeXBlcy5oIgorI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvUGFz
c093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL093
bkFycmF5UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CiAjaW5jbHVkZSA8d2luZ2RpLmg+CkBAIC0xMzIsNyArMTMyLDcgQEAgcHJpdmF0
ZToKICAgICBCaXRtYXBJbmZvIG1fYm1wSW5mbzsKICAgICBPd25QdHI8SEJJVE1BUD4gbV9oYml0
bWFwOwogICAgIHZvaWQqIG1fcGl4ZWxzOwotICAgIE93bkFycmF5UHRyPHVuc2lnbmVkPiBtX3Bp
eGVsRGF0YTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8dW5zaWduZWRbXT4gbV9waXhlbERhdGE7CiAg
ICAgQ09MT1JSRUYgbV90cmFuc3BhcmVudENvbG9yOwogICAgIGludCBtX3ZhbGlkSGVpZ2h0Owog
ICAgIGJvb2wgbV9sb2NrZWQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9ibGFja2JlcnJ5L0pQRUdJbWFnZURlY29kZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JsYWNrYmVycnkvSlBFR0ltYWdl
RGVjb2Rlci5jcHAJKHJldmlzaW9uIDE1NTk5OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2JsYWNrYmVycnkvSlBFR0ltYWdlRGVjb2Rlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI2LDggKzI2LDggQEAKICNpbmNsdWRlIDxlcnJuby5oPgogI2luY2x1ZGUgPGlt
Zy9pbWcuaD4KICNpbmNsdWRlIDxzdHJpbmcuaD4KLSNpbmNsdWRlIDx3dGYvT3duQXJyYXlQdHIu
aD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRy
YXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xMzUsNyArMTM1LDcgQEAgaW50IElt
YWdlUmVhZGVyOjpkZWNvZGUoc2l6ZV90IHdpZHRoLCBzaQogICAgIGNvbnN0IGludCBDb2xvckNv
bXBvbmVudHMgPSAzOwogICAgIC8vIFVzZSBhIG11bHRpcGxlIG9mIDIgYnl0ZXMgdG8gaW1wcm92
ZSBwZXJmb3JtYW5jZQogICAgIGludCBzdHJpZGUgPSAoQ29sb3JDb21wb25lbnRzICogd2lkdGgg
KyAzKSAmIH4zOwotICAgIE93bkFycmF5UHRyPF91aW50OD4gYnVmZmVyID0gYWRvcHRBcnJheVB0
cihuZXcgX3VpbnQ4W3N0cmlkZSAqIGhlaWdodF0pOworICAgIGF1dG8gYnVmZmVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxfdWludDhbXT4oc3RyaWRlICogaGVpZ2h0KTsKICAgICBpZiAoIWJ1ZmZlcikK
ICAgICAgICAgcmV0dXJuIC0xOwogICAgIGltZy5hY2Nlc3MuZGlyZWN0LmRhdGEgPSBidWZmZXIu
Z2V0KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcv
UE5HSW1hZ2VEZWNvZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcAkocmV2aXNpb24gMTU1OTk5
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdl
RGVjb2Rlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDggKzQyLDggQEAKIAogI2luY2x1ZGUg
IkNvbG9yLmgiCiAjaW5jbHVkZSAicG5nLmgiCi0jaW5jbHVkZSA8d3RmL093bkFycmF5UHRyLmg+
CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFz
Lmg+CiAKICNpZiBVU0UoUUNNU0xJQikKICNpbmNsdWRlICJxY21zLmgiCkBAIC0xNzksNyArMTc5
LDcgQEAgcHVibGljOgogICAgIHZvaWQgY3JlYXRlSW50ZXJsYWNlQnVmZmVyKGludCBzaXplKSB7
IG1faW50ZXJsYWNlQnVmZmVyID0gbmV3IHBuZ19ieXRlW3NpemVdOyB9CiAjaWYgVVNFKFFDTVNM
SUIpCiAgICAgcG5nX2J5dGVwIHJvd0J1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fcm93QnVmZmVy
LmdldCgpOyB9Ci0gICAgdm9pZCBjcmVhdGVSb3dCdWZmZXIoaW50IHNpemUpIHsgbV9yb3dCdWZm
ZXIgPSBhZG9wdEFycmF5UHRyKG5ldyBwbmdfYnl0ZVtzaXplXSk7IH0KKyAgICB2b2lkIGNyZWF0
ZVJvd0J1ZmZlcihpbnQgc2l6ZSkgeyBtX3Jvd0J1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8cG5n
X2J5dGVbXT4oc2l6ZSk7IH0KICAgICBxY21zX3RyYW5zZm9ybSogY29sb3JUcmFuc2Zvcm0oKSBj
b25zdCB7IHJldHVybiBtX3RyYW5zZm9ybTsgfQogCiAgICAgdm9pZCBjcmVhdGVDb2xvclRyYW5z
Zm9ybShjb25zdCBDb2xvclByb2ZpbGUmIGNvbG9yUHJvZmlsZSwgYm9vbCBoYXNBbHBoYSkKQEAg
LTIxNSw3ICsyMTUsNyBAQCBwcml2YXRlOgogICAgIHBuZ19ieXRlcCBtX2ludGVybGFjZUJ1ZmZl
cjsKICNpZiBVU0UoUUNNU0xJQikKICAgICBxY21zX3RyYW5zZm9ybSogbV90cmFuc2Zvcm07Ci0g
ICAgT3duQXJyYXlQdHI8cG5nX2J5dGU+IG1fcm93QnVmZmVyOworICAgIHN0ZDo6dW5pcXVlX3B0
cjxwbmdfYnl0ZVtdPiBtX3Jvd0J1ZmZlcjsKICNlbmRpZgogfTsKIApJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL0NvbnRleHRNZW51V2luLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ29udGV4dE1lbnVXaW4uY3BwCShyZXZpc2lvbiAxNTU5
OTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ29udGV4dE1lbnVXaW4uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBACiAjaW5jbHVkZSAiTm9kZS5oIgogI2luY2x1
ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSA8d2luZG93cy5oPgotI2luY2x1ZGUgPHd0
Zi9Pd25BcnJheVB0ci5oPgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCkBAIC03Myw3
ICs3Myw3IEBAIHZvaWQgQ29udGV4dE1lbnU6OmdldENvbnRleHRNZW51SXRlbXMoSE0KICAgICAg
ICAgfQogCiAgICAgICAgIGludCBtZW51U3RyaW5nTGVuZ3RoID0gaW5mby5jY2ggKyAxOwotICAg
ICAgICBPd25BcnJheVB0cjxXQ0hBUj4gbWVudVN0cmluZyA9IGFkb3B0QXJyYXlQdHIobmV3IFdD
SEFSW21lbnVTdHJpbmdMZW5ndGhdKTsKKyAgICAgICAgYXV0byBtZW51U3RyaW5nID0gc3RkOjpt
YWtlX3VuaXF1ZTxXQ0hBUltdPihtZW51U3RyaW5nTGVuZ3RoKTsKICAgICAgICAgaW5mby5kd1R5
cGVEYXRhID0gbWVudVN0cmluZy5nZXQoKTsKICAgICAgICAgaW5mby5jY2ggPSBtZW51U3RyaW5n
TGVuZ3RoOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTG9nZ2luZ1dpbi5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0xvZ2dpbmdXaW4u
Y3BwCShyZXZpc2lvbiAxNTU5OTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTG9n
Z2luZ1dpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAKICNpZiAhTE9HX0RJ
U0FCTEVECiAKICNpbmNsdWRlIDx3aW5kb3dzLmg+Ci0jaW5jbHVkZSA8d3RmL093bkFycmF5UHRy
Lmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00Miw3ICs0Miw3IEBAIFN0cmlu
ZyBsb2dMZXZlbFN0cmluZygpCiAgICAgaWYgKCFsZW5ndGgpCiAgICAgICAgIHJldHVybiBlbXB0
eVN0cmluZygpOwogCi0gICAgT3duQXJyYXlQdHI8Y2hhcj4gYnVmZmVyID0gYWRvcHRBcnJheVB0
cihuZXcgY2hhcltsZW5ndGhdKTsKKyAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8
Y2hhcltdPihsZW5ndGgpOwogCiAgICAgaWYgKCFHZXRFbnZpcm9ubWVudFZhcmlhYmxlQShsb2dn
aW5nRW52aXJvbm1lbnRWYXJpYWJsZSwgYnVmZmVyLmdldCgpLCBsZW5ndGgpKQogICAgICAgICBy
ZXR1cm4gZW1wdHlTdHJpbmcoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2lu
UGFja2FnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5Q
YWNrYWdlLmNwcAkocmV2aXNpb24gMTU1OTk5KQorKysgU291cmNlL1dlYkNvcmUvcGx1Z2lucy9Q
bHVnaW5QYWNrYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNiBAQAogI2luY2x1
ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSAibnBydW50aW1lX2ltcGwuaCIKICNpbmNsdWRlIDxzdHJp
bmcuaD4KLSNpbmNsdWRlIDx3dGYvT3duQXJyYXlQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9D
U3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
dWdpbnMvYmxhY2tiZXJyeS9QbHVnaW5WaWV3QmxhY2tCZXJyeS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGx1Z2lucy9ibGFja2JlcnJ5L1BsdWdpblZpZXdCbGFja0JlcnJ5LmNw
cAkocmV2aXNpb24gMTU1OTk5KQorKysgU291cmNlL1dlYkNvcmUvcGx1Z2lucy9ibGFja2JlcnJ5
L1BsdWdpblZpZXdCbGFja0JlcnJ5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzAsNiArNzAsNyBA
QAogI2luY2x1ZGUgPHJ1bnRpbWUvSlNMb2NrLmg+CiAjaW5jbHVkZSA8c3lzL2tleWNvZGVzLmg+
CiAjaW5jbHVkZSA8dmVjdG9yPgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogY29u
c3QgdW5zaWduZWQgVW5pbml0aWFsaXplZENvb3JkaW5hdGUgPSAweGZmZmZmZmZmOwogCkBAIC0z
NjgsOSArMzY5LDkgQEAgdm9pZCBQbHVnaW5WaWV3OjpoYW5kbGVUb3VjaEV2ZW50KFRvdWNoRQog
ICAgIG5wVG91Y2hFdmVudC5wb2ludHMgPSAwOwogICAgIG5wVG91Y2hFdmVudC5zaXplID0gdG91
Y2hMaXN0LT5sZW5ndGgoKTsKIAotICAgIE93bkFycmF5UHRyPE5QVG91Y2hQb2ludD4gdG91Y2hQ
b2ludHM7CisgICAgc3RkOjp1bmlxdWVfcHRyPE5QVG91Y2hQb2ludFtdPiB0b3VjaFBvaW50czsK
ICAgICBpZiAodG91Y2hMaXN0LT5sZW5ndGgoKSkgewotICAgICAgICB0b3VjaFBvaW50cyA9IGFk
b3B0QXJyYXlQdHIobmV3IE5QVG91Y2hQb2ludFt0b3VjaExpc3QtPmxlbmd0aCgpXSk7CisgICAg
ICAgIHRvdWNoUG9pbnRzID0gc3RkOjptYWtlX3VuaXF1ZTxOUFRvdWNoUG9pbnRbXT4odG91Y2hM
aXN0LT5sZW5ndGgoKSk7CiAgICAgICAgIG5wVG91Y2hFdmVudC5wb2ludHMgPSB0b3VjaFBvaW50
cy5nZXQoKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRvdWNoTGlzdC0+bGVu
Z3RoKCk7IGkrKykgewogICAgICAgICAgICAgVG91Y2gqIHRvdWNoSXRlbSA9IHRvdWNoTGlzdC0+
aXRlbShpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsdWdpbnMvd2luL1BsdWdpblBhY2thZ2VX
aW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsdWdpbnMvd2luL1BsdWdpblBh
Y2thZ2VXaW4uY3BwCShyZXZpc2lvbiAxNTU5OTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbHVnaW5z
L3dpbi9QbHVnaW5QYWNrYWdlV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBA
QAogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSAibnBydW50aW1lX2ltcGwuaCIKICNpbmNs
dWRlIDxzdHJpbmcuaD4KLSNpbmNsdWRlIDx3dGYvT3duQXJyYXlQdHIuaD4KKyNpbmNsdWRlIDx3
dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1
ZGUgPHNobHdhcGkuaD4KIApAQCAtMTcxLDcgKzE3MSw3IEBAIGJvb2wgUGx1Z2luUGFja2FnZTo6
ZmV0Y2hJbmZvKCkKICAgICBpZiAodmVyc2lvbkluZm9TaXplID09IDApCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIE93bkFycmF5UHRyPGNoYXI+IHZlcnNpb25JbmZvRGF0YSA9IGFkb3B0
QXJyYXlQdHIobmV3IGNoYXJbdmVyc2lvbkluZm9TaXplXSk7CisgICAgYXV0byB2ZXJzaW9uSW5m
b0RhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4odmVyc2lvbkluZm9TaXplKTsKIAogICAg
IGlmICghR2V0RmlsZVZlcnNpb25JbmZvVyhjb25zdF9jYXN0PFVDaGFyKj4obV9wYXRoLmNoYXJh
Y3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpKSwKICAgICAgICAgICAgIDAsIHZlcnNp
b25JbmZvU2l6ZSwgdmVyc2lvbkluZm9EYXRhLmdldCgpKSkK
</data>
<flag name="review"
          id="234101"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>